07070100000000000081A40000000000000000000000016712993F000000F4000000000000000000000000000000000000001F00000000gnome-shell-47.1/.editorconfigroot = true [*] charset = utf-8 end_of_line = lf indent_style = space trim_trailing_whitespace = true [*.js] indent_size = 4 [*.[ch]] indent_size = 2 [*.gresource.xml] indent_size = 2 [*.ui] indent_size = 2 [meson.build] indent_size = 2 07070100000001000081A40000000000000000000000016712993F00000067000000000000000000000000000000000000001F00000000gnome-shell-47.1/.eslintrc.ymlextends: - ./lint/eslintrc-gjs.yml - ./lint/eslintrc-shell.yml parserOptions: sourceType: module 07070100000002000081A40000000000000000000000016712993F00000089000000000000000000000000000000000000001C00000000gnome-shell-47.1/.gitignoredata/.osk-layout-workbench po/gnome-shell.pot subprojects/gvc subprojects/jasmine-gjs *~ *.patch *.sw? .buildconfig .eslintcache .vscode 07070100000003000041ED0000000000000000000000026712993F00000000000000000000000000000000000000000000001900000000gnome-shell-47.1/.gitlab07070100000004000041ED0000000000000000000000026712993F00000000000000000000000000000000000000000000001C00000000gnome-shell-47.1/.gitlab-ci07070100000005000081A40000000000000000000000016712993F0000243D000000000000000000000000000000000000002000000000gnome-shell-47.1/.gitlab-ci.ymlinclude: - project: 'GNOME/citemplates' file: 'flatpak/flatpak_ci_initiative.yml' - remote: 'https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/057b052e682d8e5a20c1eb2dd60d5b87d2b56856/templates/fedora.yml' - remote: 'https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/bc70242ffb8402243e934659ecc1a2d1c89eca2b/templates/ci-fairy.yml' - project: 'Infrastructure/openshift-images/gnome-release-service' file: '/ci-templates/release-module.yml' - component: gitlab.gnome.org/GNOME/citemplates/gnomeos-build-sysext@1.0.0-alpha.1 inputs: meson-options: -Dextensions_app=false -Dextensions-tool:bash_completion=disabled build-sysext: tags: - x86_64_v3 before_script: - .gitlab-ci/install-gnomeos-sysext-dependencies.sh $CI_PROJECT_DIR/extension stages: - pre_review - prep - review - build - test - analyze - docs - deploy default: image: $MUTTER_CI_IMAGE # Cancel jobs if newer commits are pushed to the branch interruptible: true # Auto-retry jobs in case of infra failures retry: max: 1 when: - 'runner_system_failure' - 'stuck_or_timeout_failure' - 'scheduler_failure' - 'api_failure' variables: MUTTER_CI_IMAGE: registry.gitlab.gnome.org/gnome/mutter/fedora/41:x86_64-2024-09-20.2 FDO_UPSTREAM_REPO: GNOME/gnome-shell BUNDLE: "extensions-git.flatpak" LINT_LOG: "eslint-report.xml" LINT_MR_LOG: "eslint-mr-report.xml" workflow: rules: - if: '$CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS && $CI_PIPELINE_SOURCE == "push"' when: never - if: '$CI_MERGE_REQUEST_IID' - if: '$CI_COMMIT_TAG' - if: '$CI_COMMIT_BRANCH' .pipeline-guard: rules: - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' - if: '$CI_COMMIT_TAG' - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' - if: '$CI_COMMIT_BRANCH =~ /^gnome-[0-9-]+$/' - when: 'manual' .gnome-shell.fedora: variables: FDO_DISTRIBUTION_VERSION: 40 FDO_DISTRIBUTION_TAG: '2024-07-11.0' FDO_DISTRIBUTION_PACKAGES: gjs nodejs npm meson git 'pkgconfig(gobject-introspection-1.0)' 'pkgconfig(gio-2.0)' 'pkgconfig(gio-unix-2.0)' 'pkgconfig(gnome-autoar-0)' 'pkgconfig(json-glib-1.0)' FDO_DISTRIBUTION_EXEC: | # For static analysis with eslint npm install -g eslint@^8.0.0 eslint-plugin-jsdoc@^46.0.0 && ./.gitlab-ci/install-meson-project.sh \ https://gitlab.gnome.org/World/javascript/gjs-ci-tools.git \ main && ./.gitlab-ci/install-meson-project.sh \ --subdir subprojects/extensions-tool/ \ --prepare ./generate-translations.sh \ -Dman=false \ https://gitlab.gnome.org/GNOME/gnome-shell.git \ main check_commit_log: extends: - .fdo.ci-fairy stage: pre_review variables: GIT_DEPTH: "100" script: - if [[ x"$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" != "x" ]] ; then ci-fairy check-commits --junit-xml=commit-message-junit-report.xml ; else echo "Not a merge request" ; fi rules: - !reference [.pipeline-guard, rules] artifacts: expire_in: 1 week paths: - commit-message-junit-report.xml reports: junit: commit-message-junit-report.xml check-merge-request: extends: - .fdo.ci-fairy stage: pre_review script: - if [[ x"$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" != "x" ]] ; then ci-fairy check-merge-request --require-allow-collaboration --junit-xml=check-merge-request-report.xml ; else echo "Not a merge request" ; fi rules: - !reference [.pipeline-guard, rules] artifacts: expire_in: 1 week paths: - check-merge-request-report.xml reports: junit: check-merge-request-report.xml build-fedora-container: extends: - .fdo.container-build@fedora@x86_64 - .gnome-shell.fedora stage: prep js_check: extends: - .fdo.distribution-image@fedora - .gnome-shell.fedora stage: review script: - gjs-check-syntax artifacts: reports: junit: gjs-check-syntax.junit.xml eslint: extends: - .fdo.distribution-image@fedora - .gnome-shell.fedora stage: review script: - export NODE_PATH=$(npm root -g) - ./.gitlab-ci/run-eslint --output-file ${LINT_LOG} --format junit --stdout artifacts: reports: junit: ${LINT_LOG} when: always eslint-doc: extends: - .fdo.distribution-image@fedora - .gnome-shell.fedora stage: review script: - export NODE_PATH=$(npm root -g) - ./.gitlab-ci/eslint-coding-style.sh rules: - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' changes: - HACKING.md - .eslintrc.yml - lint/* potfile_c_check: extends: - .fdo.distribution-image@fedora - .gnome-shell.fedora stage: review script: - ./.gitlab-ci/check-potfiles.sh potfile_js_check: extends: - .fdo.distribution-image@fedora - .gnome-shell.fedora stage: review script: - gjs-check-potfiles artifacts: reports: junit: gjs-check-potfiles.junit.xml build: stage: build needs: ["check_commit_log"] before_script: - .gitlab-ci/checkout-mutter.sh - meson mutter mutter/build --prefix=/usr - sudo meson install -C mutter/build script: - meson setup . build -Dbuildtype=debugoptimized -Dman=false -Dgtk_doc=true --werror --fatal-meson-warnings - meson compile -C build - sudo meson install -C build artifacts: expire_in: 1 day paths: - mutter - build - subprojects/gvc - subprojects/jasmine-gjs test: stage: test needs: ["build"] variables: XDG_RUNTIME_DIR: "$CI_PROJECT_DIR/runtime-dir" NO_AT_BRIDGE: "1" before_script: - sudo meson install -C mutter/build - mkdir -m 700 $XDG_RUNTIME_DIR - mkdir -m 1777 /tmp/.X11-unix script: - dbus-run-session -- meson test -C build --no-rebuild --timeout-multiplier 5 artifacts: expire_in: 1 day paths: - build/meson-logs/testlog.txt reports: junit: build/meson-logs/testlog.junit.xml when: on_failure test-coverity: rules: - if: '$CI_PIPELINE_SOURCE == "schedule" && $GNOME_SHELL_SCHEDULED_JOB == "coverity"' when: always - when: manual needs: ["build"] stage: analyze allow_failure: true before_script: - sudo meson install -C mutter/build script: - .gitlab-ci/download-coverity-tarball.sh - CC=clang meson coverity-build -Dman=false - ./coverity/cov-analysis-linux64-*/bin/cov-build --fs-capture-search js --dir cov-int meson compile -C coverity-build - tar czf cov-int.tar.gz cov-int - curl https://scan.coverity.com/builds?project=GNOME+Shell --form token=$COVERITY_TOKEN --form email=carlosg@gnome.org --form file=@cov-int.tar.gz --form version="`git describe --tags`" --form description="GitLab CI build" cache: key: coverity-tarball paths: - coverity flatpak: stage: build needs: ["check_commit_log"] variables: SUBPROJECT: "subprojects/extensions-app" # Your manifest path MANIFEST_PATH: "$SUBPROJECT/build-aux/flatpak/org.gnome.Extensions.json" RUNTIME_REPO: "https://nightly.gnome.org/gnome-nightly.flatpakrepo" FLATPAK_MODULE: "gnome-extensions-app" APP_ID: "org.gnome.Extensions.Devel" extends: .flatpak nightly: extends: '.publish_nightly' needs: - flatpak distinfo: stage: deploy needs: - build script: - .gitlab-ci/export-artifact-path build > dist.env artifacts: reports: dotenv: dist.env paths: - dist.env rules: - if: '$CI_COMMIT_TAG' dist: variables: XDG_RUNTIME_DIR: "$CI_PROJECT_DIR/runtime-dir" NO_AT_BRIDGE: "1" stage: deploy needs: ["build"] before_script: - sudo meson install -C mutter/build - mkdir -m 700 $XDG_RUNTIME_DIR - mkdir -m 1777 /tmp/.X11-unix script: - dbus-run-session meson dist -C build --include-subprojects rules: - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' changes: - "**/meson.build" - meson/* dist-tarball: extends: dist needs: - build - distinfo artifacts: expose_as: 'Get tarball here' paths: - $TARBALL_ARTIFACT_PATH reports: dotenv: dist.env rules: - if: '$CI_COMMIT_TAG' release-module: stage: deploy needs: - dist-tarball extends: .release-module rules: - if: '$CI_COMMIT_TAG' reference: stage: docs needs: ["build"] script: - mkdir -p reference/ - mv build/docs/reference/{shell/shell,st/st} reference/ artifacts: paths: - reference pages: stage: deploy needs: ['reference'] script: - mv reference/ public/ artifacts: paths: - public rules: - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PROJECT_NAMESPACE == "GNOME"' build-toolbox: image: quay.io/freedesktop.org/ci-templates:container-build-base-2021-07-29.0 stage: deploy needs: [] script: - .gitlab-ci/build-toolbox-image.sh $MUTTER_CI_IMAGE rules: - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PROJECT_NAMESPACE == "GNOME"' - if: '$CI_COMMIT_BRANCH =~ /^gnome-[0-9-]+$/ && $CI_PROJECT_NAMESPACE == "GNOME"' 07070100000006000081ED0000000000000000000000016712993F00000B28000000000000000000000000000000000000003300000000gnome-shell-47.1/.gitlab-ci/build-toolbox-image.sh#!/bin/bash # vi: sw=2 ts=4 set -e die() { echo "$@" >&2 exit 1 } check_image_base() { local base=$( skopeo inspect docker://$TOOLBOX_IMAGE 2>/dev/null | jq -r '.Labels["org.opencontainers.image.base.name"]') [[ "$base" == "$MUTTER_CI_IMAGE" ]] } build_container() { echo Building $TOOLBOX_IMAGE from $MUTTER_CI_IMAGE export BUILDAH_ISOLATION=chroot export BUILDAH_FORMAT=docker local build_cntr=$(buildah from $MUTTER_CI_IMAGE) local build_mnt=$(buildah mount $build_cntr) [[ -n "$build_mnt" && -n "$build_cntr" ]] || die "Failed to mount the container" local extra_packages=( passwd # needed by toolbox gdb gnome-console # can't do without *some* terminal flatpak-spawn # run host commands flatpak # for host apps abattis-cantarell-fonts # system font gnome-backgrounds # no blank background! ) local debug_packages=( glib2 # makes gdb much more useful ) buildah run $build_cntr dnf config-manager setopt '*-openh264.enabled=0' buildah run $build_cntr dnf install -y "${extra_packages[@]}" buildah run $build_cntr dnf debuginfo-install -y "${debug_packages[@]}" buildah run $build_cntr dnf clean all buildah run $build_cntr rm -rf /var/lib/cache/dnf # disable gnome-keyring activation: # it either asks for unlocking the login keyring on startup, or it detects # the running host daemon and doesn't export the object on the bus, which # blocks the activating service until it hits the timeout buildah run $build_cntr rm /usr/share/dbus-1/services/org.freedesktop.secrets.service local srcdir=$(realpath $(dirname $0)) buildah copy --chmod 755 $build_cntr $srcdir/install-meson-project.sh /usr/libexec # include convenience script for updating mutter dependency local update_mutter=$(mktemp) cat > $update_mutter <<-EOF #!/bin/sh /usr/libexec/install-meson-project.sh https://gitlab.gnome.org/GNOME/mutter.git $MUTTER_BRANCH EOF buildah copy --chmod 755 $build_cntr $update_mutter /usr/bin/update-mutter buildah config --env HOME- \ --label com.github.containers.toolbox=true \ --label org.opencontainers.image.base.name=$MUTTER_CI_IMAGE \ $build_cntr buildah commit $build_cntr $TOOLBOX_IMAGE } MUTTER_CI_IMAGE=$1 MUTTER_BRANCH=${2:-$CI_COMMIT_BRANCH} TOOLBOX_IMAGE=$CI_REGISTRY_IMAGE/toolbox:${MUTTER_BRANCH#gnome-} [[ -n "$MUTTER_CI_IMAGE" && -n "$MUTTER_BRANCH" ]] || die "Usage: $(basename $0) MUTTER_CI_IMAGE [MUTTER_BRANCH]" if [[ -z "$FORCE_REBUILD" ]]; then if check_image_base; then echo Image $TOOLBOX_IMAGE exists and is up to date. exit 0 fi fi [[ -n "$CI_REGISTRY" && -n "$CI_REGISTRY_USER" && -n "$CI_REGISTRY_PASSWORD" ]] || die "Insufficient information to log in." podman login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY build_container podman push $TOOLBOX_IMAGE 07070100000007000081ED0000000000000000000000016712993F000003B3000000000000000000000000000000000000002E00000000gnome-shell-47.1/.gitlab-ci/check-potfiles.sh#!/usr/bin/env bash srcdirs="src subprojects/extensions-tool" uidirs="js subprojects/extensions-app" desktopdirs="data subprojects/extensions-app/ subprojects/extensions-tool" # find source files that contain gettext keywords files=$(grep -lR --include='*.c' '\(gettext\|[^I_)]_\)(' $srcdirs) # find ui files that contain translatable string files="$files "$(grep -lRi --include='*.ui' 'translatable="[ty1]' $uidirs) # find .desktop files files="$files "$(find $desktopdirs -name '*.desktop*') # filter out excluded files if [ -f po/POTFILES.skip ]; then files=$(for f in $files; do ! grep -q ^$f po/POTFILES.skip && echo $f; done) fi # find those that aren't listed in POTFILES.in missing=$(for f in $files; do ! grep -q ^$f po/POTFILES.in && echo $f; done) if [ ${#missing} -eq 0 ]; then exit 0 fi cat >&2 <&2 done echo >&2 exit 1 07070100000008000081ED0000000000000000000000016712993F00000650000000000000000000000000000000000000002F00000000gnome-shell-47.1/.gitlab-ci/checkout-mutter.sh#!/usr/bin/bash fetch() { local remote=$1 local ref=$2 git fetch --quiet --depth=1 $remote $ref 2>/dev/null } mutter_target= echo -n Cloning into mutter ... if git clone --quiet --depth=1 https://gitlab.gnome.org/GNOME/mutter.git; then echo \ done else echo \ failed exit 1 fi cd mutter if [ "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" ]; then merge_request_remote=${CI_MERGE_REQUEST_SOURCE_PROJECT_URL//gnome-shell/mutter} merge_request_branch=$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME echo -n Looking for $merge_request_branch on remote ... if fetch $merge_request_remote $merge_request_branch; then echo \ found mutter_target=FETCH_HEAD else echo \ not found echo -n Looking for $CI_MERGE_REQUEST_TARGET_BRANCH_NAME instead ... if fetch origin $CI_MERGE_REQUEST_TARGET_BRANCH_NAME; then echo \ found mutter_target=FETCH_HEAD else echo \ not found fi fi fi if [ -z "$mutter_target" ]; then ref_remote=${CI_PROJECT_URL//gnome-shell/mutter} echo -n Looking for $CI_COMMIT_REF_NAME on remote ... if fetch $ref_remote $CI_COMMIT_REF_NAME; then echo \ found mutter_target=FETCH_HEAD else echo \ not found fi fi fallback_branch=${CI_COMMIT_TAG:+gnome-}${CI_COMMIT_TAG%%.*} if [ -z "$mutter_target" -a "$fallback_branch" ]; then echo -n Looking for $fallback_branch instead ... if fetch origin $fallback_branch; then echo \ found mutter_target=FETCH_HEAD else echo \ not found fi fi if [ -z "$mutter_target" ]; then mutter_target=HEAD echo Using $mutter_target instead fi git checkout -q $mutter_target 07070100000009000081A40000000000000000000000016712993F00000329000000000000000000000000000000000000002D00000000gnome-shell-47.1/.gitlab-ci/commit-rules.ymlpatterns: deny: - regex: '^(st-|St)' message: Commit message subject should not be prefixed with 'st-' or 'St', use 'st/' instead where: subject - regex: '^[^:]+: [a-z]' message: "Commit message subject should be properly Capitalized. E.g. 'window: Marginalize extradicity'" where: subject - regex: '^\S*\.(js|c|h):' message: Commit message subject prefix should not include .c, .h etc. where: subject - regex: '([^.]\.|[:,;])\s*$' message: Commit message subject should not end with punctuation where: subject - regex: '^[Cc]lose[sd]?:?\s*#[0-9]+' message: Closes instructions must be a full link - regex: '^[Ff]ix(e[sd]?)?:?\s*(#[0-9]+|https://)' message: \"Fixes\" should be used with commits, use \"Closes\" for issues 0707010000000A000081ED0000000000000000000000016712993F0000037D000000000000000000000000000000000000003900000000gnome-shell-47.1/.gitlab-ci/download-coverity-tarball.sh#!/usr/bin/bash # We need a coverity token to fetch the tarball if [ -x $COVERITY_TOKEN ] then echo "No coverity token. Run this job from a protected branch." exit -1 fi mkdir -p coverity # Download and check MD5 first curl https://scan.coverity.com/download/linux64 \ --data "token=$COVERITY_TOKEN&project=GNOME+Shell&md5=1" \ --output /tmp/coverity_tool.md5 diff /tmp/coverity_tool.md5 coverity/coverity_tool.md5 >/dev/null 2>&1 if [ $? -eq 0 -a -d coverity/cov-analysis* ] then echo "Coverity tarball is up-to-date" exit 0 fi # Download and extract coverity tarball curl https://scan.coverity.com/download/linux64 \ --data "token=$COVERITY_TOKEN&project=GNOME+Shell" \ --output /tmp/coverity_tool.tgz rm -rf ./coverity/cov-analysis* tar zxf /tmp/coverity_tool.tgz -C coverity/ if [ $? -eq 0 ] then mv /tmp/coverity_tool.md5 coverity/ fi rm /tmp/coverity_tool.tgz 0707010000000B000081ED0000000000000000000000016712993F00000392000000000000000000000000000000000000003300000000gnome-shell-47.1/.gitlab-ci/eslint-coding-style.sh#!/bin/bash SRCDIR=$(realpath $(dirname $0)/..) OUTDIR=$(mktemp --directory --tmpdir=$SRCDIR) trap "rm -rf $OUTDIR" EXIT # Turn ```javascript``` code snippets in the # style guide into .js files in $OUTDIR awk --assign dir=$OUTDIR -- ' BEGIN { do_print = 0; cur = 0; } # end of code snippet /```$/ { do_print = 0; cur++; } do_print { # remove one level of indent sub(" ","") # the following are class snippets, turn them # into functions to not confuse eslint sub("moveActor","function moveActor") sub("desaturateActor","function desaturateActor") # finally, append to the currently generated .js file print >> dir "/" cur ".js"; } # start of code snippet /```javascript$/ { do_print = 1; } ' docs/js-coding-style.md eslint \ --rule 'no-undef: off' \ --rule 'no-unused-vars: off' \ --rule 'no-invalid-this: off' $OUTDIR/*.js 0707010000000C000081ED0000000000000000000000016712993F000002B7000000000000000000000000000000000000003100000000gnome-shell-47.1/.gitlab-ci/export-artifact-path#!/usr/bin/gjs -m // SPDX-FileCopyrightText: 2024 Florian Müllner // // SPDX-License-Identifier: GPL-2.0-or-later import Gio from 'gi://Gio'; import {programArgs, programInvocationName, exit} from 'system'; const [buildDir] = programArgs; if (!buildDir) { printerr(`usage: ${programInvocationName} `); exit(1); } const subprocess = Gio.Subprocess.new( ['meson', 'introspect', '--projectinfo', buildDir], Gio.SubprocessFlags.STDOUT_PIPE); const [, out] = subprocess.communicate_utf8(null, null); const {descriptive_name, version} = JSON.parse(out); print(`TARBALL_ARTIFACT_PATH=${buildDir}/meson-dist/${descriptive_name}-${version}.tar.xz`); 0707010000000D000081ED0000000000000000000000016712993F000003D2000000000000000000000000000000000000004300000000gnome-shell-47.1/.gitlab-ci/install-gnomeos-sysext-dependencies.sh#!/bin/bash # # This script ensures that all dependencies required to build and run # a GNOME Shell system extension are present in: # # The building environment, by installing these dependencies to the container. # The running environment, by bundling these dependencies with the extension. # set -e # Install dependencies to $SYSEXT_DEST_DIR to bundle these with the extension. SYSEXT_DEST_DIR="$(realpath $1)" # Ensure that we're building against (and bundling) the right mutter branch # and its dependencies: SCRIPT_DIR="$(dirname $0)" $SCRIPT_DIR/checkout-mutter.sh ./mutter/.gitlab-ci/install-gnomeos-sysext-dependencies.sh $SYSEXT_DEST_DIR meson setup mutter/build mutter --prefix=/usr --libdir="lib/$(gcc -print-multiarch)" meson compile -C mutter/build meson install -C mutter/build --destdir $SYSEXT_DEST_DIR sudo meson install -C mutter/build # Ensure that any other dependency missing in GNOME OS is installed and bundled # here as it was done with mutter: 0707010000000E000081ED0000000000000000000000016712993F00000691000000000000000000000000000000000000003500000000gnome-shell-47.1/.gitlab-ci/install-meson-project.sh#!/bin/bash set -e usage() { cat <<-EOF Usage: $(basename $0) [OPTION…] REPO_URL COMMIT Check out and install a meson project Options: -Dkey=val Option to pass on to meson --subdir Build subdirectory instead of whole project --prepare Script to run before build --libdir Setup the project with a different libdir --destdir Install the project to an additional destdir -h, --help Display this help EOF } TEMP=$(getopt \ --name=$(basename $0) \ --options='D:h' \ --longoptions='subdir:' \ --longoptions='prepare:' \ --longoptions='libdir:' \ --longoptions='destdir:' \ --longoptions='help' \ -- "$@") eval set -- "$TEMP" unset TEMP MESON_OPTIONS=() SUBDIR=. PREPARE=: DESTDIR="" while true; do case "$1" in -D) MESON_OPTIONS+=( -D$2 ) shift 2 ;; --subdir) SUBDIR=$2 shift 2 ;; --prepare) PREPARE=$2 shift 2 ;; --libdir) MESON_OPTIONS+=( --libdir=$2 ) shift 2 ;; --destdir) DESTDIR=$2 shift 2 ;; -h|--help) usage exit 0 ;; --) shift break ;; esac done if [[ $# -lt 2 ]]; then usage exit 1 fi REPO_URL="$1" COMMIT="$2" CHECKOUT_DIR=$(mktemp --directory) trap "rm -rf $CHECKOUT_DIR" EXIT git clone --depth 1 "$REPO_URL" -b "$COMMIT" "$CHECKOUT_DIR" pushd "$CHECKOUT_DIR/$SUBDIR" sh -c "$PREPARE" meson setup --prefix=/usr _build "${MESON_OPTIONS[@]}" # Install it to an additional directory e.g., system extension directory if [ -n "${DESTDIR}" ]; then sudo meson install -C _build --destdir=$DESTDIR fi sudo meson install -C _build popd 0707010000000F000081ED0000000000000000000000016712993F00000610000000000000000000000000000000000000002700000000gnome-shell-47.1/.gitlab-ci/run-eslint#!/usr/bin/env node const {ESLint} = require('eslint'); console.log(`Running ESLint version ${ESLint.version}...`); const fs = require('fs'); const path = require('path'); function hasOption(...names) { return process.argv.some(arg => names.includes(arg)); } function getOption(...names) { const optIndex = process.argv.findIndex(arg => names.includes(arg)) + 1; if (optIndex === 0) return undefined; return process.argv[optIndex]; } (async function main() { const outputOption = getOption('--output-file', '-o'); const outputPath = outputOption ? path.resolve(outputOption) : null; const sourceDir = path.dirname(process.argv[1]); process.chdir(path.resolve(sourceDir, '..')); const sources = ['js', 'subprojects/extensions-app/js', 'tests']; const eslint = new ESLint({cache: true}); const results = await eslint.lintFiles(sources); const formatter = await eslint.loadFormatter(getOption('--format', '-f')); const resultText = formatter.format(results); if (outputPath) { fs.mkdirSync(path.dirname(outputPath), { recursive: true }); fs.writeFileSync(outputPath, resultText); if (hasOption('--stdout')) { const consoleFormatter = await eslint.loadFormatter(); console.log(consoleFormatter.format(results)); } } else { console.log(resultText); } process.exitCode = results.some(r => r.errorCount > 0) ? 1 : 0; })().catch((error) => { process.exitCode = 1; console.error(error); }); 07070100000010000041ED0000000000000000000000026712993F00000000000000000000000000000000000000000000002900000000gnome-shell-47.1/.gitlab/issue_templates07070100000011000081A40000000000000000000000016712993F00000634000000000000000000000000000000000000003000000000gnome-shell-47.1/.gitlab/issue_templates/Bug.md ### Affected version ### Bug summary ### Steps to reproduce ### What happened ### What did you expect to happen ### Relevant logs, screenshots, screencasts etc. /label ~"1. Bug" 07070100000012000081A40000000000000000000000016712993F000002B4000000000000000000000000000000000000003400000000gnome-shell-47.1/.gitlab/issue_templates/Feature.md ### Feature summary ### How would you like it to work ### Relevant links, screenshots, screencasts etc. /label ~"1. Feature" 07070100000013000081A40000000000000000000000016712993F00000000000000000000000000000000000000000000002000000000gnome-shell-47.1/.jscheckignore07070100000014000081A40000000000000000000000016712993F000046AC000000000000000000000000000000000000001900000000gnome-shell-47.1/COPYING GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. 07070100000015000081A40000000000000000000000016712993F0004AE6C000000000000000000000000000000000000001600000000gnome-shell-47.1/NEWS47.1 ==== * Improve quick settings accessibility [Lukáš; !3477, !3481, !3484, !3485] * Use accent color in tablet configuration UI [Alice; !3480] * Improve accuracy of inset box shadows [Daniel; !3488] * Fix `PopupSwitchMenuItem::toggled` passing wrong state [Andrew; !3493] * Consider text direction when handling arrow keys in sliders [Sundeep; !3500] * Fix layout issues with new dialog style [Sam; !3473] * Fix uneven padding in notification headers [Sam; !3486] * Fixed crash [Florian; #7912] * Misc. cleanups and bug fixes [Florian, Marco, Bilal; !3478, !3479, !3490, !3495, !3499, !3504, !3505, !3507, !3508, !3506, !3511, !3514] Contributors: Bilal Elmoussaoui, Sam Hewitt, Sundeep Mediratta, Alice Mikhaylenko, Florian Müllner, Marco Trevisan (Treviño), Lukáš Tyrychtr, Daniel van Vugt, Andrew Zaech Translators: Aefgh Threenine [th], Daniel Mustieles [es] 47.0 ==== * Fix new wifi connections for restricted users [Thore; !3462] * Do not disable required animations [Alessandro; !2986] * Fix showing pending PAM messages on login screen [Marco; !3466] * Misc. bug fixes and cleanups [Alessandro, Balló, Sundeep, Martin, Peter, Florian; !3446, !3374, !3439, !3464, !3465] Contributors: Alessandro Bono, Balló György, Peter Hutterer, Martin Abente Lahaye, Sundeep Mediratta, Florian Müllner, Thore Sommer, Marco Trevisan (Treviño) Translators: Aefgh Threenine [th], Irénée THIRION [fr], twlvnn kraftwerk [bg], Alexander Shopov [bg], Daniel Mustieles [es], Aurimas Černius [lt], Fran Dieguez [gl], Anders Jonsson [sv], Andi Chandler [en_GB], Ask Hjorth Larsen [da], Rūdolfs Mazurs [lv], Balázs Úr [hu] 47.rc ===== * Fix smartcard logins [Alessandro; !3448] * Mark drag to dash as move operation [Daniel; !3453] * Use rst2man to generate man pages [Florian; !3454] * Fix glitch when quick settings menu animation is interrupted [Dylan; !2481] * Plugged leak [Jonas; !3421] * Misc. bug fixes and cleanups [Bilal, Florian, Sophie, Jonas; Martin; !3433, !3441, !3443, !3447, !3450, !3451, !3449, !3455, !3456, !3452, !3458, !3459] Contributors: Jonas Ådahl, Alessandro Bono, Bilal Elmoussaoui, Sophie Herold, Martin Abente Lahaye, Dylan McCall, Florian Müllner, Daniel Sheeler Translators: Balázs Úr [hu], Yosef Or Boczko [he], Giannis Antypas [el], Daniel Șerbănescu [ro], Jordi Mas [ca], Ekaterine Papava [ka], Asier Sarasua Garmendia [eu], Artur S0 [ru], Vasil Pupkin [be], Rafael Fontenelle [pt_BR], Jordi Mas i Hernandez [ca], Yuri Chornoivan [uk], Luming Zh [zh_CN], Jose Riha [sk], Jiri Grönroos [fi], Jürgen Benvenuti [de], Brage Fuglseth [nb], Daniel Rusek [cs], Danial Behzadi [fa], Quentin PAGÈS [oc], Changwoo Ryu [ko], Hugo Carvalho [pt], Piotr Drąg [pl], Andika Triwidada [id], Baurzhan Muftakhidinov [kk], Sabri Ünal [tr] 47.beta ======= * Use hardware encoding for screen recordings if possible [Jonas D.; !2080] * Allow notification portal to always use GTK protocol [Julian; !3382] * Improve Persian on-screen keyboard layout [Sohrab; !3409] * Build and publish GNOME OS systemd-sysext extensions [Martin; !3390] * Make overview startup notification more reliable [Will; !3422, !3428] * Fix keyboard navigation in app folders [sorelz; !3338] * Support exporting DebugControl service from looking glass [Sebastian; !3425] * Use low-power pipeline in screen recorder if possible [José; !3416] * Show notification when detecting captive portal [Florian; !3408] * Fix connecting to WPA2 enterprise networks [Tuomas; !3426] * Use unlinked rounded buttons in notifications and dialogs [Sam; !3383, !3427] * Misc. bug fixes and cleanups [Jonas Å., Florian, Sam, Bilal, kramo, Julian, sorelz, Sebastian; !3363, !3411, !3413, !3414, !3412, !3402, !3423, !3420, !3415, !3410, !3168, !3387, !3424, !3432, !3431, !3430] Contributors: Jonas Ådahl, Sohrab Behdani, Jonas Dreßler, Bilal Elmoussaoui, Sam Hewitt, kramo, Martin Abente Lahaye, Florian Müllner, Tuomas Nurmi, José Relvas, sorelz, Julian Sparber, Will Thompson, Sebastian Wick Translators: Ekaterine Papava [ka], Scrambled 777 [hi], Sabri Ünal [tr], Martin [sl], Chao-Hsiung Liao [zh_TW], Daniel Rusek [cs], Emin Tufan Çetin [tr] 47.alpha ======== * Fix size of workspace switcher OSD [Jakub; !3282] * Fix handling of invalid TLS certs in portal handler [Sebastian K.; !3284] * Exclude override-redirect windows from workspace animation [Marco; !3285] * Also center time on lock screen when using 12h format [pesader; !3290] * Use absolute tray icon position in root event coordinates [Marco; !3283] * Fix displaying info messages on login screen [Ray; !3298] * Correct expected bus name for streams [Simon; !3303] * Fix notifications on lock screen [Florian; !3308] * notifications: Only apply special styling to symbolic icons [Florian; !3296] * Use three or more fingers for touchpad gestures [Gregor; !3275] * Fix number of search results with Large Text option [Sam H.; !3312] * Make overview spacings dynamic [Jonas D.; !3278] * Fix showing keyboard layouts with variants [Sebastian K.; !3324] * Tweak font sizes in calendar [Sam H.; !3313] * automountManager: Fix re-asking password for TCRYPT devices [segfault; !3300] * Port unit tests to jasmine [Sam S., Florian; !3164] * Fix stuck unlock prompt when animations are disabled [Florian; !3317] * Add extended on-screen keyboard layout for 'za' [Michael; !3309] * Fix possible hang on startup during ibus-daemon launch [Marco; !3293] * Allow fillPreferencesWindow() to be asyn [Leleat; !3348] * Fix on-screen keyboard when windows are unredirected [Carlos; !3356] * Switch to paint nodes [Georges; !1538] * Stop using SVG assets for checks and switches [Alice, Daniel; !2717] * Support accent color [Alice; !2715] * Fix rendering artifacts of some rounded borders [Jonas D.; !3354] * Fix overview animation glitch when windows overlap workspaces [Keyu; !3378] * Support building with X11-less mutter [Bilal; !3362] * Misc. bug fixes and cleanups [Monster, Sebastian W., Jamie, Florian, Gabriel, pesader, Sebastian K., Automeris, Jonas Å., Sam H., Jonas D., Ray, Bilal, Georges, Mister, Philip, Marco, Jakub, Jordan, Balló, Alessandro, Sundeep; !3224, !3267, !3254, !3280, !3248, !3281, !3289, !3288, !3270, !3295, !3299, !3310, !3315, !3322, !3326, !3321, !3319, !3329, !3327, !3314, !3320, !3331, !3337, !3245, !3332, !3340, !3344, !3347, !3350, !3349, !3351, !3352, !3353, !3355, !3358, !3357, !3359, !3307, !3323, !3365, !3366, !3367, !3369, !3370, !3361, !3142, !3368, !3291, !3371, !3375, !3311, !3376, !3377, !3380, !3373, !3385, !3386, !3396, !3398, !3403] Contributors: Jonas Ådahl, Daniel Ruiz de Alegría, Alessandro Bono, Jonas Dreßler, Bilal Elmoussaoui, Michael Evans, Carlos Garnacho, Jamie Gravendeel, Balló György, Sam Hewitt, Sebastian Keller, Leleat, Simon McVittie, Sundeep Mediratta, Alice Mikhaylenko, Monster, Florian Müllner, Gabriel Nagy, Automeris naranja, Georges Basile Stavracas Neto, Gregor Niehl, pesader, Jordan Petridis, segfault, Mister Smör, Sam Spilsbury, Jakub Steiner, Ray Strode, Keyu Tao, Marco Trevisan (Treviño), Sebastian Wick, Philip Withnall Translators: Martin [sl], Andika Triwidada [id], Yuri Chornoivan [uk], Hugo Carvalho [pt], Scrambled 777 [hi], Jose Riha [sk], Balázs Úr [hu], Quentin PAGÈS [oc], Artur S0 [ru], Yosef Or Boczko [he] 46.1 ==== * Improve notification of conflicting session [Joan; !3235] * Add shift level to Korean OSK layout [Carlos; !3222] * Fix markup support in notifications [Sebastian; !3247] * extensions-app: Fix empty rows with '&' in extension name [Florian; !3266] * extensions-app: Improve HIG compliance [Automeris; !3269, !3271] * Omit expand buttons in notification banners [Julian; !3249] * Misc. bug fixes and cleanups [dcz, Totto16, Sebastian, Florian; !3262, !3253, !3260, !3234] Contributors: dcz, Carlos Garnacho, Sebastian Keller, Robert Mader, Florian Müllner, Automeris naranja, Julian Sparber, Joan Torres, Totto16, Sebastian Wick Translators: Danial Behzadi [fa], Baurzhan Muftakhidinov [kk], Anders Jonsson [sv], Aurimas Černius [lt], Yuri Chornoivan [uk], Daniel Rusek [cs], Ekaterine Papava [ka], Asier Sarasua Garmendia [eu], Jiri Grönroos [fi], Piotr Drąg [pl], Yaron Shahrabani [he], Brage Fuglseth [nb], A S Alam [pa], Christian Kirbach [de], Milo Casagrande [it], Fran Dieguez [gl], Jordi Mas i Hernandez [ca], Jordi Mas [ca], Sabri Ünal [tr], Boyuan Yang [zh_CN], Athmane MOKRAOUI [kab], Vincent Chatelain [fr], Милош Поповић [sr, sr@latin], Martin [sl], Nathan Follens [nl], Artur S0 [ru], Juliano de Souza Camargo [pt_BR], Changwoo Ryu [ko], Jose Riha [sk], Fabio Tomat [fur], Peter Vágner [sk], Andi Chandler [en_GB] 46.0 ==== * Fix model selection in on-screen keyboard [Jonas; !3230] * Fix key getting stuck when raising screen shield [Jonas; !3231] * Fix notifications sometimes being empty [Julian; !3229] * Fix cursor visibilty when magnified [Sebastian; !3237] * Fixed crashes [Jonas, Sebastian; !3233, !3239] * Misc. bug fixes and cleanups [Carlos, Yotam, Aleksandr, Florian, Joan, Sam; !3225, !3161, !3232, !3226, !3236, !3203, !3238] Contributors: Yotam Bar-On, Jonas Dreßler, Carlos Garnacho, Sam Hewitt, Sebastian Keller, Aleksandr Mezin, Florian Müllner, Julian Sparber, Joan Torres Translators: Sabri Ünal [tr], Yuri Chornoivan [uk], Piotr Drąg [pl], Jiri Grönroos [fi], Ekaterine Papava [ka], Aurimas Černius [lt], Yaron Shahrabani [he], Daniel Mustieles [es], Asier Sarasua Garmendia [eu], Guillaume Bernard [fr], Jordi Mas i Hernandez [ca], Matej Urbančič [sl], Bruce Cowan [en_GB], Baurzhan Muftakhidinov [kk], Brage Fuglseth [nb], Andika Triwidada [id], Quentin PAGÈS [oc], Rūdolfs Mazurs [lv], Anders Jonsson [sv], Fran Dieguez [gl], Milo Casagrande [it], Balázs Úr [hu], Philipp Kiemle [de], Artur S0 [ru], Changwoo Ryu [ko], Ask Hjorth Larsen [da], Athmane MOKRAOUI [kab] 46.rc ===== * Fix repainting drawing area [Florian; !3190] * Support locking down extension installation [Florian; !3180] * Fix auto-closing FDO notifications [Florian; !3204] * Ensure remote actions are activated with correct platform data [Julian; !3198] * FDO notifications: Support ActivationToken signal [Julian; !3199] * Delete selected text on backspace from on-screen keyboard [Sebastian; !2746] * Various on-screen keyboard improvements [Carlos; !3162] * Inform users of conflicting local/remote sessions on login [Joan; !3134] * screencasts: Use h264 encoding if available [Jonas; !3211] * Work around issue in NetworkManager's wireguard support [Jonas; !3219] * Allow expanding notifications in message list [Julian; !3173] * Fixed crash [Marco; !2267] * Misc. bug fixes and cleanups [Paul, Florian, Carlos, Julian, Bilal, Automeris, Ray, Sam, Daniel, Sophie; !3186, !3187, !3028, !3188, !3189, !3191, !3192, !3147, !3195, !3197, !3196, !2765, !3200, !3202, !3201, !3206, !3208, !3213, !3207, !3214, !3215, !3216, !3209, !3217, !3221] Contributors: Jonas Dreßler, Bilal Elmoussaoui, Carlos Garnacho, Sophie Herold, Sam Hewitt, Paul Hollinsky, Sebastian Keller, Florian Müllner, Automeris naranja, Julian Sparber, Ray Strode, Joan Torres, Marco Trevisan (Treviño), Daniel van Vugt Translators: Ekaterine Papava [ka], Danial Behzadi [fa], Marek Černocký [cs], Sabri Ünal [tr], Artur S0 [ru], Yuri Chornoivan [uk], Fran Dieguez [gl], Vasil Pupkin [be], Asier Sarasua Garmendia [eu], Yaron Shahrabani [he], Daniel Rusek [cs], Brage Fuglseth [nb], Emin Tufan Çetin [tr], Nathan Follens [nl], Aurimas Černius [lt], Matej Urbančič [sl], Daniel Mustieles [es], Quique Serrano [ca], Irénée THIRION [fr], Kukuh Syafaat [id], Luming Zh [zh_CN], Jordi Mas i Hernandez [ca], Bruce Cowan [en_GB], Quentin PAGÈS [oc], Baurzhan Muftakhidinov [kk], Rūdolfs Mazurs [lv], Chao-Hsiung Liao [zh_TW], Guillaume Bernard [fr], Jürgen Benvenuti [de], Philipp Kiemle [de], Jiri Grönroos [fi] 46.beta ======= * Improve High Contrast styling [Sam; !3063, !3075, !3076, !3097, !3143, !3120, !3154] * Improve default styling [Sam; !3044, !3084, !3102, !3140, !3167] * Close mount notification when drive gets disconnected [Florian; !3089] * extensions-app: Remember window state [Florian; !3115] * Fix feedback look in keyboard backlight slider [Barnabás; !3086] * Follow "switch-shapes" accessibility setting [Florian; !3107] * Fix effects of transient wayland windows [Florian; !3125] * Add keyboard model configuration support [Leorize; !2583] * Add Text Editor to the dash by default [Allan; !3135] * Fix icon size regression in dash [Sam; !3119] * Improve project and development documentation [Florian; !3122] * overview: Keep dimming effect for modal dialogs [Florian; !3151] * Do not use markup in button labels [Carlos; !3149] * Fix menu alignment in RTL locales [Florian; !3150] * Overhaul assets in monitor layout switcher [Sam; !3128] * Fix overview transition from search results to session [Suryashankar; !3152] * Add header to notifications [Julian; !3103] * extensions-app: Use adaptive dialogs [Florian; !3148] * Register custom D-Bus errors [Florian; !3159, !3160] * Improve appearance of symbolic icons in notifications [Julian; !3066] * Improve minimize animation [Keyu; !2968] * Use a single source for all system notifications [Julian; !3156] * Add missing shift level to Georgian OSK layout [Carlos; !3145] * Tweak switch appearance [kramo; !3077] * Improve handling of screencast failures [Jonas; !2976] * Fixed crash [Florian; !3117] * Misc. bug fixes and cleanups [Julian, Robert, Bilal, Florian, Georges, Sam, Shmuel, Jonas, Andy, Evan, Óscar, Bilal; !3059, !2982, !3026, !3105, !3104, !3106, !3109, !3110, !3112, !3111, !3113, !3114, !3118, !3121, !3098, !3123, !3126, !3129, !3136, !3138, !3139, !3137, !3133, !3132, !3130, !3131, !3141, !3146, !786, !2475, !2901, !2037, !3153, !3158, !3155, !3165, !3171, !3169, !3127, !3172, !3157, !3170, !3175, !3176, !3178, !3177, !3181] Contributors: Suryashankar Das, Allan Day, Jonas Dreßler, Bilal Elmoussaoui, Óscar Fernández Diaz, Carlos Garnacho, Sam Hewitt, Andy Holmes, kramo, Leorize, Robert Mader, Shmuel Melamud, Florian Müllner, Georges Basile Stavracas Neto, Barnabás Pőcze, Julian Sparber, Keyu Tao, Evan Welsh Translators: Ekaterine Papava [ka], Artur S0 [ru], Sabri Ünal [tr], Balázs Meskó [hu], Danial Behzadi [fa], A S Alam [pa], Daniel Rusek [cs], Fran Dieguez [gl], Vasil Pupkin [be], Yosef Or Boczko [he] 46.alpha ======== * Fix scroll handling on sliders [Carlos; !2967] * overview: Handle unredirection as part of the state transition [Robert; !2970] * Handle DESKTOP windows during workspace animations [Sundeep; !2865] * Improve wording in welcome dialog [Automeris, Florian; !2963, !2962] * Improve recording indicator in light style [Georges; !2983] * Fix calendar popup shrinking on date changes [Sebastian K.; !2989] * app: Make all windows on target workspace recent when activated [Sebastian W.; !2991] * Fix performance degradation due to repeated signal leak [Sebastian K.; !3001] * Optimize application search [Sebastian K.; !3004] * Fix on-screen keyboard backspace getting stuck [Sebastian K.; !3009] * Adapt to ClutterContainer removal [Zander; !3010, !3014] * Fix arrow navigation in search results [Sebastian K.; !3015] * Improve monitor OSD labels [Sam; !3016] * Support async code in Eval() D-Bus method [Florian; !3021] * Fix sliders not requesting any size [Florian; !2994] * Only show prefs dialog after the extension has been loaded [Florian; !3025] * Use dedicated assets in ctrl-alt-tab popup [Sam; !3019] * Improve high-contrast styling [Sam; !3030] * Fix mapping of tablet rings/strips [Peter; !3029] * Add support for "version-name" field in extension metainfo [Aryan, Florian; !2995, !3034] * Add more toolbox developer tooling [Florian; !2935, !3040] * Use less ambiguous symbols for radio menu items [Sam; !3027] * Improve icon- and text scaling [Sam; !3033] * Modernize Extensions app [Florian; !3048, !3051, !3067] * Use gi-docgen for API documentation [Zander; !1873] * Improve high-contrast styling [Sam; !3017] * Allow any enter key to be used to screenshot [Scott; !2777] * Remove X11-specific icon fallback [Florian; !3056] * Replace StBin's custom layout code [Florian; !3046] * Minimize need to rebase when loading extensions [Sundeep; !2851] * Add D-Bus method to take interactive screenshots [Georges; !2999] * Add shortcuts to open new window of pinned apps [Florian, Leleat; !1829] * Fix spinner in light style variant [Florian; !3080] * Improve handling of enabled-but-inactive extensions [Florian; !3073] * Improve formatting of extension errors [Philip; !3041] * Fixed crashes [Daniel, Sebastian K., Carlos, Florian; !2975, !2974, !2993, !3018, !3011, !3006] * Misc. bug fixes and cleanups [Florian, Martin, Alessandro, Bilal, Sebastian K., Barnabás, Jonas, Julian, Charles, Daniel, Automeris, Cassidy, Carlos, Sam, Sabri, Jonian, Sebastian W.; !2966, !2978, !2987, !2988, !2808, !2964, !3000, !3005, !3008, !3013, !2190, !3020, !3023, !2997, !3031, !3042, !3043, !3045, !3047, !3049, !2653, !3052, !3050, !3054, !3055, !1905, !3060, !3061, !2950, !3062, !3068, !3058, !3064, !3072, !3071, !3079, !2998, !3085, !3083, !3088, !3087, !3091, !3057, !3090] Contributors: Cassidy James Blaede, Alessandro Bono, Zander Brown, Scott Buchanan, Philip Chimento, Jonas Dreßler, Bilal Elmoussaoui, Carlos Garnacho, Jonian Guveli, Sam Hewitt, Peter Hutterer, Aryan Kaushik, Sebastian Keller, Leleat, Robert Mader, Sundeep Mediratta, Florian Müllner, Automeris naranja, Georges Basile Stavracas Neto, Barnabás Pőcze, Julian Sparber, Sabri Ünal, Daniel van Vugt, Sebastian Wick, Charles Wong, Martin Zurowietz Translators: Jordi Mas [ca], Fabio Tomat [fur], Ekaterine Papava [ka], Sabri Ünal [tr], Cheng-Chia Tseng [zh_TW], Changwoo Ryu [ko], Florentina Mușat [ro], Brage Fuglseth [nb], Evangelos Skarmoutsos [el], Efstathios Iosifidis [el], Quentin PAGÈS [oc], Jürgen Benvenuti [de], Daniel Șerbănescu [ro], Artur S0 [ru], Марко Костић [sr], Hugo Carvalho [pt], Ngọc Quân Trần [vi], Dušan Kazik [sk], Aefgh Threenine [th] 45.0 ==== * Fix exposing window previews on lock screen via keyboard shortcuts [Florian; !2944] * Improve handling of latched vs. locked modes in OSK [Carlos; !2945] * Fix regression in workspace state tracking [Florian; !2949] * Update extensions immediately on startup after major upgrades [Florian; !2951] * Reverse slider direction in RTL locales [Khalid; !2943] * Misc. bug fixes and cleanups [Hollow, xiaofan, Florian; !2946, !2947, !2952, !2956] Contributors: Carlos Garnacho, Hollow Man, Florian Müllner, Khalid Abu Shawarib, xiaofan Translators: Anders Jonsson [sv], Jordi Mas [ca], Rafael Fontenelle [pt_BR], Matej Urbančič [sl], Irénée THIRION [fr], Carmen Bianca BAKKER [eo], Rūdolfs Mazurs [lv], Artur S0 [ru] 45.rc ===== * Allow notification dismissal with backspace [Chris; !2435] * Add workspace indicators in activities button [Georges; !2902] * Add extension hook to add quick settings items [Florian; !2894] * Fix legibility issue in calendar [Jakub; !2857] * Fix three-finger swipes on touchscreens [Carlos; !2910] * Add more options to `gnome-extensions create` [Florian; !2889] * Fix scrolling regression in ScrollView [Andrew; !2920] * Fix broken workspace animation with swipe gesture [Carlos; !2918] * Restore focus indication in system entries [Florian; !2922] * Use UUID as fallback extension gettext domain [Florian; !2888] * Reflect core app change in default "Utilities" folder [kramo; !2916] * Support OWE networks in status menu [Florian; !2927] * Show immediate feedback when toggling bluetooth [Florian; !2815] * Switch workspaces when scrolling over activities button [Florian; !2933] * Wrap around when navigating menus with arrow keys [Lukáš; !2525] * Fix background apps menu showing up empty [Florian; !2938] * Misc. bug fixes and cleanups [Florian, Dallas, Georges, Sebastian, Brendan, Simon, Marco, Daniel, Stuart, Bilal, Carlos, aliriza, Bryan; !2884, !2885, !2881, !2887, !2893, !2891, !2729, !2892, !2897, !2898, !2899, !2900, !2828, !2903, !2904, !2859, !2911, !2912, !2917, !2919, !2873, !2928, !2924, !2926, !2930, !2932, !2934, !2936, !2875, !2938, !2940, !2939] Contributors: aliriza, Bilal Elmoussaoui, Carlos Garnacho, Stuart Hayhurst, Chris Heywood, Sebastian Keller, kramo, Florian Müllner, Georges Basile Stavracas Neto, Bryan Ricker, Simon Schneegans, Jakub Steiner, Dallas Strouse, Marco Trevisan (Treviño), Lukáš Tyrychtr, Daniel van Vugt, Brendan William, Andrew Zaech Translators: Fran Dieguez [gl], Asier Sarasua Garmendia [eu], Quentin PAGÈS [oc], Sabri Ünal [tr], Baurzhan Muftakhidinov [kk], Ekaterine Papava [ka], Jordi Mas [ca], Yuri Chornoivan [uk], Piotr Drąg [pl], Vasil Pupkin [be], Philipp Kiemle [de], Daniel Rusek [cs], Daniel Mustieles [es], Danial Behzadi [fa], Amn Alam [pa], Artur S0 [ru], Yosef Or Boczko [he], Jiri Grönroos [fi], Nathan Follens [nl], Luming Zh [zh_CN], Kukuh Syafaat [id], Milo Casagrande [it], Aurimas Černius [lt], Changwoo Ryu [ko], A S Alam [pa], Alan Mortensen [da], Balázs Úr [hu], Bruce Cowan [en_GB] 45.beta.1 ========= * Fix input handling in alt-tab and several other components [Carlos; !2872] * Fix screenshot tool [Florian; 2877] * Export notification source classes for extensions [Andy; 2869] * Finishing ESM porting touches [Florian; 2880] * Misc. bug fixes and cleanups [Andrew, Carlos, Florian; !2866, !2871, !2876, !2878, !2879] Contributors: Carlos Garnacho, Florian Müllner, Andy Holmes, Andrew Zaech Translators: Piotr Drąg [pl], Kukuh Syafaat [id] 45.beta ======= * Load extensions as modules [Florian; !2795] * Run "perf" tests as external scripts [Florian; !2812] * Remove toLocaleFormat() from date [Evan; !2827] * Use Tecla for keyboard layout previews [Carlos; !2834] * Fix accessibility of quick settings sliders [Lukáš; !2762] * Port to EcmaScript modules [Evan, Florian; !2842, !2822, !1499, !2868] * Overhaul ExtensionUtils API for modules [Florian; !2832, !2837, !2838] * Add a camera indicator [Robert] * Add keyboard backlight quick toggle [Florian; !2820] * Hide popup menu ornaments by default [Florian, Sebastian; !2843] * Improve light style variant [Sam; !2823] * Add InjectionManager convenience API for extensions [Florian; !2809] * Use per-direction labels on ring/strip tablet actions [Carlos; !2766] * Misc. bug fixes and cleanups [Florian, Robert, Carlos, Daniel, Sebastian, Takao; !2807, !2814, !2831, !2830, !2829, !2835, !2836, !2824, !2841, !2845, !2846, !2850, !2849, !2844, !2854, !2852, !2855, !2856, !2860, !2718, !2861, !2862, !2864, !2668, !2666] Contributors: Takao Fujiwara, Carlos Garnacho, Sam Hewitt, Sebastian Keller, Robert Mader, Florian Müllner, Lukáš Tyrychtr, Daniel van Vugt, Evan Welsh Translators: Vasil Pupkin [be], Fabio Tomat [fur], Balázs Úr [hu], Ekaterine Papava [ka], Yuri Chornoivan [uk], Artur So [ru], Danial Behzadi [fa], Ngọc Quân Trần [vi], Yosef Or Boczko [he], Boyuan Yang [zh_CN], Hugo Carvalho [pt], Daniel Rusek [cs], Jiri Grönroos [fi], Florentina Musat [ro], Fran Dieguez [gl], Daniel Mustieles [es] 45.alpha ======== * Improve background apps menu [Florian; !2732, !2790] * Complete GTK4 port [Florian; !2690, !2733] * Use user-defined names in bluetooth menu [Florian; !2751] * Improve the built-in screen recorder [Jonas, Robert; !2197, !2609, !2752, !2597, !2754, !2782] * Remove the app menu [Jonas; !2610] * Fix stuck authentication dialog in remote sessions [Joan; !2761] * Provide generated toolbox images for development [Florian; !2713] * Fix glitches in calendar when using large-text option [Sebastian; !2759] * Use icons for ornaments in popup menus [maniacx; !2767] * Improve calendar styling [Sam; !2769] * Fix IM popup getting stuck on engine changes [Daniel D.; !2774] * Support color-scheme setting for default stylesheet [Florian; !2324] * Remove Soup2 support [Florian; !2776] * Expose public functions for search provider registration [Andy; !2783] * Fix cursor offset when using magnifier [Андрей; !2780] * Modernize Extensions app UI [Christopher; !2802] * Fix missing workspace borders after wallpaper changes [Florian; !2801] * Port auxiliary services and apps to ESM [Florian; !2786] * Add shortcut for toggling quick settings [Florian; !2716] * Fixed crashes [Carlos, Evan; !2756, !2781] * Misc. bug fixes and cleanups [Florian, Automeris, Daniel v. V., Jonas, Sam, Zacharie, Joan, Evan, Martin; !2741, !2742, !2743, !2683, !2650, !2753, !2757, !2755, !2768, !2772, !2770, !2665, !2775, !2791, !2792, !2563, !2796, !2799, !2778, !2805, !2806, !2804, !2794, !2813, !2811, !2800, !2816, !2798, !2821] Contributors: Christopher Davis, Daniel Drake, Jonas Dreßler, Zacharie DUBRULLE, Carlos Garnacho, Sam Hewitt, Andy Holmes, Sebastian Keller, maniacx, Florian Müllner, Automeris naranja, robert.mader@collabora.com, Joan Torres, Daniel van Vugt, Evan Welsh, Martin Zurowietz, Андрей Гриценко Translators: Fabio Tomat [fur], Jiri Grönroos [fi], Sabri Ünal [tr], Gianvito Cavasoli [it], Guillaume Bernard [fr], Jordi Mas [ca], Yosef Or Boczko [he], Daniel Rusek [cs], Rafael Fontenelle [pt_BR], Jordi Mas i Hernandez [ca], Hugo Carvalho [pt], Julia Dronova [ru], Dušan Kazik [sk], Bruce Cowan [en_GB] 44.1 ==== * Add section title in background apps menu [Florian; !2681] * Fix visibility of xembed icons [Marco; !2684] * Fix placeholder alignment in bluetooth menu [Sebastian; !2687] * Fix recording screenshots in recent items [Carlos, Adam; !2692, !2725] * Fix reloading extensions on version-validation changes [Florian; !2694] * Fix force-enabling animations at runtime [Florian; !2698] * Fix stuck session after logout dialog timeout [Florian; !2696] * Fix window screenshots with pointer [Ivan; !2710, !2702] * Only show network subtitles if they don't match the title [Georges; !2682] * Fix constructing QuickMenuToggles with icon-name [Florian; !2726] * Fix accessible names in VPN menu [Lukáš; !2720] * Don't fail extracting extensions without schemas [Andy; !2727] * Fixes and improvements to the light theme variant [Sam; !2515] * Improve accessible name of wireless menu items [Lukáš; !2724] * Use consistent naming for "Power Mode" toggle [Automeris; !2697] * Fix support for transparent colors in symbolic SVGs [Florian; !2731] * Fix notifications getting stuck indefinitely [msizanoen1; !2736] * Fix keynav of menu-less buttons [Florian; !2734] * Fix corner cases when matching apps on StartupWmClass [Marco; !2721] * Fix occasional misalignment of search results [Sebastian; !2744] * Fix regression in content-type sniffing on autorun [Balló; !2745] * Fix building API documentation [Bobby; !2749] * Fixed crash [Jonas Å.; !2722] * Plugged leak [Sebastian; !2737] * Misc. bug fixes and cleanups [Florian, Will, Daniel, Marco, Sebastian, Jordan, Jonas D.; !2679, !2689, !2693, !2639, !2661, !2685, !2709, !2699, !2711, !2723, !2728, !2730, !2739, !2738, !2740, !2712, !2695, !2193] Contributors: Jonas Ådahl, Jonas Dreßler, Carlos Garnacho, Balló György, Sam Hewitt, Andy Holmes, Sebastian Keller, Ivan Molodetskikh, msizanoen1, Florian Müllner, Automeris naranja, Georges Basile Stavracas Neto, Jordan Petridis, Bobby Rong, Will Thompson, Marco Trevisan (Treviño), Lukáš Tyrychtr, Daniel van Vugt, Adam Williamson Translators: Fran Dieguez [gl], Balázs Úr [hu], Andika Triwidada [id], Anders Jonsson [sv], Martin [sl], Danial Behzadi [fa], Bruce Cowan [en_GB], Rūdolfs Mazurs [lv], Asier Sarasua Garmendia [eu], Nathan Follens [nl], Sabri Ünal [tr], Boyuan Yang [zh_CN], Guillaume Bernard [fr], Alexander Shopov [bg], Aleksandr Melman [ru], MohammadSaleh Kamyab [fa], Yuri Chornoivan [uk], Hugo Carvalho [pt], Fabio Tomat [fur], Kukuh Syafaat [id], Piotr Drąg [pl], Марко Костић [sr], Aurimas Černius [lt], Yaron Shahrabani [he], Philipp Kiemle [de] 44.0 ==== * Bump version Translators: Piotr Drąg [pl], Martin [sl], Fran Dieguez [gl], Chao-Hsiung Liao [zh_TW], Vasil Pupkin [be], Alexandre Franke [fr], Kukuh Syafaat [id], Fabio Tomat [fur], Sabri Ünal [tr], Anders Jonsson [sv], Boyuan Yang [zh_CN], Marek Černocký [cs], Alan Mortensen [da], Asier Sarasua Garmendia [eu], Daniel [es], Aleksandr Melman [ru], MohammadSaleh Kamyab [fa] 44.rc ===== * Unmute to default volume when slider was at 0 [Florian; !2644] * Fix missing battery percentage in the top bar [DaPigGuy; !2657] * Fix unexpected focus order after activating apps [Florian; !2659] * Stop using GTK for systray support [Carlos; !2590] * Expose GtkIconTheme replacement to extensions [Florian; !2671] * Disallow using (most of) GTK in the compositor process [Florian; !2680] * Plugged leak [Sebastian; !2652] * Misc. bug fixes and cleanups [Jonas, Florian, Andy, Carlos, Sebastian, Sam, Automeris, Ray; !2318, !2658, !2663, !2642, !2656, !2664, !2667, !2648, !2654, !2655, !2670, !2669, !2673, !2675, !2674, !2677, !2676] Contributors: DaPigGuy, Jonas Dreßler, Carlos Garnacho, Sam Hewitt, Andy Holmes, Sebastian Keller, Florian Müllner, Ray Strode, Automeris naranja Translators: Daniel Mustieles [es], Jürgen Benvenuti [de], Piotr Drąg [pl], Danial Behzadi [fa], Fabio Tomat [fur], Jordi Mas [ca], Hemish [hi], Asier Sarasua Garmendia [eu], Matej Urbančič [sl], Alan Mortensen [da], Мирослав Николић [sr], Jean-Marc Tissières [fr], Jiri Grönroos [fi], Sabri Ünal [tr], Balázs Úr [hu], Yuri Chornoivan [uk], Changwoo Ryu [ko], Aleksandr Melman [ru], Yosef Or Boczko [he], Aurimas Černius [lt], Alexander Shopov [bg], Hugo Carvalho [pt] 44.beta ======= * Fix screencast UI being erroneously disabled [Florian; !2533] * Fix unresponsive screen area when quick settings are opened [Carlos; !2535] * Ensure completions are disabled when hiding on-screen keyboard [Carlos; !2543] * Fix missing name in wired network quick settings button [Florian; !2529] * Properly apply saved shortcuts inhibition permissions [Florian; !2548] * Don't let wayland popovers block overview [Florian; !2549] * Improve high contrast styling [Sam; !2527] * Open correct Settings panel from on-screen keyboard menu [Roshan-R; !2554] * Test running gnome-shell in CI [Jonas Å.; !1349] * Do not use symbolic app icons for High Contrast [Jakub; !2555] * Prepare extension loading for ESM [Evan; !2364] * Fix input source switching with focus on password entry [Carlos; !2534] * Ensure quick settings toggles align with the pixel grid [Sebastian K.; !2577] * Lower OOM score of gnome-shell process [Jian-Hong; !2582] * Polish page switching behavior during DND in app grid [Jonas D.; !2581] * Tweak lock- and login screen styling [Sam; !2564] * Consistently link to Settings from menus [sunflowerskater; !2600, !2559, !2615] * Make it easier for extensions to add a credential manager [Alessandro; !2399] * Fix mount operation dialog when Disks is not available [Balló; !2621] * Refine quick settings [Georges, two, Florian; !2619, !2627, !2553, !2631, !2505, !2632] * Mute/unmute volume when clicking slider icon [Florian; !2630] * Add device menu to Bluetooth quick settings [Florian; !2501] * Expose list of background apps in quick settings [Georges; !2624] * Compile extension GSettings after install [Andy; !2638] * Fixed crash [Florian; !2622] * Plugged memory leak [Sebastian K.; !2637] * Misc. bug fixes and cleanups [Alessandro, Cassidy, Colin, Florian, Jonas Å., Sam, Michel, Felipe, Sebastian K., sunflowerskater, Robert, Bilal, Jonas D., Jakub, Philip, Heiko, Carlos, Takao, Sebastian W., Kolja; !2528, !2499, !2523, !2540, !2536, !2545, !2546, !2517, !2547, !2544, !2532, !2558, !2560, !2561, !2562, !2572, !2578, !2579, !2584, !2576, !2571, !2585, !2557, !2588, !2575, !2594, !2602, !2606, !2596, !2607, !2604, !2611, !2613, !2612, !2616, !2617, !2526, !2618, !2348, !2496, !2620, !2625, !2552, !2626, !2623, !2614, !2628, !2629, !2573, !2633, !2634, !2636, !2514, !2479] Contributors: Cassidy James Blaede, Alessandro Bono, Felipe Borges, Jonas Dreßler, Michel Dänzer, Bilal Elmoussaoui, Takao Fujiwara, Carlos Garnacho, Balló György, Sam Hewitt, Andy Holmes, Heiko Hösch, Sebastian Keller, Colin Kinloch, Kolja Lampe, Robert Mader, Florian Müllner, Georges Basile Stavracas Neto, Jian-Hong Pan, Roshan-R, Olga Smirnova, Jakub Steiner, Evan Welsh, Sebastian Wick, Philip Withnall, sunflowerskater, two, Jonas Ådahl Translators: Yuri Chornoivan [uk], Balázs Úr [hu], Aleksandr Melman [ru], Dušan Kazik [sk], Vasil Pupkin [be], Sveinn í Felli [is], Olga Smirnova [ie], Sabri Ünal [tr], Yosef Or Boczko [he], Bruce Cowan [en_GB], Fabio Tomat [fur], Ekaterine Papava [ka], Emin Tufan Çetin [tr], Hugo Carvalho [pt], Jordi Mas [ca], Quentin PAGÈS [oc], Kukuh Syafaat [id], Fran Dieguez [gl], Tim Sabsch [de], Danial Behzadi [fa], Yaron Shahrabani [he], Asier Sarasua Garmendia [eu], Aurimas Černius [lt], Anders Jonsson [sv], Jiri Grönroos [fi], Kjartan Maraas [nb] 43.1 ==== * Fix default keyboard layout during initial setup [Carlos; !2487, !2495] * Show Bluetooth switch in more cases [Bastien; !2488] * Include origin in sound device switcher [Florian; !2502] * Fix remembering inhibit-shortcut permission for multiple apps [Florian; !2504] * Forward TERMINAL input purpose to ibus [Jonas; !2511] * Fix style glitches [Sam; !2513, !2510] * Fix tracking of newly installed apps [Florian; !2480] * Fix space key getting stuck in on-screen keyboard [Carlos; !2508] * Fix showing passwords as on-screen keyboard suggestions [Carlos; !2512] * Fix network portal regression [Marco; !2524] * Fix possible freeze during initialization [Florian; !2519] * Misc. bug fixes and cleanups [Andy, Jonas, Alessandro, Florian, Sebastian; !2470, !2476, !2471, !2483, !2518, !2503] Contributors: Marco Trevisan (Treviño), Alessandro Bono, Carlos Garnacho, Sam Hewitt, Andy Holmes, Sebastian Keller, Florian Müllner, Bastien Nocera, Jonas Ådahl Translators: Baurzhan Muftakhidinov [kk], Марко Костић [sr], Yosef Or Boczko [he], Guillaume Bernard [fr], Hugo Carvalho [pt], Kukuh Syafaat [id], Pawan Chitrakar [ne], Aleksandr Melman [ru], Aurimas Černius [lt], Anders Jonsson [sv], Jordi Mas [ca], Danial Behzadi [fa], Dušan Kazik [sk], Fabio Tomat [fur], Olexander [uk], Nart Tlisha [ab], Cheng-Chia Tseng [zh_TW], Alexander Shopov [bg], Zurab Kargareteli [ka], A S Alam [pa], Kosmas Martakidis [el], Nathan Follens [nl] 43.0 ==== * Fix rebooting into boot loader menu [Florian; !2472] * Improve entry legibility in GNOME Classic [Jakub; !2477] * Fixed crash [Jonas; !2478] * Misc. bug fixes and cleanups [sabriunal, Florian; !2467, !2484, !2485] Contributors: Florian Müllner, Jakub Steiner, sabriunal, Jonas Ådahl Translators: Jürgen Benvenuti [de], Quentin PAGÈS [oc], Aurimas Černius [lt], Anders Jonsson [sv], Pawan Chitrakar [ne], Jordi Mas [ca], Daniel Mustieles [es], Alexander Shopov [bg], Asier Sarasua Garmendia [eu], Aleksandr Melman [ru], Alexandre Franke [fr], Goran Vidović [hr], Emin Tufan Çetin [tr], Balázs Úr [hu], Marek Černocký [cs], Yuri Chornoivan [uk], Jiri Grönroos [fi], Yosef Or Boczko [he], Piotr Drąg [pl], Luming Zh [zh_CN], Fran Dieguez [gl], Enrico Nicoletto [pt_BR], Alan Mortensen [da], Matej Urbančič [sl] 43.rc ===== * Tweak quick settings appearance [Sam; !2427, !2441, !2463] * Use NM connectivity check URI for portal helper [Clerie; !2228] * Only show "Night Light" toggle when supported [Florian; !2425] * Fix accessibility of quick settings sliders [Florian; !2431] * Use more unambiguous icons in on-screen keyboard [Carlos; !2433] * Add screenshot item to quick settings [Florian; !2439] * Fix entering extended characters from on-screen keyboard [Carlos; !2445] * Prevent SignalTracker from leaking objects [Sebastian; !2450, !2466] * Fix turning off VPN in quick settings [Florian; !2426] * Fix initial selection in switch-monitor popup on desktop [Yao; !2451] * Improve handling of recurring events [Milan; !2328] * Indicate transitional states in bluetooth quick toggle [Florian; !2444] * Work around pipewire regression for screencasts [Sebastian; !2436] * Plugged memory leak [Florian; !2461] * Misc. bug fixes and cleanups [Daniel, Jonas Å., Florian, Georges, Carlos; !2429, !2434, !2430, !2442, !2455, !2462, !2456, !2464, !2465, !2288] Contributors: Yao Wei (魏銘廷), Milan Crha, Carlos Garnacho, Sam Hewitt, Sebastian Keller, Florian Müllner, Dmitrii Naidolinskii, Georges Basile Stavracas Neto, Clerie Riese, Daniel van Vugt, msizanoen1, Jonas Ådahl Translators: Danial Behzadi [fa], Kukuh Syafaat [id], Марко Костић [sr], Zurab Kargareteli [ka], Hugo Carvalho [pt], Goran Vidović [hr], Aleksandr Melman [ru], Jordi Mas [ca], Piotr Drąg [pl], Asier Sarasua Garmendia [eu], Luming Zh [zh_CN], Yosef Or Boczko [he], Fran Dieguez [gl], Emin Tufan Çetin [tr], Daniel Mustieles [es], Nart Tlisha [ab], Marek Černocký [cs], Leônidas Araújo [pt_BR], Matej Urbančič [sl], Balázs Úr [hu], Nathan Follens [nl], Baurzhan Muftakhidinov [kk], Rūdolfs Mazurs [lv], Alan Mortensen [da], Changwoo Ryu [ko] 43.beta ======= * Allow extension updates with only Extension Manager installed [Matthew; !2358] * Use new About window in Extensions app [Christopher; !2373] * Stop auto-dismissing notifications on focus changes [Florian; !2332] * Tweak access portal dialog [Georges; !2377] * Add device switcher to volume sliders [Florian; !2380] * Replace combined system menu with quick settings [Florian; !2385, !2389, !2391, !2392, !2393, !2406, !2407, !2408] * Use the same format in screencast and screenshot file names [Emmanuele; !2300] * Only load extensions that support the current session mode [Alessandro; !2378] * Improve overview animation performance [Ivan; !2395, !2394] * Port to gcr4 [Milan; !2386] * Fix logging in with realmd [Alessandro; !2404] * Optimize workspace background shadow [Daniel; !1915] * Improve app grid navigation [Georges; !2335] * Improve on-screen keyboard - delete multiple characters and words when holding backspace - provide word suggestions when using plan keyboard layouts - use extended layout when TERMINAL hint is set [Carlos; !2278] * Fix remembering set up bluetooth devices [Florian; !2409] * Misc. bug fixes and cleanups [Florian, Carlos, Sam, Sebastian, Alessandro, Robert; !2374, !2369, !2350, !2381, !2375, !2384, !2388, !2371, !2344, !2370, !2396, !2397, !2403, !2402, !2326, !2405, !2401, !2398, !2414, !2412, !2411, !2415, !2416, !2419, !2413] Contributors: Robert Ancell, Emmanuele Bassi, Alessandro Bono, Milan Crha, Christopher Davis, Carlos Garnacho, Sam Hewitt, Matthew Jakeman, Sebastian Keller, Andre Klapper, Ivan Molodetskikh, Florian Müllner, Georges Basile Stavracas Neto, Nart Tlisha, Daniel van Vugt Translators: Kukuh Syafaat [id], Emin Tufan Çetin [tr], Jordi Mas [ca], Zurab Kargareteli [ka], Nart Tlisha [ab], Asier Sarasua Garmendia [eu], Fran Dieguez [gl], Aleksandr Melman [ru], Hugo Carvalho [pt], Yuri Chornoivan [uk], Alexander Shopov [bg], Yosef Or Boczko [he], Quentin PAGÈS [oc], Danial Behzadi [fa], Daniel Mustieles [es], Luming Zh [zh_CN], Jiri Grönroos [fi] 43.alpha ======== * Add convenience property for icon-only buttons [Florian; !2254] * Align space-padded times in world clocks [Maksym; !2294, !2340] * Fix top bar menus on lock screen [Florian; !2298] * Show wireguard connects in VPN list [Christian; !1995] * Fix on-screen keyboard gestures [Carlos; !2304] * Fix focus tracking in magnifier on wayland [Sebastian; !2301] * Fix OSD colors with light stylesheet [Jakub; !2315] * Only close messages via delete key if they can be closed [PhilProg; !2323] * Fix screenshots when XDG directories are disabled [Sam U.; !2327] * Do not create systemd scope for D-Bus activated apps [msizanoen1; !2305] * Improve high-contrast stylesheet [Sam H.; !2284] * Hide overview after 'Show Details' from app context menu [PhilProg; !2329] * Fix feedback when turning on a11y features by keyboard [Olivier; !2334] * Fix stylesheet papercuts [Sam H.; !2309] * Use libsoup 3.0 by default [Florian; !2338] * Indicate selected language in on-screen keyboard menu [Carlos; !2346] * Respect IM hint for candidates list in on-screen keyboard [Carlos, Florian; !2347, !2359] * Fix edge case where windows stay dimmed after a modal is closed [Jonas D.; !2349] * Improve Belgian on-screen keyboard layout [Evert; !2336] * Fix fallback ibus-daemon launching [oreo639; !2345] * Make sure screenshot UI opens above dialogs [Alynx; !2331] * Use EventEmitter class instead of injecting Signal methods [Evan; !2043] * Plugged leak [Sebastian; !2367] * Misc. bug fixes and cleanups [Florian, Jonas D., Jonas Å., Sebastian, Evan, Marco; !2295, !2296, !2297, !2306, !2317, !2316, !2319, !2325, !2337, !2355, !2351, !2293, !2365, !2366, !697, !2363, !2362, !2372] Contributors: Marco Trevisan (Treviño), Jonas Dreßler, Olivier Fourdan, Carlos Garnacho, Christian Glombek, Maksym Hazevych, Sam Hewitt, Sebastian Keller, Florian Müllner, PhilProg, Evert Provoost, Jakub Steiner, Sam Uong, Evan Welsh, Alynx Zhou, msizanoen1, oreo639, Jonas Ådahl Translators: Jordi Mas [ca], Cheng-Chia Tseng [zh_TW], Charles Monzat [fr], Changwoo Ryu [ko], Daniel Rusek [cs], Aleksandr Melman [ru], Christian Kirbach [de], Yuri Chornoivan [uk], Emin Tufan Çetin [tr], Danial Behzadi [fa], Hugo Carvalho [pt], Luming Zh [zh_CN], Quentin PAGÈS [oc], Yosef Or Boczko [he], Fabio Tomat [fur], Irénée THIRION [fr], Jürgen Benvenuti [de], Milo Casagrande [it], Aurimas Černius [lt], Daniel Mustieles [es], Vojtěch Perník [cs] 42.1 ==== * Limit unfullscreen gesture to not interfere with overview [Ivan; !2227] * Properly hide the second (real) cursor when magnified [Jonas; !2234] * Fix various style glitches [Sam; !2215, !2277] * Fix creating default application folders [Adam; !2242] * Fix switching monitor configuration [Florian; !2245] * Add Home/End keynav in app grid [Anupam; !2241] * Handle monitor changes during startup animation [13r0ck; !2144] * Fix fractional timezone offsets in world clock [Raghuveer; !2255] * Default to right text-align in RTL locales [Florian; !2247] * calendar: Fix alignment of world clocks header in RTL [Yosef; !2240] * Rely on symbolic icons instead of 'HighContrast' icon theme [Jakub; !2243] * Fix moving windows from secondary monitor to non-active workspace [Florian; !2259] * Make sure startup animation completes [Florian; !2269] * Fix Swiss on-screen keyboard layouts [Florian; !2273] * Add Austrian-German on-screen keyboard layout [Florian; !2274] * Fix on-screen keyboard in modal dialogs and lock screen [Jonas; !2263] * Fix menus in pad OSD [Carlos; !2279] * Sync default colors with libadwaita [Jakub; !2280] * Fix grab regressions when entering overview [Carlos, Sebastian; !2281, !2287] * Scale calendar with text size [Jonas; !2282] * Allow more intermediate icon sizes in app grid [Sebastian; !2289] * Fixed crash [Jonas D.; !2231] * Plugged memory leak [Sebastian; !2256] * Misc. bug fixes and cleanups [Jonas, Florian, Sebastian, Daniel, Marco, Simon; !2283, !2285, !2286, !2233, !2236, !2244, !2246, !2258, !2257, !2252, !2261, !2268, !2272, !2271, !2275] Contributors: Marco Trevisan (Treviño), 13r0ck, Yosef Or Boczko, Jonas Dreßler, Carlos Garnacho, Sam Hewitt, Zurab Kargareteli, Raghuveer Kasaraneni, Sebastian Keller, Anupam Kumar, Simon McVittie, Ivan Molodetskikh, Florian Müllner, Jakub Steiner, Daniel van Vugt, Adam Williamson Translators: Balázs Úr [hu], Goran Vidović [hr], Charles Monzat [fr], Jiri Grönroos [fi], Milo Casagrande [it], Jordi Mas [ca], Yuri Chornoivan [uk], Fran Dieguez [gl], Marek Černocký [cs], Emin Tufan Çetin [tr], Alexander Shopov [bg], Hugo Carvalho [pt], Piotr Drąg [pl], Anders Jonsson [sv], Matej Urbančič [sl], Aurimas Černius [lt], Dušan Kazik [sk], Matheus Barbosa [pt_BR], Bruce Cowan [en_GB], Rūdolfs Mazurs [lv], Nathan Follens [nl], Марко Костић [sr], Aleksandr Melman [ru], Quentin PAGÈS [oc], Andika Triwidada [id], Danial Behzadi [fa], Ngọc Quân Trần [vi], Yaron Shahrabani [he], Daniel Mustieles [es], Gun Chleoc [gd], Changwoo Ryu [ko], Fabio Tomat [fur], Ask Hjorth Larsen [da], Yosef Or Boczko [he], Sveinn í Felli [is], Zurab Kargareteli [ka], Olexander [uk] 42.0 ==== * introspect: Add WindowsChanged signal [Cenk; !2229] * Fix on-screen keyboard during grabs [Carlos; !2237] * Fixed crash [Adam; !2238] Contributors: Carlos Garnacho, Cenk Uluisik, Adam Williamson Translators: Fabio Tomat [fur], Tim Sabsch [de], Ivan Molodetskikh [ru], Yosef Or Boczko [he], Марко Костић [sr], Baurzhan Muftakhidinov [kk], 純 小山田 [ja], sicklylife [ja] 42.rc ===== * Fix programatically set scrollview fade [Jonas D.; !2189] * Fix overview DND during screencasts [Ivan; !2192] * Fix taking screenshots with shift+PrntScrn [Ivan; !2202] * Disable workspace switching while in search [Sebastian; !2204] * Fix opening device settings for enterprise WPA networks [Xiaoguang; !2194] * Switch workspaces with Home and End keys in overview [kyte; !2201] * Fix regressions from style refresh [Sam; !2206, !2185, !2212] * Show disabled icons in system menu when devices are disabled [Jonas D.; !2198] * Fix inserting items from object inspector in looking glass [Florian; !2218] * Fix drag placeholder position in dash in RTL locales [Florian; !2219] * Simplify signal handling with (dis)connectObject() convenience methods [Florian; !1953, !2221, !2226] * Ensure remote access indicator is shown for a minimum time [Jonas Å.; !2132] * Improve CSS shadow appearance [Daniel; !1918] * Ignore work area in overview layout [Florian; !2223] * Fix glitches in overview transition [Jonas D., Sebastian; !2203, !1980] * Fixed crash [Florian; !2207] * Misc. bug fixes and cleanups [Jonas D., Björn, Florian, Carlos, Jonas Å.; !2191, !2188, !2195, !2196, !2184, !2183, !2200, !2209, !2211, !2214, !2216, !2110, !2222, !2220, !2225] Contributors: Björn Daase, Jonas Dreßler, Carlos Garnacho, Sam Hewitt, Sebastian Keller, Ivan Molodetskikh, Florian Müllner, Daniel van Vugt, Xiaoguang Wang, kyte, Jonas Ådahl Translators: Jordi Mas [ca], Quentin PAGÈS [oc], Asier Sarasua Garmendia [eu], Kukuh Syafaat [id], Emin Tufan Çetin [tr], Changwoo Ryu [ko], Danial Behzadi [fa], Aurimas Černius [lt], Daniel Mustieles [es], Dušan Kazik [sk], Alan Mortensen [da], Goran Vidović [hr], Jiri Grönroos [fi], Luna Jernberg [sv], Piotr Drąg [pl] 42.beta ======= * Add Swiss French and Swiss German OSK layouts [Jürg; !2096] * Add switches for debug flags to looking glass [Sebastian; !1994] * Support auth lists on the login screen [Ray; !1978] * Overhaul shell stylesheet [Sam; !2104, !2111, !2150, !2161, !2172] * Fix timing issue on login screen [Naïm; !2116] * Fix activating apps with tracked OR windows [Florian; !2131] * Fix banding issues with the vignette lightbox shader [Jonas; !2133] * Implement in-shell screenshot and screencast UI [Ivan; !1954, !2103, !2149, !2147, !2106, !2105, !2107, !2163] * Fix keyboard navigation to windows/apps in overview [Florian; !2124] * Adjust to Clutter grab API changes [Carlos; !2045, !2046, !2140] * Fix stuck transition when using super-scroll gesture [kyte; !2135] * Support the new 'high-contrast' setting [Alexander, Florian; !2069] * Remove rounded top bar corners [Florian; !2151] * Fix calendar events with custom timezone [Milan; !2145] * Support dark wallpapers [Alexander; !2137] * Improve terminology for pinning icons to dash [Rachit; !2136] * Use libadwaita for extension preferences [Florian; !2012] * Fix out-of-sync location indicator [Florian; !2170] * Fade screen when switching between dark/light mode [Alexander; !2070] * Improve presentation of multi-day events in calendar [Björn; !2108] * Implement Extensions redesign [Romain; !2114] * Implement OSD redesign [Florian; !2127] * Misc. bug fixes and cleanups [Florian, Evan, Jonas, Aleksandr, Ivan, Georges, Leleat, Daniel, Carlos, Sam, Olivier, Bastien, Mohammed, Sebastian, Razze, Alexander, Marek; !2089, !2040, !2097, !2047, !2102, !2118, !2123, !2121, !2115, !2113, !2125, !337, !2098, !2126, !2139, !2138, !2143, !2146, !2155, !2141, !2157, !2158, !2153, !2156, !2152, !2117, !2101, !2162, !2164, !2055, !2165, !2166, !2168, !2169, !1972, !2174, !2175, !2171, !2173, !2160, !2167, !2176, !2177, !2178, !1744, !2179, !2099] Contributors: Milan Crha, Björn Daase, Rachit Keerti Das, Jonas Dreßler, Naïm Favier, Olivier Fourdan, Carlos Garnacho, Sam Hewitt, Sebastian Keller, Leleat, Jürg Lempen, Aleksandr Mezin, Alexander Mikhaylenko, Ivan Molodetskikh, Florian Müllner, Georges Basile Stavracas Neto, Bastien Nocera, Razze, Mohammed Sadiq, Ray Strode, Romain Vigier, Daniel van Vugt, Evan Welsh, Sebastian Wick, kyte, Marek Černocký Translators: Tao Liu [zh_CN], Yosef Or Boczko [he], Matej Urbančič [sl], Yuri Chornoivan [uk], Daniel Mustieles [es], Aleksandr Melman [ru], Rafael Fontenelle [pt_BR], Sveinn í Felli [is], Matheus Barbosa [pt_BR], Luming Zh [zh_CN], Fran Dieguez [gl], sicklylife [ja], Hugo Carvalho [pt], Quentin PAGÈS [oc], Yaron Shahrabani [he], Asier Sarasua Garmendia [eu], Aurimas Černius [lt], Kukuh Syafaat [id], Marek Černocký [cs], Leônidas Araújo [pt_BR], Alexander Shopov [bg] 42.alpha ======== * Fix icon updates while hidden [Marco; !1983] * Fix erratic scrolling in GTK apps [Christian, Carlos; !1993, !2011] * Fix GTK color picker support [Florian; !1990] * Fix sound-file support in notifications [Florian; !1991] * Fix high-contrast switches [Florian; !2000] * Allow extensions to opt-in to running on lock/login screen [Ray; !1967] * magnifier: Avoid offscreen rendering if possible [Sebastian; !2026] * Warn when unsafe-mode is toggled [Florian; !2050] * Improve handling of all-day/zero-length events in calendar [Sebastian; !2023] * Keep keyboard focus in notification list after deleting message [Dylan; !2053] * switchMonitor: Don't include builtin/external modes on desktops [Jonas; !2056] * Fix wrongly rejected D-Bus calls after gnome-shell restarts [Sebastian; !2048] * Improve window tracking [Florian; [Florian; !2029] * Simplify scroll fade shader to work with old hardware [Sebastian; !2072] * Tweak (un)minimize animations [Daniel; !2066] * Properly handle markup when highlighting search terms [Sebastian; !2033] * Don't wake up screen in DND mode [kyte; !2051] * Port to GWeather 4.0 [Florian; !2083] * extensions-app: Use libadwaita [Romain, Florian; !1997] * Fix immediately withdrawn notifications getting stuck [Sebastian; !2079] * Honor XDG SingleMainWindow key in .desktop files [Nate; !2084] * Opt-in to unique GType names in extension prefs [Florian; !2024] * Don't terminate remote sessions in headless mode [Joan; !2057] * Fixed crashes [Ray, Sebastian, Benjamin, Florian; !2004, !2014, !2025, !2065, !2073] * Misc. bug fixes and cleanups [Jonas, Florian, Jakub, Ray, Carlos, Sebastian, Georges, Evan, Sergio, Emily, Robert; !1985, !1998, !1996, !1999, !1979, !2007, !2010, !2013, !2021, !2027, !2015, !2030, !2039, !2036, !2038, !2041, !2034, !1992, !2059, !2054, !2068, !2076, !2077, !2078, !2081, !2082, !2031, !2042, !2086, !2087, !2085, !2088] Contributors: Marco Trevisan (Treviño), Benjamin Berg, Sergio Costas, Carlos Garnacho, Emily Gonyer, Nate Graham, Christian Hergert, Sebastian Keller, Robert Mader, Dylan McCall, Florian Müllner, Georges Basile Stavracas Neto, Jakub Steiner, Ray Strode, Joan Torres, Romain Vigier, Daniel van Vugt, Evan Welsh, kyte, Jonas Ådahl Translators: Марко Костић [sr], Ngọc Quân Trần [vi], Emin Tufan Çetin [tr], Yaron Shahrabani [he], Sveinn í Felli [is], Goran Vidović [hr], Marek Černocký [cs], Selyan Slimane AMIRI [kab], Rūdolfs Mazurs [lv], eshagh shahidani [fa], Yuri Chornoivan [uk], Anders Jonsson [sv], Rafael Fontenelle [pt_BR], Kukuh Syafaat [id], Christian Kirbach [de], Piotr Drąg [pl], Dušan Kazik [sk], Charles Monzat [fr], Fabio Tomat [fur], Quentin PAGÈS [oc], Hugo Carvalho [pt], Milo Casagrande [it], Daniel Mustieles [es], MohammadSaleh Kamyab [fa], Aurimas Černius [lt], Aleksandr Melman [ru], Fran Dieguez [gl], Мирослав Николић [sr], Danial Behzadi [fa] 41.0 ==== Translators: Goran Vidović [hr], Jordi Mas [ca], Aman Alam [pa], Balázs Úr [hu], Piotr Drąg [pl], Nathan Follens [nl], Quentin PAGÈS [oc], Jiri Grönroos [fi], Alexander Shopov [bg], Alan Mortensen [da], Efstathios Iosifidis [el] 41.rc.1 ======= * Make tests optional [Florian; !1975] * Misc. bug fixes [Florian; !1974] Contributors: Florian Müllner Translators: Daniel Șerbănescu [ro] 41.rc ===== * Optimize rendering of fullscreen zoom [Daniel; !1899] * Fix glitchy launch animations when leaving overview [Daniel; !1440] * Show low priority notifications only in message list [Florian; #4265] * Support Soup 3 instead of 2.4 [Florian; !1940, !1966] * Set log domain for extensions that use console.log() [Evan; !1958] * Fix wrong separator position in dash [Raghuveer; !1804] * Fix OSK not registering button presses on X11 [Sebastian; !1955] * Fix work area getting messed up by hidden panels [Florian; #4569] * Fix IM candidate popover position [Florian; #4593] * Restrict callers of private D-Bus APIs [Florian; !1970] * Support committing preedit string on focus loss [Carlos; !1929] * Misc. bug fixes and cleanups [Florian, Ivan, Sebastian, José, Robert; !1956, !1949, !1937, !1961, !1962, !1871, !1964, !1946, !1957, !1959, !1879, !1968] Contributors: José Expósito, Carlos Garnacho, Raghuveer Kasaraneni, Sebastian Keller, Robert Mader, Ivan Molodetskikh, Florian Müllner, Daniel van Vugt, Evan Welsh Translators: Yuri Chornoivan [uk], Quentin PAGÈS [oc], Asier Sarasua Garmendia [eu], Hugo Carvalho [pt], Rafael Fontenelle [pt_BR], Jordi Mas [ca], Alexey Rubtsov [ru], Danial Behzadi [fa], Kukuh Syafaat [id], Marek Černocký [cs], Fran Dieguez [gl], Daniel Mustieles [es], Źmicier Turok [be], Jiri Grönroos [fi], Emin Tufan Çetin [tr], Baurzhan Muftakhidinov [kk], Bruce Cowan [en_GB], Philipp Kiemle [de], Matej Urbančič [sl], Dušan Kazik [sk], Charles Monzat [fr], Luna Jernberg [sv], Aurimas Černius [lt], Boyuan Yang [zh_CN], Changwoo Ryu [ko] 41.beta ======= * Unbreak Xwayland apps when not using systemd in user session [Olivier; !1850] * extension-tool: Always print location on successful creation [Leleat; !1856] * Fix distributed man pages [Florian; !1859] * Immediately start app grid drags for non-touch devices [Georges; !1866] * Avoid unnecessary icon shadow changes [Daniel; !1869] * Handle screencast failures more gracefully [Florian; !1878] * Fix glitch in app grid → session transition [Harshad; !1886] * Use symbolic icons in looking glass toolbar [Chris; !1671] * Fix IM popup visibility when in fullscreen [Florian; !1900] * magnifier: Fix view jumps when using caret tracking [Lee; !1823] * Fix shadow rendering glitches [Daniel; !1897] * Allow overriding super+number shortcuts in Settings [Florian; #1250] * Fix vertical scrollbars in RTL locales [Florian; !1910] * Don't include hidden search results in keynav [Florian; #4470] * Use anaccelerated deltas in swipe tracker [Alexander; !1763] * status/network: Do not disable on login screen [Florian; !1874] * Always take workarea into account when allocating workspaces [Marco; !1892] * location: Split out geoclue agent from indicator [Ian; !1919] * Add focus indication for switches [vanadiae; !1920] * Honor switch-user lockdown settings in unlock screen [Ray; !1833] * Fix glitch when dragging window preview in overview [Sebastian; #4292] * Lock down "Show Text" in password entries [Ray; !687] * Add power mode selection to status menu [Florian; !1907] * workspace: Handle skip-taskbar changes [Daniel; !1925] * status/network: Use WWan settings panel for GSM/LTE modems [Mohammed; !1942] * extensionUtils: Add gettext convenience helpers [Florian; !1941] * screenShield: Fix suspend inhibitor accounting [Sebastian; !1927, !1952] * Unify app context menus [Florian; !1948] * Use consistent terminology in window menu [nitinosiris; !1834] * Fixed crashes [Gustavo, Florian; !1848, !1885, !1935] * Misc. bug fixes and cleanups [Jonas Å., Florian, Georges, Daniel, Olivier, Carlos, Robert, Sebastian, Jakub, Jonas D., Fionn; !1838, !1854, !1860, !1872, !1876, !1880, !1888, !1890, !1891, !1894, !1902, !1901, !1903, !1841, !1904, !1786, !1906, !1909, !1908, !1840, !1913, !1917, !1914, !1857, !1922, !1924, !1931, !1926, !953, !1932, !1939, !1938, !1944, !1936, !1947, !1945, !1950] Contributors: Marco Trevisan (Treviño), Jonas Dreßler, Olivier Fourdan, Carlos Garnacho, Harshad Gavali, Tjipke van der Heide, Fionn Kelleher, Sebastian Keller, Lee, Leleat, Robert Mader, Chris Mayo, Alexander Mikhaylenko, Florian Müllner, Georges Basile Stavracas Neto, nitinosiris, Mohammed Sadiq, Ian Douglas Scott, Gustavo Noronha Silva, Jakub Steiner, Ray Strode, Daniel van Vugt, vanadiae, Jonas Ådahl Translators: Quentin PAGÈS [oc], Cheng-Chia Tseng [zh_TW], Jordi Mas [ca], Hugo Carvalho [pt], Julia Dronova [ru], Efstathios Iosifidis [el], Alexander Shopov [bg], Florentina Mușat [ro], Yuri Chornoivan [uk], Alexey Rubtsov [ru], Rafael Fontenelle [pt_BR], Yaron Shahrabani [he], Daniel Mustieles [es], Matej Urbančič [sl], Danial Behzadi [fa], Kukuh Syafaat [id], Fran Dieguez [gl], Boyuan Yang [zh_CN], Fabio Tomat [fur], Tjipke van der Heide [fy], Emin Tufan Çetin [tr], Luna Jernberg [sv], Daniel Șerbănescu [ro] 40.1 ==== * Fix keyboard preview for IM that use 'default' layout [Peng; !1756] * extensions: Fix copying technical details on prefs crash [Jan; !1795, !1796] * Make window previews as large as possible [Jonas D.; !1670, !1813] * Fix PgUp/PgDown handling in overview [Florian; !1798] * Fix scroll view following keyboard focus [Andrew; !1802] * Fix word suggestions in on-screen keyboard [Jia; !1806] * Support animated backgrounds set via the wallpaper portal [Alexander; !1816] * Fix freeze after cancelling (some) system-modal dialogs [Florian; !1819] * Support double-super when animations are disabled [Florian; !1811] * gdm: Allow timed login with disabled user list [Ray; !1809] * status: Report real battery percentage when full [Prajna; !1787] * Allow tap-drag-release to select variants in OSK [Carlos; !1789] * Fix password authentication after fingerprint failure [Ray, Benjamin; !1821] * Fix screen blanking on idle [Florian; !1824] * Fix oversized system action icons in search [Sebastian; !1777] * Only show 'Open Windows' in app menus if there are multiple [Leleat; !1827] * Fix duplicated workspaces in minimap [Sebastian; !1828] * Fix repeated letters in type-to-find overview search [Sebastian; !1828] * Improve workspace placeholder in overview minimap [Joonas; !1801] * screencasts: Improve default gstreamer pipeline [Jonas D.; !1633] * Leave overview when activating app via shortcut [Nishal; !1839] * Fix invisible scroll bars in faded views [Florian; !1831] * Correct arrow navigation in alt-tab switcher in RTL locales [Leleat; !1835] * Improve touch interaction of app grid actions [Carlos; !1774] * Fixed crashes [Jonas Å., Sebastian; !1810, !1817] * Misc. bug fixes and cleanups [Carlos, Yuri, Sebastian, Suryashankar, Zander, arushsharma24, Florian, Georges, Jonas D., Frederic, Leleat, Jakub, theRealPadster, Simon, Olivier; !1770, !1781, !1782, !1775, !1769, !1791, !1764, !1793, !1799, !1805, !1484, !1815, !1820, !1807, !1825, !1822, !1800, !1818, !1830, !1790, !1812, !1771, !1844, !1845, !1837, !1842] Contributors: Jonas Ådahl, arushsharma24, Benjamin Berg, Zander Brown, Jia Chao, Frederic Crozat, Suryashankar Das, Jonas Dreßler, Olivier Fourdan, Carlos Garnacho, Joonas Henriksson, Sebastian Keller, Yuri Konotopov, Nishal Kulkarni, Leleat, Alexander Mikhaylenko, Florian Müllner, Georges Basile Stavracas Neto, Prajna Sariputra, Simon Schneegans, Jakub Steiner, Ray Strode, theRealPadster, Jan Tojnar, Peng Wu, Andrew Zaech Translators: Timo Jyrinki [fi], Boyuan Yang [zh_CN], Hannie Dumoleyn [nl], Dz Chen [zh_CN], Ngọc Quân Trần [vi], Hugo Carvalho [pt], Yosef Or Boczko [he], Yaron Shahrabani [he], Nathan Follens [nl], Cédric Valmary [oc], Carmen Bianca BAKKER [eo], Emin Tufan Çetin [tr], Dušan Kazik [sk], Stas Solovey [ru], Pawan Chitrakar [ne], Jordi Mas [ca], Quentin PAGÈS [oc] 40.0 ==== Translators: Zander Brown [en_GB], Dušan Kazik [sk] 40.rc ===== * Define default app grid arrangement [Allan; !1700] * Fix shading behind system modal dialogs [Florian; !1712] * Only show logout-inhibiting apps in end-session dialog [Michael; !1424] * Fix minimap previews on multi-monitor systems [Florian; !1721] * Drop strict extension version match for unstable releases [Florian; !1719] * Fix missing app menu after overview gesture [Florian; !1726] * Improve app folder appearance [Jakub; !1714] * Fix window previews becoming undraggable after workspace switch [Sebastian; !1717] * Fix dragging icons to a different page in RTL locales [Carlos; !1734] * Support double super for opening app grid [Florian; !1736] * Improve workspace handling on secondary monitors [Florian; !1735] * Improve interaction when dragging between app grid pages [Carlos; !1630] * Fix launching on requested workspace on wayland [Florian; !1316] * Make wifi strength indicator consistent with icons in Settings [Remi; !1432] * Start session in overview [Georges; !1678] * Tweak window preview layout in overview [Jonas D.; !1702, !1737] * Improve overview performance [Jonas D.; !1713, !1733, !1743, !1755] * Fix new workspaces being invisible in minimap [Florian; !1716] * Fix glitch after dragging window preview from second monitor [Ivan; !1727] * Do not switch workspaces when scrolling during super-tab [Florian; !1746] * Make OSK shifting up windows more reliable [Jonas D.; !1728, !1760] * Fix swipe gesture glitches [Alexander; !1731] * Fix mis-scaled preview icons in window picker [Sebastian; !1751] * Fix unintended app grid changes during icon DND in dash [Sebastian; !1767] * Fix missing X11 fallback icons [Florian; !1761] * Fixed crashes [Sebastian; !1718] * Misc. bug fixes and cleanups [Jonas Å., Sebastian, Abderrahim, Florian, Alexander, Felix, Ivan, Jonas D., Jakub, Daniel; !1710, !1707, !1720, !1722, !1724, !1732, !1246, !1738, !1740] !1742, !1741, !1745, !1748, !1749, !1765, !1766, !1757, !1758] Contributors: Jonas Ådahl, arushsharma24, Allan Day, Felix Divo, Jonas Dreßler, Carlos Garnacho, Sebastian Keller, Abderrahim Kitouni, Alexander Mikhaylenko, Ivan Molodetskikh, Florian Müllner, Georges Basile Stavracas Neto, Remi Salmon, Jakub Steiner, Michael Terry, Daniel van Vugt Translators: Fran Dieguez [gl], Balázs Meskó [hu], Baurzhan Muftakhidinov [kk], Goran Vidović [hr], Christian Kirbach [de], Марко Костић [sr], Asier Sarasua Garmendia [eu], Guillaume Bernard [fr], Tim Sabsch [de], Philipp Kiemle [de], Danial Behzadi [fa], Piotr Drąg [pl], Rūdolfs Mazurs [lv], Daniel Mustieles [es], Marek Černocký [cs], Fabio Tomat [fur], Changwoo Ryu [ko], Kjartan Maraas [nb], A S Alam [pa], Milo Casagrande [it] 40.beta ======= * Overview redesign - Move dash to the bottom [Georges, Abderrahim, Jakub; !1559] - Do not duplicate dash icons in app grid [Florian; !1580] - Separate favorites from running apps in dash [Florian; !1606, !1610, !1659] - Change to a horizontal workspace layout [Georges; !1593, !1603] - Move background to workspaces [Georges, Florian, Jakub; !1599] - Overhaul window preview style [Florian, Jakub; !1605, !1654, !1657] - Rework workspace switching animation [Alexander; !1326] - Show workspace side-by-side [Georges; !1613] - Allow switching workspaces with super+scroll on wayland [Florian; !1612] - Allow swiping through more than one workspace at a time [Alexander; !1647] - Extend active dash area to the screen edge [Florian; !1660] - Change overall overview layout [Georges, Florian; !1624] - Refine workspace activation in overview [Georges; !1645] - Add vertical swipe gesture to shift through overview [Carlos; !1643] - Add shortcuts for shifting through overview [Florian; !1695] - Round background corners in overview [Jonas D.; !1651, !1697] - Hide workspace minimap when using less than two workspaces [Florian; !1696] - Scale down backgrounds in window picker [Georges; !1691] - Minor improvements and bug fixes [Florian, Abderrahim, Georges, Sebastian, Jakub, Pascal, Jonas D.; !1594, !1609, !1608, !1620, !1629, !1625, !1634, !1640, #3669, !1636, !1655, !1656, !1665, !1667, !1638, !1680, !1682, !1684, !1681, !1687, !1693, !1694, !1692] * Fix glitch in app folder icons on smaller displays [Sebastian; !1581] * Remove arrows from top bar menus [Doan, Florian, Razze; !1583, !1618, !1615] * Fix stuck grab after failed area screenshots [Sebastian; !1600] * Prefer image-data hint over app-icon in notifications [Guilherme; !1616] * Fix drag actor position when animations are turned off [Sebastian; !1627] * Improve spacing in MPRIS notifications with small text [Sebastian; !1632] * Add Welcome dialog after major updates [Bastien; !1619] * Do not save empty commands in run dialog history [Lucas; !1442, !1653] * Consider device type for fingerprint hint on login screen [Razze; !1572] * Add tooltip to Extensions app to view unellipsized description [Leleat; !1663] * Fix stuck polkit dialog when using non-password auth [Florian; !1662] * Provide screenshot feedback (flash, shutter) before writing file to disk [Brion, Jonas; !1658] * Improve Thai layout in on-screen keyboard [Panawat; !1427] * Improve error handling for fingerprint auth [Marco; !1652] * Handle a large number of window previews more gracefully [Sebastian; !1685] * Follow swipe gesture when bringing up on-screen keyboard [Carlos; !1668] * Disable out-of-date extensions by default (again) [Evan; !1706] * Fixed crashes [Jonas D., Carlos; !1673, !1672] * Misc. bug fixes and cleanups [Florian, Sebastian, Razze, Georges, Daniel, Robert, Jonas D., Jonas Å., Marco, Bastien, TerraAr, Carlos; !1575, !1579, !1577, !1578, !1585, !1587, !1588, !1590, !1591, !1592, !1595, !1596, !1597, !1598, !1582, !1589, !1617, !1611, !1637, !1635, !1641, !1646, !1546, !1648, !1650, !1649, !1644, !1661, !1622, !1075, !1674, !1556, !1686, !1683, !1688, !1699, !1698, !1701, !1709] Contributors: Jonas Ådahl, Jonas Dreßler, Carlos Garnacho, Sebastian Keller, Abderrahim Kitouni, Leleat, Robert Mader, Alexander Mikhaylenko, Florian Müllner, Georges Basile Stavracas Neto, Bastien Nocera, Pascal Nowack, Razze, Guilherme Silva, Jakub Steiner, TerraAr, Marco Trevisan (Treviño), Brion Vibber, Doan Nam Long Vu, Daniel van Vugt, Evan Welsh, Lucas Werkmeister, Panawat Wong-kleaw Translators: Balázs Úr [hu], Danial Behzadi [fa], Rafael Fontenelle [pt_BR], A S Alam [pa], Anders Jonsson [sv], Yuri Chornoivan [uk], Marek Černocký [cs], Hugo Carvalho [pt], Fran Dieguez [gl], Daniel Șerbănescu [ro], Florentina Mușat [ro], Daniel Mustieles [es], Jordi Mas [ca], Matej Urbančič [sl], Kukuh Syafaat [id], Bruno Lopes da Silva [pt_BR], Аляксей [be], Balázs Meskó [hu], Марко Костић [sr], Enrico Nicoletto [pt_BR], Emin Tufan Çetin [tr], Jiri Grönroos [fi], Aurimas Černius [lt] 40.alpha.1.1 ============ * Adapt to settings moving to gsettings-desktop-schemas [Florian; !1573] * Misc. bug fixes [Georges, Florian; !1571, !1574] Contributors: Florian Müllner, Georges Basile Stavracas Neto Translators: Марко Костић [sr], Marek Černocký [cs], Fabio Tomat [fur] 40.alpha.1 ========== * Restore app picker fade during swipes [Georges, Florian; !1519, !1569] * Sort extensions in Looking Glass alphabetically [Florijan; !1516] * Fix screenshots of unredirected fullscreen windows on X11 [Jonas Å., LuK1337; !1534, !1549] * Use GPU to render (most) shadows [Georges; !1539] * Refine avatar styling [Joonas; !1490] * Fix storing VPN secrets [Sebastian; !1535] * Don't depend on asciidoc and sassc when building from tarball [Florian; !1553, !1555] * Use horizontal pages in app picker [Georges; !1554] * Avoid costly icon theme lookups unless when needed [Ivan; !1558] * Properly expose locked state to logind [Florian; !1561] * Use 3 fingers for system swipe gestures [Georges; !1562] * Fix glitches in overview transitions [Jonas Å., Ivan; !1545, !1550] * Improve login screen accessibility [Mike; !1567] * Overhaul top bar styling [Jonas D.; !1397] * Allow changing input volume by scrolling over microphone icon [Razze; !1566] * Port Extensions app and portal to GTK4 [Florian; !1495] * Fixed crashes [Jonas Å.; !1527] * Misc. bug fixes and cleanups [Georges, Florian, Tom, Hans, Jonas D., Ivan, Sebastian, Daniel; !1518, !1521, !1523, !1525, !1520, !1526, !1472, !1339, !1529, !1531, !1532, !1533, !1528, !1350] !1542, !1537, !1548, !1551, !1557, !1543, !1560, !1544, !1565] Contributors: Jonas Ådahl, Jonas Dreßler, Mike Gerow, Florijan Hamzic, Joonas Henriksson, Sebastian Keller, Tom Levy, LuK1337, Ivan Molodetskikh, Florian Müllner, Georges Basile Stavracas Neto, Hans Ulrich Niedermann, Razze, Daniel van Vugt Translators: Florentina Mușat [ro], Fabio Tomat [fur], Hugo Carvalho [pt], Jordi Mas i Hernandez [ca], Philipp Kiemle [de], Fran Dieguez [gl], Jordi Mas [ca], Kukuh Syafaat [id], Kjartan Maraas [nb], Daniel Șerbănescu [ro], Matej Urbančič [sl] 40.alpha ======== * Handle @content properties in ease() functions [Andre; !1461] * Fix screencast indicator on Xorg [Jonas Å.; !1466] * Expand ellipsized app picker labels on hover [Georges; !1477, !1496] * Fix inline-replies in chat notifications [Florian; #3226] * Refine MPRIS notification layout [Harry; !1480] * Improve do-not-disturb support [Florian; #2873, !1511] * Fix mobile broadband support [Popax21; #3203] * Add extension filtering in Extensions app [Florian; #3382] * Improve app picker spacing on larger resolutions [Georges; !1510] * Plugged leaks [Ray; !1460, !1459] * Fixed crashes [Daniel, Florian; !1453, #3258, !1507] * Misc. bug fixes and cleanups [Florian, Georges, Carlos, Joonas, Jan, Jonas Å., Robert, Jonas D., Ian, Daniel, Sebastian, Jordan; !1456, !1436, !1405, !1421, #3252, !1464, !1469, !1465, !1473, !1475, #3307, !1479, !1482, !1470, !1486, #3335, #3342, #3388, !1497, !1498, !1491, !1501, !1492, !1489, !1502, !1505, !1504, !1506, !1503, !1483, !1508, !1481, !1509, !1512, !1417, !1517] Contributors: Jonas Dreßler, Carlos Garnacho, Joonas Henriksson, Sebastian Keller, Robert Mader, Andre Moreira Magalhaes, Daniel García Moreno, Harry Míchal, Florian Müllner, Georges Basile Stavracas Neto, Jordan Petridis, Popax21, Ian Douglas Scott, Ray Strode, Jan Tojnar, Olav Vitters, Daniel van Vugt, Jonas Ådahl Translators: Juliano de Souza Camargo [pt], Fabio Tomat [fur], Akarshan Biswas [bn_IN], Carmen Bianca BAKKER [eo], Daniel Mustieles [es], Asier Sarasua Garmendia [eu], Ask Hjorth Larsen [da], Yuri Chornoivan [uk], Anders Jonsson [sv], Kjartan Maraas [nb] 3.38.1 ====== * Add screen recordings to recent items [Florian; #3171] * Tweak peek-password feature [Florian; #3138] * Fix workspace glitches in overview [Florian; #3208, #3211] * Improve DND behavior in app picker [Georges; !1447] * Misc. bug fixes and cleanups [Florian, Daniel, Georges, Bastien, Christopher, yun341, Carlos; #3169, !1434, !1441, !1444, !379, !1443, #2230, !1448, !1451, #3209] Contributors: Yacine Bouklif, Christopher Davis, Carlos Garnacho, Daniel García Moreno, Florian Müllner, Georges Basile Stavracas Neto, Bastien Nocera, yun341 Translators: Juliano de Souza Camargo [pt], Yacine Bouklif [kab], Charles Monzat [fr], Cheng-Chia Tseng [zh_TW], Yosef Or Boczko [he] 3.38.0 ====== * Misc. bug fixes and cleanups [Andy, Florian; #3147, !1438] Contributors: Andy Holmes, Florian Müllner Translators: Anders Jonsson [sv], Balázs Úr [hu], Dušan Kazik [sk], Alan Mortensen [da], Tim Sabsch [de], Claude Paroz [fr], Jiri Grönroos [fi], Juliano Camargo [pt], Milo Casagrande [it], Aron Xu [zh_CN], Rūdolfs Mazurs [lv] 3.37.92 ======= * Fix screen recorder shortcut [Florian; #3097] * Support cycle-group cycling only over windows in the workspac3 [Mitar; #3116] * Misc. bug fixes and cleanups [Georges, Daniel, Carlos; !1428, !1423, !1311, #2968] Contributors: Carlos Garnacho, Mitar, Florian Müllner, Georges Basile Stavracas Neto, Daniel van Vugt Translators: Yuri Chornoivan [uk], Zander Brown [en_GB], Rafael Fontenelle [pt_BR], Nathan Follens [nl], Danial Behzadi [fa], Kukuh Syafaat [id], Aurimas Černius [lt], Marek Černocký [cs], Fabio Tomat [fur], Changwoo Ryu [ko], Марко Костић [sr], Daniel Mustieles [es], Dušan Kazik [sk], Thibault Martin [fr], Jordi Mas [ca] 3.37.91 ======= * Fix potential stack overflow in libcroco [Michael; !1404] * Fix page removal in app picker [Georges; !1406] * Fix "old style" VPN authentication [Florian; !1407] * Fix X11 session login [Benjamin; !1418] * Fix week number alignment when using font-scaling [Joonas; !1415] * Fix lock screen on systems without GLSL shader support [Zephaniah; #3071] * Misc. bug fixes and cleanups [Florian, Jonas, Georges, Andre, Will, Björn; !1396, !1359, !1408, !1409, !1414, !1413, !1416, #3073] Contributors: Jonas Ådahl, Benjamin Berg, Michael Catanzaro, Björn Daase, Joonas Henriksson, Zephaniah E. Loss-Cutler-Hull, Andre Moreira Magalhaes, Florian Müllner, Georges Basile Stavracas Neto, Will Thompson Translators: Fran Dieguez [gl], Jordi Mas [ca], Daniel Mustieles [es], Florentina Mușat [ro], Akarshan Biswas [bn_IN], Baurzhan Muftakhidinov [kk], Piotr Drąg [pl], Rafael Fontenelle [pt_BR], Emin Tufan Çetin [tr], sicklylife [ja], Danial Behzadi [fa], Jiri Grönroos [fi], Goran Vidović [hr], Matej Urbančič [sl], Boyuan Yang [zh_CN] 3.37.90 ======= * Fix extension updates when many extensions are installed [Jeremias; !1363] * Fix missing icons in on-screen keyboard [Emre; #2631, #3007] * Fix delay when showing calendar events [Sebastian; #2992] * Allow rearranging items in app picker [Georges; !1284] * Fix top bar navigation when NumLock is active [Olivier; #550] * Delay login animation until wallpaper has loaded [Michael; #734996] * Reset auth prompt on login screen on VT switch before fade in [Ray; #2997] * Move screencasting into a separate service [Jonas Å.; !1372] * Replace loaded terms with more descriptive one [Olivier; !1393] * Add "Boot Options" support to restart dialog [Hans; !199] * Move "Restart" into a separate menu item/dialog [Florian; #2202] * Default to not installing updates on low battery [Michael; #2717] * Misc. bug fixes and cleanups [Florian, Daniel V., Georges, Jonas Å., Daniel G., Carlos, Benjamin, Piotr, Andre, Jonas D., Andy; !1357, !1356, #2969, #2969, !1358, !1371, #3005, !1380, #3022, !1381, !895, !1387, !1386, !1385, #3037, !1389, !1390, !1391, !1383, !1399, #2983, !1403] Contributors: Jonas Ådahl, Benjamin Berg, Michael Catanzaro, Piotr Drąg, Jonas Dreßler, Olivier Fourdan, Carlos Garnacho, Hans de Goede, Andy Holmes, Sebastian Keller, Andre Moreira Magalhaes, Daniel García Moreno, Florian Müllner, Georges Basile Stavracas Neto, Jeremias Ortega, Ray Strode, Emre Uyguroglu, Daniel van Vugt Translators: Tim Sabsch [de], Boyuan Yang [zh_CN], Fabio Tomat [fur], Efstathios Iosifidis [el], Rafael Fontenelle [pt_BR], Yuri Chornoivan [uk], Daniel Șerbănescu [ro], Jordi Mas [ca], Daniel Mustieles [es], Emin Tufan Çetin [tr], Asier Sarasua Garmendia [eu] 3.37.3 ====== * Refactor and clean up window picker [Jonas D., Florian; !1297, !1298, !1305, !1345, !1353] * Move calendar events out of notifications list [Florian; !1282] * Refine app folder dialogs [Georges; !1301] * Hide switch-user button on lock screen if unsupported [Chingkai; #2687] * Refactor and clean up app picker pagination [Georges; !1271] * Add API to retrieve specified mimetypes from clipboards [Carlos; !1321] * Support prepending workspace with horizontal layouts [Florian; #2916] * Update microphone icon on input volume changes [fludixx; #2902] * Cache labels on GPU [Daniel; !1329] * Fix regressions in redesigned modal dialogs [Florian, Jonas D.; #2491, !1336] * Use GIcon for all application icons [Florian; !1342] * Support pre-authenticated logins in vmware environments [yun341; #1983] * Better support sandboxed apps with multiple .desktop files [Florian; #219] * Fix on-screen keyboard size in portrait orientation [Florian; #2349] * Plugged leaks [Sebastian, Daniel, Florian; !1306, !1319, !1341] * Misc. bug fixes and cleanups [Jonas D., Georges, Marco, Florian, Sebastian, MOZGIII, Daniel, Mariana, Jonas Å.; !1296, !1295, #2643, !1300, !1309, !1119, #2901, !1313, !1251, !1285, !1307, !1318, !1310, !1320, !1327, !1315, !1289, !1331, !1332, !1333, !1334, !1340, !1287, !1308, !1346, !1299, !1343, !1351, !1352, !1322] Contributors: Marco Trevisan (Treviño), Chingkai, Jonas Dreßler, Carlos Garnacho, Sebastian Keller, MOZGIII, Florian Müllner, Georges Basile Stavracas Neto, Mariana Picolo, Daniel van Vugt, fludixx, yun341, Jonas Ådahl Translators: Daniel Mustieles [es], Boyuan Yang [zh_CN], Yuri Chornoivan [uk], Jordi Mas [ca], sicklylife [ja], Emin Tufan Çetin [tr], Baurzhan Muftakhidinov [kk], Florentina Mușat [ro], Aurimas Černius [lt], Rūdolfs Mazurs [lv] 3.37.2 ====== * Add support for "PrefersNonDefaultGPU" desktop key [Bastien; !1226] * Only start systemd units when running under systemd [Carlos, Florian; #2755, !1242, !1252] * Fix "ghost" media controls [Bryan; #2776] * Fix zombie sockets from extensions downloader [Michael; #2774] * Update world clocks offsets when timezone changes [Bryan; #2209] * Support scrolling anywhere in slider menu items [Peter; #2795] * Fix "Do Not Disturb" setting getting reset on startup [Florian; #2804] * Only allow updates for extensions that aren't cached [Florian; !1248] * Fix matching notifications by PID [Florian; #2592] * Indicate extension errors in Extensions app [Florian; #2337] * Add clipboard API for querying supported mimetypes [Andy; #2819] * Add preview to color picker [Florian; #451] * Improve world clocks styling [PrOF-kk; #2825] * Remove Frequent view from app picker [Georges; !880] * Fix pad OSD glitches [Carlos; !1290] * Expose actor tree in looking glass [Georges; !1292] * Fixed crashes [Jonas D., Florian; #2709, #2757] * Misc. bug fixes and cleanups [Florian, AsciiWolf, Michael, Piotr, Ting-Wei, Amr, Alexander, Bryan, Georges, Jonas D., Andy, Björn, Koki, Carlos; !1229, !1231, !1233, !1235, #2578, #2735, #2751, #2602, #2777, !1249, #2796, !1268, !1269, !1265, !1245, !1273, #2816, !1274, !1263, !1188, !1276, #2652, !1277, !1281, #2286, !1267, !1286, !1279, !1288, !1293, !1294, !1291] Contributors: AsciiWolf, Michael Catanzaro, Björn Daase, Jonas Dreßler, Bryan Dunsmore, Koki Fukuda, Carlos Garnacho, Andy Holmes, Amr Ibrahim, Soslan Khubulov, Ting-Wei Lan, Michael Lass, Alexander Mikhaylenko, Florian Müllner, Georges Basile Stavracas Neto, Bastien Nocera, PrOF-kk, Peter Simonyi Translators: Fabio Tomat [fur], Cheng-Chia Tseng [zh_TW], Yuri Chornoivan [uk], Dušan Kazik [sk], Piotr Drąg [pl], Soslan Khubulov [os], Daniel Mustieles [es], Nathan Follens [nl], Bruce Cowan [en_GB], Florentina Mușat [ro], Milo Casagrande [it], Anders Jonsson [sv], Charles Monzat [fr], Danial Behzadi [fa], sicklylife [ja], Kukuh Syafaat [id], Jordi Mas [ca], Emin Tufan Çetin [tr], Jiri Grönroos [fi], Марко Костић [sr], Christian Kirbach [de], Changwoo Ryu [ko], Matej Urbančič [sl] 3.37.1 ====== * Improve bluetooth submenu title [Mariana; #2340] * Add openPrefs() convenience method for extensions [Florian; !1163] * Bring back support for empty StIcons [Andre, Jonas D.; !1173, !1178] * Wake up screen when unlocking programmatically [Florian; !1158] * Improve extensions tool error reporting [Florian; #2391] * Improve handling of scale-factor changes [Georges; !1176] * Tone down weekend days with events in calendar [Jakub; #2588] * Fix showing bluetooth submenu when devices were set up [Florian; !1174] * Add support for parental controls filtering [Philip W.; !465] * Provide alternative extension templates [Florian; !812] * Improve weather section's empty state [Mariana; #2179] * Fix translations of folder names [Florian; #2623] * Drop Tweener [Jonas Å.; !1200] * Match ASCII alternatives of system actions [Will; #2688] * Fix delay on lock screen after entering wrong password [Jonas D.; #2655] * Use globalThis instead of window [Andy; #2322] * Inhibit remote access when disabled by session mode [Jonas Å.; !1210] * Improve calendar-server performance [Milan; #1875] * Add gnome-shell-extension-prefs wrapper for compatibility [Florian; !1220] * Fix stuck lock screen after unlock [Jonas D., Florian; #2446] * Fixed crashes [Jonas D., Florian, Carlos; #2584, #2625, !1223, !1218] * Misc. bug fixes and cleanups [Florian, Jonas Å., Marco, Andre, Georges, Jonas D., Jan, Philip Ch.,, Xiaoguang, Will, Jordan, Matthew, qarmin; !1126, !1155, !1156, !1165, !1168, !1169, #2551, #2563, !1172, !1175, !1179, !1160, #2562, #2578, !1184, #2559, !1186, #2607, !1191, !1194, !1199, !1203, #2649, #2628, !1205, !1206, !1208, !1207, !1211, !1214, !1213, !1192, !1217, !1219, #1615, #2691, !1094, !1177] Contributors: Marco Trevisan (Treviño), Philip Chimento, Milan Crha, Jonas Dreßler, Carlos Garnacho, Andy Holmes, Matthew Leeds, Andre Moreira Magalhaes, Florian Müllner, Georges Basile Stavracas Neto, Jordan Petridis, Mariana Picolo, Jakub Steiner, Will Thompson, Jan Tojnar, Xiaoguang Wang, Philip Withnall, qarmin, Jonas Ådahl Translators: Fabio Tomat [fur], Cheng-Chia Tseng [zh_TW], Danial Behzadi [fa], Jiri Grönroos [fi], Ibai Oihanguren Sala [eu], Марко Костић [sr], Rūdolfs Mazurs [lv], Yuri Chornoivan [uk], Carmen Bianca BAKKER [eo], Dingzhong Chen [zh_CN], Rafael Fontenelle [pt_BR], Petr Kovář [cs], Asier Sarasua Garmendia [eu], Daniel Mustieles [es], Emin Tufan Çetin [tr] 3.36.0 ====== * Fix off-by-1900 error in date conversions [Florian; !1061] * Fix crash on startup with topIcons* extension enabled [Florian; #2308] * Don't require gsd-xsettings for X11 support on wayland [Olivier; !1065] * Fix ibus support in Xorg session [Carlos; #1690] * Improve Extensions D-Bus API [Florian; !1074] * Allow session modes to specify alternative resource name [Marco; !1063] * Fix link to location settings in aggregate menu [Sebastian; #2316] * Fix illegible app folder titles with light theme [ub; !1059] * Really fix visual glitch in sliders [Jonas; #1569] Contributors: Marco Trevisan (Treviño), Jonas Dreßler, Olivier Fourdan, Carlos Garnacho, Sebastian Keller, Florian Müllner, ub Translators: Aman Alam [pa], Goran Vidović [hr], Aurimas Černius [lt], Milo Casagrande [it], Daniel Korostil [uk], sicklylife [ja], Marek Černocký [cs], Nathan Follens [nl] 3.35.92 ======= * Plug a memory leak [Jonas D.; !1015] * Fix missing "back" button on login screen [Florian; #2228] * Fix width of window preview titles in overview [Jonas D.; #58] * Fix looking glass text with light style variant [Feichtmeier; !1023] * Center unlock entry [Florian; !1021] * Hide overlay scrollbars in notification popup [Jonas D.; !1013] * Work around add_actor() slowness in icon spring animation [Daniel; !1002] * Add disable-animations heuristics [Jonas Å.; !757] * Fix visual glitches in on-screen keyboard [Carlos; #2214] * Fix clearing changed textures from cache [Florian; #2244] * Fix visual glitch in sliders [Daniel; #1569] * Stop using dedicated lock screen background [Florian; !1001] * Fix entries disappearing after authentication errors [Florian; #2236] * Fix crash when animations are disabled [Florian; #2255] * Fix passing pointer events to clients when magnified [Jonas D.; !993] * Fix keynav on new lock screen [Florian; #2210] * Avoid short-lived allocations on actor removal [Christian; #2263] * Fix super-sized default avatars in user list [Florian, Sam; #2242] * Leave overview when locking the screen [Jonas D.; !1043] * Hide message list on login screen [Florian; #2241] * Avoid IO on the main thread [Christian, Florian; !1050, !1051] * Fix window animations getting stuck when client doesn't respond [Jonas; !1055] * Only subscribe to touchpad events for touchpad gestures [Daniel; !925] * Start X11 session services before Xwayland clients [Carlos; !836, !1056] * Only show switch-user button with unlock prompt [Florian; !1029] * Misc. bug fixes and cleanups [Jonas D., Florian, Georges, Jonas Å., Daniel, Jakub, Philippe; !1018, !1020, !1024, !1027, !1026, !1022, !1031, !1035, !1032, !1025, !1039, #2157, !1037, !1042, !1047, !1048, #2270, !1046, !167, !1016] Contributors: Jonas Dreßler, Feichtmeier, Carlos Garnacho, Christian Hergert, Sam Hewitt, Florian Müllner, Georges Basile Stavracas Neto, Jakub Steiner, Philippe Troin, Daniel van Vugt, Jonas Ådahl Translators: Danial Behzadi [fa], Efstathios Iosifidis [el], Daniel Mustieles [es], Sabri Ünal [tr], sicklylife [ja], Piotr Drąg [pl], Jordi Mas [ca], Anders Jonsson [sv], Chao-Hsiung Liao [zh_TW], Asier Sarasua Garmendia [eu], Rafael Fontenelle [pt_BR], Марко Костић [sr], Changwoo Ryu [ko], Charles Monzat [fr], Jiri Grönroos [fi], Jor Teron [mjw], Bruce Cowan [en_GB], Emin Tufan Çetin [tr], Alan Mortensen [da], Balázs Úr [hu], Fran Dieguez [gl], Kukuh Syafaat [id] 3.35.91 ======= * Improve magnifier [Carlos; !984] * Only enable OSK automatically if touch-mode is enabled [Carlos; #872] * Merge screen shield and unlock dialog to new lock screen [Georges; !872] * Improve ShellBlur effect [Jonas; !991] * Adapt user avatar for new lock screen [Umang, Georges; !922] * Animate prompt transition on lock screen [Florian; !972] * Reduce font-size in dialog titles if text doesn't fit [Jonas; !1012] * Various lock screen improvements and bug fixes [Jakub, Florian, Georges; !996, !997, !999, #2212, !998, !1006, #2215, #2213] * Misc. bug fixes and cleanups [Daniel, Florian, Jakub, nana-4, Jonas; #2170, #2167, !936, !988, #2187, !994, !995, !938, #2194, #2203, !1004, !977, !1014] Contributors: Jonas Dreßler, Carlos Garnacho, Umang Jain, Daniel Mustieles, Florian Müllner, Georges Basile Stavracas Neto, Jakub Steiner, Daniel van Vugt, nana-4 Translators: Daniel Mustieles [es, pt_BR], Rafael Fontenelle [pt_BR], Danial Behzadi [fa], Anders Jonsson [sv], Asier Sarasua Garmendia [eu], Aurimas Černius [lt], Bruce Cowan [en_GB], sicklylife [ja], Fran Dieguez [gl], Kukuh Syafaat [id], Emin Tufan Çetin [tr], Jiri Grönroos [fi], Jordi Mas [ca], Claude Paroz [fr], Ask Hjorth Larsen [da], Марко Костић [sr], Piotr Drąg [pl], Charles Monzat [fr], Balázs Úr [hu] 3.35.90 ======= * Update default favorite apps [Michael; !907] * Add Shell.Blur effect [Georges; !864, !924] * Overhaul scroll/swipe gestures [Alexander; !821, !825, !826] * Fix VPN connections when delaying request [Florian; #2008] * Overhaul theme [Sam, Jakub, nana-4; !904, !931, !957] * Improve visual appearance of Weather integration [Florian; #1143] * Implement new system dialog designs [Jonas; #1343] * Animate position changes of app icons [Georges; !882] * Add St.Viewport [Georges; !929] * Make app folders behave as dialogs [Georges; !896] * Add do-not-disturb functionality to calendar popup [Florian; #239] * Show hint actor in focused entries [Jonas; !944] * Switch screen-recorder back to VP8 [Björn; #256] * Allow to run perf-tool as wayland compositor [Olivier; !941] * Handle extension updates [Florian; !945] * Animate showing and hiding caps-lock warning [Jonas; !952] * Support "auto" lengths in CSS [Florian; !971] * Turn extension-prefs into the official Extensions app [Florian; #1968] * Sandbox the portal helper [Michael; !983] * Misc. bug fixes and cleanups [Florian, Björn, Jakub, Alexander, Daniel V., Jonas, nana-4, Carlos, Sebastian, Daniel G., Georges, Piotr; !918, !917, !919, !920, #763, #791659, !927, #2091, !930, !926, !888, !934, !168, #2133, #682, #2142, #2131, !943, #2132, #1958, #2146, !951, #1779, #2130, !964, !965, !948, #2151, #1746, !967, !760, !968, !970, !973, #2169, #2176, !978, !980, !979, #2177, !981, #2180, !974] Contributors: Michael Catanzaro, Björn Daase, Jonas Dreßler, Piotr Drąg, Olivier Fourdan, Carlos Garnacho, Sam Hewitt, Sebastian Keller, Andre Klapper, Alexander Mikhaylenko, Daniel García Moreno, Florian Müllner, Georges Basile Stavracas Neto, Jakub Steiner, Daniel van Vugt, nana-4 Translators: Asier Sarasua Garmendia [eu], Daniel Mustieles [es], Andrej Shadura [sk], Carmen Bianca BAKKER [eo], Sucipto [id], Dušan Kazik [sk], Goran Vidović [hr], sicklylife [ja], Kukuh Syafaat [id], Yi-Jyun Pan [zh_TW], Rafael Fontenelle [pt_BR], Jordi Mas [ca], Jiri Grönroos [fi], Fabio Tomat [fur], Umarzuki Bin Mochlis Moktar [ms], Daniel Korostil [uk], Jor Teron [mjw], Anders Jonsson [sv], Aurimas Černius [lt] 3.35.3 ====== * Add discrete GPU support for NVidia drivers [Bastien; #1810] * Fix DND of window previews with tablet devices [Carlos; !897] * Update pad OSD actions dynamically on mode changes [Carlos; !898] * st: Add dedicated PasswordEntry widget [Umang; !619] * Allow stand-alone builds of gnome-extensions tool [Florian; !877] * extension-tool: Don't treat missing .js handler as error [Chuck; !905] * Disallow top bar menus without top bar [Florian; #2002] * Misc. bug fixes and cleanups [Georges, Florian, Robert, Umang; !901, #789937, !909, !910, !911, !913, !916] Contributors: Michael Catanzaro, Chuck, Carlos Garnacho, Umang Jain, Robert Mader, Florian Müllner, Georges Basile Stavracas Neto, Bastien Nocera Translators: Fabio Tomat [fur], Fran Dieguez [gl], Jordi Mas [ca], Daniel Mustieles [es] 3.35.2 ====== * Fix unredirection after cancelled animations [Florian; #1788] * Include shadow in window screenshots [Robert; !762] * Show indicator when microphone is active [Florian; !729] * Use inheritance instead of delegate pattern [Marco; !559] * Use cached coordinates for window sorting in overview [Andrew; !763] * Wiggle login/unlock password entries on failure [Georges; !769] * Update window titles in app menu [Florian; #1830] * Fix window animations getting stuck by workspace switches [Jonas D.; !784] * Fix not-responding dialog size when using geometry scaling [Jonas D.; !783] * Handle buggy MPRIS clients more gracefully [Philip; #1362] * Deprecate StBoxLayout's child properties [Florian; !780] * Remove StBin's align properties [Florian; !803] * Use correct timezones for events [Milan, Florian; !806, #1895] * Reduce overhead of tracking stylesheet changes [Carlos; !779] * Replace action icons in system menu with regular menu items [Florian; #270] * Refine polkit dialogs [Jonas D.; !788] * Fix battery icon glitch in "100% but charging" case [Philip; !814] * Fix windows getting stuck on screen if closed while animating [Florian; !815] * Use font from interface settings [Florian; #688288] * Show polkit confirmation dialog for users with no password [Joaquim, Jonas D.; !829] * Use better OSK layout fallback for unsupported variants [Florian; #1907] * Hide stopped spinner in top bar [Joonas; !832] * Reuse existing icons when updating the app picker grid [Georges; !841] * Show switcher popups immediately on second key press [Florian; #1928] * Add position-based animation to page indicators [Alexander; !843] * Improve modifier-less keyboard navigation of switcher popups [Florian; #1883] * Improve weather integration [Florian; #1927, #1926] * Add back sound feedback when scrolling volume indicator [Florian; #53] * Fix creating app folders with no pre-existing folders [Jonas D.; #1652] * Improve DND page switching in app picker [Florian, Jonas D.; #1693] * Fix disable command of gnome-extensions tool [Florian; #1946] * Tweak styling of notifications/media constrols [Joonas; !855, !865] * Enable clean session shutdown after gnome-shell failure [Benjamin; !858] * Also remove scaled keys when texture cache is cleared [Daniel M.; !567] * Don't show overflow indicator in switchers that fit screen [Florian; #1834] * Move libcroco dependency in-tree [Federico; !861] * Move to app folder location when it is created/renamed [Georges; !883] * Dismiss switcher popups when a system modal dialogs opens [Florian; #1536] * Fix weather forecasts for automatic location when Weather is not sandboxed [Florian; #1823] * Place launched applications into a systemd scope [Benjamin; !863] * Fixed crashes [Jonas D., Carlos; !787, !813] * Misc. bug fixes and cleanups [Marco, Georges, Daniel V., Florian, Robert, Kalev, Philip, Jonas D., Will, Carlos, Jonas Å., cunidev, Joonas, Federico; !747, !765, !421, !759, !749, !730, !770, #1799, !774, !773, !776, !777, !782, !794, !778, !792, !790, !190, !796, !795, !797, !798, !800, !804, !808, !807, !810, !811, !563, !809, !805, !817, !818, !822, !830, !828, !823, !835, !840, !842, !833, !845, !846, !847, !851, #1916, !862, !866, #1979, !827, #1976, !884, !873, !885, !799, !887, !891, !816] Contributors: Marco Trevisan (Treviño), Benjamin Berg, Philip Chimento, Milan Crha, Jonas Dreßler, Carlos Garnacho, Joonas Henriksson, Kalev Lember, Robert Mader, Alexander Mikhaylenko, Daniel García Moreno, Florian Müllner, Georges Basile Stavracas Neto, Federico Mena Quintero, Joaquim Rocha, Will Thompson, Daniel van Vugt, Andrew Watson, cunidev, Jonas Ådahl Translators: Daniel Mustieles [es], Goran Vidović [hr], Fabio Tomat [fur], Danial Behzadi [fa], Andika Triwidada [id], Efstathios Iosifidis [el], Ricardo Silva Veloso [pt_BR] 3.35.1 ====== * Misc. bug fixes and cleanups [Marco; Matthias; !758, #701212] Contributors: Marco Trevisan (Treviño) 3.34.1 ====== * Fix "Frequent" view icons disappearing on hover [Jonas D.; #1502] * Allow editing app folder names [Georges, Marco; !675, !720] * Skip property transitions while hidden [Florian; !708] * Make menu animations more consistent [Florian, GB_2; #1595, !717] * Improve performance when enabling/disabling all extensions [Jonas D.; !96] * Fix extra icons appearing in "Frequent" view animation [Georges; !696] * Fix fading out desktop icons [Harshula; #1616] * Fix box-shadow glitch with prerendered resources [Daniel; #1186] * Fix accidentally skipped animations [Florian; #1572] * Fix screenshots and window animations when scaled [Robert; !728] * Don't leak NOTIFY_SOCKET environment variable to applications [Benjamin; !741] * Fix lock-up on X11 when ibus is already running on startup [Marco; #1712] * Fix screen dimming on idle [Marco; #1683] * Do not notify systemd before initialization is complete [Iain; !750] * Support SAE secrets in network agent [Lubomir; !751] * Fix various regressions with dynamic workspaces [Florian; #1497] * Fixed crashes [Florian, Marco; #1678, !746] * Misc. bug fixes and cleanups [Marco, Jonas D., Florian, Iain, Georges, Jonas Å., Martin, Takao, Carlos; !700, !705, !709, !711, !707, #1538, !710, !713, !699, !715, !718, !716, !719, !721, #1243, !725, !731, #1614, !683, !732, !121, !735, !736, !740, #573, #1641, #1571] Contributors: Marco Trevisan (Treviño), Benjamin Berg, Jonas Dreßler, Takao Fujiwara, GB_2, Carlos Garnacho, Harshula Jayasuriya, Iain Lane, Robert Mader, Daniel García Moreno, Florian Müllner, Georges Basile Stavracas Neto, Lubomir Rintel, Martin Zurowietz, Jonas Ådahl Translators: Rafael Fontenelle [pt_BR], Fran Dieguez [gl], Balázs Úr [hu], Milo Casagrande [it], Daniel Șerbănescu [ro], Kukuh Syafaat [id], Jiri Grönroos [fi], Daniel Mustieles [es], Piotr Drąg [pl], Anders Jonsson [sv], Marek Černocký [cs], Jordi Mas [ca], Aurimas Černius [lt], Christian Kirbach [de], Emin Tufan Çetin [tr], Enrico Nicoletto [pt_BR], Danial Behzadi [fa], Марко Костић [sr], Alexandre Franke [fr], Charles Monzat [fr], Kjartan Maraas [nb], Ryuta Fujii [ja], Nathan Follens [nl], Dušan Kazik [sk], Fabio Tomat [fur], Matej Urbančič [sl], Ask Hjorth Larsen [da], Alan Mortensen [da] 3.34.0 ====== * Handle startup/shutdown of misc X11 services [Carlos; !680] * Fix sound volume mute/unmute [Iain; #1557] * Correctly terminate pasted text [Carlos; #1570] Contributors: Carlos Garnacho, Iain Lane Translators: Tom Tryfonidis [el], Milo Casagrande [it], Ryuta Fujii [ja], Efstathios Iosifidis [el], Carmen Bianca BAKKER [eo], Sabri Ünal [tr], Dušan Kazik [sk], Balázs Meskó [hu], Claude Paroz [fr] 3.33.92 ======= * Animate pointer a11y pie timer [Jonas D.; !688] * Fix restarting shell in systemd user session [Benjamin; !690] * Misc. bug fixes and cleanups [Florian, Jonas D., Jonas Å., Will; !691, !689, !692, #1552, !698] Contributors: Jonas Ådahl, Benjamin Berg, Piotr Drąg, Jonas Dreßler, Florian Müllner, Will Thompson Translators: Daniel Șerbănescu [ro], Danial Behzadi [fa], Daniel Mustieles [es], Jiri Grönroos [fi], Asier Sarasua Garmendia [eu], Piotr Drąg [pl], Rūdolfs Mazurs [lv], Anders Jonsson [sv], Fran Dieguez [gl], Jordi Mas [ca], Matej Urbančič [sl], Zander Brown [en_GB], Ryuta Fujii [ja], Tim Sabsch [de], Fabio Tomat [fur], Pawan Chitrakar [ne], A S Alam [pa], Changwoo Ryu [ko], Aurimas Černius [lt], Daniel Rusek [cs], Marek Černocký [cs], Kukuh Syafaat [id], Goran Vidović [hr], Rafael Fontenelle [pt_BR] 3.33.91 ======= * Fix regression when adjusting brightness [Florian; #1500] * Fix pointer a11y timeout animation [Jonas D.; #1533] * Add new extensions CLI tool [Florian; #1234] * Only track top-level windows [Carlos; #556] * Misc. bug fixes and cleanups [Jonas D., Jonas Å., Piotr, Florian; !678, !682, !686] Contributors: Jonas Ådahl, Jonas Dreßler, Carlos Garnacho, Florian Müllner Translators: Asier Sarasua Garmendia [eu], Sveinn í Felli [is], Anders Jonsson [sv], Jordi Mas [ca], Kukuh Syafaat [id], Florentina Mușat [ro], Jiri Grönroos [fi], Aurimas Černius [lt], Daniel Mustieles [es], Piotr Drąg [pl], Danial Behzadi [fa] 3.33.90 ======= * Implement DND app picker folder management [Georges; !643, !645, !664, !671] * Make Clocks/Weather integration work with sandboxed apps [Florian; #1158] * Support startup via systemd user instance [Benjamin; !507] * Replace Tweener with Clutter animations [Florian; !663, !22, !666, !668, !669] * Minimize travel distance in overview animation [Sergey; !267] * Rescan icon theme when installed apps changed [Georges; !661] * Consistently animate new window actions [Jonas; !662, !673] * Misc. bug fixes and cleanups [Florian, Daniel, Ray, Bastien, Jonas, Niels, Marco, Georges; !635, !636, !637, #1462, !628, !640, !641, !627, !644, !647, !385, #1474, !651, #1144, !646, !653, !652, !655, #1482, !656, $654, !665, !667, !670, #1357, !672, !657, #1507, !674, !677] Contributors: Benjamin Berg, Sergey Bugaev, Jonas Dreßler, Niels De Graef, Florian Müllner, Georges Basile Stavracas Neto, Bastien Nocera, Ray Strode, Marco Trevisan (Treviño), verdre, Daniel van Vugt Translators: Asier Sarasua Garmendia [eu], Rafael Fontenelle [pt_BR], Kristjan SCHMIDT [eo], Jor Teron [mjw], Daniel Mustieles [es], Kukuh Syafaat [id], Jordi Mas [ca], Fabio Tomat [fur], Daniel Șerbănescu [ro], Anders Jonsson [sv] 3.33.4 ====== * Fix unintentional interference between gestures [Jonas; !598] * Fix unintentional loop while polkit dialog is active [Ray; !602] * Fix alt-tab icon size on HiDPI [Jonas; !587] * Style fixes and improvements [Frederik, Jakub; !610, #1446, #1449] * Fix style updates for non-background CSS properties [Florian; #1212] * Fix cursor visibility in screen recordings [Illya; #1208] * Add option for disabling the hot corner [Florian; #688320] * Use more fine-grained levels in battery indicator [Florian; !561, #1442] * Fix the calculation of the maximum number of app search results [Jonas; !110] * Handle horizontal workspace layout with gestures/animations [Florian; !575] * Improve handling of session mode extensions [Florian, Didier; #789852] * Misc. bug fixes and cleanups [Jonas, Florian, Sonny, Carlos, Mario, Benjamin, Marco, Ting-Wei; !599, !600, !591, !606, !152, !607, !604, !495, !608, !611, !614, !612, !615, !618, #369, !620, #774, !621, !616, #1065, !609, !626, !491, !631, !632, !633, #1457] Contributors: Benjamin Berg, Jonas Dreßler, Frederik Feichtmeier, Carlos Garnacho, Illya Klymov, Ting-Wei Lan, Florian Müllner, Sonny Piers, Mario Sanchez Prada, Didier Roche, Jakub Steiner, Ray Strode, Jor Teron, Marco Trevisan (Treviño) Translators: Jordi Mas [ca], Jor Teron [mjw] 3.33.3 ====== * Prepare for optional X11 [Carlos; !378] * Fix opening window menu [Marco; !557] * Reload search providers when installed applications change [Cosimo; !562] * Implement locate-pointer accessibility feature [Olivier; #981] * Allow to disable window menus via session mode [Cosimo; !569] * Implement mouse accessibility [Olivier; !474] * Call GDM's RegisterSession() after startup [Iain; !570] * Fix extended keys popups being hidden by on-screen keyboard [Marco; !583] * Fix top bar being hidden by lock screen [Jonas; !571] * Update theme to better match GTK's Adwaita [Frederik; #841] * Set up GJS profiler when GJS_TRACE_FD is set [Christian; !573] * Misc. bug fixes and cleanups [Jonas, Cosimo, Robert, Florian, Marco, Simon, Laurent, Niels, Will; !551, !555, !464, #1333, !565, !572, !568, !558, #1205, #1336, !579, !576, #1392, !582, !586, #1406, #1351] Contributors: Laurent Bigonville, Cosimo Cecchi, Piotr Drąg, Jonas Dreßler, Frederik Feichtmeier, Olivier Fourdan, Carlos Garnacho, Niels De Graef, Christian Hergert, Iain Lane, Robert Mader, Florian Müllner, Simon Schampijer, Jakub Steiner, Will Thompson, Marco Trevisan (Treviño) Translators: Kukuh Syafaat [id], Balázs Meskó [hu], Daniel Mustieles [es], Fabio Tomat [fur], Nathan Follens [nl], Goran Vidović [hr], Jordi Mas [ca] 3.33.2 ====== * Fix keeping actors visible in scrollviews [Marco; #1061] * Move some chrome above popup windows [Jonas D.; !358] * Include 'sandboxed-app-id' in window introspection info [Florian; #1289] * Port to libecal-2.0 [Milan; !501] * Support TCRYPT in mount password dialog [segfault; !126] * Misc. bug fixes and cleanups [Florian, Marco, Veerasamy; !517, #745, !499, !510, !515, !546, !549] Contributors: Cosimo Cecchi, Milan Crha, Jonas Dreßler, Florian Müllner, segfault, Veerasamy Sevagen, Marco Trevisan (Treviño) Translators: Daniel Mustieles [es] 3.33.1 ====== * Refine the app menu [Florian; #968] * Refine window preview style [Feichtmeier; !461] * Only emit ::style-changed on actual changes [Carlos; #1153] * Disable emoji on-screen keyboard support on X11 [Florian; #1172] * Fix tablet button mapping overlay [Carlos; #1220] * Don't crash for world clock locations with no timezone [Florian; #1062] * Don't leak old on-screen keyboard layout groups [Carlos; mutter#556] * Fix ellipsization in dialog subtitles/bodies [Marco; !531] * Fix glitch of fullscreen window in workspace switch animation [Jonas D.; !322] * Fix distortion of some image contents [Florian; !525] * Allow dragging unfocused tiled/maximized windows from top bar [Dylan; #679290] * Handle network interface name changes [Fabrice; !534] * Avoid unnecessary style changes when computing :first/:last-child [Florian; !529] * Misc. bug fixes and cleanups [Florian, Marco, Robert, Georges, Carlos, Simon, Jonas D.; !487, !441, !502, !503, !504, !506, #822, !551, !512, !509, !511, #1054, !524, #1065, !331, !540] Contributors: Fabrice Bellet, Jonas Dreßler, Feichtmeier, Carlos Garnacho, Robert Mader, Dylan McCall, Simon McVittie, Florian Müllner, Georges Basile Stavracas Neto, Marco Trevisan (Treviño) Translators: Daniel Mustieles [es], Kukuh Syafaat [id], Fabio Tomat [fur], Carmen Bianca BAKKER [eo], Dingzhong Chen [zh_CN], Tim Sabsch [de] 3.32.1 ====== * Fix avatar scaling on login screen [Florian; #1024] * Fix distortion of desktop zoom [Florian; #646] * Fix mouse cursor visibility when using desktop zoom [Florian, Marco; #1020] * Fix screen dimming after wake-up on lock screen [Xiaoguang; #900] * Fix Alt+Esc switcher [Florian; #1064] * Respect struts for popover placement [Andrea; #1102] * Fix app icons updates after theme changes [Florian; #1117] * Fix desktop zoom after resolution changes [Marco; #1120] * Implement stick-to-finger workspace switch overview gestures [Florian; #516] * Make World Clocks offsets relative to local time [Florian; #1157] * Fix top app icon disappearing from dash [Florian; #1053] * Update switch style to match new Adwaita [Jakub; !496] * Ensure CSS units are pixel-aligned when scaling is used [Carlos; #91] * Misc. bug fixes and cleanups [Florian, Jakub, Robert, Alex, Carlos, Phil, Marco, Benjamin, AsciiWolf, Ray, verdre; !444, #1016, #1018, !449, #1036, !455, #1094, !440, #1023, #624, #1017, !476, !473, !480, #1130, !485, !481, !490, !489, #1151, !435, #1160, !482, #1150, #1166, !384] Contributors: AsciiWolf, Andrea Azzarone, Benjamin Berg, Carlos Garnacho, Victor Ibragimov, Robert Mader, Alex Monday, Florian Müllner, Jakub Steiner, Ray Strode, Marco Trevisan (Treviño), verdre, Xiaoguang Wang, Phil Wyett Translators: Victor Ibragimov [tg, af, et, ja], Bruce Cowan [en_GB], Piotr Drąg [tg], Charles Monzat [fr], Khaled Hosny [ar], Goran Vidović [hr], Cheng-Chia Tseng [zh_TW], Carmen Bianca BAKKER [eo], Daniel Mustieles [es], Dušan Kazik [sk] 3.32.0 ====== * Fix sizing issues in on-screen-keyboard emoji panel [Carlos; !439] * Fix test linker failure on Debian/Ubuntu [Iain; !442] * Avoid assertion when sizing fallback app icons from CSS [Florian; #1027] * Fix mis-sized menu arrows after texture cache changes [Florian; !452] Contributors: Carlos Garnacho, Iain Lane, Florian Müllner Translators: Gábor Kelemen [hu], Victor Ibragimov [tg], Ryuta Fujii [ja], Piotr Drąg [af, tg], Mart Raudsepp [et] 3.31.92 ======= * Fix visual glitch in submenus [Alex; #987] * Support fractional scaling [Jonas, Marco; #765011, !5] * Only consider visible children for :first-child/:last-child [Florian; !312] * Hide trailing separator in search results [verdre; !311] * Remember choice in inhibit-shortcuts dialogue [Olivier; !382] * Don't toggle on-screen keyboard on every focus change [Carlos; !397] * Fix legacy tray icons not responding to events on wayland [Florian; #191] * Fix generating French OSK layout [Florian; #997] * Use borderless round user images [Florian; #811] * Misc. bug fixes and cleanups [Andrea, Robert, Florian, Marco, Niels, Benjamin; !414, !417, !420, #996, !408, !422, !425, #1006, !427, !315, #989, !430, !431, !432, #1015, !429, !423, !419, !434] Contributors: Jonas Ådahl, Alan, Andrea Azzarone, Benjamin Berg, Olivier Fourdan, Carlos Garnacho, Niels De Graef, Robert Mader, Alex Monday, Florian Müllner, Marco Trevisan (Treviño), verdre Translators: Carmen Bianca BAKKER [eo], Asier Sarasua Garmendia [eu], Stas Solovey [ru], Changwoo Ryu [ko], Julien Humbert [fr], Milo Casagrande [it], Марко Костић [sr], Ask Hjorth Larsen [da], Kukuh Syafaat [id], Daniel Șerbănescu [ro], Bernd Homuth [de], Trần Ngọc Quân [vi], Nathan Follens [nl], Rūdolfs Mazurs [lv], Aurimas Černius [lt] 3.31.91 ======= * Don't close on-screen-keyboard's language menu on hover [Florian; #171] * Don't let unfullscreen gesture interfere with top bar taps [Jonas D.; #552] * Always use symbolic user icon in system menu [Florian; #957] * Add flags parameter in GrabAccelerators API [Andrea; #68] * Misc. bug fixes and cleanups [Florian, Jonas A.; !399, !398, !400, !402, !407, !410, !411] Contributors: Jonas Ådahl, Andrea Azzarone, Arnaud Bonatti, Jonas Dreßler, Florian Müllner Translators: Jordi Mas [ca], Ryuta Fujii [ja], Marek Cernocky [cs], Fran Dieguez [gl], Jiri Grönroos [fi], Serdar Sağlam [tr], Anders Jonsson [sv], Matej Urbančič [sl], Gun Chleoc [gd], Kukuh Syafaat [id], Baurzhan Muftakhidinov [kk], Alan Mortensen [da], Rafael Fontenelle [pt_BR], Sveinn í Felli [is] 3.31.90 ======= * Fix input methods after ibus restarts [Takao; #295] * Refresh world clocks and weather sections [Florian; #262] * Port to ES6 classes (update your extensions!) [Florian; !361] * networkAgent: Advise users when WPS support is available [Lubomir; !329] * Performance improvements [Carlos; #832, #815] * Fix drag-and-drop with wacom pens [Carlos; #540] * Fix CAPS LOCK indication on wayland [Carlos; #762881] * Show details of non-sensitive notifications on lock screen [Philip; #726] * Refine extension-prefs' error UI [Florian; !193] * Add switch-to-application-n keybindings [Florian; #648000] * Remove top bar translucency [Florian; #408] * Support emojis and keypads in on-screen keyboard [Carlos; #675] * Don't allow popups to re-enable keyboard shortcuts on lock screen (CVE-2019-3820) [Florian, Ray; #851] * Replace app menu [Florian; #624] * Include commonly copied+pasted extension helpers [Florian; !150] * Misc. bug fixes and cleanups [Florian, Daniel, Philip, Sergio, Pascal, Georges, verdre, Carlos, Christopher; #780, #909, !316, !308, !309, #915, !350, !362, !357, !365, !366, !283, !367, #942, !371, !373, !374, !343, !375, !292, !317, !377, !379, !346, !383, #953, !388] Contributors: Sergio Costas, Christopher Davis, Bilal Elmoussaoui, Takao Fujiwara, Carlos Garnacho, Niels De Graef, Christian Kellner, Ignat Loskutov, Florian Müllner, Georges Basile Stavracas Neto, Pascal Nowack, Lubomir Rintel, Jakub Steiner, Ray Strode, verdre, Daniel van Vugt, Philip Withnall Translators: Daniel Mustieles [es], Carmen Bianca BAKKER [eo], Charles Monzat [fr], Pieter Schalk Schoeman [af], Jordi Mas [ca], Matej Urbančič [sl], Fran Dieguez [gl], Balázs Úr [hu], A S Alam [pa], Fabio Tomat [fur], Aurimas Černius [lt], Piotr Drąg [pl], Marek Cernocky [cs], Ryuta Fujii [ja] 3.31.4 ====== * Improve icon grid performance [Daniel; #174] * Remove browser plugin [Michael; #766776] * Add DBus API for introspecting the application state [Jonas, Olivier; !326] * Always allow leaving the overview via the hot-corner [Pascal; #429] * Misc. bug fixes [Florian, Jasper, Andrea, Sam, Dani, Cosimo, Jonas, Carlos; #643595, #673767, !293, #783, #781, !298, !297, #782, !301, !314, !305, #799, #632, !327] Contributors: Jonas Ådahl, Andrea Azzarone, Michael Catanzaro, Cosimo Cecchi, daniruiz, Olivier Fourdan, Carlos Garnacho, Sam Hewitt, Andre Klapper, Florian Müllner, Pascal Nowack, Jasper St. Pierre, RyuzakiKK, Marco Trevisan (Treviño), João Paulo Rechi Vita, Daniel van Vugt Translators: Kristjan SCHMIDT [eo], Matej Urbančič [sl], Daniel Mustieles [es], Fabio Tomat [fur], Emin Tufan Çetin [tr], Anders Jonsson [sv], Ryuta Fujii [ja] 3.31.2 ====== * Port away from and remove ShellGenericContainer [Georges; !153] * popupMenu: Fix keyboard activation when numlock is active [Andrea; #550] * Do not block all shortcuts while app folders are expanded [Florian; #648] * Fix regression in handling new input sources [Carlos; #691] * Reask password after udisk errors for no/wrong passwords [Sebastian; #640] * Improve performance of app icon animations [Daniel; !253, !261] * Avoid focus changes when updating keyboard options [Takao; #391] * notifications: Support icon theme names in 'image-path' hint [Marco; !285] * Respect natural-scroll setting for workspace swipe gesture [Erik; #516] * Confine window preview titles to workspace area [Florian; !214] * Misc. bug fixes [Florian, Carmen, Georges, Cosimo, Carlos; #602, #693, #666, #647, !66, #768, #430, !286, !258, !287, gtk#1447] Contributors: Andrea Azzarone, Carmen Bianca Bakker, Cosimo Cecchi, Sergio Costas, Erik Duxstad, Takao Fujiwara, Carlos Garnacho, Florian Müllner, Georges Basile Stavracas Neto, Sebastian Pinnau, Didier Roche, Jakub Steiner, Marco Trevisan (Treviño), verdre, Daniel van Vugt Translators: Kristjan SCHMIDT [eo], Dušan Kazik [sk], Matej Urbančič [sl], Anish Sheela [ml], Rafael Fontenelle [pt_BR], Daniel Mustieles [es] 3.30.1 ====== * Cancel search on overview hiding [Marco; !205] * Fix disappearing network icon [Iain; #140] * Improve switch-monitor shortcut handling [Daniel; !208] * Fix missing key information in keyring dialog [Florian; #574] * De-duplicate all entries in run command history [Pascal; #524] * Fix frozen disk unlock dialogs [Florian; #565] * Fix unresponsive-app dialog blocking input in other windows [Florian; #273] * Fix handling of forward-key-event input method signal [Carlos; #531] * Misc. bug fixes [Florian, Marco, Carlos, Pascal, Andrea; #520, #791233, !188, #539, !217, #536, #537, #578, !236, #579, !228, #618, #471, !255] Contributors: Andrea Azzarone, Jürg Billeter, Daniel Drake, Carlos Garnacho, Andre Klapper, Iain Lane, Florian Müllner, Bastien Nocera, Pascal Nowack, Jakub Steiner, Ray Strode, Will Thompson, Marco Trevisan (Treviño), Adam Williamson, Andrew Zaborowski Translators: Yuras Shumovich [be], Stas Solovey [ru], Justin van Steijn [nl], Dušan Kazik [sk], Khaled Hosny [ar], Madis O [et], Mart Raudsepp [et], Марко Костић [sr], Piotr Drąg [pl], Marek Černocký [cs], Fran Dieguez [gl], Ask Hjorth Larsen [da], Balázs Meskó [hu], Jiri Grönroos [fi], Cheng-Chia Tseng [zh_TW] 3.30.0 ====== Contributors: Harry Mallon, Marco Trevisan (Treviño) Translators: Fran Dieguez [gl], Trần Ngọc Quân [vi], Balázs Meskó [hu], Rūdolfs Mazurs [lv], Jiri Grönroos [fi], Anders Jonsson [sv], gogo [hr], Ask Hjorth Larsen [da] 3.29.92 ======= * Choose some actors to cache on the GPU [Daniel; #792633] * inputMethod: Hide preedit text if requested [Takao; #431] * Fix forced fallback app-menus on wayland [Jonas; #276] Contributors: Jonas Ådahl, Takao Fujiwara, Mohammed Sadiq, Marco Trevisan (Treviño), Daniel van Vugt Translators: Baurzhan Muftakhidinov [kk], Kukuh Syafaat [id], Milo Casagrande [it], Changwoo Ryu [ko], Marek Cernocky [cs] 3.29.91 ======= * Fix handling of 0/false options in ShowOSD D-Bus API [Florian; #791669] * overview: Fix handling of confirmation dialogs on wayland [verdre; !180] * Avoid some full relayout/redraws [Carlos; !197] * Keep workspace switcher slid out when workspaces are in use [Florian; !161] * Ignore auto-repeat for some keybindings [Andrea; #373] * Misc. bug fixes [Carlos, Florian, Pascal; #464, !189, !191, !192, !162] Contributors: Andrea Azzarone, Olivier Blin, Carlos Garnacho, Florian Müllner, Pascal Nowack, verdre Translators: Bruno Lopes da Silva [pt_BR], Matej Urbančič [sl], Piotr Drąg [pl], Aurimas Černius [lt], Emin Tufan Çetin [tr], Fabio Tomat [fur], Alexandre Franke [fr], Yi-Jyun Pan [zh_TW], Bernd Homuth [de], Andre Klapper [cs], Jordi Mas [ca], Daniel Șerbănescu [ro], Bruce Cowan [en_GB] 3.29.90 ======= * Add remote access indication on wayland [Jonas; !160] * Fix wrong window positions in overview on wayland [Marco; #776588] * Add gesture to unfullscreen a window [Jan-Michael; !123] * Add PickColor method to screenshot D-Bus interface [Florian; #286] * Consider "new-window" action when opening new windows [Florian; #756844] * Make workspace switching gestures follow motion [Carlos; #788994] * Support audio volumes above 100% [Didier; #790280] * Misc. bug fixes [Florian, Daniel; #424, !132, !182, #433, !179, #786496] Contributors: Jonas Ådahl, Jan-Michael Brummer, Piotr Drąg, Daniel Drake, Carlos Garnacho, Florian Müllner, Georges Basile Stavracas Neto, Didier Roche, Jakub Steiner, Marco Trevisan (Treviño) Translators: Charles Monzat [fr], Daniel Mustieles [es] 3.29.4 ====== * Fix "Clear All" for calendar events [Florian; #325] * Allow cancelling direct switch operations [Xavier; #315] * Support being started by systemd --user [Iain; !137, !138] * Support key event forwarding required by some input methods [Carlos; #275] * Misc. bug fixes and cleanups [Jasper, Andrea, Florian; #663461, #372, !112, #414, !151] Contributors: Andrea Azzarone, Carlos Garnacho, Xavier Johnson, Iain Lane, Florian Müllner, Jasper St. Pierre Translators: Stas Solovey [ru] 3.29.3 ====== * Save creation time in screenshot metadata [Florian; #790481] * Improve consistency between ctrl- and middle-click on app icons [Xavier; #316] * Add support for font-feature-settings CSS property [Ryan; #34] * Adjust to MetaScreen removal [Jonas; #759538] * Misc. bug fixes [Florian, Marco, Sam; #298, #788931, #26, #76, !54, #788882, #791233] Contributors: Jonas Ådahl, Ryan Hendrickson, Xavier Johnson, Florian Müllner, Joe Rabinoff, Sam Spilsbury, Marco Trevisan (Treviño) Translators: Gun Chleoc [gd], Yi-Jyun Pan [zh_TW], Cédric Valmary [oc], Jordi Mas [ca] 3.29.2 ====== * Guard against untimely keyboard map changes [Carlos; #240] * Fix icons in search provider results [Florian; #249] * Fix blurriness of OSD under some resolutions [Silvère; #782011] * Fix lagging pointer when zoomed [Daniel; #682013] * Misc. bug fixes [Milan, Xiaoguang, Florian, Mario, Ole; #244, #787871, #781471, #136, #214, #294] Contributors: Ole Jørgen Brønner, Milan Crha, Carlos Garnacho, Yussuf Khalil, Silvère Latchurié, Florian Müllner, Mario Sanchez Prada, Ray Strode, Daniel van Vugt, Xiaoguang Wang Translators: Rafael Fontenelle [pt_BR], Kukuh Syafaat [id], Marcos Lans [gl], Anders Jonsson [sv], Mingcong Bai [zh_CN] 3.29.1 ====== * Support icons in app-menu [Florian; #760985] * Misc. bug fixes [Marco, Florian, Lubomir; #792687, #221, !63] Contributors: Piotr Drąg, Takao Fujiwara, Christian Kellner, Florian Müllner, Mario Sanchez Prada, Lubomir Rintel, Didier Roche, Marco Trevisan (Treviño), verdre Translators: gogo [hr], Stas Solovey [ru], Matej Urbančič [sl], Daniel Șerbănescu [ro], Fabio Tomat [fur], Marek Cernocky [cs], Daniel Mustieles [es] 3.28.1 ====== * Fix compose characters in shell entries [Carlos; #115] * Don't show authentication dialogs on lock screen [Florian; #179, #166] * Fix handling of UTC timezone in world clock [Florian; #150] * Fix keyboard navigation in overview when hovering windows [Florian; #50] * Misc. bug fixes [Florian; #127, #788908, #763886, !39] Contributors: Jeremy Bicha, Carlos Garnacho, Andy Holmes, Florian Müllner, Bastien Nocera Translators: Stas Solovey [ru], Daniel Șerbănescu [ro], Dušan Kazik [sk], Rafael Fontenelle [pt_BR], Nathan Follens [nl], Dz Chen [zh_CN], Matej Urbančič [sl], Hannie Dumoleyn [nl], Khaled Hosny [ar], Guillaume Bernard [fr] 3.28.0 ====== Translators: A S Alam [pa], gogo [hr], Chao-Hsiung Liao [zh_TW], Jordi Mas [ca], Anders Jonsson [sv], Balázs Úr [hu] 3.27.92 ======= * Misc. bug fixes [Florian; #64, #66, #72] Contributors: Jonas Ådahl, Christian Kellner, Florian Müllner Translators: Daniel Mustieles [es], Wolfgang Stöggl [de], Cheng-Chia Tseng [zh_TW], Dušan Kazik [sk], Changwoo Ryu [ko], Furkan Ahmet Kara [tr], Balázs Úr [hu], Trần Ngọc Quân [vi], Milo Casagrande [it], GNOME Translation Robot [gd, nl], Marek Cernocky [cs], Aurimas Černius [lt], Alain Lojewski [fr], Rūdolfs Mazurs [lv], Stas Solovey [ru], Alan Mortensen [da] 3.27.91 ======= * Fix wrong bluetooth state when disabled by HW airplane mode [Mario; #789110] * Dump javascript stack on aborts, traps and segfaults [Marco; #789237] * Allow Escape to "cancel" top bar focus [Stefano; #671121] * Fix leaving the overview erroneously on window hover [Carlos; #784545] * Add keyboard accessibility dialog [Olivier; #788564] * Port to libnm [Lubomir, Florian; #789811] * Don't pop up on-screen-keyboard on touch events [Florian, Carlos; #788188] * Improve the on-screen-keyboard [Carlos; !9, #46] * Add Thunderbolt support [Christian; !14] * Don't lock immediately on login after a wayland session crash [Florian; !17] * Respect cursor's hot x/y coordinates when recording [Florian Z.; #792860] * Allow closing windows and apps during Tab [Florian, Mario; #620106] * Fix small app folder icons when using HiDPI [Nikita; #792259] * Make sassc a mandatory build dependency [Mario; #792822] * Misc. bug fixes [Florian, Marco, Alessandro, Gautier, Jeremy, Bastien, Ray, Carlos, Didier, Exalm, Rafal; #789231, #789277, #788542, #789103, #779974, #788931, #776940, #786987, #791007, #791233, #791148, #706191, #791655, #791487, #779413, #787845, #10, #788627, #792354, #792616, #781329, #780957, #33, #740142, !38, !23] Contributors: Jeremy Bicha, Alessandro Bono, Nikita Churaev, Piotr Drąg, Exalm, Stefano Facchini, Olivier Fourdan, Carlos Garnacho, Christian Kellner, Rafal Luzynski, Iñigo Martínez, Florian Müllner, Bastien Nocera, Gautier Pelloux-Prayer, Mario Sanchez Prada, Lubomir Rintel, Didier Roche, Jakub Steiner, Ray Strode, Marco Trevisan (Treviño), Florian Zwoch Translators: Mingcong Bai [zh_CN], Hannie Dumoleyn [nl], Khaled Hosny [ar], Kjartan Maraas [nb], Petr Kovar [cs], Marek Cernocky [cs], Aurimas Černius [lt], Yosef Or Boczko [he], Kukuh Syafaat [id], Sveinn í Felli [is], Jordi Mas [ca], Daniel Mustieles [es], Fabio Tomat [fur], Rūdolfs Mazurs [lv], Emin Tufan Çetin [tr], Anders Jonsson [sv], Matej Urbančič [sl], Jiri Grönroos [fi], Tim Sabsch [de], Gil Forcada [ca], Dušan Kazik [sk], Balázs Meskó [hu], Piotr Drąg [pl], Tong Hui [zh_CN], Fran Dieguez [gl], Enrico Nicoletto [pt_BR], gogo [hr], Baurzhan Muftakhidinov [kk], Robert Antoni Buj Gelonch [ca], Bruce Cowan [en_GB], Борисав Живановић [sr], Милош Поповић [sr@latin], Марко Костић [sr] 3.27.1 ====== * Fix using icon-name strings with PopupImageMenuItems [Florian; #789018] * Misc. bug fixes [Jonas, Florian; #788607, #788943] Contributors: Jonas Ådahl, Florian Müllner Translations: Xavi Ivars [ca@valencia], Matej Urbančič [sl], Fabio Tomat [fur] 3.26.1 ====== * Don't detach launched apps to not break pkexec and friends [Florian; #763531] * Allow search providers to not autostart [Bastien, Florian; #785380, #787986] * Fix crash when tray icons are hidden/shown in quick succession [Ray; #787361] * Make window group switcher more consistent [Didier; #786009] * Improve legibility of the top bar when translucent [Jakub; #787940] * Don't crash when running outside a logind session [Florian; #788046] * Allow to run headless [Mario, Jonas; #730551] * Update calendar on timezone changes [Martin; #678507] * Improve keyboard navigation of window previews [Florian; #786546] * Run unit tests on `meson test` [Florian; #786497] * Misc. bug fixes [Florian, Marc-Antoine, Mario, Jakub, Krzesimir; #787423, #766368, #787580, #787907, #787901, #788039, #788003, #786343, #787902, #788265, #788339, #787905, #788282, #787676] Contributors: Martin Andersson, Florian Müllner, Bastien Nocera, Krzesimir Nowak, Marc-Antoine Perennou, Didier Roche, Mario Sanchez Prada, Jakub Steiner, Ray Strode Translations: Efstathios Iosifidis [el], Khaled Hosny [ar], Stas Solovey [ru], Arash Mousavi [fa], Sveinn í Felli [is], Athul R T [ml], Cheng-Chia Tseng [zh_TW], Anders Jonsson [sv] 3.26.0 ====== * Misc. bug fixes [Ray, Michael, Jonas; #786332] #786783, #786886, #786868] Contributors: Jonas Ådahl, Michael Catanzaro, Sebastian Keller, Ray Strode Translations: Daniel Mustieles [es], Fran Dieguez [gl], Baurzhan Muftakhidinov [kk], Marek Cernocky [cs], Andika Triwidada [id], Aurimas Černius [lt], Piotr Drąg [pl], Trần Ngọc Quân [vi], Jordi Mas [ca], Fabio Tomat [fur], gogo [hr], Dušan Kazik [sk], Piotr Drąg [ne], Emin Tufan Çetin [tr], Ask Hjorth Larsen [da], Cheng-Chia Tseng [zh_TW], Rūdolfs Mazurs [lv], Balázs Meskó [hu], Matej Urbančič [sl], Jiri Grönroos [fi], Милош Поповић [sr], Милош Поповић [sr@latin], Rafael Fontenelle [pt_BR], Wolfgang Stöggl [de], Milo Casagrande [it], hanniedu [nl], Yuras Shumovich [be], Changwoo Ryu [ko], Alain Lojewski [fr], Alexander Shopov [bg], Daniel Korostil [uk], Kris Thomsen [da], A S Alam [pa], Sebastian Rasmussen [sv], Inaki Larranaga Murgoitio [eu], Jiro Matsuzawa [ja] 3.25.91 ======= * Open context menu of highlighted search result on Shift+F10 [Florian; #675315] * Fix mid-sentence capitalization in weather forecasts [Florian; #779873] * Add switcher popup to cycle through monitor configurations [Rui; #783550] * Offer system actions in search [Rares; #691900] * Misc. bug fixes [Mario, Florian, Rui; #777519, #786120, #786145, #786419, #786526, #786520, #786520, #786146] Contributors: Emmanuele Bassi, Marek Cernocky, Piotr Drąg, Carlos Garnacho, Rui Matos, Florian Müllner, Mario Sanchez Prada, Rares Visalom Translations: Marek Cernocky [cs], Piotr Drąg [pl], Muhammet Kara [tr], Мирослав Николић [sr, sr@latin], Kukuh Syafaat [id], Baurzhan Muftakhidinov [kk], Aurimas Černius [lt], Fran Dieguez [gl], gogo [hr], Jordi Mas [ca] 3.25.90 ======= * Add permission dialog for inhibiting shortucts [Florian; #783342] * Improve window picker layout [Florian, Jakub; #783953] * Remove legacy status icon tray [Florian; #785956] * Drop autotools support [Florian; #785153] * Misc. bug fixes [Florian, Carlos, Cosimo; #785090, #785309, #767805, #747794, #785358, #785556] Contributors: Emmanuele Bassi, Cosimo Cecchi, Carlos Garnacho, Florian Müllner, Jakub Steiner Translations: Fabio Tomat [fur], Pawan Chitrakar [ne], Aurimas Černius [lt], gogo [hr], Daniel Mustieles [es], Baurzhan Muftakhidinov [kk], Matej Urbančič [sl], Marek Cernocky [cs], Dušan Kazik [sk], Jordi Mas [ca], Fran Dieguez [gl], Andika Triwidada [id], Anders Jonsson [sv], Balázs Meskó [hu] 3.25.4 ====== * gdm: Fix "Not listed" focus indication [Florian; #784040] * Fix missing icons in freedesktop notifications [Florian; #784245] * gdm: Disable user list when empty [Xiaoguang; #731320] * gdm: Allow empty response to PAM messages [Ray; #784360] * Fix blocked clicks in shutdown dialog [Florian; #781738] * Show OSD popup when changing volume via scroll wheel [Florian; #781028] * Refine list search results [Rares; #749957] * Replace mutter's unresponsive app dialog [Carlos; #762083] * Improve handling of extension errors [Florian; #781728] * Implement tablet rings/strips configuration [Carlos; #782033] * Adjust to mozjs52 update in gjs [Florian; #785084, #785090] * Support the meson build system [Florian; #783229] * Misc. bug fixes [Ray, Florian, Jonas, Marco, Shih-Yuan, Joaquim, Carlos S.; #780403, #772589, #784130, #783975, #784353, #784361, #772284, #765011, #765011, #765011, #784985, #781471, #785047, #736148, #736148] Contributors: Jonas Ådahl, Alessandro Bono, Michael Catanzaro, Carlos Garnacho, Shih-Yuan Lee (FourDollars), Florian Müllner, Joaquim Rocha, Mario Sanchez Prada, Carlos Soriano, Ray Strode, Marco Trevisan (Treviño), Rares Visalom, Xiaoguang Wang Translations: Jeremy Bicha po/es, he.po, Kukuh Syafaat [id], Fabio Tomat [fur] 3.25.3 ====== * Bypass proxies for captive portal [Bastien; #769692] * Correctly handle "text-shadow: none;" [Matt; #783485] * Add StEntry:hint-actor property [Mario; #783484] * Support text-shadow CSS property in StEntry [Mario; #783484] * Misc. bug fixes [Jonas, Florian, Bastien, Ting-Wei, Cosimo, Mario, Sebastian; #777732, #783202, #783210, #783206, #783286, #783439, #783483, #783823, #781950] Contributors: Jonas Ådahl, Cosimo Cecchi, Sebastian Keller, Ting-Wei Lan, Florian Müllner, Bastien Nocera, Mario Sanchez Prada, Matt Watson 3.25.2 ====== * Fix StEntry::primary-icon-clicked emission [Florian; #782190] * Add an optional icon parameter to PopupMenu.addAction() [Mario; #782166] * Allow search providers to include clipboard text with results [Daiki; #775099] * Reduce dependency on Caribou [Carlos; #777342] * Add transparency to top bar when free floating [Alessandro; #747163] * Animate maximize/unmaximize operations [Alessandro; #766685] * Misc. bug fixes [Florian, Matthias, Jeremy, Michael, Carlos, Lan; #782000, #780215, #782802, #782637, #782930, #755164, #780215, #782982] Contributors: Jeremy Bicha, Michael Biebl, Alessandro Bono, Carlos Garnacho, Ting-Wei Lan, Matthias Liertzer, Florian Müllner, Mario Sanchez Prada, Daiki Ueno Translations: Jordi Mas [ca], Christian Stadelmann [de], Милош Поповић [sr], Милош Поповић [sr@latin], Furkan Ahmet Kara [tr] 3.25.1 ====== * Close Wifi selection dialog on lock [Florian; #780054] * Fix DND over window previews in overview [Florian; #737166] * Do not lock the screen when disabled by lockdown settings [Florian; #780212] * Follow GNOME Weather's location permissions [Florian; #780252] * Fix portals that require a new window to be loaded [Catalin; #759044] * Fix restricting menus to screen height on HiDPI displays [Cosimo; #753305] * Misc. bug fixes and cleanups [Florian, Cosimo, Bastien, Catalin, Carlos G., Jonas, Carlos S., Xiaoguang, Rares, Emilio; #780063, #780321, #780381, #780453, #758873, #780606, #642652, #777732, #780157, #781482, #780404, #781545, #781728] Contributors: Jonas Ådahl, Cosimo Cecchi, Philip Chimento, Carlos Garnacho, Catalin Iacob, Florian Müllner, Bastien Nocera, Emilio Pozuelo Monfort, Carlos Soriano, Rares Visalom, Xiaoguang Wang Translations: Marek Cernocky [cs], Piotr Drąg [pl], Anders Jonsson [sv], Stas Solovey [ru], Rafael Fontenelle [pt_BR], Baurzhan Muftakhidinov [kk], Daniel Korostil [uk], Kukuh Syafaat [id], Milo Casagrande [it], Jiri Grönroos [fi], Daniel Mustieles [es], Balázs Úr [hu], Guillaume Bernard [fr], Changwoo Ryu [ko], Mario Blättermann [de], Fran Dieguez [gl], Dušan Kazik [sk], Yuras Shumovich [be], Fabio Tomat [fur], Kjartan Maraas [nb], Aurimas Černius [lt], Trần Ngọc Quân [vi], Rūdolfs Mazurs [lv], Γιάννης Κουτσούκος [el], gogo [hr], Марко Костић [sr], Jordi Mas [ca], Khaled Hosny [ar] 3.24.0 ====== Translations: GNOME Translation Robot [tg], Мирослав Николић [sr, sr@latin], Guillaume Bernard [fr], Rūdolfs Mazurs [lv], Emin Tufan Çetin [tr], sujiniku [ja], Daniel Korostil [uk] 3.23.92 ======= * Implement DND to overview on wayland [Hyungwon; #765003] * Make telepathy optional at runtime [Florian; #771721, #779878] * Don't show forecasts for NYC when geoclue gets stuck [Sebastian; #779898] * Add bottom edge drag gesture to bring up the OSK [Jan-Michael; #757712] * Allow switching between pads in the same group [Carlos; #779986] * Ignore showBanners policy for critical notifications [Florian; #779974] * Misc. bug fixes [Florian; #779435, #779819, #779820] Contributors: Jan-Michael Brummer, Allan Day, Carlos Garnacho, Hyungwon Hwang, Sebastian Keller, Florian Müllner Translations: Enrico Nicoletto [pt_BR], Jiri Grönroos [fi], Chao-Hsiung Liao [zh_TW], Piotr Drąg [pl], Piotr Drąg [he], Balázs Meskó [hu], Kris Thomsen [da], Yuras Shumovich [be], Sveinn í Felli [is], Inaki Larranaga Murgoitio [eu], Changwoo Ryu [ko], Jordi Mas [ca], Aurimas Černius [lt], Мирослав Николић [sr, sr@latin], Christian Kirbach [de], Anders Jonsson [sv], Fabio Tomat [fur], GNOME Translation Robot [gd], Dušan Kazik [sk], Kukuh Syafaat [id], Marek Černocký [cs], Stas Solovey [ru], Milo Casagrande [it], Fran Dieguez [gl], Daniel Boles [gl], A S Alam [pa], Daniel Mustieles [es] 3.23.91 ======= * Use the original timestamps for restored notifications [Florian; #766410] * Add weather information to date+time drop-down [Florian; #754031] * Refine message list layout in date+time drop-down [Florian; #775763] * Make next/prev media controls insensitive when unavailable [Florian; #773884] * Misc. bug fixes [Piotr, Bastien, Florian; #772210, #769546, #775799] Contributors: Piotr Drąg, Carlos Garnacho, Florian Müllner, Bastien Nocera Translations: Baurzhan Muftakhidinov [kk], Jordi Mas [ca], Ask Hjorth Larsen [da], Inaki Larranaga Murgoitio [eu], Daniel Mustieles [es], Dušan Kazik [sk], Aurimas Černius [lt], Jiri Grönroos [fi], Kjartan Maraas [nb], Piotr Drąg [pl], Daniel Korostil [uk], Kukuh Syafaat [id], Milo Casagrande [it], Fabio Tomat [fur], Rafael Fontenelle [pt_BR], Fran Dieguez [gl], Мирослав Николић [sr, sr@latin], Balázs Meskó [hu], Chao-Hsiung Liao [zh_TW] 3.23.90 ======= * Handle Ctrl+Q and Ctrl+W in portal window [Bastien; #764133] * Allow to scroll through ibus candidates with mouse [Peng; #776032] * Reload apps on .desktop file content changes [Adrian; #773636] * Use private data/cache directories in portal helper [Bastien; #775639] * Fix subsurfaces not showing up in previews [Rui; #756715] * Fix theme node transitions [Florian; #778145] * Update pad (o)leds on mode switches [Carlos; #776543] * Add security indicators to defend against malicious portals [Bastien; #749197] * Don't allow type ahead at the login screen [Ray; #766139] * Don't fail to load because of TLS errors [Bastien; #778253] * Ensure the network lists remains sorted on rename [Benjamin; #778686] * Toggle power-off/suspend button on long-press [Florian; #721173] * Add "kill-switch" for user extensions [Florian; #778664] * Add night light indicator to status area [Florian; #741224] * Misc. bug fixes [Michael, Bastien, Carlos, Rui, Florian, Alan, Philip, Jonas; #759793, #735233, #762444, #777784, #777934, #778158, #776199, #778425, #771098, #778552, #777317, #778660, #778661, #745626, #778672] Contributors: Jonas Ådahl, Benjamin Berg, Michael Catanzaro, Philip Chimento, Alan Coopersmith, Piotr Drąg, Carlos Garnacho, Yuri Konotopov, Lionel Landwerlin, Rui Matos, Florian Müllner, Bastien Nocera, Adrian Perez de Castro, Robert Roth, Ray Strode, Peng Wu Translations: Jiri Grönroos [fi], Balázs Meskó [hu], Gábor Kelemen [hu], Daniel Mustieles [es], Dušan Kazik [sk], Piotr Drąg [ar, eu, fa, hr, pa, pt, sr, sr@latin], Rafael Fontenelle [pt_BR], Jordi Mas [ca], Piotr Drąg [pl], Alexandre Franke [fr], Baurzhan Muftakhidinov [kk], Yuras Shumovich [be], Mandy Wang [zh_CN], Marek Černocký [cs], Kukuh Syafaat [id], Kjartan Maraas [nb], Daniel Korostil [uk] 3.23.3 ====== * Fix replacing of GNotifications [Florian; #775149] * Prepare for mozjs31 GJS [Philip; #775374] * Misc. bug fixes [Niels, Jonas; #775507, #776130] Contributors: Jonas Ådahl, Michael Catanzaro, Philip Chimento, Niels De Graef, Carlos Garnacho, Florian Müllner Translations: Muhammet Kara [tr], Christian Kirbach [de], Baurzhan Muftakhidinov [kk], Cheng-Chia Tseng [zh_TW], A S Alam [pa], Gianvito Cavasoli [it] 3.23.2 ====== * Implement Pad configuration OSD [Carlos; #771067] * Show overview on three-finger touchpad pinch [Carlos; #765937] * Summarize network sections with too many devices [Florian; #773892] * Always show primary network icon when connected [Florian; #773890] * Fix fullscreen transitions on wayland [Rui; #770345] * Work around portal failures by using a URL without HTPPS redirect [Debarshi; #769940] * Fix app view hiding when no usage data is available [Florian, Xiaoguang; #774381] * Misc. bug fixes [Florian, Ray; #773875, #740043, #773893, #774643, #774805] Contributors: Carlos Garnacho, Rui Matos, Florian Müllner, Debarshi Ray, Ray Strode, Xiaoguang Wang Translations: Balázs Meskó [hu], Fabio Tomat [fur], Marek Cernocky [cs], Stas Solovey [ru], Daniel Mustieles [es], Marek Černocký [cs], Piotr Drąg [pl], Rafael Fontenelle [pt_BR], Baurzhan Muftakhidinov [kk], Jiri Grönroos [fi], Kjartan Maraas [nb] 3.23.1 ====== * Request periodic scans while WiFi list is open [Dan; #767918] * Include extension UUID in structured log metadata [Jonh; #770717] * Line-wrap PAM messages on login screen [Tao; #764445] * Add a way to launch an app on the discrete GPU [Bastien; #773117] * Only allow graphs to lift screen shield when locked [Florian; #773328] * Add reload option to gnome-shell-extension-tool [Jonh; #772593] * Update background animations when resuming from suspend [Florian; #773265] * Misc. bug fixes [Cosimo, Bastien, Florian, Philip, Carlos; #772723, #772287, #756432, #772386, #772386, #773085, #773634] Contributors: Cosimo Cecchi, Philip Chimento, Carlos Garcia Campos, Florian Müllner, Bastien Nocera, Jonh Wendell, Dan Williams, Tao Yang Translations: Fabio Tomat [fur], Philip Chimento [zh_CN], YunQiang Su [zh_CN], Jordi Mas [ca], Piotr Drąg [pl], Muhammet Kara [tr], Marek Černocký [cs], Daniel Korostil [uk], Dušan Kazik [sk] 3.22.1 ====== * Fix hidden network indicator on startup [Florian; #772249] * Fix order of windows with modal dialogs in window switcher [Florian; #747153] * Fix feedback loop between StClipboard and X11 bridge [Carlos; #760745] * Reliably match windows from Flatpak apps [Florian; #772615] * Misc. bug fixes [Philip; #742249] Contributors: Philip Chimento, Carlos Garnacho, Florian Müllner Translations: Inaki Larranaga Murgoitio [eu], Khaled Hosny [ar], BM [uz@cyrillic], Milo Casagrande [it], Cheng-Chia Tseng [zh_TW], gogo [hr] 3.22.0 ====== * Misc. bug fixes [Florian, Rui; #771391, #771536] #771656] Contributors: Rui Matos, Florian Müllner Translations: Ask Hjorth Larsen [da], GNOME Translation Robot [gd], Alexandre Franke [fr], Daniel Korostil [uk], Jordi Mas [ca], Khaled Hosny [ar], David King [en_GB] 3.21.92 ======= * Adjust screen capture to work with multiple stage views [Jonas; #770128] * Improve handling of cycle shortcuts [Florian; #771063] * Fix windows not getting undimmed in some cases [Rui; #770163, #752524] * Disable extension version check by default [Florian; #770887] * Misc. bug fixes [Rui, Florian, Michael; #770382, #770888, #770328] Contributors: Jonas Ådahl, Michael Catanzaro, Fran Dieguez, Olivier Fourdan, Rui Matos, Florian Müllner Translations: Changwoo Ryu [ko], Baurzhan Muftakhidinov [kk], Aurimas Černius [lt], Muhammet Kara [tr], Trần Ngọc Quân [vi], A S Alam [pa], Yosef Or Boczko [he], Anders Jonsson [sv], Tiago Santos [pt], Hannie Dumoleyn [nl], Rūdolfs Mazurs [lv], Claude Paroz [fr], Arash Mousavi [fa], Fran Dieguez [gl], Stas Solovey [ru], Tom Tryfonidis [el] 3.21.91 ======= Translations: Mario Blättermann [de], Jiri Grönroos [fi], Dušan Kazik [sk], Andika Triwidada [id], Daniel Mustieles [es], Fabio Tomat [fur], Enrico Nicoletto [pt_BR], Matej Urbančič [sl], Мирослав Николић [sr, sr@latin] 3.21.90.1 ========= Contributors: Piotr Drąg Translations: Marek Černocký [cs], Balázs Úr [hu] 3.21.90 ======= * Improve on-screen keyboard on wayland [Carlos; #765009] * Misc. bug fixes [Florian; #769156, #769216, #769074] Contributors: Carlos Garnacho, Florian Müllner Translations: Fabio Tomat [fur], Tiago Santos [pt], Daniel Mustieles [es], Bernd Homuth [de], Aurimas Černius [lt], Balázs Úr [hu], Yosef Or Boczko [he], Jiri Grönroos [fi], Marek Cernocky [cs], Muhammet Kara [tr], Enrico Nicoletto [pt_BR], Andika Triwidada [id] 3.21.4 ====== * overview: Fix switching workspaces when scrolling on non-primary monitors [Florian; #766883, #768316] * Fix crash when using screen recorder under wayland [Rui; #767001] * Update theme on video memory purge errors [Rui; #739178] * Free old backgrounds immediately [Hyungwon; #766353] * Add support for system upgrades to end session dialog [Kalev; #763611] * Fix maximized windows flickering to the wrong size on restart [Owen; #761566] * Hide ignored events in calendar as well [Florian; #768538] * calendar: Only hide dismissed occurrence of recurring event [Florian; #748226] * Provide org.freedesktop.impl.portal.access implementation [Florian; #768669] * Misc. bug fixes and cleanups [Rui, Florian, Marinus, Jonas; #767954, #768317, #746867, #762206, #768956, #768979] Contributors: Jonas Ådahl, Piotr Drąg, Hyungwon Hwang, Kalev Lember, Rui Matos, Florian Müllner, Marinus Schraal, Owen W. Taylor Translations: Andika Triwidada [id], Daniel Mustieles [es], Bruce Cowan [en_GB], Dušan Kazik [sk], Piotr Drąg [pl], Chao-Hsiung Liao [zh_HK] 3.21.3 ====== * Do not disable suspend action when locked [Florian; #725960] * Remember input sources MRU list [Cosimo; #766826] * networkAgent: Handle VPN service aliases [David; #658484] * Plug a memory leak [Hans; #710230] Contributors: Cosimo Cecchi, Florian Müllner, Hans Petter Jansson, David Woodhouse Translations: Tiago Santos [pt], Cédric Valmary [oc], Muhammet Kara [tr], Daniel Mustieles [es], Rafael Fontenelle [pt_BR] 3.21.2 ====== * Fix sorting of hidden apps in app switcher [Florian; #766238] * Set logind's LockedHint property when locked [Victor; #764773] * Allocate framebuffers early to fix a crash on NVIDIA [Martin; #764898] * Fix cycle-windows/cycle-group keybindings [Florian; #730739] * Switch to shared desktop schema for calendar settings [Iain; #766318] * Misc. bug fixes [Florian, Cosimo, Michele; #766325, #758471, #757556, #757019, #766598] Contributors: Cosimo Cecchi, Michele Gaio, Iain Lane, Florian Müllner, Martin Szulecki, Victor Toso Translations: Tiago Santos [pt], Kjartan Maraas [nb], Jiro Matsuzawa [ja], Cédric Valmary [oc], Sveinn í Felli [is] 3.21.1 ====== * Save screencasts in HOME if XDG_VIDEO_DIR doesn't exist [Florian; #765015] * Don't show orientation lock when g-s-d won't rotate [Florian; #765267] * Misc. bug fixes [Heiher, Florian, Marek, Rui; #722752, #765061, #763068, #765607, #757676, #760439] Contributors: Heiher, Marek Chalupa, Rui Matos, Florian Müllner Translations: Arash Mousavi [fa], Kristjan SCHMIDT [eo], GNOME Translation Robot [gd] 3.20.1 ====== * Plug a memory leak [Aaron; #735705] Contributors: Aaron Plattner Translations: Daniel Korostil [uk], Matej Urbančič [sl], Inaki Larranaga Murgoitio [eu], Cheng-Chia Tseng [zh_TW], Fabio Tomat [fur], Trần Ngọc Quân [vi], YunQiang Su [zh_CN], Marek Černocký [cs], Arash Mousavi [fa], Alexander Shopov [bg], Khaled Hosny [ar] 3.20.0 ====== Translations: Changwoo Ryu [ko], Baurzhan Muftakhidinov [kk], Milo Casagrande [it], Anders Jonsson [sv], Muhammet Kara [tr], Alexandre Franke [fr], Rūdolfs Mazurs [lv], Ask Hjorth Larsen [da], Jiro Matsuzawa [ja] 3.19.92 ======= * Update location dialog according to latest mockups [Zeeshan; #762480] * Fix deleting chat notifications in calendar [Florian; #747991] Contributors: Zeeshan Ali (Khattak), Florian Müllner Translations: Rūdolfs Mazurs [lv], Changwoo Ryu [ko], Matej Urbančič [sl], Justin van Steijn [nl], Fabio Tomat [fur], Kris Thomsen [da], Marek Černocký [cs], Piotr Drąg [pl], Dušan Kazik [sk], Мирослав Николић [sr, sr@latin], Balázs Úr [hu], Yosef Or Boczko [he], Daniel Mustieles [es], Fran Dieguez [gl], Bernd Homuth [de], Tom Tryfonidis [el], Jiri Grönroos [fi], Gil Forcada [ca], Artur Morais [pt_BR], Aurimas Černius [lt], Stas Solovey [ru] 3.19.91 ======= * location: Ask user only once [Zeeshan; #762559] * Fix jiggling when auto-hiding legacy tray [Florian; #747957] * Misc. bug fixes [Florian, Michael, Ting-Wei; #762475, #762507, #755659] Contributors: Zeeshan Ali (Khattak), Michael Catanzaro, Ting-Wei Lan, Florian Müllner Translations: Мирослав Николић [sr, sr@latin], Piotr Drąg [pl], A S Alam [pa], Artur de Aquino Morais [pt_BR], Daniel Mustieles [es], Chao-Hsiung Liao [zh_TW], Daniel Korostil [uk], Fran Dieguez [gl], Tom Tryfonidis [el], Bernd Homuth [de], Sebastian Rasmussen [sv], Jordi Mas [ca], Piotr Drąg [ga], Cédric Valmary [oc], Gábor Kelemen [hu], Baurzhan Muftakhidinov [kk], Friedel Wolff [af], Marek Černocký [cs], Mingye Wang (Arthur2e5) [zh_CN], Aron Xu [zh_CN], Khaled Hosny [ar], Aurimas Černius [lt], Stas Solovey [ru], Yosef Or Boczko [he] 3.19.90 ======= * Correctly identify VPN secret requests [Lubomir; #760999] * Improve week number presentation [Jakub; #683245] * Add audio device selection dialog [Florian; #760284] * Add media controls to the time and date drop down [Florian; #756491] * Fix IBus candidate popup position under wayland [Rui; #753476] * Ask user to grant applications access to location [Zeeshan; #762119] * Misc. bug fixes [Mario, Jakub, Florian; #761208, #761772, #762270] Contributors: Zeeshan Ali (Khattak), Michael Catanzaro, Rui Matos, Florian Müllner, Lubomir Rintel, Mario Sanchez Prada, Jakub Steiner Translations: Alexander Shopov [bg], Balázs Meskó [hu], Fabio Tomat [fur], Dušan Kazik [sk], Piotr Drąg [pl], Alexandre Franke [fr], Mario Blättermann [de], Milo Casagrande [it], Jordi Mas [ca] 3.19.4 ====== * gdm: Do not allow bypassing disabled Sign In button [Michael; #746180] * Style week numbers in calendar [Jakub; #683245] * Misc. bug fixes [Christophe, Jakub, Rui; #759708, #760577, #760945] Contributors: Michael Catanzaro, Marek Černocký, Christophe Fergeau, Rui Matos, Jakub Steiner Translations: Aurimas Černius [lt], Enrico Nicoletto [pt_BR], Andika Triwidada [id], Mario Blättermann [de], Marek Černocký [cs], Kjartan Maraas [nb], Muhammet Kara [tr], Stas Solovey [ru] 3.19.3 ====== * Fix thumbnail scaling in window switcher on HiDPI [Florian; #758676] * Update animated backgrounds on timezone changes [Florian; #758939] * loginDialog: Update user list on user changes [Michael; #758568] * Fix touch interaction on wayland [Carlos; #756748] Contributors: Michael Catanzaro, Carlos Garnacho, Kalev Lember, Florian Müllner Translations: Daniel Korostil [uk], Muhammet Kara [tr], Dušan Kazik [sk], Baurzhan Muftakhidinov [kk], Marek Černocký [cs] 3.19.2 ====== * Make gnome-shell DBus activatable [Ray; #741666] * Fix browser plugin crash in Firefox [Carlos; #737932, #757940] * Optionally show battery percentage in system status area [Bastien; #735771] * Misc. bug fixes [Kalev, Florian, Bastien; #757418, #757668, #757779, #757816, #745626, #758220] Contributors: Michael Biebl, Michael Catanzaro, Piotr Drąg, Carlos Garcia Campos, Kalev Lember, Florian Müllner, Bastien Nocera, Ray Strode Translations: Pedro Albuquerque [pt], liushuyu [zh_CN], Yosef Or Boczko [he], Jiri Grönroos [fi], Kjartan Maraas [nb], GNOME Translation Robot [gd], Daniel Mustieles [es], Marek Černocký [cs], Kristjan SCHMIDT [eo], Stas Solovey [ru] 3.19.1 ====== * Respect text-scaling factor under wayland [Owen; #756447] * Show the Bluetooth submenu when there were setup devices [Bastien; #723848] * Misc. bug fixes [Florian, Cosimo, Rui, Ray, Owen, Jakub, Bastien; #756697, #756714, #756605, #754814, #738942, #756983, #756925, #757011, #673235, #757150] Contributors: Cosimo Cecchi, Rui Matos, Florian Müllner, Bastien Nocera, Jakub Steiner, Ray Strode, Owen W. Taylor Translations: Kjartan Maraas [nb], Khaled Hosny [ar], Balázs Meskó [hu], Daniel Șerbănescu [ro], Marek Černocký [cs] 3.18.1 ====== * Fix screen freezes when a notification is pushed [Carlos; #755425] * Fix overzealous ellipsization in system status menu [Adel, Florian; #708472] * Hide app menu when disabled by setting [Florian; #745919] * Fix lightbox effect when animations are disabled [Rui; #755827] * Do not mark hotplug notifications as critical [Florian; #657923] * Fix icons getting cut off in dash [Florian; #745649] * Animate fullscreen/unfullscreen operations [Cosimo; #707248] * Misc. bug fixes [Florian, Owen; #748919, #674799, #754581] Contributors: Emmanuele Bassi, Michael Catanzaro, Cosimo Cecchi, Matthias Clasen, Adel Gadllah, Carlos Garnacho, Ekaterina Gerasimova, Rui Matos, Florian Müllner, Owen W. Taylor Translations: Марко Костић [sr], Милош Поповић [sr@latin], Khaled Hosny [ar], Trần Ngọc Quân [vi], Petr Kovar [cs], Alexandre Franke [fr], Fran Dieguez [gl], Anders Jonsson [sv], Piotr Drąg [pl], Dušan Kazik [sk], Milo Casagrande [it], Changwoo Ryu [ko], Stas Solovey [ru], Rafael Fontenelle [pt_BR], Tom Tryfonidis [el], Aurimas Černius [lt], Seán de Búrca [ga], Christian Kirbach [de], Jiri Grönroos [fi], Pedro Albuquerque [pt], Baurzhan Muftakhidinov [kk], Daniel Mustieles [es], Marek Černocký [cs], Ask Hjorth Larsen [da], Inaki Larranaga Murgoitio [eu] 3.18.0 ====== Translations: Sendy Aditya Suryana [id], Kris Thomsen [da], Seán de Búrca [ga], Andika Triwidada [id], Enrico Nicoletto [pt_BR], Anders Jonsson [sv], Rūdolfs Mazurs [lv] 3.17.92 ======= * Fix race when loading multiple background animations [Josselin; #741453] Contributors: Michael Biebl, Josselin Mouette, Florian Müllner Translations: Baurzhan Muftakhidinov [kk], Changwoo Ryu [ko], Christian Kirbach [de], Kjartan Maraas [nb], Jiri Grönroos [fi], Arash Mousavi [fa], Jiro Matsuzawa [ja], Marek Černocký [cs], Milo Casagrande [it] 3.17.91 ======= * Fix login screen spinner causing wakeups while VT-switched away [Ray, Rui; #753891] * Fix scrolling of user list on login screen [Florian; #754525] Contributors: Piotr Drąg, Rui Matos, Florian Müllner, Ray Strode Translations: Dušan Kazik [sk], Jordi Mas [ca], Aurimas Černius [lt], Stas Solovey [ru], Piotr Drąg [pl], Pedro Albuquerque [pt], Daniel Mustieles [es], Chao-Hsiung Liao [zh_TW], Muhammet Kara [tr], Fran Dieguez [gl], Hannie Dumoleyn [nl], Yosef Or Boczko [he], Tom Tryfonidis [el], A S Alam [pa], Balázs Úr [hu], Alexandre Franke [fr], Frédéric Péters [fr] 3.17.90 ======= * Avoid caret/focus viewport changes during pointer movement [Rui; #752138] * Match GTK+'s modal dialogs for system modal dialogs [Carlos; #746108] * Refine message list style [Florian; #749958] * Fix type-ahead behavior for backspace and compose key [Rui; #753319, #753320] * Refine the system status menu [Florian; #751377] * Misc. bug fixes and cleanups [Bastien, Ray, Florian, Jakub; #752779, #752739, #741366, #651503, #753064, #753181, #752881] Contributors: Rui Matos, Florian Müllner, Bastien Nocera, Carlos Soriano, Jakub Steiner, Ray Strode, Rico Tzschichholz Translations: Marek Černocký [cs], Kjartan Maraas [nb], Jordi Mas [ca], Muhammet Kara [tr], Enrico Nicoletto [pt_BR] 3.17.4 ====== * Fix fuzziness of app menu icon [Jakub; #747932] * Implement 4 finger swipe gesture for touchpads [Carlos; #752250] * Misc. bug fixes [Florian, Alexandre, Piotr, Ray, Mario; #751921, #659969, #752438, #752675] Contributors: Piotr Drąg, Alexandre Franke, Carlos Garnacho, Florian Müllner, Mario Sanchez Prada, Jakub Steiner, Jasper St. Pierre, Ray Strode Translations: Benjamin Steinwender [de], Pedro Albuquerque [pt], Fabio Tomat [fur], Matej Urbančič [sl], Daniel Mustieles [es], Yosef Or Boczko [he], Daniel Martinez [an] 3.17.3 ====== * Handle touch events in OSK on wayland [Rui; #750287] * Reinstate left/right movement to window menu [Ron; #751344] * Allow extensions to disable "Window is ready" notification [Adel; #748846] * Misc. bug fixes [Watson, Michael, Ray, Rui, Florian, Cosimo; #750465, #751016, #751517, #750714, #751541, #751599] Contributors: Michael Biebl, Cosimo Cecchi, Adel Gadllah, Rui Matos, Florian Müllner, Ray Strode, Wim Taymans, Ron Yorston, Watson Yuuma Sato Translations: Sebastian Rasmussen [sv], Dimitris Spingos [el], Muhammet Kara [tr], Stas Solovey [ru], Benjamin Steinwender [de], Balázs Úr [hu], Victor Ibragimov [tg], Dušan Kazik [sk], Pedro Albuquerque [pt] 3.17.2 ====== * Remove StTable widget [Florian; #703833] * Increase visibility of expanders in alt-tab popup [Jakub; #745058] * Ensure suspend inhibitors are released when VT switched away [Rui; #749228] * Use iio-sensor-proxy directly for orientation lock [Bastien; #749671] * Misc. bug fixes [Florian, Lan, Carlos; #749279, #749383, #749529, #749490, #749742] Contributors: Carlos Garnacho, Ting-Wei Lan, Rui Matos, Florian Müllner, Bastien Nocera, Jakub Steiner Translations: Yosef Or Boczko [he], sun [zh_CN], Felipe Braga [pt_BR], Victor Ibragimov [tg], Gábor Kelemen [hu], Cédric Valmary [oc], Dušan Kazik [sk], Kjartan Maraas [nb], Bruno Ramalhete [pt], Matej Urbančič [sl], Daniel Mustieles [es] 3.17.1 ====== * Add Display Settings entry to background menu [Meet; #697346] * Add window menu option to move to different monitor [Isaac; #633994] * Improve switch style in default/highContrast themes [Jakub; #746294, #747912] * Make event highlight in calendar more prominent [Jakub; #747715] * Fix keyboard focus when focusing a notification banner [Florian; #747205] * Move notification banners below the dateMenu [Meet, Florian; #745910] * Misc. bug fixes [Mario, Rui; #748338, #748541] Contributors: Isaac Ge, Rui Matos, Florian Müllner, Meet Parikh, Mario Sanchez Prada, Jakub Steiner, Jasper St. Pierre Translations: Sveinn í Felli [is], Marek Černocký [cs], laurent Soleil [oc] 3.16.1 ====== * gdm: Move long session chooser menus to the side [Florian; #734352] * Work around background corruption with NVIDIA driver [Rui; #739178] * Don't allow move-to-workspace for always-sticky windows [Florian; #746782] * Allow switching workspaces with PgUp/PgDown in overview [Devyani; #742581] * Bump time PAM messages are displayed [Sarvjeet; #720885] * Fix "stutter" when moving window past the last workspace [Shivam; #712778] * Fix blurred text on login screen [Clément; #746912] * keyboard: Restore whole MRU list after password mode [Rui; #746605] * Pass event timestamps when activating remote actions [Owen; #747323] * Fix hung login screen when password is typed too quickly [Shivam; #737586] * Make on-screen keyboard work for shell chrome on wayland [Rui; #747274] * Implement reexec_self() for FreeBSD [Ting-Wei; #747788] * Allow to dismiss resident notifications [Florian; #746860] * Temporarily reveal legacy tray when icons are added [Florian; #746025] * Make concealed tray smaller to minimize overlap with apps [Florian; #746787] * Misc. bug fixes [Florian, Rui, Giovanni; #746323, #746579, #746902, #746364, #746509, #747636] Contributors: Sarvjeet, Giovanni Campagna, Adel Gadllah, Clément Guérin, Devyani Kota, Ting-Wei Lan, Rui Matos, Shivam Mishra, Florian Müllner, Owen W. Taylor Translations: Khaled Hosny [ar], Dušan Kazik [sk], Yuri Myasoedov [ru], Stas Solovey [ru], Hannie Dumoleyn [nl], Rūdolfs Mazurs [lv] 3.16.0 ====== * Revert erroneous login dialog changes [Ray; #740142] * Improve accessibility of legacy tray [Florian; #746487] * Fix legacy status icons leaking into other monitors [Florian; #745824] Contributors: Florian Müllner, Ray Strode Translations: Daniel Martinez [an], Sebastian Rasmussen [sv], Fran Dieguez [gl], Andika Triwidada [id], Jordi Mas [ca], Kjartan Maraas [nb], Inaki Larranaga Murgoitio [eu], Muhammet Kara [tr], Khaled Hosny [ar], Bernd Homuth [de], Jiro Matsuzawa [ja] 3.15.92 ======= * gdm: Fix user list accessibility [Florian; #729603] * Handle multiline questions in mount operations [Ross; #745713] * Improve classic theme [Jakub; #745686, #745687] * Fix ordering of calendar events [Florian; #745988] * Pick first input source for new windows when per-window [Rui; #746037] * networkAgent: Show a notification for non-user-initiated password requests [Giovanni; #660293] * Fix dismissing calendar events [Florian; #744927] * Add legacy tray to ctrl-alt-tab popup [Florian; #746022] * Manage on-screen-keyboard visibility in gnome-shell [Carlos; #745977] * Add pointer barriers to legacy tray [Cosimo; #746026] * Use fallback when app icon cannot be resolved [Cosimo; #746219] * Fix handling of removed smartcard at startup [Ray; #740143] * gdm: Don't pick a random session for the user [Jasper; #740142] * Make menu selection behavior consistent with GTK [Florian; #745246] * gdm: Fix empty user list on user switching [Ray; #719418] * Misc bug fixes [Florian, Giovanni, Clément, Rui; #745666, #746019, #745861, #746027, #746223, #737502, #746343, #746288] Contributors: Giovanni Campagna, Cosimo Cecchi, Piotr Drąg, Adel Gadllah, Carlos Garnacho, Clément Guérin, Ross Lagerwall, Rui Matos, Florian Müllner, Jakub Steiner, Jasper St. Pierre, Ray Strode Translations: Piotr Drąg [pl], Changwoo Ryu [ko], Milo Casagrande [it], Baurzhan Muftakhidinov [kk], Мирослав Николић [sr, sr@latin], Balázs Úr [hu], IWAI, Masaharu [ja], Daniel Korostil [uk], Aurimas Černius [lt], Matej Urbančič [sl], Daniel Mustieles [es], Kjartan Maraas [nb], Victor Ibragimov [tg], Claude Paroz [fr], Jordi Mas [ca], Bernd Homuth [de], Muhammet Kara [tr], Frédéric Péters [fr], Jiri Grönroos [fi], Alexander Shopov [bg], Stas Solovey [ru], Trần Ngọc Quân [vi], Samir Ribic [bs], Dušan Kazik [sk], Enrico Nicoletto [pt_BR], Marek Černocký [cs], A S Alam [pa], Ask Hjorth Larsen [da], Tom Tryfonidis [el], Alexandre Franke [fr], Yosef Or Boczko [he], Chao-Hsiung Liao [zh_TW] 3.15.91 ======= * Don't disable all shortcuts while non-panel menus are open [Florian; #745039] * Do not wake up the screen for disabled notifications [Florian; #744114] * Add unminimize animation [Florian; #702662] * Change default shortcut for viewing notifications [Florian; #687986] * Add shortcut to dismiss notifications from list [Florian; #745279] * Use Polari instead of Empathy for IRC conversations [Giovanni; #745431] * Add a hideable bottom tray for legacy status icons [Florian; #745162] * Improve accessibility of calendar/message list [Florian; #706903, #745393] * Fix window thumbnail scaling in overview [Sebastian; #744883] * Stop handling non-chat notifications for Empathy [Giovanni; #745503] * Fix mouse interaction with ibus candidate window [Rui; #745167, #745245] * Misc bug fixes and cleanups [Giovanni, Florian, Miguel, Cosimo, Jakub, Michele, Raul, Matthias, Rui; #677412, #744880, #744900, #744894, #744907, #745061, #741111, #744912, #745175, #745246, #744959, #744575, #745570, #652742, #659187, #745412, #745521, #745521, #741665, #745574, #745627, #745494, #745111, #745132, #745110] Contributors: Michele, Giovanni Campagna, Cosimo Cecchi, Matthias Clasen, Raul Gutierrez Segales, Sebastian Keller, David Liang, Rui Matos, Florian Müllner, Yosef Or Boczko, Jakub Steiner, Jasper St. Pierre, Rico Tzschichholz, Miguel Vaello Martínez Translations: Dušan Kazik [sk], Chao-Hsiung Liao [zh_TW], Muhammet Kara [tr], Balázs Úr [hu], Daniel Mustieles [es], Frédéric Péters [fr], Rafael Ferreira [pt_BR], Aurimas Černius [lt], Milo Casagrande [it], Yosef Or Boczko [he], Stas Solovey [ru], Baurzhan Muftakhidinov [kk], Daniel Korostil [uk], Fran Dieguez [gl], Kjartan Maraas [nb], Tom Tryfonidis [el], Cheng-Chia Tseng [zh_TW], Friedel Wolff [af], Alexandre Franke [fr], Efstathios Iosifidis [el], Aron Xu [zh_CN], Marek Černocký [cs], Enrico Nicoletto [pt_BR] 3.15.90 ======= * gdm: Fix reactivity of first user in user list [Ray; #743370] * Prevent DND to dash when favorites are locked down [David; #741325] * Prevent DND in app picker when favorites are locked down [Murray; #741325] * Implement Display panel's OSD monitor labels in the shell [Rui; #743744] * Remove GSystem dependency [Colin; #744457] * Do not duplicate "New Window" action in dash [Florian; #744446] * Fix 'draw-cursor' option of screen recorder [Alexander; #744599] * Fix screencast timestamps [Sebastian; #744642] * Allow keybindings for switching to VT8-VT12 [Ray; #744800] * Implement notification redesign [Florian; #744498, #744815, #744817, #744850] * Fix struts computation of chrome on non-primary monitors [Sylvain; #744183] * Visual refresh based on GTK+ theme redesign [Jakub, Carlos; #737785, #744680] * Misc. bug fixes and cleanups [Ray, Bastien, Cosimo, Rui, Florian; #743371, #736182, #744013, #743993, #744665] Contributors: Cosimo Cecchi, Murray Cumming, Sebastian Dröge, David King, Alexander Larsson, Rui Matos, Florian Müllner, Bastien Nocera, Sylvain Pasche, Carlos Soriano, Jakub Steiner, Jasper St. Pierre, Ray Strode, Colin Walters Translations: Daniel Martinez [an], Sveinn í Felli [is], GNOME Translation Robot [de], Yosef Or Boczko [he], Kristjan SCHMIDT [eo], Dušan Kazik [sk], Andika Triwidada [id], Marek Černocký [cs], Muhammet Kara [tr], Matej Urbančič [sl], Milo Casagrande [it], Anders Jonsson [sv] 3.15.4 ====== * Add mode parameter to AcceleratorActivated signal [Florian; #711682] * Fix PID based window/app association [Sebastian; #736527] * Fix current day highlight on day change [Sebastian; #742492] * Switch to vp9 for screencast recordings [Adel; #742744] * Disable IBus input sources on password entries [Takao; #730628] * Make slider scrolling smoother [Adel; #742648] * Allow move-up shortcut to move window above top workspace [Florian; #665764] * Misc. bug fixes [Adel, Rui; #742748, #742824, #741114] Contributors: Cosimo Cecchi, Takao Fujiwara, Adel Gadllah, Sebastian Keller, Rui Matos, Florian Müllner, Jasper St. Pierre Translations: Andika Triwidada [id], Matej Urbančič [sl], Saibal Ray [bn_IN], Inaki Larranaga Murgoitio [eu], Stas Solovey [ru], Kjartan Maraas [nb], Balázs Úr [hu], Marek Černocký [cs], Rafael Ferreira [pt_BR], Bernd Homuth [de], Daniel Mustieles [es], Fabio Tomat [fur] 3.15.3 ====== * Add support for high-contrast themes [Florian; #740447] * Fix banner message on login screen without user list [Ray; #703972] * Fix flicker when activating windows on another workspace [Florian; #741680] * Misc. bug fixes [Giovanni, Florian; #735308, #740237] Contributors: Giovanni Campagna, Florian Müllner, Jasper St. Pierre, Ray Strode Translations: Balázs Úr [hu], Josef Andersson [sv], Muhammet Kara [tr], Baurzhan Muftakhidinov [kk], Inaki Larranaga Murgoitio [eu] 3.15.2 ====== * Fix visual glitch of window preview outline in overview [Chris; #699044] * Change user facing name of "Captive Portal" to "Network Login" [Elad; #737198] * Port to Python 3 [Slavek; #732478] * Hide Airplane mode indicator when g-s-d says so [Cosimo; #736292] * Allow translators to change non-work days [Lavi; #664645] * Delay invocation of caribou daemon until really needed [Daiki; #739712] * Don't lock screen after crash if locking is disabled [Adel; #704884] * Improve layout of extension installation dialog [William; #739888] * Fix workspace changes from app picker [Yuki; #737534] * Preload all ibus input sources in user configuration [Takao; #695428] * Properly remove network connections from list [Ryan; #740227] * Support CSS margin property [Carlos; #728437] * Improve handling of BUSY application state [Phillip; #736492] * Fix erroneous week numbers in calendar [Florian; #736722] * Misc. bugfixes and cleanups [Darcy, Yuki, Alexander, Eskild, Bastien, Cosimo, Colin, Ray; #738725, #739497, #739241, #672500, #739822, #740074, #704163, #740141] Contributors: Yuki, Lavi .A, Elad Alfassa, Cosimo Cecchi, Takao Fujiwara, Adel Gadllah, Eskild Hustvedt, Chris Johns, William Jon McCann, Slavek Kabrda, Ryan Lortie, Florian Müllner, Bastien Nocera, Christian Persch, Carlos Soriano, Jasper St. Pierre, Ray Strode, Alexander Tsoy, Daiki Ueno, Colin Walters, Phillip Wood Translations: Jorge Perez Perez [an], Daniel Martinez [an], Daniel Mustieles [es], Trần Ngọc Quân [vi], Changwoo Ryu [ko], Kjartan Maraas [nb], Yosef Or Boczko [he], Marek Černocký [cs] 3.15.1 ====== * Use GResources for theme loading [Cosimo; #736936] * Reset the OSK to primary on monitor changes [Rui; #738536] * Use LC_TIME locale for format string translations [Florian; #738640] * Summarize queued up notifications [Devyani; #702460] * Improve handling of multi-day events [Andreas; #727302] * Support EXTERNAL scroll policy type [Florian; #739379] * Misc. bugfixes [Owen, Rui; #738652, #739252] Contributors: Andreas Brauchli, Cosimo Cecchi, Devyani Kota, Rui Matos, Florian Müllner, Jasper St. Pierre, Owen W. Taylor Translations: Bahodir Mansurov [uz@cyrillic] 3.14.1 ====== * Fix pulse animation for scrolled app folders [Florian; #736885] * Fix updating background on file changes [Owen; #710756] * Obtain keyboard variant from IBus [Jinkyu; #735066] * Implement Ctrl-u / Ctrl-k keybindings in entries [Florian; #737346] * Pass VPN hints to auth dialog [Dan; #737592] * Only allow one screenshot request at a time [Adel; #737456] * Respect disable-save-to-disc lockdown setting [Florian; #737846] * Respect scaling-factor for profile pictures [Darcy; #735419] * Focus login screen after lifting the lock screen shield [Ray; #708105] * Speed up pulse animation for few items [Carlos S.; #737017] * Fix gap between workspace switcher and screen edge [Florian; #728899] * Disable unredirection during recordings [Adel; #738226] * Ensure there's always at least one input source [Rui; #738303] * Restrict width of dash icons' context menus [Adel; #738054] * Misc. bug fixes [Jasper, Florian, Carlos G., Owen; #736999, #737382, #737001, #738314, #738256, #738147] Contributors: Darcy Beurle, Cosimo Cecchi, Adel Gadllah, Carlos Garnacho, Rui Matos, Florian Müllner, Carlos Soriano, Jasper St. Pierre, Ray Strode, Patrick Ward, Dan Williams, Owen W. Taylor, Jinkyu Yi Translations: Мирослав Николић po/sr, sr@latin.po, Fran Diéguez [gl], Marek Černocký [cs], Saibal Ray [bn_IN], Rajesh Ranjan [hi], Friedel Wolff [af], Zhou Fang [zh_CN], Krishnababu Krothapalli [te], Kjartan Maraas [nb], Rūdolfs Mazurs [lv], Sweta Kothari [gu], Christian Kirbach [de], Cheng-Chia Tseng [zh_TW], Pedro Albuquerque [pt], Daniel Mustieles [es], Luca Ferretti [it], Baurzhan Muftakhidinov [kk], Arash Mousavi [fa], Milo Casagrande [it] 3.14.0 ====== * Fix exposure of the accessible tree [Alejandro; #736821] * Hide empty app folders in app picker [Florian; #736910] Contributors: Florian Müllner, Alejandro Piñeiro Translations: Yuri Myasoedov [ru], Pawan Chitrakar [ne], Manoj Kumar Giri [or], Daniel Mustieles [es], GNOME Translation Robot [de], Rajesh Ranjan [hi], Shankar Prasad [kn], Kenneth Nielsen [da], Daniel Korostil [uk], Changwoo Ryu [ko], A S Alam [pa], Tom Tryfonidis [el], Petr Kovar [cs] 3.13.92 ======= * Fix submenu arrow animations [Hashem; #728927] * Always initialize clutter accessibility [Alejandro; #735908] * Adapt to mutter background changes [Owen; #735638] * Improve handling of outOfDate extensions in prefs [Florian; #736185] * Port offline updates to PackageKit's DBus interface [Kalev; #736337] * location: Translate accuracy levels for geoclue [Zeeshan; #736479] * Implement input source switching [Rui; #736435] * Fix crash when dragging window from workspace switcher [Carlos G.; #735972] * Clean out list of default favorites [Elad; #735682] * Add settings link to location submenu [Florian; #736542] * Fix keynav of message tray menu button [Florian; #707799] * Misc. bug fixes [Carlos G., Florian, Rui; #736110, #736329, #736343, #735927, #735976] Contributors: Elad Alfassa, Zeeshan Ali (Khattak), Michael Catanzaro, Adel Gadllah, Carlos Garnacho, Kalev Lember, Rui Matos, Florian Müllner, Hashem Nasarat, Alejandro Piñeiro, Carlos Soriano, Jasper St. Pierre, Owen W. Taylor Translations: Piotr Drąg [pl], Changwoo Ryu [ko], Yuri Myasoedov [ru], Zhou Fang [ja], Peter Mráz [sk], Ville-Pekka Vainio [fi], Sweta Kothari [gu], Marek Černocký [cs], A S Alam [pa], Christian Kirbach [de], Alexandre Franke [fr], Aurimas Černius [lt], Khaled Hosny [ar], Enrico Nicoletto [pt_BR], Andika Triwidada [id], Shantha kumar [ta], Matej Urbančič [sl], Pawan Chitrakar [ne], Yosef Or Boczko [he], Balázs Úr [hu], Dušan Kazik [sk], Gil Forcada [ca], Carles Ferrando [ca@valencia], Nilamdyuti Goswami [as], Ivaylo Valkov [bg], Sandeep Sheshrao Shedmake [mr], Umarzuki Bin Mochlis Moktar [ms], Muhammet Kara [tr], Jiro Matsuzawa [ja], Kris Thomsen [da], Mattias Eriksson [sv] 3.13.91 ======= * Fix keynav into session menu on login screen [Florian; #735614] * Add gesture to summon message tray [Carlos G.; #735625] * Accept scrolls/swipes either way on the screen shield [Jasper; #734874] * Animate opening the app picker and improve app folder animations [Carlos S.; #734726] * Animate app icons on launching a new window [Carlos S., Florian; #734726] * Show the on-screen keyboard when touch input is being used [David; #702015] * Misc. bug fixes [Bastien, Owen, Florian, Carlos G.; #735190, #735385, #735608, #735681] Contributors: Carlos Garnacho, David King, Kalev Lember, Florian Müllner, Bastien Nocera, Carlos Soriano, Jasper St. Pierre, Owen W. Taylor Translations: Fran Diéguez [gl], Sweta Kothari [gu], Manoj Kumar Giri [or], Alain Lojewski [fr], Praveen Illa [te], Arash Mousavi [fa], Andika Triwidada [id] 3.13.90 ======= * Make use of GLSL optional [Adel; #733623] * Update on-screen-keyboard position on monitor changes [Cosimo; #733790] * Improve window manager animations [Giovanni; #732857] * Handle touch events [Carlos G.; #733633] * Try to not show "New Window" action for single-window apps [Giovanni; #722554] * Fix overview exceeding screen size with many apps installed [Carlos S.; #723496] * Add Software to default favorites [Mathieu; #734406] * Improve app picker <-> desktop transition [Carlos S.; #732901] * Remove -magic for switcher popups [Christophe; #732296] * Add a special background to use for performance testing [Owen; #734610] * Add support for default disabled search providers [Giovanni; #734110] * Fix portals that don't redirect properly [Giovanni; #733848] * Fix history trimming in chat notifications [Giovanni; #733899] * Try to use default calendar application [Florian; #722333] * Only show location menu when geolocation is in use [Zeeshan; #731122] * Misc. bug fixes and cleanups [Giovanni, Carlos G., Zeeshan, Carlos S., Cosimo; #711682, #733840, #734483, #734680, #733813, #735062] Contributors: Zeeshan Ali (Khattak), Mathieu Bridon, Giovanni Campagna, Cosimo Cecchi, Piotr Drąg, Christophe Fergeau, Adel Gadllah, Carlos Garnacho, Florian Müllner, Carlos Soriano, Jasper St. Pierre, Olav Vitters, Owen W. Taylor Translations: Aurimas Černius [lt], MarMav [el], Inaki Larranaga Murgoitio [eu], Reinout van Schouwen [nl], ngoswami [as], Fabio Tomat [fur], Chao-Hsiung Liao [zh_HK, zh_TW] 3.13.4 ====== * Handle portal login requests [Giovanni; #704416] * Scale fonts on wayland on hiDPI devices [Adel; #732537] * Fix default ibus candidate index labels [Rui; #702944] * Add gestures for various system actions [Carlos G.] * Add performance test script for the perf.gnome.org [Owen; #732350] * Use new restart framework to improve restart visuals [Owen; #733026] * Improve keynav in app folder popups [Carlos S.; #731477] * Fix truncation of app search results [Carlos S.; #732416] * Automatically update renamed desktop files in favorites [Kalev; #729429] * Misc. bug fixes and cleanups [Giovanni, Yosef, Owen, Bastien, Javier; #729823, #726401, #732301, #732348, #732349, #733498, #733540] Contributors: Giovanni Campagna, Adel Gadllah, Carlos Garnacho, Javier Hernández, Kalev Lember, Rui Matos, Florian Müllner, Bastien Nocera, Yosef Or Boczko, Carlos Soriano, Jasper St. Pierre, Owen W. Taylor Translations: Yuri Myasoedov [ru], Daniel Mustieles [es], Fran Diéguez [gl], Cheng-Chia Tseng [zh_TW], A S Alam [pa], Benjamin Steinwender [de], Enrico Nicoletto [pt_BR], MarMav [el], Yosef Or Boczko [he], Kjartan Maraas [nb] 3.13.3 ====== * Don't allow closing windows with attached modals [Florian; #729886] * Fix self-restarting on OpenBSD [Antoine; #727763] * Improve behavior of window buttons with compositor menus [Florian; #731058] * Work around atspi-related performance regression [Alejandro; #730118] * Misc bug fixes and cleanups [Florian, Lan, Jasper, Christophe, Debarshi, Zeeshan; #728271, #726460, #703833, #731118, #731220, #695487, #730527, #728170, #731619, #731738, #731882, #731923] Contributors: Zeeshan Ali (Khattak), Christophe Fergeau, Adel Gadllah, Antoine Jacoutot, Ting-Wei Lan, Florian Müllner, Alejandro Piñeiro, Debarshi Ray, Carlos Soriano, Jasper St. Pierre, Wim Taymans, Rico Tzschichholz Translations: Philip Withnall [en_GB], Milo Casagrande [it], Aurimas Černius [lt], Enrico Nicoletto [pt_BR], Kjartan Maraas [nb], Balázs Meskó [hu], Muhammet Kara [tr], Daniel Mustieles [es], Yosef Or Boczko [he], Matej Urbančič [sl], Mattias Eriksson [sv] 3.13.2 ====== * Make airplane mode menu insensitive in lock screen [Giovanni; #729224] * Don't always extend struts to the screen edge [Florian; #683819] * Fix keynav for alternatives in AltSwitcher [Florian; #727259] * Implement window menus in the shell [Jasper; #726352] * Support resource:/// URLs in GNOME_SHELL_JS envvar [Owen; #730409] * Fix switcher popups with keybindings containing Escape [Rui; #730739] * Update extension-prefs UI to follow GNOME 3 patterns [Florian; #730829] * Add support for fallback app menu in window decorations [Florian; #730752] * Fix keynav escaping open app folders [Florian; #726760] * Misc. bug fixes [Kalev, Florian, Owen; #729429, #728449, #730408, #730753, #730653] Contributors: Giovanni Campagna, Piotr Drąg, Kalev Lember, Rui Matos, Florian Müllner, Vadim Rutkovsky, Carlos Soriano, Jasper St. Pierre, Owen W. Taylor Translations: Ihar Hrachyshka [be], Giovanni Campagna [it], Carles Ferrando [ca@valencia], Daniel Mustieles [es], Aurimas Černius [lt], Enrico Nicoletto [pt_BR], Yosef Or Boczko [he], Marek Černocký [cs], Muhammet Kara [tr], Georges Neto [pt_BR], Andika Triwidada [id] 3.13.1 ====== * Ensure the currently focused app icon is viewable [Rui; #726759] * Improve language in location menu [Zeeshan; #726498] * Improve HiDpi support [Cosimo; #726907] * Set accessible role for window previews [Alejandro; #726670] * Fix bad antialiasing on panel menu buttons [Carlos; #727336] * Don't hide location menu [Zeeshan; #727398] * Fix IM candidate window obscuring current text [Rui; #727579] * Don't always extend struts to the screen edge [Florian; #663690] * Add shortcuts for switching to the last workspace [Elad; #659288] * Show OSD window on all monitors [Adel; #722684] * Improve consistency of labels in network menu [Paul; #727163] * Fix zombie search providers showing up [Jasper; #728597] * Remove ConsoleKit support [Florian; #686626] * Fix region screenshots with open shell menus [Florian; #709126] * Support insert in text entries [Florian; #648318] * Improve app picker scrolling on touch [Jasper; #729064] * Don't make date button clickable when on current date [Carlos; #726724] * Tweak heuristic for hiding workspace switcher [Florian; #662457] * Add option to show in Software to app context menu [Matthias; #643043] * Misc. bug fixes and cleanups [Bastien, Florian, Giovanni, Adel, Vadim, Carlos; #727983, #727948, #728512, #728681, #728897, #727384, #728820, #715042, #728449, #728343] Contributors: Elad Alfassa, Zeeshan Ali (Khattak), Giovanni Campagna, Cosimo Cecchi, Matthias Clasen, Piotr Drąg, Adel Gadllah, Paul Lange, Rui Matos, Simon McVittie, Florian Müllner, Bastien Nocera, Alejandro Piñeiro, Vadim Rutkovsky, Carlos Soriano, Jasper St. Pierre Translations: Khaled Hosny [ar], Piotr Drąg [pl], Yosef Or Boczko [he], Antonio Fernandes C. Neto [pt_BR], Marek Černocký [cs], maria thukididu [el], Andika Triwidada [id], Daniel Mustieles [es], Changwoo Ryu [ko], Benjamin Steinwender [de], Sphinx Jiang [zh_CN], Inaki Larranaga Murgoitio [eu], Marcus Lundblad [sv], Aurimas Černius [lt], Stas Solovey [ru], Alexandre Franke [fr], Matej Urbančič [sl], Fran Diéguez [gl], Pau Iranzo [ca], Luca Ferretti [it], Milo Casagrande [it], Tiago S [pt], Victor Ibragimov [tg], Dirgita [id], Khoem Sokhem [km], Rūdolfs Mazurs [lv], Balázs Úr [hu], Ask H. Larsen [da], Ikuya Awashiro [ja], Wouter Bolsterlee [nl], Daniel Korostil [uk], Daniel Șerbănescu [ro], Enrico Nicoletto [pt_BR] 3.12.0 ====== * gdm: Reset greeter when coming back to login screen [Jasper; #726989] Contributors: Jasper St. Pierre Translations: Daniel Martinez [an], Yuri Myasoedov [ru], Inaki Larranaga Murgoitio [eu], Abderrahim Kitouni [ar], Praveen Illa [te], Matej Urbančič [sl], Chao-Hsiung Liao [zh_HK, zh_TW], Frédéric Péters [fr], Мирослав Николић [sr, sr@latin], Ask H. Larsen [da], Kenneth Nielsen [da], Jiro Matsuzawa [ja], Dušan Kazik [sk] 3.11.92 ======= * calendar: Grab key focus after changing day [Volker; #725606] * gdm: Don't load user list if disabled [Florian; #725905] * Don't show network-offline in the top bar [Jasper; #725340] * Improve radial shade effect of modal dialogs [Giovanni; #725830] * Fix broken suspend-on-idle functionality [Giovanni; #712706] * Close wifi selection dialog when device disappears [Giovanni; #723935] * Don't close chats when pressing Escape [Giovanni; #724178] * Improve smartcard support in login/lock screen [Ray; #726262, #726263] * Wake up screen when resuming from suspend [Giovanni; #726378] * Make bluetooth and location items insensitive when locked [Florian; #726319] * Don't show bluetooth icon when there is no adapter [Giovanni; #725057] * Make sure to keep the OSK on top of modal dialogs [Rui; #719451] * Misc. bug fixes and cleanups [Giovanni, Ray, Adel, Daniel, Jasper, Florian; #725832, #725958, #722149, #724977, #724798, #725020, #723976, #726119, #726238, #585500, #704844, #726323, #726322, #726120, #726414] Contributors: Giovanni Campagna, Daniel Drake, Adel Gadllah, Rui Matos, Florian Müllner, Volker Sobek, Jasper St. Pierre, Ray Strode Translations: Fabio Tomat [fur], Rafael Ferreira [pt_BR], Fran Diéguez [gl], Marek Černocký [cs], Baurzhan Muftakhidinov [kk], Andika Triwidada [id], A S Alam [pa], Rūdolfs Mazurs [lv], Wylmer Wang [zh_CN], Aurimas Černius [lt], Cheng-Chia Tseng [zh_TW], Stas Solovey [ru], Tiagosdot [pt], Benjamin Steinwender [de], Frédéric Peters [fr], Daniel Korostil [uk], Yaron Shahrabani [he], Ville-Pekka Vainio [fi], maria thukididu [el], Victor Ibragimov [tg], Kjartan Maraas [nb], Gábor Kelemen [hu], Ask H. Larsen [da] 3.11.91 ======= * Don't use network profile name in menu [Giovanni; #725586] * calendar: Make date label clickable to return to current date [Vit; #641366] * Misc. bug fixes [Florian, Zeeshan, Adel, Jasper, Dan, Volker; #724813, #724686, #725082, #724870, #724779, #725533] Contributors: Zeeshan Ali (Khattak), Giovanni Campagna, Piotr Drąg, Adel Gadllah, Florian Müllner, Volker Sobek, Vit Stanislav, Jasper St. Pierre, Dan Williams Translations: Victor Ibragimov [tg], Aurimas Černius [lt], Dimitris Spingos [el], Andika Triwidada [id], Rafael Ferreira [pt_BR], Daniel Mustieles [es], Baurzhan Muftakhidinov [kk], Marek Černocký [cs], Ihar Hrachyshka [be], eternalhui [zh_CN], Yosef Or Boczko [he], Fran Diéguez [gl], Khaled Hosny [ar], Ville-Pekka Vainio [fi], Piotr Drąg [pl], Kjartan Maraas [nb], Changwoo Ryu [ko] 3.11.90 ======= * Stop showing two bluetooth entries [Giovanni; #709353] * Improve styling of login/lock screen [Reda; #723833] * Fix magnifier crosshairs [Magdalen; #723709] * Make NetworkManager support optional [Michael; #669495] * Make middle-click open a new instance [Florian; #695010] * Scale the UI on high resolution displays [Cosimo, Adel; #705410, #724607] * Remove notification counter on screen shield [Carlos; #709275] * Improve app picker transition [Carlos; #722331] * Add geolocation indicator to status menu [Zeeshan; #723684] * Improve timestamps in chat notifications [Carlos; #708031, #715158] * Improve network menus [Giovanni; #723570] * Add "VPN Setting" item to VPN submenu [Giovanni; #709167] * Improve appearance of disclosure arrows [Carlos; #720206] * Add GSetting key to disable version validation of extensions [Adel; #724683] * Delay auto-removing empty workspaces [Florian; #709064] * Offer offline updates in the shutdown dialog [Kalev; #722898] * Animate tile previews [Florian; #665758] * Misc. bug fixes and cleanups [Giovanni, Ryan, Debarshi, Florian; #709128, #722342, #723661, #724184, #724256, #724293, #724305, #722554, #724282, #724690, #722928] Contributors: Zeeshan Ali (Khattak), Magdalen Berns, Michael Biebl, Giovanni Campagna, Cosimo Cecchi, Adel Gadllah, Reda Lazri, Kalev Lember, Ryan Lortie, Florian Müllner, Debarshi Ray, Carlos Soriano, Jasper St. Pierre, Colin Walters Translations: Victor Ibragimov [tg], Daniel Mustieles [es], Khaled Hosny [ar], Enrico Nicoletto [pt_BR], Yosef Or Boczko [he], Fran Diéguez [gl], Marek Černocký [cs], Baurzhan Muftakhidinov [kk], Jorge Pérez Pérez [an], Kjartan Maraas [nb], David Lüder [de], Daniel Korostil [uk], ngoswami [as], Rafael Ferreira [pt_BR] 3.11.5 ====== * Fix extension preference tool [Florian; #722334] * Fix keyboard activation of legacy tray icons [Giovanni; #721267] * Add radial background shade for modal dialogs [Giovanni; #669798] * Show attached modal windows in the overview [Giovanni; #650843] * Add support for desktop actions [Giovanni; #669603] * Indicate in system status when location service is used [Zeeshan; #709372] * Add support for extended app folder schema [Jasper; #723179] * Show status icon for wired network connections [Jasper; #708966] * Indicate airplane mode in network selection dialog [Giovanni; #709128] * Misc bug fixes and cleanups [Florian, Sebastian, Giovanni, Tim, Matt, Jasper; #722417, #722494, #722547, #722593, #722434, #722787, #722690, #722840, #722660, #722812, #723197, #722927, #723306, #723308, #723523, #709685, #723570] Contributors: Zeeshan Ali (Khattak), Magdalen Berns, Giovanni Campagna, William Jon McCann, Sebastian Keller, Tim Lunn, Florian Müllner, Carlos Soriano, Jasper St. Pierre, Rico Tzschichholz, Matt Watson Translations: Marek Černocký [cs], Mattias Põldaru [et], Tong Hui [zh_CN], Victor Ibragimov [tg], Enrico Nicoletto [pt_BR], Daniel Mustieles [es], Fran Diéguez [gl], Kjartan Maraas [nb], Nilamdyuti Goswami [as], Aurimas Černius [lt], Stas Solovey [ru], Yosef Or Boczko [he], Jorge Pérez Pérez [an], Dimitris Spingos [el], Baurzhan Muftakhidinov [kk], Chao-Hsiung Liao [zh_HK, zh_TW], Shankar Prasad [kn], Yaron Shahrabani [he], Andika Triwidada [id] 3.11.4 ====== * Fix removal of workspacaes that are not at the end [Giovanni; #721417] * Allow session mode to be specified in the environment [Ray; #720894] * Special-case launching of terminals [Debarshi; #695010] * Always show arrow if app switcher is scrollable [Jonh; #711467] * Implement new app folders system [Jasper; #722117] * Remove arrow from background menu [Tarun; #699608] * Misc bug fixes and cleanups [Giovanni, Andika, Florian, Ray; #721039, #721439, #721507, #721629, #721868, #722210] Contributors: Giovanni Campagna, Piotr Drąg, Tarun Kumar Joshi, Florian Müllner, Debarshi Ray, Jasper St. Pierre, Ray Strode, Andika Triwidada, Jonh Wendell Translations: Dušan Kazik [sk], Tong Hui [zh_CN], Benjamin Steinwender [de], Matej Urbančič [sl], Jorge Pérez Pérez [an], Kjartan Maraas [nb], Milo Casagrande [it], Rafael Ferreira [pt_BR], Marek Černocký [cs], Daniel Mustieles [es], Adorilson Bezerra [pt_BR], Christian Kirbach [de], Aurimas Černius [lt], Andika Triwidada [id], Baurzhan Muftakhidinov [kk], Victor Ibragimov [tg], Yosef Or Boczko [he], Dimitris Spingos [el], Fran Diéguez [gl] 3.11.3 ====== * Fix fade effect of desktop icons [Florian; #707671] * Fix issues with background management code [Jasper; #709313] * Use new Glib facilities for application search [Jasper; #711631] * Add focus indication to session menu button [Sebastien; #710539] * Fix hover tracking for StEntries [Jasper; #706749] * Fix reentrancy issue in message tray [Jasper; #711694] * Tone down zoom animation on login/unlock [Jasper; #712362] * Allow specifying monitor for OSD [Carlos; #712664] * Fix resetting prompt on user switch [Ray; #710456] * Stop using gnome-bluetooth-applet [Bastien; #719341] * Add support for EAP-FAST password requests [Dan; #719813] * Fix entry focus of chat notifications [Jasper; #709853] * Make window previews keyboard navigatable [Jasper; #644306] * Fix app switcher order with dialog windows [Florian; #719824] * Allow remote search providers without icons [Debarshi; #719965] * Fix various alignment issues in RTL locales [Yosef; #712638, #712596, #712594, #712600, #712579] * Misc. bug fixes and cleanups [Jasper, Florian, Giovanni, Dan; #712727, #712753, #719378, #719730, #719803, #710115, #720017, #719815, #719567, #720298] Contributors: Giovanni Campagna, Carlos Garnacho, Sebastien Lafargue, Tim Lunn, Florian Müllner, Bastien Nocera, Yosef Or Boczko, Debarshi Ray, Jasper St. Pierre, Ray Strode, Dan Williams Translations: Kjartan Maraas [nb], Reinout van Schouwen [nl], Rafael Ferreira [pt_BR], Mattias Põldaru [et], Emin Tufan Çetin [tr], Jiri Grönroos [fi], Khaled Hosny [ar], Fran Diéguez [gl], Victor Ibragimov [tg], Daniel Mustieles [es] 3.11.2 ====== * Cache search result display actors [Jasper; #704912] * Use username in userWidget if real name doesn't fit [Jasper; #706851] * Support shell_global_reexec_self() on OpenBSD [Antoine; #709571] * Support disabling browser plugin [Colin; #711218] * Restore support for 'disable-restart-buttons' [Florian; #711244] * Validate parameters of exposed DBus methods [Florian; #699752] * Connect applications to systemd journal if available [Colin; #711626] * Misc bug fixes and cleanups [Florian, Jasper; #711205, #698486, #711416, #644306, #711555, #709806, #711631, #711732] Contributors: Cosimo Cecchi, Antoine Jacoutot, Florian Müllner, Jasper St. Pierre, Rico Tzschichholz, Colin Walters Translations: Yuri Myasoedov [ru], Kjartan Maraas [nb], Efstathios Iosifidis [el], Benjamin Steinwender [de], eternalhui [zh_CN], Shantha kumar [ta] 3.11.1 ====== * power: Use UPower directly instead of gnome-settings-daemon [Bastien; #710273] * Implement support for new GTK+ notification API [Jasper, Giovanni, Florian; #710137, #710596] * gdm: Don't allow user-list to fill up the entire screen [Florian; #710555] * Don't autostart remote search providers at login [Giovanni; #708830] * Fix spacing in end-session dialog [Sebastien; #710543] * Prepare for js24 [Tim; #711052] * Misc bug fixes and cleanups [Jasper, Florian, Adel, Tim, Sebastien; #710347, #710144, #710541, #691409, #710745, #688331, #704912] Contributors: Giovanni Campagna, Adel Gadllah, Sebastien Lafargue, Tim Lunn, Florian Müllner, Bastien Nocera, Jasper St. Pierre, Rico Tzschichholz Translations: Stas Solovey [ru], Yosef Or Boczko [he], Rafael Ferreira [pt_BR] 3.10.1 ====== * Make sure lock screen is drawn once before switching user [Giovanni; #708051] * Fix signal strength indicators in network selector [Jasper; #708442] * Scroll search results when focusing provider icons [Jasper; #708868] * Add separate hover/active states to page indicators [Carlos; #708852] * Tweak appearance of user name and avatar [Yash; #702309] * Hide "Turn On" in network menu when disabled by hardware [Giovanni; #709635] * Cancel open keyring prompts when the screen is locked [Florian; #708910] * Differentiate "Not Connected" and "Off" in network menu [Giovanni; #709043] * Make network settings items point to the right device [Giovanni; #709246] * Remove animation of window preview titles [Sebastien; #709392] * Add 'Notifications' switch to tray menu [Florian; #707073] * Make dropdown arrows consistent [Carlos; #709564] * power: Use icon from primary device for status [Jasper; #709925] * Fix XDND drags to overview [Adel; #708887] * Fix workspace switcher disappearing with too many workspaces [Jasper; #694881] * Handle search results with 'special:' prefix specially [Giovanni; #707055] * gdm: Support pre-authenticated logins from oVirt [Vinzenz; #702162] * Use ARROW role for labels representing arrows [Alejandro; #710120] * Make selected view in app picker persistent [Florian; #710042] * Make network selector navigable by keyboard [Alejandro; #710144] * Misc bug fixes [Florian, Adel, Jasper, Aleksander, Giovanni, Dan, Michael, Tim; #709034, #709263, #698486, #709286, #709248, #709543, #696564, #703265, #709638, #709866, #709998, #710019, #710104, #710115] Contributors: Giovanni Campagna, Michael Catanzaro, Vinzenz Feenstra, Adel Gadllah, Yash Girdhar, Sebastien Lafargue, Tim Lunn, Aleksander Morgado, Florian Müllner, Alejandro Piñeiro, Carlos Soriano, Jasper St. Pierre, Dieter Verfaillie, Dan Winship Translations: Inaki Larranaga Murgoitio [eu], Christian Kirbach [de], Muhammet Kara [tr], Aurimas Černius [lt], Ryan Lortie [eo], Rūdolfs Mazurs [lv], Dušan Kazik [sk], Fran Diéguez [gl], Enrico Nicoletto [pt_BR], Kjartan Maraas [nb], Victor Ibragimov [tg], Matej Urbančič [sl], A S Alam [pa], Nilamdyuti Goswami [as], Daniel Mustieles [es], Cheng-Chia Tseng [zh_HK, zh_TW], Mattias Põldaru [et], Kenneth Nielsen [da], Milo Casagrande [it], Marek Černocký [cs], Ihar Hrachyshka [be], Мирослав Николић [sr, sr@latin], Arash Mousavi [fa], Yuri Myasoedov [ru], Gil Forcada [ca], Carles Ferrando [ca@valencia], Andika Triwidada [id], Timo Jyrinki [fi], Piotr Drąg [pl], Rafael Ferreira [pt_BR], Gabor Kelemen [hu], Yosef Or Boczko [he], Daniel Korostil [uk], Wouter Bolsterlee [nl], António Lima [pt] 3.10.0.1 ========= * Fix login screen [Ray; #708691] Contributors: Ray Strode, Giovanni Campagna, Jasper St. Pierree Translations: Kjartan Maraas [nb], Marek Černocký [cs], A S Alam [pa], Daniel Mustieles [es], Ihar Hrachyshka [be], Chao-Hsiung Liao [zh_HK], Nilamdyuti Goswami [as], Yuri Myasoedov [ru], Baurzhan Muftakhidinov [kk] 3.10.0 ====== * Fix fade effect in ScrollViews [Carlos; #708256] * network: Resync when activating connection changes [Jasper; #708322] * Close run dialog when the screen locks [Florian; #708218] * Fix entry growing out of password dialogs [Florian; #708324, #703833] * Vertically center labels in submenu items [Jasper; #708330] * https://bugzilla.gnome.org/show_bug.cgi?id=708387 [Mike; #708387] * Fix bluetooth icon not being added to status menu [Jasper; #708541] * Fix GNOME 2 keyring dialogs appearing on lock screen [Florian; #708187] * Fix passwords being cleared twice when authentication fails [Florian; #708186] * Fix message tray appearing in a11y popup on login screen [Florian; #708380] * Increase width of aggregate menu popup [Adel; #708472] Contributors: Adel Gadllah, Mike Gorse, Ryan Lortie, Florian Müllner, Frédéric Péters, Carlos Soriano, Jasper St. Pierre, Rico Tzschichholz Translations: Daniel Șerbănescu [ro], Ryan Lortie [eo], Ihar Hrachyshka [be], A S Alam [pa], Jiro Matsuzawa [ja], Chao-Hsiung Liao [zh_HK, zh_TW], Piotr Drąg [pl], Kristjan SCHMIDT [eo], Daniel Korostil [uk], Rūdolfs Mazurs [lv], Reinout van Schouwen [nl], Yosef Or Boczko [he], Fran Diéguez [gl], António Lima [pt], Andika Triwidada [id], Alexandre Franke [fr], Rafael Ferreira [pt_BR], Milo Casagrande [it], Kenneth Nielsen [da], Matej Urbančič [sl] 3.9.92 ====== * Don't show page indicators if there's only one page [Florian; #707363] * Make :active style of app and non-app results consistent [Jakub; #704714] * Fade app pages when scrolled [Florian; #707409] * Don't block scrolling on page indicators [Carlos; #707609] * Tweak visual appearance of folder views [Florian; #707662] * Don't put minimized apps at the end of the app switcher [Florian; #707663] * Merge the wayland branch [Giovanni, Neil; #707467] * Make search entry behave better in RTL locales [Matthias, Florian; #705779] * Allow to change app pages with pageUp/pageDown keys [Carlos; #707979] * Set appropriate a11y states on expandable menu items [Alejandro; #708038] * Improve page indicator animation [Carlos; #707565] * Misc bug fixes and cleanups [Florian, Olivier, Jasper, Giovanni, Magdalen, Adel, Carlos, Rico, Joanmarie; #707308, #707430, #707508, #707557, #707600, #707614, #707666, #707814, #707806, #707801, #707889, #707892, #707935, #707842, #707940, #707996, #708007, #708009, #708020, #707580, #708080] Contributors: Magdalen Berns, Olivier Blin, Giovanni Campagna, Matthias Clasen, Joanmarie Diggs, Adel Gadllah, Florian Müllner, Alejandro Piñeiro, Neil Roberts, Carlos Soriano, Jasper St. Pierre, Jakub Steiner, Rico Tzschichholz Translations: Rafael Ferreira [pt_BR], Fran Diéguez [gl], Daniel Mustieles [es], Aurimas Černius [lt], Luca Ferretti [it], Piotr Drąg [pl], Chao-Hsiung Liao [zh_HK, zh_TW], Timo Jyrinki [fi], Daniel Korostil [uk], Dušan Kazik [sk], Adam Matoušek [cs], Marek Černocký [cs], Jiro Matsuzawa [ja], Yuri Myasoedov [ru], Tobias Endrigkeit [de], Kjartan Maraas [nb], Victor Ibragimov [tg], Мирослав Николић [sr, sr@latin], A S Alam [pa], Khaled Hosny [ar], Andika Triwidada [id], Nilamdyuti Goswami [as], Ihar Hrachyshka [be], Rūdolfs Mazurs [lv], Mattias Põldaru [et], Gabor Kelemen [hu], Bruce Cowan [en_GB], Matej Urbančič [sl], Enrico Nicoletto [pt_BR], Benjamin Steinwender [de], Changwoo Ryu [ko], Kris Thomsen [da], Alexandre Franke [fr], Evgeny Bobkin [ru], Baurzhan Muftakhidinov [kk], Peter Mráz [sk], Inaki Larranaga Murgoitio [eu], Yosef Or Boczko [he] 3.9.91 ====== * Improve submenu styling [Jakub; #706037] * Fix changing slider values via keyboard [Alejandro; #706386] * Fix accessibility of sliders [Alejandro; #706391] * Tweak system actions style [Jakub; #706638] * Add support for auth without username / fix Not Listed? [Ray; #706607] * Dash: Don't show tooltips for apps with open popups [Giovanni; #705611] * Implement new end-session/power-off dialog design [Jasper, Matthias; #706612] * Implement building separate binaries for x11 and wayland [Giovanni; #705497] * authPrompt: Fix controls moving when showing messages [Ray; #706670] * Tweak padding between system status icons [Allan; #706796] * Add a generic accessible usable by JS code [Alejandro; #648623] * Improve keynav and accessibility of the calendar [Alejandro; #706903] * Update to new NetworkManager APIs [Jasper; #706098] * Hide system actions section in the lock screen [Jasper; #706852] * Don't show other logged in users at log out [Giovanni; #707124] * Remove "Session" subtitle heading in login dialog [Jasper; #707072] * dash: Reload favorites when installed apps change [Giovanni; #706878] * Don't open overview after closing last window on workspace [Florian; #662581] * Add FocusApp DBus method [Giovanni; #654086] * Add ShowApplications DBus method [Giovanni; #698743] * Implement new app picker design [Carlos, Florian; #706081] * Improve frequent apps being empty by default [Carlos, Florian; #694710] * Extend clickable area of page indicators [Giovanni; #707314] * Misc bug fixes [Ray, Giovanni, Jasper, Emmanuele; #706542, #706654, #706005, #706681, #706841, #706843, #707064, #706262, #707197, #707269] Contributors: Emmanuele Bassi, Giovanni Campagna, Matthias Clasen, Allan Day, Adel Gadllah, Florian Müllner, Alejandro Piñeiro, Carlos Soriano, Jasper St. Pierre, Jakub Steiner, Ray Strode, Seán de Búrca Translations: Piotr Drąg [pl], Kjartan Maraas [nb], Victor Ibragimov [tg], Enrico Nicoletto [pt_BR], Benjamin Steinwender [de], Baurzhan Muftakhidinov [kk], Aurimas Černius [lt], Seán de Búrca [ga], Fran Diéguez [gl], Daniel Mustieles [es], Dušan Kazik [sk], Matej Urbančič [sl], Andika Triwidada [id], Jordi Mas [ca], Ihar Hrachyshka [be] 3.9.90 ====== * workspaceThumbnails: Exclude transient windows when shifting workspaces [Bradley; #705174] * Never show a horizontal scrollbar on lock screen [Jasper; #704327] * authPrompt: Fix disable-user-list / Not Listed? [Ray; #705370] * Animate the lock screen notification transitions [Giovanni; #687660] * Wake up the screen when new notifications appear [Giovanni; #703084] * Use StartupWMClass for application matching [Giovanni; #673657, #705801] * dateMenu: Add style class for the clock label [Jonh; #705634] * keyboard: Translate IBus IME name if possible [Daiki; #695673] * power: Display single digit minutes correctly [Sebastian; #705803] * Implement new aggregate status menu [Jasper; #705845] * Improve triangle animation when expanding sub-menus [Tarun; #703109] * Fix alignment of search provider icons [Tarun; #695760] * Slide dash and workspace switcher on overview transitions [Tarun; #694262] * Respect always-show-universal-access-status setting [Tanner; #705733] * Handle .desktop files with capital letters [Giovanni; #706252] * authPrompt: Add smartcard support [Ray; #683437] * Fix call notifications in busy mode [Emilio; #666221] * Improve triangle animation when expanding sub-menus [Tarun; #703109] * Move message tray menu to a tray button [Jasper; #699272] * Wi-fi dialog improvements [Jasper, Allan; #705916, #706136] * Work towards running as wayland compositor [Giovanni] - Switch to Mutter abstraction layer for cursor tracking [#705911] - Add confirmation dialog for display changes [#706208] * Use a different background in screen shield [Giovanni; #688210] * Add fade animation before blanking the screen [Giovanni; #699112] * Misc. bugfixes and cleanups [Jasper, Giovanni, Adel, Colin, Ray, Florian, Magdalen; #704448, #702536, #686855, #695581, #700901, #701761, #701495, #701848, #697833, #701731, #705664, #705840, #705898, #706089, #706153, #704646, #706262, #706324, #703810, #703811, #704015, #706232, #705917, #706536] Contributors: Magdalen Berns, Giovanni Campagna, Allan Day, Tanner Doshier, Adel Gadllah, Sebastian Keller, Tarun Kumar Joshi, Florian Müllner, Bradley Pankow, Emilio Pozuelo Monfort, Jasper St. Pierre, Ray Strode, Rico Tzschichholz, Daiki Ueno, Colin Walters, Jonh Wendell Translations: Kjartan Maraas [nb], Aurimas Černius [lt], Yaron Shahrabani [he], Fran Diéguez [gl], Gabor Kelemen [hu], Juan Diego Martins da Costa Cruz [pt_BR], Inaki Larranaga Murgoitio [eu], Yuri Myasoedov [ru], Daniel Mustieles [es], Seán de Búrca [ga], Khaled Hosny [ar], Victor Ibragimov [tg], Friedel Wolff [af], Marek Černocký [cs], Matej Urbančič [sl], A S Alam [pa], Rafael Ferreira [pt_BR], Andika Triwidada [id], Dušan Kazik [sk] 3.9.5 ===== * Fix width changes of the calendar popup [Florian; #704200] * Work towards aggregate status menu [Jasper; #702539, #704336, #704368, #704670] * Update design of lock screen notifications [Allan; #702305] * Don't show empty backgroundMenu [Michael; #703868] * Add option to limit app switcher to current workspace [Adel; #703538] * Consolidate design of login screen and unlock dialog [Ray; #702308, #704795] * Respect hasWorkspace property of session mode [Jasper; #698593] * Fix fade of app menu icon in RTL locales [Jasper; #704583] * Destroy notifications when the close button is clicked [Adel; #687016] * Fix clicks on legacy tray icons in the message tray [Florian; #704095] * authPrompt: Fade out message if users start to type [Ray; #704817] * Export timestamps of global shortcuts on DBus [Bastien; #704859] * Fix duplicate search provider results [Jasper; #700283] * Misc bug fixes and cleanups [Lionel, Florian, Emilio, Ray, Jasper; #703859, #703540, #704077, #703997, #704318, #704347, #704265, #704411, #704430, #704347, #704453, #704471, #704542, #704707, #703905, #705037] Contributors: Allan Day, Adel Gadllah, Lionel Landwerlin, Florian Müllner, Bastien Nocera, Emilio Pozuelo Monfort, Jasper St. Pierre, Ray Strode, Colin Walters, Michael Wood Translations: eternalhui [zh_CN], Victor Ibragimov [tg], Dušan Kazik [sk], Jiro Matsuzawa [ja], Kjartan Maraas [nb], Milo Casagrande [it], Marek Černocký [cs], Daniel Mustieles [es], Benjamin Steinwender [de] 3.9.4 ===== * Fix chat entries not being focused when expanded [Jasper; #698778] * Fix alignment of "Not Listed?" label [Mathieu; #702307] * Fix alignment of time stamps in chat notifications [Carlos; #687809] * Round the ends of slider trough [Jasper; #702825] * Add support for "box-shadow: none" [Cosimo; #702782] * Keep chrome below popup windows [Florian; #702338] * Move the session list to a popup menu [Ray; #702818] * Fix autorun notifications for "non-native" volumes [Matthias; #703418] * dnd: Speed up by not picking on each motion event [Jasper; #703443] * Fix management of asynchronous background loading [Lionel; #703001] * Rework focus handling [Jasper; #700735] * Optimize box-shadow rendering [Lionel; #689858] * Remove support for fixed positioning in BoxLayouts [Florian; #703808] * Misc bug fixes and cleanups [Adel, Jasper, Florian, Ray, Lionel, Emilio; #702849, #610279, #703132, #703105, #703160, #703126, #703304, #703403, #698593, #703442, #703565, #700901, #703874, #703807, #703893, #703909] Contributors: Mathieu Bridon, Giovanni Campagna, Cosimo Cecchi, Matthias Clasen, Fran Diéguez, Adel Gadllah, Lionel Landwerlin, Florian Müllner, Emilio Pozuelo Monfort, Carlos Soriano, Jasper St. Pierre, Ray Strode Translations: Baurzhan Muftakhidinov [kk], Marek Černocký [cs], Daniel Mustieles [es], Fran Diéguez [gl], Kjartan Maraas [nb], Andika Triwidada [id], Benjamin Steinwender [de], Nguyễn Thái Ngọc Duy [vi], Trần Ngọc Quân [vi] 3.9.3 ===== * Don't push window thumbs when workspace switcher is hidden [Jasper; #701167] * Tweak timeout for activating windows during XDND [Adel; #700150] * Fix ellipsization in control buttons in app picker [Carlos; #696307] * Fix DND to empty dash [Florian; #684618] * Fix OSD window appearing below system modal dialogs [Rui; #701269] * Clear clipboard on screen lock to prevent information leak [Florian; #698922] * Allow session mode specific overrides schema [Florian; #701717] * window-switcher: Only show windows from current workspace by default [Florian; #701214] * logout dialog: Show the correct text right away [Matthias; #702056] * bluetooth: Port to bluez 5 [Emilio; #700891] * dateMenu: Allow events to span multiple lines [Giovanni; #701231] * gdm: Clear message queue when no more messages are pending [Jonh; #702458] * Misc bug fixes and cleanups [Jasper, Florian, Adel, Giovanni; #693836, #700972, #701386, #700877, #701755, #698918, #701224, #702125, #701954, #701849, #702121] Contributors: Giovanni Campagna, Matthias Clasen, Fran Diéguez, Adel Gadllah, Rui Matos, Florian Müllner, Emilio Pozuelo Monfort, Carlos Soriano, Jasper St. Pierre, Jonh Wendell Translations: Marek Černocký [cs], Victor Ibragimov [tg], Fran Diéguez [gl], Benjamin Steinwender [de], Cheng-Chia Tseng [zh_HK, zh_TW], eternalhui [zh_CN], Ivaylo Valkov [bg], Kjartan Maraas [nb], Daniel Mustieles [es] 3.9.2 ===== * Use a symbolic icon for DESKTOP windows [Matthias; #697914] * Move paint state cache into StWidget [Jasper; #697274] * gdm: Fix regression where domain login hint not shown [Stef; #698200] * Make calendar keyboard navigable [Tanner; #667434] * Hide "Open Calendar" item when no calendar app is installed [Lionel; #697725] * Update how branding appears on login screen [Florian; #694912, #699877] * Allow OSD popups to grow if necessary [Marta; #696523] * Fix offset of shadow offscreen rendering [Lionel; #698301] * Fix insensitive button preventing empty keyring password [Stef; #696304] * Allow cancelling keyring dialog between prompts [Stef; #682830] * modalDialog: Show spinner while working [Stef; #684438] * overview: Only show close buttons for windows that may close [Jasper; #699269] * Add input purpose and hints to StEntry and StIMText [Daiki; #691392] * Set input-purpose property for password entries [Rui; #700043] * Provide a DBus API for screencasting [Florian; #696247] * overview: Disable hotcorner during DND [Jasper; #698484] * polkitAgent: Allow retrying after mistyped passwords [Stef; #684431] * Add a way to get backtraces from criticals and warnings [Giovanni; #700262] * Allow switch-to-workspace-n keybindings in overview [Florian; #649977] * Update man page [Matthias; #700339] * Add FocusSearch DBus method [Florian; #700536] * Hide frequent view when app monitoring is disabled [Florian; #699714] * Show switcher popup for switch-to-workspace-n keybindings [Elad; #659288] * gdm: Update the session chooser style [Allan; #695742] * Fix some app folders getting truncated at the top [Florian; #694371] * Don't block the message tray while a notification is showing [Jasper; #700639] * popupMenu: Allow for an optional border for slider handle [Florian; #697917] * Re-lock screen when restarted after a crash [Colin; #691987] * Synchronize input source switching with key events [Rui; #697007] * Switch input source on modifiers-only accelerator [Rui; #697008] * Allow input source switching in message tray [Rui; #697009] * Misc bug fixes and cleanups [Alban, Jasper, Giovanni, Florian, Rui, Tomeu, Stef, Gustavo; #698863, #699799, #699800, #676285, #699975, #700097, #698812, #698486, #700194, #695314, #700257, #699678, #700356, #700322, #700394, #700409, #700595, #700625, #691746, #700620, #700807, #659288, #700784, #700842, #700847, #700488, #700735, #696159, #700900, #700853, #700923, #700944, #697661, #700854, #700190, #699189, #701097] Contributors: Elad Alfassa, Alban Browaeys, Giovanni Campagna, Matthias Clasen, Allan Day, Tanner Doshier, Lionel Landwerlin, Rui Matos, Simon McVittie, Marta Milakovic, Florian Müllner, Gustavo Padovan, Jasper St. Pierre, Daiki Ueno, Tomeu Vizoso, Stef Walter, Colin Walters Translations: Matej Urbančič [sl], Kjartan Maraas [nb], Victor Ibragimov [tg], Dušan Kazik [sk], Gil Forcada [ca], Daniel Mustieles [es] 3.9.1 ===== * Add additional toggle-overview keybinding [Matthias; #698251] * Disable shortcut when sticky keys are enabled [Matthias; #685974] * Disable tray context menu while a notification displays [Jasper; #695800] * Watch GApplication busy state [Cosimo; #697207] * Disable style transitions if animations are disabled [Jasper; #698391] * Filter out hidden applications from "Frequent" view [Giovanni; #696949] * Fix window previews swapping place randomly [Jasper; #694469, #698776] * Add support for serialized GIcons in remote search providers [Cosimo; #698761] * Fix hotcorner regression in RTL locales [Jasper; #698884] * Allow some keybindings to work while a top bar menu is open [Florian; #698938] * Make open-app-menu keybinding a toggle action [Florian; #686756] * Only recognize common URL schemes in notification messages [Monica; #661225] * Misc fixes and cleanups [Tim, Jasper, Florian, Giovanni, Owen; #698531, #698622, #698427, #698483, #698513, #697203, #698959, #698918, #699029, #699075, #696720, #649748] Contributors: Giovanni Campagna, Cosimo Cecchi, Monica Chelliah, Matthias Clasen, Tim Lunn, Florian Müllner, Jasper St. Pierre, Michael Wood, Owen W. Taylor Translations: Fran Diéguez [gl], Muhammet Kara [tr], Daniel Mustieles [es], Gil Forcada [ia], Anish A [ml], Dimitris Spingos [el], Marek Černocký [cs], Žygimantas Beručka [lt] 3.8.1 ===== * Clip window group during startup animation [Jasper; #696323] * Check for logind rather than systemd [Martin; #696252] * Don't special-case last remote search provider position [Giovanni; #694974] * Fix memory leaks [Ray, Jasper; ##697119, #697295, #697300, #697395] * AppSwitcherPopup: Activate only the selected window if any [Rui; #697480] * Enable screen recorder keybinding in all modes [Florian; #696200] * Remove box-shadow from screen shield for performance reasons [Adel; #697274] * Add support for -st-natural-width/height CSS properties [Giovanni; #664411] * Remove excessive padding from notification buttons [Allan; #664411] * Fix thumbnail dragging in overview [Jasper; #697504] * theme-node: Add get_url()/lookup_url() methods [Florian; #693688] * Misc bug fixes and cleanups [Jasper, Rui, Colin, David, Ray, Matthias: #695859, #696259, #696585, #696436, #697432, #697435, #697560, #697722, #697709] Contributors: Giovanni Campagna, Matthias Clasen, Allan Day, Adel Gadllah, David Gumberg, Rui Matos, Florian Müllner, Martin Pitt, Jasper St. Pierre, Ray Strode, Colin Walters Translations: Daniel Martinez [an], Bruce Cowan [en_GB], Khaled Hosny [ar], Ihar Hrachyshka [be], Aron Xu [zh_CN], Wojciech Szczęsny [pl], Inaki Larranaga Murgoitio [eu], Kjartan Maraas [nb], Милош Поповић [sr, sr@latin], Trần Ngọc Quân [vi] 3.8.0.1 ======= * Background bug fixes [Ray; #696712] 3.8.0 ===== * Remove blur and desaturation from lock screen [Jasper; #696322] * Remove scroll view fade near edges [Adel; #696404] * dateMenu: Open calendar component when using Evolution [Florian; #696432] * Fix unlocking on fast user switch [Cosimo; #696287] * Tweak screen shield animation [Rui; #696380] * Fix major memory leak when changing backgrounds [Ray; #696157] * Miscellaneous bug fixes [Jasper, Adel, Florian; #696199, #696212, #696422, #696447, #696235] Contributors: Giovanni Campagna, Cosimo Cecchi, Adel Gadllah, Rui Matos, Florian Müllner, Jasper St. Pierre, Ray Strode Translations: Alexandre Franke [fr], Victor Ibragimov [tg], Arash Mousavi [fa], Gabor Kelemen [hu], Sandeep Sheshrao Shedmake [mr], ManojKumar Giri [or], Shantha kumar [ta], Rajesh Ranjan [hi], Stas Solovey [ru], Shankar Prasad [kn], Dušan Kazik [sk], Ihar Hrachyshka [be], Wouter Bolsterlee [nl], Kris Thomsen [da], Jiro Matsuzawa [ja], Daniel Korostil [uk], Ani Peter [ml], Krishnababu Krothapalli [te], Mantas Kriaučiūnas [lt], Praveen Illa [te] 3.7.92 ====== * Drop fallback lock implementation [Florian; #693403] * Don't let the user trigger message-tray when in fullscreen [Jasper; #694997] * Scroll search results when using keynav [Jasper; #689681] * Allow raising the shield by starting to type the password [Jasper; #686740] * Improve tracking of fullscreen windows [Owen; #649748] * Improve animation of new windows in overview [Giovanni; #695582] * workspace switcher: Animate new workspaces created by DND [Giovanni; #685285] * Give user time to read messages on login screen [Ray; #694688] * Misc bug fixes and cleanups [Jasper, Ray, Florian, Cosimo, Giovanni, Adel, Stef, Takao, Rui, Neil; #695154, #694993, #695272, #691578, #694321, #695338, #695409, #695458, #695526, #695601, #695471, #695324, #695650, #695656, #695659, #695485, #695395, #694951, #695824, #695841, #695801, #694321, #693708, #695800, #695607, #695882, #691578, #685851, #694371, #690857, #694092, #695747, #696007, #693438, #696064, #696102 Contributors: Giovanni Campagna, Cosimo Cecchi, Allan Day, Takao Fujiwara, Adel Gadllah, Tim Lunn, Rui Matos, Florian Müllner, Neil Roberts, Jasper St. Pierre, Ray Strode, Stef Walter, Colin Walters, Owen W. Taylor Translations: Nilamdyuti Goswami [as], Chao-Hsiung Liao [zh_HK, zh_TW], Yuri Myasoedov [ru], Gheyret Kenji [ug], Baurzhan Muftakhidinov [kk], Ville-Pekka Vainio [fi], Matej Urbančič [sl], Мирослав Николић [sr, sr@latin], Rūdolfs Mazurs [lv], Christian Kirbach [de], Andika Triwidada [id], Gil Forcada [ca], Mattias Põldaru [et], Duarte Loreto [pt], Adam Matoušek [cs], Changwoo Ryu [ko], Ihar Hrachyshka [be], Carles Ferrando [ca@valencia], Sweta Kothari [gu] 3.7.91 ====== * overview: Fade out controls during DND that are not targets [Cosimo; #686984] * overview: Keep open when a Control key is held [Florian; #686984] * Improve login screen => session transition [Ray; #694321] * Center application grid horizontally [Florian; #694261] * Fix hiding panel when fullscreen windows span multiple monitors [Adel; 646861] * Tweak thresholds of pressure barrier [Jasper; #694467] * Tweak window picker layout [Jasper; #694902] * Expose key grab DBus API to gnome-settings-daemon [Florian; #643111] * Don't always show message tray in overview, add message indicator [Cosimo; #687787] * Tweak startup animation [Ray; #694326] * Add OSD popups and expose them to gnome-settings-daemon [Florian; #613543] * Move loupe icon to the start of the search entry [Jasper; #695069] * Don't show the input switcher with less than 2 items [Rui; 695000] * Fix auto-completion of system modals immediately upon display [Stef; #692937] * Ignore workspaces in alt-tab [Florian; #661156] * Disable copying text from password entries [Florian; #695104] * Use standard styling for ibus candidate popups [Allan; #694796] * Fix calendar changing height on month changes [Giovanni; #641383] * Port the hot corner to use pressure barriers [Jasper; #663661] * Misc bug fixes and cleanups: [Hashem, Giovanni, Alban, Jasper, Cosimo, Florian, Adel, Daniel, Matthias, Ray, Rui, Guillaume, Stef; #685849, #690643, #694292, #693814, #694234, #694365, #694287, #694336, #694256, #694261, #663601, #694441, #694284, #694463, #694475, #687248, #694394, #694320, #694701, #694784, #694858, #694906, #694327, #694876, #694905, #694969, #694970, #694988, #695006, #695001, #694998, #695023, #695002, #695073, #695126, #687748, #694837, #693907, #679851, #694988] Contributors: Giovanni Campagna, Cosimo Cecchi, Matthias Clasen, Alban Crequy, Allan Day, Guillaume Desmottes, Adel Gadllah, Rui Matos, Daniel Mustieles, Hashem Nasarat, Jasper St. Pierre, Ray Strode, Stef Walter Translations: Yuri Myasoedov [ru], Adam Matoušek [cs], Piotr Drąg [pl], Matej Urbančič [sl], Sweta Kothari [gu], Kjartan Maraas [nb], Nguyễn Thái Ngọc Duy [vi], Chao-Hsiung Liao [zh_HK, zh_TW], Dimitris Spingos [el], Inaki Larranaga Murgoitio [eu], Luca Ferretti [it], A S Alam [pa], Gheyret Kenji [ug], Stas Solovey [ru], Enrico Nicoletto [pt_BR], Fran Diéguez [gl], Daniel Mustieles [es], Aurimas Černius [lt] 3.7.90 ====== * Let GNOME Shell work on EGL and GLES2 [Neil; #693225, #693438, #693339] * Implement middle-click paste [Jasper; #645019] * Fix top bar transition between session modes [Rui; #692966] * Trigger the message tray with downward pressure [Jasper; #677215] * Don't ask for a password on shutdown [Adel; #693385] * Add a context menu to the message tray [Adel; #691035, #693887] * Use unicode formatting in the date menu [Matthias; #689251] * Use proper ellipsis instead of three dots [Jeremy; #689542] * Tweak screen shield animation [Giovanni; #691964] * Always hide the OSK when showing the message tray [Florian; #662687] * Support sound in notifications [Giovanni; #642831] * Place application popup menus above chrome [Jasper; #633620] * Hide overview elements while searching [Cosimo; #682050] * Implement updated IBus candidate popup designs [Rui; #691902] * Add support for enable-animations preference [Cosimo; #655746] * Don't always show the message tray in the overview [Cosimo; #693987] * Improve arrangement of window previews [Adel; #690313] * Remove builtin settings provider [Giovanni; #690824] * Minimize fullscreen windows when they end up in the background [Adel; #693991] * Add context menu to the background actor [Jasper; #681540] * Handle backgrounds in the shell, improve startup animation [Ray; #682429] * Hide universal access menu when not needed [Giovanni; #681528] * Implement updated app picker designs [Florian; #694192] * Improve login manager -> session transition [Ray; #694062] * Don't use a grid layout in window picker [Adel; #694210] * Use scroll wheel for workspace switching rather than zoom [Florian; #686639] * Misc bug fixes and cleanups: [Jasper, Florian, Debarshi, Adel, Matthias, Giovanni, Daiki, Rico, Bastien, Cosimo, Ray, Allan, Antonio; #693284, #692680, #691746, #693303, #693162, #693161, #693522, #693385, #691715, #688915, #689106, #682429, #693570, #693737, #693458, #692845, 693836, #681540, #679925, #688227, #692773, #693909, #683288, #693854, #693746, #693931, #693924, #693940, #693970, #693935, #693937, #693974, #693936, #693975, #693822, #694030, #685849, #694052, #694035, #694038, #694079, #694064, #681735, #694100, #694057, #694070, #693572, #693896, #686984, #694123, #694125, #693756, #693757, #687556, #694215, 694062, #694227, #694240, #694234, #694264, 694276, 694282, #694241, #689394, #694202, #694265, #694289, #691806, #694290, #694296] Contributors: Jeremy Bicha, Giovanni Campagna, Cosimo Cecchi, Matthias Clasen, Allan Day, António Fernandes, Adel Gadllah, Rui Matos, Florian Müllner, Bastien Nocera, Debarshi Ray, Neil Roberts, Jasper St. Pierre, Ray Strode, Rico Tzschichholz, Daiki Ueno Translations: Yasumichi Akahoshi [ja], Yoji TOYODA [ja], Dušan Kazik [sk], Wouter Bolsterlee [nl], Matej Urbančič [sl], Gheyret Kenji [ug], Ivaylo Valkov [bg], Daniel Korostil [uk], Gheyret Kenji [ug], Daniel Mustieles [es], Anish A [ml], Gil Forcada [ca], Carles Ferrando [ca@valencia], Мирослав Николић [sr, sr@latin], Aurimas Černius [lt], Rafael Ferreira [pt_BR], Fran Diéguez [gl], Piotr Drąg [pl], Luca Ferretti [it], A S Alam [pa] 3.7.5 ===== * MessageTray: pass keyboard events to tray icons [Giovanni; #687425] * network: add support for virtual devices (vlan, bond, bridge) [Dan; #677144] * gdm: Allow right-clicking buttons for left-handed users [Jasper; #688748] * Make list search results span all available horizontal space [Tanner; #691967] * Make Show-Applications button depress when held down [Hashem; #692319] * Set a max width on search results [Cosimo; #692453] * Reserve scrollbar allocation for automatic policy [Cosimo; #686881] * Improve scaling algorithm for window thumbnails [Jasper; #686944] * Fix launching settings panels after g-c-c changes [Jasper; #692483] * Stop launching applications from empty searches [Hashem; #692391] * Implement per-source notification filtering [Giovanni; #685926] * ScreenShield: Omit ActiveChanged() signal at end of fade [Giovanni; #691964] * ScreenShield: Lower the shield on idle before locking [Giovanni; #692560] * Make previews of minimized windows translucent in overview [Florian; #692999] * windowManager: Respect icon geometry when minimizing [Florian; #692997] * ScreenShield: Only show lock icon when actually locked [Giovanni; #693007] * general: Use & instead of 'and' for Settings panels [Jeremy; #689590] * network: Add support for new ModemManager1 interface [Aleksander; #687359] * network: Handle LTE-only modems as GSM ones [Aleksander; #688144] * mobile-providers: Port to libnm-gtk [Aleksander; #688943] * general: Consistently use Title Case in top bar [Jeremy; #689589] * panel: Add :overview pseudo class while in overview [Florian; #693218] * sessionMode: Add support for mode-specific styling [Florian; #693219] * loginManager: Make suspend a NOP in the ConsoleKit patch [Florian; #693162] * screenShield: Inhibit suspend until the screen is locked [Florian; #686482] * Misc bug fixes and cleanups [Jasper, Giovanni, Rui, Cosimo, Florian, Stefano, Adel, Yanko; #691745, #691731, #690171, #689091, #691976, #691963, #684279, #692052, #692091, #642831, #692454, #692715, #692678, #692723, #692677, #683986, #692693, #692749, #692948, #692995, #692996, #692994, #677215, #692586, #693067, #693031, #693049, #643111, #693161, #693220] Contributors: Jeremy Bicha, Giovanni Campagna, Cosimo Cecchi, Tanner Doshier, Stefano Facchini, Adel Gadllah, Yanko Kaneti, Rui Matos, Aleksander Morgado, Florian Müllner, Hashem Nasarat, Jasper St. Pierre, Dan Winship Translations: Duarte Loreto [pt], Daniel Mustieles [es], Kjartan Maraas [nb], Nilamdyuti Goswami [as], Мирослав Николић [sr,sr@latin], Tobias Endrigkeit [de], Fabio Tomat [fur], Matej Urbančič [sl], A S Alam [pa], Inaki Larranaga Murgoitio [eu], Piotr Drąg [pl], Wouter Bolsterlee [nl], Gheyret Kenji [ug], Yaron Shahrabani [he], Chao-Hsiung Liao [zh_HK,zh_TW], Milo Casagrande [it], Benjamin Steinwender [de] 3.7.4.1 ======= * userMenu: Use show-full-name-in-top-bar setting [Bastien; #689561] * dateMenu: Add "Open Clocks" entry [Mathieu; #644390] * screenshot: Immediately show the flash spot [Jasper; #691875] * Misc. bug fixes [Rico, Jeremy] Contributors: Jeremy Bicha, Mathieu Bridon, Bastien Nocera, Jasper St. Pierre, Rico Tzschichholz Translations: Ihar Hrachyshka [be] 3.7.4 ===== * Make menu separators crisp [Giovanni, Allan; #641745] * power: Update for new D-Bus name [Bastien; #690506] * Add smooth scrolling support [Jasper; #687573] * Tweak notification layout [Allan; #688506] * Ping the active window when using the app menu [Giovanni; #684340] * Make password entries insensitive after submission [Jasper; #690594, #690895] * Honor lock-delay GSettings key [Giovanni, Matthias; #690766, #691170] * Use text/calendar preferred app as the calendar app [Giovanni; #690767] * lookingGlass: Move to an inspect() function [Jasper; #690726] * Make OSK animation quicker, snappier [Rui; #688642] * Allow to close chat notifications with Escape [Jasper; #690897] * Honor org.gnome.desktop.screensaver.user-switch-enabled [Giovanni; #691042] * Add a SelectArea() DBus method [Cosimo; #687954] * Support non-absolute paths when saving screenshots [Cosimo; #688004] * OSK: Fix extended keys popups [Rui; #674955] * Don't hide or show the keyboard immediately [Rui; #688646] * Improve padding in power menu [Giovanni; #689297] * Add per-window input source switching [Rui; #691414] * Misc bug fixes and cleanups [Rico, Jasper, Giovanni, Rui, Florian, Dan; #690608, #690589, #690539, #687081, #690667, #690665, #690666, #685856, #690858, #690895, #680414, #690965, #691019, #690590, #681376, #690180, #685513, #689263, #691553, #691720, #691743, #691750] Contributors: Giovanni Campagna, Cosimo Cecchi, Matthias Clasen, Allan Day, Rui Matos, Florian Müllner, Bastien Nocera, Jasper St. Pierre, Rico Tzschichholz, Dan Winship Translations: Matej Urbančič [sl], Kjartan Maraas [nb], Mattias Põldaru [et], Yaron Shahrabani [he], Aurimas Černius [lt], Khaled Hosny [ar], Fran Diéguez [gl], Daniel Mustieles [es], Piotr Drąg [pl], Balázs Úr [hu], Baurzhan Muftakhidinov [kk], Tobias Endrigkeit [de], Dušan Kazik [sk], Aron Xu [zh_CN], Gheyret Kenji [ug] 3.7.3 ===== * Add 'No Messages' label when message tray is empty [Victoria; #686738] * Use better icons in Ctrl-Alt-Tab popup [Stéphane; #641303] * Show the OSK on the monitor where the focused window lives [Giovanni; #685856] * Highlight window clone and caption when hovered [Giovanni, Marc; #665310] * Improve login process indication [Stéphane; #687113] * Omit empty categories in apps view [Stéphane; #687970] * Style panel differently according to mode [Florian; #684573] * Make it possible to hide the user name [Matthias; #688577] * Consolidate and improve chat connection notifications [Giovanni; #687213] * Improve notification scrollbar appearance [Carlos; #688393] * Fade scroll view fade near scrolling edges [Jasper; #689249] * Add a read-only org.gnome.Shell.Mode property [Debarshi; #689300] * Don't close message tray after using context menus [Giovanni; #689296] * Port swipe-scrolling to ClutterPanAction [Jasper, Florian; #689062, #689552] * Remember state of 'Remember Password' checkbox [Ron; #688039] * Improve timestamp format in chat notifications [Carlos; #680989] * Improve style of missed-messages counter [Carlos; #686472] * Omit connection failure notifications if cancelled by user [Giovanni; #684823] * Add window-based Alt-Tab popup [Florian; #688913] * Support external session mode definitions [Florian; #689304] * Support session-mode-specific extensions [Florian; #689305] * Support 'parentMode' property in session modes [Florian; #689308] * Support a new org.gnome.ShellSearchProvider2 DBus interface [Cosimo; #689735, #690009] * Add "windows" to Ctrl-Alt-Tab popup [Jasper; #689653] * Port PopupMenu to GrabHelper [Jasper; #689109, #689954] * Show headphone icon when headphones are plugged in [Giovanni; #675902] * Display (non-app) search results as list [Tanner, Cosimo; #681797] * Skip diacritical marks in search terms [Aleksander; #648587] * Expose all engine options in input sources [Giovanni, Rui; #682318] * Add input source switcher popup [Rui; #682315] * Add minimal support for InfiniBand in network menu [Dan; #677150] * Misc bug fixes and cleanups [Sebastian, Aleksander, Giovanni, Tim, Cosimo, Florian, Matthias, Rui, Lionel, Colin, Piotr, Guillaume, Bastien, Tanner, Carlos, Stéphane, Jakub; #688422, #688379, #688750, #688771, #686800, #688133, #688895, #688966, #683986, #688004, #689108, #689029, #683449, #688196, #689304, #689243, #689295, #689325, #689400, #679168, #689568, #689537, #689528, #689749, #689789, #689353, #689820, #689868, #689778, #689959, #688589, #688589, #689955, #687250, #689965, #690046, #690049, #689884, #682286, #690173, #690174, #672941, #689876, #687881, #690171, #690241, #690312, #690175, #687955, #650843, #688234, #690427 Contributors: Giovanni Campagna, Cosimo Cecchi, Matthias Clasen, Stéphane Démurget, Guillaume Desmottes, Tanner Doshier, Piotr Drąg, Sebastian Keller, Lionel Landwerlin, Tim Lunn, Victoria Martínez de la Cruz, Aleksander Morgado, Florian Müllner, Bastien Nocera, Marc Plano-Lesay, Carlos Soriano Sánchez, Jakub Steiner, Jasper St. Pierre, Colin Walters, Dan Winship, Ron Yorston Translations: Yuri Myasoedov [ru], Wouter Bolsterlee [nl], Yaron Shahrabani [he], Nilamdyuti Goswami [as], Ani Peter [ml], Kjartan Maraas [nb], Dr.T.Vasudevan [ta], A S Alam [pa], Shankar Prasad [kn], Khaled Hosny [ar], Daniel Mustieles [es], Dušan Kazik [sk] 3.7.2 ===== * Enforce RTL in he for messages that might end up as LTR [Florian; #686630] * gdm: Move logo into the panel [Florian; #685852] * Hide notifications when closed button is clicked [Jasper, Florian; #682237] * Tweak screenShield animations [Rui; #686745] * Restore Fittsability of summary items in message tray [Florian; #686474] * Save screencasts as recent item [Ray; #680647] * overview: Resize window captions on content change [Giovanni, Alex; #620874] * App search: Match GenericName too [Matthias; #687121] * runDialog: Better match style of other modal dialogs [Florian, Allan; #687127] * Improve the button insensitive style [Stéphane; #687110] * network: Don't use a global switch for all VPN connections [Giovanni; #682929] * appMenu: Update on icon theme changes [Florian; #687224] * Show 'Log out' in more situations [Matthias; #686736] * Add a setting to force the 'Log out' menuitem [Matthias; #686057] * overview: Improve styling of search box [Stéphane; #686479] * Implement 'disable-user-list' in login screen [Ray; #660660] * Fix auto-scroll to bottom in chat notifications [Sjoerd; #686571] * Show feedback notifications when user is busy [Stéphane; #662900] * Disable login button when there is no input [Stéphane; #687112] * Use non-linear overview shade for background [Giovanni, Pierre-Eric; #669798] * Reduce blocking in compositor thread [Simon, Jasper; #687465] * network: new country-specific type to gather providers [Aleksander; #687356] * Update man page [Matthias; #680601] * st-entry: Change the pointer cursor on enter/leave events [Thomas; #687130] * screenShield: Blur and desaturate the background [Giovanni, Cosimo; #682536] * Change height of chat notifications to have more context [Carlos; #665255] * screenShield: Account for motion velocity when hiding [Giovanni; #682537] * screenShield: hide the cursor while the lock screen is on [Giovanni; #682535] * Support remote search provider settings [Cosimo; #687491] * unlockDialog: Improve label of confirmation button [Stéphane; #687656] * userMenu: Rename "System Settings" item to "Settings" [Elad; #687738] * messageTray: Add keybinding to focus current notification [Stéphane; #652082] * Remove shell-screen-grabber [Neil; #685915] * main: Stop using Metacity's keybinding files [Florian; #687672] * Bluetooth: Remove ObexFTP functionality [Bastien; #688160] * a11y: Also set WM theme when HighContrast is switched on [Cosimo; #688256] * network: Rework multiple NIC support [Giovanni; #677142] * Rework keybindings to allow selective blocking/processing [Florian; #688202] * recorder: Show indicator on primary monitor [Adel; #688470] * recorder: Set frame duration to fix broken video headers [Adel; #688487] * Misc. bugfixes and cleanups [Florian, Jasper, Giovanni, Matthew, Stéphane, Allan, Daiki, Owen, Alejandro, Jean-François, Cosimo, Sebastian, Adel, Alban; #686484, #686728, #686805, #686574, #686763, #682428, #687132, #685239, #687189, #687226, #658091, #670687, #687457, #687242, #687287, #687020, #686583, #661194, #687491, #657315, #687958, #683986, #688089, #687708, #686530, #684810, #688181, #688475, #688557, #688507, #638351] Contributors: Elad Alfassa, Matthew Barnes, Alban Browaeys, Giovanni Campagna, Cosimo Cecchi, Matthias Clasen, Allan Day, Stéphane Démurget, Jean-François Fortin Tam, Adel Gadllah, Alex Hultman, Sebastian Keller, Rui Matos, Simon McVittie, Aleksander Morgado, Florian Müllner, Bastien Nocera, Pierre-Eric Pelloux-Prayer, Alejandro Piñeiro, Neil Roberts, Sjoerd Simons, Carlos Soriano Sánchez, Jasper St. Pierre, Ray Strode, Owen Taylor, Daiki Ueno, Thomas Wood Translations: Dušan Kazik [sk], Pavol Klačanský [sk], Piotr Drąg [pl], Yuri Myasoedov [ru], Marek Černocký [cs], Kjartan Maraas [nb], Wolfgang Stöggl [de], Yaron Shahrabani [he], Fran Diéguez [gl], Mattias Põldaru [et] 3.7.1 ===== * Add shortcut to open application view directly [Jeremy; #685738] * Expose 'F10' shortcut in System Settings [Florian; #672909] * Clean up timestamp format in chat notifications [Carlos; #680989] * loginScreen: Add support for 'disable-restart-buttons' [Florian; #686247] * Update textures automatically on file changes [Florian; #679268] * Implement org.gnome.ScreenSaver.GetActiveTime [Giovanni; #686064] * Add missing translations for GSetting schema [Giovanni; #686413] * Hide workspace switcher completely when it's not necessary [Seif; #686483] * Explicitly load gnome-screensaver when not running GDM [Tim; #683060] * Port to GnomeIdleMonitor [Jasper; #682224] * Set Empathy as preferred handler when delegating channels [Xavier; #686296] * Allow testing GDM login dialog from the session [Giovanni; #683725] * Use all available space for windows in window picker [Jasper, Pierre-Eric; #582650] * Use logind for suspend if available [Florian; #686482] * Misc. fixes and cleanups [Jasper, Florian, Adel, Rui; #677426, #680426, #686233, #686241, #686318, #686240, #686484, #686002, #684650, #686487] Contributors: Jeremy Bicha, Giovanni Campagna, Xavier Claessens, Adel Gadllah, Seif Lotfy, Tim Lunn, Rui Matos, Florian Müllner, Pierre-Eric Pelloux-Prayer, Carlos Soriano, Jasper St. Pierre Translations: Andika Triwidada [id], Matej Urbančič [sl], Ihar Hrachyshka [be], Daniel Mustieles [es], Fran Diéguez [gl], Takayuki KUSANO [ja], Мирослав Николић [sr, sr@latin], Dušan Kazik [sk], Tom Tryfonidis [el] 3.6.1 ===== * dash: Make padding even on the top/bottom of the dash [Jasper; #684619] * Fix a crash when dragging search results [Jasper; #684888] * workspaceThumbnail: Fix dragging with static workspaces [Jasper; #684641] * Really hide 'Show Keyboard Layout' on the lock screen [Matthias] * Misc. improvements to jhbuild setup [Owen; #685352, #685353, #685354, #685355] * Show message tray in Ctrl+Alt+Tab outside of the overview [Jasper, Florian; #684633, #685914] * Disable hotplug sniffer on remote filesystems [Jasper; #684093] * userMenu: Remove 'Switch Session' item [Florian; #685062] * unlockDialog: Make prompt entry insensitive while logging in [Jasper; #685444] * messageTray: Don't animate desktop clone for failed grabs [Jasper; #685342] * Fix crash on dragging windows between workspaces [Ryan; #681399] * userMenu: Ignore 'lock-enabled' setting for user switching [Florian; #685536] * gdm: Fix key-focus on first user [Adel; #684650] * Make grid button insensitive when dragging non-favorites [Jasper; #685313] * Calendar: hide all actions when on the login screen [Matthias; #685142] * Adapt unlock dialog layout for the login screen [Florian; #685201] * Make focus-follows-mouse work better with Shell UI [Florian; #678169] * Improve look of screen shield [Jasper; #685919] * Fix keynav in the login screen [Florian; #684730] * dateMenu: Hide "Open Calendar" item if calendar unavailable [Florian; #686050] * unlockDialog: Reset UI on verification failure [Giovanni; #685441] * Show unlock dialog on primary monitor when using keynav [Giovanni; #685855] * Fix height changes of entries when entering text [Florian; #685534] * Fix show-apps label after successful drags [Florian; #684627] * Misc. bugfixes and cleanups [Jasper, Olivier, Florian, Owen, Adel, Tanner, Tim, Matthias; #685434, #685511, #685466, #685341, #685156, #681159, #673189, #686016, 684869, #686079, #686063 Contributors: Jasper St. Pierre Matthias Clasen Owen Taylor Olivier Blin Florian Müllner Ryan Lortie Adel Gadllah Tanner Doshier Tim Lunn Giovanni Campagna Translations: Tobias Endrigkeit [de], Rudolfs Mazurs [lv], Ask H. Larsen [da], Shankar Prasad [kn], Changwoo Ryu [ko], Chris Leonard [en_GB], Arash Mousavi [fa], Theppitak Karoonboonyanan [th], Seán de Búrca [ga], Yaron Shahrabani [he], Alexander Shopov [bg], Žygimantas Beručka [lt], Milo Casagrande [it], Kjartan Maraas [nb], Kris Thomsen [da], Aurimas Černius [lt], Yuri Myasoedov [ru], Мирослав Николић [sr], Marek Černocký [cs], Gabor Kelemen [hu], Ihar Hrachyshka [be], Chao-Hsiung Liao [zh_HK, zh_TW], Eleanor Chen [zh_CN], Carles Ferrando [ca@valencia], Vicent Cubells [ca], Daniel Korostil [uk], Alexandre Franke [fr], Piotr Drąg [pl] 3.6.0 ===== * keyboard: Make input source items accessible [Florian; #684462] * Don't show network dialogs in the lock screen [Giovanni; #684384] * popupMenu: Fix initial visibility of settings items [Florian; #684473] * userMenu: Close menu immediately on user/session switch [Florian; #684459] * Fix alignment of search section headers in RTL locales [Florian; #684379] * screenShield: Fix unlock animation [Florian; #684591] * Don't open the tray from a dwell while in a modal grab [Jasper; #684458] * userMenu: Fix texture updates on icon changes [Florian; #679268] * Fix a11y support in the login screen [Florian, Ray; #684727, #684728, #684748] * Make On-Screen-Keyboard usable with new message tray [Giovanni, Florian; #683546] * Fix initial visibility of input volume in lock-screen [Florian; #684611] Contributors: Giovanni Campagna, Florian Müllner, Jasper St. Pierre, Ray Strode Translations: Matej Urbančič [sl], Dr.T.Vasudevan [ta], Piotr Drąg [pl], A S Alam [pa], Alexander Shopov [bg], Nilamdyuti Goswami [as], Chandan Kumar [hi], Khaled Hosny [ar], Ibrahim Saed [ar], Sandeep Sheshrao Shedmake [mr], Tom Tryfonidis [el], Theppitak Karoonboonyanan [th], Alexandre Franke [fr], Fran Diéguez [gl], Gabor Kelemen [hu], Ani Peter [ml], Daniel Mustieles [es], Мирослав Николић [sr, sr@latin], Duarte Loreto [pt], ManojKumar Giri [or], Ihar Hrachyshka [be], Aurimas Černius [lt], Djavan Fagundes [pt_BR], Changwoo Ryu [ko], Bruce Cowan [en_GB], Kris Thomsen [da], Gil Forcada [ca], Yaron Shahrabani [he], Milo Casagrande [it], Ville-Pekka Vainio [fi], YunQiang Su [zh_CN], Carles Ferrando [ca@valencia], Mario Blättermann [de], Rajesh Ranjan [hi], Yuri Myasoedov [ru], Rūdolfs Mazurs [lv], Jiro Matsuzawa [ja], Mattias Põldaru [et], Timur Zhamakeev [ky], Petr Kovar [cs], Chao-Hsiung Liao [zh_HK,zh_TW], Andika Triwidada [id] 3.5.92 ====== * Login/UnlockDialog: Don't reset immediately if auth fails [Giovanni; #682544] * Allow changing session mode at runtime [Jasper, Giovanni; #683156] * Add zoom out animation on login [Jasper; #683170] * Bluetooth: don't restrict the length of non numeric PINs [Giovanni; #683356] * Force chat notification to stay open when focusing entry [Debarshi; #682236] * Make sure the screen is fully locked before suspending [Giovanni; #683448] * st-texture-cache: Fix a case of distorted textures [Florian; #683483] * popupSubMenu: Fix padding for non-scrolled submenus [Florian; #683009] * popupMenu: Fix width changes on submenu open/close [Florian; #683485] * boxpointer: Avoid malformed boxpointer arrow [Debarshi; #680077] * Change stage background color to grey [Adel; #683514] * messageTray: Update style of summary counters [Debarshi; #682891] * Don't fail if a legacy tray icon has no WM_CLASS [Giovanni; #683724] * PolkitAgent: Fix a crash if there is no avatar [Giovanni; #683707] * Hide the a11y menu in the lock screen, but show it in the login screen [Giovanni; #682542] * Fix show-apps button dropping off the dash [Florian; #683340] * Fix committing strings to shell entries from input method [Florian; #658325] * Make IBus display strings consistent with control-center [Rui; #683124] * Fix missing short codes for some input sources [Rui; #683613] * Remove support for long-press from entry context menus [Jasper; #683509] * screenShield: Add box-shadow to the shield [Florian] * Don't show a right-click menu for the hotplug source [Jasper; #683438] * Fix extension styling [Giovanni; #682128] * Fix on-screen keyboard not working with system-modal dialogs [Giovanni; #664309] * Fix insensitive styling for popup menu items [Giovanni; #683988] * Disable the message tray dwell when the user is interacting [Owen; #683811] * Animate going from the unlock dialog to the lock screen [Giovanni; #681143] * Autostart fprintd when necessary [Ray; #683131] * UnlockDialog: Allow typing before the first PAM question [Giovanni; #681576] * Make Return key dismiss screenshield [Ray; #683889] * Fix keyboard navigation in the message tray [Florian; #682243] * Remove the places & devices search provider [Giovanni; #683506] * Enable hot corner while the message tray is up [Florian; #682255] * Port screen recorder to new GStreamer vp8enc API [Adel; #684206] * Fix fish flickering [Giovanni; #684154] * Fix extension ordering with !important [Jasper; #684163] * Allow the shell to run without the screenshield [Giovanni; #683060] * Add menu items for IBus Anthy's InputMode, TypingMode [Rui; #682314] * Improve transition to the login dialog [Jasper; #682428] * Keep unlock dialog around until shield animation ends [Florian; #684342] * Expose shell keybindings in System Settings [Florian; #671010] * Misc. bugfixes and cleanups [Debarshi, Florian, Giovanni, Jasper, Rico, Rui; #672790, #677434, #683305, #683357, #683369, #683377, #683378, #683400, #683449, #683472, #683482, #683487, #683488, #683526, #683529, #683546, #683583, #683628, #683705, #683982, #683989, #684035, #684036, #684040, #684162, #684214, #684343] Contributors: Giovanni Campagna, Adel Gadllah, Rui Matos, Florian Müllner, Debarshi Ray, Jasper St. Pierre, Ray Strode, Owen Taylor, Rico Tzschichholz Translations: Gabor Kelemen [hu], Piotr Drąg [pl], Khaled Hosny [ar], Мирослав Николић [sr, sr@latin], Chao-Hsiung Liao [zh_HK, zh_TW], Bruce Cowan [en_GB], Dirgita [id], Tom Tryfonidis [el], Timo Jyrinki [fi], Adorilson Bezerra [pt_BR], Arash Mousavi [fa], Matej Urbančič [sl], Christian Kirbach [de], Yaron Shahrabani [he], Ihar Hrachyshka [be], Changwoo Ryu [ko], Duarte Loreto [pt], Theppitak Karoonboonyanan [th], Nilamdyuti Goswami [as], Sandeep Sheshrao Shedmake [mr], Alexandre Franke [fr], Ivaylo Valkov [bg], tuhaihe [zh_CN], Yuri Myasoedov [ru], Aurimas Černius [lt], Andika Triwidada [id], Rajesh Ranjan [hi], Sweta Kothari [gu], Daniel Mustieles [es], Fran Diéguez [gl], Praveen Illa [te] 3.5.91 ====== * Improve modal dialog styling of network secret prompts [Jasper; #682412] * Fix visibility of non-active workspaces during overview transition [Florian; #682002] * Improve scrollbar theming [Cosimo; #682476] * Make sure the app menu remains hidden in locked state [Florian; #682475] * Add tooltip to show-applications icon [Jasper; #682445] * Do not add duplicate remote search providers [Florian; #682470] * Handle 'popup-menu' signal on summary items [Florian; #682486] * Fix dwelling during mouse-down [Owen; #682385] * Set label actor for endSessionDialog.ListItem [Alejandro; #677503] * Don't match on comments when searching applications [Florian; #682529] * Make workspace selector more similar to the mockup [Stefano; #662087] * Fix extension installation and reloading [Jasper; #682578] * Hide removable devices in the lock screen [Giovanni; #681143] * Reset cancellable after hitting Escape on login screen [Alban; #681537] * Fix suspend from the user menu [Giovanni; #682746] * Set label actor for summary items in message tray [Alejandro; #677229] * Set label for the "Show applications" dash button [Alejandro; #682366] * Load extensions as late as possible [Jasper; #682822] * Improve mount operation dialogs [Jon; #682645] * Remove "Connect to ..." item from places search [Florian; #682817] * Don't auto-expand notifications with actions [Giovanni; #682738] * Add a new lock screen menu to combine volume network and power [Giovanni; #682540] * Add support for pre-edit to StIMText [Daiki; #664041] * Remove StIconType [Jasper, Florian, Rui, Giovanni, Debarshi; #682540] * Use monitor geometry for dwelling [Florian; #683044] * Add support for surrounding-text to StIMText [Daiki; #683015] * Improve the placement and style of the "No results" text [Jasper; #683135] * Remove broken network device activation policy [Giovanni; #683136] * Hide power status icon when no battery is present [Tim; #683080] * Ensure summary items are square and have spacing [Debarshi; #682248] * Fix close buttons overlapping screen edge [Debarshi; #682343] * Escape the tray when a legacy icon is clicked [Giovanni; #682244] * Update arrow in the screen shield to match latest mockups [Giovanni; #682285] * Allow lifting the screen shield with the mouse wheel [Giovanni; #683164] * Make sure to show the app menu after unlocking the screen [Jasper; #683154] * Misc bug fixes and cleanups [Debarshi, Florian, Giovanni, Jasper, Rui; #582650, #667439, #682238, #682268, #682429, #682455, #682544, #682546, #682683, #682710, #682998, #683073, #683137, #683156] Contributors: Alban Browaeys, Giovanni Campagna, Cosimo Cecchi, Stefano Facchini, Adel Gadllah, Tim Lunn, Rui Matos, William Jon McCann, Florian Müllner, Alejandro Piñeiro, Debarshi Ray, Jasper St. Pierre, Owen Taylor, Daiki Ueno Translations: Piotr Drąg [pl], Takayuki KUSANO [ja], Kjartan Maraas [nb], Aurimas Černius [lt], Daniel Mustieles [es], Yuri Myasoedov [ru], Khaled Hosny [ar], Yaron Shahrabani [he], Tom Tryfonidis [el], Nilamdyuti Goswami [as], Fran Diéguez [gl], Nguyễn Thái Ngọc Duy [vi], A S Alam [pa], Dr.T.Vasudevan [ta], Luca Ferretti [it] 3.5.90 ====== * Use symbolic icons for workspace switch OSD [Jon; #680738] * Lock screen improvements: - Hide user menu and a11y menu in the screen lock [Giovanni; #681143] - Bump the lock screen slightly when pressing a key [Giovanni; #681143] - Constrain vertical movement of the screen shield [Giovanni; #681143] - Return to lock screen on idle [Giovanni; #682041] - Unlock screen automatically after fast-user switching [Giovanni; #682096] - Fix "other user" label [Ray; #681750] * Constrain content of system modals to primary monitor [#681743] * Respect automatic lock setting on suspend/user-switch [Giovanni; #680231] * Improve styling of keyring prompt [Jasper; #681821] * Do not hard-code as overlay-key [Florian; #665547] * Update style of attached modal dialogs [Florian; #681601] * a11y: allow navigation on non reactive items [Alejandro; #667439, #667439] * Implement mode-less overview design [Joost, Florian; #682109] * Implement message-tray redesign: - Restyle the message tray [Ana, Allan, Florian; #677213, #682342] - Move the desktop upwards when showing the tray [Debarshi; #681392] - Add a close button to notifications [Ana, Jasper; #682253] - Add a keybinding to toggle the tray [Debarshi; #681392] - Make the tray keyboard navigable [Debarshi; #681519] - Add dwelling at the bottom of the screen to open the tray [Owen; #682310] - Don't time out banners when the user is inactive [Marina, Jasper] - Misc fixes and cleanups [Jasper, Marina] * Fix showing "Next Week" on Sundays [Sebastian; #682198] * Delay restoring IM presence until the network comes up [Florian; #677982] * Display enterprise login hint [Ray; #681975] * Ignore unrecognized/irrelevant network devices/connections [Dan; #682364] * Misc bug fixes and cleanups: [Dan, Florian, Jasper, Jiro, Piotr, Rico; #643687, #682045, #682189] Contributors: Giovanni Campagna, Allan Day, Piotr Drąg, William Jon McCann, Sebastian Keller, Jiro Matsuzawa, Florian Müllner, Alejandro Piñeiro, Debarshi Ray, Ana Risteska, Jasper St. Pierre, Ray Strode, Owen Taylor, Rico Tzschichholz, Joost Verdoorn, Dan Winship, Marina Zhurakhinskaya Translations: Nilamdyuti Goswami [as], Daniel Mustieles [es], Yaron Shahrabani [he], Chao-Hsiung Liao [zh_HK, zh_TW], Tobias Endrigkeit [de], A S Alam [pa], Sandeep Sheshrao Shedmake [mr], Fran Diéguez [gl], Мирослав Николић [sr, sr@latin] 3.5.5 ===== * Update style to match mockups [Allan] - improve calendar layout and legibility - update notifications and menus - use a common style for entries - update scrollbars to match GTK+ - improve clock/unlock button in lock screen - update polkit dialogs [Jasper] * Fix login dialog growing when selecting different users [Florian; #675076] * Implement screen lock in the shell [Giovanni] - restructure login code to be shared with session unlock [#619955] - add initial screen shield / unlock dialog implementation [#619955] - implement (optional) notification list on lock shield [#619955] - update login dialog style to match lock screen [#619955] - filter notifications to only show new ones on the screen lock [#681143] - make notifications scrollable if necessary [#681143] - use correct application names in notifications [#681143] - allow to return to the shield by pressing Escape [#681143] * Minor login dialog improvements [Florian] - update style to match the overall visuals [#660913] - indicate whether users are logged in [#658185] * Add support for background-repeat CSS property [Jasper; #680801] * Add :active pseudo class on scroll handles [Florian] * Remove markup from translated strings [Matthias; #681270] * Misc bug fixes and cleanups: [Alban, Florian, Giovanni, Jasper, Jeremy, Matthias, Piotr; #677893, #679944, #680064, #680170, #680216, #680426, #681101, #681382] Contributors: Jeremy Bicha, Alban Browaeys, Giovanni Campagna, Matthias Clasen, Allan Day, Piotr Drąg , Florian Müllner, Jasper St. Pierre Translations: Matej Urbančič [sl], Tom Tryfonidis [el], Yaron Shahrabani [he], Kjartan Maraas [nb], Baurzhan Muftakhidinov [kk], Praveen Illa [te], Khaled Hosny [ar], Daniel Mustieles [es], Gabor Kelemen [hu], Fran Diéguez [gl], Sweta Kothari [gu], Aleksej Kabanov [ru], Nilamdyuti Goswami [as], Arash Mousavi [fa], Мирослав Николић [sr, sr@latin] 3.5.4 ===== * Fix wrong result handling of remote calls [Florian; #678852] * dateMenu: Fix regression that caused no date to be displayed [Colin] * WindowTracker: Fix refcounting bug in get_app_for_window() [Giovanni; #678992] * Show the workspace switcher for move-to-workspace keybinding [Giovanni, Jasper; #674104, #660839, #679005] * userMenu: Move "Power off" item to the bottom [Florian; #678887] * Remove contacts search provider [Florian, Rui; #677442] * network: don't ask for always-ask secrets when interaction isn't allowed [Dan; #679091] * PolkitAgent: Look for the right password prompt [Matthias; #675300] * Implement extension updates [Jasper; #679099] * userMenu: Don't disconnect account signals when disabled [Guillaume; #669112] * Fix startup notification when opening calendar [Florian; #677907] * networkAgent: use absolute path if configured [Clemens; #679212] * recorder: Port to GStreamer-1.0 API [Florian; #679445] * telepathyClient: don't add log messages on presence changes [Ana; #669508] * lookingGlass: Don't use a signal callback on 'paint' to draw the border [Jasper; #679464] * Add support for inhibiting automount [Hans; #678597] * Implemented banner support for the login screen [Matthias, Marius; #665346] * boxpointer: Flip side if we would end outside the monitor [Rui; #678164] * boxpointer: Change 'animate' parameter on show/hide to a bitmask [Rui; #678337] * Add a grayscale effect [Matthias, Jasper, Florian: #676782, #674499] * UserMenu: show "Install Updates & Restart" when appropriate [Giovanni; #677394, #680080] * messageTray: don't show the message tray when a new notification is shown [Ana; #677210] * panel: don't break when indicator has no menu [Jean-Philippe; #678694] * appMenu: Disable app menu during startup animations [Florian; #672322] * autorun: Add a notification when unmounting drives [Cosimo; #676125] * st-icon: Fix potential crash involving shadows [Jasper; #679776] * Remove manual garbage collection on tweeners end [Cosimo; #679832] * dash: hide tooltips when overview begins hiding [Stefano; #674241] * Update modal dialog animation for new centered position [Florian; #674499] * calendar: Fix grid lines in RTL locales [Florian; #679879] * Integrate IBus with keyboard indicator [Rui; #641531] * Move ibus status icon under keyboard [Matthias] * gdm: port from libgdmgreeter to libgdm [Ray; #676401] * Misc bug fixes and cleanups [Antoine, Cosimo, Giovanni, Jasper, Rico; #678978, #672790, #679847, #679944] Contributors: Jean-Philippe Braun, Clemens Buchacher, Giovanni Campagna, Cosimo Cecchi, Matthias Clasen, Hans de Goede, Guillaume Desmottes, Stefano Facchini, Antoine Jacoutot, Rui Matos, Florian Müllner, Marius Rieder, Ana Risteska, Jasper St. Pierre, Rico Tzschichholz, Colin Walters, Dan Williams Translations: Matej Urbančič [sl], Khaled Hosny [ar], Nguyễn Thái Ngọc Duy [vi], Nilamdyuti Goswami [as], Alexander Shopov [bg], Ivaylo Valkov [bg], Daniel Mustieles [es], Kjartan Maraas [nb,nn], Yaron Shahrabani [he], Nilamdyuti Goswami [as], Chao-Hsiung Liao [zh_HK, zh_TW], Ihar Hrachyshka [be], Praveen Illa [te] 3.5.3 ===== * calendar: Adapt to Evolution-Data-Server API changes [Matthew; #677402] * messageTray: Don't show non urgent notifications while in fullscreen [Adel; #677590] * modalDialog: show dialogs on monitor with the mouse pointer [Tim; #642591] * extensionSystem: Prepare for extension updating system [Jasper; #677586] * appDisplay: Don't show apps in NoDisplay categories in the All view [Jasper; #658176] * st: Trigger theme updates on resolution changes [Florian; #677975] * Always enable a11y [Bastien; #678095] * telepathyClient: ignore invalidated channels [Guillaume; #677457] * shell-app: Update app menu if necessary [Florian; #676238] * Enable the Screen Reader menu item [Matthias; #663256] * Disable unredirection when a modal operation is active [Giovanni] * Make folks optional [Colin] * Improve mount-operation support [Cosimo] - Fix exception when showing password entry [#678428] - Close the password entry on operation abort [#673787] - autorun: Don't allow autorun for things we mount on startup [#660595] - Turn passphrase prompt into a dialog [#674962] - Implement org.Gtk.MountOperationHandler [#678516] * Network menu improvements - Sort Wifi networks by strength [Giovanni; #658946] - Prefer wifi/3g over VPN in the panel [Cosimo; #672591] * clock: Switch to using GnomeWallClock [Colin; #657074] * remoteSearch: Allow to reference .desktop file for Title/Icon [Florian; #678816] * Fix memory leaks [Jasper, Pavel; #678079, #678406, #678737] * Misc fixes [Florian, Giovanni, Guillaume, Jasper, Kjartan, Piotr, Rui; #658955, #677497, #678396, #678502] * Misc cleanups [Bastien, Florian, Jasper; #677426, #677515, #678096, #678416] Contributors: Matthew Barnes, Giovanni Campagna, Cosimo Cecchi, Matthias Clasen, Guillaume Desmottes, Piotr Drąg, Adel Gadllah, Tim L, Kjartan Maraas, Rui Matos, Florian Müllner, Bastien Nocera, Jasper St. Pierre, Colin Walters Translations: Matej Urbančič [sl], Yuri Kozlov [ru], Tom Tryfonidis [el], Kjartan Maraas [nb], Žygimantas Beručka [lt], Luca Ferretti [it], Khaled Hosny [ar], Daniel Mustieles [es], Fran Diéguez [gl], A S Alam [pa] 3.5.2 ===== * main: Move 'toggle-recording' binding into the shell [Florian; #674377] * popupMenu: make sure to break the grab when the slider is not visible [Stefano; #672713] * st-theme-node-drawing: Don't use GL types [Neil; #672711] * Mirror Evolution calendar settings into our own schema [Owen; #674424] * shell-network-agent: don't crash if a request isn't found [Dan; #674961] * notificationDaemon: Match app based on WM_CLASS [Jasper; #673761] * NetworkMenu: use network-offline while loading [Giovanni; #674426] * lookingGlass: Remove the Errors tab [Jasper; #675104] * searchDisplay: Reset keyboard focus after displaying async results [Rui; #675078] * gdm: don't fail if fprintd is unavailable [Ray; #675006] * messageTray: Fix scrolling up [Jasper; #661615] * main: Close the recorder instead of pausing it [Rui; #675128] * Accessibility [Alejandro] - Use the proper label_actor for date menu on top panel [#675307] - Set the proper role/label_actor for SearchResult.content [#672242] - do not expose a label text if 'hidden' style class is used [#675341] * Magnifier: Add brightness and contrast functionality [Joseph; #639851] * theme: use a smaller border-radius for top bar [Jakub; #672430] * placeDisplay: use new bookmark file location [Matthias; #675443] * port all synchronous search providers to the async API [Jasper, Rui; #675328] * NetworkAgent: disallow multiple requests for the same connection/setting [Giovanni; #674961] * userMenu: Update to latest mockups [Florian; #675802] * util: Don't double-fork when spawning from Alt-F2 [Colin; #675789] * messageTray: Make Source usable without subclassing [Jasper; #661236] * panel: Check for appMenu button's reactivity before opening [Florian; #676316] * Fix formatting of bluetooth passkey [Florian; #651251] * notificationDaemon: Filter out file-transfer notifications [Jasper; #676175] * Don't use global.log() [Jasper; #675790] * Fix broken extension loading in some distributions [Owen, Alexandre; #670477] * shell-app: Raise windows in reverse order to preserve the stacking [Rui; #676371] * Generalize gdm-mode [Florian; #676156] * Switch string formatting to the one inside gjs [Jasper; #675479] * extensionUtils: Support subdirectories in getCurrentExtension [Jasper; #677001] * panel: Refuse to add (legacy) status icons not part of the session mode [Florian; #677058] * Add an initial-setup mode [Matthias; #676697] * status/keyboard: Port to the new input sources settings [Rui; #641531] * NetworkMenu: show notifications for failed VPN connections [Giovanni; #676330] * userMenu: Indicate progress on status changes [Florian; #659067] * recorder: Honor "disable-save-to-disk" lockdown key [Rūdolfs; #673630] * searchDisplay: Use the rowLimit we pass to the IconGrid [Christian; #675527] * endSessionDialog: Factor out _updateDescription from _updateContent [Alejandro; #674210] * Fix empathy's appMenu freezing the shell [Alban; #676447] * Code cleanups [Florian, Giovanni, Jasper; #672807, #672413, #676837, #676850, #672272] * Misc bug fixes [Alban, Florian, Giovanni, Guillaume, Jasper, Piotr, Rico, Ron, Rui, Stefano; #659968, #672192, #673177, #673198, #674323, #675301, #675370, #676347, #676806, #677097] Contributors: Alban Browaeys, Giovanni Campagna, Matthias Clasen, Guillaume Desmottes, Piotr Drąg, Stefano Facchini, Rui Matos, Rūdolfs Mazurs, Florian Müllner, Alejandro Piñeiro, Neil Roberts, Alexandre Rostovtsev, Joseph Scheuhammer, Jakub Steiner, Jasper St. Pierre, Ray Strode, Owen Taylor, Rico Tzschichholz, Colin Walters, Dan Winship, Ron Yorston Translations: OKANO Takayoshi [ja], Daniel Mustieles [es], Changwoo Ryu [ko], Yaron Shahrabani [he], Fran Diéguez [gl], Jonh Wendell [pt_BR], Kjartan Maraas [nb], Luca Ferretti [it], Tom Tryfonidis [el], Sandeep Sheshrao Shedmake [mr], Takanori MATSUURA [ja], Dirgita [id], Mantas Kriaučiūnas [lt], Matej Urbančič [sl], Jiro Matsuzawa [ja] 3.4.1 ===== * Fix crash that occurred when an icon theme change caused unexpected reentrancy in the icon loading code [Jasper; #673512] * Don't show system and other disabled users in the GDM user list [Adel; #673784] * Make gnome-shell-calendar-server initialize GTK+ so it can display password prompts if needed [#673608; Owen, Rico] * Adapt to Mutter API change for keybinding addition [Florian; #673014] * Fix crash when an extension was installed as both a user extension and a system extension [#673613; Jasper] * Fix bug where chat entry could end up partially offscreen [Joost, 661944] * Fix problem where icons weren't updating when theme was changed [#672941; Florian] * Look for Evolution calendar settings in GSettings, not GConf [#673610; Owen] * Add F10 for the application menu [#672909; Florian] * Fix %Id format characters to work in translations [#673106; Cosimo] (were already used in fa translation) * Fix error when NetworkManager restarts [#673043; Giovanni] * Improve efficiency of overview redraws by working around Clutter issue [Stefano; #670636] * Misc bug fixes [Florian, Giovanni, Jasper, Rui, Stefano; #672592, #672641, #672719, #673187, #673233, #673656] Contributors: Giovanni Campagna, Cosimo Cecchi, Stefano Facchini, Adel Gadllah, Rui Matos, Florian Müllner, Jasper St. Pierre, Owen Taylor, Rico Tzschichholz, Joost Verdoorn Translations: Khaled Hosny [ar], Ihar Hrachyshka [be], Alexander Shopov [bg], Gil Forcada, Jordi Serratosa [ca], Petr Kovar [cs], Bruce Cowan [en_GB], Carles Ferrando [ca@valencia], Wolfgang Stöggl [de], Daniel Mustieles [es], Arash Mousavi [fa], Bruno Brouard [fr], Fran Diéguez [gl], Sweta Kothari [gu], Yaron Shahrabani [he], Gabor Kelemen [hu], Shankar Prasad [kn], Žygimantas Beručka [lt], Rudolfs Mazurs [lv], Sandeep Sheshrao Shedmake [mr], Kjartan Maraas [nb], Piotr Drąg [pl], Yuri Myasoedov [ru], Daniel Nylander [se], Matej Urbančič [sl], Miroslav Nikolić [sr], Sasi Bhushan, Praveen Illa [te], Yinghua Wang [zh_CN] 3.4.0 ===== * Don't crash when taking screenshots [Jasper; #672775] * Fix dialog-resizing problem [Florian; #672543] Contributors: Florian Müllner, Jasper St. Pierre Translations: Khaled Hosny, Abderrahim Kitouni [ar], Ihar Hrachyshka [be], Alexander Shopov [bg], Marek Černocký [cs], Jiri Grönroos, Timo Jyrinki [fi], Bruno Brouard [fr], Fran Diéguez [gl], Yaron Shahrabani [he], Gabor Kelemen [hu], Jiro Matsuzawa [ja], Kenneth Nielsen [dk], Mattias Põldaru [et], Changwoo Ryu [ko], Rudolfs Mazurs [lv], Jonh Wendell [pt_BR], Yuri Myasoedov[ru], Daniel Korostil [uk], Nguyễn Thái Ngọc Duy [vi], Chao-Hsiung Liao [zh_HK, zh_TW] 3.3.92 ====== * Add shell-dialogs for GNOME Keyring prompts [Stef; #652459, #652460, #671034] * When the user returns from idle, bring up the message tray if there were messages while they were away [Marina; #643014] * https://live.gnome.org/EveryDetailMatters - Make the workspace thumbnails clickable all the way to the edge of the screen [Stefano; #643319] - Don't slide out the workspace thumbnails if the mouse is over them when entering the overview [Joost, #651092] - Fix placeholder jumps while dragging a dash item [Joost; #651842] - Don't favorite apps if they are dropped back at the same position [Jean-Philippe; #656333] - To avoid confusion, don't allow removing running apps from favorites [Florian; #644853] - Fix creation of new workspaces by dragging application launchers [Stefano; #664202] - Make it easier to drag dash items without triggering the menu [Florian; #637103] * Accessibility [Alejandro] - Add StWidget API for easily adding accessible states and setting roles, names [#668366, #667432, #671378] - Set accessibility information on UI elements [#644255, #667432, #668361, #672047, #670308, #670312, #670719, #671404] * Improve key-navigation in the overview [Rui, Florian; #663901] * Key navigation bug fixes [Rui, Florian; #662493, #663437, #665215, #671998] * Honor a 'org.gnome.shell.overrides.dynamic-workspaces' setting that determines whether the workspace count is dynamic and unsaved in GSettings or static and saved. [Florian; #671568] * Avoid saving user presence to GSettings when not necessary [Florian; #665701, #668214] * Save screencasts in the users Videos/ directory [Adel; #670749] Use a "human readable" filename [Florian, Adel, Ray; #670753] * Allow dragging from the empty part of the top panel to unmaximize a window [Florian; #666359] * Fix hangs that could occur when switching away to a VT [Ray; #653833] * Fix problems with installing from extensions.gnome.org [Giovanni; #671134] * Fix locking the screen when suspending via menu [David, Gert; #670820] * Fix browser plugin with Konqueror and Opera [Jasper] * Fix shell restart not to bring up failure screen [Giovanni; #648384] * Reorganize and clean up CSS theming [Allan; #668209] * Improve appearance of modal dialogs [Allan, Florian; #670227, #668209] * Update the calendar code to use ECalClient [Giovanni; #671177] * Update jhbuild script to use the main moduleset [Owen, Will; #668440] * StTextureCache: code cleanup, evict unused icons, merge together simultaneous requests for the same icon [Jasper; #670771, #671656, #672273] * Clean up St for recent Clutter changes and fix bugs. StContainer and StGroup are removed [Jasper, Florian; #670034, #670640, #670904] * Code cleanup [Adel, Jasper, Rui; #613194, #671086, #671103] * Misc bug fixes [Adel, Colin G, Cosimo, Florian, Giovanni, Jasper, Marius, Rui, Stefano; #651130, #658946, #667552, #670076, #671001, #670979, #671410, #671411, #671556, #671656, #671657, #672011, #672024, #672240, #672265, #672270, #672321, #672326, #672413, #672471] Contributors: Jean-Philippe Braun, Giovanni Campagna, Cosimo Cecchi, Allan Day, Stefano Facchini, David Foerster, Adel Gadllah, Marius Gedminas, Colin Guthrie, Gert Michael Kulyk, William Lachance, Rui Matos, Florian Müllner, Alejandro Piñeiro, Jan Alexander Steffens, Jasper St. Pierre, Ray Strode, Owen Taylor, Joost Verdoorn, Stef Walter, Marina Zhurakhinskaya Translations: Nilamdyuti Goswami [as], Ihar Hrachyshka, Kasia Bondarava [be], Alexander Shopov, Ivaylo Valkov [bg], Gil Forcada [ca], Marek Černocký [cs], Mario Blättermann [de], Kris Thomsen [dk], Bruce Cowan [en_GB], Kristjan Schmidt [eo], Daniel Mustieles [es], Mattias Põldaru [et], Inaki Larranaga Murgoitio [eu], Arash Mousavi [fa], Timo Jyrinki [fi], Bruno Brouard [fr], Fran Diéguez [gl], Sweta Kothari [gu], Yaron Shahrabani [he], Gabor Kelemen [hu], Jiro Matsuzawa [ja], Baurzhan Muftakhidinov [kk], Seong-ho Cho [ko], Žygimantas Beručka [lt], Anita Reitere [lv], Anish A, Praveen Arimbrathodiyil, Mohammed Sadiq [ml], fKjartan Maraas [nb], Wouter Bolsterlee [nl], A S Alam [pa], Piotr Drąg [pl], Duarte Loreto [pt], Jonh Wendell [pt_BR], Yuri Myasoedov [ru], Matej Urbančič [sl], Miroslav Nikolić [sr], Tirumurti Vasudevan [ta], Sasi Bhushan, Krishnababu Krothapalli [te], Daniel Korostil [uk], Nguyễn Thái Ngọc Duy [vi], YunQiang Su, Yinghua Wang [zh_CN], Chao-Hsiung Liao [zh_HK, zh_TW] 3.3.90 ====== * Allow other applications to implement search providers via D-Bus [Florian; #663125, #670148] * Remove "Recent Items" search, as replaced by Documents search [Florian; #663125] * Allow NetworkManager VPN plugins to use a shell-themed dialog [Giovanni; #658484] * Port away from deprecated Clutter API [Jasper, Florian, Adel; #670034] - StTooltip is removed - StWidget is now a concrete class and can be instantiated - st_container_destroy_children(), st_box_layout_insert_actor(), and other functions removed in favor of new replacements in Clutter. * Use systemd for console/session handling when available [Lennart] * Visual improvements to contact search, padding, top panel, checkboxes [Allan, Florian, Jakub; #669489, #669811, #669993] * Add a include_cursor parameter to Screenshot and ScreenshotWindow D-Bus methods [Adel; #670086] * Add a "FlashArea" D-Bus method to do the screenshot flash without a screenshot [Adel; #669660] * Build fixes [Adel, Giovanni, Jasper; #658484, #669637] * Misc bug fixes [Adel, Florian, Giovanni, Guillaume, Jasper, Jeff, Marc-Antoine, Stef, Stefano, Will; #642135, #658484, #658908, #667694, #669098, #669921, #669662, #669694, #669776, #669887, #669921, #670005, #670006, #670319, #670418, #670489] Contributors: Giovanni Campagna, Cosimo Cecchi, Allan Day, Guillaume Desmottes, Jeff Epler, Stefano Facchini, Adel Gadllah, Florian Müllner, Marc-Antoine Perennou, Jasper St. Pierre, Lennart Poettering, Jakub Steiner, Jasper St. Pierre, Will Thompson, Stef Walter Translations: Ihar Hrachyshka [be], Marek Černocký, Adam Matoušek [cs], Kenneth Nielsen [dk], Daniel Mustieles [es], Mattias Põldaru [et], Fran Diéguez [gl], Yaron Shahrabani [he], Luca Ferretti [it], Baurzhan Muftakhidinov [kk], Aurimas Černius [lt], Kjartan Maraas [nb], A S Alam [pa], Matej Urbančič [sl], Miroslav Nikolić [sr], Praveen Illa [te], Chao-Hsiung Liao [zh_HK, zh_TW] 3.3.5 ===== * Extension system: [Jasper; #668429] http://blog.mecheye.net/2012/02/more-extension-api-breaks/ - Add a 'gnome-shell-extension-prefs' application for displaying extension preferences as provided by the extension in a prefs.js file. - Allow launching gnome-shell-extension-prefs from extensions.gnome.org throuhg the browser plugin. - Add ExtensionUtils.getCurrentExtension() for an extension to get a handle to an extension object, to get local imports or paths. - Add an onshellrestart callback to the browser plugin [Jasper; #668517] * Screenshots: - Move the screenshot "flash" to the shell [Cosimo; #668618] - Move saving screenshots to a thread [Adel; #652952] - Correctly screenshot rounded decorations [Jasper; #662486] * Screen recorder: - Change the default pipeline to favor speed over quality [Owen; #669066] - Drop frames to keep from running the user out of memory [Owen; #669066] * Work around a slow implementation of glReadPixels() in the Intel drivers, improving performance for screenshots and the screen recorder. [Owen; #669065] * Use Keywords: field in desktop files when search for applications [Florian; #609702] * Strip debian- when matching desktop file names [Jasper; #665647] * Fix up various problems from CSS background size-addition [Florian, Jasper; #668430, #633462] * UI tweaks and behavior fixes [Florian, Giovanni, Stefano; #643867, #666197, #664622] * Some improvements to exported accessibility information [Alejando; #667376] * Don't show contacts without IM information as offline [Florian; #662685] * Don't change status from hidden to extended_away when going idle [Florian; #642408] * Cleanups [Emmanuele, Jasper; #662152, #669239] * Misc bug fixes [Cosimo, Dan, Florian, Jasper, Rui, Stefano; #633462, #643867, #662213, #662386, #662747, #665000, #665017, #665322, #667371, #667860, #668020, #668517, #668541, #669236] Contributors: Emmanuele Bassi, Giovanni Campagna, Cosimo Cecchi, Stefano Facchini, Adel Gadllah, Rui Matos, Florian Müllner, Alejandro Piñeiro, Jasper St. Pierre, Owen Taylor, Dan Winship Translations: Daniel Mustieles [es], Timo Jyrinki [fi], Seán de Búrca [ga], Fran Diéguez [gl], Kjartan Maraas [nb], Wouter Bolsterlee [nl], Danishka Navin [si], Yaron Shahrabani [he], Matej Urbančič [sl], Chao-Hsiung Liao [zh_HK, zh_TW] 3.3.4 ===== * https://live.gnome.org/EveryDetailMatters - Add "browse" for labels for dash items - once a tooltip is showing, switch to other items without a delay [Seif; #666170] - Always scale down windows in the overview at least to 70% [Vit; #646704] - Fix the new-workspace drop indicator sometimes getting stuck [Stefano; #664201] - Delay rearranging windows in the overview as long as the pointer is over a window [Vit; #645325] * Add a GConf => DConf migration file for overridden Mutter settings [Florian; #667636] * When a VPN connection is active, show that as the network icon [Giovanni; #665115] * Handle the "ExtendedAway" IM status as away, not offline [Guillaume; #667813] * Improve the appearance of the labels in "Applications" [Alex; #642392] * Adjust for GTK+ and Mutter API changes for application menu [Ryan; #668118] * Add section label support to the application menu [Giovanni; #666681] * Fix screenshot methods to work again [Cosimo; #667662] * Fix several crashers related to updating workspace thumbnails [Owen; #667652] * Fix memory management error causing gnome-shell-hotplug-sniffer to crash [Owen; #667378] * Build fixes [Emmanuele, Rico; #667864] * Code cleanups [Adel; #668087] * Misc bug fixes [Colin, Florian, Giovanni, Owen, Xavier; #633028, #658817, #664138, #667881, #668048, #668050] Contributors: Emmanuele Bassi, Giovanni Campagna, Cosimo Cecchi, Xavier Claessens, Guillaume Desmottes, Stefano Facchini, Adel Gadllah, Alex Hultman, Ryan Lortie, Seif Lotfy, Florian Müllner, Vit Stanislav, Owen Taylor, Rico Tzschichholz, Colin Walters Translations: Ihar Hrachyshka [be], Alexander Shopov [bg], Arash Mousavi [fa], Jiri Grönroos, Timo Jyrinki [fi], Fran Diéguez [gl], Kjartan Maraas [nb], Yuri Myasoedov [ru], Matej Urbančič [sl], Nguyễn Thái Ngọc Duy [vi] 3.3.3 ===== * https://live.gnome.org/EveryDetailMatters - Stop flashing the window labels on actions in overview [Zan; #644861] - Improve the look of window captions in the overview [Marc; #664487] - Move dash tooltips beside the icon [Seif, Stefano; #666166] * Support application menus exported from applications via new GLib API and D-Bus protocol. [Giovanni, Colin, Matthias, Cosimo] * For removable device prompts, show "Open with Rhythmbox], rather than "Open with Rhythmbox Music Player' [Florian; #664561] * Switch to activating the message tray only with a hot corner rather than a full row of pixels, allowing mouse events to apps [Rui; #663366] * Fully handle the case where the workspaces-only-on-primary GSetting is set to false [Florian; #652580] * Add support for background-size CSS property to St [Quentin; #633462] * Port to new GJS Lang.Class framework [Giovanni; #664436] * Finish port to GDBus [Giovanni; #664436] * Stop using the deprecated Clutter default stage [Florian, Jasper; #664052] * Fix bugs that kept browser plugin from working in WebKit-based browser [Jasper; #666444] * Fix typo that made uninstalling extensions not work [Jasper] * Fix crash in browser plugin if shell is not run [Jürg] * Reintroduce piscine paschal ovum [Giovanni; #666606] * Network menu bug fixes Giovanni; #664124, #665194, #665680, #666429, #666614] * Misc bug fixes [Florian, Jasper, Jonny, Marina, Ron; #647587, #659272, #664138, #665261, #666020, #666243] * Build fixes [Owen] Contributors: Jürg Billeter, Giovanni Campagna, Stefano Candori, Cosimo Cecchi, Matthias Clasen, Zan Dobersek, Quentin Glidic, Jonny Lamb, Ryan Lortie, Seif Lotfy, Rui Matos, Florian Müllner, Bastien Nocera, Jasper St. Pierre, Marc Plano-Lesay, Owen Taylor, Colin Walters, Ron Yorsten, Marina Zhurakhinskaya Translations: Petr Kovar [cs], Kris Thomsen [dk], Daniel Mustieles [es], Ville-Pekka Vainio [fi], Yaron Shahrabani [he], Luca Ferretti [it], Hideki Yamane [ja], Žygimantas Beručka [lt], Jovan Naumovski [mk], Kjartan Maraas [nb], "Andreas N" [nn], Lucian Adrian Grijincu [ro], Matej Urbančič [sl], Praveen Illa [te], Muhammet Kara [tr], Daniel Korostil [uk], Aron Xu [zh_CN] 3.3.2 ===== * Port D-Bus usage in the shell to GDBus [Giovanni, Marc-Antoine, Florian, Jasper, Matthias; #648651, #658078, #663902, #663941] * Message tray - Add right-click option to chats to mute the conversation [Ana; #659962] - Don't steal the focus when popping up under the pointer [Rui; #661358] * Looking Glass - Add alt-Tab completion [Jason; #661054] - Show errors from extensions in the extensions tab [Jasper; #660546] - Allow switching tabs with PageUp/PageDown - Theme consistently with the rest of the shell [Jason; 650900] * Extension system - Don't try to load disabled extensions at all [Jasper; #661815, #662704] - Enable and disable plugins in a consistent order [Jasper; #661815, #662704] - Add options to enable/disable extensions to gnome-shell-extension-tool [Jasper; #661815] * Adapt to Mutter change to GSettings [Florian, Matthias; #663429] * Allow creating a new workspace by dragging a window or launcher in the middle of two existing ones [Jasper; #646409] * Allow using Alt-Tab while during drag-and-drop and other operations that grab the pointer [Adel; #660457] * Do a better job of finding the right user to authenticate as when showing a PolKit dialog [Matthias; #651547] * Control the D-Bus Eval() method by the developer-tools GSetting which is used for looking glass and screen recorder. [Jasper; #662891] * Fix browser plugin to work under WebKit-based browser [Jasper; #663823] * Fix certain stacking issues with alt-Tab [Jasper; #660650] * Fixes for GLib deprecations [Jasper; #662011]p * Fixes for GTK+ deprecations [Florian, Rico; #662245]p * Fixes for Clutter deprecations [Jasper; #662627] * Visual improvements and UI tweaks [Florian, Jakub, Jasper; #662800, #658096, #662226] * Hard-code "Home" as the name for the home dir, rather than looking it up via GSettings; avoids schema dependency [Cosimo; #559895] * Don't show "Switch User" on single user machines [Florian; #657011] * Generate documentation for St toolkit [Florian] * Improve marking of strings for translation [Matthias, Piotr; #658664] * Networking menu bug fixes [Giovanni; #650007, #651378, #659277, #663278] * Code cleanups and leak fixes to StTextureCache [Jasper, Florian; #660968, #662998] * Code cleanups [Adel, Florian, Jasper; #662238, #663584] * Build fixes [Adel, Colin, Florian, Ming Han] * Misc bug fixes [Adel, Florian, "Fry", Jasper, Giovanni, Ray, Rui, Stefan; #660520, #661029, #661231, #661623, #661921, #662235, #662236, #662502, #662394, #662799, #662969, #663175, #663277, #663815, #663891, #662967] Contributors: Giovanni Campagna, Cosimo Cecchi, Matthias Clasen, Piotr Drąg, Adel Gadllah, Rui Matos, Florian Müllner, Marc-Antoine Perennou, Ana Risteska, Jason Siefken, Jakub Steiner, Ray Strode, Jasper St. Pierre, Ming Han Teh, Rico Tzschichholz, Colin Walters, Stefan Zwanenburg Translation: Alexander Shopov [bg], Marek Černocký [cs], Mario Blättermann [de], Kostas Papadimas [el], Bruce Cowan [en_GB], Kristjan Schmidt [eo], Jorge González, Daniel Mustieles, Benjamín Valero Espinosa [es], Mattias Põldaru [et], Arash Mousavi [fa], Ville-Pekka Vainio [fi], Fran Diéguez [gl], Yaron Shahrabani [he], Hideki Yamane [ja], Algimantas Margevičius [lt], Kjartan Maraas [nb], Daniel Nylander [se], Matej Urbančič [sl], Praveen Illa [te], Muhammet Kara [tr], Nguyễn Thái Ngọc Duy [vi], Cheng-Chia Tseng [zh_HK, zh_TW] 3.2.1 ===== * Restore the IM state on startup - if you were available in when you logged out, then you'll be set available again when you log in. [Florian; #65902, #661485] * Improve searching for contacts in the overview: search more fields, show a more meaningful name, require that all search terms match. [Florian, Matthias; #660580] * Improve search for applications in the overview: take frequency into account and tweak match algorithm [Florian; #623372] * Remove the "Show Password" switch from network password prompts, and move the functionality to a right-click menu [Florian; #658948] * Add context menus with Cut/Paste options to most entries [Florian; #659275] * On screen keyboard: - Show the keyboard immediately when it's turned enabled [Dan; #659743] - Fix problem where keyboard would hide when starting to type in the search entry [Nohemi; #661340] - Fix problem with keyboard hiding when selected accented characters [Nohemi; 661707] * Login mode: - Allow hitting Enter to select the first user [Ray; #657996] - Fix flicker of a fingerprint prompt that could show up [Ray; #660492] - Fix password bullets vanishing during login [Ray; #657894] - Misc bug fixes and visual tweaks [Ray; #659763, #660919, #661479] * Display a caps-lock warning in password entries [Florian; #660806] * Show the state of installed extensions in Looking Glass [Jasper; #660494] * Load user extensions after system ones [Jasper; #661815] * Fix problem with many applications showing extra-large icons in notifications [Marina; #659158] * Fix a problem where alt-Tab had trouble tracking the current application with certain applications such as Emacs. [Dan; #645026] * Fix confusion between different users avatar images [Florian; #660585] * Remove behavior where you could switch workspaces by bumping a dragged window in the overview against a screen edge; it was leftover and just confusing. [Florian; #660838] * Fix long-standing bug where the Dash in the overview could end up mis-sized and run off the screen [Florian; #649248] * Fix automatic launching of applications when media is inserted [Cosimo; #660821] * Fix handling of vertically stacked monitors with NVIDIA drivers [Florian; #661387] * Translation marking fixes [Jasper, Wouter; #660600] * Code cleanups and warning fixes [Adel, Dan, Florian, Jasper; #659822, #659940, #660122, #660358, #660968, #661231] * Small memory leak fixes [Florian, Jasper; #661231] * Misc bug fixes [Adel, Florian, Jasper; #659274, #659861, #660166, #660310, #660397, #660608, #660606, #660674, #660774. #660848, #661151, #661617] Contributors: Wouter Bolsterlee, Cosimo Cecchi, Matthias Clasen, Nohemi Fernandez, Adel Gadllah, Florian Müllner, Jasper St. Pierre, Ray Strode, Dan Winship, Marina Zhurakhinskaya Translations: Tiffany Antopolski [eo], Xandru Armesto [ast], Alexander Shopov, Ivaylo Valkov [bg], Gil Forcada [ca], Carles Ferrando [ca@valencia], Mario Blättermann, Paul Seyfert [de], Bruce Cowan [en_GB], Jorge González, Daniel Mustieles [es], Arash Mousavi [fa], Bruno Brouard [fr], Seán de Búrca [ga], Fran Diéguez [gl], Gabor Kelemen [hu], Luca Ferretti [it], Takayuki Kusano [ja], Changwoo Ryu [ko], Erdal Ronahi [ku], Algimantas Margevičius [lt], Rudolfs Mazurs [lv], Wouter Bolsterlee [nl], Piotr Drąg [pl], Adorilson Bezerra [pt_BR], Yuri Myasoedov [ru], Matej Urbančič [sl], Daniel Nylander [sv], Miroslav Nikolić [sr, sr@latin], Tirumurti Vasudevan [ta], Krishnababu Krothapalli [te], Daniel Korostil [uk], Nguyễn Thái Ngọc Duy [vi], YunQiang Su [zh_CN] 3.2.0 ===== * Prevent the fallback on-screen keyboard from showing up while GNOME Shell is running [Dan, #659865] * Disable code to reposition windows around the on-screen keyboard; it wasn't finished or working properly. [Dan; #659643] * Fix interaction between on-screen keyboard and notifications [Dan; #658603] * Fix menu-sizing problems in right-to-left locales. [Florian; #659827] * Update chat icons in the message tray when an avatar image changes [Marina; #659768] * Fix problem with empty notification bubbles being left [Marina; #659862] * Fix problem with chat notifications bouncing when new messages come in. [Marina; #659768] * Fix bug that was causing SIP calls to automatically be accepted in some circumstances [Guillaume; #660084] * Fix string that should have been marked translatable [Frédéric] * Fix a crash that could happen during CSS transitions [Florian; #659676] * Build fixes [Colin, Florian] Contributors: Guillaume Desmottes, Florian Müllner, Frédéric Péters, Colin Walters, Dan Winship, Marina Zhurakhinskaya Translations: Friedel Wolff [af], Nilamdyuti Goswami [as], Ihar Hrachyshka [be], Ivaylo Valkov [bg], Gil Forcada [ca], Carles Ferrando [ca@valencia], Petr Kovar [cs], Mario Blättermann [de], Kris Thomsen [dk], Tiffany Antopolski, Kristjan Schmidt [eo], Daniel Mustieles [es], Inaki Larranaga Murgoitio [eu], Tommi Vainikainen [fi], Bruno Brouard [fr], Fran Dieguez [gl], Yaron Shahrabani [he], Gabor Kelemen [hu], Andika Triwidada [id], Jiro Matsuzawa [ja], Changwoo Ryu [ko], Rudolfs Mazurs [lv], Aurimas Černius [lt], Kjartan Maraas [nb], A S Alam [pa], Piotr Drąg [pl], Duarte Loreto [pt], Djavan Fagundes, Rodolfo Ribeiro Gomes, Gabriel F. Vilar [pt_BR], Yuri Myasoedov [ru], Daniel Nylander [se], Martin Srebotnjak [sl], Michal Štrba [sv], Krishnababu Krothapalli, Praveen Illa [te], Cheng-Chia Tseng [zh_KH, zh_TW] 3.1.92 ====== * Login screen - Add the ability to set a logo at the top of the user list [Ray; #658062] - Add fingerprint reader support [Ray; #657823] - Add a power button offering the choice of Suspend/Restart/Power off [Ray; #657822] - Remove the option to view the current keyboard layout [Matthias; #659164] - Make Control-Alt-Tab work for full keyboard access [Ray; #659177] * Frequently initiate a full garbage collection; Spidermonkey isn't very good at tracking the amount of resources we have allocated so this hopefully will improve memory usage without affecting performance too much [Colin; #659254] * Stop adding a notification when the network connection is lost [Colin; #658954] * When disabling notifications; display a notification "Your chat status will be set to busy" [Florian; #652718] * Fix keynav in network dialogs [Florian; #659133] * Improve calendar styling [Sean; #641135, #651299] * Shrink padding around panel buttons for narrow screens [Dan; #651299] * Allow enabling the onscreen keyboard through the accessibility menu [Dan; #612662] * Fix problem that was causing VPN secret dialogs to be delayed before showing [Florian; #658484] * Make custom-keybindings for the window switcher that don't use alt work correctly [Florian; #645200] * Fix duplicate application icons in the Activities Overview [Colin; #659351] * Bug fixes for dimming windows with attached modal dialogs [Jasper, Owen; #659302, 659634] * Add build-time support for BROWSER_PLUGIN_DIR environment variable [Vincent; #659123] * Build fixes [Vincent; #659194] * Code cleanups and test cases [Adel, Dan, Florian, Jasper; #651299, #658092, #658939] * Misc bug fixes [Adel, Colin, Cosimo, Dan, Florian, Giovanni, Jasper, Ray, Xavier; #651299, #652837, #657249, #658004, #658150, #658239, #658469, #658598, #658605, #659050, #659159, #659210, #659270, #659370, #659633] Contributors: Giovanni Campagna, Cosimo Cecchi, Xavier Claessens, Matthias Clasen, Rui Matos, Florian Müllner, Jasper St. Pierre, Owen Taylor, Vincent Untz, Colin Walters, Sean Wilson, Dan Winship Translations: Ihar Hrachyshka [be], Alexander Shopov, Ivaylo Valkov [bg], Mario Blättermann [de], Jorge González, Daniel Mustieles [es], Arash Mousavi [fa], Ville-Pekka Vainio [fi], Fran Dieguez [gl], Sweta Kothari [gu], Gabor Kelemen [hu], Jiro Matsuzawa [ja], Luca Ferretti [it], Rudolfs Mazurs [lv], Kjartan Maraas [nb], A S Alam [pa], Piotr Drąg [pl], Duarte Loreto [pt], Yuri Myasoedov [ru], Daniel Nylander [se], Matej Urbančič [sl], Miroslav Nikolić [sr, sr@latin], Michal Štrba [sv], Tirumurti Vasudevan [ta], Phương Lê Hoàng [vi], Aron Xu [zh_CN], Chao-Hsiung Liao [zh_HK, zh_TW] 3.1.91.1 ======== * Add a browser plugin - this plugin, tied to extensions.gnome.org, allows users to download and install shell extensions, and enable, disable, and uninstall extensions they already have installed. [Jasper; #658070, #658612] * Improve adding links to URLs in notifications [Dan; #636252] * Remove "connection lost" notifications after reconnecting [Giovanni; #658049] * Hide the onscreen keyboard when leaving a text entry [Dan; #658591] * Fixes for translated strings [Florian; #639987, #644097, #645037] * Bug fixes for network menu [Florian; #658492] * Code cleanup [Dan; #646934] * Build fixes [Javier, Rico] * Misc bug fixes [Emmanuele, Florian, Jasper, Marina, Matthias, Ray; #652837, #658423, #658503, #658525, #658562, #658624, #658640, #658983] Conributors: Emmanuele Bassi, Giovanni Campagna, Matthias Clasen, Javier Jardón, Florian Muellner, Jasper St. Pierre, Ray Strode, Rico Tzschichholz, Dan Winship, Marina Zhurakhinskaya Translations: Ihar Hrachyshka [be], Bruce Cowan [en_GB], Jorge González, Daniel Mustieles [es], Timo Jyrinki [fi], Bruno Brouard, Luc Guillemin, Claude Paroz, Luc Pionchon [fr], Fran Dieguez [gl], Rajesh Ranjan [hi], Andika Triwidada [id], Luca Ferretti [it], Changwoo Ryu [ko], Rudolfs Mazurs [lt], Kjartan Maraas [nb], Manoj Kumar Giri [or], A S Alam [pa], Piotr Drąg [pl], Duarte Loreto [pt], Henrique P. Machado, Gabriel F. Vilar [pt_BR], Daniel Nylander [se], Matej Urbančič [sl], Tirumurti Vasudevan [ta], Yinghua Wang [zh_CN], Chao-Hsiung Liao [zh_HK, zh_TW] 3.1.91 ====== * Fix problem with applications vanishing from alt-Tab when desktop files change. [Colin; #657990] * Fix interaction of on-screen keyboard with run-dialog and Looking Glass console [Dan; #657986] * Add public API for adding and removing search providers [Philippe; #657548, #658113] * Allow changing IM status with scroll wheel [Florian; #657973] * Limit volume slider to 100% [Bastien; #657607] * Change "Do Not Disturb" to "Notifications" in user menu [Florian; #652718] * Switch browser in default favorites to Epiphany [Colin; #650616] * Misc bug fixes [Dan, Florian, Jasper, Marc-Antoine, Rui; #649631, #655069, #656142, #657703, #657759, #658007, #658065, #658176] Contributors: Rui Matos, Florian Müllner, Philippe Normand, Marc-Antoine Perennou, Jasper St. Pierre, Colin Walters, Dan Winship Translations: Ihar Hrachyshka [be], Mario Blättermann [de], Kris Thomsen [da], Jorge González [es], Arash Mousavi [fa], Fran Dieguez [gl], Takayuki Kusano [ja],Aurimas Černius [lt], Kjartan Maraas [nb], A S Alam [pa], Stas Solovey [ru], Daniel Nylander [se], Tirumurti Vasudevan [ta], Chao-Hsiung Liao [zh_HK, zh_TW] 3.1.90.1 ======== * Fix typo that was breaking the "Login Screen" mode [Marc-Antoine] * Fix build with new gobject-introspection [Dan] * Use a better icon for removable devices [Cosimo; #657757] * Add support for asynchronous search provides [Philippe, Jasper, Seif; #655220] * Misc bug fixes [Alex, Guillaume, Jasper; #657657, #657696] * Misc build fixes [Adel; #657697] Contributors: Cosimo Cecchi, Guillaume Desmottes, Adel Gadllah, Alexander Larsson, Seif Lotfy, Philippe Normand, Marc-Antoine Perennou, Jasper St. Pierre, Dan Winship Translations: Jorge González, Daniel Mustieles [es], Stas Solovey [ru] 3.1.90 ====== * Add an on-screen keyboard that uses Caribou as a backend [Nohemi, Dan; #612662] * Allow searching for people in the overview using libfolks as the backend [Morten; #643018] * Add a "Login Screen" mode to be used when GDM is running; this mode has a stripped down user interface, and also contains the code to display the user list and authentication. [Ray; #657082] * Rework user menu to separate out "Do Not Disturb" from the IM status and to visually match GNOME Contacts. [Florian; #652837] * Implement displaying images such as cover-art in notifications [Neha, Marina; #621009] * Support default actions for notifications [Florian; #655818] * Networking - Stop using nm-applet for dialogs; do them as proper system modal dialogs in the shell code. [Giovanni; #650244] - Fix handling of hidden access points [Giovanni; #646454] * Telepathy integration - Support subscription requests [Guillaume, Xavier; #653941] - Notify on account connection errors [Alban, Jasper, Xavier; #654159] - Allow approving file transfers [Guillaume; #653940] - Improve styling of messages [Jasper; #640271] * Extension system [Jasper; #654770] - Support live enabling and disabling of extensions - Add the ability to install extensions from HTTP - Enhance D-Bus interface for controlling extensions - Collect errors separately for each extension * Add Main.panel.addToStatusArea for extension convenience [Giovanni, Jasper, Marc-Antoine; #653205] * Port to the new gnome-menus API. Clean up and speed up application information loading [Colin; #648149, #656546] * Use the accountsservice library rather than cut-and-pasted GDM code [Florian; #650893] * Add a D-Bus interface to take a screenshot; this will avoid various race conditions with the current gnome-screenshot approach [Adel; #652952] * Show numeric indicators to distinguish duplicate keyboard names [Giovanni; #650128] * Add GNOME Documents to the favorites list [Adel; #657520] * Update the clock immediately on resume from suspend [Colin; #656403] * Remove animation support from StAdjustment [Ray; #657082] * Support configuration of calendar applications via gsettings [Tassilo; #651190] * Don't fade in alt-Tab - wait a bit and show it instantly [Rui; #652346] * Darken workspace background on all workspaces [Rui; #656433] * Improve detection of the starting day of the week [Florian; #649078] * Add StButtonAccessible [Alejandro] * Visual tweaks to match mockups [Allan, Dan, Jasper, Marina; #640271, #655627, #655428, #656732] * Misc bug fixes [Dan, Florian, Giovanni, Guillaume, Jasper, Jeremy, Rui; #645708, #646761, #653119, #654398, #656125, #654707, #654898, #654638, #656335, #657111] * Code cleanups [Colin, Dan, Guillaume, Ray; #652718, #654639, #648651, #655813, #657082] * String tweaks [Jasper, Jeremy; #652984, #640271] * Build fixes [Jasper, Nohemi; #644275, #655812] Contributors: Jeremy Bicha, Giovanni Campagna, Xavier Claessens, Alban Crequy, Guillaume Desmottes, Allan Day, Neha Doijode, Nohemi Fernandez, Tassilo Horn, Rui Matos, Morten Mjelva, Florian Müllner, Alejandro Piñeiro, Jasper St. Pierre, Ray Strode, Colin Walters, Dan Winship, Marina Zhurakhinskaya Translations: Ivaylo Valkov [bg], Mario Blättermann [de], Diego Escalante Urrelo, Jorge González, Daniel Mustieles [es], Arash Mousavi [fa], Fran Dieguez [gl], Yaron Shahrabani [he], Andika Triwidada, Wibiharto [id], Aurimas Černius [lt], Umarzuki Bin Mochlis Moktar [ml], Kjartan Maraas [nb], A S Alam [pa], Daniel Nylander [se], Ngô Chin, Nguyễn Thái Ngọc Duy [vi], Aron Xu [zh_CN], Chao-Hsiung Liao [zh_HK, zh_TW] 3.1.4 ===== * Take over inserted media handling and autorun from gnome-session [Cosimo] * Message Tray - Display a count of unread notifications on icons [Jasper, Guillaume; #649356, #654139] - Only remove icons when the sender quits from D-Bus, not when it closes its last window [Neha, Marina; #645764] - Solve problems switching chats between shell and Empathy [Guillaume; #654237] - Fix handling of bad GMarkup in messages [Dan; #650298] - Never show notifications when the screensaver is active [Dan; #654550] * Telepathy integrationpp - Implement Telepathy Debug interface to enable empathy-debugger [Guillaume; #652816] - Allow approving room invitations, and audio/video calls [Guillaume; #653740 #653939] - Send typing notifications [Jonny; #650196] * Fix selection highlighting for light-on-dark entries [Jasper; #643768] * Make control-Return in the overview open a new window [Maxim] * Delay showing the alt-Tab switcher to reduce visual noise when flipping between windows [Dan; #652346] * When we have vertically stacked monitors, put the message tray on the bottom one [Dan; #636963] * Fix various problems with keynav and the Activities button [Dan; #641253 #645759] * Ensure screensaver is locked when switching users [Colin; #654565] * Improve extension creation tool [Jasper; #653206] * Fix compatibility with latest GJS [Giovanni; #654349] * Code cleanups [Adel, Dan, Jasper; #645759 #654577 #654791 #654987] * Misc bug fixes [Richard, Dan, Florian, Giovanni, Jasper, Marc-Antoine, Rui; #647175 #649513 #650452 #651082 #653700 #653989 #654105 #654791 #654267 #654269 #654527 #655446] * Build fixes [Florian, Siegfried; #654300] Contributors: Giovanni Campagna, Cosimo Cecchi, Guillaume Desmottes, Neha Doijode, Maxim Ermilov, Adel Gadllah, Siegfried-Angel Gevatter Pujals, Richard Hughes, Jonny Lamb, Rui Matos, Florian Müllner, Marc-Antoine Perennou, Colin Walters, Dan Winship, Marina Zhurakhinskaya Translations: Mario Blättermann, Paul Seyfert [de], Jorge González, Daniel Mustieles [es], Fran Dieguez [gl], Yaron Shahrabani [he], Luca Ferretti [it], Rudolfs Mazurs [lv], Kjartan Maraas [nb], A S Alam [pa], Yuri Kozlov [ru], Michal Štrba, Matej Urbančič [sl] 3.1.3 ===== * Fix problem with "user theme extension" breaking the CSS for other extensions [Giovanni; #650971] * Telepathy IM framework integration - Switch to using telepathy-glib rather than talking to Telepathy via D-Bus [Guillaume, Jasper; #645585, #649633, #651138, #651227] - Acknowledge messages when the user clicks on them [Guillaume, #647893] - Fix problem with telepathy icon blinking for incoming messages even though the user has been notified of them [Guillaume; #643594] * Networking - keep wirelesss networks in predictable order [Giovanni; #646580, #652313] - Show unmanaged devices in the menu [Giovanni; #646946] - Fix overflow when too many VPN connections [Giovanni; #651602] * Bluetooth - Show "hardware disabled" when disabled by rfkill [Giovanni; #648048] - Fix bug updating status of devices [Giovanni; #647565] * LookingGlass console: - Add a "Memory" tab [Colin; #650692] - Make escape work from any page [Dan Winship; #647303] - Provide a way to refer to panel items as, e.g., Main.panel._activities [Dan Winship; #646915] * User menu - Fix problem with suspend menu option locking the screen even when the user disabled that. [Florian; #652327] - Hide "power off..." option if shutdown is disabled via PolicyKit [Florian; #652038] * Track changes to WM_CLASS (fixes problems with LibreOffice tracking) [Colin; #649315] * Remove app tracking workarounds for Firefox and LibreOffice [Colin; #651015] * Use upstream gettext autoconfigury rather than glib version [Javier; #631576] * Show messages in the message tray when an application is fullscreen [Dan Winship; #608667] * Don't autohide the workspace pager if there is more than one workspace [Florian; #652714, #653078, #653142] * Don't always slide out the workspace pager at drag begin [Florian; #652730] * Only offer to remove a favorite app when dragging it's icon [Owen; #642895] * Allow dropping an icon anywhere on a workspace [Adel; #652079] * st-scroll-view: Make the fade effect and offset themable [Jasper; #651813] * Obey the user's preference when running an application in a terminal from the run dialog [Florian; #648422] * Consistently exit overview when launching external applications [Colin; #653095] * Adapt to changes in GJS for how GObject APIs are bound [Alex, Colin, Florian, Jasper, Marc-Antoine; #649981, #652597] * Fix problems with scrolling in overflow for alt-Tab switcher [Dan Winship, Adel; #647807] * Mark relationships between labels and actors for accessibility [Alejandro] * Add org.gnome.shell.enabled-extensions complementing disabled-extensions GSetting [Tassilo; #651088] * Visual tweaks [Jakub, Jasper; #646261, #652715] * Switch to building against clutter-1.7 with independent Cogl [Adel; #653397] * Code cleanups [Colin, Dan Winship, Florian; #633620, #645031, #648755, #648758, #648760, #649203, #649517, #650317, #652730] * Memory leak fixes [Colin, Maxim; #649508, #650934] * Build Fixes [Colin, Dan Winship, Florian, Ionut, Morten, Owen, Sean; #647395, #648006, #650869, #653199, #653275 * Miscellaneous bug fixes [Adam, Adel, Dan Williams, Dan Winship, Florian, Ionut, Jasper, Maxim, Ray; #620105, #639459, #641570, #642793, #643513, #645848, #646919, #647186, #648305, #648410, #648562, #648894, #649001, #645990, #647893, #647907, #651012, #651086, #651606, #651569, #651866, #652388, #653511] Contributors: Ionut Biru, Giovanni Campagna, Guillaume Desmottes, Adam Dingle, Maxim Ermilov, Adel Gadllah, Tassilo Horn, Javier Jardón, Jonny Lamb, Alexander Larsson, Rui Matos, Morten Mjelva, Florian Müllner, Marc-Antoine Perennou, Alejandro Piñeiro, Jasper St. Pierre, Jakub Steiner, Ray Strode, Owen Taylor, Colin Walters, Dan Williams, Sean Wilson, Dan Winship Translations: Daniel Martinez Cucalon [ar], Ihar Hrachyshka [be], Carles Ferrando, Gil Forcada, Sílvia Miranda [ca], Kristjan Schmidt [eo], Jorge González, Daniel Mustieles [es], Seán de Búrca [ga], Fran Diéguez [gl], Yaron Shahrabani [he], Kjartan Maraas [nb], Misha Shnurapet, Yuri Myasoedov [ru], Daniel Nylander [se], Peter Mráz [sk], Matej Urbančič [sl], Krishnababu Krothapalli [te], Daniel Korostil [uk], Aron Xu [zh_CN] 3.0.2 ===== * Network Menu [Dan Williams] - Fix connecting to WPA2 Enterprise access points Fixes https://bugzilla.gnome.org/show_bug.cgi?id=648171 - Show the mobile broadband wizard when selecting 3G network Fixes https://bugzilla.gnome.org/show_bug.cgi?id=649318 - Miscellaneous bug fixes 648648, 650124 * Fix duplicate icons in the application browser [Owen] https://bugzilla.gnome.org/show_bug.cgi?id=648739 * Make clicking anywhere on the volume icon slider work [Giovanni] https://bugzilla.gnome.org/show_bug.cgi?id=646660 * Fix a case where activating and clicking the hot corner at the same time could result in immediately leaving the overview [Rui] https://bugzilla.gnome.org/show_bug.cgi?id=649427 * Fix a case where applications became misordered in Alt-Tab [Jasper] https://bugzilla.gnome.org/show_bug.cgi?id=643302 * Fix a bug where messages you send could show up in notifications as if someone else sent them [Jonny] https://bugzilla.gnome.org/show_bug.cgi?id=650219 * Memory leak fixes [Colin, Maxim] 642652, 649508, 649497 * Miscellaneous minor bug fixes [Adel, Christopher, Jasper] 649596, 648765, 648983, 649632 Contributors: Christopher Aillon, Giovanni Campagna, Maxim Ermilov, Adel Gadllah, Jonny Lamb, Rui Matos, Jasper St. Pierre, Owen Taylor, Colin Walters, Dan Williams Translations: Arash Mousavi [fa], Seán de Búrca [ga], Timo Jyrinki [fi], Sigurd Gartmann [nb], Daniel Nylander [se], Peter Mráz [sl], Abduxukur Abdurixit [ug], Nguyễn Thái Ngọc Duy [vi] 3.0.1 ===== * Network menu - Fix problems updating the menu for mobile broadband devices [Giovanni] https://bugzilla.gnome.org/show_bug.cgi?id=646395 - Fix missing device descriptions with multiple devices of the same type [Giovanni] https://bugzilla.gnome.org/show_bug.cgi?id=646074 - Label ad-hoc networks with an appropriate icon [Dan] https://bugzilla.gnome.org/show_bug.cgi?id=646141 - Fix displaying some devices states as "invalid" [Dan] https://bugzilla.gnome.org/show_bug.cgi?id=646946 - Fix problems with access points that don't report a SSID [Giovanni] https://bugzilla.gnome.org/show_bug.cgi?id=647040 - Miscellaneous minor bug fixes [Dan, Giovanni, Owen] 645981, 646558, 646443, 646708, 646968 * Application menu and icon - Fix bug where application menu icon was missing at GNOME Shell startup. [Florian] https://bugzilla.gnome.org/show_bug.cgi?id=644122 - Fix missing application menu for dialog windows [Colin] https://bugzilla.gnome.org/show_bug.cgi?id=647082 - When launching an application through an alternate launcher (like for a System Settings pane), association the windows with the application, not the launcher. [Colin] https://bugzilla.gnome.org/show_bug.cgi?id=646689 * Activities overview - Load the applications view incrementally to avoid potentially freezing for multiple seconds [Colin] https://bugzilla.gnome.org/show_bug.cgi?id=647778 - Fix bug where package installation while the overview was up could result in a corrupted application display. [Giovanni] https://bugzilla.gnome.org/show_bug.cgi?id=645801 - Fix dragging from the search results to launch apps and docs [Florian] https://bugzilla.gnome.org/show_bug.cgi?id=645990 - Fix flickering of selection when searching in the overview [Florian] https://bugzilla.gnome.org/show_bug.cgi?id=646019 - Fix bug when typing into the search box when text was already selected [Nohemi] https://bugzilla.gnome.org/show_bug.cgi?id=636341 * Fix layout of notifications for right-to-left languages [Florian] https://bugzilla.gnome.org/show_bug.cgi?id=646921 * Remove a confusing special case where Alt-Tab sometimes switched to a different window of the same application rather than to a different application. [Rui] https://bugzilla.gnome.org/show_bug.cgi?id=648132 * Fix a crash that could happen when a window was opened on a workspace that was immediately removed [Dan] https://bugzilla.gnome.org/show_bug.cgi?id=648132 * Fix keyboard navigation in logout/reboot dialogs [Dan] https://bugzilla.gnome.org/show_bug.cgi?id=646740 * Fix missing inspector icon in Looking Glass console [Dan] * Miscellaneous minor bug fixes [Adel, Colin, Dan, Florian, Nohemi] 645648, 646205, 646257, 646855, 647098, 646730 Contributors: Giovanni Campagna, Nohemi Fernandez, Adel Gadllah, Rui Matos, Florian Müllner, Owen Taylor, Colin Walters, Dan Winship Translations: Hendrik Richter [de], Jorge González [es], Arash Mousavi [fa], Fran Diéguez [gl], Jiro Matsuzawa [ja], Piotr Drąg [pl], Daniel Nylander [sv], Sira Nokyoongtong [th], Muhammet Kara [tr], Nguyễn Thái Ngọc Duy [vi], Aron Xu [zh_CN], Chao-Hsiung Liao [zh_HK, zh_TW] 3.0.0.2 ======= * Fix missing import that was preventing extensions from loading. [Maxim Ermilov] https://bugzilla.gnome.org/show_bug.cgi?id=646333 Translations: Timo Jyrinki [fi] 3.0.0.1 ======= * Fix problem with stuck event handling if network menu pops down while user is using the scrollbar. [Owen Taylor] https://bugzilla.gnome.org/show_bug.cgi?id=646825 Contributors to GNOME Shell 3.0 =============================== Code: Josh Adams, Kiyoshi Aman, Nuno Araujo, Emmanuele Bassi, Dirk-Jan C. Binnema, Wouter Bolsterlee, Raphael Bosshard, Milan Bouchet-Valat, Christina Boumpouka, Mathieu Bridon, Alban Browaeys, Phil Bull, Micro Cai, Giovanni Campagna, Cosimo Cecchi, Tor-björn Claesson, Matthias Clasen, Jason D. Clinton, Frederic Crozat, Guillaume Desmottes, Sander Dijkhuis, Neha Doijode, Maxim Ermilov, Diego Escalante Urrelo, Luca Ferretti, Steve Frécinaux, Takao Fujiwara, Adel Gadllah, Vadim Girlin, Nick Glynn, Guido Günther, Leon Handreke, Lex Hider, Richard Hughes, Javier Jardón, Abderrahim Kitouni, Andre Klapper, Alexander Larsson, Nickolas Lloyd, Ryan Lortie, Kjartan Maraas, Koop Mast, Rui Matos, Jonathan Matthew, William Jon McCann, Morten Mjelva, Federico Mena Quintero, Florian Müllner, Jon Nettleton, Hellyna Ng, Discardi Nicola, Carlos Martín Nieto, Bastien Nocera, Bill Nottingham, Matt Novenstern, Marc-Antoine Perennou, Neil Perry, Frédéric Péters, Alejandro Piñeiro, Siegfried-Angel Gevatter Pujals, "res", Neil Roberts, "Sardem FF7", Florian Scandella, Joseph Scheuhammer, Christian Schramm, Gustavo Noronha Silva, Jasper St. Pierre, Eric Springer, Jakub Steiner, Jonathan Strander, Ray Strode, Owen Taylor, Rico Tzschichholz, Sergey V. Udaltsov, Daiki Ueno, Vincent Untz, Marcelo Jorge Vieira, Mads Villadsen, Colin Walters, Dan Winship, William Wolf, Thomas Wood, Pierre Yager, David Zeuthen, Marina Zhurakhinskaya Design: Allan Day, William Jon McCann, Jeremy Perry, Jakub Steiner 2008 Boston GNOME design hackfest participants (especially Neil J. Patel for turning the resulting sketches into our first mockups.) Everybody on irc.gnome.org:#gnome-design Translations: Friedel Wolff (af), Khaled Hosny (ar), Ivaylo Valkov (bg), Jamil Ahmed (bn) Runa Bhattacharjee (bn_IN), Gil Forcada, Siegfried-Angel Gevatter Pujals, Jordi Serratosa (ca), Andre Klapper, Petr Kovar (cs), Kenneth Nielsen, Kris Thomsen (da), Mario Blättermann, Hendrik Brandt, Christian Kirbach, Hendrik Richter, Wolfgang Stöggl (de), Michael Kotsarinis, Kostas Papadimas, Jennie Petoumenou, Sterios Prosiniklis, Fotis Tsamis, Simos Xenitellis (el), Bruce Cowan, Philip Withnall (en_GB), Jorge Gonzalez, Daniel Mustieles (es), Mattias Põldaru, Ivar Smolin (et), Inaki Larranaga Murgoitio (eu), Mahyar Moghimi (fa), Timo Jyrinki (fi), Cyril Arnaud, Bruno Brouard, Pablo Martin-Gomez, Claude Paroz, Frédéric Peters (fr), Seán de Búrca (ga) Francisco Diéguez, Antón Méixome (gl), Sweta Kothari (gu), Liel Fridman, Yaron Shahrabani (he), Rajesh Ranjan (hi), Gabor Kelemen (hu), Milo Casagrande, Luca Ferretti (it), Dirgita, Andika Triwidada (id), Takayuki KUSANO, Takayoshi OKANO, Kiyotaka NISHIBORI, Futoshi NISHIO (ja), Shankar Prasad (kn), Young-Ho Cha, Changwoo Ryu (ko), Žygimantas Beručka, Gintautas Miliauskas (lt), Rudolfs Mazurs (lv), Sandeep Shedmake (mr), Kjartan Maraas (nb), Wouter Bolsterlee, Sander Dijkhuis, Reinout van Schouwen (nl), Torstein Winterseth (nn), A S Alam (pa), Tomasz Dominikowski, Piotr Drąg (pl), Duarte Loreto (pt), Felipe Borges, Rodrigo Padula de Oliveira, Rodrigo L. M. Flores, Amanda Magalhães, Og B. Maciel, Gabriel F. Vilar, Jonh Wendell (pt_BR), Lucian Adrian Grijincu, Daniel Șerbănescu (ro), Sergey V. Kovylov, Andrey Korzinev, Yuri Myasoedov, Marina Zhurakhinskaya (ru), Daniel Nylander (se), Matej Urbančič, Andrej Žnidaršič (sl), Miloš Popović (sr, sr@latin), Miroslav Nikolić (sr), Tirumurti Vasudevan (ta), Sira Nokyoongtong (th), Baris Cicek (tr), Abduxukur Abdurixit, Gheyret T. Kenji (ug), Maxim V. Dziumanenko, Daniel Korostil (uk), Nguyễn Thái Ngọc Duy (vi), Jessica Ban, 'jiero', Wei Li, YunQiang Su, Ray Wang, Aron Xu (zh_CN), Chao-Hsiung Liao (zh_HK, zh_TW) 07070100000016000081A40000000000000000000000016712993F0000147D000000000000000000000000000000000000001B00000000gnome-shell-47.1/README.md# GNOME Shell GNOME Shell provides core user interface functions for the GNOME desktop, like switching to windows and launching applications. GNOME Shell takes advantage of the capabilities of modern graphics hardware and introduces innovative user interface concepts to provide a visually attractive and easy to use experience. All interactions with the project should follow the [Code of Conduct][conduct]. [conduct]: https://conduct.gnome.org/ ## Supported versions Upstream gnome-shell only supports the most recent stable release series, the previous stable release series, and the current development release series. Any older stable release series are no longer supported, although they may still receive backported security updates in long-term support distributions. Such support is up to the distributions, though. Please refer to the [schedule] to see when a new version will be released. [schedule]: https://release.gnome.org/calendar ## Reporting bugs Bugs should be reported to the [issue tracking system][bug-tracker]. The [GNOME handbook][bug-handbook] has useful information for creating effective issue reports. If you are using extensions, please confirm that an issue still happens without extensions. To properly disable extensions you can use the [extensions-app] and then restart your session. Disabling extensions without a restart is not sufficient to rule out extensions as the cause of a bug. If an issue can only be reproduced with a certain extension, please file an issue report against that extension first. Please note that the issue tracker is meant to be used for actionable issues only. For support questions, feedback on changes or general discussions, you can use: - the [#gnome-shell matrix room][matrix-room] - the `Desktop` category or `shell` tag on [GNOME Discourse][discourse] [bug-tracker]: https://gitlab.gnome.org/GNOME/gnome-shell/issues [bug-handbook]: https://handbook.gnome.org/issues/reporting.html [extensions-app]: https://apps.gnome.org/Extensions [matrix-room]: https://matrix.to/#/#gnome-shell:gnome.org [discourse]: https://discourse.gnome.org ## Feature requests gnome-shell is a core compoment of the GNOME desktop experience. As such, any changes in behavior or appearance only happen in accordance with the [GNOME design team][design-team]. For major changes, it is best to start a discussion on [discourse] and reach out on the [#gnome-design matrix room][design-room], and only involve the issue tracker once agreement has been reached. In particular mockups must be approved by the design team to be considered for implementation. For enhancements that are limited in scope and well-defined, it is acceptable to directly open a feature request. When in doubt, it is better to ask before opening an issue. [design-team]: https://gitlab.gnome.org/Teams/Design [discourse]: https://discourse.gnome.org [design-room]: https://matrix.to/#/#gnome-design:gnome.org ## Contributing To contribute, open merge requests at https://gitlab.gnome.org/GNOME/gnome-shell. It can be useful to first look at the [GNOME handbook][mr-handbook]. If a change likely requires discussion beyond code review, it is probably better to open an issue first, or follow the process for [feature requests](#feature-requests). Otherwise, creating a separate issue is not required. The following guidelines will help your change to be successfully merged: * Keep the change as small as possible. If you can split it into multiple merge requests, please do so. * Use multiple commits. This makes it easier to review and helps to diagnose bugs in the future. * Use clear commit messages following the [conventions][commit-messages]. * Pay attention to the CI results. Merge requests cannot be merged until the CI passes. There's also a [small guide for newcomers][newcomers-contribution-guide] with a few more basic tips and tricks. [mr-handbook]: https://handbook.gnome.org/development/change-submission.html [commit-messages]: docs/commit-messages.md [newcomers-contribution-guide]: docs/newcomers-contribution-guide.md ## Documentation * [Coding style and conventions for javascript][js-style] * [Coding style and conventions for C code][c-style] * [The GJS Developer Guide][gjs-guide] * [Building and Running][building] * [Debugging][debugging] [js-style]: docs/js-coding-style.md [c-style]: docs/c-coding-style.md [gjs-guide]: https://gjs.guide [building]: docs/building-and-running.md [debugging]: docs/debugging.md ## API Reference * [Meta][meta-docs]: Display server and window manager * [St][st-docs]: Shell toolkit * [Clutter][clutter-docs]: OpenGL based scene graph * [Shell][shell-docs]: Non-ui shell objects and utilities * See the [mutter page][mutter-docs] for additional documentation [st-docs]: [shell-docs]: [clutter-docs]: [meta-docs]: [mutter-docs]: ## License GNOME Shell is distributed under the terms of the GNU General Public License, version 2 or later. See the [COPYING][license] file for details. [license]: COPYING 07070100000017000081A40000000000000000000000016712993F000004EC000000000000000000000000000000000000002000000000gnome-shell-47.1/config.h.meson/* The prefix for our gettext translation domains. */ #mesondefine GETTEXT_PACKAGE /* Version number of package */ #mesondefine VERSION /* Version number of package */ #mesondefine PACKAGE_VERSION /* Define to 1 if you have the `fdwalk' function. */ #mesondefine HAVE_FDWALK /* Define to 1 if you have the `mallinfo' function. */ #mesondefine HAVE_MALLINFO /* Define to 1 if you have the `mallinfo2' function. */ #mesondefine HAVE_MALLINFO2 /* Define to 1 fi you have the header file. */ #mesondefine HAVE_SYS_RESOURCE_H /* Define if we have NetworkManager */ #mesondefine HAVE_NETWORKMANAGER /* Define if we have Pipewire */ #mesondefine HAVE_PIPEWIRE /* Define if we have systemd */ #mesondefine HAVE_SYSTEMD /* Define if _NL_TIME_FIRST_WEEKDATE is available */ #mesondefine HAVE__NL_TIME_FIRST_WEEKDAY /* Define if fdwalk is available in libc */ #mesondefine HAVE_FDWALK /* Define if polkit defines autocleanup functions */ #mesondefine HAVE_POLKIT_AUTOCLEANUP /* Define to 1 if the and header file exist. */ #mesondefine HAVE_EXE_INTROSPECTION /* Whether GNOME Shell is built with X11 support */ #mesondefine HAVE_X11 /* Whether GNOME Shell is built with X11 clients support */ #mesondefine HAVE_X11_CLIENT 07070100000018000041ED0000000000000000000000026712993F00000000000000000000000000000000000000000000001600000000gnome-shell-47.1/data07070100000019000081A40000000000000000000000016712993F0000009E000000000000000000000000000000000000003A00000000gnome-shell-47.1/data/00_org.gnome.shell.gschema.override[org.gnome.mutter:GNOME] attach-modal-dialogs=true edge-tiling=true dynamic-workspaces=true workspaces-only-on-primary=true focus-change-on-pointer-rest=true 0707010000001A000081A40000000000000000000000016712993F00000B9C000000000000000000000000000000000000003300000000gnome-shell-47.1/data/50-gnome-shell-launchers.xml 0707010000001B000081A40000000000000000000000016712993F000002A9000000000000000000000000000000000000003500000000gnome-shell-47.1/data/50-gnome-shell-screenshots.xml 0707010000001C000081A40000000000000000000000016712993F0000030E000000000000000000000000000000000000003000000000gnome-shell-47.1/data/50-gnome-shell-system.xml 0707010000001D000081A40000000000000000000000016712993F00000B04000000000000000000000000000000000000002900000000gnome-shell-47.1/data/README.osk-layoutsGnome-shell OSK layouts are extracted from CLDR layout definitions: https://www.unicode.org/cldr/charts/latest/keyboards/layouts/index.html To add new layouts from CLDR: 1) Run update-osk-layouts.sh 2) Modify JSON files to add extra keys, tweak appearance... 2) Do git add and git commit JSON file format ================ Each JSON file describes a keymap for a certain language and layout, it has the following structure: - Root (Object) Root object of a layout, has the following properties: - levels (Array of Level): Levels in the keymap - locale (String): Locale name for this keymap - name (String): Human readable name for this keymap - Level (Object) A level defines the keys available on a keyboard level, these are the key panels visible at a time. E.g. to type uppercase levels or symbols. Levels have the following properties: - level (String): Name of the level, common names are "", "shift", "opt" and "opt+shift". - mode (String): Mode for this level, common modes are "default", "latched" and "locked". - rows (Array of Row): Array of rows of keys. - Row (Array) A row is an Array of Key. - Key (Object) A keyboard key. Keys have the following properties: - iconName (String): Icon name to show on the key. Keys with an icon name do not have a label. - label (String): Label to show on the key. - strings (Array of String): Strings to commit. If label property does not exist, the first element will be also the label. Extra elements are shown in the extra keys popover. - keyval (String): Hexadecimal keyval to emit as emulated key presses. Committed strings are preferred. - leftOffset (Double): If set, the left offset of this key, relative to the key immediately to the left, or the start of the row. If not set, the key will be implicitly located at the right of the previous key in the row. Multiples of 0.5 are accepted. - width (Double): Relative width of the key in the row. 1 is for a square key. Multiples of 0.5 are accepted. The implicit default value is 1. - height (Double): Relative height of the key in the grid. The key will overflow downwards. Multiples of 0.5 are accepted. The implicit default value is 1. - level (Integer): Level that the key switches to. See the levelSwitch action. - action (string): Action performed by the key, accepted actions are: - hide: Hides the OSK - languageMenu: Pops up the language selection menu - emoji: Switches to the emoji selection panel - modifier: Handles the keyval as a modifier key. This handles e.g. Ctrl+A as a sequence of Ctrl press, A press, A release, Ctrl release. - delete: Deletes text backwards - levelSwitch: Switches OSK to a different level 0707010000001E000041ED0000000000000000000000026712993F00000000000000000000000000000000000000000000002000000000gnome-shell-47.1/data/cldr2json0707010000001F000081A40000000000000000000000016712993F000004E9000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/cldr2json/README.mdcldr2json ========= This script converts Unicode CLDR android keyboard layouts to JSON usable by GNOME Shell. CLDR keyboard layouts can be found at Usage ===== ./cldr2json example: ./cldr2json cldr/keyboards/android/ json_layouts/ Keyboard layout mapping ======================= Unicode CLDR layout identifiers are language codes, while XKB layout identifiers are... something else. The mapping between the two currently uses heuristic based on the layout descriptions, in this order: - if the CLDR layout description matches an XKB layout description, chose its XKB identifier - if one word of the CLDR layout description matches an XKB layout description, chose its XKB identifier - if the CLDR layout description matches one word of an XKB layout description, chose its XKB identifier That doesn't always work. For instance it fails for "en" language, that should match "us" XKB identifier. For such cases, there is a mapping in LOCALE_TO_XKB_OVERRIDES at the top of the script. If you discover a weird mapping of if you get a "failed to find XKB mapping for " warning then please consider adding an override there. 07070100000020000081ED0000000000000000000000016712993F0000190A000000000000000000000000000000000000002D00000000gnome-shell-47.1/data/cldr2json/cldr2json.py#!/usr/bin/python3 # # Copyright 2015 Daiki Ueno # 2016 Parag Nemade # 2017 Alan # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as # published by the Free Software Foundation; either version 2 of the # License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this program; if not, see # . import glob import json import locale import logging import os import re import sys import xml.etree.ElementTree import gi gi.require_version('GnomeDesktop', '3.0') # NOQA: E402 from gi.repository import GnomeDesktop ESCAPE_PATTERN = re.compile(r'\\u\{([0-9A-Fa-f]+?)\}') ISO_PATTERN = re.compile(r'[A-E]([0-9]+)') LOCALE_TO_XKB_OVERRIDES = { 'af': 'za', 'en': 'us', 'en-GB': 'uk', 'es-US': 'latam', 'fr-CA': 'ca', 'hi': 'in+bolnagri', 'ky': 'kg', 'nl-BE': 'be', 'zu': None } def parse_single_key(value): def unescape(m): return chr(int(m.group(1), 16)) value = ESCAPE_PATTERN.sub(unescape, value) return value def parse_rows(keymap): unsorted_rows = {} for _map in keymap.iter('map'): value = _map.get('to') key = [parse_single_key(value)] iso = _map.get('iso') if not ISO_PATTERN.match(iso): sys.stderr.write('invalid ISO key name: %s\n' % iso) continue if not iso[0] in unsorted_rows: unsorted_rows[iso[0]] = [] unsorted_rows[iso[0]].append((int(iso[1:]), key)) # add subkeys longPress = _map.get('longPress') if longPress: for value in longPress.split(' '): subkey = parse_single_key(value) key.append(subkey) rows = [] for k, v in sorted(list(unsorted_rows.items()), key=lambda x: x[0], reverse=True): row = [] for key in sorted(v, key=lambda x: x): row.append({ 'strings': key[1] }) rows.append(row) return rows def convert_xml(tree): root = {} for xml_keyboard in tree.iter("keyboard"): locale_full = xml_keyboard.get("locale") locale, sep, end = locale_full.partition("-t-") root["locale"] = locale for xml_name in tree.iter("name"): name = xml_name.get("value") root["name"] = name root["levels"] = [] # parse levels for index, keymap in enumerate(tree.iter('keyMap')): # FIXME: heuristics here modifiers = keymap.get('modifiers') if not modifiers: mode = 'default' modifiers = '' elif 'shift' in modifiers.split(' '): mode = 'latched' modifiers = 'shift' else: mode = 'locked' level = {} level["level"] = modifiers level["mode"] = mode level["rows"] = parse_rows(keymap) root["levels"].append(level) return root def locale_to_xkb(locale, name): if locale in sorted(LOCALE_TO_XKB_OVERRIDES.keys()): xkb = LOCALE_TO_XKB_OVERRIDES[locale] logging.debug("override for %s → %s", locale, xkb) if xkb: return xkb else: raise KeyError("layout %s explicitly disabled in overrides" % locale) xkb_names = sorted(name_to_xkb.keys()) if name in xkb_names: return name_to_xkb[name] else: logging.debug("name %s failed" % name) for sub_name in name.split(' '): if sub_name in xkb_names: xkb = name_to_xkb[sub_name] logging.debug("dumb mapping failed but match with locale word: " "%s (%s) → %s (%s)", locale, name, xkb, sub_name) return xkb else: logging.debug("sub_name failed") for xkb_name in xkb_names: for xkb_sub_name in xkb_name.split(' '): if xkb_sub_name.strip('()') == name: xkb = name_to_xkb[xkb_name] logging.debug("dumb mapping failed but match with xkb word: " "%s (%s) → %s (%s)", locale, name, xkb, xkb_name) return xkb raise KeyError("failed to find XKB mapping for %s" % locale) def convert_file(source_file, destination_path): logging.info("Parsing %s", source_file) itree = xml.etree.ElementTree.ElementTree() itree.parse(source_file) root = convert_xml(itree) try: xkb_name = locale_to_xkb(root["locale"], root["name"]) except KeyError as e: logging.warning(e) return False destination_file = os.path.join(destination_path, xkb_name + ".json") try: with open(destination_file, 'x', encoding="utf-8") as dest_fd: json.dump(root, dest_fd, ensure_ascii=False, indent=2, sort_keys=True) except FileExistsError as e: logging.info("File %s exists, not updating", destination_file) return False logging.debug("written %s", destination_file) def load_xkb_mappings(): xkb = GnomeDesktop.XkbInfo() layouts = xkb.get_all_layouts() name_to_xkb = {} for layout in layouts: name = xkb.get_layout_info(layout).display_name name_to_xkb[name] = layout return name_to_xkb locale.setlocale(locale.LC_ALL, "C") name_to_xkb = load_xkb_mappings() if __name__ == "__main__": if "DEBUG" in os.environ: logging.basicConfig(level=logging.DEBUG) if len(sys.argv) < 2: print("supply a CLDR keyboard file") sys.exit(1) if len(sys.argv) < 3: print("supply an output directory") sys.exit(1) source = sys.argv[1] destination = sys.argv[2] if os.path.isfile(source): convert_file(source, destination) elif os.path.isdir(source): for path in glob.glob(source + "/*-t-k0-android.xml"): convert_file(path, destination) 07070100000021000041ED0000000000000000000000026712993F00000000000000000000000000000000000000000000002500000000gnome-shell-47.1/data/cldr2json/test07070100000022000081A40000000000000000000000016712993F00000000000000000000000000000000000000000000003100000000gnome-shell-47.1/data/cldr2json/test/__init__.py07070100000023000041ED0000000000000000000000026712993F00000000000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/cldr2json/test/data07070100000024000081A40000000000000000000000016712993F00001783000000000000000000000000000000000000003E00000000gnome-shell-47.1/data/cldr2json/test/data/fr-t-k0-android.xml 07070100000025000081A40000000000000000000000016712993F0000238E000000000000000000000000000000000000003200000000gnome-shell-47.1/data/cldr2json/test/data/fr.json{ "levels": [ { "level": "", "mode": "default", "rows": [ [ [ "a", "à", "â", "%", "æ", "á", "ä", "ã", "å", "ā", "ª" ], [ "z" ], [ "e", "é", "è", "ê", "ë", "%", "ę", "ė", "ē" ], [ "r" ], [ "t" ], [ "y", "%", "ÿ" ], [ "u", "ù", "û", "%", "ü", "ú", "ū" ], [ "i", "î", "%", "ï", "ì", "í", "į", "ī" ], [ "o", "ô", "œ", "%", "ö", "ò", "ó", "õ", "ø", "ō", "º" ], [ "p" ] ], [ [ "q" ], [ "s" ], [ "d" ], [ "f" ], [ "g" ], [ "h" ], [ "j" ], [ "k" ], [ "l" ], [ "m" ] ], [ [ "w" ], [ "x" ], [ "c", "ç", "ć", "č" ], [ "v" ], [ "b" ], [ "n" ], [ "'", "‘", "’", "‹", "›" ] ], [ [ "," ], [ " " ], [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ [ "A", "À", "Â", "%", "Æ", "Á", "Ä", "Ã", "Å", "Ā", "ª" ], [ "Z" ], [ "E", "É", "È", "Ê", "Ë", "%", "Ę", "Ė", "Ē" ], [ "R" ], [ "T" ], [ "Y", "%", "Ÿ" ], [ "U", "Ù", "Û", "%", "Ü", "Ú", "Ū" ], [ "I", "Î", "%", "Ï", "Ì", "Í", "Į", "Ī" ], [ "O", "Ô", "Œ", "%", "Ö", "Ò", "Ó", "Õ", "Ø", "Ō", "º" ], [ "P" ] ], [ [ "Q" ], [ "S" ], [ "D" ], [ "F" ], [ "G" ], [ "H" ], [ "J" ], [ "K" ], [ "L" ], [ "M" ] ], [ [ "W" ], [ "X" ], [ "C", "Ç", "Ć", "Č" ], [ "V" ], [ "B" ], [ "N" ], [ "'", "‘", "’", "‹", "›" ] ], [ [ "," ], [ " " ], [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ [ "1", "¹", "½", "⅓", "¼", "⅛" ], [ "2", "²", "⅔" ], [ "3", "³", "¾", "⅜" ], [ "4", "⁴" ], [ "5", "⅝" ], [ "6" ], [ "7", "⅞" ], [ "8" ], [ "9" ], [ "0", "ⁿ", "∅" ] ], [ [ "@" ], [ "#" ], [ "€", "¢", "£", "$", "¥", "₱" ], [ "%", "‰" ], [ "&" ], [ "-", "_", "–", "—", "·" ], [ "+", "±" ], [ "(", "<", "{", "[" ], [ ")", ">", "}", "]" ] ], [ [ "*", "†", "‡", "★" ], [ "\"", "“", "”", "«", "»" ], [ "'", "‘", "’", "‹", "›" ], [ ":" ], [ ";" ], [ "!", "¡" ], [ "?", "¿" ] ], [ [ "_" ], [ "/" ], [ " " ], [ "," ], [ ".", "…" ] ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ [ "~" ], [ "`" ], [ "|" ], [ "•", "♪", "♥", "♠", "♦", "♣" ], [ "√" ], [ "Π", "π" ], [ "÷" ], [ "×" ], [ "¶", "§" ], [ "∆" ] ], [ [ "£" ], [ "¥" ], [ "$", "¢" ], [ "¢" ], [ "^", "↑", "↓", "←", "→" ], [ "°", "′", "″" ], [ "=", "≠", "≈", "∞" ], [ "{" ], [ "}" ] ], [ [ "\\" ], [ "©" ], [ "®" ], [ "™" ], [ "℅" ], [ "[" ], [ "]" ] ], [ [ "<", "‹", "≤", "«" ], [ ">", "›", "≥", "»" ], [ " " ], [ "," ], [ ".", "…" ] ] ] } ], "locale": "fr", "name": "French" } 07070100000026000081ED0000000000000000000000016712993F00001C06000000000000000000000000000000000000003700000000gnome-shell-47.1/data/cldr2json/test/test_cldr2json.py#!/usr/bin/python3 import json import tempfile import unittest import xml.etree.ElementTree import cldr2json class TestParseSingleKey(unittest.TestCase): def test_ascii(self): self.assertEqual(cldr2json.parse_single_key("a"), "a") def test_nonascii(self): self.assertEqual(cldr2json.parse_single_key("Æ"), "Æ") def test_twochars(self): self.assertEqual(cldr2json.parse_single_key("ԵՒ"), "ԵՒ") def test_decode(self): self.assertEqual(cldr2json.parse_single_key("\\u{200D}"), "\u200d") def test_decode_threechars(self): self.assertEqual(cldr2json.parse_single_key("ज\\u{94D}ञ"), "ज\u094Dञ") class TestParseRow(unittest.TestCase): def test_parse_row(self): xml_string = """ """ xml_tree = xml.etree.ElementTree.XML(xml_string) json = [[ ['a', 'à', 'â', '%', 'æ', 'á', 'ä', 'ã', 'å', 'ā', 'ª'], ['z'], ['e', 'é', 'è', 'ê', 'ë', '%', 'ę', 'ė', 'ē'], ['r'], ['t'], ['y', '%', 'ÿ'], ['u', 'ù', 'û', '%', 'ü', 'ú', 'ū'], ['i', 'î', '%', 'ï', 'ì', 'í', 'į', 'ī'], ['o', 'ô', 'œ', '%', 'ö', 'ò', 'ó', 'õ', 'ø', 'ō', 'º'], ['p'] ], [ ['q'], ['s'], ['d'], ['f'], ['g'], ['h'], ['j'], ['k'], ['l'], ['m'] ], [ ['w'], ['x'], ['c', 'ç', 'ć', 'č'], ['v'], ['b'], ['n'], ["'", '‘', '’', '‹', '›'] ], [ [','], [' '], ['.', '#', '!', ',', '?', '-', ':', "'", '@'] ]] self.assertEqual(cldr2json.parse_rows(xml_tree), json) class TestConvertXml(unittest.TestCase): def test_convert_xml(self): xml_string = """ """ xml_tree = xml.etree.ElementTree.XML(xml_string) json = { "locale": "fr", "name": "French", "levels": [ { "level": "", "mode": "default", "rows": [ [ ['a', 'à', 'â', '%', 'æ', 'á', 'ä', 'ã', 'å', 'ā', 'ª'], ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ ['A', 'À', 'Â', '%', 'Æ', 'Á', 'Ä', 'Ã', 'Å', 'Ā', 'ª'], ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ ["1", "¹", "½", "⅓", "¼", "⅛"], ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ ["~"], ] ] } ] } self.assertEqual(cldr2json.convert_xml(xml_tree), json) class TestConvertFile(unittest.TestCase): def test_fr(self): outdir = tempfile.mkdtemp() cldr2json.convert_file("test/data/fr-t-k0-android.xml", outdir) with open("test/data/fr.json", encoding="utf-8") as expected_json_fd: expected_json = json.load(expected_json_fd) with open(outdir + "/fr.json", encoding="utf-8") as actual_json_fd: actual_json = json.load(actual_json_fd) self.assertEqual(expected_json, actual_json) class TestLocaleToXKB(unittest.TestCase): def test_simple(self): self.assertEqual(cldr2json.locale_to_xkb("fr", "French"), "fr") def test_fallback(self): self.assertEqual(cldr2json.locale_to_xkb("nb", "Norwegian Bokmål"), "no") def test_fallback2(self): self.assertEqual(cldr2json.locale_to_xkb("km", "Khmer"), "kh") def test_override(self): self.assertEqual(cldr2json.locale_to_xkb("en-GB", "English Great Britain"), "uk") class LoadXKBMapplings(unittest.TestCase): def test_dictionnary(self): self.assertIsInstance(cldr2json.load_xkb_mappings(), dict) def test_mapping(self): mapping = cldr2json.load_xkb_mappings() self.assertEqual(mapping["French"], "fr") if __name__ == '__main__': unittest.main() 07070100000027000041ED0000000000000000000000026712993F00000000000000000000000000000000000000000000002600000000gnome-shell-47.1/data/dbus-interfaces07070100000028000081A40000000000000000000000016712993F00000149000000000000000000000000000000000000003200000000gnome-shell-47.1/data/dbus-interfaces/meson.builddbus_interfaces = [ 'org.gnome.Shell.Extensions.xml', 'org.gnome.Shell.Introspect.xml', 'org.gnome.Shell.PadOsd.xml', 'org.gnome.Shell.Screencast.xml', 'org.gnome.Shell.Screenshot.xml', 'org.gnome.ShellSearchProvider.xml', 'org.gnome.ShellSearchProvider2.xml' ] install_data(dbus_interfaces, install_dir: ifacedir) 07070100000029000081A40000000000000000000000016712993F00000C0E000000000000000000000000000000000000004300000000gnome-shell-47.1/data/dbus-interfaces/net.hadess.PowerProfiles.xml 0707010000002A000081A40000000000000000000000016712993F00000089000000000000000000000000000000000000004100000000gnome-shell-47.1/data/dbus-interfaces/net.hadess.SensorProxy.xml 0707010000002B000081A40000000000000000000000016712993F00000651000000000000000000000000000000000000004700000000gnome-shell-47.1/data/dbus-interfaces/net.hadess.SwitcherooControl.xml 0707010000002C000081A40000000000000000000000016712993F00000616000000000000000000000000000000000000004800000000gnome-shell-47.1/data/dbus-interfaces/net.reactivated.Fprint.Device.xml 0707010000002D000081A40000000000000000000000016712993F000001B0000000000000000000000000000000000000004900000000gnome-shell-47.1/data/dbus-interfaces/net.reactivated.Fprint.Manager.xml 0707010000002E000081A40000000000000000000000016712993F0000058E000000000000000000000000000000000000004800000000gnome-shell-47.1/data/dbus-interfaces/org.Gtk.MountOperationHandler.xml 0707010000002F000081A40000000000000000000000016712993F00000148000000000000000000000000000000000000004600000000gnome-shell-47.1/data/dbus-interfaces/org.freedesktop.Application.xml 07070100000030000081A40000000000000000000000016712993F00000201000000000000000000000000000000000000003F00000000gnome-shell-47.1/data/dbus-interfaces/org.freedesktop.DBus.xml 07070100000031000081A40000000000000000000000016712993F000001B2000000000000000000000000000000000000004900000000gnome-shell-47.1/data/dbus-interfaces/org.freedesktop.GeoClue2.Agent.xml 07070100000032000081A40000000000000000000000016712993F00000127000000000000000000000000000000000000004B00000000gnome-shell-47.1/data/dbus-interfaces/org.freedesktop.GeoClue2.Manager.xml 07070100000033000081A40000000000000000000000016712993F00000167000000000000000000000000000000000000005200000000gnome-shell-47.1/data/dbus-interfaces/org.freedesktop.ModemManager.Modem.Cdma.xml 07070100000034000081A40000000000000000000000016712993F00000255000000000000000000000000000000000000005900000000gnome-shell-47.1/data/dbus-interfaces/org.freedesktop.ModemManager.Modem.Gsm.Network.xml 07070100000035000081A40000000000000000000000016712993F000000D7000000000000000000000000000000000000005800000000gnome-shell-47.1/data/dbus-interfaces/org.freedesktop.ModemManager1.Modem.Modem3gpp.xml 07070100000036000081A40000000000000000000000016712993F00000093000000000000000000000000000000000000005800000000gnome-shell-47.1/data/dbus-interfaces/org.freedesktop.ModemManager1.Modem.ModemCdma.xml 07070100000037000081A40000000000000000000000016712993F00000096000000000000000000000000000000000000004E00000000gnome-shell-47.1/data/dbus-interfaces/org.freedesktop.ModemManager1.Modem.xml 07070100000038000081A40000000000000000000000016712993F00000469000000000000000000000000000000000000004800000000gnome-shell-47.1/data/dbus-interfaces/org.freedesktop.Notifications.xml 07070100000039000081A40000000000000000000000016712993F00000209000000000000000000000000000000000000004D00000000gnome-shell-47.1/data/dbus-interfaces/org.freedesktop.PackageKit.Offline.xml 0707010000003A000081A40000000000000000000000016712993F000001D3000000000000000000000000000000000000004800000000gnome-shell-47.1/data/dbus-interfaces/org.freedesktop.UPower.Device.xml 0707010000003B000081A40000000000000000000000016712993F00000082000000000000000000000000000000000000004100000000gnome-shell-47.1/data/dbus-interfaces/org.freedesktop.UPower.xml 0707010000003C000081A40000000000000000000000016712993F00000833000000000000000000000000000000000000004D00000000gnome-shell-47.1/data/dbus-interfaces/org.freedesktop.background.Monitor.xml 0707010000003D000081A40000000000000000000000016712993F000003C9000000000000000000000000000000000000004700000000gnome-shell-47.1/data/dbus-interfaces/org.freedesktop.bolt1.Device.xml 0707010000003E000081A40000000000000000000000016712993F00000221000000000000000000000000000000000000004800000000gnome-shell-47.1/data/dbus-interfaces/org.freedesktop.bolt1.Manager.xml 0707010000003F000081A40000000000000000000000016712993F00000264000000000000000000000000000000000000004D00000000gnome-shell-47.1/data/dbus-interfaces/org.freedesktop.impl.portal.Access.xml 07070100000040000081A40000000000000000000000016712993F000004E4000000000000000000000000000000000000005600000000gnome-shell-47.1/data/dbus-interfaces/org.freedesktop.impl.portal.PermissionStore.xml 07070100000041000081A40000000000000000000000016712993F00000072000000000000000000000000000000000000004E00000000gnome-shell-47.1/data/dbus-interfaces/org.freedesktop.impl.portal.Request.xml 07070100000042000081A40000000000000000000000016712993F000003D7000000000000000000000000000000000000004900000000gnome-shell-47.1/data/dbus-interfaces/org.freedesktop.login1.Manager.xml 07070100000043000081A40000000000000000000000016712993F00000246000000000000000000000000000000000000004900000000gnome-shell-47.1/data/dbus-interfaces/org.freedesktop.login1.Session.xml 07070100000044000081A40000000000000000000000016712993F000000C3000000000000000000000000000000000000004600000000gnome-shell-47.1/data/dbus-interfaces/org.freedesktop.login1.User.xml 07070100000045000081A40000000000000000000000016712993F000001F3000000000000000000000000000000000000004A00000000gnome-shell-47.1/data/dbus-interfaces/org.freedesktop.realmd.Provider.xml 07070100000046000081A40000000000000000000000016712993F00000372000000000000000000000000000000000000004700000000gnome-shell-47.1/data/dbus-interfaces/org.freedesktop.realmd.Realm.xml 07070100000047000081A40000000000000000000000016712993F000001A4000000000000000000000000000000000000004900000000gnome-shell-47.1/data/dbus-interfaces/org.freedesktop.realmd.Service.xml 07070100000048000081A40000000000000000000000016712993F0000162F000000000000000000000000000000000000004600000000gnome-shell-47.1/data/dbus-interfaces/org.gnome.Mutter.ScreenCast.xml 07070100000049000081A40000000000000000000000016712993F000001FD000000000000000000000000000000000000004000000000gnome-shell-47.1/data/dbus-interfaces/org.gnome.ScreenSaver.xml 0707010000004A000081A40000000000000000000000016712993F000001DF000000000000000000000000000000000000005400000000gnome-shell-47.1/data/dbus-interfaces/org.gnome.SessionManager.EndSessionDialog.xml 0707010000004B000081A40000000000000000000000016712993F0000014A000000000000000000000000000000000000004D00000000gnome-shell-47.1/data/dbus-interfaces/org.gnome.SessionManager.Inhibitor.xml 0707010000004C000081A40000000000000000000000016712993F00000136000000000000000000000000000000000000004C00000000gnome-shell-47.1/data/dbus-interfaces/org.gnome.SessionManager.Presence.xml 0707010000004D000081A40000000000000000000000016712993F0000028F000000000000000000000000000000000000004300000000gnome-shell-47.1/data/dbus-interfaces/org.gnome.SessionManager.xml 0707010000004E000081A40000000000000000000000016712993F000000DA000000000000000000000000000000000000004900000000gnome-shell-47.1/data/dbus-interfaces/org.gnome.SettingsDaemon.Color.xml 0707010000004F000081A40000000000000000000000016712993F000000CE000000000000000000000000000000000000005200000000gnome-shell-47.1/data/dbus-interfaces/org.gnome.SettingsDaemon.Power.Keyboard.xml 07070100000050000081A40000000000000000000000016712993F00000097000000000000000000000000000000000000005000000000gnome-shell-47.1/data/dbus-interfaces/org.gnome.SettingsDaemon.Power.Screen.xml 07070100000051000081A40000000000000000000000016712993F0000023A000000000000000000000000000000000000004A00000000gnome-shell-47.1/data/dbus-interfaces/org.gnome.SettingsDaemon.Rfkill.xml 07070100000052000081A40000000000000000000000016712993F000001A7000000000000000000000000000000000000004900000000gnome-shell-47.1/data/dbus-interfaces/org.gnome.SettingsDaemon.Wacom.xml 07070100000053000081A40000000000000000000000016712993F00000131000000000000000000000000000000000000004F00000000gnome-shell-47.1/data/dbus-interfaces/org.gnome.Shell.AudioDeviceSelection.xml 07070100000054000081A40000000000000000000000016712993F0000029E000000000000000000000000000000000000004900000000gnome-shell-47.1/data/dbus-interfaces/org.gnome.Shell.CalendarServer.xml 07070100000055000081A40000000000000000000000016712993F00000167000000000000000000000000000000000000004C00000000gnome-shell-47.1/data/dbus-interfaces/org.gnome.Shell.ClocksIntegration.xml 07070100000056000081A40000000000000000000000016712993F00001FE2000000000000000000000000000000000000004500000000gnome-shell-47.1/data/dbus-interfaces/org.gnome.Shell.Extensions.xml 07070100000057000081A40000000000000000000000016712993F000000C9000000000000000000000000000000000000004900000000gnome-shell-47.1/data/dbus-interfaces/org.gnome.Shell.HotplugSniffer.xml 07070100000058000081A40000000000000000000000016712993F00000BD8000000000000000000000000000000000000004500000000gnome-shell-47.1/data/dbus-interfaces/org.gnome.Shell.Introspect.xml 07070100000059000081A40000000000000000000000016712993F0000035D000000000000000000000000000000000000004100000000gnome-shell-47.1/data/dbus-interfaces/org.gnome.Shell.PadOsd.xml 0707010000005A000081A40000000000000000000000016712993F000001BA000000000000000000000000000000000000004500000000gnome-shell-47.1/data/dbus-interfaces/org.gnome.Shell.PerfHelper.xml 0707010000005B000081A40000000000000000000000016712993F0000024F000000000000000000000000000000000000004700000000gnome-shell-47.1/data/dbus-interfaces/org.gnome.Shell.PortalHelper.xml 0707010000005C000081A40000000000000000000000016712993F000011D5000000000000000000000000000000000000004500000000gnome-shell-47.1/data/dbus-interfaces/org.gnome.Shell.Screencast.xml 0707010000005D000081A40000000000000000000000016712993F000018D9000000000000000000000000000000000000004500000000gnome-shell-47.1/data/dbus-interfaces/org.gnome.Shell.Screenshot.xml 0707010000005E000081A40000000000000000000000016712993F000000E8000000000000000000000000000000000000004700000000gnome-shell-47.1/data/dbus-interfaces/org.gnome.Shell.Wacom.PadOsd.xml 0707010000005F000081A40000000000000000000000016712993F000001A3000000000000000000000000000000000000004D00000000gnome-shell-47.1/data/dbus-interfaces/org.gnome.Shell.WeatherIntegration.xml 07070100000060000081A40000000000000000000000016712993F000006E2000000000000000000000000000000000000003A00000000gnome-shell-47.1/data/dbus-interfaces/org.gnome.Shell.xml 07070100000061000081A40000000000000000000000016712993F00000DED000000000000000000000000000000000000004800000000gnome-shell-47.1/data/dbus-interfaces/org.gnome.ShellSearchProvider.xml 07070100000062000081A40000000000000000000000016712993F00001113000000000000000000000000000000000000004900000000gnome-shell-47.1/data/dbus-interfaces/org.gnome.ShellSearchProvider2.xml 07070100000063000081A40000000000000000000000016712993F000002A0000000000000000000000000000000000000004000000000gnome-shell-47.1/data/dbus-interfaces/org.gtk.Notifications.xml 07070100000064000081A40000000000000000000000016712993F000001CA000000000000000000000000000000000000004800000000gnome-shell-47.1/data/dbus-interfaces/org.mpris.MediaPlayer2.Player.xml 07070100000065000081A40000000000000000000000016712993F0000010E000000000000000000000000000000000000004100000000gnome-shell-47.1/data/dbus-interfaces/org.mpris.MediaPlayer2.xml 07070100000066000081A40000000000000000000000016712993F000489AF000000000000000000000000000000000000002100000000gnome-shell-47.1/data/emoji.json[ { "no": 1, "code": "1F600", "char": "😀", "name": "grinning face" }, { "no": 2, "code": "1F601", "char": "😁", "name": "beaming face with smiling eyes" }, { "no": 3, "code": "1F602", "char": "😂", "name": "face with tears of joy" }, { "no": 4, "code": "1F923", "char": "🤣", "name": "rolling on the floor laughing" }, { "no": 5, "code": "1F603", "char": "😃", "name": "grinning face with big eyes" }, { "no": 6, "code": "1F604", "char": "😄", "name": "grinning face with smiling eyes" }, { "no": 7, "code": "1F605", "char": "😅", "name": "grinning face with sweat" }, { "no": 8, "code": "1F606", "char": "😆", "name": "grinning squinting face" }, { "no": 9, "code": "1F609", "char": "😉", "name": "winking face" }, { "no": 10, "code": "1F60A", "char": "😊", "name": "smiling face with smiling eyes" }, { "no": 11, "code": "1F60B", "char": "😋", "name": "face savoring food" }, { "no": 12, "code": "1F60E", "char": "😎", "name": "smiling face with sunglasses" }, { "no": 13, "code": "1F60D", "char": "😍", "name": "smiling face with heart-eyes" }, { "no": 14, "code": "1F618", "char": "😘", "name": "face blowing a kiss" }, { "no": 15, "code": "1F617", "char": "😗", "name": "kissing face" }, { "no": 16, "code": "1F619", "char": "😙", "name": "kissing face with smiling eyes" }, { "no": 17, "code": "1F61A", "char": "😚", "name": "kissing face with closed eyes" }, { "no": 18, "code": "263A", "char": "☺", "name": "smiling face" }, { "no": 19, "code": "1F642", "char": "🙂", "name": "slightly smiling face" }, { "no": 20, "code": "1F917", "char": "🤗", "name": "hugging face" }, { "no": 21, "code": "1F929", "char": "🤩", "name": "⊛ star-struck" }, { "no": 22, "code": "1F914", "char": "🤔", "name": "thinking face" }, { "no": 23, "code": "1F928", "char": "🤨", "name": "⊛ face with raised eyebrow" }, { "no": 24, "code": "1F610", "char": "😐", "name": "neutral face" }, { "no": 25, "code": "1F611", "char": "😑", "name": "expressionless face" }, { "no": 26, "code": "1F636", "char": "😶", "name": "face without mouth" }, { "no": 27, "code": "1F644", "char": "🙄", "name": "face with rolling eyes" }, { "no": 28, "code": "1F60F", "char": "😏", "name": "smirking face" }, { "no": 29, "code": "1F623", "char": "😣", "name": "persevering face" }, { "no": 30, "code": "1F625", "char": "😥", "name": "sad but relieved face" }, { "no": 31, "code": "1F62E", "char": "😮", "name": "face with open mouth" }, { "no": 32, "code": "1F910", "char": "🤐", "name": "zipper-mouth face" }, { "no": 33, "code": "1F62F", "char": "😯", "name": "hushed face" }, { "no": 34, "code": "1F62A", "char": "😪", "name": "sleepy face" }, { "no": 35, "code": "1F62B", "char": "😫", "name": "tired face" }, { "no": 36, "code": "1F634", "char": "😴", "name": "sleeping face" }, { "no": 37, "code": "1F60C", "char": "😌", "name": "relieved face" }, { "no": 38, "code": "1F61B", "char": "😛", "name": "face with tongue" }, { "no": 39, "code": "1F61C", "char": "😜", "name": "winking face with tongue" }, { "no": 40, "code": "1F61D", "char": "😝", "name": "squinting face with tongue" }, { "no": 41, "code": "1F924", "char": "🤤", "name": "drooling face" }, { "no": 42, "code": "1F612", "char": "😒", "name": "unamused face" }, { "no": 43, "code": "1F613", "char": "😓", "name": "downcast face with sweat" }, { "no": 44, "code": "1F614", "char": "😔", "name": "pensive face" }, { "no": 45, "code": "1F615", "char": "😕", "name": "confused face" }, { "no": 46, "code": "1F643", "char": "🙃", "name": "upside-down face" }, { "no": 47, "code": "1F911", "char": "🤑", "name": "money-mouth face" }, { "no": 48, "code": "1F632", "char": "😲", "name": "astonished face" }, { "no": 49, "code": "2639", "char": "☹", "name": "frowning face" }, { "no": 50, "code": "1F641", "char": "🙁", "name": "slightly frowning face" }, { "no": 51, "code": "1F616", "char": "😖", "name": "confounded face" }, { "no": 52, "code": "1F61E", "char": "😞", "name": "disappointed face" }, { "no": 53, "code": "1F61F", "char": "😟", "name": "worried face" }, { "no": 54, "code": "1F624", "char": "😤", "name": "face with steam from nose" }, { "no": 55, "code": "1F622", "char": "😢", "name": "crying face" }, { "no": 56, "code": "1F62D", "char": "😭", "name": "loudly crying face" }, { "no": 57, "code": "1F626", "char": "😦", "name": "frowning face with open mouth" }, { "no": 58, "code": "1F627", "char": "😧", "name": "anguished face" }, { "no": 59, "code": "1F628", "char": "😨", "name": "fearful face" }, { "no": 60, "code": "1F629", "char": "😩", "name": "weary face" }, { "no": 61, "code": "1F92F", "char": "🤯", "name": "⊛ exploding head" }, { "no": 62, "code": "1F62C", "char": "😬", "name": "grimacing face" }, { "no": 63, "code": "1F630", "char": "😰", "name": "anxious face with sweat" }, { "no": 64, "code": "1F631", "char": "😱", "name": "face screaming in fear" }, { "no": 65, "code": "1F633", "char": "😳", "name": "flushed face" }, { "no": 66, "code": "1F92A", "char": "🤪", "name": "⊛ crazy face" }, { "no": 67, "code": "1F635", "char": "😵", "name": "dizzy face" }, { "no": 68, "code": "1F621", "char": "😡", "name": "pouting face" }, { "no": 69, "code": "1F620", "char": "😠", "name": "angry face" }, { "no": 70, "code": "1F92C", "char": "🤬", "name": "⊛ face with symbols on mouth" }, { "no": 71, "code": "1F637", "char": "😷", "name": "face with medical mask" }, { "no": 72, "code": "1F912", "char": "🤒", "name": "face with thermometer" }, { "no": 73, "code": "1F915", "char": "🤕", "name": "face with head-bandage" }, { "no": 74, "code": "1F922", "char": "🤢", "name": "nauseated face" }, { "no": 75, "code": "1F92E", "char": "🤮", "name": "⊛ face vomiting" }, { "no": 76, "code": "1F927", "char": "🤧", "name": "sneezing face" }, { "no": 77, "code": "1F607", "char": "😇", "name": "smiling face with halo" }, { "no": 78, "code": "1F920", "char": "🤠", "name": "cowboy hat face" }, { "no": 79, "code": "1F921", "char": "🤡", "name": "clown face" }, { "no": 80, "code": "1F925", "char": "🤥", "name": "lying face" }, { "no": 81, "code": "1F92B", "char": "🤫", "name": "⊛ shushing face" }, { "no": 82, "code": "1F92D", "char": "🤭", "name": "⊛ face with hand over mouth" }, { "no": 83, "code": "1F9D0", "char": "🧐", "name": "⊛ face with monocle" }, { "no": 84, "code": "1F913", "char": "🤓", "name": "nerd face" }, { "no": 85, "code": "1F608", "char": "😈", "name": "smiling face with horns" }, { "no": 86, "code": "1F47F", "char": "👿", "name": "angry face with horns" }, { "no": 87, "code": "1F479", "char": "👹", "name": "ogre" }, { "no": 88, "code": "1F47A", "char": "👺", "name": "goblin" }, { "no": 89, "code": "1F480", "char": "💀", "name": "skull" }, { "no": 90, "code": "2620", "char": "☠", "name": "skull and crossbones" }, { "no": 91, "code": "1F47B", "char": "👻", "name": "ghost" }, { "no": 92, "code": "1F47D", "char": "👽", "name": "alien" }, { "no": 93, "code": "1F47E", "char": "👾", "name": "alien monster" }, { "no": 94, "code": "1F916", "char": "🤖", "name": "robot face" }, { "no": 95, "code": "1F4A9", "char": "💩", "name": "pile of poo" }, { "no": 96, "code": "1F63A", "char": "😺", "name": "grinning cat face" }, { "no": 97, "code": "1F638", "char": "😸", "name": "grinning cat face with smiling eyes" }, { "no": 98, "code": "1F639", "char": "😹", "name": "cat face with tears of joy" }, { "no": 99, "code": "1F63B", "char": "😻", "name": "smiling cat face with heart-eyes" }, { "no": 100, "code": "1F63C", "char": "😼", "name": "cat face with wry smile" }, { "no": 101, "code": "1F63D", "char": "😽", "name": "kissing cat face" }, { "no": 102, "code": "1F640", "char": "🙀", "name": "weary cat face" }, { "no": 103, "code": "1F63F", "char": "😿", "name": "crying cat face" }, { "no": 104, "code": "1F63E", "char": "😾", "name": "pouting cat face" }, { "no": 105, "code": "1F648", "char": "🙈", "name": "see-no-evil monkey" }, { "no": 106, "code": "1F649", "char": "🙉", "name": "hear-no-evil monkey" }, { "no": 107, "code": "1F64A", "char": "🙊", "name": "speak-no-evil monkey" }, { "no": 108, "code": "1F476", "char": "👶", "name": "baby" }, { "no": 109, "code": "1F476 1F3FB", "char": "👶🏻", "name": "baby: light skin tone" }, { "no": 110, "code": "1F476 1F3FC", "char": "👶🏼", "name": "baby: medium-light skin tone" }, { "no": 111, "code": "1F476 1F3FD", "char": "👶🏽", "name": "baby: medium skin tone" }, { "no": 112, "code": "1F476 1F3FE", "char": "👶🏾", "name": "baby: medium-dark skin tone" }, { "no": 113, "code": "1F476 1F3FF", "char": "👶🏿", "name": "baby: dark skin tone" }, { "no": 114, "code": "1F9D2", "char": "🧒", "name": "⊛ child" }, { "no": 115, "code": "1F9D2 1F3FB", "char": "🧒🏻", "name": "⊛ child: light skin tone" }, { "no": 116, "code": "1F9D2 1F3FC", "char": "🧒🏼", "name": "⊛ child: medium-light skin tone" }, { "no": 117, "code": "1F9D2 1F3FD", "char": "🧒🏽", "name": "⊛ child: medium skin tone" }, { "no": 118, "code": "1F9D2 1F3FE", "char": "🧒🏾", "name": "⊛ child: medium-dark skin tone" }, { "no": 119, "code": "1F9D2 1F3FF", "char": "🧒🏿", "name": "⊛ child: dark skin tone" }, { "no": 120, "code": "1F466", "char": "👦", "name": "boy" }, { "no": 121, "code": "1F466 1F3FB", "char": "👦🏻", "name": "boy: light skin tone" }, { "no": 122, "code": "1F466 1F3FC", "char": "👦🏼", "name": "boy: medium-light skin tone" }, { "no": 123, "code": "1F466 1F3FD", "char": "👦🏽", "name": "boy: medium skin tone" }, { "no": 124, "code": "1F466 1F3FE", "char": "👦🏾", "name": "boy: medium-dark skin tone" }, { "no": 125, "code": "1F466 1F3FF", "char": "👦🏿", "name": "boy: dark skin tone" }, { "no": 126, "code": "1F467", "char": "👧", "name": "girl" }, { "no": 127, "code": "1F467 1F3FB", "char": "👧🏻", "name": "girl: light skin tone" }, { "no": 128, "code": "1F467 1F3FC", "char": "👧🏼", "name": "girl: medium-light skin tone" }, { "no": 129, "code": "1F467 1F3FD", "char": "👧🏽", "name": "girl: medium skin tone" }, { "no": 130, "code": "1F467 1F3FE", "char": "👧🏾", "name": "girl: medium-dark skin tone" }, { "no": 131, "code": "1F467 1F3FF", "char": "👧🏿", "name": "girl: dark skin tone" }, { "no": 132, "code": "1F9D1", "char": "🧑", "name": "⊛ adult" }, { "no": 133, "code": "1F9D1 1F3FB", "char": "🧑🏻", "name": "⊛ adult: light skin tone" }, { "no": 134, "code": "1F9D1 1F3FC", "char": "🧑🏼", "name": "⊛ adult: medium-light skin tone" }, { "no": 135, "code": "1F9D1 1F3FD", "char": "🧑🏽", "name": "⊛ adult: medium skin tone" }, { "no": 136, "code": "1F9D1 1F3FE", "char": "🧑🏾", "name": "⊛ adult: medium-dark skin tone" }, { "no": 137, "code": "1F9D1 1F3FF", "char": "🧑🏿", "name": "⊛ adult: dark skin tone" }, { "no": 138, "code": "1F468", "char": "👨", "name": "man" }, { "no": 139, "code": "1F468 1F3FB", "char": "👨🏻", "name": "man: light skin tone" }, { "no": 140, "code": "1F468 1F3FC", "char": "👨🏼", "name": "man: medium-light skin tone" }, { "no": 141, "code": "1F468 1F3FD", "char": "👨🏽", "name": "man: medium skin tone" }, { "no": 142, "code": "1F468 1F3FE", "char": "👨🏾", "name": "man: medium-dark skin tone" }, { "no": 143, "code": "1F468 1F3FF", "char": "👨🏿", "name": "man: dark skin tone" }, { "no": 144, "code": "1F469", "char": "👩", "name": "woman" }, { "no": 145, "code": "1F469 1F3FB", "char": "👩🏻", "name": "woman: light skin tone" }, { "no": 146, "code": "1F469 1F3FC", "char": "👩🏼", "name": "woman: medium-light skin tone" }, { "no": 147, "code": "1F469 1F3FD", "char": "👩🏽", "name": "woman: medium skin tone" }, { "no": 148, "code": "1F469 1F3FE", "char": "👩🏾", "name": "woman: medium-dark skin tone" }, { "no": 149, "code": "1F469 1F3FF", "char": "👩🏿", "name": "woman: dark skin tone" }, { "no": 150, "code": "1F9D3", "char": "🧓", "name": "⊛ older adult" }, { "no": 151, "code": "1F9D3 1F3FB", "char": "🧓🏻", "name": "⊛ older adult: light skin tone" }, { "no": 152, "code": "1F9D3 1F3FC", "char": "🧓🏼", "name": "⊛ older adult: medium-light skin tone" }, { "no": 153, "code": "1F9D3 1F3FD", "char": "🧓🏽", "name": "⊛ older adult: medium skin tone" }, { "no": 154, "code": "1F9D3 1F3FE", "char": "🧓🏾", "name": "⊛ older adult: medium-dark skin tone" }, { "no": 155, "code": "1F9D3 1F3FF", "char": "🧓🏿", "name": "⊛ older adult: dark skin tone" }, { "no": 156, "code": "1F474", "char": "👴", "name": "old man" }, { "no": 157, "code": "1F474 1F3FB", "char": "👴🏻", "name": "old man: light skin tone" }, { "no": 158, "code": "1F474 1F3FC", "char": "👴🏼", "name": "old man: medium-light skin tone" }, { "no": 159, "code": "1F474 1F3FD", "char": "👴🏽", "name": "old man: medium skin tone" }, { "no": 160, "code": "1F474 1F3FE", "char": "👴🏾", "name": "old man: medium-dark skin tone" }, { "no": 161, "code": "1F474 1F3FF", "char": "👴🏿", "name": "old man: dark skin tone" }, { "no": 162, "code": "1F475", "char": "👵", "name": "old woman" }, { "no": 163, "code": "1F475 1F3FB", "char": "👵🏻", "name": "old woman: light skin tone" }, { "no": 164, "code": "1F475 1F3FC", "char": "👵🏼", "name": "old woman: medium-light skin tone" }, { "no": 165, "code": "1F475 1F3FD", "char": "👵🏽", "name": "old woman: medium skin tone" }, { "no": 166, "code": "1F475 1F3FE", "char": "👵🏾", "name": "old woman: medium-dark skin tone" }, { "no": 167, "code": "1F475 1F3FF", "char": "👵🏿", "name": "old woman: dark skin tone" }, { "no": 168, "code": "1F468 200D 2695 FE0F", "char": "👨‍⚕️", "name": "man health worker" }, { "no": 169, "code": "1F468 1F3FB 200D 2695 FE0F", "char": "👨🏻‍⚕️", "name": "man health worker: light skin tone" }, { "no": 170, "code": "1F468 1F3FC 200D 2695 FE0F", "char": "👨🏼‍⚕️", "name": "man health worker: medium-light skin tone" }, { "no": 171, "code": "1F468 1F3FD 200D 2695 FE0F", "char": "👨🏽‍⚕️", "name": "man health worker: medium skin tone" }, { "no": 172, "code": "1F468 1F3FE 200D 2695 FE0F", "char": "👨🏾‍⚕️", "name": "man health worker: medium-dark skin tone" }, { "no": 173, "code": "1F468 1F3FF 200D 2695 FE0F", "char": "👨🏿‍⚕️", "name": "man health worker: dark skin tone" }, { "no": 174, "code": "1F469 200D 2695 FE0F", "char": "👩‍⚕️", "name": "woman health worker" }, { "no": 175, "code": "1F469 1F3FB 200D 2695 FE0F", "char": "👩🏻‍⚕️", "name": "woman health worker: light skin tone" }, { "no": 176, "code": "1F469 1F3FC 200D 2695 FE0F", "char": "👩🏼‍⚕️", "name": "woman health worker: medium-light skin tone" }, { "no": 177, "code": "1F469 1F3FD 200D 2695 FE0F", "char": "👩🏽‍⚕️", "name": "woman health worker: medium skin tone" }, { "no": 178, "code": "1F469 1F3FE 200D 2695 FE0F", "char": "👩🏾‍⚕️", "name": "woman health worker: medium-dark skin tone" }, { "no": 179, "code": "1F469 1F3FF 200D 2695 FE0F", "char": "👩🏿‍⚕️", "name": "woman health worker: dark skin tone" }, { "no": 180, "code": "1F468 200D 1F393", "char": "👨‍🎓", "name": "man student" }, { "no": 181, "code": "1F468 1F3FB 200D 1F393", "char": "👨🏻‍🎓", "name": "man student: light skin tone" }, { "no": 182, "code": "1F468 1F3FC 200D 1F393", "char": "👨🏼‍🎓", "name": "man student: medium-light skin tone" }, { "no": 183, "code": "1F468 1F3FD 200D 1F393", "char": "👨🏽‍🎓", "name": "man student: medium skin tone" }, { "no": 184, "code": "1F468 1F3FE 200D 1F393", "char": "👨🏾‍🎓", "name": "man student: medium-dark skin tone" }, { "no": 185, "code": "1F468 1F3FF 200D 1F393", "char": "👨🏿‍🎓", "name": "man student: dark skin tone" }, { "no": 186, "code": "1F469 200D 1F393", "char": "👩‍🎓", "name": "woman student" }, { "no": 187, "code": "1F469 1F3FB 200D 1F393", "char": "👩🏻‍🎓", "name": "woman student: light skin tone" }, { "no": 188, "code": "1F469 1F3FC 200D 1F393", "char": "👩🏼‍🎓", "name": "woman student: medium-light skin tone" }, { "no": 189, "code": "1F469 1F3FD 200D 1F393", "char": "👩🏽‍🎓", "name": "woman student: medium skin tone" }, { "no": 190, "code": "1F469 1F3FE 200D 1F393", "char": "👩🏾‍🎓", "name": "woman student: medium-dark skin tone" }, { "no": 191, "code": "1F469 1F3FF 200D 1F393", "char": "👩🏿‍🎓", "name": "woman student: dark skin tone" }, { "no": 192, "code": "1F468 200D 1F3EB", "char": "👨‍🏫", "name": "man teacher" }, { "no": 193, "code": "1F468 1F3FB 200D 1F3EB", "char": "👨🏻‍🏫", "name": "man teacher: light skin tone" }, { "no": 194, "code": "1F468 1F3FC 200D 1F3EB", "char": "👨🏼‍🏫", "name": "man teacher: medium-light skin tone" }, { "no": 195, "code": "1F468 1F3FD 200D 1F3EB", "char": "👨🏽‍🏫", "name": "man teacher: medium skin tone" }, { "no": 196, "code": "1F468 1F3FE 200D 1F3EB", "char": "👨🏾‍🏫", "name": "man teacher: medium-dark skin tone" }, { "no": 197, "code": "1F468 1F3FF 200D 1F3EB", "char": "👨🏿‍🏫", "name": "man teacher: dark skin tone" }, { "no": 198, "code": "1F469 200D 1F3EB", "char": "👩‍🏫", "name": "woman teacher" }, { "no": 199, "code": "1F469 1F3FB 200D 1F3EB", "char": "👩🏻‍🏫", "name": "woman teacher: light skin tone" }, { "no": 200, "code": "1F469 1F3FC 200D 1F3EB", "char": "👩🏼‍🏫", "name": "woman teacher: medium-light skin tone" }, { "no": 201, "code": "1F469 1F3FD 200D 1F3EB", "char": "👩🏽‍🏫", "name": "woman teacher: medium skin tone" }, { "no": 202, "code": "1F469 1F3FE 200D 1F3EB", "char": "👩🏾‍🏫", "name": "woman teacher: medium-dark skin tone" }, { "no": 203, "code": "1F469 1F3FF 200D 1F3EB", "char": "👩🏿‍🏫", "name": "woman teacher: dark skin tone" }, { "no": 204, "code": "1F468 200D 2696 FE0F", "char": "👨‍⚖️", "name": "man judge" }, { "no": 205, "code": "1F468 1F3FB 200D 2696 FE0F", "char": "👨🏻‍⚖️", "name": "man judge: light skin tone" }, { "no": 206, "code": "1F468 1F3FC 200D 2696 FE0F", "char": "👨🏼‍⚖️", "name": "man judge: medium-light skin tone" }, { "no": 207, "code": "1F468 1F3FD 200D 2696 FE0F", "char": "👨🏽‍⚖️", "name": "man judge: medium skin tone" }, { "no": 208, "code": "1F468 1F3FE 200D 2696 FE0F", "char": "👨🏾‍⚖️", "name": "man judge: medium-dark skin tone" }, { "no": 209, "code": "1F468 1F3FF 200D 2696 FE0F", "char": "👨🏿‍⚖️", "name": "man judge: dark skin tone" }, { "no": 210, "code": "1F469 200D 2696 FE0F", "char": "👩‍⚖️", "name": "woman judge" }, { "no": 211, "code": "1F469 1F3FB 200D 2696 FE0F", "char": "👩🏻‍⚖️", "name": "woman judge: light skin tone" }, { "no": 212, "code": "1F469 1F3FC 200D 2696 FE0F", "char": "👩🏼‍⚖️", "name": "woman judge: medium-light skin tone" }, { "no": 213, "code": "1F469 1F3FD 200D 2696 FE0F", "char": "👩🏽‍⚖️", "name": "woman judge: medium skin tone" }, { "no": 214, "code": "1F469 1F3FE 200D 2696 FE0F", "char": "👩🏾‍⚖️", "name": "woman judge: medium-dark skin tone" }, { "no": 215, "code": "1F469 1F3FF 200D 2696 FE0F", "char": "👩🏿‍⚖️", "name": "woman judge: dark skin tone" }, { "no": 216, "code": "1F468 200D 1F33E", "char": "👨‍🌾", "name": "man farmer" }, { "no": 217, "code": "1F468 1F3FB 200D 1F33E", "char": "👨🏻‍🌾", "name": "man farmer: light skin tone" }, { "no": 218, "code": "1F468 1F3FC 200D 1F33E", "char": "👨🏼‍🌾", "name": "man farmer: medium-light skin tone" }, { "no": 219, "code": "1F468 1F3FD 200D 1F33E", "char": "👨🏽‍🌾", "name": "man farmer: medium skin tone" }, { "no": 220, "code": "1F468 1F3FE 200D 1F33E", "char": "👨🏾‍🌾", "name": "man farmer: medium-dark skin tone" }, { "no": 221, "code": "1F468 1F3FF 200D 1F33E", "char": "👨🏿‍🌾", "name": "man farmer: dark skin tone" }, { "no": 222, "code": "1F469 200D 1F33E", "char": "👩‍🌾", "name": "woman farmer" }, { "no": 223, "code": "1F469 1F3FB 200D 1F33E", "char": "👩🏻‍🌾", "name": "woman farmer: light skin tone" }, { "no": 224, "code": "1F469 1F3FC 200D 1F33E", "char": "👩🏼‍🌾", "name": "woman farmer: medium-light skin tone" }, { "no": 225, "code": "1F469 1F3FD 200D 1F33E", "char": "👩🏽‍🌾", "name": "woman farmer: medium skin tone" }, { "no": 226, "code": "1F469 1F3FE 200D 1F33E", "char": "👩🏾‍🌾", "name": "woman farmer: medium-dark skin tone" }, { "no": 227, "code": "1F469 1F3FF 200D 1F33E", "char": "👩🏿‍🌾", "name": "woman farmer: dark skin tone" }, { "no": 228, "code": "1F468 200D 1F373", "char": "👨‍🍳", "name": "man cook" }, { "no": 229, "code": "1F468 1F3FB 200D 1F373", "char": "👨🏻‍🍳", "name": "man cook: light skin tone" }, { "no": 230, "code": "1F468 1F3FC 200D 1F373", "char": "👨🏼‍🍳", "name": "man cook: medium-light skin tone" }, { "no": 231, "code": "1F468 1F3FD 200D 1F373", "char": "👨🏽‍🍳", "name": "man cook: medium skin tone" }, { "no": 232, "code": "1F468 1F3FE 200D 1F373", "char": "👨🏾‍🍳", "name": "man cook: medium-dark skin tone" }, { "no": 233, "code": "1F468 1F3FF 200D 1F373", "char": "👨🏿‍🍳", "name": "man cook: dark skin tone" }, { "no": 234, "code": "1F469 200D 1F373", "char": "👩‍🍳", "name": "woman cook" }, { "no": 235, "code": "1F469 1F3FB 200D 1F373", "char": "👩🏻‍🍳", "name": "woman cook: light skin tone" }, { "no": 236, "code": "1F469 1F3FC 200D 1F373", "char": "👩🏼‍🍳", "name": "woman cook: medium-light skin tone" }, { "no": 237, "code": "1F469 1F3FD 200D 1F373", "char": "👩🏽‍🍳", "name": "woman cook: medium skin tone" }, { "no": 238, "code": "1F469 1F3FE 200D 1F373", "char": "👩🏾‍🍳", "name": "woman cook: medium-dark skin tone" }, { "no": 239, "code": "1F469 1F3FF 200D 1F373", "char": "👩🏿‍🍳", "name": "woman cook: dark skin tone" }, { "no": 240, "code": "1F468 200D 1F527", "char": "👨‍🔧", "name": "man mechanic" }, { "no": 241, "code": "1F468 1F3FB 200D 1F527", "char": "👨🏻‍🔧", "name": "man mechanic: light skin tone" }, { "no": 242, "code": "1F468 1F3FC 200D 1F527", "char": "👨🏼‍🔧", "name": "man mechanic: medium-light skin tone" }, { "no": 243, "code": "1F468 1F3FD 200D 1F527", "char": "👨🏽‍🔧", "name": "man mechanic: medium skin tone" }, { "no": 244, "code": "1F468 1F3FE 200D 1F527", "char": "👨🏾‍🔧", "name": "man mechanic: medium-dark skin tone" }, { "no": 245, "code": "1F468 1F3FF 200D 1F527", "char": "👨🏿‍🔧", "name": "man mechanic: dark skin tone" }, { "no": 246, "code": "1F469 200D 1F527", "char": "👩‍🔧", "name": "woman mechanic" }, { "no": 247, "code": "1F469 1F3FB 200D 1F527", "char": "👩🏻‍🔧", "name": "woman mechanic: light skin tone" }, { "no": 248, "code": "1F469 1F3FC 200D 1F527", "char": "👩🏼‍🔧", "name": "woman mechanic: medium-light skin tone" }, { "no": 249, "code": "1F469 1F3FD 200D 1F527", "char": "👩🏽‍🔧", "name": "woman mechanic: medium skin tone" }, { "no": 250, "code": "1F469 1F3FE 200D 1F527", "char": "👩🏾‍🔧", "name": "woman mechanic: medium-dark skin tone" }, { "no": 251, "code": "1F469 1F3FF 200D 1F527", "char": "👩🏿‍🔧", "name": "woman mechanic: dark skin tone" }, { "no": 252, "code": "1F468 200D 1F3ED", "char": "👨‍🏭", "name": "man factory worker" }, { "no": 253, "code": "1F468 1F3FB 200D 1F3ED", "char": "👨🏻‍🏭", "name": "man factory worker: light skin tone" }, { "no": 254, "code": "1F468 1F3FC 200D 1F3ED", "char": "👨🏼‍🏭", "name": "man factory worker: medium-light skin tone" }, { "no": 255, "code": "1F468 1F3FD 200D 1F3ED", "char": "👨🏽‍🏭", "name": "man factory worker: medium skin tone" }, { "no": 256, "code": "1F468 1F3FE 200D 1F3ED", "char": "👨🏾‍🏭", "name": "man factory worker: medium-dark skin tone" }, { "no": 257, "code": "1F468 1F3FF 200D 1F3ED", "char": "👨🏿‍🏭", "name": "man factory worker: dark skin tone" }, { "no": 258, "code": "1F469 200D 1F3ED", "char": "👩‍🏭", "name": "woman factory worker" }, { "no": 259, "code": "1F469 1F3FB 200D 1F3ED", "char": "👩🏻‍🏭", "name": "woman factory worker: light skin tone" }, { "no": 260, "code": "1F469 1F3FC 200D 1F3ED", "char": "👩🏼‍🏭", "name": "woman factory worker: medium-light skin tone" }, { "no": 261, "code": "1F469 1F3FD 200D 1F3ED", "char": "👩🏽‍🏭", "name": "woman factory worker: medium skin tone" }, { "no": 262, "code": "1F469 1F3FE 200D 1F3ED", "char": "👩🏾‍🏭", "name": "woman factory worker: medium-dark skin tone" }, { "no": 263, "code": "1F469 1F3FF 200D 1F3ED", "char": "👩🏿‍🏭", "name": "woman factory worker: dark skin tone" }, { "no": 264, "code": "1F468 200D 1F4BC", "char": "👨‍💼", "name": "man office worker" }, { "no": 265, "code": "1F468 1F3FB 200D 1F4BC", "char": "👨🏻‍💼", "name": "man office worker: light skin tone" }, { "no": 266, "code": "1F468 1F3FC 200D 1F4BC", "char": "👨🏼‍💼", "name": "man office worker: medium-light skin tone" }, { "no": 267, "code": "1F468 1F3FD 200D 1F4BC", "char": "👨🏽‍💼", "name": "man office worker: medium skin tone" }, { "no": 268, "code": "1F468 1F3FE 200D 1F4BC", "char": "👨🏾‍💼", "name": "man office worker: medium-dark skin tone" }, { "no": 269, "code": "1F468 1F3FF 200D 1F4BC", "char": "👨🏿‍💼", "name": "man office worker: dark skin tone" }, { "no": 270, "code": "1F469 200D 1F4BC", "char": "👩‍💼", "name": "woman office worker" }, { "no": 271, "code": "1F469 1F3FB 200D 1F4BC", "char": "👩🏻‍💼", "name": "woman office worker: light skin tone" }, { "no": 272, "code": "1F469 1F3FC 200D 1F4BC", "char": "👩🏼‍💼", "name": "woman office worker: medium-light skin tone" }, { "no": 273, "code": "1F469 1F3FD 200D 1F4BC", "char": "👩🏽‍💼", "name": "woman office worker: medium skin tone" }, { "no": 274, "code": "1F469 1F3FE 200D 1F4BC", "char": "👩🏾‍💼", "name": "woman office worker: medium-dark skin tone" }, { "no": 275, "code": "1F469 1F3FF 200D 1F4BC", "char": "👩🏿‍💼", "name": "woman office worker: dark skin tone" }, { "no": 276, "code": "1F468 200D 1F52C", "char": "👨‍🔬", "name": "man scientist" }, { "no": 277, "code": "1F468 1F3FB 200D 1F52C", "char": "👨🏻‍🔬", "name": "man scientist: light skin tone" }, { "no": 278, "code": "1F468 1F3FC 200D 1F52C", "char": "👨🏼‍🔬", "name": "man scientist: medium-light skin tone" }, { "no": 279, "code": "1F468 1F3FD 200D 1F52C", "char": "👨🏽‍🔬", "name": "man scientist: medium skin tone" }, { "no": 280, "code": "1F468 1F3FE 200D 1F52C", "char": "👨🏾‍🔬", "name": "man scientist: medium-dark skin tone" }, { "no": 281, "code": "1F468 1F3FF 200D 1F52C", "char": "👨🏿‍🔬", "name": "man scientist: dark skin tone" }, { "no": 282, "code": "1F469 200D 1F52C", "char": "👩‍🔬", "name": "woman scientist" }, { "no": 283, "code": "1F469 1F3FB 200D 1F52C", "char": "👩🏻‍🔬", "name": "woman scientist: light skin tone" }, { "no": 284, "code": "1F469 1F3FC 200D 1F52C", "char": "👩🏼‍🔬", "name": "woman scientist: medium-light skin tone" }, { "no": 285, "code": "1F469 1F3FD 200D 1F52C", "char": "👩🏽‍🔬", "name": "woman scientist: medium skin tone" }, { "no": 286, "code": "1F469 1F3FE 200D 1F52C", "char": "👩🏾‍🔬", "name": "woman scientist: medium-dark skin tone" }, { "no": 287, "code": "1F469 1F3FF 200D 1F52C", "char": "👩🏿‍🔬", "name": "woman scientist: dark skin tone" }, { "no": 288, "code": "1F468 200D 1F4BB", "char": "👨‍💻", "name": "man technologist" }, { "no": 289, "code": "1F468 1F3FB 200D 1F4BB", "char": "👨🏻‍💻", "name": "man technologist: light skin tone" }, { "no": 290, "code": "1F468 1F3FC 200D 1F4BB", "char": "👨🏼‍💻", "name": "man technologist: medium-light skin tone" }, { "no": 291, "code": "1F468 1F3FD 200D 1F4BB", "char": "👨🏽‍💻", "name": "man technologist: medium skin tone" }, { "no": 292, "code": "1F468 1F3FE 200D 1F4BB", "char": "👨🏾‍💻", "name": "man technologist: medium-dark skin tone" }, { "no": 293, "code": "1F468 1F3FF 200D 1F4BB", "char": "👨🏿‍💻", "name": "man technologist: dark skin tone" }, { "no": 294, "code": "1F469 200D 1F4BB", "char": "👩‍💻", "name": "woman technologist" }, { "no": 295, "code": "1F469 1F3FB 200D 1F4BB", "char": "👩🏻‍💻", "name": "woman technologist: light skin tone" }, { "no": 296, "code": "1F469 1F3FC 200D 1F4BB", "char": "👩🏼‍💻", "name": "woman technologist: medium-light skin tone" }, { "no": 297, "code": "1F469 1F3FD 200D 1F4BB", "char": "👩🏽‍💻", "name": "woman technologist: medium skin tone" }, { "no": 298, "code": "1F469 1F3FE 200D 1F4BB", "char": "👩🏾‍💻", "name": "woman technologist: medium-dark skin tone" }, { "no": 299, "code": "1F469 1F3FF 200D 1F4BB", "char": "👩🏿‍💻", "name": "woman technologist: dark skin tone" }, { "no": 300, "code": "1F468 200D 1F3A4", "char": "👨‍🎤", "name": "man singer" }, { "no": 301, "code": "1F468 1F3FB 200D 1F3A4", "char": "👨🏻‍🎤", "name": "man singer: light skin tone" }, { "no": 302, "code": "1F468 1F3FC 200D 1F3A4", "char": "👨🏼‍🎤", "name": "man singer: medium-light skin tone" }, { "no": 303, "code": "1F468 1F3FD 200D 1F3A4", "char": "👨🏽‍🎤", "name": "man singer: medium skin tone" }, { "no": 304, "code": "1F468 1F3FE 200D 1F3A4", "char": "👨🏾‍🎤", "name": "man singer: medium-dark skin tone" }, { "no": 305, "code": "1F468 1F3FF 200D 1F3A4", "char": "👨🏿‍🎤", "name": "man singer: dark skin tone" }, { "no": 306, "code": "1F469 200D 1F3A4", "char": "👩‍🎤", "name": "woman singer" }, { "no": 307, "code": "1F469 1F3FB 200D 1F3A4", "char": "👩🏻‍🎤", "name": "woman singer: light skin tone" }, { "no": 308, "code": "1F469 1F3FC 200D 1F3A4", "char": "👩🏼‍🎤", "name": "woman singer: medium-light skin tone" }, { "no": 309, "code": "1F469 1F3FD 200D 1F3A4", "char": "👩🏽‍🎤", "name": "woman singer: medium skin tone" }, { "no": 310, "code": "1F469 1F3FE 200D 1F3A4", "char": "👩🏾‍🎤", "name": "woman singer: medium-dark skin tone" }, { "no": 311, "code": "1F469 1F3FF 200D 1F3A4", "char": "👩🏿‍🎤", "name": "woman singer: dark skin tone" }, { "no": 312, "code": "1F468 200D 1F3A8", "char": "👨‍🎨", "name": "man artist" }, { "no": 313, "code": "1F468 1F3FB 200D 1F3A8", "char": "👨🏻‍🎨", "name": "man artist: light skin tone" }, { "no": 314, "code": "1F468 1F3FC 200D 1F3A8", "char": "👨🏼‍🎨", "name": "man artist: medium-light skin tone" }, { "no": 315, "code": "1F468 1F3FD 200D 1F3A8", "char": "👨🏽‍🎨", "name": "man artist: medium skin tone" }, { "no": 316, "code": "1F468 1F3FE 200D 1F3A8", "char": "👨🏾‍🎨", "name": "man artist: medium-dark skin tone" }, { "no": 317, "code": "1F468 1F3FF 200D 1F3A8", "char": "👨🏿‍🎨", "name": "man artist: dark skin tone" }, { "no": 318, "code": "1F469 200D 1F3A8", "char": "👩‍🎨", "name": "woman artist" }, { "no": 319, "code": "1F469 1F3FB 200D 1F3A8", "char": "👩🏻‍🎨", "name": "woman artist: light skin tone" }, { "no": 320, "code": "1F469 1F3FC 200D 1F3A8", "char": "👩🏼‍🎨", "name": "woman artist: medium-light skin tone" }, { "no": 321, "code": "1F469 1F3FD 200D 1F3A8", "char": "👩🏽‍🎨", "name": "woman artist: medium skin tone" }, { "no": 322, "code": "1F469 1F3FE 200D 1F3A8", "char": "👩🏾‍🎨", "name": "woman artist: medium-dark skin tone" }, { "no": 323, "code": "1F469 1F3FF 200D 1F3A8", "char": "👩🏿‍🎨", "name": "woman artist: dark skin tone" }, { "no": 324, "code": "1F468 200D 2708 FE0F", "char": "👨‍✈️", "name": "man pilot" }, { "no": 325, "code": "1F468 1F3FB 200D 2708 FE0F", "char": "👨🏻‍✈️", "name": "man pilot: light skin tone" }, { "no": 326, "code": "1F468 1F3FC 200D 2708 FE0F", "char": "👨🏼‍✈️", "name": "man pilot: medium-light skin tone" }, { "no": 327, "code": "1F468 1F3FD 200D 2708 FE0F", "char": "👨🏽‍✈️", "name": "man pilot: medium skin tone" }, { "no": 328, "code": "1F468 1F3FE 200D 2708 FE0F", "char": "👨🏾‍✈️", "name": "man pilot: medium-dark skin tone" }, { "no": 329, "code": "1F468 1F3FF 200D 2708 FE0F", "char": "👨🏿‍✈️", "name": "man pilot: dark skin tone" }, { "no": 330, "code": "1F469 200D 2708 FE0F", "char": "👩‍✈️", "name": "woman pilot" }, { "no": 331, "code": "1F469 1F3FB 200D 2708 FE0F", "char": "👩🏻‍✈️", "name": "woman pilot: light skin tone" }, { "no": 332, "code": "1F469 1F3FC 200D 2708 FE0F", "char": "👩🏼‍✈️", "name": "woman pilot: medium-light skin tone" }, { "no": 333, "code": "1F469 1F3FD 200D 2708 FE0F", "char": "👩🏽‍✈️", "name": "woman pilot: medium skin tone" }, { "no": 334, "code": "1F469 1F3FE 200D 2708 FE0F", "char": "👩🏾‍✈️", "name": "woman pilot: medium-dark skin tone" }, { "no": 335, "code": "1F469 1F3FF 200D 2708 FE0F", "char": "👩🏿‍✈️", "name": "woman pilot: dark skin tone" }, { "no": 336, "code": "1F468 200D 1F680", "char": "👨‍🚀", "name": "man astronaut" }, { "no": 337, "code": "1F468 1F3FB 200D 1F680", "char": "👨🏻‍🚀", "name": "man astronaut: light skin tone" }, { "no": 338, "code": "1F468 1F3FC 200D 1F680", "char": "👨🏼‍🚀", "name": "man astronaut: medium-light skin tone" }, { "no": 339, "code": "1F468 1F3FD 200D 1F680", "char": "👨🏽‍🚀", "name": "man astronaut: medium skin tone" }, { "no": 340, "code": "1F468 1F3FE 200D 1F680", "char": "👨🏾‍🚀", "name": "man astronaut: medium-dark skin tone" }, { "no": 341, "code": "1F468 1F3FF 200D 1F680", "char": "👨🏿‍🚀", "name": "man astronaut: dark skin tone" }, { "no": 342, "code": "1F469 200D 1F680", "char": "👩‍🚀", "name": "woman astronaut" }, { "no": 343, "code": "1F469 1F3FB 200D 1F680", "char": "👩🏻‍🚀", "name": "woman astronaut: light skin tone" }, { "no": 344, "code": "1F469 1F3FC 200D 1F680", "char": "👩🏼‍🚀", "name": "woman astronaut: medium-light skin tone" }, { "no": 345, "code": "1F469 1F3FD 200D 1F680", "char": "👩🏽‍🚀", "name": "woman astronaut: medium skin tone" }, { "no": 346, "code": "1F469 1F3FE 200D 1F680", "char": "👩🏾‍🚀", "name": "woman astronaut: medium-dark skin tone" }, { "no": 347, "code": "1F469 1F3FF 200D 1F680", "char": "👩🏿‍🚀", "name": "woman astronaut: dark skin tone" }, { "no": 348, "code": "1F468 200D 1F692", "char": "👨‍🚒", "name": "man firefighter" }, { "no": 349, "code": "1F468 1F3FB 200D 1F692", "char": "👨🏻‍🚒", "name": "man firefighter: light skin tone" }, { "no": 350, "code": "1F468 1F3FC 200D 1F692", "char": "👨🏼‍🚒", "name": "man firefighter: medium-light skin tone" }, { "no": 351, "code": "1F468 1F3FD 200D 1F692", "char": "👨🏽‍🚒", "name": "man firefighter: medium skin tone" }, { "no": 352, "code": "1F468 1F3FE 200D 1F692", "char": "👨🏾‍🚒", "name": "man firefighter: medium-dark skin tone" }, { "no": 353, "code": "1F468 1F3FF 200D 1F692", "char": "👨🏿‍🚒", "name": "man firefighter: dark skin tone" }, { "no": 354, "code": "1F469 200D 1F692", "char": "👩‍🚒", "name": "woman firefighter" }, { "no": 355, "code": "1F469 1F3FB 200D 1F692", "char": "👩🏻‍🚒", "name": "woman firefighter: light skin tone" }, { "no": 356, "code": "1F469 1F3FC 200D 1F692", "char": "👩🏼‍🚒", "name": "woman firefighter: medium-light skin tone" }, { "no": 357, "code": "1F469 1F3FD 200D 1F692", "char": "👩🏽‍🚒", "name": "woman firefighter: medium skin tone" }, { "no": 358, "code": "1F469 1F3FE 200D 1F692", "char": "👩🏾‍🚒", "name": "woman firefighter: medium-dark skin tone" }, { "no": 359, "code": "1F469 1F3FF 200D 1F692", "char": "👩🏿‍🚒", "name": "woman firefighter: dark skin tone" }, { "no": 360, "code": "1F46E", "char": "👮", "name": "police officer" }, { "no": 361, "code": "1F46E 1F3FB", "char": "👮🏻", "name": "police officer: light skin tone" }, { "no": 362, "code": "1F46E 1F3FC", "char": "👮🏼", "name": "police officer: medium-light skin tone" }, { "no": 363, "code": "1F46E 1F3FD", "char": "👮🏽", "name": "police officer: medium skin tone" }, { "no": 364, "code": "1F46E 1F3FE", "char": "👮🏾", "name": "police officer: medium-dark skin tone" }, { "no": 365, "code": "1F46E 1F3FF", "char": "👮🏿", "name": "police officer: dark skin tone" }, { "no": 366, "code": "1F46E 200D 2642 FE0F", "char": "👮‍♂️", "name": "man police officer" }, { "no": 367, "code": "1F46E 1F3FB 200D 2642 FE0F", "char": "👮🏻‍♂️", "name": "man police officer: light skin tone" }, { "no": 368, "code": "1F46E 1F3FC 200D 2642 FE0F", "char": "👮🏼‍♂️", "name": "man police officer: medium-light skin tone" }, { "no": 369, "code": "1F46E 1F3FD 200D 2642 FE0F", "char": "👮🏽‍♂️", "name": "man police officer: medium skin tone" }, { "no": 370, "code": "1F46E 1F3FE 200D 2642 FE0F", "char": "👮🏾‍♂️", "name": "man police officer: medium-dark skin tone" }, { "no": 371, "code": "1F46E 1F3FF 200D 2642 FE0F", "char": "👮🏿‍♂️", "name": "man police officer: dark skin tone" }, { "no": 372, "code": "1F46E 200D 2640 FE0F", "char": "👮‍♀️", "name": "woman police officer" }, { "no": 373, "code": "1F46E 1F3FB 200D 2640 FE0F", "char": "👮🏻‍♀️", "name": "woman police officer: light skin tone" }, { "no": 374, "code": "1F46E 1F3FC 200D 2640 FE0F", "char": "👮🏼‍♀️", "name": "woman police officer: medium-light skin tone" }, { "no": 375, "code": "1F46E 1F3FD 200D 2640 FE0F", "char": "👮🏽‍♀️", "name": "woman police officer: medium skin tone" }, { "no": 376, "code": "1F46E 1F3FE 200D 2640 FE0F", "char": "👮🏾‍♀️", "name": "woman police officer: medium-dark skin tone" }, { "no": 377, "code": "1F46E 1F3FF 200D 2640 FE0F", "char": "👮🏿‍♀️", "name": "woman police officer: dark skin tone" }, { "no": 378, "code": "1F575", "char": "🕵", "name": "detective" }, { "no": 379, "code": "1F575 1F3FB", "char": "🕵🏻", "name": "detective: light skin tone" }, { "no": 380, "code": "1F575 1F3FC", "char": "🕵🏼", "name": "detective: medium-light skin tone" }, { "no": 381, "code": "1F575 1F3FD", "char": "🕵🏽", "name": "detective: medium skin tone" }, { "no": 382, "code": "1F575 1F3FE", "char": "🕵🏾", "name": "detective: medium-dark skin tone" }, { "no": 383, "code": "1F575 1F3FF", "char": "🕵🏿", "name": "detective: dark skin tone" }, { "no": 384, "code": "1F575 FE0F 200D 2642 FE0F", "char": "🕵️‍♂️", "name": "man detective" }, { "no": 385, "code": "1F575 1F3FB 200D 2642 FE0F", "char": "🕵🏻‍♂️", "name": "man detective: light skin tone" }, { "no": 386, "code": "1F575 1F3FC 200D 2642 FE0F", "char": "🕵🏼‍♂️", "name": "man detective: medium-light skin tone" }, { "no": 387, "code": "1F575 1F3FD 200D 2642 FE0F", "char": "🕵🏽‍♂️", "name": "man detective: medium skin tone" }, { "no": 388, "code": "1F575 1F3FE 200D 2642 FE0F", "char": "🕵🏾‍♂️", "name": "man detective: medium-dark skin tone" }, { "no": 389, "code": "1F575 1F3FF 200D 2642 FE0F", "char": "🕵🏿‍♂️", "name": "man detective: dark skin tone" }, { "no": 390, "code": "1F575 FE0F 200D 2640 FE0F", "char": "🕵️‍♀️", "name": "woman detective" }, { "no": 391, "code": "1F575 1F3FB 200D 2640 FE0F", "char": "🕵🏻‍♀️", "name": "woman detective: light skin tone" }, { "no": 392, "code": "1F575 1F3FC 200D 2640 FE0F", "char": "🕵🏼‍♀️", "name": "woman detective: medium-light skin tone" }, { "no": 393, "code": "1F575 1F3FD 200D 2640 FE0F", "char": "🕵🏽‍♀️", "name": "woman detective: medium skin tone" }, { "no": 394, "code": "1F575 1F3FE 200D 2640 FE0F", "char": "🕵🏾‍♀️", "name": "woman detective: medium-dark skin tone" }, { "no": 395, "code": "1F575 1F3FF 200D 2640 FE0F", "char": "🕵🏿‍♀️", "name": "woman detective: dark skin tone" }, { "no": 396, "code": "1F482", "char": "💂", "name": "guard" }, { "no": 397, "code": "1F482 1F3FB", "char": "💂🏻", "name": "guard: light skin tone" }, { "no": 398, "code": "1F482 1F3FC", "char": "💂🏼", "name": "guard: medium-light skin tone" }, { "no": 399, "code": "1F482 1F3FD", "char": "💂🏽", "name": "guard: medium skin tone" }, { "no": 400, "code": "1F482 1F3FE", "char": "💂🏾", "name": "guard: medium-dark skin tone" }, { "no": 401, "code": "1F482 1F3FF", "char": "💂🏿", "name": "guard: dark skin tone" }, { "no": 402, "code": "1F482 200D 2642 FE0F", "char": "💂‍♂️", "name": "man guard" }, { "no": 403, "code": "1F482 1F3FB 200D 2642 FE0F", "char": "💂🏻‍♂️", "name": "man guard: light skin tone" }, { "no": 404, "code": "1F482 1F3FC 200D 2642 FE0F", "char": "💂🏼‍♂️", "name": "man guard: medium-light skin tone" }, { "no": 405, "code": "1F482 1F3FD 200D 2642 FE0F", "char": "💂🏽‍♂️", "name": "man guard: medium skin tone" }, { "no": 406, "code": "1F482 1F3FE 200D 2642 FE0F", "char": "💂🏾‍♂️", "name": "man guard: medium-dark skin tone" }, { "no": 407, "code": "1F482 1F3FF 200D 2642 FE0F", "char": "💂🏿‍♂️", "name": "man guard: dark skin tone" }, { "no": 408, "code": "1F482 200D 2640 FE0F", "char": "💂‍♀️", "name": "woman guard" }, { "no": 409, "code": "1F482 1F3FB 200D 2640 FE0F", "char": "💂🏻‍♀️", "name": "woman guard: light skin tone" }, { "no": 410, "code": "1F482 1F3FC 200D 2640 FE0F", "char": "💂🏼‍♀️", "name": "woman guard: medium-light skin tone" }, { "no": 411, "code": "1F482 1F3FD 200D 2640 FE0F", "char": "💂🏽‍♀️", "name": "woman guard: medium skin tone" }, { "no": 412, "code": "1F482 1F3FE 200D 2640 FE0F", "char": "💂🏾‍♀️", "name": "woman guard: medium-dark skin tone" }, { "no": 413, "code": "1F482 1F3FF 200D 2640 FE0F", "char": "💂🏿‍♀️", "name": "woman guard: dark skin tone" }, { "no": 414, "code": "1F477", "char": "👷", "name": "construction worker" }, { "no": 415, "code": "1F477 1F3FB", "char": "👷🏻", "name": "construction worker: light skin tone" }, { "no": 416, "code": "1F477 1F3FC", "char": "👷🏼", "name": "construction worker: medium-light skin tone" }, { "no": 417, "code": "1F477 1F3FD", "char": "👷🏽", "name": "construction worker: medium skin tone" }, { "no": 418, "code": "1F477 1F3FE", "char": "👷🏾", "name": "construction worker: medium-dark skin tone" }, { "no": 419, "code": "1F477 1F3FF", "char": "👷🏿", "name": "construction worker: dark skin tone" }, { "no": 420, "code": "1F477 200D 2642 FE0F", "char": "👷‍♂️", "name": "man construction worker" }, { "no": 421, "code": "1F477 1F3FB 200D 2642 FE0F", "char": "👷🏻‍♂️", "name": "man construction worker: light skin tone" }, { "no": 422, "code": "1F477 1F3FC 200D 2642 FE0F", "char": "👷🏼‍♂️", "name": "man construction worker: medium-light skin tone" }, { "no": 423, "code": "1F477 1F3FD 200D 2642 FE0F", "char": "👷🏽‍♂️", "name": "man construction worker: medium skin tone" }, { "no": 424, "code": "1F477 1F3FE 200D 2642 FE0F", "char": "👷🏾‍♂️", "name": "man construction worker: medium-dark skin tone" }, { "no": 425, "code": "1F477 1F3FF 200D 2642 FE0F", "char": "👷🏿‍♂️", "name": "man construction worker: dark skin tone" }, { "no": 426, "code": "1F477 200D 2640 FE0F", "char": "👷‍♀️", "name": "woman construction worker" }, { "no": 427, "code": "1F477 1F3FB 200D 2640 FE0F", "char": "👷🏻‍♀️", "name": "woman construction worker: light skin tone" }, { "no": 428, "code": "1F477 1F3FC 200D 2640 FE0F", "char": "👷🏼‍♀️", "name": "woman construction worker: medium-light skin tone" }, { "no": 429, "code": "1F477 1F3FD 200D 2640 FE0F", "char": "👷🏽‍♀️", "name": "woman construction worker: medium skin tone" }, { "no": 430, "code": "1F477 1F3FE 200D 2640 FE0F", "char": "👷🏾‍♀️", "name": "woman construction worker: medium-dark skin tone" }, { "no": 431, "code": "1F477 1F3FF 200D 2640 FE0F", "char": "👷🏿‍♀️", "name": "woman construction worker: dark skin tone" }, { "no": 432, "code": "1F934", "char": "🤴", "name": "prince" }, { "no": 433, "code": "1F934 1F3FB", "char": "🤴🏻", "name": "prince: light skin tone" }, { "no": 434, "code": "1F934 1F3FC", "char": "🤴🏼", "name": "prince: medium-light skin tone" }, { "no": 435, "code": "1F934 1F3FD", "char": "🤴🏽", "name": "prince: medium skin tone" }, { "no": 436, "code": "1F934 1F3FE", "char": "🤴🏾", "name": "prince: medium-dark skin tone" }, { "no": 437, "code": "1F934 1F3FF", "char": "🤴🏿", "name": "prince: dark skin tone" }, { "no": 438, "code": "1F478", "char": "👸", "name": "princess" }, { "no": 439, "code": "1F478 1F3FB", "char": "👸🏻", "name": "princess: light skin tone" }, { "no": 440, "code": "1F478 1F3FC", "char": "👸🏼", "name": "princess: medium-light skin tone" }, { "no": 441, "code": "1F478 1F3FD", "char": "👸🏽", "name": "princess: medium skin tone" }, { "no": 442, "code": "1F478 1F3FE", "char": "👸🏾", "name": "princess: medium-dark skin tone" }, { "no": 443, "code": "1F478 1F3FF", "char": "👸🏿", "name": "princess: dark skin tone" }, { "no": 444, "code": "1F473", "char": "👳", "name": "person wearing turban" }, { "no": 445, "code": "1F473 1F3FB", "char": "👳🏻", "name": "person wearing turban: light skin tone" }, { "no": 446, "code": "1F473 1F3FC", "char": "👳🏼", "name": "person wearing turban: medium-light skin tone" }, { "no": 447, "code": "1F473 1F3FD", "char": "👳🏽", "name": "person wearing turban: medium skin tone" }, { "no": 448, "code": "1F473 1F3FE", "char": "👳🏾", "name": "person wearing turban: medium-dark skin tone" }, { "no": 449, "code": "1F473 1F3FF", "char": "👳🏿", "name": "person wearing turban: dark skin tone" }, { "no": 450, "code": "1F473 200D 2642 FE0F", "char": "👳‍♂️", "name": "man wearing turban" }, { "no": 451, "code": "1F473 1F3FB 200D 2642 FE0F", "char": "👳🏻‍♂️", "name": "man wearing turban: light skin tone" }, { "no": 452, "code": "1F473 1F3FC 200D 2642 FE0F", "char": "👳🏼‍♂️", "name": "man wearing turban: medium-light skin tone" }, { "no": 453, "code": "1F473 1F3FD 200D 2642 FE0F", "char": "👳🏽‍♂️", "name": "man wearing turban: medium skin tone" }, { "no": 454, "code": "1F473 1F3FE 200D 2642 FE0F", "char": "👳🏾‍♂️", "name": "man wearing turban: medium-dark skin tone" }, { "no": 455, "code": "1F473 1F3FF 200D 2642 FE0F", "char": "👳🏿‍♂️", "name": "man wearing turban: dark skin tone" }, { "no": 456, "code": "1F473 200D 2640 FE0F", "char": "👳‍♀️", "name": "woman wearing turban" }, { "no": 457, "code": "1F473 1F3FB 200D 2640 FE0F", "char": "👳🏻‍♀️", "name": "woman wearing turban: light skin tone" }, { "no": 458, "code": "1F473 1F3FC 200D 2640 FE0F", "char": "👳🏼‍♀️", "name": "woman wearing turban: medium-light skin tone" }, { "no": 459, "code": "1F473 1F3FD 200D 2640 FE0F", "char": "👳🏽‍♀️", "name": "woman wearing turban: medium skin tone" }, { "no": 460, "code": "1F473 1F3FE 200D 2640 FE0F", "char": "👳🏾‍♀️", "name": "woman wearing turban: medium-dark skin tone" }, { "no": 461, "code": "1F473 1F3FF 200D 2640 FE0F", "char": "👳🏿‍♀️", "name": "woman wearing turban: dark skin tone" }, { "no": 462, "code": "1F472", "char": "👲", "name": "man with Chinese cap" }, { "no": 463, "code": "1F472 1F3FB", "char": "👲🏻", "name": "man with Chinese cap: light skin tone" }, { "no": 464, "code": "1F472 1F3FC", "char": "👲🏼", "name": "man with Chinese cap: medium-light skin tone" }, { "no": 465, "code": "1F472 1F3FD", "char": "👲🏽", "name": "man with Chinese cap: medium skin tone" }, { "no": 466, "code": "1F472 1F3FE", "char": "👲🏾", "name": "man with Chinese cap: medium-dark skin tone" }, { "no": 467, "code": "1F472 1F3FF", "char": "👲🏿", "name": "man with Chinese cap: dark skin tone" }, { "no": 468, "code": "1F9D5", "char": "🧕", "name": "⊛ woman with headscarf" }, { "no": 469, "code": "1F9D5 1F3FB", "char": "🧕🏻", "name": "⊛ woman with headscarf: light skin tone" }, { "no": 470, "code": "1F9D5 1F3FC", "char": "🧕🏼", "name": "⊛ woman with headscarf: medium-light skin tone" }, { "no": 471, "code": "1F9D5 1F3FD", "char": "🧕🏽", "name": "⊛ woman with headscarf: medium skin tone" }, { "no": 472, "code": "1F9D5 1F3FE", "char": "🧕🏾", "name": "⊛ woman with headscarf: medium-dark skin tone" }, { "no": 473, "code": "1F9D5 1F3FF", "char": "🧕🏿", "name": "⊛ woman with headscarf: dark skin tone" }, { "no": 474, "code": "1F9D4", "char": "🧔", "name": "⊛ bearded person" }, { "no": 475, "code": "1F9D4 1F3FB", "char": "🧔🏻", "name": "⊛ bearded person: light skin tone" }, { "no": 476, "code": "1F9D4 1F3FC", "char": "🧔🏼", "name": "⊛ bearded person: medium-light skin tone" }, { "no": 477, "code": "1F9D4 1F3FD", "char": "🧔🏽", "name": "⊛ bearded person: medium skin tone" }, { "no": 478, "code": "1F9D4 1F3FE", "char": "🧔🏾", "name": "⊛ bearded person: medium-dark skin tone" }, { "no": 479, "code": "1F9D4 1F3FF", "char": "🧔🏿", "name": "⊛ bearded person: dark skin tone" }, { "no": 480, "code": "1F471", "char": "👱", "name": "blond-haired person" }, { "no": 481, "code": "1F471 1F3FB", "char": "👱🏻", "name": "blond-haired person: light skin tone" }, { "no": 482, "code": "1F471 1F3FC", "char": "👱🏼", "name": "blond-haired person: medium-light skin tone" }, { "no": 483, "code": "1F471 1F3FD", "char": "👱🏽", "name": "blond-haired person: medium skin tone" }, { "no": 484, "code": "1F471 1F3FE", "char": "👱🏾", "name": "blond-haired person: medium-dark skin tone" }, { "no": 485, "code": "1F471 1F3FF", "char": "👱🏿", "name": "blond-haired person: dark skin tone" }, { "no": 486, "code": "1F471 200D 2642 FE0F", "char": "👱‍♂️", "name": "blond-haired man" }, { "no": 487, "code": "1F471 1F3FB 200D 2642 FE0F", "char": "👱🏻‍♂️", "name": "blond-haired man: light skin tone" }, { "no": 488, "code": "1F471 1F3FC 200D 2642 FE0F", "char": "👱🏼‍♂️", "name": "blond-haired man: medium-light skin tone" }, { "no": 489, "code": "1F471 1F3FD 200D 2642 FE0F", "char": "👱🏽‍♂️", "name": "blond-haired man: medium skin tone" }, { "no": 490, "code": "1F471 1F3FE 200D 2642 FE0F", "char": "👱🏾‍♂️", "name": "blond-haired man: medium-dark skin tone" }, { "no": 491, "code": "1F471 1F3FF 200D 2642 FE0F", "char": "👱🏿‍♂️", "name": "blond-haired man: dark skin tone" }, { "no": 492, "code": "1F471 200D 2640 FE0F", "char": "👱‍♀️", "name": "blond-haired woman" }, { "no": 493, "code": "1F471 1F3FB 200D 2640 FE0F", "char": "👱🏻‍♀️", "name": "blond-haired woman: light skin tone" }, { "no": 494, "code": "1F471 1F3FC 200D 2640 FE0F", "char": "👱🏼‍♀️", "name": "blond-haired woman: medium-light skin tone" }, { "no": 495, "code": "1F471 1F3FD 200D 2640 FE0F", "char": "👱🏽‍♀️", "name": "blond-haired woman: medium skin tone" }, { "no": 496, "code": "1F471 1F3FE 200D 2640 FE0F", "char": "👱🏾‍♀️", "name": "blond-haired woman: medium-dark skin tone" }, { "no": 497, "code": "1F471 1F3FF 200D 2640 FE0F", "char": "👱🏿‍♀️", "name": "blond-haired woman: dark skin tone" }, { "no": 498, "code": "1F935", "char": "🤵", "name": "man in tuxedo" }, { "no": 499, "code": "1F935 1F3FB", "char": "🤵🏻", "name": "man in tuxedo: light skin tone" }, { "no": 500, "code": "1F935 1F3FC", "char": "🤵🏼", "name": "man in tuxedo: medium-light skin tone" }, { "no": 501, "code": "1F935 1F3FD", "char": "🤵🏽", "name": "man in tuxedo: medium skin tone" }, { "no": 502, "code": "1F935 1F3FE", "char": "🤵🏾", "name": "man in tuxedo: medium-dark skin tone" }, { "no": 503, "code": "1F935 1F3FF", "char": "🤵🏿", "name": "man in tuxedo: dark skin tone" }, { "no": 504, "code": "1F470", "char": "👰", "name": "bride with veil" }, { "no": 505, "code": "1F470 1F3FB", "char": "👰🏻", "name": "bride with veil: light skin tone" }, { "no": 506, "code": "1F470 1F3FC", "char": "👰🏼", "name": "bride with veil: medium-light skin tone" }, { "no": 507, "code": "1F470 1F3FD", "char": "👰🏽", "name": "bride with veil: medium skin tone" }, { "no": 508, "code": "1F470 1F3FE", "char": "👰🏾", "name": "bride with veil: medium-dark skin tone" }, { "no": 509, "code": "1F470 1F3FF", "char": "👰🏿", "name": "bride with veil: dark skin tone" }, { "no": 510, "code": "1F930", "char": "🤰", "name": "pregnant woman" }, { "no": 511, "code": "1F930 1F3FB", "char": "🤰🏻", "name": "pregnant woman: light skin tone" }, { "no": 512, "code": "1F930 1F3FC", "char": "🤰🏼", "name": "pregnant woman: medium-light skin tone" }, { "no": 513, "code": "1F930 1F3FD", "char": "🤰🏽", "name": "pregnant woman: medium skin tone" }, { "no": 514, "code": "1F930 1F3FE", "char": "🤰🏾", "name": "pregnant woman: medium-dark skin tone" }, { "no": 515, "code": "1F930 1F3FF", "char": "🤰🏿", "name": "pregnant woman: dark skin tone" }, { "no": 516, "code": "1F931", "char": "🤱", "name": "⊛ breast-feeding" }, { "no": 517, "code": "1F931 1F3FB", "char": "🤱🏻", "name": "⊛ breast-feeding: light skin tone" }, { "no": 518, "code": "1F931 1F3FC", "char": "🤱🏼", "name": "⊛ breast-feeding: medium-light skin tone" }, { "no": 519, "code": "1F931 1F3FD", "char": "🤱🏽", "name": "⊛ breast-feeding: medium skin tone" }, { "no": 520, "code": "1F931 1F3FE", "char": "🤱🏾", "name": "⊛ breast-feeding: medium-dark skin tone" }, { "no": 521, "code": "1F931 1F3FF", "char": "🤱🏿", "name": "⊛ breast-feeding: dark skin tone" }, { "no": 522, "code": "1F47C", "char": "👼", "name": "baby angel" }, { "no": 523, "code": "1F47C 1F3FB", "char": "👼🏻", "name": "baby angel: light skin tone" }, { "no": 524, "code": "1F47C 1F3FC", "char": "👼🏼", "name": "baby angel: medium-light skin tone" }, { "no": 525, "code": "1F47C 1F3FD", "char": "👼🏽", "name": "baby angel: medium skin tone" }, { "no": 526, "code": "1F47C 1F3FE", "char": "👼🏾", "name": "baby angel: medium-dark skin tone" }, { "no": 527, "code": "1F47C 1F3FF", "char": "👼🏿", "name": "baby angel: dark skin tone" }, { "no": 528, "code": "1F385", "char": "🎅", "name": "Santa Claus" }, { "no": 529, "code": "1F385 1F3FB", "char": "🎅🏻", "name": "Santa Claus: light skin tone" }, { "no": 530, "code": "1F385 1F3FC", "char": "🎅🏼", "name": "Santa Claus: medium-light skin tone" }, { "no": 531, "code": "1F385 1F3FD", "char": "🎅🏽", "name": "Santa Claus: medium skin tone" }, { "no": 532, "code": "1F385 1F3FE", "char": "🎅🏾", "name": "Santa Claus: medium-dark skin tone" }, { "no": 533, "code": "1F385 1F3FF", "char": "🎅🏿", "name": "Santa Claus: dark skin tone" }, { "no": 534, "code": "1F936", "char": "🤶", "name": "Mrs. Claus" }, { "no": 535, "code": "1F936 1F3FB", "char": "🤶🏻", "name": "Mrs. Claus: light skin tone" }, { "no": 536, "code": "1F936 1F3FC", "char": "🤶🏼", "name": "Mrs. Claus: medium-light skin tone" }, { "no": 537, "code": "1F936 1F3FD", "char": "🤶🏽", "name": "Mrs. Claus: medium skin tone" }, { "no": 538, "code": "1F936 1F3FE", "char": "🤶🏾", "name": "Mrs. Claus: medium-dark skin tone" }, { "no": 539, "code": "1F936 1F3FF", "char": "🤶🏿", "name": "Mrs. Claus: dark skin tone" }, { "no": 540, "code": "1F9D9", "char": "🧙", "name": "⊛ mage" }, { "no": 541, "code": "1F9D9 1F3FB", "char": "🧙🏻", "name": "⊛ mage: light skin tone" }, { "no": 542, "code": "1F9D9 1F3FC", "char": "🧙🏼", "name": "⊛ mage: medium-light skin tone" }, { "no": 543, "code": "1F9D9 1F3FD", "char": "🧙🏽", "name": "⊛ mage: medium skin tone" }, { "no": 544, "code": "1F9D9 1F3FE", "char": "🧙🏾", "name": "⊛ mage: medium-dark skin tone" }, { "no": 545, "code": "1F9D9 1F3FF", "char": "🧙🏿", "name": "⊛ mage: dark skin tone" }, { "no": 546, "code": "1F9D9 200D 2640 FE0F", "char": "🧙‍♀️", "name": "⊛ woman mage" }, { "no": 547, "code": "1F9D9 1F3FB 200D 2640 FE0F", "char": "🧙🏻‍♀️", "name": "⊛ woman mage: light skin tone" }, { "no": 548, "code": "1F9D9 1F3FC 200D 2640 FE0F", "char": "🧙🏼‍♀️", "name": "⊛ woman mage: medium-light skin tone" }, { "no": 549, "code": "1F9D9 1F3FD 200D 2640 FE0F", "char": "🧙🏽‍♀️", "name": "⊛ woman mage: medium skin tone" }, { "no": 550, "code": "1F9D9 1F3FE 200D 2640 FE0F", "char": "🧙🏾‍♀️", "name": "⊛ woman mage: medium-dark skin tone" }, { "no": 551, "code": "1F9D9 1F3FF 200D 2640 FE0F", "char": "🧙🏿‍♀️", "name": "⊛ woman mage: dark skin tone" }, { "no": 552, "code": "1F9D9 200D 2642 FE0F", "char": "🧙‍♂️", "name": "⊛ man mage" }, { "no": 553, "code": "1F9D9 1F3FB 200D 2642 FE0F", "char": "🧙🏻‍♂️", "name": "⊛ man mage: light skin tone" }, { "no": 554, "code": "1F9D9 1F3FC 200D 2642 FE0F", "char": "🧙🏼‍♂️", "name": "⊛ man mage: medium-light skin tone" }, { "no": 555, "code": "1F9D9 1F3FD 200D 2642 FE0F", "char": "🧙🏽‍♂️", "name": "⊛ man mage: medium skin tone" }, { "no": 556, "code": "1F9D9 1F3FE 200D 2642 FE0F", "char": "🧙🏾‍♂️", "name": "⊛ man mage: medium-dark skin tone" }, { "no": 557, "code": "1F9D9 1F3FF 200D 2642 FE0F", "char": "🧙🏿‍♂️", "name": "⊛ man mage: dark skin tone" }, { "no": 558, "code": "1F9DA", "char": "🧚", "name": "⊛ fairy" }, { "no": 559, "code": "1F9DA 1F3FB", "char": "🧚🏻", "name": "⊛ fairy: light skin tone" }, { "no": 560, "code": "1F9DA 1F3FC", "char": "🧚🏼", "name": "⊛ fairy: medium-light skin tone" }, { "no": 561, "code": "1F9DA 1F3FD", "char": "🧚🏽", "name": "⊛ fairy: medium skin tone" }, { "no": 562, "code": "1F9DA 1F3FE", "char": "🧚🏾", "name": "⊛ fairy: medium-dark skin tone" }, { "no": 563, "code": "1F9DA 1F3FF", "char": "🧚🏿", "name": "⊛ fairy: dark skin tone" }, { "no": 564, "code": "1F9DA 200D 2640 FE0F", "char": "🧚‍♀️", "name": "⊛ woman fairy" }, { "no": 565, "code": "1F9DA 1F3FB 200D 2640 FE0F", "char": "🧚🏻‍♀️", "name": "⊛ woman fairy: light skin tone" }, { "no": 566, "code": "1F9DA 1F3FC 200D 2640 FE0F", "char": "🧚🏼‍♀️", "name": "⊛ woman fairy: medium-light skin tone" }, { "no": 567, "code": "1F9DA 1F3FD 200D 2640 FE0F", "char": "🧚🏽‍♀️", "name": "⊛ woman fairy: medium skin tone" }, { "no": 568, "code": "1F9DA 1F3FE 200D 2640 FE0F", "char": "🧚🏾‍♀️", "name": "⊛ woman fairy: medium-dark skin tone" }, { "no": 569, "code": "1F9DA 1F3FF 200D 2640 FE0F", "char": "🧚🏿‍♀️", "name": "⊛ woman fairy: dark skin tone" }, { "no": 570, "code": "1F9DA 200D 2642 FE0F", "char": "🧚‍♂️", "name": "⊛ man fairy" }, { "no": 571, "code": "1F9DA 1F3FB 200D 2642 FE0F", "char": "🧚🏻‍♂️", "name": "⊛ man fairy: light skin tone" }, { "no": 572, "code": "1F9DA 1F3FC 200D 2642 FE0F", "char": "🧚🏼‍♂️", "name": "⊛ man fairy: medium-light skin tone" }, { "no": 573, "code": "1F9DA 1F3FD 200D 2642 FE0F", "char": "🧚🏽‍♂️", "name": "⊛ man fairy: medium skin tone" }, { "no": 574, "code": "1F9DA 1F3FE 200D 2642 FE0F", "char": "🧚🏾‍♂️", "name": "⊛ man fairy: medium-dark skin tone" }, { "no": 575, "code": "1F9DA 1F3FF 200D 2642 FE0F", "char": "🧚🏿‍♂️", "name": "⊛ man fairy: dark skin tone" }, { "no": 576, "code": "1F9DB", "char": "🧛", "name": "⊛ vampire" }, { "no": 577, "code": "1F9DB 1F3FB", "char": "🧛🏻", "name": "⊛ vampire: light skin tone" }, { "no": 578, "code": "1F9DB 1F3FC", "char": "🧛🏼", "name": "⊛ vampire: medium-light skin tone" }, { "no": 579, "code": "1F9DB 1F3FD", "char": "🧛🏽", "name": "⊛ vampire: medium skin tone" }, { "no": 580, "code": "1F9DB 1F3FE", "char": "🧛🏾", "name": "⊛ vampire: medium-dark skin tone" }, { "no": 581, "code": "1F9DB 1F3FF", "char": "🧛🏿", "name": "⊛ vampire: dark skin tone" }, { "no": 582, "code": "1F9DB 200D 2640 FE0F", "char": "🧛‍♀️", "name": "⊛ woman vampire" }, { "no": 583, "code": "1F9DB 1F3FB 200D 2640 FE0F", "char": "🧛🏻‍♀️", "name": "⊛ woman vampire: light skin tone" }, { "no": 584, "code": "1F9DB 1F3FC 200D 2640 FE0F", "char": "🧛🏼‍♀️", "name": "⊛ woman vampire: medium-light skin tone" }, { "no": 585, "code": "1F9DB 1F3FD 200D 2640 FE0F", "char": "🧛🏽‍♀️", "name": "⊛ woman vampire: medium skin tone" }, { "no": 586, "code": "1F9DB 1F3FE 200D 2640 FE0F", "char": "🧛🏾‍♀️", "name": "⊛ woman vampire: medium-dark skin tone" }, { "no": 587, "code": "1F9DB 1F3FF 200D 2640 FE0F", "char": "🧛🏿‍♀️", "name": "⊛ woman vampire: dark skin tone" }, { "no": 588, "code": "1F9DB 200D 2642 FE0F", "char": "🧛‍♂️", "name": "⊛ man vampire" }, { "no": 589, "code": "1F9DB 1F3FB 200D 2642 FE0F", "char": "🧛🏻‍♂️", "name": "⊛ man vampire: light skin tone" }, { "no": 590, "code": "1F9DB 1F3FC 200D 2642 FE0F", "char": "🧛🏼‍♂️", "name": "⊛ man vampire: medium-light skin tone" }, { "no": 591, "code": "1F9DB 1F3FD 200D 2642 FE0F", "char": "🧛🏽‍♂️", "name": "⊛ man vampire: medium skin tone" }, { "no": 592, "code": "1F9DB 1F3FE 200D 2642 FE0F", "char": "🧛🏾‍♂️", "name": "⊛ man vampire: medium-dark skin tone" }, { "no": 593, "code": "1F9DB 1F3FF 200D 2642 FE0F", "char": "🧛🏿‍♂️", "name": "⊛ man vampire: dark skin tone" }, { "no": 594, "code": "1F9DC", "char": "🧜", "name": "⊛ merperson" }, { "no": 595, "code": "1F9DC 1F3FB", "char": "🧜🏻", "name": "⊛ merperson: light skin tone" }, { "no": 596, "code": "1F9DC 1F3FC", "char": "🧜🏼", "name": "⊛ merperson: medium-light skin tone" }, { "no": 597, "code": "1F9DC 1F3FD", "char": "🧜🏽", "name": "⊛ merperson: medium skin tone" }, { "no": 598, "code": "1F9DC 1F3FE", "char": "🧜🏾", "name": "⊛ merperson: medium-dark skin tone" }, { "no": 599, "code": "1F9DC 1F3FF", "char": "🧜🏿", "name": "⊛ merperson: dark skin tone" }, { "no": 600, "code": "1F9DC 200D 2640 FE0F", "char": "🧜‍♀️", "name": "⊛ mermaid" }, { "no": 601, "code": "1F9DC 1F3FB 200D 2640 FE0F", "char": "🧜🏻‍♀️", "name": "⊛ mermaid: light skin tone" }, { "no": 602, "code": "1F9DC 1F3FC 200D 2640 FE0F", "char": "🧜🏼‍♀️", "name": "⊛ mermaid: medium-light skin tone" }, { "no": 603, "code": "1F9DC 1F3FD 200D 2640 FE0F", "char": "🧜🏽‍♀️", "name": "⊛ mermaid: medium skin tone" }, { "no": 604, "code": "1F9DC 1F3FE 200D 2640 FE0F", "char": "🧜🏾‍♀️", "name": "⊛ mermaid: medium-dark skin tone" }, { "no": 605, "code": "1F9DC 1F3FF 200D 2640 FE0F", "char": "🧜🏿‍♀️", "name": "⊛ mermaid: dark skin tone" }, { "no": 606, "code": "1F9DC 200D 2642 FE0F", "char": "🧜‍♂️", "name": "⊛ merman" }, { "no": 607, "code": "1F9DC 1F3FB 200D 2642 FE0F", "char": "🧜🏻‍♂️", "name": "⊛ merman: light skin tone" }, { "no": 608, "code": "1F9DC 1F3FC 200D 2642 FE0F", "char": "🧜🏼‍♂️", "name": "⊛ merman: medium-light skin tone" }, { "no": 609, "code": "1F9DC 1F3FD 200D 2642 FE0F", "char": "🧜🏽‍♂️", "name": "⊛ merman: medium skin tone" }, { "no": 610, "code": "1F9DC 1F3FE 200D 2642 FE0F", "char": "🧜🏾‍♂️", "name": "⊛ merman: medium-dark skin tone" }, { "no": 611, "code": "1F9DC 1F3FF 200D 2642 FE0F", "char": "🧜🏿‍♂️", "name": "⊛ merman: dark skin tone" }, { "no": 612, "code": "1F9DD", "char": "🧝", "name": "⊛ elf" }, { "no": 613, "code": "1F9DD 1F3FB", "char": "🧝🏻", "name": "⊛ elf: light skin tone" }, { "no": 614, "code": "1F9DD 1F3FC", "char": "🧝🏼", "name": "⊛ elf: medium-light skin tone" }, { "no": 615, "code": "1F9DD 1F3FD", "char": "🧝🏽", "name": "⊛ elf: medium skin tone" }, { "no": 616, "code": "1F9DD 1F3FE", "char": "🧝🏾", "name": "⊛ elf: medium-dark skin tone" }, { "no": 617, "code": "1F9DD 1F3FF", "char": "🧝🏿", "name": "⊛ elf: dark skin tone" }, { "no": 618, "code": "1F9DD 200D 2640 FE0F", "char": "🧝‍♀️", "name": "⊛ woman elf" }, { "no": 619, "code": "1F9DD 1F3FB 200D 2640 FE0F", "char": "🧝🏻‍♀️", "name": "⊛ woman elf: light skin tone" }, { "no": 620, "code": "1F9DD 1F3FC 200D 2640 FE0F", "char": "🧝🏼‍♀️", "name": "⊛ woman elf: medium-light skin tone" }, { "no": 621, "code": "1F9DD 1F3FD 200D 2640 FE0F", "char": "🧝🏽‍♀️", "name": "⊛ woman elf: medium skin tone" }, { "no": 622, "code": "1F9DD 1F3FE 200D 2640 FE0F", "char": "🧝🏾‍♀️", "name": "⊛ woman elf: medium-dark skin tone" }, { "no": 623, "code": "1F9DD 1F3FF 200D 2640 FE0F", "char": "🧝🏿‍♀️", "name": "⊛ woman elf: dark skin tone" }, { "no": 624, "code": "1F9DD 200D 2642 FE0F", "char": "🧝‍♂️", "name": "⊛ man elf" }, { "no": 625, "code": "1F9DD 1F3FB 200D 2642 FE0F", "char": "🧝🏻‍♂️", "name": "⊛ man elf: light skin tone" }, { "no": 626, "code": "1F9DD 1F3FC 200D 2642 FE0F", "char": "🧝🏼‍♂️", "name": "⊛ man elf: medium-light skin tone" }, { "no": 627, "code": "1F9DD 1F3FD 200D 2642 FE0F", "char": "🧝🏽‍♂️", "name": "⊛ man elf: medium skin tone" }, { "no": 628, "code": "1F9DD 1F3FE 200D 2642 FE0F", "char": "🧝🏾‍♂️", "name": "⊛ man elf: medium-dark skin tone" }, { "no": 629, "code": "1F9DD 1F3FF 200D 2642 FE0F", "char": "🧝🏿‍♂️", "name": "⊛ man elf: dark skin tone" }, { "no": 630, "code": "1F9DE", "char": "🧞", "name": "⊛ genie" }, { "no": 631, "code": "1F9DE 200D 2640 FE0F", "char": "🧞‍♀️", "name": "⊛ woman genie" }, { "no": 632, "code": "1F9DE 200D 2642 FE0F", "char": "🧞‍♂️", "name": "⊛ man genie" }, { "no": 633, "code": "1F9DF", "char": "🧟", "name": "⊛ zombie" }, { "no": 634, "code": "1F9DF 200D 2640 FE0F", "char": "🧟‍♀️", "name": "⊛ woman zombie" }, { "no": 635, "code": "1F9DF 200D 2642 FE0F", "char": "🧟‍♂️", "name": "⊛ man zombie" }, { "no": 636, "code": "1F64D", "char": "🙍", "name": "person frowning" }, { "no": 637, "code": "1F64D 1F3FB", "char": "🙍🏻", "name": "person frowning: light skin tone" }, { "no": 638, "code": "1F64D 1F3FC", "char": "🙍🏼", "name": "person frowning: medium-light skin tone" }, { "no": 639, "code": "1F64D 1F3FD", "char": "🙍🏽", "name": "person frowning: medium skin tone" }, { "no": 640, "code": "1F64D 1F3FE", "char": "🙍🏾", "name": "person frowning: medium-dark skin tone" }, { "no": 641, "code": "1F64D 1F3FF", "char": "🙍🏿", "name": "person frowning: dark skin tone" }, { "no": 642, "code": "1F64D 200D 2642 FE0F", "char": "🙍‍♂️", "name": "man frowning" }, { "no": 643, "code": "1F64D 1F3FB 200D 2642 FE0F", "char": "🙍🏻‍♂️", "name": "man frowning: light skin tone" }, { "no": 644, "code": "1F64D 1F3FC 200D 2642 FE0F", "char": "🙍🏼‍♂️", "name": "man frowning: medium-light skin tone" }, { "no": 645, "code": "1F64D 1F3FD 200D 2642 FE0F", "char": "🙍🏽‍♂️", "name": "man frowning: medium skin tone" }, { "no": 646, "code": "1F64D 1F3FE 200D 2642 FE0F", "char": "🙍🏾‍♂️", "name": "man frowning: medium-dark skin tone" }, { "no": 647, "code": "1F64D 1F3FF 200D 2642 FE0F", "char": "🙍🏿‍♂️", "name": "man frowning: dark skin tone" }, { "no": 648, "code": "1F64D 200D 2640 FE0F", "char": "🙍‍♀️", "name": "woman frowning" }, { "no": 649, "code": "1F64D 1F3FB 200D 2640 FE0F", "char": "🙍🏻‍♀️", "name": "woman frowning: light skin tone" }, { "no": 650, "code": "1F64D 1F3FC 200D 2640 FE0F", "char": "🙍🏼‍♀️", "name": "woman frowning: medium-light skin tone" }, { "no": 651, "code": "1F64D 1F3FD 200D 2640 FE0F", "char": "🙍🏽‍♀️", "name": "woman frowning: medium skin tone" }, { "no": 652, "code": "1F64D 1F3FE 200D 2640 FE0F", "char": "🙍🏾‍♀️", "name": "woman frowning: medium-dark skin tone" }, { "no": 653, "code": "1F64D 1F3FF 200D 2640 FE0F", "char": "🙍🏿‍♀️", "name": "woman frowning: dark skin tone" }, { "no": 654, "code": "1F64E", "char": "🙎", "name": "person pouting" }, { "no": 655, "code": "1F64E 1F3FB", "char": "🙎🏻", "name": "person pouting: light skin tone" }, { "no": 656, "code": "1F64E 1F3FC", "char": "🙎🏼", "name": "person pouting: medium-light skin tone" }, { "no": 657, "code": "1F64E 1F3FD", "char": "🙎🏽", "name": "person pouting: medium skin tone" }, { "no": 658, "code": "1F64E 1F3FE", "char": "🙎🏾", "name": "person pouting: medium-dark skin tone" }, { "no": 659, "code": "1F64E 1F3FF", "char": "🙎🏿", "name": "person pouting: dark skin tone" }, { "no": 660, "code": "1F64E 200D 2642 FE0F", "char": "🙎‍♂️", "name": "man pouting" }, { "no": 661, "code": "1F64E 1F3FB 200D 2642 FE0F", "char": "🙎🏻‍♂️", "name": "man pouting: light skin tone" }, { "no": 662, "code": "1F64E 1F3FC 200D 2642 FE0F", "char": "🙎🏼‍♂️", "name": "man pouting: medium-light skin tone" }, { "no": 663, "code": "1F64E 1F3FD 200D 2642 FE0F", "char": "🙎🏽‍♂️", "name": "man pouting: medium skin tone" }, { "no": 664, "code": "1F64E 1F3FE 200D 2642 FE0F", "char": "🙎🏾‍♂️", "name": "man pouting: medium-dark skin tone" }, { "no": 665, "code": "1F64E 1F3FF 200D 2642 FE0F", "char": "🙎🏿‍♂️", "name": "man pouting: dark skin tone" }, { "no": 666, "code": "1F64E 200D 2640 FE0F", "char": "🙎‍♀️", "name": "woman pouting" }, { "no": 667, "code": "1F64E 1F3FB 200D 2640 FE0F", "char": "🙎🏻‍♀️", "name": "woman pouting: light skin tone" }, { "no": 668, "code": "1F64E 1F3FC 200D 2640 FE0F", "char": "🙎🏼‍♀️", "name": "woman pouting: medium-light skin tone" }, { "no": 669, "code": "1F64E 1F3FD 200D 2640 FE0F", "char": "🙎🏽‍♀️", "name": "woman pouting: medium skin tone" }, { "no": 670, "code": "1F64E 1F3FE 200D 2640 FE0F", "char": "🙎🏾‍♀️", "name": "woman pouting: medium-dark skin tone" }, { "no": 671, "code": "1F64E 1F3FF 200D 2640 FE0F", "char": "🙎🏿‍♀️", "name": "woman pouting: dark skin tone" }, { "no": 672, "code": "1F645", "char": "🙅", "name": "person gesturing NO" }, { "no": 673, "code": "1F645 1F3FB", "char": "🙅🏻", "name": "person gesturing NO: light skin tone" }, { "no": 674, "code": "1F645 1F3FC", "char": "🙅🏼", "name": "person gesturing NO: medium-light skin tone" }, { "no": 675, "code": "1F645 1F3FD", "char": "🙅🏽", "name": "person gesturing NO: medium skin tone" }, { "no": 676, "code": "1F645 1F3FE", "char": "🙅🏾", "name": "person gesturing NO: medium-dark skin tone" }, { "no": 677, "code": "1F645 1F3FF", "char": "🙅🏿", "name": "person gesturing NO: dark skin tone" }, { "no": 678, "code": "1F645 200D 2642 FE0F", "char": "🙅‍♂️", "name": "man gesturing NO" }, { "no": 679, "code": "1F645 1F3FB 200D 2642 FE0F", "char": "🙅🏻‍♂️", "name": "man gesturing NO: light skin tone" }, { "no": 680, "code": "1F645 1F3FC 200D 2642 FE0F", "char": "🙅🏼‍♂️", "name": "man gesturing NO: medium-light skin tone" }, { "no": 681, "code": "1F645 1F3FD 200D 2642 FE0F", "char": "🙅🏽‍♂️", "name": "man gesturing NO: medium skin tone" }, { "no": 682, "code": "1F645 1F3FE 200D 2642 FE0F", "char": "🙅🏾‍♂️", "name": "man gesturing NO: medium-dark skin tone" }, { "no": 683, "code": "1F645 1F3FF 200D 2642 FE0F", "char": "🙅🏿‍♂️", "name": "man gesturing NO: dark skin tone" }, { "no": 684, "code": "1F645 200D 2640 FE0F", "char": "🙅‍♀️", "name": "woman gesturing NO" }, { "no": 685, "code": "1F645 1F3FB 200D 2640 FE0F", "char": "🙅🏻‍♀️", "name": "woman gesturing NO: light skin tone" }, { "no": 686, "code": "1F645 1F3FC 200D 2640 FE0F", "char": "🙅🏼‍♀️", "name": "woman gesturing NO: medium-light skin tone" }, { "no": 687, "code": "1F645 1F3FD 200D 2640 FE0F", "char": "🙅🏽‍♀️", "name": "woman gesturing NO: medium skin tone" }, { "no": 688, "code": "1F645 1F3FE 200D 2640 FE0F", "char": "🙅🏾‍♀️", "name": "woman gesturing NO: medium-dark skin tone" }, { "no": 689, "code": "1F645 1F3FF 200D 2640 FE0F", "char": "🙅🏿‍♀️", "name": "woman gesturing NO: dark skin tone" }, { "no": 690, "code": "1F646", "char": "🙆", "name": "person gesturing OK" }, { "no": 691, "code": "1F646 1F3FB", "char": "🙆🏻", "name": "person gesturing OK: light skin tone" }, { "no": 692, "code": "1F646 1F3FC", "char": "🙆🏼", "name": "person gesturing OK: medium-light skin tone" }, { "no": 693, "code": "1F646 1F3FD", "char": "🙆🏽", "name": "person gesturing OK: medium skin tone" }, { "no": 694, "code": "1F646 1F3FE", "char": "🙆🏾", "name": "person gesturing OK: medium-dark skin tone" }, { "no": 695, "code": "1F646 1F3FF", "char": "🙆🏿", "name": "person gesturing OK: dark skin tone" }, { "no": 696, "code": "1F646 200D 2642 FE0F", "char": "🙆‍♂️", "name": "man gesturing OK" }, { "no": 697, "code": "1F646 1F3FB 200D 2642 FE0F", "char": "🙆🏻‍♂️", "name": "man gesturing OK: light skin tone" }, { "no": 698, "code": "1F646 1F3FC 200D 2642 FE0F", "char": "🙆🏼‍♂️", "name": "man gesturing OK: medium-light skin tone" }, { "no": 699, "code": "1F646 1F3FD 200D 2642 FE0F", "char": "🙆🏽‍♂️", "name": "man gesturing OK: medium skin tone" }, { "no": 700, "code": "1F646 1F3FE 200D 2642 FE0F", "char": "🙆🏾‍♂️", "name": "man gesturing OK: medium-dark skin tone" }, { "no": 701, "code": "1F646 1F3FF 200D 2642 FE0F", "char": "🙆🏿‍♂️", "name": "man gesturing OK: dark skin tone" }, { "no": 702, "code": "1F646 200D 2640 FE0F", "char": "🙆‍♀️", "name": "woman gesturing OK" }, { "no": 703, "code": "1F646 1F3FB 200D 2640 FE0F", "char": "🙆🏻‍♀️", "name": "woman gesturing OK: light skin tone" }, { "no": 704, "code": "1F646 1F3FC 200D 2640 FE0F", "char": "🙆🏼‍♀️", "name": "woman gesturing OK: medium-light skin tone" }, { "no": 705, "code": "1F646 1F3FD 200D 2640 FE0F", "char": "🙆🏽‍♀️", "name": "woman gesturing OK: medium skin tone" }, { "no": 706, "code": "1F646 1F3FE 200D 2640 FE0F", "char": "🙆🏾‍♀️", "name": "woman gesturing OK: medium-dark skin tone" }, { "no": 707, "code": "1F646 1F3FF 200D 2640 FE0F", "char": "🙆🏿‍♀️", "name": "woman gesturing OK: dark skin tone" }, { "no": 708, "code": "1F481", "char": "💁", "name": "person tipping hand" }, { "no": 709, "code": "1F481 1F3FB", "char": "💁🏻", "name": "person tipping hand: light skin tone" }, { "no": 710, "code": "1F481 1F3FC", "char": "💁🏼", "name": "person tipping hand: medium-light skin tone" }, { "no": 711, "code": "1F481 1F3FD", "char": "💁🏽", "name": "person tipping hand: medium skin tone" }, { "no": 712, "code": "1F481 1F3FE", "char": "💁🏾", "name": "person tipping hand: medium-dark skin tone" }, { "no": 713, "code": "1F481 1F3FF", "char": "💁🏿", "name": "person tipping hand: dark skin tone" }, { "no": 714, "code": "1F481 200D 2642 FE0F", "char": "💁‍♂️", "name": "man tipping hand" }, { "no": 715, "code": "1F481 1F3FB 200D 2642 FE0F", "char": "💁🏻‍♂️", "name": "man tipping hand: light skin tone" }, { "no": 716, "code": "1F481 1F3FC 200D 2642 FE0F", "char": "💁🏼‍♂️", "name": "man tipping hand: medium-light skin tone" }, { "no": 717, "code": "1F481 1F3FD 200D 2642 FE0F", "char": "💁🏽‍♂️", "name": "man tipping hand: medium skin tone" }, { "no": 718, "code": "1F481 1F3FE 200D 2642 FE0F", "char": "💁🏾‍♂️", "name": "man tipping hand: medium-dark skin tone" }, { "no": 719, "code": "1F481 1F3FF 200D 2642 FE0F", "char": "💁🏿‍♂️", "name": "man tipping hand: dark skin tone" }, { "no": 720, "code": "1F481 200D 2640 FE0F", "char": "💁‍♀️", "name": "woman tipping hand" }, { "no": 721, "code": "1F481 1F3FB 200D 2640 FE0F", "char": "💁🏻‍♀️", "name": "woman tipping hand: light skin tone" }, { "no": 722, "code": "1F481 1F3FC 200D 2640 FE0F", "char": "💁🏼‍♀️", "name": "woman tipping hand: medium-light skin tone" }, { "no": 723, "code": "1F481 1F3FD 200D 2640 FE0F", "char": "💁🏽‍♀️", "name": "woman tipping hand: medium skin tone" }, { "no": 724, "code": "1F481 1F3FE 200D 2640 FE0F", "char": "💁🏾‍♀️", "name": "woman tipping hand: medium-dark skin tone" }, { "no": 725, "code": "1F481 1F3FF 200D 2640 FE0F", "char": "💁🏿‍♀️", "name": "woman tipping hand: dark skin tone" }, { "no": 726, "code": "1F64B", "char": "🙋", "name": "person raising hand" }, { "no": 727, "code": "1F64B 1F3FB", "char": "🙋🏻", "name": "person raising hand: light skin tone" }, { "no": 728, "code": "1F64B 1F3FC", "char": "🙋🏼", "name": "person raising hand: medium-light skin tone" }, { "no": 729, "code": "1F64B 1F3FD", "char": "🙋🏽", "name": "person raising hand: medium skin tone" }, { "no": 730, "code": "1F64B 1F3FE", "char": "🙋🏾", "name": "person raising hand: medium-dark skin tone" }, { "no": 731, "code": "1F64B 1F3FF", "char": "🙋🏿", "name": "person raising hand: dark skin tone" }, { "no": 732, "code": "1F64B 200D 2642 FE0F", "char": "🙋‍♂️", "name": "man raising hand" }, { "no": 733, "code": "1F64B 1F3FB 200D 2642 FE0F", "char": "🙋🏻‍♂️", "name": "man raising hand: light skin tone" }, { "no": 734, "code": "1F64B 1F3FC 200D 2642 FE0F", "char": "🙋🏼‍♂️", "name": "man raising hand: medium-light skin tone" }, { "no": 735, "code": "1F64B 1F3FD 200D 2642 FE0F", "char": "🙋🏽‍♂️", "name": "man raising hand: medium skin tone" }, { "no": 736, "code": "1F64B 1F3FE 200D 2642 FE0F", "char": "🙋🏾‍♂️", "name": "man raising hand: medium-dark skin tone" }, { "no": 737, "code": "1F64B 1F3FF 200D 2642 FE0F", "char": "🙋🏿‍♂️", "name": "man raising hand: dark skin tone" }, { "no": 738, "code": "1F64B 200D 2640 FE0F", "char": "🙋‍♀️", "name": "woman raising hand" }, { "no": 739, "code": "1F64B 1F3FB 200D 2640 FE0F", "char": "🙋🏻‍♀️", "name": "woman raising hand: light skin tone" }, { "no": 740, "code": "1F64B 1F3FC 200D 2640 FE0F", "char": "🙋🏼‍♀️", "name": "woman raising hand: medium-light skin tone" }, { "no": 741, "code": "1F64B 1F3FD 200D 2640 FE0F", "char": "🙋🏽‍♀️", "name": "woman raising hand: medium skin tone" }, { "no": 742, "code": "1F64B 1F3FE 200D 2640 FE0F", "char": "🙋🏾‍♀️", "name": "woman raising hand: medium-dark skin tone" }, { "no": 743, "code": "1F64B 1F3FF 200D 2640 FE0F", "char": "🙋🏿‍♀️", "name": "woman raising hand: dark skin tone" }, { "no": 744, "code": "1F647", "char": "🙇", "name": "person bowing" }, { "no": 745, "code": "1F647 1F3FB", "char": "🙇🏻", "name": "person bowing: light skin tone" }, { "no": 746, "code": "1F647 1F3FC", "char": "🙇🏼", "name": "person bowing: medium-light skin tone" }, { "no": 747, "code": "1F647 1F3FD", "char": "🙇🏽", "name": "person bowing: medium skin tone" }, { "no": 748, "code": "1F647 1F3FE", "char": "🙇🏾", "name": "person bowing: medium-dark skin tone" }, { "no": 749, "code": "1F647 1F3FF", "char": "🙇🏿", "name": "person bowing: dark skin tone" }, { "no": 750, "code": "1F647 200D 2642 FE0F", "char": "🙇‍♂️", "name": "man bowing" }, { "no": 751, "code": "1F647 1F3FB 200D 2642 FE0F", "char": "🙇🏻‍♂️", "name": "man bowing: light skin tone" }, { "no": 752, "code": "1F647 1F3FC 200D 2642 FE0F", "char": "🙇🏼‍♂️", "name": "man bowing: medium-light skin tone" }, { "no": 753, "code": "1F647 1F3FD 200D 2642 FE0F", "char": "🙇🏽‍♂️", "name": "man bowing: medium skin tone" }, { "no": 754, "code": "1F647 1F3FE 200D 2642 FE0F", "char": "🙇🏾‍♂️", "name": "man bowing: medium-dark skin tone" }, { "no": 755, "code": "1F647 1F3FF 200D 2642 FE0F", "char": "🙇🏿‍♂️", "name": "man bowing: dark skin tone" }, { "no": 756, "code": "1F647 200D 2640 FE0F", "char": "🙇‍♀️", "name": "woman bowing" }, { "no": 757, "code": "1F647 1F3FB 200D 2640 FE0F", "char": "🙇🏻‍♀️", "name": "woman bowing: light skin tone" }, { "no": 758, "code": "1F647 1F3FC 200D 2640 FE0F", "char": "🙇🏼‍♀️", "name": "woman bowing: medium-light skin tone" }, { "no": 759, "code": "1F647 1F3FD 200D 2640 FE0F", "char": "🙇🏽‍♀️", "name": "woman bowing: medium skin tone" }, { "no": 760, "code": "1F647 1F3FE 200D 2640 FE0F", "char": "🙇🏾‍♀️", "name": "woman bowing: medium-dark skin tone" }, { "no": 761, "code": "1F647 1F3FF 200D 2640 FE0F", "char": "🙇🏿‍♀️", "name": "woman bowing: dark skin tone" }, { "no": 762, "code": "1F926", "char": "🤦", "name": "person facepalming" }, { "no": 763, "code": "1F926 1F3FB", "char": "🤦🏻", "name": "person facepalming: light skin tone" }, { "no": 764, "code": "1F926 1F3FC", "char": "🤦🏼", "name": "person facepalming: medium-light skin tone" }, { "no": 765, "code": "1F926 1F3FD", "char": "🤦🏽", "name": "person facepalming: medium skin tone" }, { "no": 766, "code": "1F926 1F3FE", "char": "🤦🏾", "name": "person facepalming: medium-dark skin tone" }, { "no": 767, "code": "1F926 1F3FF", "char": "🤦🏿", "name": "person facepalming: dark skin tone" }, { "no": 768, "code": "1F926 200D 2642 FE0F", "char": "🤦‍♂️", "name": "man facepalming" }, { "no": 769, "code": "1F926 1F3FB 200D 2642 FE0F", "char": "🤦🏻‍♂️", "name": "man facepalming: light skin tone" }, { "no": 770, "code": "1F926 1F3FC 200D 2642 FE0F", "char": "🤦🏼‍♂️", "name": "man facepalming: medium-light skin tone" }, { "no": 771, "code": "1F926 1F3FD 200D 2642 FE0F", "char": "🤦🏽‍♂️", "name": "man facepalming: medium skin tone" }, { "no": 772, "code": "1F926 1F3FE 200D 2642 FE0F", "char": "🤦🏾‍♂️", "name": "man facepalming: medium-dark skin tone" }, { "no": 773, "code": "1F926 1F3FF 200D 2642 FE0F", "char": "🤦🏿‍♂️", "name": "man facepalming: dark skin tone" }, { "no": 774, "code": "1F926 200D 2640 FE0F", "char": "🤦‍♀️", "name": "woman facepalming" }, { "no": 775, "code": "1F926 1F3FB 200D 2640 FE0F", "char": "🤦🏻‍♀️", "name": "woman facepalming: light skin tone" }, { "no": 776, "code": "1F926 1F3FC 200D 2640 FE0F", "char": "🤦🏼‍♀️", "name": "woman facepalming: medium-light skin tone" }, { "no": 777, "code": "1F926 1F3FD 200D 2640 FE0F", "char": "🤦🏽‍♀️", "name": "woman facepalming: medium skin tone" }, { "no": 778, "code": "1F926 1F3FE 200D 2640 FE0F", "char": "🤦🏾‍♀️", "name": "woman facepalming: medium-dark skin tone" }, { "no": 779, "code": "1F926 1F3FF 200D 2640 FE0F", "char": "🤦🏿‍♀️", "name": "woman facepalming: dark skin tone" }, { "no": 780, "code": "1F937", "char": "🤷", "name": "person shrugging" }, { "no": 781, "code": "1F937 1F3FB", "char": "🤷🏻", "name": "person shrugging: light skin tone" }, { "no": 782, "code": "1F937 1F3FC", "char": "🤷🏼", "name": "person shrugging: medium-light skin tone" }, { "no": 783, "code": "1F937 1F3FD", "char": "🤷🏽", "name": "person shrugging: medium skin tone" }, { "no": 784, "code": "1F937 1F3FE", "char": "🤷🏾", "name": "person shrugging: medium-dark skin tone" }, { "no": 785, "code": "1F937 1F3FF", "char": "🤷🏿", "name": "person shrugging: dark skin tone" }, { "no": 786, "code": "1F937 200D 2642 FE0F", "char": "🤷‍♂️", "name": "man shrugging" }, { "no": 787, "code": "1F937 1F3FB 200D 2642 FE0F", "char": "🤷🏻‍♂️", "name": "man shrugging: light skin tone" }, { "no": 788, "code": "1F937 1F3FC 200D 2642 FE0F", "char": "🤷🏼‍♂️", "name": "man shrugging: medium-light skin tone" }, { "no": 789, "code": "1F937 1F3FD 200D 2642 FE0F", "char": "🤷🏽‍♂️", "name": "man shrugging: medium skin tone" }, { "no": 790, "code": "1F937 1F3FE 200D 2642 FE0F", "char": "🤷🏾‍♂️", "name": "man shrugging: medium-dark skin tone" }, { "no": 791, "code": "1F937 1F3FF 200D 2642 FE0F", "char": "🤷🏿‍♂️", "name": "man shrugging: dark skin tone" }, { "no": 792, "code": "1F937 200D 2640 FE0F", "char": "🤷‍♀️", "name": "woman shrugging" }, { "no": 793, "code": "1F937 1F3FB 200D 2640 FE0F", "char": "🤷🏻‍♀️", "name": "woman shrugging: light skin tone" }, { "no": 794, "code": "1F937 1F3FC 200D 2640 FE0F", "char": "🤷🏼‍♀️", "name": "woman shrugging: medium-light skin tone" }, { "no": 795, "code": "1F937 1F3FD 200D 2640 FE0F", "char": "🤷🏽‍♀️", "name": "woman shrugging: medium skin tone" }, { "no": 796, "code": "1F937 1F3FE 200D 2640 FE0F", "char": "🤷🏾‍♀️", "name": "woman shrugging: medium-dark skin tone" }, { "no": 797, "code": "1F937 1F3FF 200D 2640 FE0F", "char": "🤷🏿‍♀️", "name": "woman shrugging: dark skin tone" }, { "no": 798, "code": "1F486", "char": "💆", "name": "person getting massage" }, { "no": 799, "code": "1F486 1F3FB", "char": "💆🏻", "name": "person getting massage: light skin tone" }, { "no": 800, "code": "1F486 1F3FC", "char": "💆🏼", "name": "person getting massage: medium-light skin tone" }, { "no": 801, "code": "1F486 1F3FD", "char": "💆🏽", "name": "person getting massage: medium skin tone" }, { "no": 802, "code": "1F486 1F3FE", "char": "💆🏾", "name": "person getting massage: medium-dark skin tone" }, { "no": 803, "code": "1F486 1F3FF", "char": "💆🏿", "name": "person getting massage: dark skin tone" }, { "no": 804, "code": "1F486 200D 2642 FE0F", "char": "💆‍♂️", "name": "man getting massage" }, { "no": 805, "code": "1F486 1F3FB 200D 2642 FE0F", "char": "💆🏻‍♂️", "name": "man getting massage: light skin tone" }, { "no": 806, "code": "1F486 1F3FC 200D 2642 FE0F", "char": "💆🏼‍♂️", "name": "man getting massage: medium-light skin tone" }, { "no": 807, "code": "1F486 1F3FD 200D 2642 FE0F", "char": "💆🏽‍♂️", "name": "man getting massage: medium skin tone" }, { "no": 808, "code": "1F486 1F3FE 200D 2642 FE0F", "char": "💆🏾‍♂️", "name": "man getting massage: medium-dark skin tone" }, { "no": 809, "code": "1F486 1F3FF 200D 2642 FE0F", "char": "💆🏿‍♂️", "name": "man getting massage: dark skin tone" }, { "no": 810, "code": "1F486 200D 2640 FE0F", "char": "💆‍♀️", "name": "woman getting massage" }, { "no": 811, "code": "1F486 1F3FB 200D 2640 FE0F", "char": "💆🏻‍♀️", "name": "woman getting massage: light skin tone" }, { "no": 812, "code": "1F486 1F3FC 200D 2640 FE0F", "char": "💆🏼‍♀️", "name": "woman getting massage: medium-light skin tone" }, { "no": 813, "code": "1F486 1F3FD 200D 2640 FE0F", "char": "💆🏽‍♀️", "name": "woman getting massage: medium skin tone" }, { "no": 814, "code": "1F486 1F3FE 200D 2640 FE0F", "char": "💆🏾‍♀️", "name": "woman getting massage: medium-dark skin tone" }, { "no": 815, "code": "1F486 1F3FF 200D 2640 FE0F", "char": "💆🏿‍♀️", "name": "woman getting massage: dark skin tone" }, { "no": 816, "code": "1F487", "char": "💇", "name": "person getting haircut" }, { "no": 817, "code": "1F487 1F3FB", "char": "💇🏻", "name": "person getting haircut: light skin tone" }, { "no": 818, "code": "1F487 1F3FC", "char": "💇🏼", "name": "person getting haircut: medium-light skin tone" }, { "no": 819, "code": "1F487 1F3FD", "char": "💇🏽", "name": "person getting haircut: medium skin tone" }, { "no": 820, "code": "1F487 1F3FE", "char": "💇🏾", "name": "person getting haircut: medium-dark skin tone" }, { "no": 821, "code": "1F487 1F3FF", "char": "💇🏿", "name": "person getting haircut: dark skin tone" }, { "no": 822, "code": "1F487 200D 2642 FE0F", "char": "💇‍♂️", "name": "man getting haircut" }, { "no": 823, "code": "1F487 1F3FB 200D 2642 FE0F", "char": "💇🏻‍♂️", "name": "man getting haircut: light skin tone" }, { "no": 824, "code": "1F487 1F3FC 200D 2642 FE0F", "char": "💇🏼‍♂️", "name": "man getting haircut: medium-light skin tone" }, { "no": 825, "code": "1F487 1F3FD 200D 2642 FE0F", "char": "💇🏽‍♂️", "name": "man getting haircut: medium skin tone" }, { "no": 826, "code": "1F487 1F3FE 200D 2642 FE0F", "char": "💇🏾‍♂️", "name": "man getting haircut: medium-dark skin tone" }, { "no": 827, "code": "1F487 1F3FF 200D 2642 FE0F", "char": "💇🏿‍♂️", "name": "man getting haircut: dark skin tone" }, { "no": 828, "code": "1F487 200D 2640 FE0F", "char": "💇‍♀️", "name": "woman getting haircut" }, { "no": 829, "code": "1F487 1F3FB 200D 2640 FE0F", "char": "💇🏻‍♀️", "name": "woman getting haircut: light skin tone" }, { "no": 830, "code": "1F487 1F3FC 200D 2640 FE0F", "char": "💇🏼‍♀️", "name": "woman getting haircut: medium-light skin tone" }, { "no": 831, "code": "1F487 1F3FD 200D 2640 FE0F", "char": "💇🏽‍♀️", "name": "woman getting haircut: medium skin tone" }, { "no": 832, "code": "1F487 1F3FE 200D 2640 FE0F", "char": "💇🏾‍♀️", "name": "woman getting haircut: medium-dark skin tone" }, { "no": 833, "code": "1F487 1F3FF 200D 2640 FE0F", "char": "💇🏿‍♀️", "name": "woman getting haircut: dark skin tone" }, { "no": 834, "code": "1F6B6", "char": "🚶", "name": "person walking" }, { "no": 835, "code": "1F6B6 1F3FB", "char": "🚶🏻", "name": "person walking: light skin tone" }, { "no": 836, "code": "1F6B6 1F3FC", "char": "🚶🏼", "name": "person walking: medium-light skin tone" }, { "no": 837, "code": "1F6B6 1F3FD", "char": "🚶🏽", "name": "person walking: medium skin tone" }, { "no": 838, "code": "1F6B6 1F3FE", "char": "🚶🏾", "name": "person walking: medium-dark skin tone" }, { "no": 839, "code": "1F6B6 1F3FF", "char": "🚶🏿", "name": "person walking: dark skin tone" }, { "no": 840, "code": "1F6B6 200D 2642 FE0F", "char": "🚶‍♂️", "name": "man walking" }, { "no": 841, "code": "1F6B6 1F3FB 200D 2642 FE0F", "char": "🚶🏻‍♂️", "name": "man walking: light skin tone" }, { "no": 842, "code": "1F6B6 1F3FC 200D 2642 FE0F", "char": "🚶🏼‍♂️", "name": "man walking: medium-light skin tone" }, { "no": 843, "code": "1F6B6 1F3FD 200D 2642 FE0F", "char": "🚶🏽‍♂️", "name": "man walking: medium skin tone" }, { "no": 844, "code": "1F6B6 1F3FE 200D 2642 FE0F", "char": "🚶🏾‍♂️", "name": "man walking: medium-dark skin tone" }, { "no": 845, "code": "1F6B6 1F3FF 200D 2642 FE0F", "char": "🚶🏿‍♂️", "name": "man walking: dark skin tone" }, { "no": 846, "code": "1F6B6 200D 2640 FE0F", "char": "🚶‍♀️", "name": "woman walking" }, { "no": 847, "code": "1F6B6 1F3FB 200D 2640 FE0F", "char": "🚶🏻‍♀️", "name": "woman walking: light skin tone" }, { "no": 848, "code": "1F6B6 1F3FC 200D 2640 FE0F", "char": "🚶🏼‍♀️", "name": "woman walking: medium-light skin tone" }, { "no": 849, "code": "1F6B6 1F3FD 200D 2640 FE0F", "char": "🚶🏽‍♀️", "name": "woman walking: medium skin tone" }, { "no": 850, "code": "1F6B6 1F3FE 200D 2640 FE0F", "char": "🚶🏾‍♀️", "name": "woman walking: medium-dark skin tone" }, { "no": 851, "code": "1F6B6 1F3FF 200D 2640 FE0F", "char": "🚶🏿‍♀️", "name": "woman walking: dark skin tone" }, { "no": 852, "code": "1F3C3", "char": "🏃", "name": "person running" }, { "no": 853, "code": "1F3C3 1F3FB", "char": "🏃🏻", "name": "person running: light skin tone" }, { "no": 854, "code": "1F3C3 1F3FC", "char": "🏃🏼", "name": "person running: medium-light skin tone" }, { "no": 855, "code": "1F3C3 1F3FD", "char": "🏃🏽", "name": "person running: medium skin tone" }, { "no": 856, "code": "1F3C3 1F3FE", "char": "🏃🏾", "name": "person running: medium-dark skin tone" }, { "no": 857, "code": "1F3C3 1F3FF", "char": "🏃🏿", "name": "person running: dark skin tone" }, { "no": 858, "code": "1F3C3 200D 2642 FE0F", "char": "🏃‍♂️", "name": "man running" }, { "no": 859, "code": "1F3C3 1F3FB 200D 2642 FE0F", "char": "🏃🏻‍♂️", "name": "man running: light skin tone" }, { "no": 860, "code": "1F3C3 1F3FC 200D 2642 FE0F", "char": "🏃🏼‍♂️", "name": "man running: medium-light skin tone" }, { "no": 861, "code": "1F3C3 1F3FD 200D 2642 FE0F", "char": "🏃🏽‍♂️", "name": "man running: medium skin tone" }, { "no": 862, "code": "1F3C3 1F3FE 200D 2642 FE0F", "char": "🏃🏾‍♂️", "name": "man running: medium-dark skin tone" }, { "no": 863, "code": "1F3C3 1F3FF 200D 2642 FE0F", "char": "🏃🏿‍♂️", "name": "man running: dark skin tone" }, { "no": 864, "code": "1F3C3 200D 2640 FE0F", "char": "🏃‍♀️", "name": "woman running" }, { "no": 865, "code": "1F3C3 1F3FB 200D 2640 FE0F", "char": "🏃🏻‍♀️", "name": "woman running: light skin tone" }, { "no": 866, "code": "1F3C3 1F3FC 200D 2640 FE0F", "char": "🏃🏼‍♀️", "name": "woman running: medium-light skin tone" }, { "no": 867, "code": "1F3C3 1F3FD 200D 2640 FE0F", "char": "🏃🏽‍♀️", "name": "woman running: medium skin tone" }, { "no": 868, "code": "1F3C3 1F3FE 200D 2640 FE0F", "char": "🏃🏾‍♀️", "name": "woman running: medium-dark skin tone" }, { "no": 869, "code": "1F3C3 1F3FF 200D 2640 FE0F", "char": "🏃🏿‍♀️", "name": "woman running: dark skin tone" }, { "no": 870, "code": "1F483", "char": "💃", "name": "woman dancing" }, { "no": 871, "code": "1F483 1F3FB", "char": "💃🏻", "name": "woman dancing: light skin tone" }, { "no": 872, "code": "1F483 1F3FC", "char": "💃🏼", "name": "woman dancing: medium-light skin tone" }, { "no": 873, "code": "1F483 1F3FD", "char": "💃🏽", "name": "woman dancing: medium skin tone" }, { "no": 874, "code": "1F483 1F3FE", "char": "💃🏾", "name": "woman dancing: medium-dark skin tone" }, { "no": 875, "code": "1F483 1F3FF", "char": "💃🏿", "name": "woman dancing: dark skin tone" }, { "no": 876, "code": "1F57A", "char": "🕺", "name": "man dancing" }, { "no": 877, "code": "1F57A 1F3FB", "char": "🕺🏻", "name": "man dancing: light skin tone" }, { "no": 878, "code": "1F57A 1F3FC", "char": "🕺🏼", "name": "man dancing: medium-light skin tone" }, { "no": 879, "code": "1F57A 1F3FD", "char": "🕺🏽", "name": "man dancing: medium skin tone" }, { "no": 880, "code": "1F57A 1F3FE", "char": "🕺🏾", "name": "man dancing: medium-dark skin tone" }, { "no": 881, "code": "1F57A 1F3FF", "char": "🕺🏿", "name": "man dancing: dark skin tone" }, { "no": 882, "code": "1F46F", "char": "👯", "name": "people with bunny ears" }, { "no": 883, "code": "1F46F 200D 2642 FE0F", "char": "👯‍♂️", "name": "men with bunny ears" }, { "no": 884, "code": "1F46F 200D 2640 FE0F", "char": "👯‍♀️", "name": "women with bunny ears" }, { "no": 885, "code": "1F9D6", "char": "🧖", "name": "⊛ person in steamy room" }, { "no": 886, "code": "1F9D6 1F3FB", "char": "🧖🏻", "name": "⊛ person in steamy room: light skin tone" }, { "no": 887, "code": "1F9D6 1F3FC", "char": "🧖🏼", "name": "⊛ person in steamy room: medium-light skin tone" }, { "no": 888, "code": "1F9D6 1F3FD", "char": "🧖🏽", "name": "⊛ person in steamy room: medium skin tone" }, { "no": 889, "code": "1F9D6 1F3FE", "char": "🧖🏾", "name": "⊛ person in steamy room: medium-dark skin tone" }, { "no": 890, "code": "1F9D6 1F3FF", "char": "🧖🏿", "name": "⊛ person in steamy room: dark skin tone" }, { "no": 891, "code": "1F9D6 200D 2640 FE0F", "char": "🧖‍♀️", "name": "⊛ woman in steamy room" }, { "no": 892, "code": "1F9D6 1F3FB 200D 2640 FE0F", "char": "🧖🏻‍♀️", "name": "⊛ woman in steamy room: light skin tone" }, { "no": 893, "code": "1F9D6 1F3FC 200D 2640 FE0F", "char": "🧖🏼‍♀️", "name": "⊛ woman in steamy room: medium-light skin tone" }, { "no": 894, "code": "1F9D6 1F3FD 200D 2640 FE0F", "char": "🧖🏽‍♀️", "name": "⊛ woman in steamy room: medium skin tone" }, { "no": 895, "code": "1F9D6 1F3FE 200D 2640 FE0F", "char": "🧖🏾‍♀️", "name": "⊛ woman in steamy room: medium-dark skin tone" }, { "no": 896, "code": "1F9D6 1F3FF 200D 2640 FE0F", "char": "🧖🏿‍♀️", "name": "⊛ woman in steamy room: dark skin tone" }, { "no": 897, "code": "1F9D6 200D 2642 FE0F", "char": "🧖‍♂️", "name": "⊛ man in steamy room" }, { "no": 898, "code": "1F9D6 1F3FB 200D 2642 FE0F", "char": "🧖🏻‍♂️", "name": "⊛ man in steamy room: light skin tone" }, { "no": 899, "code": "1F9D6 1F3FC 200D 2642 FE0F", "char": "🧖🏼‍♂️", "name": "⊛ man in steamy room: medium-light skin tone" }, { "no": 900, "code": "1F9D6 1F3FD 200D 2642 FE0F", "char": "🧖🏽‍♂️", "name": "⊛ man in steamy room: medium skin tone" }, { "no": 901, "code": "1F9D6 1F3FE 200D 2642 FE0F", "char": "🧖🏾‍♂️", "name": "⊛ man in steamy room: medium-dark skin tone" }, { "no": 902, "code": "1F9D6 1F3FF 200D 2642 FE0F", "char": "🧖🏿‍♂️", "name": "⊛ man in steamy room: dark skin tone" }, { "no": 903, "code": "1F9D7", "char": "🧗", "name": "⊛ person climbing" }, { "no": 904, "code": "1F9D7 1F3FB", "char": "🧗🏻", "name": "⊛ person climbing: light skin tone" }, { "no": 905, "code": "1F9D7 1F3FC", "char": "🧗🏼", "name": "⊛ person climbing: medium-light skin tone" }, { "no": 906, "code": "1F9D7 1F3FD", "char": "🧗🏽", "name": "⊛ person climbing: medium skin tone" }, { "no": 907, "code": "1F9D7 1F3FE", "char": "🧗🏾", "name": "⊛ person climbing: medium-dark skin tone" }, { "no": 908, "code": "1F9D7 1F3FF", "char": "🧗🏿", "name": "⊛ person climbing: dark skin tone" }, { "no": 909, "code": "1F9D7 200D 2640 FE0F", "char": "🧗‍♀️", "name": "⊛ woman climbing" }, { "no": 910, "code": "1F9D7 1F3FB 200D 2640 FE0F", "char": "🧗🏻‍♀️", "name": "⊛ woman climbing: light skin tone" }, { "no": 911, "code": "1F9D7 1F3FC 200D 2640 FE0F", "char": "🧗🏼‍♀️", "name": "⊛ woman climbing: medium-light skin tone" }, { "no": 912, "code": "1F9D7 1F3FD 200D 2640 FE0F", "char": "🧗🏽‍♀️", "name": "⊛ woman climbing: medium skin tone" }, { "no": 913, "code": "1F9D7 1F3FE 200D 2640 FE0F", "char": "🧗🏾‍♀️", "name": "⊛ woman climbing: medium-dark skin tone" }, { "no": 914, "code": "1F9D7 1F3FF 200D 2640 FE0F", "char": "🧗🏿‍♀️", "name": "⊛ woman climbing: dark skin tone" }, { "no": 915, "code": "1F9D7 200D 2642 FE0F", "char": "🧗‍♂️", "name": "⊛ man climbing" }, { "no": 916, "code": "1F9D7 1F3FB 200D 2642 FE0F", "char": "🧗🏻‍♂️", "name": "⊛ man climbing: light skin tone" }, { "no": 917, "code": "1F9D7 1F3FC 200D 2642 FE0F", "char": "🧗🏼‍♂️", "name": "⊛ man climbing: medium-light skin tone" }, { "no": 918, "code": "1F9D7 1F3FD 200D 2642 FE0F", "char": "🧗🏽‍♂️", "name": "⊛ man climbing: medium skin tone" }, { "no": 919, "code": "1F9D7 1F3FE 200D 2642 FE0F", "char": "🧗🏾‍♂️", "name": "⊛ man climbing: medium-dark skin tone" }, { "no": 920, "code": "1F9D7 1F3FF 200D 2642 FE0F", "char": "🧗🏿‍♂️", "name": "⊛ man climbing: dark skin tone" }, { "no": 921, "code": "1F9D8", "char": "🧘", "name": "⊛ person in lotus position" }, { "no": 922, "code": "1F9D8 1F3FB", "char": "🧘🏻", "name": "⊛ person in lotus position: light skin tone" }, { "no": 923, "code": "1F9D8 1F3FC", "char": "🧘🏼", "name": "⊛ person in lotus position: medium-light skin tone" }, { "no": 924, "code": "1F9D8 1F3FD", "char": "🧘🏽", "name": "⊛ person in lotus position: medium skin tone" }, { "no": 925, "code": "1F9D8 1F3FE", "char": "🧘🏾", "name": "⊛ person in lotus position: medium-dark skin tone" }, { "no": 926, "code": "1F9D8 1F3FF", "char": "🧘🏿", "name": "⊛ person in lotus position: dark skin tone" }, { "no": 927, "code": "1F9D8 200D 2640 FE0F", "char": "🧘‍♀️", "name": "⊛ woman in lotus position" }, { "no": 928, "code": "1F9D8 1F3FB 200D 2640 FE0F", "char": "🧘🏻‍♀️", "name": "⊛ woman in lotus position: light skin tone" }, { "no": 929, "code": "1F9D8 1F3FC 200D 2640 FE0F", "char": "🧘🏼‍♀️", "name": "⊛ woman in lotus position: medium-light skin tone" }, { "no": 930, "code": "1F9D8 1F3FD 200D 2640 FE0F", "char": "🧘🏽‍♀️", "name": "⊛ woman in lotus position: medium skin tone" }, { "no": 931, "code": "1F9D8 1F3FE 200D 2640 FE0F", "char": "🧘🏾‍♀️", "name": "⊛ woman in lotus position: medium-dark skin tone" }, { "no": 932, "code": "1F9D8 1F3FF 200D 2640 FE0F", "char": "🧘🏿‍♀️", "name": "⊛ woman in lotus position: dark skin tone" }, { "no": 933, "code": "1F9D8 200D 2642 FE0F", "char": "🧘‍♂️", "name": "⊛ man in lotus position" }, { "no": 934, "code": "1F9D8 1F3FB 200D 2642 FE0F", "char": "🧘🏻‍♂️", "name": "⊛ man in lotus position: light skin tone" }, { "no": 935, "code": "1F9D8 1F3FC 200D 2642 FE0F", "char": "🧘🏼‍♂️", "name": "⊛ man in lotus position: medium-light skin tone" }, { "no": 936, "code": "1F9D8 1F3FD 200D 2642 FE0F", "char": "🧘🏽‍♂️", "name": "⊛ man in lotus position: medium skin tone" }, { "no": 937, "code": "1F9D8 1F3FE 200D 2642 FE0F", "char": "🧘🏾‍♂️", "name": "⊛ man in lotus position: medium-dark skin tone" }, { "no": 938, "code": "1F9D8 1F3FF 200D 2642 FE0F", "char": "🧘🏿‍♂️", "name": "⊛ man in lotus position: dark skin tone" }, { "no": 939, "code": "1F6C0", "char": "🛀", "name": "person taking bath" }, { "no": 940, "code": "1F6C0 1F3FB", "char": "🛀🏻", "name": "person taking bath: light skin tone" }, { "no": 941, "code": "1F6C0 1F3FC", "char": "🛀🏼", "name": "person taking bath: medium-light skin tone" }, { "no": 942, "code": "1F6C0 1F3FD", "char": "🛀🏽", "name": "person taking bath: medium skin tone" }, { "no": 943, "code": "1F6C0 1F3FE", "char": "🛀🏾", "name": "person taking bath: medium-dark skin tone" }, { "no": 944, "code": "1F6C0 1F3FF", "char": "🛀🏿", "name": "person taking bath: dark skin tone" }, { "no": 945, "code": "1F6CC", "char": "🛌", "name": "person in bed" }, { "no": 946, "code": "1F6CC 1F3FB", "char": "🛌🏻", "name": "person in bed: light skin tone" }, { "no": 947, "code": "1F6CC 1F3FC", "char": "🛌🏼", "name": "person in bed: medium-light skin tone" }, { "no": 948, "code": "1F6CC 1F3FD", "char": "🛌🏽", "name": "person in bed: medium skin tone" }, { "no": 949, "code": "1F6CC 1F3FE", "char": "🛌🏾", "name": "person in bed: medium-dark skin tone" }, { "no": 950, "code": "1F6CC 1F3FF", "char": "🛌🏿", "name": "person in bed: dark skin tone" }, { "no": 951, "code": "1F574", "char": "🕴", "name": "man in suit levitating" }, { "no": 952, "code": "1F574 1F3FB", "char": "🕴🏻", "name": "man in suit levitating: light skin tone" }, { "no": 953, "code": "1F574 1F3FC", "char": "🕴🏼", "name": "man in suit levitating: medium-light skin tone" }, { "no": 954, "code": "1F574 1F3FD", "char": "🕴🏽", "name": "man in suit levitating: medium skin tone" }, { "no": 955, "code": "1F574 1F3FE", "char": "🕴🏾", "name": "man in suit levitating: medium-dark skin tone" }, { "no": 956, "code": "1F574 1F3FF", "char": "🕴🏿", "name": "man in suit levitating: dark skin tone" }, { "no": 957, "code": "1F5E3", "char": "🗣", "name": "speaking head" }, { "no": 958, "code": "1F464", "char": "👤", "name": "bust in silhouette" }, { "no": 959, "code": "1F465", "char": "👥", "name": "busts in silhouette" }, { "no": 960, "code": "1F93A", "char": "🤺", "name": "person fencing" }, { "no": 961, "code": "1F3C7", "char": "🏇", "name": "horse racing" }, { "no": 962, "code": "1F3C7 1F3FB", "char": "🏇🏻", "name": "horse racing: light skin tone" }, { "no": 963, "code": "1F3C7 1F3FC", "char": "🏇🏼", "name": "horse racing: medium-light skin tone" }, { "no": 964, "code": "1F3C7 1F3FD", "char": "🏇🏽", "name": "horse racing: medium skin tone" }, { "no": 965, "code": "1F3C7 1F3FE", "char": "🏇🏾", "name": "horse racing: medium-dark skin tone" }, { "no": 966, "code": "1F3C7 1F3FF", "char": "🏇🏿", "name": "horse racing: dark skin tone" }, { "no": 967, "code": "26F7", "char": "⛷", "name": "skier" }, { "no": 968, "code": "1F3C2", "char": "🏂", "name": "snowboarder" }, { "no": 969, "code": "1F3C2 1F3FB", "char": "🏂🏻", "name": "snowboarder: light skin tone" }, { "no": 970, "code": "1F3C2 1F3FC", "char": "🏂🏼", "name": "snowboarder: medium-light skin tone" }, { "no": 971, "code": "1F3C2 1F3FD", "char": "🏂🏽", "name": "snowboarder: medium skin tone" }, { "no": 972, "code": "1F3C2 1F3FE", "char": "🏂🏾", "name": "snowboarder: medium-dark skin tone" }, { "no": 973, "code": "1F3C2 1F3FF", "char": "🏂🏿", "name": "snowboarder: dark skin tone" }, { "no": 974, "code": "1F3CC", "char": "🏌", "name": "person golfing" }, { "no": 975, "code": "1F3CC 1F3FB", "char": "🏌🏻", "name": "person golfing: light skin tone" }, { "no": 976, "code": "1F3CC 1F3FC", "char": "🏌🏼", "name": "person golfing: medium-light skin tone" }, { "no": 977, "code": "1F3CC 1F3FD", "char": "🏌🏽", "name": "person golfing: medium skin tone" }, { "no": 978, "code": "1F3CC 1F3FE", "char": "🏌🏾", "name": "person golfing: medium-dark skin tone" }, { "no": 979, "code": "1F3CC 1F3FF", "char": "🏌🏿", "name": "person golfing: dark skin tone" }, { "no": 980, "code": "1F3CC FE0F 200D 2642 FE0F", "char": "🏌️‍♂️", "name": "man golfing" }, { "no": 981, "code": "1F3CC 1F3FB 200D 2642 FE0F", "char": "🏌🏻‍♂️", "name": "man golfing: light skin tone" }, { "no": 982, "code": "1F3CC 1F3FC 200D 2642 FE0F", "char": "🏌🏼‍♂️", "name": "man golfing: medium-light skin tone" }, { "no": 983, "code": "1F3CC 1F3FD 200D 2642 FE0F", "char": "🏌🏽‍♂️", "name": "man golfing: medium skin tone" }, { "no": 984, "code": "1F3CC 1F3FE 200D 2642 FE0F", "char": "🏌🏾‍♂️", "name": "man golfing: medium-dark skin tone" }, { "no": 985, "code": "1F3CC 1F3FF 200D 2642 FE0F", "char": "🏌🏿‍♂️", "name": "man golfing: dark skin tone" }, { "no": 986, "code": "1F3CC FE0F 200D 2640 FE0F", "char": "🏌️‍♀️", "name": "woman golfing" }, { "no": 987, "code": "1F3CC 1F3FB 200D 2640 FE0F", "char": "🏌🏻‍♀️", "name": "woman golfing: light skin tone" }, { "no": 988, "code": "1F3CC 1F3FC 200D 2640 FE0F", "char": "🏌🏼‍♀️", "name": "woman golfing: medium-light skin tone" }, { "no": 989, "code": "1F3CC 1F3FD 200D 2640 FE0F", "char": "🏌🏽‍♀️", "name": "woman golfing: medium skin tone" }, { "no": 990, "code": "1F3CC 1F3FE 200D 2640 FE0F", "char": "🏌🏾‍♀️", "name": "woman golfing: medium-dark skin tone" }, { "no": 991, "code": "1F3CC 1F3FF 200D 2640 FE0F", "char": "🏌🏿‍♀️", "name": "woman golfing: dark skin tone" }, { "no": 992, "code": "1F3C4", "char": "🏄", "name": "person surfing" }, { "no": 993, "code": "1F3C4 1F3FB", "char": "🏄🏻", "name": "person surfing: light skin tone" }, { "no": 994, "code": "1F3C4 1F3FC", "char": "🏄🏼", "name": "person surfing: medium-light skin tone" }, { "no": 995, "code": "1F3C4 1F3FD", "char": "🏄🏽", "name": "person surfing: medium skin tone" }, { "no": 996, "code": "1F3C4 1F3FE", "char": "🏄🏾", "name": "person surfing: medium-dark skin tone" }, { "no": 997, "code": "1F3C4 1F3FF", "char": "🏄🏿", "name": "person surfing: dark skin tone" }, { "no": 998, "code": "1F3C4 200D 2642 FE0F", "char": "🏄‍♂️", "name": "man surfing" }, { "no": 999, "code": "1F3C4 1F3FB 200D 2642 FE0F", "char": "🏄🏻‍♂️", "name": "man surfing: light skin tone" }, { "no": 1000, "code": "1F3C4 1F3FC 200D 2642 FE0F", "char": "🏄🏼‍♂️", "name": "man surfing: medium-light skin tone" }, { "no": 1001, "code": "1F3C4 1F3FD 200D 2642 FE0F", "char": "🏄🏽‍♂️", "name": "man surfing: medium skin tone" }, { "no": 1002, "code": "1F3C4 1F3FE 200D 2642 FE0F", "char": "🏄🏾‍♂️", "name": "man surfing: medium-dark skin tone" }, { "no": 1003, "code": "1F3C4 1F3FF 200D 2642 FE0F", "char": "🏄🏿‍♂️", "name": "man surfing: dark skin tone" }, { "no": 1004, "code": "1F3C4 200D 2640 FE0F", "char": "🏄‍♀️", "name": "woman surfing" }, { "no": 1005, "code": "1F3C4 1F3FB 200D 2640 FE0F", "char": "🏄🏻‍♀️", "name": "woman surfing: light skin tone" }, { "no": 1006, "code": "1F3C4 1F3FC 200D 2640 FE0F", "char": "🏄🏼‍♀️", "name": "woman surfing: medium-light skin tone" }, { "no": 1007, "code": "1F3C4 1F3FD 200D 2640 FE0F", "char": "🏄🏽‍♀️", "name": "woman surfing: medium skin tone" }, { "no": 1008, "code": "1F3C4 1F3FE 200D 2640 FE0F", "char": "🏄🏾‍♀️", "name": "woman surfing: medium-dark skin tone" }, { "no": 1009, "code": "1F3C4 1F3FF 200D 2640 FE0F", "char": "🏄🏿‍♀️", "name": "woman surfing: dark skin tone" }, { "no": 1010, "code": "1F6A3", "char": "🚣", "name": "person rowing boat" }, { "no": 1011, "code": "1F6A3 1F3FB", "char": "🚣🏻", "name": "person rowing boat: light skin tone" }, { "no": 1012, "code": "1F6A3 1F3FC", "char": "🚣🏼", "name": "person rowing boat: medium-light skin tone" }, { "no": 1013, "code": "1F6A3 1F3FD", "char": "🚣🏽", "name": "person rowing boat: medium skin tone" }, { "no": 1014, "code": "1F6A3 1F3FE", "char": "🚣🏾", "name": "person rowing boat: medium-dark skin tone" }, { "no": 1015, "code": "1F6A3 1F3FF", "char": "🚣🏿", "name": "person rowing boat: dark skin tone" }, { "no": 1016, "code": "1F6A3 200D 2642 FE0F", "char": "🚣‍♂️", "name": "man rowing boat" }, { "no": 1017, "code": "1F6A3 1F3FB 200D 2642 FE0F", "char": "🚣🏻‍♂️", "name": "man rowing boat: light skin tone" }, { "no": 1018, "code": "1F6A3 1F3FC 200D 2642 FE0F", "char": "🚣🏼‍♂️", "name": "man rowing boat: medium-light skin tone" }, { "no": 1019, "code": "1F6A3 1F3FD 200D 2642 FE0F", "char": "🚣🏽‍♂️", "name": "man rowing boat: medium skin tone" }, { "no": 1020, "code": "1F6A3 1F3FE 200D 2642 FE0F", "char": "🚣🏾‍♂️", "name": "man rowing boat: medium-dark skin tone" }, { "no": 1021, "code": "1F6A3 1F3FF 200D 2642 FE0F", "char": "🚣🏿‍♂️", "name": "man rowing boat: dark skin tone" }, { "no": 1022, "code": "1F6A3 200D 2640 FE0F", "char": "🚣‍♀️", "name": "woman rowing boat" }, { "no": 1023, "code": "1F6A3 1F3FB 200D 2640 FE0F", "char": "🚣🏻‍♀️", "name": "woman rowing boat: light skin tone" }, { "no": 1024, "code": "1F6A3 1F3FC 200D 2640 FE0F", "char": "🚣🏼‍♀️", "name": "woman rowing boat: medium-light skin tone" }, { "no": 1025, "code": "1F6A3 1F3FD 200D 2640 FE0F", "char": "🚣🏽‍♀️", "name": "woman rowing boat: medium skin tone" }, { "no": 1026, "code": "1F6A3 1F3FE 200D 2640 FE0F", "char": "🚣🏾‍♀️", "name": "woman rowing boat: medium-dark skin tone" }, { "no": 1027, "code": "1F6A3 1F3FF 200D 2640 FE0F", "char": "🚣🏿‍♀️", "name": "woman rowing boat: dark skin tone" }, { "no": 1028, "code": "1F3CA", "char": "🏊", "name": "person swimming" }, { "no": 1029, "code": "1F3CA 1F3FB", "char": "🏊🏻", "name": "person swimming: light skin tone" }, { "no": 1030, "code": "1F3CA 1F3FC", "char": "🏊🏼", "name": "person swimming: medium-light skin tone" }, { "no": 1031, "code": "1F3CA 1F3FD", "char": "🏊🏽", "name": "person swimming: medium skin tone" }, { "no": 1032, "code": "1F3CA 1F3FE", "char": "🏊🏾", "name": "person swimming: medium-dark skin tone" }, { "no": 1033, "code": "1F3CA 1F3FF", "char": "🏊🏿", "name": "person swimming: dark skin tone" }, { "no": 1034, "code": "1F3CA 200D 2642 FE0F", "char": "🏊‍♂️", "name": "man swimming" }, { "no": 1035, "code": "1F3CA 1F3FB 200D 2642 FE0F", "char": "🏊🏻‍♂️", "name": "man swimming: light skin tone" }, { "no": 1036, "code": "1F3CA 1F3FC 200D 2642 FE0F", "char": "🏊🏼‍♂️", "name": "man swimming: medium-light skin tone" }, { "no": 1037, "code": "1F3CA 1F3FD 200D 2642 FE0F", "char": "🏊🏽‍♂️", "name": "man swimming: medium skin tone" }, { "no": 1038, "code": "1F3CA 1F3FE 200D 2642 FE0F", "char": "🏊🏾‍♂️", "name": "man swimming: medium-dark skin tone" }, { "no": 1039, "code": "1F3CA 1F3FF 200D 2642 FE0F", "char": "🏊🏿‍♂️", "name": "man swimming: dark skin tone" }, { "no": 1040, "code": "1F3CA 200D 2640 FE0F", "char": "🏊‍♀️", "name": "woman swimming" }, { "no": 1041, "code": "1F3CA 1F3FB 200D 2640 FE0F", "char": "🏊🏻‍♀️", "name": "woman swimming: light skin tone" }, { "no": 1042, "code": "1F3CA 1F3FC 200D 2640 FE0F", "char": "🏊🏼‍♀️", "name": "woman swimming: medium-light skin tone" }, { "no": 1043, "code": "1F3CA 1F3FD 200D 2640 FE0F", "char": "🏊🏽‍♀️", "name": "woman swimming: medium skin tone" }, { "no": 1044, "code": "1F3CA 1F3FE 200D 2640 FE0F", "char": "🏊🏾‍♀️", "name": "woman swimming: medium-dark skin tone" }, { "no": 1045, "code": "1F3CA 1F3FF 200D 2640 FE0F", "char": "🏊🏿‍♀️", "name": "woman swimming: dark skin tone" }, { "no": 1046, "code": "26F9", "char": "⛹", "name": "person bouncing ball" }, { "no": 1047, "code": "26F9 1F3FB", "char": "⛹🏻", "name": "person bouncing ball: light skin tone" }, { "no": 1048, "code": "26F9 1F3FC", "char": "⛹🏼", "name": "person bouncing ball: medium-light skin tone" }, { "no": 1049, "code": "26F9 1F3FD", "char": "⛹🏽", "name": "person bouncing ball: medium skin tone" }, { "no": 1050, "code": "26F9 1F3FE", "char": "⛹🏾", "name": "person bouncing ball: medium-dark skin tone" }, { "no": 1051, "code": "26F9 1F3FF", "char": "⛹🏿", "name": "person bouncing ball: dark skin tone" }, { "no": 1052, "code": "26F9 FE0F 200D 2642 FE0F", "char": "⛹️‍♂️", "name": "man bouncing ball" }, { "no": 1053, "code": "26F9 1F3FB 200D 2642 FE0F", "char": "⛹🏻‍♂️", "name": "man bouncing ball: light skin tone" }, { "no": 1054, "code": "26F9 1F3FC 200D 2642 FE0F", "char": "⛹🏼‍♂️", "name": "man bouncing ball: medium-light skin tone" }, { "no": 1055, "code": "26F9 1F3FD 200D 2642 FE0F", "char": "⛹🏽‍♂️", "name": "man bouncing ball: medium skin tone" }, { "no": 1056, "code": "26F9 1F3FE 200D 2642 FE0F", "char": "⛹🏾‍♂️", "name": "man bouncing ball: medium-dark skin tone" }, { "no": 1057, "code": "26F9 1F3FF 200D 2642 FE0F", "char": "⛹🏿‍♂️", "name": "man bouncing ball: dark skin tone" }, { "no": 1058, "code": "26F9 FE0F 200D 2640 FE0F", "char": "⛹️‍♀️", "name": "woman bouncing ball" }, { "no": 1059, "code": "26F9 1F3FB 200D 2640 FE0F", "char": "⛹🏻‍♀️", "name": "woman bouncing ball: light skin tone" }, { "no": 1060, "code": "26F9 1F3FC 200D 2640 FE0F", "char": "⛹🏼‍♀️", "name": "woman bouncing ball: medium-light skin tone" }, { "no": 1061, "code": "26F9 1F3FD 200D 2640 FE0F", "char": "⛹🏽‍♀️", "name": "woman bouncing ball: medium skin tone" }, { "no": 1062, "code": "26F9 1F3FE 200D 2640 FE0F", "char": "⛹🏾‍♀️", "name": "woman bouncing ball: medium-dark skin tone" }, { "no": 1063, "code": "26F9 1F3FF 200D 2640 FE0F", "char": "⛹🏿‍♀️", "name": "woman bouncing ball: dark skin tone" }, { "no": 1064, "code": "1F3CB", "char": "🏋", "name": "person lifting weights" }, { "no": 1065, "code": "1F3CB 1F3FB", "char": "🏋🏻", "name": "person lifting weights: light skin tone" }, { "no": 1066, "code": "1F3CB 1F3FC", "char": "🏋🏼", "name": "person lifting weights: medium-light skin tone" }, { "no": 1067, "code": "1F3CB 1F3FD", "char": "🏋🏽", "name": "person lifting weights: medium skin tone" }, { "no": 1068, "code": "1F3CB 1F3FE", "char": "🏋🏾", "name": "person lifting weights: medium-dark skin tone" }, { "no": 1069, "code": "1F3CB 1F3FF", "char": "🏋🏿", "name": "person lifting weights: dark skin tone" }, { "no": 1070, "code": "1F3CB FE0F 200D 2642 FE0F", "char": "🏋️‍♂️", "name": "man lifting weights" }, { "no": 1071, "code": "1F3CB 1F3FB 200D 2642 FE0F", "char": "🏋🏻‍♂️", "name": "man lifting weights: light skin tone" }, { "no": 1072, "code": "1F3CB 1F3FC 200D 2642 FE0F", "char": "🏋🏼‍♂️", "name": "man lifting weights: medium-light skin tone" }, { "no": 1073, "code": "1F3CB 1F3FD 200D 2642 FE0F", "char": "🏋🏽‍♂️", "name": "man lifting weights: medium skin tone" }, { "no": 1074, "code": "1F3CB 1F3FE 200D 2642 FE0F", "char": "🏋🏾‍♂️", "name": "man lifting weights: medium-dark skin tone" }, { "no": 1075, "code": "1F3CB 1F3FF 200D 2642 FE0F", "char": "🏋🏿‍♂️", "name": "man lifting weights: dark skin tone" }, { "no": 1076, "code": "1F3CB FE0F 200D 2640 FE0F", "char": "🏋️‍♀️", "name": "woman lifting weights" }, { "no": 1077, "code": "1F3CB 1F3FB 200D 2640 FE0F", "char": "🏋🏻‍♀️", "name": "woman lifting weights: light skin tone" }, { "no": 1078, "code": "1F3CB 1F3FC 200D 2640 FE0F", "char": "🏋🏼‍♀️", "name": "woman lifting weights: medium-light skin tone" }, { "no": 1079, "code": "1F3CB 1F3FD 200D 2640 FE0F", "char": "🏋🏽‍♀️", "name": "woman lifting weights: medium skin tone" }, { "no": 1080, "code": "1F3CB 1F3FE 200D 2640 FE0F", "char": "🏋🏾‍♀️", "name": "woman lifting weights: medium-dark skin tone" }, { "no": 1081, "code": "1F3CB 1F3FF 200D 2640 FE0F", "char": "🏋🏿‍♀️", "name": "woman lifting weights: dark skin tone" }, { "no": 1082, "code": "1F6B4", "char": "🚴", "name": "person biking" }, { "no": 1083, "code": "1F6B4 1F3FB", "char": "🚴🏻", "name": "person biking: light skin tone" }, { "no": 1084, "code": "1F6B4 1F3FC", "char": "🚴🏼", "name": "person biking: medium-light skin tone" }, { "no": 1085, "code": "1F6B4 1F3FD", "char": "🚴🏽", "name": "person biking: medium skin tone" }, { "no": 1086, "code": "1F6B4 1F3FE", "char": "🚴🏾", "name": "person biking: medium-dark skin tone" }, { "no": 1087, "code": "1F6B4 1F3FF", "char": "🚴🏿", "name": "person biking: dark skin tone" }, { "no": 1088, "code": "1F6B4 200D 2642 FE0F", "char": "🚴‍♂️", "name": "man biking" }, { "no": 1089, "code": "1F6B4 1F3FB 200D 2642 FE0F", "char": "🚴🏻‍♂️", "name": "man biking: light skin tone" }, { "no": 1090, "code": "1F6B4 1F3FC 200D 2642 FE0F", "char": "🚴🏼‍♂️", "name": "man biking: medium-light skin tone" }, { "no": 1091, "code": "1F6B4 1F3FD 200D 2642 FE0F", "char": "🚴🏽‍♂️", "name": "man biking: medium skin tone" }, { "no": 1092, "code": "1F6B4 1F3FE 200D 2642 FE0F", "char": "🚴🏾‍♂️", "name": "man biking: medium-dark skin tone" }, { "no": 1093, "code": "1F6B4 1F3FF 200D 2642 FE0F", "char": "🚴🏿‍♂️", "name": "man biking: dark skin tone" }, { "no": 1094, "code": "1F6B4 200D 2640 FE0F", "char": "🚴‍♀️", "name": "woman biking" }, { "no": 1095, "code": "1F6B4 1F3FB 200D 2640 FE0F", "char": "🚴🏻‍♀️", "name": "woman biking: light skin tone" }, { "no": 1096, "code": "1F6B4 1F3FC 200D 2640 FE0F", "char": "🚴🏼‍♀️", "name": "woman biking: medium-light skin tone" }, { "no": 1097, "code": "1F6B4 1F3FD 200D 2640 FE0F", "char": "🚴🏽‍♀️", "name": "woman biking: medium skin tone" }, { "no": 1098, "code": "1F6B4 1F3FE 200D 2640 FE0F", "char": "🚴🏾‍♀️", "name": "woman biking: medium-dark skin tone" }, { "no": 1099, "code": "1F6B4 1F3FF 200D 2640 FE0F", "char": "🚴🏿‍♀️", "name": "woman biking: dark skin tone" }, { "no": 1100, "code": "1F6B5", "char": "🚵", "name": "person mountain biking" }, { "no": 1101, "code": "1F6B5 1F3FB", "char": "🚵🏻", "name": "person mountain biking: light skin tone" }, { "no": 1102, "code": "1F6B5 1F3FC", "char": "🚵🏼", "name": "person mountain biking: medium-light skin tone" }, { "no": 1103, "code": "1F6B5 1F3FD", "char": "🚵🏽", "name": "person mountain biking: medium skin tone" }, { "no": 1104, "code": "1F6B5 1F3FE", "char": "🚵🏾", "name": "person mountain biking: medium-dark skin tone" }, { "no": 1105, "code": "1F6B5 1F3FF", "char": "🚵🏿", "name": "person mountain biking: dark skin tone" }, { "no": 1106, "code": "1F6B5 200D 2642 FE0F", "char": "🚵‍♂️", "name": "man mountain biking" }, { "no": 1107, "code": "1F6B5 1F3FB 200D 2642 FE0F", "char": "🚵🏻‍♂️", "name": "man mountain biking: light skin tone" }, { "no": 1108, "code": "1F6B5 1F3FC 200D 2642 FE0F", "char": "🚵🏼‍♂️", "name": "man mountain biking: medium-light skin tone" }, { "no": 1109, "code": "1F6B5 1F3FD 200D 2642 FE0F", "char": "🚵🏽‍♂️", "name": "man mountain biking: medium skin tone" }, { "no": 1110, "code": "1F6B5 1F3FE 200D 2642 FE0F", "char": "🚵🏾‍♂️", "name": "man mountain biking: medium-dark skin tone" }, { "no": 1111, "code": "1F6B5 1F3FF 200D 2642 FE0F", "char": "🚵🏿‍♂️", "name": "man mountain biking: dark skin tone" }, { "no": 1112, "code": "1F6B5 200D 2640 FE0F", "char": "🚵‍♀️", "name": "woman mountain biking" }, { "no": 1113, "code": "1F6B5 1F3FB 200D 2640 FE0F", "char": "🚵🏻‍♀️", "name": "woman mountain biking: light skin tone" }, { "no": 1114, "code": "1F6B5 1F3FC 200D 2640 FE0F", "char": "🚵🏼‍♀️", "name": "woman mountain biking: medium-light skin tone" }, { "no": 1115, "code": "1F6B5 1F3FD 200D 2640 FE0F", "char": "🚵🏽‍♀️", "name": "woman mountain biking: medium skin tone" }, { "no": 1116, "code": "1F6B5 1F3FE 200D 2640 FE0F", "char": "🚵🏾‍♀️", "name": "woman mountain biking: medium-dark skin tone" }, { "no": 1117, "code": "1F6B5 1F3FF 200D 2640 FE0F", "char": "🚵🏿‍♀️", "name": "woman mountain biking: dark skin tone" }, { "no": 1118, "code": "1F3CE", "char": "🏎", "name": "racing car" }, { "no": 1119, "code": "1F3CD", "char": "🏍", "name": "motorcycle" }, { "no": 1120, "code": "1F938", "char": "🤸", "name": "person cartwheeling" }, { "no": 1121, "code": "1F938 1F3FB", "char": "🤸🏻", "name": "person cartwheeling: light skin tone" }, { "no": 1122, "code": "1F938 1F3FC", "char": "🤸🏼", "name": "person cartwheeling: medium-light skin tone" }, { "no": 1123, "code": "1F938 1F3FD", "char": "🤸🏽", "name": "person cartwheeling: medium skin tone" }, { "no": 1124, "code": "1F938 1F3FE", "char": "🤸🏾", "name": "person cartwheeling: medium-dark skin tone" }, { "no": 1125, "code": "1F938 1F3FF", "char": "🤸🏿", "name": "person cartwheeling: dark skin tone" }, { "no": 1126, "code": "1F938 200D 2642 FE0F", "char": "🤸‍♂️", "name": "man cartwheeling" }, { "no": 1127, "code": "1F938 1F3FB 200D 2642 FE0F", "char": "🤸🏻‍♂️", "name": "man cartwheeling: light skin tone" }, { "no": 1128, "code": "1F938 1F3FC 200D 2642 FE0F", "char": "🤸🏼‍♂️", "name": "man cartwheeling: medium-light skin tone" }, { "no": 1129, "code": "1F938 1F3FD 200D 2642 FE0F", "char": "🤸🏽‍♂️", "name": "man cartwheeling: medium skin tone" }, { "no": 1130, "code": "1F938 1F3FE 200D 2642 FE0F", "char": "🤸🏾‍♂️", "name": "man cartwheeling: medium-dark skin tone" }, { "no": 1131, "code": "1F938 1F3FF 200D 2642 FE0F", "char": "🤸🏿‍♂️", "name": "man cartwheeling: dark skin tone" }, { "no": 1132, "code": "1F938 200D 2640 FE0F", "char": "🤸‍♀️", "name": "woman cartwheeling" }, { "no": 1133, "code": "1F938 1F3FB 200D 2640 FE0F", "char": "🤸🏻‍♀️", "name": "woman cartwheeling: light skin tone" }, { "no": 1134, "code": "1F938 1F3FC 200D 2640 FE0F", "char": "🤸🏼‍♀️", "name": "woman cartwheeling: medium-light skin tone" }, { "no": 1135, "code": "1F938 1F3FD 200D 2640 FE0F", "char": "🤸🏽‍♀️", "name": "woman cartwheeling: medium skin tone" }, { "no": 1136, "code": "1F938 1F3FE 200D 2640 FE0F", "char": "🤸🏾‍♀️", "name": "woman cartwheeling: medium-dark skin tone" }, { "no": 1137, "code": "1F938 1F3FF 200D 2640 FE0F", "char": "🤸🏿‍♀️", "name": "woman cartwheeling: dark skin tone" }, { "no": 1138, "code": "1F93C", "char": "🤼", "name": "people wrestling" }, { "no": 1139, "code": "1F93C 200D 2642 FE0F", "char": "🤼‍♂️", "name": "men wrestling" }, { "no": 1140, "code": "1F93C 200D 2640 FE0F", "char": "🤼‍♀️", "name": "women wrestling" }, { "no": 1141, "code": "1F93D", "char": "🤽", "name": "person playing water polo" }, { "no": 1142, "code": "1F93D 1F3FB", "char": "🤽🏻", "name": "person playing water polo: light skin tone" }, { "no": 1143, "code": "1F93D 1F3FC", "char": "🤽🏼", "name": "person playing water polo: medium-light skin tone" }, { "no": 1144, "code": "1F93D 1F3FD", "char": "🤽🏽", "name": "person playing water polo: medium skin tone" }, { "no": 1145, "code": "1F93D 1F3FE", "char": "🤽🏾", "name": "person playing water polo: medium-dark skin tone" }, { "no": 1146, "code": "1F93D 1F3FF", "char": "🤽🏿", "name": "person playing water polo: dark skin tone" }, { "no": 1147, "code": "1F93D 200D 2642 FE0F", "char": "🤽‍♂️", "name": "man playing water polo" }, { "no": 1148, "code": "1F93D 1F3FB 200D 2642 FE0F", "char": "🤽🏻‍♂️", "name": "man playing water polo: light skin tone" }, { "no": 1149, "code": "1F93D 1F3FC 200D 2642 FE0F", "char": "🤽🏼‍♂️", "name": "man playing water polo: medium-light skin tone" }, { "no": 1150, "code": "1F93D 1F3FD 200D 2642 FE0F", "char": "🤽🏽‍♂️", "name": "man playing water polo: medium skin tone" }, { "no": 1151, "code": "1F93D 1F3FE 200D 2642 FE0F", "char": "🤽🏾‍♂️", "name": "man playing water polo: medium-dark skin tone" }, { "no": 1152, "code": "1F93D 1F3FF 200D 2642 FE0F", "char": "🤽🏿‍♂️", "name": "man playing water polo: dark skin tone" }, { "no": 1153, "code": "1F93D 200D 2640 FE0F", "char": "🤽‍♀️", "name": "woman playing water polo" }, { "no": 1154, "code": "1F93D 1F3FB 200D 2640 FE0F", "char": "🤽🏻‍♀️", "name": "woman playing water polo: light skin tone" }, { "no": 1155, "code": "1F93D 1F3FC 200D 2640 FE0F", "char": "🤽🏼‍♀️", "name": "woman playing water polo: medium-light skin tone" }, { "no": 1156, "code": "1F93D 1F3FD 200D 2640 FE0F", "char": "🤽🏽‍♀️", "name": "woman playing water polo: medium skin tone" }, { "no": 1157, "code": "1F93D 1F3FE 200D 2640 FE0F", "char": "🤽🏾‍♀️", "name": "woman playing water polo: medium-dark skin tone" }, { "no": 1158, "code": "1F93D 1F3FF 200D 2640 FE0F", "char": "🤽🏿‍♀️", "name": "woman playing water polo: dark skin tone" }, { "no": 1159, "code": "1F93E", "char": "🤾", "name": "person playing handball" }, { "no": 1160, "code": "1F93E 1F3FB", "char": "🤾🏻", "name": "person playing handball: light skin tone" }, { "no": 1161, "code": "1F93E 1F3FC", "char": "🤾🏼", "name": "person playing handball: medium-light skin tone" }, { "no": 1162, "code": "1F93E 1F3FD", "char": "🤾🏽", "name": "person playing handball: medium skin tone" }, { "no": 1163, "code": "1F93E 1F3FE", "char": "🤾🏾", "name": "person playing handball: medium-dark skin tone" }, { "no": 1164, "code": "1F93E 1F3FF", "char": "🤾🏿", "name": "person playing handball: dark skin tone" }, { "no": 1165, "code": "1F93E 200D 2642 FE0F", "char": "🤾‍♂️", "name": "man playing handball" }, { "no": 1166, "code": "1F93E 1F3FB 200D 2642 FE0F", "char": "🤾🏻‍♂️", "name": "man playing handball: light skin tone" }, { "no": 1167, "code": "1F93E 1F3FC 200D 2642 FE0F", "char": "🤾🏼‍♂️", "name": "man playing handball: medium-light skin tone" }, { "no": 1168, "code": "1F93E 1F3FD 200D 2642 FE0F", "char": "🤾🏽‍♂️", "name": "man playing handball: medium skin tone" }, { "no": 1169, "code": "1F93E 1F3FE 200D 2642 FE0F", "char": "🤾🏾‍♂️", "name": "man playing handball: medium-dark skin tone" }, { "no": 1170, "code": "1F93E 1F3FF 200D 2642 FE0F", "char": "🤾🏿‍♂️", "name": "man playing handball: dark skin tone" }, { "no": 1171, "code": "1F93E 200D 2640 FE0F", "char": "🤾‍♀️", "name": "woman playing handball" }, { "no": 1172, "code": "1F93E 1F3FB 200D 2640 FE0F", "char": "🤾🏻‍♀️", "name": "woman playing handball: light skin tone" }, { "no": 1173, "code": "1F93E 1F3FC 200D 2640 FE0F", "char": "🤾🏼‍♀️", "name": "woman playing handball: medium-light skin tone" }, { "no": 1174, "code": "1F93E 1F3FD 200D 2640 FE0F", "char": "🤾🏽‍♀️", "name": "woman playing handball: medium skin tone" }, { "no": 1175, "code": "1F93E 1F3FE 200D 2640 FE0F", "char": "🤾🏾‍♀️", "name": "woman playing handball: medium-dark skin tone" }, { "no": 1176, "code": "1F93E 1F3FF 200D 2640 FE0F", "char": "🤾🏿‍♀️", "name": "woman playing handball: dark skin tone" }, { "no": 1177, "code": "1F939", "char": "🤹", "name": "person juggling" }, { "no": 1178, "code": "1F939 1F3FB", "char": "🤹🏻", "name": "person juggling: light skin tone" }, { "no": 1179, "code": "1F939 1F3FC", "char": "🤹🏼", "name": "person juggling: medium-light skin tone" }, { "no": 1180, "code": "1F939 1F3FD", "char": "🤹🏽", "name": "person juggling: medium skin tone" }, { "no": 1181, "code": "1F939 1F3FE", "char": "🤹🏾", "name": "person juggling: medium-dark skin tone" }, { "no": 1182, "code": "1F939 1F3FF", "char": "🤹🏿", "name": "person juggling: dark skin tone" }, { "no": 1183, "code": "1F939 200D 2642 FE0F", "char": "🤹‍♂️", "name": "man juggling" }, { "no": 1184, "code": "1F939 1F3FB 200D 2642 FE0F", "char": "🤹🏻‍♂️", "name": "man juggling: light skin tone" }, { "no": 1185, "code": "1F939 1F3FC 200D 2642 FE0F", "char": "🤹🏼‍♂️", "name": "man juggling: medium-light skin tone" }, { "no": 1186, "code": "1F939 1F3FD 200D 2642 FE0F", "char": "🤹🏽‍♂️", "name": "man juggling: medium skin tone" }, { "no": 1187, "code": "1F939 1F3FE 200D 2642 FE0F", "char": "🤹🏾‍♂️", "name": "man juggling: medium-dark skin tone" }, { "no": 1188, "code": "1F939 1F3FF 200D 2642 FE0F", "char": "🤹🏿‍♂️", "name": "man juggling: dark skin tone" }, { "no": 1189, "code": "1F939 200D 2640 FE0F", "char": "🤹‍♀️", "name": "woman juggling" }, { "no": 1190, "code": "1F939 1F3FB 200D 2640 FE0F", "char": "🤹🏻‍♀️", "name": "woman juggling: light skin tone" }, { "no": 1191, "code": "1F939 1F3FC 200D 2640 FE0F", "char": "🤹🏼‍♀️", "name": "woman juggling: medium-light skin tone" }, { "no": 1192, "code": "1F939 1F3FD 200D 2640 FE0F", "char": "🤹🏽‍♀️", "name": "woman juggling: medium skin tone" }, { "no": 1193, "code": "1F939 1F3FE 200D 2640 FE0F", "char": "🤹🏾‍♀️", "name": "woman juggling: medium-dark skin tone" }, { "no": 1194, "code": "1F939 1F3FF 200D 2640 FE0F", "char": "🤹🏿‍♀️", "name": "woman juggling: dark skin tone" }, { "no": 1195, "code": "1F46B", "char": "👫", "name": "man and woman holding hands" }, { "no": 1196, "code": "1F46C", "char": "👬", "name": "two men holding hands" }, { "no": 1197, "code": "1F46D", "char": "👭", "name": "two women holding hands" }, { "no": 1198, "code": "1F48F", "char": "💏", "name": "kiss" }, { "no": 1199, "code": "1F469 200D 2764 FE0F 200D 1F48B 200D 1F468", "char": "👩‍❤️‍💋‍👨", "name": "kiss: woman, man" }, { "no": 1200, "code": "1F468 200D 2764 FE0F 200D 1F48B 200D 1F468", "char": "👨‍❤️‍💋‍👨", "name": "kiss: man, man" }, { "no": 1201, "code": "1F469 200D 2764 FE0F 200D 1F48B 200D 1F469", "char": "👩‍❤️‍💋‍👩", "name": "kiss: woman, woman" }, { "no": 1202, "code": "1F491", "char": "💑", "name": "couple with heart" }, { "no": 1203, "code": "1F469 200D 2764 FE0F 200D 1F468", "char": "👩‍❤️‍👨", "name": "couple with heart: woman, man" }, { "no": 1204, "code": "1F468 200D 2764 FE0F 200D 1F468", "char": "👨‍❤️‍👨", "name": "couple with heart: man, man" }, { "no": 1205, "code": "1F469 200D 2764 FE0F 200D 1F469", "char": "👩‍❤️‍👩", "name": "couple with heart: woman, woman" }, { "no": 1206, "code": "1F46A", "char": "👪", "name": "family" }, { "no": 1207, "code": "1F468 200D 1F469 200D 1F466", "char": "👨‍👩‍👦", "name": "family: man, woman, boy" }, { "no": 1208, "code": "1F468 200D 1F469 200D 1F467", "char": "👨‍👩‍👧", "name": "family: man, woman, girl" }, { "no": 1209, "code": "1F468 200D 1F469 200D 1F467 200D 1F466", "char": "👨‍👩‍👧‍👦", "name": "family: man, woman, girl, boy" }, { "no": 1210, "code": "1F468 200D 1F469 200D 1F466 200D 1F466", "char": "👨‍👩‍👦‍👦", "name": "family: man, woman, boy, boy" }, { "no": 1211, "code": "1F468 200D 1F469 200D 1F467 200D 1F467", "char": "👨‍👩‍👧‍👧", "name": "family: man, woman, girl, girl" }, { "no": 1212, "code": "1F468 200D 1F468 200D 1F466", "char": "👨‍👨‍👦", "name": "family: man, man, boy" }, { "no": 1213, "code": "1F468 200D 1F468 200D 1F467", "char": "👨‍👨‍👧", "name": "family: man, man, girl" }, { "no": 1214, "code": "1F468 200D 1F468 200D 1F467 200D 1F466", "char": "👨‍👨‍👧‍👦", "name": "family: man, man, girl, boy" }, { "no": 1215, "code": "1F468 200D 1F468 200D 1F466 200D 1F466", "char": "👨‍👨‍👦‍👦", "name": "family: man, man, boy, boy" }, { "no": 1216, "code": "1F468 200D 1F468 200D 1F467 200D 1F467", "char": "👨‍👨‍👧‍👧", "name": "family: man, man, girl, girl" }, { "no": 1217, "code": "1F469 200D 1F469 200D 1F466", "char": "👩‍👩‍👦", "name": "family: woman, woman, boy" }, { "no": 1218, "code": "1F469 200D 1F469 200D 1F467", "char": "👩‍👩‍👧", "name": "family: woman, woman, girl" }, { "no": 1219, "code": "1F469 200D 1F469 200D 1F467 200D 1F466", "char": "👩‍👩‍👧‍👦", "name": "family: woman, woman, girl, boy" }, { "no": 1220, "code": "1F469 200D 1F469 200D 1F466 200D 1F466", "char": "👩‍👩‍👦‍👦", "name": "family: woman, woman, boy, boy" }, { "no": 1221, "code": "1F469 200D 1F469 200D 1F467 200D 1F467", "char": "👩‍👩‍👧‍👧", "name": "family: woman, woman, girl, girl" }, { "no": 1222, "code": "1F468 200D 1F466", "char": "👨‍👦", "name": "family: man, boy" }, { "no": 1223, "code": "1F468 200D 1F466 200D 1F466", "char": "👨‍👦‍👦", "name": "family: man, boy, boy" }, { "no": 1224, "code": "1F468 200D 1F467", "char": "👨‍👧", "name": "family: man, girl" }, { "no": 1225, "code": "1F468 200D 1F467 200D 1F466", "char": "👨‍👧‍👦", "name": "family: man, girl, boy" }, { "no": 1226, "code": "1F468 200D 1F467 200D 1F467", "char": "👨‍👧‍👧", "name": "family: man, girl, girl" }, { "no": 1227, "code": "1F469 200D 1F466", "char": "👩‍👦", "name": "family: woman, boy" }, { "no": 1228, "code": "1F469 200D 1F466 200D 1F466", "char": "👩‍👦‍👦", "name": "family: woman, boy, boy" }, { "no": 1229, "code": "1F469 200D 1F467", "char": "👩‍👧", "name": "family: woman, girl" }, { "no": 1230, "code": "1F469 200D 1F467 200D 1F466", "char": "👩‍👧‍👦", "name": "family: woman, girl, boy" }, { "no": 1231, "code": "1F469 200D 1F467 200D 1F467", "char": "👩‍👧‍👧", "name": "family: woman, girl, girl" }, { "no": 1232, "code": "1F933", "char": "🤳", "name": "selfie" }, { "no": 1233, "code": "1F933 1F3FB", "char": "🤳🏻", "name": "selfie: light skin tone" }, { "no": 1234, "code": "1F933 1F3FC", "char": "🤳🏼", "name": "selfie: medium-light skin tone" }, { "no": 1235, "code": "1F933 1F3FD", "char": "🤳🏽", "name": "selfie: medium skin tone" }, { "no": 1236, "code": "1F933 1F3FE", "char": "🤳🏾", "name": "selfie: medium-dark skin tone" }, { "no": 1237, "code": "1F933 1F3FF", "char": "🤳🏿", "name": "selfie: dark skin tone" }, { "no": 1238, "code": "1F4AA", "char": "💪", "name": "flexed biceps" }, { "no": 1239, "code": "1F4AA 1F3FB", "char": "💪🏻", "name": "flexed biceps: light skin tone" }, { "no": 1240, "code": "1F4AA 1F3FC", "char": "💪🏼", "name": "flexed biceps: medium-light skin tone" }, { "no": 1241, "code": "1F4AA 1F3FD", "char": "💪🏽", "name": "flexed biceps: medium skin tone" }, { "no": 1242, "code": "1F4AA 1F3FE", "char": "💪🏾", "name": "flexed biceps: medium-dark skin tone" }, { "no": 1243, "code": "1F4AA 1F3FF", "char": "💪🏿", "name": "flexed biceps: dark skin tone" }, { "no": 1244, "code": "1F448", "char": "👈", "name": "backhand index pointing left" }, { "no": 1245, "code": "1F448 1F3FB", "char": "👈🏻", "name": "backhand index pointing left: light skin tone" }, { "no": 1246, "code": "1F448 1F3FC", "char": "👈🏼", "name": "backhand index pointing left: medium-light skin tone" }, { "no": 1247, "code": "1F448 1F3FD", "char": "👈🏽", "name": "backhand index pointing left: medium skin tone" }, { "no": 1248, "code": "1F448 1F3FE", "char": "👈🏾", "name": "backhand index pointing left: medium-dark skin tone" }, { "no": 1249, "code": "1F448 1F3FF", "char": "👈🏿", "name": "backhand index pointing left: dark skin tone" }, { "no": 1250, "code": "1F449", "char": "👉", "name": "backhand index pointing right" }, { "no": 1251, "code": "1F449 1F3FB", "char": "👉🏻", "name": "backhand index pointing right: light skin tone" }, { "no": 1252, "code": "1F449 1F3FC", "char": "👉🏼", "name": "backhand index pointing right: medium-light skin tone" }, { "no": 1253, "code": "1F449 1F3FD", "char": "👉🏽", "name": "backhand index pointing right: medium skin tone" }, { "no": 1254, "code": "1F449 1F3FE", "char": "👉🏾", "name": "backhand index pointing right: medium-dark skin tone" }, { "no": 1255, "code": "1F449 1F3FF", "char": "👉🏿", "name": "backhand index pointing right: dark skin tone" }, { "no": 1256, "code": "261D", "char": "☝", "name": "index pointing up" }, { "no": 1257, "code": "261D 1F3FB", "char": "☝🏻", "name": "index pointing up: light skin tone" }, { "no": 1258, "code": "261D 1F3FC", "char": "☝🏼", "name": "index pointing up: medium-light skin tone" }, { "no": 1259, "code": "261D 1F3FD", "char": "☝🏽", "name": "index pointing up: medium skin tone" }, { "no": 1260, "code": "261D 1F3FE", "char": "☝🏾", "name": "index pointing up: medium-dark skin tone" }, { "no": 1261, "code": "261D 1F3FF", "char": "☝🏿", "name": "index pointing up: dark skin tone" }, { "no": 1262, "code": "1F446", "char": "👆", "name": "backhand index pointing up" }, { "no": 1263, "code": "1F446 1F3FB", "char": "👆🏻", "name": "backhand index pointing up: light skin tone" }, { "no": 1264, "code": "1F446 1F3FC", "char": "👆🏼", "name": "backhand index pointing up: medium-light skin tone" }, { "no": 1265, "code": "1F446 1F3FD", "char": "👆🏽", "name": "backhand index pointing up: medium skin tone" }, { "no": 1266, "code": "1F446 1F3FE", "char": "👆🏾", "name": "backhand index pointing up: medium-dark skin tone" }, { "no": 1267, "code": "1F446 1F3FF", "char": "👆🏿", "name": "backhand index pointing up: dark skin tone" }, { "no": 1268, "code": "1F595", "char": "🖕", "name": "middle finger" }, { "no": 1269, "code": "1F595 1F3FB", "char": "🖕🏻", "name": "middle finger: light skin tone" }, { "no": 1270, "code": "1F595 1F3FC", "char": "🖕🏼", "name": "middle finger: medium-light skin tone" }, { "no": 1271, "code": "1F595 1F3FD", "char": "🖕🏽", "name": "middle finger: medium skin tone" }, { "no": 1272, "code": "1F595 1F3FE", "char": "🖕🏾", "name": "middle finger: medium-dark skin tone" }, { "no": 1273, "code": "1F595 1F3FF", "char": "🖕🏿", "name": "middle finger: dark skin tone" }, { "no": 1274, "code": "1F447", "char": "👇", "name": "backhand index pointing down" }, { "no": 1275, "code": "1F447 1F3FB", "char": "👇🏻", "name": "backhand index pointing down: light skin tone" }, { "no": 1276, "code": "1F447 1F3FC", "char": "👇🏼", "name": "backhand index pointing down: medium-light skin tone" }, { "no": 1277, "code": "1F447 1F3FD", "char": "👇🏽", "name": "backhand index pointing down: medium skin tone" }, { "no": 1278, "code": "1F447 1F3FE", "char": "👇🏾", "name": "backhand index pointing down: medium-dark skin tone" }, { "no": 1279, "code": "1F447 1F3FF", "char": "👇🏿", "name": "backhand index pointing down: dark skin tone" }, { "no": 1280, "code": "270C", "char": "✌", "name": "victory hand" }, { "no": 1281, "code": "270C 1F3FB", "char": "✌🏻", "name": "victory hand: light skin tone" }, { "no": 1282, "code": "270C 1F3FC", "char": "✌🏼", "name": "victory hand: medium-light skin tone" }, { "no": 1283, "code": "270C 1F3FD", "char": "✌🏽", "name": "victory hand: medium skin tone" }, { "no": 1284, "code": "270C 1F3FE", "char": "✌🏾", "name": "victory hand: medium-dark skin tone" }, { "no": 1285, "code": "270C 1F3FF", "char": "✌🏿", "name": "victory hand: dark skin tone" }, { "no": 1286, "code": "1F91E", "char": "🤞", "name": "crossed fingers" }, { "no": 1287, "code": "1F91E 1F3FB", "char": "🤞🏻", "name": "crossed fingers: light skin tone" }, { "no": 1288, "code": "1F91E 1F3FC", "char": "🤞🏼", "name": "crossed fingers: medium-light skin tone" }, { "no": 1289, "code": "1F91E 1F3FD", "char": "🤞🏽", "name": "crossed fingers: medium skin tone" }, { "no": 1290, "code": "1F91E 1F3FE", "char": "🤞🏾", "name": "crossed fingers: medium-dark skin tone" }, { "no": 1291, "code": "1F91E 1F3FF", "char": "🤞🏿", "name": "crossed fingers: dark skin tone" }, { "no": 1292, "code": "1F596", "char": "🖖", "name": "vulcan salute" }, { "no": 1293, "code": "1F596 1F3FB", "char": "🖖🏻", "name": "vulcan salute: light skin tone" }, { "no": 1294, "code": "1F596 1F3FC", "char": "🖖🏼", "name": "vulcan salute: medium-light skin tone" }, { "no": 1295, "code": "1F596 1F3FD", "char": "🖖🏽", "name": "vulcan salute: medium skin tone" }, { "no": 1296, "code": "1F596 1F3FE", "char": "🖖🏾", "name": "vulcan salute: medium-dark skin tone" }, { "no": 1297, "code": "1F596 1F3FF", "char": "🖖🏿", "name": "vulcan salute: dark skin tone" }, { "no": 1298, "code": "1F918", "char": "🤘", "name": "sign of the horns" }, { "no": 1299, "code": "1F918 1F3FB", "char": "🤘🏻", "name": "sign of the horns: light skin tone" }, { "no": 1300, "code": "1F918 1F3FC", "char": "🤘🏼", "name": "sign of the horns: medium-light skin tone" }, { "no": 1301, "code": "1F918 1F3FD", "char": "🤘🏽", "name": "sign of the horns: medium skin tone" }, { "no": 1302, "code": "1F918 1F3FE", "char": "🤘🏾", "name": "sign of the horns: medium-dark skin tone" }, { "no": 1303, "code": "1F918 1F3FF", "char": "🤘🏿", "name": "sign of the horns: dark skin tone" }, { "no": 1304, "code": "1F919", "char": "🤙", "name": "call me hand" }, { "no": 1305, "code": "1F919 1F3FB", "char": "🤙🏻", "name": "call me hand: light skin tone" }, { "no": 1306, "code": "1F919 1F3FC", "char": "🤙🏼", "name": "call me hand: medium-light skin tone" }, { "no": 1307, "code": "1F919 1F3FD", "char": "🤙🏽", "name": "call me hand: medium skin tone" }, { "no": 1308, "code": "1F919 1F3FE", "char": "🤙🏾", "name": "call me hand: medium-dark skin tone" }, { "no": 1309, "code": "1F919 1F3FF", "char": "🤙🏿", "name": "call me hand: dark skin tone" }, { "no": 1310, "code": "1F590", "char": "🖐", "name": "hand with fingers splayed" }, { "no": 1311, "code": "1F590 1F3FB", "char": "🖐🏻", "name": "hand with fingers splayed: light skin tone" }, { "no": 1312, "code": "1F590 1F3FC", "char": "🖐🏼", "name": "hand with fingers splayed: medium-light skin tone" }, { "no": 1313, "code": "1F590 1F3FD", "char": "🖐🏽", "name": "hand with fingers splayed: medium skin tone" }, { "no": 1314, "code": "1F590 1F3FE", "char": "🖐🏾", "name": "hand with fingers splayed: medium-dark skin tone" }, { "no": 1315, "code": "1F590 1F3FF", "char": "🖐🏿", "name": "hand with fingers splayed: dark skin tone" }, { "no": 1316, "code": "270B", "char": "✋", "name": "raised hand" }, { "no": 1317, "code": "270B 1F3FB", "char": "✋🏻", "name": "raised hand: light skin tone" }, { "no": 1318, "code": "270B 1F3FC", "char": "✋🏼", "name": "raised hand: medium-light skin tone" }, { "no": 1319, "code": "270B 1F3FD", "char": "✋🏽", "name": "raised hand: medium skin tone" }, { "no": 1320, "code": "270B 1F3FE", "char": "✋🏾", "name": "raised hand: medium-dark skin tone" }, { "no": 1321, "code": "270B 1F3FF", "char": "✋🏿", "name": "raised hand: dark skin tone" }, { "no": 1322, "code": "1F44C", "char": "👌", "name": "OK hand" }, { "no": 1323, "code": "1F44C 1F3FB", "char": "👌🏻", "name": "OK hand: light skin tone" }, { "no": 1324, "code": "1F44C 1F3FC", "char": "👌🏼", "name": "OK hand: medium-light skin tone" }, { "no": 1325, "code": "1F44C 1F3FD", "char": "👌🏽", "name": "OK hand: medium skin tone" }, { "no": 1326, "code": "1F44C 1F3FE", "char": "👌🏾", "name": "OK hand: medium-dark skin tone" }, { "no": 1327, "code": "1F44C 1F3FF", "char": "👌🏿", "name": "OK hand: dark skin tone" }, { "no": 1328, "code": "1F44D", "char": "👍", "name": "thumbs up" }, { "no": 1329, "code": "1F44D 1F3FB", "char": "👍🏻", "name": "thumbs up: light skin tone" }, { "no": 1330, "code": "1F44D 1F3FC", "char": "👍🏼", "name": "thumbs up: medium-light skin tone" }, { "no": 1331, "code": "1F44D 1F3FD", "char": "👍🏽", "name": "thumbs up: medium skin tone" }, { "no": 1332, "code": "1F44D 1F3FE", "char": "👍🏾", "name": "thumbs up: medium-dark skin tone" }, { "no": 1333, "code": "1F44D 1F3FF", "char": "👍🏿", "name": "thumbs up: dark skin tone" }, { "no": 1334, "code": "1F44E", "char": "👎", "name": "thumbs down" }, { "no": 1335, "code": "1F44E 1F3FB", "char": "👎🏻", "name": "thumbs down: light skin tone" }, { "no": 1336, "code": "1F44E 1F3FC", "char": "👎🏼", "name": "thumbs down: medium-light skin tone" }, { "no": 1337, "code": "1F44E 1F3FD", "char": "👎🏽", "name": "thumbs down: medium skin tone" }, { "no": 1338, "code": "1F44E 1F3FE", "char": "👎🏾", "name": "thumbs down: medium-dark skin tone" }, { "no": 1339, "code": "1F44E 1F3FF", "char": "👎🏿", "name": "thumbs down: dark skin tone" }, { "no": 1340, "code": "270A", "char": "✊", "name": "raised fist" }, { "no": 1341, "code": "270A 1F3FB", "char": "✊🏻", "name": "raised fist: light skin tone" }, { "no": 1342, "code": "270A 1F3FC", "char": "✊🏼", "name": "raised fist: medium-light skin tone" }, { "no": 1343, "code": "270A 1F3FD", "char": "✊🏽", "name": "raised fist: medium skin tone" }, { "no": 1344, "code": "270A 1F3FE", "char": "✊🏾", "name": "raised fist: medium-dark skin tone" }, { "no": 1345, "code": "270A 1F3FF", "char": "✊🏿", "name": "raised fist: dark skin tone" }, { "no": 1346, "code": "1F44A", "char": "👊", "name": "oncoming fist" }, { "no": 1347, "code": "1F44A 1F3FB", "char": "👊🏻", "name": "oncoming fist: light skin tone" }, { "no": 1348, "code": "1F44A 1F3FC", "char": "👊🏼", "name": "oncoming fist: medium-light skin tone" }, { "no": 1349, "code": "1F44A 1F3FD", "char": "👊🏽", "name": "oncoming fist: medium skin tone" }, { "no": 1350, "code": "1F44A 1F3FE", "char": "👊🏾", "name": "oncoming fist: medium-dark skin tone" }, { "no": 1351, "code": "1F44A 1F3FF", "char": "👊🏿", "name": "oncoming fist: dark skin tone" }, { "no": 1352, "code": "1F91B", "char": "🤛", "name": "left-facing fist" }, { "no": 1353, "code": "1F91B 1F3FB", "char": "🤛🏻", "name": "left-facing fist: light skin tone" }, { "no": 1354, "code": "1F91B 1F3FC", "char": "🤛🏼", "name": "left-facing fist: medium-light skin tone" }, { "no": 1355, "code": "1F91B 1F3FD", "char": "🤛🏽", "name": "left-facing fist: medium skin tone" }, { "no": 1356, "code": "1F91B 1F3FE", "char": "🤛🏾", "name": "left-facing fist: medium-dark skin tone" }, { "no": 1357, "code": "1F91B 1F3FF", "char": "🤛🏿", "name": "left-facing fist: dark skin tone" }, { "no": 1358, "code": "1F91C", "char": "🤜", "name": "right-facing fist" }, { "no": 1359, "code": "1F91C 1F3FB", "char": "🤜🏻", "name": "right-facing fist: light skin tone" }, { "no": 1360, "code": "1F91C 1F3FC", "char": "🤜🏼", "name": "right-facing fist: medium-light skin tone" }, { "no": 1361, "code": "1F91C 1F3FD", "char": "🤜🏽", "name": "right-facing fist: medium skin tone" }, { "no": 1362, "code": "1F91C 1F3FE", "char": "🤜🏾", "name": "right-facing fist: medium-dark skin tone" }, { "no": 1363, "code": "1F91C 1F3FF", "char": "🤜🏿", "name": "right-facing fist: dark skin tone" }, { "no": 1364, "code": "1F91A", "char": "🤚", "name": "raised back of hand" }, { "no": 1365, "code": "1F91A 1F3FB", "char": "🤚🏻", "name": "raised back of hand: light skin tone" }, { "no": 1366, "code": "1F91A 1F3FC", "char": "🤚🏼", "name": "raised back of hand: medium-light skin tone" }, { "no": 1367, "code": "1F91A 1F3FD", "char": "🤚🏽", "name": "raised back of hand: medium skin tone" }, { "no": 1368, "code": "1F91A 1F3FE", "char": "🤚🏾", "name": "raised back of hand: medium-dark skin tone" }, { "no": 1369, "code": "1F91A 1F3FF", "char": "🤚🏿", "name": "raised back of hand: dark skin tone" }, { "no": 1370, "code": "1F44B", "char": "👋", "name": "waving hand" }, { "no": 1371, "code": "1F44B 1F3FB", "char": "👋🏻", "name": "waving hand: light skin tone" }, { "no": 1372, "code": "1F44B 1F3FC", "char": "👋🏼", "name": "waving hand: medium-light skin tone" }, { "no": 1373, "code": "1F44B 1F3FD", "char": "👋🏽", "name": "waving hand: medium skin tone" }, { "no": 1374, "code": "1F44B 1F3FE", "char": "👋🏾", "name": "waving hand: medium-dark skin tone" }, { "no": 1375, "code": "1F44B 1F3FF", "char": "👋🏿", "name": "waving hand: dark skin tone" }, { "no": 1376, "code": "1F91F", "char": "🤟", "name": "⊛ love-you gesture" }, { "no": 1377, "code": "1F91F 1F3FB", "char": "🤟🏻", "name": "⊛ love-you gesture: light skin tone" }, { "no": 1378, "code": "1F91F 1F3FC", "char": "🤟🏼", "name": "⊛ love-you gesture: medium-light skin tone" }, { "no": 1379, "code": "1F91F 1F3FD", "char": "🤟🏽", "name": "⊛ love-you gesture: medium skin tone" }, { "no": 1380, "code": "1F91F 1F3FE", "char": "🤟🏾", "name": "⊛ love-you gesture: medium-dark skin tone" }, { "no": 1381, "code": "1F91F 1F3FF", "char": "🤟🏿", "name": "⊛ love-you gesture: dark skin tone" }, { "no": 1382, "code": "270D", "char": "✍", "name": "writing hand" }, { "no": 1383, "code": "270D 1F3FB", "char": "✍🏻", "name": "writing hand: light skin tone" }, { "no": 1384, "code": "270D 1F3FC", "char": "✍🏼", "name": "writing hand: medium-light skin tone" }, { "no": 1385, "code": "270D 1F3FD", "char": "✍🏽", "name": "writing hand: medium skin tone" }, { "no": 1386, "code": "270D 1F3FE", "char": "✍🏾", "name": "writing hand: medium-dark skin tone" }, { "no": 1387, "code": "270D 1F3FF", "char": "✍🏿", "name": "writing hand: dark skin tone" }, { "no": 1388, "code": "1F44F", "char": "👏", "name": "clapping hands" }, { "no": 1389, "code": "1F44F 1F3FB", "char": "👏🏻", "name": "clapping hands: light skin tone" }, { "no": 1390, "code": "1F44F 1F3FC", "char": "👏🏼", "name": "clapping hands: medium-light skin tone" }, { "no": 1391, "code": "1F44F 1F3FD", "char": "👏🏽", "name": "clapping hands: medium skin tone" }, { "no": 1392, "code": "1F44F 1F3FE", "char": "👏🏾", "name": "clapping hands: medium-dark skin tone" }, { "no": 1393, "code": "1F44F 1F3FF", "char": "👏🏿", "name": "clapping hands: dark skin tone" }, { "no": 1394, "code": "1F450", "char": "👐", "name": "open hands" }, { "no": 1395, "code": "1F450 1F3FB", "char": "👐🏻", "name": "open hands: light skin tone" }, { "no": 1396, "code": "1F450 1F3FC", "char": "👐🏼", "name": "open hands: medium-light skin tone" }, { "no": 1397, "code": "1F450 1F3FD", "char": "👐🏽", "name": "open hands: medium skin tone" }, { "no": 1398, "code": "1F450 1F3FE", "char": "👐🏾", "name": "open hands: medium-dark skin tone" }, { "no": 1399, "code": "1F450 1F3FF", "char": "👐🏿", "name": "open hands: dark skin tone" }, { "no": 1400, "code": "1F64C", "char": "🙌", "name": "raising hands" }, { "no": 1401, "code": "1F64C 1F3FB", "char": "🙌🏻", "name": "raising hands: light skin tone" }, { "no": 1402, "code": "1F64C 1F3FC", "char": "🙌🏼", "name": "raising hands: medium-light skin tone" }, { "no": 1403, "code": "1F64C 1F3FD", "char": "🙌🏽", "name": "raising hands: medium skin tone" }, { "no": 1404, "code": "1F64C 1F3FE", "char": "🙌🏾", "name": "raising hands: medium-dark skin tone" }, { "no": 1405, "code": "1F64C 1F3FF", "char": "🙌🏿", "name": "raising hands: dark skin tone" }, { "no": 1406, "code": "1F932", "char": "🤲", "name": "⊛ palms up together" }, { "no": 1407, "code": "1F932 1F3FB", "char": "🤲🏻", "name": "⊛ palms up together: light skin tone" }, { "no": 1408, "code": "1F932 1F3FC", "char": "🤲🏼", "name": "⊛ palms up together: medium-light skin tone" }, { "no": 1409, "code": "1F932 1F3FD", "char": "🤲🏽", "name": "⊛ palms up together: medium skin tone" }, { "no": 1410, "code": "1F932 1F3FE", "char": "🤲🏾", "name": "⊛ palms up together: medium-dark skin tone" }, { "no": 1411, "code": "1F932 1F3FF", "char": "🤲🏿", "name": "⊛ palms up together: dark skin tone" }, { "no": 1412, "code": "1F64F", "char": "🙏", "name": "folded hands" }, { "no": 1413, "code": "1F64F 1F3FB", "char": "🙏🏻", "name": "folded hands: light skin tone" }, { "no": 1414, "code": "1F64F 1F3FC", "char": "🙏🏼", "name": "folded hands: medium-light skin tone" }, { "no": 1415, "code": "1F64F 1F3FD", "char": "🙏🏽", "name": "folded hands: medium skin tone" }, { "no": 1416, "code": "1F64F 1F3FE", "char": "🙏🏾", "name": "folded hands: medium-dark skin tone" }, { "no": 1417, "code": "1F64F 1F3FF", "char": "🙏🏿", "name": "folded hands: dark skin tone" }, { "no": 1418, "code": "1F91D", "char": "🤝", "name": "handshake" }, { "no": 1419, "code": "1F485", "char": "💅", "name": "nail polish" }, { "no": 1420, "code": "1F485 1F3FB", "char": "💅🏻", "name": "nail polish: light skin tone" }, { "no": 1421, "code": "1F485 1F3FC", "char": "💅🏼", "name": "nail polish: medium-light skin tone" }, { "no": 1422, "code": "1F485 1F3FD", "char": "💅🏽", "name": "nail polish: medium skin tone" }, { "no": 1423, "code": "1F485 1F3FE", "char": "💅🏾", "name": "nail polish: medium-dark skin tone" }, { "no": 1424, "code": "1F485 1F3FF", "char": "💅🏿", "name": "nail polish: dark skin tone" }, { "no": 1425, "code": "1F442", "char": "👂", "name": "ear" }, { "no": 1426, "code": "1F442 1F3FB", "char": "👂🏻", "name": "ear: light skin tone" }, { "no": 1427, "code": "1F442 1F3FC", "char": "👂🏼", "name": "ear: medium-light skin tone" }, { "no": 1428, "code": "1F442 1F3FD", "char": "👂🏽", "name": "ear: medium skin tone" }, { "no": 1429, "code": "1F442 1F3FE", "char": "👂🏾", "name": "ear: medium-dark skin tone" }, { "no": 1430, "code": "1F442 1F3FF", "char": "👂🏿", "name": "ear: dark skin tone" }, { "no": 1431, "code": "1F443", "char": "👃", "name": "nose" }, { "no": 1432, "code": "1F443 1F3FB", "char": "👃🏻", "name": "nose: light skin tone" }, { "no": 1433, "code": "1F443 1F3FC", "char": "👃🏼", "name": "nose: medium-light skin tone" }, { "no": 1434, "code": "1F443 1F3FD", "char": "👃🏽", "name": "nose: medium skin tone" }, { "no": 1435, "code": "1F443 1F3FE", "char": "👃🏾", "name": "nose: medium-dark skin tone" }, { "no": 1436, "code": "1F443 1F3FF", "char": "👃🏿", "name": "nose: dark skin tone" }, { "no": 1437, "code": "1F463", "char": "👣", "name": "footprints" }, { "no": 1438, "code": "1F440", "char": "👀", "name": "eyes" }, { "no": 1439, "code": "1F441", "char": "👁", "name": "eye" }, { "no": 1440, "code": "1F441 FE0F 200D 1F5E8 FE0F", "char": "👁️‍🗨️", "name": "eye in speech bubble" }, { "no": 1441, "code": "1F9E0", "char": "🧠", "name": "⊛ brain" }, { "no": 1442, "code": "1F445", "char": "👅", "name": "tongue" }, { "no": 1443, "code": "1F444", "char": "👄", "name": "mouth" }, { "no": 1444, "code": "1F48B", "char": "💋", "name": "kiss mark" }, { "no": 1445, "code": "1F498", "char": "💘", "name": "heart with arrow" }, { "no": 1446, "code": "2764", "char": "❤", "name": "red heart" }, { "no": 1447, "code": "1F493", "char": "💓", "name": "beating heart" }, { "no": 1448, "code": "1F494", "char": "💔", "name": "broken heart" }, { "no": 1449, "code": "1F495", "char": "💕", "name": "two hearts" }, { "no": 1450, "code": "1F496", "char": "💖", "name": "sparkling heart" }, { "no": 1451, "code": "1F497", "char": "💗", "name": "growing heart" }, { "no": 1452, "code": "1F499", "char": "💙", "name": "blue heart" }, { "no": 1453, "code": "1F49A", "char": "💚", "name": "green heart" }, { "no": 1454, "code": "1F49B", "char": "💛", "name": "yellow heart" }, { "no": 1455, "code": "1F9E1", "char": "🧡", "name": "⊛ orange heart" }, { "no": 1456, "code": "1F49C", "char": "💜", "name": "purple heart" }, { "no": 1457, "code": "1F5A4", "char": "🖤", "name": "black heart" }, { "no": 1458, "code": "1F49D", "char": "💝", "name": "heart with ribbon" }, { "no": 1459, "code": "1F49E", "char": "💞", "name": "revolving hearts" }, { "no": 1460, "code": "1F49F", "char": "💟", "name": "heart decoration" }, { "no": 1461, "code": "2763", "char": "❣", "name": "heavy heart exclamation" }, { "no": 1462, "code": "1F48C", "char": "💌", "name": "love letter" }, { "no": 1463, "code": "1F4A4", "char": "💤", "name": "zzz" }, { "no": 1464, "code": "1F4A2", "char": "💢", "name": "anger symbol" }, { "no": 1465, "code": "1F4A3", "char": "💣", "name": "bomb" }, { "no": 1466, "code": "1F4A5", "char": "💥", "name": "collision" }, { "no": 1467, "code": "1F4A6", "char": "💦", "name": "sweat droplets" }, { "no": 1468, "code": "1F4A8", "char": "💨", "name": "dashing away" }, { "no": 1469, "code": "1F4AB", "char": "💫", "name": "dizzy" }, { "no": 1470, "code": "1F4AC", "char": "💬", "name": "speech balloon" }, { "no": 1471, "code": "1F5E8", "char": "🗨", "name": "left speech bubble" }, { "no": 1472, "code": "1F5EF", "char": "🗯", "name": "right anger bubble" }, { "no": 1473, "code": "1F4AD", "char": "💭", "name": "thought balloon" }, { "no": 1474, "code": "1F573", "char": "🕳", "name": "hole" }, { "no": 1475, "code": "1F453", "char": "👓", "name": "glasses" }, { "no": 1476, "code": "1F576", "char": "🕶", "name": "sunglasses" }, { "no": 1477, "code": "1F454", "char": "👔", "name": "necktie" }, { "no": 1478, "code": "1F455", "char": "👕", "name": "t-shirt" }, { "no": 1479, "code": "1F456", "char": "👖", "name": "jeans" }, { "no": 1480, "code": "1F9E3", "char": "🧣", "name": "⊛ scarf" }, { "no": 1481, "code": "1F9E4", "char": "🧤", "name": "⊛ gloves" }, { "no": 1482, "code": "1F9E5", "char": "🧥", "name": "⊛ coat" }, { "no": 1483, "code": "1F9E6", "char": "🧦", "name": "⊛ socks" }, { "no": 1484, "code": "1F457", "char": "👗", "name": "dress" }, { "no": 1485, "code": "1F458", "char": "👘", "name": "kimono" }, { "no": 1486, "code": "1F459", "char": "👙", "name": "bikini" }, { "no": 1487, "code": "1F45A", "char": "👚", "name": "woman’s clothes" }, { "no": 1488, "code": "1F45B", "char": "👛", "name": "purse" }, { "no": 1489, "code": "1F45C", "char": "👜", "name": "handbag" }, { "no": 1490, "code": "1F45D", "char": "👝", "name": "clutch bag" }, { "no": 1491, "code": "1F6CD", "char": "🛍", "name": "shopping bags" }, { "no": 1492, "code": "1F392", "char": "🎒", "name": "school backpack" }, { "no": 1493, "code": "1F45E", "char": "👞", "name": "man’s shoe" }, { "no": 1494, "code": "1F45F", "char": "👟", "name": "running shoe" }, { "no": 1495, "code": "1F460", "char": "👠", "name": "high-heeled shoe" }, { "no": 1496, "code": "1F461", "char": "👡", "name": "woman’s sandal" }, { "no": 1497, "code": "1F462", "char": "👢", "name": "woman’s boot" }, { "no": 1498, "code": "1F451", "char": "👑", "name": "crown" }, { "no": 1499, "code": "1F452", "char": "👒", "name": "woman’s hat" }, { "no": 1500, "code": "1F3A9", "char": "🎩", "name": "top hat" }, { "no": 1501, "code": "1F393", "char": "🎓", "name": "graduation cap" }, { "no": 1502, "code": "1F9E2", "char": "🧢", "name": "⊛ billed cap" }, { "no": 1503, "code": "26D1", "char": "⛑", "name": "rescue worker’s helmet" }, { "no": 1504, "code": "1F4FF", "char": "📿", "name": "prayer beads" }, { "no": 1505, "code": "1F484", "char": "💄", "name": "lipstick" }, { "no": 1506, "code": "1F48D", "char": "💍", "name": "ring" }, { "no": 1507, "code": "1F48E", "char": "💎", "name": "gem stone" }, { "no": 1508, "code": "1F435", "char": "🐵", "name": "monkey face" }, { "no": 1509, "code": "1F412", "char": "🐒", "name": "monkey" }, { "no": 1510, "code": "1F98D", "char": "🦍", "name": "gorilla" }, { "no": 1511, "code": "1F436", "char": "🐶", "name": "dog face" }, { "no": 1512, "code": "1F415", "char": "🐕", "name": "dog" }, { "no": 1513, "code": "1F429", "char": "🐩", "name": "poodle" }, { "no": 1514, "code": "1F43A", "char": "🐺", "name": "wolf face" }, { "no": 1515, "code": "1F98A", "char": "🦊", "name": "fox face" }, { "no": 1516, "code": "1F431", "char": "🐱", "name": "cat face" }, { "no": 1517, "code": "1F408", "char": "🐈", "name": "cat" }, { "no": 1518, "code": "1F981", "char": "🦁", "name": "lion face" }, { "no": 1519, "code": "1F42F", "char": "🐯", "name": "tiger face" }, { "no": 1520, "code": "1F405", "char": "🐅", "name": "tiger" }, { "no": 1521, "code": "1F406", "char": "🐆", "name": "leopard" }, { "no": 1522, "code": "1F434", "char": "🐴", "name": "horse face" }, { "no": 1523, "code": "1F40E", "char": "🐎", "name": "horse" }, { "no": 1524, "code": "1F984", "char": "🦄", "name": "unicorn face" }, { "no": 1525, "code": "1F993", "char": "🦓", "name": "⊛ zebra" }, { "no": 1526, "code": "1F98C", "char": "🦌", "name": "deer" }, { "no": 1527, "code": "1F42E", "char": "🐮", "name": "cow face" }, { "no": 1528, "code": "1F402", "char": "🐂", "name": "ox" }, { "no": 1529, "code": "1F403", "char": "🐃", "name": "water buffalo" }, { "no": 1530, "code": "1F404", "char": "🐄", "name": "cow" }, { "no": 1531, "code": "1F437", "char": "🐷", "name": "pig face" }, { "no": 1532, "code": "1F416", "char": "🐖", "name": "pig" }, { "no": 1533, "code": "1F417", "char": "🐗", "name": "boar" }, { "no": 1534, "code": "1F43D", "char": "🐽", "name": "pig nose" }, { "no": 1535, "code": "1F40F", "char": "🐏", "name": "ram" }, { "no": 1536, "code": "1F411", "char": "🐑", "name": "ewe" }, { "no": 1537, "code": "1F410", "char": "🐐", "name": "goat" }, { "no": 1538, "code": "1F42A", "char": "🐪", "name": "camel" }, { "no": 1539, "code": "1F42B", "char": "🐫", "name": "two-hump camel" }, { "no": 1540, "code": "1F992", "char": "🦒", "name": "⊛ giraffe" }, { "no": 1541, "code": "1F418", "char": "🐘", "name": "elephant" }, { "no": 1542, "code": "1F98F", "char": "🦏", "name": "rhinoceros" }, { "no": 1543, "code": "1F42D", "char": "🐭", "name": "mouse face" }, { "no": 1544, "code": "1F401", "char": "🐁", "name": "mouse" }, { "no": 1545, "code": "1F400", "char": "🐀", "name": "rat" }, { "no": 1546, "code": "1F439", "char": "🐹", "name": "hamster face" }, { "no": 1547, "code": "1F430", "char": "🐰", "name": "rabbit face" }, { "no": 1548, "code": "1F407", "char": "🐇", "name": "rabbit" }, { "no": 1549, "code": "1F43F", "char": "🐿", "name": "chipmunk" }, { "no": 1550, "code": "1F994", "char": "🦔", "name": "⊛ hedgehog" }, { "no": 1551, "code": "1F987", "char": "🦇", "name": "bat" }, { "no": 1552, "code": "1F43B", "char": "🐻", "name": "bear face" }, { "no": 1553, "code": "1F428", "char": "🐨", "name": "koala" }, { "no": 1554, "code": "1F43C", "char": "🐼", "name": "panda face" }, { "no": 1555, "code": "1F43E", "char": "🐾", "name": "paw prints" }, { "no": 1556, "code": "1F983", "char": "🦃", "name": "turkey" }, { "no": 1557, "code": "1F414", "char": "🐔", "name": "chicken" }, { "no": 1558, "code": "1F413", "char": "🐓", "name": "rooster" }, { "no": 1559, "code": "1F423", "char": "🐣", "name": "hatching chick" }, { "no": 1560, "code": "1F424", "char": "🐤", "name": "baby chick" }, { "no": 1561, "code": "1F425", "char": "🐥", "name": "front-facing baby chick" }, { "no": 1562, "code": "1F426", "char": "🐦", "name": "bird" }, { "no": 1563, "code": "1F427", "char": "🐧", "name": "penguin" }, { "no": 1564, "code": "1F54A", "char": "🕊", "name": "dove" }, { "no": 1565, "code": "1F985", "char": "🦅", "name": "eagle" }, { "no": 1566, "code": "1F986", "char": "🦆", "name": "duck" }, { "no": 1567, "code": "1F989", "char": "🦉", "name": "owl" }, { "no": 1568, "code": "1F438", "char": "🐸", "name": "frog face" }, { "no": 1569, "code": "1F40A", "char": "🐊", "name": "crocodile" }, { "no": 1570, "code": "1F422", "char": "🐢", "name": "turtle" }, { "no": 1571, "code": "1F98E", "char": "🦎", "name": "lizard" }, { "no": 1572, "code": "1F40D", "char": "🐍", "name": "snake" }, { "no": 1573, "code": "1F432", "char": "🐲", "name": "dragon face" }, { "no": 1574, "code": "1F409", "char": "🐉", "name": "dragon" }, { "no": 1575, "code": "1F995", "char": "🦕", "name": "⊛ sauropod" }, { "no": 1576, "code": "1F996", "char": "🦖", "name": "⊛ T-Rex" }, { "no": 1577, "code": "1F433", "char": "🐳", "name": "spouting whale" }, { "no": 1578, "code": "1F40B", "char": "🐋", "name": "whale" }, { "no": 1579, "code": "1F42C", "char": "🐬", "name": "dolphin" }, { "no": 1580, "code": "1F41F", "char": "🐟", "name": "fish" }, { "no": 1581, "code": "1F420", "char": "🐠", "name": "tropical fish" }, { "no": 1582, "code": "1F421", "char": "🐡", "name": "blowfish" }, { "no": 1583, "code": "1F988", "char": "🦈", "name": "shark" }, { "no": 1584, "code": "1F419", "char": "🐙", "name": "octopus" }, { "no": 1585, "code": "1F41A", "char": "🐚", "name": "spiral shell" }, { "no": 1586, "code": "1F980", "char": "🦀", "name": "crab" }, { "no": 1587, "code": "1F990", "char": "🦐", "name": "shrimp" }, { "no": 1588, "code": "1F991", "char": "🦑", "name": "squid" }, { "no": 1589, "code": "1F40C", "char": "🐌", "name": "snail" }, { "no": 1590, "code": "1F98B", "char": "🦋", "name": "butterfly" }, { "no": 1591, "code": "1F41B", "char": "🐛", "name": "bug" }, { "no": 1592, "code": "1F41C", "char": "🐜", "name": "ant" }, { "no": 1593, "code": "1F41D", "char": "🐝", "name": "honeybee" }, { "no": 1594, "code": "1F41E", "char": "🐞", "name": "lady beetle" }, { "no": 1595, "code": "1F997", "char": "🦗", "name": "⊛ cricket" }, { "no": 1596, "code": "1F577", "char": "🕷", "name": "spider" }, { "no": 1597, "code": "1F578", "char": "🕸", "name": "spider web" }, { "no": 1598, "code": "1F982", "char": "🦂", "name": "scorpion" }, { "no": 1599, "code": "1F490", "char": "💐", "name": "bouquet" }, { "no": 1600, "code": "1F338", "char": "🌸", "name": "cherry blossom" }, { "no": 1601, "code": "1F4AE", "char": "💮", "name": "white flower" }, { "no": 1602, "code": "1F3F5", "char": "🏵", "name": "rosette" }, { "no": 1603, "code": "1F339", "char": "🌹", "name": "rose" }, { "no": 1604, "code": "1F940", "char": "🥀", "name": "wilted flower" }, { "no": 1605, "code": "1F33A", "char": "🌺", "name": "hibiscus" }, { "no": 1606, "code": "1F33B", "char": "🌻", "name": "sunflower" }, { "no": 1607, "code": "1F33C", "char": "🌼", "name": "blossom" }, { "no": 1608, "code": "1F337", "char": "🌷", "name": "tulip" }, { "no": 1609, "code": "1F331", "char": "🌱", "name": "seedling" }, { "no": 1610, "code": "1F332", "char": "🌲", "name": "evergreen tree" }, { "no": 1611, "code": "1F333", "char": "🌳", "name": "deciduous tree" }, { "no": 1612, "code": "1F334", "char": "🌴", "name": "palm tree" }, { "no": 1613, "code": "1F335", "char": "🌵", "name": "cactus" }, { "no": 1614, "code": "1F33E", "char": "🌾", "name": "sheaf of rice" }, { "no": 1615, "code": "1F33F", "char": "🌿", "name": "herb" }, { "no": 1616, "code": "2618", "char": "☘", "name": "shamrock" }, { "no": 1617, "code": "1F340", "char": "🍀", "name": "four leaf clover" }, { "no": 1618, "code": "1F341", "char": "🍁", "name": "maple leaf" }, { "no": 1619, "code": "1F342", "char": "🍂", "name": "fallen leaf" }, { "no": 1620, "code": "1F343", "char": "🍃", "name": "leaf fluttering in wind" }, { "no": 1621, "code": "1F347", "char": "🍇", "name": "grapes" }, { "no": 1622, "code": "1F348", "char": "🍈", "name": "melon" }, { "no": 1623, "code": "1F349", "char": "🍉", "name": "watermelon" }, { "no": 1624, "code": "1F34A", "char": "🍊", "name": "tangerine" }, { "no": 1625, "code": "1F34B", "char": "🍋", "name": "lemon" }, { "no": 1626, "code": "1F34C", "char": "🍌", "name": "banana" }, { "no": 1627, "code": "1F34D", "char": "🍍", "name": "pineapple" }, { "no": 1628, "code": "1F34E", "char": "🍎", "name": "red apple" }, { "no": 1629, "code": "1F34F", "char": "🍏", "name": "green apple" }, { "no": 1630, "code": "1F350", "char": "🍐", "name": "pear" }, { "no": 1631, "code": "1F351", "char": "🍑", "name": "peach" }, { "no": 1632, "code": "1F352", "char": "🍒", "name": "cherries" }, { "no": 1633, "code": "1F353", "char": "🍓", "name": "strawberry" }, { "no": 1634, "code": "1F95D", "char": "🥝", "name": "kiwi fruit" }, { "no": 1635, "code": "1F345", "char": "🍅", "name": "tomato" }, { "no": 1636, "code": "1F965", "char": "🥥", "name": "⊛ coconut" }, { "no": 1637, "code": "1F951", "char": "🥑", "name": "avocado" }, { "no": 1638, "code": "1F346", "char": "🍆", "name": "eggplant" }, { "no": 1639, "code": "1F954", "char": "🥔", "name": "potato" }, { "no": 1640, "code": "1F955", "char": "🥕", "name": "carrot" }, { "no": 1641, "code": "1F33D", "char": "🌽", "name": "ear of corn" }, { "no": 1642, "code": "1F336", "char": "🌶", "name": "hot pepper" }, { "no": 1643, "code": "1F952", "char": "🥒", "name": "cucumber" }, { "no": 1644, "code": "1F966", "char": "🥦", "name": "⊛ broccoli" }, { "no": 1645, "code": "1F344", "char": "🍄", "name": "mushroom" }, { "no": 1646, "code": "1F95C", "char": "🥜", "name": "peanuts" }, { "no": 1647, "code": "1F330", "char": "🌰", "name": "chestnut" }, { "no": 1648, "code": "1F35E", "char": "🍞", "name": "bread" }, { "no": 1649, "code": "1F950", "char": "🥐", "name": "croissant" }, { "no": 1650, "code": "1F956", "char": "🥖", "name": "baguette bread" }, { "no": 1651, "code": "1F968", "char": "🥨", "name": "⊛ pretzel" }, { "no": 1652, "code": "1F95E", "char": "🥞", "name": "pancakes" }, { "no": 1653, "code": "1F9C0", "char": "🧀", "name": "cheese wedge" }, { "no": 1654, "code": "1F356", "char": "🍖", "name": "meat on bone" }, { "no": 1655, "code": "1F357", "char": "🍗", "name": "poultry leg" }, { "no": 1656, "code": "1F969", "char": "🥩", "name": "⊛ cut of meat" }, { "no": 1657, "code": "1F953", "char": "🥓", "name": "bacon" }, { "no": 1658, "code": "1F354", "char": "🍔", "name": "hamburger" }, { "no": 1659, "code": "1F35F", "char": "🍟", "name": "french fries" }, { "no": 1660, "code": "1F355", "char": "🍕", "name": "pizza" }, { "no": 1661, "code": "1F32D", "char": "🌭", "name": "hot dog" }, { "no": 1662, "code": "1F96A", "char": "🥪", "name": "⊛ sandwich" }, { "no": 1663, "code": "1F32E", "char": "🌮", "name": "taco" }, { "no": 1664, "code": "1F32F", "char": "🌯", "name": "burrito" }, { "no": 1665, "code": "1F959", "char": "🥙", "name": "stuffed flatbread" }, { "no": 1666, "code": "1F95A", "char": "🥚", "name": "egg" }, { "no": 1667, "code": "1F373", "char": "🍳", "name": "cooking" }, { "no": 1668, "code": "1F958", "char": "🥘", "name": "shallow pan of food" }, { "no": 1669, "code": "1F372", "char": "🍲", "name": "pot of food" }, { "no": 1670, "code": "1F963", "char": "🥣", "name": "⊛ bowl with spoon" }, { "no": 1671, "code": "1F957", "char": "🥗", "name": "green salad" }, { "no": 1672, "code": "1F37F", "char": "🍿", "name": "popcorn" }, { "no": 1673, "code": "1F96B", "char": "🥫", "name": "⊛ canned food" }, { "no": 1674, "code": "1F371", "char": "🍱", "name": "bento box" }, { "no": 1675, "code": "1F358", "char": "🍘", "name": "rice cracker" }, { "no": 1676, "code": "1F359", "char": "🍙", "name": "rice ball" }, { "no": 1677, "code": "1F35A", "char": "🍚", "name": "cooked rice" }, { "no": 1678, "code": "1F35B", "char": "🍛", "name": "curry rice" }, { "no": 1679, "code": "1F35C", "char": "🍜", "name": "steaming bowl" }, { "no": 1680, "code": "1F35D", "char": "🍝", "name": "spaghetti" }, { "no": 1681, "code": "1F360", "char": "🍠", "name": "roasted sweet potato" }, { "no": 1682, "code": "1F362", "char": "🍢", "name": "oden" }, { "no": 1683, "code": "1F363", "char": "🍣", "name": "sushi" }, { "no": 1684, "code": "1F364", "char": "🍤", "name": "fried shrimp" }, { "no": 1685, "code": "1F365", "char": "🍥", "name": "fish cake with swirl" }, { "no": 1686, "code": "1F361", "char": "🍡", "name": "dango" }, { "no": 1687, "code": "1F95F", "char": "🥟", "name": "⊛ dumpling" }, { "no": 1688, "code": "1F960", "char": "🥠", "name": "⊛ fortune cookie" }, { "no": 1689, "code": "1F961", "char": "🥡", "name": "⊛ takeout box" }, { "no": 1690, "code": "1F366", "char": "🍦", "name": "soft ice cream" }, { "no": 1691, "code": "1F367", "char": "🍧", "name": "shaved ice" }, { "no": 1692, "code": "1F368", "char": "🍨", "name": "ice cream" }, { "no": 1693, "code": "1F369", "char": "🍩", "name": "doughnut" }, { "no": 1694, "code": "1F36A", "char": "🍪", "name": "cookie" }, { "no": 1695, "code": "1F382", "char": "🎂", "name": "birthday cake" }, { "no": 1696, "code": "1F370", "char": "🍰", "name": "shortcake" }, { "no": 1697, "code": "1F967", "char": "🥧", "name": "⊛ pie" }, { "no": 1698, "code": "1F36B", "char": "🍫", "name": "chocolate bar" }, { "no": 1699, "code": "1F36C", "char": "🍬", "name": "candy" }, { "no": 1700, "code": "1F36D", "char": "🍭", "name": "lollipop" }, { "no": 1701, "code": "1F36E", "char": "🍮", "name": "custard" }, { "no": 1702, "code": "1F36F", "char": "🍯", "name": "honey pot" }, { "no": 1703, "code": "1F37C", "char": "🍼", "name": "baby bottle" }, { "no": 1704, "code": "1F95B", "char": "🥛", "name": "glass of milk" }, { "no": 1705, "code": "2615", "char": "☕", "name": "hot beverage" }, { "no": 1706, "code": "1F375", "char": "🍵", "name": "teacup without handle" }, { "no": 1707, "code": "1F376", "char": "🍶", "name": "sake" }, { "no": 1708, "code": "1F37E", "char": "🍾", "name": "bottle with popping cork" }, { "no": 1709, "code": "1F377", "char": "🍷", "name": "wine glass" }, { "no": 1710, "code": "1F378", "char": "🍸", "name": "cocktail glass" }, { "no": 1711, "code": "1F379", "char": "🍹", "name": "tropical drink" }, { "no": 1712, "code": "1F37A", "char": "🍺", "name": "beer mug" }, { "no": 1713, "code": "1F37B", "char": "🍻", "name": "clinking beer mugs" }, { "no": 1714, "code": "1F942", "char": "🥂", "name": "clinking glasses" }, { "no": 1715, "code": "1F943", "char": "🥃", "name": "tumbler glass" }, { "no": 1716, "code": "1F964", "char": "🥤", "name": "⊛ cup with straw" }, { "no": 1717, "code": "1F962", "char": "🥢", "name": "⊛ chopsticks" }, { "no": 1718, "code": "1F37D", "char": "🍽", "name": "fork and knife with plate" }, { "no": 1719, "code": "1F374", "char": "🍴", "name": "fork and knife" }, { "no": 1720, "code": "1F944", "char": "🥄", "name": "spoon" }, { "no": 1721, "code": "1F52A", "char": "🔪", "name": "kitchen knife" }, { "no": 1722, "code": "1F3FA", "char": "🏺", "name": "amphora" }, { "no": 1723, "code": "1F30D", "char": "🌍", "name": "globe showing Europe-Africa" }, { "no": 1724, "code": "1F30E", "char": "🌎", "name": "globe showing Americas" }, { "no": 1725, "code": "1F30F", "char": "🌏", "name": "globe showing Asia-Australia" }, { "no": 1726, "code": "1F310", "char": "🌐", "name": "globe with meridians" }, { "no": 1727, "code": "1F5FA", "char": "🗺", "name": "world map" }, { "no": 1728, "code": "1F5FE", "char": "🗾", "name": "map of Japan" }, { "no": 1729, "code": "1F3D4", "char": "🏔", "name": "snow-capped mountain" }, { "no": 1730, "code": "26F0", "char": "⛰", "name": "mountain" }, { "no": 1731, "code": "1F30B", "char": "🌋", "name": "volcano" }, { "no": 1732, "code": "1F5FB", "char": "🗻", "name": "mount fuji" }, { "no": 1733, "code": "1F3D5", "char": "🏕", "name": "camping" }, { "no": 1734, "code": "1F3D6", "char": "🏖", "name": "beach with umbrella" }, { "no": 1735, "code": "1F3DC", "char": "🏜", "name": "desert" }, { "no": 1736, "code": "1F3DD", "char": "🏝", "name": "desert island" }, { "no": 1737, "code": "1F3DE", "char": "🏞", "name": "national park" }, { "no": 1738, "code": "1F3DF", "char": "🏟", "name": "stadium" }, { "no": 1739, "code": "1F3DB", "char": "🏛", "name": "classical building" }, { "no": 1740, "code": "1F3D7", "char": "🏗", "name": "building construction" }, { "no": 1741, "code": "1F3D8", "char": "🏘", "name": "houses" }, { "no": 1742, "code": "1F3D9", "char": "🏙", "name": "cityscape" }, { "no": 1743, "code": "1F3DA", "char": "🏚", "name": "derelict house" }, { "no": 1744, "code": "1F3E0", "char": "🏠", "name": "house" }, { "no": 1745, "code": "1F3E1", "char": "🏡", "name": "house with garden" }, { "no": 1746, "code": "1F3E2", "char": "🏢", "name": "office building" }, { "no": 1747, "code": "1F3E3", "char": "🏣", "name": "Japanese post office" }, { "no": 1748, "code": "1F3E4", "char": "🏤", "name": "post office" }, { "no": 1749, "code": "1F3E5", "char": "🏥", "name": "hospital" }, { "no": 1750, "code": "1F3E6", "char": "🏦", "name": "bank" }, { "no": 1751, "code": "1F3E8", "char": "🏨", "name": "hotel" }, { "no": 1752, "code": "1F3E9", "char": "🏩", "name": "love hotel" }, { "no": 1753, "code": "1F3EA", "char": "🏪", "name": "convenience store" }, { "no": 1754, "code": "1F3EB", "char": "🏫", "name": "school" }, { "no": 1755, "code": "1F3EC", "char": "🏬", "name": "department store" }, { "no": 1756, "code": "1F3ED", "char": "🏭", "name": "factory" }, { "no": 1757, "code": "1F3EF", "char": "🏯", "name": "Japanese castle" }, { "no": 1758, "code": "1F3F0", "char": "🏰", "name": "castle" }, { "no": 1759, "code": "1F492", "char": "💒", "name": "wedding" }, { "no": 1760, "code": "1F5FC", "char": "🗼", "name": "Tokyo tower" }, { "no": 1761, "code": "1F5FD", "char": "🗽", "name": "Statue of Liberty" }, { "no": 1762, "code": "26EA", "char": "⛪", "name": "church" }, { "no": 1763, "code": "1F54C", "char": "🕌", "name": "mosque" }, { "no": 1764, "code": "1F54D", "char": "🕍", "name": "synagogue" }, { "no": 1765, "code": "26E9", "char": "⛩", "name": "shinto shrine" }, { "no": 1766, "code": "1F54B", "char": "🕋", "name": "kaaba" }, { "no": 1767, "code": "26F2", "char": "⛲", "name": "fountain" }, { "no": 1768, "code": "26FA", "char": "⛺", "name": "tent" }, { "no": 1769, "code": "1F301", "char": "🌁", "name": "foggy" }, { "no": 1770, "code": "1F303", "char": "🌃", "name": "night with stars" }, { "no": 1771, "code": "1F304", "char": "🌄", "name": "sunrise over mountains" }, { "no": 1772, "code": "1F305", "char": "🌅", "name": "sunrise" }, { "no": 1773, "code": "1F306", "char": "🌆", "name": "cityscape at dusk" }, { "no": 1774, "code": "1F307", "char": "🌇", "name": "sunset" }, { "no": 1775, "code": "1F309", "char": "🌉", "name": "bridge at night" }, { "no": 1776, "code": "2668", "char": "♨", "name": "hot springs" }, { "no": 1777, "code": "1F30C", "char": "🌌", "name": "milky way" }, { "no": 1778, "code": "1F3A0", "char": "🎠", "name": "carousel horse" }, { "no": 1779, "code": "1F3A1", "char": "🎡", "name": "ferris wheel" }, { "no": 1780, "code": "1F3A2", "char": "🎢", "name": "roller coaster" }, { "no": 1781, "code": "1F488", "char": "💈", "name": "barber pole" }, { "no": 1782, "code": "1F3AA", "char": "🎪", "name": "circus tent" }, { "no": 1783, "code": "1F3AD", "char": "🎭", "name": "performing arts" }, { "no": 1784, "code": "1F5BC", "char": "🖼", "name": "framed picture" }, { "no": 1785, "code": "1F3A8", "char": "🎨", "name": "artist palette" }, { "no": 1786, "code": "1F3B0", "char": "🎰", "name": "slot machine" }, { "no": 1787, "code": "1F682", "char": "🚂", "name": "locomotive" }, { "no": 1788, "code": "1F683", "char": "🚃", "name": "railway car" }, { "no": 1789, "code": "1F684", "char": "🚄", "name": "high-speed train" }, { "no": 1790, "code": "1F685", "char": "🚅", "name": "bullet train" }, { "no": 1791, "code": "1F686", "char": "🚆", "name": "train" }, { "no": 1792, "code": "1F687", "char": "🚇", "name": "metro" }, { "no": 1793, "code": "1F688", "char": "🚈", "name": "light rail" }, { "no": 1794, "code": "1F689", "char": "🚉", "name": "station" }, { "no": 1795, "code": "1F68A", "char": "🚊", "name": "tram" }, { "no": 1796, "code": "1F69D", "char": "🚝", "name": "monorail" }, { "no": 1797, "code": "1F69E", "char": "🚞", "name": "mountain railway" }, { "no": 1798, "code": "1F68B", "char": "🚋", "name": "tram car" }, { "no": 1799, "code": "1F68C", "char": "🚌", "name": "bus" }, { "no": 1800, "code": "1F68D", "char": "🚍", "name": "oncoming bus" }, { "no": 1801, "code": "1F68E", "char": "🚎", "name": "trolleybus" }, { "no": 1802, "code": "1F690", "char": "🚐", "name": "minibus" }, { "no": 1803, "code": "1F691", "char": "🚑", "name": "ambulance" }, { "no": 1804, "code": "1F692", "char": "🚒", "name": "fire engine" }, { "no": 1805, "code": "1F693", "char": "🚓", "name": "police car" }, { "no": 1806, "code": "1F694", "char": "🚔", "name": "oncoming police car" }, { "no": 1807, "code": "1F695", "char": "🚕", "name": "taxi" }, { "no": 1808, "code": "1F696", "char": "🚖", "name": "oncoming taxi" }, { "no": 1809, "code": "1F697", "char": "🚗", "name": "automobile" }, { "no": 1810, "code": "1F698", "char": "🚘", "name": "oncoming automobile" }, { "no": 1811, "code": "1F699", "char": "🚙", "name": "sport utility vehicle" }, { "no": 1812, "code": "1F69A", "char": "🚚", "name": "delivery truck" }, { "no": 1813, "code": "1F69B", "char": "🚛", "name": "articulated lorry" }, { "no": 1814, "code": "1F69C", "char": "🚜", "name": "tractor" }, { "no": 1815, "code": "1F6B2", "char": "🚲", "name": "bicycle" }, { "no": 1816, "code": "1F6F4", "char": "🛴", "name": "kick scooter" }, { "no": 1817, "code": "1F6F5", "char": "🛵", "name": "motor scooter" }, { "no": 1818, "code": "1F68F", "char": "🚏", "name": "bus stop" }, { "no": 1819, "code": "1F6E3", "char": "🛣", "name": "motorway" }, { "no": 1820, "code": "1F6E4", "char": "🛤", "name": "railway track" }, { "no": 1821, "code": "26FD", "char": "⛽", "name": "fuel pump" }, { "no": 1822, "code": "1F6A8", "char": "🚨", "name": "police car light" }, { "no": 1823, "code": "1F6A5", "char": "🚥", "name": "horizontal traffic light" }, { "no": 1824, "code": "1F6A6", "char": "🚦", "name": "vertical traffic light" }, { "no": 1825, "code": "1F6A7", "char": "🚧", "name": "construction" }, { "no": 1826, "code": "1F6D1", "char": "🛑", "name": "stop sign" }, { "no": 1827, "code": "2693", "char": "⚓", "name": "anchor" }, { "no": 1828, "code": "26F5", "char": "⛵", "name": "sailboat" }, { "no": 1829, "code": "1F6F6", "char": "🛶", "name": "canoe" }, { "no": 1830, "code": "1F6A4", "char": "🚤", "name": "speedboat" }, { "no": 1831, "code": "1F6F3", "char": "🛳", "name": "passenger ship" }, { "no": 1832, "code": "26F4", "char": "⛴", "name": "ferry" }, { "no": 1833, "code": "1F6E5", "char": "🛥", "name": "motor boat" }, { "no": 1834, "code": "1F6A2", "char": "🚢", "name": "ship" }, { "no": 1835, "code": "2708", "char": "✈", "name": "airplane" }, { "no": 1836, "code": "1F6E9", "char": "🛩", "name": "small airplane" }, { "no": 1837, "code": "1F6EB", "char": "🛫", "name": "airplane departure" }, { "no": 1838, "code": "1F6EC", "char": "🛬", "name": "airplane arrival" }, { "no": 1839, "code": "1F4BA", "char": "💺", "name": "seat" }, { "no": 1840, "code": "1F681", "char": "🚁", "name": "helicopter" }, { "no": 1841, "code": "1F69F", "char": "🚟", "name": "suspension railway" }, { "no": 1842, "code": "1F6A0", "char": "🚠", "name": "mountain cableway" }, { "no": 1843, "code": "1F6A1", "char": "🚡", "name": "aerial tramway" }, { "no": 1844, "code": "1F6F0", "char": "🛰", "name": "satellite" }, { "no": 1845, "code": "1F680", "char": "🚀", "name": "rocket" }, { "no": 1846, "code": "1F6F8", "char": "🛸", "name": "⊛ flying saucer" }, { "no": 1847, "code": "1F6CE", "char": "🛎", "name": "bellhop bell" }, { "no": 1848, "code": "1F6AA", "char": "🚪", "name": "door" }, { "no": 1849, "code": "1F6CF", "char": "🛏", "name": "bed" }, { "no": 1850, "code": "1F6CB", "char": "🛋", "name": "couch and lamp" }, { "no": 1851, "code": "1F6BD", "char": "🚽", "name": "toilet" }, { "no": 1852, "code": "1F6BF", "char": "🚿", "name": "shower" }, { "no": 1853, "code": "1F6C1", "char": "🛁", "name": "bathtub" }, { "no": 1854, "code": "231B", "char": "⌛", "name": "hourglass done" }, { "no": 1855, "code": "23F3", "char": "⏳", "name": "hourglass not done" }, { "no": 1856, "code": "231A", "char": "⌚", "name": "watch" }, { "no": 1857, "code": "23F0", "char": "⏰", "name": "alarm clock" }, { "no": 1858, "code": "23F1", "char": "⏱", "name": "stopwatch" }, { "no": 1859, "code": "23F2", "char": "⏲", "name": "timer clock" }, { "no": 1860, "code": "1F570", "char": "🕰", "name": "mantelpiece clock" }, { "no": 1861, "code": "1F55B", "char": "🕛", "name": "twelve o’clock" }, { "no": 1862, "code": "1F567", "char": "🕧", "name": "twelve-thirty" }, { "no": 1863, "code": "1F550", "char": "🕐", "name": "one o’clock" }, { "no": 1864, "code": "1F55C", "char": "🕜", "name": "one-thirty" }, { "no": 1865, "code": "1F551", "char": "🕑", "name": "two o’clock" }, { "no": 1866, "code": "1F55D", "char": "🕝", "name": "two-thirty" }, { "no": 1867, "code": "1F552", "char": "🕒", "name": "three o’clock" }, { "no": 1868, "code": "1F55E", "char": "🕞", "name": "three-thirty" }, { "no": 1869, "code": "1F553", "char": "🕓", "name": "four o’clock" }, { "no": 1870, "code": "1F55F", "char": "🕟", "name": "four-thirty" }, { "no": 1871, "code": "1F554", "char": "🕔", "name": "five o’clock" }, { "no": 1872, "code": "1F560", "char": "🕠", "name": "five-thirty" }, { "no": 1873, "code": "1F555", "char": "🕕", "name": "six o’clock" }, { "no": 1874, "code": "1F561", "char": "🕡", "name": "six-thirty" }, { "no": 1875, "code": "1F556", "char": "🕖", "name": "seven o’clock" }, { "no": 1876, "code": "1F562", "char": "🕢", "name": "seven-thirty" }, { "no": 1877, "code": "1F557", "char": "🕗", "name": "eight o’clock" }, { "no": 1878, "code": "1F563", "char": "🕣", "name": "eight-thirty" }, { "no": 1879, "code": "1F558", "char": "🕘", "name": "nine o’clock" }, { "no": 1880, "code": "1F564", "char": "🕤", "name": "nine-thirty" }, { "no": 1881, "code": "1F559", "char": "🕙", "name": "ten o’clock" }, { "no": 1882, "code": "1F565", "char": "🕥", "name": "ten-thirty" }, { "no": 1883, "code": "1F55A", "char": "🕚", "name": "eleven o’clock" }, { "no": 1884, "code": "1F566", "char": "🕦", "name": "eleven-thirty" }, { "no": 1885, "code": "1F311", "char": "🌑", "name": "new moon" }, { "no": 1886, "code": "1F312", "char": "🌒", "name": "waxing crescent moon" }, { "no": 1887, "code": "1F313", "char": "🌓", "name": "first quarter moon" }, { "no": 1888, "code": "1F314", "char": "🌔", "name": "waxing gibbous moon" }, { "no": 1889, "code": "1F315", "char": "🌕", "name": "full moon" }, { "no": 1890, "code": "1F316", "char": "🌖", "name": "waning gibbous moon" }, { "no": 1891, "code": "1F317", "char": "🌗", "name": "last quarter moon" }, { "no": 1892, "code": "1F318", "char": "🌘", "name": "waning crescent moon" }, { "no": 1893, "code": "1F319", "char": "🌙", "name": "crescent moon" }, { "no": 1894, "code": "1F31A", "char": "🌚", "name": "new moon face" }, { "no": 1895, "code": "1F31B", "char": "🌛", "name": "first quarter moon face" }, { "no": 1896, "code": "1F31C", "char": "🌜", "name": "last quarter moon face" }, { "no": 1897, "code": "1F321", "char": "🌡", "name": "thermometer" }, { "no": 1898, "code": "2600", "char": "☀", "name": "sun" }, { "no": 1899, "code": "1F31D", "char": "🌝", "name": "full moon face" }, { "no": 1900, "code": "1F31E", "char": "🌞", "name": "sun with face" }, { "no": 1901, "code": "2B50", "char": "⭐", "name": "white medium star" }, { "no": 1902, "code": "1F31F", "char": "🌟", "name": "glowing star" }, { "no": 1903, "code": "1F320", "char": "🌠", "name": "shooting star" }, { "no": 1904, "code": "2601", "char": "☁", "name": "cloud" }, { "no": 1905, "code": "26C5", "char": "⛅", "name": "sun behind cloud" }, { "no": 1906, "code": "26C8", "char": "⛈", "name": "cloud with lightning and rain" }, { "no": 1907, "code": "1F324", "char": "🌤", "name": "sun behind small cloud" }, { "no": 1908, "code": "1F325", "char": "🌥", "name": "sun behind large cloud" }, { "no": 1909, "code": "1F326", "char": "🌦", "name": "sun behind rain cloud" }, { "no": 1910, "code": "1F327", "char": "🌧", "name": "cloud with rain" }, { "no": 1911, "code": "1F328", "char": "🌨", "name": "cloud with snow" }, { "no": 1912, "code": "1F329", "char": "🌩", "name": "cloud with lightning" }, { "no": 1913, "code": "1F32A", "char": "🌪", "name": "tornado" }, { "no": 1914, "code": "1F32B", "char": "🌫", "name": "fog" }, { "no": 1915, "code": "1F32C", "char": "🌬", "name": "wind face" }, { "no": 1916, "code": "1F300", "char": "🌀", "name": "cyclone" }, { "no": 1917, "code": "1F308", "char": "🌈", "name": "rainbow" }, { "no": 1918, "code": "1F302", "char": "🌂", "name": "closed umbrella" }, { "no": 1919, "code": "2602", "char": "☂", "name": "umbrella" }, { "no": 1920, "code": "2614", "char": "☔", "name": "umbrella with rain drops" }, { "no": 1921, "code": "26F1", "char": "⛱", "name": "umbrella on ground" }, { "no": 1922, "code": "26A1", "char": "⚡", "name": "high voltage" }, { "no": 1923, "code": "2744", "char": "❄", "name": "snowflake" }, { "no": 1924, "code": "2603", "char": "☃", "name": "snowman" }, { "no": 1925, "code": "26C4", "char": "⛄", "name": "snowman without snow" }, { "no": 1926, "code": "2604", "char": "☄", "name": "comet" }, { "no": 1927, "code": "1F525", "char": "🔥", "name": "fire" }, { "no": 1928, "code": "1F4A7", "char": "💧", "name": "droplet" }, { "no": 1929, "code": "1F30A", "char": "🌊", "name": "water wave" }, { "no": 1930, "code": "1F383", "char": "🎃", "name": "jack-o-lantern" }, { "no": 1931, "code": "1F384", "char": "🎄", "name": "Christmas tree" }, { "no": 1932, "code": "1F386", "char": "🎆", "name": "fireworks" }, { "no": 1933, "code": "1F387", "char": "🎇", "name": "sparkler" }, { "no": 1934, "code": "2728", "char": "✨", "name": "sparkles" }, { "no": 1935, "code": "1F388", "char": "🎈", "name": "balloon" }, { "no": 1936, "code": "1F389", "char": "🎉", "name": "party popper" }, { "no": 1937, "code": "1F38A", "char": "🎊", "name": "confetti ball" }, { "no": 1938, "code": "1F38B", "char": "🎋", "name": "tanabata tree" }, { "no": 1939, "code": "1F38D", "char": "🎍", "name": "pine decoration" }, { "no": 1940, "code": "1F38E", "char": "🎎", "name": "Japanese dolls" }, { "no": 1941, "code": "1F38F", "char": "🎏", "name": "carp streamer" }, { "no": 1942, "code": "1F390", "char": "🎐", "name": "wind chime" }, { "no": 1943, "code": "1F391", "char": "🎑", "name": "moon viewing ceremony" }, { "no": 1944, "code": "1F380", "char": "🎀", "name": "ribbon" }, { "no": 1945, "code": "1F381", "char": "🎁", "name": "wrapped gift" }, { "no": 1946, "code": "1F397", "char": "🎗", "name": "reminder ribbon" }, { "no": 1947, "code": "1F39F", "char": "🎟", "name": "admission tickets" }, { "no": 1948, "code": "1F3AB", "char": "🎫", "name": "ticket" }, { "no": 1949, "code": "1F396", "char": "🎖", "name": "military medal" }, { "no": 1950, "code": "1F3C6", "char": "🏆", "name": "trophy" }, { "no": 1951, "code": "1F3C5", "char": "🏅", "name": "sports medal" }, { "no": 1952, "code": "1F947", "char": "🥇", "name": "1st place medal" }, { "no": 1953, "code": "1F948", "char": "🥈", "name": "2nd place medal" }, { "no": 1954, "code": "1F949", "char": "🥉", "name": "3rd place medal" }, { "no": 1955, "code": "26BD", "char": "⚽", "name": "soccer ball" }, { "no": 1956, "code": "26BE", "char": "⚾", "name": "baseball" }, { "no": 1957, "code": "1F3C0", "char": "🏀", "name": "basketball" }, { "no": 1958, "code": "1F3D0", "char": "🏐", "name": "volleyball" }, { "no": 1959, "code": "1F3C8", "char": "🏈", "name": "american football" }, { "no": 1960, "code": "1F3C9", "char": "🏉", "name": "rugby football" }, { "no": 1961, "code": "1F3BE", "char": "🎾", "name": "tennis" }, { "no": 1962, "code": "1F3B1", "char": "🎱", "name": "pool 8 ball" }, { "no": 1963, "code": "1F3B3", "char": "🎳", "name": "bowling" }, { "no": 1964, "code": "1F3CF", "char": "🏏", "name": "cricket game" }, { "no": 1965, "code": "1F3D1", "char": "🏑", "name": "field hockey" }, { "no": 1966, "code": "1F3D2", "char": "🏒", "name": "ice hockey" }, { "no": 1967, "code": "1F3D3", "char": "🏓", "name": "ping pong" }, { "no": 1968, "code": "1F3F8", "char": "🏸", "name": "badminton" }, { "no": 1969, "code": "1F94A", "char": "🥊", "name": "boxing glove" }, { "no": 1970, "code": "1F94B", "char": "🥋", "name": "martial arts uniform" }, { "no": 1971, "code": "1F945", "char": "🥅", "name": "goal net" }, { "no": 1972, "code": "1F3AF", "char": "🎯", "name": "direct hit" }, { "no": 1973, "code": "26F3", "char": "⛳", "name": "flag in hole" }, { "no": 1974, "code": "26F8", "char": "⛸", "name": "ice skate" }, { "no": 1975, "code": "1F3A3", "char": "🎣", "name": "fishing pole" }, { "no": 1976, "code": "1F3BD", "char": "🎽", "name": "running shirt" }, { "no": 1977, "code": "1F3BF", "char": "🎿", "name": "skis" }, { "no": 1978, "code": "1F6F7", "char": "🛷", "name": "⊛ sled" }, { "no": 1979, "code": "1F94C", "char": "🥌", "name": "⊛ curling stone" }, { "no": 1980, "code": "1F3AE", "char": "🎮", "name": "video game" }, { "no": 1981, "code": "1F579", "char": "🕹", "name": "joystick" }, { "no": 1982, "code": "1F3B2", "char": "🎲", "name": "game die" }, { "no": 1983, "code": "2660", "char": "♠", "name": "spade suit" }, { "no": 1984, "code": "2665", "char": "♥", "name": "heart suit" }, { "no": 1985, "code": "2666", "char": "♦", "name": "diamond suit" }, { "no": 1986, "code": "2663", "char": "♣", "name": "club suit" }, { "no": 1987, "code": "1F0CF", "char": "🃏", "name": "joker" }, { "no": 1988, "code": "1F004", "char": "🀄", "name": "mahjong red dragon" }, { "no": 1989, "code": "1F3B4", "char": "🎴", "name": "flower playing cards" }, { "no": 1990, "code": "1F507", "char": "🔇", "name": "muted speaker" }, { "no": 1991, "code": "1F508", "char": "🔈", "name": "speaker low volume" }, { "no": 1992, "code": "1F509", "char": "🔉", "name": "speaker medium volume" }, { "no": 1993, "code": "1F50A", "char": "🔊", "name": "speaker high volume" }, { "no": 1994, "code": "1F4E2", "char": "📢", "name": "loudspeaker" }, { "no": 1995, "code": "1F4E3", "char": "📣", "name": "megaphone" }, { "no": 1996, "code": "1F4EF", "char": "📯", "name": "postal horn" }, { "no": 1997, "code": "1F514", "char": "🔔", "name": "bell" }, { "no": 1998, "code": "1F515", "char": "🔕", "name": "bell with slash" }, { "no": 1999, "code": "1F3BC", "char": "🎼", "name": "musical score" }, { "no": 2000, "code": "1F3B5", "char": "🎵", "name": "musical note" }, { "no": 2001, "code": "1F3B6", "char": "🎶", "name": "musical notes" }, { "no": 2002, "code": "1F399", "char": "🎙", "name": "studio microphone" }, { "no": 2003, "code": "1F39A", "char": "🎚", "name": "level slider" }, { "no": 2004, "code": "1F39B", "char": "🎛", "name": "control knobs" }, { "no": 2005, "code": "1F3A4", "char": "🎤", "name": "microphone" }, { "no": 2006, "code": "1F3A7", "char": "🎧", "name": "headphone" }, { "no": 2007, "code": "1F4FB", "char": "📻", "name": "radio" }, { "no": 2008, "code": "1F3B7", "char": "🎷", "name": "saxophone" }, { "no": 2009, "code": "1F3B8", "char": "🎸", "name": "guitar" }, { "no": 2010, "code": "1F3B9", "char": "🎹", "name": "musical keyboard" }, { "no": 2011, "code": "1F3BA", "char": "🎺", "name": "trumpet" }, { "no": 2012, "code": "1F3BB", "char": "🎻", "name": "violin" }, { "no": 2013, "code": "1F941", "char": "🥁", "name": "drum" }, { "no": 2014, "code": "1F4F1", "char": "📱", "name": "mobile phone" }, { "no": 2015, "code": "1F4F2", "char": "📲", "name": "mobile phone with arrow" }, { "no": 2016, "code": "260E", "char": "☎", "name": "telephone" }, { "no": 2017, "code": "1F4DE", "char": "📞", "name": "telephone receiver" }, { "no": 2018, "code": "1F4DF", "char": "📟", "name": "pager" }, { "no": 2019, "code": "1F4E0", "char": "📠", "name": "fax machine" }, { "no": 2020, "code": "1F50B", "char": "🔋", "name": "battery" }, { "no": 2021, "code": "1F50C", "char": "🔌", "name": "electric plug" }, { "no": 2022, "code": "1F4BB", "char": "💻", "name": "laptop computer" }, { "no": 2023, "code": "1F5A5", "char": "🖥", "name": "desktop computer" }, { "no": 2024, "code": "1F5A8", "char": "🖨", "name": "printer" }, { "no": 2025, "code": "2328", "char": "⌨", "name": "keyboard" }, { "no": 2026, "code": "1F5B1", "char": "🖱", "name": "computer mouse" }, { "no": 2027, "code": "1F5B2", "char": "🖲", "name": "trackball" }, { "no": 2028, "code": "1F4BD", "char": "💽", "name": "computer disk" }, { "no": 2029, "code": "1F4BE", "char": "💾", "name": "floppy disk" }, { "no": 2030, "code": "1F4BF", "char": "💿", "name": "optical disk" }, { "no": 2031, "code": "1F4C0", "char": "📀", "name": "dvd" }, { "no": 2032, "code": "1F3A5", "char": "🎥", "name": "movie camera" }, { "no": 2033, "code": "1F39E", "char": "🎞", "name": "film frames" }, { "no": 2034, "code": "1F4FD", "char": "📽", "name": "film projector" }, { "no": 2035, "code": "1F3AC", "char": "🎬", "name": "clapper board" }, { "no": 2036, "code": "1F4FA", "char": "📺", "name": "television" }, { "no": 2037, "code": "1F4F7", "char": "📷", "name": "camera" }, { "no": 2038, "code": "1F4F8", "char": "📸", "name": "camera with flash" }, { "no": 2039, "code": "1F4F9", "char": "📹", "name": "video camera" }, { "no": 2040, "code": "1F4FC", "char": "📼", "name": "videocassette" }, { "no": 2041, "code": "1F50D", "char": "🔍", "name": "magnifying glass tilted left" }, { "no": 2042, "code": "1F50E", "char": "🔎", "name": "magnifying glass tilted right" }, { "no": 2043, "code": "1F52C", "char": "🔬", "name": "microscope" }, { "no": 2044, "code": "1F52D", "char": "🔭", "name": "telescope" }, { "no": 2045, "code": "1F4E1", "char": "📡", "name": "satellite antenna" }, { "no": 2046, "code": "1F56F", "char": "🕯", "name": "candle" }, { "no": 2047, "code": "1F4A1", "char": "💡", "name": "light bulb" }, { "no": 2048, "code": "1F526", "char": "🔦", "name": "flashlight" }, { "no": 2049, "code": "1F3EE", "char": "🏮", "name": "red paper lantern" }, { "no": 2050, "code": "1F4D4", "char": "📔", "name": "notebook with decorative cover" }, { "no": 2051, "code": "1F4D5", "char": "📕", "name": "closed book" }, { "no": 2052, "code": "1F4D6", "char": "📖", "name": "open book" }, { "no": 2053, "code": "1F4D7", "char": "📗", "name": "green book" }, { "no": 2054, "code": "1F4D8", "char": "📘", "name": "blue book" }, { "no": 2055, "code": "1F4D9", "char": "📙", "name": "orange book" }, { "no": 2056, "code": "1F4DA", "char": "📚", "name": "books" }, { "no": 2057, "code": "1F4D3", "char": "📓", "name": "notebook" }, { "no": 2058, "code": "1F4D2", "char": "📒", "name": "ledger" }, { "no": 2059, "code": "1F4C3", "char": "📃", "name": "page with curl" }, { "no": 2060, "code": "1F4DC", "char": "📜", "name": "scroll" }, { "no": 2061, "code": "1F4C4", "char": "📄", "name": "page facing up" }, { "no": 2062, "code": "1F4F0", "char": "📰", "name": "newspaper" }, { "no": 2063, "code": "1F5DE", "char": "🗞", "name": "rolled-up newspaper" }, { "no": 2064, "code": "1F4D1", "char": "📑", "name": "bookmark tabs" }, { "no": 2065, "code": "1F516", "char": "🔖", "name": "bookmark" }, { "no": 2066, "code": "1F3F7", "char": "🏷", "name": "label" }, { "no": 2067, "code": "1F4B0", "char": "💰", "name": "money bag" }, { "no": 2068, "code": "1F4B4", "char": "💴", "name": "yen banknote" }, { "no": 2069, "code": "1F4B5", "char": "💵", "name": "dollar banknote" }, { "no": 2070, "code": "1F4B6", "char": "💶", "name": "euro banknote" }, { "no": 2071, "code": "1F4B7", "char": "💷", "name": "pound banknote" }, { "no": 2072, "code": "1F4B8", "char": "💸", "name": "money with wings" }, { "no": 2073, "code": "1F4B3", "char": "💳", "name": "credit card" }, { "no": 2074, "code": "1F4B9", "char": "💹", "name": "chart increasing with yen" }, { "no": 2075, "code": "1F4B1", "char": "💱", "name": "currency exchange" }, { "no": 2076, "code": "1F4B2", "char": "💲", "name": "heavy dollar sign" }, { "no": 2077, "code": "2709", "char": "✉", "name": "envelope" }, { "no": 2078, "code": "1F4E7", "char": "📧", "name": "e-mail" }, { "no": 2079, "code": "1F4E8", "char": "📨", "name": "incoming envelope" }, { "no": 2080, "code": "1F4E9", "char": "📩", "name": "envelope with arrow" }, { "no": 2081, "code": "1F4E4", "char": "📤", "name": "outbox tray" }, { "no": 2082, "code": "1F4E5", "char": "📥", "name": "inbox tray" }, { "no": 2083, "code": "1F4E6", "char": "📦", "name": "package" }, { "no": 2084, "code": "1F4EB", "char": "📫", "name": "closed mailbox with raised flag" }, { "no": 2085, "code": "1F4EA", "char": "📪", "name": "closed mailbox with lowered flag" }, { "no": 2086, "code": "1F4EC", "char": "📬", "name": "open mailbox with raised flag" }, { "no": 2087, "code": "1F4ED", "char": "📭", "name": "open mailbox with lowered flag" }, { "no": 2088, "code": "1F4EE", "char": "📮", "name": "postbox" }, { "no": 2089, "code": "1F5F3", "char": "🗳", "name": "ballot box with ballot" }, { "no": 2090, "code": "270F", "char": "✏", "name": "pencil" }, { "no": 2091, "code": "2712", "char": "✒", "name": "black nib" }, { "no": 2092, "code": "1F58B", "char": "🖋", "name": "fountain pen" }, { "no": 2093, "code": "1F58A", "char": "🖊", "name": "pen" }, { "no": 2094, "code": "1F58C", "char": "🖌", "name": "paintbrush" }, { "no": 2095, "code": "1F58D", "char": "🖍", "name": "crayon" }, { "no": 2096, "code": "1F4DD", "char": "📝", "name": "memo" }, { "no": 2097, "code": "1F4BC", "char": "💼", "name": "briefcase" }, { "no": 2098, "code": "1F4C1", "char": "📁", "name": "file folder" }, { "no": 2099, "code": "1F4C2", "char": "📂", "name": "open file folder" }, { "no": 2100, "code": "1F5C2", "char": "🗂", "name": "card index dividers" }, { "no": 2101, "code": "1F4C5", "char": "📅", "name": "calendar" }, { "no": 2102, "code": "1F4C6", "char": "📆", "name": "tear-off calendar" }, { "no": 2103, "code": "1F5D2", "char": "🗒", "name": "spiral notepad" }, { "no": 2104, "code": "1F5D3", "char": "🗓", "name": "spiral calendar" }, { "no": 2105, "code": "1F4C7", "char": "📇", "name": "card index" }, { "no": 2106, "code": "1F4C8", "char": "📈", "name": "chart increasing" }, { "no": 2107, "code": "1F4C9", "char": "📉", "name": "chart decreasing" }, { "no": 2108, "code": "1F4CA", "char": "📊", "name": "bar chart" }, { "no": 2109, "code": "1F4CB", "char": "📋", "name": "clipboard" }, { "no": 2110, "code": "1F4CC", "char": "📌", "name": "pushpin" }, { "no": 2111, "code": "1F4CD", "char": "📍", "name": "round pushpin" }, { "no": 2112, "code": "1F4CE", "char": "📎", "name": "paperclip" }, { "no": 2113, "code": "1F587", "char": "🖇", "name": "linked paperclips" }, { "no": 2114, "code": "1F4CF", "char": "📏", "name": "straight ruler" }, { "no": 2115, "code": "1F4D0", "char": "📐", "name": "triangular ruler" }, { "no": 2116, "code": "2702", "char": "✂", "name": "scissors" }, { "no": 2117, "code": "1F5C3", "char": "🗃", "name": "card file box" }, { "no": 2118, "code": "1F5C4", "char": "🗄", "name": "file cabinet" }, { "no": 2119, "code": "1F5D1", "char": "🗑", "name": "wastebasket" }, { "no": 2120, "code": "1F512", "char": "🔒", "name": "locked" }, { "no": 2121, "code": "1F513", "char": "🔓", "name": "unlocked" }, { "no": 2122, "code": "1F50F", "char": "🔏", "name": "locked with pen" }, { "no": 2123, "code": "1F510", "char": "🔐", "name": "locked with key" }, { "no": 2124, "code": "1F511", "char": "🔑", "name": "key" }, { "no": 2125, "code": "1F5DD", "char": "🗝", "name": "old key" }, { "no": 2126, "code": "1F528", "char": "🔨", "name": "hammer" }, { "no": 2127, "code": "26CF", "char": "⛏", "name": "pick" }, { "no": 2128, "code": "2692", "char": "⚒", "name": "hammer and pick" }, { "no": 2129, "code": "1F6E0", "char": "🛠", "name": "hammer and wrench" }, { "no": 2130, "code": "1F5E1", "char": "🗡", "name": "dagger" }, { "no": 2131, "code": "2694", "char": "⚔", "name": "crossed swords" }, { "no": 2132, "code": "1F52B", "char": "🔫", "name": "pistol" }, { "no": 2133, "code": "1F3F9", "char": "🏹", "name": "bow and arrow" }, { "no": 2134, "code": "1F6E1", "char": "🛡", "name": "shield" }, { "no": 2135, "code": "1F527", "char": "🔧", "name": "wrench" }, { "no": 2136, "code": "1F529", "char": "🔩", "name": "nut and bolt" }, { "no": 2137, "code": "2699", "char": "⚙", "name": "gear" }, { "no": 2138, "code": "1F5DC", "char": "🗜", "name": "clamp" }, { "no": 2139, "code": "2697", "char": "⚗", "name": "alembic" }, { "no": 2140, "code": "2696", "char": "⚖", "name": "balance scale" }, { "no": 2141, "code": "1F517", "char": "🔗", "name": "link" }, { "no": 2142, "code": "26D3", "char": "⛓", "name": "chains" }, { "no": 2143, "code": "1F489", "char": "💉", "name": "syringe" }, { "no": 2144, "code": "1F48A", "char": "💊", "name": "pill" }, { "no": 2145, "code": "1F6AC", "char": "🚬", "name": "cigarette" }, { "no": 2146, "code": "26B0", "char": "⚰", "name": "coffin" }, { "no": 2147, "code": "26B1", "char": "⚱", "name": "funeral urn" }, { "no": 2148, "code": "1F5FF", "char": "🗿", "name": "moai" }, { "no": 2149, "code": "1F6E2", "char": "🛢", "name": "oil drum" }, { "no": 2150, "code": "1F52E", "char": "🔮", "name": "crystal ball" }, { "no": 2151, "code": "1F6D2", "char": "🛒", "name": "shopping cart" }, { "no": 2152, "code": "1F3E7", "char": "🏧", "name": "ATM sign" }, { "no": 2153, "code": "1F6AE", "char": "🚮", "name": "litter in bin sign" }, { "no": 2154, "code": "1F6B0", "char": "🚰", "name": "potable water" }, { "no": 2155, "code": "267F", "char": "♿", "name": "wheelchair symbol" }, { "no": 2156, "code": "1F6B9", "char": "🚹", "name": "men’s room" }, { "no": 2157, "code": "1F6BA", "char": "🚺", "name": "women’s room" }, { "no": 2158, "code": "1F6BB", "char": "🚻", "name": "restroom" }, { "no": 2159, "code": "1F6BC", "char": "🚼", "name": "baby symbol" }, { "no": 2160, "code": "1F6BE", "char": "🚾", "name": "water closet" }, { "no": 2161, "code": "1F6C2", "char": "🛂", "name": "passport control" }, { "no": 2162, "code": "1F6C3", "char": "🛃", "name": "customs" }, { "no": 2163, "code": "1F6C4", "char": "🛄", "name": "baggage claim" }, { "no": 2164, "code": "1F6C5", "char": "🛅", "name": "left luggage" }, { "no": 2165, "code": "26A0", "char": "⚠", "name": "warning" }, { "no": 2166, "code": "1F6B8", "char": "🚸", "name": "children crossing" }, { "no": 2167, "code": "26D4", "char": "⛔", "name": "no entry" }, { "no": 2168, "code": "1F6AB", "char": "🚫", "name": "prohibited" }, { "no": 2169, "code": "1F6B3", "char": "🚳", "name": "no bicycles" }, { "no": 2170, "code": "1F6AD", "char": "🚭", "name": "no smoking" }, { "no": 2171, "code": "1F6AF", "char": "🚯", "name": "no littering" }, { "no": 2172, "code": "1F6B1", "char": "🚱", "name": "non-potable water" }, { "no": 2173, "code": "1F6B7", "char": "🚷", "name": "no pedestrians" }, { "no": 2174, "code": "1F4F5", "char": "📵", "name": "no mobile phones" }, { "no": 2175, "code": "1F51E", "char": "🔞", "name": "no one under eighteen" }, { "no": 2176, "code": "2622", "char": "☢", "name": "radioactive" }, { "no": 2177, "code": "2623", "char": "☣", "name": "biohazard" }, { "no": 2178, "code": "2B06", "char": "⬆", "name": "up arrow" }, { "no": 2179, "code": "2197", "char": "↗", "name": "up-right arrow" }, { "no": 2180, "code": "27A1", "char": "➡", "name": "right arrow" }, { "no": 2181, "code": "2198", "char": "↘", "name": "down-right arrow" }, { "no": 2182, "code": "2B07", "char": "⬇", "name": "down arrow" }, { "no": 2183, "code": "2199", "char": "↙", "name": "down-left arrow" }, { "no": 2184, "code": "2B05", "char": "⬅", "name": "left arrow" }, { "no": 2185, "code": "2196", "char": "↖", "name": "up-left arrow" }, { "no": 2186, "code": "2195", "char": "↕", "name": "up-down arrow" }, { "no": 2187, "code": "2194", "char": "↔", "name": "left-right arrow" }, { "no": 2188, "code": "21A9", "char": "↩", "name": "right arrow curving left" }, { "no": 2189, "code": "21AA", "char": "↪", "name": "left arrow curving right" }, { "no": 2190, "code": "2934", "char": "⤴", "name": "right arrow curving up" }, { "no": 2191, "code": "2935", "char": "⤵", "name": "right arrow curving down" }, { "no": 2192, "code": "1F503", "char": "🔃", "name": "clockwise vertical arrows" }, { "no": 2193, "code": "1F504", "char": "🔄", "name": "counterclockwise arrows button" }, { "no": 2194, "code": "1F519", "char": "🔙", "name": "BACK arrow" }, { "no": 2195, "code": "1F51A", "char": "🔚", "name": "END arrow" }, { "no": 2196, "code": "1F51B", "char": "🔛", "name": "ON! arrow" }, { "no": 2197, "code": "1F51C", "char": "🔜", "name": "SOON arrow" }, { "no": 2198, "code": "1F51D", "char": "🔝", "name": "TOP arrow" }, { "no": 2199, "code": "1F6D0", "char": "🛐", "name": "place of worship" }, { "no": 2200, "code": "269B", "char": "⚛", "name": "atom symbol" }, { "no": 2201, "code": "1F549", "char": "🕉", "name": "om" }, { "no": 2202, "code": "2721", "char": "✡", "name": "star of David" }, { "no": 2203, "code": "2638", "char": "☸", "name": "wheel of dharma" }, { "no": 2204, "code": "262F", "char": "☯", "name": "yin yang" }, { "no": 2205, "code": "271D", "char": "✝", "name": "latin cross" }, { "no": 2206, "code": "2626", "char": "☦", "name": "orthodox cross" }, { "no": 2207, "code": "262A", "char": "☪", "name": "star and crescent" }, { "no": 2208, "code": "262E", "char": "☮", "name": "peace symbol" }, { "no": 2209, "code": "1F54E", "char": "🕎", "name": "menorah" }, { "no": 2210, "code": "1F52F", "char": "🔯", "name": "dotted six-pointed star" }, { "no": 2211, "code": "2648", "char": "♈", "name": "Aries" }, { "no": 2212, "code": "2649", "char": "♉", "name": "Taurus" }, { "no": 2213, "code": "264A", "char": "♊", "name": "Gemini" }, { "no": 2214, "code": "264B", "char": "♋", "name": "Cancer" }, { "no": 2215, "code": "264C", "char": "♌", "name": "Leo" }, { "no": 2216, "code": "264D", "char": "♍", "name": "Virgo" }, { "no": 2217, "code": "264E", "char": "♎", "name": "Libra" }, { "no": 2218, "code": "264F", "char": "♏", "name": "Scorpius" }, { "no": 2219, "code": "2650", "char": "♐", "name": "Sagittarius" }, { "no": 2220, "code": "2651", "char": "♑", "name": "Capricorn" }, { "no": 2221, "code": "2652", "char": "♒", "name": "Aquarius" }, { "no": 2222, "code": "2653", "char": "♓", "name": "Pisces" }, { "no": 2223, "code": "26CE", "char": "⛎", "name": "Ophiuchus" }, { "no": 2224, "code": "1F500", "char": "🔀", "name": "shuffle tracks button" }, { "no": 2225, "code": "1F501", "char": "🔁", "name": "repeat button" }, { "no": 2226, "code": "1F502", "char": "🔂", "name": "repeat single button" }, { "no": 2227, "code": "25B6", "char": "▶", "name": "play button" }, { "no": 2228, "code": "23E9", "char": "⏩", "name": "fast-forward button" }, { "no": 2229, "code": "23ED", "char": "⏭", "name": "next track button" }, { "no": 2230, "code": "23EF", "char": "⏯", "name": "play or pause button" }, { "no": 2231, "code": "25C0", "char": "◀", "name": "reverse button" }, { "no": 2232, "code": "23EA", "char": "⏪", "name": "fast reverse button" }, { "no": 2233, "code": "23EE", "char": "⏮", "name": "last track button" }, { "no": 2234, "code": "1F53C", "char": "🔼", "name": "up button" }, { "no": 2235, "code": "23EB", "char": "⏫", "name": "fast up button" }, { "no": 2236, "code": "1F53D", "char": "🔽", "name": "down button" }, { "no": 2237, "code": "23EC", "char": "⏬", "name": "fast down button" }, { "no": 2238, "code": "23F8", "char": "⏸", "name": "pause button" }, { "no": 2239, "code": "23F9", "char": "⏹", "name": "stop button" }, { "no": 2240, "code": "23FA", "char": "⏺", "name": "record button" }, { "no": 2241, "code": "23CF", "char": "⏏", "name": "eject button" }, { "no": 2242, "code": "1F3A6", "char": "🎦", "name": "cinema" }, { "no": 2243, "code": "1F505", "char": "🔅", "name": "dim button" }, { "no": 2244, "code": "1F506", "char": "🔆", "name": "bright button" }, { "no": 2245, "code": "1F4F6", "char": "📶", "name": "antenna bars" }, { "no": 2246, "code": "1F4F3", "char": "📳", "name": "vibration mode" }, { "no": 2247, "code": "1F4F4", "char": "📴", "name": "mobile phone off" }, { "no": 2248, "code": "2640", "char": "♀", "name": "female sign" }, { "no": 2249, "code": "2642", "char": "♂", "name": "male sign" }, { "no": 2250, "code": "2695", "char": "⚕", "name": "medical symbol" }, { "no": 2251, "code": "267B", "char": "♻", "name": "recycling symbol" }, { "no": 2252, "code": "269C", "char": "⚜", "name": "fleur-de-lis" }, { "no": 2253, "code": "1F531", "char": "🔱", "name": "trident emblem" }, { "no": 2254, "code": "1F4DB", "char": "📛", "name": "name badge" }, { "no": 2255, "code": "1F530", "char": "🔰", "name": "Japanese symbol for beginner" }, { "no": 2256, "code": "2B55", "char": "⭕", "name": "heavy large circle" }, { "no": 2257, "code": "2705", "char": "✅", "name": "white heavy check mark" }, { "no": 2258, "code": "2611", "char": "☑", "name": "ballot box with check" }, { "no": 2259, "code": "2714", "char": "✔", "name": "heavy check mark" }, { "no": 2260, "code": "2716", "char": "✖", "name": "heavy multiplication x" }, { "no": 2261, "code": "274C", "char": "❌", "name": "cross mark" }, { "no": 2262, "code": "274E", "char": "❎", "name": "cross mark button" }, { "no": 2263, "code": "2795", "char": "➕", "name": "heavy plus sign" }, { "no": 2264, "code": "2796", "char": "➖", "name": "heavy minus sign" }, { "no": 2265, "code": "2797", "char": "➗", "name": "heavy division sign" }, { "no": 2266, "code": "27B0", "char": "➰", "name": "curly loop" }, { "no": 2267, "code": "27BF", "char": "➿", "name": "double curly loop" }, { "no": 2268, "code": "303D", "char": "〽", "name": "part alternation mark" }, { "no": 2269, "code": "2733", "char": "✳", "name": "eight-spoked asterisk" }, { "no": 2270, "code": "2734", "char": "✴", "name": "eight-pointed star" }, { "no": 2271, "code": "2747", "char": "❇", "name": "sparkle" }, { "no": 2272, "code": "203C", "char": "‼", "name": "double exclamation mark" }, { "no": 2273, "code": "2049", "char": "⁉", "name": "exclamation question mark" }, { "no": 2274, "code": "2753", "char": "❓", "name": "question mark" }, { "no": 2275, "code": "2754", "char": "❔", "name": "white question mark" }, { "no": 2276, "code": "2755", "char": "❕", "name": "white exclamation mark" }, { "no": 2277, "code": "2757", "char": "❗", "name": "exclamation mark" }, { "no": 2278, "code": "3030", "char": "〰", "name": "wavy dash" }, { "no": 2279, "code": "00A9", "char": "©", "name": "copyright" }, { "no": 2280, "code": "00AE", "char": "®", "name": "registered" }, { "no": 2281, "code": "2122", "char": "™", "name": "trade mark" }, { "no": 2282, "code": "0023 FE0F 20E3", "char": "#️⃣", "name": "keycap: #" }, { "no": 2283, "code": "002A FE0F 20E3", "char": "*️⃣", "name": "keycap: *" }, { "no": 2284, "code": "0030 FE0F 20E3", "char": "0️⃣", "name": "keycap: 0" }, { "no": 2285, "code": "0031 FE0F 20E3", "char": "1️⃣", "name": "keycap: 1" }, { "no": 2286, "code": "0032 FE0F 20E3", "char": "2️⃣", "name": "keycap: 2" }, { "no": 2287, "code": "0033 FE0F 20E3", "char": "3️⃣", "name": "keycap: 3" }, { "no": 2288, "code": "0034 FE0F 20E3", "char": "4️⃣", "name": "keycap: 4" }, { "no": 2289, "code": "0035 FE0F 20E3", "char": "5️⃣", "name": "keycap: 5" }, { "no": 2290, "code": "0036 FE0F 20E3", "char": "6️⃣", "name": "keycap: 6" }, { "no": 2291, "code": "0037 FE0F 20E3", "char": "7️⃣", "name": "keycap: 7" }, { "no": 2292, "code": "0038 FE0F 20E3", "char": "8️⃣", "name": "keycap: 8" }, { "no": 2293, "code": "0039 FE0F 20E3", "char": "9️⃣", "name": "keycap: 9" }, { "no": 2294, "code": "1F51F", "char": "🔟", "name": "keycap 10" }, { "no": 2295, "code": "1F4AF", "char": "💯", "name": "hundred points" }, { "no": 2296, "code": "1F520", "char": "🔠", "name": "input latin uppercase" }, { "no": 2297, "code": "1F521", "char": "🔡", "name": "input latin lowercase" }, { "no": 2298, "code": "1F522", "char": "🔢", "name": "input numbers" }, { "no": 2299, "code": "1F523", "char": "🔣", "name": "input symbols" }, { "no": 2300, "code": "1F524", "char": "🔤", "name": "input latin letters" }, { "no": 2301, "code": "1F170", "char": "🅰", "name": "A button (blood type)" }, { "no": 2302, "code": "1F18E", "char": "🆎", "name": "AB button (blood type)" }, { "no": 2303, "code": "1F171", "char": "🅱", "name": "B button (blood type)" }, { "no": 2304, "code": "1F191", "char": "🆑", "name": "CL button" }, { "no": 2305, "code": "1F192", "char": "🆒", "name": "COOL button" }, { "no": 2306, "code": "1F193", "char": "🆓", "name": "FREE button" }, { "no": 2307, "code": "2139", "char": "ℹ", "name": "information" }, { "no": 2308, "code": "1F194", "char": "🆔", "name": "ID button" }, { "no": 2309, "code": "24C2", "char": "Ⓜ", "name": "circled M" }, { "no": 2310, "code": "1F195", "char": "🆕", "name": "NEW button" }, { "no": 2311, "code": "1F196", "char": "🆖", "name": "NG button" }, { "no": 2312, "code": "1F17E", "char": "🅾", "name": "O button (blood type)" }, { "no": 2313, "code": "1F197", "char": "🆗", "name": "OK button" }, { "no": 2314, "code": "1F17F", "char": "🅿", "name": "P button" }, { "no": 2315, "code": "1F198", "char": "🆘", "name": "SOS button" }, { "no": 2316, "code": "1F199", "char": "🆙", "name": "UP! button" }, { "no": 2317, "code": "1F19A", "char": "🆚", "name": "VS button" }, { "no": 2318, "code": "1F201", "char": "🈁", "name": "Japanese “here” button" }, { "no": 2319, "code": "1F202", "char": "🈂", "name": "Japanese “service charge” button" }, { "no": 2320, "code": "1F237", "char": "🈷", "name": "Japanese “monthly amount” button" }, { "no": 2321, "code": "1F236", "char": "🈶", "name": "Japanese “not free of charge” button" }, { "no": 2322, "code": "1F22F", "char": "🈯", "name": "Japanese “reserved” button" }, { "no": 2323, "code": "1F250", "char": "🉐", "name": "Japanese “bargain” button" }, { "no": 2324, "code": "1F239", "char": "🈹", "name": "Japanese “discount” button" }, { "no": 2325, "code": "1F21A", "char": "🈚", "name": "Japanese “free of charge” button" }, { "no": 2326, "code": "1F232", "char": "🈲", "name": "Japanese “prohibited” button" }, { "no": 2327, "code": "1F251", "char": "🉑", "name": "Japanese “acceptable” button" }, { "no": 2328, "code": "1F238", "char": "🈸", "name": "Japanese “application” button" }, { "no": 2329, "code": "1F234", "char": "🈴", "name": "Japanese “passing grade” button" }, { "no": 2330, "code": "1F233", "char": "🈳", "name": "Japanese “vacancy” button" }, { "no": 2331, "code": "3297", "char": "㊗", "name": "Japanese “congratulations” button" }, { "no": 2332, "code": "3299", "char": "㊙", "name": "Japanese “secret” button" }, { "no": 2333, "code": "1F23A", "char": "🈺", "name": "Japanese “open for business” button" }, { "no": 2334, "code": "1F235", "char": "🈵", "name": "Japanese “no vacancy” button" }, { "no": 2335, "code": "25AA", "char": "▪", "name": "black small square" }, { "no": 2336, "code": "25AB", "char": "▫", "name": "white small square" }, { "no": 2337, "code": "25FB", "char": "◻", "name": "white medium square" }, { "no": 2338, "code": "25FC", "char": "◼", "name": "black medium square" }, { "no": 2339, "code": "25FD", "char": "◽", "name": "white medium-small square" }, { "no": 2340, "code": "25FE", "char": "◾", "name": "black medium-small square" }, { "no": 2341, "code": "2B1B", "char": "⬛", "name": "black large square" }, { "no": 2342, "code": "2B1C", "char": "⬜", "name": "white large square" }, { "no": 2343, "code": "1F536", "char": "🔶", "name": "large orange diamond" }, { "no": 2344, "code": "1F537", "char": "🔷", "name": "large blue diamond" }, { "no": 2345, "code": "1F538", "char": "🔸", "name": "small orange diamond" }, { "no": 2346, "code": "1F539", "char": "🔹", "name": "small blue diamond" }, { "no": 2347, "code": "1F53A", "char": "🔺", "name": "red triangle pointed up" }, { "no": 2348, "code": "1F53B", "char": "🔻", "name": "red triangle pointed down" }, { "no": 2349, "code": "1F4A0", "char": "💠", "name": "diamond with a dot" }, { "no": 2350, "code": "1F518", "char": "🔘", "name": "radio button" }, { "no": 2351, "code": "1F532", "char": "🔲", "name": "black square button" }, { "no": 2352, "code": "1F533", "char": "🔳", "name": "white square button" }, { "no": 2353, "code": "26AA", "char": "⚪", "name": "white circle" }, { "no": 2354, "code": "26AB", "char": "⚫", "name": "black circle" }, { "no": 2355, "code": "1F534", "char": "🔴", "name": "red circle" }, { "no": 2356, "code": "1F535", "char": "🔵", "name": "blue circle" }, { "no": 2357, "code": "1F3C1", "char": "🏁", "name": "chequered flag" }, { "no": 2358, "code": "1F6A9", "char": "🚩", "name": "triangular flag" }, { "no": 2359, "code": "1F38C", "char": "🎌", "name": "crossed flags" }, { "no": 2360, "code": "1F3F4", "char": "🏴", "name": "black flag" }, { "no": 2361, "code": "1F3F3", "char": "🏳", "name": "white flag" }, { "no": 2362, "code": "1F3F3 FE0F 200D 1F308", "char": "🏳️‍🌈", "name": "rainbow flag" }, { "no": 2363, "code": "1F1E6 1F1E8", "char": "🇦🇨", "name": "Ascension Island" }, { "no": 2364, "code": "1F1E6 1F1E9", "char": "🇦🇩", "name": "Andorra" }, { "no": 2365, "code": "1F1E6 1F1EA", "char": "🇦🇪", "name": "United Arab Emirates" }, { "no": 2366, "code": "1F1E6 1F1EB", "char": "🇦🇫", "name": "Afghanistan" }, { "no": 2367, "code": "1F1E6 1F1EC", "char": "🇦🇬", "name": "Antigua & Barbuda" }, { "no": 2368, "code": "1F1E6 1F1EE", "char": "🇦🇮", "name": "Anguilla" }, { "no": 2369, "code": "1F1E6 1F1F1", "char": "🇦🇱", "name": "Albania" }, { "no": 2370, "code": "1F1E6 1F1F2", "char": "🇦🇲", "name": "Armenia" }, { "no": 2371, "code": "1F1E6 1F1F4", "char": "🇦🇴", "name": "Angola" }, { "no": 2372, "code": "1F1E6 1F1F6", "char": "🇦🇶", "name": "Antarctica" }, { "no": 2373, "code": "1F1E6 1F1F7", "char": "🇦🇷", "name": "Argentina" }, { "no": 2374, "code": "1F1E6 1F1F8", "char": "🇦🇸", "name": "American Samoa" }, { "no": 2375, "code": "1F1E6 1F1F9", "char": "🇦🇹", "name": "Austria" }, { "no": 2376, "code": "1F1E6 1F1FA", "char": "🇦🇺", "name": "Australia" }, { "no": 2377, "code": "1F1E6 1F1FC", "char": "🇦🇼", "name": "Aruba" }, { "no": 2378, "code": "1F1E6 1F1FD", "char": "🇦🇽", "name": "Åland Islands" }, { "no": 2379, "code": "1F1E6 1F1FF", "char": "🇦🇿", "name": "Azerbaijan" }, { "no": 2380, "code": "1F1E7 1F1E6", "char": "🇧🇦", "name": "Bosnia & Herzegovina" }, { "no": 2381, "code": "1F1E7 1F1E7", "char": "🇧🇧", "name": "Barbados" }, { "no": 2382, "code": "1F1E7 1F1E9", "char": "🇧🇩", "name": "Bangladesh" }, { "no": 2383, "code": "1F1E7 1F1EA", "char": "🇧🇪", "name": "Belgium" }, { "no": 2384, "code": "1F1E7 1F1EB", "char": "🇧🇫", "name": "Burkina Faso" }, { "no": 2385, "code": "1F1E7 1F1EC", "char": "🇧🇬", "name": "Bulgaria" }, { "no": 2386, "code": "1F1E7 1F1ED", "char": "🇧🇭", "name": "Bahrain" }, { "no": 2387, "code": "1F1E7 1F1EE", "char": "🇧🇮", "name": "Burundi" }, { "no": 2388, "code": "1F1E7 1F1EF", "char": "🇧🇯", "name": "Benin" }, { "no": 2389, "code": "1F1E7 1F1F1", "char": "🇧🇱", "name": "St. Barthélemy" }, { "no": 2390, "code": "1F1E7 1F1F2", "char": "🇧🇲", "name": "Bermuda" }, { "no": 2391, "code": "1F1E7 1F1F3", "char": "🇧🇳", "name": "Brunei" }, { "no": 2392, "code": "1F1E7 1F1F4", "char": "🇧🇴", "name": "Bolivia" }, { "no": 2393, "code": "1F1E7 1F1F6", "char": "🇧🇶", "name": "Caribbean Netherlands" }, { "no": 2394, "code": "1F1E7 1F1F7", "char": "🇧🇷", "name": "Brazil" }, { "no": 2395, "code": "1F1E7 1F1F8", "char": "🇧🇸", "name": "Bahamas" }, { "no": 2396, "code": "1F1E7 1F1F9", "char": "🇧🇹", "name": "Bhutan" }, { "no": 2397, "code": "1F1E7 1F1FB", "char": "🇧🇻", "name": "Bouvet Island" }, { "no": 2398, "code": "1F1E7 1F1FC", "char": "🇧🇼", "name": "Botswana" }, { "no": 2399, "code": "1F1E7 1F1FE", "char": "🇧🇾", "name": "Belarus" }, { "no": 2400, "code": "1F1E7 1F1FF", "char": "🇧🇿", "name": "Belize" }, { "no": 2401, "code": "1F1E8 1F1E6", "char": "🇨🇦", "name": "Canada" }, { "no": 2402, "code": "1F1E8 1F1E8", "char": "🇨🇨", "name": "Cocos (Keeling) Islands" }, { "no": 2403, "code": "1F1E8 1F1E9", "char": "🇨🇩", "name": "Congo - Kinshasa" }, { "no": 2404, "code": "1F1E8 1F1EB", "char": "🇨🇫", "name": "Central African Republic" }, { "no": 2405, "code": "1F1E8 1F1EC", "char": "🇨🇬", "name": "Congo - Brazzaville" }, { "no": 2406, "code": "1F1E8 1F1ED", "char": "🇨🇭", "name": "Switzerland" }, { "no": 2407, "code": "1F1E8 1F1EE", "char": "🇨🇮", "name": "Côte d’Ivoire" }, { "no": 2408, "code": "1F1E8 1F1F0", "char": "🇨🇰", "name": "Cook Islands" }, { "no": 2409, "code": "1F1E8 1F1F1", "char": "🇨🇱", "name": "Chile" }, { "no": 2410, "code": "1F1E8 1F1F2", "char": "🇨🇲", "name": "Cameroon" }, { "no": 2411, "code": "1F1E8 1F1F3", "char": "🇨🇳", "name": "China" }, { "no": 2412, "code": "1F1E8 1F1F4", "char": "🇨🇴", "name": "Colombia" }, { "no": 2413, "code": "1F1E8 1F1F5", "char": "🇨🇵", "name": "Clipperton Island" }, { "no": 2414, "code": "1F1E8 1F1F7", "char": "🇨🇷", "name": "Costa Rica" }, { "no": 2415, "code": "1F1E8 1F1FA", "char": "🇨🇺", "name": "Cuba" }, { "no": 2416, "code": "1F1E8 1F1FB", "char": "🇨🇻", "name": "Cape Verde" }, { "no": 2417, "code": "1F1E8 1F1FC", "char": "🇨🇼", "name": "Curaçao" }, { "no": 2418, "code": "1F1E8 1F1FD", "char": "🇨🇽", "name": "Christmas Island" }, { "no": 2419, "code": "1F1E8 1F1FE", "char": "🇨🇾", "name": "Cyprus" }, { "no": 2420, "code": "1F1E8 1F1FF", "char": "🇨🇿", "name": "Czechia" }, { "no": 2421, "code": "1F1E9 1F1EA", "char": "🇩🇪", "name": "Germany" }, { "no": 2422, "code": "1F1E9 1F1EC", "char": "🇩🇬", "name": "Diego Garcia" }, { "no": 2423, "code": "1F1E9 1F1EF", "char": "🇩🇯", "name": "Djibouti" }, { "no": 2424, "code": "1F1E9 1F1F0", "char": "🇩🇰", "name": "Denmark" }, { "no": 2425, "code": "1F1E9 1F1F2", "char": "🇩🇲", "name": "Dominica" }, { "no": 2426, "code": "1F1E9 1F1F4", "char": "🇩🇴", "name": "Dominican Republic" }, { "no": 2427, "code": "1F1E9 1F1FF", "char": "🇩🇿", "name": "Algeria" }, { "no": 2428, "code": "1F1EA 1F1E6", "char": "🇪🇦", "name": "Ceuta & Melilla" }, { "no": 2429, "code": "1F1EA 1F1E8", "char": "🇪🇨", "name": "Ecuador" }, { "no": 2430, "code": "1F1EA 1F1EA", "char": "🇪🇪", "name": "Estonia" }, { "no": 2431, "code": "1F1EA 1F1EC", "char": "🇪🇬", "name": "Egypt" }, { "no": 2432, "code": "1F1EA 1F1ED", "char": "🇪🇭", "name": "Western Sahara" }, { "no": 2433, "code": "1F1EA 1F1F7", "char": "🇪🇷", "name": "Eritrea" }, { "no": 2434, "code": "1F1EA 1F1F8", "char": "🇪🇸", "name": "Spain" }, { "no": 2435, "code": "1F1EA 1F1F9", "char": "🇪🇹", "name": "Ethiopia" }, { "no": 2436, "code": "1F1EA 1F1FA", "char": "🇪🇺", "name": "European Union" }, { "no": 2437, "code": "1F1EB 1F1EE", "char": "🇫🇮", "name": "Finland" }, { "no": 2438, "code": "1F1EB 1F1EF", "char": "🇫🇯", "name": "Fiji" }, { "no": 2439, "code": "1F1EB 1F1F0", "char": "🇫🇰", "name": "Falkland Islands" }, { "no": 2440, "code": "1F1EB 1F1F2", "char": "🇫🇲", "name": "Micronesia" }, { "no": 2441, "code": "1F1EB 1F1F4", "char": "🇫🇴", "name": "Faroe Islands" }, { "no": 2442, "code": "1F1EB 1F1F7", "char": "🇫🇷", "name": "France" }, { "no": 2443, "code": "1F1EC 1F1E6", "char": "🇬🇦", "name": "Gabon" }, { "no": 2444, "code": "1F1EC 1F1E7", "char": "🇬🇧", "name": "United Kingdom" }, { "no": 2445, "code": "1F1EC 1F1E9", "char": "🇬🇩", "name": "Grenada" }, { "no": 2446, "code": "1F1EC 1F1EA", "char": "🇬🇪", "name": "Georgia" }, { "no": 2447, "code": "1F1EC 1F1EB", "char": "🇬🇫", "name": "French Guiana" }, { "no": 2448, "code": "1F1EC 1F1EC", "char": "🇬🇬", "name": "Guernsey" }, { "no": 2449, "code": "1F1EC 1F1ED", "char": "🇬🇭", "name": "Ghana" }, { "no": 2450, "code": "1F1EC 1F1EE", "char": "🇬🇮", "name": "Gibraltar" }, { "no": 2451, "code": "1F1EC 1F1F1", "char": "🇬🇱", "name": "Greenland" }, { "no": 2452, "code": "1F1EC 1F1F2", "char": "🇬🇲", "name": "Gambia" }, { "no": 2453, "code": "1F1EC 1F1F3", "char": "🇬🇳", "name": "Guinea" }, { "no": 2454, "code": "1F1EC 1F1F5", "char": "🇬🇵", "name": "Guadeloupe" }, { "no": 2455, "code": "1F1EC 1F1F6", "char": "🇬🇶", "name": "Equatorial Guinea" }, { "no": 2456, "code": "1F1EC 1F1F7", "char": "🇬🇷", "name": "Greece" }, { "no": 2457, "code": "1F1EC 1F1F8", "char": "🇬🇸", "name": "South Georgia & South Sandwich Islands" }, { "no": 2458, "code": "1F1EC 1F1F9", "char": "🇬🇹", "name": "Guatemala" }, { "no": 2459, "code": "1F1EC 1F1FA", "char": "🇬🇺", "name": "Guam" }, { "no": 2460, "code": "1F1EC 1F1FC", "char": "🇬🇼", "name": "Guinea-Bissau" }, { "no": 2461, "code": "1F1EC 1F1FE", "char": "🇬🇾", "name": "Guyana" }, { "no": 2462, "code": "1F1ED 1F1F0", "char": "🇭🇰", "name": "Hong Kong SAR China" }, { "no": 2463, "code": "1F1ED 1F1F2", "char": "🇭🇲", "name": "Heard & McDonald Islands" }, { "no": 2464, "code": "1F1ED 1F1F3", "char": "🇭🇳", "name": "Honduras" }, { "no": 2465, "code": "1F1ED 1F1F7", "char": "🇭🇷", "name": "Croatia" }, { "no": 2466, "code": "1F1ED 1F1F9", "char": "🇭🇹", "name": "Haiti" }, { "no": 2467, "code": "1F1ED 1F1FA", "char": "🇭🇺", "name": "Hungary" }, { "no": 2468, "code": "1F1EE 1F1E8", "char": "🇮🇨", "name": "Canary Islands" }, { "no": 2469, "code": "1F1EE 1F1E9", "char": "🇮🇩", "name": "Indonesia" }, { "no": 2470, "code": "1F1EE 1F1EA", "char": "🇮🇪", "name": "Ireland" }, { "no": 2471, "code": "1F1EE 1F1F1", "char": "🇮🇱", "name": "Israel" }, { "no": 2472, "code": "1F1EE 1F1F2", "char": "🇮🇲", "name": "Isle of Man" }, { "no": 2473, "code": "1F1EE 1F1F3", "char": "🇮🇳", "name": "India" }, { "no": 2474, "code": "1F1EE 1F1F4", "char": "🇮🇴", "name": "British Indian Ocean Territory" }, { "no": 2475, "code": "1F1EE 1F1F6", "char": "🇮🇶", "name": "Iraq" }, { "no": 2476, "code": "1F1EE 1F1F7", "char": "🇮🇷", "name": "Iran" }, { "no": 2477, "code": "1F1EE 1F1F8", "char": "🇮🇸", "name": "Iceland" }, { "no": 2478, "code": "1F1EE 1F1F9", "char": "🇮🇹", "name": "Italy" }, { "no": 2479, "code": "1F1EF 1F1EA", "char": "🇯🇪", "name": "Jersey" }, { "no": 2480, "code": "1F1EF 1F1F2", "char": "🇯🇲", "name": "Jamaica" }, { "no": 2481, "code": "1F1EF 1F1F4", "char": "🇯🇴", "name": "Jordan" }, { "no": 2482, "code": "1F1EF 1F1F5", "char": "🇯🇵", "name": "Japan" }, { "no": 2483, "code": "1F1F0 1F1EA", "char": "🇰🇪", "name": "Kenya" }, { "no": 2484, "code": "1F1F0 1F1EC", "char": "🇰🇬", "name": "Kyrgyzstan" }, { "no": 2485, "code": "1F1F0 1F1ED", "char": "🇰🇭", "name": "Cambodia" }, { "no": 2486, "code": "1F1F0 1F1EE", "char": "🇰🇮", "name": "Kiribati" }, { "no": 2487, "code": "1F1F0 1F1F2", "char": "🇰🇲", "name": "Comoros" }, { "no": 2488, "code": "1F1F0 1F1F3", "char": "🇰🇳", "name": "St. Kitts & Nevis" }, { "no": 2489, "code": "1F1F0 1F1F5", "char": "🇰🇵", "name": "North Korea" }, { "no": 2490, "code": "1F1F0 1F1F7", "char": "🇰🇷", "name": "South Korea" }, { "no": 2491, "code": "1F1F0 1F1FC", "char": "🇰🇼", "name": "Kuwait" }, { "no": 2492, "code": "1F1F0 1F1FE", "char": "🇰🇾", "name": "Cayman Islands" }, { "no": 2493, "code": "1F1F0 1F1FF", "char": "🇰🇿", "name": "Kazakhstan" }, { "no": 2494, "code": "1F1F1 1F1E6", "char": "🇱🇦", "name": "Laos" }, { "no": 2495, "code": "1F1F1 1F1E7", "char": "🇱🇧", "name": "Lebanon" }, { "no": 2496, "code": "1F1F1 1F1E8", "char": "🇱🇨", "name": "St. Lucia" }, { "no": 2497, "code": "1F1F1 1F1EE", "char": "🇱🇮", "name": "Liechtenstein" }, { "no": 2498, "code": "1F1F1 1F1F0", "char": "🇱🇰", "name": "Sri Lanka" }, { "no": 2499, "code": "1F1F1 1F1F7", "char": "🇱🇷", "name": "Liberia" }, { "no": 2500, "code": "1F1F1 1F1F8", "char": "🇱🇸", "name": "Lesotho" }, { "no": 2501, "code": "1F1F1 1F1F9", "char": "🇱🇹", "name": "Lithuania" }, { "no": 2502, "code": "1F1F1 1F1FA", "char": "🇱🇺", "name": "Luxembourg" }, { "no": 2503, "code": "1F1F1 1F1FB", "char": "🇱🇻", "name": "Latvia" }, { "no": 2504, "code": "1F1F1 1F1FE", "char": "🇱🇾", "name": "Libya" }, { "no": 2505, "code": "1F1F2 1F1E6", "char": "🇲🇦", "name": "Morocco" }, { "no": 2506, "code": "1F1F2 1F1E8", "char": "🇲🇨", "name": "Monaco" }, { "no": 2507, "code": "1F1F2 1F1E9", "char": "🇲🇩", "name": "Moldova" }, { "no": 2508, "code": "1F1F2 1F1EA", "char": "🇲🇪", "name": "Montenegro" }, { "no": 2509, "code": "1F1F2 1F1EB", "char": "🇲🇫", "name": "St. Martin" }, { "no": 2510, "code": "1F1F2 1F1EC", "char": "🇲🇬", "name": "Madagascar" }, { "no": 2511, "code": "1F1F2 1F1ED", "char": "🇲🇭", "name": "Marshall Islands" }, { "no": 2512, "code": "1F1F2 1F1F0", "char": "🇲🇰", "name": "Macedonia" }, { "no": 2513, "code": "1F1F2 1F1F1", "char": "🇲🇱", "name": "Mali" }, { "no": 2514, "code": "1F1F2 1F1F2", "char": "🇲🇲", "name": "Myanmar (Burma)" }, { "no": 2515, "code": "1F1F2 1F1F3", "char": "🇲🇳", "name": "Mongolia" }, { "no": 2516, "code": "1F1F2 1F1F4", "char": "🇲🇴", "name": "Macau SAR China" }, { "no": 2517, "code": "1F1F2 1F1F5", "char": "🇲🇵", "name": "Northern Mariana Islands" }, { "no": 2518, "code": "1F1F2 1F1F6", "char": "🇲🇶", "name": "Martinique" }, { "no": 2519, "code": "1F1F2 1F1F7", "char": "🇲🇷", "name": "Mauritania" }, { "no": 2520, "code": "1F1F2 1F1F8", "char": "🇲🇸", "name": "Montserrat" }, { "no": 2521, "code": "1F1F2 1F1F9", "char": "🇲🇹", "name": "Malta" }, { "no": 2522, "code": "1F1F2 1F1FA", "char": "🇲🇺", "name": "Mauritius" }, { "no": 2523, "code": "1F1F2 1F1FB", "char": "🇲🇻", "name": "Maldives" }, { "no": 2524, "code": "1F1F2 1F1FC", "char": "🇲🇼", "name": "Malawi" }, { "no": 2525, "code": "1F1F2 1F1FD", "char": "🇲🇽", "name": "Mexico" }, { "no": 2526, "code": "1F1F2 1F1FE", "char": "🇲🇾", "name": "Malaysia" }, { "no": 2527, "code": "1F1F2 1F1FF", "char": "🇲🇿", "name": "Mozambique" }, { "no": 2528, "code": "1F1F3 1F1E6", "char": "🇳🇦", "name": "Namibia" }, { "no": 2529, "code": "1F1F3 1F1E8", "char": "🇳🇨", "name": "New Caledonia" }, { "no": 2530, "code": "1F1F3 1F1EA", "char": "🇳🇪", "name": "Niger" }, { "no": 2531, "code": "1F1F3 1F1EB", "char": "🇳🇫", "name": "Norfolk Island" }, { "no": 2532, "code": "1F1F3 1F1EC", "char": "🇳🇬", "name": "Nigeria" }, { "no": 2533, "code": "1F1F3 1F1EE", "char": "🇳🇮", "name": "Nicaragua" }, { "no": 2534, "code": "1F1F3 1F1F1", "char": "🇳🇱", "name": "Netherlands" }, { "no": 2535, "code": "1F1F3 1F1F4", "char": "🇳🇴", "name": "Norway" }, { "no": 2536, "code": "1F1F3 1F1F5", "char": "🇳🇵", "name": "Nepal" }, { "no": 2537, "code": "1F1F3 1F1F7", "char": "🇳🇷", "name": "Nauru" }, { "no": 2538, "code": "1F1F3 1F1FA", "char": "🇳🇺", "name": "Niue" }, { "no": 2539, "code": "1F1F3 1F1FF", "char": "🇳🇿", "name": "New Zealand" }, { "no": 2540, "code": "1F1F4 1F1F2", "char": "🇴🇲", "name": "Oman" }, { "no": 2541, "code": "1F1F5 1F1E6", "char": "🇵🇦", "name": "Panama" }, { "no": 2542, "code": "1F1F5 1F1EA", "char": "🇵🇪", "name": "Peru" }, { "no": 2543, "code": "1F1F5 1F1EB", "char": "🇵🇫", "name": "French Polynesia" }, { "no": 2544, "code": "1F1F5 1F1EC", "char": "🇵🇬", "name": "Papua New Guinea" }, { "no": 2545, "code": "1F1F5 1F1ED", "char": "🇵🇭", "name": "Philippines" }, { "no": 2546, "code": "1F1F5 1F1F0", "char": "🇵🇰", "name": "Pakistan" }, { "no": 2547, "code": "1F1F5 1F1F1", "char": "🇵🇱", "name": "Poland" }, { "no": 2548, "code": "1F1F5 1F1F2", "char": "🇵🇲", "name": "St. Pierre & Miquelon" }, { "no": 2549, "code": "1F1F5 1F1F3", "char": "🇵🇳", "name": "Pitcairn Islands" }, { "no": 2550, "code": "1F1F5 1F1F7", "char": "🇵🇷", "name": "Puerto Rico" }, { "no": 2551, "code": "1F1F5 1F1F8", "char": "🇵🇸", "name": "Palestinian Territories" }, { "no": 2552, "code": "1F1F5 1F1F9", "char": "🇵🇹", "name": "Portugal" }, { "no": 2553, "code": "1F1F5 1F1FC", "char": "🇵🇼", "name": "Palau" }, { "no": 2554, "code": "1F1F5 1F1FE", "char": "🇵🇾", "name": "Paraguay" }, { "no": 2555, "code": "1F1F6 1F1E6", "char": "🇶🇦", "name": "Qatar" }, { "no": 2556, "code": "1F1F7 1F1EA", "char": "🇷🇪", "name": "Réunion" }, { "no": 2557, "code": "1F1F7 1F1F4", "char": "🇷🇴", "name": "Romania" }, { "no": 2558, "code": "1F1F7 1F1F8", "char": "🇷🇸", "name": "Serbia" }, { "no": 2559, "code": "1F1F7 1F1FA", "char": "🇷🇺", "name": "Russia" }, { "no": 2560, "code": "1F1F7 1F1FC", "char": "🇷🇼", "name": "Rwanda" }, { "no": 2561, "code": "1F1F8 1F1E6", "char": "🇸🇦", "name": "Saudi Arabia" }, { "no": 2562, "code": "1F1F8 1F1E7", "char": "🇸🇧", "name": "Solomon Islands" }, { "no": 2563, "code": "1F1F8 1F1E8", "char": "🇸🇨", "name": "Seychelles" }, { "no": 2564, "code": "1F1F8 1F1E9", "char": "🇸🇩", "name": "Sudan" }, { "no": 2565, "code": "1F1F8 1F1EA", "char": "🇸🇪", "name": "Sweden" }, { "no": 2566, "code": "1F1F8 1F1EC", "char": "🇸🇬", "name": "Singapore" }, { "no": 2567, "code": "1F1F8 1F1ED", "char": "🇸🇭", "name": "St. Helena" }, { "no": 2568, "code": "1F1F8 1F1EE", "char": "🇸🇮", "name": "Slovenia" }, { "no": 2569, "code": "1F1F8 1F1EF", "char": "🇸🇯", "name": "Svalbard & Jan Mayen" }, { "no": 2570, "code": "1F1F8 1F1F0", "char": "🇸🇰", "name": "Slovakia" }, { "no": 2571, "code": "1F1F8 1F1F1", "char": "🇸🇱", "name": "Sierra Leone" }, { "no": 2572, "code": "1F1F8 1F1F2", "char": "🇸🇲", "name": "San Marino" }, { "no": 2573, "code": "1F1F8 1F1F3", "char": "🇸🇳", "name": "Senegal" }, { "no": 2574, "code": "1F1F8 1F1F4", "char": "🇸🇴", "name": "Somalia" }, { "no": 2575, "code": "1F1F8 1F1F7", "char": "🇸🇷", "name": "Suriname" }, { "no": 2576, "code": "1F1F8 1F1F8", "char": "🇸🇸", "name": "South Sudan" }, { "no": 2577, "code": "1F1F8 1F1F9", "char": "🇸🇹", "name": "São Tomé & Príncipe" }, { "no": 2578, "code": "1F1F8 1F1FB", "char": "🇸🇻", "name": "El Salvador" }, { "no": 2579, "code": "1F1F8 1F1FD", "char": "🇸🇽", "name": "Sint Maarten" }, { "no": 2580, "code": "1F1F8 1F1FE", "char": "🇸🇾", "name": "Syria" }, { "no": 2581, "code": "1F1F8 1F1FF", "char": "🇸🇿", "name": "Swaziland" }, { "no": 2582, "code": "1F1F9 1F1E6", "char": "🇹🇦", "name": "Tristan da Cunha" }, { "no": 2583, "code": "1F1F9 1F1E8", "char": "🇹🇨", "name": "Turks & Caicos Islands" }, { "no": 2584, "code": "1F1F9 1F1E9", "char": "🇹🇩", "name": "Chad" }, { "no": 2585, "code": "1F1F9 1F1EB", "char": "🇹🇫", "name": "French Southern Territories" }, { "no": 2586, "code": "1F1F9 1F1EC", "char": "🇹🇬", "name": "Togo" }, { "no": 2587, "code": "1F1F9 1F1ED", "char": "🇹🇭", "name": "Thailand" }, { "no": 2588, "code": "1F1F9 1F1EF", "char": "🇹🇯", "name": "Tajikistan" }, { "no": 2589, "code": "1F1F9 1F1F0", "char": "🇹🇰", "name": "Tokelau" }, { "no": 2590, "code": "1F1F9 1F1F1", "char": "🇹🇱", "name": "Timor-Leste" }, { "no": 2591, "code": "1F1F9 1F1F2", "char": "🇹🇲", "name": "Turkmenistan" }, { "no": 2592, "code": "1F1F9 1F1F3", "char": "🇹🇳", "name": "Tunisia" }, { "no": 2593, "code": "1F1F9 1F1F4", "char": "🇹🇴", "name": "Tonga" }, { "no": 2594, "code": "1F1F9 1F1F7", "char": "🇹🇷", "name": "Turkey" }, { "no": 2595, "code": "1F1F9 1F1F9", "char": "🇹🇹", "name": "Trinidad & Tobago" }, { "no": 2596, "code": "1F1F9 1F1FB", "char": "🇹🇻", "name": "Tuvalu" }, { "no": 2597, "code": "1F1F9 1F1FC", "char": "🇹🇼", "name": "Taiwan" }, { "no": 2598, "code": "1F1F9 1F1FF", "char": "🇹🇿", "name": "Tanzania" }, { "no": 2599, "code": "1F1FA 1F1E6", "char": "🇺🇦", "name": "Ukraine" }, { "no": 2600, "code": "1F1FA 1F1EC", "char": "🇺🇬", "name": "Uganda" }, { "no": 2601, "code": "1F1FA 1F1F2", "char": "🇺🇲", "name": "U.S. Outlying Islands" }, { "no": 2602, "code": "1F1FA 1F1F3", "char": "🇺🇳", "name": "United Nations" }, { "no": 2603, "code": "1F1FA 1F1F8", "char": "🇺🇸", "name": "United States" }, { "no": 2604, "code": "1F1FA 1F1FE", "char": "🇺🇾", "name": "Uruguay" }, { "no": 2605, "code": "1F1FA 1F1FF", "char": "🇺🇿", "name": "Uzbekistan" }, { "no": 2606, "code": "1F1FB 1F1E6", "char": "🇻🇦", "name": "Vatican City" }, { "no": 2607, "code": "1F1FB 1F1E8", "char": "🇻🇨", "name": "St. Vincent & Grenadines" }, { "no": 2608, "code": "1F1FB 1F1EA", "char": "🇻🇪", "name": "Venezuela" }, { "no": 2609, "code": "1F1FB 1F1EC", "char": "🇻🇬", "name": "British Virgin Islands" }, { "no": 2610, "code": "1F1FB 1F1EE", "char": "🇻🇮", "name": "U.S. Virgin Islands" }, { "no": 2611, "code": "1F1FB 1F1F3", "char": "🇻🇳", "name": "Vietnam" }, { "no": 2612, "code": "1F1FB 1F1FA", "char": "🇻🇺", "name": "Vanuatu" }, { "no": 2613, "code": "1F1FC 1F1EB", "char": "🇼🇫", "name": "Wallis & Futuna" }, { "no": 2614, "code": "1F1FC 1F1F8", "char": "🇼🇸", "name": "Samoa" }, { "no": 2615, "code": "1F1FD 1F1F0", "char": "🇽🇰", "name": "Kosovo" }, { "no": 2616, "code": "1F1FE 1F1EA", "char": "🇾🇪", "name": "Yemen" }, { "no": 2617, "code": "1F1FE 1F1F9", "char": "🇾🇹", "name": "Mayotte" }, { "no": 2618, "code": "1F1FF 1F1E6", "char": "🇿🇦", "name": "South Africa" }, { "no": 2619, "code": "1F1FF 1F1F2", "char": "🇿🇲", "name": "Zambia" }, { "no": 2620, "code": "1F1FF 1F1FC", "char": "🇿🇼", "name": "Zimbabwe" }, { "no": 2621, "code": "1F3F4 E0067 E0062 E0065 E006E E0067 E007F", "char": "🏴󠁧󠁢󠁥󠁮󠁧󠁿", "name": "⊛ England" }, { "no": 2622, "code": "1F3F4 E0067 E0062 E0073 E0063 E0074 E007F", "char": "🏴󠁧󠁢󠁳󠁣󠁴󠁿", "name": "⊛ Scotland" }, { "no": 2623, "code": "1F3F4 E0067 E0062 E0077 E006C E0073 E007F", "char": "🏴󠁧󠁢󠁷󠁬󠁳󠁿", "name": "⊛ Wales" } ] 07070100000067000081A40000000000000000000000016712993F000012A5000000000000000000000000000000000000004000000000gnome-shell-47.1/data/gnome-shell-dbus-interfaces.gresource.xml net.hadess.PowerProfiles.xml net.hadess.SensorProxy.xml net.reactivated.Fprint.Device.xml net.reactivated.Fprint.Manager.xml org.freedesktop.Application.xml org.freedesktop.background.Monitor.xml org.freedesktop.bolt1.Device.xml org.freedesktop.bolt1.Manager.xml org.freedesktop.DBus.xml org.freedesktop.GeoClue2.Agent.xml org.freedesktop.GeoClue2.Manager.xml org.freedesktop.impl.portal.Access.xml org.freedesktop.impl.portal.PermissionStore.xml org.freedesktop.impl.portal.Request.xml org.freedesktop.login1.Manager.xml org.freedesktop.login1.Session.xml org.freedesktop.login1.User.xml org.freedesktop.ModemManager1.Modem.Modem3gpp.xml org.freedesktop.ModemManager1.Modem.ModemCdma.xml org.freedesktop.ModemManager1.Modem.xml org.freedesktop.ModemManager.Modem.Cdma.xml org.freedesktop.ModemManager.Modem.Gsm.Network.xml org.freedesktop.Notifications.xml org.freedesktop.PackageKit.Offline.xml org.freedesktop.realmd.Provider.xml org.freedesktop.realmd.Realm.xml org.freedesktop.realmd.Service.xml org.freedesktop.UPower.Device.xml org.freedesktop.UPower.xml org.gnome.Mutter.ScreenCast.xml org.gnome.ScreenSaver.xml org.gnome.SessionManager.EndSessionDialog.xml org.gnome.SessionManager.Inhibitor.xml org.gnome.SessionManager.Presence.xml org.gnome.SessionManager.xml org.gnome.SettingsDaemon.Color.xml org.gnome.SettingsDaemon.Power.Keyboard.xml org.gnome.SettingsDaemon.Power.Screen.xml org.gnome.SettingsDaemon.Rfkill.xml org.gnome.SettingsDaemon.Wacom.xml org.gnome.Shell.AudioDeviceSelection.xml org.gnome.Shell.CalendarServer.xml org.gnome.Shell.ClocksIntegration.xml org.gnome.Shell.Extensions.xml org.gnome.Shell.Introspect.xml org.gnome.Shell.HotplugSniffer.xml org.gnome.Shell.PerfHelper.xml org.gnome.Shell.PortalHelper.xml org.gnome.Shell.Screencast.xml org.gnome.Shell.Screenshot.xml org.gnome.Shell.Wacom.PadOsd.xml org.gnome.Shell.WeatherIntegration.xml org.gnome.Shell.xml org.Gtk.MountOperationHandler.xml org.gtk.Notifications.xml org.mpris.MediaPlayer2.Player.xml org.mpris.MediaPlayer2.xml 07070100000068000081A40000000000000000000000016712993F000013B6000000000000000000000000000000000000003600000000gnome-shell-47.1/data/gnome-shell-icons.gresource.xml scalable/actions/color-pick.svg scalable/actions/carousel-arrow-next-symbolic.svg scalable/actions/carousel-arrow-previous-symbolic.svg scalable/actions/dark-mode-symbolic.svg scalable/actions/notification-expand-symbolic.svg scalable/actions/ornament-check-symbolic.svg scalable/actions/ornament-dot-checked-symbolic.svg scalable/actions/ornament-dot-unchecked-symbolic.svg scalable/actions/pointer-double-click-symbolic.svg scalable/actions/pointer-drag-symbolic.svg scalable/actions/pointer-primary-click-symbolic.svg scalable/actions/pointer-secondary-click-symbolic.svg scalable/actions/preview-close-symbolic.svg scalable/actions/record-screen-symbolic.svg scalable/actions/screencast-recorded-symbolic.svg scalable/actions/screencast-stop-symbolic.svg scalable/actions/screenshooter-symbolic.svg scalable/actions/screenshot-ui-area-symbolic.svg scalable/actions/screenshot-ui-display-symbolic.svg scalable/actions/screenshot-ui-show-pointer-symbolic.svg scalable/actions/screenshot-ui-window-symbolic.svg scalable/actions/screenshot-recorded-symbolic.svg scalable/actions/shell-display-built-in-only-symbolic.svg scalable/actions/shell-display-extend-all-symbolic.svg scalable/actions/shell-display-external-only-symbolic.svg scalable/actions/shell-display-mirror-symbolic.svg scalable/actions/shell-focus-app-grid-symbolic.svg scalable/actions/shell-focus-dash-symbolic.svg scalable/actions/shell-focus-dash-symbolic-rtl.svg scalable/actions/shell-focus-desktop-symbolic.svg scalable/actions/shell-focus-desktop-symbolic-rtl.svg scalable/actions/shell-focus-search-symbolic.svg scalable/actions/shell-focus-top-bar-symbolic.svg scalable/actions/shell-focus-top-bar-symbolic-rtl.svg scalable/actions/shell-focus-windows-symbolic.svg scalable/status/background-app-ghost-symbolic.svg scalable/status/check-symbolic.svg scalable/status/keyboard-brightness-high-symbolic.svg scalable/status/keyboard-brightness-medium-symbolic.svg scalable/status/keyboard-brightness-off-symbolic.svg scalable/status/keyboard-caps-lock-symbolic.svg scalable/status/keyboard-enter-symbolic.svg scalable/status/keyboard-hide-symbolic.svg scalable/status/keyboard-layout-symbolic.svg scalable/status/keyboard-shift-symbolic.svg scalable/status/keyboard-zwnj-symbolic.svg scalable/status/message-indicator-symbolic.svg scalable/status/no-notifications-symbolic.svg scalable/status/screen-privacy-disabled-symbolic.svg scalable/status/screen-privacy-symbolic.svg scalable/status/switch-on-symbolic.svg scalable/status/switch-off-symbolic.svg 07070100000069000081A40000000000000000000000016712993F00000734000000000000000000000000000000000000003C00000000gnome-shell-47.1/data/gnome-shell-osk-layouts.gresource.xml am.json ara.json at.json be.json bg.json by.json ca.json ch.json ch+fr.json cz.json de.json digits.json dk.json ee.json email.json epo.json es+cat.json es.json fi.json fr.json ge.json gr.json hr.json hu.json id.json il.json in+bolnagri.json in+mal.json ir.json is.json it.json ke.json kg.json kh.json kr.json la.json latam.json lt.json lv.json mk.json mn.json my.json nl.json no.json number.json ph.json phone.json pl.json pt.json ro.json rs.json ru.json se.json si.json sk.json th.json tr.json ua.json uk.json url.json us.json us-extended.json vn.json za.json za-extended.json emoji.json 0707010000006A000081A40000000000000000000000016712993F0000020D000000000000000000000000000000000000003600000000gnome-shell-47.1/data/gnome-shell-theme.gresource.xml calendar-today.svg calendar-today-light.svg gnome-shell-dark.css gnome-shell-light.css gnome-shell-high-contrast.css gnome-shell-start.svg pad-osd.css process-working-light.svg process-working-dark.svg workspace-placeholder.svg 0707010000006B000041ED0000000000000000000000026712993F00000000000000000000000000000000000000000000001C00000000gnome-shell-47.1/data/icons0707010000006C000041ED0000000000000000000000026712993F00000000000000000000000000000000000000000000002400000000gnome-shell-47.1/data/icons/hicolor0707010000006D000041ED0000000000000000000000026712993F00000000000000000000000000000000000000000000002D00000000gnome-shell-47.1/data/icons/hicolor/scalable0707010000006E000041ED0000000000000000000000026712993F00000000000000000000000000000000000000000000003200000000gnome-shell-47.1/data/icons/hicolor/scalable/apps0707010000006F000081A40000000000000000000000016712993F00001532000000000000000000000000000000000000005400000000gnome-shell-47.1/data/icons/hicolor/scalable/apps/org.gnome.Shell.CaptivePortal.svg 07070100000070000081A40000000000000000000000016712993F0000186A000000000000000000000000000000000000005100000000gnome-shell-47.1/data/icons/hicolor/scalable/apps/org.gnome.Shell.Extensions.svg07070100000071000041ED0000000000000000000000026712993F00000000000000000000000000000000000000000000002D00000000gnome-shell-47.1/data/icons/hicolor/symbolic07070100000072000041ED0000000000000000000000026712993F00000000000000000000000000000000000000000000003200000000gnome-shell-47.1/data/icons/hicolor/symbolic/apps07070100000073000081A40000000000000000000000016712993F000003E6000000000000000000000000000000000000005D00000000gnome-shell-47.1/data/icons/hicolor/symbolic/apps/org.gnome.Shell.CaptivePortal-symbolic.svg 07070100000074000081A40000000000000000000000016712993F000005BE000000000000000000000000000000000000005A00000000gnome-shell-47.1/data/icons/hicolor/symbolic/apps/org.gnome.Shell.Extensions-symbolic.svg07070100000075000081A40000000000000000000000016712993F00000114000000000000000000000000000000000000002800000000gnome-shell-47.1/data/icons/meson.buildexcluded_icons=[] if not have_portal_helper excluded_icons += [ 'scalable/apps/org.gnome.Shell.CaptivePortal.svg', 'symbolic/apps/org.gnome.Shell.CaptivePortal-symbolic.svg', ] endif install_subdir('hicolor', install_dir: icondir, exclude_files: excluded_icons) 07070100000076000041ED0000000000000000000000026712993F00000000000000000000000000000000000000000000002500000000gnome-shell-47.1/data/icons/scalable07070100000077000041ED0000000000000000000000026712993F00000000000000000000000000000000000000000000002D00000000gnome-shell-47.1/data/icons/scalable/actions07070100000078000081A40000000000000000000000016712993F00000201000000000000000000000000000000000000004E00000000gnome-shell-47.1/data/icons/scalable/actions/carousel-arrow-next-symbolic.svg 07070100000079000081A40000000000000000000000016712993F00000204000000000000000000000000000000000000005200000000gnome-shell-47.1/data/icons/scalable/actions/carousel-arrow-previous-symbolic.svg 0707010000007A000081A40000000000000000000000016712993F00000EF1000000000000000000000000000000000000003C00000000gnome-shell-47.1/data/icons/scalable/actions/color-pick.svg image/svg+xml 0707010000007B000081A40000000000000000000000016712993F00000168000000000000000000000000000000000000004400000000gnome-shell-47.1/data/icons/scalable/actions/dark-mode-symbolic.svg 0707010000007C000081A40000000000000000000000016712993F000000D7000000000000000000000000000000000000004E00000000gnome-shell-47.1/data/icons/scalable/actions/notification-expand-symbolic.svg0707010000007D000081A40000000000000000000000016712993F000002E3000000000000000000000000000000000000004900000000gnome-shell-47.1/data/icons/scalable/actions/ornament-check-symbolic.svg 0707010000007E000081A40000000000000000000000016712993F00000230000000000000000000000000000000000000004F00000000gnome-shell-47.1/data/icons/scalable/actions/ornament-dot-checked-symbolic.svg 0707010000007F000081A40000000000000000000000016712993F000001B0000000000000000000000000000000000000005100000000gnome-shell-47.1/data/icons/scalable/actions/ornament-dot-unchecked-symbolic.svg 07070100000080000081A40000000000000000000000016712993F000003FD000000000000000000000000000000000000004F00000000gnome-shell-47.1/data/icons/scalable/actions/pointer-double-click-symbolic.svg 07070100000081000081A40000000000000000000000016712993F000008F9000000000000000000000000000000000000004700000000gnome-shell-47.1/data/icons/scalable/actions/pointer-drag-symbolic.svg 07070100000082000081A40000000000000000000000016712993F0000026D000000000000000000000000000000000000005000000000gnome-shell-47.1/data/icons/scalable/actions/pointer-primary-click-symbolic.svg 07070100000083000081A40000000000000000000000016712993F00000273000000000000000000000000000000000000005200000000gnome-shell-47.1/data/icons/scalable/actions/pointer-secondary-click-symbolic.svg 07070100000084000081A40000000000000000000000016712993F00000336000000000000000000000000000000000000004800000000gnome-shell-47.1/data/icons/scalable/actions/preview-close-symbolic.svg 07070100000085000081A40000000000000000000000016712993F000005E0000000000000000000000000000000000000004800000000gnome-shell-47.1/data/icons/scalable/actions/record-screen-symbolic.svg 07070100000086000081A40000000000000000000000016712993F00000581000000000000000000000000000000000000004E00000000gnome-shell-47.1/data/icons/scalable/actions/screencast-recorded-symbolic.svg 07070100000087000081A40000000000000000000000016712993F000000C5000000000000000000000000000000000000004A00000000gnome-shell-47.1/data/icons/scalable/actions/screencast-stop-symbolic.svg07070100000088000081A40000000000000000000000016712993F00000632000000000000000000000000000000000000004800000000gnome-shell-47.1/data/icons/scalable/actions/screenshooter-symbolic.svg 07070100000089000081A40000000000000000000000016712993F000004F8000000000000000000000000000000000000004E00000000gnome-shell-47.1/data/icons/scalable/actions/screenshot-recorded-symbolic.svg 0707010000008A000081A40000000000000000000000016712993F0000071D000000000000000000000000000000000000004D00000000gnome-shell-47.1/data/icons/scalable/actions/screenshot-ui-area-symbolic.svg 0707010000008B000081A40000000000000000000000016712993F000003CE000000000000000000000000000000000000005000000000gnome-shell-47.1/data/icons/scalable/actions/screenshot-ui-display-symbolic.svg 0707010000008C000081A40000000000000000000000016712993F00000160000000000000000000000000000000000000005500000000gnome-shell-47.1/data/icons/scalable/actions/screenshot-ui-show-pointer-symbolic.svg 0707010000008D000081A40000000000000000000000016712993F000002E8000000000000000000000000000000000000004F00000000gnome-shell-47.1/data/icons/scalable/actions/screenshot-ui-window-symbolic.svg 0707010000008E000081A40000000000000000000000016712993F000005D7000000000000000000000000000000000000005600000000gnome-shell-47.1/data/icons/scalable/actions/shell-display-built-in-only-symbolic.svg 0707010000008F000081A40000000000000000000000016712993F000005C8000000000000000000000000000000000000005300000000gnome-shell-47.1/data/icons/scalable/actions/shell-display-extend-all-symbolic.svg 07070100000090000081A40000000000000000000000016712993F000005BB000000000000000000000000000000000000005600000000gnome-shell-47.1/data/icons/scalable/actions/shell-display-external-only-symbolic.svg 07070100000091000081A40000000000000000000000016712993F000003D6000000000000000000000000000000000000004F00000000gnome-shell-47.1/data/icons/scalable/actions/shell-display-mirror-symbolic.svg 07070100000092000081A40000000000000000000000016712993F00000416000000000000000000000000000000000000004F00000000gnome-shell-47.1/data/icons/scalable/actions/shell-focus-app-grid-symbolic.svg 07070100000093000081A40000000000000000000000016712993F0000054D000000000000000000000000000000000000004F00000000gnome-shell-47.1/data/icons/scalable/actions/shell-focus-dash-symbolic-rtl.svg 07070100000094000081A40000000000000000000000016712993F0000054A000000000000000000000000000000000000004B00000000gnome-shell-47.1/data/icons/scalable/actions/shell-focus-dash-symbolic.svg 07070100000095000081A40000000000000000000000016712993F000004A4000000000000000000000000000000000000005200000000gnome-shell-47.1/data/icons/scalable/actions/shell-focus-desktop-symbolic-rtl.svg 07070100000096000081A40000000000000000000000016712993F000004A1000000000000000000000000000000000000004E00000000gnome-shell-47.1/data/icons/scalable/actions/shell-focus-desktop-symbolic.svg 07070100000097000081A40000000000000000000000016712993F000002F0000000000000000000000000000000000000004D00000000gnome-shell-47.1/data/icons/scalable/actions/shell-focus-search-symbolic.svg 07070100000098000081A40000000000000000000000016712993F000002AF000000000000000000000000000000000000005200000000gnome-shell-47.1/data/icons/scalable/actions/shell-focus-top-bar-symbolic-rtl.svg 07070100000099000081A40000000000000000000000016712993F000002AA000000000000000000000000000000000000004E00000000gnome-shell-47.1/data/icons/scalable/actions/shell-focus-top-bar-symbolic.svg 0707010000009A000081A40000000000000000000000016712993F000002EE000000000000000000000000000000000000004E00000000gnome-shell-47.1/data/icons/scalable/actions/shell-focus-windows-symbolic.svg 0707010000009B000041ED0000000000000000000000026712993F00000000000000000000000000000000000000000000002C00000000gnome-shell-47.1/data/icons/scalable/status0707010000009C000081A40000000000000000000000016712993F00000550000000000000000000000000000000000000004E00000000gnome-shell-47.1/data/icons/scalable/status/background-app-ghost-symbolic.svg 0707010000009D000081A40000000000000000000000016712993F00000192000000000000000000000000000000000000003F00000000gnome-shell-47.1/data/icons/scalable/status/check-symbolic.svg0707010000009E000081A40000000000000000000000016712993F0000054A000000000000000000000000000000000000005200000000gnome-shell-47.1/data/icons/scalable/status/keyboard-brightness-high-symbolic.svg 0707010000009F000081A40000000000000000000000016712993F00000384000000000000000000000000000000000000005400000000gnome-shell-47.1/data/icons/scalable/status/keyboard-brightness-medium-symbolic.svg 070701000000A0000081A40000000000000000000000016712993F000003C4000000000000000000000000000000000000005100000000gnome-shell-47.1/data/icons/scalable/status/keyboard-brightness-off-symbolic.svg 070701000000A1000081A40000000000000000000000016712993F000000ED000000000000000000000000000000000000004C00000000gnome-shell-47.1/data/icons/scalable/status/keyboard-caps-lock-symbolic.svg 070701000000A2000081A40000000000000000000000016712993F00000273000000000000000000000000000000000000004800000000gnome-shell-47.1/data/icons/scalable/status/keyboard-enter-symbolic.svg 070701000000A3000081A40000000000000000000000016712993F000003B4000000000000000000000000000000000000004700000000gnome-shell-47.1/data/icons/scalable/status/keyboard-hide-symbolic.svg 070701000000A4000081A40000000000000000000000016712993F0000068D000000000000000000000000000000000000004900000000gnome-shell-47.1/data/icons/scalable/status/keyboard-layout-symbolic.svg 070701000000A5000081A40000000000000000000000016712993F000000D6000000000000000000000000000000000000004800000000gnome-shell-47.1/data/icons/scalable/status/keyboard-shift-symbolic.svg 070701000000A6000081A40000000000000000000000016712993F000000E7000000000000000000000000000000000000004700000000gnome-shell-47.1/data/icons/scalable/status/keyboard-zwnj-symbolic.svg 070701000000A7000081A40000000000000000000000016712993F0000010B000000000000000000000000000000000000004B00000000gnome-shell-47.1/data/icons/scalable/status/message-indicator-symbolic.svg 070701000000A8000081A40000000000000000000000016712993F000002D7000000000000000000000000000000000000004A00000000gnome-shell-47.1/data/icons/scalable/status/no-notifications-symbolic.svg 070701000000A9000081A40000000000000000000000016712993F00000574000000000000000000000000000000000000005100000000gnome-shell-47.1/data/icons/scalable/status/screen-privacy-disabled-symbolic.svg 070701000000AA000081A40000000000000000000000016712993F00000342000000000000000000000000000000000000004800000000gnome-shell-47.1/data/icons/scalable/status/screen-privacy-symbolic.svg 070701000000AB000081A40000000000000000000000016712993F000006B9000000000000000000000000000000000000004400000000gnome-shell-47.1/data/icons/scalable/status/switch-off-symbolic.svg070701000000AC000081A40000000000000000000000016712993F000007CC000000000000000000000000000000000000004300000000gnome-shell-47.1/data/icons/scalable/status/switch-on-symbolic.svg image/svg+xml 070701000000AD000081A40000000000000000000000016712993F00000E80000000000000000000000000000000000000002200000000gnome-shell-47.1/data/meson.builddata_builddir = meson.current_build_dir() desktop_files = [ 'org.gnome.Shell.desktop', 'org.gnome.Shell.Extensions.desktop', ] service_files = [] if have_portal_helper desktop_files += 'org.gnome.Shell.PortalHelper.desktop' service_files += 'org.gnome.Shell.PortalHelper.service' endif desktopconf = configuration_data() # We substitute in bindir so it works as an autostart # file when built in a non-system prefix desktopconf.set('bindir', bindir) desktopconf.set('systemd_hidden', have_systemd ? 'true' : 'false') foreach desktop_file : desktop_files i18n.merge_file( input: configure_file( input: desktop_file + '.in.in', output: desktop_file + '.in', configuration: desktopconf ), output: desktop_file, po_dir: po_dir, install: true, install_dir: desktopdir, type: 'desktop' ) endforeach serviceconf = configuration_data() serviceconf.set('libexecdir', libexecdir) foreach service_file : service_files configure_file( input: service_file + '.in', output: service_file, configuration: serviceconf, install_dir: servicedir ) endforeach theme_deps = [] subdir('dbus-interfaces') subdir('icons') subdir('theme') data_resources = [ {'name': 'dbus-interfaces'}, {'name': 'icons'}, {'name': 'osk-layouts'}, {'name': 'theme', 'deps': theme_deps} ] foreach resource : data_resources name = resource.get('name') deps = resource.get('deps', []) gnome.compile_resources( 'gnome-shell-' + name, 'gnome-shell-@0@.gresource.xml'.format(name), source_dir: name, dependencies: deps, gresource_bundle: true, install: true, install_dir: pkgdatadir ) endforeach perfconf = configuration_data() perfconf.set('datadir', datadir) configure_file( input: 'perf-background.xml.in', output: 'perf-background.xml', configuration: perfconf, install_dir: pkgdatadir ) keybinding_files = [ '50-gnome-shell-launchers.xml', '50-gnome-shell-screenshots.xml', '50-gnome-shell-system.xml', ] install_data(keybinding_files, install_dir: keysdir) schemaconf = configuration_data() schemaconf.set('GETTEXT_PACKAGE', meson.project_name()) schema = configure_file( input: 'org.gnome.shell.gschema.xml.in', output: 'org.gnome.shell.gschema.xml', configuration: schemaconf, install_dir: schemadir ) install_data('00_org.gnome.shell.gschema.override', install_dir: schemadir) if have_systemd unitconf = configuration_data() unitconf.set('bindir', bindir) supported_sessions = ['wayland'] if have_x11 configure_file( input: 'org.gnome.Shell@x11.service.in', output: 'org.gnome.Shell@x11.service', configuration: unitconf, install_dir: systemduserunitdir ) supported_sessions += ['x11'] endif configure_file( input: 'org.gnome.Shell@wayland.service.in', output: 'org.gnome.Shell@wayland.service', configuration: unitconf, install_dir: systemduserunitdir ) units = files('org.gnome.Shell-disable-extensions.service') targetconf = configuration_data() sessions_wants = [] foreach session: supported_sessions sessions_wants += 'org.gnome.Shell@' + session + '.service' endforeach targetconf.set('SUPPORTED_SESSIONS', ' '.join(sessions_wants)) target = configure_file( input: 'org.gnome.Shell.target.in', output: 'org.gnome.Shell.target', configuration: targetconf ) units += target install_data(units, install_dir: systemduserunitdir) endif # for unit tests - gnome.compile_schemas() only looks in srcdir custom_target('compile-schemas', input: schema, output: 'gschemas.compiled', command: [find_program('glib-compile-schemas'), '--strict', data_builddir], build_by_default: true) 070701000000AE000081A40000000000000000000000016712993F00000201000000000000000000000000000000000000004100000000gnome-shell-47.1/data/org.gnome.Shell-disable-extensions.service[Unit] Description=Disable GNOME Shell extensions after failure # Note that this unit must not conflict with anything, and must # be able to run in parallel with the gnome-session-shutdown.target. DefaultDependencies=no # We want to disable extensions only if gnome-shell has flagged the extensions # to be a likely cause of trouble. ConditionPathExists=%t/gnome-shell-disable-extensions [Service] Type=simple # Disable extensions ExecStart=gsettings set org.gnome.shell disable-user-extensions true Restart=no 070701000000AF000081A40000000000000000000000016712993F0000CE42000000000000000000000000000000000000003A00000000gnome-shell-47.1/data/org.gnome.Shell-symbolic.Source.svg statusno-notificationsmessage-indicatorscreen-privacyscreen-privacy-disabledkeyboard-shiftkeyboard-caps-lockkeyboard-layoutkeyboard-enterkeyboard-hideactionscarousel-arrow-nextpointer-secondary-clickpointer-primary-clickpointer-dragpointer-double-clickscreenshot-ui-areascreenshot-ui-displayscreenshot-ui-displayshell-display-mirrorshell-display-extend-allshell-display-external-onlyshell-display-built-in-onlyscreenshot-ui-windowshell-focus-windowsscreenshot-ui-show-pointerornament-dot-uncheckedpreview-closepreview-closecarousel-arrow-previousshell-focus-dashshell-focus-app-gridshell-focus-searchshell-focus-top-barshell-focus-desktopshell-focus-dash-rtlshell-focus-top-bar-rtlshell-focus-desktop-rtlornament-checkornament-dot-checked 070701000000B0000081A40000000000000000000000016712993F00000141000000000000000000000000000000000000003F00000000gnome-shell-47.1/data/org.gnome.Shell.Extensions.desktop.in.in[Desktop Entry] Type=Application # Keep in sync with subprojects/extensions-app Name=Extensions # Translators: Do NOT translate or transliterate this text (this is an icon file name)! Icon=org.gnome.Shell.Extensions # Never launch this, just provide name+icon to portal dialog Exec=false OnlyShowIn=GNOME; NoDisplay=true 070701000000B1000081A40000000000000000000000016712993F0000012E000000000000000000000000000000000000004100000000gnome-shell-47.1/data/org.gnome.Shell.PortalHelper.desktop.in.in[Desktop Entry] Name=Network Login Type=Application Exec=gapplication launch org.gnome.Shell.PortalHelper DBusActivatable=true NoDisplay=true # Translators: Do NOT translate or transliterate this text (this is an icon file name)! Icon=org.gnome.Shell.CaptivePortal StartupNotify=true OnlyShowIn=GNOME; 070701000000B2000081A40000000000000000000000016712993F0000005E000000000000000000000000000000000000003E00000000gnome-shell-47.1/data/org.gnome.Shell.PortalHelper.service.in[D-BUS Service] Name=org.gnome.Shell.PortalHelper Exec=@libexecdir@/gnome-shell-portal-helper 070701000000B3000081A40000000000000000000000016712993F0000016C000000000000000000000000000000000000003400000000gnome-shell-47.1/data/org.gnome.Shell.desktop.in.in[Desktop Entry] Type=Application Name=GNOME Shell Comment=Window management and application launching Exec=@bindir@/gnome-shell Categories=GNOME;GTK;Core; OnlyShowIn=GNOME; NoDisplay=true X-GNOME-Autostart-Phase=DisplayServer X-GNOME-Provides=panel;windowmanager; X-GNOME-Autostart-Notify=true X-GNOME-AutoRestart=false X-GNOME-HiddenUnderSystemd=@systemd_hidden@ 070701000000B4000081A40000000000000000000000016712993F000000CD000000000000000000000000000000000000003000000000gnome-shell-47.1/data/org.gnome.Shell.target.in[Unit] Description=GNOME Shell DefaultDependencies=no Requisite=gnome-session-initialized.target PartOf=gnome-session-initialized.target Before=gnome-session-initialized.target Wants=@SUPPORTED_SESSIONS@070701000000B5000081A40000000000000000000000016712993F0000046B000000000000000000000000000000000000003900000000gnome-shell-47.1/data/org.gnome.Shell@wayland.service.in[Unit] Description=GNOME Shell on Wayland # On wayland, force a session shutdown OnFailure=org.gnome.Shell-disable-extensions.service gnome-session-shutdown.target OnFailureJobMode=replace-irreversibly CollectMode=inactive-or-failed RefuseManualStart=on RefuseManualStop=on After=gnome-session-manager.target Requisite=gnome-session-initialized.target PartOf=gnome-session-initialized.target Before=gnome-session-initialized.target ConditionEnvironment=XDG_SESSION_TYPE=%I [Service] Slice=session.slice Type=notify ExecStart=@bindir@/gnome-shell # Exit code 1 means we are probably *not* dealing with an extension failure SuccessExitStatus=1 # unset some environment variables that were set by the shell and won't work now that the shell is gone ExecStopPost=-/bin/sh -c 'test "$SERVICE_RESULT" != "exec-condition" && systemctl --user unset-environment GNOME_SETUP_DISPLAY WAYLAND_DISPLAY DISPLAY XAUTHORITY' # On wayland we cannot restart Restart=no # Kill any stubborn child processes after this long TimeoutStopSec=5 # Lower down gnome-shell's OOM score to avoid being killed by OOM-killer too early OOMScoreAdjust=-1000 070701000000B6000081A40000000000000000000000016712993F0000044A000000000000000000000000000000000000003500000000gnome-shell-47.1/data/org.gnome.Shell@x11.service.in[Unit] Description=GNOME Shell on X11 # On X11, try to show the GNOME Session Failed screen OnFailure=org.gnome.Shell-disable-extensions.service gnome-session-failed.target OnFailureJobMode=replace CollectMode=inactive-or-failed RefuseManualStart=on RefuseManualStop=on After=gnome-session-manager.target Requisite=gnome-session-initialized.target PartOf=gnome-session-initialized.target Before=gnome-session-initialized.target ConditionEnvironment=XDG_SESSION_TYPE=%I # Limit startup frequency more than the default StartLimitIntervalSec=15s StartLimitBurst=3 [Service] Slice=session.slice Type=notify ExecStart=@bindir@/gnome-shell # Exit code 1 means we are probably *not* dealing with an extension failure SuccessExitStatus=1 # On X11 we do not need to unset any variables # On X11 we want to restart on-success (Alt+F2 + r) and on-failure. Restart=always # Do not wait before restarting the shell RestartSec=0ms # Kill any stubborn child processes after this long TimeoutStopSec=5 # Lower down gnome-shell's OOM score to avoid being killed by OOM-killer too early OOMScoreAdjust=-1000 070701000000B7000081A40000000000000000000000016712993F00003F09000000000000000000000000000000000000003500000000gnome-shell-47.1/data/org.gnome.shell.gschema.xml.in true Enable internal tools useful for developers and testers from Alt-F2 Allows access to internal debugging and monitoring tools using the Alt-F2 dialog. [] UUIDs of extensions to enable GNOME Shell extensions have a UUID property; this key lists extensions which should be loaded. Any extension that wants to be loaded needs to be in this list. You can also manipulate this list with the EnableExtension and DisableExtension D-Bus methods on org.gnome.Shell. [] UUIDs of extensions to force disabling GNOME Shell extensions have a UUID property; this key lists extensions which should be disabled, even if loaded as part of the current mode. You can also manipulate this list with the EnableExtension and DisableExtension D-Bus methods on org.gnome.Shell. This key takes precedence over the “enabled-extensions” setting. false Disable user extensions Disable all extensions the user has enabled without affecting the “enabled-extension” setting. true Allow extension installation Allow users to install extensions in their home folder. If disabled, the InstallRemoteExtension D-Bus method will fail, and extensions are only loaded from system directories on startup. It does not affect extensions that are already loaded, so a change only takes full effect on the next login. false Disables the validation of extension version compatibility GNOME Shell will only load extensions that claim to support the current running version. Enabling this option will disable this check and try to load all extensions regardless of the versions they claim to support. [ 'org.gnome.Epiphany.desktop', 'org.gnome.Calendar.desktop', 'org.gnome.Music.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Software.desktop', 'org.gnome.TextEditor.desktop'] List of desktop file IDs for favorite applications The applications corresponding to these identifiers will be displayed in the favorites area. [] History for command (Alt-F2) dialog [] History for the looking glass dialog false Always show the “Log Out” action in the system menu This key overrides the automatic hiding of the “Log out” action in the system menu for logged-in situations where there is a single, local, non-system user and only a single available session type (e.g. GNOME on Wayland). false Whether to remember password for mounting encrypted or remote filesystems The shell will request a password when an encrypted device or a remote filesystem is mounted. If the password can be saved for future use a “Remember Password” checkbox will be present. This key sets the default state of the checkbox. "power-saver" The last selected non-default power profile Some systems support more than two power profiles. In order to still support toggling between two profiles, this key records the last selected non-default profile. '' The last version the “Welcome to GNOME” dialog was shown for This key determines for which version the “Welcome to GNOME” dialog was last shown. An empty string represents the oldest possible version, and a huge number will represent versions that do not exist yet. This huge number can be used to effectively disable the dialog. }>, 'org.gnome.Contacts.desktop': <{'position': <1>}>, 'org.gnome.Weather.desktop': <{'position': <2>}>, 'org.gnome.clocks.desktop': <{'position': <3>}>, 'org.gnome.Maps.desktop': <{'position': <4>}>, 'org.gnome.Books.desktop': <{'position': <5>}>, 'org.gnome.Photos.desktop': <{'position': <6>}>, 'org.gnome.Totem.desktop': <{'position': <7>}>, 'org.gnome.Calculator.desktop': <{'position': <8>}>, 'org.gnome.gedit.desktop': <{'position': <9>}>, 'simple-scan.desktop': <{'position': <10>}>, 'org.gnome.Settings.desktop': <{'position': <11>}>, 'org.gnome.SystemMonitor.desktop': <{'position': <12>}>, 'org.gnome.Boxes.desktop': <{'position': <13>}>, 'org.gnome.Terminal.desktop': <{'position': <14>}>, 'Utilities': <{'position': <15>}>, 'org.gnome.Characters.desktop': <{'position': <16>}>, 'yelp.desktop': <{'position': <17>}>, 'org.gnome.Screenshot.desktop': <{'position': <18>}>, 'org.gnome.Cheese.desktop': <{'position': <19>}>, 'org.gnome.font-viewer.desktop': <{'position': <20>}> }] ]]> Layout of the app picker Layout of the app picker. Each entry in the array is a page. Pages are stored in the order they appear in GNOME Shell. Each page contains an “application id” → 'data' pair. Currently, the following values are stored as 'data': • “position”: the position of the application icon in the page ["<Super><Alt>Up"] Keybinding to shift between overview states Keybinding to shift between session, window picker and app grid ["<Super><Alt>Down"] Keybinding to shift between overview states Keybinding to shift between app grid, window picker and session ["<Super>a"] Keybinding to open the “Show Applications” view Keybinding to open the “Show Applications” view of the Activities Overview. [] Keybinding to open the overview Keybinding to open the Activities Overview. ["<Super>v","<Super>m"] Keybinding to toggle the visibility of the notification list Keybinding to toggle the visibility of the notification list. ["<Super>s"] Keybinding to toggle the quick settings menu Keybinding to toggle the quick settings menu. ["<Super>n"] Keybinding to focus the active notification Keybinding to focus the active notification. ["<Super>1"] Switch to application 1 ["<Super>2"] Switch to application 2 ["<Super>3"] Switch to application 3 ["<Super>4"] Switch to application 4 ["<Super>5"] Switch to application 5 ["<Super>6"] Switch to application 6 ["<Super>7"] Switch to application 7 ["<Super>8"] Switch to application 8 ["<Super>9"] Switch to application 9 ["<Super><Control>1"] Open a new instance of application 1 ["<Super><Control>2"] Open a new instance of application 2 ["<Super><Control>3"] Open a new instance of application 3 ["<Super><Control>4"] Open a new instance of application 4 ["<Super><Control>5"] Open a new instance of application 5 ["<Super><Control>6"] Open a new instance of application 6 ["<Super><Control>7"] Open a new instance of application 7 ["<Super><Control>8"] Open a new instance of application 8 ["<Super><Control>9"] Open a new instance of application 9 ["Print"] Take a screenshot interactively ["<Ctrl><Shift><Alt>R"] Record a screencast interactively ["<Alt>Print"] Take a screenshot of a window ["<Shift>Print"] Take a screenshot false Limit switcher to current workspace. If true, only applications that have windows on the current workspace are shown in the switcher. Otherwise, all applications are included. 'both' The application icon mode. Configures how the windows are shown in the switcher. Valid possibilities are “thumbnail-only” (shows a thumbnail of the window), “app-icon-only” (shows only the application icon) or “both”. true Limit switcher to current workspace. If true, only windows from the current workspace are shown in the switcher. Otherwise, all windows are included. Locations The locations to show in world clocks [] Automatic location Whether to fetch the current location or not false Location The location for which to show a forecast [] 070701000000B8000041ED0000000000000000000000026712993F00000000000000000000000000000000000000000000002200000000gnome-shell-47.1/data/osk-layouts070701000000B9000081A40000000000000000000000016712993F00004A9B000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/osk-layouts/am.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "է" ] }, { "strings": [ "թ" ] }, { "strings": [ "փ" ] }, { "strings": [ "ձ" ] }, { "strings": [ "ջ" ] }, { "strings": [ "ր" ] }, { "strings": [ "չ" ] }, { "strings": [ "ճ" ] }, { "strings": [ "ժ" ] }, { "strings": [ "ծ" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "strings": [ "ք" ] }, { "strings": [ "ո" ] }, { "strings": [ "ե", "և" ] }, { "strings": [ "ռ" ] }, { "strings": [ "տ" ] }, { "strings": [ "ը" ] }, { "strings": [ "ւ" ] }, { "strings": [ "ի" ] }, { "strings": [ "օ" ] }, { "strings": [ "պ" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "ա" ] }, { "strings": [ "ս" ] }, { "strings": [ "դ" ] }, { "strings": [ "ֆ" ] }, { "strings": [ "գ" ] }, { "strings": [ "հ" ] }, { "strings": [ "յ" ] }, { "strings": [ "կ" ] }, { "strings": [ "լ" ] }, { "strings": [ "խ" ] } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 }, { "strings": [ "զ" ] }, { "strings": [ "ղ" ] }, { "strings": [ "ց" ] }, { "strings": [ "վ" ] }, { "strings": [ "բ" ] }, { "strings": [ "ն" ] }, { "strings": [ "մ" ] }, { "strings": [ "շ" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "," ] }, { "strings": [ " " ], "width": 5 }, { "strings": [ "։" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "Է" ] }, { "strings": [ "Թ" ] }, { "strings": [ "Փ" ] }, { "strings": [ "Ձ" ] }, { "strings": [ "Ջ" ] }, { "strings": [ "Ր" ] }, { "strings": [ "Չ" ] }, { "strings": [ "Ճ" ] }, { "strings": [ "Ժ" ] }, { "strings": [ "Ծ" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "strings": [ "Ք" ] }, { "strings": [ "Ո" ] }, { "strings": [ "Ե", "ԵՒ" ] }, { "strings": [ "Ռ" ] }, { "strings": [ "Տ" ] }, { "strings": [ "Ը" ] }, { "strings": [ "Ւ" ] }, { "strings": [ "Ի" ] }, { "strings": [ "Օ" ] }, { "strings": [ "Պ" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "Ա" ] }, { "strings": [ "Ս" ] }, { "strings": [ "Դ" ] }, { "strings": [ "Ֆ" ] }, { "strings": [ "Գ" ] }, { "strings": [ "Հ" ] }, { "strings": [ "Յ" ] }, { "strings": [ "Կ" ] }, { "strings": [ "Լ" ] }, { "strings": [ "Խ" ] } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 }, { "strings": [ "Զ" ] }, { "strings": [ "Ղ" ] }, { "strings": [ "Ց" ] }, { "strings": [ "Վ" ] }, { "strings": [ "Բ" ] }, { "strings": [ "Ն" ] }, { "strings": [ "Մ" ] }, { "strings": [ "Շ" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "," ] }, { "strings": [ " " ], "width": 5 }, { "strings": [ "։" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "$", "¢", "£", "€", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "՜", "¡" ] }, { "strings": [ "?", "՞", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "՝" ] }, { "strings": [ "։", "!", "?", ",", ".", "֊", "՜", "՝", "՞", ":", ";", "@", "ՙ", "՚", "՛", "՟" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "¢" ] }, { "strings": [ "€" ] }, { "strings": [ "¥" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "՝" ] }, { "strings": [ "։", "!", "?", ",", ".", "֊", "՜", "՝", "՞", ":", ";", "@", "ՙ", "՚", "՛", "՟" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "hy", "name": "Armenian" } 070701000000BA000081A40000000000000000000000016712993F000038A7000000000000000000000000000000000000002B00000000gnome-shell-47.1/data/osk-layouts/ara.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "ض" ] }, { "strings": [ "ص" ] }, { "strings": [ "ث" ] }, { "strings": [ "ق", "ڨ" ] }, { "strings": [ "ف", "ڤ", "ڢ", "ڥ" ] }, { "strings": [ "غ" ] }, { "strings": [ "ع" ] }, { "strings": [ "ه", "ه‍" ] }, { "strings": [ "خ" ] }, { "strings": [ "ح" ] }, { "strings": [ "ج", "چ" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "strings": [ "ش", "ڜ" ] }, { "strings": [ "س" ] }, { "strings": [ "ي", "ئ", "ى" ] }, { "strings": [ "ب", "پ" ] }, { "strings": [ "ل", "لا", "لأ", "لإ", "لآ" ] }, { "strings": [ "ا", "آ", "ء", "أ", "إ", "ٱ" ] }, { "strings": [ "ت" ] }, { "strings": [ "ن" ] }, { "strings": [ "م" ] }, { "strings": [ "ك", "گ", "ک" ] }, { "strings": [ "ط" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 1.5 } ], [ { "leftOffset": 1, "strings": [ "ذ" ] }, { "strings": [ "ء" ] }, { "strings": [ "ؤ" ] }, { "strings": [ "ر" ] }, { "strings": [ "ى", "ئ" ] }, { "strings": [ "ة" ] }, { "strings": [ "و" ] }, { "strings": [ "ز", "ژ" ] }, { "strings": [ "ظ" ] }, { "strings": [ "د" ] } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "،" ] }, { "strings": [ " " ], "width": 6 }, { "strings": [ ".", "\"", "'", "#", "-", ":", "!", "،", "؟", "@", "&", "%", "+", "؛", "/", ")", "(" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "١", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "٢", "²", "⅔" ] }, { "strings": [ "٣", "³", "¾", "⅜" ] }, { "strings": [ "٤", "⁴" ] }, { "strings": [ "٥", "⅝" ] }, { "strings": [ "٦" ] }, { "strings": [ "٧", "⅞" ] }, { "strings": [ "٨" ] }, { "strings": [ "٩" ] }, { "strings": [ "٠", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "$", "¢", "£", "€", "¥", "₱" ] }, { "strings": [ "٪", "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "﴿", ">", "}", "]" ] }, { "strings": [ ")", "﴾", "<", "{", "[" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "★", "٭" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ "؛", ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "؟", "?" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "،", "؟", "؛", "!", ":", "-", "/", "'", "\"" ] }, { "strings": [ ".", "ٕ", "ٔ", "ْ", "ٍ", "ٌ", "ً", "ّ", "ٖ", "ٰ", "ٓ", "ِ", "ُ", "َ", "ـ" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "¢" ] }, { "strings": [ "€" ] }, { "strings": [ "¥" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "›", "≥", "»" ] }, { "strings": [ ">", "‹", "≤", "«" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "،", "؟", "؛", "!", ":", "-", "/", "'", "\"" ] }, { "strings": [ ".", "ٕ", "ٔ", "ْ", "ٍ", "ٌ", "ً", "ّ", "ٖ", "ٰ", "ٓ", "ِ", "ُ", "َ", "ـ" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "ar", "name": "Arabic" } 070701000000BB000081A40000000000000000000000016712993F00004688000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/osk-layouts/at.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "q" ] }, { "strings": [ "w" ] }, { "strings": [ "e", "é", "è", "ê", "ë", "ė" ] }, { "strings": [ "r" ] }, { "strings": [ "t" ] }, { "strings": [ "z" ] }, { "strings": [ "u", "ü", "û", "ù", "ú", "ū" ] }, { "strings": [ "i" ] }, { "strings": [ "o", "ö", "ô", "ò", "ó", "õ", "œ", "ø", "ō" ] }, { "strings": [ "p" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "a", "ä", "â", "à", "á", "æ", "ã", "å", "ā" ] }, { "strings": [ "s", "ß", "ś", "š" ] }, { "strings": [ "d" ] }, { "strings": [ "f" ] }, { "strings": [ "g" ] }, { "strings": [ "h" ] }, { "strings": [ "j" ] }, { "strings": [ "k" ] }, { "strings": [ "l" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift" }, { "strings": [ "y" ] }, { "strings": [ "x" ] }, { "strings": [ "c" ] }, { "strings": [ "v" ] }, { "strings": [ "b" ] }, { "strings": [ "n", "ñ", "ń" ] }, { "strings": [ "m" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "Q" ] }, { "strings": [ "W" ] }, { "strings": [ "E", "É", "È", "Ê", "Ë", "Ė" ] }, { "strings": [ "R" ] }, { "strings": [ "T" ] }, { "strings": [ "Z" ] }, { "strings": [ "U", "Ü", "Û", "Ù", "Ú", "Ū" ] }, { "strings": [ "I" ] }, { "strings": [ "O", "Ö", "Ô", "Ò", "Ó", "Õ", "Œ", "Ø", "Ō" ] }, { "strings": [ "P" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "A", "Ä", "Â", "À", "Á", "Æ", "Ã", "Å", "Ā" ] }, { "strings": [ "S", "ẞ", "Ś", "Š" ] }, { "strings": [ "D" ] }, { "strings": [ "F" ] }, { "strings": [ "G" ] }, { "strings": [ "H" ] }, { "strings": [ "J" ] }, { "strings": [ "K" ] }, { "strings": [ "L" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default" }, { "strings": [ "Y" ] }, { "strings": [ "X" ] }, { "strings": [ "C" ] }, { "strings": [ "V" ] }, { "strings": [ "B" ] }, { "strings": [ "N", "Ñ", "Ń" ] }, { "strings": [ "M" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "€", "¢", "£", "$", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "¥" ] }, { "strings": [ "$", "¢" ] }, { "strings": [ "¢" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "de-AT", "name": "Austrian German" } 070701000000BC000081A40000000000000000000000016712993F0000497B000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/osk-layouts/be.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "a", "á", "ä", "â", "à", "æ", "ã", "å", "ā" ] }, { "strings": [ "z" ] }, { "strings": [ "e", "é", "ë", "ê", "è", "ę", "ė", "ē" ] }, { "strings": [ "r" ] }, { "strings": [ "t" ] }, { "strings": [ "y", "ÿ", "ij" ] }, { "strings": [ "u", "ú", "ü", "û", "ù", "ū" ] }, { "strings": [ "i", "í", "ï", "ì", "î", "į", "ī", "ij" ] }, { "strings": [ "o", "ó", "ö", "ô", "ò", "õ", "œ", "ø", "ō" ] }, { "strings": [ "p" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "strings": [ "q" ] }, { "strings": [ "s", "ß" ] }, { "strings": [ "d" ] }, { "strings": [ "f" ] }, { "strings": [ "g" ] }, { "strings": [ "h" ] }, { "strings": [ "j" ] }, { "strings": [ "k" ] }, { "strings": [ "l" ] }, { "strings": [ "m" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 1.5 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift" }, { "strings": [ "w" ] }, { "strings": [ "x" ] }, { "strings": [ "c", "ç", "ć", "č" ] }, { "strings": [ "v" ] }, { "strings": [ "b" ] }, { "strings": [ "n", "ñ", "ń" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "A", "Á", "Ä", "Â", "À", "Æ", "Ã", "Å", "Ā" ] }, { "strings": [ "Z" ] }, { "strings": [ "E", "É", "Ë", "Ê", "È", "Ę", "Ė", "Ē" ] }, { "strings": [ "R" ] }, { "strings": [ "T" ] }, { "strings": [ "Y", "Ÿ", "IJ" ] }, { "strings": [ "U", "Ú", "Ü", "Û", "Ù", "Ū" ] }, { "strings": [ "I", "Í", "Ï", "Ì", "Î", "Į", "Ī", "IJ" ] }, { "strings": [ "O", "Ó", "Ö", "Ô", "Ò", "Õ", "Œ", "Ø", "Ō" ] }, { "strings": [ "P" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "strings": [ "Q" ] }, { "strings": [ "S", "ẞ" ] }, { "strings": [ "D" ] }, { "strings": [ "F" ] }, { "strings": [ "G" ] }, { "strings": [ "H" ] }, { "strings": [ "J" ] }, { "strings": [ "K" ] }, { "strings": [ "L" ] }, { "strings": [ "M" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 1.5 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default" }, { "strings": [ "W" ] }, { "strings": [ "X" ] }, { "strings": [ "C", "Ç", "Ć", "Č" ] }, { "strings": [ "V" ] }, { "strings": [ "B" ] }, { "strings": [ "N", "Ñ", "Ń" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "€", "¢", "£", "$", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "¥" ] }, { "strings": [ "$", "¢" ] }, { "strings": [ "¢" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "nl-BE", "name": "Dutch (Belgium)" } 070701000000BD000081A40000000000000000000000016712993F0000441A000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/osk-layouts/bg.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "я" ] }, { "strings": [ "в" ] }, { "strings": [ "е" ] }, { "strings": [ "р" ] }, { "strings": [ "т" ] }, { "strings": [ "ъ" ] }, { "strings": [ "у" ] }, { "strings": [ "и", "ѝ" ] }, { "strings": [ "о" ] }, { "strings": [ "п" ] }, { "strings": [ "ч" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "strings": [ "а" ] }, { "strings": [ "с" ] }, { "strings": [ "д" ] }, { "strings": [ "ф" ] }, { "strings": [ "г" ] }, { "strings": [ "х" ] }, { "strings": [ "й" ] }, { "strings": [ "к" ] }, { "strings": [ "л" ] }, { "strings": [ "ш" ] }, { "strings": [ "щ" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 1.5 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift" }, { "strings": [ "з" ] }, { "strings": [ "ь" ] }, { "strings": [ "ц" ] }, { "strings": [ "ж" ] }, { "strings": [ "б" ] }, { "strings": [ "н" ] }, { "strings": [ "м" ] }, { "strings": [ "ю" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 6 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "Я" ] }, { "strings": [ "В" ] }, { "strings": [ "Е" ] }, { "strings": [ "Р" ] }, { "strings": [ "Т" ] }, { "strings": [ "Ъ" ] }, { "strings": [ "У" ] }, { "strings": [ "И", "Ѝ" ] }, { "strings": [ "О" ] }, { "strings": [ "П" ] }, { "strings": [ "Ч" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "strings": [ "А" ] }, { "strings": [ "С" ] }, { "strings": [ "Д" ] }, { "strings": [ "Ф" ] }, { "strings": [ "Г" ] }, { "strings": [ "Х" ] }, { "strings": [ "Й" ] }, { "strings": [ "К" ] }, { "strings": [ "Л" ] }, { "strings": [ "Ш" ] }, { "strings": [ "Щ" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 1.5 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 }, { "strings": [ "З" ] }, { "strings": [ "Ь" ] }, { "strings": [ "Ц" ] }, { "strings": [ "Ж" ] }, { "strings": [ "Б" ] }, { "strings": [ "Н" ] }, { "strings": [ "М" ] }, { "strings": [ "Ю" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 3 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "," ] }, { "strings": [ " " ], "width": 6 }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "$", "¢", "£", "€", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "¢" ] }, { "strings": [ "€" ] }, { "strings": [ "¥" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "bg", "name": "Bulgarian" } 070701000000BE000081A40000000000000000000000016712993F000044B5000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/osk-layouts/by.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "й" ] }, { "strings": [ "ц" ] }, { "strings": [ "у" ] }, { "strings": [ "к" ] }, { "strings": [ "е", "ё" ] }, { "strings": [ "н" ] }, { "strings": [ "г" ] }, { "strings": [ "ш" ] }, { "strings": [ "ў" ] }, { "strings": [ "з" ] }, { "strings": [ "х" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "strings": [ "ф" ] }, { "strings": [ "ы" ] }, { "strings": [ "в" ] }, { "strings": [ "а" ] }, { "strings": [ "п" ] }, { "strings": [ "р" ] }, { "strings": [ "о" ] }, { "strings": [ "л" ] }, { "strings": [ "д" ] }, { "strings": [ "ж" ] }, { "strings": [ "э" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 1.5 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 }, { "strings": [ "я" ] }, { "strings": [ "ч" ] }, { "strings": [ "с" ] }, { "strings": [ "м" ] }, { "strings": [ "і" ] }, { "strings": [ "т" ] }, { "strings": [ "ь", "ъ" ] }, { "strings": [ "б" ] }, { "strings": [ "ю" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "," ] }, { "strings": [ " " ], "width": 6 }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "Й" ] }, { "strings": [ "Ц" ] }, { "strings": [ "У" ] }, { "strings": [ "К" ] }, { "strings": [ "Е", "Ё" ] }, { "strings": [ "Н" ] }, { "strings": [ "Г" ] }, { "strings": [ "Ш" ] }, { "strings": [ "Ў" ] }, { "strings": [ "З" ] }, { "strings": [ "Х" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "strings": [ "Ф" ] }, { "strings": [ "Ы" ] }, { "strings": [ "В" ] }, { "strings": [ "А" ] }, { "strings": [ "П" ] }, { "strings": [ "Р" ] }, { "strings": [ "О" ] }, { "strings": [ "Л" ] }, { "strings": [ "Д" ] }, { "strings": [ "Ж" ] }, { "strings": [ "Э" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 1.5 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 }, { "strings": [ "Я" ] }, { "strings": [ "Ч" ] }, { "strings": [ "С" ] }, { "strings": [ "М" ] }, { "strings": [ "І" ] }, { "strings": [ "Т" ] }, { "strings": [ "Ь", "Ъ" ] }, { "strings": [ "Б" ] }, { "strings": [ "Ю" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "," ] }, { "strings": [ " " ], "width": 6 }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "$", "¢", "£", "€", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "¢" ] }, { "strings": [ "€" ] }, { "strings": [ "¥" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "be", "name": "Belarusian" } 070701000000BF000081A40000000000000000000000016712993F000048BF000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/osk-layouts/ca.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "q" ] }, { "strings": [ "w" ] }, { "strings": [ "e", "é", "è", "ê", "ë", "%", "ę", "ė", "ē" ] }, { "strings": [ "r" ] }, { "strings": [ "t" ] }, { "strings": [ "y", "%", "ÿ" ] }, { "strings": [ "u", "ù", "û", "%", "ü", "ú", "ū" ] }, { "strings": [ "i", "î", "%", "ï", "ì", "í", "į", "ī" ] }, { "strings": [ "o", "ô", "œ", "%", "ö", "ò", "ó", "õ", "ø", "ō", "º" ] }, { "strings": [ "p" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "a", "à", "â", "%", "æ", "á", "ä", "ã", "å", "ā", "ª" ] }, { "strings": [ "s" ] }, { "strings": [ "d" ] }, { "strings": [ "f" ] }, { "strings": [ "g" ] }, { "strings": [ "h" ] }, { "strings": [ "j" ] }, { "strings": [ "k" ] }, { "strings": [ "l" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift" }, { "strings": [ "z" ] }, { "strings": [ "x" ] }, { "strings": [ "c", "ç", "ć", "č" ] }, { "strings": [ "v" ] }, { "strings": [ "b" ] }, { "strings": [ "n" ] }, { "strings": [ "m" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "Q" ] }, { "strings": [ "W" ] }, { "strings": [ "E", "É", "È", "Ê", "Ë", "%", "Ę", "Ė", "Ē" ] }, { "strings": [ "R" ] }, { "strings": [ "T" ] }, { "strings": [ "Y", "%", "Ÿ" ] }, { "strings": [ "U", "Ù", "Û", "%", "Ü", "Ú", "Ū" ] }, { "strings": [ "I", "Î", "%", "Ï", "Ì", "Í", "Į", "Ī" ] }, { "strings": [ "O", "Ô", "Œ", "%", "Ö", "Ò", "Ó", "Õ", "Ø", "Ō", "º" ] }, { "strings": [ "P" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "A", "À", "Â", "%", "Æ", "Á", "Ä", "Ã", "Å", "Ā", "ª" ] }, { "strings": [ "S" ] }, { "strings": [ "D" ] }, { "strings": [ "F" ] }, { "strings": [ "G" ] }, { "strings": [ "H" ] }, { "strings": [ "J" ] }, { "strings": [ "K" ] }, { "strings": [ "L" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default" }, { "strings": [ "Z" ] }, { "strings": [ "X" ] }, { "strings": [ "C", "Ç", "Ć", "Č" ] }, { "strings": [ "V" ] }, { "strings": [ "B" ] }, { "strings": [ "N" ] }, { "strings": [ "M" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "$", "¢", "£", "€", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "¢" ] }, { "strings": [ "€" ] }, { "strings": [ "¥" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "fr-CA", "name": "French Canada" } 070701000000C0000081A40000000000000000000000016712993F00004685000000000000000000000000000000000000002D00000000gnome-shell-47.1/data/osk-layouts/ch+fr.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "q" ] }, { "strings": [ "w" ] }, { "strings": [ "e", "é", "è", "ê", "ë", "ė" ] }, { "strings": [ "r" ] }, { "strings": [ "t" ] }, { "strings": [ "z" ] }, { "strings": [ "u", "ü", "û", "ù", "ú", "ū" ] }, { "strings": [ "i" ] }, { "strings": [ "o", "ö", "ô", "ò", "ó", "õ", "œ", "ø", "ō" ] }, { "strings": [ "p" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "a", "ä", "â", "à", "á", "æ", "ã", "å", "ā" ] }, { "strings": [ "s", "ß", "ś", "š" ] }, { "strings": [ "d" ] }, { "strings": [ "f" ] }, { "strings": [ "g" ] }, { "strings": [ "h" ] }, { "strings": [ "j" ] }, { "strings": [ "k" ] }, { "strings": [ "l" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift" }, { "strings": [ "y" ] }, { "strings": [ "x" ] }, { "strings": [ "c" ] }, { "strings": [ "v" ] }, { "strings": [ "b" ] }, { "strings": [ "n", "ñ", "ń" ] }, { "strings": [ "m" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "Q" ] }, { "strings": [ "W" ] }, { "strings": [ "E", "É", "È", "Ê", "Ë", "Ė" ] }, { "strings": [ "R" ] }, { "strings": [ "T" ] }, { "strings": [ "Z" ] }, { "strings": [ "U", "Ü", "Û", "Ù", "Ú", "Ū" ] }, { "strings": [ "I" ] }, { "strings": [ "O", "Ö", "Ô", "Ò", "Ó", "Õ", "Œ", "Ø", "Ō" ] }, { "strings": [ "P" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "A", "Ä", "Â", "À", "Á", "Æ", "Ã", "Å", "Ā" ] }, { "strings": [ "S", "ẞ", "Ś", "Š" ] }, { "strings": [ "D" ] }, { "strings": [ "F" ] }, { "strings": [ "G" ] }, { "strings": [ "H" ] }, { "strings": [ "J" ] }, { "strings": [ "K" ] }, { "strings": [ "L" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default" }, { "strings": [ "Y" ] }, { "strings": [ "X" ] }, { "strings": [ "C" ] }, { "strings": [ "V" ] }, { "strings": [ "B" ] }, { "strings": [ "N", "Ñ", "Ń" ] }, { "strings": [ "M" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "€", "¢", "£", "$", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "¥" ] }, { "strings": [ "$", "¢" ] }, { "strings": [ "¢" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "fr-CH", "name": "Swiss French" } 070701000000C1000081A40000000000000000000000016712993F00004685000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/osk-layouts/ch.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "q" ] }, { "strings": [ "w" ] }, { "strings": [ "e", "é", "è", "ê", "ë", "ė" ] }, { "strings": [ "r" ] }, { "strings": [ "t" ] }, { "strings": [ "z" ] }, { "strings": [ "u", "ü", "û", "ù", "ú", "ū" ] }, { "strings": [ "i" ] }, { "strings": [ "o", "ö", "ô", "ò", "ó", "õ", "œ", "ø", "ō" ] }, { "strings": [ "p" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "a", "ä", "â", "à", "á", "æ", "ã", "å", "ā" ] }, { "strings": [ "s", "ß", "ś", "š" ] }, { "strings": [ "d" ] }, { "strings": [ "f" ] }, { "strings": [ "g" ] }, { "strings": [ "h" ] }, { "strings": [ "j" ] }, { "strings": [ "k" ] }, { "strings": [ "l" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift" }, { "strings": [ "y" ] }, { "strings": [ "x" ] }, { "strings": [ "c" ] }, { "strings": [ "v" ] }, { "strings": [ "b" ] }, { "strings": [ "n", "ñ", "ń" ] }, { "strings": [ "m" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "Q" ] }, { "strings": [ "W" ] }, { "strings": [ "E", "É", "È", "Ê", "Ë", "Ė" ] }, { "strings": [ "R" ] }, { "strings": [ "T" ] }, { "strings": [ "Z" ] }, { "strings": [ "U", "Ü", "Û", "Ù", "Ú", "Ū" ] }, { "strings": [ "I" ] }, { "strings": [ "O", "Ö", "Ô", "Ò", "Ó", "Õ", "Œ", "Ø", "Ō" ] }, { "strings": [ "P" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "A", "Ä", "Â", "À", "Á", "Æ", "Ã", "Å", "Ā" ] }, { "strings": [ "S", "ẞ", "Ś", "Š" ] }, { "strings": [ "D" ] }, { "strings": [ "F" ] }, { "strings": [ "G" ] }, { "strings": [ "H" ] }, { "strings": [ "J" ] }, { "strings": [ "K" ] }, { "strings": [ "L" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default" }, { "strings": [ "Y" ] }, { "strings": [ "X" ] }, { "strings": [ "C" ] }, { "strings": [ "V" ] }, { "strings": [ "B" ] }, { "strings": [ "N", "Ñ", "Ń" ] }, { "strings": [ "M" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "€", "¢", "£", "$", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "¥" ] }, { "strings": [ "$", "¢" ] }, { "strings": [ "¢" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "de-CH", "name": "Swiss German" } 070701000000C2000081A40000000000000000000000016712993F000049D9000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/osk-layouts/cz.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "q" ] }, { "strings": [ "w" ] }, { "strings": [ "e", "é", "ě", "è", "ê", "ë", "ę", "ė", "ē" ] }, { "strings": [ "r", "ř" ] }, { "strings": [ "t", "ť" ] }, { "strings": [ "z", "ž", "ź", "ż" ] }, { "strings": [ "u", "ú", "ů", "û", "ü", "ù", "ū" ] }, { "strings": [ "i", "í", "î", "ï", "ì", "į", "ī" ] }, { "strings": [ "o", "ó", "ö", "ô", "ò", "õ", "œ", "ø", "ō" ] }, { "strings": [ "p" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "a", "á", "à", "â", "ä", "æ", "ã", "å", "ā" ] }, { "strings": [ "s", "š", "ß", "ś" ] }, { "strings": [ "d", "ď" ] }, { "strings": [ "f" ] }, { "strings": [ "g" ] }, { "strings": [ "h" ] }, { "strings": [ "j" ] }, { "strings": [ "k" ] }, { "strings": [ "l" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift" }, { "strings": [ "y", "ý", "ÿ" ] }, { "strings": [ "x" ] }, { "strings": [ "c", "č", "ç", "ć" ] }, { "strings": [ "v" ] }, { "strings": [ "b" ] }, { "strings": [ "n", "ň", "ñ", "ń" ] }, { "strings": [ "m" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "Q" ] }, { "strings": [ "W" ] }, { "strings": [ "E", "É", "Ě", "È", "Ê", "Ë", "Ę", "Ė", "Ē" ] }, { "strings": [ "R", "Ř" ] }, { "strings": [ "T", "Ť" ] }, { "strings": [ "Z", "Ž", "Ź", "Ż" ] }, { "strings": [ "U", "Ú", "Ů", "Û", "Ü", "Ù", "Ū" ] }, { "strings": [ "I", "Í", "Î", "Ï", "Ì", "Į", "Ī" ] }, { "strings": [ "O", "Ó", "Ö", "Ô", "Ò", "Õ", "Œ", "Ø", "Ō" ] }, { "strings": [ "P" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "A", "Á", "À", "Â", "Ä", "Æ", "Ã", "Å", "Ā" ] }, { "strings": [ "S", "Š", "ẞ", "Ś" ] }, { "strings": [ "D", "Ď" ] }, { "strings": [ "F" ] }, { "strings": [ "G" ] }, { "strings": [ "H" ] }, { "strings": [ "J" ] }, { "strings": [ "K" ] }, { "strings": [ "L" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default" }, { "strings": [ "Y", "Ý", "Ÿ" ] }, { "strings": [ "X" ] }, { "strings": [ "C", "Č", "Ç", "Ć" ] }, { "strings": [ "V" ] }, { "strings": [ "B" ] }, { "strings": [ "N", "Ň", "Ñ", "Ń" ] }, { "strings": [ "M" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "$", "¢", "£", "€", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "¢" ] }, { "strings": [ "€" ] }, { "strings": [ "¥" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "cs", "name": "Czech" } 070701000000C3000081A40000000000000000000000016712993F0000467C000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/osk-layouts/de.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "q" ] }, { "strings": [ "w" ] }, { "strings": [ "e", "é", "è", "ê", "ë", "ė" ] }, { "strings": [ "r" ] }, { "strings": [ "t" ] }, { "strings": [ "z" ] }, { "strings": [ "u", "ü", "û", "ù", "ú", "ū" ] }, { "strings": [ "i" ] }, { "strings": [ "o", "ö", "ô", "ò", "ó", "õ", "œ", "ø", "ō" ] }, { "strings": [ "p" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "a", "ä", "â", "à", "á", "æ", "ã", "å", "ā" ] }, { "strings": [ "s", "ß", "ś", "š" ] }, { "strings": [ "d" ] }, { "strings": [ "f" ] }, { "strings": [ "g" ] }, { "strings": [ "h" ] }, { "strings": [ "j" ] }, { "strings": [ "k" ] }, { "strings": [ "l" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift" }, { "strings": [ "y" ] }, { "strings": [ "x" ] }, { "strings": [ "c" ] }, { "strings": [ "v" ] }, { "strings": [ "b" ] }, { "strings": [ "n", "ñ", "ń" ] }, { "strings": [ "m" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "Q" ] }, { "strings": [ "W" ] }, { "strings": [ "E", "É", "È", "Ê", "Ë", "Ė" ] }, { "strings": [ "R" ] }, { "strings": [ "T" ] }, { "strings": [ "Z" ] }, { "strings": [ "U", "Ü", "Û", "Ù", "Ú", "Ū" ] }, { "strings": [ "I" ] }, { "strings": [ "O", "Ö", "Ô", "Ò", "Ó", "Õ", "Œ", "Ø", "Ō" ] }, { "strings": [ "P" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "A", "Ä", "Â", "À", "Á", "Æ", "Ã", "Å", "Ā" ] }, { "strings": [ "S", "ẞ", "Ś", "Š" ] }, { "strings": [ "D" ] }, { "strings": [ "F" ] }, { "strings": [ "G" ] }, { "strings": [ "H" ] }, { "strings": [ "J" ] }, { "strings": [ "K" ] }, { "strings": [ "L" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default" }, { "strings": [ "Y" ] }, { "strings": [ "X" ] }, { "strings": [ "C" ] }, { "strings": [ "V" ] }, { "strings": [ "B" ] }, { "strings": [ "N", "Ñ", "Ń" ] }, { "strings": [ "M" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "€", "¢", "£", "$", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "¥" ] }, { "strings": [ "$", "¢" ] }, { "strings": [ "¢" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "de", "name": "German" } 070701000000C4000081A40000000000000000000000016712993F0000056F000000000000000000000000000000000000002E00000000gnome-shell-47.1/data/osk-layouts/digits.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "7" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "action": "delete", "iconName": "edit-clear-symbolic" } ], [ { "strings": [ "4" ] }, { "strings": [ "5" ] }, { "strings": [ "6" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "height": 2 } ], [ { "strings": [ "1" ] }, { "strings": [ "2" ] }, { "strings": [ "3" ] } ], [ { "width": 3, "strings": [ "0" ] }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "name": "Digits" } 070701000000C5000081A40000000000000000000000016712993F0000488C000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/osk-layouts/dk.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "q" ] }, { "strings": [ "w" ] }, { "strings": [ "e", "é", "ë" ] }, { "strings": [ "r" ] }, { "strings": [ "t" ] }, { "strings": [ "y", "ý", "ÿ" ] }, { "strings": [ "u", "ú", "ü", "û", "ù", "ū" ] }, { "strings": [ "i", "í", "ï" ] }, { "strings": [ "o", "ó", "ô", "ò", "õ", "œ", "ō" ] }, { "strings": [ "p" ] }, { "strings": [ "å" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "strings": [ "a", "á", "ä", "à", "â", "ã", "ā" ] }, { "strings": [ "s", "ß", "ś", "š" ] }, { "strings": [ "d", "ð" ] }, { "strings": [ "f" ] }, { "strings": [ "g" ] }, { "strings": [ "h" ] }, { "strings": [ "j" ] }, { "strings": [ "k" ] }, { "strings": [ "l", "ł" ] }, { "strings": [ "æ", "ä" ] }, { "strings": [ "ø", "ö" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 1.5 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 }, { "strings": [ "z" ] }, { "strings": [ "x" ] }, { "strings": [ "c" ] }, { "strings": [ "v" ] }, { "strings": [ "b" ] }, { "strings": [ "n", "ñ", "ń" ] }, { "strings": [ "m" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 6 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "Q" ] }, { "strings": [ "W" ] }, { "strings": [ "E", "É", "Ë" ] }, { "strings": [ "R" ] }, { "strings": [ "T" ] }, { "strings": [ "Y", "Ý", "Ÿ" ] }, { "strings": [ "U", "Ú", "Ü", "Û", "Ù", "Ū" ] }, { "strings": [ "I", "Í", "Ï" ] }, { "strings": [ "O", "Ó", "Ô", "Ò", "Õ", "Œ", "Ō" ] }, { "strings": [ "P" ] }, { "strings": [ "Å" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "strings": [ "A", "Á", "Ä", "À", "Â", "Ã", "Ā" ] }, { "strings": [ "S", "ẞ", "Ś", "Š" ] }, { "strings": [ "D", "Ð" ] }, { "strings": [ "F" ] }, { "strings": [ "G" ] }, { "strings": [ "H" ] }, { "strings": [ "J" ] }, { "strings": [ "K" ] }, { "strings": [ "L", "Ł" ] }, { "strings": [ "Æ", "Ä" ] }, { "strings": [ "Ø", "Ö" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 1.5 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 }, { "strings": [ "Z" ] }, { "strings": [ "X" ] }, { "strings": [ "C" ] }, { "strings": [ "V" ] }, { "strings": [ "B" ] }, { "strings": [ "N", "Ñ", "Ń" ] }, { "strings": [ "M" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 6 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "€", "¢", "£", "$", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "¥" ] }, { "strings": [ "$", "¢" ] }, { "strings": [ "¢" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "da", "name": "Danish" } 070701000000C6000081A40000000000000000000000016712993F00004E7D000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/osk-layouts/ee.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "q" ] }, { "strings": [ "w" ] }, { "strings": [ "e", "ē", "è", "ė", "é", "ê", "ë", "ę", "ě" ] }, { "strings": [ "r", "ŗ", "ř", "ŕ" ] }, { "strings": [ "t", "ţ", "ť" ] }, { "strings": [ "y", "ý", "ÿ" ] }, { "strings": [ "u", "ü", "ū", "ų", "ù", "ú", "û", "ů", "ű" ] }, { "strings": [ "i", "ī", "ì", "į", "í", "î", "ï", "ı" ] }, { "strings": [ "o", "ö", "õ", "ò", "ó", "ô", "œ", "ő", "ø" ] }, { "strings": [ "p" ] }, { "strings": [ "ü" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "strings": [ "a", "ä", "ā", "à", "á", "â", "ã", "å", "æ", "ą" ] }, { "strings": [ "s", "š", "ß", "ś", "ş" ] }, { "strings": [ "d", "ď" ] }, { "strings": [ "f" ] }, { "strings": [ "g", "ģ", "ğ" ] }, { "strings": [ "h" ] }, { "strings": [ "j" ] }, { "strings": [ "k", "ķ" ] }, { "strings": [ "l", "ļ", "ł", "ĺ", "ľ" ] }, { "strings": [ "ö", "õ" ] }, { "strings": [ "ä" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 1.5 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 }, { "strings": [ "z", "ž", "ż", "ź" ] }, { "strings": [ "x" ] }, { "strings": [ "c", "č", "ç", "ć" ] }, { "strings": [ "v" ] }, { "strings": [ "b" ] }, { "strings": [ "n", "ņ", "ñ", "ń", "ń" ] }, { "strings": [ "m" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 6 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "Q" ] }, { "strings": [ "W" ] }, { "strings": [ "E", "Ē", "È", "Ė", "É", "Ê", "Ë", "Ę", "Ě" ] }, { "strings": [ "R", "Ŗ", "Ř", "Ŕ" ] }, { "strings": [ "T", "Ţ", "Ť" ] }, { "strings": [ "Y", "Ý", "Ÿ" ] }, { "strings": [ "U", "Ü", "Ū", "Ų", "Ù", "Ú", "Û", "Ů", "Ű" ] }, { "strings": [ "I", "Ī", "Ì", "Į", "Í", "Î", "Ï", "I" ] }, { "strings": [ "O", "Ö", "Õ", "Ò", "Ó", "Ô", "Œ", "Ő", "Ø" ] }, { "strings": [ "P" ] }, { "strings": [ "Ü" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "strings": [ "A", "Ä", "Ā", "À", "Á", "Â", "Ã", "Å", "Æ", "Ą" ] }, { "strings": [ "S", "Š", "ẞ", "Ś", "Ş" ] }, { "strings": [ "D", "Ď" ] }, { "strings": [ "F" ] }, { "strings": [ "G", "Ģ", "Ğ" ] }, { "strings": [ "H" ] }, { "strings": [ "J" ] }, { "strings": [ "K", "Ķ" ] }, { "strings": [ "L", "Ļ", "Ł", "Ĺ", "Ľ" ] }, { "strings": [ "Ö", "Õ" ] }, { "strings": [ "Ä" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 1.5 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 }, { "strings": [ "Z", "Ž", "Ż", "Ź" ] }, { "strings": [ "X" ] }, { "strings": [ "C", "Č", "Ç", "Ć" ] }, { "strings": [ "V" ] }, { "strings": [ "B" ] }, { "strings": [ "N", "Ņ", "Ñ", "Ń", "Ń" ] }, { "strings": [ "M" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 6 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "€", "¢", "£", "$", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "¥" ] }, { "strings": [ "$", "¢" ] }, { "strings": [ "¢" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "et", "name": "Estonian" } 070701000000C7000081A40000000000000000000000016712993F0000469A000000000000000000000000000000000000002D00000000gnome-shell-47.1/data/osk-layouts/email.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "q" ] }, { "strings": [ "w" ] }, { "strings": [ "e", "è", "é", "ê", "ë", "ē" ] }, { "strings": [ "r" ] }, { "strings": [ "t" ] }, { "strings": [ "y" ] }, { "strings": [ "u", "û", "ü", "ù", "ú", "ū" ] }, { "strings": [ "i", "î", "ï", "í", "ī", "ì" ] }, { "strings": [ "o", "ô", "ö", "ò", "ó", "œ", "ø", "ō", "õ" ] }, { "strings": [ "p" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "start": 0.5, "strings": [ "a", "à", "á", "â", "ä", "æ", "ã", "å", "ā" ] }, { "strings": [ "s", "ß" ] }, { "strings": [ "d" ] }, { "strings": [ "f" ] }, { "strings": [ "g" ] }, { "strings": [ "h" ] }, { "strings": [ "j" ] }, { "strings": [ "k" ] }, { "strings": [ "l" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift" }, { "strings": [ "z" ] }, { "strings": [ "x" ] }, { "strings": [ "c", "ç" ] }, { "strings": [ "v" ] }, { "strings": [ "b" ] }, { "strings": [ "n", "ñ" ] }, { "strings": [ "m" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "@" ], "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "Q" ] }, { "strings": [ "W" ] }, { "strings": [ "E", "È", "É", "Ê", "Ë", "Ē" ] }, { "strings": [ "R" ] }, { "strings": [ "T" ] }, { "strings": [ "Y" ] }, { "strings": [ "U", "Û", "Ü", "Ù", "Ú", "Ū" ] }, { "strings": [ "I", "Î", "Ï", "Í", "Ī", "Ì" ] }, { "strings": [ "O", "Ô", "Ö", "Ò", "Ó", "Œ", "Ø", "Ō", "Õ" ] }, { "strings": [ "P" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "start": 0.5, "strings": [ "A", "À", "Á", "Â", "Ä", "Æ", "Ã", "Å", "Ā" ] }, { "strings": [ "S", "ẞ" ] }, { "strings": [ "D" ] }, { "strings": [ "F" ] }, { "strings": [ "G" ] }, { "strings": [ "H" ] }, { "strings": [ "J" ] }, { "strings": [ "K" ] }, { "strings": [ "L" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default" }, { "strings": [ "Z" ] }, { "strings": [ "X" ] }, { "strings": [ "C", "Ç" ] }, { "strings": [ "V" ] }, { "strings": [ "B" ] }, { "strings": [ "N", "Ñ" ] }, { "strings": [ "M" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "@" ], "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "start": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "$", "¢", "£", "€", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "start": 0.5, "strings": [ "£" ] }, { "strings": [ "¢" ] }, { "strings": [ "€" ] }, { "strings": [ "¥" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "name": "Email keymap" } 070701000000C8000081A40000000000000000000000016712993F00005177000000000000000000000000000000000000002B00000000gnome-shell-47.1/data/osk-layouts/epo.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "ŝ", "q" ] }, { "strings": [ "ĝ", "w", "ŵ" ] }, { "strings": [ "e", "é", "ě", "è", "ê", "ë", "ę", "ė", "ē" ] }, { "strings": [ "r", "ř", "ŕ", "ŗ" ] }, { "strings": [ "t", "ť", "ț", "ţ", "ŧ" ] }, { "strings": [ "ŭ", "y", "ý", "ŷ", "ÿ", "þ" ] }, { "strings": [ "u", "ú", "ů", "û", "ü", "ù", "ū", "ũ", "ű", "ų", "µ" ] }, { "strings": [ "i", "í", "î", "ï", "ĩ", "ì", "į", "ī", "ı", "ij" ] }, { "strings": [ "o", "ó", "ö", "ô", "ò", "õ", "œ", "ø", "ō", "ő", "º" ] }, { "strings": [ "p" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "strings": [ "a", "á", "à", "â", "ä", "æ", "ã", "å", "ā", "ă", "ą", "ª" ] }, { "strings": [ "s", "ß", "š", "ś", "ș", "ş" ] }, { "strings": [ "d", "ð", "ď", "đ" ] }, { "strings": [ "f" ] }, { "strings": [ "g", "ğ", "ġ", "ģ" ] }, { "strings": [ "h", "ĥ", "ħ" ] }, { "strings": [ "j" ] }, { "strings": [ "k", "ķ", "ĸ" ] }, { "strings": [ "l", "ĺ", "ļ", "ľ", "ŀ", "ł" ] }, { "strings": [ "ĵ" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 1.5 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift" }, { "strings": [ "z", "ź", "ż", "ž" ] }, { "strings": [ "ĉ", "x" ] }, { "strings": [ "c", "ć", "č", "ç", "ċ" ] }, { "strings": [ "v", "w", "ŵ" ] }, { "strings": [ "b" ] }, { "strings": [ "n", "ñ", "ń", "ņ", "ň", "ʼn", "ŋ" ] }, { "strings": [ "m" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "Ŝ", "Q" ] }, { "strings": [ "Ĝ", "W", "Ŵ" ] }, { "strings": [ "E", "É", "Ě", "È", "Ê", "Ë", "Ę", "Ė", "Ē" ] }, { "strings": [ "R", "Ř", "Ŕ", "Ŗ" ] }, { "strings": [ "T", "Ť", "Ț", "Ţ", "Ŧ" ] }, { "strings": [ "Ŭ", "Y", "Ý", "Ŷ", "Ÿ", "Þ" ] }, { "strings": [ "U", "Ú", "Ů", "Û", "Ü", "Ù", "Ū", "Ũ", "Ű", "Ų", "Μ" ] }, { "strings": [ "I", "Í", "Î", "Ï", "Ĩ", "Ì", "Į", "Ī", "I", "IJ" ] }, { "strings": [ "O", "Ó", "Ö", "Ô", "Ò", "Õ", "Œ", "Ø", "Ō", "Ő", "º" ] }, { "strings": [ "P" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "strings": [ "A", "Á", "À", "Â", "Ä", "Æ", "Ã", "Å", "Ā", "Ă", "Ą", "ª" ] }, { "strings": [ "S", "ẞ", "Š", "Ś", "Ș", "Ş" ] }, { "strings": [ "D", "Ð", "Ď", "Đ" ] }, { "strings": [ "F" ] }, { "strings": [ "G", "Ğ", "Ġ", "Ģ" ] }, { "strings": [ "H", "Ĥ", "Ħ" ] }, { "strings": [ "J" ] }, { "strings": [ "K", "Ķ", "ĸ" ] }, { "strings": [ "L", "Ĺ", "Ļ", "Ľ", "Ŀ", "Ł" ] }, { "strings": [ "Ĵ" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 1.5 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default" }, { "strings": [ "Z", "Ź", "Ż", "Ž" ] }, { "strings": [ "Ĉ", "X" ] }, { "strings": [ "C", "Ć", "Č", "Ç", "Ċ" ] }, { "strings": [ "V", "W", "Ŵ" ] }, { "strings": [ "B" ] }, { "strings": [ "N", "Ñ", "Ń", "Ņ", "Ň", "ʼN", "Ŋ" ] }, { "strings": [ "M" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "$", "¢", "£", "€", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "¢" ] }, { "strings": [ "€" ] }, { "strings": [ "¥" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "eo", "name": "Esperanto" } 070701000000C9000081A40000000000000000000000016712993F000048F4000000000000000000000000000000000000002E00000000gnome-shell-47.1/data/osk-layouts/es+cat.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "q" ] }, { "strings": [ "w" ] }, { "strings": [ "e", "è", "é", "ë", "ê", "ę", "ė", "ē" ] }, { "strings": [ "r" ] }, { "strings": [ "t" ] }, { "strings": [ "y" ] }, { "strings": [ "u", "ú", "ü", "ù", "û", "ū" ] }, { "strings": [ "i", "í", "ï", "ì", "î", "į", "ī" ] }, { "strings": [ "o", "ò", "ó", "ö", "ô", "õ", "ø", "œ", "ō", "º" ] }, { "strings": [ "p" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "strings": [ "a", "à", "á", "ä", "â", "ã", "å", "ą", "æ", "ā", "ª" ] }, { "strings": [ "s" ] }, { "strings": [ "d" ] }, { "strings": [ "f" ] }, { "strings": [ "g" ] }, { "strings": [ "h" ] }, { "strings": [ "j" ] }, { "strings": [ "k" ] }, { "strings": [ "l", "l·l", "ł" ] }, { "strings": [ "ç" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 1.5 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift" }, { "strings": [ "z" ] }, { "strings": [ "x" ] }, { "strings": [ "c", "ç", "ć", "č" ] }, { "strings": [ "v" ] }, { "strings": [ "b" ] }, { "strings": [ "n", "ñ", "ń" ] }, { "strings": [ "m" ] }, { "strings": [ "," ] }, { "strings": [ ".", "·", "!", ",", "?", ":", ";", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "Q" ] }, { "strings": [ "W" ] }, { "strings": [ "E", "È", "É", "Ë", "Ê", "Ę", "Ė", "Ē" ] }, { "strings": [ "R" ] }, { "strings": [ "T" ] }, { "strings": [ "Y" ] }, { "strings": [ "U", "Ú", "Ü", "Ù", "Û", "Ū" ] }, { "strings": [ "I", "Í", "Ï", "Ì", "Î", "Į", "Ī" ] }, { "strings": [ "O", "Ò", "Ó", "Ö", "Ô", "Õ", "Ø", "Œ", "Ō", "º" ] }, { "strings": [ "P" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "strings": [ "A", "À", "Á", "Ä", "Â", "Ã", "Å", "Ą", "Æ", "Ā", "ª" ] }, { "strings": [ "S" ] }, { "strings": [ "D" ] }, { "strings": [ "F" ] }, { "strings": [ "G" ] }, { "strings": [ "H" ] }, { "strings": [ "J" ] }, { "strings": [ "K" ] }, { "strings": [ "L", "L·L", "Ł" ] }, { "strings": [ "Ç" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 1.5 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default" }, { "strings": [ "Z" ] }, { "strings": [ "X" ] }, { "strings": [ "C", "Ç", "Ć", "Č" ] }, { "strings": [ "V" ] }, { "strings": [ "B" ] }, { "strings": [ "N", "Ñ", "Ń" ] }, { "strings": [ "M" ] }, { "strings": [ "," ] }, { "strings": [ ".", "·", "!", ",", "?", ":", ";", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "€", "¢", "£", "$", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "?", "·" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "¥" ] }, { "strings": [ "$", "¢" ] }, { "strings": [ "¢" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "?", "·" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "ca", "name": "Catalan" } 070701000000CA000081A40000000000000000000000016712993F00004916000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/osk-layouts/es.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "q" ] }, { "strings": [ "w" ] }, { "strings": [ "e", "é", "è", "ë", "ê", "ę", "ė", "ē" ] }, { "strings": [ "r" ] }, { "strings": [ "t" ] }, { "strings": [ "y" ] }, { "strings": [ "u", "ú", "ü", "ù", "û", "ū" ] }, { "strings": [ "i", "í", "ï", "ì", "î", "į", "ī" ] }, { "strings": [ "o", "ó", "ò", "ö", "ô", "õ", "ø", "œ", "ō", "º" ] }, { "strings": [ "p" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "strings": [ "a", "á", "à", "ä", "â", "ã", "å", "ą", "æ", "ā", "ª" ] }, { "strings": [ "s" ] }, { "strings": [ "d" ] }, { "strings": [ "f" ] }, { "strings": [ "g" ] }, { "strings": [ "h" ] }, { "strings": [ "j" ] }, { "strings": [ "k" ] }, { "strings": [ "l" ] }, { "strings": [ "ñ" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 1.5 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift" }, { "strings": [ "z" ] }, { "strings": [ "x" ] }, { "strings": [ "c", "ç", "ć", "č" ] }, { "strings": [ "v" ] }, { "strings": [ "b" ] }, { "strings": [ "n", "ñ", "ń" ] }, { "strings": [ "m" ] }, { "strings": [ "," ] }, { "strings": [ ".", ";", "!", ",", "?", ":", "¡", "@", "¿" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "Q" ] }, { "strings": [ "W" ] }, { "strings": [ "E", "É", "È", "Ë", "Ê", "Ę", "Ė", "Ē" ] }, { "strings": [ "R" ] }, { "strings": [ "T" ] }, { "strings": [ "Y" ] }, { "strings": [ "U", "Ú", "Ü", "Ù", "Û", "Ū" ] }, { "strings": [ "I", "Í", "Ï", "Ì", "Î", "Į", "Ī" ] }, { "strings": [ "O", "Ó", "Ò", "Ö", "Ô", "Õ", "Ø", "Œ", "Ō", "º" ] }, { "strings": [ "P" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "strings": [ "A", "Á", "À", "Ä", "Â", "Ã", "Å", "Ą", "Æ", "Ā", "ª" ] }, { "strings": [ "S" ] }, { "strings": [ "D" ] }, { "strings": [ "F" ] }, { "strings": [ "G" ] }, { "strings": [ "H" ] }, { "strings": [ "J" ] }, { "strings": [ "K" ] }, { "strings": [ "L" ] }, { "strings": [ "Ñ" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 1.5 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default" }, { "strings": [ "Z" ] }, { "strings": [ "X" ] }, { "strings": [ "C", "Ç", "Ć", "Č" ] }, { "strings": [ "V" ] }, { "strings": [ "B" ] }, { "strings": [ "N", "Ñ", "Ń" ] }, { "strings": [ "M" ] }, { "strings": [ "," ] }, { "strings": [ ".", ";", "!", ",", "?", ":", "¡", "@", "¿" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "€", "¢", "£", "$", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ ",", "!", "¡" ] }, { "strings": [ ".", "?", "¿" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "¥" ] }, { "strings": [ "$", "¢" ] }, { "strings": [ "¢" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ ",", "!", "¡" ] }, { "strings": [ ".", "?", "¿" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "es", "name": "Spanish" } 070701000000CB000081A40000000000000000000000016712993F000046FD000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/osk-layouts/fi.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "q" ] }, { "strings": [ "w" ] }, { "strings": [ "e" ] }, { "strings": [ "r" ] }, { "strings": [ "t" ] }, { "strings": [ "y" ] }, { "strings": [ "u", "ü" ] }, { "strings": [ "i" ] }, { "strings": [ "o", "ø", "ô", "ò", "ó", "õ", "œ", "ō" ] }, { "strings": [ "p" ] }, { "strings": [ "å" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "strings": [ "a", "æ", "à", "á", "â", "ã", "ā" ] }, { "strings": [ "s", "š", "ß", "ś" ] }, { "strings": [ "d" ] }, { "strings": [ "f" ] }, { "strings": [ "g" ] }, { "strings": [ "h" ] }, { "strings": [ "j" ] }, { "strings": [ "k" ] }, { "strings": [ "l" ] }, { "strings": [ "ö", "ø" ] }, { "strings": [ "ä", "æ" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 1.5 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 }, { "strings": [ "z", "ž", "ź", "ż" ] }, { "strings": [ "x" ] }, { "strings": [ "c" ] }, { "strings": [ "v" ] }, { "strings": [ "b" ] }, { "strings": [ "n" ] }, { "strings": [ "m" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 6 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "Q" ] }, { "strings": [ "W" ] }, { "strings": [ "E" ] }, { "strings": [ "R" ] }, { "strings": [ "T" ] }, { "strings": [ "Y" ] }, { "strings": [ "U", "Ü" ] }, { "strings": [ "I" ] }, { "strings": [ "O", "Ø", "Ô", "Ò", "Ó", "Õ", "Œ", "Ō" ] }, { "strings": [ "P" ] }, { "strings": [ "Å" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "strings": [ "A", "Æ", "À", "Á", "Â", "Ã", "Ā" ] }, { "strings": [ "S", "Š", "ẞ", "Ś" ] }, { "strings": [ "D" ] }, { "strings": [ "F" ] }, { "strings": [ "G" ] }, { "strings": [ "H" ] }, { "strings": [ "J" ] }, { "strings": [ "K" ] }, { "strings": [ "L" ] }, { "strings": [ "Ö", "Ø" ] }, { "strings": [ "Ä", "Æ" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 1.5 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 }, { "strings": [ "Z", "Ž", "Ź", "Ż" ] }, { "strings": [ "X" ] }, { "strings": [ "C" ] }, { "strings": [ "V" ] }, { "strings": [ "B" ] }, { "strings": [ "N" ] }, { "strings": [ "M" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 6 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "€", "¢", "£", "$", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "¥" ] }, { "strings": [ "$", "¢" ] }, { "strings": [ "¢" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "fi", "name": "Finnish" } 070701000000CC000081A40000000000000000000000016712993F000049D9000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/osk-layouts/fr.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "a", "à", "â", "%", "æ", "á", "ä", "ã", "å", "ā", "ª" ] }, { "strings": [ "z" ] }, { "strings": [ "e", "é", "è", "ê", "ë", "%", "ę", "ė", "ē" ] }, { "strings": [ "r" ] }, { "strings": [ "t" ] }, { "strings": [ "y", "%", "ÿ" ] }, { "strings": [ "u", "ù", "û", "%", "ü", "ú", "ū" ] }, { "strings": [ "i", "î", "%", "ï", "ì", "í", "į", "ī" ] }, { "strings": [ "o", "ô", "œ", "%", "ö", "ò", "ó", "õ", "ø", "ō", "º" ] }, { "strings": [ "p" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "strings": [ "q" ] }, { "strings": [ "s" ] }, { "strings": [ "d" ] }, { "strings": [ "f" ] }, { "strings": [ "g" ] }, { "strings": [ "h" ] }, { "strings": [ "j" ] }, { "strings": [ "k" ] }, { "strings": [ "l" ] }, { "strings": [ "m" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 1.5 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift" }, { "strings": [ "w" ] }, { "strings": [ "x" ] }, { "strings": [ "c", "ç", "ć", "č" ] }, { "strings": [ "v" ] }, { "strings": [ "b" ] }, { "strings": [ "n" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "A", "À", "Â", "%", "Æ", "Á", "Ä", "Ã", "Å", "Ā", "ª" ] }, { "strings": [ "Z" ] }, { "strings": [ "E", "É", "È", "Ê", "Ë", "%", "Ę", "Ė", "Ē" ] }, { "strings": [ "R" ] }, { "strings": [ "T" ] }, { "strings": [ "Y", "%", "Ÿ" ] }, { "strings": [ "U", "Ù", "Û", "%", "Ü", "Ú", "Ū" ] }, { "strings": [ "I", "Î", "%", "Ï", "Ì", "Í", "Į", "Ī" ] }, { "strings": [ "O", "Ô", "Œ", "%", "Ö", "Ò", "Ó", "Õ", "Ø", "Ō", "º" ] }, { "strings": [ "P" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "strings": [ "Q" ] }, { "strings": [ "S" ] }, { "strings": [ "D" ] }, { "strings": [ "F" ] }, { "strings": [ "G" ] }, { "strings": [ "H" ] }, { "strings": [ "J" ] }, { "strings": [ "K" ] }, { "strings": [ "L" ] }, { "strings": [ "M" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 1.5 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default" }, { "strings": [ "W" ] }, { "strings": [ "X" ] }, { "strings": [ "C", "Ç", "Ć", "Č" ] }, { "strings": [ "V" ] }, { "strings": [ "B" ] }, { "strings": [ "N" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "€", "¢", "£", "$", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "¥" ] }, { "strings": [ "$", "¢" ] }, { "strings": [ "¢" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "fr", "name": "French" } 070701000000CD000081A40000000000000000000000016712993F000042BB000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/osk-layouts/ge.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "ქ" ] }, { "strings": [ "წ" ] }, { "strings": [ "ე", "ჱ" ] }, { "strings": [ "რ" ] }, { "strings": [ "ტ" ] }, { "strings": [ "ყ", "ჸ" ] }, { "strings": [ "უ" ] }, { "strings": [ "ი", "ჲ" ] }, { "strings": [ "ო" ] }, { "strings": [ "პ" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "ა", "ჺ" ] }, { "strings": [ "ს" ] }, { "strings": [ "დ" ] }, { "strings": [ "ფ", "ჶ" ] }, { "strings": [ "გ", "ჹ" ] }, { "strings": [ "ჰ", "ჵ" ] }, { "strings": [ "ჯ", "ჷ" ] }, { "strings": [ "კ" ] }, { "strings": [ "ლ" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift" }, { "strings": [ "ზ" ] }, { "strings": [ "ხ", "ჴ" ] }, { "strings": [ "ც" ] }, { "strings": [ "ვ", "ჳ" ] }, { "strings": [ "ბ" ] }, { "strings": [ "ნ", "ჼ" ] }, { "strings": [ "მ" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift" "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "Q" ] }, { "strings": [ "ჭ" ] }, { "strings": [ "E" ] }, { "strings": [ "ღ" ] }, { "strings": [ "თ" ] }, { "strings": [ "Y" ] }, { "strings": [ "U" ] }, { "strings": [ "I" ] }, { "strings": [ "O" ] }, { "strings": [ "P" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "A" ] }, { "strings": [ "შ" ] }, { "strings": [ "D" ] }, { "strings": [ "F" ] }, { "strings": [ "G" ] }, { "strings": [ "H" ] }, { "strings": [ "ჟ" ] }, { "strings": [ "K" ] }, { "strings": [ "L" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default" }, { "strings": [ "ძ" ] }, { "strings": [ "X" ] }, { "strings": [ "ჩ" ] }, { "strings": [ "V" ] }, { "strings": [ "B" ] }, { "strings": [ "N" ] }, { "strings": [ "M" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "$", "¢", "£", "€", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "¢" ] }, { "strings": [ "€" ] }, { "strings": [ "¥" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "ka", "name": "Georgian" } 070701000000CE000081A40000000000000000000000016712993F000043BA000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/osk-layouts/gr.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ ";", ":" ] }, { "strings": [ "ς" ] }, { "strings": [ "ε", "έ" ] }, { "strings": [ "ρ" ] }, { "strings": [ "τ" ] }, { "strings": [ "υ", "ύ", "ϋ", "ΰ" ] }, { "strings": [ "θ" ] }, { "strings": [ "ι", "ί", "ϊ", "ΐ" ] }, { "strings": [ "ο", "ό" ] }, { "strings": [ "π" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "α", "ά" ] }, { "strings": [ "σ" ] }, { "strings": [ "δ" ] }, { "strings": [ "φ" ] }, { "strings": [ "γ" ] }, { "strings": [ "η", "ή" ] }, { "strings": [ "ξ" ] }, { "strings": [ "κ" ] }, { "strings": [ "λ" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift" }, { "strings": [ "ζ" ] }, { "strings": [ "χ" ] }, { "strings": [ "ψ" ] }, { "strings": [ "ω", "ώ" ] }, { "strings": [ "β" ] }, { "strings": [ "ν" ] }, { "strings": [ "μ" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ ";", ":" ] }, { "strings": [ "Σ" ] }, { "strings": [ "Ε", "Έ" ] }, { "strings": [ "Ρ" ] }, { "strings": [ "Τ" ] }, { "strings": [ "Υ", "Ύ", "Ϋ", "Ϋ́" ] }, { "strings": [ "Θ" ] }, { "strings": [ "Ι", "Ί", "Ϊ", "Ϊ́" ] }, { "strings": [ "Ο", "Ό" ] }, { "strings": [ "Π" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "Α", "Ά" ] }, { "strings": [ "Σ" ] }, { "strings": [ "Δ" ] }, { "strings": [ "Φ" ] }, { "strings": [ "Γ" ] }, { "strings": [ "Η", "Ή" ] }, { "strings": [ "Ξ" ] }, { "strings": [ "Κ" ] }, { "strings": [ "Λ" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default" }, { "strings": [ "Ζ" ] }, { "strings": [ "Χ" ] }, { "strings": [ "Ψ" ] }, { "strings": [ "Ω", "Ώ" ] }, { "strings": [ "Β" ] }, { "strings": [ "Ν" ] }, { "strings": [ "Μ" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "€", "¢", "£", "$", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "¥" ] }, { "strings": [ "$", "¢" ] }, { "strings": [ "¢" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "el", "name": "Greek" } 070701000000CF000081A40000000000000000000000016712993F00004374000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/osk-layouts/hr.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "q" ] }, { "strings": [ "w" ] }, { "strings": [ "e" ] }, { "strings": [ "r" ] }, { "strings": [ "t" ] }, { "strings": [ "z", "ž", "ź", "ż" ] }, { "strings": [ "u" ] }, { "strings": [ "i" ] }, { "strings": [ "o" ] }, { "strings": [ "p" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "a" ] }, { "strings": [ "s", "š", "ś", "ß" ] }, { "strings": [ "d", "đ" ] }, { "strings": [ "f" ] }, { "strings": [ "g" ] }, { "strings": [ "h" ] }, { "strings": [ "j" ] }, { "strings": [ "k" ] }, { "strings": [ "l" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift" }, { "strings": [ "y" ] }, { "strings": [ "x" ] }, { "strings": [ "c", "č", "ć", "ç" ] }, { "strings": [ "v" ] }, { "strings": [ "b" ] }, { "strings": [ "n", "ñ", "ń" ] }, { "strings": [ "m" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "Q" ] }, { "strings": [ "W" ] }, { "strings": [ "E" ] }, { "strings": [ "R" ] }, { "strings": [ "T" ] }, { "strings": [ "Z", "Ž", "Ź", "Ż" ] }, { "strings": [ "U" ] }, { "strings": [ "I" ] }, { "strings": [ "O" ] }, { "strings": [ "P" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "A" ] }, { "strings": [ "S", "Š", "Ś", "ẞ" ] }, { "strings": [ "D", "Đ" ] }, { "strings": [ "F" ] }, { "strings": [ "G" ] }, { "strings": [ "H" ] }, { "strings": [ "J" ] }, { "strings": [ "K" ] }, { "strings": [ "L" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default" }, { "strings": [ "Y" ] }, { "strings": [ "X" ] }, { "strings": [ "C", "Č", "Ć", "Ç" ] }, { "strings": [ "V" ] }, { "strings": [ "B" ] }, { "strings": [ "N", "Ñ", "Ń" ] }, { "strings": [ "M" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "$", "¢", "£", "€", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "¢" ] }, { "strings": [ "€" ] }, { "strings": [ "¥" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "hr", "name": "Croatian" } 070701000000D0000081A40000000000000000000000016712993F00004734000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/osk-layouts/hu.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "q" ] }, { "strings": [ "w" ] }, { "strings": [ "e", "é", "è", "ê", "ë", "ę", "ė", "ē" ] }, { "strings": [ "r" ] }, { "strings": [ "t" ] }, { "strings": [ "z" ] }, { "strings": [ "u", "ú", "ü", "ű", "û", "ù", "ū" ] }, { "strings": [ "i", "í", "î", "ï", "ì", "į", "ī" ] }, { "strings": [ "o", "ó", "ö", "ő", "ô", "ò", "õ", "œ", "ø", "ō" ] }, { "strings": [ "p" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "a", "á", "à", "â", "ä", "æ", "ã", "å", "ā" ] }, { "strings": [ "s" ] }, { "strings": [ "d" ] }, { "strings": [ "f" ] }, { "strings": [ "g" ] }, { "strings": [ "h" ] }, { "strings": [ "j" ] }, { "strings": [ "k" ] }, { "strings": [ "l" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift" }, { "strings": [ "y" ] }, { "strings": [ "x" ] }, { "strings": [ "c" ] }, { "strings": [ "v" ] }, { "strings": [ "b" ] }, { "strings": [ "n" ] }, { "strings": [ "m" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "Q" ] }, { "strings": [ "W" ] }, { "strings": [ "E", "É", "È", "Ê", "Ë", "Ę", "Ė", "Ē" ] }, { "strings": [ "R" ] }, { "strings": [ "T" ] }, { "strings": [ "Z" ] }, { "strings": [ "U", "Ú", "Ü", "Ű", "Û", "Ù", "Ū" ] }, { "strings": [ "I", "Í", "Î", "Ï", "Ì", "Į", "Ī" ] }, { "strings": [ "O", "Ó", "Ö", "Ő", "Ô", "Ò", "Õ", "Œ", "Ø", "Ō" ] }, { "strings": [ "P" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "A", "Á", "À", "Â", "Ä", "Æ", "Ã", "Å", "Ā" ] }, { "strings": [ "S" ] }, { "strings": [ "D" ] }, { "strings": [ "F" ] }, { "strings": [ "G" ] }, { "strings": [ "H" ] }, { "strings": [ "J" ] }, { "strings": [ "K" ] }, { "strings": [ "L" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default" }, { "strings": [ "Y" ] }, { "strings": [ "X" ] }, { "strings": [ "C" ] }, { "strings": [ "V" ] }, { "strings": [ "B" ] }, { "strings": [ "N" ] }, { "strings": [ "M" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "$", "¢", "£", "€", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "¢" ] }, { "strings": [ "€" ] }, { "strings": [ "¥" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "hu", "name": "Hungarian" } 070701000000D1000081A40000000000000000000000016712993F00004195000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/osk-layouts/id.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "q" ] }, { "strings": [ "w" ] }, { "strings": [ "e" ] }, { "strings": [ "r" ] }, { "strings": [ "t" ] }, { "strings": [ "y" ] }, { "strings": [ "u" ] }, { "strings": [ "i" ] }, { "strings": [ "o" ] }, { "strings": [ "p" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "a" ] }, { "strings": [ "s" ] }, { "strings": [ "d" ] }, { "strings": [ "f" ] }, { "strings": [ "g" ] }, { "strings": [ "h" ] }, { "strings": [ "j" ] }, { "strings": [ "k" ] }, { "strings": [ "l" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift" }, { "strings": [ "z" ] }, { "strings": [ "x" ] }, { "strings": [ "c" ] }, { "strings": [ "v" ] }, { "strings": [ "b" ] }, { "strings": [ "n" ] }, { "strings": [ "m" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "Q" ] }, { "strings": [ "W" ] }, { "strings": [ "E" ] }, { "strings": [ "R" ] }, { "strings": [ "T" ] }, { "strings": [ "Y" ] }, { "strings": [ "U" ] }, { "strings": [ "I" ] }, { "strings": [ "O" ] }, { "strings": [ "P" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "A" ] }, { "strings": [ "S" ] }, { "strings": [ "D" ] }, { "strings": [ "F" ] }, { "strings": [ "G" ] }, { "strings": [ "H" ] }, { "strings": [ "J" ] }, { "strings": [ "K" ] }, { "strings": [ "L" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default" }, { "strings": [ "Z" ] }, { "strings": [ "X" ] }, { "strings": [ "C" ] }, { "strings": [ "V" ] }, { "strings": [ "B" ] }, { "strings": [ "N" ] }, { "strings": [ "M" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "$", "¢", "£", "€", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "¢" ] }, { "strings": [ "€" ] }, { "strings": [ "¥" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "id", "name": "Indonesian" } 070701000000D2000081A40000000000000000000000016712993F000032FE000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/osk-layouts/il.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "'", "\"" ] }, { "strings": [ "-", "_" ] }, { "strings": [ "ק" ] }, { "strings": [ "ר" ] }, { "strings": [ "א" ] }, { "strings": [ "ט" ] }, { "strings": [ "ו" ] }, { "strings": [ "ן" ] }, { "strings": [ "ם" ] }, { "strings": [ "פ" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "strings": [ "ש" ] }, { "strings": [ "ד" ] }, { "strings": [ "ג", "ג׳" ] }, { "strings": [ "כ" ] }, { "strings": [ "ע" ] }, { "strings": [ "י", "ײַ" ] }, { "strings": [ "ח", "ח׳" ] }, { "strings": [ "ל" ] }, { "strings": [ "ך" ] }, { "strings": [ "ף" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 1.5 } ], [ { "leftOffset": 1, "strings": [ "ז", "ז׳" ] }, { "strings": [ "ס" ] }, { "strings": [ "ב" ] }, { "strings": [ "ה" ] }, { "strings": [ "נ" ] }, { "strings": [ "מ" ] }, { "strings": [ "צ", "צ׳" ] }, { "strings": [ "ת", "ת׳" ] }, { "strings": [ "ץ", "ץ׳" ] } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "," ] }, { "strings": [ " " ], "width": 5 }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "₪", "$", "¢", "€", "£", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±", "﬩" ] }, { "strings": [ "(", ">", "}", "]" ] }, { "strings": [ ")", "<", "{", "[" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ ",", "!" ] }, { "strings": [ ".", "?" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "€" ] }, { "strings": [ "$", "¢" ] }, { "strings": [ "¢" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "›", "≥", "»" ] }, { "strings": [ ">", "‹", "≤", "«" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ ",", "!" ] }, { "strings": [ ".", "?" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "he", "name": "Hebrew" } 070701000000D3000081A40000000000000000000000016712993F00003582000000000000000000000000000000000000003300000000gnome-shell-47.1/data/osk-layouts/in+bolnagri.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "◌ौ" ] }, { "strings": [ "◌ै" ] }, { "strings": [ "◌ा" ] }, { "strings": [ "◌ी" ] }, { "strings": [ "◌ू" ] }, { "strings": [ "ब", "ब॒", "%" ] }, { "strings": [ "ह" ] }, { "strings": [ "ग", "ज्ञ", "ग़", "ग॒", "%" ] }, { "strings": [ "द" ] }, { "strings": [ "ज", "ज॒", "ज्ञ", "ज़", "%" ] }, { "strings": [ "ड", "ड॒", "ड़" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "strings": [ "◌ो" ] }, { "strings": [ "◌े" ] }, { "strings": [ "◌्" ] }, { "strings": [ "◌ि" ] }, { "strings": [ "◌ु" ] }, { "strings": [ "प" ] }, { "strings": [ "र", "ऋ", "ऱ", "ॠ" ] }, { "strings": [ "क", "क़" ] }, { "strings": [ "त", "त्र" ] }, { "strings": [ "च" ] }, { "strings": [ "ट" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 1.5 } ], [ { "strings": [ "◌ॉ" ] }, { "strings": [ "◌ं" ] }, { "strings": [ "म", "ॐ" ] }, { "strings": [ "न", "ञ", "ङ", "ऩ" ] }, { "strings": [ "व" ] }, { "strings": [ "ल", "ऌ", "ॡ" ] }, { "strings": [ "स" ] }, { "strings": [ "य", "य़" ] }, { "strings": [ "◌़" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 6 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "१", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "२", "²", "⅔" ] }, { "strings": [ "३", "³", "¾", "⅜" ] }, { "strings": [ "४", "⁴" ] }, { "strings": [ "५", "⅝" ] }, { "strings": [ "६" ] }, { "strings": [ "७", "⅞" ] }, { "strings": [ "८" ] }, { "strings": [ "९" ] }, { "strings": [ "०", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "₹", "$", "¢", "€", "£", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "€" ] }, { "strings": [ "$", "¢" ] }, { "strings": [ "¢" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "hi", "name": "Hindi" } 070701000000D4000081A40000000000000000000000016712993F000046BD000000000000000000000000000000000000002E00000000gnome-shell-47.1/data/osk-layouts/in+mal.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "ൌ" ] }, { "strings": [ "ൈ" ] }, { "strings": [ "ാ" ] }, { "strings": [ "ീ" ] }, { "strings": [ "ൂ" ] }, { "strings": [ "ബ" ] }, { "strings": [ "ഹ" ] }, { "strings": [ "ഗ" ] }, { "strings": [ "ദ" ] }, { "strings": [ "ജ" ] }, { "strings": [ "ഡ" ] }, { "label": "ZWJ", "strings": [ "‍" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "strings": [ "ോ" ] }, { "strings": [ "േ" ] }, { "strings": [ "്" ] }, { "strings": [ "ി" ] }, { "strings": [ "ു" ] }, { "strings": [ "പ" ] }, { "strings": [ "ര" ] }, { "strings": [ "ക" ] }, { "strings": [ "ത" ] }, { "strings": [ "ച" ] }, { "strings": [ "ട" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2.5 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1 }, { "strings": [ "െ" ] }, { "strings": [ "ം" ] }, { "strings": [ "മ", "ç" ] }, { "strings": [ "ന" ] }, { "strings": [ "വ" ] }, { "strings": [ "ല", "ñ" ] }, { "strings": [ "സ" ] }, { "strings": [ "ഷ" ] }, { "strings": [ "യ" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 7 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "ഐ" ] }, { "strings": [ "ആ" ] }, { "strings": [ "ഈ" ] }, { "strings": [ "ഊ" ] }, { "strings": [ "ഭ" ] }, { "strings": [ "ങ" ] }, { "strings": [ "ഘ" ] }, { "strings": [ "ധ" ] }, { "strings": [ "ഝ" ] }, { "strings": [ "ഢ" ] }, { "strings": [ "ഞ" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 2.5 } ], [ { "strings": [ "ഓ" ] }, { "strings": [ "ഏ" ] }, { "strings": [ "അ" ] }, { "strings": [ "ഇ" ] }, { "strings": [ "ഉ" ] }, { "strings": [ "ഫ" ] }, { "strings": [ "റ" ] }, { "strings": [ "ഖ" ] }, { "strings": [ "ഥ" ] }, { "strings": [ "ഛ" ] }, { "strings": [ "ഠ" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2.5 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default" }, { "strings": [ "എ" ] }, { "label": "ZWJ", "strings": [ "​" ] }, { "strings": [ "ണ" ] }, { "strings": [ "ന" ] }, { "strings": [ "ഴ" ] }, { "strings": [ "ള" ] }, { "strings": [ "ശ" ] }, { "strings": [ "ഷ" ] }, { "strings": [ "യ" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 7 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "൧", "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "൨", "2", "²", "⅔" ] }, { "strings": [ "൩", "3", "³", "¾", "⅜" ] }, { "strings": [ "൪", "4", "⁴" ] }, { "strings": [ "൫", "5", "⅝" ] }, { "strings": [ "൬", "6" ] }, { "strings": [ "൭", "7", "⅞" ] }, { "strings": [ "൮", "8" ] }, { "strings": [ "൯", "9" ] }, { "strings": [ "൦", "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "₹", "$", "¢", "£", "€", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "¢" ] }, { "strings": [ "€" ] }, { "strings": [ "¥" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "ml", "name": "Malayalam" } 070701000000D5000081A40000000000000000000000016712993F00003878000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/osk-layouts/ir.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "ض" ] }, { "strings": [ "ص" ] }, { "strings": [ "ث" ] }, { "strings": [ "ق" ] }, { "strings": [ "ف" ] }, { "strings": [ "غ" ] }, { "strings": [ "ع" ] }, { "strings": [ "ه", "ة" ] }, { "strings": [ "خ" ] }, { "strings": [ "ح" ] }, { "strings": [ "ج" ] }, { "strings": [ "چ" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1 } ], [ { "leftOffset": 0.5, "strings": [ "ش" ] }, { "strings": [ "س" ] }, { "strings": [ "ی", "ئ" ] }, { "strings": [ "ب" ] }, { "strings": [ "ل" ] }, { "strings": [ "ا", "آ", "ء", "أ", "إ", "ٱ" ] }, { "strings": [ "ت" ] }, { "strings": [ "ن" ] }, { "strings": [ "م" ] }, { "strings": [ "ک", "ك" ] }, { "strings": [ "گ" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 1.5 } ], [ { "leftOffset": 1.5, "strings": [ "ظ" ] }, { "strings": [ "ط" ] }, { "strings": [ "ژ" ] }, { "strings": [ "ز" ] }, { "strings": [ "ر" ] }, { "strings": [ "ذ" ] }, { "strings": [ "د" ] }, { "strings": [ "و" ] }, { "strings": [ "پ" ] } ], [ { "action": "levelSwitch", "label": "۱۲۳؟", "level": "opt", "width": 1.5 }, { "strings": [ "،" ] }, { "strings": [ " " ], "width": 5.5 }, { "strings": [ ".", "\"", "'", "#", "-", ":", "!", "،", "؟", "@", "&", "%", "+", "؛", "/", ")", "(" ] }, { "iconName": "keyboard-zwnj-symbolic", "keyval": "0x100200c" }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "۱", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "۲", "²", "⅔" ] }, { "strings": [ "۳", "³", "¾", "⅜" ] }, { "strings": [ "۴", "⁴" ] }, { "strings": [ "۵", "⅝" ] }, { "strings": [ "۶" ] }, { "strings": [ "۷", "⅞" ] }, { "strings": [ "۸" ] }, { "strings": [ "۹" ] }, { "strings": [ "۰", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "٬", "@" ] }, { "strings": [ "٫", "#" ] }, { "strings": [ "﷼", "$", "¢", "€", "£", "¥", "₱" ] }, { "strings": [ "٪", "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "﴿", ">", "}", "]" ] }, { "strings": [ ")", "﴾", "<", "{", "[" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "★", "٭" ] }, { "strings": [ "«", "“", "”", "«", "»" ] }, { "strings": [ "»", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ "؛", ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "؟", "?" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "الف‌ب‌پ", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "،", ":", "!", "؟", "؛", "-", "/", "»", "«" ] }, { "strings": [ ".", "ٕ", "ٔ", "ْ", "ٍ", "ٌ", "ً", "ّ", "ٖ", "ٰ", "ٓ", "ِ", "ُ", "َ", "ـ" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "€" ] }, { "strings": [ "$", "¢" ] }, { "strings": [ "¢" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "۱۲۳؟", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "۱۲۳؟", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "الف‌ب‌پ", "level": "default", "width": 1.5 }, { "strings": [ "«", "›", "≥", ">" ] }, { "strings": [ "»", "‹", "≤", "<" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "،", ":", "!", "؟", "؛", "-", "/", "»", "«" ] }, { "strings": [ ".", "ٕ", "ٔ", "ْ", "ٍ", "ٌ", "ً", "ّ", "ٖ", "ٰ", "ٓ", "ِ", "ُ", "َ", "ـ" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "fa", "name": "Persian" } 070701000000D6000081A40000000000000000000000016712993F00004784000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/osk-layouts/is.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "q" ] }, { "strings": [ "w" ] }, { "strings": [ "e", "é", "ë", "è", "ê", "ę", "ė", "ē" ] }, { "strings": [ "r" ] }, { "strings": [ "t", "þ" ] }, { "strings": [ "y", "ý", "ÿ" ] }, { "strings": [ "u", "ú", "ü", "û", "ù", "ū" ] }, { "strings": [ "i", "í", "ï", "î", "ì", "į", "ī" ] }, { "strings": [ "o", "ó", "ö", "ô", "ò", "õ", "œ", "ø", "ō" ] }, { "strings": [ "p" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "a", "á", "ä", "æ", "å", "à", "â", "ã", "ā" ] }, { "strings": [ "s" ] }, { "strings": [ "d", "ð" ] }, { "strings": [ "f" ] }, { "strings": [ "g" ] }, { "strings": [ "h" ] }, { "strings": [ "j" ] }, { "strings": [ "k" ] }, { "strings": [ "l" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift" }, { "strings": [ "z" ] }, { "strings": [ "x" ] }, { "strings": [ "c" ] }, { "strings": [ "v" ] }, { "strings": [ "b" ] }, { "strings": [ "n" ] }, { "strings": [ "m" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "Q" ] }, { "strings": [ "W" ] }, { "strings": [ "E", "É", "Ë", "È", "Ê", "Ę", "Ė", "Ē" ] }, { "strings": [ "R" ] }, { "strings": [ "T", "Þ" ] }, { "strings": [ "Y", "Ý", "Ÿ" ] }, { "strings": [ "U", "Ú", "Ü", "Û", "Ù", "Ū" ] }, { "strings": [ "I", "Í", "Ï", "Î", "Ì", "Į", "Ī" ] }, { "strings": [ "O", "Ó", "Ö", "Ô", "Ò", "Õ", "Œ", "Ø", "Ō" ] }, { "strings": [ "P" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "A", "Á", "Ä", "Æ", "Å", "À", "Â", "Ã", "Ā" ] }, { "strings": [ "S" ] }, { "strings": [ "D", "Ð" ] }, { "strings": [ "F" ] }, { "strings": [ "G" ] }, { "strings": [ "H" ] }, { "strings": [ "J" ] }, { "strings": [ "K" ] }, { "strings": [ "L" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default" }, { "strings": [ "Z" ] }, { "strings": [ "X" ] }, { "strings": [ "C" ] }, { "strings": [ "V" ] }, { "strings": [ "B" ] }, { "strings": [ "N" ] }, { "strings": [ "M" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "$", "¢", "£", "€", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "¢" ] }, { "strings": [ "€" ] }, { "strings": [ "¥" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "is", "name": "Icelandic" } 070701000000D7000081A40000000000000000000000016712993F00004744000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/osk-layouts/it.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "q" ] }, { "strings": [ "w" ] }, { "strings": [ "e", "è", "é", "ê", "ë", "ę", "ė", "ē" ] }, { "strings": [ "r" ] }, { "strings": [ "t" ] }, { "strings": [ "y" ] }, { "strings": [ "u", "ù", "ú", "û", "ü", "ū" ] }, { "strings": [ "i", "ì", "í", "î", "ï", "į", "ī" ] }, { "strings": [ "o", "ò", "ó", "ô", "ö", "õ", "œ", "ø", "ō", "º" ] }, { "strings": [ "p" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "a", "à", "á", "â", "ä", "æ", "ã", "å", "ā", "ª" ] }, { "strings": [ "s" ] }, { "strings": [ "d" ] }, { "strings": [ "f" ] }, { "strings": [ "g" ] }, { "strings": [ "h" ] }, { "strings": [ "j" ] }, { "strings": [ "k" ] }, { "strings": [ "l" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift" }, { "strings": [ "z" ] }, { "strings": [ "x" ] }, { "strings": [ "c" ] }, { "strings": [ "v" ] }, { "strings": [ "b" ] }, { "strings": [ "n" ] }, { "strings": [ "m" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "Q" ] }, { "strings": [ "W" ] }, { "strings": [ "E", "È", "É", "Ê", "Ë", "Ę", "Ė", "Ē" ] }, { "strings": [ "R" ] }, { "strings": [ "T" ] }, { "strings": [ "Y" ] }, { "strings": [ "U", "Ù", "Ú", "Û", "Ü", "Ū" ] }, { "strings": [ "I", "Ì", "Í", "Î", "Ï", "Į", "Ī" ] }, { "strings": [ "O", "Ò", "Ó", "Ô", "Ö", "Õ", "Œ", "Ø", "Ō", "º" ] }, { "strings": [ "P" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "A", "À", "Á", "Â", "Ä", "Æ", "Ã", "Å", "Ā", "ª" ] }, { "strings": [ "S" ] }, { "strings": [ "D" ] }, { "strings": [ "F" ] }, { "strings": [ "G" ] }, { "strings": [ "H" ] }, { "strings": [ "J" ] }, { "strings": [ "K" ] }, { "strings": [ "L" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default" }, { "strings": [ "Z" ] }, { "strings": [ "X" ] }, { "strings": [ "C" ] }, { "strings": [ "V" ] }, { "strings": [ "B" ] }, { "strings": [ "N" ] }, { "strings": [ "M" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "€", "¢", "£", "$", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "¥" ] }, { "strings": [ "$", "¢" ] }, { "strings": [ "¢" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "it", "name": "Italian" } 070701000000D8000081A40000000000000000000000016712993F0000470B000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/osk-layouts/ke.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "q" ] }, { "strings": [ "w" ] }, { "strings": [ "e", "è", "é", "ê", "ë", "ē" ] }, { "strings": [ "r" ] }, { "strings": [ "t" ] }, { "strings": [ "y" ] }, { "strings": [ "u", "û", "ü", "ù", "ú", "ū" ] }, { "strings": [ "i", "î", "ï", "í", "ī", "ì" ] }, { "strings": [ "o", "ô", "ö", "ò", "ó", "œ", "ø", "ō", "õ" ] }, { "strings": [ "p" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "a", "à", "á", "â", "ä", "æ", "ã", "å", "ā" ] }, { "strings": [ "s", "ß" ] }, { "strings": [ "d" ] }, { "strings": [ "f" ] }, { "strings": [ "g", "g'" ] }, { "strings": [ "h" ] }, { "strings": [ "j" ] }, { "strings": [ "k" ] }, { "strings": [ "l" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift" }, { "strings": [ "z" ] }, { "strings": [ "x" ] }, { "strings": [ "c", "ç" ] }, { "strings": [ "v" ] }, { "strings": [ "b" ] }, { "strings": [ "n", "ñ" ] }, { "strings": [ "m" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "Q" ] }, { "strings": [ "W" ] }, { "strings": [ "E", "È", "É", "Ê", "Ë", "Ē" ] }, { "strings": [ "R" ] }, { "strings": [ "T" ] }, { "strings": [ "Y" ] }, { "strings": [ "U", "Û", "Ü", "Ù", "Ú", "Ū" ] }, { "strings": [ "I", "Î", "Ï", "Í", "Ī", "Ì" ] }, { "strings": [ "O", "Ô", "Ö", "Ò", "Ó", "Œ", "Ø", "Ō", "Õ" ] }, { "strings": [ "P" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "A", "À", "Á", "Â", "Ä", "Æ", "Ã", "Å", "Ā" ] }, { "strings": [ "S", "ẞ" ] }, { "strings": [ "D" ] }, { "strings": [ "F" ] }, { "strings": [ "G", "G'" ] }, { "strings": [ "H" ] }, { "strings": [ "J" ] }, { "strings": [ "K" ] }, { "strings": [ "L" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default" }, { "strings": [ "Z" ] }, { "strings": [ "X" ] }, { "strings": [ "C", "Ç" ] }, { "strings": [ "V" ] }, { "strings": [ "B" ] }, { "strings": [ "N", "Ñ" ] }, { "strings": [ "M" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "$", "¢", "£", "€", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "¢" ] }, { "strings": [ "€" ] }, { "strings": [ "¥" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "sw", "name": "Swahili" } 070701000000D9000081A40000000000000000000000016712993F0000452A000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/osk-layouts/kg.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "й" ] }, { "strings": [ "ц" ] }, { "strings": [ "у", "ү" ] }, { "strings": [ "к" ] }, { "strings": [ "е", "ё" ] }, { "strings": [ "н", "ң" ] }, { "strings": [ "г" ] }, { "strings": [ "ш" ] }, { "strings": [ "щ" ] }, { "strings": [ "з" ] }, { "strings": [ "х" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "strings": [ "ф" ] }, { "strings": [ "ы" ] }, { "strings": [ "в" ] }, { "strings": [ "а" ] }, { "strings": [ "п" ] }, { "strings": [ "р" ] }, { "strings": [ "о", "ө" ] }, { "strings": [ "л" ] }, { "strings": [ "д" ] }, { "strings": [ "ж" ] }, { "strings": [ "э" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 1.5 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 }, { "strings": [ "я" ] }, { "strings": [ "ч" ] }, { "strings": [ "с" ] }, { "strings": [ "м" ] }, { "strings": [ "и" ] }, { "strings": [ "т" ] }, { "strings": [ "ь", "ъ" ] }, { "strings": [ "б" ] }, { "strings": [ "ю" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "," ] }, { "strings": [ " " ], "width": 6 }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "Й" ] }, { "strings": [ "Ц" ] }, { "strings": [ "У", "Ү" ] }, { "strings": [ "К" ] }, { "strings": [ "Е", "Ё" ] }, { "strings": [ "Н", "Ң" ] }, { "strings": [ "Г" ] }, { "strings": [ "Ш" ] }, { "strings": [ "Щ" ] }, { "strings": [ "З" ] }, { "strings": [ "Х" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "strings": [ "Ф" ] }, { "strings": [ "Ы" ] }, { "strings": [ "В" ] }, { "strings": [ "А" ] }, { "strings": [ "П" ] }, { "strings": [ "Р" ] }, { "strings": [ "О", "Ө" ] }, { "strings": [ "Л" ] }, { "strings": [ "Д" ] }, { "strings": [ "Ж" ] }, { "strings": [ "Э" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 1.5 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 }, { "strings": [ "Я" ] }, { "strings": [ "Ч" ] }, { "strings": [ "С" ] }, { "strings": [ "М" ] }, { "strings": [ "И" ] }, { "strings": [ "Т" ] }, { "strings": [ "Ь", "Ъ" ] }, { "strings": [ "Б" ] }, { "strings": [ "Ю" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "," ] }, { "strings": [ " " ], "width": 6 }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "$", "¢", "£", "€", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "¢" ] }, { "strings": [ "€" ] }, { "strings": [ "¥" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "ky", "name": "Kirghiz" } 070701000000DA000081A40000000000000000000000016712993F000039B6000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/osk-layouts/kh.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "១", "៱" ] }, { "strings": [ "២", "៲" ] }, { "strings": [ "៣", "៳" ] }, { "strings": [ "៤", "៴" ] }, { "strings": [ "៥", "៵" ] }, { "strings": [ "៦", "៶" ] }, { "strings": [ "៧", "៷" ] }, { "strings": [ "៨", "៸" ] }, { "strings": [ "៩", "៹" ] }, { "strings": [ "០", "៰" ] }, { "strings": [ "ឥ", "", "ឦ" ] }, { "strings": [ "ឲ", "ឱ" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "strings": [ "ឆ" ] }, { "strings": [ "ឹ" ] }, { "strings": [ "េ" ] }, { "strings": [ "រ" ] }, { "strings": [ "ត" ] }, { "strings": [ "យ" ] }, { "strings": [ "ុ" ] }, { "strings": [ "ិ" ] }, { "strings": [ "ោ" ] }, { "strings": [ "ផ" ] }, { "strings": [ "ៀ" ] }, { "strings": [ "ឪ", "ឧ", "ឱ", "ឳ", "ឩ", "ឨ" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 1.5 } ], [ { "strings": [ "ា" ] }, { "strings": [ "ស" ] }, { "strings": [ "ដ" ] }, { "strings": [ "ថ" ] }, { "strings": [ "ង" ] }, { "strings": [ "ហ" ] }, { "strings": [ "្" ] }, { "strings": [ "ក" ] }, { "strings": [ "ល" ] }, { "strings": [ "ើ" ] }, { "strings": [ "់" ] }, { "strings": [ "ឮ", "ឭ", "ឰ" ] } ], [ { "strings": [ "ឋ" ] }, { "strings": [ "ខ" ] }, { "strings": [ "ច" ] }, { "strings": [ "វ" ] }, { "strings": [ "ប" ] }, { "strings": [ "ន" ] }, { "strings": [ "ម" ] }, { "strings": [ "ុំ" ] }, { "strings": [ "។" ] }, { "strings": [ "៊" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 7 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "$", "៛", "¢", "£", "€", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "¢" ] }, { "strings": [ "€" ] }, { "strings": [ "¥" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "km", "name": "Khmer" } 070701000000DB000081A40000000000000000000000016712993F0000474A000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/osk-layouts/kr.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "label": "ㅂ", "strings": [ "q" ] }, { "label": "ㅈ", "strings": [ "w" ] }, { "label": "ㄷ", "strings": [ "e" ] }, { "label": "ㄱ", "strings": [ "r" ] }, { "label": "ㅅ", "strings": [ "t" ] }, { "label": "ㅛ", "strings": [ "y" ] }, { "label": "ㅕ", "strings": [ "u" ] }, { "label": "ㅑ", "strings": [ "i" ] }, { "label": "ㅐ", "strings": [ "o" ] }, { "label": "ㅔ", "strings": [ "p" ] }, { "iconName": "edit-clear-symbolic", "keyval": "0xff08", "width": 1.5 } ], [ { "label": "ㅁ", "leftOffset": 0.5, "strings": [ "a" ] }, { "label": "ㄴ", "strings": [ "s" ] }, { "label": "ㅇ", "strings": [ "d" ] }, { "label": "ㄹ", "strings": [ "f" ] }, { "label": "ㅎ", "strings": [ "g" ] }, { "label": "ㅗ", "strings": [ "h" ] }, { "label": "ㅓ", "strings": [ "j" ] }, { "label": "ㅏ", "strings": [ "k" ] }, { "label": "ㅣ", "strings": [ "l" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift" }, { "label": "ㅋ", "strings": [ "z" ] }, { "label": "ㅌ", "strings": [ "x" ] }, { "label": "ㅊ", "strings": [ "c" ] }, { "label": "ㅍ", "strings": [ "v" ] }, { "label": "ㅠ", "strings": [ "b" ] }, { "label": "ㅜ", "strings": [ "n" ] }, { "label": "ㅡ", "strings": [ "m" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "label": "ㅃ", "strings": [ "Q" ] }, { "label": "ㅉ", "strings": [ "W" ] }, { "label": "ㄸ", "strings": [ "E" ] }, { "label": "ㄲ", "strings": [ "R" ] }, { "label": "ㅆ", "strings": [ "T" ] }, { "label": "ㅛ", "strings": [ "Y" ] }, { "label": "ㅕ", "strings": [ "U" ] }, { "label": "ㅑ", "strings": [ "I" ] }, { "label": "ㅒ", "strings": [ "O" ] }, { "label": "ㅖ", "strings": [ "P" ] }, { "iconName": "edit-clear-symbolic", "keyval": "0xff08", "width": 1.5 } ], [ { "label": "ㅁ", "leftOffset": 0.5, "strings": [ "A" ] }, { "label": "ㄴ", "strings": [ "S" ] }, { "label": "ㅇ", "strings": [ "D" ] }, { "label": "ㄹ", "strings": [ "F" ] }, { "label": "ㅎ", "strings": [ "G" ] }, { "label": "ㅗ", "strings": [ "H" ] }, { "label": "ㅓ", "strings": [ "J" ] }, { "label": "ㅏ", "strings": [ "K" ] }, { "label": "ㅣ", "strings": [ "L" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default" }, { "label": "ㅋ", "strings": [ "Z" ] }, { "label": "ㅌ", "strings": [ "X" ] }, { "label": "ㅊ", "strings": [ "C" ] }, { "label": "ㅍ", "strings": [ "V" ] }, { "label": "ㅠ", "strings": [ "B" ] }, { "label": "ㅜ", "strings": [ "N" ] }, { "label": "ㅡ", "strings": [ "M" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "iconName": "edit-clear-symbolic", "keyval": "0xff08", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "$", "¢", "£", "€", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "iconName": "edit-clear-symbolic", "keyval": "0xff08", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "¢" ] }, { "strings": [ "€" ] }, { "strings": [ "¥" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "kr", "name": "Korean (Hangul)" } 070701000000DC000081A40000000000000000000000016712993F000038F5000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/osk-layouts/la.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "ຢ", "໑" ] }, { "strings": [ "ຟ", "໒" ] }, { "strings": [ "ໂ", "໓" ] }, { "strings": [ "ຖ", "໔" ] }, { "strings": [ "ຸ" ] }, { "strings": [ "ູ" ] }, { "strings": [ "ຄ", "໕" ] }, { "strings": [ "ຕ", "໖" ] }, { "strings": [ "ຈ", "໗" ] }, { "strings": [ "ຂ", "໘" ] }, { "strings": [ "ຊ", "໙" ] }, { "strings": [ "ໍ" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "strings": [ "ົ" ] }, { "strings": [ "ໄ", "໐" ] }, { "strings": [ "ຳ" ] }, { "strings": [ "ພ" ] }, { "strings": [ "ະ" ] }, { "strings": [ "ິ" ] }, { "strings": [ "ີ" ] }, { "strings": [ "ຮ" ] }, { "strings": [ "ນ" ] }, { "strings": [ "ຍ" ] }, { "strings": [ "ບ" ] }, { "strings": [ "ລ" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 1.5 } ], [ { "strings": [ "ັ" ] }, { "strings": [ "ຫ" ] }, { "strings": [ "ກ" ] }, { "strings": [ "ດ" ] }, { "strings": [ "ເ" ] }, { "strings": [ "້" ] }, { "strings": [ "່" ] }, { "strings": [ "າ" ] }, { "strings": [ "ສ" ] }, { "strings": [ "ວ" ] }, { "strings": [ "ງ" ] }, { "strings": [ "“" ] } ], [ { "strings": [ "ຜ" ] }, { "strings": [ "ປ" ] }, { "strings": [ "ແ" ] }, { "strings": [ "ອ" ] }, { "strings": [ "ຶ" ] }, { "strings": [ "ື" ] }, { "strings": [ "ທ" ] }, { "strings": [ "ມ" ] }, { "strings": [ "ໃ" ] }, { "strings": [ "ຝ" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 7 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "₭", "$", "¢", "€", "£", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "€" ] }, { "strings": [ "$", "¢" ] }, { "strings": [ "¢" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "lo", "name": "Lao" } 070701000000DD000081A40000000000000000000000016712993F00004915000000000000000000000000000000000000002D00000000gnome-shell-47.1/data/osk-layouts/latam.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "q" ] }, { "strings": [ "w" ] }, { "strings": [ "e", "é", "è", "ë", "ê", "ę", "ė", "ē" ] }, { "strings": [ "r" ] }, { "strings": [ "t" ] }, { "strings": [ "y" ] }, { "strings": [ "u", "ú", "ü", "ù", "û", "ū" ] }, { "strings": [ "i", "í", "ï", "ì", "î", "į", "ī" ] }, { "strings": [ "o", "ó", "ò", "ö", "ô", "õ", "ø", "œ", "ō", "º" ] }, { "strings": [ "p" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "strings": [ "a", "á", "à", "ä", "â", "ã", "å", "ą", "æ", "ā", "ª" ] }, { "strings": [ "s" ] }, { "strings": [ "d" ] }, { "strings": [ "f" ] }, { "strings": [ "g" ] }, { "strings": [ "h" ] }, { "strings": [ "j" ] }, { "strings": [ "k" ] }, { "strings": [ "l" ] }, { "strings": [ "ñ" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 1.5 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift" }, { "strings": [ "z" ] }, { "strings": [ "x" ] }, { "strings": [ "c", "ç", "ć", "č" ] }, { "strings": [ "v" ] }, { "strings": [ "b" ] }, { "strings": [ "n", "ñ", "ń" ] }, { "strings": [ "m" ] }, { "strings": [ "," ] }, { "strings": [ ".", ";", "!", ",", "?", ":", "¡", "@", "¿" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "Q" ] }, { "strings": [ "W" ] }, { "strings": [ "E", "É", "È", "Ë", "Ê", "Ę", "Ė", "Ē" ] }, { "strings": [ "R" ] }, { "strings": [ "T" ] }, { "strings": [ "Y" ] }, { "strings": [ "U", "Ú", "Ü", "Ù", "Û", "Ū" ] }, { "strings": [ "I", "Í", "Ï", "Ì", "Î", "Į", "Ī" ] }, { "strings": [ "O", "Ó", "Ò", "Ö", "Ô", "Õ", "Ø", "Œ", "Ō", "º" ] }, { "strings": [ "P" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "strings": [ "A", "Á", "À", "Ä", "Â", "Ã", "Å", "Ą", "Æ", "Ā", "ª" ] }, { "strings": [ "S" ] }, { "strings": [ "D" ] }, { "strings": [ "F" ] }, { "strings": [ "G" ] }, { "strings": [ "H" ] }, { "strings": [ "J" ] }, { "strings": [ "K" ] }, { "strings": [ "L" ] }, { "strings": [ "Ñ" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 1.5 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default" }, { "strings": [ "Z" ] }, { "strings": [ "X" ] }, { "strings": [ "C", "Ç", "Ć", "Č" ] }, { "strings": [ "V" ] }, { "strings": [ "B" ] }, { "strings": [ "N", "Ñ", "Ń" ] }, { "strings": [ "M" ] }, { "strings": [ "," ] }, { "strings": [ ".", ";", "!", ",", "?", ":", "¡", "@", "¿" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "$", "¢", "£", "€", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ ",", "!", "¡" ] }, { "strings": [ ".", "?", "¿" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "¢" ] }, { "strings": [ "€" ] }, { "strings": [ "¥" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ ",", "!", "¡" ] }, { "strings": [ ".", "?", "¿" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "es-US", "name": "Spanish United States" } 070701000000DE000081A40000000000000000000000016712993F00004C85000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/osk-layouts/lt.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "q" ] }, { "strings": [ "w" ] }, { "strings": [ "e", "ė", "ę", "ē", "è", "é", "ê", "ë", "ě" ] }, { "strings": [ "r", "ŗ", "ř", "ŕ" ] }, { "strings": [ "t", "ţ", "ť" ] }, { "strings": [ "y", "ý", "ÿ" ] }, { "strings": [ "u", "ū", "ų", "ü", "ū", "ù", "ú", "û", "ů", "ű" ] }, { "strings": [ "i", "į", "ī", "ì", "í", "î", "ï", "ı" ] }, { "strings": [ "o", "ö", "õ", "ò", "ó", "ô", "œ", "ő", "ø" ] }, { "strings": [ "p" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "a", "ą", "ä", "ā", "à", "á", "â", "ã", "å", "æ" ] }, { "strings": [ "s", "š", "ß", "ś", "ş" ] }, { "strings": [ "d", "ď" ] }, { "strings": [ "f" ] }, { "strings": [ "g", "ģ", "ğ" ] }, { "strings": [ "h" ] }, { "strings": [ "j" ] }, { "strings": [ "k", "ķ" ] }, { "strings": [ "l", "ļ", "ł", "ĺ", "ľ" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift" }, { "strings": [ "z", "ž", "ż", "ź" ] }, { "strings": [ "x" ] }, { "strings": [ "c", "č", "ç", "ć" ] }, { "strings": [ "v" ] }, { "strings": [ "b" ] }, { "strings": [ "n", "ņ", "ñ", "ń", "ń" ] }, { "strings": [ "m" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "Q" ] }, { "strings": [ "W" ] }, { "strings": [ "E", "Ė", "Ę", "Ē", "È", "É", "Ê", "Ë", "Ě" ] }, { "strings": [ "R", "Ŗ", "Ř", "Ŕ" ] }, { "strings": [ "T", "Ţ", "Ť" ] }, { "strings": [ "Y", "Ý", "Ÿ" ] }, { "strings": [ "U", "Ū", "Ų", "Ü", "Ū", "Ù", "Ú", "Û", "Ů", "Ű" ] }, { "strings": [ "I", "Į", "Ī", "Ì", "Í", "Î", "Ï", "I" ] }, { "strings": [ "O", "Ö", "Õ", "Ò", "Ó", "Ô", "Œ", "Ő", "Ø" ] }, { "strings": [ "P" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "A", "Ą", "Ä", "Ā", "À", "Á", "Â", "Ã", "Å", "Æ" ] }, { "strings": [ "S", "Š", "ẞ", "Ś", "Ş" ] }, { "strings": [ "D", "Ď" ] }, { "strings": [ "F" ] }, { "strings": [ "G", "Ģ", "Ğ" ] }, { "strings": [ "H" ] }, { "strings": [ "J" ] }, { "strings": [ "K", "Ķ" ] }, { "strings": [ "L", "Ļ", "Ł", "Ĺ", "Ľ" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default" }, { "strings": [ "Z", "Ž", "Ż", "Ź" ] }, { "strings": [ "X" ] }, { "strings": [ "C", "Č", "Ç", "Ć" ] }, { "strings": [ "V" ] }, { "strings": [ "B" ] }, { "strings": [ "N", "Ņ", "Ñ", "Ń", "Ń" ] }, { "strings": [ "M" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "$", "¢", "£", "€", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "¢" ] }, { "strings": [ "€" ] }, { "strings": [ "¥" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "lt", "name": "Lithuanian" } 070701000000DF000081A40000000000000000000000016712993F00004C5A000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/osk-layouts/lv.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "q" ] }, { "strings": [ "w" ] }, { "strings": [ "e", "ē", "ė", "è", "é", "ê", "ë", "ę", "ě" ] }, { "strings": [ "r", "ŗ", "ř", "ŕ" ] }, { "strings": [ "t", "ţ", "ť" ] }, { "strings": [ "y", "ý", "ÿ" ] }, { "strings": [ "u", "ū", "ų", "ù", "ú", "û", "ü", "ů", "ű" ] }, { "strings": [ "i", "ī", "į", "ì", "í", "î", "ï", "ı" ] }, { "strings": [ "o", "ò", "ó", "ô", "õ", "ö", "œ", "ő", "ø" ] }, { "strings": [ "p" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "a", "ā", "à", "á", "â", "ã", "ä", "å", "æ", "ą" ] }, { "strings": [ "s", "š", "ß", "ś", "ş" ] }, { "strings": [ "d", "ď" ] }, { "strings": [ "f" ] }, { "strings": [ "g", "ģ", "ğ" ] }, { "strings": [ "h" ] }, { "strings": [ "j" ] }, { "strings": [ "k", "ķ" ] }, { "strings": [ "l", "ļ", "ł", "ĺ", "ľ" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift" }, { "strings": [ "z", "ž", "ż", "ź" ] }, { "strings": [ "x" ] }, { "strings": [ "c", "č", "ç", "ć" ] }, { "strings": [ "v" ] }, { "strings": [ "b" ] }, { "strings": [ "n", "ņ", "ñ", "ń", "ń" ] }, { "strings": [ "m" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "Q" ] }, { "strings": [ "W" ] }, { "strings": [ "E", "Ē", "Ė", "È", "É", "Ê", "Ë", "Ę", "Ě" ] }, { "strings": [ "R", "Ŗ", "Ř", "Ŕ" ] }, { "strings": [ "T", "Ţ", "Ť" ] }, { "strings": [ "Y", "Ý", "Ÿ" ] }, { "strings": [ "U", "Ū", "Ų", "Ù", "Ú", "Û", "Ü", "Ů", "Ű" ] }, { "strings": [ "I", "Ī", "Į", "Ì", "Í", "Î", "Ï", "I" ] }, { "strings": [ "O", "Ò", "Ó", "Ô", "Õ", "Ö", "Œ", "Ő", "Ø" ] }, { "strings": [ "P" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "A", "Ā", "À", "Á", "Â", "Ã", "Ä", "Å", "Æ", "Ą" ] }, { "strings": [ "S", "Š", "ẞ", "Ś", "Ş" ] }, { "strings": [ "D", "Ď" ] }, { "strings": [ "F" ] }, { "strings": [ "G", "Ģ", "Ğ" ] }, { "strings": [ "H" ] }, { "strings": [ "J" ] }, { "strings": [ "K", "Ķ" ] }, { "strings": [ "L", "Ļ", "Ł", "Ĺ", "Ľ" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default" }, { "strings": [ "Z", "Ž", "Ż", "Ź" ] }, { "strings": [ "X" ] }, { "strings": [ "C", "Č", "Ç", "Ć" ] }, { "strings": [ "V" ] }, { "strings": [ "B" ] }, { "strings": [ "N", "Ņ", "Ñ", "Ń", "Ń" ] }, { "strings": [ "M" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "$", "¢", "£", "€", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "¢" ] }, { "strings": [ "€" ] }, { "strings": [ "¥" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "lv", "name": "Latvian" } 070701000000E0000081A40000000000000000000000016712993F000044B5000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/osk-layouts/mk.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "љ" ] }, { "strings": [ "њ" ] }, { "strings": [ "е", "ѐ" ] }, { "strings": [ "р" ] }, { "strings": [ "т" ] }, { "strings": [ "ѕ" ] }, { "strings": [ "у" ] }, { "strings": [ "и", "ѝ" ] }, { "strings": [ "о" ] }, { "strings": [ "п" ] }, { "strings": [ "ш" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "strings": [ "а" ] }, { "strings": [ "с" ] }, { "strings": [ "д" ] }, { "strings": [ "ф" ] }, { "strings": [ "г" ] }, { "strings": [ "х" ] }, { "strings": [ "ј" ] }, { "strings": [ "к" ] }, { "strings": [ "л" ] }, { "strings": [ "ч" ] }, { "strings": [ "ќ" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 1.5 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 }, { "strings": [ "з" ] }, { "strings": [ "џ" ] }, { "strings": [ "ц" ] }, { "strings": [ "в" ] }, { "strings": [ "б" ] }, { "strings": [ "н" ] }, { "strings": [ "м" ] }, { "strings": [ "ѓ" ] }, { "strings": [ "ж" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "," ] }, { "strings": [ " " ], "width": 6 }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "Љ" ] }, { "strings": [ "Њ" ] }, { "strings": [ "Е", "Ѐ" ] }, { "strings": [ "Р" ] }, { "strings": [ "Т" ] }, { "strings": [ "Ѕ" ] }, { "strings": [ "У" ] }, { "strings": [ "И", "Ѝ" ] }, { "strings": [ "О" ] }, { "strings": [ "П" ] }, { "strings": [ "Ш" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "strings": [ "А" ] }, { "strings": [ "С" ] }, { "strings": [ "Д" ] }, { "strings": [ "Ф" ] }, { "strings": [ "Г" ] }, { "strings": [ "Х" ] }, { "strings": [ "Ј" ] }, { "strings": [ "К" ] }, { "strings": [ "Л" ] }, { "strings": [ "Ч" ] }, { "strings": [ "Ќ" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 1.5 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 }, { "strings": [ "З" ] }, { "strings": [ "Џ" ] }, { "strings": [ "Ц" ] }, { "strings": [ "В" ] }, { "strings": [ "Б" ] }, { "strings": [ "Н" ] }, { "strings": [ "М" ] }, { "strings": [ "Ѓ" ] }, { "strings": [ "Ж" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "," ] }, { "strings": [ " " ], "width": 6 }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "$", "¢", "£", "€", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "¢" ] }, { "strings": [ "€" ] }, { "strings": [ "¥" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "mk", "name": "Macedonian" } 070701000000E1000081A40000000000000000000000016712993F0000452C000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/osk-layouts/mn.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "ф" ] }, { "strings": [ "ц" ] }, { "strings": [ "у" ] }, { "strings": [ "ж" ] }, { "strings": [ "э" ] }, { "strings": [ "н" ] }, { "strings": [ "г" ] }, { "strings": [ "ш", "щ" ] }, { "strings": [ "ү" ] }, { "strings": [ "з" ] }, { "strings": [ "к" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "strings": [ "й" ] }, { "strings": [ "ы" ] }, { "strings": [ "б" ] }, { "strings": [ "ө" ] }, { "strings": [ "а" ] }, { "strings": [ "х" ] }, { "strings": [ "р" ] }, { "strings": [ "о" ] }, { "strings": [ "л" ] }, { "strings": [ "д" ] }, { "strings": [ "п" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 1.5 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 }, { "strings": [ "я" ] }, { "strings": [ "ч" ] }, { "strings": [ "ё", "е" ] }, { "strings": [ "с" ] }, { "strings": [ "м" ] }, { "strings": [ "и" ] }, { "strings": [ "т" ] }, { "strings": [ "ь", "ъ" ] }, { "strings": [ "в", "ю" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "," ] }, { "strings": [ " " ], "width": 6 }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "Ф" ] }, { "strings": [ "Ц" ] }, { "strings": [ "У" ] }, { "strings": [ "Ж" ] }, { "strings": [ "Э" ] }, { "strings": [ "Н" ] }, { "strings": [ "Г" ] }, { "strings": [ "Ш", "Щ" ] }, { "strings": [ "Ү" ] }, { "strings": [ "З" ] }, { "strings": [ "К" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "strings": [ "Й" ] }, { "strings": [ "Ы" ] }, { "strings": [ "Б" ] }, { "strings": [ "Ө" ] }, { "strings": [ "А" ] }, { "strings": [ "Х" ] }, { "strings": [ "Р" ] }, { "strings": [ "О" ] }, { "strings": [ "Л" ] }, { "strings": [ "Д" ] }, { "strings": [ "П" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 1.5 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 }, { "strings": [ "Я" ] }, { "strings": [ "Ч" ] }, { "strings": [ "Ё", "Е" ] }, { "strings": [ "С" ] }, { "strings": [ "М" ] }, { "strings": [ "И" ] }, { "strings": [ "Т" ] }, { "strings": [ "Ь", "Ъ" ] }, { "strings": [ "В", "Ю" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "," ] }, { "strings": [ " " ], "width": 6 }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "₮", "$", "¢", "€", "£", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "€" ] }, { "strings": [ "$", "¢" ] }, { "strings": [ "¢" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "mn", "name": "Mongolian" } 070701000000E2000081A40000000000000000000000016712993F00004190000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/osk-layouts/my.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "q" ] }, { "strings": [ "w" ] }, { "strings": [ "e" ] }, { "strings": [ "r" ] }, { "strings": [ "t" ] }, { "strings": [ "y" ] }, { "strings": [ "u" ] }, { "strings": [ "i" ] }, { "strings": [ "o" ] }, { "strings": [ "p" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "a" ] }, { "strings": [ "s" ] }, { "strings": [ "d" ] }, { "strings": [ "f" ] }, { "strings": [ "g" ] }, { "strings": [ "h" ] }, { "strings": [ "j" ] }, { "strings": [ "k" ] }, { "strings": [ "l" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift" }, { "strings": [ "z" ] }, { "strings": [ "x" ] }, { "strings": [ "c" ] }, { "strings": [ "v" ] }, { "strings": [ "b" ] }, { "strings": [ "n" ] }, { "strings": [ "m" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "Q" ] }, { "strings": [ "W" ] }, { "strings": [ "E" ] }, { "strings": [ "R" ] }, { "strings": [ "T" ] }, { "strings": [ "Y" ] }, { "strings": [ "U" ] }, { "strings": [ "I" ] }, { "strings": [ "O" ] }, { "strings": [ "P" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "A" ] }, { "strings": [ "S" ] }, { "strings": [ "D" ] }, { "strings": [ "F" ] }, { "strings": [ "G" ] }, { "strings": [ "H" ] }, { "strings": [ "J" ] }, { "strings": [ "K" ] }, { "strings": [ "L" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default" }, { "strings": [ "Z" ] }, { "strings": [ "X" ] }, { "strings": [ "C" ] }, { "strings": [ "V" ] }, { "strings": [ "B" ] }, { "strings": [ "N" ] }, { "strings": [ "M" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "$", "¢", "£", "€", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "¢" ] }, { "strings": [ "€" ] }, { "strings": [ "¥" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "ms", "name": "Malay" } 070701000000E3000081A40000000000000000000000016712993F00004792000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/osk-layouts/nl.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "q" ] }, { "strings": [ "w" ] }, { "strings": [ "e", "é", "ë", "ê", "è", "ę", "ė", "ē" ] }, { "strings": [ "r" ] }, { "strings": [ "t" ] }, { "strings": [ "y", "ij" ] }, { "strings": [ "u", "ú", "ü", "û", "ù", "ū" ] }, { "strings": [ "i", "í", "ï", "ì", "î", "į", "ī", "ij" ] }, { "strings": [ "o", "ó", "ö", "ô", "ò", "õ", "œ", "ø", "ō" ] }, { "strings": [ "p" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "a", "á", "ä", "â", "à", "æ", "ã", "å", "ā" ] }, { "strings": [ "s" ] }, { "strings": [ "d" ] }, { "strings": [ "f" ] }, { "strings": [ "g" ] }, { "strings": [ "h" ] }, { "strings": [ "j" ] }, { "strings": [ "k" ] }, { "strings": [ "l" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift" }, { "strings": [ "z" ] }, { "strings": [ "x" ] }, { "strings": [ "c" ] }, { "strings": [ "v" ] }, { "strings": [ "b" ] }, { "strings": [ "n", "ñ", "ń" ] }, { "strings": [ "m" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "Q" ] }, { "strings": [ "W" ] }, { "strings": [ "E", "É", "Ë", "Ê", "È", "Ę", "Ė", "Ē" ] }, { "strings": [ "R" ] }, { "strings": [ "T" ] }, { "strings": [ "Y", "IJ" ] }, { "strings": [ "U", "Ú", "Ü", "Û", "Ù", "Ū" ] }, { "strings": [ "I", "Í", "Ï", "Ì", "Î", "Į", "Ī", "IJ" ] }, { "strings": [ "O", "Ó", "Ö", "Ô", "Ò", "Õ", "Œ", "Ø", "Ō" ] }, { "strings": [ "P" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "A", "Á", "Ä", "Â", "À", "Æ", "Ã", "Å", "Ā" ] }, { "strings": [ "S" ] }, { "strings": [ "D" ] }, { "strings": [ "F" ] }, { "strings": [ "G" ] }, { "strings": [ "H" ] }, { "strings": [ "J" ] }, { "strings": [ "K" ] }, { "strings": [ "L" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default" }, { "strings": [ "Z" ] }, { "strings": [ "X" ] }, { "strings": [ "C" ] }, { "strings": [ "V" ] }, { "strings": [ "B" ] }, { "strings": [ "N", "Ñ", "Ń" ] }, { "strings": [ "M" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "€", "¢", "£", "$", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "¥" ] }, { "strings": [ "$", "¢" ] }, { "strings": [ "¢" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "nl", "name": "Dutch" } 070701000000E4000081A40000000000000000000000016712993F00004897000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/osk-layouts/no.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "q" ] }, { "strings": [ "w" ] }, { "strings": [ "e", "é", "ë" ] }, { "strings": [ "r" ] }, { "strings": [ "t" ] }, { "strings": [ "y", "ý", "ÿ" ] }, { "strings": [ "u", "ú", "ü", "û", "ù", "ū" ] }, { "strings": [ "i", "í", "ï" ] }, { "strings": [ "o", "ó", "ô", "ò", "õ", "œ", "ō" ] }, { "strings": [ "p" ] }, { "strings": [ "å" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "strings": [ "a", "á", "ä", "à", "â", "ã", "ā" ] }, { "strings": [ "s", "ß", "ś", "š" ] }, { "strings": [ "d", "ð" ] }, { "strings": [ "f" ] }, { "strings": [ "g" ] }, { "strings": [ "h" ] }, { "strings": [ "j" ] }, { "strings": [ "k" ] }, { "strings": [ "l", "ł" ] }, { "strings": [ "ø", "ö" ] }, { "strings": [ "æ", "ä" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 1.5 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 }, { "strings": [ "z" ] }, { "strings": [ "x" ] }, { "strings": [ "c" ] }, { "strings": [ "v" ] }, { "strings": [ "b" ] }, { "strings": [ "n", "ñ", "ń" ] }, { "strings": [ "m" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 6 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "Q" ] }, { "strings": [ "W" ] }, { "strings": [ "E", "É", "Ë" ] }, { "strings": [ "R" ] }, { "strings": [ "T" ] }, { "strings": [ "Y", "Ý", "Ÿ" ] }, { "strings": [ "U", "Ú", "Ü", "Û", "Ù", "Ū" ] }, { "strings": [ "I", "Í", "Ï" ] }, { "strings": [ "O", "Ó", "Ô", "Ò", "Õ", "Œ", "Ō" ] }, { "strings": [ "P" ] }, { "strings": [ "Å" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "strings": [ "A", "Á", "Ä", "À", "Â", "Ã", "Ā" ] }, { "strings": [ "S", "ẞ", "Ś", "Š" ] }, { "strings": [ "D", "Ð" ] }, { "strings": [ "F" ] }, { "strings": [ "G" ] }, { "strings": [ "H" ] }, { "strings": [ "J" ] }, { "strings": [ "K" ] }, { "strings": [ "L", "Ł" ] }, { "strings": [ "Ø", "Ö" ] }, { "strings": [ "Æ", "Ä" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 1.5 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 }, { "strings": [ "Z" ] }, { "strings": [ "X" ] }, { "strings": [ "C" ] }, { "strings": [ "V" ] }, { "strings": [ "B" ] }, { "strings": [ "N", "Ñ", "Ń" ] }, { "strings": [ "M" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 6 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "€", "¢", "£", "$", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "¥" ] }, { "strings": [ "$", "¢" ] }, { "strings": [ "¢" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "nb", "name": "Norwegian Bokmål" } 070701000000E5000081A40000000000000000000000016712993F0000063E000000000000000000000000000000000000002E00000000gnome-shell-47.1/data/osk-layouts/number.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "7" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "action": "delete", "iconName": "edit-clear-symbolic" } ], [ { "strings": [ "4" ] }, { "strings": [ "5" ] }, { "strings": [ "6" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "height": 2 } ], [ { "strings": [ "1" ] }, { "strings": [ "2" ] }, { "strings": [ "3" ] } ], [ { "strings": [ "-", "+", "E" ] }, { "strings": [ "0" ] }, { "strings": [ ".", "," ] }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "name": "Numeric Keyboard" } 070701000000E6000081A40000000000000000000000016712993F00004194000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/osk-layouts/ph.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "q" ] }, { "strings": [ "w" ] }, { "strings": [ "e" ] }, { "strings": [ "r" ] }, { "strings": [ "t" ] }, { "strings": [ "y" ] }, { "strings": [ "u" ] }, { "strings": [ "i" ] }, { "strings": [ "o" ] }, { "strings": [ "p" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "a" ] }, { "strings": [ "s" ] }, { "strings": [ "d" ] }, { "strings": [ "f" ] }, { "strings": [ "g" ] }, { "strings": [ "h" ] }, { "strings": [ "j" ] }, { "strings": [ "k" ] }, { "strings": [ "l" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift" }, { "strings": [ "z" ] }, { "strings": [ "x" ] }, { "strings": [ "c" ] }, { "strings": [ "v" ] }, { "strings": [ "b" ] }, { "strings": [ "n" ] }, { "strings": [ "m" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "Q" ] }, { "strings": [ "W" ] }, { "strings": [ "E" ] }, { "strings": [ "R" ] }, { "strings": [ "T" ] }, { "strings": [ "Y" ] }, { "strings": [ "U" ] }, { "strings": [ "I" ] }, { "strings": [ "O" ] }, { "strings": [ "P" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "A" ] }, { "strings": [ "S" ] }, { "strings": [ "D" ] }, { "strings": [ "F" ] }, { "strings": [ "G" ] }, { "strings": [ "H" ] }, { "strings": [ "J" ] }, { "strings": [ "K" ] }, { "strings": [ "L" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default" }, { "strings": [ "Z" ] }, { "strings": [ "X" ] }, { "strings": [ "C" ] }, { "strings": [ "V" ] }, { "strings": [ "B" ] }, { "strings": [ "N" ] }, { "strings": [ "M" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "$", "¢", "£", "€", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "¢" ] }, { "strings": [ "€" ] }, { "strings": [ "¥" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "fil", "name": "Filipino" } 070701000000E7000081A40000000000000000000000016712993F0000060D000000000000000000000000000000000000002D00000000gnome-shell-47.1/data/osk-layouts/phone.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "7" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "action": "delete", "iconName": "edit-clear-symbolic" } ], [ { "strings": [ "4" ] }, { "strings": [ "5" ] }, { "strings": [ "6" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "height": 2 } ], [ { "strings": [ "1" ] }, { "strings": [ "2" ] }, { "strings": [ "3" ] } ], [ { "strings": [ "*" ] }, { "strings": [ "0", "+" ] }, { "strings": [ "#" ] }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "name": "Phone" } 070701000000E8000081A40000000000000000000000016712993F00004732000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/osk-layouts/pl.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "q" ] }, { "strings": [ "w" ] }, { "strings": [ "e", "ę", "è", "é", "ê", "ë", "ė", "ē" ] }, { "strings": [ "r" ] }, { "strings": [ "t" ] }, { "strings": [ "y" ] }, { "strings": [ "u" ] }, { "strings": [ "i" ] }, { "strings": [ "o", "ó", "ö", "ô", "ò", "õ", "œ", "ø", "ō" ] }, { "strings": [ "p" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "a", "ą", "á", "à", "â", "ä", "æ", "ã", "å", "ā" ] }, { "strings": [ "s", "ś", "ß", "š" ] }, { "strings": [ "d" ] }, { "strings": [ "f" ] }, { "strings": [ "g" ] }, { "strings": [ "h" ] }, { "strings": [ "j" ] }, { "strings": [ "k" ] }, { "strings": [ "l", "ł" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift" }, { "strings": [ "z", "ż", "ź", "ž" ] }, { "strings": [ "x" ] }, { "strings": [ "c", "ć", "ç", "č" ] }, { "strings": [ "v" ] }, { "strings": [ "b" ] }, { "strings": [ "n", "ń", "ñ" ] }, { "strings": [ "m" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "Q" ] }, { "strings": [ "W" ] }, { "strings": [ "E", "Ę", "È", "É", "Ê", "Ë", "Ė", "Ē" ] }, { "strings": [ "R" ] }, { "strings": [ "T" ] }, { "strings": [ "Y" ] }, { "strings": [ "U" ] }, { "strings": [ "I" ] }, { "strings": [ "O", "Ó", "Ö", "Ô", "Ò", "Õ", "Œ", "Ø", "Ō" ] }, { "strings": [ "P" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "A", "Ą", "Á", "À", "Â", "Ä", "Æ", "Ã", "Å", "Ā" ] }, { "strings": [ "S", "Ś", "ẞ", "Š" ] }, { "strings": [ "D" ] }, { "strings": [ "F" ] }, { "strings": [ "G" ] }, { "strings": [ "H" ] }, { "strings": [ "J" ] }, { "strings": [ "K" ] }, { "strings": [ "L", "Ł" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default" }, { "strings": [ "Z", "Ż", "Ź", "Ž" ] }, { "strings": [ "X" ] }, { "strings": [ "C", "Ć", "Ç", "Č" ] }, { "strings": [ "V" ] }, { "strings": [ "B" ] }, { "strings": [ "N", "Ń", "Ñ" ] }, { "strings": [ "M" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "$", "¢", "£", "€", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "¢" ] }, { "strings": [ "€" ] }, { "strings": [ "¥" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "pl", "name": "Polish" } 070701000000E9000081A40000000000000000000000016712993F000047A3000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/osk-layouts/pt.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "q" ] }, { "strings": [ "w" ] }, { "strings": [ "e", "é", "ê", "è", "ę", "ė", "ē", "ë" ] }, { "strings": [ "r" ] }, { "strings": [ "t" ] }, { "strings": [ "y" ] }, { "strings": [ "u", "ú", "ü", "ù", "û", "ū" ] }, { "strings": [ "i", "í", "î", "ì", "ï", "į", "ī" ] }, { "strings": [ "o", "ó", "õ", "ô", "ò", "ö", "œ", "ø", "ō", "º" ] }, { "strings": [ "p" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "a", "á", "ã", "à", "â", "ä", "å", "æ", "ª" ] }, { "strings": [ "s" ] }, { "strings": [ "d" ] }, { "strings": [ "f" ] }, { "strings": [ "g" ] }, { "strings": [ "h" ] }, { "strings": [ "j" ] }, { "strings": [ "k" ] }, { "strings": [ "l" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift" }, { "strings": [ "z" ] }, { "strings": [ "x" ] }, { "strings": [ "c", "ç", "č", "ć" ] }, { "strings": [ "v" ] }, { "strings": [ "b" ] }, { "strings": [ "n" ] }, { "strings": [ "m" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "Q" ] }, { "strings": [ "W" ] }, { "strings": [ "E", "É", "Ê", "È", "Ę", "Ė", "Ē", "Ë" ] }, { "strings": [ "R" ] }, { "strings": [ "T" ] }, { "strings": [ "Y" ] }, { "strings": [ "U", "Ú", "Ü", "Ù", "Û", "Ū" ] }, { "strings": [ "I", "Í", "Î", "Ì", "Ï", "Į", "Ī" ] }, { "strings": [ "O", "Ó", "Õ", "Ô", "Ò", "Ö", "Œ", "Ø", "Ō", "º" ] }, { "strings": [ "P" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "A", "Á", "Ã", "À", "Â", "Ä", "Å", "Æ", "ª" ] }, { "strings": [ "S" ] }, { "strings": [ "D" ] }, { "strings": [ "F" ] }, { "strings": [ "G" ] }, { "strings": [ "H" ] }, { "strings": [ "J" ] }, { "strings": [ "K" ] }, { "strings": [ "L" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default" }, { "strings": [ "Z" ] }, { "strings": [ "X" ] }, { "strings": [ "C", "Ç", "Č", "Ć" ] }, { "strings": [ "V" ] }, { "strings": [ "B" ] }, { "strings": [ "N" ] }, { "strings": [ "M" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "€", "¢", "£", "$", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "¥" ] }, { "strings": [ "$", "¢" ] }, { "strings": [ "¢" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "pt-PT", "name": "Portuguese Portugal" } 070701000000EA000081A40000000000000000000000016712993F000044B4000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/osk-layouts/ro.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "q" ] }, { "strings": [ "w" ] }, { "strings": [ "e" ] }, { "strings": [ "r" ] }, { "strings": [ "t", "ț" ] }, { "strings": [ "y" ] }, { "strings": [ "u" ] }, { "strings": [ "i", "î", "ï", "ì", "í", "į", "ī" ] }, { "strings": [ "o" ] }, { "strings": [ "p" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "a", "â", "ã", "ă", "à", "á", "ä", "æ", "å", "ā" ] }, { "strings": [ "s", "ș", "ß", "ś", "š" ] }, { "strings": [ "d" ] }, { "strings": [ "f" ] }, { "strings": [ "g" ] }, { "strings": [ "h" ] }, { "strings": [ "j" ] }, { "strings": [ "k" ] }, { "strings": [ "l" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift" }, { "strings": [ "z" ] }, { "strings": [ "x" ] }, { "strings": [ "c" ] }, { "strings": [ "v" ] }, { "strings": [ "b" ] }, { "strings": [ "n" ] }, { "strings": [ "m" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "Q" ] }, { "strings": [ "W" ] }, { "strings": [ "E" ] }, { "strings": [ "R" ] }, { "strings": [ "T", "Ț" ] }, { "strings": [ "Y" ] }, { "strings": [ "U" ] }, { "strings": [ "I", "Î", "Ï", "Ì", "Í", "Į", "Ī" ] }, { "strings": [ "O" ] }, { "strings": [ "P" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "A", "Â", "Ã", "Ă", "À", "Á", "Ä", "Æ", "Å", "Ā" ] }, { "strings": [ "S", "Ș", "ẞ", "Ś", "Š" ] }, { "strings": [ "D" ] }, { "strings": [ "F" ] }, { "strings": [ "G" ] }, { "strings": [ "H" ] }, { "strings": [ "J" ] }, { "strings": [ "K" ] }, { "strings": [ "L" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default" }, { "strings": [ "Z" ] }, { "strings": [ "X" ] }, { "strings": [ "C" ] }, { "strings": [ "V" ] }, { "strings": [ "B" ] }, { "strings": [ "N" ] }, { "strings": [ "M" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "$", "¢", "£", "€", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "¢" ] }, { "strings": [ "€" ] }, { "strings": [ "¥" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "ro", "name": "Romanian" } 070701000000EB000081A40000000000000000000000016712993F000044B2000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/osk-layouts/rs.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "љ" ] }, { "strings": [ "њ" ] }, { "strings": [ "е", "ѐ" ] }, { "strings": [ "р" ] }, { "strings": [ "т" ] }, { "strings": [ "з" ] }, { "strings": [ "у" ] }, { "strings": [ "и", "ѝ" ] }, { "strings": [ "о" ] }, { "strings": [ "п" ] }, { "strings": [ "ш" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "strings": [ "а" ] }, { "strings": [ "с" ] }, { "strings": [ "д" ] }, { "strings": [ "ф" ] }, { "strings": [ "г" ] }, { "strings": [ "х" ] }, { "strings": [ "ј" ] }, { "strings": [ "к" ] }, { "strings": [ "л" ] }, { "strings": [ "ч" ] }, { "strings": [ "ћ" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 1.5 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 }, { "strings": [ "ѕ" ] }, { "strings": [ "џ" ] }, { "strings": [ "ц" ] }, { "strings": [ "в" ] }, { "strings": [ "б" ] }, { "strings": [ "н" ] }, { "strings": [ "м" ] }, { "strings": [ "ђ" ] }, { "strings": [ "ж" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "," ] }, { "strings": [ " " ], "width": 6 }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "Љ" ] }, { "strings": [ "Њ" ] }, { "strings": [ "Е", "Ѐ" ] }, { "strings": [ "Р" ] }, { "strings": [ "Т" ] }, { "strings": [ "З" ] }, { "strings": [ "У" ] }, { "strings": [ "И", "Ѝ" ] }, { "strings": [ "О" ] }, { "strings": [ "П" ] }, { "strings": [ "Ш" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "strings": [ "А" ] }, { "strings": [ "С" ] }, { "strings": [ "Д" ] }, { "strings": [ "Ф" ] }, { "strings": [ "Г" ] }, { "strings": [ "Х" ] }, { "strings": [ "Ј" ] }, { "strings": [ "К" ] }, { "strings": [ "Л" ] }, { "strings": [ "Ч" ] }, { "strings": [ "Ћ" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 1.5 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 }, { "strings": [ "Ѕ" ] }, { "strings": [ "Џ" ] }, { "strings": [ "Ц" ] }, { "strings": [ "В" ] }, { "strings": [ "Б" ] }, { "strings": [ "Н" ] }, { "strings": [ "М" ] }, { "strings": [ "Ђ" ] }, { "strings": [ "Ж" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "," ] }, { "strings": [ " " ], "width": 6 }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "$", "¢", "£", "€", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "¢" ] }, { "strings": [ "€" ] }, { "strings": [ "¥" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "sr", "name": "Serbian" } 070701000000EC000081A40000000000000000000000016712993F000044B2000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/osk-layouts/ru.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "й" ] }, { "strings": [ "ц" ] }, { "strings": [ "у" ] }, { "strings": [ "к" ] }, { "strings": [ "е", "ё" ] }, { "strings": [ "н" ] }, { "strings": [ "г" ] }, { "strings": [ "ш" ] }, { "strings": [ "щ" ] }, { "strings": [ "з" ] }, { "strings": [ "х" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "strings": [ "ф" ] }, { "strings": [ "ы" ] }, { "strings": [ "в" ] }, { "strings": [ "а" ] }, { "strings": [ "п" ] }, { "strings": [ "р" ] }, { "strings": [ "о" ] }, { "strings": [ "л" ] }, { "strings": [ "д" ] }, { "strings": [ "ж" ] }, { "strings": [ "э" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 1.5 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 }, { "strings": [ "я" ] }, { "strings": [ "ч" ] }, { "strings": [ "с" ] }, { "strings": [ "м" ] }, { "strings": [ "и" ] }, { "strings": [ "т" ] }, { "strings": [ "ь", "ъ" ] }, { "strings": [ "б" ] }, { "strings": [ "ю" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "," ] }, { "strings": [ " " ], "width": 6 }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "Й" ] }, { "strings": [ "Ц" ] }, { "strings": [ "У" ] }, { "strings": [ "К" ] }, { "strings": [ "Е", "Ё" ] }, { "strings": [ "Н" ] }, { "strings": [ "Г" ] }, { "strings": [ "Ш" ] }, { "strings": [ "Щ" ] }, { "strings": [ "З" ] }, { "strings": [ "Х" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "strings": [ "Ф" ] }, { "strings": [ "Ы" ] }, { "strings": [ "В" ] }, { "strings": [ "А" ] }, { "strings": [ "П" ] }, { "strings": [ "Р" ] }, { "strings": [ "О" ] }, { "strings": [ "Л" ] }, { "strings": [ "Д" ] }, { "strings": [ "Ж" ] }, { "strings": [ "Э" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 1.5 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 }, { "strings": [ "Я" ] }, { "strings": [ "Ч" ] }, { "strings": [ "С" ] }, { "strings": [ "М" ] }, { "strings": [ "И" ] }, { "strings": [ "Т" ] }, { "strings": [ "Ь", "Ъ" ] }, { "strings": [ "Б" ] }, { "strings": [ "Ю" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "," ] }, { "strings": [ " " ], "width": 6 }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "$", "¢", "£", "€", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "¢" ] }, { "strings": [ "€" ] }, { "strings": [ "¥" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "ru", "name": "Russian" } 070701000000ED000081A40000000000000000000000016712993F00004B35000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/osk-layouts/se.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "q" ] }, { "strings": [ "w" ] }, { "strings": [ "e", "é", "è", "ê", "ë", "ę" ] }, { "strings": [ "r", "ř" ] }, { "strings": [ "t", "ť", "þ" ] }, { "strings": [ "y", "ý", "ÿ", "ü" ] }, { "strings": [ "u", "ü", "ú", "ù", "û", "ū" ] }, { "strings": [ "i", "í", "ì", "î", "ï" ] }, { "strings": [ "o", "ó", "ò", "ô", "õ", "ō" ] }, { "strings": [ "p" ] }, { "strings": [ "å" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "strings": [ "a", "á", "à", "â", "ą", "ã" ] }, { "strings": [ "s", "ś", "š", "ş", "ß" ] }, { "strings": [ "d", "ð", "ď" ] }, { "strings": [ "f" ] }, { "strings": [ "g" ] }, { "strings": [ "h" ] }, { "strings": [ "j" ] }, { "strings": [ "k" ] }, { "strings": [ "l", "ł" ] }, { "strings": [ "ö", "ø", "œ" ] }, { "strings": [ "ä", "æ" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 1.5 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 }, { "strings": [ "z", "ź", "ž", "ż" ] }, { "strings": [ "x" ] }, { "strings": [ "c", "ç", "ć", "č" ] }, { "strings": [ "v" ] }, { "strings": [ "b" ] }, { "strings": [ "n", "ń", "ñ", "ň" ] }, { "strings": [ "m" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 6 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "Q" ] }, { "strings": [ "W" ] }, { "strings": [ "E", "É", "È", "Ê", "Ë", "Ę" ] }, { "strings": [ "R", "Ř" ] }, { "strings": [ "T", "Ť", "Þ" ] }, { "strings": [ "Y", "Ý", "Ÿ", "Ü" ] }, { "strings": [ "U", "Ü", "Ú", "Ù", "Û", "Ū" ] }, { "strings": [ "I", "Í", "Ì", "Î", "Ï" ] }, { "strings": [ "O", "Ó", "Ò", "Ô", "Õ", "Ō" ] }, { "strings": [ "P" ] }, { "strings": [ "Å" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "strings": [ "A", "Á", "À", "Â", "Ą", "Ã" ] }, { "strings": [ "S", "Ś", "Š", "Ş", "ẞ" ] }, { "strings": [ "D", "Ð", "Ď" ] }, { "strings": [ "F" ] }, { "strings": [ "G" ] }, { "strings": [ "H" ] }, { "strings": [ "J" ] }, { "strings": [ "K" ] }, { "strings": [ "L", "Ł" ] }, { "strings": [ "Ö", "Ø", "Œ" ] }, { "strings": [ "Ä", "Æ" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 1.5 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 }, { "strings": [ "Z", "Ź", "Ž", "Ż" ] }, { "strings": [ "X" ] }, { "strings": [ "C", "Ç", "Ć", "Č" ] }, { "strings": [ "V" ] }, { "strings": [ "B" ] }, { "strings": [ "N", "Ń", "Ñ", "Ň" ] }, { "strings": [ "M" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 6 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "€", "¢", "£", "$", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "¥" ] }, { "strings": [ "$", "¢" ] }, { "strings": [ "¢" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "sv", "name": "Swedish" } 070701000000EE000081A40000000000000000000000016712993F0000426E000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/osk-layouts/si.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "q" ] }, { "strings": [ "w" ] }, { "strings": [ "e" ] }, { "strings": [ "r" ] }, { "strings": [ "t" ] }, { "strings": [ "y" ] }, { "strings": [ "u" ] }, { "strings": [ "i" ] }, { "strings": [ "o" ] }, { "strings": [ "p" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "a" ] }, { "strings": [ "s", "š" ] }, { "strings": [ "d", "đ" ] }, { "strings": [ "f" ] }, { "strings": [ "g" ] }, { "strings": [ "h" ] }, { "strings": [ "j" ] }, { "strings": [ "k" ] }, { "strings": [ "l" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift" }, { "strings": [ "z", "ž" ] }, { "strings": [ "x" ] }, { "strings": [ "c", "č", "ć" ] }, { "strings": [ "v" ] }, { "strings": [ "b" ] }, { "strings": [ "n" ] }, { "strings": [ "m" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "Q" ] }, { "strings": [ "W" ] }, { "strings": [ "E" ] }, { "strings": [ "R" ] }, { "strings": [ "T" ] }, { "strings": [ "Y" ] }, { "strings": [ "U" ] }, { "strings": [ "I" ] }, { "strings": [ "O" ] }, { "strings": [ "P" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "A" ] }, { "strings": [ "S", "Š" ] }, { "strings": [ "D", "Đ" ] }, { "strings": [ "F" ] }, { "strings": [ "G" ] }, { "strings": [ "H" ] }, { "strings": [ "J" ] }, { "strings": [ "K" ] }, { "strings": [ "L" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default" }, { "strings": [ "Z", "Ž" ] }, { "strings": [ "X" ] }, { "strings": [ "C", "Č", "Ć" ] }, { "strings": [ "V" ] }, { "strings": [ "B" ] }, { "strings": [ "N" ] }, { "strings": [ "M" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "€", "¢", "£", "$", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "¥" ] }, { "strings": [ "$", "¢" ] }, { "strings": [ "¢" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "sl", "name": "Slovenian" } 070701000000EF000081A40000000000000000000000016712993F00004C93000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/osk-layouts/sk.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "q" ] }, { "strings": [ "w" ] }, { "strings": [ "e", "é", "ě", "ē", "ė", "è", "ê", "ë", "ę" ] }, { "strings": [ "r", "ŕ", "ř", "ŗ" ] }, { "strings": [ "t", "ť", "ţ" ] }, { "strings": [ "y", "ý", "ÿ" ] }, { "strings": [ "u", "ú", "ů", "ü", "ū", "ų", "ù", "û", "ű" ] }, { "strings": [ "i", "í", "ī", "į", "ì", "î", "ï", "ı" ] }, { "strings": [ "o", "ô", "ó", "ö", "ò", "õ", "œ", "ő", "ø" ] }, { "strings": [ "p" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "a", "á", "ä", "ā", "à", "â", "ã", "å", "æ", "ą" ] }, { "strings": [ "s", "š", "ß", "ś", "ş" ] }, { "strings": [ "d", "ď" ] }, { "strings": [ "f" ] }, { "strings": [ "g", "ģ", "ğ" ] }, { "strings": [ "h" ] }, { "strings": [ "j" ] }, { "strings": [ "k", "ķ" ] }, { "strings": [ "l", "ľ", "ĺ", "ļ", "ł" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift" }, { "strings": [ "z", "ž", "ż", "ź" ] }, { "strings": [ "x" ] }, { "strings": [ "c", "č", "ç", "ć" ] }, { "strings": [ "v" ] }, { "strings": [ "b" ] }, { "strings": [ "n", "ň", "ņ", "ñ", "ń", "ń" ] }, { "strings": [ "m" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "Q" ] }, { "strings": [ "W" ] }, { "strings": [ "E", "É", "Ě", "Ē", "Ė", "È", "Ê", "Ë", "Ę" ] }, { "strings": [ "R", "Ŕ", "Ř", "Ŗ" ] }, { "strings": [ "T", "Ť", "Ţ" ] }, { "strings": [ "Y", "Ý", "Ÿ" ] }, { "strings": [ "U", "Ú", "Ů", "Ü", "Ū", "Ų", "Ù", "Û", "Ű" ] }, { "strings": [ "I", "Í", "Ī", "Į", "Ì", "Î", "Ï", "I" ] }, { "strings": [ "O", "Ô", "Ó", "Ö", "Ò", "Õ", "Œ", "Ő", "Ø" ] }, { "strings": [ "P" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "A", "Á", "Ä", "Ā", "À", "Â", "Ã", "Å", "Æ", "Ą" ] }, { "strings": [ "S", "Š", "ẞ", "Ś", "Ş" ] }, { "strings": [ "D", "Ď" ] }, { "strings": [ "F" ] }, { "strings": [ "G", "Ģ", "Ğ" ] }, { "strings": [ "H" ] }, { "strings": [ "J" ] }, { "strings": [ "K", "Ķ" ] }, { "strings": [ "L", "Ľ", "Ĺ", "Ļ", "Ł" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default" }, { "strings": [ "Z", "Ž", "Ż", "Ź" ] }, { "strings": [ "X" ] }, { "strings": [ "C", "Č", "Ç", "Ć" ] }, { "strings": [ "V" ] }, { "strings": [ "B" ] }, { "strings": [ "N", "Ň", "Ņ", "Ñ", "Ń", "Ń" ] }, { "strings": [ "M" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "€", "¢", "£", "$", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "¥" ] }, { "strings": [ "$", "¢" ] }, { "strings": [ "¢" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "sk", "name": "Slovak" } 070701000000F0000081A40000000000000000000000016712993F0000506E000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/osk-layouts/th.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "ๅ" ] }, { "strings": [ "/", "๑" ] }, { "strings": [ "_", "๒" ] }, { "strings": [ "ภ", "๓" ] }, { "strings": [ "ถ", "๔" ] }, { "strings": [ "ุ" ] }, { "strings": [ "ึ" ] }, { "strings": [ "ค", "๕" ] }, { "strings": [ "ต", "๖" ] }, { "strings": [ "จ", "๗" ] }, { "strings": [ "ข", "๘" ] }, { "strings": [ "ช", "๙" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "strings": [ "ๆ", "๐" ] }, { "strings": [ "ไ" ] }, { "strings": [ "ำ" ] }, { "strings": [ "พ" ] }, { "strings": [ "ะ" ] }, { "strings": [ "ั" ] }, { "strings": [ "ี" ] }, { "strings": [ "ร" ] }, { "strings": [ "น" ] }, { "strings": [ "ย" ] }, { "strings": [ "บ" ] }, { "strings": [ "ล" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "ฟ" ] }, { "strings": [ "ห" ] }, { "strings": [ "ก" ] }, { "strings": [ "ด" ] }, { "strings": [ "เ" ] }, { "strings": [ "้" ] }, { "strings": [ "่" ] }, { "strings": [ "า" ] }, { "strings": [ "ส" ] }, { "strings": [ "ว" ] }, { "strings": [ "ง" ] }, { "strings": [ "ฃ" ] } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 }, { "strings": [ "ผ" ] }, { "strings": [ "ป" ] }, { "strings": [ "แ" ] }, { "strings": [ "อ" ] }, { "strings": [ "ิ" ] }, { "strings": [ "ื" ] }, { "strings": [ "ท" ] }, { "strings": [ "ม" ] }, { "strings": [ "ใ" ] }, { "strings": [ "ฝ" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "," ] }, { "strings": [ " " ], "width": 7 }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@", " ๎", "๏", "๛", "๚" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "+" ] }, { "strings": [ "๑" ] }, { "strings": [ "๒" ] }, { "strings": [ "๓" ] }, { "strings": [ "๔" ] }, { "strings": [ "ู" ] }, { "strings": [ "฿" ] }, { "strings": [ "๕" ] }, { "strings": [ "๖" ] }, { "strings": [ "๗" ] }, { "strings": [ "๘" ] }, { "strings": [ "๙" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "strings": [ "๐" ] }, { "strings": [ "\"" ] }, { "strings": [ "ฎ" ] }, { "strings": [ "ฑ" ] }, { "strings": [ "ธ" ] }, { "strings": [ "ํ" ] }, { "strings": [ "๊" ] }, { "strings": [ "ณ" ] }, { "strings": [ "ฯ" ] }, { "strings": [ "ญ" ] }, { "strings": [ "ฐ" ] }, { "strings": [ "," ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "ฤ" ] }, { "strings": [ "ฆ" ] }, { "strings": [ "ฏ" ] }, { "strings": [ "โ" ] }, { "strings": [ "ฌ" ] }, { "strings": [ "็" ] }, { "strings": [ "๋" ] }, { "strings": [ "ษ" ] }, { "strings": [ "ศ" ] }, { "strings": [ "ซ" ] }, { "strings": [ "." ] }, { "strings": [ "ฅ" ] } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 }, { "strings": [ "(" ] }, { "strings": [ ")" ] }, { "strings": [ "ฉ" ] }, { "strings": [ "ฮ" ] }, { "strings": [ "ฺ" ] }, { "strings": [ "์" ] }, { "strings": [ "?" ] }, { "strings": [ "ฒ" ] }, { "strings": [ "ฬ" ] }, { "strings": [ "ฦ" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "," ] }, { "strings": [ " " ], "width": 7 }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@", " ๎", "๏", "๛", "๚" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "฿", "$", "¢", "€", "£", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "€" ] }, { "strings": [ "$", "¢" ] }, { "strings": [ "¢" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "th", "name": "Thai" } 070701000000F1000081A40000000000000000000000016712993F0000462D000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/osk-layouts/tr.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "q" ] }, { "strings": [ "w" ] }, { "strings": [ "e" ] }, { "strings": [ "r" ] }, { "strings": [ "t" ] }, { "strings": [ "y" ] }, { "strings": [ "u", "ü", "û", "ù", "ú", "ū" ] }, { "strings": [ "i", "ı", "î", "ï", "ì", "í", "į", "ī" ] }, { "strings": [ "o", "ö", "ô", "œ", "ò", "ó", "õ", "ø", "ō" ] }, { "strings": [ "p" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "a", "â" ] }, { "strings": [ "s", "ş", "ß", "ś", "š" ] }, { "strings": [ "d" ] }, { "strings": [ "f" ] }, { "strings": [ "g", "ğ" ] }, { "strings": [ "h" ] }, { "strings": [ "j" ] }, { "strings": [ "k" ] }, { "strings": [ "l" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift" }, { "strings": [ "z" ] }, { "strings": [ "x" ] }, { "strings": [ "c", "ç", "ć", "č" ] }, { "strings": [ "v" ] }, { "strings": [ "b" ] }, { "strings": [ "n" ] }, { "strings": [ "m" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "Q" ] }, { "strings": [ "W" ] }, { "strings": [ "E" ] }, { "strings": [ "R" ] }, { "strings": [ "T" ] }, { "strings": [ "Y" ] }, { "strings": [ "U", "Ü", "Û", "Ù", "Ú", "Ū" ] }, { "strings": [ "İ", "I", "Î", "Ï", "Ì", "Í", "Į", "Ī" ] }, { "strings": [ "O", "Ö", "Ô", "Œ", "Ò", "Ó", "Õ", "Ø", "Ō" ] }, { "strings": [ "P" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "A", "Â" ] }, { "strings": [ "S", "Ş", "ẞ", "Ś", "Š" ] }, { "strings": [ "D" ] }, { "strings": [ "F" ] }, { "strings": [ "G", "Ğ" ] }, { "strings": [ "H" ] }, { "strings": [ "J" ] }, { "strings": [ "K" ] }, { "strings": [ "L" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default" }, { "strings": [ "Z" ] }, { "strings": [ "X" ] }, { "strings": [ "C", "Ç", "Ć", "Č" ] }, { "strings": [ "V" ] }, { "strings": [ "B" ] }, { "strings": [ "N" ] }, { "strings": [ "M" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "€", "¢", "£", "$", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "¥" ] }, { "strings": [ "$", "¢" ] }, { "strings": [ "¢" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "tr", "name": "Turkish" } 070701000000F2000081A40000000000000000000000016712993F00004504000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/osk-layouts/ua.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "й" ] }, { "strings": [ "ц" ] }, { "strings": [ "у" ] }, { "strings": [ "к" ] }, { "strings": [ "е" ] }, { "strings": [ "н" ] }, { "strings": [ "г", "ґ" ] }, { "strings": [ "ш" ] }, { "strings": [ "щ" ] }, { "strings": [ "з" ] }, { "strings": [ "х" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "strings": [ "ф" ] }, { "strings": [ "і", "ї" ] }, { "strings": [ "в" ] }, { "strings": [ "а" ] }, { "strings": [ "п" ] }, { "strings": [ "р" ] }, { "strings": [ "о" ] }, { "strings": [ "л" ] }, { "strings": [ "д" ] }, { "strings": [ "ж" ] }, { "strings": [ "є" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 1.5 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 }, { "strings": [ "я" ] }, { "strings": [ "ч" ] }, { "strings": [ "с" ] }, { "strings": [ "м" ] }, { "strings": [ "и" ] }, { "strings": [ "т" ] }, { "strings": [ "ь", "ъ" ] }, { "strings": [ "б" ] }, { "strings": [ "ю" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "," ] }, { "strings": [ " " ], "width": 6 }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "Й" ] }, { "strings": [ "Ц" ] }, { "strings": [ "У" ] }, { "strings": [ "К" ] }, { "strings": [ "Е" ] }, { "strings": [ "Н" ] }, { "strings": [ "Г", "Ґ" ] }, { "strings": [ "Ш" ] }, { "strings": [ "Щ" ] }, { "strings": [ "З" ] }, { "strings": [ "Х" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "strings": [ "Ф" ] }, { "strings": [ "І", "Ї" ] }, { "strings": [ "В" ] }, { "strings": [ "А" ] }, { "strings": [ "П" ] }, { "strings": [ "Р" ] }, { "strings": [ "О" ] }, { "strings": [ "Л" ] }, { "strings": [ "Д" ] }, { "strings": [ "Ж" ] }, { "strings": [ "Є" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 1.5 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 }, { "strings": [ "Я" ] }, { "strings": [ "Ч" ] }, { "strings": [ "С" ] }, { "strings": [ "М" ] }, { "strings": [ "И" ] }, { "strings": [ "Т" ] }, { "strings": [ "Ь", "Ъ" ] }, { "strings": [ "Б" ] }, { "strings": [ "Ю" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "," ] }, { "strings": [ " " ], "width": 6 }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "₴", "$", "¢", "€", "£", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "€" ] }, { "strings": [ "$", "¢" ] }, { "strings": [ "¢" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "uk", "name": "Ukrainian" } 070701000000F3000081A40000000000000000000000016712993F00004707000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/osk-layouts/uk.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "q" ] }, { "strings": [ "w" ] }, { "strings": [ "e", "è", "é", "ê", "ë", "ē" ] }, { "strings": [ "r" ] }, { "strings": [ "t" ] }, { "strings": [ "y" ] }, { "strings": [ "u", "û", "ü", "ù", "ú", "ū" ] }, { "strings": [ "i", "î", "ï", "í", "ī", "ì" ] }, { "strings": [ "o", "ô", "ö", "ò", "ó", "œ", "ø", "ō", "õ" ] }, { "strings": [ "p" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "a", "à", "á", "â", "ä", "æ", "ã", "å", "ā" ] }, { "strings": [ "s", "ß" ] }, { "strings": [ "d" ] }, { "strings": [ "f" ] }, { "strings": [ "g" ] }, { "strings": [ "h" ] }, { "strings": [ "j" ] }, { "strings": [ "k" ] }, { "strings": [ "l" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift" }, { "strings": [ "z" ] }, { "strings": [ "x" ] }, { "strings": [ "c", "ç" ] }, { "strings": [ "v" ] }, { "strings": [ "b" ] }, { "strings": [ "n", "ñ" ] }, { "strings": [ "m" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "Q" ] }, { "strings": [ "W" ] }, { "strings": [ "E", "È", "É", "Ê", "Ë", "Ē" ] }, { "strings": [ "R" ] }, { "strings": [ "T" ] }, { "strings": [ "Y" ] }, { "strings": [ "U", "Û", "Ü", "Ù", "Ú", "Ū" ] }, { "strings": [ "I", "Î", "Ï", "Í", "Ī", "Ì" ] }, { "strings": [ "O", "Ô", "Ö", "Ò", "Ó", "Œ", "Ø", "Ō", "Õ" ] }, { "strings": [ "P" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "A", "À", "Á", "Â", "Ä", "Æ", "Ã", "Å", "Ā" ] }, { "strings": [ "S", "ẞ" ] }, { "strings": [ "D" ] }, { "strings": [ "F" ] }, { "strings": [ "G" ] }, { "strings": [ "H" ] }, { "strings": [ "J" ] }, { "strings": [ "K" ] }, { "strings": [ "L" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default" }, { "strings": [ "Z" ] }, { "strings": [ "X" ] }, { "strings": [ "C", "Ç" ] }, { "strings": [ "V" ] }, { "strings": [ "B" ] }, { "strings": [ "N", "Ñ" ] }, { "strings": [ "M" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "£", "¢", "$", "€", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "€" ] }, { "strings": [ "¥" ] }, { "strings": [ "$", "¢" ] }, { "strings": [ "¢" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "en-GB", "name": "English Great Britain" } 070701000000F4000081A40000000000000000000000016712993F000047E6000000000000000000000000000000000000002B00000000gnome-shell-47.1/data/osk-layouts/url.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "q" ] }, { "strings": [ "w" ] }, { "strings": [ "e", "è", "é", "ê", "ë", "ē" ] }, { "strings": [ "r" ] }, { "strings": [ "t" ] }, { "strings": [ "y" ] }, { "strings": [ "u", "û", "ü", "ù", "ú", "ū" ] }, { "strings": [ "i", "î", "ï", "í", "ī", "ì" ] }, { "strings": [ "o", "ô", "ö", "ò", "ó", "œ", "ø", "ō", "õ" ] }, { "strings": [ "p" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "start": 0.5, "strings": [ "a", "à", "á", "â", "ä", "æ", "ã", "å", "ā" ] }, { "strings": [ "s", "ß" ] }, { "strings": [ "d" ] }, { "strings": [ "f" ] }, { "strings": [ "g" ] }, { "strings": [ "h" ] }, { "strings": [ "j" ] }, { "strings": [ "k" ] }, { "strings": [ "l" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift" }, { "strings": [ "z" ] }, { "strings": [ "x" ] }, { "strings": [ "c", "ç" ] }, { "strings": [ "v" ] }, { "strings": [ "b" ] }, { "strings": [ "n", "ñ" ] }, { "strings": [ "m" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "www." ], "width": 1.5 }, { "strings": [ ":" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "/" ] }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "Q" ] }, { "strings": [ "W" ] }, { "strings": [ "E", "È", "É", "Ê", "Ë", "Ē" ] }, { "strings": [ "R" ] }, { "strings": [ "T" ] }, { "strings": [ "Y" ] }, { "strings": [ "U", "Û", "Ü", "Ù", "Ú", "Ū" ] }, { "strings": [ "I", "Î", "Ï", "Í", "Ī", "Ì" ] }, { "strings": [ "O", "Ô", "Ö", "Ò", "Ó", "Œ", "Ø", "Ō", "Õ" ] }, { "strings": [ "P" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "start": 0.5, "strings": [ "A", "À", "Á", "Â", "Ä", "Æ", "Ã", "Å", "Ā" ] }, { "strings": [ "S", "ẞ" ] }, { "strings": [ "D" ] }, { "strings": [ "F" ] }, { "strings": [ "G" ] }, { "strings": [ "H" ] }, { "strings": [ "J" ] }, { "strings": [ "K" ] }, { "strings": [ "L" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default" }, { "strings": [ "Z" ] }, { "strings": [ "X" ] }, { "strings": [ "C", "Ç" ] }, { "strings": [ "V" ] }, { "strings": [ "B" ] }, { "strings": [ "N", "Ñ" ] }, { "strings": [ "M" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "www." ], "width": 1.5 }, { "strings": [ ":" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "/" ] }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "start": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "$", "¢", "£", "€", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "start": 0.5, "strings": [ "£" ] }, { "strings": [ "¢" ] }, { "strings": [ "€" ] }, { "strings": [ "¥" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "name": "URL keymap" } 070701000000F5000081A40000000000000000000000016712993F00004CC5000000000000000000000000000000000000003300000000gnome-shell-47.1/data/osk-layouts/us-extended.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "keyval": "0xff09", "label": "Tab", "width": 1 }, { "strings": [ "q" ] }, { "strings": [ "w" ] }, { "strings": [ "e", "è", "é", "ê", "ë", "ē" ] }, { "strings": [ "r" ] }, { "strings": [ "t" ] }, { "strings": [ "y" ] }, { "strings": [ "u", "û", "ü", "ù", "ú", "ū" ] }, { "strings": [ "i", "î", "ï", "í", "ī", "ì" ] }, { "strings": [ "o", "ô", "ö", "ò", "ó", "œ", "ø", "ō", "õ" ] }, { "strings": [ "p" ] }, { "iconName": "edit-clear-symbolic", "action": "delete", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-caps-lock-symbolic", "level": "shift", "width": 1.5 }, { "strings": [ "a", "à", "á", "â", "ä", "æ", "ã", "å", "ā" ] }, { "strings": [ "s", "ß" ] }, { "strings": [ "d" ] }, { "strings": [ "f" ] }, { "strings": [ "g" ] }, { "strings": [ "h" ] }, { "strings": [ "j" ] }, { "strings": [ "k" ] }, { "strings": [ "l" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2.5 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 2 }, { "strings": [ "z" ] }, { "strings": [ "x" ] }, { "strings": [ "c", "ç" ] }, { "strings": [ "v" ] }, { "strings": [ "b" ] }, { "strings": [ "n", "ñ" ] }, { "strings": [ "m" ] }, { "strings": [ ".", ",", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "iconName": "go-up-symbolic", "keyval": "0xff52" }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 2 } ], [ { "action": "modifier", "keyval": "0xffe3", "label": "Ctrl" }, { "action": "levelSwitch", "label": "?123", "level": "opt" }, { "action": "modifier", "keyval": "0xffe9", "label": "Alt" }, { "strings": [ " " ], "width": 4 }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "iconName": "go-previous-symbolic", "keyval": "0xff51" }, { "iconName": "go-down-symbolic", "keyval": "0xff54" }, { "iconName": "go-next-symbolic", "keyval": "0xff53" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "keyval": "0xff09", "label": "Tab", "width": 1 }, { "strings": [ "Q" ] }, { "strings": [ "W" ] }, { "strings": [ "E", "È", "É", "Ê", "Ë", "Ē" ] }, { "strings": [ "R" ] }, { "strings": [ "T" ] }, { "strings": [ "Y" ] }, { "strings": [ "U", "Û", "Ü", "Ù", "Ú", "Ū" ] }, { "strings": [ "I", "Î", "Ï", "Í", "Ī", "Ì" ] }, { "strings": [ "O", "Ô", "Ö", "Ò", "Ó", "Œ", "Ø", "Ō", "Õ" ] }, { "strings": [ "P" ] }, { "iconName": "edit-clear-symbolic", "keyval": "0xff08", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-caps-lock-symbolic", "level": "default", "width": 1.5 }, { "strings": [ "A", "À", "Á", "Â", "Ä", "Æ", "Ã", "Å", "Ā" ] }, { "strings": [ "S", "ẞ" ] }, { "strings": [ "D" ] }, { "strings": [ "F" ] }, { "strings": [ "G" ] }, { "strings": [ "H" ] }, { "strings": [ "J" ] }, { "strings": [ "K" ] }, { "strings": [ "L" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2.5 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 2 }, { "strings": [ "Z" ] }, { "strings": [ "X" ] }, { "strings": [ "C", "Ç" ] }, { "strings": [ "V" ] }, { "strings": [ "B" ] }, { "strings": [ "N", "Ñ" ] }, { "strings": [ "M" ] }, { "strings": [ ".", ",", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "iconName": "go-up-symbolic", "keyval": "0xff52" }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 2 } ], [ { "action": "modifier", "keyval": "0xffe3", "label": "Ctrl" }, { "action": "levelSwitch", "label": "?123", "level": "opt" }, { "action": "modifier", "keyval": "0xffe9", "label": "Alt" }, { "strings": [ " " ], "width": 4 }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "iconName": "go-previous-symbolic", "keyval": "0xff51" }, { "iconName": "go-down-symbolic", "keyval": "0xff54" }, { "iconName": "go-next-symbolic", "keyval": "0xff53" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "iconName": "edit-clear-symbolic", "keyval": "0xff08", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "$", "¢", "£", "€", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "iconName": "edit-clear-symbolic", "keyval": "0xff08", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "¢" ] }, { "strings": [ "€" ] }, { "strings": [ "¥" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "en", "name": "English United States" } 070701000000F6000081A40000000000000000000000016712993F000046F1000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/osk-layouts/us.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "q" ] }, { "strings": [ "w" ] }, { "strings": [ "e", "è", "é", "ê", "ë", "ē" ] }, { "strings": [ "r" ] }, { "strings": [ "t" ] }, { "strings": [ "y" ] }, { "strings": [ "u", "û", "ü", "ù", "ú", "ū" ] }, { "strings": [ "i", "î", "ï", "í", "ī", "ì" ] }, { "strings": [ "o", "ô", "ö", "ò", "ó", "œ", "ø", "ō", "õ" ] }, { "strings": [ "p" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "a", "à", "á", "â", "ä", "æ", "ã", "å", "ā" ] }, { "strings": [ "s", "ß" ] }, { "strings": [ "d" ] }, { "strings": [ "f" ] }, { "strings": [ "g" ] }, { "strings": [ "h" ] }, { "strings": [ "j" ] }, { "strings": [ "k" ] }, { "strings": [ "l" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift" }, { "strings": [ "z" ] }, { "strings": [ "x" ] }, { "strings": [ "c", "ç" ] }, { "strings": [ "v" ] }, { "strings": [ "b" ] }, { "strings": [ "n", "ñ" ] }, { "strings": [ "m" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "Q" ] }, { "strings": [ "W" ] }, { "strings": [ "E", "È", "É", "Ê", "Ë", "Ē" ] }, { "strings": [ "R" ] }, { "strings": [ "T" ] }, { "strings": [ "Y" ] }, { "strings": [ "U", "Û", "Ü", "Ù", "Ú", "Ū" ] }, { "strings": [ "I", "Î", "Ï", "Í", "Ī", "Ì" ] }, { "strings": [ "O", "Ô", "Ö", "Ò", "Ó", "Œ", "Ø", "Ō", "Õ" ] }, { "strings": [ "P" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "A", "À", "Á", "Â", "Ä", "Æ", "Ã", "Å", "Ā" ] }, { "strings": [ "S", "ẞ" ] }, { "strings": [ "D" ] }, { "strings": [ "F" ] }, { "strings": [ "G" ] }, { "strings": [ "H" ] }, { "strings": [ "J" ] }, { "strings": [ "K" ] }, { "strings": [ "L" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default" }, { "strings": [ "Z" ] }, { "strings": [ "X" ] }, { "strings": [ "C", "Ç" ] }, { "strings": [ "V" ] }, { "strings": [ "B" ] }, { "strings": [ "N", "Ñ" ] }, { "strings": [ "M" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "$", "¢", "£", "€", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "¢" ] }, { "strings": [ "€" ] }, { "strings": [ "¥" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "en", "name": "English United States" } 070701000000F7000081A40000000000000000000000016712993F00004C8F000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/osk-layouts/vn.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "q" ] }, { "strings": [ "w" ] }, { "strings": [ "e", "è", "é", "ẻ", "ẽ", "ẹ", "ê", "ề", "ế", "ể", "ễ", "ệ" ] }, { "strings": [ "r" ] }, { "strings": [ "t" ] }, { "strings": [ "y", "ỳ", "ý", "ỷ", "ỹ", "ỵ" ] }, { "strings": [ "u", "ù", "ú", "ủ", "ũ", "ụ", "ư", "ừ", "ứ", "ử", "ữ", "ự" ] }, { "strings": [ "i", "ì", "í", "ỉ", "ĩ", "ị" ] }, { "strings": [ "o", "ò", "ó", "ỏ", "õ", "ọ", "ô", "ồ", "ố", "ổ", "ỗ", "ộ", "ơ", "ờ", "ớ", "ở", "ỡ", "ợ" ] }, { "strings": [ "p" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "a", "à", "á", "ả", "ã", "ạ", "ă", "ằ", "ắ", "ẳ", "ẵ", "ặ", "â", "ầ", "ấ", "ẩ", "ẫ", "ậ" ] }, { "strings": [ "s" ] }, { "strings": [ "d", "đ" ] }, { "strings": [ "f" ] }, { "strings": [ "g" ] }, { "strings": [ "h" ] }, { "strings": [ "j" ] }, { "strings": [ "k" ] }, { "strings": [ "l" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift" }, { "strings": [ "z" ] }, { "strings": [ "x" ] }, { "strings": [ "c" ] }, { "strings": [ "v" ] }, { "strings": [ "b" ] }, { "strings": [ "n" ] }, { "strings": [ "m" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "Q" ] }, { "strings": [ "W" ] }, { "strings": [ "E", "È", "É", "Ẻ", "Ẽ", "Ẹ", "Ê", "Ề", "Ế", "Ể", "Ễ", "Ệ" ] }, { "strings": [ "R" ] }, { "strings": [ "T" ] }, { "strings": [ "Y", "Ỳ", "Ý", "Ỷ", "Ỹ", "Ỵ" ] }, { "strings": [ "U", "Ù", "Ú", "Ủ", "Ũ", "Ụ", "Ư", "Ừ", "Ứ", "Ử", "Ữ", "Ự" ] }, { "strings": [ "I", "Ì", "Í", "Ỉ", "Ĩ", "Ị" ] }, { "strings": [ "O", "Ò", "Ó", "Ỏ", "Õ", "Ọ", "Ô", "Ồ", "Ố", "Ổ", "Ỗ", "Ộ", "Ơ", "Ờ", "Ớ", "Ở", "Ỡ", "Ợ" ] }, { "strings": [ "P" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "A", "À", "Á", "Ả", "Ã", "Ạ", "Ă", "Ằ", "Ắ", "Ẳ", "Ẵ", "Ặ", "Â", "Ầ", "Ấ", "Ẩ", "Ẫ", "Ậ" ] }, { "strings": [ "S" ] }, { "strings": [ "D", "Đ" ] }, { "strings": [ "F" ] }, { "strings": [ "G" ] }, { "strings": [ "H" ] }, { "strings": [ "J" ] }, { "strings": [ "K" ] }, { "strings": [ "L" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default" }, { "strings": [ "Z" ] }, { "strings": [ "X" ] }, { "strings": [ "C" ] }, { "strings": [ "V" ] }, { "strings": [ "B" ] }, { "strings": [ "N" ] }, { "strings": [ "M" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "₫", "$", "¢", "€", "£", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "€" ] }, { "strings": [ "$", "¢" ] }, { "strings": [ "¢" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "vi", "name": "Vietnamese" } 070701000000F8000081A40000000000000000000000016712993F00004DD0000000000000000000000000000000000000003300000000gnome-shell-47.1/data/osk-layouts/za-extended.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "keyval": "0xff09", "label": "Tab", "width": 1 }, { "strings": [ "q" ] }, { "strings": [ "w" ] }, { "strings": [ "e", "é", "è", "ê", "ë", "ę", "ė", "ē" ] }, { "strings": [ "r" ] }, { "strings": [ "t" ] }, { "strings": [ "y", "ý", "ŷ", "ÿ", "ij" ] }, { "strings": [ "u", "ú", "û", "ü", "ù", "ū" ] }, { "strings": [ "i", "í", "ì", "ï", "î", "į", "ī", "ij" ] }, { "strings": [ "o", "ó", "ô", "ö", "ò", "õ", "œ", "ø", "ō" ] }, { "strings": [ "p" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-caps-lock-symbolic", "level": "shift", "width": 1.5 }, { "strings": [ "a", "á", "â", "ä", "à", "æ", "ã", "å", "ā" ] }, { "strings": [ "s" ] }, { "strings": [ "d" ] }, { "strings": [ "f" ] }, { "strings": [ "g" ] }, { "strings": [ "h" ] }, { "strings": [ "j" ] }, { "strings": [ "k" ] }, { "strings": [ "l" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2.5 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 2 }, { "strings": [ "z" ] }, { "strings": [ "x" ] }, { "strings": [ "c" ] }, { "strings": [ "v" ] }, { "strings": [ "b" ] }, { "strings": [ "n", "ñ", "ń" ] }, { "strings": [ "m" ] }, { "strings": [ ".", ",", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "iconName": "go-up-symbolic", "keyval": "0xff52" }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 2 } ], [ { "action": "modifier", "keyval": "0xffe3", "label": "Ctrl" }, { "action": "levelSwitch", "label": "?123", "level": "opt" }, { "action": "modifier", "keyval": "0xffe9", "label": "Alt" }, { "strings": [ " " ], "width": 4 }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "iconName": "go-previous-symbolic", "keyval": "0xff51" }, { "iconName": "go-down-symbolic", "keyval": "0xff54" }, { "iconName": "go-next-symbolic", "keyval": "0xff53" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "keyval": "0xff09", "label": "Tab", "width": 1 }, { "strings": [ "Q" ] }, { "strings": [ "W" ] }, { "strings": [ "E", "É", "È", "Ê", "Ë", "Ę", "Ė", "Ē" ] }, { "strings": [ "R" ] }, { "strings": [ "T" ] }, { "strings": [ "Y", "Ý", "Ŷ", "Ÿ", "IJ" ] }, { "strings": [ "U", "Ú", "Û", "Ü", "Ù", "Ū" ] }, { "strings": [ "I", "Í", "Ì", "Ï", "Î", "Į", "Ī", "IJ" ] }, { "strings": [ "O", "Ó", "Ô", "Ö", "Ò", "Õ", "Œ", "Ø", "Ō" ] }, { "strings": [ "P" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-caps-lock-symbolic", "level": "default", "width": 1.5 }, { "strings": [ "A", "Á", "Â", "Ä", "À", "Æ", "Ã", "Å", "Ā" ] }, { "strings": [ "S" ] }, { "strings": [ "D" ] }, { "strings": [ "F" ] }, { "strings": [ "G" ] }, { "strings": [ "H" ] }, { "strings": [ "J" ] }, { "strings": [ "K" ] }, { "strings": [ "L" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2.5 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "width": 2, "level": "default" }, { "strings": [ "Z" ] }, { "strings": [ "X" ] }, { "strings": [ "C" ] }, { "strings": [ "V" ] }, { "strings": [ "B" ] }, { "strings": [ "N", "Ñ", "Ń" ] }, { "strings": [ "M" ] }, { "strings": [ ".", ",", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "iconName": "go-up-symbolic", "keyval": "0xff52" }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 2 } ], [ { "action": "modifier", "keyval": "0xffe3", "label": "Ctrl" }, { "action": "levelSwitch", "label": "?123", "level": "opt" }, { "action": "modifier", "keyval": "0xffe9", "label": "Alt" }, { "strings": [ " " ], "width": 4 }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "iconName": "go-previous-symbolic", "keyval": "0xff51" }, { "iconName": "go-down-symbolic", "keyval": "0xff54" }, { "iconName": "go-next-symbolic", "keyval": "0xff53" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "$", "¢", "£", "€", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "¢" ] }, { "strings": [ "€" ] }, { "strings": [ "¥" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "af", "name": "Afrikaans" } 070701000000F9000081A40000000000000000000000016712993F000047FC000000000000000000000000000000000000002A00000000gnome-shell-47.1/data/osk-layouts/za.json{ "levels": [ { "level": "default", "mode": "default", "rows": [ [ { "strings": [ "q" ] }, { "strings": [ "w" ] }, { "strings": [ "e", "é", "è", "ê", "ë", "ę", "ė", "ē" ] }, { "strings": [ "r" ] }, { "strings": [ "t" ] }, { "strings": [ "y", "ý", "ŷ", "ÿ", "ij" ] }, { "strings": [ "u", "ú", "û", "ü", "ù", "ū" ] }, { "strings": [ "i", "í", "ì", "ï", "î", "į", "ī", "ij" ] }, { "strings": [ "o", "ó", "ô", "ö", "ò", "õ", "œ", "ø", "ō" ] }, { "strings": [ "p" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "a", "á", "â", "ä", "à", "æ", "ã", "å", "ā" ] }, { "strings": [ "s" ] }, { "strings": [ "d" ] }, { "strings": [ "f" ] }, { "strings": [ "g" ] }, { "strings": [ "h" ] }, { "strings": [ "j" ] }, { "strings": [ "k" ] }, { "strings": [ "l" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift" }, { "strings": [ "z" ] }, { "strings": [ "x" ] }, { "strings": [ "c" ] }, { "strings": [ "v" ] }, { "strings": [ "b" ] }, { "strings": [ "n", "ñ", "ń" ] }, { "strings": [ "m" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "shift", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "shift", "mode": "latched", "rows": [ [ { "strings": [ "Q" ] }, { "strings": [ "W" ] }, { "strings": [ "E", "É", "È", "Ê", "Ë", "Ę", "Ė", "Ē" ] }, { "strings": [ "R" ] }, { "strings": [ "T" ] }, { "strings": [ "Y", "Ý", "Ŷ", "Ÿ", "IJ" ] }, { "strings": [ "U", "Ú", "Û", "Ü", "Ù", "Ū" ] }, { "strings": [ "I", "Í", "Ì", "Ï", "Î", "Į", "Ī", "IJ" ] }, { "strings": [ "O", "Ó", "Ô", "Ö", "Ò", "Õ", "Œ", "Ø", "Ō" ] }, { "strings": [ "P" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "A", "Á", "Â", "Ä", "À", "Æ", "Ã", "Å", "Ā" ] }, { "strings": [ "S" ] }, { "strings": [ "D" ] }, { "strings": [ "F" ] }, { "strings": [ "G" ] }, { "strings": [ "H" ] }, { "strings": [ "J" ] }, { "strings": [ "K" ] }, { "strings": [ "L" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default" }, { "strings": [ "Z" ] }, { "strings": [ "X" ] }, { "strings": [ "C" ] }, { "strings": [ "V" ] }, { "strings": [ "B" ] }, { "strings": [ "N", "Ñ", "Ń" ] }, { "strings": [ "M" ] }, { "strings": [ "," ] }, { "strings": [ ".", "#", "!", ",", "?", "-", ":", "'", "@" ] }, { "action": "levelSwitch", "iconName": "keyboard-shift-symbolic", "level": "default", "width": 1.5 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "action": "emoji", "iconName": "face-smile-symbolic", "width": 1.5 }, { "strings": [ " " ], "width": 5 }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic", "width": 1.5 }, { "action": "hide", "iconName": "keyboard-hide-symbolic", "width": 2 } ] ] }, { "level": "opt", "mode": "locked", "rows": [ [ { "strings": [ "1", "¹", "½", "⅓", "¼", "⅛" ] }, { "strings": [ "2", "²", "⅔" ] }, { "strings": [ "3", "³", "¾", "⅜" ] }, { "strings": [ "4", "⁴" ] }, { "strings": [ "5", "⅝" ] }, { "strings": [ "6" ] }, { "strings": [ "7", "⅞" ] }, { "strings": [ "8" ] }, { "strings": [ "9" ] }, { "strings": [ "0", "ⁿ", "∅" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "@" ] }, { "strings": [ "#" ] }, { "strings": [ "$", "¢", "£", "€", "¥", "₱" ] }, { "strings": [ "%", "‰" ] }, { "strings": [ "&" ] }, { "strings": [ "-", "_", "–", "—", "·" ] }, { "strings": [ "+", "±" ] }, { "strings": [ "(", "<", "{", "[" ] }, { "strings": [ ")", ">", "}", "]" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 1.5 }, { "strings": [ "*", "†", "‡", "★" ] }, { "strings": [ "\"", "“", "”", "«", "»" ] }, { "strings": [ "'", "‘", "’", "‹", "›" ] }, { "strings": [ ":" ] }, { "strings": [ ";" ] }, { "strings": [ "!", "¡" ] }, { "strings": [ "?", "¿" ] }, { "action": "levelSwitch", "label": "=/<", "level": "opt+shift", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "_" ] }, { "strings": [ "/" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] }, { "level": "opt+shift", "mode": "locked", "rows": [ [ { "strings": [ "~" ] }, { "strings": [ "`" ] }, { "strings": [ "|" ] }, { "strings": [ "•", "♪", "♥", "♠", "♦", "♣" ] }, { "strings": [ "√" ] }, { "strings": [ "Π", "π" ] }, { "strings": [ "÷" ] }, { "strings": [ "×" ] }, { "strings": [ "¶", "§" ] }, { "strings": [ "∆" ] }, { "action": "delete", "iconName": "edit-clear-symbolic", "width": 1.5 } ], [ { "leftOffset": 0.5, "strings": [ "£" ] }, { "strings": [ "¢" ] }, { "strings": [ "€" ] }, { "strings": [ "¥" ] }, { "strings": [ "^", "↑", "↓", "←", "→" ] }, { "strings": [ "°", "′", "″" ] }, { "strings": [ "=", "≠", "≈", "∞" ] }, { "strings": [ "{" ] }, { "strings": [ "}" ] }, { "iconName": "keyboard-enter-symbolic", "keyval": "0xff0d", "width": 2 } ], [ { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 1.5 }, { "strings": [ "\\" ] }, { "strings": [ "©" ] }, { "strings": [ "®" ] }, { "strings": [ "™" ] }, { "strings": [ "℅" ] }, { "strings": [ "[" ] }, { "strings": [ "]" ] }, { "action": "levelSwitch", "label": "?123", "level": "opt", "width": 3 } ], [ { "action": "levelSwitch", "label": "ABC", "level": "default", "width": 1.5 }, { "strings": [ "<", "‹", "≤", "«" ] }, { "strings": [ ">", "›", "≥", "»" ] }, { "strings": [ " " ], "width": 3 }, { "strings": [ "," ] }, { "strings": [ ".", "…" ] }, { "action": "emoji", "iconName": "face-smile-symbolic" }, { "action": "languageMenu", "iconName": "keyboard-layout-symbolic" }, { "action": "hide", "iconName": "keyboard-hide-symbolic" } ] ] } ], "locale": "af", "name": "Afrikaans" } 070701000000FA000081A40000000000000000000000016712993F00000469000000000000000000000000000000000000002D00000000gnome-shell-47.1/data/perf-background.xml.in 1990 1 1 0 00 00 1261440000.0 @datadir@/backgrounds/gnome/adwaita-morning.jpg @datadir@/backgrounds/gnome/adwaita-day.jpg 60 /usr/share/backgrounds/gnome/Sandstone.jpg 070701000000FB000041ED0000000000000000000000026712993F00000000000000000000000000000000000000000000001C00000000gnome-shell-47.1/data/theme070701000000FC000081A40000000000000000000000016712993F0000072F000000000000000000000000000000000000002600000000gnome-shell-47.1/data/theme/README.md## Summary Do not edit the CSS directly, edit the source SCSS files and the CSS files will be generated automatically when building with meson + ninja and left inside the build directory to be incorporated into the gresource XML (you'll need to have sassc installed). ## How to tweak the theme Adwaita is a complex theme, so to keep it maintainable it's written and processed in SASS, the generated CSS is then transformed into a gresource file during gtk build and used at runtime in a non-legible or editable form. It is very likely your change will happen in the [_common.scss][common] file. That's where all the widget selectors are defined. Here's a rundown of the "supporting" stylesheets, that are unlikely to be the right place for a drive by stylesheet fix: | File | Description | | ------------------------ | ----------------- | | [_colors.scss][colors] | global color definitions. We keep the number of defined colors to a necessary minimum, most colors are derived from a handful of basics. It is an exact copy of the gtk+ counterpart. Light theme is used for the classic theme and dark is for GNOME3 shell default. | | [_drawing.scss][drawing] | drawing helper mixings/functions to allow easier definition of widget drawing under specific context. This is why Adwaita isn't 15000 LOC. | | [_common.scss][common] | actual definitions of style for each widget. This is where you are likely to add/remove your changes. | You can read about SASS on its [web page][sass-web]. Once you make your changes to the [_common.scss][common] file, you can run ninja to generate the final CSS files. [common]: data/theme/gnome-shell-sass/_common.scss [colors]: data/theme/gnome-shell-sass/_colors.scss [drawing]: data/theme/gnome-shell-sass/_drawing.scss [sass-web]: http://sass-lang.com/documentation/ 070701000000FD000081A40000000000000000000000016712993F000002CE000000000000000000000000000000000000003500000000gnome-shell-47.1/data/theme/calendar-today-light.svg070701000000FE000081A40000000000000000000000016712993F000002D7000000000000000000000000000000000000002F00000000gnome-shell-47.1/data/theme/calendar-today.svg070701000000FF000081A40000000000000000000000016712993F00000BC5000000000000000000000000000000000000003100000000gnome-shell-47.1/data/theme/dash-placeholder.svg 07070100000100000081A40000000000000000000000016712993F000000CB000000000000000000000000000000000000003200000000gnome-shell-47.1/data/theme/gnome-shell-dark.scss$variant: 'dark'; $contrast: 'normal'; @import "gnome-shell-sass/_colors"; //use gtk colors @import "gnome-shell-sass/_drawing"; @import "gnome-shell-sass/_common"; @import "gnome-shell-sass/_widgets"; 07070100000101000081A40000000000000000000000016712993F000000D7000000000000000000000000000000000000003B00000000gnome-shell-47.1/data/theme/gnome-shell-high-contrast.scss$variant: 'dark'; $contrast: "high"; @import "gnome-shell-sass/_high-contrast-colors"; //use gtk colors @import "gnome-shell-sass/_drawing"; @import "gnome-shell-sass/_common"; @import "gnome-shell-sass/_widgets"; 07070100000102000081A40000000000000000000000016712993F000000CC000000000000000000000000000000000000003300000000gnome-shell-47.1/data/theme/gnome-shell-light.scss$variant: 'light'; $contrast: 'normal'; @import "gnome-shell-sass/_colors"; //use gtk colors @import "gnome-shell-sass/_drawing"; @import "gnome-shell-sass/_common"; @import "gnome-shell-sass/_widgets"; 07070100000103000041ED0000000000000000000000026712993F00000000000000000000000000000000000000000000002D00000000gnome-shell-47.1/data/theme/gnome-shell-sass07070100000104000081A40000000000000000000000016712993F0000461C000000000000000000000000000000000000003500000000gnome-shell-47.1/data/theme/gnome-shell-sass/COPYING GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. 07070100000105000081A40000000000000000000000016712993F00000000000000000000000000000000000000000000003200000000gnome-shell-47.1/data/theme/gnome-shell-sass/NEWS07070100000106000081A40000000000000000000000016712993F000002CA000000000000000000000000000000000000003700000000gnome-shell-47.1/data/theme/gnome-shell-sass/README.md# GNOME Shell Sass GNOME Shell Sass is a project intended to allow the sharing of the theme sources in sass between gnome-shell and other projects like gnome-shell-extensions. Any changes should be done in the [GNOME Shell subtree][shell-subtree] and not the stand-alone [gnome-shell-sass repository][sass-repo]. They will then be synchronized periodically before releases. ## License GNOME Shell Sass is distributed under the terms of the GNU General Public License, version 2 or later. See the [COPYING][license] file for details. [shell-subtree]: https://gitlab.gnome.org/GNOME/gnome-shell/tree/HEAD/data/theme/gnome-shell-sass [sass-repo]: https://gitlab.gnome.org/GNOME/gnome-shell-sass [license]: COPYING 07070100000107000081A40000000000000000000000016712993F00000ABC000000000000000000000000000000000000003A00000000gnome-shell-47.1/data/theme/gnome-shell-sass/_colors.scss// // Main color definitions // // When color definition differs for dark and light variant, it gets @if-ed depending on $variant @import '_palette.scss'; @import '_default-colors.scss'; // global colors $base_color: if($variant == 'light', $light_1, $_base_color_dark); $bg_color: if($variant == 'light', $_base_color_light, lighten($base_color, 5%)); $fg_color: if($variant == 'light', $_base_color_dark, $light_1); // OSD elements $osd_fg_color: $light_1; $osd_bg_color: lighten($_base_color_dark, 5%); // system elements (e.g. the overview) that are always dark $system_base_color: $_base_color_dark; $system_fg_color: $_base_color_light; // panel colors $panel_bg_color: if($variant == 'light', $_base_color_light, $dark_5); $panel_fg_color: if($variant == 'light', $_base_color_dark, $light_1); // card elements $card_bg_color: if($variant == 'light', $light_1, lighten($bg_color, 7%)); $card_shadow_color: if($variant == 'light', transparentize($dark_5, .97), transparent); $card_shadow_border_color: if($variant == 'light', transparentize($dark_5, .91), transparent); // // Derived Colors // // colors based on the global defines above // borders $borders_color: transparentize($fg_color, $border_opacity); $outer_borders_color: if($variant == 'light', darken($bg_color, 7%), lighten($bg_color, 5%)); // osd colors $osd_borders_color: transparentize($osd_fg_color, 0.9); $osd_outer_borders_color: transparentize($osd_fg_color, 0.98); // system colors $system_bg_color: lighten($system_base_color, 5%); $system_borders_color: transparentize($system_fg_color, .9); $system_insensitive_fg_color: mix($system_fg_color, $system_bg_color, 50%); $system_overlay_bg_color: mix($system_base_color, $system_fg_color, 90%); // for non-transparent items, e.g. dash // insensitive state $insensitive_fg_color: if($variant == 'light', mix($fg_color, $bg_color, 60%), mix($fg_color, $bg_color, 50%)); $insensitive_bg_color: mix($bg_color, $base_color, 60%); $insensitive_borders_color: mix($borders_color, $base_color, 60%); // checked state $checked_bg_color: if($variant=='light', darken($bg_color, 7%), lighten($bg_color, 7%)); $checked_fg_color: if($variant=='light', darken($fg_color, 7%), lighten($fg_color, 7%)); // hover state $hover_bg_color: if($variant=='light', darken($bg_color,9%), lighten($bg_color, 10%)); $hover_fg_color: if($variant=='light', darken($fg_color,9%), lighten($fg_color, 10%)); // active state $active_bg_color: if($variant=='light', darken($bg_color, 11%), lighten($bg_color, 12%)); $active_fg_color: if($variant=='light', darken($fg_color, 11%), lighten($fg_color, 12%)); // accent colors $accent_borders_color: if($variant== 'light', st-darken(-st-accent-color, 15%), st-lighten(-st-accent-color, 15%)); 07070100000108000081A40000000000000000000000016712993F0000304F000000000000000000000000000000000000003A00000000gnome-shell-47.1/data/theme/gnome-shell-sass/_common.scss//This is the RIGHT PLACE to edit the stylesheet //let's start by telling people not to edit the generated CSS: $cakeisalie: "This stylesheet is generated, DO NOT EDIT"; /* #{$cakeisalie} */ /* Copyright 2009, 2015 Red Hat, Inc. * * Portions adapted from Mx's data/style/default.css * Copyright 2009 Intel Corporation * * This program is free software; you can redistribute it and/or modify it * under the terms and conditions of the GNU Lesser General Public License, * version 2.1, as published by the Free Software Foundation. * * This program is distributed in the hope it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for * more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. */ /* Global Values */ // Base values of elements of the shell in their smallest "unit". // These are used in calculations elsewhere to have elements in proportion $base_font_size: 11pt; // font size $base_padding: 6px; // internal padding of elements $base_margin: 4px; // margin between elements $base_border_radius: 8px; // radii on all elements // Radius used to make sure elements that have rounded corners stay as such. // This is a workaround for 50% not working. $forced_circular_radius: 999px; // radii of things that display over other things, e.g. popovers $modal_radius: $base_border_radius * 2; // radii of dialogs $alert_radius: 18px; // Chroma key to flag when a background-color is always occluded, not visible. // This allows any box-shadow behind it to be rendered more efficiently by // omitting the middle rectangle. $invisible_occluded_bg_color: rgba(3,2,1,0); // Fixed icon sizes $base_icon_size: 16px; $medium_icon_size: $base_icon_size * 1.5; // 24px $large_icon_size: $base_icon_size * 2; // 32px // Scaled values // Used in elements that follow text scaling factors $scaled_padding: to_em(6px); // same as $base_padding // Used for symbolic icons that scale $scalable_icon_size: to_em(16px); $medium_scalable_icon_size: $scalable_icon_size * 1.5; $large_scalable_icon_size: $scalable_icon_size * 2; // animation definition $ease_out_quad: cubic-bezier(0.25, 0.46, 0.45, 0.94); // Stage stage { @include fontsize($base_font_size); color: $fg_color; } /* Common Stylings */ %reset { background: none; box-shadow: none; border: none; border-radius: 0; padding: 0; margin: 0; } // icon tiles %tile { border-radius: $base_border_radius * 2; padding: $base_padding; spacing: $base_padding; text-align: center; transition-duration: 100ms; } // common button styling %button_common { border-radius: $base_border_radius; padding: $base_padding * .5 $base_padding * 4; font-weight: bold; transition: border-width 300ms $ease_out_quad, box-shadow 300ms $ease_out_quad; } %button { @extend %button_common; @include button(normal); &:focus { @include button(focus);} &:hover { @include button(hover);} &:insensitive { @include button(insensitive);} &:selected, &:active { @include button(active);} &:checked { @include button(checked);} } %flat_button { @include button(normal, $style: flat); &:focus { @include button(focus, $style: flat);} &:hover { @include button(hover, $style: flat);} &:insensitive { @include button(insensitive, $style: flat);} &:selected, &:active { @include button(active, $style: flat);} &:checked { @include button(checked, $style: flat);} } %default_button { @include button(normal, $c:-st-accent-color, $tc:-st-accent-fg-color, $style: default); &:focus { @include button(focus, $c:-st-accent-color, $tc:-st-accent-fg-color, $style: default);} &:hover { @include button(hover, $c:-st-accent-color, $tc:-st-accent-fg-color, $style: default);} &:insensitive { @include button(insensitive, $c:-st-accent-color, $tc:-st-accent-fg-color, $style: default);} &:active { @include button(active, $c:-st-accent-color, $tc:-st-accent-fg-color, $style: default);} } // items in popover menus %menuitem { font-weight: normal; spacing: $base_padding; transition-duration: 100ms; padding: $base_padding * 1.5 $base_padding * 2; } // common style for card elements %card_common { border-radius: $base_border_radius * 1.5; padding: $scaled_padding * 2; margin: $base_margin; background-color: $card_bg_color; box-shadow: 0 1px 2px 0 $card_shadow_color; // bit of a hack here with border since we can't have double box-shadow border: 1px solid $card_shadow_border_color; @if $contrast == 'high' { border-color: transparent; box-shadow: none; } } %card { @extend %card_common; @include button(normal, $style: card); &:hover { @include button(hover, $style: card);} &:active { @include button(active, $style: card);} &:focus { @include button(focus, $style: card);} &:insensitive { @include button(insensitive, $style: card);} } %card_flat { @extend %card_common; border: 1px solid transparent !important; // override of the button style needed here @include button(undecorated, $style: flat); &:hover { @include button(hover, $style: flat);} &:active { @include button(active, $style: flat);} &:focus { @include button(focus, $style: card);} &:insensitive { @include button(insensitive, $style: card);} } // normal entry style %entry_common { border-radius: $base_border_radius; padding: $base_padding * 1.5 $base_padding * 1.5; selection-background-color: st-transparentize(-st-accent-color, 0.7); selected-color: $fg_color; } %entry { @extend %entry_common; @include entry(normal); &:hover { @include entry(hover);} &:focus { @include entry(focus);} &:insensitive { @include entry(insensitive);} StLabel.hint-text { color: transparentize($fg_color, 0.3); } } // buttons in notifications // use a rounded style and have a lighter background %notification_button { font-weight: bold; padding: $base_padding $base_padding * 2; border-radius: $base_border_radius; @include button(normal, $style: notification); &:focus { @include button(focus, $style: notification);} &:hover { @include button(hover, $style: notification);} &:active { @include button(active, $style: notification);} &:checked { @include button(checked, $style: notification);} &:insensitive { @include button(insensitive, $style: notification);} } // buttons in dialogs %dialog_button { font-weight: bold; padding: $base_padding * 2; border-radius: $base_border_radius * 1.5; @include button(normal, $style: dialog); &:focus { @include button(focus, $style: dialog);} &:hover { @include button(hover, $style: dialog);} &:active { @include button(active, $style: dialog);} &:checked { @include button(checked, $style: dialog);} &:insensitive { @include button(insensitive, $style: dialog);} } // tooltip %tooltip { background-color: transparentize(black, 0.1); border: 1px solid transparentize($light_1, 0.9); color: $light_1; border-radius: $forced_circular_radius; padding: $base_padding $base_padding * 2; text-align: center; @if $contrast == 'high' { background-color: black; border-color: $hc_inset_color; } } /* General Typography */ %large_title { font-weight: 300; @include fontsize(24pt); } %title_1 { font-weight: 800; @include fontsize(20pt); } %title_2 { font-weight: 800; @include fontsize(15pt); } %title_3 { font-weight: 700; @include fontsize(15pt); } %title_4 { font-weight: 700; @include fontsize(13pt); } %heading { font-weight: 700; @include fontsize(11pt); } %caption_heading { font-weight: 700; @include fontsize(9pt); } %caption { font-weight: 400; @include fontsize(9pt); } %smaller { font-weight: 400; @include fontsize(9pt); } %monospace {font-family: monospace;} %numeric { font-feature-settings: "tnum";} /* OSD Elements */ %osd_panel { color: $osd_fg_color; background-color: $osd_bg_color; border: 1px solid $osd_outer_borders_color; border-radius: $forced_circular_radius; padding: $base_padding * 2; @if $contrast == 'high' { @include draw_hc_inset($width: 2px,$border: true); } } // entries %osd_entry { @extend %entry_common; @include entry(normal, $c:$osd_fg_color, $bc:$osd_bg_color, $always_dark: true); &:hover { @include entry(hover, $c:$osd_fg_color, $bc:$osd_bg_color, $always_dark: true);} &:focus { @include entry(focus, $c:$osd_fg_color, $bc:$osd_bg_color, $always_dark: true);} &:insensitive { @include entry(insensitive, $c:$osd_fg_color, $bc:$osd_bg_color, $always_dark: true);} StLabel.hint-text {color: transparentize($osd_fg_color, 0.3); } } // buttons on OSD elements %osd_button { @extend %button_common; @include button(normal, $tc:$osd_fg_color, $c:$osd_bg_color, $always_dark: true); &:focus { @include button(focus, $tc:$osd_fg_color, $c:$osd_bg_color, $always_dark: true);} &:hover { @include button(hover, $tc:$osd_fg_color, $c:$osd_bg_color, $always_dark: true);} &:active { @include button(active, $tc:$osd_fg_color, $c:$osd_bg_color, $always_dark: true);} &:checked { @include button(checked, $tc:$osd_fg_color, $c:$osd_bg_color, $always_dark: true);} &:insensitive { @include button(insensitive, $tc:$osd_fg_color, $c:$osd_bg_color, $always_dark: true);} } %osd_button_flat { @extend %button_common; @include button(normal, $tc:$osd_fg_color, $c:$osd_bg_color, $style: flat, $always_dark: true); &:focus { @include button(focus, $tc:$osd_fg_color, $c:$osd_bg_color, $style: flat, $always_dark: true);} &:hover { @include button(hover, $tc:$osd_fg_color, $c:$osd_bg_color, $style: flat, $always_dark: true);} &:active { @include button(active, $tc:$osd_fg_color, $c:$osd_bg_color, $style: flat, $always_dark: true);} &:checked { @include button(checked, $tc:$osd_fg_color, $c:$osd_bg_color, $style: flat, $always_dark: true);} &:insensitive { @include button(insensitive, $tc:$osd_fg_color, $c:$osd_bg_color, $style: flat, $always_dark: true);} } /* System Elements */ // entries %system_entry { @extend %entry_common; @include entry(normal, $c:$system_fg_color, $bc:$system_bg_color, $always_dark: true); &:hover { @include entry(hover, $c:$system_fg_color, $bc:$system_bg_color, $always_dark: true);} &:focus { @include entry(focus, $c:$system_fg_color, $bc:$system_bg_color, $always_dark: true);} &:insensitive { @include entry(insensitive, $c:$system_fg_color, $bc:$system_bg_color, $always_dark: true);} StLabel.hint-text { color: transparentize($system_fg_color, 0.3);} } // buttons %system_button { @include button(normal, $tc:$system_fg_color, $c:$system_bg_color); &:insensitive { @include button(insensitive, $tc:$system_fg_color, $c:$system_bg_color);} &:focus { @include button(focus, $tc:$system_fg_color, $c:$system_bg_color);} &:hover { @include button(hover, $tc:$system_fg_color, $c:$system_bg_color);} &:active { @include button(active, $tc:$system_fg_color, $c:$system_bg_color);} &:checked { @include button(checked, $tc:$system_fg_color, $c:$system_bg_color);} } /* Lockscreen Elements */ // buttons %lockscreen_button { @extend %button_common; @include button(normal, $tc:$system_fg_color, $style: lockscreen); &:focus { @include button(focus, $tc:$system_fg_color, $style: lockscreen);} &:hover { @include button(hover, $tc:$system_fg_color, $style: lockscreen);} &:active { @include button(active, $tc:$system_fg_color, $style: lockscreen);} &:checked { @include button(checked, $tc:$system_fg_color, $style: lockscreen);} &:insensitive { @include button(insensitive, $tc:$system_fg_color, $style: lockscreen);} } // entries %lockscreen_entry { @extend %entry_common; @include entry(normal, $c:$system_fg_color, $style: lockscreen, $always_dark: true); &:hover { @include entry(hover, $c:$system_fg_color, $style: lockscreen, $always_dark: true);} &:focus { @include entry(focus, $c:$system_fg_color, $style: lockscreen, $always_dark: true);} &:insensitive { @include entry(insensitive, $c:$system_fg_color, $style: lockscreen, $always_dark: true);} StLabel.hint-text { color: transparentize($system_fg_color, 0.3);} } 07070100000109000081A40000000000000000000000016712993F000006EC000000000000000000000000000000000000004200000000gnome-shell-47.1/data/theme/gnome-shell-sass/_default-colors.scss// Named Colors // base colors $_base_color_dark: desaturate($dark_4, 100%); $_base_color_light: desaturate($light_2, 100%); // colors for destructive elements $destructive_bg_color: if($variant == 'light', $red_3, $red_4); $destructive_fg_color: $light_1; $destructive_color: $destructive_bg_color; // colors for levelbars, entries, labels and infobars $success_bg_color: if($variant == 'light', $green_4, $green_5); $success_fg_color: $light_1; $success_color: $success_bg_color; $warning_bg_color: if($variant == 'light', $yellow_4, $yellow_3); $warning_fg_color: transparentize(black, .2); $warning_color: $warning_bg_color; $error_bg_color: if($variant == 'light', $red_3, $red_4); $error_fg_color: $light_1; $error_color: $error_bg_color; // link colors $link_color: if($variant == 'light', st-darken(-st-accent-color, 10%), st-lighten(-st-accent-color, 20%)); $link_visited_color: st-transparentize($link_color, .6); // special cased widget definitions $background_mix_factor: if($variant == 'light', 12%, 9%); // used to boost the color of backgrounds in different variants $border_opacity: if($variant == 'light', .85, .9); // change the border opacity in different variants // shadows $shadow_color: if($variant == 'light', rgba(0,0,0,.05), rgba(0,0,0,0.2)); $text_shadow_color: if($variant == 'light', rgba(255,255,255,0.3), rgba(0,0,0,0.2)); // focus colors $focus_color: -st-accent-color; $focus_border_color: st-transparentize($focus_color, 0.5); // High Contrast overrides @if $contrast == 'high' { // increase border opacity $border_opacity: .5; // remove shadows $shadow_color: transparent; $text_shadow_color: transparent; // less transparent focus color $focus_border_color: st-transparentize($focus_color, 0.2); } 0707010000010A000081A40000000000000000000000016712993F00003DB0000000000000000000000000000000000000003B00000000gnome-shell-47.1/data/theme/gnome-shell-sass/_drawing.scss// // Drawing functions // // Function to convert px values to em @function to_em($input, $base: 16px) { // multiplied and divided by 1000 to make up for round() shortcoming $em_value: ($input / $base) * 1.091 * 1000; @return round($em_value) / 1000 * 1em; } // Boost the contrast of a color by mixing it with high contrast defined colors @function hc_color_mix($c, $mc:$hc_mix_color, $mf:$hc_mix_factor) { // // $c: input color // $mc: mix color, defined in High Contrast specific stylesheet // $mf: mix factor (%), defined in High Contrast specific stylesheet // @return st-mix($c, $mc, $mf); } // Function to mix the color and make the focus background @function focus_bg_color($bg, $fc:$focus_color) { @return st-mix($fc, $bg, 5%); } // // Drawing mixins // // Draw the inset for High Contrast elements @mixin draw_hc_inset($width: 1px, $ic: $hc_inset_color, $border: false, $no_inset: false) { // // $width width of the inset, in pixels // $ic color of the inset // // $border if true, use a border instead of a box-shadow to draw inset // $no_inset if true, override the mixin to not draw an iset // box-shadow: inset 0 0 0 $width $ic; // draw inset as border @if $border { border: $width solid $ic; box-shadow: none; } // don't draw an inset at all @if $no_inset { box-shadow: none; border: none; } } // Draw the focus ring @mixin focus_ring($width: 2px, $fc: $focus_border_color, $border: false) { box-shadow: inset 0 0 0 $width $fc !important; @if $border { border:$width solid $fc !important; box-shadow: none; } } // Mixin to convert provided font size in pt to em units @mixin fontsize($size, $base: 16px, $unit: pt) { // if pt, convert into unitless value with the assumption: 1pt = 1.091px $adjusted_size: if($unit == pt, $size * 1.091, $size) * 1000; $rounded_size: round($adjusted_size / $base) / 1000; font-size: $rounded_size * 1em; // font-size: round($size) + pt; } // Function to fill the background of a panel button @mixin panel_button_fill($bg) { // use a box-shadow to fill the background // this is done because panel buttons use a transparent border to fake padding box-shadow: inset 0 0 0 100px $bg; } // Text entries drawing function @mixin entry($type, $c:$fg_color, $bc:$bg_color, $style: null, $always_dark: false) { // // $type: entry type, possible values: normal, focus, hover, insensitive // $c: text color // $bc: background color // $always_dark: override the light theme check to use dark colors, true or false // // entry colors $entry_fg_color: $c; $entry_bg_color: mix($c, $bc, $background_mix_factor); $entry_focus_color: $focus_color; // entry color overrides for lockscreen style @if $style == 'lockscreen' { $entry_bg_color: transparentize($c, .9); $entry_focus_color: transparentize($entry_fg_color, 0.6); @if $contrast == 'high' { $entry_focus_color: transparentize($entry_fg_color, 0.3); } } // background color adjustment factors // the % a color is lightened or darkened for button states $hover_factor: 4%; $insensitive_factor: 3%; // entry state background colors $hover_entry_bg_color: if($variant == 'light', darken($entry_bg_color, $hover_factor), lighten($entry_bg_color, $hover_factor)); $insensitive_entry_bg_color: if($variant == 'light', lighten($entry_bg_color, $insensitive_factor), darken($entry_bg_color, $insensitive_factor)); // override entry background colours if element is always dark @if $always_dark { $hover_entry_bg_color: lighten($entry_bg_color, $hover_factor); $insensitive_entry_bg_color: darken($entry_bg_color, $insensitive_factor); } @if $contrast == 'high' { @include draw_hc_inset(); } // normal @if $type == 'normal' { background-color: $entry_bg_color; color: transparentize($c, 0.3); } // focus styles @if $type == 'focus' { @include focus_ring(); background-color: focus_bg_color($entry_bg_color); color: $entry_fg_color; // lockscreen style @if $style == 'lockscreen' { @include focus_ring($fc:$entry_focus_color); background-color: focus_bg_color($entry_bg_color, $fc:$entry_focus_color); } } // hover styles @if $type == 'hover' { background-color: $hover_entry_bg_color; color: $entry_fg_color; } // insensitive styles @if $type == 'insensitive' { background-color: $insensitive_entry_bg_color; color: transparentize($entry_fg_color, 0.5); } } // Button drawing function @mixin button($type, $tc:$fg_color, $c:$bg_color, $style: null, $always_dark: false) { // // $type: button type, possible values: // - normal, focus, hover, active, checked, insensitive, default, undecorated // $c: button bg color, derived from bg_color // $tc: button text color, derived from fg_color // $style: button style, possible values: card, notification, dialog, flat, default // $always_dark: override the light theme check to use dark colors, true or false // // mix input colors to get button background color $button_bg_color: st-mix($tc, $c, $background_mix_factor); // background color override for card elements @if $style == 'card' { $button_bg_color: $card_bg_color;} // background color mix override for flat style; the button bg color is the background color input @if $style == 'flat' { $button_bg_color: $c;} // background color mix override for default button style @if $style == 'default' { $button_bg_color: $c;} // background color adjustment factors // the % a color is lightened or darkened for button states $hover_factor: 4%; $active_factor: 9%; $checked_factor: 8%; $insensitive_factor: 3%; // flat style overrides @if $style == 'flat' { $hover_factor: 7%; // stronger factor in flat style } // button base state background colors $hover_button_bg_color: if($variant == 'light', st-darken($button_bg_color, $hover_factor), st-lighten($button_bg_color, $hover_factor)); $active_button_bg_color: if($variant == 'light', st-darken($button_bg_color, $active_factor), st-lighten($button_bg_color, $active_factor)); $checked_button_bg_color: if($variant == 'light', st-darken($button_bg_color, $checked_factor), st-lighten($button_bg_color, $checked_factor)); $insensitive_button_bg_color: if($variant == 'light', st-lighten($button_bg_color, $insensitive_factor), st-darken($button_bg_color, $insensitive_factor)); // button extended state background colors $active_hover_button_bg_color: if($variant == 'light', st-darken($active_button_bg_color, $hover_factor), st-lighten($active_button_bg_color, $hover_factor)); $checked_hover_button_bg_color: if($variant == 'light', st-darken($checked_button_bg_color, $hover_factor), st-lighten($checked_button_bg_color, $hover_factor)); $checked_active_button_bg_color: if($variant == 'light', st-darken($checked_button_bg_color, $active_factor), st-lighten($checked_button_bg_color, $active_factor)); // override button background colours if element is always dark @if $always_dark { $hover_button_bg_color: st-lighten($button_bg_color, $hover_factor); $active_button_bg_color: st-lighten($button_bg_color, $active_factor); $checked_button_bg_color: st-lighten($button_bg_color, $checked_factor); $insensitive_button_bg_color: st-darken($button_bg_color, $insensitive_factor); // extended $active_hover_button_bg_color: st-lighten($active_button_bg_color, $hover_factor); $checked_hover_button_bg_color: st-lighten($checked_button_bg_color, $hover_factor); $checked_active_button_bg_color: st-lighten($checked_button_bg_color, $active_factor); } // background color override for buttons that use transparency // styles: dialogs bubbles, lockscreen @if $style == 'dialog' or $style == 'lockscreen' { $button_bg_color: transparentize($tc, .9); $hover_button_bg_color: transparentize($tc, .87); $active_button_bg_color: transparentize($tc, .84); $active_hover_button_bg_color: transparentize($tc, .81); } // background color overrides for notification style @if $style == 'notification' { $button_bg_color: transparentize($tc, .85); $hover_button_bg_color: transparentize($tc, .7); $insensitive_button_bg_color: transparentize($tc, .9); $active_button_bg_color: transparentize($tc, .8); $active_hover_button_bg_color: transparentize($tc, .8); } // flat style overrides @if $style == 'flat' { $insensitive_button_bg_color: $button_bg_color; } // high contrast overrides @if $contrast == 'high' { // override button background colors for high contrast $button_bg_color: hc_color_mix($button_bg_color); $hover_button_bg_color: hc_color_mix($hover_button_bg_color); $active_button_bg_color: hc_color_mix($active_button_bg_color); $checked_button_bg_color: hc_color_mix($checked_button_bg_color); // also draw the inset border @include draw_hc_inset(); // duplicate flat bg color for High Contrast @if $style == 'flat' { $button_bg_color: $c; } @if $style == 'default' { @include draw_hc_inset($no_inset: true); } } // normal style @if $type == 'normal' { color: $tc; background-color: $button_bg_color; // no inset in High Contrast when the style is flat @if $style == 'flat' and $contrast == 'high' { @include draw_hc_inset($no_inset: true); } } // hover button @else if $type == 'hover' { color: $tc; background-color: $hover_button_bg_color; } // active button @else if $type == 'active' { color: $tc; background-color: $active_button_bg_color; &:hover { background-color: $active_hover_button_bg_color;} &:focus { // otherwise use focus bg color mixin $bg: focus_bg_color($active_button_bg_color); background-color: $bg; } } // checked button @else if $type == 'checked' { color: $tc; background-color: $checked_button_bg_color; &:hover { background-color: $checked_hover_button_bg_color;} &:active { background-color: $checked_active_button_bg_color;} } // insensitive button @else if $type == 'insensitive' { $insensitive_button_fg_color: if($variant == 'light', st-transparentize($tc, .6), st-transparentize($tc, .5)); color: $insensitive_button_fg_color; background-color: $insensitive_button_bg_color; // no outline in High Contrast for insensitive buttons @if $contrast == 'high' { @include draw_hc_inset($no_inset: true); } } // focused button @else if $type == 'focus' { color: $tc; @include focus_ring(); // use a different focus ring color for default style @if $style == 'default' { @include focus_ring($fc:$accent_borders_color); } // change background color if style is flat @if $style == 'flat' { $button_bg_color: transparentize($button_bg_color, 0.75); } background-color: focus_bg_color($button_bg_color); &:hover { background-color: focus_bg_color($hover_button_bg_color); } } // reset (unstyled button) @else if $type == 'undecorated' { background-color: transparent; border-color: transparent; box-shadow: none; &:insensitive { background-color: transparent !important; } } } // Helper mixin for button-like elements with an icon @mixin tile_button($fg:$system_fg_color, $bg:$system_bg_color, $raised: false, $system: true) { // // $fg: foreground color // $bg: background color // // $raised: uses raised style, true or false // $system: uses system styles, true or false // @extend %tile; @if $raised { @include button(normal, $tc:$fg, $c:$bg, $always_dark: $system); &:focus { @include button(focus, $tc:$fg, $c:$bg, $always_dark: $system);} &:hover { @include button(hover, $tc:$fg, $c:$bg, $always_dark: $system);} &:active { @include button(active, $tc:$fg, $c:$bg, $always_dark: $system);} &:highlighted,&:selected, &:checked { @include button(checked, $tc:$fg, $c:$bg, $always_dark: $system);} &:insensitive { @include button(insensitive, $tc:$fg, $c:$bg, $always_dark: $system);} } @else { @include button(normal, $tc:$fg, $c:$bg, $style: flat, $always_dark: $system); &:focus { @include button(focus, $tc:$fg, $c:$bg, $style: flat, $always_dark: $system);} &:hover { @include button(hover, $tc:$fg, $c:$bg, $style: flat, $always_dark: $system);} &:active { @include button(active, $tc:$fg, $c:$bg, $style: flat, $always_dark: $system);} &:highlighted,&:selected, &:checked { @include button(checked, $tc:$fg, $c:$bg, $style: flat, $always_dark: $system);} &:insensitive { @include button(insensitive, $tc:$fg, $c:$bg, $style: flat, $always_dark: $system);} } &:drop { background-color: st-transparentize(-st-accent-color, .8); box-shadow: inset 0 0 0 2px st-transparentize(-st-accent-color, .2); } } // styling for all menuitems in popovers @mixin menuitem($bg, $style: flat) { // extend common styles @extend %menuitem; @if $style == 'flat' { @include button(undecorated); } @else { @include button(normal, $c:$bg); } &:hover { @include button(hover, $c:$bg); } &:active {@include button(active, $c:$bg);} &:selected, &:checked {@include button(checked, $c:$bg);} &:insensitive {@include button(insensitive, $c:$bg);} } // Panel menu/button drawing function @mixin panel_button($bg:$panel_fg_color, $fg:$panel_fg_color, $style: null, $highlighted_child: false, $child_class:"") { // // $bg: background color, derived from $panel_fg_color // $fg: foreground color, also derived from $panel_fg_color // $style: can be set to 'filled' if button uses a colored background // // $highlighted_child: if true, applies some special overrides for to a // child element, see _panel.scss for details // $child_class: class name of the child element // transition-duration: 150ms; border: 3px solid transparent; background-color: transparent; border-radius: $forced_circular_radius; font-weight: bold; color: $fg; // background fill defines $fill: transparent; $hover_fill: transparentize($fg, .83); $active_fill: transparentize($fg, .72); $active_hover_fill: transparentize($fg, .68); @if $style == 'filled' { $fill: $bg; $hover_fill: if($variant == 'light', darken($bg, 5%), lighten($bg, 5%)); $active_fill: if($variant == 'light', darken($bg, 9%), lighten($bg, 9%)); $active_hover_fill: if($variant == 'light', darken($bg, 11%), lighten($bg, 11%)); } @include panel_button_fill($fill); &:focus, &:hover { @include panel_button_fill($hover_fill); } &:active, &:checked { @include panel_button_fill($active_fill); &:hover{ @include panel_button_fill($active_hover_fill); } } // some overrides to style a child element @if $highlighted_child { // remove the common styles from the parent background: none !important; box-shadow: none !important; border: none !important; // add them to the child #{$child_class} { transition-duration: 150ms; border: 3px solid transparent; border-radius: $forced_circular_radius; } &:focus, &:hover { #{$child_class} { @include panel_button_fill($hover_fill); } } &:active, &:checked { #{$child_class} { @include panel_button_fill($active_fill); &:hover { @include panel_button_fill($active_hover_fill); } } } } } 0707010000010B000081A40000000000000000000000016712993F0000081A000000000000000000000000000000000000004800000000gnome-shell-47.1/data/theme/gnome-shell-sass/_high-contrast-colors.scss// // High Contrast theme definitions // // this is an always dark theme, so no 'light' theme conditions @import '_palette.scss'; @import '_default-colors.scss'; // global colors $base_color: $dark_5; $bg_color: lighten($base_color, 10%); $fg_color: $light_1; // OSD elements $osd_fg_color: $light_1; $osd_bg_color: $base_color; // system elements $system_base_color: $dark_5; $system_fg_color: $light_1; // panel colors $panel_bg_color: $dark_5; $panel_fg_color: $light_1; // card elements $card_bg_color: $bg_color; $card_shadow_color: transparent; $card_shadow_border_color: $card_bg_color; // // Derived Colors // // colors based on the global defines above // borders $borders_color: transparentize($fg_color, $border_opacity); $outer_borders_color: $borders_color; // osd colors $osd_borders_color: transparentize($osd_fg_color, 0.8); $osd_outer_borders_color: $osd_borders_color; // system colors $system_bg_color: lighten($system_base_color, 5%); $system_borders_color: transparentize($system_fg_color, .9); $system_insensitive_fg_color: mix($system_fg_color, $system_bg_color, 50%); $system_overlay_bg_color: mix($system_bg_color, $system_fg_color, 90%); // insensitive state $insensitive_fg_color: $fg_color; $insensitive_bg_color: mix($bg_color, $base_color, 60%); $insensitive_borders_color: $borders_color; // checked state $checked_bg_color: lighten($bg_color, 18%); $checked_fg_color: lighten($fg_color, 18%); // hover state $hover_bg_color: lighten($bg_color, 20%); $hover_fg_color: lighten($fg_color, 20%); // active state $active_bg_color: lighten($bg_color, 22%); $active_fg_color: lighten($fg_color, 22%); // accent colors $accent_borders_color: st-lighten(-st-accent-color, 30%); // // High Contrast specific definitions // // color for outline drawn onto all elements (may be a border or a box-shadow) $hc_inset_color: transparentize($fg_color, 0.6); // color used in a mixin in _drawing to boost a color's contrast $hc_mix_color: $light_1; // the mix factor used to boost contrast of a color in the above mixin $hc_mix_factor: 87%; 0707010000010C000081A40000000000000000000000016712993F00000367000000000000000000000000000000000000003B00000000gnome-shell-47.1/data/theme/gnome-shell-sass/_palette.scss//GNOME Color Palette $blue_1: #99c1f1; $blue_2: #62a0ea; $blue_3: #3584e4; $blue_4: #1c71d8; $blue_5: #1a5fb4; $green_1: #8ff0a4; $green_2: #57e389; $green_3: #33d17a; $green_4: #2ec27e; $green_5: #26a269; $yellow_1: #f9f06b; $yellow_2: #f8e45c; $yellow_3: #f6d32d; $yellow_4: #f5c211; $yellow_5: #e5a50a; $orange_1: #ffbe6f; $orange_2: #ffa348; $orange_3: #ff7800; $orange_4: #e66100; $orange_5: #c64600; $red_1: #f66151; $red_2: #ed333b; $red_3: #e01b24; $red_4: #c01c28; $red_5: #a51d2d; $purple_1: #dc8add; $purple_2: #c061cb; $purple_3: #9141ac; $purple_4: #813d9c; $purple_5: #613583; $brown_1: #cdab8f; $brown_2: #b5835a; $brown_3: #986a44; $brown_4: #865e3c; $brown_5: #63452c; $light_1: #ffffff; $light_2: #f6f5f4; $light_3: #deddda; $light_4: #c0bfbc; $light_5: #9a9996; $dark_1: #77767b; $dark_2: #5e5c64; $dark_3: #3d3846; $dark_4: #241f31; $dark_5: #000000;0707010000010D000081A40000000000000000000000016712993F0000050D000000000000000000000000000000000000003B00000000gnome-shell-47.1/data/theme/gnome-shell-sass/_widgets.scss// // Shell widgets stylesheets are placed in separate .scss files // in 'widgets' and imported into the main stylesheet in this file. // To create or update a widget for the shell modify the list below. // /* WIDGETS */ // Primary widgets @import 'widgets/base'; @import 'widgets/entries'; @import 'widgets/buttons'; @import 'widgets/check-box'; @import 'widgets/switches'; @import 'widgets/slider'; @import 'widgets/scrollbars'; // Popovers @import 'widgets/popovers'; @import 'widgets/calendar'; @import 'widgets/message-list'; @import 'widgets/ibus-popup'; // Notifications @import 'widgets/notifications'; // Dialogs @import 'widgets/dialogs'; // OSDs @import 'widgets/osd'; @import 'widgets/switcher-popup'; @import 'widgets/workspace-switcher'; @import 'widgets/screenshot'; // Panel @import 'widgets/panel'; @import 'widgets/corner-ripple'; @import 'widgets/quick-settings'; // Overview @import 'widgets/overview'; @import 'widgets/window-picker'; @import 'widgets/search-entry'; @import 'widgets/search-results'; @import 'widgets/dash'; @import 'widgets/app-grid'; @import 'widgets/workspace-thumbnails'; // A11y / misc @import 'widgets/a11y'; @import 'widgets/misc'; @import 'widgets/keyboard'; @import 'widgets/looking-glass'; // Lock / login screen @import 'widgets/login-lock'; 0707010000010E000081A40000000000000000000000016712993F0000058B000000000000000000000000000000000000004300000000gnome-shell-47.1/data/theme/gnome-shell-sass/gnome-shell-sass.doap GNOME Shell Sass Sass sources of GNOME Shell GNOME Shell Sass is a project intended to allow the sharing of the sass theme sources between gnome-shell and other projects like gnome-shell-extensions. sass css Carlos Soriano csoriano Florian Müllner fmuellner Jakub Steiner jimmac 0707010000010F000041ED0000000000000000000000026712993F00000000000000000000000000000000000000000000003500000000gnome-shell-47.1/data/theme/gnome-shell-sass/widgets07070100000110000081A40000000000000000000000016712993F000002B7000000000000000000000000000000000000004000000000gnome-shell-47.1/data/theme/gnome-shell-sass/widgets/_a11y.scss// Pointer location .ripple-pointer-location { width: $ripple_size; height: $ripple_size; border-radius: $ripple_size * 0.5; // radius equals the size of the box to give us the curve background-color: st-lighten(st-transparentize(-st-accent-color, 0.7), 30%); box-shadow: 0 0 2px 2px st-lighten(-st-accent-color, 20%); } // Pointer accessibility notifications .pie-timer { width: 60px; height: 60px; -pie-border-width: 3px; -pie-border-color: -st-accent-color; -pie-background-color: st-lighten(st-transparentize(-st-accent-color, 0.7), 40%); } // Screen zoom/Magnifier .magnifier-zoom-region { border: 2px solid -st-accent-color; &.full-screen { border-width: 0; } } 07070100000111000081A40000000000000000000000016712993F0000131C000000000000000000000000000000000000004400000000gnome-shell-47.1/data/theme/gnome-shell-sass/widgets/_app-grid.scss/* App Grid */ $app_icon_size: 96px; $app_folder_size: 720px; // app icons .icon-grid { row-spacing: $base_padding * 2; column-spacing: $base_padding * 2; max-row-spacing: $base_padding * 6; max-column-spacing: $base_padding * 6; page-padding-top: $base_padding * 4; page-padding-bottom: $base_padding * 4; page-padding-left: $base_padding * 3; page-padding-right: $base_padding * 3; } /* App Icons */ // items in the app grid and dash .overview-tile { @include tile_button($bg:$system_base_color); // override the %tile style border-radius: $base_border_radius*3; padding: $base_padding * 2; // the icon itself .overview-icon { // item with a label &.overview-icon-with-label { > StBoxLayout { spacing: $base_padding; } } } } // app folders .app-folder { @include tile_button($bg:$system_base_color, $raised: true); } // Running app indicator (also shown in dash) .app-grid-running-dot { height: 5px; width: 5px; border-radius:5px; background-color: $system_fg_color; offset-y: 6px; } .app-folder-dialog-container { // pad the top with panel height so the folder doesn't overlap the panel on smaller resolutions padding-top: $panel_height; } // Expanded app folder dialog .app-folder-dialog { width: $app_folder_size; height: $app_folder_size; border-radius: $modal_radius * 4; background-color: $system_overlay_bg_color; color: $system_fg_color; @if $contrast == 'high' { padding: 0 2px; box-shadow: inset 0 0 0 2px $hc_inset_color; } @else { padding: 0 1px; box-shadow: inset 0 0 0 1px $system_borders_color; } & .folder-name-container { padding: $base_padding * 4 $base_padding * 6; padding-bottom: 0; & .folder-name-label, & .folder-name-entry { @extend %title_1; } & .folder-name-entry { @extend %system_entry; width: 12em; } } & .icon-button { @include button(normal, $tc:$system_fg_color, $c:$system_overlay_bg_color, $always_dark: true); &:hover { @include button(hover, $tc:$system_fg_color, $c:$system_overlay_bg_color, $always_dark: true);} &:active { @include button(active, $tc:$system_fg_color, $c:$system_overlay_bg_color, $always_dark: true);} } & .page-indicators { margin-bottom: $base_padding * 4; } & .page-navigation-arrow { @include button(normal, $tc:$system_fg_color, $c:$system_overlay_bg_color, $style: flat, $always_dark: true); &:hover { @include button(hover, $tc:$system_fg_color, $c:$system_overlay_bg_color, $style: flat, $always_dark: true);} &:active { @include button(active, $tc:$system_fg_color, $c:$system_overlay_bg_color, $style: flat, $always_dark: true);} } & .overview-tile { @include tile_button($bg:$system_overlay_bg_color); } } // Rename popup for app folders .rename-folder-popup { .rename-folder-popup-item { spacing: $base_padding; &:ltr, &:rtl { padding: 0 $base_padding * 2; } } } // App Grid pagination indicators $page_indicator_size: 10px; .page-indicator { padding: $base_padding $base_padding * 2 0; transition-duration:400ms; .page-indicator-icon { width: $page_indicator_size; height: $page_indicator_size; border-radius: $forced_circular_radius; background-color: $system_fg_color; transition-duration: 400ms; } } .apps-scroll-view { padding: 0; } // shutdown and other actions in the grid .system-action-icon { background-color: transparentize($system_fg_color,.9); color: $system_fg_color; border-radius: $forced_circular_radius; icon-size: $app_icon_size * 0.5; @if $contrast == 'high' { box-shadow: inset 0 0 0 2px $hc_inset_color; } } // page navigation .page-navigation-hint { &.dnd { background: rgba(255, 255, 255, 0.1); } &.next:ltr, &.previous:rtl { background-gradient-start: rgba(255, 255, 255, 0.05); background-gradient-end: transparent; background-gradient-direction: horizontal; border-radius: $modal_radius * 1.5 0px 0px $modal_radius * 1.5; } &.previous:ltr, &.next:rtl { background-gradient-start: transparent; background-gradient-end: rgba(255, 255, 255, 0.05); background-gradient-direction: horizontal; border-radius: 0px $modal_radius * 1.5 $modal_radius * 1.5 0px; } } .page-navigation-arrow { margin: $base_padding; padding: $base_padding * 3; width: $medium_icon_size; height: $medium_icon_size; border-radius: $forced_circular_radius; transition-duration: 100ms; > StIcon { color: $system_fg_color;} @include button(normal, $tc:$system_fg_color, $c:$system_base_color, $style: flat, $always_dark: true); &:hover { @include button(hover, $tc:$system_fg_color, $c:$system_base_color, $style: flat, $always_dark: true);} &:active { @include button(active, $tc:$system_fg_color, $c:$system_base_color, $style: flat, $always_dark: true);} } 07070100000112000081A40000000000000000000000016712993F0000015A000000000000000000000000000000000000004000000000gnome-shell-47.1/data/theme/gnome-shell-sass/widgets/_base.scss// Links .shell-link { color: $link_color; &:hover { color: st-lighten($link_color, 10%); } } // Outline for low res icons .lowres-icon { icon-shadow: 0 1px 2px rgba(black, 0.2); } // Dropshadow for large icons .icon-dropshadow { icon-shadow: 0 2px 4px rgba(black, 0.4); @if $contrast == 'high' { icon-shadow: none; } } 07070100000113000081A40000000000000000000000016712993F00000269000000000000000000000000000000000000004300000000gnome-shell-47.1/data/theme/gnome-shell-sass/widgets/_buttons.scss/* Buttons */ .button { @extend %button; // uses scalable value since it's a text element min-height: to_em(22px); // default style &.default { @extend %default_button; } // flat style &.flat { @extend %flat_button; } } .icon-button { @extend %button; border-radius: $forced_circular_radius; // is circular padding: $scaled_padding * 2; min-height: $scalable_icon_size; StIcon { icon-size: $scalable_icon_size; -st-icon-style: symbolic; } // default style &.default { @extend %default_button; } // flat style &.flat { @extend %flat_button; } } 07070100000114000081A40000000000000000000000016712993F000016DE000000000000000000000000000000000000004400000000gnome-shell-47.1/data/theme/gnome-shell-sass/widgets/_calendar.scss/* Date/Time Menu */ // overall menu #calendarArea { padding: $base_margin; } .datemenu-popover { border-radius: $base_border_radius * 1.5 + $base_padding * 3; } // calendar menu side column .datemenu-calendar-column { spacing: $base_padding; &:ltr { margin-left: $base_padding;} &:rtl { margin-right: $base_padding;} .datemenu-displays-box { spacing: $base_padding; } } // today button (the date) .datemenu-today-button { @extend %card_flat; padding: $base_padding * 1.5; // weekday label .day-label { font-weight: bold; } // date label .date-label { @extend %title_2; } } // the mini calendar .calendar { @extend %card_flat; margin-top: 0; padding: 0; // month header .calendar-month-header { // prev/next month icons .calendar-change-month-back StIcon, .calendar-change-month-forward StIcon { icon-size: $scalable_icon_size; } // month label .calendar-month-label { @extend %heading; @extend %flat_button; color: $fg_color !important; padding: 8px 0; width: 10em; border-radius: $forced_circular_radius; text-align: center; } .pager-button { @extend .icon-button, .flat; height: 2.6em; width: 2.6em; padding: 0; } } // day style .calendar-day { @extend %numeric; @extend %smaller; @extend %flat_button; border-radius: $forced_circular_radius; height: 3em; width: 3em; margin: 2px; padding: 0; font-weight: bold; text-align: center; &.calendar-weekday {} &.calendar-weekend { color: $insensitive_fg_color; @if $contrast == 'high' { font-style: italic; } } &.calendar-other-month { color: transparentize($fg_color, 0.5); font-weight: normal; &.calendar-weekend { color: transparentize($fg_color, 0.5); @if $contrast == 'high' { color: $fg_color; } } @if $contrast == 'high' { color: $fg_color; font-style: italic; // differentiate with a font-style instead of text color } } &.calendar-today { @extend %default_button; // override colors above for when today is a weekend color: -st-accent-fg-color !important; &.calendar-day-with-events { background-image: url("resource:///org/gnome/shell/theme/calendar-today.svg") !important; // always use light asset with .default style } } &.calendar-day-with-events { background-image: if($variant == 'light', url("resource:///org/gnome/shell/theme/calendar-today-light.svg"),url("resource:///org/gnome/shell/theme/calendar-today.svg")); background-size: contain; } } // day of week heading .calendar-day-heading { @extend %numeric; @extend %smaller; @extend %flat_button; font-weight: bold; text-align: center; margin: $base_margin; padding: $base_padding * 0.5 $base_padding; border-radius: $base_border_radius; } // week number style .calendar-week-number { @extend %smaller; font-weight: bold; font-feature-settings: "tnum"; text-align: center; margin: $base_padding; padding: 0 $base_padding; border-radius: $base_border_radius * 0.5; background-color: transparentize($insensitive_fg_color, .8); color: $insensitive_fg_color; } } // common style for the date menu widgets .events-button, .world-clocks-button, .weather-button { @extend %card; } // events .events-button { .events-box { // event title .events-title { @extend %heading; color: $insensitive_fg_color; padding-bottom: $base_padding; } // list of events .events-list { spacing: $base_padding; // container for an event .event-box { spacing: $base_padding; border-radius: $base_border_radius; .event-summary { @extend %heading; } .event-time { @extend %numeric; @extend %caption; color: $insensitive_fg_color; } } .event-placeholder { color: $insensitive_fg_color; font-style: italic; } } } } // world clocks .world-clocks-button { // title .world-clocks-header { @extend %heading; color: $insensitive_fg_color; // change style when no world clocks are configured &.no-world-clocks { color: $fg_color; } } // clocks .world-clocks-grid { spacing-rows: $base_padding; spacing-columns: $base_padding * 2; // city label .world-clocks-city { } // timezone time .world-clocks-time { @extend %numeric; font-weight: bold; &:ltr {text-align: right;} &:rtl {text-align: left;} } // timezone offset label .world-clocks-timezone { @extend %numeric; @extend %caption; color: $insensitive_fg_color; } } } // weather .weather-button { .weather-box { spacing: $base_padding; // header .weather-header-box { spacing: $base_padding; .weather-header { @extend %heading; color: $insensitive_fg_color; // change style when no location is configured &.no-location { color: $fg_color; } &.location { font-weight: normal; } } } // weather items .weather-grid { spacing-rows: $base_padding; spacing-columns: $base_padding * 2; .weather-forecast-time { @extend %smaller; padding-top: $base_padding; padding-bottom: $base_padding; } .weather-forecast-icon { icon-size: $large_scalable_icon_size; margin-bottom: $base_margin; } .weather-forecast-temp { @extend %numeric; font-weight: bold; } } } } 07070100000115000081A40000000000000000000000016712993F0000046C000000000000000000000000000000000000004500000000gnome-shell-47.1/data/theme/gnome-shell-sass/widgets/_check-box.scss/* Check Boxes */ .check-box { StBoxLayout { spacing: .8em; } StBin { border-radius: 7px; padding: 2px; } &:focus StBin { // Trick due to St limitations. It needs a background to draw a box-shadow background-color: rgba(0, 0, 0, 0.01); box-shadow: inset 0 0 0 2px st-transparentize(-st-accent-color, .65); } StIcon { icon-size: 14px; padding: 1px; color: transparent; border-radius: 6px; border: 2px solid transparentize(if($variant == 'light', black, white), .85); } &:hover StIcon { border-color: transparentize(if($variant == 'light', black, white), .8); } &:active StIcon { border-color: transparentize(if($variant == 'light', black, white), .7); } &:checked StIcon { background-color: -st-accent-color; color: -st-accent-fg-color; border-color: transparent; } &:checked:hover StIcon { background-color: st-lighten(-st-accent-color, 5%); color: st-lighten(-st-accent-fg-color, 5%); } &:checked:active StIcon { background-color: st-darken(-st-accent-color, 7%); color: st-darken(-st-accent-fg-color, 7%); } } 07070100000116000081A40000000000000000000000016712993F000001D4000000000000000000000000000000000000004900000000gnome-shell-47.1/data/theme/gnome-shell-sass/widgets/_corner-ripple.scss/* Activities Ripple */ $ripple_size: 50px; .ripple-box { background-color: rgba(255,255,255,0.2); box-shadow: 0 0 2px 2px rgba(255,255,255,0.2); // plus + 2px for the border (box-shadow) width: $ripple_size + 2px; height: $ripple_size + 2px; border-radius: 0 0 $ripple_size + 2px 0; // radius equals the size of the box to give us the curve // just a simple change to the border radius position &:rtl { border-radius: 0 0 0 $ripple_size + 2px; } } 07070100000117000081A40000000000000000000000016712993F00000C3B000000000000000000000000000000000000004000000000gnome-shell-47.1/data/theme/gnome-shell-sass/widgets/_dash.scss/* Dash */ // uses system colors $dash_background_color: $system_overlay_bg_color; $dash_placeholder_size: 32px; $dash_padding: $base_padding * 2; $dash_edge_offset: $base_margin * 3; $dash_border_radius: $modal_radius + $dash_padding; $dash_spacing: $base_margin * 0.5; // container for the dash #dash { // a bit of spacing so that dash doesn't touch the screen edges padding-left: $base_padding; padding-right: $base_padding; // background behind item container .dash-background { background-color: $dash_background_color; border-radius: $dash_border_radius; padding-top: $dash_padding; padding-bottom: $dash_padding; padding-left: $dash_padding - $dash_spacing; // subtract the margins added to .overview-tile below padding-right: $dash_padding - $dash_spacing; @if $contrast == 'high' { @include draw_hc_inset($width: 2px); } } // items on the dash .dash-item-container { .placeholder { // background-image: url("resource:///org/gnome/shell/theme/dash-placeholder.svg"); background-image: none; background-size: contain; height: $dash_placeholder_size; } .empty-dash-drop-target { width: $dash_placeholder_size; height: $dash_placeholder_size; } // IMPORTANT: items on the dash need to extend to the edge to be adequate click targets // as such the %tile style is overriden and button styles are applied to the child class .overview-icon .show-apps, .overview-tile { // remove styles @extend %reset; margin: 0 $dash_spacing; padding-bottom: $dash_edge_offset; // align with other items $fg:$system_fg_color; $bg:$dash_background_color; .overview-icon { @extend %tile; @include button(normal, $tc:$fg, $c:$bg, $style: flat, $always_dark: true); } &:focus .overview-icon { @include button(focus, $tc:$fg, $c:$bg, $style: flat, $always_dark: true);} &:hover .overview-icon { @include button(hover, $tc:$fg, $c:$bg, $style: flat, $always_dark: true);} &:active .overview-icon { @include button(active, $tc:$fg, $c:$bg, $style: flat, $always_dark: true);} &:checked .overview-icon { @include button(checked, $tc:$fg, $c:$bg, $style: flat, $always_dark: true);} } // running app dot .app-grid-running-dot { // manually position the dot within the dash item @if $contrast == 'high' { offset-y: -$dash_padding - 1px; // don't draw dot directly on inset } @else { offset-y: -$dash_padding; } } } // separator between pinned and running apps .dash-separator { width: 1px; margin-left:$base_margin; margin-right:$base_margin; background-color: $system_borders_color; @if $contrast == 'high' { width: 2px; background-color: $hc_inset_color; } } // make sure all dash components have same margin from screen edge .dash-separator, .dash-background { margin-bottom: $dash_edge_offset; } } // OSD Tooltip .dash-label { @extend %tooltip; -y-offset: $base_margin * 2; // distance from the dash edge } 07070100000118000081A40000000000000000000000016712993F00000F24000000000000000000000000000000000000004300000000gnome-shell-47.1/data/theme/gnome-shell-sass/widgets/_dialogs.scss/* Modal Dialogs */ // style for all dialogs .modal-dialog { background-color: $bg_color; border-radius: $alert_radius; padding: $base_padding * 4; spacing: $base_padding * 3; box-shadow: 0 12px 8px 12px rgba(0,0,0,0.03); .modal-dialog-content-box { padding-top: $base_padding * 2; spacing: $base_padding * 3; max-width: 28em; } .modal-dialog-button-box { padding-top: $base_padding; .modal-dialog-button { @extend %dialog_button; } } } // lists in dialogs .dialog-list { spacing: $base_padding * 3; .dialog-list-title { @extend %heading; text-align: center; } .dialog-list-scrollview { max-height: 200px; } .dialog-list-box { spacing: 1em; .dialog-list-item { spacing: 1em; .dialog-list-item-title { font-weight: bold; } .dialog-list-item-description { @extend %caption; color: darken($fg_color,5%); } } } } /* End Session Dialog */ .end-session-dialog { width: 24em; // special style for session warnings .end-session-dialog-battery-warning, .dialog-list-title { color: $warning_color; background-color: transparentize($warning_color, 0.9); padding: $base_padding * 1.5; border-radius: $base_border_radius; margin: $base_margin 0; } } /* Message Dialog */ .message-dialog-content { spacing: $base_padding * 3; .message-dialog-title { text-align: center; @extend %title_2; &.lightweight { @extend %title_4; } } .message-dialog-description { text-align: center; } } /* Run Dialog */ .run-dialog { width: 24em; // run dialog needs to override bottom padding // to account for inexplicable extra padding padding-bottom: $base_padding; .run-dialog-entry { padding: $base_padding * 2 $base_padding * 1.5; } .run-dialog-description { @extend %caption; color: darken($fg_color, 20%); } } /* Password or Authentication Dialog */ .prompt-dialog { width: 28em; .prompt-dialog-password-grid { spacing-rows: $base_margin * 2; spacing-columns: $base_margin; .prompt-dialog-password-entry { width: auto; // 4px (spacing) + 16px (spinner-width) &:ltr { margin-left: $base_margin+$base_icon_size; } &:rtl { margin-right: $base_margin+$base_icon_size; } } } .prompt-dialog-password-layout { spacing: $base_margin * 2; } .prompt-dialog-password-entry { width: 20em; padding: $base_padding * 2 $base_padding * 1.5; } .prompt-dialog-error-label, .prompt-dialog-info-label, .prompt-dialog-null-label { @extend %caption; text-align: center; } .prompt-dialog-error-label { color: $warning_color; } } /* Polkit Dialog */ .polkit-dialog-user-layout { text-align: center; spacing: $base_margin * 2; margin-bottom: $base_padding; .polkit-dialog-user-label, .polkit-dialog-user-root-label { @extend %title_4; } .polkit-dialog-user-root-label { color: $warning_color; } } /* Audio selection dialog */ .audio-device-selection-dialog { min-width: 24em; .audio-selection-box { spacing: $base_padding * 2; // styled similar to switcher-popup .audio-selection-device { @include tile_button($fg:$osd_fg_color, $bg:$osd_bg_color); .audio-selection-device-box { padding: $base_padding * 2; spacing: $base_padding * 2; } .audio-selection-device-icon { icon-size: $base_icon_size * 4; } } } } /* Welcome dialog */ .welcome-dialog-image { background-image: url("resource:///org/gnome/shell/theme/gnome-shell-start.svg"); background-size: contain; /* Reasonable maximum dimensions */ height: 300px; width: 300px; } /* Access portal dialog */ .access-dialog { text-align: center; } // specific label style for restart message .restart-message { @extend %title_4; } 07070100000119000081A40000000000000000000000016712993F00000151000000000000000000000000000000000000004300000000gnome-shell-47.1/data/theme/gnome-shell-sass/widgets/_entries.scss/* Entries */ StEntry { @extend %entry; StIcon.capslock-warning { icon-size: $scalable_icon_size; warning-color: $warning_color; padding: 0 $base_margin; } StIcon.peek-password { icon-size: $scalable_icon_size; padding: 0 $base_margin; } StLabel.hint-text { margin-left: $base_margin * 0.5; } } 0707010000011A000081A40000000000000000000000016712993F00000444000000000000000000000000000000000000004600000000gnome-shell-47.1/data/theme/gnome-shell-sass/widgets/_ibus-popup.scss// IBus Candidate Popup .candidate-popup-boxpointer { @extend .popup-menu-boxpointer; } .candidate-popup-content { padding: $base_padding; spacing: $base_padding; @extend .popup-menu-content; } .candidate-index { padding: 0; padding-right: $base_padding; color: $insensitive_fg_color; } .candidate-box { padding: $base_padding $base_padding * 2 $base_padding $base_padding * 2; border-radius: $base_border_radius; &:selected { background-color: -st-accent-color; color: -st-accent-fg-color; } &:hover { background-color: $hover_bg_color; color: $hover_fg_color; } } .candidate-page-button-box { height: 2em; .vertical & { padding-top: $base_padding * 2; } .horizontal & { padding-left: $base_padding * 2; } } .candidate-page-button { padding: $base_padding; & StIcon { icon-size: $base_icon_size; } } .candidate-page-button-previous { border-radius: $base_border_radius 0px 0px $base_border_radius; border-right-width: 0;box-shadow: none;} .candidate-page-button-next { border-radius: 0px $base_border_radius $base_border_radius 0px;box-shadow: none;} 0707010000011B000081A40000000000000000000000016712993F000011BA000000000000000000000000000000000000004400000000gnome-shell-47.1/data/theme/gnome-shell-sass/widgets/_keyboard.scss/* On-screen Keyboard */ $key_size: 1.2em; $key_border_radius: $base_border_radius * 1.25; $key_bg_color: darken($osd_fg_color, 70%); // $default_key_bg_color: darken($key_bg_color, 4%); $default_key_bg_color: if($variant=='light', darken($key_bg_color, 11%), darken($key_bg_color, 10%)); // draw keys using button function #keyboard { // background-color: transparentize(if($variant=='light', darken($bg_color, 5%), darken($bg_color, 8%)), 0.1); background-color: $osd_bg_color; box-shadow: inset 0 1px 0 0 $osd_outer_borders_color; .page-indicator { padding: $base_padding; .page-indicator-icon { width: 8px; height: 8px; } } } // the container for individual keys .key-container { padding: $base_margin; spacing: $base_margin; } // the keys .keyboard-key { @include fontsize($base_font_size + 5pt); font-weight: bold; min-height: $key_size; min-width: $key_size; border-width: 1px; border-style: solid; border-radius: $key_border_radius; box-shadow: 0 1px 0 0 $shadow_color; @include button(normal, $c:$key_bg_color, $tc:$osd_fg_color); &:focus { @include button(focus);} &:hover { @include button(hover, $c:$key_bg_color, $tc:$osd_fg_color);} &:active { @include button(active, $c:$key_bg_color, $tc:$osd_fg_color); } &:checked { @include button(checked, $c:$key_bg_color, $tc:$osd_fg_color); } &:grayed { //FIXMEy background-color: darken($bg_color, 3%); color: $osd_fg_color; border-color: $osd_borders_color; } // non-character keys &.default-key { @include button(normal, $c:$default_key_bg_color, $tc:$osd_fg_color); &:hover { @include button(hover, $c:$default_key_bg_color, $tc:$osd_fg_color);} &:active { @include button(active, $c:$default_key_bg_color, $tc:$osd_fg_color);} &:checked { @include button(checked, $c:$default_key_bg_color, $tc:$osd_fg_color);} border-radius: $key_border_radius; // keys that may be latched: ctrl/alt/shift &:latched { border-color: st-lighten(-st-accent-color, 5%); background-color: -st-accent-color; } } // enter key is suggested-action &.enter-key { @include button(normal, $c:-st-accent-color, $tc:-st-accent-fg-color); &:hover { @include button(hover, $c:-st-accent-color, $tc:-st-accent-fg-color);} &:active { @include button(active, $c:-st-accent-color, $tc:-st-accent-fg-color);} &:checked { @include button(checked, $c:-st-accent-color, $tc:-st-accent-fg-color);} border-radius: $key_border_radius; color: $osd_fg_color; } &.shift-key-lowercase {} // pressed shift has different style &.shift-key-uppercase { background-color: lighten($key_bg_color, 20%); color: $osd_bg_color; &:hover { background-color: lighten($key_bg_color, 25%); color: lighten($osd_bg_color, 5%); } } // size of icons on keys StIcon { icon-size: $medium_icon_size; } } // long press on a key popup .keyboard-subkeys { -arrow-border-radius: $base_border_radius * 2; -arrow-background-color: $osd_bg_color; -arrow-border-width: 1px; -arrow-border-color: lighten($osd_bg_color, 9%); -arrow-base: 20px; -arrow-rise: 10px; -boxpointer-gap: $base_padding; padding: $base_padding; .keyboard-key { @include button(normal, $c:$key_bg_color, $tc:$osd_fg_color); &:focus { @include button(focus);} &:hover { @include button(hover, $c:$key_bg_color, $tc:$osd_fg_color);} &:active { @include button(active, $c:$key_bg_color, $tc:$osd_fg_color); } &:checked { @include button(checked, $c:$key_bg_color, $tc:$osd_fg_color); } border-radius:$key_border_radius; } } // emoji .emoji-page { .keyboard-key { background-color: transparent; border: none; color: initial; } } .emoji-panel { .keyboard-key:latched { border-color: st-lighten(-st-accent-color, 5%); background-color: -st-accent-color; } } // suggestions .word-suggestions { @extend %title_4; spacing: 12px; min-height: 17pt; padding: $base_padding * 2; color: $osd_fg_color; // each suggestion StButton { margin: 0 3px; min-width: 32px; border-radius: 4px; padding: 0px $base_padding * 3; @include button(undecorated, $c:$key_bg_color, $tc:$osd_fg_color); &:focus { @include button(focus);} &:hover { @include button(hover, $c:$key_bg_color, $tc:$osd_fg_color);} &:active { @include button(active, $c:$key_bg_color, $tc:$osd_fg_color); } &:checked { @include button(checked, $c:$key_bg_color, $tc:$osd_fg_color); } } } 0707010000011C000081A40000000000000000000000016712993F00001C65000000000000000000000000000000000000004600000000gnome-shell-47.1/data/theme/gnome-shell-sass/widgets/_login-lock.scss$_gdm_bg: $system_base_color; $_gdm_fg: $system_fg_color; $_gdm_dialog_width: 25em; // common style for login and lockscreen .login-dialog, .unlock-dialog { color: $_gdm_fg; .caps-lock-warning-label, .login-dialog-message-warning { color: $_gdm_fg; } .login-dialog-prompt-layout { width: $_gdm_dialog_width; spacing: $base_padding * 1.5; } } // GDM Login Dialog // uses dark grey system styles .login-dialog { .login-dialog-prompt-entry { @extend %system_entry; } } // buttons on login screen .login-dialog-button { &.cancel-button, &.switch-user-button, &.login-dialog-session-list-button { @extend .icon-button; @extend %system_button; } &.cancel-button { padding: $base_padding * 1.5; } } .login-dialog-button-box { spacing: $base_padding * 2; } .conflicting-session-dialog-content { spacing: 20px; .conflicting-session-dialog-title { text-align: center; @extend %title_2; margin-bottom: 5px; } .conflicting-session-dialog-desc { text-align: center; } .conflicting-session-dialog-desc-warning { text-align: center; color: $warning_color; } } .login-dialog-logo-bin { margin: 3em 0; } .login-dialog-banner-view { max-width: $_gdm_dialog_width; .login-dialog-banner { color: darken($_gdm_fg,10%); } } .login-dialog-message { text-align: center; } .login-dialog-message-hint, .login-dialog-message { color: darken($_gdm_fg, 10%); min-height: 2.75em; } .login-dialog-user-selection-box { // padding to ensure the box doesn't overlap the panel padding-top: 4em; padding-bottom: 8em; } .login-dialog-not-listed-label { @extend %heading; padding: $base_padding; } .login-dialog-not-listed-button { // use button styling @extend %button_common; @include button(normal, $tc:$_gdm_fg, $c:$_gdm_bg, $style: flat, $always_dark: true); &:focus { @include button(focus, $tc:$_gdm_fg, $c:$_gdm_bg, $style: flat, $always_dark: true);} &:hover { @include button(hover, $tc:$_gdm_fg, $c:$_gdm_bg, $style: flat, $always_dark: true);} &:active { @include button(active, $tc:$_gdm_fg, $c:$_gdm_bg, $style: flat, $always_dark: true);} padding: 0 $base_padding; margin: $base_padding; } // Authentication methods list .login-dialog-auth-list-view { -st-vfade-offset: 3em; } .login-dialog-auth-list { spacing: $base_padding; margin-left: 2em; } .login-dialog-auth-list-title { margin-left: 2em; } .login-dialog-auth-list-item { border-radius: $base_border_radius * 2; padding: $base_margin; color: darken($_gdm_fg,30%); &:focus, &:selected { background-color: -st-accent-color; color: -st-accent-fg-color; } } .login-dialog-auth-list-label { @extend %title_4; &:ltr { padding-left: $base_padding * 2.5; text-align: left; } &:rtl { padding-right: $base_padding * 2.5; text-align: right; } } // User list .login-dialog-user-list-view { width: $_gdm_dialog_width; -st-vfade-offset: 3em; .login-dialog-user-list { margin: 0 $base_margin * 2; // margin to account for scrollbar spacing: $base_padding * 2; .login-dialog-user-list-item { // use button styling @extend %button_common; @include button(normal, $tc:$_gdm_fg, $c:$system_base_color, $always_dark: true); &:selected, &:focus { @include button(focus, $tc:$_gdm_fg, $c:$system_base_color, $always_dark: true);} &:hover { @include button(hover, $tc:$_gdm_fg, $c:$system_base_color, $always_dark: true);} &:active { @include button(active, $tc:$_gdm_fg, $c:$system_base_color, $always_dark: true);} border-radius: $modal_radius; padding: $base_padding * 1.5; // create border for indicating logged in user .user-icon { border: 2px solid transparent; } .login-dialog-timed-login-indicator { height: 2px; margin-top: $base_padding; background-color: transparentize($_gdm_fg, .3); } &:logged-in { // color border for logged-in user .user-icon { border-color: -st-accent-color; StIcon { background-color: st-transparentize(-st-accent-color, .7); } } } } } } // Screen Shield // a.k.a. the lockscreen, uses transparent styles .unlock-dialog { background-color: transparent; .login-dialog-prompt-entry { @extend %lockscreen_entry; } .button, .icon-button { @extend %lockscreen_button; } } .screen-shield-background { // just the shadow, really background: black; box-shadow: 0 2px 4px rgba(0,0,0,0.6); } #lockDialogGroup { background-color: $_gdm_bg; } // Clock .unlock-dialog-clock { color: $_gdm_fg; spacing: 2em; .unlock-dialog-clock-time { @extend %numeric; @include fontsize(72pt); font-weight: 800; } .unlock-dialog-clock-date { @extend %title_1; font-weight: 400; } .unlock-dialog-clock-hint { margin-top: 2em; padding: $base_padding $base_padding * 3; border-radius: $base_border_radius * 2; font-weight: bold; } } // Notifications #unlockDialogNotifications { StButton#vhandle, StButton#hhandle { background-color: transparentize($bg_color,0.7); &:hover, &:focus { background-color: transparentize($bg_color,0.5); } &:active { background-color: st-transparentize(-st-accent-color,0.5); } } } .unlock-dialog-notifications-container { margin: $base_margin * 3; spacing: $base_padding; width: $_gdm_dialog_width; background-color: transparent; .summary-notification-stack-scrollview { padding-top: 0; padding-bottom: 0; } .notification, .unlock-dialog-notification-source { padding: $base_margin * 3 $base_margin * 4; border: none; background-color: transparentize($_gdm_fg,0.9); color: $_gdm_fg; border-radius: $modal_radius; &.critical { background-color: transparentize($_gdm_fg,0.8) } } } .unlock-dialog-notification-icon { icon-size: $large_icon_size; } .unlock-dialog-notification-label { padding-left: $base_padding * 2; padding-right: 0; &:rtl { padding-right: $base_padding * 2; padding-left: 0; } } .unlock-dialog-notification-count-text { font-weight: bold; padding: 0 $base_padding * 2; color: $_gdm_fg; background-color: transparentize($_gdm_fg, .9); border-radius: $forced_circular_radius; } .login-dialog, .unlock-dialog { // User Widget .user-widget { // common .user-widget-label { color: $_gdm_fg; } .user-icon { background-color: transparentize($_gdm_fg, .87); color: $_gdm_fg; @if $contrast == 'high' { background-color: transparentize($_gdm_fg, .7); box-shadow:inset 0 0 0 1px $hc_inset_color; } } // layout of the user list &.horizontal { spacing: $base_padding * 3; .user-widget-label { @extend %title_3; } } // layout of the login prompt &.vertical { spacing: $base_padding * 4; .user-widget-label { font-weight: 400; @include fontsize(20pt); text-align: center; margin-bottom: .75em; } .user-icon { icon-size: $base_icon_size * 10; & StIcon { padding: $base_padding * 5; } } } } } 0707010000011D000081A40000000000000000000000016712993F00001295000000000000000000000000000000000000004900000000gnome-shell-47.1/data/theme/gnome-shell-sass/widgets/_looking-glass.scss/* Looking Glass */ // common .lg-dialog { StEntry { @extend %osd_entry; min-height: to_em(22px); } // override link color since OSD style $lg_link_color: st-lighten(-st-accent-color, 20%); .shell-link { color: $lg_link_color; &:hover { color: st-lighten($lg_link_color, 10%); } &:active { color: st-darken($lg_link_color, 10%); } } .actor-link { @extend %monospace; color: st-darken($osd_fg_color, 20%); &:hover { color:$osd_fg_color; } &:active { color: st-lighten($osd_fg_color, 20%); } & StIcon { icon-size: 12px; } } } .lg-completions-text { @extend %caption; font-style: italic; } // Dialog #LookingGlassDialog { @extend %osd_panel; background-color: transparentize($osd_bg_color,0.02); color: $osd_fg_color; border-radius: $modal_radius; margin-top: $base_margin; border: 2px solid transparent; padding: $base_padding; spacing: $base_padding; box-shadow: 0 2px 4px 0 $shadow_color; @if $contrast == 'high' { border-color: $hc_inset_color; background-color: $osd_bg_color; box-shadow:none; } & > #Toolbar { border: none; padding: $base_padding; border-radius: 0; background-color: transparent; spacing: $base_padding; .lg-toolbar-button { @extend %osd_button; padding: $base_padding $base_padding * 2; & > StIcon { icon-size: $base_icon_size; } } } .labels { spacing: $base_padding; } .notebook-tab { @extend %osd_button_flat; background-color: transparent; -natural-hpadding: $base_padding * 2; -minimum-hpadding: $base_padding * 2; padding: $base_padding $base_padding * 2; &:selected { @include button(active, $tc:$osd_fg_color, $c:$osd_bg_color, $always_dark: true); } } } // Inspector #LookingGlassPropertyInspector { background-color: $osd_bg_color; color: $osd_fg_color; border-radius: $modal_radius; border: 1px solid $osd_borders_color; padding: $base_padding * 2; @if $contrast == 'high' { border-color: $hc_inset_color; } .lg-obj-inspector-title { @extend %heading; spacing: $base_margin; } .lg-obj-inspector-close-button, .lg-obj-inspector-button { @extend %osd_button; padding: $base_padding $base_padding * 2; } .lg-obj-inspector-close-button { margin: $base_margin; padding: $base_padding; border-radius: $forced_circular_radius; > StIcon { icon-size: $base_icon_size; } } } // Evaluator #LookingGlassEvaluator { padding: $base_padding; .evaluator-results { @extend %monospace; spacing: $base_padding; } } // Window List #LookingGlassWindows { padding: $base_padding; spacing: $base_padding; .lg-window { @extend %card_common; @include button(normal, $tc:$osd_fg_color, $c:$osd_bg_color, $always_dark: true); margin: 0; padding: $base_padding * 2; .lg-window-name { @extend %heading; } .lg-window-props-box { .lg-window-props { } } } } // Extensions #LookingGlassExtensions { .lg-extensions-list { padding: $base_padding; spacing: $base_padding; } .lg-extension { @extend %card_common; @include button(normal, $tc:$osd_fg_color, $c:$osd_bg_color, $always_dark: true); margin: 0; spacing: $base_margin; padding: $base_padding * 2; .lg-extension-name { @extend %heading; color: $osd_fg_color !important; } .lg-extension-description { } .lg-extension-meta { spacing: $base_padding * 2; } } .lg-extensions-none { @extend %title_4; color: transparentize($osd_fg_color, 0.5); } } // Actors #LookingGlassActors { padding: $base_padding; spacing: $base_margin; } // Debug #LookingGlassDebugFlags { .lg-debug-flags-header { padding: $base_padding; padding-top: 2 * $base_padding; @extend %title_4; } .lg-debug-flag-button { @extend %osd_button; padding: $base_padding * 1.5 $base_padding * 2; margin-bottom: $base_padding; StLabel { @extend %monospace; font-weight: normal !important; } // switch style overrides since lg is OSD style .toggle-switch { @if $contrast == 'high' { background: transparentize(white, .7); &:hover { background: transparentize(white, .6); } } @else { background: transparentize(white, .85); &:hover { background: transparentize(white, .8); } } &:checked { background: -st-accent-color; color: -st-accent-fg-color; &:hover { background-color: st-lighten(-st-accent-color, 5%); color: st-lighten(-st-accent-fg-color, 5%); } } } } } 0707010000011E000081A40000000000000000000000016712993F0000162A000000000000000000000000000000000000004800000000gnome-shell-47.1/data/theme/gnome-shell-sass/widgets/_message-list.scss/* Message List */ // a.k.a. notifications in the menu // main list .message-list { width: 29em; border: solid $borders_color; // padding and margins to account for scrollbar &:ltr {margin-left: 0; margin-right: $base_margin; padding-right: $base_padding; border-right-width: 1px; } &:rtl {margin-right: 0; margin-left: $base_margin; padding-left: $base_padding; border-left-width: 1px; } .message-list-placeholder { @extend %title_2; color: transparentize($fg_color, .75); @if $contrast == 'high' { color: transparentize($fg_color, .5); } // icon size and color > StIcon { icon-size: 96px; // non-em asset size margin-bottom: $base_margin * 3; -st-icon-style: symbolic; } } } .message-list-sections { // to account for scrollbar &:ltr {margin-right: $base_margin * 3; } &:rtl {margin-left: $base_margin * 3;} spacing: $base_padding * 2; } .message-list-section, .message-list-section-list { spacing: $base_padding * 2; } // do-not-disturb + clear button .message-list-controls { // NOTE: remove the padding if notification_bubble could remove margin for drop shadow padding: $base_padding * 2; padding-bottom: $base_padding; spacing: $base_padding; @extend %heading; .dnd-button { // We need this because the focus outline isn't inset like for the buttons // so the dnd button would grow when it gets focus if we didn't change only // its color when focusing. border-width: 2px; border-color: transparent; border-radius: 32px; border-style: solid; &:focus { border-color: st-transparentize(-st-accent-color, 0.4); } } } // message bubbles .message { @extend %card; padding: $base_padding; margin: 0; border-radius: $modal_radius; // message header .message-header { spacing: $base_padding; color: $insensitive_fg_color; padding:0 $base_padding; // remove side padding to accommodate the close button &:ltr { padding-right: 0; } &:rtl { padding-left: 0; } // header source icon .message-source-icon { icon-size: $scalable_icon_size; // 16px -st-icon-style: symbolic; } // box that contains the source icon, source name and timestamp of the message .message-header-content { spacing: $base_padding; min-height: to_em(24px); padding-bottom: $base_padding; // header source title .message-source-title { font-weight: bold; } // Time label .event-time { @extend %caption; color: $insensitive_fg_color; // Add bottom padding to align the app name with the time horizontally padding-bottom: to_em(1px); &:ltr { text-align: right; } &:rtl { text-align: left; } } } // buttons in the message header .message-expand-button, .message-close-button { @extend .icon-button; @extend %notification_button; border-radius: $forced_circular_radius; // make circular color: $fg_color; } // increase padding to expand button to make it larger .message-expand-button { padding: $base_padding; } // add margin to close button to balance it with the expand button .message-close-button { margin: $base_padding * 0.5; padding: 4px; } } // container for message contents .message-box { padding: $base_padding; margin-top: 0; spacing: $base_padding; // icon of the message .message-icon { &:ltr { margin-right:$base_padding;} &:rtl { margin-left:$base_padding;} // icon size and color icon-size: $base_icon_size * 3; // 48px // a small symbolic icon on a circle background &.message-themed-icon { border-radius: $forced_circular_radius; background-color: transparentize($fg_color, .93); icon-size: $scalable_icon_size; min-width: $base_icon_size * 3; min-height: $base_icon_size * 3; } } // If the header isn't displayed we need more top margin &:first-child { margin-top: $base_padding * 2; } // text of the message .message-content { spacing: $base_margin; // message title .message-title { font-weight: bold; } } } // container for message buttons .message-action-bin { padding: $base_margin; spacing: $base_padding; // set margin on children * { margin: 0 $base_margin; // remove margins &:first-child { &:ltr { margin-left:0;} &:rtl { margin-right:0;} } &:last-child { &:ltr { margin-right:0;} &:rtl { margin-left:0;} } } } } // URLs in messages .url-highlighter { link-color: $link_color; } /* Media Controls */ .message-media-control { padding: 0 $base_padding * 3; border-radius: $base_border_radius; color: $fg_color; border: 1px solid transparent; @if $contrast == 'high' { border-color: $hc_inset_color; margin: $base_padding * 2 2px; } // colors are lightened since the media controls are in a card &:hover { background-color: lighten($hover_bg_color, 5%); color: $fg_color; } &:active { background-color: lighten($active_bg_color, 5%); color: $fg_color; } &:insensitive { color: lighten($insensitive_fg_color, 5%); @if $contrast == 'high' { border-color: transparent; } } & StIcon { icon-size: $base_icon_size; } } .media-message { // album-art .message-icon { border-radius: $base_border_radius !important; &.message-themed-icon { icon-size: $large_icon_size !important; // 32px } } } 0707010000011F000081A40000000000000000000000016712993F00000444000000000000000000000000000000000000004000000000gnome-shell-47.1/data/theme/gnome-shell-sass/widgets/_misc.scss// Rubberband for select-area screenshots .select-area-rubberband { background-color: st-transparentize(-st-accent-color,0.7); border: 1px solid -st-accent-color; } // User icon .user-icon { background-size: contain; border-radius: $forced_circular_radius; icon-size: $base_icon_size * 4; background-color: transparentize($osd_fg_color,0.95); color: $osd_fg_color; & StIcon { padding: $base_padding * 2; } &.user-avatar { box-shadow:inset 0 0 0 1px transparentize($osd_fg_color, 0.9); @if $contrast == 'high' { @include draw_hc_inset(); } } } .lightbox { background-color: black; } .flashspot { background-color: white; } // Hidden .hidden { color: transparent;} // Caps-lock warning .caps-lock-warning-label { text-align: center; padding-bottom: 8px; @extend %caption; color: $warning_color; } /* Workspace animation */ .workspace-animation { background-color: $system_bg_color; } /* Tiled window previews */ .tile-preview { background-color: st-transparentize(-st-accent-color,0.5); border: 1px solid -st-accent-color; } 07070100000120000081A40000000000000000000000016712993F000001F4000000000000000000000000000000000000004900000000gnome-shell-47.1/data/theme/gnome-shell-sass/widgets/_notifications.scss/* Notifications & Message Tray */ $notification_banner_height: 64px; $notification_banner_width: 34em; // Banner notifications .notification-banner { min-height: $notification_banner_height; width: $notification_banner_width; box-shadow: 0 2px 4px 2px $shadow_color; border-radius: $modal_radius; margin: $base_margin; @if $contrast == 'high' { @include draw_hc_inset(); } } .notification-buttons-bin { spacing: 0; } .notification-button { @extend %notification_button; } 07070100000121000081A40000000000000000000000016712993F000005E4000000000000000000000000000000000000003F00000000gnome-shell-47.1/data/theme/gnome-shell-sass/widgets/_osd.scss/* OSD */ $osd_levelbar_height:6px; .osd-window { @extend %osd_panel; @extend %heading; text-align: center; font-weight: bold; spacing: $base_padding * 2; padding: $base_padding * 2 $base_padding * 3; & > * { spacing: $base_margin * 2; } margin-bottom: 4em; StIcon { icon-size: $large_icon_size;} StLabel { &:ltr { margin-right: $base_padding; } &:rtl { margin-left: $base_padding; } } .level { margin-bottom: $base_margin; &:first-child { margin-bottom: 0; } min-width: 160px; -barlevel-height: $osd_levelbar_height; -barlevel-background-color: transparentize($osd_fg_color, if($variant=='light', 0.7, 0.9)); -barlevel-active-background-color: $osd_fg_color; -barlevel-overdrive-color: $destructive_color; -barlevel-overdrive-separator-width: $base_padding * 0.5; &:ltr { margin-right: $base_padding; } &:rtl { margin-left: $base_padding; } } } // Monitor number label .osd-monitor-label { background-color: -st-accent-color; color: -st-accent-fg-color; border-radius: $modal_radius; font-size: 3em; font-weight: bold; font-feature-settings: "tnum"; margin: $base_margin * 3; padding: $base_padding * 2; text-align: center; min-width: 1.5em; } /* Pad OSD */ .pad-osd-window { padding: 32px; background-color: transparentize(#000, 0.2); .pad-osd-title-box { spacing: 12px; } .pad-osd-title-menu-box { spacing: 6px; } } .combo-box-label { width: 15em; } .resize-popup { @extend %osd_panel; } 07070100000122000081A40000000000000000000000016712993F0000008C000000000000000000000000000000000000004400000000gnome-shell-47.1/data/theme/gnome-shell-sass/widgets/_overview.scss/* OVERVIEW */ .secondary-monitor-workspaces { spacing: $base_padding * 2; } #overviewGroup { background-color: $system_base_color; } 07070100000123000081A40000000000000000000000016712993F000011B0000000000000000000000000000000000000004100000000gnome-shell-47.1/data/theme/gnome-shell-sass/widgets/_panel.scss/* Top Bar */ // a.k.a. the panel $privacy_indicator_color: if($variant == 'light', $orange_4, $orange_3); $recording_indicator_color: $red_4; $transparent_panel_fg_color: $light_1; // always white for transparent lock screens $system_panel_fg_color: $system_fg_color; // always light for lockscreen, overview $panel_height: 2.2em; $panel_transition_duration: 250ms; // same as the overview transition duration #panel { background-color: $panel_bg_color; font-weight: bold; height: $panel_height; @extend %numeric; transition-duration: $panel_transition_duration; // panel menus .panel-button { @include panel_button(); -natural-hpadding: $base_padding * 2; -minimum-hpadding: $base_padding; // status area icons .system-status-icon { icon-size: $scalable_icon_size; padding: 0 $base_padding; margin: 0 $base_margin; } // app menu icon .app-menu-icon { -st-icon-style: symbolic; // dimensions of the icon are hardcoded } // reduce margin between icons in combined menu .panel-status-menu-box, .panel-status-indicators-box { spacing: $base_margin; > .system-status-icon { padding: 0; } } &#panelActivities { & StBoxLayout { padding: 0 $scaled_padding * 0.5; // use em padding to keep proportion spacing: 5px; } & .workspace-dot { border-radius: $forced_circular_radius; min-width: $scalable_icon_size * 0.5; min-height: $scalable_icon_size * 0.5; background-color: $panel_fg_color; } } // screen activity indicators &.screen-recording-indicator, &.screen-sharing-indicator { StBoxLayout { spacing: $scaled_padding; } StIcon { icon-size: $scalable_icon_size; } } &.screen-recording-indicator { @include panel_button($bg:$recording_indicator_color, $fg:$_base_color_light, $style: filled); } &.screen-sharing-indicator { @include panel_button($bg:$privacy_indicator_color, $fg:$_base_color_light, $style: filled); } // clock &.clock-display { // The clock display needs to have the background on .clock because // we want to exclude the do-not-disturb indicator from the background // see _drawing.scss for override details @include panel_button($highlighted_child: true, $child_class: '.clock'); .clock { // the highlighted child } .messages-indicator { icon-size: $scalable_icon_size; } } } // transparent panel on overview, lock & login screens &:overview, &.unlock-screen, &.login-screen { background-color: transparent; // unfortunate duplication to keep indicator style in these states .panel-button { &.screen-recording-indicator { @include panel_button($bg:$recording_indicator_color, $fg:$_base_color_light, $style: filled); } &.screen-sharing-indicator { @include panel_button($bg:$privacy_indicator_color, $fg:$_base_color_light, $style: filled); } } } // use transparent text styles for lock & login screen panels &.unlock-screen, &.login-screen { .panel-button { @include panel_button($fg:$transparent_panel_fg_color); // clock &.clock-display { @include panel_button($fg:$transparent_panel_fg_color, $highlighted_child: true, $child_class: '.clock'); } } } // use system text styles for overview panel &:overview { .panel-button { @include panel_button($fg:$system_panel_fg_color); &#panelActivities .workspace-dot { background-color: $system_panel_fg_color; } // clock &.clock-display { @include panel_button($fg:$system_panel_fg_color, $highlighted_child: true, $child_class: '.clock'); } } } .panel-status-indicators-box, .panel-status-menu-box { spacing: 2px; } // spacing between power icon and (optional) percentage label .power-status.panel-status-indicators-box { spacing: 0; } // important privacy related indicators .privacy-indicator { color: $privacy_indicator_color; } } // App Menu #appMenu { spacing: $scaled_padding; .label-shadow { color: transparent; } } #appMenu .panel-status-menu-box { padding: 0 $scaled_padding; spacing: $scaled_padding; } // Clock .clock-display-box { spacing: 2px; .clock { padding-left: $scaled_padding * 2; padding-right: $scaled_padding * 2; } } 07070100000124000081A40000000000000000000000016712993F00000E12000000000000000000000000000000000000004400000000gnome-shell-47.1/data/theme/gnome-shell-sass/widgets/_popovers.scss/* Popovers/Menus */ $menu_bg_color: $bg_color; $menuitem_bg_color: if($variant == 'light', darken($menu_bg_color, 5%), lighten($menu_bg_color, 5%)); $menuitem_border_radius: $base_border_radius * 1.5; $submenu_bg_color: if($variant == 'light', darken($menu_bg_color, 17%), lighten($menu_bg_color, 13%)); // the popover itself .popup-menu-boxpointer { -arrow-rise: $base_padding; // distance from the panel & screen edge } // container of the popover menu .popup-menu { min-width: 15em; color: $fg_color; //.popup-status-menu-item {font-weight: normal; color: pink;} //dunno what that is &.panel-menu { margin-bottom: 1.75em; // so it doesn't touch the bottom of the screen } } // popover content .popup-menu-content { padding: $base_padding; background-color: $bg_color; border-radius: $modal_radius * 1.25; border: 1px solid $outer_borders_color; box-shadow: 0 2px 4px 0 $shadow_color; } // menu items .popup-menu-item { @include menuitem($bg:$menuitem_bg_color); border-radius: $menuitem_border_radius; &:checked { border-radius: $menuitem_border_radius $menuitem_border_radius 0 0 !important; @if $contrast == 'high' { border: 1px solid $hc_inset_color; border-bottom-width:0; } } // add margin to switches in menu items .toggle-switch { &:ltr { margin-left: $base_margin;} &:rtl { margin-right: $base_margin;} } } .popup-ornamented-menu-item { &:ltr {padding-left: $base_padding;} &:rtl {padding-right: $base_padding;} } // all other graphical elements (sliders) .popup-inactive-menu-item { color: $fg_color; &:insensitive { color: $insensitive_fg_color; } } // symbolic icons in popover .popup-menu-arrow, .popup-menu-icon { icon-size: $scalable_icon_size; } // popover submenus .popup-sub-menu { border-radius: 0 0 $menuitem_border_radius+1px $menuitem_border_radius+1px; margin-bottom: $base_padding; border: 1px solid transparent; background-color: $submenu_bg_color; @if $contrast == 'high' { border-color: $hc_inset_color; } // submenu specific styles .popup-menu-item { border-radius: 0; border-top-width:0; @include menuitem($bg:$submenu_bg_color); &:last-child { border-radius: 0 0 $menuitem_border_radius $menuitem_border_radius; border-bottom-width:0; } } .popup-menu-section { .popup-menu-item:last-child { &:hover,&:focus { border-radius: 0;} } &:last-child .popup-menu-item:last-child { border-radius: 0 0 $menuitem_border_radius $menuitem_border_radius; } } } // container for radio and check boxes .popup-menu-ornament { icon-size: $scalable_icon_size !important; width: $scalable_icon_size; } // separator .popup-separator-menu-item { border:none !important; .popup-separator-menu-item-separator { height: 1px; //not really the whole box background-color: $borders_color; } // separators in submenus .popup-sub-menu & { background-color: transparent; // account for ornament &:ltr { margin-right: 2.5em;} &:rtl { margin-left: 2.5em;} .popup-separator-menu-item-separator { background-color: $borders_color; } } } // desktop background menu .background-menu { -boxpointer-gap: 0px; -arrow-rise: 0px; // hide the beak on the menu } // right-click (and panel) app menu .app-menu { max-width: 27.25em; .popup-inactive-menu-item:first-child { // "Open Windows" label > StLabel { @extend %caption_heading; &:ltr {margin-right: $base_margin * 2;} &:rtl {margin-left: $base_margin * 2;} } } } 07070100000125000081A40000000000000000000000016712993F000013A7000000000000000000000000000000000000004A00000000gnome-shell-47.1/data/theme/gnome-shell-sass/widgets/_quick-settings.scss.quick-settings { padding: $base_padding * 3; border-radius: $modal_radius * 2.25; .icon-button, .button { padding: $base_padding * 1.75; } } .quick-settings-grid { spacing-rows: $base_padding * 2; spacing-columns: $base_padding * 2; } .quick-toggle, .quick-menu-toggle { border-radius: $forced_circular_radius; min-width: 12em; max-width: 12em; min-height: $scalable_icon_size * 3; // use icon size so the button scales border:none; } .quick-toggle { background-color: none; &:checked { @extend %default_button;} & > StBoxLayout { spacing: $base_padding * 1.5; } /* Move padding into the box; this is to allow menu arrows to extend to the border */ &.button { padding: 0; } & > StBoxLayout { padding: 0 $base_padding * 2; } &:ltr > StBoxLayout { padding-left: $base_padding * 2.5; } &:rtl > StBoxLayout { padding-right: $base_padding * 2.5; } .quick-toggle-title { font-weight: bold; } & StBoxLayout > .quick-toggle-subtitle { @extend %caption; font-weight: normal; } .quick-toggle-icon { icon-size: $scalable_icon_size; } } .quick-menu-toggle { & .quick-toggle { min-width: auto; max-width: auto; &:ltr { border-radius: $forced_circular_radius 0 0 $forced_circular_radius; } &:ltr > StBoxLayout { padding-right: $scaled_padding * 1.5; } &:rtl { border-radius: 0 $forced_circular_radius $forced_circular_radius 0; } &:rtr > StBoxLayout { padding-left: $scaled_padding * 1.5; } &:ltr:last-child { border-radius: $forced_circular_radius; } &:rtl:last-child { border-radius: $forced_circular_radius; } } & .quick-toggle-arrow { padding: $scaled_padding $scaled_padding * 1.75; border-width: 0; border-color: transparentize($fg_color, .75); &:checked { @extend %default_button; border-color: $accent_borders_color; } &:ltr { border-radius: 0 $forced_circular_radius $forced_circular_radius 0; border-left-width: 1px; } &:rtl { border-radius: $forced_circular_radius 0 0 $forced_circular_radius; border-right-width: 1px; } } } .quick-slider { & > StBoxLayout { spacing: $base_padding; } .icon-button { padding: $base_padding; } .slider-bin { &:focus {@include button(focus);} padding: $base_padding; border-radius: $forced_circular_radius; } } .quick-toggle-menu { @extend %card; &:insensitive { // override insensitive style on submenu @include button(normal); } border-radius: $base_border_radius * 3; margin: $base_padding * 2 $base_padding * 3 0; .popup-menu-item > StIcon { -st-icon-style: symbolic; icon-size: $scalable_icon_size; } & .header { spacing-rows: $base_padding * 0.5; spacing-columns: $base_padding * 2; padding-bottom: $base_padding * 2; & .icon { icon-size: $medium_scalable_icon_size; border-radius: $forced_circular_radius; padding: 1.5 * $base_padding; background-color: transparentize($fg_color, 0.8); &.active { background-color: -st-accent-color; color: -st-accent-fg-color; } // draw hc outline @if $contrast == 'high' { @include draw_hc_inset(); &.active { @include draw_hc_inset($no_inset: true); } } } & .title { @extend %title_3; } & .subtitle { @extend %caption_heading; } } } .quick-toggle-menu-container { } .quick-settings-system-item { & > StBoxLayout { spacing: $base_padding * 2; } & .power-item { min-height: 0; min-width: 0; &:insensitive { @include button(normal); background-color: transparent; } } } .nm-network-item { .wireless-secure-icon { icon-size: $scalable_icon_size * 0.5; } // half-size symbolic } .bt-device-item { .popup-menu-icon { -st-icon-style: symbolic; } } .bt-menu-placeholder.popup-menu-item { @extend %title_4; text-align: center; padding: 2em 4em; } .device-subtitle { color: transparentize($fg_color, 0.5); } .keyboard-brightness-level { spacing: $base_padding; .button:checked { @extend %default_button; } } // background apps .background-apps-quick-toggle { min-height: to_em(40px); background-color: transparent; & StIcon { icon-size: $scalable_icon_size !important; } } .background-app-item { & .title { @extend %heading; } & .subtitle { @extend %caption; } & .popup-menu-icon { icon-size: $large_icon_size !important; -st-icon-style: regular !important; } & .icon-button { padding: $base_padding; // override some background colors since it's a button on an already styled background // FIXME: may need a generic drawing method for button in menu item in future background-color: transparentize($fg_color, 0.87); &:hover { background-color: transparentize($fg_color, 0.78);} &:active { background-color: transparentize($fg_color, 0.69);} } & .spinner { padding: $base_padding; } &.popup-inactive-menu-item { color: $fg_color; } } 07070100000126000081A40000000000000000000000016712993F000013E0000000000000000000000000000000000000004600000000gnome-shell-47.1/data/theme/gnome-shell-sass/widgets/_screenshot.scss// Screenshot UI $screenshot_ui_panel_padding: $base_padding * 3; $screenshot_ui_panel_border_radius: $modal_radius * 2; $screenshot_ui_button_red: $red_4; .screenshot-ui-panel { @extend %osd_panel; border-radius: $screenshot_ui_panel_border_radius; padding: $screenshot_ui_panel_padding; // Reduce the bottom padding a little to accommodate the large capture button. padding-bottom: $screenshot_ui_panel_padding - $base_padding; margin-bottom: 4em; spacing: $base_padding * 2; } .screenshot-ui-close-button { @extend .window-close; // copy window close button padding: $base_padding !important; // but with more padding margin-top: $base_margin * 3; box-shadow: 0 2px 4px 0 $shadow_color; &.left { margin-left: $base_margin * 3;} &.right { margin-right: $base_margin * 3;} } .screenshot-ui-type-button { @extend %osd_button_flat; min-width: 48px; padding: $base_padding * 2 $base_padding * 3; border-radius: $screenshot_ui_panel_border_radius - $screenshot_ui_panel_padding; .icon-label-button-container { @extend %caption; spacing: $scaled_padding; > StIcon { icon-size: $large_icon_size;} } } .screenshot-ui-capture-button { width: $large_icon_size; height: $large_icon_size; border-radius: $forced_circular_radius; border: 4px $osd_fg_color; padding: $base_margin; .screenshot-ui-capture-button-circle { background-color: $osd_fg_color; transition-duration: 200ms; &:hover, &:focus { background-color: $hover_bg_color;} border-radius: $forced_circular_radius; } &:hover, &:focus { .screenshot-ui-capture-button-circle { background-color: darken($osd_fg_color, 20%); } } &:active { .screenshot-ui-capture-button-circle { background-color: darken($osd_fg_color, 50%); } } &:cast { .screenshot-ui-capture-button-circle { background-color: $screenshot_ui_button_red; } &:hover, &:focus { .screenshot-ui-capture-button-circle { background-color: lighten($screenshot_ui_button_red, 5%); } } &:active { .screenshot-ui-capture-button-circle { background-color: darken($screenshot_ui_button_red, 7%); } } } } .screenshot-ui-shot-cast-container { background-color: transparentize($osd_fg_color,0.9); border-radius: $forced_circular_radius; padding: $base_padding * 0.5; spacing: $base_padding * 0.5; @if $contrast == 'high' { @include draw_hc_inset(); } } // non-standard button style .screenshot-ui-shot-cast-button { padding: $base_padding $base_padding * 2; background-color: transparent; border-radius: $forced_circular_radius; @if $contrast == 'high' { @include draw_hc_inset(); } > StIcon { icon-size: $base_icon_size;} &:hover, &:focus { background-color: transparentize($osd_fg_color, 0.8);} &:active { background-color: transparentize($osd_fg_color, .5);} &:checked { background-color: $osd_fg_color; color: $osd_bg_color;} &:insensitive { color: transparentize($osd_fg_color, 0.5);} } .screenshot-ui-show-pointer-button { @extend %osd_button_flat; @extend .icon-button; } .screenshot-ui-area-indicator-shade { background-color: rgba(0,0,0,.3); } .screenshot-ui-area-selector { .screenshot-ui-area-indicator-shade { background-color: rgba(0,0,0,.5); } .screenshot-ui-area-indicator-selection { border: 2px white; } } .screenshot-ui-area-selector-handle { border-radius: $forced_circular_radius; background-color: white; box-shadow: 0 1px 3px 2px $shadow_color; width: $medium_icon_size; height: $medium_icon_size; } .screenshot-ui-window-selector { background-color: $system_base_color; .screenshot-ui-window-selector-window-container { margin: 100px; } &:primary-monitor { .screenshot-ui-window-selector-window-container { // Make some room for the panel. margin-bottom: 200px; } } } .screenshot-ui-window-selector-window-border { transition-duration: 200ms; border-radius: $modal_radius; border: 6px transparent; } .screenshot-ui-window-selector-check { transition-duration: 200ms; color: transparent; border-radius: $forced_circular_radius; border-width: 12px; icon-size: $medium_icon_size; } .screenshot-ui-window-selector-window { &:hover { .screenshot-ui-window-selector-window-border { border-color: st-darken(-st-accent-color, 15%); } } &:checked { .screenshot-ui-window-selector-window-border { border-color: -st-accent-color; background-color: st-transparentize(-st-accent-color, 0.8); } .screenshot-ui-window-selector-check { color: -st-accent-fg-color; background-color: -st-accent-color; } } } .screenshot-ui-screen-selector { transition-duration: 200ms; background-color: rgba(0,0,0,.5); &:hover { background-color: rgba(0,0,0,.3);} &:active { background-color: rgba(0,0,0,.7);} &:checked { background-color: transparent; border: 2px white; } } .screenshot-ui-tooltip { @extend %tooltip; text-align: center; -y-offset: $base_margin * 6; } 07070100000127000081A40000000000000000000000016712993F00000291000000000000000000000000000000000000004600000000gnome-shell-47.1/data/theme/gnome-shell-sass/widgets/_scrollbars.scss/* Scrollbars */ StScrollView { &.vfade { -st-vfade-offset: 68px; } &.hfade { -st-hfade-offset: 68px; } } StScrollBar { padding: 0; StScrollView & { min-width: 8px; min-height: 8px; } StBin#trough { border-radius: 0; background-color: transparent; } StButton#vhandle, StButton#hhandle { border-radius: 8px; background-color: mix($fg_color, $bg_color, 30%); border: 3px solid transparent; //would be nice to margin or at least to transparent transition: 500ms all ease; &:hover {background-color: mix($fg_color, $bg_color, 50%);} &:active {background-color: mix($fg_color, $bg_color, 40%);} } } 07070100000128000081A40000000000000000000000016712993F0000013D000000000000000000000000000000000000004800000000gnome-shell-47.1/data/theme/gnome-shell-sass/widgets/_search-entry.scss// Search entry .search-entry { border-radius: $forced_circular_radius; margin-top: $base_padding * 2; margin-bottom: $base_padding; width: 24em; @extend %system_entry; .search-entry-icon { icon-size: $scalable_icon_size; margin-top: 2px; // center vertically padding: 0 $base_margin; } } 07070100000129000081A40000000000000000000000016712993F00000825000000000000000000000000000000000000004A00000000gnome-shell-47.1/data/theme/gnome-shell-sass/widgets/_search-results.scss/* Search */ // search overview container #searchResults { margin: 0 $base_margin; } #searchResultsContent { max-width: 1044px; } // search results sections "the boxes" .search-section { // This should be equal to #searchResultsContent spacing spacing: $base_padding * 3; // separator (unstyled) .search-section-separator { height: $base_margin * 2; // use it as a spacer background-color: transparent; } } // content .search-section-content { background-color: $system_overlay_bg_color; color: $system_fg_color; border-radius: $modal_radius * 1.5; padding: $base_padding * 2; margin:0 $base_margin * 3; border: 2px solid transparent; @if $contrast == 'high' { border-color: $hc_inset_color; } } %search_section_content_item { @include tile_button($bg:$system_overlay_bg_color); border-radius: $base_border_radius * 1.65; } // "no results" text .search-statustext { @extend %title_1; color: transparentize($system_fg_color, .2); } .grid-search-results { spacing: $base_padding * 5; } // Search results with icons .grid-search-result { @extend .overview-tile; } // search result provider .search-provider-icon { @extend %search_section_content_item; &:ltr {margin-right: $base_margin;} &:rtl {margin-left: $base_margin;} // content .list-search-provider-content { spacing: $base_padding * 2; // provider labels .list-search-provider-details { width: 120px; color: $system_fg_color; } } } // search results list .list-search-results { spacing: $base_padding; } // search result listitem .list-search-result { @extend %search_section_content_item; // content .list-search-result-content { spacing: $base_padding; } // list item title (with leading icon) .list-search-result-title { spacing: $base_padding * 2; @if $contrast == 'high' { font-weight: bold; } } // list item description .list-search-result-description { color: $system_insensitive_fg_color; @if $contrast == 'high' { color: $system_fg_color; } } } 0707010000012A000081A40000000000000000000000016712993F000002DC000000000000000000000000000000000000004200000000gnome-shell-47.1/data/theme/gnome-shell-sass/widgets/_slider.scss/* Slider */ $slider_size: $scalable_icon_size; .slider { color: if($variant == 'light', $fg_color, darken($fg_color, 9%)); // slider trough -barlevel-height: 4px; -barlevel-background-color: transparentize($fg_color, 0.9); // fill style -barlevel-active-background-color: -st-accent-color; // overfill style (red in this case) -barlevel-overdrive-color: $destructive_color; -barlevel-overdrive-separator-width:1px; // slider handler -slider-handle-radius: $slider_size * 0.5; // half the size of the size // hc style @if $contrast == 'high' { -barlevel-background-color: transparentize($fg_color, 0.6); } &:hover { color: if($variant == 'light', lighten($fg_color, 7%), $fg_color); } } 0707010000012B000081A40000000000000000000000016712993F000006BC000000000000000000000000000000000000004A00000000gnome-shell-47.1/data/theme/gnome-shell-sass/widgets/_switcher-popup.scss/* App Switcher */ // same as dash $switcher_padding: $base_padding * 2; $switcher_radius: $modal_radius + $switcher_padding; // the full screen container of the switcher .switcher-popup { padding: 0; spacing: $base_padding * 4; } // switcher onscreen panel .switcher-list { @extend %osd_panel; padding: $switcher_padding; border-radius: $switcher_radius; box-shadow: 0 8px 8px 0 $shadow_color; // container for items in list .switcher-list-item-container { spacing: $base_padding * 2; } // each item in the list .item-box { @include tile_button($fg:$osd_fg_color, $bg:$osd_bg_color); // override %tile style so mouse doesn't steal focus &:hover {background: none;} // brighter than normal selected style &:selected { background-color: transparentize($osd_fg_color, 0.8); } @if $contrast == 'high' { &:selected { background-color: transparentize($osd_fg_color, 0.7); } } } .separator { width: 1px; background: $borders_color; } // container of thumbnails .thumbnail-box { padding: 2px; spacing: $base_padding; } // window thumbnail itself .thumbnail { width: 256px; // equal to THUMBNAIL_DEFAULT_SIZE in altTab.js border-radius:$base_border_radius; } } // arrow if app has multiple windows .switcher-arrow { border-color: transparentize($osd_fg_color, 0.2); color: transparentize($osd_fg_color, 0.2); &:highlighted { border-color: $osd_fg_color; color: $osd_fg_color; } } // Input Source Switcher .input-source-switcher-symbol { font-size: 34pt; width: 96px; height: 96px; } // Window cycler highlight .cycler-highlight { border: 5px solid -st-accent-color; } 0707010000012C000081A40000000000000000000000016712993F000004B4000000000000000000000000000000000000004400000000gnome-shell-47.1/data/theme/gnome-shell-sass/widgets/_switches.scss/* Switches */ $switch_width: 46px; $switch_handle_size: 20px; .toggle-switch { width: $switch_width; border-radius: $forced_circular_radius; transition-duration: 100ms; color: $fg_color; @if $contrast == 'high' { background: transparentize(if($variant == 'light', black, white), .7); &:hover { background: transparentize(if($variant == 'light', black, white), .6); } } @else { background: transparentize(if($variant == 'light', black, white), .85); &:hover { background: transparentize(if($variant == 'light', black, white), .8); } } StIcon { icon-size: $base_icon_size; } .handle { margin: 3px; width: $switch_handle_size; height: $switch_handle_size; border-radius: $forced_circular_radius; background: if($variant == 'light', white, mix(white, $bg_color, 80%)); box-shadow: 0 2px 4px transparentize(black, .8); transition-duration: 100ms; } &:checked { background: -st-accent-color; color: -st-accent-fg-color; &:hover { background-color: st-lighten(-st-accent-color, 5%); color: st-lighten(-st-accent-fg-color, 5%); } .handle { background: white; } } } 0707010000012D000081A40000000000000000000000016712993F0000058B000000000000000000000000000000000000004900000000gnome-shell-47.1/data/theme/gnome-shell-sass/widgets/_window-picker.scss/* Window Picker */ $window_close_button_color: transparentize(lighten($system_bg_color, 7%), .02); // Window picker .window-picker { // Space between window thumbnails spacing: $base_padding; } // Window icons .window-icon { // styled only with .icon-dropshadow // but has a different style in high-contrast @if $contrast == 'high' { background-color: $osd_bg_color; padding: $base_padding * 2; border-radius: $modal_radius; border: 2px solid $hc_inset_color; margin: $base_padding * 3; } } // Window titles .window-caption { @extend %tooltip; } // Close button .window-close { background-color: $window_close_button_color; color: $system_fg_color; border-radius: $forced_circular_radius; box-shadow: 0 2px 4px 0 $shadow_color; padding: $base_padding * 0.5; height: $large_icon_size; width: $large_icon_size; transition-duration: 100ms; border: 2px solid transparent; @if $contrast == 'high' { border-color: $hc_inset_color; } & StIcon { icon-size: $medium_icon_size; } &:hover { background-color: lighten($window_close_button_color, 7%); } &:active { background-color: lighten($window_close_button_color, 13%); } } .workspace-background { // keep in sync with BACKGROUND_CORNER_RADIUS_PIXELS in workspace.js border-radius: 30px; background-color: $invisible_occluded_bg_color; box-shadow: 0 4px 16px 4px $shadow_color; } 0707010000012E000081A40000000000000000000000016712993F00000284000000000000000000000000000000000000004E00000000gnome-shell-47.1/data/theme/gnome-shell-sass/widgets/_workspace-switcher.scss/* Workspace Switcher */ $ws_indicator_height: 32px; $ws_dot_active: $ws_indicator_height / 3; $ws_dot_inactive: $ws_indicator_height / 6; .workspace-switcher { @extend %osd_panel; margin-bottom: 4em; spacing: $base_padding * 2; padding: $base_padding * 2 $base_padding * 3; } .ws-switcher-indicator { background-color: transparentize($osd_fg_color,0.5); padding: $ws_dot_inactive / 2; margin: ($ws_indicator_height - $ws_dot_inactive) / 2; border-radius: $ws_indicator_height; &:active { background-color: $osd_fg_color; padding: $ws_dot_active / 2; margin: ($ws_indicator_height - $ws_dot_active) / 2; } } 0707010000012F000081A40000000000000000000000016712993F00000302000000000000000000000000000000000000005000000000gnome-shell-47.1/data/theme/gnome-shell-sass/widgets/_workspace-thumbnails.scss/* Workspace pager */ // thumbnails in overview .workspace-thumbnails { visible-width: 32px; //amount visible before hover spacing: $base_padding; padding: $base_padding; .workspace-thumbnail { color: $system_fg_color; background-color: lighten($system_bg_color, 10%); border-radius: $base_border_radius * 0.5; border: 1px solid transparent; @if $contrast == 'high' { border-color: $hc_inset_color; } } // drag and drop indicator .placeholder { background-image: url("resource:///org/gnome/shell/theme/workspace-placeholder.svg"); background-size: contain; width: 18px; } } // selected indicator .workspace-thumbnail-indicator { border: 3px solid -st-accent-color; border-radius: $base_border_radius; } 07070100000130000081A40000000000000000000000016712993F00003179000000000000000000000000000000000000003200000000gnome-shell-47.1/data/theme/gnome-shell-start.svg image/svg+xml 07070100000131000081A40000000000000000000000016712993F00000964000000000000000000000000000000000000002800000000gnome-shell-47.1/data/theme/meson.buildtheme_sources = files([ 'gnome-shell-high-contrast.scss', 'gnome-shell-dark.scss', 'gnome-shell-light.scss', 'gnome-shell-sass/_colors.scss', 'gnome-shell-sass/_common.scss', 'gnome-shell-sass/_drawing.scss', 'gnome-shell-sass/_high-contrast-colors.scss', 'gnome-shell-sass/_widgets.scss', 'gnome-shell-sass/widgets/_a11y.scss', 'gnome-shell-sass/widgets/_app-grid.scss', 'gnome-shell-sass/widgets/_base.scss', 'gnome-shell-sass/widgets/_buttons.scss', 'gnome-shell-sass/widgets/_calendar.scss', 'gnome-shell-sass/widgets/_check-box.scss', 'gnome-shell-sass/widgets/_corner-ripple.scss', 'gnome-shell-sass/widgets/_dash.scss', 'gnome-shell-sass/widgets/_dialogs.scss', 'gnome-shell-sass/widgets/_entries.scss', 'gnome-shell-sass/widgets/_ibus-popup.scss', 'gnome-shell-sass/widgets/_keyboard.scss', 'gnome-shell-sass/widgets/_login-lock.scss', 'gnome-shell-sass/widgets/_looking-glass.scss', 'gnome-shell-sass/widgets/_message-list.scss', 'gnome-shell-sass/widgets/_misc.scss', 'gnome-shell-sass/widgets/_notifications.scss', 'gnome-shell-sass/widgets/_osd.scss', 'gnome-shell-sass/widgets/_overview.scss', 'gnome-shell-sass/widgets/_panel.scss', 'gnome-shell-sass/widgets/_popovers.scss', 'gnome-shell-sass/widgets/_quick-settings.scss', 'gnome-shell-sass/widgets/_screenshot.scss', 'gnome-shell-sass/widgets/_scrollbars.scss', 'gnome-shell-sass/widgets/_search-entry.scss', 'gnome-shell-sass/widgets/_search-results.scss', 'gnome-shell-sass/widgets/_slider.scss', 'gnome-shell-sass/widgets/_switcher-popup.scss', 'gnome-shell-sass/widgets/_switches.scss', 'gnome-shell-sass/widgets/_window-picker.scss', 'gnome-shell-sass/widgets/_workspace-switcher.scss', 'gnome-shell-sass/widgets/_workspace-thumbnails.scss' ]) stylesheets = [ 'gnome-shell-high-contrast.css', 'gnome-shell-dark.css', 'gnome-shell-light.css', ] foreach stylesheet: stylesheets if not fs.exists(stylesheet) sassc = find_program('sassc') theme_deps += custom_target(stylesheet, input: fs.replace_suffix(stylesheet, '.scss'), output: stylesheet, command: [ sassc, '-a', '@INPUT@', '@OUTPUT@' ], depend_files: theme_sources) endif endforeach 07070100000132000081A40000000000000000000000016712993F000001F8000000000000000000000000000000000000002800000000gnome-shell-47.1/data/theme/pad-osd.css.Leader { stroke-width: .5 !important; stroke: #535353; fill: none !important; } .Button { stroke-width: .25; stroke: #ededed; fill: #ededed; } .Ring { stroke-width: .5 !important; stroke: #535353 !important; fill: none !important; } .Label { stroke: none !important; stroke-width: .1 !important; fill: transparent !important; } .TouchStrip, .TouchRing { stroke-width: .1 !important; stroke: #ededed !important; fill: #535353 !important; } 07070100000133000081A40000000000000000000000016712993F00003CE0000000000000000000000000000000000000003500000000gnome-shell-47.1/data/theme/process-working-dark.svg07070100000134000081A40000000000000000000000016712993F00003CF5000000000000000000000000000000000000003600000000gnome-shell-47.1/data/theme/process-working-light.svg07070100000135000081A40000000000000000000000016712993F00000FCC000000000000000000000000000000000000003200000000gnome-shell-47.1/data/theme/running-indicator.svg image/svg+xml 07070100000136000081A40000000000000000000000016712993F0000106B000000000000000000000000000000000000003600000000gnome-shell-47.1/data/theme/workspace-placeholder.svg image/svg+xml 07070100000137000081ED0000000000000000000000016712993F000003F9000000000000000000000000000000000000002C00000000gnome-shell-47.1/data/update-osk-layouts.sh#!/bin/env bash CLDR_LAYOUTS_TARBALL="http://www.unicode.org/Public/cldr/latest/keyboards.zip" WORKDIR=".osk-layout-workbench" CLDR2JSON="cldr2json/cldr2json.py" SRCDIR="$WORKDIR/keyboards/android" DESTDIR="osk-layouts" GRESOURCE_FILE="gnome-shell-osk-layouts.gresource.xml" TMP_GRESOURCE_FILE=".$GRESOURCE_FILE.tmp" cd `dirname $0` # Ensure work/dest dirs rm -rf $WORKDIR mkdir -p $WORKDIR mkdir -p "osk-layouts" # Download stuff on the work dir pushd $WORKDIR gio copy $CLDR_LAYOUTS_TARBALL . unzip keyboards.zip popd # Transform to JSON files $CLDR2JSON $SRCDIR $DESTDIR # Generate new gresources xml file cat >$TMP_GRESOURCE_FILE < EOF for f in $DESTDIR/*.json do echo " $(basename $f)" >>$TMP_GRESOURCE_FILE done cat >>$TMP_GRESOURCE_FILE <emoji.json EOF # Rewrite old gresources xml mv $TMP_GRESOURCE_FILE $GRESOURCE_FILE 07070100000138000041ED0000000000000000000000026712993F00000000000000000000000000000000000000000000001600000000gnome-shell-47.1/docs07070100000139000081A40000000000000000000000016712993F0000108D000000000000000000000000000000000000002E00000000gnome-shell-47.1/docs/building-and-running.md# Building and Running ## Building gnome-shell gnome-shell uses the [meson] build system, and can be compiled with the following commands: ```sh $ meson setup _build $ meson compile -C _build ``` Unfortunately gnome-shell has a non-trivial number of dependencies that cannot always be satisfied by distribution packages. This is particular true for [mutter], which is developed in lock-step with gnome-shell and always has to be built from source. [meson]: https://mesonbuild.com/ [mutter]: https://mutter.gnome.org ## Toolbox [Toolbox][toolbox] is a container tool for Linux, which allows the use of interactive command line environments for development, without having to install software on the host. It is suitable for gnome-shell development, and we maintain a number of scripts to make its use easier and more convenient. You can set up a new container that satisfies all build- and runtime dependencies with the following script: ```sh $ tools/toolbox/create-toolbox.sh ``` The script will download the container image and build mutter, so it is expected that it will take a while. Once you have a working container, the following scripts can be used to build and run gnome-shell: ```sh $ tools/toolbox/meson-build.sh $ tools/toolbox/run-gnome-shell.sh ``` If building or running fails with errors about `meta`, `clutter` or `cogl`, there was probably an incompatible change in mutter. You can update the dependency with the following command: ```sh $ toolbox run --container gnome-shell-devel update-mutter ``` Refer to the [README][toolbox-tools] for further information on the scripts. [toolbox]: https://containertoolbx.org/ [toolbox-tools]: ../tools/toolbox/README.md ## Running a nested instance It is possible to run gnome-shell as "nested" instance in a window. The `run-gnome-shell` script will automatically do that when run from a graphical session, or you can run the following command: ```sh $ WAYLAND_DISPLAY=shell-test-1 dbus-run-session \ gnome-shell --wayland-display=shell-test-1 --nested ``` There are limitations to the nested instance, such as keyboard shortcuts usually not getting to the nested compositor. In order to still bring up the [Looking Glass][lg] debugger, you can use an [extension][lg-button] as workaround. [lg]: ./looking-glass.md [lg-button]: https://extensions.gnome.org/extension/2296/looking-glass-button/ ## Native Sometimes it's necessary to run the "native backend", on real display hardware. To do that, switch to a tty and either use the `run-gnome-shell` script or run the following command: ```sh $ dbus-run-session gnome-shell --wayland ``` Some functionality is not available when running gnome-shell outside a GNOME session, including logout. To exit gnome-shell, bring up the run dialog with Alt F2 and enter `debugexit`. ## Running under valgrind with a full session Sometimes it is necessary to run gnome-shell under valgrind within a full GNOME session. This can be achieved by overriding the `ExecStart` command of the systemd service file used to launch gnome-shell with a drop-in config file. Starting gnome-shell under valgrind can also take some time which requires adjusting the timeouts of the service as well. This command can be used to create such a drop-in file for the current user: ```sh $ systemctl --user edit org.gnome.Shell@wayland.service --drop-in valgrind ``` This opens an editor in which the following content has to be added: ```ini [Service] ExecStart= ExecStart=/usr/bin/valgrind --log-file=/tmp/gs-valgrind.txt --enable-debuginfod=no --leak-check=full --show-leak-kinds=definite /usr/bin/gnome-shell TimeoutStartSec=300 TimeoutStopSec=300 ``` Then the next time when logging into a session as the current user, gnome-shell will be running under valgrind and create a log file under `/tmp/gs-valgrind.txt`. After ending the valgrind session and obtaining the log file, the drop-in file needs to be removed again before starting the next session. Otherwise the log will get overwritten. This can be done using following command from a VT: ```sh $ systemctl --user revert org.gnome.Shell@wayland.service ``` For X11 sessions use `org.gnome.Shell@x11.service` in these commands instead. 0707010000013A000081A40000000000000000000000016712993F00001E2F000000000000000000000000000000000000002800000000gnome-shell-47.1/docs/c-coding-style.md# C Coding Style The coding style used is primarily the GNU flavor of the [GNOME coding style][gnome-coding-style], with some additions described below. ## General * Use this code style on new code. When changing old code with a different code style, feel free to also adjust it to use this code style. * Use regular C types and `stdint.h` types instead of GLib fundamental types, except for `gboolean`, and `guint`/`gulong` for GSource IDs and signal handler IDs. That means e.g. `uint64_t` instead of `guint64`, `int` instead of `gint`, `unsigned int` instead of `guint` if unsignedness is of importance, `uint8_t` instead of `guchar`, and so on. * Try to to limit line length to 80 characters, although it's not a strict limit. * Usage of `g_autofree` and `g_autoptr` is encouraged. The style to use is ```c g_autofree char *text = NULL; g_autoptr (StSomeThing) thing = NULL; text = g_strdup_printf ("The text: %d", a_number); thing = g_object_new (ST_TYPE_SOME_THING, "text", text, NULL); thinger_use_thing (rocket, thing); ``` * Declare variables at the top of the block they are used, but avoid non-trivial logic among variable declarations. Non-trivial logic can be getting a pointer that may be `NULL`, any kind of math, or anything that may have side effects. * Instead of boolean arguments in functions, prefer enums or flags when they're more expressive. The naming convention for flags is ```c typedef _StSomeThingFlags { ST_SOME_THING_FLAG_NONE = 0, ST_SOME_THING_FLAG_ALTER_REALITY = 1 << 0, ST_SOME_THING_FLAG_MANIPULATE_PERCEPTION = 1 << 1, } StSomeThingFlags; ``` * Use `g_new0 ()` etc. instead of `g_slice_new0 ()`. * Initialize and assign floating point variables (i.e. `float` or `double`) using the form `floating_point = 3.14159` or `ratio = 2.0`. ## Naming conventions * For object instance pointers, use a descriptive name instead of `self`, e.g. ```c G_DEFINE_TYPE (StPlaceholder, st_placeholder, G_TYPE_OBJECT) ... void st_placeholder_hold_place (StPlaceholder *placeholder) { ... } ``` ## Header (.h) files * The return type and `*` are separated by a space. * Function name starts one space after the last `*`. * Parenthesis comes one space after the function name. As an example, this is how functions in a header file should look like: ```c gboolean st_icon_theme_has_icon (StIconTheme *icon_theme, const char *icon_name); GList * st_icon_theme_list_icons (StIconTheme *icon_theme, const char *context); StIconInfo * st_icon_info_new_for_pixbuf (StIconTheme *icon_theme, GdkPixbuf *pixbuf); ``` ## Source code Keep functions in the following order in source files: 1. GPL header 2. Include header files 3. Enums 4. Structures 5. Function prototypes 6. `G_DEFINE_TYPE()` 7. Static variables 8. Auxiliary functions 9. Callbacks 10. Interface implementations 11. Parent vfunc overrides 12. class_init and init 13. Public API ### Include header files Source files should use the header include order of the following example: * `st-example.c`: ```c #include "config.h" #include "st-example-private.h" #include #include #ifdef HAVE_MALLINFO2 #include #endif #include "st-private.h" #include "st-dbus-file-generated-by-gdbus-codegen.h" ``` ### Structures Each structure field has a space after their type name. Structure fields aren't aligned. For example: ```c struct _StFooBar { StFoo parent; StBar *bar; StSomething *something; }; ``` ### Function Prototypes Function prototypes must be formatted just like in header files. ### Overrides When overriding parent class vfuncs, or implementing an interface, vfunc overrides should be named as a composition of the current class prefix, followed by the vfunc name. For example: ```c static void st_bar_spawn_unicorn (StParent *parent) { /* ... */ } static void st_bar_dispose (GObject *object) { /* ... */ } static void st_bar_finalize (GObject *object) { /* ... */ } static void st_bar_class_init (StBarClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); StParentClass *parent_class = ST_PARENT_CLASS (klass); object_class->dispose = st_bar_dispose; object_class->finalize = st_bar_finalize; parent_class->spawn_unicorn = st_bar_spawn_unicorn; } ``` ### Interface Implementations When implementing interfaces, two groups of functions are involved: the init function, and the overrides. The interface init function is named after the interface type in snake case, followed by the `_iface_init` suffix. For example: ```c static void st_foo_iface_init (StFooInterface *foo_iface); G_DEFINE_TYPE_WITH_CODE (StBar, st_bar, G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE (ST_TYPE_FOO, st_foo_iface_init)); ``` Then, when implementing each vfunc of the interface, follow the same pattern of the [Overrides](###Overrides) section. Here's an example: ```c static void st_bar_do_something (StFoo *foo) { /* ... */ } static void st_foo_iface_init (StFooInterface *foo_iface) { foo_iface->do_something = st_bar_do_something; } ``` ### Auxiliary Functions Auxiliary functions are above every other functions to minimize the number of function prototypes in the file. These functions often grow when factoring out the same code between two or more functions: ```c static void do_something_on_data (Foo *data, Bar *bar) { /* ... */ } static void random_function (Foo *foo) { do_something_on_data (foo, bar); } static void another_random_function (Foo *foo) { do_something_on_data (foo, bar); } ``` Sometimes, however, auxiliary functions are created to break down otherwise large functions - in this case, it is appropriate to keep these auxiliary functions close to the function they are tightly related to. Auxiliary function names must have a verb in the imperative form, and should always perform an action over something. They usually don't have the class prefix (`st_` or `shell_`). For example: ```c static void do_something_on_data (Foo *data, Bar *bar) { /* ... */ } ``` Exceptionally, when converting between types, auxiliary function names may have the class prefix to this rule. For example: ```c static StFoo * st_foo_from_bar (Bar *bar) { /* ... */ } ``` ### Callback Functions Callback function names should have the name of the action in imperative form. They don't have any prefix, but have a `_func` suffix. For example: ```c static void filter_something_func (Foo *foo, Bar *bar, gpointer user_data) { /* ... */ } ``` ### Signal Callbacks Signal callbacks generally have the signal name. They should be prefixed with `on_`, or suffixed with `_cb`, but not both. For example: ```c static void on_realize (ClutterActor *actor, gpointer user_data) { /* ... */ } static void destroy_cb (ClutterActor *actor, gpointer user_data) { /* ... */ } ``` When the callback is named after the object that generated it, and the signal, then passive voice is used. For example: ```c static void click_action_clicked_cb (ClutterClickAction *click_action, ClutterActor *actor, gpointer user_data) { /* ... */ } ``` [gnome-coding-style]: https://developer.gnome.org/documentation/guidelines/programming/coding-style.html 0707010000013B000081A40000000000000000000000016712993F00000722000000000000000000000000000000000000002900000000gnome-shell-47.1/docs/commit-messages.md# Commit Messages Commit messages should follow the guidelines in the [GNOME handbook][handbook]. Please make sure that you have read those recommendations carefully. The following outlines the additional conventions that are used in gnome-shell (and mutter). [handbook]: https://handbook.gnome.org/development/commit-messages.html ## Example ``` status/volume: Automatically mute in vacuum In space, no one can hear you scream. There is no point in emitting sound that cannot be perceived, so automatically mute all output streams. Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/1234 ``` ## Description Try to always prefix commit subjects with a relevant topic, such as `overview:` or `st/actor:`. Less specific changes can use more general topics such as `st` or `js`. As a general rule, it is always better to write too much in the commit message body than too little. ## References References should always be expressed as full URL instead of the `#1234` shorthand, so they still work outside the GitLab UI. To close an issue automatically, we prefer the `Closes:` keyword over the alternatives (see next section). If a merge requests consists of multiple commits and none of them fixes the issue completely, use the plain issue URL without prefix as reference, and use the automatic issue closing syntax in the description of the merge request. Do not add any `Part-of:` line, as that will be handled automatically when merging. ## The Fixes tag If a commit fixes a regression caused by a particular commit, it can be marked with the `Fixes:` tag. To produce such a tag, use ``` git show -s --pretty='format:Fixes: %h ("%s")' ``` or create an alias ``` git config --global alias.fixes "show -s --pretty='format:Fixes: %h (\"%s\")'" ``` and then use ``` git fixes ``` 0707010000013C000081A40000000000000000000000016712993F00000614000000000000000000000000000000000000002300000000gnome-shell-47.1/docs/debugging.md# Debugging ## Looking Glass [Looking Glass][lg] is a built-in debugger and inspector tool that makes it possible to run arbitrary JS code inside the shell, visually select any object from the shell's scene, and much more. It can be accessed by entering `lg` into the run dialog (Alt+F2). [lg]: looking-glass.md ## Javascript stacktraces gnome-shell is split between C and JavaScript. It is sometimes necessary to debug the interaction between the two, for example when javascript code triggers a warning or crash on the C side. In gdb, the javascript stacktrace can be printed with ``` gjs_dumpstack() ``` The `SHELL_DEBUG` environment variable can be used to print the javascript stack automatically: * `backtrace-warning`: when a warning is logged * `backtrace-segfault`: on segfaults To log a stacktrace when some particular javascript code is reached, you can insert the following code: ```js console.trace('trace from doSomething()') ``` ## Debugging the session's gnome-shell proces It is possible to attach gdb to the gnome-shell process of the existing login session (or with the native backend on a tty), but beware: When the debugger stops the gnome-shell process, the entire session will freeze. It is necessary to use a second system to continue controlling the debugger, most conveniently in combination with [screen]: 1. create a screen session 2. detach the session 3. ssh from a second system 4. resume the screen session 5. attach gdb to the gnome-shell process [screen]: https://www.gnu.org/software/screen/ 0707010000013D000081A40000000000000000000000016712993F0000293F000000000000000000000000000000000000002900000000gnome-shell-47.1/docs/js-coding-style.md# JS Coding Style Our goal is to have all JavaScript code in GNOME follow a consistent style. In a dynamic language like JavaScript, it is essential to be rigorous about style (and unit tests), or you rapidly end up with a spaghetti-code mess. ## A quick note Life isn't fun if you can't break the rules. If a rule seems unnecessarily restrictive while you're coding, ignore it, and let the patch reviewer decide what to do. ## Indentation, braces and whitespace * Use four-space indents. * Braces are on the same line as their associated statements. * You should only omit braces if *both* sides of the statement are on one line. * One space after the `function` keyword. * No space between the function name in a declaration or a call. * One space before the parens in the `if` statements, or `while`, or `for` loops. ```javascript function foo(a, b) { let bar; if (a > b) bar = do_thing(a); else bar = do_thing(b); if (bar === 5) { for (let i = 0; i < 10; i++) print(i); } else { print(20); } } ``` ## Semicolons JavaScript allows omitting semicolons at the end of lines, but don't. Always end statements with a semicolon. ## js2-mode If using Emacs, do not use js2-mode. It is outdated and hasn't worked for a while. emacs now has a built-in JavaScript mode, js-mode, based on espresso-mode. It is the de facto emacs mode for JavaScript. ## File naming and creation For JavaScript files, use lowerCamelCase-style names, with a `.js` extension. We only use C where gjs/gobject-introspection is not available for the task, or where C would be cleaner. To work around limitations in gjs/gobject-introspection itself, add a new method in `shell-util.[ch]`. Like many other GNOME projects, we prefix our C source filenames with the library name followed by a dash, e.g. `shell-app-system.c`. Create a `-private.h` header when you want to share code internally in the library. These headers are not installed, distributed or introspected. ## Imports Use UpperCamelCase when importing modules to distinguish them from ordinary variables, e.g. ```javascript import GLib from 'gi://GLib'; ``` Imports should be categorized into one of two places. The top-most import block should contain only "environment imports". These are either modules from gobject-introspection or modules added by gjs itself. The second block of imports should contain only "application imports". These are the JS code that is in the gnome-shell codebase, e.g. `'./popupMenu.js'`. Each import block should be sorted alphabetically. Don't import modules you don't use. ```javascript import GLib from 'gi://GLib'; import Gio from 'gi://Gio'; import St from 'gi://St'; import * as Main from './main.js'; import * as Params from '../misc/params.js'; import * as Util from '../misc/util.js'; ``` The alphabetical ordering should be done independently of the location of the location. Never reference `imports` in actual code. ## Constants We use CONSTANTS_CASE to define constants. All constants should be directly under the imports: ```javascript const MY_DBUS_INTERFACE = 'org.my.Interface'; ``` ## Variable declaration Always use either `const` or `let` when defining a variable. ```javascript // Iterating over an array for (let i = 0; i < arr.length; ++i) { const item = arr[i]; } // Iterating over an object's properties for (const prop in someobj) { const val = someobj[prop]; } ``` If you use "var" then the variable is added to function scope, not block scope. See [What's new in JavaScript 1.7](https://developer.mozilla.org/en/JavaScript/New_in_JavaScript/1.7#Block_scope_with_let_%28Merge_into_let_Statement%29) ## Classes There are many approaches to classes in JavaScript. We use standard ES6 classes whenever possible, that is when not inheriting from GObjects. ```javascript export class IconLabelMenuItem extends PopupMenu.PopupMenuBaseItem { constructor(icon, label) { super({reactive: false}); this.actor.add_child(icon); this.actor.add_child(label); } open() { log('menu opened!'); } } ``` For GObject inheritance, we use the GObject.registerClass() function provided by gjs. ```javascript export const MyActor = GObject.registerClass( class MyActor extends Clutter.Actor { constructor(params) { super(params); this.name = 'MyCustomActor'; } }); ``` ## GObject Introspection GObject Introspection is a powerful feature that allows us to have native bindings for almost any library built around GObject. If a library requires you to inherit from a type to use it, you can do so: ```javascript export const MyClutterActor = GObject.registerClass( class MyClutterActor extends Clutter.Actor { vfunc_get_preferred_width(forHeight) { return [100, 100]; } vfunc_get_preferred_height(forWidth) { return [100, 100]; } vfunc_paint(paintContext) { let framebuffer = paintContext.get_framebuffer(); let coglContext = framebuffer.get_context(); let alloc = this.get_allocation_box(); let pipeline = Cogl.Pipeline.new(coglContext); pipeline.set_color4ub(255, 0, 0, 255); framebuffer.draw_rectangle(pipeline, alloc.x1, alloc.y1, alloc.x2, alloc.y2); } }); ``` ## Translatable strings, `environment.js` We use gettext to translate the GNOME Shell into all the languages that GNOME supports. The `gettext` function is aliased globally as `_`, you do not need to explicitly import it. This is done through some magic in the [environment.js](http://git.gnome.org/browse/gnome-shell/tree/js/ui/environment.js) file. If you can't find a method that's used, it's probably either in gjs itself or installed on the global object from the Environment. ## `actor` (deprecated) and `_delegate` gjs allows us to set so-called "expando properties" on introspected objects, allowing us to treat them like any other. Because the Shell was built before you could inherit from GTypes natively in JS, in some cases we have a wrapper class that has a property called `actor` (now deprecated). We call this wrapper class the "delegate". We sometimes use expando properties to set a property called `_delegate` on the actor itself: ```javascript export const MyActor = GObject.registerClass( class MyActor extends Clutter.Actor { constructor(params) { super(params); this._delegate = this; } }); ``` Or using the deprecated `actor`: ```javascript export class MyClass { constructor() { this.actor = new St.Button({text: 'This is a button'}); this.actor._delegate = this; this.actor.connect('clicked', this._onClicked.bind(this)); } _onClicked(actor) { actor.set_label('You clicked the button!'); } } ``` The 'delegate' property is important for anything which trying to get the delegate object from an associated actor. For instance, the drag and drop system calls the `handleDragOver` function on the delegate of a "drop target" when the user drags an item over it. If you do not set the `_delegate` property, your actor will not be able to be dropped onto. In case the class is an actor itself, the `_delegate` can be just set to `this`. ## Functional style JavaScript Array objects offer a lot of common functional programming capabilities such as forEach, map, filter and so on. You can use these when they make sense, but please don't have a spaghetti mess of function programming messed in a procedural style. Use your best judgment. ## Closures `this` will not be captured in a closure, it is relative to how the closure is invoked, not to the value of this where the closure is created, because "this" is a keyword with a value passed in at function invocation time, it is not a variable that can be captured in closures. All closures should be wrapped with Function.prototype.bind or use arrow notation. ```javascript let closure1 = () => this._fnorbate(); let closure2 = this._fnorbate.bind(this); ``` A more realistic example would be connecting to a signal on a method of a prototype: ```javascript import * as FnorbLib from './fborbLib.js'; export class MyClass { constructor() { let fnorb = new FnorbLib.Fnorb(); fnorb.connect('frobate', this._onFnorbFrobate.bind(this)); } _onFnorbFrobate(fnorb) { this._updateFnorb(); } } ``` ## Object literal syntax In JavaScript, these are equivalent: ```javascript foo = {'bar': 42}; foo = {bar: 42}; ``` and so are these: ```javascript b = foo['bar']; b = foo.bar; ``` If your usage of an object is like an object, then you're defining "member variables." For member variables, use the no-quotes no-brackets syntax: `{bar: 42}` `foo.bar`. If your usage of an object is like a hash table (and thus conceptually the keys can have special chars in them), don't use quotes, but use brackets: `{bar: 42}`, `foo['bar']`. ## Animations Most objects that are animated are actors, and most properties used in animations are animatable, which means they can use implicit animations: ```javascript moveActor(actor, x, y) { actor.ease({ x, y, duration: 500, // ms mode: Clutter.AnimationMode.EASE_OUT_QUAD, }); } ``` The above is a convenience wrapper around the actual Clutter API, and should generally be preferred over the more verbose: ```javascript moveActor(actor, x, y) { actor.save_easing_state(); actor.set_easing_duration(500); actor.set_easing_mode(Clutter.AnimationMode.EASE_OUT_QUAD); actor.set({ x, y, }); actor.restore_easing_state(); } ``` There is a similar convenience API around Clutter.PropertyTransition to animate actor (or actor meta) properties that cannot use implicit animations: ```javascript desaturateActor(actor, desaturate) { let factor = desaturate ? 1.0 : 0.0; actor.ease_property('@effects.desaturate.factor', factor, { duration: 500, // ms mode: Clutter.AnimationMode.EASE_OUT_QUAD, }); } ``` 0707010000013E000081A40000000000000000000000016712993F00000AD2000000000000000000000000000000000000002700000000gnome-shell-47.1/docs/looking-glass.md# Looking Glass Looking Glass is GNOME Shell's integrated debugger and inspector tool. You currently run it by pressing Alt F2, and typing `lg`Return. You can leave Looking Glass by pressing Esc in its Evaluator pane. Looking Glass has five major panes (Evaluator, Windows, Extensions, Actors and Flags) and one tool (the Picker). ## Evaluator This is an interactive JavaScript prompt. You can type arbitrary JavaScript at the prompt, and it will be evaluated. Try, in order: ```js 1+1 global.get_window_actors() global.get_window_actors().forEach(w => w.ease({duration: 3000, mode: Clutter.AnimationMode.EASE_OUT_QUAD, scale_x: 0.3, scale_y: 0.3})) global.get_window_actors().forEach(w => w.set_scale(1, 1)) global.get_window_actors()[0] it.scale_x ``` ### Special evaluator features This last bit, the `it`, deserves more explanation. One thing about the Evaluator that's different from say Python's default interactive prompt is that each computed value is saved by default, and can be referred back to. Typing r(*number* ) will get you back the result with that number, and `it` is the last result. The evaluator also has a history feature; you can press and to access previously used entries. The history is automatically saved to the dconf key `/org/gnome/shell/looking-glass-history`, and loaded when you restart the shell. ### Imports Some common modules like Clutter, GObject or Main are pre-imported and always available. Additional modules can be loaded using dynamic imports: ```js Util = await import('../misc/util.js') {Panel} = await import('./panel.js') {default: Pango} = await import('gi://Pango') ``` ### Slowing Down Animations You can use Looking Glass to access the global `St.Settings` object and set its `slow_down_factor` property: ```js St.Settings.get().slow_down_factor = 5 ``` Any value greater than 1 makes all shell animations slower. This is particularly useful when implementing a new animation behavior. ## Windows This is a list of all open windows and related information, like the associated app. ## Extensions This is a list of all currently installed extensions. You can use the View Source link to quickly access the extension folder. ## Actors This pane gives access to a complete tree of the actor hierarchy. It is useful when an actor cannot be selected with the picker or accessed via code in the evaluator. ## Flags This pane provides easy access to a list of Mutter and Clutter debug flags. ## The Picker The picker allows you to visually select any object from the shell's scene. When you do, it's inserted as a result into the Evaluator pane. During picking, you can scroll to move up and down the actor hierarchy. 0707010000013F000081A40000000000000000000000016712993F00000BB1000000000000000000000000000000000000003600000000gnome-shell-47.1/docs/newcomers-contribution-guide.md# Contributing tips for Newcomers Like most projects, gnome-shell has a few rules and conventions around the coding style and the usage of git. When you make your first MR to gnome-shell, here's a few basics to get started. ## Look at MRs that were merged already In general it's a good idea to look at a few [merged MRs](https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests?scope=all&state=merged) before making your first MR. This will help you get a good idea of what commit messages and code changes usually look like. ## JavaScript coding style The gnome-shell codebase has fairly consistent coding style. When working on gnome-shell, you should be on the safe side by following the coding style of the existing code around you. The full JS coding style rules are [here](https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/docs/js-coding-style.md). ## Writing commit messages Commit messages should always have summary and a description. The first line (summary) of your commit message should quickly tell what change was made, and the description should explain why that change was made (so that people looking at the git history later don't have to read through Gitlab to understand why a change was made). [Here's an example and more tips](https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/docs/commit-messages.md#example) for a good commit message. The [GNOME Handbook](https://handbook.gnome.org/development/commit-messages.html) also has a good section on commit messages. And of course just can always read a bit through the git history. ## Keep the commit history clean gnome-shell tries to keep a clean git history (no merge commits or "apply review" commits). When you propose changes, try to group them into a "clean" series of individual commits, where each commit is changing a single thing and explains why that is done. For larger changes, the commit history should be almost similar to telling a story. Ideally, the reviewer can read through your "story" of commit messages from beginning to end, and can understand what you're changing without having to look at the code at all. ## Applying and responding to reviews When applying changes requested by reviews, use `git rebase -i` and make changes to your individual commits (`git commit --amend`, you might want to learn about fixup commits too), then force-push the updated branch to your MR. If you use Gitlab's "Apply Suggestion" feature, that will add an extra commit to your branch instead of updating the actual commit where you're making the change, so you'll have to squash that extra commit into the actual commit manually. ## Gitlab MR title and description If the MR has just a single commit, you can just use the commit title and description for the MR too (GitLab does this by default). If the MR has multiple commits, write a short overview of what you're changing (doesn't have to be long, the full reasoning and explanations should always be in the commit messages). 07070100000140000041ED0000000000000000000000026712993F00000000000000000000000000000000000000000000002000000000gnome-shell-47.1/docs/reference07070100000141000081A40000000000000000000000016712993F00000169000000000000000000000000000000000000002C00000000gnome-shell-47.1/docs/reference/meson.buildgidocgen = find_program('gi-docgen', required: get_option('gtk_doc')) doc_conf = configuration_data() doc_conf.set('MUTTER_API_VERSION', mutter_api_version) gi_docgen_common_args = [ '--quiet', '--no-namespace-dir', ] if get_option('werror') gi_docgen_common_args += ['--fatal-warnings'] endif docs_dir = datadir / 'doc' subdir('shell') subdir('st') 07070100000142000041ED0000000000000000000000026712993F00000000000000000000000000000000000000000000002600000000gnome-shell-47.1/docs/reference/shell07070100000143000081A40000000000000000000000016712993F00000305000000000000000000000000000000000000003200000000gnome-shell-47.1/docs/reference/shell/meson.buildshell_toml = configure_file( input: 'shell.toml.in', output: 'shell.toml', configuration: doc_conf ) custom_target('shell-doc', input: [shell_toml, libshell_gir[0]], output: 'shell', command: [ gidocgen, 'generate', gi_docgen_common_args, '--add-include-path=@0@'.format(meson.current_build_dir() / '../../../src'), '--add-include-path=@0@'.format(meson.current_build_dir() / '../../../src/st'), '--add-include-path=@0@'.format(mutter_dep.get_variable('girdir')), '--add-include-path=@0@'.format(meson.current_build_dir() / '../../../subprojects/gvc'), '--config=@INPUT0@', '--output-dir=@OUTPUT@', '--content-dir=@0@'.format(meson.current_source_dir()), '@INPUT1@', ], install: true, install_dir: docs_dir, ) 07070100000144000081A40000000000000000000000016712993F000004EB000000000000000000000000000000000000003400000000gnome-shell-47.1/docs/reference/shell/shell.toml.in[library] namespace = "Shell" version = "@MUTTER_API_VERSION@" browse_url = "https://gitlab.gnome.org/GNOME/gnome-shell/" repository_url = "https://gitlab.gnome.org/GNOME/gnome-shell.git" website_url = "https://www.gnome.org" license = "GPL-2.0-or-later" description = "Shell" dependencies = ["GObject-2.0", "Gio-2.0", "Meta-@MUTTER_API_VERSION@", "Clutter-@MUTTER_API_VERSION@"] devhelp = true search_index = true [dependencies."GObject-2.0"] name = "GObject" description = "The base type system library" docs_url = "https://docs.gtk.org/gobject" [dependencies."Gio-2.0"] name = "Gio" description = "GObject Interfaces and Objects, Networking, IPC, and I/O" docs_url = "https://docs.gtk.org/gio" [dependencies."Meta-@MUTTER_API_VERSION@"] name = "Meta" description = "The mutter display server, window manager and compositor library" docs_url = "https://mutter.gnome.org/meta/" [dependencies."Clutter-@MUTTER_API_VERSION@"] name = "Clutter" description = "An OpenGL based 'interactive canvas' library" docs_url = "https://mutter.gnome.org/clutter/" [theme] name = "basic" show_index_summary = true [source-location] base_url = "https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/HEAD/" [extra] urlmap_file = "urlmap.js" 07070100000145000081A40000000000000000000000016712993F000001E8000000000000000000000000000000000000003000000000gnome-shell-47.1/docs/reference/shell/urlmap.jsbaseURLs = [ [ 'GLib', 'https://docs.gtk.org/glib/' ], [ 'GObject', 'https://docs.gtk.org/gobject/' ], [ 'Gio', 'https://docs.gtk.org/gio/' ], [ 'GdkPixbuf', 'https://docs.gtk.org/gdk-pixbuf/' ], [ 'Meta', 'https://mutter.gnome.org/meta/' ], [ 'Mtk', 'https://mutter.gnome.org/mtk/' ], [ 'Cogl', 'https://mutter.gnome.org/cogl/' ], [ 'Clutter', 'https://mutter.gnome.org/clutter/' ], [ 'St', 'https://gnome.pages.gitlab.gnome.org/gnome-shell/st/' ], ] 07070100000146000041ED0000000000000000000000026712993F00000000000000000000000000000000000000000000002300000000gnome-shell-47.1/docs/reference/st07070100000147000081A40000000000000000000000016712993F00000293000000000000000000000000000000000000002F00000000gnome-shell-47.1/docs/reference/st/meson.buildst_toml = configure_file( input: 'st.toml.in', output: 'st.toml', configuration: doc_conf ) custom_target('st-doc', input: [st_toml, libst_gir[0]], output: 'st', command: [ gidocgen, 'generate', gi_docgen_common_args, '--add-include-path=@0@'.format(meson.current_build_dir() / '../../../src'), '--add-include-path=@0@'.format(meson.current_build_dir() / '../../../src/st'), '--add-include-path=@0@'.format(mutter_dep.get_variable('girdir')), '--config=@INPUT0@', '--output-dir=@OUTPUT@', '--content-dir=@0@'.format(meson.current_source_dir()), '@INPUT1@', ], install: true, install_dir: docs_dir, ) 07070100000148000081A40000000000000000000000016712993F00000415000000000000000000000000000000000000002E00000000gnome-shell-47.1/docs/reference/st/st.toml.in[library] namespace = "St" version = "@MUTTER_API_VERSION@" browse_url = "https://gitlab.gnome.org/GNOME/gnome-shell/" repository_url = "https://gitlab.gnome.org/GNOME/gnome-shell.git" website_url = "https://www.gnome.org" license = "LGPL-2.0-or-later" description = "Shell Toolkit" dependencies = ["GObject-2.0", "Gio-2.0", "Clutter-@MUTTER_API_VERSION@"] devhelp = true search_index = true [dependencies."GObject-2.0"] name = "GObject" description = "The base type system library" docs_url = "https://docs.gtk.org/gobject" [dependencies."Gio-2.0"] name = "Gio" description = "GObject Interfaces and Objects, Networking, IPC, and I/O" docs_url = "https://docs.gtk.org/gio" [dependencies."Clutter-@MUTTER_API_VERSION@"] name = "Clutter" description = "An OpenGL based 'interactive canvas' library" docs_url = "https://mutter.gnome.org/clutter/" [theme] name = "basic" show_index_summary = true [source-location] base_url = "https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/HEAD/" [extra] urlmap_file = "urlmap.js" 07070100000149000081A40000000000000000000000016712993F000001A2000000000000000000000000000000000000002D00000000gnome-shell-47.1/docs/reference/st/urlmap.jsbaseURLs = [ [ 'GLib', 'https://docs.gtk.org/glib/' ], [ 'GObject', 'https://docs.gtk.org/gobject/' ], [ 'Gio', 'https://docs.gtk.org/gio/' ], [ 'Pango', 'https://docs.gtk.org/pango/' ], [ 'GdkPixbuf', 'https://docs.gtk.org/gdk-pixbuf/' ], [ 'Clutter', 'https://mutter.gnome.org/clutter/' ], [ 'Cogl', 'https://mutter.gnome.org/cogl/' ], [ 'Meta', 'https://mutter.gnome.org/meta/' ], ] 0707010000014A000081A40000000000000000000000016712993F00000BBE000000000000000000000000000000000000002200000000gnome-shell-47.1/gnome-shell.doap GNOME Shell Next generation GNOME desktop shell GNOME Shell provides core user interface functions for the GNOME 3 desktop, like switching to windows and launching applications. GNOME Shell takes advantage of the capabilities of modern graphics hardware and introduces innovative user interface concepts to provide a visually attractive and easy to use experience. Tarball releases are provided largely for distributions to build packages. If you are interested in building GNOME Shell from source, we would recommend building from version control as described at: https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/docs/building-and-running.md Not only will that give you the very latest version of this rapidly changing project, it will be much easier than get GNOME Shell and its dependencies to build from tarballs. JavaScript C William Jon McCann mccann Owen Taylor otaylor Colin Walters walters Marina Zhurakhinskaya marinaz Florian Müllner fmuellner Georges Basile Stavracas Neto gbsneto 0707010000014B000041ED0000000000000000000000026712993F00000000000000000000000000000000000000000000001400000000gnome-shell-47.1/js0707010000014C000041ED0000000000000000000000026712993F00000000000000000000000000000000000000000000002100000000gnome-shell-47.1/js/dbusServices0707010000014D000081A40000000000000000000000016712993F0000011D000000000000000000000000000000000000003100000000gnome-shell-47.1/js/dbusServices/dbus-service.inimport {programInvocationName, programArgs} from 'system'; imports.package.init({ name: '@PACKAGE_NAME@', prefix: '@prefix@', libdir: '@libdir@', }); const {main} = await import(`${imports.package.moduledir}/main.js`); await main([programInvocationName, ...programArgs]); 0707010000014E000081A40000000000000000000000016712993F00000044000000000000000000000000000000000000003900000000gnome-shell-47.1/js/dbusServices/dbus-service.service.in[D-BUS Service] Name=@service@ Exec=@gjs@ -m @pkgdatadir@/@service@ 0707010000014F000081A40000000000000000000000016712993F0000164F000000000000000000000000000000000000003000000000gnome-shell-47.1/js/dbusServices/dbusService.jsimport Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import {programArgs} from 'system'; import './misc/dbusErrors.js'; const Signals = imports.signals; const IDLE_SHUTDOWN_TIME = 2; // s export class ServiceImplementation { constructor(info, objectPath) { this._objectPath = objectPath; this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(info, this); this._injectTracking('return_dbus_error'); this._injectTracking('return_error_literal'); this._injectTracking('return_gerror'); this._injectTracking('return_value'); this._injectTracking('return_value_with_unix_fd_list'); this._senders = new Map(); this._holdCount = 0; this._shellName = this._getUniqueShellName(); this._hasSignals = this._dbusImpl.get_info().signals.length > 0; this._shutdownTimeoutId = 0; // subclasses may override this to disable automatic shutdown this._autoShutdown = true; this._queueShutdownCheck(); } // subclasses may override this to own additional names register() { } export() { this._dbusImpl.export(Gio.DBus.session, this._objectPath); } unexport() { this._dbusImpl.unexport(); } hold() { this._holdCount++; } release() { if (this._holdCount === 0) { logError(new Error('Unmatched call to release()')); return; } this._holdCount--; if (this._holdCount === 0) this._queueShutdownCheck(); } /** * Complete @invocation with an appropriate error if @error is set; * useful for implementing early returns from method implementations. * * @param {Gio.DBusMethodInvocation} * @param {Error} * * @returns {bool} - true if @invocation was completed */ _handleError(invocation, error) { if (error === null) return false; if (error instanceof GLib.Error) { Gio.DBusError.strip_remote_error(error); invocation.return_gerror(error); } else { let name = error.name; if (!name.includes('.')) // likely a normal JS error name = `org.gnome.gjs.JSError.${name}`; invocation.return_dbus_error(name, error.message); } return true; } _maybeShutdown() { if (!this._autoShutdown) return; if (GLib.getenv('SHELL_DBUS_PERSIST')) return; if (this._holdCount > 0) return; this.emit('shutdown'); } _queueShutdownCheck() { if (this._shutdownTimeoutId) GLib.source_remove(this._shutdownTimeoutId); this._shutdownTimeoutId = GLib.timeout_add_seconds( GLib.PRIORITY_DEFAULT, IDLE_SHUTDOWN_TIME, () => { this._shutdownTimeoutId = 0; this._maybeShutdown(); return GLib.SOURCE_REMOVE; }); } _trackSender(sender) { if (this._senders.has(sender)) return; if (sender === this._shellName) return; // don't track the shell this.hold(); this._senders.set(sender, this._dbusImpl.get_connection().watch_name( sender, Gio.BusNameWatcherFlags.NONE, null, () => this._untrackSender(sender))); } _untrackSender(sender) { const id = this._senders.get(sender); if (id) this._dbusImpl.get_connection().unwatch_name(id); if (this._senders.delete(sender)) this.release(); } _injectTracking(methodName) { const {prototype} = Gio.DBusMethodInvocation; const origMethod = prototype[methodName]; const that = this; prototype[methodName] = function (...args) { origMethod.apply(this, args); if (that._hasSignals) that._trackSender(this.get_sender()); that._queueShutdownCheck(); }; } _getUniqueShellName() { try { const res = Gio.DBus.session.call_sync( 'org.freedesktop.DBus', '/org/freedesktop/DBus', 'org.freedesktop.DBus', 'GetNameOwner', new GLib.Variant('(s)', ['org.gnome.Shell']), null, Gio.DBusCallFlags.NONE, -1, null); const [name] = res.deepUnpack(); return name; } catch (e) { console.warn(`Failed to resolve shell name: ${e.message}`); return ''; } } } Signals.addSignalMethods(ServiceImplementation.prototype); export class DBusService { constructor(name, service) { this._name = name; this._service = service; this._loop = new GLib.MainLoop(null, false); this._service.connect('shutdown', () => this._loop.quit()); } async runAsync() { // Bail out when not running under gnome-shell Gio.DBus.watch_name(Gio.BusType.SESSION, 'org.gnome.Shell', Gio.BusNameWatcherFlags.NONE, null, () => this._loop.quit()); this._service.register(); let flags = Gio.BusNameOwnerFlags.ALLOW_REPLACEMENT; if (programArgs.includes('--replace')) flags |= Gio.BusNameOwnerFlags.REPLACE; Gio.DBus.own_name(Gio.BusType.SESSION, this._name, flags, () => this._service.export(), null, () => this._loop.quit()); await this._loop.runAsync(); } } 07070100000150000041ED0000000000000000000000026712993F00000000000000000000000000000000000000000000002C00000000gnome-shell-47.1/js/dbusServices/extensions07070100000151000041ED0000000000000000000000026712993F00000000000000000000000000000000000000000000003000000000gnome-shell-47.1/js/dbusServices/extensions/css07070100000152000081A40000000000000000000000016712993F000000F2000000000000000000000000000000000000004000000000gnome-shell-47.1/js/dbusServices/extensions/css/application.css.error-page preferencespage { margin: 30px; } .expander { padding: 12px; } .expander.expanded { border: 0 solid @borders; border-bottom-width: 1px; } .expander-toolbar { border: 0 solid @borders; border-top-width: 1px; padding: 3px; } 07070100000153000081A40000000000000000000000016712993F00001382000000000000000000000000000000000000004400000000gnome-shell-47.1/js/dbusServices/extensions/extensionPrefsDialog.jsimport Adw from 'gi://Adw?version=1'; import Gdk from 'gi://Gdk?version=4.0'; import Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import Gtk from 'gi://Gtk?version=4.0'; import {formatError} from './misc/errorUtils.js'; export const ExtensionPrefsDialog = GObject.registerClass({ GTypeName: 'ExtensionPrefsDialog', Signals: { 'loaded': {}, }, }, class ExtensionPrefsDialog extends Adw.PreferencesWindow { _init(extension) { super._init({ title: extension.metadata.name, search_enabled: false, }); this._extension = extension; this._loadPrefs().catch(e => { this._showErrorPage(e); logError(e, 'Failed to open preferences'); }).finally(() => this.emit('loaded')); } async _loadPrefs() { const {dir, path, metadata} = this._extension; const prefsJs = dir.get_child('prefs.js'); const prefsModule = await import(prefsJs.get_uri()); const prefsObj = new prefsModule.default({...metadata, dir, path}); this._extension.stateObj = prefsObj; await prefsObj.fillPreferencesWindow(this); if (!this.visible_page) throw new Error('Extension did not provide any UI'); } set titlebar(w) { this.set_titlebar(w); } // eslint-disable-next-line camelcase set_titlebar() { // intercept fatal libadwaita error, show error page instead GLib.idle_add(GLib.PRIORITY_DEFAULT, () => { this._showErrorPage( new Error('set_titlebar() is not supported for Adw.Window')); return GLib.SOURCE_REMOVE; }); } destroy() { this._showErrorPage( new Error('destroy() breaks tracking open dialogs, use close() if you must')); } _showErrorPage(e) { while (this.visible_page) this.remove(this.visible_page); this.add(new ExtensionPrefsErrorPage(this._extension, e)); } }); const ExtensionPrefsErrorPage = GObject.registerClass({ GTypeName: 'ExtensionPrefsErrorPage', Template: 'resource:///org/gnome/Shell/Extensions/ui/extension-error-page.ui', InternalChildren: [ 'expander', 'expanderArrow', 'revealer', 'errorView', ], }, class ExtensionPrefsErrorPage extends Adw.PreferencesPage { static _classInit(klass) { super._classInit(klass); klass.install_action('page.copy-error', null, self => { const clipboard = self.get_display().get_clipboard(); clipboard.set(self._errorMarkdown); }); klass.install_action('page.show-url', null, self => Gtk.show_uri(self.get_root(), self._url, Gdk.CURRENT_TIME)); return klass; } _init(extension, error) { super._init(); this._addCustomStylesheet(); this._uuid = extension.uuid; this._url = extension.metadata.url || ''; this.action_set_enabled('page.show-url', this._url !== ''); this._gesture = new Gtk.GestureClick({ button: 0, exclusive: true, }); this._expander.add_controller(this._gesture); this._gesture.connect('released', (gesture, nPress) => { if (nPress === 1) this._revealer.reveal_child = !this._revealer.reveal_child; }); this._revealer.connect('notify::reveal-child', () => { this._expanderArrow.icon_name = this._revealer.reveal_child ? 'pan-down-symbolic' : 'pan-end-symbolic'; this._syncExpandedStyle(); }); this._revealer.connect('notify::child-revealed', () => this._syncExpandedStyle()); const formattedError = formatError(error); this._errorView.buffer.text = formattedError; // markdown for pasting in gitlab issues let lines = [ `The settings of extension ${this._uuid} had an error:`, '```', formattedError.replace(/\n$/, ''), // remove trailing newline '```', '', ]; this._errorMarkdown = lines.join('\n'); } _syncExpandedStyle() { if (this._revealer.reveal_child) this._expander.add_css_class('expanded'); else if (!this._revealer.child_revealed) this._expander.remove_css_class('expanded'); } _addCustomStylesheet() { let provider = new Gtk.CssProvider(); let uri = 'resource:///org/gnome/Shell/Extensions/css/application.css'; try { provider.load_from_file(Gio.File.new_for_uri(uri)); } catch (e) { logError(e, 'Failed to add application style'); } Gtk.StyleContext.add_provider_for_display(Gdk.Display.get_default(), provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION); } }); 07070100000154000081A40000000000000000000000016712993F00001683000000000000000000000000000000000000004100000000gnome-shell-47.1/js/dbusServices/extensions/extensionsService.jsimport Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import Shew from 'gi://Shew'; import {ExtensionPrefsDialog} from './extensionPrefsDialog.js'; import {ServiceImplementation} from './dbusService.js'; import {deserializeExtension} from './misc/extensionUtils.js'; import {loadInterfaceXML} from './misc/dbusUtils.js'; const ExtensionsIface = loadInterfaceXML('org.gnome.Shell.Extensions'); const ExtensionsProxy = Gio.DBusProxy.makeProxyWrapper(ExtensionsIface); class ExtensionManager { #extensions = new Map(); createExtensionObject(serialized) { const extension = deserializeExtension(serialized); this.#extensions.set(extension.uuid, extension); return extension; } lookup(uuid) { return this.#extensions.get(uuid); } } export const extensionManager = new ExtensionManager(); export const ExtensionsService = class extends ServiceImplementation { constructor() { super(ExtensionsIface, '/org/gnome/Shell/Extensions'); this._proxy = new ExtensionsProxy(Gio.DBus.session, 'org.gnome.Shell', '/org/gnome/Shell'); this._proxy.connectSignal('ExtensionStateChanged', (proxy, sender, params) => { this._dbusImpl.emit_signal('ExtensionStateChanged', new GLib.Variant('(sa{sv})', params)); }); this._proxy.connect('g-properties-changed', () => { this._dbusImpl.emit_property_changed('UserExtensionsEnabled', new GLib.Variant('b', this._proxy.UserExtensionsEnabled)); }); } get ShellVersion() { return this._proxy.ShellVersion; } get UserExtensionsEnabled() { return this._proxy.UserExtensionsEnabled; } set UserExtensionsEnabled(enable) { this._proxy.UserExtensionsEnabled = enable; } async ListExtensionsAsync(params, invocation) { try { const res = await this._proxy.ListExtensionsAsync(...params); invocation.return_value(new GLib.Variant('(a{sa{sv}})', res)); } catch (error) { this._handleError(invocation, error); } } async GetExtensionInfoAsync(params, invocation) { try { const res = await this._proxy.GetExtensionInfoAsync(...params); invocation.return_value(new GLib.Variant('(a{sv})', res)); } catch (error) { this._handleError(invocation, error); } } async GetExtensionErrorsAsync(params, invocation) { try { const res = await this._proxy.GetExtensionErrorsAsync(...params); invocation.return_value(new GLib.Variant('(as)', res)); } catch (error) { this._handleError(invocation, error); } } async InstallRemoteExtensionAsync(params, invocation) { try { const res = await this._proxy.InstallRemoteExtensionAsync(...params); invocation.return_value(new GLib.Variant('(s)', res)); } catch (error) { this._handleError(invocation, error); } } async UninstallExtensionAsync(params, invocation) { try { const res = await this._proxy.UninstallExtensionAsync(...params); invocation.return_value(new GLib.Variant('(b)', res)); } catch (error) { this._handleError(invocation, error); } } async EnableExtensionAsync(params, invocation) { try { const res = await this._proxy.EnableExtensionAsync(...params); invocation.return_value(new GLib.Variant('(b)', res)); } catch (error) { this._handleError(invocation, error); } } async DisableExtensionAsync(params, invocation) { try { const res = await this._proxy.DisableExtensionAsync(...params); invocation.return_value(new GLib.Variant('(b)', res)); } catch (error) { this._handleError(invocation, error); } } LaunchExtensionPrefsAsync([uuid], invocation) { this.OpenExtensionPrefsAsync([uuid, '', {}], invocation); } async OpenExtensionPrefsAsync(params, invocation) { const [uuid, parentWindow, options] = params; try { if (this._prefsDialog) throw new Error('Already showing a prefs dialog'); const [serialized] = await this._proxy.GetExtensionInfoAsync(uuid); const extension = extensionManager.createExtensionObject(serialized); this._prefsDialog = new ExtensionPrefsDialog(extension); this._prefsDialog.connect('loaded', () => this._prefsDialog.show()); this._prefsDialog.connect('realize', () => { let externalWindow = null; if (parentWindow) externalWindow = Shew.ExternalWindow.new_from_handle(parentWindow); if (externalWindow) externalWindow.set_parent_of(this._prefsDialog.get_surface()); }); if (options.modal) this._prefsDialog.modal = options.modal.get_boolean(); this._prefsDialog.connect('close-request', () => { delete this._prefsDialog; this.release(); return false; }); this.hold(); invocation.return_value(null); } catch (error) { this._handleError(invocation, error); } } async CheckForUpdatesAsync(params, invocation) { try { await this._proxy.CheckForUpdatesAsync(...params); invocation.return_value(null); } catch (error) { this._handleError(invocation, error); } } }; 07070100000155000081A40000000000000000000000016712993F000001E7000000000000000000000000000000000000003400000000gnome-shell-47.1/js/dbusServices/extensions/main.jsimport Adw from 'gi://Adw?version=1'; import GObject from 'gi://GObject'; const pkg = imports.package; import {DBusService} from './dbusService.js'; import {ExtensionsService} from './extensionsService.js'; /** @returns {void} */ export async function main() { Adw.init(); pkg.initFormat(); GObject.gtypeNameBasedOnJSPath = true; const service = new DBusService( 'org.gnome.Shell.Extensions', new ExtensionsService()); await service.runAsync(); } 07070100000156000041ED0000000000000000000000026712993F00000000000000000000000000000000000000000000002F00000000gnome-shell-47.1/js/dbusServices/extensions/ui07070100000157000081A40000000000000000000000016712993F000015A2000000000000000000000000000000000000004700000000gnome-shell-47.1/js/dbusServices/extensions/ui/extension-error-page.ui 07070100000158000081A40000000000000000000000016712993F00000490000000000000000000000000000000000000002D00000000gnome-shell-47.1/js/dbusServices/meson.buildlauncherconf = configuration_data() launcherconf.set('PACKAGE_NAME', meson.project_name()) launcherconf.set('prefix', prefix) launcherconf.set('libdir', libdir) dbus_services = { 'org.gnome.Shell.Extensions': 'extensions', 'org.gnome.Shell.Notifications': 'notifications', 'org.gnome.Shell.Screencast': 'screencast', 'org.gnome.ScreenSaver': 'screensaver', } config_dir = '@0@/..'.format(meson.current_build_dir()) foreach service, dir : dbus_services configure_file( input: 'dbus-service.in', output: service, configuration: launcherconf, install_dir: pkgdatadir, ) serviceconf = configuration_data() serviceconf.set('service', service) serviceconf.set('gjs', gjs.full_path()) serviceconf.set('pkgdatadir', pkgdatadir) configure_file( input: 'dbus-service.service.in', output: service + '.service', configuration: serviceconf, install_dir: servicedir ) gnome.compile_resources( service + '.src', service + '.src.gresource.xml', dependencies: [config_js], source_dir: ['.', '..', dir, config_dir], gresource_bundle: true, install: true, install_dir: pkgdatadir ) endforeach 07070100000159000041ED0000000000000000000000026712993F00000000000000000000000000000000000000000000002F00000000gnome-shell-47.1/js/dbusServices/notifications0707010000015A000081A40000000000000000000000016712993F00000132000000000000000000000000000000000000003700000000gnome-shell-47.1/js/dbusServices/notifications/main.jsimport {DBusService} from './dbusService.js'; import {NotificationDaemon} from './notificationDaemon.js'; /** @returns {void} */ export async function main() { const service = new DBusService( 'org.gnome.Shell.Notifications', new NotificationDaemon()); await service.runAsync(); } 0707010000015B000081A40000000000000000000000016712993F000014CE000000000000000000000000000000000000004500000000gnome-shell-47.1/js/dbusServices/notifications/notificationDaemon.jsimport Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import {ServiceImplementation} from './dbusService.js'; import {loadInterfaceXML} from './misc/dbusUtils.js'; const NotificationsIface = loadInterfaceXML('org.freedesktop.Notifications'); const NotificationsProxy = Gio.DBusProxy.makeProxyWrapper(NotificationsIface); Gio._promisify(Gio.DBusConnection.prototype, 'call'); export const NotificationDaemon = class extends ServiceImplementation { constructor() { super(NotificationsIface, '/org/freedesktop/Notifications'); this._autoShutdown = false; this._activeNotifications = new Map(); this._proxy = new NotificationsProxy(Gio.DBus.session, 'org.gnome.Shell', '/org/freedesktop/Notifications', (proxy, error) => { if (error) log(error.message); }); this._proxy.connectSignal('ActivationToken', (proxy, sender, params) => { const [id] = params; this._emitSignal( this._activeNotifications.get(id), 'ActivationToken', new GLib.Variant('(us)', params)); }); this._proxy.connectSignal('ActionInvoked', (proxy, sender, params) => { const [id] = params; this._emitSignal( this._activeNotifications.get(id), 'ActionInvoked', new GLib.Variant('(us)', params)); }); this._proxy.connectSignal('NotificationClosed', (proxy, sender, params) => { const [id] = params; this._emitSignal( this._activeNotifications.get(id), 'NotificationClosed', new GLib.Variant('(uu)', params)); this._activeNotifications.delete(id); }); } _emitSignal(sender, signalName, params) { if (!sender) return; this._dbusImpl.get_connection()?.emit_signal( sender, this._dbusImpl.get_object_path(), 'org.freedesktop.Notifications', signalName, params); } _untrackSender(sender) { super._untrackSender(sender); this._activeNotifications.forEach((value, key) => { if (value === sender) this._activeNotifications.delete(key); }); } _checkNotificationId(invocation, id) { if (id === 0) return true; if (!this._activeNotifications.has(id)) return true; if (this._activeNotifications.get(id) === invocation.get_sender()) return true; const error = new GLib.Error(Gio.DBusError, Gio.DBusError.INVALID_ARGS, 'Invalid notification ID'); this._handleError(invocation, error); return false; } register() { Gio.DBus.session.own_name( 'org.freedesktop.Notifications', Gio.BusNameOwnerFlags.REPLACE, null, null); } async NotifyAsync(params, invocation) { const sender = invocation.get_sender(); const pid = await this._getSenderPid(sender); const replaceId = params[1]; const hints = params[6]; if (!this._checkNotificationId(invocation, replaceId)) return; params[6] = { ...hints, 'x-shell-sender-pid': new GLib.Variant('u', pid), 'x-shell-sender': new GLib.Variant('s', sender), }; try { const [id] = await this._proxy.NotifyAsync(...params); this._activeNotifications.set(id, sender); invocation.return_value(new GLib.Variant('(u)', [id])); } catch (error) { this._handleError(invocation, error); } } async CloseNotificationAsync(params, invocation) { const [id] = params; if (!this._checkNotificationId(invocation, id)) return; try { await this._proxy.CloseNotificationAsync(...params); invocation.return_value(null); } catch (error) { this._handleError(invocation, error); } } async GetCapabilitiesAsync(params, invocation) { try { const res = await this._proxy.GetCapabilitiesAsync(...params); invocation.return_value(new GLib.Variant('(as)', res)); } catch (error) { this._handleError(invocation, error); } } async GetServerInformationAsync(params, invocation) { try { const res = await this._proxy.GetServerInformationAsync(...params); invocation.return_value(new GLib.Variant('(ssss)', res)); } catch (error) { this._handleError(invocation, error); } } async _getSenderPid(sender) { const res = await Gio.DBus.session.call( 'org.freedesktop.DBus', '/', 'org.freedesktop.DBus', 'GetConnectionUnixProcessID', new GLib.Variant('(s)', [sender]), new GLib.VariantType('(u)'), Gio.DBusCallFlags.NONE, -1, null); const [pid] = res.deepUnpack(); return pid; } }; 0707010000015C000081A40000000000000000000000016712993F0000014A000000000000000000000000000000000000004900000000gnome-shell-47.1/js/dbusServices/org.gnome.ScreenSaver.src.gresource.xml main.js screenSaverService.js dbusService.js misc/config.js misc/dbusErrors.js misc/dbusUtils.js 0707010000015D000081A40000000000000000000000016712993F000002CC000000000000000000000000000000000000004E00000000gnome-shell-47.1/js/dbusServices/org.gnome.Shell.Extensions.src.gresource.xml main.js extensionsService.js extensionPrefsDialog.js dbusService.js extensions/sharedInternals.js extensions/prefs.js misc/config.js misc/errorUtils.js misc/extensionUtils.js misc/dbusErrors.js misc/dbusUtils.js misc/params.js css/application.css ui/extension-error-page.ui 0707010000015E000081A40000000000000000000000016712993F00000152000000000000000000000000000000000000005100000000gnome-shell-47.1/js/dbusServices/org.gnome.Shell.Notifications.src.gresource.xml main.js notificationDaemon.js dbusService.js misc/config.js misc/dbusErrors.js misc/dbusUtils.js 0707010000015F000081A40000000000000000000000016712993F00000196000000000000000000000000000000000000004E00000000gnome-shell-47.1/js/dbusServices/org.gnome.Shell.Screencast.src.gresource.xml main.js screencastService.js dbusService.js misc/config.js misc/dbusUtils.js misc/dbusErrors.js misc/signals.js misc/signalTracker.js 07070100000160000041ED0000000000000000000000026712993F00000000000000000000000000000000000000000000002C00000000gnome-shell-47.1/js/dbusServices/screencast07070100000161000081A40000000000000000000000016712993F00000169000000000000000000000000000000000000003400000000gnome-shell-47.1/js/dbusServices/screencast/main.jsimport {DBusService} from './dbusService.js'; import {ScreencastService} from './screencastService.js'; /** @returns {void} */ export async function main() { if (!ScreencastService.canScreencast()) return; const service = new DBusService( 'org.gnome.Shell.Screencast', new ScreencastService()); await service.runAsync(); } 07070100000162000081A40000000000000000000000016712993F00006AC9000000000000000000000000000000000000004100000000gnome-shell-47.1/js/dbusServices/screencast/screencastService.jsimport Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import Gst from 'gi://Gst?version=1.0'; import Gtk from 'gi://Gtk?version=4.0'; import {ServiceImplementation} from './dbusService.js'; import {ScreencastErrors, ScreencastError} from './misc/dbusErrors.js'; import {loadInterfaceXML, loadSubInterfaceXML} from './misc/dbusUtils.js'; import * as Signals from './misc/signals.js'; const ScreencastIface = loadInterfaceXML('org.gnome.Shell.Screencast'); const IntrospectIface = loadInterfaceXML('org.gnome.Shell.Introspect'); const IntrospectProxy = Gio.DBusProxy.makeProxyWrapper(IntrospectIface); const ScreenCastIface = loadSubInterfaceXML( 'org.gnome.Mutter.ScreenCast', 'org.gnome.Mutter.ScreenCast'); const ScreenCastSessionIface = loadSubInterfaceXML( 'org.gnome.Mutter.ScreenCast.Session', 'org.gnome.Mutter.ScreenCast'); const ScreenCastStreamIface = loadSubInterfaceXML( 'org.gnome.Mutter.ScreenCast.Stream', 'org.gnome.Mutter.ScreenCast'); const ScreenCastProxy = Gio.DBusProxy.makeProxyWrapper(ScreenCastIface); const ScreenCastSessionProxy = Gio.DBusProxy.makeProxyWrapper(ScreenCastSessionIface); const ScreenCastStreamProxy = Gio.DBusProxy.makeProxyWrapper(ScreenCastStreamIface); const DEFAULT_FRAMERATE = 30; const DEFAULT_DRAW_CURSOR = true; const PIPELINE_BLOCKLIST_FILENAME = 'gnome-shell-screencast-pipeline-blocklist'; const PIPELINES = [ { id: 'hwenc-dmabuf-h264-vaapi-lp', fileExtension: 'mp4', pipelineString: 'capsfilter caps=video/x-raw(memory:DMABuf),format=DMA_DRM,max-framerate=%F/1 ! \ vapostproc ! \ vah264lpenc ! \ queue ! \ h264parse ! \ mp4mux fragment-duration=500 fragment-mode=first-moov-then-finalise', }, { id: 'hwenc-dmabuf-h264-vaapi', fileExtension: 'mp4', pipelineString: 'capsfilter caps=video/x-raw(memory:DMABuf),format=DMA_DRM,max-framerate=%F/1 ! \ vapostproc ! \ vah264enc ! \ queue ! \ h264parse ! \ mp4mux fragment-duration=500 fragment-mode=first-moov-then-finalise', }, { id: 'swenc-dmabuf-h264-openh264', fileExtension: 'mp4', pipelineString: 'capsfilter caps=video/x-raw(memory:DMABuf),max-framerate=%F/1 ! \ glupload ! glcolorconvert ! gldownload ! \ queue ! \ openh264enc deblocking=off background-detection=false complexity=low adaptive-quantization=false qp-max=26 qp-min=26 multi-thread=%T slice-mode=auto ! \ queue ! \ h264parse ! \ mp4mux fragment-duration=500 fragment-mode=first-moov-then-finalise', }, { id: 'swenc-memfd-h264-openh264', fileExtension: 'mp4', pipelineString: 'capsfilter caps=video/x-raw,max-framerate=%F/1 ! \ videoconvert chroma-mode=none dither=none matrix-mode=output-only n-threads=%T ! \ queue ! \ openh264enc deblocking=off background-detection=false complexity=low adaptive-quantization=false qp-max=26 qp-min=26 multi-thread=%T slice-mode=auto ! \ queue ! \ h264parse ! \ mp4mux fragment-duration=500 fragment-mode=first-moov-then-finalise', }, { id: 'swenc-dmabuf-vp8-vp8enc', fileExtension: 'webm', pipelineString: 'capsfilter caps=video/x-raw(memory:DMABuf),max-framerate=%F/1 ! \ glupload ! glcolorconvert ! gldownload ! \ queue ! \ vp8enc cpu-used=16 max-quantizer=17 deadline=1 keyframe-mode=disabled threads=%T static-threshold=1000 buffer-size=20000 ! \ queue ! \ webmmux', }, { id: 'swenc-memfd-vp8-vp8enc', fileExtension: 'webm', pipelineString: 'capsfilter caps=video/x-raw,max-framerate=%F/1 ! \ videoconvert chroma-mode=none dither=none matrix-mode=output-only n-threads=%T ! \ queue ! \ vp8enc cpu-used=16 max-quantizer=17 deadline=1 keyframe-mode=disabled threads=%T static-threshold=1000 buffer-size=20000 ! \ queue ! \ webmmux', }, ]; const PipelineState = { INIT: 'INIT', STARTING: 'STARTING', PLAYING: 'PLAYING', FLUSHING: 'FLUSHING', STOPPED: 'STOPPED', ERROR: 'ERROR', }; const SessionState = { INIT: 'INIT', ACTIVE: 'ACTIVE', STOPPED: 'STOPPED', }; class Recorder extends Signals.EventEmitter { constructor(sessionPath, x, y, width, height, filePathStem, options, invocation) { super(); this._dbusConnection = invocation.get_connection(); this._x = x; this._y = y; this._width = width; this._height = height; this._filePathStem = filePathStem; try { const dir = Gio.File.new_for_path(filePathStem).get_parent(); dir.make_directory_with_parents(null); } catch (e) { if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.EXISTS)) throw e; } this._pipelineString = null; this._framerate = DEFAULT_FRAMERATE; this._drawCursor = DEFAULT_DRAW_CURSOR; this._blocklistFromPreviousCrashes = []; const pipelineBlocklistPath = GLib.build_filenamev( [GLib.get_user_runtime_dir(), PIPELINE_BLOCKLIST_FILENAME]); this._pipelineBlocklistFile = Gio.File.new_for_path(pipelineBlocklistPath); try { const [success_, contents] = this._pipelineBlocklistFile.load_contents(null); const decoder = new TextDecoder(); this._blocklistFromPreviousCrashes = JSON.parse(decoder.decode(contents)); } catch (e) { if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_FOUND)) throw e; } this._pipelineState = PipelineState.INIT; this._pipeline = null; this._applyOptions(options); this._watchSender(invocation.get_sender()); this._sessionState = SessionState.INIT; this._initSession(sessionPath); } _applyOptions(options) { for (const option in options) options[option] = options[option].deepUnpack(); if (options['pipeline'] !== undefined) this._pipelineString = options['pipeline']; if (options['framerate'] !== undefined) this._framerate = options['framerate']; if ('draw-cursor' in options) this._drawCursor = options['draw-cursor']; } _addRecentItem() { const file = Gio.File.new_for_path(this._filePath); Gtk.RecentManager.get_default().add_item(file.get_uri()); } _watchSender(sender) { this._nameWatchId = this._dbusConnection.watch_name( sender, Gio.BusNameWatcherFlags.NONE, null, this._senderVanished.bind(this)); } _unwatchSender() { if (this._nameWatchId !== 0) { this._dbusConnection.unwatch_name(this._nameWatchId); this._nameWatchId = 0; } } _teardownPipeline() { if (!this._pipeline) return; if (this._pipeline.set_state(Gst.State.NULL) !== Gst.StateChangeReturn.SUCCESS) log('Failed to set pipeline state to NULL'); this._pipelineState = PipelineState.STOPPED; this._pipeline = null; } _stopSession() { if (this._sessionState === SessionState.ACTIVE) { this._sessionState = SessionState.STOPPED; this._sessionProxy.StopSync(); } } _bailOutOnError(message, errorDomain = ScreencastErrors, errorCode = ScreencastError.RECORDER_ERROR) { const error = new GLib.Error(errorDomain, errorCode, message); // If it's a PIPELINE_ERROR, we want to leave the failing pipeline on the // blocklist for the next time. Other errors are pipeline-independent, so // reset the blocklist to allow the pipeline to be tried again next time. if (!error.matches(ScreencastErrors, ScreencastError.PIPELINE_ERROR)) this._updateServiceCrashBlocklist([...this._blocklistFromPreviousCrashes]); this._teardownPipeline(); this._unwatchSender(); this._stopSession(); if (this._startRequest) { this._startRequest.reject(error); delete this._startRequest; } if (this._stopRequest) { this._stopRequest.reject(error); delete this._stopRequest; } this.emit('error', error); } _handleFatalPipelineError(message, errorDomain, errorCode) { this._pipelineState = PipelineState.ERROR; this._bailOutOnError(message, errorDomain, errorCode); } _senderVanished() { this._bailOutOnError('Sender has vanished'); } _onSessionClosed() { if (this._sessionState === SessionState.STOPPED) return; // We closed the session ourselves this._sessionState = SessionState.STOPPED; this._bailOutOnError('Session closed unexpectedly'); } _initSession(sessionPath) { this._sessionProxy = new ScreenCastSessionProxy(Gio.DBus.session, 'org.gnome.Mutter.ScreenCast', sessionPath); this._sessionProxy.connectSignal('Closed', this._onSessionClosed.bind(this)); } _updateServiceCrashBlocklist(blocklist) { try { if (blocklist.length === 0) { this._pipelineBlocklistFile.delete(null); } else { this._pipelineBlocklistFile.replace_contents( JSON.stringify(blocklist), null, false, Gio.FileCreateFlags.NONE, null); } } catch (e) { console.log(`Failed to update pipeline-blocklist file: ${e.message}`); } } _tryNextPipeline() { if (this._filePath) { GLib.unlink(this._filePath); delete this._filePath; } const {done, value: pipelineConfig} = this._pipelineConfigs.next(); if (done) { this._handleFatalPipelineError('All pipelines failed to start', ScreencastErrors, ScreencastError.ALL_PIPELINES_FAILED); return; } if (this._blocklistFromPreviousCrashes.includes(pipelineConfig.id)) { console.info(`Skipping pipeline '${pipelineConfig.id}' due to pipeline blocklist`); this._tryNextPipeline(); return; } if (this._pipeline) { if (this._pipeline.set_state(Gst.State.NULL) !== Gst.StateChangeReturn.SUCCESS) log('Failed to set pipeline state to NULL'); this._pipeline = null; } try { this._pipeline = this._createPipeline(this._nodeId, pipelineConfig, this._framerate); // Add the current pipeline to the blocklist, so it is skipped next // time in case we crash; we'll remove it again on success or on // non-pipeline-related failures. this._updateServiceCrashBlocklist( [...this._blocklistFromPreviousCrashes, pipelineConfig.id]); } catch (error) { this._tryNextPipeline(); return; } const bus = this._pipeline.get_bus(); bus.add_watch(bus, this._onBusMessage.bind(this)); const retval = this._pipeline.set_state(Gst.State.PLAYING); if (retval === Gst.StateChangeReturn.SUCCESS || retval === Gst.StateChangeReturn.ASYNC) { // We'll wait for the state change message to PLAYING on the bus } else { this._tryNextPipeline(); } } *_getPipelineConfigs() { if (this._pipelineString) { yield { pipelineString: `capsfilter caps=video/x-raw,max-framerate=%F/1 ! ${this._pipelineString}`, }; return; } const fallbackSupported = Gst.Registry.get().check_feature_version('pipewiresrc', 0, 3, 67); if (fallbackSupported) yield* PIPELINES; else yield PIPELINES.at(-1); } startRecording() { return new Promise((resolve, reject) => { this._startRequest = {resolve, reject}; const [streamPath] = this._sessionProxy.RecordAreaSync( this._x, this._y, this._width, this._height, { 'is-recording': GLib.Variant.new('b', true), 'cursor-mode': GLib.Variant.new('u', this._drawCursor ? 1 : 0), }); this._streamProxy = new ScreenCastStreamProxy(Gio.DBus.session, 'org.gnome.Mutter.ScreenCast', streamPath); this._streamProxy.connectSignal('PipeWireStreamAdded', (_proxy, _sender, params) => { const [nodeId] = params; this._nodeId = nodeId; this._pipelineState = PipelineState.STARTING; this._pipelineConfigs = this._getPipelineConfigs(); this._tryNextPipeline(); }); this._sessionProxy.StartSync(); this._sessionState = SessionState.ACTIVE; }); } stopRecording() { if (this._startRequest) return Promise.reject(new Error('Unable to stop recorder while still starting')); return new Promise((resolve, reject) => { this._stopRequest = {resolve, reject}; this._pipelineState = PipelineState.FLUSHING; this._pipeline.send_event(Gst.Event.new_eos()); }); } _onBusMessage(bus, message, _) { switch (message.type) { case Gst.MessageType.STATE_CHANGED: { const [, newState] = message.parse_state_changed(); if (this._pipelineState === PipelineState.STARTING && message.src === this._pipeline && newState === Gst.State.PLAYING) { this._pipelineState = PipelineState.PLAYING; this._startRequest.resolve(this._filePath); delete this._startRequest; } break; } case Gst.MessageType.EOS: switch (this._pipelineState) { case PipelineState.INIT: case PipelineState.STOPPED: case PipelineState.ERROR: // In these cases there should be no pipeline, so should never happen break; case PipelineState.STARTING: // This is something we can handle, try to switch to the next pipeline this._tryNextPipeline(); break; case PipelineState.PLAYING: this._addRecentItem(); this._handleFatalPipelineError('Unexpected EOS message', ScreencastErrors, ScreencastError.PIPELINE_ERROR); break; case PipelineState.FLUSHING: // The pipeline ran successfully and we didn't crash; we can remove it // from the blocklist again now. this._updateServiceCrashBlocklist([...this._blocklistFromPreviousCrashes]); this._addRecentItem(); this._teardownPipeline(); this._unwatchSender(); this._stopSession(); this._stopRequest.resolve(); delete this._stopRequest; break; default: break; } break; case Gst.MessageType.ERROR: switch (this._pipelineState) { case PipelineState.INIT: case PipelineState.STOPPED: case PipelineState.ERROR: // In these cases there should be no pipeline, so should never happen break; case PipelineState.STARTING: // This is something we can handle, try to switch to the next pipeline this._tryNextPipeline(); break; case PipelineState.PLAYING: case PipelineState.FLUSHING: { const [error] = message.parse_error(); if (error.matches(Gst.ResourceError, Gst.ResourceError.NO_SPACE_LEFT)) { this._handleFatalPipelineError('Out of disk space', ScreencastErrors, ScreencastError.OUT_OF_DISK_SPACE); } else { this._handleFatalPipelineError( `GStreamer error while in state ${this._pipelineState}: ${error.message}`, ScreencastErrors, ScreencastError.PIPELINE_ERROR); } break; } default: break; } break; default: break; } return true; } _substituteVariables(pipelineDescr, framerate) { const numProcessors = GLib.get_num_processors(); const numThreads = Math.min(Math.max(1, numProcessors), 64); return pipelineDescr.replaceAll('%T', numThreads).replaceAll('%F', framerate); } _createPipeline(nodeId, pipelineConfig, framerate) { const {fileExtension, pipelineString} = pipelineConfig; const finalPipelineString = this._substituteVariables(pipelineString, framerate); this._filePath = `${this._filePathStem}.${fileExtension}`; const fullPipeline = ` pipewiresrc path=${nodeId} do-timestamp=true keepalive-time=1000 resend-last=true ! ${finalPipelineString} ! filesink location="${this._filePath}"`; return Gst.parse_launch_full(fullPipeline, null, Gst.ParseFlags.FATAL_ERRORS); } } export const ScreencastService = class extends ServiceImplementation { static canScreencast() { if (!Gst.init_check(null)) return false; let elements = [ 'pipewiresrc', 'filesink', ]; if (elements.some(e => Gst.ElementFactory.find(e) === null)) return false; // The fallback pipeline must be available, the other ones are not // guaranteed to work because they depend on hw encoders. const fallbackPipeline = PIPELINES.at(-1); elements = fallbackPipeline.pipelineString.split('!').map( e => e.trim().split(' ').at(0)); if (elements.every(e => Gst.ElementFactory.find(e) !== null)) return true; return false; } constructor() { super(ScreencastIface, '/org/gnome/Shell/Screencast'); this.hold(); // gstreamer initializing can take a bit this._canScreencast = ScreencastService.canScreencast(); Gst.init(null); Gtk.init(); this.release(); this._recorders = new Map(); this._senders = new Map(); this._lockdownSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.lockdown', }); this._proxy = new ScreenCastProxy(Gio.DBus.session, 'org.gnome.Mutter.ScreenCast', '/org/gnome/Mutter/ScreenCast'); this._introspectProxy = new IntrospectProxy(Gio.DBus.session, 'org.gnome.Shell.Introspect', '/org/gnome/Shell/Introspect'); } get ScreencastSupported() { return this._canScreencast; } _removeRecorder(sender) { if (!this._recorders.delete(sender)) return; if (this._recorders.size === 0) this.release(); } _addRecorder(sender, recorder) { this._recorders.set(sender, recorder); if (this._recorders.size === 1) this.hold(); } _getAbsolutePath(filename) { if (GLib.path_is_absolute(filename)) return filename; const videoDir = GLib.get_user_special_dir(GLib.UserDirectory.DIRECTORY_VIDEOS) || GLib.get_home_dir(); return GLib.build_filenamev([videoDir, filename]); } _generateFilePath(template) { let filename = ''; let escape = false; // FIXME: temporarily detect and strip .webm prefix to avoid breaking // external consumers of our API, remove this again if (template.endsWith('.webm')) { console.log("'file_template' for screencast includes '.webm' file-extension. Passing the file-extension as part of the filename has been deprecated, pass the 'file_template' without a file-extension instead."); template = template.substring(0, template.length - '.webm'.length); } [...template].forEach(c => { if (escape) { switch (c) { case '%': filename += '%'; break; case 'd': { const datetime = GLib.DateTime.new_now_local(); const datestr = datetime.format('%Y-%m-%d'); filename += datestr; break; } case 't': { const datetime = GLib.DateTime.new_now_local(); const datestr = datetime.format('%H-%M-%S'); filename += datestr; break; } default: log(`Warning: Unknown escape ${c}`); } escape = false; } else if (c === '%') { escape = true; } else { filename += c; } }); if (escape) filename += '%'; return this._getAbsolutePath(filename); } async ScreencastAsync(params, invocation) { if (this._lockdownSettings.get_boolean('disable-save-to-disk')) { invocation.return_error_literal(ScreencastErrors, ScreencastError.SAVE_TO_DISK_DISABLED, 'Saving to disk is disabled'); return; } const sender = invocation.get_sender(); if (this._recorders.get(sender)) { invocation.return_error_literal(ScreencastErrors, ScreencastError.ALREADY_RECORDING, 'Service is already recording'); return; } const [sessionPath] = this._proxy.CreateSessionSync({}); const [fileTemplate, options] = params; const [screenWidth, screenHeight] = this._introspectProxy.ScreenSize; const filePathStem = this._generateFilePath(fileTemplate); let recorder; try { recorder = new Recorder( sessionPath, 0, 0, screenWidth, screenHeight, filePathStem, options, invocation); } catch (error) { log(`Failed to create recorder: ${error.message}`); invocation.return_error_literal(ScreencastErrors, ScreencastError.RECORDER_ERROR, error.message); return; } this._addRecorder(sender, recorder); try { const pathWithExtension = await recorder.startRecording(); invocation.return_value(GLib.Variant.new('(bs)', [true, pathWithExtension])); } catch (error) { log(`Failed to start recorder: ${error.message}`); this._removeRecorder(sender); if (error instanceof GLib.Error) { invocation.return_gerror(error); } else { invocation.return_error_literal(ScreencastErrors, ScreencastError.RECORDER_ERROR, error.message); } return; } recorder.connect('error', (r, error) => { log(`Fatal error while recording: ${error.message}`); this._removeRecorder(sender); this._dbusImpl.emit_signal('Error', new GLib.Variant('(ss)', [ Gio.DBusError.encode_gerror(error), error.message, ])); }); } async ScreencastAreaAsync(params, invocation) { if (this._lockdownSettings.get_boolean('disable-save-to-disk')) { invocation.return_error_literal(ScreencastErrors, ScreencastError.SAVE_TO_DISK_DISABLED, 'Saving to disk is disabled'); return; } const sender = invocation.get_sender(); if (this._recorders.get(sender)) { invocation.return_error_literal(ScreencastErrors, ScreencastError.ALREADY_RECORDING, 'Service is already recording'); return; } const [sessionPath] = this._proxy.CreateSessionSync({}); const [x, y, width, height, fileTemplate, options] = params; const filePathStem = this._generateFilePath(fileTemplate); let recorder; try { recorder = new Recorder( sessionPath, x, y, width, height, filePathStem, options, invocation); } catch (error) { log(`Failed to create recorder: ${error.message}`); invocation.return_error_literal(ScreencastErrors, ScreencastError.RECORDER_ERROR, error.message); return; } this._addRecorder(sender, recorder); try { const pathWithExtension = await recorder.startRecording(); invocation.return_value(GLib.Variant.new('(bs)', [true, pathWithExtension])); } catch (error) { log(`Failed to start recorder: ${error.message}`); this._removeRecorder(sender); if (error instanceof GLib.Error) { invocation.return_gerror(error); } else { invocation.return_error_literal(ScreencastErrors, ScreencastError.RECORDER_ERROR, error.message); } return; } recorder.connect('error', (r, error) => { log(`Fatal error while recording: ${error.message}`); this._removeRecorder(sender); this._dbusImpl.emit_signal('Error', new GLib.Variant('(ss)', [ Gio.DBusError.encode_gerror(error), error.message, ])); }); } async StopScreencastAsync(params, invocation) { const sender = invocation.get_sender(); const recorder = this._recorders.get(sender); if (!recorder) { invocation.return_value(GLib.Variant.new('(b)', [false])); return; } try { await recorder.stopRecording(); } catch (error) { log(`${sender}: Error while stopping recorder: ${error.message}`); } finally { this._removeRecorder(sender); invocation.return_value(GLib.Variant.new('(b)', [true])); } } }; 07070100000163000041ED0000000000000000000000026712993F00000000000000000000000000000000000000000000002D00000000gnome-shell-47.1/js/dbusServices/screensaver07070100000164000081A40000000000000000000000016712993F0000012A000000000000000000000000000000000000003500000000gnome-shell-47.1/js/dbusServices/screensaver/main.jsimport {DBusService} from './dbusService.js'; import {ScreenSaverService} from './screenSaverService.js'; /** @returns {void} */ export async function main() { const service = new DBusService( 'org.gnome.ScreenSaver', new ScreenSaverService()); await service.runAsync(); } 07070100000165000081A40000000000000000000000016712993F00000897000000000000000000000000000000000000004300000000gnome-shell-47.1/js/dbusServices/screensaver/screenSaverService.jsimport Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import {ServiceImplementation} from './dbusService.js'; import {loadInterfaceXML} from './misc/dbusUtils.js'; const ScreenSaverIface = loadInterfaceXML('org.gnome.ScreenSaver'); const ScreenSaverProxy = Gio.DBusProxy.makeProxyWrapper(ScreenSaverIface); export const ScreenSaverService = class extends ServiceImplementation { constructor() { super(ScreenSaverIface, '/org/gnome/ScreenSaver'); this._autoShutdown = false; this._proxy = new ScreenSaverProxy(Gio.DBus.session, 'org.gnome.Shell.ScreenShield', '/org/gnome/ScreenSaver', (proxy, error) => { if (error) log(error.message); }); this._proxy.connectSignal('ActiveChanged', (proxy, sender, params) => { this._dbusImpl.emit_signal('ActiveChanged', new GLib.Variant('(b)', params)); }); this._proxy.connectSignal('WakeUpScreen', () => this._dbusImpl.emit_signal('WakeUpScreen', null)); } async LockAsync(params, invocation) { try { await this._proxy.LockAsync(...params); invocation.return_value(null); } catch (error) { this._handleError(invocation, error); } } async GetActiveAsync(params, invocation) { try { const res = await this._proxy.GetActiveAsync(...params); invocation.return_value(new GLib.Variant('(b)', res)); } catch (error) { this._handleError(invocation, error); } } async SetActiveAsync(params, invocation) { try { await this._proxy.SetActiveAsync(...params); invocation.return_value(null); } catch (error) { this._handleError(invocation, error); } } async GetActiveTimeAsync(params, invocation) { try { const res = await this._proxy.GetActiveTimeAsync(...params); invocation.return_value(new GLib.Variant('(u)', res)); } catch (error) { this._handleError(invocation, error); } } }; 07070100000166000041ED0000000000000000000000026712993F00000000000000000000000000000000000000000000001F00000000gnome-shell-47.1/js/extensions07070100000167000081A40000000000000000000000016712993F00000D64000000000000000000000000000000000000002C00000000gnome-shell-47.1/js/extensions/extension.jsconst Gi = imports._gi; import {ExtensionBase, GettextWrapper} from './sharedInternals.js'; import {extensionManager} from '../ui/main.js'; export class Extension extends ExtensionBase { static lookupByUUID(uuid) { return extensionManager.lookup(uuid)?.stateObj ?? null; } static defineTranslationFunctions(url) { const wrapper = new GettextWrapper(this, url); return wrapper.defineTranslationFunctions(); } enable() { } disable() { } /** * Open the extension's preferences window */ openPreferences() { extensionManager.openExtensionPrefs(this.uuid, '', {}); } } export const { gettext, ngettext, pgettext, } = Extension.defineTranslationFunctions(); export class InjectionManager { #savedMethods = new Map(); /** * @callback CreateOverrideFunc * @param {Function?} originalMethod - the original method if it exists * @returns {Function} - a function to be used as override */ /** * Modify, replace or inject a method * * @param {object} prototype - the object (or prototype) that is modified * @param {string} methodName - the name of the overwritten method * @param {CreateOverrideFunc} createOverrideFunc - function to call to create the override */ overrideMethod(prototype, methodName, createOverrideFunc) { const originalMethod = this._saveMethod(prototype, methodName); this._installMethod(prototype, methodName, createOverrideFunc(originalMethod)); } /** * Restore the original method * * @param {object} prototype - the object (or prototype) that is modified * @param {string} methodName - the name of the method to restore */ restoreMethod(prototype, methodName) { const savedProtoMethods = this.#savedMethods.get(prototype); if (!savedProtoMethods) return; const originalMethod = savedProtoMethods.get(methodName); if (originalMethod === undefined) delete prototype[methodName]; else this._installMethod(prototype, methodName, originalMethod); savedProtoMethods.delete(methodName); if (savedProtoMethods.size === 0) this.#savedMethods.delete(prototype); } /** * Restore all original methods and clear overrides */ clear() { for (const [proto, map] of this.#savedMethods) { map.forEach( (_, methodName) => this.restoreMethod(proto, methodName)); } console.assert(this.#savedMethods.size === 0, `${this.#savedMethods.size} overrides left after clear()`); } _saveMethod(prototype, methodName) { let savedProtoMethods = this.#savedMethods.get(prototype); if (!savedProtoMethods) { savedProtoMethods = new Map(); this.#savedMethods.set(prototype, savedProtoMethods); } const originalMethod = prototype[methodName]; savedProtoMethods.set(methodName, originalMethod); return originalMethod; } _installMethod(prototype, methodName, method) { if (methodName.startsWith('vfunc_')) { const giPrototype = prototype[Gi.gobject_prototype_symbol]; giPrototype[Gi.hook_up_vfunc_symbol](methodName.slice(6), method); } else { prototype[methodName] = method; } } } 07070100000168000081A40000000000000000000000016712993F000006B6000000000000000000000000000000000000002800000000gnome-shell-47.1/js/extensions/prefs.jsimport Adw from 'gi://Adw'; import GObject from 'gi://GObject'; import {ExtensionBase, GettextWrapper} from './sharedInternals.js'; import {extensionManager} from '../extensionsService.js'; export class ExtensionPreferences extends ExtensionBase { static lookupByUUID(uuid) { return extensionManager.lookup(uuid)?.stateObj ?? null; } static defineTranslationFunctions(url) { const wrapper = new GettextWrapper(this, url); return wrapper.defineTranslationFunctions(); } /** * Get the single widget that implements * the extension's preferences. * * @returns {Gtk.Widget|Promise} */ getPreferencesWidget() { throw new GObject.NotImplementedError(); } /** * Fill the preferences window with preferences. * * The default implementation adds the widget * returned by getPreferencesWidget(). * * @param {Adw.PreferencesWindow} window - the preferences window * @returns {Promise} */ async fillPreferencesWindow(window) { const widget = await this.getPreferencesWidget(); const page = this._wrapWidget(widget); window.add(page); } _wrapWidget(widget) { if (widget instanceof Adw.PreferencesPage) return widget; const page = new Adw.PreferencesPage(); if (widget instanceof Adw.PreferencesGroup) { page.add(widget); return page; } const group = new Adw.PreferencesGroup(); group.add(widget); page.add(group); return page; } } export const { gettext, ngettext, pgettext, } = ExtensionPreferences.defineTranslationFunctions(); 07070100000169000081A40000000000000000000000016712993F00002106000000000000000000000000000000000000003200000000gnome-shell-47.1/js/extensions/sharedInternals.jsimport Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import {bindtextdomain} from 'gettext'; import * as Config from '../misc/config.js'; export class ExtensionBase { #gettextDomain; /** * Look up an extension by URL (usually 'import.meta.url') * * @param {string} url - a file:// URL */ static lookupByURL(url) { if (!url.startsWith('file://')) return null; // Keep the last '/' from 'file://' to force an absolute path let path = url.slice(6); // Walk up the directory tree, looking for an extension with // the same UUID as a directory name. do { path = GLib.path_get_dirname(path); const dirName = GLib.path_get_basename(path); const extension = this.lookupByUUID(dirName); if (extension !== null) return extension; } while (path !== '/'); return null; } /** * Look up an extension by UUID * * @param {string} _uuid */ static lookupByUUID(_uuid) { throw new GObject.NotImplementedError(); } /** * @param {object} metadata - metadata passed in when loading the extension */ constructor(metadata) { if (this.constructor === ExtensionBase) throw new Error('ExtensionBase cannot be used directly.'); if (!metadata) throw new Error(`${this.constructor.name} did not pass metadata to parent`); this.metadata = metadata; this.initTranslations(); } /** * @type {string} */ get uuid() { return this.metadata['uuid']; } /** * @type {Gio.File} */ get dir() { return this.metadata['dir']; } /** * @type {string} */ get path() { return this.metadata['path']; } /** * Get a GSettings object for schema, using schema files in * extensionsdir/schemas. If schema is omitted, it is taken * from metadata['settings-schema']. * * @param {string=} schema - the GSettings schema id * * @returns {Gio.Settings} */ getSettings(schema) { schema ||= this.metadata['settings-schema']; // Expect USER extensions to have a schemas/ subfolder, otherwise assume a // SYSTEM extension that has been installed in the same prefix as the shell const schemaDir = this.dir.get_child('schemas'); const defaultSource = Gio.SettingsSchemaSource.get_default(); let schemaSource; if (schemaDir.query_exists(null)) { schemaSource = Gio.SettingsSchemaSource.new_from_directory( schemaDir.get_path(), defaultSource, false); } else { schemaSource = defaultSource; } const schemaObj = schemaSource.lookup(schema, true); if (!schemaObj) throw new Error(`Schema ${schema} could not be found for extension ${this.uuid}. Please check your installation`); return new Gio.Settings({settings_schema: schemaObj}); } /** * Initialize Gettext to load translations from extensionsdir/locale. If * domain is not provided, it will be taken from metadata['gettext-domain'] * if provided, or use the UUID * * @param {string=} domain - the gettext domain to use */ initTranslations(domain) { domain ||= this.metadata['gettext-domain'] ?? this.uuid; // Expect USER extensions to have a locale/ subfolder, otherwise assume a // SYSTEM extension that has been installed in the same prefix as the shell const localeDir = this.dir.get_child('locale'); if (localeDir.query_exists(null)) bindtextdomain(domain, localeDir.get_path()); else bindtextdomain(domain, Config.LOCALEDIR); this.#gettextDomain = domain; } /** * Translate `str` using the extension's gettext domain * * @param {string} str - the string to translate * * @returns {string} the translated string */ gettext(str) { this.#checkGettextDomain('gettext'); return GLib.dgettext(this.#gettextDomain, str); } /** * Translate `str` and choose plural form using the extension's * gettext domain * * @param {string} str - the string to translate * @param {string} strPlural - the plural form of the string * @param {number} n - the quantity for which translation is needed * * @returns {string} the translated string */ ngettext(str, strPlural, n) { this.#checkGettextDomain('ngettext'); return GLib.dngettext(this.#gettextDomain, str, strPlural, n); } /** * Translate `str` in the context of `context` using the extension's * gettext domain * * @param {string} context - context to disambiguate `str` * @param {string} str - the string to translate * * @returns {string} the translated string */ pgettext(context, str) { this.#checkGettextDomain('pgettext'); return GLib.dpgettext2(this.#gettextDomain, context, str); } /** * @param {string} func */ #checkGettextDomain(func) { if (!this.#gettextDomain) throw new Error(`${func}() is used without calling initTranslations() first`); } } export class GettextWrapper { #url; #extensionClass; constructor(extensionClass, url) { this.#url = url; this.#extensionClass = extensionClass; } #detectUrl() { const basePath = '/gnome-shell/extensions/'; // Search for an occurrence of an extension stack frame // Start at 1 because 0 is the stack frame of this function const [, ...stack] = new Error().stack.split('\n'); const extensionLine = stack.find( line => line.includes(basePath)); if (!extensionLine) return null; // The exact stack line differs depending on where the function // was called (function or module scope), and whether it's called // from a module or legacy import (file:// URI vs. plain path). // // We don't have to care about the exact composition, all we need // is a string that can be traversed as path and contains the UUID const path = extensionLine.slice(extensionLine.indexOf(basePath)); return `file://${path}`; } #lookupExtension(funcName) { const url = this.#url ?? this.#detectUrl(); const extension = this.#extensionClass.lookupByURL(url); if (!extension) throw new Error(`${funcName} can only be called from extensions`); return extension; } #gettext(str) { const extension = this.#lookupExtension('gettext'); return extension.gettext(str); } #ngettext(str, strPlural, n) { const extension = this.#lookupExtension('ngettext'); return extension.ngettext(str, strPlural, n); } #pgettext(context, str) { const extension = this.#lookupExtension('pgettext'); return extension.pgettext(context, str); } defineTranslationFunctions() { return { /** * Translate `str` using the extension's gettext domain * * @param {string} str - the string to translate * * @returns {string} the translated string */ gettext: this.#gettext.bind(this), /** * Translate `str` and choose plural form using the extension's * gettext domain * * @param {string} str - the string to translate * @param {string} strPlural - the plural form of the string * @param {number} n - the quantity for which translation is needed * * @returns {string} the translated string */ ngettext: this.#ngettext.bind(this), /** * Translate `str` in the context of `context` using the extension's * gettext domain * * @param {string} context - context to disambiguate `str` * @param {string} str - the string to translate * * @returns {string} the translated string */ pgettext: this.#pgettext.bind(this), }; } } 0707010000016A000041ED0000000000000000000000026712993F00000000000000000000000000000000000000000000001800000000gnome-shell-47.1/js/gdm0707010000016B000081A40000000000000000000000016712993F0000133C000000000000000000000000000000000000002400000000gnome-shell-47.1/js/gdm/authList.js/* * Copyright 2017 Red Hat, Inc * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see . */ import Clutter from 'gi://Clutter'; import GObject from 'gi://GObject'; import Meta from 'gi://Meta'; import St from 'gi://St'; const SCROLL_ANIMATION_TIME = 500; const AuthListItem = GObject.registerClass({ Signals: {'activate': {}}, }, class AuthListItem extends St.Button { _init(key, text) { this.key = key; const label = new St.Label({ text, style_class: 'login-dialog-auth-list-label', y_align: Clutter.ActorAlign.CENTER, x_expand: false, }); super._init({ style_class: 'login-dialog-auth-list-item', button_mask: St.ButtonMask.ONE | St.ButtonMask.THREE, can_focus: true, child: label, reactive: true, }); this.connect('key-focus-in', () => this._setSelected(true)); this.connect('key-focus-out', () => this._setSelected(false)); this.connect('notify::hover', () => this._setSelected(this.hover)); this.connect('clicked', this._onClicked.bind(this)); } _onClicked() { this.emit('activate'); } _setSelected(selected) { if (selected) { this.add_style_pseudo_class('selected'); this.grab_key_focus(); } else { this.remove_style_pseudo_class('selected'); } } }); export const AuthList = GObject.registerClass({ Signals: { 'activate': {param_types: [GObject.TYPE_STRING]}, 'item-added': {param_types: [AuthListItem.$gtype]}, }, }, class AuthList extends St.BoxLayout { _init() { super._init({ vertical: true, style_class: 'login-dialog-auth-list-layout', x_align: Clutter.ActorAlign.START, y_align: Clutter.ActorAlign.CENTER, }); this.label = new St.Label({style_class: 'login-dialog-auth-list-title'}); this.add_child(this.label); this._box = new St.BoxLayout({ vertical: true, style_class: 'login-dialog-auth-list', pseudo_class: 'expanded', }); this._scrollView = new St.ScrollView({ style_class: 'login-dialog-auth-list-view', child: this._box, }); this.add_child(this._scrollView); this._items = new Map(); this.connect('key-focus-in', this._moveFocusToItems.bind(this)); } _moveFocusToItems() { let hasItems = this.numItems > 0; if (!hasItems) return; if (global.stage.get_key_focus() !== this) return; let focusSet = this.navigate_focus(null, St.DirectionType.TAB_FORWARD, false); if (!focusSet) { const laters = global.compositor.get_laters(); laters.add(Meta.LaterType.BEFORE_REDRAW, () => { this._moveFocusToItems(); return false; }); } } _onItemActivated(activatedItem) { this.emit('activate', activatedItem.key); } scrollToItem(item) { let box = item.get_allocation_box(); const adjustment = this._scrollView.vadjustment; let value = (box.y1 + adjustment.step_increment / 2.0) - (adjustment.page_size / 2.0); adjustment.ease(value, { duration: SCROLL_ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, }); } addItem(key, text) { this.removeItem(key); let item = new AuthListItem(key, text); this._box.add_child(item); this._items.set(key, item); item.connect('activate', this._onItemActivated.bind(this)); // Try to keep the focused item front-and-center item.connect('key-focus-in', () => this.scrollToItem(item)); this._moveFocusToItems(); this.emit('item-added', item); } removeItem(key) { if (!this._items.has(key)) return; let item = this._items.get(key); item.destroy(); this._items.delete(key); } get numItems() { return this._items.size; } clear() { this.label.text = ''; this._box.destroy_all_children(); this._items.clear(); } }); 0707010000016C000081A40000000000000000000000016712993F00005BB6000000000000000000000000000000000000002600000000gnome-shell-47.1/js/gdm/authPrompt.jsimport Clutter from 'gi://Clutter'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import Pango from 'gi://Pango'; import Shell from 'gi://Shell'; import St from 'gi://St'; import * as Animation from '../ui/animation.js'; import * as AuthList from './authList.js'; import * as Batch from './batch.js'; import * as GdmUtil from './util.js'; import * as Params from '../misc/params.js'; import * as ShellEntry from '../ui/shellEntry.js'; import * as UserWidget from '../ui/userWidget.js'; import {wiggle} from '../misc/animationUtils.js'; const DEFAULT_BUTTON_WELL_ICON_SIZE = 16; const DEFAULT_BUTTON_WELL_ANIMATION_DELAY = 1000; const DEFAULT_BUTTON_WELL_ANIMATION_TIME = 300; const MESSAGE_FADE_OUT_ANIMATION_TIME = 500; /** @enum {number} */ export const AuthPromptMode = { UNLOCK_ONLY: 0, UNLOCK_OR_LOG_IN: 1, }; /** @enum {number} */ export const AuthPromptStatus = { NOT_VERIFYING: 0, VERIFYING: 1, VERIFICATION_FAILED: 2, VERIFICATION_SUCCEEDED: 3, VERIFICATION_CANCELLED: 4, VERIFICATION_IN_PROGRESS: 5, }; /** @enum {number} */ export const BeginRequestType = { PROVIDE_USERNAME: 0, DONT_PROVIDE_USERNAME: 1, REUSE_USERNAME: 2, }; export const AuthPrompt = GObject.registerClass({ Signals: { 'cancelled': {}, 'failed': {}, 'next': {}, 'prompted': {}, 'reset': {param_types: [GObject.TYPE_UINT]}, }, }, class AuthPrompt extends St.BoxLayout { _init(gdmClient, mode) { super._init({ style_class: 'login-dialog-prompt-layout', vertical: true, x_expand: true, x_align: Clutter.ActorAlign.CENTER, reactive: true, }); this.verificationStatus = AuthPromptStatus.NOT_VERIFYING; this._gdmClient = gdmClient; this._mode = mode; this._defaultButtonWellActor = null; this._cancelledRetries = 0; let reauthenticationOnly; if (this._mode === AuthPromptMode.UNLOCK_ONLY) reauthenticationOnly = true; else if (this._mode === AuthPromptMode.UNLOCK_OR_LOG_IN) reauthenticationOnly = false; this._userVerifier = this._createUserVerifier(this._gdmClient, {reauthenticationOnly}); this._userVerifier.connect('ask-question', this._onAskQuestion.bind(this)); this._userVerifier.connect('show-message', this._onShowMessage.bind(this)); this._userVerifier.connect('show-choice-list', this._onShowChoiceList.bind(this)); this._userVerifier.connect('verification-failed', this._onVerificationFailed.bind(this)); this._userVerifier.connect('verification-complete', this._onVerificationComplete.bind(this)); this._userVerifier.connect('reset', this._onReset.bind(this)); this._userVerifier.connect('smartcard-status-changed', this._onSmartcardStatusChanged.bind(this)); this._userVerifier.connect('credential-manager-authenticated', this._onCredentialManagerAuthenticated.bind(this)); this.smartcardDetected = this._userVerifier.smartcardDetected; this.connect('destroy', this._onDestroy.bind(this)); this._userWell = new St.Bin({ x_expand: true, y_expand: true, }); this.add_child(this._userWell); this._hasCancelButton = this._mode === AuthPromptMode.UNLOCK_OR_LOG_IN; this._initInputRow(); let capsLockPlaceholder = new St.Label(); this.add_child(capsLockPlaceholder); this._capsLockWarningLabel = new ShellEntry.CapsLockWarning({ x_expand: true, x_align: Clutter.ActorAlign.CENTER, }); this.add_child(this._capsLockWarningLabel); this._capsLockWarningLabel.bind_property('visible', capsLockPlaceholder, 'visible', GObject.BindingFlags.SYNC_CREATE | GObject.BindingFlags.INVERT_BOOLEAN); this._message = new St.Label({ opacity: 0, styleClass: 'login-dialog-message', y_expand: true, x_expand: true, y_align: Clutter.ActorAlign.START, x_align: Clutter.ActorAlign.CENTER, }); this._message.clutter_text.line_wrap = true; this._message.clutter_text.ellipsize = Pango.EllipsizeMode.NONE; this.add_child(this._message); } _createUserVerifier(gdmClient, params) { return new GdmUtil.ShellUserVerifier(gdmClient, params); } _onDestroy() { this._inactiveEntry.destroy(); this._inactiveEntry = null; this._userVerifier.destroy(); this._userVerifier = null; } on_key_press_event(event) { if (event.get_key_symbol() === Clutter.KEY_Escape) { this.cancel(); return Clutter.EVENT_STOP; } return Clutter.EVENT_PROPAGATE; } _initInputRow() { this._mainBox = new St.BoxLayout({ style_class: 'login-dialog-button-box', vertical: false, }); this.add_child(this._mainBox); this.cancelButton = new St.Button({ style_class: 'login-dialog-button cancel-button', accessible_name: _('Cancel'), button_mask: St.ButtonMask.ONE | St.ButtonMask.THREE, reactive: this._hasCancelButton, can_focus: this._hasCancelButton, x_align: Clutter.ActorAlign.START, y_align: Clutter.ActorAlign.CENTER, icon_name: 'go-previous-symbolic', }); if (this._hasCancelButton) this.cancelButton.connect('clicked', () => this.cancel()); else this.cancelButton.opacity = 0; this._mainBox.add_child(this.cancelButton); this._authList = new AuthList.AuthList(); this._authList.set({ visible: false, }); this._authList.connect('activate', (list, key) => { this._authList.reactive = false; this._authList.ease({ opacity: 0, duration: MESSAGE_FADE_OUT_ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => { this._authList.clear(); this._authList.hide(); this._userVerifier.selectChoice(this._queryingService, key); }, }); }); this._mainBox.add_child(this._authList); let entryParams = { style_class: 'login-dialog-prompt-entry', can_focus: true, x_expand: true, }; this._entry = null; this._textEntry = new St.Entry(entryParams); ShellEntry.addContextMenu(this._textEntry, {actionMode: Shell.ActionMode.NONE}); this._passwordEntry = new St.PasswordEntry(entryParams); ShellEntry.addContextMenu(this._passwordEntry, {actionMode: Shell.ActionMode.NONE}); this._entry = this._passwordEntry; this._mainBox.add_child(this._entry); this._entry.grab_key_focus(); this._inactiveEntry = this._textEntry; this._timedLoginIndicator = new St.Bin({ style_class: 'login-dialog-timed-login-indicator', scale_x: 0, }); this.add_child(this._timedLoginIndicator); [this._textEntry, this._passwordEntry].forEach(entry => { entry.clutter_text.connect('text-changed', () => { if (!this._userVerifier.hasPendingMessages) this._fadeOutMessage(); }); entry.clutter_text.connect('activate', () => { let shouldSpin = entry === this._passwordEntry; if (entry.reactive) this._activateNext(shouldSpin); }); }); this._defaultButtonWell = new St.Widget({ layout_manager: new Clutter.BinLayout(), x_align: Clutter.ActorAlign.END, y_align: Clutter.ActorAlign.CENTER, }); this._defaultButtonWell.add_constraint(new Clutter.BindConstraint({ source: this.cancelButton, coordinate: Clutter.BindCoordinate.WIDTH, })); this._mainBox.add_child(this._defaultButtonWell); this._spinner = new Animation.Spinner(DEFAULT_BUTTON_WELL_ICON_SIZE); this._defaultButtonWell.add_child(this._spinner); } showTimedLoginIndicator(time) { let hold = new Batch.Hold(); this.hideTimedLoginIndicator(); const startTime = GLib.get_monotonic_time(); this._timedLoginTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 33, () => { const currentTime = GLib.get_monotonic_time(); const elapsedTime = (currentTime - startTime) / GLib.USEC_PER_SEC; this._timedLoginIndicator.scale_x = elapsedTime / time; if (elapsedTime >= time) { this._timedLoginTimeoutId = 0; hold.release(); return GLib.SOURCE_REMOVE; } return GLib.SOURCE_CONTINUE; }); GLib.Source.set_name_by_id(this._timedLoginTimeoutId, '[gnome-shell] this._timedLoginTimeoutId'); return hold; } hideTimedLoginIndicator() { if (this._timedLoginTimeoutId) { GLib.source_remove(this._timedLoginTimeoutId); this._timedLoginTimeoutId = 0; } this._timedLoginIndicator.scale_x = 0.; } _activateNext(shouldSpin) { this.verificationStatus = AuthPromptStatus.VERIFICATION_IN_PROGRESS; this.updateSensitivity(false); if (shouldSpin) this.startSpinning(); if (this._queryingService) this._userVerifier.answerQuery(this._queryingService, this._entry.text); else this._preemptiveAnswer = this._entry.text; this.emit('next'); } _updateEntry(secret) { if (secret && this._entry !== this._passwordEntry) { this._mainBox.replace_child(this._entry, this._passwordEntry); this._entry = this._passwordEntry; this._inactiveEntry = this._textEntry; } else if (!secret && this._entry !== this._textEntry) { this._mainBox.replace_child(this._entry, this._textEntry); this._entry = this._textEntry; this._inactiveEntry = this._passwordEntry; } this._capsLockWarningLabel.visible = secret; } _onAskQuestion(verifier, serviceName, question, secret) { if (this._queryingService) this.clear(); this._queryingService = serviceName; if (this._preemptiveAnswer) { this._userVerifier.answerQuery(this._queryingService, this._preemptiveAnswer); this._preemptiveAnswer = null; return; } this._updateEntry(secret); // Hack: The question string comes directly from PAM, if it's "Password:" // we replace it with our own to allow localization, if it's something // else we remove the last colon and any trailing or leading spaces. if (question === 'Password:' || question === 'Password: ') this.setQuestion(_('Password')); else this.setQuestion(question.replace(/[::] *$/, '').trim()); this.updateSensitivity(true); this.emit('prompted'); } _onShowChoiceList(userVerifier, serviceName, promptMessage, choiceList) { if (this._queryingService) this.clear(); this._queryingService = serviceName; if (this._preemptiveAnswer) this._preemptiveAnswer = null; this.setChoiceList(promptMessage, choiceList); this.updateSensitivity(true); this.emit('prompted'); } _onCredentialManagerAuthenticated() { if (this.verificationStatus !== AuthPromptStatus.VERIFICATION_SUCCEEDED) this.reset(); } _onSmartcardStatusChanged() { this.smartcardDetected = this._userVerifier.smartcardDetected; // Most of the time we want to reset if the user inserts or removes // a smartcard. Smartcard insertion "preempts" what the user was // doing, and smartcard removal aborts the preemption. // The exceptions are: 1) Don't reset on smartcard insertion if we're already verifying // with a smartcard // 2) Don't reset if we've already succeeded at verification and // the user is getting logged in. if (this._userVerifier.serviceIsDefault(GdmUtil.SMARTCARD_SERVICE_NAME) && (this.verificationStatus === AuthPromptStatus.VERIFYING || this.verificationStatus === AuthPromptStatus.VERIFICATION_IN_PROGRESS) && this.smartcardDetected) return; if (this.verificationStatus !== AuthPromptStatus.VERIFICATION_SUCCEEDED) this.reset(); } _onShowMessage(_userVerifier, serviceName, message, type) { let wiggleParameters = {duration: 0}; if (type === GdmUtil.MessageType.ERROR && this._userVerifier.serviceIsFingerprint(serviceName)) { // TODO: Use Await for wiggle to be over before unfreezing the user verifier queue wiggleParameters = { duration: 65, wiggleCount: 3, }; this._userVerifier.increaseCurrentMessageTimeout( wiggleParameters.duration * (wiggleParameters.wiggleCount + 2)); } this.setMessage(message, type, wiggleParameters); this.emit('prompted'); } _onVerificationFailed(userVerifier, serviceName, canRetry) { const wasQueryingService = this._queryingService === serviceName; if (wasQueryingService) { this._queryingService = null; this.clear(); } this.updateSensitivity(canRetry); this.setActorInDefaultButtonWell(null); if (!canRetry) this.verificationStatus = AuthPromptStatus.VERIFICATION_FAILED; if (wasQueryingService) wiggle(this._entry); } _onVerificationComplete() { this.setActorInDefaultButtonWell(null); this.verificationStatus = AuthPromptStatus.VERIFICATION_SUCCEEDED; this.cancelButton.reactive = false; this.cancelButton.can_focus = false; } _onReset() { this.verificationStatus = AuthPromptStatus.NOT_VERIFYING; this.reset(); } setActorInDefaultButtonWell(actor, animate) { if (!this._defaultButtonWellActor && !actor) return; let oldActor = this._defaultButtonWellActor; if (oldActor) oldActor.remove_all_transitions(); let wasSpinner; if (oldActor === this._spinner) wasSpinner = true; else wasSpinner = false; let isSpinner; if (actor === this._spinner) isSpinner = true; else isSpinner = false; if (this._defaultButtonWellActor !== actor && oldActor) { if (!animate) { oldActor.opacity = 0; if (wasSpinner) { if (this._spinner) this._spinner.stop(); } } else { oldActor.ease({ opacity: 0, duration: DEFAULT_BUTTON_WELL_ANIMATION_TIME, delay: DEFAULT_BUTTON_WELL_ANIMATION_DELAY, mode: Clutter.AnimationMode.LINEAR, onComplete: () => { if (wasSpinner) { if (this._spinner) this._spinner.stop(); } }, }); } } if (actor) { if (isSpinner) this._spinner.play(); if (!animate) { actor.opacity = 255; } else { actor.ease({ opacity: 255, duration: DEFAULT_BUTTON_WELL_ANIMATION_TIME, delay: DEFAULT_BUTTON_WELL_ANIMATION_DELAY, mode: Clutter.AnimationMode.LINEAR, }); } } this._defaultButtonWellActor = actor; } startSpinning() { this.setActorInDefaultButtonWell(this._spinner, true); } stopSpinning() { this.setActorInDefaultButtonWell(null, false); } clear() { this._entry.text = ''; this.stopSpinning(); this._authList.clear(); this._authList.hide(); } setQuestion(question) { this._entry.hint_text = question; this._authList.hide(); this._entry.show(); this._entry.grab_key_focus(); } _fadeInChoiceList() { this._authList.set({ opacity: 0, visible: true, reactive: false, }); this._authList.ease({ opacity: 255, duration: MESSAGE_FADE_OUT_ANIMATION_TIME, transition: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => (this._authList.reactive = true), }); } setChoiceList(promptMessage, choiceList) { this._authList.clear(); this._authList.label.text = promptMessage; for (let key in choiceList) { let text = choiceList[key]; this._authList.addItem(key, text); } this._entry.hide(); if (this._message.text === '') this._message.hide(); this._fadeInChoiceList(); } getAnswer() { let text; if (this._preemptiveAnswer) { text = this._preemptiveAnswer; this._preemptiveAnswer = null; } else { text = this._entry.get_text(); } return text; } _fadeOutMessage() { if (this._message.opacity === 0) return; this._message.remove_all_transitions(); this._message.ease({ opacity: 0, duration: MESSAGE_FADE_OUT_ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, }); } setMessage(message, type, wiggleParameters = {duration: 0}) { if (type === GdmUtil.MessageType.ERROR) this._message.add_style_class_name('login-dialog-message-warning'); else this._message.remove_style_class_name('login-dialog-message-warning'); if (type === GdmUtil.MessageType.HINT) this._message.add_style_class_name('login-dialog-message-hint'); else this._message.remove_style_class_name('login-dialog-message-hint'); this._message.show(); if (message) { this._message.remove_all_transitions(); this._message.text = message; this._message.opacity = 255; } else { this._message.opacity = 0; } wiggle(this._message, wiggleParameters); } updateSensitivity(sensitive) { if (this._entry.reactive === sensitive) return; this._entry.reactive = sensitive; if (sensitive) { this._entry.grab_key_focus(); } else { this.grab_key_focus(); if (this._entry === this._passwordEntry) this._entry.password_visible = false; } } vfunc_hide() { this.setActorInDefaultButtonWell(null, true); super.vfunc_hide(); this._message.opacity = 0; this.setUser(null); this.updateSensitivity(true); this._entry.set_text(''); } setUser(user) { let oldChild = this._userWell.get_child(); if (oldChild) oldChild.destroy(); let userWidget = new UserWidget.UserWidget(user, Clutter.Orientation.VERTICAL); this._userWell.set_child(userWidget); if (!user) this._updateEntry(false); } reset() { let oldStatus = this.verificationStatus; this.verificationStatus = AuthPromptStatus.NOT_VERIFYING; this.cancelButton.reactive = this._hasCancelButton; this.cancelButton.can_focus = this._hasCancelButton; this._preemptiveAnswer = null; if (this._userVerifier) this._userVerifier.cancel(); this._queryingService = null; this.clear(); this._message.opacity = 0; this.setUser(null); this._updateEntry(true); this.stopSpinning(); if (oldStatus === AuthPromptStatus.VERIFICATION_FAILED) this.emit('failed'); else if (oldStatus === AuthPromptStatus.VERIFICATION_CANCELLED) this.emit('cancelled'); let beginRequestType; if (this._mode === AuthPromptMode.UNLOCK_ONLY) { // The user is constant at the unlock screen, so it will immediately // respond to the request with the username if (oldStatus === AuthPromptStatus.VERIFICATION_CANCELLED) return; beginRequestType = BeginRequestType.PROVIDE_USERNAME; } else if (this._userVerifier.foregroundServiceDeterminesUsername()) { // We don't need to know the username if the user preempted the login screen // with a smartcard or with preauthenticated oVirt credentials beginRequestType = BeginRequestType.DONT_PROVIDE_USERNAME; } else if (oldStatus === AuthPromptStatus.VERIFICATION_IN_PROGRESS) { // We're going back to retry with current user beginRequestType = BeginRequestType.REUSE_USERNAME; } else { // In all other cases, we should get the username up front. beginRequestType = BeginRequestType.PROVIDE_USERNAME; } this.emit('reset', beginRequestType); } addCharacter(unichar) { if (!this._entry.visible) return; this._entry.grab_key_focus(); this._entry.clutter_text.insert_unichar(unichar); } begin(params) { params = Params.parse(params, { userName: null, hold: null, }); this.updateSensitivity(false); let hold = params.hold; if (!hold) hold = new Batch.Hold(); this._userVerifier.begin(params.userName, hold); this.verificationStatus = AuthPromptStatus.VERIFYING; } finish(onComplete) { if (!this._userVerifier.hasPendingMessages) { this._userVerifier.clear(); onComplete(); return; } let signalId = this._userVerifier.connect('no-more-messages', () => { this._userVerifier.disconnect(signalId); this._userVerifier.clear(); onComplete(); }); } cancel() { if (this.verificationStatus === AuthPromptStatus.VERIFICATION_SUCCEEDED) return; if (this.verificationStatus === AuthPromptStatus.VERIFICATION_IN_PROGRESS) { this._cancelledRetries++; if (this._cancelledRetries > this._userVerifier.allowedFailures) this.verificationStatus = AuthPromptStatus.VERIFICATION_FAILED; } else { this.verificationStatus = AuthPromptStatus.VERIFICATION_CANCELLED; } this.reset(); } }); 0707010000016D000081A40000000000000000000000016712993F00001589000000000000000000000000000000000000002100000000gnome-shell-47.1/js/gdm/batch.js/* * Copyright 2011 Red Hat, Inc * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see . */ /* * In order for transformation animations to look good, they need to be * incremental and have some order to them (e.g., fade out hidden items, * then shrink to close the void left over). Chaining animations in this way can * be error-prone and wordy using just ease() callbacks. * * The classes in this file help with this: * * - Task. encapsulates schedulable work to be run in a specific scope. * * - ConsecutiveBatch. runs a series of tasks in order and completes * when the last in the series finishes. * * - ConcurrentBatch. runs a set of tasks at the same time and completes * when the last to finish completes. * * - Hold. prevents a batch from completing the pending task until * the hold is released. * * The tasks associated with a batch are specified in a list at batch * construction time as either task objects or plain functions. * Batches are task objects, themselves, so they can be nested. * * These classes aren't specific to GDM, but were found to be unintuitive and so * are not used elsewhere. These APIs may ultimately get dropped entirely and * replaced by something else. */ import GObject from 'gi://GObject'; import * as Signals from '../misc/signals.js'; export class Task extends Signals.EventEmitter { constructor(scope, handler) { super(); if (scope) this.scope = scope; else this.scope = this; this.handler = handler; } run() { if (this.handler) return this.handler.call(this.scope); return null; } } export class Hold extends Task { constructor() { super(null, () => this); this._acquisitions = 1; } acquire() { if (this._acquisitions <= 0) throw new Error("Cannot acquire hold after it's been released"); this._acquisitions++; } acquireUntilAfter(hold) { if (!hold.isAcquired()) return; this.acquire(); let signalId = hold.connect('release', () => { hold.disconnect(signalId); this.release(); }); } release() { this._acquisitions--; if (this._acquisitions === 0) this.emit('release'); } isAcquired() { return this._acquisitions > 0; } } export class Batch extends Task { constructor(scope, tasks) { super(); this.tasks = []; for (let i = 0; i < tasks.length; i++) { let task; if (tasks[i] instanceof Task) task = tasks[i]; else if (typeof tasks[i] == 'function') task = new Task(scope, tasks[i]); else throw new Error('Batch tasks must be functions or Task, Hold or Batch objects'); this.tasks.push(task); } } process() { throw new GObject.NotImplementedError(`process in ${this.constructor.name}`); } runTask() { if (!(this._currentTaskIndex in this.tasks)) return null; return this.tasks[this._currentTaskIndex].run(); } _finish() { this.hold.release(); } nextTask() { this._currentTaskIndex++; // if the entire batch of tasks is finished, release // the hold and notify anyone waiting on the batch if (this._currentTaskIndex >= this.tasks.length) { this._finish(); return; } this.process(); } _start() { // acquire a hold to get released when the entire // batch of tasks is finished this.hold = new Hold(); this._currentTaskIndex = 0; this.process(); } run() { this._start(); // hold may be destroyed at this point // if we're already done running return this.hold; } cancel() { this.tasks = this.tasks.splice(0, this._currentTaskIndex + 1); } } export class ConcurrentBatch extends Batch { process() { let hold = this.runTask(); if (hold) this.hold.acquireUntilAfter(hold); // Regardless of the state of the just run task, // fire off the next one, so all the tasks can run // concurrently. this.nextTask(); } } export class ConsecutiveBatch extends Batch { process() { let hold = this.runTask(); if (hold && hold.isAcquired()) { // This task is inhibiting the batch. Wait on it // before processing the next one. let signalId = hold.connect('release', () => { hold.disconnect(signalId); this.nextTask(); }); } else { // This task finished, process the next one this.nextTask(); } } } 0707010000016E000081A40000000000000000000000016712993F000001D4000000000000000000000000000000000000002D00000000gnome-shell-47.1/js/gdm/credentialManager.jsimport * as Signals from '../misc/signals.js'; export class CredentialManager extends Signals.EventEmitter { constructor(service) { super(); this._token = null; this._service = service; } get token() { return this._token; } set token(t) { this._token = t; if (this._token) this.emit('user-authenticated', this._token); } get service() { return this._service; } } 0707010000016F000081A40000000000000000000000016712993F0000C28D000000000000000000000000000000000000002700000000gnome-shell-47.1/js/gdm/loginDialog.js/* * Copyright 2011 Red Hat, Inc * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see . */ import AccountsService from 'gi://AccountsService'; import Atk from 'gi://Atk'; import Clutter from 'gi://Clutter'; import Gdm from 'gi://Gdm'; import Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import Meta from 'gi://Meta'; import Pango from 'gi://Pango'; import Shell from 'gi://Shell'; import St from 'gi://St'; import * as AuthPrompt from './authPrompt.js'; import * as Batch from './batch.js'; import * as BoxPointer from '../ui/boxpointer.js'; import * as CtrlAltTab from '../ui/ctrlAltTab.js'; import * as GdmUtil from './util.js'; import * as Layout from '../ui/layout.js'; import * as LoginManager from '../misc/loginManager.js'; import * as Main from '../ui/main.js'; import * as MessageTray from '../ui/messageTray.js'; import * as ModalDialog from '../ui/modalDialog.js'; import * as PopupMenu from '../ui/popupMenu.js'; import * as Realmd from './realmd.js'; import * as UserWidget from '../ui/userWidget.js'; const _FADE_ANIMATION_TIME = 250; const _SCROLL_ANIMATION_TIME = 500; const _TIMED_LOGIN_IDLE_THRESHOLD = 5.0; const _CONFLICTING_SESSION_DIALOG_TIMEOUT = 60; export const UserListItem = GObject.registerClass({ Signals: {'activate': {}}, }, class UserListItem extends St.Button { _init(user) { let layout = new St.BoxLayout({ vertical: true, x_expand: true, }); super._init({ style_class: 'login-dialog-user-list-item', button_mask: St.ButtonMask.ONE | St.ButtonMask.THREE, can_focus: true, x_expand: true, child: layout, reactive: true, }); this.user = user; this.user.connectObject('changed', this._onUserChanged.bind(this), this); this.connect('notify::hover', () => { this._setSelected(this.hover); }); this._userWidget = new UserWidget.UserWidget(this.user); layout.add_child(this._userWidget); this._userWidget.bind_property('label-actor', this, 'label-actor', GObject.BindingFlags.SYNC_CREATE); this._timedLoginIndicator = new St.Bin({ style_class: 'login-dialog-timed-login-indicator', scale_x: 0, visible: false, }); layout.add_child(this._timedLoginIndicator); this._onUserChanged(); } vfunc_key_focus_in() { super.vfunc_key_focus_in(); this._setSelected(true); } vfunc_key_focus_out() { super.vfunc_key_focus_out(); this._setSelected(false); } _onUserChanged() { this._updateLoggedIn(); } _updateLoggedIn() { if (this.user.is_logged_in()) this.add_style_pseudo_class('logged-in'); else this.remove_style_pseudo_class('logged-in'); } vfunc_clicked() { this.emit('activate'); } _setSelected(selected) { if (selected) { this.add_style_pseudo_class('selected'); this.grab_key_focus(); } else { this.remove_style_pseudo_class('selected'); } } showTimedLoginIndicator(time) { let hold = new Batch.Hold(); this.hideTimedLoginIndicator(); this._timedLoginIndicator.visible = true; let startTime = GLib.get_monotonic_time(); this._timedLoginTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 33, () => { let currentTime = GLib.get_monotonic_time(); let elapsedTime = (currentTime - startTime) / GLib.USEC_PER_SEC; this._timedLoginIndicator.scale_x = elapsedTime / time; if (elapsedTime >= time) { this._timedLoginTimeoutId = 0; hold.release(); return GLib.SOURCE_REMOVE; } return GLib.SOURCE_CONTINUE; }); GLib.Source.set_name_by_id(this._timedLoginTimeoutId, '[gnome-shell] this._timedLoginTimeoutId'); return hold; } hideTimedLoginIndicator() { if (this._timedLoginTimeoutId) { GLib.source_remove(this._timedLoginTimeoutId); this._timedLoginTimeoutId = 0; } this._timedLoginIndicator.visible = false; this._timedLoginIndicator.scale_x = 0.; } }); const UserList = GObject.registerClass({ Signals: { 'activate': {param_types: [UserListItem.$gtype]}, 'item-added': {param_types: [UserListItem.$gtype]}, }, }, class UserList extends St.ScrollView { _init() { super._init({ style_class: 'login-dialog-user-list-view', x_expand: true, y_expand: true, }); this._box = new St.BoxLayout({ vertical: true, style_class: 'login-dialog-user-list', pseudo_class: 'expanded', }); this.child = this._box; this._items = {}; } vfunc_key_focus_in() { super.vfunc_key_focus_in(); this._moveFocusToItems(); } _moveFocusToItems() { let hasItems = Object.keys(this._items).length > 0; if (!hasItems) return; if (global.stage.get_key_focus() !== this) return; let focusSet = this.navigate_focus(null, St.DirectionType.TAB_FORWARD, false); if (!focusSet) { const laters = global.compositor.get_laters(); laters.add(Meta.LaterType.BEFORE_REDRAW, () => { this._moveFocusToItems(); return false; }); } } _onItemActivated(activatedItem) { this.emit('activate', activatedItem); } updateStyle(isExpanded) { if (isExpanded) this._box.add_style_pseudo_class('expanded'); else this._box.remove_style_pseudo_class('expanded'); for (let userName in this._items) { let item = this._items[userName]; item.sync_hover(); } } scrollToItem(item) { let box = item.get_allocation_box(); const adjustment = this.vadjustment; let value = (box.y1 + adjustment.step_increment / 2.0) - (adjustment.page_size / 2.0); adjustment.ease(value, { mode: Clutter.AnimationMode.EASE_OUT_QUAD, duration: _SCROLL_ANIMATION_TIME, }); } jumpToItem(item) { let box = item.get_allocation_box(); const adjustment = this.vadjustment; let value = (box.y1 + adjustment.step_increment / 2.0) - (adjustment.page_size / 2.0); adjustment.set_value(value); } getItemFromUserName(userName) { let item = this._items[userName]; if (!item) return null; return item; } containsUser(user) { return this._items[user.get_user_name()] != null; } addUser(user) { if (!user.is_loaded) return; if (user.is_system_account()) return; if (user.locked) return; let userName = user.get_user_name(); if (!userName) return; this.removeUser(user); let item = new UserListItem(user); this._box.add_child(item); this._items[userName] = item; item.connect('activate', this._onItemActivated.bind(this)); // Try to keep the focused item front-and-center item.connect('key-focus-in', () => this.scrollToItem(item)); this._moveFocusToItems(); this.emit('item-added', item); } removeUser(user) { if (!user.is_loaded) return; let userName = user.get_user_name(); if (!userName) return; let item = this._items[userName]; if (!item) return; item.destroy(); delete this._items[userName]; } numItems() { return Object.keys(this._items).length; } }); const SessionMenuButton = GObject.registerClass({ Signals: {'session-activated': {param_types: [GObject.TYPE_STRING]}}, }, class SessionMenuButton extends St.Bin { _init() { let button = new St.Button({ style_class: 'login-dialog-button login-dialog-session-list-button', icon_name: 'emblem-system-symbolic', reactive: true, track_hover: true, can_focus: true, accessible_name: _('Choose Session'), accessible_role: Atk.Role.MENU, x_align: Clutter.ActorAlign.CENTER, y_align: Clutter.ActorAlign.CENTER, }); super._init({child: button}); this._button = button; this._menu = new PopupMenu.PopupMenu(this._button, 0, St.Side.BOTTOM); Main.uiGroup.add_child(this._menu.actor); this._menu.actor.hide(); this._menu.connect('open-state-changed', (menu, isOpen) => { if (isOpen) this._button.add_style_pseudo_class('active'); else this._button.remove_style_pseudo_class('active'); }); this._manager = new PopupMenu.PopupMenuManager(this._button, {actionMode: Shell.ActionMode.NONE}); this._manager.addMenu(this._menu); this._button.connect('clicked', () => this._menu.toggle()); this._items = {}; this._activeSessionId = null; this._populate(); } updateSensitivity(sensitive) { this._button.reactive = sensitive; this._button.can_focus = sensitive; this.opacity = sensitive ? 255 : 0; this._menu.close(BoxPointer.PopupAnimation.NONE); } _updateOrnament() { let itemIds = Object.keys(this._items); for (let i = 0; i < itemIds.length; i++) { if (itemIds[i] === this._activeSessionId) this._items[itemIds[i]].setOrnament(PopupMenu.Ornament.DOT); else this._items[itemIds[i]].setOrnament(PopupMenu.Ornament.NO_DOT); } } setActiveSession(sessionId) { if (sessionId === this._activeSessionId) return; this._activeSessionId = sessionId; this._updateOrnament(); } close() { this._menu.close(); } _populate() { let ids = Gdm.get_session_ids(); ids.sort(); if (ids.length <= 1) { this._button.hide(); return; } for (let i = 0; i < ids.length; i++) { let [sessionName, sessionDescription_] = Gdm.get_session_name_and_description(ids[i]); let id = ids[i]; let item = new PopupMenu.PopupMenuItem(sessionName); this._menu.addMenuItem(item); this._items[id] = item; item.connect('activate', () => { this.setActiveSession(id); this.emit('session-activated', this._activeSessionId); }); } } }); export const ConflictingSessionDialog = GObject.registerClass({ Signals: { 'cancel': {}, 'force-stop': {}, }, }, class ConflictingSessionDialog extends ModalDialog.ModalDialog { _init(conflictingSession, greeterSession) { super._init(); const userName = conflictingSession.Name; let bannerText; if (greeterSession.Remote && conflictingSession.Remote) /* Translators: is running for */ bannerText = _('Remote login is not possible because a remote session is already running for %s. To login remotely, you must log out from the remote session or force stop it.').format(userName); else if (!greeterSession.Remote && conflictingSession.Remote) /* Translators: is running for */ bannerText = _('Login is not possible because a remote session is already running for %s. To login, you must log out from the remote session or force stop it.').format(userName); else if (greeterSession.Remote && !conflictingSession.Remote) /* Translators: is running for */ bannerText = _('Remote login is not possible because a local session is already running for %s. To login remotely, you must log out from the local session or force stop it.').format(userName); else /* Translators: is running for */ bannerText = _('Login is not possible because a session is already running for %s. To login, you must log out from the session or force stop it.').format(userName); let textLayout = new St.BoxLayout({ style_class: 'conflicting-session-dialog-content', vertical: true, x_expand: true, }); let title = new St.Label({ text: _('Session Already Running'), style_class: 'conflicting-session-dialog-title', }); let banner = new St.Label({ text: bannerText, style_class: 'conflicting-session-dialog-desc', }); banner.clutter_text.ellipsize = Pango.EllipsizeMode.NONE; banner.clutter_text.line_wrap = true; let warningBanner = new St.Label({ text: _('Force stopping will quit any running apps and processes, and could result in data loss'), style_class: 'conflicting-session-dialog-desc-warning', }); warningBanner.clutter_text.ellipsize = Pango.EllipsizeMode.NONE; warningBanner.clutter_text.line_wrap = true; textLayout.add_child(title); textLayout.add_child(banner); textLayout.add_child(warningBanner); this.contentLayout.add_child(textLayout); this.addButton({ label: _('Cancel'), action: () => { this.emit('cancel'); }, key: Clutter.KEY_Escape, default: true, }); this.addButton({ label: _('Force Stop'), action: () => { this.emit('force-stop'); }, }); } }); export const LoginDialog = GObject.registerClass({ Signals: { 'failed': {}, 'wake-up-screen': {}, }, }, class LoginDialog extends St.Widget { _init(parentActor) { super._init({style_class: 'login-dialog', visible: false}); this.get_accessible().set_role(Atk.Role.WINDOW); this.add_constraint(new Layout.MonitorConstraint({primary: true})); this.connect('destroy', this._onDestroy.bind(this)); parentActor.add_child(this); this._userManager = AccountsService.UserManager.get_default(); this._gdmClient = new Gdm.Client(); try { this._gdmClient.set_enabled_extensions([Gdm.UserVerifierChoiceList.interface_info().name]); } catch (e) { } this._settings = new Gio.Settings({schema_id: GdmUtil.LOGIN_SCREEN_SCHEMA}); this._settings.connect(`changed::${GdmUtil.BANNER_MESSAGE_KEY}`, this._updateBanner.bind(this)); this._settings.connect(`changed::${GdmUtil.BANNER_MESSAGE_TEXT_KEY}`, this._updateBanner.bind(this)); this._settings.connect(`changed::${GdmUtil.DISABLE_USER_LIST_KEY}`, this._updateDisableUserList.bind(this)); this._settings.connect(`changed::${GdmUtil.LOGO_KEY}`, this._updateLogo.bind(this)); this._textureCache = St.TextureCache.get_default(); this._textureCache.connectObject('texture-file-changed', this._updateLogoTexture.bind(this), this); this._userSelectionBox = new St.BoxLayout({ style_class: 'login-dialog-user-selection-box', x_align: Clutter.ActorAlign.CENTER, y_align: Clutter.ActorAlign.CENTER, vertical: true, visible: false, }); this.add_child(this._userSelectionBox); this._userList = new UserList(); this._userSelectionBox.add_child(this._userList); this._authPrompt = new AuthPrompt.AuthPrompt(this._gdmClient, AuthPrompt.AuthPromptMode.UNLOCK_OR_LOG_IN); this._authPrompt.connect('prompted', this._onPrompted.bind(this)); this._authPrompt.connect('reset', this._onReset.bind(this)); this._authPrompt.hide(); this.add_child(this._authPrompt); // translators: this message is shown below the user list on the // login screen. It can be activated to reveal an entry for // manually entering the username. let notListedLabel = new St.Label({ text: _('Not listed?'), style_class: 'login-dialog-not-listed-label', }); this._notListedButton = new St.Button({ style_class: 'login-dialog-not-listed-button', button_mask: St.ButtonMask.ONE | St.ButtonMask.THREE, can_focus: true, child: notListedLabel, reactive: true, x_align: Clutter.ActorAlign.START, label_actor: notListedLabel, }); this._notListedButton.connect('clicked', this._hideUserListAskForUsernameAndBeginVerification.bind(this)); this._notListedButton.hide(); this._userSelectionBox.add_child(this._notListedButton); const bannerBox = new St.BoxLayout({vertical: true}); this._bannerView = new St.ScrollView({ style_class: 'login-dialog-banner-view', opacity: 0, child: bannerBox, }); this.add_child(this._bannerView); this._bannerLabel = new St.Label({ style_class: 'login-dialog-banner', text: '', }); this._bannerLabel.clutter_text.line_wrap = true; this._bannerLabel.clutter_text.ellipsize = Pango.EllipsizeMode.NONE; bannerBox.add_child(this._bannerLabel); this._updateBanner(); this._sessionMenuButton = new SessionMenuButton(); this._sessionMenuButton.connect('session-activated', (list, sessionId) => { this._greeter.call_select_session_sync(sessionId, null); }); this._sessionMenuButton.opacity = 0; this._sessionMenuButton.show(); this.add_child(this._sessionMenuButton); this._logoBin = new St.Widget({ style_class: 'login-dialog-logo-bin', x_align: Clutter.ActorAlign.CENTER, y_align: Clutter.ActorAlign.END, }); this._logoBin.connect('resource-scale-changed', () => { this._updateLogoTexture(this._textureCache, this._logoFile); }); this.add_child(this._logoBin); this._updateLogo(); this._userList.connect('activate', (userList, item) => { this._onUserListActivated(item); }); this._disableUserList = undefined; this._userListLoaded = false; this._realmManager = new Realmd.Manager(); this._realmManager.connectObject('login-format-changed', this._showRealmLoginHint.bind(this), this); this._getGreeterSessionProxy(); // If the user list is enabled, it should take key focus; make sure the // screen shield is initialized first to prevent it from stealing the // focus later Main.layoutManager.connectObject('startup-complete', this._updateDisableUserList.bind(this), this); } _getBannerAllocation(dialogBox) { let actorBox = new Clutter.ActorBox(); let [, , natWidth, natHeight] = this._bannerView.get_preferred_size(); let centerX = dialogBox.x1 + (dialogBox.x2 - dialogBox.x1) / 2; actorBox.x1 = Math.floor(centerX - natWidth / 2); actorBox.y1 = dialogBox.y1 + Main.layoutManager.panelBox.height; actorBox.x2 = actorBox.x1 + natWidth; actorBox.y2 = actorBox.y1 + natHeight; return actorBox; } _getLogoBinAllocation(dialogBox) { let actorBox = new Clutter.ActorBox(); let [, , natWidth, natHeight] = this._logoBin.get_preferred_size(); let centerX = dialogBox.x1 + (dialogBox.x2 - dialogBox.x1) / 2; actorBox.x1 = Math.floor(centerX - natWidth / 2); actorBox.y1 = dialogBox.y2 - natHeight; actorBox.x2 = actorBox.x1 + natWidth; actorBox.y2 = actorBox.y1 + natHeight; return actorBox; } _getSessionMenuButtonAllocation(dialogBox) { let actorBox = new Clutter.ActorBox(); let [, , natWidth, natHeight] = this._sessionMenuButton.get_preferred_size(); if (this.get_text_direction() === Clutter.TextDirection.RTL) actorBox.x1 = dialogBox.x1 + natWidth; else actorBox.x1 = dialogBox.x2 - (natWidth * 2); actorBox.y1 = dialogBox.y2 - (natHeight * 2); actorBox.x2 = actorBox.x1 + natWidth; actorBox.y2 = actorBox.y1 + natHeight; return actorBox; } _getCenterActorAllocation(dialogBox, actor) { let actorBox = new Clutter.ActorBox(); let [, , natWidth, natHeight] = actor.get_preferred_size(); let centerX = dialogBox.x1 + (dialogBox.x2 - dialogBox.x1) / 2; let centerY = dialogBox.y1 + (dialogBox.y2 - dialogBox.y1) / 2; natWidth = Math.min(natWidth, dialogBox.x2 - dialogBox.x1); natHeight = Math.min(natHeight, dialogBox.y2 - dialogBox.y1); actorBox.x1 = Math.floor(centerX - natWidth / 2); actorBox.y1 = Math.floor(centerY - natHeight / 2); actorBox.x2 = actorBox.x1 + natWidth; actorBox.y2 = actorBox.y1 + natHeight; return actorBox; } vfunc_allocate(dialogBox) { this.set_allocation(dialogBox); let themeNode = this.get_theme_node(); dialogBox = themeNode.get_content_box(dialogBox); let dialogWidth = dialogBox.x2 - dialogBox.x1; let dialogHeight = dialogBox.y2 - dialogBox.y1; // First find out what space the children require let bannerAllocation = null; let bannerHeight = 0; if (this._bannerView.visible) { bannerAllocation = this._getBannerAllocation(dialogBox); bannerHeight = bannerAllocation.y2 - bannerAllocation.y1; } let authPromptAllocation = null; let authPromptWidth = 0; if (this._authPrompt.visible) { authPromptAllocation = this._getCenterActorAllocation(dialogBox, this._authPrompt); authPromptWidth = authPromptAllocation.x2 - authPromptAllocation.x1; } let userSelectionAllocation = null; let userSelectionHeight = 0; if (this._userSelectionBox.visible) { userSelectionAllocation = this._getCenterActorAllocation(dialogBox, this._userSelectionBox); userSelectionHeight = userSelectionAllocation.y2 - userSelectionAllocation.y1; } let logoAllocation = null; let logoHeight = 0; if (this._logoBin.visible) { logoAllocation = this._getLogoBinAllocation(dialogBox); logoHeight = logoAllocation.y2 - logoAllocation.y1; } let sessionMenuButtonAllocation = null; if (this._sessionMenuButton.visible) sessionMenuButtonAllocation = this._getSessionMenuButtonAllocation(dialogBox); // Then figure out if we're overly constrained and need to // try a different layout, or if we have what extra space we // can hand out if (bannerAllocation) { let bannerSpace; if (authPromptAllocation) bannerSpace = authPromptAllocation.y1 - bannerAllocation.y1; else bannerSpace = 0; let leftOverYSpace = bannerSpace - bannerHeight; if (leftOverYSpace > 0) { // First figure out how much left over space is up top let leftOverTopSpace = leftOverYSpace / 2; // Then, shift the banner into the middle of that extra space let yShift = Math.floor(leftOverTopSpace / 2); bannerAllocation.y1 += yShift; bannerAllocation.y2 += yShift; } else { // Then figure out how much space there would be if we switched to a // wide layout with banner on one side and authprompt on the other. let leftOverXSpace = dialogWidth - authPromptWidth; // In a wide view, half of the available space goes to the banner, // and the other half goes to the margins. let wideBannerWidth = leftOverXSpace / 2; let wideSpacing = leftOverXSpace - wideBannerWidth; // If we do go with a wide layout, we need there to be at least enough // space for the banner and the auth prompt to be the same width, // so it doesn't look unbalanced. if (authPromptWidth > 0 && wideBannerWidth > authPromptWidth) { let centerX = dialogBox.x1 + dialogWidth / 2; let centerY = dialogBox.y1 + dialogHeight / 2; // A small portion of the spacing goes down the center of the // screen to help delimit the two columns of the wide view let centerGap = wideSpacing / 8; // place the banner along the left edge of the center margin bannerAllocation.x2 = Math.floor(centerX - centerGap / 2); bannerAllocation.x1 = Math.floor(bannerAllocation.x2 - wideBannerWidth); // figure out how tall it would like to be and try to accommodate // but don't let it get too close to the logo let [, wideBannerHeight] = this._bannerView.get_preferred_height(wideBannerWidth); let maxWideHeight = dialogHeight - 3 * logoHeight; wideBannerHeight = Math.min(maxWideHeight, wideBannerHeight); bannerAllocation.y1 = Math.floor(centerY - wideBannerHeight / 2); bannerAllocation.y2 = bannerAllocation.y1 + wideBannerHeight; // place the auth prompt along the right edge of the center margin authPromptAllocation.x1 = Math.floor(centerX + centerGap / 2); authPromptAllocation.x2 = authPromptAllocation.x1 + authPromptWidth; } else { // If we aren't going to do a wide view, then we need to limit // the height of the banner so it will present scrollbars // First figure out how much space there is without the banner leftOverYSpace += bannerHeight; // Then figure out how much of that space is up top let availableTopSpace = Math.floor(leftOverYSpace / 2); // Then give all of that space to the banner bannerAllocation.y2 = bannerAllocation.y1 + availableTopSpace; } } } else if (userSelectionAllocation) { // Grow the user list to fill the space let leftOverYSpace = dialogHeight - userSelectionHeight - logoHeight; if (leftOverYSpace > 0) { let topExpansion = Math.floor(leftOverYSpace / 2); let bottomExpansion = topExpansion; userSelectionAllocation.y1 -= topExpansion; userSelectionAllocation.y2 += bottomExpansion; } } // Finally hand out the allocations if (bannerAllocation) this._bannerView.allocate(bannerAllocation); if (authPromptAllocation) this._authPrompt.allocate(authPromptAllocation); if (userSelectionAllocation) this._userSelectionBox.allocate(userSelectionAllocation); if (logoAllocation) this._logoBin.allocate(logoAllocation); if (sessionMenuButtonAllocation) this._sessionMenuButton.allocate(sessionMenuButtonAllocation); } _ensureUserListLoaded() { if (!this._userManager.is_loaded) { this._userManager.connectObject('notify::is-loaded', () => { if (this._userManager.is_loaded) { this._userManager.disconnectObject(this); this._loadUserList(); } }); } else { let id = GLib.idle_add(GLib.PRIORITY_DEFAULT, this._loadUserList.bind(this)); GLib.Source.set_name_by_id(id, '[gnome-shell] _loadUserList'); } } _updateDisableUserList() { let disableUserList = this._settings.get_boolean(GdmUtil.DISABLE_USER_LIST_KEY); // Disable user list when there are no users. if (this._userListLoaded && this._userList.numItems() === 0) disableUserList = true; if (disableUserList !== this._disableUserList) { this._disableUserList = disableUserList; if (this._authPrompt.verificationStatus === AuthPrompt.AuthPromptStatus.NOT_VERIFYING) this._authPrompt.reset(); if (this._disableUserList && this._timedLoginUserListHold) this._timedLoginUserListHold.release(); } } _updateCancelButton() { let cancelVisible; // Hide the cancel button if the user list is disabled and we're asking for // a username if (this._authPrompt.verificationStatus === AuthPrompt.AuthPromptStatus.NOT_VERIFYING && this._disableUserList) cancelVisible = false; else cancelVisible = true; this._authPrompt.cancelButton.visible = cancelVisible; } _updateBanner() { let enabled = this._settings.get_boolean(GdmUtil.BANNER_MESSAGE_KEY); let text = this._settings.get_string(GdmUtil.BANNER_MESSAGE_TEXT_KEY); if (enabled && text) { this._bannerLabel.set_text(text); this._bannerLabel.show(); } else { this._bannerLabel.hide(); } } _fadeInBannerView() { this._bannerView.show(); this._bannerView.ease({ opacity: 255, duration: _FADE_ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, }); } _hideBannerView() { this._bannerView.remove_all_transitions(); this._bannerView.opacity = 0; this._bannerView.hide(); } _updateLogoTexture(cache, file) { if (this._logoFile && !this._logoFile.equal(file)) return; this._logoBin.destroy_all_children(); const resourceScale = this._logoBin.get_resource_scale(); if (this._logoFile) { const scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor; const texture = this._textureCache.load_file_async( this._logoFile, -1, -1, scaleFactor, resourceScale); this._logoBin.add_child(texture); } } _updateLogo() { let path = this._settings.get_string(GdmUtil.LOGO_KEY); this._logoFile = path ? Gio.file_new_for_path(path) : null; this._updateLogoTexture(this._textureCache, this._logoFile); } _onPrompted() { const showSessionMenu = this._shouldShowSessionMenuButton(); this._sessionMenuButton.updateSensitivity(showSessionMenu); this._sessionMenuButton.visible = showSessionMenu; this._showPrompt(); } _resetGreeterProxy() { if (GLib.getenv('GDM_GREETER_TEST') !== '1') { if (this._greeter) this._greeter.run_dispose(); this._greeter = this._gdmClient.get_greeter_sync(null); this._greeter.connectObject( 'default-session-name-changed', this._onDefaultSessionChanged.bind(this), 'session-opened', this._onSessionOpened.bind(this), 'timed-login-requested', this._onTimedLoginRequested.bind(this), this); } } _onReset(authPrompt, beginRequest) { this._resetGreeterProxy(); this._sessionMenuButton.updateSensitivity(true); const previousUser = this._user; this._user = null; if (this._nextSignalId) { this._authPrompt.disconnect(this._nextSignalId); this._nextSignalId = 0; } if (previousUser && beginRequest === AuthPrompt.BeginRequestType.REUSE_USERNAME) { this._user = previousUser; this._authPrompt.setUser(this._user); this._authPrompt.begin({userName: previousUser.get_user_name()}); } else if (beginRequest === AuthPrompt.BeginRequestType.PROVIDE_USERNAME) { if (!this._disableUserList) this._showUserList(); else this._hideUserListAskForUsernameAndBeginVerification(); } else { this._hideUserListAndBeginVerification(); } } _onDefaultSessionChanged(client, sessionId) { this._sessionMenuButton.setActiveSession(sessionId); } _shouldShowSessionMenuButton() { if (this._authPrompt.verificationStatus !== AuthPrompt.AuthPromptStatus.VERIFYING && this._authPrompt.verificationStatus !== AuthPrompt.AuthPromptStatus.VERIFICATION_FAILED) return false; if (this._user && this._user.is_loaded && this._user.is_logged_in()) return false; return true; } _showPrompt() { if (this._authPrompt.visible) return; this._authPrompt.opacity = 0; this._authPrompt.show(); this._authPrompt.ease({ opacity: 255, duration: _FADE_ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, }); this._fadeInBannerView(); } _showRealmLoginHint(realmManager, hint) { if (!hint) return; hint = hint.replace(/%U/g, 'user'); hint = hint.replace(/%D/g, 'DOMAIN'); hint = hint.replace(/%[^UD]/g, ''); // Translators: this message is shown below the username entry field // to clue the user in on how to login to the local network realm this._authPrompt.setMessage(_('(e.g., user or %s)').format(hint), GdmUtil.MessageType.HINT); } _askForUsernameAndBeginVerification() { this._authPrompt.setUser(null); this._authPrompt.setQuestion(_('Username')); this._showRealmLoginHint(this._realmManager.loginFormat); if (this._nextSignalId) this._authPrompt.disconnect(this._nextSignalId); this._nextSignalId = this._authPrompt.connect('next', () => { this._authPrompt.disconnect(this._nextSignalId); this._nextSignalId = 0; this._authPrompt.updateSensitivity(false); let answer = this._authPrompt.getAnswer(); this._user = this._userManager.get_user(answer); this._authPrompt.clear(); this._authPrompt.begin({userName: answer}); this._updateCancelButton(); }); this._updateCancelButton(); this._sessionMenuButton.updateSensitivity(false); this._authPrompt.updateSensitivity(true); this._showPrompt(); } _bindOpacity() { this._bindings = Main.layoutManager.uiGroup.get_children() .filter(c => c !== Main.layoutManager.screenShieldGroup) .map(c => this.bind_property('opacity', c, 'opacity', 0)); } _unbindOpacity() { this._bindings.forEach(b => b.unbind()); } _loginScreenSessionActivated() { if (this.opacity === 255 && this._authPrompt.verificationStatus === AuthPrompt.AuthPromptStatus.NOT_VERIFYING) return; if (this._authPrompt.verificationStatus !== AuthPrompt.AuthPromptStatus.NOT_VERIFYING) this._authPrompt.reset(); this._bindOpacity(); this.ease({ opacity: 255, duration: _FADE_ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => this._unbindOpacity(), }); } async _getGreeterSessionProxy() { const loginManager = LoginManager.getLoginManager(); this._greeterSessionProxy = await loginManager.getCurrentSessionProxy(); this._greeterSessionProxy?.connectObject('g-properties-changed', (proxy, properties) => { const activeChanged = !!properties.lookup_value('Active', null); if (activeChanged && proxy.Active) this._loginScreenSessionActivated(); }, this); } _notifyConflictingSessionDialogClosed() { const source = new MessageTray.getSystemSource(); this._conflictingSessionNotification = new MessageTray.Notification({ source, title: _('Login Attempt Timed Out'), body: _('Login took too long, please try again'), urgency: MessageTray.Urgency.CRITICAL, isTransient: true, }); this._conflictingSessionNotification.connect('destroy', () => { this._conflictingSessionNotification = null; }); source.addNotification(this._conflictingSessionNotification); } _showConflictingSessionDialog(serviceName, conflictingSession) { let conflictingSessionDialog = new ConflictingSessionDialog(conflictingSession, this._greeterSessionProxy); conflictingSessionDialog.connect('cancel', () => { this._authPrompt.reset(); conflictingSessionDialog.close(); }); conflictingSessionDialog.connect('force-stop', () => { this._greeter.call_stop_conflicting_session_sync(null); }); const loginManager = LoginManager.getLoginManager(); loginManager.connectObject('session-removed', (lm, sessionId) => { if (sessionId === conflictingSession.Id) { conflictingSessionDialog.close(); this._authPrompt.finish(() => this._startSession(serviceName)); } }, conflictingSessionDialog); const closeDialogTimeoutId = GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, _CONFLICTING_SESSION_DIALOG_TIMEOUT, () => { this._notifyConflictingSessionDialogClosed(); conflictingSessionDialog.close(); this._authPrompt.reset(); return GLib.SOURCE_REMOVE; }); conflictingSessionDialog.connect('closed', () => { GLib.source_remove(closeDialogTimeoutId); }); conflictingSessionDialog.open(); } _startSession(serviceName) { this._bindOpacity(); this.ease({ opacity: 0, duration: _FADE_ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => { this._greeter.call_start_session_when_ready_sync(serviceName, true, null); this._unbindOpacity(); }, }); } async _findConflictingSession(startingSessionId) { const loginManager = LoginManager.getLoginManager(); const sessions = await loginManager.listSessions(); const [, , startingSessionOwner, ,] = sessions.find(([id, , , ,]) => id === startingSessionId); for (const session of sessions.map(([id, , user, , path]) => ({id, user, path}))) { if (startingSessionId === session.id) continue; if (startingSessionOwner !== session.user) continue; const sessionProxy = loginManager.getSession(session.path); if (sessionProxy.Type !== 'wayland' && sessionProxy.Type !== 'x11') continue; if (sessionProxy.State !== 'active' && sessionProxy.State !== 'online') continue; return sessionProxy; } return null; } async _onSessionOpened(client, serviceName, sessionId) { try { if (sessionId) { const conflictingSession = await this._findConflictingSession(sessionId); if (conflictingSession) { this._showConflictingSessionDialog(serviceName, conflictingSession); return; } } this._authPrompt.finish(() => this._startSession(serviceName)); } catch (error) { logError(error, `Failed to start session '${sessionId}'`); this._authPrompt.reset(); } } _waitForItemForUser(userName) { let item = this._userList.getItemFromUserName(userName); if (item) return null; let hold = new Batch.Hold(); let signalId = this._userList.connect('item-added', () => { item = this._userList.getItemFromUserName(userName); if (item) hold.release(); }); hold.connect('release', () => this._userList.disconnect(signalId)); return hold; } _blockTimedLoginUntilIdle() { let hold = new Batch.Hold(); this._timedLoginIdleTimeOutId = GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, _TIMED_LOGIN_IDLE_THRESHOLD, () => { this._timedLoginIdleTimeOutId = 0; hold.release(); return GLib.SOURCE_REMOVE; }); GLib.Source.set_name_by_id(this._timedLoginIdleTimeOutId, '[gnome-shell] this._timedLoginIdleTimeOutId'); return hold; } _startTimedLogin(userName, delay) { let firstRun = true; // Cancel execution of old batch if (this._timedLoginBatch) { this._timedLoginBatch.cancel(); this._timedLoginBatch = null; firstRun = false; } // Reset previous idle-timeout if (this._timedLoginIdleTimeOutId) { GLib.source_remove(this._timedLoginIdleTimeOutId); this._timedLoginIdleTimeOutId = 0; } let loginItem = null; let animationTime; let tasks = [ () => { if (this._disableUserList) return null; this._timedLoginUserListHold = this._waitForItemForUser(userName); return this._timedLoginUserListHold; }, () => { this._timedLoginUserListHold = null; if (this._disableUserList) loginItem = this._authPrompt; else loginItem = this._userList.getItemFromUserName(userName); // If there is an animation running on the item, reset it. loginItem.hideTimedLoginIndicator(); }, () => { if (this._disableUserList) return; // If we're just starting out, start on the right item. if (!this._userManager.is_loaded) this._userList.jumpToItem(loginItem); }, () => { // This blocks the timed login animation until a few // seconds after the user stops interacting with the // login screen. // We skip this step if the timed login delay is very short. if (delay > _TIMED_LOGIN_IDLE_THRESHOLD) { animationTime = delay - _TIMED_LOGIN_IDLE_THRESHOLD; return this._blockTimedLoginUntilIdle(); } else { animationTime = delay; return null; } }, () => { if (this._disableUserList) return; // If idle timeout is done, make sure the timed login indicator is shown if (delay > _TIMED_LOGIN_IDLE_THRESHOLD && this._authPrompt.visible) this._authPrompt.cancel(); if (delay > _TIMED_LOGIN_IDLE_THRESHOLD || firstRun) { this._userList.scrollToItem(loginItem); loginItem.grab_key_focus(); } }, () => loginItem.showTimedLoginIndicator(animationTime), () => { this._timedLoginBatch = null; this._greeter.call_begin_auto_login_sync(userName, null); }, ]; this._timedLoginBatch = new Batch.ConsecutiveBatch(this, tasks); return this._timedLoginBatch.run(); } _onTimedLoginRequested(client, userName, seconds) { if (this._timedLoginBatch) return; this._startTimedLogin(userName, seconds); // Restart timed login on user interaction global.stage.connect('captured-event', (actor, event) => { if (event.type() === Clutter.EventType.KEY_PRESS || event.type() === Clutter.EventType.BUTTON_PRESS) this._startTimedLogin(userName, seconds); return Clutter.EVENT_PROPAGATE; }); } _setUserListExpanded(expanded) { this._userList.updateStyle(expanded); this._userSelectionBox.visible = expanded; } _hideUserList() { this._setUserListExpanded(false); if (this._userSelectionBox.visible) GdmUtil.cloneAndFadeOutActor(this._userSelectionBox); } _hideUserListAskForUsernameAndBeginVerification() { this._hideUserList(); this._askForUsernameAndBeginVerification(); } _hideUserListAndBeginVerification() { this._hideUserList(); this._authPrompt.begin(); } _showUserList() { this._ensureUserListLoaded(); this._authPrompt.hide(); this._hideBannerView(); this._sessionMenuButton.close(); this._sessionMenuButton.hide(); this._setUserListExpanded(true); this._notListedButton.show(); this._userList.grab_key_focus(); } _beginVerificationForItem(item) { this._authPrompt.setUser(item.user); let userName = item.user.get_user_name(); let hold = new Batch.Hold(); this._authPrompt.begin({userName, hold}); return hold; } _onUserListActivated(activatedItem) { this._user = activatedItem.user; this._updateCancelButton(); if (this._conflictingSessionNotification) this._conflictingSessionNotification.destroy(); const batch = new Batch.ConcurrentBatch(this, [ GdmUtil.cloneAndFadeOutActor(this._userSelectionBox), this._beginVerificationForItem(activatedItem), ]); batch.run(); } _onDestroy() { if (this._settings) { this._settings.run_dispose(); this._settings = null; } this._greeter = null; this._greeterSessionProxy = null; this._realmManager?.release(); this._realmManager = null; } _loadUserList() { if (this._userListLoaded) return GLib.SOURCE_REMOVE; this._userListLoaded = true; let users = this._userManager.list_users(); for (let i = 0; i < users.length; i++) this._userList.addUser(users[i]); this._updateDisableUserList(); this._userManager.connectObject( 'user-added', (userManager, user) => { this._userList.addUser(user); this._updateDisableUserList(); }, 'user-removed', (userManager, user) => { this._userList.removeUser(user); this._updateDisableUserList(); }, 'user-changed', (userManager, user) => { if (this._userList.containsUser(user) && user.locked) this._userList.removeUser(user); else if (!this._userList.containsUser(user) && !user.locked) this._userList.addUser(user); this._updateDisableUserList(); }, this); return GLib.SOURCE_REMOVE; } activate() { this._userList.grab_key_focus(); this.show(); } open() { Main.ctrlAltTabManager.addGroup(this, _('Login Window'), 'dialog-password-symbolic', {sortGroup: CtrlAltTab.SortGroup.MIDDLE}); this.activate(); this.opacity = 0; this._grab = Main.pushModal(global.stage, {actionMode: Shell.ActionMode.LOGIN_SCREEN}); this.ease({ opacity: 255, duration: 1000, mode: Clutter.AnimationMode.EASE_IN_QUAD, }); return true; } close() { Main.popModal(this._grab); this._grab = null; Main.ctrlAltTabManager.removeGroup(this); } cancel() { this._authPrompt.cancel(); } addCharacter(_unichar) { // Don't allow type ahead at the login screen } finish(onComplete) { this._authPrompt.finish(onComplete); } }); 07070100000170000081A40000000000000000000000016712993F0000058F000000000000000000000000000000000000002100000000gnome-shell-47.1/js/gdm/oVirt.jsimport Gio from 'gi://Gio'; import * as Credential from './credentialManager.js'; export const SERVICE_NAME = 'gdm-ovirtcred'; const OVirtCredentialsIface = ` `; const OVirtCredentialsInfo = Gio.DBusInterfaceInfo.new_for_xml(OVirtCredentialsIface); let _oVirtCredentialsManager = null; function OVirtCredentials() { var self = new Gio.DBusProxy({ g_connection: Gio.DBus.system, g_interface_name: OVirtCredentialsInfo.name, g_interface_info: OVirtCredentialsInfo, g_name: 'org.ovirt.vdsm.Credentials', g_object_path: '/org/ovirt/vdsm/Credentials', g_flags: Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES, }); self.init(null); return self; } class OVirtCredentialsManager extends Credential.CredentialManager { constructor() { super(SERVICE_NAME); this._credentials = new OVirtCredentials(); this._credentials.connectSignal('UserAuthenticated', (proxy, sender, [token]) => { this.token = token; }); } } /** * @returns {OVirtCredentialsManager} */ export function getOVirtCredentialsManager() { if (!_oVirtCredentialsManager) _oVirtCredentialsManager = new OVirtCredentialsManager(); return _oVirtCredentialsManager; } 07070100000171000081A40000000000000000000000016712993F00000C6B000000000000000000000000000000000000002200000000gnome-shell-47.1/js/gdm/realmd.jsimport Gio from 'gi://Gio'; import * as Signals from '../misc/signals.js'; import {loadInterfaceXML} from '../misc/fileUtils.js'; const ProviderIface = loadInterfaceXML('org.freedesktop.realmd.Provider'); const Provider = Gio.DBusProxy.makeProxyWrapper(ProviderIface); const ServiceIface = loadInterfaceXML('org.freedesktop.realmd.Service'); const Service = Gio.DBusProxy.makeProxyWrapper(ServiceIface); const RealmIface = loadInterfaceXML('org.freedesktop.realmd.Realm'); const Realm = Gio.DBusProxy.makeProxyWrapper(RealmIface); export class Manager extends Signals.EventEmitter { constructor() { super(); this._aggregateProvider = Provider(Gio.DBus.system, 'org.freedesktop.realmd', '/org/freedesktop/realmd', this._reloadRealms.bind(this)); this._realms = {}; this._loginFormat = null; this._aggregateProvider.connectObject('g-properties-changed', (proxy, properties) => { const realmsChanged = !!properties.lookup_value('Realms', null); if (realmsChanged) this._reloadRealms(); }, this); } _reloadRealms() { let realmPaths = this._aggregateProvider.Realms; if (!realmPaths) return; for (let i = 0; i < realmPaths.length; i++) { Realm(Gio.DBus.system, 'org.freedesktop.realmd', realmPaths[i], this._onRealmLoaded.bind(this)); } } _reloadRealm(realm) { if (!realm.Configured) { if (this._realms[realm.get_object_path()]) delete this._realms[realm.get_object_path()]; return; } this._realms[realm.get_object_path()] = realm; this._updateLoginFormat(); } _onRealmLoaded(realm, error) { if (error) return; this._reloadRealm(realm); realm.connect('g-properties-changed', (proxy, properties) => { const configuredChanged = !!properties.lookup_value('Configured', null); if (configuredChanged) this._reloadRealm(realm); }); } _updateLoginFormat() { let newLoginFormat; for (let realmPath in this._realms) { let realm = this._realms[realmPath]; if (realm.LoginFormats && realm.LoginFormats.length > 0) { newLoginFormat = realm.LoginFormats[0]; break; } } if (this._loginFormat !== newLoginFormat) { this._loginFormat = newLoginFormat; this.emit('login-format-changed', newLoginFormat); } } get loginFormat() { if (this._loginFormat) return this._loginFormat; this._updateLoginFormat(); return this._loginFormat; } release() { Service(Gio.DBus.system, 'org.freedesktop.realmd', '/org/freedesktop/realmd', service => service.ReleaseAsync().catch(logError)); this._aggregateProvider.disconnectObject(this); this._realms = { }; this._updateLoginFormat(); } } 07070100000172000081A40000000000000000000000016712993F00007F6E000000000000000000000000000000000000002000000000gnome-shell-47.1/js/gdm/util.jsimport Clutter from 'gi://Clutter'; import Gdm from 'gi://Gdm'; import Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import * as Signals from '../misc/signals.js'; import * as Batch from './batch.js'; import * as OVirt from './oVirt.js'; import * as Vmware from './vmware.js'; import * as Main from '../ui/main.js'; import {loadInterfaceXML} from '../misc/fileUtils.js'; import * as Params from '../misc/params.js'; import * as SmartcardManager from '../misc/smartcardManager.js'; const FprintManagerInfo = Gio.DBusInterfaceInfo.new_for_xml( loadInterfaceXML('net.reactivated.Fprint.Manager')); const FprintDeviceInfo = Gio.DBusInterfaceInfo.new_for_xml( loadInterfaceXML('net.reactivated.Fprint.Device')); Gio._promisify(Gdm.Client.prototype, 'open_reauthentication_channel'); Gio._promisify(Gdm.Client.prototype, 'get_user_verifier'); Gio._promisify(Gdm.UserVerifierProxy.prototype, 'call_begin_verification_for_user'); Gio._promisify(Gdm.UserVerifierProxy.prototype, 'call_begin_verification'); export const PASSWORD_SERVICE_NAME = 'gdm-password'; export const FINGERPRINT_SERVICE_NAME = 'gdm-fingerprint'; export const SMARTCARD_SERVICE_NAME = 'gdm-smartcard'; const CLONE_FADE_ANIMATION_TIME = 250; export const LOGIN_SCREEN_SCHEMA = 'org.gnome.login-screen'; export const PASSWORD_AUTHENTICATION_KEY = 'enable-password-authentication'; export const FINGERPRINT_AUTHENTICATION_KEY = 'enable-fingerprint-authentication'; export const SMARTCARD_AUTHENTICATION_KEY = 'enable-smartcard-authentication'; export const BANNER_MESSAGE_KEY = 'banner-message-enable'; export const BANNER_MESSAGE_TEXT_KEY = 'banner-message-text'; export const ALLOWED_FAILURES_KEY = 'allowed-failures'; export const LOGO_KEY = 'logo'; export const DISABLE_USER_LIST_KEY = 'disable-user-list'; // Give user 48ms to read each character of a PAM message const USER_READ_TIME = 48; const FINGERPRINT_SERVICE_PROXY_TIMEOUT = 5000; const FINGERPRINT_ERROR_TIMEOUT_WAIT = 15; /** * Keep messages in order by priority * * @enum {number} */ export const MessageType = { NONE: 0, HINT: 1, INFO: 2, ERROR: 3, }; const FingerprintReaderType = { NONE: 0, PRESS: 1, SWIPE: 2, }; /** * @param {Clutter.Actor} actor */ export function cloneAndFadeOutActor(actor) { // Immediately hide actor so its sibling can have its space // and position, but leave a non-reactive clone on-screen, // so from the user's point of view it smoothly fades away // and reveals its sibling. actor.hide(); const clone = new Clutter.Clone({ source: actor, reactive: false, }); Main.uiGroup.add_child(clone); let [x, y] = actor.get_transformed_position(); clone.set_position(x, y); let hold = new Batch.Hold(); clone.ease({ opacity: 0, duration: CLONE_FADE_ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => { clone.destroy(); hold.release(); }, }); return hold; } export class ShellUserVerifier extends Signals.EventEmitter { constructor(client, params) { super(); params = Params.parse(params, {reauthenticationOnly: false}); this._reauthOnly = params.reauthenticationOnly; this._client = client; this._cancellable = null; this._defaultService = null; this._preemptingService = null; this._fingerprintReaderType = FingerprintReaderType.NONE; this._messageQueue = []; this._messageQueueTimeoutId = 0; this._failCounter = 0; this._activeServices = new Set(); this._unavailableServices = new Set(); this._credentialManagers = {}; this.reauthenticating = false; this.smartcardDetected = false; this._settings = new Gio.Settings({schema_id: LOGIN_SCREEN_SCHEMA}); this._settings.connect('changed', () => this._onSettingsChanged()); this._updateEnabledServices(); this._updateDefaultService(); this.addCredentialManager(OVirt.SERVICE_NAME, OVirt.getOVirtCredentialsManager()); this.addCredentialManager(Vmware.SERVICE_NAME, Vmware.getVmwareCredentialsManager()); } addCredentialManager(serviceName, credentialManager) { if (this._credentialManagers[serviceName]) return; this._credentialManagers[serviceName] = credentialManager; if (credentialManager.token) { this._onCredentialManagerAuthenticated(credentialManager, credentialManager.token); } credentialManager.connectObject('user-authenticated', this._onCredentialManagerAuthenticated.bind(this), this); } removeCredentialManager(serviceName) { let credentialManager = this._credentialManagers[serviceName]; if (!credentialManager) return; credentialManager.disconnectObject(this); delete this._credentialManagers[serviceName]; } get hasPendingMessages() { return !!this._messageQueue.length; } get allowedFailures() { return this._settings.get_int(ALLOWED_FAILURES_KEY); } get currentMessage() { return this._messageQueue ? this._messageQueue[0] : null; } begin(userName, hold) { this._cancellable = new Gio.Cancellable(); this._hold = hold; this._userName = userName; this.reauthenticating = false; this._checkForFingerprintReader().catch(e => this._handleFingerprintError(e)); // If possible, reauthenticate an already running session, // so any session specific credentials get updated appropriately if (userName) this._openReauthenticationChannel(userName); else this._getUserVerifier(); } cancel() { if (this._cancellable) this._cancellable.cancel(); if (this._userVerifier) { this._userVerifier.call_cancel_sync(null); this.clear(); } } _clearUserVerifier() { if (this._userVerifier) { this._disconnectSignals(); this._userVerifier.run_dispose(); this._userVerifier = null; if (this._userVerifierChoiceList) { this._userVerifierChoiceList.run_dispose(); this._userVerifierChoiceList = null; } } } clear() { if (this._cancellable) { this._cancellable.cancel(); this._cancellable = null; } this._clearUserVerifier(); this._clearMessageQueue(); this._activeServices.clear(); } destroy() { this.cancel(); this._settings.run_dispose(); this._settings = null; this._smartcardManager?.disconnectObject(this); this._smartcardManager = null; this._fingerprintManager = null; for (let service in this._credentialManagers) this.removeCredentialManager(service); } selectChoice(serviceName, key) { this._userVerifierChoiceList.call_select_choice(serviceName, key, this._cancellable, null); } async answerQuery(serviceName, answer) { try { await this._handlePendingMessages(); this._userVerifier.call_answer_query(serviceName, answer, this._cancellable, null); } catch (e) { if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) logError(e); } } _getIntervalForMessage(message) { if (!message) return 0; // We probably could be smarter here return message.length * USER_READ_TIME; } finishMessageQueue() { if (!this.hasPendingMessages) return; this._messageQueue = []; this.emit('no-more-messages'); } increaseCurrentMessageTimeout(interval) { if (!this._messageQueueTimeoutId && interval > 0) this._currentMessageExtraInterval = interval; } _serviceHasPendingMessages(serviceName) { return this._messageQueue.some(m => m.serviceName === serviceName); } _filterServiceMessages(serviceName, messageType) { // This function allows to remove queued messages for the @serviceName // whose type has lower priority than @messageType, replacing them // with a null message that will lead to clearing the prompt once done. if (this._serviceHasPendingMessages(serviceName)) this._queuePriorityMessage(serviceName, null, messageType); } _queueMessageTimeout() { if (this._messageQueueTimeoutId !== 0) return; const message = this.currentMessage; delete this._currentMessageExtraInterval; this.emit('show-message', message.serviceName, message.text, message.type); this._messageQueueTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, message.interval + (this._currentMessageExtraInterval | 0), () => { this._messageQueueTimeoutId = 0; if (this._messageQueue.length > 1) { this._messageQueue.shift(); this._queueMessageTimeout(); } else { this.finishMessageQueue(); } return GLib.SOURCE_REMOVE; }); GLib.Source.set_name_by_id(this._messageQueueTimeoutId, '[gnome-shell] this._queueMessageTimeout'); } _queueMessage(serviceName, message, messageType) { let interval = this._getIntervalForMessage(message); this._messageQueue.push({serviceName, text: message, type: messageType, interval}); this._queueMessageTimeout(); } _queuePriorityMessage(serviceName, message, messageType) { const newQueue = this._messageQueue.filter(m => { if (m.serviceName !== serviceName || m.type >= messageType) return m.text !== message; return false; }); if (!newQueue.includes(this.currentMessage)) this._clearMessageQueue(); this._messageQueue = newQueue; this._queueMessage(serviceName, message, messageType); } _clearMessageQueue() { this.finishMessageQueue(); if (this._messageQueueTimeoutId !== 0) { GLib.source_remove(this._messageQueueTimeoutId); this._messageQueueTimeoutId = 0; } this.emit('show-message', null, null, MessageType.NONE); } async _initFingerprintManager() { if (this._fprintManager) return; const fprintManager = new Gio.DBusProxy({ g_connection: Gio.DBus.system, g_name: 'net.reactivated.Fprint', g_object_path: '/net/reactivated/Fprint/Manager', g_interface_name: FprintManagerInfo.name, g_interface_info: FprintManagerInfo, g_flags: Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES | Gio.DBusProxyFlags.DO_NOT_AUTO_START_AT_CONSTRUCTION | Gio.DBusProxyFlags.DO_NOT_CONNECT_SIGNALS, }); try { if (!this._getDetectedDefaultService()) { // Other authentication methods would have already been detected by // now as possibilities if they were available. // If we're here it means that FINGERPRINT_AUTHENTICATION_KEY is // true and so fingerprint authentication is our last potential // option, so go ahead a synchronously look for a fingerprint device // during startup or default service update. fprintManager.init(null); // Do not wait too much for fprintd to reply, as in case it hangs // we should fail early without having the shell to misbehave fprintManager.set_default_timeout(FINGERPRINT_SERVICE_PROXY_TIMEOUT); const [devicePath] = fprintManager.GetDefaultDeviceSync(); this._fprintManager = fprintManager; const fprintDeviceProxy = this._getFingerprintDeviceProxy(devicePath); fprintDeviceProxy.init(null); this._setFingerprintReaderType(fprintDeviceProxy['scan-type']); } else { // Ensure fingerprint service starts, but do not wait for it const cancellable = this._cancellable; await fprintManager.init_async(GLib.PRIORITY_DEFAULT, cancellable); await this._updateFingerprintReaderType(fprintManager, cancellable); this._fprintManager = fprintManager; } } catch (e) { this._handleFingerprintError(e); } } _getFingerprintDeviceProxy(devicePath) { return new Gio.DBusProxy({ g_connection: Gio.DBus.system, g_name: 'net.reactivated.Fprint', g_object_path: devicePath, g_interface_name: FprintDeviceInfo.name, g_interface_info: FprintDeviceInfo, g_flags: Gio.DBusProxyFlags.DO_NOT_CONNECT_SIGNALS, }); } _handleFingerprintError(e) { this._fingerprintReaderType = FingerprintReaderType.NONE; if (e instanceof GLib.Error) { if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) return; if (e.matches(Gio.DBusError, Gio.DBusError.SERVICE_UNKNOWN)) return; if (Gio.DBusError.is_remote_error(e) && Gio.DBusError.get_remote_error(e) === 'net.reactivated.Fprint.Error.NoSuchDevice') return; } logError(e, 'Failed to interact with fprintd service'); } async _checkForFingerprintReader() { if (!this._fprintManager) { this._updateDefaultService(); return; } if (this._fingerprintReaderType !== FingerprintReaderType.NONE) return; await this._updateFingerprintReaderType(this._fprintManager, this._cancellable); } async _updateFingerprintReaderType(fprintManager, cancellable) { // Wrappers don't support null cancellable, so let's ignore it in case const args = cancellable ? [cancellable] : []; const [devicePath] = await fprintManager.GetDefaultDeviceAsync(...args); const fprintDeviceProxy = this._getFingerprintDeviceProxy(devicePath); await fprintDeviceProxy.init_async(GLib.PRIORITY_DEFAULT, cancellable); this._setFingerprintReaderType(fprintDeviceProxy['scan-type']); this._updateDefaultService(); if (this._userVerifier && !this._activeServices.has(FINGERPRINT_SERVICE_NAME)) { if (!this._hold?.isAcquired()) this._hold = new Batch.Hold(); await this._maybeStartFingerprintVerification(); } } _setFingerprintReaderType(fprintDeviceType) { this._fingerprintReaderType = FingerprintReaderType[fprintDeviceType.toUpperCase()]; if (this._fingerprintReaderType === undefined) throw new Error(`Unexpected fingerprint device type '${fprintDeviceType}'`); } _onCredentialManagerAuthenticated(credentialManager, _token) { this._preemptingService = credentialManager.service; this.emit('credential-manager-authenticated'); } _initSmartcardManager() { if (this._smartcardManager) return; this._smartcardManager = SmartcardManager.getSmartcardManager(); // We check for smartcards right away, since an inserted smartcard // at startup should result in immediately initiating authentication. // This is different than fingerprint readers, where we only check them // after a user has been picked. this.smartcardDetected = false; this._checkForSmartcard(); this._smartcardManager.connectObject( 'smartcard-inserted', () => this._checkForSmartcard(), 'smartcard-removed', () => this._checkForSmartcard(), this); } _checkForSmartcard() { let smartcardDetected; if (!this._settings.get_boolean(SMARTCARD_AUTHENTICATION_KEY)) smartcardDetected = false; else if (this._reauthOnly) smartcardDetected = this._smartcardManager.hasInsertedLoginToken(); else smartcardDetected = this._smartcardManager.hasInsertedTokens(); if (smartcardDetected !== this.smartcardDetected) { this.smartcardDetected = smartcardDetected; if (this.smartcardDetected) this._preemptingService = SMARTCARD_SERVICE_NAME; else if (this._preemptingService === SMARTCARD_SERVICE_NAME) this._preemptingService = null; this.emit('smartcard-status-changed'); } } _reportInitError(where, error, serviceName) { logError(error, where); this._hold.release(); this._queueMessage(serviceName, _('Authentication error'), MessageType.ERROR); this._failCounter++; this._verificationFailed(serviceName, false); } async _openReauthenticationChannel(userName) { try { this._clearUserVerifier(); this._userVerifier = await this._client.open_reauthentication_channel( userName, this._cancellable); } catch (e) { if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) return; if (e.matches(Gio.DBusError, Gio.DBusError.ACCESS_DENIED) && !this._reauthOnly) { // Gdm emits org.freedesktop.DBus.Error.AccessDenied when there // is no session to reauthenticate. Fall back to performing // verification from this login session this._getUserVerifier(); return; } this._reportInitError('Failed to open reauthentication channel', e); return; } if (this._client.get_user_verifier_choice_list) this._userVerifierChoiceList = this._client.get_user_verifier_choice_list(); else this._userVerifierChoiceList = null; this.reauthenticating = true; this._connectSignals(); this._beginVerification(); this._hold.release(); } async _getUserVerifier() { try { this._clearUserVerifier(); this._userVerifier = await this._client.get_user_verifier(this._cancellable); } catch (e) { if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) return; this._reportInitError('Failed to obtain user verifier', e); return; } if (this._client.get_user_verifier_choice_list) this._userVerifierChoiceList = this._client.get_user_verifier_choice_list(); else this._userVerifierChoiceList = null; this._connectSignals(); this._beginVerification(); this._hold.release(); } _connectSignals() { this._disconnectSignals(); this._userVerifier.connectObject( 'info', this._onInfo.bind(this), 'problem', this._onProblem.bind(this), 'info-query', this._onInfoQuery.bind(this), 'secret-info-query', this._onSecretInfoQuery.bind(this), 'conversation-started', this._onConversationStarted.bind(this), 'conversation-stopped', this._onConversationStopped.bind(this), 'service-unavailable', this._onServiceUnavailable.bind(this), 'reset', this._onReset.bind(this), 'verification-complete', this._onVerificationComplete.bind(this), this); if (this._userVerifierChoiceList) { this._userVerifierChoiceList.connectObject('choice-query', this._onChoiceListQuery.bind(this), this); } } _disconnectSignals() { this._userVerifier?.disconnectObject(this); this._userVerifierChoiceList?.disconnectObject(this); } _getForegroundService() { if (this._preemptingService) return this._preemptingService; return this._defaultService; } serviceIsForeground(serviceName) { return serviceName === this._getForegroundService(); } foregroundServiceDeterminesUsername() { for (let serviceName in this._credentialManagers) { if (this.serviceIsForeground(serviceName)) return true; } return this.serviceIsForeground(SMARTCARD_SERVICE_NAME); } serviceIsDefault(serviceName) { return serviceName === this._defaultService; } serviceIsFingerprint(serviceName) { return this._fingerprintReaderType !== FingerprintReaderType.NONE && serviceName === FINGERPRINT_SERVICE_NAME; } _onSettingsChanged() { this._updateEnabledServices(); this._updateDefaultService(); } _updateEnabledServices() { let needsReset = false; if (this._settings.get_boolean(FINGERPRINT_AUTHENTICATION_KEY)) { this._initFingerprintManager().catch(logError); } else if (this._fingerprintManager) { this._fingerprintManager = null; this._fingerprintReaderType = FingerprintReaderType.NONE; if (this._activeServices.has(FINGERPRINT_SERVICE_NAME)) needsReset = true; } if (this._settings.get_boolean(SMARTCARD_AUTHENTICATION_KEY)) { this._initSmartcardManager(); } else if (this._smartcardManager) { this._smartcardManager.disconnectObject(this); this._smartcardManager = null; if (this._activeServices.has(SMARTCARD_SERVICE_NAME)) needsReset = true; } if (needsReset) this._cancelAndReset(); } _getDetectedDefaultService() { if (this._settings.get_boolean(PASSWORD_AUTHENTICATION_KEY)) return PASSWORD_SERVICE_NAME; else if (this._smartcardManager) return SMARTCARD_SERVICE_NAME; else if (this._fingerprintReaderType !== FingerprintReaderType.NONE) return FINGERPRINT_SERVICE_NAME; return null; } _updateDefaultService() { const oldDefaultService = this._defaultService; this._defaultService = this._getDetectedDefaultService(); if (!this._defaultService) { log('no authentication service is enabled, using password authentication'); this._defaultService = PASSWORD_SERVICE_NAME; } if (oldDefaultService && oldDefaultService !== this._defaultService && this._activeServices.has(oldDefaultService)) this._cancelAndReset(); } async _startService(serviceName) { this._hold.acquire(); try { this._activeServices.add(serviceName); if (this._userName) { await this._userVerifier.call_begin_verification_for_user( serviceName, this._userName, this._cancellable); } else { await this._userVerifier.call_begin_verification( serviceName, this._cancellable); } } catch (e) { this._activeServices.delete(serviceName); if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) return; if (!this.serviceIsForeground(serviceName)) { logError(e, `Failed to start ${serviceName} for ${this._userName}`); this._hold.release(); return; } this._reportInitError( this._userName ? `Failed to start ${serviceName} verification for user` : `Failed to start ${serviceName} verification`, e, serviceName); return; } this._hold.release(); } _beginVerification() { this._startService(this._getForegroundService()); this._maybeStartFingerprintVerification().catch(logError); } async _maybeStartFingerprintVerification() { if (this._userName && this._fingerprintReaderType !== FingerprintReaderType.NONE && !this.serviceIsForeground(FINGERPRINT_SERVICE_NAME)) await this._startService(FINGERPRINT_SERVICE_NAME); } _onChoiceListQuery(client, serviceName, promptMessage, list) { if (!this.serviceIsForeground(serviceName)) return; this.emit('show-choice-list', serviceName, promptMessage, list.deepUnpack()); } _onInfo(client, serviceName, info) { if (this.serviceIsForeground(serviceName)) { this._queueMessage(serviceName, info, MessageType.INFO); } else if (this.serviceIsFingerprint(serviceName)) { // We don't show fingerprint messages directly since it's // not the main auth service. Instead we use the messages // as a cue to display our own message. if (this._fingerprintReaderType === FingerprintReaderType.SWIPE) { // Translators: this message is shown below the password entry field // to indicate the user can swipe their finger on the fingerprint reader this._queueMessage(serviceName, _('(or swipe finger across reader)'), MessageType.HINT); } else { // Translators: this message is shown below the password entry field // to indicate the user can place their finger on the fingerprint reader instead this._queueMessage(serviceName, _('(or place finger on reader)'), MessageType.HINT); } } } _onProblem(client, serviceName, problem) { const isFingerprint = this.serviceIsFingerprint(serviceName); if (!this.serviceIsForeground(serviceName) && !isFingerprint) return; this._queuePriorityMessage(serviceName, problem, MessageType.ERROR); if (isFingerprint) { // pam_fprintd allows the user to retry multiple (maybe even infinite! // times before failing the authentication conversation. // We don't want this behavior to bypass the max-tries setting the user has set, // so we count the problem messages to know how many times the user has failed. // Once we hit the max number of failures we allow, it's time to failure the // conversation from our side. We can't do that right away, however, because // we may drop pending messages coming from pam_fprintd. In order to make sure // the user sees everything, we queue the failure up to get handled in the // near future, after we've finished up the current round of messages. this._failCounter++; if (!this._canRetry()) { if (this._fingerprintFailedId) GLib.source_remove(this._fingerprintFailedId); const cancellable = this._cancellable; this._fingerprintFailedId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, FINGERPRINT_ERROR_TIMEOUT_WAIT, () => { this._fingerprintFailedId = 0; if (!cancellable.is_cancelled()) this._verificationFailed(serviceName, false); return GLib.SOURCE_REMOVE; }); } } } _onInfoQuery(client, serviceName, question) { if (!this.serviceIsForeground(serviceName)) return; this.emit('ask-question', serviceName, question, false); } _onSecretInfoQuery(client, serviceName, secretQuestion) { if (!this.serviceIsForeground(serviceName)) return; let token = null; if (this._credentialManagers[serviceName]) token = this._credentialManagers[serviceName].token; if (token) { this.answerQuery(serviceName, token); return; } this.emit('ask-question', serviceName, secretQuestion, true); } _onReset() { // Clear previous attempts to authenticate this._failCounter = 0; this._activeServices.clear(); this._unavailableServices.clear(); this._updateDefaultService(); this.emit('reset'); } _onVerificationComplete(_client, serviceName) { const isCredentialManager = !!this._credentialManagers[serviceName]; const isForeground = this.serviceIsForeground(serviceName); if (isCredentialManager && isForeground) { this._credentialManagers[serviceName].token = null; this._preemptingService = null; } this.emit('verification-complete'); } _cancelAndReset() { this.cancel(); this._onReset(); } _retry(serviceName) { this._hold = new Batch.Hold(); this._connectSignals(); this._startService(serviceName); } _canRetry() { return this._userName && (this._reauthOnly || this._failCounter < this.allowedFailures); } async _verificationFailed(serviceName, shouldRetry) { if (serviceName === FINGERPRINT_SERVICE_NAME) { if (this._fingerprintFailedId) GLib.source_remove(this._fingerprintFailedId); } // For Not Listed / enterprise logins, immediately reset // the dialog // Otherwise, when in login mode we allow ALLOWED_FAILURES attempts. // After that, we go back to the welcome screen. this._filterServiceMessages(serviceName, MessageType.ERROR); const doneTrying = !shouldRetry || !this._canRetry(); this.emit('verification-failed', serviceName, !doneTrying); try { if (doneTrying) { this._disconnectSignals(); await this._handlePendingMessages(); this._cancelAndReset(); } else { await this._handlePendingMessages(); this._retry(serviceName); } } catch (e) { if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) logError(e); } } _handlePendingMessages() { if (!this.hasPendingMessages) return Promise.resolve(); const cancellable = this._cancellable; return new Promise((resolve, reject) => { let signalId = this.connect('no-more-messages', () => { this.disconnect(signalId); if (cancellable.is_cancelled()) reject(new GLib.Error(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED, 'Operation was cancelled')); else resolve(); }); }); } _onServiceUnavailable(_client, serviceName, errorMessage) { this._unavailableServices.add(serviceName); if (!errorMessage) return; if (this.serviceIsForeground(serviceName) || this.serviceIsFingerprint(serviceName)) this._queueMessage(serviceName, errorMessage, MessageType.ERROR); } _onConversationStarted(client, serviceName) { this._activeServices.add(serviceName); } _onConversationStopped(client, serviceName) { this._activeServices.delete(serviceName); // If the login failed with the preauthenticated oVirt credentials // then discard the credentials and revert to default authentication // mechanism. const isCredentialManager = !!this._credentialManagers[serviceName]; const isForeground = this.serviceIsForeground(serviceName); if (isCredentialManager && isForeground) { this._credentialManagers[serviceName].token = null; this._preemptingService = null; this._verificationFailed(serviceName, false); return; } this._filterServiceMessages(serviceName, MessageType.ERROR); if (this._unavailableServices.has(serviceName)) return; // if the password service fails, then cancel everything. // But if, e.g., fingerprint fails, still give // password authentication a chance to succeed if (isForeground) this._failCounter++; this._verificationFailed(serviceName, true); } } 07070100000173000081A40000000000000000000000016712993F000005E0000000000000000000000000000000000000002200000000gnome-shell-47.1/js/gdm/vmware.jsimport Gio from 'gi://Gio'; import * as Credential from './credentialManager.js'; const dbusPath = '/org/vmware/viewagent/Credentials'; const dbusInterface = 'org.vmware.viewagent.Credentials'; export const SERVICE_NAME = 'gdm-vmwcred'; const VmwareCredentialsIface = ` `; const VmwareCredentialsInfo = Gio.DBusInterfaceInfo.new_for_xml(VmwareCredentialsIface); let _vmwareCredentialsManager = null; function VmwareCredentials() { var self = new Gio.DBusProxy({ g_connection: Gio.DBus.session, g_interface_name: VmwareCredentialsInfo.name, g_interface_info: VmwareCredentialsInfo, g_name: dbusInterface, g_object_path: dbusPath, g_flags: Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES, }); self.init(null); return self; } class VmwareCredentialsManager extends Credential.CredentialManager { constructor() { super(SERVICE_NAME); this._credentials = new VmwareCredentials(); this._credentials.connectSignal('UserAuthenticated', (proxy, sender, [token]) => { this.token = token; }); } } /** * @returns {VmwareCredentialsManager} */ export function getVmwareCredentialsManager() { if (!_vmwareCredentialsManager) _vmwareCredentialsManager = new VmwareCredentialsManager(); return _vmwareCredentialsManager; } 07070100000174000081A40000000000000000000000016712993F000015D1000000000000000000000000000000000000002F00000000gnome-shell-47.1/js/js-resources.gresource.xml gdm/authList.js gdm/authPrompt.js gdm/batch.js gdm/credentialManager.js gdm/loginDialog.js gdm/oVirt.js gdm/realmd.js gdm/util.js gdm/vmware.js extensions/extension.js extensions/sharedInternals.js misc/animationUtils.js misc/config.js misc/dateUtils.js misc/dbusErrors.js misc/dbusUtils.js misc/dependencies.js misc/errorUtils.js misc/extensionUtils.js misc/fileUtils.js misc/gnomeSession.js misc/history.js misc/ibusManager.js misc/inputMethod.js misc/introspect.js misc/jsParse.js misc/keyboardManager.js misc/loginManager.js misc/modemManager.js misc/objectManager.js misc/params.js misc/parentalControlsManager.js misc/permissionStore.js misc/signals.js misc/signalTracker.js misc/smartcardManager.js misc/systemActions.js misc/util.js misc/weather.js ui/accessDialog.js ui/altTab.js ui/animation.js ui/appDisplay.js ui/appFavorites.js ui/appMenu.js ui/audioDeviceSelection.js ui/background.js ui/backgroundMenu.js ui/barLevel.js ui/boxpointer.js ui/calendar.js ui/checkBox.js ui/closeDialog.js ui/ctrlAltTab.js ui/dash.js ui/dateMenu.js ui/dialog.js ui/dnd.js ui/edgeDragAction.js ui/endSessionDialog.js ui/environment.js ui/extensionDownloader.js ui/extensionSystem.js ui/focusCaretTracker.js ui/grabHelper.js ui/ibusCandidatePopup.js ui/iconGrid.js ui/inhibitShortcutsDialog.js ui/init.js ui/kbdA11yDialog.js ui/keyboard.js ui/layout.js ui/lightbox.js ui/listModes.js ui/locatePointer.js ui/lookingGlass.js ui/magnifier.js ui/main.js ui/messageList.js ui/messageTray.js ui/modalDialog.js ui/mpris.js ui/notificationDaemon.js ui/osdMonitorLabeler.js ui/osdWindow.js ui/overview.js ui/overviewControls.js ui/padOsd.js ui/pageIndicators.js ui/panel.js ui/panelMenu.js ui/pointerA11yTimeout.js ui/pointerWatcher.js ui/popupMenu.js ui/quickSettings.js ui/remoteSearch.js ui/ripples.js ui/runDialog.js ui/screenShield.js ui/screenshot.js ui/scripting.js ui/search.js ui/searchController.js ui/sessionMode.js ui/shellDBus.js ui/shellEntry.js ui/shellMountOperation.js ui/slider.js ui/swipeTracker.js ui/switcherPopup.js ui/switchMonitor.js ui/unlockDialog.js ui/userWidget.js ui/welcomeDialog.js ui/windowAttentionHandler.js ui/windowManager.js ui/windowMenu.js ui/windowPreview.js ui/workspace.js ui/workspaceAnimation.js ui/workspacesView.js ui/workspaceSwitcherPopup.js ui/workspaceThumbnail.js ui/xdndHandler.js ui/components.js ui/components/automountManager.js ui/components/autorunManager.js ui/components/keyring.js ui/components/networkAgent.js ui/components/polkitAgent.js ui/status/accessibility.js ui/status/autoRotate.js ui/status/backgroundApps.js ui/status/backlight.js ui/status/bluetooth.js ui/status/brightness.js ui/status/camera.js ui/status/darkMode.js ui/status/dwellClick.js ui/status/keyboard.js ui/status/location.js ui/status/network.js ui/status/nightLight.js ui/status/powerProfiles.js ui/status/remoteAccess.js ui/status/rfkill.js ui/status/system.js ui/status/thunderbolt.js ui/status/volume.js 07070100000175000081A40000000000000000000000016712993F000001E9000000000000000000000000000000000000002000000000gnome-shell-47.1/js/meson.buildsubdir('misc') subdir('dbusServices') js_resources = gnome.compile_resources( 'js-resources', 'js-resources.gresource.xml', source_dir: ['.', meson.current_build_dir()], c_name: 'shell_js_resources', dependencies: [config_js] ) if have_portal_helper portal_resources = gnome.compile_resources( 'portal-resources', 'portal-resources.gresource.xml', source_dir: ['.', meson.current_build_dir()], c_name: 'portal_js_resources', dependencies: [config_js] ) endif 07070100000176000041ED0000000000000000000000026712993F00000000000000000000000000000000000000000000001900000000gnome-shell-47.1/js/misc07070100000177000081A40000000000000000000000016712993F00000E54000000000000000000000000000000000000002B00000000gnome-shell-47.1/js/misc/animationUtils.jsimport St from 'gi://St'; import Clutter from 'gi://Clutter'; import * as Params from './params.js'; const SCROLL_TIME = 100; const WIGGLE_OFFSET = 6; const WIGGLE_DURATION = 65; const N_WIGGLES = 3; /** * adjustAnimationTime: * * @param {number} msecs - time in milliseconds * @param {object} params - optional parameters * @param {boolean=} params.animationRequired - whether to ignore the enable-animations setting * * Adjust `msecs` to account for St's enable-animations * and slow-down-factor settings */ export function adjustAnimationTime(msecs, params) { params = Params.parse(params, { animationRequired: false, }); const settings = St.Settings.get(); if (!settings.enable_animations && !params.animationRequired) return 0; return settings.slow_down_factor * msecs; } /** * Animate scrolling a scrollview until an actor is visible. * * @param {St.ScrollView} scrollView - the scroll view the actor is in * @param {Clutter.Actor} actor - the actor */ export function ensureActorVisibleInScrollView(scrollView, actor) { const adjustment = scrollView.vadjustment; let [value, lower_, upper, stepIncrement_, pageIncrement_, pageSize] = adjustment.get_values(); let offset = 0; const vfade = scrollView.get_effect('fade'); if (vfade) offset = vfade.fade_margins.top; let box = actor.get_allocation_box(); let y1 = box.y1, y2 = box.y2; let parent = actor.get_parent(); while (parent !== scrollView) { if (!parent) throw new Error('actor not in scroll view'); box = parent.get_allocation_box(); y1 += box.y1; y2 += box.y1; parent = parent.get_parent(); } if (y1 < value + offset) value = Math.max(0, y1 - offset); else if (y2 > value + pageSize - offset) value = Math.min(upper, y2 + offset - pageSize); else return; adjustment.ease(value, { mode: Clutter.AnimationMode.EASE_OUT_QUAD, duration: SCROLL_TIME, }); } /** * "Wiggles" a clutter actor. A "wiggle" is an animation the moves an actor * back and forth on the X axis a specified amount of times. * * @param {Clutter.Actor} actor - an actor to animate * @param {object} params - options for the animation * @param {number} params.offset - the offset to move the actor by per-wiggle * @param {number} params.duration - the amount of time to move the actor per-wiggle * @param {number} params.wiggleCount - the number of times to wiggle the actor */ export function wiggle(actor, params) { if (!St.Settings.get().enable_animations) return; params = Params.parse(params, { offset: WIGGLE_OFFSET, duration: WIGGLE_DURATION, wiggleCount: N_WIGGLES, }); actor.translation_x = 0; // Accelerate before wiggling actor.ease({ translation_x: -params.offset, duration: params.duration, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => { // Wiggle actor.ease({ translation_x: params.offset, duration: params.duration, mode: Clutter.AnimationMode.LINEAR, repeatCount: params.wiggleCount, autoReverse: true, onComplete: () => { // Decelerate and return to the original position actor.ease({ translation_x: 0, duration: params.duration, mode: Clutter.AnimationMode.EASE_IN_QUAD, }); }, }); }, }); } 07070100000178000081A40000000000000000000000016712993F00000379000000000000000000000000000000000000002600000000gnome-shell-47.1/js/misc/config.js.inconst pkg = imports.package; /* The name of this package (not localized) */ export const PACKAGE_NAME = '@PACKAGE_NAME@'; /* The version of this package */ export const PACKAGE_VERSION = '@PACKAGE_VERSION@'; /* 1 if networkmanager is available, 0 otherwise */ export const HAVE_NETWORKMANAGER = @HAVE_NETWORKMANAGER@; /* 1 if portal helper is enabled, 0 otherwise */ export const HAVE_PORTAL_HELPER = @HAVE_PORTAL_HELPER@; /* gettext package */ export const GETTEXT_PACKAGE = '@GETTEXT_PACKAGE@'; /* locale dir */ export const LOCALEDIR = '@datadir@/locale'; /* other standard directories */ export const LIBEXECDIR = '@libexecdir@'; export const PKGDATADIR = '@datadir@/@PACKAGE_NAME@'; /* g-i package versions */ export const LIBMUTTER_API_VERSION = '@LIBMUTTER_API_VERSION@'; export const HAVE_BLUETOOTH = pkg.checkSymbol('GnomeBluetooth', '3.0', 'Client.default_adapter_state'); 07070100000179000081A40000000000000000000000016712993F00001E52000000000000000000000000000000000000002600000000gnome-shell-47.1/js/misc/dateUtils.jsimport * as System from 'system'; import * as Gettext from 'gettext'; import GLib from 'gi://GLib'; import Gio from 'gi://Gio'; import Shell from 'gi://Shell'; import * as Params from './params.js'; let _desktopSettings = null; let _localTimeZone = null; /** * @private * * @param {Date} date a Date object * @returns {GLib.DateTime | null} */ function _convertJSDateToGLibDateTime(date) { if (_localTimeZone === null) _localTimeZone = GLib.TimeZone.new_local(); const dt = GLib.DateTime.new(_localTimeZone, date.getFullYear(), date.getMonth() + 1, date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds()); return dt; } /** * Formats a Date object according to a C sprintf-style string using * the cached local timezone. * * @param {Date} date a Date object * @param {string} format a format String for the date * @returns {string} */ export function formatDateWithCFormatString(date, format) { const dt = _convertJSDateToGLibDateTime(date); return dt?.format(format) ?? ''; } /** * Formats a time span string representing the * date passed in to the current time. * * @param {Date} date the start of the time span * @returns {string} */ export function formatTimeSpan(date) { if (_localTimeZone === null) _localTimeZone = GLib.TimeZone.new_local(); const now = GLib.DateTime.new_now(_localTimeZone); const timespan = now.difference(date); const minutesAgo = timespan / GLib.TIME_SPAN_MINUTE; const hoursAgo = timespan / GLib.TIME_SPAN_HOUR; const daysAgo = timespan / GLib.TIME_SPAN_DAY; const weeksAgo = daysAgo / 7; const monthsAgo = daysAgo / 30; const yearsAgo = weeksAgo / 52; if (minutesAgo < 5) return _('Just now'); if (hoursAgo < 1) { return Gettext.ngettext( '%d minute ago', '%d minutes ago', minutesAgo ).format(minutesAgo); } if (daysAgo < 1) { return Gettext.ngettext( '%d hour ago', '%d hours ago', hoursAgo ).format(hoursAgo); } if (daysAgo < 2) return _('Yesterday'); if (daysAgo < 15) { return Gettext.ngettext( '%d day ago', '%d days ago', daysAgo ).format(daysAgo); } if (weeksAgo < 8) { return Gettext.ngettext( '%d week ago', '%d weeks ago', weeksAgo ).format(weeksAgo); } if (yearsAgo < 1) { return Gettext.ngettext( '%d month ago', '%d months ago', monthsAgo ).format(monthsAgo); } return Gettext.ngettext( '%d year ago', '%d years ago', yearsAgo ).format(yearsAgo); } /** * Formats a date time string based on style parameters * * @param {GLib.DateTime | Date} time a Date object * @param {object} [params] style parameters for the output string * @param {boolean=} params.timeOnly whether the string should only contain the time (no date) * @param {boolean=} params.ampm whether to include the "am" or "pm" in the string * @returns {string} */ export function formatTime(time, params) { let date; // HACK: The built-in Date type sucks at timezones, which we need for the // world clock; it's often more convenient though, so allow either // Date or GLib.DateTime as parameter if (time instanceof Date) date = _convertJSDateToGLibDateTime(time); else date = time; if (!date) return ''; // _localTimeZone is defined in _convertJSDateToGLibDateTime const now = GLib.DateTime.new_now(_localTimeZone); const daysAgo = now.difference(date) / (24 * 60 * 60 * 1000 * 1000); let format; if (_desktopSettings == null) _desktopSettings = new Gio.Settings({schema_id: 'org.gnome.desktop.interface'}); const clockFormat = _desktopSettings.get_string('clock-format'); params = Params.parse(params, { timeOnly: false, ampm: true, }); if (clockFormat === '24h') { // Show only the time if date is on today if (daysAgo < 1 || params.timeOnly) /* Translators: Time in 24h format */ format = N_('%H\u2236%M'); // Show the word "Yesterday" and time if date is on yesterday else if (daysAgo < 2) /* Translators: this is the word "Yesterday" followed by a time string in 24h format. i.e. "Yesterday, 14:30" */ // xgettext:no-c-format format = N_('Yesterday, %H\u2236%M'); // Show a week day and time if date is in the last week else if (daysAgo < 7) /* Translators: this is the week day name followed by a time string in 24h format. i.e. "Monday, 14:30" */ // xgettext:no-c-format format = N_('%A, %H\u2236%M'); else if (date.get_year() === now.get_year()) /* Translators: this is the month name and day number followed by a time string in 24h format. i.e. "May 25, 14:30" */ // xgettext:no-c-format format = N_('%B %-d, %H\u2236%M'); else /* Translators: this is the month name, day number, year number followed by a time string in 24h format. i.e. "May 25 2012, 14:30" */ // xgettext:no-c-format format = N_('%B %-d %Y, %H\u2236%M'); } else { // Show only the time if date is on today if (daysAgo < 1 || params.timeOnly) // eslint-disable-line no-lonely-if /* Translators: Time in 12h format */ format = N_('%l\u2236%M %p'); // Show the word "Yesterday" and time if date is on yesterday else if (daysAgo < 2) /* Translators: this is the word "Yesterday" followed by a time string in 12h format. i.e. "Yesterday, 2:30 pm" */ // xgettext:no-c-format format = N_('Yesterday, %l\u2236%M %p'); // Show a week day and time if date is in the last week else if (daysAgo < 7) /* Translators: this is the week day name followed by a time string in 12h format. i.e. "Monday, 2:30 pm" */ // xgettext:no-c-format format = N_('%A, %l\u2236%M %p'); else if (date.get_year() === now.get_year()) /* Translators: this is the month name and day number followed by a time string in 12h format. i.e. "May 25, 2:30 pm" */ // xgettext:no-c-format format = N_('%B %-d, %l\u2236%M %p'); else /* Translators: this is the month name, day number, year number followed by a time string in 12h format. i.e. "May 25 2012, 2:30 pm"*/ // xgettext:no-c-format format = N_('%B %-d %Y, %l\u2236%M %p'); } // Time in short 12h format, without the equivalent of "AM" or "PM"; used // when it is clear from the context if (!params.ampm) format = format.replace(/\s*%p/g, ''); let formattedTime = date.format(Shell.util_translate_time_string(format)); // prepend LTR-mark to colon/ratio to force a text direction on times return formattedTime.replace(/([:\u2236])/g, '\u200e$1'); } /** * Update the timezone used by JavaScript Date objects and other * date utilities */ export function clearCachedLocalTimeZone() { // SpiderMonkey caches the time zone so we must explicitly clear it // before we can update the calendar, see // https://bugzilla.gnome.org/show_bug.cgi?id=678507 System.clearDateCaches(); _localTimeZone = GLib.TimeZone.new_local(); } 0707010000017A000081A40000000000000000000000016712993F00000635000000000000000000000000000000000000002700000000gnome-shell-47.1/js/misc/dbusErrors.jsimport GLib from 'gi://GLib'; import Gio from 'gi://Gio'; function camelcase(str) { const words = str.toLowerCase().split('_'); return words.map(w => `${w.at(0).toUpperCase()}${w.substring(1)}`).join(''); } function decamelcase(str) { return str.replace(/(.)([A-Z])/g, '$1-$2'); } function registerErrorDomain(domain, errorEnum, prefix = 'org.gnome.Shell') { const domainName = `shell-${decamelcase(domain).toLowerCase()}-error`; const quark = GLib.quark_from_string(domainName); for (const [name, code] of Object.entries(errorEnum)) { Gio.dbus_error_register_error(quark, code, `${prefix}.${domain}.Error.${camelcase(name)}`); } return quark; } export const ModalDialogError = { UNKNOWN_TYPE: 0, GRAB_FAILED: 1, }; export const ModalDialogErrors = registerErrorDomain('ModalDialog', ModalDialogError); export const NotificationError = { INVALID_APP: 0, }; export const NotificationErrors = registerErrorDomain('Notifications', NotificationError, 'org.gtk'); export const ExtensionError = { INFO_DOWNLOAD_FAILED: 0, DOWNLOAD_FAILED: 1, EXTRACT_FAILED: 2, ENABLE_FAILED: 3, NOT_ALLOWED: 4, }; export const ExtensionErrors = registerErrorDomain('Extensions', ExtensionError); export const ScreencastError = { ALL_PIPELINES_FAILED: 0, PIPELINE_ERROR: 1, SAVE_TO_DISK_DISABLED: 2, ALREADY_RECORDING: 3, RECORDER_ERROR: 4, SERVICE_CRASH: 5, OUT_OF_DISK_SPACE: 6, }; export const ScreencastErrors = registerErrorDomain('Screencast', ScreencastError); 0707010000017B000081A40000000000000000000000016712993F00000796000000000000000000000000000000000000002600000000gnome-shell-47.1/js/misc/dbusUtils.jsimport Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import * as Config from './config.js'; let _ifaceResource = null; /** * @private */ function _ensureIfaceResource() { if (_ifaceResource) return; // don't use global.datadir so the method is usable from tests/tools let dir = GLib.getenv('GNOME_SHELL_DATADIR') || Config.PKGDATADIR; let path = `${dir}/gnome-shell-dbus-interfaces.gresource`; _ifaceResource = Gio.Resource.load(path); _ifaceResource._register(); } /** * @param {string} iface the interface name * @returns {string | null} the XML string or null if it is not found */ export function loadInterfaceXML(iface) { _ensureIfaceResource(); let uri = `resource:///org/gnome/shell/dbus-interfaces/${iface}.xml`; let f = Gio.File.new_for_uri(uri); try { let [ok_, bytes] = f.load_contents(null); return new TextDecoder().decode(bytes); } catch (e) { log(`Failed to load D-Bus interface ${iface}`); } return null; } /** * @param {string} iface the interface name * @param {string} ifaceFile the interface filename * @returns {string | null} the XML string or null if it is not found */ export function loadSubInterfaceXML(iface, ifaceFile) { let xml = loadInterfaceXML(ifaceFile); if (!xml) return null; let ifaceStartTag = ``; let ifaceStopTag = ''; let ifaceStartIndex = xml.indexOf(ifaceStartTag); let ifaceEndIndex = xml.indexOf(ifaceStopTag, ifaceStartIndex + 1) + ifaceStopTag.length; let xmlHeader = '\n' + '\n'; let xmlFooter = ''; return ( xmlHeader + xml.substring(ifaceStartIndex, ifaceEndIndex) + xmlFooter); } 0707010000017C000081A40000000000000000000000016712993F0000072F000000000000000000000000000000000000002900000000gnome-shell-47.1/js/misc/dependencies.jsimport gi from 'gi'; /** * Required dependencies */ import 'gi://AccountsService?version=1.0'; import 'gi://Atk?version=1.0'; import 'gi://Atspi?version=2.0'; import 'gi://Gcr?version=4'; import 'gi://Gdk?version=4.0'; import 'gi://Gdm?version=1.0'; import 'gi://Geoclue?version=2.0'; import 'gi://Gio?version=2.0'; import 'gi://GioUnix?version=2.0'; import 'gi://GDesktopEnums?version=3.0'; import 'gi://GdkPixbuf?version=2.0'; import 'gi://GnomeBG?version=4.0'; import 'gi://GnomeDesktop?version=4.0'; import 'gi://Graphene?version=1.0'; import 'gi://GWeather?version=4.0'; import 'gi://IBus?version=1.0'; import 'gi://Pango?version=1.0'; import 'gi://Polkit?version=1.0'; import 'gi://PolkitAgent?version=1.0'; import 'gi://Rsvg?version=2.0'; import 'gi://Soup?version=3.0'; import 'gi://UPowerGlib?version=1.0'; import * as Config from './config.js'; // Meta-related dependencies use a shared version // from the compile-time config. gi.require('Meta', Config.LIBMUTTER_API_VERSION); gi.require('Clutter', Config.LIBMUTTER_API_VERSION); gi.require('Cogl', Config.LIBMUTTER_API_VERSION); gi.require('Shell', Config.LIBMUTTER_API_VERSION); gi.require('St', Config.LIBMUTTER_API_VERSION); /** * Compile-time optional dependencies */ if (Config.HAVE_BLUETOOTH) gi.require('GnomeBluetooth', '3.0'); else console.debug('GNOME Shell was compiled without GNOME Bluetooth support'); if (Config.HAVE_NETWORKMANAGER) { gi.require('NM', '1.0'); gi.require('NMA4', '1.0'); } else { console.debug('GNOME Shell was compiled without Network Manager support'); } /** * Runtime optional dependencies */ try { // Malcontent is optional, so catch any errors loading it gi.require('Malcontent', '0'); } catch { console.debug('Malcontent is not available, parental controls integration will be disabled.'); } 0707010000017D000081A40000000000000000000000016712993F000007AA000000000000000000000000000000000000002700000000gnome-shell-47.1/js/misc/errorUtils.js// Common code for displaying errors to the user in various dialogs function formatSyntaxErrorLocation(error) { const {fileName = '', lineNumber = 0, columnNumber = 0} = error; return ` @ ${fileName}:${lineNumber}:${columnNumber}`; } function formatExceptionStack(error) { const {stack} = error; if (!stack) return '\n\n(No stack trace)'; const indentedStack = stack.split('\n').map(line => ` ${line}`).join('\n'); return `\n\nStack trace:\n${indentedStack}`; } function formatExceptionWithCause(error, seenCauses, showStack) { let fmt = showStack ? formatExceptionStack(error) : ''; const {cause} = error; if (!cause) return fmt; fmt += `\nCaused by: ${cause}`; if (cause !== null && typeof cause === 'object') { if (seenCauses.has(cause)) return fmt; // avoid recursion seenCauses.add(cause); fmt += formatExceptionWithCause(cause, seenCauses); } return fmt; } /** * Formats a thrown exception into a string, including the stack, taking the * location where a SyntaxError was thrown into account. * * @param {Error} error The error to format * @param {object} options Formatting options * @param {boolean} options.showStack Whether to show the stack trace (default * true) * @returns {string} The formatted string */ export function formatError(error, {showStack = true} = {}) { try { let fmt = `${error}`; if (error === null || typeof error !== 'object') return fmt; if (error instanceof SyntaxError) { fmt += formatSyntaxErrorLocation(error); if (showStack) fmt += formatExceptionStack(error); return fmt; } const seenCauses = new Set([error]); fmt += formatExceptionWithCause(error, seenCauses, showStack); return fmt; } catch (e) { return `(could not display error: ${e})`; } } 0707010000017E000081A40000000000000000000000016712993F0000086B000000000000000000000000000000000000002B00000000gnome-shell-47.1/js/misc/extensionUtils.js// Common utils for the extension system, the extensions D-Bus service // and the Extensions app import Gio from 'gi://Gio'; import GLib from 'gi://GLib'; export const ExtensionType = { SYSTEM: 1, PER_USER: 2, }; /** * @enum {number} */ export const ExtensionState = { ACTIVE: 1, INACTIVE: 2, ERROR: 3, OUT_OF_DATE: 4, DOWNLOADING: 5, INITIALIZED: 6, DEACTIVATING: 7, ACTIVATING: 8, // Used as an error state for operations on unknown extensions, // should never be in a real extensionMeta object. UNINSTALLED: 99, }; const SERIALIZED_PROPERTIES = [ 'type', 'state', 'enabled', 'path', 'error', 'hasPrefs', 'hasUpdate', 'canChange', ]; /** * Serialize extension into an object that can be used * in a vardict {GLib.Variant} * * @param {object} extension - an extension object * @returns {object} */ export function serializeExtension(extension) { let obj = {...extension.metadata}; SERIALIZED_PROPERTIES.forEach(prop => { obj[prop] = extension[prop]; }); let res = {}; for (let key in obj) { let val = obj[key]; let type; switch (typeof val) { case 'string': type = 's'; break; case 'number': type = 'd'; break; case 'boolean': type = 'b'; break; default: continue; } res[key] = GLib.Variant.new(type, val); } return res; } /** * Deserialize an unpacked variant into an extension object * * @param {object} variant - an unpacked {GLib.Variant} * @returns {object} */ export function deserializeExtension(variant) { let res = {metadata: {}}; for (let prop in variant) { let val = variant[prop].unpack(); if (SERIALIZED_PROPERTIES.includes(prop)) res[prop] = val; else res.metadata[prop] = val; } // add the 2 additional properties to create a valid extension object, as createExtensionObject() res.uuid = res.metadata.uuid; res.dir = Gio.File.new_for_path(res.path); return res; } 0707010000017F000081A40000000000000000000000016712993F00000B8C000000000000000000000000000000000000002600000000gnome-shell-47.1/js/misc/fileUtils.jsimport GLib from 'gi://GLib'; import Gio from 'gi://Gio'; export {loadInterfaceXML} from './dbusUtils.js'; /** * @typedef {object} SubdirInfo * @property {Gio.File} dir the file object for the subdir * @property {Gio.FileInfo} info the file descriptor for the subdir */ /** * @param {string} subdir the subdirectory to search within the data directories * @param {boolean} includeUserDir whether the user's data directory should also be searched in addition * to the system data directories * @returns {Generator} a generator which yields file info for subdirectories named * `subdir` within data directories */ export function* collectFromDatadirs(subdir, includeUserDir) { let dataDirs = GLib.get_system_data_dirs(); if (includeUserDir) dataDirs.unshift(GLib.get_user_data_dir()); for (let i = 0; i < dataDirs.length; i++) { let path = GLib.build_filenamev([dataDirs[i], 'gnome-shell', subdir]); let dir = Gio.File.new_for_path(path); let fileEnum; try { fileEnum = dir.enumerate_children('standard::name,standard::type', Gio.FileQueryInfoFlags.NONE, null); } catch (e) { fileEnum = null; } if (fileEnum != null) { let info; while ((info = fileEnum.next_file(null))) yield {dir: fileEnum.get_child(info), info}; } } } /** * @param {Gio.File} dir * @param {boolean} deleteParent */ export function recursivelyDeleteDir(dir, deleteParent) { let children = dir.enumerate_children('standard::name,standard::type', Gio.FileQueryInfoFlags.NOFOLLOW_SYMLINKS, null); let info; while ((info = children.next_file(null)) != null) { let type = info.get_file_type(); let child = dir.get_child(info.get_name()); if (type === Gio.FileType.REGULAR) child.delete(null); else if (type === Gio.FileType.DIRECTORY) recursivelyDeleteDir(child, true); } if (deleteParent) dir.delete(null); } /** * @param {Gio.File} srcDir * @param {Gio.File} destDir */ export function recursivelyMoveDir(srcDir, destDir) { let children = srcDir.enumerate_children('standard::name,standard::type', Gio.FileQueryInfoFlags.NOFOLLOW_SYMLINKS, null); if (!destDir.query_exists(null)) destDir.make_directory_with_parents(null); let info; while ((info = children.next_file(null)) != null) { let type = info.get_file_type(); let srcChild = srcDir.get_child(info.get_name()); let destChild = destDir.get_child(info.get_name()); if (type === Gio.FileType.REGULAR) srcChild.move(destChild, Gio.FileCopyFlags.NONE, null, null); else if (type === Gio.FileType.DIRECTORY) recursivelyMoveDir(srcChild, destChild); } } 07070100000180000081A40000000000000000000000016712993F00000795000000000000000000000000000000000000002900000000gnome-shell-47.1/js/misc/gnomeSession.jsimport Gio from 'gi://Gio'; import {loadInterfaceXML} from './fileUtils.js'; const PresenceIface = loadInterfaceXML('org.gnome.SessionManager.Presence'); /** @enum {number} */ export const PresenceStatus = { AVAILABLE: 0, INVISIBLE: 1, BUSY: 2, IDLE: 3, }; const PresenceProxy = Gio.DBusProxy.makeProxyWrapper(PresenceIface); /** * @param {Function} initCallback * @param {Gio.Cancellable} cancellable * @returns {Gio.DBusProxy} */ export function Presence(initCallback, cancellable) { return new PresenceProxy(Gio.DBus.session, 'org.gnome.SessionManager', '/org/gnome/SessionManager/Presence', initCallback, cancellable); } // Note inhibitors are immutable objects, so they don't // change at runtime (changes always come in the form // of new inhibitors) const InhibitorIface = loadInterfaceXML('org.gnome.SessionManager.Inhibitor'); const InhibitorProxy = Gio.DBusProxy.makeProxyWrapper(InhibitorIface); /** * @param {string} objectPath * @param {Function} initCallback * @param {Gio.Cancellable} cancellable * @returns {Gio.DBusProxy} */ export function Inhibitor(objectPath, initCallback, cancellable) { return new InhibitorProxy(Gio.DBus.session, 'org.gnome.SessionManager', objectPath, initCallback, cancellable); } // Not the full interface, only the methods we use const SessionManagerIface = loadInterfaceXML('org.gnome.SessionManager'); const SessionManagerProxy = Gio.DBusProxy.makeProxyWrapper(SessionManagerIface); /** * @param {Function} initCallback * @param {Gio.Cancellable} cancellable * @returns {Gio.DBusProxy} */ export function SessionManager(initCallback, cancellable) { return new SessionManagerProxy(Gio.DBus.session, 'org.gnome.SessionManager', '/org/gnome/SessionManager', initCallback, cancellable); } export const InhibitFlags = { LOGOUT: 1 << 0, SWITCH: 1 << 1, SUSPEND: 1 << 2, IDLE: 1 << 3, AUTOMOUNT: 1 << 4, }; 07070100000181000081A40000000000000000000000016712993F00000BFB000000000000000000000000000000000000002400000000gnome-shell-47.1/js/misc/history.jsimport * as Signals from './signals.js'; import Clutter from 'gi://Clutter'; import * as Params from './params.js'; const DEFAULT_LIMIT = 512; export class HistoryManager extends Signals.EventEmitter { constructor(params) { super(); params = Params.parse(params, { gsettingsKey: null, limit: DEFAULT_LIMIT, entry: null, }); this._key = params.gsettingsKey; this._limit = params.limit; this._historyIndex = 0; if (this._key) { this._history = global.settings.get_strv(this._key); global.settings.connect(`changed::${this._key}`, this._historyChanged.bind(this)); } else { this._history = []; } this._entry = params.entry; if (this._entry) { this._entry.connect('key-press-event', this._onEntryKeyPress.bind(this)); } } _historyChanged() { this._history = global.settings.get_strv(this._key); this._historyIndex = this._history.length; } _setPrevItem(text) { if (this._historyIndex <= 0) return false; if (text) this._history[this._historyIndex] = text; this._historyIndex--; this._indexChanged(); return true; } _setNextItem(text) { if (this._historyIndex >= this._history.length) return false; if (text) this._history[this._historyIndex] = text; this._historyIndex++; this._indexChanged(); return true; } lastItem() { if (this._historyIndex !== this._history.length) { this._historyIndex = this._history.length; this._indexChanged(); } return this._historyIndex ? this._history[this._historyIndex - 1] : null; } addItem(input) { input = input.trim(); if (input && (this._history.length === 0 || this._history[this._history.length - 1] !== input)) { this._history = this._history.filter(entry => entry !== input); this._history.push(input); this._save(); } this._historyIndex = this._history.length; return input; // trimmed } _onEntryKeyPress(entry, event) { let symbol = event.get_key_symbol(); if (symbol === Clutter.KEY_Up) return this._setPrevItem(entry.get_text().trim()); else if (symbol === Clutter.KEY_Down) return this._setNextItem(entry.get_text().trim()); return Clutter.EVENT_PROPAGATE; } _indexChanged() { let current = this._history[this._historyIndex] || ''; this.emit('changed', current); if (this._entry) this._entry.set_text(current); } _save() { if (this._history.length > this._limit) this._history.splice(0, this._history.length - this._limit); if (this._key) global.settings.set_strv(this._key, this._history); } } 07070100000182000081A40000000000000000000000016712993F00002E91000000000000000000000000000000000000002800000000gnome-shell-47.1/js/misc/ibusManager.jsimport Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import IBus from 'gi://IBus'; import Meta from 'gi://Meta'; import Shell from 'gi://Shell'; import * as Signals from './signals.js'; import * as BoxPointer from '../ui/boxpointer.js'; import * as IBusCandidatePopup from '../ui/ibusCandidatePopup.js'; Gio._promisify(IBus.Bus.prototype, 'list_engines_async', 'list_engines_async_finish'); Gio._promisify(IBus.Bus.prototype, 'request_name_async', 'request_name_async_finish'); Gio._promisify(IBus.Bus.prototype, 'get_global_engine_async', 'get_global_engine_async_finish'); Gio._promisify(IBus.Bus.prototype, 'set_global_engine_async', 'set_global_engine_async_finish'); Gio._promisify(Shell, 'util_systemd_unit_exists'); // Ensure runtime version matches _checkIBusVersion(1, 5, 2); let _ibusManager = null; const IBUS_SYSTEMD_SERVICE = 'org.freedesktop.IBus.session.GNOME.service'; const TYPING_BOOSTER_ENGINE = 'typing-booster'; function _checkIBusVersion(requiredMajor, requiredMinor, requiredMicro) { if ((IBus.MAJOR_VERSION > requiredMajor) || (IBus.MAJOR_VERSION === requiredMajor && IBus.MINOR_VERSION > requiredMinor) || (IBus.MAJOR_VERSION === requiredMajor && IBus.MINOR_VERSION === requiredMinor && IBus.MICRO_VERSION >= requiredMicro)) return; throw new Error(`Found IBus version ${ IBus.MAJOR_VERSION}.${IBus.MINOR_VERSION}.${IBus.MINOR_VERSION} ` + `but required is ${requiredMajor}.${requiredMinor}.${requiredMicro}`); } /** * @returns {IBusManager} */ export function getIBusManager() { if (_ibusManager == null) _ibusManager = new IBusManager(); return _ibusManager; } class IBusManager extends Signals.EventEmitter { constructor() { super(); IBus.init(); // This is the longest we'll keep the keyboard frozen until an input // source is active. this._MAX_INPUT_SOURCE_ACTIVATION_TIME = 4000; // ms this._PRELOAD_ENGINES_DELAY_TIME = 30; // sec this._candidatePopup = new IBusCandidatePopup.CandidatePopup(); this._panelService = null; this._engines = new Map(); this._ready = false; this._registerPropertiesId = 0; this._currentEngineName = null; this._preloadEnginesId = 0; this._ibus = IBus.Bus.new_async(); this._ibus.connect('connected', this._onConnected.bind(this)); this._ibus.connect('disconnected', this._clear.bind(this)); // Need to set this to get 'global-engine-changed' emitions this._ibus.set_watch_ibus_signal(true); this._ibus.connect('global-engine-changed', this._engineChanged.bind(this)); this._queueSpawn(); } async _ibusSystemdServiceExists() { if (this._ibusIsSystemdService) return true; try { this._ibusIsSystemdService = await Shell.util_systemd_unit_exists( IBUS_SYSTEMD_SERVICE, null); } catch (e) { this._ibusIsSystemdService = false; } return this._ibusIsSystemdService; } async _queueSpawn() { const isSystemdService = await this._ibusSystemdServiceExists(); if (!isSystemdService) this._spawn(Meta.is_wayland_compositor() ? [] : ['--xim']); } _tryAppendEnv(env, varname) { const value = GLib.getenv(varname); if (value) env.push(`${varname}=${value}`); } _spawn(extraArgs = []) { try { const cmdLine = ['ibus-daemon', '--panel', 'disable', ...extraArgs]; const launchContext = global.create_app_launch_context(0, -1); const env = launchContext.get_environment(); // Use DO_NOT_REAP_CHILD to avoid adouble-fork internally // since ibus-daemon refuses to start with init as its parent. const pid = Shell.util_spawn_async( null, cmdLine, env, GLib.SpawnFlags.SEARCH_PATH | GLib.SpawnFlags.DO_NOT_REAP_CHILD); GLib.child_watch_add( GLib.PRIORITY_DEFAULT, pid, () => GLib.spawn_close_pid(pid) ); } catch (e) { log(`Failed to launch ibus-daemon: ${e.message}`); } } async restartDaemon(extraArgs = []) { const isSystemdService = await this._ibusSystemdServiceExists(); if (!isSystemdService) this._spawn(['-r', ...extraArgs]); } _clear() { if (this._cancellable) { this._cancellable.cancel(); this._cancellable = null; } if (this._preloadEnginesId) { GLib.source_remove(this._preloadEnginesId); this._preloadEnginesId = 0; } if (this._panelService) this._panelService.destroy(); this._panelService = null; this._candidatePopup.setPanelService(null); this._engines.clear(); this._ready = false; this._registerPropertiesId = 0; this._currentEngineName = null; this.emit('ready', false); } _onConnected() { this._cancellable = new Gio.Cancellable(); this._initEngines(); this._initPanelService(); } async _initEngines() { try { const enginesList = await this._ibus.list_engines_async(-1, this._cancellable); for (let i = 0; i < enginesList.length; ++i) { let name = enginesList[i].get_name(); this._engines.set(name, enginesList[i]); } this._updateReadiness(); } catch (e) { if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) return; logError(e); this._clear(); } } async _initPanelService() { try { await this._ibus.request_name_async(IBus.SERVICE_PANEL, IBus.BusNameFlag.REPLACE_EXISTING, -1, this._cancellable); } catch (e) { if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) { logError(e); this._clear(); } return; } this._panelService = new IBus.PanelService({ connection: this._ibus.get_connection(), object_path: IBus.PATH_PANEL, }); this._candidatePopup.setPanelService(this._panelService); this._panelService.connect('update-property', this._updateProperty.bind(this)); this._panelService.connect('set-cursor-location', (ps, x, y, w, h) => { let cursorLocation = {x, y, width: w, height: h}; this.emit('set-cursor-location', cursorLocation); }); this._panelService.connect('focus-in', (panel, path) => { if (!GLib.str_has_suffix(path, '/InputContext_1')) this.emit('focus-in'); }); this._panelService.connect('focus-out', () => this.emit('focus-out')); try { // IBus versions older than 1.5.10 have a bug which // causes spurious set-content-type emissions when // switching input focus that temporarily lose purpose // and hints defeating its intended semantics and // confusing users. We thus don't use it in that case. _checkIBusVersion(1, 5, 10); this._panelService.connect('set-content-type', this._setContentType.bind(this)); } catch (e) { } this._updateReadiness(); try { // If an engine is already active we need to get its properties const engine = await this._ibus.get_global_engine_async(-1, this._cancellable); this._engineChanged(this._ibus, engine.get_name()); } catch (e) { } } _updateReadiness() { this._ready = this._engines.size > 0 && this._panelService != null; this.emit('ready', this._ready); } _engineChanged(bus, engineName) { if (!this._ready) return; this._currentEngineName = engineName; this._candidatePopup.close(BoxPointer.PopupAnimation.NONE); if (this._registerPropertiesId !== 0) return; this._registerPropertiesId = this._panelService.connect('register-properties', (p, props) => { if (!props.get(0)) return; this._panelService.disconnect(this._registerPropertiesId); this._registerPropertiesId = 0; this.emit('properties-registered', this._currentEngineName, props); }); } _updateProperty(panel, prop) { this.emit('property-updated', this._currentEngineName, prop); } _setContentType(panel, purpose, hints) { this.emit('set-content-type', purpose, hints); } activateProperty(key, state) { this._panelService.property_activate(key, state); } getEngineDesc(id) { if (!this._ready || !this._engines.has(id)) return null; return this._engines.get(id); } async _setEngine(id) { // Send id even if id == this._currentEngineName // because 'properties-registered' signal can be emitted // while this._ibusSources == null on a lock screen. if (!this._ready) return; try { await this._ibus.set_global_engine_async(id, this._MAX_INPUT_SOURCE_ACTIVATION_TIME, this._cancellable); } catch (e) { if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) logError(e); } } async setEngine(id) { if (this._oskCompletion) await this._maybeUpdateCompletion(id); else await this._setEngine(id); } async _maybeUpdateCompletion(id) { if (!this._oskCompletion) return; this._preOskEngine = id; const isXkb = id.startsWith('xkb:'); /* Non xkb engines conflict with completion */ if (!isXkb) await this.setCompletionEnabled(false); } preloadEngines(ids) { if (!this._ibus || !this._ready) return; if (!ids.includes(TYPING_BOOSTER_ENGINE)) ids.push(TYPING_BOOSTER_ENGINE); if (this._preloadEnginesId !== 0) { GLib.source_remove(this._preloadEnginesId); this._preloadEnginesId = 0; } this._preloadEnginesId = GLib.timeout_add_seconds( GLib.PRIORITY_DEFAULT, this._PRELOAD_ENGINES_DELAY_TIME, () => { this._ibus.preload_engines_async( ids, -1, this._cancellable, null); this._preloadEnginesId = 0; return GLib.SOURCE_REMOVE; }); } /** * @param {boolean} enabled - whether completion should be enabled * * @returns {boolean} - whether completion are enabled */ async setCompletionEnabled(enabled) { /* Needs typing-booster available */ if (enabled && !this._engines.has(TYPING_BOOSTER_ENGINE)) return false; /* Can do only on xkb engines */ if (enabled && !this._currentEngineName.startsWith('xkb:')) return false; if (this._oskCompletion === enabled) return enabled; this._oskCompletion = enabled; if (enabled) { this._preOskEngine = this._currentEngineName; await this._setEngine(TYPING_BOOSTER_ENGINE); } else if (this._preOskEngine) { await this._setEngine(this._preOskEngine); delete this._preOskEngine; } return this._oskCompletion; } } 07070100000183000081A40000000000000000000000016712993F00003315000000000000000000000000000000000000002800000000gnome-shell-47.1/js/misc/inputMethod.jsimport Clutter from 'gi://Clutter'; import GLib from 'gi://GLib'; import Gio from 'gi://Gio'; import GObject from 'gi://GObject'; import IBus from 'gi://IBus'; import * as Keyboard from '../ui/status/keyboard.js'; import * as Main from '../ui/main.js'; Gio._promisify(IBus.Bus.prototype, 'create_input_context_async', 'create_input_context_async_finish'); Gio._promisify(IBus.InputContext.prototype, 'process_key_event_async', 'process_key_event_async_finish'); const HIDE_PANEL_TIME = 50; const HAVE_REQUIRE_SURROUNDING_TEXT = GObject.signal_lookup('require-surrounding-text', IBus.InputContext); export const InputMethod = GObject.registerClass({ Signals: { 'surrounding-text-set': {}, }, }, class InputMethod extends Clutter.InputMethod { _init() { super._init(); this._hints = 0; this._purpose = 0; this._currentFocus = null; this._preeditStr = ''; this._preeditPos = 0; this._preeditAnchor = 0; this._preeditVisible = false; this._hidePanelId = 0; this._ibus = IBus.Bus.new_async(); this._ibus.connect('connected', this._onConnected.bind(this)); this._ibus.connect('disconnected', this._clear.bind(this)); this.connect('notify::can-show-preedit', this._updateCapabilities.bind(this)); this._inputSourceManager = Keyboard.getInputSourceManager(); this._sourceChangedId = this._inputSourceManager.connect('current-source-changed', this._onSourceChanged.bind(this)); this._currentSource = this._inputSourceManager.currentSource; if (this._ibus.is_connected()) this._onConnected(); } get currentFocus() { return this._currentFocus; } _updateCapabilities() { let caps = IBus.Capabilite.PREEDIT_TEXT | IBus.Capabilite.FOCUS | IBus.Capabilite.SURROUNDING_TEXT; if (Main.keyboard.visible) caps |= IBus.Capabilite.OSK; if (this._context) this._context.set_capabilities(caps); } _onSourceChanged() { this._currentSource = this._inputSourceManager.currentSource; } async _onConnected() { this._cancellable = new Gio.Cancellable(); try { this._context = await this._ibus.create_input_context_async( 'gnome-shell', -1, this._cancellable); } catch (e) { if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) { logError(e); this._clear(); } return; } this._context.set_client_commit_preedit(true); this._context.connect('commit-text', this._onCommitText.bind(this)); this._context.connect('delete-surrounding-text', this._onDeleteSurroundingText.bind(this)); this._context.connect('update-preedit-text-with-mode', this._onUpdatePreeditText.bind(this)); this._context.connect('show-preedit-text', this._onShowPreeditText.bind(this)); this._context.connect('hide-preedit-text', this._onHidePreeditText.bind(this)); this._context.connect('forward-key-event', this._onForwardKeyEvent.bind(this)); this._context.connect('destroy', this._clear.bind(this)); if (HAVE_REQUIRE_SURROUNDING_TEXT) this._context.connect('require-surrounding-text', this._onRequireSurroundingText.bind(this)); Main.keyboard.connectObject('visibility-changed', () => this._updateCapabilities()); this._updateCapabilities(); } _clear() { Main.keyboard.disconnectObject(this); if (this._cancellable) { this._cancellable.cancel(); this._cancellable = null; } this._context = null; this._hints = 0; this._purpose = 0; this._preeditStr = ''; this._preeditPos = 0; this._preeditAnchor = 0; this._preeditVisible = false; } _emitRequestSurrounding() { if (this._context.needs_surrounding_text()) this.emit('request-surrounding'); } _onCommitText(_context, text) { this.commit(text.get_text()); } _onRequireSurroundingText(_context) { this.request_surrounding(); } _onDeleteSurroundingText(_context, offset, nchars) { try { this.delete_surrounding(offset, nchars); } catch (e) { // We may get out of bounds for negative offset on older mutter this.delete_surrounding(0, nchars + offset); } } _onUpdatePreeditText(_context, text, pos, visible, mode) { if (text == null) return; let preedit = text.get_text(); if (preedit === '') preedit = null; const anchor = pos; if (visible) this.set_preedit_text(preedit, pos, anchor, mode); else if (this._preeditVisible) this.set_preedit_text(null, pos, anchor, mode); this._preeditStr = preedit; this._preeditPos = pos; this._preeditAnchor = anchor; this._preeditVisible = visible; this._preeditCommitMode = mode; } _onShowPreeditText() { this._preeditVisible = true; this.set_preedit_text( this._preeditStr, this._preeditPos, this._preeditAnchor, this._preeditCommitMode); } _onHidePreeditText() { this.set_preedit_text( null, this._preeditPos, this._preeditAnchor, this._preeditCommitMode); this._preeditVisible = false; } _onForwardKeyEvent(_context, keyval, keycode, state) { let press = (state & IBus.ModifierType.RELEASE_MASK) === 0; state &= ~IBus.ModifierType.RELEASE_MASK; let curEvent = Clutter.get_current_event(); let time; if (curEvent) time = curEvent.get_time(); else time = global.display.get_current_time_roundtrip(); this.forward_key(keyval, keycode + 8, state & Clutter.ModifierType.MODIFIER_MASK, time, press); } vfunc_focus_in(focus) { this._currentFocus = focus; if (this._context) { this.update(); this._context.focus_in(); this._emitRequestSurrounding(); } if (this._hidePanelId) { GLib.source_remove(this._hidePanelId); this._hidePanelId = 0; } } vfunc_focus_out() { this._currentFocus = null; if (this._context) { this._fullReset(); this._context.focus_out(); } if (this._preeditStr && this._preeditVisible) { // Unset any preedit text this.set_preedit_text(null, 0, 0, this._preeditCommitMode); this._preeditStr = null; } this._hidePanelId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, HIDE_PANEL_TIME, () => { this.set_input_panel_state(Clutter.InputPanelState.OFF); this._hidePanelId = 0; return GLib.SOURCE_REMOVE; }); } vfunc_reset() { if (this._context) { this._context.reset(); this._emitRequestSurrounding(); } this._surroundingText = null; this._surroundingTextCursor = null; this._surroundingTextAnchor = null; this._preeditStr = null; } vfunc_set_cursor_location(rect) { if (this._context) { this._cursorRect = { x: rect.get_x(), y: rect.get_y(), width: rect.get_width(), height: rect.get_height(), }; this._context.set_cursor_location( this._cursorRect.x, this._cursorRect.y, this._cursorRect.width, this._cursorRect.height); this._emitRequestSurrounding(); } } vfunc_set_surrounding(text, cursor, anchor) { this._surroundingText = text; this._surroundingTextCursor = cursor; this._surroundingTextAnchor = anchor; this.emit('surrounding-text-set'); if (!this._context || (!text && text !== '')) return; let ibusText = IBus.Text.new_from_string(text); this._context.set_surrounding_text(ibusText, cursor, anchor); } vfunc_update_content_hints(hints) { let ibusHints = 0; if (hints & Clutter.InputContentHintFlags.COMPLETION) ibusHints |= IBus.InputHints.WORD_COMPLETION; if (hints & Clutter.InputContentHintFlags.SPELLCHECK) ibusHints |= IBus.InputHints.SPELLCHECK; if (hints & Clutter.InputContentHintFlags.AUTO_CAPITALIZATION) ibusHints |= IBus.InputHints.UPPERCASE_SENTENCES; if (hints & Clutter.InputContentHintFlags.LOWERCASE) ibusHints |= IBus.InputHints.LOWERCASE; if (hints & Clutter.InputContentHintFlags.UPPERCASE) ibusHints |= IBus.InputHints.UPPERCASE_CHARS; if (hints & Clutter.InputContentHintFlags.TITLECASE) ibusHints |= IBus.InputHints.UPPERCASE_WORDS; if (hints & Clutter.InputContentHintFlags.SENSITIVE_DATA) ibusHints |= IBus.InputHints.PRIVATE; this._hints = ibusHints; if (this._context) this._context.set_content_type(this._purpose, this._hints); } vfunc_update_content_purpose(purpose) { let ibusPurpose = 0; if (purpose === Clutter.InputContentPurpose.NORMAL) ibusPurpose = IBus.InputPurpose.FREE_FORM; else if (purpose === Clutter.InputContentPurpose.ALPHA) ibusPurpose = IBus.InputPurpose.ALPHA; else if (purpose === Clutter.InputContentPurpose.DIGITS) ibusPurpose = IBus.InputPurpose.DIGITS; else if (purpose === Clutter.InputContentPurpose.NUMBER) ibusPurpose = IBus.InputPurpose.NUMBER; else if (purpose === Clutter.InputContentPurpose.PHONE) ibusPurpose = IBus.InputPurpose.PHONE; else if (purpose === Clutter.InputContentPurpose.URL) ibusPurpose = IBus.InputPurpose.URL; else if (purpose === Clutter.InputContentPurpose.EMAIL) ibusPurpose = IBus.InputPurpose.EMAIL; else if (purpose === Clutter.InputContentPurpose.NAME) ibusPurpose = IBus.InputPurpose.NAME; else if (purpose === Clutter.InputContentPurpose.PASSWORD) ibusPurpose = IBus.InputPurpose.PASSWORD; else if (purpose === Clutter.InputContentPurpose.TERMINAL && IBus.InputPurpose.TERMINAL) ibusPurpose = IBus.InputPurpose.TERMINAL; this._purpose = ibusPurpose; if (this._context) this._context.set_content_type(this._purpose, this._hints); } vfunc_filter_key_event(event) { if (!this._context) return false; if (!this._currentSource) return false; let state = event.get_state(); if (state & IBus.ModifierType.IGNORED_MASK) return false; if (event.type() === Clutter.EventType.KEY_RELEASE) state |= IBus.ModifierType.RELEASE_MASK; this._context.process_key_event_async( event.get_key_symbol(), event.get_key_code() - 8, // Convert XKB keycodes to evcodes state, -1, this._cancellable, (context, res) => { if (context !== this._context) return; try { let retval = context.process_key_event_async_finish(res); this.notify_key_event(event, retval); } catch (e) { if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) log(`Error processing key on IM: ${e.message}`); } }); return true; } getSurroundingText() { return [ this._surroundingText, this._surroundingTextCursor, this._surroundingTextAnchor, ]; } hasPreedit() { return this._preeditVisible && this._preeditStr !== '' && this._preeditStr !== null; } async handleVirtualKey(keyval) { try { if (!await this._context.process_key_event_async( keyval, 0, 0, -1, null)) return false; await this._context.process_key_event_async( keyval, 0, IBus.ModifierType.RELEASE_MASK, -1, null); return true; } catch (e) { return false; } } _fullReset() { this._context.set_content_type(0, 0); this._context.set_cursor_location(0, 0, 0, 0); this._context.reset(); } update() { if (!this._context) return; this._updateCapabilities(); this._context.set_content_type(this._purpose, this._hints); if (this._cursorRect) { this._context.set_cursor_location( this._cursorRect.x, this._cursorRect.y, this._cursorRect.width, this._cursorRect.height); } this._emitRequestSurrounding(); } }); 07070100000184000081A40000000000000000000000016712993F00001DB9000000000000000000000000000000000000002700000000gnome-shell-47.1/js/misc/introspect.jsimport Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import Meta from 'gi://Meta'; import Shell from 'gi://Shell'; import St from 'gi://St'; const APP_ALLOWLIST = [ 'org.freedesktop.impl.portal.desktop.gtk', 'org.freedesktop.impl.portal.desktop.gnome', ]; const INTROSPECT_DBUS_API_VERSION = 3; import {loadInterfaceXML} from './fileUtils.js'; import {DBusSenderChecker} from './util.js'; const IntrospectDBusIface = loadInterfaceXML('org.gnome.Shell.Introspect'); export class IntrospectService { constructor() { this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(IntrospectDBusIface, this); this._dbusImpl.export(Gio.DBus.session, '/org/gnome/Shell/Introspect'); Gio.DBus.session.own_name('org.gnome.Shell.Introspect', Gio.BusNameOwnerFlags.REPLACE, null, null); this._runningApplications = {}; this._runningApplicationsDirty = true; this._activeApplication = null; this._activeApplicationDirty = true; this._animationsEnabled = true; this._appSystem = Shell.AppSystem.get_default(); this._appSystem.connect('app-state-changed', () => { this._runningApplicationsDirty = true; this._syncRunningApplications(); }); let tracker = Shell.WindowTracker.get_default(); tracker.connect('notify::focus-app', () => { this._activeApplicationDirty = true; this._syncRunningApplications(); }); tracker.connect('tracked-windows-changed', () => this._dbusImpl.emit_signal('WindowsChanged', null)); this._syncRunningApplications(); this._senderChecker = new DBusSenderChecker(APP_ALLOWLIST); this._settings = St.Settings.get(); this._settings.connect('notify::enable-animations', this._syncAnimationsEnabled.bind(this)); this._syncAnimationsEnabled(); const monitorManager = global.backend.get_monitor_manager(); monitorManager.connect('monitors-changed', this._syncScreenSize.bind(this)); this._syncScreenSize(); } _isStandaloneApp(app) { return app.get_windows().some(w => w.transient_for == null); } _getSandboxedAppId(app) { let ids = app.get_windows().map(w => w.get_sandboxed_app_id()); return ids.find(id => id != null); } _syncRunningApplications() { let tracker = Shell.WindowTracker.get_default(); let apps = this._appSystem.get_running(); let seatName = 'seat0'; let newRunningApplications = {}; let newActiveApplication = null; let focusedApp = tracker.focus_app; for (let app of apps) { let appInfo = {}; let isAppActive = focusedApp === app; if (!this._isStandaloneApp(app)) continue; if (isAppActive) { appInfo['active-on-seats'] = new GLib.Variant('as', [seatName]); newActiveApplication = app.get_id(); } let sandboxedAppId = this._getSandboxedAppId(app); if (sandboxedAppId) appInfo['sandboxed-app-id'] = new GLib.Variant('s', sandboxedAppId); newRunningApplications[app.get_id()] = appInfo; } if (this._runningApplicationsDirty || (this._activeApplicationDirty && this._activeApplication !== newActiveApplication)) { this._runningApplications = newRunningApplications; this._activeApplication = newActiveApplication; this._dbusImpl.emit_signal('RunningApplicationsChanged', null); } this._runningApplicationsDirty = false; this._activeApplicationDirty = false; } _isEligibleWindow(window) { if (window.is_override_redirect()) return false; let type = window.get_window_type(); return type === Meta.WindowType.NORMAL || type === Meta.WindowType.DIALOG || type === Meta.WindowType.MODAL_DIALOG || type === Meta.WindowType.UTILITY; } async GetRunningApplicationsAsync(params, invocation) { try { await this._senderChecker.checkInvocation(invocation); } catch (e) { invocation.return_gerror(e); return; } invocation.return_value(new GLib.Variant('(a{sa{sv}})', [this._runningApplications])); } async GetWindowsAsync(params, invocation) { let focusWindow = global.display.get_focus_window(); let apps = this._appSystem.get_running(); let windowsList = {}; try { await this._senderChecker.checkInvocation(invocation); } catch (e) { invocation.return_gerror(e); return; } for (let app of apps) { let windows = app.get_windows(); for (let window of windows) { if (!this._isEligibleWindow(window)) continue; let windowId = window.get_id(); let frameRect = window.get_frame_rect(); let title = window.get_title(); let wmClass = window.get_wm_class(); let sandboxedAppId = window.get_sandboxed_app_id(); windowsList[windowId] = { 'app-id': GLib.Variant.new('s', app.get_id()), 'client-type': GLib.Variant.new('u', window.get_client_type()), 'is-hidden': GLib.Variant.new('b', window.is_hidden()), 'has-focus': GLib.Variant.new('b', window === focusWindow), 'width': GLib.Variant.new('u', frameRect.width), 'height': GLib.Variant.new('u', frameRect.height), }; // These properties may not be available for all windows: if (title != null) windowsList[windowId]['title'] = GLib.Variant.new('s', title); if (wmClass != null) windowsList[windowId]['wm-class'] = GLib.Variant.new('s', wmClass); if (sandboxedAppId != null) { windowsList[windowId]['sandboxed-app-id'] = GLib.Variant.new('s', sandboxedAppId); } } } invocation.return_value(new GLib.Variant('(a{ta{sv}})', [windowsList])); } _syncAnimationsEnabled() { let wasAnimationsEnabled = this._animationsEnabled; this._animationsEnabled = this._settings.enable_animations; if (wasAnimationsEnabled !== this._animationsEnabled) { let variant = new GLib.Variant('b', this._animationsEnabled); this._dbusImpl.emit_property_changed('AnimationsEnabled', variant); } } _syncScreenSize() { const oldScreenWidth = this._screenWidth; const oldScreenHeight = this._screenHeight; this._screenWidth = global.screen_width; this._screenHeight = global.screen_height; if (oldScreenWidth !== this._screenWidth || oldScreenHeight !== this._screenHeight) { const variant = new GLib.Variant('(ii)', [this._screenWidth, this._screenHeight]); this._dbusImpl.emit_property_changed('ScreenSize', variant); } } get AnimationsEnabled() { return this._animationsEnabled; } get ScreenSize() { return [this._screenWidth, this._screenHeight]; } get version() { return INTROSPECT_DBUS_API_VERSION; } } 07070100000185000081A40000000000000000000000016712993F00002244000000000000000000000000000000000000002400000000gnome-shell-47.1/js/misc/jsParse.jsconst AsyncFunction = async function () {}.constructor; /** * Returns a list of potential completions for text. Completions either * follow a dot (e.g. foo.ba -> bar) or they are picked from globalCompletionList (e.g. fo -> foo) * commandHeader is prefixed on any expression before it is eval'ed. It will most likely * consist of global constants that might not carry over from the calling environment. * * This function is likely the one you want to call from external modules * * @param {string} text * @param {string} commandHeader * @param {readonly string[]} [globalCompletionList] */ export async function getCompletions(text, commandHeader, globalCompletionList) { let methods = []; let expr_, base; let attrHead = ''; if (globalCompletionList == null) globalCompletionList = []; let offset = getExpressionOffset(text, text.length - 1); if (offset >= 0) { text = text.slice(offset); // Look for expressions like "Main.panel.foo" and match Main.panel and foo let matches = text.match(/(.*)\.(.*)/); if (matches) { [expr_, base, attrHead] = matches; methods = (await getPropertyNamesFromExpression(base, commandHeader)).filter( attr => attr.slice(0, attrHead.length) === attrHead); } // Look for the empty expression or partially entered words // not proceeded by a dot and match them against global constants matches = text.match(/^(\w*)$/); if (text === '' || matches) { [expr_, attrHead] = matches; methods = globalCompletionList.filter( attr => attr.slice(0, attrHead.length) === attrHead); } } return [methods, attrHead]; } /** * A few functions for parsing strings of javascript code. */ /** * Identify characters that delimit an expression. That is, * if we encounter anything that isn't a letter, '.', ')', or ']', * we should stop parsing. * * @param {string} c */ function isStopChar(c) { return !c.match(/[\w.)\]]/); } /** * Given the ending position of a quoted string, find where it starts * * @param {string} expr * @param {number} offset */ export function findMatchingQuote(expr, offset) { let quoteChar = expr.charAt(offset); for (let i = offset - 1; i >= 0; --i) { if (expr.charAt(i) === quoteChar && expr.charAt(i - 1) !== '\\') return i; } return -1; } /** * Given the ending position of a regex, find where it starts * * @param {string} expr * @param {number} offset */ export function findMatchingSlash(expr, offset) { for (let i = offset - 1; i >= 0; --i) { if (expr.charAt(i) === '/' && expr.charAt(i - 1) !== '\\') return i; } return -1; } /** * If expr.charAt(offset) is ')' or ']', * return the position of the corresponding '(' or '[' bracket. * This function does not check for syntactic correctness. e.g., * findMatchingBrace("[(])", 3) returns 1. * * @param {string} expr * @param {number} offset */ export function findMatchingBrace(expr, offset) { let closeBrace = expr.charAt(offset); let openBrace = {')': '(', ']': '['}[closeBrace]; return findTheBrace(expr, offset - 1, openBrace, closeBrace); } /** * @param {*} expr * @param {*} offset * @param {...any} braces * @returns {number} */ export function findTheBrace(expr, offset, ...braces) { let [openBrace, closeBrace] = braces; if (offset < 0) return -1; if (expr.charAt(offset) === openBrace) return offset; if (expr.charAt(offset).match(/['"]/)) return findTheBrace(expr, findMatchingQuote(expr, offset) - 1, ...braces); if (expr.charAt(offset) === '/') return findTheBrace(expr, findMatchingSlash(expr, offset) - 1, ...braces); if (expr.charAt(offset) === closeBrace) return findTheBrace(expr, findTheBrace(expr, offset - 1, ...braces) - 1, ...braces); return findTheBrace(expr, offset - 1, ...braces); } /** * Walk expr backwards from offset looking for the beginning of an * expression suitable for passing to eval. * There is no guarantee of correct javascript syntax between the return * value and offset. This function is meant to take a string like * "foo(Obj.We.Are.Completing" and allow you to extract "Obj.We.Are.Completing" * * @param {string} expr * @param {number} offset */ export function getExpressionOffset(expr, offset) { while (offset >= 0) { let currChar = expr.charAt(offset); if (isStopChar(currChar)) return offset + 1; if (currChar.match(/[)\]]/)) offset = findMatchingBrace(expr, offset); --offset; } return offset + 1; } /** * Things with non-word characters or that start with a number * are not accessible via .foo notation and so aren't returned * * @param {string} w */ function isValidPropertyName(w) { return !(w.match(/\W/) || w.match(/^\d/)); } /** * To get all properties (enumerable and not), we need to walk * the prototype chain ourselves * * @param {object} obj */ export function getAllProps(obj) { if (obj === null || obj === undefined) return []; return Object.getOwnPropertyNames(obj).concat(getAllProps(Object.getPrototypeOf(obj))); } /** * Given a string _expr_, returns all methods * that can be accessed via '.' notation. * e.g., expr="({ foo: null, bar: null, 4: null })" will * return ["foo", "bar", ...] but the list will not include "4", * since methods accessed with '.' notation must star with a letter or _. * * @param {string} expr * @param {string=} commandHeader */ export async function getPropertyNamesFromExpression(expr, commandHeader = '') { let obj = {}; if (!isUnsafeExpression(expr)) { try { const lines = expr.split('\n'); lines.push(`return ${lines.pop()}`); obj = await AsyncFunction(commandHeader + lines.join(';'))(); } catch (e) { return []; } } else { return []; } let propsUnique = {}; if (typeof obj === 'object') { let allProps = getAllProps(obj); // Get only things we are allowed to complete following a '.' allProps = allProps.filter(isValidPropertyName); // Make sure propsUnique contains one key for every // property so we end up with a unique list of properties allProps.map(p => (propsUnique[p] = null)); } return Object.keys(propsUnique).sort(); } /** * Given a list of words, returns the longest prefix they all have in common * * @param {readonly string[]} words */ export function getCommonPrefix(words) { let word = words[0]; for (let i = 0; i < word.length; i++) { for (let w = 1; w < words.length; w++) { if (words[w].charAt(i) !== word.charAt(i)) return word.slice(0, i); } } return word; } /** * Remove any blocks that are quoted or are in a regex * * @param {string} str */ export function removeLiterals(str) { if (str.length === 0) return ''; let currChar = str.charAt(str.length - 1); if (currChar === '"' || currChar === '\'') { return removeLiterals( str.slice(0, findMatchingQuote(str, str.length - 1))); } else if (currChar === '/') { return removeLiterals( str.slice(0, findMatchingSlash(str, str.length - 1))); } return removeLiterals(str.slice(0, str.length - 1)) + currChar; } /** * Returns true if there is reason to think that eval(str) * will modify the global scope * * @param {string} str */ export function isUnsafeExpression(str) { // Check for any sort of assignment // The strategy used is dumb: remove any quotes // or regexs and comparison operators and see if there is an '=' character. // If there is, it might be an unsafe assignment. let prunedStr = removeLiterals(str); prunedStr = prunedStr.replace(/[=!]==/g, ''); // replace === and !== with nothing prunedStr = prunedStr.replace(/[=<>!]=/g, ''); // replace ==, <=, >=, != with nothing if (prunedStr.match(/[=]/)) { return true; } else if (prunedStr.match(/;/)) { // If we contain a semicolon not inside of a quote/regex, assume we're unsafe as well return true; } return false; } /** * Returns a list of global keywords derived from str * * @param {string} str */ export function getDeclaredConstants(str) { let ret = []; str.split(';').forEach(s => { let base_, keyword; let match = s.match(/const\s+(\w+)\s*=/); if (match) { [base_, keyword] = match; ret.push(keyword); } }); return ret; } 07070100000186000081A40000000000000000000000016712993F00001403000000000000000000000000000000000000002C00000000gnome-shell-47.1/js/misc/keyboardManager.jsimport GLib from 'gi://GLib'; import GnomeDesktop from 'gi://GnomeDesktop'; import * as Main from '../ui/main.js'; export const DEFAULT_LOCALE = 'en_US'; export const DEFAULT_LAYOUT = 'us'; export const DEFAULT_VARIANT = ''; let _xkbInfo = null; /** * @returns {GnomeDesktop.XkbInfo} */ export function getXkbInfo() { if (_xkbInfo == null) _xkbInfo = new GnomeDesktop.XkbInfo(); return _xkbInfo; } let _keyboardManager = null; /** * @returns {KeyboardManager} */ export function getKeyboardManager() { if (_keyboardManager == null) _keyboardManager = new KeyboardManager(); return _keyboardManager; } export function releaseKeyboard() { if (Main.modalCount > 0) global.backend.unfreeze_keyboard(global.get_current_time()); else global.backend.ungrab_keyboard(global.get_current_time()); } export function holdKeyboard() { global.backend.freeze_keyboard(global.get_current_time()); } class KeyboardManager { constructor() { // The XKB protocol doesn't allow for more that 4 layouts in a // keymap. Wayland doesn't impose this limit and libxkbcommon can // handle up to 32 layouts but since we need to support X clients // even as a Wayland compositor, we can't bump this. this.MAX_LAYOUTS_PER_GROUP = 4; this._xkbInfo = getXkbInfo(); this._current = null; this._localeLayoutInfo = this._getLocaleLayout(); this._layoutInfos = {}; this._currentKeymap = null; } _applyLayoutGroup(group) { let options = this._buildOptionsString(); let [layouts, variants] = this._buildGroupStrings(group); let model = this._xkbModel; if (this._currentKeymap && this._currentKeymap.layouts === layouts && this._currentKeymap.variants === variants && this._currentKeymap.options === options && this._currentKeymap.model === model) return; this._currentKeymap = {layouts, variants, options, model}; global.backend.set_keymap(layouts, variants, options, model); } _applyLayoutGroupIndex(idx) { global.backend.lock_layout_group(idx); } apply(id) { let info = this._layoutInfos[id]; if (!info) return; if (this._current && this._current.group === info.group) { if (this._current.groupIndex !== info.groupIndex) this._applyLayoutGroupIndex(info.groupIndex); } else { this._applyLayoutGroup(info.group); this._applyLayoutGroupIndex(info.groupIndex); } this._current = info; } reapply() { if (!this._current) return; this._applyLayoutGroup(this._current.group); this._applyLayoutGroupIndex(this._current.groupIndex); } setUserLayouts(ids) { this._current = null; this._layoutInfos = {}; for (let i = 0; i < ids.length; ++i) { let [found, , , _layout, _variant] = this._xkbInfo.get_layout_info(ids[i]); if (found) this._layoutInfos[ids[i]] = {id: ids[i], layout: _layout, variant: _variant}; } let i = 0; let group = []; for (let id in this._layoutInfos) { // We need to leave one slot on each group free so that we // can add a layout containing the symbols for the // language used in UI strings to ensure that toolkits can // handle mnemonics like Alt+Ф even if the user is // actually typing in a different layout. let groupIndex = i % (this.MAX_LAYOUTS_PER_GROUP - 1); if (groupIndex === 0) group = []; let info = this._layoutInfos[id]; group[groupIndex] = info; info.group = group; info.groupIndex = groupIndex; i += 1; } } _getLocaleLayout() { let locale = GLib.get_language_names()[0]; if (!locale.includes('_')) locale = DEFAULT_LOCALE; let [found, , id] = GnomeDesktop.get_input_source_from_locale(locale); if (!found) [, , id] = GnomeDesktop.get_input_source_from_locale(DEFAULT_LOCALE); let _layout, _variant; [found, , , _layout, _variant] = this._xkbInfo.get_layout_info(id); if (found) return {layout: _layout, variant: _variant}; else return {layout: DEFAULT_LAYOUT, variant: DEFAULT_VARIANT}; } _buildGroupStrings(_group) { let group = _group.concat(this._localeLayoutInfo); let layouts = group.map(g => g.layout).join(','); let variants = group.map(g => g.variant).join(','); return [layouts, variants]; } setKeyboardOptions(options) { this._xkbOptions = options; } setKeyboardModel(model) { this._xkbModel = model; } _buildOptionsString() { let options = this._xkbOptions.join(','); return options; } get currentLayout() { return this._current; } } 07070100000187000081A40000000000000000000000016712993F000020AB000000000000000000000000000000000000002900000000gnome-shell-47.1/js/misc/loginManager.jsimport GLib from 'gi://GLib'; import Gio from 'gi://Gio'; import GioUnix from 'gi://GioUnix'; import * as Signals from './signals.js'; import {loadInterfaceXML} from './fileUtils.js'; const SystemdLoginManagerIface = loadInterfaceXML('org.freedesktop.login1.Manager'); const SystemdLoginSessionIface = loadInterfaceXML('org.freedesktop.login1.Session'); const SystemdLoginUserIface = loadInterfaceXML('org.freedesktop.login1.User'); const SystemdLoginManager = Gio.DBusProxy.makeProxyWrapper(SystemdLoginManagerIface); const SystemdLoginSession = Gio.DBusProxy.makeProxyWrapper(SystemdLoginSessionIface); const SystemdLoginUser = Gio.DBusProxy.makeProxyWrapper(SystemdLoginUserIface); function haveSystemd() { return GLib.access('/run/systemd/seats', 0) >= 0; } function versionCompare(required, reference) { required = required.split('.'); reference = reference.split('.'); for (let i = 0; i < required.length; i++) { let requiredInt = parseInt(required[i]); let referenceInt = parseInt(reference[i]); if (requiredInt !== referenceInt) return requiredInt < referenceInt; } return true; } /** * @returns {boolean} */ export function canLock() { try { let params = GLib.Variant.new('(ss)', ['org.gnome.DisplayManager.Manager', 'Version']); let result = Gio.DBus.system.call_sync( 'org.gnome.DisplayManager', '/org/gnome/DisplayManager/Manager', 'org.freedesktop.DBus.Properties', 'Get', params, null, Gio.DBusCallFlags.NONE, -1, null); let version = result.deepUnpack()[0].deepUnpack(); return haveSystemd() && versionCompare('3.5.91', version); } catch (e) { return false; } } export async function registerSessionWithGDM() { log('Registering session with GDM'); try { await Gio.DBus.system.call( 'org.gnome.DisplayManager', '/org/gnome/DisplayManager/Manager', 'org.gnome.DisplayManager.Manager', 'RegisterSession', GLib.Variant.new('(a{sv})', [{}]), null, Gio.DBusCallFlags.NONE, -1, null); } catch (e) { if (!e.matches(Gio.DBusError, Gio.DBusError.UNKNOWN_METHOD)) log(`Error registering session with GDM: ${e.message}`); else log('Not calling RegisterSession(): method not exported, GDM too old?'); } } let _loginManager = null; /** * An abstraction over systemd/logind and ConsoleKit. * * @returns {LoginManagerSystemd | LoginManagerDummy} - the LoginManager singleton */ export function getLoginManager() { if (_loginManager == null) { if (haveSystemd()) _loginManager = new LoginManagerSystemd(); else _loginManager = new LoginManagerDummy(); } return _loginManager; } class LoginManagerSystemd extends Signals.EventEmitter { constructor() { super(); this._proxy = new SystemdLoginManager(Gio.DBus.system, 'org.freedesktop.login1', '/org/freedesktop/login1'); this._userProxy = new SystemdLoginUser(Gio.DBus.system, 'org.freedesktop.login1', '/org/freedesktop/login1/user/self'); this._proxy.connectSignal('PrepareForSleep', this._prepareForSleep.bind(this)); this._proxy.connectSignal('SessionRemoved', this._sessionRemoved.bind(this)); } async getCurrentSessionProxy() { if (this._currentSession) return this._currentSession; let sessionId = GLib.getenv('XDG_SESSION_ID'); if (!sessionId) { log('Unset XDG_SESSION_ID, getCurrentSessionProxy() called outside a user session. Asking logind directly.'); let [session, objectPath] = this._userProxy.Display; if (session) { log(`Will monitor session ${session}`); sessionId = session; } else { log('Failed to find "Display" session; are we the greeter?'); for ([session, objectPath] of this._userProxy.Sessions) { let sessionProxy = new SystemdLoginSession(Gio.DBus.system, 'org.freedesktop.login1', objectPath); log(`Considering ${session}, class=${sessionProxy.Class}`); if (sessionProxy.Class === 'greeter') { log(`Yes, will monitor session ${session}`); sessionId = session; break; } } if (!sessionId) { log('No, failed to get session from logind.'); return null; } } } try { const [objectPath] = await this._proxy.GetSessionAsync(sessionId); this._currentSession = new SystemdLoginSession(Gio.DBus.system, 'org.freedesktop.login1', objectPath); return this._currentSession; } catch (error) { logError(error, 'Could not get a proxy for the current session'); return null; } } async canSuspend() { let canSuspend, needsAuth; try { const [result] = await this._proxy.CanSuspendAsync(); needsAuth = result === 'challenge'; canSuspend = needsAuth || result === 'yes'; } catch (error) { canSuspend = false; needsAuth = false; } return {canSuspend, needsAuth}; } async canRebootToBootLoaderMenu() { let canRebootToBootLoaderMenu, needsAuth; try { const [result] = await this._proxy.CanRebootToBootLoaderMenuAsync(); needsAuth = result === 'challenge'; canRebootToBootLoaderMenu = needsAuth || result === 'yes'; } catch (error) { canRebootToBootLoaderMenu = false; needsAuth = false; } return {canRebootToBootLoaderMenu, needsAuth}; } setRebootToBootLoaderMenu() { /* Parameter is timeout in usec, show to menu for 60 seconds */ this._proxy.SetRebootToBootLoaderMenuAsync(60000000); } async listSessions() { try { const [sessions] = await this._proxy.ListSessionsAsync(); return sessions; } catch (e) { return []; } } getSession(objectPath) { return new SystemdLoginSession(Gio.DBus.system, 'org.freedesktop.login1', objectPath); } suspend() { this._proxy.SuspendAsync(true); } async inhibit(reason, cancellable) { const inVariant = new GLib.Variant('(ssss)', ['sleep', 'GNOME Shell', reason, 'delay']); const [outVariant_, fdList] = await this._proxy.call_with_unix_fd_list('Inhibit', inVariant, 0, -1, null, cancellable); const [fd] = fdList.steal_fds(); return new GioUnix.InputStream({fd}); } _prepareForSleep(proxy, sender, [aboutToSuspend]) { this.emit('prepare-for-sleep', aboutToSuspend); } _sessionRemoved(proxy, sender, [sessionId]) { this.emit('session-removed', sessionId); } } class LoginManagerDummy extends Signals.EventEmitter { getCurrentSessionProxy() { // we could return a DummySession object that fakes whatever callers // expect (at the time of writing: connect() and connectSignal() // methods), but just never settling the promise should be safer return new Promise(() => {}); } canSuspend() { return new Promise(resolve => resolve({ canSuspend: false, needsAuth: false, })); } canRebootToBootLoaderMenu() { return new Promise(resolve => resolve({ canRebootToBootLoaderMenu: false, needsAuth: false, })); } setRebootToBootLoaderMenu() { } listSessions() { return new Promise(resolve => resolve([])); } getSession(_objectPath) { return null; } suspend() { this.emit('prepare-for-sleep', true); this.emit('prepare-for-sleep', false); } /* eslint-disable-next-line require-await */ async inhibit() { return null; } } 07070100000188000081A40000000000000000000000016712993F0000020D000000000000000000000000000000000000002500000000gnome-shell-47.1/js/misc/meson.buildjsconf = configuration_data() jsconf.set('PACKAGE_NAME', meson.project_name()) jsconf.set('PACKAGE_VERSION', meson.project_version()) jsconf.set('GETTEXT_PACKAGE', meson.project_name()) jsconf.set('LIBMUTTER_API_VERSION', mutter_api_version) jsconf.set10('HAVE_NETWORKMANAGER', have_networkmanager) jsconf.set10('HAVE_PORTAL_HELPER', have_portal_helper) jsconf.set('datadir', datadir) jsconf.set('libexecdir', libexecdir) config_js = configure_file( input: 'config.js.in', output: 'config.js', configuration: jsconf ) 07070100000189000081A40000000000000000000000016712993F0000276E000000000000000000000000000000000000002900000000gnome-shell-47.1/js/misc/modemManager.jsimport Gio from 'gi://Gio'; import GObject from 'gi://GObject'; import NM from 'gi://NM'; import NMA4 from 'gi://NMA4'; import {loadInterfaceXML} from './fileUtils.js'; let _mpd; /** * _getMobileProvidersDatabase: * * Gets the database of mobile providers, with references between MCCMNC/SID and * operator name * * @returns {NMA4.MobileProvidersDatabase | null} */ function _getMobileProvidersDatabase() { if (_mpd == null) { try { _mpd = new NMA4.MobileProvidersDatabase(); _mpd.init(null); } catch (e) { log(e.message); _mpd = null; } } return _mpd; } // _findProviderForMccMnc: // @operatorName: operator name // @operatorCode: operator code // // Given an operator name string (which may not be a real operator name) and an // operator code string, tries to find a proper operator name to display. // function _findProviderForMccMnc(operatorName, operatorCode) { if (operatorName) { if (operatorName.length !== 0 && (operatorName.length > 6 || operatorName.length < 5)) { // this looks like a valid name, i.e. not an MCCMNC (that some // devices return when not yet connected return operatorName; } if (isNaN(parseInt(operatorName))) { // name is definitely not a MCCMNC, so it may be a name // after all; return that return operatorName; } } let needle; if ((!operatorName || operatorName.length === 0) && operatorCode) needle = operatorCode; else if (operatorName && (operatorName.length === 6 || operatorName.length === 5)) needle = operatorName; else // nothing to search return null; let mpd = _getMobileProvidersDatabase(); if (mpd) { let provider = mpd.lookup_3gpp_mcc_mnc(needle); if (provider) return provider.get_name(); } return null; } // _findProviderForSid: // @sid: System Identifier of the serving CDMA network // // Tries to find the operator name corresponding to the given SID // function _findProviderForSid(sid) { if (!sid) return null; let mpd = _getMobileProvidersDatabase(); if (mpd) { let provider = mpd.lookup_cdma_sid(sid); if (provider) return provider.get_name(); } return null; } // ----------------------------------------------------- // // Support for the old ModemManager interface (MM < 0.7) // // ----------------------------------------------------- // // The following are not the complete interfaces, just the methods we need // (or may need in the future) const ModemGsmNetworkInterface = loadInterfaceXML('org.freedesktop.ModemManager.Modem.Gsm.Network'); const ModemGsmNetworkProxy = Gio.DBusProxy.makeProxyWrapper(ModemGsmNetworkInterface); const ModemCdmaInterface = loadInterfaceXML('org.freedesktop.ModemManager.Modem.Cdma'); const ModemCdmaProxy = Gio.DBusProxy.makeProxyWrapper(ModemCdmaInterface); const ModemBase = GObject.registerClass({ GTypeFlags: GObject.TypeFlags.ABSTRACT, Properties: { 'operator-name': GObject.ParamSpec.string( 'operator-name', null, null, GObject.ParamFlags.READABLE, null), 'signal-quality': GObject.ParamSpec.int( 'signal-quality', null, null, GObject.ParamFlags.READABLE, 0, 100, 0), }, }, class ModemBase extends GObject.Object { _init() { super._init(); this._operatorName = null; this._signalQuality = 0; } get operatorName() { return this._operatorName; } get signalQuality() { return this._signalQuality; } _setOperatorName(operatorName) { if (this._operatorName === operatorName) return; this._operatorName = operatorName; this.notify('operator-name'); } _setSignalQuality(signalQuality) { if (this._signalQuality === signalQuality) return; this._signalQuality = signalQuality; this.notify('signal-quality'); } }); export const ModemGsm = GObject.registerClass( class ModemGsm extends ModemBase { _init(path) { super._init(); this._proxy = new ModemGsmNetworkProxy(Gio.DBus.system, 'org.freedesktop.ModemManager', path); // Code is duplicated because the function have different signatures this._proxy.connectSignal('SignalQuality', (proxy, sender, [quality]) => { this._setSignalQuality(quality); }); this._proxy.connectSignal('RegistrationInfo', (proxy, sender, [_status, code, name]) => { this._setOperatorName(_findProviderForMccMnc(name, code)); }); this._getInitialState(); } async _getInitialState() { try { const [ [status_, code, name], [quality], ] = await Promise.all([ this._proxy.GetRegistrationInfoAsync(), this._proxy.GetSignalQualityAsync(), ]); this._setOperatorName(_findProviderForMccMnc(name, code)); this._setSignalQuality(quality); } catch (err) { // it will return an error if the device is not connected this._setSignalQuality(0); } } }); export const ModemCdma = GObject.registerClass( class ModemCdma extends ModemBase { _init(path) { super._init(); this._proxy = new ModemCdmaProxy(Gio.DBus.system, 'org.freedesktop.ModemManager', path); this._proxy.connectSignal('SignalQuality', (proxy, sender, params) => { this._setSignalQuality(params[0]); // receiving this signal means the device got activated // and we can finally call GetServingSystem if (this.operator_name == null) this._refreshServingSystem(); }); this._getSignalQuality(); } async _getSignalQuality() { try { const [quality] = await this._proxy.GetSignalQualityAsync(); this._setSignalQuality(quality); } catch (err) { // it will return an error if the device is not connected this._setSignalQuality(0); } } async _refreshServingSystem() { try { const [bandClass_, band_, sid] = await this._proxy.GetServingSystemAsync(); this._setOperatorName(_findProviderForSid(sid)); } catch (err) { // it will return an error if the device is not connected this._setOperatorName(null); } } }); // ------------------------------------------------------- // // Support for the new ModemManager1 interface (MM >= 0.7) // // ------------------------------------------------------- // const BroadbandModemInterface = loadInterfaceXML('org.freedesktop.ModemManager1.Modem'); const BroadbandModemProxy = Gio.DBusProxy.makeProxyWrapper(BroadbandModemInterface); const BroadbandModem3gppInterface = loadInterfaceXML('org.freedesktop.ModemManager1.Modem.Modem3gpp'); const BroadbandModem3gppProxy = Gio.DBusProxy.makeProxyWrapper(BroadbandModem3gppInterface); const BroadbandModemCdmaInterface = loadInterfaceXML('org.freedesktop.ModemManager1.Modem.ModemCdma'); const BroadbandModemCdmaProxy = Gio.DBusProxy.makeProxyWrapper(BroadbandModemCdmaInterface); export const BroadbandModem = GObject.registerClass({ Properties: { 'capabilities': GObject.ParamSpec.flags( 'capabilities', null, null, GObject.ParamFlags.READWRITE | GObject.ParamFlags.CONSTRUCT_ONLY, NM.DeviceModemCapabilities.$gtype, NM.DeviceModemCapabilities.NONE), }, }, class BroadbandModem extends ModemBase { _init(path, capabilities) { super._init({capabilities}); this._proxy = new BroadbandModemProxy(Gio.DBus.system, 'org.freedesktop.ModemManager1', path); this._proxy_3gpp = new BroadbandModem3gppProxy(Gio.DBus.system, 'org.freedesktop.ModemManager1', path); this._proxy_cdma = new BroadbandModemCdmaProxy(Gio.DBus.system, 'org.freedesktop.ModemManager1', path); this._proxy.connect('g-properties-changed', (proxy, properties) => { const signalQualityChanged = !!properties.lookup_value('SignalQuality', null); if (signalQualityChanged) this._reloadSignalQuality(); }); this._reloadSignalQuality(); this._proxy_3gpp.connect('g-properties-changed', (proxy, properties) => { let unpacked = properties.deepUnpack(); if ('OperatorName' in unpacked || 'OperatorCode' in unpacked) this._reload3gppOperatorName(); }); this._reload3gppOperatorName(); this._proxy_cdma.connect('g-properties-changed', (proxy, properties) => { let unpacked = properties.deepUnpack(); if ('Nid' in unpacked || 'Sid' in unpacked) this._reloadCdmaOperatorName(); }); this._reloadCdmaOperatorName(); } _reloadSignalQuality() { let [quality, recent_] = this._proxy.SignalQuality; this._setSignalQuality(quality); } _reloadOperatorName() { let newName = ''; if (this.operator_name_3gpp && this.operator_name_3gpp.length > 0) newName += this.operator_name_3gpp; if (this.operator_name_cdma && this.operator_name_cdma.length > 0) { if (newName !== '') newName += ', '; newName += this.operator_name_cdma; } this._setOperatorName(newName); } _reload3gppOperatorName() { let name = this._proxy_3gpp.OperatorName; let code = this._proxy_3gpp.OperatorCode; this.operator_name_3gpp = _findProviderForMccMnc(name, code); this._reloadOperatorName(); } _reloadCdmaOperatorName() { let sid = this._proxy_cdma.Sid; this.operator_name_cdma = _findProviderForSid(sid); this._reloadOperatorName(); } }); 0707010000018A000081A40000000000000000000000016712993F00001F96000000000000000000000000000000000000002A00000000gnome-shell-47.1/js/misc/objectManager.jsimport Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import * as Params from './params.js'; import * as Signals from './signals.js'; // Specified in the D-Bus specification here: // http://dbus.freedesktop.org/doc/dbus-specification.html#standard-interfaces-objectmanager const ObjectManagerIface = ` `; const ObjectManagerInfo = Gio.DBusInterfaceInfo.new_for_xml(ObjectManagerIface); export class ObjectManager extends Signals.EventEmitter { constructor(params) { super(); params = Params.parse(params, { connection: null, name: null, objectPath: null, knownInterfaces: null, cancellable: null, onLoaded: null, }); this._connection = params.connection; this._serviceName = params.name; this._managerPath = params.objectPath; this._cancellable = params.cancellable; this._managerProxy = new Gio.DBusProxy({ g_connection: this._connection, g_interface_name: ObjectManagerInfo.name, g_interface_info: ObjectManagerInfo, g_name: this._serviceName, g_object_path: this._managerPath, g_flags: Gio.DBusProxyFlags.DO_NOT_AUTO_START, }); this._interfaceInfos = {}; this._objects = {}; this._interfaces = {}; this._onLoaded = params.onLoaded; if (params.knownInterfaces) this._registerInterfaces(params.knownInterfaces); this._initManagerProxy(); } _completeLoad() { if (this._onLoaded) this._onLoaded(); } async _addInterface(objectPath, interfaceName) { let info = this._interfaceInfos[interfaceName]; if (!info) return; const proxy = new Gio.DBusProxy({ g_connection: this._connection, g_name: this._serviceName, g_object_path: objectPath, g_interface_name: interfaceName, g_interface_info: info, g_flags: Gio.DBusProxyFlags.DO_NOT_AUTO_START, }); try { await proxy.init_async(GLib.PRIORITY_DEFAULT, this._cancellable); } catch (e) { logError(e, `could not initialize proxy for interface ${interfaceName}`); return; } let isNewObject; if (!this._objects[objectPath]) { this._objects[objectPath] = {}; isNewObject = true; } else { isNewObject = false; } this._objects[objectPath][interfaceName] = proxy; if (!this._interfaces[interfaceName]) this._interfaces[interfaceName] = []; this._interfaces[interfaceName].push(proxy); if (isNewObject) this.emit('object-added', objectPath); this.emit('interface-added', interfaceName, proxy); } _removeInterface(objectPath, interfaceName) { if (!this._objects[objectPath]) return; let proxy = this._objects[objectPath][interfaceName]; if (this._interfaces[interfaceName]) { let index = this._interfaces[interfaceName].indexOf(proxy); if (index >= 0) this._interfaces[interfaceName].splice(index, 1); if (this._interfaces[interfaceName].length === 0) delete this._interfaces[interfaceName]; } this.emit('interface-removed', interfaceName, proxy); delete this._objects[objectPath][interfaceName]; if (Object.keys(this._objects[objectPath]).length === 0) { delete this._objects[objectPath]; this.emit('object-removed', objectPath); } } async _initManagerProxy() { try { await this._managerProxy.init_async( GLib.PRIORITY_DEFAULT, this._cancellable); } catch (e) { logError(e, `could not initialize object manager for object ${this._serviceName}`); this._completeLoad(); return; } this._managerProxy.connectSignal('InterfacesAdded', (objectManager, sender, [objectPath, interfaces]) => { let interfaceNames = Object.keys(interfaces); for (let i = 0; i < interfaceNames.length; i++) this._addInterface(objectPath, interfaceNames[i]); }); this._managerProxy.connectSignal('InterfacesRemoved', (objectManager, sender, [objectPath, interfaceNames]) => { for (let i = 0; i < interfaceNames.length; i++) this._removeInterface(objectPath, interfaceNames[i]); }); if (Object.keys(this._interfaceInfos).length === 0) { this._completeLoad(); return; } this._managerProxy.connect('notify::g-name-owner', () => { if (this._managerProxy.g_name_owner) this._onNameAppeared(); else this._onNameVanished(); }); if (this._managerProxy.g_name_owner) this._onNameAppeared(); } async _onNameAppeared() { try { const [objects] = await this._managerProxy.GetManagedObjectsAsync(); if (!objects) { this._completeLoad(); return; } const objectPaths = Object.keys(objects); await Promise.allSettled(objectPaths.flatMap(objectPath => { const object = objects[objectPath]; const interfaceNames = Object.getOwnPropertyNames(object); return interfaceNames.map( ifaceName => this._addInterface(objectPath, ifaceName)); })); } catch (error) { logError(error, `could not get remote objects for service ${this._serviceName} path ${this._managerPath}`); } finally { this._completeLoad(); } } _onNameVanished() { let objectPaths = Object.keys(this._objects); for (let i = 0; i < objectPaths.length; i++) { let objectPath = objectPaths[i]; let object = this._objects[objectPath]; let interfaceNames = Object.keys(object); for (let j = 0; j < interfaceNames.length; j++) { let interfaceName = interfaceNames[j]; if (object[interfaceName]) this._removeInterface(objectPath, interfaceName); } } } _registerInterfaces(interfaces) { for (let i = 0; i < interfaces.length; i++) { let info = Gio.DBusInterfaceInfo.new_for_xml(interfaces[i]); this._interfaceInfos[info.name] = info; } } getProxy(objectPath, interfaceName) { let object = this._objects[objectPath]; if (!object) return null; return object[interfaceName]; } getProxiesForInterface(interfaceName) { let proxyList = this._interfaces[interfaceName]; if (!proxyList) return []; return proxyList; } getAllProxies() { let proxies = []; let objectPaths = Object.keys(this._objects); for (let i = 0; i < objectPaths.length; i++) { let object = this._objects[objectPaths]; let interfaceNames = Object.keys(object); for (let j = 0; j < interfaceNames.length; j++) { let interfaceName = interfaceNames[j]; if (object[interfaceName]) proxies.push(object(interfaceName)); } } return proxies; } } 0707010000018B000081A40000000000000000000000016712993F000003A1000000000000000000000000000000000000002300000000gnome-shell-47.1/js/misc/params.js/** * parse: * * @param {*} params caller-provided parameter object, or %null * @param {*} defaults provided defaults object * @param {boolean} [allowExtras] whether or not to allow properties not in `default` * * @summary Examines `params` and fills in default values from `defaults` for * any properties in `default` that don't appear in `params`. If * `allowExtras` is not %true, it will throw an error if `params` * contains any properties that aren't in `defaults`. * * If `params` is %null, this returns the values from `defaults`. * * @returns a new object, containing the merged parameters from * `params` and `defaults` */ export function parse(params = {}, defaults, allowExtras) { if (!allowExtras) { for (let prop in params) { if (!(prop in defaults)) throw new Error(`Unrecognized parameter "${prop}"`); } } return {...defaults, ...params}; } 0707010000018C000081A40000000000000000000000016712993F00001495000000000000000000000000000000000000003400000000gnome-shell-47.1/js/misc/parentalControlsManager.js// // Copyright (C) 2018, 2019, 2020 Endless Mobile, Inc. // // This is a GNOME Shell component to wrap the interactions over // D-Bus with the malcontent library. // // Licensed under the GNU General Public License Version 2 // // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // as published by the Free Software Foundation; either version 2 // of the License, or (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. import Gio from 'gi://Gio'; import GObject from 'gi://GObject'; import Shell from 'gi://Shell'; // We require libmalcontent ≥ 0.6.0 const HAVE_MALCONTENT = imports.package.checkSymbol( 'Malcontent', '0', 'ManagerGetValueFlags'); let Malcontent = null; if (HAVE_MALCONTENT) { ({default: Malcontent} = await import('gi://Malcontent?version=0')); Gio._promisify(Malcontent.Manager.prototype, 'get_app_filter_async'); } let _singleton = null; /** * @returns {ParentalControlsManager} */ export function getDefault() { if (_singleton === null) _singleton = new ParentalControlsManager(); return _singleton; } // A manager class which provides cached access to the constructing user’s // parental controls settings. It’s possible for the user’s parental controls // to change at runtime if the Parental Controls application is used by an // administrator from within the user’s session. const ParentalControlsManager = GObject.registerClass({ Signals: { 'app-filter-changed': {}, }, }, class ParentalControlsManager extends GObject.Object { _init() { super._init(); this._initialized = false; this._disabled = false; this._appFilter = null; this._initializeManager(); } async _initializeManager() { if (!HAVE_MALCONTENT) { console.debug('Skipping parental controls support, malcontent not found'); this._initialized = true; this.emit('app-filter-changed'); return; } try { const connection = await Gio.DBus.get(Gio.BusType.SYSTEM, null); this._manager = new Malcontent.Manager({connection}); this._appFilter = await this._getAppFilter(); } catch (e) { logError(e, 'Failed to get parental controls settings'); return; } this._manager.connect('app-filter-changed', this._onAppFilterChanged.bind(this)); // Signal initialisation is complete. this._initialized = true; this.emit('app-filter-changed'); } async _getAppFilter() { let appFilter = null; try { appFilter = await this._manager.get_app_filter_async( Shell.util_get_uid(), Malcontent.ManagerGetValueFlags.NONE, null); } catch (e) { if (!e.matches(Malcontent.ManagerError, Malcontent.ManagerError.DISABLED)) throw e; console.debug('Parental controls globally disabled'); this._disabled = true; } return appFilter; } async _onAppFilterChanged(manager, uid) { // Emit 'changed' signal only if app-filter is changed for currently logged-in user. let currentUid = Shell.util_get_uid(); if (currentUid !== uid) return; try { this._appFilter = await this._getAppFilter(); this.emit('app-filter-changed'); } catch (e) { // Log an error and keep the old app filter. logError(e, `Failed to get new MctAppFilter for uid ${Shell.util_get_uid()} on app-filter-changed`); } } get initialized() { return this._initialized; } // Calculate whether the given app (a Gio.DesktopAppInfo) should be shown // on the desktop, in search results, etc. The app should be shown if: // - The .desktop file doesn’t say it should be hidden. // - The executable from the .desktop file’s Exec line isn’t denied in // the user’s parental controls. // - None of the flatpak app IDs from the X-Flatpak and the // X-Flatpak-RenamedFrom lines are denied in the user’s parental // controls. shouldShowApp(appInfo) { // Quick decision? if (!appInfo.should_show()) return false; // Are parental controls enabled (at configure time or runtime)? if (!HAVE_MALCONTENT || this._disabled) return true; // Have we finished initialising yet? if (!this.initialized) { console.debug(`Hiding app because parental controls not yet initialised: ${appInfo.get_id()}`); return false; } return this._appFilter.is_appinfo_allowed(appInfo); } }); 0707010000018D000081A40000000000000000000000016712993F00000277000000000000000000000000000000000000002C00000000gnome-shell-47.1/js/misc/permissionStore.jsimport Gio from 'gi://Gio'; import {loadInterfaceXML} from './fileUtils.js'; const PermissionStoreIface = loadInterfaceXML('org.freedesktop.impl.portal.PermissionStore'); const PermissionStoreProxy = Gio.DBusProxy.makeProxyWrapper(PermissionStoreIface); /** * @param {Function} initCallback * @param {Gio.Cancellable} cancellable * @returns {Gio.DBusProxy} */ export function PermissionStore(initCallback, cancellable) { return new PermissionStoreProxy(Gio.DBus.session, 'org.freedesktop.impl.portal.PermissionStore', '/org/freedesktop/impl/portal/PermissionStore', initCallback, cancellable); } 0707010000018E000081A40000000000000000000000016712993F00001E7A000000000000000000000000000000000000002A00000000gnome-shell-47.1/js/misc/signalTracker.jsimport GObject from 'gi://GObject'; const destroyableTypes = []; /** * @private * @param {object} obj - an object * @returns {bool} - true if obj has a 'destroy' GObject signal */ function _hasDestroySignal(obj) { return destroyableTypes.some(type => obj instanceof type); } export const TransientSignalHolder = GObject.registerClass( class TransientSignalHolder extends GObject.Object { static [GObject.signals] = { 'destroy': {}, }; constructor(owner) { super(); if (_hasDestroySignal(owner)) owner.connectObject('destroy', () => this.destroy(), this); } destroy() { this.emit('destroy'); } }); registerDestroyableType(TransientSignalHolder); class SignalManager { /** * @returns {SignalManager} - the SignalManager singleton */ static getDefault() { if (!this._singleton) this._singleton = new SignalManager(); return this._singleton; } constructor() { this._signalTrackers = new Map(); global.connect_after('shutdown', () => { [...this._signalTrackers.values()].forEach( tracker => tracker.destroy()); this._signalTrackers.clear(); }); } /** * @param {object} obj - object to get signal tracker for * @returns {SignalTracker} - the signal tracker for object */ getSignalTracker(obj) { let signalTracker = this._signalTrackers.get(obj); if (signalTracker === undefined) { signalTracker = new SignalTracker(obj); this._signalTrackers.set(obj, signalTracker); } return signalTracker; } /** * @param {object} obj - object to get signal tracker for * @returns {?SignalTracker} - the signal tracker for object if it exists */ maybeGetSignalTracker(obj) { return this._signalTrackers.get(obj) ?? null; } /* * @param {object} obj - object to remove signal tracker for * @returns {void} */ removeSignalTracker(obj) { this._signalTrackers.delete(obj); } } class SignalTracker { /** * @param {object=} owner - object that owns the tracker */ constructor(owner) { if (_hasDestroySignal(owner)) this._ownerDestroyId = owner.connect_after('destroy', () => this.clear()); this._owner = owner; this._map = new Map(); } /** * @typedef SignalData * @property {number[]} ownerSignals - a list of handler IDs * @property {number} destroyId - destroy handler ID of tracked object */ /** * @private * @param {object} obj - a tracked object * @returns {SignalData} - signal data for object */ _getSignalData(obj) { let data = this._map.get(obj); if (data === undefined) { data = {ownerSignals: [], destroyId: 0}; this._map.set(obj, data); } return data; } /** * @private * @param {GObject.Object} obj - tracked widget */ _trackDestroy(obj) { const signalData = this._getSignalData(obj); if (signalData.destroyId) return; signalData.destroyId = obj.connect_after('destroy', () => this.untrack(obj)); } _disconnectSignalForProto(proto, obj, id) { proto['disconnect'].call(obj, id); } _getObjectProto(obj) { return obj instanceof GObject.Object ? GObject.Object.prototype : Object.getPrototypeOf(obj); } _disconnectSignal(obj, id) { this._disconnectSignalForProto(this._getObjectProto(obj), obj, id); } _removeTracker() { if (this._ownerDestroyId) this._disconnectSignal(this._owner, this._ownerDestroyId); SignalManager.getDefault().removeSignalTracker(this._owner); delete this._ownerDestroyId; delete this._owner; } /** * @param {object} obj - tracked object * @param {...number} handlerIds - tracked handler IDs * @returns {void} */ track(obj, ...handlerIds) { if (_hasDestroySignal(obj)) this._trackDestroy(obj); this._getSignalData(obj).ownerSignals.push(...handlerIds); } /** * @param {object} obj - tracked object instance * @returns {void} */ untrack(obj) { const {ownerSignals, destroyId} = this._getSignalData(obj); this._map.delete(obj); const ownerProto = this._getObjectProto(this._owner); ownerSignals.forEach(id => this._disconnectSignalForProto(ownerProto, this._owner, id)); if (destroyId) this._disconnectSignal(obj, destroyId); if (this._map.size === 0) this._removeTracker(); } /** * @returns {void} */ clear() { this._map.forEach((_, obj) => this.untrack(obj)); } /** * @returns {void} */ destroy() { this.clear(); this._removeTracker(); } } /** * Connect one or more signals, and associate the handlers * with a tracked object. * * All handlers for a particular object can be disconnected * by calling disconnectObject(). If object is a {Clutter.widget}, * this is done automatically when the widget is destroyed. * * @param {object} thisObj - the emitter object * @param {...any} args - a sequence of signal-name/handler pairs * with an optional flags value, followed by an object to track * @returns {void} */ export function connectObject(thisObj, ...args) { const getParams = argArray => { const [signalName, handler, arg, ...rest] = argArray; if (typeof arg !== 'number') return [signalName, handler, 0, arg, ...rest]; const flags = arg; let flagsMask = 0; Object.values(GObject.ConnectFlags).forEach(v => (flagsMask |= v)); if (!(flags & flagsMask)) throw new Error(`Invalid flag value ${flags}`); if (flags & GObject.ConnectFlags.SWAPPED) throw new Error('Swapped signals are not supported'); return [signalName, handler, flags, ...rest]; }; const connectSignal = (emitter, signalName, handler, flags) => { const isGObject = emitter instanceof GObject.Object; const func = (flags & GObject.ConnectFlags.AFTER) && isGObject ? 'connect_after' : 'connect'; const emitterProto = isGObject ? GObject.Object.prototype : Object.getPrototypeOf(emitter); return emitterProto[func].call(emitter, signalName, handler); }; const signalIds = []; while (args.length > 1) { const [signalName, handler, flags, ...rest] = getParams(args); signalIds.push(connectSignal(thisObj, signalName, handler, flags)); args = rest; } const obj = args.at(0) ?? globalThis; const tracker = SignalManager.getDefault().getSignalTracker(thisObj); tracker.track(obj, ...signalIds); } /** * Disconnect all signals that were connected for * the specified tracked object * * @param {object} thisObj - the emitter object * @param {object} obj - the tracked object * @returns {void} */ export function disconnectObject(thisObj, obj) { SignalManager.getDefault().maybeGetSignalTracker(thisObj)?.untrack(obj); } /** * Register a GObject type as having a 'destroy' signal * that should disconnect all handlers * * @param {GObject.Type} gtype - a GObject type */ export function registerDestroyableType(gtype) { if (!GObject.type_is_a(gtype, GObject.Object)) throw new Error(`${gtype} is not a GObject subclass`); if (!GObject.signal_lookup('destroy', gtype)) throw new Error(`${gtype} does not have a destroy signal`); destroyableTypes.push(gtype); } 0707010000018F000081A40000000000000000000000016712993F00000214000000000000000000000000000000000000002400000000gnome-shell-47.1/js/misc/signals.jsimport * as SignalTracker from './signalTracker.js'; const Signals = imports.signals; export class EventEmitter { connectObject(...args) { return SignalTracker.connectObject(this, ...args); } disconnectObject(...args) { return SignalTracker.disconnectObject(this, ...args); } connect_object(...args) { return this.connectObject(...args); } disconnect_object(...args) { return this.disconnectObject(...args); } } Signals.addSignalMethods(EventEmitter.prototype); 07070100000190000081A40000000000000000000000016712993F00000D90000000000000000000000000000000000000002D00000000gnome-shell-47.1/js/misc/smartcardManager.jsimport Gio from 'gi://Gio'; import * as Signals from './signals.js'; import * as ObjectManager from './objectManager.js'; const SmartcardTokenIface = ` `; let _smartcardManager = null; /** * @returns {SmartcardManager} */ export function getSmartcardManager() { if (_smartcardManager == null) _smartcardManager = new SmartcardManager(); return _smartcardManager; } class SmartcardManager extends Signals.EventEmitter { constructor() { super(); this._objectManager = new ObjectManager.ObjectManager({ connection: Gio.DBus.session, name: 'org.gnome.SettingsDaemon.Smartcard', objectPath: '/org/gnome/SettingsDaemon/Smartcard', knownInterfaces: [SmartcardTokenIface], onLoaded: this._onLoaded.bind(this), }); this._insertedTokens = {}; this._loginToken = null; } _onLoaded() { let tokens = this._objectManager.getProxiesForInterface('org.gnome.SettingsDaemon.Smartcard.Token'); for (let i = 0; i < tokens.length; i++) this._addToken(tokens[i]); this._objectManager.connect('interface-added', (objectManager, interfaceName, proxy) => { if (interfaceName === 'org.gnome.SettingsDaemon.Smartcard.Token') this._addToken(proxy); }); this._objectManager.connect('interface-removed', (objectManager, interfaceName, proxy) => { if (interfaceName === 'org.gnome.SettingsDaemon.Smartcard.Token') this._removeToken(proxy); }); } _updateToken(token) { let objectPath = token.get_object_path(); delete this._insertedTokens[objectPath]; if (token.IsInserted) this._insertedTokens[objectPath] = token; if (token.UsedToLogin) this._loginToken = token; } _addToken(token) { this._updateToken(token); token.connect('g-properties-changed', (proxy, properties) => { const isInsertedChanged = !!properties.lookup_value('IsInserted', null); if (isInsertedChanged) { this._updateToken(token); if (token.IsInserted) this.emit('smartcard-inserted', token); else this.emit('smartcard-removed', token); } }); // Emit a smartcard-inserted at startup if it's already plugged in if (token.IsInserted) this.emit('smartcard-inserted', token); } _removeToken(token) { let objectPath = token.get_object_path(); if (this._insertedTokens[objectPath] === token) { delete this._insertedTokens[objectPath]; this.emit('smartcard-removed', token); } if (this._loginToken === token) this._loginToken = null; token.disconnectAll(); } hasInsertedTokens() { return Object.keys(this._insertedTokens).length > 0; } hasInsertedLoginToken() { if (!this._loginToken) return false; if (!this._loginToken.IsInserted) return false; return true; } } 07070100000191000081A40000000000000000000000016712993F000045D9000000000000000000000000000000000000002A00000000gnome-shell-47.1/js/misc/systemActions.jsimport AccountsService from 'gi://AccountsService'; import Clutter from 'gi://Clutter'; import Gdm from 'gi://Gdm'; import Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import * as GnomeSession from './gnomeSession.js'; import * as LoginManager from './loginManager.js'; import * as Main from '../ui/main.js'; import * as Screenshot from '../ui/screenshot.js'; const LOCKDOWN_SCHEMA = 'org.gnome.desktop.lockdown'; const LOGIN_SCREEN_SCHEMA = 'org.gnome.login-screen'; const DISABLE_USER_SWITCH_KEY = 'disable-user-switching'; const DISABLE_LOCK_SCREEN_KEY = 'disable-lock-screen'; const DISABLE_LOG_OUT_KEY = 'disable-log-out'; const DISABLE_RESTART_KEY = 'disable-restart-buttons'; const ALWAYS_SHOW_LOG_OUT_KEY = 'always-show-log-out'; const POWER_OFF_ACTION_ID = 'power-off'; const RESTART_ACTION_ID = 'restart'; const LOCK_SCREEN_ACTION_ID = 'lock-screen'; const LOGOUT_ACTION_ID = 'logout'; const SUSPEND_ACTION_ID = 'suspend'; const SWITCH_USER_ACTION_ID = 'switch-user'; const LOCK_ORIENTATION_ACTION_ID = 'lock-orientation'; const SCREENSHOT_UI_ACTION_ID = 'open-screenshot-ui'; let _singleton = null; /** * @returns {SystemActions} */ export function getDefault() { if (_singleton == null) _singleton = new SystemActions(); return _singleton; } const SystemActions = GObject.registerClass({ Properties: { 'can-power-off': GObject.ParamSpec.boolean( 'can-power-off', null, null, GObject.ParamFlags.READABLE, false), 'can-restart': GObject.ParamSpec.boolean( 'can-restart', null, null, GObject.ParamFlags.READABLE, false), 'can-suspend': GObject.ParamSpec.boolean( 'can-suspend', null, null, GObject.ParamFlags.READABLE, false), 'can-lock-screen': GObject.ParamSpec.boolean( 'can-lock-screen', null, null, GObject.ParamFlags.READABLE, false), 'can-switch-user': GObject.ParamSpec.boolean( 'can-switch-user', null, null, GObject.ParamFlags.READABLE, false), 'can-logout': GObject.ParamSpec.boolean( 'can-logout', null, null, GObject.ParamFlags.READABLE, false), 'can-lock-orientation': GObject.ParamSpec.boolean( 'can-lock-orientation', null, null, GObject.ParamFlags.READABLE, false), 'orientation-lock-icon': GObject.ParamSpec.string( 'orientation-lock-icon', null, null, GObject.ParamFlags.READWRITE, null), }, }, class SystemActions extends GObject.Object { _init() { super._init(); this._canHavePowerOff = true; this._canHaveSuspend = true; function tokenizeKeywords(keywords) { return keywords.split(';').map(keyword => GLib.str_tokenize_and_fold(keyword, null)).flat(2); } this._actions = new Map(); this._actions.set(POWER_OFF_ACTION_ID, { // Translators: The name of the power-off action in search name: C_('search-result', 'Power Off'), iconName: 'system-shutdown-symbolic', // Translators: A list of keywords that match the power-off action, separated by semicolons keywords: tokenizeKeywords(_('power off;poweroff;shutdown;halt;stop')), available: false, }); this._actions.set(RESTART_ACTION_ID, { // Translators: The name of the restart action in search name: C_('search-result', 'Restart'), iconName: 'system-reboot-symbolic', // Translators: A list of keywords that match the restart action, separated by semicolons keywords: tokenizeKeywords(_('reboot;restart;')), available: false, }); this._actions.set(LOCK_SCREEN_ACTION_ID, { // Translators: The name of the lock screen action in search name: C_('search-result', 'Lock Screen'), iconName: 'system-lock-screen-symbolic', // Translators: A list of keywords that match the lock screen action, separated by semicolons keywords: tokenizeKeywords(_('lock screen')), available: false, }); this._actions.set(LOGOUT_ACTION_ID, { // Translators: The name of the logout action in search name: C_('search-result', 'Log Out'), iconName: 'system-log-out-symbolic', // Translators: A list of keywords that match the logout action, separated by semicolons keywords: tokenizeKeywords(_('logout;log out;sign off')), available: false, }); this._actions.set(SUSPEND_ACTION_ID, { // Translators: The name of the suspend action in search name: C_('search-result', 'Suspend'), iconName: 'media-playback-pause-symbolic', // Translators: A list of keywords that match the suspend action, separated by semicolons keywords: tokenizeKeywords(_('suspend;sleep')), available: false, }); this._actions.set(SWITCH_USER_ACTION_ID, { // Translators: The name of the switch user action in search name: C_('search-result', 'Switch User'), iconName: 'system-switch-user-symbolic', // Translators: A list of keywords that match the switch user action, separated by semicolons keywords: tokenizeKeywords(_('switch user')), available: false, }); this._actions.set(LOCK_ORIENTATION_ACTION_ID, { name: '', iconName: '', // Translators: A list of keywords that match the lock orientation action, separated by semicolons keywords: tokenizeKeywords(_('lock orientation;unlock orientation;screen;rotation')), available: false, }); this._actions.set(SCREENSHOT_UI_ACTION_ID, { // Translators: The name of the screenshot UI action in search name: C_('search-result', 'Take a Screenshot'), iconName: 'record-screen-symbolic', // Translators: A list of keywords that match the screenshot UI action, separated by semicolons keywords: tokenizeKeywords(_('screenshot;screencast;snip;capture;record')), available: true, }); this._loginScreenSettings = new Gio.Settings({schema_id: LOGIN_SCREEN_SCHEMA}); this._lockdownSettings = new Gio.Settings({schema_id: LOCKDOWN_SCHEMA}); this._orientationSettings = new Gio.Settings({schema_id: 'org.gnome.settings-daemon.peripherals.touchscreen'}); this._session = new GnomeSession.SessionManager(); this._loginManager = LoginManager.getLoginManager(); this._monitorManager = global.backend.get_monitor_manager(); this._userManager = AccountsService.UserManager.get_default(); this._userManager.connect('notify::is-loaded', () => this._updateMultiUser()); this._userManager.connect('notify::has-multiple-users', () => this._updateMultiUser()); this._userManager.connect('user-added', () => this._updateMultiUser()); this._userManager.connect('user-removed', () => this._updateMultiUser()); this._lockdownSettings.connect(`changed::${DISABLE_USER_SWITCH_KEY}`, () => this._updateSwitchUser()); this._lockdownSettings.connect(`changed::${DISABLE_LOG_OUT_KEY}`, () => this._updateLogout()); global.settings.connect(`changed::${ALWAYS_SHOW_LOG_OUT_KEY}`, () => this._updateLogout()); this._lockdownSettings.connect(`changed::${DISABLE_LOCK_SCREEN_KEY}`, () => this._updateLockScreen()); this._lockdownSettings.connect(`changed::${DISABLE_LOG_OUT_KEY}`, () => this._updateHaveShutdown()); this.forceUpdate(); this._orientationSettings.connect('changed::orientation-lock', () => { this._updateOrientationLock(); this._updateOrientationLockStatus(); }); Main.layoutManager.connect('monitors-changed', () => this._updateOrientationLock()); this._monitorManager.connect('notify::panel-orientation-managed', () => this._updateOrientationLock()); this._updateOrientationLock(); this._updateOrientationLockStatus(); Main.sessionMode.connect('updated', () => this._sessionUpdated()); this._sessionUpdated(); } get canPowerOff() { return this._actions.get(POWER_OFF_ACTION_ID).available; } get canRestart() { return this._actions.get(RESTART_ACTION_ID).available; } get canSuspend() { return this._actions.get(SUSPEND_ACTION_ID).available; } get canLockScreen() { return this._actions.get(LOCK_SCREEN_ACTION_ID).available; } get canSwitchUser() { return this._actions.get(SWITCH_USER_ACTION_ID).available; } get canLogout() { return this._actions.get(LOGOUT_ACTION_ID).available; } get canLockOrientation() { return this._actions.get(LOCK_ORIENTATION_ACTION_ID).available; } get orientationLockIcon() { return this._actions.get(LOCK_ORIENTATION_ACTION_ID).iconName; } _updateOrientationLock() { const available = this._monitorManager.get_panel_orientation_managed(); this._actions.get(LOCK_ORIENTATION_ACTION_ID).available = available; this.notify('can-lock-orientation'); } _updateOrientationLockStatus() { let locked = this._orientationSettings.get_boolean('orientation-lock'); let action = this._actions.get(LOCK_ORIENTATION_ACTION_ID); // Translators: The name of the lock orientation action in search // and in the system status menu let name = locked ? C_('search-result', 'Unlock Screen Rotation') : C_('search-result', 'Lock Screen Rotation'); let iconName = locked ? 'rotation-locked-symbolic' : 'rotation-allowed-symbolic'; action.name = name; action.iconName = iconName; this.notify('orientation-lock-icon'); } _sessionUpdated() { this._updateLockScreen(); this._updatePowerOff(); this._updateSuspend(); this._updateMultiUser(); } forceUpdate() { // Whether those actions are available or not depends on both lockdown // settings and Polkit policy - we don't get change notifications for the // latter, so their value may be outdated; force an update now this._updateHaveShutdown(); this._updateHaveSuspend(); } getMatchingActions(terms) { // terms is a list of strings terms = terms.map( term => GLib.str_tokenize_and_fold(term, null)[0]).flat(2); // tokenizing may return an empty array if (terms.length === 0) return []; let results = []; for (let [key, {available, keywords}] of this._actions) { if (available && terms.every(t => keywords.some(k => k.startsWith(t)))) results.push(key); } return results; } getName(id) { return this._actions.get(id).name; } getIconName(id) { return this._actions.get(id).iconName; } activateAction(id) { switch (id) { case POWER_OFF_ACTION_ID: this.activatePowerOff(); break; case RESTART_ACTION_ID: this.activateRestart(); break; case LOCK_SCREEN_ACTION_ID: this.activateLockScreen(); break; case LOGOUT_ACTION_ID: this.activateLogout(); break; case SUSPEND_ACTION_ID: this.activateSuspend(); break; case SWITCH_USER_ACTION_ID: this.activateSwitchUser(); break; case LOCK_ORIENTATION_ACTION_ID: this.activateLockOrientation(); break; case SCREENSHOT_UI_ACTION_ID: this.activateScreenshotUI(); break; } } _updateLockScreen() { let showLock = !Main.sessionMode.isLocked && !Main.sessionMode.isGreeter; let allowLockScreen = !this._lockdownSettings.get_boolean(DISABLE_LOCK_SCREEN_KEY); this._actions.get(LOCK_SCREEN_ACTION_ID).available = showLock && allowLockScreen && LoginManager.canLock(); this.notify('can-lock-screen'); } async _updateHaveShutdown() { try { const [canShutdown] = await this._session.CanShutdownAsync(); this._canHavePowerOff = canShutdown; } catch (e) { this._canHavePowerOff = false; } this._updatePowerOff(); } _updatePowerOff() { let disabled = Main.sessionMode.isLocked || (Main.sessionMode.isGreeter && this._loginScreenSettings.get_boolean(DISABLE_RESTART_KEY)); this._actions.get(POWER_OFF_ACTION_ID).available = this._canHavePowerOff && !disabled; this.notify('can-power-off'); this._actions.get(RESTART_ACTION_ID).available = this._canHavePowerOff && !disabled; this.notify('can-restart'); } async _updateHaveSuspend() { const {canSuspend, needsAuth} = await this._loginManager.canSuspend(); this._canHaveSuspend = canSuspend; this._suspendNeedsAuth = needsAuth; this._updateSuspend(); } _updateSuspend() { let disabled = (Main.sessionMode.isLocked && this._suspendNeedsAuth) || (Main.sessionMode.isGreeter && this._loginScreenSettings.get_boolean(DISABLE_RESTART_KEY)); this._actions.get(SUSPEND_ACTION_ID).available = this._canHaveSuspend && !disabled; this.notify('can-suspend'); } _updateMultiUser() { this._updateLogout(); this._updateSwitchUser(); } _updateSwitchUser() { let allowSwitch = !this._lockdownSettings.get_boolean(DISABLE_USER_SWITCH_KEY); let multiUser = this._userManager.can_switch() && this._userManager.has_multiple_users; let shouldShowInMode = !Main.sessionMode.isLocked && !Main.sessionMode.isGreeter; let visible = allowSwitch && multiUser && shouldShowInMode; this._actions.get(SWITCH_USER_ACTION_ID).available = visible; this.notify('can-switch-user'); return visible; } _updateLogout() { let user = this._userManager.get_user(GLib.get_user_name()); let allowLogout = !this._lockdownSettings.get_boolean(DISABLE_LOG_OUT_KEY); let alwaysShow = global.settings.get_boolean(ALWAYS_SHOW_LOG_OUT_KEY); let systemAccount = user.system_account; let localAccount = user.local_account; let multiUser = this._userManager.has_multiple_users; let multiSession = Gdm.get_session_ids().length > 1; let shouldShowInMode = !Main.sessionMode.isLocked && !Main.sessionMode.isGreeter; let visible = allowLogout && (alwaysShow || multiUser || multiSession || systemAccount || !localAccount) && shouldShowInMode; this._actions.get(LOGOUT_ACTION_ID).available = visible; this.notify('can-logout'); return visible; } activateLockOrientation() { if (!this._actions.get(LOCK_ORIENTATION_ACTION_ID).available) throw new Error('The lock-orientation action is not available!'); let locked = this._orientationSettings.get_boolean('orientation-lock'); this._orientationSettings.set_boolean('orientation-lock', !locked); } activateLockScreen() { if (!this._actions.get(LOCK_SCREEN_ACTION_ID).available) throw new Error('The lock-screen action is not available!'); Main.screenShield.lock(true); } activateSwitchUser() { if (!this._actions.get(SWITCH_USER_ACTION_ID).available) throw new Error('The switch-user action is not available!'); if (Main.screenShield) Main.screenShield.lock(false); Clutter.threads_add_repaint_func_full(Clutter.RepaintFlags.POST_PAINT, () => { Gdm.goto_login_session_sync(null); return false; }); } activateLogout() { if (!this._actions.get(LOGOUT_ACTION_ID).available) throw new Error('The logout action is not available!'); Main.overview.hide(); this._session.LogoutAsync(0).catch(logError); } activatePowerOff() { if (!this._actions.get(POWER_OFF_ACTION_ID).available) throw new Error('The power-off action is not available!'); this._session.ShutdownAsync(0).catch(logError); } activateRestart() { if (!this._actions.get(RESTART_ACTION_ID).available) throw new Error('The restart action is not available!'); this._session.RebootAsync().catch(logError); } activateSuspend() { if (!this._actions.get(SUSPEND_ACTION_ID).available) throw new Error('The suspend action is not available!'); this._loginManager.suspend(); } activateScreenshotUI() { if (!this._actions.get(SCREENSHOT_UI_ACTION_ID).available) throw new Error('The screenshot UI action is not available!'); if (this._overviewHiddenId) return; this._overviewHiddenId = Main.overview.connect('hidden', () => { Main.overview.disconnect(this._overviewHiddenId); delete this._overviewHiddenId; Screenshot.showScreenshotUI(); }); } }); 07070100000192000081A40000000000000000000000016712993F0000384C000000000000000000000000000000000000002100000000gnome-shell-47.1/js/misc/util.jsimport Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import Pango from 'gi://Pango'; import Shell from 'gi://Shell'; import St from 'gi://St'; import GnomeDesktop from 'gi://GnomeDesktop'; import {formatTime} from './dateUtils.js'; // http://daringfireball.net/2010/07/improved_regex_for_matching_urls const _balancedParens = '\\([^\\s()<>]+\\)'; const _leadingJunk = '[\\s`(\\[{\'\\"<\u00AB\u201C\u2018]'; const _notTrailingJunk = '[^\\s`!()\\[\\]{};:\'\\".,<>?\u00AB\u00BB\u200E\u200F\u201C\u201D\u2018\u2019\u202A\u202C]'; const _urlRegexp = new RegExp( `(^|${_leadingJunk})` + '(' + '(?:' + '(?:http|https|ftp)://' + // scheme:// '|' + 'www\\d{0,3}[.]' + // www. '|' + '[a-z0-9.\\-]+[.][a-z]{2,4}/' + // foo.xx/ ')' + '(?:' + // one or more: '[^\\s()<>]+' + // run of non-space non-() '|' + // or `${_balancedParens}` + // balanced parens ')+' + '(?:' + // end with: `${_balancedParens}` + // balanced parens '|' + // or `${_notTrailingJunk}` + // last non-junk char ')' + ')', 'gi'); let _desktopSettings = null; /** * findUrls: * * @param {string} str string to find URLs in * * Searches `str` for URLs and returns an array of objects with %url * properties showing the matched URL string, and %pos properties indicating * the position within `str` where the URL was found. * * @returns {{url: string, pos: number}[]} the list of match objects, as described above */ export function findUrls(str) { let res = [], match; while ((match = _urlRegexp.exec(str))) res.push({url: match[2], pos: match.index + match[1].length}); return res; } /** * spawn: * * Runs `argv` in the background, handling any errors that occur * when trying to start the program. * * @param {readonly string[]} argv an argv array */ export function spawn(argv) { try { trySpawn(argv); } catch (err) { _handleSpawnError(argv[0], err); } } /** * spawnCommandLine: * * @param {readonly string[]} commandLine a command line * * Runs commandLine in the background, handling any errors that * occur when trying to parse or start the program. */ export function spawnCommandLine(commandLine) { try { let [success_, argv] = GLib.shell_parse_argv(commandLine); trySpawn(argv); } catch (err) { _handleSpawnError(commandLine, err); } } /** * spawnApp: * * @param {readonly string[]} argv an argv array * * Runs argv as if it was an application, handling startup notification */ export function spawnApp(argv) { try { const app = Gio.AppInfo.create_from_commandline(argv.join(' '), null, Gio.AppInfoCreateFlags.SUPPORTS_STARTUP_NOTIFICATION); let context = global.create_app_launch_context(0, -1); app.launch([], context); } catch (err) { _handleSpawnError(argv[0], err); } } /** * trySpawn: * * @param {readonly string[]} argv an argv array * * Runs argv in the background. If launching argv fails, * this will throw an error. */ export function trySpawn(argv) { let pid; try { const launchContext = global.create_app_launch_context(0, -1); pid = Shell.util_spawn_async( null, argv, launchContext.get_environment(), GLib.SpawnFlags.SEARCH_PATH | GLib.SpawnFlags.DO_NOT_REAP_CHILD); } catch (err) { /* Rewrite the error in case of ENOENT */ if (err.matches(GLib.SpawnError, GLib.SpawnError.NOENT)) { throw new GLib.SpawnError({ code: GLib.SpawnError.NOENT, message: _('Command not found'), }); } else if (err instanceof GLib.Error) { // The exception from gjs contains an error string like: // Error invoking GLib.spawn_command_line_async: Failed to // execute child process "foo" (No such file or directory) // We are only interested in the part in the parentheses. (And // we can't pattern match the text, since it gets localized.) let message = err.message.replace(/.*\((.+)\)/, '$1'); throw new err.constructor({code: err.code, message}); } else { throw err; } } // Async call, we don't need the reply though GnomeDesktop.start_systemd_scope(argv[0], pid, null, null, null, () => {}); // Dummy child watch; we don't want to double-fork internally // because then we lose the parent-child relationship, which // can break polkit. See https://bugzilla.redhat.com//show_bug.cgi?id=819275 GLib.child_watch_add(GLib.PRIORITY_DEFAULT, pid, () => {}); } /** * trySpawnCommandLine: * * @param {readonly string[]} commandLine a command line * * Runs commandLine in the background. If launching commandLine * fails, this will throw an error. */ export function trySpawnCommandLine(commandLine) { let success_, argv; try { [success_, argv] = GLib.shell_parse_argv(commandLine); } catch (err) { // Replace "Error invoking GLib.shell_parse_argv: " with // something nicer err.message = err.message.replace(/[^:]*: /, `${_('Could not parse command:')}\n`); throw err; } trySpawn(argv); } function _handleSpawnError(command, err) { const title = _('Execution of “%s” failed:').format(command); // Use dynamic import to not pull in UI related code in unit tests import('../ui/main.js').then( ({notifyError}) => notifyError(title, err.message)); } /** * Fix up embedded markup so that it can be displayed correctly in * UI elements such as the message list. In some cases, we might want to * keep some of the embedded markup, so specify allowMarkup for that case * * @param {string} text containing markup to escape and parse * @param {boolean} allowMarkup to allow embedded markup or just escape it all * @returns the escaped string */ export function fixMarkup(text, allowMarkup) { if (allowMarkup) { // Support &, ", ', < and >, escape all other // occurrences of '&'. let _text = text.replace(/&(?!amp;|quot;|apos;|lt;|gt;)/g, '&'); // Support , , and , escape anything else // so it displays as raw markup. _text = _text.replace(/<(?!\/?[biu]>)/g, '<'); try { Pango.parse_markup(_text, -1, ''); return _text; } catch (e) {} } // !allowMarkup, or invalid markup return GLib.markup_escape_text(text, -1); } /** * Returns an {@link St.Label} with the date passed formatted * using {@link formatTime} * * @param {Date} date the date to format for the label * @param {object} params params for {@link formatTime} * @returns {St.Label} */ export function createTimeLabel(date, params) { if (_desktopSettings == null) _desktopSettings = new Gio.Settings({schema_id: 'org.gnome.desktop.interface'}); let label = new St.Label({text: formatTime(date, params)}); _desktopSettings.connectObject( 'changed::clock-format', () => (label.text = formatTime(date, params)), label); return label; } /** * lowerBound: * * @template T, [K=T] * @param {readonly T[]} array an array or array-like object, already sorted * according to `cmp` * @param {K} val the value to add * @param {(a: T, val: K) => number} cmp a comparator (or undefined to compare as numbers) * @returns {number} * * Returns the position of the first element that is not * lower than `val`, according to `cmp`. * That is, returns the first position at which it * is possible to insert val without violating the * order. * * This is quite like an ordinary binary search, except * that it doesn't stop at first element comparing equal. */ function lowerBound(array, val, cmp) { let min, max, mid, v; cmp ||= (a, b) => a - b; if (array.length === 0) return 0; min = 0; max = array.length; while (min < (max - 1)) { mid = Math.floor((min + max) / 2); v = cmp(array[mid], val); if (v < 0) min = mid + 1; else max = mid; } return min === max || cmp(array[min], val) < 0 ? max : min; } /** * insertSorted: * * @template T, [K=T] * @param {T[]} array an array sorted according to `cmp` * @param {K} val a value to insert * @param {(a: T, val: K) => number} cmp the sorting function * @returns {number} * * Inserts `val` into `array`, preserving the * sorting invariants. * * Returns the position at which it was inserted */ export function insertSorted(array, val, cmp) { let pos = lowerBound(array, val, cmp); array.splice(pos, 0, val); return pos; } /** * @param {number} start * @param {number} end * @param {number} progress * @returns {number} */ export function lerp(start, end, progress) { return start + progress * (end - start); } /** * _GNOMEversionToNumber: * * @param {string} version a GNOME version element * @returns {number} * * Like Number() but returns sortable values for special-cases * 'alpha' and 'beta'. Returns NaN for unhandled 'versions'. */ function _GNOMEversionToNumber(version) { let ret = Number(version); if (!isNaN(ret)) return ret; if (version === 'alpha') return -3; if (version === 'beta') return -2; if (version === 'rc') return -1; return ret; } /** * GNOMEversionCompare: * * @param {string} version1 a string containing a GNOME version * @param {string} version2 a string containing another GNOME version * @returns {number} * * Returns an integer less than, equal to, or greater than * zero, if `version1` is older, equal or newer than `version2` */ export function GNOMEversionCompare(version1, version2) { const v1Array = version1.split('.'); const v2Array = version2.split('.'); for (let i = 0; i < Math.max(v1Array.length, v2Array.length); i++) { let elemV1 = _GNOMEversionToNumber(v1Array[i] || '0'); let elemV2 = _GNOMEversionToNumber(v2Array[i] || '0'); if (elemV1 < elemV2) return -1; if (elemV1 > elemV2) return 1; } return 0; } export class DBusSenderChecker { /** * @param {string[]} allowList - list of allowed well-known names */ constructor(allowList) { this._allowlistMap = new Map(); this._uninitializedNames = new Set(allowList); this._initializedPromise = new Promise(resolve => { this._resolveInitialized = resolve; }); this._watchList = allowList.map(name => { return Gio.DBus.watch_name(Gio.BusType.SESSION, name, Gio.BusNameWatcherFlags.NONE, (conn_, name_, owner) => { this._allowlistMap.set(name, owner); this._checkAndResolveInitialized(name); }, () => { this._allowlistMap.delete(name); this._checkAndResolveInitialized(name); }); }); } /** * @param {string} name - bus name for which the watcher got initialized */ _checkAndResolveInitialized(name) { if (this._uninitializedNames.delete(name) && this._uninitializedNames.size === 0) this._resolveInitialized(); } /** * @async * @param {string} sender - the bus name that invoked the checked method * @returns {bool} */ async _isSenderAllowed(sender) { await this._initializedPromise; return [...this._allowlistMap.values()].includes(sender); } /** * Check whether the bus name that invoked @invocation maps * to an entry in the allow list. * * @async * @throws * @param {Gio.DBusMethodInvocation} invocation - the invocation * @returns {void} */ async checkInvocation(invocation) { if (global.context.unsafe_mode) return; if (await this._isSenderAllowed(invocation.get_sender())) return; throw new GLib.Error(Gio.DBusError, Gio.DBusError.ACCESS_DENIED, `${invocation.get_method_name()} is not allowed`); } /** * @returns {void} */ destroy() { for (const id in this._watchList) Gio.DBus.unwatch_name(id); this._watchList = []; } } /* @class Highlighter Highlight given terms in text using markup. */ export class Highlighter { /** * @param {?string[]} terms - list of terms to highlight */ constructor(terms) { if (!terms) return; const escapedTerms = terms .map(term => Shell.util_regex_escape(term)) .filter(term => term.length > 0); if (escapedTerms.length === 0) return; this._highlightRegex = new RegExp( `(${escapedTerms.join('|')})`, 'gi'); } /** * Highlight all occurences of the terms defined for this * highlighter in the provided text using markup. * * @param {string} text - text to highlight the defined terms in * @returns {string} */ highlight(text) { if (!this._highlightRegex) return GLib.markup_escape_text(text, -1); let escaped = []; let lastMatchEnd = 0; let match; while ((match = this._highlightRegex.exec(text))) { if (match.index > lastMatchEnd) { let unmatched = GLib.markup_escape_text( text.slice(lastMatchEnd, match.index), -1); escaped.push(unmatched); } let matched = GLib.markup_escape_text(match[0], -1); escaped.push(`${matched}`); lastMatchEnd = match.index + match[0].length; } let unmatched = GLib.markup_escape_text( text.slice(lastMatchEnd), -1); escaped.push(unmatched); return escaped.join(''); } } 07070100000193000081A40000000000000000000000016712993F000028A6000000000000000000000000000000000000002400000000gnome-shell-47.1/js/misc/weather.jsimport Geoclue from 'gi://Geoclue'; import Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import GWeather from 'gi://GWeather'; import Shell from 'gi://Shell'; import * as Signals from './signals.js'; import * as PermissionStore from './permissionStore.js'; import {loadInterfaceXML} from './fileUtils.js'; Gio._promisify(Geoclue.Simple, 'new'); const WeatherIntegrationIface = loadInterfaceXML('org.gnome.Shell.WeatherIntegration'); const WEATHER_BUS_NAME = 'org.gnome.Weather'; const WEATHER_OBJECT_PATH = '/org/gnome/Weather'; const WEATHER_INTEGRATION_IFACE = 'org.gnome.Shell.WeatherIntegration'; const WEATHER_APP_ID = 'org.gnome.Weather.desktop'; // Minimum time between updates to show loading indication const UPDATE_THRESHOLD = 10 * GLib.TIME_SPAN_MINUTE; export class WeatherClient extends Signals.EventEmitter { constructor() { super(); this._loading = false; this._locationValid = false; this._lastUpdate = GLib.DateTime.new_from_unix_local(0); this._autoLocationRequested = false; this._mostRecentLocation = null; this._gclueService = null; this._gclueStarted = false; this._gclueStarting = false; this._gclueLocationChangedId = 0; this._needsAuth = true; this._weatherAuthorized = false; this._permStore = new PermissionStore.PermissionStore(async (proxy, error) => { if (error) { log(`Failed to connect to permissionStore: ${error.message}`); return; } if (this._permStore.g_name_owner == null) { // Failed to auto-start, likely because xdg-desktop-portal // isn't installed; don't restrict access to location service this._weatherAuthorized = true; this._updateAutoLocation(); return; } let [perms, data] = [{}, null]; try { [perms, data] = await this._permStore.LookupAsync('gnome', 'geolocation'); } catch (err) { log(`Error looking up permission: ${err.message}`); } const params = ['gnome', 'geolocation', false, data, perms]; this._onPermStoreChanged(this._permStore, '', params); }); this._permStore.connectSignal('Changed', this._onPermStoreChanged.bind(this)); this._locationSettings = new Gio.Settings({schema_id: 'org.gnome.system.location'}); this._locationSettings.connect('changed::enabled', this._updateAutoLocation.bind(this)); this._world = GWeather.Location.get_world(); const providers = GWeather.Provider.METAR | GWeather.Provider.MET_NO | GWeather.Provider.OWM; this._weatherInfo = new GWeather.Info({ application_id: 'org.gnome.Shell', contact_info: 'https://gitlab.gnome.org/GNOME/gnome-shell/-/raw/HEAD/gnome-shell.doap', enabled_providers: providers, }); this._weatherInfo.connect_after('updated', () => { this._lastUpdate = GLib.DateTime.new_now_local(); this.emit('changed'); }); this._weatherApp = null; this._weatherProxy = null; this._createWeatherProxy(); this._settings = new Gio.Settings({ schema_id: 'org.gnome.shell.weather', }); this._settings.connect('changed::automatic-location', this._onAutomaticLocationChanged.bind(this)); this._onAutomaticLocationChanged(); this._settings.connect('changed::locations', this._onLocationsChanged.bind(this)); this._onLocationsChanged(); this._appSystem = Shell.AppSystem.get_default(); this._appSystem.connect('installed-changed', this._onInstalledChanged.bind(this)); this._onInstalledChanged(); } get available() { return this._weatherApp != null; } get loading() { return this._loading; } get hasLocation() { return this._locationValid; } get info() { return this._weatherInfo; } activateApp() { if (this._weatherApp) this._weatherApp.activate(); } update() { if (!this._locationValid) return; let now = GLib.DateTime.new_now_local(); // Update without loading indication if the current info is recent enough if (this._weatherInfo.is_valid() && now.difference(this._lastUpdate) < UPDATE_THRESHOLD) this._weatherInfo.update(); else this._loadInfo(); } get _useAutoLocation() { return this._autoLocationRequested && this._locationSettings.get_boolean('enabled') && (!this._needsAuth || this._weatherAuthorized); } async _createWeatherProxy() { const nodeInfo = Gio.DBusNodeInfo.new_for_xml(WeatherIntegrationIface); try { this._weatherProxy = await Gio.DBusProxy.new( Gio.DBus.session, Gio.DBusProxyFlags.DO_NOT_AUTO_START | Gio.DBusProxyFlags.GET_INVALIDATED_PROPERTIES, nodeInfo.lookup_interface(WEATHER_INTEGRATION_IFACE), WEATHER_BUS_NAME, WEATHER_OBJECT_PATH, WEATHER_INTEGRATION_IFACE, null); } catch (e) { log(`Failed to create GNOME Weather proxy: ${e}`); return; } this._weatherProxy.connect('g-properties-changed', this._onWeatherPropertiesChanged.bind(this)); this._onWeatherPropertiesChanged(); } _onWeatherPropertiesChanged() { if (this._weatherProxy.g_name_owner == null) return; this._settings.set_boolean('automatic-location', this._weatherProxy.AutomaticLocation); this._settings.set_value('locations', new GLib.Variant('av', this._weatherProxy.Locations)); } _onInstalledChanged() { let hadApp = this._weatherApp != null; this._weatherApp = this._appSystem.lookup_app(WEATHER_APP_ID); let haveApp = this._weatherApp != null; if (hadApp !== haveApp) this.emit('changed'); let neededAuth = this._needsAuth; this._needsAuth = this._weatherApp === null || this._weatherApp.app_info.has_key('X-Flatpak'); if (neededAuth !== this._needsAuth) this._updateAutoLocation(); } _loadInfo() { let id = this._weatherInfo.connect('updated', () => { this._weatherInfo.disconnect(id); this._loading = false; }); this._loading = true; this.emit('changed'); this._weatherInfo.update(); } _locationsEqual(loc1, loc2) { if (loc1 === loc2) return true; if (loc1 == null || loc2 == null) return false; return loc1.equal(loc2); } _setLocation(location) { if (this._locationsEqual(this._weatherInfo.location, location)) return; this._weatherInfo.abort(); this._weatherInfo.set_location(location); this._locationValid = location != null; if (location) this._loadInfo(); else this.emit('changed'); } _updateLocationMonitoring() { if (this._useAutoLocation) { if (this._gclueLocationChangedId !== 0 || this._gclueService == null) return; this._gclueLocationChangedId = this._gclueService.connect('notify::location', this._onGClueLocationChanged.bind(this)); this._onGClueLocationChanged(); } else { if (this._gclueLocationChangedId) this._gclueService.disconnect(this._gclueLocationChangedId); this._gclueLocationChangedId = 0; } } async _startGClueService() { if (this._gclueStarting) return; this._gclueStarting = true; try { this._gclueService = await Geoclue.Simple.new( 'org.gnome.Shell', Geoclue.AccuracyLevel.CITY, null); } catch (e) { log(`Failed to connect to Geoclue2 service: ${e.message}`); this._setLocation(this._mostRecentLocation); return; } this._gclueStarted = true; this._gclueService.get_client().distance_threshold = 100; this._updateLocationMonitoring(); } _onGClueLocationChanged() { let geoLocation = this._gclueService.location; // Provide empty name so GWeather sets location name const location = GWeather.Location.new_detached('', null, geoLocation.latitude, geoLocation.longitude); this._setLocation(location); } _onAutomaticLocationChanged() { let useAutoLocation = this._settings.get_boolean('automatic-location'); if (this._autoLocationRequested === useAutoLocation) return; this._autoLocationRequested = useAutoLocation; this._updateAutoLocation(); } _updateAutoLocation() { this._updateLocationMonitoring(); if (this._useAutoLocation) this._startGClueService(); else this._setLocation(this._mostRecentLocation); } _onLocationsChanged() { let locations = this._settings.get_value('locations').deepUnpack(); let serialized = locations.shift(); let mostRecentLocation = null; if (serialized) mostRecentLocation = this._world.deserialize(serialized); if (this._locationsEqual(this._mostRecentLocation, mostRecentLocation)) return; this._mostRecentLocation = mostRecentLocation; if (!this._useAutoLocation || !this._gclueStarted) this._setLocation(this._mostRecentLocation); } _onPermStoreChanged(proxy, sender, params) { let [table, id, deleted_, data_, perms] = params; if (table !== 'gnome' || id !== 'geolocation') return; let permission = perms['org.gnome.Weather'] || ['NONE']; let [accuracy] = permission; this._weatherAuthorized = accuracy !== 'NONE'; this._updateAutoLocation(); } } 07070100000194000081A40000000000000000000000016712993F00000106000000000000000000000000000000000000003300000000gnome-shell-47.1/js/portal-resources.gresource.xml portalHelper/main.js misc/config.js misc/dbusUtils.js misc/fileUtils.js 07070100000195000041ED0000000000000000000000026712993F00000000000000000000000000000000000000000000002100000000gnome-shell-47.1/js/portalHelper07070100000196000081A40000000000000000000000016712993F0000309F000000000000000000000000000000000000002900000000gnome-shell-47.1/js/portalHelper/main.jsimport Adw from 'gi://Adw?version=1'; import Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import Gtk from 'gi://Gtk?version=4.0'; import WebKit from 'gi://WebKit?version=6.0'; import * as Gettext from 'gettext'; import {programInvocationName, programArgs} from 'system'; const _ = Gettext.gettext; import * as Config from '../misc/config.js'; import {loadInterfaceXML} from '../misc/fileUtils.js'; const PortalHelperResult = { CANCELLED: 0, COMPLETED: 1, RECHECK: 2, }; const PortalHelperSecurityLevel = { NOT_YET_DETERMINED: 0, SECURE: 1, INSECURE: 2, }; const HTTP_URI_FLAGS = GLib.UriFlags.HAS_PASSWORD | GLib.UriFlags.ENCODED_PATH | GLib.UriFlags.ENCODED_QUERY | GLib.UriFlags.ENCODED_FRAGMENT | GLib.UriFlags.SCHEME_NORMALIZE | GLib.UriFlags.PARSE_RELAXED; const CONNECTIVITY_CHECK_HOST = 'nmcheck.gnome.org'; const CONNECTIVITY_CHECK_URI = `http://${CONNECTIVITY_CHECK_HOST}`; const CONNECTIVITY_RECHECK_RATELIMIT_TIMEOUT = 30 * GLib.USEC_PER_SEC; const HelperDBusInterface = loadInterfaceXML('org.gnome.Shell.PortalHelper'); const PortalSecurityButton = GObject.registerClass( class PortalSecurityButton extends Gtk.MenuButton { _init() { const popover = new Gtk.Popover(); super._init({ popover, visible: false, }); const vbox = new Gtk.Box({ orientation: Gtk.Orientation.VERTICAL, margin_top: 6, margin_bottom: 6, margin_start: 6, margin_end: 6, spacing: 6, }); popover.set_child(vbox); const hbox = new Gtk.Box({ orientation: Gtk.Orientation.HORIZONTAL, halign: Gtk.Align.CENTER, }); vbox.append(hbox); this._secureIcon = new Gtk.Image(); hbox.append(this._secureIcon); this._secureIcon.bind_property('icon-name', this, 'icon-name', GObject.BindingFlags.DEFAULT); this._titleLabel = new Gtk.Label(); this._titleLabel.add_css_class('title'); hbox.append(this._titleLabel); this._descriptionLabel = new Gtk.Label({ wrap: true, max_width_chars: 32, }); vbox.append(this._descriptionLabel); } setPopoverTitle(label) { this._titleLabel.set_text(label); } setSecurityIcon(securityLevel) { switch (securityLevel) { case PortalHelperSecurityLevel.NOT_YET_DETERMINED: this.hide(); break; case PortalHelperSecurityLevel.SECURE: this.show(); this._secureIcon.icon_name = 'channel-secure-symbolic'; this._descriptionLabel.label = _('Your connection seems to be secure'); break; case PortalHelperSecurityLevel.INSECURE: this.show(); this._secureIcon.icon_name = 'channel-insecure-symbolic'; this._descriptionLabel.label = _('Your connection to this hotspot login is not secure. Passwords or other information you enter on this page can be viewed by people nearby.'); break; } } }); const PortalWindow = GObject.registerClass( class PortalWindow extends Gtk.ApplicationWindow { _init(application, url, timestamp, doneCallback) { super._init({ application, title: _('Hotspot Login'), default_width: 600, default_height: 450, }); const headerbar = new Gtk.HeaderBar(); this._secureMenu = new PortalSecurityButton(); headerbar.pack_start(this._secureMenu); this.set_titlebar(headerbar); if (!url) { url = CONNECTIVITY_CHECK_URI; this._originalUrlWasGnome = true; } else { this._originalUrlWasGnome = false; } this._uri = GLib.Uri.parse(url, HTTP_URI_FLAGS); this._everSeenRedirect = false; this._originalUrl = url; this._doneCallback = doneCallback; this._lastRecheck = 0; this._recheckAtExit = false; this._networkSession = WebKit.NetworkSession.new_ephemeral(); this._networkSession.set_proxy_settings(WebKit.NetworkProxyMode.NO_PROXY, null); this._webContext = new WebKit.WebContext(); this._webContext.set_cache_model(WebKit.CacheModel.DOCUMENT_VIEWER); this._webView = new WebKit.WebView({ networkSession: this._networkSession, webContext: this._webContext, }); this._webView.connect('decide-policy', this._onDecidePolicy.bind(this)); this._webView.connect('load-changed', this._onLoadChanged.bind(this)); this._webView.connect('insecure-content-detected', this._onInsecureContentDetected.bind(this)); this._webView.connect('load-failed-with-tls-errors', this._onLoadFailedWithTlsErrors.bind(this)); this._webView.load_uri(url); this._webView.connect('notify::uri', this._syncUri.bind(this)); this._syncUri(); this.set_child(this._webView); this.maximize(); this.present_with_time(timestamp); this.application.set_accels_for_action('app.quit', ['q', 'w']); } _syncUri() { const {uri} = this._webView; try { const [, , host] = GLib.Uri.split_network(uri, HTTP_URI_FLAGS); this._secureMenu.setPopoverTitle(host); } catch (e) { if (uri != null) console.error(`Failed to parse Uri ${uri}: ${e.message}`); this._secureMenu.setPopoverTitle(''); } } refresh() { this._everSeenRedirect = false; this._webView.load_uri(this._originalUrl); } vfunc_close_request() { if (this._recheckAtExit) this._doneCallback(PortalHelperResult.RECHECK); else this._doneCallback(PortalHelperResult.CANCELLED); return false; } _onLoadChanged(view, loadEvent) { if (loadEvent === WebKit.LoadEvent.STARTED) { this._secureMenu.setSecurityIcon(PortalHelperSecurityLevel.NOT_YET_DETERMINED); } else if (loadEvent === WebKit.LoadEvent.COMMITTED) { let tlsInfo = this._webView.get_tls_info(); let ret = tlsInfo[0]; let flags = tlsInfo[2]; if (ret && flags === 0) this._secureMenu.setSecurityIcon(PortalHelperSecurityLevel.SECURE); else this._secureMenu.setSecurityIcon(PortalHelperSecurityLevel.INSECURE); } } _onInsecureContentDetected() { this._secureMenu.setSecurityIcon(PortalHelperSecurityLevel.INSECURE); } _onLoadFailedWithTlsErrors(view, failingURI, certificate, _errors) { this._secureMenu.setSecurityIcon(PortalHelperSecurityLevel.INSECURE); let uri = GLib.Uri.parse(failingURI, HTTP_URI_FLAGS); this._networkSession.allow_tls_certificate_for_host(certificate, uri.get_host()); this._webView.load_uri(failingURI); return true; } _onDecidePolicy(view, decision, type) { if (type === WebKit.PolicyDecisionType.RESPONSE) return false; const navigationAction = decision.get_navigation_action(); const request = navigationAction.get_request(); if (type === WebKit.PolicyDecisionType.NEW_WINDOW_ACTION) { if (navigationAction.is_user_gesture()) { // Even though the portal asks for a new window, // perform the navigation in the current one. Some // portals open a window as their last login step and // ignoring that window causes them to not let the // user go through. We don't risk popups taking over // the page because we check that the navigation is // user initiated. this._webView.load_request(request); } decision.ignore(); return true; } const uri = GLib.Uri.parse(request.get_uri(), HTTP_URI_FLAGS); if (uri.get_host() !== this._uri.get_host() && this._originalUrlWasGnome) { if (uri.get_host() === CONNECTIVITY_CHECK_HOST && this._everSeenRedirect) { // Yay, we got to gnome! decision.ignore(); this._doneCallback(PortalHelperResult.COMPLETED); return true; } else if (uri.get_host() !== CONNECTIVITY_CHECK_HOST) { this._everSeenRedirect = true; } } // We *may* have finished here, but we don't know for // sure. Tell gnome-shell to run another connectivity check // (but ratelimit the checks, we don't want to spam // nmcheck.gnome.org for portals that have 10 or more internal // redirects - and unfortunately they exist) // If we hit the rate limit, we also queue a recheck // when the window is closed, just in case we miss the // final check and don't realize we're connected // This should not be a problem in the cancelled logic, // because if the user doesn't want to start the login, // we should not see any redirect at all, outside this._uri let now = GLib.get_monotonic_time(); let shouldRecheck = (now - this._lastRecheck) > CONNECTIVITY_RECHECK_RATELIMIT_TIMEOUT; if (shouldRecheck) { this._lastRecheck = now; this._recheckAtExit = false; this._doneCallback(PortalHelperResult.RECHECK); } else { this._recheckAtExit = true; } // Update the URI, in case of chained redirects, so we still // think we're doing the login until gnome-shell kills us this._uri = uri; decision.use(); return true; } }); const WebPortalHelper = GObject.registerClass( class WebPortalHelper extends Adw.Application { _init() { super._init({ application_id: 'org.gnome.Shell.PortalHelper', flags: Gio.ApplicationFlags.IS_SERVICE, inactivity_timeout: 30000, }); this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(HelperDBusInterface, this); this._queue = []; let action = new Gio.SimpleAction({name: 'quit'}); action.connect('activate', () => this.active_window.destroy()); this.add_action(action); } vfunc_dbus_register(connection, path) { this._dbusImpl.export(connection, path); super.vfunc_dbus_register(connection, path); return true; } vfunc_dbus_unregister(connection, path) { this._dbusImpl.unexport_from_connection(connection); super.vfunc_dbus_unregister(connection, path); } vfunc_activate() { // If launched manually (for example for testing), force a dummy authentication // session with the default url this.Authenticate('/org/gnome/dummy', '', 0); } Authenticate(connection, url, timestamp) { this._queue.push({connection, url, timestamp}); this._processQueue(); } Close(connection) { for (let i = 0; i < this._queue.length; i++) { let obj = this._queue[i]; if (obj.connection === connection) { if (obj.window) obj.window.destroy(); this._queue.splice(i, 1); break; } } this._processQueue(); } Refresh(connection) { for (let i = 0; i < this._queue.length; i++) { let obj = this._queue[i]; if (obj.connection === connection) { if (obj.window) obj.window.refresh(); break; } } } _processQueue() { if (this._queue.length === 0) return; let top = this._queue[0]; if (top.window != null) return; top.window = new PortalWindow(this, top.url, top.timestamp, result => { this._dbusImpl.emit_signal('Done', new GLib.Variant('(ou)', [top.connection, result])); }); } }); Gettext.bindtextdomain(Config.GETTEXT_PACKAGE, Config.LOCALEDIR); Gettext.textdomain(Config.GETTEXT_PACKAGE); const app = new WebPortalHelper(); await app.runAsync([programInvocationName, ...programArgs]); 07070100000197000041ED0000000000000000000000026712993F00000000000000000000000000000000000000000000001700000000gnome-shell-47.1/js/ui07070100000198000081A40000000000000000000000016712993F00001713000000000000000000000000000000000000002700000000gnome-shell-47.1/js/ui/accessDialog.jsimport Clutter from 'gi://Clutter'; import Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import Pango from 'gi://Pango'; import Shell from 'gi://Shell'; import St from 'gi://St'; import * as CheckBox from './checkBox.js'; import * as Dialog from './dialog.js'; import * as ModalDialog from './modalDialog.js'; import {DBusSenderChecker} from '../misc/util.js'; import {loadInterfaceXML} from '../misc/fileUtils.js'; const RequestIface = loadInterfaceXML('org.freedesktop.impl.portal.Request'); const AccessIface = loadInterfaceXML('org.freedesktop.impl.portal.Access'); /** @enum {number} */ const DialogResponse = { OK: 0, CANCEL: 1, CLOSED: 2, }; const ALLOWED_SENDERS = [ 'org.gnome.RemoteDesktop.Handover', 'org.freedesktop.impl.portal.desktop.gnome', ]; const AccessDialog = GObject.registerClass( class AccessDialog extends ModalDialog.ModalDialog { _init(invocation, handle, title, description, body, options) { super._init({styleClass: 'access-dialog'}); this._invocation = invocation; this._handle = handle; this._requestExported = false; this._request = Gio.DBusExportedObject.wrapJSObject(RequestIface, this); for (let option in options) options[option] = options[option].deepUnpack(); this._buildLayout(title, description, body, options); } _buildLayout(title, description, body, options) { // No support for non-modal system dialogs, so ignore the option // let modal = options['modal'] || true; let denyLabel = options['deny_label'] || _('Deny'); let grantLabel = options['grant_label'] || _('Allow'); let choices = options['choices'] || []; let content = new Dialog.MessageDialogContent({title, description}); this.contentLayout.add_child(content); this._choices = new Map(); for (let i = 0; i < choices.length; i++) { let [id, name, opts, selected] = choices[i]; if (opts.length > 0) continue; // radio buttons, not implemented let check = new CheckBox.CheckBox(); check.getLabelActor().text = name; check.checked = selected === 'true'; content.add_child(check); this._choices.set(id, check); } if (body) { let bodyLabel = new St.Label({ text: body, x_align: Clutter.ActorAlign.CENTER, }); bodyLabel.clutter_text.ellipsize = Pango.EllipsizeMode.NONE; bodyLabel.clutter_text.line_wrap = true; content.add_child(bodyLabel); } this.addButton({ label: denyLabel, action: () => this._sendResponse(DialogResponse.CANCEL), key: Clutter.KEY_Escape, }); this.addButton({ label: grantLabel, action: () => this._sendResponse(DialogResponse.OK), }); } open() { if (!super.open()) return false; let connection = this._invocation.get_connection(); this._requestExported = this._request.export(connection, this._handle); return true; } CloseAsync(invocation, _params) { if (this._invocation.get_sender() !== invocation.get_sender()) { invocation.return_error_literal( Gio.DBusError, Gio.DBusError.ACCESS_DENIED, ''); return; } this._sendResponse(DialogResponse.CLOSED); } _sendResponse(response) { if (this._requestExported) this._request.unexport(); this._requestExported = false; let results = {}; if (response === DialogResponse.OK) { for (let [id, check] of this._choices) { let checked = check.checked ? 'true' : 'false'; results[id] = new GLib.Variant('s', checked); } } // Delay actual response until the end of the close animation (if any) this.connect('closed', () => { this._invocation.return_value( new GLib.Variant('(ua{sv})', [response, results])); }); this.close(); } }); export class AccessDialogDBus { constructor() { this._accessDialog = null; this._windowTracker = Shell.WindowTracker.get_default(); this._senderChecker = new DBusSenderChecker(ALLOWED_SENDERS); this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(AccessIface, this); this._dbusImpl.export(Gio.DBus.session, '/org/freedesktop/portal/desktop'); } async AccessDialogAsync(params, invocation) { try { await this._senderChecker.checkInvocation(invocation); } catch (e) { invocation.return_gerror(e); return; } if (this._accessDialog) { invocation.return_error_literal( Gio.DBusError, Gio.DBusError.LIMITS_EXCEEDED, 'Already showing a system access dialog'); return; } let [handle, appId, parentWindow_, title, description, body, options] = params; // We probably want to use parentWindow and global.display.focus_window // for this check in the future if (appId && `${appId}.desktop` !== this._windowTracker.focus_app.id) { invocation.return_error_literal( Gio.DBusError, Gio.DBusError.ACCESS_DENIED, 'Only the focused app is allowed to show a system access dialog'); return; } let dialog = new AccessDialog( invocation, handle, title, description, body, options); dialog.open(); dialog.connect('closed', () => (this._accessDialog = null)); this._accessDialog = dialog; } } 07070100000199000081A40000000000000000000000016712993F00009B7D000000000000000000000000000000000000002100000000gnome-shell-47.1/js/ui/altTab.jsimport Atk from 'gi://Atk'; import Clutter from 'gi://Clutter'; import Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import Meta from 'gi://Meta'; import St from 'gi://St'; import Shell from 'gi://Shell'; import * as Main from './main.js'; import * as SwitcherPopup from './switcherPopup.js'; const APP_ICON_HOVER_TIMEOUT = 200; // milliseconds const THUMBNAIL_DEFAULT_SIZE = 256; const THUMBNAIL_POPUP_TIME = 500; // milliseconds const THUMBNAIL_FADE_TIME = 100; // milliseconds const WINDOW_PREVIEW_SIZE = 128; const APP_ICON_SIZE = 96; const APP_ICON_SIZE_SMALL = 48; const baseIconSizes = [96, 64, 48, 32, 22]; /** @enum {number} */ const AppIconMode = { THUMBNAIL_ONLY: 1, APP_ICON_ONLY: 2, BOTH: 3, }; function _createWindowClone(window, size) { let [width, height] = window.get_size(); let scale = Math.min(1.0, size / width, size / height); return new Clutter.Clone({ source: window, width: width * scale, height: height * scale, x_align: Clutter.ActorAlign.CENTER, y_align: Clutter.ActorAlign.CENTER, // usual hack for the usual bug in ClutterBinLayout... x_expand: true, y_expand: true, }); } /** * @param {Meta.Workspace} workspace * @returns {Meta.Window} */ function getWindows(workspace) { // We ignore skip-taskbar windows in switchers, but if they are attached // to their parent, their position in the MRU list may be more appropriate // than the parent; so start with the complete list ... let windows = global.display.get_tab_list(Meta.TabList.NORMAL_ALL, workspace); // ... map windows to their parent where appropriate ... return windows.map(w => { return w.is_attached_dialog() ? w.get_transient_for() : w; // ... and filter out skip-taskbar windows and duplicates }).filter((w, i, a) => !w.skip_taskbar && a.indexOf(w) === i); } export const AppSwitcherPopup = GObject.registerClass( class AppSwitcherPopup extends SwitcherPopup.SwitcherPopup { _init() { super._init(); this._thumbnails = null; this._thumbnailTimeoutId = 0; this._currentWindow = -1; this.thumbnailsVisible = false; let apps = Shell.AppSystem.get_default().get_running(); this._switcherList = new AppSwitcher(apps, this); this._items = this._switcherList.icons; } vfunc_allocate(box) { super.vfunc_allocate(box); // Allocate the thumbnails // We try to avoid overflowing the screen so we base the resulting size on // those calculations if (this._thumbnails) { let childBox = this._switcherList.get_allocation_box(); let primary = Main.layoutManager.primaryMonitor; let leftPadding = this.get_theme_node().get_padding(St.Side.LEFT); let rightPadding = this.get_theme_node().get_padding(St.Side.RIGHT); let bottomPadding = this.get_theme_node().get_padding(St.Side.BOTTOM); let hPadding = leftPadding + rightPadding; let icon = this._items[this._selectedIndex]; let [posX] = icon.get_transformed_position(); let thumbnailCenter = posX + icon.width / 2; let [, childNaturalWidth] = this._thumbnails.get_preferred_width(-1); childBox.x1 = Math.max(primary.x + leftPadding, Math.floor(thumbnailCenter - childNaturalWidth / 2)); if (childBox.x1 + childNaturalWidth > primary.x + primary.width - hPadding) { let offset = childBox.x1 + childNaturalWidth - primary.width + hPadding; childBox.x1 = Math.max(primary.x + leftPadding, childBox.x1 - offset - hPadding); } let spacing = this.get_theme_node().get_length('spacing'); childBox.x2 = childBox.x1 + childNaturalWidth; if (childBox.x2 > primary.x + primary.width - rightPadding) childBox.x2 = primary.x + primary.width - rightPadding; childBox.y1 = this._switcherList.allocation.y2 + spacing; this._thumbnails.addClones(primary.y + primary.height - bottomPadding - childBox.y1); let [, childNaturalHeight] = this._thumbnails.get_preferred_height(-1); childBox.y2 = childBox.y1 + childNaturalHeight; this._thumbnails.allocate(childBox); } } _initialSelection(backward, binding) { if (binding === 'switch-group') { if (backward) this._select(0, this._items[0].cachedWindows.length - 1); else if (this._items[0].cachedWindows.length > 1) this._select(0, 1); else this._select(0, 0); } else if (binding === 'switch-group-backward') { this._select(0, this._items[0].cachedWindows.length - 1); } else if (binding === 'switch-applications-backward') { this._select(this._items.length - 1); } else if (this._items.length === 1) { this._select(0); } else if (backward) { this._select(this._items.length - 1); } else { this._select(1); } } _nextWindow() { // We actually want the second window if we're in the unset state if (this._currentWindow === -1) this._currentWindow = 0; return SwitcherPopup.mod( this._currentWindow + 1, this._items[this._selectedIndex].cachedWindows.length); } _previousWindow() { // Also assume second window here if (this._currentWindow === -1) this._currentWindow = 1; return SwitcherPopup.mod( this._currentWindow - 1, this._items[this._selectedIndex].cachedWindows.length); } _closeAppWindow(appIndex, windowIndex) { let appIcon = this._items[appIndex]; if (!appIcon) return; let window = appIcon.cachedWindows[windowIndex]; if (!window) return; window.delete(global.get_current_time()); } _quitApplication(appIndex) { let appIcon = this._items[appIndex]; if (!appIcon) return; appIcon.app.request_quit(); } _keyPressHandler(keysym, action) { const rtl = Clutter.get_default_text_direction() === Clutter.TextDirection.RTL; if (action === Meta.KeyBindingAction.SWITCH_GROUP) { if (!this._thumbnailsFocused) this._select(this._selectedIndex, 0); else this._select(this._selectedIndex, this._nextWindow()); } else if (action === Meta.KeyBindingAction.SWITCH_GROUP_BACKWARD) { this._select(this._selectedIndex, this._previousWindow()); } else if (action === Meta.KeyBindingAction.SWITCH_APPLICATIONS) { this._select(this._next()); } else if (action === Meta.KeyBindingAction.SWITCH_APPLICATIONS_BACKWARD) { this._select(this._previous()); } else if (keysym === Clutter.KEY_q || keysym === Clutter.KEY_Q) { this._quitApplication(this._selectedIndex); } else if (this._thumbnailsFocused) { if (keysym === Clutter.KEY_Left) this._select(this._selectedIndex, rtl ? this._nextWindow() : this._previousWindow()); else if (keysym === Clutter.KEY_Right) this._select(this._selectedIndex, rtl ? this._previousWindow() : this._nextWindow()); else if (keysym === Clutter.KEY_Up) this._select(this._selectedIndex, null, true); else if (keysym === Clutter.KEY_w || keysym === Clutter.KEY_W || keysym === Clutter.KEY_F4) this._closeAppWindow(this._selectedIndex, this._currentWindow); else return Clutter.EVENT_PROPAGATE; } else if (keysym === Clutter.KEY_Left) { this._select(rtl ? this._next() : this._previous()); } else if (keysym === Clutter.KEY_Right) { this._select(rtl ? this._previous() : this._next()); } else if (keysym === Clutter.KEY_Down) { this._select(this._selectedIndex, 0); } else { return Clutter.EVENT_PROPAGATE; } return Clutter.EVENT_STOP; } _scrollHandler(direction) { if (direction === Clutter.ScrollDirection.UP) { if (this._thumbnailsFocused) { if (this._currentWindow === 0 || this._currentWindow === -1) this._select(this._previous()); else this._select(this._selectedIndex, this._previousWindow()); } else { let nwindows = this._items[this._selectedIndex].cachedWindows.length; if (nwindows > 1) this._select(this._selectedIndex, nwindows - 1); else this._select(this._previous()); } } else if (direction === Clutter.ScrollDirection.DOWN) { if (this._thumbnailsFocused) { if (this._currentWindow === this._items[this._selectedIndex].cachedWindows.length - 1) this._select(this._next()); else this._select(this._selectedIndex, this._nextWindow()); } else { let nwindows = this._items[this._selectedIndex].cachedWindows.length; if (nwindows > 1) this._select(this._selectedIndex, 0); else this._select(this._next()); } } } _itemActivatedHandler(n) { // If the user clicks on the selected app, activate the // selected window; otherwise (eg, they click on an app while // !mouseActive) activate the clicked-on app. if (n === this._selectedIndex && this._currentWindow >= 0) this._select(n, this._currentWindow); else this._select(n); } _windowActivated(thumbnailSwitcher, n) { let appIcon = this._items[this._selectedIndex]; Main.activateWindow(appIcon.cachedWindows[n]); this.fadeAndDestroy(); } _windowEntered(thumbnailSwitcher, n) { if (!this.mouseActive) return; this._select(this._selectedIndex, n); } _windowRemoved(thumbnailSwitcher, n) { let appIcon = this._items[this._selectedIndex]; if (!appIcon) return; if (appIcon.cachedWindows.length > 0) { let newIndex = Math.min(n, appIcon.cachedWindows.length - 1); this._select(this._selectedIndex, newIndex); } } _finish(timestamp) { let appIcon = this._items[this._selectedIndex]; if (this._currentWindow < 0) appIcon.app.activate_window(appIcon.cachedWindows[0], timestamp); else if (appIcon.cachedWindows[this._currentWindow]) Main.activateWindow(appIcon.cachedWindows[this._currentWindow], timestamp); super._finish(timestamp); } _onDestroy() { if (this._thumbnailTimeoutId !== 0) GLib.source_remove(this._thumbnailTimeoutId); super._onDestroy(); } /** * _select: * * @param {number} app index of the app to select * @param {number} [window] index of which of `app`'s windows to select * @param {boolean} [forceAppFocus] optional flag, see below * * Selects the indicated `app`, and optional `window`, and sets * this._thumbnailsFocused appropriately to indicate whether the * arrow keys should act on the app list or the thumbnail list. * * If `app` is specified and `window` is unspecified or %null, then * the app is highlighted (ie, given a light background), and the * current thumbnail list, if any, is destroyed. If `app` has * multiple windows, and `forceAppFocus` is not %true, then a * timeout is started to open a thumbnail list. * * If `app` and `window` are specified (and `forceAppFocus` is not), * then `app` will be outlined, a thumbnail list will be created * and focused (if it hasn't been already), and the `window`'th * window in it will be highlighted. * * If `app` and `window` are specified and `forceAppFocus` is %true, * then `app` will be highlighted, and `window` outlined, and the * app list will have the keyboard focus. */ _select(app, window, forceAppFocus) { if (app !== this._selectedIndex || window == null) { if (this._thumbnails) this._destroyThumbnails(); } if (this._thumbnailTimeoutId !== 0) { GLib.source_remove(this._thumbnailTimeoutId); this._thumbnailTimeoutId = 0; } this._thumbnailsFocused = (window != null) && !forceAppFocus; this._selectedIndex = app; this._currentWindow = window ? window : -1; this._switcherList.highlight(app, this._thumbnailsFocused); if (window != null) { if (!this._thumbnails) this._createThumbnails(); this._currentWindow = window; this._thumbnails.highlight(window, forceAppFocus); } else if (this._items[this._selectedIndex].cachedWindows.length > 1 && !forceAppFocus) { this._thumbnailTimeoutId = GLib.timeout_add( GLib.PRIORITY_DEFAULT, THUMBNAIL_POPUP_TIME, this._timeoutPopupThumbnails.bind(this)); GLib.Source.set_name_by_id(this._thumbnailTimeoutId, '[gnome-shell] this._timeoutPopupThumbnails'); } } _timeoutPopupThumbnails() { if (!this._thumbnails) this._createThumbnails(); this._thumbnailTimeoutId = 0; this._thumbnailsFocused = false; return GLib.SOURCE_REMOVE; } _destroyThumbnails() { let thumbnailsActor = this._thumbnails; this._thumbnails.ease({ opacity: 0, duration: THUMBNAIL_FADE_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => { thumbnailsActor.destroy(); this.thumbnailsVisible = false; }, }); this._thumbnails = null; this._switcherList.removeAccessibleState(this._selectedIndex, Atk.StateType.EXPANDED); } _createThumbnails() { this._thumbnails = new ThumbnailSwitcher(this._items[this._selectedIndex].cachedWindows); this._thumbnails.connect('item-activated', this._windowActivated.bind(this)); this._thumbnails.connect('item-entered', this._windowEntered.bind(this)); this._thumbnails.connect('item-removed', this._windowRemoved.bind(this)); this._thumbnails.connect('destroy', () => { this._thumbnails = null; this._thumbnailsFocused = false; }); this.add_child(this._thumbnails); // Need to force an allocation so we can figure out whether we // need to scroll when selecting this._thumbnails.get_allocation_box(); this._thumbnails.opacity = 0; this._thumbnails.ease({ opacity: 255, duration: THUMBNAIL_FADE_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => { this.thumbnailsVisible = true; }, }); this._switcherList.addAccessibleState(this._selectedIndex, Atk.StateType.EXPANDED); } }); const CyclerHighlight = GObject.registerClass( class CyclerHighlight extends St.Widget { _init() { super._init({layout_manager: new Clutter.BinLayout()}); this._window = null; this._clone = new Clutter.Clone(); this.add_child(this._clone); this._highlight = new St.Widget({style_class: 'cycler-highlight'}); this.add_child(this._highlight); let coordinate = Clutter.BindCoordinate.ALL; let constraint = new Clutter.BindConstraint({coordinate}); this._clone.bind_property('source', constraint, 'source', 0); this.add_constraint(constraint); this.connect('destroy', this._onDestroy.bind(this)); } set window(w) { if (this._window === w) return; this._window?.disconnectObject(this); this._window = w; if (this._clone.source) this._clone.source.sync_visibility(); const windowActor = this._window?.get_compositor_private() ?? null; if (windowActor) windowActor.hide(); this._clone.source = windowActor; if (this._window) { this._onSizeChanged(); this._window.connectObject('size-changed', this._onSizeChanged.bind(this), this); } else { this._highlight.set_size(0, 0); this._highlight.hide(); } } _onSizeChanged() { const bufferRect = this._window.get_buffer_rect(); const rect = this._window.get_frame_rect(); this._highlight.set_size(rect.width, rect.height); this._highlight.set_position( rect.x - bufferRect.x, rect.y - bufferRect.y); this._highlight.show(); } _onDestroy() { this.window = null; } }); // We don't show an actual popup, so just provide what SwitcherPopup // expects instead of inheriting from SwitcherList const CyclerList = GObject.registerClass({ Signals: { 'item-activated': {param_types: [GObject.TYPE_INT]}, 'item-entered': {param_types: [GObject.TYPE_INT]}, 'item-removed': {param_types: [GObject.TYPE_INT]}, 'item-highlighted': {param_types: [GObject.TYPE_INT]}, }, }, class CyclerList extends St.Widget { highlight(index, _justOutline) { this.emit('item-highlighted', index); } }); const CyclerPopup = GObject.registerClass({ GTypeFlags: GObject.TypeFlags.ABSTRACT, }, class CyclerPopup extends SwitcherPopup.SwitcherPopup { _init() { super._init(); this._items = this._getWindows(); this._highlight = new CyclerHighlight(); global.window_group.add_child(this._highlight); this._switcherList = new CyclerList(); this._switcherList.connect('item-highlighted', (list, index) => { this._highlightItem(index); }); } _highlightItem(index, _justOutline) { this._highlight.window = this._items[index]; global.window_group.set_child_above_sibling(this._highlight, null); } _finish() { let window = this._items[this._selectedIndex]; let ws = window.get_workspace(); let workspaceManager = global.workspace_manager; let activeWs = workspaceManager.get_active_workspace(); if (window.minimized) { Main.wm.skipNextEffect(window.get_compositor_private()); window.unminimize(); } if (activeWs === ws) { Main.activateWindow(window); } else { // If the selected window is on a different workspace, we don't // want it to disappear, then slide in with the workspace; instead, // always activate it on the active workspace ... activeWs.activate_with_focus(window, global.get_current_time()); // ... then slide it over to the original workspace if necessary Main.wm.actionMoveWindow(window, ws); } super._finish(); } _onDestroy() { this._highlight.destroy(); super._onDestroy(); } }); export const GroupCyclerPopup = GObject.registerClass( class GroupCyclerPopup extends CyclerPopup { _init() { this._settings = new Gio.Settings({schema_id: 'org.gnome.shell.app-switcher'}); super._init(); } _getWindows() { let app = Shell.WindowTracker.get_default().focus_app; let appWindows = app?.get_windows() ?? []; if (this._settings.get_boolean('current-workspace-only')) { const workspaceManager = global.workspace_manager; const workspace = workspaceManager.get_active_workspace(); appWindows = appWindows.filter( window => window.located_on_workspace(workspace)); } return appWindows; } _keyPressHandler(keysym, action) { if (action === Meta.KeyBindingAction.CYCLE_GROUP) this._select(this._next()); else if (action === Meta.KeyBindingAction.CYCLE_GROUP_BACKWARD) this._select(this._previous()); else return Clutter.EVENT_PROPAGATE; return Clutter.EVENT_STOP; } }); export const WindowSwitcherPopup = GObject.registerClass( class WindowSwitcherPopup extends SwitcherPopup.SwitcherPopup { _init() { super._init(); this._settings = new Gio.Settings({schema_id: 'org.gnome.shell.window-switcher'}); let windows = this._getWindowList(); let mode = this._settings.get_enum('app-icon-mode'); this._switcherList = new WindowSwitcher(windows, mode); this._items = this._switcherList.icons; } _getWindowList() { let workspace = null; if (this._settings.get_boolean('current-workspace-only')) { let workspaceManager = global.workspace_manager; workspace = workspaceManager.get_active_workspace(); } return getWindows(workspace); } _closeWindow(windowIndex) { let windowIcon = this._items[windowIndex]; if (!windowIcon) return; windowIcon.window.delete(global.get_current_time()); } _keyPressHandler(keysym, action) { const rtl = Clutter.get_default_text_direction() === Clutter.TextDirection.RTL; if (action === Meta.KeyBindingAction.SWITCH_WINDOWS) this._select(this._next()); else if (action === Meta.KeyBindingAction.SWITCH_WINDOWS_BACKWARD) this._select(this._previous()); else if (keysym === Clutter.KEY_Left) this._select(rtl ? this._next() : this._previous()); else if (keysym === Clutter.KEY_Right) this._select(rtl ? this._previous() : this._next()); else if (keysym === Clutter.KEY_w || keysym === Clutter.KEY_W || keysym === Clutter.KEY_F4) this._closeWindow(this._selectedIndex); else return Clutter.EVENT_PROPAGATE; return Clutter.EVENT_STOP; } _finish() { Main.activateWindow(this._items[this._selectedIndex].window); super._finish(); } }); export const WindowCyclerPopup = GObject.registerClass( class WindowCyclerPopup extends CyclerPopup { _init() { this._settings = new Gio.Settings({schema_id: 'org.gnome.shell.window-switcher'}); super._init(); } _getWindows() { let workspace = null; if (this._settings.get_boolean('current-workspace-only')) { let workspaceManager = global.workspace_manager; workspace = workspaceManager.get_active_workspace(); } return getWindows(workspace); } _keyPressHandler(keysym, action) { if (action === Meta.KeyBindingAction.CYCLE_WINDOWS) this._select(this._next()); else if (action === Meta.KeyBindingAction.CYCLE_WINDOWS_BACKWARD) this._select(this._previous()); else return Clutter.EVENT_PROPAGATE; return Clutter.EVENT_STOP; } }); export const AppIcon = GObject.registerClass( class AppIcon extends St.BoxLayout { _init(app) { super._init({ style_class: 'alt-tab-app', vertical: true, }); this.app = app; this.icon = null; this._iconBin = new St.Bin(); this.add_child(this._iconBin); this.label = new St.Label({ text: this.app.get_name(), x_align: Clutter.ActorAlign.CENTER, }); this.add_child(this.label); } // eslint-disable-next-line camelcase set_size(size) { this.icon = this.app.create_icon_texture(size); this._iconBin.child = this.icon; } }); const AppSwitcher = GObject.registerClass( class AppSwitcher extends SwitcherPopup.SwitcherList { _init(apps, altTabPopup) { super._init(true); this.icons = []; this._arrows = []; let windowTracker = Shell.WindowTracker.get_default(); let settings = new Gio.Settings({schema_id: 'org.gnome.shell.app-switcher'}); let workspace = null; if (settings.get_boolean('current-workspace-only')) { let workspaceManager = global.workspace_manager; workspace = workspaceManager.get_active_workspace(); } let allWindows = getWindows(workspace); // Construct the AppIcons, add to the popup for (let i = 0; i < apps.length; i++) { let appIcon = new AppIcon(apps[i]); // Cache the window list now; we don't handle dynamic changes here, // and we don't want to be continually retrieving it appIcon.cachedWindows = allWindows.filter( w => windowTracker.get_window_app(w) === appIcon.app); if (appIcon.cachedWindows.length > 0) this._addIcon(appIcon); } this._altTabPopup = altTabPopup; this._delayedHighlighted = -1; this._mouseTimeOutId = 0; this.connect('destroy', this._onDestroy.bind(this)); } _onDestroy() { if (this._mouseTimeOutId !== 0) GLib.source_remove(this._mouseTimeOutId); this.icons.forEach( icon => icon.app.disconnectObject(this)); } _setIconSize() { let j = 0; while (this._items.length > 1 && this._items[j].style_class !== 'item-box') j++; let themeNode = this._items[j].get_theme_node(); this._list.ensure_style(); let iconPadding = themeNode.get_horizontal_padding(); let iconBorder = themeNode.get_border_width(St.Side.LEFT) + themeNode.get_border_width(St.Side.RIGHT); let [, labelNaturalHeight] = this.icons[j].label.get_preferred_height(-1); let iconSpacing = labelNaturalHeight + iconPadding + iconBorder; let totalSpacing = this._list.spacing * (this._items.length - 1); // We just assume the whole screen here due to weirdness happening with the passed width let primary = Main.layoutManager.primaryMonitor; let parentPadding = this.get_parent().get_theme_node().get_horizontal_padding(); let availWidth = primary.width - parentPadding - this.get_theme_node().get_horizontal_padding(); let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor; let iconSizes = baseIconSizes.map(s => s * scaleFactor); let iconSize = baseIconSizes[0]; if (this._items.length > 1) { for (let i = 0; i < baseIconSizes.length; i++) { iconSize = baseIconSizes[i]; let height = iconSizes[i] + iconSpacing; let w = height * this._items.length + totalSpacing; if (w <= availWidth) break; } } this._iconSize = iconSize; for (let i = 0; i < this.icons.length; i++) { if (this.icons[i].icon != null) break; this.icons[i].set_size(iconSize); } } vfunc_get_preferred_height(forWidth) { if (!this._iconSize) this._setIconSize(); return super.vfunc_get_preferred_height(forWidth); } vfunc_allocate(box) { // Allocate the main list items super.vfunc_allocate(box); let contentBox = this.get_theme_node().get_content_box(box); let arrowHeight = Math.floor(this.get_theme_node().get_padding(St.Side.BOTTOM) / 3); let arrowWidth = arrowHeight * 2; // Now allocate each arrow underneath its item let childBox = new Clutter.ActorBox(); for (let i = 0; i < this._items.length; i++) { let itemBox = this._items[i].allocation; childBox.x1 = contentBox.x1 + Math.floor(itemBox.x1 + (itemBox.x2 - itemBox.x1 - arrowWidth) / 2); childBox.x2 = childBox.x1 + arrowWidth; childBox.y1 = contentBox.y1 + itemBox.y2 + arrowHeight; childBox.y2 = childBox.y1 + arrowHeight; this._arrows[i].allocate(childBox); } } // We override SwitcherList's _onItemMotion method to delay // activation when the thumbnail list is open _onItemMotion(item) { if (item === this._items[this._highlighted] || item === this._items[this._delayedHighlighted]) return Clutter.EVENT_PROPAGATE; const index = this._items.indexOf(item); if (this._mouseTimeOutId !== 0) { GLib.source_remove(this._mouseTimeOutId); this._delayedHighlighted = -1; this._mouseTimeOutId = 0; } if (this._altTabPopup.thumbnailsVisible) { this._delayedHighlighted = index; this._mouseTimeOutId = GLib.timeout_add( GLib.PRIORITY_DEFAULT, APP_ICON_HOVER_TIMEOUT, () => { this._enterItem(index); this._delayedHighlighted = -1; this._mouseTimeOutId = 0; return GLib.SOURCE_REMOVE; }); GLib.Source.set_name_by_id(this._mouseTimeOutId, '[gnome-shell] this._enterItem'); } else { this._itemEntered(index); } return Clutter.EVENT_PROPAGATE; } _enterItem(index) { let [x, y] = global.get_pointer(); let pickedActor = global.stage.get_actor_at_pos(Clutter.PickMode.ALL, x, y); if (this._items[index].contains(pickedActor)) this._itemEntered(index); } // We override SwitcherList's highlight() method to also deal with // the AppSwitcher->ThumbnailSwitcher arrows. Apps with only 1 window // will hide their arrows by default, but show them when their // thumbnails are visible (ie, when the app icon is supposed to be // in justOutline mode). Apps with multiple windows will normally // show a dim arrow, but show a bright arrow when they are // highlighted. highlight(n, justOutline) { if (this.icons[this._highlighted]) { if (this.icons[this._highlighted].cachedWindows.length === 1) this._arrows[this._highlighted].hide(); else this._arrows[this._highlighted].remove_style_pseudo_class('highlighted'); } super.highlight(n, justOutline); if (this._highlighted !== -1) { if (justOutline && this.icons[this._highlighted].cachedWindows.length === 1) this._arrows[this._highlighted].show(); else this._arrows[this._highlighted].add_style_pseudo_class('highlighted'); } } _addIcon(appIcon) { this.icons.push(appIcon); let item = this.addItem(appIcon, appIcon.label); appIcon.app.connectObject('notify::state', app => { if (app.state !== Shell.AppState.RUNNING) this._removeIcon(app); }, this); let arrow = new St.DrawingArea({style_class: 'switcher-arrow'}); arrow.connect('repaint', () => SwitcherPopup.drawArrow(arrow, St.Side.BOTTOM)); this.add_child(arrow); this._arrows.push(arrow); if (appIcon.cachedWindows.length === 1) arrow.hide(); else item.add_accessible_state(Atk.StateType.EXPANDABLE); } _removeIcon(app) { let index = this.icons.findIndex(icon => { return icon.app === app; }); if (index === -1) return; this._arrows[index].destroy(); this._arrows.splice(index, 1); this.icons.splice(index, 1); this.removeItem(index); } }); const ThumbnailSwitcher = GObject.registerClass( class ThumbnailSwitcher extends SwitcherPopup.SwitcherList { _init(windows) { super._init(false); this._labels = []; this._thumbnailBins = []; this._clones = []; this._windows = windows; for (let i = 0; i < windows.length; i++) { const box = new St.BoxLayout({ style_class: 'thumbnail-box', vertical: true, }); let bin = new St.Bin({style_class: 'thumbnail'}); box.add_child(bin); this._thumbnailBins.push(bin); const title = windows[i].get_title(); const name = new St.Label({ text: title, // St.Label doesn't support text-align x_align: Clutter.ActorAlign.CENTER, }); this._labels.push(name); box.add_child(name); this.addItem(box, name); } this.connect('destroy', this._onDestroy.bind(this)); } addClones(availHeight) { if (!this._thumbnailBins.length) return; let totalPadding = this._items[0].get_theme_node().get_horizontal_padding() + this._items[0].get_theme_node().get_vertical_padding(); totalPadding += this.get_theme_node().get_horizontal_padding() + this.get_theme_node().get_vertical_padding(); let [, labelNaturalHeight] = this._labels[0].get_preferred_height(-1); let spacing = this._items[0].child.get_theme_node().get_length('spacing'); let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor; let thumbnailSize = THUMBNAIL_DEFAULT_SIZE * scaleFactor; availHeight = Math.min(availHeight - labelNaturalHeight - totalPadding - spacing, thumbnailSize); let binHeight = availHeight + this._items[0].get_theme_node().get_vertical_padding() + this.get_theme_node().get_vertical_padding() - spacing; binHeight = Math.min(thumbnailSize, binHeight); for (let i = 0; i < this._thumbnailBins.length; i++) { let mutterWindow = this._windows[i].get_compositor_private(); if (!mutterWindow) continue; let clone = _createWindowClone(mutterWindow, thumbnailSize); this._thumbnailBins[i].set_height(binHeight); this._thumbnailBins[i].child = clone; mutterWindow.connectObject('destroy', source => this._removeThumbnail(source, clone), this); this._clones.push(clone); } // Make sure we only do this once this._thumbnailBins = []; } _removeThumbnail(source, clone) { let index = this._clones.indexOf(clone); if (index === -1) return; this._clones.splice(index, 1); this._windows.splice(index, 1); this._labels.splice(index, 1); this.removeItem(index); if (this._clones.length > 0) this.highlight(SwitcherPopup.mod(index, this._clones.length)); else this.destroy(); } _onDestroy() { this._clones.forEach( clone => clone?.source.disconnectObject(this)); } }); export const WindowIcon = GObject.registerClass( class WindowIcon extends St.BoxLayout { _init(window, mode) { super._init({ style_class: 'alt-tab-app', vertical: true, }); this.window = window; this._icon = new St.Widget({layout_manager: new Clutter.BinLayout()}); this.add_child(this._icon); this.label = new St.Label({text: window.get_title()}); let tracker = Shell.WindowTracker.get_default(); this.app = tracker.get_window_app(window); let mutterWindow = this.window.get_compositor_private(); let size; this._icon.destroy_all_children(); let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor; switch (mode) { case AppIconMode.THUMBNAIL_ONLY: size = WINDOW_PREVIEW_SIZE; this._icon.add_child(_createWindowClone(mutterWindow, size * scaleFactor)); break; case AppIconMode.BOTH: size = WINDOW_PREVIEW_SIZE; this._icon.add_child(_createWindowClone(mutterWindow, size * scaleFactor)); if (this.app) { this._icon.add_child( this._createAppIcon(this.app, APP_ICON_SIZE_SMALL)); } break; case AppIconMode.APP_ICON_ONLY: size = APP_ICON_SIZE; this._icon.add_child(this._createAppIcon(this.app, size)); } this._icon.set_size(size * scaleFactor, size * scaleFactor); } _createAppIcon(app, size) { let appIcon = app ? app.create_icon_texture(size) : new St.Icon({icon_name: 'application-x-executable', icon_size: size}); appIcon.x_expand = appIcon.y_expand = true; appIcon.x_align = appIcon.y_align = Clutter.ActorAlign.END; return appIcon; } }); const WindowSwitcher = GObject.registerClass( class WindowSwitcher extends SwitcherPopup.SwitcherList { _init(windows, mode) { super._init(true); this._label = new St.Label({ x_align: Clutter.ActorAlign.CENTER, y_align: Clutter.ActorAlign.CENTER, }); this.add_child(this._label); this.windows = windows; this.icons = []; for (let i = 0; i < windows.length; i++) { let win = windows[i]; let icon = new WindowIcon(win, mode); this.addItem(icon, icon.label); this.icons.push(icon); icon.window.connectObject('unmanaged', window => this._removeWindow(window), this); } this.connect('destroy', this._onDestroy.bind(this)); } _onDestroy() { this.icons.forEach( icon => icon.window.disconnectObject(this)); } vfunc_get_preferred_height(forWidth) { let [minHeight, natHeight] = super.vfunc_get_preferred_height(forWidth); let spacing = this.get_theme_node().get_padding(St.Side.BOTTOM); let [labelMin, labelNat] = this._label.get_preferred_height(-1); minHeight += labelMin + spacing; natHeight += labelNat + spacing; return [minHeight, natHeight]; } vfunc_allocate(box) { let themeNode = this.get_theme_node(); let contentBox = themeNode.get_content_box(box); const labelHeight = this._label.height; const totalLabelHeight = labelHeight + themeNode.get_padding(St.Side.BOTTOM); box.y2 -= totalLabelHeight; super.vfunc_allocate(box); // Hooking up the parent vfunc will call this.set_allocation() with // the height without the label height, so call it again with the // correct size here. box.y2 += totalLabelHeight; this.set_allocation(box); const childBox = new Clutter.ActorBox(); childBox.x1 = contentBox.x1; childBox.x2 = contentBox.x2; childBox.y2 = contentBox.y2; childBox.y1 = childBox.y2 - labelHeight; this._label.allocate(childBox); } highlight(index, justOutline) { super.highlight(index, justOutline); this._label.set_text(index === -1 ? '' : this.icons[index].label.text); } _removeWindow(window) { let index = this.icons.findIndex(icon => { return icon.window === window; }); if (index === -1) return; this.icons.splice(index, 1); this.removeItem(index); } }); 0707010000019A000081A40000000000000000000000016712993F000016BF000000000000000000000000000000000000002400000000gnome-shell-47.1/js/ui/animation.jsimport Clutter from 'gi://Clutter'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import Gio from 'gi://Gio'; import St from 'gi://St'; import * as Params from '../misc/params.js'; const ANIMATED_ICON_UPDATE_TIMEOUT = 16; const SPINNER_ANIMATION_TIME = 300; const SPINNER_ANIMATION_DELAY = 1000; export const Animation = GObject.registerClass( class Animation extends St.Bin { _init(file, width, height, speed) { const themeContext = St.ThemeContext.get_for_stage(global.stage); super._init({ style: `width: ${width}px; height: ${height}px;`, }); this._file = file; this._width = width; this._height = height; this.connect('destroy', this._onDestroy.bind(this)); this.connect('resource-scale-changed', () => this._loadFile()); themeContext.connectObject('notify::scale-factor', () => { this._loadFile(); this.set_size( this._width * themeContext.scale_factor, this._height * themeContext.scale_factor); }, this); this._speed = speed; this._isLoaded = false; this._isPlaying = false; this._timeoutId = 0; this._frame = 0; this._loadFile(); } play() { if (this._isLoaded && this._timeoutId === 0) { if (this._frame === 0) this._showFrame(0); this._timeoutId = GLib.timeout_add(GLib.PRIORITY_LOW, this._speed, this._update.bind(this)); GLib.Source.set_name_by_id(this._timeoutId, '[gnome-shell] this._update'); } this._isPlaying = true; } stop() { if (this._timeoutId > 0) { GLib.source_remove(this._timeoutId); this._timeoutId = 0; } this._isPlaying = false; } _loadFile() { const resourceScale = this.get_resource_scale(); let wasPlaying = this._isPlaying; if (this._isPlaying) this.stop(); this._isLoaded = false; this.destroy_all_children(); let textureCache = St.TextureCache.get_default(); let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor; this._animations = textureCache.load_sliced_image(this._file, this._width, this._height, scaleFactor, resourceScale, () => this._loadFinished()); this._animations.set({ x_align: Clutter.ActorAlign.CENTER, y_align: Clutter.ActorAlign.CENTER, }); this.set_child(this._animations); if (wasPlaying) this.play(); } _showFrame(frame) { let oldFrameActor = this._animations.get_child_at_index(this._frame); if (oldFrameActor) oldFrameActor.hide(); this._frame = frame % this._animations.get_n_children(); let newFrameActor = this._animations.get_child_at_index(this._frame); if (newFrameActor) newFrameActor.show(); } _update() { this._showFrame(this._frame + 1); return GLib.SOURCE_CONTINUE; } _loadFinished() { this._isLoaded = this._animations.get_n_children() > 0; if (this._isLoaded && this._isPlaying) this.play(); } _onDestroy() { this.stop(); } }); export const AnimatedIcon = GObject.registerClass( class AnimatedIcon extends Animation { _init(file, size) { super._init(file, size, size, ANIMATED_ICON_UPDATE_TIMEOUT); } }); export const Spinner = GObject.registerClass( class Spinner extends AnimatedIcon { _init(size, params) { params = Params.parse(params, { animate: false, hideOnStop: false, }); this._fileDark = Gio.File.new_for_uri( 'resource:///org/gnome/shell/theme/process-working-dark.svg'); this._fileLight = Gio.File.new_for_uri( 'resource:///org/gnome/shell/theme/process-working-light.svg'); super._init(this._fileDark, size); this.connect('style-changed', () => { const themeNode = this.get_theme_node(); const textColor = themeNode.get_foreground_color(); const [, , luminance] = textColor.to_hsl(); const file = luminance > 0.5 ? this._fileDark : this._fileLight; if (file !== this._file) { this._file = file; this._loadFile(); } }); this.opacity = 0; this._animate = params.animate; this._hideOnStop = params.hideOnStop; this.visible = !this._hideOnStop; } _onDestroy() { this._animate = false; super._onDestroy(); } play() { this.remove_all_transitions(); this.show(); if (this._animate) { super.play(); this.ease({ opacity: 255, delay: SPINNER_ANIMATION_DELAY, duration: SPINNER_ANIMATION_TIME, mode: Clutter.AnimationMode.LINEAR, }); } else { this.opacity = 255; super.play(); } } stop() { this.remove_all_transitions(); if (this._animate) { this.ease({ opacity: 0, duration: SPINNER_ANIMATION_TIME, mode: Clutter.AnimationMode.LINEAR, onComplete: () => { super.stop(); if (this._hideOnStop) this.hide(); }, }); } else { this.opacity = 0; super.stop(); if (this._hideOnStop) this.hide(); } } }); 0707010000019B000081A40000000000000000000000016712993F000182D4000000000000000000000000000000000000002500000000gnome-shell-47.1/js/ui/appDisplay.jsimport Clutter from 'gi://Clutter'; import Cogl from 'gi://Cogl'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import Gio from 'gi://Gio'; import Graphene from 'gi://Graphene'; import Pango from 'gi://Pango'; import Shell from 'gi://Shell'; import St from 'gi://St'; import * as AppFavorites from './appFavorites.js'; import {AppMenu} from './appMenu.js'; import * as BoxPointer from './boxpointer.js'; import * as DND from './dnd.js'; import * as GrabHelper from './grabHelper.js'; import * as IconGrid from './iconGrid.js'; import * as Layout from './layout.js'; import * as PageIndicators from './pageIndicators.js'; import * as ParentalControlsManager from '../misc/parentalControlsManager.js'; import * as PopupMenu from './popupMenu.js'; import * as Search from './search.js'; import * as SwipeTracker from './swipeTracker.js'; import * as SystemActions from '../misc/systemActions.js'; import * as Main from './main.js'; const MENU_POPUP_TIMEOUT = 600; const POPDOWN_DIALOG_TIMEOUT = 500; const FOLDER_SUBICON_FRACTION = .4; const VIEWS_SWITCH_TIME = 400; const VIEWS_SWITCH_ANIMATION_DELAY = 100; const SCROLL_TIMEOUT_TIME = 150; const APP_ICON_SCALE_IN_TIME = 500; const APP_ICON_SCALE_IN_DELAY = 700; const APP_ICON_TITLE_EXPAND_TIME = 200; const APP_ICON_TITLE_COLLAPSE_TIME = 100; const FOLDER_DIALOG_ANIMATION_TIME = 200; const PAGE_PREVIEW_ANIMATION_TIME = 150; const PAGE_INDICATOR_FADE_TIME = 200; const PAGE_PREVIEW_RATIO = 0.20; const DRAG_PAGE_SWITCH_INITIAL_TIMEOUT = 1000; const DRAG_PAGE_SWITCH_IMMEDIATELY_THRESHOLD_PX = 20; const DRAG_PAGE_SWITCH_REPEAT_TIMEOUT = 1000; const DELAYED_MOVE_TIMEOUT = 200; const DIALOG_SHADE_NORMAL = new Cogl.Color({red: 0, green: 0, blue: 0, alpha: 204}); const DIALOG_SHADE_HIGHLIGHT = new Cogl.Color({red: 0, green: 0, blue: 0, alpha: 85}); const DEFAULT_FOLDERS = { 'Utilities': { name: 'X-GNOME-Utilities.directory', categories: ['X-GNOME-Utilities'], apps: [ 'gnome-abrt.desktop', 'gnome-system-log.desktop', 'nm-connection-editor.desktop', 'org.gnome.baobab.desktop', 'org.gnome.Connections.desktop', 'org.gnome.DejaDup.desktop', 'org.gnome.Dictionary.desktop', 'org.gnome.DiskUtility.desktop', 'org.gnome.Evince.desktop', 'org.gnome.FileRoller.desktop', 'org.gnome.fonts.desktop', 'org.gnome.Loupe.desktop', 'org.gnome.seahorse.Application.desktop', 'org.gnome.tweaks.desktop', 'org.gnome.Usage.desktop', 'vinagre.desktop', ], }, 'YaST': { name: 'suse-yast.directory', categories: ['X-SuSE-YaST'], }, 'Pardus': { name: 'X-Pardus-Apps.directory', categories: ['X-Pardus-Apps'], }, }; function _getCategories(info) { let categoriesStr = info.get_categories(); if (!categoriesStr) return []; return categoriesStr.split(';'); } function _listsIntersect(a, b) { for (let itemA of a) { if (b.includes(itemA)) return true; } return false; } function _getFolderName(folder) { let name = folder.get_string('name'); if (folder.get_boolean('translate')) { let translated = Shell.util_get_translated_folder_name(name); if (translated !== null) return translated; } return name; } function _getViewFromIcon(icon) { for (let parent = icon.get_parent(); parent; parent = parent.get_parent()) { if (parent instanceof BaseAppView) return parent; } return null; } function _findBestFolderName(apps) { let appInfos = apps.map(app => app.get_app_info()); let categoryCounter = {}; let commonCategories = []; appInfos.reduce((categories, appInfo) => { for (let category of _getCategories(appInfo)) { if (!(category in categoryCounter)) categoryCounter[category] = 0; categoryCounter[category] += 1; // If a category is present in all apps, its counter will // reach appInfos.length if (category.length > 0 && categoryCounter[category] === appInfos.length) categories.push(category); } return categories; }, commonCategories); for (let category of commonCategories) { const directory = `${category}.directory`; const translated = Shell.util_get_translated_folder_name(directory); if (translated !== null) return translated; } return null; } export const AppGrid = GObject.registerClass({ Properties: { 'indicators-padding': GObject.ParamSpec.boxed('indicators-padding', null, null, GObject.ParamFlags.READWRITE, Clutter.Margin.$gtype), }, }, class AppGrid extends IconGrid.IconGrid { _init(layoutParams) { super._init(layoutParams); this._indicatorsPadding = new Clutter.Margin(); } _updatePadding() { const node = this.get_theme_node(); const padding = this._indicatorsPadding.copy(); ['top', 'right', 'bottom', 'left'].forEach(side => { padding[side] += node.get_length(`page-padding-${side}`); }); this.layoutManager.pagePadding = padding; } vfunc_style_changed() { super.vfunc_style_changed(); this._updatePadding(); } get indicatorsPadding() { return this._indicatorsPadding; } set indicatorsPadding(v) { if (this._indicatorsPadding === v) return; this._indicatorsPadding = v ? v : new Clutter.Margin(); this._updatePadding(); } }); const BaseAppViewGridLayout = GObject.registerClass( class BaseAppViewGridLayout extends Clutter.BinLayout { _init(grid, scrollView, nextPageIndicator, nextPageArrow, previousPageIndicator, previousPageArrow) { if (!(grid instanceof AppGrid)) throw new Error('Grid must be an AppGrid subclass'); super._init(); this._grid = grid; this._scrollView = scrollView; this._previousPageIndicator = previousPageIndicator; this._previousPageArrow = previousPageArrow; this._nextPageIndicator = nextPageIndicator; this._nextPageArrow = nextPageArrow; grid.connect('pages-changed', () => this._syncPageIndicatorsVisibility()); this._pageIndicatorsAdjustment = new St.Adjustment({ lower: 0, upper: 1, }); this._pageIndicatorsAdjustment.connect( 'notify::value', () => this._syncPageIndicators()); this._showIndicators = false; this._currentPage = 0; this._pageWidth = 0; } _getIndicatorsWidth(box) { const [width, height] = box.get_size(); const arrows = [ this._nextPageArrow, this._previousPageArrow, ]; const minArrowsWidth = arrows.reduce( (previousWidth, accessory) => { const [min] = accessory.get_preferred_width(height); return Math.max(previousWidth, min); }, 0); const idealIndicatorWidth = (width * PAGE_PREVIEW_RATIO) / 2; return Math.max(idealIndicatorWidth, minArrowsWidth); } _syncPageIndicatorsVisibility(animate = true) { const previousIndicatorsVisible = this._currentPage > 0 && this._showIndicators; if (previousIndicatorsVisible) this._previousPageIndicator.show(); this._previousPageIndicator.ease({ opacity: previousIndicatorsVisible ? 255 : 0, duration: animate ? PAGE_INDICATOR_FADE_TIME : 0, onComplete: () => { if (!previousIndicatorsVisible) this._previousPageIndicator.hide(); }, }); const previousArrowVisible = this._currentPage > 0 && !previousIndicatorsVisible; if (previousArrowVisible) this._previousPageArrow.show(); this._previousPageArrow.ease({ opacity: previousArrowVisible ? 255 : 0, duration: animate ? PAGE_INDICATOR_FADE_TIME : 0, onComplete: () => { if (!previousArrowVisible) this._previousPageArrow.hide(); }, }); // Always show the next page indicator to allow dropping // icons into new pages const {allowIncompletePages, nPages} = this._grid.layoutManager; const nextIndicatorsVisible = this._showIndicators && (allowIncompletePages ? true : this._currentPage < nPages - 1); if (nextIndicatorsVisible) this._nextPageIndicator.show(); this._nextPageIndicator.ease({ opacity: nextIndicatorsVisible ? 255 : 0, duration: animate ? PAGE_INDICATOR_FADE_TIME : 0, onComplete: () => { if (!nextIndicatorsVisible) this._nextPageIndicator.hide(); }, }); const nextArrowVisible = this._currentPage < nPages - 1 && !nextIndicatorsVisible; if (nextArrowVisible) this._nextPageArrow.show(); this._nextPageArrow.ease({ opacity: nextArrowVisible ? 255 : 0, duration: animate ? PAGE_INDICATOR_FADE_TIME : 0, onComplete: () => { if (!nextArrowVisible) this._nextPageArrow.hide(); }, }); } _getEndIcon(icons) { const {columnsPerPage} = this._grid.layoutManager; const index = Math.min(icons.length, columnsPerPage); return icons[Math.max(index - 1, 0)]; } _translatePreviousPageIcons(value, ltr) { if (this._currentPage === 0) return; const previousPage = this._currentPage - 1; const icons = this._grid.getItemsAtPage(previousPage).filter(i => i.visible); if (icons.length === 0) return; const {left, right} = this._grid.indicatorsPadding; const {columnSpacing} = this._grid.layoutManager; const endIcon = this._getEndIcon(icons); let iconOffset; if (ltr) { const currentPageOffset = this._pageWidth * this._currentPage; iconOffset = currentPageOffset - endIcon.allocation.x2 + left - columnSpacing; } else { const rtlPage = this._grid.nPages - previousPage - 1; const pageOffset = this._pageWidth * rtlPage; iconOffset = pageOffset - endIcon.allocation.x1 - right + columnSpacing; } for (const icon of icons) icon.translationX = iconOffset * value; } _translateNextPageIcons(value, ltr) { if (this._currentPage >= this._grid.nPages - 1) return; const nextPage = this._currentPage + 1; const icons = this._grid.getItemsAtPage(nextPage).filter(i => i.visible); if (icons.length === 0) return; const {left, right} = this._grid.indicatorsPadding; const {columnSpacing} = this._grid.layoutManager; let iconOffset; if (ltr) { const pageOffset = this._pageWidth * nextPage; iconOffset = pageOffset - icons[0].allocation.x1 - right + columnSpacing; } else { const rtlPage = this._grid.nPages - this._currentPage - 1; const currentPageOffset = this._pageWidth * rtlPage; iconOffset = currentPageOffset - icons[0].allocation.x2 + left - columnSpacing; } for (const icon of icons) icon.translationX = iconOffset * value; } _syncPageIndicators() { if (!this._container) return; const {value} = this._pageIndicatorsAdjustment; const ltr = this._container.get_text_direction() !== Clutter.TextDirection.RTL; const {left, right} = this._grid.indicatorsPadding; const leftIndicatorOffset = -left * (1 - value); const rightIndicatorOffset = right * (1 - value); this._previousPageIndicator.translationX = ltr ? leftIndicatorOffset : rightIndicatorOffset; this._nextPageIndicator.translationX = ltr ? rightIndicatorOffset : leftIndicatorOffset; const leftArrowOffset = -left * value; const rightArrowOffset = right * value; this._previousPageArrow.translationX = ltr ? leftArrowOffset : rightArrowOffset; this._nextPageArrow.translationX = ltr ? rightArrowOffset : leftArrowOffset; // Page icons this._translatePreviousPageIcons(value, ltr); this._translateNextPageIcons(value, ltr); if (this._grid.nPages > 0) { this._grid.getItemsAtPage(this._currentPage).forEach(icon => { icon.translationX = 0; }); } } vfunc_set_container(container) { this._container = container; this._pageIndicatorsAdjustment.actor = container; this._syncPageIndicators(); } vfunc_allocate(container, box) { const ltr = container.get_text_direction() !== Clutter.TextDirection.RTL; const indicatorsWidth = this._getIndicatorsWidth(box); this._grid.indicatorsPadding = new Clutter.Margin({ left: indicatorsWidth, right: indicatorsWidth, }); this._scrollView.allocate(box); const leftBox = box.copy(); leftBox.x2 = leftBox.x1 + indicatorsWidth; const rightBox = box.copy(); rightBox.x1 = rightBox.x2 - indicatorsWidth; this._previousPageIndicator.allocate(ltr ? leftBox : rightBox); this._previousPageArrow.allocate_align_fill(ltr ? leftBox : rightBox, 0.5, 0.5, false, false); this._nextPageIndicator.allocate(ltr ? rightBox : leftBox); this._nextPageArrow.allocate_align_fill(ltr ? rightBox : leftBox, 0.5, 0.5, false, false); this._pageWidth = box.get_width(); } goToPage(page, animate = true) { if (this._currentPage === page) return; this._currentPage = page; this._syncPageIndicatorsVisibility(animate); this._syncPageIndicators(); } showPageIndicators() { if (this._showIndicators) return; this._pageIndicatorsAdjustment.ease(1, { duration: PAGE_PREVIEW_ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_CUBIC, }); this._grid.clipToView = false; this._showIndicators = true; this._syncPageIndicatorsVisibility(); } hidePageIndicators() { if (!this._showIndicators) return; this._pageIndicatorsAdjustment.ease(0, { duration: PAGE_PREVIEW_ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_CUBIC, onComplete: () => { this._grid.clipToView = true; }, }); this._showIndicators = false; this._syncPageIndicatorsVisibility(); } }); var BaseAppView = GObject.registerClass({ GTypeFlags: GObject.TypeFlags.ABSTRACT, Properties: { 'gesture-modes': GObject.ParamSpec.flags( 'gesture-modes', null, null, GObject.ParamFlags.READWRITE | GObject.ParamFlags.CONSTRUCT_ONLY, Shell.ActionMode, Shell.ActionMode.OVERVIEW), }, Signals: { 'view-loaded': {}, }, }, class BaseAppView extends St.Widget { _init(params = {}) { super._init(params); this._grid = this._createGrid(); this._grid._delegate = this; // Standard hack for ClutterBinLayout this._grid.x_expand = true; this._grid.connect('pages-changed', () => { this.goToPage(this._grid.currentPage); this._pageIndicators.setNPages(this._grid.nPages); this._pageIndicators.setCurrentPosition(this._grid.currentPage); }); // Scroll View this._scrollView = new St.ScrollView({ style_class: 'apps-scroll-view', clip_to_allocation: true, x_expand: true, y_expand: true, reactive: true, enable_mouse_scrolling: false, hscrollbar_policy: St.PolicyType.EXTERNAL, vscrollbar_policy: St.PolicyType.NEVER, child: this._grid, }); this._canScroll = true; // limiting scrolling speed this._scrollTimeoutId = 0; this._scrollView.connect('scroll-event', this._onScroll.bind(this)); this._adjustment = this._scrollView.hadjustment; this._adjustment.connect('notify::value', adj => { const value = adj.value / adj.page_size; this._pageIndicators.setCurrentPosition(value); }); // Page Indicators this._pageIndicators = new PageIndicators.PageIndicators(Clutter.Orientation.HORIZONTAL); this._pageIndicators.y_expand = false; this._pageIndicators.connect('page-activated', (indicators, pageIndex) => { this.goToPage(pageIndex); }); this._pageIndicators.connect('scroll-event', (actor, event) => { this._scrollView.event(event, false); }); // Navigation indicators this._nextPageIndicator = new St.Widget({ style_class: 'page-navigation-hint next', opacity: 0, visible: false, reactive: false, x_expand: true, y_expand: true, x_align: Clutter.ActorAlign.FILL, y_align: Clutter.ActorAlign.FILL, }); this._prevPageIndicator = new St.Widget({ style_class: 'page-navigation-hint previous', opacity: 0, visible: false, reactive: false, x_expand: true, y_expand: true, x_align: Clutter.ActorAlign.FILL, y_align: Clutter.ActorAlign.FILL, }); // Next/prev page arrows const rtl = this.get_text_direction() === Clutter.TextDirection.RTL; this._nextPageArrow = new St.Button({ style_class: 'page-navigation-arrow', icon_name: rtl ? 'carousel-arrow-previous-symbolic' : 'carousel-arrow-next-symbolic', x_align: Clutter.ActorAlign.CENTER, y_align: Clutter.ActorAlign.CENTER, }); this._nextPageArrow.connect('clicked', () => this.goToPage(this._grid.currentPage + 1)); this._prevPageArrow = new St.Button({ style_class: 'page-navigation-arrow', icon_name: rtl ? 'carousel-arrow-next-symbolic' : 'carousel-arrow-previous-symbolic', opacity: 0, visible: false, x_align: Clutter.ActorAlign.CENTER, y_align: Clutter.ActorAlign.CENTER, }); this._prevPageArrow.connect('clicked', () => this.goToPage(this._grid.currentPage - 1)); const scrollContainer = new St.Widget({ clip_to_allocation: true, y_expand: true, }); scrollContainer.add_child(this._scrollView); scrollContainer.add_child(this._prevPageIndicator); scrollContainer.add_child(this._nextPageIndicator); scrollContainer.add_child(this._nextPageArrow); scrollContainer.add_child(this._prevPageArrow); scrollContainer.layoutManager = new BaseAppViewGridLayout( this._grid, this._scrollView, this._nextPageIndicator, this._nextPageArrow, this._prevPageIndicator, this._prevPageArrow); this._appGridLayout = scrollContainer.layoutManager; scrollContainer._delegate = this; this._box = new St.BoxLayout({ vertical: true, x_expand: true, y_expand: true, }); this._box.add_child(scrollContainer); this._box.add_child(this._pageIndicators); // Swipe this._swipeTracker = new SwipeTracker.SwipeTracker(this._scrollView, Clutter.Orientation.HORIZONTAL, this.gestureModes); this._swipeTracker.orientation = Clutter.Orientation.HORIZONTAL; this._swipeTracker.connect('begin', this._swipeBegin.bind(this)); this._swipeTracker.connect('update', this._swipeUpdate.bind(this)); this._swipeTracker.connect('end', this._swipeEnd.bind(this)); this._orientation = Clutter.Orientation.HORIZONTAL; this._items = new Map(); this._orderedItems = []; // Filter the apps through the user’s parental controls. this._parentalControlsManager = ParentalControlsManager.getDefault(); this._parentalControlsManager.connectObject('app-filter-changed', () => this._redisplay(), this); // Don't duplicate favorites this._appFavorites = AppFavorites.getAppFavorites(); this._appFavorites.connectObject('changed', () => this._redisplay(), this); // Drag n' Drop this._lastOvershootCoord = -1; this._delayedMoveData = null; this._dragBeginId = 0; this._dragEndId = 0; this._dragCancelledId = 0; this.connect('destroy', this._onDestroy.bind(this)); this._previewedPages = new Map(); } _onDestroy() { if (this._swipeTracker) { this._swipeTracker.destroy(); delete this._swipeTracker; } this._removeDelayedMove(); this._disconnectDnD(); } _createGrid() { return new AppGrid({allow_incomplete_pages: true}); } _onScroll(actor, event) { if (this._swipeTracker.canHandleScrollEvent(event)) return Clutter.EVENT_PROPAGATE; if (!this._canScroll) return Clutter.EVENT_STOP; const rtl = this.get_text_direction() === Clutter.TextDirection.RTL; const vertical = this._orientation === Clutter.Orientation.VERTICAL; let nextPage = this._grid.currentPage; switch (event.get_scroll_direction()) { case Clutter.ScrollDirection.UP: nextPage -= 1; break; case Clutter.ScrollDirection.DOWN: nextPage += 1; break; case Clutter.ScrollDirection.LEFT: if (vertical) return Clutter.EVENT_STOP; nextPage += rtl ? 1 : -1; break; case Clutter.ScrollDirection.RIGHT: if (vertical) return Clutter.EVENT_STOP; nextPage += rtl ? -1 : 1; break; default: return Clutter.EVENT_STOP; } this.goToPage(nextPage); this._canScroll = false; this._scrollTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, SCROLL_TIMEOUT_TIME, () => { this._canScroll = true; this._scrollTimeoutId = 0; return GLib.SOURCE_REMOVE; }); return Clutter.EVENT_STOP; } _swipeBegin(tracker, monitor) { if (monitor !== Main.layoutManager.primaryIndex) return; if (this._dragFocus) { this._dragFocus.cancelActions(); this._dragFocus = null; } const adjustment = this._adjustment; adjustment.remove_transition('value'); const progress = adjustment.value / adjustment.page_size; const points = Array.from({length: this._grid.nPages}, (v, i) => i); const size = tracker.orientation === Clutter.Orientation.VERTICAL ? this._grid.allocation.get_height() : this._grid.allocation.get_width(); tracker.confirmSwipe(size, points, progress, Math.round(progress)); } _swipeUpdate(tracker, progress) { const adjustment = this._adjustment; adjustment.value = progress * adjustment.page_size; } _swipeEnd(tracker, duration, endProgress) { const adjustment = this._adjustment; const value = endProgress * adjustment.page_size; adjustment.ease(value, { mode: Clutter.AnimationMode.EASE_OUT_CUBIC, duration, onComplete: () => this.goToPage(endProgress, false), }); } _connectDnD() { this._dragBeginId = Main.overview.connect('item-drag-begin', this._onDragBegin.bind(this)); this._dragEndId = Main.overview.connect('item-drag-end', this._onDragEnd.bind(this)); this._dragCancelledId = Main.overview.connect('item-drag-cancelled', this._onDragCancelled.bind(this)); } _disconnectDnD() { if (this._dragBeginId > 0) { Main.overview.disconnect(this._dragBeginId); this._dragBeginId = 0; } if (this._dragEndId > 0) { Main.overview.disconnect(this._dragEndId); this._dragEndId = 0; } if (this._dragCancelledId > 0) { Main.overview.disconnect(this._dragCancelledId); this._dragCancelledId = 0; } if (this._dragMonitor) { DND.removeDragMonitor(this._dragMonitor); this._dragMonitor = null; } } _maybeMoveItem(dragEvent) { const [success, x, y] = this._grid.transform_stage_point(dragEvent.x, dragEvent.y); if (!success) return; const {source} = dragEvent; const [page, position, dragLocation] = this._getDropTarget(x, y, source); const item = position !== -1 ? this._grid.getItemAt(page, position) : null; // Dragging over invalid parts of the grid cancels the timeout if (item === source || this._adjustment.get_transition('value') !== null || page !== this._grid.currentPage || dragLocation === IconGrid.DragLocation.INVALID || dragLocation === IconGrid.DragLocation.ON_ICON) { this._removeDelayedMove(); return; } if (!this._delayedMoveData || this._delayedMoveData.page !== page || this._delayedMoveData.position !== position) { // Update the item with a small delay this._removeDelayedMove(); this._delayedMoveData = { page, position, source, destroyId: source.connect('destroy', () => this._removeDelayedMove()), timeoutId: GLib.timeout_add(GLib.PRIORITY_DEFAULT, DELAYED_MOVE_TIMEOUT, () => { this._moveItem(source, page, position); this._delayedMoveData.timeoutId = 0; this._removeDelayedMove(); return GLib.SOURCE_REMOVE; }), }; } } _removeDelayedMove() { if (!this._delayedMoveData) return; const {source, destroyId, timeoutId} = this._delayedMoveData; if (timeoutId > 0) GLib.source_remove(timeoutId); if (destroyId > 0) source.disconnect(destroyId); this._delayedMoveData = null; } _resetDragPageSwitch() { if (this._dragPageSwitchInitialTimeoutId) { GLib.source_remove(this._dragPageSwitchInitialTimeoutId); delete this._dragPageSwitchInitialTimeoutId; } if (this._dragPageSwitchRepeatTimeoutId) { GLib.source_remove(this._dragPageSwitchRepeatTimeoutId); delete this._dragPageSwitchRepeatTimeoutId; } this._lastOvershootCoord = -1; } _setupDragPageSwitchRepeat(direction) { this._resetDragPageSwitch(); this._dragPageSwitchRepeatTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, DRAG_PAGE_SWITCH_REPEAT_TIMEOUT, () => { this.goToPage(this._grid.currentPage + direction); return GLib.SOURCE_CONTINUE; }); GLib.Source.set_name_by_id(this._dragPageSwitchRepeatTimeoutId, '[gnome-shell] this._dragPageSwitchRepeatTimeoutId'); } _dragMaybeSwitchPageImmediately(dragEvent) { // When there's an adjacent monitor, this gesture conflicts with // dragging to the adjacent monitor, so disable in multi-monitor setups if (Main.layoutManager.monitors.length > 1) return false; // Already animating if (this._adjustment.get_transition('value') !== null) return false; const [gridX, gridY] = this.get_transformed_position(); const [gridWidth, gridHeight] = this.get_transformed_size(); const vertical = this._orientation === Clutter.Orientation.VERTICAL; const gridStart = vertical ? gridY + DRAG_PAGE_SWITCH_IMMEDIATELY_THRESHOLD_PX : gridX + DRAG_PAGE_SWITCH_IMMEDIATELY_THRESHOLD_PX; const gridEnd = vertical ? gridY + gridHeight - DRAG_PAGE_SWITCH_IMMEDIATELY_THRESHOLD_PX : gridX + gridWidth - DRAG_PAGE_SWITCH_IMMEDIATELY_THRESHOLD_PX; const dragCoord = vertical ? dragEvent.y : dragEvent.x; if (dragCoord > gridStart && dragCoord < gridEnd) { const moveDelta = Math.abs(this._lastOvershootCoord - dragCoord); // We moved back out of the overshoot region into the grid. If the // move was sufficiently large, reset the overshoot so that it's // possible to repeatedly bump against the edge and quickly switch // pages. if (this._lastOvershootCoord >= 0 && moveDelta > DRAG_PAGE_SWITCH_IMMEDIATELY_THRESHOLD_PX) this._resetDragPageSwitch(); return false; } // Still in the area of the previous overshoot if (this._lastOvershootCoord >= 0) return false; let direction = dragCoord <= gridStart ? -1 : 1; if (this.get_text_direction() === Clutter.TextDirection.RTL) direction *= -1; this.goToPage(this._grid.currentPage + direction); this._setupDragPageSwitchRepeat(direction); this._lastOvershootCoord = dragCoord; return true; } _maybeSetupDragPageSwitchInitialTimeout(dragEvent) { if (this._dragPageSwitchInitialTimeoutId || this._dragPageSwitchRepeatTimeoutId) return; const {targetActor} = dragEvent; this._dragPageSwitchInitialTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, DRAG_PAGE_SWITCH_INITIAL_TIMEOUT, () => { const direction = targetActor === this._prevPageIndicator ? -1 : 1; this.goToPage(this._grid.currentPage + direction); this._setupDragPageSwitchRepeat(direction); delete this._dragPageSwitchInitialTimeoutId; return GLib.SOURCE_REMOVE; }); } _onDragBegin() { this._dragMonitor = { dragMotion: this._onDragMotion.bind(this), dragDrop: this._onDragDrop.bind(this), }; DND.addDragMonitor(this._dragMonitor); this._appGridLayout.showPageIndicators(); this._dragFocus = null; this._swipeTracker.enabled = false; } _onDragMotion(dragEvent) { if (!(dragEvent.source instanceof AppViewItem)) return DND.DragMotionResult.CONTINUE; const appIcon = dragEvent.source; if (appIcon instanceof AppViewItem) { // Two ways of switching pages during DND: // 1) When "bumping" the cursor against the monitor edge, we switch // page immediately. // 2) When hovering over the next-page indicator for a certain time, // we also switch page. if (!this._dragMaybeSwitchPageImmediately(dragEvent)) { const {targetActor} = dragEvent; if (targetActor === this._prevPageIndicator || targetActor === this._nextPageIndicator) this._maybeSetupDragPageSwitchInitialTimeout(dragEvent); else this._resetDragPageSwitch(); } } this._maybeMoveItem(dragEvent); return DND.DragMotionResult.CONTINUE; } _onDragDrop(dropEvent) { // Because acceptDrop() does not receive the target actor, store it // here and use this value in the acceptDrop() implementation below. this._dropTarget = dropEvent.targetActor; return DND.DragMotionResult.CONTINUE; } _onDragEnd() { if (this._dragMonitor) { DND.removeDragMonitor(this._dragMonitor); this._dragMonitor = null; } this._resetDragPageSwitch(); this._appGridLayout.hidePageIndicators(); this._swipeTracker.enabled = true; } _onDragCancelled() { // At this point, the positions aren't stored yet, thus _redisplay() // will move all items to their original positions this._redisplay(); this._appGridLayout.hidePageIndicators(); this._swipeTracker.enabled = true; } _canAccept(source) { return source instanceof AppViewItem; } handleDragOver(source) { if (!this._canAccept(source)) return DND.DragMotionResult.NO_DROP; return DND.DragMotionResult.MOVE_DROP; } acceptDrop(source) { const dropTarget = this._dropTarget; delete this._dropTarget; if (!this._canAccept(source)) return false; if (dropTarget === this._prevPageIndicator || dropTarget === this._nextPageIndicator) { const increment = dropTarget === this._prevPageIndicator ? -1 : 1; const {currentPage, nPages} = this._grid; const page = Math.min(currentPage + increment, nPages); const position = page < nPages ? -1 : 0; this._moveItem(source, page, position); this.goToPage(page); } else if (this._delayedMoveData) { // Dropped before the icon was moved const {page, position} = this._delayedMoveData; this._moveItem(source, page, position); this._removeDelayedMove(); } return true; } _findBestPageToAppend(startPage = 1) { for (let i = startPage; i < this._grid.nPages; i++) { const pageItems = this._grid.getItemsAtPage(i).filter(c => c.visible); if (pageItems.length < this._grid.itemsPerPage) return i; } return -1; } _getLinearPosition(item) { const [page, position] = this._grid.getItemPosition(item); if (page === -1 || position === -1) throw new Error('Item not found in grid'); let itemIndex = 0; if (this._grid.nPages > 0) { for (let i = 0; i < page; i++) itemIndex += this._grid.getItemsAtPage(i).filter(c => c.visible).length; itemIndex += position; } return itemIndex; } _addItem(item, page, position) { this._items.set(item.id, item); this._grid.addItem(item, page, position); this._orderedItems.splice(this._getLinearPosition(item), 0, item); } _removeItem(item) { const iconIndex = this._orderedItems.indexOf(item); this._orderedItems.splice(iconIndex, 1); this._items.delete(item.id); this._grid.removeItem(item); } _getItemPosition(item) { const {itemsPerPage} = this._grid; let iconIndex = this._orderedItems.indexOf(item); if (iconIndex === -1) iconIndex = this._orderedItems.length - 1; const page = Math.floor(iconIndex / itemsPerPage); const position = iconIndex % itemsPerPage; return [page, position]; } _redisplay() { let oldApps = this._orderedItems.slice(); let oldAppIds = oldApps.map(icon => icon.id); let newApps = this._loadApps().sort(this._compareItems.bind(this)); let newAppIds = newApps.map(icon => icon.id); let addedApps = newApps.filter(icon => !oldAppIds.includes(icon.id)); let removedApps = oldApps.filter(icon => !newAppIds.includes(icon.id)); // Remove old app icons removedApps.forEach(icon => { this._removeItem(icon); icon.destroy(); }); // Add new app icons, or move existing ones newApps.forEach(icon => { const [page, position] = this._getItemPosition(icon); if (addedApps.includes(icon)) { // If there's two pages, newly installed apps should not appear // on page 0 if (page === -1 && position === -1 && this._grid.nPages > 1) this._addItem(icon, 1, -1); else this._addItem(icon, page, position); } else if (page !== -1 && position !== -1) { this._moveItem(icon, page, position); } else { // App is part of a folder } }); this.emit('view-loaded'); } getAllItems() { return this._orderedItems; } _compareItems(a, b) { return a.name.localeCompare(b.name); } _selectAppInternal(id) { if (this._items.has(id)) this._items.get(id).navigate_focus(null, St.DirectionType.TAB_FORWARD, false); else log(`No such app ${id}`); } selectApp(id) { if (this._items.has(id)) { let item = this._items.get(id); if (item.mapped) { this._selectAppInternal(id); } else { // Need to wait until the view is mapped let signalId = item.connect('notify::mapped', actor => { if (actor.mapped) { actor.disconnect(signalId); this._selectAppInternal(id); } }); } } else { // Need to wait until the view is built let signalId = this.connect('view-loaded', () => { this.disconnect(signalId); this.selectApp(id); }); } } _getDropTarget(x, y, source) { const [sourcePage, sourcePosition] = this._grid.getItemPosition(source); let [targetPage, targetPosition, dragLocation] = this._grid.getDropTarget(x, y); let reflowDirection = Clutter.ActorAlign.END; if (sourcePosition === targetPosition) reflowDirection = -1; if (sourcePage === targetPage && sourcePosition < targetPosition) reflowDirection = Clutter.ActorAlign.START; if (!this._grid.layout_manager.allow_incomplete_pages && sourcePage < targetPage) reflowDirection = Clutter.ActorAlign.START; // In case we're hovering over the edge of an item but the // reflow will happen in the opposite direction (the drag // can't "naturally push the item away"), we instead set the // drop target to the adjacent item that can be pushed away // in the reflow-direction. // // We must avoid doing that if we're hovering over the first // or last column though, in that case there is no adjacent // icon we could push away. if (dragLocation === IconGrid.DragLocation.START_EDGE && reflowDirection === Clutter.ActorAlign.START) { const nColumns = this._grid.layout_manager.columns_per_page; const targetColumn = targetPosition % nColumns; if (targetColumn > 0) { targetPosition -= 1; dragLocation = IconGrid.DragLocation.END_EDGE; } } else if (dragLocation === IconGrid.DragLocation.END_EDGE && reflowDirection === Clutter.ActorAlign.END) { const nColumns = this._grid.layout_manager.columns_per_page; const targetColumn = targetPosition % nColumns; if (targetColumn < nColumns - 1) { targetPosition += 1; dragLocation = IconGrid.DragLocation.START_EDGE; } } return [targetPage, targetPosition, dragLocation]; } _moveItem(item, newPage, newPosition) { this._grid.moveItem(item, newPage, newPosition); // Update the _orderedItems array this._orderedItems.splice(this._orderedItems.indexOf(item), 1); this._orderedItems.splice(this._getLinearPosition(item), 0, item); } vfunc_map() { this._swipeTracker.enabled = true; this._connectDnD(); super.vfunc_map(); } vfunc_unmap() { if (this._swipeTracker) this._swipeTracker.enabled = false; this._disconnectDnD(); super.vfunc_unmap(); } animateSwitch(animationDirection) { this.remove_all_transitions(); this._grid.remove_all_transitions(); let params = { duration: VIEWS_SWITCH_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, }; if (animationDirection === IconGrid.AnimationDirection.IN) { this.show(); params.opacity = 255; params.delay = VIEWS_SWITCH_ANIMATION_DELAY; } else { params.opacity = 0; params.delay = 0; params.onComplete = () => this.hide(); } this._grid.ease(params); } goToPage(pageNumber, animate = true) { pageNumber = Math.clamp(pageNumber, 0, Math.max(this._grid.nPages - 1, 0)); if (this._grid.currentPage === pageNumber) return; this._appGridLayout.goToPage(pageNumber, animate); this._grid.goToPage(pageNumber, animate); } updateDragFocus(dragFocus) { this._dragFocus = dragFocus; } }); const PageManager = GObject.registerClass({ Signals: {'layout-changed': {}}, }, class PageManager extends GObject.Object { _init() { super._init(); this._updatingPages = false; this._loadPages(); global.settings.connect('changed::app-picker-layout', this._loadPages.bind(this)); } _loadPages() { const layout = global.settings.get_value('app-picker-layout'); this._pages = layout.recursiveUnpack(); if (!this._updatingPages) this.emit('layout-changed'); } getAppPosition(appId) { let position = -1; let page = -1; for (let pageIndex = 0; pageIndex < this._pages.length; pageIndex++) { const pageData = this._pages[pageIndex]; if (appId in pageData) { page = pageIndex; position = pageData[appId].position; break; } } return [page, position]; } set pages(p) { const packedPages = []; // Pack the icon properties as a GVariant for (const page of p) { const pageData = {}; for (const [appId, properties] of Object.entries(page)) pageData[appId] = new GLib.Variant('a{sv}', properties); packedPages.push(pageData); } this._updatingPages = true; const variant = new GLib.Variant('aa{sv}', packedPages); global.settings.set_value('app-picker-layout', variant); this._updatingPages = false; } get pages() { return this._pages; } }); export const AppDisplay = GObject.registerClass( class AppDisplay extends BaseAppView { _init() { super._init({ layout_manager: new Clutter.BinLayout(), x_expand: true, y_expand: true, }); this._pageManager = new PageManager(); this._pageManager.connect('layout-changed', () => this._redisplay()); this.add_child(this._box); this._folderIcons = []; this._currentDialog = null; this._displayingDialog = false; this._placeholder = null; this._overviewHiddenId = 0; this._redisplayWorkId = Main.initializeDeferredWork(this, () => { this._redisplay(); if (this._overviewHiddenId === 0) this._overviewHiddenId = Main.overview.connect('hidden', () => this.goToPage(0)); }); Shell.AppSystem.get_default().connect('installed-changed', () => { Main.queueDeferredWork(this._redisplayWorkId); }); this._folderSettings = new Gio.Settings({schema_id: 'org.gnome.desktop.app-folders'}); this._ensureDefaultFolders(); this._folderSettings.connect('changed::folder-children', () => { Main.queueDeferredWork(this._redisplayWorkId); }); } _onDestroy() { super._onDestroy(); if (this._scrollTimeoutId !== 0) { GLib.source_remove(this._scrollTimeoutId); this._scrollTimeoutId = 0; } } vfunc_map() { this._keyPressEventId = global.stage.connect('key-press-event', this._onKeyPressEvent.bind(this)); super.vfunc_map(); } vfunc_unmap() { if (this._keyPressEventId) { global.stage.disconnect(this._keyPressEventId); this._keyPressEventId = 0; } super.vfunc_unmap(); } _redisplay() { this._folderIcons.forEach(icon => { icon.view._redisplay(); }); super._redisplay(); } _savePages() { const pages = []; for (let i = 0; i < this._grid.nPages; i++) { const pageItems = this._grid.getItemsAtPage(i).filter(c => c.visible); const pageData = {}; pageItems.forEach((item, index) => { pageData[item.id] = { position: GLib.Variant.new_int32(index), }; }); pages.push(pageData); } this._pageManager.pages = pages; } _ensureDefaultFolders() { if (this._folderSettings.get_strv('folder-children').length > 0) return; const folders = Object.keys(DEFAULT_FOLDERS); this._folderSettings.set_strv('folder-children', folders); const {path} = this._folderSettings; for (const folder of folders) { const {name, categories, apps} = DEFAULT_FOLDERS[folder]; const child = new Gio.Settings({ schema_id: 'org.gnome.desktop.app-folders.folder', path: `${path}folders/${folder}/`, }); child.set_string('name', name); child.set_boolean('translate', true); child.set_strv('categories', categories); if (apps) child.set_strv('apps', apps); } } _ensurePlaceholder(source) { if (this._placeholder) return; const appSys = Shell.AppSystem.get_default(); const app = appSys.lookup_app(source.id); const isDraggable = global.settings.is_writable('favorite-apps') || global.settings.is_writable('app-picker-layout'); this._placeholder = new AppIcon(app, {isDraggable}); this._placeholder.connect('notify::pressed', icon => { if (icon.pressed) this.updateDragFocus(icon); }); this._placeholder.scaleAndFade(); this._redisplay(); } _removePlaceholder() { if (this._placeholder) { this._placeholder.undoScaleAndFade(); this._placeholder = null; this._redisplay(); } } getAppInfos() { return this._appInfoList; } _getItemPosition(item) { if (item === this._placeholder) { let [page, position] = this._grid.getItemPosition(item); if (page === -1) page = this._grid.currentPage; return [page, position]; } return this._pageManager.getAppPosition(item.id); } _compareItems(a, b) { const [aPage, aPosition] = this._getItemPosition(a); const [bPage, bPosition] = this._getItemPosition(b); if (aPage === -1 && bPage === -1) return a.name.localeCompare(b.name); else if (aPage === -1) return 1; else if (bPage === -1) return -1; if (aPage !== bPage) return aPage - bPage; return aPosition - bPosition; } _loadApps() { let appIcons = []; this._appInfoList = Shell.AppSystem.get_default().get_installed().filter(appInfo => { try { appInfo.get_id(); // catch invalid file encodings } catch (e) { return false; } return !this._appFavorites.isFavorite(appInfo.get_id()) && this._parentalControlsManager.shouldShowApp(appInfo); }); let apps = this._appInfoList.map(app => app.get_id()); let appSys = Shell.AppSystem.get_default(); const appsInsideFolders = new Set(); this._folderIcons = []; let folders = this._folderSettings.get_strv('folder-children'); folders.forEach(id => { let path = `${this._folderSettings.path}folders/${id}/`; let icon = this._items.get(id); if (!icon) { icon = new FolderIcon(id, path, this); icon.connect('apps-changed', () => { this._redisplay(); this._savePages(); }); icon.connect('notify::pressed', () => { if (icon.pressed) this.updateDragFocus(icon); }); } // Don't try to display empty folders if (!icon.visible) { icon.destroy(); return; } appIcons.push(icon); this._folderIcons.push(icon); icon.getAppIds().forEach(appId => appsInsideFolders.add(appId)); }); // Allow dragging of the icon only if the Dash would accept a drop to // change favorite-apps. There are no other possible drop targets from // the app picker, so there's no other need for a drag to start, // at least on single-monitor setups. // This also disables drag-to-launch on multi-monitor setups, // but we hope that is not used much. const isDraggable = global.settings.is_writable('favorite-apps') || global.settings.is_writable('app-picker-layout'); apps.forEach(appId => { if (appsInsideFolders.has(appId)) return; let icon = this._items.get(appId); if (!icon) { let app = appSys.lookup_app(appId); icon = new AppIcon(app, {isDraggable}); icon.connect('notify::pressed', () => { if (icon.pressed) this.updateDragFocus(icon); }); } appIcons.push(icon); }); // At last, if there's a placeholder available, add it if (this._placeholder) appIcons.push(this._placeholder); return appIcons; } animateSwitch(animationDirection) { super.animateSwitch(animationDirection); if (this._currentDialog && this._displayingDialog && animationDirection === IconGrid.AnimationDirection.OUT) { this._currentDialog.ease({ opacity: 0, duration: VIEWS_SWITCH_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => (this.opacity = 255), }); } } goToPage(pageNumber, animate = true) { pageNumber = Math.clamp(pageNumber, 0, Math.max(this._grid.nPages - 1, 0)); if (this._grid.currentPage === pageNumber && this._displayingDialog && this._currentDialog) return; if (this._displayingDialog && this._currentDialog) this._currentDialog.popdown(); super.goToPage(pageNumber, animate); } _onScroll(actor, event) { if (this._displayingDialog || !this._scrollView.reactive) return Clutter.EVENT_STOP; return super._onScroll(actor, event); } _onKeyPressEvent(actor, event) { if (this._displayingDialog) return Clutter.EVENT_STOP; if (event.get_key_symbol() === Clutter.KEY_Page_Up) { this.goToPage(this._grid.currentPage - 1); return Clutter.EVENT_STOP; } else if (event.get_key_symbol() === Clutter.KEY_Page_Down) { this.goToPage(this._grid.currentPage + 1); return Clutter.EVENT_STOP; } else if (event.get_key_symbol() === Clutter.KEY_Home) { this.goToPage(0); return Clutter.EVENT_STOP; } else if (event.get_key_symbol() === Clutter.KEY_End) { this.goToPage(this._grid.nPages - 1); return Clutter.EVENT_STOP; } return Clutter.EVENT_PROPAGATE; } addFolderDialog(dialog) { Main.layoutManager.overviewGroup.add_child(dialog); dialog.connect('open-state-changed', (o, isOpen) => { this._currentDialog?.disconnectObject(this); this._currentDialog = null; if (isOpen) { this._currentDialog = dialog; this._currentDialog.connectObject('destroy', () => (this._currentDialog = null), this); } this._displayingDialog = isOpen; }); } _maybeMoveItem(dragEvent) { const clonedEvent = { ...dragEvent, source: this._placeholder ? this._placeholder : dragEvent.source, }; super._maybeMoveItem(clonedEvent); } _onDragBegin(overview, source) { super._onDragBegin(overview, source); // When dragging from a folder dialog, the dragged app icon doesn't // exist in AppDisplay. We work around that by adding a placeholder // icon that is either destroyed on cancel, or becomes the effective // new icon when dropped. if (_getViewFromIcon(source) instanceof FolderView || this._appFavorites.isFavorite(source.id)) this._ensurePlaceholder(source); } _onDragMotion(dragEvent) { if (this._currentDialog) return DND.DragMotionResult.CONTINUE; return super._onDragMotion(dragEvent); } _onDragEnd() { super._onDragEnd(); this._removePlaceholder(); this._savePages(); } _onDragCancelled(overview, source) { const view = _getViewFromIcon(source); if (view instanceof FolderView) return; super._onDragCancelled(overview, source); } acceptDrop(source) { if (!super.acceptDrop(source)) return false; this._savePages(); let view = _getViewFromIcon(source); if (view instanceof FolderView) view.removeApp(source.app); if (this._currentDialog) this._currentDialog.popdown(); if (this._appFavorites.isFavorite(source.id)) this._appFavorites.removeFavorite(source.id); return true; } createFolder(apps) { let newFolderId = GLib.uuid_string_random(); let folders = this._folderSettings.get_strv('folder-children'); folders.push(newFolderId); this._folderSettings.set_strv('folder-children', folders); // Create the new folder let newFolderPath = this._folderSettings.path.concat('folders/', newFolderId, '/'); let newFolderSettings; try { newFolderSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.app-folders.folder', path: newFolderPath, }); } catch (e) { log('Error creating new folder'); return false; } // The hovered AppIcon always passes its own id as the first // one, and this is where we want the folder to be created let [folderPage, folderPosition] = this._grid.getItemPosition(this._items.get(apps[0])); // Adjust the final position folderPosition -= apps.reduce((counter, appId) => { const [page, position] = this._grid.getItemPosition(this._items.get(appId)); if (page === folderPage && position < folderPosition) counter++; return counter; }, 0); let appItems = apps.map(id => this._items.get(id).app); let folderName = _findBestFolderName(appItems); if (!folderName) folderName = _('Unnamed Folder'); newFolderSettings.delay(); newFolderSettings.set_string('name', folderName); newFolderSettings.set_strv('apps', apps); newFolderSettings.apply(); this._redisplay(); // Move the folder to where the icon target icon was const folderItem = this._items.get(newFolderId); this._moveItem(folderItem, folderPage, folderPosition); this._savePages(); return true; } }); export class AppSearchProvider { constructor() { this._appSys = Shell.AppSystem.get_default(); this.id = 'applications'; this.isRemoteProvider = false; this.canLaunchSearch = false; this.maxResults = 6; this._systemActions = new SystemActions.getDefault(); this._parentalControlsManager = ParentalControlsManager.getDefault(); } getResultMetas(apps) { const {scaleFactor} = St.ThemeContext.get_for_stage(global.stage); let metas = []; for (let id of apps) { if (id.endsWith('.desktop')) { let app = this._appSys.lookup_app(id); metas.push({ id: app.get_id(), name: app.get_name(), createIcon: size => app.create_icon_texture(size), }); } else { let name = this._systemActions.getName(id); let iconName = this._systemActions.getIconName(id); const createIcon = size => new St.Icon({ icon_name: iconName, width: size * scaleFactor, height: size * scaleFactor, style_class: 'system-action-icon', }); metas.push({id, name, createIcon}); } } return new Promise(resolve => resolve(metas)); } filterResults(results, maxNumber) { return results.slice(0, maxNumber); } getInitialResultSet(terms, cancellable) { // Defer until the parental controls manager is initialised, so the // results can be filtered correctly. if (!this._parentalControlsManager.initialized) { return new Promise(resolve => { let initializedId = this._parentalControlsManager.connect('app-filter-changed', async () => { if (this._parentalControlsManager.initialized) { this._parentalControlsManager.disconnect(initializedId); resolve(await this.getInitialResultSet(terms, cancellable)); } }); }); } let query = terms.join(' '); let groups = Shell.AppSystem.search(query); let usage = Shell.AppUsage.get_default(); let results = []; groups.forEach(group => { group = group.filter(appID => { const app = this._appSys.lookup_app(appID); return app && this._parentalControlsManager.shouldShowApp(app.app_info); }); results = results.concat(group.sort( (a, b) => usage.compare(a, b))); }); results = results.concat(this._systemActions.getMatchingActions(terms)); return new Promise(resolve => resolve(results)); } getSubsearchResultSet(previousResults, terms, cancellable) { return this.getInitialResultSet(terms, cancellable); } createResultObject(resultMeta) { if (resultMeta.id.endsWith('.desktop')) { return new AppIcon(this._appSys.lookup_app(resultMeta['id']), { expandTitleOnHover: false, }); } else { return new SystemActionIcon(this, resultMeta); } } } export const AppViewItem = GObject.registerClass( class AppViewItem extends St.Button { _init(params = {}, isDraggable = true, expandTitleOnHover = true) { super._init({ pivot_point: new Graphene.Point({x: 0.5, y: 0.5}), reactive: true, button_mask: St.ButtonMask.ONE | St.ButtonMask.TWO, can_focus: true, ...params, }); this._delegate = this; if (isDraggable) { this._draggable = DND.makeDraggable(this, {timeoutThreshold: 200}); this._draggable.connect('drag-begin', this._onDragBegin.bind(this)); this._draggable.connect('drag-cancelled', this._onDragCancelled.bind(this)); this._draggable.connect('drag-end', this._onDragEnd.bind(this)); } this._otherIconIsHovering = false; this._expandTitleOnHover = expandTitleOnHover; if (expandTitleOnHover) this.connect('notify::hover', this._onHover.bind(this)); this.connect('destroy', this._onDestroy.bind(this)); } _onDestroy() { if (this._dragMonitor) { DND.removeDragMonitor(this._dragMonitor); this._dragMonitor = null; } if (this._draggable) { if (this._dragging) Main.overview.endItemDrag(this); this._draggable = null; } } _updateMultiline() { if (!this._expandTitleOnHover || !this.icon.label) return; const {label} = this.icon; const {clutterText} = label; const layout = clutterText.get_layout(); if (!layout.is_wrapped() && !layout.is_ellipsized()) return; label.remove_transition('allocation'); const id = label.connect('notify::allocation', () => { label.restore_easing_state(); label.disconnect(id); }); const expand = this._forcedHighlight || this.hover || this.has_key_focus(); label.save_easing_state(); label.set_easing_duration(expand ? APP_ICON_TITLE_EXPAND_TIME : APP_ICON_TITLE_COLLAPSE_TIME); clutterText.set({ line_wrap: expand, line_wrap_mode: expand ? Pango.WrapMode.WORD_CHAR : Pango.WrapMode.NONE, ellipsize: expand ? Pango.EllipsizeMode.NONE : Pango.EllipsizeMode.END, }); } _onHover() { this._updateMultiline(); } _onDragBegin() { this._dragging = true; this.scaleAndFade(); Main.overview.beginItemDrag(this); } _onDragCancelled() { this._dragging = false; Main.overview.cancelledItemDrag(this); } _onDragEnd() { this._dragging = false; this.undoScaleAndFade(); Main.overview.endItemDrag(this); } scaleIn() { this.scale_x = 0; this.scale_y = 0; this.ease({ scale_x: 1, scale_y: 1, duration: APP_ICON_SCALE_IN_TIME, delay: APP_ICON_SCALE_IN_DELAY, mode: Clutter.AnimationMode.EASE_OUT_QUINT, }); } scaleAndFade() { this.reactive = false; this.ease({ scale_x: 0.5, scale_y: 0.5, opacity: 0, }); } undoScaleAndFade() { this.reactive = true; this.ease({ scale_x: 1.0, scale_y: 1.0, opacity: 255, }); } _canAccept(source) { return source !== this; } _setHoveringByDnd(hovering) { if (this._otherIconIsHovering === hovering) return; this._otherIconIsHovering = hovering; if (hovering) { this._dragMonitor = { dragMotion: this._onDragMotion.bind(this), }; DND.addDragMonitor(this._dragMonitor); } else { DND.removeDragMonitor(this._dragMonitor); } } _onDragMotion(dragEvent) { if (!this.contains(dragEvent.targetActor)) this._setHoveringByDnd(false); return DND.DragMotionResult.CONTINUE; } _withinLeeways(x) { return x < IconGrid.LEFT_DIVIDER_LEEWAY || x > this.width - IconGrid.RIGHT_DIVIDER_LEEWAY; } vfunc_key_focus_in() { this._updateMultiline(); super.vfunc_key_focus_in(); } vfunc_key_focus_out() { this._updateMultiline(); super.vfunc_key_focus_out(); } handleDragOver(source, _actor, x) { if (source === this) return DND.DragMotionResult.NO_DROP; if (!this._canAccept(source)) return DND.DragMotionResult.CONTINUE; if (this._withinLeeways(x)) { this._setHoveringByDnd(false); return DND.DragMotionResult.CONTINUE; } this._setHoveringByDnd(true); return DND.DragMotionResult.MOVE_DROP; } acceptDrop(source, _actor, x) { this._setHoveringByDnd(false); if (!this._canAccept(source)) return false; if (this._withinLeeways(x)) return false; return true; } cancelActions() { if (this._draggable) this._draggable.fakeRelease(); this.fake_release(); } get id() { return this._id; } get name() { return this._name; } setForcedHighlight(highlighted) { this._forcedHighlight = highlighted; this.set({ track_hover: !highlighted, hover: highlighted, }); } }); const FolderGrid = GObject.registerClass( class FolderGrid extends AppGrid { _init() { super._init({ allow_incomplete_pages: false, columns_per_page: 3, rows_per_page: 3, page_halign: Clutter.ActorAlign.CENTER, page_valign: Clutter.ActorAlign.CENTER, }); this.setGridModes([ { rows: 3, columns: 3, }, ]); } }); export const FolderView = GObject.registerClass( class FolderView extends BaseAppView { _init(folder, id, parentView) { super._init({ layout_manager: new Clutter.BinLayout(), x_expand: true, y_expand: true, gesture_modes: Shell.ActionMode.POPUP, }); // If it not expand, the parent doesn't take into account its preferred_width when allocating // the second time it allocates, so we apply the "Standard hack for ClutterBinLayout" this._grid.x_expand = true; this._id = id; this._folder = folder; this._parentView = parentView; this._grid._delegate = this; this.add_child(this._box); this._deletingFolder = false; this._apps = []; this._redisplay(); } _createGrid() { return new FolderGrid(); } _getItemPosition(item) { const appIndex = this._apps.indexOf(item.app); if (appIndex === -1) return [-1, -1]; const {itemsPerPage} = this._grid; return [Math.floor(appIndex / itemsPerPage), appIndex % itemsPerPage]; } _compareItems(a, b) { const aPosition = this._apps.indexOf(a.app); const bPosition = this._apps.indexOf(b.app); if (aPosition === -1 && bPosition === -1) return a.name.localeCompare(b.name); else if (aPosition === -1) return 1; else if (bPosition === -1) return -1; return aPosition - bPosition; } createFolderIcon(size) { const layout = new Clutter.GridLayout({ row_homogeneous: true, column_homogeneous: true, }); let icon = new St.Widget({ layout_manager: layout, x_align: Clutter.ActorAlign.CENTER, style: `width: ${size}px; height: ${size}px;`, }); let subSize = Math.floor(FOLDER_SUBICON_FRACTION * size); let numItems = this._orderedItems.length; let rtl = icon.get_text_direction() === Clutter.TextDirection.RTL; for (let i = 0; i < 4; i++) { const style = `width: ${subSize}px; height: ${subSize}px;`; let bin = new St.Bin({style}); if (i < numItems) bin.child = this._orderedItems[i].app.create_icon_texture(subSize); layout.attach(bin, rtl ? (i + 1) % 2 : i % 2, Math.floor(i / 2), 1, 1); } return icon; } _loadApps() { this._apps = []; const excludedApps = this._folder.get_strv('excluded-apps'); const appSys = Shell.AppSystem.get_default(); const addAppId = appId => { if (excludedApps.includes(appId)) return; if (this._appFavorites.isFavorite(appId)) return; const app = appSys.lookup_app(appId); if (!app) return; if (!this._parentalControlsManager.shouldShowApp(app.get_app_info())) return; if (this._apps.indexOf(app) !== -1) return; this._apps.push(app); }; const folderApps = this._folder.get_strv('apps'); folderApps.forEach(addAppId); const folderCategories = this._folder.get_strv('categories'); const appInfos = this._parentView.getAppInfos(); appInfos.forEach(appInfo => { let appCategories = _getCategories(appInfo); if (!_listsIntersect(folderCategories, appCategories)) return; addAppId(appInfo.get_id()); }); let items = []; this._apps.forEach(app => { let icon = this._items.get(app.get_id()); if (!icon) icon = new AppIcon(app); items.push(icon); }); return items; } acceptDrop(source) { if (!super.acceptDrop(source)) return false; const folderApps = this._orderedItems.map(item => item.id); this._folder.set_strv('apps', folderApps); return true; } addApp(app) { let folderApps = this._folder.get_strv('apps'); folderApps.push(app.id); this._folder.set_strv('apps', folderApps); // Also remove from 'excluded-apps' if the app id is listed // there. This is only possible on categories-based folders. let excludedApps = this._folder.get_strv('excluded-apps'); let index = excludedApps.indexOf(app.id); if (index >= 0) { excludedApps.splice(index, 1); this._folder.set_strv('excluded-apps', excludedApps); } } removeApp(app) { let folderApps = this._folder.get_strv('apps'); let index = folderApps.indexOf(app.id); if (index >= 0) folderApps.splice(index, 1); // Remove the folder if this is the last app icon; otherwise, // just remove the icon if (folderApps.length === 0) { this._deletingFolder = true; // Resetting all keys deletes the relocatable schema let keys = this._folder.settings_schema.list_keys(); for (const key of keys) this._folder.reset(key); let settings = new Gio.Settings({schema_id: 'org.gnome.desktop.app-folders'}); let folders = settings.get_strv('folder-children'); folders.splice(folders.indexOf(this._id), 1); settings.set_strv('folder-children', folders); this._deletingFolder = false; } else { // If this is a categories-based folder, also add it to // the list of excluded apps const categories = this._folder.get_strv('categories'); if (categories.length > 0) { const excludedApps = this._folder.get_strv('excluded-apps'); excludedApps.push(app.id); this._folder.set_strv('excluded-apps', excludedApps); } this._folder.set_strv('apps', folderApps); } } get deletingFolder() { return this._deletingFolder; } }); export const FolderIcon = GObject.registerClass({ Signals: { 'apps-changed': {}, }, }, class FolderIcon extends AppViewItem { _init(id, path, parentView) { super._init({ style_class: 'overview-tile app-folder', button_mask: St.ButtonMask.ONE, toggle_mode: true, can_focus: true, }, global.settings.is_writable('app-picker-layout')); this._id = id; this._name = ''; this._parentView = parentView; this._folder = new Gio.Settings({ schema_id: 'org.gnome.desktop.app-folders.folder', path, }); this.icon = new IconGrid.BaseIcon('', { createIcon: this._createIcon.bind(this), setSizeManually: true, }); this.set_child(this.icon); this.label_actor = this.icon.label; this.view = new FolderView(this._folder, id, parentView); this._folder.connectObject( 'changed', this._sync.bind(this), this); this._sync(); } _onDestroy() { super._onDestroy(); if (this._dialog) this._dialog.destroy(); else this.view.destroy(); } vfunc_clicked() { this.open(); } vfunc_unmap() { if (this._dialog) this._dialog.popdown(); super.vfunc_unmap(); } open() { this._ensureFolderDialog(); this.view._scrollView.vadjustment.value = 0; this._dialog.popup(); } getAppIds() { return this.view.getAllItems().map(item => item.id); } _setHoveringByDnd(hovering) { if (this._otherIconIsHovering === hovering) return; super._setHoveringByDnd(hovering); if (hovering) this.add_style_pseudo_class('drop'); else this.remove_style_pseudo_class('drop'); } _onDragMotion(dragEvent) { if (!this._canAccept(dragEvent.source)) this._setHoveringByDnd(false); return super._onDragMotion(dragEvent); } getDragActor() { const iconParams = { createIcon: this._createIcon.bind(this), showLabel: this.icon.label !== null, setSizeManually: false, }; const icon = new IconGrid.BaseIcon(this.name, iconParams); icon.style_class = this.style_class; return icon; } getDragActorSource() { return this; } _canAccept(source) { if (!(source instanceof AppIcon)) return false; let view = _getViewFromIcon(source); if (!view || !(view instanceof AppDisplay)) return false; if (this._folder.get_strv('apps').includes(source.id)) return false; return true; } acceptDrop(source) { const accepted = super.acceptDrop(source); if (!accepted) return false; this.view.addApp(source.app); return true; } _updateName() { let name = _getFolderName(this._folder); if (this.name === name) return; this._name = name; this.icon.label.text = this.name; } _sync() { if (this.view.deletingFolder) return; this.emit('apps-changed'); this._updateName(); this.visible = this.view.getAllItems().length > 0; this.icon.update(); } _createIcon(iconSize) { return this.view.createFolderIcon(iconSize, this); } _ensureFolderDialog() { if (this._dialog) return; if (!this._dialog) { this._dialog = new AppFolderDialog(this, this._folder, this._parentView); this._parentView.addFolderDialog(this._dialog); this._dialog.connect('open-state-changed', (popup, isOpen) => { const duration = FOLDER_DIALOG_ANIMATION_TIME / 2; const mode = isOpen ? Clutter.AnimationMode.EASE_OUT_QUAD : Clutter.AnimationMode.EASE_IN_QUAD; this.ease({ opacity: isOpen ? 0 : 255, duration, mode, delay: isOpen ? 0 : FOLDER_DIALOG_ANIMATION_TIME - duration, }); if (!isOpen) this.checked = false; }); } } }); export const AppFolderDialog = GObject.registerClass({ Signals: { 'open-state-changed': {param_types: [GObject.TYPE_BOOLEAN]}, }, }, class AppFolderDialog extends St.Bin { _init(source, folder, appDisplay) { super._init({ visible: false, x_expand: true, y_expand: true, reactive: true, }); this.add_constraint(new Layout.MonitorConstraint({primary: true})); const clickAction = new Clutter.ClickAction(); clickAction.connect('clicked', () => { const [x, y] = clickAction.get_coords(); const actor = global.stage.get_actor_at_pos(Clutter.PickMode.ALL, x, y); if (actor === this) this.popdown(); }); this.add_action(clickAction); this._source = source; this._folder = folder; this._view = source.view; this._appDisplay = appDisplay; this._delegate = this; this._isOpen = false; this._viewBox = new St.BoxLayout({ style_class: 'app-folder-dialog', x_expand: true, y_expand: true, x_align: Clutter.ActorAlign.CENTER, y_align: Clutter.ActorAlign.CENTER, vertical: true, }); this.child = new St.Bin({ style_class: 'app-folder-dialog-container', child: this._viewBox, x_align: Clutter.ActorAlign.FILL, y_align: Clutter.ActorAlign.FILL, }); this._addFolderNameEntry(); this._viewBox.add_child(this._view); global.focus_manager.add_group(this); this._grabHelper = new GrabHelper.GrabHelper(this, { actionMode: Shell.ActionMode.POPUP, }); this.connect('destroy', this._onDestroy.bind(this)); this._dragMonitor = null; this._sourceMappedId = 0; this._popdownTimeoutId = 0; this._needsZoomAndFade = false; this._popdownCallbacks = []; } _addFolderNameEntry() { this._entryBox = new St.BoxLayout({ style_class: 'folder-name-container', }); this._viewBox.add_child(this._entryBox); // Empty actor to center the title let ghostButton = new Clutter.Actor(); this._entryBox.add_child(ghostButton); let stack = new Shell.Stack({ x_expand: true, x_align: Clutter.ActorAlign.CENTER, }); this._entryBox.add_child(stack); // Folder name label this._folderNameLabel = new St.Label({ style_class: 'folder-name-label', x_expand: true, y_expand: true, x_align: Clutter.ActorAlign.CENTER, y_align: Clutter.ActorAlign.CENTER, }); stack.add_child(this._folderNameLabel); // Folder name entry this._entry = new St.Entry({ style_class: 'folder-name-entry', opacity: 0, reactive: false, }); this._entry.clutter_text.set({ x_expand: true, x_align: Clutter.ActorAlign.CENTER, }); this._entry.clutter_text.connect('activate', () => { this._showFolderLabel(); }); stack.add_child(this._entry); // Edit button this._editButton = new St.Button({ style_class: 'icon-button', button_mask: St.ButtonMask.ONE, toggle_mode: true, reactive: true, can_focus: true, x_align: Clutter.ActorAlign.END, y_align: Clutter.ActorAlign.CENTER, icon_name: 'document-edit-symbolic', }); this._editButton.connect('notify::checked', () => { if (this._editButton.checked) this._showFolderEntry(); else this._showFolderLabel(); }); this._entryBox.add_child(this._editButton); ghostButton.add_constraint(new Clutter.BindConstraint({ source: this._editButton, coordinate: Clutter.BindCoordinate.SIZE, })); this._folder.connect('changed::name', () => this._syncFolderName()); this._syncFolderName(); } _syncFolderName() { let newName = _getFolderName(this._folder); this._folderNameLabel.text = newName; this._entry.text = newName; } _switchActor(from, to) { to.reactive = true; to.ease({ opacity: 255, duration: 300, mode: Clutter.AnimationMode.EASE_OUT_QUAD, }); from.ease({ opacity: 0, duration: 300, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => { from.reactive = false; }, }); } _showFolderLabel() { if (this._editButton.checked) this._editButton.checked = false; this._maybeUpdateFolderName(); this._switchActor(this._entry, this._folderNameLabel); this.navigate_focus(this, St.DirectionType.TAB_FORWARD, false); } _showFolderEntry() { this._switchActor(this._folderNameLabel, this._entry); this._entry.clutter_text.set_selection(0, -1); this._entry.clutter_text.grab_key_focus(); } _maybeUpdateFolderName() { let folderName = _getFolderName(this._folder); let newFolderName = this._entry.text.trim(); if (newFolderName.length === 0 || newFolderName === folderName) return; this._folder.set_string('name', newFolderName); this._folder.set_boolean('translate', false); } _zoomAndFadeIn() { let [sourceX, sourceY] = this._source.get_transformed_position(); let [dialogX, dialogY] = this.child.get_transformed_position(); this.child.set({ translation_x: sourceX - dialogX, translation_y: sourceY - dialogY, scale_x: this._source.width / this.child.width, scale_y: this._source.height / this.child.height, opacity: 0, }); this.ease({ background_color: DIALOG_SHADE_NORMAL, duration: FOLDER_DIALOG_ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, }); this.child.ease({ translation_x: 0, translation_y: 0, scale_x: 1, scale_y: 1, opacity: 255, duration: FOLDER_DIALOG_ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, }); this._needsZoomAndFade = false; if (this._sourceMappedId === 0) { this._sourceMappedId = this._source.connect( 'notify::mapped', this._zoomAndFadeOut.bind(this)); } } _zoomAndFadeOut() { if (!this._isOpen) return; if (!this._source.mapped) { this.hide(); return; } let [sourceX, sourceY] = this._source.get_transformed_position(); let [dialogX, dialogY] = this.child.get_transformed_position(); this.ease({ background_color: new Cogl.Color({red: 0, green: 0, blue: 0, alpha: 0}), duration: FOLDER_DIALOG_ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, }); this.child.ease({ translation_x: sourceX - dialogX, translation_y: sourceY - dialogY, scale_x: this._source.width / this.child.width, scale_y: this._source.height / this.child.height, opacity: 0, duration: FOLDER_DIALOG_ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => { this.child.set({ translation_x: 0, translation_y: 0, scale_x: 1, scale_y: 1, opacity: 255, }); this.hide(); this._popdownCallbacks.forEach(func => func()); this._popdownCallbacks = []; }, }); this._needsZoomAndFade = false; } _removeDragMonitor() { if (!this._dragMonitor) return; DND.removeDragMonitor(this._dragMonitor); this._dragMonitor = null; } _removePopdownTimeout() { if (this._popdownTimeoutId === 0) return; GLib.source_remove(this._popdownTimeoutId); this._popdownTimeoutId = 0; } _onDestroy() { if (this._isOpen) { this._isOpen = false; this._grabHelper.ungrab({actor: this}); this._grabHelper = null; } if (this._sourceMappedId) { this._source.disconnect(this._sourceMappedId); this._sourceMappedId = 0; } this._removePopdownTimeout(); this._removeDragMonitor(); } vfunc_allocate(box) { super.vfunc_allocate(box); // We can only start zooming after receiving an allocation if (this._needsZoomAndFade) this._zoomAndFadeIn(); } vfunc_key_press_event(event) { if (global.focus_manager.navigate_from_event(event)) return Clutter.EVENT_STOP; return Clutter.EVENT_PROPAGATE; } _setLighterBackground(lighter) { const backgroundColor = lighter ? DIALOG_SHADE_HIGHLIGHT : DIALOG_SHADE_NORMAL; this.ease({ backgroundColor, duration: FOLDER_DIALOG_ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, }); } _withinDialog(x, y) { const childExtents = this.child.get_transformed_extents(); return childExtents.contains_point(new Graphene.Point({x, y})); } _setupDragMonitor() { if (this._dragMonitor) return; this._dragMonitor = { dragMotion: dragEvent => { const withinDialog = this._withinDialog(dragEvent.x, dragEvent.y); this._setLighterBackground(!withinDialog); if (withinDialog) { this._removePopdownTimeout(); this._removeDragMonitor(); } return DND.DragMotionResult.CONTINUE; }, }; DND.addDragMonitor(this._dragMonitor); } _setupPopdownTimeout() { if (this._popdownTimeoutId > 0) return; this._popdownTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, POPDOWN_DIALOG_TIMEOUT, () => { this._popdownTimeoutId = 0; this.popdown(); return GLib.SOURCE_REMOVE; }); } handleDragOver(source, actor, x, y) { if (this._withinDialog(x, y)) { this._setLighterBackground(false); this._removePopdownTimeout(); this._removeDragMonitor(); } else { this._setupPopdownTimeout(); this._setupDragMonitor(); } return DND.DragMotionResult.MOVE_DROP; } acceptDrop(source) { const appId = source.id; this.popdown(() => { this._view.removeApp(source); this._appDisplay.selectApp(appId); }); return true; } toggle() { if (this._isOpen) this.popdown(); else this.popup(); } popup() { if (this._isOpen) return; this._isOpen = this._grabHelper.grab({ actor: this, focus: this._editButton, onUngrab: () => this.popdown(), }); if (!this._isOpen) return; this.get_parent().set_child_above_sibling(this, null); this._needsZoomAndFade = true; this.show(); this.emit('open-state-changed', true); } popdown(callback) { // Either call the callback right away, or wait for the zoom out // animation to finish if (callback) { if (this.visible) this._popdownCallbacks.push(callback); else callback(); } if (!this._isOpen) return; this._zoomAndFadeOut(); this._showFolderLabel(); this._isOpen = false; this._grabHelper.ungrab({actor: this}); this.emit('open-state-changed', false); } }); export const AppIcon = GObject.registerClass({ Signals: { 'menu-state-changed': {param_types: [GObject.TYPE_BOOLEAN]}, 'sync-tooltip': {}, }, }, class AppIcon extends AppViewItem { _init(app, iconParams = {}) { // Get the isDraggable property without passing it on to the BaseIcon: const isDraggable = iconParams['isDraggable'] ?? true; delete iconParams['isDraggable']; const expandTitleOnHover = iconParams['expandTitleOnHover']; delete iconParams['expandTitleOnHover']; super._init({style_class: 'overview-tile'}, isDraggable, expandTitleOnHover); this.app = app; this._id = app.get_id(); this._name = app.get_name(); this._iconContainer = new St.Widget({ layout_manager: new Clutter.BinLayout(), x_expand: true, y_expand: true, }); this.set_child(this._iconContainer); this._folderPreviewId = 0; iconParams['createIcon'] = this._createIcon.bind(this); iconParams['setSizeManually'] = true; this.icon = new IconGrid.BaseIcon(app.get_name(), iconParams); this._iconContainer.add_child(this.icon); this._dot = new St.Widget({ style_class: 'app-grid-running-dot', layout_manager: new Clutter.BinLayout(), x_expand: true, y_expand: true, x_align: Clutter.ActorAlign.CENTER, y_align: Clutter.ActorAlign.END, }); this._dot.connect('style-changed', () => this._updateDotStyle()); this._iconContainer.add_child(this._dot); this.label_actor = this.icon.label; this.connect('popup-menu', this._onKeyboardPopupMenu.bind(this)); this._menu = null; this._menuManager = new PopupMenu.PopupMenuManager(this); this._menuTimeoutId = 0; this.app.connectObject('notify::state', () => this._updateRunningStyle(), this); this._updateRunningStyle(); } _onDestroy() { super._onDestroy(); if (this._folderPreviewId > 0) { GLib.source_remove(this._folderPreviewId); this._folderPreviewId = 0; } this._removeMenuTimeout(); } _onDragBegin() { if (this._menu) this._menu.close(true); this._removeMenuTimeout(); super._onDragBegin(); } _createIcon(iconSize) { return this.app.create_icon_texture(iconSize); } _removeMenuTimeout() { if (this._menuTimeoutId > 0) { GLib.source_remove(this._menuTimeoutId); this._menuTimeoutId = 0; } } _updateDotStyle() { const themeNode = this._dot.get_theme_node(); this._dot.translationY = themeNode.get_length('offset-y'); } _updateRunningStyle() { if (this.app.state !== Shell.AppState.STOPPED) this._dot.show(); else this._dot.hide(); } _setPopupTimeout() { this._removeMenuTimeout(); this._menuTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, MENU_POPUP_TIMEOUT, () => { this._menuTimeoutId = 0; this.popupMenu(); return GLib.SOURCE_REMOVE; }); GLib.Source.set_name_by_id(this._menuTimeoutId, '[gnome-shell] this.popupMenu'); } vfunc_leave_event(event) { const ret = super.vfunc_leave_event(event); this.fake_release(); this._removeMenuTimeout(); return ret; } vfunc_button_press_event(event) { const ret = super.vfunc_button_press_event(event); const button = event.get_button(); if (button === 1) { this._setPopupTimeout(); } else if (button === 3) { this.popupMenu(); return Clutter.EVENT_STOP; } return ret; } vfunc_touch_event(event) { const ret = super.vfunc_touch_event(event); if (event.type() === Clutter.EventType.TOUCH_BEGIN) this._setPopupTimeout(); return ret; } vfunc_clicked(button) { this._removeMenuTimeout(); this.activate(button); } _onKeyboardPopupMenu() { this.popupMenu(); this._menu.actor.navigate_focus(null, St.DirectionType.TAB_FORWARD, false); } getId() { return this.app.get_id(); } popupMenu(side = St.Side.LEFT) { this.setForcedHighlight(true); this._removeMenuTimeout(); this.fake_release(); if (!this._menu) { this._menu = new AppMenu(this, side, { favoritesSection: true, showSingleWindows: true, }); this._menu.setApp(this.app); this._menu.connect('open-state-changed', (menu, isPoppedUp) => { if (!isPoppedUp) this._onMenuPoppedDown(); }); Main.overview.connectObject('hiding', () => this._menu.close(), this); Main.uiGroup.add_child(this._menu.actor); this._menuManager.addMenu(this._menu); } this.emit('menu-state-changed', true); this._menu.open(BoxPointer.PopupAnimation.FULL); this._menuManager.ignoreRelease(); this.emit('sync-tooltip'); return false; } _onMenuPoppedDown() { this.setForcedHighlight(false); this.emit('menu-state-changed', false); } activate(button) { let event = Clutter.get_current_event(); let modifiers = event ? event.get_state() : 0; let isMiddleButton = button && button === Clutter.BUTTON_MIDDLE; let isCtrlPressed = (modifiers & Clutter.ModifierType.CONTROL_MASK) !== 0; let openNewWindow = this.app.can_open_new_window() && this.app.state === Shell.AppState.RUNNING && (isCtrlPressed || isMiddleButton); if (this.app.state === Shell.AppState.STOPPED || openNewWindow) this.animateLaunch(); if (openNewWindow) this.app.open_new_window(-1); else this.app.activate(); Main.overview.hide(); } animateLaunch() { this.icon.animateZoomOut(); } animateLaunchAtPos(x, y) { this.icon.animateZoomOutAtPos(x, y); } getDragActor() { return this.app.create_icon_texture(Main.overview.dash.iconSize); } // Returns the original actor that should align with the actor // we show as the item is being dragged. getDragActorSource() { return this.icon.icon; } shouldShowTooltip() { return this.hover && (!this._menu || !this._menu.isOpen); } _showFolderPreview() { this.icon.label.opacity = 0; this.icon.icon.ease({ scale_x: FOLDER_SUBICON_FRACTION, scale_y: FOLDER_SUBICON_FRACTION, }); } _hideFolderPreview() { this.icon.label.opacity = 255; this.icon.icon.ease({ scale_x: 1.0, scale_y: 1.0, }); } _canAccept(source) { let view = _getViewFromIcon(source); return source !== this && (source instanceof this.constructor) && (view instanceof AppDisplay); } _setHoveringByDnd(hovering) { if (this._otherIconIsHovering === hovering) return; super._setHoveringByDnd(hovering); if (hovering) { if (this._folderPreviewId > 0) return; this._folderPreviewId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 500, () => { this.add_style_pseudo_class('drop'); this._showFolderPreview(); this._folderPreviewId = 0; return GLib.SOURCE_REMOVE; }); } else { if (this._folderPreviewId > 0) { GLib.source_remove(this._folderPreviewId); this._folderPreviewId = 0; } this._hideFolderPreview(); this.remove_style_pseudo_class('drop'); } } acceptDrop(source, actor, x) { const accepted = super.acceptDrop(source, actor, x); if (!accepted) return false; let view = _getViewFromIcon(this); let apps = [this.id, source.id]; return view?.createFolder(apps); } cancelActions() { if (this._menu) this._menu.close(true); this._removeMenuTimeout(); super.cancelActions(); } }); const SystemActionIcon = GObject.registerClass( class SystemActionIcon extends Search.GridSearchResult { activate() { SystemActions.getDefault().activateAction(this.metaInfo['id']); Main.overview.hide(); } }); 0707010000019C000081A40000000000000000000000016712993F00001E32000000000000000000000000000000000000002700000000gnome-shell-47.1/js/ui/appFavorites.jsimport * as MessageTray from './messageTray.js'; import Shell from 'gi://Shell'; import * as ParentalControlsManager from '../misc/parentalControlsManager.js'; import * as Signals from '../misc/signals.js'; // In alphabetical order const RENAMED_DESKTOP_IDS = { 'baobab.desktop': 'org.gnome.baobab.desktop', 'cheese.desktop': 'org.gnome.Cheese.desktop', 'dconf-editor.desktop': 'ca.desrt.dconf-editor.desktop', 'empathy.desktop': 'org.gnome.Empathy.desktop', 'eog.desktop': 'org.gnome.eog.desktop', 'epiphany.desktop': 'org.gnome.Epiphany.desktop', 'evolution.desktop': 'org.gnome.Evolution.desktop', 'file-roller.desktop': 'org.gnome.FileRoller.desktop', 'five-or-more.desktop': 'org.gnome.five-or-more.desktop', 'four-in-a-row.desktop': 'org.gnome.Four-in-a-row.desktop', 'gcalctool.desktop': 'org.gnome.Calculator.desktop', 'geary.desktop': 'org.gnome.Geary.desktop', 'gedit.desktop': 'org.gnome.gedit.desktop', 'glchess.desktop': 'org.gnome.Chess.desktop', 'glines.desktop': 'org.gnome.five-or-more.desktop', 'gnect.desktop': 'org.gnome.Four-in-a-row.desktop', 'gnibbles.desktop': 'org.gnome.Nibbles.desktop', 'gnobots2.desktop': 'org.gnome.Robots.desktop', 'gnome-boxes.desktop': 'org.gnome.Boxes.desktop', 'gnome-calculator.desktop': 'org.gnome.Calculator.desktop', 'gnome-chess.desktop': 'org.gnome.Chess.desktop', 'gnome-clocks.desktop': 'org.gnome.clocks.desktop', 'gnome-contacts.desktop': 'org.gnome.Contacts.desktop', 'gnome-documents.desktop': 'org.gnome.Documents.desktop', 'gnome-font-viewer.desktop': 'org.gnome.font-viewer.desktop', 'gnome-klotski.desktop': 'org.gnome.Klotski.desktop', 'gnome-nibbles.desktop': 'org.gnome.Nibbles.desktop', 'gnome-mahjongg.desktop': 'org.gnome.Mahjongg.desktop', 'gnome-mines.desktop': 'org.gnome.Mines.desktop', 'gnome-music.desktop': 'org.gnome.Music.desktop', 'gnome-photos.desktop': 'org.gnome.Photos.desktop', 'gnome-robots.desktop': 'org.gnome.Robots.desktop', 'gnome-screenshot.desktop': 'org.gnome.Screenshot.desktop', 'gnome-software.desktop': 'org.gnome.Software.desktop', 'gnome-terminal.desktop': 'org.gnome.Terminal.desktop', 'gnome-tetravex.desktop': 'org.gnome.Tetravex.desktop', 'gnome-tweaks.desktop': 'org.gnome.tweaks.desktop', 'gnome-weather.desktop': 'org.gnome.Weather.desktop', 'gnomine.desktop': 'org.gnome.Mines.desktop', 'gnotravex.desktop': 'org.gnome.Tetravex.desktop', 'gnotski.desktop': 'org.gnome.Klotski.desktop', 'gtali.desktop': 'org.gnome.Tali.desktop', 'iagno.desktop': 'org.gnome.Reversi.desktop', 'nautilus.desktop': 'org.gnome.Nautilus.desktop', 'org.gnome.gnome-2048.desktop': 'org.gnome.TwentyFortyEight.desktop', 'org.gnome.taquin.desktop': 'org.gnome.Taquin.desktop', 'org.gnome.Weather.Application.desktop': 'org.gnome.Weather.desktop', 'polari.desktop': 'org.gnome.Polari.desktop', 'seahorse.desktop': 'org.gnome.seahorse.Application.desktop', 'shotwell.desktop': 'org.gnome.Shotwell.desktop', 'simple-scan.desktop': 'org.gnome.SimpleScan.desktop', 'tali.desktop': 'org.gnome.Tali.desktop', 'totem.desktop': 'org.gnome.Totem.desktop', 'evince.desktop': 'org.gnome.Evince.desktop', }; class AppFavorites extends Signals.EventEmitter { constructor() { super(); // Filter the apps through the user’s parental controls. this._parentalControlsManager = ParentalControlsManager.getDefault(); this._parentalControlsManager.connect('app-filter-changed', () => { this.reload(); this.emit('changed'); }); this.FAVORITE_APPS_KEY = 'favorite-apps'; this._favorites = {}; global.settings.connect(`changed::${this.FAVORITE_APPS_KEY}`, this._onFavsChanged.bind(this)); this.reload(); } _onFavsChanged() { this.reload(); this.emit('changed'); } reload() { let ids = global.settings.get_strv(this.FAVORITE_APPS_KEY); let appSys = Shell.AppSystem.get_default(); // Map old desktop file names to the current ones let updated = false; ids = ids.map(id => { let newId = RENAMED_DESKTOP_IDS[id]; if (newId !== undefined && appSys.lookup_app(newId) != null) { updated = true; return newId; } return id; }); // ... and write back the updated desktop file names if (updated) global.settings.set_strv(this.FAVORITE_APPS_KEY, ids); let apps = ids.map(id => appSys.lookup_app(id)) .filter(app => app !== null && this._parentalControlsManager.shouldShowApp(app.app_info)); this._favorites = {}; for (let i = 0; i < apps.length; i++) { let app = apps[i]; this._favorites[app.get_id()] = app; } } _getIds() { let ret = []; for (let id in this._favorites) ret.push(id); return ret; } getFavoriteMap() { return this._favorites; } getFavorites() { let ret = []; for (let id in this._favorites) ret.push(this._favorites[id]); return ret; } isFavorite(appId) { return appId in this._favorites; } _addFavorite(appId, pos) { if (appId in this._favorites) return false; let app = Shell.AppSystem.get_default().lookup_app(appId); if (!app) return false; if (!this._parentalControlsManager.shouldShowApp(app.app_info)) return false; let ids = this._getIds(); if (pos === -1) ids.push(appId); else ids.splice(pos, 0, appId); global.settings.set_strv(this.FAVORITE_APPS_KEY, ids); return true; } addFavoriteAtPos(appId, pos) { if (!this._addFavorite(appId, pos)) return; const app = Shell.AppSystem.get_default().lookup_app(appId); this._showNotification(_('%s has been pinned to the dash.').format(app.get_name()), null, () => this._removeFavorite(appId)); } addFavorite(appId) { this.addFavoriteAtPos(appId, -1); } moveFavoriteToPos(appId, pos) { this._removeFavorite(appId); this._addFavorite(appId, pos); } _removeFavorite(appId) { if (!(appId in this._favorites)) return false; let ids = this._getIds().filter(id => id !== appId); global.settings.set_strv(this.FAVORITE_APPS_KEY, ids); return true; } removeFavorite(appId) { let ids = this._getIds(); let pos = ids.indexOf(appId); let app = this._favorites[appId]; if (!this._removeFavorite(appId)) return; this._showNotification(_('%s has been unpinned from the dash.').format(app.get_name()), null, () => this._addFavorite(appId, pos)); } _showNotification(title, body, undoCallback) { const source = MessageTray.getSystemSource(); const notification = new MessageTray.Notification({ source, title, body, isTransient: true, forFeedback: true, }); notification.addAction(_('Undo'), () => undoCallback()); source.addNotification(notification); } } var appFavoritesInstance = null; /** * @returns {AppFavorites} */ export function getAppFavorites() { if (appFavoritesInstance == null) appFavoritesInstance = new AppFavorites(); return appFavoritesInstance; } 0707010000019D000081A40000000000000000000000016712993F00002518000000000000000000000000000000000000002200000000gnome-shell-47.1/js/ui/appMenu.jsimport Clutter from 'gi://Clutter'; import Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import Meta from 'gi://Meta'; import Shell from 'gi://Shell'; import St from 'gi://St'; import * as AppFavorites from './appFavorites.js'; import * as Main from './main.js'; import * as ParentalControlsManager from '../misc/parentalControlsManager.js'; import * as PopupMenu from './popupMenu.js'; export class AppMenu extends PopupMenu.PopupMenu { /** * @param {Clutter.Actor} sourceActor - actor the menu is attached to * @param {St.Side} side - arrow side * @param {object} params - options * @param {bool} params.favoritesSection - show items to add/remove favorite * @param {bool} params.showSingleWindow - show window section for a single window */ constructor(sourceActor, side = St.Side.TOP, params = {}) { if (Clutter.get_default_text_direction() === Clutter.TextDirection.RTL) { if (side === St.Side.LEFT) side = St.Side.RIGHT; else if (side === St.Side.RIGHT) side = St.Side.LEFT; } super(sourceActor, 0.5, side); this.actor.add_style_class_name('app-menu'); const { favoritesSection = false, showSingleWindows = false, } = params; this._app = null; this._appSystem = Shell.AppSystem.get_default(); this._parentalControlsManager = ParentalControlsManager.getDefault(); this._appFavorites = AppFavorites.getAppFavorites(); this._enableFavorites = favoritesSection; this._showSingleWindows = showSingleWindows; this._windowsChangedId = 0; this._updateWindowsLaterId = 0; /* Translators: This is the heading of a list of open windows */ this._openWindowsHeader = new PopupMenu.PopupSeparatorMenuItem(_('Open Windows')); this.addMenuItem(this._openWindowsHeader); this._windowSection = new PopupMenu.PopupMenuSection(); this.addMenuItem(this._windowSection); this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); this._newWindowItem = this.addAction(_('New Window'), () => { this._animateLaunch(); this._app.open_new_window(-1); Main.overview.hide(); }); this._actionSection = new PopupMenu.PopupMenuSection(); this.addMenuItem(this._actionSection); this._onGpuMenuItem = this.addAction('', () => { this._animateLaunch(); this._app.launch(0, -1, this._getNonDefaultLaunchGpu()); Main.overview.hide(); }); this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); this._toggleFavoriteItem = this.addAction('', () => { const appId = this._app.get_id(); if (this._appFavorites.isFavorite(appId)) this._appFavorites.removeFavorite(appId); else this._appFavorites.addFavorite(appId); }); this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); this._detailsItem = this.addAction(_('App Details'), async () => { const id = this._app.get_id(); const args = GLib.Variant.new('(ss)', [id, '']); const bus = await Gio.DBus.get(Gio.BusType.SESSION, null); bus.call( 'org.gnome.Software', '/org/gnome/Software', 'org.gtk.Actions', 'Activate', new GLib.Variant('(sava{sv})', ['details', [args], null]), null, 0, -1, null); Main.overview.hide(); }); this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); this._quitItem = this.addAction(_('Quit'), () => this._app.request_quit()); this._appSystem.connectObject( 'installed-changed', () => this._updateDetailsVisibility(), 'app-state-changed', this._onAppStateChanged.bind(this), this.actor); this._parentalControlsManager.connectObject( 'app-filter-changed', () => this._updateFavoriteItem(), this.actor); this._appFavorites.connectObject( 'changed', () => this._updateFavoriteItem(), this.actor); global.settings.connectObject( 'writable-changed::favorite-apps', () => this._updateFavoriteItem(), this.actor); global.connectObject( 'notify::switcheroo-control', () => this._updateGpuItem(), this.actor); this._updateQuitItem(); this._updateFavoriteItem(); this._updateGpuItem(); this._updateDetailsVisibility(); } _onAppStateChanged(sys, app) { if (this._app !== app) return; this._updateQuitItem(); this._updateNewWindowItem(); this._updateGpuItem(); } _updateQuitItem() { this._quitItem.visible = this._app?.state === Shell.AppState.RUNNING; } _updateNewWindowItem() { const actions = this._app?.appInfo?.list_actions() ?? []; this._newWindowItem.visible = this._app?.can_open_new_window() && !actions.includes('new-window'); } _updateFavoriteItem() { const appInfo = this._app?.app_info; const canFavorite = appInfo && this._enableFavorites && global.settings.is_writable('favorite-apps') && this._parentalControlsManager.shouldShowApp(appInfo); this._toggleFavoriteItem.visible = canFavorite; if (!canFavorite) return; const {id} = this._app; this._toggleFavoriteItem.label.text = this._appFavorites.isFavorite(id) ? _('Unpin') : _('Pin to Dash'); } _updateGpuItem() { const proxy = global.get_switcheroo_control(); const hasDualGpu = proxy?.get_cached_property('HasDualGpu')?.unpack(); const showItem = this._app?.state === Shell.AppState.STOPPED && hasDualGpu; this._onGpuMenuItem.visible = showItem; if (!showItem) return; const launchGpu = this._getNonDefaultLaunchGpu(); this._onGpuMenuItem.label.text = launchGpu === Shell.AppLaunchGpu.DEFAULT ? _('Launch using Integrated Graphics Card') : _('Launch using Discrete Graphics Card'); } _updateDetailsVisibility() { const sw = this._appSystem.lookup_app('org.gnome.Software.desktop'); this._detailsItem.visible = sw !== null; } _animateLaunch() { if (this.sourceActor.animateLaunch) this.sourceActor.animateLaunch(); } _getNonDefaultLaunchGpu() { return this._app.appInfo.get_boolean('PrefersNonDefaultGPU') ? Shell.AppLaunchGpu.DEFAULT : Shell.AppLaunchGpu.DISCRETE; } /** */ destroy() { this.setApp(null); super.destroy(); } /** * @returns {bool} - true if the menu is empty */ isEmpty() { if (!this._app) return true; return super.isEmpty(); } /** * @param {Shell.App} app - the app the menu represents */ setApp(app) { if (this._app === app) return; this._app?.disconnectObject(this); this._app = app; this._app?.connectObject('windows-changed', () => this._queueUpdateWindowsSection(), this); this._updateWindowsSection(); const appInfo = app?.app_info; const actions = appInfo?.list_actions() ?? []; this._actionSection.removeAll(); actions.forEach(action => { const label = appInfo.get_action_name(action); this._actionSection.addAction(label, event => { if (action === 'new-window') this._animateLaunch(); this._app.launch_action(action, event.get_time(), -1); Main.overview.hide(); }); }); this._updateQuitItem(); this._updateNewWindowItem(); this._updateFavoriteItem(); this._updateGpuItem(); } _queueUpdateWindowsSection() { if (this._updateWindowsLaterId) return; const laters = global.compositor.get_laters(); this._updateWindowsLaterId = laters.add( Meta.LaterType.BEFORE_REDRAW, () => { this._updateWindowsSection(); return GLib.SOURCE_REMOVE; }); } _updateWindowsSection() { if (this._updateWindowsLaterId) { const laters = global.compositor.get_laters(); laters.remove(this._updateWindowsLaterId); } this._updateWindowsLaterId = 0; this._windowSection.removeAll(); this._openWindowsHeader.hide(); if (!this._app) return; const minWindows = this._showSingleWindows ? 1 : 2; const windows = this._app.get_windows().filter(w => !w.skip_taskbar); if (windows.length < minWindows) return; this._openWindowsHeader.show(); windows.forEach(window => { const title = window.title || this._app.get_name(); const item = this._windowSection.addAction(title, event => { Main.activateWindow(window, event.get_time()); }); window.connectObject('notify::title', () => { item.label.text = window.title || this._app.get_name(); }, item); }); } } 0707010000019E000081A40000000000000000000000016712993F00001960000000000000000000000000000000000000002F00000000gnome-shell-47.1/js/ui/audioDeviceSelection.jsimport Clutter from 'gi://Clutter'; import Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import Meta from 'gi://Meta'; import Shell from 'gi://Shell'; import St from 'gi://St'; import * as Dialog from './dialog.js'; import * as ModalDialog from './modalDialog.js'; import * as Main from './main.js'; import {loadInterfaceXML} from '../misc/fileUtils.js'; const AudioDevice = { HEADPHONES: 1 << 0, HEADSET: 1 << 1, MICROPHONE: 1 << 2, }; const AudioDeviceSelectionIface = loadInterfaceXML('org.gnome.Shell.AudioDeviceSelection'); const AudioDeviceSelectionDialog = GObject.registerClass({ Signals: {'device-selected': {param_types: [GObject.TYPE_UINT]}}, }, class AudioDeviceSelectionDialog extends ModalDialog.ModalDialog { _init(devices) { super._init({styleClass: 'audio-device-selection-dialog'}); this._deviceItems = {}; this._buildLayout(); if (devices & AudioDevice.HEADPHONES) this._addDevice(AudioDevice.HEADPHONES); if (devices & AudioDevice.HEADSET) this._addDevice(AudioDevice.HEADSET); if (devices & AudioDevice.MICROPHONE) this._addDevice(AudioDevice.MICROPHONE); if (this._selectionBox.get_n_children() < 2) throw new Error('Too few devices for a selection'); } _buildLayout() { let content = new Dialog.MessageDialogContent({ title: _('Select Audio Device'), }); this._selectionBox = new St.BoxLayout({ style_class: 'audio-selection-box', x_align: Clutter.ActorAlign.CENTER, x_expand: true, }); content.add_child(this._selectionBox); this.contentLayout.add_child(content); this.addButton({ action: () => this.close(), label: _('Cancel'), key: Clutter.KEY_Escape, }); if (Main.sessionMode.allowSettings) { this.addButton({ action: this._openSettings.bind(this), label: _('Sound Settings'), }); } } _getDeviceLabel(device) { switch (device) { case AudioDevice.HEADPHONES: return _('Headphones'); case AudioDevice.HEADSET: return _('Headset'); case AudioDevice.MICROPHONE: return _('Microphone'); default: return null; } } _getDeviceIcon(device) { switch (device) { case AudioDevice.HEADPHONES: return 'audio-headphones-symbolic'; case AudioDevice.HEADSET: return 'audio-headset-symbolic'; case AudioDevice.MICROPHONE: return 'audio-input-microphone-symbolic'; default: return null; } } _addDevice(device) { const box = new St.BoxLayout({ style_class: 'audio-selection-device-box', vertical: true, }); box.connect('notify::height', () => { const laters = global.compositor.get_laters(); laters.add(Meta.LaterType.BEFORE_REDRAW, () => { box.width = box.height; return GLib.SOURCE_REMOVE; }); }); const icon = new St.Icon({ style_class: 'audio-selection-device-icon', icon_name: this._getDeviceIcon(device), }); box.add_child(icon); const label = new St.Label({ style_class: 'audio-selection-device-label', text: this._getDeviceLabel(device), x_align: Clutter.ActorAlign.CENTER, }); box.add_child(label); const button = new St.Button({ style_class: 'audio-selection-device', can_focus: true, child: box, }); this._selectionBox.add_child(button); button.connect('clicked', () => { this.emit('device-selected', device); this.close(); Main.overview.hide(); }); } _openSettings() { let desktopFile = 'gnome-sound-panel.desktop'; let app = Shell.AppSystem.get_default().lookup_app(desktopFile); if (!app) { log(`Settings panel for desktop file ${desktopFile} could not be loaded!`); return; } this.close(); Main.overview.hide(); app.activate(); } }); export class AudioDeviceSelectionDBus { constructor() { this._audioSelectionDialog = null; this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(AudioDeviceSelectionIface, this); this._dbusImpl.export(Gio.DBus.session, '/org/gnome/Shell/AudioDeviceSelection'); Gio.DBus.session.own_name('org.gnome.Shell.AudioDeviceSelection', Gio.BusNameOwnerFlags.REPLACE, null, null); } _onDialogClosed() { this._audioSelectionDialog = null; } _onDeviceSelected(dialog, device) { let connection = this._dbusImpl.get_connection(); let info = this._dbusImpl.get_info(); const deviceName = Object.keys(AudioDevice) .filter(dev => AudioDevice[dev] === device)[0].toLowerCase(); connection.emit_signal( this._audioSelectionDialog._sender, this._dbusImpl.get_object_path(), info ? info.name : null, 'DeviceSelected', GLib.Variant.new('(s)', [deviceName])); } OpenAsync(params, invocation) { if (this._audioSelectionDialog) { invocation.return_value(null); return; } let [deviceNames] = params; let devices = 0; deviceNames.forEach(n => (devices |= AudioDevice[n.toUpperCase()])); let dialog; try { dialog = new AudioDeviceSelectionDialog(devices); } catch (e) { invocation.return_value(null); return; } dialog._sender = invocation.get_sender(); dialog.connect('closed', this._onDialogClosed.bind(this)); dialog.connect('device-selected', this._onDeviceSelected.bind(this)); dialog.open(); this._audioSelectionDialog = dialog; invocation.return_value(null); } CloseAsync(params, invocation) { if (this._audioSelectionDialog && this._audioSelectionDialog._sender === invocation.get_sender()) this._audioSelectionDialog.close(); invocation.return_value(null); } } 0707010000019F000081A40000000000000000000000016712993F00006F2B000000000000000000000000000000000000002500000000gnome-shell-47.1/js/ui/background.js// READ THIS FIRST // Background handling is a maze of objects, both objects in this file, and // also objects inside Mutter. They all have a role. // // BackgroundManager // The only object that other parts of GNOME Shell deal with; a // BackgroundManager creates background actors and adds them to // the specified container. When the background is changed by the // user it will fade out the old actor and fade in the new actor. // (This is separate from the fading for an animated background, // since using two actors is quite inefficient.) // // MetaBackgroundImage // An object represented an image file that will be used for drawing // the background. MetaBackgroundImage objects asynchronously load, // so they are first created in an unloaded state, then later emit // a ::loaded signal when the Cogl object becomes available. // // MetaBackgroundImageCache // A cache from filename to MetaBackgroundImage. // // BackgroundSource // An object that is created for each GSettings schema (separate // settings schemas are used for the lock screen and main background), // and holds a reference to shared Background objects. // // MetaBackground // Holds the specification of a background - a background color // or gradient and one or two images blended together. // // Background // JS delegate object that Connects a MetaBackground to the GSettings // schema for the background. // // Animation // A helper object that handles loading a XML-based animation; it is a // wrapper for GnomeDesktop.BGSlideShow // // MetaBackgroundActor // An actor that draws the background for a single monitor // // BackgroundCache // A cache of Settings schema => BackgroundSource and of a single Animation. // Also used to share file monitors. // // A static image, background color or gradient is relatively straightforward. The // calling code creates a separate BackgroundManager for each monitor. Since they // are created for the same GSettings schema, they will use the same BackgroundSource // object, which provides a single Background and correspondingly a single // MetaBackground object. // // BackgroundManager BackgroundManager // | \ / | // | BackgroundSource | looked up in BackgroundCache // | | | // | Background | // | | | // MetaBackgroundActor | MetaBackgroundActor // \ | / // `------- MetaBackground ------' // | // MetaBackgroundImage looked up in MetaBackgroundImageCache // // The animated case is tricker because the animation XML file can specify different // files for different monitor resolutions and aspect ratios. For this reason, // the BackgroundSource provides different Background share a single Animation object, // which tracks the animation, but use different MetaBackground objects. In the // common case, the different MetaBackground objects will be created for the // same filename and look up the *same* MetaBackgroundImage object, so there is // little wasted memory: // // BackgroundManager BackgroundManager // | \ / | // | BackgroundSource | looked up in BackgroundCache // | / \ | // | Background Background | // | | \ / | | // | | Animation | | looked up in BackgroundCache // MetaBackgroundA|tor Me|aBackgroundActor // \ | | / // MetaBackground MetaBackground // \ / // MetaBackgroundImage looked up in MetaBackgroundImageCache // MetaBackgroundImage // // But the case of different filenames and different background images // is possible as well: // .... // MetaBackground MetaBackground // | | // MetaBackgroundImage MetaBackgroundImage // MetaBackgroundImage MetaBackgroundImage import Clutter from 'gi://Clutter'; import Cogl from 'gi://Cogl'; import GDesktopEnums from 'gi://GDesktopEnums'; import Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import GnomeBG from 'gi://GnomeBG'; import GnomeDesktop from 'gi://GnomeDesktop'; import Meta from 'gi://Meta'; import * as Signals from '../misc/signals.js'; import * as LoginManager from '../misc/loginManager.js'; import * as Main from './main.js'; import * as Params from '../misc/params.js'; const DEFAULT_BACKGROUND_COLOR = new Cogl.Color({red: 40, green: 40, blue: 40, alpha: 255}); const BACKGROUND_SCHEMA = 'org.gnome.desktop.background'; const PRIMARY_COLOR_KEY = 'primary-color'; const SECONDARY_COLOR_KEY = 'secondary-color'; const COLOR_SHADING_TYPE_KEY = 'color-shading-type'; const BACKGROUND_STYLE_KEY = 'picture-options'; const PICTURE_URI_KEY = 'picture-uri'; const PICTURE_URI_DARK_KEY = 'picture-uri-dark'; const INTERFACE_SCHEMA = 'org.gnome.desktop.interface'; const COLOR_SCHEME_KEY = 'color-scheme'; const FADE_ANIMATION_TIME = 1000; // These parameters affect how often we redraw. // The first is how different (percent crossfaded) the slide show // has to look before redrawing and the second is the minimum // frequency (in seconds) we're willing to wake up const ANIMATION_OPACITY_STEP_INCREMENT = 4.0; const ANIMATION_MIN_WAKEUP_INTERVAL = 1.0; let _backgroundCache = null; function _fileEqual0(file1, file2) { if (file1 === file2) return true; if (!file1 || !file2) return false; return file1.equal(file2); } class BackgroundCache extends Signals.EventEmitter { constructor() { super(); this._fileMonitors = {}; this._backgroundSources = {}; this._animations = {}; } monitorFile(file) { let key = file.hash(); if (this._fileMonitors[key]) return; let monitor = file.monitor(Gio.FileMonitorFlags.NONE, null); monitor.connect('changed', (obj, theFile, otherFile, eventType) => { // Ignore CHANGED and CREATED events, since in both cases // we'll get a CHANGES_DONE_HINT event when done. if (eventType !== Gio.FileMonitorEvent.CHANGED && eventType !== Gio.FileMonitorEvent.CREATED) this.emit('file-changed', file); }); this._fileMonitors[key] = monitor; } getAnimation(params) { params = Params.parse(params, { file: null, settingsSchema: null, onLoaded: null, }); let animation = this._animations[params.settingsSchema]; if (animation && _fileEqual0(animation.file, params.file)) { if (params.onLoaded) { let id = GLib.idle_add(GLib.PRIORITY_DEFAULT, () => { params.onLoaded(this._animations[params.settingsSchema]); return GLib.SOURCE_REMOVE; }); GLib.Source.set_name_by_id(id, '[gnome-shell] params.onLoaded'); } return; } animation = new Animation({file: params.file}); animation.load_async(null, () => { this._animations[params.settingsSchema] = animation; if (params.onLoaded) { let id = GLib.idle_add(GLib.PRIORITY_DEFAULT, () => { params.onLoaded(this._animations[params.settingsSchema]); return GLib.SOURCE_REMOVE; }); GLib.Source.set_name_by_id(id, '[gnome-shell] params.onLoaded'); } }); } getBackgroundSource(layoutManager, settingsSchema) { // The layoutManager is always the same one; we pass in it since // Main.layoutManager may not be set yet if (!(settingsSchema in this._backgroundSources)) { this._backgroundSources[settingsSchema] = new BackgroundSource(layoutManager, settingsSchema); this._backgroundSources[settingsSchema]._useCount = 1; } else { this._backgroundSources[settingsSchema]._useCount++; } return this._backgroundSources[settingsSchema]; } releaseBackgroundSource(settingsSchema) { if (settingsSchema in this._backgroundSources) { let source = this._backgroundSources[settingsSchema]; source._useCount--; if (source._useCount === 0) { delete this._backgroundSources[settingsSchema]; source.destroy(); } } } } /** * @returns {BackgroundCache} */ function getBackgroundCache() { if (!_backgroundCache) _backgroundCache = new BackgroundCache(); return _backgroundCache; } const Background = GObject.registerClass({ Signals: {'loaded': {}, 'bg-changed': {}}, }, class Background extends Meta.Background { _init(params) { params = Params.parse(params, { monitorIndex: 0, layoutManager: Main.layoutManager, settings: null, file: null, style: null, }); super._init({meta_display: global.display}); this._settings = params.settings; this._file = params.file; this._style = params.style; this._monitorIndex = params.monitorIndex; this._layoutManager = params.layoutManager; this._fileWatches = {}; this._cancellable = new Gio.Cancellable(); this.isLoaded = false; this._interfaceSettings = new Gio.Settings({schema_id: INTERFACE_SCHEMA}); this._clock = new GnomeDesktop.WallClock(); this._clock.connectObject('notify::timezone', () => { if (this._animation) this._loadAnimation(this._animation.file); }, this); let loginManager = LoginManager.getLoginManager(); loginManager.connectObject('prepare-for-sleep', (lm, aboutToSuspend) => { if (aboutToSuspend) return; this._refreshAnimation(); }, this); this._settings.connectObject('changed', this._emitChangedSignal.bind(this), this); this._interfaceSettings.connectObject(`changed::${COLOR_SCHEME_KEY}`, this._emitChangedSignal.bind(this), this); this._load(); } destroy() { this._cancellable.cancel(); this._removeAnimationTimeout(); let i; let keys = Object.keys(this._fileWatches); for (i = 0; i < keys.length; i++) this._cache.disconnect(this._fileWatches[keys[i]]); this._fileWatches = null; this._clock.disconnectObject(this); this._clock = null; LoginManager.getLoginManager().disconnectObject(this); this._settings.disconnectObject(this); this._interfaceSettings.disconnectObject(this); if (this._changedIdleId) { GLib.source_remove(this._changedIdleId); this._changedIdleId = 0; } } _emitChangedSignal() { if (this._changedIdleId) return; this._changedIdleId = GLib.idle_add(GLib.PRIORITY_DEFAULT, () => { this._changedIdleId = 0; this.emit('bg-changed'); return GLib.SOURCE_REMOVE; }); GLib.Source.set_name_by_id(this._changedIdleId, '[gnome-shell] Background._emitChangedSignal'); } updateResolution() { if (this._animation) this._refreshAnimation(); } _refreshAnimation() { if (!this._animation) return; this._removeAnimationTimeout(); this._updateAnimation(); } _setLoaded() { if (this.isLoaded) return; this.isLoaded = true; if (this._cancellable?.is_cancelled()) return; let id = GLib.idle_add(GLib.PRIORITY_DEFAULT, () => { this.emit('loaded'); return GLib.SOURCE_REMOVE; }); GLib.Source.set_name_by_id(id, '[gnome-shell] Background._setLoaded Idle'); } _loadPattern() { let colorString, res_, color, secondColor; colorString = this._settings.get_string(PRIMARY_COLOR_KEY); [res_, color] = Cogl.Color.from_string(colorString); colorString = this._settings.get_string(SECONDARY_COLOR_KEY); [res_, secondColor] = Cogl.Color.from_string(colorString); let shadingType = this._settings.get_enum(COLOR_SHADING_TYPE_KEY); if (shadingType === GDesktopEnums.BackgroundShading.SOLID) this.set_color(color); else this.set_gradient(shadingType, color, secondColor); } _watchFile(file) { let key = file.hash(); if (this._fileWatches[key]) return; this._cache.monitorFile(file); let signalId = this._cache.connect('file-changed', (cache, changedFile) => { if (changedFile.equal(file)) { let imageCache = Meta.BackgroundImageCache.get_default(); imageCache.purge(changedFile); this._emitChangedSignal(); } }); this._fileWatches[key] = signalId; } _removeAnimationTimeout() { if (this._updateAnimationTimeoutId) { GLib.source_remove(this._updateAnimationTimeoutId); this._updateAnimationTimeoutId = 0; } } _updateAnimation() { this._updateAnimationTimeoutId = 0; this._animation.update(this._layoutManager.monitors[this._monitorIndex]); let files = this._animation.keyFrameFiles; let finish = () => { this._setLoaded(); if (files.length > 1) { this.set_blend(files[0], files[1], this._animation.transitionProgress, this._style); } else if (files.length > 0) { this.set_file(files[0], this._style); } else { this.set_file(null, this._style); } this._queueUpdateAnimation(); }; let cache = Meta.BackgroundImageCache.get_default(); let numPendingImages = files.length; for (let i = 0; i < files.length; i++) { this._watchFile(files[i]); let image = cache.load(files[i]); if (image.is_loaded()) { numPendingImages--; if (numPendingImages === 0) finish(); } else { // eslint-disable-next-line no-loop-func let id = image.connect('loaded', () => { image.disconnect(id); numPendingImages--; if (numPendingImages === 0) finish(); }); } } } _queueUpdateAnimation() { if (this._updateAnimationTimeoutId !== 0) return; if (!this._cancellable || this._cancellable.is_cancelled()) return; if (!this._animation.transitionDuration) return; let nSteps = 255 / ANIMATION_OPACITY_STEP_INCREMENT; let timePerStep = (this._animation.transitionDuration * 1000) / nSteps; let interval = Math.max( ANIMATION_MIN_WAKEUP_INTERVAL * 1000, timePerStep); if (interval > GLib.MAXUINT32) return; this._updateAnimationTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, interval, () => { this._updateAnimationTimeoutId = 0; this._updateAnimation(); return GLib.SOURCE_REMOVE; }); GLib.Source.set_name_by_id(this._updateAnimationTimeoutId, '[gnome-shell] this._updateAnimation'); } _loadAnimation(file) { this._cache.getAnimation({ file, settingsSchema: this._settings.schema_id, onLoaded: animation => { this._animation = animation; if (!this._animation || this._cancellable.is_cancelled()) { this._setLoaded(); return; } this._updateAnimation(); this._watchFile(file); }, }); } _loadImage(file) { this.set_file(file, this._style); this._watchFile(file); let cache = Meta.BackgroundImageCache.get_default(); let image = cache.load(file); if (image.is_loaded()) { this._setLoaded(); } else { let id = image.connect('loaded', () => { this._setLoaded(); image.disconnect(id); }); } } async _loadFile(file) { let info; try { info = await file.query_info_async( Gio.FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE, Gio.FileQueryInfoFlags.NONE, 0, this._cancellable); } catch (e) { this._setLoaded(); return; } const contentType = info.get_content_type(); if (contentType === 'application/xml') this._loadAnimation(file); else this._loadImage(file); } _load() { this._cache = getBackgroundCache(); this._loadPattern(); if (!this._file) { this._setLoaded(); return; } this._loadFile(this._file); } }); let _systemBackground; export const SystemBackground = GObject.registerClass({ Signals: {'loaded': {}}, }, class SystemBackground extends Meta.BackgroundActor { _init() { if (_systemBackground == null) { _systemBackground = new Meta.Background({meta_display: global.display}); _systemBackground.set_color(DEFAULT_BACKGROUND_COLOR); } super._init({ meta_display: global.display, monitor: 0, }); this.content.background = _systemBackground; let id = GLib.idle_add(GLib.PRIORITY_DEFAULT, () => { this.emit('loaded'); return GLib.SOURCE_REMOVE; }); GLib.Source.set_name_by_id(id, '[gnome-shell] SystemBackground.loaded'); } }); class BackgroundSource { constructor(layoutManager, settingsSchema) { // Allow override the background image setting for performance testing this._layoutManager = layoutManager; this._overrideImage = GLib.getenv('SHELL_BACKGROUND_IMAGE'); this._settings = new Gio.Settings({schema_id: settingsSchema}); this._backgrounds = []; const monitorManager = global.backend.get_monitor_manager(); this._monitorsChangedId = monitorManager.connect('monitors-changed', this._onMonitorsChanged.bind(this)); this._interfaceSettings = new Gio.Settings({schema_id: INTERFACE_SCHEMA}); } _onMonitorsChanged() { for (let monitorIndex in this._backgrounds) { let background = this._backgrounds[monitorIndex]; if (monitorIndex < this._layoutManager.monitors.length) { background.updateResolution(); } else { background.disconnect(background._changedId); background.destroy(); delete this._backgrounds[monitorIndex]; } } } getBackground(monitorIndex) { let file = null; let style; // We don't watch changes to settings here, // instead we rely on Background to watch those // and emit 'bg-changed' at the right time if (this._overrideImage != null) { file = Gio.File.new_for_path(this._overrideImage); style = GDesktopEnums.BackgroundStyle.ZOOM; // Hardcode } else { style = this._settings.get_enum(BACKGROUND_STYLE_KEY); if (style !== GDesktopEnums.BackgroundStyle.NONE) { const colorScheme = this._interfaceSettings.get_enum('color-scheme'); const uri = this._settings.get_string( colorScheme === GDesktopEnums.ColorScheme.PREFER_DARK ? PICTURE_URI_DARK_KEY : PICTURE_URI_KEY); file = Gio.File.new_for_commandline_arg(uri); } } // Animated backgrounds are (potentially) per-monitor, since // they can have variants that depend on the aspect ratio and // size of the monitor; for other backgrounds we can use the // same background object for all monitors. if (file == null || !file.get_basename().endsWith('.xml')) monitorIndex = 0; if (!(monitorIndex in this._backgrounds)) { let background = new Background({ monitorIndex, layoutManager: this._layoutManager, settings: this._settings, file, style, }); background._changedId = background.connect('bg-changed', () => { background.disconnect(background._changedId); background.destroy(); delete this._backgrounds[monitorIndex]; }); this._backgrounds[monitorIndex] = background; } return this._backgrounds[monitorIndex]; } destroy() { const monitorManager = global.backend.get_monitor_manager(); monitorManager.disconnect(this._monitorsChangedId); for (let monitorIndex in this._backgrounds) { let background = this._backgrounds[monitorIndex]; background.disconnect(background._changedId); background.destroy(); } this._backgrounds = null; } } const Animation = GObject.registerClass( class Animation extends GnomeBG.BGSlideShow { _init(params) { super._init(params); this.keyFrameFiles = []; this.transitionProgress = 0.0; this.transitionDuration = 0.0; this.loaded = false; } // eslint-disable-next-line camelcase load_async(cancellable, callback) { super.load_async(cancellable, () => { this.loaded = true; callback?.(); }); } update(monitor) { this.keyFrameFiles = []; if (this.get_num_slides() < 1) return; let [progress, duration, isFixed_, filename1, filename2] = this.get_current_slide(monitor.width, monitor.height); this.transitionDuration = duration; this.transitionProgress = progress; if (filename1) this.keyFrameFiles.push(Gio.File.new_for_path(filename1)); if (filename2) this.keyFrameFiles.push(Gio.File.new_for_path(filename2)); } }); export class BackgroundManager extends Signals.EventEmitter { constructor(params) { super(); params = Params.parse(params, { container: null, layoutManager: Main.layoutManager, monitorIndex: null, vignette: false, controlPosition: true, settingsSchema: BACKGROUND_SCHEMA, useContentSize: true, }); let cache = getBackgroundCache(); this._settingsSchema = params.settingsSchema; this._backgroundSource = cache.getBackgroundSource(params.layoutManager, params.settingsSchema); this._container = params.container; this._layoutManager = params.layoutManager; this._vignette = params.vignette; this._monitorIndex = params.monitorIndex; this._controlPosition = params.controlPosition; this._useContentSize = params.useContentSize; this.backgroundActor = this._createBackgroundActor(); this._newBackgroundActor = null; } destroy() { let cache = getBackgroundCache(); cache.releaseBackgroundSource(this._settingsSchema); this._backgroundSource = null; if (this._newBackgroundActor) { this._newBackgroundActor.destroy(); this._newBackgroundActor = null; } if (this.backgroundActor) { this.backgroundActor.destroy(); this.backgroundActor = null; } } _swapBackgroundActor() { let oldBackgroundActor = this.backgroundActor; this.backgroundActor = this._newBackgroundActor; this._newBackgroundActor = null; this.emit('changed'); if (Main.layoutManager.screenTransition.visible) { oldBackgroundActor.destroy(); return; } oldBackgroundActor.ease({ opacity: 0, duration: FADE_ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => oldBackgroundActor.destroy(), }); } _updateBackgroundActor() { if (this._newBackgroundActor) { /* Skip displaying existing background queued for load */ this._newBackgroundActor.destroy(); this._newBackgroundActor = null; } let newBackgroundActor = this._createBackgroundActor(); const oldContent = this.backgroundActor.content; const newContent = newBackgroundActor.content; newContent.vignette_sharpness = oldContent.vignette_sharpness; newContent.brightness = oldContent.brightness; newBackgroundActor.visible = this.backgroundActor.visible; this._newBackgroundActor = newBackgroundActor; const {background} = newBackgroundActor.content; if (background.isLoaded) { this._swapBackgroundActor(); } else { newBackgroundActor.loadedSignalId = background.connect('loaded', () => { background.disconnect(newBackgroundActor.loadedSignalId); newBackgroundActor.loadedSignalId = 0; this._swapBackgroundActor(); }); } } _createBackgroundActor() { let background = this._backgroundSource.getBackground(this._monitorIndex); let backgroundActor = new Meta.BackgroundActor({ meta_display: global.display, monitor: this._monitorIndex, request_mode: this._useContentSize ? Clutter.RequestMode.CONTENT_SIZE : Clutter.RequestMode.HEIGHT_FOR_WIDTH, x_expand: !this._useContentSize, y_expand: !this._useContentSize, }); backgroundActor.content.set({ background, vignette: this._vignette, vignette_sharpness: 0.5, brightness: 0.5, }); this._container.add_child(backgroundActor); if (this._controlPosition) { let monitor = this._layoutManager.monitors[this._monitorIndex]; backgroundActor.set_position(monitor.x, monitor.y); this._container.set_child_below_sibling(backgroundActor, null); } let changeSignalId = background.connect('bg-changed', () => { background.disconnect(changeSignalId); changeSignalId = null; this._updateBackgroundActor(); }); let loadedSignalId; if (background.isLoaded) { GLib.idle_add(GLib.PRIORITY_DEFAULT, () => { this.emit('loaded'); return GLib.SOURCE_REMOVE; }); } else { loadedSignalId = background.connect('loaded', () => { background.disconnect(loadedSignalId); loadedSignalId = null; this.emit('loaded'); }); } backgroundActor.connect('destroy', () => { if (changeSignalId) background.disconnect(changeSignalId); if (loadedSignalId) background.disconnect(loadedSignalId); if (backgroundActor.loadedSignalId) background.disconnect(backgroundActor.loadedSignalId); }); return backgroundActor; } } 070701000001A0000081A40000000000000000000000016712993F00000908000000000000000000000000000000000000002900000000gnome-shell-47.1/js/ui/backgroundMenu.jsimport Clutter from 'gi://Clutter'; import St from 'gi://St'; import * as BoxPointer from './boxpointer.js'; import * as PopupMenu from './popupMenu.js'; import * as Main from './main.js'; export class BackgroundMenu extends PopupMenu.PopupMenu { constructor(layoutManager) { super(layoutManager.dummyCursor, 0, St.Side.TOP); this.addSettingsAction(_('Change Background…'), 'gnome-background-panel.desktop'); this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); this.addSettingsAction(_('Display Settings'), 'gnome-display-panel.desktop'); this.addSettingsAction(_('Settings'), 'org.gnome.Settings.desktop'); this.actor.add_style_class_name('background-menu'); layoutManager.uiGroup.add_child(this.actor); this.actor.hide(); } } /** * @param {Meta.BackgroundActor} actor * @param {import('./layout.js').LayoutManager} layoutManager */ export function addBackgroundMenu(actor, layoutManager) { actor.reactive = true; actor._backgroundMenu = new BackgroundMenu(layoutManager); actor._backgroundManager = new PopupMenu.PopupMenuManager(actor); actor._backgroundManager.addMenu(actor._backgroundMenu); function openMenu(x, y) { Main.layoutManager.setDummyCursorGeometry(x, y, 0, 0); actor._backgroundMenu.open(BoxPointer.PopupAnimation.FULL); } let clickAction = new Clutter.ClickAction(); clickAction.connect('long-press', (action, theActor, state) => { if (state === Clutter.LongPressState.QUERY) { return (action.get_button() === 0 || action.get_button() === 1) && !actor._backgroundMenu.isOpen; } if (state === Clutter.LongPressState.ACTIVATE) { let [x, y] = action.get_coords(); openMenu(x, y); actor._backgroundManager.ignoreRelease(); } return true; }); clickAction.connect('clicked', action => { if (action.get_button() === 3) { let [x, y] = action.get_coords(); openMenu(x, y); } }); actor.add_action(clickAction); actor.connect('destroy', () => { actor._backgroundMenu.destroy(); actor._backgroundMenu = null; actor._backgroundManager = null; }); } 070701000001A1000081A40000000000000000000000016712993F00002634000000000000000000000000000000000000002300000000gnome-shell-47.1/js/ui/barLevel.jsimport Atk from 'gi://Atk'; import Clutter from 'gi://Clutter'; import GObject from 'gi://GObject'; import St from 'gi://St'; export const BarLevel = GObject.registerClass({ Properties: { 'value': GObject.ParamSpec.double( 'value', null, null, GObject.ParamFlags.READWRITE, 0, 2, 0), 'maximum-value': GObject.ParamSpec.double( 'maximum-value', null, null, GObject.ParamFlags.READWRITE, 1, 2, 1), 'overdrive-start': GObject.ParamSpec.double( 'overdrive-start', null, null, GObject.ParamFlags.READWRITE, 1, 2, 1), }, }, class BarLevel extends St.DrawingArea { _init(params) { this._maxValue = 1; this._value = 0; this._overdriveStart = 1; this._barLevelWidth = 0; this._barLevelHeight = 0; this._overdriveSeparatorWidth = 0; this._barLevelColor = null; this._barLevelActiveColor = null; this._barLevelOverdriveColor = null; super._init({ style_class: 'barlevel', accessible_role: Atk.Role.LEVEL_BAR, ...params, }); this.connect('notify::allocation', () => { this._barLevelWidth = this.allocation.get_width(); }); this._customAccessible = St.GenericAccessible.new_for_actor(this); this.set_accessible(this._customAccessible); this._customAccessible.connect('get-current-value', this._getCurrentValue.bind(this)); this._customAccessible.connect('get-minimum-value', this._getMinimumValue.bind(this)); this._customAccessible.connect('get-maximum-value', this._getMaximumValue.bind(this)); this._customAccessible.connect('set-current-value', this._setCurrentValue.bind(this)); this.connect('notify::value', this._valueChanged.bind(this)); } get value() { return this._value; } set value(value) { value = Math.max(Math.min(value, this._maxValue), 0); if (this._value === value) return; this._value = value; this.notify('value'); this.queue_repaint(); } get maximumValue() { return this._maxValue; } set maximumValue(value) { value = Math.max(value, 1); if (this._maxValue === value) return; this._maxValue = value; this._overdriveStart = Math.min(this._overdriveStart, this._maxValue); this.notify('maximum-value'); this.queue_repaint(); } get overdriveStart() { return this._overdriveStart; } set overdriveStart(value) { if (this._overdriveStart === value) return; if (value > this._maxValue) { throw new Error(`Tried to set overdrive value to ${value}, ` + `which is a number greater than the maximum allowed value ${this._maxValue}`); } this._overdriveStart = value; this.notify('overdrive-start'); this.queue_repaint(); } vfunc_style_changed() { const themeNode = this.get_theme_node(); this._barLevelHeight = themeNode.get_length('-barlevel-height'); this._overdriveSeparatorWidth = themeNode.get_length('-barlevel-overdrive-separator-width'); this._barLevelColor = themeNode.get_color('-barlevel-background-color'); this._barLevelActiveColor = themeNode.get_color('-barlevel-active-background-color'); this._barLevelOverdriveColor = themeNode.get_color('-barlevel-overdrive-color'); super.vfunc_style_changed(); } vfunc_repaint() { let cr = this.get_context(); let themeNode = this.get_theme_node(); let [width, height] = this.get_surface_size(); const rtl = this.get_text_direction() === Clutter.TextDirection.RTL; const barLevelBorderRadius = Math.min(width, this._barLevelHeight) / 2; let fgColor = themeNode.get_foreground_color(); const TAU = Math.PI * 2; let endX = 0; if (this._maxValue > 0) { let progress = this._value / this._maxValue; if (rtl) progress = 1 - progress; endX = barLevelBorderRadius + (width - 2 * barLevelBorderRadius) * progress; } let overdriveRatio = this._overdriveStart / this._maxValue; if (rtl) overdriveRatio = 1 - overdriveRatio; let overdriveSeparatorX = barLevelBorderRadius + (width - 2 * barLevelBorderRadius) * overdriveRatio; let overdriveActive = this._overdriveStart !== this._maxValue; const overdriveSeparatorWidth = overdriveActive ? this._overdriveSeparatorWidth : 0; let xcArcStart = barLevelBorderRadius; let xcArcEnd = width - xcArcStart; if (rtl) [xcArcStart, xcArcEnd] = [xcArcEnd, xcArcStart]; /* background bar */ if (!rtl) cr.arc(xcArcEnd, height / 2, barLevelBorderRadius, TAU * (3 / 4), TAU * (1 / 4)); else cr.arcNegative(xcArcEnd, height / 2, barLevelBorderRadius, TAU * (3 / 4), TAU * (1 / 4)); cr.lineTo(endX, (height + this._barLevelHeight) / 2); cr.lineTo(endX, (height - this._barLevelHeight) / 2); cr.lineTo(xcArcEnd, (height - this._barLevelHeight) / 2); cr.setSourceColor(this._barLevelColor); cr.fillPreserve(); cr.fill(); /* normal progress bar */ let x = 0; if (!rtl) { x = Math.min(endX, overdriveSeparatorX - overdriveSeparatorWidth / 2); cr.arc(xcArcStart, height / 2, barLevelBorderRadius, TAU * (1 / 4), TAU * (3 / 4)); } else { x = Math.max(endX, overdriveSeparatorX + overdriveSeparatorWidth / 2); cr.arcNegative(xcArcStart, height / 2, barLevelBorderRadius, TAU * (1 / 4), TAU * (3 / 4)); } cr.lineTo(x, (height - this._barLevelHeight) / 2); cr.lineTo(x, (height + this._barLevelHeight) / 2); cr.lineTo(xcArcStart, (height + this._barLevelHeight) / 2); if (this._value > 0) cr.setSourceColor(this._barLevelActiveColor); cr.fillPreserve(); cr.fill(); /* overdrive progress barLevel */ if (!rtl) x = Math.min(endX, overdriveSeparatorX) + overdriveSeparatorWidth / 2; else x = Math.max(endX, overdriveSeparatorX) - overdriveSeparatorWidth / 2; if (this._value > this._overdriveStart) { cr.moveTo(x, (height - this._barLevelHeight) / 2); cr.lineTo(endX, (height - this._barLevelHeight) / 2); cr.lineTo(endX, (height + this._barLevelHeight) / 2); cr.lineTo(x, (height + this._barLevelHeight) / 2); cr.lineTo(x, (height - this._barLevelHeight) / 2); cr.setSourceColor(this._barLevelOverdriveColor); cr.fillPreserve(); cr.fill(); } /* end progress bar arc */ if (this._value > 0) { if (this._value <= this._overdriveStart) cr.setSourceColor(this._barLevelActiveColor); else cr.setSourceColor(this._barLevelOverdriveColor); if (!rtl) { cr.arc(endX, height / 2, barLevelBorderRadius, TAU * (3 / 4), TAU * (1 / 4)); cr.lineTo(Math.floor(endX), (height + this._barLevelHeight) / 2); cr.lineTo(Math.floor(endX), (height - this._barLevelHeight) / 2); } else { cr.arcNegative(endX, height / 2, barLevelBorderRadius, TAU * (3 / 4), TAU * (1 / 4)); cr.lineTo(Math.ceil(endX), (height + this._barLevelHeight) / 2); cr.lineTo(Math.ceil(endX), (height - this._barLevelHeight) / 2); } cr.lineTo(endX, (height - this._barLevelHeight) / 2); cr.fillPreserve(); } /* draw overdrive separator */ if (overdriveActive) { cr.moveTo(overdriveSeparatorX - overdriveSeparatorWidth / 2, (height - this._barLevelHeight) / 2); cr.lineTo(overdriveSeparatorX + overdriveSeparatorWidth / 2, (height - this._barLevelHeight) / 2); cr.lineTo(overdriveSeparatorX + overdriveSeparatorWidth / 2, (height + this._barLevelHeight) / 2); cr.lineTo(overdriveSeparatorX - overdriveSeparatorWidth / 2, (height + this._barLevelHeight) / 2); cr.lineTo(overdriveSeparatorX - overdriveSeparatorWidth / 2, (height - this._barLevelHeight) / 2); if (this._value <= this._overdriveStart) cr.setSourceColor(fgColor); else cr.setSourceColor(this._barLevelColor); cr.fill(); } cr.$dispose(); } vfunc_get_preferred_height(_forWidth) { const themeNode = this.get_theme_node(); const height = this._getPreferredHeight(); return themeNode.adjust_preferred_height(height, height); } vfunc_get_preferred_width(_forHeight) { const themeNode = this.get_theme_node(); const width = this._getPreferredWidth(); return themeNode.adjust_preferred_width(width, width); } _getPreferredHeight() { return this._barLevelHeight; } _getPreferredWidth() { return this._overdriveSeparatorWidth; } _getCurrentValue() { return this._value; } _getOverdriveStart() { return this._overdriveStart; } _getMinimumValue() { return 0; } _getMaximumValue() { return this._maxValue; } _setCurrentValue(_actor, value) { this._value = value; } _valueChanged() { this._customAccessible.notify('accessible-value'); } }); 070701000001A2000081A40000000000000000000000016712993F0000593B000000000000000000000000000000000000002500000000gnome-shell-47.1/js/ui/boxpointer.jsimport Clutter from 'gi://Clutter'; import GObject from 'gi://GObject'; import Meta from 'gi://Meta'; import St from 'gi://St'; import * as Main from './main.js'; export const PopupAnimation = { NONE: 0, SLIDE: 1 << 0, FADE: 1 << 1, FULL: ~0, }; const POPUP_ANIMATION_TIME = 150; /** * BoxPointer: * * An actor which displays a triangle "arrow" pointing to a given * side. The .bin property is a container in which content can be * placed. The arrow position may be controlled via * setArrowOrigin(). The arrow side might be temporarily flipped * depending on the box size and source position to keep the box * totally inside the monitor workarea if possible. * */ export const BoxPointer = GObject.registerClass({ Signals: {'arrow-side-changed': {}}, }, class BoxPointer extends St.Widget { /** * @param {*} arrowSide side to draw the arrow on * @param {*} binProperties Properties to set on contained bin */ _init(arrowSide, binProperties) { super._init(); this.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS); this._arrowSide = arrowSide; this._userArrowSide = arrowSide; this._arrowOrigin = 0; this._arrowActor = null; this.bin = new St.Bin(binProperties); this.add_child(this.bin); this._border = new St.DrawingArea(); this._border.connect('repaint', this._drawBorder.bind(this)); this.add_child(this._border); this.set_child_above_sibling(this.bin, this._border); this._sourceAlignment = 0.5; this._muteKeys = true; this._muteInput = true; this.connect('notify::visible', () => { if (this.visible) Meta.disable_unredirect_for_display(global.display); else Meta.enable_unredirect_for_display(global.display); }); } vfunc_captured_event(event) { if (event.type() === Clutter.EventType.ENTER || event.type() === Clutter.EventType.LEAVE) return Clutter.EVENT_PROPAGATE; let mute = event.type() === Clutter.EventType.KEY_PRESS || event.type() === Clutter.EventType.KEY_RELEASE ? this._muteKeys : this._muteInput; if (mute) return Clutter.EVENT_STOP; return Clutter.EVENT_PROPAGATE; } get arrowSide() { return this._arrowSide; } open(animate, onComplete) { let themeNode = this.get_theme_node(); let rise = themeNode.get_length('-arrow-rise'); let animationTime = animate & PopupAnimation.FULL ? POPUP_ANIMATION_TIME : 0; if (animate & PopupAnimation.FADE) this.opacity = 0; else this.opacity = 255; this._muteKeys = false; this.show(); if (animate & PopupAnimation.SLIDE) { switch (this._arrowSide) { case St.Side.TOP: this.translation_y = -rise; break; case St.Side.BOTTOM: this.translation_y = rise; break; case St.Side.LEFT: this.translation_x = -rise; break; case St.Side.RIGHT: this.translation_x = rise; break; } } this.ease({ opacity: 255, translation_x: 0, translation_y: 0, duration: animationTime, mode: Clutter.AnimationMode.LINEAR, onComplete: () => { this._muteInput = false; if (onComplete) onComplete(); }, }); } close(animate, onComplete) { if (!this.visible) return; let translationX = 0; let translationY = 0; let themeNode = this.get_theme_node(); let rise = themeNode.get_length('-arrow-rise'); let fade = animate & PopupAnimation.FADE; let animationTime = animate & PopupAnimation.FULL ? POPUP_ANIMATION_TIME : 0; if (animate & PopupAnimation.SLIDE) { switch (this._arrowSide) { case St.Side.TOP: translationY = rise; break; case St.Side.BOTTOM: translationY = -rise; break; case St.Side.LEFT: translationX = rise; break; case St.Side.RIGHT: translationX = -rise; break; } } this._muteInput = true; this._muteKeys = true; this.remove_all_transitions(); this.ease({ opacity: fade ? 0 : 255, translation_x: translationX, translation_y: translationY, duration: animationTime, mode: Clutter.AnimationMode.LINEAR, onComplete: () => { this.hide(); this.opacity = 0; this.translation_x = 0; this.translation_y = 0; if (onComplete) onComplete(); }, }); } _adjustAllocationForArrow(isWidth, minSize, natSize) { let themeNode = this.get_theme_node(); let borderWidth = themeNode.get_length('-arrow-border-width'); minSize += borderWidth * 2; natSize += borderWidth * 2; if ((!isWidth && (this._arrowSide === St.Side.TOP || this._arrowSide === St.Side.BOTTOM)) || (isWidth && (this._arrowSide === St.Side.LEFT || this._arrowSide === St.Side.RIGHT))) { let rise = themeNode.get_length('-arrow-rise'); minSize += rise; natSize += rise; } return [minSize, natSize]; } vfunc_get_preferred_width(forHeight) { let themeNode = this.get_theme_node(); forHeight = themeNode.adjust_for_height(forHeight); let width = this.bin.get_preferred_width(forHeight); width = this._adjustAllocationForArrow(true, ...width); return themeNode.adjust_preferred_width(...width); } vfunc_get_preferred_height(forWidth) { let themeNode = this.get_theme_node(); let borderWidth = themeNode.get_length('-arrow-border-width'); forWidth = themeNode.adjust_for_width(forWidth); let height = this.bin.get_preferred_height(forWidth - 2 * borderWidth); height = this._adjustAllocationForArrow(false, ...height); return themeNode.adjust_preferred_height(...height); } vfunc_allocate(box) { if (this._sourceActor && this._sourceActor.mapped) { this._reposition(box); this._updateFlip(box); } this.set_allocation(box); let themeNode = this.get_theme_node(); let borderWidth = themeNode.get_length('-arrow-border-width'); let rise = themeNode.get_length('-arrow-rise'); let childBox = new Clutter.ActorBox(); let [availWidth, availHeight] = themeNode.get_content_box(box).get_size(); childBox.x1 = 0; childBox.y1 = 0; childBox.x2 = availWidth; childBox.y2 = availHeight; this._border.allocate(childBox); childBox.x1 = borderWidth; childBox.y1 = borderWidth; childBox.x2 = availWidth - borderWidth; childBox.y2 = availHeight - borderWidth; switch (this._arrowSide) { case St.Side.TOP: childBox.y1 += rise; break; case St.Side.BOTTOM: childBox.y2 -= rise; break; case St.Side.LEFT: childBox.x1 += rise; break; case St.Side.RIGHT: childBox.x2 -= rise; break; } this.bin.allocate(childBox); } _drawBorder(area) { let themeNode = this.get_theme_node(); if (this._arrowActor) { let [sourceX, sourceY] = this._arrowActor.get_transformed_position(); let [sourceWidth, sourceHeight] = this._arrowActor.get_transformed_size(); let [absX, absY] = this.get_transformed_position(); if (this._arrowSide === St.Side.TOP || this._arrowSide === St.Side.BOTTOM) this._arrowOrigin = sourceX - absX + sourceWidth / 2; else this._arrowOrigin = sourceY - absY + sourceHeight / 2; } let borderWidth = themeNode.get_length('-arrow-border-width'); let base = themeNode.get_length('-arrow-base'); let rise = themeNode.get_length('-arrow-rise'); let borderRadius = themeNode.get_length('-arrow-border-radius'); let halfBorder = borderWidth / 2; let halfBase = Math.floor(base / 2); let [width, height] = area.get_surface_size(); let [boxWidth, boxHeight] = [width, height]; if (this._arrowSide === St.Side.TOP || this._arrowSide === St.Side.BOTTOM) boxHeight -= rise; else boxWidth -= rise; let cr = area.get_context(); // Translate so that box goes from 0,0 to boxWidth,boxHeight, // with the arrow poking out of that if (this._arrowSide === St.Side.TOP) cr.translate(0, rise); else if (this._arrowSide === St.Side.LEFT) cr.translate(rise, 0); let [x1, y1] = [halfBorder, halfBorder]; let [x2, y2] = [boxWidth - halfBorder, boxHeight - halfBorder]; let skipTopLeft = false; let skipTopRight = false; let skipBottomLeft = false; let skipBottomRight = false; if (rise) { switch (this._arrowSide) { case St.Side.TOP: if (this._arrowOrigin === x1) skipTopLeft = true; else if (this._arrowOrigin === x2) skipTopRight = true; break; case St.Side.RIGHT: if (this._arrowOrigin === y1) skipTopRight = true; else if (this._arrowOrigin === y2) skipBottomRight = true; break; case St.Side.BOTTOM: if (this._arrowOrigin === x1) skipBottomLeft = true; else if (this._arrowOrigin === x2) skipBottomRight = true; break; case St.Side.LEFT: if (this._arrowOrigin === y1) skipTopLeft = true; else if (this._arrowOrigin === y2) skipBottomLeft = true; break; } } cr.moveTo(x1 + borderRadius, y1); if (this._arrowSide === St.Side.TOP && rise) { if (skipTopLeft) { cr.moveTo(x1, y2 - borderRadius); cr.lineTo(x1, y1 - rise); cr.lineTo(x1 + halfBase, y1); } else if (skipTopRight) { cr.lineTo(x2 - halfBase, y1); cr.lineTo(x2, y1 - rise); cr.lineTo(x2, y1 + borderRadius); } else { cr.lineTo(this._arrowOrigin - halfBase, y1); cr.lineTo(this._arrowOrigin, y1 - rise); cr.lineTo(this._arrowOrigin + halfBase, y1); } } if (!skipTopRight) { cr.lineTo(x2 - borderRadius, y1); cr.arc( x2 - borderRadius, y1 + borderRadius, borderRadius, 3 * Math.PI / 2, Math.PI * 2); } if (this._arrowSide === St.Side.RIGHT && rise) { if (skipTopRight) { cr.lineTo(x2 + rise, y1); cr.lineTo(x2 + rise, y1 + halfBase); } else if (skipBottomRight) { cr.lineTo(x2, y2 - halfBase); cr.lineTo(x2 + rise, y2); cr.lineTo(x2 - borderRadius, y2); } else { cr.lineTo(x2, this._arrowOrigin - halfBase); cr.lineTo(x2 + rise, this._arrowOrigin); cr.lineTo(x2, this._arrowOrigin + halfBase); } } if (!skipBottomRight) { cr.lineTo(x2, y2 - borderRadius); cr.arc( x2 - borderRadius, y2 - borderRadius, borderRadius, 0, Math.PI / 2); } if (this._arrowSide === St.Side.BOTTOM && rise) { if (skipBottomLeft) { cr.lineTo(x1 + halfBase, y2); cr.lineTo(x1, y2 + rise); cr.lineTo(x1, y2 - borderRadius); } else if (skipBottomRight) { cr.lineTo(x2, y2 + rise); cr.lineTo(x2 - halfBase, y2); } else { cr.lineTo(this._arrowOrigin + halfBase, y2); cr.lineTo(this._arrowOrigin, y2 + rise); cr.lineTo(this._arrowOrigin - halfBase, y2); } } if (!skipBottomLeft) { cr.lineTo(x1 + borderRadius, y2); cr.arc( x1 + borderRadius, y2 - borderRadius, borderRadius, Math.PI / 2, Math.PI); } if (this._arrowSide === St.Side.LEFT && rise) { if (skipTopLeft) { cr.lineTo(x1, y1 + halfBase); cr.lineTo(x1 - rise, y1); cr.lineTo(x1 + borderRadius, y1); } else if (skipBottomLeft) { cr.lineTo(x1 - rise, y2); cr.lineTo(x1 - rise, y2 - halfBase); } else { cr.lineTo(x1, this._arrowOrigin + halfBase); cr.lineTo(x1 - rise, this._arrowOrigin); cr.lineTo(x1, this._arrowOrigin - halfBase); } } if (!skipTopLeft) { cr.lineTo(x1, y1 + borderRadius); cr.arc( x1 + borderRadius, y1 + borderRadius, borderRadius, Math.PI, 3 * Math.PI / 2); } const [hasColor, bgColor] = themeNode.lookup_color('-arrow-background-color', false); if (hasColor) { cr.setSourceColor(bgColor); cr.fillPreserve(); } if (borderWidth > 0) { let borderColor = themeNode.get_color('-arrow-border-color'); cr.setSourceColor(borderColor); cr.setLineWidth(borderWidth); cr.stroke(); } cr.$dispose(); } setPosition(sourceActor, alignment) { if (!this._sourceActor || sourceActor !== this._sourceActor) { this._sourceActor?.disconnectObject(this); this._sourceActor = sourceActor; this._sourceActor?.connectObject('destroy', () => (this._sourceActor = null), this); } this._arrowAlignment = Math.clamp(alignment, 0.0, 1.0); this.queue_relayout(); } setSourceAlignment(alignment) { this._sourceAlignment = Math.clamp(alignment, 0.0, 1.0); if (!this._sourceActor) return; this.setPosition(this._sourceActor, this._arrowAlignment); } _reposition(allocationBox) { let sourceActor = this._sourceActor; let alignment = this._arrowAlignment; let monitorIndex = Main.layoutManager.findIndexForActor(sourceActor); this._sourceExtents = sourceActor.get_transformed_extents(); this._workArea = Main.layoutManager.getWorkAreaForMonitor(monitorIndex); // Position correctly relative to the sourceActor const sourceAllocation = sourceActor.get_allocation_box(); const sourceContentBox = sourceActor instanceof St.Widget ? sourceActor.get_theme_node().get_content_box(sourceAllocation) : new Clutter.ActorBox({ x2: sourceAllocation.get_width(), y2: sourceAllocation.get_height(), }); let sourceTopLeft = this._sourceExtents.get_top_left(); let sourceBottomRight = this._sourceExtents.get_bottom_right(); let sourceCenterX = sourceTopLeft.x + sourceContentBox.x1 + (sourceContentBox.x2 - sourceContentBox.x1) * this._sourceAlignment; let sourceCenterY = sourceTopLeft.y + sourceContentBox.y1 + (sourceContentBox.y2 - sourceContentBox.y1) * this._sourceAlignment; let [, , natWidth, natHeight] = this.get_preferred_size(); // We also want to keep it onscreen, and separated from the // edge by the same distance as the main part of the box is // separated from its sourceActor let workarea = this._workArea; let themeNode = this.get_theme_node(); let borderWidth = themeNode.get_length('-arrow-border-width'); let arrowBase = themeNode.get_length('-arrow-base'); let borderRadius = themeNode.get_length('-arrow-border-radius'); let margin = 4 * borderRadius + borderWidth + arrowBase; let gap = themeNode.get_length('-boxpointer-gap'); let padding = themeNode.get_length('-arrow-rise'); let resX, resY; switch (this._arrowSide) { case St.Side.TOP: resY = sourceBottomRight.y + gap; break; case St.Side.BOTTOM: resY = sourceTopLeft.y - natHeight - gap; break; case St.Side.LEFT: resX = sourceBottomRight.x + gap; break; case St.Side.RIGHT: resX = sourceTopLeft.x - natWidth - gap; break; } // Now align and position the pointing axis, making sure it fits on // screen. If the arrowOrigin is so close to the edge that the arrow // will not be isosceles, we try to compensate as follows: // - We skip the rounded corner and settle for a right angled arrow // as shown below. See _drawBorder for further details. // |\_____ // | // | // - If the arrow was going to be acute angled, we move the position // of the box to maintain the arrow's accuracy. let arrowOrigin; let halfBase = Math.floor(arrowBase / 2); let halfBorder = borderWidth / 2; let halfMargin = margin / 2; let [x1, y1] = [halfBorder, halfBorder]; let [x2, y2] = [natWidth - halfBorder, natHeight - halfBorder]; switch (this._arrowSide) { case St.Side.TOP: case St.Side.BOTTOM: if (this.text_direction === Clutter.TextDirection.RTL) alignment = 1.0 - alignment; resX = sourceCenterX - (halfMargin + (natWidth - margin) * alignment); resX = Math.max(resX, workarea.x + padding); resX = Math.min(resX, workarea.x + workarea.width - (padding + natWidth)); arrowOrigin = sourceCenterX - resX; if (arrowOrigin <= (x1 + (borderRadius + halfBase))) { if (arrowOrigin > x1) resX += arrowOrigin - x1; arrowOrigin = x1; } else if (arrowOrigin >= (x2 - (borderRadius + halfBase))) { if (arrowOrigin < x2) resX -= x2 - arrowOrigin; arrowOrigin = x2; } break; case St.Side.LEFT: case St.Side.RIGHT: resY = sourceCenterY - (halfMargin + (natHeight - margin) * alignment); resY = Math.max(resY, workarea.y + padding); resY = Math.min(resY, workarea.y + workarea.height - (padding + natHeight)); arrowOrigin = sourceCenterY - resY; if (arrowOrigin <= (y1 + (borderRadius + halfBase))) { if (arrowOrigin > y1) resY += arrowOrigin - y1; arrowOrigin = y1; } else if (arrowOrigin >= (y2 - (borderRadius + halfBase))) { if (arrowOrigin < y2) resY -= y2 - arrowOrigin; arrowOrigin = y2; } break; } this.setArrowOrigin(arrowOrigin); let parent = this.get_parent(); let success, x, y; while (!success) { [success, x, y] = parent.transform_stage_point(resX, resY); parent = parent.get_parent(); } // Actually set the position allocationBox.set_origin(Math.floor(x), Math.floor(y)); } // @origin: Coordinate specifying middle of the arrow, along // the Y axis for St.Side.LEFT, St.Side.RIGHT from the top and X axis from // the left for St.Side.TOP and St.Side.BOTTOM. setArrowOrigin(origin) { if (this._arrowOrigin !== origin) { this._arrowOrigin = origin; this._border.queue_repaint(); } } // @actor: an actor relative to which the arrow is positioned. // Differently from setPosition, this will not move the boxpointer itself, // on the arrow setArrowActor(actor) { if (this._arrowActor !== actor) { this._arrowActor = actor; this._border.queue_repaint(); } } _calculateArrowSide(arrowSide) { let sourceTopLeft = this._sourceExtents.get_top_left(); let sourceBottomRight = this._sourceExtents.get_bottom_right(); let [, , boxWidth, boxHeight] = this.get_preferred_size(); let workarea = this._workArea; switch (arrowSide) { case St.Side.TOP: if (sourceBottomRight.y + boxHeight > workarea.y + workarea.height && boxHeight < sourceTopLeft.y - workarea.y) return St.Side.BOTTOM; break; case St.Side.BOTTOM: if (sourceTopLeft.y - boxHeight < workarea.y && boxHeight < workarea.y + workarea.height - sourceBottomRight.y) return St.Side.TOP; break; case St.Side.LEFT: if (sourceBottomRight.x + boxWidth > workarea.x + workarea.width && boxWidth < sourceTopLeft.x - workarea.x) return St.Side.RIGHT; break; case St.Side.RIGHT: if (sourceTopLeft.x - boxWidth < workarea.x && boxWidth < workarea.x + workarea.width - sourceBottomRight.x) return St.Side.LEFT; break; } return arrowSide; } _updateFlip(allocationBox) { let arrowSide = this._calculateArrowSide(this._userArrowSide); if (this._arrowSide !== arrowSide) { this._arrowSide = arrowSide; this._reposition(allocationBox); this.emit('arrow-side-changed'); } } updateArrowSide(side) { this._arrowSide = side; this._border.queue_repaint(); this.emit('arrow-side-changed'); } getPadding(side) { return this.bin.get_theme_node().get_padding(side); } getArrowHeight() { return this.get_theme_node().get_length('-arrow-rise'); } }); 070701000001A3000081A40000000000000000000000016712993F000088BC000000000000000000000000000000000000002300000000gnome-shell-47.1/js/ui/calendar.jsimport Clutter from 'gi://Clutter'; import Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import Shell from 'gi://Shell'; import St from 'gi://St'; import * as Main from './main.js'; import * as MessageList from './messageList.js'; import * as MessageTray from './messageTray.js'; import * as Mpris from './mpris.js'; import * as PopupMenu from './popupMenu.js'; import {ensureActorVisibleInScrollView} from '../misc/animationUtils.js'; import {formatDateWithCFormatString} from '../misc/dateUtils.js'; import {loadInterfaceXML} from '../misc/fileUtils.js'; const SHOW_WEEKDATE_KEY = 'show-weekdate'; const MAX_NOTIFICATION_BUTTONS = 3; const NC_ = (context, str) => `${context}\u0004${str}`; function sameYear(dateA, dateB) { return dateA.getYear() === dateB.getYear(); } function sameMonth(dateA, dateB) { return sameYear(dateA, dateB) && (dateA.getMonth() === dateB.getMonth()); } function sameDay(dateA, dateB) { return sameMonth(dateA, dateB) && (dateA.getDate() === dateB.getDate()); } function _isWorkDay(date) { /* Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). */ let days = C_('calendar-no-work', '06'); return !days.includes(date.getDay().toString()); } function _getBeginningOfDay(date) { let ret = new Date(date.getTime()); ret.setHours(0); ret.setMinutes(0); ret.setSeconds(0); ret.setMilliseconds(0); return ret; } function _getEndOfDay(date) { const ret = _getBeginningOfDay(date); ret.setDate(ret.getDate() + 1); return ret; } function _getCalendarDayAbbreviation(dayNumber) { let abbreviations = [ /* Translators: Calendar grid abbreviation for Sunday. * * NOTE: These grid abbreviations are always shown together * and in order, e.g. "S M T W T F S". */ NC_('grid sunday', 'S'), /* Translators: Calendar grid abbreviation for Monday */ NC_('grid monday', 'M'), /* Translators: Calendar grid abbreviation for Tuesday */ NC_('grid tuesday', 'T'), /* Translators: Calendar grid abbreviation for Wednesday */ NC_('grid wednesday', 'W'), /* Translators: Calendar grid abbreviation for Thursday */ NC_('grid thursday', 'T'), /* Translators: Calendar grid abbreviation for Friday */ NC_('grid friday', 'F'), /* Translators: Calendar grid abbreviation for Saturday */ NC_('grid saturday', 'S'), ]; return Shell.util_translate_time_string(abbreviations[dayNumber]); } // Abstraction for an appointment/event in a calendar class CalendarEvent { constructor(id, date, end, summary) { this.id = id; this.date = date; this.end = end; this.summary = summary; } } // Interface for appointments/events - e.g. the contents of a calendar // export const EventSourceBase = GObject.registerClass({ GTypeFlags: GObject.TypeFlags.ABSTRACT, Properties: { 'has-calendars': GObject.ParamSpec.boolean( 'has-calendars', null, null, GObject.ParamFlags.READABLE, false), 'is-loading': GObject.ParamSpec.boolean( 'is-loading', null, null, GObject.ParamFlags.READABLE, false), }, Signals: {'changed': {}}, }, class EventSourceBase extends GObject.Object { /** * @returns {boolean} */ get isLoading() { throw new GObject.NotImplementedError(`isLoading in ${this.constructor.name}`); } /** * @returns {boolean} */ get hasCalendars() { throw new GObject.NotImplementedError(`hasCalendars in ${this.constructor.name}`); } destroy() { } requestRange(_begin, _end) { throw new GObject.NotImplementedError(`requestRange in ${this.constructor.name}`); } getEvents(_begin, _end) { throw new GObject.NotImplementedError(`getEvents in ${this.constructor.name}`); } /** * @param {Date} _day * @returns {boolean} */ hasEvents(_day) { throw new GObject.NotImplementedError(`hasEvents in ${this.constructor.name}`); } }); export const EmptyEventSource = GObject.registerClass( class EmptyEventSource extends EventSourceBase { get isLoading() { return false; } get hasCalendars() { return false; } requestRange(_begin, _end) { } getEvents(_begin, _end) { let result = []; return result; } hasEvents(_day) { return false; } }); const CalendarServerIface = loadInterfaceXML('org.gnome.Shell.CalendarServer'); const CalendarServerInfo = Gio.DBusInterfaceInfo.new_for_xml(CalendarServerIface); function CalendarServer() { return new Gio.DBusProxy({ g_connection: Gio.DBus.session, g_interface_name: CalendarServerInfo.name, g_interface_info: CalendarServerInfo, g_name: 'org.gnome.Shell.CalendarServer', g_object_path: '/org/gnome/Shell/CalendarServer', }); } function _datesEqual(a, b) { if (a < b) return false; else if (a > b) return false; return true; } /** * Checks whether an event overlaps a given interval * * @param {Date} e0 Beginning of the event * @param {Date} e1 End of the event * @param {Date} i0 Beginning of the interval * @param {Date} i1 End of the interval * @returns {boolean} Whether there was an overlap */ function _eventOverlapsInterval(e0, e1, i0, i1) { // This also ensures zero-length events are included if (e0 >= i0 && e1 < i1) return true; if (e1 <= i0) return false; if (i1 <= e0) return false; return true; } // an implementation that reads data from a session bus service export const DBusEventSource = GObject.registerClass( class DBusEventSource extends EventSourceBase { _init() { super._init(); this._resetCache(); this._isLoading = false; this._initialized = false; this._dbusProxy = new CalendarServer(); this._initProxy(); } async _initProxy() { let loaded = false; try { await this._dbusProxy.init_async(GLib.PRIORITY_DEFAULT, null); loaded = true; } catch (e) { // Ignore timeouts and install signals as normal, because with high // probability the service will appear later on, and we will get a // NameOwnerChanged which will finish loading // // (But still _initialized to false, because the proxy does not know // about the HasCalendars property and would cause an exception trying // to read it) if (!e.matches(Gio.DBusError, Gio.DBusError.TIMED_OUT)) { log(`Error loading calendars: ${e.message}`); return; } } this._dbusProxy.connectSignal('EventsAddedOrUpdated', this._onEventsAddedOrUpdated.bind(this)); this._dbusProxy.connectSignal('EventsRemoved', this._onEventsRemoved.bind(this)); this._dbusProxy.connectSignal('ClientDisappeared', this._onClientDisappeared.bind(this)); this._dbusProxy.connect('notify::g-name-owner', () => { if (this._dbusProxy.g_name_owner) this._onNameAppeared(); else this._onNameVanished(); }); this._dbusProxy.connect('g-properties-changed', () => { this.notify('has-calendars'); }); this._initialized = loaded; if (loaded) { this.notify('has-calendars'); this._onNameAppeared(); } } destroy() { this._dbusProxy.run_dispose(); } get hasCalendars() { if (this._initialized) return this._dbusProxy.HasCalendars; else return false; } get isLoading() { return this._isLoading; } _resetCache() { this._events = new Map(); this._lastRequestBegin = null; this._lastRequestEnd = null; } _removeMatching(uidPrefix) { let changed = false; for (const id of this._events.keys()) { if (id.startsWith(uidPrefix)) changed = this._events.delete(id) || changed; } return changed; } _onNameAppeared() { this._initialized = true; this._resetCache(); this._loadEvents(true); } _onNameVanished() { this._resetCache(); this.emit('changed'); } _onEventsAddedOrUpdated(dbusProxy, nameOwner, argArray) { const [appointments = []] = argArray; let changed = false; const handledRemovals = new Set(); for (let n = 0; n < appointments.length; n++) { const [id, summary, startTime, endTime] = appointments[n]; const date = new Date(startTime * 1000); const end = new Date(endTime * 1000); let event = new CalendarEvent(id, date, end, summary); /* It's a recurring event */ if (!id.endsWith('\n')) { const parentId = id.substring(0, id.lastIndexOf('\n') + 1); if (!handledRemovals.has(parentId)) { handledRemovals.add(parentId); this._removeMatching(parentId); } } this._events.set(event.id, event); changed = true; } if (changed) this.emit('changed'); } _onEventsRemoved(dbusProxy, nameOwner, argArray) { const [ids = []] = argArray; let changed = false; for (const id of ids) changed = this._removeMatching(id) || changed; if (changed) this.emit('changed'); } _onClientDisappeared(dbusProxy, nameOwner, argArray) { let [sourceUid = ''] = argArray; sourceUid += '\n'; if (this._removeMatching(sourceUid)) this.emit('changed'); } _loadEvents(forceReload) { // Ignore while loading if (!this._initialized) return; if (this._curRequestBegin && this._curRequestEnd) { if (forceReload) { this._events.clear(); this.emit('changed'); } this._dbusProxy.SetTimeRangeAsync( this._curRequestBegin.getTime() / 1000, this._curRequestEnd.getTime() / 1000, forceReload, Gio.DBusCallFlags.NONE).catch(logError); } } requestRange(begin, end) { if (!(_datesEqual(begin, this._lastRequestBegin) && _datesEqual(end, this._lastRequestEnd))) { this._lastRequestBegin = begin; this._lastRequestEnd = end; this._curRequestBegin = begin; this._curRequestEnd = end; this._loadEvents(true); } } *_getFilteredEvents(begin, end) { for (const event of this._events.values()) { if (_eventOverlapsInterval(event.date, event.end, begin, end)) yield event; } } getEvents(begin, end) { let result = [...this._getFilteredEvents(begin, end)]; result.sort((event1, event2) => { // sort events by end time on ending day let d1 = event1.date < begin && event1.end <= end ? event1.end : event1.date; let d2 = event2.date < begin && event2.end <= end ? event2.end : event2.date; return d1.getTime() - d2.getTime(); }); return result; } hasEvents(day) { let dayBegin = _getBeginningOfDay(day); let dayEnd = _getEndOfDay(day); const {done} = this._getFilteredEvents(dayBegin, dayEnd).next(); return !done; } }); export const Calendar = GObject.registerClass({ Signals: {'selected-date-changed': {param_types: [GLib.DateTime.$gtype]}}, }, class Calendar extends St.Widget { _init() { this._weekStart = Shell.util_get_week_start(); this._settings = new Gio.Settings({schema_id: 'org.gnome.desktop.calendar'}); this._settings.connect(`changed::${SHOW_WEEKDATE_KEY}`, this._onSettingsChange.bind(this)); this._useWeekdate = this._settings.get_boolean(SHOW_WEEKDATE_KEY); /** * Translators: The header displaying just the month name * standalone, when this is a month of the current year. * "%OB" is the new format specifier introduced in glibc 2.27, * in most cases you should not change it. */ this._headerFormatWithoutYear = _('%OB'); /** * Translators: The header displaying the month name and the year * number, when this is a month of a different year. You can * reorder the format specifiers or add other modifications * according to the requirements of your language. * "%OB" is the new format specifier introduced in glibc 2.27, * in most cases you should not use the old "%B" here unless you * absolutely know what you are doing. */ this._headerFormat = _('%OB %Y'); // Start off with the current date this._selectedDate = new Date(); this._shouldDateGrabFocus = false; super._init({ style_class: 'calendar', layout_manager: new Clutter.GridLayout(), reactive: true, }); this._buildHeader(); } setEventSource(eventSource) { if (!(eventSource instanceof EventSourceBase)) throw new Error('Event source is not valid type'); this._eventSource = eventSource; this._eventSource.connect('changed', () => { this._rebuildCalendar(); this._update(); }); this._rebuildCalendar(); this._update(); } // Sets the calendar to show a specific date setDate(date) { if (sameDay(date, this._selectedDate)) return; this._selectedDate = date; let datetime = GLib.DateTime.new_from_unix_local( this._selectedDate.getTime() / 1000); this.emit('selected-date-changed', datetime); this._update(); } updateTimeZone() { // The calendar need to be rebuilt after a time zone update because // the date might have changed. this._rebuildCalendar(); this._update(); } _buildHeader() { let layout = this.layout_manager; let offsetCols = this._useWeekdate ? 1 : 0; this.destroy_all_children(); // Top line of the calendar '<| September 2009 |>' this._topBox = new St.BoxLayout({style_class: 'calendar-month-header'}); layout.attach(this._topBox, 0, 0, offsetCols + 7, 1); this._backButton = new St.Button({ style_class: 'calendar-change-month-back pager-button', icon_name: 'pan-start-symbolic', accessible_name: _('Previous month'), can_focus: true, }); this._topBox.add_child(this._backButton); this._backButton.connect('clicked', this._onPrevMonthButtonClicked.bind(this)); this._monthLabel = new St.Label({ style_class: 'calendar-month-label', can_focus: true, x_align: Clutter.ActorAlign.CENTER, x_expand: true, y_align: Clutter.ActorAlign.CENTER, }); this._topBox.add_child(this._monthLabel); this._forwardButton = new St.Button({ style_class: 'calendar-change-month-forward pager-button', icon_name: 'pan-end-symbolic', accessible_name: _('Next month'), can_focus: true, }); this._topBox.add_child(this._forwardButton); this._forwardButton.connect('clicked', this._onNextMonthButtonClicked.bind(this)); // Add weekday labels... // // We need to figure out the abbreviated localized names for the days of the week; // we do this by just getting the next 7 days starting from right now and then putting // them in the right cell in the table. It doesn't matter if we add them in order let iter = new Date(this._selectedDate); iter.setSeconds(0); // Leap second protection. Hah! iter.setHours(12); for (let i = 0; i < 7; i++) { // Could use formatDateWithCFormatString(iter, '%a') but that normally gives three characters // and we want, ideally, a single character for e.g. S M T W T F S let customDayAbbrev = _getCalendarDayAbbreviation(iter.getDay()); let label = new St.Label({ style_class: 'calendar-day-heading', text: customDayAbbrev, can_focus: true, }); label.accessible_name = formatDateWithCFormatString(iter, '%A'); let col; if (this.get_text_direction() === Clutter.TextDirection.RTL) col = 6 - (7 + iter.getDay() - this._weekStart) % 7; else col = offsetCols + (7 + iter.getDay() - this._weekStart) % 7; layout.attach(label, col, 1, 1, 1); iter.setDate(iter.getDate() + 1); } // All the children after this are days, and get removed when we update the calendar this._firstDayIndex = this.get_n_children(); } vfunc_scroll_event(event) { switch (event.get_scroll_direction()) { case Clutter.ScrollDirection.UP: case Clutter.ScrollDirection.LEFT: this._onPrevMonthButtonClicked(); break; case Clutter.ScrollDirection.DOWN: case Clutter.ScrollDirection.RIGHT: this._onNextMonthButtonClicked(); break; } return Clutter.EVENT_PROPAGATE; } _onPrevMonthButtonClicked() { let newDate = new Date(this._selectedDate); let oldMonth = newDate.getMonth(); if (oldMonth === 0) { newDate.setMonth(11); newDate.setFullYear(newDate.getFullYear() - 1); if (newDate.getMonth() !== 11) { let day = 32 - new Date(newDate.getFullYear() - 1, 11, 32).getDate(); newDate = new Date(newDate.getFullYear() - 1, 11, day); } } else { newDate.setMonth(oldMonth - 1); if (newDate.getMonth() !== oldMonth - 1) { let day = 32 - new Date(newDate.getFullYear(), oldMonth - 1, 32).getDate(); newDate = new Date(newDate.getFullYear(), oldMonth - 1, day); } } this._backButton.grab_key_focus(); this.setDate(newDate); } _onNextMonthButtonClicked() { let newDate = new Date(this._selectedDate); let oldMonth = newDate.getMonth(); if (oldMonth === 11) { newDate.setMonth(0); newDate.setFullYear(newDate.getFullYear() + 1); if (newDate.getMonth() !== 0) { let day = 32 - new Date(newDate.getFullYear() + 1, 0, 32).getDate(); newDate = new Date(newDate.getFullYear() + 1, 0, day); } } else { newDate.setMonth(oldMonth + 1); if (newDate.getMonth() !== oldMonth + 1) { let day = 32 - new Date(newDate.getFullYear(), oldMonth + 1, 32).getDate(); newDate = new Date(newDate.getFullYear(), oldMonth + 1, day); } } this._forwardButton.grab_key_focus(); this.setDate(newDate); } _onSettingsChange() { this._useWeekdate = this._settings.get_boolean(SHOW_WEEKDATE_KEY); this._buildHeader(); this._rebuildCalendar(); this._update(); } _rebuildCalendar() { let now = new Date(); // Remove everything but the topBox and the weekday labels let children = this.get_children(); for (let i = this._firstDayIndex; i < children.length; i++) children[i].destroy(); this._buttons = []; // Start at the beginning of the week before the start of the month // // We want to show always 6 weeks (to keep the calendar menu at the same // height if there are no events), so we pad it according to the following // policy: // // 1 - If a month has 6 weeks, we place no padding (example: Dec 2012) // 2 - If a month has 5 weeks and it starts on week start, we pad one week // before it (example: Apr 2012) // 3 - If a month has 5 weeks and it starts on any other day, we pad one week // after it (example: Nov 2012) // 4 - If a month has 4 weeks, we pad one week before and one after it // (example: Feb 2010) // // Actually computing the number of weeks is complex, but we know that the // problematic categories (2 and 4) always start on week start, and that // all months at the end have 6 weeks. let beginDate = new Date( this._selectedDate.getFullYear(), this._selectedDate.getMonth(), 1); this._calendarBegin = new Date(beginDate); this._markedAsToday = now; let daysToWeekStart = (7 + beginDate.getDay() - this._weekStart) % 7; let startsOnWeekStart = daysToWeekStart === 0; let weekPadding = startsOnWeekStart ? 7 : 0; beginDate.setDate(beginDate.getDate() - (weekPadding + daysToWeekStart)); let layout = this.layout_manager; let iter = new Date(beginDate); let row = 2; // nRows here means 6 weeks + one header + one navbar let nRows = 8; while (row < nRows) { let button = new St.Button({ // xgettext:no-javascript-format label: formatDateWithCFormatString(iter, C_('date day number format', '%d')), can_focus: true, }); let rtl = button.get_text_direction() === Clutter.TextDirection.RTL; if (this._eventSource instanceof EmptyEventSource) button.reactive = false; button._date = new Date(iter); button.connect('clicked', () => { this._shouldDateGrabFocus = true; this.setDate(button._date); this._shouldDateGrabFocus = false; }); let hasEvents = this._eventSource.hasEvents(iter); let styleClass = 'calendar-day'; if (_isWorkDay(iter)) styleClass += ' calendar-weekday'; else styleClass += ' calendar-weekend'; // Hack used in lieu of border-collapse - see gnome-shell.css if (row === 2) styleClass = `calendar-day-top ${styleClass}`; let leftMost = rtl ? iter.getDay() === (this._weekStart + 6) % 7 : iter.getDay() === this._weekStart; if (leftMost) styleClass = `calendar-day-left ${styleClass}`; if (sameDay(now, iter)) styleClass += ' calendar-today'; else if (iter.getMonth() !== this._selectedDate.getMonth()) styleClass += ' calendar-other-month'; if (hasEvents) styleClass += ' calendar-day-with-events'; button.style_class = styleClass; let offsetCols = this._useWeekdate ? 1 : 0; let col; if (rtl) col = 6 - (7 + iter.getDay() - this._weekStart) % 7; else col = offsetCols + (7 + iter.getDay() - this._weekStart) % 7; layout.attach(button, col, row, 1, 1); this._buttons.push(button); if (this._useWeekdate && iter.getDay() === 4) { const label = new St.Label({ text: formatDateWithCFormatString(iter, '%V'), style_class: 'calendar-week-number', can_focus: true, }); let weekFormat = Shell.util_translate_time_string(N_('Week %V')); label.clutter_text.y_align = Clutter.ActorAlign.CENTER; label.accessible_name = formatDateWithCFormatString(iter, weekFormat); layout.attach(label, rtl ? 7 : 0, row, 1, 1); } iter.setDate(iter.getDate() + 1); if (iter.getDay() === this._weekStart) row++; } // Signal to the event source that we are interested in events // only from this date range this._eventSource.requestRange(beginDate, iter); } _update() { let now = new Date(); if (sameYear(this._selectedDate, now)) this._monthLabel.text = formatDateWithCFormatString(this._selectedDate, this._headerFormatWithoutYear); else this._monthLabel.text = formatDateWithCFormatString(this._selectedDate, this._headerFormat); if (!this._calendarBegin || !sameMonth(this._selectedDate, this._calendarBegin) || !sameDay(now, this._markedAsToday)) this._rebuildCalendar(); this._buttons.forEach(button => { if (sameDay(button._date, this._selectedDate)) { button.add_style_pseudo_class('selected'); if (this._shouldDateGrabFocus) button.grab_key_focus(); } else { button.remove_style_pseudo_class('selected'); } }); } }); export const NotificationMessage = GObject.registerClass( class NotificationMessage extends MessageList.Message { constructor(notification) { super(notification.source); this.notification = notification; this.connect('close', () => { this._closed = true; if (this.notification) this.notification.destroy(MessageTray.NotificationDestroyedReason.DISMISSED); }); notification.connectObject( 'action-added', (_, action) => this._addAction(action), 'action-removed', (_, action) => this._removeAction(action), 'destroy', () => { this.notification = null; if (!this._closed) this.close(); }, this); notification.bind_property('title', this, 'title', GObject.BindingFlags.SYNC_CREATE); notification.bind_property('body', this, 'body', GObject.BindingFlags.SYNC_CREATE); notification.bind_property('use-body-markup', this, 'use-body-markup', GObject.BindingFlags.SYNC_CREATE); notification.bind_property('datetime', this, 'datetime', GObject.BindingFlags.SYNC_CREATE); notification.bind_property('gicon', this, 'icon', GObject.BindingFlags.SYNC_CREATE); this._actions = new Map(); this.notification.actions.forEach(action => { this._addAction(action); }); } vfunc_clicked() { this.notification.activate(); } canClose() { return true; } _addAction(action) { if (!this._buttonBox) { this._buttonBox = new St.BoxLayout({ x_expand: true, style_class: 'notification-buttons-bin', }); this.setActionArea(this._buttonBox); global.focus_manager.add_group(this._buttonBox); } if (this._buttonBox.get_n_children() >= MAX_NOTIFICATION_BUTTONS) return; const button = new St.Button({ style_class: 'notification-button', x_expand: true, label: action.label, }); button.connect('clicked', () => action.activate()); this._actions.set(action, button); this._buttonBox.add_child(button); } _removeAction(action) { this._actions.get(action)?.destroy(); this._actions.delete(action); } }); const NotificationSection = GObject.registerClass( class NotificationSection extends MessageList.MessageListSection { _init() { super._init(); this._nUrgent = 0; Main.messageTray.connect('source-added', this._sourceAdded.bind(this)); Main.messageTray.getSources().forEach(source => { this._sourceAdded(Main.messageTray, source); }); } get allowed() { return Main.sessionMode.hasNotifications && !Main.sessionMode.isGreeter; } _sourceAdded(tray, source) { source.connectObject('notification-added', this._onNotificationAdded.bind(this), this); } _onNotificationAdded(source, notification) { let message = new NotificationMessage(notification); let isUrgent = notification.urgency === MessageTray.Urgency.CRITICAL; notification.connectObject( 'destroy', () => { if (isUrgent) this._nUrgent--; }, 'notify::datetime', () => { // The datetime property changes whenever the notification is updated this.moveMessage(message, isUrgent ? 0 : this._nUrgent, this.mapped); }, this); if (isUrgent) { // Keep track of urgent notifications to keep them on top this._nUrgent++; } else if (this.mapped) { // Only acknowledge non-urgent notifications in case it // has important actions that are inaccessible when not // shown as banner notification.acknowledged = true; } let index = isUrgent ? 0 : this._nUrgent; this.addMessageAtIndex(message, index, this.mapped); } vfunc_map() { this._messages.forEach(message => { if (message.notification.urgency !== MessageTray.Urgency.CRITICAL) message.notification.acknowledged = true; }); super.vfunc_map(); } }); const Placeholder = GObject.registerClass( class Placeholder extends St.BoxLayout { _init() { super._init({style_class: 'message-list-placeholder', vertical: true}); this._date = new Date(); this._icon = new St.Icon({icon_name: 'no-notifications-symbolic'}); this.add_child(this._icon); this._label = new St.Label({text: _('No Notifications')}); this.add_child(this._label); } }); const DoNotDisturbSwitch = GObject.registerClass( class DoNotDisturbSwitch extends PopupMenu.Switch { _init() { this._settings = new Gio.Settings({ schema_id: 'org.gnome.desktop.notifications', }); super._init(this._settings.get_boolean('show-banners')); this._settings.bind('show-banners', this, 'state', Gio.SettingsBindFlags.INVERT_BOOLEAN); this.connect('destroy', () => { Gio.Settings.unbind(this, 'state'); this._settings = null; }); } }); export const CalendarMessageList = GObject.registerClass( class CalendarMessageList extends St.Widget { _init() { super._init({ style_class: 'message-list', layout_manager: new Clutter.BinLayout(), x_expand: true, y_expand: true, }); this._placeholder = new Placeholder(); this.add_child(this._placeholder); let box = new St.BoxLayout({ vertical: true, x_expand: true, y_expand: true, }); this.add_child(box); this._scrollView = new St.ScrollView({ style_class: 'vfade', overlay_scrollbars: true, x_expand: true, y_expand: true, }); box.add_child(this._scrollView); let hbox = new St.BoxLayout({style_class: 'message-list-controls'}); box.add_child(hbox); const dndLabel = new St.Label({ text: _('Do Not Disturb'), y_align: Clutter.ActorAlign.CENTER, }); hbox.add_child(dndLabel); this._dndSwitch = new DoNotDisturbSwitch(); this._dndButton = new St.Button({ style_class: 'dnd-button', can_focus: true, toggle_mode: true, child: this._dndSwitch, label_actor: dndLabel, y_align: Clutter.ActorAlign.CENTER, }); this._dndSwitch.bind_property('state', this._dndButton, 'checked', GObject.BindingFlags.BIDIRECTIONAL | GObject.BindingFlags.SYNC_CREATE); hbox.add_child(this._dndButton); this._clearButton = new St.Button({ style_class: 'message-list-clear-button button', label: _('Clear'), can_focus: true, x_expand: true, x_align: Clutter.ActorAlign.END, accessible_name: C_('action', 'Clear all notifications'), }); this._clearButton.connect('clicked', () => { this._sectionList.get_children().forEach(s => s.clear()); }); hbox.add_child(this._clearButton); this._placeholder.bind_property('visible', this._clearButton, 'visible', GObject.BindingFlags.INVERT_BOOLEAN); this._sectionList = new St.BoxLayout({ style_class: 'message-list-sections', vertical: true, x_expand: true, y_expand: true, }); this._sectionList.connectObject( 'child-added', this._sync.bind(this), 'child-removed', this._sync.bind(this), this); this._scrollView.child = this._sectionList; this._mediaSection = new Mpris.MediaSection(); this._addSection(this._mediaSection); this._notificationSection = new NotificationSection(); this._addSection(this._notificationSection); Main.sessionMode.connect('updated', this._sync.bind(this)); } _addSection(section) { section.connectObject( 'notify::visible', this._sync.bind(this), 'notify::empty', this._sync.bind(this), 'notify::can-clear', this._sync.bind(this), 'destroy', () => this._sectionList.remove_child(section), 'message-focused', (_s, messageActor) => { ensureActorVisibleInScrollView(this._scrollView, messageActor); }, this); this._sectionList.add_child(section); } _sync() { let sections = this._sectionList.get_children(); let visible = sections.some(s => s.allowed); this.visible = visible; if (!visible) return; let empty = sections.every(s => s.empty || !s.visible); this._placeholder.visible = empty; let canClear = sections.some(s => s.canClear && s.visible); this._clearButton.reactive = canClear; } }); 070701000001A4000081A40000000000000000000000016712993F00000544000000000000000000000000000000000000002300000000gnome-shell-47.1/js/ui/checkBox.jsimport Atk from 'gi://Atk'; import Clutter from 'gi://Clutter'; import GObject from 'gi://GObject'; import Pango from 'gi://Pango'; import St from 'gi://St'; export const CheckBox = GObject.registerClass( class CheckBox extends St.Button { _init(label) { let container = new St.BoxLayout({ x_expand: true, y_expand: true, }); super._init({ style_class: 'check-box', child: container, button_mask: St.ButtonMask.ONE, toggle_mode: true, can_focus: true, }); this.set_accessible_role(Atk.Role.CHECK_BOX); this._box = new St.Bin({y_align: Clutter.ActorAlign.START}); container.add_child(this._box); this._check = new St.Icon({ icon_name: 'check-symbolic', }); this._box.set_child(this._check); this._label = new St.Label({y_align: Clutter.ActorAlign.CENTER}); this._label.clutter_text.set_line_wrap(true); this._label.clutter_text.set_ellipsize(Pango.EllipsizeMode.NONE); this.set_label_actor(this._label); container.add_child(this._label); if (label) this.setLabel(label); } setLabel(label) { this._label.set_text(label); } getLabelActor() { return this._label; } }); 070701000001A5000081A40000000000000000000000016712993F00001A97000000000000000000000000000000000000002600000000gnome-shell-47.1/js/ui/closeDialog.jsimport Clutter from 'gi://Clutter'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import Meta from 'gi://Meta'; import Shell from 'gi://Shell'; import St from 'gi://St'; import * as Dialog from './dialog.js'; import * as Main from './main.js'; const FROZEN_WINDOW_BRIGHTNESS = -0.3; const DIALOG_TRANSITION_TIME = 150; const ALIVE_TIMEOUT = 5000; export const CloseDialog = GObject.registerClass({ Implements: [Meta.CloseDialog], Properties: { 'window': GObject.ParamSpec.override('window', Meta.CloseDialog), }, }, class CloseDialog extends GObject.Object { _init(window) { super._init(); this._window = window; this._dialog = null; this._tracked = undefined; this._timeoutId = 0; } get window() { return this._window; } set window(window) { this._window = window; } _createDialogContent() { let tracker = Shell.WindowTracker.get_default(); let windowApp = tracker.get_window_app(this._window); /* Translators: %s is an application name */ let title = _('“%s” Is Not Responding').format(windowApp.get_name()); let description = _('You may choose to wait a short while for it to ' + 'continue or force the app to quit entirely'); return new Dialog.MessageDialogContent({title, description}); } _updateScale() { // Since this is a child of MetaWindowActor (which, for Wayland clients, // applies the geometry scale factor to its children itself, see // meta_window_actor_set_geometry_scale()), make sure we don't apply // the factor twice in the end. if (this._window.get_client_type() !== Meta.WindowClientType.WAYLAND) return; let {scaleFactor} = St.ThemeContext.get_for_stage(global.stage); this._dialog.set_scale(1 / scaleFactor, 1 / scaleFactor); } _initDialog() { if (this._dialog) return; let windowActor = this._window.get_compositor_private(); this._dialog = new Dialog.Dialog(windowActor, 'close-dialog'); this._dialog.width = windowActor.width; this._dialog.height = windowActor.height; this._dialog.contentLayout.add_child(this._createDialogContent()); this._dialog.addButton({ label: _('Force Quit'), action: this._onClose.bind(this), default: true, }); this._dialog.addButton({ label: _('Wait'), action: this._onWait.bind(this), key: Clutter.KEY_Escape, }); global.focus_manager.add_group(this._dialog); let themeContext = St.ThemeContext.get_for_stage(global.stage); themeContext.connect('notify::scale-factor', this._updateScale.bind(this)); this._updateScale(); } _addWindowEffect() { // We set the effect on the surface actor, so the dialog itself // (which is a child of the MetaWindowActor) does not get the // effect applied itself. let windowActor = this._window.get_compositor_private(); let surfaceActor = windowActor.get_first_child(); let effect = new Clutter.BrightnessContrastEffect(); effect.set_brightness(FROZEN_WINDOW_BRIGHTNESS); surfaceActor.add_effect_with_name('gnome-shell-frozen-window', effect); } _removeWindowEffect() { let windowActor = this._window.get_compositor_private(); let surfaceActor = windowActor.get_first_child(); surfaceActor.remove_effect_by_name('gnome-shell-frozen-window'); } _onWait() { this.response(Meta.CloseDialogResponse.WAIT); } _onClose() { this.response(Meta.CloseDialogResponse.FORCE_CLOSE); } _onFocusChanged() { if (Meta.is_wayland_compositor()) return; let focusWindow = global.display.focus_window; let keyFocus = global.stage.key_focus; let shouldTrack; if (focusWindow != null) shouldTrack = focusWindow === this._window; else shouldTrack = keyFocus && this._dialog.contains(keyFocus); if (this._tracked === shouldTrack) return; if (shouldTrack) { Main.layoutManager.trackChrome(this._dialog, {affectsInputRegion: true}); } else { Main.layoutManager.untrackChrome(this._dialog); } // The buttons are broken when they aren't added to the input region, // so disable them properly in that case this._dialog.buttonLayout.get_children().forEach(b => { b.reactive = shouldTrack; }); this._tracked = shouldTrack; } vfunc_show() { if (this._dialog != null) return; Meta.disable_unredirect_for_display(global.display); this._timeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, ALIVE_TIMEOUT, () => { this._window.check_alive(global.display.get_current_time_roundtrip()); return GLib.SOURCE_CONTINUE; }); global.display.connectObject( 'notify::focus-window', this._onFocusChanged.bind(this), this); global.stage.connectObject( 'notify::key-focus', this._onFocusChanged.bind(this), this); this._addWindowEffect(); this._initDialog(); global.connectObject( 'shutdown', () => this._onWait(), this._dialog); this._dialog._dialog.scale_y = 0; this._dialog._dialog.set_pivot_point(0.5, 0.5); this._dialog._dialog.ease({ scale_y: 1, mode: Clutter.AnimationMode.LINEAR, duration: DIALOG_TRANSITION_TIME, onComplete: this._onFocusChanged.bind(this), }); } vfunc_hide() { if (this._dialog == null) return; Meta.enable_unredirect_for_display(global.display); GLib.source_remove(this._timeoutId); this._timeoutId = 0; global.display.disconnectObject(this); global.stage.disconnectObject(this); this._dialog._dialog.remove_all_transitions(); let dialog = this._dialog; this._dialog = null; this._removeWindowEffect(); dialog.makeInactive(); dialog._dialog.ease({ scale_y: 0, mode: Clutter.AnimationMode.LINEAR, duration: DIALOG_TRANSITION_TIME, onComplete: () => dialog.destroy(), }); } vfunc_focus() { if (!this._dialog) return; const keyFocus = global.stage.key_focus; if (!keyFocus || !this._dialog.contains(keyFocus)) this._dialog.initialKeyFocus.grab_key_focus(); } }); 070701000001A6000041ED0000000000000000000000026712993F00000000000000000000000000000000000000000000002200000000gnome-shell-47.1/js/ui/components070701000001A7000081A40000000000000000000000016712993F0000069E000000000000000000000000000000000000002500000000gnome-shell-47.1/js/ui/components.jsimport * as Main from './main.js'; export class ComponentManager { constructor() { this._allComponents = {}; this._enabledComponents = []; Main.sessionMode.connect('updated', () => { this._sessionModeUpdated().catch(logError); }); this._sessionModeUpdated().catch(logError); } async _sessionModeUpdated() { let newEnabledComponents = Main.sessionMode.components; await Promise.allSettled([...newEnabledComponents .filter(name => !this._enabledComponents.includes(name)) .map(name => this._enableComponent(name))]); this._enabledComponents .filter(name => !newEnabledComponents.includes(name)) .forEach(name => this._disableComponent(name)); this._enabledComponents = newEnabledComponents; } async _importComponent(name) { let module = await import(`./components/${name}.js`); return module.Component; } async _ensureComponent(name) { let component = this._allComponents[name]; if (component) return component; if (Main.sessionMode.isLocked) return null; let constructor = await this._importComponent(name); component = new constructor(); this._allComponents[name] = component; return component; } async _enableComponent(name) { let component = await this._ensureComponent(name); if (component) component.enable(); } _disableComponent(name) { let component = this._allComponents[name]; if (component == null) return; component.disable(); } } 070701000001A8000081A40000000000000000000000016712993F000024AC000000000000000000000000000000000000003600000000gnome-shell-47.1/js/ui/components/automountManager.jsimport Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import * as Params from '../../misc/params.js'; import * as GnomeSession from '../../misc/gnomeSession.js'; import * as Main from '../main.js'; import * as ShellMountOperation from '../shellMountOperation.js'; const GNOME_SESSION_AUTOMOUNT_INHIBIT = 16; // GSettings keys const SETTINGS_SCHEMA = 'org.gnome.desktop.media-handling'; const SETTING_ENABLE_AUTOMOUNT = 'automount'; const AUTORUN_EXPIRE_TIMEOUT_SECS = 10; class AutomountManager { constructor() { this._settings = new Gio.Settings({schema_id: SETTINGS_SCHEMA}); this._activeOperations = new Map(); this._session = new GnomeSession.SessionManager(); this._session.connectSignal('InhibitorAdded', this._InhibitorsChanged.bind(this)); this._session.connectSignal('InhibitorRemoved', this._InhibitorsChanged.bind(this)); this._inhibited = false; this._volumeMonitor = Gio.VolumeMonitor.get(); } enable() { this._volumeMonitor.connectObject( 'volume-added', this._onVolumeAdded.bind(this), 'volume-removed', this._onVolumeRemoved.bind(this), 'drive-connected', this._onDriveConnected.bind(this), 'drive-disconnected', this._onDriveDisconnected.bind(this), 'drive-eject-button', this._onDriveEjectButton.bind(this), this); this._mountAllId = GLib.idle_add(GLib.PRIORITY_DEFAULT, this._startupMountAll.bind(this)); GLib.Source.set_name_by_id(this._mountAllId, '[gnome-shell] this._startupMountAll'); } disable() { this._volumeMonitor.disconnectObject(this); if (this._mountAllId > 0) { GLib.source_remove(this._mountAllId); this._mountAllId = 0; } } async _InhibitorsChanged(_object, _senderName, [_inhibitor]) { try { const [inhibited] = await this._session.IsInhibitedAsync(GNOME_SESSION_AUTOMOUNT_INHIBIT); this._inhibited = inhibited; } catch (e) {} } _startupMountAll() { let volumes = this._volumeMonitor.get_volumes(); volumes.forEach(volume => { this._checkAndMountVolume(volume, { checkSession: false, useMountOp: false, allowAutorun: false, }); }); this._mountAllId = 0; return GLib.SOURCE_REMOVE; } _onDriveConnected() { // if we're not in the current ConsoleKit session, // or screensaver is active, don't play sounds if (!this._session.SessionIsActive) return; let player = global.display.get_sound_player(); player.play_from_theme('device-added-media', _('External drive connected'), null); } _onDriveDisconnected() { // if we're not in the current ConsoleKit session, // or screensaver is active, don't play sounds if (!this._session.SessionIsActive) return; let player = global.display.get_sound_player(); player.play_from_theme('device-removed-media', _('External drive disconnected'), null); } _onDriveEjectButton(monitor, drive) { // TODO: this code path is not tested, as the GVfs volume monitor // doesn't emit this signal just yet. if (!this._session.SessionIsActive) return; // we force stop/eject in this case, so we don't have to pass a // mount operation object if (drive.can_stop()) { drive.stop(Gio.MountUnmountFlags.FORCE, null, null, (o, res) => { try { drive.stop_finish(res); } catch (e) { log(`Unable to stop the drive after drive-eject-button ${e.toString()}`); } }); } else if (drive.can_eject()) { drive.eject_with_operation(Gio.MountUnmountFlags.FORCE, null, null, (o, res) => { try { drive.eject_with_operation_finish(res); } catch (e) { log(`Unable to eject the drive after drive-eject-button ${e.toString()}`); } }); } } _onVolumeAdded(monitor, volume) { this._checkAndMountVolume(volume); } _checkAndMountVolume(volume, params) { params = Params.parse(params, { checkSession: true, useMountOp: true, allowAutorun: true, }); if (params.checkSession) { // if we're not in the current ConsoleKit session, // don't attempt automount if (!this._session.SessionIsActive) return; } if (this._inhibited) return; // Volume is already mounted, don't bother. if (volume.get_mount()) return; if (!this._settings.get_boolean(SETTING_ENABLE_AUTOMOUNT) || !volume.should_automount() || !volume.can_mount()) { // allow the autorun to run anyway; this can happen if the // mount gets added programmatically later, even if // should_automount() or can_mount() are false, like for // blank optical media. this._allowAutorun(volume); this._allowAutorunExpire(volume); return; } if (params.useMountOp) { let operation = new ShellMountOperation.ShellMountOperation(volume); this._mountVolume(volume, operation, params.allowAutorun); } else { this._mountVolume(volume, null, params.allowAutorun); } } _mountVolume(volume, operation, allowAutorun) { if (allowAutorun) this._allowAutorun(volume); const mountOp = operation?.mountOp ?? null; this._activeOperations.set(volume, operation); volume.mount(0, mountOp, null, this._onVolumeMounted.bind(this)); } _onVolumeMounted(volume, res) { this._allowAutorunExpire(volume); try { volume.mount_finish(res); this._closeOperation(volume); } catch (e) { // FIXME: we will always get G_IO_ERROR_FAILED from the gvfs udisks // backend, see https://bugs.freedesktop.org/show_bug.cgi?id=51271 // To reask the password if the user input was empty or wrong, we // will check for corresponding error messages. However, these // error strings are not unique for the cases in the comments below. if (e.message.includes('No key available with this passphrase') || // cryptsetup e.message.includes('No key available to unlock device') || // udisks (no password) // libblockdev wrong password opening LUKS device e.message.includes('Failed to activate device: Incorrect passphrase') || // cryptsetup returns EINVAL (< v2.5.0) or EPERM (>= v2.5.0) // when the TCRYPT header can't be decrypted with the provided // password/parameters. e.message.includes('Failed to load device\'s parameters: Invalid argument') || e.message.includes('Failed to load device\'s parameters: Operation not permitted')) { this._reaskPassword(volume); } else { if (e.message.includes('Compiled against a version of libcryptsetup that does not support the VeraCrypt PIM setting')) { Main.notifyError(_('Unable to unlock volume'), _('The installed udisks version does not support the PIM setting')); } if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.FAILED_HANDLED)) log(`Unable to mount volume ${volume.get_name()}: ${e.toString()}`); this._closeOperation(volume); } } } _onVolumeRemoved(monitor, volume) { if (volume._allowAutorunExpireId && volume._allowAutorunExpireId > 0) { GLib.source_remove(volume._allowAutorunExpireId); delete volume._allowAutorunExpireId; } } _reaskPassword(volume) { let prevOperation = this._activeOperations.get(volume); const existingDialog = prevOperation?.borrowDialog(); let operation = new ShellMountOperation.ShellMountOperation(volume, {existingDialog}); this._mountVolume(volume, operation); } _closeOperation(volume) { let operation = this._activeOperations.get(volume); if (!operation) return; operation.close(); this._activeOperations.delete(volume); } _allowAutorun(volume) { volume.allowAutorun = true; } _allowAutorunExpire(volume) { let id = GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, AUTORUN_EXPIRE_TIMEOUT_SECS, () => { volume.allowAutorun = false; delete volume._allowAutorunExpireId; return GLib.SOURCE_REMOVE; }); volume._allowAutorunExpireId = id; GLib.Source.set_name_by_id(id, '[gnome-shell] volume.allowAutorun'); } } export {AutomountManager as Component}; 070701000001A9000081A40000000000000000000000016712993F00001E9A000000000000000000000000000000000000003400000000gnome-shell-47.1/js/ui/components/autorunManager.jsimport Gio from 'gi://Gio'; import * as GnomeSession from '../../misc/gnomeSession.js'; import * as MessageTray from '../messageTray.js'; Gio._promisify(Gio.Mount.prototype, 'guess_content_type'); import {loadInterfaceXML} from '../../misc/fileUtils.js'; // GSettings keys const SETTINGS_SCHEMA = 'org.gnome.desktop.media-handling'; const SETTING_DISABLE_AUTORUN = 'autorun-never'; const SETTING_START_APP = 'autorun-x-content-start-app'; const SETTING_IGNORE = 'autorun-x-content-ignore'; const SETTING_OPEN_FOLDER = 'autorun-x-content-open-folder'; /** @enum {number} */ const AutorunSetting = { RUN: 0, IGNORE: 1, FILES: 2, ASK: 3, }; // misc utils function shouldAutorunMount(mount) { let root = mount.get_root(); let volume = mount.get_volume(); if (!volume || !volume.allowAutorun) return false; if (root.is_native() && isMountRootHidden(root)) return false; return true; } function isMountRootHidden(root) { let path = root.get_path(); // skip any mounts in hidden directory hierarchies return path.includes('/.'); } function isMountNonLocal(mount) { // If the mount doesn't have an associated volume, that means it's // an uninteresting filesystem. Most devices that we care about will // have a mount, like media players and USB sticks. let volume = mount.get_volume(); if (volume == null) return true; return volume.get_identifier('class') === 'network'; } function startAppForMount(app, mount) { let files = []; let root = mount.get_root(); let retval = false; files.push(root); try { retval = app.launch(files, global.create_app_launch_context(0, -1)); } catch (e) { log(`Unable to launch the app ${app.get_name()}: ${e}`); } return retval; } const HotplugSnifferIface = loadInterfaceXML('org.gnome.Shell.HotplugSniffer'); const HotplugSnifferProxy = Gio.DBusProxy.makeProxyWrapper(HotplugSnifferIface); function HotplugSniffer() { return new HotplugSnifferProxy(Gio.DBus.session, 'org.gnome.Shell.HotplugSniffer', '/org/gnome/Shell/HotplugSniffer'); } class ContentTypeDiscoverer { constructor() { this._settings = new Gio.Settings({schema_id: SETTINGS_SCHEMA}); } async guessContentTypes(mount) { let autorunEnabled = !this._settings.get_boolean(SETTING_DISABLE_AUTORUN); let shouldScan = autorunEnabled && !isMountNonLocal(mount); let contentTypes = []; if (shouldScan) { try { contentTypes = await mount.guess_content_type(false, null); } catch (e) { log(`Unable to guess content types on added mount ${mount.get_name()}: ${e}`); } if (contentTypes.length === 0) { const root = mount.get_root(); const hotplugSniffer = new HotplugSniffer(); [contentTypes] = await hotplugSniffer.SniffURIAsync(root.get_uri()); } } // we're not interested in win32 software content types here contentTypes = contentTypes.filter( type => type !== 'x-content/win32-software'); const apps = []; contentTypes.forEach(type => { const app = Gio.app_info_get_default_for_type(type, false); if (app) apps.push(app); }); if (apps.length === 0) apps.push(Gio.app_info_get_default_for_type('inode/directory', false)); return [apps, contentTypes]; } } class AutorunManager { constructor() { this._session = new GnomeSession.SessionManager(); this._volumeMonitor = Gio.VolumeMonitor.get(); this._dispatcher = new AutorunDispatcher(this); } enable() { this._volumeMonitor.connectObject( 'mount-added', this._onMountAdded.bind(this), 'mount-removed', this._onMountRemoved.bind(this), this); } disable() { this._volumeMonitor.disconnectObject(this); } async _onMountAdded(monitor, mount) { // don't do anything if our session is not the currently // active one if (!this._session.SessionIsActive) return; const discoverer = new ContentTypeDiscoverer(); const [apps, contentTypes] = await discoverer.guessContentTypes(mount); this._dispatcher.addMount(mount, apps, contentTypes); } _onMountRemoved(monitor, mount) { this._dispatcher.removeMount(mount); } } class AutorunDispatcher { constructor(manager) { this._manager = manager; this._notifications = new Map(); this._settings = new Gio.Settings({schema_id: SETTINGS_SCHEMA}); } _getAutorunSettingForType(contentType) { let runApp = this._settings.get_strv(SETTING_START_APP); if (runApp.includes(contentType)) return AutorunSetting.RUN; let ignore = this._settings.get_strv(SETTING_IGNORE); if (ignore.includes(contentType)) return AutorunSetting.IGNORE; let openFiles = this._settings.get_strv(SETTING_OPEN_FOLDER); if (openFiles.includes(contentType)) return AutorunSetting.FILES; return AutorunSetting.ASK; } _addNotification(mount, apps) { // Only show a new notification if there isn't already an existing one if (this._notifications.has(mount)) return; const source = MessageTray.getSystemSource(); /* Translators: %s is the name of a partition on a external drive */ const title = _('“%s” connected'.format(mount.get_name())); const body = _('Disk can now be used'); const notification = new MessageTray.Notification({ source, title, body, }); notification.connect('activate', () => { const app = Gio.app_info_get_default_for_type('inode/directory', false); startAppForMount(app, mount); }); apps.forEach(app => { notification.addAction( _('Open with %s').format(app.get_name()), () => startAppForMount(app, mount) ); }); notification.connect('destroy', () => this._notifications.delete(mount)); this._notifications.set(mount, notification); source.addNotification(notification); } addMount(mount, apps, contentTypes) { // if autorun is disabled globally, return if (this._settings.get_boolean(SETTING_DISABLE_AUTORUN)) return; // if the mount doesn't want to be autorun, return if (!shouldAutorunMount(mount)) return; let setting; if (contentTypes.length > 0) setting = this._getAutorunSettingForType(contentTypes[0]); else setting = AutorunSetting.ASK; // check at the settings for the first content type // to see whether we should ask if (setting === AutorunSetting.IGNORE) return; // return right away let success = false; let app = null; if (setting === AutorunSetting.RUN) app = Gio.app_info_get_default_for_type(contentTypes[0], false); else if (setting === AutorunSetting.FILES) app = Gio.app_info_get_default_for_type('inode/directory', false); if (app) success = startAppForMount(app, mount); // we fallback here also in case the settings did not specify 'ask', // but we failed launching the default app or the default file manager if (!success) this._addNotification(mount, apps); } removeMount(mount) { this._notifications.get(mount)?.destroy(); } } export {AutorunManager as Component}; 070701000001AA000081A40000000000000000000000016712993F00001FC0000000000000000000000000000000000000002D00000000gnome-shell-47.1/js/ui/components/keyring.jsimport Clutter from 'gi://Clutter'; import Gcr from 'gi://Gcr'; import Gio from 'gi://Gio'; import GObject from 'gi://GObject'; import Pango from 'gi://Pango'; import Shell from 'gi://Shell'; import St from 'gi://St'; import * as Dialog from '../dialog.js'; import * as ModalDialog from '../modalDialog.js'; import * as ShellEntry from '../shellEntry.js'; import * as CheckBox from '../checkBox.js'; import {wiggle} from '../../misc/animationUtils.js'; const KeyringDialog = GObject.registerClass( class KeyringDialog extends ModalDialog.ModalDialog { _init() { super._init({styleClass: 'prompt-dialog'}); this.prompt = new Shell.KeyringPrompt(); this.prompt.connect('show-password', this._onShowPassword.bind(this)); this.prompt.connect('show-confirm', this._onShowConfirm.bind(this)); this.prompt.connect('prompt-close', this._onHidePrompt.bind(this)); let content = new Dialog.MessageDialogContent(); this.prompt.bind_property('message', content, 'title', GObject.BindingFlags.SYNC_CREATE); this.prompt.bind_property('description', content, 'description', GObject.BindingFlags.SYNC_CREATE); let passwordBox = new St.BoxLayout({ style_class: 'prompt-dialog-password-layout', vertical: true, }); this._passwordEntry = new St.PasswordEntry({ style_class: 'prompt-dialog-password-entry', can_focus: true, x_align: Clutter.ActorAlign.CENTER, }); ShellEntry.addContextMenu(this._passwordEntry); this._passwordEntry.clutter_text.connect('activate', this._onPasswordActivate.bind(this)); this.prompt.bind_property('password-visible', this._passwordEntry, 'visible', GObject.BindingFlags.SYNC_CREATE); passwordBox.add_child(this._passwordEntry); this._confirmEntry = new St.PasswordEntry({ style_class: 'prompt-dialog-password-entry', can_focus: true, x_align: Clutter.ActorAlign.CENTER, }); ShellEntry.addContextMenu(this._confirmEntry); this._confirmEntry.clutter_text.connect('activate', this._onConfirmActivate.bind(this)); this.prompt.bind_property('confirm-visible', this._confirmEntry, 'visible', GObject.BindingFlags.SYNC_CREATE); passwordBox.add_child(this._confirmEntry); this.prompt.set_password_actor(this._passwordEntry.clutter_text); this.prompt.set_confirm_actor(this._confirmEntry.clutter_text); let warningBox = new St.BoxLayout({vertical: true}); let capsLockWarning = new ShellEntry.CapsLockWarning(); let syncCapsLockWarningVisibility = () => { capsLockWarning.visible = this.prompt.password_visible || this.prompt.confirm_visible; }; this.prompt.connect('notify::password-visible', syncCapsLockWarningVisibility); this.prompt.connect('notify::confirm-visible', syncCapsLockWarningVisibility); warningBox.add_child(capsLockWarning); let warning = new St.Label({style_class: 'prompt-dialog-error-label'}); warning.clutter_text.ellipsize = Pango.EllipsizeMode.NONE; warning.clutter_text.line_wrap = true; this.prompt.bind_property('warning', warning, 'text', GObject.BindingFlags.SYNC_CREATE); this.prompt.connect('notify::warning-visible', () => { warning.opacity = this.prompt.warning_visible ? 255 : 0; }); this.prompt.connect('notify::warning', () => { if (this._passwordEntry && this.prompt.warning !== '') wiggle(this._passwordEntry); }); warningBox.add_child(warning); passwordBox.add_child(warningBox); content.add_child(passwordBox); this._choice = new CheckBox.CheckBox(); this.prompt.bind_property('choice-label', this._choice.getLabelActor(), 'text', GObject.BindingFlags.SYNC_CREATE); this.prompt.bind_property('choice-chosen', this._choice, 'checked', GObject.BindingFlags.SYNC_CREATE | GObject.BindingFlags.BIDIRECTIONAL); this.prompt.bind_property('choice-visible', this._choice, 'visible', GObject.BindingFlags.SYNC_CREATE); content.add_child(this._choice); this.contentLayout.add_child(content); this._cancelButton = this.addButton({ label: '', action: this._onCancelButton.bind(this), key: Clutter.KEY_Escape, }); this._continueButton = this.addButton({ label: '', action: this._onContinueButton.bind(this), default: true, }); this.prompt.bind_property('cancel-label', this._cancelButton, 'label', GObject.BindingFlags.SYNC_CREATE); this.prompt.bind_property('continue-label', this._continueButton, 'label', GObject.BindingFlags.SYNC_CREATE); } _updateSensitivity(sensitive) { if (this._passwordEntry) this._passwordEntry.reactive = sensitive; if (this._confirmEntry) this._confirmEntry.reactive = sensitive; this._continueButton.can_focus = sensitive; this._continueButton.reactive = sensitive; } _ensureOpen() { // NOTE: ModalDialog.open() is safe to call if the dialog is // already open - it just returns true without side-effects if (this.open()) return true; // The above fail if e.g. unable to get input grab // // In an ideal world this wouldn't happen (because the // Shell is in complete control of the session) but that's // just not how things work right now. log('keyringPrompt: Failed to show modal dialog.' + ' Dismissing prompt request'); this.prompt.cancel(); return false; } _onShowPassword() { this._ensureOpen(); this._updateSensitivity(true); this._passwordEntry.text = ''; this._passwordEntry.grab_key_focus(); } _onShowConfirm() { this._ensureOpen(); this._updateSensitivity(true); this._confirmEntry.text = ''; this._continueButton.grab_key_focus(); } _onHidePrompt() { this.close(); } _onPasswordActivate() { if (this.prompt.confirm_visible) this._confirmEntry.grab_key_focus(); else this._onContinueButton(); } _onConfirmActivate() { this._onContinueButton(); } _onContinueButton() { this._updateSensitivity(false); this.prompt.complete(); } _onCancelButton() { this.prompt.cancel(); } }); class KeyringDummyDialog { constructor() { this.prompt = new Shell.KeyringPrompt(); this.prompt.connect('show-password', this._cancelPrompt.bind(this)); this.prompt.connect('show-confirm', this._cancelPrompt.bind(this)); } _cancelPrompt() { this.prompt.cancel(); } } const KeyringPrompter = GObject.registerClass( class KeyringPrompter extends Gcr.SystemPrompter { _init() { super._init(); this.connect('new-prompt', () => { let dialog = this._enabled ? new KeyringDialog() : new KeyringDummyDialog(); this._currentPrompt = dialog.prompt; return this._currentPrompt; }); this._dbusId = null; this._registered = false; this._enabled = false; this._currentPrompt = null; } enable() { if (!this._registered) { this.register(Gio.DBus.session); this._dbusId = Gio.DBus.session.own_name('org.gnome.keyring.SystemPrompter', Gio.BusNameOwnerFlags.ALLOW_REPLACEMENT, null, null); this._registered = true; } this._enabled = true; } disable() { this._enabled = false; if (this.prompting) this._currentPrompt.cancel(); this._currentPrompt = null; } }); export {KeyringPrompter as Component}; 070701000001AB000081A40000000000000000000000016712993F00007840000000000000000000000000000000000000003200000000gnome-shell-47.1/js/ui/components/networkAgent.jsimport Clutter from 'gi://Clutter'; import Gio from 'gi://Gio'; import GioUnix from 'gi://GioUnix'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import NM from 'gi://NM'; import Pango from 'gi://Pango'; import Shell from 'gi://Shell'; import St from 'gi://St'; import * as Signals from '../../misc/signals.js'; import * as Dialog from '../dialog.js'; import * as MessageTray from '../messageTray.js'; import * as ModalDialog from '../modalDialog.js'; import * as ShellEntry from '../shellEntry.js'; Gio._promisify(Shell.NetworkAgent.prototype, 'init_async'); Gio._promisify(Shell.NetworkAgent.prototype, 'search_vpn_plugin'); const VPN_UI_GROUP = 'VPN Plugin UI'; const NetworkSecretDialog = GObject.registerClass( class NetworkSecretDialog extends ModalDialog.ModalDialog { _init(agent, requestId, connection, settingName, hints, flags, contentOverride) { super._init({styleClass: 'prompt-dialog'}); this._agent = agent; this._requestId = requestId; this._connection = connection; this._settingName = settingName; this._hints = hints; if (contentOverride) this._content = contentOverride; else this._content = this._getContent(); let contentBox = new Dialog.MessageDialogContent({ title: this._content.title, description: this._content.message, }); let initialFocusSet = false; for (let i = 0; i < this._content.secrets.length; i++) { let secret = this._content.secrets[i]; let reactive = secret.key != null; let entryParams = { style_class: 'prompt-dialog-password-entry', hint_text: secret.label, text: secret.value, can_focus: reactive, reactive, x_align: Clutter.ActorAlign.CENTER, }; if (secret.password) secret.entry = new St.PasswordEntry(entryParams); else secret.entry = new St.Entry(entryParams); ShellEntry.addContextMenu(secret.entry); contentBox.add_child(secret.entry); if (secret.validate) secret.valid = secret.validate(secret); else // no special validation, just ensure it's not empty secret.valid = secret.value.length > 0; if (reactive) { if (!initialFocusSet) { this.setInitialKeyFocus(secret.entry); initialFocusSet = true; } secret.entry.clutter_text.connect('activate', this._onOk.bind(this)); secret.entry.clutter_text.connect('text-changed', () => { secret.value = secret.entry.get_text(); if (secret.validate) secret.valid = secret.validate(secret); else secret.valid = secret.value.length > 0; this._updateOkButton(); }); } else { secret.valid = true; } } if (this._content.secrets.some(s => s.password)) { let capsLockWarning = new ShellEntry.CapsLockWarning(); contentBox.add_child(capsLockWarning); } if (flags & NM.SecretAgentGetSecretsFlags.WPS_PBC_ACTIVE) { let descriptionLabel = new St.Label({ text: _('Alternatively you can connect by pushing the “WPS” button on your router'), style_class: 'message-dialog-description', }); descriptionLabel.clutter_text.line_wrap = true; descriptionLabel.clutter_text.ellipsize = Pango.EllipsizeMode.NONE; contentBox.add_child(descriptionLabel); } this.contentLayout.add_child(contentBox); this._okButton = { label: _('Connect'), action: this._onOk.bind(this), default: true, }; this.setButtons([{ label: _('Cancel'), action: this.cancel.bind(this), key: Clutter.KEY_Escape, }, this._okButton]); this._updateOkButton(); } _updateOkButton() { let valid = true; for (let i = 0; i < this._content.secrets.length; i++) { let secret = this._content.secrets[i]; valid &&= secret.valid; } this._okButton.button.reactive = valid; this._okButton.button.can_focus = valid; } _onOk() { let valid = true; for (let i = 0; i < this._content.secrets.length; i++) { let secret = this._content.secrets[i]; valid &&= secret.valid; if (secret.key !== null) { if (this._settingName === 'vpn') this._agent.add_vpn_secret(this._requestId, secret.key, secret.value); else this._agent.set_password(this._requestId, secret.key, secret.value); } } if (valid) { this._agent.respond(this._requestId, Shell.NetworkAgentResponse.CONFIRMED); this.close(); } // do nothing if not valid } cancel() { this._agent.respond(this._requestId, Shell.NetworkAgentResponse.USER_CANCELED); this.close(); } _validateWpaPsk(secret) { let value = secret.value; if (value.length === 64) { // must be composed of hexadecimal digits only for (let i = 0; i < 64; i++) { if (!((value[i] >= 'a' && value[i] <= 'f') || (value[i] >= 'A' && value[i] <= 'F') || (value[i] >= '0' && value[i] <= '9'))) return false; } return true; } return value.length >= 8 && value.length <= 63; } _validateStaticWep(secret) { let value = secret.value; if (secret.wep_key_type === NM.WepKeyType.KEY) { if (value.length === 10 || value.length === 26) { for (let i = 0; i < value.length; i++) { if (!((value[i] >= 'a' && value[i] <= 'f') || (value[i] >= 'A' && value[i] <= 'F') || (value[i] >= '0' && value[i] <= '9'))) return false; } } else if (value.length === 5 || value.length === 13) { for (let i = 0; i < value.length; i++) { if (!((value[i] >= 'a' && value[i] <= 'z') || (value[i] >= 'A' && value[i] <= 'Z'))) return false; } } else { return false; } } else if (secret.wep_key_type === NM.WepKeyType.PASSPHRASE) { if (value.length < 0 || value.length > 64) return false; } return true; } _getWirelessSecrets(secrets, _wirelessSetting) { let wirelessSecuritySetting = this._connection.get_setting_wireless_security(); if (this._settingName === '802-1x') { this._get8021xSecrets(secrets); return; } switch (wirelessSecuritySetting.key_mgmt) { // First the easy ones case 'wpa-none': case 'wpa-psk': case 'sae': secrets.push({ label: _('Password'), key: 'psk', value: wirelessSecuritySetting.psk || '', validate: this._validateWpaPsk, password: true, }); break; case 'none': // static WEP secrets.push({ label: _('Key'), key: `wep-key${wirelessSecuritySetting.wep_tx_keyidx}`, value: wirelessSecuritySetting.get_wep_key(wirelessSecuritySetting.wep_tx_keyidx) || '', wep_key_type: wirelessSecuritySetting.wep_key_type, validate: this._validateStaticWep, password: true, }); break; case 'ieee8021x': if (wirelessSecuritySetting.auth_alg === 'leap') { // Cisco LEAP secrets.push({ label: _('Password'), key: 'leap-password', value: wirelessSecuritySetting.leap_password || '', password: true, }); } else { // Dynamic (IEEE 802.1x) WEP this._get8021xSecrets(secrets); } break; case 'wpa-eap': this._get8021xSecrets(secrets); break; default: log(`Invalid wireless key management: ${wirelessSecuritySetting.key_mgmt}`); } } _get8021xSecrets(secrets) { let ieee8021xSetting = this._connection.get_setting_802_1x(); /* If hints were given we know exactly what we need to ask */ if (this._settingName === '802-1x' && this._hints.length) { if (this._hints.includes('identity')) { secrets.push({ label: _('Username'), key: 'identity', value: ieee8021xSetting.identity || '', password: false, }); } if (this._hints.includes('password')) { secrets.push({ label: _('Password'), key: 'password', value: ieee8021xSetting.password || '', password: true, }); } if (this._hints.includes('private-key-password')) { secrets.push({ label: _('Private key password'), key: 'private-key-password', value: ieee8021xSetting.private_key_password || '', password: true, }); } return; } switch (ieee8021xSetting.get_eap_method(0)) { case 'md5': case 'leap': case 'ttls': case 'peap': case 'fast': // TTLS and PEAP are actually much more complicated, but this complication // is not visible here since we only care about phase2 authentication // (and don't even care of which one) secrets.push({ label: _('Username'), key: null, value: ieee8021xSetting.identity || '', password: false, }); secrets.push({ label: _('Password'), key: 'password', value: ieee8021xSetting.password || '', password: true, }); break; case 'tls': secrets.push({ label: _('Identity'), key: null, value: ieee8021xSetting.identity || '', password: false, }); secrets.push({ label: _('Private key password'), key: 'private-key-password', value: ieee8021xSetting.private_key_password || '', password: true, }); break; default: log(`Invalid EAP/IEEE802.1x method: ${ieee8021xSetting.get_eap_method(0)}`); } } _getPPPoESecrets(secrets) { let pppoeSetting = this._connection.get_setting_pppoe(); secrets.push({ label: _('Username'), key: 'username', value: pppoeSetting.username || '', password: false, }); secrets.push({ label: _('Service'), key: 'service', value: pppoeSetting.service || '', password: false, }); secrets.push({ label: _('Password'), key: 'password', value: pppoeSetting.password || '', password: true, }); } _getMobileSecrets(secrets, connectionType) { let setting; if (connectionType === 'bluetooth') setting = this._connection.get_setting_cdma() || this._connection.get_setting_gsm(); else setting = this._connection.get_setting_by_name(connectionType); secrets.push({ label: _('Password'), key: 'password', value: setting.value || '', password: true, }); } _getContent() { let connectionSetting = this._connection.get_setting_connection(); let connectionType = connectionSetting.get_connection_type(); let wirelessSetting; let ssid; let content = { }; content.secrets = []; switch (connectionType) { case '802-11-wireless': wirelessSetting = this._connection.get_setting_wireless(); ssid = NM.utils_ssid_to_utf8(wirelessSetting.get_ssid().get_data()); content.title = _('Authentication required'); content.message = _('Passwords or encryption keys are required to access the wireless network “%s”').format(ssid); this._getWirelessSecrets(content.secrets, wirelessSetting); break; case '802-3-ethernet': content.title = _('Wired 802.1X authentication'); content.message = null; content.secrets.push({ label: _('Network name'), key: null, value: connectionSetting.get_id(), password: false, }); this._get8021xSecrets(content.secrets); break; case 'pppoe': content.title = _('DSL authentication'); content.message = null; this._getPPPoESecrets(content.secrets); break; case 'gsm': if (this._hints.includes('pin')) { let gsmSetting = this._connection.get_setting_gsm(); content.title = _('PIN code required'); content.message = _('PIN code is needed for the mobile broadband device'); content.secrets.push({ label: _('PIN'), key: 'pin', value: gsmSetting.pin || '', password: true, }); break; } // fall through case 'cdma': case 'bluetooth': content.title = _('Authentication required'); content.message = _('A password is required to connect to “%s”').format(connectionSetting.get_id()); this._getMobileSecrets(content.secrets, connectionType); break; default: log(`Invalid connection type: ${connectionType}`); } return content; } }); class VPNRequestHandler extends Signals.EventEmitter { constructor(agent, requestId, authHelper, serviceType, connection, hints, flags) { super(); this._agent = agent; this._requestId = requestId; this._connection = connection; this._flags = flags; this._pluginOutBuffer = []; this._title = null; this._description = null; this._content = []; this._shellDialog = null; let connectionSetting = connection.get_setting_connection(); const argv = [ authHelper.fileName, '-u', connectionSetting.uuid, '-n', connectionSetting.id, '-s', serviceType, ]; if (authHelper.externalUIMode) argv.push('--external-ui-mode'); if (flags & NM.SecretAgentGetSecretsFlags.ALLOW_INTERACTION) argv.push('-i'); if (flags & NM.SecretAgentGetSecretsFlags.REQUEST_NEW) argv.push('-r'); if (authHelper.supportsHints) { for (let i = 0; i < hints.length; i++) { argv.push('-t'); argv.push(hints[i]); } } this._newStylePlugin = authHelper.externalUIMode; try { const launchContext = global.create_app_launch_context(0, -1); let [pid, stdin, stdout, stderr] = Shell.util_spawn_async_with_pipes( null, /* pwd */ argv, launchContext.get_environment(), GLib.SpawnFlags.DO_NOT_REAP_CHILD); this._childPid = pid; this._stdin = new GioUnix.OutputStream({fd: stdin, close_fd: true}); this._stdout = new GioUnix.InputStream({fd: stdout, close_fd: true}); GLib.close(stderr); this._dataStdout = new Gio.DataInputStream({base_stream: this._stdout}); if (this._newStylePlugin) this._readStdoutNewStyle(); else this._readStdoutOldStyle(); this._childWatch = GLib.child_watch_add(GLib.PRIORITY_DEFAULT, pid, this._vpnChildFinished.bind(this)); this._writeConnection(); } catch (e) { logError(e, 'error while spawning VPN auth helper'); this._agent.respond(requestId, Shell.NetworkAgentResponse.INTERNAL_ERROR); } } cancel(respond) { if (respond) this._agent.respond(this._requestId, Shell.NetworkAgentResponse.USER_CANCELED); if (this._newStylePlugin && this._shellDialog) { this._shellDialog.close(); this._shellDialog.destroy(); } else { try { this._stdin.write('QUIT\n\n', null); } catch (e) { /* ignore broken pipe errors */ } } this.destroy(); } destroy() { if (this._destroyed) return; this.emit('destroy'); if (this._childWatch) GLib.source_remove(this._childWatch); this._stdin.close(null); // Stdout is closed when we finish reading from it this._destroyed = true; } _vpnChildFinished(pid, status, _requestObj) { this._childWatch = 0; if (this._newStylePlugin) { // For new style plugin, all work is done in the async reading functions // Just reap the process here return; } let [exited, exitStatus] = Shell.util_wifexited(status); if (exited) { if (exitStatus !== 0) this._agent.respond(this._requestId, Shell.NetworkAgentResponse.USER_CANCELED); else this._agent.respond(this._requestId, Shell.NetworkAgentResponse.CONFIRMED); } else { this._agent.respond(this._requestId, Shell.NetworkAgentResponse.INTERNAL_ERROR); } this.destroy(); } _vpnChildProcessLineOldStyle(line) { if (this._previousLine !== undefined) { // Two consecutive newlines mean that the child should be closed // (the actual newlines are eaten by Gio.DataInputStream) // Send a termination message if (line === '' && this._previousLine === '') { try { this._stdin.write('QUIT\n\n', null); } catch (e) { /* ignore broken pipe errors */ } } else { this._agent.add_vpn_secret(this._requestId, this._previousLine, line); this._previousLine = undefined; } } else { this._previousLine = line; } } async _readStdoutOldStyle() { const [line, len_] = await this._dataStdout.read_line_async(GLib.PRIORITY_DEFAULT, null); if (line === null) { // end of file this._stdout.close(null); return; } const decoder = new TextDecoder(); this._vpnChildProcessLineOldStyle(decoder.decode(line)); // try to read more! this._readStdoutOldStyle(); } async _readStdoutNewStyle() { const cnt = await this._dataStdout.fill_async(-1, GLib.PRIORITY_DEFAULT, null); if (cnt === 0) { // end of file this._showNewStyleDialog(); this._stdout.close(null); return; } // Try to read more this._dataStdout.set_buffer_size(2 * this._dataStdout.get_buffer_size()); this._readStdoutNewStyle(); } _showNewStyleDialog() { let keyfile = new GLib.KeyFile(); let data; let contentOverride; try { data = new GLib.Bytes(this._dataStdout.peek_buffer()); keyfile.load_from_bytes(data, GLib.KeyFileFlags.NONE); if (keyfile.get_integer(VPN_UI_GROUP, 'Version') !== 2) throw new Error('Invalid plugin keyfile version, is %d'); contentOverride = { title: keyfile.get_string(VPN_UI_GROUP, 'Title'), message: keyfile.get_string(VPN_UI_GROUP, 'Description'), secrets: [], }; let [groups, len_] = keyfile.get_groups(); for (let i = 0; i < groups.length; i++) { if (groups[i] === VPN_UI_GROUP) continue; let value = keyfile.get_string(groups[i], 'Value'); let shouldAsk = keyfile.get_boolean(groups[i], 'ShouldAsk'); if (shouldAsk) { contentOverride.secrets.push({ label: keyfile.get_string(groups[i], 'Label'), key: groups[i], value, password: keyfile.get_boolean(groups[i], 'IsSecret'), }); } else { if (!value.length) // Ignore empty secrets continue; this._agent.add_vpn_secret(this._requestId, groups[i], value); } } } catch (e) { // No output is a valid case it means "both secrets are stored" if (data.length > 0) { logError(e, 'error while reading VPN plugin output keyfile'); this._agent.respond(this._requestId, Shell.NetworkAgentResponse.INTERNAL_ERROR); this.destroy(); return; } } if (contentOverride && contentOverride.secrets.length) { // Only show the dialog if we actually have something to ask this._shellDialog = new NetworkSecretDialog(this._agent, this._requestId, this._connection, 'vpn', [], this._flags, contentOverride); this._shellDialog.open(); } else { this._agent.respond(this._requestId, Shell.NetworkAgentResponse.CONFIRMED); this.destroy(); } } _writeConnection() { let vpnSetting = this._connection.get_setting_vpn(); try { vpnSetting.foreach_data_item((key, value) => { this._stdin.write(`DATA_KEY=${key}\n`, null); this._stdin.write(`DATA_VAL=${value || ''}\n\n`, null); }); vpnSetting.foreach_secret((key, value) => { this._stdin.write(`SECRET_KEY=${key}\n`, null); this._stdin.write(`SECRET_VAL=${value || ''}\n\n`, null); }); this._stdin.write('DONE\n\n', null); } catch (e) { logError(e, 'internal error while writing connection to helper'); this._agent.respond(this._requestId, Shell.NetworkAgentResponse.INTERNAL_ERROR); this.destroy(); } } } class NetworkAgent { constructor() { this._native = new Shell.NetworkAgent({ identifier: 'org.gnome.Shell.NetworkAgent', capabilities: NM.SecretAgentCapabilities.VPN_HINTS, auto_register: false, }); this._dialogs = { }; this._vpnRequests = { }; this._notifications = { }; this._native.connect('new-request', this._newRequest.bind(this)); this._native.connect('cancel-request', this._cancelRequest.bind(this)); this._initialized = false; this._initNative(); } async _initNative() { try { await this._native.init_async(GLib.PRIORITY_DEFAULT, null); this._initialized = true; } catch (e) { this._native = null; logError(e, 'error initializing the NetworkManager Agent'); } } enable() { if (!this._native) return; this._native.auto_register = true; if (this._initialized && !this._native.registered) this._native.register_async(null, null); } disable() { let requestId; for (requestId in this._dialogs) this._dialogs[requestId].cancel(); this._dialogs = { }; for (requestId in this._vpnRequests) this._vpnRequests[requestId].cancel(true); this._vpnRequests = { }; for (requestId in this._notifications) this._notifications[requestId].destroy(); this._notifications = { }; if (!this._native) return; this._native.auto_register = false; if (this._initialized && this._native.registered) this._native.unregister_async(null, null); } _showNotification(requestId, connection, settingName, hints, flags) { let title, body; let connectionSetting = connection.get_setting_connection(); let connectionType = connectionSetting.get_connection_type(); switch (connectionType) { case '802-11-wireless': { let wirelessSetting = connection.get_setting_wireless(); let ssid = NM.utils_ssid_to_utf8(wirelessSetting.get_ssid().get_data()); title = _('Authentication required'); body = _('Passwords or encryption keys are required to access the wireless network “%s”').format(ssid); break; } case '802-3-ethernet': title = _('Wired 802.1X authentication'); body = _('A password is required to connect to “%s”').format(connection.get_id()); break; case 'pppoe': title = _('DSL authentication'); body = _('A password is required to connect to “%s”').format(connection.get_id()); break; case 'gsm': if (hints.includes('pin')) { title = _('PIN code required'); body = _('PIN code is needed for the mobile broadband device'); break; } // fall through case 'cdma': case 'bluetooth': title = _('Authentication required'); body = _('A password is required to connect to “%s”').format(connectionSetting.get_id()); break; case 'vpn': title = _('VPN password'); body = _('A password is required to connect to “%s”').format(connectionSetting.get_id()); break; default: log(`Invalid connection type: ${connectionType}`); this._native.respond(requestId, Shell.NetworkAgentResponse.INTERNAL_ERROR); return; } const source = MessageTray.getSystemSource(); const notification = new MessageTray.Notification({source, title, body}); notification.iconName = 'dialog-password-symbolic'; notification.connect('activated', () => { notification.answered = true; this._handleRequest(requestId, connection, settingName, hints, flags); }); this._notifications[requestId] = notification; notification.connect('destroy', () => { if (!notification.answered) this._native.respond(requestId, Shell.NetworkAgentResponse.USER_CANCELED); delete this._notifications[requestId]; }); source.addNotification(notification); } _newRequest(agent, requestId, connection, settingName, hints, flags) { if (!(flags & NM.SecretAgentGetSecretsFlags.USER_REQUESTED)) this._showNotification(requestId, connection, settingName, hints, flags); else this._handleRequest(requestId, connection, settingName, hints, flags); } _handleRequest(requestId, connection, settingName, hints, flags) { if (settingName === 'vpn') { this._vpnRequest(requestId, connection, hints, flags); return; } let dialog = new NetworkSecretDialog(this._native, requestId, connection, settingName, hints, flags); dialog.connect('destroy', () => { delete this._dialogs[requestId]; }); this._dialogs[requestId] = dialog; dialog.open(); } _cancelRequest(agent, requestId) { if (this._dialogs[requestId]) { this._dialogs[requestId].close(); this._dialogs[requestId].destroy(); delete this._dialogs[requestId]; } else if (this._vpnRequests[requestId]) { this._vpnRequests[requestId].cancel(false); delete this._vpnRequests[requestId]; } } async _vpnRequest(requestId, connection, hints, flags) { let vpnSetting = connection.get_setting_vpn(); let serviceType = vpnSetting.service_type; let binary = await this._findAuthBinary(serviceType); if (!binary) { log('Invalid VPN service type (cannot find authentication binary)'); /* cancel the auth process */ this._native.respond(requestId, Shell.NetworkAgentResponse.INTERNAL_ERROR); return; } let vpnRequest = new VPNRequestHandler(this._native, requestId, binary, serviceType, connection, hints, flags); vpnRequest.connect('destroy', () => { delete this._vpnRequests[requestId]; }); this._vpnRequests[requestId] = vpnRequest; } async _findAuthBinary(serviceType) { let plugin; try { plugin = await this._native.search_vpn_plugin(serviceType); } catch (e) { logError(e); return null; } const fileName = plugin.get_auth_dialog(); if (!GLib.file_test(fileName, GLib.FileTest.IS_EXECUTABLE)) { log(`VPN plugin at ${fileName} is not executable`); return null; } const prop = plugin.lookup_property('GNOME', 'supports-external-ui-mode'); const trimmedProp = prop?.trim().toLowerCase() ?? ''; return { fileName, supportsHints: plugin.supports_hints(), externalUIMode: ['true', 'yes', 'on', '1'].includes(trimmedProp), }; } } export {NetworkAgent as Component}; 070701000001AC000081A40000000000000000000000016712993F00003DEE000000000000000000000000000000000000003100000000gnome-shell-47.1/js/ui/components/polkitAgent.jsimport AccountsService from 'gi://AccountsService'; import Clutter from 'gi://Clutter'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import Pango from 'gi://Pango'; import PolkitAgent from 'gi://PolkitAgent'; import Polkit from 'gi://Polkit'; import Shell from 'gi://Shell'; import St from 'gi://St'; import * as Dialog from '../dialog.js'; import * as Main from '../main.js'; import * as ModalDialog from '../modalDialog.js'; import * as ShellEntry from '../shellEntry.js'; import * as UserWidget from '../userWidget.js'; import {wiggle} from '../../misc/animationUtils.js'; /** @enum {number} */ const DialogMode = { AUTH: 0, CONFIRM: 1, }; const DIALOG_ICON_SIZE = 96; const DELAYED_RESET_TIMEOUT = 200; const AuthenticationDialog = GObject.registerClass({ Signals: {'done': {param_types: [GObject.TYPE_BOOLEAN]}}, }, class AuthenticationDialog extends ModalDialog.ModalDialog { _init(actionId, description, cookie, userNames) { super._init({styleClass: 'prompt-dialog'}); this.actionId = actionId; this.message = description; this.userNames = userNames; Main.sessionMode.connectObject('updated', () => { this.visible = !Main.sessionMode.isLocked; }, this); this.connect('closed', this._onDialogClosed.bind(this)); let title = _('Authentication Required'); let headerContent = new Dialog.MessageDialogContent({title, description}); this.contentLayout.add_child(headerContent); let bodyContent = new Dialog.MessageDialogContent(); if (userNames.length > 1) { log(`polkitAuthenticationAgent: Received ${userNames.length} ` + 'identities that can be used for authentication. Only ' + 'considering one.'); } let userName = GLib.get_user_name(); if (!userNames.includes(userName)) userName = 'root'; if (!userNames.includes(userName)) userName = userNames[0]; this._user = AccountsService.UserManager.get_default().get_user(userName); let userBox = new St.BoxLayout({ style_class: 'polkit-dialog-user-layout', vertical: true, }); bodyContent.add_child(userBox); this._userAvatar = new UserWidget.Avatar(this._user, { iconSize: DIALOG_ICON_SIZE, }); this._userAvatar.x_align = Clutter.ActorAlign.CENTER; userBox.add_child(this._userAvatar); this._userLabel = new St.Label({ style_class: userName === 'root' ? 'polkit-dialog-user-root-label' : 'polkit-dialog-user-label', }); if (userName === 'root') this._userLabel.text = _('Administrator'); userBox.add_child(this._userLabel); let passwordBox = new St.BoxLayout({ style_class: 'prompt-dialog-password-layout', vertical: true, }); this._passwordEntry = new St.PasswordEntry({ style_class: 'prompt-dialog-password-entry', text: '', can_focus: true, visible: false, x_align: Clutter.ActorAlign.CENTER, }); ShellEntry.addContextMenu(this._passwordEntry); this._passwordEntry.clutter_text.connect('activate', this._onEntryActivate.bind(this)); this._passwordEntry.bind_property('reactive', this._passwordEntry.clutter_text, 'editable', GObject.BindingFlags.SYNC_CREATE); passwordBox.add_child(this._passwordEntry); let warningBox = new St.BoxLayout({vertical: true}); let capsLockWarning = new ShellEntry.CapsLockWarning(); this._passwordEntry.bind_property('visible', capsLockWarning, 'visible', GObject.BindingFlags.SYNC_CREATE); warningBox.add_child(capsLockWarning); this._errorMessageLabel = new St.Label({ style_class: 'prompt-dialog-error-label', visible: false, }); this._errorMessageLabel.clutter_text.ellipsize = Pango.EllipsizeMode.NONE; this._errorMessageLabel.clutter_text.line_wrap = true; warningBox.add_child(this._errorMessageLabel); this._infoMessageLabel = new St.Label({ style_class: 'prompt-dialog-info-label', visible: false, }); this._infoMessageLabel.clutter_text.ellipsize = Pango.EllipsizeMode.NONE; this._infoMessageLabel.clutter_text.line_wrap = true; warningBox.add_child(this._infoMessageLabel); /* text is intentionally non-blank otherwise the height is not the same as for * infoMessage and errorMessageLabel - but it is still invisible because * gnome-shell.css sets the color to be transparent */ this._nullMessageLabel = new St.Label({style_class: 'prompt-dialog-null-label'}); this._nullMessageLabel.clutter_text.ellipsize = Pango.EllipsizeMode.NONE; this._nullMessageLabel.clutter_text.line_wrap = true; warningBox.add_child(this._nullMessageLabel); passwordBox.add_child(warningBox); bodyContent.add_child(passwordBox); this._cancelButton = this.addButton({ label: _('Cancel'), action: this.cancel.bind(this), key: Clutter.KEY_Escape, }); this._okButton = this.addButton({ label: _('Authenticate'), action: this._onAuthenticateButtonPressed.bind(this), reactive: false, }); this._okButton.bind_property('reactive', this._okButton, 'can-focus', GObject.BindingFlags.SYNC_CREATE); this._passwordEntry.clutter_text.connect('text-changed', text => { this._okButton.reactive = text.get_text().length > 0; }); this.contentLayout.add_child(bodyContent); this._doneEmitted = false; this._mode = -1; this._identityToAuth = Polkit.UnixUser.new_for_name(userName); this._cookie = cookie; this._user.connectObject( 'notify::is-loaded', this._onUserChanged.bind(this), 'changed', this._onUserChanged.bind(this), this); this._onUserChanged(); } _initiateSession() { this._destroySession(DELAYED_RESET_TIMEOUT); this._session = new PolkitAgent.Session({ identity: this._identityToAuth, cookie: this._cookie, }); this._session.connectObject( 'completed', this._onSessionCompleted.bind(this), 'request', this._onSessionRequest.bind(this), 'show-error', this._onSessionShowError.bind(this), 'show-info', this._onSessionShowInfo.bind(this), this); this._session.initiate(); } _ensureOpen() { // NOTE: ModalDialog.open() is safe to call if the dialog is // already open - it just returns true without side-effects if (!this.open()) { // This can fail if e.g. unable to get input grab // // In an ideal world this wouldn't happen (because the // Shell is in complete control of the session) but that's // just not how things work right now. // // One way to make this happen is by running 'sleep 3; // pkexec bash' and then opening a popup menu. // // We could add retrying if this turns out to be a problem log('polkitAuthenticationAgent: Failed to show modal dialog. ' + `Dismissing authentication request for action-id ${this.actionId} ` + `cookie ${this._cookie}`); this._emitDone(true); } } _emitDone(dismissed) { if (!this._doneEmitted) { this._doneEmitted = true; this.emit('done', dismissed); } } _onEntryActivate() { let response = this._passwordEntry.get_text(); if (response.length === 0) return; this._passwordEntry.reactive = false; this._okButton.reactive = false; this._session.response(response); // When the user responds, dismiss already shown info and // error texts (if any) this._errorMessageLabel.hide(); this._infoMessageLabel.hide(); this._nullMessageLabel.show(); } _onAuthenticateButtonPressed() { if (this._mode === DialogMode.CONFIRM) this._initiateSession(); else this._onEntryActivate(); } _onSessionCompleted(session, gainedAuthorization) { if (this._completed || this._doneEmitted) return; this._completed = true; /* Yay, all done */ if (gainedAuthorization) { this._emitDone(false); } else { /* Unless we are showing an existing error message from the PAM * module (the PAM module could be reporting the authentication * error providing authentication-method specific information), * show "Sorry, that didn't work. Please try again." */ if (!this._errorMessageLabel.visible) { /* Translators: "that didn't work" refers to the fact that the * requested authentication was not gained; this can happen * because of an authentication error (like invalid password), * for instance. */ this._errorMessageLabel.set_text(_('Sorry, that didn’t work. Please try again.')); this._errorMessageLabel.show(); this._infoMessageLabel.hide(); this._nullMessageLabel.hide(); wiggle(this._passwordEntry); } /* Try and authenticate again */ this._initiateSession(); } } _onSessionRequest(session, request, echoOn) { if (this._sessionRequestTimeoutId) { GLib.source_remove(this._sessionRequestTimeoutId); this._sessionRequestTimeoutId = 0; } // Hack: The request string comes directly from PAM, if it's "Password:" // we replace it with our own to allow localization, if it's something // else we remove the last colon and any trailing or leading spaces. if (request === 'Password:' || request === 'Password: ') this._passwordEntry.hint_text = _('Password'); else this._passwordEntry.hint_text = request.replace(/: *$/, '').trim(); this._passwordEntry.password_visible = echoOn; this._passwordEntry.show(); this._passwordEntry.set_text(''); this._passwordEntry.reactive = true; this._okButton.reactive = false; this._ensureOpen(); this._passwordEntry.grab_key_focus(); } _onSessionShowError(session, text) { this._passwordEntry.set_text(''); this._errorMessageLabel.set_text(text); this._errorMessageLabel.show(); this._infoMessageLabel.hide(); this._nullMessageLabel.hide(); this._ensureOpen(); } _onSessionShowInfo(session, text) { this._passwordEntry.set_text(''); this._infoMessageLabel.set_text(text); this._infoMessageLabel.show(); this._errorMessageLabel.hide(); this._nullMessageLabel.hide(); this._ensureOpen(); } _destroySession(delay = 0) { this._session?.disconnectObject(this); if (!this._completed) this._session?.cancel(); this._completed = false; this._session = null; if (this._sessionRequestTimeoutId) { GLib.source_remove(this._sessionRequestTimeoutId); this._sessionRequestTimeoutId = 0; } let resetDialog = () => { this._sessionRequestTimeoutId = 0; if (this.state !== ModalDialog.State.OPENED) return GLib.SOURCE_REMOVE; this._passwordEntry.hide(); this._cancelButton.grab_key_focus(); this._okButton.reactive = false; return GLib.SOURCE_REMOVE; }; if (delay) { this._sessionRequestTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, delay, resetDialog); GLib.Source.set_name_by_id(this._sessionRequestTimeoutId, '[gnome-shell] this._sessionRequestTimeoutId'); } else { resetDialog(); } } _onUserChanged() { if (!this._user.is_loaded) return; let userName = this._user.get_user_name(); let realName = this._user.get_real_name(); if (userName !== 'root') this._userLabel.set_text(realName); this._userAvatar.update(); if (this._user.get_password_mode() === AccountsService.UserPasswordMode.NONE) { if (this._mode === DialogMode.CONFIRM) return; this._mode = DialogMode.CONFIRM; this._destroySession(); this._okButton.reactive = true; /* We normally open the dialog when we get a "request" signal, but * since in this case initiating a session would perform the * authentication, only open the dialog and initiate the session * when the user confirmed. */ this._ensureOpen(); } else { if (this._mode === DialogMode.AUTH) return; this._mode = DialogMode.AUTH; this._initiateSession(); } } close(timestamp) { // Ensure cleanup if the dialog was never shown if (this.state === ModalDialog.State.CLOSED) this._onDialogClosed(); super.close(timestamp); } cancel() { this._emitDone(true); } _onDialogClosed() { Main.sessionMode.disconnectObject(this); if (this._sessionRequestTimeoutId) GLib.source_remove(this._sessionRequestTimeoutId); this._sessionRequestTimeoutId = 0; this._user?.disconnectObject(this); this._user = null; this._destroySession(); } }); const AuthenticationAgent = GObject.registerClass( class AuthenticationAgent extends Shell.PolkitAuthenticationAgent { _init() { super._init(); this._currentDialog = null; this.connect('initiate', this._onInitiate.bind(this)); this.connect('cancel', this._onCancel.bind(this)); this._sessionUpdatedId = 0; } enable() { try { this.register(); } catch (e) { log('Failed to register AuthenticationAgent'); } } disable() { try { this.unregister(); } catch (e) { log('Failed to unregister AuthenticationAgent'); } } _onInitiate(nativeAgent, actionId, message, iconName, cookie, userNames) { // Don't pop up a dialog while locked if (Main.sessionMode.isLocked) { Main.sessionMode.connectObject('updated', () => { Main.sessionMode.disconnectObject(this); this._onInitiate(nativeAgent, actionId, message, iconName, cookie, userNames); }, this); return; } this._currentDialog = new AuthenticationDialog(actionId, message, cookie, userNames); this._currentDialog.connect('done', this._onDialogDone.bind(this)); } _onCancel(_nativeAgent) { this._completeRequest(false); } _onDialogDone(_dialog, dismissed) { this._completeRequest(dismissed); } _completeRequest(dismissed) { this._currentDialog.close(); this._currentDialog = null; Main.sessionMode.disconnectObject(this); this.complete(dismissed); } }); export {AuthenticationAgent as Component}; 070701000001AD000081A40000000000000000000000016712993F0000174F000000000000000000000000000000000000002500000000gnome-shell-47.1/js/ui/ctrlAltTab.jsimport Clutter from 'gi://Clutter'; import GObject from 'gi://GObject'; import Meta from 'gi://Meta'; import Shell from 'gi://Shell'; import St from 'gi://St'; import * as Main from './main.js'; import * as SwitcherPopup from './switcherPopup.js'; import * as Params from '../misc/params.js'; const POPUP_APPICON_SIZE = 96; export const SortGroup = { TOP: 0, MIDDLE: 1, BOTTOM: 2, }; export class CtrlAltTabManager { constructor() { this._items = []; this.addGroup(global.window_group, _('Windows'), 'shell-focus-windows-symbolic', { sortGroup: SortGroup.TOP, focusCallback: this._focusWindows.bind(this), }); } addGroup(root, name, icon, params) { const item = Params.parse(params, { sortGroup: SortGroup.MIDDLE, proxy: root, focusCallback: null, }); item.root = root; item.name = name; item.iconName = icon; this._items.push(item); root.connect('destroy', () => this.removeGroup(root)); if (root instanceof St.Widget) global.focus_manager.add_group(root); } removeGroup(root) { if (root instanceof St.Widget) global.focus_manager.remove_group(root); for (let i = 0; i < this._items.length; i++) { if (this._items[i].root === root) { this._items.splice(i, 1); return; } } } focusGroup(item, timestamp) { if (item.focusCallback) item.focusCallback(timestamp); else item.root.navigate_focus(null, St.DirectionType.TAB_FORWARD, false); } // Sort the items into a consistent order; panel first, tray last, // and everything else in between, sorted by X coordinate, so that // they will have the same left-to-right ordering in the // Ctrl-Alt-Tab dialog as they do onscreen. _sortItems(a, b) { if (a.sortGroup !== b.sortGroup) return a.sortGroup - b.sortGroup; let [ax] = a.proxy.get_transformed_position(); let [bx] = b.proxy.get_transformed_position(); return ax - bx; } popup(backward, binding, mask) { // Start with the set of focus groups that are currently mapped let items = this._items.filter(item => item.proxy.mapped); // And add the windows metacity would show in its Ctrl-Alt-Tab list if (Main.sessionMode.hasWindows && !Main.overview.visible) { let display = global.display; let workspaceManager = global.workspace_manager; let activeWorkspace = workspaceManager.get_active_workspace(); let windows = display.get_tab_list(Meta.TabList.DOCKS, activeWorkspace); let windowTracker = Shell.WindowTracker.get_default(); for (let i = 0; i < windows.length; i++) { let icon = null; let iconName = null; if (windows[i].get_window_type() === Meta.WindowType.DESKTOP) { iconName = 'shell-focus-desktop-symbolic'; } else { const app = windowTracker.get_window_app(windows[i]); icon = app.create_icon_texture(POPUP_APPICON_SIZE); } items.push({ name: windows[i].title, proxy: windows[i].get_compositor_private(), focusCallback: timestamp => { Main.activateWindow(windows[i], timestamp); }, iconActor: icon, iconName, sortGroup: SortGroup.MIDDLE, }); } } if (!items.length) return; items.sort(this._sortItems.bind(this)); if (!this._popup) { this._popup = new CtrlAltTabPopup(items); this._popup.show(backward, binding, mask); this._popup.connect('destroy', () => { this._popup = null; }); } } _focusWindows(timestamp) { global.display.focus_default_window(timestamp); } } const CtrlAltTabPopup = GObject.registerClass( class CtrlAltTabPopup extends SwitcherPopup.SwitcherPopup { _init(items) { super._init(items); this._switcherList = new CtrlAltTabSwitcher(this._items); } _keyPressHandler(keysym, action) { if (action === Meta.KeyBindingAction.SWITCH_PANELS) this._select(this._next()); else if (action === Meta.KeyBindingAction.SWITCH_PANELS_BACKWARD) this._select(this._previous()); else if (keysym === Clutter.KEY_Left) this._select(this._previous()); else if (keysym === Clutter.KEY_Right) this._select(this._next()); else return Clutter.EVENT_PROPAGATE; return Clutter.EVENT_STOP; } _finish(time) { super._finish(time); Main.ctrlAltTabManager.focusGroup(this._items[this._selectedIndex], time); } }); const CtrlAltTabSwitcher = GObject.registerClass( class CtrlAltTabSwitcher extends SwitcherPopup.SwitcherList { _init(items) { super._init(true); for (let i = 0; i < items.length; i++) this._addIcon(items[i]); } _addIcon(item) { const box = new St.BoxLayout({ style_class: 'alt-tab-app', vertical: true, }); let icon = item.iconActor; if (!icon) { icon = new St.Icon({ icon_name: item.iconName, icon_size: POPUP_APPICON_SIZE, }); } box.add_child(icon); let text = new St.Label({ text: item.name, x_align: Clutter.ActorAlign.CENTER, }); box.add_child(text); this.addItem(box, text); } }); 070701000001AE000081A40000000000000000000000016712993F00007ED1000000000000000000000000000000000000001F00000000gnome-shell-47.1/js/ui/dash.jsimport Clutter from 'gi://Clutter'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import Graphene from 'gi://Graphene'; import Meta from 'gi://Meta'; import Shell from 'gi://Shell'; import St from 'gi://St'; import * as AppDisplay from './appDisplay.js'; import * as AppFavorites from './appFavorites.js'; import * as DND from './dnd.js'; import * as IconGrid from './iconGrid.js'; import * as Main from './main.js'; import * as Overview from './overview.js'; const DASH_ANIMATION_TIME = 200; const DASH_ITEM_LABEL_SHOW_TIME = 150; const DASH_ITEM_LABEL_HIDE_TIME = 100; const DASH_ITEM_HOVER_TIMEOUT = 300; export const DashIcon = GObject.registerClass( class DashIcon extends AppDisplay.AppIcon { _init(app) { super._init(app, { setSizeManually: true, showLabel: false, }); } popupMenu() { super.popupMenu(St.Side.BOTTOM); } // Disable scale-n-fade methods used during DND by parent scaleAndFade() { } undoScaleAndFade() { } handleDragOver() { return DND.DragMotionResult.CONTINUE; } acceptDrop() { return false; } }); // A container like StBin, but taking the child's scale into account // when requesting a size export const DashItemContainer = GObject.registerClass( class DashItemContainer extends St.Widget { _init() { super._init({ style_class: 'dash-item-container', pivot_point: new Graphene.Point({x: .5, y: .5}), layout_manager: new Clutter.BinLayout(), scale_x: 0, scale_y: 0, opacity: 0, x_expand: true, x_align: Clutter.ActorAlign.CENTER, }); this._labelText = ''; this.label = new St.Label({style_class: 'dash-label'}); this.label.hide(); Main.layoutManager.addChrome(this.label); this.label.connectObject('destroy', () => (this.label = null), this); this.label_actor = this.label; this.child = null; this.animatingOut = false; this.connect('notify::scale-x', () => this.queue_relayout()); this.connect('notify::scale-y', () => this.queue_relayout()); this.connect('destroy', () => { if (this.child != null) this.child.destroy(); this.label?.destroy(); }); } vfunc_get_preferred_height(forWidth) { let themeNode = this.get_theme_node(); forWidth = themeNode.adjust_for_width(forWidth); let [minHeight, natHeight] = super.vfunc_get_preferred_height(forWidth); return themeNode.adjust_preferred_height( minHeight * this.scale_y, natHeight * this.scale_y); } vfunc_get_preferred_width(forHeight) { let themeNode = this.get_theme_node(); forHeight = themeNode.adjust_for_height(forHeight); let [minWidth, natWidth] = super.vfunc_get_preferred_width(forHeight); return themeNode.adjust_preferred_width( minWidth * this.scale_x, natWidth * this.scale_x); } showLabel() { if (!this._labelText) return; this.label.set_text(this._labelText); this.label.opacity = 0; this.label.show(); let [stageX, stageY] = this.get_transformed_position(); const itemWidth = this.allocation.get_width(); const labelWidth = this.label.get_width(); const xOffset = Math.floor((itemWidth - labelWidth) / 2); const x = Math.clamp(stageX + xOffset, 0, global.stage.width - labelWidth); let node = this.label.get_theme_node(); const yOffset = node.get_length('-y-offset'); const y = stageY - this.label.height - yOffset; this.label.set_position(x, y); this.label.ease({ opacity: 255, duration: DASH_ITEM_LABEL_SHOW_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, }); } setLabelText(text) { this._labelText = text; this.child.accessible_name = text; } hideLabel() { this.label.ease({ opacity: 0, duration: DASH_ITEM_LABEL_HIDE_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => this.label.hide(), }); } setChild(actor) { if (this.child === actor) return; this.destroy_all_children(); this.child = actor; this.child.y_expand = true; this.add_child(this.child); } show(animate) { if (this.child == null) return; let time = animate ? DASH_ANIMATION_TIME : 0; this.ease({ scale_x: 1, scale_y: 1, opacity: 255, duration: time, mode: Clutter.AnimationMode.EASE_OUT_QUAD, }); } animateOutAndDestroy() { this.label.hide(); if (this.child == null) { this.destroy(); return; } this.animatingOut = true; this.ease({ scale_x: 0, scale_y: 0, opacity: 0, duration: DASH_ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => this.destroy(), }); } }); export const ShowAppsIcon = GObject.registerClass( class ShowAppsIcon extends DashItemContainer { _init() { super._init(); this.toggleButton = new St.Button({ style_class: 'show-apps', track_hover: true, can_focus: true, toggle_mode: true, }); this._iconActor = null; this.icon = new IconGrid.BaseIcon(_('Show Apps'), { setSizeManually: true, showLabel: false, createIcon: this._createIcon.bind(this), }); this.icon.y_align = Clutter.ActorAlign.CENTER; this.toggleButton.child = this.icon; this.toggleButton._delegate = this; this.setChild(this.toggleButton); this.setDragApp(null); } _createIcon(size) { this._iconActor = new St.Icon({ icon_name: 'view-app-grid-symbolic', icon_size: size, style_class: 'show-apps-icon', track_hover: true, }); return this._iconActor; } _canRemoveApp(app) { if (app == null) return false; if (!global.settings.is_writable('favorite-apps')) return false; let id = app.get_id(); let isFavorite = AppFavorites.getAppFavorites().isFavorite(id); return isFavorite; } setDragApp(app) { let canRemove = this._canRemoveApp(app); this.toggleButton.set_hover(canRemove); if (this._iconActor) this._iconActor.set_hover(canRemove); if (canRemove) this.setLabelText(_('Unpin')); else this.setLabelText(_('Show Apps')); } handleDragOver(source, _actor, _x, _y, _time) { if (!this._canRemoveApp(Dash.getAppFromSource(source))) return DND.DragMotionResult.NO_DROP; return DND.DragMotionResult.MOVE_DROP; } acceptDrop(source, _actor, _x, _y, _time) { const app = Dash.getAppFromSource(source); if (!this._canRemoveApp(app)) return false; let id = app.get_id(); const laters = global.compositor.get_laters(); laters.add(Meta.LaterType.BEFORE_REDRAW, () => { AppFavorites.getAppFavorites().removeFavorite(id); return false; }); return true; } }); const DragPlaceholderItem = GObject.registerClass( class DragPlaceholderItem extends DashItemContainer { _init() { super._init(); this.setChild(new St.Bin({style_class: 'placeholder'})); } }); const EmptyDropTargetItem = GObject.registerClass( class EmptyDropTargetItem extends DashItemContainer { _init() { super._init(); this.setChild(new St.Bin({style_class: 'empty-dash-drop-target'})); } }); const DashIconsLayout = GObject.registerClass( class DashIconsLayout extends Clutter.BoxLayout { _init() { super._init({ orientation: Clutter.Orientation.HORIZONTAL, }); } vfunc_get_preferred_width(container, forHeight) { const [, natWidth] = super.vfunc_get_preferred_width(container, forHeight); return [0, natWidth]; } }); const baseIconSizes = [16, 22, 24, 32, 48, 64]; export const Dash = GObject.registerClass({ Signals: {'icon-size-changed': {}}, }, class Dash extends St.Widget { /** * @param {object} source */ static getAppFromSource(source) { if (source instanceof AppDisplay.AppIcon) return source.app; else return null; } _init() { this._maxWidth = -1; this._maxHeight = -1; this.iconSize = 64; this._shownInitially = false; this._separator = null; this._dragPlaceholder = null; this._dragPlaceholderPos = -1; this._animatingPlaceholdersCount = 0; this._showLabelTimeoutId = 0; this._resetHoverTimeoutId = 0; this._labelShowing = false; super._init({ name: 'dash', offscreen_redirect: Clutter.OffscreenRedirect.ALWAYS, layout_manager: new Clutter.BinLayout(), }); this._dashContainer = new St.BoxLayout({ x_align: Clutter.ActorAlign.CENTER, y_expand: true, }); this._box = new St.Widget({ clip_to_allocation: true, layout_manager: new DashIconsLayout(), y_expand: true, }); this._box._delegate = this; this._dashContainer.add_child(this._box); this._showAppsIcon = new ShowAppsIcon(); this._showAppsIcon.show(false); this._showAppsIcon.icon.setIconSize(this.iconSize); this._hookUpLabel(this._showAppsIcon); this._dashContainer.add_child(this._showAppsIcon); this.showAppsButton = this._showAppsIcon.toggleButton; this._background = new St.Widget({ style_class: 'dash-background', }); const sizerBox = new Clutter.Actor(); sizerBox.add_constraint(new Clutter.BindConstraint({ source: this._showAppsIcon.icon, coordinate: Clutter.BindCoordinate.HEIGHT, })); sizerBox.add_constraint(new Clutter.BindConstraint({ source: this._dashContainer, coordinate: Clutter.BindCoordinate.WIDTH, })); this._background.add_child(sizerBox); this.add_child(this._background); this.add_child(this._dashContainer); this._workId = Main.initializeDeferredWork(this._box, this._redisplay.bind(this)); this._appSystem = Shell.AppSystem.get_default(); this._appSystem.connect('installed-changed', () => { AppFavorites.getAppFavorites().reload(); this._queueRedisplay(); }); AppFavorites.getAppFavorites().connect('changed', this._queueRedisplay.bind(this)); this._appSystem.connect('app-state-changed', this._queueRedisplay.bind(this)); Main.overview.connect('item-drag-begin', this._onItemDragBegin.bind(this)); Main.overview.connect('item-drag-end', this._onItemDragEnd.bind(this)); Main.overview.connect('item-drag-cancelled', this._onItemDragCancelled.bind(this)); Main.overview.connect('window-drag-begin', this._onWindowDragBegin.bind(this)); Main.overview.connect('window-drag-cancelled', this._onWindowDragEnd.bind(this)); Main.overview.connect('window-drag-end', this._onWindowDragEnd.bind(this)); // Translators: this is the name of the dock/favorites area on // the bottom of the overview Main.ctrlAltTabManager.addGroup(this, _('Dash'), 'shell-focus-dash-symbolic'); } _onItemDragBegin() { this._dragCancelled = false; this._dragMonitor = { dragMotion: this._onItemDragMotion.bind(this), }; DND.addDragMonitor(this._dragMonitor); if (this._box.get_n_children() === 0) { this._emptyDropTarget = new EmptyDropTargetItem(); this._box.insert_child_at_index(this._emptyDropTarget, 0); this._emptyDropTarget.show(true); } } _onItemDragCancelled() { this._dragCancelled = true; this._endItemDrag(); } _onItemDragEnd() { if (this._dragCancelled) return; this._endItemDrag(); } _endItemDrag() { this._clearDragPlaceholder(); this._clearEmptyDropTarget(); this._showAppsIcon.setDragApp(null); DND.removeDragMonitor(this._dragMonitor); } _onItemDragMotion(dragEvent) { const app = Dash.getAppFromSource(dragEvent.source); if (app == null) return DND.DragMotionResult.CONTINUE; let showAppsHovered = this._showAppsIcon.contains(dragEvent.targetActor); if (!this._box.contains(dragEvent.targetActor) || showAppsHovered) this._clearDragPlaceholder(); if (showAppsHovered) this._showAppsIcon.setDragApp(app); else this._showAppsIcon.setDragApp(null); return DND.DragMotionResult.CONTINUE; } _onWindowDragBegin() { this.ease({ opacity: 128, duration: Overview.ANIMATION_TIME / 2, mode: Clutter.AnimationMode.EASE_OUT_QUAD, }); } _onWindowDragEnd() { this.ease({ opacity: 255, duration: Overview.ANIMATION_TIME / 2, mode: Clutter.AnimationMode.EASE_IN_QUAD, }); } _appIdListToHash(apps) { let ids = {}; for (let i = 0; i < apps.length; i++) ids[apps[i].get_id()] = apps[i]; return ids; } _queueRedisplay() { Main.queueDeferredWork(this._workId); } _hookUpLabel(item, appIcon) { item.child.connect('notify::hover', () => { this._syncLabel(item, appIcon); }); item.child.connect('clicked', () => { this._labelShowing = false; item.hideLabel(); }); Main.overview.connectObject('hiding', () => { this._labelShowing = false; item.hideLabel(); }, item.child); if (appIcon) { appIcon.connect('sync-tooltip', () => { this._syncLabel(item, appIcon); }); } } _createAppItem(app) { let item = new DashItemContainer(); let appIcon = new DashIcon(app); appIcon.connect('menu-state-changed', (o, opened) => { this._itemMenuStateChanged(item, opened); }); item.setChild(appIcon); // Override default AppIcon label_actor, now the // accessible_name is set at DashItemContainer.setLabelText appIcon.label_actor = null; item.setLabelText(app.get_name()); appIcon.icon.setIconSize(this.iconSize); this._hookUpLabel(item, appIcon); return item; } _itemMenuStateChanged(item, opened) { // When the menu closes, it calls sync_hover, which means // that the notify::hover handler does everything we need to. if (opened) { if (this._showLabelTimeoutId > 0) { GLib.source_remove(this._showLabelTimeoutId); this._showLabelTimeoutId = 0; } item.hideLabel(); } } _syncLabel(item, appIcon) { let shouldShow = appIcon ? appIcon.shouldShowTooltip() : item.child.get_hover(); if (shouldShow) { if (this._showLabelTimeoutId === 0) { let timeout = this._labelShowing ? 0 : DASH_ITEM_HOVER_TIMEOUT; this._showLabelTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, timeout, () => { this._labelShowing = true; item.showLabel(); this._showLabelTimeoutId = 0; return GLib.SOURCE_REMOVE; }); GLib.Source.set_name_by_id(this._showLabelTimeoutId, '[gnome-shell] item.showLabel'); if (this._resetHoverTimeoutId > 0) { GLib.source_remove(this._resetHoverTimeoutId); this._resetHoverTimeoutId = 0; } } } else { if (this._showLabelTimeoutId > 0) GLib.source_remove(this._showLabelTimeoutId); this._showLabelTimeoutId = 0; item.hideLabel(); if (this._labelShowing) { this._resetHoverTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, DASH_ITEM_HOVER_TIMEOUT, () => { this._labelShowing = false; this._resetHoverTimeoutId = 0; return GLib.SOURCE_REMOVE; }); GLib.Source.set_name_by_id(this._resetHoverTimeoutId, '[gnome-shell] this._labelShowing'); } } } _adjustIconSize() { // For the icon size, we only consider children which are "proper" // icons (i.e. ignoring drag placeholders) and which are not // animating out (which means they will be destroyed at the end of // the animation) let iconChildren = this._box.get_children().filter(actor => { return actor.child && actor.child._delegate && actor.child._delegate.icon && !actor.animatingOut; }); iconChildren.push(this._showAppsIcon); if (this._maxWidth === -1 || this._maxHeight === -1) return; const themeNode = this.get_theme_node(); const maxAllocation = new Clutter.ActorBox({ x1: 0, y1: 0, x2: this._maxWidth, y2: 42, /* whatever */ }); let maxContent = themeNode.get_content_box(maxAllocation); let availWidth = maxContent.x2 - maxContent.x1; let spacing = themeNode.get_length('spacing'); let firstButton = iconChildren[0].child; let firstIcon = firstButton._delegate.icon; // Enforce valid spacings during the size request firstIcon.icon.ensure_style(); const [, , iconWidth, iconHeight] = firstIcon.icon.get_preferred_size(); const [, , buttonWidth, buttonHeight] = firstButton.get_preferred_size(); // Subtract icon padding and box spacing from the available width availWidth -= iconChildren.length * (buttonWidth - iconWidth) + (iconChildren.length - 1) * spacing; let availHeight = this._maxHeight; availHeight -= this.margin_top + this.margin_bottom; availHeight -= this._background.get_theme_node().get_vertical_padding(); availHeight -= themeNode.get_vertical_padding(); availHeight -= buttonHeight - iconHeight; const maxIconSize = Math.min(availWidth / iconChildren.length, availHeight); let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor; let iconSizes = baseIconSizes.map(s => s * scaleFactor); let newIconSize = baseIconSizes[0]; for (let i = 0; i < iconSizes.length; i++) { if (iconSizes[i] <= maxIconSize) newIconSize = baseIconSizes[i]; } if (newIconSize === this.iconSize) return; let oldIconSize = this.iconSize; this.iconSize = newIconSize; this.emit('icon-size-changed'); let scale = oldIconSize / newIconSize; for (let i = 0; i < iconChildren.length; i++) { let icon = iconChildren[i].child._delegate.icon; // Set the new size immediately, to keep the icons' sizes // in sync with this.iconSize icon.setIconSize(this.iconSize); // Don't animate the icon size change when the overview // is transitioning, not visible or when initially filling // the dash if (!Main.overview.visible || Main.overview.animationInProgress || !this._shownInitially) continue; let [targetWidth, targetHeight] = icon.icon.get_size(); // Scale the icon's texture to the previous size and // tween to the new size icon.icon.set_size( icon.icon.width * scale, icon.icon.height * scale); icon.icon.ease({ width: targetWidth, height: targetHeight, duration: DASH_ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, }); } if (this._separator) { this._separator.ease({ height: this.iconSize, duration: DASH_ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, }); } } _redisplay() { let favorites = AppFavorites.getAppFavorites().getFavoriteMap(); let running = this._appSystem.get_running(); let children = this._box.get_children().filter(actor => { return actor.child && actor.child._delegate && actor.child._delegate.app; }); // Apps currently in the dash let oldApps = children.map(actor => actor.child._delegate.app); // Apps supposed to be in the dash let newApps = []; for (let id in favorites) newApps.push(favorites[id]); for (let i = 0; i < running.length; i++) { let app = running[i]; if (app.get_id() in favorites) continue; newApps.push(app); } // Figure out the actual changes to the list of items; we iterate // over both the list of items currently in the dash and the list // of items expected there, and collect additions and removals. // Moves are both an addition and a removal, where the order of // the operations depends on whether we encounter the position // where the item has been added first or the one from where it // was removed. // There is an assumption that only one item is moved at a given // time; when moving several items at once, everything will still // end up at the right position, but there might be additional // additions/removals (e.g. it might remove all the launchers // and add them back in the new order even if a smaller set of // additions and removals is possible). // If above assumptions turns out to be a problem, we might need // to use a more sophisticated algorithm, e.g. Longest Common // Subsequence as used by diff. let addedItems = []; let removedActors = []; let newIndex = 0; let oldIndex = 0; while (newIndex < newApps.length || oldIndex < oldApps.length) { let oldApp = oldApps.length > oldIndex ? oldApps[oldIndex] : null; let newApp = newApps.length > newIndex ? newApps[newIndex] : null; // No change at oldIndex/newIndex if (oldApp === newApp) { oldIndex++; newIndex++; continue; } // App removed at oldIndex if (oldApp && !newApps.includes(oldApp)) { removedActors.push(children[oldIndex]); oldIndex++; continue; } // App added at newIndex if (newApp && !oldApps.includes(newApp)) { addedItems.push({ app: newApp, item: this._createAppItem(newApp), pos: newIndex, }); newIndex++; continue; } // App moved let nextApp = newApps.length > newIndex + 1 ? newApps[newIndex + 1] : null; let insertHere = nextApp && nextApp === oldApp; let alreadyRemoved = removedActors.reduce((result, actor) => { let removedApp = actor.child._delegate.app; return result || removedApp === newApp; }, false); if (insertHere || alreadyRemoved) { let newItem = this._createAppItem(newApp); addedItems.push({ app: newApp, item: newItem, pos: newIndex + removedActors.length, }); newIndex++; } else { removedActors.push(children[oldIndex]); oldIndex++; } } for (let i = 0; i < addedItems.length; i++) { this._box.insert_child_at_index( addedItems[i].item, addedItems[i].pos); } for (let i = 0; i < removedActors.length; i++) { let item = removedActors[i]; // Don't animate item removal when the overview is transitioning // or hidden if (Main.overview.visible && !Main.overview.animationInProgress) item.animateOutAndDestroy(); else item.destroy(); } this._adjustIconSize(); // Skip animations on first run when adding the initial set // of items, to avoid all items zooming in at once let animate = this._shownInitially && Main.overview.visible && !Main.overview.animationInProgress; if (!this._shownInitially) this._shownInitially = true; for (let i = 0; i < addedItems.length; i++) addedItems[i].item.show(animate); // Update separator const nFavorites = Object.keys(favorites).length; const nIcons = children.length + addedItems.length - removedActors.length; if (nFavorites > 0 && nFavorites < nIcons) { if (!this._separator) { this._separator = new St.Widget({ style_class: 'dash-separator', y_align: Clutter.ActorAlign.CENTER, height: this.iconSize, }); this._box.add_child(this._separator); } let pos = nFavorites + this._animatingPlaceholdersCount; if (this._dragPlaceholder) pos++; this._box.set_child_at_index(this._separator, pos); } else if (this._separator) { this._separator.destroy(); this._separator = null; } // Workaround for https://bugzilla.gnome.org/show_bug.cgi?id=692744 // Without it, StBoxLayout may use a stale size cache this._box.queue_relayout(); } _clearDragPlaceholder() { if (this._dragPlaceholder) { this._animatingPlaceholdersCount++; this._dragPlaceholder.connect('destroy', () => { this._animatingPlaceholdersCount--; }); this._dragPlaceholder.animateOutAndDestroy(); this._dragPlaceholder = null; } this._dragPlaceholderPos = -1; } _clearEmptyDropTarget() { if (this._emptyDropTarget) { this._emptyDropTarget.animateOutAndDestroy(); this._emptyDropTarget = null; } } handleDragOver(source, actor, x, _y, _time) { const app = Dash.getAppFromSource(source); // Don't allow favoriting of transient apps if (app == null || app.is_window_backed()) return DND.DragMotionResult.NO_DROP; if (!global.settings.is_writable('favorite-apps')) return DND.DragMotionResult.NO_DROP; let favorites = AppFavorites.getAppFavorites().getFavorites(); let numFavorites = favorites.length; let favPos = favorites.indexOf(app); let children = this._box.get_children(); let numChildren = children.length; let boxWidth = this._box.width; // Keep the placeholder out of the index calculation; assuming that // the remove target has the same size as "normal" items, we don't // need to do the same adjustment there. if (this._dragPlaceholder) { boxWidth -= this._dragPlaceholder.width; numChildren--; } // Same with the separator if (this._separator) { boxWidth -= this._separator.width; numChildren--; } let pos; if (this._emptyDropTarget) pos = 0; // always insert at the start when dash is empty else if (this.text_direction === Clutter.TextDirection.RTL) pos = numChildren - Math.floor(x * numChildren / boxWidth); else pos = Math.floor(x * numChildren / boxWidth); // Put the placeholder after the last favorite if we are not // in the favorites zone if (pos > numFavorites) pos = numFavorites; if (pos !== this._dragPlaceholderPos && this._animatingPlaceholdersCount === 0) { this._dragPlaceholderPos = pos; // Don't allow positioning before or after self if (favPos !== -1 && (pos === favPos || pos === favPos + 1)) { this._clearDragPlaceholder(); return DND.DragMotionResult.CONTINUE; } // If the placeholder already exists, we just move // it, but if we are adding it, expand its size in // an animation let fadeIn; if (this._dragPlaceholder) { this._dragPlaceholder.destroy(); fadeIn = false; } else { fadeIn = true; } this._dragPlaceholder = new DragPlaceholderItem(); this._dragPlaceholder.child.set_width(this.iconSize); this._dragPlaceholder.child.set_height(this.iconSize / 2); this._box.insert_child_at_index( this._dragPlaceholder, this._dragPlaceholderPos); this._dragPlaceholder.show(fadeIn); } if (!this._dragPlaceholder) return DND.DragMotionResult.NO_DROP; return DND.DragMotionResult.MOVE_DROP; } // Draggable target interface acceptDrop(source, _actor, _x, _y, _time) { const app = Dash.getAppFromSource(source); // Don't allow favoriting of transient apps if (app == null || app.is_window_backed()) return false; if (!global.settings.is_writable('favorite-apps')) return false; let id = app.get_id(); let favorites = AppFavorites.getAppFavorites().getFavoriteMap(); let srcIsFavorite = id in favorites; let favPos = 0; let children = this._box.get_children(); for (let i = 0; i < this._dragPlaceholderPos; i++) { if (this._dragPlaceholder && children[i] === this._dragPlaceholder) continue; let childId = children[i].child._delegate.app.get_id(); if (childId === id) continue; if (childId in favorites) favPos++; } // No drag placeholder means we don't want to favorite the app // and we are dragging it to its original position if (!this._dragPlaceholder) return true; const laters = global.compositor.get_laters(); laters.add(Meta.LaterType.BEFORE_REDRAW, () => { let appFavorites = AppFavorites.getAppFavorites(); if (srcIsFavorite) appFavorites.moveFavoriteToPos(id, favPos); else appFavorites.addFavoriteAtPos(id, favPos); return false; }); return true; } setMaxSize(maxWidth, maxHeight) { if (this._maxWidth === maxWidth && this._maxHeight === maxHeight) return; this._maxWidth = maxWidth; this._maxHeight = maxHeight; this._queueRedisplay(); } }); 070701000001AF000081A40000000000000000000000016712993F000083D0000000000000000000000000000000000000002300000000gnome-shell-47.1/js/ui/dateMenu.jsimport Clutter from 'gi://Clutter'; import Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import GnomeDesktop from 'gi://GnomeDesktop'; import GObject from 'gi://GObject'; import GWeather from 'gi://GWeather'; import Pango from 'gi://Pango'; import Shell from 'gi://Shell'; import St from 'gi://St'; import * as Main from './main.js'; import * as PanelMenu from './panelMenu.js'; import * as Calendar from './calendar.js'; import * as Weather from '../misc/weather.js'; import {formatDateWithCFormatString, formatTime, clearCachedLocalTimeZone} from '../misc/dateUtils.js'; import {loadInterfaceXML} from '../misc/fileUtils.js'; const NC_ = (context, str) => `${context}\u0004${str}`; const T_ = Shell.util_translate_time_string; const MAX_FORECASTS = 5; const EN_CHAR = '\u2013'; const ClocksIntegrationIface = loadInterfaceXML('org.gnome.Shell.ClocksIntegration'); const ClocksProxy = Gio.DBusProxy.makeProxyWrapper(ClocksIntegrationIface); /** * @private * * @param {Date} date a Date * @returns {boolean} */ function _isToday(date) { let now = new Date(); return now.getFullYear() === date.getFullYear() && now.getMonth() === date.getMonth() && now.getDate() === date.getDate(); } /** * @private * * @param {GLib.DateTime} datetime a GLib.DateTime * @returns {Date} */ function _gDateTimeToDate(datetime) { return new Date(datetime.to_unix() * 1000 + datetime.get_microsecond() / 1000); } const TodayButton = GObject.registerClass( class TodayButton extends St.Button { _init(calendar) { // Having the ability to go to the current date if the user is already // on the current date can be confusing. So don't make the button reactive // until the selected date changes. super._init({ style_class: 'datemenu-today-button', x_expand: true, can_focus: true, reactive: false, }); const hbox = new St.BoxLayout({ vertical: true, x_expand: true, }); this.child = hbox; this._dayLabel = new St.Label({ style_class: 'day-label', x_align: Clutter.ActorAlign.START, }); hbox.add_child(this._dayLabel); this._dateLabel = new St.Label({style_class: 'date-label'}); hbox.add_child(this._dateLabel); this._calendar = calendar; this._calendar.connect('selected-date-changed', (_calendar, datetime) => { // Make the button reactive only if the selected date is not the // current date. this.reactive = !_isToday(_gDateTimeToDate(datetime)); }); } vfunc_clicked() { this._calendar.setDate(new Date(), false); } setDate(date) { this._dayLabel.set_text(formatDateWithCFormatString(date, '%A')); /* Translators: This is the date format to use when the calendar popup is * shown - it is shown just below the time in the top bar (e.g., * "Tue 9:29 AM"). The string itself should become a full date, e.g., * "February 17 2015". */ const dateFormat = Shell.util_translate_time_string(N_('%B %-d %Y')); this._dateLabel.set_text(formatDateWithCFormatString(date, dateFormat)); /* Translators: This is the accessible name of the date button shown * below the time in the shell; it should combine the weekday and the * date, e.g. "Tuesday February 17 2015". */ const dateAccessibleNameFormat = Shell.util_translate_time_string(N_('%A %B %e %Y')); this.accessible_name = formatDateWithCFormatString(date, dateAccessibleNameFormat); } }); const EventsSection = GObject.registerClass( class EventsSection extends St.Button { _init() { super._init({ style_class: 'events-button', can_focus: true, x_expand: true, child: new St.BoxLayout({ style_class: 'events-box', vertical: true, x_expand: true, }), }); this._startDate = null; this._endDate = null; this._eventSource = null; this._calendarApp = null; this._title = new St.Label({ style_class: 'events-title', }); this.child.add_child(this._title); this._eventsList = new St.BoxLayout({ style_class: 'events-list', vertical: true, x_expand: true, }); this.child.add_child(this._eventsList); this._appSys = Shell.AppSystem.get_default(); this._appSys.connect('installed-changed', this._appInstalledChanged.bind(this)); this._appInstalledChanged(); } setDate(date) { this._startDate = new Date(date.getFullYear(), date.getMonth(), date.getDate()); this._endDate = new Date(date.getFullYear(), date.getMonth(), date.getDate() + 1); this._updateTitle(); this._reloadEvents(); } setEventSource(eventSource) { if (!(eventSource instanceof Calendar.EventSourceBase)) throw new Error('Event source is not valid type'); this._eventSource = eventSource; this._eventSource.connect('changed', this._reloadEvents.bind(this)); this._eventSource.connect('notify::has-calendars', this._sync.bind(this)); this._sync(); } _updateTitle() { /* Translators: Shown on calendar heading when selected day occurs on current year */ const sameYearFormat = T_(NC_('calendar heading', '%B %-d')); /* Translators: Shown on calendar heading when selected day occurs on different year */ const otherYearFormat = T_(NC_('calendar heading', '%B %-d %Y')); const timeSpanDay = GLib.TIME_SPAN_DAY / 1000; const now = new Date(); if (this._startDate <= now && now < this._endDate) this._title.text = _('Today'); else if (this._endDate <= now && now - this._endDate < timeSpanDay) this._title.text = _('Yesterday'); else if (this._startDate > now && this._startDate - now <= timeSpanDay) this._title.text = _('Tomorrow'); else if (this._startDate.getFullYear() === now.getFullYear()) this._title.text = formatDateWithCFormatString(this._startDate, sameYearFormat); else this._title.text = formatDateWithCFormatString(this._startDate, otherYearFormat); } _isAtMidnight(eventTime) { return eventTime.getHours() === 0 && eventTime.getMinutes() === 0 && eventTime.getSeconds() === 0; } _formatEventTime(event) { const eventStart = event.date; let eventEnd = event.end; const allDay = eventStart.getTime() === this._startDate.getTime() && eventEnd.getTime() === this._endDate.getTime(); const startsBeforeToday = eventStart < this._startDate; const endsAfterToday = eventEnd > this._endDate; const startTimeOnly = formatTime(eventStart, {timeOnly: true}); const endTimeOnly = formatTime(eventEnd, {timeOnly: true}); const rtl = Clutter.get_default_text_direction() === Clutter.TextDirection.RTL; let title; if (allDay) { /* Translators: Shown in calendar event list for all day events * Keep it short, best if you can use less then 10 characters */ title = C_('event list time', 'All Day'); } else if (startsBeforeToday || endsAfterToday) { const now = new Date(); const thisYear = now.getFullYear(); const startsAtMidnight = this._isAtMidnight(eventStart); const endsAtMidnight = this._isAtMidnight(eventEnd); const startYear = eventStart.getFullYear(); if (endsAtMidnight) { eventEnd = new Date(eventEnd); eventEnd.setDate(eventEnd.getDate() - 1); } const endYear = eventEnd.getFullYear(); let format; if (startYear === thisYear && thisYear === endYear) /* Translators: Shown in calendar event list as the start/end of events * that only show day and month */ format = T_(N_('%m/%d')); else format = '%x'; const startDateOnly = formatDateWithCFormatString(eventStart, format); const endDateOnly = formatDateWithCFormatString(eventEnd, format); if (startsAtMidnight && endsAtMidnight) title = `${rtl ? endDateOnly : startDateOnly} ${EN_CHAR} ${rtl ? startDateOnly : endDateOnly}`; else if (rtl) title = `${endTimeOnly} ${endDateOnly} ${EN_CHAR} ${startTimeOnly} ${startDateOnly}`; else title = `${startDateOnly} ${startTimeOnly} ${EN_CHAR} ${endDateOnly} ${endTimeOnly}`; } else if (eventStart === eventEnd) { title = startTimeOnly; } else { title = `${rtl ? endTimeOnly : startTimeOnly} ${EN_CHAR} ${rtl ? startTimeOnly : endTimeOnly}`; } return title; } _reloadEvents() { if (this._eventSource.isLoading || this._reloading) return; this._reloading = true; [...this._eventsList].forEach(c => c.destroy()); const events = this._eventSource.getEvents(this._startDate, this._endDate); for (let event of events) { const box = new St.BoxLayout({ style_class: 'event-box', vertical: true, }); box.add_child(new St.Label({ text: event.summary, style_class: 'event-summary', })); box.add_child(new St.Label({ text: this._formatEventTime(event), style_class: 'event-time', })); this._eventsList.add_child(box); } if (this._eventsList.get_n_children() === 0) { const placeholder = new St.Label({ text: _('No Events'), style_class: 'event-placeholder', }); this._eventsList.add_child(placeholder); } this._reloading = false; this._sync(); } vfunc_clicked() { Main.overview.hide(); Main.panel.closeCalendar(); const appInfo = this._calendarApp; const context = global.create_app_launch_context(0, -1); if (appInfo.get_id() === 'org.gnome.Evolution.desktop') appInfo.launch_action('calendar', context); else appInfo.launch([], context); } _appInstalledChanged() { const apps = Gio.AppInfo.get_recommended_for_type('text/calendar'); if (apps && (apps.length > 0)) { const app = Gio.AppInfo.get_default_for_type('text/calendar', false); const defaultInRecommended = apps.some(a => a.equal(app)); this._calendarApp = defaultInRecommended ? app : apps[0]; } else { this._calendarApp = null; } return this._sync(); } _sync() { this.visible = this._eventSource && this._eventSource.hasCalendars; this.reactive = this._calendarApp !== null; } }); const WorldClocksSection = GObject.registerClass( class WorldClocksSection extends St.Button { _init() { super._init({ style_class: 'world-clocks-button', can_focus: true, x_expand: true, }); this._clock = new GnomeDesktop.WallClock(); this._clockNotifyId = 0; this._tzNotifyId = 0; this._locations = []; const layout = new Clutter.GridLayout({orientation: Clutter.Orientation.VERTICAL}); this._grid = new St.Widget({ style_class: 'world-clocks-grid', x_expand: true, layout_manager: layout, }); layout.hookup_style(this._grid); this.child = this._grid; this._clocksApp = null; this._clocksProxy = new ClocksProxy( Gio.DBus.session, 'org.gnome.clocks', '/org/gnome/clocks', this._onProxyReady.bind(this), null /* cancellable */, Gio.DBusProxyFlags.DO_NOT_AUTO_START | Gio.DBusProxyFlags.GET_INVALIDATED_PROPERTIES); this._settings = new Gio.Settings({ schema_id: 'org.gnome.shell.world-clocks', }); this._settings.connect('changed', this._clocksChanged.bind(this)); this._clocksChanged(); this._appSystem = Shell.AppSystem.get_default(); this._appSystem.connect('installed-changed', this._sync.bind(this)); this._sync(); } vfunc_clicked() { if (this._clocksApp) this._clocksApp.activate(); Main.overview.hide(); Main.panel.closeCalendar(); } _sync() { this._clocksApp = this._appSystem.lookup_app('org.gnome.clocks.desktop'); this.visible = this._clocksApp != null; } _clocksChanged() { this._grid.destroy_all_children(); this._locations = []; let world = GWeather.Location.get_world(); let clocks = this._settings.get_value('locations').deepUnpack(); for (let i = 0; i < clocks.length; i++) { let l = world.deserialize(clocks[i]); if (l && l.get_timezone() != null) this._locations.push({location: l}); } const unixtime = GLib.DateTime.new_now_local().to_unix(); this._locations.sort((a, b) => { const tzA = a.location.get_timezone(); const tzB = b.location.get_timezone(); const intA = tzA.find_interval(GLib.TimeType.STANDARD, unixtime); const intB = tzB.find_interval(GLib.TimeType.STANDARD, unixtime); return tzA.get_offset(intA) - tzB.get_offset(intB); }); let layout = this._grid.layout_manager; const title = this._locations.length === 0 ? _('Add World Clocks…') : _('World Clocks'); const header = new St.Label({ style_class: 'world-clocks-header', x_align: Clutter.ActorAlign.START, text: title, }); if (this._locations.length === 0) header.add_style_class_name('no-world-clocks'); else header.remove_style_class_name('no-world-clocks'); if (this._grid.text_direction === Clutter.TextDirection.RTL) layout.attach(header, 2, 0, 1, 1); else layout.attach(header, 0, 0, 2, 1); this.label_actor = header; for (let i = 0; i < this._locations.length; i++) { let l = this._locations[i].location; let name = l.get_city_name() || l.get_name(); const label = new St.Label({ style_class: 'world-clocks-city', text: name, x_align: Clutter.ActorAlign.START, y_align: Clutter.ActorAlign.CENTER, x_expand: true, }); const time = new St.Label({style_class: 'world-clocks-time'}); const tz = new St.Label({ style_class: 'world-clocks-timezone', x_align: Clutter.ActorAlign.END, y_align: Clutter.ActorAlign.CENTER, }); time.clutter_text.ellipsize = Pango.EllipsizeMode.NONE; tz.clutter_text.ellipsize = Pango.EllipsizeMode.NONE; if (this._grid.text_direction === Clutter.TextDirection.RTL) { layout.attach(tz, 0, i + 1, 1, 1); layout.attach(time, 1, i + 1, 1, 1); layout.attach(label, 2, i + 1, 1, 1); } else { layout.attach(label, 0, i + 1, 1, 1); layout.attach(time, 1, i + 1, 1, 1); layout.attach(tz, 2, i + 1, 1, 1); } this._locations[i].timeLabel = time; this._locations[i].tzLabel = tz; } if (this._grid.get_n_children() > 1) { if (!this._clockNotifyId) { this._clockNotifyId = this._clock.connect('notify::clock', this._updateTimeLabels.bind(this)); } if (!this._tzNotifyId) { this._tzNotifyId = this._clock.connect('notify::timezone', this._updateTimezoneLabels.bind(this)); } this._updateTimeLabels(); this._updateTimezoneLabels(); } else { if (this._clockNotifyId) this._clock.disconnect(this._clockNotifyId); this._clockNotifyId = 0; if (this._tzNotifyId) this._clock.disconnect(this._tzNotifyId); this._tzNotifyId = 0; } } _getTimezoneOffsetAtLocation(location) { const tz = location.get_timezone(); const localOffset = GLib.DateTime.new_now_local().get_utc_offset(); const utcOffset = GLib.DateTime.new_now(tz).get_utc_offset(); const offsetCurrentTz = utcOffset - localOffset; const offsetHours = Math.floor(Math.abs(offsetCurrentTz) / GLib.TIME_SPAN_HOUR); const offsetMinutes = (Math.abs(offsetCurrentTz) % GLib.TIME_SPAN_HOUR) / GLib.TIME_SPAN_MINUTE; const prefix = offsetCurrentTz >= 0 ? '+' : '-'; const text = offsetMinutes === 0 ? `${prefix}${offsetHours}` : `${prefix}${offsetHours}\u2236${offsetMinutes}`; return text; } _updateTimeLabels() { for (let i = 0; i < this._locations.length; i++) { let l = this._locations[i]; const now = GLib.DateTime.new_now(l.location.get_timezone()); l.timeLabel.text = formatTime(now, {timeOnly: true}); } } _updateTimezoneLabels() { for (let i = 0; i < this._locations.length; i++) { let l = this._locations[i]; l.tzLabel.text = this._getTimezoneOffsetAtLocation(l.location); } } _onProxyReady(proxy, error) { if (error) { log(`Failed to create GNOME Clocks proxy: ${error}`); return; } this._clocksProxy.connect('g-properties-changed', this._onClocksPropertiesChanged.bind(this)); this._onClocksPropertiesChanged(); } _onClocksPropertiesChanged() { if (this._clocksProxy.g_name_owner == null) return; this._settings.set_value('locations', new GLib.Variant('av', this._clocksProxy.Locations)); } }); const WeatherSection = GObject.registerClass( class WeatherSection extends St.Button { _init() { super._init({ style_class: 'weather-button', can_focus: true, x_expand: true, }); this._weatherClient = new Weather.WeatherClient(); let box = new St.BoxLayout({ style_class: 'weather-box', vertical: true, x_expand: true, }); this.child = box; let titleBox = new St.BoxLayout({style_class: 'weather-header-box'}); this._titleLabel = new St.Label({ style_class: 'weather-header', x_align: Clutter.ActorAlign.START, x_expand: true, y_align: Clutter.ActorAlign.END, }); titleBox.add_child(this._titleLabel); box.add_child(titleBox); this._titleLocation = new St.Label({ style_class: 'weather-header location', x_align: Clutter.ActorAlign.END, y_align: Clutter.ActorAlign.END, }); titleBox.add_child(this._titleLocation); let layout = new Clutter.GridLayout({orientation: Clutter.Orientation.VERTICAL}); this._forecastGrid = new St.Widget({ style_class: 'weather-grid', layout_manager: layout, }); layout.hookup_style(this._forecastGrid); box.add_child(this._forecastGrid); this._weatherClient.connect('changed', this._sync.bind(this)); this._sync(); } vfunc_map() { this._weatherClient.update(); super.vfunc_map(); } vfunc_clicked() { this._weatherClient.activateApp(); Main.overview.hide(); Main.panel.closeCalendar(); } _getInfos() { let forecasts = this._weatherClient.info.get_forecast_list(); let now = GLib.DateTime.new_now_local(); let current = GLib.DateTime.new_from_unix_local(0); let infos = []; for (let i = 0; i < forecasts.length; i++) { const [valid, timestamp] = forecasts[i].get_value_update(); if (!valid || timestamp === 0) continue; // 0 means 'never updated' const datetime = GLib.DateTime.new_from_unix_local(timestamp); if (now.difference(datetime) > 0) continue; // Ignore earlier forecasts if (datetime.difference(current) < GLib.TIME_SPAN_HOUR) continue; // Enforce a minimum interval of 1h if (infos.push(forecasts[i]) === MAX_FORECASTS) break; // Use a maximum of five forecasts current = datetime; } return infos; } _addForecasts() { let layout = this._forecastGrid.layout_manager; let infos = this._getInfos(); if (this._forecastGrid.text_direction === Clutter.TextDirection.RTL) infos.reverse(); let col = 0; infos.forEach(fc => { const [valid_, timestamp] = fc.get_value_update(); let timeStr = formatTime(new Date(timestamp * 1000), { timeOnly: true, ampm: false, }); const [, tempValue] = fc.get_value_temp(GWeather.TemperatureUnit.DEFAULT); const tempPrefix = Math.round(tempValue) >= 0 ? ' ' : ''; let time = new St.Label({ style_class: 'weather-forecast-time', text: timeStr, x_align: Clutter.ActorAlign.CENTER, }); let icon = new St.Icon({ style_class: 'weather-forecast-icon', icon_name: fc.get_symbolic_icon_name(), x_align: Clutter.ActorAlign.CENTER, x_expand: true, }); let temp = new St.Label({ style_class: 'weather-forecast-temp', text: `${tempPrefix}${Math.round(tempValue)}°`, x_align: Clutter.ActorAlign.CENTER, }); temp.clutter_text.ellipsize = Pango.EllipsizeMode.NONE; time.clutter_text.ellipsize = Pango.EllipsizeMode.NONE; layout.attach(time, col, 0, 1, 1); layout.attach(icon, col, 1, 1, 1); layout.attach(temp, col, 2, 1, 1); col++; }); } _setStatusLabel(text) { let layout = this._forecastGrid.layout_manager; let label = new St.Label({text}); layout.attach(label, 0, 0, 1, 1); } _findBestLocationName(loc) { const locName = loc.get_name(); if (loc.get_level() === GWeather.LocationLevel.CITY || !loc.has_coords()) return locName; const world = GWeather.Location.get_world(); const city = world.find_nearest_city(...loc.get_coords()); const cityName = city.get_name(); return locName.includes(cityName) ? cityName : locName; } _updateForecasts() { this._forecastGrid.destroy_all_children(); if (!this._weatherClient.hasLocation) return; const {info} = this._weatherClient; this._titleLocation.text = this._findBestLocationName(info.location); if (this._weatherClient.loading) { this._setStatusLabel(_('Loading…')); return; } if (info.is_valid()) { this._addForecasts(); return; } if (info.network_error()) this._setStatusLabel(_('Go Online for Weather Information')); else this._setStatusLabel(_('Weather Information Unavailable')); } _sync() { this.visible = this._weatherClient.available; if (!this.visible) return; if (this._weatherClient.hasLocation) this._titleLabel.text = _('Weather'); else this._titleLabel.text = _('Select Weather Location…'); if (this._weatherClient.hasLocation) this._titleLabel.remove_style_class_name('no-location'); else this._titleLabel.add_style_class_name('no-location'); this._forecastGrid.visible = this._weatherClient.hasLocation; this._titleLocation.visible = this._weatherClient.hasLocation; this._updateForecasts(); } }); const MessagesIndicator = GObject.registerClass( class MessagesIndicator extends St.Icon { _init() { super._init({ style_class: 'messages-indicator', visible: false, y_expand: true, y_align: Clutter.ActorAlign.CENTER, }); this._sources = []; this._count = 0; this._settings = new Gio.Settings({ schema_id: 'org.gnome.desktop.notifications', }); this._settings.connect('changed::show-banners', this._sync.bind(this)); Main.messageTray.connect('source-added', this._onSourceAdded.bind(this)); Main.messageTray.connect('source-removed', this._onSourceRemoved.bind(this)); Main.messageTray.connect('queue-changed', this._updateCount.bind(this)); let sources = Main.messageTray.getSources(); sources.forEach(source => this._onSourceAdded(null, source)); this._sync(); this.connect('destroy', () => { this._settings.run_dispose(); this._settings = null; }); } _onSourceAdded(tray, source) { source.connect('notify::count', this._updateCount.bind(this)); this._sources.push(source); this._updateCount(); } _onSourceRemoved(tray, source) { this._sources.splice(this._sources.indexOf(source), 1); this._updateCount(); } _updateCount() { let count = 0; this._sources.forEach(source => (count += source.unseenCount)); this._count = count - Main.messageTray.queueCount; this._sync(); } _sync() { let doNotDisturb = !this._settings.get_boolean('show-banners'); this.icon_name = doNotDisturb ? 'notifications-disabled-symbolic' : 'message-indicator-symbolic'; this.visible = doNotDisturb || this._count > 0; } }); const FreezableBinLayout = GObject.registerClass( class FreezableBinLayout extends Clutter.BinLayout { _init() { super._init(); this._frozen = false; this._savedWidth = [NaN, NaN]; this._savedHeight = [NaN, NaN]; } set frozen(v) { if (this._frozen === v) return; this._frozen = v; if (!this._frozen) this.layout_changed(); } vfunc_get_preferred_width(container, forHeight) { if (!this._frozen || this._savedWidth.some(isNaN)) return super.vfunc_get_preferred_width(container, forHeight); return this._savedWidth; } vfunc_get_preferred_height(container, forWidth) { if (!this._frozen || this._savedHeight.some(isNaN)) return super.vfunc_get_preferred_height(container, forWidth); return this._savedHeight; } vfunc_allocate(container, allocation) { super.vfunc_allocate(container, allocation); let [width, height] = allocation.get_size(); this._savedWidth = [width, width]; this._savedHeight = [height, height]; } }); const CalendarColumnLayout = GObject.registerClass( class CalendarColumnLayout extends Clutter.BoxLayout { _init(actors) { super._init({orientation: Clutter.Orientation.VERTICAL}); this._colActors = actors; } vfunc_get_preferred_width(container, forHeight) { const actors = this._colActors.filter(a => a.get_parent() === container); if (actors.length === 0) return super.vfunc_get_preferred_width(container, forHeight); return actors.reduce(([minAcc, natAcc], child) => { const [min, nat] = child.get_preferred_width(forHeight); return [Math.max(minAcc, min), Math.max(natAcc, nat)]; }, [0, 0]); } }); export const DateMenuButton = GObject.registerClass( class DateMenuButton extends PanelMenu.Button { _init() { let hbox; super._init(0.5); this._clockDisplay = new St.Label({style_class: 'clock'}); this._clockDisplay.clutter_text.y_align = Clutter.ActorAlign.CENTER; this._clockDisplay.clutter_text.ellipsize = Pango.EllipsizeMode.NONE; this._indicator = new MessagesIndicator(); const indicatorPad = new St.Widget(); this._indicator.bind_property('visible', indicatorPad, 'visible', GObject.BindingFlags.SYNC_CREATE); indicatorPad.add_constraint(new Clutter.BindConstraint({ source: this._indicator, coordinate: Clutter.BindCoordinate.SIZE, })); let box = new St.BoxLayout({style_class: 'clock-display-box'}); box.add_child(indicatorPad); box.add_child(this._clockDisplay); box.add_child(this._indicator); this.label_actor = this._clockDisplay; this.add_child(box); this.add_style_class_name('clock-display'); let layout = new FreezableBinLayout(); let bin = new St.Widget({layout_manager: layout}); // For some minimal compatibility with PopupMenuItem bin._delegate = this; this.menu.box.add_child(bin); this.menu.box.add_style_class_name('datemenu-popover'); hbox = new St.BoxLayout({name: 'calendarArea'}); bin.add_child(hbox); this._calendar = new Calendar.Calendar(); this._calendar.connect('selected-date-changed', (_calendar, datetime) => { let date = _gDateTimeToDate(datetime); layout.frozen = !_isToday(date); this._eventsItem.setDate(date); }); this._date = new TodayButton(this._calendar); this.menu.connect('open-state-changed', (menu, isOpen) => { // Whenever the menu is opened, select today if (isOpen) { let now = new Date(); this._calendar.setDate(now); this._date.setDate(now); this._eventsItem.setDate(now); } }); // Fill up the first column this._messageList = new Calendar.CalendarMessageList(); hbox.add_child(this._messageList); // Fill up the second column const boxLayout = new CalendarColumnLayout([this._calendar, this._date]); const vbox = new St.Widget({ style_class: 'datemenu-calendar-column', layout_manager: boxLayout, }); boxLayout.hookup_style(vbox); hbox.add_child(vbox); vbox.add_child(this._date); vbox.add_child(this._calendar); const displaysBox = new St.BoxLayout({ vertical: true, x_expand: true, style_class: 'datemenu-displays-box', }); this._displaysSection = new St.ScrollView({ style_class: 'datemenu-displays-section vfade', x_expand: true, overlay_scrollbars: true, vscrollbar_policy: St.PolicyType.EXTERNAL, child: displaysBox, }); vbox.add_child(this._displaysSection); this._eventsItem = new EventsSection(); displaysBox.add_child(this._eventsItem); this._clocksItem = new WorldClocksSection(); displaysBox.add_child(this._clocksItem); this._weatherItem = new WeatherSection(); displaysBox.add_child(this._weatherItem); // Done with hbox for calendar and event list this._clock = new GnomeDesktop.WallClock(); this._clock.bind_property('clock', this._clockDisplay, 'text', GObject.BindingFlags.SYNC_CREATE); this._clock.connect('notify::timezone', this._updateTimeZone.bind(this)); Main.sessionMode.connect('updated', this._sessionUpdated.bind(this)); this._sessionUpdated(); } _getEventSource() { return new Calendar.DBusEventSource(); } _setEventSource(eventSource) { if (this._eventSource) this._eventSource.destroy(); this._calendar.setEventSource(eventSource); this._eventsItem.setEventSource(eventSource); this._eventSource = eventSource; } _updateTimeZone() { clearCachedLocalTimeZone(); this._calendar.updateTimeZone(); } _sessionUpdated() { let eventSource; let showEvents = Main.sessionMode.showCalendarEvents; if (showEvents) eventSource = this._getEventSource(); else eventSource = new Calendar.EmptyEventSource(); this._setEventSource(eventSource); // Displays are not actually expected to launch Settings when activated // but the corresponding app (clocks, weather); however we can consider // that display-specific settings, so re-use "allowSettings" here ... this._displaysSection.visible = Main.sessionMode.allowSettings; } }); 070701000001B0000081A40000000000000000000000016712993F0000280B000000000000000000000000000000000000002100000000gnome-shell-47.1/js/ui/dialog.jsimport Clutter from 'gi://Clutter'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import Meta from 'gi://Meta'; import Pango from 'gi://Pango'; import St from 'gi://St'; function _setLabel(label, value) { label.set({ text: value || '', visible: value !== null, }); } export const Dialog = GObject.registerClass( class Dialog extends St.Widget { _init(parentActor, styleClass) { super._init({ layout_manager: new Clutter.BinLayout(), reactive: true, }); this.connect('destroy', this._onDestroy.bind(this)); this._initialKeyFocus = null; this._pressedKey = null; this._buttonKeys = {}; this._createDialog(); this.add_child(this._dialog); if (styleClass != null) this._dialog.add_style_class_name(styleClass); this._parentActor = parentActor; this._parentActor.add_child(this); } _createDialog() { this._dialog = new St.BoxLayout({ style_class: 'modal-dialog', x_align: Clutter.ActorAlign.CENTER, y_align: Clutter.ActorAlign.CENTER, vertical: true, }); // modal dialogs are fixed width and grow vertically; set the request // mode accordingly so wrapped labels are handled correctly during // size requests. this._dialog.request_mode = Clutter.RequestMode.HEIGHT_FOR_WIDTH; this._dialog.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS); this.contentLayout = new St.BoxLayout({ vertical: true, style_class: 'modal-dialog-content-box', y_expand: true, }); this._dialog.add_child(this.contentLayout); this.buttonLayout = new St.Widget({ style_class: 'modal-dialog-button-box', layout_manager: new Clutter.BoxLayout({ spacing: 12, homogeneous: true, }), }); this._dialog.add_child(this.buttonLayout); } makeInactive() { this.buttonLayout.get_children().forEach(c => c.set_reactive(false)); } _onDestroy() { this.makeInactive(); } vfunc_event(event) { if (event.type() === Clutter.EventType.KEY_PRESS) { this._pressedKey = event.get_key_symbol(); } else if (event.type() === Clutter.EventType.KEY_RELEASE) { let pressedKey = this._pressedKey; this._pressedKey = null; let symbol = event.get_key_symbol(); if (symbol !== pressedKey) return Clutter.EVENT_PROPAGATE; let buttonInfo = this._buttonKeys[symbol]; if (!buttonInfo) return Clutter.EVENT_PROPAGATE; let {button, action} = buttonInfo; if (action && button.reactive) { action(); return Clutter.EVENT_STOP; } } return Clutter.EVENT_PROPAGATE; } _setInitialKeyFocus(actor) { this._initialKeyFocus?.disconnectObject(this); this._initialKeyFocus = actor; actor.connectObject('destroy', () => (this._initialKeyFocus = null), this); } get initialKeyFocus() { return this._initialKeyFocus || this; } addButton(buttonInfo) { let {label, action, key} = buttonInfo; let isDefault = buttonInfo['default']; let keys; if (key) keys = [key]; else if (isDefault) keys = [Clutter.KEY_Return, Clutter.KEY_KP_Enter, Clutter.KEY_ISO_Enter]; else keys = []; let button = new St.Button({ style_class: 'modal-dialog-button', button_mask: St.ButtonMask.ONE | St.ButtonMask.THREE, reactive: true, can_focus: true, x_expand: true, y_expand: true, label, }); button.connect('clicked', () => action()); buttonInfo['button'] = button; if (isDefault) button.add_style_pseudo_class('default'); if (this._initialKeyFocus == null || isDefault) this._setInitialKeyFocus(button); for (let i in keys) this._buttonKeys[keys[i]] = buttonInfo; this.buttonLayout.add_child(button); return button; } clearButtons() { this.buttonLayout.destroy_all_children(); this._buttonKeys = {}; } }); export const MessageDialogContent = GObject.registerClass({ Properties: { 'title': GObject.ParamSpec.string( 'title', null, null, GObject.ParamFlags.READWRITE | GObject.ParamFlags.CONSTRUCT, null), 'description': GObject.ParamSpec.string( 'description', null, null, GObject.ParamFlags.READWRITE | GObject.ParamFlags.CONSTRUCT, null), }, }, class MessageDialogContent extends St.BoxLayout { _init(params) { this._title = new St.Label({style_class: 'message-dialog-title'}); this._description = new St.Label({style_class: 'message-dialog-description'}); this._description.clutter_text.ellipsize = Pango.EllipsizeMode.NONE; this._description.clutter_text.line_wrap = true; super._init({ style_class: 'message-dialog-content', x_expand: true, vertical: true, ...params, }); this.connect('notify::size', this._updateTitleStyle.bind(this)); this.connect('destroy', this._onDestroy.bind(this)); this.add_child(this._title); this.add_child(this._description); } _onDestroy() { if (this._updateTitleStyleLater) { const laters = global.compositor.get_laters(); laters.remove(this._updateTitleStyleLater); delete this._updateTitleStyleLater; } } get title() { return this._title.text; } get description() { return this._description.text; } _updateTitleStyle() { if (!this._title.mapped) return; this._title.ensure_style(); const [, titleNatWidth] = this._title.get_preferred_width(-1); if (titleNatWidth > this.width) { if (this._updateTitleStyleLater) return; const laters = global.compositor.get_laters(); this._updateTitleStyleLater = laters.add(Meta.LaterType.BEFORE_REDRAW, () => { this._updateTitleStyleLater = 0; this._title.add_style_class_name('lightweight'); return GLib.SOURCE_REMOVE; }); } } set title(title) { if (this._title.text === title) return; _setLabel(this._title, title); this._title.remove_style_class_name('lightweight'); this._updateTitleStyle(); this.notify('title'); } set description(description) { if (this._description.text === description) return; _setLabel(this._description, description); this.notify('description'); } }); export const ListSection = GObject.registerClass({ Properties: { 'title': GObject.ParamSpec.string( 'title', null, null, GObject.ParamFlags.READWRITE | GObject.ParamFlags.CONSTRUCT, null), }, }, class ListSection extends St.BoxLayout { _init(params) { this._title = new St.Label({style_class: 'dialog-list-title'}); this.list = new St.BoxLayout({ style_class: 'dialog-list-box', vertical: true, }); this._listScrollView = new St.ScrollView({ style_class: 'dialog-list-scrollview', child: this.list, }); super._init({ style_class: 'dialog-list', x_expand: true, vertical: true, ...params, }); this.label_actor = this._title; this.add_child(this._title); this.add_child(this._listScrollView); } get title() { return this._title.text; } set title(title) { _setLabel(this._title, title); this.notify('title'); } }); export const ListSectionItem = GObject.registerClass({ Properties: { 'icon-actor': GObject.ParamSpec.object( 'icon-actor', null, null, GObject.ParamFlags.READWRITE, Clutter.Actor.$gtype), 'title': GObject.ParamSpec.string( 'title', null, null, GObject.ParamFlags.READWRITE | GObject.ParamFlags.CONSTRUCT, null), 'description': GObject.ParamSpec.string( 'description', null, null, GObject.ParamFlags.READWRITE | GObject.ParamFlags.CONSTRUCT, null), }, }, class ListSectionItem extends St.BoxLayout { _init(params) { this._iconActorBin = new St.Bin(); let textLayout = new St.BoxLayout({ vertical: true, y_expand: true, y_align: Clutter.ActorAlign.CENTER, }); this._title = new St.Label({style_class: 'dialog-list-item-title'}); this._description = new St.Label({ style_class: 'dialog-list-item-title-description', }); textLayout.add_child(this._title); textLayout.add_child(this._description); super._init({ style_class: 'dialog-list-item', ...params, }); this.label_actor = this._title; this.add_child(this._iconActorBin); this.add_child(textLayout); } get iconActor() { return this._iconActorBin.get_child(); } set iconActor(actor) { this._iconActorBin.set_child(actor); this.notify('icon-actor'); } get title() { return this._title.text; } set title(title) { _setLabel(this._title, title); this.notify('title'); } get description() { return this._description.text; } set description(description) { _setLabel(this._description, description); this.notify('description'); } }); 070701000001B1000081A40000000000000000000000016712993F000080A6000000000000000000000000000000000000001E00000000gnome-shell-47.1/js/ui/dnd.jsimport Clutter from 'gi://Clutter'; import GLib from 'gi://GLib'; import Meta from 'gi://Meta'; import Shell from 'gi://Shell'; import St from 'gi://St'; import * as Signals from '../misc/signals.js'; import * as Main from './main.js'; import * as Params from '../misc/params.js'; // Time to scale down to maxDragActorSize const SCALE_ANIMATION_TIME = 250; // Time to animate to original position on cancel const SNAP_BACK_ANIMATION_TIME = 250; // Time to animate to original position on success const REVERT_ANIMATION_TIME = 750; /** @enum {number} */ export const DragMotionResult = { NO_DROP: 0, COPY_DROP: 1, MOVE_DROP: 2, CONTINUE: 3, }; /** @enum {number} */ const DragState = { INIT: 0, DRAGGING: 1, CANCELLED: 2, }; const DRAG_CURSOR_MAP = { 0: Meta.Cursor.DND_UNSUPPORTED_TARGET, 1: Meta.Cursor.DND_COPY, 2: Meta.Cursor.DND_MOVE, }; export const DragDropResult = { FAILURE: 0, SUCCESS: 1, CONTINUE: 2, }; export const dragMonitors = []; let eventHandlerActor = null; let currentDraggable = null; function _getEventHandlerActor() { if (!eventHandlerActor) { eventHandlerActor = new Clutter.Actor({width: 0, height: 0, reactive: true}); Main.uiGroup.add_child(eventHandlerActor); // We connect to 'event' rather than 'captured-event' because the capturing phase doesn't happen // when you've grabbed the pointer. eventHandlerActor.connect('event', (actor, event) => { return currentDraggable._onEvent(actor, event); }); } return eventHandlerActor; } function _getRealActorScale(actor) { let scale = 1.0; while (actor) { scale *= actor.scale_x; actor = actor.get_parent(); } return scale; } /** * @typedef {object} DragMonitor * @property {Function} dragMotion */ /** * @param {DragMonitor} monitor */ export function addDragMonitor(monitor) { dragMonitors.push(monitor); } /** * @param {DragMonitor} monitor */ export function removeDragMonitor(monitor) { for (let i = 0; i < dragMonitors.length; i++) { if (dragMonitors[i] === monitor) { dragMonitors.splice(i, 1); return; } } } class _Draggable extends Signals.EventEmitter { constructor(actor, params) { super(); params = Params.parse(params, { manualMode: false, timeoutThreshold: 0, restoreOnSuccess: false, dragActorMaxSize: undefined, dragActorOpacity: undefined, }); this.actor = actor; this._dragState = DragState.INIT; if (!params.manualMode) { this.actor.connect('button-press-event', this._onButtonPress.bind(this)); this.actor.connect('touch-event', this._onTouchEvent.bind(this)); } this.actor.connect('destroy', () => { this._actorDestroyed = true; if (this._dragState === DragState.DRAGGING && this._dragCancellable) this._cancelDrag(global.get_current_time()); this.disconnectAll(); }); this._onEventId = null; this._touchSequence = null; this._restoreOnSuccess = params.restoreOnSuccess; this._dragActorMaxSize = params.dragActorMaxSize; this._dragActorOpacity = params.dragActorOpacity; this._dragTimeoutThreshold = params.timeoutThreshold; this._animationInProgress = false; // The drag is over and the item is in the process of animating to its original position (snapping back or reverting). this._dragCancellable = true; } /** * addClickAction: * * @param {Clutter.ClickAction} action - click action to add to draggable actor * * Add @action to the draggable's actor, and set it up so that it does not * impede drag operations. */ addClickAction(action) { action.connect('clicked', () => (this._actionClicked = true)); action.connect('long-press', (a, actor, state) => { if (state !== Clutter.LongPressState.CANCEL) return true; const event = Clutter.get_current_event(); this._dragTouchSequence = event.get_event_sequence(); if (this._longPressLater) return true; // A click cancels a long-press before any click handler is // run - make sure to not start a drag in that case const laters = global.compositor.get_laters(); this._longPressLater = laters.add(Meta.LaterType.BEFORE_REDRAW, () => { delete this._longPressLater; if (this._actionClicked) { delete this._actionClicked; return GLib.SOURCE_REMOVE; } action.release(); this.startDrag( ...action.get_coords(), event.get_time(), this._dragTouchSequence, event.get_device()); return GLib.SOURCE_REMOVE; }); return true; }); this.actor.add_action(action); } _onButtonPress(actor, event) { if (event.get_button() !== 1) return Clutter.EVENT_PROPAGATE; this._grabActor(event.get_device()); let [stageX, stageY] = event.get_coords(); this._dragStartX = stageX; this._dragStartY = stageY; this._dragStartTime = event.get_time(); this._dragThresholdIgnored = false; return Clutter.EVENT_PROPAGATE; } _onTouchEvent(actor, event) { // We only handle touch events here on wayland. On X11 // we do get emulated pointer events, which already works // for single-touch cases. Besides, the X11 passive touch grab // set up by Mutter will make us see first the touch events // and later the pointer events, so it will look like two // unrelated series of events, we want to avoid double handling // in these cases. if (!Meta.is_wayland_compositor()) return Clutter.EVENT_PROPAGATE; if (event.type() !== Clutter.EventType.TOUCH_BEGIN || !global.display.is_pointer_emulating_sequence(event.get_event_sequence())) return Clutter.EVENT_PROPAGATE; this._grabActor(event.get_device(), event.get_event_sequence()); this._dragStartTime = event.get_time(); this._dragThresholdIgnored = false; let [stageX, stageY] = event.get_coords(); this._dragStartX = stageX; this._dragStartY = stageY; return Clutter.EVENT_PROPAGATE; } _grabDevice(actor, pointer, touchSequence) { this._grab = global.stage.grab(actor); this._grabbedDevice = pointer; this._touchSequence = touchSequence; } _ungrabDevice() { if (this._grab) { this._grab.dismiss(); this._grab = null; } this._touchSequence = null; this._grabbedDevice = null; } _grabActor(device, touchSequence) { this._grabDevice(this.actor, device, touchSequence); this._onEventId = this.actor.connect('event', this._onEvent.bind(this)); } _ungrabActor() { if (!this._onEventId) return; this._ungrabDevice(); this.actor.disconnect(this._onEventId); this._onEventId = null; } _grabEvents(device, touchSequence) { if (!this._eventsGrab) { let grab = Main.pushModal(_getEventHandlerActor()); if ((grab.get_seat_state() & Clutter.GrabState.POINTER) !== 0) { this._grabDevice(_getEventHandlerActor(), device, touchSequence); this._eventsGrab = grab; } else { Main.popModal(grab); } } } _ungrabEvents() { if (this._eventsGrab) { this._ungrabDevice(); Main.popModal(this._eventsGrab); this._eventsGrab = null; } } _eventIsRelease(event) { if (event.type() === Clutter.EventType.BUTTON_RELEASE) { let buttonMask = Clutter.ModifierType.BUTTON1_MASK | Clutter.ModifierType.BUTTON2_MASK | Clutter.ModifierType.BUTTON3_MASK; /* We only obey the last button release from the device, * other buttons may get pressed/released during the DnD op. */ return (event.get_state() & buttonMask) === 0; } else if (event.type() === Clutter.EventType.TOUCH_END) { /* For touch, we only obey the pointer emulating sequence */ return global.display.is_pointer_emulating_sequence(event.get_event_sequence()); } return false; } _onEvent(actor, event) { let device = event.get_device(); if (this._grabbedDevice && device !== this._grabbedDevice && device.get_device_type() !== Clutter.InputDeviceType.KEYBOARD_DEVICE) return Clutter.EVENT_PROPAGATE; // We intercept BUTTON_RELEASE event to know that the button was released in case we // didn't start the drag, to drop the draggable in case the drag was in progress, and // to complete the drag and ensure that whatever happens to be under the pointer does // not get triggered if the drag was cancelled with Esc. if (this._eventIsRelease(event)) { if (this._dragState === DragState.DRAGGING) { return this._dragActorDropped(event); } else if ((this._dragActor != null || this._dragState === DragState.CANCELLED) && !this._animationInProgress) { // Drag must have been cancelled with Esc. this._dragComplete(); return Clutter.EVENT_STOP; } else { // Drag has never started. this._ungrabActor(); return Clutter.EVENT_PROPAGATE; } // We intercept MOTION event to figure out if the drag has started and to draw // this._dragActor under the pointer when dragging is in progress } else if (event.type() === Clutter.EventType.MOTION || (event.type() === Clutter.EventType.TOUCH_UPDATE && global.display.is_pointer_emulating_sequence(event.get_event_sequence()))) { if (this._dragActor && this._dragState === DragState.DRAGGING) return this._updateDragPosition(event); else if (this._dragActor == null && this._dragState !== DragState.CANCELLED) return this._maybeStartDrag(event); // We intercept KEY_PRESS event so that we can process Esc key press to cancel // dragging and ignore all other key presses. } else if (event.type() === Clutter.EventType.KEY_PRESS && this._dragState === DragState.DRAGGING) { let symbol = event.get_key_symbol(); if (symbol === Clutter.KEY_Escape) { this._cancelDrag(event.get_time()); return Clutter.EVENT_STOP; } } return Clutter.EVENT_PROPAGATE; } /** * Fake a release event. * Must be called if you want to intercept release events on draggable * actors for other purposes (for example if you're using * PopupMenu.ignoreRelease()) */ fakeRelease() { this._ungrabActor(); } /** * Directly initiate a drag and drop operation from the given actor. * This function is useful to call if you've specified manualMode * for the draggable. * * @param {number} stageX - X coordinate of event * @param {number} stageY - Y coordinate of event * @param {number} time - Event timestamp * @param {Clutter.EventSequence=} sequence - Event sequence * @param {Clutter.InputDevice=} device - device that originated the event */ startDrag(stageX, stageY, time, sequence, device) { if (currentDraggable) return; if (device === undefined) { let event = Clutter.get_current_event(); if (event) device = event.get_device(); if (device === undefined) { let seat = Clutter.get_default_backend().get_default_seat(); device = seat.get_pointer(); } } currentDraggable = this; this._dragState = DragState.DRAGGING; // Special-case St.Button: the pointer grab messes with the internal // state, so force a reset to a reasonable state here if (this.actor instanceof St.Button) { this.actor.fake_release(); this.actor.hover = false; } this.emit('drag-begin', time); if (this._onEventId) this._ungrabActor(); this._grabEvents(device, sequence); global.display.set_cursor(Meta.Cursor.DND_IN_DRAG); this._dragX = this._dragStartX = stageX; this._dragY = this._dragStartY = stageY; let scaledWidth, scaledHeight; if (this.actor._delegate && this.actor._delegate.getDragActor) { this._dragActor = this.actor._delegate.getDragActor(); Main.uiGroup.add_child(this._dragActor); Main.uiGroup.set_child_above_sibling(this._dragActor, null); Shell.util_set_hidden_from_pick(this._dragActor, true); // Drag actor does not always have to be the same as actor. For example drag actor // can be an image that's part of the actor. So to perform "snap back" correctly we need // to know what was the drag actor source. if (this.actor._delegate.getDragActorSource) { this._dragActorSource = this.actor._delegate.getDragActorSource(); // If the user dragged from the source, then position // the dragActor over it. Otherwise, center it // around the pointer let [sourceX, sourceY] = this._dragActorSource.get_transformed_position(); let x, y; if (stageX > sourceX && stageX <= sourceX + this._dragActor.width && stageY > sourceY && stageY <= sourceY + this._dragActor.height) { x = sourceX; y = sourceY; } else { x = stageX - this._dragActor.width / 2; y = stageY - this._dragActor.height / 2; } this._dragActor.set_position(x, y); this._dragActorSourceDestroyId = this._dragActorSource.connect('destroy', () => { this._dragActorSource = null; }); } else { this._dragActorSource = this.actor; } this._dragOrigParent = undefined; this._dragOffsetX = this._dragActor.x - this._dragStartX; this._dragOffsetY = this._dragActor.y - this._dragStartY; [scaledWidth, scaledHeight] = this._dragActor.get_transformed_size(); } else { this._dragActor = this.actor; this._dragActorSource = undefined; this._dragOrigParent = this.actor.get_parent(); this._dragActorHadFixedPos = this._dragActor.fixed_position_set; this._dragOrigX = this._dragActor.allocation.x1; this._dragOrigY = this._dragActor.allocation.y1; this._dragActorHadNatWidth = this._dragActor.natural_width_set; this._dragActorHadNatHeight = this._dragActor.natural_height_set; this._dragOrigWidth = this._dragActor.allocation.get_width(); this._dragOrigHeight = this._dragActor.allocation.get_height(); this._dragOrigScale = this._dragActor.scale_x; // Ensure actors with an allocation smaller than their natural size // retain their size this._dragActor.set_size(...this._dragActor.allocation.get_size()); const transformedExtents = this._dragActor.get_transformed_extents(); this._dragOffsetX = transformedExtents.origin.x - this._dragStartX; this._dragOffsetY = transformedExtents.origin.y - this._dragStartY; scaledWidth = transformedExtents.get_width(); scaledHeight = transformedExtents.get_height(); this._dragActor.scale_x = scaledWidth / this._dragOrigWidth; this._dragActor.scale_y = scaledHeight / this._dragOrigHeight; this._dragOrigParent.remove_child(this._dragActor); Main.uiGroup.add_child(this._dragActor); Main.uiGroup.set_child_above_sibling(this._dragActor, null); Shell.util_set_hidden_from_pick(this._dragActor, true); this._dragOrigParentDestroyId = this._dragOrigParent.connect('destroy', () => { this._dragOrigParent = null; }); } this._dragActorDestroyId = this._dragActor.connect('destroy', () => { // Cancel ongoing animation (if any) this._finishAnimation(); this._dragActor = null; if (this._dragState === DragState.DRAGGING) this._dragState = DragState.CANCELLED; }); this._dragOrigOpacity = this._dragActor.opacity; if (this._dragActorOpacity !== undefined) this._dragActor.opacity = this._dragActorOpacity; this._snapBackX = this._dragStartX + this._dragOffsetX; this._snapBackY = this._dragStartY + this._dragOffsetY; this._snapBackScale = this._dragActor.scale_x; let origDragOffsetX = this._dragOffsetX; let origDragOffsetY = this._dragOffsetY; let [transX, transY] = this._dragActor.get_translation(); this._dragOffsetX -= transX; this._dragOffsetY -= transY; this._dragActor.set_position( this._dragX + this._dragOffsetX, this._dragY + this._dragOffsetY); if (this._dragActorMaxSize !== undefined) { let currentSize = Math.max(scaledWidth, scaledHeight); if (currentSize > this._dragActorMaxSize) { let scale = this._dragActorMaxSize / currentSize; let origScale = this._dragActor.scale_x; // The position of the actor changes as we scale // around the drag position, but we can't just tween // to the final position because that tween would // fight with updates as the user continues dragging // the mouse; instead we do the position computations in // a ::new-frame handler. this._dragActor.ease({ scale_x: scale * origScale, scale_y: scale * origScale, duration: SCALE_ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => { this._updateActorPosition(origScale, origDragOffsetX, origDragOffsetY, transX, transY); }, }); this._dragActor.get_transition('scale-x').connect('new-frame', () => { this._updateActorPosition(origScale, origDragOffsetX, origDragOffsetY, transX, transY); }); } } } _updateActorPosition(origScale, origDragOffsetX, origDragOffsetY, transX, transY) { const currentScale = this._dragActor.scale_x / origScale; this._dragOffsetX = currentScale * origDragOffsetX - transX; this._dragOffsetY = currentScale * origDragOffsetY - transY; this._dragActor.set_position( this._dragX + this._dragOffsetX, this._dragY + this._dragOffsetY); } _maybeStartDrag(event) { let [stageX, stageY] = event.get_coords(); if (this._dragThresholdIgnored) return Clutter.EVENT_PROPAGATE; // See if the user has moved the mouse enough to trigger a drag let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor; let threshold = St.Settings.get().drag_threshold * scaleFactor; if (!currentDraggable && (Math.abs(stageX - this._dragStartX) > threshold || Math.abs(stageY - this._dragStartY) > threshold)) { const deviceType = event.get_source_device().get_device_type(); const isPointerOrTouchpad = deviceType === Clutter.InputDeviceType.POINTER_DEVICE || deviceType === Clutter.InputDeviceType.TOUCHPAD_DEVICE; const ellapsedTime = event.get_time() - this._dragStartTime; // Pointer devices (e.g. mouse) start the drag immediately if (isPointerOrTouchpad || ellapsedTime > this._dragTimeoutThreshold) { this.startDrag(stageX, stageY, event.get_time(), this._touchSequence, event.get_device()); this._updateDragPosition(event); } else { this._dragThresholdIgnored = true; this._ungrabActor(); return Clutter.EVENT_PROPAGATE; } } return Clutter.EVENT_STOP; } _pickTargetActor() { return this._dragActor.get_stage().get_actor_at_pos( Clutter.PickMode.ALL, this._dragX, this._dragY); } _updateDragHover() { this._updateHoverId = 0; let target = this._pickTargetActor(); let dragEvent = { x: this._dragX, y: this._dragY, dragActor: this._dragActor, source: this.actor._delegate, targetActor: target, }; let targetActorDestroyHandlerId; let handleTargetActorDestroyClosure; handleTargetActorDestroyClosure = () => { target = this._pickTargetActor(); dragEvent.targetActor = target; targetActorDestroyHandlerId = target.connect('destroy', handleTargetActorDestroyClosure); }; targetActorDestroyHandlerId = target.connect('destroy', handleTargetActorDestroyClosure); for (let i = 0; i < dragMonitors.length; i++) { let motionFunc = dragMonitors[i].dragMotion; if (motionFunc) { let result = motionFunc(dragEvent); if (result !== DragMotionResult.CONTINUE) { global.display.set_cursor(DRAG_CURSOR_MAP[result]); dragEvent.targetActor.disconnect(targetActorDestroyHandlerId); return GLib.SOURCE_REMOVE; } } } dragEvent.targetActor.disconnect(targetActorDestroyHandlerId); while (target) { if (target._delegate && target._delegate.handleDragOver) { let [r_, targX, targY] = target.transform_stage_point(this._dragX, this._dragY); // We currently loop through all parents on drag-over even if one of the children has handled it. // We can check the return value of the function and break the loop if it's true if we don't want // to continue checking the parents. let result = target._delegate.handleDragOver( this.actor._delegate, this._dragActor, targX, targY, 0); if (result !== DragMotionResult.CONTINUE) { global.display.set_cursor(DRAG_CURSOR_MAP[result]); return GLib.SOURCE_REMOVE; } } target = target.get_parent(); } global.display.set_cursor(Meta.Cursor.DND_IN_DRAG); return GLib.SOURCE_REMOVE; } _queueUpdateDragHover() { if (this._updateHoverId) return; this._updateHoverId = GLib.idle_add(GLib.PRIORITY_DEFAULT, this._updateDragHover.bind(this)); GLib.Source.set_name_by_id(this._updateHoverId, '[gnome-shell] this._updateDragHover'); } _updateDragPosition(event) { let [stageX, stageY] = event.get_coords(); this._dragX = stageX; this._dragY = stageY; this._dragActor.set_position( stageX + this._dragOffsetX, stageY + this._dragOffsetY); this._queueUpdateDragHover(); return true; } _dragActorDropped(event) { let [dropX, dropY] = event.get_coords(); let target = this._dragActor.get_stage().get_actor_at_pos( Clutter.PickMode.ALL, dropX, dropY); // We call observers only once per motion with the innermost // target actor. If necessary, the observer can walk the // parent itself. let dropEvent = { dropActor: this._dragActor, targetActor: target, clutterEvent: event, }; for (let i = 0; i < dragMonitors.length; i++) { let dropFunc = dragMonitors[i].dragDrop; if (dropFunc) { switch (dropFunc(dropEvent)) { case DragDropResult.FAILURE: case DragDropResult.SUCCESS: return true; case DragDropResult.CONTINUE: continue; } } } // At this point it is too late to cancel a drag by destroying // the actor, the fate of which is decided by acceptDrop and its // side-effects this._dragCancellable = false; while (target) { if (target._delegate && target._delegate.acceptDrop) { let [r_, targX, targY] = target.transform_stage_point(dropX, dropY); let accepted = false; try { accepted = target._delegate.acceptDrop(this.actor._delegate, this._dragActor, targX, targY, event.get_time()); } catch (e) { // On error, skip this target logError(e, 'Skipping drag target'); } if (accepted) { // If it accepted the drop without taking the actor, // handle it ourselves. if (this._dragActor && this._dragActor.get_parent() === Main.uiGroup) { if (this._restoreOnSuccess) { this._restoreDragActor(event.get_time()); return true; } else { this._dragActor.destroy(); } } this._dragState = DragState.INIT; global.display.set_cursor(Meta.Cursor.DEFAULT); this.emit('drag-end', event.get_time(), true); this._dragComplete(); return true; } } target = target.get_parent(); } this._cancelDrag(event.get_time()); return true; } _getRestoreLocation() { let x, y, scale; if (this._dragActorSource && this._dragActorSource.visible) { // Snap the clone back to its source [x, y] = this._dragActorSource.get_transformed_position(); let [sourceScaledWidth] = this._dragActorSource.get_transformed_size(); scale = sourceScaledWidth ? sourceScaledWidth / this._dragActor.width : 0; } else if (this._dragOrigParent) { // Snap the actor back to its original position within // its parent, adjusting for the fact that the parent // may have been moved or scaled let [parentX, parentY] = this._dragOrigParent.get_transformed_position(); let parentScale = _getRealActorScale(this._dragOrigParent); x = parentX + parentScale * this._dragOrigX; y = parentY + parentScale * this._dragOrigY; scale = this._dragOrigScale * parentScale; } else { // Snap back actor to its original stage position x = this._snapBackX; y = this._snapBackY; scale = this._snapBackScale; } return [x, y, scale]; } _cancelDrag(eventTime) { this.emit('drag-cancelled', eventTime); let wasCancelled = this._dragState === DragState.CANCELLED; this._dragState = DragState.CANCELLED; if (this._actorDestroyed || wasCancelled) { global.display.set_cursor(Meta.Cursor.DEFAULT); this._dragComplete(); this.emit('drag-end', eventTime, false); if (!this._dragOrigParent && this._dragActor) this._dragActor.destroy(); return; } let [snapBackX, snapBackY, snapBackScale] = this._getRestoreLocation(); this._animateDragEnd(eventTime, { x: snapBackX, y: snapBackY, scale_x: snapBackScale, scale_y: snapBackScale, duration: SNAP_BACK_ANIMATION_TIME, }); } _restoreDragActor(eventTime) { this._dragState = DragState.INIT; let [restoreX, restoreY, restoreScale] = this._getRestoreLocation(); // fade the actor back in at its original location this._dragActor.set_position(restoreX, restoreY); this._dragActor.set_scale(restoreScale, restoreScale); this._dragActor.opacity = 0; this._animateDragEnd(eventTime, { duration: REVERT_ANIMATION_TIME, }); } _animateDragEnd(eventTime, params) { this._animationInProgress = true; // start the animation this._dragActor.ease({ ...params, opacity: this._dragOrigOpacity, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => { this._onAnimationComplete(this._dragActor, eventTime); }, }); } _finishAnimation() { if (!this._animationInProgress) return; this._animationInProgress = false; this._dragComplete(); global.display.set_cursor(Meta.Cursor.DEFAULT); } _onAnimationComplete(dragActor, eventTime) { if (this._dragOrigParent) { Main.uiGroup.remove_child(this._dragActor); this._dragOrigParent.add_child(this._dragActor); dragActor.set_scale(this._dragOrigScale, this._dragOrigScale); if (this._dragActorHadFixedPos) dragActor.set_position(this._dragOrigX, this._dragOrigY); else dragActor.fixed_position_set = false; if (this._dragActorHadNatWidth) this._dragActor.set_width(-1); if (this._dragActorHadNatHeight) this._dragActor.set_height(-1); } else { dragActor.destroy(); } this.emit('drag-end', eventTime, false); this._finishAnimation(); } _dragComplete() { if (!this._actorDestroyed && this._dragActor) Shell.util_set_hidden_from_pick(this._dragActor, false); this._ungrabEvents(); if (this._updateHoverId) { GLib.source_remove(this._updateHoverId); this._updateHoverId = 0; } if (this._dragActor) { this._dragActor.disconnect(this._dragActorDestroyId); this._dragActor = null; } if (this._dragOrigParent) { this._dragOrigParent.disconnect(this._dragOrigParentDestroyId); this._dragOrigParent = null; } if (this._dragActorSource) { this._dragActorSource.disconnect(this._dragActorSourceDestroyId); this._dragActorSource = null; } this._dragState = DragState.INIT; currentDraggable = null; } } /** * Create an object which controls drag and drop for the given actor. * * If %manualMode is %true in @params, do not automatically start * drag and drop on click * * If %dragActorMaxSize is present in @params, the drag actor will * be scaled down to be no larger than that size in pixels. * * If %dragActorOpacity is present in @params, the drag actor will * will be set to have that opacity during the drag. * * Note that when the drag actor is the source actor and the drop * succeeds, the actor scale and opacity aren't reset; if the drop * target wants to reuse the actor, it's up to the drop target to * reset these values. * * @param {Clutter.Actor} actor Source actor * @param {object} [params] Additional parameters * @returns {_Draggable} a new Draggable */ export function makeDraggable(actor, params) { return new _Draggable(actor, params); } 070701000001B2000081A40000000000000000000000016712993F00000C24000000000000000000000000000000000000002900000000gnome-shell-47.1/js/ui/edgeDragAction.jsimport Clutter from 'gi://Clutter'; import GObject from 'gi://GObject'; import Mtk from 'gi://Mtk'; import St from 'gi://St'; import * as Main from './main.js'; const EDGE_THRESHOLD = 20; const DRAG_DISTANCE = 80; export const EdgeDragAction = GObject.registerClass({ Signals: { 'activated': {}, 'progress': {param_types: [GObject.TYPE_DOUBLE]}, }, }, class EdgeDragAction extends Clutter.GestureAction { _init(side, allowedModes) { super._init(); this._side = side; this._allowedModes = allowedModes; this.set_n_touch_points(1); this.set_threshold_trigger_edge(Clutter.GestureTriggerEdge.AFTER); } _getMonitorRect(x, y) { const rect = new Mtk.Rectangle({x: x - 1, y: y - 1, width: 1, height: 1}); let monitorIndex = global.display.get_monitor_index_for_rect(rect); return global.display.get_monitor_geometry(monitorIndex); } vfunc_gesture_prepare(_actor) { if (this.get_n_current_points() === 0) return false; if (!(this._allowedModes & Main.actionMode)) return false; let [x, y] = this.get_press_coords(0); let monitorRect = this._getMonitorRect(x, y); return (this._side === St.Side.LEFT && x < monitorRect.x + EDGE_THRESHOLD) || (this._side === St.Side.RIGHT && x > monitorRect.x + monitorRect.width - EDGE_THRESHOLD) || (this._side === St.Side.TOP && y < monitorRect.y + EDGE_THRESHOLD) || (this._side === St.Side.BOTTOM && y > monitorRect.y + monitorRect.height - EDGE_THRESHOLD); } vfunc_gesture_progress(_actor) { let [startX, startY] = this.get_press_coords(0); let [x, y] = this.get_motion_coords(0); let offsetX = Math.abs(x - startX); let offsetY = Math.abs(y - startY); if (offsetX < EDGE_THRESHOLD && offsetY < EDGE_THRESHOLD) return true; if ((offsetX > offsetY && (this._side === St.Side.TOP || this._side === St.Side.BOTTOM)) || (offsetY > offsetX && (this._side === St.Side.LEFT || this._side === St.Side.RIGHT))) { this.cancel(); return false; } if (this._side === St.Side.TOP || this._side === St.Side.BOTTOM) this.emit('progress', offsetY); else this.emit('progress', offsetX); return true; } vfunc_gesture_end(_actor) { let [startX, startY] = this.get_press_coords(0); let [x, y] = this.get_motion_coords(0); let monitorRect = this._getMonitorRect(startX, startY); if ((this._side === St.Side.TOP && y > monitorRect.y + DRAG_DISTANCE) || (this._side === St.Side.BOTTOM && y < monitorRect.y + monitorRect.height - DRAG_DISTANCE) || (this._side === St.Side.LEFT && x > monitorRect.x + DRAG_DISTANCE) || (this._side === St.Side.RIGHT && x < monitorRect.x + monitorRect.width - DRAG_DISTANCE)) this.emit('activated'); else this.cancel(); } }); 070701000001B3000081A40000000000000000000000016712993F00006CBE000000000000000000000000000000000000002B00000000gnome-shell-47.1/js/ui/endSessionDialog.js/* * Copyright 2010-2016 Red Hat, Inc * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see . */ import AccountsService from 'gi://AccountsService'; import Clutter from 'gi://Clutter'; import Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import Pango from 'gi://Pango'; import Polkit from 'gi://Polkit'; import Shell from 'gi://Shell'; import St from 'gi://St'; import UPower from 'gi://UPowerGlib'; import * as CheckBox from './checkBox.js'; import * as Dialog from './dialog.js'; import * as GnomeSession from '../misc/gnomeSession.js'; import * as LoginManager from '../misc/loginManager.js'; import * as ModalDialog from './modalDialog.js'; import * as UserWidget from './userWidget.js'; import {ModalDialogErrors, ModalDialogError} from '../misc/dbusErrors.js'; import {loadInterfaceXML} from '../misc/fileUtils.js'; const _ITEM_ICON_SIZE = 64; const LOW_BATTERY_THRESHOLD = 30; const EndSessionDialogIface = loadInterfaceXML('org.gnome.SessionManager.EndSessionDialog'); const logoutDialogContent = { subjectWithUser: C_('title', 'Log Out %s'), subject: C_('title', 'Log Out'), descriptionWithUser(user, seconds) { return ngettext( '%s will be logged out automatically in %d second', '%s will be logged out automatically in %d seconds', seconds).format(user, seconds); }, description(seconds) { return ngettext( 'You will be logged out automatically in %d second', 'You will be logged out automatically in %d seconds', seconds).format(seconds); }, showBatteryWarning: false, confirmButtons: [{ signal: 'ConfirmedLogout', label: C_('button', 'Log Out'), }], showOtherSessions: false, }; const shutdownDialogContent = { subject: C_('title', 'Power Off'), subjectWithUpdates: C_('title', 'Install Updates & Power Off'), description(seconds) { return ngettext( 'The system will power off automatically in %d second', 'The system will power off automatically in %d seconds', seconds).format(seconds); }, checkBoxText: C_('checkbox', 'Install pending software updates'), showBatteryWarning: true, confirmButtons: [{ signal: 'ConfirmedShutdown', label: C_('button', 'Power Off'), }], iconName: 'system-shutdown-symbolic', showOtherSessions: true, }; const restartDialogContent = { subject: C_('title', 'Restart'), subjectWithUpdates: C_('title', 'Install Updates & Restart'), description(seconds) { return ngettext( 'The system will restart automatically in %d second', 'The system will restart automatically in %d seconds', seconds).format(seconds); }, checkBoxText: C_('checkbox', 'Install pending software updates'), showBatteryWarning: true, confirmButtons: [{ signal: 'ConfirmedReboot', label: C_('button', 'Restart'), }], iconName: 'view-refresh-symbolic', showOtherSessions: true, }; const restartUpdateDialogContent = { subject: C_('title', 'Restart & Install Updates'), description(seconds) { return ngettext( 'The system will automatically restart and install updates in %d second', 'The system will automatically restart and install updates in %d seconds', seconds).format(seconds); }, showBatteryWarning: true, confirmButtons: [{ signal: 'ConfirmedReboot', label: C_('button', 'Restart & Install'), }], unusedFutureButtonForTranslation: C_('button', 'Install & Power Off'), unusedFutureCheckBoxForTranslation: C_('checkbox', 'Power off after updates are installed'), iconName: 'view-refresh-symbolic', showOtherSessions: true, }; const restartUpgradeDialogContent = { subject: C_('title', 'Restart & Install Upgrade'), upgradeDescription(distroName, distroVersion) { /* Translators: This is the text displayed for system upgrades in the shut down dialog. First %s gets replaced with the distro name and second %s with the distro version to upgrade to */ return _('%s %s will be installed after restart. Upgrade installation can take a long time: ensure that you have backed up and that the computer is plugged in.').format(distroName, distroVersion); }, disableTimer: true, showBatteryWarning: false, confirmButtons: [{ signal: 'ConfirmedReboot', label: C_('button', 'Restart & Install'), }], iconName: 'view-refresh-symbolic', showOtherSessions: true, }; const DialogType = { LOGOUT: 0 /* GSM_SHELL_END_SESSION_DIALOG_TYPE_LOGOUT */, SHUTDOWN: 1 /* GSM_SHELL_END_SESSION_DIALOG_TYPE_SHUTDOWN */, RESTART: 2 /* GSM_SHELL_END_SESSION_DIALOG_TYPE_RESTART */, UPDATE_RESTART: 3, UPGRADE_RESTART: 4, }; const DialogContent = { 0 /* DialogType.LOGOUT */: logoutDialogContent, 1 /* DialogType.SHUTDOWN */: shutdownDialogContent, 2 /* DialogType.RESTART */: restartDialogContent, 3 /* DialogType.UPDATE_RESTART */: restartUpdateDialogContent, 4 /* DialogType.UPGRADE_RESTART */: restartUpgradeDialogContent, }; const MAX_USERS_IN_SESSION_DIALOG = 5; const LogindSessionIface = loadInterfaceXML('org.freedesktop.login1.Session'); const LogindSession = Gio.DBusProxy.makeProxyWrapper(LogindSessionIface); const PkOfflineIface = loadInterfaceXML('org.freedesktop.PackageKit.Offline'); const PkOfflineProxy = Gio.DBusProxy.makeProxyWrapper(PkOfflineIface); const UPowerIface = loadInterfaceXML('org.freedesktop.UPower.Device'); const UPowerProxy = Gio.DBusProxy.makeProxyWrapper(UPowerIface); function findAppFromInhibitor(inhibitor) { let desktopFile; try { [desktopFile] = inhibitor.GetAppIdSync(); } catch (e) { // XXX -- sometimes JIT inhibitors generated by gnome-session // get removed too soon. Don't fail in this case. log(`gnome-session gave us a dead inhibitor: ${inhibitor.get_object_path()}`); return null; } if (!GLib.str_has_suffix(desktopFile, '.desktop')) desktopFile += '.desktop'; return Shell.AppSystem.get_default().lookup_heuristic_basename(desktopFile); } // The logout timer only shows updates every 10 seconds // until the last 10 seconds, then it shows updates every // second. This function takes a given time and returns // what we should show to the user for that time. function _roundSecondsToInterval(totalSeconds, secondsLeft, interval) { let time; time = Math.ceil(secondsLeft); // Final count down is in decrements of 1 if (time <= interval) return time; // Round up higher than last displayable time interval time += interval - 1; // Then round down to that time interval if (time > totalSeconds) time = Math.ceil(totalSeconds); else time -= time % interval; return time; } function _setCheckBoxLabel(checkBox, text) { let label = checkBox.getLabelActor(); if (text) { label.set_text(text); checkBox.show(); } else { label.set_text(''); checkBox.hide(); } } export const EndSessionDialog = GObject.registerClass( class EndSessionDialog extends ModalDialog.ModalDialog { _init() { super._init({ styleClass: 'end-session-dialog', destroyOnClose: false, }); this._loginManager = LoginManager.getLoginManager(); this._canRebootToBootLoaderMenu = false; this._getCanRebootToBootLoaderMenu().catch(logError); this._userManager = AccountsService.UserManager.get_default(); this._user = this._userManager.get_user(GLib.get_user_name()); this._updatesPermission = null; this._pkOfflineProxy = new PkOfflineProxy(Gio.DBus.system, 'org.freedesktop.PackageKit', '/org/freedesktop/PackageKit', this._onPkOfflineProxyCreated.bind(this)); this._powerProxy = new UPowerProxy(Gio.DBus.system, 'org.freedesktop.UPower', '/org/freedesktop/UPower/devices/DisplayDevice', (proxy, error) => { if (error) { log(error.message); return; } this._powerProxy.connect('g-properties-changed', this._sync.bind(this)); this._sync(); }); this._secondsLeft = 0; this._totalSecondsToStayOpen = 0; this._applications = []; this._sessions = []; this._capturedEventId = 0; this._rebootButton = null; this._rebootButtonAlt = null; this.connect('opened', this._onOpened.bind(this)); this._user.connectObject( 'notify::is-loaded', this._sync.bind(this), 'changed', this._sync.bind(this), this); this._messageDialogContent = new Dialog.MessageDialogContent(); this._checkBox = new CheckBox.CheckBox(); this._checkBox.connect('clicked', this._sync.bind(this)); this._messageDialogContent.add_child(this._checkBox); this._batteryWarning = new St.Label({ style_class: 'end-session-dialog-battery-warning', text: _('Low battery power: please plug in before installing updates'), }); this._batteryWarning.clutter_text.ellipsize = Pango.EllipsizeMode.NONE; this._batteryWarning.clutter_text.line_wrap = true; this._messageDialogContent.add_child(this._batteryWarning); this.contentLayout.add_child(this._messageDialogContent); this._applicationSection = new Dialog.ListSection({ title: _('Some applications are busy or have unsaved work'), }); this.contentLayout.add_child(this._applicationSection); this._sessionSection = new Dialog.ListSection({ title: _('Other users are logged in'), }); this.contentLayout.add_child(this._sessionSection); this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(EndSessionDialogIface, this); this._dbusImpl.export(Gio.DBus.session, '/org/gnome/SessionManager/EndSessionDialog'); } async _getCanRebootToBootLoaderMenu() { const {canRebootToBootLoaderMenu} = await this._loginManager.canRebootToBootLoaderMenu(); this._canRebootToBootLoaderMenu = canRebootToBootLoaderMenu; } async _onPkOfflineProxyCreated(proxy, error) { if (error) { log(error.message); return; } // Creating a D-Bus proxy won't propagate SERVICE_UNKNOWN or NAME_HAS_NO_OWNER // errors if PackageKit is not available, but the GIO implementation will make // sure in that case that the proxy's g-name-owner is set to null, so check that. if (this._pkOfflineProxy.g_name_owner === null) { this._pkOfflineProxy = null; return; } // It only makes sense to check for this permission if PackageKit is available. try { this._updatesPermission = await Polkit.Permission.new( 'org.freedesktop.packagekit.trigger-offline-update', null, null); } catch (e) { log(`No permission to trigger offline updates: ${e}`); } } _isDischargingBattery() { return this._powerProxy.IsPresent && this._powerProxy.State !== UPower.DeviceState.CHARGING && this._powerProxy.State !== UPower.DeviceState.FULLY_CHARGED; } _isBatteryLow() { return this._isDischargingBattery() && this._powerProxy.Percentage < LOW_BATTERY_THRESHOLD; } _shouldShowLowBatteryWarning(dialogContent) { if (!dialogContent.showBatteryWarning) return false; if (!this._isBatteryLow()) return false; if (this._checkBox.checked) return true; // Show the warning if updates have already been triggered, but // the user doesn't have enough permissions to cancel them. let updatesAllowed = this._updatesPermission && this._updatesPermission.allowed; return this._updateInfo.UpdatePrepared && this._updateInfo.UpdateTriggered && !updatesAllowed; } _sync() { let open = this.state === ModalDialog.State.OPENING || this.state === ModalDialog.State.OPENED; if (!open) return; let dialogContent = DialogContent[this._type]; let subject = dialogContent.subject; // Use different title when we are installing updates if (dialogContent.subjectWithUpdates && this._checkBox.checked) subject = dialogContent.subjectWithUpdates; this._batteryWarning.visible = this._shouldShowLowBatteryWarning(dialogContent); let description; let displayTime = _roundSecondsToInterval( this._totalSecondsToStayOpen, this._secondsLeft, 10); if (this._user.is_loaded) { let realName = this._user.get_real_name(); if (realName != null) { if (dialogContent.subjectWithUser) subject = dialogContent.subjectWithUser.format(realName); if (dialogContent.descriptionWithUser) description = dialogContent.descriptionWithUser(realName, displayTime); } } // Use a different description when we are installing a system upgrade // if the PackageKit proxy is available (i.e. PackageKit is available). if (dialogContent.upgradeDescription) { const {name, version} = this._updateInfo.PreparedUpgrade; if (name != null && version != null) description = dialogContent.upgradeDescription(name, version); } // Fall back to regular description if (!description) description = dialogContent.description(displayTime); this._messageDialogContent.title = subject; this._messageDialogContent.description = description; let hasApplications = this._applications.length > 0; let hasSessions = this._sessions.length > 0; this._applicationSection.visible = hasApplications; this._sessionSection.visible = hasSessions; } _onCapturedEvent(actor, event) { let altEnabled = false; let type = event.type(); if (type !== Clutter.EventType.KEY_PRESS && type !== Clutter.EventType.KEY_RELEASE) return Clutter.EVENT_PROPAGATE; let key = event.get_key_symbol(); if (key !== Clutter.KEY_Alt_L && key !== Clutter.KEY_Alt_R) return Clutter.EVENT_PROPAGATE; if (type === Clutter.EventType.KEY_PRESS) altEnabled = true; this._rebootButton.visible = !altEnabled; this._rebootButtonAlt.visible = altEnabled; return Clutter.EVENT_PROPAGATE; } _updateButtons() { this.clearButtons(); this.addButton({ action: this.cancel.bind(this), label: _('Cancel'), key: Clutter.KEY_Escape, }); let dialogContent = DialogContent[this._type]; for (let i = 0; i < dialogContent.confirmButtons.length; i++) { let signal = dialogContent.confirmButtons[i].signal; let label = dialogContent.confirmButtons[i].label; let button = this.addButton({ action: () => { let signalId = this.connect('closed', () => { this.disconnect(signalId); this._confirm(signal).catch(logError); }); this.close(true); }, label, }); // Add Alt "Boot Options" option to the Reboot button if (this._canRebootToBootLoaderMenu && signal === 'ConfirmedReboot') { this._rebootButton = button; this._rebootButtonAlt = this.addButton({ action: () => { this.close(true); let signalId = this.connect('closed', () => { this.disconnect(signalId); this._confirmRebootToBootLoaderMenu(); }); }, label: C_('button', 'Boot Options'), }); this._rebootButtonAlt.visible = false; this._capturedEventId = this.connect('captured-event', this._onCapturedEvent.bind(this)); } } } _stopAltCapture() { if (this._capturedEventId > 0) { this.disconnect(this._capturedEventId); this._capturedEventId = 0; } this._rebootButton = null; this._rebootButtonAlt = null; } close(skipSignal) { super.close(); if (!skipSignal) this._dbusImpl.emit_signal('Closed', null); } cancel() { this._stopTimer(); this._stopAltCapture(); this._dbusImpl.emit_signal('Canceled', null); this.close(); } _confirmRebootToBootLoaderMenu() { this._loginManager.setRebootToBootLoaderMenu(); this._confirm('ConfirmedReboot').catch(logError); } async _confirm(signal) { if (this._checkBox.visible) { // Trigger the offline update as requested if (this._checkBox.checked) { switch (signal) { case 'ConfirmedReboot': await this._triggerOfflineUpdateReboot(); break; case 'ConfirmedShutdown': // To actually trigger the offline update, we need to // reboot to do the upgrade. When the upgrade is complete, // the computer will shut down automatically. signal = 'ConfirmedReboot'; await this._triggerOfflineUpdateShutdown(); break; default: break; } } else { await this._triggerOfflineUpdateCancel(); } } this._fadeOutDialog(); this._stopTimer(); this._stopAltCapture(); this._dbusImpl.emit_signal(signal, null); } _onOpened() { this._sync(); } async _triggerOfflineUpdateReboot() { // Handle this gracefully if PackageKit is not available. if (!this._pkOfflineProxy) return; try { await this._pkOfflineProxy.TriggerAsync('reboot'); } catch (error) { log(error.message); } } async _triggerOfflineUpdateShutdown() { // Handle this gracefully if PackageKit is not available. if (!this._pkOfflineProxy) return; try { await this._pkOfflineProxy.TriggerAsync('power-off'); } catch (error) { log(error.message); } } async _triggerOfflineUpdateCancel() { // Handle this gracefully if PackageKit is not available. if (!this._pkOfflineProxy) return; try { await this._pkOfflineProxy.CancelAsync(); } catch (error) { log(error.message); } } _startTimer() { let startTime = GLib.get_monotonic_time(); this._secondsLeft = this._totalSecondsToStayOpen; this._timerId = GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, 1, () => { let currentTime = GLib.get_monotonic_time(); let secondsElapsed = (currentTime - startTime) / 1000000; this._secondsLeft = this._totalSecondsToStayOpen - secondsElapsed; if (this._secondsLeft > 0) { this._sync(); return GLib.SOURCE_CONTINUE; } let dialogContent = DialogContent[this._type]; let button = dialogContent.confirmButtons[dialogContent.confirmButtons.length - 1]; this._confirm(button.signal).catch(logError); this._timerId = 0; return GLib.SOURCE_REMOVE; }); GLib.Source.set_name_by_id(this._timerId, '[gnome-shell] this._confirm'); } _stopTimer() { if (this._timerId > 0) { GLib.source_remove(this._timerId); this._timerId = 0; } this._secondsLeft = 0; } _onInhibitorLoaded(inhibitor) { if (!this._applications.includes(inhibitor)) { // Stale inhibitor return; } let app = findAppFromInhibitor(inhibitor); const [flags] = app ? inhibitor.GetFlagsSync() : [0]; if (app && flags & GnomeSession.InhibitFlags.LOGOUT) { let [description] = inhibitor.GetReasonSync(); let listItem = new Dialog.ListSectionItem({ icon_actor: app.create_icon_texture(_ITEM_ICON_SIZE), title: app.get_name(), description, }); this._applicationSection.list.add_child(listItem); } else { // inhibiting app is a service (not an application) or is not // inhibiting logout/shutdown this._applications.splice(this._applications.indexOf(inhibitor), 1); } this._sync(); } async _loadSessions() { let sessionId = GLib.getenv('XDG_SESSION_ID'); if (!sessionId) { const currentSessionProxy = await this._loginManager.getCurrentSessionProxy(); sessionId = currentSessionProxy.Id; log(`endSessionDialog: No XDG_SESSION_ID, fetched from logind: ${sessionId}`); } const sessions = await this._loginManager.listSessions(); for (const [id_, uid_, userName, seat_, sessionPath] of sessions) { let proxy = new LogindSession(Gio.DBus.system, 'org.freedesktop.login1', sessionPath); if (proxy.Class !== 'user') continue; if (proxy.State === 'closing') continue; if (proxy.Id === sessionId) continue; const session = { user: this._userManager.get_user(userName), username: userName, type: proxy.Type, remote: proxy.Remote, }; const nSessions = this._sessions.push(session); let userAvatar = new UserWidget.Avatar(session.user, { iconSize: _ITEM_ICON_SIZE, }); userAvatar.update(); const displayUserName = session.user.get_real_name() ?? session.username; let userLabelText; if (session.remote) /* Translators: Remote here refers to a remote session, like a ssh login */ userLabelText = _('%s (remote)').format(displayUserName); else if (session.type === 'tty') /* Translators: Console here refers to a tty like a VT console */ userLabelText = _('%s (console)').format(displayUserName); else userLabelText = userName; let listItem = new Dialog.ListSectionItem({ icon_actor: userAvatar, title: userLabelText, }); this._sessionSection.list.add_child(listItem); // limit the number of entries if (nSessions === MAX_USERS_IN_SESSION_DIALOG) break; } this._sync(); } async _getUpdateInfo() { const connection = this._pkOfflineProxy.get_connection(); const reply = await connection.call( this._pkOfflineProxy.g_name, this._pkOfflineProxy.g_object_path, 'org.freedesktop.DBus.Properties', 'GetAll', new GLib.Variant('(s)', [this._pkOfflineProxy.g_interface_name]), null, Gio.DBusCallFlags.NONE, -1, null); const [info] = reply.recursiveUnpack(); return info; } async OpenAsync(parameters, invocation) { let [type, timestamp_, totalSecondsToStayOpen, inhibitorObjectPaths] = parameters; this._totalSecondsToStayOpen = totalSecondsToStayOpen; this._type = type; try { this._updateInfo = await this._getUpdateInfo(); } catch (e) { if (this._pkOfflineProxy !== null) log(`Failed to get update info from PackageKit: ${e.message}`); this._updateInfo = { UpdateTriggered: false, UpdatePrepared: false, UpgradeTriggered: false, PreparedUpgrade: {}, }; } // Only consider updates and upgrades if PackageKit is available. if (this._pkOfflineProxy && this._type === DialogType.RESTART) { if (this._updateInfo.UpdateTriggered) this._type = DialogType.UPDATE_RESTART; else if (this._updateInfo.UpgradeTriggered) this._type = DialogType.UPGRADE_RESTART; } this._applications = []; this._applicationSection.list.destroy_all_children(); this._sessions = []; this._sessionSection.list.destroy_all_children(); if (!(this._type in DialogContent)) { invocation.return_error_literal(ModalDialogErrors, ModalDialogError.UNKNOWN_TYPE, 'Unknown dialog type requested'); return; } let dialogContent = DialogContent[this._type]; for (let i = 0; i < inhibitorObjectPaths.length; i++) { let inhibitor = new GnomeSession.Inhibitor(inhibitorObjectPaths[i], proxy => { this._onInhibitorLoaded(proxy); }); this._applications.push(inhibitor); } if (dialogContent.showOtherSessions) this._loadSessions().catch(logError); let updatesAllowed = this._updatesPermission && this._updatesPermission.allowed; _setCheckBoxLabel(this._checkBox, dialogContent.checkBoxText || ''); this._checkBox.visible = dialogContent.checkBoxText && this._updateInfo.UpdatePrepared && updatesAllowed; if (this._type === DialogType.UPGRADE_RESTART) this._checkBox.checked = this._checkBox.visible && this._updateInfo.UpdateTriggered && !this._isDischargingBattery(); else this._checkBox.checked = this._checkBox.visible && !this._isBatteryLow(); this._batteryWarning.visible = this._shouldShowLowBatteryWarning(dialogContent); this._updateButtons(); if (!this.open()) { invocation.return_error_literal( ModalDialogError.GRAB_FAILED, 'Cannot grab pointer and keyboard'); return; } if (!dialogContent.disableTimer) this._startTimer(); this._sync(); let signalId = this.connect('opened', () => { invocation.return_value(null); this.disconnect(signalId); }); } Close(_parameters, _invocation) { this.close(); } }); 070701000001B4000081A40000000000000000000000016712993F0000311C000000000000000000000000000000000000002600000000gnome-shell-47.1/js/ui/environment.js// Load all required dependencies with the correct versions import '../misc/dependencies.js'; import {setConsoleLogDomain} from 'console'; import * as Gettext from 'gettext'; import Cairo from 'cairo'; import Clutter from 'gi://Clutter'; import Gdk from 'gi://Gdk'; import Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import Meta from 'gi://Meta'; import Mtk from 'gi://Mtk'; import Polkit from 'gi://Polkit'; import Shell from 'gi://Shell'; import St from 'gi://St'; import * as SignalTracker from '../misc/signalTracker.js'; import {adjustAnimationTime} from '../misc/animationUtils.js'; setConsoleLogDomain('GNOME Shell'); Gio._promisify(Gio.DataInputStream.prototype, 'fill_async'); Gio._promisify(Gio.DataInputStream.prototype, 'read_line_async'); Gio._promisify(Gio.DBus, 'get'); Gio._promisify(Gio.DBusConnection.prototype, 'call'); Gio._promisify(Gio.DBusProxy, 'new'); Gio._promisify(Gio.DBusProxy.prototype, 'init_async'); Gio._promisify(Gio.DBusProxy.prototype, 'call_with_unix_fd_list'); Gio._promisify(Gio.File.prototype, 'query_info_async'); Gio._promisify(Polkit.Permission, 'new'); Gio._promisify(Shell.App.prototype, 'activate_action'); // We can't import shell JS modules yet, because they may have // variable initializations, etc, that depend on this file's // changes function _patchLayoutClass(layoutClass, styleProps) { if (styleProps) { layoutClass.prototype.hookup_style = function (container) { container.connect('style-changed', () => { let node = container.get_theme_node(); for (let prop in styleProps) { let [found, length] = node.lookup_length(styleProps[prop], false); if (found) this[prop] = length; } }); }; } } function _makeEaseCallback(params, cleanup) { let onComplete = params.onComplete; delete params.onComplete; let onStopped = params.onStopped; delete params.onStopped; return isFinished => { cleanup(); if (onStopped) onStopped(isFinished); if (onComplete && isFinished) onComplete(); }; } function _getPropertyTarget(actor, propName) { if (!propName.startsWith('@')) return [actor, propName]; let [type, name, prop] = propName.split('.'); switch (type) { case '@layout': return [actor.layout_manager, name]; case '@actions': return [actor.get_action(name), prop]; case '@constraints': return [actor.get_constraint(name), prop]; case '@content': return [actor.content, name]; case '@effects': return [actor.get_effect(name), prop]; } throw new Error(`Invalid property name ${propName}`); } function _easeActor(actor, params) { params = { repeatCount: 0, autoReverse: false, animationRequired: false, ...params, }; actor.save_easing_state(); const animationRequired = params.animationRequired; delete params.animationRequired; if (params.duration !== undefined) actor.set_easing_duration(params.duration, {animationRequired}); delete params.duration; if (params.delay !== undefined) actor.set_easing_delay(params.delay, {animationRequired}); delete params.delay; const repeatCount = params.repeatCount; delete params.repeatCount; const autoReverse = params.autoReverse; delete params.autoReverse; // repeatCount doesn't include the initial iteration const numIterations = repeatCount + 1; // whether the transition should finish where it started const isReversed = autoReverse && numIterations % 2 === 0; if (params.mode !== undefined) actor.set_easing_mode(params.mode); delete params.mode; const prepare = () => { Meta.disable_unredirect_for_display(global.display); global.begin_work(); }; const cleanup = () => { Meta.enable_unredirect_for_display(global.display); global.end_work(); }; let callback = _makeEaseCallback(params, cleanup); // cancel overwritten transitions let animatedProps = Object.keys(params).map(p => p.replace('_', '-', 'g')); animatedProps.forEach(p => actor.remove_transition(p)); if (actor.get_easing_duration() > 0 || !isReversed) actor.set(params); actor.restore_easing_state(); const transitions = animatedProps .map(p => actor.get_transition(p)) .filter(t => t !== null); transitions.forEach(t => t.set({repeatCount, autoReverse})); const [transition] = transitions; if (transition && transition.delay) transition.connect('started', () => prepare()); else prepare(); if (transition) transition.connect('stopped', (t, finished) => callback(finished)); else callback(true); } function _easeActorProperty(actor, propName, target, params) { params = { repeatCount: 0, autoReverse: false, animationRequired: false, ...params, }; // Avoid pointless difference with ease() if (params.mode) params.progress_mode = params.mode; delete params.mode; const animationRequired = params.animationRequired; delete params.animationRequired; if (params.duration) params.duration = adjustAnimationTime(params.duration, {animationRequired}); let duration = Math.floor(params.duration || 0); if (params.delay) params.delay = adjustAnimationTime(params.delay, {animationRequired}); const repeatCount = params.repeatCount; delete params.repeatCount; const autoReverse = params.autoReverse; delete params.autoReverse; // repeatCount doesn't include the initial iteration const numIterations = repeatCount + 1; // whether the transition should finish where it started const isReversed = autoReverse && numIterations % 2 === 0; // Copy Clutter's behavior for implicit animations, see // should_skip_implicit_transition() if (actor instanceof Clutter.Actor && !actor.mapped) duration = 0; const prepare = () => { Meta.disable_unredirect_for_display(global.display); global.begin_work(); }; const cleanup = () => { Meta.enable_unredirect_for_display(global.display); global.end_work(); }; let callback = _makeEaseCallback(params, cleanup); // cancel overwritten transition actor.remove_transition(propName); if (duration === 0) { let [obj, prop] = _getPropertyTarget(actor, propName); if (!isReversed) obj[prop] = target; prepare(); callback(true); return; } let pspec = actor.find_property(propName); let transition = new Clutter.PropertyTransition({ property_name: propName, interval: new Clutter.Interval({value_type: pspec.value_type}), remove_on_complete: true, repeat_count: repeatCount, auto_reverse: autoReverse, ...params, }); actor.add_transition(propName, transition); transition.set_to(target); if (transition.delay) transition.connect('started', () => prepare()); else prepare(); transition.connect('stopped', (t, finished) => callback(finished)); } // Add some bindings to the global JS namespace globalThis.global = Shell.Global.get(); globalThis._ = Gettext.gettext; globalThis.C_ = Gettext.pgettext; globalThis.ngettext = Gettext.ngettext; globalThis.N_ = s => s; GObject.gtypeNameBasedOnJSPath = true; GObject.Object.prototype.connectObject = function (...args) { SignalTracker.connectObject(this, ...args); }; GObject.Object.prototype.connect_object = function (...args) { SignalTracker.connectObject(this, ...args); }; GObject.Object.prototype.disconnectObject = function (...args) { SignalTracker.disconnectObject(this, ...args); }; GObject.Object.prototype.disconnect_object = function (...args) { SignalTracker.disconnectObject(this, ...args); }; SignalTracker.registerDestroyableType(Clutter.Actor); Cairo.Context.prototype.setSourceColor = function (color) { const {red, green, blue, alpha} = color; const rgb = [red, green, blue].map(v => v / 255.0); if (alpha !== 0xff) this.setSourceRGBA(...rgb, alpha / 255.0); else this.setSourceRGB(...rgb); }; // Miscellaneous monkeypatching _patchLayoutClass(Clutter.GridLayout, { row_spacing: 'spacing-rows', column_spacing: 'spacing-columns', }); _patchLayoutClass(Clutter.BoxLayout, {spacing: 'spacing'}); const origSetEasingDuration = Clutter.Actor.prototype.set_easing_duration; Clutter.Actor.prototype.set_easing_duration = function (msecs, params = {}) { origSetEasingDuration.call(this, adjustAnimationTime(msecs, params)); }; const origSetEasingDelay = Clutter.Actor.prototype.set_easing_delay; Clutter.Actor.prototype.set_easing_delay = function (msecs, params = {}) { origSetEasingDelay.call(this, adjustAnimationTime(msecs, params)); }; Clutter.Actor.prototype.ease = function (props) { _easeActor(this, props); }; Clutter.Actor.prototype.ease_property = function (propName, target, params) { _easeActorProperty(this, propName, target, params); }; St.Adjustment.prototype.ease = function (target, params) { // we're not an actor of course, but we implement the same // transition API as Clutter.Actor, so this works anyway _easeActorProperty(this, 'value', target, params); }; Clutter.Actor.prototype[Symbol.iterator] = function* () { for (let c = this.get_first_child(); c; c = c.get_next_sibling()) yield c; }; Clutter.Actor.prototype.toString = function () { return St.describe_actor(this); }; // Deprecation warning for former JS classes turned into an actor subclass Object.defineProperty(Clutter.Actor.prototype, 'actor', { get() { let klass = this.constructor.name; let {stack} = new Error(); log(`Usage of object.actor is deprecated for ${klass}\n${stack}`); return this; }, }); Meta.Rectangle = function (params = {}) { console.warn('Meta.Rectangle is deprecated, use Mtk.Rectangle instead'); return new Mtk.Rectangle(params); }; Gio.File.prototype.touch_async = function (callback) { Shell.util_touch_file_async(this, callback); }; Gio.File.prototype.touch_finish = function (result) { return Shell.util_touch_file_finish(this, result); }; const origToString = Object.prototype.toString; Object.prototype.toString = function () { let base = origToString.call(this); try { if ('actor' in this && this.actor instanceof Clutter.Actor) return base.replace(/\]$/, ` delegate for ${this.actor.toString().substring(1)}`); else return base; } catch (e) { return base; } }; const slowdownEnv = GLib.getenv('GNOME_SHELL_SLOWDOWN_FACTOR'); if (slowdownEnv) { let factor = parseFloat(slowdownEnv); if (!isNaN(factor) && factor > 0.0) St.Settings.get().slow_down_factor = factor; } function wrapSpawnFunction(func) { const originalFunc = GLib[func]; return function (workingDirectory, argv, envp, flags, childSetup, ...args) { const commonArgs = [workingDirectory, argv, envp, flags]; if (childSetup) { logError(new Error(`Using child GLib.${func} with a GLib.SpawnChildSetupFunc ` + 'is unsafe and may dead-lock, thus it should never be used from JavaScript. ' + `Shell.${func} can be used to perform default actions or an ` + 'async-signal-safe alternative should be used instead')); return originalFunc(...commonArgs, childSetup, ...args); } const retValue = Shell[`util_${func}`](...commonArgs, ...args); return [true, ...Array.isArray(retValue) ? retValue : [retValue]]; }; } GLib.spawn_async = wrapSpawnFunction('spawn_async'); GLib.spawn_async_with_pipes = wrapSpawnFunction('spawn_async_with_pipes'); GLib.spawn_async_with_fds = wrapSpawnFunction('spawn_async_with_fds'); GLib.spawn_async_with_pipes_and_fds = wrapSpawnFunction('spawn_async_with_pipes_and_fds'); // OK, now things are initialized enough that we can import shell JS const Format = imports.format; String.prototype.format = Format.format; Math.clamp = function (x, lower, upper) { return Math.min(Math.max(x, lower), upper); }; // Prevent extensions from opening a display connection to ourselves Gdk.set_allowed_backends(''); 070701000001B5000081A40000000000000000000000016712993F00002A5B000000000000000000000000000000000000002E00000000gnome-shell-47.1/js/ui/extensionDownloader.jsimport Clutter from 'gi://Clutter'; import Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import Soup from 'gi://Soup'; import * as Config from '../misc/config.js'; import * as Dialog from './dialog.js'; import * as ExtensionUtils from '../misc/extensionUtils.js'; import * as FileUtils from '../misc/fileUtils.js'; import * as Main from './main.js'; import * as ModalDialog from './modalDialog.js'; import {ExtensionErrors, ExtensionError} from '../misc/dbusErrors.js'; Gio._promisify(Soup.Session.prototype, 'send_and_read_async'); Gio._promisify(Gio.OutputStream.prototype, 'write_bytes_async'); Gio._promisify(Gio.IOStream.prototype, 'close_async'); Gio._promisify(Gio.Subprocess.prototype, 'wait_check_async'); const REPOSITORY_URL_DOWNLOAD = 'https://extensions.gnome.org/download-extension/%s.shell-extension.zip'; const REPOSITORY_URL_INFO = 'https://extensions.gnome.org/extension-info/'; const REPOSITORY_URL_UPDATE = 'https://extensions.gnome.org/update-info/'; let _httpSession; /** * @param {string} uuid - extension uuid * @param {Gio.DBusMethodInvocation} invocation - the caller * @returns {void} */ export async function installExtension(uuid, invocation) { if (!global.settings.get_boolean('allow-extension-installation')) { invocation.return_error_literal( ExtensionErrors, ExtensionError.NOT_ALLOWED, 'Extension installation is not allowed'); return; } const params = { uuid, shell_version: Config.PACKAGE_VERSION, }; const message = Soup.Message.new_from_encoded_form('GET', REPOSITORY_URL_INFO, Soup.form_encode_hash(params)); let info; try { const bytes = await _httpSession.send_and_read_async( message, GLib.PRIORITY_DEFAULT, null); checkResponse(message); const decoder = new TextDecoder(); info = JSON.parse(decoder.decode(bytes.get_data())); } catch (e) { Main.extensionManager.logExtensionError(uuid, e); invocation.return_error_literal( ExtensionErrors, ExtensionError.INFO_DOWNLOAD_FAILED, e.message); return; } const dialog = new InstallExtensionDialog(uuid, info, invocation); dialog.open(); } /** * @param {string} uuid */ export function uninstallExtension(uuid) { let extension = Main.extensionManager.lookup(uuid); if (!extension) return false; // Don't try to uninstall system extensions if (extension.type !== ExtensionUtils.ExtensionType.PER_USER) return false; if (!Main.extensionManager.unloadExtension(extension)) return false; FileUtils.recursivelyDeleteDir(extension.dir, true); try { const updatesDir = Gio.File.new_for_path(GLib.build_filenamev( [global.userdatadir, 'extension-updates', extension.uuid])); FileUtils.recursivelyDeleteDir(updatesDir, true); } catch (e) { // not an error } return true; } /** * Check return status of reponse * * @param {Soup.Message} message - an http response * @returns {void} * @throws */ function checkResponse(message) { const {statusCode} = message; const phrase = Soup.Status.get_phrase(statusCode); if (statusCode !== Soup.Status.OK) throw new Error(`Unexpected response: ${phrase}`); } /** * @param {GLib.Bytes} bytes - archive data * @param {Gio.File} dir - target directory * @returns {void} */ async function extractExtensionArchive(bytes, dir) { if (!dir.query_exists(null)) dir.make_directory_with_parents(null); const [file, stream] = Gio.File.new_tmp('XXXXXX.shell-extension.zip'); await stream.output_stream.write_bytes_async(bytes, GLib.PRIORITY_DEFAULT, null); stream.close_async(GLib.PRIORITY_DEFAULT, null); const unzip = Gio.Subprocess.new( ['unzip', '-uod', dir.get_path(), '--', file.get_path()], Gio.SubprocessFlags.NONE); await unzip.wait_check_async(null); const schemasPath = dir.get_child('schemas'); try { const info = await schemasPath.query_info_async( Gio.FILE_ATTRIBUTE_STANDARD_TYPE, Gio.FileQueryInfoFlags.NONE, GLib.PRIORITY_DEFAULT, null); if (info.get_file_type() !== Gio.FileType.DIRECTORY) throw new Error('schemas is not a directory'); } catch (e) { if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_FOUND)) console.warn(`Error while looking for schema for extension ${dir.get_basename()}: ${e.message}`); return; } const compileSchema = Gio.Subprocess.new( ['glib-compile-schemas', '--strict', schemasPath.get_path()], Gio.SubprocessFlags.NONE); try { await compileSchema.wait_check_async(null); } catch (e) { log(`Error while compiling schema for extension ${dir.get_basename()}: (${e.message})`); } } /** * @param {string} uuid - extension uuid * @returns {void} */ export async function downloadExtensionUpdate(uuid) { if (!Main.extensionManager.updatesSupported) return; const dir = Gio.File.new_for_path( GLib.build_filenamev([global.userdatadir, 'extension-updates', uuid])); const params = {shell_version: Config.PACKAGE_VERSION}; const message = Soup.Message.new_from_encoded_form('GET', REPOSITORY_URL_DOWNLOAD.format(uuid), Soup.form_encode_hash(params)); try { const bytes = await _httpSession.send_and_read_async( message, GLib.PRIORITY_DEFAULT, null); checkResponse(message); await extractExtensionArchive(bytes, dir); Main.extensionManager.notifyExtensionUpdate(uuid); } catch (e) { log(`Error while downloading update for extension ${uuid}: (${e.message})`); } } /** * Check extensions.gnome.org for updates * * @returns {void} */ export async function checkForUpdates() { if (!Main.extensionManager.updatesSupported) return; let metadatas = {}; Main.extensionManager.getUuids().forEach(uuid => { let extension = Main.extensionManager.lookup(uuid); if (extension.type !== ExtensionUtils.ExtensionType.PER_USER) return; if (extension.hasUpdate) return; metadatas[uuid] = { version: extension.metadata.version, }; }); if (Object.keys(metadatas).length === 0) return; // nothing to update const versionCheck = global.settings.get_boolean( 'disable-extension-version-validation'); const params = { shell_version: Config.PACKAGE_VERSION, disable_version_validation: `${versionCheck}`, }; const requestBody = new GLib.Bytes(JSON.stringify(metadatas)); const message = Soup.Message.new('POST', `${REPOSITORY_URL_UPDATE}?${Soup.form_encode_hash(params)}`); message.set_request_body_from_bytes('application/json', requestBody); let json; try { const bytes = await _httpSession.send_and_read_async( message, GLib.PRIORITY_DEFAULT, null); checkResponse(message); json = new TextDecoder().decode(bytes.get_data()); } catch (e) { log(`Update check failed: ${e.message}`); return; } const operations = JSON.parse(json); const updates = []; for (const uuid in operations) { const operation = operations[uuid]; if (operation === 'upgrade' || operation === 'downgrade') updates.push(uuid); } try { await Promise.allSettled( updates.map(uuid => downloadExtensionUpdate(uuid))); } catch (e) { log(`Some extension updates failed to download: ${e.message}`); } } class ExtractError extends Error { get name() { return 'ExtractError'; } } class EnableError extends Error { get name() { return 'EnableError'; } } const InstallExtensionDialog = GObject.registerClass( class InstallExtensionDialog extends ModalDialog.ModalDialog { _init(uuid, info, invocation) { super._init({styleClass: 'extension-dialog'}); this._uuid = uuid; this._info = info; this._invocation = invocation; this.setButtons([{ label: _('Cancel'), action: this._onCancelButtonPressed.bind(this), key: Clutter.KEY_Escape, }, { label: _('Install'), action: this._onInstallButtonPressed.bind(this), default: true, }]); let content = new Dialog.MessageDialogContent({ title: _('Install Extension'), description: _('Download and install “%s” from extensions.gnome.org?').format(info.name), }); this.contentLayout.add_child(content); } _onCancelButtonPressed() { this.close(); this._invocation.return_value(GLib.Variant.new('(s)', ['cancelled'])); } async _onInstallButtonPressed() { this.close(); const params = {shell_version: Config.PACKAGE_VERSION}; const message = Soup.Message.new_from_encoded_form('GET', REPOSITORY_URL_DOWNLOAD.format(this._uuid), Soup.form_encode_hash(params)); const dir = Gio.File.new_for_path( GLib.build_filenamev([global.userdatadir, 'extensions', this._uuid])); try { const bytes = await _httpSession.send_and_read_async( message, GLib.PRIORITY_DEFAULT, null); checkResponse(message); try { await extractExtensionArchive(bytes, dir); } catch (e) { throw new ExtractError(e.message); } const extension = Main.extensionManager.createExtensionObject( this._uuid, dir, ExtensionUtils.ExtensionType.PER_USER); Main.extensionManager.loadExtension(extension); if (!Main.extensionManager.enableExtension(this._uuid)) throw new EnableError(`Cannot enable ${this._uuid}`); this._invocation.return_value(new GLib.Variant('(s)', ['successful'])); } catch (e) { let code; if (e instanceof ExtractError) code = ExtensionError.EXTRACT_FAILED; else if (e instanceof EnableError) code = ExtensionError.ENABLE_FAILED; else code = ExtensionError.DOWNLOAD_FAILED; log(`Error while installing ${this._uuid}: ${e.message}`); this._invocation.return_error_literal( ExtensionErrors, code, e.message); } } }); export function init() { _httpSession = new Soup.Session(); } 070701000001B6000081A40000000000000000000000016712993F00007306000000000000000000000000000000000000002A00000000gnome-shell-47.1/js/ui/extensionSystem.jsimport GLib from 'gi://GLib'; import Gio from 'gi://Gio'; import GObject from 'gi://GObject'; import St from 'gi://St'; import Shell from 'gi://Shell'; import * as Signals from '../misc/signals.js'; import * as Config from '../misc/config.js'; import * as ExtensionDownloader from './extensionDownloader.js'; import {formatError} from '../misc/errorUtils.js'; import {ExtensionState, ExtensionType} from '../misc/extensionUtils.js'; import * as FileUtils from '../misc/fileUtils.js'; import * as Main from './main.js'; import * as MessageTray from './messageTray.js'; const ENABLED_EXTENSIONS_KEY = 'enabled-extensions'; const DISABLED_EXTENSIONS_KEY = 'disabled-extensions'; const DISABLE_USER_EXTENSIONS_KEY = 'disable-user-extensions'; const EXTENSION_DISABLE_VERSION_CHECK_KEY = 'disable-extension-version-validation'; const UPDATE_CHECK_TIMEOUT = 24 * 60 * 60; // 1 day in seconds function stateToString(state) { return Object.keys(ExtensionState).find(k => ExtensionState[k] === state); } export class ExtensionManager extends Signals.EventEmitter { constructor() { super(); this._initializationPromise = null; this._updateNotified = false; this._updateInProgress = false; this._updatedUUIDS = []; this._extensions = new Map(); this._unloadedExtensions = new Map(); this._enabledExtensions = []; this._extensionOrder = []; this._checkVersion = false; St.Settings.get().connect('notify::color-scheme', () => this._reloadExtensionStylesheets()); Main.sessionMode.connect('updated', () => { this._sessionUpdated().catch(logError); }); } init() { // The following file should exist for a period of time when extensions // are enabled after start. If it exists, then the systemd unit will // disable extensions should gnome-shell crash. // Should the file already exist from a previous login, then this is OK. let disableFilename = GLib.build_filenamev([GLib.get_user_runtime_dir(), 'gnome-shell-disable-extensions']); let disableFile = Gio.File.new_for_path(disableFilename); try { disableFile.create(Gio.FileCreateFlags.REPLACE_DESTINATION, null); } catch (e) { log(`Failed to create file ${disableFilename}: ${e.message}`); } const shutdownId = global.connect('shutdown', () => disableFile.delete(null)); GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, 60, () => { global.disconnect(shutdownId); disableFile.delete(null); return GLib.SOURCE_REMOVE; }); this._installExtensionUpdates(); this._sessionUpdated().then(() => { ExtensionDownloader.checkForUpdates(); }).catch(logError); GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, UPDATE_CHECK_TIMEOUT, () => { ExtensionDownloader.checkForUpdates(); return GLib.SOURCE_CONTINUE; }); } get updatesSupported() { const appSys = Shell.AppSystem.get_default(); const hasUpdatesApp = appSys.lookup_app('org.gnome.Extensions.desktop') !== null || appSys.lookup_app('com.mattjakeman.ExtensionManager.desktop') !== null; const allowed = global.settings.get_boolean('allow-extension-installation'); return allowed && hasUpdatesApp; } lookup(uuid) { return this._extensions.get(uuid); } getUuids() { return [...this._extensions.keys()]; } _reloadExtensionStylesheets() { for (const ext of this._extensions.values()) { // No stylesheet, nothing to reload if (!ext.stylesheet) continue; // No variants, so skip reloading const path = ext.stylesheet.get_path(); if (!path.endsWith('-dark.css') && !path.endsWith('-light.css')) continue; try { this._unloadExtensionStylesheet(ext); this._loadExtensionStylesheet(ext); } catch (e) { this._callExtensionDisable(ext.uuid); this.logExtensionError(ext.uuid, e); } } } _loadExtensionStylesheet(extension) { if (extension.state !== ExtensionState.ACTIVE && extension.state !== ExtensionState.ACTIVATING) return; const variant = Main.getStyleVariant(); const stylesheetNames = [ `${global.sessionMode}-${variant}.css`, `stylesheet-${variant}.css`, `${global.sessionMode}.css`, 'stylesheet.css', ]; const theme = St.ThemeContext.get_for_stage(global.stage).get_theme(); for (const name of stylesheetNames) { try { const stylesheetFile = extension.dir.get_child(name); theme.load_stylesheet(stylesheetFile); extension.stylesheet = stylesheetFile; break; } catch (e) { if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_FOUND)) continue; // not an error throw e; } } } _unloadExtensionStylesheet(extension) { if (!extension.stylesheet) return; const theme = St.ThemeContext.get_for_stage(global.stage).get_theme(); theme.unload_stylesheet(extension.stylesheet); delete extension.stylesheet; } _changeExtensionState(extension, newState) { const strState = stateToString(newState); console.debug(`Changing state of extension ${extension.uuid} to ${strState}`); extension.state = newState; this.emit('extension-state-changed', extension); } _extensionSupportsSessionMode(uuid) { const extension = this.lookup(uuid); if (!extension) return false; if (extension.sessionModes.includes(Main.sessionMode.currentMode)) return true; if (extension.sessionModes.includes(Main.sessionMode.parentMode)) return true; return false; } async _callExtensionDisable(uuid) { let extension = this.lookup(uuid); if (!extension) return; if (extension.state !== ExtensionState.ACTIVE) return; this._changeExtensionState(extension, ExtensionState.DEACTIVATING); // "Rebase" the extension order by disabling and then enabling extensions // in order to help prevent conflicts. // Example: // order = [A, B, C, D, E] // user disables C // this should: disable E, disable D, disable C, enable D, enable E let orderIdx = this._extensionOrder.indexOf(uuid); let order = this._extensionOrder.slice(orderIdx + 1); let orderReversed = order.slice().reverse(); for (let i = 0; i < orderReversed.length; i++) { let otherUuid = orderReversed[i]; try { console.debug(`Temporarily disable extension ${otherUuid}`); this.lookup(otherUuid).stateObj.disable(); } catch (e) { this.logExtensionError(otherUuid, e); } } try { extension.stateObj.disable(); } catch (e) { this.logExtensionError(uuid, e); } this._unloadExtensionStylesheet(extension); for (let i = 0; i < order.length; i++) { let otherUuid = order[i]; try { console.debug(`Re-enable extension ${otherUuid}`); // eslint-disable-next-line no-await-in-loop await this.lookup(otherUuid).stateObj.enable(); } catch (e) { this.logExtensionError(otherUuid, e); } } this._extensionOrder.splice(orderIdx, 1); if (extension.state !== ExtensionState.ERROR) this._changeExtensionState(extension, ExtensionState.INACTIVE); } async _callExtensionEnable(uuid) { if (!this._extensionSupportsSessionMode(uuid)) return; let extension = this.lookup(uuid); if (!extension) return; if (extension.state === ExtensionState.INITIALIZED) await this._callExtensionInit(uuid); if (extension.state !== ExtensionState.INACTIVE) return; this._changeExtensionState(extension, ExtensionState.ACTIVATING); try { this._loadExtensionStylesheet(extension); } catch (e) { this.logExtensionError(uuid, e); return; } try { await extension.stateObj.enable(); this._changeExtensionState(extension, ExtensionState.ACTIVE); this._extensionOrder.push(uuid); } catch (e) { this._unloadExtensionStylesheet(extension); this.logExtensionError(uuid, e); } } enableExtension(uuid) { if (!this._extensions.has(uuid)) return false; let enabledExtensions = global.settings.get_strv(ENABLED_EXTENSIONS_KEY); let disabledExtensions = global.settings.get_strv(DISABLED_EXTENSIONS_KEY); if (disabledExtensions.includes(uuid)) { disabledExtensions = disabledExtensions.filter(item => item !== uuid); global.settings.set_strv(DISABLED_EXTENSIONS_KEY, disabledExtensions); } if (!enabledExtensions.includes(uuid)) { enabledExtensions.push(uuid); global.settings.set_strv(ENABLED_EXTENSIONS_KEY, enabledExtensions); } return true; } disableExtension(uuid) { if (!this._extensions.has(uuid)) return false; let enabledExtensions = global.settings.get_strv(ENABLED_EXTENSIONS_KEY); let disabledExtensions = global.settings.get_strv(DISABLED_EXTENSIONS_KEY); if (enabledExtensions.includes(uuid)) { enabledExtensions = enabledExtensions.filter(item => item !== uuid); global.settings.set_strv(ENABLED_EXTENSIONS_KEY, enabledExtensions); } if (!disabledExtensions.includes(uuid)) { disabledExtensions.push(uuid); global.settings.set_strv(DISABLED_EXTENSIONS_KEY, disabledExtensions); } return true; } openExtensionPrefs(uuid, parentWindow, options) { const extension = this.lookup(uuid); if (!extension || !extension.hasPrefs) return false; Gio.DBus.session.call( 'org.gnome.Shell.Extensions', '/org/gnome/Shell/Extensions', 'org.gnome.Shell.Extensions', 'OpenExtensionPrefs', new GLib.Variant('(ssa{sv})', [uuid, parentWindow, options]), null, Gio.DBusCallFlags.NONE, -1, null); return true; } notifyExtensionUpdate(uuid) { if (this._updateInProgress) { this._updatedUUIDS.push(uuid); return; } let extension = this.lookup(uuid); if (!extension) return; extension.hasUpdate = true; this.emit('extension-state-changed', extension); if (!this._updateNotified) { this._updateNotified = true; let source = new ExtensionUpdateSource(); Main.messageTray.add(source); const notification = new MessageTray.Notification({ source, title: _('Extension Updates Available'), body: _('Extension updates are ready to be installed'), }); notification.connect('activated', () => source.open()); source.addNotification(notification); } } logExtensionError(uuid, error) { let extension = this.lookup(uuid); if (!extension) return; const message = formatError(error, {showStack: false}); console.debug(`Changing state of extension ${uuid} to ERROR`); extension.error = message; extension.state = ExtensionState.ERROR; if (!extension.errors) extension.errors = []; extension.errors.push(message); logError(error, `Extension ${uuid}`); this.emit('extension-state-changed', extension); } createExtensionObject(uuid, dir, type) { let metadataFile = dir.get_child('metadata.json'); if (!metadataFile.query_exists(null)) throw new Error('Missing metadata.json'); let metadataContents, success_; try { [success_, metadataContents] = metadataFile.load_contents(null); metadataContents = new TextDecoder().decode(metadataContents); } catch (e) { throw new Error(`Failed to load metadata.json: ${e}`); } let meta; try { meta = JSON.parse(metadataContents); } catch (e) { throw new Error(`Failed to parse metadata.json: ${e}`); } const requiredProperties = [{ prop: 'uuid', typeName: 'string', }, { prop: 'name', typeName: 'string', }, { prop: 'description', typeName: 'string', }, { prop: 'shell-version', typeName: 'string array', typeCheck: v => Array.isArray(v) && v.length > 0 && v.every(e => typeof e === 'string'), }]; for (let i = 0; i < requiredProperties.length; i++) { const { prop, typeName, typeCheck = v => typeof v === typeName, } = requiredProperties[i]; if (!meta[prop]) throw new Error(`missing "${prop}" property in metadata.json`); if (!typeCheck(meta[prop])) throw new Error(`property "${prop}" is not of type ${typeName}`); } if (uuid !== meta.uuid) throw new Error(`uuid "${meta.uuid}" from metadata.json does not match directory name "${uuid}"`); let extension = { metadata: meta, uuid: meta.uuid, type, dir, path: dir.get_path(), error: '', hasPrefs: dir.get_child('prefs.js').query_exists(null), enabled: this._enabledExtensions.includes(uuid), hasUpdate: false, canChange: false, sessionModes: meta['session-modes'] ? meta['session-modes'] : ['user'], }; this._extensions.set(uuid, extension); return extension; } _canLoad(extension) { if (!this._unloadedExtensions.has(extension.uuid)) return true; const version = this._unloadedExtensions.get(extension.uuid); return extension.metadata.version === version; } _isOutOfDate(extension) { const [major] = Config.PACKAGE_VERSION.split('.'); return !extension.metadata['shell-version'].some(v => v.startsWith(major)); } async loadExtension(extension) { const {uuid} = extension; console.debug(`Loading extension ${uuid}`); // Default to error, we set success as the last step extension.state = ExtensionState.ERROR; if (this._checkVersion && this._isOutOfDate(extension)) { extension.state = ExtensionState.OUT_OF_DATE; } else if (!this._canLoad(extension)) { this.logExtensionError(uuid, new Error( 'A different version was loaded previously. You need to log out for changes to take effect.')); } else { const enabled = this._enabledExtensions.includes(uuid) && this._extensionSupportsSessionMode(uuid); if (enabled) { if (!await this._callExtensionInit(uuid)) return; if (extension.state === ExtensionState.INACTIVE) await this._callExtensionEnable(uuid); } else { extension.state = ExtensionState.INITIALIZED; } this._unloadedExtensions.delete(uuid); } console.debug(`Extension ${uuid} in state ${stateToString(extension.state)} after loading`); this._updateCanChange(extension); this.emit('extension-state-changed', extension); } async unloadExtension(extension) { const {uuid, type} = extension; // Try to disable it -- if it's ERROR'd, we can't guarantee that, // but it will be removed on next reboot, and hopefully nothing // broke too much. await this._callExtensionDisable(uuid); this._changeExtensionState(extension, ExtensionState.UNINSTALLED); // The extension is now cached and it's impossible to load a different version if (type === ExtensionType.PER_USER && extension.isImported) this._unloadedExtensions.set(uuid, extension.metadata.version); this._extensions.delete(uuid); return true; } async reloadExtension(oldExtension) { // Grab the things we'll need to pass to createExtensionObject // to reload it. let {uuid, dir, type} = oldExtension; // Then unload the old extension. await this.unloadExtension(oldExtension); // Now, recreate the extension and load it. let newExtension; try { newExtension = this.createExtensionObject(uuid, dir, type); } catch (e) { this.logExtensionError(uuid, e); return; } await this.loadExtension(newExtension); } async _callExtensionInit(uuid) { if (!this._extensionSupportsSessionMode(uuid)) return false; let extension = this.lookup(uuid); if (!extension) throw new Error('Extension was not properly created. Call createExtensionObject first'); let dir = extension.dir; let extensionJs = dir.get_child('extension.js'); if (!extensionJs.query_exists(null)) { this.logExtensionError(uuid, new Error('Missing extension.js')); return false; } let extensionModule; let extensionState = null; try { extensionModule = await import(extensionJs.get_uri()); // Extensions can only be imported once, so add a property to avoid // attempting to re-import an extension. extension.isImported = true; } catch (e) { this.logExtensionError(uuid, e); return false; } try { const {metadata, path} = extension; extensionState = new extensionModule.default({...metadata, dir, path}); } catch (e) { this.logExtensionError(uuid, e); return false; } extension.stateObj = extensionState; this._changeExtensionState(extension, ExtensionState.INACTIVE); return true; } _getModeExtensions() { if (Array.isArray(Main.sessionMode.enabledExtensions)) return Main.sessionMode.enabledExtensions; return []; } _updateCanChange(extension) { let isMode = this._getModeExtensions().includes(extension.uuid); let modeOnly = global.settings.get_boolean(DISABLE_USER_EXTENSIONS_KEY); let changeKey = isMode ? DISABLE_USER_EXTENSIONS_KEY : ENABLED_EXTENSIONS_KEY; extension.canChange = global.settings.is_writable(changeKey) && (isMode || !modeOnly); } _getEnabledExtensions() { let extensions = this._getModeExtensions(); if (!global.settings.get_boolean(DISABLE_USER_EXTENSIONS_KEY)) extensions = extensions.concat(global.settings.get_strv(ENABLED_EXTENSIONS_KEY)); extensions.sort((a, b) => this._compareExtensions(this.lookup(a), this.lookup(b))); // filter out 'disabled-extensions' which takes precedence let disabledExtensions = global.settings.get_strv(DISABLED_EXTENSIONS_KEY); return extensions.filter(item => !disabledExtensions.includes(item)); } async _onUserExtensionsEnabledChanged() { await this._onEnabledExtensionsChanged(); this._onSettingsWritableChanged(); } async _onEnabledExtensionsChanged() { let newEnabledExtensions = this._getEnabledExtensions(); for (const extension of this._extensions.values()) { const wasEnabled = extension.enabled; extension.enabled = newEnabledExtensions.includes(extension.uuid); if (wasEnabled !== extension.enabled) this.emit('extension-state-changed', extension); } // Find and enable all the newly enabled extensions: UUIDs found in the // new setting, but not in the old one. const extensionsToEnable = newEnabledExtensions .filter(uuid => !this._enabledExtensions.includes(uuid) && this._extensionSupportsSessionMode(uuid)); for (const uuid of extensionsToEnable) { // eslint-disable-next-line no-await-in-loop await this._callExtensionEnable(uuid); } // Find and disable all the newly disabled extensions: UUIDs found in the // old setting, but not in the new one. const extensionsToDisable = this._extensionOrder .filter(uuid => !newEnabledExtensions.includes(uuid) || !this._extensionSupportsSessionMode(uuid)); // Reverse mutates the original array, but .filter() creates a new array. extensionsToDisable.reverse(); for (const uuid of extensionsToDisable) { // eslint-disable-next-line no-await-in-loop await this._callExtensionDisable(uuid); } this._enabledExtensions = newEnabledExtensions; } _onSettingsWritableChanged() { for (let extension of this._extensions.values()) { this._updateCanChange(extension); this.emit('extension-state-changed', extension); } } async _onVersionValidationChanged() { const checkVersion = !global.settings.get_boolean(EXTENSION_DISABLE_VERSION_CHECK_KEY); if (checkVersion === this._checkVersion) return; this._checkVersion = checkVersion; // Disabling extensions modifies the order array, so use a copy let extensionOrder = this._extensionOrder.slice(); // Disable enabled extensions first to avoid // the "rebasing" done in _callExtensionDisable... this._disableAllExtensions(); // ...and then reload and enable extensions in the correct order again. const extensionsToReload = [...this._extensions.values()].sort((a, b) => { return extensionOrder.indexOf(a.uuid) - extensionOrder.indexOf(b.uuid); }); for (const extension of extensionsToReload) { // eslint-disable-next-line no-await-in-loop await this.reloadExtension(extension); } } async _handleMajorUpdate() { const [majorVersion] = Config.PACKAGE_VERSION.split('.'); const path = `${global.userdatadir}/update-check-${majorVersion}`; const file = Gio.File.new_for_path(path); try { if (!await file.touch_async()) return; } catch (e) { logError(e); } this._updateInProgress = true; await ExtensionDownloader.checkForUpdates(); this._installExtensionUpdates(); this._updatedUUIDS.map(uuid => this.lookup(uuid)).forEach( ext => this.reloadExtension(ext)); this._updatedUUIDS = []; this._updateInProgress = false; } _installExtensionUpdates() { if (!this.updatesSupported) return; for (const {dir, info} of FileUtils.collectFromDatadirs('extension-updates', true)) { let fileType = info.get_file_type(); if (fileType !== Gio.FileType.DIRECTORY) continue; let uuid = info.get_name(); let extensionDir = Gio.File.new_for_path( GLib.build_filenamev([global.userdatadir, 'extensions', uuid])); try { FileUtils.recursivelyDeleteDir(extensionDir, false); FileUtils.recursivelyMoveDir(dir, extensionDir); } catch (e) { log(`Failed to install extension updates for ${uuid}`); } finally { FileUtils.recursivelyDeleteDir(dir, true); } } } _compareExtensions(a, b) { const modesA = a?.sessionModes ?? []; const modesB = b?.sessionModes ?? []; return modesB.length - modesA.length; } async _loadExtensions() { global.settings.connect(`changed::${ENABLED_EXTENSIONS_KEY}`, () => { this._onEnabledExtensionsChanged(); }); global.settings.connect(`changed::${DISABLED_EXTENSIONS_KEY}`, () => { this._onEnabledExtensionsChanged(); }); global.settings.connect(`changed::${DISABLE_USER_EXTENSIONS_KEY}`, () => { this._onUserExtensionsEnabledChanged(); }); global.settings.connect(`changed::${EXTENSION_DISABLE_VERSION_CHECK_KEY}`, () => { this._onVersionValidationChanged(); }); global.settings.connect(`writable-changed::${ENABLED_EXTENSIONS_KEY}`, () => this._onSettingsWritableChanged()); global.settings.connect(`writable-changed::${DISABLED_EXTENSIONS_KEY}`, () => this._onSettingsWritableChanged()); await this._onVersionValidationChanged(); this._enabledExtensions = this._getEnabledExtensions(); let perUserDir = Gio.File.new_for_path(global.userdatadir); const includeUserDir = global.settings.get_boolean('allow-extension-installation'); const extensionFiles = [...FileUtils.collectFromDatadirs('extensions', includeUserDir)]; const extensionObjects = extensionFiles.map(({dir, info}) => { let fileType = info.get_file_type(); if (fileType !== Gio.FileType.DIRECTORY) return null; let uuid = info.get_name(); let existing = this.lookup(uuid); if (existing) { log(`Extension ${uuid} already installed in ${existing.path}. ${dir.get_path()} will not be loaded`); return null; } let extension; let type = dir.has_prefix(perUserDir) ? ExtensionType.PER_USER : ExtensionType.SYSTEM; try { extension = this.createExtensionObject(uuid, dir, type); } catch (error) { logError(error, `Could not load extension ${uuid}`); return null; } return extension; }).filter(extension => extension !== null).sort(this._compareExtensions.bind(this)); // after updating to a new major version, // update extensions before loading them await this._handleMajorUpdate(); for (const extension of extensionObjects) { // eslint-disable-next-line no-await-in-loop await this.loadExtension(extension); } } async _enableAllExtensions() { if (!this._initializationPromise) this._initializationPromise = this._loadExtensions(); await this._initializationPromise; for (const uuid of this._enabledExtensions) { // eslint-disable-next-line no-await-in-loop await this._callExtensionEnable(uuid); } } /** * Disables all currently enabled extensions. */ async _disableAllExtensions() { // Wait for extensions to finish loading before starting // to disable, otherwise some extensions may enable after // this function. if (this._initializationPromise) await this._initializationPromise; const extensionsToDisable = this._extensionOrder.slice(); // Extensions are disabled in the reverse order // from when they were enabled. extensionsToDisable.reverse(); for (const uuid of extensionsToDisable) { // eslint-disable-next-line no-await-in-loop await this._callExtensionDisable(uuid); } } async _sessionUpdated() { // Take care of added or removed sessionMode extensions await this._onEnabledExtensionsChanged(); await this._enableAllExtensions(); } } const ExtensionUpdateSource = GObject.registerClass( class ExtensionUpdateSource extends MessageTray.Source { constructor() { const appSys = Shell.AppSystem.get_default(); const app = appSys.lookup_app('org.gnome.Extensions.desktop') || appSys.lookup_app('com.mattjakeman.ExtensionManager.desktop'); super({ title: app.get_name(), icon: app.get_icon(), policy: MessageTray.NotificationPolicy.newForApp(app), }); this._app = app; } open() { this._app.activate(); Main.overview.hide(); Main.panel.closeCalendar(); } }); 070701000001B7000081A40000000000000000000000016712993F00000AF2000000000000000000000000000000000000002C00000000gnome-shell-47.1/js/ui/focusCaretTracker.js/* * Copyright 2012 Inclusive Design Research Centre, OCAD University. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library. If not, see . * * Author: * Joseph Scheuhammer * Contributor: * Magdalen Berns */ import Atspi from 'gi://Atspi'; import * as Signals from '../misc/signals.js'; const CARETMOVED = 'object:text-caret-moved'; const STATECHANGED = 'object:state-changed'; export class FocusCaretTracker extends Signals.EventEmitter { constructor() { super(); this._atspiListener = Atspi.EventListener.new(this._onChanged.bind(this)); this._atspiInited = false; this._focusListenerRegistered = false; this._caretListenerRegistered = false; } _onChanged(event) { if (event.type.indexOf(STATECHANGED) === 0) this.emit('focus-changed', event); else if (event.type === CARETMOVED) this.emit('caret-moved', event); } _initAtspi() { if (!this._atspiInited && Atspi.init() === 0) { Atspi.set_timeout(250, 250); this._atspiInited = true; } return this._atspiInited; } registerFocusListener() { if (!this._initAtspi() || this._focusListenerRegistered) return; this._atspiListener.register(`${STATECHANGED}:focused`); this._atspiListener.register(`${STATECHANGED}:selected`); this._focusListenerRegistered = true; } registerCaretListener() { if (!this._initAtspi() || this._caretListenerRegistered) return; this._atspiListener.register(CARETMOVED); this._caretListenerRegistered = true; } deregisterFocusListener() { if (!this._focusListenerRegistered) return; this._atspiListener.deregister(`${STATECHANGED}:focused`); this._atspiListener.deregister(`${STATECHANGED}:selected`); this._focusListenerRegistered = false; } deregisterCaretListener() { if (!this._caretListenerRegistered) return; this._atspiListener.deregister(CARETMOVED); this._caretListenerRegistered = false; } } 070701000001B8000081A40000000000000000000000016712993F00002479000000000000000000000000000000000000002500000000gnome-shell-47.1/js/ui/grabHelper.jsimport Clutter from 'gi://Clutter'; import St from 'gi://St'; import * as Main from './main.js'; import * as Params from '../misc/params.js'; /** * GrabHelper: * * Creates a new GrabHelper object, for dealing with keyboard and pointer grabs * associated with a set of actors. * * Note that the grab can be automatically dropped at any time by the user, and * your code just needs to deal with it; you shouldn't adjust behavior directly * after you call ungrab(), but instead pass an 'onUngrab' callback when you * call grab(). */ export class GrabHelper { /** * @param {Clutter.Actor} owner the actor that owns the GrabHelper * @param {*} params optional parameters to pass to Main.pushModal() */ constructor(owner, params) { if (!(owner instanceof Clutter.Actor)) throw new Error('GrabHelper owner must be a Clutter.Actor'); this._owner = owner; this._modalParams = params; this._grabStack = []; this._ignoreUntilRelease = false; this._modalCount = 0; } _isWithinGrabbedActor(actor) { let currentActor = this.currentGrab.actor; while (actor) { if (actor === currentActor) return true; actor = actor.get_parent(); } return false; } get currentGrab() { return this._grabStack[this._grabStack.length - 1] || {}; } get grabbed() { return this._grabStack.length > 0; } get grabStack() { return this._grabStack; } _findStackIndex(actor) { if (!actor) return -1; for (let i = 0; i < this._grabStack.length; i++) { if (this._grabStack[i].actor === actor) return i; } return -1; } _actorInGrabStack(actor) { while (actor) { let idx = this._findStackIndex(actor); if (idx >= 0) return idx; actor = actor.get_parent(); } return -1; } isActorGrabbed(actor) { return this._findStackIndex(actor) >= 0; } // grab: // @params: A bunch of parameters, see below // // The general effect of a "grab" is to ensure that the passed in actor // and all actors inside the grab get exclusive control of the mouse and // keyboard, with the grab automatically being dropped if the user tries // to dismiss it. The actor is passed in through @params.actor. // // grab() can be called multiple times, with the scope of the grab being // changed to a different actor every time. A nested grab does not have // to have its grabbed actor inside the parent grab actors. // // Grabs can be automatically dropped if the user tries to dismiss it // in one of two ways: the user clicking outside the currently grabbed // actor, or the user typing the Escape key. // // If the user clicks outside the grabbed actors, and the clicked on // actor is part of a previous grab in the stack, grabs will be popped // until that grab is active. However, the click event will not be // replayed to the actor. // // If the user types the Escape key, one grab from the grab stack will // be popped. // // When a grab is popped by user interacting as described above, if you // pass a callback as @params.onUngrab, it will be called with %true. // // If @params.focus is not null, we'll set the key focus directly // to that actor instead of navigating in @params.actor. This is for // use cases like menus, where we want to grab the menu actor, but keep // focus on the clicked on menu item. grab(params) { params = Params.parse(params, { actor: null, focus: null, onUngrab: null, }); let focus = global.stage.key_focus; let hadFocus = focus && this._isWithinGrabbedActor(focus); let newFocus = params.actor; if (this.isActorGrabbed(params.actor)) return true; params.savedFocus = focus; if (!this._takeModalGrab()) return false; this._grabStack.push(params); if (params.focus) { params.focus.grab_key_focus(); } else if (newFocus && hadFocus) { if (!newFocus.navigate_focus(null, St.DirectionType.TAB_FORWARD, false)) newFocus.grab_key_focus(); } return true; } grabAsync(params) { return new Promise((resolve, reject) => { params.onUngrab = resolve; if (!this.grab(params)) reject(new Error('Grab failed')); }); } _takeModalGrab() { let firstGrab = this._modalCount === 0; if (firstGrab) { let grab = Main.pushModal(this._owner, this._modalParams); if (grab.get_seat_state() !== Clutter.GrabState.ALL) { Main.popModal(grab); return false; } this._grab = grab; this._capturedEventId = this._owner.connect('captured-event', (actor, event) => { return this.onCapturedEvent(event); }); } this._modalCount++; return true; } _releaseModalGrab() { this._modalCount--; if (this._modalCount > 0) return; this._owner.disconnect(this._capturedEventId); this._ignoreUntilRelease = false; Main.popModal(this._grab); this._grab = null; } // ignoreRelease: // // Make sure that the next button release event evaluated by the // capture event handler returns false. This is designed for things // like the ComboBoxMenu that go away on press, but need to eat // the next release event. ignoreRelease() { this._ignoreUntilRelease = true; } // ungrab: // @params: The parameters for the grab; see below. // // Pops @params.actor from the grab stack, potentially dropping // the grab. If the actor is not on the grab stack, this call is // ignored with no ill effects. // // If the actor is not at the top of the grab stack, grabs are // popped until the grabbed actor is at the top of the grab stack. // The onUngrab callback for every grab is called for every popped // grab with the parameter %false. ungrab(params) { params = Params.parse(params, { actor: this.currentGrab.actor, isUser: false, }); let grabStackIndex = this._findStackIndex(params.actor); if (grabStackIndex < 0) return; let focus = global.stage.key_focus; let hadFocus = focus && this._isWithinGrabbedActor(focus); let poppedGrabs = this._grabStack.slice(grabStackIndex); // "Pop" all newly ungrabbed actors off the grab stack // by truncating the array. this._grabStack.length = grabStackIndex; for (let i = poppedGrabs.length - 1; i >= 0; i--) { let poppedGrab = poppedGrabs[i]; if (poppedGrab.onUngrab) poppedGrab.onUngrab(params.isUser); this._releaseModalGrab(); } if (hadFocus) { let poppedGrab = poppedGrabs[0]; if (poppedGrab.savedFocus) poppedGrab.savedFocus.grab_key_focus(); } } onCapturedEvent(event) { let type = event.type(); if (type === Clutter.EventType.KEY_PRESS && event.get_key_symbol() === Clutter.KEY_Escape) { this.ungrab({isUser: true}); return Clutter.EVENT_STOP; } let motion = type === Clutter.EventType.MOTION; let press = type === Clutter.EventType.BUTTON_PRESS; let release = type === Clutter.EventType.BUTTON_RELEASE; let button = press || release; let touchUpdate = type === Clutter.EventType.TOUCH_UPDATE; let touchBegin = type === Clutter.EventType.TOUCH_BEGIN; let touchEnd = type === Clutter.EventType.TOUCH_END; let touch = touchUpdate || touchBegin || touchEnd; if (touch && !global.display.is_pointer_emulating_sequence(event.get_event_sequence())) return Clutter.EVENT_PROPAGATE; if (this._ignoreUntilRelease && (motion || release || touch)) { if (release || touchEnd) this._ignoreUntilRelease = false; return Clutter.EVENT_PROPAGATE; } const targetActor = global.stage.get_event_actor(event); if (type === Clutter.EventType.ENTER || type === Clutter.EventType.LEAVE || this.currentGrab.actor.contains(targetActor)) return Clutter.EVENT_PROPAGATE; if (Main.keyboard.maybeHandleEvent(event)) return Clutter.EVENT_PROPAGATE; if (button || touchBegin) { // If we have a press event, ignore the next // motion/release events. if (press || touchBegin) this._ignoreUntilRelease = true; let i = this._actorInGrabStack(targetActor) + 1; this.ungrab({actor: this._grabStack[i].actor, isUser: true}); return Clutter.EVENT_STOP; } return Clutter.EVENT_STOP; } } 070701000001B9000081A40000000000000000000000016712993F00003289000000000000000000000000000000000000002D00000000gnome-shell-47.1/js/ui/ibusCandidatePopup.jsimport Clutter from 'gi://Clutter'; import GObject from 'gi://GObject'; import IBus from 'gi://IBus'; import Mtk from 'gi://Mtk'; import St from 'gi://St'; import * as BoxPointer from './boxpointer.js'; import * as Main from './main.js'; const MAX_CANDIDATES_PER_PAGE = 16; const DEFAULT_INDEX_LABELS = [ '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', 'a', 'b', 'c', 'd', 'e', 'f', ]; const CandidateArea = GObject.registerClass({ Signals: { 'candidate-clicked': { param_types: [ GObject.TYPE_UINT, GObject.TYPE_UINT, Clutter.ModifierType.$gtype, ], }, 'cursor-down': {}, 'cursor-up': {}, 'next-page': {}, 'previous-page': {}, }, }, class CandidateArea extends St.BoxLayout { _init() { super._init({ vertical: true, reactive: true, visible: false, }); this._candidateBoxes = []; for (let i = 0; i < MAX_CANDIDATES_PER_PAGE; ++i) { const box = new St.BoxLayout({ style_class: 'candidate-box', reactive: true, track_hover: true, }); box._indexLabel = new St.Label({style_class: 'candidate-index'}); box._candidateLabel = new St.Label({style_class: 'candidate-label'}); box.add_child(box._indexLabel); box.add_child(box._candidateLabel); this._candidateBoxes.push(box); this.add_child(box); let j = i; box.connect('button-release-event', (actor, event) => { this.emit('candidate-clicked', j, event.get_button(), event.get_state()); return Clutter.EVENT_PROPAGATE; }); } this._buttonBox = new St.BoxLayout({style_class: 'candidate-page-button-box'}); this._previousButton = new St.Button({ style_class: 'candidate-page-button candidate-page-button-previous button', x_expand: true, }); this._buttonBox.add_child(this._previousButton); this._nextButton = new St.Button({ style_class: 'candidate-page-button candidate-page-button-next button', x_expand: true, }); this._buttonBox.add_child(this._nextButton); this.add_child(this._buttonBox); this._previousButton.connect('clicked', () => { this.emit('previous-page'); }); this._nextButton.connect('clicked', () => { this.emit('next-page'); }); this._orientation = -1; this._cursorPosition = 0; } vfunc_scroll_event(event) { switch (event.get_scroll_direction()) { case Clutter.ScrollDirection.UP: this.emit('cursor-up'); break; case Clutter.ScrollDirection.DOWN: this.emit('cursor-down'); break; } return Clutter.EVENT_PROPAGATE; } setOrientation(orientation) { if (this._orientation === orientation) return; this._orientation = orientation; if (this._orientation === IBus.Orientation.HORIZONTAL) { this.vertical = false; this.remove_style_class_name('vertical'); this.add_style_class_name('horizontal'); this._previousButton.icon_name = 'go-previous-symbolic'; this._nextButton.icon_name = 'go-next-symbolic'; } else { // VERTICAL || SYSTEM this.vertical = true; this.add_style_class_name('vertical'); this.remove_style_class_name('horizontal'); this._previousButton.icon_name = 'go-up-symbolic'; this._nextButton.icon_name = 'go-down-symbolic'; } } setCandidates(indexes, candidates, cursorPosition, cursorVisible) { for (let i = 0; i < MAX_CANDIDATES_PER_PAGE; ++i) { let visible = i < candidates.length; let box = this._candidateBoxes[i]; box.visible = visible; if (!visible) continue; box._indexLabel.text = indexes && indexes[i] ? indexes[i] : DEFAULT_INDEX_LABELS[i]; box._candidateLabel.text = candidates[i]; } this._candidateBoxes[this._cursorPosition].remove_style_pseudo_class('selected'); this._cursorPosition = cursorPosition; if (cursorVisible) this._candidateBoxes[cursorPosition].add_style_pseudo_class('selected'); } updateButtons(wrapsAround, page, nPages) { if (nPages < 2) { this._buttonBox.hide(); return; } this._buttonBox.show(); this._previousButton.reactive = wrapsAround || page > 0; this._nextButton.reactive = wrapsAround || page < nPages - 1; } }); export const CandidatePopup = GObject.registerClass( class IbusCandidatePopup extends BoxPointer.BoxPointer { _init() { super._init(St.Side.TOP); this.visible = false; this.style_class = 'candidate-popup-boxpointer'; this._dummyCursor = new Clutter.Actor({opacity: 0}); Main.layoutManager.uiGroup.add_child(this._dummyCursor); Main.layoutManager.addTopChrome(this); const box = new St.BoxLayout({ style_class: 'candidate-popup-content', vertical: true, }); this.bin.set_child(box); this._preeditText = new St.Label({ style_class: 'candidate-popup-text', visible: false, }); box.add_child(this._preeditText); this._auxText = new St.Label({ style_class: 'candidate-popup-text', visible: false, }); box.add_child(this._auxText); this._candidateArea = new CandidateArea(); box.add_child(this._candidateArea); this._candidateArea.connect('previous-page', () => { this._panelService.page_up(); }); this._candidateArea.connect('next-page', () => { this._panelService.page_down(); }); this._candidateArea.connect('cursor-up', () => { this._panelService.cursor_up(); }); this._candidateArea.connect('cursor-down', () => { this._panelService.cursor_down(); }); this._candidateArea.connect('candidate-clicked', (area, index, button, state) => { this._panelService.candidate_clicked(index, button, state); }); this._panelService = null; } setPanelService(panelService) { this._panelService = panelService; if (!panelService) return; panelService.connect('set-cursor-location', (ps, x, y, w, h) => { const focusWindow = global.display.focus_window; let rect = new Mtk.Rectangle({x, y, width: w, height: h}); if (!global.stage.key_focus && focusWindow) rect = focusWindow.protocol_to_stage_rect(rect); this._setDummyCursorGeometry( rect.x, rect.y, rect.width, rect.height); }); try { panelService.connect('set-cursor-location-relative', (ps, x, y, w, h) => { const focusWindow = global.display.focus_window; if (!focusWindow) return; let rect = new Mtk.Rectangle({x, y, width: w, height: h}); rect = focusWindow.protocol_to_stage_rect(rect); const windowActor = focusWindow.get_compositor_private(); this._setDummyCursorGeometry( windowActor.x + rect.x, windowActor.y + rect.y, rect.w, rect.h); }); } catch (e) { // Only recent IBus versions have support for this signal // which is used for wayland clients. In order to work // with older IBus versions we can silently ignore the // signal's absence. } panelService.connect('update-preedit-text', (ps, text, cursorPosition, visible) => { this._preeditText.visible = visible; this._updateVisibility(); this._preeditText.text = text.get_text(); let attrs = text.get_attributes(); if (attrs) this._setTextAttributes(this._preeditText.clutter_text, attrs); }); panelService.connect('show-preedit-text', () => { this._preeditText.show(); this._updateVisibility(); }); panelService.connect('hide-preedit-text', () => { this._preeditText.hide(); this._updateVisibility(); }); panelService.connect('update-auxiliary-text', (_ps, text, visible) => { this._auxText.visible = visible; this._updateVisibility(); this._auxText.text = text.get_text(); }); panelService.connect('show-auxiliary-text', () => { this._auxText.show(); this._updateVisibility(); }); panelService.connect('hide-auxiliary-text', () => { this._auxText.hide(); this._updateVisibility(); }); panelService.connect('update-lookup-table', (_ps, lookupTable, visible) => { this._candidateArea.visible = visible; this._updateVisibility(); let nCandidates = lookupTable.get_number_of_candidates(); let cursorPos = lookupTable.get_cursor_pos(); let pageSize = lookupTable.get_page_size(); let nPages = Math.ceil(nCandidates / pageSize); let page = cursorPos === 0 ? 0 : Math.floor(cursorPos / pageSize); let startIndex = page * pageSize; let endIndex = Math.min((page + 1) * pageSize, nCandidates); let indexes = []; let indexLabel; for (let i = 0; (indexLabel = lookupTable.get_label(i)); ++i) indexes.push(indexLabel.get_text()); Main.keyboard.resetSuggestions(); Main.keyboard.setSuggestionsVisible(visible); let candidates = []; for (let i = startIndex; i < endIndex; ++i) { candidates.push(lookupTable.get_candidate(i).get_text()); Main.keyboard.addSuggestion(lookupTable.get_candidate(i).get_text(), () => { let index = i; this._panelService.candidate_clicked(index, 1, 0); }); } this._candidateArea.setCandidates(indexes, candidates, cursorPos % pageSize, lookupTable.is_cursor_visible()); this._candidateArea.setOrientation(lookupTable.get_orientation()); this._candidateArea.updateButtons(lookupTable.is_round(), page, nPages); }); panelService.connect('show-lookup-table', () => { Main.keyboard.setSuggestionsVisible(true); this._candidateArea.show(); this._updateVisibility(); }); panelService.connect('hide-lookup-table', () => { Main.keyboard.setSuggestionsVisible(false); this._candidateArea.hide(); this._updateVisibility(); }); panelService.connect('focus-out', () => { this.close(BoxPointer.PopupAnimation.NONE); Main.keyboard.resetSuggestions(); }); } _setDummyCursorGeometry(x, y, w, h) { this._dummyCursor.set_position(Math.round(x), Math.round(y)); this._dummyCursor.set_size(Math.round(w), Math.round(h)); if (this.visible) this.setPosition(this._dummyCursor, 0); } _updateVisibility() { let isVisible = !Main.keyboard.visible && (this._preeditText.visible || this._auxText.visible || this._candidateArea.visible); if (isVisible) { this.setPosition(this._dummyCursor, 0); this.open(BoxPointer.PopupAnimation.NONE); // We shouldn't be above some components like the screenshot UI, // so don't raise to the top. // The on-screen keyboard is expected to be above any entries, // so just above the keyboard gets us to the right layer. const {keyboardBox} = Main.layoutManager; this.get_parent().set_child_above_sibling(this, keyboardBox); } else { this.close(BoxPointer.PopupAnimation.NONE); } } _setTextAttributes(clutterText, ibusAttrList) { let attr; for (let i = 0; (attr = ibusAttrList.get(i)); ++i) { if (attr.get_attr_type() === IBus.AttrType.BACKGROUND) clutterText.set_selection(attr.get_start_index(), attr.get_end_index()); } } }); 070701000001BA000081A40000000000000000000000016712993F0000B152000000000000000000000000000000000000002300000000gnome-shell-47.1/js/ui/iconGrid.jsimport Clutter from 'gi://Clutter'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import Meta from 'gi://Meta'; import Shell from 'gi://Shell'; import St from 'gi://St'; import * as Params from '../misc/params.js'; import * as Main from './main.js'; const ICON_SIZE = 96; const PAGE_SWITCH_TIME = 300; /** @enum {number} */ const IconSize = { LARGE: 96, MEDIUM: 64, MEDIUM_SMALL: 48, SMALL: 32, SMALLER: 24, TINY: 16, }; const APPICON_ANIMATION_OUT_SCALE = 3; const APPICON_ANIMATION_OUT_TIME = 250; const ICON_POSITION_DELAY = 10; const defaultGridModes = [ { rows: 8, columns: 3, }, { rows: 6, columns: 4, }, { rows: 4, columns: 6, }, { rows: 3, columns: 8, }, ]; const LEFT_DIVIDER_LEEWAY = 20; const RIGHT_DIVIDER_LEEWAY = 20; /** @enum {number} */ export const DragLocation = { INVALID: 0, START_EDGE: 1, ON_ICON: 2, END_EDGE: 3, EMPTY_SPACE: 4, }; export const BaseIcon = GObject.registerClass( class BaseIcon extends Shell.SquareBin { _init(label, params) { params = Params.parse(params, { createIcon: null, setSizeManually: false, showLabel: true, }); let styleClass = 'overview-icon'; if (params.showLabel) styleClass += ' overview-icon-with-label'; super._init({style_class: styleClass}); this._box = new St.BoxLayout({ vertical: true, x_expand: true, y_expand: true, }); this.set_child(this._box); this.iconSize = ICON_SIZE; this._iconBin = new St.Bin({x_align: Clutter.ActorAlign.CENTER}); this._box.add_child(this._iconBin); if (params.showLabel) { this.label = new St.Label({text: label}); this.label.clutter_text.set({ x_align: Clutter.ActorAlign.CENTER, y_align: Clutter.ActorAlign.CENTER, }); this._box.add_child(this.label); } else { this.label = null; } if (params.createIcon) this.createIcon = params.createIcon; this._setSizeManually = params.setSizeManually; this.icon = null; let cache = St.TextureCache.get_default(); cache.connectObject( 'icon-theme-changed', this._onIconThemeChanged.bind(this), this); } // This can be overridden by a subclass, or by the createIcon // parameter to _init() createIcon(_size) { throw new GObject.NotImplementedError(`createIcon in ${this.constructor.name}`); } setIconSize(size) { if (!this._setSizeManually) throw new Error('setSizeManually has to be set to use setIconsize'); if (size === this.iconSize) return; this._createIconTexture(size); } _createIconTexture(size) { if (this.icon) this.icon.destroy(); this.iconSize = size; this.icon = this.createIcon(this.iconSize); this._iconBin.child = this.icon; } vfunc_style_changed() { super.vfunc_style_changed(); let node = this.get_theme_node(); let size; if (this._setSizeManually) { size = this.iconSize; } else { const {scaleFactor} = St.ThemeContext.get_for_stage(global.stage); let [found, len] = node.lookup_length('icon-size', false); size = found ? len / scaleFactor : ICON_SIZE; } if (this.iconSize === size && this._iconBin.child) return; this._createIconTexture(size); } _onIconThemeChanged() { // St.Icon updates automatically if (!(this.icon instanceof St.Icon)) this._createIconTexture(this.iconSize); } animateZoomOut() { // Animate only the child instead of the entire actor, so the // styles like hover and running are not applied while // animating. zoomOutActor(this.child); } animateZoomOutAtPos(x, y) { zoomOutActorAtPos(this.child, x, y); } update() { this._createIconTexture(this.iconSize); } }); /** * @param {Clutter.Actor} actor */ export function zoomOutActor(actor) { let [x, y] = actor.get_transformed_position(); zoomOutActorAtPos(actor, x, y); } function zoomOutActorAtPos(actor, x, y) { const monitor = Main.layoutManager.findMonitorForActor(actor); if (!monitor) return; const actorClone = new Clutter.Clone({ source: actor, reactive: false, }); let [width, height] = actor.get_transformed_size(); actorClone.set_size(width, height); actorClone.set_position(x, y); actorClone.opacity = 255; actorClone.set_pivot_point(0.5, 0.5); Main.uiGroup.add_child(actorClone); // Avoid monitor edges to not zoom outside the current monitor let scaledWidth = width * APPICON_ANIMATION_OUT_SCALE; let scaledHeight = height * APPICON_ANIMATION_OUT_SCALE; let scaledX = x - (scaledWidth - width) / 2; let scaledY = y - (scaledHeight - height) / 2; let containedX = Math.clamp(scaledX, monitor.x, monitor.x + monitor.width - scaledWidth); let containedY = Math.clamp(scaledY, monitor.y, monitor.y + monitor.height - scaledHeight); actorClone.ease({ scale_x: APPICON_ANIMATION_OUT_SCALE, scale_y: APPICON_ANIMATION_OUT_SCALE, translation_x: containedX - scaledX, translation_y: containedY - scaledY, opacity: 0, duration: APPICON_ANIMATION_OUT_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => actorClone.destroy(), }); } function animateIconPosition(icon, box, nChangedIcons) { if (!icon.has_allocation() || icon.allocation.equal(box) || icon.opacity === 0) { icon.allocate(box); return false; } icon.save_easing_state(); icon.set_easing_mode(Clutter.AnimationMode.EASE_OUT_QUAD); icon.set_easing_delay(nChangedIcons * ICON_POSITION_DELAY); icon.allocate(box); icon.restore_easing_state(); return true; } function swap(value, length) { return length - value - 1; } export const IconGridLayout = GObject.registerClass({ Properties: { 'allow-incomplete-pages': GObject.ParamSpec.boolean('allow-incomplete-pages', null, null, GObject.ParamFlags.READWRITE, true), 'column-spacing': GObject.ParamSpec.int('column-spacing', null, null, GObject.ParamFlags.READWRITE, 0, GLib.MAXINT32, 0), 'columns-per-page': GObject.ParamSpec.int('columns-per-page', null, null, GObject.ParamFlags.READWRITE, 1, GLib.MAXINT32, 6), 'fixed-icon-size': GObject.ParamSpec.int('fixed-icon-size', null, null, GObject.ParamFlags.READWRITE, -1, GLib.MAXINT32, -1), 'icon-size': GObject.ParamSpec.int('icon-size', null, null, GObject.ParamFlags.READABLE, 0, GLib.MAXINT32, 0), 'last-row-align': GObject.ParamSpec.enum('last-row-align', null, null, GObject.ParamFlags.READWRITE, Clutter.ActorAlign.$gtype, Clutter.ActorAlign.FILL), 'max-column-spacing': GObject.ParamSpec.int('max-column-spacing', null, null, GObject.ParamFlags.READWRITE, -1, GLib.MAXINT32, -1), 'max-row-spacing': GObject.ParamSpec.int('max-row-spacing', null, null, GObject.ParamFlags.READWRITE, -1, GLib.MAXINT32, -1), 'orientation': GObject.ParamSpec.enum('orientation', null, null, GObject.ParamFlags.READWRITE, Clutter.Orientation.$gtype, Clutter.Orientation.VERTICAL), 'page-halign': GObject.ParamSpec.enum('page-halign', null, null, GObject.ParamFlags.READWRITE, Clutter.ActorAlign.$gtype, Clutter.ActorAlign.FILL), 'page-padding': GObject.ParamSpec.boxed('page-padding', null, null, GObject.ParamFlags.READWRITE, Clutter.Margin.$gtype), 'page-valign': GObject.ParamSpec.enum('page-valign', null, null, GObject.ParamFlags.READWRITE, Clutter.ActorAlign.$gtype, Clutter.ActorAlign.FILL), 'row-spacing': GObject.ParamSpec.int('row-spacing', null, null, GObject.ParamFlags.READWRITE, 0, GLib.MAXINT32, 0), 'rows-per-page': GObject.ParamSpec.int('rows-per-page', null, null, GObject.ParamFlags.READWRITE, 1, GLib.MAXINT32, 4), }, Signals: { 'pages-changed': {}, }, }, class IconGridLayout extends Clutter.LayoutManager { _init(params = {}) { this._orientation = params.orientation ?? Clutter.Orientation.VERTICAL; super._init(params); if (!this.pagePadding) this.pagePadding = new Clutter.Margin(); this._iconSize = this.fixedIconSize !== -1 ? this.fixedIconSize : IconSize.LARGE; this._pageSizeChanged = false; this._pageHeight = 0; this._pageWidth = 0; this._nPages = -1; // [ // { // children: [ itemData, itemData, itemData, ... ], // }, // { // children: [ itemData, itemData, itemData, ... ], // }, // { // children: [ itemData, itemData, itemData, ... ], // }, // ] this._pages = []; // { // item: { // actor: Clutter.Actor, // pageIndex: , // }, // item: { // actor: Clutter.Actor, // pageIndex: , // }, // } this._items = new Map(); this._containerDestroyedId = 0; this._updateIconSizesLaterId = 0; this._childrenMaxSize = -1; } _findBestIconSize() { const nColumns = this.columnsPerPage; const nRows = this.rowsPerPage; const columnSpacingPerPage = this.columnSpacing * (nColumns - 1); const rowSpacingPerPage = this.rowSpacing * (nRows - 1); const [firstItem] = this._container; if (this.fixedIconSize !== -1) return this.fixedIconSize; const iconSizes = Object.values(IconSize).sort((a, b) => b - a); for (const size of iconSizes) { let usedWidth, usedHeight; if (firstItem) { firstItem.icon.setIconSize(size); const [firstItemWidth, firstItemHeight] = firstItem.get_preferred_size(); const itemSize = Math.max(firstItemWidth, firstItemHeight); usedWidth = itemSize * nColumns; usedHeight = itemSize * nRows; } else { usedWidth = size * nColumns; usedHeight = size * nRows; } const emptyHSpace = this._pageWidth - usedWidth - columnSpacingPerPage - this.pagePadding.left - this.pagePadding.right; const emptyVSpace = this._pageHeight - usedHeight - rowSpacingPerPage - this.pagePadding.top - this.pagePadding.bottom; if (emptyHSpace >= 0 && emptyVSpace > 0) return size; } return IconSize.TINY; } _getChildrenMaxSize() { if (this._childrenMaxSize === -1) { let minWidth = 0; let minHeight = 0; const nPages = this._pages.length; for (let pageIndex = 0; pageIndex < nPages; pageIndex++) { const page = this._pages[pageIndex]; const nVisibleItems = page.visibleChildren.length; for (let itemIndex = 0; itemIndex < nVisibleItems; itemIndex++) { const item = page.visibleChildren[itemIndex]; const childMinHeight = item.get_preferred_height(-1)[0]; const childMinWidth = item.get_preferred_width(-1)[0]; minWidth = Math.max(minWidth, childMinWidth); minHeight = Math.max(minHeight, childMinHeight); } } this._childrenMaxSize = Math.max(minWidth, minHeight); } return this._childrenMaxSize; } _updateVisibleChildrenForPage(pageIndex) { this._pages[pageIndex].visibleChildren = this._pages[pageIndex].children.filter(actor => actor.visible); } _updatePages() { for (let i = 0; i < this._pages.length; i++) this._relocateSurplusItems(i); } _unlinkItem(item) { const itemData = this._items.get(item); item.disconnect(itemData.destroyId); item.disconnect(itemData.visibleId); item.disconnect(itemData.queueRelayoutId); this._items.delete(item); } _removePage(pageIndex) { // Make sure to not leave any icon left here this._pages[pageIndex].children.forEach(item => { this._unlinkItem(item); }); // Adjust the page indexes of items after this page for (const itemData of this._items.values()) { if (itemData.pageIndex > pageIndex) itemData.pageIndex--; } this._pages.splice(pageIndex, 1); this.emit('pages-changed'); } _fillItemVacancies(pageIndex) { if (pageIndex >= this._pages.length - 1) return; const visiblePageItems = this._pages[pageIndex].visibleChildren; const itemsPerPage = this.columnsPerPage * this.rowsPerPage; // No reduce needed if (visiblePageItems.length === itemsPerPage) return; const visibleNextPageItems = this._pages[pageIndex + 1].visibleChildren; const nMissingItems = Math.min(itemsPerPage - visiblePageItems.length, visibleNextPageItems.length); // Append to the current page the first items of the next page for (let i = 0; i < nMissingItems; i++) { const reducedItem = visibleNextPageItems[i]; this._removeItemData(reducedItem); this._addItemToPage(reducedItem, pageIndex, -1); } } _removeItemData(item) { const itemData = this._items.get(item); const pageIndex = itemData.pageIndex; const page = this._pages[pageIndex]; const itemIndex = page.children.indexOf(item); this._unlinkItem(item); page.children.splice(itemIndex, 1); this._updateVisibleChildrenForPage(pageIndex); // Delete the page if this is the last icon in it const visibleItems = this._pages[pageIndex].visibleChildren; if (visibleItems.length === 0) this._removePage(pageIndex); if (!this.allowIncompletePages) this._fillItemVacancies(pageIndex); } _relocateSurplusItems(pageIndex) { const visiblePageItems = this._pages[pageIndex].visibleChildren; const itemsPerPage = this.columnsPerPage * this.rowsPerPage; // No overflow needed if (visiblePageItems.length <= itemsPerPage) return; const nExtraItems = visiblePageItems.length - itemsPerPage; for (let i = 0; i < nExtraItems; i++) { const overflowIndex = visiblePageItems.length - i - 1; const overflowItem = visiblePageItems[overflowIndex]; this._removeItemData(overflowItem); this._addItemToPage(overflowItem, pageIndex + 1, 0); } } _appendPage() { this._pages.push({children: []}); this.emit('pages-changed'); } _addItemToPage(item, pageIndex, index) { // Ensure we have at least one page if (this._pages.length === 0) this._appendPage(); // Append a new page if necessary if (pageIndex === this._pages.length) this._appendPage(); if (pageIndex === -1) pageIndex = this._pages.length - 1; if (index === -1) index = this._pages[pageIndex].children.length; this._items.set(item, { actor: item, pageIndex, destroyId: item.connect('destroy', () => this._removeItemData(item)), visibleId: item.connect('notify::visible', () => { const itemData = this._items.get(item); this._updateVisibleChildrenForPage(itemData.pageIndex); if (item.visible) this._relocateSurplusItems(itemData.pageIndex); else if (!this.allowIncompletePages) this._fillItemVacancies(itemData.pageIndex); }), queueRelayoutId: item.connect('queue-relayout', () => { this._childrenMaxSize = -1; }), }); item.icon.setIconSize(this._iconSize); this._pages[pageIndex].children.splice(index, 0, item); this._updateVisibleChildrenForPage(pageIndex); this._relocateSurplusItems(pageIndex); } _calculateSpacing(childSize) { const nColumns = this.columnsPerPage; const nRows = this.rowsPerPage; const usedWidth = childSize * nColumns; const usedHeight = childSize * nRows; const columnSpacingPerPage = this.columnSpacing * (nColumns - 1); const rowSpacingPerPage = this.rowSpacing * (nRows - 1); const emptyHSpace = this._pageWidth - usedWidth - columnSpacingPerPage - this.pagePadding.left - this.pagePadding.right; const emptyVSpace = this._pageHeight - usedHeight - rowSpacingPerPage - this.pagePadding.top - this.pagePadding.bottom; let leftEmptySpace = this.pagePadding.left; let topEmptySpace = this.pagePadding.top; let hSpacing; let vSpacing; switch (this.pageHalign) { case Clutter.ActorAlign.START: hSpacing = this.columnSpacing; break; case Clutter.ActorAlign.CENTER: leftEmptySpace += Math.floor(emptyHSpace / 2); hSpacing = this.columnSpacing; break; case Clutter.ActorAlign.END: leftEmptySpace += emptyHSpace; hSpacing = this.columnSpacing; break; case Clutter.ActorAlign.FILL: hSpacing = this.columnSpacing + emptyHSpace / (nColumns - 1); // Maybe constraint horizontal spacing if (this.maxColumnSpacing !== -1 && hSpacing > this.maxColumnSpacing) { const extraHSpacing = (this.maxColumnSpacing - this.columnSpacing) * (nColumns - 1); hSpacing = this.maxColumnSpacing; leftEmptySpace += Math.max((emptyHSpace - extraHSpacing) / 2, 0); } break; } switch (this.pageValign) { case Clutter.ActorAlign.START: vSpacing = this.rowSpacing; break; case Clutter.ActorAlign.CENTER: topEmptySpace += Math.floor(emptyVSpace / 2); vSpacing = this.rowSpacing; break; case Clutter.ActorAlign.END: topEmptySpace += emptyVSpace; vSpacing = this.rowSpacing; break; case Clutter.ActorAlign.FILL: vSpacing = this.rowSpacing + emptyVSpace / (nRows - 1); // Maybe constraint vertical spacing if (this.maxRowSpacing !== -1 && vSpacing > this.maxRowSpacing) { const extraVSpacing = (this.maxRowSpacing - this.rowSpacing) * (nRows - 1); vSpacing = this.maxRowSpacing; topEmptySpace += Math.max((emptyVSpace - extraVSpacing) / 2, 0); } break; } return [leftEmptySpace, topEmptySpace, hSpacing, vSpacing]; } _getRowPadding(align, items, itemIndex, childSize, spacing) { if (align === Clutter.ActorAlign.START || align === Clutter.ActorAlign.FILL) return 0; const nRows = Math.ceil(items.length / this.columnsPerPage); let rowAlign = 0; const row = Math.floor(itemIndex / this.columnsPerPage); // Only apply to the last row if (row < nRows - 1) return 0; const rowStart = row * this.columnsPerPage; const rowEnd = Math.min((row + 1) * this.columnsPerPage - 1, items.length - 1); const itemsInThisRow = rowEnd - rowStart + 1; const nEmpty = this.columnsPerPage - itemsInThisRow; const availableWidth = nEmpty * (spacing + childSize); const isRtl = Clutter.get_default_text_direction() === Clutter.TextDirection.RTL; switch (align) { case Clutter.ActorAlign.CENTER: rowAlign = availableWidth / 2; break; case Clutter.ActorAlign.END: rowAlign = availableWidth; break; // START and FILL align are handled at the beginning of the function } return isRtl ? rowAlign * -1 : rowAlign; } _onDestroy() { if (this._updateIconSizesLaterId >= 0) { const laters = global.compositor.get_laters(); laters.remove(this._updateIconSizesLaterId); this._updateIconSizesLaterId = 0; } } vfunc_set_container(container) { this._container?.disconnectObject(this); this._container = container; if (this._container) this._container.connectObject('destroy', this._onDestroy.bind(this), this); } vfunc_get_preferred_width(_container, _forHeight) { let minWidth = -1; let natWidth = -1; switch (this._orientation) { case Clutter.Orientation.VERTICAL: minWidth = IconSize.TINY; natWidth = this._pageWidth; break; case Clutter.Orientation.HORIZONTAL: minWidth = this._pageWidth * this._pages.length; natWidth = minWidth; break; } return [minWidth, natWidth]; } vfunc_get_preferred_height(_container, _forWidth) { let minHeight = -1; let natHeight = -1; switch (this._orientation) { case Clutter.Orientation.VERTICAL: minHeight = this._pageHeight * this._pages.length; natHeight = minHeight; break; case Clutter.Orientation.HORIZONTAL: minHeight = IconSize.TINY; natHeight = this._pageHeight; break; } return [minHeight, natHeight]; } vfunc_allocate() { if (this._pageWidth === 0 || this._pageHeight === 0) throw new Error('IconGridLayout.adaptToSize wasn\'t called before allocation'); const isRtl = Clutter.get_default_text_direction() === Clutter.TextDirection.RTL; const childSize = this._getChildrenMaxSize(); const [leftEmptySpace, topEmptySpace, hSpacing, vSpacing] = this._calculateSpacing(childSize); const childBox = new Clutter.ActorBox(); let nChangedIcons = 0; const columnsPerPage = this.columnsPerPage; const orientation = this._orientation; const pageWidth = this._pageWidth; const pageHeight = this._pageHeight; const pageSizeChanged = this._pageSizeChanged; const lastRowAlign = this.lastRowAlign; const shouldEaseItems = this._shouldEaseItems; this._pages.forEach((page, pageIndex) => { if (isRtl && orientation === Clutter.Orientation.HORIZONTAL) pageIndex = swap(pageIndex, this._pages.length); page.visibleChildren.forEach((item, itemIndex) => { const row = Math.floor(itemIndex / columnsPerPage); let column = itemIndex % columnsPerPage; if (isRtl) column = swap(column, columnsPerPage); const rowPadding = this._getRowPadding(lastRowAlign, page.visibleChildren, itemIndex, childSize, hSpacing); // Icon position let x = leftEmptySpace + rowPadding + column * (childSize + hSpacing); let y = topEmptySpace + row * (childSize + vSpacing); // Page start switch (orientation) { case Clutter.Orientation.HORIZONTAL: x += pageIndex * pageWidth; break; case Clutter.Orientation.VERTICAL: y += pageIndex * pageHeight; break; } childBox.set_origin(Math.floor(x), Math.floor(y)); const [,, naturalWidth, naturalHeight] = item.get_preferred_size(); childBox.set_size( Math.max(childSize, naturalWidth), Math.max(childSize, naturalHeight)); if (!shouldEaseItems || pageSizeChanged) item.allocate(childBox); else if (animateIconPosition(item, childBox, nChangedIcons)) nChangedIcons++; }); }); this._pageSizeChanged = false; this._shouldEaseItems = false; } _findBestPageToAppend(startPage) { const itemsPerPage = this.columnsPerPage * this.rowsPerPage; for (let i = startPage; i < this._pages.length; i++) { const visibleItems = this._pages[i].visibleChildren; if (visibleItems.length < itemsPerPage) return i; } return this._pages.length; } /** * addItem: * * @param {Clutter.Actor} item item to append to the grid * @param {number} page page number * @param {number} index position in the page * * Adds `item` to the grid. `item` must not be part of the grid. * * If `index` exceeds the number of items per page, `item` will * be added to the next page. * * `page` must be a number between 0 and the number of pages. * Adding to the page after next will create a new page. */ addItem(item, page = -1, index = -1) { if (this._items.has(item)) throw new Error(`Item ${item} already added to IconGridLayout`); if (page > this._pages.length) throw new Error(`Cannot add ${item} to page ${page}`); if (!this._container) return; if (page !== -1 && index === -1) page = this._findBestPageToAppend(page); this._shouldEaseItems = true; this._container.add_child(item); this._addItemToPage(item, page, index); } /** * appendItem: * * @param {Clutter.Actor} item item to append to the grid * * Appends @item to the grid. @item must not be part of the grid. */ appendItem(item) { this.addItem(item); } /** * moveItem: * * @param {Clutter.Actor} item item to move * @param {number} newPage new page of the item * @param {number} newPosition new page of the item * * Moves `item` to the grid. `item` must be part of the grid. */ moveItem(item, newPage, newPosition) { if (!this._items.has(item)) throw new Error(`Item ${item} is not part of the IconGridLayout`); this._shouldEaseItems = true; this._removeItemData(item); if (newPage !== -1 && newPosition === -1) newPage = this._findBestPageToAppend(newPage); this._addItemToPage(item, newPage, newPosition); } /** * removeItem: * * @param {Clutter.Actor} item item to remove from the grid * * Removes `item` to the grid. `item` must be part of the grid. */ removeItem(item) { if (!this._items.has(item)) throw new Error(`Item ${item} is not part of the IconGridLayout`); if (!this._container) return; this._shouldEaseItems = true; this._container.remove_child(item); this._removeItemData(item); } /** * getItemsAtPage: * * @param {number} pageIndex page index * * Retrieves the children at page @pageIndex. Children may be invisible. * * @returns {Array} an array of {Clutter.Actor}s */ getItemsAtPage(pageIndex) { if (pageIndex >= this._pages.length) throw new Error(`IconGridLayout does not have page ${pageIndex}`); return [...this._pages[pageIndex].children]; } /** * getItemPosition: * * Retrieves the position of `item` is its page, or -1 if `item` is not * part of the grid. * * @param {BaseIcon} item the item * @returns {[number, number]} the page and position of `item` */ getItemPosition(item) { if (!this._items.has(item)) return [-1, -1]; const itemData = this._items.get(item); const visibleItems = this._pages[itemData.pageIndex].visibleChildren; return [itemData.pageIndex, visibleItems.indexOf(item)]; } /** * getItemAt: * * Retrieves the item at @page and @position. * * @param {number} page the page * @param {number} position the position in page * * @returns {BaseItem} the item at @page and @position, or null */ getItemAt(page, position) { if (page < 0 || page >= this._pages.length) return null; const visibleItems = this._pages[page].visibleChildren; if (position < 0 || position >= visibleItems.length) return null; return visibleItems[position]; } /** * getItemPage: * * Retrieves the page `item` is in, or -1 if `item` is not part of the grid. * * @param {BaseIcon} item the item * * @returns {number} the page where `item` is in */ getItemPage(item) { if (!this._items.has(item)) return -1; const itemData = this._items.get(item); return itemData.pageIndex; } ensureIconSizeUpdated() { if (this._updateIconSizesLaterId === 0) return Promise.resolve(); return new Promise( resolve => this._iconSizeUpdateResolveCbs.push(resolve)); } adaptToSize(pageWidth, pageHeight) { if (this._pageWidth === pageWidth && this._pageHeight === pageHeight) return; this._pageWidth = pageWidth; this._pageHeight = pageHeight; this._pageSizeChanged = true; if (this._updateIconSizesLaterId === 0) { const laters = global.compositor.get_laters(); this._updateIconSizesLaterId = laters.add(Meta.LaterType.BEFORE_REDRAW, () => { const iconSize = this._findBestIconSize(); if (this._iconSize !== iconSize) { this._iconSize = iconSize; for (const child of this._container) child.icon.setIconSize(iconSize); this.notify('icon-size'); } this._updateIconSizesLaterId = 0; return GLib.SOURCE_REMOVE; }); } } /** * getDropTarget: * * Retrieves the item located at (`x`, `y`), as well as the drag location. * Both `x` and `y` are relative to the grid. * * @param {number} x position of the horizontal axis * @param {number} y position of the vertical axis * * @returns {[BaseIcon | null, DragLocation]} the item and drag location * under (`x`, `y`) */ getDropTarget(x, y) { const childSize = this._getChildrenMaxSize(); const [leftEmptySpace, topEmptySpace, hSpacing, vSpacing] = this._calculateSpacing(childSize); const isRtl = Clutter.get_default_text_direction() === Clutter.TextDirection.RTL; let page = this._orientation === Clutter.Orientation.VERTICAL ? Math.floor(y / this._pageHeight) : Math.floor(x / this._pageWidth); // Out of bounds if (page >= this._pages.length) return [0, 0, DragLocation.INVALID]; if (isRtl && this._orientation === Clutter.Orientation.HORIZONTAL) page = swap(page, this._pages.length); // Get page-relative coordinates let adjX = x; let adjY = y; if (this._orientation === Clutter.Orientation.HORIZONTAL) adjX %= this._pageWidth; else adjY %= this._pageHeight; const gridWidth = childSize * this.columnsPerPage + hSpacing * (this.columnsPerPage - 1); const gridHeight = childSize * this.rowsPerPage + vSpacing * (this.rowsPerPage - 1); const inTopEmptySpace = adjY < topEmptySpace; const inLeftEmptySpace = adjX < leftEmptySpace; const inRightEmptySpace = adjX > leftEmptySpace + gridWidth; const inBottomEmptySpace = adjY > topEmptySpace + gridHeight; if (inTopEmptySpace || inBottomEmptySpace) return [0, 0, DragLocation.INVALID]; const halfHSpacing = hSpacing / 2; const halfVSpacing = vSpacing / 2; const visibleItems = this._pages[page].visibleChildren; for (let i = 0; i < visibleItems.length; i++) { const item = visibleItems[i]; const childBox = item.allocation; const firstInRow = i % this.columnsPerPage === 0; const lastInRow = i % this.columnsPerPage === this.columnsPerPage - 1; // Check icon boundaries if ((inLeftEmptySpace && firstInRow) || (inRightEmptySpace && lastInRow)) { if (y < childBox.y1 - halfVSpacing || y > childBox.y2 + halfVSpacing) continue; } else { // eslint-disable-next-line no-lonely-if if (x < childBox.x1 - halfHSpacing || x > childBox.x2 + halfHSpacing || y < childBox.y1 - halfVSpacing || y > childBox.y2 + halfVSpacing) continue; } let dragLocation; if (x < childBox.x1 + LEFT_DIVIDER_LEEWAY) dragLocation = DragLocation.START_EDGE; else if (x > childBox.x2 - RIGHT_DIVIDER_LEEWAY) dragLocation = DragLocation.END_EDGE; else dragLocation = DragLocation.ON_ICON; if (isRtl) { if (dragLocation === DragLocation.START_EDGE) dragLocation = DragLocation.END_EDGE; else if (dragLocation === DragLocation.END_EDGE) dragLocation = DragLocation.START_EDGE; } return [page, i, dragLocation]; } return [page, -1, DragLocation.EMPTY_SPACE]; } get iconSize() { return this._iconSize; } get nPages() { return this._pages.length; } get orientation() { return this._orientation; } set orientation(v) { if (this._orientation === v) return; switch (v) { case Clutter.Orientation.VERTICAL: this.request_mode = Clutter.RequestMode.HEIGHT_FOR_WIDTH; break; case Clutter.Orientation.HORIZONTAL: this.request_mode = Clutter.RequestMode.WIDTH_FOR_HEIGHT; break; } this._orientation = v; this.notify('orientation'); } get pageHeight() { return this._pageHeight; } get pageWidth() { return this._pageWidth; } }); export const IconGrid = GObject.registerClass({ Signals: { 'pages-changed': {}, }, }, class IconGrid extends St.Viewport { _init(layoutParams = {}) { layoutParams = Params.parse(layoutParams, { allow_incomplete_pages: false, orientation: Clutter.Orientation.HORIZONTAL, columns_per_page: 6, rows_per_page: 4, page_halign: Clutter.ActorAlign.FILL, page_padding: new Clutter.Margin(), page_valign: Clutter.ActorAlign.FILL, last_row_align: Clutter.ActorAlign.START, column_spacing: 0, row_spacing: 0, }); const layoutManager = new IconGridLayout(layoutParams); const pagesChangedId = layoutManager.connect('pages-changed', () => this.emit('pages-changed')); super._init({ style_class: 'icon-grid', layoutManager, x_expand: true, y_expand: true, }); this._gridModes = defaultGridModes; this._currentPage = 0; this._currentMode = -1; this.connect('destroy', () => layoutManager.disconnect(pagesChangedId)); } vfunc_child_added(child) { child._iconGridKeyFocusInId = child.connect('key-focus-in', () => { this._ensureItemIsVisible(child); }); } _ensureItemIsVisible(item) { if (!this.contains(item)) throw new Error(`${item} is not a child of IconGrid`); const itemPage = this.layout_manager.getItemPage(item); this.goToPage(itemPage); } _setGridMode(modeIndex) { if (this._currentMode === modeIndex) return; this._currentMode = modeIndex; if (modeIndex !== -1) { const newMode = this._gridModes[modeIndex]; this.layout_manager.rows_per_page = newMode.rows; this.layout_manager.columns_per_page = newMode.columns; } } _findBestModeForSize(width, height) { const {pagePadding} = this.layout_manager; width -= pagePadding.left + pagePadding.right; height -= pagePadding.top + pagePadding.bottom; const sizeRatio = width / height; let closestRatio = Infinity; let bestMode = -1; for (let modeIndex in this._gridModes) { const mode = this._gridModes[modeIndex]; const modeRatio = mode.columns / mode.rows; if (Math.abs(sizeRatio - modeRatio) < Math.abs(sizeRatio - closestRatio)) { closestRatio = modeRatio; bestMode = modeIndex; } } this._setGridMode(bestMode); } vfunc_child_removed(child) { child.disconnect(child._iconGridKeyFocusInId); delete child._iconGridKeyFocusInId; } vfunc_allocate(box) { const [width, height] = box.get_size(); this._findBestModeForSize(width, height); this.layout_manager.adaptToSize(width, height); super.vfunc_allocate(box); } vfunc_style_changed() { super.vfunc_style_changed(); const node = this.get_theme_node(); this.layout_manager.column_spacing = node.get_length('column-spacing'); this.layout_manager.row_spacing = node.get_length('row-spacing'); let [found, value] = node.lookup_length('max-column-spacing', false); this.layout_manager.max_column_spacing = found ? value : -1; [found, value] = node.lookup_length('max-row-spacing', false); this.layout_manager.max_row_spacing = found ? value : -1; const padding = new Clutter.Margin(); ['top', 'right', 'bottom', 'left'].forEach(side => { padding[side] = node.get_length(`page-padding-${side}`); }); this.layout_manager.page_padding = padding; } /** * addItem: * * @param {BaseItem} item item to append to the grid * @param {number} page page number * @param {number} index position in the page * * Adds `item` to the grid. `item` must not be part of the grid. * * If `index` exceeds the number of items per page, `item` will * be added to the next page. * * `page` must be a number between 0 and the number of pages. * Adding to the page after next will create a new page. */ addItem(item, page = -1, index = -1) { if (!(item.icon instanceof BaseIcon)) throw new Error('Only items with a BaseIcon icon property can be added to IconGrid'); this.layout_manager.addItem(item, page, index); } /** * appendItem: * * @param {Clutter.Actor} item item to append to the grid * * Appends `item` to the grid. `item` must not be part of the grid. */ appendItem(item) { this.layout_manager.appendItem(item); } /** * moveItem: * * Moves `item` to the grid. `item` must be part of the grid. * * @param {Clutter.Actor} item item to move * @param {number} newPage new page of the item * @param {number} newPosition new page of the item */ moveItem(item, newPage, newPosition) { this.layout_manager.moveItem(item, newPage, newPosition); this.queue_relayout(); } /** * removeItem: * * Removes `item` to the grid. `item` must be part of the grid. * * @param {Clutter.Actor} item item to remove from the grid */ removeItem(item) { if (!this.contains(item)) throw new Error(`Item ${item} is not part of the IconGrid`); this.layout_manager.removeItem(item); } /** * goToPage: * * Moves the current page to `pageIndex`. `pageIndex` must be a valid page * number. * * @param {number} pageIndex page index * @param {boolean} animate animate the page transition */ goToPage(pageIndex, animate = true) { if (pageIndex >= this.nPages) throw new Error(`IconGrid does not have page ${pageIndex}`); let newValue; let adjustment; switch (this.layout_manager.orientation) { case Clutter.Orientation.VERTICAL: adjustment = this.vadjustment; newValue = pageIndex * this.layout_manager.pageHeight; break; case Clutter.Orientation.HORIZONTAL: adjustment = this.hadjustment; newValue = pageIndex * this.layout_manager.pageWidth; break; } this._currentPage = pageIndex; if (!this.mapped) animate = false; global.compositor.get_laters().add( Meta.LaterType.BEFORE_REDRAW, () => { adjustment.ease(newValue, { mode: Clutter.AnimationMode.EASE_OUT_CUBIC, duration: animate ? PAGE_SWITCH_TIME : 0, }); return GLib.SOURCE_REMOVE; }); } /** * getItemPage: * * Retrieves the page `item` is in, or -1 if `item` is not part of the grid. * * @param {BaseIcon} item the item * * @returns {number} the page where `item` is in */ getItemPage(item) { return this.layout_manager.getItemPage(item); } /** * getItemPosition: * * Retrieves the position of `item` is its page, or -1 if `item` is not * part of the grid. * * @param {BaseIcon} item the item * * @returns {[number, number]} the page and position of `item` */ getItemPosition(item) { if (!this.contains(item)) return [-1, -1]; const layoutManager = this.layout_manager; return layoutManager.getItemPosition(item); } /** * getItemAt: * * Retrieves the item at `page` and `position`. * * @param {number} page the page * @param {number} position the position in page * * @returns {BaseItem} the item at `page` and `position`, or null */ getItemAt(page, position) { const layoutManager = this.layout_manager; return layoutManager.getItemAt(page, position); } /** * getItemsAtPage: * * Retrieves the children at page `page`, including invisible children. * * @param {number} page the page index * * @returns {Array} an array of {Clutter.Actor}s */ getItemsAtPage(page) { if (page < 0 || page > this.nPages) throw new Error(`Page ${page} does not exist at IconGrid`); const layoutManager = this.layout_manager; return layoutManager.getItemsAtPage(page); } get currentPage() { return this._currentPage; } set currentPage(v) { this.goToPage(v); } get nPages() { return this.layout_manager.nPages; } setGridModes(modes) { this._gridModes = modes ? modes : defaultGridModes; this.queue_relayout(); } getDropTarget(x, y) { const layoutManager = this.layout_manager; return layoutManager.getDropTarget(x, y, this._currentPage); } get itemsPerPage() { const layoutManager = this.layout_manager; return layoutManager.rows_per_page * layoutManager.columns_per_page; } }); 070701000001BB000081A40000000000000000000000016712993F000012BE000000000000000000000000000000000000003100000000gnome-shell-47.1/js/ui/inhibitShortcutsDialog.jsimport Clutter from 'gi://Clutter'; import GObject from 'gi://GObject'; import Meta from 'gi://Meta'; import Pango from 'gi://Pango'; import Shell from 'gi://Shell'; import St from 'gi://St'; import * as Dialog from './dialog.js'; import * as ModalDialog from './modalDialog.js'; import * as PermissionStore from '../misc/permissionStore.js'; const APP_ALLOWLIST = ['org.gnome.Settings.desktop']; const APP_PERMISSIONS_TABLE = 'gnome'; const APP_PERMISSIONS_ID = 'shortcuts-inhibitor'; const GRANTED = 'GRANTED'; const DENIED = 'DENIED'; const DialogResponse = Meta.InhibitShortcutsDialogResponse; export const InhibitShortcutsDialog = GObject.registerClass({ Implements: [Meta.InhibitShortcutsDialog], Properties: { 'window': GObject.ParamSpec.override('window', Meta.InhibitShortcutsDialog), }, }, class InhibitShortcutsDialog extends GObject.Object { _init(window) { super._init(); this._window = window; this._dialog = new ModalDialog.ModalDialog(); this._buildLayout(); } get window() { return this._window; } set window(window) { this._window = window; } get _app() { let windowTracker = Shell.WindowTracker.get_default(); return windowTracker.get_window_app(this._window); } _shouldUsePermStore() { return this._app && !this._app.is_window_backed(); } async _saveToPermissionStore(grant) { if (!this._shouldUsePermStore() || this._permStore == null) return; try { await this._permStore.SetPermissionAsync(APP_PERMISSIONS_TABLE, true, APP_PERMISSIONS_ID, this._app.get_id(), [grant]); } catch (error) { log(error.message); } } _buildLayout() { const name = this._app?.get_name() ?? this._window.title; let content = new Dialog.MessageDialogContent({ title: _('Allow inhibiting shortcuts'), description: name /* Translators: %s is an application name like "Settings" */ ? _('The app %s wants to inhibit shortcuts').format(name) : _('An app wants to inhibit shortcuts'), }); const restoreAccel = Meta.prefs_get_keybinding_label('restore-shortcuts'); if (restoreAccel) { let restoreLabel = new St.Label({ /* Translators: %s is a keyboard shortcut like "Super+x" */ text: _('You can restore shortcuts by pressing %s').format(restoreAccel), style_class: 'message-dialog-description', }); restoreLabel.clutter_text.ellipsize = Pango.EllipsizeMode.NONE; restoreLabel.clutter_text.line_wrap = true; content.add_child(restoreLabel); } this._dialog.contentLayout.add_child(content); this._dialog.addButton({ label: _('Deny'), action: () => { this._saveToPermissionStore(DENIED); this._emitResponse(DialogResponse.DENY); }, key: Clutter.KEY_Escape, }); this._dialog.addButton({ label: _('Allow'), action: () => { this._saveToPermissionStore(GRANTED); this._emitResponse(DialogResponse.ALLOW); }, default: true, }); } _emitResponse(response) { this.emit('response', response); this._dialog.close(); } vfunc_show() { if (this._app && APP_ALLOWLIST.includes(this._app.get_id())) { this._emitResponse(DialogResponse.ALLOW); return; } if (!this._shouldUsePermStore()) { this._dialog.open(); return; } /* Check with the permission store */ let appId = this._app.get_id(); this._permStore = new PermissionStore.PermissionStore(async (proxy, error) => { if (error) { log(error.message); this._dialog.open(); return; } try { const [permissions] = await this._permStore.LookupAsync( APP_PERMISSIONS_TABLE, APP_PERMISSIONS_ID); if (permissions[appId] === undefined) // Not found this._dialog.open(); else if (permissions[appId][0] === GRANTED) this._emitResponse(DialogResponse.ALLOW); else this._emitResponse(DialogResponse.DENY); } catch (err) { this._dialog.open(); log(err.message); } }); } vfunc_hide() { this._dialog.close(); } }); 070701000001BC000081A40000000000000000000000016712993F000002CB000000000000000000000000000000000000001F00000000gnome-shell-47.1/js/ui/init.jsimport GLib from 'gi://GLib'; import Gio from 'gi://Gio'; import './environment.js'; import {formatError} from '../misc/errorUtils.js'; // Run the Mutter main loop after // GJS finishes resolving this module. imports._promiseNative.setMainLoopHook(() => { // Queue starting the shell GLib.idle_add(GLib.PRIORITY_DEFAULT, () => { import('./main.js').then(main => main.start()).catch(e => { const error = new GLib.Error( Gio.IOErrorEnum, Gio.IOErrorEnum.FAILED, formatError(e)); global.context.terminate_with_error(error); }); return GLib.SOURCE_REMOVE; }); // Run the meta context's main loop global.context.run_main_loop(); }); 070701000001BD000081A40000000000000000000000016712993F00000BF5000000000000000000000000000000000000002800000000gnome-shell-47.1/js/ui/kbdA11yDialog.jsimport Clutter from 'gi://Clutter'; import Gio from 'gi://Gio'; import GObject from 'gi://GObject'; import Meta from 'gi://Meta'; import * as Dialog from './dialog.js'; import * as ModalDialog from './modalDialog.js'; const KEYBOARD_A11Y_SCHEMA = 'org.gnome.desktop.a11y.keyboard'; const KEY_STICKY_KEYS_ENABLED = 'stickykeys-enable'; const KEY_SLOW_KEYS_ENABLED = 'slowkeys-enable'; export const KbdA11yDialog = GObject.registerClass( class KbdA11yDialog extends GObject.Object { _init() { super._init(); this._a11ySettings = new Gio.Settings({schema_id: KEYBOARD_A11Y_SCHEMA}); let seat = Clutter.get_default_backend().get_default_seat(); seat.connect('kbd-a11y-flags-changed', this._showKbdA11yDialog.bind(this)); } _showKbdA11yDialog(seat, newFlags, whatChanged) { let dialog = new ModalDialog.ModalDialog(); let title, description; let key, enabled; if (whatChanged & Meta.KeyboardA11yFlags.SLOW_KEYS_ENABLED) { key = KEY_SLOW_KEYS_ENABLED; enabled = (newFlags & Meta.KeyboardA11yFlags.SLOW_KEYS_ENABLED) > 0; title = enabled ? _('Slow Keys Turned On') : _('Slow Keys Turned Off'); description = _('You just held down the Shift key for 8 seconds. This is the shortcut ' + 'for the Slow Keys feature, which affects the way your keyboard works.'); } else if (whatChanged & Meta.KeyboardA11yFlags.STICKY_KEYS_ENABLED) { key = KEY_STICKY_KEYS_ENABLED; enabled = (newFlags & Meta.KeyboardA11yFlags.STICKY_KEYS_ENABLED) > 0; title = enabled ? _('Sticky Keys Turned On') : _('Sticky Keys Turned Off'); description = enabled ? _('You just pressed the Shift key 5 times in a row. This is the shortcut ' + 'for the Sticky Keys feature, which affects the way your keyboard works.') : _('You just pressed two keys at once, or pressed the Shift key 5 times in a row. ' + 'This turns off the Sticky Keys feature, which affects the way your keyboard works.'); } else { return; } let content = new Dialog.MessageDialogContent({title, description}); dialog.contentLayout.add_child(content); dialog.addButton({ label: enabled ? _('Leave On') : _('Turn On'), action: () => { this._a11ySettings.set_boolean(key, true); dialog.close(); }, default: enabled, key: !enabled ? Clutter.KEY_Escape : null, }); dialog.addButton({ label: enabled ? _('Turn Off') : _('Leave Off'), action: () => { this._a11ySettings.set_boolean(key, false); dialog.close(); }, default: !enabled, key: enabled ? Clutter.KEY_Escape : null, }); dialog.open(); } }); 070701000001BE000081A40000000000000000000000016712993F000116C0000000000000000000000000000000000000002300000000gnome-shell-47.1/js/ui/keyboard.jsimport Clutter from 'gi://Clutter'; import Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import Meta from 'gi://Meta'; import Graphene from 'gi://Graphene'; import IBus from 'gi://IBus'; import Shell from 'gi://Shell'; import St from 'gi://St'; import * as Signals from '../misc/signals.js'; import * as EdgeDragAction from './edgeDragAction.js'; import * as InputSourceManager from './status/keyboard.js'; import * as IBusManager from '../misc/ibusManager.js'; import * as BoxPointer from './boxpointer.js'; import * as Main from './main.js'; import * as PageIndicators from './pageIndicators.js'; import * as PopupMenu from './popupMenu.js'; import * as SwipeTracker from './swipeTracker.js'; const KEYBOARD_ANIMATION_TIME = 150; const KEYBOARD_REST_TIME = KEYBOARD_ANIMATION_TIME * 2; const KEY_LONG_PRESS_TIME = 250; const A11Y_APPLICATIONS_SCHEMA = 'org.gnome.desktop.a11y.applications'; const SHOW_KEYBOARD = 'screen-keyboard-enabled'; const EMOJI_PAGE_SEPARATION = 32; /* KeyContainer puts keys in a grid where a 1:1 key takes this size */ const KEY_SIZE = 2; const KEY_RELEASE_TIMEOUT = 50; const BACKSPACE_WORD_DELETE_THRESHOLD = 50; const AspectContainer = GObject.registerClass( class AspectContainer extends St.Widget { _init(params) { super._init(params); this._ratio = 1; } setRatio(relWidth, relHeight) { this._ratio = relWidth / relHeight; this.queue_relayout(); } vfunc_get_preferred_width(forHeight) { let [min, nat] = super.vfunc_get_preferred_width(forHeight); if (forHeight > 0) nat = forHeight * this._ratio; return [min, nat]; } vfunc_get_preferred_height(forWidth) { let [min, nat] = super.vfunc_get_preferred_height(forWidth); if (forWidth > 0) nat = forWidth / this._ratio; return [min, nat]; } vfunc_allocate(box) { if (box.get_width() > 0 && box.get_height() > 0) { let sizeRatio = box.get_width() / box.get_height(); if (sizeRatio >= this._ratio) { /* Restrict horizontally */ let width = box.get_height() * this._ratio; let diff = box.get_width() - width; box.x1 += Math.floor(diff / 2); box.x2 -= Math.ceil(diff / 2); } } super.vfunc_allocate(box); } }); const KeyContainer = GObject.registerClass( class KeyContainer extends St.Widget { _init() { const gridLayout = new Clutter.GridLayout({ orientation: Clutter.Orientation.HORIZONTAL, column_homogeneous: true, row_homogeneous: true, }); super._init({ layout_manager: gridLayout, x_expand: true, y_expand: true, }); this._gridLayout = gridLayout; this._nRows = 0; this._currentCol = 0; this._maxCols = 0; } appendRow() { this._nRows++; this._currentCol = 0; } appendKey(key, width = 1, height = 1, leftOffset = 0) { const left = this._currentCol + leftOffset; const top = this._nRows; this._gridLayout.attach(key, left * KEY_SIZE, top * KEY_SIZE, width * KEY_SIZE, height * KEY_SIZE); this._currentCol += leftOffset + width; this._maxCols = Math.max(this._currentCol, this._maxCols); } getRatio() { return [this._maxCols, this._nRows]; } }); const Suggestions = GObject.registerClass( class Suggestions extends St.BoxLayout { _init() { super._init({ style_class: 'word-suggestions', vertical: false, x_align: Clutter.ActorAlign.CENTER, }); this.show(); } add(word, callback) { let button = new St.Button({label: word}); button.connect('button-press-event', () => { callback(); return Clutter.EVENT_STOP; }); button.connect('touch-event', (actor, event) => { if (event.type() !== Clutter.EventType.TOUCH_BEGIN) return Clutter.EVENT_PROPAGATE; callback(); return Clutter.EVENT_STOP; }); this.add_child(button); } clear() { this.remove_all_children(); } setVisible(visible) { for (const child of this) child.visible = visible; } }); class LanguageSelectionPopup extends PopupMenu.PopupMenu { constructor(actor) { super(actor, 0.5, St.Side.BOTTOM); let inputSourceManager = InputSourceManager.getInputSourceManager(); let inputSources = inputSourceManager.inputSources; let item; for (let i in inputSources) { let is = inputSources[i]; item = this.addAction(is.displayName, () => { inputSourceManager.activateInputSource(is, true); }); item.can_focus = false; item.setOrnament(is === inputSourceManager.currentSource ? PopupMenu.Ornament.DOT : PopupMenu.Ornament.NO_DOT); } this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); item = this.addSettingsAction(_('Keyboard Settings'), 'gnome-keyboard-panel.desktop'); item.can_focus = false; actor.connectObject('notify::mapped', () => { if (!actor.is_mapped()) this.close(true); }, this); } _onCapturedEvent(actor, event) { const targetActor = global.stage.get_event_actor(event); if (targetActor === this.actor || this.actor.contains(targetActor)) return Clutter.EVENT_PROPAGATE; if (event.type() === Clutter.EventType.BUTTON_RELEASE || event.type() === Clutter.EventType.TOUCH_END) this.close(true); return Clutter.EVENT_STOP; } open(animate) { super.open(animate); global.stage.connectObject( 'captured-event', this._onCapturedEvent.bind(this), this); } close(animate) { super.close(animate); global.stage.disconnectObject(this); } destroy() { global.stage.disconnectObject(this); this.sourceActor.disconnectObject(this); super.destroy(); } } const Key = GObject.registerClass({ Signals: { 'long-press': {}, 'pressed': {}, 'released': {}, 'keyval': {param_types: [GObject.TYPE_UINT]}, 'commit': {param_types: [GObject.TYPE_STRING]}, }, }, class Key extends St.BoxLayout { _init(params, extendedKeys = []) { const {label, iconName, commitString, keyval} = {keyval: 0, ...params}; super._init({style_class: 'key-container'}); this._keyval = parseInt(keyval, 16); this.keyButton = this._makeKey(commitString, label, iconName); /* Add the key in a container, so keys can be padded without losing * logical proportions between those. */ this.add_child(this.keyButton); this.connect('destroy', this._onDestroy.bind(this)); this._extendedKeys = extendedKeys; this._extendedKeyboard = null; this._pressTimeoutId = 0; this._capturedPress = false; } get iconName() { return this._icon.icon_name; } set iconName(value) { this._icon.icon_name = value; } _onDestroy() { if (this._boxPointer) { this._boxPointer.destroy(); this._boxPointer = null; } this.cancel(); } _ensureExtendedKeysPopup() { if (this._extendedKeys.length === 0) return; if (this._boxPointer) return; this._boxPointer = new BoxPointer.BoxPointer(St.Side.BOTTOM); this._boxPointer.hide(); Main.layoutManager.addTopChrome(this._boxPointer); this._boxPointer.setPosition(this.keyButton, 0.5); // Adds style to existing keyboard style to avoid repetition this._boxPointer.add_style_class_name('keyboard-subkeys'); this._getExtendedKeys(); this.keyButton._extendedKeys = this._extendedKeyboard; } _press(button) { if (button === this.keyButton) { this._pressTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, KEY_LONG_PRESS_TIME, () => { this._pressTimeoutId = 0; this.emit('long-press'); if (this._extendedKeys.length > 0) { this._touchPressSlot = null; this._ensureExtendedKeysPopup(); this.keyButton.set_hover(false); this.keyButton.fake_release(); this._showSubkeys(); } return GLib.SOURCE_REMOVE; }); } this.emit('pressed'); this._pressed = true; } _release(button, commitString) { if (this._pressTimeoutId !== 0) { GLib.source_remove(this._pressTimeoutId); this._pressTimeoutId = 0; } if (this._pressed) { if (this._keyval && button === this.keyButton) this.emit('keyval', this._keyval); else if (commitString) this.emit('commit', commitString); else console.error('Need keyval or commitString'); } this.emit('released'); this._hideSubkeys(); this._pressed = false; } cancel() { if (this._pressTimeoutId !== 0) { GLib.source_remove(this._pressTimeoutId); this._pressTimeoutId = 0; } this._touchPressSlot = null; this.keyButton.set_hover(false); this.keyButton.fake_release(); } _onCapturedEvent(actor, event) { let type = event.type(); let press = type === Clutter.EventType.BUTTON_PRESS || type === Clutter.EventType.TOUCH_BEGIN; let release = type === Clutter.EventType.BUTTON_RELEASE || type === Clutter.EventType.TOUCH_END; const targetActor = global.stage.get_event_actor(event); if (targetActor === this._boxPointer.bin || this._boxPointer.bin.contains(targetActor)) return Clutter.EVENT_PROPAGATE; if (press) this._capturedPress = true; else if (release && this._capturedPress) this._hideSubkeys(); return Clutter.EVENT_STOP; } _showSubkeys() { this._boxPointer.open(BoxPointer.PopupAnimation.FULL); global.stage.connectObject( 'captured-event', this._onCapturedEvent.bind(this), this); this.keyButton.connectObject('notify::mapped', () => { if (!this.keyButton.is_mapped()) this._hideSubkeys(); }, this); } _hideSubkeys() { if (this._boxPointer) this._boxPointer.close(BoxPointer.PopupAnimation.FULL); global.stage.disconnectObject(this); this.keyButton.disconnectObject(this); this._capturedPress = false; } _makeKey(commitString, label, icon) { let button = new St.Button({ style_class: 'keyboard-key', x_expand: true, }); if (icon) { const child = new St.Icon({icon_name: icon}); button.set_child(child); this._icon = child; } else if (label) { button.set_label(label); } else if (commitString) { button.set_label(commitString); } button.connect('button-press-event', () => { this._press(button, commitString); button.add_style_pseudo_class('active'); return Clutter.EVENT_STOP; }); button.connect('button-release-event', () => { this._release(button, commitString); button.remove_style_pseudo_class('active'); return Clutter.EVENT_STOP; }); button.connect('touch-event', (actor, event) => { // We only handle touch events here on wayland. On X11 // we do get emulated pointer events, which already works // for single-touch cases. Besides, the X11 passive touch grab // set up by Mutter will make us see first the touch events // and later the pointer events, so it will look like two // unrelated series of events, we want to avoid double handling // in these cases. if (!Meta.is_wayland_compositor()) return Clutter.EVENT_PROPAGATE; const slot = event.get_event_sequence().get_slot(); if (!this._touchPressSlot && event.type() === Clutter.EventType.TOUCH_BEGIN) { this._touchPressSlot = slot; this._press(button, commitString); button.add_style_pseudo_class('active'); } else if (event.type() === Clutter.EventType.TOUCH_END) { if (!this._touchPressSlot || this._touchPressSlot === slot) { this._release(button, commitString); button.remove_style_pseudo_class('active'); } if (this._touchPressSlot === slot) this._touchPressSlot = null; } return Clutter.EVENT_STOP; }); return button; } _getExtendedKeys() { this._extendedKeyboard = new St.BoxLayout({ style_class: 'key-container', vertical: false, }); for (let i = 0; i < this._extendedKeys.length; ++i) { let extendedKey = this._extendedKeys[i]; let key = this._makeKey(extendedKey); key.extendedKey = extendedKey; this._extendedKeyboard.add_child(key); key.set_size(...this.keyButton.allocation.get_size()); this.keyButton.connect('notify::allocation', () => key.set_size(...this.keyButton.allocation.get_size())); } this._boxPointer.bin.add_child(this._extendedKeyboard); } get subkeys() { return this._boxPointer; } setLatched(latched) { if (latched) this.keyButton.add_style_pseudo_class('latched'); else this.keyButton.remove_style_pseudo_class('latched'); } }); class KeyboardModel { constructor(groupName) { this._model = this._loadModel(groupName); } _loadModel(groupName) { const file = Gio.File.new_for_uri( `resource:///org/gnome/shell/osk-layouts/${groupName}.json`); let [success_, contents] = file.load_contents(null); const decoder = new TextDecoder(); return JSON.parse(decoder.decode(contents)); } getLevels() { return this._model.levels; } getKeysForLevel(levelName) { return this._model.levels.find(level => level === levelName); } } class FocusTracker extends Signals.EventEmitter { constructor() { super(); this._rect = null; global.display.connectObject( 'notify::focus-window', () => { this._setCurrentWindow(global.display.focus_window); this.emit('window-changed', this._currentWindow); }, 'grab-op-begin', (display, window, op) => { if (window === this._currentWindow && (op === Meta.GrabOp.MOVING || op === Meta.GrabOp.KEYBOARD_MOVING)) this.emit('window-grabbed'); }, this); this._setCurrentWindow(global.display.focus_window); /* Valid for wayland clients */ Main.inputMethod.connectObject('cursor-location-changed', (o, rect) => this._setCurrentRect(rect), this); this._ibusManager = IBusManager.getIBusManager(); this._ibusManager.connectObject( 'set-cursor-location', (manager, rect) => { /* Valid for X11 clients only */ if (Main.inputMethod.currentFocus) return; const grapheneRect = new Graphene.Rect(); grapheneRect.init(rect.x, rect.y, rect.width, rect.height); this._setCurrentRect(grapheneRect); }, 'focus-in', () => this.emit('focus-changed', true), 'focus-out', () => this.emit('focus-changed', false), this); } destroy() { this._currentWindow?.disconnectObject(this); global.display.disconnectObject(this); Main.inputMethod.disconnectObject(this); this._ibusManager.disconnectObject(this); } get currentWindow() { return this._currentWindow; } _setCurrentWindow(window) { this._currentWindow?.disconnectObject(this); this._currentWindow = window; if (this._currentWindow) { this._currentWindow.connectObject( 'position-changed', () => this.emit('window-moved'), this); } } _setCurrentRect(rect) { // Some clients give us 0-sized rects, in that case set size to 1 if (rect.size.width <= 0) rect.size.width = 1; if (rect.size.height <= 0) rect.size.height = 1; if (this._currentWindow) { const frameRect = this._currentWindow.get_frame_rect(); const grapheneFrameRect = new Graphene.Rect(); grapheneFrameRect.init(frameRect.x, frameRect.y, frameRect.width, frameRect.height); const rectInsideFrameRect = grapheneFrameRect.intersection(rect)[0]; if (!rectInsideFrameRect) return; } if (this._rect && this._rect.equal(rect)) return; this._rect = rect; this.emit('position-changed'); } getCurrentRect() { const rect = { x: this._rect.origin.x, y: this._rect.origin.y, width: this._rect.size.width, height: this._rect.size.height, }; return rect; } } const EmojiPager = GObject.registerClass({ Properties: { 'delta': GObject.ParamSpec.int( 'delta', null, null, GObject.ParamFlags.READWRITE, GLib.MININT32, GLib.MAXINT32, 0), }, Signals: { 'emoji': {param_types: [GObject.TYPE_STRING]}, 'page-changed': { param_types: [GObject.TYPE_INT, GObject.TYPE_INT, GObject.TYPE_INT], }, }, }, class EmojiPager extends St.Widget { _init(sections) { super._init({ layout_manager: new Clutter.BinLayout(), reactive: true, clip_to_allocation: true, y_expand: true, }); this._sections = sections; this._pages = []; this._panel = null; this._curPage = null; this._followingPage = null; this._followingPanel = null; this._currentKey = null; this._delta = 0; this._width = null; const swipeTracker = new SwipeTracker.SwipeTracker(this, Clutter.Orientation.HORIZONTAL, Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, {allowDrag: true, allowScroll: true}); swipeTracker.connect('begin', this._onSwipeBegin.bind(this)); swipeTracker.connect('update', this._onSwipeUpdate.bind(this)); swipeTracker.connect('end', this._onSwipeEnd.bind(this)); this._swipeTracker = swipeTracker; this.connect('destroy', () => this._onDestroy()); this.bind_property( 'visible', this._swipeTracker, 'enabled', GObject.BindingFlags.DEFAULT); } _onDestroy() { if (this._swipeTracker) { this._swipeTracker.destroy(); delete this._swipeTracker; } } get delta() { return this._delta; } set delta(value) { if (this._delta === value) return; this._delta = value; this.notify('delta'); let followingPage = this.getFollowingPage(); if (this._followingPage !== followingPage) { if (this._followingPanel) { this._followingPanel.destroy(); this._followingPanel = null; } if (followingPage != null) { this._followingPanel = this._generatePanel(followingPage); this.add_child(this._followingPanel); } this._followingPage = followingPage; } const multiplier = this.text_direction === Clutter.TextDirection.RTL ? -1 : 1; this._panel.translation_x = value * multiplier; if (this._followingPanel) { const translation = value < 0 ? this._width + EMOJI_PAGE_SEPARATION : -this._width - EMOJI_PAGE_SEPARATION; this._followingPanel.translation_x = (value * multiplier) + (translation * multiplier); } } _prevPage(nPage) { return (nPage + this._pages.length - 1) % this._pages.length; } _nextPage(nPage) { return (nPage + 1) % this._pages.length; } getFollowingPage() { if (this.delta === 0) return null; if (this.delta < 0) return this._nextPage(this._curPage); else return this._prevPage(this._curPage); } _onSwipeUpdate(tracker, progress) { this.delta = -progress * this._width; if (this._currentKey != null) { this._currentKey.cancel(); this._currentKey = null; } return false; } _onSwipeBegin(tracker) { this._width = this.width; const points = [-1, 0, 1]; tracker.confirmSwipe(this._width, points, 0, 0); } _onSwipeEnd(tracker, duration, endProgress) { this.remove_all_transitions(); if (endProgress === 0) { this.ease_property('delta', 0, {duration}); } else { const value = endProgress < 0 ? this._width + EMOJI_PAGE_SEPARATION : -this._width - EMOJI_PAGE_SEPARATION; this.ease_property('delta', value, { duration, onComplete: () => { this.setCurrentPage(this.getFollowingPage()); }, }); } } _initPagingInfo() { this._pages = []; for (let i = 0; i < this._sections.length; i++) { let section = this._sections[i]; let itemsPerPage = this._nCols * this._nRows; let nPages = Math.ceil(section.keys.length / itemsPerPage); let page = -1; let pageKeys; for (let j = 0; j < section.keys.length; j++) { if (j % itemsPerPage === 0) { page++; pageKeys = []; this._pages.push({pageKeys, nPages, page, section: this._sections[i]}); } pageKeys.push(section.keys[j]); } } } _lookupSection(section, nPage) { for (let i = 0; i < this._pages.length; i++) { let page = this._pages[i]; if (page.section === section && page.page === nPage) return i; } return -1; } _generatePanel(nPage) { const gridLayout = new Clutter.GridLayout({ orientation: Clutter.Orientation.HORIZONTAL, column_homogeneous: true, row_homogeneous: true, }); const panel = new St.Widget({ layout_manager: gridLayout, style_class: 'emoji-page', x_expand: true, y_expand: true, }); /* Set an expander actor so all proportions are right despite the panel * not having all rows/cols filled in. */ let expander = new Clutter.Actor(); gridLayout.attach(expander, 0, 0, this._nCols, this._nRows); let page = this._pages[nPage]; let col = 0; let row = 0; for (let i = 0; i < page.pageKeys.length; i++) { let modelKey = page.pageKeys[i]; let key = new Key({commitString: modelKey.label}, modelKey.variants); key.keyButton.set_button_mask(0); key.connect('pressed', () => { this._currentKey = key; }); key.connect('commit', (actor, str) => { if (this._currentKey !== key) return; this._currentKey = null; this.emit('emoji', str); }); gridLayout.attach(key, col, row, 1, 1); col++; if (col >= this._nCols) { col = 0; row++; } } return panel; } setCurrentPage(nPage) { if (this._curPage === nPage) return; this._curPage = nPage; if (this._panel) { this._panel.destroy(); this._panel = null; } /* Reuse followingPage if possible */ if (nPage === this._followingPage) { this._panel = this._followingPanel; this._followingPanel = null; } if (this._followingPanel) this._followingPanel.destroy(); this._followingPanel = null; this._followingPage = null; this._delta = 0; if (!this._panel) { this._panel = this._generatePanel(nPage); this.add_child(this._panel); } let page = this._pages[nPage]; this.emit('page-changed', page.section.label, page.page, page.nPages); } setCurrentSection(section, nPage) { for (let i = 0; i < this._pages.length; i++) { let page = this._pages[i]; if (page.section === section && page.page === nPage) { this.setCurrentPage(i); break; } } } setRatio(nCols, nRows) { this._nCols = nCols; this._nRows = nRows; this._initPagingInfo(); } }); const EmojiSelection = GObject.registerClass({ Signals: { 'emoji-selected': {param_types: [GObject.TYPE_STRING]}, 'close-request': {}, 'toggle': {}, }, }, class EmojiSelection extends St.Widget { _init() { const gridLayout = new Clutter.GridLayout({ orientation: Clutter.Orientation.HORIZONTAL, column_homogeneous: true, row_homogeneous: true, }); super._init({ layout_manager: gridLayout, style_class: 'emoji-panel', x_expand: true, y_expand: true, text_direction: global.stage.text_direction, }); this._sections = [ {first: 'grinning face', label: '🙂️'}, {first: 'selfie', label: '👍️'}, {first: 'monkey face', label: '🌷️'}, {first: 'grapes', label: '🍴️'}, {first: 'globe showing Europe-Africa', label: '✈️'}, {first: 'jack-o-lantern', label: '🏃️'}, {first: 'muted speaker', label: '🔔️'}, {first: 'ATM sign', label: '❤️'}, {first: 'chequered flag', label: '🚩️'}, ]; this._gridLayout = gridLayout; this._populateSections(); this._pagerBox = new Clutter.Actor({ layout_manager: new Clutter.BoxLayout({ orientation: Clutter.Orientation.VERTICAL, }), }); this._emojiPager = new EmojiPager(this._sections); this._emojiPager.connect('page-changed', (pager, sectionLabel, page, nPages) => { this._onPageChanged(sectionLabel, page, nPages); }); this._emojiPager.connect('emoji', (pager, str) => { this.emit('emoji-selected', str); }); this._pagerBox.add_child(this._emojiPager); this._pageIndicator = new PageIndicators.PageIndicators( Clutter.Orientation.HORIZONTAL); this._pageIndicator.y_expand = false; this._pageIndicator.y_align = Clutter.ActorAlign.START; this._pagerBox.add_child(this._pageIndicator); this._pageIndicator.setReactive(false); this._emojiPager.connect('notify::delta', () => { this._updateIndicatorPosition(); }); this._bottomRow = this._createBottomRow(); this._curPage = 0; } vfunc_map() { this._emojiPager.setCurrentPage(0); super.vfunc_map(); } _onPageChanged(sectionLabel, page, nPages) { this._curPage = page; this._pageIndicator.setNPages(nPages); this._updateIndicatorPosition(); for (let i = 0; i < this._sections.length; i++) { let sect = this._sections[i]; sect.button.setLatched(sectionLabel === sect.label); } } _updateIndicatorPosition() { this._pageIndicator.setCurrentPosition(this._curPage - this._emojiPager.delta / this._emojiPager.width); } _findSection(emoji) { for (let i = 0; i < this._sections.length; i++) { if (this._sections[i].first === emoji) return this._sections[i]; } return null; } _populateSections() { let file = Gio.File.new_for_uri('resource:///org/gnome/shell/osk-layouts/emoji.json'); let [success_, contents] = file.load_contents(null); let emoji = JSON.parse(new TextDecoder().decode(contents)); let variants = []; let currentKey = 0; let currentSection = null; for (let i = 0; i < emoji.length; i++) { /* Group variants of a same emoji so they appear on the key popover */ if (emoji[i].name.startsWith(emoji[currentKey].name)) { variants.push(emoji[i].char); if (i < emoji.length - 1) continue; } let newSection = this._findSection(emoji[currentKey].name); if (newSection != null) { currentSection = newSection; currentSection.keys = []; } /* Create the key */ let label = emoji[currentKey].char + String.fromCharCode(0xFE0F); currentSection.keys.push({label, variants}); currentKey = i; variants = []; } } _createBottomRow() { let row = new KeyContainer(); let key; row.appendRow(); key = new Key({label: 'ABC'}, []); key.keyButton.add_style_class_name('default-key'); key.connect('released', () => this.emit('toggle')); row.appendKey(key, 1.5); for (let i = 0; i < this._sections.length; i++) { let section = this._sections[i]; key = new Key({label: section.label}, []); key.connect('released', () => this._emojiPager.setCurrentSection(section, 0)); row.appendKey(key); section.button = key; } key = new Key({iconName: 'keyboard-hide-symbolic'}); key.keyButton.add_style_class_name('default-key'); key.keyButton.add_style_class_name('hide-key'); key.connect('released', () => { this.emit('close-request'); }); row.appendKey(key); const actor = new AspectContainer({ layout_manager: new Clutter.BinLayout(), x_expand: true, y_expand: true, }); actor.add_child(row); return actor; } setRatio(nCols, nRows) { this._emojiPager.setRatio(Math.floor(nCols), Math.floor(nRows) - 1); this._bottomRow.setRatio(nCols, 1); // (Re)attach actors so the emoji panel fits the ratio and // the bottom row is ensured to take 1 row high. if (this._pagerBox.get_parent()) this.remove_child(this._pagerBox); if (this._bottomRow.get_parent()) this.remove_child(this._bottomRow); this._gridLayout.attach(this._pagerBox, 0, 0, 1, Math.floor(nRows) - 1); this._gridLayout.attach(this._bottomRow, 0, Math.floor(nRows) - 1, 1, 1); } }); export class KeyboardManager extends Signals.EventEmitter { constructor() { super(); this._keyboard = null; this._a11yApplicationsSettings = new Gio.Settings({schema_id: A11Y_APPLICATIONS_SCHEMA}); this._a11yApplicationsSettings.connect('changed', this._syncEnabled.bind(this)); this._seat = Clutter.get_default_backend().get_default_seat(); this._seat.connect('notify::touch-mode', this._syncEnabled.bind(this)); this._lastDevice = null; global.backend.connect('last-device-changed', (backend, device) => { if (device.device_type === Clutter.InputDeviceType.KEYBOARD_DEVICE) return; this._lastDevice = device; this._syncEnabled(); }); const mode = Shell.ActionMode.ALL & ~Shell.ActionMode.LOCK_SCREEN; const bottomDragAction = new EdgeDragAction.EdgeDragAction(St.Side.BOTTOM, mode); bottomDragAction.connect('activated', () => { if (this._keyboard) this._keyboard.gestureActivate(Main.layoutManager.bottomIndex); }); bottomDragAction.connect('progress', (_action, progress) => { if (this._keyboard) this._keyboard.gestureProgress(progress); }); bottomDragAction.connect('gesture-cancel', () => { if (this._keyboard) this._keyboard.gestureCancel(); }); global.stage.add_action_full('osk', Clutter.EventPhase.CAPTURE, bottomDragAction); this._bottomDragAction = bottomDragAction; this._syncEnabled(); } _lastDeviceIsTouchscreen() { if (!this._lastDevice) return false; let deviceType = this._lastDevice.get_device_type(); return deviceType === Clutter.InputDeviceType.TOUCHSCREEN_DEVICE; } _syncEnabled() { let enableKeyboard = this._a11yApplicationsSettings.get_boolean(SHOW_KEYBOARD); let autoEnabled = this._seat.get_touch_mode() && this._lastDeviceIsTouchscreen(); let enabled = enableKeyboard || autoEnabled; if (!enabled && !this._keyboard) return; if (enabled && !this._keyboard) { this._keyboard = new Keyboard(); this._keyboard.connect('visibility-changed', () => { this.emit('visibility-changed'); this._bottomDragAction.enabled = !this._keyboard.visible; }); } else if (!enabled && this._keyboard) { this._keyboard.setCursorLocation(null); this._keyboard.destroy(); this._keyboard = null; this._bottomDragAction.enabled = true; } } get keyboardActor() { return this._keyboard; } get visible() { return this._keyboard && this._keyboard.visible; } open(monitor) { Main.layoutManager.keyboardIndex = monitor; if (this._keyboard) this._keyboard.open(); } close() { if (this._keyboard) this._keyboard.close(); } addSuggestion(text, callback) { if (this._keyboard) this._keyboard.addSuggestion(text, callback); } resetSuggestions() { if (this._keyboard) this._keyboard.resetSuggestions(); } setSuggestionsVisible(visible) { this._keyboard?.setSuggestionsVisible(visible); } maybeHandleEvent(event) { if (!this._keyboard) return false; const actor = global.stage.get_event_actor(event); if (Main.layoutManager.keyboardBox.contains(actor) || !!actor._extendedKeys || !!actor.extendedKey) { actor.event(event, true); actor.event(event, false); return true; } return false; } } export const Keyboard = GObject.registerClass({ Signals: { 'visibility-changed': {}, }, }, class Keyboard extends St.BoxLayout { _init() { super._init({ name: 'keyboard', reactive: true, // Keyboard models are defined in LTR, we must override // the locale setting in order to avoid flipping the // keyboard on RTL locales. text_direction: Clutter.TextDirection.LTR, vertical: true, }); this._focusInExtendedKeys = false; this._emojiActive = false; this._languagePopup = null; this._focusWindow = null; this._focusWindowStartY = null; this._latched = false; // current level is latched this._modifiers = new Set(); this._modifierKeys = new Map(); this._suggestions = null; this._focusTracker = new FocusTracker(); this._focusTracker.connectObject( 'position-changed', this._onFocusPositionChanged.bind(this), 'window-grabbed', this._onFocusWindowMoving.bind(this), this); this._windowMovedId = this._focusTracker.connect('window-moved', this._onFocusWindowMoving.bind(this)); // Valid only for X11 if (!Meta.is_wayland_compositor()) { this._focusTracker.connectObject('focus-changed', (_tracker, focused) => { if (focused) this.open(Main.layoutManager.focusIndex); else this.close(); }, this); } this._showIdleId = 0; this._keyboardVisible = false; this._keyboardRequested = false; this._keyboardRestingId = 0; Main.layoutManager.connectObject('monitors-changed', this._relayout.bind(this), this); this._setupKeyboard(); this.connect('destroy', this._onDestroy.bind(this)); } get visible() { return this._keyboardVisible && super.visible; } set visible(visible) { super.visible = visible; } _onFocusPositionChanged(focusTracker) { let rect = focusTracker.getCurrentRect(); this.setCursorLocation(focusTracker.currentWindow, rect.x, rect.y, rect.width, rect.height); this._updateLevelFromHints(); } _onDestroy() { if (this._windowMovedId) { this._focusTracker.disconnect(this._windowMovedId); delete this._windowMovedId; } if (this._focusTracker) { this._focusTracker.destroy(); delete this._focusTracker; } this._clearShowIdle(); this._keyboardController.setOskCompletion(false); this._keyboardController.destroy(); Main.layoutManager.untrackChrome(this); Main.layoutManager.keyboardBox.remove_child(this); Main.layoutManager.keyboardBox.hide(); if (this._languagePopup) { this._languagePopup.destroy(); this._languagePopup = null; } } _setupKeyboard() { Main.layoutManager.keyboardBox.add_child(this); Main.layoutManager.trackChrome(this); this._keyboardController = new KeyboardController(); this._currentPage = null; this._suggestions = new Suggestions(); this.add_child(this._suggestions); this._aspectContainer = new AspectContainer({ layout_manager: new Clutter.BinLayout(), y_expand: true, }); this.add_child(this._aspectContainer); this._emojiSelection = new EmojiSelection(); this._emojiSelection.connect('toggle', this._toggleEmoji.bind(this)); this._emojiSelection.connect('close-request', () => this.close(true)); this._emojiSelection.connect('emoji-selected', (selection, emoji) => { this._keyboardController.commit(emoji).catch(console.error); }); this._emojiSelection.hide(); this._aspectContainer.add_child(this._emojiSelection); this._updateKeys(); this._keyboardController.connectObject( 'group-changed', this._onGroupChanged.bind(this), 'panel-state', this._onKeyboardStateChanged.bind(this), 'purpose-changed', this._onPurposeChanged.bind(this), 'content-hints-changed', this._onContentHintsChanged.bind(this), this); global.stage.connectObject('notify::key-focus', this._onKeyFocusChanged.bind(this), this); this._relayout(); } _onPurposeChanged(controller, purpose) { this._purpose = purpose; this._updateKeys(); } _onContentHintsChanged(controller, contentHint) { this._contentHint = contentHint; this._updateLevelFromHints(); } _updateLevelFromHints() { // If the latch is enabled, avoid level changes if (this._latched) return; if ((this._contentHint & Clutter.InputContentHintFlags.LOWERCASE) !== 0) { this._setActiveLevel('default'); return; } if (!this._layers['shift']) return; if ((this._contentHint & Clutter.InputContentHintFlags.UPPERCASE) !== 0) { this._setActiveLevel('shift'); } else if (!this._surroundingTextId && (this._contentHint & (Clutter.InputContentHintFlags.AUTO_CAPITALIZATION | Clutter.InputContentHintFlags.TITLECASE)) !== 0) { this._surroundingTextId = Main.inputMethod.connect('surrounding-text-set', () => { const [text, cursor] = Main.inputMethod.getSurroundingText(); if (!text || cursor === 0) { // First character in the buffer this._setActiveLevel('shift'); return; } const beforeCursor = GLib.utf8_substring(text, 0, cursor); if ((this._contentHint & Clutter.InputContentHintFlags.TITLECASE) !== 0) { if (beforeCursor.charAt(beforeCursor.length - 1) === ' ') this._setActiveLevel('shift'); else this._setActiveLevel('default'); } else if ((this._contentHint & Clutter.InputContentHintFlags.AUTO_CAPITALIZATION) !== 0) { if (beforeCursor.charAt(beforeCursor.trimEnd().length - 1) === '.') this._setActiveLevel('shift'); else this._setActiveLevel('default'); } Main.inputMethod.disconnect(this._surroundingTextId); this._surroundingTextId = 0; }); Main.inputMethod.request_surrounding(); } } _onKeyFocusChanged() { let focus = global.stage.key_focus; // Showing an extended key popup and clicking a key from the extended keys // will grab focus, but ignore that let extendedKeysWereFocused = this._focusInExtendedKeys; this._focusInExtendedKeys = focus && (focus._extendedKeys || focus.extendedKey); if (this._focusInExtendedKeys || extendedKeysWereFocused) return; if (!(focus instanceof Clutter.Text)) { this.close(); return; } if (!this._showIdleId) { this._showIdleId = GLib.idle_add(GLib.PRIORITY_DEFAULT_IDLE, () => { this.open(Main.layoutManager.focusIndex); this._showIdleId = 0; return GLib.SOURCE_REMOVE; }); GLib.Source.set_name_by_id(this._showIdleId, '[gnome-shell] this.open'); } } _updateLayout(groupName, purpose) { let keyboardModel = null; let layers = {}; let layout = new Clutter.Actor({ layout_manager: new Clutter.BinLayout(), x_expand: true, y_expand: true, }); if (purpose === Clutter.InputContentPurpose.DIGITS) { keyboardModel = new KeyboardModel('digits'); } else if (purpose === Clutter.InputContentPurpose.NUMBER) { keyboardModel = new KeyboardModel('number'); } else if (purpose === Clutter.InputContentPurpose.PHONE) { keyboardModel = new KeyboardModel('phone'); } else if (purpose === Clutter.InputContentPurpose.EMAIL) { keyboardModel = new KeyboardModel('email'); } else if (purpose === Clutter.InputContentPurpose.URL) { keyboardModel = new KeyboardModel('url'); } else { let groups = [groupName]; if (groupName.includes('+')) groups.push(groupName.replace(/\+.*/, '')); groups.push('us'); if (purpose === Clutter.InputContentPurpose.TERMINAL) groups = groups.map(g => `${g}-extended`); for (const group of groups) { try { keyboardModel = new KeyboardModel(group); break; } catch (e) { // Ignore this error and fall back to next model } } if (!keyboardModel) return; } const emojiVisible = Meta.is_wayland_compositor() && (purpose === Clutter.InputContentPurpose.NORMAL || purpose === Clutter.InputContentPurpose.ALPHA || purpose === Clutter.InputContentPurpose.PASSWORD || purpose === Clutter.InputContentPurpose.TERMINAL); keyboardModel.getLevels().forEach(currentLevel => { let levelLayout = new KeyContainer(); levelLayout.shiftKeys = []; levelLayout.mode = currentLevel.mode; const rows = currentLevel.rows; rows.forEach(row => { levelLayout.appendRow(); this._addRowKeys(row, levelLayout, emojiVisible); }); layers[currentLevel.level] = levelLayout; layout.add_child(levelLayout); levelLayout.hide(); }); this._aspectContainer.add_child(layout); this._currentLayout?.destroy(); this._currentLayout = layout; this._layers = layers; } _addRowKeys(keys, layout, emojiVisible) { let accumulatedWidth = 0; for (let i = 0; i < keys.length; ++i) { const key = keys[i]; const {strings} = key; const commitString = strings?.shift(); if (key.action === 'emoji' && !emojiVisible) { accumulatedWidth = key.width ?? 1; continue; } if (accumulatedWidth > 0) { // Pass accumulated width onto the next key key.width = (key.width ?? 1) + accumulatedWidth; accumulatedWidth = 0; } let button = new Key({ commitString, label: key.label, iconName: key.iconName, keyval: key.keyval, }, strings); if (key.keyval) { button.connect('keyval', (_actor, keyval) => { this._keyboardController.keyvalPress(keyval); this._keyboardController.keyvalRelease(keyval); }); } if (key.action !== 'modifier') { button.connect('commit', (_actor, str) => { this._keyboardController.commit(str, this._modifiers).then(() => { this._disableAllModifiers(); if (layout.mode === 'default' || (layout.mode === 'latched' && !this._latched)) { if (this._contentHint !== 0) this._updateLevelFromHints(); else this._setActiveLevel('default'); } }).catch(console.error); }); } if (key.action !== null) { button.connect('released', () => { if (key.action === 'hide') { this.close(true); } else if (key.action === 'languageMenu') { this._popupLanguageMenu(button); } else if (key.action === 'emoji') { this._toggleEmoji(); } else if (key.action === 'modifier') { this._toggleModifier(key.keyval); } else if (key.action === 'delete') { this._keyboardController.toggleDelete(true); this._keyboardController.toggleDelete(false); } else if (!this._longPressed && key.action === 'levelSwitch') { this._setActiveLevel(key.level); this._setLatched( key.level === 1 && key.iconName === 'keyboard-caps-lock-symbolic'); } this._longPressed = false; }); } if (key.action === 'levelSwitch' && key.iconName === 'keyboard-shift-symbolic') { layout.shiftKeys.push(button); if (key.level === 'shift') { button.connect('long-press', () => { this._setActiveLevel(key.level); this._setLatched(true); this._longPressed = true; }); } } if (key.action === 'delete') { button.connect('long-press', () => this._keyboardController.toggleDelete(true)); } if (key.action === 'modifier') { let modifierKeys = this._modifierKeys[key.keyval] || []; modifierKeys.push(button); this._modifierKeys[key.keyval] = modifierKeys; } if (key.action || key.keyval) button.keyButton.add_style_class_name('default-key'); layout.appendKey(button, key.width, key.height, key.leftOffset); } } _setLatched(latched) { this._latched = latched; this._setCurrentLevelLatched(this._currentPage, this._latched); } _setModifierEnabled(keyval, enabled) { if (enabled) this._modifiers.add(keyval); else this._modifiers.delete(keyval); for (const key of this._modifierKeys[keyval]) key.setLatched(enabled); } _toggleModifier(keyval) { const isActive = this._modifiers.has(keyval); this._setModifierEnabled(keyval, !isActive); } _disableAllModifiers() { for (const keyval of this._modifiers) this._setModifierEnabled(keyval, false); } _popupLanguageMenu(keyActor) { if (this._languagePopup) this._languagePopup.destroy(); this._languagePopup = new LanguageSelectionPopup(keyActor); Main.layoutManager.addTopChrome(this._languagePopup.actor); this._languagePopup.open(true); } _updateCurrentPageVisible() { if (this._currentPage) this._currentPage.visible = !this._emojiActive; } _setEmojiActive(active) { this._emojiActive = active; this._emojiSelection.visible = this._emojiActive; this._updateCurrentPageVisible(); } _toggleEmoji() { this._setEmojiActive(!this._emojiActive); } _setCurrentLevelLatched(layout, latched) { for (let i = 0; i < layout.shiftKeys.length; i++) { let key = layout.shiftKeys[i]; key.setLatched(latched); key.iconName = latched ? 'keyboard-caps-lock-symbolic' : 'keyboard-shift-symbolic'; } } _getGridSlots() { let numOfHorizSlots = 0, numOfVertSlots; let rows = this._currentPage.get_children(); numOfVertSlots = rows.length; for (let i = 0; i < rows.length; ++i) { let keyboardRow = rows[i]; let keys = keyboardRow.get_children(); numOfHorizSlots = Math.max(numOfHorizSlots, keys.length); } return [numOfHorizSlots, numOfVertSlots]; } _relayout() { let monitor = Main.layoutManager.keyboardMonitor; if (!monitor) return; this.width = monitor.width; if (monitor.width > monitor.height) this.height = monitor.height / 3; else this.height = monitor.height / 4; } _updateKeys() { const group = this._keyboardController.getCurrentGroup(); this._updateLayout(group, this._purpose); this._setActiveLevel('default'); } _onGroupChanged() { this._updateKeys(); } _onKeyboardStateChanged(controller, state) { let enabled; if (state === Clutter.InputPanelState.OFF) enabled = false; else if (state === Clutter.InputPanelState.ON) enabled = true; else if (state === Clutter.InputPanelState.TOGGLE) enabled = this._keyboardVisible === false; else return; if (enabled) this.open(Main.layoutManager.focusIndex); else this.close(true); } _setActiveLevel(activeLevel) { const layers = this._layers; let currentPage = layers[activeLevel]; if (this._currentPage === currentPage) { this._updateCurrentPageVisible(); return; } if (this._currentPage != null) { this._setCurrentLevelLatched(this._currentPage, false); this._currentPage.disconnect(this._currentPage._destroyID); this._currentPage.hide(); delete this._currentPage._destroyID; } this._disableAllModifiers(); this._currentPage = currentPage; this._currentPage._destroyID = this._currentPage.connect('destroy', () => { this._currentPage = null; }); this._updateCurrentPageVisible(); this._aspectContainer.setRatio(...this._currentPage.getRatio()); this._emojiSelection.setRatio(...this._currentPage.getRatio()); } _clearKeyboardRestTimer() { if (!this._keyboardRestingId) return; GLib.source_remove(this._keyboardRestingId); this._keyboardRestingId = 0; } open(immediate = false) { this._clearShowIdle(); this._keyboardRequested = true; if (this._keyboardVisible) { this._relayout(); return; } this._keyboardController.setOskCompletion(true); this._clearKeyboardRestTimer(); if (immediate) { this._open(); return; } this._keyboardRestingId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, KEYBOARD_REST_TIME, () => { this._clearKeyboardRestTimer(); this._open(); return GLib.SOURCE_REMOVE; }); GLib.Source.set_name_by_id(this._keyboardRestingId, '[gnome-shell] this._clearKeyboardRestTimer'); } _open() { if (!this._keyboardRequested) return; this._relayout(); this._animateShow(); this._setEmojiActive(false); } close(immediate = false) { this._clearShowIdle(); this._keyboardRequested = false; if (!this._keyboardVisible) return; this._keyboardController.setOskCompletion(false); this._clearKeyboardRestTimer(); if (immediate) { this._close(); return; } this._keyboardRestingId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, KEYBOARD_REST_TIME, () => { this._clearKeyboardRestTimer(); this._close(); return GLib.SOURCE_REMOVE; }); GLib.Source.set_name_by_id(this._keyboardRestingId, '[gnome-shell] this._clearKeyboardRestTimer'); } _close() { if (this._keyboardRequested) return; this._animateHide(); this.setCursorLocation(null); this._disableAllModifiers(); } _animateShow() { Meta.disable_unredirect_for_display(global.display); if (this._focusWindow) this._animateWindow(this._focusWindow, true); Main.layoutManager.keyboardBox.show(); this.ease({ translation_y: -this.height, opacity: 255, duration: KEYBOARD_ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => { this._animateShowComplete(); }, }); this._keyboardVisible = true; this.emit('visibility-changed'); } _animateShowComplete() { let keyboardBox = Main.layoutManager.keyboardBox; this._keyboardHeightNotifyId = keyboardBox.connect('notify::height', () => { this.translation_y = -this.height; }); // Toggle visibility so the keyboardBox can update its chrome region. if (!Meta.is_wayland_compositor()) { keyboardBox.hide(); keyboardBox.show(); } } _animateHide() { if (this._focusWindow) this._animateWindow(this._focusWindow, false); if (this._keyboardHeightNotifyId) { Main.layoutManager.keyboardBox.disconnect(this._keyboardHeightNotifyId); this._keyboardHeightNotifyId = 0; } this.ease({ translation_y: 0, opacity: 0, duration: KEYBOARD_ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_IN_QUAD, onComplete: () => { this._animateHideComplete(); }, }); this._keyboardVisible = false; this.emit('visibility-changed'); } _animateHideComplete() { Main.layoutManager.keyboardBox.hide(); Meta.enable_unredirect_for_display(global.display); } gestureProgress(delta) { this._gestureInProgress = true; Main.layoutManager.keyboardBox.show(); let progress = Math.min(delta, this.height) / this.height; this.translation_y = -this.height * progress; this.opacity = 255 * progress; const windowActor = this._focusWindow?.get_compositor_private(); if (windowActor) windowActor.y = this._focusWindowStartY - (this.height * progress); } gestureActivate() { this.open(true); this._gestureInProgress = false; } gestureCancel() { if (this._gestureInProgress) this._animateHide(); this._gestureInProgress = false; } resetSuggestions() { if (this._suggestions) this._suggestions.clear(); } setSuggestionsVisible(visible) { this._suggestions?.setVisible(visible); } addSuggestion(text, callback) { if (!this._suggestions) return; this._suggestions.add(text, callback); this._suggestions.show(); } _clearShowIdle() { if (!this._showIdleId) return; GLib.source_remove(this._showIdleId); this._showIdleId = 0; } _windowSlideAnimationComplete(window, finalY) { // Synchronize window positions again. const frameRect = window.get_frame_rect(); const bufferRect = window.get_buffer_rect(); finalY += frameRect.y - bufferRect.y; frameRect.y = finalY; this._focusTracker.disconnect(this._windowMovedId); window.move_frame(true, frameRect.x, frameRect.y); this._windowMovedId = this._focusTracker.connect('window-moved', this._onFocusWindowMoving.bind(this)); } _animateWindow(window, show) { let windowActor = window.get_compositor_private(); if (!windowActor) return; const finalY = show ? this._focusWindowStartY - Main.layoutManager.keyboardBox.height : this._focusWindowStartY; windowActor.ease({ y: finalY, duration: KEYBOARD_ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onStopped: () => { windowActor.y = finalY; this._windowSlideAnimationComplete(window, finalY); }, }); } _onFocusWindowMoving() { if (this._focusTracker.currentWindow === this._focusWindow) { // Don't use _setFocusWindow() here because that would move the // window while the user has grabbed it. Instead we simply "let go" // of the window. this._focusWindow = null; this._focusWindowStartY = null; } this.close(true); } _setFocusWindow(window) { if (this._focusWindow === window) return; if (this._keyboardVisible && this._focusWindow) this._animateWindow(this._focusWindow, false); const windowActor = window?.get_compositor_private(); windowActor?.remove_transition('y'); this._focusWindowStartY = windowActor ? windowActor.y : null; if (this._keyboardVisible && window) this._animateWindow(window, true); this._focusWindow = window; } setCursorLocation(window, x, y, w, h) { let monitor = Main.layoutManager.keyboardMonitor; if (window && monitor) { const keyboardHeight = Main.layoutManager.keyboardBox.height; const keyboardY1 = (monitor.y + monitor.height) - keyboardHeight; if (this._focusWindow === window) { if (y + h + keyboardHeight < keyboardY1) this._setFocusWindow(null); return; } if (y + h >= keyboardY1) this._setFocusWindow(window); else this._setFocusWindow(null); } else { this._setFocusWindow(null); } } }); class KeyboardController extends Signals.EventEmitter { constructor() { super(); let seat = Clutter.get_default_backend().get_default_seat(); this._virtualDevice = seat.create_virtual_device(Clutter.InputDeviceType.KEYBOARD_DEVICE); this._inputSourceManager = InputSourceManager.getInputSourceManager(); this._inputSourceManager.connectObject( 'current-source-changed', this._onSourceChanged.bind(this), 'sources-changed', this._onSourcesModified.bind(this), this); this._currentSource = this._inputSourceManager.currentSource; Main.inputMethod.connectObject( 'notify::content-purpose', this._onPurposeHintsChanged.bind(this), 'notify::content-hints', this._onContentHintsChanged.bind(this), 'input-panel-state', (o, state) => this.emit('panel-state', state), this); } destroy() { this._inputSourceManager.disconnectObject(this); Main.inputMethod.disconnectObject(this); // Make sure any buttons pressed by the virtual device are released // immediately instead of waiting for the next GC cycle this._virtualDevice.run_dispose(); } _onSourcesModified() { this.emit('group-changed'); } _onSourceChanged(inputSourceManager, _oldSource) { let source = inputSourceManager.currentSource; this._currentSource = source; this.emit('group-changed'); } _onPurposeHintsChanged(method) { const purpose = method.content_purpose; this._purpose = purpose; this.emit('purpose-changed', purpose); } _onContentHintsChanged(method) { const contentHints = method.content_hints; this._contentHints = contentHints; this.emit('content-hints-changed', contentHints); } getCurrentGroup() { // Special case for Korean, if Hangul mode is disabled, use the 'us' keymap if (this._currentSource.id === 'hangul') { const inputSourceManager = InputSourceManager.getInputSourceManager(); const currentSource = inputSourceManager.currentSource; let prop; for (let i = 0; (prop = currentSource.properties.get(i)) !== null; ++i) { if (prop.get_key() === 'InputMode' && prop.get_prop_type() === IBus.PropType.TOGGLE && prop.get_state() !== IBus.PropState.CHECKED) return 'us'; } } return this._currentSource.xkbId; } _forwardModifiers(modifiers, type) { for (const keyval of modifiers) { if (type === Clutter.EventType.KEY_PRESS) this.keyvalPress(keyval); else if (type === Clutter.EventType.KEY_RELEASE) this.keyvalRelease(keyval); } } _getKeyvalsFromString(string) { const keyvals = []; for (const unicode of string) { const keyval = Clutter.unicode_to_keysym(unicode.codePointAt(0)); // If the unicode character is unknown, try to avoid keyvals at all if (keyval === (unicode || 0x01000000)) return []; keyvals.push(keyval); } return keyvals; } async commit(str, modifiers) { const keyvals = this._getKeyvalsFromString(str); // If there is no IM focus (e.g. with X11 clients), or modifiers // are in use, send raw key events. if (!Main.inputMethod.currentFocus || modifiers?.size > 0) { if (modifiers) this._forwardModifiers(modifiers, Clutter.EventType.KEY_PRESS); for (const keyval of keyvals) { this.keyvalPress(keyval); this.keyvalRelease(keyval); } if (modifiers) this._forwardModifiers(modifiers, Clutter.EventType.KEY_RELEASE); return; } // If OSK completion is enabled, or there is an active source requiring // IBus to receive input, prefer to feed the events directly to the IM if (this._oskCompletionEnabled || this._currentSource.type === InputSourceManager.INPUT_SOURCE_TYPE_IBUS) { for (const keyval of keyvals) { // eslint-disable-next-line no-await-in-loop if (!await Main.inputMethod.handleVirtualKey(keyval)) { this.keyvalPress(keyval); this.keyvalRelease(keyval); } } return; } Main.inputMethod.commit(str); } async setOskCompletion(enabled) { if (this._oskCompletionEnabled === enabled) return; this._oskCompletionEnabled = await IBusManager.getIBusManager().setCompletionEnabled(enabled); Main.inputMethod.update(); } keyvalPress(keyval) { this._virtualDevice.notify_keyval(Clutter.get_current_event_time() * 1000, keyval, Clutter.KeyState.PRESSED); } keyvalRelease(keyval) { this._virtualDevice.notify_keyval(Clutter.get_current_event_time() * 1000, keyval, Clutter.KeyState.RELEASED); } _previousWordPosition(text, cursor) { const upToCursor = [...text].slice(0, cursor).join(''); const jsStringPos = Math.max(0, upToCursor.search(/\s+\S+\s*$/)); const charPos = GLib.utf8_strlen(text.slice(0, jsStringPos), -1); return charPos; } toggleDelete(enabled) { if (this._deleteEnabled === enabled) return; this._deleteEnabled = enabled; this._timesDeleted = 0; /* If there is no IM focus or are in the middle of preedit, fallback to * keypresses */ if (enabled && (!Main.inputMethod.currentFocus || Main.inputMethod.hasPreedit() || this._purpose === Clutter.InputContentPurpose.TERMINAL)) { this.keyvalPress(Clutter.KEY_BackSpace); this._backspacePressed = true; return; } if (!enabled && this._backspacePressed) { this.keyvalRelease(Clutter.KEY_BackSpace); delete this._backspacePressed; return; } if (enabled) { let func = (text, cursor, anchor) => { if (cursor === 0 && anchor === 0) return; let offset, len; if (cursor > anchor) { offset = anchor - cursor; len = -offset; } else if (cursor < anchor) { offset = 0; len = anchor - cursor; } else if (this._timesDeleted < BACKSPACE_WORD_DELETE_THRESHOLD) { offset = -1; len = 1; } else { const wordLength = cursor - this._previousWordPosition(text, cursor); offset = -wordLength; len = wordLength; } this._timesDeleted++; Main.inputMethod.delete_surrounding(offset, len); }; this._surroundingUpdateId = Main.inputMethod.connect( 'surrounding-text-set', () => { let [text, cursor, anchor] = Main.inputMethod.getSurroundingText(); if (this._timesDeleted === 0) { func(text, cursor, anchor); } else { if (this._surroundingUpdateTimeoutId > 0) { GLib.source_remove(this._surroundingUpdateTimeoutId); this._surroundingUpdateTimeoutId = 0; } this._surroundingUpdateTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, KEY_RELEASE_TIMEOUT, () => { func(text, cursor, cursor); this._surroundingUpdateTimeoutId = 0; return GLib.SOURCE_REMOVE; }); } }); let [text, cursor, anchor] = Main.inputMethod.getSurroundingText(); if (text) func(text, cursor, anchor); else Main.inputMethod.request_surrounding(); } else { if (this._surroundingUpdateId > 0) { Main.inputMethod.disconnect(this._surroundingUpdateId); this._surroundingUpdateId = 0; } if (this._surroundingUpdateTimeoutId > 0) { GLib.source_remove(this._surroundingUpdateTimeoutId); this._surroundingUpdateTimeoutId = 0; } } } } 070701000001BF000081A40000000000000000000000016712993F0000BF2A000000000000000000000000000000000000002100000000gnome-shell-47.1/js/ui/layout.jsimport Clutter from 'gi://Clutter'; import Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import Meta from 'gi://Meta'; import Mtk from 'gi://Mtk'; import Shell from 'gi://Shell'; import St from 'gi://St'; import * as Signals from '../misc/signals.js'; import * as Background from './background.js'; import * as BackgroundMenu from './backgroundMenu.js'; import * as DND from './dnd.js'; import * as Main from './main.js'; import * as Params from '../misc/params.js'; import * as Ripples from './ripples.js'; const STARTUP_ANIMATION_TIME = 500; const BACKGROUND_FADE_ANIMATION_TIME = 1000; const HOT_CORNER_PRESSURE_THRESHOLD = 100; // pixels const HOT_CORNER_PRESSURE_TIMEOUT = 1000; // ms const SCREEN_TRANSITION_DELAY = 250; // ms const SCREEN_TRANSITION_DURATION = 500; // ms function isPopupMetaWindow(actor) { switch (actor.meta_window.get_window_type()) { case Meta.WindowType.DROPDOWN_MENU: case Meta.WindowType.POPUP_MENU: case Meta.WindowType.COMBO: return true; default: return false; } } export const MonitorConstraint = GObject.registerClass({ Properties: { 'primary': GObject.ParamSpec.boolean( 'primary', null, null, GObject.ParamFlags.READABLE | GObject.ParamFlags.WRITABLE, false), 'index': GObject.ParamSpec.int( 'index', null, null, GObject.ParamFlags.READABLE | GObject.ParamFlags.WRITABLE, -1, 64, -1), 'work-area': GObject.ParamSpec.boolean( 'work-area', null, null, GObject.ParamFlags.READABLE | GObject.ParamFlags.WRITABLE, false), }, }, class MonitorConstraint extends Clutter.Constraint { _init(props) { this._primary = false; this._index = -1; this._workArea = false; super._init(props); } get primary() { return this._primary; } set primary(v) { if (v) this._index = -1; this._primary = v; if (this.actor) this.actor.queue_relayout(); this.notify('primary'); } get index() { return this._index; } set index(v) { this._primary = false; this._index = v; if (this.actor) this.actor.queue_relayout(); this.notify('index'); } get workArea() { return this._workArea; } set workArea(v) { if (v === this._workArea) return; this._workArea = v; if (this.actor) this.actor.queue_relayout(); this.notify('work-area'); } vfunc_set_actor(actor) { if (actor) { if (!this._monitorsChangedId) { this._monitorsChangedId = Main.layoutManager.connect('monitors-changed', () => { this.actor.queue_relayout(); }); } if (!this._workareasChangedId) { this._workareasChangedId = global.display.connect('workareas-changed', () => { if (this._workArea) this.actor.queue_relayout(); }); } } else { if (this._monitorsChangedId) Main.layoutManager.disconnect(this._monitorsChangedId); this._monitorsChangedId = 0; if (this._workareasChangedId) global.display.disconnect(this._workareasChangedId); this._workareasChangedId = 0; } super.vfunc_set_actor(actor); } vfunc_update_allocation(actor, actorBox) { if (!this._primary && this._index < 0) return; if (!Main.layoutManager.primaryMonitor) return; let index; if (this._primary) index = Main.layoutManager.primaryIndex; else index = Math.min(this._index, Main.layoutManager.monitors.length - 1); let rect; if (this._workArea) { let workspaceManager = global.workspace_manager; let ws = workspaceManager.get_workspace_by_index(0); rect = ws.get_work_area_for_monitor(index); } else { rect = Main.layoutManager.monitors[index]; } actorBox.init_rect(rect.x, rect.y, rect.width, rect.height); } }); class Monitor { constructor(index, geometry, geometryScale) { this.index = index; this.x = geometry.x; this.y = geometry.y; this.width = geometry.width; this.height = geometry.height; this.geometry_scale = geometryScale; } get inFullscreen() { return global.display.get_monitor_in_fullscreen(this.index); } } const UiActor = GObject.registerClass( class UiActor extends St.Widget { vfunc_get_preferred_width(_forHeight) { let width = global.stage.width; return [width, width]; } vfunc_get_preferred_height(_forWidth) { let height = global.stage.height; return [height, height]; } }); const defaultParams = { trackFullscreen: false, affectsStruts: false, affectsInputRegion: true, }; export const LayoutManager = GObject.registerClass({ Signals: { 'hot-corners-changed': {}, 'startup-complete': {}, 'startup-prepared': {}, 'monitors-changed': {}, 'system-modal-opened': {}, }, }, class LayoutManager extends GObject.Object { _init() { super._init(); this._rtl = Clutter.get_default_text_direction() === Clutter.TextDirection.RTL; this.monitors = []; this.primaryMonitor = null; this.primaryIndex = -1; this.hotCorners = []; this._keyboardIndex = -1; this._rightPanelBarrier = null; this._inOverview = false; this._updateRegionIdle = 0; this._trackedActors = []; this._topActors = []; this._isPopupWindowVisible = false; this._startingUp = true; this._pendingLoadBackground = false; // Set up stage hierarchy to group all UI actors under one container. this.uiGroup = new UiActor({name: 'uiGroup'}); this.uiGroup.set_no_layout(true); global.stage.add_child(this.uiGroup); global.stage.remove_child(global.window_group); this.uiGroup.add_child(global.window_group); global.connect('shutdown', () => { const monitorManager = global.backend.get_monitor_manager(); monitorManager.disconnectObject(this); const adoptedUiGroupActors = [ global.window_group, global.top_window_group, global.compositor.get_feedback_group(), ]; for (let adoptedActor of adoptedUiGroupActors) { this.uiGroup.remove_child(adoptedActor); global.stage.add_child(adoptedActor); } this._destroyHotCorners(); this._destroyPanelBarrier(); this.uiGroup.destroy(); }); // Using addChrome() to add actors to uiGroup will position actors // underneath the top_window_group. // To insert actors at the top of uiGroup, we use addTopChrome() or // add the actor directly using uiGroup.add_child(). global.stage.remove_child(global.top_window_group); this.uiGroup.add_child(global.top_window_group); this.overviewGroup = new St.Widget({ name: 'overviewGroup', visible: false, reactive: true, constraints: new Clutter.BindConstraint({ source: this.uiGroup, coordinate: Clutter.BindCoordinate.ALL, }), }); this.addChrome(this.overviewGroup); this.screenShieldGroup = new St.Widget({ name: 'screenShieldGroup', visible: false, clip_to_allocation: true, layout_manager: new Clutter.BinLayout(), constraints: new Clutter.BindConstraint({ source: this.uiGroup, coordinate: Clutter.BindCoordinate.ALL, }), }); this.addChrome(this.screenShieldGroup); this.panelBox = new St.BoxLayout({ name: 'panelBox', vertical: true, }); this.addChrome(this.panelBox, { affectsStruts: true, trackFullscreen: true, }); this.panelBox.connect('notify::allocation', this._panelBoxChanged.bind(this)); this.modalDialogGroup = new St.Widget({ name: 'modalDialogGroup', layout_manager: new Clutter.BinLayout(), }); this.uiGroup.add_child(this.modalDialogGroup); this.keyboardBox = new St.BoxLayout({ name: 'keyboardBox', reactive: true, track_hover: true, }); this.addTopChrome(this.keyboardBox); this._keyboardHeightNotifyId = 0; this.screenshotUIGroup = new St.Widget({ name: 'screenshotUIGroup', layout_manager: new Clutter.BinLayout(), }); this.addTopChrome(this.screenshotUIGroup); // A dummy actor that tracks the mouse or text cursor, based on the // position and size set in setDummyCursorGeometry. this.dummyCursor = new St.Widget({width: 0, height: 0, opacity: 0}); this.uiGroup.add_child(this.dummyCursor); const feedbackGroup = global.compositor.get_feedback_group(); global.stage.remove_child(feedbackGroup); this.uiGroup.add_child(feedbackGroup); this._backgroundGroup = new Meta.BackgroundGroup(); global.window_group.add_child(this._backgroundGroup); global.window_group.set_child_below_sibling(this._backgroundGroup, null); this._bgManagers = []; this._interfaceSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.interface', }); this._interfaceSettings.connect('changed::enable-hot-corners', this._updateHotCorners.bind(this)); // Need to update struts on new workspaces when they are added let workspaceManager = global.workspace_manager; workspaceManager.connect('notify::n-workspaces', this._queueUpdateRegions.bind(this)); let display = global.display; display.connect('restacked', this._windowsRestacked.bind(this)); display.connect('in-fullscreen-changed', this._updateFullscreen.bind(this)); const monitorManager = global.backend.get_monitor_manager(); monitorManager.connectObject( 'monitors-changed', this._monitorsChanged.bind(this), this); this._monitorsChanged(); this.screenTransition = new ScreenTransition(); this.uiGroup.add_child(this.screenTransition); this.screenTransition.add_constraint(new Clutter.BindConstraint({ source: this.uiGroup, coordinate: Clutter.BindCoordinate.ALL, })); } // This is called by Main after everything else is constructed init() { Main.sessionMode.connect('updated', this._sessionUpdated.bind(this)); this._loadBackground(); } showOverview() { this.overviewGroup.show(); this.screenTransition.hide(); this._inOverview = true; this._updateVisibility(); } hideOverview() { this.overviewGroup.hide(); this.screenTransition.hide(); this._inOverview = false; this._updateVisibility(); } _sessionUpdated() { this._updateVisibility(); this._queueUpdateRegions(); } _updateMonitors() { let display = global.display; this.monitors = []; let nMonitors = display.get_n_monitors(); for (let i = 0; i < nMonitors; i++) { this.monitors.push(new Monitor(i, display.get_monitor_geometry(i), display.get_monitor_scale(i))); } if (nMonitors === 0) { this.primaryIndex = this.bottomIndex = -1; } else if (nMonitors === 1) { this.primaryIndex = this.bottomIndex = 0; } else { // If there are monitors below the primary, then we need // to split primary from bottom. this.primaryIndex = this.bottomIndex = display.get_primary_monitor(); for (let i = 0; i < this.monitors.length; i++) { let monitor = this.monitors[i]; if (this._isAboveOrBelowPrimary(monitor)) { if (monitor.y > this.monitors[this.bottomIndex].y) this.bottomIndex = i; } } } if (this.primaryIndex !== -1) { this.primaryMonitor = this.monitors[this.primaryIndex]; this.bottomMonitor = this.monitors[this.bottomIndex]; if (this._pendingLoadBackground) { this._loadBackground(); this._pendingLoadBackground = false; } } else { this.primaryMonitor = null; this.bottomMonitor = null; } } _destroyHotCorners() { this.hotCorners.forEach(corner => corner?.destroy()); this.hotCorners = []; } _updateHotCorners() { // destroy old hot corners this._destroyHotCorners(); if (!this._interfaceSettings.get_boolean('enable-hot-corners')) { this.emit('hot-corners-changed'); return; } let size = this.panelBox.height; // build new hot corners for (let i = 0; i < this.monitors.length; i++) { let monitor = this.monitors[i]; let cornerX = this._rtl ? monitor.x + monitor.width : monitor.x; let cornerY = monitor.y; let haveTopLeftCorner = true; if (i !== this.primaryIndex) { // Check if we have a top left (right for RTL) corner. // I.e. if there is no monitor directly above or to the left(right) let besideX = this._rtl ? monitor.x + 1 : cornerX - 1; let besideY = cornerY; let aboveX = cornerX; let aboveY = cornerY - 1; for (let j = 0; j < this.monitors.length; j++) { if (i === j) continue; let otherMonitor = this.monitors[j]; if (besideX >= otherMonitor.x && besideX < otherMonitor.x + otherMonitor.width && besideY >= otherMonitor.y && besideY < otherMonitor.y + otherMonitor.height) { haveTopLeftCorner = false; break; } if (aboveX >= otherMonitor.x && aboveX < otherMonitor.x + otherMonitor.width && aboveY >= otherMonitor.y && aboveY < otherMonitor.y + otherMonitor.height) { haveTopLeftCorner = false; break; } } } if (haveTopLeftCorner) { let corner = new HotCorner(this, monitor, cornerX, cornerY); corner.setBarrierSize(size); this.hotCorners.push(corner); } else { this.hotCorners.push(null); } } this.emit('hot-corners-changed'); } _addBackgroundMenu(bgManager) { BackgroundMenu.addBackgroundMenu(bgManager.backgroundActor, this); } _createBackgroundManager(monitorIndex) { const bgManager = new Background.BackgroundManager({ container: this._backgroundGroup, layoutManager: this, monitorIndex, }); bgManager.connect('changed', this._addBackgroundMenu.bind(this)); this._addBackgroundMenu(bgManager); return bgManager; } _showSecondaryBackgrounds() { for (let i = 0; i < this.monitors.length; i++) { if (i !== this.primaryIndex) { let backgroundActor = this._bgManagers[i].backgroundActor; backgroundActor.show(); backgroundActor.opacity = 0; backgroundActor.ease({ opacity: 255, duration: BACKGROUND_FADE_ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, }); } } } _waitLoaded(bgManager) { return new Promise(resolve => { const id = bgManager.connect('loaded', () => { bgManager.disconnect(id); resolve(); }); }); } _updateBackgrounds() { for (let i = 0; i < this._bgManagers.length; i++) this._bgManagers[i].destroy(); this._bgManagers = []; if (Main.sessionMode.isGreeter) return Promise.resolve(); for (let i = 0; i < this.monitors.length; i++) { let bgManager = this._createBackgroundManager(i); this._bgManagers.push(bgManager); if (i !== this.primaryIndex && this._startingUp) bgManager.backgroundActor.hide(); } return Promise.all(this._bgManagers.map(this._waitLoaded)); } _updateKeyboardBox() { this.keyboardBox.set_position( this.keyboardMonitor.x, this.keyboardMonitor.y + this.keyboardMonitor.height); this.keyboardBox.set_size(this.keyboardMonitor.width, -1); } _updateBoxes() { if (!this.primaryMonitor) return; this.panelBox.set_position(this.primaryMonitor.x, this.primaryMonitor.y); this.panelBox.set_size(this.primaryMonitor.width, -1); this.keyboardIndex = this.primaryIndex; } _panelBoxChanged() { this._updatePanelBarrier(); let size = this.panelBox.height; this.hotCorners.forEach(corner => { if (corner) corner.setBarrierSize(size); }); } _destroyPanelBarrier() { if (this._rightPanelBarrier) { this._rightPanelBarrier.destroy(); this._rightPanelBarrier = null; } } _updatePanelBarrier() { this._destroyPanelBarrier(); if (!this.primaryMonitor) return; if (this.panelBox.height) { let primary = this.primaryMonitor; this._rightPanelBarrier = new Meta.Barrier({ backend: global.backend, x1: primary.x + primary.width, y1: primary.y, x2: primary.x + primary.width, y2: primary.y + this.panelBox.height, directions: Meta.BarrierDirection.NEGATIVE_X, }); } } _monitorsChanged() { this._updateMonitors(); this._updateBoxes(); this._updateHotCorners(); this._updateBackgrounds(); this._updateFullscreen(); this._updateVisibility(); this._queueUpdateRegions(); this.emit('monitors-changed'); } _isAboveOrBelowPrimary(monitor) { let primary = this.monitors[this.primaryIndex]; let monitorLeft = monitor.x, monitorRight = monitor.x + monitor.width; let primaryLeft = primary.x, primaryRight = primary.x + primary.width; if ((monitorLeft >= primaryLeft && monitorLeft < primaryRight) || (monitorRight > primaryLeft && monitorRight <= primaryRight) || (primaryLeft >= monitorLeft && primaryLeft < monitorRight) || (primaryRight > monitorLeft && primaryRight <= monitorRight)) return true; return false; } get currentMonitor() { let index = global.display.get_current_monitor(); return this.monitors[index]; } get keyboardMonitor() { return this.monitors[this.keyboardIndex]; } get focusIndex() { let i = Main.layoutManager.primaryIndex; if (global.stage.key_focus != null) i = this.findIndexForActor(global.stage.key_focus); else if (global.display.focus_window != null) i = global.display.focus_window.get_monitor(); return i; } get focusMonitor() { if (this.focusIndex < 0) return null; return this.monitors[this.focusIndex]; } set keyboardIndex(v) { this._keyboardIndex = v; this._updateKeyboardBox(); } get keyboardIndex() { return this._keyboardIndex; } _loadBackground() { if (!this.primaryMonitor) { this._pendingLoadBackground = true; return; } this._systemBackground = new Background.SystemBackground(); this._systemBackground.hide(); global.stage.insert_child_below(this._systemBackground, null); const constraint = new Clutter.BindConstraint({ source: global.stage, coordinate: Clutter.BindCoordinate.ALL, }); this._systemBackground.add_constraint(constraint); let signalId = this._systemBackground.connect('loaded', () => { this._systemBackground.disconnect(signalId); // We're mostly prepared for the startup animation // now, but since a lot is going on asynchronously // during startup, let's defer the startup animation // until the event loop is uncontended and idle. // This helps to prevent us from running the animation // when the system is bogged down const id = GLib.idle_add(GLib.PRIORITY_LOW, () => { if (this.primaryMonitor) { this._systemBackground.show(); global.stage.show(); this._prepareStartupAnimation().catch(logError); return GLib.SOURCE_REMOVE; } else { return GLib.SOURCE_CONTINUE; } }); GLib.Source.set_name_by_id(id, '[gnome-shell] Startup Animation'); }); } // Startup Animations // // We have two different animations, depending on whether we're a greeter // or a normal session. // // In the greeter, we want to animate the panel from the top, and smoothly // fade the login dialog on top of whatever plymouth left on screen which // we get as a still frame background before drawing anything else. // // Here we just have the code to animate the panel, and fade up the background. // The login dialog animation is handled by modalDialog.js // // When starting a normal user session, we want to grow it out of the middle // of the screen. async _prepareStartupAnimation() { // During the initial transition, add a simple actor to block all events, // so they don't get delivered to X11 windows that have been transformed. this._coverPane = new Clutter.Actor({ opacity: 0, width: global.screen_width, height: global.screen_height, reactive: true, }); this.addChrome(this._coverPane); // Force an update of the regions before we scale the UI group to // get the correct allocation for the struts. // Do this even when we don't animate on restart, so that maximized // windows restore to the right size. this._updateRegions(); if (Meta.is_restart()) { // On restart, we don't do an animation. } else if (Main.sessionMode.isGreeter) { this.panelBox.translation_y = -this.panelBox.height; } else { this.keyboardBox.hide(); let monitor = this.primaryMonitor; if (!Main.sessionMode.hasOverview) { const x = monitor.x + monitor.width / 2.0; const y = monitor.y + monitor.height / 2.0; this.uiGroup.set_pivot_point( x / global.screen_width, y / global.screen_height); this.uiGroup.scale_x = this.uiGroup.scale_y = 0.75; this.uiGroup.opacity = 0; } global.window_group.set_clip(monitor.x, monitor.y, monitor.width, monitor.height); await this._updateBackgrounds(); } // Hack: Work around grab issue when testing greeter UI in nested if (GLib.getenv('GDM_GREETER_TEST') === '1') setTimeout(() => this.emit('startup-prepared'), 200); else this.emit('startup-prepared'); try { await this._startupAnimation(); } finally { this._startupAnimationComplete(); } } async _startupAnimation() { if (Meta.is_restart()) return; if (Main.sessionMode.isGreeter) await this._startupAnimationGreeter(); else await this._startupAnimationSession(); } async _startupAnimationGreeter() { await new Promise(resolve => { this.panelBox.ease({ translation_y: 0, duration: STARTUP_ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onStopped: () => resolve(), }); }); } async _startupAnimationSession() { if (Main.sessionMode.hasOverview) { await Main.overview.runStartupAnimation(); } else { await new Promise(resolve => { this.uiGroup.ease({ scale_x: 1, scale_y: 1, opacity: 255, duration: STARTUP_ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onStopped: () => resolve(), }); }); } } _startupAnimationComplete() { this._coverPane.destroy(); this._coverPane = null; this._systemBackground.destroy(); this._systemBackground = null; this._startingUp = false; this.keyboardBox.show(); if (!Main.sessionMode.isGreeter) { this._showSecondaryBackgrounds(); global.window_group.remove_clip(); } this._queueUpdateRegions(); this.emit('startup-complete'); } // setDummyCursorGeometry: // // The cursor dummy is a standard widget commonly used for popup // menus and box pointers to track, as the box pointer API only // tracks actors. If you want to pop up a menu based on where the // user clicked, or where the text cursor is, the cursor dummy // is what you should use. Given that the menu should not track // the actual mouse pointer as it moves, you need to call this // function before you show the menu to ensure it is at the right // position and has the right size. setDummyCursorGeometry(x, y, w, h) { this.dummyCursor.set_position(Math.round(x), Math.round(y)); this.dummyCursor.set_size(Math.round(w), Math.round(h)); } // addChrome: // @actor: an actor to add to the chrome // @params: (optional) additional params // // Adds @actor to the chrome, and (unless %affectsInputRegion in // @params is %false) extends the input region to include it. // Changes in @actor's size, position, and visibility will // automatically result in appropriate changes to the input // region. // // If %affectsStruts in @params is %true (and @actor is along a // screen edge), then @actor's size and position will also affect // the window manager struts. Changes to @actor's visibility will // NOT affect whether or not the strut is present, however. // // If %trackFullscreen in @params is %true, the actor's visibility // will be bound to the presence of fullscreen windows on the same // monitor (it will be hidden whenever a fullscreen window is visible, // and shown otherwise) addChrome(actor, params) { this.uiGroup.add_child(actor); if (this.uiGroup.contains(global.top_window_group)) this.uiGroup.set_child_below_sibling(actor, global.top_window_group); this._trackActor(actor, params); } // addTopChrome: // @actor: an actor to add to the chrome // @params: (optional) additional params // // Like addChrome(), but adds @actor above all windows, including popups. addTopChrome(actor, params) { this.uiGroup.add_child(actor); this._trackActor(actor, params); } // trackChrome: // @actor: a descendant of the chrome to begin tracking // @params: parameters describing how to track @actor // // Tells the chrome to track @actor. This can be used to extend the // struts or input region to cover specific children. // // @params can have any of the same values as in addChrome(), // though some possibilities don't make sense. By default, @actor has // the same params as its chrome ancestor. trackChrome(actor, params = {}) { let ancestor = actor.get_parent(); let index = this._findActor(ancestor); while (ancestor && index === -1) { ancestor = ancestor.get_parent(); index = this._findActor(ancestor); } let ancestorData = ancestor ? this._trackedActors[index] : defaultParams; // We can't use Params.parse here because we want to drop // the extra values like ancestorData.actor for (let prop in defaultParams) { if (!Object.prototype.hasOwnProperty.call(params, prop)) params[prop] = ancestorData[prop]; } this._trackActor(actor, params); } // untrackChrome: // @actor: an actor previously tracked via trackChrome() // // Undoes the effect of trackChrome() untrackChrome(actor) { this._untrackActor(actor); } // removeChrome: // @actor: a chrome actor // // Removes @actor from the chrome removeChrome(actor) { this.uiGroup.remove_child(actor); this._untrackActor(actor); } _findActor(actor) { for (let i = 0; i < this._trackedActors.length; i++) { let actorData = this._trackedActors[i]; if (actorData.actor === actor) return i; } return -1; } _trackActor(actor, params) { if (this._findActor(actor) !== -1) throw new Error('trying to re-track existing chrome actor'); let actorData = Params.parse(params, defaultParams); actorData.actor = actor; actor.connectObject( 'notify::visible', this._queueUpdateRegions.bind(this), 'notify::allocation', this._queueUpdateRegions.bind(this), 'destroy', this._untrackActor.bind(this), this); // Note that destroying actor will unset its parent, so we don't // need to connect to 'destroy' too. this._trackedActors.push(actorData); this._updateActorVisibility(actorData); this._queueUpdateRegions(); } _untrackActor(actor) { let i = this._findActor(actor); if (i === -1) return; this._trackedActors.splice(i, 1); actor.disconnectObject(this); this._queueUpdateRegions(); } _updateActorVisibility(actorData) { if (!actorData.trackFullscreen) return; let monitor = this.findMonitorForActor(actorData.actor); actorData.actor.visible = !(global.window_group.visible && monitor && monitor.inFullscreen); } _updateVisibility() { let windowsVisible = Main.sessionMode.hasWindows && !this._inOverview; global.window_group.visible = windowsVisible; global.top_window_group.visible = windowsVisible; this._trackedActors.forEach(this._updateActorVisibility.bind(this)); } getWorkAreaForMonitor(monitorIndex) { // Assume that all workspaces will have the same // struts and pick the first one. let workspaceManager = global.workspace_manager; let ws = workspaceManager.get_workspace_by_index(0); return ws.get_work_area_for_monitor(monitorIndex); } // This call guarantees that we return some monitor to simplify usage of it // In practice all tracked actors should be visible on some monitor anyway findIndexForActor(actor) { let [x, y] = actor.get_transformed_position(); let [w, h] = actor.get_transformed_size(); const rect = new Mtk.Rectangle({x, y, width: w, height: h}); return global.display.get_monitor_index_for_rect(rect); } findMonitorForActor(actor) { let index = this.findIndexForActor(actor); if (index >= 0 && index < this.monitors.length) return this.monitors[index]; return null; } _queueUpdateRegions() { if (!this._updateRegionIdle) { const laters = global.compositor.get_laters(); this._updateRegionIdle = laters.add( Meta.LaterType.BEFORE_REDRAW, this._updateRegions.bind(this)); } } _updateFullscreen() { this._updateVisibility(); this._queueUpdateRegions(); } _windowsRestacked() { let changed = false; if (this._isPopupWindowVisible !== global.top_window_group.get_children().some(isPopupMetaWindow)) changed = true; if (changed) { this._updateVisibility(); this._queueUpdateRegions(); } } _updateRegions() { if (this._updateRegionIdle) { const laters = global.compositor.get_laters(); laters.remove(this._updateRegionIdle); delete this._updateRegionIdle; } let rects = [], struts = [], i; let isPopupMenuVisible = global.top_window_group.get_children().some(isPopupMetaWindow); const wantsInputRegion = !this._startingUp && !isPopupMenuVisible && Main.modalCount === 0 && !Meta.is_wayland_compositor(); for (i = 0; i < this._trackedActors.length; i++) { let actorData = this._trackedActors[i]; if (!(actorData.affectsInputRegion && wantsInputRegion) && !actorData.affectsStruts) continue; let [x, y] = actorData.actor.get_transformed_position(); let [w, h] = actorData.actor.get_transformed_size(); x = Math.round(x); y = Math.round(y); w = Math.round(w); h = Math.round(h); if (actorData.affectsInputRegion && wantsInputRegion && actorData.actor.get_paint_visibility()) rects.push(new Mtk.Rectangle({x, y, width: w, height: h})); let monitor = null; if (actorData.affectsStruts) monitor = this.findMonitorForActor(actorData.actor); if (monitor) { // Limit struts to the size of the screen let x1 = Math.max(x, 0); let x2 = Math.min(x + w, global.screen_width); let y1 = Math.max(y, 0); let y2 = Math.min(y + h, global.screen_height); // Metacity wants to know what side of the monitor the // strut is considered to be attached to. First, we find // the monitor that contains the strut. If the actor is // only touching one edge, or is touching the entire // border of that monitor, then it's obvious which side // to call it. If it's in a corner, we pick a side // arbitrarily. If it doesn't touch any edges, or it // spans the width/height across the middle of the // screen, then we don't create a strut for it at all. let side; if (x1 <= monitor.x && x2 >= monitor.x + monitor.width) { if (y1 <= monitor.y) side = Meta.Side.TOP; else if (y2 >= monitor.y + monitor.height) side = Meta.Side.BOTTOM; else continue; } else if (y1 <= monitor.y && y2 >= monitor.y + monitor.height) { if (x1 <= monitor.x) side = Meta.Side.LEFT; else if (x2 >= monitor.x + monitor.width) side = Meta.Side.RIGHT; else continue; } else if (x1 <= monitor.x) { side = Meta.Side.LEFT; } else if (y1 <= monitor.y) { side = Meta.Side.TOP; } else if (x2 >= monitor.x + monitor.width) { side = Meta.Side.RIGHT; } else if (y2 >= monitor.y + monitor.height) { side = Meta.Side.BOTTOM; } else { continue; } const strutRect = new Mtk.Rectangle({x: x1, y: y1, width: x2 - x1, height: y2 - y1}); let strut = new Meta.Strut({rect: strutRect, side}); struts.push(strut); } } if (wantsInputRegion) global.set_stage_input_region(rects); this._isPopupWindowVisible = isPopupMenuVisible; let workspaceManager = global.workspace_manager; for (let w = 0; w < workspaceManager.n_workspaces; w++) { let workspace = workspaceManager.get_workspace_by_index(w); workspace.set_builtin_struts(struts); } return GLib.SOURCE_REMOVE; } modalEnded() { // We don't update the stage input region while in a modal, // so queue an update now. this._queueUpdateRegions(); } }); // HotCorner: // // This class manages a "hot corner" that can toggle switching to // overview. export const HotCorner = GObject.registerClass( class HotCorner extends Clutter.Actor { _init(layoutManager, monitor, x, y) { super._init(); // We use this flag to mark the case where the user has entered the // hot corner and has not left both the hot corner and a surrounding // guard area (the "environs"). This avoids triggering the hot corner // multiple times due to an accidental jitter. this._entered = false; this._monitor = monitor; this._x = x; this._y = y; this._setupFallbackCornerIfNeeded(layoutManager); this._pressureBarrier = new PressureBarrier( HOT_CORNER_PRESSURE_THRESHOLD, HOT_CORNER_PRESSURE_TIMEOUT, Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW); this._pressureBarrier.connect('trigger', this._toggleOverview.bind(this)); let px = 0.0; let py = 0.0; if (Clutter.get_default_text_direction() === Clutter.TextDirection.RTL) { px = 1.0; py = 0.0; } this._ripples = new Ripples.Ripples(px, py, 'ripple-box'); this._ripples.addTo(layoutManager.uiGroup); this.connect('destroy', this._onDestroy.bind(this)); } setBarrierSize(size) { if (this._verticalBarrier) { this._pressureBarrier.removeBarrier(this._verticalBarrier); this._verticalBarrier.destroy(); this._verticalBarrier = null; } if (this._horizontalBarrier) { this._pressureBarrier.removeBarrier(this._horizontalBarrier); this._horizontalBarrier.destroy(); this._horizontalBarrier = null; } if (size > 0) { if (Clutter.get_default_text_direction() === Clutter.TextDirection.RTL) { this._verticalBarrier = new Meta.Barrier({ backend: global.backend, x1: this._x, x2: this._x, y1: this._y, y2: this._y + size, directions: Meta.BarrierDirection.NEGATIVE_X, }); this._horizontalBarrier = new Meta.Barrier({ backend: global.backend, x1: this._x - size, x2: this._x, y1: this._y, y2: this._y, directions: Meta.BarrierDirection.POSITIVE_Y, }); } else { this._verticalBarrier = new Meta.Barrier({ backend: global.backend, x1: this._x, x2: this._x, y1: this._y, y2: this._y + size, directions: Meta.BarrierDirection.POSITIVE_X, }); this._horizontalBarrier = new Meta.Barrier({ backend: global.backend, x1: this._x, x2: this._x + size, y1: this._y, y2: this._y, directions: Meta.BarrierDirection.POSITIVE_Y, }); } this._pressureBarrier.addBarrier(this._verticalBarrier); this._pressureBarrier.addBarrier(this._horizontalBarrier); } } _setupFallbackCornerIfNeeded(layoutManager) { const {capabilities} = global.backend; if ((capabilities & Meta.BackendCapabilities.BARRIERS) === 0) { this.set({ name: 'hot-corner-environs', x: this._x, y: this._y, width: 3, height: 3, reactive: true, }); this._corner = new Clutter.Actor({ name: 'hot-corner', width: 1, height: 1, opacity: 0, reactive: true, }); this._corner._delegate = this; this.add_child(this._corner); layoutManager.addChrome(this); if (Clutter.get_default_text_direction() === Clutter.TextDirection.RTL) { this._corner.set_position(this.width - this._corner.width, 0); this.set_pivot_point(1.0, 0.0); this.translation_x = -this.width; } else { this._corner.set_position(0, 0); } this._corner.connect('enter-event', this._onCornerEntered.bind(this)); this._corner.connect('leave-event', this._onCornerLeft.bind(this)); } } _onDestroy() { this.setBarrierSize(0); this._pressureBarrier.destroy(); this._pressureBarrier = null; this._ripples.destroy(); } _toggleOverview() { if (this._monitor.inFullscreen && !Main.overview.visible) return; if (Main.overview.shouldToggleByCornerOrButton()) { Main.overview.toggle(); if (Main.overview.animationInProgress) this._ripples.playAnimation(this._x, this._y); } } handleDragOver(source, _actor, _x, _y, _time) { if (source !== Main.xdndHandler) return DND.DragMotionResult.CONTINUE; this._toggleOverview(); return DND.DragMotionResult.CONTINUE; } _onCornerEntered() { if (!this._entered) { this._entered = true; this._toggleOverview(); } return Clutter.EVENT_PROPAGATE; } _onCornerLeft(actor, event) { if (event.get_related() !== this) this._entered = false; // Consume event, otherwise this will confuse onEnvironsLeft return Clutter.EVENT_STOP; } vfunc_leave_event(event) { if (event.get_related() !== this._corner) this._entered = false; return Clutter.EVENT_PROPAGATE; } }); export class PressureBarrier extends Signals.EventEmitter { constructor(threshold, timeout, actionMode) { super(); this._threshold = threshold; this._timeout = timeout; this._actionMode = actionMode; this._barriers = []; this._eventFilter = null; this._isTriggered = false; this._reset(); } addBarrier(barrier) { barrier._pressureHitId = barrier.connect('hit', this._onBarrierHit.bind(this)); barrier._pressureLeftId = barrier.connect('left', this._onBarrierLeft.bind(this)); this._barriers.push(barrier); } _disconnectBarrier(barrier) { barrier.disconnect(barrier._pressureHitId); barrier.disconnect(barrier._pressureLeftId); } removeBarrier(barrier) { this._disconnectBarrier(barrier); this._barriers.splice(this._barriers.indexOf(barrier), 1); } destroy() { this._barriers.forEach(this._disconnectBarrier.bind(this)); this._barriers = []; } setEventFilter(filter) { this._eventFilter = filter; } _reset() { this._barrierEvents = []; this._currentPressure = 0; this._lastTime = 0; } _isHorizontal(barrier) { return barrier.y1 === barrier.y2; } _getDistanceAcrossBarrier(barrier, event) { if (this._isHorizontal(barrier)) return Math.abs(event.dy); else return Math.abs(event.dx); } _getDistanceAlongBarrier(barrier, event) { if (this._isHorizontal(barrier)) return Math.abs(event.dx); else return Math.abs(event.dy); } _trimBarrierEvents() { // Events are guaranteed to be sorted in time order from // oldest to newest, so just look for the first old event, // and then chop events after that off. let i = 0; let threshold = this._lastTime - this._timeout; while (i < this._barrierEvents.length) { let [time, distance_] = this._barrierEvents[i]; if (time >= threshold) break; i++; } let firstNewEvent = i; for (i = 0; i < firstNewEvent; i++) { let [time_, distance] = this._barrierEvents[i]; this._currentPressure -= distance; } this._barrierEvents = this._barrierEvents.slice(firstNewEvent); } _onBarrierLeft(barrier, _event) { barrier._isHit = false; if (this._barriers.every(b => !b._isHit)) { this._reset(); this._isTriggered = false; } } _trigger() { this._isTriggered = true; this.emit('trigger'); this._reset(); } _onBarrierHit(barrier, event) { barrier._isHit = true; // If we've triggered the barrier, wait until the pointer has the // left the barrier hitbox until we trigger it again. if (this._isTriggered) return; if (this._eventFilter && this._eventFilter(event)) return; // Throw out all events not in the proper keybinding mode if (!(this._actionMode & Main.actionMode)) return; let slide = this._getDistanceAlongBarrier(barrier, event); let distance = this._getDistanceAcrossBarrier(barrier, event); if (distance >= this._threshold) { this._trigger(); return; } // Throw out events where the cursor is move more // along the axis of the barrier than moving with // the barrier. if (slide > distance) return; this._lastTime = event.time; this._trimBarrierEvents(); distance = Math.min(15, distance); this._barrierEvents.push([event.time, distance]); this._currentPressure += distance; if (this._currentPressure >= this._threshold) this._trigger(); } } const ScreenTransition = GObject.registerClass( class ScreenTransition extends Clutter.Actor { _init() { super._init({visible: false}); } vfunc_hide() { this.content = null; super.vfunc_hide(); } run() { if (this.visible) return; Main.uiGroup.set_child_above_sibling(this, null); const rect = new Mtk.Rectangle({ x: 0, y: 0, width: global.screen_width, height: global.screen_height, }); const [, , , scale] = global.stage.get_capture_final_size(rect); this.content = global.stage.paint_to_content(rect, scale, Clutter.PaintFlag.NO_CURSORS); this.opacity = 255; this.show(); this.ease({ opacity: 0, duration: SCREEN_TRANSITION_DURATION, delay: SCREEN_TRANSITION_DELAY, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onStopped: () => this.hide(), }); } }); 070701000001C0000081A40000000000000000000000016712993F0000273F000000000000000000000000000000000000002300000000gnome-shell-47.1/js/ui/lightbox.jsimport Clutter from 'gi://Clutter'; import GObject from 'gi://GObject'; import Shell from 'gi://Shell'; import St from 'gi://St'; import * as Params from '../misc/params.js'; export const DEFAULT_FADE_FACTOR = 0.4; export const VIGNETTE_BRIGHTNESS = 0.5; export const VIGNETTE_SHARPNESS = 0.7; const VIGNETTE_DECLARATIONS = ' \ uniform float brightness; \n\ uniform float vignette_sharpness; \n\ float rand(vec2 p) { \n\ return fract(sin(dot(p, vec2(12.9898, 78.233))) * 43758.5453123); \n\ } \n'; const VIGNETTE_CODE = ' \ cogl_color_out.a = cogl_color_in.a; \n\ cogl_color_out.rgb = vec3(0.0, 0.0, 0.0); \n\ vec2 position = cogl_tex_coord_in[0].xy - 0.5; \n\ float t = clamp(length(1.41421 * position), 0.0, 1.0); \n\ float pixel_brightness = mix(1.0, 1.0 - vignette_sharpness, t); \n\ cogl_color_out.a *= 1.0 - pixel_brightness * brightness; \n\ cogl_color_out.a += (rand(position) - 0.5) / 100.0; \n'; const RadialShaderEffect = GObject.registerClass({ Properties: { 'brightness': GObject.ParamSpec.float( 'brightness', null, null, GObject.ParamFlags.READWRITE, 0, 1, 1), 'sharpness': GObject.ParamSpec.float( 'sharpness', null, null, GObject.ParamFlags.READWRITE, 0, 1, 0), }, }, class RadialShaderEffect extends Shell.GLSLEffect { _init(params) { this._brightness = undefined; this._sharpness = undefined; super._init(params); this._brightnessLocation = this.get_uniform_location('brightness'); this._sharpnessLocation = this.get_uniform_location('vignette_sharpness'); this.brightness = 1.0; this.sharpness = 0.0; } vfunc_build_pipeline() { this.add_glsl_snippet(Shell.SnippetHook.FRAGMENT, VIGNETTE_DECLARATIONS, VIGNETTE_CODE, true); } get brightness() { return this._brightness; } set brightness(v) { if (this._brightness === v) return; this._brightness = v; this.set_uniform_float(this._brightnessLocation, 1, [this._brightness]); this.notify('brightness'); } get sharpness() { return this._sharpness; } set sharpness(v) { if (this._sharpness === v) return; this._sharpness = v; this.set_uniform_float(this._sharpnessLocation, 1, [this._sharpness]); this.notify('sharpness'); } }); /** * Lightbox: */ export const Lightbox = GObject.registerClass({ Properties: { 'active': GObject.ParamSpec.boolean( 'active', null, null, GObject.ParamFlags.READABLE, false), }, }, class Lightbox extends St.Bin { /** * Lightbox creates a dark translucent "shade" actor to hide the * contents of `container`, and allows you to specify particular actors * in `container` to highlight by bringing them above the shade. It * tracks added and removed actors in `container` while the lightboxing * is active, and ensures that all actors are returned to their * original stacking order when the lightboxing is removed. (However, * if actors are restacked by outside code while the lightboxing is * active, the lightbox may later revert them back to their original * order.) * * By default, the shade window will have the height and width of * `container` and will track any changes in its size. You can override * this by passing an explicit width and height in `params`. * * @param {Clutter.Container} container parent Clutter.Container * @param {object} [params] additional parameters: * @param {boolean=} params.inhibitEvents: whether to inhibit events for `container` * @param {number=} params.width: shade actor width * @param {number=} params.height: shade actor height * @param {number=} params.fadeFactor: fading opacity factor * @param {boolean=} params.radialEffect: whether to enable the GLSL radial effect */ _init(container, params) { params = Params.parse(params, { inhibitEvents: false, width: null, height: null, fadeFactor: DEFAULT_FADE_FACTOR, radialEffect: false, }); super._init({ reactive: params.inhibitEvents, width: params.width, height: params.height, visible: false, }); this._active = false; this._container = container; this._children = container.get_children(); this._fadeFactor = params.fadeFactor; this._radialEffect = params.radialEffect; if (this._radialEffect) this.add_effect(new RadialShaderEffect({name: 'radial'})); else this.set({opacity: 0, style_class: 'lightbox'}); container.add_child(this); container.set_child_above_sibling(this, null); this.connect('destroy', this._onDestroy.bind(this)); if (!params.width || !params.height) { this.add_constraint(new Clutter.BindConstraint({ source: container, coordinate: Clutter.BindCoordinate.ALL, })); } container.connectObject( 'child-added', this._childAdded.bind(this), 'child-removed', this._childRemoved.bind(this), this); this._highlighted = null; } get active() { return this._active; } _childAdded(container, newChild) { let children = this._container.get_children(); let myIndex = children.indexOf(this); let newChildIndex = children.indexOf(newChild); if (newChildIndex > myIndex) { // The child was added above the shade (presumably it was // made the new top-most child). Move it below the shade, // and add it to this._children as the new topmost actor. this._container.set_child_above_sibling(this, newChild); this._children.push(newChild); } else if (newChildIndex === 0) { // Bottom of stack this._children.unshift(newChild); } else { // Somewhere else; insert it into the correct spot let prevChild = this._children.indexOf(children[newChildIndex - 1]); if (prevChild !== -1) // paranoia this._children.splice(prevChild + 1, 0, newChild); } } lightOn(fadeInTime) { this.remove_all_transitions(); let easeProps = { duration: fadeInTime || 0, mode: Clutter.AnimationMode.EASE_OUT_QUAD, }; let onComplete = () => { this._active = true; this.notify('active'); }; this.show(); if (this._radialEffect) { this.ease_property( '@effects.radial.brightness', VIGNETTE_BRIGHTNESS, easeProps); this.ease_property( '@effects.radial.sharpness', VIGNETTE_SHARPNESS, {onComplete, ...easeProps}); } else { this.ease({ ...easeProps, opacity: 255 * this._fadeFactor, onComplete, }); } } lightOff(fadeOutTime) { this.remove_all_transitions(); this._active = false; this.notify('active'); let easeProps = { duration: fadeOutTime || 0, mode: Clutter.AnimationMode.EASE_OUT_QUAD, }; let onComplete = () => this.hide(); if (this._radialEffect) { this.ease_property( '@effects.radial.brightness', 1.0, easeProps); this.ease_property( '@effects.radial.sharpness', 0.0, {onComplete, ...easeProps}); } else { this.ease({...easeProps, opacity: 0, onComplete}); } } _childRemoved(container, child) { let index = this._children.indexOf(child); if (index !== -1) // paranoia this._children.splice(index, 1); if (child === this._highlighted) this._highlighted = null; } /** * highlight: * * Highlights the indicated actor and unhighlights any other * currently-highlighted actor. With no arguments or a false/null * argument, all actors will be unhighlighted. * * @param {Clutter.Actor=} window actor to highlight */ highlight(window) { if (this._highlighted === window) return; // Walk this._children raising and lowering actors as needed. // Things get a little tricky if the to-be-raised and // to-be-lowered actors were originally adjacent, in which // case we may need to indicate some *other* actor as the new // sibling of the to-be-lowered one. let below = this; for (let i = this._children.length - 1; i >= 0; i--) { if (this._children[i] === window) this._container.set_child_above_sibling(this._children[i], null); else if (this._children[i] === this._highlighted) this._container.set_child_below_sibling(this._children[i], below); else below = this._children[i]; } this._highlighted = window; } /** * _onDestroy: * * This is called when the lightbox' actor is destroyed, either * by destroying its container or by explicitly calling this.destroy(). */ _onDestroy() { this.highlight(null); } }); 070701000001C1000081A40000000000000000000000016712993F00000056000000000000000000000000000000000000002400000000gnome-shell-47.1/js/ui/listModes.jsimport './environment.js'; import {listModes} from './sessionMode.js'; listModes(); 070701000001C2000081A40000000000000000000000016712993F00000415000000000000000000000000000000000000002800000000gnome-shell-47.1/js/ui/locatePointer.jsimport Gio from 'gi://Gio'; import * as Ripples from './ripples.js'; import * as Main from './main.js'; const LOCATE_POINTER_KEY = 'locate-pointer'; const LOCATE_POINTER_SCHEMA = 'org.gnome.desktop.interface'; export class LocatePointer { constructor() { this._settings = new Gio.Settings({schema_id: LOCATE_POINTER_SCHEMA}); this._settings.connect(`changed::${LOCATE_POINTER_KEY}`, () => this._syncEnabled()); this._syncEnabled(); } _syncEnabled() { let enabled = this._settings.get_boolean(LOCATE_POINTER_KEY); if (enabled === !!this._ripples) return; if (enabled) { this._ripples = new Ripples.Ripples(0.5, 0.5, 'ripple-pointer-location', true); this._ripples.addTo(Main.uiGroup); } else { this._ripples.destroy(); this._ripples = null; } } show() { if (!this._ripples) return; let [x, y] = global.get_pointer(); this._ripples.playAnimation(x, y); } } 070701000001C3000081A40000000000000000000000016712993F0000D1D2000000000000000000000000000000000000002700000000gnome-shell-47.1/js/ui/lookingGlass.jsimport Clutter from 'gi://Clutter'; import Cogl from 'gi://Cogl'; import Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import Graphene from 'gi://Graphene'; import Meta from 'gi://Meta'; import Pango from 'gi://Pango'; import Shell from 'gi://Shell'; import St from 'gi://St'; import * as Signals from '../misc/signals.js'; import System from 'system'; import * as History from '../misc/history.js'; import {ExtensionState} from '../misc/extensionUtils.js'; import * as PopupMenu from './popupMenu.js'; import * as ShellEntry from './shellEntry.js'; import * as Main from './main.js'; import * as JsParse from '../misc/jsParse.js'; const CHEVRON = '>>> '; /* Imports...feel free to add here as needed */ const commandHeader = ` const {Clutter, Gio, GLib, GObject, Meta, Shell, St} = imports.gi; const Main = await import('resource:///org/gnome/shell/ui/main.js'); /* Utility functions...we should probably be able to use these * in the shell core code too. */ const stage = global.stage; /* Special lookingGlass functions */ const inspect = Main.lookingGlass.inspect.bind(Main.lookingGlass); const it = Main.lookingGlass.getIt(); const r = Main.lookingGlass.getResult.bind(Main.lookingGlass); `; const AsyncFunction = async function () {}.constructor; const HISTORY_KEY = 'looking-glass-history'; // Time between tabs for them to count as a double-tab event const AUTO_COMPLETE_DOUBLE_TAB_DELAY = 500; const AUTO_COMPLETE_SHOW_COMPLETION_ANIMATION_DURATION = 200; const AUTO_COMPLETE_GLOBAL_KEYWORDS = _getAutoCompleteGlobalKeywords(); const LG_ANIMATION_TIME = 500; const CLUTTER_DEBUG_FLAG_CATEGORIES = new Map([ // Paint debugging can easily result in a non-responsive session ['DebugFlag', {argPos: 0, exclude: ['PAINT']}], ['DrawDebugFlag', {argPos: 1, exclude: []}], // Exluded due to the only current option likely to result in shooting ones // foot // ['PickDebugFlag', { argPos: 2, exclude: [] }], ]); function _getAutoCompleteGlobalKeywords() { const keywords = ['true', 'false', 'null', 'new']; // Don't add the private properties of globalThis (i.e., ones starting with '_') const windowProperties = Object.getOwnPropertyNames(globalThis).filter( a => a.charAt(0) !== '_'); const headerProperties = JsParse.getDeclaredConstants(commandHeader); return keywords.concat(windowProperties).concat(headerProperties); } class AutoComplete extends Signals.EventEmitter { constructor(entry) { super(); this._entry = entry; this._entry.connect('key-press-event', this._entryKeyPressEvent.bind(this)); this._lastTabTime = global.get_current_time(); } _processCompletionRequest(event) { if (event.completions.length === 0) return; // Unique match = go ahead and complete; multiple matches + single tab = complete the common starting string; // multiple matches + double tab = emit a suggest event with all possible options if (event.completions.length === 1) { this.additionalCompletionText(event.completions[0], event.attrHead); this.emit('completion', {completion: event.completions[0], type: 'whole-word'}); } else if (event.completions.length > 1 && event.tabType === 'single') { let commonPrefix = JsParse.getCommonPrefix(event.completions); if (commonPrefix.length > 0) { this.additionalCompletionText(commonPrefix, event.attrHead); this.emit('completion', {completion: commonPrefix, type: 'prefix'}); this.emit('suggest', {completions: event.completions}); } } else if (event.completions.length > 1 && event.tabType === 'double') { this.emit('suggest', {completions: event.completions}); } } async _handleCompletions(text, time) { const [completions, attrHead] = await JsParse.getCompletions(text, commandHeader, AUTO_COMPLETE_GLOBAL_KEYWORDS); const tabType = (time - this._lastTabTime) < AUTO_COMPLETE_DOUBLE_TAB_DELAY ? 'double' : 'single'; this._processCompletionRequest({ tabType, completions, attrHead, }); this._lastTabTime = time; } _entryKeyPressEvent(actor, event) { let cursorPos = this._entry.clutter_text.get_cursor_position(); let text = this._entry.get_text(); if (cursorPos !== -1) text = text.slice(0, cursorPos); if (event.get_key_symbol() === Clutter.KEY_Tab) this._handleCompletions(text, event.get_time()).catch(logError); return Clutter.EVENT_PROPAGATE; } // Insert characters of text not already included in head at cursor position. i.e., if text="abc" and head="a", // the string "bc" will be appended to this._entry additionalCompletionText(text, head) { let additionalCompletionText = text.slice(head.length); let cursorPos = this._entry.clutter_text.get_cursor_position(); this._entry.clutter_text.insert_text(additionalCompletionText, cursorPos); } } const Notebook = GObject.registerClass({ Signals: {'selection': {param_types: [Clutter.Actor.$gtype]}}, }, class Notebook extends St.BoxLayout { _init() { super._init({ vertical: true, y_expand: true, }); this.tabControls = new St.BoxLayout({style_class: 'labels'}); this._selectedIndex = -1; this._tabs = []; } appendPage(name, child) { const labelBox = new St.BoxLayout({ style_class: 'notebook-tab', reactive: true, track_hover: true, }); let label = new St.Button({label: name}); label.connect('clicked', () => { this.selectChild(child); return true; }); labelBox.add_child(label); this.tabControls.add_child(labelBox); const scrollview = new St.ScrollView({ child, y_expand: true, }); const tabData = { child, labelBox, label, scrollView: scrollview, _scrollToBottom: false, }; this._tabs.push(tabData); scrollview.hide(); this.add_child(scrollview); const vAdjust = scrollview.vadjustment; vAdjust.connect('changed', () => this._onAdjustScopeChanged(tabData)); vAdjust.connect('notify::value', () => this._onAdjustValueChanged(tabData)); if (this._selectedIndex === -1) this.selectIndex(0); } _unselect() { if (this._selectedIndex < 0) return; let tabData = this._tabs[this._selectedIndex]; tabData.labelBox.remove_style_pseudo_class('selected'); tabData.scrollView.hide(); this._selectedIndex = -1; } selectIndex(index) { if (index === this._selectedIndex) return; if (index < 0) { this._unselect(); this.emit('selection', null); return; } // Focus the new tab before unmapping the old one let tabData = this._tabs[index]; if (!tabData.scrollView.navigate_focus(null, St.DirectionType.TAB_FORWARD, false)) this.grab_key_focus(); this._unselect(); tabData.labelBox.add_style_pseudo_class('selected'); tabData.scrollView.show(); this._selectedIndex = index; this.emit('selection', tabData.child); } selectChild(child) { if (child == null) { this.selectIndex(-1); } else { for (let i = 0; i < this._tabs.length; i++) { let tabData = this._tabs[i]; if (tabData.child === child) { this.selectIndex(i); return; } } } } scrollToBottom(index) { let tabData = this._tabs[index]; tabData._scrollToBottom = true; } _onAdjustValueChanged(tabData) { const vAdjust = tabData.scrollView.vadjustment; if (vAdjust.value < (vAdjust.upper - vAdjust.lower - 0.5)) tabData._scrolltoBottom = false; } _onAdjustScopeChanged(tabData) { if (!tabData._scrollToBottom) return; const vAdjust = tabData.scrollView.vadjustment; vAdjust.value = vAdjust.upper - vAdjust.page_size; } nextTab() { let nextIndex = this._selectedIndex; if (nextIndex < this._tabs.length - 1) ++nextIndex; this.selectIndex(nextIndex); } prevTab() { let prevIndex = this._selectedIndex; if (prevIndex > 0) --prevIndex; this.selectIndex(prevIndex); } }); function objectToString(o) { if (typeof o === typeof objectToString) { // special case this since the default is way, way too verbose return ''; } else if (o && o.toString === undefined) { // eeks, something unprintable. we'll have to guess, probably a module return typeof o === 'object' && !(o instanceof Object) ? '' : ''; } else { return `${o}`; } } const ObjLink = GObject.registerClass( class ObjLink extends St.Button { _init(lookingGlass, o, title) { let text; if (title) text = title; else text = objectToString(o); super._init({ reactive: true, track_hover: true, style_class: 'shell-link', label: text, x_align: Clutter.ActorAlign.START, }); this.get_child().single_line_mode = true; this._obj = o; this._lookingGlass = lookingGlass; } vfunc_clicked() { this._lookingGlass.inspectObject(this._obj, this); } }); const Result = GObject.registerClass( class Result extends St.BoxLayout { _init(lookingGlass, command, o, index) { super._init({vertical: true}); this.index = index; this.o = o; this._lookingGlass = lookingGlass; let cmdTxt = new St.Label({text: command}); cmdTxt.clutter_text.ellipsize = Pango.EllipsizeMode.END; this.add_child(cmdTxt); let box = new St.BoxLayout({}); this.add_child(box); let resultTxt = new St.Label({text: `r(${index}) = `}); resultTxt.clutter_text.ellipsize = Pango.EllipsizeMode.END; box.add_child(resultTxt); let objLink = new ObjLink(this._lookingGlass, o); box.add_child(objLink); } }); const WindowList = GObject.registerClass({ }, class WindowList extends St.BoxLayout { _init(lookingGlass) { super._init({name: 'LookingGlassWindows', vertical: true}); let tracker = Shell.WindowTracker.get_default(); this._updateId = Main.initializeDeferredWork(this, this._updateWindowList.bind(this)); global.display.connect('window-created', this._updateWindowList.bind(this)); tracker.connect('tracked-windows-changed', this._updateWindowList.bind(this)); this._lookingGlass = lookingGlass; } _updateWindowList() { if (!this._lookingGlass.isOpen) return; this.destroy_all_children(); let windows = global.get_window_actors(); let tracker = Shell.WindowTracker.get_default(); for (let i = 0; i < windows.length; i++) { let metaWindow = windows[i].metaWindow; // Avoid multiple connections if (!metaWindow._lookingGlassManaged) { metaWindow.connect('unmanaged', this._updateWindowList.bind(this)); metaWindow._lookingGlassManaged = true; } let box = new St.BoxLayout({vertical: true, style_class: 'lg-window'}); this.add_child(box); let header = new St.BoxLayout({vertical: true, style_class: 'lg-window-name'}); box.add_child(header); let windowLink = new ObjLink(this._lookingGlass, metaWindow, metaWindow.title); header.add_child(windowLink); let propsBox = new St.BoxLayout({vertical: true, style_class: 'lg-window-props-box'}); box.add_child(propsBox); propsBox.add_child(new St.Label({text: `wmclass: ${metaWindow.get_wm_class()}`})); let app = tracker.get_window_app(metaWindow); if (app != null && !app.is_window_backed()) { let icon = app.create_icon_texture(22); let propBox = new St.BoxLayout({style_class: 'lg-window-props'}); propsBox.add_child(propBox); propBox.add_child(new St.Label({text: 'app: '})); let appLink = new ObjLink(this._lookingGlass, app, app.get_id()); propBox.add_child(appLink); propBox.add_child(icon); } else { propsBox.add_child(new St.Label({text: ''})); } } } update() { this._updateWindowList(); } }); const ObjInspector = GObject.registerClass( class ObjInspector extends St.ScrollView { _init(lookingGlass) { super._init({ name: 'LookingGlassPropertyInspector', style_class: 'lg-dialog', pivot_point: new Graphene.Point({x: 0.5, y: 0.5}), }); this._obj = null; this._previousObj = null; this._parentList = []; this._container = new St.BoxLayout({ vertical: true, x_expand: true, y_expand: true, }); this.child = this._container; this._lookingGlass = lookingGlass; } selectObject(obj, skipPrevious) { if (!skipPrevious) this._previousObj = this._obj; else this._previousObj = null; this._obj = obj; this._container.destroy_all_children(); let hbox = new St.BoxLayout({style_class: 'lg-obj-inspector-title'}); this._container.add_child(hbox); let label = new St.Label({ text: `Inspecting: ${typeof obj}: ${objectToString(obj)}`, x_expand: true, }); label.single_line_mode = true; hbox.add_child(label); let button = new St.Button({label: 'Insert', style_class: 'lg-obj-inspector-button'}); button.connect('clicked', this._onInsert.bind(this)); hbox.add_child(button); if (this._previousObj != null) { button = new St.Button({label: 'Back', style_class: 'lg-obj-inspector-button'}); button.connect('clicked', this._onBack.bind(this)); hbox.add_child(button); } button = new St.Button({ style_class: 'lg-obj-inspector-close-button', icon_name: 'window-close-symbolic', }); button.connect('clicked', this.close.bind(this)); hbox.add_child(button); if (typeof obj === typeof {}) { let properties = []; for (let propName in obj) properties.push(propName); properties.sort(); for (let i = 0; i < properties.length; i++) { let propName = properties[i]; let link; try { let prop = obj[propName]; link = new ObjLink(this._lookingGlass, prop); } catch (e) { link = new St.Label({text: ''}); } let box = new St.BoxLayout(); box.add_child(new St.Label({text: `${propName}: `})); box.add_child(link); this._container.add_child(box); } } } open(sourceActor) { if (this._open) return; const grab = Main.pushModal(this, {actionMode: Shell.ActionMode.LOOKING_GLASS}); if (grab.get_seat_state() !== Clutter.GrabState.ALL) { Main.popModal(grab); return; } this._grab = grab; this._previousObj = null; this._open = true; this.show(); if (sourceActor) { this.set_scale(0, 0); this.ease({ scale_x: 1, scale_y: 1, mode: Clutter.AnimationMode.EASE_OUT_QUAD, duration: 200, }); } else { this.set_scale(1, 1); } } close() { if (!this._open) return; Main.popModal(this._grab); this._grab = null; this._open = false; this.hide(); this._previousObj = null; this._obj = null; } vfunc_key_press_event(event) { const symbol = event.get_key_symbol(); if (symbol === Clutter.KEY_Escape) { this.close(); return Clutter.EVENT_STOP; } return super.vfunc_key_press_event(event); } _onInsert() { let obj = this._obj; this.close(); this._lookingGlass.insertObject(obj); } _onBack() { this.selectObject(this._previousObj, true); } }); const RedBorderEffect = GObject.registerClass( class RedBorderEffect extends Clutter.Effect { _init() { super._init(); this._pipeline = null; } vfunc_paint_node(node, paintContext) { let actor = this.get_actor(); const actorNode = new Clutter.ActorNode(actor, -1); node.add_child(actorNode); if (!this._pipeline) { const framebuffer = paintContext.get_framebuffer(); const coglContext = framebuffer.get_context(); let color = new Cogl.Color(); color.init_from_4f(1.0, 0.0, 0.0, 196.0 / 255.0); this._pipeline = Cogl.Pipeline.new(coglContext); this._pipeline.set_color(color); } let alloc = actor.get_allocation_box(); let width = 2; const pipelineNode = new Clutter.PipelineNode(this._pipeline); pipelineNode.set_name('Red Border'); node.add_child(pipelineNode); const box = new Clutter.ActorBox(); // clockwise order box.set_origin(0, 0); box.set_size(alloc.get_width(), width); pipelineNode.add_rectangle(box); box.set_origin(alloc.get_width() - width, width); box.set_size(width, alloc.get_height() - width); pipelineNode.add_rectangle(box); box.set_origin(0, alloc.get_height() - width); box.set_size(alloc.get_width() - width, width); pipelineNode.add_rectangle(box); box.set_origin(0, width); box.set_size(width, alloc.get_height() - width * 2); pipelineNode.add_rectangle(box); } }); export const Inspector = GObject.registerClass({ Signals: { 'closed': {}, 'target': {param_types: [Clutter.Actor.$gtype, GObject.TYPE_DOUBLE, GObject.TYPE_DOUBLE]}, }, }, class Inspector extends Clutter.Actor { _init(lookingGlass) { super._init({width: 0, height: 0}); Main.uiGroup.add_child(this); const eventHandler = new St.BoxLayout({ name: 'LookingGlassDialog', vertical: false, reactive: true, }); this._eventHandler = eventHandler; this.add_child(eventHandler); this._displayText = new St.Label({x_expand: true}); eventHandler.add_child(this._displayText); eventHandler.connect('key-press-event', this._onKeyPressEvent.bind(this)); eventHandler.connect('button-press-event', this._onButtonPressEvent.bind(this)); eventHandler.connect('scroll-event', this._onScrollEvent.bind(this)); eventHandler.connect('motion-event', this._onMotionEvent.bind(this)); this._grab = global.stage.grab(eventHandler); // this._target is the actor currently shown by the inspector. // this._pointerTarget is the actor directly under the pointer. // Normally these are the same, but if you use the scroll wheel // to drill down, they'll diverge until you either scroll back // out, or move the pointer outside of _pointerTarget. this._target = null; this._pointerTarget = null; this._lookingGlass = lookingGlass; } vfunc_allocate(box) { this.set_allocation(box); if (!this._eventHandler) return; let primary = Main.layoutManager.primaryMonitor; let [, , natWidth, natHeight] = this._eventHandler.get_preferred_size(); let childBox = new Clutter.ActorBox(); childBox.x1 = primary.x + Math.floor((primary.width - natWidth) / 2); childBox.x2 = childBox.x1 + natWidth; childBox.y1 = primary.y + Math.floor((primary.height - natHeight) / 2); childBox.y2 = childBox.y1 + natHeight; this._eventHandler.allocate(childBox); } _close() { if (this._grab) { this._grab.dismiss(); this._grab = null; } this._eventHandler.destroy(); this._eventHandler = null; this.emit('closed'); } _onKeyPressEvent(actor, event) { if (event.get_key_symbol() === Clutter.KEY_Escape) this._close(); return Clutter.EVENT_STOP; } _onButtonPressEvent(actor, event) { if (this._target) { let [stageX, stageY] = event.get_coords(); this.emit('target', this._target, stageX, stageY); } this._close(); return Clutter.EVENT_STOP; } _onScrollEvent(actor, event) { switch (event.get_scroll_direction()) { case Clutter.ScrollDirection.UP: { // select parent let parent = this._target.get_parent(); if (parent != null) { this._target = parent; this._update(event); } break; } case Clutter.ScrollDirection.DOWN: // select child if (this._target !== this._pointerTarget) { let child = this._pointerTarget; while (child) { let parent = child.get_parent(); if (parent === this._target) break; child = parent; } if (child) { this._target = child; this._update(event); } } break; default: break; } return Clutter.EVENT_STOP; } _onMotionEvent(actor, event) { this._update(event); return Clutter.EVENT_STOP; } _update(event) { let [stageX, stageY] = event.get_coords(); let target = global.stage.get_actor_at_pos( Clutter.PickMode.ALL, stageX, stageY); if (target !== this._pointerTarget) this._target = target; this._pointerTarget = target; let position = `[inspect x: ${stageX} y: ${stageY}]`; this._displayText.text = ''; this._displayText.text = `${position} ${this._target}`; this._lookingGlass.setBorderPaintTarget(this._target); } }); const Extensions = GObject.registerClass({ }, class Extensions extends St.BoxLayout { _init(lookingGlass) { super._init({vertical: true, name: 'LookingGlassExtensions'}); this._lookingGlass = lookingGlass; this._noExtensions = new St.Label({ style_class: 'lg-extensions-none', text: _('No extensions installed'), }); this._numExtensions = 0; this._extensionsList = new St.BoxLayout({ vertical: true, style_class: 'lg-extensions-list', }); this._extensionsList.add_child(this._noExtensions); this.add_child(this._extensionsList); Main.extensionManager.getUuids().forEach(uuid => { this._loadExtension(null, uuid); }); Main.extensionManager.connect('extension-loaded', this._loadExtension.bind(this)); } _loadExtension(o, uuid) { let extension = Main.extensionManager.lookup(uuid); // There can be cases where we create dummy extension metadata // that's not really a proper extension. Don't bother with these. if (!extension.metadata.name) return; let extensionDisplay = this._createExtensionDisplay(extension); if (this._numExtensions === 0) this._extensionsList.remove_child(this._noExtensions); this._numExtensions++; const {name} = extension.metadata; const pos = [...this._extensionsList].findIndex( dsp => dsp._extension.metadata.name.localeCompare(name) > 0); this._extensionsList.insert_child_at_index(extensionDisplay, pos); } _onViewSource(actor) { let extension = actor._extension; let uri = extension.dir.get_uri(); Gio.app_info_launch_default_for_uri(uri, global.create_app_launch_context(0, -1)); this._lookingGlass.close(); } _onWebPage(actor) { let extension = actor._extension; Gio.app_info_launch_default_for_uri(extension.metadata.url, global.create_app_launch_context(0, -1)); this._lookingGlass.close(); } _onViewErrors(actor) { let extension = actor._extension; let shouldShow = !actor._isShowing; if (shouldShow) { let errors = extension.errors; let errorDisplay = new St.BoxLayout({vertical: true}); if (errors && errors.length) { for (let i = 0; i < errors.length; i++) errorDisplay.add_child(new St.Label({text: errors[i]})); } else { /* Translators: argument is an extension UUID. */ let message = _('%s has not emitted any errors').format(extension.uuid); errorDisplay.add_child(new St.Label({text: message})); } actor._errorDisplay = errorDisplay; actor._parentBox.add_child(errorDisplay); actor.label = _('Hide Errors'); } else { actor._errorDisplay.destroy(); actor._errorDisplay = null; actor.label = _('Show Errors'); } actor._isShowing = shouldShow; } _stateToString(extensionState) { switch (extensionState) { case ExtensionState.ACTIVE: return _('Active'); case ExtensionState.INACTIVE: case ExtensionState.INITIALIZED: return _('Inactive'); case ExtensionState.ERROR: return _('Error'); case ExtensionState.OUT_OF_DATE: return _('Out of date'); case ExtensionState.DOWNLOADING: return _('Downloading'); case ExtensionState.DEACTIVATING: return _('Deactivating'); case ExtensionState.ACTIVATING: return _('Activating'); } return 'Unknown'; // Not translated, shouldn't appear } _createExtensionDisplay(extension) { let box = new St.BoxLayout({style_class: 'lg-extension', vertical: true}); box._extension = extension; let name = new St.Label({ style_class: 'lg-extension-name', text: extension.metadata.name, x_expand: true, }); box.add_child(name); let description = new St.Label({ style_class: 'lg-extension-description', text: extension.metadata.description || 'No description', x_expand: true, }); box.add_child(description); let metaBox = new St.BoxLayout({style_class: 'lg-extension-meta'}); box.add_child(metaBox); const state = new St.Label({ style_class: 'lg-extension-state', text: this._stateToString(extension.state), }); metaBox.add_child(state); const viewsource = new St.Button({ reactive: true, track_hover: true, style_class: 'shell-link', label: _('View Source'), }); viewsource._extension = extension; viewsource.connect('clicked', this._onViewSource.bind(this)); metaBox.add_child(viewsource); if (extension.metadata.url) { const webpage = new St.Button({ reactive: true, track_hover: true, style_class: 'shell-link', label: _('Web Page'), }); webpage._extension = extension; webpage.connect('clicked', this._onWebPage.bind(this)); metaBox.add_child(webpage); } const viewerrors = new St.Button({ reactive: true, track_hover: true, style_class: 'shell-link', label: _('Show Errors'), }); viewerrors._extension = extension; viewerrors._parentBox = box; viewerrors._isShowing = false; viewerrors.connect('clicked', this._onViewErrors.bind(this)); metaBox.add_child(viewerrors); return box; } }); const ActorLink = GObject.registerClass({ Signals: { 'inspect-actor': {}, }, }, class ActorLink extends St.Button { _init(actor) { this._arrow = new St.Icon({ icon_name: 'pan-end-symbolic', icon_size: 12, x_align: Clutter.ActorAlign.CENTER, y_align: Clutter.ActorAlign.CENTER, pivot_point: new Graphene.Point({x: 0.5, y: 0.5}), }); const label = new St.Label({ text: actor.toString(), x_align: Clutter.ActorAlign.START, }); const inspectButton = new St.Button({ icon_name: 'insert-object-symbolic', reactive: true, x_expand: true, x_align: Clutter.ActorAlign.START, y_align: Clutter.ActorAlign.CENTER, }); inspectButton.connect('clicked', () => this.emit('inspect-actor')); const box = new St.BoxLayout(); box.add_child(this._arrow); box.add_child(label); box.add_child(inspectButton); super._init({ reactive: true, track_hover: true, toggle_mode: true, style_class: 'actor-link', child: box, x_align: Clutter.ActorAlign.START, }); this._actor = actor; } vfunc_clicked() { this._arrow.ease({ rotation_angle_z: this.checked ? 90 : 0, duration: 250, }); } }); const ActorTreeViewer = GObject.registerClass( class ActorTreeViewer extends St.BoxLayout { _init(lookingGlass) { super._init({name: 'LookingGlassActors'}); this._lookingGlass = lookingGlass; this._actorData = new Map(); } _showActorChildren(actor) { const data = this._actorData.get(actor); if (!data || data.visible) return; data.visible = true; data.actorAddedId = actor.connect('child-added', (container, child) => { this._addActor(data.children, child); }); data.actorRemovedId = actor.connect('child-removed', (container, child) => { this._removeActor(child); }); for (let child of actor) this._addActor(data.children, child); } _hideActorChildren(actor) { const data = this._actorData.get(actor); if (!data || !data.visible) return; for (let child of actor) this._removeActor(child); data.visible = false; if (data.actorAddedId > 0) { actor.disconnect(data.actorAddedId); data.actorAddedId = 0; } if (data.actorRemovedId > 0) { actor.disconnect(data.actorRemovedId); data.actorRemovedId = 0; } data.children.remove_all_children(); } _addActor(container, actor) { if (this._actorData.has(actor)) return; if (actor === this._lookingGlass) return; const button = new ActorLink(actor); button.connect('notify::checked', () => { this._lookingGlass.setBorderPaintTarget(actor); if (button.checked) this._showActorChildren(actor); else this._hideActorChildren(actor); }); button.connect('inspect-actor', () => { this._lookingGlass.inspectObject(actor, button); }); const mainContainer = new St.BoxLayout({vertical: true}); const childrenContainer = new St.BoxLayout({ vertical: true, style: 'padding: 0 0 0 18px', }); mainContainer.add_child(button); mainContainer.add_child(childrenContainer); this._actorData.set(actor, { button, container: mainContainer, children: childrenContainer, visible: false, actorAddedId: 0, actorRemovedId: 0, actorDestroyedId: actor.connect('destroy', () => this._removeActor(actor)), }); let belowChild = null; const nextSibling = actor.get_next_sibling(); if (nextSibling && this._actorData.has(nextSibling)) belowChild = this._actorData.get(nextSibling).container; container.insert_child_above(mainContainer, belowChild); } _removeActor(actor) { const data = this._actorData.get(actor); if (!data) return; for (let child of actor) this._removeActor(child); if (data.actorAddedId > 0) { actor.disconnect(data.actorAddedId); data.actorAddedId = 0; } if (data.actorRemovedId > 0) { actor.disconnect(data.actorRemovedId); data.actorRemovedId = 0; } if (data.actorDestroyedId > 0) { actor.disconnect(data.actorDestroyedId); data.actorDestroyedId = 0; } data.container.destroy(); this._actorData.delete(actor); } vfunc_map() { super.vfunc_map(); this._addActor(this, global.stage); } vfunc_unmap() { super.vfunc_unmap(); this._removeActor(global.stage); } }); const DebugFlag = GObject.registerClass({ GTypeFlags: GObject.TypeFlags.ABSTRACT, }, class DebugFlag extends St.Button { _init(label) { const box = new St.BoxLayout({x_expand: true}); const flagLabel = new St.Label({ text: label, x_expand: true, x_align: Clutter.ActorAlign.START, y_align: Clutter.ActorAlign.CENTER, }); box.add_child(flagLabel); this._flagSwitch = new PopupMenu.Switch(false); this._stateHandler = this._flagSwitch.connect('notify::state', () => { if (this._flagSwitch.state) this._enable(); else this._disable(); }); // Update state whenever the switch is mapped, because most debug flags // don't have a way of notifying us of changes. this._flagSwitch.connect('notify::mapped', () => { if (!this._flagSwitch.is_mapped()) return; const state = this._isEnabled(); if (state === this._flagSwitch.state) return; this._flagSwitch.block_signal_handler(this._stateHandler); this._flagSwitch.state = state; this._flagSwitch.unblock_signal_handler(this._stateHandler); }); box.add_child(this._flagSwitch); super._init({ style_class: 'lg-debug-flag-button', can_focus: true, toggleMode: true, child: box, label_actor: flagLabel, y_align: Clutter.ActorAlign.CENTER, }); this.connect('clicked', () => this._flagSwitch.toggle()); } _isEnabled() { throw new Error('Method not implemented'); } _enable() { throw new Error('Method not implemented'); } _disable() { throw new Error('Method not implemented'); } }); const ClutterDebugFlag = GObject.registerClass( class ClutterDebugFlag extends DebugFlag { _init(categoryName, flagName) { super._init(flagName); this._argPos = CLUTTER_DEBUG_FLAG_CATEGORIES.get(categoryName).argPos; this._enumValue = Clutter[categoryName][flagName]; } _isEnabled() { const enabledFlags = Meta.get_clutter_debug_flags(); return !!(enabledFlags[this._argPos] & this._enumValue); } _getArgs() { const args = [0, 0, 0]; args[this._argPos] = this._enumValue; return args; } _enable() { Meta.add_clutter_debug_flags(...this._getArgs()); } _disable() { Meta.remove_clutter_debug_flags(...this._getArgs()); } }); const MutterPaintDebugFlag = GObject.registerClass( class MutterPaintDebugFlag extends DebugFlag { _init(flagName) { super._init(flagName); this._enumValue = Meta.DebugPaintFlag[flagName]; } _isEnabled() { return !!(Meta.get_debug_paint_flags() & this._enumValue); } _enable() { Meta.add_debug_paint_flag(this._enumValue); } _disable() { Meta.remove_debug_paint_flag(this._enumValue); } }); const MutterTopicDebugFlag = GObject.registerClass( class MutterTopicDebugFlag extends DebugFlag { _init(flagName) { super._init(flagName); this._enumValue = Meta.DebugTopic[flagName]; } _isEnabled() { return Meta.is_topic_enabled(this._enumValue); } _enable() { Meta.add_verbose_topic(this._enumValue); } _disable() { Meta.remove_verbose_topic(this._enumValue); } }); const UnsafeModeDebugFlag = GObject.registerClass( class UnsafeModeDebugFlag extends DebugFlag { _init() { super._init('unsafe-mode'); } _isEnabled() { return global.context.unsafe_mode; } _enable() { global.context.unsafe_mode = true; } _disable() { global.context.unsafe_mode = false; } }); const DebugControlExportedDebugFlag = GObject.registerClass( class DebugControlExportedDebugFlag extends DebugFlag { _init() { super._init('debug-control'); } _isEnabled() { return global.context.get_debug_control().exported; } _enable() { global.context.get_debug_control().exported = true; } _disable() { global.context.get_debug_control().exported = false; } }); const DebugFlags = GObject.registerClass( class DebugFlags extends St.BoxLayout { _init() { super._init({ name: 'LookingGlassDebugFlags', vertical: true, x_align: Clutter.ActorAlign.CENTER, }); // Clutter debug flags for (const [categoryName, props] of CLUTTER_DEBUG_FLAG_CATEGORIES.entries()) { this._addHeader(`Clutter${categoryName}`); for (const flagName of this._getFlagNames(Clutter[categoryName])) { if (props.exclude.includes(flagName)) continue; this.add_child(new ClutterDebugFlag(categoryName, flagName)); } } // Meta paint flags this._addHeader('MetaDebugPaintFlag'); for (const flagName of this._getFlagNames(Meta.DebugPaintFlag)) this.add_child(new MutterPaintDebugFlag(flagName)); // Meta debug topics this._addHeader('MetaDebugTopic'); for (const flagName of this._getFlagNames(Meta.DebugTopic)) this.add_child(new MutterTopicDebugFlag(flagName)); // General / Context this._addHeader('General'); // MetaContext::unsafe-mode this.add_child(new UnsafeModeDebugFlag()); // DebugControl::exported this.add_child(new DebugControlExportedDebugFlag()); } _addHeader(title) { const header = new St.Label({ text: title, style_class: 'lg-debug-flags-header', x_align: Clutter.ActorAlign.START, }); this.add_child(header); } *_getFlagNames(enumObject) { for (const flagName of Object.getOwnPropertyNames(enumObject)) { if (typeof enumObject[flagName] !== 'number') continue; if (enumObject[flagName] <= 0) continue; yield flagName; } } }); export const LookingGlass = GObject.registerClass( class LookingGlass extends St.BoxLayout { _init() { super._init({ name: 'LookingGlassDialog', style_class: 'lg-dialog', vertical: true, visible: false, reactive: true, }); this._borderPaintTarget = null; this._redBorderEffect = new RedBorderEffect(); this._open = false; this._it = null; this._offset = 0; // Sort of magic, but...eh. this._maxItems = 150; // We want it to appear to slide out from underneath the panel Main.uiGroup.add_child(this); Main.uiGroup.set_child_below_sibling(this, Main.layoutManager.panelBox); Main.layoutManager.panelBox.connect('notify::allocation', this._queueResize.bind(this)); Main.layoutManager.keyboardBox.connect('notify::allocation', this._queueResize.bind(this)); this._objInspector = new ObjInspector(this); Main.uiGroup.add_child(this._objInspector); this._objInspector.hide(); let toolbar = new St.BoxLayout({name: 'Toolbar'}); this.add_child(toolbar); const inspectButton = new St.Button({ style_class: 'lg-toolbar-button', icon_name: 'find-location-symbolic', }); toolbar.add_child(inspectButton); inspectButton.connect('clicked', () => { let inspector = new Inspector(this); inspector.connect('target', (i, target, stageX, stageY) => { this._pushResult(`inspect(${Math.round(stageX)}, ${Math.round(stageY)})`, target); }); inspector.connect('closed', () => { this.show(); global.stage.set_key_focus(this._entry); }); this.hide(); return Clutter.EVENT_STOP; }); const gcButton = new St.Button({ style_class: 'lg-toolbar-button', icon_name: 'user-trash-full-symbolic', }); toolbar.add_child(gcButton); gcButton.connect('clicked', () => { gcButton.child.icon_name = 'user-trash-symbolic'; System.gc(); this._timeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 500, () => { gcButton.child.icon_name = 'user-trash-full-symbolic'; this._timeoutId = 0; return GLib.SOURCE_REMOVE; }); GLib.Source.set_name_by_id( this._timeoutId, '[gnome-shell] gcButton.child.icon_name = \'user-trash-full-symbolic\'' ); return Clutter.EVENT_PROPAGATE; }); let notebook = new Notebook(); this._notebook = notebook; this.add_child(notebook); let emptyBox = new St.Bin({x_expand: true}); toolbar.add_child(emptyBox); toolbar.add_child(notebook.tabControls); this._evalBox = new St.BoxLayout({name: 'LookingGlassEvaluator', vertical: true}); notebook.appendPage('Evaluator', this._evalBox); this._resultsArea = new St.BoxLayout({ style_class: 'evaluator-results', vertical: true, y_expand: true, }); this._evalBox.add_child(this._resultsArea); this._entryArea = new St.BoxLayout({ name: 'EntryArea', y_align: Clutter.ActorAlign.END, }); this._evalBox.add_child(this._entryArea); let label = new St.Label({text: CHEVRON}); this._entryArea.add_child(label); this._entry = new St.Entry({ can_focus: true, x_expand: true, }); ShellEntry.addContextMenu(this._entry); this._entryArea.add_child(this._entry); this._windowList = new WindowList(this); notebook.appendPage('Windows', this._windowList); this._extensions = new Extensions(this); notebook.appendPage('Extensions', this._extensions); this._actorTreeViewer = new ActorTreeViewer(this); notebook.appendPage('Actors', this._actorTreeViewer); this._debugFlags = new DebugFlags(); notebook.appendPage('Flags', this._debugFlags); this._entry.clutter_text.connect('activate', (o, _e) => { // Hide any completions we are currently showing this._hideCompletions(); let text = o.get_text(); // Ensure we don't get newlines in the command; the history file is // newline-separated. text = text.replace('\n', ' '); this._evaluate(text).catch(logError); return true; }); this._history = new History.HistoryManager({ gsettingsKey: HISTORY_KEY, entry: this._entry.clutter_text, }); this._autoComplete = new AutoComplete(this._entry); this._autoComplete.connect('suggest', (a, e) => { this._showCompletions(e.completions); }); // If a completion is completed unambiguously, the currently-displayed completion // suggestions become irrelevant. this._autoComplete.connect('completion', (a, e) => { if (e.type === 'whole-word') this._hideCompletions(); }); this._resize(); } vfunc_captured_event(event) { if (Main.keyboard.maybeHandleEvent(event)) return Clutter.EVENT_STOP; return Clutter.EVENT_PROPAGATE; } setBorderPaintTarget(obj) { if (this._borderPaintTarget != null) this._borderPaintTarget.remove_effect(this._redBorderEffect); this._borderPaintTarget = obj; if (this._borderPaintTarget != null) this._borderPaintTarget.add_effect(this._redBorderEffect); } _pushResult(command, obj) { let index = this._resultsArea.get_n_children() + this._offset; let result = new Result(this, CHEVRON + command, obj, index); this._resultsArea.add_child(result); if (obj instanceof Clutter.Actor) this.setBorderPaintTarget(obj); if (this._resultsArea.get_n_children() > this._maxItems) { this._resultsArea.get_first_child().destroy(); this._offset++; } this._it = obj; // Scroll to bottom this._notebook.scrollToBottom(0); } _showCompletions(completions) { if (!this._completionActor) { this._completionActor = new St.Label({name: 'LookingGlassAutoCompletionText', style_class: 'lg-completions-text'}); this._completionActor.clutter_text.ellipsize = Pango.EllipsizeMode.NONE; this._completionActor.clutter_text.line_wrap = true; this._evalBox.insert_child_below(this._completionActor, this._entryArea); } this._completionActor.set_text(completions.join(', ')); // Setting the height to -1 allows us to get its actual preferred height rather than // whatever was last set when animating this._completionActor.set_height(-1); let [, naturalHeight] = this._completionActor.get_preferred_height(this._resultsArea.get_width()); // Don't reanimate if we are already visible if (this._completionActor.visible) { this._completionActor.height = naturalHeight; } else { let settings = St.Settings.get(); let duration = AUTO_COMPLETE_SHOW_COMPLETION_ANIMATION_DURATION / settings.slow_down_factor; this._completionActor.show(); this._completionActor.remove_all_transitions(); this._completionActor.ease({ height: naturalHeight, opacity: 255, duration, mode: Clutter.AnimationMode.EASE_OUT_QUAD, }); } } _hideCompletions() { if (this._completionActor) { let settings = St.Settings.get(); let duration = AUTO_COMPLETE_SHOW_COMPLETION_ANIMATION_DURATION / settings.slow_down_factor; this._completionActor.remove_all_transitions(); this._completionActor.ease({ height: 0, opacity: 0, duration, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => { this._completionActor.hide(); }, }); } } async _evaluate(command) { command = this._history.addItem(command); // trims command if (!command) return; let lines = command.split(';'); lines.push(`return ${lines.pop()}`); let fullCmd = commandHeader + lines.join(';'); let resultObj; try { resultObj = await AsyncFunction(fullCmd)(); } catch (e) { resultObj = ``; } this._pushResult(command, resultObj); this._entry.text = ''; } inspect(x, y) { return global.stage.get_actor_at_pos(Clutter.PickMode.REACTIVE, x, y); } getIt() { return this._it; } getResult(idx) { try { return this._resultsArea.get_child_at_index(idx - this._offset).o; } catch (e) { throw new Error(`Unknown result at index ${idx}`); } } toggle() { if (this._open) this.close(); else this.open(); } _queueResize() { const laters = global.compositor.get_laters(); laters.add(Meta.LaterType.BEFORE_REDRAW, () => { this._resize(); return GLib.SOURCE_REMOVE; }); } _resize() { let primary = Main.layoutManager.primaryMonitor; let myWidth = primary.width * 0.7; let availableHeight = primary.height - Main.layoutManager.keyboardBox.height; let myHeight = Math.min(primary.height * 0.7, availableHeight * 0.9); this.x = primary.x + (primary.width - myWidth) / 2; this._hiddenY = primary.y + Main.layoutManager.panelBox.height - myHeight; this._targetY = this._hiddenY + myHeight; this.y = this._hiddenY; this.width = myWidth; this.height = myHeight; this._objInspector.set_size(Math.floor(myWidth * 0.8), Math.floor(myHeight * 0.8)); this._objInspector.set_position( this.x + Math.floor(myWidth * 0.1), this._targetY + Math.floor(myHeight * 0.1)); } insertObject(obj) { this._pushResult('', obj); } inspectObject(obj, sourceActor) { this._objInspector.open(sourceActor); this._objInspector.selectObject(obj); } // Handle key events which are relevant for all tabs of the LookingGlass vfunc_key_press_event(event) { let symbol = event.get_key_symbol(); if (symbol === Clutter.KEY_Escape) { this.close(); return Clutter.EVENT_STOP; } // Ctrl+PgUp and Ctrl+PgDown switches tabs in the notebook view if (event.get_state() & Clutter.ModifierType.CONTROL_MASK) { if (symbol === Clutter.KEY_Page_Up) this._notebook.prevTab(); else if (symbol === Clutter.KEY_Page_Down) this._notebook.nextTab(); } return super.vfunc_key_press_event(event); } open() { if (this._open) return; let grab = Main.pushModal(this, {actionMode: Shell.ActionMode.LOOKING_GLASS}); if (grab.get_seat_state() !== Clutter.GrabState.ALL) { Main.popModal(grab); return; } this._grab = grab; this._notebook.selectIndex(0); this.show(); this._open = true; this._history.lastItem(); this.remove_all_transitions(); // We inverse compensate for the slow-down so you can change the factor // through LookingGlass without long waits. let duration = LG_ANIMATION_TIME / St.Settings.get().slow_down_factor; this.ease({ y: this._targetY, duration, mode: Clutter.AnimationMode.EASE_OUT_QUAD, }); this._windowList.update(); this._entry.grab_key_focus(); } close() { if (!this._open) return; this._objInspector.hide(); this._open = false; this.remove_all_transitions(); this.setBorderPaintTarget(null); let settings = St.Settings.get(); let duration = Math.min( LG_ANIMATION_TIME / settings.slow_down_factor, LG_ANIMATION_TIME); this.ease({ y: this._hiddenY, duration, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => { Main.popModal(this._grab); this._grab = null; this.hide(); }, }); } get isOpen() { return this._open; } }); 070701000001C4000081A40000000000000000000000016712993F00011EA9000000000000000000000000000000000000002400000000gnome-shell-47.1/js/ui/magnifier.jsimport Atspi from 'gi://Atspi'; import Clutter from 'gi://Clutter'; import Cogl from 'gi://Cogl'; import GDesktopEnums from 'gi://GDesktopEnums'; import Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import Meta from 'gi://Meta'; import Shell from 'gi://Shell'; import St from 'gi://St'; import * as Signals from '../misc/signals.js'; import * as Background from './background.js'; import * as FocusCaretTracker from './focusCaretTracker.js'; import * as Main from './main.js'; import * as Params from '../misc/params.js'; import * as PointerWatcher from './pointerWatcher.js'; const CROSSHAIRS_CLIP_SIZE = [100, 100]; const NO_CHANGE = 0.0; const POINTER_REST_TIME = 1000; // milliseconds // Settings const MAGNIFIER_SCHEMA = 'org.gnome.desktop.a11y.magnifier'; const SCREEN_POSITION_KEY = 'screen-position'; const MAG_FACTOR_KEY = 'mag-factor'; const INVERT_LIGHTNESS_KEY = 'invert-lightness'; const COLOR_SATURATION_KEY = 'color-saturation'; const BRIGHT_RED_KEY = 'brightness-red'; const BRIGHT_GREEN_KEY = 'brightness-green'; const BRIGHT_BLUE_KEY = 'brightness-blue'; const CONTRAST_RED_KEY = 'contrast-red'; const CONTRAST_GREEN_KEY = 'contrast-green'; const CONTRAST_BLUE_KEY = 'contrast-blue'; const LENS_MODE_KEY = 'lens-mode'; const CLAMP_MODE_KEY = 'scroll-at-edges'; const MOUSE_TRACKING_KEY = 'mouse-tracking'; const FOCUS_TRACKING_KEY = 'focus-tracking'; const CARET_TRACKING_KEY = 'caret-tracking'; const SHOW_CROSS_HAIRS_KEY = 'show-cross-hairs'; const CROSS_HAIRS_THICKNESS_KEY = 'cross-hairs-thickness'; const CROSS_HAIRS_COLOR_KEY = 'cross-hairs-color'; const CROSS_HAIRS_OPACITY_KEY = 'cross-hairs-opacity'; const CROSS_HAIRS_LENGTH_KEY = 'cross-hairs-length'; const CROSS_HAIRS_CLIP_KEY = 'cross-hairs-clip'; const MouseSpriteContent = GObject.registerClass({ Implements: [Clutter.Content], }, class MouseSpriteContent extends GObject.Object { _init() { super._init(); this._texture = null; } vfunc_get_preferred_size() { if (!this._texture) return [false, 0, 0]; return [true, this._texture.get_width(), this._texture.get_height()]; } vfunc_paint_content(actor, node, _paintContext) { if (!this._texture) return; let [minFilter, magFilter] = actor.get_content_scaling_filters(); let textureNode = new Clutter.TextureNode(this._texture, null, minFilter, magFilter); textureNode.set_name('MouseSpriteContent'); node.add_child(textureNode); textureNode.add_rectangle(actor.get_content_box()); } get texture() { return this._texture; } set texture(coglTexture) { if (this._texture === coglTexture) return; let oldTexture = this._texture; this._texture = coglTexture; this.invalidate(); if (!oldTexture || !coglTexture || oldTexture.get_width() !== coglTexture.get_width() || oldTexture.get_height() !== coglTexture.get_height()) this.invalidate_size(); } }); export class Magnifier extends Signals.EventEmitter { constructor() { super(); // Magnifier is a manager of ZoomRegions. this._zoomRegions = []; // Create small clutter tree for the magnified mouse. let cursorTracker = Meta.CursorTracker.get_for_display(global.display); this._cursorTracker = cursorTracker; this._mouseSprite = new Clutter.Actor({request_mode: Clutter.RequestMode.CONTENT_SIZE}); this._mouseSprite.content = new MouseSpriteContent(); this._cursorRoot = new Clutter.Actor(); this._cursorRoot.add_child(this._mouseSprite); // Create the first ZoomRegion and initialize it according to the // magnification settings. [this.xMouse, this.yMouse] = global.get_pointer(); let aZoomRegion = new ZoomRegion(this, this._cursorRoot); this._zoomRegions.push(aZoomRegion); this._settingsInit(aZoomRegion); aZoomRegion.scrollContentsTo(this.xMouse, this.yMouse); St.Settings.get().connect('notify::magnifier-active', () => { this.setActive(St.Settings.get().magnifier_active); }); this.setActive(St.Settings.get().magnifier_active); this._cursorUnfocusInhibited = false; } /** * showSystemCursor: * Show the system mouse pointer. */ showSystemCursor() { const seat = Clutter.get_default_backend().get_default_seat(); if (this._cursorUnfocusInhibited) { seat.uninhibit_unfocus(); this._cursorUnfocusInhibited = false; } if (this._cursorVisibilityChangedId) { this._cursorTracker.disconnect(this._cursorVisibilityChangedId); delete this._cursorVisibilityChangedId; this._cursorTracker.set_pointer_visible(true); } } /** * hideSystemCursor: * Hide the system mouse pointer. */ hideSystemCursor() { const seat = Clutter.get_default_backend().get_default_seat(); if (!this._cursorUnfocusInhibited) { seat.inhibit_unfocus(); this._cursorUnfocusInhibited = true; } if (!this._cursorVisibilityChangedId) { this._cursorTracker.set_pointer_visible(false); this._cursorVisibilityChangedId = this._cursorTracker.connect('visibility-changed', () => { if (this._cursorTracker.get_pointer_visible()) this._cursorTracker.set_pointer_visible(false); }); } } /** * setActive: * Show/hide all the zoom regions. * * @param {boolean} activate Boolean to activate or de-activate the magnifier. */ setActive(activate) { let isActive = this.isActive(); this._zoomRegions.forEach(zoomRegion => { zoomRegion.setActive(activate); }); if (isActive === activate) return; if (activate) { this._updateMouseSprite(); this._cursorTracker.connectObject( 'cursor-changed', this._updateMouseSprite.bind(this), this); Meta.disable_unredirect_for_display(global.display); this.startTrackingMouse(); } else { this._cursorTracker.disconnectObject(this); this._mouseSprite.content.texture = null; Meta.enable_unredirect_for_display(global.display); this.stopTrackingMouse(); } if (this._crossHairs) this._crossHairs.setEnabled(activate); // Make sure system mouse pointer is shown when all zoom regions are // invisible. if (!activate) this.showSystemCursor(); // Notify interested parties of this change this.emit('active-changed', activate); } /** * isActive: * * @returns {boolean} Whether the magnifier is active. */ isActive() { // Sufficient to check one ZoomRegion since Magnifier's active // state applies to all of them. if (this._zoomRegions.length === 0) return false; else return this._zoomRegions[0].isActive(); } /** * startTrackingMouse: * Turn on mouse tracking, if not already doing so. */ startTrackingMouse() { if (!this._pointerWatch) { let interval = 1000 / 60; this._pointerWatch = PointerWatcher.getPointerWatcher().addWatch(interval, this.scrollToMousePos.bind(this)); this.scrollToMousePos(); } } /** * stopTrackingMouse: * Turn off mouse tracking, if not already doing so. */ stopTrackingMouse() { if (this._pointerWatch) this._pointerWatch.remove(); this._pointerWatch = null; } /** * isTrackingMouse: * * @returns {boolean} whether the magnifier is currently tracking the mouse */ isTrackingMouse() { return !!this._pointerWatch; } /** * scrollToMousePos: * Position all zoom regions' ROI relative to the current location of the * system pointer. * * @param {[xMouse: number, yMouse: number] | []} args */ scrollToMousePos(...args) { const [xMouse, yMouse] = args.length ? args : global.get_pointer(); if (xMouse === this.xMouse && yMouse === this.yMouse) return; this.xMouse = xMouse; this.yMouse = yMouse; let sysMouseOverAny = false; this._zoomRegions.forEach(zoomRegion => { if (zoomRegion.scrollToMousePos()) sysMouseOverAny = true; }); if (sysMouseOverAny) this.hideSystemCursor(); else this.showSystemCursor(); } /** * createZoomRegion: * Create a ZoomRegion instance with the given properties. * * @param {number} xMagFactor * The power to set horizontal magnification of the ZoomRegion. A value * of 1.0 means no magnification, a value of 2.0 doubles the size. * @param {number} yMagFactor * The power to set the vertical magnification of the ZoomRegion. * @param {{x: number, y: number, width: number, height: number}} roi * The reg Object that defines the region to magnify, given in * unmagnified coordinates. * @param {{x: number, y: number, width: number, height: number}} viewPort * Object that defines the position of the ZoomRegion on screen. * @returns {ZoomRegion} the newly created ZoomRegion. */ createZoomRegion(xMagFactor, yMagFactor, roi, viewPort) { let zoomRegion = new ZoomRegion(this, this._cursorRoot); zoomRegion.setViewPort(viewPort); // We ignore the redundant width/height on the ROI let fixedROI = Object.create(roi); fixedROI.width = viewPort.width / xMagFactor; fixedROI.height = viewPort.height / yMagFactor; zoomRegion.setROI(fixedROI); zoomRegion.addCrosshairs(this._crossHairs); return zoomRegion; } /** * addZoomRegion: * Append the given ZoomRegion to the list of currently defined ZoomRegions * for this Magnifier instance. * * @param {ZoomRegion} zoomRegion The zoomRegion to add. */ addZoomRegion(zoomRegion) { if (zoomRegion) { this._zoomRegions.push(zoomRegion); if (!this.isTrackingMouse()) this.startTrackingMouse(); } } /** * getZoomRegions: * Return a list of ZoomRegion's for this Magnifier. * * @returns {ZoomRegion[]} The Magnifier's zoom region list. */ getZoomRegions() { return this._zoomRegions; } /** * clearAllZoomRegions: * Remove all the zoom regions from this Magnfier's ZoomRegion list. */ clearAllZoomRegions() { for (let i = 0; i < this._zoomRegions.length; i++) this._zoomRegions[i].setActive(false); this._zoomRegions.length = 0; this.stopTrackingMouse(); this.showSystemCursor(); } /** * addCrosshairs: * Add and show a cross hair centered on the magnified mouse. */ addCrosshairs() { if (!this._crossHairs) this._crossHairs = new Crosshairs(); let thickness = this._settings.get_int(CROSS_HAIRS_THICKNESS_KEY); let color = this._settings.get_string(CROSS_HAIRS_COLOR_KEY); let opacity = this._settings.get_double(CROSS_HAIRS_OPACITY_KEY); let length = this._settings.get_int(CROSS_HAIRS_LENGTH_KEY); let clip = this._settings.get_boolean(CROSS_HAIRS_CLIP_KEY); this.setCrosshairsThickness(thickness); this.setCrosshairsColor(color); this.setCrosshairsOpacity(opacity); this.setCrosshairsLength(length); this.setCrosshairsClip(clip); let theCrossHairs = this._crossHairs; this._zoomRegions.forEach(zoomRegion => { zoomRegion.addCrosshairs(theCrossHairs); }); } /** * setCrosshairsVisible: * * Show or hide the cross hair * * @param {boolean} visible Flag that indicates show (true) or hide (false). */ setCrosshairsVisible(visible) { if (visible) { if (!this._crossHairs) this.addCrosshairs(); this._crossHairs.show(); } else { // eslint-disable-next-line no-lonely-if if (this._crossHairs) this._crossHairs.hide(); } } /** * setCrosshairsColor: * * Set the color of the crosshairs for all ZoomRegions. * * @param {string} color The color as a string, e.g. '#ff0000ff' or 'red'. */ setCrosshairsColor(color) { if (this._crossHairs) { let [res_, clutterColor] = Cogl.Color.from_string(color); this._crossHairs.setColor(clutterColor); } } /** * setCrosshairsThickness: * * Set the crosshairs thickness for all ZoomRegions. * * @param {number} thickness The width of the vertical and * horizontal lines of the crosshairs. */ setCrosshairsThickness(thickness) { if (this._crossHairs) this._crossHairs.setThickness(thickness); } /** * Get the crosshairs thickness. * * @returns {number} The width of the vertical and horizontal * lines of the crosshairs. */ getCrosshairsThickness() { if (this._crossHairs) return this._crossHairs.getThickness(); else return 0; } /** * @param {number} opacity Value between 0.0 (transparent) * and 1.0 (fully opaque). */ setCrosshairsOpacity(opacity) { if (this._crossHairs) this._crossHairs.setOpacity(opacity * 255); } /** * @returns {number} Value between 0.0 (transparent) and 1.0 (fully opaque). */ getCrosshairsOpacity() { if (this._crossHairs) return this._crossHairs.getOpacity() / 255.0; else return 0.0; } /** * Set the crosshairs length for all ZoomRegions. * * @param {number} length The length of the vertical and horizontal * lines making up the crosshairs. */ setCrosshairsLength(length) { if (this._crossHairs) { let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor; this._crossHairs.setLength(length / scaleFactor); } } /** * getCrosshairsLength: * Get the crosshairs length. * * @returns {number} The length of the vertical and horizontal * lines making up the crosshairs. */ getCrosshairsLength() { if (this._crossHairs) return this._crossHairs.getLength(); else return 0; } /** * setCrosshairsClip: * * Set whether the crosshairs are clipped at their intersection. * * @param {boolean} clip Flag to indicate whether to clip the crosshairs. */ setCrosshairsClip(clip) { if (!this._crossHairs) return; // Setting no clipping on crosshairs means a zero sized clip rectangle. this._crossHairs.setClip(clip ? CROSSHAIRS_CLIP_SIZE : [0, 0]); } /** * getCrosshairsClip: * Get whether the crosshairs are clipped by the mouse image. * * @returns {boolean} Whether the crosshairs are clipped. */ getCrosshairsClip() { if (this._crossHairs) { let [clipWidth, clipHeight] = this._crossHairs.getClip(); return clipWidth > 0 && clipHeight > 0; } else { return false; } } // Private methods // _updateMouseSprite() { this._updateSpriteTexture(); let [xHot, yHot] = this._cursorTracker.get_hot(); this._mouseSprite.set({ translation_x: -xHot, translation_y: -yHot, }); } _updateSpriteTexture() { let sprite = this._cursorTracker.get_sprite(); if (sprite) { this._mouseSprite.content.texture = sprite; this._mouseSprite.show(); } else { this._mouseSprite.hide(); } } _settingsInit(zoomRegion) { this._settings = new Gio.Settings({schema_id: MAGNIFIER_SCHEMA}); this._settings.connect(`changed::${SCREEN_POSITION_KEY}`, this._updateScreenPosition.bind(this)); this._settings.connect(`changed::${MAG_FACTOR_KEY}`, this._updateMagFactor.bind(this)); this._settings.connect(`changed::${LENS_MODE_KEY}`, this._updateLensMode.bind(this)); this._settings.connect(`changed::${CLAMP_MODE_KEY}`, this._updateClampMode.bind(this)); this._settings.connect(`changed::${MOUSE_TRACKING_KEY}`, this._updateMouseTrackingMode.bind(this)); this._settings.connect(`changed::${FOCUS_TRACKING_KEY}`, this._updateFocusTrackingMode.bind(this)); this._settings.connect(`changed::${CARET_TRACKING_KEY}`, this._updateCaretTrackingMode.bind(this)); this._settings.connect(`changed::${INVERT_LIGHTNESS_KEY}`, this._updateInvertLightness.bind(this)); this._settings.connect(`changed::${COLOR_SATURATION_KEY}`, this._updateColorSaturation.bind(this)); this._settings.connect(`changed::${BRIGHT_RED_KEY}`, this._updateBrightness.bind(this)); this._settings.connect(`changed::${BRIGHT_GREEN_KEY}`, this._updateBrightness.bind(this)); this._settings.connect(`changed::${BRIGHT_BLUE_KEY}`, this._updateBrightness.bind(this)); this._settings.connect(`changed::${CONTRAST_RED_KEY}`, this._updateContrast.bind(this)); this._settings.connect(`changed::${CONTRAST_GREEN_KEY}`, this._updateContrast.bind(this)); this._settings.connect(`changed::${CONTRAST_BLUE_KEY}`, this._updateContrast.bind(this)); this._settings.connect(`changed::${SHOW_CROSS_HAIRS_KEY}`, () => { this.setCrosshairsVisible(this._settings.get_boolean(SHOW_CROSS_HAIRS_KEY)); }); this._settings.connect(`changed::${CROSS_HAIRS_THICKNESS_KEY}`, () => { this.setCrosshairsThickness(this._settings.get_int(CROSS_HAIRS_THICKNESS_KEY)); }); this._settings.connect(`changed::${CROSS_HAIRS_COLOR_KEY}`, () => { this.setCrosshairsColor(this._settings.get_string(CROSS_HAIRS_COLOR_KEY)); }); this._settings.connect(`changed::${CROSS_HAIRS_OPACITY_KEY}`, () => { this.setCrosshairsOpacity(this._settings.get_double(CROSS_HAIRS_OPACITY_KEY)); }); this._settings.connect(`changed::${CROSS_HAIRS_LENGTH_KEY}`, () => { this.setCrosshairsLength(this._settings.get_int(CROSS_HAIRS_LENGTH_KEY)); }); this._settings.connect(`changed::${CROSS_HAIRS_CLIP_KEY}`, () => { this.setCrosshairsClip(this._settings.get_boolean(CROSS_HAIRS_CLIP_KEY)); }); if (zoomRegion) { // Mag factor is accurate to two decimal places. let aPref = parseFloat(this._settings.get_double(MAG_FACTOR_KEY).toFixed(2)); if (aPref !== 0.0) zoomRegion.setMagFactor(aPref, aPref); aPref = this._settings.get_enum(SCREEN_POSITION_KEY); if (aPref) zoomRegion.setScreenPosition(aPref); zoomRegion.setLensMode(this._settings.get_boolean(LENS_MODE_KEY)); zoomRegion.setClampScrollingAtEdges(!this._settings.get_boolean(CLAMP_MODE_KEY)); aPref = this._settings.get_enum(MOUSE_TRACKING_KEY); if (aPref) zoomRegion.setMouseTrackingMode(aPref); aPref = this._settings.get_enum(FOCUS_TRACKING_KEY); if (aPref) zoomRegion.setFocusTrackingMode(aPref); aPref = this._settings.get_enum(CARET_TRACKING_KEY); if (aPref) zoomRegion.setCaretTrackingMode(aPref); aPref = this._settings.get_boolean(INVERT_LIGHTNESS_KEY); if (aPref) zoomRegion.setInvertLightness(aPref); aPref = this._settings.get_double(COLOR_SATURATION_KEY); if (aPref) zoomRegion.setColorSaturation(aPref); let bc = {}; bc.r = this._settings.get_double(BRIGHT_RED_KEY); bc.g = this._settings.get_double(BRIGHT_GREEN_KEY); bc.b = this._settings.get_double(BRIGHT_BLUE_KEY); zoomRegion.setBrightness(bc); bc.r = this._settings.get_double(CONTRAST_RED_KEY); bc.g = this._settings.get_double(CONTRAST_GREEN_KEY); bc.b = this._settings.get_double(CONTRAST_BLUE_KEY); zoomRegion.setContrast(bc); } let showCrosshairs = this._settings.get_boolean(SHOW_CROSS_HAIRS_KEY); this.addCrosshairs(); this.setCrosshairsVisible(showCrosshairs); } _updateScreenPosition() { // Applies only to the first zoom region. if (this._zoomRegions.length) { let position = this._settings.get_enum(SCREEN_POSITION_KEY); this._zoomRegions[0].setScreenPosition(position); if (position !== GDesktopEnums.MagnifierScreenPosition.FULL_SCREEN) this._updateLensMode(); } } _updateMagFactor() { // Applies only to the first zoom region. if (this._zoomRegions.length) { // Mag factor is accurate to two decimal places. let magFactor = parseFloat(this._settings.get_double(MAG_FACTOR_KEY).toFixed(2)); this._zoomRegions[0].setMagFactor(magFactor, magFactor); } } _updateLensMode() { // Applies only to the first zoom region. if (this._zoomRegions.length) this._zoomRegions[0].setLensMode(this._settings.get_boolean(LENS_MODE_KEY)); } _updateClampMode() { // Applies only to the first zoom region. if (this._zoomRegions.length) { this._zoomRegions[0].setClampScrollingAtEdges( !this._settings.get_boolean(CLAMP_MODE_KEY)); } } _updateMouseTrackingMode() { // Applies only to the first zoom region. if (this._zoomRegions.length) { this._zoomRegions[0].setMouseTrackingMode( this._settings.get_enum(MOUSE_TRACKING_KEY)); } } _updateFocusTrackingMode() { // Applies only to the first zoom region. if (this._zoomRegions.length) { this._zoomRegions[0].setFocusTrackingMode( this._settings.get_enum(FOCUS_TRACKING_KEY)); } } _updateCaretTrackingMode() { // Applies only to the first zoom region. if (this._zoomRegions.length) { this._zoomRegions[0].setCaretTrackingMode( this._settings.get_enum(CARET_TRACKING_KEY)); } } _updateInvertLightness() { // Applies only to the first zoom region. if (this._zoomRegions.length) { this._zoomRegions[0].setInvertLightness( this._settings.get_boolean(INVERT_LIGHTNESS_KEY)); } } _updateColorSaturation() { // Applies only to the first zoom region. if (this._zoomRegions.length) { this._zoomRegions[0].setColorSaturation( this._settings.get_double(COLOR_SATURATION_KEY)); } } _updateBrightness() { // Applies only to the first zoom region. if (this._zoomRegions.length) { let brightness = {}; brightness.r = this._settings.get_double(BRIGHT_RED_KEY); brightness.g = this._settings.get_double(BRIGHT_GREEN_KEY); brightness.b = this._settings.get_double(BRIGHT_BLUE_KEY); this._zoomRegions[0].setBrightness(brightness); } } _updateContrast() { // Applies only to the first zoom region. if (this._zoomRegions.length) { let contrast = {}; contrast.r = this._settings.get_double(CONTRAST_RED_KEY); contrast.g = this._settings.get_double(CONTRAST_GREEN_KEY); contrast.b = this._settings.get_double(CONTRAST_BLUE_KEY); this._zoomRegions[0].setContrast(contrast); } } } class ZoomRegion { constructor(magnifier, mouseSourceActor) { this._magnifier = magnifier; this._focusCaretTracker = new FocusCaretTracker.FocusCaretTracker(); this._mouseTrackingMode = GDesktopEnums.MagnifierMouseTrackingMode.NONE; this._focusTrackingMode = GDesktopEnums.MagnifierFocusTrackingMode.NONE; this._caretTrackingMode = GDesktopEnums.MagnifierCaretTrackingMode.NONE; this._clampScrollingAtEdges = false; this._lensMode = false; this._screenPosition = GDesktopEnums.MagnifierScreenPosition.FULL_SCREEN; this._invertLightness = false; this._colorSaturation = 1.0; this._brightness = {r: NO_CHANGE, g: NO_CHANGE, b: NO_CHANGE}; this._contrast = {r: NO_CHANGE, g: NO_CHANGE, b: NO_CHANGE}; this._magView = null; this._background = null; this._uiGroupClone = null; this._mouseSourceActor = mouseSourceActor; this._mouseActor = null; this._crossHairs = null; this._crossHairsActor = null; this._viewPortX = 0; this._viewPortY = 0; this._viewPortWidth = global.screen_width; this._viewPortHeight = global.screen_height; this._xCenter = this._viewPortWidth / 2; this._yCenter = this._viewPortHeight / 2; this._xMagFactor = 1; this._yMagFactor = 1; this._followingCursor = false; this._xFocus = 0; this._yFocus = 0; this._xCaret = 0; this._yCaret = 0; this._pointerIdleMonitor = global.backend.get_core_idle_monitor(); this._scrollContentsTimerId = 0; } _connectSignals() { if (this._signalConnections) return; this._signalConnections = []; let id = Main.layoutManager.connect('monitors-changed', this._monitorsChanged.bind(this)); this._signalConnections.push([Main.layoutManager, id]); id = this._focusCaretTracker.connect('caret-moved', this._updateCaret.bind(this)); this._signalConnections.push([this._focusCaretTracker, id]); id = this._focusCaretTracker.connect('focus-changed', this._updateFocus.bind(this)); this._signalConnections.push([this._focusCaretTracker, id]); } _disconnectSignals() { for (let [obj, id] of this._signalConnections) obj.disconnect(id); delete this._signalConnections; } _updateScreenPosition() { if (this._screenPosition === GDesktopEnums.MagnifierScreenPosition.NONE) { this._setViewPort({ x: this._viewPortX, y: this._viewPortY, width: this._viewPortWidth, height: this._viewPortHeight, }); } else { this.setScreenPosition(this._screenPosition); } } _convertExtentsToScreenSpace(accessible, extents) { const toplevelWindowTypes = new Set([ Atspi.Role.FRAME, Atspi.Role.DIALOG, Atspi.Role.WINDOW, ]); try { let app = null; let parentWindow = null; let iter = accessible; while (iter) { if (iter.get_role() === Atspi.Role.APPLICATION) { app = iter; /* This is the last Accessible we are interested in */ break; } else if (toplevelWindowTypes.has(iter.get_role())) { parentWindow = iter; } iter = iter.get_parent(); } /* We don't want to translate our own events to the focus window. * They are also already scaled by clutter before being sent, so * we don't need to do that here either. */ if (app && app.get_name() === 'gnome-shell') return extents; /* Only events from the focused widget of the focused window. Some * widgets seem to claim to have focus when the window does not so * check both. */ const windowActive = parentWindow && parentWindow.get_state_set().contains(Atspi.StateType.ACTIVE); const accessibleFocused = accessible.get_state_set().contains(Atspi.StateType.FOCUSED); if (!windowActive || !accessibleFocused) return null; } catch (e) { throw new Error(`Failed to validate parent window: ${e}`); } const {focusWindow} = global.display; if (!focusWindow) return null; let windowRect = focusWindow.get_frame_rect(); if (!focusWindow.is_client_decorated()) windowRect = focusWindow.frame_rect_to_client_rect(windowRect); const scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor; const screenSpaceExtents = new Atspi.Rect({ x: windowRect.x + (scaleFactor * extents.x), y: windowRect.y + (scaleFactor * extents.y), width: scaleFactor * extents.width, height: scaleFactor * extents.height, }); return screenSpaceExtents; } _updateFocus(caller, event) { let component = event.source.get_component_iface(); if (!component || event.detail1 !== 1) return; let extents; try { extents = component.get_extents(Atspi.CoordType.WINDOW); extents = this._convertExtentsToScreenSpace(event.source, extents); if (!extents) return; } catch (e) { log(`Failed to read extents of focused component: ${e.message}`); return; } const [xFocus, yFocus] = [ extents.x + (extents.width / 2), extents.y + (extents.height / 2), ]; if (this._xFocus !== xFocus || this._yFocus !== yFocus) { [this._xFocus, this._yFocus] = [xFocus, yFocus]; this._centerFromFocusPosition(); } } _updateCaret(caller, event) { let text = event.source.get_text_iface(); if (!text) return; let extents; try { extents = text.get_character_extents(text.get_caret_offset(), Atspi.CoordType.WINDOW); extents = this._convertExtentsToScreenSpace(text, extents); if (!extents) return; } catch (e) { log(`Failed to read extents of text caret: ${e.message}`); return; } const [xCaret, yCaret] = [extents.x, extents.y]; // Ignore event(s) if the caret size is none (0x0). This happens a lot if // the cursor offset can't be translated into a location. This is a work // around. if (extents.width === 0 && extents.height === 0) return; if (this._xCaret !== xCaret || this._yCaret !== yCaret) { [this._xCaret, this._yCaret] = [xCaret, yCaret]; this._centerFromCaretPosition(); } } /** * setActive: * * @param {boolean} activate Boolean to show/hide the ZoomRegion. */ setActive(activate) { if (activate === this.isActive()) return; if (activate) { this._createActors(); if (this._isMouseOverRegion()) this._magnifier.hideSystemCursor(); this._updateScreenPosition(); this._updateMagViewGeometry(); this._updateCloneGeometry(); this._updateMousePosition(); this._connectSignals(); } else { Main.uiGroup.set_opacity(255); this._disconnectSignals(); this._destroyActors(); } this._syncCaretTracking(); this._syncFocusTracking(); } /** * isActive: * * @returns {boolean} Whether this ZoomRegion is active */ isActive() { return this._magView != null; } /** * setMagFactor: * * @param {number} xMagFactor The power to set the horizontal * magnification factor to of the magnified view. A value of 1.0 * means no magnification. A value of 2.0 doubles the size. * @param {number} yMagFactor The power to set the vertical * magnification factor to of the magnified view. */ setMagFactor(xMagFactor, yMagFactor) { this._changeROI({ xMagFactor, yMagFactor, redoCursorTracking: this._followingCursor, animate: true, }); } /** * getMagFactor: * * @returns {number[]} an array, [xMagFactor, yMagFactor], containing * the horizontal and vertical magnification powers. A value of * 1.0 means no magnification. A value of 2.0 means the contents * are doubled in size, and so on. */ getMagFactor() { return [this._xMagFactor, this._yMagFactor]; } /** * setMouseTrackingMode * * @param {GDesktopEnums.MagnifierMouseTrackingMode} mode the new mode */ setMouseTrackingMode(mode) { if (mode >= GDesktopEnums.MagnifierMouseTrackingMode.NONE && mode <= GDesktopEnums.MagnifierMouseTrackingMode.PUSH) this._mouseTrackingMode = mode; } /** * getMouseTrackingMode: * * @returns {GDesktopEnums.MagnifierMouseTrackingMode} the current mode */ getMouseTrackingMode() { return this._mouseTrackingMode; } /** * setFocusTrackingMode * * @param {GDesktopEnums.MagnifierFocusTrackingMode} mode the new mode */ setFocusTrackingMode(mode) { this._focusTrackingMode = mode; this._syncFocusTracking(); } /** * setCaretTrackingMode * * @param {GDesktopEnums.MagnifierCaretTrackingMode} mode the new mode */ setCaretTrackingMode(mode) { this._caretTrackingMode = mode; this._syncCaretTracking(); } _syncFocusTracking() { let enabled = this._focusTrackingMode !== GDesktopEnums.MagnifierFocusTrackingMode.NONE && this.isActive(); if (enabled) this._focusCaretTracker.registerFocusListener(); else this._focusCaretTracker.deregisterFocusListener(); } _syncCaretTracking() { let enabled = this._caretTrackingMode !== GDesktopEnums.MagnifierCaretTrackingMode.NONE && this.isActive(); if (enabled) this._focusCaretTracker.registerCaretListener(); else this._focusCaretTracker.deregisterCaretListener(); } /** * setViewPort * Sets the position and size of the ZoomRegion on screen. * * @param {{x: number, y: number, width: number, height: number}} viewPort * Object defining the position and size of the view port. * The values are in stage coordinate space. */ setViewPort(viewPort) { this._setViewPort(viewPort); this._screenPosition = GDesktopEnums.MagnifierScreenPosition.NONE; } /** * setROI * Sets the "region of interest" that the ZoomRegion is magnifying. * * @param {{x: number, y: number, width: number, height: number}} roi * Object that defines the region of the screen to magnify. * The values are in screen (unmagnified) coordinate space. */ setROI(roi) { if (roi.width <= 0 || roi.height <= 0) return; this._followingCursor = false; this._changeROI({ xMagFactor: this._viewPortWidth / roi.width, yMagFactor: this._viewPortHeight / roi.height, xCenter: roi.x + roi.width / 2, yCenter: roi.y + roi.height / 2, }); } /** * getROI: * Retrieves the "region of interest" -- the rectangular bounds of that part * of the desktop that the magnified view is showing (x, y, width, height). * The bounds are given in non-magnified coordinates. * * @returns {number[]} an array, [x, y, width, height], representing * the bounding rectangle of what is shown in the magnified view. */ getROI() { let roiWidth = this._viewPortWidth / this._xMagFactor; let roiHeight = this._viewPortHeight / this._yMagFactor; return [ this._xCenter - roiWidth / 2, this._yCenter - roiHeight / 2, roiWidth, roiHeight, ]; } /** * setLensMode: * * Turn lens mode on/off. In full screen mode, lens mode does nothing since * a lens the size of the screen is pointless. * * @param {boolean} lensMode Whether lensMode should be active */ setLensMode(lensMode) { this._lensMode = lensMode; if (!this._lensMode) this.setScreenPosition(this._screenPosition); } /** * isLensMode: * Is lens mode on or off? * * @returns {boolean} The lens mode state. */ isLensMode() { return this._lensMode; } /** * setClampScrollingAtEdges: * Stop vs. allow scrolling of the magnified contents when it scroll beyond * the edges of the screen. * * @param {boolean} clamp Boolean to turn on/off clamping. */ setClampScrollingAtEdges(clamp) { this._clampScrollingAtEdges = clamp; if (clamp) this._changeROI(); } /** * setTopHalf: * Magnifier view occupies the top half of the screen. */ setTopHalf() { let viewPort = {}; viewPort.x = 0; viewPort.y = 0; viewPort.width = global.screen_width; viewPort.height = global.screen_height / 2; this._setViewPort(viewPort); this._screenPosition = GDesktopEnums.MagnifierScreenPosition.TOP_HALF; } /** * setBottomHalf: * Magnifier view occupies the bottom half of the screen. */ setBottomHalf() { let viewPort = {}; viewPort.x = 0; viewPort.y = global.screen_height / 2; viewPort.width = global.screen_width; viewPort.height = global.screen_height / 2; this._setViewPort(viewPort); this._screenPosition = GDesktopEnums.MagnifierScreenPosition.BOTTOM_HALF; } /** * setLeftHalf: * Magnifier view occupies the left half of the screen. */ setLeftHalf() { let viewPort = {}; viewPort.x = 0; viewPort.y = 0; viewPort.width = global.screen_width / 2; viewPort.height = global.screen_height; this._setViewPort(viewPort); this._screenPosition = GDesktopEnums.MagnifierScreenPosition.LEFT_HALF; } /** * setRightHalf: * Magnifier view occupies the right half of the screen. */ setRightHalf() { let viewPort = {}; viewPort.x = global.screen_width / 2; viewPort.y = 0; viewPort.width = global.screen_width / 2; viewPort.height = global.screen_height; this._setViewPort(viewPort); this._screenPosition = GDesktopEnums.MagnifierScreenPosition.RIGHT_HALF; } /** * setFullScreenMode: * Set the ZoomRegion to full-screen mode. * Note: disallows lens mode. */ setFullScreenMode() { let viewPort = {}; viewPort.x = 0; viewPort.y = 0; viewPort.width = global.screen_width; viewPort.height = global.screen_height; this.setViewPort(viewPort); this._screenPosition = GDesktopEnums.MagnifierScreenPosition.FULL_SCREEN; } /** * setScreenPosition: * Positions the zoom region to one of the enumerated positions on the * screen. * * @param {GDesktopEnums.MagnifierScreenPosition} inPosition the position */ setScreenPosition(inPosition) { switch (inPosition) { case GDesktopEnums.MagnifierScreenPosition.FULL_SCREEN: this.setFullScreenMode(); break; case GDesktopEnums.MagnifierScreenPosition.TOP_HALF: this.setTopHalf(); break; case GDesktopEnums.MagnifierScreenPosition.BOTTOM_HALF: this.setBottomHalf(); break; case GDesktopEnums.MagnifierScreenPosition.LEFT_HALF: this.setLeftHalf(); break; case GDesktopEnums.MagnifierScreenPosition.RIGHT_HALF: this.setRightHalf(); break; } } /** * getScreenPosition: * Tell the outside world what the current mode is -- magnifiying the * top half, bottom half, etc. * * @returns {GDesktopEnums.MagnifierScreenPosition}: the current position. */ getScreenPosition() { return this._screenPosition; } _clearScrollContentsTimer() { if (this._scrollContentsTimerId !== 0) { GLib.source_remove(this._scrollContentsTimerId); this._scrollContentsTimerId = 0; } } /** * scrollToMousePos: * Set the region of interest based on the position of the system pointer. * * @returns {boolean}: Whether the system mouse pointer is over the * magnified view. */ scrollToMousePos() { this._followingCursor = true; if (this._mouseTrackingMode !== GDesktopEnums.MagnifierMouseTrackingMode.NONE) this._changeROI({redoCursorTracking: true}); else this._updateMousePosition(); this._clearScrollContentsTimer(); this._scrollContentsTimerId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, POINTER_REST_TIME, () => { this._followingCursor = false; if (this._xDelayed !== null && this._yDelayed !== null) { this._scrollContentsToDelayed(this._xDelayed, this._yDelayed); this._xDelayed = null; this._yDelayed = null; } this._scrollContentsTimerId = 0; return GLib.SOURCE_REMOVE; }); // Determine whether the system mouse pointer is over this zoom region. return this._isMouseOverRegion(); } _scrollContentsToDelayed(x, y) { if (this._followingCursor) { this._xDelayed = x; this._yDelayed = y; } else { this.scrollContentsTo(x, y); } } /** * scrollContentsTo: * Shift the contents of the magnified view such it is centered on the given * coordinate. * * @param {number} x The x-coord of the point to center on. * @param {number} y The y-coord of the point to center on. */ scrollContentsTo(x, y) { if (x < 0 || x > global.screen_width || y < 0 || y > global.screen_height) return; this._clearScrollContentsTimer(); this._followingCursor = false; this._changeROI({ xCenter: x, yCenter: y, animate: true, }); } /** * addCrosshairs: * Add crosshairs centered on the magnified mouse. * * @param {Crosshairs} crossHairs Crosshairs instance */ addCrosshairs(crossHairs) { this._crossHairs = crossHairs; // If the crossHairs is not already within a larger container, add it // to this zoom region. Otherwise, add a clone. if (crossHairs && this.isActive()) this._crossHairsActor = crossHairs.addToZoomRegion(this, this._mouseActor); } /** * setInvertLightness: * Set whether to invert the lightness of the magnified view. * * @param {boolean} flag whether brightness should be inverted */ setInvertLightness(flag) { this._invertLightness = flag; if (this._magShaderEffects) this._magShaderEffects.setInvertLightness(this._invertLightness); } /** * getInvertLightness: * * Retrieve whether the lightness is inverted. * * @returns {boolean} whether brightness should be inverted */ getInvertLightness() { return this._invertLightness; } /** * setColorSaturation: * * Set the color saturation of the magnified view. * * @param {number} saturation A value from 0.0 to 1.0 that defines * the color saturation, with 0.0 defining no color (grayscale), * and 1.0 defining full color. */ setColorSaturation(saturation) { this._colorSaturation = saturation; if (this._magShaderEffects) this._magShaderEffects.setColorSaturation(this._colorSaturation); } /** * getColorSaturation: * Retrieve the color saturation of the magnified view. * * @returns {number} the color saturation */ getColorSaturation() { return this._colorSaturation; } /** * setBrightness: * Alter the brightness of the magnified view. * * @param {object} brightness Object containing the contrast for the * red, green, and blue channels. Values of 0.0 represent "standard" * brightness (no change), whereas values less or greater than * 0.0 indicate decreased or incresaed brightness, respectively. * * {number} brightness.r - the red component * {number} brightness.g - the green component * {number} brightness.b - the blue component */ setBrightness(brightness) { this._brightness.r = brightness.r; this._brightness.g = brightness.g; this._brightness.b = brightness.b; if (this._magShaderEffects) this._magShaderEffects.setBrightness(this._brightness); } /** * setContrast: * Alter the contrast of the magnified view. * * @param {object} contrast Object containing the contrast for the * red, green, and blue channels. Values of 0.0 represent "standard" * contrast (no change), whereas values less or greater than * 0.0 indicate decreased or incresaed contrast, respectively. * * {number} contrast.r - the red component * {number} contrast.g - the green component * {number} contrast.b - the blue component */ setContrast(contrast) { this._contrast.r = contrast.r; this._contrast.g = contrast.g; this._contrast.b = contrast.b; if (this._magShaderEffects) this._magShaderEffects.setContrast(this._contrast); } /** * getContrast: * Retrieve the contrast of the magnified view. * * @returns {{r: number, g: number, b: number}}: Object containing * the contrast for the red, green, and blue channels. */ getContrast() { let contrast = {}; contrast.r = this._contrast.r; contrast.g = this._contrast.g; contrast.b = this._contrast.b; return contrast; } // Private methods // _createActors() { // Add a group to clip the contents of the magnified view. const mainGroup = new Clutter.Actor({clip_to_allocation: true}); // The root actor for the zoom region this._magView = new St.Bin({ style_class: 'magnifier-zoom-region', child: mainGroup, }); global.stage.add_child(this._magView); // hide the magnified region from CLUTTER_PICK_ALL Shell.util_set_hidden_from_pick(this._magView, true); // Add a background for when the magnified uiGroup is scrolled // out of view (don't want to see desktop showing through). this._background = new Background.SystemBackground(); mainGroup.add_child(this._background); // Clone the group that contains all of UI on the screen. This is the // chrome, the windows, etc. this._uiGroupClone = new Clutter.Clone({ source: Main.uiGroup, clip_to_allocation: true, }); mainGroup.add_child(this._uiGroupClone); // Add either the given mouseSourceActor to the ZoomRegion, or a clone of // it. if (this._mouseSourceActor.get_parent() != null) this._mouseActor = new Clutter.Clone({source: this._mouseSourceActor}); else this._mouseActor = this._mouseSourceActor; mainGroup.add_child(this._mouseActor); if (this._crossHairs) this._crossHairsActor = this._crossHairs.addToZoomRegion(this, this._mouseActor); else this._crossHairsActor = null; // Contrast and brightness effects. this._magShaderEffects = new MagShaderEffects(mainGroup); this._magShaderEffects.setColorSaturation(this._colorSaturation); this._magShaderEffects.setInvertLightness(this._invertLightness); this._magShaderEffects.setBrightness(this._brightness); this._magShaderEffects.setContrast(this._contrast); } _destroyActors() { if (this._mouseActor === this._mouseSourceActor) this._mouseActor.get_parent().remove_child(this._mouseActor); if (this._crossHairs) this._crossHairs.removeFromParent(this._crossHairsActor); this._magShaderEffects.destroyEffects(); this._magShaderEffects = null; this._magView.destroy(); this._magView = null; this._background = null; this._uiGroupClone = null; this._mouseActor = null; this._crossHairsActor = null; } _setViewPort(viewPort, fromROIUpdate) { // Sets the position of the zoom region on the screen let width = Math.round(Math.min(viewPort.width, global.screen_width)); let height = Math.round(Math.min(viewPort.height, global.screen_height)); let x = Math.max(viewPort.x, 0); let y = Math.max(viewPort.y, 0); x = Math.round(Math.min(x, global.screen_width - width)); y = Math.round(Math.min(y, global.screen_height - height)); this._viewPortX = x; this._viewPortY = y; this._viewPortWidth = width; this._viewPortHeight = height; this._updateMagViewGeometry(); if (!fromROIUpdate) this._changeROI({redoCursorTracking: this._followingCursor}); // will update mouse if (this.isActive() && this._isMouseOverRegion()) this._magnifier.hideSystemCursor(); const uiGroupIsOccluded = this.isActive() && this._isFullScreen(); Main.uiGroup.set_opacity(uiGroupIsOccluded ? 0 : 255); } _changeROI(params) { // Updates the area we are viewing; the magnification factors // and center can be set explicitly, or we can recompute // the position based on the mouse cursor position params = Params.parse(params, { xMagFactor: this._xMagFactor, yMagFactor: this._yMagFactor, xCenter: this._xCenter, yCenter: this._yCenter, redoCursorTracking: false, animate: false, }); if (params.xMagFactor <= 0) params.xMagFactor = this._xMagFactor; if (params.yMagFactor <= 0) params.yMagFactor = this._yMagFactor; this._xMagFactor = params.xMagFactor; this._yMagFactor = params.yMagFactor; if (params.redoCursorTracking && this._mouseTrackingMode !== GDesktopEnums.MagnifierMouseTrackingMode.NONE) { // This depends on this.xMagFactor/yMagFactor already being updated [params.xCenter, params.yCenter] = this._centerFromMousePosition(); } if (this._clampScrollingAtEdges) { let roiWidth = this._viewPortWidth / this._xMagFactor; let roiHeight = this._viewPortHeight / this._yMagFactor; params.xCenter = Math.min(params.xCenter, global.screen_width - roiWidth / 2); params.xCenter = Math.max(params.xCenter, roiWidth / 2); params.yCenter = Math.min(params.yCenter, global.screen_height - roiHeight / 2); params.yCenter = Math.max(params.yCenter, roiHeight / 2); } this._xCenter = params.xCenter; this._yCenter = params.yCenter; // If in lens mode, move the magnified view such that it is centered // over the actual mouse. However, in full screen mode, the "lens" is // the size of the screen -- pointless to move such a large lens around. if (this._lensMode && !this._isFullScreen()) { this._setViewPort({ x: this._xCenter - this._viewPortWidth / 2, y: this._yCenter - this._viewPortHeight / 2, width: this._viewPortWidth, height: this._viewPortHeight, }, true); } this._updateCloneGeometry(params.animate); } _isMouseOverRegion() { // Return whether the system mouse sprite is over this ZoomRegion. If the // mouse's position is not given, then it is fetched. let mouseIsOver = false; if (this.isActive()) { let xMouse = this._magnifier.xMouse; let yMouse = this._magnifier.yMouse; mouseIsOver = xMouse >= this._viewPortX && xMouse < (this._viewPortX + this._viewPortWidth) && yMouse >= this._viewPortY && yMouse < (this._viewPortY + this._viewPortHeight); } return mouseIsOver; } _isFullScreen() { // Does the magnified view occupy the whole screen? Note that this // doesn't necessarily imply // this._screenPosition = GDesktopEnums.MagnifierScreenPosition.FULL_SCREEN; if (this._viewPortX !== 0 || this._viewPortY !== 0) return false; if (this._viewPortWidth !== global.screen_width || this._viewPortHeight !== global.screen_height) return false; return true; } _centerFromMousePosition() { // Determines where the center should be given the current cursor // position and mouse tracking mode let xMouse = this._magnifier.xMouse; let yMouse = this._magnifier.yMouse; if (this._mouseTrackingMode === GDesktopEnums.MagnifierMouseTrackingMode.PROPORTIONAL) return this._centerFromPointProportional(xMouse, yMouse); else if (this._mouseTrackingMode === GDesktopEnums.MagnifierMouseTrackingMode.PUSH) return this._centerFromPointPush(xMouse, yMouse); else if (this._mouseTrackingMode === GDesktopEnums.MagnifierMouseTrackingMode.CENTERED) return this._centerFromPointCentered(xMouse, yMouse); return null; // Should never be hit } _centerFromCaretPosition() { let xCaret = this._xCaret; let yCaret = this._yCaret; if (this._caretTrackingMode === GDesktopEnums.MagnifierCaretTrackingMode.PROPORTIONAL) [xCaret, yCaret] = this._centerFromPointProportional(xCaret, yCaret); else if (this._caretTrackingMode === GDesktopEnums.MagnifierCaretTrackingMode.PUSH) [xCaret, yCaret] = this._centerFromPointPush(xCaret, yCaret); else if (this._caretTrackingMode === GDesktopEnums.MagnifierCaretTrackingMode.CENTERED) [xCaret, yCaret] = this._centerFromPointCentered(xCaret, yCaret); this._scrollContentsToDelayed(xCaret, yCaret); } _centerFromFocusPosition() { let xFocus = this._xFocus; let yFocus = this._yFocus; if (this._focusTrackingMode === GDesktopEnums.MagnifierFocusTrackingMode.PROPORTIONAL) [xFocus, yFocus] = this._centerFromPointProportional(xFocus, yFocus); else if (this._focusTrackingMode === GDesktopEnums.MagnifierFocusTrackingMode.PUSH) [xFocus, yFocus] = this._centerFromPointPush(xFocus, yFocus); else if (this._focusTrackingMode === GDesktopEnums.MagnifierFocusTrackingMode.CENTERED) [xFocus, yFocus] = this._centerFromPointCentered(xFocus, yFocus); this._scrollContentsToDelayed(xFocus, yFocus); } _centerFromPointPush(xPoint, yPoint) { let [xRoi, yRoi, widthRoi, heightRoi] = this.getROI(); let [cursorWidth, cursorHeight] = this._mouseSourceActor.get_size(); let xPos = xRoi + widthRoi / 2; let yPos = yRoi + heightRoi / 2; let xRoiRight = xRoi + widthRoi - cursorWidth; let yRoiBottom = yRoi + heightRoi - cursorHeight; if (xPoint < xRoi) xPos -= xRoi - xPoint; else if (xPoint > xRoiRight) xPos += xPoint - xRoiRight; if (yPoint < yRoi) yPos -= yRoi - yPoint; else if (yPoint > yRoiBottom) yPos += yPoint - yRoiBottom; return [xPos, yPos]; } _centerFromPointProportional(xPoint, yPoint) { let [xRoi_, yRoi_, widthRoi, heightRoi] = this.getROI(); let halfScreenWidth = global.screen_width / 2; let halfScreenHeight = global.screen_height / 2; // We want to pad with a constant distance after zooming, so divide // by the magnification factor. let unscaledPadding = Math.min(this._viewPortWidth, this._viewPortHeight) / 5; let xPadding = unscaledPadding / this._xMagFactor; let yPadding = unscaledPadding / this._yMagFactor; let xProportion = (xPoint - halfScreenWidth) / halfScreenWidth; // -1 ... 1 let yProportion = (yPoint - halfScreenHeight) / halfScreenHeight; // -1 ... 1 let xPos = xPoint - xProportion * (widthRoi / 2 - xPadding); let yPos = yPoint - yProportion * (heightRoi / 2 - yPadding); return [xPos, yPos]; } _centerFromPointCentered(xPoint, yPoint) { return [xPoint, yPoint]; } _screenToViewPort(screenX, screenY) { // Converts coordinates relative to the (unmagnified) screen to coordinates // relative to the origin of this._magView return [ this._viewPortWidth / 2 + (screenX - this._xCenter) * this._xMagFactor, this._viewPortHeight / 2 + (screenY - this._yCenter) * this._yMagFactor, ]; } _updateMagViewGeometry() { if (!this.isActive()) return; if (this._isFullScreen()) this._magView.add_style_class_name('full-screen'); else this._magView.remove_style_class_name('full-screen'); this._magView.set_size(this._viewPortWidth, this._viewPortHeight); this._magView.set_position(this._viewPortX, this._viewPortY); } _updateCloneGeometry(animate = false) { if (!this.isActive()) return; let [x, y] = this._screenToViewPort(0, 0); this._uiGroupClone.ease({ x: Math.round(x), y: Math.round(y), scale_x: this._xMagFactor, scale_y: this._yMagFactor, mode: Clutter.AnimationMode.EASE_OUT_QUAD, duration: animate ? 100 : 0, }); let [mouseX, mouseY] = this._getMousePosition(); this._mouseActor.ease({ x: mouseX, y: mouseY, scale_x: this._xMagFactor, scale_y: this._yMagFactor, mode: Clutter.AnimationMode.EASE_OUT_QUAD, duration: animate ? 100 : 0, }); if (this._crossHairsActor) { let [crossX, crossY] = this._getCrossHairsPosition(); this._crossHairsActor.ease({ x: crossX, y: crossY, mode: Clutter.AnimationMode.EASE_OUT_QUAD, duration: animate ? 100 : 0, }); } } _updateMousePosition() { let [xMagMouse, yMagMouse] = this._getMousePosition(); this._mouseActor.set_position(xMagMouse, yMagMouse); if (this._crossHairsActor) { let [crossX, crossY] = this._getCrossHairsPosition(); this._crossHairsActor.set_position(crossX, crossY); } } _getMousePosition() { let [xMagMouse, yMagMouse] = this._screenToViewPort( this._magnifier.xMouse, this._magnifier.yMouse); return [Math.round(xMagMouse), Math.round(yMagMouse)]; } _getCrossHairsPosition() { let [xMagMouse, yMagMouse] = this._getMousePosition(); let [groupWidth, groupHeight] = this._crossHairsActor.get_size(); return [xMagMouse - groupWidth / 2, yMagMouse - groupHeight / 2]; } _monitorsChanged() { this._background.set_size(global.screen_width, global.screen_height); this._updateScreenPosition(); } } const Crosshairs = GObject.registerClass( class Crosshairs extends Clutter.Actor { _init() { // Set the group containing the crosshairs to three times the desktop // size in case the crosshairs need to appear to be infinite in // length (i.e., extend beyond the edges of the view they appear in). let groupWidth = global.screen_width * 3; let groupHeight = global.screen_height * 3; super._init({ clip_to_allocation: false, width: groupWidth, height: groupHeight, }); this._horizLeftHair = new Clutter.Actor(); this._horizRightHair = new Clutter.Actor(); this._vertTopHair = new Clutter.Actor(); this._vertBottomHair = new Clutter.Actor(); this.add_child(this._horizLeftHair); this.add_child(this._horizRightHair); this.add_child(this._vertTopHair); this.add_child(this._vertBottomHair); this._clipSize = [0, 0]; this._clones = []; this.reCenter(); this._monitorsChangedId = 0; } _monitorsChanged() { this.set_size(global.screen_width * 3, global.screen_height * 3); this.reCenter(); } setEnabled(enabled) { if (enabled && this._monitorsChangedId === 0) { this._monitorsChangedId = Main.layoutManager.connect( 'monitors-changed', this._monitorsChanged.bind(this)); } else if (!enabled && this._monitorsChangedId !== 0) { Main.layoutManager.disconnect(this._monitorsChangedId); this._monitorsChangedId = 0; } } /** * Either add the crosshairs actor to the given ZoomRegion, or, if it is * already part of some other ZoomRegion, create a clone of the crosshairs * actor, and add the clone instead. Returns either the original or the * clone. * * @param {ZoomRegion} zoomRegion The container to add the crosshairs * group to. * @param {Clutter.Actor} magnifiedMouse The mouse actor for the * zoom region -- used to position the crosshairs and properly * layer them below the mouse. * @returns {Clutter.Actor} The crosshairs actor, or its clone. */ addToZoomRegion(zoomRegion, magnifiedMouse) { let crosshairsActor = null; if (zoomRegion && magnifiedMouse) { let container = magnifiedMouse.get_parent(); if (container) { crosshairsActor = this; if (this.get_parent() != null) { crosshairsActor = new Clutter.Clone({source: this}); this._clones.push(crosshairsActor); // Clones don't share visibility. this.bind_property('visible', crosshairsActor, 'visible', GObject.BindingFlags.SYNC_CREATE); } container.add_child(crosshairsActor); container.set_child_above_sibling(magnifiedMouse, crosshairsActor); let [xMouse, yMouse] = magnifiedMouse.get_position(); let [crosshairsWidth, crosshairsHeight] = crosshairsActor.get_size(); crosshairsActor.set_position(xMouse - crosshairsWidth / 2, yMouse - crosshairsHeight / 2); } } return crosshairsActor; } /** * removeFromParent: * * Remove the crosshairs actor from its parent container, or destroy the * child actor if it was just a clone of the crosshairs actor. * * @param {Clutter.Actor} childActor the actor returned from * addToZoomRegion */ removeFromParent(childActor) { if (childActor === this) childActor.get_parent().remove_child(childActor); else childActor.destroy(); } /** * setColor: * Set the color of the crosshairs. * * @param {Cogl.Color} color The color */ setColor(color) { this._horizLeftHair.background_color = color; this._horizRightHair.background_color = color; this._vertTopHair.background_color = color; this._vertBottomHair.background_color = color; } /** * setThickness: * * Set the width of the vertical and horizontal lines of the crosshairs. * * @param {number} thickness the new thickness value */ setThickness(thickness) { this._horizLeftHair.set_height(thickness); this._horizRightHair.set_height(thickness); this._vertTopHair.set_width(thickness); this._vertBottomHair.set_width(thickness); this.reCenter(); } /** * getThickness: * Get the width of the vertical and horizontal lines of the crosshairs. * * @returns {number} The thickness of the crosshairs. */ getThickness() { return this._horizLeftHair.get_height(); } /** * setOpacity: * Set how opaque the crosshairs are. * * @param {number} opacity Value between 0 (fully transparent) * and 255 (full opaque). */ setOpacity(opacity) { // set_opacity() throws an exception for values outside the range // [0, 255]. if (opacity < 0) opacity = 0; else if (opacity > 255) opacity = 255; this._horizLeftHair.set_opacity(opacity); this._horizRightHair.set_opacity(opacity); this._vertTopHair.set_opacity(opacity); this._vertBottomHair.set_opacity(opacity); } /** * setLength: * Set the length of the vertical and horizontal lines in the crosshairs. * * @param {number} length The length of the crosshairs. */ setLength(length) { this._horizLeftHair.set_width(length); this._horizRightHair.set_width(length); this._vertTopHair.set_height(length); this._vertBottomHair.set_height(length); this.reCenter(); } /** * getLength: * Get the length of the vertical and horizontal lines in the crosshairs. * * @returns {number} The length of the crosshairs. */ getLength() { return this._horizLeftHair.get_width(); } /** * setClip: * Set the width and height of the rectangle that clips the crosshairs at * their intersection * * @param {[number, number]} size Array of [width, height] defining the size * of the clip rectangle. */ setClip(size) { if (size) { // Take a chunk out of the crosshairs where it intersects the // mouse. this._clipSize = size; this.reCenter(); } else { // Restore the missing chunk. this._clipSize = [0, 0]; this.reCenter(); } } /** * reCenter: * Reposition the horizontal and vertical hairs such that they cross at * the center of crosshairs group. If called with the dimensions of * the clip rectangle, these are used to update the size of the clip. * * @param {[number, number]} [clipSize] If present, the clip's [width, height]. */ reCenter(clipSize) { let [groupWidth, groupHeight] = this.get_size(); let leftLength = this._horizLeftHair.get_width(); let topLength = this._vertTopHair.get_height(); let thickness = this._horizLeftHair.get_height(); // Deal with clip rectangle. if (clipSize) this._clipSize = clipSize; let clipWidth = this._clipSize[0]; let clipHeight = this._clipSize[1]; let left = groupWidth / 2 - clipWidth / 2 - leftLength - thickness / 2; let right = groupWidth / 2 + clipWidth / 2 + thickness / 2; let top = groupHeight / 2 - clipHeight / 2 - topLength - thickness / 2; let bottom = groupHeight / 2 + clipHeight / 2 + thickness / 2; this._horizLeftHair.set_position(left, (groupHeight - thickness) / 2); this._horizRightHair.set_position(right, (groupHeight - thickness) / 2); this._vertTopHair.set_position((groupWidth - thickness) / 2, top); this._vertBottomHair.set_position((groupWidth - thickness) / 2, bottom); } }); class MagShaderEffects { constructor(uiGroupClone) { this._inverse = new Shell.InvertLightnessEffect(); this._brightnessContrast = new Clutter.BrightnessContrastEffect(); this._colorDesaturation = new Clutter.DesaturateEffect(); this._inverse.set_enabled(false); this._brightnessContrast.set_enabled(false); this._colorDesaturation.set_enabled(false); this._magView = uiGroupClone; this._magView.add_effect(this._inverse); this._magView.add_effect(this._brightnessContrast); this._magView.add_effect(this._colorDesaturation); } /** * destroyEffects: * Remove contrast and brightness effects from the magnified view, and * lose the reference to the actor they were applied to. Don't use this * object after calling this. */ destroyEffects() { this._magView.clear_effects(); this._colorDesaturation = null; this._brightnessContrast = null; this._inverse = null; this._magView = null; } /** * setInvertLightness: * Enable/disable invert lightness effect. * * @param {boolean} invertFlag Enabled flag. */ setInvertLightness(invertFlag) { this._inverse.set_enabled(invertFlag); } setColorSaturation(factor) { this._colorDesaturation.set_factor(1.0 - factor); this._colorDesaturation.set_enabled(factor !== 1.0); } /** * setBrightness: * Set the brightness of the magnified view. * * @param {object} brightness Object containing the contrast for the * red, green, and blue channels. Values of 0.0 represent "standard" * brightness (no change), whereas values less or greater than * 0.0 indicate decreased or incresaed brightness, respectively. * * {number} brightness.r - the red component * {number} brightness.g - the green component * {number} brightness.b - the blue component */ setBrightness(brightness) { let bRed = brightness.r; let bGreen = brightness.g; let bBlue = brightness.b; this._brightnessContrast.set_brightness_full(bRed, bGreen, bBlue); // Enable the effect if the brightness OR contrast change are such that // it modifies the brightness and/or contrast. let [cRed, cGreen, cBlue] = this._brightnessContrast.get_contrast(); this._brightnessContrast.set_enabled( bRed !== NO_CHANGE || bGreen !== NO_CHANGE || bBlue !== NO_CHANGE || cRed !== NO_CHANGE || cGreen !== NO_CHANGE || cBlue !== NO_CHANGE); } /** * Set the contrast of the magnified view. * * @param {object} contrast Object containing the contrast for the * red, green, and blue channels. Values of 0.0 represent "standard" * contrast (no change), whereas values less or greater than * 0.0 indicate decreased or incresaed contrast, respectively. * * {number} contrast.r - the red component * {number} contrast.g - the green component * {number} contrast.b - the blue component */ setContrast(contrast) { let cRed = contrast.r; let cGreen = contrast.g; let cBlue = contrast.b; this._brightnessContrast.set_contrast_full(cRed, cGreen, cBlue); // Enable the effect if the contrast OR brightness change are such that // it modifies the brightness and/or contrast. // should be able to use Cogl.Color.equal(), but that complains of // a null first argument. let [bRed, bGreen, bBlue] = this._brightnessContrast.get_brightness(); this._brightnessContrast.set_enabled( cRed !== NO_CHANGE || cGreen !== NO_CHANGE || cBlue !== NO_CHANGE || bRed !== NO_CHANGE || bGreen !== NO_CHANGE || bBlue !== NO_CHANGE); } } 070701000001C5000081A40000000000000000000000016712993F00008865000000000000000000000000000000000000001F00000000gnome-shell-47.1/js/ui/main.jsimport Clutter from 'gi://Clutter'; import Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import Meta from 'gi://Meta'; import Shell from 'gi://Shell'; import St from 'gi://St'; import * as AccessDialog from './accessDialog.js'; import * as AudioDeviceSelection from './audioDeviceSelection.js'; import * as Config from '../misc/config.js'; import * as Components from './components.js'; import * as CtrlAltTab from './ctrlAltTab.js'; import * as EndSessionDialog from './endSessionDialog.js'; import * as ExtensionSystem from './extensionSystem.js'; import * as ExtensionDownloader from './extensionDownloader.js'; import * as InputMethod from '../misc/inputMethod.js'; import * as Introspect from '../misc/introspect.js'; import * as Keyboard from './keyboard.js'; import * as MessageTray from './messageTray.js'; import * as ModalDialog from './modalDialog.js'; import * as OsdWindow from './osdWindow.js'; import * as OsdMonitorLabeler from './osdMonitorLabeler.js'; import * as Overview from './overview.js'; import * as PadOsd from './padOsd.js'; import * as Panel from './panel.js'; import * as RunDialog from './runDialog.js'; import * as WelcomeDialog from './welcomeDialog.js'; import * as Layout from './layout.js'; import * as LoginManager from '../misc/loginManager.js'; import * as LookingGlass from './lookingGlass.js'; import * as NotificationDaemon from './notificationDaemon.js'; import * as WindowAttentionHandler from './windowAttentionHandler.js'; import * as Screenshot from './screenshot.js'; import * as ScreenShield from './screenShield.js'; import * as SessionMode from './sessionMode.js'; import * as ShellDBus from './shellDBus.js'; import * as ShellMountOperation from './shellMountOperation.js'; import * as WindowManager from './windowManager.js'; import * as Magnifier from './magnifier.js'; import * as XdndHandler from './xdndHandler.js'; import * as KbdA11yDialog from './kbdA11yDialog.js'; import * as LocatePointer from './locatePointer.js'; import * as PointerA11yTimeout from './pointerA11yTimeout.js'; import {formatError} from '../misc/errorUtils.js'; import * as ParentalControlsManager from '../misc/parentalControlsManager.js'; import * as Util from '../misc/util.js'; const WELCOME_DIALOG_LAST_SHOWN_VERSION = 'welcome-dialog-last-shown-version'; // Make sure to mention the point release, otherwise it will show every time // until this version is current const WELCOME_DIALOG_LAST_TOUR_CHANGE = '40.beta'; const LOG_DOMAIN = 'GNOME Shell'; const GNOMESHELL_STARTED_MESSAGE_ID = 'f3ea493c22934e26811cd62abe8e203a'; export let componentManager = null; export let extensionManager = null; export let panel = null; export let overview = null; export let runDialog = null; export let lookingGlass = null; export let welcomeDialog = null; export let wm = null; export let messageTray = null; export let screenShield = null; export let notificationDaemon = null; export let windowAttentionHandler = null; export let ctrlAltTabManager = null; export let padOsdService = null; export let osdWindowManager = null; export let osdMonitorLabeler = null; export let sessionMode = null; export let screenshotUI = null; export let shellAccessDialogDBusService = null; export let shellAudioSelectionDBusService = null; export let shellDBusService = null; export let shellMountOpDBusService = null; export let screenSaverDBus = null; export let modalCount = 0; export let actionMode = Shell.ActionMode.NONE; export let modalActorFocusStack = []; export let uiGroup = null; export let magnifier = null; export let xdndHandler = null; export let keyboard = null; export let layoutManager = null; export let kbdA11yDialog = null; export let inputMethod = null; export let introspectService = null; export let locatePointer = null; export let endSessionDialog = null; let _startDate; let _defaultCssStylesheet = null; let _cssStylesheet = null; let _themeResource = null; let _oskResource = null; let _iconResource = null; let _workspacesAdjustment = null; let _workspaceAdjustmentRegistry = null; Gio._promisify(Gio.File.prototype, 'delete_async'); Gio._promisify(Gio.File.prototype, 'touch_async'); let _remoteAccessInhibited = false; function _sessionUpdated() { if (sessionMode.isPrimary) _loadDefaultStylesheet(); wm.allowKeybinding('overlay-key', Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW); wm.allowKeybinding('locate-pointer-key', Shell.ActionMode.ALL); wm.setCustomKeybindingHandler('panel-run-dialog', Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, sessionMode.hasRunDialog ? openRunDialog : null); if (!sessionMode.hasRunDialog) { if (runDialog) runDialog.close(); if (lookingGlass) lookingGlass.close(); if (welcomeDialog) welcomeDialog.close(); } let remoteAccessController = global.backend.get_remote_access_controller(); if (remoteAccessController && !global.backend.is_headless()) { if (sessionMode.allowScreencast && _remoteAccessInhibited) { remoteAccessController.uninhibit_remote_access(); _remoteAccessInhibited = false; } else if (!sessionMode.allowScreencast && !_remoteAccessInhibited) { remoteAccessController.inhibit_remote_access(); _remoteAccessInhibited = true; } } } /** @returns {void} */ export async function start() { globalThis.log = console.log; globalThis.logError = function (err, msg) { const args = [formatError(err)]; try { // toString() can throw if (msg) args.unshift(`${msg}:`); } catch (e) {} console.error(...args); }; // Chain up async errors reported from C global.connect('notify-error', (global, msg, detail) => { notifyError(msg, detail); }); let currentDesktop = GLib.getenv('XDG_CURRENT_DESKTOP'); if (!currentDesktop || !currentDesktop.split(':').includes('GNOME')) Gio.DesktopAppInfo.set_desktop_env('GNOME'); sessionMode = new SessionMode.SessionMode(); sessionMode.connect('updated', _sessionUpdated); St.Settings.get().connect('notify::high-contrast', _loadDefaultStylesheet); St.Settings.get().connect('notify::color-scheme', _loadDefaultStylesheet); // Initialize ParentalControlsManager before the UI ParentalControlsManager.getDefault(); await _initializeUI(); shellAccessDialogDBusService = new AccessDialog.AccessDialogDBus(); shellAudioSelectionDBusService = new AudioDeviceSelection.AudioDeviceSelectionDBus(); shellDBusService = new ShellDBus.GnomeShell(); shellMountOpDBusService = new ShellMountOperation.GnomeShellMountOpHandler(); const watchId = Gio.DBus.session.watch_name('org.gnome.Shell.Notifications', Gio.BusNameWatcherFlags.AUTO_START, bus => bus.unwatch_name(watchId), bus => bus.unwatch_name(watchId)); _sessionUpdated(); } /** @private */ async function _initializeUI() { // Ensure ShellWindowTracker and ShellAppUsage are initialized; this will // also initialize ShellAppSystem first. ShellAppSystem // needs to load all the .desktop files, and ShellWindowTracker // will use those to associate with windows. Right now // the Monitor doesn't listen for installed app changes // and recalculate application associations, so to avoid // races for now we initialize it here. It's better to // be predictable anyways. Shell.WindowTracker.get_default(); Shell.AppUsage.get_default(); reloadThemeResource(); _loadIcons(); _loadOskLayouts(); _loadDefaultStylesheet(); _loadWorkspacesAdjustment(); new AnimationsSettings(); // Setup the stage hierarchy early layoutManager = new Layout.LayoutManager(); // Various parts of the codebase still refer to Main.uiGroup // instead of using the layoutManager. This keeps that code // working until it's updated. uiGroup = layoutManager.uiGroup; padOsdService = new PadOsd.PadOsdService(); xdndHandler = new XdndHandler.XdndHandler(); ctrlAltTabManager = new CtrlAltTab.CtrlAltTabManager(); osdWindowManager = new OsdWindow.OsdWindowManager(); osdMonitorLabeler = new OsdMonitorLabeler.OsdMonitorLabeler(); overview = new Overview.Overview(); kbdA11yDialog = new KbdA11yDialog.KbdA11yDialog(); wm = new WindowManager.WindowManager(); magnifier = new Magnifier.Magnifier(); locatePointer = new LocatePointer.LocatePointer(); if (LoginManager.canLock()) screenShield = new ScreenShield.ScreenShield(); inputMethod = new InputMethod.InputMethod(); Clutter.get_default_backend().set_input_method(inputMethod); global.connect('shutdown', () => Clutter.get_default_backend().set_input_method(null)); screenshotUI = new Screenshot.ScreenshotUI(); messageTray = new MessageTray.MessageTray(); panel = new Panel.Panel(); keyboard = new Keyboard.KeyboardManager(); notificationDaemon = new NotificationDaemon.NotificationDaemon(); windowAttentionHandler = new WindowAttentionHandler.WindowAttentionHandler(); componentManager = new Components.ComponentManager(); introspectService = new Introspect.IntrospectService(); layoutManager.init(); overview.init(); new PointerA11yTimeout.PointerA11yTimeout(); global.connect('locate-pointer', () => { locatePointer.show(); }); global.display.connect('show-restart-message', (display, message) => { showRestartMessage(message); return true; }); global.display.connect('restart', () => { global.reexec_self(); return true; }); global.display.connect('gl-video-memory-purged', loadTheme); global.context.connect('notify::unsafe-mode', () => { if (!global.context.unsafe_mode) return; // we're safe if (lookingGlass?.isOpen) return; // assume user action const source = MessageTray.getSystemSource(); const notification = new MessageTray.Notification({ source, title: _('System was put in unsafe mode'), body: _('Apps now have unrestricted access'), isTransient: true, }); notification.addAction(_('Undo'), () => (global.context.unsafe_mode = false)); source.addNotification(notification); }); // Provide the bus object for gnome-session to // initiate logouts. endSessionDialog = new EndSessionDialog.EndSessionDialog(); // We're ready for the session manager to move to the next phase GLib.idle_add(GLib.PRIORITY_DEFAULT, () => { Shell.util_sd_notify(); global.context.notify_ready(); return GLib.SOURCE_REMOVE; }); _startDate = new Date(); ExtensionDownloader.init(); extensionManager = new ExtensionSystem.ExtensionManager(); extensionManager.init(); if (sessionMode.isGreeter && screenShield) { layoutManager.connect('startup-prepared', () => { screenShield.showDialog(); }); } let Scripting; let perfModule; const {automationScript} = global; if (automationScript) { Scripting = await import('./scripting.js'); perfModule = await import(automationScript.get_uri()); if (perfModule.init) perfModule.init(); } layoutManager.connect('startup-complete', () => { if (actionMode === Shell.ActionMode.NONE) actionMode = Shell.ActionMode.NORMAL; if (screenShield) screenShield.lockIfWasLocked(); if (sessionMode.currentMode !== 'gdm' && sessionMode.currentMode !== 'initial-setup') { GLib.log_structured(LOG_DOMAIN, GLib.LogLevelFlags.LEVEL_MESSAGE, { 'MESSAGE': `GNOME Shell started at ${_startDate}`, 'MESSAGE_ID': GNOMESHELL_STARTED_MESSAGE_ID, }); } if (!perfModule) { let credentials = new Gio.Credentials(); if (credentials.get_unix_user() === 0) { notify( _('Logged in as a privileged user'), _('Running a session as a privileged user should be avoided for security reasons. If possible, you should log in as a normal user.')); } else if (sessionMode.showWelcomeDialog) { _handleShowWelcomeScreen(); } } if (sessionMode.currentMode !== 'gdm' && sessionMode.currentMode !== 'initial-setup') _handleLockScreenWarning(); LoginManager.registerSessionWithGDM(); if (perfModule) { let perfOutput = GLib.getenv('SHELL_PERF_OUTPUT'); Scripting.runPerfScript(perfModule, perfOutput); } }); } function _handleShowWelcomeScreen() { const lastShownVersion = global.settings.get_string(WELCOME_DIALOG_LAST_SHOWN_VERSION); if (Util.GNOMEversionCompare(WELCOME_DIALOG_LAST_TOUR_CHANGE, lastShownVersion) > 0) { openWelcomeDialog(); global.settings.set_string(WELCOME_DIALOG_LAST_SHOWN_VERSION, Config.PACKAGE_VERSION); } } async function _handleLockScreenWarning() { const path = `${global.userdatadir}/lock-warning-shown`; const file = Gio.File.new_for_path(path); const hasLockScreen = screenShield !== null; if (hasLockScreen) { try { await file.delete_async(0, null); } catch (e) { if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_FOUND)) logError(e); } } else { try { if (!await file.touch_async()) return; } catch (e) { logError(e); } notify( _('Screen Lock disabled'), _('Screen Locking requires the GNOME display manager')); } } function _getStylesheet(name) { let stylesheet; stylesheet = Gio.File.new_for_uri(`resource:///org/gnome/shell/theme/${name}`); if (stylesheet.query_exists(null)) return stylesheet; let dataDirs = GLib.get_system_data_dirs(); for (let i = 0; i < dataDirs.length; i++) { let path = GLib.build_filenamev([dataDirs[i], 'gnome-shell', 'theme', name]); stylesheet = Gio.file_new_for_path(path); if (stylesheet.query_exists(null)) return stylesheet; } stylesheet = Gio.File.new_for_path(`${global.datadir}/theme/${name}`); if (stylesheet.query_exists(null)) return stylesheet; return null; } /** @returns {string} */ export function getStyleVariant() { const {colorScheme} = St.Settings.get(); switch (sessionMode.colorScheme) { case 'force-dark': return 'dark'; case 'force-light': return 'light'; case 'prefer-dark': return colorScheme === St.SystemColorScheme.PREFER_LIGHT ? 'light' : 'dark'; case 'prefer-light': return colorScheme === St.SystemColorScheme.PREFER_DARK ? 'dark' : 'light'; default: return ''; } } function _getDefaultStylesheet() { let stylesheet = null; let name = sessionMode.stylesheetName; // Look for a high-contrast variant first if (St.Settings.get().high_contrast) stylesheet = _getStylesheet(name.replace('.css', '-high-contrast.css')); if (stylesheet === null) stylesheet = _getStylesheet(name.replace('.css', `-${getStyleVariant()}.css`)); if (stylesheet == null) stylesheet = _getStylesheet(name); return stylesheet; } function _loadDefaultStylesheet() { let stylesheet = _getDefaultStylesheet(); if (_defaultCssStylesheet && _defaultCssStylesheet.equal(stylesheet)) return; _defaultCssStylesheet = stylesheet; loadTheme(); } class AdjustmentRegistry { #count = 0; #adjustments = new Map(); #registry = new FinalizationRegistry(key => { this.#adjustments.delete(key); }); register(adj) { const key = this.#count++; this.#adjustments.set(key, new WeakRef(adj)); this.#registry.register(adj, key); } forEach(callback) { this.#adjustments.forEach((ref, key) => { const adj = ref.deref(); if (adj) callback(adj); else this.#adjustments.delete(key); }); } } function _loadWorkspacesAdjustment() { const {workspaceManager} = global; const activeWorkspaceIndex = workspaceManager.get_active_workspace_index(); _workspacesAdjustment = new St.Adjustment({ value: activeWorkspaceIndex, lower: 0, page_increment: 1, page_size: 1, step_increment: 0, upper: workspaceManager.n_workspaces, }); workspaceManager.bind_property('n-workspaces', _workspacesAdjustment, 'upper', GObject.BindingFlags.SYNC_CREATE); _workspacesAdjustment.connect('notify::upper', () => { const newActiveIndex = workspaceManager.get_active_workspace_index(); // A workspace might have been inserted or removed before the active // one, causing the adjustment to go out of sync, so update the value _workspaceAdjustmentRegistry.forEach(c => c.remove_transition('value')); _workspacesAdjustment.remove_transition('value'); _workspacesAdjustment.value = newActiveIndex; }); _workspaceAdjustmentRegistry = new AdjustmentRegistry(); } /** * Creates an adjustment that has its lower, upper, and value * properties set for the number of available workspaces. Consumers * of the returned adjustment must only change the 'value' property, * and only that. * * @param {Clutter.Actor} actor * * @returns {St.Adjustment} - an adjustment representing the * current workspaces layout */ export function createWorkspacesAdjustment(actor) { const adjustment = new St.Adjustment({actor}); const properties = [ ['lower', GObject.BindingFlags.SYNC_CREATE], ['page-increment', GObject.BindingFlags.SYNC_CREATE], ['page-size', GObject.BindingFlags.SYNC_CREATE], ['step-increment', GObject.BindingFlags.SYNC_CREATE], ['upper', GObject.BindingFlags.SYNC_CREATE], ['value', GObject.BindingFlags.SYNC_CREATE | GObject.BindingFlags.BIDIRECTIONAL], ]; for (const [propName, flags] of properties) _workspacesAdjustment.bind_property(propName, adjustment, propName, flags); _workspaceAdjustmentRegistry.register(adjustment); return adjustment; } /** * Get the theme CSS file that the shell will load * * @returns {?Gio.File}: A #GFile that contains the theme CSS, * null if using the default */ export function getThemeStylesheet() { return _cssStylesheet; } /** * Set the theme CSS file that the shell will load * * @param {string=} cssStylesheet - A file path that contains the theme CSS, * set it to null to use the default */ export function setThemeStylesheet(cssStylesheet) { _cssStylesheet = cssStylesheet ? Gio.File.new_for_path(cssStylesheet) : null; } export function reloadThemeResource() { if (_themeResource) _themeResource._unregister(); _themeResource = Gio.Resource.load( `${global.datadir}/${sessionMode.themeResourceName}`); _themeResource._register(); } /** @private */ function _loadIcons() { _iconResource = Gio.Resource.load(`${global.datadir}/gnome-shell-icons.gresource`); _iconResource._register(); } function _loadOskLayouts() { _oskResource = Gio.Resource.load(`${global.datadir}/gnome-shell-osk-layouts.gresource`); _oskResource._register(); } /** * loadTheme: * * Reloads the theme CSS file */ export function loadTheme() { let themeContext = St.ThemeContext.get_for_stage(global.stage); let previousTheme = themeContext.get_theme(); let theme = new St.Theme({ application_stylesheet: _cssStylesheet, default_stylesheet: _defaultCssStylesheet, }); if (theme.default_stylesheet == null) throw new Error(`No valid stylesheet found for '${sessionMode.stylesheetName}'`); if (previousTheme) { let customStylesheets = previousTheme.get_custom_stylesheets(); for (let i = 0; i < customStylesheets.length; i++) theme.load_stylesheet(customStylesheets[i]); } themeContext.set_theme(theme); } /** * @param {string} msg A message * @param {string} details Additional information */ export function notify(msg, details) { const source = MessageTray.getSystemSource(); const notification = new MessageTray.Notification({ source, title: msg, body: details, isTransient: true, }); source.addNotification(notification); } /** * See shell_global_notify_problem(). * * @param {string} msg - An error message * @param {string} details - Additional information */ export function notifyError(msg, details) { // Also print to stderr so it's logged somewhere if (details) console.warn(`error: ${msg}: ${details}`); else console.warn(`error: ${msg}`); notify(msg, details); } /** * @private * @param {Clutter.Grab} grab - grab */ function _findModal(grab) { for (let i = 0; i < modalActorFocusStack.length; i++) { if (modalActorFocusStack[i].grab === grab) return i; } return -1; } /** * Ensure we are in a mode where all keyboard and mouse input goes to * the stage, and focus @actor. Multiple calls to this function act in * a stacking fashion; the effect will be undone when an equal number * of popModal() invocations have been made. * * Next, record the current Clutter keyboard focus on a stack. If the * modal stack returns to this actor, reset the focus to the actor * which was focused at the time pushModal() was invoked. * * `params` may be used to provide the following parameters: * - actionMode: used to set the current Shell.ActionMode to filter * global keybindings; the default of NONE will filter * out all keybindings * * @param {Clutter.Actor} actor - actor which will be given keyboard focus * @param {object=} params - optional parameters * @returns {Clutter.Grab} - the grab handle created */ export function pushModal(actor, params = {}) { const {actionMode: newActionMode} = { actionMode: Shell.ActionMode.NONE, ...params, }; let grab = global.stage.grab(actor); if (modalCount === 0) Meta.disable_unredirect_for_display(global.display); modalCount += 1; let actorDestroyId = actor.connect('destroy', () => { let index = _findModal(grab); if (index >= 0) popModal(grab); }); let prevFocus = global.stage.get_key_focus(); let prevFocusDestroyId; if (prevFocus != null) { prevFocusDestroyId = prevFocus.connect('destroy', () => { const index = modalActorFocusStack.findIndex( record => record.prevFocus === prevFocus); if (index >= 0) modalActorFocusStack[index].prevFocus = null; }); } modalActorFocusStack.push({ actor, grab, destroyId: actorDestroyId, prevFocus, prevFocusDestroyId, actionMode, }); actionMode = newActionMode; global.stage.set_key_focus(actor); return grab; } /** * Reverse the effect of pushModal(). If this invocation is undoing * the topmost invocation, then the focus will be restored to the * previous focus at the time when pushModal() was invoked. * * @param {Clutter.Grab} grab - the grab given by pushModal() */ export function popModal(grab) { let focusIndex = _findModal(grab); if (focusIndex < 0) { global.stage.set_key_focus(null); actionMode = Shell.ActionMode.NORMAL; throw new Error('incorrect pop'); } modalCount -= 1; let record = modalActorFocusStack[focusIndex]; record.actor.disconnect(record.destroyId); record.grab.dismiss(); if (focusIndex === modalActorFocusStack.length - 1) { if (record.prevFocus) record.prevFocus.disconnect(record.prevFocusDestroyId); actionMode = record.actionMode; global.stage.set_key_focus(record.prevFocus); } else { // If we have: // global.stage.set_focus(a); // Main.pushModal(b); // Main.pushModal(c); // Main.pushModal(d); // // then we have the stack: // [{ prevFocus: a, actor: b }, // { prevFocus: b, actor: c }, // { prevFocus: c, actor: d }] // // When actor c is destroyed/popped, if we only simply remove the // record, then the focus stack will be [a, c], rather than the correct // [a, b]. Shift the focus stack up before removing the record to ensure // that we get the correct result. let t = modalActorFocusStack[modalActorFocusStack.length - 1]; if (t.prevFocus) t.prevFocus.disconnect(t.prevFocusDestroyId); // Remove from the middle, shift the focus chain up for (let i = modalActorFocusStack.length - 1; i > focusIndex; i--) { modalActorFocusStack[i].prevFocus = modalActorFocusStack[i - 1].prevFocus; modalActorFocusStack[i].prevFocusDestroyId = modalActorFocusStack[i - 1].prevFocusDestroyId; modalActorFocusStack[i].actionMode = modalActorFocusStack[i - 1].actionMode; } } modalActorFocusStack.splice(focusIndex, 1); if (modalCount > 0) return; layoutManager.modalEnded(); Meta.enable_unredirect_for_display(global.display); actionMode = Shell.ActionMode.NORMAL; } /** * Creates the looking glass panel * * @returns {LookingGlass.LookingGlass} */ export function createLookingGlass() { if (lookingGlass == null) lookingGlass = new LookingGlass.LookingGlass(); return lookingGlass; } /** * Opens the run dialog */ export function openRunDialog() { if (runDialog == null) runDialog = new RunDialog.RunDialog(); runDialog.open(); } export function openWelcomeDialog() { if (welcomeDialog === null) welcomeDialog = new WelcomeDialog.WelcomeDialog(); welcomeDialog.open(); } /** * activateWindow: * * @param {Meta.Window} window the window to activate * @param {number=} time current event time * @param {number=} workspaceNum window's workspace number * * Activates @window, switching to its workspace first if necessary, * and switching out of the overview if it's currently active */ export function activateWindow(window, time, workspaceNum) { let workspaceManager = global.workspace_manager; let activeWorkspaceNum = workspaceManager.get_active_workspace_index(); let windowWorkspaceNum = workspaceNum !== undefined ? workspaceNum : window.get_workspace().index(); if (!time) time = global.get_current_time(); if (windowWorkspaceNum !== activeWorkspaceNum) { let workspace = workspaceManager.get_workspace_by_index(windowWorkspaceNum); workspace.activate_with_focus(window, time); } else { window.activate(time); } overview.hide(); panel.closeCalendar(); } /** * Move @window to the specified monitor and workspace. * * @param {Meta.Window} window - the window to move * @param {number} monitorIndex - the requested monitor * @param {number} workspaceIndex - the requested workspace * @param {bool} append - create workspace if it doesn't exist */ export function moveWindowToMonitorAndWorkspace(window, monitorIndex, workspaceIndex, append = false) { // We need to move the window before changing the workspace, because // the move itself could cause a workspace change if the window enters // the primary monitor if (window.get_monitor() !== monitorIndex) { // Wait for the monitor change to take effect const id = global.display.connect('window-entered-monitor', (dsp, num, w) => { if (w !== window) return; window.change_workspace_by_index(workspaceIndex, append); global.display.disconnect(id); }); window.move_to_monitor(monitorIndex); } else { window.change_workspace_by_index(workspaceIndex, append); } } // TODO - replace this timeout with some system to guess when the user might // be e.g. just reading the screen and not likely to interact. const DEFERRED_TIMEOUT_SECONDS = 20; let _deferredWorkData = {}; // Work scheduled for some point in the future let _deferredWorkQueue = []; // Work we need to process before the next redraw let _beforeRedrawQueue = []; // Counter to assign work ids let _deferredWorkSequence = 0; let _deferredTimeoutId = 0; function _runDeferredWork(workId) { if (!_deferredWorkData[workId]) return; let index = _deferredWorkQueue.indexOf(workId); if (index < 0) return; _deferredWorkQueue.splice(index, 1); _deferredWorkData[workId].callback(); if (_deferredWorkQueue.length === 0 && _deferredTimeoutId > 0) { GLib.source_remove(_deferredTimeoutId); _deferredTimeoutId = 0; } } function _runAllDeferredWork() { while (_deferredWorkQueue.length > 0) _runDeferredWork(_deferredWorkQueue[0]); } function _runBeforeRedrawQueue() { for (let i = 0; i < _beforeRedrawQueue.length; i++) { let workId = _beforeRedrawQueue[i]; _runDeferredWork(workId); } _beforeRedrawQueue = []; } function _queueBeforeRedraw(workId) { _beforeRedrawQueue.push(workId); if (_beforeRedrawQueue.length === 1) { const laters = global.compositor.get_laters(); laters.add(Meta.LaterType.BEFORE_REDRAW, () => { _runBeforeRedrawQueue(); return false; }); } } /** * This function sets up a callback to be invoked when either the * given actor is mapped, or after some period of time when the machine * is idle. This is useful if your actor isn't always visible on the * screen (for example, all actors in the overview), and you don't want * to consume resources updating if the actor isn't actually going to be * displaying to the user. * * Note that queueDeferredWork is called by default immediately on * initialization as well, under the assumption that new actors * will need it. * * @param {Clutter.Actor} actor - an actor * @param {callback} callback - Function to invoke to perform work * * @returns {string} - A string work identifier */ export function initializeDeferredWork(actor, callback) { // Turn into a string so we can use as an object property let workId = `${++_deferredWorkSequence}`; _deferredWorkData[workId] = { actor, callback, }; actor.connect('notify::mapped', () => { if (!(actor.mapped && _deferredWorkQueue.includes(workId))) return; _queueBeforeRedraw(workId); }); actor.connect('destroy', () => { let index = _deferredWorkQueue.indexOf(workId); if (index >= 0) _deferredWorkQueue.splice(index, 1); delete _deferredWorkData[workId]; }); queueDeferredWork(workId); return workId; } /** * queueDeferredWork: * * @param {string} workId work identifier * * Ensure that the work identified by @workId will be * run on map or timeout. You should call this function * for example when data being displayed by the actor has * changed. */ export function queueDeferredWork(workId) { let data = _deferredWorkData[workId]; if (!data) { let message = `Invalid work id ${workId}`; logError(new Error(message), message); return; } if (!_deferredWorkQueue.includes(workId)) _deferredWorkQueue.push(workId); if (data.actor.mapped) { _queueBeforeRedraw(workId); } else if (_deferredTimeoutId === 0) { _deferredTimeoutId = GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, DEFERRED_TIMEOUT_SECONDS, () => { _runAllDeferredWork(); _deferredTimeoutId = 0; return GLib.SOURCE_REMOVE; }); GLib.Source.set_name_by_id(_deferredTimeoutId, '[gnome-shell] _runAllDeferredWork'); } } const RestartMessage = GObject.registerClass( class RestartMessage extends ModalDialog.ModalDialog { _init(message) { super._init({ shellReactive: true, styleClass: 'restart-message', shouldFadeIn: false, destroyOnClose: true, }); let label = new St.Label({ text: message, x_align: Clutter.ActorAlign.CENTER, y_align: Clutter.ActorAlign.CENTER, }); this.contentLayout.add_child(label); this.buttonLayout.hide(); } }); function showRestartMessage(message) { let restartMessage = new RestartMessage(message); restartMessage.open(); } class AnimationsSettings { constructor() { this._animationsEnabled = true; this._handles = new Set(); global.connect('notify::force-animations', this._syncAnimationsEnabled.bind(this)); this._syncAnimationsEnabled(); const backend = global.backend; const remoteAccessController = backend.get_remote_access_controller(); if (remoteAccessController) { remoteAccessController.connect('new-handle', (_, handle) => this._onNewRemoteAccessHandle(handle)); } } _shouldEnableAnimations() { if (this._handles.size > 0) return false; if (global.force_animations) return true; const backend = global.backend; if (!backend.is_rendering_hardware_accelerated()) return false; if (Shell.util_has_x11_display_extension( global.display, 'VNC-EXTENSION')) return false; return true; } _syncAnimationsEnabled() { const shouldEnableAnimations = this._shouldEnableAnimations(); if (this._animationsEnabled === shouldEnableAnimations) return; this._animationsEnabled = shouldEnableAnimations; const settings = St.Settings.get(); if (shouldEnableAnimations) settings.uninhibit_animations(); else settings.inhibit_animations(); } _onRemoteAccessHandleStopped(handle) { this._handles.delete(handle); this._syncAnimationsEnabled(); } _onNewRemoteAccessHandle(handle) { if (!handle.get_disable_animations()) return; this._handles.add(handle); this._syncAnimationsEnabled(); handle.connect('stopped', this._onRemoteAccessHandleStopped.bind(this)); } } 070701000001C6000081A40000000000000000000000016712993F00006357000000000000000000000000000000000000002600000000gnome-shell-47.1/js/ui/messageList.jsimport Atk from 'gi://Atk'; import Clutter from 'gi://Clutter'; import Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import Graphene from 'gi://Graphene'; import Meta from 'gi://Meta'; import Pango from 'gi://Pango'; import St from 'gi://St'; import * as Main from './main.js'; import * as MessageTray from './messageTray.js'; import * as Util from '../misc/util.js'; import {formatTimeSpan} from '../misc/dateUtils.js'; const MESSAGE_ANIMATION_TIME = 100; const DEFAULT_EXPAND_LINES = 6; export const URLHighlighter = GObject.registerClass( class URLHighlighter extends St.Label { _init(text = '', lineWrap, allowMarkup) { super._init({ reactive: true, style_class: 'url-highlighter', x_expand: true, x_align: Clutter.ActorAlign.START, }); this._linkColor = '#ccccff'; this.connect('style-changed', () => { let [hasColor, color] = this.get_theme_node().lookup_color('link-color', false); if (hasColor) { let linkColor = color.to_string().substring(0, 7); if (linkColor !== this._linkColor) { this._linkColor = linkColor; this._highlightUrls(); } } }); this.clutter_text.line_wrap = lineWrap; this.clutter_text.line_wrap_mode = Pango.WrapMode.WORD_CHAR; this.setMarkup(text, allowMarkup); } vfunc_button_press_event(event) { // Don't try to URL highlight when invisible. // The MessageTray doesn't actually hide us, so // we need to check for paint opacities as well. if (!this.visible || this.get_paint_opacity() === 0) return Clutter.EVENT_PROPAGATE; // Keep Notification from seeing this and taking // a pointer grab, which would block our button-release-event // handler, if an URL is clicked return this._findUrlAtPos(event) !== -1; } vfunc_button_release_event(event) { if (!this.visible || this.get_paint_opacity() === 0) return Clutter.EVENT_PROPAGATE; const urlId = this._findUrlAtPos(event); if (urlId !== -1) { let url = this._urls[urlId].url; if (!url.includes(':')) url = `http://${url}`; Gio.app_info_launch_default_for_uri( url, global.create_app_launch_context(0, -1)); return Clutter.EVENT_STOP; } return Clutter.EVENT_PROPAGATE; } vfunc_motion_event(event) { if (!this.visible || this.get_paint_opacity() === 0) return Clutter.EVENT_PROPAGATE; const urlId = this._findUrlAtPos(event); if (urlId !== -1 && !this._cursorChanged) { global.display.set_cursor(Meta.Cursor.POINTING_HAND); this._cursorChanged = true; } else if (urlId === -1) { global.display.set_cursor(Meta.Cursor.DEFAULT); this._cursorChanged = false; } return Clutter.EVENT_PROPAGATE; } vfunc_leave_event(event) { if (!this.visible || this.get_paint_opacity() === 0) return Clutter.EVENT_PROPAGATE; if (this._cursorChanged) { this._cursorChanged = false; global.display.set_cursor(Meta.Cursor.DEFAULT); } return super.vfunc_leave_event(event); } setMarkup(text, allowMarkup) { text = text ? Util.fixMarkup(text, allowMarkup) : ''; this._text = text; this.clutter_text.set_markup(text); /* clutter_text.text contain text without markup */ this._urls = Util.findUrls(this.clutter_text.text); this._highlightUrls(); } _highlightUrls() { // text here contain markup let urls = Util.findUrls(this._text); let markup = ''; let pos = 0; for (let i = 0; i < urls.length; i++) { let url = urls[i]; let str = this._text.substring(pos, url.pos); markup += `${str}${url.url}`; pos = url.pos + url.url.length; } markup += this._text.substring(pos); this.clutter_text.set_markup(markup); } _findUrlAtPos(event) { let [x, y] = event.get_coords(); [, x, y] = this.transform_stage_point(x, y); let findPos = -1; for (let i = 0; i < this.clutter_text.text.length; i++) { let [, px, py, lineHeight] = this.clutter_text.position_to_coords(i); if (py > y || py + lineHeight < y || x < px) continue; findPos = i; } if (findPos !== -1) { for (let i = 0; i < this._urls.length; i++) { if (findPos >= this._urls[i].pos && this._urls[i].pos + this._urls[i].url.length > findPos) return i; } } return -1; } }); const ScaleLayout = GObject.registerClass( class ScaleLayout extends Clutter.BinLayout { _init(params) { this._container = null; super._init(params); } _connectContainer(container) { if (this._container === container) return; this._container?.disconnectObject(this); this._container = container; if (this._container) { this._container.connectObject( 'notify::scale-x', () => this.layout_changed(), 'notify::scale-y', () => this.layout_changed(), this); } } vfunc_get_preferred_width(container, forHeight) { this._connectContainer(container); let [min, nat] = super.vfunc_get_preferred_width(container, forHeight); return [ Math.floor(min * container.scale_x), Math.floor(nat * container.scale_x), ]; } vfunc_get_preferred_height(container, forWidth) { this._connectContainer(container); let [min, nat] = super.vfunc_get_preferred_height(container, forWidth); return [ Math.floor(min * container.scale_y), Math.floor(nat * container.scale_y), ]; } }); const LabelExpanderLayout = GObject.registerClass({ Properties: { 'expansion': GObject.ParamSpec.double( 'expansion', null, null, GObject.ParamFlags.READABLE | GObject.ParamFlags.WRITABLE, 0, 1, 0), }, }, class LabelExpanderLayout extends Clutter.BinLayout { constructor(params) { super(params); this._expansion = 0; this._expandLines = DEFAULT_EXPAND_LINES; } get expansion() { return this._expansion; } set expansion(v) { if (v === this._expansion) return; this._expansion = v; this.notify('expansion'); this.layout_changed(); } set expandLines(v) { if (v === this._expandLines) return; this._expandLines = v; if (this._expansion > 0) this.layout_changed(); } vfunc_get_preferred_height(container, forWidth) { let [min, nat] = [0, 0]; const [child] = container; if (child) { [min, nat] = child.get_preferred_height(-1); const [, nat2] = child.get_preferred_height(forWidth); const expHeight = Math.min(nat2, nat * this._expandLines); [min, nat] = [ min + this._expansion * (expHeight - min), nat + this._expansion * (expHeight - nat), ]; } return [min, nat]; } }); export const Source = GObject.registerClass({ Properties: { 'title': GObject.ParamSpec.string( 'title', null, null, GObject.ParamFlags.READWRITE, null), 'icon': GObject.ParamSpec.object( 'icon', null, null, GObject.ParamFlags.READWRITE, Gio.Icon), 'icon-name': GObject.ParamSpec.string( 'icon-name', null, null, GObject.ParamFlags.READWRITE, null), }, }, class Source extends GObject.Object { get iconName() { if (this.gicon instanceof Gio.ThemedIcon) return this.gicon.iconName; else return null; } set iconName(iconName) { this.icon = new Gio.ThemedIcon({name: iconName}); } }); const TimeLabel = GObject.registerClass( class TimeLabel extends St.Label { _init() { super._init({ style_class: 'event-time', x_expand: true, y_expand: true, x_align: Clutter.ActorAlign.START, y_align: Clutter.ActorAlign.END, visible: false, }); } get datetime() { return this._datetime; } set datetime(datetime) { if (this._datetime?.equal(datetime)) return; this._datetime = datetime; this.visible = !!this._datetime; if (this.mapped) this._updateText(); } _updateText() { if (this._datetime) this.text = formatTimeSpan(this._datetime); } vfunc_map() { this._updateText(); super.vfunc_map(); } }); const MessageHeader = GObject.registerClass( class MessageHeader extends St.BoxLayout { constructor(source) { super({ style_class: 'message-header', x_expand: true, }); const sourceIconEffect = new Clutter.DesaturateEffect(); const sourceIcon = new St.Icon({ style_class: 'message-source-icon', y_align: Clutter.ActorAlign.CENTER, fallback_icon_name: 'application-x-executable-symbolic', }); sourceIcon.add_effect(sourceIconEffect); this.add_child(sourceIcon); sourceIcon.connect('style-changed', () => { const themeNode = sourceIcon.get_theme_node(); sourceIconEffect.enabled = themeNode.get_icon_style() === St.IconStyle.SYMBOLIC; }); const headerContent = new St.BoxLayout({ style_class: 'message-header-content', y_align: Clutter.ActorAlign.CENTER, x_expand: true, }); this.add_child(headerContent); this.expandButton = new St.Button({ style_class: 'message-expand-button', icon_name: 'notification-expand-symbolic', y_align: Clutter.ActorAlign.CENTER, pivot_point: new Graphene.Point({x: 0.5, y: 0.5}), }); this.add_child(this.expandButton); this.closeButton = new St.Button({ style_class: 'message-close-button', icon_name: 'window-close-symbolic', y_align: Clutter.ActorAlign.CENTER, }); this.add_child(this.closeButton); const sourceTitle = new St.Label({ style_class: 'message-source-title', y_align: Clutter.ActorAlign.END, }); headerContent.add_child(sourceTitle); source.bind_property_full('title', sourceTitle, 'text', GObject.BindingFlags.SYNC_CREATE, // Translators: this is the string displayed in the header when a message // source doesn't have a name (bind, value) => [true, value === null || value === '' ? _('Unknown App') : value], null); source.bind_property('icon', sourceIcon, 'gicon', GObject.BindingFlags.SYNC_CREATE); this.timeLabel = new TimeLabel(); headerContent.add_child(this.timeLabel); } }); export const Message = GObject.registerClass({ Properties: { 'title': GObject.ParamSpec.string( 'title', null, null, GObject.ParamFlags.READWRITE, null), 'body': GObject.ParamSpec.string( 'body', null, null, GObject.ParamFlags.READWRITE, null), 'use-body-markup': GObject.ParamSpec.boolean( 'use-body-markup', null, null, GObject.ParamFlags.READWRITE, false), 'icon': GObject.ParamSpec.object( 'icon', null, null, GObject.ParamFlags.READWRITE, Gio.Icon), 'datetime': GObject.ParamSpec.boxed( 'datetime', null, null, GObject.ParamFlags.READWRITE, GLib.DateTime), }, Signals: { 'close': {}, 'expanded': {}, 'unexpanded': {}, }, }, class Message extends St.Button { constructor(source) { super({ style_class: 'message', accessible_role: Atk.Role.NOTIFICATION, can_focus: true, x_expand: true, y_expand: false, }); this.expanded = false; this._useBodyMarkup = false; let vbox = new St.BoxLayout({ vertical: true, x_expand: true, }); this.set_child(vbox); this._header = new MessageHeader(source); vbox.add_child(this._header); const hbox = new St.BoxLayout({ style_class: 'message-box', }); vbox.add_child(hbox); this._actionBin = new St.Bin({ style_class: 'message-action-bin', layout_manager: new ScaleLayout(), visible: false, }); vbox.add_child(this._actionBin); this._icon = new St.Icon({ style_class: 'message-icon', y_expand: true, y_align: Clutter.ActorAlign.START, visible: false, }); hbox.add_child(this._icon); this._icon.connect('notify::is-symbolic', () => { if (this._icon.is_symbolic) this._icon.add_style_class_name('message-themed-icon'); else this._icon.remove_style_class_name('message-themed-icon'); }); const contentBox = new St.BoxLayout({ style_class: 'message-content', vertical: true, x_expand: true, }); hbox.add_child(contentBox); this._mediaControls = new St.BoxLayout(); hbox.add_child(this._mediaControls); this.titleLabel = new St.Label({ style_class: 'message-title', y_align: Clutter.ActorAlign.END, }); contentBox.add_child(this.titleLabel); this._bodyLabel = new URLHighlighter('', true, this._useBodyMarkup); this._bodyLabel.add_style_class_name('message-body'); this._bodyBin = new St.Bin({ x_expand: true, layout_manager: new LabelExpanderLayout(), child: this._bodyLabel, }); contentBox.add_child(this._bodyBin); this.connect('destroy', this._onDestroy.bind(this)); this._header.closeButton.connect('clicked', this.close.bind(this)); this._header.closeButton.visible = this.canClose(); this._header.expandButton.connect('clicked', () => { if (this.expanded) this.unexpand(true); else this.expand(true); }); this._bodyLabel.connect('notify::allocation', this._updateExpandButton.bind(this)); this._updateExpandButton(); } _updateExpandButton() { if (!this._bodyLabel.has_allocation()) return; const layout = this._bodyLabel.clutter_text.get_layout(); const canExpand = layout.is_ellipsized() || this.expanded || !!this._actionBin.child; // Use opacity to not trigger a relayout this._header.expandButton.opacity = canExpand ? 255 : 0; } close() { this.emit('close'); } set icon(icon) { this._icon.gicon = icon; this._icon.visible = !!icon; this.notify('icon'); } get icon() { return this._icon.gicon; } set datetime(datetime) { this._header.timeLabel.datetime = datetime; this.notify('datetime'); } get datetime() { return this._header.timeLabel.datetime; } set title(text) { this._titleText = text; const title = text ? Util.fixMarkup(text.replace(/\n/g, ' '), false) : ''; this.titleLabel.clutter_text.set_markup(title); this.notify('title'); } get title() { return this._titleText; } set body(text) { this._bodyText = text; this._bodyLabel.setMarkup(text ? text.replace(/\n/g, ' ') : '', this._useBodyMarkup); this.notify('body'); } get body() { return this._bodyText; } set useBodyMarkup(enable) { if (this._useBodyMarkup === enable) return; this._useBodyMarkup = enable; this.body = this._bodyText; this.notify('use-body-markup'); } get useBodyMarkup() { return this._useBodyMarkup; } setActionArea(actor) { this._actionBin.child = actor; this._actionBin.visible = actor && this.expanded; this._updateExpandButton(); } addMediaControl(iconName, callback) { const button = new St.Button({ style_class: 'message-media-control', iconName, }); button.connect('clicked', callback); this._mediaControls.add_child(button); return button; } expand(animate) { this.expanded = true; this._actionBin.visible = !!this._actionBin.child; const duration = animate ? MessageTray.ANIMATION_TIME : 0; this._bodyBin.ease_property('@layout.expansion', 1, { progress_mode: Clutter.AnimationMode.EASE_OUT_QUAD, duration, }); this._actionBin.scale_y = 0; this._actionBin.ease({ scale_y: 1, duration, mode: Clutter.AnimationMode.EASE_OUT_QUAD, }); this._header.expandButton.ease({ rotation_angle_z: 180, duration, }); this.emit('expanded'); } unexpand(animate) { const duration = animate ? MessageTray.ANIMATION_TIME : 0; this._bodyBin.ease_property('@layout.expansion', 0, { progress_mode: Clutter.AnimationMode.EASE_OUT_QUAD, duration, }); this._actionBin.ease({ scale_y: 0, duration, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => { this._actionBin.hide(); this.expanded = false; }, }); this._header.expandButton.ease({ rotation_angle_z: 0, duration, }); this.emit('unexpanded'); } canClose() { return false; } _onDestroy() { } vfunc_key_press_event(event) { let keysym = event.get_key_symbol(); if (keysym === Clutter.KEY_Delete || keysym === Clutter.KEY_KP_Delete || keysym === Clutter.KEY_BackSpace) { if (this.canClose()) { this.close(); return Clutter.EVENT_STOP; } } return super.vfunc_key_press_event(event); } }); export const MessageListSection = GObject.registerClass({ Properties: { 'can-clear': GObject.ParamSpec.boolean( 'can-clear', null, null, GObject.ParamFlags.READABLE, false), 'empty': GObject.ParamSpec.boolean( 'empty', null, null, GObject.ParamFlags.READABLE, true), }, Signals: { 'can-clear-changed': {}, 'empty-changed': {}, 'message-focused': {param_types: [Message.$gtype]}, }, }, class MessageListSection extends St.BoxLayout { _init() { super._init({ style_class: 'message-list-section', clip_to_allocation: true, vertical: true, x_expand: true, }); this._list = new St.BoxLayout({ style_class: 'message-list-section-list', vertical: true, }); this.add_child(this._list); this._list.connect('child-added', this._sync.bind(this)); this._list.connect('child-removed', this._sync.bind(this)); Main.sessionMode.connectObject( 'updated', () => this._sync(), this); this._empty = true; this._canClear = false; this._sync(); } get empty() { return this._empty; } get canClear() { return this._canClear; } get _messages() { return this._list.get_children().map(i => i.child); } _onKeyFocusIn(messageActor) { this.emit('message-focused', messageActor); } get allowed() { return true; } addMessage(message, animate) { this.addMessageAtIndex(message, -1, animate); } addMessageAtIndex(message, index, animate) { if (this._messages.includes(message)) throw new Error('Message was already added previously'); let listItem = new St.Bin({ child: message, layout_manager: new ScaleLayout(), pivot_point: new Graphene.Point({x: .5, y: .5}), }); listItem._connectionsIds = []; listItem._connectionsIds.push(message.connect('key-focus-in', this._onKeyFocusIn.bind(this))); listItem._connectionsIds.push(message.connect('close', () => { this.removeMessage(message, true); })); listItem._connectionsIds.push(message.connect('destroy', () => { listItem._connectionsIds.forEach(id => message.disconnect(id)); listItem.destroy(); })); this._list.insert_child_at_index(listItem, index); const duration = animate ? MESSAGE_ANIMATION_TIME : 0; listItem.set({scale_x: 0, scale_y: 0}); listItem.ease({ scale_x: 1, scale_y: 1, duration, mode: Clutter.AnimationMode.EASE_OUT_QUAD, }); } moveMessage(message, index, animate) { if (!this._messages.includes(message)) throw new Error('Impossible to move untracked message'); let listItem = message.get_parent(); if (!animate) { this._list.set_child_at_index(listItem, index); return; } let onComplete = () => { this._list.set_child_at_index(listItem, index); listItem.ease({ scale_x: 1, scale_y: 1, duration: MESSAGE_ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, }); }; listItem.ease({ scale_x: 0, scale_y: 0, duration: MESSAGE_ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete, }); } removeMessage(message, animate) { const messages = this._messages; if (!messages.includes(message)) throw new Error('Impossible to remove untracked message'); let listItem = message.get_parent(); listItem._connectionsIds.forEach(id => message.disconnect(id)); let nextMessage = null; if (message.has_key_focus()) { const index = messages.indexOf(message); nextMessage = messages[index + 1] || messages[index - 1] || this._list; } const duration = animate ? MESSAGE_ANIMATION_TIME : 0; listItem.ease({ scale_x: 0, scale_y: 0, duration, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => { listItem.destroy(); nextMessage?.grab_key_focus(); }, }); } clear() { let messages = this._messages.filter(msg => msg.canClose()); // If there are few messages, letting them all zoom out looks OK if (messages.length < 2) { messages.forEach(message => { message.close(); }); } else { // Otherwise we slide them out one by one, and then zoom them // out "off-screen" in the end to smoothly shrink the parent let delay = MESSAGE_ANIMATION_TIME / Math.max(messages.length, 5); for (let i = 0; i < messages.length; i++) { let message = messages[i]; message.get_parent().ease({ translation_x: this._list.width, opacity: 0, duration: MESSAGE_ANIMATION_TIME, delay: i * delay, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => message.close(), }); } } } _shouldShow() { return !this.empty; } _sync() { let messages = this._messages; let empty = messages.length === 0; if (this._empty !== empty) { this._empty = empty; this.notify('empty'); } let canClear = messages.some(m => m.canClose()); if (this._canClear !== canClear) { this._canClear = canClear; this.notify('can-clear'); } this.visible = this.allowed && this._shouldShow(); } }); 070701000001C7000081A40000000000000000000000016712993F0000AF72000000000000000000000000000000000000002600000000gnome-shell-47.1/js/ui/messageTray.jsimport Clutter from 'gi://Clutter'; import Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import Meta from 'gi://Meta'; import Shell from 'gi://Shell'; import St from 'gi://St'; import * as Calendar from './calendar.js'; import * as GnomeSession from '../misc/gnomeSession.js'; import * as Layout from './layout.js'; import * as Main from './main.js'; import * as MessageList from './messageList.js'; import * as SignalTracker from '../misc/signalTracker.js'; const SHELL_KEYBINDINGS_SCHEMA = 'org.gnome.shell.keybindings'; export const ANIMATION_TIME = 200; const NOTIFICATION_TIMEOUT = 4000; const HIDE_TIMEOUT = 200; const LONGER_HIDE_TIMEOUT = 600; const MAX_NOTIFICATIONS_IN_QUEUE = 3; const MAX_NOTIFICATIONS_PER_SOURCE = 3; // We delay hiding of the tray if the mouse is within MOUSE_LEFT_ACTOR_THRESHOLD // range from the point where it left the tray. const MOUSE_LEFT_ACTOR_THRESHOLD = 20; const IDLE_TIME = 1000; export const State = { HIDDEN: 0, SHOWING: 1, SHOWN: 2, HIDING: 3, }; // These reasons are useful when we destroy the notifications received through // the notification daemon. We use EXPIRED for notifications that we dismiss // and the user did not interact with, DISMISSED for all other notifications // that were destroyed as a result of a user action, SOURCE_CLOSED for the // notifications that were requested to be destroyed by the associated source, // and REPLACED for notifications that were destroyed as a consequence of a // newer version having replaced them. /** @enum {number} */ export const NotificationDestroyedReason = { EXPIRED: 1, DISMISSED: 2, SOURCE_CLOSED: 3, REPLACED: 4, }; // Message tray has its custom Urgency enumeration. LOW, NORMAL and CRITICAL // urgency values map to the corresponding values for the notifications received // through the notification daemon. /** @enum {number} */ export const Urgency = { LOW: 0, NORMAL: 1, HIGH: 2, CRITICAL: 3, }; // The privacy of the details of a notification. USER is for notifications which // contain private information to the originating user account (for example, // details of an e-mail they’ve received). SYSTEM is for notifications which // contain information private to the physical system (for example, battery // status) and hence the same for every user. This affects whether the content // of a notification is shown on the lock screen. /** @enum {number} */ export const PrivacyScope = { USER: 0, SYSTEM: 1, }; class FocusGrabber { constructor(actor) { this._actor = actor; this._prevKeyFocusActor = null; this._focused = false; } grabFocus() { if (this._focused) return; this._prevKeyFocusActor = global.stage.get_key_focus(); global.stage.connectObject('notify::key-focus', this._focusActorChanged.bind(this), this); if (!this._actor.navigate_focus(null, St.DirectionType.TAB_FORWARD, false)) this._actor.grab_key_focus(); this._focused = true; } _focusUngrabbed() { if (!this._focused) return false; global.stage.disconnectObject(this); this._focused = false; return true; } _focusActorChanged() { let focusedActor = global.stage.get_key_focus(); if (!focusedActor || !this._actor.contains(focusedActor)) this._focusUngrabbed(); } ungrabFocus() { if (!this._focusUngrabbed()) return; if (this._prevKeyFocusActor) { global.stage.set_key_focus(this._prevKeyFocusActor); this._prevKeyFocusActor = null; } else { let focusedActor = global.stage.get_key_focus(); if (focusedActor && this._actor.contains(focusedActor)) global.stage.set_key_focus(null); } } } // NotificationPolicy: // An object that holds all bits of configurable policy related to a notification // source, such as whether to play sound or honour the critical bit. // // A notification without a policy object will inherit the default one. export const NotificationPolicy = GObject.registerClass({ GTypeFlags: GObject.TypeFlags.ABSTRACT, Properties: { 'enable': GObject.ParamSpec.boolean( 'enable', null, null, GObject.ParamFlags.READABLE, true), 'enable-sound': GObject.ParamSpec.boolean( 'enable-sound', null, null, GObject.ParamFlags.READABLE, true), 'show-banners': GObject.ParamSpec.boolean( 'show-banners', null, null, GObject.ParamFlags.READABLE, true), 'force-expanded': GObject.ParamSpec.boolean( 'force-expanded', null, null, GObject.ParamFlags.READABLE, false), 'show-in-lock-screen': GObject.ParamSpec.boolean( 'show-in-lock-screen', null, null, GObject.ParamFlags.READABLE, false), 'details-in-lock-screen': GObject.ParamSpec.boolean( 'details-in-lock-screen', null, null, GObject.ParamFlags.READABLE, false), }, }, class NotificationPolicy extends GObject.Object { /** * Create a new policy for app. * * This will be a NotificationApplicationPolicy for valid apps, * or a NotificationGenericPolicy otherwise. * * @param {Shell.App=} app * @returns {NotificationPolicy} */ static newForApp(app) { // fallback to generic policy if (!app?.get_app_info()) return new NotificationGenericPolicy(); const id = app.get_id().replace(/\.desktop$/, ''); return new NotificationApplicationPolicy(id); } // Do nothing for the default policy. These methods are only useful for the // GSettings policy. store() { } destroy() { this.run_dispose(); } get enable() { return true; } get enableSound() { return true; } get showBanners() { return true; } get forceExpanded() { return false; } get showInLockScreen() { return false; } get detailsInLockScreen() { return false; } }); export const NotificationGenericPolicy = GObject.registerClass({ }, class NotificationGenericPolicy extends NotificationPolicy { _init() { super._init(); this.id = 'generic'; this._masterSettings = new Gio.Settings({schema_id: 'org.gnome.desktop.notifications'}); this._masterSettings.connect('changed', this._changed.bind(this)); } destroy() { this._masterSettings.run_dispose(); super.destroy(); } _changed(settings, key) { if (this.constructor.find_property(key)) this.notify(key); } get showBanners() { return this._masterSettings.get_boolean('show-banners'); } get showInLockScreen() { return this._masterSettings.get_boolean('show-in-lock-screen'); } }); export const NotificationApplicationPolicy = GObject.registerClass({ }, class NotificationApplicationPolicy extends NotificationPolicy { _init(id) { super._init(); this.id = id; this._canonicalId = this._canonicalizeId(id); this._masterSettings = new Gio.Settings({schema_id: 'org.gnome.desktop.notifications'}); this._settings = new Gio.Settings({ schema_id: 'org.gnome.desktop.notifications.application', path: `/org/gnome/desktop/notifications/application/${this._canonicalId}/`, }); this._masterSettings.connect('changed', this._changed.bind(this)); this._settings.connect('changed', this._changed.bind(this)); } store() { this._settings.set_string('application-id', `${this.id}.desktop`); let apps = this._masterSettings.get_strv('application-children'); if (!apps.includes(this._canonicalId)) { apps.push(this._canonicalId); this._masterSettings.set_strv('application-children', apps); } } destroy() { this._masterSettings.run_dispose(); this._settings.run_dispose(); super.destroy(); } _changed(settings, key) { if (this.constructor.find_property(key)) this.notify(key); } _canonicalizeId(id) { // Keys are restricted to lowercase alphanumeric characters and dash, // and two dashes cannot be in succession return id.toLowerCase().replace(/[^a-z0-9-]/g, '-').replace(/--+/g, '-'); } get enable() { return this._settings.get_boolean('enable'); } get enableSound() { return this._settings.get_boolean('enable-sound-alerts'); } get showBanners() { return this._masterSettings.get_boolean('show-banners') && this._settings.get_boolean('show-banners'); } get forceExpanded() { return this._settings.get_boolean('force-expanded'); } get showInLockScreen() { return this._masterSettings.get_boolean('show-in-lock-screen') && this._settings.get_boolean('show-in-lock-screen'); } get detailsInLockScreen() { return this._settings.get_boolean('details-in-lock-screen'); } }); export const Sound = GObject.registerClass( class Sound extends GObject.Object { constructor(file, themedName) { super(); this._soundFile = file; this._soundName = themedName; } play() { const player = global.display.get_sound_player(); if (this._soundName) player.play_from_theme(this._soundName, _('Notification sound'), null); else if (this._soundFile) player.play_from_file(this._soundFile, _('Notification sound'), null); } }); export const Action = GObject.registerClass( class Action extends GObject.Object { constructor(label, callback) { super(); this._label = label; this._callback = callback; } get label() { return this._label; } activate() { this._callback(); } }); export class Notification extends GObject.Object { constructor(params) { super(params); this._actions = []; if (!this.datetime) this.datetime = GLib.DateTime.new_now_local(); // Automatically update the datetime property when the notification // is updated. this.connect('notify', (o, pspec) => { if (pspec.name === 'acknowledged') { // Don't update datetime property } else if (pspec.name === 'datetime') { if (this._updateDatetimeId) GLib.source_remove(this._updateDatetimeId); delete this._updateDatetimeId; } else if (!this._updateDatetimeId) { this._updateDatetimeId = GLib.idle_add(GLib.PRIORITY_DEFAULT, () => { delete this._updateDatetimeId; this.datetime = GLib.DateTime.new_now_local(); return GLib.SOURCE_REMOVE; }); } }); } get actions() { return this._actions; } get iconName() { if (this.gicon instanceof Gio.ThemedIcon) return this.gicon.iconName; else return null; } set iconName(iconName) { this.gicon = new Gio.ThemedIcon({name: iconName}); } get privacyScope() { return this._privacyScope; } set privacyScope(privacyScope) { if (!Object.values(PrivacyScope).includes(privacyScope)) throw new Error('out of range'); if (this._privacyScope === privacyScope) return; this._privacyScope = privacyScope; this.notify('privacy-scope'); } get urgency() { return this._urgency; } set urgency(urgency) { if (!Object.values(Urgency).includes(urgency)) throw new Error('out of range'); if (this._urgency === urgency) return; this._urgency = urgency; this.notify('urgency'); } // addAction: // @label: the label for the action's button // @callback: the callback for the action addAction(label, callback) { const action = new Action(label, () => { callback(); // We don't hide a resident notification when the user invokes one of its actions, // because it is common for such notifications to update themselves with new // information based on the action. We'd like to display the updated information // in place, rather than pop-up a new notification. if (this.resident) return; this.destroy(); }); this._actions.push(action); this.emit('action-added', action); } clearActions() { if (this._actions.length === 0) return; this._actions.forEach(action => { this.emit('action-removed', action); }); this._actions = []; } playSound() { if (!this.source.policy.enableSound) return; this.sound?.play(this.title); } activate() { this.emit('activated'); // We don't hide a resident notification when the user invokes one of its actions, // because it is common for such notifications to update themselves with new // information based on the action. We'd like to display the updated information // in place, rather than pop-up a new notification. if (this.resident) return; this.destroy(); } destroy(reason = NotificationDestroyedReason.DISMISSED) { this.emit('destroy', reason); if (this._updateDatetimeId) GLib.source_remove(this._updateDatetimeId); delete this._updateDatetimeId; this.run_dispose(); } } export const Source = GObject.registerClass({ Properties: { 'count': GObject.ParamSpec.int( 'count', null, null, GObject.ParamFlags.READABLE, 0, GLib.MAXINT32, 0), 'policy': GObject.ParamSpec.object( 'policy', null, null, GObject.ParamFlags.READWRITE, NotificationPolicy.$gtype), }, Signals: { 'destroy': {param_types: [GObject.TYPE_UINT]}, 'notification-added': {param_types: [Notification.$gtype]}, 'notification-removed': {param_types: [Notification.$gtype]}, 'notification-request-banner': {param_types: [Notification.$gtype]}, }, }, class Source extends MessageList.Source { constructor(params) { super(params); this.notifications = []; if (!this._policy) this._policy = new NotificationGenericPolicy(); } get policy() { return this._policy; } set policy(policy) { if (this._policy) this._policy.destroy(); this._policy = policy; } get count() { return this.notifications.length; } get unseenCount() { return this.notifications.filter(n => !n.acknowledged).length; } get countVisible() { return this.count > 1; } countUpdated() { this.notify('count'); } get narrowestPrivacyScope() { return this.notifications.every(n => n.privacyScope === PrivacyScope.SYSTEM) ? PrivacyScope.SYSTEM : PrivacyScope.USER; } _onNotificationDestroy(notification) { let index = this.notifications.indexOf(notification); if (index < 0) throw new Error('Notification was already removed previously'); this.notifications.splice(index, 1); this.emit('notification-removed', notification); this.countUpdated(); if (!this._inDestruction && this.notifications.length === 0) this.destroy(); } addNotification(notification) { if (this.notifications.includes(notification)) return; while (this.notifications.length >= MAX_NOTIFICATIONS_PER_SOURCE) { const [oldest] = this.notifications; oldest.destroy(NotificationDestroyedReason.EXPIRED); } notification.connect('destroy', this._onNotificationDestroy.bind(this)); notification.connect('notify::acknowledged', () => { this.countUpdated(); // If acknowledged was set to false try to show the notification again if (!notification.acknowledged) this.emit('notification-request-banner', notification); }); this.notifications.push(notification); this.emit('notification-added', notification); this.emit('notification-request-banner', notification); this.countUpdated(); } destroy(reason) { this._inDestruction = true; while (this.notifications.length > 0) { const [oldest] = this.notifications; oldest.destroy(reason); } this.emit('destroy', reason); this.policy.destroy(); this.run_dispose(); } // To be overridden by subclasses open() { } destroyNonResidentNotifications() { for (let i = this.notifications.length - 1; i >= 0; i--) { if (!this.notifications[i].resident) this.notifications[i].destroy(); } } }); SignalTracker.registerDestroyableType(Source); GObject.registerClass({ Properties: { 'source': GObject.ParamSpec.object( 'source', null, null, GObject.ParamFlags.READWRITE | GObject.ParamFlags.CONSTRUCT_ONLY, Source), 'title': GObject.ParamSpec.string( 'title', null, null, GObject.ParamFlags.READWRITE, null), 'body': GObject.ParamSpec.string( 'body', null, null, GObject.ParamFlags.READWRITE, null), 'use-body-markup': GObject.ParamSpec.boolean( 'use-body-markup', null, null, GObject.ParamFlags.READWRITE, false), 'gicon': GObject.ParamSpec.object( 'gicon', null, null, GObject.ParamFlags.READWRITE, Gio.Icon), 'icon-name': GObject.ParamSpec.string( 'icon-name', null, null, GObject.ParamFlags.READWRITE, null), 'sound': GObject.ParamSpec.object( 'sound', null, null, GObject.ParamFlags.READWRITE, Sound), 'datetime': GObject.ParamSpec.boxed( 'datetime', null, null, GObject.ParamFlags.READWRITE, GLib.DateTime), // Unfortunately we can't register new enum types in GJS // See: https://gitlab.gnome.org/GNOME/gjs/-/issues/573 'privacy-scope': GObject.ParamSpec.int( 'privacy-scope', null, null, GObject.ParamFlags.READWRITE | GObject.ParamFlags.CONSTRUCT, 0, GLib.MAXINT32, PrivacyScope.User), 'urgency': GObject.ParamSpec.int( 'urgency', null, null, GObject.ParamFlags.READWRITE | GObject.ParamFlags.CONSTRUCT, 0, GLib.MAXINT32, Urgency.NORMAL), 'acknowledged': GObject.ParamSpec.boolean( 'acknowledged', null, null, GObject.ParamFlags.READWRITE, false), 'resident': GObject.ParamSpec.boolean( 'resident', null, null, GObject.ParamFlags.READWRITE, false), 'for-feedback': GObject.ParamSpec.boolean( 'for-feedback', null, null, GObject.ParamFlags.READWRITE, false), 'is-transient': GObject.ParamSpec.boolean( 'is-transient', null, null, GObject.ParamFlags.READWRITE, false), }, Signals: { 'action-added': {param_types: [Action]}, 'action-removed': {param_types: [Action]}, 'activated': {}, 'destroy': {param_types: [GObject.TYPE_UINT]}, }, }, Notification); SignalTracker.registerDestroyableType(Notification); export const MessageTray = GObject.registerClass({ Signals: { 'queue-changed': {}, 'source-added': {param_types: [Source.$gtype]}, 'source-removed': {param_types: [Source.$gtype]}, }, }, class MessageTray extends St.Widget { _init() { super._init({ visible: false, clip_to_allocation: true, layout_manager: new Clutter.BinLayout(), }); this._presence = new GnomeSession.Presence((proxy, _error) => { this._onStatusChanged(proxy.status); }); this._busy = false; this._bannerBlocked = false; this._presence.connectSignal('StatusChanged', (proxy, senderName, [status]) => { this._onStatusChanged(status); }); let constraint = new Layout.MonitorConstraint({primary: true}); Main.layoutManager.panelBox.bind_property('visible', constraint, 'work-area', GObject.BindingFlags.SYNC_CREATE); this.add_constraint(constraint); this._bannerBin = new St.Widget({ name: 'notification-container', reactive: true, track_hover: true, y_align: Clutter.ActorAlign.START, x_align: Clutter.ActorAlign.CENTER, y_expand: true, x_expand: true, layout_manager: new Clutter.BinLayout(), }); this._bannerBin.connect('key-release-event', this._onNotificationKeyRelease.bind(this)); this._bannerBin.connect('notify::hover', this._onNotificationHoverChanged.bind(this)); this.add_child(this._bannerBin); this._notificationFocusGrabber = new FocusGrabber(this._bannerBin); this._notificationQueue = []; this._notification = null; this._banner = null; this._userActiveWhileNotificationShown = false; this.idleMonitor = global.backend.get_core_idle_monitor(); this._useLongerNotificationLeftTimeout = false; // pointerInNotification is sort of a misnomer -- it tracks whether // a message tray notification should expand. The value is // partially driven by the hover state of the notification, but has // a lot of complex state related to timeouts and the current // state of the pointer when a notification pops up. this._pointerInNotification = false; // This tracks this._bannerBin.hover and is used to fizzle // out non-changing hover notifications in onNotificationHoverChanged. this._notificationHovered = false; this._notificationState = State.HIDDEN; this._notificationTimeoutId = 0; this._notificationRemoved = false; Main.layoutManager.addChrome(this, {affectsInputRegion: false}); Main.layoutManager.trackChrome(this._bannerBin, {affectsInputRegion: true}); global.display.connect('in-fullscreen-changed', this._updateState.bind(this)); Main.sessionMode.connect('updated', this._sessionUpdated.bind(this)); Main.overview.connect('window-drag-begin', this._onDragBegin.bind(this)); Main.overview.connect('window-drag-cancelled', this._onDragEnd.bind(this)); Main.overview.connect('window-drag-end', this._onDragEnd.bind(this)); Main.overview.connect('item-drag-begin', this._onDragBegin.bind(this)); Main.overview.connect('item-drag-cancelled', this._onDragEnd.bind(this)); Main.overview.connect('item-drag-end', this._onDragEnd.bind(this)); Main.xdndHandler.connect('drag-begin', this._onDragBegin.bind(this)); Main.xdndHandler.connect('drag-end', this._onDragEnd.bind(this)); Main.wm.addKeybinding('focus-active-notification', new Gio.Settings({schema_id: SHELL_KEYBINDINGS_SCHEMA}), Meta.KeyBindingFlags.NONE, Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, this._expandActiveNotification.bind(this)); this._sources = new Set(); this._sessionUpdated(); } _sessionUpdated() { this._updateState(); } _onDragBegin() { Shell.util_set_hidden_from_pick(this, true); } _onDragEnd() { Shell.util_set_hidden_from_pick(this, false); } get bannerAlignment() { return this._bannerBin.get_x_align(); } set bannerAlignment(align) { this._bannerBin.set_x_align(align); } _onNotificationKeyRelease(actor, event) { if (event.get_key_symbol() === Clutter.KEY_Escape && event.get_state() === 0) { this._expireNotification(); return Clutter.EVENT_STOP; } return Clutter.EVENT_PROPAGATE; } _expireNotification() { this._notificationExpired = true; this._updateState(); } get queueCount() { return this._notificationQueue.length; } set bannerBlocked(v) { if (this._bannerBlocked === v) return; this._bannerBlocked = v; this._updateState(); } contains(source) { return this._sources.has(source); } add(source) { if (this.contains(source)) { log(`Trying to re-add source ${source.title}`); return; } // Register that we got a notification for this source source.policy.store(); source.policy.connect('notify::enable', () => { this._onSourceEnableChanged(source.policy, source); }); source.policy.connect('notify', this._updateState.bind(this)); this._onSourceEnableChanged(source.policy, source); } _addSource(source) { this._sources.add(source); source.connectObject( 'notification-request-banner', this._onNotificationRequestBanner.bind(this), 'notification-removed', this._onNotificationRemoved.bind(this), 'destroy', () => this._removeSource(source), this); this.emit('source-added', source); } _removeSource(source) { this._sources.delete(source); source.disconnectObject(this); this.emit('source-removed', source); } getSources() { return [...this._sources.keys()]; } _onSourceEnableChanged(policy, source) { let wasEnabled = this.contains(source); let shouldBeEnabled = policy.enable; if (wasEnabled !== shouldBeEnabled) { if (shouldBeEnabled) this._addSource(source); else this._removeSource(source); } } _onNotificationRemoved(source, notification) { if (this._notification === notification) { this._notificationRemoved = true; if (this._notificationState === State.SHOWN || this._notificationState === State.SHOWING) { this._pointerInNotification = false; this._updateNotificationTimeout(0); this._updateState(); } } else { const index = this._notificationQueue.indexOf(notification); if (index !== -1) { this._notificationQueue.splice(index, 1); this.emit('queue-changed'); } } } _onNotificationRequestBanner(_source, notification) { // We never display a banner for already acknowledged notifications if (notification.acknowledged) return; if (notification.urgency === Urgency.LOW) return; if (!notification.source.policy.showBanners && notification.urgency !== Urgency.CRITICAL) return; if (this._notification === notification) { // If a notification that is being shown is updated, we update // how it is shown and extend the time until it auto-hides. // If a new notification is updated while it is being hidden, // we stop hiding it and show it again. this._updateShowingNotification(); } else if (!this._notificationQueue.includes(notification)) { // If the queue is "full", we skip banner mode and just show a small // indicator in the panel; however do make an exception for CRITICAL // notifications, as only banner mode allows expansion. let bannerCount = this._notification ? 1 : 0; let full = this.queueCount + bannerCount >= MAX_NOTIFICATIONS_IN_QUEUE; if (!full || notification.urgency === Urgency.CRITICAL) { this._notificationQueue.push(notification); this._notificationQueue.sort( (n1, n2) => n2.urgency - n1.urgency); this.emit('queue-changed'); } } this._updateState(); } _resetNotificationLeftTimeout() { this._useLongerNotificationLeftTimeout = false; if (this._notificationLeftTimeoutId) { GLib.source_remove(this._notificationLeftTimeoutId); this._notificationLeftTimeoutId = 0; this._notificationLeftMouseX = -1; this._notificationLeftMouseY = -1; } } _onNotificationHoverChanged() { if (this._bannerBin.hover === this._notificationHovered) return; this._notificationHovered = this._bannerBin.hover; if (this._notificationHovered) { this._resetNotificationLeftTimeout(); if (this._showNotificationMouseX >= 0) { let actorAtShowNotificationPosition = global.stage.get_actor_at_pos(Clutter.PickMode.ALL, this._showNotificationMouseX, this._showNotificationMouseY); this._showNotificationMouseX = -1; this._showNotificationMouseY = -1; // Don't set this._pointerInNotification to true if the pointer was initially in the area where the notification // popped up. That way we will not be expanding notifications that happen to pop up over the pointer // automatically. Instead, the user is able to expand the notification by mousing away from it and then // mousing back in. Because this is an expected action, we set the boolean flag that indicates that a longer // timeout should be used before popping down the notification. if (this._bannerBin.contains(actorAtShowNotificationPosition)) { this._useLongerNotificationLeftTimeout = true; return; } } this._pointerInNotification = true; this._updateState(); } else { // We record the position of the mouse the moment it leaves the tray. These coordinates are used in // this._onNotificationLeftTimeout() to determine if the mouse has moved far enough during the initial timeout for us // to consider that the user intended to leave the tray and therefore hide the tray. If the mouse is still // close to its previous position, we extend the timeout once. let [x, y] = global.get_pointer(); this._notificationLeftMouseX = x; this._notificationLeftMouseY = y; // We wait just a little before hiding the message tray in case the user quickly moves the mouse back into it. // We wait for a longer period if the notification popped up where the mouse pointer was already positioned. // That gives the user more time to mouse away from the notification and mouse back in in order to expand it. let timeout = this._useLongerNotificationLeftTimeout ? LONGER_HIDE_TIMEOUT : HIDE_TIMEOUT; this._notificationLeftTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, timeout, this._onNotificationLeftTimeout.bind(this)); GLib.Source.set_name_by_id(this._notificationLeftTimeoutId, '[gnome-shell] this._onNotificationLeftTimeout'); } } _onStatusChanged(status) { if (status === GnomeSession.PresenceStatus.BUSY) { // remove notification and allow the summary to be closed now this._updateNotificationTimeout(0); this._busy = true; } else if (status !== GnomeSession.PresenceStatus.IDLE) { // We preserve the previous value of this._busy if the status turns to IDLE // so that we don't start showing notifications queued during the BUSY state // as the screensaver gets activated. this._busy = false; } this._updateState(); } _onNotificationLeftTimeout() { let [x, y] = global.get_pointer(); // We extend the timeout once if the mouse moved no further than MOUSE_LEFT_ACTOR_THRESHOLD to either side. if (this._notificationLeftMouseX > -1 && y < this._notificationLeftMouseY + MOUSE_LEFT_ACTOR_THRESHOLD && y > this._notificationLeftMouseY - MOUSE_LEFT_ACTOR_THRESHOLD && x < this._notificationLeftMouseX + MOUSE_LEFT_ACTOR_THRESHOLD && x > this._notificationLeftMouseX - MOUSE_LEFT_ACTOR_THRESHOLD) { this._notificationLeftMouseX = -1; this._notificationLeftTimeoutId = GLib.timeout_add( GLib.PRIORITY_DEFAULT, LONGER_HIDE_TIMEOUT, this._onNotificationLeftTimeout.bind(this)); GLib.Source.set_name_by_id(this._notificationLeftTimeoutId, '[gnome-shell] this._onNotificationLeftTimeout'); } else { this._notificationLeftTimeoutId = 0; this._useLongerNotificationLeftTimeout = false; this._pointerInNotification = false; this._updateNotificationTimeout(0); this._updateState(); } return GLib.SOURCE_REMOVE; } // All of the logic for what happens when occurs here; the various // event handlers merely update variables such as // 'this._pointerInNotification', 'this._traySummoned', etc, and // _updateState() figures out what (if anything) needs to be done // at the present time. _updateState() { let hasMonitor = Main.layoutManager.primaryMonitor != null; this.visible = !this._bannerBlocked && hasMonitor && this._banner != null; if (this._bannerBlocked || !hasMonitor) return; // If our state changes caused _updateState to be called, // just exit now to prevent reentrancy issues. if (this._updatingState) return; this._updatingState = true; // Filter out acknowledged notifications. let changed = false; this._notificationQueue = this._notificationQueue.filter(n => { changed ||= n.acknowledged; return !n.acknowledged; }); if (changed) this.emit('queue-changed'); let hasNotifications = Main.sessionMode.hasNotifications; if (this._notificationState === State.HIDDEN) { let nextNotification = this._notificationQueue[0] || null; if (hasNotifications && nextNotification) { let limited = this._busy || Main.layoutManager.primaryMonitor.inFullscreen; let showNextNotification = !limited || nextNotification.forFeedback || nextNotification.urgency === Urgency.CRITICAL; if (showNextNotification) this._showNotification(); } } else if (this._notificationState === State.SHOWING || this._notificationState === State.SHOWN) { let expired = (this._userActiveWhileNotificationShown && this._notificationTimeoutId === 0 && this._notification.urgency !== Urgency.CRITICAL && !this._pointerInNotification) || this._notificationExpired; let mustClose = this._notificationRemoved || !hasNotifications || expired; if (mustClose) { let animate = hasNotifications && !this._notificationRemoved; this._hideNotification(animate); } else if (this._notificationState === State.SHOWN && this._pointerInNotification) { if (!this._banner.expanded) this._expandBanner(false); else this._ensureBannerFocused(); } } this._updatingState = false; // Clean transient variables that are used to communicate actions // to updateState() this._notificationExpired = false; } _onIdleMonitorBecameActive() { this._userActiveWhileNotificationShown = true; this._updateNotificationTimeout(2000); this._updateState(); } _showNotification() { this._notification = this._notificationQueue.shift(); this.emit('queue-changed'); this._userActiveWhileNotificationShown = this.idleMonitor.get_idletime() <= IDLE_TIME; if (!this._userActiveWhileNotificationShown) { // If the user isn't active, set up a watch to let us know // when the user becomes active. this.idleMonitor.add_user_active_watch(this._onIdleMonitorBecameActive.bind(this)); } this._banner = new Calendar.NotificationMessage(this._notification); this._banner.can_focus = false; this._banner._header.expandButton.visible = false; this._banner.add_style_class_name('notification-banner'); this._bannerBin.add_child(this._banner); this._bannerBin.opacity = 0; this._bannerBin.y = -this._banner.height; this.show(); Meta.disable_unredirect_for_display(global.display); this._updateShowingNotification(); let [x, y] = global.get_pointer(); // We save the position of the mouse at the time when we started showing the notification // in order to determine if the notification popped up under it. We make that check if // the user starts moving the mouse and _onNotificationHoverChanged() gets called. We don't // expand the notification if it just happened to pop up under the mouse unless the user // explicitly mouses away from it and then mouses back in. this._showNotificationMouseX = x; this._showNotificationMouseY = y; // We save the coordinates of the mouse at the time when we started showing the notification // and then we update it in _notificationTimeout(). We don't pop down the notification if // the mouse is moving towards it or within it. this._lastSeenMouseX = x; this._lastSeenMouseY = y; this._resetNotificationLeftTimeout(); } _updateShowingNotification() { this._notification.acknowledged = true; this._notification.playSound(); // We auto-expand notifications with CRITICAL urgency, or for which the relevant setting // is on in the control center. if (this._notification.urgency === Urgency.CRITICAL || this._notification.source.policy.forceExpanded) this._expandBanner(true); // We tween all notifications to full opacity. This ensures that both new notifications and // notifications that might have been in the process of hiding get full opacity. // // We tween any notification showing in the banner mode to the appropriate height // (which is banner height or expanded height, depending on the notification state) // This ensures that both new notifications and notifications in the banner mode that might // have been in the process of hiding are shown with the correct height. // // We use this._showNotificationCompleted() onComplete callback to extend the time the updated // notification is being shown. this._notificationState = State.SHOWING; this._bannerBin.remove_all_transitions(); this._bannerBin.ease({ opacity: 255, duration: ANIMATION_TIME, mode: Clutter.AnimationMode.LINEAR, }); this._bannerBin.ease({ y: 0, duration: ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_BACK, onComplete: () => { this._notificationState = State.SHOWN; this._showNotificationCompleted(); this._updateState(); }, }); } _showNotificationCompleted() { if (this._notification.urgency !== Urgency.CRITICAL) this._updateNotificationTimeout(NOTIFICATION_TIMEOUT); } _updateNotificationTimeout(timeout) { if (this._notificationTimeoutId) { GLib.source_remove(this._notificationTimeoutId); this._notificationTimeoutId = 0; } if (timeout > 0) { this._notificationTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, timeout, this._notificationTimeout.bind(this)); GLib.Source.set_name_by_id(this._notificationTimeoutId, '[gnome-shell] this._notificationTimeout'); } } _notificationTimeout() { let [x, y] = global.get_pointer(); if (y < this._lastSeenMouseY - 10 && !this._notificationHovered) { // The mouse is moving towards the notification, so don't // hide it yet. (We just create a new timeout (and destroy // the old one) each time because the bookkeeping is // simpler.) this._updateNotificationTimeout(1000); } else if (this._useLongerNotificationLeftTimeout && !this._notificationLeftTimeoutId && (x !== this._lastSeenMouseX || y !== this._lastSeenMouseY)) { // Refresh the timeout if the notification originally // popped up under the pointer, and the pointer is hovering // inside it. this._updateNotificationTimeout(1000); } else { this._notificationTimeoutId = 0; this._updateState(); } this._lastSeenMouseX = x; this._lastSeenMouseY = y; return GLib.SOURCE_REMOVE; } _hideNotification(animate) { this._notificationFocusGrabber.ungrabFocus(); this._banner.disconnectObject(this); this._resetNotificationLeftTimeout(); this._bannerBin.remove_all_transitions(); const duration = animate ? ANIMATION_TIME : 0; this._notificationState = State.HIDING; this._bannerBin.ease({ opacity: 0, duration, mode: Clutter.AnimationMode.EASE_OUT_BACK, }); this._bannerBin.ease({ y: -this._bannerBin.height, duration, mode: Clutter.AnimationMode.EASE_OUT_BACK, onComplete: () => { this._notificationState = State.HIDDEN; this._hideNotificationCompleted(); this._updateState(); }, }); } _hideNotificationCompleted() { let notification = this._notification; this._notification = null; if (!this._notificationRemoved && notification.isTransient) notification.destroy(NotificationDestroyedReason.EXPIRED); this._pointerInNotification = false; this._notificationRemoved = false; Meta.enable_unredirect_for_display(global.display); this._banner.destroy(); this._banner = null; this.hide(); } _expandActiveNotification() { if (!this._banner) return; this._expandBanner(false); } _expandBanner(autoExpanding) { // Don't animate changes in notifications that are auto-expanding. this._banner.expand(!autoExpanding); // Don't focus notifications that are auto-expanding. if (!autoExpanding) this._ensureBannerFocused(); } _ensureBannerFocused() { this._notificationFocusGrabber.grabFocus(); } }); let systemNotificationSource = null; /** * The {Source} that should be used to send system notifications. * * @returns {Source} */ export function getSystemSource() { if (!systemNotificationSource) { systemNotificationSource = new Source({ title: _('System'), iconName: 'emblem-system-symbolic', }); systemNotificationSource.connect('destroy', () => { systemNotificationSource = null; }); Main.messageTray.add(systemNotificationSource); } return systemNotificationSource; } 070701000001C8000081A40000000000000000000000016712993F000020B5000000000000000000000000000000000000002600000000gnome-shell-47.1/js/ui/modalDialog.jsimport Atk from 'gi://Atk'; import Clutter from 'gi://Clutter'; import GObject from 'gi://GObject'; import Shell from 'gi://Shell'; import St from 'gi://St'; import * as Dialog from './dialog.js'; import * as Layout from './layout.js'; import * as Lightbox from './lightbox.js'; import * as Main from './main.js'; import * as Params from '../misc/params.js'; const OPEN_AND_CLOSE_TIME = 100; const FADE_OUT_DIALOG_TIME = 1000; /** @enum {number} */ export const State = { OPENED: 0, CLOSED: 1, OPENING: 2, CLOSING: 3, FADED_OUT: 4, }; export const ModalDialog = GObject.registerClass({ Properties: { 'state': GObject.ParamSpec.int( 'state', null, null, GObject.ParamFlags.READABLE, Math.min(...Object.values(State)), Math.max(...Object.values(State)), State.CLOSED), }, Signals: {'opened': {}, 'closed': {}}, }, class ModalDialog extends St.Widget { _init(params) { super._init({ visible: false, reactive: true, x: 0, y: 0, accessible_role: Atk.Role.DIALOG, }); params = Params.parse(params, { shellReactive: false, styleClass: null, actionMode: Shell.ActionMode.SYSTEM_MODAL, shouldFadeIn: true, shouldFadeOut: true, destroyOnClose: true, }); this._state = State.CLOSED; this._hasModal = false; this._actionMode = params.actionMode; this._shellReactive = params.shellReactive; this._shouldFadeIn = params.shouldFadeIn; this._shouldFadeOut = params.shouldFadeOut; this._destroyOnClose = params.destroyOnClose; Main.layoutManager.modalDialogGroup.add_child(this); const constraint = new Clutter.BindConstraint({ source: global.stage, coordinate: Clutter.BindCoordinate.ALL, }); this.add_constraint(constraint); this.backgroundStack = new St.Widget({ layout_manager: new Clutter.BinLayout(), x_expand: true, y_expand: true, }); this._backgroundBin = new St.Bin({child: this.backgroundStack}); this._monitorConstraint = new Layout.MonitorConstraint(); this._backgroundBin.add_constraint(this._monitorConstraint); this.add_child(this._backgroundBin); this.dialogLayout = new Dialog.Dialog(this.backgroundStack, params.styleClass); this.contentLayout = this.dialogLayout.contentLayout; this.buttonLayout = this.dialogLayout.buttonLayout; if (!this._shellReactive) { this._lightbox = new Lightbox.Lightbox(this, { inhibitEvents: true, radialEffect: true, }); this._lightbox.highlight(this._backgroundBin); this._eventBlocker = new Clutter.Actor({reactive: true}); this.backgroundStack.add_child(this._eventBlocker); } global.focus_manager.add_group(this.dialogLayout); this._initialKeyFocus = null; this._initialKeyFocusDestroyId = 0; this._savedKeyFocus = null; } get state() { return this._state; } _setState(state) { if (this._state === state) return; this._state = state; this.notify('state'); } vfunc_key_press_event(event) { if (global.focus_manager.navigate_from_event(event)) return Clutter.EVENT_STOP; return Clutter.EVENT_PROPAGATE; } vfunc_captured_event(event) { if (Main.keyboard.maybeHandleEvent(event)) return Clutter.EVENT_STOP; return Clutter.EVENT_PROPAGATE; } clearButtons() { this.dialogLayout.clearButtons(); } setButtons(buttons) { this.clearButtons(); for (let buttonInfo of buttons) this.addButton(buttonInfo); } addButton(buttonInfo) { return this.dialogLayout.addButton(buttonInfo); } _fadeOpen() { this._monitorConstraint.index = global.display.get_current_monitor(); this._setState(State.OPENING); this.dialogLayout.opacity = 255; if (this._lightbox) this._lightbox.lightOn(); this.opacity = 0; this.show(); this.ease({ opacity: 255, duration: this._shouldFadeIn ? OPEN_AND_CLOSE_TIME : 0, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => { this._setState(State.OPENED); this.emit('opened'); }, }); } setInitialKeyFocus(actor) { this._initialKeyFocus?.disconnectObject(this); this._initialKeyFocus = actor; actor.connectObject('destroy', () => (this._initialKeyFocus = null), this); } open() { if (this.state === State.OPENED || this.state === State.OPENING) return true; if (!this.pushModal()) return false; this._fadeOpen(); return true; } _closeComplete() { this._setState(State.CLOSED); this.hide(); this.emit('closed'); if (this._destroyOnClose) this.destroy(); } close() { if (this.state === State.CLOSED || this.state === State.CLOSING) return; this._setState(State.CLOSING); this.popModal(); this._savedKeyFocus = null; if (this._shouldFadeOut) { this.ease({ opacity: 0, duration: OPEN_AND_CLOSE_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => this._closeComplete(), }); } else { this._closeComplete(); } } // Drop modal status without closing the dialog; this makes the // dialog insensitive as well, so it needs to be followed shortly // by either a close() or a pushModal() popModal() { if (!this._hasModal) return; let focus = global.stage.key_focus; if (focus && this.contains(focus)) this._savedKeyFocus = focus; else this._savedKeyFocus = null; Main.popModal(this._grab); this._grab = null; this._hasModal = false; if (!this._shellReactive) this.backgroundStack.set_child_above_sibling(this._eventBlocker, null); } pushModal() { if (this._hasModal) return true; const grab = Main.pushModal(this, {actionMode: this._actionMode}); if (grab.get_seat_state() !== Clutter.GrabState.ALL) { Main.popModal(grab); return false; } this._grab = grab; Main.layoutManager.emit('system-modal-opened'); this._hasModal = true; if (this._savedKeyFocus) { this._savedKeyFocus.grab_key_focus(); this._savedKeyFocus = null; } else { let focus = this._initialKeyFocus || this.dialogLayout.initialKeyFocus; focus.grab_key_focus(); } if (!this._shellReactive) this.backgroundStack.set_child_below_sibling(this._eventBlocker, null); return true; } // This method is like close, but fades the dialog out much slower, // and leaves the lightbox in place. Once in the faded out state, // the dialog can be brought back by an open call, or the lightbox // can be dismissed by a close call. // // The main point of this method is to give some indication to the user // that the dialog response has been acknowledged but will take a few // moments before being processed. // e.g., if a user clicked "Log Out" then the dialog should go away // immediately, but the lightbox should remain until the logout is // complete. _fadeOutDialog() { if (this.state === State.CLOSED || this.state === State.CLOSING) return; if (this.state === State.FADED_OUT) return; this.popModal(); this.dialogLayout.ease({ opacity: 0, duration: FADE_OUT_DIALOG_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => this._setState(State.FADED_OUT), }); } }); 070701000001C9000081A40000000000000000000000016712993F00002428000000000000000000000000000000000000002000000000gnome-shell-47.1/js/ui/mpris.jsimport Gio from 'gi://Gio'; import GObject from 'gi://GObject'; import Shell from 'gi://Shell'; import * as Signals from '../misc/signals.js'; import * as Main from './main.js'; import * as MessageList from './messageList.js'; import {loadInterfaceXML} from '../misc/fileUtils.js'; const DBusIface = loadInterfaceXML('org.freedesktop.DBus'); const DBusProxy = Gio.DBusProxy.makeProxyWrapper(DBusIface); const MprisIface = loadInterfaceXML('org.mpris.MediaPlayer2'); const MprisProxy = Gio.DBusProxy.makeProxyWrapper(MprisIface); const MprisPlayerIface = loadInterfaceXML('org.mpris.MediaPlayer2.Player'); const MprisPlayerProxy = Gio.DBusProxy.makeProxyWrapper(MprisPlayerIface); const MPRIS_PLAYER_PREFIX = 'org.mpris.MediaPlayer2.'; export const MediaMessage = GObject.registerClass( class MediaMessage extends MessageList.Message { constructor(player) { super(player.source); this._player = player; this.add_style_class_name('media-message'); this._prevButton = this.addMediaControl('media-skip-backward-symbolic', () => { this._player.previous(); }); this._playPauseButton = this.addMediaControl('', () => { this._player.playPause(); }); this._nextButton = this.addMediaControl('media-skip-forward-symbolic', () => { this._player.next(); }); this._player.connectObject( 'changed', this._update.bind(this), 'closed', this.close.bind(this), this); this._update(); } vfunc_clicked() { this._player.raise(); Main.panel.closeCalendar(); } _updateNavButton(button, sensitive) { button.reactive = sensitive; } _update() { let icon; if (this._player.trackCoverUrl) { const file = Gio.File.new_for_uri(this._player.trackCoverUrl); icon = new Gio.FileIcon({file}); } else { icon = new Gio.ThemedIcon({name: 'audio-x-generic-symbolic'}); } this.set({ title: this._player.trackTitle, body: this._player.trackArtists.join(', '), icon, }); let isPlaying = this._player.status === 'Playing'; let iconName = isPlaying ? 'media-playback-pause-symbolic' : 'media-playback-start-symbolic'; this._playPauseButton.child.icon_name = iconName; this._updateNavButton(this._prevButton, this._player.canGoPrevious); this._updateNavButton(this._nextButton, this._player.canGoNext); } }); export class MprisPlayer extends Signals.EventEmitter { constructor(busName) { super(); this._mprisProxy = new MprisProxy(Gio.DBus.session, busName, '/org/mpris/MediaPlayer2', this._onMprisProxyReady.bind(this)); this._playerProxy = new MprisPlayerProxy(Gio.DBus.session, busName, '/org/mpris/MediaPlayer2', this._onPlayerProxyReady.bind(this)); this._visible = false; this._trackArtists = []; this._trackTitle = ''; this._trackCoverUrl = ''; this._busName = busName; this.source = new MessageList.Source(); } get status() { return this._playerProxy.PlaybackStatus; } get trackArtists() { return this._trackArtists; } get trackTitle() { return this._trackTitle; } get trackCoverUrl() { return this._trackCoverUrl; } get app() { return this._app; } playPause() { this._playerProxy.PlayPauseAsync().catch(logError); } get canGoNext() { return this._playerProxy.CanGoNext; } next() { this._playerProxy.NextAsync().catch(logError); } get canGoPrevious() { return this._playerProxy.CanGoPrevious; } previous() { this._playerProxy.PreviousAsync().catch(logError); } raise() { // The remote Raise() method may run into focus stealing prevention, // so prefer activating the app via .desktop file if possible if (this._app) this._app.activate(); else if (this._mprisProxy.CanRaise) this._mprisProxy.RaiseAsync().catch(logError); } _close() { this._mprisProxy.disconnectObject(this); this._mprisProxy = null; this._playerProxy.disconnectObject(this); this._playerProxy = null; this.emit('closed'); } _onMprisProxyReady() { this._mprisProxy.connectObject('notify::g-name-owner', () => { if (!this._mprisProxy.g_name_owner) this._close(); }, this); // It is possible for the bus to disappear before the previous signal // is connected, so we must ensure that the bus still exists at this // point. if (!this._mprisProxy.g_name_owner) this._close(); } _onPlayerProxyReady() { this._playerProxy.connectObject( 'g-properties-changed', () => this._updateState(), this); this._updateState(); } _updateState() { let metadata = {}; for (let prop in this._playerProxy.Metadata) metadata[prop] = this._playerProxy.Metadata[prop].deepUnpack(); // Validate according to the spec; some clients send buggy metadata: // https://www.freedesktop.org/wiki/Specifications/mpris-spec/metadata this._trackArtists = metadata['xesam:artist']; if (!Array.isArray(this._trackArtists) || !this._trackArtists.every(artist => typeof artist === 'string')) { if (typeof this._trackArtists !== 'undefined') { log(`Received faulty track artist metadata from ${ this._busName}; expected an array of strings, got ${ this._trackArtists} (${typeof this._trackArtists})`); } this._trackArtists = [_('Unknown artist')]; } this._trackTitle = metadata['xesam:title']; if (typeof this._trackTitle !== 'string') { if (typeof this._trackTitle !== 'undefined') { log(`Received faulty track title metadata from ${ this._busName}; expected a string, got ${ this._trackTitle} (${typeof this._trackTitle})`); } this._trackTitle = _('Unknown title'); } this._trackCoverUrl = metadata['mpris:artUrl']; if (typeof this._trackCoverUrl !== 'string') { if (typeof this._trackCoverUrl !== 'undefined') { log(`Received faulty track cover art metadata from ${ this._busName}; expected a string, got ${ this._trackCoverUrl} (${typeof this._trackCoverUrl})`); } this._trackCoverUrl = ''; } if (this._mprisProxy.DesktopEntry) { const desktopId = `${this._mprisProxy.DesktopEntry}.desktop`; this._app = Shell.AppSystem.get_default().lookup_app(desktopId); } else { this._app = null; } this.source.set({ title: this._app?.get_name() ?? this._mprisProxy.Identity, icon: this._app?.get_icon() ?? null, }); this.emit('changed'); let visible = this._playerProxy.CanPlay; if (this._visible !== visible) { this._visible = visible; if (visible) this.emit('show'); else this.emit('hide'); } } } export const MediaSection = GObject.registerClass( class MediaSection extends MessageList.MessageListSection { _init() { super._init(); this._players = new Map(); this._proxy = new DBusProxy(Gio.DBus.session, 'org.freedesktop.DBus', '/org/freedesktop/DBus', this._onProxyReady.bind(this)); } get allowed() { return !Main.sessionMode.isGreeter; } _addPlayer(busName) { if (this._players.get(busName)) return; let player = new MprisPlayer(busName); let message = null; player.connect('closed', () => { this._players.delete(busName); }); player.connect('show', () => { message = new MediaMessage(player); this.addMessage(message, true); }); player.connect('hide', () => { this.removeMessage(message, true); message = null; }); this._players.set(busName, player); } async _onProxyReady() { const [names] = await this._proxy.ListNamesAsync(); names.forEach(name => { if (!name.startsWith(MPRIS_PLAYER_PREFIX)) return; this._addPlayer(name); }); this._proxy.connectSignal('NameOwnerChanged', this._onNameOwnerChanged.bind(this)); } _onNameOwnerChanged(proxy, sender, [name, oldOwner, newOwner]) { if (!name.startsWith(MPRIS_PLAYER_PREFIX)) return; if (newOwner && !oldOwner) this._addPlayer(name); } }); 070701000001CA000081A40000000000000000000000016712993F000057BF000000000000000000000000000000000000002D00000000gnome-shell-47.1/js/ui/notificationDaemon.jsimport GdkPixbuf from 'gi://GdkPixbuf'; import Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import Shell from 'gi://Shell'; import * as Config from '../misc/config.js'; import * as Main from './main.js'; import * as MessageTray from './messageTray.js'; import {loadInterfaceXML} from '../misc/fileUtils.js'; import {NotificationErrors, NotificationError} from '../misc/dbusErrors.js'; const FdoNotificationsIface = loadInterfaceXML('org.freedesktop.Notifications'); /** @enum {number} */ const NotificationClosedReason = { EXPIRED: 1, DISMISSED: 2, APP_CLOSED: 3, UNDEFINED: 4, }; /** @enum {number} */ const Urgency = { LOW: 0, NORMAL: 1, CRITICAL: 2, }; class FdoNotificationDaemon { constructor() { this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(FdoNotificationsIface, this); this._dbusImpl.export(Gio.DBus.session, '/org/freedesktop/Notifications'); this._sourcesForApp = new Map(); this._sourceForPidAndName = new Map(); this._notifications = new Map(); this._nextNotificationId = 1; } _imageForNotificationData(hints) { if (hints['image-data']) { const [ width, height, rowStride, hasAlpha, bitsPerSample, nChannels_, data, ] = hints['image-data']; return Shell.util_create_pixbuf_from_data(data, GdkPixbuf.Colorspace.RGB, hasAlpha, bitsPerSample, width, height, rowStride); } else if (hints['image-path']) { return this._iconForNotificationData(hints['image-path']); } return null; } _iconForNotificationData(icon) { if (icon) { if (icon.startsWith('file://')) return new Gio.FileIcon({file: Gio.File.new_for_uri(icon)}); else if (icon.startsWith('/')) return new Gio.FileIcon({file: Gio.File.new_for_path(icon)}); else return new Gio.ThemedIcon({name: icon}); } return null; } _getApp(pid, appId, appName) { const appSys = Shell.AppSystem.get_default(); let app; app = Shell.WindowTracker.get_default().get_app_from_pid(pid); if (!app && appId) app = appSys.lookup_app(`${appId}.desktop`); if (!app) app = appSys.lookup_app(`${appName}.desktop`); return app; } // Returns the source associated with an app. // // If no existing source is found a new one is created. _getSourceForApp(sender, app) { let source = this._sourcesForApp.get(app); if (source) return source; source = new FdoNotificationDaemonSource(sender, app); if (app) { this._sourcesForApp.set(app, source); source.connect('destroy', () => { this._sourcesForApp.delete(app); }); } Main.messageTray.add(source); return source; } // Returns the source associated with a pid and the app name. // // If no existing source is found, a new one is created. _getSourceForPidAndName(sender, pid, appName) { const key = `${pid}${appName}`; let source = this._sourceForPidAndName.get(key); if (source) return source; source = new FdoNotificationDaemonSource(sender, null); // Only check whether we have a PID since it's enough to identify // uniquely an app and "" is a valid app name. if (pid) { this._sourceForPidAndName.set(key, source); source.connect('destroy', () => { this._sourceForPidAndName.delete(key); }); } Main.messageTray.add(source); return source; } NotifyAsync(params, invocation) { let [appName, replacesId, appIcon, summary, body, actions, hints, timeout_] = params; let id; for (let hint in hints) { // unpack the variants hints[hint] = hints[hint].deepUnpack(); } hints = {urgency: Urgency.NORMAL, ...hints}; // Be compatible with the various hints for image data and image path // 'image-data' and 'image-path' are the latest name of these hints, introduced in 1.2 if (!hints['image-path'] && hints['image_path']) hints['image-path'] = hints['image_path']; // version 1.1 of the spec if (!hints['image-data']) { if (hints['image_data']) hints['image-data'] = hints['image_data']; // version 1.1 of the spec else if (hints['icon_data'] && !hints['image-path']) // early versions of the spec; 'icon_data' should only be used if 'image-path' is not available hints['image-data'] = hints['icon_data']; } let source, notification; if (replacesId !== 0 && this._notifications.has(replacesId)) { notification = this._notifications.get(replacesId); source = notification.source; id = replacesId; } else { const sender = hints['x-shell-sender']; const pid = hints['x-shell-sender-pid']; const appId = hints['desktop-entry']; const app = this._getApp(pid, appId, appName); id = this._nextNotificationId++; source = app ? this._getSourceForApp(sender, app) : this._getSourceForPidAndName(sender, pid, appName); notification = new MessageTray.Notification({source}); this._notifications.set(id, notification); notification.connect('destroy', (n, reason) => { this._notifications.delete(id); let notificationClosedReason; switch (reason) { case MessageTray.NotificationDestroyedReason.EXPIRED: notificationClosedReason = NotificationClosedReason.EXPIRED; break; case MessageTray.NotificationDestroyedReason.DISMISSED: notificationClosedReason = NotificationClosedReason.DISMISSED; break; case MessageTray.NotificationDestroyedReason.SOURCE_CLOSED: notificationClosedReason = NotificationClosedReason.APP_CLOSED; break; } this._emitNotificationClosed(id, notificationClosedReason); }); } const gicon = this._imageForNotificationData(hints); const soundFile = 'sound-file' in hints ? Gio.File.new_for_path(hints['sound-file']) : null; notification.set({ title: summary, body, gicon, useBodyMarkup: true, sound: new MessageTray.Sound(soundFile, hints['sound-name']), acknowledged: false, }); notification.clearActions(); let hasDefaultAction = false; if (actions.length) { for (let i = 0; i < actions.length - 1; i += 2) { let [actionId, label] = [actions[i], actions[i + 1]]; if (actionId === 'default') { hasDefaultAction = true; } else { notification.addAction(label, () => { this._emitActivationToken(source, id); this._emitActionInvoked(id, actionId); }); } } } if (hasDefaultAction) { notification.connect('activated', () => { this._emitActivationToken(source, id); this._emitActionInvoked(id, 'default'); }); } else { notification.connect('activated', () => { source.open(); }); } switch (hints.urgency) { case Urgency.LOW: notification.urgency = MessageTray.Urgency.LOW; break; case Urgency.NORMAL: notification.urgency = MessageTray.Urgency.NORMAL; break; case Urgency.CRITICAL: notification.urgency = MessageTray.Urgency.CRITICAL; break; } notification.resident = !!hints.resident; // 'transient' is a reserved keyword in JS, so we have to retrieve the value // of the 'transient' hint with hints['transient'] rather than hints.transient notification.isTransient = !!hints['transient']; let privacyScope = hints['x-gnome-privacy-scope'] || 'user'; notification.privacyScope = privacyScope === 'system' ? MessageTray.PrivacyScope.SYSTEM : MessageTray.PrivacyScope.USER; // Only fallback to 'app-icon' when the source doesn't have a valid app const sourceGIcon = source.app ? null : this._iconForNotificationData(appIcon); source.processNotification(notification, appName, sourceGIcon); return invocation.return_value(GLib.Variant.new('(u)', [id])); } CloseNotification(id) { const notification = this._notifications.get(id); notification?.destroy(MessageTray.NotificationDestroyedReason.SOURCE_CLOSED); } GetCapabilities() { return [ 'actions', // 'action-icons', 'body', // 'body-hyperlinks', // 'body-images', 'body-markup', // 'icon-multi', 'icon-static', 'persistence', 'sound', ]; } GetServerInformation() { return [ Config.PACKAGE_NAME, 'GNOME', Config.PACKAGE_VERSION, '1.2', ]; } _emitNotificationClosed(id, reason) { this._dbusImpl.emit_signal('NotificationClosed', GLib.Variant.new('(uu)', [id, reason])); } _emitActionInvoked(id, action) { this._dbusImpl.emit_signal('ActionInvoked', GLib.Variant.new('(us)', [id, action])); } _emitActivationToken(source, id) { const context = global.create_app_launch_context(0, -1); const info = source.app?.get_app_info(); if (info) { const token = context.get_startup_notify_id(info, []); this._dbusImpl.emit_signal('ActivationToken', GLib.Variant.new('(us)', [id, token])); } } } export const FdoNotificationDaemonSource = GObject.registerClass( class FdoNotificationDaemonSource extends MessageTray.Source { constructor(sender, app) { super({ policy: MessageTray.NotificationPolicy.newForApp(app), }); this.app = app; this._appName = null; this._appIcon = null; if (sender) { this._nameWatcherId = Gio.DBus.session.watch_name(sender, Gio.BusNameWatcherFlags.NONE, null, this._onNameVanished.bind(this)); } else { this._nameWatcherId = 0; } } _onNameVanished() { // Destroy the notification source when its sender is removed from DBus. // Only do so if this.app is set to avoid removing "notify-send" sources, senders // of which аre removed from DBus immediately. // Sender being removed from DBus would normally result in a tray icon being removed, // so allow the code path that handles the tray icon being removed to handle that case. if (this.app) this.destroy(); } processNotification(notification, appName, appIcon) { if (!this.app && appName) { this._appName = appName; this.notify('title'); } if (!this.app && appIcon) { this._appIcon = appIcon; this.notify('icon'); } let tracker = Shell.WindowTracker.get_default(); // Acknowledge notifications that are resident and their app has the // current focus so that we don't show a banner. if (notification.resident && this.app && tracker.focus_app === this.app) notification.acknowledged = true; this.addNotification(notification); } open() { this.openApp(); this.destroyNonResidentNotifications(); } openApp() { if (this.app == null) return; this.app.activate(); Main.overview.hide(); Main.panel.closeCalendar(); } destroy() { if (this._nameWatcherId) { Gio.DBus.session.unwatch_name(this._nameWatcherId); this._nameWatcherId = 0; } super.destroy(); } get title() { return this.app?.get_name() ?? this._appName; } get icon() { return this.app?.get_icon() ?? this._appIcon; } }); const PRIORITY_URGENCY_MAP = { low: MessageTray.Urgency.LOW, normal: MessageTray.Urgency.NORMAL, high: MessageTray.Urgency.HIGH, urgent: MessageTray.Urgency.CRITICAL, }; const GtkNotificationDaemonNotification = GObject.registerClass( class GtkNotificationDaemonNotification extends MessageTray.Notification { constructor(source, id, notification) { super({source}); this._serialized = GLib.Variant.new('a{sv}', notification); this.id = id; const { title, body, icon: gicon, urgent, priority, buttons, 'default-action': defaultAction, 'default-action-target': defaultActionTarget, timestamp: time, } = notification; if (priority) { let urgency = PRIORITY_URGENCY_MAP[priority.unpack()]; this.urgency = urgency !== undefined ? urgency : MessageTray.Urgency.NORMAL; } else if (urgent) { this.urgency = urgent.unpack() ? MessageTray.Urgency.CRITICAL : MessageTray.Urgency.NORMAL; } else { this.urgency = MessageTray.Urgency.NORMAL; } if (buttons) { buttons.deepUnpack().forEach(button => { this.addAction(button.label.unpack(), () => { this._onButtonClicked(button); }); }); } this._defaultAction = defaultAction?.unpack(); this._defaultActionTarget = defaultActionTarget; this.set({ title: title.unpack(), body: body?.unpack(), gicon: gicon ? Gio.icon_deserialize(gicon) : null, datetime: time ? GLib.DateTime.new_from_unix_local(time.unpack()) : null, }); } _activateAction(actionId, target) { if (actionId.startsWith('app.')) this.source.activateAction(actionId.slice('app.'.length), target); else this.source.emitActionInvoked(this.id, actionId, target); } _onButtonClicked(button) { let {action, target} = button; this._activateAction(action.unpack(), target); } activate() { if (this._defaultAction) this._activateAction(this._defaultAction, this._defaultActionTarget); else this.source.open(); super.activate(); } serialize() { return this._serialized; } }); function InvalidAppError() {} export const GtkNotificationDaemonAppSource = GObject.registerClass( class GtkNotificationDaemonAppSource extends MessageTray.Source { constructor(appId, dbusImpl) { if (!Gio.Application.id_is_valid(appId)) throw new InvalidAppError(); const app = Shell.AppSystem.get_default().lookup_app(`${appId}.desktop`); if (!app) throw new InvalidAppError(); super({ title: app.get_name(), icon: app.get_icon(), policy: new MessageTray.NotificationApplicationPolicy(appId), }); this._appId = appId; this._app = app; this._dbusImpl = dbusImpl; this._notifications = {}; this._notificationPending = false; } activateAction(actionId, target) { const params = target ? GLib.Variant.new('av', [target]) : null; this._app.activate_action(actionId, params, 0, -1, null).catch(error => { logError(error, `Failed to activate action for ${this._appId}`); }); Main.overview.hide(); Main.panel.closeCalendar(); } emitActionInvoked(notificationId, actionId, target) { const context = global.create_app_launch_context(0, -1); const info = this._app.get_app_info(); const token = context.get_startup_notify_id(info, []); this._dbusImpl.emit_signal('ActionInvoked', GLib.Variant.new('(sssava{sv})', [ this._appId, notificationId, actionId, target ? [target] : [], {'activation-token': GLib.Variant.new_string(token)}, ]) ); } open() { this._app.activate(); Main.overview.hide(); Main.panel.closeCalendar(); } addNotification(notification) { this._notificationPending = true; this._notifications[notification.id]?.destroy( MessageTray.NotificationDestroyedReason.REPLACED); notification.connect('destroy', () => { delete this._notifications[notification.id]; }); this._notifications[notification.id] = notification; super.addNotification(notification); this._notificationPending = false; } destroy(reason) { if (this._notificationPending) return; super.destroy(reason); } removeNotification(notificationId) { if (this._notifications[notificationId]) this._notifications[notificationId].destroy(MessageTray.NotificationDestroyedReason.SOURCE_CLOSED); } serialize() { let notifications = []; for (let notificationId in this._notifications) { let notification = this._notifications[notificationId]; notifications.push([notificationId, notification.serialize()]); } return [this._appId, notifications]; } }); const GtkNotificationsIface = loadInterfaceXML('org.gtk.Notifications'); class GtkNotificationDaemon { constructor() { this._sources = {}; this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(GtkNotificationsIface, this); this._dbusImpl.export(Gio.DBus.session, '/org/gtk/Notifications'); this._loadNotifications(); Gio.DBus.session.own_name('org.gtk.Notifications', Gio.BusNameOwnerFlags.REPLACE, null, null); } _ensureAppSource(appId) { if (this._sources[appId]) return this._sources[appId]; const source = new GtkNotificationDaemonAppSource(appId, this._dbusImpl); source.connect('destroy', () => { delete this._sources[appId]; this._saveNotifications(); }); source.connect('notify::count', this._saveNotifications.bind(this)); Main.messageTray.add(source); this._sources[appId] = source; return source; } _loadNotifications() { this._isLoading = true; try { let value = global.get_persistent_state('a(sa(sv))', 'notifications'); if (value) { let sources = value.deepUnpack(); sources.forEach(([appId, notifications]) => { if (notifications.length === 0) return; let source; try { source = this._ensureAppSource(appId); } catch (e) { if (e instanceof InvalidAppError) return; throw e; } notifications.forEach(([notificationId, notificationPacked]) => { const notification = new GtkNotificationDaemonNotification(source, notificationId, notificationPacked.deepUnpack()); // Acknowledge all stored notification so that we don't show a banner again notification.acknowledged = true; source.addNotification(notification); }); }); } } catch (e) { logError(e, 'Failed to load saved notifications'); } finally { this._isLoading = false; } } _saveNotifications() { if (this._isLoading) return; let sources = []; for (let appId in this._sources) { let source = this._sources[appId]; sources.push(source.serialize()); } global.set_persistent_state('notifications', new GLib.Variant('a(sa(sv))', sources)); } AddNotificationAsync(params, invocation) { let [appId, notificationId, notificationSerialized] = params; let source; try { source = this._ensureAppSource(appId); } catch (e) { if (e instanceof InvalidAppError) { invocation.return_error_literal(NotificationErrors, NotificationError.INVALID_APP, `The app by ID "${appId}" could not be found`); return; } throw e; } let timestamp = GLib.DateTime.new_now_local().to_unix(); notificationSerialized['timestamp'] = new GLib.Variant('x', timestamp); const notification = new GtkNotificationDaemonNotification(source, notificationId, notificationSerialized); source.addNotification(notification); invocation.return_value(null); } RemoveNotificationAsync(params, invocation) { let [appId, notificationId] = params; let source = this._sources[appId]; if (source) source.removeNotification(notificationId); invocation.return_value(null); } } export class NotificationDaemon { constructor() { this._fdoNotificationDaemon = new FdoNotificationDaemon(); this._gtkNotificationDaemon = new GtkNotificationDaemon(); } } 070701000001CB000081A40000000000000000000000016712993F00000CED000000000000000000000000000000000000002C00000000gnome-shell-47.1/js/ui/osdMonitorLabeler.jsimport Clutter from 'gi://Clutter'; import Gio from 'gi://Gio'; import GObject from 'gi://GObject'; import Meta from 'gi://Meta'; import St from 'gi://St'; import * as Main from './main.js'; const OsdMonitorLabel = GObject.registerClass( class OsdMonitorLabel extends St.Widget { _init(monitor, label) { super._init({x_expand: true, y_expand: true}); this._monitor = monitor; this._box = new St.BoxLayout({ vertical: true, }); this.add_child(this._box); this._label = new St.Label({ style_class: 'osd-monitor-label', text: label, }); this._box.add_child(this._label); Main.uiGroup.add_child(this); Main.uiGroup.set_child_above_sibling(this, null); this._position(); Meta.disable_unredirect_for_display(global.display); this.connect('destroy', () => { Meta.enable_unredirect_for_display(global.display); }); } _position() { let workArea = Main.layoutManager.getWorkAreaForMonitor(this._monitor); if (Clutter.get_default_text_direction() === Clutter.TextDirection.RTL) this._box.x = workArea.x + (workArea.width - this._box.width); else this._box.x = workArea.x; this._box.y = workArea.y; } }); export class OsdMonitorLabeler { constructor() { this._monitorManager = global.backend.get_monitor_manager(); this._client = null; this._clientWatchId = 0; this._osdLabels = []; this._monitorLabels = null; Main.layoutManager.connect('monitors-changed', this._reset.bind(this)); this._reset(); } _reset() { for (let i in this._osdLabels) this._osdLabels[i].destroy(); this._osdLabels = []; this._monitorLabels = new Map(); let monitors = Main.layoutManager.monitors; for (let i in monitors) this._monitorLabels.set(monitors[i].index, []); } _trackClient(client) { if (this._client) return this._client === client; this._client = client; this._clientWatchId = Gio.bus_watch_name(Gio.BusType.SESSION, client, 0, null, (c, name) => { this.hide(name); }); return true; } _untrackClient(client) { if (!this._client || this._client !== client) return false; Gio.bus_unwatch_name(this._clientWatchId); this._clientWatchId = 0; this._client = null; return true; } show(client, params) { if (!this._trackClient(client)) return; this._reset(); for (let connector in params) { let monitor = this._monitorManager.get_monitor_for_connector(connector); if (monitor === -1) continue; this._monitorLabels.get(monitor).push(params[connector].deepUnpack()); } for (let [monitor, labels] of this._monitorLabels.entries()) { labels.sort(); this._osdLabels.push(new OsdMonitorLabel(monitor, labels.join(' '))); } } hide(client) { if (!this._untrackClient(client)) return; this._reset(); } } 070701000001CC000081A40000000000000000000000016712993F000015BE000000000000000000000000000000000000002400000000gnome-shell-47.1/js/ui/osdWindow.jsimport Clutter from 'gi://Clutter'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import Meta from 'gi://Meta'; import St from 'gi://St'; import * as BarLevel from './barLevel.js'; import * as Layout from './layout.js'; import * as Main from './main.js'; const HIDE_TIMEOUT = 1500; const FADE_TIME = 100; const LEVEL_ANIMATION_TIME = 100; export const OsdWindow = GObject.registerClass( class OsdWindow extends Clutter.Actor { _init(monitorIndex) { super._init({ x_expand: true, y_expand: true, x_align: Clutter.ActorAlign.CENTER, y_align: Clutter.ActorAlign.END, }); this._monitorIndex = monitorIndex; let constraint = new Layout.MonitorConstraint({index: monitorIndex}); this.add_constraint(constraint); this._hbox = new St.BoxLayout({ style_class: 'osd-window', }); this.add_child(this._hbox); this._icon = new St.Icon({y_expand: true}); this._hbox.add_child(this._icon); this._vbox = new St.BoxLayout({ vertical: true, y_align: Clutter.ActorAlign.CENTER, }); this._hbox.add_child(this._vbox); this._label = new St.Label(); this._vbox.add_child(this._label); this._level = new BarLevel.BarLevel({ style_class: 'level', value: 0, }); this._vbox.add_child(this._level); this._hideTimeoutId = 0; this._reset(); Main.uiGroup.add_child(this); } _updateBoxVisibility() { this._vbox.visible = [...this._vbox].some(c => c.visible); } setIcon(icon) { this._icon.gicon = icon; } setLabel(label) { this._label.visible = label != null; if (this._label.visible) this._label.text = label; this._updateBoxVisibility(); } setLevel(value) { this._level.visible = value != null; if (this._level.visible) { if (this.visible) { this._level.ease_property('value', value, { mode: Clutter.AnimationMode.EASE_OUT_QUAD, duration: LEVEL_ANIMATION_TIME, }); } else { this._level.value = value; } } this._updateBoxVisibility(); } setMaxLevel(maxLevel = 1) { this._level.maximum_value = maxLevel; } show() { if (!this._icon.gicon) return; if (!this.visible) { Meta.disable_unredirect_for_display(global.display); super.show(); this.opacity = 0; this.get_parent().set_child_above_sibling(this, null); this.ease({ opacity: 255, duration: FADE_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, }); } if (this._hideTimeoutId) GLib.source_remove(this._hideTimeoutId); this._hideTimeoutId = GLib.timeout_add( GLib.PRIORITY_DEFAULT, HIDE_TIMEOUT, this._hide.bind(this)); GLib.Source.set_name_by_id(this._hideTimeoutId, '[gnome-shell] this._hide'); } cancel() { if (!this._hideTimeoutId) return; GLib.source_remove(this._hideTimeoutId); this._hide(); } _hide() { this._hideTimeoutId = 0; this.ease({ opacity: 0, duration: FADE_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => { this._reset(); Meta.enable_unredirect_for_display(global.display); }, }); return GLib.SOURCE_REMOVE; } _reset() { super.hide(); this.setLabel(null); this.setMaxLevel(null); this.setLevel(null); } }); export class OsdWindowManager { constructor() { this._osdWindows = []; Main.layoutManager.connect('monitors-changed', this._monitorsChanged.bind(this)); this._monitorsChanged(); } _monitorsChanged() { for (let i = 0; i < Main.layoutManager.monitors.length; i++) { if (this._osdWindows[i] === undefined) this._osdWindows[i] = new OsdWindow(i); } for (let i = Main.layoutManager.monitors.length; i < this._osdWindows.length; i++) { this._osdWindows[i].destroy(); this._osdWindows[i] = null; } this._osdWindows.length = Main.layoutManager.monitors.length; } _showOsdWindow(monitorIndex, icon, label, level, maxLevel) { this._osdWindows[monitorIndex].setIcon(icon); this._osdWindows[monitorIndex].setLabel(label); this._osdWindows[monitorIndex].setMaxLevel(maxLevel); this._osdWindows[monitorIndex].setLevel(level); this._osdWindows[monitorIndex].show(); } show(monitorIndex, icon, label, level, maxLevel) { if (monitorIndex !== -1) { for (let i = 0; i < this._osdWindows.length; i++) { if (i === monitorIndex) this._showOsdWindow(i, icon, label, level, maxLevel); else this._osdWindows[i].cancel(); } } else { for (let i = 0; i < this._osdWindows.length; i++) this._showOsdWindow(i, icon, label, level, maxLevel); } } hideAll() { for (let i = 0; i < this._osdWindows.length; i++) this._osdWindows[i].cancel(); } } 070701000001CD000081A40000000000000000000000016712993F00004F1F000000000000000000000000000000000000002300000000gnome-shell-47.1/js/ui/overview.jsimport Clutter from 'gi://Clutter'; import Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import Meta from 'gi://Meta'; import Shell from 'gi://Shell'; import St from 'gi://St'; import * as Signals from '../misc/signals.js'; // Time for initial animation going into Overview mode; // this is defined here to make it available in imports. export const ANIMATION_TIME = 250; import * as DND from './dnd.js'; import * as LayoutManager from './layout.js'; import * as Main from './main.js'; import * as OverviewControls from './overviewControls.js'; import * as SwipeTracker from './swipeTracker.js'; import * as WindowManager from './windowManager.js'; import * as WorkspaceThumbnail from './workspaceThumbnail.js'; const DND_WINDOW_SWITCH_TIMEOUT = 750; const OVERVIEW_ACTIVATION_TIMEOUT = 0.5; const OverviewActor = GObject.registerClass( class OverviewActor extends St.BoxLayout { _init() { super._init({ name: 'overview', /* Translators: This is the main view to select activities. See also note for "Activities" string. */ accessible_name: _('Overview'), vertical: true, }); this.add_constraint(new LayoutManager.MonitorConstraint({primary: true})); this._controls = new OverviewControls.ControlsManager(); this.add_child(this._controls); } prepareToEnterOverview() { this._controls.prepareToEnterOverview(); } prepareToLeaveOverview() { this._controls.prepareToLeaveOverview(); } animateToOverview(state, callback) { this._controls.animateToOverview(state, callback); } animateFromOverview(callback) { this._controls.animateFromOverview(callback); } async runStartupAnimation() { await this._controls.runStartupAnimation(); } get dash() { return this._controls.dash; } get searchController() { return this._controls.searchController; } get searchEntry() { return this._controls.searchEntry; } get controls() { return this._controls; } }); const OverviewShownState = { HIDDEN: 'HIDDEN', HIDING: 'HIDING', SHOWING: 'SHOWING', SHOWN: 'SHOWN', }; const OVERVIEW_SHOWN_TRANSITIONS = { [OverviewShownState.HIDDEN]: { signal: 'hidden', allowedTransitions: [OverviewShownState.SHOWING], }, [OverviewShownState.HIDING]: { signal: 'hiding', allowedTransitions: [OverviewShownState.HIDDEN, OverviewShownState.SHOWING], }, [OverviewShownState.SHOWING]: { signal: 'showing', allowedTransitions: [OverviewShownState.SHOWN, OverviewShownState.HIDING], }, [OverviewShownState.SHOWN]: { signal: 'shown', allowedTransitions: [OverviewShownState.HIDING], }, }; export class Overview extends Signals.EventEmitter { constructor() { super(); this._initCalled = false; this._visible = false; Main.sessionMode.connect('updated', this._sessionUpdated.bind(this)); this._sessionUpdated(); } get dash() { return this._overview.dash; } get dashIconSize() { logError(new Error('Usage of Overview.\'dashIconSize\' is deprecated, ' + 'use \'dash.iconSize\' property instead')); return this.dash.iconSize; } get animationInProgress() { return this._animationInProgress; } get visible() { return this._visible; } get visibleTarget() { return this._visibleTarget; } get closing() { return this._animationInProgress && !this._visibleTarget; } _createOverview() { if (this._overview) return; if (this.isDummy) return; this._activationTime = 0; this._visible = false; // animating to overview, in overview, animating out this._shown = false; // show() and not hide() this._modal = false; // have a modal grab this._animationInProgress = false; this._visibleTarget = false; this._shownState = OverviewShownState.HIDDEN; // During transitions, we raise this to the top to avoid having the overview // area be reactive; it causes too many issues such as double clicks on // Dash elements, or mouseover handlers in the workspaces. this._coverPane = new Clutter.Actor({ opacity: 0, reactive: true, }); Main.layoutManager.overviewGroup.add_child(this._coverPane); this._coverPane.connect('event', (_actor, event) => { return event.type() === Clutter.EventType.ENTER || event.type() === Clutter.EventType.LEAVE ? Clutter.EVENT_PROPAGATE : Clutter.EVENT_STOP; }); this._coverPane.hide(); // XDND this._dragMonitor = { dragMotion: this._onDragMotion.bind(this), }; Main.layoutManager.overviewGroup.connect('scroll-event', this._onScrollEvent.bind(this)); Main.xdndHandler.connect('drag-begin', this._onDragBegin.bind(this)); Main.xdndHandler.connect('drag-end', this._onDragEnd.bind(this)); global.display.connect('restacked', this._onRestacked.bind(this)); this._windowSwitchTimeoutId = 0; this._windowSwitchTimestamp = 0; this._lastActiveWorkspaceIndex = -1; this._lastHoveredWindow = null; if (this._initCalled) this.init(); } _sessionUpdated() { const {hasOverview} = Main.sessionMode; if (!hasOverview) this.hide(); this.isDummy = !hasOverview; this._createOverview(); } // The members we construct that are implemented in JS might // want to access the overview as Main.overview to connect // signal handlers and so forth. So we create them after // construction in this init() method. init() { this._initCalled = true; if (this.isDummy) return; this._overview = new OverviewActor(); this._overview._delegate = this; Main.layoutManager.overviewGroup.add_child(this._overview); Main.layoutManager.connect('monitors-changed', this._relayout.bind(this)); this._relayout(); Main.wm.addKeybinding( 'toggle-overview', new Gio.Settings({schema_id: WindowManager.SHELL_KEYBINDINGS_SCHEMA}), Meta.KeyBindingFlags.IGNORE_AUTOREPEAT, Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, this.toggle.bind(this)); const swipeTracker = new SwipeTracker.SwipeTracker(global.stage, Clutter.Orientation.VERTICAL, Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, {allowDrag: false, allowScroll: false}); swipeTracker.orientation = Clutter.Orientation.VERTICAL; swipeTracker.connect('begin', this._gestureBegin.bind(this)); swipeTracker.connect('update', this._gestureUpdate.bind(this)); swipeTracker.connect('end', this._gestureEnd.bind(this)); this._swipeTracker = swipeTracker; } _changeShownState(state) { const {allowedTransitions} = OVERVIEW_SHOWN_TRANSITIONS[this._shownState]; if (!allowedTransitions.includes(state)) { throw new Error('Invalid overview shown transition from ' + `${this._shownState} to ${state}`); } if (this._shownState === OverviewShownState.HIDDEN) Meta.disable_unredirect_for_display(global.display); else if (state === OverviewShownState.HIDDEN) Meta.enable_unredirect_for_display(global.display); this._shownState = state; this.emit(OVERVIEW_SHOWN_TRANSITIONS[state].signal); } _onDragBegin() { this._inXdndDrag = true; DND.addDragMonitor(this._dragMonitor); // Remember the workspace we started from let workspaceManager = global.workspace_manager; this._lastActiveWorkspaceIndex = workspaceManager.get_active_workspace_index(); } _onDragEnd() { this._inXdndDrag = false; // In case the drag was canceled while in the overview // we have to go back to where we started and hide // the overview if (this._shown) { let workspaceManager = global.workspace_manager; workspaceManager.get_workspace_by_index(this._lastActiveWorkspaceIndex) .activate(global.get_current_time()); this.hide(); } this._resetWindowSwitchTimeout(); this._lastHoveredWindow = null; DND.removeDragMonitor(this._dragMonitor); this.endItemDrag(); } _resetWindowSwitchTimeout() { if (this._windowSwitchTimeoutId !== 0) { GLib.source_remove(this._windowSwitchTimeoutId); this._windowSwitchTimeoutId = 0; } } _onDragMotion(dragEvent) { let targetIsWindow = dragEvent.targetActor && dragEvent.targetActor._delegate && dragEvent.targetActor._delegate.metaWindow && !(dragEvent.targetActor._delegate instanceof WorkspaceThumbnail.WindowClone); this._windowSwitchTimestamp = global.get_current_time(); if (targetIsWindow && dragEvent.targetActor._delegate.metaWindow === this._lastHoveredWindow) return DND.DragMotionResult.CONTINUE; this._lastHoveredWindow = null; this._resetWindowSwitchTimeout(); if (targetIsWindow) { this._lastHoveredWindow = dragEvent.targetActor._delegate.metaWindow; this._windowSwitchTimeoutId = GLib.timeout_add( GLib.PRIORITY_DEFAULT, DND_WINDOW_SWITCH_TIMEOUT, () => { this._windowSwitchTimeoutId = 0; Main.activateWindow(dragEvent.targetActor._delegate.metaWindow, this._windowSwitchTimestamp); this.hide(); this._lastHoveredWindow = null; return GLib.SOURCE_REMOVE; }); GLib.Source.set_name_by_id(this._windowSwitchTimeoutId, '[gnome-shell] Main.activateWindow'); } return DND.DragMotionResult.CONTINUE; } _onScrollEvent(actor, event) { this.emit('scroll-event', event); return Clutter.EVENT_PROPAGATE; } _relayout() { // To avoid updating the position and size of the workspaces // we just hide the overview. The positions will be updated // when it is next shown. this.hide(); this._coverPane.set_position(0, 0); this._coverPane.set_size(global.screen_width, global.screen_height); } _onRestacked() { let stack = global.get_window_actors(); let stackIndices = {}; for (let i = 0; i < stack.length; i++) { // Use the stable sequence for an integer to use as a hash key stackIndices[stack[i].get_meta_window().get_stable_sequence()] = i; } this.emit('windows-restacked', stackIndices); } _gestureBegin(tracker) { this._overview.controls.gestureBegin(tracker); } _gestureUpdate(tracker, progress) { if (!this._shown) { this._shown = true; this._visible = true; this._visibleTarget = true; this._animationInProgress = true; Main.layoutManager.overviewGroup.set_child_above_sibling( this._coverPane, null); this._coverPane.show(); this._changeShownState(OverviewShownState.SHOWING); Main.layoutManager.showOverview(); this._syncGrab(); } this._overview.controls.gestureProgress(progress); } _gestureEnd(tracker, duration, endProgress) { let onComplete; if (endProgress === 0) { this._shown = false; this._visibleTarget = false; this._changeShownState(OverviewShownState.HIDING); Main.panel.style = `transition-duration: ${duration}ms;`; onComplete = () => this._hideDone(); } else { onComplete = () => this._showDone(); } this._overview.controls.gestureEnd(endProgress, duration, onComplete); } beginItemDrag(source) { this.emit('item-drag-begin', source); this._inItemDrag = true; } cancelledItemDrag(source) { this.emit('item-drag-cancelled', source); } endItemDrag(source) { if (!this._inItemDrag) return; this.emit('item-drag-end', source); this._inItemDrag = false; } beginWindowDrag(window) { this.emit('window-drag-begin', window); this._inWindowDrag = true; } cancelledWindowDrag(window) { this.emit('window-drag-cancelled', window); } endWindowDrag(window) { if (!this._inWindowDrag) return; this.emit('window-drag-end', window); this._inWindowDrag = false; } focusSearch() { this.show(); this._overview.searchEntry.grab_key_focus(); } // Checks if the Activities button is currently sensitive to // clicks. The first call to this function within the // OVERVIEW_ACTIVATION_TIMEOUT time of the hot corner being // triggered will return false. This avoids opening and closing // the overview if the user both triggered the hot corner and // clicked the Activities button. shouldToggleByCornerOrButton() { if (this._animationInProgress) return false; if (this._inItemDrag || this._inWindowDrag) return false; if (!this._activationTime || GLib.get_monotonic_time() / GLib.USEC_PER_SEC - this._activationTime > OVERVIEW_ACTIVATION_TIMEOUT) return true; return false; } _syncGrab() { // We delay grab changes during animation so that when removing the // overview we don't have a problem with the release of a press/release // going to an application. if (this._animationInProgress) return true; if (this._shown) { let shouldBeModal = !this._inXdndDrag; if (shouldBeModal && !this._modal) { if (global.display.is_grabbed()) { this.hide(); return false; } const grab = Main.pushModal(global.stage, { actionMode: Shell.ActionMode.OVERVIEW, }); if (grab.get_seat_state() !== Clutter.GrabState.ALL) { Main.popModal(grab); this.hide(); return false; } this._grab = grab; this._modal = true; } } else { // eslint-disable-next-line no-lonely-if if (this._modal) { Main.popModal(this._grab); this._grab = false; this._modal = false; } } return true; } // show: // // Animates the overview visible and grabs mouse and keyboard input show(state = OverviewControls.ControlsState.WINDOW_PICKER) { if (state === OverviewControls.ControlsState.HIDDEN) throw new Error('Invalid state, use hide() to hide'); if (this.isDummy) return; if (this._shown) return; this._shown = true; if (!this._syncGrab()) return; Main.layoutManager.showOverview(); this._animateVisible(state); } _animateVisible(state) { if (this._visible || this._animationInProgress) return; this._visible = true; this._animationInProgress = true; this._visibleTarget = true; this._activationTime = GLib.get_monotonic_time() / GLib.USEC_PER_SEC; Main.layoutManager.overviewGroup.set_child_above_sibling( this._coverPane, null); this._coverPane.show(); this._overview.prepareToEnterOverview(); this._changeShownState(OverviewShownState.SHOWING); this._overview.animateToOverview(state, () => this._showDone()); } _showDone() { this._animationInProgress = false; this._coverPane.hide(); if (this._shownState !== OverviewShownState.SHOWN) this._changeShownState(OverviewShownState.SHOWN); // Handle any calls to hide* while we were showing if (!this._shown) this._animateNotVisible(); this._syncGrab(); } // hide: // // Reverses the effect of show() hide() { if (this.isDummy) return; if (!this._shown) return; let event = Clutter.get_current_event(); if (event) { let type = event.type(); const button = type === Clutter.EventType.BUTTON_PRESS || type === Clutter.EventType.BUTTON_RELEASE; let ctrl = (event.get_state() & Clutter.ModifierType.CONTROL_MASK) !== 0; if (button && ctrl) return; } this._shown = false; this._animateNotVisible(); this._syncGrab(); } _animateNotVisible() { if (!this._visible || this._animationInProgress) return; this._animationInProgress = true; this._visibleTarget = false; Main.layoutManager.overviewGroup.set_child_above_sibling( this._coverPane, null); this._coverPane.show(); this._overview.prepareToLeaveOverview(); this._changeShownState(OverviewShownState.HIDING); this._overview.animateFromOverview(() => this._hideDone()); } _hideDone() { this._coverPane.hide(); this._visible = false; this._animationInProgress = false; // Handle any calls to show* while we were hiding if (this._shown) { this._changeShownState(OverviewShownState.HIDDEN); this._animateVisible(OverviewControls.ControlsState.WINDOW_PICKER); } else { Main.layoutManager.hideOverview(); this._changeShownState(OverviewShownState.HIDDEN); } Main.panel.style = null; this._syncGrab(); } toggle() { if (this.isDummy) return; if (this._visible) this.hide(); else this.show(); } showApps() { this.show(OverviewControls.ControlsState.APP_GRID); } selectApp(id) { this.showApps(); this._overview.controls.appDisplay.selectApp(id); } async runStartupAnimation() { Main.panel.style = 'transition-duration: 0ms;'; this._shown = true; this._visible = true; this._visibleTarget = true; Main.layoutManager.showOverview(); // We should call this._syncGrab() here, but moved it to happen after // the animation because of a race in the xserver where the grab // fails when requested very early during startup. this._changeShownState(OverviewShownState.SHOWING); await this._overview.runStartupAnimation(); // Overview got hidden during startup animation if (this._shownState !== OverviewShownState.SHOWING) return; if (!this._syncGrab()) { this.hide(); return; } Main.panel.style = null; this._changeShownState(OverviewShownState.SHOWN); } getShowAppsButton() { logError(new Error('Usage of Overview.\'getShowAppsButton\' is deprecated, ' + 'use \'dash.showAppsButton\' property instead')); return this.dash.showAppsButton; } get searchController() { return this._overview.searchController; } get searchEntry() { return this._overview.searchEntry; } } 070701000001CE000081A40000000000000000000000016712993F00007740000000000000000000000000000000000000002B00000000gnome-shell-47.1/js/ui/overviewControls.jsimport GLib from 'gi://GLib'; import Clutter from 'gi://Clutter'; import Gio from 'gi://Gio'; import GObject from 'gi://GObject'; import Meta from 'gi://Meta'; import Shell from 'gi://Shell'; import St from 'gi://St'; import * as AppDisplay from './appDisplay.js'; import * as Dash from './dash.js'; import * as Layout from './layout.js'; import * as Main from './main.js'; import * as Overview from './overview.js'; import * as SearchController from './searchController.js'; import * as Util from '../misc/util.js'; import * as WindowManager from './windowManager.js'; import * as WorkspaceThumbnail from './workspaceThumbnail.js'; import * as WorkspacesView from './workspacesView.js'; export const SMALL_WORKSPACE_RATIO = 0.15; const DASH_MAX_HEIGHT_RATIO = 0.16; const VERTICAL_SPACING_RATIO = 0.02; const THUMBNAILS_SPACING_ADJUSTMENT_TOP = 0.6; const THUMBNAILS_SPACING_ADJUSTMENT_BOTTOM = 0.4; const A11Y_SCHEMA = 'org.gnome.desktop.a11y.keyboard'; export const SIDE_CONTROLS_ANIMATION_TIME = 250; /** @enum {number} */ export const ControlsState = { HIDDEN: 0, WINDOW_PICKER: 1, APP_GRID: 2, }; const ControlsManagerLayout = GObject.registerClass( class ControlsManagerLayout extends Clutter.LayoutManager { _init(searchEntry, appDisplay, workspacesDisplay, workspacesThumbnails, searchController, dash, stateAdjustment) { super._init(); this._appDisplay = appDisplay; this._workspacesDisplay = workspacesDisplay; this._workspacesThumbnails = workspacesThumbnails; this._stateAdjustment = stateAdjustment; this._searchEntry = searchEntry; this._searchController = searchController; this._dash = dash; this._cachedWorkspaceBoxes = new Map(); this._postAllocationCallbacks = []; stateAdjustment.connect('notify::value', () => this.layout_changed()); this._workAreaBox = new Clutter.ActorBox(); global.display.connectObject( 'workareas-changed', () => this._updateWorkAreaBox(), this); Main.layoutManager.connectObject( 'monitors-changed', () => this._updateWorkAreaBox(), this); this._updateWorkAreaBox(); } _updateWorkAreaBox() { const monitor = Main.layoutManager.primaryMonitor; if (!monitor) return; const workArea = Main.layoutManager.getWorkAreaForMonitor(monitor.index); const startX = workArea.x - monitor.x; const startY = workArea.y - monitor.y; this._workAreaBox.set_origin(startX, startY); this._workAreaBox.set_size(workArea.width, workArea.height); } _computeWorkspacesBoxForState(state, box, searchHeight, dashHeight, thumbnailsHeight, spacing) { const workspaceBox = box.copy(); const [width, height] = workspaceBox.get_size(); const {y1: startY} = this._workAreaBox; const {expandFraction} = this._workspacesThumbnails; switch (state) { case ControlsState.HIDDEN: workspaceBox.set_origin(...this._workAreaBox.get_origin()); workspaceBox.set_size(...this._workAreaBox.get_size()); break; case ControlsState.WINDOW_PICKER: workspaceBox.set_origin(0, startY + searchHeight + Math.round(spacing * THUMBNAILS_SPACING_ADJUSTMENT_TOP) + thumbnailsHeight + Math.round(spacing * THUMBNAILS_SPACING_ADJUSTMENT_BOTTOM) * expandFraction); workspaceBox.set_size(width, height - dashHeight - spacing - searchHeight - Math.round(spacing * THUMBNAILS_SPACING_ADJUSTMENT_TOP) - thumbnailsHeight - Math.round(spacing * THUMBNAILS_SPACING_ADJUSTMENT_BOTTOM) * expandFraction); break; case ControlsState.APP_GRID: workspaceBox.set_origin(0, startY + searchHeight + spacing); workspaceBox.set_size( width, Math.round(height * SMALL_WORKSPACE_RATIO)); break; } return workspaceBox; } _getAppDisplayBoxForState(state, box, searchHeight, dashHeight, workspacesBox, spacing) { const [width, height] = box.get_size(); const {y1: startY} = this._workAreaBox; const appDisplayBox = new Clutter.ActorBox(); switch (state) { case ControlsState.HIDDEN: case ControlsState.WINDOW_PICKER: appDisplayBox.set_origin(0, box.y2); break; case ControlsState.APP_GRID: appDisplayBox.set_origin(0, startY + searchHeight + spacing + workspacesBox.get_height() + spacing); break; } appDisplayBox.set_size(width, height - searchHeight - spacing - workspacesBox.get_height() - spacing - dashHeight - spacing); return appDisplayBox; } _runPostAllocation() { if (this._postAllocationCallbacks.length === 0) return; this._postAllocationCallbacks.forEach(cb => cb()); this._postAllocationCallbacks = []; } vfunc_get_preferred_width(_container, _forHeight) { // The MonitorConstraint will allocate us a fixed size anyway return [0, 0]; } vfunc_get_preferred_height(_container, _forWidth) { // The MonitorConstraint will allocate us a fixed size anyway return [0, 0]; } vfunc_allocate(container, box) { const childBox = new Clutter.ActorBox(); const startY = this._workAreaBox.y1; box.y1 += startY; const [width, height] = box.get_size(); const spacing = Math.round(height * VERTICAL_SPACING_RATIO); let availableHeight = height; // Search entry let [searchHeight] = this._searchEntry.get_preferred_height(width); childBox.set_origin(0, startY); childBox.set_size(width, searchHeight); this._searchEntry.allocate(childBox); availableHeight -= searchHeight + spacing; // Dash const maxDashHeight = Math.round(box.get_height() * DASH_MAX_HEIGHT_RATIO); this._dash.setMaxSize(width, maxDashHeight); let [, dashHeight] = this._dash.get_preferred_height(width); dashHeight = Math.min(dashHeight, maxDashHeight); childBox.set_origin(0, startY + height - dashHeight); childBox.set_size(width, dashHeight); this._dash.allocate(childBox); availableHeight -= dashHeight + spacing; // Workspace Thumbnails let thumbnailsHeight = 0; if (this._workspacesThumbnails.visible) { const {expandFraction} = this._workspacesThumbnails; [thumbnailsHeight] = this._workspacesThumbnails.get_preferred_height(width); thumbnailsHeight = Math.min( thumbnailsHeight * expandFraction, height * this._workspacesThumbnails.maxThumbnailScale); childBox.set_origin(0, startY + searchHeight + Math.round(spacing * THUMBNAILS_SPACING_ADJUSTMENT_TOP)); childBox.set_size(width, thumbnailsHeight); this._workspacesThumbnails.allocate(childBox); } // Workspaces let params = [box, searchHeight, dashHeight, thumbnailsHeight, spacing]; const transitionParams = this._stateAdjustment.getStateTransitionParams(); // Update cached boxes for (const state of Object.values(ControlsState)) { this._cachedWorkspaceBoxes.set( state, this._computeWorkspacesBoxForState(state, ...params)); } let workspacesBox; if (!transitionParams.transitioning) { workspacesBox = this._cachedWorkspaceBoxes.get(transitionParams.currentState); } else { const initialBox = this._cachedWorkspaceBoxes.get(transitionParams.initialState); const finalBox = this._cachedWorkspaceBoxes.get(transitionParams.finalState); workspacesBox = initialBox.interpolate(finalBox, transitionParams.progress); } this._workspacesDisplay.allocate(workspacesBox); // AppDisplay if (this._appDisplay.visible) { const workspaceAppGridBox = this._cachedWorkspaceBoxes.get(ControlsState.APP_GRID); params = [box, searchHeight, dashHeight, workspaceAppGridBox, spacing]; let appDisplayBox; if (!transitionParams.transitioning) { appDisplayBox = this._getAppDisplayBoxForState(transitionParams.currentState, ...params); } else { const initialBox = this._getAppDisplayBoxForState(transitionParams.initialState, ...params); const finalBox = this._getAppDisplayBoxForState(transitionParams.finalState, ...params); appDisplayBox = initialBox.interpolate(finalBox, transitionParams.progress); } this._appDisplay.allocate(appDisplayBox); } // Search childBox.set_origin(0, startY + searchHeight + spacing); childBox.set_size(width, availableHeight); this._searchController.allocate(childBox); this._runPostAllocation(); } ensureAllocation() { this.layout_changed(); return new Promise( resolve => this._postAllocationCallbacks.push(resolve)); } getWorkspacesBoxForState(state) { return this._cachedWorkspaceBoxes.get(state); } }); export const OverviewAdjustment = GObject.registerClass({ Properties: { 'gesture-in-progress': GObject.ParamSpec.boolean( 'gesture-in-progress', null, null, GObject.ParamFlags.READWRITE, false), }, }, class OverviewAdjustment extends St.Adjustment { _init(actor) { super._init({ actor, value: ControlsState.WINDOW_PICKER, lower: ControlsState.HIDDEN, upper: ControlsState.APP_GRID, }); } getStateTransitionParams() { const currentState = this.value; const transition = this.get_transition('value'); let initialState = transition ? transition.get_interval().peek_initial_value() : currentState; let finalState = transition ? transition.get_interval().peek_final_value() : currentState; if (initialState > finalState) { initialState = Math.ceil(initialState); finalState = Math.floor(finalState); } else { initialState = Math.floor(initialState); finalState = Math.ceil(finalState); } const length = Math.abs(finalState - initialState); const progress = length > 0 ? Math.abs((currentState - initialState) / length) : 1; return { transitioning: transition !== null || this.gestureInProgress, currentState, initialState, finalState, progress, }; } }); export const ControlsManager = GObject.registerClass( class ControlsManager extends St.Widget { _init() { super._init({ style_class: 'controls-manager', x_expand: true, y_expand: true, clip_to_allocation: true, }); this._ignoreShowAppsButtonToggle = false; this._searchEntry = new St.Entry({ style_class: 'search-entry', /* Translators: this is the text displayed in the search entry when no search is active; it should not exceed ~30 characters. */ hint_text: _('Type to search'), track_hover: true, can_focus: true, }); this._searchEntry.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS); this._searchEntryBin = new St.Bin({ child: this._searchEntry, x_align: Clutter.ActorAlign.CENTER, }); this.dash = new Dash.Dash(); this._workspaceAdjustment = Main.createWorkspacesAdjustment(this); this._stateAdjustment = new OverviewAdjustment(this); this._stateAdjustment.connect('notify::value', this._update.bind(this)); this._searchController = new SearchController.SearchController( this._searchEntry, this.dash.showAppsButton); this._searchController.connect('notify::search-active', this._onSearchChanged.bind(this)); Main.layoutManager.connect('monitors-changed', () => { this._thumbnailsBox.setMonitorIndex(Main.layoutManager.primaryIndex); }); this._thumbnailsBox = new WorkspaceThumbnail.ThumbnailsBox( this._workspaceAdjustment, Main.layoutManager.primaryIndex); this._thumbnailsBox.connect('notify::should-show', () => { this._thumbnailsBox.show(); this._thumbnailsBox.ease_property('expand-fraction', this._thumbnailsBox.should_show ? 1 : 0, { duration: SIDE_CONTROLS_ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => this._updateThumbnailsBox(), }); }); this._workspacesDisplay = new WorkspacesView.WorkspacesDisplay( this, this._workspaceAdjustment, this._stateAdjustment); this._appDisplay = new AppDisplay.AppDisplay(); this.add_child(this._searchEntryBin); this.add_child(this._appDisplay); this.add_child(this.dash); this.add_child(this._searchController); this.add_child(this._thumbnailsBox); this.add_child(this._workspacesDisplay); this.layout_manager = new ControlsManagerLayout( this._searchEntryBin, this._appDisplay, this._workspacesDisplay, this._thumbnailsBox, this._searchController, this.dash, this._stateAdjustment); this.dash.showAppsButton.connect('notify::checked', this._onShowAppsButtonToggled.bind(this)); Main.ctrlAltTabManager.addGroup( this.appDisplay, _('Apps'), 'shell-focus-app-grid-symbolic', { proxy: this, focusCallback: () => { this.dash.showAppsButton.checked = true; this.appDisplay.navigate_focus( null, St.DirectionType.TAB_FORWARD, false); }, }); Main.ctrlAltTabManager.addGroup( this._workspacesDisplay, _('Windows'), 'shell-focus-windows-symbolic', { proxy: this, focusCallback: () => { this.dash.showAppsButton.checked = false; this._workspacesDisplay.navigate_focus( null, St.DirectionType.TAB_FORWARD, false); }, }); this._a11ySettings = new Gio.Settings({schema_id: A11Y_SCHEMA}); this._lastOverlayKeyTime = 0; global.display.connect('overlay-key', () => { if (this._a11ySettings.get_boolean('stickykeys-enable')) return; const {initialState, finalState, transitioning} = this._stateAdjustment.getStateTransitionParams(); const time = GLib.get_monotonic_time() / 1000; const timeDiff = time - this._lastOverlayKeyTime; this._lastOverlayKeyTime = time; const shouldShift = St.Settings.get().enable_animations ? transitioning && finalState > initialState : Main.overview.visible && timeDiff < Overview.ANIMATION_TIME; if (shouldShift) this._shiftState(Meta.MotionDirection.UP); else Main.overview.toggle(); }); // connect_after to give search controller first dibs on the event global.stage.connect_after('key-press-event', (actor, event) => { if (this._searchController.searchActive) return Clutter.EVENT_PROPAGATE; if (global.stage.key_focus && !this.contains(global.stage.key_focus)) return Clutter.EVENT_PROPAGATE; const {finalState} = this._stateAdjustment.getStateTransitionParams(); let keynavDisplay; if (finalState === ControlsState.WINDOW_PICKER) keynavDisplay = this._workspacesDisplay; else if (finalState === ControlsState.APP_GRID) keynavDisplay = this._appDisplay; if (!keynavDisplay) return Clutter.EVENT_PROPAGATE; const symbol = event.get_key_symbol(); if (symbol === Clutter.KEY_Tab || symbol === Clutter.KEY_Down) { keynavDisplay.navigate_focus( null, St.DirectionType.TAB_FORWARD, false); return Clutter.EVENT_STOP; } else if (symbol === Clutter.KEY_ISO_Left_Tab) { keynavDisplay.navigate_focus( null, St.DirectionType.TAB_BACKWARD, false); return Clutter.EVENT_STOP; } return Clutter.EVENT_PROPAGATE; }); Main.wm.addKeybinding( 'toggle-application-view', new Gio.Settings({schema_id: WindowManager.SHELL_KEYBINDINGS_SCHEMA}), Meta.KeyBindingFlags.IGNORE_AUTOREPEAT, Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, this._toggleAppsPage.bind(this)); Main.wm.addKeybinding('shift-overview-up', new Gio.Settings({schema_id: WindowManager.SHELL_KEYBINDINGS_SCHEMA}), Meta.KeyBindingFlags.IGNORE_AUTOREPEAT, Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, () => this._shiftState(Meta.MotionDirection.UP)); Main.wm.addKeybinding('shift-overview-down', new Gio.Settings({schema_id: WindowManager.SHELL_KEYBINDINGS_SCHEMA}), Meta.KeyBindingFlags.IGNORE_AUTOREPEAT, Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, () => this._shiftState(Meta.MotionDirection.DOWN)); this._update(); this.connect('destroy', this._onDestroy.bind(this)); } _getFitModeForState(state) { switch (state) { case ControlsState.HIDDEN: case ControlsState.WINDOW_PICKER: return WorkspacesView.FitMode.SINGLE; case ControlsState.APP_GRID: return WorkspacesView.FitMode.ALL; default: return WorkspacesView.FitMode.SINGLE; } } _getThumbnailsBoxParams() { const {initialState, finalState, progress} = this._stateAdjustment.getStateTransitionParams(); const paramsForState = s => { let opacity, scale, translationY; switch (s) { case ControlsState.HIDDEN: case ControlsState.WINDOW_PICKER: opacity = 255; scale = 1; translationY = 0; break; case ControlsState.APP_GRID: opacity = 0; scale = 0.5; translationY = this._thumbnailsBox.height / 2; break; default: opacity = 255; scale = 1; translationY = 0; break; } return {opacity, scale, translationY}; }; const initialParams = paramsForState(initialState); const finalParams = paramsForState(finalState); return [ Util.lerp(initialParams.opacity, finalParams.opacity, progress), Util.lerp(initialParams.scale, finalParams.scale, progress), Util.lerp(initialParams.translationY, finalParams.translationY, progress), ]; } _updateThumbnailsBox(animate = false) { const {shouldShow} = this._thumbnailsBox; const {searchActive} = this._searchController; const [opacity, scale, translationY] = this._getThumbnailsBoxParams(); const thumbnailsBoxVisible = shouldShow && !searchActive && opacity !== 0; if (thumbnailsBoxVisible) { this._thumbnailsBox.opacity = 0; this._thumbnailsBox.visible = thumbnailsBoxVisible; } const params = { opacity: searchActive ? 0 : opacity, duration: animate ? SIDE_CONTROLS_ANIMATION_TIME : 0, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => { this._thumbnailsBox.set({ visible: thumbnailsBoxVisible, expandFraction: thumbnailsBoxVisible ? 1.0 : 0.0, }); }, }; if (!searchActive) { params.scale_x = scale; params.scale_y = scale; params.translation_y = translationY; } this._thumbnailsBox.ease(params); } _updateAppDisplayVisibility(stateTransitionParams = null) { if (!stateTransitionParams) stateTransitionParams = this._stateAdjustment.getStateTransitionParams(); const {initialState, finalState} = stateTransitionParams; const state = Math.max(initialState, finalState); this._appDisplay.visible = state > ControlsState.WINDOW_PICKER && !this._searchController.searchActive; } _update() { const params = this._stateAdjustment.getStateTransitionParams(); const fitMode = Util.lerp( this._getFitModeForState(params.initialState), this._getFitModeForState(params.finalState), params.progress); const {fitModeAdjustment} = this._workspacesDisplay; fitModeAdjustment.value = fitMode; this._updateThumbnailsBox(); this._updateAppDisplayVisibility(params); } _onSearchChanged() { const {searchActive} = this._searchController; if (!searchActive) { this._updateAppDisplayVisibility(); this._workspacesDisplay.reactive = true; this._workspacesDisplay.setPrimaryWorkspaceVisible(true); } else { this._searchController.show(); } this._updateThumbnailsBox(true); this._appDisplay.ease({ opacity: searchActive ? 0 : 255, duration: SIDE_CONTROLS_ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => this._updateAppDisplayVisibility(), }); this._workspacesDisplay.ease({ opacity: searchActive ? 0 : 255, duration: SIDE_CONTROLS_ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => { this._workspacesDisplay.reactive = !searchActive; this._workspacesDisplay.setPrimaryWorkspaceVisible(!searchActive); }, }); this._searchController.ease({ opacity: searchActive ? 255 : 0, duration: SIDE_CONTROLS_ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => (this._searchController.visible = searchActive), }); } _onShowAppsButtonToggled() { if (this._ignoreShowAppsButtonToggle) return; const checked = this.dash.showAppsButton.checked; const value = checked ? ControlsState.APP_GRID : ControlsState.WINDOW_PICKER; this._stateAdjustment.remove_transition('value'); this._stateAdjustment.ease(value, { duration: SIDE_CONTROLS_ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, }); } _toggleAppsPage() { if (Main.overview.visible) { const checked = this.dash.showAppsButton.checked; this.dash.showAppsButton.checked = !checked; } else { Main.overview.show(ControlsState.APP_GRID); } } _shiftState(direction) { let {currentState, finalState} = this._stateAdjustment.getStateTransitionParams(); if (direction === Meta.MotionDirection.DOWN) finalState = Math.max(finalState - 1, ControlsState.HIDDEN); else if (direction === Meta.MotionDirection.UP) finalState = Math.min(finalState + 1, ControlsState.APP_GRID); if (finalState === currentState) return; if (currentState === ControlsState.HIDDEN && finalState === ControlsState.WINDOW_PICKER) { Main.overview.show(); } else if (finalState === ControlsState.HIDDEN) { Main.overview.hide(); } else { this._stateAdjustment.ease(finalState, { duration: SIDE_CONTROLS_ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => { this.dash.showAppsButton.checked = finalState === ControlsState.APP_GRID; }, }); } } vfunc_unmap() { super.vfunc_unmap(); this._workspacesDisplay?.hide(); } _onDestroy() { delete this._searchEntryBin; delete this._appDisplay; delete this.dash; delete this._searchController; delete this._thumbnailsBox; delete this._workspacesDisplay; } prepareToEnterOverview() { this._searchController.prepareToEnterOverview(); this._workspacesDisplay.prepareToEnterOverview(); } prepareToLeaveOverview() { this._searchController.prepareToLeaveOverview(); this._workspacesDisplay.prepareToLeaveOverview(); } animateToOverview(state, callback) { this._ignoreShowAppsButtonToggle = true; this._stateAdjustment.value = ControlsState.HIDDEN; this._stateAdjustment.ease(state, { duration: Overview.ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onStopped: () => { if (callback) callback(); }, }); this.dash.showAppsButton.checked = state === ControlsState.APP_GRID; this._ignoreShowAppsButtonToggle = false; } animateFromOverview(callback) { this._ignoreShowAppsButtonToggle = true; this._stateAdjustment.ease(ControlsState.HIDDEN, { duration: Overview.ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onStopped: () => { this.dash.showAppsButton.checked = false; this._ignoreShowAppsButtonToggle = false; if (callback) callback(); }, }); } getWorkspacesBoxForState(state) { return this.layoutManager.getWorkspacesBoxForState(state); } gestureBegin(tracker) { const baseDistance = global.screen_height; const progress = this._stateAdjustment.value; const points = [ ControlsState.HIDDEN, ControlsState.WINDOW_PICKER, ControlsState.APP_GRID, ]; const transition = this._stateAdjustment.get_transition('value'); const cancelProgress = transition ? transition.get_interval().peek_final_value() : Math.round(progress); this._stateAdjustment.remove_transition('value'); tracker.confirmSwipe(baseDistance, points, progress, cancelProgress); this.prepareToEnterOverview(); this._stateAdjustment.gestureInProgress = true; } gestureProgress(progress) { this._stateAdjustment.value = progress; } gestureEnd(target, duration, onComplete) { if (target === ControlsState.HIDDEN) this.prepareToLeaveOverview(); this.dash.showAppsButton.checked = target === ControlsState.APP_GRID; this._stateAdjustment.remove_transition('value'); this._stateAdjustment.ease(target, { duration, mode: Clutter.AnimationMode.EASE_OUT_CUBIC, onComplete, }); this._stateAdjustment.gestureInProgress = false; } async runStartupAnimation() { this._ignoreShowAppsButtonToggle = true; this.prepareToEnterOverview(); this._stateAdjustment.value = ControlsState.HIDDEN; this._stateAdjustment.ease(ControlsState.WINDOW_PICKER, { duration: Overview.ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, }); this.dash.showAppsButton.checked = false; this._ignoreShowAppsButtonToggle = false; // Set the opacity here to avoid a 1-frame flicker this.opacity = 0; // We can't run the animation before the first allocation happens await this.layout_manager.ensureAllocation(); const {STARTUP_ANIMATION_TIME} = Layout; // Opacity this.ease({ opacity: 255, duration: STARTUP_ANIMATION_TIME, mode: Clutter.AnimationMode.LINEAR, }); // Search bar falls from the ceiling const {primaryMonitor} = Main.layoutManager; const [, y] = this._searchEntryBin.get_transformed_position(); const yOffset = y - primaryMonitor.y; this._searchEntryBin.translation_y = -(yOffset + this._searchEntryBin.height); this._searchEntryBin.ease({ translation_y: 0, duration: STARTUP_ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, }); // The Dash rises from the bottom. This is the last animation to finish, // so resolve the promise there. this.dash.translation_y = this.dash.height + this.dash.margin_bottom; return new Promise(resolve => { this.dash.ease({ translation_y: 0, delay: STARTUP_ANIMATION_TIME, duration: STARTUP_ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onStopped: () => resolve(), }); }); } get searchController() { return this._searchController; } get searchEntry() { return this._searchEntry; } get appDisplay() { return this._appDisplay; } }); 070701000001CF000081A40000000000000000000000016712993F00007E79000000000000000000000000000000000000002100000000gnome-shell-47.1/js/ui/padOsd.jsimport Atk from 'gi://Atk'; import Clutter from 'gi://Clutter'; import GDesktopEnums from 'gi://GDesktopEnums'; import Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import Meta from 'gi://Meta'; import Pango from 'gi://Pango'; import Rsvg from 'gi://Rsvg'; import St from 'gi://St'; import * as Signals from '../misc/signals.js'; import * as Main from './main.js'; import * as PopupMenu from './popupMenu.js'; import * as Layout from './layout.js'; import {loadInterfaceXML} from '../misc/fileUtils.js'; const ACTIVE_COLOR = 'st-lighten(-st-accent-color, 15%)'; const LTR = 0; const RTL = 1; const PadChooser = GObject.registerClass({ Signals: {'pad-selected': {param_types: [Clutter.InputDevice.$gtype]}}, }, class PadChooser extends St.Button { _init(device, groupDevices) { super._init({ style_class: 'pad-chooser-button', toggle_mode: true, }); this.currentDevice = device; this._padChooserMenu = null; let arrow = new St.Icon({ style_class: 'popup-menu-arrow', icon_name: 'pan-down-symbolic', accessible_role: Atk.Role.ARROW, x_align: Clutter.ActorAlign.CENTER, y_align: Clutter.ActorAlign.CENTER, }); this.set_child(arrow); this._ensureMenu(groupDevices); this.connect('destroy', this._onDestroy.bind(this)); } vfunc_clicked() { if (this.get_checked()) { if (this._padChooserMenu != null) this._padChooserMenu.open(true); else this.set_checked(false); } else { this._padChooserMenu.close(true); } } _ensureMenu(devices) { this._padChooserMenu = new PopupMenu.PopupMenu(this, 0.5, St.Side.TOP); this._padChooserMenu.connect('menu-closed', () => { this.set_checked(false); }); this._padChooserMenu.actor.hide(); Main.uiGroup.add_child(this._padChooserMenu.actor); this._menuManager = new PopupMenu.PopupMenuManager(this); this._menuManager.addMenu(this._padChooserMenu); for (let i = 0; i < devices.length; i++) { let device = devices[i]; if (device === this.currentDevice) continue; this._padChooserMenu.addAction(device.get_device_name(), () => { this.emit('pad-selected', device); }); } } _onDestroy() { this._padChooserMenu.destroy(); } update(devices) { if (this._padChooserMenu) this._padChooserMenu.actor.destroy(); this.set_checked(false); this._ensureMenu(devices); } }); const KeybindingEntry = GObject.registerClass({ Signals: {'keybinding-edited': {param_types: [GObject.TYPE_STRING]}}, }, class KeybindingEntry extends St.Entry { _init() { super._init({hint_text: _('New shortcut…'), style: 'width: 10em'}); } vfunc_captured_event(event) { if (event.type() !== Clutter.EventType.KEY_PRESS) return Clutter.EVENT_PROPAGATE; const str = Meta.accelerator_name( event.get_state(), event.get_key_symbol()); this.set_text(str); this.emit('keybinding-edited', str); return Clutter.EVENT_STOP; } }); const ActionComboBox = GObject.registerClass({ Signals: {'action-selected': {param_types: [GObject.TYPE_INT]}}, }, class ActionComboBox extends St.Button { _init() { super._init({style_class: 'button'}); this.set_toggle_mode(true); const boxLayout = new Clutter.BoxLayout({ orientation: Clutter.Orientation.HORIZONTAL, spacing: 6, }); let box = new St.Widget({layout_manager: boxLayout}); this.set_child(box); this._label = new St.Label({style_class: 'combo-box-label'}); box.add_child(this._label); const arrow = new St.Icon({ style_class: 'popup-menu-arrow', icon_name: 'pan-down-symbolic', accessible_role: Atk.Role.ARROW, y_expand: true, y_align: Clutter.ActorAlign.CENTER, }); box.add_child(arrow); this._editMenu = new PopupMenu.PopupMenu(this, 0, St.Side.TOP); this._editMenu.connect('menu-closed', () => { this.set_checked(false); }); this._editMenu.actor.hide(); Main.uiGroup.add_child(this._editMenu.actor); this._editMenuManager = new PopupMenu.PopupMenuManager(this); this._editMenuManager.addMenu(this._editMenu); this._actionLabels = new Map(); this._actionLabels.set(GDesktopEnums.PadButtonAction.NONE, _('App defined')); this._actionLabels.set(GDesktopEnums.PadButtonAction.HELP, _('Show on-screen help')); this._actionLabels.set(GDesktopEnums.PadButtonAction.SWITCH_MONITOR, _('Switch monitor')); this._actionLabels.set(GDesktopEnums.PadButtonAction.KEYBINDING, _('Assign keystroke')); this._buttonItems = []; for (let [action, label] of this._actionLabels.entries()) { let selectedAction = action; let item = this._editMenu.addAction(label, () => { this._onActionSelected(selectedAction); }); /* These actions only apply to pad buttons */ if (selectedAction === GDesktopEnums.PadButtonAction.HELP || selectedAction === GDesktopEnums.PadButtonAction.SWITCH_MONITOR) this._buttonItems.push(item); } this.setAction(GDesktopEnums.PadButtonAction.NONE); } _onActionSelected(action) { this.setAction(action); this.popdown(); this.emit('action-selected', action); } setAction(action) { this._label.set_text(this._actionLabels.get(action)); } popup() { this._editMenu.open(true); } popdown() { this._editMenu.close(true); } vfunc_clicked() { if (this.get_checked()) this.popup(); else this.popdown(); } setButtonActionsActive(active) { this._buttonItems.forEach(item => item.setSensitive(active)); } }); const ActionEditor = GObject.registerClass({ Signals: {'done': {}}, }, class ActionEditor extends St.Widget { _init() { const boxLayout = new Clutter.BoxLayout({ orientation: Clutter.Orientation.HORIZONTAL, spacing: 12, }); super._init({layout_manager: boxLayout}); this._actionComboBox = new ActionComboBox(); this._actionComboBox.connect('action-selected', this._onActionSelected.bind(this)); this.add_child(this._actionComboBox); this._keybindingEdit = new KeybindingEntry(); this._keybindingEdit.connect('keybinding-edited', this._onKeybindingEdited.bind(this)); this.add_child(this._keybindingEdit); this._doneButton = new St.Button({ label: _('Done'), style_class: 'button', x_expand: false, }); this._doneButton.connect('clicked', this._onEditingDone.bind(this)); this.add_child(this._doneButton); } _updateKeybindingEntryState() { if (this._currentAction === GDesktopEnums.PadButtonAction.KEYBINDING) { this._keybindingEdit.set_text(this._currentKeybinding); this._keybindingEdit.show(); this._keybindingEdit.grab_key_focus(); } else { this._keybindingEdit.hide(); } } setSettings(settings, action) { this._buttonSettings = settings; this._currentAction = this._buttonSettings.get_enum('action'); this._currentKeybinding = this._buttonSettings.get_string('keybinding'); this._actionComboBox.setAction(this._currentAction); this._updateKeybindingEntryState(); let isButton = action === null; this._actionComboBox.setButtonActionsActive(isButton); } close() { this._actionComboBox.popdown(); this.hide(); } _onKeybindingEdited(entry, keybinding) { this._currentKeybinding = keybinding; } _onActionSelected(menu, action) { this._currentAction = action; this._updateKeybindingEntryState(); } _storeSettings() { if (!this._buttonSettings) return; let keybinding = null; if (this._currentAction === GDesktopEnums.PadButtonAction.KEYBINDING) keybinding = this._currentKeybinding; this._buttonSettings.set_enum('action', this._currentAction); if (keybinding) this._buttonSettings.set_string('keybinding', keybinding); else this._buttonSettings.reset('keybinding'); } _onEditingDone() { this._storeSettings(); this.close(); this.emit('done'); } }); const PadDiagram = GObject.registerClass({ Properties: { 'left-handed': GObject.ParamSpec.boolean( 'left-handed', null, null, GObject.ParamFlags.READWRITE | GObject.ParamFlags.CONSTRUCT_ONLY, false), 'image': GObject.ParamSpec.string( 'image', null, null, GObject.ParamFlags.READWRITE | GObject.ParamFlags.CONSTRUCT_ONLY, null), 'editor-actor': GObject.ParamSpec.object( 'editor-actor', null, null, GObject.ParamFlags.READWRITE | GObject.ParamFlags.CONSTRUCT_ONLY, Clutter.Actor.$gtype), }, }, class PadDiagram extends St.DrawingArea { _init(params) { let file = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/pad-osd.css'); let [success_, css] = file.load_contents(null); this._curEdited = null; this._css = new TextDecoder().decode(css); this._labels = []; this._activeButtons = []; super._init(params); } get image() { return this._imagePath; } set image(imagePath) { let originalHandle = Rsvg.Handle.new_from_file(imagePath); let dimensions = originalHandle.get_dimensions(); this._imageWidth = dimensions.width; this._imageHeight = dimensions.height; this._imagePath = imagePath; this._handle = this._composeStyledDiagram(); this._initLabels(); } get editorActor() { return this._editorActor; } set editorActor(actor) { actor.hide(); this._editorActor = actor; this.add_child(actor); } _initLabels() { let i = 0; for (i = 0; ; i++) { if (!this._addLabel(null, i)) break; } for (i = 0; ; i++) { if (!this._addLabel(Meta.PadFeatureType.RING, i, Meta.PadDirection.CW) || !this._addLabel(Meta.PadFeatureType.RING, i, Meta.PadDirection.CCW)) break; } for (i = 0; ; i++) { if (!this._addLabel(Meta.PadFeatureType.STRIP, i, Meta.PadDirection.UP) || !this._addLabel(Meta.PadFeatureType.STRIP, i, Meta.PadDirection.DOWN)) break; } } _wrappingSvgHeader() { return '' + ' ` + '', ''.format(this._imagePath), ''); } _cssString() { let css = this._css; for (let i = 0; i < this._activeButtons.length; i++) { let ch = String.fromCharCode('A'.charCodeAt() + this._activeButtons[i]); css += `.${ch}.Leader { stroke: ${ACTIVE_COLOR} !important; }`; css += `.${ch}.Button { stroke: ${ACTIVE_COLOR} !important; fill: ${ACTIVE_COLOR} !important; }`; } return css; } _composeStyledDiagram() { let svgData = ''; if (!GLib.file_test(this._imagePath, GLib.FileTest.EXISTS)) return null; svgData += this._wrappingSvgHeader(); svgData += this._cssString(); svgData += this._wrappingSvgFooter(); let istream = new Gio.MemoryInputStream(); istream.add_bytes(new GLib.Bytes(svgData)); return Rsvg.Handle.new_from_stream_sync(istream, Gio.File.new_for_path(this._imagePath), 0, null); } _updateDiagramScale() { [this._actorWidth, this._actorHeight] = this.get_size(); let dimensions = this._handle.get_dimensions(); let scaleX = this._actorWidth / dimensions.width; let scaleY = this._actorHeight / dimensions.height; this._scale = Math.min(scaleX, scaleY); } _allocateChild(child, x, y, direction) { let [, natHeight] = child.get_preferred_height(-1); let [, natWidth] = child.get_preferred_width(natHeight); let childBox = new Clutter.ActorBox(); // I miss Cairo.Matrix let dimensions = this._handle.get_dimensions(); x = x * this._scale + this._actorWidth / 2 - dimensions.width / 2 * this._scale; y = y * this._scale + this._actorHeight / 2 - dimensions.height / 2 * this._scale; if (direction === LTR) { childBox.x1 = x; childBox.x2 = x + natWidth; } else { childBox.x1 = x - natWidth; childBox.x2 = x; } childBox.y1 = y - natHeight / 2; childBox.y2 = y + natHeight / 2; child.allocate(childBox); } vfunc_allocate(box) { super.vfunc_allocate(box); if (this._handle === null) return; this._updateDiagramScale(); for (let i = 0; i < this._labels.length; i++) { const {label, x, y, arrangement} = this._labels[i]; this._allocateChild(label, x, y, arrangement); } if (this._editorActor && this._curEdited) { const {x, y, arrangement} = this._curEdited; this._allocateChild(this._editorActor, x, y, arrangement); } } vfunc_repaint() { if (this._handle == null) return; if (this._scale == null) this._updateDiagramScale(); let [width, height] = this.get_surface_size(); let dimensions = this._handle.get_dimensions(); let cr = this.get_context(); cr.save(); cr.translate(width / 2, height / 2); cr.scale(this._scale, this._scale); if (this.leftHanded) cr.rotate(Math.PI); cr.translate(-dimensions.width / 2, -dimensions.height / 2); this._handle.render_cairo(cr); cr.restore(); cr.$dispose(); } _getItemLabelCoords(labelName, leaderName) { if (this._handle == null) return [false]; const [labelFound, labelPos] = this._handle.get_position_sub(`#${labelName}`); const [, labelSize] = this._handle.get_dimensions_sub(`#${labelName}`); if (!labelFound) return [false]; const [leaderFound, leaderPos] = this._handle.get_position_sub(`#${leaderName}`); const [, leaderSize] = this._handle.get_dimensions_sub(`#${leaderName}`); if (!leaderFound) return [false]; let direction; if (labelPos.x > leaderPos.x + leaderSize.width) direction = LTR; else direction = RTL; let pos = {x: labelPos.x, y: labelPos.y + labelSize.height}; if (this.leftHanded) { direction = 1 - direction; pos.x = this._imageWidth - pos.x; pos.y = this._imageHeight - pos.y; } return [true, pos.x, pos.y, direction]; } _getButtonLabels(button) { let ch = String.fromCharCode('A'.charCodeAt() + button); const labelName = `Label${ch}`; const leaderName = `Leader${ch}`; return [labelName, leaderName]; } _getRingLabels(number, dir) { let numStr = number > 0 ? (number + 1).toString() : ''; let dirStr = dir === Meta.PadDirection.CW ? 'CW' : 'CCW'; const labelName = `LabelRing${numStr}${dirStr}`; const leaderName = `LeaderRing${numStr}${dirStr}`; return [labelName, leaderName]; } _getStripLabels(number, dir) { let numStr = number > 0 ? (number + 1).toString() : ''; let dirStr = dir === Meta.PadDirection.UP ? 'Up' : 'Down'; const labelName = `LabelStrip${numStr}${dirStr}`; const leaderName = `LeaderStrip${numStr}${dirStr}`; return [labelName, leaderName]; } _getLabelCoords(action, idx, dir) { if (action === Meta.PadFeatureType.RING) return this._getItemLabelCoords(...this._getRingLabels(idx, dir)); else if (action === Meta.PadFeatureType.STRIP) return this._getItemLabelCoords(...this._getStripLabels(idx, dir)); else return this._getItemLabelCoords(...this._getButtonLabels(idx)); } _invalidateSvg() { if (this._handle == null) return; this._handle = this._composeStyledDiagram(); this.queue_repaint(); } activateButton(button) { this._activeButtons.push(button); this._invalidateSvg(); } deactivateButton(button) { for (let i = 0; i < this._activeButtons.length; i++) { if (this._activeButtons[i] === button) this._activeButtons.splice(i, 1); } this._invalidateSvg(); } _addLabel(action, idx, dir) { let [found, x, y, arrangement] = this._getLabelCoords(action, idx, dir); if (!found) return false; let label = new St.Label(); this._labels.push({label, action, idx, dir, x, y, arrangement}); this.add_child(label); return true; } updateLabels(getText) { for (let i = 0; i < this._labels.length; i++) { const {label, action, idx, dir} = this._labels[i]; let str = getText(action, idx, dir); label.set_text(str); } this.queue_relayout(); } _applyLabel(label, action, idx, dir, str) { if (str !== null) label.set_text(str); label.show(); } stopEdition(str) { this._editorActor.hide(); if (this._curEdited) { const {label, action, idx, dir} = this._curEdited; this._applyLabel(label, action, idx, dir, str); this._curEdited = null; } this.queue_relayout(); } startEdition(action, idx, dir) { let editedLabel; if (this._curEdited) return; for (let i = 0; i < this._labels.length; i++) { if (action === this._labels[i].action && idx === this._labels[i].idx && dir === this._labels[i].dir) { this._curEdited = this._labels[i]; editedLabel = this._curEdited.label; break; } } if (this._curEdited == null) return; this._editorActor.show(); editedLabel.hide(); this.queue_relayout(); } }); export const PadOsd = GObject.registerClass({ Signals: { 'pad-selected': {param_types: [Clutter.InputDevice.$gtype]}, 'closed': {}, }, }, class PadOsd extends St.BoxLayout { _init(padDevice, settings, imagePath, editionMode, monitorIndex) { super._init({ style_class: 'pad-osd-window', vertical: true, x_expand: true, y_expand: true, reactive: true, }); this.padDevice = padDevice; this._groupPads = [padDevice]; this._settings = settings; this._imagePath = imagePath; this._editionMode = editionMode; this._padChooser = null; let seat = Clutter.get_default_backend().get_default_seat(); seat.connectObject( 'device-added', (_seat, device) => { if (device.get_device_type() === Clutter.InputDeviceType.PAD_DEVICE && this.padDevice.is_grouped(device)) { this._groupPads.push(device); this._updatePadChooser(); } }, 'device-removed', (_seat, device) => { // If the device is being removed, destroy the padOsd. if (device === this.padDevice) { this.destroy(); } else if (this._groupPads.includes(device)) { // Or update the pad chooser if the device belongs to // the same group. this._groupPads.splice(this._groupPads.indexOf(device), 1); this._updatePadChooser(); } }, this); seat.list_devices().forEach(device => { if (device !== this.padDevice && device.get_device_type() === Clutter.InputDeviceType.PAD_DEVICE && this.padDevice.is_grouped(device)) this._groupPads.push(device); }); this.connect('destroy', this._onDestroy.bind(this)); Main.uiGroup.add_child(this); this._monitorIndex = monitorIndex; let constraint = new Layout.MonitorConstraint({index: monitorIndex}); this.add_constraint(constraint); this._titleBox = new St.BoxLayout({ style_class: 'pad-osd-title-box', vertical: false, x_expand: false, x_align: Clutter.ActorAlign.CENTER, }); this.add_child(this._titleBox); const labelBox = new St.BoxLayout({ style_class: 'pad-osd-title-menu-box', vertical: true, }); this._titleBox.add_child(labelBox); this._titleLabel = new St.Label({ style: 'font-side: larger; font-weight: bold;', x_align: Clutter.ActorAlign.CENTER, }); this._titleLabel.clutter_text.set_ellipsize(Pango.EllipsizeMode.NONE); this._titleLabel.clutter_text.set_text(padDevice.get_device_name()); labelBox.add_child(this._titleLabel); this._tipLabel = new St.Label({x_align: Clutter.ActorAlign.CENTER}); labelBox.add_child(this._tipLabel); this._updatePadChooser(); this._actionEditor = new ActionEditor(); this._actionEditor.connect('done', this._endActionEdition.bind(this)); this._padDiagram = new PadDiagram({ image: this._imagePath, left_handed: settings.get_boolean('left-handed'), editor_actor: this._actionEditor, x_expand: true, y_expand: true, }); this.add_child(this._padDiagram); this._updateActionLabels(); const buttonBox = new St.Widget({ layout_manager: new Clutter.BinLayout(), x_expand: true, x_align: Clutter.ActorAlign.CENTER, y_align: Clutter.ActorAlign.CENTER, }); this.add_child(buttonBox); this._editButton = new St.Button({ label: _('Edit…'), style_class: 'button', can_focus: true, x_align: Clutter.ActorAlign.CENTER, }); this._editButton.connect('clicked', () => { this.setEditionMode(true); }); buttonBox.add_child(this._editButton); this._syncEditionMode(); this._grab = Main.pushModal(this); } _updatePadChooser() { if (this._groupPads.length > 1) { if (this._padChooser == null) { this._padChooser = new PadChooser(this.padDevice, this._groupPads); this._padChooser.connect('pad-selected', (chooser, pad) => { this._requestForOtherPad(pad); }); this._titleBox.add_child(this._padChooser); } else { this._padChooser.update(this._groupPads); } } else if (this._padChooser != null) { this._padChooser.destroy(); this._padChooser = null; } } _requestForOtherPad(pad) { if (pad === this.padDevice || !this._groupPads.includes(pad)) return; let editionMode = this._editionMode; this.destroy(); global.display.request_pad_osd(pad, editionMode); } _getActionText(type, number, dir) { let str; if (type === Meta.PadFeatureType.RING || type === Meta.PadFeatureType.STRIP) str = global.display.get_pad_feature_label(this.padDevice, type, dir, number); else str = global.display.get_pad_button_label(this.padDevice, number); return str ?? _('None'); } _updateActionLabels() { this._padDiagram.updateLabels(this._getActionText.bind(this)); } vfunc_captured_event(event) { let isModeSwitch = (event.type() === Clutter.EventType.PAD_BUTTON_PRESS || event.type() === Clutter.EventType.PAD_BUTTON_RELEASE) && this.padDevice.get_mode_switch_button_group(event.get_button()) >= 0; if (event.type() === Clutter.EventType.PAD_BUTTON_PRESS && event.get_source_device() === this.padDevice) { this._padDiagram.activateButton(event.get_button()); /* Buttons that switch between modes cannot be edited */ if (this._editionMode && !isModeSwitch) this._startButtonActionEdition(event.get_button()); return Clutter.EVENT_STOP; } else if (event.type() === Clutter.EventType.PAD_BUTTON_RELEASE && event.get_source_device() === this.padDevice) { this._padDiagram.deactivateButton(event.get_button()); if (isModeSwitch) { this._endActionEdition(); this._updateActionLabels(); } return Clutter.EVENT_STOP; } else if (event.type() === Clutter.EventType.KEY_PRESS && (!this._editionMode || event.get_key_symbol() === Clutter.KEY_Escape)) { if (this._editedAction != null) this._endActionEdition(); else this.destroy(); return Clutter.EVENT_STOP; } else if (event.get_source_device() === this.padDevice && event.type() === Clutter.EventType.PAD_STRIP) { if (this._editionMode) { let [retval_, number, mode] = event.get_pad_details(); this._startStripActionEdition(number, Meta.PadDirection.UP, mode); } } else if (event.get_source_device() === this.padDevice && event.type() === Clutter.EventType.PAD_RING) { if (this._editionMode) { let [retval_, number, mode] = event.get_pad_details(); this._startRingActionEdition(number, Meta.PadDirection.CCW, mode); } } // If the event comes from another pad in the same group, // show the OSD for it. if (this._groupPads.includes(event.get_source_device())) { this._requestForOtherPad(event.get_source_device()); return Clutter.EVENT_STOP; } return Clutter.EVENT_PROPAGATE; } _syncEditionMode() { this._editButton.set_reactive(!this._editionMode); this._editButton.save_easing_state(); this._editButton.set_easing_duration(200); this._editButton.set_opacity(this._editionMode ? 128 : 255); this._editButton.restore_easing_state(); let title; if (this._editionMode) { title = _('Press a button to configure'); this._tipLabel.set_text(_('Press Esc to exit')); } else { title = this.padDevice.get_device_name(); this._tipLabel.set_text(_('Press any key to exit')); } this._titleLabel.set_text(title); } _isEditedAction(type, number, dir) { if (!this._editedAction) return false; return this._editedAction.type === type && this._editedAction.number === number && this._editedAction.dir === dir; } _endActionEdition() { this._actionEditor.close(); if (this._editedAction != null) { const {type, number, dir, mode} = this._editedAction; const str = this._getActionText(type, number, dir); const hasNextAction = type === Meta.PadFeatureType.RING && dir === Meta.PadDirection.CCW || type === Meta.PadFeatureType.STRIP && dir === Meta.PadDirection.UP; this._padDiagram.stopEdition(str); this._editedAction = null; // Maybe follow up on next ring/strip direction if (hasNextAction) { if (type === Meta.PadFeatureType.RING) this._startRingActionEdition(number, Meta.PadDirection.CW, mode); else this._startStripActionEdition(number, Meta.PadDirection.DOWN, mode); } } this._editedActionSettings = null; } _startActionEdition(key, type, number, dir, mode) { if (this._isEditedAction(type, number, dir)) return; this._endActionEdition(); this._editedAction = {type, number, dir, mode}; const settingsPath = `${this._settings.path}${key}/`; this._editedActionSettings = Gio.Settings.new_with_path( 'org.gnome.desktop.peripherals.tablet.pad-button', settingsPath); this._actionEditor.setSettings(this._editedActionSettings, type); this._padDiagram.startEdition(type, number, dir); } _startButtonActionEdition(button) { let ch = String.fromCharCode('A'.charCodeAt() + button); let key = `button${ch}`; this._startActionEdition(key, null, button); } _startRingActionEdition(ring, dir, mode) { let ch = String.fromCharCode('A'.charCodeAt() + ring); const key = `ring${ch}-${dir === Meta.PadDirection.CCW ? 'ccw' : 'cw'}-mode-${mode}`; this._startActionEdition(key, Meta.PadFeatureType.RING, ring, dir, mode); } _startStripActionEdition(strip, dir, mode) { let ch = String.fromCharCode('A'.charCodeAt() + strip); const key = `strip${ch}-${dir === Meta.PadDirection.UP ? 'up' : 'down'}-mode-${mode}`; this._startActionEdition(key, Meta.PadFeatureType.STRIP, strip, dir, mode); } setEditionMode(editionMode) { if (this._editionMode === editionMode) return; this._editionMode = editionMode; this._syncEditionMode(); } _onDestroy() { Main.popModal(this._grab); this._grab = null; this._actionEditor.close(); this.emit('closed'); } }); const PadOsdIface = loadInterfaceXML('org.gnome.Shell.Wacom.PadOsd'); export class PadOsdService extends Signals.EventEmitter { constructor() { super(); this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(PadOsdIface, this); this._dbusImpl.export(Gio.DBus.session, '/org/gnome/Shell/Wacom'); Gio.DBus.session.own_name('org.gnome.Shell.Wacom.PadOsd', Gio.BusNameOwnerFlags.REPLACE, null, null); } ShowAsync(params, invocation) { let [deviceNode, editionMode] = params; let seat = Clutter.get_default_backend().get_default_seat(); let devices = seat.list_devices(); let padDevice = null; devices.forEach(device => { if (deviceNode === device.get_device_node() && device.get_device_type() === Clutter.InputDeviceType.PAD_DEVICE) padDevice = device; }); if (padDevice == null) { invocation.return_error_literal( Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED, 'Invalid params'); return; } global.display.request_pad_osd(padDevice, editionMode); invocation.return_value(null); } } 070701000001D0000081A40000000000000000000000016712993F000010BC000000000000000000000000000000000000002900000000gnome-shell-47.1/js/ui/pageIndicators.jsimport Clutter from 'gi://Clutter'; import Graphene from 'gi://Graphene'; import GObject from 'gi://GObject'; import St from 'gi://St'; const INDICATOR_INACTIVE_OPACITY = 128; const INDICATOR_INACTIVE_OPACITY_HOVER = 255; const INDICATOR_INACTIVE_SCALE = 2 / 3; const INDICATOR_INACTIVE_SCALE_PRESSED = 0.5; export const PageIndicators = GObject.registerClass({ Signals: {'page-activated': {param_types: [GObject.TYPE_INT]}}, }, class PageIndicators extends St.BoxLayout { _init(orientation = Clutter.Orientation.VERTICAL) { let vertical = orientation === Clutter.Orientation.VERTICAL; super._init({ style_class: 'page-indicators', vertical, x_expand: true, y_expand: true, x_align: vertical ? Clutter.ActorAlign.END : Clutter.ActorAlign.CENTER, y_align: vertical ? Clutter.ActorAlign.CENTER : Clutter.ActorAlign.END, reactive: true, clip_to_allocation: true, }); this._nPages = 0; this._currentPosition = 0; this._reactive = true; this._reactive = true; this._orientation = orientation; } vfunc_get_preferred_height(forWidth) { // We want to request the natural height of all our children as our // natural height, so we chain up to St.BoxLayout, but we only request 0 // as minimum height, since it's not that important if some indicators // are not shown let [, natHeight] = super.vfunc_get_preferred_height(forWidth); return [0, natHeight]; } setReactive(reactive) { let children = this.get_children(); for (let i = 0; i < children.length; i++) children[i].reactive = reactive; this._reactive = reactive; } setNPages(nPages) { if (this._nPages === nPages) return; let diff = nPages - this._nPages; if (diff > 0) { for (let i = 0; i < diff; i++) { let pageIndex = this._nPages + i; const indicator = new St.Button({ style_class: 'page-indicator', button_mask: St.ButtonMask.ONE | St.ButtonMask.TWO | St.ButtonMask.THREE, reactive: this._reactive, child: new St.Widget({ style_class: 'page-indicator-icon', pivot_point: new Graphene.Point({x: 0.5, y: 0.5}), }), }); indicator.connect('clicked', () => { this.emit('page-activated', pageIndex); }); indicator.connect('notify::hover', () => { this._updateIndicator(indicator, pageIndex); }); indicator.connect('notify::pressed', () => { this._updateIndicator(indicator, pageIndex); }); this._updateIndicator(indicator, pageIndex); this.add_child(indicator); } } else { let children = this.get_children().splice(diff); for (let i = 0; i < children.length; i++) children[i].destroy(); } this._nPages = nPages; this.visible = this._nPages > 1; } _updateIndicator(indicator, pageIndex) { let progress = Math.max(1 - Math.abs(this._currentPosition - pageIndex), 0); let inactiveScale = indicator.pressed ? INDICATOR_INACTIVE_SCALE_PRESSED : INDICATOR_INACTIVE_SCALE; let inactiveOpacity = indicator.hover ? INDICATOR_INACTIVE_OPACITY_HOVER : INDICATOR_INACTIVE_OPACITY; let scale = inactiveScale + (1 - inactiveScale) * progress; let opacity = inactiveOpacity + (255 - inactiveOpacity) * progress; indicator.child.set_scale(scale, scale); indicator.child.opacity = opacity; } setCurrentPosition(currentPosition) { this._currentPosition = currentPosition; let children = this.get_children(); for (let i = 0; i < children.length; i++) this._updateIndicator(children[i], i); } get nPages() { return this._nPages; } }); 070701000001D1000081A40000000000000000000000016712993F000083E6000000000000000000000000000000000000002000000000gnome-shell-47.1/js/ui/panel.jsimport Atk from 'gi://Atk'; import Clutter from 'gi://Clutter'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import Graphene from 'gi://Graphene'; import Meta from 'gi://Meta'; import Shell from 'gi://Shell'; import St from 'gi://St'; import * as Animation from './animation.js'; import {AppMenu} from './appMenu.js'; import * as Config from '../misc/config.js'; import * as CtrlAltTab from './ctrlAltTab.js'; import * as DND from './dnd.js'; import * as Overview from './overview.js'; import * as PopupMenu from './popupMenu.js'; import * as PanelMenu from './panelMenu.js'; import {QuickSettingsMenu, SystemIndicator} from './quickSettings.js'; import * as Main from './main.js'; import * as Util from '../misc/util.js'; import * as RemoteAccessStatus from './status/remoteAccess.js'; import * as PowerProfileStatus from './status/powerProfiles.js'; import * as RFKillStatus from './status/rfkill.js'; import * as CameraStatus from './status/camera.js'; import * as VolumeStatus from './status/volume.js'; import * as BrightnessStatus from './status/brightness.js'; import * as SystemStatus from './status/system.js'; import * as LocationStatus from './status/location.js'; import * as NightLightStatus from './status/nightLight.js'; import * as DarkModeStatus from './status/darkMode.js'; import * as BacklightStatus from './status/backlight.js'; import * as ThunderboltStatus from './status/thunderbolt.js'; import * as AutoRotateStatus from './status/autoRotate.js'; import * as BackgroundAppsStatus from './status/backgroundApps.js'; import {DateMenuButton} from './dateMenu.js'; import {ATIndicator} from './status/accessibility.js'; import {InputSourceIndicator} from './status/keyboard.js'; import {DwellClickIndicator} from './status/dwellClick.js'; import {ScreenRecordingIndicator, ScreenSharingIndicator} from './status/remoteAccess.js'; const PANEL_ICON_SIZE = 16; const APP_MENU_ICON_MARGIN = 0; const BUTTON_DND_ACTIVATION_TIMEOUT = 250; const N_QUICK_SETTINGS_COLUMNS = 2; const INACTIVE_WORKSPACE_DOT_SCALE = 0.75; /** * AppMenuButton: * * This class manages the "application menu" component. It tracks the * currently focused application. However, when an app is launched, * this menu also handles startup notification for it. So when we * have an active startup notification, we switch modes to display that. */ const AppMenuButton = GObject.registerClass({ Signals: {'changed': {}}, }, class AppMenuButton extends PanelMenu.Button { _init(panel) { super._init(0.0, null, true); this.accessible_role = Atk.Role.MENU; this._startingApps = []; this._menuManager = panel.menuManager; this._targetApp = null; let bin = new St.Bin({name: 'appMenu'}); this.add_child(bin); this.bind_property('reactive', this, 'can-focus', 0); this.reactive = false; this._container = new St.BoxLayout({style_class: 'panel-status-menu-box'}); bin.set_child(this._container); let textureCache = St.TextureCache.get_default(); textureCache.connect('icon-theme-changed', this._onIconThemeChanged.bind(this)); let iconEffect = new Clutter.DesaturateEffect(); this._iconBox = new St.Bin({ style_class: 'app-menu-icon', y_align: Clutter.ActorAlign.CENTER, }); this._iconBox.add_effect(iconEffect); this._container.add_child(this._iconBox); this._iconBox.connect('style-changed', () => { let themeNode = this._iconBox.get_theme_node(); iconEffect.enabled = themeNode.get_icon_style() === St.IconStyle.SYMBOLIC; }); this._label = new St.Label({ y_expand: true, y_align: Clutter.ActorAlign.CENTER, }); this._container.add_child(this._label); this._visible = !Main.overview.visible; if (!this._visible) this.hide(); Main.overview.connectObject( 'hiding', this._sync.bind(this), 'showing', this._sync.bind(this), this); this._spinner = new Animation.Spinner(PANEL_ICON_SIZE, { animate: true, hideOnStop: true, }); this._container.add_child(this._spinner); let menu = new AppMenu(this); this.setMenu(menu); this._menuManager.addMenu(menu); Shell.WindowTracker.get_default().connectObject('notify::focus-app', this._focusAppChanged.bind(this), this); Shell.AppSystem.get_default().connectObject('app-state-changed', this._onAppStateChanged.bind(this), this); global.window_manager.connectObject('switch-workspace', this._sync.bind(this), this); this._sync(); } fadeIn() { if (this._visible) return; this._visible = true; this.reactive = true; this.remove_all_transitions(); this.ease({ opacity: 255, duration: Overview.ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, }); } fadeOut() { if (!this._visible) return; this._visible = false; this.reactive = false; this.remove_all_transitions(); this.ease({ opacity: 0, mode: Clutter.AnimationMode.EASE_OUT_QUAD, duration: Overview.ANIMATION_TIME, }); } _syncIcon(app) { const icon = app.create_icon_texture(PANEL_ICON_SIZE - APP_MENU_ICON_MARGIN); this._iconBox.set_child(icon); } _onIconThemeChanged() { if (this._iconBox.child == null) return; if (this._targetApp) this._syncIcon(this._targetApp); } stopAnimation() { this._spinner.stop(); } startAnimation() { this._spinner.play(); } _onAppStateChanged(appSys, app) { let state = app.state; if (state !== Shell.AppState.STARTING) this._startingApps = this._startingApps.filter(a => a !== app); else if (state === Shell.AppState.STARTING) this._startingApps.push(app); // For now just resync on all running state changes; this is mainly to handle // cases where the focused window's application changes without the focus // changing. An example case is how we map OpenOffice.org based on the window // title which is a dynamic property. this._sync(); } _focusAppChanged() { let tracker = Shell.WindowTracker.get_default(); let focusedApp = tracker.focus_app; if (!focusedApp) { // If the app has just lost focus to the panel, pretend // nothing happened; otherwise you can't keynav to the // app menu. if (global.stage.key_focus != null) return; } this._sync(); } _findTargetApp() { let workspaceManager = global.workspace_manager; let workspace = workspaceManager.get_active_workspace(); let tracker = Shell.WindowTracker.get_default(); let focusedApp = tracker.focus_app; if (focusedApp && focusedApp.is_on_workspace(workspace)) return focusedApp; for (let i = 0; i < this._startingApps.length; i++) { if (this._startingApps[i].is_on_workspace(workspace)) return this._startingApps[i]; } return null; } _sync() { let targetApp = this._findTargetApp(); if (this._targetApp !== targetApp) { this._targetApp?.disconnectObject(this); this._targetApp = targetApp; if (this._targetApp) { this._targetApp.connectObject('notify::busy', this._sync.bind(this), this); this._label.set_text(this._targetApp.get_name()); this.set_accessible_name(this._targetApp.get_name()); this._syncIcon(this._targetApp); } } let visible = this._targetApp != null && !Main.overview.visibleTarget; if (visible) this.fadeIn(); else this.fadeOut(); let isBusy = this._targetApp != null && (this._targetApp.get_state() === Shell.AppState.STARTING || this._targetApp.get_busy()); if (isBusy) this.startAnimation(); else this.stopAnimation(); this.reactive = visible && !isBusy; this.menu.setApp(this._targetApp); this.emit('changed'); } }); const WorkspaceDot = GObject.registerClass({ Properties: { 'expansion': GObject.ParamSpec.double('expansion', null, null, GObject.ParamFlags.READWRITE, 0.0, 1.0, 0.0), 'width-multiplier': GObject.ParamSpec.double( 'width-multiplier', null, null, GObject.ParamFlags.READWRITE, 1.0, 10.0, 1.0), }, }, class WorkspaceDot extends Clutter.Actor { constructor(params = {}) { super({ pivot_point: new Graphene.Point({x: 0.5, y: 0.5}), ...params, }); this._dot = new St.Widget({ style_class: 'workspace-dot', y_align: Clutter.ActorAlign.CENTER, pivot_point: new Graphene.Point({x: 0.5, y: 0.5}), request_mode: Clutter.RequestMode.WIDTH_FOR_HEIGHT, }); this.add_child(this._dot); this.connect('notify::width-multiplier', () => this.queue_relayout()); this.connect('notify::expansion', () => { this._updateVisuals(); this.queue_relayout(); }); this._updateVisuals(); this._destroying = false; } _updateVisuals() { const {expansion} = this; this._dot.set({ opacity: Util.lerp(0.50, 1.0, expansion) * 255, scaleX: Util.lerp(INACTIVE_WORKSPACE_DOT_SCALE, 1.0, expansion), scaleY: Util.lerp(INACTIVE_WORKSPACE_DOT_SCALE, 1.0, expansion), }); } vfunc_get_preferred_width(forHeight) { const factor = Util.lerp(1.0, this.widthMultiplier, this.expansion); return this._dot.get_preferred_width(forHeight).map(v => Math.round(v * factor)); } vfunc_get_preferred_height(forWidth) { return this._dot.get_preferred_height(forWidth); } vfunc_allocate(box) { this.set_allocation(box); box.set_origin(0, 0); this._dot.allocate(box); } scaleIn() { this.set({ scale_x: 0, scale_y: 0, }); this.ease({ duration: 500, mode: Clutter.AnimationMode.EASE_OUT_CUBIC, scale_x: 1.0, scale_y: 1.0, }); } scaleOutAndDestroy() { this._destroying = true; this.ease({ duration: 500, mode: Clutter.AnimationMode.EASE_OUT_CUBIC, scale_x: 0.0, scale_y: 0.0, onComplete: () => this.destroy(), }); } get destroying() { return this._destroying; } }); const WorkspaceIndicators = GObject.registerClass( class WorkspaceIndicators extends St.BoxLayout { constructor() { super(); this._workspacesAdjustment = Main.createWorkspacesAdjustment(this); this._workspacesAdjustment.connectObject( 'notify::value', () => this._updateExpansion(), 'notify::upper', () => this._recalculateDots(), this); for (let i = 0; i < this._workspacesAdjustment.upper; i++) this.insert_child_at_index(new WorkspaceDot(), i); this._updateExpansion(); } _getActiveIndicators() { return [...this].filter(i => !i.destroying); } _recalculateDots() { const activeIndicators = this._getActiveIndicators(); const nIndicators = activeIndicators.length; const targetIndicators = this._workspacesAdjustment.upper; let remaining = Math.abs(nIndicators - targetIndicators); while (remaining--) { if (nIndicators < targetIndicators) { const indicator = new WorkspaceDot(); this.add_child(indicator); indicator.scaleIn(); } else { const indicator = activeIndicators[nIndicators - remaining - 1]; indicator.scaleOutAndDestroy(); } } this._updateExpansion(); } _updateExpansion() { const nIndicators = this._getActiveIndicators().length; const activeWorkspace = this._workspacesAdjustment.value; let widthMultiplier; if (nIndicators <= 2) widthMultiplier = 3.625; else if (nIndicators <= 5) widthMultiplier = 3.25; else widthMultiplier = 2.75; this.get_children().forEach((indicator, index) => { const distance = Math.abs(index - activeWorkspace); indicator.expansion = Math.clamp(1 - distance, 0, 1); indicator.widthMultiplier = widthMultiplier; }); } }); const ActivitiesButton = GObject.registerClass( class ActivitiesButton extends PanelMenu.Button { _init() { super._init(0.0, null, true); this.set({ name: 'panelActivities', accessible_role: Atk.Role.TOGGLE_BUTTON, /* Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview". */ accessible_name: _('Activities'), }); this.add_child(new WorkspaceIndicators()); Main.overview.connectObject('showing', () => this.add_style_pseudo_class('checked'), this); Main.overview.connectObject('hiding', () => this.remove_style_pseudo_class('checked'), this); this._xdndTimeOut = 0; } handleDragOver(source, _actor, _x, _y, _time) { if (source !== Main.xdndHandler) return DND.DragMotionResult.CONTINUE; if (this._xdndTimeOut !== 0) GLib.source_remove(this._xdndTimeOut); this._xdndTimeOut = GLib.timeout_add(GLib.PRIORITY_DEFAULT, BUTTON_DND_ACTIVATION_TIMEOUT, () => { this._xdndToggleOverview(); }); GLib.Source.set_name_by_id(this._xdndTimeOut, '[gnome-shell] this._xdndToggleOverview'); return DND.DragMotionResult.CONTINUE; } vfunc_event(event) { if (event.type() === Clutter.EventType.TOUCH_END || event.type() === Clutter.EventType.BUTTON_RELEASE) { if (Main.overview.shouldToggleByCornerOrButton()) Main.overview.toggle(); } return Main.wm.handleWorkspaceScroll(event); } vfunc_key_release_event(event) { let symbol = event.get_key_symbol(); if (symbol === Clutter.KEY_Return || symbol === Clutter.KEY_space) { if (Main.overview.shouldToggleByCornerOrButton()) { Main.overview.toggle(); return Clutter.EVENT_STOP; } } return Clutter.EVENT_PROPAGATE; } _xdndToggleOverview() { let [x, y] = global.get_pointer(); let pickedActor = global.stage.get_actor_at_pos(Clutter.PickMode.REACTIVE, x, y); if (pickedActor === this && Main.overview.shouldToggleByCornerOrButton()) Main.overview.toggle(); GLib.source_remove(this._xdndTimeOut); this._xdndTimeOut = 0; return GLib.SOURCE_REMOVE; } }); const UnsafeModeIndicator = GObject.registerClass( class UnsafeModeIndicator extends SystemIndicator { _init() { super._init(); this._indicator = this._addIndicator(); this._indicator.icon_name = 'channel-insecure-symbolic'; global.context.bind_property('unsafe-mode', this._indicator, 'visible', GObject.BindingFlags.SYNC_CREATE); } }); const QuickSettings = GObject.registerClass( class QuickSettings extends PanelMenu.Button { constructor() { super(0.0, C_('System menu in the top bar', 'System'), true); this._indicators = new St.BoxLayout({ style_class: 'panel-status-indicators-box', }); this.add_child(this._indicators); this.setMenu(new QuickSettingsMenu(this, N_QUICK_SETTINGS_COLUMNS)); this._setupIndicators().catch(error => logError(error, 'Failed to setup quick settings')); } async _setupIndicators() { if (Config.HAVE_NETWORKMANAGER) { /** @type {import('./status/network.js')} */ const NetworkStatus = await import('./status/network.js'); this._network = new NetworkStatus.Indicator(); } else { this._network = null; } if (Config.HAVE_BLUETOOTH) { /** @type {import('./status/bluetooth.js')} */ const BluetoothStatus = await import('./status/bluetooth.js'); this._bluetooth = new BluetoothStatus.Indicator(); } else { this._bluetooth = null; } this._system = new SystemStatus.Indicator(); this._camera = new CameraStatus.Indicator(); this._volumeOutput = new VolumeStatus.OutputIndicator(); this._volumeInput = new VolumeStatus.InputIndicator(); this._brightness = new BrightnessStatus.Indicator(); this._remoteAccess = new RemoteAccessStatus.RemoteAccessApplet(); this._location = new LocationStatus.Indicator(); this._thunderbolt = new ThunderboltStatus.Indicator(); this._nightLight = new NightLightStatus.Indicator(); this._darkMode = new DarkModeStatus.Indicator(); this._backlight = new BacklightStatus.Indicator(); this._powerProfiles = new PowerProfileStatus.Indicator(); this._rfkill = new RFKillStatus.Indicator(); this._autoRotate = new AutoRotateStatus.Indicator(); this._unsafeMode = new UnsafeModeIndicator(); this._backgroundApps = new BackgroundAppsStatus.Indicator(); // add privacy-related indicators before any external indicators let pos = 0; this._indicators.insert_child_at_index(this._remoteAccess, pos++); this._indicators.insert_child_at_index(this._camera, pos++); this._indicators.insert_child_at_index(this._volumeInput, pos++); this._indicators.insert_child_at_index(this._location, pos++); // append all other indicators this._indicators.add_child(this._brightness); this._indicators.add_child(this._thunderbolt); this._indicators.add_child(this._nightLight); if (this._network) this._indicators.add_child(this._network); this._indicators.add_child(this._darkMode); this._indicators.add_child(this._backlight); this._indicators.add_child(this._powerProfiles); if (this._bluetooth) this._indicators.add_child(this._bluetooth); this._indicators.add_child(this._rfkill); this._indicators.add_child(this._autoRotate); this._indicators.add_child(this._volumeOutput); this._indicators.add_child(this._unsafeMode); this._indicators.add_child(this._system); // add our quick settings items before any external ones const sibling = this.menu.getFirstItem(); this._addItemsBefore(this._system.quickSettingsItems, sibling, N_QUICK_SETTINGS_COLUMNS); this._addItemsBefore(this._volumeOutput.quickSettingsItems, sibling, N_QUICK_SETTINGS_COLUMNS); this._addItemsBefore(this._volumeInput.quickSettingsItems, sibling, N_QUICK_SETTINGS_COLUMNS); this._addItemsBefore(this._brightness.quickSettingsItems, sibling, N_QUICK_SETTINGS_COLUMNS); this._addItemsBefore(this._camera.quickSettingsItems, sibling); this._addItemsBefore(this._remoteAccess.quickSettingsItems, sibling); this._addItemsBefore(this._thunderbolt.quickSettingsItems, sibling); this._addItemsBefore(this._location.quickSettingsItems, sibling); if (this._network) this._addItemsBefore(this._network.quickSettingsItems, sibling); if (this._bluetooth) this._addItemsBefore(this._bluetooth.quickSettingsItems, sibling); this._addItemsBefore(this._powerProfiles.quickSettingsItems, sibling); this._addItemsBefore(this._nightLight.quickSettingsItems, sibling); this._addItemsBefore(this._darkMode.quickSettingsItems, sibling); this._addItemsBefore(this._backlight.quickSettingsItems, sibling); this._addItemsBefore(this._rfkill.quickSettingsItems, sibling); this._addItemsBefore(this._autoRotate.quickSettingsItems, sibling); this._addItemsBefore(this._unsafeMode.quickSettingsItems, sibling); // append background apps this._backgroundApps.quickSettingsItems.forEach( item => this.menu.addItem(item, N_QUICK_SETTINGS_COLUMNS)); } _addItemsBefore(items, sibling, colSpan = 1) { items.forEach(item => this.menu.insertItemBefore(item, sibling, colSpan)); } /** * Insert indicator and quick settings items at * appropriate positions * * @param {PanelMenu.Button} indicator * @param {number=} colSpan */ addExternalIndicator(indicator, colSpan = 1) { // Insert before first non-privacy indicator if it exists let sibling = this._brightness ?? null; this._indicators.insert_child_below(indicator, sibling); // Insert before background apps if it exists sibling = this._backgroundApps?.quickSettingsItems?.at(-1) ?? null; this._addItemsBefore(indicator.quickSettingsItems, sibling, colSpan); } }); const PANEL_ITEM_IMPLEMENTATIONS = { 'activities': ActivitiesButton, 'appMenu': AppMenuButton, 'quickSettings': QuickSettings, 'dateMenu': DateMenuButton, 'a11y': ATIndicator, 'keyboard': InputSourceIndicator, 'dwellClick': DwellClickIndicator, 'screenRecording': ScreenRecordingIndicator, 'screenSharing': ScreenSharingIndicator, }; export const Panel = GObject.registerClass( class Panel extends St.Widget { _init() { super._init({ name: 'panel', reactive: true, }); this.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS); this._sessionStyle = null; this.statusArea = {}; this.menuManager = new PopupMenu.PopupMenuManager(this); this._leftBox = new St.BoxLayout({name: 'panelLeft'}); this.add_child(this._leftBox); this._centerBox = new St.BoxLayout({name: 'panelCenter'}); this.add_child(this._centerBox); this._rightBox = new St.BoxLayout({name: 'panelRight'}); this.add_child(this._rightBox); this.connect('button-press-event', this._onButtonPress.bind(this)); this.connect('touch-event', this._onTouchEvent.bind(this)); Main.overview.connectObject('showing', () => this.add_style_pseudo_class('overview'), this); Main.overview.connectObject('hiding', () => this.remove_style_pseudo_class('overview'), this); Main.layoutManager.panelBox.add_child(this); Main.ctrlAltTabManager.addGroup(this, _('Top Bar'), 'shell-focus-top-bar-symbolic', {sortGroup: CtrlAltTab.SortGroup.TOP}); Main.sessionMode.connect('updated', this._updatePanel.bind(this)); global.display.connect('workareas-changed', () => this.queue_relayout()); this._updatePanel(); } vfunc_get_preferred_width(_forHeight) { let primaryMonitor = Main.layoutManager.primaryMonitor; if (primaryMonitor) return [0, primaryMonitor.width]; return [0, 0]; } vfunc_allocate(box) { this.set_allocation(box); let allocWidth = box.x2 - box.x1; let allocHeight = box.y2 - box.y1; let [, leftNaturalWidth] = this._leftBox.get_preferred_width(-1); let [, centerNaturalWidth] = this._centerBox.get_preferred_width(-1); let [, rightNaturalWidth] = this._rightBox.get_preferred_width(-1); let sideWidth, centerWidth; centerWidth = centerNaturalWidth; // get workspace area and center date entry relative to it let monitor = Main.layoutManager.findMonitorForActor(this); let centerOffset = 0; if (monitor) { let workArea = Main.layoutManager.getWorkAreaForMonitor(monitor.index); centerOffset = 2 * (workArea.x - monitor.x) + workArea.width - monitor.width; } sideWidth = Math.max(0, (allocWidth - centerWidth + centerOffset) / 2); let childBox = new Clutter.ActorBox(); childBox.y1 = 0; childBox.y2 = allocHeight; if (this.get_text_direction() === Clutter.TextDirection.RTL) { childBox.x1 = Math.max( allocWidth - Math.min(Math.floor(sideWidth), leftNaturalWidth), 0); childBox.x2 = allocWidth; } else { childBox.x1 = 0; childBox.x2 = Math.min(Math.floor(sideWidth), leftNaturalWidth); } this._leftBox.allocate(childBox); childBox.x1 = Math.ceil(sideWidth); childBox.y1 = 0; childBox.x2 = childBox.x1 + centerWidth; childBox.y2 = allocHeight; this._centerBox.allocate(childBox); childBox.y1 = 0; childBox.y2 = allocHeight; if (this.get_text_direction() === Clutter.TextDirection.RTL) { childBox.x1 = 0; childBox.x2 = Math.min(Math.floor(sideWidth), rightNaturalWidth); } else { childBox.x1 = Math.max( allocWidth - Math.min(Math.floor(sideWidth), rightNaturalWidth), 0); childBox.x2 = allocWidth; } this._rightBox.allocate(childBox); } _tryDragWindow(event) { if (Main.modalCount > 0) return Clutter.EVENT_PROPAGATE; const targetActor = global.stage.get_event_actor(event); if (targetActor !== this) return Clutter.EVENT_PROPAGATE; const [x, y] = event.get_coords(); let dragWindow = this._getDraggableWindowForPosition(x); if (!dragWindow) return Clutter.EVENT_PROPAGATE; const positionHint = new Graphene.Point({x, y}); return dragWindow.begin_grab_op( Meta.GrabOp.MOVING, event.get_device(), event.get_event_sequence(), event.get_time(), positionHint) ? Clutter.EVENT_STOP : Clutter.EVENT_PROPAGATE; } _onButtonPress(actor, event) { if (event.get_button() !== Clutter.BUTTON_PRIMARY) return Clutter.EVENT_PROPAGATE; return this._tryDragWindow(event); } _onTouchEvent(actor, event) { if (event.type() !== Clutter.EventType.TOUCH_BEGIN) return Clutter.EVENT_PROPAGATE; return this._tryDragWindow(event); } vfunc_key_press_event(event) { let symbol = event.get_key_symbol(); if (symbol === Clutter.KEY_Escape) { global.display.focus_default_window(event.get_time()); return Clutter.EVENT_STOP; } return super.vfunc_key_press_event(event); } _toggleMenu(indicator) { if (!indicator || !indicator.mapped) return; // menu not supported by current session mode let menu = indicator.menu; if (!indicator.reactive) return; menu.toggle(); if (menu.isOpen) menu.actor.navigate_focus(null, St.DirectionType.TAB_FORWARD, false); } _closeMenu(indicator) { if (!indicator || !indicator.mapped) return; // menu not supported by current session mode if (!indicator.reactive) return; indicator.menu.close(); } toggleCalendar() { this._toggleMenu(this.statusArea.dateMenu); } toggleQuickSettings() { this._toggleMenu(this.statusArea.quickSettings); } closeCalendar() { this._closeMenu(this.statusArea.dateMenu); } closeQuickSettings() { this._closeMenu(this.statusArea.quickSettings); } set boxOpacity(value) { let isReactive = value > 0; this._leftBox.opacity = value; this._leftBox.reactive = isReactive; this._centerBox.opacity = value; this._centerBox.reactive = isReactive; this._rightBox.opacity = value; this._rightBox.reactive = isReactive; } get boxOpacity() { return this._leftBox.opacity; } _updatePanel() { let panel = Main.sessionMode.panel; this._hideIndicators(); this._updateBox(panel.left, this._leftBox); this._updateBox(panel.center, this._centerBox); this._updateBox(panel.right, this._rightBox); if (panel.left.includes('dateMenu')) Main.messageTray.bannerAlignment = Clutter.ActorAlign.START; else if (panel.right.includes('dateMenu')) Main.messageTray.bannerAlignment = Clutter.ActorAlign.END; // Default to center if there is no dateMenu else Main.messageTray.bannerAlignment = Clutter.ActorAlign.CENTER; if (this._sessionStyle) this.remove_style_class_name(this._sessionStyle); this._sessionStyle = Main.sessionMode.panelStyle; if (this._sessionStyle) this.add_style_class_name(this._sessionStyle); } _hideIndicators() { for (let role in PANEL_ITEM_IMPLEMENTATIONS) { let indicator = this.statusArea[role]; if (!indicator) continue; indicator.container.hide(); } } _ensureIndicator(role) { let indicator = this.statusArea[role]; if (!indicator) { let constructor = PANEL_ITEM_IMPLEMENTATIONS[role]; if (!constructor) { // This icon is not implemented (this is a bug) return null; } indicator = new constructor(this); this.statusArea[role] = indicator; } return indicator; } _updateBox(elements, box) { let nChildren = box.get_n_children(); for (let i = 0; i < elements.length; i++) { let role = elements[i]; let indicator = this._ensureIndicator(role); if (indicator == null) continue; this._addToPanelBox(role, indicator, i + nChildren, box); } } _addToPanelBox(role, indicator, position, box) { let container = indicator.container; container.show(); let parent = container.get_parent(); if (parent) parent.remove_child(container); box.insert_child_at_index(container, position); this.statusArea[role] = indicator; let destroyId = indicator.connect('destroy', emitter => { delete this.statusArea[role]; emitter.disconnect(destroyId); }); indicator.connect('menu-set', this._onMenuSet.bind(this)); this._onMenuSet(indicator); } addToStatusArea(role, indicator, position, box) { if (this.statusArea[role]) throw new Error(`Extension point conflict: there is already a status indicator for role ${role}`); if (!(indicator instanceof PanelMenu.Button)) throw new TypeError('Status indicator must be an instance of PanelMenu.Button'); position ??= 0; let boxes = { left: this._leftBox, center: this._centerBox, right: this._rightBox, }; let boxContainer = boxes[box] || this._rightBox; this.statusArea[role] = indicator; this._addToPanelBox(role, indicator, position, boxContainer); return indicator; } _onMenuSet(indicator) { if (!indicator.menu || indicator.menu._openChangedConnected) return; this.menuManager.addMenu(indicator.menu); indicator.menu._openChangedConnected = true; indicator.menu.connectObject('open-state-changed', (menu, isOpen) => { let boxAlignment; if (this._leftBox.contains(indicator.container)) boxAlignment = Clutter.ActorAlign.START; else if (this._centerBox.contains(indicator.container)) boxAlignment = Clutter.ActorAlign.CENTER; else if (this._rightBox.contains(indicator.container)) boxAlignment = Clutter.ActorAlign.END; if (boxAlignment === Main.messageTray.bannerAlignment) Main.messageTray.bannerBlocked = isOpen; }, this); } _getDraggableWindowForPosition(stageX) { let workspaceManager = global.workspace_manager; const windows = workspaceManager.get_active_workspace().list_windows(); const allWindowsByStacking = global.display.sort_windows_by_stacking(windows).reverse(); return allWindowsByStacking.find(metaWindow => { let rect = metaWindow.get_frame_rect(); return metaWindow.is_on_primary_monitor() && metaWindow.showing_on_its_workspace() && metaWindow.get_window_type() !== Meta.WindowType.DESKTOP && metaWindow.maximized_vertically && stageX > rect.x && stageX < rect.x + rect.width; }); } }); 070701000001D2000081A40000000000000000000000016712993F0000171E000000000000000000000000000000000000002400000000gnome-shell-47.1/js/ui/panelMenu.jsimport Atk from 'gi://Atk'; import Clutter from 'gi://Clutter'; import GObject from 'gi://GObject'; import St from 'gi://St'; import * as Main from './main.js'; import * as PopupMenu from './popupMenu.js'; export const ButtonBox = GObject.registerClass( class ButtonBox extends St.Widget { _init(params) { super._init({ style_class: 'panel-button', x_expand: true, y_expand: true, ...params, }); this._delegate = this; this.container = new St.Bin({child: this}); this.connect('style-changed', this._onStyleChanged.bind(this)); this.connect('destroy', this._onDestroy.bind(this)); this._minHPadding = this._natHPadding = 0.0; } _onStyleChanged(actor) { let themeNode = actor.get_theme_node(); this._minHPadding = themeNode.get_length('-minimum-hpadding'); this._natHPadding = themeNode.get_length('-natural-hpadding'); } vfunc_get_preferred_width(_forHeight) { let child = this.get_first_child(); let minimumSize, naturalSize; if (child) [minimumSize, naturalSize] = child.get_preferred_width(-1); else minimumSize = naturalSize = 0; minimumSize += 2 * this._minHPadding; naturalSize += 2 * this._natHPadding; return [minimumSize, naturalSize]; } vfunc_get_preferred_height(_forWidth) { let child = this.get_first_child(); if (child) return child.get_preferred_height(-1); return [0, 0]; } vfunc_allocate(box) { this.set_allocation(box); let child = this.get_first_child(); if (!child) return; let [, natWidth] = child.get_preferred_width(-1); let availWidth = box.x2 - box.x1; let availHeight = box.y2 - box.y1; let childBox = new Clutter.ActorBox(); if (natWidth + 2 * this._natHPadding <= availWidth) { childBox.x1 = this._natHPadding; childBox.x2 = availWidth - this._natHPadding; } else { childBox.x1 = this._minHPadding; childBox.x2 = availWidth - this._minHPadding; } childBox.y1 = 0; childBox.y2 = availHeight; child.allocate(childBox); } _onDestroy() { this.container.child = null; this.container.destroy(); } }); export const Button = GObject.registerClass({ Signals: {'menu-set': {}}, }, class PanelMenuButton extends ButtonBox { _init(menuAlignment, nameText, dontCreateMenu) { super._init({ reactive: true, can_focus: true, track_hover: true, accessible_name: nameText ?? '', accessible_role: Atk.Role.MENU, }); if (dontCreateMenu) this.menu = new PopupMenu.PopupDummyMenu(this); else this.setMenu(new PopupMenu.PopupMenu(this, menuAlignment, St.Side.TOP, 0)); this.connect('key-press-event', (o, ev) => global.focus_manager.navigate_from_event(ev)); } setSensitive(sensitive) { this.reactive = sensitive; this.can_focus = sensitive; this.track_hover = sensitive; } setMenu(menu) { if (this.menu) this.menu.destroy(); this.menu = menu; if (this.menu) { this.menu.actor.add_style_class_name('panel-menu'); this.menu.connect('open-state-changed', this._onOpenStateChanged.bind(this)); this.menu.actor.connect('key-press-event', this._onMenuKeyPress.bind(this)); Main.uiGroup.add_child(this.menu.actor); this.menu.actor.hide(); } this.emit('menu-set'); } vfunc_event(event) { if (this.menu && (event.type() === Clutter.EventType.TOUCH_BEGIN || event.type() === Clutter.EventType.BUTTON_PRESS)) this.menu.toggle(); return Clutter.EVENT_PROPAGATE; } vfunc_hide() { super.vfunc_hide(); if (this.menu) this.menu.close(); } _onMenuKeyPress(actor, event) { if (global.focus_manager.navigate_from_event(event)) return Clutter.EVENT_STOP; let symbol = event.get_key_symbol(); if (symbol === Clutter.KEY_Left || symbol === Clutter.KEY_Right) { let group = global.focus_manager.get_group(this); if (group) { let direction = symbol === Clutter.KEY_Left ? St.DirectionType.LEFT : St.DirectionType.RIGHT; group.navigate_focus(this, direction, false); return Clutter.EVENT_STOP; } } return Clutter.EVENT_PROPAGATE; } _onOpenStateChanged(menu, open) { if (open) this.add_style_pseudo_class('active'); else this.remove_style_pseudo_class('active'); // Setting the max-height won't do any good if the minimum height of the // menu is higher then the screen; it's useful if part of the menu is // scrollable so the minimum height is smaller than the natural height let workArea = Main.layoutManager.getWorkAreaForMonitor(Main.layoutManager.primaryIndex); let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor; let verticalMargins = this.menu.actor.margin_top + this.menu.actor.margin_bottom; // The workarea and margin dimensions are in physical pixels, but CSS // measures are in logical pixels, so make sure to consider the scale // factor when computing max-height let maxHeight = Math.round((workArea.height - verticalMargins) / scaleFactor); this.menu.actor.style = `max-height: ${maxHeight}px;`; } _onDestroy() { if (this.menu) this.menu.destroy(); super._onDestroy(); } }); 070701000001D3000081A40000000000000000000000016712993F00000EC1000000000000000000000000000000000000002D00000000gnome-shell-47.1/js/ui/pointerA11yTimeout.jsimport Clutter from 'gi://Clutter'; import GObject from 'gi://GObject'; import Meta from 'gi://Meta'; import St from 'gi://St'; import * as Main from './main.js'; import Cairo from 'gi://cairo'; const SUCCESS_ZOOM_OUT_DURATION = 150; const PieTimer = GObject.registerClass({ Properties: { 'angle': GObject.ParamSpec.double( 'angle', null, null, GObject.ParamFlags.READWRITE, 0, 2 * Math.PI, 0), }, }, class PieTimer extends St.DrawingArea { _init() { this._angle = 0; super._init({ style_class: 'pie-timer', opacity: 0, visible: false, can_focus: false, reactive: false, }); this.set_pivot_point(0.5, 0.5); } get angle() { return this._angle; } set angle(angle) { if (this._angle === angle) return; this._angle = angle; this.notify('angle'); this.queue_repaint(); } vfunc_repaint() { let node = this.get_theme_node(); let backgroundColor = node.get_color('-pie-background-color'); let borderColor = node.get_color('-pie-border-color'); let borderWidth = node.get_length('-pie-border-width'); let [width, height] = this.get_surface_size(); let radius = Math.min(width / 2, height / 2); let startAngle = 3 * Math.PI / 2; let endAngle = startAngle + this._angle; let cr = this.get_context(); cr.setLineCap(Cairo.LineCap.ROUND); cr.setLineJoin(Cairo.LineJoin.ROUND); cr.translate(width / 2, height / 2); if (this._angle < 2 * Math.PI) cr.moveTo(0, 0); cr.arc(0, 0, radius - borderWidth, startAngle, endAngle); if (this._angle < 2 * Math.PI) cr.lineTo(0, 0); cr.closePath(); cr.setLineWidth(0); cr.setSourceColor(backgroundColor); cr.fillPreserve(); cr.setLineWidth(borderWidth); cr.setSourceColor(borderColor); cr.stroke(); cr.$dispose(); } start(x, y, duration) { this.x = x - this.width / 2; this.y = y - this.height / 2; this.show(); this.ease({ opacity: 255, duration: duration / 4, mode: Clutter.AnimationMode.EASE_IN_QUAD, }); this.ease_property('angle', 2 * Math.PI, { duration, mode: Clutter.AnimationMode.LINEAR, onComplete: this._onTransitionComplete.bind(this), }); } _onTransitionComplete() { this.ease({ scale_x: 2, scale_y: 2, opacity: 0, duration: SUCCESS_ZOOM_OUT_DURATION, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onStopped: () => this.destroy(), }); } }); export class PointerA11yTimeout { constructor() { let seat = Clutter.get_default_backend().get_default_seat(); seat.connect('ptr-a11y-timeout-started', (o, device, type, timeout) => { let [x, y] = global.get_pointer(); this._pieTimer = new PieTimer(); Main.uiGroup.add_child(this._pieTimer); Main.uiGroup.set_child_above_sibling(this._pieTimer, null); this._pieTimer.start(x, y, timeout); if (type === Clutter.PointerA11yTimeoutType.GESTURE) global.display.set_cursor(Meta.Cursor.CROSSHAIR); }); seat.connect('ptr-a11y-timeout-stopped', (o, device, type, clicked) => { if (!clicked) this._pieTimer.destroy(); if (type === Clutter.PointerA11yTimeoutType.GESTURE) global.display.set_cursor(Meta.Cursor.DEFAULT); }); } } 070701000001D4000081A40000000000000000000000016712993F00000ECC000000000000000000000000000000000000002900000000gnome-shell-47.1/js/ui/pointerWatcher.jsimport GLib from 'gi://GLib'; // We stop polling if the user is idle for more than this amount of time const IDLE_TIME = 1000; // This file implements a reasonably efficient system for tracking the position // of the mouse pointer. We simply query the pointer from the X server in a loop, // but we turn off the polling when the user is idle. let _pointerWatcher = null; /** * @returns {PointerWatcher} */ export function getPointerWatcher() { if (_pointerWatcher == null) _pointerWatcher = new PointerWatcher(); return _pointerWatcher; } class PointerWatch { constructor(watcher, interval, callback) { this.watcher = watcher; this.interval = interval; this.callback = callback; } // remove: // remove this watch. This function may safely be called // while the callback is executing. remove() { this.watcher._removeWatch(this); } } class PointerWatcher { constructor() { this._idleMonitor = global.backend.get_core_idle_monitor(); this._idleMonitor.add_idle_watch(IDLE_TIME, this._onIdleMonitorBecameIdle.bind(this)); this._idle = this._idleMonitor.get_idletime() > IDLE_TIME; this._watches = []; this.pointerX = null; this.pointerY = null; } // addWatch: // @interval: hint as to the time resolution needed. When the user is // not idle, the position of the pointer will be queried at least // once every this many milliseconds. // @callback to call when the pointer position changes - takes // two arguments, X and Y. // // Set up a watch on the position of the mouse pointer. Returns a // PointerWatch object which has a remove() method to remove the watch. addWatch(interval, callback) { // Avoid unreliably calling the watch for the current position this._updatePointer(); let watch = new PointerWatch(this, interval, callback); this._watches.push(watch); this._updateTimeout(); return watch; } _removeWatch(watch) { for (let i = 0; i < this._watches.length; i++) { if (this._watches[i] === watch) { this._watches.splice(i, 1); this._updateTimeout(); return; } } } _onIdleMonitorBecameActive() { this._idle = false; this._updatePointer(); this._updateTimeout(); } _onIdleMonitorBecameIdle() { this._idle = true; this._idleMonitor.add_user_active_watch(this._onIdleMonitorBecameActive.bind(this)); this._updateTimeout(); } _updateTimeout() { if (this._timeoutId) { GLib.source_remove(this._timeoutId); this._timeoutId = 0; } if (this._idle || this._watches.length === 0) return; let minInterval = this._watches[0].interval; for (let i = 1; i < this._watches.length; i++) minInterval = Math.min(this._watches[i].interval, minInterval); this._timeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, minInterval, this._onTimeout.bind(this)); GLib.Source.set_name_by_id(this._timeoutId, '[gnome-shell] this._onTimeout'); } _onTimeout() { this._updatePointer(); return GLib.SOURCE_CONTINUE; } _updatePointer() { let [x, y] = global.get_pointer(); if (this.pointerX === x && this.pointerY === y) return; this.pointerX = x; this.pointerY = y; for (let i = 0; i < this._watches.length;) { let watch = this._watches[i]; watch.callback(x, y); if (watch === this._watches[i]) // guard against self-removal i++; } } } 070701000001D5000081A40000000000000000000000016712993F0000B904000000000000000000000000000000000000002400000000gnome-shell-47.1/js/ui/popupMenu.jsimport Atk from 'gi://Atk'; import Clutter from 'gi://Clutter'; import Gio from 'gi://Gio'; import GObject from 'gi://GObject'; import Graphene from 'gi://Graphene'; import Shell from 'gi://Shell'; import St from 'gi://St'; import * as Signals from '../misc/signals.js'; import * as BoxPointer from './boxpointer.js'; import * as Main from './main.js'; import * as Params from '../misc/params.js'; /** @enum {number} */ export const Ornament = { NONE: 0, DOT: 1, CHECK: 2, HIDDEN: 3, NO_DOT: 4, }; function isPopupMenuItemVisible(child) { if (child._delegate instanceof PopupMenuSection) { if (child._delegate.isEmpty()) return false; } return child.visible; } /** * arrowIcon * * @param {St.Side} side - Side to which the arrow points. * @returns {St.Icon} a new arrow icon */ export function arrowIcon(side) { let iconName; switch (side) { case St.Side.TOP: iconName = 'pan-up-symbolic'; break; case St.Side.RIGHT: iconName = 'pan-end-symbolic'; break; case St.Side.BOTTOM: iconName = 'pan-down-symbolic'; break; case St.Side.LEFT: iconName = 'pan-start-symbolic'; break; } const arrow = new St.Icon({ style_class: 'popup-menu-arrow', icon_name: iconName, accessible_role: Atk.Role.ARROW, y_expand: true, y_align: Clutter.ActorAlign.CENTER, }); return arrow; } export const PopupBaseMenuItem = GObject.registerClass({ Properties: { 'active': GObject.ParamSpec.boolean( 'active', null, null, GObject.ParamFlags.READWRITE, false), 'sensitive': GObject.ParamSpec.boolean( 'sensitive', null, null, GObject.ParamFlags.READWRITE, true), }, Signals: { 'activate': {param_types: [Clutter.Event.$gtype]}, }, }, class PopupBaseMenuItem extends St.BoxLayout { _init(params) { params = Params.parse(params, { reactive: true, activate: true, hover: true, style_class: null, can_focus: true, }); super._init({ style_class: 'popup-menu-item', reactive: params.reactive, track_hover: params.reactive, can_focus: params.can_focus, accessible_role: Atk.Role.MENU_ITEM, }); this._delegate = this; this._ornamentIcon = new St.Icon({style_class: 'popup-menu-ornament'}); this.add_child(this._ornamentIcon); this.setOrnament(Ornament.HIDDEN); this._parent = null; this._active = false; this._activatable = params.reactive && params.activate; this._sensitive = true; this._clickAction = new Clutter.ClickAction({ enabled: this._activatable, }); this._clickAction.connect('clicked', () => this.activate(Clutter.get_current_event())); this._clickAction.connect('notify::pressed', () => { if (this._clickAction.pressed) this.add_style_pseudo_class('active'); else this.remove_style_pseudo_class('active'); }); this.add_action(this._clickAction); if (!this._activatable) this.add_style_class_name('popup-inactive-menu-item'); if (params.style_class) this.add_style_class_name(params.style_class); if (params.reactive && params.hover) this.bind_property('hover', this, 'active', GObject.BindingFlags.SYNC_CREATE); } get actor() { /* This is kept for compatibility with current implementation, and we don't want to warn here yet since PopupMenu depends on this */ return this; } _getTopMenu() { if (this._parent) return this._parent._getTopMenu(); else return this; } _setParent(parent) { this._parent = parent; } vfunc_key_press_event(event) { if (global.focus_manager.navigate_from_event(event)) return Clutter.EVENT_STOP; if (!this._activatable) return super.vfunc_key_press_event(event); let state = event.get_state(); // if user has a modifier down (except capslock and numlock) // then don't handle the key press here state &= ~Clutter.ModifierType.LOCK_MASK; state &= ~Clutter.ModifierType.MOD2_MASK; state &= Clutter.ModifierType.MODIFIER_MASK; if (state) return Clutter.EVENT_PROPAGATE; let symbol = event.get_key_symbol(); if (symbol === Clutter.KEY_space || symbol === Clutter.KEY_Return) { this.activate(event); return Clutter.EVENT_STOP; } // Support wrapping navigation in the menu if (symbol === Clutter.KEY_Up || symbol === Clutter.KEY_Down) { const group = global.focus_manager.get_group(this); const direction = symbol === Clutter.KEY_Up ? St.DirectionType.UP : St.DirectionType.DOWN; if (group?.navigate_focus(this, direction, true)) return Clutter.EVENT_STOP; } return Clutter.EVENT_PROPAGATE; } vfunc_key_focus_in() { super.vfunc_key_focus_in(); this.active = true; } vfunc_key_focus_out() { super.vfunc_key_focus_out(); this.active = false; } activate(event) { this.emit('activate', event); } get active() { return this._active; } set active(active) { let activeChanged = active !== this.active; if (activeChanged) { this._active = active; if (active) { this.add_style_pseudo_class('selected'); if (this.can_focus) this.grab_key_focus(); } else { this.remove_style_pseudo_class('selected'); // Remove the CSS active state if the user press the button and // while holding moves to another menu item, so we don't paint all items. // The correct behaviour would be to set the new item with the CSS // active state as well, but button-press-event is not triggered, // so we should track it in our own, which would involve some work // in the container this.remove_style_pseudo_class('active'); } this.notify('active'); } } syncSensitive() { let sensitive = this.sensitive; this.reactive = sensitive; this.can_focus = sensitive; this.notify('sensitive'); return sensitive; } getSensitive() { const parentSensitive = this._parent?.sensitive ?? true; return this._activatable && this._sensitive && parentSensitive; } setSensitive(sensitive) { if (this._sensitive === sensitive) return; this._sensitive = sensitive; this.syncSensitive(); } get sensitive() { return this.getSensitive(); } set sensitive(sensitive) { this.setSensitive(sensitive); } setOrnament(ornament) { if (ornament === this._ornament) return; this._ornament = ornament; if (ornament === Ornament.DOT) { this._ornamentIcon.icon_name = 'ornament-dot-checked-symbolic'; this.add_accessible_state(Atk.StateType.CHECKED); } else if (ornament === Ornament.NO_DOT) { this._ornamentIcon.icon_name = 'ornament-dot-unchecked-symbolic'; this.remove_accessible_state(Atk.StateType.CHECKED); } else if (ornament === Ornament.CHECK) { this._ornamentIcon.icon_name = 'ornament-check-symbolic'; this.add_accessible_state(Atk.StateType.CHECKED); } else if (ornament === Ornament.NONE || ornament === Ornament.HIDDEN) { this._ornamentIcon.icon_name = ''; this.remove_accessible_state(Atk.StateType.CHECKED); } this._ornamentIcon.visible = ornament !== Ornament.HIDDEN; this._updateOrnamentStyle(); } _updateOrnamentStyle() { if (this._ornament === Ornament.CHECK || this._ornament === Ornament.NONE) this.add_style_class_name('popup-ornamented-menu-item'); else this.remove_style_class_name('popup-ornamented-menu-item'); } }); export const PopupMenuItem = GObject.registerClass( class PopupMenuItem extends PopupBaseMenuItem { _init(text, params) { super._init(params); this.label = new St.Label({ text, y_expand: true, y_align: Clutter.ActorAlign.CENTER, }); this.add_child(this.label); this.label_actor = this.label; } }); export const PopupSeparatorMenuItem = GObject.registerClass( class PopupSeparatorMenuItem extends PopupBaseMenuItem { _init(text) { super._init({ style_class: 'popup-separator-menu-item', reactive: false, can_focus: false, }); this.label = new St.Label({text: text || ''}); this.add_child(this.label); this.label_actor = this.label; this.label.connect('notify::text', this._syncVisibility.bind(this)); this._syncVisibility(); this._separator = new St.Widget({ style_class: 'popup-separator-menu-item-separator', x_expand: true, y_expand: true, y_align: Clutter.ActorAlign.CENTER, }); this.add_child(this._separator); } _syncVisibility() { this.label.visible = this.label.text !== ''; } }); export const Switch = GObject.registerClass({ Properties: { 'state': GObject.ParamSpec.boolean( 'state', null, null, GObject.ParamFlags.READWRITE, false), }, }, class Switch extends St.Widget { _init(state) { this._state = false; this._dragging = false; super._init({ style_class: 'toggle-switch', accessible_role: Atk.Role.CHECK_BOX, y_align: Clutter.ActorAlign.CENTER, track_hover: true, reactive: true, }); const box = new St.BoxLayout({ x_expand: true, y_expand: true, constraints: new Clutter.BindConstraint({ source: this, coordinate: Clutter.BindCoordinate.SIZE, }), }); this.add_child(box); this._onIcon = new St.Icon({ icon_name: 'switch-on-symbolic', x_expand: true, x_align: Clutter.ActorAlign.CENTER, y_align: Clutter.ActorAlign.CENTER, }); box.add_child(this._onIcon); this._offIcon = new St.Icon({ icon_name: 'switch-off-symbolic', x_expand: true, x_align: Clutter.ActorAlign.CENTER, y_align: Clutter.ActorAlign.CENTER, }); box.add_child(this._offIcon); this._handle = new St.Widget({ style_class: 'handle', y_align: Clutter.ActorAlign.CENTER, constraints: new Clutter.BindConstraint({ source: this, coordinate: Clutter.BindCoordinate.HEIGHT, }), }); this.bind_property('reactive', this._handle, 'reactive', GObject.BindingFlags.SYNC_CREATE); this._handleAlignConstraint = new Clutter.AlignConstraint({ name: 'align', align_axis: Clutter.AlignAxis.X_AXIS, source: this, }); this._handle.add_constraint(this._handleAlignConstraint); this._handle.connect('button-press-event', (actor, event) => this._startDragging(event)); this._handle.connect('touch-event', this._touchDragging.bind(this)); this.add_child(this._handle); this.state = state; this._a11ySettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.a11y.interface', }); this._a11ySettings.connectObject('changed::show-status-shapes', () => this._updateIconOpacity(), this); this._updateIconOpacity(); } _updateIconOpacity() { const activeOpacity = this._a11ySettings.get_boolean('show-status-shapes') ? 255. : 0.; this._onIcon.opacity = activeOpacity; this._offIcon.opacity = activeOpacity; } get state() { return this._state; } set state(state) { let handleAlignFactor; // Calling get_theme_node() while unmapped is an error, avoid that const duration = this._handle.mapped ? this._handle.get_theme_node().get_transition_duration() : 0; if (state) { this.add_style_pseudo_class('checked'); handleAlignFactor = 1.0; } else { this.remove_style_pseudo_class('checked'); handleAlignFactor = 0.0; } this._handle.ease_property('@constraints.align.factor', handleAlignFactor, { duration, }); if (this._state !== state) { this._state = state; this.notify('state'); } } toggle() { this.state = !this.state; } _startDragging(event) { if (this._dragging) return Clutter.EVENT_PROPAGATE; this._dragging = true; [this._initialGrabX] = event.get_coords(); let device = event.get_device(); let sequence = event.get_event_sequence(); this._grab = global.stage.grab(this); this._grabbedDevice = device; this._grabbedSequence = sequence; return Clutter.EVENT_STOP; } vfunc_motion_event() { if (this._dragging && !this._grabbedSequence) return this._motionEvent(this, Clutter.get_current_event()); return Clutter.EVENT_PROPAGATE; } vfunc_button_release_event() { if (this._dragging && !this._grabbedSequence) return this._endDragging(); return Clutter.EVENT_PROPAGATE; } _touchDragging(actor, event) { let sequence = event.get_event_sequence(); if (!this._dragging && event.type() === Clutter.EventType.TOUCH_BEGIN) { this.startDragging(event); return Clutter.EVENT_STOP; } else if (this._grabbedSequence && sequence.get_slot() === this._grabbedSequence.get_slot()) { if (event.type() === Clutter.EventType.TOUCH_UPDATE) return this._motionEvent(this, event); else if (event.type() === Clutter.EventType.TOUCH_END) return this._endDragging(); } return Clutter.EVENT_PROPAGATE; } _endDragging() { if (!this._dragging) return Clutter.EVENT_PROPAGATE; if (this._grab) { this._grab.dismiss(); this._grab = null; } if (this._dragged) this.state = this._handleAlignConstraint.get_factor() > 0.5; else this.toggle(); this._dragged = false; this._grabbedSequence = null; this._grabbedDevice = null; this._dragging = false; return Clutter.EVENT_STOP; } _motionEvent(actor, event) { this._dragged = true; let [absX] = event.get_coords(); let factorDiff = (absX - this._initialGrabX) / (this.get_width() - this._handle.get_width()); let factor = factorDiff + (this.state ? 1.0 : 0.0); this._handleAlignConstraint.set_factor(Math.clamp(factor, 0, 1)); return Clutter.EVENT_STOP; } }); export const PopupSwitchMenuItem = GObject.registerClass({ Signals: {'toggled': {param_types: [GObject.TYPE_BOOLEAN]}}, }, class PopupSwitchMenuItem extends PopupBaseMenuItem { _init(text, active, params) { super._init(params); this.label = new St.Label({ text, y_expand: true, y_align: Clutter.ActorAlign.CENTER, }); this._switch = new Switch(active); this._switch.connect('notify::state', this._onToggled.bind(this)); this.bind_property('reactive', this._switch, 'reactive', GObject.BindingFlags.SYNC_CREATE); this.accessible_role = Atk.Role.CHECK_MENU_ITEM; this.checkAccessibleState(); this.label_actor = this.label; this.add_child(this.label); this._statusBin = new St.Bin({ x_align: Clutter.ActorAlign.END, x_expand: true, }); this.add_child(this._statusBin); this._statusLabel = new St.Label({ text: '', style_class: 'popup-status-menu-item', y_expand: true, y_align: Clutter.ActorAlign.CENTER, }); this._statusBin.child = this._switch; } setStatus(text) { if (text != null) { this._statusLabel.text = text; this._statusBin.child = this._statusLabel; this.reactive = false; this.accessible_role = Atk.Role.MENU_ITEM; } else { this._statusBin.child = this._switch; this.reactive = true; this.accessible_role = Atk.Role.CHECK_MENU_ITEM; } this.checkAccessibleState(); } activate(event) { if (this._switch.mapped) this.toggle(); // we allow pressing space to toggle the switch // without closing the menu if (event.type() === Clutter.EventType.KEY_PRESS && event.get_key_symbol() === Clutter.KEY_space) return; super.activate(event); } toggle() { this._switch.toggle(); } get state() { return this._switch.state; } setToggleState(state) { this._switch.state = state; this.checkAccessibleState(); } _onToggled() { this.emit('toggled', this._switch.state); this.checkAccessibleState(); } checkAccessibleState() { switch (this.accessible_role) { case Atk.Role.CHECK_MENU_ITEM: if (this._switch.state) this.add_accessible_state(Atk.StateType.CHECKED); else this.remove_accessible_state(Atk.StateType.CHECKED); break; default: this.remove_accessible_state(Atk.StateType.CHECKED); } } }); export const PopupImageMenuItem = GObject.registerClass( class PopupImageMenuItem extends PopupBaseMenuItem { _init(text, icon, params) { super._init(params); this._icon = new St.Icon({ style_class: 'popup-menu-icon', x_align: Clutter.ActorAlign.END, }); this.add_child(this._icon); this.label = new St.Label({ text, y_expand: true, y_align: Clutter.ActorAlign.CENTER, }); this.add_child(this.label); this.label_actor = this.label; this.set_child_above_sibling(this._ornamentIcon, this.label); this.setIcon(icon); } setIcon(icon) { // The 'icon' parameter can be either a Gio.Icon or a string. if (icon instanceof GObject.Object && GObject.type_is_a(icon, Gio.Icon)) this._icon.gicon = icon; else this._icon.icon_name = icon; } _updateOrnamentStyle() { // we move the ornament after the label, so we don't need // additional padding regardless of ornament visibility } }); export class PopupMenuBase extends Signals.EventEmitter { constructor(sourceActor, styleClass) { super(); if (this.constructor === PopupMenuBase) throw new TypeError(`Cannot instantiate abstract class ${this.constructor.name}`); this.sourceActor = sourceActor; this.focusActor = sourceActor; this._parent = null; this.box = new St.BoxLayout({ vertical: true, x_expand: true, y_expand: true, }); if (styleClass !== undefined) this.box.style_class = styleClass; this.length = 0; this.isOpen = false; this._activeMenuItem = null; this._settingsActions = { }; this._sensitive = true; Main.sessionMode.connectObject('updated', () => this._sessionUpdated(), this); } _getTopMenu() { if (this._parent) return this._parent._getTopMenu(); else return this; } _setParent(parent) { this._parent = parent; } getSensitive() { const parentSensitive = this._parent?.sensitive ?? true; return this._sensitive && parentSensitive; } setSensitive(sensitive) { this._sensitive = sensitive; this.emit('notify::sensitive'); } get sensitive() { return this.getSensitive(); } set sensitive(sensitive) { this.setSensitive(sensitive); } _sessionUpdated() { this._setSettingsVisibility(Main.sessionMode.allowSettings); this.close(); } addAction(title, callback, icon) { let menuItem; if (icon !== undefined) menuItem = new PopupImageMenuItem(title, icon); else menuItem = new PopupMenuItem(title); this.addMenuItem(menuItem); menuItem.connect('activate', (o, event) => { callback(event); }); return menuItem; } addSettingsAction(title, desktopFile) { let menuItem = this.addAction(title, () => { let app = Shell.AppSystem.get_default().lookup_app(desktopFile); if (!app) { log(`Settings panel for desktop file ${desktopFile} could not be loaded!`); return; } Main.overview.hide(); Main.panel.closeQuickSettings(); app.activate(); }); menuItem.visible = Main.sessionMode.allowSettings; this._settingsActions[desktopFile] = menuItem; return menuItem; } _setSettingsVisibility(visible) { for (let id in this._settingsActions) { let item = this._settingsActions[id]; item.visible = visible; } } isEmpty() { let hasVisibleChildren = this.box.get_children().some(child => { if (child._delegate instanceof PopupSeparatorMenuItem) return false; return isPopupMenuItemVisible(child); }); return !hasVisibleChildren; } itemActivated(animate) { if (animate === undefined) animate = BoxPointer.PopupAnimation.FULL; this._getTopMenu().close(animate); } _subMenuActiveChanged(submenu, submenuItem) { if (this._activeMenuItem && this._activeMenuItem !== submenuItem) this._activeMenuItem.active = false; this._activeMenuItem = submenuItem; this.emit('active-changed', submenuItem); } _connectItemSignals(menuItem) { menuItem.connectObject( 'notify::active', () => { const {active} = menuItem; if (active && this._activeMenuItem !== menuItem) { if (this._activeMenuItem) this._activeMenuItem.active = false; this._activeMenuItem = menuItem; this.emit('active-changed', menuItem); } else if (!active && this._activeMenuItem === menuItem) { this._activeMenuItem = null; this.emit('active-changed', null); } }, 'notify::sensitive', () => { const {sensitive} = menuItem; if (!sensitive && this._activeMenuItem === menuItem) { if (!this.actor.navigate_focus(menuItem.actor, St.DirectionType.TAB_FORWARD, true)) this.actor.grab_key_focus(); } else if (sensitive && this._activeMenuItem === null) { if (global.stage.get_key_focus() === this.actor) menuItem.actor.grab_key_focus(); } }, 'activate', () => { this.emit('activate', menuItem); this.itemActivated(BoxPointer.PopupAnimation.FULL); }, GObject.ConnectFlags.AFTER, 'destroy', () => { if (menuItem === this._activeMenuItem) this._activeMenuItem = null; }, this); this.connectObject('notify::sensitive', () => menuItem.syncSensitive(), menuItem); } _updateSeparatorVisibility(menuItem) { if (menuItem.label.text) return; let children = this.box.get_children(); let index = children.indexOf(menuItem.actor); if (index < 0) return; let childBeforeIndex = index - 1; while (childBeforeIndex >= 0 && !isPopupMenuItemVisible(children[childBeforeIndex])) childBeforeIndex--; if (childBeforeIndex < 0 || children[childBeforeIndex]._delegate instanceof PopupSeparatorMenuItem) { menuItem.actor.hide(); return; } let childAfterIndex = index + 1; while (childAfterIndex < children.length && !isPopupMenuItemVisible(children[childAfterIndex])) childAfterIndex++; if (childAfterIndex >= children.length || children[childAfterIndex]._delegate instanceof PopupSeparatorMenuItem) { menuItem.actor.hide(); return; } menuItem.show(); } moveMenuItem(menuItem, position) { let items = this._getMenuItems(); let i = 0; while (i < items.length && position > 0) { if (items[i] !== menuItem) position--; i++; } if (i < items.length) { if (items[i] !== menuItem) this.box.set_child_below_sibling(menuItem.actor, items[i].actor); } else { this.box.set_child_above_sibling(menuItem.actor, null); } } addMenuItem(menuItem, position) { let beforeItem = null; if (position === undefined) { this.box.add_child(menuItem.actor); } else { let items = this._getMenuItems(); if (position < items.length) { beforeItem = items[position].actor; this.box.insert_child_below(menuItem.actor, beforeItem); } else { this.box.add_child(menuItem.actor); } } if (menuItem instanceof PopupMenuSection) { menuItem.connectObject( 'active-changed', this._subMenuActiveChanged.bind(this), 'destroy', () => this.length--, this); this.connectObject( 'open-state-changed', (self, open) => { if (open) menuItem.open(); else menuItem.close(); }, 'menu-closed', () => menuItem.emit('menu-closed'), 'notify::sensitive', () => menuItem.emit('notify::sensitive'), menuItem); } else if (menuItem instanceof PopupSubMenuMenuItem) { if (beforeItem == null) this.box.add_child(menuItem.menu.actor); else this.box.insert_child_below(menuItem.menu.actor, beforeItem); this._connectItemSignals(menuItem); menuItem.menu.connectObject('active-changed', this._subMenuActiveChanged.bind(this), this); this.connectObject('menu-closed', () => { menuItem.menu.close(BoxPointer.PopupAnimation.NONE); }, menuItem); } else if (menuItem instanceof PopupSeparatorMenuItem) { this._connectItemSignals(menuItem); // updateSeparatorVisibility needs to get called any time the // separator's adjacent siblings change visibility or position. // open-state-changed isn't exactly that, but doing it in more // precise ways would require a lot more bookkeeping. this.connectObject('open-state-changed', () => { this._updateSeparatorVisibility(menuItem); }, menuItem); } else if (menuItem instanceof PopupBaseMenuItem) { this._connectItemSignals(menuItem); } else { throw TypeError('Invalid argument to PopupMenuBase.addMenuItem()'); } menuItem._setParent(this); this.length++; } _getMenuItems() { return this.box.get_children().map(a => a._delegate).filter(item => { return item instanceof PopupBaseMenuItem || item instanceof PopupMenuSection; }); } get firstMenuItem() { let items = this._getMenuItems(); if (items.length) return items[0]; else return null; } get numMenuItems() { return this._getMenuItems().length; } removeAll() { let children = this._getMenuItems(); for (let i = 0; i < children.length; i++) { let item = children[i]; item.destroy(); } } toggle() { if (this.isOpen) this.close(BoxPointer.PopupAnimation.FULL); else this.open(BoxPointer.PopupAnimation.FULL); } destroy() { this.close(); this.removeAll(); this.actor.destroy(); this.emit('destroy'); Main.sessionMode.disconnectObject(this); } } export class PopupMenu extends PopupMenuBase { constructor(sourceActor, arrowAlignment, arrowSide) { super(sourceActor, 'popup-menu-content'); this._arrowAlignment = arrowAlignment; this._arrowSide = arrowSide; this._boxPointer = new BoxPointer.BoxPointer(arrowSide); this.actor = this._boxPointer; this.actor._delegate = this; this.actor.style_class = 'popup-menu-boxpointer'; this._boxPointer.bin.set_child(this.box); this.actor.add_style_class_name('popup-menu'); global.focus_manager.add_group(this.actor); this.actor.reactive = true; if (this.sourceActor) { this.sourceActor.connectObject( 'key-press-event', this._onKeyPress.bind(this), 'notify::mapped', () => { if (!this.sourceActor.mapped) this.close(); }, this); } this._systemModalOpenedId = 0; this._openedSubMenu = null; } _setOpenedSubMenu(submenu) { if (this._openedSubMenu) this._openedSubMenu.close(true); this._openedSubMenu = submenu; } _onKeyPress(actor, event) { // Disable toggling the menu by keyboard // when it cannot be toggled by pointer if (!actor.reactive) return Clutter.EVENT_PROPAGATE; let navKey; switch (this._boxPointer.arrowSide) { case St.Side.TOP: navKey = Clutter.KEY_Down; break; case St.Side.BOTTOM: navKey = Clutter.KEY_Up; break; case St.Side.LEFT: navKey = Clutter.KEY_Right; break; case St.Side.RIGHT: navKey = Clutter.KEY_Left; break; } let state = event.get_state(); // if user has a modifier down (except capslock and numlock) // then don't handle the key press here state &= ~Clutter.ModifierType.LOCK_MASK; state &= ~Clutter.ModifierType.MOD2_MASK; state &= Clutter.ModifierType.MODIFIER_MASK; if (state) return Clutter.EVENT_PROPAGATE; let symbol = event.get_key_symbol(); if (symbol === Clutter.KEY_space || symbol === Clutter.KEY_Return) { this.toggle(); return Clutter.EVENT_STOP; } else if (symbol === navKey) { if (!this.isOpen) this.toggle(); this.actor.navigate_focus(null, St.DirectionType.TAB_FORWARD, false); return Clutter.EVENT_STOP; } else { return Clutter.EVENT_PROPAGATE; } } setArrowOrigin(origin) { this._boxPointer.setArrowOrigin(origin); } setSourceAlignment(alignment) { this._boxPointer.setSourceAlignment(alignment); } open(animate) { if (this.isOpen) return; if (this.isEmpty()) return; if (!this._systemModalOpenedId) { this._systemModalOpenedId = Main.layoutManager.connect('system-modal-opened', () => this.close()); } this.isOpen = true; this._boxPointer.setPosition(this.sourceActor, this._arrowAlignment); this._boxPointer.open(animate); this.actor.get_parent().set_child_above_sibling(this.actor, null); this.emit('open-state-changed', true); } close(animate) { if (this._activeMenuItem) this._activeMenuItem.active = false; if (this._boxPointer.visible) { this._boxPointer.close(animate, () => { this.emit('menu-closed'); }); } if (!this.isOpen) return; this.isOpen = false; this.emit('open-state-changed', false); } destroy() { this.sourceActor?.disconnectObject(this); if (this._systemModalOpenedId) Main.layoutManager.disconnect(this._systemModalOpenedId); this._systemModalOpenedId = 0; super.destroy(); } } export class PopupDummyMenu extends Signals.EventEmitter { constructor(sourceActor) { super(); this.sourceActor = sourceActor; this.actor = sourceActor; this.actor._delegate = this; } getSensitive() { return true; } get sensitive() { return this.getSensitive(); } open() { if (this.isOpen) return; this.isOpen = true; this.emit('open-state-changed', true); } close() { if (!this.isOpen) return; this.isOpen = false; this.emit('open-state-changed', false); } toggle() {} destroy() { this.emit('destroy'); } } export class PopupSubMenu extends PopupMenuBase { constructor(sourceActor, sourceArrow) { super(sourceActor); this._arrow = sourceArrow; // Since a function of a submenu might be to provide a "More.." expander // with long content, we make it scrollable - the scrollbar will only take // effect if a CSS max-height is set on the top menu. this.actor = new St.ScrollView({ style_class: 'popup-sub-menu', vscrollbar_policy: St.PolicyType.NEVER, child: this.box, }); this.actor._delegate = this; this.actor.clip_to_allocation = true; this.actor.connect('key-press-event', this._onKeyPressEvent.bind(this)); this.actor.hide(); } _needsScrollbar() { let topMenu = this._getTopMenu(); let [, topNaturalHeight] = topMenu.actor.get_preferred_height(-1); let topThemeNode = topMenu.actor.get_theme_node(); let topMaxHeight = topThemeNode.get_max_height(); return topMaxHeight >= 0 && topNaturalHeight >= topMaxHeight; } getSensitive() { return this._sensitive && this.sourceActor.sensitive; } get sensitive() { return this.getSensitive(); } open(animate) { if (this.isOpen) return; if (this.isEmpty()) return; this.isOpen = true; this.emit('open-state-changed', true); this.actor.show(); let needsScrollbar = this._needsScrollbar(); // St.ScrollView always requests space horizontally for a possible vertical // scrollbar if in AUTOMATIC mode. Doing better would require implementation // of width-for-height in St.BoxLayout and St.ScrollView. This looks bad // when we *don't* need it, so turn off the scrollbar when that's true. // Dynamic changes in whether we need it aren't handled properly. this.actor.vscrollbar_policy = needsScrollbar ? St.PolicyType.AUTOMATIC : St.PolicyType.NEVER; if (needsScrollbar) this.actor.add_style_pseudo_class('scrolled'); else this.actor.remove_style_pseudo_class('scrolled'); // It looks funny if we animate with a scrollbar (at what point is // the scrollbar added?) so just skip that case if (animate && needsScrollbar) animate = false; let targetAngle = this.actor.text_direction === Clutter.TextDirection.RTL ? -90 : 90; const duration = animate ? 250 : 0; let [, naturalHeight] = this.actor.get_preferred_height(-1); this.actor.height = 0; this.actor.ease({ height: naturalHeight, duration, mode: Clutter.AnimationMode.EASE_OUT_EXPO, onComplete: () => this.actor.set_height(-1), }); this._arrow.ease({ rotation_angle_z: targetAngle, duration, mode: Clutter.AnimationMode.EASE_OUT_EXPO, }); } close(animate) { if (!this.isOpen) return; this.isOpen = false; this.emit('open-state-changed', false); if (this._activeMenuItem) this._activeMenuItem.active = false; if (animate && this._needsScrollbar()) animate = false; const duration = animate ? 250 : 0; this.actor.ease({ height: 0, duration, mode: Clutter.AnimationMode.EASE_OUT_EXPO, onComplete: () => { this.actor.hide(); this.actor.set_height(-1); }, }); this._arrow.ease({ rotation_angle_z: 0, duration, mode: Clutter.AnimationMode.EASE_OUT_EXPO, }); } _onKeyPressEvent(actor, event) { // Move focus back to parent menu if the user types Left. if (this.isOpen && event.get_key_symbol() === Clutter.KEY_Left) { this.close(BoxPointer.PopupAnimation.FULL); this.sourceActor._delegate.active = true; return Clutter.EVENT_STOP; } return Clutter.EVENT_PROPAGATE; } } /** * PopupMenuSection: * * A section of a PopupMenu which is handled like a submenu * (you can add and remove items, you can destroy it, you * can add it to another menu), but is completely transparent * to the user */ export class PopupMenuSection extends PopupMenuBase { constructor() { super(); this.actor = this.box; this.actor._delegate = this; this.isOpen = true; this.actor.add_style_class_name('popup-menu-section'); } // deliberately ignore any attempt to open() or close(), but emit the // corresponding signal so children can still pick it up open() { this.emit('open-state-changed', true); } close() { this.emit('open-state-changed', false); } } export const PopupSubMenuMenuItem = GObject.registerClass( class PopupSubMenuMenuItem extends PopupBaseMenuItem { _init(text, wantIcon) { super._init(); this.add_style_class_name('popup-submenu-menu-item'); if (wantIcon) { this.icon = new St.Icon({style_class: 'popup-menu-icon'}); this.add_child(this.icon); } this.label = new St.Label({ text, y_expand: true, y_align: Clutter.ActorAlign.CENTER, }); this.add_child(this.label); this.label_actor = this.label; let expander = new St.Bin({ style_class: 'popup-menu-item-expander', x_expand: true, }); this.add_child(expander); this._triangle = arrowIcon(St.Side.RIGHT); this._triangle.pivot_point = new Graphene.Point({x: 0.5, y: 0.6}); this._triangleBin = new St.Widget({ y_expand: true, y_align: Clutter.ActorAlign.CENTER, }); this._triangleBin.add_child(this._triangle); this.add_child(this._triangleBin); this.add_accessible_state(Atk.StateType.EXPANDABLE); this.menu = new PopupSubMenu(this, this._triangle); this.menu.connect('open-state-changed', this._subMenuOpenStateChanged.bind(this)); this.connect('destroy', () => this.menu.destroy()); } _setParent(parent) { super._setParent(parent); this.menu._setParent(parent); } syncSensitive() { let sensitive = super.syncSensitive(); this._triangle.visible = sensitive; if (!sensitive) this.menu.close(false); } _subMenuOpenStateChanged(menu, open) { if (open) { this.add_style_pseudo_class('open'); this._getTopMenu()._setOpenedSubMenu(this.menu); this.add_accessible_state(Atk.StateType.EXPANDED); this.add_style_pseudo_class('checked'); } else { this.remove_style_pseudo_class('open'); this._getTopMenu()._setOpenedSubMenu(null); this.remove_accessible_state(Atk.StateType.EXPANDED); this.remove_style_pseudo_class('checked'); } } setSubmenuShown(open) { if (open) this.menu.open(BoxPointer.PopupAnimation.FULL); else this.menu.close(BoxPointer.PopupAnimation.FULL); } _setOpenState(open) { this.setSubmenuShown(open); } _getOpenState() { return this.menu.isOpen; } vfunc_key_press_event(event) { let symbol = event.get_key_symbol(); if (symbol === Clutter.KEY_Right) { this._setOpenState(true); this.menu.actor.navigate_focus(null, St.DirectionType.DOWN, false); return Clutter.EVENT_STOP; } else if (symbol === Clutter.KEY_Left && this._getOpenState()) { this._setOpenState(false); return Clutter.EVENT_STOP; } return super.vfunc_key_press_event(event); } activate(_event) { this._setOpenState(!this._getOpenState()); } }); /* Basic implementation of a menu manager. * Call addMenu to add menus */ export class PopupMenuManager { constructor(owner, grabParams) { this._grabParams = Params.parse(grabParams, {actionMode: Shell.ActionMode.POPUP}); this._menus = []; } addMenu(menu, position) { if (this._menus.includes(menu)) return; menu.connectObject( 'open-state-changed', this._onMenuOpenState.bind(this), 'destroy', () => this.removeMenu(menu), this); menu.actor.connectObject('captured-event', this._onCapturedEvent.bind(this), this); if (position === undefined) this._menus.push(menu); else this._menus.splice(position, 0, menu); } removeMenu(menu) { if (menu === this.activeMenu) { Main.popModal(this._grab); this._grab = null; if (this._keyFocusId) { global.stage.disconnect(this._keyFocusId); delete this._keyFocusId; } } const position = this._menus.indexOf(menu); if (position === -1) // not a menu we manage return; menu.disconnectObject(this); menu.actor.disconnectObject(this); this._menus.splice(position, 1); } ignoreRelease() { } _onMenuOpenState(menu, open) { if (open && this.activeMenu === menu) return; if (open) { const oldMenu = this.activeMenu; const oldGrab = this._grab; this._grab = Main.pushModal(menu.actor, this._grabParams); this.activeMenu = menu; oldMenu?.close(BoxPointer.PopupAnimation.FADE); if (oldGrab) Main.popModal(oldGrab); if (!this._keyFocusId) { this._keyFocusId = global.stage.connect('notify::key-focus', () => { if (!this.activeMenu) return; let actor = global.stage.get_key_focus(); let newMenu = this._findMenuForSource(actor); if (newMenu) this._changeMenu(newMenu); }); } } else if (this.activeMenu === menu) { this.activeMenu = null; Main.popModal(this._grab); this._grab = null; if (this._keyFocusId) { global.stage.disconnect(this._keyFocusId); delete this._keyFocusId; } } } _changeMenu(newMenu) { newMenu.open(this.activeMenu ? BoxPointer.PopupAnimation.FADE : BoxPointer.PopupAnimation.FULL); } _onCapturedEvent(actor, event) { let menu = actor._delegate; const targetActor = global.stage.get_event_actor(event); if (event.type() === Clutter.EventType.KEY_PRESS) { let symbol = event.get_key_symbol(); if (symbol === Clutter.KEY_Down && global.stage.get_key_focus() === menu.actor) { actor.navigate_focus(null, St.DirectionType.TAB_FORWARD, false); return Clutter.EVENT_STOP; } else if (symbol === Clutter.KEY_Escape && menu.isOpen) { menu.close(BoxPointer.PopupAnimation.FULL); return Clutter.EVENT_STOP; } } else if (event.type() === Clutter.EventType.ENTER && (event.get_flags() & Clutter.EventFlags.FLAG_GRAB_NOTIFY) === 0) { let hoveredMenu = this._findMenuForSource(targetActor); if (hoveredMenu && hoveredMenu !== menu) this._changeMenu(hoveredMenu); } else if ((event.type() === Clutter.EventType.BUTTON_PRESS || event.type() === Clutter.EventType.TOUCH_BEGIN) && !actor.contains(targetActor)) { menu.close(BoxPointer.PopupAnimation.FULL); } return Clutter.EVENT_PROPAGATE; } _findMenuForSource(source) { while (source) { let actor = source; const menu = this._menus.find(m => m.sourceActor === actor); if (menu) return menu; source = source.get_parent(); } return null; } _closeMenu(isUser, menu) { // If this isn't a user action, we called close() // on the BoxPointer ourselves, so we shouldn't // reanimate. if (isUser) menu.close(BoxPointer.PopupAnimation.FULL); } } 070701000001D6000081A40000000000000000000000016712993F00006DC8000000000000000000000000000000000000002800000000gnome-shell-47.1/js/ui/quickSettings.jsimport Atk from 'gi://Atk'; import Clutter from 'gi://Clutter'; import Cogl from 'gi://Cogl'; import Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import Graphene from 'gi://Graphene'; import Meta from 'gi://Meta'; import Pango from 'gi://Pango'; import St from 'gi://St'; import * as Main from './main.js'; import * as PopupMenu from './popupMenu.js'; import {Slider} from './slider.js'; import {PopupAnimation} from './boxpointer.js'; const DIM_BRIGHTNESS = -0.4; const POPUP_ANIMATION_TIME = 400; const MENU_BUTTON_BRIGHTNESS = 0.1; export const QuickSettingsItem = GObject.registerClass({ Properties: { 'has-menu': GObject.ParamSpec.boolean( 'has-menu', null, null, GObject.ParamFlags.READWRITE | GObject.ParamFlags.CONSTRUCT_ONLY, false), }, }, class QuickSettingsItem extends St.Button { _init(params) { super._init(params); if (this.hasMenu) { this.menu = new QuickToggleMenu(this); this.menu.actor.hide(); this._menuManager = new PopupMenu.PopupMenuManager(this); this._menuManager.addMenu(this.menu); } } }); export const QuickToggle = GObject.registerClass({ Properties: { 'title': GObject.ParamSpec.string('title', null, null, GObject.ParamFlags.READWRITE, null), 'subtitle': GObject.ParamSpec.string('subtitle', null, null, GObject.ParamFlags.READWRITE, null), 'icon-name': GObject.ParamSpec.override('icon-name', St.Button), 'gicon': GObject.ParamSpec.object('gicon', null, null, GObject.ParamFlags.READWRITE, Gio.Icon), }, }, class QuickToggle extends QuickSettingsItem { _init(params) { super._init({ style_class: 'quick-toggle button', accessible_role: Atk.Role.TOGGLE_BUTTON, can_focus: true, ...params, }); this._box = new St.BoxLayout({x_expand: true}); this.set_child(this._box); const iconProps = {}; if (this.gicon) iconProps['gicon'] = this.gicon; if (this.iconName) iconProps['icon-name'] = this.iconName; this._icon = new St.Icon({ style_class: 'quick-toggle-icon', x_expand: false, ...iconProps, }); this._box.add_child(this._icon); // bindings are in the "wrong" direction, so we // pick up StIcon's linking of the two properties this._icon.bind_property('icon-name', this, 'icon-name', GObject.BindingFlags.SYNC_CREATE | GObject.BindingFlags.BIDIRECTIONAL); this._icon.bind_property('gicon', this, 'gicon', GObject.BindingFlags.SYNC_CREATE | GObject.BindingFlags.BIDIRECTIONAL); this._title = new St.Label({ style_class: 'quick-toggle-title', y_align: Clutter.ActorAlign.CENTER, x_align: Clutter.ActorAlign.START, x_expand: true, }); this.label_actor = this._title; this._subtitle = new St.Label({ style_class: 'quick-toggle-subtitle', y_align: Clutter.ActorAlign.CENTER, x_align: Clutter.ActorAlign.START, x_expand: true, }); this.get_accessible().add_relationship(Atk.RelationType.DESCRIBED_BY, this._subtitle.get_accessible()); const titleBox = new St.BoxLayout({ y_align: Clutter.ActorAlign.CENTER, x_align: Clutter.ActorAlign.START, x_expand: true, vertical: true, }); titleBox.add_child(this._title); titleBox.add_child(this._subtitle); this._box.add_child(titleBox); this._title.clutter_text.ellipsize = Pango.EllipsizeMode.END; this.bind_property('title', this._title, 'text', GObject.BindingFlags.SYNC_CREATE); this.bind_property('subtitle', this._subtitle, 'text', GObject.BindingFlags.SYNC_CREATE); this.bind_property_full('subtitle', this._subtitle, 'visible', GObject.BindingFlags.SYNC_CREATE, (bind, source) => [true, source !== null], null); } get label() { console.warn('Trying to get label from QuickToggle. Use title instead.'); return this.title; } set label(label) { console.warn('Trying to set label on QuickToggle. Use title instead.'); this.title = label; } }); export const QuickMenuToggle = GObject.registerClass({ Properties: { 'title': GObject.ParamSpec.string('title', null, null, GObject.ParamFlags.READWRITE, null), 'subtitle': GObject.ParamSpec.string('subtitle', null, null, GObject.ParamFlags.READWRITE, null), 'icon-name': GObject.ParamSpec.override('icon-name', St.Button), 'gicon': GObject.ParamSpec.object('gicon', null, null, GObject.ParamFlags.READWRITE, Gio.Icon), 'menu-enabled': GObject.ParamSpec.boolean( 'menu-enabled', null, null, GObject.ParamFlags.READWRITE, true), }, }, class QuickMenuToggle extends QuickSettingsItem { _init(params) { super._init({ ...params, hasMenu: true, }); this.add_style_class_name('quick-menu-toggle'); this._box = new St.BoxLayout({x_expand: true}); this.set_child(this._box); const contents = new QuickToggle({ x_expand: true, }); this._box.add_child(contents); // Use an effect to lighten the menu button a bit, so we don't // have to define two full sets of button styles (normal/default) // with slightly different colors const menuHighlight = new Clutter.BrightnessContrastEffect(); menuHighlight.set_brightness(MENU_BUTTON_BRIGHTNESS); this._menuButton = new St.Button({ style_class: 'quick-toggle-arrow icon-button', child: new St.Icon({icon_name: 'go-next-symbolic'}), accessible_name: _('Open menu'), effect: menuHighlight, can_focus: true, x_expand: false, y_expand: true, }); this._box.add_child(this._menuButton); this.bind_property('toggle-mode', contents, 'toggle-mode', GObject.BindingFlags.SYNC_CREATE); this.bind_property('checked', contents, 'checked', GObject.BindingFlags.SYNC_CREATE | GObject.BindingFlags.BIDIRECTIONAL); this.bind_property('title', contents, 'title', GObject.BindingFlags.SYNC_CREATE); this.bind_property('subtitle', contents, 'subtitle', GObject.BindingFlags.SYNC_CREATE); this.bind_property('gicon', contents, 'gicon', GObject.BindingFlags.SYNC_CREATE); this.bind_property('icon-name', contents, 'icon-name', GObject.BindingFlags.SYNC_CREATE); this.bind_property('menu-enabled', this._menuButton, 'visible', GObject.BindingFlags.SYNC_CREATE); this.bind_property('reactive', this._menuButton, 'reactive', GObject.BindingFlags.SYNC_CREATE); this.bind_property('checked', this._menuButton, 'checked', GObject.BindingFlags.SYNC_CREATE); contents.connect('clicked', (o, button) => this.emit('clicked', button)); this._menuButton.connect('clicked', () => this.menu.open()); this._menuButton.connect('popup-menu', () => this.emit('popup-menu')); contents.connect('popup-menu', () => this.emit('popup-menu')); this.connect('popup-menu', () => { if (this.menuEnabled) this.menu.open(); }); } }); export const QuickSlider = GObject.registerClass({ Properties: { 'icon-name': GObject.ParamSpec.override('icon-name', St.Button), 'gicon': GObject.ParamSpec.object('gicon', null, null, GObject.ParamFlags.READWRITE, Gio.Icon), 'icon-reactive': GObject.ParamSpec.boolean( 'icon-reactive', null, null, GObject.ParamFlags.READWRITE, false), 'icon-label': GObject.ParamSpec.string( 'icon-label', null, null, GObject.ParamFlags.READWRITE, ''), 'menu-enabled': GObject.ParamSpec.boolean( 'menu-enabled', null, null, GObject.ParamFlags.READWRITE, false), }, Signals: { 'icon-clicked': {}, }, }, class QuickSlider extends QuickSettingsItem { _init(params) { super._init({ style_class: 'quick-slider', ...params, can_focus: false, reactive: false, hasMenu: true, }); const box = new St.BoxLayout({x_expand: true}); this.set_child(box); const iconProps = {}; if (this.gicon) iconProps['gicon'] = this.gicon; if (this.iconName) iconProps['icon-name'] = this.iconName; this._icon = new St.Icon({ ...iconProps, }); this._iconButton = new St.Button({ child: this._icon, style_class: 'icon-button flat', can_focus: true, x_expand: false, y_expand: true, }); this._iconButton.connect('clicked', () => this.emit('icon-clicked')); // Show as regular icon when non-interactive this._iconButton.connect('notify::reactive', () => this._iconButton.remove_style_pseudo_class('insensitive')); box.add_child(this._iconButton); this.bind_property('icon-reactive', this._iconButton, 'reactive', GObject.BindingFlags.SYNC_CREATE); this.bind_property('icon-reactive', this._iconButton, 'can-focus', GObject.BindingFlags.SYNC_CREATE); this.bind_property('icon-label', this._iconButton, 'accessible-name', GObject.BindingFlags.SYNC_CREATE); // bindings are in the "wrong" direction, so we // pick up StIcon's linking of the two properties this._icon.bind_property('icon-name', this, 'icon-name', GObject.BindingFlags.SYNC_CREATE | GObject.BindingFlags.BIDIRECTIONAL); this._icon.bind_property('gicon', this, 'gicon', GObject.BindingFlags.SYNC_CREATE | GObject.BindingFlags.BIDIRECTIONAL); this.slider = new Slider(0); // for focus indication const sliderBin = new St.Bin({ style_class: 'slider-bin', child: this.slider, reactive: true, can_focus: true, x_expand: true, y_align: Clutter.ActorAlign.CENTER, }); box.add_child(sliderBin); // Make the slider bin transparent for a11y const sliderAccessible = this.slider.get_accessible(); sliderAccessible.set_parent(sliderBin.get_parent().get_accessible()); sliderBin.set_accessible(sliderAccessible); sliderBin.connect('event', (bin, event) => this.slider.event(event, false)); this._menuButton = new St.Button({ child: new St.Icon({icon_name: 'go-next-symbolic'}), style_class: 'icon-button flat', can_focus: true, x_expand: false, y_expand: true, accessible_name: _('Open menu'), }); box.add_child(this._menuButton); this.bind_property('menu-enabled', this._menuButton, 'visible', GObject.BindingFlags.SYNC_CREATE); this._menuButton.connect('clicked', () => this.menu.open()); this.slider.connect('popup-menu', () => { if (this.menuEnabled) this.menu.open(); }); } }); class QuickToggleMenu extends PopupMenu.PopupMenuBase { constructor(sourceActor) { super(sourceActor, 'quick-toggle-menu'); const constraints = new Clutter.BindConstraint({ coordinate: Clutter.BindCoordinate.Y, source: sourceActor, }); sourceActor.bind_property('height', constraints, 'offset', GObject.BindingFlags.DEFAULT); this.actor = new St.Widget({ layout_manager: new Clutter.BinLayout(), style_class: 'quick-toggle-menu-container', reactive: true, x_expand: true, y_expand: false, height: 0, constraints, }); this.actor._delegate = this; this.actor.add_child(this.box); global.focus_manager.add_group(this.actor); const headerLayout = new Clutter.GridLayout(); this._header = new St.Widget({ style_class: 'header', layout_manager: headerLayout, visible: false, }); headerLayout.hookup_style(this._header); this.box.add_child(this._header); this._headerIcon = new St.Icon({ style_class: 'icon', y_align: Clutter.ActorAlign.CENTER, }); this._headerTitle = new St.Label({ style_class: 'title', y_align: Clutter.ActorAlign.CENTER, y_expand: true, }); this._headerSubtitle = new St.Label({ style_class: 'subtitle', y_align: Clutter.ActorAlign.CENTER, }); this._headerSpacer = new Clutter.Actor({x_expand: true}); const side = this.actor.text_direction === Clutter.TextDirection.RTL ? Clutter.GridPosition.LEFT : Clutter.GridPosition.RIGHT; headerLayout.attach(this._headerIcon, 0, 0, 1, 2); headerLayout.attach_next_to(this._headerTitle, this._headerIcon, side, 1, 1); headerLayout.attach_next_to(this._headerSpacer, this._headerTitle, side, 1, 1); headerLayout.attach_next_to(this._headerSubtitle, this._headerTitle, Clutter.GridPosition.BOTTOM, 1, 1); sourceActor.connect('notify::checked', () => this._syncChecked()); this._syncChecked(); } setHeader(icon, title, subtitle = '') { if (icon instanceof Gio.Icon) this._headerIcon.gicon = icon; else this._headerIcon.icon_name = icon; this._headerTitle.text = title; this._headerSubtitle.set({ text: subtitle, visible: !!subtitle, }); this._header.show(); } addHeaderSuffix(actor) { const {layoutManager: headerLayout} = this._header; const side = this.actor.text_direction === Clutter.TextDirection.RTL ? Clutter.GridPosition.LEFT : Clutter.GridPosition.RIGHT; this._header.remove_child(this._headerSpacer); headerLayout.attach_next_to(actor, this._headerTitle, side, 1, 1); headerLayout.attach_next_to(this._headerSpacer, actor, side, 1, 1); } open(animate) { if (this.isOpen) return; this.actor.show(); this.isOpen = true; const previousHeight = this.actor.height; this.actor.height = -1; const [targetHeight] = this.actor.get_preferred_height(-1); this.actor.height = previousHeight; const distance = Math.abs(targetHeight - previousHeight); const duration = animate !== PopupAnimation.NONE ? POPUP_ANIMATION_TIME / 2 : 0; this.box.opacity = 0; this.actor.ease({ duration: duration * (distance / targetHeight), height: targetHeight, onComplete: () => { this.box.ease({ duration, opacity: 255, }); this.actor.height = -1; }, }); this.emit('open-state-changed', true); } close(animate) { if (!this.isOpen) return; const {opacity} = this.box; const duration = animate !== PopupAnimation.NONE ? POPUP_ANIMATION_TIME / 2 : 0; this.box.ease({ duration: duration * (opacity / 255), opacity: 0, onComplete: () => { this.actor.ease({ duration, height: 0, onComplete: () => { this.actor.hide(); this.emit('menu-closed'); }, }); }, }); this.isOpen = false; this.emit('open-state-changed', false); } _syncChecked() { if (this.sourceActor.checked) this._headerIcon.add_style_class_name('active'); else this._headerIcon.remove_style_class_name('active'); } // expected on toplevel menus _setOpenedSubMenu(submenu) { this._openedSubMenu?.close(true); this._openedSubMenu = submenu; } } const QuickSettingsLayoutMeta = GObject.registerClass({ Properties: { 'column-span': GObject.ParamSpec.int( 'column-span', null, null, GObject.ParamFlags.READWRITE, 1, GLib.MAXINT32, 1), }, }, class QuickSettingsLayoutMeta extends Clutter.LayoutMeta {}); const QuickSettingsLayout = GObject.registerClass({ Properties: { 'row-spacing': GObject.ParamSpec.int( 'row-spacing', null, null, GObject.ParamFlags.READWRITE, 0, GLib.MAXINT32, 0), 'column-spacing': GObject.ParamSpec.int( 'column-spacing', null, null, GObject.ParamFlags.READWRITE, 0, GLib.MAXINT32, 0), 'n-columns': GObject.ParamSpec.int( 'n-columns', null, null, GObject.ParamFlags.READWRITE, 1, GLib.MAXINT32, 1), }, }, class QuickSettingsLayout extends Clutter.LayoutManager { _init(overlay, params) { super._init(params); this._overlay = overlay; } _containerStyleChanged() { const node = this._container.get_theme_node(); let changed = false; let found, length; [found, length] = node.lookup_length('spacing-rows', false); changed ||= found; if (found) this.rowSpacing = length; [found, length] = node.lookup_length('spacing-columns', false); changed ||= found; if (found) this.columnSpacing = length; if (changed) this.layout_changed(); } _getColSpan(container, child) { const {columnSpan} = this.get_child_meta(container, child); return Math.clamp(columnSpan, 1, this.nColumns); } _getMaxChildWidth(container) { let [minWidth, natWidth] = [0, 0]; for (const child of container) { if (child === this._overlay) continue; const [childMin, childNat] = child.get_preferred_width(-1); const colSpan = this._getColSpan(container, child); minWidth = Math.max(minWidth, childMin / colSpan); natWidth = Math.max(natWidth, childNat / colSpan); } return [minWidth, natWidth]; } _getRows(container) { const rows = []; let lineIndex = 0; let curRow; /** private */ function appendRow() { curRow = []; rows.push(curRow); lineIndex = 0; } for (const child of container) { if (!child.visible) continue; if (child === this._overlay) continue; if (lineIndex === 0) appendRow(); const colSpan = this._getColSpan(container, child); const fitsRow = lineIndex + colSpan <= this.nColumns; if (!fitsRow) appendRow(); curRow.push(child); lineIndex = (lineIndex + colSpan) % this.nColumns; } return rows; } _getRowHeight(children) { let [minHeight, natHeight] = [0, 0]; children.forEach(child => { const [childMin, childNat] = child.get_preferred_height(-1); minHeight = Math.max(minHeight, childMin); natHeight = Math.max(natHeight, childNat); }); return [minHeight, natHeight]; } vfunc_get_child_meta_type() { return QuickSettingsLayoutMeta.$gtype; } vfunc_set_container(container) { this._container?.disconnectObject(this); this._container = container; this._container?.connectObject('style-changed', () => this._containerStyleChanged(), this); } vfunc_get_preferred_width(container, _forHeight) { const [childMin, childNat] = this._getMaxChildWidth(container); const spacing = (this.nColumns - 1) * this.column_spacing; return [this.nColumns * childMin + spacing, this.nColumns * childNat + spacing]; } vfunc_get_preferred_height(container, _forWidth) { const rows = this._getRows(container); let [minHeight, natHeight] = this._overlay.get_preferred_height(-1); const spacing = (rows.length - 1) * this.row_spacing; minHeight += spacing; natHeight += spacing; rows.forEach(row => { const [rowMin, rowNat] = this._getRowHeight(row); minHeight += rowMin; natHeight += rowNat; }); return [minHeight, natHeight]; } vfunc_allocate(container, box) { const rows = this._getRows(container); const [, overlayHeight] = this._overlay.get_preferred_height(-1); const availWidth = box.get_width() - (this.nColumns - 1) * this.column_spacing; const childWidth = Math.floor(availWidth / this.nColumns); this._overlay.allocate_available_size(0, 0, box.get_width(), box.get_height()); const isRtl = container.text_direction === Clutter.TextDirection.RTL; const childBox = new Clutter.ActorBox(); let y = box.y1; rows.forEach(row => { const [, rowNat] = this._getRowHeight(row); let lineIndex = 0; row.forEach(child => { const colSpan = this._getColSpan(container, child); const width = childWidth * colSpan + this.column_spacing * (colSpan - 1); let x = box.x1 + lineIndex * (childWidth + this.column_spacing); if (isRtl) x = box.x2 - width - x; childBox.set_origin(x, y); childBox.set_size(width, rowNat); child.allocate(childBox); lineIndex = (lineIndex + colSpan) % this.nColumns; }); y += rowNat + this.row_spacing; if (row.some(c => c.menu?.actor.visible)) y += overlayHeight; }); } }); export const QuickSettingsMenu = class extends PopupMenu.PopupMenu { constructor(sourceActor, nColumns = 1) { super(sourceActor, 0, St.Side.TOP); this.actor = new St.Widget({reactive: true, width: 0, height: 0}); this.actor.add_child(this._boxPointer); this.actor._delegate = this; this.connect('menu-closed', () => this.actor.hide()); Main.layoutManager.connectObject('system-modal-opened', () => this.close(), this); this._dimEffect = new Clutter.BrightnessContrastEffect({ enabled: false, }); this._boxPointer.add_effect_with_name('dim', this._dimEffect); this.box.add_style_class_name('quick-settings'); // Overlay layer for menus this._overlay = new Clutter.Actor({ layout_manager: new Clutter.BinLayout(), }); // "clone" const placeholder = new Clutter.Actor({ constraints: new Clutter.BindConstraint({ coordinate: Clutter.BindCoordinate.HEIGHT, source: this._overlay, }), }); this._grid = new St.Widget({ style_class: 'quick-settings-grid', layout_manager: new QuickSettingsLayout(placeholder, { nColumns, }), }); this.box.add_child(this._grid); this._grid.add_child(placeholder); const yConstraint = new Clutter.BindConstraint({ coordinate: Clutter.BindCoordinate.Y, source: this._boxPointer, }); // Pick up additional spacing from any intermediate actors const updateOffset = () => { const laters = global.compositor.get_laters(); laters.add(Meta.LaterType.BEFORE_REDRAW, () => { const offset = this._grid.apply_relative_transform_to_point( this._boxPointer, new Graphene.Point3D()); yConstraint.offset = offset.y; return GLib.SOURCE_REMOVE; }); }; this._grid.connect('notify::y', updateOffset); this.box.connect('notify::y', updateOffset); this._boxPointer.bin.connect('notify::y', updateOffset); this._overlay.add_constraint(yConstraint); this._overlay.add_constraint(new Clutter.BindConstraint({ coordinate: Clutter.BindCoordinate.X, source: this._boxPointer, })); this._overlay.add_constraint(new Clutter.BindConstraint({ coordinate: Clutter.BindCoordinate.WIDTH, source: this._boxPointer, })); this.actor.add_child(this._overlay); } addItem(item, colSpan = 1) { this._grid.add_child(item); this._completeAddItem(item, colSpan); } insertItemBefore(item, sibling, colSpan = 1) { this._grid.insert_child_below(item, sibling); this._completeAddItem(item, colSpan); } _completeAddItem(item, colSpan) { this._grid.layout_manager.child_set_property( this._grid, item, 'column-span', colSpan); if (item.menu) { this._overlay.add_child(item.menu.actor); item.menu.connect('open-state-changed', (m, isOpen) => { this._setDimmed(isOpen); this._activeMenu = isOpen ? item.menu : null; }); } } getFirstItem() { return this._grid.get_first_child(); } open(animate) { this.actor.show(); super.open(animate); } close(animate) { this._activeMenu?.close(animate); super.close(animate); } _setDimmed(dim) { const val = 127 * (1 + (dim ? 1 : 0) * DIM_BRIGHTNESS); const color = new Cogl.Color({ red: val, green: val, blue: val, alpha: 255, }); this._boxPointer.ease_property('@effects.dim.brightness', color, { mode: Clutter.AnimationMode.LINEAR, duration: POPUP_ANIMATION_TIME, onStopped: () => (this._dimEffect.enabled = dim), }); this._dimEffect.enabled = true; } }; export const SystemIndicator = GObject.registerClass( class SystemIndicator extends St.BoxLayout { _init() { super._init({ style_class: 'panel-status-indicators-box', reactive: true, visible: false, }); this.quickSettingsItems = []; } _syncIndicatorsVisible() { this.visible = this.get_children().some(a => a.visible); } _addIndicator() { const icon = new St.Icon({style_class: 'system-status-icon'}); this.add_child(icon); icon.connect('notify::visible', () => this._syncIndicatorsVisible()); this._syncIndicatorsVisible(); return icon; } }); 070701000001D7000081A40000000000000000000000016712993F000029C1000000000000000000000000000000000000002700000000gnome-shell-47.1/js/ui/remoteSearch.jsimport GdkPixbuf from 'gi://GdkPixbuf'; import Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import Shell from 'gi://Shell'; import St from 'gi://St'; import * as FileUtils from '../misc/fileUtils.js'; const KEY_FILE_GROUP = 'Shell Search Provider'; const SearchProviderIface = ` `; const SearchProvider2Iface = ` `; const SearchProviderProxyInfo = Gio.DBusInterfaceInfo.new_for_xml(SearchProviderIface); const SearchProvider2ProxyInfo = Gio.DBusInterfaceInfo.new_for_xml(SearchProvider2Iface); /** * loadRemoteSearchProviders: * * @param {Gio.Settings} searchSettings - search settings * @returns {RemoteSearchProvider[]} - the list of remote providers */ export function loadRemoteSearchProviders(searchSettings) { let objectPaths = {}; let loadedProviders = []; function loadRemoteSearchProvider(file) { let keyfile = new GLib.KeyFile(); let path = file.get_path(); try { keyfile.load_from_file(path, 0); } catch (e) { return; } if (!keyfile.has_group(KEY_FILE_GROUP)) return; let remoteProvider; try { let group = KEY_FILE_GROUP; let busName = keyfile.get_string(group, 'BusName'); let objectPath = keyfile.get_string(group, 'ObjectPath'); if (objectPaths[objectPath]) return; let appInfo = null; try { let desktopId = keyfile.get_string(group, 'DesktopId'); appInfo = Gio.DesktopAppInfo.new(desktopId); if (!appInfo.should_show()) return; } catch (e) { log(`Ignoring search provider ${path}: missing DesktopId`); return; } let autoStart = true; try { autoStart = keyfile.get_boolean(group, 'AutoStart'); } catch (e) { // ignore error } let version = '1'; try { version = keyfile.get_string(group, 'Version'); } catch (e) { // ignore error } if (version >= 2) remoteProvider = new RemoteSearchProvider2(appInfo, busName, objectPath, autoStart); else remoteProvider = new RemoteSearchProvider(appInfo, busName, objectPath, autoStart); remoteProvider.defaultEnabled = true; try { remoteProvider.defaultEnabled = !keyfile.get_boolean(group, 'DefaultDisabled'); } catch (e) { // ignore error } objectPaths[objectPath] = remoteProvider; loadedProviders.push(remoteProvider); } catch (e) { log(`Failed to add search provider ${path}: ${e}`); } } if (searchSettings.get_boolean('disable-external')) return []; for (const {dir} of FileUtils.collectFromDatadirs('search-providers', false)) loadRemoteSearchProvider(dir); let sortOrder = searchSettings.get_strv('sort-order'); const disabled = searchSettings.get_strv('disabled'); const enabled = searchSettings.get_strv('enabled'); loadedProviders = loadedProviders.filter(provider => { let appId = provider.appInfo.get_id(); if (provider.defaultEnabled) return !disabled.includes(appId); else return enabled.includes(appId); }); loadedProviders.sort((providerA, providerB) => { let idxA, idxB; let appIdA, appIdB; appIdA = providerA.appInfo.get_id(); appIdB = providerB.appInfo.get_id(); idxA = sortOrder.indexOf(appIdA); idxB = sortOrder.indexOf(appIdB); // if no provider is found in the order, use alphabetical order if ((idxA === -1) && (idxB === -1)) { let nameA = providerA.appInfo.get_name(); let nameB = providerB.appInfo.get_name(); return GLib.utf8_collate(nameA, nameB); } // if providerA isn't found, it's sorted after providerB if (idxA === -1) return 1; // if providerB isn't found, it's sorted after providerA if (idxB === -1) return -1; // finally, if both providers are found, return their order in the list return idxA - idxB; }); return loadedProviders; } class RemoteSearchProvider { constructor(appInfo, dbusName, dbusPath, autoStart, proxyInfo) { if (!proxyInfo) proxyInfo = SearchProviderProxyInfo; let gFlags = Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES; if (autoStart) gFlags |= Gio.DBusProxyFlags.DO_NOT_AUTO_START_AT_CONSTRUCTION; else gFlags |= Gio.DBusProxyFlags.DO_NOT_AUTO_START; this.proxy = new Gio.DBusProxy({ g_bus_type: Gio.BusType.SESSION, g_name: dbusName, g_object_path: dbusPath, g_interface_info: proxyInfo, g_interface_name: proxyInfo.name, gFlags, }); this.proxy.init_async(GLib.PRIORITY_DEFAULT, null); this.appInfo = appInfo; this.id = appInfo.get_id(); this.isRemoteProvider = true; this.canLaunchSearch = false; } createIcon(size, meta) { let gicon = null; let icon = null; if (meta['icon']) { gicon = Gio.icon_deserialize(meta['icon']); } else if (meta['gicon']) { gicon = Gio.icon_new_for_string(meta['gicon']); } else if (meta['icon-data']) { const [ width, height, rowStride, hasAlpha, bitsPerSample, nChannels_, data, ] = meta['icon-data']; gicon = Shell.util_create_pixbuf_from_data(data, GdkPixbuf.Colorspace.RGB, hasAlpha, bitsPerSample, width, height, rowStride); } if (gicon) icon = new St.Icon({gicon, icon_size: size}); return icon; } filterResults(results, maxNumber) { if (results.length <= maxNumber) return results; let regularResults = results.filter(r => !r.startsWith('special:')); let specialResults = results.filter(r => r.startsWith('special:')); return regularResults.slice(0, maxNumber).concat(specialResults.slice(0, maxNumber)); } async getInitialResultSet(terms, cancellable) { try { const [results] = await this.proxy.GetInitialResultSetAsync(terms, cancellable); return results; } catch (error) { if (!error.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) log(`Received error from D-Bus search provider ${this.id}: ${error}`); return []; } } async getSubsearchResultSet(previousResults, newTerms, cancellable) { try { const [results] = await this.proxy.GetSubsearchResultSetAsync(previousResults, newTerms, cancellable); return results; } catch (error) { if (!error.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) log(`Received error from D-Bus search provider ${this.id}: ${error}`); return []; } } async getResultMetas(ids, cancellable) { let metas; try { [metas] = await this.proxy.GetResultMetasAsync(ids, cancellable); } catch (error) { if (!error.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) log(`Received error from D-Bus search provider ${this.id} during GetResultMetas: ${error}`); return []; } let resultMetas = []; for (let i = 0; i < metas.length; i++) { for (let prop in metas[i]) { // we can use the serialized icon variant directly if (prop !== 'icon') metas[i][prop] = metas[i][prop].deepUnpack(); } resultMetas.push({ id: metas[i]['id'], name: metas[i]['name'], description: metas[i]['description'], createIcon: size => this.createIcon(size, metas[i]), clipboardText: metas[i]['clipboardText'], }); } return resultMetas; } activateResult(id) { this.proxy.ActivateResultAsync(id).catch(logError); } launchSearch(_terms) { // the provider is not compatible with the new version of the interface, launch // the app itself but warn so we can catch the error in logs log(`Search provider ${this.appInfo.get_id()} does not implement LaunchSearch`); this.appInfo.launch([], global.create_app_launch_context(0, -1)); } } class RemoteSearchProvider2 extends RemoteSearchProvider { constructor(appInfo, dbusName, dbusPath, autoStart) { super(appInfo, dbusName, dbusPath, autoStart, SearchProvider2ProxyInfo); this.canLaunchSearch = true; } activateResult(id, terms) { this.proxy.ActivateResultAsync( id, terms, global.get_current_time()).catch(logError); } launchSearch(terms) { this.proxy.LaunchSearchAsync( terms, global.get_current_time()).catch(logError); } } 070701000001D8000081A40000000000000000000000016712993F00000E9B000000000000000000000000000000000000002200000000gnome-shell-47.1/js/ui/ripples.jsimport Clutter from 'gi://Clutter'; import St from 'gi://St'; // Shamelessly copied from the layout "hotcorner" ripples implementation export class Ripples { constructor(px, py, styleClass, animationRequired = false) { this._x = 0; this._y = 0; this._px = px; this._py = py; this._animationRequired = animationRequired; this._ripple1 = new St.BoxLayout({ style_class: styleClass, opacity: 0, can_focus: false, reactive: false, visible: false, }); this._ripple1.set_pivot_point(px, py); this._ripple2 = new St.BoxLayout({ style_class: styleClass, opacity: 0, can_focus: false, reactive: false, visible: false, }); this._ripple2.set_pivot_point(px, py); this._ripple3 = new St.BoxLayout({ style_class: styleClass, opacity: 0, can_focus: false, reactive: false, visible: false, }); this._ripple3.set_pivot_point(px, py); } destroy() { this._ripple1.destroy(); this._ripple2.destroy(); this._ripple3.destroy(); } _animRipple(ripple, delay, duration, startScale, startOpacity, finalScale) { // We draw a ripple by using a source image and animating it scaling // outwards and fading away. We want the ripples to move linearly // or it looks unrealistic, but if the opacity of the ripple goes // linearly to zero it fades away too quickly, so we use a separate // tween to give a non-linear curve to the fade-away and make // it more visible in the middle section. ripple.x = this._x; ripple.y = this._y; ripple.visible = true; ripple.opacity = 255 * Math.sqrt(startOpacity); ripple.scale_x = ripple.scale_y = startScale; ripple.set_translation(-this._px * ripple.width, -this._py * ripple.height, 0.0); const animationRequired = this._animationRequired; ripple.ease({ opacity: 0, delay, duration, animationRequired, mode: Clutter.AnimationMode.EASE_IN_QUAD, }); ripple.ease({ scale_x: finalScale, scale_y: finalScale, delay, duration, animationRequired, mode: Clutter.AnimationMode.LINEAR, onComplete: () => (ripple.visible = false), }); } addTo(stage) { if (this._stage !== undefined) throw new Error('Ripples already added'); this._stage = stage; this._stage.add_child(this._ripple1); this._stage.add_child(this._ripple2); this._stage.add_child(this._ripple3); } playAnimation(x, y) { if (this._stage === undefined) throw new Error('Ripples not added'); this._x = x; this._y = y; this._stage.set_child_above_sibling(this._ripple1, null); this._stage.set_child_above_sibling(this._ripple2, this._ripple1); this._stage.set_child_above_sibling(this._ripple3, this._ripple2); // Show three concentric ripples expanding outwards; the exact // parameters were found by trial and error, so don't look // for them to make perfect sense mathematically // delay time scale opacity => scale this._animRipple(this._ripple1, 0, 830, 0.25, 1.0, 1.5); this._animRipple(this._ripple2, 50, 1000, 0.0, 0.7, 1.25); this._animRipple(this._ripple3, 350, 1000, 0.0, 0.3, 1); } } 070701000001D9000081A40000000000000000000000016712993F0000228C000000000000000000000000000000000000002400000000gnome-shell-47.1/js/ui/runDialog.jsimport Clutter from 'gi://Clutter'; import Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import Meta from 'gi://Meta'; import Shell from 'gi://Shell'; import St from 'gi://St'; import * as Dialog from './dialog.js'; import * as Main from './main.js'; import * as ModalDialog from './modalDialog.js'; import * as ShellEntry from './shellEntry.js'; import * as Util from '../misc/util.js'; import * as History from '../misc/history.js'; const HISTORY_KEY = 'command-history'; const LOCKDOWN_SCHEMA = 'org.gnome.desktop.lockdown'; const DISABLE_COMMAND_LINE_KEY = 'disable-command-line'; const TERMINAL_SCHEMA = 'org.gnome.desktop.default-applications.terminal'; const EXEC_KEY = 'exec'; const EXEC_ARG_KEY = 'exec-arg'; export const RunDialog = GObject.registerClass( class RunDialog extends ModalDialog.ModalDialog { _init() { super._init({ styleClass: 'run-dialog', destroyOnClose: false, }); this._lockdownSettings = new Gio.Settings({schema_id: LOCKDOWN_SCHEMA}); this._terminalSettings = new Gio.Settings({schema_id: TERMINAL_SCHEMA}); global.settings.connect('changed::development-tools', () => { this._enableInternalCommands = global.settings.get_boolean('development-tools'); }); this._enableInternalCommands = global.settings.get_boolean('development-tools'); this._internalCommands = { 'lg': () => Main.createLookingGlass().open(), 'r': this._restart.bind(this), // Developer brain backwards compatibility 'restart': this._restart.bind(this), 'debugexit': () => global.context.terminate(), // rt is short for "reload theme" 'rt': () => { Main.reloadThemeResource(); Main.loadTheme(); }, 'check_cloexec_fds': () => { Shell.util_check_cloexec_fds(); }, }; let title = _('Run a Command'); let content = new Dialog.MessageDialogContent({title}); this.contentLayout.add_child(content); let entry = new St.Entry({ style_class: 'run-dialog-entry', can_focus: true, }); ShellEntry.addContextMenu(entry); this._entryText = entry.clutter_text; content.add_child(entry); this.setInitialKeyFocus(this._entryText); let defaultDescriptionText = _('Press ESC to close'); this._descriptionLabel = new St.Label({ style_class: 'run-dialog-description', text: defaultDescriptionText, }); content.add_child(this._descriptionLabel); this._commandError = false; this._pathCompleter = new Gio.FilenameCompleter(); this._history = new History.HistoryManager({ gsettingsKey: HISTORY_KEY, entry: this._entryText, }); this._entryText.connect('activate', o => { this.popModal(); this._run(o.get_text(), Clutter.get_current_event().get_state() & Clutter.ModifierType.CONTROL_MASK); if (!this._commandError || !this.pushModal()) this.close(); }); this._entryText.connect('key-press-event', (o, e) => { let symbol = e.get_key_symbol(); if (symbol === Clutter.KEY_Tab) { let text = o.get_text(); let prefix; if (text.lastIndexOf(' ') === -1) prefix = text; else prefix = text.substring(text.lastIndexOf(' ') + 1); let postfix = this._getCompletion(prefix); if (postfix != null && postfix.length > 0) { o.insert_text(postfix, -1); o.set_cursor_position(text.length + postfix.length); } return Clutter.EVENT_STOP; } return Clutter.EVENT_PROPAGATE; }); this._entryText.connect('text-changed', () => { this._descriptionLabel.set_text(defaultDescriptionText); }); } vfunc_key_release_event(event) { if (event.get_key_symbol() === Clutter.KEY_Escape) { this.close(); return Clutter.EVENT_STOP; } return Clutter.EVENT_PROPAGATE; } _getCommandCompletion(text) { function _getCommon(s1, s2) { if (s1 == null) return s2; let k = 0; for (; k < s1.length && k < s2.length; k++) { if (s1[k] !== s2[k]) break; } if (k === 0) return ''; return s1.substring(0, k); } let paths = GLib.getenv('PATH').split(':'); paths.push(GLib.get_home_dir()); let someResults = paths.map(path => { let results = []; try { let file = Gio.File.new_for_path(path); let fileEnum = file.enumerate_children('standard::name', Gio.FileQueryInfoFlags.NONE, null); let info; while ((info = fileEnum.next_file(null))) { let name = info.get_name(); if (name.slice(0, text.length) === text) results.push(name); } } catch (e) { if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_FOUND) && !e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_DIRECTORY)) log(e); } return results; }); let results = someResults.reduce((a, b) => a.concat(b), []); if (!results.length) return null; let common = results.reduce(_getCommon, null); return common.substring(text.length); } _getCompletion(text) { if (text.includes('/')) return this._pathCompleter.get_completion_suffix(text); else return this._getCommandCompletion(text); } _run(input, inTerminal) { input = this._history.addItem(input); // trims input let command = input; this._commandError = false; let f; if (this._enableInternalCommands) f = this._internalCommands[input]; else f = null; if (f) { f(); } else { try { if (inTerminal) { let exec = this._terminalSettings.get_string(EXEC_KEY); let execArg = this._terminalSettings.get_string(EXEC_ARG_KEY); command = `${exec} ${execArg} ${input}`; } Util.trySpawnCommandLine(command); } catch (e) { // Mmmh, that failed - see if @input matches an existing file let path = null; if (input.charAt(0) === '/') { path = input; } else if (input) { if (input.charAt(0) === '~') input = input.slice(1); path = `${GLib.get_home_dir()}/${input}`; } if (path && GLib.file_test(path, GLib.FileTest.EXISTS)) { let file = Gio.file_new_for_path(path); try { Gio.app_info_launch_default_for_uri(file.get_uri(), global.create_app_launch_context(0, -1)); } catch (err) { // The exception from gjs contains an error string like: // Error invoking Gio.app_info_launch_default_for_uri: No application // is registered as handling this file // We are only interested in the part after the first colon. let message = err.message.replace(/[^:]*: *(.+)/, '$1'); this._showError(message); } } else { this._showError(e.message); } } } } _showError(message) { this._commandError = true; this._descriptionLabel.set_text(message); } _restart() { if (Meta.is_wayland_compositor()) { this._showError(_('Restart is not available on Wayland')); return; } this._shouldFadeOut = false; this.close(); Meta.restart(_('Restarting…'), global.context); } open() { this._history.lastItem(); this._entryText.set_text(''); this._commandError = false; if (this._lockdownSettings.get_boolean(DISABLE_COMMAND_LINE_KEY)) return false; return super.open(); } }); 070701000001DA000081A40000000000000000000000016712993F00005D27000000000000000000000000000000000000002700000000gnome-shell-47.1/js/ui/screenShield.jsimport AccountsService from 'gi://AccountsService'; import Clutter from 'gi://Clutter'; import Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import Graphene from 'gi://Graphene'; import Meta from 'gi://Meta'; import Shell from 'gi://Shell'; import St from 'gi://St'; import * as Signals from '../misc/signals.js'; import * as GnomeSession from '../misc/gnomeSession.js'; import * as OVirt from '../gdm/oVirt.js'; import * as LoginManager from '../misc/loginManager.js'; import * as Lightbox from './lightbox.js'; import * as Main from './main.js'; import * as Overview from './overview.js'; import * as MessageTray from './messageTray.js'; import * as ShellDBus from './shellDBus.js'; import * as SmartcardManager from '../misc/smartcardManager.js'; import {adjustAnimationTime} from '../misc/animationUtils.js'; const SCREENSAVER_SCHEMA = 'org.gnome.desktop.screensaver'; const LOCK_ENABLED_KEY = 'lock-enabled'; const LOCK_DELAY_KEY = 'lock-delay'; const LOCKDOWN_SCHEMA = 'org.gnome.desktop.lockdown'; const DISABLE_LOCK_KEY = 'disable-lock-screen'; const LOCKED_STATE_STR = 'screenShield.locked'; // ScreenShield animation time // - STANDARD_FADE_TIME is used when the session goes idle // - MANUAL_FADE_TIME is used for lowering the shield when asked by the user, // or when cancelling the dialog // - CURTAIN_SLIDE_TIME is used when raising the shield before unlocking const STANDARD_FADE_TIME = 10000; const MANUAL_FADE_TIME = 300; const CURTAIN_SLIDE_TIME = 300; /** * If you are setting org.gnome.desktop.session.idle-delay directly in dconf, * rather than through System Settings, you also need to set * org.gnome.settings-daemon.plugins.power.sleep-display-ac and * org.gnome.settings-daemon.plugins.power.sleep-display-battery to the same value. * This will ensure that the screen blanks at the right time when it fades out. * https://bugzilla.gnome.org/show_bug.cgi?id=668703 explains the dependency. */ export class ScreenShield extends Signals.EventEmitter { constructor() { super(); this.actor = Main.layoutManager.screenShieldGroup; this._lockScreenState = MessageTray.State.HIDDEN; this._lockScreenGroup = new St.Widget({ x_expand: true, y_expand: true, reactive: true, can_focus: true, name: 'lockScreenGroup', visible: false, }); this._lockDialogGroup = new St.Widget({ x_expand: true, y_expand: true, reactive: true, can_focus: true, pivot_point: new Graphene.Point({x: 0.5, y: 0.5}), name: 'lockDialogGroup', }); this.actor.add_child(this._lockScreenGroup); this.actor.add_child(this._lockDialogGroup); this._presence = new GnomeSession.Presence((proxy, error) => { if (error) { logError(error, 'Error while reading gnome-session presence'); return; } this._onStatusChanged(proxy.status); }); this._presence.connectSignal('StatusChanged', (proxy, senderName, [status]) => { this._onStatusChanged(status); }); this._screenSaverDBus = new ShellDBus.ScreenSaverDBus(this); this._smartcardManager = SmartcardManager.getSmartcardManager(); this._smartcardManager.connect('smartcard-inserted', (manager, token) => { if (this._isLocked && token.UsedToLogin) this._activateDialog(); }); this._credentialManagers = {}; this.addCredentialManager(OVirt.SERVICE_NAME, OVirt.getOVirtCredentialsManager()); this._loginManager = LoginManager.getLoginManager(); this._loginManager.connect('prepare-for-sleep', this._prepareForSleep.bind(this)); this._loginSession = null; this._getLoginSession(); this._settings = new Gio.Settings({schema_id: SCREENSAVER_SCHEMA}); this._settings.connect(`changed::${LOCK_ENABLED_KEY}`, this._syncInhibitor.bind(this)); this._lockSettings = new Gio.Settings({schema_id: LOCKDOWN_SCHEMA}); this._lockSettings.connect(`changed::${DISABLE_LOCK_KEY}`, this._syncInhibitor.bind(this)); this._isModal = false; this._isGreeter = false; this._isActive = false; this._isLocked = false; this._inUnlockAnimation = false; this._inhibited = false; this._activationTime = 0; this._becameActiveId = 0; this._lockTimeoutId = 0; // The "long" lightbox is used for the longer (20 seconds) fade from session // to idle status, the "short" is used for quickly fading to black when locking // manually this._longLightbox = new Lightbox.Lightbox(Main.uiGroup, { inhibitEvents: true, fadeFactor: 1, }); this._longLightbox.connect('notify::active', this._onLongLightbox.bind(this)); this._shortLightbox = new Lightbox.Lightbox(Main.uiGroup, { inhibitEvents: true, fadeFactor: 1, }); this._shortLightbox.connect('notify::active', this._onShortLightbox.bind(this)); this.idleMonitor = global.backend.get_core_idle_monitor(); this._cursorTracker = Meta.CursorTracker.get_for_display(global.display); this._syncInhibitor(); } async _getLoginSession() { this._loginSession = await this._loginManager.getCurrentSessionProxy(); this._loginSession.connectSignal('Lock', () => this.lock(false)); this._loginSession.connectSignal('Unlock', () => this.deactivate(false)); this._loginSession.connect('g-properties-changed', () => this._syncInhibitor()); this._syncInhibitor(); } _setActive(active) { let prevIsActive = this._isActive; this._isActive = active; if (prevIsActive !== this._isActive) this.emit('active-changed'); this._syncInhibitor(); } _setLocked(locked) { let prevIsLocked = this._isLocked; this._isLocked = locked; if (prevIsLocked !== this._isLocked) this.emit('locked-changed'); if (this._loginSession) this._loginSession.SetLockedHintAsync(locked).catch(logError); } _activateDialog() { if (this._isLocked) { this._ensureUnlockDialog(true /* allowCancel */); this._dialog.activate(); } else { this.deactivate(true /* animate */); } } _maybeCancelDialog() { if (!this._dialog) return; this._dialog.cancel(); if (this._isGreeter) { // LoginDialog.cancel() will grab the key focus // on its own, so ensure it stays on lock screen // instead this._dialog.grab_key_focus(); } } _becomeModal() { if (this._isModal) return true; let grab = Main.pushModal(Main.uiGroup, {actionMode: Shell.ActionMode.LOCK_SCREEN}); // We expect at least a keyboard grab here this._isModal = (grab.get_seat_state() & Clutter.GrabState.KEYBOARD) !== 0; if (this._isModal) this._grab = grab; else Main.popModal(grab); return this._isModal; } async _syncInhibitor() { const lockEnabled = this._settings.get_boolean(LOCK_ENABLED_KEY); const lockLocked = this._lockSettings.get_boolean(DISABLE_LOCK_KEY); const inhibit = !!this._loginSession && this._loginSession.Active && !this._isActive && lockEnabled && !lockLocked && !!Main.sessionMode.unlockDialog; if (inhibit === this._inhibited) return; this._inhibited = inhibit; this._inhibitCancellable?.cancel(); this._inhibitCancellable = new Gio.Cancellable(); if (inhibit) { try { this._inhibitor = await this._loginManager.inhibit( _('GNOME needs to lock the screen'), this._inhibitCancellable); } catch (e) { if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) log('Failed to inhibit suspend: %s'.format(e.message)); } } else { this._inhibitor?.close(null); this._inhibitor = null; } } _prepareForSleep(loginManager, aboutToSuspend) { if (aboutToSuspend) { if (this._settings.get_boolean(LOCK_ENABLED_KEY)) this.lock(true); } else { this._wakeUpScreen(); } } _onStatusChanged(status) { if (status !== GnomeSession.PresenceStatus.IDLE) return; this._maybeCancelDialog(); if (this._longLightbox.visible) { // We're in the process of showing. return; } if (!this._becomeModal()) { // We could not become modal, so we can't activate the // screenshield. The user is probably very upset at this // point, but any application using global grabs is broken // Just tell them to stop using this app // // XXX: another option is to kick the user into the gdm login // screen, where we're not affected by grabs Main.notifyError( _('Unable to lock'), _('Lock was blocked by an app')); return; } if (this._activationTime === 0) this._activationTime = GLib.get_monotonic_time(); let shouldLock = this._settings.get_boolean(LOCK_ENABLED_KEY) && !this._isLocked; if (shouldLock) { let lockTimeout = Math.max( adjustAnimationTime(STANDARD_FADE_TIME), this._settings.get_uint(LOCK_DELAY_KEY) * 1000); this._lockTimeoutId = GLib.timeout_add( GLib.PRIORITY_DEFAULT, lockTimeout, () => { this._lockTimeoutId = 0; this.lock(false); return GLib.SOURCE_REMOVE; }); GLib.Source.set_name_by_id(this._lockTimeoutId, '[gnome-shell] this.lock'); } this._activateFade(this._longLightbox, STANDARD_FADE_TIME); } _activateFade(lightbox, time) { Main.uiGroup.set_child_above_sibling(lightbox, null); lightbox.lightOn(time); if (this._becameActiveId === 0) this._becameActiveId = this.idleMonitor.add_user_active_watch(this._onUserBecameActive.bind(this)); } _onUserBecameActive() { // This function gets called here when the user becomes active // after we activated a lightbox // There are two possibilities here: // - we're called when already locked; we just go back to the lock screen curtain // - we're called because the session is IDLE but before the lightbox // is fully shown; at this point isActive is false, so we just hide // the lightbox, reset the activationTime and go back to the unlocked // desktop // using deactivate() is a little of overkill, but it ensures we // don't forget of some bit like modal, DBus properties or idle watches // // Note: if the (long) lightbox is shown then we're necessarily // active, because we call activate() without animation. this.idleMonitor.remove_watch(this._becameActiveId); this._becameActiveId = 0; if (this._isLocked) { this._longLightbox.lightOff(); this._shortLightbox.lightOff(); } else { this.deactivate(false); } } _onLongLightbox(lightBox) { if (lightBox.active) this.activate(false); } _onShortLightbox(lightBox) { if (lightBox.active) this._completeLockScreenShown(); } showDialog() { if (!this._becomeModal()) { // In the login screen, this is a hard error. Fail-whale const error = new GLib.Error( Gio.IOErrorEnum, Gio.IOErrorEnum.FAILED, 'Could not acquire modal grab for the login screen. Aborting login process.'); global.context.terminate_with_error(error); } this.actor.show(); this._isGreeter = Main.sessionMode.isGreeter; this._isLocked = true; this._ensureUnlockDialog(true); } _hideLockScreenComplete() { this._lockScreenState = MessageTray.State.HIDDEN; this._lockScreenGroup.hide(); if (this._dialog) { this._dialog.grab_key_focus(); this._dialog.navigate_focus(null, St.DirectionType.TAB_FORWARD, false); } } _showPointer() { this._cursorTracker.set_pointer_visible(true); if (this._motionId) { global.stage.disconnect(this._motionId); this._motionId = 0; } } _hidePointerUntilMotion() { this._motionId = global.stage.connect('captured-event', (stage, event) => { if (event.type() === Clutter.EventType.MOTION) this._showPointer(); return Clutter.EVENT_PROPAGATE; }); this._cursorTracker.set_pointer_visible(false); } _hideLockScreen(animate) { if (this._lockScreenState === MessageTray.State.HIDDEN) return; this._lockScreenState = MessageTray.State.HIDING; this._lockDialogGroup.remove_all_transitions(); // Animate the lock screen out of screen // if velocity is not specified (i.e. we come here from pressing ESC), // use the same speed regardless of original position // if velocity is specified, it's in pixels per milliseconds const height = global.stage.height; const delta = height + this._lockDialogGroup.translation_y; const velocity = height / CURTAIN_SLIDE_TIME; const duration = animate ? delta / velocity : 0; this._lockDialogGroup.ease({ translation_y: -height, duration, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => this._hideLockScreenComplete(), }); this._showPointer(); } _ensureUnlockDialog(allowCancel) { if (!this._dialog) { let constructor = Main.sessionMode.unlockDialog; if (!constructor) { // This session mode has no locking capabilities this.deactivate(true); return false; } this._dialog = new constructor(this._lockDialogGroup); if (!this._dialog.open()) { // This is kind of an impossible error: we're already modal // by the time we reach this... log('Could not open login dialog: failed to acquire grab'); this.deactivate(true); return false; } this._dialog.connect('failed', this._onUnlockFailed.bind(this)); this._wakeUpScreenId = this._dialog.connect( 'wake-up-screen', this._wakeUpScreen.bind(this)); } this._dialog.allowCancel = allowCancel; this._dialog.grab_key_focus(); return true; } _onUnlockFailed() { this._resetLockScreen({ animateLockScreen: true, fadeToBlack: false, }); } _resetLockScreen(params) { // Don't reset the lock screen unless it is completely hidden // This prevents the shield going down if the lock-delay timeout // fires while the user is dragging (which has the potential // to confuse our state) if (this._lockScreenState !== MessageTray.State.HIDDEN) return; this._lockScreenGroup.show(); this._lockScreenState = MessageTray.State.SHOWING; let fadeToBlack = params.fadeToBlack; if (params.animateLockScreen) { this._lockDialogGroup.translation_y = -global.screen_height; this._lockDialogGroup.remove_all_transitions(); this._lockDialogGroup.ease({ translation_y: 0, duration: Overview.ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => { this._lockScreenShown({fadeToBlack, animateFade: true}); }, }); } else { this._lockDialogGroup.translation_y = 0; this._lockScreenShown({fadeToBlack, animateFade: false}); } this._dialog.grab_key_focus(); } _lockScreenShown(params) { this._hidePointerUntilMotion(); this._lockScreenState = MessageTray.State.SHOWN; if (params.fadeToBlack && params.animateFade) { // Take a beat let id = GLib.timeout_add(GLib.PRIORITY_DEFAULT, MANUAL_FADE_TIME, () => { this._activateFade(this._shortLightbox, MANUAL_FADE_TIME); return GLib.SOURCE_REMOVE; }); GLib.Source.set_name_by_id(id, '[gnome-shell] this._activateFade'); } else { if (params.fadeToBlack) this._activateFade(this._shortLightbox, 0); this._completeLockScreenShown(); } } _completeLockScreenShown() { this._setActive(true); this.emit('lock-screen-shown'); } _wakeUpScreen() { if (!this.active) return; // already woken up, or not yet asleep this._onUserBecameActive(); this.emit('wake-up-screen'); } get locked() { return this._isLocked; } get active() { return this._isActive; } get activationTime() { return this._activationTime; } deactivate(animate) { if (this._dialog) this._dialog.finish(() => this._continueDeactivate(animate)); else this._continueDeactivate(animate); } _continueDeactivate(animate) { this._hideLockScreen(animate); if (Main.sessionMode.currentMode === 'unlock-dialog') Main.sessionMode.popMode('unlock-dialog'); this.emit('wake-up-screen'); if (this._isGreeter) { // We don't want to "deactivate" any more than // this. In particular, we don't want to drop // the modal, hide ourselves or destroy the dialog // But we do want to set isActive to false, so that // gnome-session will reset the idle counter, and // gnome-settings-daemon will stop blanking the screen this._activationTime = 0; this._setActive(false); return; } if (this._dialog && !this._isGreeter) this._dialog.popModal(); if (this._isModal) { Main.popModal(this._grab); this._grab = null; this._isModal = false; } this._longLightbox.lightOff(); this._shortLightbox.lightOff(); this._lockDialogGroup.ease({ translation_y: -global.screen_height, duration: Overview.ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => this._completeDeactivate(), }); } _completeDeactivate() { if (this._dialog) { this._dialog.destroy(); this._dialog = null; } this.actor.hide(); if (this._becameActiveId !== 0) { this.idleMonitor.remove_watch(this._becameActiveId); this._becameActiveId = 0; } if (this._lockTimeoutId !== 0) { GLib.source_remove(this._lockTimeoutId); this._lockTimeoutId = 0; } this._activationTime = 0; this._setActive(false); this._setLocked(false); global.set_runtime_state(LOCKED_STATE_STR, null); } activate(animate) { if (this._activationTime === 0) this._activationTime = GLib.get_monotonic_time(); if (!this._ensureUnlockDialog(true)) return; this.actor.show(); if (Main.sessionMode.currentMode !== 'unlock-dialog') { this._isGreeter = Main.sessionMode.isGreeter; if (!this._isGreeter) Main.sessionMode.pushMode('unlock-dialog'); } this._resetLockScreen({ animateLockScreen: animate, fadeToBlack: true, }); // On wayland, a crash brings down the entire session, so we don't // need to defend against being restarted unlocked if (!Meta.is_wayland_compositor()) global.set_runtime_state(LOCKED_STATE_STR, GLib.Variant.new('b', true)); // We used to set isActive and emit active-changed here, // but now we do that from lockScreenShown, which means // there is a 0.3 seconds window during which the lock // screen is effectively visible and the screen is locked, but // the DBus interface reports the screensaver is off. // This is because when we emit ActiveChanged(true), // gnome-settings-daemon blanks the screen, and we don't want // blank during the animation. // This is not a problem for the idle fade case, because we // activate without animation in that case. } addCredentialManager(serviceName, credentialManager) { if (this._credentialManagers[serviceName]) return; this._credentialManagers[serviceName] = credentialManager; credentialManager.connectObject('user-authenticated', () => { if (this._isLocked) this._activateDialog(); }, this); } removeCredentialManager(serviceName) { let credentialManager = this._credentialManagers[serviceName]; if (!credentialManager) return; credentialManager.disconnectObject(this); delete this._credentialManagers[serviceName]; } lock(animate) { if (this._lockSettings.get_boolean(DISABLE_LOCK_KEY)) { log('Screen lock is locked down, not locking'); // lock, lock - who's there? return; } // Warn the user if we can't become modal if (!this._becomeModal()) { Main.notifyError( _('Unable to lock'), _('Lock was blocked by an app')); return; } // Clear the clipboard - otherwise, its contents may be leaked // to unauthorized parties by pasting into the unlock dialog's // password entry and unmasking the entry St.Clipboard.get_default().set_text(St.ClipboardType.CLIPBOARD, ''); St.Clipboard.get_default().set_text(St.ClipboardType.PRIMARY, ''); let userManager = AccountsService.UserManager.get_default(); let user = userManager.get_user(GLib.get_user_name()); this.activate(animate); const lock = this._isGreeter ? true : user.password_mode !== AccountsService.UserPasswordMode.NONE; this._setLocked(lock); } // If the previous shell crashed, and gnome-session restarted us, then re-lock lockIfWasLocked() { if (!this._settings.get_boolean(LOCK_ENABLED_KEY)) return; let wasLocked = global.get_runtime_state('b', LOCKED_STATE_STR); if (wasLocked === null) return; const laters = global.compositor.get_laters(); laters.add(Meta.LaterType.BEFORE_REDRAW, () => { this.lock(false); return GLib.SOURCE_REMOVE; }); } } 070701000001DB000081A40000000000000000000000016712993F0001A484000000000000000000000000000000000000002500000000gnome-shell-47.1/js/ui/screenshot.jsimport Clutter from 'gi://Clutter'; import Cogl from 'gi://Cogl'; import Gio from 'gi://Gio'; import GObject from 'gi://GObject'; import GLib from 'gi://GLib'; import Graphene from 'gi://Graphene'; import Meta from 'gi://Meta'; import Mtk from 'gi://Mtk'; import Shell from 'gi://Shell'; import St from 'gi://St'; import * as GrabHelper from './grabHelper.js'; import * as Layout from './layout.js'; import * as Lightbox from './lightbox.js'; import * as Main from './main.js'; import * as MessageTray from './messageTray.js'; import * as Workspace from './workspace.js'; Gio._promisify(Shell.Screenshot.prototype, 'pick_color'); Gio._promisify(Shell.Screenshot.prototype, 'screenshot'); Gio._promisify(Shell.Screenshot.prototype, 'screenshot_window'); Gio._promisify(Shell.Screenshot.prototype, 'screenshot_area'); Gio._promisify(Shell.Screenshot.prototype, 'screenshot_stage_to_content'); Gio._promisify(Shell.Screenshot, 'composite_to_stream'); import {ScreencastErrors, ScreencastError} from '../misc/dbusErrors.js'; import {loadInterfaceXML} from '../misc/fileUtils.js'; import {DBusSenderChecker} from '../misc/util.js'; const ScreenshotIface = loadInterfaceXML('org.gnome.Shell.Screenshot'); const ScreencastIface = loadInterfaceXML('org.gnome.Shell.Screencast'); const ScreencastProxy = Gio.DBusProxy.makeProxyWrapper(ScreencastIface); const IconLabelButton = GObject.registerClass( class IconLabelButton extends St.Button { _init(iconName, label, params) { super._init(params); this._container = new St.BoxLayout({ vertical: true, style_class: 'icon-label-button-container', }); this.set_child(this._container); this._container.add_child(new St.Icon({icon_name: iconName})); this._container.add_child(new St.Label({ text: label, x_align: Clutter.ActorAlign.CENTER, })); } }); export const Tooltip = GObject.registerClass( class Tooltip extends St.Label { _init(widget, params) { super._init(params); this._widget = widget; this._timeoutId = null; this._widget.connect('notify::hover', () => { if (this._widget.hover) this.open(); else this.close(); }); } open() { if (this._timeoutId) return; this._timeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 300, () => { this.opacity = 0; this.show(); const extents = this._widget.get_transformed_extents(); const xOffset = Math.floor((extents.get_width() - this.width) / 2); const x = Math.clamp(extents.get_x() + xOffset, 0, global.stage.width - this.width); const node = this.get_theme_node(); const yOffset = node.get_length('-y-offset'); const y = extents.get_y() - this.height - yOffset; this.set_position(x, y); this.ease({ opacity: 255, duration: 150, mode: Clutter.AnimationMode.EASE_OUT_QUAD, }); this._timeoutId = null; return GLib.SOURCE_REMOVE; }); GLib.Source.set_name_by_id(this._timeoutId, '[gnome-shell] tooltip.open'); } close() { if (this._timeoutId) { GLib.source_remove(this._timeoutId); this._timeoutId = null; return; } if (!this.visible) return; this.remove_all_transitions(); this.ease({ opacity: 0, duration: 100, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => this.hide(), }); } }); const UIAreaIndicator = GObject.registerClass( class UIAreaIndicator extends St.Widget { _init(params) { super._init(params); this._topRect = new St.Widget({style_class: 'screenshot-ui-area-indicator-shade'}); this._topRect.add_constraint(new Clutter.BindConstraint({ source: this, coordinate: Clutter.BindCoordinate.WIDTH, })); this._topRect.add_constraint(new Clutter.SnapConstraint({ source: this, from_edge: Clutter.SnapEdge.TOP, to_edge: Clutter.SnapEdge.TOP, })); this._topRect.add_constraint(new Clutter.SnapConstraint({ source: this, from_edge: Clutter.SnapEdge.LEFT, to_edge: Clutter.SnapEdge.LEFT, })); this.add_child(this._topRect); this._bottomRect = new St.Widget({style_class: 'screenshot-ui-area-indicator-shade'}); this._bottomRect.add_constraint(new Clutter.BindConstraint({ source: this, coordinate: Clutter.BindCoordinate.WIDTH, })); this._bottomRect.add_constraint(new Clutter.SnapConstraint({ source: this, from_edge: Clutter.SnapEdge.BOTTOM, to_edge: Clutter.SnapEdge.BOTTOM, })); this._bottomRect.add_constraint(new Clutter.SnapConstraint({ source: this, from_edge: Clutter.SnapEdge.LEFT, to_edge: Clutter.SnapEdge.LEFT, })); this.add_child(this._bottomRect); this._leftRect = new St.Widget({style_class: 'screenshot-ui-area-indicator-shade'}); this._leftRect.add_constraint(new Clutter.SnapConstraint({ source: this, from_edge: Clutter.SnapEdge.LEFT, to_edge: Clutter.SnapEdge.LEFT, })); this._leftRect.add_constraint(new Clutter.SnapConstraint({ source: this._topRect, from_edge: Clutter.SnapEdge.TOP, to_edge: Clutter.SnapEdge.BOTTOM, })); this._leftRect.add_constraint(new Clutter.SnapConstraint({ source: this._bottomRect, from_edge: Clutter.SnapEdge.BOTTOM, to_edge: Clutter.SnapEdge.TOP, })); this.add_child(this._leftRect); this._rightRect = new St.Widget({style_class: 'screenshot-ui-area-indicator-shade'}); this._rightRect.add_constraint(new Clutter.SnapConstraint({ source: this, from_edge: Clutter.SnapEdge.RIGHT, to_edge: Clutter.SnapEdge.RIGHT, })); this._rightRect.add_constraint(new Clutter.SnapConstraint({ source: this._topRect, from_edge: Clutter.SnapEdge.TOP, to_edge: Clutter.SnapEdge.BOTTOM, })); this._rightRect.add_constraint(new Clutter.SnapConstraint({ source: this._bottomRect, from_edge: Clutter.SnapEdge.BOTTOM, to_edge: Clutter.SnapEdge.TOP, })); this.add_child(this._rightRect); this._selectionRect = new St.Widget({style_class: 'screenshot-ui-area-indicator-selection'}); this.add_child(this._selectionRect); this._topRect.add_constraint(new Clutter.SnapConstraint({ source: this._selectionRect, from_edge: Clutter.SnapEdge.BOTTOM, to_edge: Clutter.SnapEdge.TOP, })); this._bottomRect.add_constraint(new Clutter.SnapConstraint({ source: this._selectionRect, from_edge: Clutter.SnapEdge.TOP, to_edge: Clutter.SnapEdge.BOTTOM, })); this._leftRect.add_constraint(new Clutter.SnapConstraint({ source: this._selectionRect, from_edge: Clutter.SnapEdge.RIGHT, to_edge: Clutter.SnapEdge.LEFT, })); this._rightRect.add_constraint(new Clutter.SnapConstraint({ source: this._selectionRect, from_edge: Clutter.SnapEdge.LEFT, to_edge: Clutter.SnapEdge.RIGHT, })); } setSelectionRect(x, y, width, height) { this._selectionRect.set_position(x, y); this._selectionRect.set_size(width, height); } }); const UIAreaSelector = GObject.registerClass({ Signals: {'drag-started': {}, 'drag-ended': {}}, }, class UIAreaSelector extends St.Widget { _init(params) { super._init(params); // During a drag, this can be Clutter.BUTTON_PRIMARY, // Clutter.BUTTON_SECONDARY or the string "touch" to identify the source // of the drag operation. this._dragButton = 0; this._dragSequence = null; this._areaIndicator = new UIAreaIndicator(); this._areaIndicator.add_constraint(new Clutter.BindConstraint({ source: this, coordinate: Clutter.BindCoordinate.ALL, })); this.add_child(this._areaIndicator); this._topLeftHandle = new St.Widget({style_class: 'screenshot-ui-area-selector-handle'}); this.add_child(this._topLeftHandle); this._topRightHandle = new St.Widget({style_class: 'screenshot-ui-area-selector-handle'}); this.add_child(this._topRightHandle); this._bottomLeftHandle = new St.Widget({style_class: 'screenshot-ui-area-selector-handle'}); this.add_child(this._bottomLeftHandle); this._bottomRightHandle = new St.Widget({style_class: 'screenshot-ui-area-selector-handle'}); this.add_child(this._bottomRightHandle); // This will be updated before the first drawn frame. this._handleSize = 0; this._topLeftHandle.connect('style-changed', widget => { this._handleSize = widget.get_theme_node().get_width(); this._updateSelectionRect(); }); this.connect('notify::mapped', () => { if (this.mapped) { const [x, y] = global.get_pointer(); this._updateCursor(x, y); } }); // Initialize area to out of bounds so reset() below resets it. this._startX = -1; this._startY = 0; this._lastX = 0; this._lastY = 0; this.reset(); } reset() { this.stopDrag(); global.display.set_cursor(Meta.Cursor.DEFAULT); // Preserve area selection if possible. If the area goes out of bounds, // the monitors might have changed, so reset the area. const [x, y, w, h] = this.getGeometry(); if (x < 0 || y < 0 || x + w > this.width || y + h > this.height) { // Initialize area to out of bounds so if there's no monitor, // the area will be reset once a monitor does appear. this._startX = -1; this._startY = 0; this._lastX = 0; this._lastY = 0; // This can happen when running headless without any monitors. if (Main.layoutManager.primaryIndex !== -1) { const monitor = Main.layoutManager.monitors[Main.layoutManager.primaryIndex]; this._startX = monitor.x + Math.floor(monitor.width * 3 / 8); this._startY = monitor.y + Math.floor(monitor.height * 3 / 8); this._lastX = monitor.x + Math.floor(monitor.width * 5 / 8) - 1; this._lastY = monitor.y + Math.floor(monitor.height * 5 / 8) - 1; } this._updateSelectionRect(); } } getGeometry() { const leftX = Math.min(this._startX, this._lastX); const topY = Math.min(this._startY, this._lastY); const rightX = Math.max(this._startX, this._lastX); const bottomY = Math.max(this._startY, this._lastY); return [leftX, topY, rightX - leftX + 1, bottomY - topY + 1]; } _updateSelectionRect() { const [x, y, w, h] = this.getGeometry(); this._areaIndicator.setSelectionRect(x, y, w, h); const offset = this._handleSize / 2; this._topLeftHandle.set_position(x - offset, y - offset); this._topRightHandle.set_position(x + w - 1 - offset, y - offset); this._bottomLeftHandle.set_position(x - offset, y + h - 1 - offset); this._bottomRightHandle.set_position(x + w - 1 - offset, y + h - 1 - offset); } _computeCursorType(cursorX, cursorY) { const [leftX, topY, width, height] = this.getGeometry(); const [rightX, bottomY] = [leftX + width - 1, topY + height - 1]; const [x, y] = [cursorX, cursorY]; // Check if the cursor overlaps the handles first. const limit = (this._handleSize / 2) ** 2; if ((leftX - x) ** 2 + (topY - y) ** 2 <= limit) return Meta.Cursor.NW_RESIZE; else if ((rightX - x) ** 2 + (topY - y) ** 2 <= limit) return Meta.Cursor.NE_RESIZE; else if ((leftX - x) ** 2 + (bottomY - y) ** 2 <= limit) return Meta.Cursor.SW_RESIZE; else if ((rightX - x) ** 2 + (bottomY - y) ** 2 <= limit) return Meta.Cursor.SE_RESIZE; // Now check the rest of the rectangle. const threshold = 10 * St.ThemeContext.get_for_stage(global.stage).scaleFactor; if (leftX - x >= 0 && leftX - x <= threshold) { if (topY - y >= 0 && topY - y <= threshold) return Meta.Cursor.NW_RESIZE; else if (y - bottomY >= 0 && y - bottomY <= threshold) return Meta.Cursor.SW_RESIZE; else if (topY - y < 0 && y - bottomY < 0) return Meta.Cursor.WEST_RESIZE; } else if (x - rightX >= 0 && x - rightX <= threshold) { if (topY - y >= 0 && topY - y <= threshold) return Meta.Cursor.NE_RESIZE; else if (y - bottomY >= 0 && y - bottomY <= threshold) return Meta.Cursor.SE_RESIZE; else if (topY - y < 0 && y - bottomY < 0) return Meta.Cursor.EAST_RESIZE; } else if (leftX - x < 0 && x - rightX < 0) { if (topY - y >= 0 && topY - y <= threshold) return Meta.Cursor.NORTH_RESIZE; else if (y - bottomY >= 0 && y - bottomY <= threshold) return Meta.Cursor.SOUTH_RESIZE; else if (topY - y < 0 && y - bottomY < 0) return Meta.Cursor.MOVE_OR_RESIZE_WINDOW; } return Meta.Cursor.CROSSHAIR; } stopDrag() { if (!this._dragButton) return; if (this._dragGrab) { this._dragGrab.dismiss(); this._dragGrab = null; } this._dragButton = 0; this._dragSequence = null; if (this._dragCursor === Meta.Cursor.CROSSHAIR && this._lastX === this._startX && this._lastY === this._startY) { // The user clicked without dragging. Make up a larger selection // to reduce confusion. const offset = 20 * St.ThemeContext.get_for_stage(global.stage).scaleFactor; this._startX -= offset; this._startY -= offset; this._lastX += offset; this._lastY += offset; // Keep the coordinates inside the stage. if (this._startX < 0) { this._lastX -= this._startX; this._startX = 0; } else if (this._lastX >= this.width) { this._startX -= this._lastX - this.width + 1; this._lastX = this.width - 1; } if (this._startY < 0) { this._lastY -= this._startY; this._startY = 0; } else if (this._lastY >= this.height) { this._startY -= this._lastY - this.height + 1; this._lastY = this.height - 1; } this._updateSelectionRect(); } this.emit('drag-ended'); } _updateCursor(x, y) { const cursor = this._computeCursorType(x, y); global.display.set_cursor(cursor); } _onPress(event, button, sequence) { if (this._dragButton) return Clutter.EVENT_PROPAGATE; const [x, y] = event.get_coords(); const cursor = this._computeCursorType(x, y); // Clicking outside of the selection, or using the right mouse button, // or with Ctrl results in dragging a new selection from scratch. if (cursor === Meta.Cursor.CROSSHAIR || button === Clutter.BUTTON_SECONDARY || (event.get_state() & Clutter.ModifierType.CONTROL_MASK)) { this._dragButton = button; this._dragCursor = Meta.Cursor.CROSSHAIR; global.display.set_cursor(Meta.Cursor.CROSSHAIR); [this._startX, this._startY] = event.get_coords(); this._lastX = this._startX = Math.floor(this._startX); this._lastY = this._startY = Math.floor(this._startY); this._updateSelectionRect(); } else { // This is a move or resize operation. this._dragButton = button; this._dragCursor = cursor; [this._dragStartX, this._dragStartY] = event.get_coords(); const [leftX, topY, width, height] = this.getGeometry(); const rightX = leftX + width - 1; const bottomY = topY + height - 1; // For moving, start X and Y are the top left corner, while // last X and Y are the bottom right corner. if (cursor === Meta.Cursor.MOVE_OR_RESIZE_WINDOW) { this._startX = leftX; this._startY = topY; this._lastX = rightX; this._lastY = bottomY; } // Start X and Y are set to the stationary sides, while last X // and Y are set to the moving sides. if (cursor === Meta.Cursor.NW_RESIZE || cursor === Meta.Cursor.WEST_RESIZE || cursor === Meta.Cursor.SW_RESIZE) { this._startX = rightX; this._lastX = leftX; } if (cursor === Meta.Cursor.NE_RESIZE || cursor === Meta.Cursor.EAST_RESIZE || cursor === Meta.Cursor.SE_RESIZE) { this._startX = leftX; this._lastX = rightX; } if (cursor === Meta.Cursor.NW_RESIZE || cursor === Meta.Cursor.NORTH_RESIZE || cursor === Meta.Cursor.NE_RESIZE) { this._startY = bottomY; this._lastY = topY; } if (cursor === Meta.Cursor.SW_RESIZE || cursor === Meta.Cursor.SOUTH_RESIZE || cursor === Meta.Cursor.SE_RESIZE) { this._startY = topY; this._lastY = bottomY; } } if (this._dragButton) { this._dragGrab = global.stage.grab(this); this._dragSequence = sequence; this.emit('drag-started'); return Clutter.EVENT_STOP; } return Clutter.EVENT_PROPAGATE; } _onRelease(event, button, sequence) { if (this._dragButton !== button || this._dragSequence?.get_slot() !== sequence?.get_slot()) return Clutter.EVENT_PROPAGATE; this.stopDrag(); // We might have finished creating a new selection, so we need to // update the cursor. const [x, y] = event.get_coords(); this._updateCursor(x, y); return Clutter.EVENT_STOP; } _onMotion(event, sequence) { if (!this._dragButton) { const [x, y] = event.get_coords(); this._updateCursor(x, y); return Clutter.EVENT_PROPAGATE; } if (sequence?.get_slot() !== this._dragSequence?.get_slot()) return Clutter.EVENT_PROPAGATE; if (this._dragCursor === Meta.Cursor.CROSSHAIR) { [this._lastX, this._lastY] = event.get_coords(); this._lastX = Math.floor(this._lastX); this._lastY = Math.floor(this._lastY); } else { const [x, y] = event.get_coords(); let dx = Math.round(x - this._dragStartX); let dy = Math.round(y - this._dragStartY); if (this._dragCursor === Meta.Cursor.MOVE_OR_RESIZE_WINDOW) { const [,, selectionWidth, selectionHeight] = this.getGeometry(); let newStartX = this._startX + dx; let newStartY = this._startY + dy; let newLastX = this._lastX + dx; let newLastY = this._lastY + dy; let overshootX = 0; let overshootY = 0; // Keep the size intact if we bumped into the stage edge. if (newStartX < 0) { overshootX = 0 - newStartX; newStartX = 0; newLastX = newStartX + (selectionWidth - 1); } else if (newLastX > this.width - 1) { overshootX = (this.width - 1) - newLastX; newLastX = this.width - 1; newStartX = newLastX - (selectionWidth - 1); } if (newStartY < 0) { overshootY = 0 - newStartY; newStartY = 0; newLastY = newStartY + (selectionHeight - 1); } else if (newLastY > this.height - 1) { overshootY = (this.height - 1) - newLastY; newLastY = this.height - 1; newStartY = newLastY - (selectionHeight - 1); } // Add the overshoot to the delta to create a "rubberbanding" // behavior of the pointer when dragging. dx += overshootX; dy += overshootY; this._startX = newStartX; this._startY = newStartY; this._lastX = newLastX; this._lastY = newLastY; } else { if (this._dragCursor === Meta.Cursor.WEST_RESIZE || this._dragCursor === Meta.Cursor.EAST_RESIZE) dy = 0; if (this._dragCursor === Meta.Cursor.NORTH_RESIZE || this._dragCursor === Meta.Cursor.SOUTH_RESIZE) dx = 0; // Make sure last X and Y are clamped between 0 and size - 1, // while always preserving the cursor dragging position relative // to the selection rectangle. this._lastX += dx; if (this._lastX >= this.width) { dx -= this._lastX - this.width + 1; this._lastX = this.width - 1; } else if (this._lastX < 0) { dx -= this._lastX; this._lastX = 0; } this._lastY += dy; if (this._lastY >= this.height) { dy -= this._lastY - this.height + 1; this._lastY = this.height - 1; } else if (this._lastY < 0) { dy -= this._lastY; this._lastY = 0; } // If we drag the handle past a selection side, update which // handles are which. if (this._lastX > this._startX) { if (this._dragCursor === Meta.Cursor.NW_RESIZE) this._dragCursor = Meta.Cursor.NE_RESIZE; else if (this._dragCursor === Meta.Cursor.SW_RESIZE) this._dragCursor = Meta.Cursor.SE_RESIZE; else if (this._dragCursor === Meta.Cursor.WEST_RESIZE) this._dragCursor = Meta.Cursor.EAST_RESIZE; } else { // eslint-disable-next-line no-lonely-if if (this._dragCursor === Meta.Cursor.NE_RESIZE) this._dragCursor = Meta.Cursor.NW_RESIZE; else if (this._dragCursor === Meta.Cursor.SE_RESIZE) this._dragCursor = Meta.Cursor.SW_RESIZE; else if (this._dragCursor === Meta.Cursor.EAST_RESIZE) this._dragCursor = Meta.Cursor.WEST_RESIZE; } if (this._lastY > this._startY) { if (this._dragCursor === Meta.Cursor.NW_RESIZE) this._dragCursor = Meta.Cursor.SW_RESIZE; else if (this._dragCursor === Meta.Cursor.NE_RESIZE) this._dragCursor = Meta.Cursor.SE_RESIZE; else if (this._dragCursor === Meta.Cursor.NORTH_RESIZE) this._dragCursor = Meta.Cursor.SOUTH_RESIZE; } else { // eslint-disable-next-line no-lonely-if if (this._dragCursor === Meta.Cursor.SW_RESIZE) this._dragCursor = Meta.Cursor.NW_RESIZE; else if (this._dragCursor === Meta.Cursor.SE_RESIZE) this._dragCursor = Meta.Cursor.NE_RESIZE; else if (this._dragCursor === Meta.Cursor.SOUTH_RESIZE) this._dragCursor = Meta.Cursor.NORTH_RESIZE; } global.display.set_cursor(this._dragCursor); } this._dragStartX += dx; this._dragStartY += dy; } this._updateSelectionRect(); return Clutter.EVENT_STOP; } vfunc_button_press_event(event) { const button = event.get_button(); if (button === Clutter.BUTTON_PRIMARY || button === Clutter.BUTTON_SECONDARY) return this._onPress(event, button, null); return Clutter.EVENT_PROPAGATE; } vfunc_button_release_event(event) { const button = event.get_button(); if (button === Clutter.BUTTON_PRIMARY || button === Clutter.BUTTON_SECONDARY) return this._onRelease(event, button, null); return Clutter.EVENT_PROPAGATE; } vfunc_motion_event(event) { return this._onMotion(event, null); } vfunc_touch_event(event) { const eventType = event.type(); if (eventType === Clutter.EventType.TOUCH_BEGIN) return this._onPress(event, 'touch', event.get_event_sequence()); else if (eventType === Clutter.EventType.TOUCH_END) return this._onRelease(event, 'touch', event.get_event_sequence()); else if (eventType === Clutter.EventType.TOUCH_UPDATE) return this._onMotion(event, event.get_event_sequence()); return Clutter.EVENT_PROPAGATE; } vfunc_leave_event(event) { // If we're dragging and go over the panel we still get a leave event // for some reason, even though we have a grab. We don't want to switch // the cursor when we're dragging. if (!this._dragButton) global.display.set_cursor(Meta.Cursor.DEFAULT); return super.vfunc_leave_event(event); } }); const UIWindowSelectorLayout = GObject.registerClass( class UIWindowSelectorLayout extends Workspace.WorkspaceLayout { _init(monitorIndex) { super._init(null, monitorIndex, null); } vfunc_set_container(container) { this._container = container; this._syncWorkareaTracking(); } vfunc_allocate(container, box) { const containerBox = container.allocation; const containerAllocationChanged = this._lastBox === null || !this._lastBox.equal(containerBox); this._lastBox = containerBox.copy(); let layoutChanged = false; if (this._layout === null) { this._layout = this._createBestLayout(this._workarea); layoutChanged = true; } if (layoutChanged || containerAllocationChanged) this._windowSlots = this._getWindowSlots(box.copy()); const childBox = new Clutter.ActorBox(); const nSlots = this._windowSlots.length; for (let i = 0; i < nSlots; i++) { let [x, y, width, height, child] = this._windowSlots[i]; childBox.set_origin(x, y); childBox.set_size(width, height); child.allocate(childBox); } } addWindow(window) { if (this._sortedWindows.includes(window)) return; this._sortedWindows.push(window); this._container.add_child(window); this._layout = null; this.layout_changed(); } reset() { for (const window of this._sortedWindows) window.destroy(); this._sortedWindows = []; this._windowSlots = []; this._layout = null; } get windows() { return this._sortedWindows; } }); const UIWindowSelectorWindowContent = GObject.registerClass( class UIWindowSelectorWindowContent extends Clutter.Actor { constructor(actor) { super({ x_expand: true, y_expand: true, }); const window = actor.metaWindow; this._boundingBox = window.get_frame_rect(); this._bufferRect = window.get_buffer_rect(); this._bufferScale = actor.get_resource_scale(); this._actor = new Clutter.Actor({ content: actor.paint_to_content(null), }); this.add_child(this._actor); this._border = new St.Bin({ style_class: 'screenshot-ui-window-selector-window-border', child: new St.Icon({ icon_name: 'object-select-symbolic', style_class: 'screenshot-ui-window-selector-check', x_align: Clutter.ActorAlign.CENTER, y_align: Clutter.ActorAlign.CENTER, }), }); this._border.connect('style-changed', () => { this._borderSize = this._border.get_theme_node().get_border_width(St.Side.TOP); }); this.add_child(this._border); this._cursor = null; this._cursorPoint = {x: 0, y: 0}; this._shouldShowCursor = window.has_pointer && window.has_pointer(); this.connect('destroy', this._onDestroy.bind(this)); } get boundingBox() { return this._boundingBox; } get cursorPoint() { return { x: this._cursorPoint.x + this._boundingBox.x - this._bufferRect.x, y: this._cursorPoint.y + this._boundingBox.y - this._bufferRect.y, }; } get bufferScale() { return this._bufferScale; } get windowContent() { return this._actor.content; } _onDestroy() { this.remove_child(this._actor); this._actor.destroy(); this._actor = null; this.remove_child(this._border); this._border.destroy(); this._border = null; if (this._cursor) { this.remove_child(this._cursor); this._cursor.destroy(); this._cursor = null; } } vfunc_allocate(box) { this.set_allocation(box); // Border goes around the window. const borderBox = box.copy(); borderBox.set_origin(0, 0); borderBox.x1 -= this._borderSize; borderBox.y1 -= this._borderSize; borderBox.x2 += this._borderSize; borderBox.y2 += this._borderSize; this._border.allocate(borderBox); // box should contain this._boundingBox worth of window. Compute // origin and size for the actor box to satisfy that. const xScale = box.get_width() / this._boundingBox.width; const yScale = box.get_height() / this._boundingBox.height; const [, windowW, windowH] = this._actor.content.get_preferred_size(); const actorBox = new Clutter.ActorBox(); actorBox.set_origin( (this._bufferRect.x - this._boundingBox.x) * xScale, (this._bufferRect.y - this._boundingBox.y) * yScale ); actorBox.set_size( windowW * xScale / this._bufferScale, windowH * yScale / this._bufferScale ); this._actor.allocate(actorBox); // Allocate the cursor if we have one. if (!this._cursor) return; let [, , w, h] = this._cursor.get_preferred_size(); w *= this._cursorScale; h *= this._cursorScale; const cursorBox = new Clutter.ActorBox({ x1: this._cursorPoint.x, y1: this._cursorPoint.y, x2: this._cursorPoint.x + w, y2: this._cursorPoint.y + h, }); cursorBox.x1 *= xScale; cursorBox.x2 *= xScale; cursorBox.y1 *= yScale; cursorBox.y2 *= yScale; this._cursor.allocate(cursorBox); } addCursorTexture(content, point, scale) { if (!this._shouldShowCursor) return; // Add the cursor. this._cursor = new St.Widget({ content, request_mode: Clutter.RequestMode.CONTENT_SIZE, }); this._cursorPoint = { x: point.x - this._boundingBox.x, y: point.y - this._boundingBox.y, }; this._cursorScale = scale; this.insert_child_below(this._cursor, this._border); } getCursorTexture() { return this._cursor?.content; } setCursorVisible(visible) { if (!this._cursor) return; this._cursor.visible = visible; } }); const UIWindowSelectorWindow = GObject.registerClass( class UIWindowSelectorWindow extends St.Button { _init(actor, params) { super._init({ child: new UIWindowSelectorWindowContent(actor), ...params, }); } get boundingBox() { return this.child.boundingBox; } get windowCenter() { const boundingBox = this.boundingBox; return { x: boundingBox.x + boundingBox.width / 2, y: boundingBox.y + boundingBox.height / 2, }; } chromeHeights() { return [0, 0]; } chromeWidths() { return [0, 0]; } overlapHeights() { return [0, 0]; } get cursorPoint() { return this.child.cursorPoint; } get bufferScale() { return this.child.bufferScale; } get windowContent() { return this.child.windowContent; } addCursorTexture(content, point, scale) { this.child.addCursorTexture(content, point, scale); } getCursorTexture() { return this.child.getCursorTexture(); } setCursorVisible(visible) { this.child.setCursorVisible(visible); } }); const UIWindowSelector = GObject.registerClass( class UIWindowSelector extends St.Widget { _init(monitorIndex, params) { super._init(params); super.layout_manager = new Clutter.BinLayout(); this._monitorIndex = monitorIndex; this._layoutManager = new UIWindowSelectorLayout(monitorIndex); // Window screenshots this._container = new St.Widget({ style_class: 'screenshot-ui-window-selector-window-container', x_expand: true, y_expand: true, }); this._container.layout_manager = this._layoutManager; this.add_child(this._container); } capture() { for (const actor of global.get_window_actors()) { let window = actor.metaWindow; let workspaceManager = global.workspace_manager; let activeWorkspace = workspaceManager.get_active_workspace(); if (window.is_override_redirect() || !window.located_on_workspace(activeWorkspace) || window.get_monitor() !== this._monitorIndex) continue; const widget = new UIWindowSelectorWindow( actor, { style_class: 'screenshot-ui-window-selector-window', reactive: true, can_focus: true, toggle_mode: true, } ); widget.connect('key-focus-in', win => { Main.screenshotUI.grab_key_focus(); win.checked = true; }); if (window.has_focus()) { widget.checked = true; widget.toggle_mode = false; } this._layoutManager.addWindow(widget); } } reset() { this._layoutManager.reset(); } windows() { return this._layoutManager.windows; } }); const UIMode = { SCREENSHOT: 0, SCREENCAST: 1, SCREENSHOT_ONLY: 2, }; const ScreencastPhase = { STARTUP: 'STARTUP', RECORDING: 'RECORDING', }; export const ScreenshotUI = GObject.registerClass({ Properties: { 'screencast-in-progress': GObject.ParamSpec.boolean( 'screencast-in-progress', null, null, GObject.ParamFlags.READABLE, false), }, Signals: { 'screenshot-taken': {param_types: [Gio.File.$gtype]}, 'closed': {}, }, }, class ScreenshotUI extends St.Widget { _init() { super._init({ name: 'screenshot-ui', constraints: new Clutter.BindConstraint({ source: global.stage, coordinate: Clutter.BindCoordinate.ALL, }), layout_manager: new Clutter.BinLayout(), opacity: 0, visible: false, reactive: true, }); this._screencastInProgress = false; this._screencastSupported = false; this._currentMode = UIMode.SCREENSHOT; this._screencastProxy = new ScreencastProxy( Gio.DBus.session, 'org.gnome.Shell.Screencast', '/org/gnome/Shell/Screencast', (object, error) => { if (error !== null) { log('Error connecting to the screencast service'); return; } this._screencastSupported = this._screencastProxy.ScreencastSupported; this._syncCastButton(); }); this._screencastProxy.connectSignal('Error', (proxy, sender, [errorName, message]) => this._screencastFailed(ScreencastPhase.RECORDING, Gio.DBusError.new_for_dbus_error(errorName, message))); this._screencastProxy.connect('notify::g-name-owner', () => { if (this._screencastProxy.g_name_owner) return; if (!this._screencastInProgress) return; // If the recorder crashed while we're starting it in _startScreencast(), // let the catch-block there handle the error. if (this._screencastStarting) return; this._screencastFailed(ScreencastPhase.RECORDING, new GLib.Error(ScreencastErrors, ScreencastError.SERVICE_CRASH, 'Service crashed')); }); this._lockdownSettings = new Gio.Settings({schema_id: 'org.gnome.desktop.lockdown'}); // The full-screen screenshot has a separate container so that we can // show it without the screenshot UI fade-in for a nicer animation. this._stageScreenshotContainer = new St.Widget({visible: false}); this._stageScreenshotContainer.add_constraint(new Clutter.BindConstraint({ source: global.stage, coordinate: Clutter.BindCoordinate.ALL, })); Main.layoutManager.screenshotUIGroup.add_child( this._stageScreenshotContainer); this._screencastAreaIndicator = new UIAreaIndicator({ style_class: 'screenshot-ui-screencast-area-indicator', visible: false, }); this._screencastAreaIndicator.add_constraint(new Clutter.BindConstraint({ source: global.stage, coordinate: Clutter.BindCoordinate.ALL, })); this.bind_property( 'screencast-in-progress', this._screencastAreaIndicator, 'visible', GObject.BindingFlags.DEFAULT); // Add it directly to the stage so that it's above popup menus. global.stage.add_child(this._screencastAreaIndicator); Shell.util_set_hidden_from_pick(this._screencastAreaIndicator, true); Main.layoutManager.screenshotUIGroup.add_child(this); this._stageScreenshot = new St.Widget({style_class: 'screenshot-ui-screen-screenshot'}); this._stageScreenshot.add_constraint(new Clutter.BindConstraint({ source: global.stage, coordinate: Clutter.BindCoordinate.ALL, })); this._stageScreenshotContainer.add_child(this._stageScreenshot); this._cursor = new St.Widget(); this._stageScreenshotContainer.add_child(this._cursor); this._openingCoroutineInProgress = false; this._grabHelper = new GrabHelper.GrabHelper(this, { actionMode: Shell.ActionMode.POPUP, }); this._areaSelector = new UIAreaSelector({ style_class: 'screenshot-ui-area-selector', x_expand: true, y_expand: true, reactive: true, }); this.add_child(this._areaSelector); this._primaryMonitorBin = new St.Widget({layout_manager: new Clutter.BinLayout()}); this._primaryMonitorBin.add_constraint( new Layout.MonitorConstraint({'primary': true})); this.add_child(this._primaryMonitorBin); this._panel = new St.BoxLayout({ style_class: 'screenshot-ui-panel', y_align: Clutter.ActorAlign.END, y_expand: true, vertical: true, offscreen_redirect: Clutter.OffscreenRedirect.AUTOMATIC_FOR_OPACITY, }); this._primaryMonitorBin.add_child(this._panel); this._closeButton = new St.Button({ style_class: 'screenshot-ui-close-button', icon_name: 'preview-close-symbolic', }); this._closeButton.add_constraint(new Clutter.BindConstraint({ source: this._panel, coordinate: Clutter.BindCoordinate.POSITION, })); this._closeButton.add_constraint(new Clutter.AlignConstraint({ source: this._panel, align_axis: Clutter.AlignAxis.Y_AXIS, pivot_point: new Graphene.Point({x: -1, y: 0.5}), factor: 0, })); this._closeButtonXAlignConstraint = new Clutter.AlignConstraint({ source: this._panel, align_axis: Clutter.AlignAxis.X_AXIS, pivot_point: new Graphene.Point({x: 0.5, y: -1}), }); this._closeButton.add_constraint(this._closeButtonXAlignConstraint); this._closeButton.connect('clicked', () => this.close()); this._primaryMonitorBin.add_child(this._closeButton); this._areaSelector.connect('drag-started', () => { this._panel.ease({ opacity: 100, duration: 200, mode: Clutter.AnimationMode.EASE_OUT_QUAD, }); this._closeButton.ease({ opacity: 100, duration: 200, mode: Clutter.AnimationMode.EASE_OUT_QUAD, }); }); this._areaSelector.connect('drag-ended', () => { this._panel.ease({ opacity: 255, duration: 200, mode: Clutter.AnimationMode.EASE_OUT_QUAD, }); this._closeButton.ease({ opacity: 255, duration: 200, mode: Clutter.AnimationMode.EASE_OUT_QUAD, }); }); this._typeButtonContainer = new St.Widget({ style_class: 'screenshot-ui-type-button-container', layout_manager: new Clutter.BoxLayout({ spacing: 12, homogeneous: true, }), }); this._panel.add_child(this._typeButtonContainer); this._selectionButton = new IconLabelButton('screenshot-ui-area-symbolic', _('Selection'), { style_class: 'screenshot-ui-type-button', checked: true, x_expand: true, }); this._selectionButton.connect('notify::checked', this._onSelectionButtonToggled.bind(this)); this._typeButtonContainer.add_child(this._selectionButton); this.add_child(new Tooltip(this._selectionButton, { text: _('Area Selection'), style_class: 'screenshot-ui-tooltip', visible: false, })); this._screenButton = new IconLabelButton('screenshot-ui-display-symbolic', _('Screen'), { style_class: 'screenshot-ui-type-button', toggle_mode: true, x_expand: true, }); this._screenButton.connect('notify::checked', this._onScreenButtonToggled.bind(this)); this._typeButtonContainer.add_child(this._screenButton); this.add_child(new Tooltip(this._screenButton, { text: _('Screen Selection'), style_class: 'screenshot-ui-tooltip', visible: false, })); this._windowButton = new IconLabelButton('screenshot-ui-window-symbolic', _('Window'), { style_class: 'screenshot-ui-type-button', toggle_mode: true, x_expand: true, }); this._windowButton.connect('notify::checked', this._onWindowButtonToggled.bind(this)); this._typeButtonContainer.add_child(this._windowButton); this.add_child(new Tooltip(this._windowButton, { text: _('Window Selection'), style_class: 'screenshot-ui-tooltip', visible: false, })); this._bottomRowContainer = new St.Widget({layout_manager: new Clutter.BinLayout()}); this._panel.add_child(this._bottomRowContainer); this._shotCastContainer = new St.BoxLayout({ style_class: 'screenshot-ui-shot-cast-container', x_align: Clutter.ActorAlign.START, x_expand: true, }); this._bottomRowContainer.add_child(this._shotCastContainer); this._shotButton = new St.Button({ style_class: 'screenshot-ui-shot-cast-button', icon_name: 'camera-photo-symbolic', checked: true, }); this._shotButton.connect('notify::checked', this._onShotButtonToggled.bind(this)); this._shotCastContainer.add_child(this._shotButton); this.add_child(new Tooltip(this._shotButton, { text: _('Take Screenshot'), style_class: 'screenshot-ui-tooltip', visible: false, })); this._castButton = new St.Button({ style_class: 'screenshot-ui-shot-cast-button', icon_name: 'camera-web-symbolic', toggle_mode: true, visible: false, }); this._castButton.connect('notify::checked', this._onCastButtonToggled.bind(this)); this._shotCastContainer.add_child(this._castButton); this.add_child(new Tooltip(this._castButton, { text: _('Record Screen'), style_class: 'screenshot-ui-tooltip', visible: false, })); this._shotButton.bind_property('checked', this._castButton, 'checked', GObject.BindingFlags.BIDIRECTIONAL | GObject.BindingFlags.INVERT_BOOLEAN); this._captureButton = new St.Button({style_class: 'screenshot-ui-capture-button'}); this._captureButton.set_child(new St.Widget({ style_class: 'screenshot-ui-capture-button-circle', x_expand: true, y_expand: true, })); this.add_child(new Tooltip(this._captureButton, { /* Translators: since this string refers to an action, it needs to be phrased as a verb. */ text: _('Capture'), style_class: 'screenshot-ui-tooltip', visible: false, })); this._captureButton.connect('clicked', this._onCaptureButtonClicked.bind(this)); this._bottomRowContainer.add_child(this._captureButton); this._showPointerButtonContainer = new St.BoxLayout({ x_align: Clutter.ActorAlign.END, x_expand: true, }); this._bottomRowContainer.add_child(this._showPointerButtonContainer); this._showPointerButton = new St.Button({ style_class: 'screenshot-ui-show-pointer-button', icon_name: 'screenshot-ui-show-pointer-symbolic', toggle_mode: true, }); this._showPointerButtonContainer.add_child(this._showPointerButton); this.add_child(new Tooltip(this._showPointerButton, { text: _('Show Pointer'), style_class: 'screenshot-ui-tooltip', visible: false, })); this._showPointerButton.connect('notify::checked', () => { const state = this._showPointerButton.checked; this._cursor.visible = state; const windows = this._windowSelectors.flatMap(selector => selector.windows()); for (const window of windows) window.setCursorVisible(state); }); this._cursor.visible = false; this._monitorBins = []; this._windowSelectors = []; this._rebuildMonitorBins(); Main.layoutManager.connect('monitors-changed', () => { // Nope, not dealing with monitor changes. this.close(true); this._rebuildMonitorBins(); }); const uiModes = Shell.ActionMode.ALL & ~Shell.ActionMode.LOGIN_SCREEN; const restrictedModes = uiModes & ~(Shell.ActionMode.LOCK_SCREEN | Shell.ActionMode.UNLOCK_SCREEN); Main.wm.addKeybinding( 'show-screenshot-ui', new Gio.Settings({schema_id: 'org.gnome.shell.keybindings'}), Meta.KeyBindingFlags.IGNORE_AUTOREPEAT, uiModes, showScreenshotUI ); Main.wm.addKeybinding( 'show-screen-recording-ui', new Gio.Settings({schema_id: 'org.gnome.shell.keybindings'}), Meta.KeyBindingFlags.IGNORE_AUTOREPEAT, restrictedModes, showScreenRecordingUI ); Main.wm.addKeybinding( 'screenshot-window', new Gio.Settings({schema_id: 'org.gnome.shell.keybindings'}), Meta.KeyBindingFlags.IGNORE_AUTOREPEAT | Meta.KeyBindingFlags.PER_WINDOW, restrictedModes, async (_display, window, _binding) => { try { const actor = window.get_compositor_private(); const content = actor.paint_to_content(null); const texture = content.get_texture(); await captureScreenshot(texture, null, 1, null); } catch (e) { logError(e, 'Error capturing screenshot'); } } ); Main.wm.addKeybinding( 'screenshot', new Gio.Settings({schema_id: 'org.gnome.shell.keybindings'}), Meta.KeyBindingFlags.IGNORE_AUTOREPEAT, uiModes, async () => { try { const shooter = new Shell.Screenshot(); const [content] = await shooter.screenshot_stage_to_content(); const texture = content.get_texture(); await captureScreenshot(texture, null, 1, null); } catch (e) { logError(e, 'Error capturing screenshot'); } } ); Main.sessionMode.connect('updated', () => this._sessionUpdated()); this._sessionUpdated(); } _sessionUpdated() { this.close(true); } _syncCastButton() { const visible = this._screencastSupported; const reactive = visible && this._currentMode !== UIMode.SCREENSHOT_ONLY && Main.sessionMode.allowScreencast; this._castButton.set({visible, reactive}); } _syncWindowButtonSensitivity() { const windows = this._windowSelectors.flatMap(selector => selector.windows()); this._windowButton.reactive = Main.sessionMode.hasWindows && windows.length > 0 && !this._castButton.checked; } _refreshButtonLayout() { const buttonLayout = Meta.prefs_get_button_layout(); this._closeButton.remove_style_class_name('left'); this._closeButton.remove_style_class_name('right'); if (buttonLayout.left_buttons.includes(Meta.ButtonFunction.CLOSE)) { this._closeButton.add_style_class_name('left'); this._closeButtonXAlignConstraint.factor = 0; } else { this._closeButton.add_style_class_name('right'); this._closeButtonXAlignConstraint.factor = 1; } } _rebuildMonitorBins() { for (const bin of this._monitorBins) bin.destroy(); this._monitorBins = []; this._windowSelectors = []; this._screenSelectors = []; for (let i = 0; i < Main.layoutManager.monitors.length; i++) { const bin = new St.Widget({ layout_manager: new Clutter.BinLayout(), }); bin.add_constraint(new Layout.MonitorConstraint({'index': i})); this.insert_child_below(bin, this._primaryMonitorBin); this._monitorBins.push(bin); const windowSelector = new UIWindowSelector(i, { style_class: 'screenshot-ui-window-selector', x_expand: true, y_expand: true, visible: this._windowButton.checked, }); if (i === Main.layoutManager.primaryIndex) windowSelector.add_style_pseudo_class('primary-monitor'); bin.add_child(windowSelector); this._windowSelectors.push(windowSelector); const screenSelector = new St.Button({ style_class: 'screenshot-ui-screen-selector', x_expand: true, y_expand: true, visible: this._screenButton.checked, reactive: true, can_focus: true, toggle_mode: true, }); screenSelector.connect('key-focus-in', () => { this.grab_key_focus(); screenSelector.checked = true; }); bin.add_child(screenSelector); this._screenSelectors.push(screenSelector); screenSelector.connect('notify::checked', () => { if (!screenSelector.checked) return; screenSelector.toggle_mode = false; for (const otherSelector of this._screenSelectors) { if (screenSelector === otherSelector) continue; otherSelector.toggle_mode = true; otherSelector.checked = false; } }); } if (Main.layoutManager.primaryIndex !== -1) this._screenSelectors[Main.layoutManager.primaryIndex].checked = true; } async open(mode = UIMode.SCREENSHOT) { if (this._openingCoroutineInProgress) return; if (this._screencastInProgress) return; if (mode === UIMode.SCREENCAST && !this._screencastSupported) return; this._currentMode = mode; this._castButton.checked = mode === UIMode.SCREENCAST; this._syncCastButton(); if (!this.visible) { // Screenshot UI is opening from completely closed state // (rather than opening back from in process of closing). for (const selector of this._windowSelectors) selector.capture(); const windows = this._windowSelectors.flatMap(selector => selector.windows()); for (const window of windows) { window.connect('notify::checked', () => { if (!window.checked) return; window.toggle_mode = false; for (const otherWindow of windows) { if (window === otherWindow) continue; otherWindow.toggle_mode = true; otherWindow.checked = false; } }); } this._syncWindowButtonSensitivity(); if (!this._windowButton.reactive) this._selectionButton.checked = true; this._shooter = new Shell.Screenshot(); this._openingCoroutineInProgress = true; try { const [content, scale, cursorContent, cursorPoint, cursorScale] = await this._shooter.screenshot_stage_to_content(); this._stageScreenshot.set_content(content); this._scale = scale; if (cursorContent !== null) { this._cursor.set_content(cursorContent); this._cursor.set_position(cursorPoint.x, cursorPoint.y); let [, w, h] = cursorContent.get_preferred_size(); w *= cursorScale; h *= cursorScale; this._cursor.set_size(w, h); this._cursorScale = cursorScale; for (const window of windows) { window.addCursorTexture(cursorContent, cursorPoint, cursorScale); window.setCursorVisible(this._showPointerButton.checked); } } this._stageScreenshotContainer.show(); } catch (e) { log(`Error capturing screenshot: ${e.message}`); } this._openingCoroutineInProgress = false; } // Get rid of any popup menus. // We already have them captured on the screenshot anyway. // // This needs to happen before the grab below as closing menus will // pop their grabs. Main.layoutManager.emit('system-modal-opened'); const {screenshotUIGroup} = Main.layoutManager; screenshotUIGroup.get_parent().set_child_above_sibling( screenshotUIGroup, null); const grabResult = this._grabHelper.grab({ actor: this, onUngrab: () => this.close(), }); if (!grabResult) { this.close(true); return; } this._refreshButtonLayout(); this.remove_all_transitions(); this.visible = true; this.ease({ opacity: 255, duration: 200, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => { this._stageScreenshotContainer.get_parent().remove_child( this._stageScreenshotContainer); this.insert_child_at_index(this._stageScreenshotContainer, 0); }, }); } _finishClosing() { this.hide(); this._shooter = null; // Switch back to screenshot mode. this._shotButton.checked = true; this._stageScreenshotContainer.get_parent().remove_child( this._stageScreenshotContainer); Main.layoutManager.screenshotUIGroup.insert_child_at_index( this._stageScreenshotContainer, 0); this._stageScreenshotContainer.hide(); this._stageScreenshot.set_content(null); this._cursor.set_content(null); this._areaSelector.reset(); for (const selector of this._windowSelectors) selector.reset(); this.emit('closed'); } close(instantly = false) { this._grabHelper.ungrab(); if (instantly) { this._finishClosing(); return; } this.remove_all_transitions(); this.ease({ opacity: 0, duration: 200, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: this._finishClosing.bind(this), }); } _onSelectionButtonToggled() { if (this._selectionButton.checked) { this._selectionButton.toggle_mode = false; this._windowButton.checked = false; this._screenButton.checked = false; this._areaSelector.show(); this._areaSelector.remove_all_transitions(); this._areaSelector.reactive = true; this._areaSelector.ease({ opacity: 255, duration: 200, mode: Clutter.AnimationMode.EASE_OUT_QUAD, }); } else { this._selectionButton.toggle_mode = true; this._areaSelector.stopDrag(); global.display.set_cursor(Meta.Cursor.DEFAULT); this._areaSelector.remove_all_transitions(); this._areaSelector.reactive = false; this._areaSelector.ease({ opacity: 0, duration: 200, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => this._areaSelector.hide(), }); } } _onScreenButtonToggled() { if (this._screenButton.checked) { this._screenButton.toggle_mode = false; this._selectionButton.checked = false; this._windowButton.checked = false; for (const selector of this._screenSelectors) { selector.show(); selector.remove_all_transitions(); selector.ease({ opacity: 255, duration: 200, mode: Clutter.AnimationMode.EASE_OUT_QUAD, }); } } else { this._screenButton.toggle_mode = true; for (const selector of this._screenSelectors) { selector.remove_all_transitions(); selector.ease({ opacity: 0, duration: 200, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => selector.hide(), }); } } } _onWindowButtonToggled() { if (this._windowButton.checked) { this._windowButton.toggle_mode = false; this._selectionButton.checked = false; this._screenButton.checked = false; for (const selector of this._windowSelectors) { selector.show(); selector.remove_all_transitions(); selector.ease({ opacity: 255, duration: 200, mode: Clutter.AnimationMode.EASE_OUT_QUAD, }); } } else { this._windowButton.toggle_mode = true; for (const selector of this._windowSelectors) { selector.remove_all_transitions(); selector.ease({ opacity: 0, duration: 200, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => selector.hide(), }); } } } _onShotButtonToggled() { if (this._shotButton.checked) { this._shotButton.toggle_mode = false; this._stageScreenshotContainer.show(); this._stageScreenshotContainer.remove_all_transitions(); this._stageScreenshotContainer.ease({ opacity: 255, duration: 200, mode: Clutter.AnimationMode.EASE_OUT_QUAD, }); } else { this._shotButton.toggle_mode = true; } } _onCastButtonToggled() { if (this._castButton.checked) { this._castButton.toggle_mode = false; this._captureButton.add_style_pseudo_class('cast'); this._stageScreenshotContainer.remove_all_transitions(); this._stageScreenshotContainer.ease({ opacity: 0, duration: 200, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => this._stageScreenshotContainer.hide(), }); // Screen recording doesn't support window selection yet. if (this._windowButton.checked) this._selectionButton.checked = true; this._windowButton.reactive = false; } else { this._castButton.toggle_mode = true; this._captureButton.remove_style_pseudo_class('cast'); this._syncWindowButtonSensitivity(); } } _getSelectedGeometry(rescale) { let x, y, w, h; if (this._selectionButton.checked) { [x, y, w, h] = this._areaSelector.getGeometry(); } else if (this._screenButton.checked) { const index = this._screenSelectors.findIndex(screen => screen.checked); const monitor = Main.layoutManager.monitors[index]; x = monitor.x; y = monitor.y; w = monitor.width; h = monitor.height; } if (rescale) { x *= this._scale; y *= this._scale; w *= this._scale; h *= this._scale; } return [x, y, w, h]; } _onCaptureButtonClicked() { if (this._shotButton.checked) { this._saveScreenshot().catch(logError); this.close(); } else { // Screencast closes the UI on its own. this._startScreencast(); } } async _saveScreenshot() { let file = null; if (this._selectionButton.checked || this._screenButton.checked) { const content = this._stageScreenshot.get_content(); if (!content) return; // Failed to capture the screenshot for some reason. const texture = content.get_texture(); const geometry = this._getSelectedGeometry(true); let cursorTexture = this._cursor.content?.get_texture(); if (!this._cursor.visible) cursorTexture = null; try { file = await captureScreenshot( texture, geometry, this._scale, { texture: cursorTexture ?? null, x: this._cursor.x * this._scale, y: this._cursor.y * this._scale, scale: this._cursorScale, } ); } catch (e) { logError(e, 'Error capturing screenshot'); } } else if (this._windowButton.checked) { const window = this._windowSelectors.flatMap(selector => selector.windows()) .find(win => win.checked); if (!window) return; const content = window.windowContent; if (!content) return; const texture = content.get_texture(); let cursorTexture = window.getCursorTexture()?.get_texture(); if (!this._cursor.visible) cursorTexture = null; try { file = await captureScreenshot( texture, null, window.bufferScale, { texture: cursorTexture ?? null, x: window.cursorPoint.x * window.bufferScale, y: window.cursorPoint.y * window.bufferScale, scale: this._cursorScale, } ); } catch (e) { logError(e, 'Error capturing screenshot'); } } if (file) this.emit('screenshot-taken', file); } async _startScreencast(nRetries = 0) { if (this._windowButton.checked) return; // TODO const [x, y, w, h] = this._getSelectedGeometry(false); const drawCursor = this._cursor.visible; // Set up the screencast indicator rect. if (this._selectionButton.checked) { this._screencastAreaIndicator.setSelectionRect( ...this._areaSelector.getGeometry()); } else if (this._screenButton.checked) { const index = this._screenSelectors.findIndex(screen => screen.checked); const monitor = Main.layoutManager.monitors[index]; this._screencastAreaIndicator.setSelectionRect( monitor.x, monitor.y, monitor.width, monitor.height); } // Close instantly so the fade-out doesn't get recorded. this.close(true); // This is a bit awkward because creating a proxy synchronously hangs Shell. let method = this._screencastProxy.ScreencastAsync.bind(this._screencastProxy); if (w !== -1) { method = this._screencastProxy.ScreencastAreaAsync.bind( this._screencastProxy, x, y, w, h); } // Set this before calling the method as the screen recording indicator // will check it before the success callback fires. this._setScreencastInProgress(true); let retry = false; try { this._screencastStarting = true; const [, path] = await method( GLib.build_filenamev([ /* Translators: this is the folder where recorded screencasts are stored. */ _('Screencasts'), /* Translators: this is a filename used for screencast * recording, where "%d" and "%t" date and time, e.g. * "Screencast From 07-17-2013 10:00:46 PM" */ /* xgettext:no-c-format */ _('Screencast From %d %t'), ]), {'draw-cursor': new GLib.Variant('b', drawCursor)}); this._screencastPath = path; } catch (error) { // Recorder service disconnected without reply -> service crash // That should have blocklisted the pipeline that caused the crash, // so try again. if (error.matches(Gio.DBusError, Gio.DBusError.NO_REPLY) && nRetries < 2) retry = true; else this._screencastFailed(ScreencastPhase.STARTUP, error); } delete this._screencastStarting; if (retry) { console.log('Screencast service crashed during startup, trying again'); this._setScreencastInProgress(false); this._startScreencast(nRetries + 1); } } async stopScreencast() { if (!this._screencastInProgress) return; // Set this before calling the method as the screen recording indicator // will check it before the success callback fires. this._setScreencastInProgress(false); try { const [success] = await this._screencastProxy.StopScreencastAsync(); if (!success) throw new Error(); } catch (error) { const {message} = error; if (message) log(`Error stopping screencast: ${message}`); else log('Error stopping screencast'); return; } // Translators: notification title. this._showNotification(_('Screencast recorded')); } _screencastFailed(phase, error) { console.error(`Screencast failed during phase ${phase}: ${error}`); this._setScreencastInProgress(false); switch (phase) { case ScreencastPhase.STARTUP: delete this._screencastPath; // Translators: notification title. this._showNotification(_('Screencast failed to start')); break; case ScreencastPhase.RECORDING: if (error.matches(ScreencastErrors, ScreencastError.OUT_OF_DISK_SPACE)) { // Translators: notification title. this._showNotification(_('Screencast ended: Out of disk space')); } else if (error.matches(ScreencastErrors, ScreencastError.SERVICE_CRASH)) { // We can encourage user to try again on service crashes since the // recorder will auto-blocklist the pipeline that crashed. // Translators: notification title. this._showNotification(_('Screencast ended unexpectedly, please try again')); } else { // Translators: notification title. this._showNotification(_('Screencast ended unexpectedly')); } break; } } _showNotification(title) { const source = new MessageTray.Source({ // Translators: notification source name. title: _('Screenshot'), iconName: 'screencast-recorded-symbolic', }); const notification = new MessageTray.Notification({ source, title, // Translators: notification body when a screencast was recorded. body: this._screencastPath ? _('Click here to view the video.') : '', isTransient: true, }); if (this._screencastPath) { const file = Gio.file_new_for_path(this._screencastPath); // Translators: button on the screencast notification. notification.addAction(_('Show in Files'), () => { const app = Gio.app_info_get_default_for_type('inode/directory', false); if (app === null) { // It may be null e.g. in a toolbox without nautilus. log('Error showing in files: no default app set for inode/directory'); return; } app.launch([file], global.create_app_launch_context(0, -1)); }); notification.connect('activated', () => { try { Gio.app_info_launch_default_for_uri( file.get_uri(), global.create_app_launch_context(0, -1)); } catch (err) { logError(err, 'Error opening screencast'); } }); } Main.messageTray.add(source); source.addNotification(notification); } get screencast_in_progress() { return this._screencastInProgress; } _setScreencastInProgress(inProgress) { if (this._screencastInProgress === inProgress) return; this._screencastInProgress = inProgress; this.notify('screencast-in-progress'); } vfunc_key_press_event(event) { const symbol = event.get_key_symbol(); if (symbol === Clutter.KEY_Return || symbol === Clutter.KEY_space || symbol === Clutter.KEY_KP_Enter || symbol === Clutter.KEY_ISO_Enter || ((event.get_state() & Clutter.ModifierType.CONTROL_MASK) && (symbol === Clutter.KEY_c || symbol === Clutter.KEY_C))) { this._onCaptureButtonClicked(); return Clutter.EVENT_STOP; } if (symbol === Clutter.KEY_s || symbol === Clutter.KEY_S) { this._selectionButton.checked = true; return Clutter.EVENT_STOP; } if (symbol === Clutter.KEY_c || symbol === Clutter.KEY_C) { this._screenButton.checked = true; return Clutter.EVENT_STOP; } if (this._windowButton.reactive && (symbol === Clutter.KEY_w || symbol === Clutter.KEY_W)) { this._windowButton.checked = true; return Clutter.EVENT_STOP; } if (symbol === Clutter.KEY_p || symbol === Clutter.KEY_P) { this._showPointerButton.checked = !this._showPointerButton.checked; return Clutter.EVENT_STOP; } if (this._castButton.reactive && (symbol === Clutter.KEY_v || symbol === Clutter.KEY_V)) { this._castButton.checked = !this._castButton.checked; return Clutter.EVENT_STOP; } if (symbol === Clutter.KEY_Left || symbol === Clutter.KEY_Right || symbol === Clutter.KEY_Up || symbol === Clutter.KEY_Down) { let direction; if (symbol === Clutter.KEY_Left) direction = St.DirectionType.LEFT; else if (symbol === Clutter.KEY_Right) direction = St.DirectionType.RIGHT; else if (symbol === Clutter.KEY_Up) direction = St.DirectionType.UP; else if (symbol === Clutter.KEY_Down) direction = St.DirectionType.DOWN; if (this._windowButton.checked) { const window = this._windowSelectors.flatMap(selector => selector.windows()) .find(win => win.checked) ?? null; this.navigate_focus(window, direction, false); } else if (this._screenButton.checked) { const screen = this._screenSelectors.find(selector => selector.checked) ?? null; this.navigate_focus(screen, direction, false); } return Clutter.EVENT_STOP; } return super.vfunc_key_press_event(event); } }); /** * Stores a PNG-encoded screenshot into the clipboard and a file, and shows a * notification. * * @param {GLib.Bytes} bytes - The PNG-encoded screenshot. * @param {GdkPixbuf.Pixbuf} pixbuf - The Pixbuf with the screenshot. */ function _storeScreenshot(bytes, pixbuf) { // Store to the clipboard first in case storing to file fails. const clipboard = St.Clipboard.get_default(); clipboard.set_content(St.ClipboardType.CLIPBOARD, 'image/png', bytes); const time = GLib.DateTime.new_now_local(); // This will be set in the first save to disk branch and then accessed // in the second save to disk branch, so we need to declare it outside. let file; // The function is declared here rather than inside the condition to // satisfy eslint. /** * Returns a filename suffix with an increasingly large index. * * @returns {Generator} suffix string */ function* suffixes() { yield ''; for (let i = 1; ; i++) yield `-${i}`; } /** * Adds a record of a screenshot file in the recently used files list. * * @param {Gio.File} screenshotFile - The screenshot file. */ function saveRecentFile(screenshotFile) { const recentFile = GLib.build_filenamev([GLib.get_user_data_dir(), 'recently-used.xbel']); const uri = screenshotFile.get_uri(); const bookmarks = new GLib.BookmarkFile(); try { bookmarks.load_from_file(recentFile); } catch (e) { if (!e.matches(GLib.BookmarkFileError, GLib.BookmarkFileError.FILE_NOT_FOUND)) { log(`Could not open recent file ${uri}: ${e.message}`); return; } } try { bookmarks.add_application(uri, GLib.get_prgname(), 'gio open %u'); bookmarks.to_file(recentFile); } catch (e) { log(`Could not save recent file ${uri}: ${e.message}`); } } const lockdownSettings = new Gio.Settings({schema_id: 'org.gnome.desktop.lockdown'}); const disableSaveToDisk = lockdownSettings.get_boolean('disable-save-to-disk'); if (!disableSaveToDisk) { const dir = Gio.File.new_for_path(GLib.build_filenamev([ GLib.get_user_special_dir(GLib.UserDirectory.DIRECTORY_PICTURES) || GLib.get_home_dir(), // Translators: name of the folder under ~/Pictures for screenshots. _('Screenshots'), ])); try { dir.make_directory_with_parents(null); } catch (e) { if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.EXISTS)) throw e; } const timestamp = time.format('%Y-%m-%d %H-%M-%S'); // Translators: this is the name of the file that the screenshot is // saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". const name = _('Screenshot From %s').format(timestamp); // If the target file already exists, try appending a suffix with an // increasing number to it. for (const suffix of suffixes()) { file = Gio.File.new_for_path(GLib.build_filenamev([ dir.get_path(), `${name}${suffix}.png`, ])); try { const stream = file.create(Gio.FileCreateFlags.NONE, null); stream.write_bytes(bytes, null); break; } catch (e) { if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.EXISTS)) throw e; } } // Add it to recent files. saveRecentFile(file); } // Create a St.ImageContent icon for the notification. We want // St.ImageContent specifically because it preserves the aspect ratio when // shown in a notification. const pixels = pixbuf.read_pixel_bytes(); const content = St.ImageContent.new_with_preferred_size(pixbuf.width, pixbuf.height); content.set_bytes( pixels, Cogl.PixelFormat.RGBA_8888, pixbuf.width, pixbuf.height, pixbuf.rowstride ); // Show a notification. const source = new MessageTray.Source({ // Translators: notification source name. title: _('Screenshot'), iconName: 'screenshot-recorded-symbolic', }); const notification = new MessageTray.Notification({ source, // Translators: notification title. title: _('Screenshot captured'), // Translators: notification body when a screenshot was captured. body: _('You can paste the image from the clipboard.'), datetime: time, gicon: content, isTransient: true, }); if (!disableSaveToDisk) { // Translators: button on the screenshot notification. notification.addAction(_('Show in Files'), () => { const app = Gio.app_info_get_default_for_type('inode/directory', false); if (app === null) { // It may be null e.g. in a toolbox without nautilus. log('Error showing in files: no default app set for inode/directory'); return; } app.launch([file], global.create_app_launch_context(0, -1)); }); notification.connect('activated', () => { try { Gio.app_info_launch_default_for_uri( file.get_uri(), global.create_app_launch_context(0, -1)); } catch (err) { logError(err, 'Error opening screenshot'); } }); } Main.messageTray.add(source); source.addNotification(notification); return file; } /** * Captures a screenshot from a texture, given a region, scale and optional * cursor data. * * @param {Cogl.Texture} texture - The texture to take the screenshot from. * @param {number[4]} [geometry] - The region to use: x, y, width and height. * @param {number} scale - The texture scale. * @param {object} [cursor] - Cursor data to include in the screenshot. * @param {Cogl.Texture} cursor.texture - The cursor texture. * @param {number} cursor.x - The cursor x coordinate. * @param {number} cursor.y - The cursor y coordinate. * @param {number} cursor.scale - The cursor texture scale. */ export async function captureScreenshot(texture, geometry, scale, cursor) { const stream = Gio.MemoryOutputStream.new_resizable(); const [x, y, w, h] = geometry ?? [0, 0, -1, -1]; if (cursor === null) cursor = {texture: null, x: 0, y: 0, scale: 1}; global.display.get_sound_player().play_from_theme( 'screen-capture', _('Screenshot taken'), null); const pixbuf = await Shell.Screenshot.composite_to_stream( texture, x, y, w, h, scale, cursor.texture, cursor.x, cursor.y, cursor.scale, stream ); stream.close(null); return _storeScreenshot(stream.steal_as_bytes(), pixbuf); } /** * Shows the screenshot UI. */ export function showScreenshotUI() { Main.screenshotUI.open().catch(err => { logError(err, 'Error opening the screenshot UI'); }); } /** * Shows the screen recording UI. */ export function showScreenRecordingUI() { Main.screenshotUI.open(UIMode.SCREENCAST).catch(err => { logError(err, 'Error opening the screenshot UI'); }); } export class ScreenshotService { constructor() { this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(ScreenshotIface, this); this._dbusImpl.export(Gio.DBus.session, '/org/gnome/Shell/Screenshot'); this._screenShooter = new Map(); this._senderChecker = new DBusSenderChecker([ 'org.gnome.SettingsDaemon.MediaKeys', 'org.freedesktop.impl.portal.desktop.gtk', 'org.freedesktop.impl.portal.desktop.gnome', 'org.gnome.Screenshot', ]); this._lockdownSettings = new Gio.Settings({schema_id: 'org.gnome.desktop.lockdown'}); Gio.DBus.session.own_name('org.gnome.Shell.Screenshot', Gio.BusNameOwnerFlags.REPLACE, null, null); } async _createScreenshot(invocation, needsDisk = true, restrictCallers = true) { let lockedDown = false; if (needsDisk) lockedDown = this._lockdownSettings.get_boolean('disable-save-to-disk'); let sender = invocation.get_sender(); if (this._screenShooter.has(sender)) { invocation.return_error_literal( Gio.IOErrorEnum, Gio.IOErrorEnum.BUSY, 'There is an ongoing operation for this sender'); return null; } else if (lockedDown) { invocation.return_error_literal( Gio.IOErrorEnum, Gio.IOErrorEnum.PERMISSION_DENIED, 'Saving to disk is disabled'); return null; } else if (restrictCallers) { try { await this._senderChecker.checkInvocation(invocation); } catch (e) { invocation.return_gerror(e); return null; } } let shooter = new Shell.Screenshot(); shooter._watchNameId = Gio.bus_watch_name(Gio.BusType.SESSION, sender, 0, null, this._onNameVanished.bind(this)); this._screenShooter.set(sender, shooter); return shooter; } _onNameVanished(connection, name) { this._removeShooterForSender(name); } _removeShooterForSender(sender) { let shooter = this._screenShooter.get(sender); if (!shooter) return; Gio.bus_unwatch_name(shooter._watchNameId); this._screenShooter.delete(sender); } _checkArea(x, y, width, height) { return x >= 0 && y >= 0 && width > 0 && height > 0 && x + width <= global.screen_width && y + height <= global.screen_height; } *_resolveRelativeFilename(filename) { filename = filename.replace(/\.png$/, ''); let path = [ GLib.get_user_special_dir(GLib.UserDirectory.DIRECTORY_PICTURES), GLib.get_home_dir(), ].find(p => p && GLib.file_test(p, GLib.FileTest.EXISTS)); if (!path) return null; yield Gio.File.new_for_path( GLib.build_filenamev([path, `${filename}.png`])); for (let idx = 1; ; idx++) { yield Gio.File.new_for_path( GLib.build_filenamev([path, `${filename}-${idx}.png`])); } } _createStream(filename, invocation) { if (filename === '') return [Gio.MemoryOutputStream.new_resizable(), null]; if (GLib.path_is_absolute(filename)) { try { let file = Gio.File.new_for_path(filename); let stream = file.replace(null, false, Gio.FileCreateFlags.NONE, null); return [stream, file]; } catch (e) { invocation.return_gerror(e); this._removeShooterForSender(invocation.get_sender()); return [null, null]; } } let err; for (let file of this._resolveRelativeFilename(filename)) { try { let stream = file.create(Gio.FileCreateFlags.NONE, null); return [stream, file]; } catch (e) { err = e; if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.EXISTS)) break; } } invocation.return_gerror(err); this._removeShooterForSender(invocation.get_sender()); return [null, null]; } _flashAsync(shooter) { return new Promise((resolve, _reject) => { shooter.connect('screenshot_taken', (s, area) => { const flashspot = new Flashspot(area); flashspot.fire(resolve); global.display.get_sound_player().play_from_theme( 'screen-capture', _('Screenshot taken'), null); }); }); } _onScreenshotComplete(stream, file, invocation) { stream.close(null); let filenameUsed = ''; if (file) { filenameUsed = file.get_path(); } else { let bytes = stream.steal_as_bytes(); let clipboard = St.Clipboard.get_default(); clipboard.set_content(St.ClipboardType.CLIPBOARD, 'image/png', bytes); } let retval = GLib.Variant.new('(bs)', [true, filenameUsed]); invocation.return_value(retval); } _scaleArea(x, y, width, height) { let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor; x *= scaleFactor; y *= scaleFactor; width *= scaleFactor; height *= scaleFactor; return [x, y, width, height]; } _unscaleArea(x, y, width, height) { let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor; x /= scaleFactor; y /= scaleFactor; width /= scaleFactor; height /= scaleFactor; return [x, y, width, height]; } async ScreenshotAreaAsync(params, invocation) { let [x, y, width, height, flash, filename] = params; [x, y, width, height] = this._scaleArea(x, y, width, height); if (!this._checkArea(x, y, width, height)) { invocation.return_error_literal( Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED, 'Invalid params'); return; } let screenshot = await this._createScreenshot(invocation); if (!screenshot) return; let [stream, file] = this._createStream(filename, invocation); if (!stream) return; try { await Promise.all([ flash ? this._flashAsync(screenshot) : null, screenshot.screenshot_area(x, y, width, height, stream), ]); this._onScreenshotComplete(stream, file, invocation); } catch (e) { invocation.return_value(new GLib.Variant('(bs)', [false, ''])); } finally { this._removeShooterForSender(invocation.get_sender()); } } async ScreenshotWindowAsync(params, invocation) { let [includeFrame, includeCursor, flash, filename] = params; let screenshot = await this._createScreenshot(invocation); if (!screenshot) return; let [stream, file] = this._createStream(filename, invocation); if (!stream) return; try { await Promise.all([ flash ? this._flashAsync(screenshot) : null, screenshot.screenshot_window(includeFrame, includeCursor, stream), ]); this._onScreenshotComplete(stream, file, invocation); } catch (e) { invocation.return_value(new GLib.Variant('(bs)', [false, ''])); } finally { this._removeShooterForSender(invocation.get_sender()); } } async ScreenshotAsync(params, invocation) { let [includeCursor, flash, filename] = params; let screenshot = await this._createScreenshot(invocation); if (!screenshot) return; let [stream, file] = this._createStream(filename, invocation); if (!stream) return; try { await Promise.all([ flash ? this._flashAsync(screenshot) : null, screenshot.screenshot(includeCursor, stream), ]); this._onScreenshotComplete(stream, file, invocation); } catch (e) { invocation.return_value(new GLib.Variant('(bs)', [false, ''])); } finally { this._removeShooterForSender(invocation.get_sender()); } } async InteractiveScreenshotAsync(params, invocation) { try { await this._senderChecker.checkInvocation(invocation); } catch (e) { invocation.return_gerror(e); return; } Main.screenshotUI.connectObject( 'screenshot-taken', (ui, file) => { Main.screenshotUI.disconnectObject(invocation); invocation.return_value(new GLib.Variant('(bs)', [true, file.get_uri()])); }, 'closed', () => { Main.screenshotUI.disconnectObject(invocation); invocation.return_value(new GLib.Variant('(bs)', [false, ''])); }, invocation); try { Main.screenshotUI.open(UIMode.SCREENSHOT_ONLY); } catch (e) { Main.screenshotUI.disconnectObject(invocation); invocation.return_value(new GLib.Variant('(bs)', [false, ''])); } } async SelectAreaAsync(params, invocation) { try { await this._senderChecker.checkInvocation(invocation); } catch (e) { invocation.return_gerror(e); return; } let selectArea = new SelectArea(); try { let areaRectangle = await selectArea.selectAsync(); let retRectangle = this._unscaleArea( areaRectangle.x, areaRectangle.y, areaRectangle.width, areaRectangle.height); invocation.return_value(GLib.Variant.new('(iiii)', retRectangle)); } catch (e) { invocation.return_error_literal( Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED, 'Operation was cancelled'); } } async FlashAreaAsync(params, invocation) { try { await this._senderChecker.checkInvocation(invocation); } catch (e) { invocation.return_gerror(e); return; } let [x, y, width, height] = params; [x, y, width, height] = this._scaleArea(x, y, width, height); if (!this._checkArea(x, y, width, height)) { invocation.return_error_literal( Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED, 'Invalid params'); return; } let flashspot = new Flashspot({x, y, width, height}); flashspot.fire(); invocation.return_value(null); } async PickColorAsync(params, invocation) { const screenshot = await this._createScreenshot(invocation, false, false); if (!screenshot) return; const pickPixel = new PickPixel(screenshot); try { const color = await pickPixel.pickAsync(); const {red, green, blue} = color; const retval = GLib.Variant.new('(a{sv})', [{ color: GLib.Variant.new('(ddd)', [ red / 255.0, green / 255.0, blue / 255.0, ]), }]); invocation.return_value(retval); } catch (e) { invocation.return_error_literal( Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED, 'Operation was cancelled'); } finally { this._removeShooterForSender(invocation.get_sender()); } } } export const SelectArea = GObject.registerClass( class SelectArea extends St.Widget { _init() { this._startX = -1; this._startY = -1; this._lastX = 0; this._lastY = 0; this._result = null; super._init({ visible: false, reactive: true, x: 0, y: 0, }); Main.uiGroup.add_child(this); this._grabHelper = new GrabHelper.GrabHelper(this); const constraint = new Clutter.BindConstraint({ source: global.stage, coordinate: Clutter.BindCoordinate.ALL, }); this.add_constraint(constraint); this._rubberband = new St.Widget({ style_class: 'select-area-rubberband', visible: false, }); this.add_child(this._rubberband); } async selectAsync() { global.display.set_cursor(Meta.Cursor.CROSSHAIR); Main.uiGroup.set_child_above_sibling(this, null); this.show(); try { await this._grabHelper.grabAsync({actor: this}); } finally { global.display.set_cursor(Meta.Cursor.DEFAULT); GLib.idle_add(GLib.PRIORITY_DEFAULT, () => { this.destroy(); return GLib.SOURCE_REMOVE; }); } return this._result; } _getGeometry() { return new Mtk.Rectangle({ x: Math.min(this._startX, this._lastX), y: Math.min(this._startY, this._lastY), width: Math.abs(this._startX - this._lastX) + 1, height: Math.abs(this._startY - this._lastY) + 1, }); } vfunc_motion_event(event) { if (this._startX === -1 || this._startY === -1 || this._result) return Clutter.EVENT_PROPAGATE; [this._lastX, this._lastY] = event.get_coords(); this._lastX = Math.floor(this._lastX); this._lastY = Math.floor(this._lastY); let geometry = this._getGeometry(); this._rubberband.set_position(geometry.x, geometry.y); this._rubberband.set_size(geometry.width, geometry.height); this._rubberband.show(); return Clutter.EVENT_PROPAGATE; } vfunc_button_press_event(event) { if (this._result) return Clutter.EVENT_PROPAGATE; [this._startX, this._startY] = event.get_coords(); this._startX = Math.floor(this._startX); this._startY = Math.floor(this._startY); this._rubberband.set_position(this._startX, this._startY); return Clutter.EVENT_PROPAGATE; } vfunc_button_release_event() { if (this._startX === -1 || this._startY === -1 || this._result) return Clutter.EVENT_PROPAGATE; this._result = this._getGeometry(); this.ease({ opacity: 0, duration: 200, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => this._grabHelper.ungrab(), }); return Clutter.EVENT_PROPAGATE; } }); const RecolorEffect = GObject.registerClass({ Properties: { color: GObject.ParamSpec.boxed( 'color', null, null, GObject.ParamFlags.WRITABLE, Cogl.Color.$gtype), chroma: GObject.ParamSpec.boxed( 'chroma', null, null, GObject.ParamFlags.WRITABLE, Cogl.Color.$gtype), threshold: GObject.ParamSpec.float( 'threshold', null, null, GObject.ParamFlags.WRITABLE, 0.0, 1.0, 0.0), smoothing: GObject.ParamSpec.float( 'smoothing', null, null, GObject.ParamFlags.WRITABLE, 0.0, 1.0, 0.0), }, }, class RecolorEffect extends Shell.GLSLEffect { _init(params) { this._color = new Cogl.Color(); this._chroma = new Cogl.Color(); this._threshold = 0; this._smoothing = 0; this._colorLocation = null; this._chromaLocation = null; this._thresholdLocation = null; this._smoothingLocation = null; super._init(params); this._colorLocation = this.get_uniform_location('recolor_color'); this._chromaLocation = this.get_uniform_location('chroma_color'); this._thresholdLocation = this.get_uniform_location('threshold'); this._smoothingLocation = this.get_uniform_location('smoothing'); this._updateColorUniform(this._colorLocation, this._color); this._updateColorUniform(this._chromaLocation, this._chroma); this._updateFloatUniform(this._thresholdLocation, this._threshold); this._updateFloatUniform(this._smoothingLocation, this._smoothing); } _updateColorUniform(location, color) { if (!location) return; this.set_uniform_float(location, 3, [color.red / 255, color.green / 255, color.blue / 255]); this.queue_repaint(); } _updateFloatUniform(location, value) { if (!location) return; this.set_uniform_float(location, 1, [value]); this.queue_repaint(); } set color(c) { if (this._color.equal(c)) return; this._color = c; this.notify('color'); this._updateColorUniform(this._colorLocation, this._color); } set chroma(c) { if (this._chroma.equal(c)) return; this._chroma = c; this.notify('chroma'); this._updateColorUniform(this._chromaLocation, this._chroma); } set threshold(value) { if (this._threshold === value) return; this._threshold = value; this.notify('threshold'); this._updateFloatUniform(this._thresholdLocation, this._threshold); } set smoothing(value) { if (this._smoothing === value) return; this._smoothing = value; this.notify('smoothing'); this._updateFloatUniform(this._smoothingLocation, this._smoothing); } vfunc_build_pipeline() { // Conversion parameters from https://en.wikipedia.org/wiki/YCbCr const decl = ` vec3 rgb2yCrCb(vec3 c) { \n float y = 0.299 * c.r + 0.587 * c.g + 0.114 * c.b; \n float cr = 0.7133 * (c.r - y); \n float cb = 0.5643 * (c.b - y); \n return vec3(y, cr, cb); \n } \n \n uniform vec3 chroma_color; \n uniform vec3 recolor_color; \n uniform float threshold; \n uniform float smoothing; \n`; const src = ` vec3 mask = rgb2yCrCb(chroma_color.rgb); \n vec3 yCrCb = rgb2yCrCb(cogl_color_out.rgb); \n float blend = \n smoothstep(threshold, \n threshold + smoothing, \n distance(yCrCb.gb, mask.gb)); \n cogl_color_out.rgb = \n mix(recolor_color, cogl_color_out.rgb, blend); \n`; this.add_glsl_snippet(Shell.SnippetHook.FRAGMENT, decl, src, false); } }); export const PickPixel = GObject.registerClass( class PickPixel extends St.Widget { _init(screenshot) { super._init({visible: false, reactive: true}); this._screenshot = screenshot; this._result = null; this._color = null; this._inPick = false; Main.uiGroup.add_child(this); this._grabHelper = new GrabHelper.GrabHelper(this); const constraint = new Clutter.BindConstraint({ source: global.stage, coordinate: Clutter.BindCoordinate.ALL, }); this.add_constraint(constraint); const action = new Clutter.ClickAction(); action.connect('clicked', async () => { await this._pickColor(...action.get_coords()); this._result = this._color; this._grabHelper.ungrab(); }); this.add_action(action); this._recolorEffect = new RecolorEffect({ chroma: new Cogl.Color({ red: 80, green: 219, blue: 181, }), threshold: 0.04, smoothing: 0.07, }); this._previewCursor = new St.Icon({ icon_name: 'color-pick', icon_size: Meta.prefs_get_cursor_size(), effect: this._recolorEffect, visible: false, }); Main.uiGroup.add_child(this._previewCursor); } async pickAsync() { global.display.set_cursor(Meta.Cursor.BLANK); Main.uiGroup.set_child_above_sibling(this, null); this.show(); this._pickColor(...global.get_pointer()); try { await this._grabHelper.grabAsync({actor: this}); } finally { global.display.set_cursor(Meta.Cursor.DEFAULT); this._previewCursor.destroy(); GLib.idle_add(GLib.PRIORITY_DEFAULT, () => { this.destroy(); return GLib.SOURCE_REMOVE; }); } return this._result; } async _pickColor(x, y) { if (this._inPick) return; this._inPick = true; this._previewCursor.set_position(x, y); [this._color] = await this._screenshot.pick_color(x, y); this._inPick = false; if (!this._color) return; this._recolorEffect.color = this._color; this._previewCursor.show(); } vfunc_motion_event(event) { const [x, y] = event.get_coords(); this._pickColor(x, y); return Clutter.EVENT_PROPAGATE; } }); const FLASHSPOT_ANIMATION_OUT_TIME = 500; // milliseconds export const Flashspot = GObject.registerClass( class Flashspot extends Lightbox.Lightbox { _init(area) { super._init(Main.uiGroup, { inhibitEvents: true, width: area.width, height: area.height, }); this.style_class = 'flashspot'; this.set_position(area.x, area.y); } fire(doneCallback) { this.set({visible: true, opacity: 255}); this.ease({ opacity: 0, duration: FLASHSPOT_ANIMATION_OUT_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => { if (doneCallback) doneCallback(); this.destroy(); }, }); } }); 070701000001DC000081A40000000000000000000000016712993F000030D4000000000000000000000000000000000000002400000000gnome-shell-47.1/js/ui/scripting.jsimport Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import Meta from 'gi://Meta'; import Shell from 'gi://Shell'; import * as Config from '../misc/config.js'; import * as Main from './main.js'; import * as Params from '../misc/params.js'; import * as Util from '../misc/util.js'; import {loadInterfaceXML} from '../misc/fileUtils.js'; // This module provides functionality for driving the shell user interface // in an automated fashion. The primary current use case for this is // automated performance testing (see runPerfScript()), but it could // be applied to other forms of automation, such as testing for // correctness as well. // // When scripting an automated test we want to make a series of calls // in a linear fashion, but we also want to be able to let the main // loop run so actions can finish. For this reason we write the script // as an async function that uses await when it wants to let the main // loop run. // // await Scripting.sleep(1000); // main.overview.show(); // await Scripting.waitLeisure(); // /** * Used within an automation script to pause the the execution of the * current script for the specified amount of time. Use as * 'yield Scripting.sleep(500);' * * @param {number} milliseconds - number of milliseconds to wait * @returns {Promise} that resolves after @milliseconds ms */ export function sleep(milliseconds) { return new Promise(resolve => { let id = GLib.timeout_add(GLib.PRIORITY_DEFAULT, milliseconds, () => { resolve(); return GLib.SOURCE_REMOVE; }); GLib.Source.set_name_by_id(id, '[gnome-shell] sleep'); }); } /** * Used within an automation script to pause the the execution of the * current script until the shell is completely idle. Use as * 'yield Scripting.waitLeisure();' * * @returns {Promise} that resolves when the shell is idle */ export function waitLeisure() { return new Promise(resolve => { global.run_at_leisure(resolve); }); } const PerfHelperIface = loadInterfaceXML('org.gnome.Shell.PerfHelper'); export const PerfHelperProxy = Gio.DBusProxy.makeProxyWrapper(PerfHelperIface); let _perfHelper = null; /** * @returns {PerfHelper} */ export async function _getPerfHelper() { if (_perfHelper == null) { _perfHelper = await PerfHelperProxy.newAsync( Gio.DBus.session, 'org.gnome.Shell.PerfHelper', '/org/gnome/Shell/PerfHelper'); _perfHelper._autoExit = true; } return _perfHelper; } /** @private */ export function _spawnPerfHelper() { let path = GLib.getenv('GNOME_SHELL_BUILDDIR') || Config.LIBEXECDIR; let command = `${path}/gnome-shell-perf-helper`; Util.trySpawnCommandLine(command); } /** * createTestWindow: * * @param {object} params options for window creation. * @param {number} [params.width=640] - width of window, in pixels * @param {number} [params.height=480] - height of window, in pixels * @param {boolean} [params.alpha=false] - whether the window should have an alpha channel * @param {boolean} [params.maximized=false] - whether the window should be created maximized * @param {boolean} [params.redraws=false] - whether the window should continually redraw itself * @returns {Promise} * * Creates a window using gnome-shell-perf-helper for testing purposes. * While this function can be used with yield in an automation * script to pause until the D-Bus call to the helper process returns, * because of the normal X asynchronous mapping process, to actually wait * until the window has been mapped and exposed, use waitTestWindows(). */ export async function createTestWindow(params) { params = Params.parse(params, { width: 640, height: 480, alpha: false, maximized: false, redraws: false, textInput: false, }); let perfHelper = await _getPerfHelper(); perfHelper.CreateWindowAsync( params.width, params.height, params.alpha, params.maximized, params.redraws, params.textInput).catch(logError); } /** * waitTestWindows: * * @returns {Promise} * * Used within an automation script to pause until all windows previously * created with createTestWindow have been mapped and exposed. */ export async function waitTestWindows() { let perfHelper = await _getPerfHelper(); return perfHelper.WaitWindowsAsync().catch(logError); } /** * destroyTestWindows: * * @returns {Promise} * * Destroys all windows previously created with createTestWindow(). * While this function can be used with yield in an automation * script to pause until the D-Bus call to the helper process returns, * this doesn't guarantee that Mutter has actually finished the destroy * process because of normal X asynchronicity. */ export async function destroyTestWindows() { let perfHelper = await _getPerfHelper(); return perfHelper.DestroyWindowsAsync().catch(logError); } /** * disableHelperAutoExit: * * Don't exixt the perf helper after running the script. Instead it will remain * running until something else makes it exit, e.g. the Wayland socket closing. */ export async function disableHelperAutoExit() { let perfHelper = await _getPerfHelper(); perfHelper._autoExit = false; } /** * defineScriptEvent: * * @param {string} name The event will be called script. * @param {string} description Short human-readable description of the event * * Convenience function to define a zero-argument performance event * within the 'script' namespace that is reserved for events defined locally * within a performance automation script */ export function defineScriptEvent(name, description) { Shell.PerfLog.get_default().define_event( `script.${name}`, description, ''); } /** * scriptEvent * * @param {string} name Name registered with defineScriptEvent() * * Convenience function to record a script-local performance event * previously defined with defineScriptEvent */ export function scriptEvent(name) { Shell.PerfLog.get_default().event(`script.${name}`); } /** * collectStatistics * * Convenience function to trigger statistics collection */ export function collectStatistics() { Shell.PerfLog.get_default().collect_statistics(); } function _collect(scriptModule, outputFile) { let eventHandlers = {}; for (let f in scriptModule) { let m = /([A-Za-z]+)_([A-Za-z]+)/.exec(f); if (m) eventHandlers[`${m[1]}.${m[2]}`] = scriptModule[f]; } Shell.PerfLog.get_default().replay( (time, eventName, signature, arg) => { if (eventName in eventHandlers) eventHandlers[eventName](time, arg); }); if ('finish' in scriptModule) scriptModule.finish(); if (outputFile) { let f = Gio.file_new_for_path(outputFile); let raw = f.replace(null, false, Gio.FileCreateFlags.NONE, null); let out = Gio.BufferedOutputStream.new_sized(raw, 4096); Shell.write_string_to_stream(out, '{\n'); Shell.write_string_to_stream(out, '"events":\n'); Shell.PerfLog.get_default().dump_events(out); let monitors = Main.layoutManager.monitors; let primary = Main.layoutManager.primaryIndex; Shell.write_string_to_stream(out, ',\n"monitors":\n['); for (let i = 0; i < monitors.length; i++) { let monitor = monitors[i]; if (i !== 0) Shell.write_string_to_stream(out, ', '); const prefix = i === primary ? '*' : ''; Shell.write_string_to_stream(out, `"${prefix}${monitor.width}x${monitor.height}+${monitor.x}+${monitor.y}"`); } Shell.write_string_to_stream(out, ' ]'); Shell.write_string_to_stream(out, ',\n"metrics":\n[ '); let first = true; for (let name in scriptModule.METRICS) { let metric = scriptModule.METRICS[name]; // Extra checks here because JSON.stringify generates // invalid JSON for undefined values if (metric.description == null) { log(`Error: No description found for metric ${name}`); continue; } if (metric.units == null) { log(`Error: No units found for metric ${name}`); continue; } if (metric.value == null) { log(`Error: No value found for metric ${name}`); continue; } if (!first) Shell.write_string_to_stream(out, ',\n '); first = false; Shell.write_string_to_stream(out, `{ "name": ${JSON.stringify(name)},\n` + ` "description": ${JSON.stringify(metric.description)},\n` + ` "units": ${JSON.stringify(metric.units)},\n` + ` "value": ${JSON.stringify(metric.value)} }`); } Shell.write_string_to_stream(out, ' ]'); Shell.write_string_to_stream(out, ',\n"log":\n'); Shell.PerfLog.get_default().dump_log(out); Shell.write_string_to_stream(out, '\n}\n'); out.close(null); } else { let metrics = []; for (let metric in scriptModule.METRICS) metrics.push(metric); metrics.sort(); print('------------------------------------------------------------'); for (let i = 0; i < metrics.length; i++) { let metric = metrics[i]; print(`# ${scriptModule.METRICS[metric].description}`); print(`${metric}: ${scriptModule.METRICS[metric].value}${scriptModule.METRICS[metric].units}`); } print('------------------------------------------------------------'); } } async function _runPerfScript(scriptModule, outputFile) { try { await scriptModule.run(); } catch (err) { logError(err, 'Script failed'); Meta.exit(Meta.ExitCode.ERROR); } try { _collect(scriptModule, outputFile); } catch (err) { logError(err, 'Script failed'); Meta.exit(Meta.ExitCode.ERROR); } try { const perfHelper = await _getPerfHelper(); if (perfHelper._autoExit) perfHelper.ExitSync(); } catch (err) { logError(err, 'Failed to exit helper'); Meta.exit(Meta.ExitCode.ERROR); } global.context.terminate(); } /** * runPerfScript * * Runs a script for automated collection of performance data. The * script is defined as a Javascript module with specified contents. * * First the run() function within the module will be called as a * generator to automate a series of actions. These actions will * trigger performance events and the script can also record its * own performance events. * * Then the recorded event log is replayed using handler functions * within the module. The handler for the event 'foo.bar' is called * foo_bar(). * * Finally if the module has a function called finish(), that will * be called. * * The event handler and finish functions are expected to fill in * metrics to an object within the module called METRICS. Each * property of this object represents an individual metric. The * name of the property is the name of the metric, the value * of the property is an object with the following properties: * * description: human readable description of the metric * units: a string representing the units of the metric. It has * the form ' ... / / ...'. Certain * unit values are recognized: s, ms, us, B, KiB, MiB. Other * values can appear but are uninterpreted. Examples 's', * '/ s', 'frames', 'frames / s', 'MiB / s / frame' * value: computed value of the metric * * The resulting metrics will be written to `outputFile` as JSON, or, * if `outputFile` is not provided, logged. * * After running the script and collecting statistics from the * event log, GNOME Shell will exit. * * @param {object} scriptModule module object with run and finish * functions and event handlers * @param {string} outputFile path to write output to */ export function runPerfScript(scriptModule, outputFile) { Shell.PerfLog.get_default().set_enabled(true); _spawnPerfHelper(); Gio.bus_watch_name(Gio.BusType.SESSION, 'org.gnome.Shell.PerfHelper', Gio.BusNameWatcherFlags.NONE, () => _runPerfScript(scriptModule, outputFile), null); } 070701000001DD000081A40000000000000000000000016712993F00006FC9000000000000000000000000000000000000002100000000gnome-shell-47.1/js/ui/search.jsimport Clutter from 'gi://Clutter'; import Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import Meta from 'gi://Meta'; import Shell from 'gi://Shell'; import St from 'gi://St'; import * as AppDisplay from './appDisplay.js'; import * as IconGrid from './iconGrid.js'; import * as Main from './main.js'; import * as ParentalControlsManager from '../misc/parentalControlsManager.js'; import * as RemoteSearch from './remoteSearch.js'; import {ensureActorVisibleInScrollView} from '../misc/animationUtils.js'; import {Highlighter} from '../misc/util.js'; const SEARCH_PROVIDERS_SCHEMA = 'org.gnome.desktop.search-providers'; const MAX_LIST_SEARCH_RESULTS_ROWS = 5; const MaxWidthBox = GObject.registerClass( class MaxWidthBox extends St.BoxLayout { vfunc_allocate(box) { let themeNode = this.get_theme_node(); let maxWidth = themeNode.get_max_width(); let availWidth = box.x2 - box.x1; let adjustedBox = box; if (availWidth > maxWidth) { let excessWidth = availWidth - maxWidth; adjustedBox.x1 += Math.floor(excessWidth / 2); adjustedBox.x2 -= Math.floor(excessWidth / 2); } super.vfunc_allocate(adjustedBox); } }); export const SearchResult = GObject.registerClass( class SearchResult extends St.Button { _init(provider, metaInfo, resultsView) { this.provider = provider; this.metaInfo = metaInfo; this._resultsView = resultsView; super._init({ reactive: true, can_focus: true, track_hover: true, }); } vfunc_clicked() { this.activate(); } activate() { this.provider.activateResult(this.metaInfo.id, this._resultsView.terms); if (this.metaInfo.clipboardText) { St.Clipboard.get_default().set_text( St.ClipboardType.CLIPBOARD, this.metaInfo.clipboardText); } Main.overview.toggle(); } }); export const ListSearchResult = GObject.registerClass( class ListSearchResult extends SearchResult { _init(provider, metaInfo, resultsView) { super._init(provider, metaInfo, resultsView); this.style_class = 'list-search-result'; let content = new St.BoxLayout({ style_class: 'list-search-result-content', vertical: false, x_align: Clutter.ActorAlign.START, x_expand: true, y_expand: true, }); this.set_child(content); let titleBox = new St.BoxLayout({ style_class: 'list-search-result-title', y_align: Clutter.ActorAlign.CENTER, }); content.add_child(titleBox); // An icon for, or thumbnail of, content let icon = this.metaInfo['createIcon'](this.ICON_SIZE); if (icon) titleBox.add_child(icon); let title = new St.Label({ text: this.metaInfo['name'], y_align: Clutter.ActorAlign.CENTER, }); titleBox.add_child(title); this.label_actor = title; if (this.metaInfo['description']) { this._descriptionLabel = new St.Label({ style_class: 'list-search-result-description', y_align: Clutter.ActorAlign.CENTER, }); content.add_child(this._descriptionLabel); this._resultsView.connectObject( 'terms-changed', this._highlightTerms.bind(this), this); this._highlightTerms(); } } get ICON_SIZE() { return 24; } _highlightTerms() { let markup = this._resultsView.highlightTerms(this.metaInfo['description'].split('\n')[0]); this._descriptionLabel.clutter_text.set_markup(markup); } }); export const GridSearchResult = GObject.registerClass( class GridSearchResult extends SearchResult { _init(provider, metaInfo, resultsView) { super._init(provider, metaInfo, resultsView); this.style_class = 'grid-search-result'; this.icon = new IconGrid.BaseIcon(this.metaInfo['name'], { createIcon: this.metaInfo['createIcon'], }); let content = new St.Bin({ child: this.icon, x_align: Clutter.ActorAlign.START, x_expand: true, y_expand: true, }); this.set_child(content); this.label_actor = this.icon.label; } }); const SearchResultsBase = GObject.registerClass({ GTypeFlags: GObject.TypeFlags.ABSTRACT, Properties: { 'focus-child': GObject.ParamSpec.object( 'focus-child', null, null, GObject.ParamFlags.READABLE, Clutter.Actor.$gtype), }, }, class SearchResultsBase extends St.BoxLayout { _init(provider, resultsView) { super._init({style_class: 'search-section', vertical: true}); this.provider = provider; this._resultsView = resultsView; this._terms = []; this._focusChild = null; this._resultDisplayBin = new St.Bin(); this.add_child(this._resultDisplayBin); let separator = new St.Widget({style_class: 'search-section-separator'}); this.add_child(separator); this._resultDisplays = {}; this._cancellable = new Gio.Cancellable(); this.connect('destroy', this._onDestroy.bind(this)); } _onDestroy() { this._terms = []; } _createResultDisplay(meta) { if (this.provider.createResultObject) return this.provider.createResultObject(meta); return null; } clear() { this._cancellable.cancel(); for (let resultId in this._resultDisplays) this._resultDisplays[resultId].destroy(); this._resultDisplays = {}; this._clearResultDisplay(); this.hide(); } get focusChild() { return this._focusChild; } _keyFocusIn(actor) { if (this._focusChild === actor) return; this._focusChild = actor; this.notify('focus-child'); } _setMoreCount(_count) { } async _ensureResultActors(results) { let metasNeeded = results.filter( resultId => this._resultDisplays[resultId] === undefined); if (metasNeeded.length === 0) return; this._cancellable.cancel(); this._cancellable.reset(); const metas = await this.provider.getResultMetas(metasNeeded, this._cancellable); if (this._cancellable.is_cancelled()) { if (metas.length > 0) throw new Error(`Search provider ${this.provider.id} returned results after the request was canceled`); } if (metas.length !== metasNeeded.length) { throw new Error(`Wrong number of result metas returned by search provider ${this.provider.id}: ` + `expected ${metasNeeded.length} but got ${metas.length}`); } if (metas.some(meta => !meta.name || !meta.id)) throw new Error(`Invalid result meta returned from search provider ${this.provider.id}`); metasNeeded.forEach((resultId, i) => { let meta = metas[i]; let display = this._createResultDisplay(meta); display.connect('key-focus-in', this._keyFocusIn.bind(this)); this._resultDisplays[resultId] = display; }); } async updateSearch(providerResults, terms, callback) { this._terms = terms; if (providerResults.length === 0) { this._clearResultDisplay(); this.hide(); callback(); } else { let maxResults = this._getMaxDisplayedResults(); let results = maxResults > -1 ? this.provider.filterResults(providerResults, maxResults) : providerResults; let moreCount = Math.max(providerResults.length - results.length, 0); try { await this._ensureResultActors(results); // To avoid CSS transitions causing flickering when // the first search result stays the same, we hide the // content while filling in the results. this.hide(); this._clearResultDisplay(); results.forEach( resultId => this._addItem(this._resultDisplays[resultId])); this._setMoreCount(this.provider.canLaunchSearch ? moreCount : 0); this.show(); callback(); } catch (e) { this._clearResultDisplay(); callback(); } } } }); export const ListSearchResults = GObject.registerClass( class ListSearchResults extends SearchResultsBase { _init(provider, resultsView) { super._init(provider, resultsView); this._container = new St.BoxLayout({ style_class: 'search-section-content', x_expand: true, }); this.providerInfo = new ProviderInfo(provider); this.providerInfo.connect('key-focus-in', this._keyFocusIn.bind(this)); this.providerInfo.connect('clicked', () => { this.providerInfo.animateLaunch(); provider.launchSearch(this._terms); Main.overview.toggle(); }); this._container.add_child(this.providerInfo); this._content = new St.BoxLayout({ style_class: 'list-search-results', vertical: true, x_expand: true, }); this._container.add_child(this._content); this._resultDisplayBin.child = this._container; } _setMoreCount(count) { this.providerInfo.setMoreCount(count); } _getMaxDisplayedResults() { return MAX_LIST_SEARCH_RESULTS_ROWS; } _clearResultDisplay() { this._content.remove_all_children(); } _createResultDisplay(meta) { return super._createResultDisplay(meta) || new ListSearchResult(this.provider, meta, this._resultsView); } _addItem(display) { this._content.add_child(display); } getFirstResult() { if (this._content.get_n_children() > 0) return this._content.get_child_at_index(0); else return null; } }); const GridSearchResultsLayout = GObject.registerClass({ Properties: { 'spacing': GObject.ParamSpec.int('spacing', null, null, GObject.ParamFlags.READWRITE, 0, GLib.MAXINT32, 0), }, }, class GridSearchResultsLayout extends Clutter.LayoutManager { _init() { super._init(); this._spacing = 0; } vfunc_set_container(container) { this._container = container; } vfunc_get_preferred_width(container, forHeight) { let minWidth = 0; let natWidth = 0; let first = true; for (let child of container) { if (!child.visible) continue; const [childMinWidth, childNatWidth] = child.get_preferred_width(forHeight); minWidth = Math.max(minWidth, childMinWidth); natWidth += childNatWidth; if (first) first = false; else natWidth += this._spacing; } return [minWidth, natWidth]; } vfunc_get_preferred_height(container, forWidth) { let minHeight = 0; let natHeight = 0; for (let child of container) { if (!child.visible) continue; const [childMinHeight, childNatHeight] = child.get_preferred_height(forWidth); minHeight = Math.max(minHeight, childMinHeight); natHeight = Math.max(natHeight, childNatHeight); } return [minHeight, natHeight]; } vfunc_allocate(container, box) { const width = box.get_width(); const childBox = new Clutter.ActorBox(); childBox.x1 = 0; childBox.y1 = 0; let first = true; for (let child of container) { if (!child.visible) continue; if (first) first = false; else childBox.x1 += this._spacing; const [childWidth] = child.get_preferred_width(-1); const [childHeight] = child.get_preferred_height(-1); if (childBox.x1 + childWidth <= width) childBox.set_size(childWidth, childHeight); else childBox.set_size(0, 0); child.allocate(childBox); child.can_focus = childBox.get_area() > 0; childBox.x1 += childWidth; } } columnsForWidth(width) { if (!this._container) return -1; const [minWidth] = this.get_preferred_width(this._container, -1); if (minWidth === 0) return -1; let nCols = 0; while (width > minWidth) { width -= minWidth; if (nCols > 0) width -= this._spacing; nCols++; } return nCols; } get spacing() { return this._spacing; } set spacing(v) { if (this._spacing === v) return; this._spacing = v; this.layout_changed(); } }); export const GridSearchResults = GObject.registerClass( class GridSearchResults extends SearchResultsBase { _init(provider, resultsView) { super._init(provider, resultsView); this._grid = new St.Widget({style_class: 'grid-search-results'}); this._grid.layout_manager = new GridSearchResultsLayout(); this._grid.connect('style-changed', () => { const node = this._grid.get_theme_node(); this._grid.layout_manager.spacing = node.get_length('spacing'); }); this._resultDisplayBin.child = new St.Bin({ child: this._grid, x_align: Clutter.ActorAlign.CENTER, }); this._maxResults = provider.maxResults ?? -1; } _onDestroy() { if (this._updateSearchLater) { const laters = global.compositor.get_laters(); laters.remove(this._updateSearchLater); delete this._updateSearchLater; } super._onDestroy(); } updateSearch(...args) { if (this._notifyAllocationId) this.disconnect(this._notifyAllocationId); if (this._updateSearchLater) { const laters = global.compositor.get_laters(); laters.remove(this._updateSearchLater); delete this._updateSearchLater; } // Make sure the maximum number of results calculated by // _getMaxDisplayedResults() is updated after width changes. this._notifyAllocationId = this.connect('notify::allocation', () => { if (this._updateSearchLater) return; const laters = global.compositor.get_laters(); this._updateSearchLater = laters.add(Meta.LaterType.BEFORE_REDRAW, () => { delete this._updateSearchLater; super.updateSearch(...args); return GLib.SOURCE_REMOVE; }); }); super.updateSearch(...args); } _getMaxDisplayedResults() { const width = this.allocation.get_width(); if (width === 0) return this._maxResults; const nCols = this._grid.layout_manager.columnsForWidth(width); if (nCols < 0) return this._maxResults; if (this._maxResults < 0) return nCols; return Math.min(nCols, this._maxResults); } _clearResultDisplay() { this._grid.remove_all_children(); } _createResultDisplay(meta) { return super._createResultDisplay(meta) || new GridSearchResult(this.provider, meta, this._resultsView); } _addItem(display) { this._grid.add_child(display); } getFirstResult() { for (let child of this._grid) { if (child.visible) return child; } return null; } }); export const SearchResultsView = GObject.registerClass({ Signals: {'terms-changed': {}}, }, class SearchResultsView extends St.BoxLayout { _init() { super._init({ name: 'searchResults', vertical: true, x_expand: true, y_expand: true, }); this._parentalControlsManager = ParentalControlsManager.getDefault(); this._parentalControlsManager.connect('app-filter-changed', this._reloadRemoteProviders.bind(this)); this._content = new MaxWidthBox({ name: 'searchResultsContent', vertical: true, x_expand: true, }); this._scrollView = new St.ScrollView({ overlay_scrollbars: true, style_class: 'search-display vfade', x_expand: true, y_expand: true, child: this._content, }); let action = new Clutter.PanAction({interpolate: true}); action.connect('pan', this._onPan.bind(this)); this._scrollView.add_action(action); this.add_child(this._scrollView); this._statusText = new St.Label({ style_class: 'search-statustext', x_align: Clutter.ActorAlign.CENTER, y_align: Clutter.ActorAlign.CENTER, }); this._statusBin = new St.Bin({ y_expand: true, child: this._statusText, }); this.add_child(this._statusBin); this._highlightDefault = false; this._defaultResult = null; this._startingSearch = false; this._terms = []; this._results = {}; this._providers = []; this._highlighter = new Highlighter(); this._searchSettings = new Gio.Settings({schema_id: SEARCH_PROVIDERS_SCHEMA}); this._searchSettings.connect('changed::disabled', this._reloadRemoteProviders.bind(this)); this._searchSettings.connect('changed::enabled', this._reloadRemoteProviders.bind(this)); this._searchSettings.connect('changed::disable-external', this._reloadRemoteProviders.bind(this)); this._searchSettings.connect('changed::sort-order', this._reloadRemoteProviders.bind(this)); this._searchTimeoutId = 0; this._cancellable = new Gio.Cancellable(); this._registerProvider(new AppDisplay.AppSearchProvider()); let appSystem = Shell.AppSystem.get_default(); appSystem.connect('installed-changed', this._reloadRemoteProviders.bind(this)); this._reloadRemoteProviders(); } get terms() { return this._terms; } _reloadRemoteProviders() { let remoteProviders = this._providers.filter(p => p.isRemoteProvider); remoteProviders.forEach(provider => { this._unregisterProvider(provider); }); const providers = RemoteSearch.loadRemoteSearchProviders(this._searchSettings); providers.forEach(this._registerProvider.bind(this)); } _registerProvider(provider) { provider.searchInProgress = false; // Filter out unwanted providers. if (provider.appInfo && !this._parentalControlsManager.shouldShowApp(provider.appInfo)) return; this._providers.push(provider); this._ensureProviderDisplay(provider); } _unregisterProvider(provider) { let index = this._providers.indexOf(provider); this._providers.splice(index, 1); if (provider.display) provider.display.destroy(); } _clearSearchTimeout() { if (this._searchTimeoutId > 0) { GLib.source_remove(this._searchTimeoutId); this._searchTimeoutId = 0; } } _reset() { this._terms = []; this._results = {}; this._clearDisplay(); this._clearSearchTimeout(); this._defaultResult = null; this._startingSearch = false; this._updateSearchProgress(); } async _doProviderSearch(provider, previousResults) { provider.searchInProgress = true; let results; if (this._isSubSearch && previousResults) { results = await provider.getSubsearchResultSet( previousResults, this._terms, this._cancellable); } else { results = await provider.getInitialResultSet( this._terms, this._cancellable); } this._results[provider.id] = results; this._updateResults(provider, results); } _doSearch() { this._startingSearch = false; let previousResults = this._results; this._results = {}; this._providers.forEach(provider => { let previousProviderResults = previousResults[provider.id]; this._doProviderSearch(provider, previousProviderResults); }); this._updateSearchProgress(); this._clearSearchTimeout(); } _onSearchTimeout() { this._searchTimeoutId = 0; this._doSearch(); return GLib.SOURCE_REMOVE; } setTerms(terms) { // Check for the case of making a duplicate previous search before // setting state of the current search or cancelling the search. // This will prevent incorrect state being as a result of a duplicate // search while the previous search is still active. let searchString = terms.join(' '); let previousSearchString = this._terms.join(' '); if (searchString === previousSearchString) return; this._startingSearch = true; this._cancellable.cancel(); this._cancellable.reset(); if (terms.length === 0) { this._reset(); return; } let isSubSearch = false; if (this._terms.length > 0) isSubSearch = searchString.indexOf(previousSearchString) === 0; this._terms = terms; this._isSubSearch = isSubSearch; this._updateSearchProgress(); if (this._searchTimeoutId === 0) this._searchTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 150, this._onSearchTimeout.bind(this)); this._highlighter = new Highlighter(this._terms); this.emit('terms-changed'); } _onPan(action) { let [dist_, dx_, dy] = action.get_motion_delta(0); let adjustment = this._scrollView.vadjustment; adjustment.value -= (dy / this.height) * adjustment.page_size; return false; } _focusChildChanged(provider) { ensureActorVisibleInScrollView(this._scrollView, provider.focusChild); } _ensureProviderDisplay(provider) { if (provider.display) return; let providerDisplay; if (provider.appInfo) providerDisplay = new ListSearchResults(provider, this); else providerDisplay = new GridSearchResults(provider, this); providerDisplay.connect('notify::focus-child', this._focusChildChanged.bind(this)); providerDisplay.hide(); this._content.add_child(providerDisplay); provider.display = providerDisplay; } _clearDisplay() { this._providers.forEach(provider => { provider.display.clear(); }); } _maybeSetInitialSelection() { let newDefaultResult = null; let providers = this._providers; for (let i = 0; i < providers.length; i++) { let provider = providers[i]; let display = provider.display; if (!display.visible) continue; let firstResult = display.getFirstResult(); if (firstResult) { newDefaultResult = firstResult; break; // select this one! } } if (newDefaultResult !== this._defaultResult) { this._setSelected(this._defaultResult, false); this._setSelected(newDefaultResult, this._highlightDefault); this._defaultResult = newDefaultResult; } } get searchInProgress() { if (this._startingSearch) return true; return this._providers.some(p => p.searchInProgress); } _updateSearchProgress() { let haveResults = this._providers.some(provider => { let display = provider.display; return display.getFirstResult() != null; }); this._scrollView.visible = haveResults; this._statusBin.visible = !haveResults; if (!haveResults) { if (this.searchInProgress) this._statusText.set_text(_('Searching…')); else this._statusText.set_text(_('No results')); } } _updateResults(provider, results) { let terms = this._terms; let display = provider.display; display.updateSearch(results, terms, () => { provider.searchInProgress = false; this._maybeSetInitialSelection(); this._updateSearchProgress(); }); } activateDefault() { // If we have a search queued up, force the search now. if (this._searchTimeoutId > 0) this._doSearch(); if (this._defaultResult) this._defaultResult.activate(); } highlightDefault(highlight) { this._highlightDefault = highlight; this._setSelected(this._defaultResult, highlight); } popupMenuDefault() { // If we have a search queued up, force the search now. if (this._searchTimeoutId > 0) this._doSearch(); if (this._defaultResult) this._defaultResult.popup_menu(); } navigateFocus(direction) { let rtl = this.get_text_direction() === Clutter.TextDirection.RTL; if (direction === St.DirectionType.TAB_BACKWARD || direction === (rtl ? St.DirectionType.RIGHT : St.DirectionType.LEFT) || direction === St.DirectionType.UP) { this.navigate_focus(null, direction, false); return; } const from = this._defaultResult ?? null; this.navigate_focus(from, direction, false); } _setSelected(result, selected) { if (!result) return; if (selected) { result.add_style_pseudo_class('selected'); ensureActorVisibleInScrollView(this._scrollView, result); } else { result.remove_style_pseudo_class('selected'); } } highlightTerms(description) { if (!description) return ''; return this._highlighter.highlight(description); } }); const ProviderInfo = GObject.registerClass( class ProviderInfo extends St.Button { _init(provider) { this.provider = provider; super._init({ style_class: 'search-provider-icon', reactive: true, can_focus: true, accessible_name: provider.appInfo.get_name(), track_hover: true, y_align: Clutter.ActorAlign.START, }); this._content = new St.BoxLayout({ vertical: false, style_class: 'list-search-provider-content', }); this.set_child(this._content); const icon = new St.Icon({ icon_size: this.PROVIDER_ICON_SIZE, gicon: provider.appInfo.get_icon(), }); const detailsBox = new St.BoxLayout({ style_class: 'list-search-provider-details', vertical: true, x_expand: true, }); const nameLabel = new St.Label({ text: provider.appInfo.get_name(), x_align: Clutter.ActorAlign.START, }); this._moreLabel = new St.Label({x_align: Clutter.ActorAlign.START}); detailsBox.add_child(nameLabel); detailsBox.add_child(this._moreLabel); this._content.add_child(icon); this._content.add_child(detailsBox); } get PROVIDER_ICON_SIZE() { return 32; } animateLaunch() { let appSys = Shell.AppSystem.get_default(); let app = appSys.lookup_app(this.provider.appInfo.get_id()); if (app.state === Shell.AppState.STOPPED) IconGrid.zoomOutActor(this._content); } setMoreCount(count) { this._moreLabel.text = ngettext('%d more', '%d more', count).format(count); this._moreLabel.visible = count > 0; } }); 070701000001DE000081A40000000000000000000000016712993F00002D70000000000000000000000000000000000000002B00000000gnome-shell-47.1/js/ui/searchController.jsimport Clutter from 'gi://Clutter'; import GObject from 'gi://GObject'; import St from 'gi://St'; import * as Main from './main.js'; import * as Search from './search.js'; import * as ShellEntry from './shellEntry.js'; const FocusTrap = GObject.registerClass( class FocusTrap extends St.Widget { vfunc_navigate_focus(from, direction) { if (direction === St.DirectionType.TAB_FORWARD || direction === St.DirectionType.TAB_BACKWARD) return super.vfunc_navigate_focus(from, direction); return false; } }); function getTermsForSearchString(searchString) { searchString = searchString.replace(/^\s+/g, '').replace(/\s+$/g, ''); if (searchString === '') return []; return searchString.split(/\s+/); } export const SearchController = GObject.registerClass({ Properties: { 'search-active': GObject.ParamSpec.boolean( 'search-active', null, null, GObject.ParamFlags.READABLE, false), }, }, class SearchController extends St.Widget { _init(searchEntry, showAppsButton) { super._init({ name: 'searchController', layout_manager: new Clutter.BinLayout(), x_expand: true, y_expand: true, visible: false, }); this._showAppsButton = showAppsButton; this._showAppsButton.connect('notify::checked', this._onShowAppsButtonToggled.bind(this)); this._activePage = null; this._searchActive = false; this._entry = searchEntry; ShellEntry.addContextMenu(this._entry); this._text = this._entry.clutter_text; this._text.connect('text-changed', this._onTextChanged.bind(this)); this._text.connect('key-press-event', this._onKeyPress.bind(this)); this._text.connect('key-focus-in', () => { this._searchResults.highlightDefault(true); }); this._text.connect('key-focus-out', () => { this._searchResults.highlightDefault(false); }); this._entry.connect('popup-menu', () => { if (!this._searchActive) return; this._entry.menu.close(); this._searchResults.popupMenuDefault(); }); this._entry.connect('notify::mapped', this._onMapped.bind(this)); global.stage.connectObject('notify::key-focus', this._onStageKeyFocusChanged.bind(this), this); this._entry.set_primary_icon(new St.Icon({ style_class: 'search-entry-icon', icon_name: 'edit-find-symbolic', })); this._clearIcon = new St.Icon({ style_class: 'search-entry-icon', icon_name: 'edit-clear-symbolic', }); this._iconClickedId = 0; this._capturedEventId = 0; this._searchResults = new Search.SearchResultsView(); this.add_child(this._searchResults); Main.ctrlAltTabManager.addGroup(this._entry, _('Search'), 'shell-focus-search-symbolic'); // Since the entry isn't inside the results container we install this // dummy widget as the last results container child so that we can // include the entry in the keynav tab path this._focusTrap = new FocusTrap({can_focus: true}); this._focusTrap.connect('key-focus-in', () => { this._entry.grab_key_focus(); }); this._searchResults.add_child(this._focusTrap); global.focus_manager.add_group(this._searchResults); this._stageKeyPressId = 0; Main.overview.connect('showing', () => { this._stageKeyPressId = global.stage.connect('key-press-event', this._onStageKeyPress.bind(this)); }); Main.overview.connect('hiding', () => { if (this._stageKeyPressId !== 0) { global.stage.disconnect(this._stageKeyPressId); this._stageKeyPressId = 0; } }); } prepareToEnterOverview() { this.reset(); this._setSearchActive(false); } prepareToLeaveOverview() { this._setSearchActive(false); } vfunc_unmap() { this.reset(); super.vfunc_unmap(); } _setSearchActive(searchActive) { if (this._searchActive === searchActive) return; this._searchActive = searchActive; this.notify('search-active'); } _onShowAppsButtonToggled() { this._setSearchActive(false); } _onStageKeyPress(actor, event) { // Ignore events while anything but the overview has // pushed a modal (system modals, looking glass, ...) if (Main.modalCount > 1) return Clutter.EVENT_PROPAGATE; let symbol = event.get_key_symbol(); if (symbol === Clutter.KEY_Escape) { if (this._searchActive) this.reset(); else if (this._showAppsButton.checked) this._showAppsButton.checked = false; else Main.overview.hide(); return Clutter.EVENT_STOP; } else if (this._shouldTriggerSearch(symbol)) { this.startSearch(event); } return Clutter.EVENT_PROPAGATE; } _searchCancelled() { this._setSearchActive(false); // Leave the entry focused when it doesn't have any text; // when replacing a selected search term, Clutter emits // two 'text-changed' signals, one for deleting the previous // text and one for the new one - the second one is handled // incorrectly when we remove focus // (https://bugzilla.gnome.org/show_bug.cgi?id=636341) */ if (this._text.text !== '') this.reset(); } reset() { // Don't drop the key focus on Clutter's side if anything but the // overview has pushed a modal (e.g. system modals when activated using // the overview). if (Main.modalCount <= 1) global.stage.set_key_focus(null); this._entry.text = ''; this._text.set_cursor_visible(true); this._text.set_selection(0, 0); } _onStageKeyFocusChanged() { let focus = global.stage.get_key_focus(); let appearFocused = this._entry.contains(focus) || this._searchResults.contains(focus); this._text.set_cursor_visible(appearFocused); if (appearFocused) this._entry.add_style_pseudo_class('focus'); else this._entry.remove_style_pseudo_class('focus'); } _onMapped() { if (this._entry.mapped) { // Enable 'find-as-you-type' this._capturedEventId = global.stage.connect('captured-event', this._onCapturedEvent.bind(this)); this._text.set_cursor_visible(true); this._text.set_selection(0, 0); } else { // Disable 'find-as-you-type' if (this._capturedEventId > 0) global.stage.disconnect(this._capturedEventId); this._capturedEventId = 0; } } _shouldTriggerSearch(symbol) { if (symbol === Clutter.KEY_Multi_key) return true; if (symbol === Clutter.KEY_BackSpace && this._searchActive) return true; let unicode = Clutter.keysym_to_unicode(symbol); if (unicode === 0) return false; if (getTermsForSearchString(String.fromCharCode(unicode)).length > 0) return true; return false; } startSearch(event) { global.stage.set_key_focus(this._text); this._text.event(event, false); } // the entry does not show the hint _isActivated() { return this._text.text === this._entry.get_text(); } _onTextChanged() { let terms = getTermsForSearchString(this._entry.get_text()); const searchActive = terms.length > 0; this._searchResults.setTerms(terms); if (searchActive) { this._setSearchActive(true); this._entry.set_secondary_icon(this._clearIcon); if (this._iconClickedId === 0) { this._iconClickedId = this._entry.connect('secondary-icon-clicked', this.reset.bind(this)); } } else { if (this._iconClickedId > 0) { this._entry.disconnect(this._iconClickedId); this._iconClickedId = 0; } this._entry.set_secondary_icon(null); this._searchCancelled(); } } _onKeyPress(entry, event) { let symbol = event.get_key_symbol(); if (symbol === Clutter.KEY_Escape) { if (this._isActivated()) { this.reset(); return Clutter.EVENT_STOP; } } else if (this._searchActive) { let arrowNext, nextDirection; if (entry.get_text_direction() === Clutter.TextDirection.RTL) { arrowNext = Clutter.KEY_Left; nextDirection = St.DirectionType.LEFT; } else { arrowNext = Clutter.KEY_Right; nextDirection = St.DirectionType.RIGHT; } if (symbol === Clutter.KEY_Tab) { this._searchResults.navigateFocus(St.DirectionType.TAB_FORWARD); return Clutter.EVENT_STOP; } else if (symbol === Clutter.KEY_ISO_Left_Tab) { this._focusTrap.can_focus = false; this._searchResults.navigateFocus(St.DirectionType.TAB_BACKWARD); this._focusTrap.can_focus = true; return Clutter.EVENT_STOP; } else if (symbol === Clutter.KEY_Down) { this._searchResults.navigateFocus(St.DirectionType.DOWN); return Clutter.EVENT_STOP; } else if (symbol === arrowNext && this._text.cursor_position === -1) { this._searchResults.navigateFocus(nextDirection); return Clutter.EVENT_STOP; } else if (symbol === Clutter.KEY_Return || symbol === Clutter.KEY_KP_Enter) { this._searchResults.activateDefault(); return Clutter.EVENT_STOP; } } return Clutter.EVENT_PROPAGATE; } _onCapturedEvent(actor, event) { if (event.type() === Clutter.EventType.BUTTON_PRESS) { const targetActor = global.stage.get_event_actor(event); if (targetActor !== this._text && this._text.has_key_focus() && this._text.text === '' && !this._text.has_preedit() && !Main.layoutManager.keyboardBox.contains(targetActor)) { // the user clicked outside after activating the entry, but // with no search term entered and no keyboard button pressed // - cancel the search this.reset(); } } return Clutter.EVENT_PROPAGATE; } /** * addProvider: * * Add a search provider to the controller. * * @param {object} provider - a search provider implementation */ addProvider(provider) { this._searchResults._registerProvider(provider); } /** * removeProvider: * * Remove a search provider from the controller. * * @param {object} provider - a search provider implementation */ removeProvider(provider) { this._searchResults._unregisterProvider(provider); } get searchActive() { return this._searchActive; } }); 070701000001DF000081A40000000000000000000000016712993F000016BF000000000000000000000000000000000000002600000000gnome-shell-47.1/js/ui/sessionMode.jsimport GLib from 'gi://GLib'; import * as Signals from '../misc/signals.js'; import * as FileUtils from '../misc/fileUtils.js'; import {LoginDialog} from '../gdm/loginDialog.js'; import {UnlockDialog} from '../ui/unlockDialog.js'; import * as Config from '../misc/config.js'; const DEFAULT_MODE = 'restrictive'; const USER_SESSION_COMPONENTS = [ 'polkitAgent', 'keyring', 'autorunManager', 'automountManager', ]; if (Config.HAVE_NETWORKMANAGER) USER_SESSION_COMPONENTS.push('networkAgent'); const _modes = { 'restrictive': { parentMode: null, stylesheetName: 'gnome-shell.css', colorScheme: 'prefer-dark', themeResourceName: 'gnome-shell-theme.gresource', hasOverview: false, showCalendarEvents: false, showWelcomeDialog: false, allowSettings: false, allowScreencast: false, enabledExtensions: [], hasRunDialog: false, hasWorkspaces: false, hasWindows: false, hasNotifications: false, hasWmMenus: false, isLocked: false, isGreeter: false, isPrimary: false, unlockDialog: null, components: [], panel: { left: [], center: [], right: [], }, panelStyle: null, }, 'gdm': { hasNotifications: true, isGreeter: true, isPrimary: true, unlockDialog: LoginDialog, components: Config.HAVE_NETWORKMANAGER ? ['networkAgent', 'polkitAgent'] : ['polkitAgent'], panel: { left: [], center: ['dateMenu'], right: ['dwellClick', 'a11y', 'keyboard', 'quickSettings'], }, panelStyle: 'login-screen', }, 'unlock-dialog': { isLocked: true, unlockDialog: undefined, components: ['polkitAgent'], panel: { left: [], center: [], right: ['dwellClick', 'a11y', 'keyboard', 'quickSettings'], }, panelStyle: 'unlock-screen', }, 'user': { hasOverview: true, showCalendarEvents: true, showWelcomeDialog: true, allowSettings: true, allowScreencast: true, hasRunDialog: true, hasWorkspaces: true, hasWindows: true, hasWmMenus: true, hasNotifications: true, isLocked: false, isPrimary: true, unlockDialog: UnlockDialog, components: USER_SESSION_COMPONENTS, panel: { left: ['activities'], center: ['dateMenu'], right: ['screenRecording', 'screenSharing', 'dwellClick', 'a11y', 'keyboard', 'quickSettings'], }, }, }; function _loadMode(file, info) { let name = info.get_name(); let suffix = name.indexOf('.json'); let modeName = suffix === -1 ? name : name.slice(name, suffix); if (Object.prototype.hasOwnProperty.call(_modes, modeName)) return; let fileContent, success_, newMode; try { [success_, fileContent] = file.load_contents(null); const decoder = new TextDecoder(); newMode = JSON.parse(decoder.decode(fileContent)); } catch (e) { return; } _modes[modeName] = {}; const excludedProps = ['unlockDialog']; for (let prop in _modes[DEFAULT_MODE]) { if (newMode[prop] !== undefined && !excludedProps.includes(prop)) _modes[modeName][prop] = newMode[prop]; } _modes[modeName]['isPrimary'] = true; } /** * Loads external session modes from the system data directories. */ function _loadModes() { for (const {dir, info} of FileUtils.collectFromDatadirs('modes', false)) _loadMode(dir, info); } export function listModes() { _loadModes(); let loop = new GLib.MainLoop(null, false); let id = GLib.idle_add(GLib.PRIORITY_DEFAULT, () => { let names = Object.getOwnPropertyNames(_modes); for (let i = 0; i < names.length; i++) { if (_modes[names[i]].isPrimary) print(names[i]); } loop.quit(); }); GLib.Source.set_name_by_id(id, '[gnome-shell] listModes'); loop.run(); } export class SessionMode extends Signals.EventEmitter { constructor() { super(); _loadModes(); let isPrimary = _modes[global.session_mode] && _modes[global.session_mode].isPrimary; let mode = isPrimary ? global.session_mode : 'user'; this._modeStack = [mode]; this._sync(); } pushMode(mode) { console.debug(`sessionMode: Pushing mode ${mode}`); this._modeStack.push(mode); this._sync(); } popMode(mode) { if (this.currentMode !== mode || this._modeStack.length === 1) throw new Error('Invalid SessionMode.popMode'); console.debug(`sessionMode: Popping mode ${mode}`); this._modeStack.pop(); this._sync(); } switchMode(to) { if (this.currentMode === to) return; this._modeStack[this._modeStack.length - 1] = to; this._sync(); } get currentMode() { return this._modeStack[this._modeStack.length - 1]; } _sync() { const current = _modes[this.currentMode]; const parent = current.parentMode ? {..._modes[DEFAULT_MODE], ..._modes[current.parentMode]} : {..._modes[DEFAULT_MODE]}; const params = {...parent, ...current}; // A simplified version of Lang.copyProperties, handles // undefined as a special case for "no change / inherit from previous mode" for (let prop in params) { if (params[prop] !== undefined) this[prop] = params[prop]; } this.emit('updated'); } } 070701000001E0000081A40000000000000000000000016712993F00004219000000000000000000000000000000000000002400000000gnome-shell-47.1/js/ui/shellDBus.jsimport Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import Meta from 'gi://Meta'; import Shell from 'gi://Shell'; import * as Config from '../misc/config.js'; import * as ExtensionDownloader from './extensionDownloader.js'; import * as ExtensionUtils from '../misc/extensionUtils.js'; import * as Main from './main.js'; import * as Screenshot from './screenshot.js'; import {loadInterfaceXML} from '../misc/fileUtils.js'; import {DBusSenderChecker} from '../misc/util.js'; import {ControlsState} from './overviewControls.js'; const GnomeShellIface = loadInterfaceXML('org.gnome.Shell'); const ScreenSaverIface = loadInterfaceXML('org.gnome.ScreenSaver'); export class GnomeShell { constructor() { this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(GnomeShellIface, this); this._dbusImpl.export(Gio.DBus.session, '/org/gnome/Shell'); this._senderChecker = new DBusSenderChecker([ 'org.gnome.Settings', 'org.gnome.SettingsDaemon.MediaKeys', ]); this._extensionsService = new GnomeShellExtensions(); this._screenshotService = new Screenshot.ScreenshotService(); this._grabbedAccelerators = new Map(); this._grabbers = new Map(); global.display.connect('accelerator-activated', (display, action, device, timestamp) => { this._emitAcceleratorActivated(action, device, timestamp); }); this._cachedOverviewVisible = false; Main.overview.connect('showing', this._checkOverviewVisibleChanged.bind(this)); Main.overview.connect('hidden', this._checkOverviewVisibleChanged.bind(this)); } /** * This function executes arbitrary code in the main * loop, and returns a boolean success and * JSON representation of the object as a string. * * If evaluation completes without throwing an exception, * then the return value will be [true, JSON.stringify(result)]. * If evaluation fails, then the return value will be * [false, JSON.stringify(exception)]; * * @async * @param {...any} params - method parameters * @param {Gio.DBusMethodInvocation} invocation - the invocation * @returns {void} */ async EvalAsync(params, invocation) { if (!global.context.unsafe_mode) { invocation.return_value(new GLib.Variant('(bs)', [false, ''])); return; } const [code] = params; let returnValue; let success; try { returnValue = JSON.stringify(await eval(code)); // A hack; DBus doesn't have null/undefined if (returnValue === undefined) returnValue = ''; success = true; } catch (e) { returnValue = `${e}`; success = false; } invocation.return_value( new GLib.Variant('(bs)', [success, returnValue])); } /** * Focus the overview's search entry * * @async * @param {...any} params - method parameters * @param {Gio.DBusMethodInvocation} invocation - the invocation * @returns {void} */ async FocusSearchAsync(params, invocation) { try { await this._senderChecker.checkInvocation(invocation); } catch (e) { invocation.return_gerror(e); return; } Main.overview.focusSearch(); invocation.return_value(null); } /** * Show OSD with the specified parameters * * @async * @param {...any} params - method parameters * @param {Gio.DBusMethodInvocation} invocation - the invocation * @returns {void} */ async ShowOSDAsync([params], invocation) { try { await this._senderChecker.checkInvocation(invocation); } catch (e) { invocation.return_gerror(e); return; } for (let param in params) params[param] = params[param].deepUnpack(); const { connector, label, level, max_level: maxLevel, icon: serializedIcon, } = params; let monitorIndex = -1; if (connector) { const monitorManager = global.backend.get_monitor_manager(); monitorIndex = monitorManager.get_monitor_for_connector(connector); } let icon = null; if (serializedIcon) icon = Gio.Icon.new_for_string(serializedIcon); Main.osdWindowManager.show(monitorIndex, icon, label, level, maxLevel); invocation.return_value(null); } /** * Focus specified app in the overview's app grid * * @async * @param {string} id - an application ID * @param {Gio.DBusMethodInvocation} invocation - the invocation * @returns {void} */ async FocusAppAsync([id], invocation) { try { await this._senderChecker.checkInvocation(invocation); } catch (e) { invocation.return_gerror(e); return; } const appSys = Shell.AppSystem.get_default(); if (appSys.lookup_app(id) === null) { invocation.return_error_literal( Gio.DBusError, Gio.DBusError.FILE_NOT_FOUND, `No app with ID ${id}`); return; } Main.overview.selectApp(id); invocation.return_value(null); } /** * Show the overview's app grid * * @async * @param {...any} params - method parameters * @param {Gio.DBusMethodInvocation} invocation - the invocation * @returns {void} */ async ShowApplicationsAsync(params, invocation) { try { await this._senderChecker.checkInvocation(invocation); } catch (e) { invocation.return_gerror(e); return; } Main.overview.show(ControlsState.APP_GRID); invocation.return_value(null); } async GrabAcceleratorAsync(params, invocation) { try { await this._senderChecker.checkInvocation(invocation); } catch (e) { invocation.return_gerror(e); return; } let [accel, modeFlags, grabFlags] = params; let sender = invocation.get_sender(); let bindingAction = this._grabAcceleratorForSender(accel, modeFlags, grabFlags, sender); invocation.return_value(GLib.Variant.new('(u)', [bindingAction])); } async GrabAcceleratorsAsync(params, invocation) { try { await this._senderChecker.checkInvocation(invocation); } catch (e) { invocation.return_gerror(e); return; } let [accels] = params; let sender = invocation.get_sender(); let bindingActions = []; for (let i = 0; i < accels.length; i++) { let [accel, modeFlags, grabFlags] = accels[i]; bindingActions.push(this._grabAcceleratorForSender(accel, modeFlags, grabFlags, sender)); } invocation.return_value(GLib.Variant.new('(au)', [bindingActions])); } async UngrabAcceleratorAsync(params, invocation) { try { await this._senderChecker.checkInvocation(invocation); } catch (e) { invocation.return_gerror(e); return; } let [action] = params; let sender = invocation.get_sender(); let ungrabSucceeded = this._ungrabAcceleratorForSender(action, sender); invocation.return_value(GLib.Variant.new('(b)', [ungrabSucceeded])); } async UngrabAcceleratorsAsync(params, invocation) { try { await this._senderChecker.checkInvocation(invocation); } catch (e) { invocation.return_gerror(e); return; } let [actions] = params; let sender = invocation.get_sender(); let ungrabSucceeded = true; for (let i = 0; i < actions.length; i++) ungrabSucceeded &= this._ungrabAcceleratorForSender(actions[i], sender); invocation.return_value(GLib.Variant.new('(b)', [ungrabSucceeded])); } async ScreenTransitionAsync(params, invocation) { try { await this._senderChecker.checkInvocation(invocation); } catch (e) { invocation.return_gerror(e); return; } Main.layoutManager.screenTransition.run(); invocation.return_value(null); } _emitAcceleratorActivated(action, device, timestamp) { let destination = this._grabbedAccelerators.get(action); if (!destination) return; let connection = this._dbusImpl.get_connection(); let info = this._dbusImpl.get_info(); let params = { 'timestamp': GLib.Variant.new('u', timestamp), 'action-mode': GLib.Variant.new('u', Main.actionMode), }; let deviceNode = device.get_device_node(); if (deviceNode) params['device-node'] = GLib.Variant.new('s', deviceNode); connection.emit_signal( destination, this._dbusImpl.get_object_path(), info?.name ?? null, 'AcceleratorActivated', GLib.Variant.new('(ua{sv})', [action, params])); } _grabAcceleratorForSender(accelerator, modeFlags, grabFlags, sender) { let bindingAction = global.display.grab_accelerator(accelerator, grabFlags); if (bindingAction === Meta.KeyBindingAction.NONE) return Meta.KeyBindingAction.NONE; let bindingName = Meta.external_binding_name_for_action(bindingAction); Main.wm.allowKeybinding(bindingName, modeFlags); this._grabbedAccelerators.set(bindingAction, sender); if (!this._grabbers.has(sender)) { let id = Gio.bus_watch_name(Gio.BusType.SESSION, sender, 0, null, this._onGrabberBusNameVanished.bind(this)); this._grabbers.set(sender, id); } return bindingAction; } _ungrabAccelerator(action) { let ungrabSucceeded = global.display.ungrab_accelerator(action); if (ungrabSucceeded) this._grabbedAccelerators.delete(action); return ungrabSucceeded; } _ungrabAcceleratorForSender(action, sender) { let grabbedBy = this._grabbedAccelerators.get(action); if (sender !== grabbedBy) return false; return this._ungrabAccelerator(action); } _onGrabberBusNameVanished(connection, name) { let grabs = this._grabbedAccelerators.entries(); for (let [action, sender] of grabs) { if (sender === name) this._ungrabAccelerator(action); } Gio.bus_unwatch_name(this._grabbers.get(name)); this._grabbers.delete(name); } async ShowMonitorLabelsAsync(params, invocation) { try { await this._senderChecker.checkInvocation(invocation); } catch (e) { invocation.return_gerror(e); return; } let sender = invocation.get_sender(); let [dict] = params; Main.osdMonitorLabeler.show(sender, dict); invocation.return_value(null); } async HideMonitorLabelsAsync(params, invocation) { try { await this._senderChecker.checkInvocation(invocation); } catch (e) { invocation.return_gerror(e); return; } let sender = invocation.get_sender(); Main.osdMonitorLabeler.hide(sender); invocation.return_value(null); } _checkOverviewVisibleChanged() { if (Main.overview.visible !== this._cachedOverviewVisible) { this._cachedOverviewVisible = Main.overview.visible; this._dbusImpl.emit_property_changed('OverviewActive', new GLib.Variant('b', this._cachedOverviewVisible)); } } get Mode() { return global.session_mode; } get OverviewActive() { return this._cachedOverviewVisible; } set OverviewActive(visible) { if (visible) Main.overview.show(); else Main.overview.hide(); } get ShellVersion() { return Config.PACKAGE_VERSION; } } const GnomeShellExtensionsIface = loadInterfaceXML('org.gnome.Shell.Extensions'); class GnomeShellExtensions { constructor() { this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(GnomeShellExtensionsIface, this); this._dbusImpl.export(Gio.DBus.session, '/org/gnome/Shell'); this._userExtensionsEnabled = this.UserExtensionsEnabled; global.settings.connect('changed::disable-user-extensions', () => { if (this._userExtensionsEnabled === this.UserExtensionsEnabled) return; this._userExtensionsEnabled = this.UserExtensionsEnabled; this._dbusImpl.emit_property_changed('UserExtensionsEnabled', new GLib.Variant('b', this._userExtensionsEnabled)); }); Main.extensionManager.connect('extension-state-changed', this._extensionStateChanged.bind(this)); } ListExtensions() { let out = {}; Main.extensionManager.getUuids().forEach(uuid => { let dbusObj = this.GetExtensionInfo(uuid); out[uuid] = dbusObj; }); return out; } GetExtensionInfo(uuid) { let extension = Main.extensionManager.lookup(uuid) || {}; return ExtensionUtils.serializeExtension(extension); } GetExtensionErrors(uuid) { let extension = Main.extensionManager.lookup(uuid); if (!extension) return []; if (!extension.errors) return []; return extension.errors; } InstallRemoteExtensionAsync([uuid], invocation) { return ExtensionDownloader.installExtension(uuid, invocation); } UninstallExtension(uuid) { return ExtensionDownloader.uninstallExtension(uuid); } EnableExtension(uuid) { return Main.extensionManager.enableExtension(uuid); } DisableExtension(uuid) { return Main.extensionManager.disableExtension(uuid); } LaunchExtensionPrefs(uuid) { this.OpenExtensionPrefs(uuid, '', {}); } OpenExtensionPrefs(uuid, parentWindow, options) { Main.extensionManager.openExtensionPrefs(uuid, parentWindow, options); } ReloadExtensionAsync(params, invocation) { invocation.return_error_literal( Gio.DBusError, Gio.DBusError.NOT_SUPPORTED, 'ReloadExtension is deprecated and does not work'); } CheckForUpdates() { ExtensionDownloader.checkForUpdates(); } get ShellVersion() { return Config.PACKAGE_VERSION; } get UserExtensionsEnabled() { return !global.settings.get_boolean('disable-user-extensions'); } set UserExtensionsEnabled(enable) { global.settings.set_boolean('disable-user-extensions', !enable); } _extensionStateChanged(_, newState) { let state = ExtensionUtils.serializeExtension(newState); this._dbusImpl.emit_signal('ExtensionStateChanged', new GLib.Variant('(sa{sv})', [newState.uuid, state])); this._dbusImpl.emit_signal('ExtensionStatusChanged', new GLib.Variant('(sis)', [newState.uuid, newState.state, newState.error])); } } export class ScreenSaverDBus { constructor(screenShield) { this._screenShield = screenShield; screenShield.connect('active-changed', shield => { this._dbusImpl.emit_signal('ActiveChanged', GLib.Variant.new('(b)', [shield.active])); }); screenShield.connect('wake-up-screen', () => { this._dbusImpl.emit_signal('WakeUpScreen', null); }); this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(ScreenSaverIface, this); this._dbusImpl.export(Gio.DBus.session, '/org/gnome/ScreenSaver'); Gio.DBus.session.own_name('org.gnome.Shell.ScreenShield', Gio.BusNameOwnerFlags.NONE, null, null); } LockAsync(parameters, invocation) { let tmpId = this._screenShield.connect('lock-screen-shown', () => { this._screenShield.disconnect(tmpId); invocation.return_value(null); }); this._screenShield.lock(true); } SetActive(active) { if (active) this._screenShield.activate(true); else this._screenShield.deactivate(false); } GetActive() { return this._screenShield.active; } GetActiveTime() { let started = this._screenShield.activationTime; if (started > 0) return Math.floor((GLib.get_monotonic_time() - started) / 1000000); else return 0; } } 070701000001E1000081A40000000000000000000000016712993F00001A48000000000000000000000000000000000000002500000000gnome-shell-47.1/js/ui/shellEntry.jsimport Clutter from 'gi://Clutter'; import GObject from 'gi://GObject'; import Pango from 'gi://Pango'; import Shell from 'gi://Shell'; import St from 'gi://St'; import * as BoxPointer from './boxpointer.js'; import * as Main from './main.js'; import * as Params from '../misc/params.js'; import * as PopupMenu from './popupMenu.js'; export class EntryMenu extends PopupMenu.PopupMenu { constructor(entry) { super(entry, 0, St.Side.TOP); this._entry = entry; this._clipboard = St.Clipboard.get_default(); // Populate menu let item; item = new PopupMenu.PopupMenuItem(_('Copy')); item.connect('activate', this._onCopyActivated.bind(this)); this.addMenuItem(item); this._copyItem = item; item = new PopupMenu.PopupMenuItem(_('Paste')); item.connect('activate', this._onPasteActivated.bind(this)); this.addMenuItem(item); this._pasteItem = item; if (entry instanceof St.PasswordEntry) this._makePasswordItem(); Main.uiGroup.add_child(this.actor); this.actor.hide(); } _makePasswordItem() { let item = new PopupMenu.PopupMenuItem(''); item.connect('activate', this._onPasswordActivated.bind(this)); this.addMenuItem(item); this._passwordItem = item; this._entry.bind_property('show-peek-icon', this._passwordItem, 'visible', GObject.BindingFlags.SYNC_CREATE); } open(animate) { this._updatePasteItem(); this._updateCopyItem(); if (this._passwordItem) this._updatePasswordItem(); super.open(animate); this._entry.add_style_pseudo_class('focus'); let direction = St.DirectionType.TAB_FORWARD; if (!this.actor.navigate_focus(null, direction, false)) this.actor.grab_key_focus(); } _updateCopyItem() { let selection = this._entry.clutter_text.get_selection(); this._copyItem.setSensitive(!this._entry.clutter_text.password_char && selection && selection !== ''); } _updatePasteItem() { this._clipboard.get_text(St.ClipboardType.CLIPBOARD, (clipboard, text) => { this._pasteItem.setSensitive(text && text !== ''); }); } _updatePasswordItem() { if (!this._entry.password_visible) this._passwordItem.label.set_text(_('Show Text')); else this._passwordItem.label.set_text(_('Hide Text')); } _onCopyActivated() { let selection = this._entry.clutter_text.get_selection(); this._clipboard.set_text(St.ClipboardType.CLIPBOARD, selection); } _onPasteActivated() { this._clipboard.get_text(St.ClipboardType.CLIPBOARD, (clipboard, text) => { if (!text) return; this._entry.clutter_text.delete_selection(); let pos = this._entry.clutter_text.get_cursor_position(); this._entry.clutter_text.insert_text(text, pos); }); } _onPasswordActivated() { this._entry.password_visible = !this._entry.password_visible; } } function _setMenuAlignment(entry, stageX) { let [success, entryX] = entry.transform_stage_point(stageX, 0); if (success) entry.menu.setSourceAlignment(entryX / entry.width); } function _onButtonPressEvent(actor, event, entry) { if (entry.menu.isOpen) { entry.menu.close(BoxPointer.PopupAnimation.FULL); return Clutter.EVENT_STOP; } else if (event.get_button() === 3) { let [stageX] = event.get_coords(); _setMenuAlignment(entry, stageX); entry.menu.open(BoxPointer.PopupAnimation.FULL); return Clutter.EVENT_STOP; } return Clutter.EVENT_PROPAGATE; } function _onPopup(actor, entry) { let cursorPosition = entry.clutter_text.get_cursor_position(); let [success, textX, textY_, lineHeight_] = entry.clutter_text.position_to_coords(cursorPosition); if (success) entry.menu.setSourceAlignment(textX / entry.width); entry.menu.open(BoxPointer.PopupAnimation.FULL); } /** * @param {St.Entry} entry * @param {*} params */ export function addContextMenu(entry, params) { if (entry.menu) return; params = Params.parse(params, {actionMode: Shell.ActionMode.POPUP}); entry.menu = new EntryMenu(entry); entry._menuManager = new PopupMenu.PopupMenuManager(entry, { actionMode: params.actionMode, }); entry._menuManager.addMenu(entry.menu); // Add an event handler to both the entry and its clutter_text; the former // so padding is included in the clickable area, the latter because the // event processing of ClutterText prevents event-bubbling. entry.clutter_text.connect('button-press-event', (actor, event) => { _onButtonPressEvent(actor, event, entry); }); entry.connect('button-press-event', (actor, event) => { _onButtonPressEvent(actor, event, entry); }); entry.connect('popup-menu', actor => _onPopup(actor, entry)); entry.connect('destroy', () => { entry.menu.destroy(); entry.menu = null; entry._menuManager = null; }); } export const CapsLockWarning = GObject.registerClass( class CapsLockWarning extends St.Label { _init(params) { super._init({ style_class: 'caps-lock-warning-label', ...params, }); this.text = _('Caps lock is on'); this.clutter_text.ellipsize = Pango.EllipsizeMode.NONE; this.clutter_text.line_wrap = true; let seat = Clutter.get_default_backend().get_default_seat(); this._keymap = seat.get_keymap(); this.connect('notify::mapped', () => { if (this.is_mapped()) { this._keymap.connectObject( 'state-changed', () => this._sync(true), this); } else { this._keymap.disconnectObject(this); } this._sync(false); }); } _sync(animate) { let capsLockOn = this._keymap.get_caps_lock_state(); this.remove_all_transitions(); const {naturalHeightSet} = this; this.natural_height_set = false; let [, height] = this.get_preferred_height(-1); this.natural_height_set = naturalHeightSet; this.ease({ height: capsLockOn ? height : 0, opacity: capsLockOn ? 255 : 0, duration: animate ? 200 : 0, onComplete: () => { if (capsLockOn) this.height = -1; }, }); } }); 070701000001E2000081A40000000000000000000000016712993F00006531000000000000000000000000000000000000002E00000000gnome-shell-47.1/js/ui/shellMountOperation.jsimport Clutter from 'gi://Clutter'; import Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import Pango from 'gi://Pango'; import Shell from 'gi://Shell'; import St from 'gi://St'; import * as Animation from './animation.js'; import * as CheckBox from './checkBox.js'; import * as Dialog from './dialog.js'; import * as MessageTray from './messageTray.js'; import * as ModalDialog from './modalDialog.js'; import * as Params from '../misc/params.js'; import * as ShellEntry from './shellEntry.js'; import {loadInterfaceXML} from '../misc/fileUtils.js'; import {wiggle} from '../misc/animationUtils.js'; const LIST_ITEM_ICON_SIZE = 48; const WORK_SPINNER_ICON_SIZE = 16; const REMEMBER_MOUNT_PASSWORD_KEY = 'remember-mount-password'; /* ------ Common Utils ------- */ function _setButtonsForChoices(dialog, oldChoices, choices) { let buttons = []; let buttonsChanged = oldChoices.length !== choices.length; for (let idx = 0; idx < choices.length; idx++) { let button = idx; buttonsChanged ||= oldChoices[idx] !== choices[idx]; buttons.unshift({ label: choices[idx], action: () => dialog.emit('response', button), }); } if (buttonsChanged) dialog.setButtons(buttons); } function _setLabelsForMessage(content, message) { let labels = message.split('\n'); content.title = labels.shift(); content.description = labels.join('\n'); } /* -------------------------------------------------------- */ export class ShellMountOperation { constructor(source, params) { params = Params.parse(params, {existingDialog: null}); this._dialog = null; this._existingDialog = params.existingDialog; this._processesDialog = null; this.mountOp = new Shell.MountOperation(); this.mountOp.connect('ask-question', this._onAskQuestion.bind(this)); this.mountOp.connect('ask-password', this._onAskPassword.bind(this)); this.mountOp.connect('show-processes-2', this._onShowProcesses2.bind(this)); this.mountOp.connect('aborted', this.close.bind(this)); this.mountOp.connect('show-unmount-progress', this._onShowUnmountProgress.bind(this)); this._drive = source.get_drive(); this._drive?.connectObject('disconnected', this.close.bind(this), this); } _closeExistingDialog() { if (!this._existingDialog) return; this._existingDialog.close(); this._existingDialog = null; } _onAskQuestion(op, message, choices) { this._closeExistingDialog(); this._dialog = new ShellMountQuestionDialog(); this._dialog.connectObject('response', (object, choice) => { this.mountOp.set_choice(choice); this.mountOp.reply(Gio.MountOperationResult.HANDLED); this.close(); }, this); this._dialog.update(message, choices); this._dialog.open(); } _onAskPassword(op, message, defaultUser, defaultDomain, flags) { if (this._existingDialog) { this._dialog = this._existingDialog; this._dialog.reaskPassword(); } else { this._dialog = new ShellMountPasswordDialog(message, flags); } this._dialog.connectObject('response', (object, choice, password, remember, hiddenVolume, systemVolume, pim) => { if (choice === -1) { this.mountOp.reply(Gio.MountOperationResult.ABORTED); } else { if (remember) this.mountOp.set_password_save(Gio.PasswordSave.PERMANENTLY); else this.mountOp.set_password_save(Gio.PasswordSave.NEVER); this.mountOp.set_password(password); this.mountOp.set_is_tcrypt_hidden_volume(hiddenVolume); this.mountOp.set_is_tcrypt_system_volume(systemVolume); this.mountOp.set_pim(pim); this.mountOp.reply(Gio.MountOperationResult.HANDLED); } }, this); this._dialog.open(); } close(_op) { this._closeExistingDialog(); this._processesDialog = null; if (this._dialog) { this._dialog.close(); this._dialog = null; } if (this._notifier) { this._notifier.done(); this._notifier = null; } if (this._drive) { this._drive.disconnectObject(this); this._drive = null; } } _onShowProcesses2(op) { this._closeExistingDialog(); let processes = op.get_show_processes_pids(); let choices = op.get_show_processes_choices(); let message = op.get_show_processes_message(); if (!this._processesDialog) { this._processesDialog = new ShellProcessesDialog(); this._dialog = this._processesDialog; this._processesDialog.connectObject('response', (object, choice) => { if (choice === -1) { this.mountOp.reply(Gio.MountOperationResult.ABORTED); } else { this.mountOp.set_choice(choice); this.mountOp.reply(Gio.MountOperationResult.HANDLED); } this.close(); }, this); this._processesDialog.open(); } this._processesDialog.update(message, processes, choices); } _onShowUnmountProgress(op, message, timeLeft, bytesLeft) { if (bytesLeft === 0) this._showUnmountNotificationDone(message); else this._showUnmountNotification(message); } borrowDialog() { this._dialog?.disconnectObject(this); return this._dialog; } _createNotification(title, body) { this._notification?.destroy(); const source = MessageTray.getSystemSource(); this._notification = new MessageTray.Notification({ source, title, body, isTransient: true, iconName: 'media-removable-symbolic', }); this._notification.connect('destroy', () => delete this._notification); source.addNotification(this._notification); } _showUnmountNotificationDone(message) { if (message) this._createNotification(message, null); } _showUnmountNotification(message) { const [title, body] = message.split('\n', 2); if (!this._notification) this._createNotification(title, body); else this._notification.set({title, body}); } } const ShellMountQuestionDialog = GObject.registerClass({ Signals: {'response': {param_types: [GObject.TYPE_INT]}}, }, class ShellMountQuestionDialog extends ModalDialog.ModalDialog { _init() { super._init({styleClass: 'mount-question-dialog'}); this._oldChoices = []; this._content = new Dialog.MessageDialogContent(); this.contentLayout.add_child(this._content); } vfunc_key_release_event(event) { if (event.get_key_symbol() === Clutter.KEY_Escape) { this.emit('response', -1); return Clutter.EVENT_STOP; } return Clutter.EVENT_PROPAGATE; } update(message, choices) { _setLabelsForMessage(this._content, message); _setButtonsForChoices(this, this._oldChoices, choices); this._oldChoices = choices; } }); const ShellMountPasswordDialog = GObject.registerClass({ Signals: { 'response': { param_types: [ GObject.TYPE_INT, GObject.TYPE_STRING, GObject.TYPE_BOOLEAN, GObject.TYPE_BOOLEAN, GObject.TYPE_BOOLEAN, GObject.TYPE_UINT, ], }, }, }, class ShellMountPasswordDialog extends ModalDialog.ModalDialog { _init(message, flags) { let strings = message.split('\n'); let title = strings.shift() || null; let description = strings.shift() || null; super._init({styleClass: 'prompt-dialog'}); let disksApp = Shell.AppSystem.get_default().lookup_app('org.gnome.DiskUtility.desktop'); let content = new Dialog.MessageDialogContent({title, description}); let passwordGridLayout = new Clutter.GridLayout({orientation: Clutter.Orientation.VERTICAL}); let passwordGrid = new St.Widget({ style_class: 'prompt-dialog-password-grid', layout_manager: passwordGridLayout, }); passwordGridLayout.hookup_style(passwordGrid); let rtl = passwordGrid.get_text_direction() === Clutter.TextDirection.RTL; let curGridRow = 0; if (flags & Gio.AskPasswordFlags.TCRYPT) { this._hiddenVolume = new CheckBox.CheckBox(_('Hidden Volume')); content.add_child(this._hiddenVolume); this._systemVolume = new CheckBox.CheckBox(_('Windows System Volume')); content.add_child(this._systemVolume); this._keyfilesCheckbox = new CheckBox.CheckBox(_('Uses Keyfiles')); this._keyfilesCheckbox.connect('clicked', this._onKeyfilesCheckboxClicked.bind(this)); content.add_child(this._keyfilesCheckbox); this._keyfilesLabel = new St.Label({visible: false}); if (disksApp) { this._keyfilesLabel.clutter_text.set_markup( /* Translators: %s is the Disks application */ _('To unlock a volume that uses keyfiles, use the %s utility instead') .format(disksApp.get_name())); } else { this._keyfilesLabel.clutter_text.set_markup( _('You need an external utility like Disks to unlock a volume that uses keyfiles')); } this._keyfilesLabel.clutter_text.ellipsize = Pango.EllipsizeMode.NONE; this._keyfilesLabel.clutter_text.line_wrap = true; content.add_child(this._keyfilesLabel); this._pimEntry = new St.PasswordEntry({ style_class: 'prompt-dialog-password-entry', hint_text: _('PIM Number'), can_focus: true, x_expand: true, }); this._pimEntry.clutter_text.connect('activate', this._onEntryActivate.bind(this)); ShellEntry.addContextMenu(this._pimEntry); if (rtl) passwordGridLayout.attach(this._pimEntry, 1, curGridRow, 1, 1); else passwordGridLayout.attach(this._pimEntry, 0, curGridRow, 1, 1); curGridRow += 1; } else { this._hiddenVolume = null; this._systemVolume = null; this._pimEntry = null; } this._passwordEntry = new St.PasswordEntry({ style_class: 'prompt-dialog-password-entry', hint_text: _('Password'), can_focus: true, x_expand: true, }); this._passwordEntry.clutter_text.connect('activate', this._onEntryActivate.bind(this)); this.setInitialKeyFocus(this._passwordEntry); ShellEntry.addContextMenu(this._passwordEntry); this._workSpinner = new Animation.Spinner(WORK_SPINNER_ICON_SIZE, { animate: true, }); if (rtl) { passwordGridLayout.attach(this._workSpinner, 0, curGridRow, 1, 1); passwordGridLayout.attach(this._passwordEntry, 1, curGridRow, 1, 1); } else { passwordGridLayout.attach(this._passwordEntry, 0, curGridRow, 1, 1); passwordGridLayout.attach(this._workSpinner, 1, curGridRow, 1, 1); } curGridRow += 1; let warningBox = new St.BoxLayout({vertical: true}); let capsLockWarning = new ShellEntry.CapsLockWarning(); warningBox.add_child(capsLockWarning); this._errorMessageLabel = new St.Label({ style_class: 'prompt-dialog-error-label', opacity: 0, }); this._errorMessageLabel.clutter_text.ellipsize = Pango.EllipsizeMode.NONE; this._errorMessageLabel.clutter_text.line_wrap = true; warningBox.add_child(this._errorMessageLabel); passwordGridLayout.attach(warningBox, 0, curGridRow, 2, 1); content.add_child(passwordGrid); if (flags & Gio.AskPasswordFlags.SAVING_SUPPORTED) { this._rememberChoice = new CheckBox.CheckBox(_('Remember Password')); this._rememberChoice.checked = global.settings.get_boolean(REMEMBER_MOUNT_PASSWORD_KEY); content.add_child(this._rememberChoice); } else { this._rememberChoice = null; } this.contentLayout.add_child(content); this._defaultButtons = [{ label: _('Cancel'), action: this._onCancelButton.bind(this), key: Clutter.KEY_Escape, }, { label: _('Unlock'), action: this._onUnlockButton.bind(this), default: true, }]; this._usesKeyfilesButtons = [{ label: _('Cancel'), action: this._onCancelButton.bind(this), key: Clutter.KEY_Escape, }]; if (disksApp) { this._usesKeyfilesButtons.push({ /* Translators: %s is the Disks application */ label: _('Open %s').format(disksApp.get_name()), action: () => { disksApp.activate(); this._onCancelButton(); }, default: true, }); } this.setButtons(this._defaultButtons); } reaskPassword() { this._workSpinner.stop(); this._passwordEntry.set_text(''); this._errorMessageLabel.text = _('Sorry, that didn’t work. Please try again.'); this._errorMessageLabel.opacity = 255; wiggle(this._passwordEntry); } _onCancelButton() { this.emit('response', -1, '', false, false, false, 0); } _onUnlockButton() { this._onEntryActivate(); } _onEntryActivate() { let pim = 0; if (this._pimEntry !== null) { pim = this._pimEntry.get_text(); if (isNaN(pim)) { this._pimEntry.set_text(''); this._errorMessageLabel.text = _('The PIM must be a number or empty'); this._errorMessageLabel.opacity = 255; return; } this._errorMessageLabel.opacity = 0; } global.settings.set_boolean(REMEMBER_MOUNT_PASSWORD_KEY, this._rememberChoice && this._rememberChoice.checked); this._workSpinner.play(); this.emit('response', 1, this._passwordEntry.get_text(), this._rememberChoice && this._rememberChoice.checked, this._hiddenVolume && this._hiddenVolume.checked, this._systemVolume && this._systemVolume.checked, parseInt(pim)); } _onKeyfilesCheckboxClicked() { let useKeyfiles = this._keyfilesCheckbox.checked; this._passwordEntry.reactive = !useKeyfiles; this._passwordEntry.can_focus = !useKeyfiles; this._pimEntry.reactive = !useKeyfiles; this._pimEntry.can_focus = !useKeyfiles; this._rememberChoice.reactive = !useKeyfiles; this._rememberChoice.can_focus = !useKeyfiles; this._keyfilesLabel.visible = useKeyfiles; this.setButtons(useKeyfiles ? this._usesKeyfilesButtons : this._defaultButtons); } }); const ShellProcessesDialog = GObject.registerClass({ Signals: {'response': {param_types: [GObject.TYPE_INT]}}, }, class ShellProcessesDialog extends ModalDialog.ModalDialog { _init() { super._init({styleClass: 'processes-dialog'}); this._oldChoices = []; this._content = new Dialog.MessageDialogContent(); this.contentLayout.add_child(this._content); this._applicationSection = new Dialog.ListSection(); this._applicationSection.hide(); this.contentLayout.add_child(this._applicationSection); } vfunc_key_release_event(event) { if (event.get_key_symbol() === Clutter.KEY_Escape) { this.emit('response', -1); return Clutter.EVENT_STOP; } return Clutter.EVENT_PROPAGATE; } _setAppsForPids(pids) { // remove all the items this._applicationSection.list.destroy_all_children(); pids.forEach(pid => { let tracker = Shell.WindowTracker.get_default(); let app = tracker.get_app_from_pid(pid); if (!app) return; let listItem = new Dialog.ListSectionItem({ icon_actor: app.create_icon_texture(LIST_ITEM_ICON_SIZE), title: app.get_name(), }); this._applicationSection.list.add_child(listItem); }); this._applicationSection.visible = this._applicationSection.list.get_n_children() > 0; } update(message, processes, choices) { this._setAppsForPids(processes); _setLabelsForMessage(this._content, message); _setButtonsForChoices(this, this._oldChoices, choices); this._oldChoices = choices; } }); const GnomeShellMountOpIface = loadInterfaceXML('org.Gtk.MountOperationHandler'); /** @enum {number} */ const ShellMountOperationType = { NONE: 0, ASK_PASSWORD: 1, ASK_QUESTION: 2, SHOW_PROCESSES: 3, }; export class GnomeShellMountOpHandler { constructor() { this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(GnomeShellMountOpIface, this); this._dbusImpl.export(Gio.DBus.session, '/org/gtk/MountOperationHandler'); Gio.bus_own_name_on_connection(Gio.DBus.session, 'org.gtk.MountOperationHandler', Gio.BusNameOwnerFlags.REPLACE, null, null); this._dialog = null; this._ensureEmptyRequest(); } _ensureEmptyRequest() { this._currentId = null; this._currentInvocation = null; this._currentType = ShellMountOperationType.NONE; } _clearCurrentRequest(response, details) { if (this._currentInvocation) { this._currentInvocation.return_value( GLib.Variant.new('(ua{sv})', [response, details])); } this._ensureEmptyRequest(); } _setCurrentRequest(invocation, id, type) { let oldId = this._currentId; let oldType = this._currentType; let requestId = `${id}@${invocation.get_sender()}`; this._clearCurrentRequest(Gio.MountOperationResult.UNHANDLED, {}); this._currentInvocation = invocation; this._currentId = requestId; this._currentType = type; if (this._dialog && (oldId === requestId) && (oldType === type)) return true; return false; } _closeDialog() { if (this._dialog) { this._dialog.close(); this._dialog = null; } } /** * The dialog will stay visible until clients call the Close() method, or * another dialog becomes visible. * Calling AskPassword again for the same id will have the effect to clear * the existing dialog and update it with a message indicating the previous * attempt went wrong. * * @param {Array} params * {string} id: an opaque ID identifying the object for which * the operation is requested * {string} message: the message to display * {string} icon_name: the name of an icon to display * {string} default_user: the default username for display * {string} default_domain: the default domain for display * {Gio.AskPasswordFlags} flags: a set of GAskPasswordFlags * {Gio.MountOperationResults} response: a GMountOperationResult * {Object} response_details: a dictionary containing response details as * entered by the user. The dictionary MAY contain the following * properties: * - "password" -> (s): a password to be used to complete the mount operation * - "password_save" -> (u): a GPasswordSave * @param {Gio.DBusMethodInvocation} invocation * The ID must be unique in the context of the calling process. */ AskPasswordAsync(params, invocation) { let [id, message, iconName_, defaultUser_, defaultDomain_, flags] = params; if (this._setCurrentRequest(invocation, id, ShellMountOperationType.ASK_PASSWORD)) { this._dialog.reaskPassword(); return; } this._closeDialog(); this._dialog = new ShellMountPasswordDialog(message, flags); this._dialog.connect('response', (object, choice, password, remember, hiddenVolume, systemVolume, pim) => { let details = {}; let response; if (choice === -1) { response = Gio.MountOperationResult.ABORTED; } else { response = Gio.MountOperationResult.HANDLED; let passSave = remember ? Gio.PasswordSave.PERMANENTLY : Gio.PasswordSave.NEVER; details['password_save'] = GLib.Variant.new('u', passSave); details['password'] = GLib.Variant.new('s', password); details['hidden_volume'] = GLib.Variant.new('b', hiddenVolume); details['system_volume'] = GLib.Variant.new('b', systemVolume); details['pim'] = GLib.Variant.new('u', pim); } this._clearCurrentRequest(response, details); }); this._dialog.open(); } /** * The dialog will stay visible until clients call the Close() method, or * another dialog becomes visible. * Calling AskQuestion again for the same id will have the effect to clear * update the dialog with the new question. * * @param {Array} params - params * {string} id: an opaque ID identifying the object for which * the operation is requested * The ID must be unique in the context of the calling process. * {string} message: the message to display * {string} icon_name: the name of an icon to display * {string[]} choices: an array of choice strings * @param {Gio.DBusMethodInvocation} invocation - invocation */ AskQuestionAsync(params, invocation) { let [id, message, iconName_, choices] = params; if (this._setCurrentRequest(invocation, id, ShellMountOperationType.ASK_QUESTION)) { this._dialog.update(message, choices); return; } this._closeDialog(); this._dialog = new ShellMountQuestionDialog(message); this._dialog.connect('response', (object, choice) => { let response; let details = {}; if (choice === -1) { response = Gio.MountOperationResult.ABORTED; } else { response = Gio.MountOperationResult.HANDLED; details['choice'] = GLib.Variant.new('i', choice); } this._clearCurrentRequest(response, details); }); this._dialog.update(message, choices); this._dialog.open(); } /** * The dialog will stay visible until clients call the Close() method, or * another dialog becomes visible. * Calling ShowProcesses again for the same id will have the effect to clear * the existing dialog and update it with the new message and the new list * of processes. * * @param {Array} params - params * {string} id: an opaque ID identifying the object for which * the operation is requested * The ID must be unique in the context of the calling process. * {string} message: the message to display * {string} icon_name: the name of an icon to display * {number[]} application_pids: the PIDs of the applications to display * {string[]} choices: an array of choice strings * @param {Gio.DBusMethodInvocation} invocation - invocation */ ShowProcessesAsync(params, invocation) { let [id, message, iconName_, applicationPids, choices] = params; if (this._setCurrentRequest(invocation, id, ShellMountOperationType.SHOW_PROCESSES)) { this._dialog.update(message, applicationPids, choices); return; } this._closeDialog(); this._dialog = new ShellProcessesDialog(); this._dialog.connect('response', (object, choice) => { let response; let details = {}; if (choice === -1) { response = Gio.MountOperationResult.ABORTED; } else { response = Gio.MountOperationResult.HANDLED; details['choice'] = GLib.Variant.new('i', choice); } this._clearCurrentRequest(response, details); }); this._dialog.update(message, applicationPids, choices); this._dialog.open(); } /** * Closes a dialog previously opened by AskPassword, AskQuestion or ShowProcesses. * If no dialog is open, does nothing. * * @param {Array} _params - params * @param {Gio.DBusMethodInvocation} _invocation - invocation */ Close(_params, _invocation) { this._clearCurrentRequest(Gio.MountOperationResult.UNHANDLED, {}); this._closeDialog(); } } 070701000001E3000081A40000000000000000000000016712993F00001AD7000000000000000000000000000000000000002100000000gnome-shell-47.1/js/ui/slider.jsimport Atk from 'gi://Atk'; import Clutter from 'gi://Clutter'; import GObject from 'gi://GObject'; import * as BarLevel from './barLevel.js'; const SLIDER_SCROLL_STEP = 0.02; /* Slider scrolling step in % */ export const Slider = GObject.registerClass({ Signals: { 'drag-begin': {}, 'drag-end': {}, }, }, class Slider extends BarLevel.BarLevel { _init(value) { super._init({ value, style_class: 'slider', can_focus: true, reactive: true, track_hover: true, hover: false, accessible_role: Atk.Role.SLIDER, x_expand: true, }); this._releaseId = 0; this._dragging = false; this._handleRadius = 0; this._customAccessible.connect('get-minimum-increment', this._getMinimumIncrement.bind(this)); } vfunc_style_changed() { super.vfunc_style_changed(); const themeNode = this.get_theme_node(); this._handleRadius = themeNode.get_length('-slider-handle-radius'); } vfunc_repaint() { super.vfunc_repaint(); // Add handle let cr = this.get_context(); let themeNode = this.get_theme_node(); let [width, height] = this.get_surface_size(); const rtl = this.get_text_direction() === Clutter.TextDirection.RTL; const ceiledHandleRadius = Math.ceil(this._handleRadius); const handleY = height / 2; let handleX = ceiledHandleRadius + (width - 2 * ceiledHandleRadius) * this._value / this._maxValue; if (rtl) handleX = width - handleX; let color = themeNode.get_foreground_color(); cr.setSourceColor(color); cr.arc(handleX, handleY, this._handleRadius, 0, 2 * Math.PI); cr.fillPreserve(); cr.$dispose(); } _getPreferredHeight() { const barHeight = super._getPreferredHeight(); const handleHeight = 2 * this._handleRadius; return Math.max(barHeight, handleHeight); } _getPreferredWidth() { const barWidth = super._getPreferredWidth(); const handleWidth = 2 * this._handleRadius; return Math.max(barWidth, handleWidth); } vfunc_button_press_event(event) { return this.startDragging(event); } startDragging(event) { if (this._dragging) return Clutter.EVENT_PROPAGATE; this._dragging = true; let device = event.get_device(); let sequence = event.get_event_sequence(); this._grab = global.stage.grab(this); this._grabbedDevice = device; this._grabbedSequence = sequence; // We need to emit 'drag-begin' before moving the handle to make // sure that no 'notify::value' signal is emitted before this one. this.emit('drag-begin'); let absX, absY; [absX, absY] = event.get_coords(); this._moveHandle(absX, absY); return Clutter.EVENT_STOP; } _endDragging() { if (this._dragging) { if (this._releaseId) { this.disconnect(this._releaseId); this._releaseId = 0; } if (this._grab) { this._grab.dismiss(); this._grab = null; } this._grabbedSequence = null; this._grabbedDevice = null; this._dragging = false; this.emit('drag-end'); } return Clutter.EVENT_STOP; } vfunc_button_release_event() { if (this._dragging && !this._grabbedSequence) return this._endDragging(); return Clutter.EVENT_PROPAGATE; } vfunc_touch_event(event) { let sequence = event.get_event_sequence(); if (!this._dragging && event.type() === Clutter.EventType.TOUCH_BEGIN) { this.startDragging(event); return Clutter.EVENT_STOP; } else if (this._grabbedSequence && sequence.get_slot() === this._grabbedSequence.get_slot()) { if (event.type() === Clutter.EventType.TOUCH_UPDATE) return this._motionEvent(this, event); else if (event.type() === Clutter.EventType.TOUCH_END) return this._endDragging(); } return Clutter.EVENT_PROPAGATE; } scroll(event) { let direction = event.get_scroll_direction(); let delta = 0; if (event.get_flags() & Clutter.EventFlags.FLAG_POINTER_EMULATED) return Clutter.EVENT_PROPAGATE; if (direction === Clutter.ScrollDirection.DOWN) { delta = -SLIDER_SCROLL_STEP; } else if (direction === Clutter.ScrollDirection.UP) { delta = SLIDER_SCROLL_STEP; } else if (direction === Clutter.ScrollDirection.SMOOTH) { let [, dy] = event.get_scroll_delta(); // Even though the slider is horizontal, use dy to match // the UP/DOWN above. delta = -dy * SLIDER_SCROLL_STEP; } this.value = Math.min(Math.max(0, this._value + delta), this._maxValue); return Clutter.EVENT_STOP; } vfunc_scroll_event(event) { return this.scroll(event); } vfunc_motion_event(event) { if (this._dragging && !this._grabbedSequence) return this._motionEvent(this, event); return Clutter.EVENT_PROPAGATE; } _motionEvent(actor, event) { let absX, absY; [absX, absY] = event.get_coords(); this._moveHandle(absX, absY); return Clutter.EVENT_STOP; } vfunc_key_press_event(event) { let key = event.get_key_symbol(); if (key === Clutter.KEY_Right || key === Clutter.KEY_Left) { const rtl = this.get_text_direction() === Clutter.TextDirection.RTL; const increaseKey = rtl ? Clutter.KEY_Left : Clutter.KEY_Right; const delta = key === increaseKey ? 0.1 : -0.1; this.value = Math.max(0, Math.min(this._value + delta, this._maxValue)); return Clutter.EVENT_STOP; } return super.vfunc_key_press_event(event); } _moveHandle(absX, _absY) { let relX, sliderX; [sliderX] = this.get_transformed_position(); const rtl = this.get_text_direction() === Clutter.TextDirection.RTL; let width = this._barLevelWidth; relX = absX - sliderX; if (rtl) relX = width - relX; let newvalue; if (relX < this._handleRadius) newvalue = 0; else if (relX > width - this._handleRadius) newvalue = 1; else newvalue = (relX - this._handleRadius) / (width - 2 * this._handleRadius); this.value = newvalue * this._maxValue; } _getMinimumIncrement() { return 0.1; } }); 070701000001E4000041ED0000000000000000000000026712993F00000000000000000000000000000000000000000000001E00000000gnome-shell-47.1/js/ui/status070701000001E5000081A40000000000000000000000016712993F00001709000000000000000000000000000000000000002F00000000gnome-shell-47.1/js/ui/status/accessibility.jsimport Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import St from 'gi://St'; import * as PanelMenu from '../panelMenu.js'; import * as PopupMenu from '../popupMenu.js'; const A11Y_SCHEMA = 'org.gnome.desktop.a11y'; const KEY_ALWAYS_SHOW = 'always-show-universal-access-status'; const A11Y_KEYBOARD_SCHEMA = 'org.gnome.desktop.a11y.keyboard'; const KEY_STICKY_KEYS_ENABLED = 'stickykeys-enable'; const KEY_BOUNCE_KEYS_ENABLED = 'bouncekeys-enable'; const KEY_SLOW_KEYS_ENABLED = 'slowkeys-enable'; const KEY_MOUSE_KEYS_ENABLED = 'mousekeys-enable'; const APPLICATIONS_SCHEMA = 'org.gnome.desktop.a11y.applications'; const DPI_FACTOR_LARGE = 1.25; const WM_SCHEMA = 'org.gnome.desktop.wm.preferences'; const KEY_VISUAL_BELL = 'visual-bell'; const DESKTOP_INTERFACE_SCHEMA = 'org.gnome.desktop.interface'; const KEY_TEXT_SCALING_FACTOR = 'text-scaling-factor'; const A11Y_INTERFACE_SCHEMA = 'org.gnome.desktop.a11y.interface'; const KEY_HIGH_CONTRAST = 'high-contrast'; export const ATIndicator = GObject.registerClass( class ATIndicator extends PanelMenu.Button { _init() { super._init(0.5, _('Accessibility')); this.add_child(new St.Icon({ style_class: 'system-status-icon', icon_name: 'org.gnome.Settings-accessibility-symbolic', })); this._a11ySettings = new Gio.Settings({schema_id: A11Y_SCHEMA}); this._a11ySettings.connect(`changed::${KEY_ALWAYS_SHOW}`, this._queueSyncMenuVisibility.bind(this)); let highContrast = this._buildItem(_('High Contrast'), A11Y_INTERFACE_SCHEMA, KEY_HIGH_CONTRAST); this.menu.addMenuItem(highContrast); const magnifier = this._buildItem(_('Zoom'), APPLICATIONS_SCHEMA, 'screen-magnifier-enabled'); this.menu.addMenuItem(magnifier); let textZoom = this._buildFontItem(); this.menu.addMenuItem(textZoom); const screenReader = this._buildItem(_('Screen Reader'), APPLICATIONS_SCHEMA, 'screen-reader-enabled'); this.menu.addMenuItem(screenReader); const screenKeyboard = this._buildItem(_('Screen Keyboard'), APPLICATIONS_SCHEMA, 'screen-keyboard-enabled'); this.menu.addMenuItem(screenKeyboard); const visualBell = this._buildItem(_('Visual Alerts'), WM_SCHEMA, KEY_VISUAL_BELL); this.menu.addMenuItem(visualBell); const stickyKeys = this._buildItem(_('Sticky Keys'), A11Y_KEYBOARD_SCHEMA, KEY_STICKY_KEYS_ENABLED); this.menu.addMenuItem(stickyKeys); const slowKeys = this._buildItem(_('Slow Keys'), A11Y_KEYBOARD_SCHEMA, KEY_SLOW_KEYS_ENABLED); this.menu.addMenuItem(slowKeys); const bounceKeys = this._buildItem(_('Bounce Keys'), A11Y_KEYBOARD_SCHEMA, KEY_BOUNCE_KEYS_ENABLED); this.menu.addMenuItem(bounceKeys); const mouseKeys = this._buildItem(_('Mouse Keys'), A11Y_KEYBOARD_SCHEMA, KEY_MOUSE_KEYS_ENABLED); this.menu.addMenuItem(mouseKeys); this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); this.menu.addSettingsAction(_('Accessibility Settings'), 'gnome-universal-access-panel.desktop'); this._syncMenuVisibility(); } _syncMenuVisibility() { this._syncMenuVisibilityIdle = 0; let alwaysShow = this._a11ySettings.get_boolean(KEY_ALWAYS_SHOW); let items = this.menu._getMenuItems(); this.visible = alwaysShow || items.some(f => !!f.state); return GLib.SOURCE_REMOVE; } _queueSyncMenuVisibility() { if (this._syncMenuVisibilityIdle) return; this._syncMenuVisibilityIdle = GLib.idle_add(GLib.PRIORITY_DEFAULT, this._syncMenuVisibility.bind(this)); GLib.Source.set_name_by_id(this._syncMenuVisibilityIdle, '[gnome-shell] this._syncMenuVisibility'); } _buildItemExtended(string, initialValue, writable, onSet) { let widget = new PopupMenu.PopupSwitchMenuItem(string, initialValue); if (!writable) { widget.reactive = false; } else { widget.connect('toggled', item => { onSet(item.state); }); } return widget; } _buildItem(string, schema, key) { let settings = new Gio.Settings({schema_id: schema}); let widget = this._buildItemExtended(string, settings.get_boolean(key), settings.is_writable(key), enabled => settings.set_boolean(key, enabled)); settings.connect(`changed::${key}`, () => { widget.setToggleState(settings.get_boolean(key)); this._queueSyncMenuVisibility(); }); return widget; } _buildFontItem() { let settings = new Gio.Settings({schema_id: DESKTOP_INTERFACE_SCHEMA}); let factor = settings.get_double(KEY_TEXT_SCALING_FACTOR); let initialSetting = factor > 1.0; let widget = this._buildItemExtended(_('Large Text'), initialSetting, settings.is_writable(KEY_TEXT_SCALING_FACTOR), enabled => { if (enabled) { settings.set_double( KEY_TEXT_SCALING_FACTOR, DPI_FACTOR_LARGE); } else { settings.reset(KEY_TEXT_SCALING_FACTOR); } }); settings.connect(`changed::${KEY_TEXT_SCALING_FACTOR}`, () => { factor = settings.get_double(KEY_TEXT_SCALING_FACTOR); let active = factor > 1.0; widget.setToggleState(active); this._queueSyncMenuVisibility(); }); return widget; } }); 070701000001E6000081A40000000000000000000000016712993F0000055F000000000000000000000000000000000000002C00000000gnome-shell-47.1/js/ui/status/autoRotate.jsimport Gio from 'gi://Gio'; import GObject from 'gi://GObject'; import * as SystemActions from '../../misc/systemActions.js'; import {QuickToggle, SystemIndicator} from '../quickSettings.js'; const RotationToggle = GObject.registerClass( class RotationToggle extends QuickToggle { _init() { this._systemActions = new SystemActions.getDefault(); super._init({ title: _('Auto Rotate'), }); this._systemActions.bind_property('can-lock-orientation', this, 'visible', GObject.BindingFlags.DEFAULT | GObject.BindingFlags.SYNC_CREATE); this._systemActions.bind_property('orientation-lock-icon', this, 'icon-name', GObject.BindingFlags.DEFAULT | GObject.BindingFlags.SYNC_CREATE); this._settings = new Gio.Settings({ schema_id: 'org.gnome.settings-daemon.peripherals.touchscreen', }); this._settings.bind('orientation-lock', this, 'checked', Gio.SettingsBindFlags.INVERT_BOOLEAN); this.connect('clicked', () => this._systemActions.activateLockOrientation()); } }); export const Indicator = GObject.registerClass( class Indicator extends SystemIndicator { _init() { super._init(); this.quickSettingsItems.push(new RotationToggle()); } }); 070701000001E7000081A40000000000000000000000016712993F000020F9000000000000000000000000000000000000003000000000gnome-shell-47.1/js/ui/status/backgroundApps.jsimport Clutter from 'gi://Clutter'; import Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import Shell from 'gi://Shell'; import St from 'gi://St'; import * as Main from '../main.js'; import * as PopupMenu from '../popupMenu.js'; import * as Util from '../../misc/util.js'; import {Spinner} from '../animation.js'; import {QuickToggle, SystemIndicator} from '../quickSettings.js'; import {loadInterfaceXML} from '../../misc/dbusUtils.js'; const DBUS_NAME = 'org.freedesktop.background.Monitor'; const DBUS_OBJECT_PATH = '/org/freedesktop/background/monitor'; const SPINNER_TIMEOUT = 5; // seconds const BackgroundMonitorIface = loadInterfaceXML('org.freedesktop.background.Monitor'); const BackgroundMonitorProxy = Gio.DBusProxy.makeProxyWrapper(BackgroundMonitorIface); Gio._promisify(Gio.DBusConnection.prototype, 'call'); const BackgroundAppMenuItem = GObject.registerClass({ Properties: { 'app': GObject.ParamSpec.object('app', null, null, GObject.ParamFlags.READWRITE, Shell.App), 'message': GObject.ParamSpec.string('message', null, null, GObject.ParamFlags.READWRITE, null), }, }, class BackgroundAppMenuItem extends PopupMenu.PopupImageMenuItem { _init(app, params = {}) { const message = params.message; delete params.message; super._init(app.get_name(), app.get_icon(), { ...params, }); this.set({message}); this.add_style_class_name('background-app-item'); this.label.add_style_class_name('title'); this.app = app; const box = new St.BoxLayout({ vertical: true, x_expand: true, x_align: Clutter.ActorAlign.START, y_align: Clutter.ActorAlign.CENTER, }); this.add_child(box); this.remove_child(this.label); box.add_child(this.label); const messageLabel = new St.Label({ y_expand: true, y_align: Clutter.ActorAlign.CENTER, style_class: 'subtitle', }); box.add_child(messageLabel); this.bind_property('message', messageLabel, 'text', GObject.BindingFlags.SYNC_CREATE); this.bind_property_full('message', messageLabel, 'visible', GObject.BindingFlags.SYNC_CREATE, (bind, source) => [true, source !== null], null); this.set_child_above_sibling(this._ornamentIcon, null); this._spinner = new Spinner(16, {hideOnStop: true}); this._spinner.add_style_class_name('spinner'); this.add_child(this._spinner); const closeButton = new St.Button({ iconName: 'window-close-symbolic', styleClass: 'icon-button', x_expand: true, y_expand: false, x_align: Clutter.ActorAlign.END, y_align: Clutter.ActorAlign.CENTER, }); this.add_child(closeButton); this._spinner.bind_property('visible', closeButton, 'visible', GObject.BindingFlags.INVERT_BOOLEAN); closeButton.connect('clicked', () => this._quitApp().catch(logError)); this.connect('activate', () => { Main.overview.hide(); Main.panel.closeQuickSettings(); this.app.activate(); }); this.connect('destroy', () => this._onDestroy()); } _onDestroy() { if (this._spinnerTimeoutId) GLib.source_remove(this._spinnerTimeoutId); delete this._spinnerTimeoutId; } async _quitApp() { this._spinner.play(); this._spinnerTimeoutId = GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, SPINNER_TIMEOUT, () => { // Assume the quit request has failed, stop the spinner this._spinner.stop(); delete this._spinnerTimeoutId; return GLib.SOURCE_REMOVE; }); try { await this.app.activate_action('quit', null, 0, -1, null); } catch (_error) { try { const appId = this.app.get_id().replace(/\.desktop$/, ''); Util.trySpawn(['flatpak', 'kill', appId]); } catch (pidError) { logError(pidError, 'Failed to kill application'); } } } }); const BackgroundAppsToggle = GObject.registerClass( class BackgroundAppsToggle extends QuickToggle { _init() { super._init({ visible: false, hasMenu: true, // The background apps toggle looks like a flat menu, but doesn't // have a separate menu button. Fake it with an arrow icon. iconName: 'go-next-symbolic', }); this.add_style_class_name('background-apps-quick-toggle'); this._box.set_child_above_sibling(this._icon, null); this._appSystem = Shell.AppSystem.get_default(); this.menu.setHeader( 'background-app-ghost-symbolic', C_('title', 'Background Apps')); new BackgroundMonitorProxy( Gio.DBus.session, DBUS_NAME, DBUS_OBJECT_PATH, proxy => { this._proxy = proxy; proxy?.connect('g-properties-changed', () => this._sync()); this._sync(); }, null, Gio.DBusProxyFlags.DO_NOT_AUTO_START); this._listTitle = new PopupMenu.PopupMenuItem( _('Apps known to be running without a window'), {reactive: false}); this._listTitle.label.clutter_text.set({ line_wrap: true, }); this.menu.addMenuItem(this._listTitle); this._appsSection = new PopupMenu.PopupMenuSection(); this.menu.addMenuItem(this._appsSection); this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); this.menu.addSettingsAction(_('App Settings'), 'gnome-applications-panel.desktop'); this.connect('popup-menu', () => this.menu.open()); this.menu.connect('open-state-changed', () => this._syncVisibility()); Main.sessionMode.connect('updated', () => this._syncVisibility()); } _syncVisibility() { const {isLocked} = Main.sessionMode; const nBackgroundApps = this._proxy?.BackgroundApps?.length; // We cannot hide the quick toggle while the menu is open, otherwise // the menu position goes bogus. We can't show it in locked sessions // either this.visible = !isLocked && (this.menu.isOpen || nBackgroundApps > 0); } _sync() { this._syncVisibility(); if (!this._proxy) return; const {BackgroundApps: backgroundApps} = this._proxy; this._appsSection.removeAll(); const items = new Map(); (backgroundApps ?? []) .map(backgroundApp => { const appId = backgroundApp.app_id.deepUnpack(); const app = this._appSystem.lookup_app(`${appId}.desktop`); const message = backgroundApp.message?.deepUnpack(); return {app, message}; }) .filter(item => !!item.app) .sort((a, b) => { return a.app.get_name().localeCompare(b.app.get_name()); }) .forEach(backgroundApp => { const {app, message} = backgroundApp; let item = items.get(app); if (!item) { item = new BackgroundAppMenuItem(app); items.set(app, item); this._appsSection.addMenuItem(item); } if (message) item.set({message}); }); const nBackgroundApps = items.size; this.title = nBackgroundApps === 0 ? _('No Background Apps') : ngettext( '%d Background App', '%d Background Apps', nBackgroundApps).format(nBackgroundApps); this._listTitle.visible = nBackgroundApps > 0; } vfunc_clicked() { this.menu.open(); } }); export const Indicator = GObject.registerClass( class Indicator extends SystemIndicator { _init() { super._init(); this.quickSettingsItems.push(new BackgroundAppsToggle()); } }); 070701000001E8000081A40000000000000000000000016712993F00001AFB000000000000000000000000000000000000002B00000000gnome-shell-47.1/js/ui/status/backlight.js/* exported Indicator */ import Clutter from 'gi://Clutter'; import Gio from 'gi://Gio'; import GObject from 'gi://GObject'; import St from 'gi://St'; import {QuickMenuToggle, SystemIndicator} from '../quickSettings.js'; import * as PopupMenu from '../popupMenu.js'; import {Slider} from '../slider.js'; import {loadInterfaceXML} from '../../misc/fileUtils.js'; const BUS_NAME = 'org.gnome.SettingsDaemon.Power'; const OBJECT_PATH = '/org/gnome/SettingsDaemon/Power'; const BrightnessInterface = loadInterfaceXML('org.gnome.SettingsDaemon.Power.Keyboard'); const BrightnessProxy = Gio.DBusProxy.makeProxyWrapper(BrightnessInterface); const SliderItem = GObject.registerClass({ Properties: { 'value': GObject.ParamSpec.int( 'value', null, null, GObject.ParamFlags.READWRITE, 0, 100, 0), }, }, class SliderItem extends PopupMenu.PopupBaseMenuItem { constructor() { super({ activate: false, style_class: 'keyboard-brightness-item', }); this._slider = new Slider(0); this._sliderChangedId = this._slider.connect('notify::value', () => this.notify('value')); this._slider.accessible_name = _('Keyboard Brightness'); this.add_child(this._slider); } get value() { return this._slider.value * 100; } set value(value) { if (this.value === value) return; this._slider.block_signal_handler(this._sliderChangedId); this._slider.value = value / 100; this._slider.unblock_signal_handler(this._sliderChangedId); this.notify('value'); } }); const DiscreteItem = GObject.registerClass({ Properties: { 'value': GObject.ParamSpec.int( 'value', null, null, GObject.ParamFlags.READWRITE, 0, 100, 0), 'n-levels': GObject.ParamSpec.int( 'n-levels', null, null, GObject.ParamFlags.READWRITE, 1, 3, 1), }, }, class DiscreteItem extends St.BoxLayout { constructor() { super({ style_class: 'popup-menu-item', reactive: true, }); this._levelButtons = new Map(); this._addLevelButton('off', _('Off'), 'keyboard-brightness-off-symbolic'); this._addLevelButton('low', _('Low'), 'keyboard-brightness-medium-symbolic'); this._addLevelButton('high', _('High'), 'keyboard-brightness-high-symbolic'); this.connect('notify::n-levels', () => this._syncLevels()); this.connect('notify::value', () => this._syncChecked()); this._syncLevels(); } _valueToLevel(value) { const checkedIndex = Math.round(value * (this.nLevels - 1) / 100); if (checkedIndex === this.nLevels - 1) return 'high'; return [...this._levelButtons.keys()].at(checkedIndex); } _levelToValue(level) { const keyIndex = [...this._levelButtons.keys()].indexOf(level); return 100 * Math.min(keyIndex, this.nLevels - 1) / (this.nLevels - 1); } _addLevelButton(key, label, iconName) { const box = new St.BoxLayout({ style_class: 'keyboard-brightness-level', vertical: true, x_expand: true, }); box.button = new St.Button({ styleClass: 'icon-button', canFocus: true, iconName, }); box.add_child(box.button); box.button.connect('clicked', () => { this.value = this._levelToValue(key); }); box.add_child(new St.Label({ text: label, x_align: Clutter.ActorAlign.CENTER, })); this.add_child(box); this._levelButtons.set(key, box); } _syncLevels() { this._levelButtons.get('off').visible = this.nLevels > 0; this._levelButtons.get('high').visible = this.nLevels > 1; this._levelButtons.get('low').visible = this.nLevels > 2; this._syncChecked(); } _syncChecked() { const checkedKey = this._valueToLevel(this.value); this._levelButtons.forEach((b, k) => { b.button.checked = k === checkedKey; }); } }); const KeyboardBrightnessToggle = GObject.registerClass( class KeyboardBrightnessToggle extends QuickMenuToggle { _init() { super._init({ title: _('Keyboard'), iconName: 'display-brightness-symbolic', }); this._proxy = new BrightnessProxy(Gio.DBus.session, BUS_NAME, OBJECT_PATH, (proxy, error) => { if (error) console.error(error.message); else this._proxy.connect('g-properties-changed', () => this._sync()); this._sync(); }); this.connect('clicked', () => { this._proxy.Brightness = this.checked ? 0 : 100; }); this._sliderItem = new SliderItem(); this.menu.box.add_child(this._sliderItem); this._discreteItem = new DiscreteItem(); this.menu.box.add_child(this._discreteItem); this._sliderItem.bind_property('visible', this._discreteItem, 'visible', GObject.BindingFlags.INVERT_BOOLEAN | GObject.BindingFlags.SYNC_CREATE); this._sliderItem.bind_property('value', this._discreteItem, 'value', GObject.BindingFlags.SYNC_CREATE); this._sliderItemChangedId = this._sliderItem.connect('notify::value', () => { if (this._sliderItem.visible) this._proxy.Brightness = this._sliderItem.value; }); this._discreteItemChangedId = this._discreteItem.connect('notify::value', () => { if (this._discreteItem.visible) this._proxy.Brightness = this._discreteItem.value; }); } _sync() { const brightness = this._proxy.Brightness; const visible = Number.isInteger(brightness) && brightness >= 0; this.visible = visible; if (!visible) return; this.checked = brightness > 0; const useSlider = this._proxy.Steps >= 4; this._sliderItem.block_signal_handler(this._sliderItemChangedId); this._discreteItem.block_signal_handler(this._discreteItemChangedId); this._sliderItem.set({ visible: useSlider, value: brightness, }); if (!useSlider) this._discreteItem.nLevels = this._proxy.Steps; this._sliderItem.unblock_signal_handler(this._sliderItemChangedId); this._discreteItem.unblock_signal_handler(this._discreteItemChangedId); } }); export const Indicator = GObject.registerClass( class Indicator extends SystemIndicator { _init() { super._init(); this.quickSettingsItems.push(new KeyboardBrightnessToggle()); } }); 070701000001E9000081A40000000000000000000000016712993F00003B45000000000000000000000000000000000000002B00000000gnome-shell-47.1/js/ui/status/bluetooth.jsimport 'gi://GnomeBluetooth?version=3.0'; import Atk from 'gi://Atk'; import Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import GnomeBluetooth from 'gi://GnomeBluetooth'; import GObject from 'gi://GObject'; import Pango from 'gi://Pango'; import St from 'gi://St'; import {Spinner} from '../animation.js'; import * as PopupMenu from '../popupMenu.js'; import {QuickMenuToggle, SystemIndicator} from '../quickSettings.js'; import {loadInterfaceXML} from '../../misc/fileUtils.js'; const {AdapterState} = GnomeBluetooth; const BUS_NAME = 'org.gnome.SettingsDaemon.Rfkill'; const OBJECT_PATH = '/org/gnome/SettingsDaemon/Rfkill'; const RfkillManagerInterface = loadInterfaceXML('org.gnome.SettingsDaemon.Rfkill'); const rfkillManagerInfo = Gio.DBusInterfaceInfo.new_for_xml(RfkillManagerInterface); Gio._promisify(GnomeBluetooth.Client.prototype, 'connect_service'); const STATE_CHANGE_FAILED_TIMEOUT_MS = 30 * 1000; const BtClient = GObject.registerClass({ Properties: { 'available': GObject.ParamSpec.boolean('available', null, null, GObject.ParamFlags.READABLE, false), 'active': GObject.ParamSpec.boolean('active', null, null, GObject.ParamFlags.READABLE, false), 'adapter-state': GObject.ParamSpec.enum('adapter-state', null, null, GObject.ParamFlags.READABLE, AdapterState, AdapterState.ABSENT), }, Signals: { 'devices-changed': {}, 'device-removed': {param_types: [GObject.TYPE_STRING]}, }, }, class BtClient extends GObject.Object { _init() { super._init(); this._client = new GnomeBluetooth.Client(); this._client.connect('notify::default-adapter-powered', () => { this.notify('active'); }); this._client.connect('notify::default-adapter-state', () => { delete this._predictedState; this.notify('adapter-state'); }); this._client.connect('notify::default-adapter', () => { const newAdapter = this._client.default_adapter ?? null; this._adapter = newAdapter; this._deviceNotifyConnected.clear(); this.emit('devices-changed'); this.notify('active'); }); this._proxy = new Gio.DBusProxy({ g_connection: Gio.DBus.session, g_name: BUS_NAME, g_object_path: OBJECT_PATH, g_interface_name: rfkillManagerInfo.name, g_interface_info: rfkillManagerInfo, }); this._proxy.connect('g-properties-changed', (p, properties) => { const changedProperties = properties.unpack(); if ('BluetoothHardwareAirplaneMode' in changedProperties) this.notify('available'); else if ('BluetoothHasAirplaneMode' in changedProperties) this.notify('available'); }); this._proxy.init_async(GLib.PRIORITY_DEFAULT, null) .catch(e => console.error(e.message)); this._adapter = null; this._deviceNotifyConnected = new Set(); const deviceStore = this._client.get_devices(); for (let i = 0; i < deviceStore.get_n_items(); i++) this._connectDeviceNotify(deviceStore.get_item(i)); this._client.connect('device-removed', (c, path) => { this._deviceNotifyConnected.delete(path); this.emit('device-removed', path); this.emit('devices-changed'); }); this._client.connect('device-added', (c, device) => { this._connectDeviceNotify(device); this.emit('devices-changed'); }); } get available() { // If we have an rfkill switch, make sure it's not a hardware // one as we can't get out of it in software return this._proxy.BluetoothHasAirplaneMode && !this._proxy.BluetoothHardwareAirplaneMode; } get active() { return this._client.default_adapter_powered; } get adapter_state() { if (this._predictedState !== undefined) return this._predictedState; return this._client.default_adapter_state; } toggleActive() { const {active} = this; // on many systems, there's a significant delay until the rfkill // state results in an adapter state change; work around that by // overriding the current state with the expected transition this._predictedState = active ? AdapterState.TURNING_OFF : AdapterState.TURNING_ON; this.notify('adapter-state'); // toggling the state *really* should result in an adapter-state // change eventually (even on error), but just to be sure to not // be stuck with the overriden state, force a notify signal after // a timeout setTimeout(() => this._client.notify('default-adapter-state'), STATE_CHANGE_FAILED_TIMEOUT_MS); this._proxy.BluetoothAirplaneMode = active; if (!this._client.default_adapter_powered) this._client.default_adapter_powered = true; } async toggleDevice(device) { const connect = !device.connected; console.debug(`${connect ? 'Connect' : 'Disconnect'} device "${device.name}"`); try { await this._client.connect_service( device.get_object_path(), connect, null); console.debug(`Device "${device.name}" ${ connect ? 'connected' : 'disconnected'}`); } catch (e) { console.error(`Failed to ${connect ? 'connect' : 'disconnect'} device "${device.name}": ${e.message}`); } } *getDevices() { // Ignore any lingering device references when turned off if (!this.active) return; const deviceStore = this._client.get_devices(); for (let i = 0; i < deviceStore.get_n_items(); i++) { const device = deviceStore.get_item(i); if (device.paired || device.trusted) yield device; } } _queueDevicesChanged() { if (this._devicesChangedId) return; this._devicesChangedId = GLib.idle_add(GLib.PRIORITY_DEFAULT, () => { delete this._devicesChangedId; this.emit('devices-changed'); return GLib.SOURCE_REMOVE; }); } _connectDeviceNotify(device) { const path = device.get_object_path(); if (this._deviceNotifyConnected.has(path)) return; device.connect('notify::alias', () => this._queueDevicesChanged()); device.connect('notify::paired', () => this._queueDevicesChanged()); device.connect('notify::trusted', () => this._queueDevicesChanged()); device.connect('notify::connected', () => this._queueDevicesChanged()); this._deviceNotifyConnected.add(path); } }); const BluetoothDeviceItem = GObject.registerClass( class BluetoothDeviceItem extends PopupMenu.PopupBaseMenuItem { constructor(device, client) { super({ style_class: 'bt-device-item', }); this._device = device; this._client = client; this._icon = new St.Icon({ style_class: 'popup-menu-icon', }); this.add_child(this._icon); this._label = new St.Label({ x_expand: true, }); this.add_child(this._label); this._subtitle = new St.Label({ style_class: 'device-subtitle', }); this.add_child(this._subtitle); this._spinner = new Spinner(16, {hideOnStop: true}); this.add_child(this._spinner); this._spinner.bind_property('visible', this._subtitle, 'visible', GObject.BindingFlags.SYNC_CREATE | GObject.BindingFlags.INVERT_BOOLEAN); this._device.bind_property('connectable', this, 'visible', GObject.BindingFlags.SYNC_CREATE); this._device.bind_property('icon', this._icon, 'icon-name', GObject.BindingFlags.SYNC_CREATE); this._device.bind_property('alias', this._label, 'text', GObject.BindingFlags.SYNC_CREATE); this._device.bind_property_full('connected', this._subtitle, 'text', GObject.BindingFlags.SYNC_CREATE, (bind, source) => [true, source ? _('Disconnect') : _('Connect')], null); this.connect('destroy', () => (this._spinner = null)); this.connect('activate', () => this._toggleConnected().catch(logError)); } async _toggleConnected() { this._spinner.play(); await this._client.toggleDevice(this._device); this._spinner?.stop(); } }); const BluetoothToggle = GObject.registerClass( class BluetoothToggle extends QuickMenuToggle { _init(client) { super._init({title: _('Bluetooth')}); this.menu.setHeader('bluetooth-active-symbolic', _('Bluetooth')); this._deviceItems = new Map(); this._deviceSection = new PopupMenu.PopupMenuSection(); this.menu.addMenuItem(this._deviceSection); this._placeholderItem = new PopupMenu.PopupMenuItem('', { style_class: 'bt-menu-placeholder', reactive: false, can_focus: false, }); this._placeholderItem.label.clutter_text.set({ ellipsize: Pango.EllipsizeMode.NONE, line_wrap: true, }); this.menu.addMenuItem(this._placeholderItem); this._deviceSection.actor.bind_property('visible', this._placeholderItem, 'visible', GObject.BindingFlags.SYNC_CREATE | GObject.BindingFlags.INVERT_BOOLEAN); this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); this.menu.addSettingsAction(_('Bluetooth Settings'), 'gnome-bluetooth-panel.desktop'); this._client = client; this._client.bind_property('available', this, 'visible', GObject.BindingFlags.SYNC_CREATE); this._client.bind_property('active', this, 'checked', GObject.BindingFlags.SYNC_CREATE); this._client.bind_property_full('adapter-state', this, 'icon-name', GObject.BindingFlags.SYNC_CREATE, (bind, source) => [true, this._getIconNameFromState(source)], null); this._client.connectObject( 'notify::active', () => this._onActiveChanged(), 'devices-changed', () => this._sync(), 'device-removed', (c, path) => this._removeDevice(path), this); this.menu.connect('open-state-changed', isOpen => { // We don't reorder the list while the menu is open, // so do it now to start with the proper order if (isOpen) this._reorderDeviceItems(); }); this.connect('clicked', () => this._client.toggleActive()); this._updatePlaceholder(); this._sync(); } _onActiveChanged() { this._updatePlaceholder(); this._deviceItems.forEach(item => item.destroy()); this._deviceItems.clear(); this._sync(); } _updatePlaceholder() { this._placeholderItem.label.text = this._client.active ? _('No available or connected devices') : _('Turn on Bluetooth to connect to devices'); } _updatePlaceholderRelation() { const accel = this.get_accessible(); const placeholderAccel = this._placeholderItem.get_accessible(); if (this._deviceSection.actor.visible) accel.remove_relationship(Atk.RelationType.DESCRIBED_BY, placeholderAccel); else accel.add_relationship(Atk.RelationType.DESCRIBED_BY, placeholderAccel); } _updateDeviceVisibility() { this._deviceSection.actor.visible = [...this._deviceItems.values()].some(item => item.visible); this._updatePlaceholderRelation(); } _getSortedDevices() { return [...this._client.getDevices()].sort((dev1, dev2) => { if (dev1.connected !== dev2.connected) return dev2.connected - dev1.connected; return dev1.alias.localeCompare(dev2.alias); }); } _removeDevice(path) { this._deviceItems.get(path)?.destroy(); this._deviceItems.delete(path); this._updateDeviceVisibility(); } _reorderDeviceItems() { const devices = this._getSortedDevices(); for (const [i, dev] of devices.entries()) { const item = this._deviceItems.get(dev.get_object_path()); if (!item) continue; this._deviceSection.moveMenuItem(item, i); } } _sync() { const devices = this._getSortedDevices(); for (const dev of devices) { const path = dev.get_object_path(); if (this._deviceItems.has(path)) continue; const item = new BluetoothDeviceItem(dev, this._client); item.connect('notify::visible', () => this._updateDeviceVisibility()); this._deviceSection.addMenuItem(item); this._deviceItems.set(path, item); } const connectedDevices = devices.filter(dev => dev.connected); const nConnected = connectedDevices.length; if (nConnected > 1) /* Translators: This is the number of connected bluetooth devices */ this.subtitle = ngettext('%d Connected', '%d Connected', nConnected).format(nConnected); else if (nConnected === 1) this.subtitle = connectedDevices[0].alias; else this.subtitle = null; this._updateDeviceVisibility(); } _getIconNameFromState(state) { switch (state) { case AdapterState.ON: return 'bluetooth-active-symbolic'; case AdapterState.OFF: case AdapterState.ABSENT: return 'bluetooth-disabled-symbolic'; case AdapterState.TURNING_ON: case AdapterState.TURNING_OFF: return 'bluetooth-acquiring-symbolic'; default: console.warn(`Unexpected state ${ GObject.enum_to_string(AdapterState, state)}`); return ''; } } }); export const Indicator = GObject.registerClass( class Indicator extends SystemIndicator { _init() { super._init(); this._client = new BtClient(); this._client.connect('devices-changed', () => this._sync()); this._indicator = this._addIndicator(); this._indicator.icon_name = 'bluetooth-active-symbolic'; this.quickSettingsItems.push(new BluetoothToggle(this._client)); this._sync(); } _sync() { const devices = [...this._client.getDevices()]; const connectedDevices = devices.filter(dev => dev.connected); const nConnectedDevices = connectedDevices.length; this._indicator.visible = nConnectedDevices > 0; } }); 070701000001EA000081A40000000000000000000000016712993F000007A9000000000000000000000000000000000000002C00000000gnome-shell-47.1/js/ui/status/brightness.jsimport Gio from 'gi://Gio'; import GObject from 'gi://GObject'; import {QuickSlider, SystemIndicator} from '../quickSettings.js'; import {loadInterfaceXML} from '../../misc/fileUtils.js'; const BUS_NAME = 'org.gnome.SettingsDaemon.Power'; const OBJECT_PATH = '/org/gnome/SettingsDaemon/Power'; const BrightnessInterface = loadInterfaceXML('org.gnome.SettingsDaemon.Power.Screen'); const BrightnessProxy = Gio.DBusProxy.makeProxyWrapper(BrightnessInterface); const BrightnessItem = GObject.registerClass( class BrightnessItem extends QuickSlider { _init() { super._init({ iconName: 'display-brightness-symbolic', }); this._proxy = new BrightnessProxy(Gio.DBus.session, BUS_NAME, OBJECT_PATH, (proxy, error) => { if (error) console.error(error.message); else this._proxy.connect('g-properties-changed', () => this._sync()); this._sync(); }); this._sliderChangedId = this.slider.connect('notify::value', this._sliderChanged.bind(this)); this.slider.accessible_name = _('Brightness'); } _sliderChanged() { const percent = this.slider.value * 100; this._proxy.Brightness = percent; } _changeSlider(value) { this.slider.block_signal_handler(this._sliderChangedId); this.slider.value = value; this.slider.unblock_signal_handler(this._sliderChangedId); } _sync() { const brightness = this._proxy.Brightness; const visible = Number.isInteger(brightness) && brightness >= 0; this.visible = visible; if (visible) this._changeSlider(this._proxy.Brightness / 100.0); } }); export const Indicator = GObject.registerClass( class Indicator extends SystemIndicator { _init() { super._init(); this.quickSettingsItems.push(new BrightnessItem()); } }); 070701000001EB000081A40000000000000000000000016712993F00000274000000000000000000000000000000000000002800000000gnome-shell-47.1/js/ui/status/camera.jsimport GObject from 'gi://GObject'; import Shell from 'gi://Shell'; import {SystemIndicator} from '../quickSettings.js'; export const Indicator = GObject.registerClass( class Indicator extends SystemIndicator { constructor() { super(); this._indicator = this._addIndicator(); this._indicator.icon_name = 'camera-web-symbolic'; this._indicator.add_style_class_name('privacy-indicator'); this._cameraMonitor = new Shell.CameraMonitor(); this._cameraMonitor.bind_property('cameras-in-use', this._indicator, 'visible', GObject.BindingFlags.SYNC_CREATE); } }); 070701000001EC000081A40000000000000000000000016712993F00000570000000000000000000000000000000000000002A00000000gnome-shell-47.1/js/ui/status/darkMode.jsimport Gio from 'gi://Gio'; import GObject from 'gi://GObject'; import * as Main from '../main.js'; import {QuickToggle, SystemIndicator} from '../quickSettings.js'; const DarkModeToggle = GObject.registerClass( class DarkModeToggle extends QuickToggle { _init() { super._init({ title: _('Dark Style'), iconName: 'dark-mode-symbolic', }); this._settings = new Gio.Settings({ schema_id: 'org.gnome.desktop.interface', }); this._changedId = this._settings.connect('changed::color-scheme', () => this._sync()); this.connectObject( 'destroy', () => this._settings.run_dispose(), 'clicked', () => this._toggleMode(), this); this._sync(); } _toggleMode() { Main.layoutManager.screenTransition.run(); this._settings.set_string('color-scheme', this.checked ? 'default' : 'prefer-dark'); } _sync() { const colorScheme = this._settings.get_string('color-scheme'); const checked = colorScheme === 'prefer-dark'; if (this.checked !== checked) this.set({checked}); } }); export const Indicator = GObject.registerClass( class Indicator extends SystemIndicator { _init() { super._init(); this.quickSettingsItems.push(new DarkModeToggle()); } }); 070701000001ED000081A40000000000000000000000016712993F00000B8F000000000000000000000000000000000000002C00000000gnome-shell-47.1/js/ui/status/dwellClick.jsimport Clutter from 'gi://Clutter'; import Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import St from 'gi://St'; import * as PanelMenu from '../panelMenu.js'; const MOUSE_A11Y_SCHEMA = 'org.gnome.desktop.a11y.mouse'; const KEY_DWELL_CLICK_ENABLED = 'dwell-click-enabled'; const KEY_DWELL_MODE = 'dwell-mode'; const DWELL_MODE_WINDOW = 'window'; const DWELL_CLICK_MODES = { primary: { name: _('Single Click'), icon: 'pointer-primary-click-symbolic', type: Clutter.PointerA11yDwellClickType.PRIMARY, }, double: { name: _('Double Click'), icon: 'pointer-double-click-symbolic', type: Clutter.PointerA11yDwellClickType.DOUBLE, }, drag: { name: _('Drag'), icon: 'pointer-drag-symbolic', type: Clutter.PointerA11yDwellClickType.DRAG, }, secondary: { name: _('Secondary Click'), icon: 'pointer-secondary-click-symbolic', type: Clutter.PointerA11yDwellClickType.SECONDARY, }, }; export const DwellClickIndicator = GObject.registerClass( class DwellClickIndicator extends PanelMenu.Button { _init() { super._init(0.5, _('Dwell Click')); this._icon = new St.Icon({ style_class: 'system-status-icon', icon_name: 'pointer-primary-click-symbolic', }); this.add_child(this._icon); this._a11ySettings = new Gio.Settings({schema_id: MOUSE_A11Y_SCHEMA}); this._a11ySettings.connect(`changed::${KEY_DWELL_CLICK_ENABLED}`, this._syncMenuVisibility.bind(this)); this._a11ySettings.connect(`changed::${KEY_DWELL_MODE}`, this._syncMenuVisibility.bind(this)); this._seat = Clutter.get_default_backend().get_default_seat(); this._seat.connect('ptr-a11y-dwell-click-type-changed', this._updateClickType.bind(this)); this._addDwellAction(DWELL_CLICK_MODES.primary); this._addDwellAction(DWELL_CLICK_MODES.double); this._addDwellAction(DWELL_CLICK_MODES.drag); this._addDwellAction(DWELL_CLICK_MODES.secondary); this._setClickType(DWELL_CLICK_MODES.primary); this._syncMenuVisibility(); } _syncMenuVisibility() { this.visible = this._a11ySettings.get_boolean(KEY_DWELL_CLICK_ENABLED) && this._a11ySettings.get_string(KEY_DWELL_MODE) === DWELL_MODE_WINDOW; return GLib.SOURCE_REMOVE; } _addDwellAction(mode) { this.menu.addAction(mode.name, this._setClickType.bind(this, mode), mode.icon); } _updateClickType(manager, clickType) { for (let mode in DWELL_CLICK_MODES) { if (DWELL_CLICK_MODES[mode].type === clickType) this._icon.icon_name = DWELL_CLICK_MODES[mode].icon; } } _setClickType(mode) { this._seat.set_pointer_a11y_dwell_click_type(mode.type); this._icon.icon_name = mode.icon; } }); 070701000001EE000081A40000000000000000000000016712993F0000961A000000000000000000000000000000000000002A00000000gnome-shell-47.1/js/ui/status/keyboard.jsimport Clutter from 'gi://Clutter'; import Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import IBus from 'gi://IBus'; import Meta from 'gi://Meta'; import Shell from 'gi://Shell'; import St from 'gi://St'; import * as Gettext from 'gettext'; import * as Signals from '../../misc/signals.js'; import * as IBusManager from '../../misc/ibusManager.js'; import * as KeyboardManager from '../../misc/keyboardManager.js'; import * as Main from '../main.js'; import * as PopupMenu from '../popupMenu.js'; import * as PanelMenu from '../panelMenu.js'; import * as SwitcherPopup from '../switcherPopup.js'; import * as Util from '../../misc/util.js'; export const INPUT_SOURCE_TYPE_XKB = 'xkb'; export const INPUT_SOURCE_TYPE_IBUS = 'ibus'; export const LayoutMenuItem = GObject.registerClass( class LayoutMenuItem extends PopupMenu.PopupBaseMenuItem { _init(displayName, shortName) { super._init(); this.setOrnament(PopupMenu.Ornament.NO_DOT); this.label = new St.Label({ text: displayName, x_expand: true, }); this.indicator = new St.Label({text: shortName}); this.add_child(this.label); this.add_child(this.indicator); this.label_actor = this.label; } }); export class InputSource extends Signals.EventEmitter { constructor(type, id, displayName, shortName, index) { super(); this.type = type; this.id = id; this.displayName = displayName; this._shortName = shortName; this.index = index; this.properties = null; this.xkbId = this._getXkbId(); } get shortName() { return this._shortName; } set shortName(v) { this._shortName = v; this.emit('changed'); } activate(interactive) { this.emit('activate', !!interactive); } _getXkbId() { let engineDesc = IBusManager.getIBusManager().getEngineDesc(this.id); if (!engineDesc) return this.id; if (engineDesc.variant && engineDesc.variant.length > 0) return `${engineDesc.layout}+${engineDesc.variant}`; else return engineDesc.layout; } } export const InputSourcePopup = GObject.registerClass( class InputSourcePopup extends SwitcherPopup.SwitcherPopup { _init(items, action, actionBackward) { super._init(items); this._action = action; this._actionBackward = actionBackward; this._switcherList = new InputSourceSwitcher(this._items); } _keyPressHandler(keysym, action) { if (action === this._action) this._select(this._next()); else if (action === this._actionBackward) this._select(this._previous()); else if (keysym === Clutter.KEY_Left) this._select(this._previous()); else if (keysym === Clutter.KEY_Right) this._select(this._next()); else return Clutter.EVENT_PROPAGATE; return Clutter.EVENT_STOP; } _finish() { super._finish(); this._items[this._selectedIndex].activate(true); } }); const InputSourceSwitcher = GObject.registerClass( class InputSourceSwitcher extends SwitcherPopup.SwitcherList { _init(items) { super._init(true); for (let i = 0; i < items.length; i++) this._addIcon(items[i]); } _addIcon(item) { let box = new St.BoxLayout({vertical: true}); const symbol = new St.Bin({ style_class: 'input-source-switcher-symbol', child: new St.Label({ text: item.shortName, x_align: Clutter.ActorAlign.CENTER, y_align: Clutter.ActorAlign.CENTER, }), }); box.add_child(symbol); let text = new St.Label({ text: item.displayName, x_align: Clutter.ActorAlign.CENTER, }); box.add_child(text); this.addItem(box, text); } }); class InputSourceSettings extends Signals.EventEmitter { constructor() { super(); if (this.constructor === InputSourceSettings) throw new TypeError(`Cannot instantiate abstract class ${this.constructor.name}`); } _emitInputSourcesChanged() { this.emit('input-sources-changed'); } _emitKeyboardOptionsChanged() { this.emit('keyboard-options-changed'); } _emitKeyboardModelChanged() { this.emit('keyboard-model-changed'); } _emitPerWindowChanged() { this.emit('per-window-changed'); } get inputSources() { return []; } get mruSources() { return []; } set mruSources(sourcesList) { // do nothing } get keyboardOptions() { return []; } get perWindow() { return false; } } class InputSourceSystemSettings extends InputSourceSettings { constructor() { super(); this._BUS_NAME = 'org.freedesktop.locale1'; this._BUS_PATH = '/org/freedesktop/locale1'; this._BUS_IFACE = 'org.freedesktop.locale1'; this._BUS_PROPS_IFACE = 'org.freedesktop.DBus.Properties'; this._layouts = ''; this._variants = ''; this._options = ''; this._model = ''; this._reload(); Gio.DBus.system.signal_subscribe(this._BUS_NAME, this._BUS_PROPS_IFACE, 'PropertiesChanged', this._BUS_PATH, null, Gio.DBusSignalFlags.NONE, this._reload.bind(this)); } async _reload() { let props; try { const result = await Gio.DBus.system.call( this._BUS_NAME, this._BUS_PATH, this._BUS_PROPS_IFACE, 'GetAll', new GLib.Variant('(s)', [this._BUS_IFACE]), null, Gio.DBusCallFlags.NONE, -1, null); [props] = result.deepUnpack(); } catch (e) { log(`Could not get properties from ${this._BUS_NAME}`); return; } const layouts = props['X11Layout'].unpack(); const variants = props['X11Variant'].unpack(); const options = props['X11Options'].unpack(); const model = props['X11Model'].unpack(); if (layouts !== this._layouts || variants !== this._variants) { this._layouts = layouts; this._variants = variants; this._emitInputSourcesChanged(); } if (options !== this._options) { this._options = options; this._emitKeyboardOptionsChanged(); } if (model !== this._model) { this._model = model; this._emitKeyboardModelChanged(); } } get inputSources() { let sourcesList = []; let layouts = this._layouts.split(','); let variants = this._variants.split(','); for (let i = 0; i < layouts.length && !!layouts[i]; i++) { let id = layouts[i]; if (variants[i]) id += `+${variants[i]}`; sourcesList.push({type: INPUT_SOURCE_TYPE_XKB, id}); } return sourcesList; } get keyboardOptions() { return this._options.split(','); } get keyboardModel() { return this._model; } } class InputSourceSessionSettings extends InputSourceSettings { constructor() { super(); this._DESKTOP_INPUT_SOURCES_SCHEMA = 'org.gnome.desktop.input-sources'; this._KEY_INPUT_SOURCES = 'sources'; this._KEY_MRU_SOURCES = 'mru-sources'; this._KEY_KEYBOARD_OPTIONS = 'xkb-options'; this._KEY_KEYBOARD_MODEL = 'xkb-model'; this._KEY_PER_WINDOW = 'per-window'; this._settings = new Gio.Settings({schema_id: this._DESKTOP_INPUT_SOURCES_SCHEMA}); this._settings.connect(`changed::${this._KEY_INPUT_SOURCES}`, this._emitInputSourcesChanged.bind(this)); this._settings.connect(`changed::${this._KEY_KEYBOARD_OPTIONS}`, this._emitKeyboardOptionsChanged.bind(this)); this._settings.connect(`changed::${this._KEY_KEYBOARD_MODEL}`, this._emitKeyboardModelChanged.bind(this)); this._settings.connect(`changed::${this._KEY_PER_WINDOW}`, this._emitPerWindowChanged.bind(this)); } _getSourcesList(key) { let sourcesList = []; let sources = this._settings.get_value(key); let nSources = sources.n_children(); for (let i = 0; i < nSources; i++) { let [type, id] = sources.get_child_value(i).deepUnpack(); sourcesList.push({type, id}); } return sourcesList; } get inputSources() { return this._getSourcesList(this._KEY_INPUT_SOURCES); } get mruSources() { return this._getSourcesList(this._KEY_MRU_SOURCES); } set mruSources(sourcesList) { let sources = GLib.Variant.new('a(ss)', sourcesList); this._settings.set_value(this._KEY_MRU_SOURCES, sources); } get keyboardOptions() { return this._settings.get_strv(this._KEY_KEYBOARD_OPTIONS); } get keyboardModel() { return this._settings.get_string(this._KEY_KEYBOARD_MODEL); } get perWindow() { return this._settings.get_boolean(this._KEY_PER_WINDOW); } } export class InputSourceManager extends Signals.EventEmitter { constructor() { super(); // All valid input sources currently in the gsettings // KEY_INPUT_SOURCES list indexed by their index there this._inputSources = {}; // All valid input sources currently in the gsettings // KEY_INPUT_SOURCES list of type INPUT_SOURCE_TYPE_IBUS // indexed by the IBus ID this._ibusSources = {}; this._currentSource = null; // All valid input sources currently in the gsettings // KEY_INPUT_SOURCES list ordered by most recently used this._mruSources = []; this._mruSourcesBackup = null; this._keybindingAction = Main.wm.addKeybinding('switch-input-source', new Gio.Settings({schema_id: 'org.gnome.desktop.wm.keybindings'}), Meta.KeyBindingFlags.NONE, Shell.ActionMode.ALL, this._switchInputSource.bind(this)); this._keybindingActionBackward = Main.wm.addKeybinding('switch-input-source-backward', new Gio.Settings({schema_id: 'org.gnome.desktop.wm.keybindings'}), Meta.KeyBindingFlags.IS_REVERSED, Shell.ActionMode.ALL, this._switchInputSource.bind(this)); if (Main.sessionMode.isGreeter) this._settings = new InputSourceSystemSettings(); else this._settings = new InputSourceSessionSettings(); this._settings.connect('input-sources-changed', this._inputSourcesChanged.bind(this)); this._settings.connect('keyboard-options-changed', this._keyboardOptionsChanged.bind(this)); this._settings.connect('keyboard-model-changed', this._keyboardModelChanged.bind(this)); this._xkbInfo = KeyboardManager.getXkbInfo(); this._keyboardManager = KeyboardManager.getKeyboardManager(); this._ibusReady = false; this._ibusManager = IBusManager.getIBusManager(); this._ibusManager.connect('ready', this._ibusReadyCallback.bind(this)); this._ibusManager.connect('properties-registered', this._ibusPropertiesRegistered.bind(this)); this._ibusManager.connect('property-updated', this._ibusPropertyUpdated.bind(this)); this._ibusManager.connect('set-content-type', this._ibusSetContentType.bind(this)); global.display.connect('modifiers-accelerator-activated', this._modifiersSwitcher.bind(this)); this._sourcesPerWindow = false; this._focusWindowNotifyId = 0; this._settings.connect('per-window-changed', this._sourcesPerWindowChanged.bind(this)); this._sourcesPerWindowChanged(); this._disableIBus = false; this._reloading = false; } reload() { this._reloading = true; this._keyboardManager.setKeyboardOptions(this._settings.keyboardOptions); this._keyboardManager.setKeyboardModel(this._settings.keyboardModel); this._inputSourcesChanged(); this._reloading = false; } _ibusReadyCallback(im, ready) { if (this._ibusReady === ready) return; this._ibusReady = ready; this._mruSources = []; this._inputSourcesChanged(); } _modifiersSwitcher() { let sourceIndexes = Object.keys(this._inputSources); if (sourceIndexes.length === 0) { KeyboardManager.releaseKeyboard(); return true; } let is = this._currentSource; if (!is) is = this._inputSources[sourceIndexes[0]]; let nextIndex = is.index + 1; if (nextIndex > sourceIndexes[sourceIndexes.length - 1]) nextIndex = 0; while (!(is = this._inputSources[nextIndex])) nextIndex += 1; is.activate(true); return true; } _switchInputSource(display, window, binding) { if (this._mruSources.length < 2) return; // HACK: Fall back on simple input source switching since we // can't show a popup switcher while a GrabHelper grab is in // effect without considerable work to consolidate the usage // of pushModal/popModal and grabHelper. See // https://bugzilla.gnome.org/show_bug.cgi?id=695143 . if (Main.actionMode === Shell.ActionMode.POPUP) { this._modifiersSwitcher(); return; } this._switcherPopup = new InputSourcePopup( this._mruSources, this._keybindingAction, this._keybindingActionBackward); this._switcherPopup.connect('destroy', () => { this._switcherPopup = null; }); if (!this._switcherPopup.show( binding.is_reversed(), binding.get_name(), binding.get_mask())) this._switcherPopup.fadeAndDestroy(); } _keyboardOptionsChanged() { this._keyboardManager.setKeyboardOptions(this._settings.keyboardOptions); this._keyboardManager.reapply(); } _keyboardModelChanged() { this._keyboardManager.setKeyboardModel(this._settings.keyboardModel); this._keyboardManager.reapply(); } _updateMruSettings() { // If IBus is not ready we don't have a full picture of all // the available sources, so don't update the setting if (!this._ibusReady) return; // If IBus is temporarily disabled, don't update the setting if (this._disableIBus) return; let sourcesList = []; for (let i = 0; i < this._mruSources.length; ++i) { let source = this._mruSources[i]; sourcesList.push([source.type, source.id]); } this._settings.mruSources = sourcesList; } _currentInputSourceChanged(newSource) { let oldSource; [oldSource, this._currentSource] = [this._currentSource, newSource]; this.emit('current-source-changed', oldSource); for (let i = 1; i < this._mruSources.length; ++i) { if (this._mruSources[i] === newSource) { let currentSource = this._mruSources.splice(i, 1); this._mruSources = currentSource.concat(this._mruSources); break; } } this._changePerWindowSource(); } activateInputSource(is, interactive) { // The focus changes during holdKeyboard/releaseKeyboard may trick // the client into hiding UI containing the currently focused entry. // So holdKeyboard/releaseKeyboard are not called when // 'set-content-type' signal is received. // E.g. Focusing on a password entry in a popup in Xorg Firefox // will emit 'set-content-type' signal. // https://gitlab.gnome.org/GNOME/gnome-shell/issues/391 const holdKeyboard = !this._reloading; if (holdKeyboard) KeyboardManager.holdKeyboard(); this._keyboardManager.apply(is.xkbId); // All the "xkb:..." IBus engines simply "echo" back symbols, // despite their naming implying differently, so we always set // one in order for XIM applications to work given that we set // XMODIFIERS=@im=ibus in the first place so that they can // work without restarting when/if the user adds an IBus input // source. let engine; if (is.type === INPUT_SOURCE_TYPE_IBUS) engine = is.id; else engine = 'xkb:us::eng'; this._ibusManager.setEngine(engine).then(() => { if (holdKeyboard) KeyboardManager.releaseKeyboard(); }); this._currentInputSourceChanged(is); if (interactive) this._updateMruSettings(); } _updateMruSources() { let sourcesList = []; for (let i of Object.keys(this._inputSources).sort((a, b) => a - b)) sourcesList.push(this._inputSources[i]); this._keyboardManager.setUserLayouts(sourcesList.map(x => x.xkbId)); if (!this._disableIBus && this._mruSourcesBackup) { this._mruSources = this._mruSourcesBackup; this._mruSourcesBackup = null; } // Initialize from settings when we have no MRU sources list if (this._mruSources.length === 0) { let mruSettings = this._settings.mruSources; for (let i = 0; i < mruSettings.length; i++) { let mruSettingSource = mruSettings[i]; let mruSource = null; for (let j = 0; j < sourcesList.length; j++) { let source = sourcesList[j]; if (source.type === mruSettingSource.type && source.id === mruSettingSource.id) { mruSource = source; break; } } if (mruSource) this._mruSources.push(mruSource); } } let mruSources = []; if (this._mruSources.length > 1) { for (let i = 0; i < this._mruSources.length; i++) { for (let j = 0; j < sourcesList.length; j++) { if (this._mruSources[i].type === sourcesList[j].type && this._mruSources[i].id === sourcesList[j].id) { mruSources = mruSources.concat(sourcesList.splice(j, 1)); break; } } } } this._mruSources = mruSources.concat(sourcesList); } _inputSourcesChanged() { let sources = this._settings.inputSources; let nSources = sources.length; this._currentSource = null; this._inputSources = {}; this._ibusSources = {}; let infosList = []; for (let i = 0; i < nSources; i++) { let displayName; let shortName; let type = sources[i].type; let id = sources[i].id; let exists = false; if (type === INPUT_SOURCE_TYPE_XKB) { [exists, displayName, shortName] = this._xkbInfo.get_layout_info(id); } else if (type === INPUT_SOURCE_TYPE_IBUS) { if (this._disableIBus) continue; let engineDesc = this._ibusManager.getEngineDesc(id); if (engineDesc) { let language = IBus.get_language_name(engineDesc.get_language()); let longName = engineDesc.get_longname(); let textdomain = engineDesc.get_textdomain(); if (textdomain !== '') longName = Gettext.dgettext(textdomain, longName); exists = true; displayName = `${language} (${longName})`; shortName = this._makeEngineShortName(engineDesc); } } if (exists) infosList.push({type, id, displayName, shortName}); } if (infosList.length === 0) { let type = INPUT_SOURCE_TYPE_XKB; let id = KeyboardManager.DEFAULT_LAYOUT; let [, displayName, shortName] = this._xkbInfo.get_layout_info(id); infosList.push({type, id, displayName, shortName}); } let inputSourcesByShortName = {}; for (let i = 0; i < infosList.length; i++) { let is = new InputSource(infosList[i].type, infosList[i].id, infosList[i].displayName, infosList[i].shortName, i); is.connect('activate', this.activateInputSource.bind(this)); if (!(is.shortName in inputSourcesByShortName)) inputSourcesByShortName[is.shortName] = []; inputSourcesByShortName[is.shortName].push(is); this._inputSources[is.index] = is; if (is.type === INPUT_SOURCE_TYPE_IBUS) this._ibusSources[is.id] = is; } for (let i in this._inputSources) { let is = this._inputSources[i]; if (inputSourcesByShortName[is.shortName].length > 1) { let sub = inputSourcesByShortName[is.shortName].indexOf(is) + 1; is.shortName += String.fromCharCode(0x2080 + sub); } } this.emit('sources-changed'); this._updateMruSources(); if (this._mruSources.length > 0) this._mruSources[0].activate(false); // All ibus engines are preloaded here to reduce the launching time // when users switch the input sources. this._ibusManager.preloadEngines(Object.keys(this._ibusSources)); } _makeEngineShortName(engineDesc) { let symbol = engineDesc.get_symbol(); if (symbol && symbol[0]) return symbol; let langCode = engineDesc.get_language().split('_', 1)[0]; if (langCode.length === 2 || langCode.length === 3) return langCode.toLowerCase(); return String.fromCharCode(0x2328); // keyboard glyph } _ibusPropertiesRegistered(im, engineName, props) { let source = this._ibusSources[engineName]; if (!source) return; source.properties = props; if (source === this._currentSource) this.emit('current-source-changed', null); } _ibusPropertyUpdated(im, engineName, prop) { let source = this._ibusSources[engineName]; if (!source) return; if (this._updateSubProperty(source.properties, prop) && source === this._currentSource) this.emit('current-source-changed', null); } _updateSubProperty(props, prop) { if (!props) return false; let p; for (let i = 0; (p = props.get(i)) != null; ++i) { if (p.get_key() === prop.get_key() && p.get_prop_type() === prop.get_prop_type()) { p.update(prop); return true; } else if (p.get_prop_type() === IBus.PropType.MENU) { if (this._updateSubProperty(p.get_sub_props(), prop)) return true; } } return false; } _ibusSetContentType(im, purpose, _hints) { // Avoid purpose changes while the switcher popup is shown, likely due to // the focus change caused by the switcher popup causing this purpose change. if (this._switcherPopup) return; if (purpose === IBus.InputPurpose.PASSWORD) { if (Object.keys(this._inputSources).length === Object.keys(this._ibusSources).length) return; if (this._disableIBus) return; this._disableIBus = true; this._mruSourcesBackup = this._mruSources.slice(); } else { if (!this._disableIBus) return; this._disableIBus = false; } this.reload(); } _getNewInputSource(current) { let sourceIndexes = Object.keys(this._inputSources); if (sourceIndexes.length === 0) return null; if (current) { for (let i in this._inputSources) { let is = this._inputSources[i]; if (is.type === current.type && is.id === current.id) return is; } } return this._inputSources[sourceIndexes[0]]; } _getCurrentWindow() { if (Main.overview.visible) return Main.overview; else return global.display.focus_window; } _setPerWindowInputSource() { let window = this._getCurrentWindow(); if (!window) return; if (!window._inputSources || window._inputSources !== this._inputSources) { window._inputSources = this._inputSources; window._currentSource = this._getNewInputSource(window._currentSource); } if (window._currentSource) window._currentSource.activate(false); } _sourcesPerWindowChanged() { this._sourcesPerWindow = this._settings.perWindow; if (this._sourcesPerWindow && this._focusWindowNotifyId === 0) { this._focusWindowNotifyId = global.display.connect('notify::focus-window', this._setPerWindowInputSource.bind(this)); Main.overview.connectObject( 'showing', this._setPerWindowInputSource.bind(this), 'hidden', this._setPerWindowInputSource.bind(this), this); } else if (!this._sourcesPerWindow && this._focusWindowNotifyId !== 0) { global.display.disconnect(this._focusWindowNotifyId); this._focusWindowNotifyId = 0; Main.overview.disconnectObject(this); let windows = global.get_window_actors().map(w => w.meta_window); for (let i = 0; i < windows.length; ++i) { delete windows[i]._inputSources; delete windows[i]._currentSource; } delete Main.overview._inputSources; delete Main.overview._currentSource; } } _changePerWindowSource() { if (!this._sourcesPerWindow) return; let window = this._getCurrentWindow(); if (!window) return; window._inputSources = this._inputSources; window._currentSource = this._currentSource; } get currentSource() { return this._currentSource; } get inputSources() { return this._inputSources; } get keyboardManager() { return this._keyboardManager; } } let _inputSourceManager = null; /** * @returns {InputSourceManager} */ export function getInputSourceManager() { if (_inputSourceManager == null) _inputSourceManager = new InputSourceManager(); return _inputSourceManager; } const InputSourceIndicatorContainer = GObject.registerClass( class InputSourceIndicatorContainer extends St.Widget { vfunc_get_preferred_width(forHeight) { // Here, and in vfunc_get_preferred_height, we need to query // for the height of all children, but we ignore the results // for those we don't actually display. return this.get_children().reduce((maxWidth, child) => { let width = child.get_preferred_width(forHeight); return [ Math.max(maxWidth[0], width[0]), Math.max(maxWidth[1], width[1]), ]; }, [0, 0]); } vfunc_get_preferred_height(forWidth) { return this.get_children().reduce((maxHeight, child) => { let height = child.get_preferred_height(forWidth); return [ Math.max(maxHeight[0], height[0]), Math.max(maxHeight[1], height[1]), ]; }, [0, 0]); } vfunc_allocate(box) { this.set_allocation(box); // translate box to (0, 0) box.x2 -= box.x1; box.x1 = 0; box.y2 -= box.y1; box.y1 = 0; this.get_children().forEach(c => { c.allocate_align_fill(box, 0.5, 0.5, false, false); }); } }); export const InputSourceIndicator = GObject.registerClass( class InputSourceIndicator extends PanelMenu.Button { _init() { super._init(0.5, _('Keyboard')); this.connect('destroy', this._onDestroy.bind(this)); this._menuItems = {}; this._indicatorLabels = {}; this._container = new InputSourceIndicatorContainer({style_class: 'system-status-icon'}); this.add_child(this._container); this._propSeparator = new PopupMenu.PopupSeparatorMenuItem(); this.menu.addMenuItem(this._propSeparator); this._propSection = new PopupMenu.PopupMenuSection(); this.menu.addMenuItem(this._propSection); this._propSection.actor.hide(); this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); this._showLayoutItem = this.menu.addAction(_('Show Keyboard Layout'), this._showLayout.bind(this)); this.menu.addSettingsAction(_('Keyboard Settings'), 'gnome-keyboard-panel.desktop'); Main.sessionMode.connect('updated', this._sessionUpdated.bind(this)); this._sessionUpdated(); this._inputSourceManager = getInputSourceManager(); this._inputSourceManager.connectObject( 'sources-changed', this._sourcesChanged.bind(this), 'current-source-changed', this._currentSourceChanged.bind(this), this); this._inputSourceManager.reload(); } _onDestroy() { this._inputSourceManager = null; } _sessionUpdated() { // re-using "allowSettings" for the keyboard layout is a bit shady, // but at least for now it is used as "allow popping up windows // from shell menus"; we can always add a separate sessionMode // option if need arises. this._showLayoutItem.visible = Main.sessionMode.allowSettings; } _sourcesChanged() { for (let i in this._menuItems) this._menuItems[i].destroy(); for (let i in this._indicatorLabels) this._indicatorLabels[i].destroy(); this._menuItems = {}; this._indicatorLabels = {}; let menuIndex = 0; for (let i in this._inputSourceManager.inputSources) { let is = this._inputSourceManager.inputSources[i]; let menuItem = new LayoutMenuItem(is.displayName, is.shortName); menuItem.connect('activate', () => is.activate(true)); const indicatorLabel = new St.Label({ text: is.shortName, visible: false, }); this._menuItems[i] = menuItem; this._indicatorLabels[i] = indicatorLabel; is.connect('changed', () => { menuItem.indicator.set_text(is.shortName); indicatorLabel.set_text(is.shortName); }); this.menu.addMenuItem(menuItem, menuIndex++); this._container.add_child(indicatorLabel); } } _currentSourceChanged(manager, oldSource) { let nVisibleSources = Object.keys(this._inputSourceManager.inputSources).length; let newSource = this._inputSourceManager.currentSource; if (oldSource) { this._menuItems[oldSource.index].setOrnament(PopupMenu.Ornament.NO_DOT); this._indicatorLabels[oldSource.index].hide(); } if (!newSource || (nVisibleSources < 2 && !newSource.properties)) { // This source index might be invalid if we weren't able // to build a menu item for it, so we hide ourselves since // we can't fix it here. *shrug* // We also hide if we have only one visible source unless // it's an IBus source with properties. this.menu.close(); this.hide(); return; } this.show(); this._buildPropSection(newSource.properties); this._menuItems[newSource.index].setOrnament(PopupMenu.Ornament.DOT); this._indicatorLabels[newSource.index].show(); } _buildPropSection(properties) { this._propSeparator.hide(); this._propSection.actor.hide(); this._propSection.removeAll(); this._buildPropSubMenu(this._propSection, properties); if (!this._propSection.isEmpty()) { this._propSection.actor.show(); this._propSeparator.show(); } } _buildPropSubMenu(menu, props) { if (!props) return; let ibusManager = IBusManager.getIBusManager(); let radioGroup = []; let p; for (let i = 0; (p = props.get(i)) != null; ++i) { let prop = p; if (!prop.get_visible()) continue; if (prop.get_key() === 'InputMode') { let text; if (prop.get_symbol) text = prop.get_symbol().get_text(); else text = prop.get_label().get_text(); let currentSource = this._inputSourceManager.currentSource; if (currentSource) { let indicatorLabel = this._indicatorLabels[currentSource.index]; if (text && text.length > 0 && text.length < 3) indicatorLabel.set_text(text); } } let item; let type = prop.get_prop_type(); switch (type) { case IBus.PropType.MENU: item = new PopupMenu.PopupSubMenuMenuItem(prop.get_label().get_text()); this._buildPropSubMenu(item.menu, prop.get_sub_props()); break; case IBus.PropType.RADIO: item = new PopupMenu.PopupMenuItem(prop.get_label().get_text()); item.prop = prop; radioGroup.push(item); item.radioGroup = radioGroup; item.setOrnament(prop.get_state() === IBus.PropState.CHECKED ? PopupMenu.Ornament.DOT : PopupMenu.Ornament.NO_DOT); item.connect('activate', () => { if (item.prop.get_state() === IBus.PropState.CHECKED) return; let group = item.radioGroup; for (let j = 0; j < group.length; ++j) { if (group[j] === item) { item.setOrnament(PopupMenu.Ornament.DOT); item.prop.set_state(IBus.PropState.CHECKED); ibusManager.activateProperty( item.prop.get_key(), IBus.PropState.CHECKED); } else { group[j].setOrnament(PopupMenu.Ornament.NO_DOT); group[j].prop.set_state(IBus.PropState.UNCHECKED); ibusManager.activateProperty( group[j].prop.get_key(), IBus.PropState.UNCHECKED); } } }); break; case IBus.PropType.TOGGLE: item = new PopupMenu.PopupSwitchMenuItem(prop.get_label().get_text(), prop.get_state() === IBus.PropState.CHECKED); item.prop = prop; item.connect('toggled', () => { if (item.state) { item.prop.set_state(IBus.PropState.CHECKED); ibusManager.activateProperty( item.prop.get_key(), IBus.PropState.CHECKED); } else { item.prop.set_state(IBus.PropState.UNCHECKED); ibusManager.activateProperty( item.prop.get_key(), IBus.PropState.UNCHECKED); } }); break; case IBus.PropType.NORMAL: item = new PopupMenu.PopupMenuItem(prop.get_label().get_text()); item.prop = prop; item.connect('activate', () => { ibusManager.activateProperty( item.prop.get_key(), item.prop.get_state()); }); break; case IBus.PropType.SEPARATOR: item = new PopupMenu.PopupSeparatorMenuItem(); break; default: log(`IBus property ${prop.get_key()} has invalid type ${type}`); continue; } item.setSensitive(prop.get_sensitive()); menu.addMenuItem(item); } } _showLayout() { Main.overview.hide(); let source = this._inputSourceManager.currentSource; let xkbLayout = ''; let xkbVariant = ''; if (source.type === INPUT_SOURCE_TYPE_XKB) { [, , , xkbLayout, xkbVariant] = KeyboardManager.getXkbInfo().get_layout_info(source.id); } else if (source.type === INPUT_SOURCE_TYPE_IBUS) { let engineDesc = IBusManager.getIBusManager().getEngineDesc(source.id); if (engineDesc) { xkbLayout = engineDesc.get_layout(); xkbVariant = engineDesc.get_layout_variant(); } // The `default` layout from ibus engine means to // use the current keyboard layout. if (xkbLayout === 'default') { const current = this._inputSourceManager.keyboardManager.currentLayout; xkbLayout = current.layout; xkbVariant = current.variant; } } if (!xkbLayout || xkbLayout.length === 0) return; let description = xkbLayout; if (xkbVariant.length > 0) description = `${description}+${xkbVariant}`; Util.spawn(['tecla', description]); } }); 070701000001EF000081A40000000000000000000000016712993F00002DA3000000000000000000000000000000000000002A00000000gnome-shell-47.1/js/ui/status/location.jsimport Clutter from 'gi://Clutter'; import Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import Shell from 'gi://Shell'; import St from 'gi://St'; import * as Dialog from '../dialog.js'; import * as ModalDialog from '../modalDialog.js'; import * as PermissionStore from '../../misc/permissionStore.js'; import {SystemIndicator} from '../quickSettings.js'; import {loadInterfaceXML} from '../../misc/fileUtils.js'; const LOCATION_SCHEMA = 'org.gnome.system.location'; const MAX_ACCURACY_LEVEL = 'max-accuracy-level'; const ENABLED = 'enabled'; const APP_PERMISSIONS_TABLE = 'location'; const APP_PERMISSIONS_ID = 'location'; /** @enum {number} */ const GeoclueAccuracyLevel = { NONE: 0, COUNTRY: 1, CITY: 4, NEIGHBORHOOD: 5, STREET: 6, EXACT: 8, }; function accuracyLevelToString(accuracyLevel) { for (let key in GeoclueAccuracyLevel) { if (GeoclueAccuracyLevel[key] === accuracyLevel) return key; } return 'NONE'; } const GeoclueIface = loadInterfaceXML('org.freedesktop.GeoClue2.Manager'); const GeoclueManager = Gio.DBusProxy.makeProxyWrapper(GeoclueIface); const AgentIface = loadInterfaceXML('org.freedesktop.GeoClue2.Agent'); let _geoclueAgent = null; /** * @returns {GeoclueAgent} - the GeoclueAgent singleton */ export function getGeoclueAgent() { if (_geoclueAgent === null) _geoclueAgent = new GeoclueAgent(); return _geoclueAgent; } const GeoclueAgent = GObject.registerClass({ Properties: { 'enabled': GObject.ParamSpec.boolean( 'enabled', null, null, GObject.ParamFlags.READWRITE, false), 'in-use': GObject.ParamSpec.boolean( 'in-use', null, null, GObject.ParamFlags.READABLE, false), 'max-accuracy-level': GObject.ParamSpec.int( 'max-accuracy-level', null, null, GObject.ParamFlags.READABLE, 0, 8, 0), }, }, class GeoclueAgent extends GObject.Object { _init() { super._init(); this._settings = new Gio.Settings({schema_id: LOCATION_SCHEMA}); this._settings.connectObject( `changed::${ENABLED}`, () => this.notify('enabled'), `changed::${MAX_ACCURACY_LEVEL}`, () => this._onMaxAccuracyLevelChanged(), this); this._agent = Gio.DBusExportedObject.wrapJSObject(AgentIface, this); this._agent.export(Gio.DBus.system, '/org/freedesktop/GeoClue2/Agent'); this.connect('notify::enabled', this._onMaxAccuracyLevelChanged.bind(this)); this._watchId = Gio.bus_watch_name(Gio.BusType.SYSTEM, 'org.freedesktop.GeoClue2', 0, this._connectToGeoclue.bind(this), this._onGeoclueVanished.bind(this)); this._onMaxAccuracyLevelChanged(); this._connectToGeoclue(); this._connectToPermissionStore(); } get enabled() { return this._settings.get_boolean(ENABLED); } set enabled(value) { this._settings.set_boolean(ENABLED, value); } get inUse() { return this._managerProxy?.InUse ?? false; } get maxAccuracyLevel() { if (this.enabled) { let level = this._settings.get_string(MAX_ACCURACY_LEVEL); return GeoclueAccuracyLevel[level.toUpperCase()] || GeoclueAccuracyLevel.NONE; } else { return GeoclueAccuracyLevel.NONE; } } async AuthorizeAppAsync(params, invocation) { let [desktopId, reqAccuracyLevel] = params; let authorizer = new AppAuthorizer(desktopId, reqAccuracyLevel, this._permStoreProxy, this.maxAccuracyLevel); const accuracyLevel = await authorizer.authorize(); const ret = accuracyLevel !== GeoclueAccuracyLevel.NONE; invocation.return_value(GLib.Variant.new('(bu)', [ret, accuracyLevel])); } get MaxAccuracyLevel() { return this.maxAccuracyLevel; } _connectToGeoclue() { if (this._managerProxy != null || this._connecting) return false; this._connecting = true; new GeoclueManager(Gio.DBus.system, 'org.freedesktop.GeoClue2', '/org/freedesktop/GeoClue2/Manager', this._onManagerProxyReady.bind(this)); return true; } async _onManagerProxyReady(proxy, error) { if (error != null) { log(error.message); this._connecting = false; return; } this._managerProxy = proxy; this._managerProxy.connectObject('g-properties-changed', this._onGeocluePropsChanged.bind(this), this); this.notify('in-use'); try { await this._managerProxy.AddAgentAsync('gnome-shell'); this._connecting = false; this._notifyMaxAccuracyLevel(); } catch (e) { log(e.message); } } _onGeoclueVanished() { this._managerProxy?.disconnectObject(this); this._managerProxy = null; this.notify('in-use'); } _onMaxAccuracyLevelChanged() { this.notify('max-accuracy-level'); // Gotta ensure geoclue is up and we are registered as agent to it // before we emit the notify for this property change. if (!this._connectToGeoclue()) this._notifyMaxAccuracyLevel(); } _notifyMaxAccuracyLevel() { let variant = new GLib.Variant('u', this.maxAccuracyLevel); this._agent.emit_property_changed('MaxAccuracyLevel', variant); } _onGeocluePropsChanged(proxy, properties) { const inUseChanged = !!properties.lookup_value('InUse', null); if (inUseChanged) this.notify('in-use'); } _connectToPermissionStore() { this._permStoreProxy = null; new PermissionStore.PermissionStore(this._onPermStoreProxyReady.bind(this)); } _onPermStoreProxyReady(proxy, error) { if (error != null) { log(error.message); return; } this._permStoreProxy = proxy; } }); export const Indicator = GObject.registerClass( class Indicator extends SystemIndicator { _init() { super._init(); this._agent = getGeoclueAgent(); this._indicator = this._addIndicator(); this._indicator.icon_name = 'location-services-active-symbolic'; this._agent.bind_property('in-use', this._indicator, 'visible', GObject.BindingFlags.SYNC_CREATE); } }); class AppAuthorizer { constructor(desktopId, reqAccuracyLevel, permStoreProxy, maxAccuracyLevel) { this.desktopId = desktopId; this.reqAccuracyLevel = reqAccuracyLevel; this._permStoreProxy = permStoreProxy; this._maxAccuracyLevel = maxAccuracyLevel; this._permissions = {}; this._accuracyLevel = GeoclueAccuracyLevel.NONE; } async authorize() { let appSystem = Shell.AppSystem.get_default(); this._app = appSystem.lookup_app(`${this.desktopId}.desktop`); if (this._app == null || this._permStoreProxy == null) return this._completeAuth(); try { [this._permissions] = await this._permStoreProxy.LookupAsync( APP_PERMISSIONS_TABLE, APP_PERMISSIONS_ID); } catch (error) { if (error.domain === Gio.DBusError) { // Likely no xdg-app installed, just authorize the app this._accuracyLevel = this.reqAccuracyLevel; this._permStoreProxy = null; return this._completeAuth(); } else { // Currently xdg-app throws an error if we lookup for // unknown ID (which would be the case first time this code // runs) so we continue with user authorization as normal // and ID is added to the store if user says "yes". log(error.message); this._permissions = {}; } } let permission = this._permissions[this.desktopId]; if (permission == null) { await this._userAuthorizeApp(); } else { let [levelStr] = permission || ['NONE']; this._accuracyLevel = GeoclueAccuracyLevel[levelStr] || GeoclueAccuracyLevel.NONE; } return this._completeAuth(); } _userAuthorizeApp() { let name = this._app.get_name(); let appInfo = this._app.get_app_info(); let reason = appInfo.get_locale_string('X-Geoclue-Reason'); this._dialog = new GeolocationDialog(name, reason, this.reqAccuracyLevel); return new Promise(resolve => { const responseId = this._dialog.connect('response', (dialog, level) => { this._dialog.disconnect(responseId); this._accuracyLevel = level; resolve(); }); this._dialog.open(); }); } _completeAuth() { if (this._accuracyLevel !== GeoclueAccuracyLevel.NONE) { this._accuracyLevel = Math.clamp(this._accuracyLevel, 0, this._maxAccuracyLevel); } this._saveToPermissionStore(); return this._accuracyLevel; } async _saveToPermissionStore() { if (this._permStoreProxy == null) return; let levelStr = accuracyLevelToString(this._accuracyLevel); let dateStr = Math.round(Date.now() / 1000).toString(); this._permissions[this.desktopId] = [levelStr, dateStr]; let data = GLib.Variant.new('av', {}); try { await this._permStoreProxy.SetAsync( APP_PERMISSIONS_TABLE, true, APP_PERMISSIONS_ID, this._permissions, data); } catch (error) { log(error.message); } } } export const GeolocationDialog = GObject.registerClass({ Signals: {'response': {param_types: [GObject.TYPE_UINT]}}, }, class GeolocationDialog extends ModalDialog.ModalDialog { _init(name, reason, reqAccuracyLevel) { super._init({styleClass: 'geolocation-dialog'}); this.reqAccuracyLevel = reqAccuracyLevel; let content = new Dialog.MessageDialogContent({ title: _('Allow location access'), /* Translators: %s is an application name */ description: _('The app %s wants to access your location').format(name), }); let reasonLabel = new St.Label({ text: reason, style_class: 'message-dialog-description', }); content.add_child(reasonLabel); let infoLabel = new St.Label({ text: _('Location access can be changed at any time from the privacy settings'), style_class: 'message-dialog-description', }); content.add_child(infoLabel); this.contentLayout.add_child(content); const button = this.addButton({ label: _('Deny Access'), action: this._onDenyClicked.bind(this), key: Clutter.KEY_Escape, }); this.addButton({ label: _('Grant Access'), action: this._onGrantClicked.bind(this), }); this.setInitialKeyFocus(button); } _onGrantClicked() { this.emit('response', this.reqAccuracyLevel); this.close(); } _onDenyClicked() { this.emit('response', GeoclueAccuracyLevel.NONE); this.close(); } }); 070701000001F0000081A40000000000000000000000016712993F00010ECF000000000000000000000000000000000000002900000000gnome-shell-47.1/js/ui/status/network.jsimport Atk from 'gi://Atk'; import Clutter from 'gi://Clutter'; import Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import NM from 'gi://NM'; import Polkit from 'gi://Polkit'; import Shell from 'gi://Shell'; import St from 'gi://St'; import * as Config from '../../misc/config.js'; import * as Main from '../main.js'; import * as PopupMenu from '../popupMenu.js'; import * as MessageTray from '../messageTray.js'; import * as ModemManager from '../../misc/modemManager.js'; import * as Signals from '../../misc/signals.js'; import * as Util from '../../misc/util.js'; import {Spinner} from '../animation.js'; import {QuickMenuToggle, SystemIndicator} from '../quickSettings.js'; import {loadInterfaceXML} from '../../misc/fileUtils.js'; import {registerDestroyableType} from '../../misc/signalTracker.js'; Gio._promisify(Gio.DBusConnection.prototype, 'call'); Gio._promisify(NM.Client, 'new_async'); Gio._promisify(NM.Client.prototype, 'check_connectivity_async'); Gio._promisify(NM.DeviceWifi.prototype, 'request_scan_async'); const WIFI_SCAN_FREQUENCY = 15; const MAX_VISIBLE_NETWORKS = 8; // small optimization, to avoid using [] all the time const NM80211Mode = NM['80211Mode']; /** @enum {number} */ const PortalHelperResult = { CANCELLED: 0, COMPLETED: 1, RECHECK: 2, }; const PortalHelperIface = loadInterfaceXML('org.gnome.Shell.PortalHelper'); const PortalHelperInfo = Gio.DBusInterfaceInfo.new_for_xml(PortalHelperIface); function signalToIcon(value) { if (value < 20) return 'none'; else if (value < 40) return 'weak'; else if (value < 50) return 'ok'; else if (value < 80) return 'good'; else return 'excellent'; } function ssidToLabel(ssid) { let label = NM.utils_ssid_to_utf8(ssid.get_data()); if (!label) label = _(''); return label; } function launchSettingsPanel(panel, ...args) { const param = new GLib.Variant('(sav)', [panel, args.map(s => new GLib.Variant('s', s))]); const app = Shell.AppSystem.get_default() .lookup_app('org.gnome.Settings.desktop'); app.activate_action('launch-panel', param, 0, -1, null).catch(error => { log(`Failed to launch Settings panel: ${error.message}`); }); } class ItemSorter { [Symbol.iterator] = this.items; /** * Maintains a list of sorted items. By default, items are * assumed to be objects with a name property. * * Optionally items can have a secondary sort order by * recency. If used, items must by objects with a timestamp * property that can be used in substraction, and "bigger" * must mean "more recent". Number and Date both qualify. * * @param {object=} options - property object with options * @param {Function} options.sortFunc - a custom sort function * @param {bool} options.trackMru - whether to track MRU order as well **/ constructor(options = {}) { const {sortFunc, trackMru} = { sortFunc: this._sortByName.bind(this), trackMru: false, ...options, }; this._trackMru = trackMru; this._sortFunc = sortFunc; this._sortFuncMru = this._sortByMru.bind(this); this._itemsOrder = []; this._itemsMruOrder = []; } *items() { yield* this._itemsOrder; } *itemsByMru() { console.assert(this._trackMru, 'itemsByMru: MRU tracking is disabled'); yield* this._itemsMruOrder; } _sortByName(one, two) { return GLib.utf8_collate(one.name, two.name); } _sortByMru(one, two) { return two.timestamp - one.timestamp; } _upsert(array, item, sortFunc) { this._delete(array, item); return Util.insertSorted(array, item, sortFunc); } _delete(array, item) { const pos = array.indexOf(item); if (pos >= 0) array.splice(pos, 1); } /** * Insert or update item. * * @param {any} item - the item to upsert * @returns {number} - the sorted position of item */ upsert(item) { if (this._trackMru) this._upsert(this._itemsMruOrder, item, this._sortFuncMru); return this._upsert(this._itemsOrder, item, this._sortFunc); } /** * @param {any} item - item to remove */ delete(item) { if (this._trackMru) this._delete(this._itemsMruOrder, item); this._delete(this._itemsOrder, item); } } const NMMenuItem = GObject.registerClass({ Properties: { 'radio-mode': GObject.ParamSpec.boolean('radio-mode', null, null, GObject.ParamFlags.READWRITE, false), 'is-active': GObject.ParamSpec.boolean('is-active', null, null, GObject.ParamFlags.READABLE, false), 'name': GObject.ParamSpec.string('name', null, null, GObject.ParamFlags.READWRITE, ''), 'icon-name': GObject.ParamSpec.string('icon-name', null, null, GObject.ParamFlags.READWRITE, ''), }, }, class NMMenuItem extends PopupMenu.PopupBaseMenuItem { get state() { return this._activeConnection?.state ?? NM.ActiveConnectionState.DEACTIVATED; } get is_active() { return this.state <= NM.ActiveConnectionState.ACTIVATED; } get timestamp() { return 0; } activate() { super.activate(Clutter.get_current_event()); } _activeConnectionStateChanged() { this.notify('is-active'); this.notify('icon-name'); this._sync(); } _setActiveConnection(activeConnection) { this._activeConnection?.disconnectObject(this); this._activeConnection = activeConnection; this._activeConnection?.connectObject( 'notify::state', () => this._activeConnectionStateChanged(), this); this._activeConnectionStateChanged(); } _sync() { // Overridden by subclasses } }); /** * Item that contains a section, and can be collapsed * into a submenu */ const NMSectionItem = GObject.registerClass({ Properties: { 'use-submenu': GObject.ParamSpec.boolean('use-submenu', null, null, GObject.ParamFlags.READWRITE, false), }, }, class NMSectionItem extends NMMenuItem { constructor() { super({ activate: false, can_focus: false, }); this._useSubmenu = false; // Turn into an empty container with no padding this.styleClass = ''; // Add intermediate section; we need this for submenu support this._mainSection = new PopupMenu.PopupMenuSection(); this.add_child(this._mainSection.actor); this._submenuItem = new PopupMenu.PopupSubMenuMenuItem('', true); this._mainSection.addMenuItem(this._submenuItem); this._submenuItem.hide(); this.section = new PopupMenu.PopupMenuSection(); this._mainSection.addMenuItem(this.section); // Represents the item as a whole when shown this.bind_property('name', this._submenuItem.label, 'text', GObject.BindingFlags.DEFAULT); this.bind_property('icon-name', this._submenuItem.icon, 'icon-name', GObject.BindingFlags.DEFAULT); } _setParent(parent) { super._setParent(parent); this._mainSection._setParent(parent); parent?.connect('menu-closed', () => this._mainSection.emit('menu-closed')); } get use_submenu() { return this._useSubmenu; } set use_submenu(useSubmenu) { if (this._useSubmenu === useSubmenu) return; this._useSubmenu = useSubmenu; this._submenuItem.visible = useSubmenu; if (useSubmenu) { this._mainSection.box.remove_child(this.section.actor); this._submenuItem.menu.box.add_child(this.section.actor); } else { this._submenuItem.menu.box.remove_child(this.section.actor); this._mainSection.box.add_child(this.section.actor); } } }); const NMConnectionItem = GObject.registerClass( class NMConnectionItem extends NMMenuItem { constructor(section, connection) { super(); this._section = section; this._connection = connection; this._activeConnection = null; this._icon = new St.Icon({ style_class: 'popup-menu-icon', x_align: Clutter.ActorAlign.END, visible: !this.radio_mode, }); this.add_child(this._icon); this._label = new St.Label({ x_expand: true, y_expand: true, y_align: Clutter.ActorAlign.CENTER, }); this.add_child(this._label); this._subtitle = new St.Label({ style_class: 'device-subtitle', y_expand: true, y_align: Clutter.ActorAlign.CENTER, }); this.add_child(this._subtitle); this.bind_property('icon-name', this._icon, 'icon-name', GObject.BindingFlags.DEFAULT); this.bind_property('radio-mode', this._icon, 'visible', GObject.BindingFlags.INVERT_BOOLEAN); this.connectObject( 'notify::radio-mode', () => this._sync(), 'notify::name', () => this._sync(), this); this._sync(); } get name() { return this._connection.get_id(); } get timestamp() { return this._connection.get_setting_connection()?.get_timestamp() ?? 0; } updateForConnection(connection) { // connection should always be the same object // (and object path) as this._connection, but // this can be false if NetworkManager was restarted // and picked up connections in a different order // Just to be safe, we set it here again this._connection = connection; this.notify('name'); this._sync(); } _getAccessibleName() { return this.is_active // Translators: %s is a device name like "MyPhone" ? _('Disconnect %s').format(this.name) // Translators: %s is a device name like "MyPhone" : _('Connect to %s').format(this.name); } _getSubtitleLabel() { return this.is_active ? _('Disconnect') : _('Connect'); } _sync() { this._label.text = this.name; if (this.radioMode) { this._subtitle.text = null; this.accessible_name = this.name; this.accessible_role = Atk.Role.CHECK_MENU_ITEM; this.setOrnament(this.is_active ? PopupMenu.Ornament.DOT : PopupMenu.Ornament.NO_DOT); } else { this.accessible_name = this._getAccessibleName(); this._subtitle.text = this._getSubtitleLabel(); this.accessible_role = Atk.Role.MENU_ITEM; this.setOrnament(PopupMenu.Ornament.HIDDEN); } } activate() { super.activate(); if (this.radio_mode && this._activeConnection != null) return; // only activate in radio mode if (this._activeConnection == null) this._section.activateConnection(this._connection); else this._section.deactivateConnection(this._activeConnection); this._sync(); } setActiveConnection(connection) { this._setActiveConnection(connection); } }); const NMDeviceConnectionItem = GObject.registerClass({ Properties: { 'device-name': GObject.ParamSpec.string('device-name', null, null, GObject.ParamFlags.READWRITE, ''), }, }, class NMDeviceConnectionItem extends NMConnectionItem { constructor(section, connection) { super(section, connection); this.connectObject( 'notify::radio-mode', () => this.notify('name'), 'notify::device-name', () => this.notify('name'), this); } get name() { return this.radioMode ? this._connection.get_id() : this.deviceName; } }); const NMDeviceItem = GObject.registerClass({ Properties: { 'single-device-mode': GObject.ParamSpec.boolean('single-device-mode', null, null, GObject.ParamFlags.READWRITE, false), }, }, class NMDeviceItem extends NMSectionItem { constructor(client, device) { super(); if (this.constructor === NMDeviceItem) throw new TypeError(`Cannot instantiate abstract type ${this.constructor.name}`); this._client = client; this._device = device; this._deviceName = ''; this._connectionItems = new Map(); this._itemSorter = new ItemSorter({trackMru: true}); // Item shown in the 0-connections case this._autoConnectItem = this.section.addAction(_('Connect'), () => this._autoConnect(), ''); // Represents the device as a whole when shown this.bind_property('name', this._autoConnectItem.label, 'text', GObject.BindingFlags.SYNC_CREATE); this.bind_property('icon-name', this._autoConnectItem._icon, 'icon-name', GObject.BindingFlags.SYNC_CREATE); this._deactivateItem = this.section.addAction(_('Turn Off'), () => this.deactivateConnection()); this._client.connectObject( 'notify::connectivity', () => this.notify('icon-name'), 'notify::primary-connection', () => this.notify('icon-name'), this); this._device.connectObject( 'notify::available-connections', () => this._syncConnections(), 'notify::active-connection', () => this._activeConnectionChanged(), this); this.connect('notify::single-device-mode', () => this._sync()); this._syncConnections(); this._activeConnectionChanged(); } get timestamp() { const [item] = this._itemSorter.itemsByMru(); return item?.timestamp ?? 0; } _canReachInternet() { if (this._client.primary_connection !== this._device.active_connection) return true; return this._client.connectivity === NM.ConnectivityState.FULL; } _autoConnect() { let connection = new NM.SimpleConnection(); this._client.add_and_activate_connection_async(connection, this._device, null, null, null); } _activeConnectionChanged() { const oldItem = this._connectionItems.get( this._activeConnection?.connection); oldItem?.setActiveConnection(null); this._setActiveConnection(this._device.active_connection); const newItem = this._connectionItems.get( this._activeConnection?.connection); newItem?.setActiveConnection(this._activeConnection); } _syncConnections() { const available = this._device.get_available_connections(); const removed = [...this._connectionItems.keys()] .filter(conn => !available.includes(conn)); for (const conn of removed) this._removeConnection(conn); for (const conn of available) this._addConnection(conn); } _getActivatableItem() { const [lastUsed] = this._itemSorter.itemsByMru(); if (lastUsed?.timestamp > 0) return lastUsed; const [firstItem] = this._itemSorter; if (firstItem) return firstItem; console.assert(this._autoConnectItem.visible, `${this}'s autoConnect item should be visible when otherwise empty`); return this._autoConnectItem; } activate() { super.activate(); if (this._activeConnection) this.deactivateConnection(); else this._getActivatableItem()?.activate(); } activateConnection(connection) { this._client.activate_connection_async(connection, this._device, null, null, null); } deactivateConnection(_activeConnection) { this._device.disconnect(null); } _onConnectionChanged(connection) { const item = this._connectionItems.get(connection); item.updateForConnection(connection); } _resortItem(item) { const pos = this._itemSorter.upsert(item); this.section.moveMenuItem(item, pos); } _addConnection(connection) { if (this._connectionItems.has(connection)) return; connection.connectObject( 'changed', this._onConnectionChanged.bind(this), this); const item = new NMDeviceConnectionItem(this, connection); this.bind_property('radio-mode', item, 'radio-mode', GObject.BindingFlags.SYNC_CREATE); this.bind_property('name', item, 'device-name', GObject.BindingFlags.SYNC_CREATE); this.bind_property('icon-name', item, 'icon-name', GObject.BindingFlags.SYNC_CREATE); item.connectObject( 'notify::name', () => this._resortItem(item), this); const pos = this._itemSorter.upsert(item); this.section.addMenuItem(item, pos); this._connectionItems.set(connection, item); this._sync(); } _removeConnection(connection) { const item = this._connectionItems.get(connection); if (!item) return; this._itemSorter.delete(item); this._connectionItems.delete(connection); item.destroy(); this._sync(); } setDeviceName(name) { this._deviceName = name; this.notify('name'); } _sync() { const nItems = this._connectionItems.size; this.radio_mode = nItems > 1; this.useSubmenu = this.radioMode && !this.singleDeviceMode; this._autoConnectItem.visible = nItems === 0; this._deactivateItem.visible = this.radioMode && this.isActive; } }); const NMWiredDeviceItem = GObject.registerClass( class NMWiredDeviceItem extends NMDeviceItem { get icon_name() { switch (this.state) { case NM.ActiveConnectionState.ACTIVATING: return 'network-wired-acquiring-symbolic'; case NM.ActiveConnectionState.ACTIVATED: return this._canReachInternet() ? 'network-wired-symbolic' : 'network-wired-no-route-symbolic'; default: return 'network-wired-disconnected-symbolic'; } } get name() { return this._deviceName; } _hasCarrier() { if (this._device instanceof NM.DeviceEthernet) return this._device.carrier; else return true; } _sync() { this.visible = this._hasCarrier(); super._sync(); } }); const NMModemDeviceItem = GObject.registerClass( class NMModemDeviceItem extends NMDeviceItem { constructor(client, device) { super(client, device); this._mobileDevice = null; let capabilities = device.current_capabilities; if (device.udi.indexOf('/org/freedesktop/ModemManager1/Modem') === 0) this._mobileDevice = new ModemManager.BroadbandModem(device.udi, capabilities); else if (capabilities & NM.DeviceModemCapabilities.GSM_UMTS) this._mobileDevice = new ModemManager.ModemGsm(device.udi); else if (capabilities & NM.DeviceModemCapabilities.CDMA_EVDO) this._mobileDevice = new ModemManager.ModemCdma(device.udi); else if (capabilities & NM.DeviceModemCapabilities.LTE) this._mobileDevice = new ModemManager.ModemGsm(device.udi); this._mobileDevice?.connectObject( 'notify::operator-name', this._sync.bind(this), 'notify::signal-quality', () => this.notify('icon-name'), this); Main.sessionMode.connectObject('updated', this._sessionUpdated.bind(this), this); this._sessionUpdated(); } get icon_name() { switch (this.state) { case NM.ActiveConnectionState.ACTIVATING: return 'network-cellular-acquiring-symbolic'; case NM.ActiveConnectionState.ACTIVATED: { const qualityString = signalToIcon(this._mobileDevice.signal_quality); return `network-cellular-signal-${qualityString}-symbolic`; } default: return this._activeConnection ? 'network-cellular-signal-none-symbolic' : 'network-cellular-disabled-symbolic'; } } get name() { return this._mobileDevice?.operator_name || this._deviceName; } get wwanPanelSupported() { // Currently, wwan panel doesn't support CDMA_EVDO modems const supportedCaps = NM.DeviceModemCapabilities.GSM_UMTS | NM.DeviceModemCapabilities.LTE; return this._device.current_capabilities & supportedCaps; } _autoConnect() { if (this.wwanPanelSupported) launchSettingsPanel('wwan', 'show-device', this._device.udi); else launchSettingsPanel('network', 'connect-3g', this._device.get_path()); } _sessionUpdated() { this._autoConnectItem.sensitive = Main.sessionMode.hasWindows; } }); const NMBluetoothDeviceItem = GObject.registerClass( class NMBluetoothDeviceItem extends NMDeviceItem { constructor(client, device) { super(client, device); this._device.bind_property('name', this, 'name', GObject.BindingFlags.SYNC_CREATE); } get icon_name() { switch (this.state) { case NM.ActiveConnectionState.ACTIVATING: return 'network-cellular-acquiring-symbolic'; case NM.ActiveConnectionState.ACTIVATED: return 'network-cellular-connected-symbolic'; default: return this._activeConnection ? 'network-cellular-signal-none-symbolic' : 'network-cellular-disabled-symbolic'; } } get name() { return this._device.name; } }); const WirelessNetwork = GObject.registerClass({ Properties: { 'name': GObject.ParamSpec.string( 'name', null, null, GObject.ParamFlags.READABLE, ''), 'icon-name': GObject.ParamSpec.string( 'icon-name', null, null, GObject.ParamFlags.READABLE, ''), 'secure': GObject.ParamSpec.boolean( 'secure', null, null, GObject.ParamFlags.READABLE, false), 'is-active': GObject.ParamSpec.boolean( 'is-active', null, null, GObject.ParamFlags.READABLE, false), 'signal-strength': GObject.ParamSpec.uint( 'signal-strength', null, null, GObject.ParamFlags.READABLE, 0), }, Signals: { 'destroy': {}, }, }, class WirelessNetwork extends GObject.Object { static _securityTypes = Object.values(NM.UtilsSecurityType).sort((a, b) => b - a); _init(device) { super._init(); this._device = device; this._device.connectObject( 'notify::active-access-point', () => this.notify('is-active'), 'notify::active-connection', () => this.notify('is-active'), this); this._accessPoints = new Set(); this._connections = []; this._name = ''; this._ssid = null; this._bestAp = null; this._mode = 0; this._securityType = NM.UtilsSecurityType.NONE; } get signal_strength() { return this._bestAp?.strength ?? 0; } get name() { return this._name; } get icon_name() { if (this._mode === NM80211Mode.ADHOC) return 'network-workgroup-symbolic'; if (!this._bestAp) return ''; return `network-wireless-signal-${signalToIcon(this._bestAp.strength)}-symbolic`; } get secure() { return this._securityType !== NM.UtilsSecurityType.NONE && this._securityType !== NM.UtilsSecurityType.UNKOWN && this._securityType !== NM.UtilsSecurityType.OWE && this._securityType !== NM.UtilsSecurityType.OWE_TM; } get is_active() { if (this._accessPoints.has(this._device.activeAccessPoint)) return true; const {activeConnection} = this._device; if (activeConnection) return this._connections.includes(activeConnection.connection); return false; } hasAccessPoint(ap) { return this._accessPoints.has(ap); } hasAccessPoints() { return this._accessPoints.size > 0; } checkAccessPoint(ap) { if (!ap.get_ssid()) return false; const secType = this._getApSecurityType(ap); if (secType === NM.UtilsSecurityType.INVALID) return false; if (this._accessPoints.size === 0) return true; return this._ssid.equal(ap.ssid) && this._mode === ap.mode && this._securityType === secType; } /** * @param {NM.AccessPoint} ap - an access point * @returns {bool} - whether the access point was added */ addAccessPoint(ap) { if (!this.checkAccessPoint(ap)) return false; if (this._accessPoints.size === 0) { this._ssid = ap.get_ssid(); this._mode = ap.mode; this._securityType = this._getApSecurityType(ap); this._name = NM.utils_ssid_to_utf8(this._ssid.get_data()) || ''; this.notify('name'); this.notify('secure'); } const wasActive = this.is_active; this._accessPoints.add(ap); ap.connectObject( 'notify::strength', () => { this.notify('icon-name'); this.notify('signal-strength'); this._updateBestAp(); }, this); this._updateBestAp(); if (wasActive !== this.is_active) this.notify('is-active'); return true; } /** * @param {NM.AccessPoint} ap - an access point * @returns {bool} - whether the access point was removed */ removeAccessPoint(ap) { const wasActive = this.is_active; if (!this._accessPoints.delete(ap)) return false; ap.disconnectObject(this); this._updateBestAp(); if (wasActive !== this.is_active) this.notify('is-active'); return true; } /** * @param {WirelessNetwork} other - network to compare with * @returns {number} - the sort order */ compare(other) { // place known connections first const cmpConnections = other.hasConnections() - this.hasConnections(); if (cmpConnections !== 0) return cmpConnections; const cmpAps = other.hasAccessPoints() - this.hasAccessPoints(); if (cmpAps !== 0) return cmpAps; // place stronger connections first const cmpStrength = other.signal_strength - this.signal_strength; if (cmpStrength !== 0) return cmpStrength; // place secure connections first const cmpSec = other.secure - this.secure; if (cmpSec !== 0) return cmpSec; // sort alphabetically return GLib.utf8_collate(this._name, other._name); } hasConnections() { return this._connections.length > 0; } checkConnections(connections) { const aps = [...this._accessPoints]; this._connections = connections.filter( c => aps.some(ap => ap.connection_valid(c))); } canAutoconnect() { const canAutoconnect = this._securityType !== NM.UtilsSecurityType.WPA_ENTERPRISE && this._securityType !== NM.UtilsSecurityType.WPA2_ENTERPRISE; return canAutoconnect; } activate() { const [ap] = this._accessPoints; let [conn] = this._connections; if (conn) { this._device.client.activate_connection_async(conn, this._device, null, null, null); } else if (!this.canAutoconnect()) { launchSettingsPanel('wifi', 'connect-8021x-wifi', this._getDeviceDBusPath(), ap.get_path()); } else { conn = new NM.SimpleConnection(); const permission = Polkit.Permission.new_sync('org.freedesktop.NetworkManager.settings.modify.system', null, null); let allowedToShare = false; if (permission) allowedToShare = permission.get_allowed(); if (!allowedToShare) { const setting = new NM.SettingConnection(); setting.add_permission('user', GLib.get_user_name(), null); conn.add_setting(setting); } this._device.client.add_and_activate_connection_async( conn, this._device, ap.get_path(), null, null); } } destroy() { this.emit('destroy'); } _getDeviceDBusPath() { // nm_object_get_path() is shadowed by nm_device_get_path() return NM.Object.prototype.get_path.call(this._device); } _getApSecurityType(ap) { const {wirelessCapabilities: caps} = this._device; const {flags, wpaFlags, rsnFlags} = ap; const haveAp = true; const adHoc = ap.mode === NM80211Mode.ADHOC; const bestType = WirelessNetwork._securityTypes .find(t => NM.utils_security_valid(t, caps, haveAp, adHoc, flags, wpaFlags, rsnFlags)); return bestType ?? NM.UtilsSecurityType.INVALID; } _updateBestAp() { const [bestAp] = [...this._accessPoints].sort((a, b) => b.strength - a.strength); if (this._bestAp === bestAp) return; this._bestAp = bestAp; this.notify('icon-name'); } }); registerDestroyableType(WirelessNetwork); const NMWirelessNetworkItem = GObject.registerClass( class NMWirelessNetworkItem extends PopupMenu.PopupBaseMenuItem { _init(network) { super._init({style_class: 'nm-network-item'}); this._network = network; const icons = new St.BoxLayout(); this.add_child(icons); this._signalIcon = new St.Icon({style_class: 'popup-menu-icon'}); icons.add_child(this._signalIcon); this._secureIcon = new St.Icon({ style_class: 'wireless-secure-icon', y_align: Clutter.ActorAlign.END, }); icons.add_child(this._secureIcon); this._label = new St.Label(); this.add_child(this._label); this._selectedIcon = new St.Icon({ style_class: 'popup-menu-icon', icon_name: 'object-select-symbolic', }); this.add_child(this._selectedIcon); this._network.bind_property('icon-name', this._signalIcon, 'icon-name', GObject.BindingFlags.SYNC_CREATE); this._network.bind_property('name', this._label, 'text', GObject.BindingFlags.SYNC_CREATE); this._network.bind_property('is-active', this._selectedIcon, 'visible', GObject.BindingFlags.SYNC_CREATE); this._network.bind_property_full('secure', this._secureIcon, 'icon-name', GObject.BindingFlags.SYNC_CREATE, (bind, source) => [true, source ? 'network-wireless-encrypted-symbolic' : ''], null); this._network.connectObject( 'notify::is-active', () => this._isActiveChanged(), 'notify::secure', () => this._updateAccessibleName(), 'notify::signal-strength', () => this._updateAccessibleName(), this); } get network() { return this._network; } _isActiveChanged() { if (this._network.is_active) this.add_accessible_state(Atk.StateType.CHECKED); else this.remove_accessible_state(Atk.StateType.CHECKED); } _updateAccessibleName() { const secureString = this._network.secure ? _('Secure') : _('Not secure'); let signalStrengthString = _('Signal strength %s%%').format(this._network.signal_strength); // translators: The first placeholder is the network name, the second and indication whether it is secure, and the last the signal strength indication this.accessible_name = _('%s, %s, %s').format(this._label.text, secureString, signalStrengthString); } }); const NMWirelessDeviceItem = GObject.registerClass({ Properties: { 'is-hotspot': GObject.ParamSpec.boolean('is-hotspot', null, null, GObject.ParamFlags.READABLE, false), 'single-device-mode': GObject.ParamSpec.boolean('single-device-mode', null, null, GObject.ParamFlags.READWRITE, false), }, }, class NMWirelessDeviceItem extends NMSectionItem { constructor(client, device) { super(); this._client = client; this._device = device; this._deviceName = ''; this._networkItems = new Map(); this._itemSorter = new ItemSorter({ sortFunc: (one, two) => one.network.compare(two.network), }); this._client.connectObject( 'notify::wireless-enabled', () => this.notify('icon-name'), 'notify::connectivity', () => this.notify('icon-name'), 'notify::primary-connection', () => this.notify('icon-name'), this); this._device.connectObject( 'notify::active-access-point', this._activeApChanged.bind(this), 'notify::active-connection', () => this._activeConnectionChanged(), 'notify::available-connections', () => this._availableConnectionsChanged(), 'state-changed', () => this.notify('is-hotspot'), 'access-point-added', (d, ap) => { this._addAccessPoint(ap); this._updateItemsVisibility(); }, 'access-point-removed', (d, ap) => { this._removeAccessPoint(ap); this._updateItemsVisibility(); }, this); this.bind_property('single-device-mode', this, 'use-submenu', GObject.BindingFlags.INVERT_BOOLEAN); Main.sessionMode.connectObject('updated', () => this._updateItemsVisibility(), this); for (const ap of this._device.get_access_points()) this._addAccessPoint(ap); this._activeApChanged(); this._activeConnectionChanged(); this._availableConnectionsChanged(); this._updateItemsVisibility(); this.connect('destroy', () => { for (const net of this._networkItems.keys()) net.destroy(); }); } get icon_name() { if (!this._device.client.wireless_enabled) return 'network-wireless-disabled-symbolic'; switch (this.state) { case NM.ActiveConnectionState.ACTIVATING: return 'network-wireless-acquiring-symbolic'; case NM.ActiveConnectionState.ACTIVATED: { if (this.is_hotspot) return 'network-wireless-hotspot-symbolic'; if (!this._canReachInternet()) return 'network-wireless-no-route-symbolic'; if (!this._activeAccessPoint) { if (this._device.mode !== NM80211Mode.ADHOC) console.info('An active wireless connection, in infrastructure mode, involves no access point?'); return 'network-wireless-connected-symbolic'; } const {strength} = this._activeAccessPoint; return `network-wireless-signal-${signalToIcon(strength)}-symbolic`; } default: return 'network-wireless-signal-none-symbolic'; } } get name() { if (this.is_hotspot) /* Translators: %s is a network identifier */ return _('%s Hotspot').format(this._deviceName); const {ssid} = this._activeAccessPoint ?? {}; if (ssid) return ssidToLabel(ssid); // Use connection name when connected to hidden AP const {activeConnection} = this._device; if (activeConnection) return activeConnection.connection.get_id(); return this._deviceName; } get is_hotspot() { if (!this._device.active_connection) return false; const {connection} = this._device.active_connection; if (!connection) return false; let ip4config = connection.get_setting_ip4_config(); if (!ip4config) return false; return ip4config.get_method() === NM.SETTING_IP4_CONFIG_METHOD_SHARED; } activate() { if (!this.is_hotspot) return; const {activeConnection} = this._device; this._client.deactivate_connection_async(activeConnection, null, null); } _activeApChanged() { this._activeAccessPoint?.disconnectObject(this); this._activeAccessPoint = this._device.active_access_point; this._activeAccessPoint?.connectObject( 'notify::strength', () => this.notify('icon-name'), 'notify::ssid', () => this.notify('name'), this); this.notify('icon-name'); this.notify('name'); } _activeConnectionChanged() { this._setActiveConnection(this._device.active_connection); } _availableConnectionsChanged() { const connections = this._device.get_available_connections(); for (const net of this._networkItems.keys()) net.checkConnections(connections); } _addAccessPoint(ap) { if (ap.get_ssid() == null) { // This access point is not visible yet // Wait for it to get a ssid ap.connectObject('notify::ssid', () => { if (!ap.ssid) return; ap.disconnectObject(this); this._addAccessPoint(ap); }, this); return; } let network = [...this._networkItems.keys()] .find(n => n.checkAccessPoint(ap)); if (!network) { network = new WirelessNetwork(this._device); const item = new NMWirelessNetworkItem(network); item.connect('activate', () => network.activate()); network.connectObject( 'notify::icon-name', () => this._resortItem(item), 'notify::is-active', () => this._resortItem(item), this); const pos = this._itemSorter.upsert(item); this.section.addMenuItem(item, pos); this._networkItems.set(network, item); } network.addAccessPoint(ap); } _removeAccessPoint(ap) { const network = [...this._networkItems.keys()] .find(n => n.removeAccessPoint(ap)); if (!network || network.hasAccessPoints()) return; const item = this._networkItems.get(network); this._itemSorter.delete(item); this._networkItems.delete(network); item?.destroy(); network.destroy(); } _resortItem(item) { const pos = this._itemSorter.upsert(item); this.section.moveMenuItem(item, pos); this._updateItemsVisibility(); } _updateItemsVisibility() { const {hasWindows} = Main.sessionMode; let nVisible = 0; for (const item of this._itemSorter) { const {network: net} = item; item.visible = (hasWindows || net.hasConnections() || net.canAutoconnect()) && nVisible < MAX_VISIBLE_NETWORKS; if (item.visible) nVisible++; } } setDeviceName(name) { this._deviceName = name; this.notify('name'); } _canReachInternet() { if (this._client.primary_connection !== this._device.active_connection) return true; return this._client.connectivity === NM.ConnectivityState.FULL; } }); const NMVpnConnectionItem = GObject.registerClass({ Signals: { 'activation-failed': {}, }, }, class NMVpnConnectionItem extends NMConnectionItem { constructor(section, connection) { super(section, connection); this._label.x_expand = true; this.accessible_role = Atk.Role.CHECK_MENU_ITEM; this._icon.hide(); this.label_actor = this._label; this._switch = new PopupMenu.Switch(this.is_active); this.add_child(this._switch); this.bind_property('is-active', this._switch, 'state', GObject.BindingFlags.SYNC_CREATE); this.bind_property('name', this._label, 'text', GObject.BindingFlags.SYNC_CREATE); } _sync() { if (this.is_active) this.add_accessible_state(Atk.StateType.CHECKED); else this.remove_accessible_state(Atk.StateType.CHECKED); } _activeConnectionStateChanged() { const state = this._activeConnection?.get_state(); const reason = this._activeConnection?.get_state_reason(); if (state === NM.ActiveConnectionState.DEACTIVATED && reason !== NM.ActiveConnectionStateReason.NO_SECRETS && reason !== NM.ActiveConnectionStateReason.USER_DISCONNECTED) this.emit('activation-failed'); super._activeConnectionStateChanged(); } get icon_name() { switch (this.state) { case NM.ActiveConnectionState.ACTIVATING: return 'network-vpn-acquiring-symbolic'; case NM.ActiveConnectionState.ACTIVATED: return 'network-vpn-symbolic'; default: return 'network-vpn-disabled-symbolic'; } } set icon_name(_ignored) { } }); const NMToggle = GObject.registerClass({ Signals: { 'activation-failed': {}, }, }, class NMToggle extends QuickMenuToggle { constructor() { super(); this._items = new Map(); this._itemSorter = new ItemSorter({trackMru: true}); this._itemsSection = new PopupMenu.PopupMenuSection(); this.menu.addMenuItem(this._itemsSection); this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); this._itemBinding = new GObject.BindingGroup(); this._itemBinding.bind('icon-name', this, 'icon-name', GObject.BindingFlags.DEFAULT); this._itemBinding.bind_property_full('source', this, 'title', GObject.BindingFlags.DEFAULT, () => [true, this._getDefaultName()], null); this._itemBinding.bind_full('name', this, 'subtitle', GObject.BindingFlags.DEFAULT, (bind, source) => [true, this._transformSubtitle(source)], null); this.connect('clicked', () => this.activate()); } setClient(client) { if (this._client === client) return; this._client?.disconnectObject(this); this._client = client; this._client?.connectObject( 'notify::networking-enabled', () => this._sync(), this); this._items.forEach(item => item.destroy()); this._items.clear(); if (this._client) this._loadInitialItems(); this._sync(); } activate() { const activeItems = [...this._getActiveItems()]; if (activeItems.length > 0) activeItems.forEach(i => i.activate()); else this._itemBinding.source?.activate(); } _loadInitialItems() { throw new GObject.NotImplementedError(); } // transform function for property binding: // Ignore the provided label if there are multiple active // items, and replace it with something like "2 connected" _transformSubtitle(source) { const nActive = this.checked ? [...this._getActiveItems()].length : 0; if (nActive > 1) return ngettext('%d connected', '%d connected', nActive).format(nActive); return source; } _updateItemsVisibility() { [...this._itemSorter.itemsByMru()].forEach( (item, i) => (item.visible = i < MAX_VISIBLE_NETWORKS)); } _itemActiveChanged() { // force an update in case we changed // from or to multiple active items this._itemBinding.source?.notify('name'); this._sync(); } _updateChecked() { const [firstActive] = this._getActiveItems(); this.checked = !!firstActive; } _resortItem(item) { const pos = this._itemSorter.upsert(item); this._itemsSection.moveMenuItem(item, pos); } _addItem(key, item) { console.assert(!this._items.has(key), `${this} already has an item for ${key}`); item.connectObject( 'notify::is-active', () => this._itemActiveChanged(), 'notify::name', () => this._resortItem(item), 'destroy', () => this._removeItem(key), this); this._items.set(key, item); const pos = this._itemSorter.upsert(item); this._itemsSection.addMenuItem(item, pos); this._sync(); } _removeItem(key) { const item = this._items.get(key); if (!item) return; this._itemSorter.delete(item); this._items.delete(key); item.destroy(); this._sync(); } *_getActiveItems() { for (const item of this._itemSorter) { if (item.is_active) yield item; } } _getPrimaryItem() { // prefer active items const [firstActive] = this._getActiveItems(); if (firstActive) return firstActive; // otherwise prefer the most-recently used const [lastUsed] = this._itemSorter.itemsByMru(); if (lastUsed?.timestamp > 0) return lastUsed; // as a last resort, return the top-most visible item for (const item of this._itemSorter) { if (item.visible) return item; } console.assert(!this.visible, `${this} should not be visible when empty`); return null; } _sync() { this.visible = this._client?.networking_enabled && this._items.size > 0; this._updateItemsVisibility(); this._updateChecked(); this._itemBinding.source = this._getPrimaryItem(); } }); const NMVpnToggle = GObject.registerClass( class NMVpnToggle extends NMToggle { constructor() { super(); this.menu.setHeader('network-vpn-symbolic', _('VPN')); this.menu.addSettingsAction(_('VPN Settings'), 'gnome-network-panel.desktop'); } setClient(client) { super.setClient(client); this._client?.connectObject( 'connection-added', (c, conn) => this._addConnection(conn), 'connection-removed', (c, conn) => this._removeConnection(conn), 'notify::active-connections', () => this._syncActiveConnections(), this); } _getDefaultName() { return _('VPN'); } _loadInitialItems() { const connections = this._client.get_connections(); for (const conn of connections) this._addConnection(conn); this._syncActiveConnections(); } _syncActiveConnections() { const activeConnections = this._client.get_active_connections().filter( c => this._shouldHandleConnection(c.connection)); for (const item of this._items.values()) item.setActiveConnection(null); for (const a of activeConnections) this._items.get(a.connection)?.setActiveConnection(a); } _shouldHandleConnection(connection) { const setting = connection.get_setting_connection(); if (!setting) return false; // Ignore slave connection if (setting.get_master()) return false; const handledTypes = [ NM.SETTING_VPN_SETTING_NAME, NM.SETTING_WIREGUARD_SETTING_NAME, ]; return handledTypes.includes(setting.type); } _onConnectionChanged(connection) { const item = this._items.get(connection); item.updateForConnection(connection); } _addConnection(connection) { if (this._items.has(connection)) return; if (!this._shouldHandleConnection(connection)) return; connection.connectObject( 'changed', this._onConnectionChanged.bind(this), this); const item = new NMVpnConnectionItem(this, connection); item.connectObject( 'activation-failed', () => this.emit('activation-failed'), this); this._addItem(connection, item); // FIXME: NM is emitting "connection-added" after "notify::active-connections", // so we need to sync connections here once again. this._syncActiveConnections(); } _removeConnection(connection) { this._removeItem(connection); } activateConnection(connection) { this._client.activate_connection_async(connection, null, null, null, null); } deactivateConnection(activeConnection) { this._client.deactivate_connection(activeConnection, null); } }); const NMDeviceToggle = GObject.registerClass( class NMDeviceToggle extends NMToggle { constructor(deviceType) { super(); this._deviceType = deviceType; this._nmDevices = new Set(); this._deviceNames = new Map(); } setClient(client) { this._nmDevices.clear(); super.setClient(client); this._client?.connectObject( 'device-added', (c, dev) => { this._addDevice(dev); this._syncDeviceNames(); }, 'device-removed', (c, dev) => { this._removeDevice(dev); this._syncDeviceNames(); }, this); } _getDefaultName() { const [dev] = this._nmDevices; const [name] = NM.Device.disambiguate_names([dev]); return name; } _transformSubtitle(source) { const subtitle = super._transformSubtitle(source); if (subtitle === this.title) return null; return subtitle; } _loadInitialItems() { const devices = this._client.get_devices(); for (const dev of devices) this._addDevice(dev); this._syncDeviceNames(); } _shouldShowDevice(device) { switch (device.state) { case NM.DeviceState.DISCONNECTED: case NM.DeviceState.ACTIVATED: case NM.DeviceState.DEACTIVATING: case NM.DeviceState.PREPARE: case NM.DeviceState.CONFIG: case NM.DeviceState.IP_CONFIG: case NM.DeviceState.IP_CHECK: case NM.DeviceState.SECONDARIES: case NM.DeviceState.NEED_AUTH: case NM.DeviceState.FAILED: return true; case NM.DeviceState.UNMANAGED: case NM.DeviceState.UNAVAILABLE: default: return false; } } _syncDeviceNames() { const devices = [...this._nmDevices]; const names = NM.Device.disambiguate_names(devices); this._deviceNames.clear(); devices.forEach( (dev, i) => { this._deviceNames.set(dev, names[i]); this._items.get(dev)?.setDeviceName(names[i]); }); } _syncDeviceItem(device) { if (this._shouldShowDevice(device)) this._ensureDeviceItem(device); else this._removeDeviceItem(device); } _deviceStateChanged(device, newState, oldState, reason) { if (newState === oldState) { console.info(`${device} emitted state-changed without actually changing state`); return; } /* Emit a notification if activation fails, but don't do it if the reason is no secrets, as that indicates the user cancelled the agent dialog */ if (newState === NM.DeviceState.FAILED && reason !== NM.DeviceStateReason.NO_SECRETS) this.emit('activation-failed'); } _createDeviceMenuItem(_device) { throw new GObject.NotImplementedError(); } _ensureDeviceItem(device) { if (this._items.has(device)) return; const item = this._createDeviceMenuItem(device); item.setDeviceName(this._deviceNames.get(device) ?? ''); this._addItem(device, item); } _removeDeviceItem(device) { this._removeItem(device); } _addDevice(device) { if (this._nmDevices.has(device)) return; if (device.get_device_type() !== this._deviceType) return; device.connectObject( 'state-changed', this._deviceStateChanged.bind(this), 'notify::interface', () => this._syncDeviceNames(), 'notify::state', () => this._syncDeviceItem(device), this); this._nmDevices.add(device); this._syncDeviceItem(device); } _removeDevice(device) { if (!this._nmDevices.delete(device)) return; device.disconnectObject(this); this._removeDeviceItem(device); } _sync() { super._sync(); const nItems = this._items.size; this._items.forEach(item => (item.singleDeviceMode = nItems === 1)); } }); const NMWirelessToggle = GObject.registerClass( class NMWirelessToggle extends NMDeviceToggle { constructor() { super(NM.DeviceType.WIFI); this._itemBinding.bind('is-hotspot', this, 'menu-enabled', GObject.BindingFlags.INVERT_BOOLEAN); this._scanningSpinner = new Spinner(16); this.menu.connectObject('open-state-changed', (m, isOpen) => { if (isOpen) this._startScanning(); else this._stopScanning(); }); this.menu.setHeader('network-wireless-symbolic', _('Wi–Fi')); this.menu.addHeaderSuffix(this._scanningSpinner); this.menu.addSettingsAction(_('All Networks'), 'gnome-wifi-panel.desktop'); } setClient(client) { super.setClient(client); this._client?.bind_property('wireless-enabled', this, 'checked', GObject.BindingFlags.SYNC_CREATE); this._client?.bind_property('wireless-hardware-enabled', this, 'reactive', GObject.BindingFlags.SYNC_CREATE); } activate() { const primaryItem = this._itemBinding.source; if (primaryItem?.is_hotspot) primaryItem.activate(); else this._client.wireless_enabled = !this._client.wireless_enabled; } async _scanDevice(device) { const {lastScan} = device; await device.request_scan_async(null); // Wait for the lastScan property to update, which // indicates the end of the scan return new Promise(resolve => { GLib.timeout_add(GLib.PRIORITY_DEFAULT, 1500, () => { if (device.lastScan === lastScan) return GLib.SOURCE_CONTINUE; resolve(); return GLib.SOURCE_REMOVE; }); }); } async _scanDevices() { if (!this._client.wireless_enabled) return; this._scanningSpinner.play(); const devices = [...this._items.keys()]; await Promise.all( devices.map(d => this._scanDevice(d))); this._scanningSpinner.stop(); } _startScanning() { this._scanTimeoutId = GLib.timeout_add_seconds( GLib.PRIORITY_DEFAULT, WIFI_SCAN_FREQUENCY, () => { this._scanDevices().catch(logError); return GLib.SOURCE_CONTINUE; }); this._scanDevices().catch(logError); } _stopScanning() { if (this._scanTimeoutId) GLib.source_remove(this._scanTimeoutId); delete this._scanTimeoutId; } _createDeviceMenuItem(device) { return new NMWirelessDeviceItem(this._client, device); } _updateChecked() { // handled via a property binding } _getPrimaryItem() { const hotspot = [...this._items.values()].find(i => i.is_hotspot); if (hotspot) return hotspot; return super._getPrimaryItem(); } _shouldShowDevice(device) { // don't disappear if wireless-enabled is false if (device.state === NM.DeviceState.UNAVAILABLE) return true; return super._shouldShowDevice(device); } }); const NMWiredToggle = GObject.registerClass( class NMWiredToggle extends NMDeviceToggle { constructor() { super(NM.DeviceType.ETHERNET); this.menu.setHeader('network-wired-symbolic', _('Wired Connections')); this.menu.addSettingsAction(_('Wired Settings'), 'gnome-network-panel.desktop'); } _createDeviceMenuItem(device) { return new NMWiredDeviceItem(this._client, device); } }); const NMBluetoothToggle = GObject.registerClass( class NMBluetoothToggle extends NMDeviceToggle { constructor() { super(NM.DeviceType.BT); this.menu.setHeader('network-cellular-symbolic', _('Bluetooth Tethers')); this.menu.addSettingsAction(_('Bluetooth Settings'), 'gnome-network-panel.desktop'); } _getDefaultName() { // Translators: "Tether" from "Bluetooth Tether" return _('Tether'); } _createDeviceMenuItem(device) { return new NMBluetoothDeviceItem(this._client, device); } }); const NMModemToggle = GObject.registerClass( class NMModemToggle extends NMDeviceToggle { constructor() { super(NM.DeviceType.MODEM); this.menu.setHeader('network-cellular-symbolic', _('Mobile Connections')); const settingsLabel = _('Mobile Broadband Settings'); this._wwanSettings = this.menu.addSettingsAction(settingsLabel, 'gnome-wwan-panel.desktop'); this._legacySettings = this.menu.addSettingsAction(settingsLabel, 'gnome-network-panel.desktop'); } _getDefaultName() { // Translators: "Mobile" from "Mobile Broadband" return _('Mobile'); } _createDeviceMenuItem(device) { return new NMModemDeviceItem(this._client, device); } _sync() { super._sync(); const useWwanPanel = [...this._items.values()].some(i => i.wwanPanelSupported); this._wwanSettings.visible = useWwanPanel; this._legacySettings.visible = !useWwanPanel; } }); class CaptivePortalHandler extends Signals.EventEmitter { constructor(checkUri) { super(); this._checkUri = checkUri; this._connectivityQueue = new Set(); this._notifications = new Map(); this._portalHelperProxy = null; } addConnection(name, path) { if (this._connectivityQueue.has(path) || this._notifications.has(path)) return; const source = MessageTray.getSystemSource(); const notification = new MessageTray.Notification({ title: _('Sign Into Wi–Fi Network'), body: name, source, }); notification.connect('activated', () => this._onNotificationActivated(path)); notification.connect('destroy', () => this._notifications.delete(path)); this._notifications.set(path, notification); source.addNotification(notification); } removeConnection(path) { if (this._connectivityQueue.delete(path)) this._portalHelperProxy?.CloseAsync(path); this._notifications.get(path)?.destroy( MessageTray.NotificationDestroyedReason.SOURCE_CLOSED); this._notifications.delete(path); } _onNotificationActivated(path) { const context = global.create_app_launch_context( global.get_current_time(), -1); if (Config.HAVE_PORTAL_HELPER) this._launchPortalHelper(path, context).catch(logError); else Gio.AppInfo.launch_default_for_uri(this._checkUri, context); Main.overview.hide(); Main.panel.closeCalendar(); } _portalHelperDone(parameters) { const [path, result] = parameters; if (result === PortalHelperResult.CANCELLED) { // Keep the connection in the queue, so the user is not // spammed with more logins until we next flush the queue, // which will happen once they choose a better connection // or we get to full connectivity through other means } else if (result === PortalHelperResult.COMPLETED) { this.removeConnection(path); } else if (result === PortalHelperResult.RECHECK) { this.emit('recheck', path); } else { log(`Invalid result from portal helper: ${result}`); } } async _launchPortalHelper(path, context) { if (!this._portalHelperProxy) { this._portalHelperProxy = new Gio.DBusProxy({ g_connection: Gio.DBus.session, g_name: 'org.gnome.Shell.PortalHelper', g_object_path: '/org/gnome/Shell/PortalHelper', g_interface_name: PortalHelperInfo.name, g_interface_info: PortalHelperInfo, }); this._portalHelperProxy.connectSignal('Done', (proxy, emitter, params) => { this._portalHelperDone(params); }); try { await this._portalHelperProxy.init_async( GLib.PRIORITY_DEFAULT, null); } catch (e) { console.error(`Error launching the portal helper: ${e.message}`); } } const {timestamp} = context; this._portalHelperProxy?.AuthenticateAsync(path, this._checkUri, timestamp).catch(logError); this._connectivityQueue.add(path); } clear() { for (const item of this._connectivityQueue) this._portalHelperProxy?.CloseAsync(item); this._connectivityQueue.clear(); for (const n of this._notifications.values()) n.destroy(MessageTray.NotificationDestroyedReason.SOURCE_CLOSED); this._notifications.clear(); } } export const Indicator = GObject.registerClass( class Indicator extends SystemIndicator { _init() { super._init(); this._portalHandler = null; this._mainConnection = null; this._notification = null; this._wiredToggle = new NMWiredToggle(); this._wirelessToggle = new NMWirelessToggle(); this._modemToggle = new NMModemToggle(); this._btToggle = new NMBluetoothToggle(); this._vpnToggle = new NMVpnToggle(); this._deviceToggles = new Map([ [NM.DeviceType.ETHERNET, this._wiredToggle], [NM.DeviceType.WIFI, this._wirelessToggle], [NM.DeviceType.MODEM, this._modemToggle], [NM.DeviceType.BT, this._btToggle], ]); this.quickSettingsItems.push(...this._deviceToggles.values()); this.quickSettingsItems.push(this._vpnToggle); this.quickSettingsItems.forEach(toggle => { toggle.connectObject( 'activation-failed', () => this._onActivationFailed(), this); }); this._primaryIndicator = this._addIndicator(); this._vpnIndicator = this._addIndicator(); this._primaryIndicatorBinding = new GObject.BindingGroup(); this._primaryIndicatorBinding.bind('icon-name', this._primaryIndicator, 'icon-name', GObject.BindingFlags.DEFAULT); this._vpnToggle.bind_property('checked', this._vpnIndicator, 'visible', GObject.BindingFlags.SYNC_CREATE); this._vpnToggle.bind_property('icon-name', this._vpnIndicator, 'icon-name', GObject.BindingFlags.SYNC_CREATE); this._getClient().catch(logError); } async _getClient() { this._client = await NM.Client.new_async(null); this.quickSettingsItems.forEach( toggle => toggle.setClient(this._client)); this._client.bind_property('nm-running', this, 'visible', GObject.BindingFlags.SYNC_CREATE); const {connectivityCheckUri} = this._client; this._portalHandler = new CaptivePortalHandler(connectivityCheckUri); this._portalHandler.connect('recheck', async (o, path) => { try { const state = await this._client.check_connectivity_async(null); if (state >= NM.ConnectivityState.FULL) this._portalHandler.removeConnection(path); } catch (e) { } }); this._client.connectObject( 'notify::primary-connection', () => this._syncMainConnection(), 'notify::activating-connection', () => this._syncMainConnection(), 'notify::connectivity', () => this._syncConnectivity(), this); this._syncMainConnection(); try { this._configPermission = await Polkit.Permission.new( 'org.freedesktop.NetworkManager.network-control', null, null); this.quickSettingsItems.forEach(toggle => { this._configPermission.bind_property('allowed', toggle, 'reactive', GObject.BindingFlags.SYNC_CREATE); }); } catch (e) { log(`No permission to control network connections: ${e}`); this._configPermission = null; } } _onActivationFailed() { this._notification?.destroy(); const source = MessageTray.getSystemSource(); this._notification = new MessageTray.Notification({ source, title: _('Connection failed'), body: _('Activation of network connection failed'), iconName: 'network-error-symbolic', urgency: MessageTray.Urgency.HIGH, isTransient: true, }); this._notification.connect('destroy', () => (this._notification = null)); source.addNotification(this._notification); } _syncMainConnection() { this._mainConnection?.disconnectObject(this); this._mainConnection = this._client.get_primary_connection() || this._client.get_activating_connection(); if (this._mainConnection) { this._mainConnection.connectObject('notify::state', this._mainConnectionStateChanged.bind(this), this); this._mainConnectionStateChanged(); } this._updateIcon(); this._syncConnectivity(); } _mainConnectionStateChanged() { if (this._mainConnection.state === NM.ActiveConnectionState.ACTIVATED) this._notification?.destroy(); } _syncConnectivity() { if (this._mainConnection == null || this._mainConnection.state !== NM.ActiveConnectionState.ACTIVATED) { this._portalHandler.clear(); return; } let isPortal = this._client.connectivity === NM.ConnectivityState.PORTAL; // For testing, allow interpreting any value != FULL as PORTAL, because // LIMITED (no upstream route after the default gateway) is easy to obtain // with a tethered phone // NONE is also possible, with a connection configured to force no default route // (but in general we should only prompt a portal if we know there is a portal) if (GLib.getenv('GNOME_SHELL_CONNECTIVITY_TEST') != null) isPortal ||= this._client.connectivity < NM.ConnectivityState.FULL; if (!isPortal || Main.sessionMode.isGreeter) return; this._portalHandler.addConnection( this._mainConnection.get_id(), this._mainConnection.get_path()); } _updateIcon() { const [dev] = this._mainConnection?.get_devices() ?? []; const primaryToggle = this._deviceToggles.get(dev?.device_type) ?? null; this._primaryIndicatorBinding.source = primaryToggle; if (!primaryToggle) { if (this._client.connectivity === NM.ConnectivityState.FULL) this._primaryIndicator.icon_name = 'network-wired-symbolic'; else this._primaryIndicator.icon_name = 'network-wired-no-route-symbolic'; } const state = this._client.get_state(); const connected = state === NM.State.CONNECTED_GLOBAL; this._primaryIndicator.visible = (primaryToggle != null) || connected; } }); 070701000001F1000081A40000000000000000000000016712993F000008B6000000000000000000000000000000000000002C00000000gnome-shell-47.1/js/ui/status/nightLight.jsimport Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import {QuickToggle, SystemIndicator} from '../quickSettings.js'; import {loadInterfaceXML} from '../../misc/fileUtils.js'; const BUS_NAME = 'org.gnome.SettingsDaemon.Color'; const OBJECT_PATH = '/org/gnome/SettingsDaemon/Color'; const ColorInterface = loadInterfaceXML('org.gnome.SettingsDaemon.Color'); const colorInfo = Gio.DBusInterfaceInfo.new_for_xml(ColorInterface); const NightLightToggle = GObject.registerClass( class NightLightToggle extends QuickToggle { _init() { super._init({ title: _('Night Light'), iconName: 'night-light-symbolic', toggleMode: true, }); const monitorManager = global.backend.get_monitor_manager(); monitorManager.bind_property('night-light-supported', this, 'visible', GObject.BindingFlags.SYNC_CREATE); this._settings = new Gio.Settings({ schema_id: 'org.gnome.settings-daemon.plugins.color', }); this._settings.bind('night-light-enabled', this, 'checked', Gio.SettingsBindFlags.DEFAULT); } }); export const Indicator = GObject.registerClass( class Indicator extends SystemIndicator { _init() { super._init(); this._indicator = this._addIndicator(); this._indicator.icon_name = 'night-light-symbolic'; this.quickSettingsItems.push(new NightLightToggle()); this._proxy = new Gio.DBusProxy({ g_connection: Gio.DBus.session, g_name: BUS_NAME, g_object_path: OBJECT_PATH, g_interface_name: colorInfo.name, g_interface_info: colorInfo, }); this._proxy.connect('g-properties-changed', (p, properties) => { const nightLightActiveChanged = !!properties.lookup_value('NightLightActive', null); if (nightLightActiveChanged) this._sync(); }); this._proxy.init_async(GLib.PRIORITY_DEFAULT, null) .catch(e => console.error(e.message)); this._sync(); } _sync() { this._indicator.visible = this._proxy.NightLightActive; } }); 070701000001F2000081A40000000000000000000000016712993F00000FEF000000000000000000000000000000000000002F00000000gnome-shell-47.1/js/ui/status/powerProfiles.jsimport Gio from 'gi://Gio'; import GObject from 'gi://GObject'; import {QuickMenuToggle, SystemIndicator} from '../quickSettings.js'; import * as PopupMenu from '../popupMenu.js'; import {loadInterfaceXML} from '../../misc/fileUtils.js'; const BUS_NAME = 'net.hadess.PowerProfiles'; const OBJECT_PATH = '/net/hadess/PowerProfiles'; const PowerProfilesIface = loadInterfaceXML('net.hadess.PowerProfiles'); const PowerProfilesProxy = Gio.DBusProxy.makeProxyWrapper(PowerProfilesIface); const PROFILE_PARAMS = { 'performance': { name: C_('Power profile', 'Performance'), iconName: 'power-profile-performance-symbolic', }, 'balanced': { name: C_('Power profile', 'Balanced'), iconName: 'power-profile-balanced-symbolic', }, 'power-saver': { name: C_('Power profile', 'Power Saver'), iconName: 'power-profile-power-saver-symbolic', }, }; const LAST_PROFILE_KEY = 'last-selected-power-profile'; const PowerProfilesToggle = GObject.registerClass( class PowerProfilesToggle extends QuickMenuToggle { _init() { super._init({title: _('Power Mode')}); this._profileItems = new Map(); this.connect('clicked', () => { this._proxy.ActiveProfile = this.checked ? 'balanced' : global.settings.get_string(LAST_PROFILE_KEY); }); this._proxy = new PowerProfilesProxy(Gio.DBus.system, BUS_NAME, OBJECT_PATH, (proxy, error) => { if (error) { log(error.message); } else { this._proxy.connect('g-properties-changed', (p, properties) => { const profilesChanged = !!properties.lookup_value('Profiles', null); if (profilesChanged) this._syncProfiles(); this._sync(); }); if (this._proxy.g_name_owner) this._syncProfiles(); } this._sync(); }); this._profileSection = new PopupMenu.PopupMenuSection(); this.menu.addMenuItem(this._profileSection); this.menu.setHeader('power-profile-balanced-symbolic', _('Power Mode')); this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); this.menu.addSettingsAction(_('Power Settings'), 'gnome-power-panel.desktop'); this._sync(); } _syncProfiles() { this._profileSection.removeAll(); this._profileItems.clear(); const profiles = this._proxy.Profiles .map(p => p.Profile.unpack()) .reverse(); for (const profile of profiles) { const {name, iconName} = PROFILE_PARAMS[profile]; if (!name) continue; const item = new PopupMenu.PopupImageMenuItem(name, iconName); item.connect('activate', () => (this._proxy.ActiveProfile = profile)); this._profileItems.set(profile, item); this._profileSection.addMenuItem(item); } this.menuEnabled = this._profileItems.size > 2; } _sync() { this.visible = this._proxy.g_name_owner !== null; if (!this.visible) return; const {ActiveProfile: activeProfile} = this._proxy; for (const [profile, item] of this._profileItems) { item.setOrnament(profile === activeProfile ? PopupMenu.Ornament.CHECK : PopupMenu.Ornament.NONE); } const {name: subtitle, iconName} = PROFILE_PARAMS[activeProfile]; this.set({subtitle, iconName}); this.checked = activeProfile !== 'balanced'; if (this.checked) global.settings.set_string(LAST_PROFILE_KEY, activeProfile); } }); export const Indicator = GObject.registerClass( class Indicator extends SystemIndicator { _init() { super._init(); this.quickSettingsItems.push(new PowerProfilesToggle()); } }); 070701000001F3000081A40000000000000000000000016712993F00001B49000000000000000000000000000000000000002E00000000gnome-shell-47.1/js/ui/status/remoteAccess.jsimport Atk from 'gi://Atk'; import Clutter from 'gi://Clutter'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import Meta from 'gi://Meta'; import St from 'gi://St'; import * as Main from '../main.js'; import * as PanelMenu from '../panelMenu.js'; import {SystemIndicator} from '../quickSettings.js'; // Minimum amount of time the shared indicator is visible (in micro seconds) const MIN_SHARED_INDICATOR_VISIBLE_TIME_US = 5 * GLib.TIME_SPAN_SECOND; export const RemoteAccessApplet = GObject.registerClass( class RemoteAccessApplet extends SystemIndicator { _init() { super._init(); let controller = global.backend.get_remote_access_controller(); if (!controller) return; this._handles = new Set(); this._indicator = this._addIndicator(); this._indicator.icon_name = 'media-record-symbolic'; this._indicator.add_style_class_name('privacy-indicator'); controller.connect('new-handle', (o, handle) => { this._onNewHandle(handle); }); this._sync(); } _isRecording() { // Screenshot UI screencasts have their own panel, so don't show this // indicator if there's only a screenshot UI screencast. if (Main.screenshotUI.screencast_in_progress) return this._handles.size > 1; return this._handles.size > 0; } _sync() { this._indicator.visible = this._isRecording(); } _onStopped(handle) { this._handles.delete(handle); this._sync(); } _onNewHandle(handle) { if (!handle.is_recording) return; this._handles.add(handle); handle.connect('stopped', this._onStopped.bind(this)); this._sync(); } }); export const ScreenRecordingIndicator = GObject.registerClass({ Signals: {'menu-set': {}}, }, class ScreenRecordingIndicator extends PanelMenu.ButtonBox { _init() { super._init({ reactive: true, can_focus: true, track_hover: true, accessible_name: _('Stop Screencast'), accessible_role: Atk.Role.PUSH_BUTTON, }); this.add_style_class_name('screen-recording-indicator'); this._box = new St.BoxLayout(); this.add_child(this._box); this._label = new St.Label({ text: '0:00', y_align: Clutter.ActorAlign.CENTER, }); this._box.add_child(this._label); this._icon = new St.Icon({icon_name: 'screencast-stop-symbolic'}); this._box.add_child(this._icon); this.hide(); Main.screenshotUI.connect( 'notify::screencast-in-progress', this._onScreencastInProgressChanged.bind(this)); } vfunc_event(event) { if (event.type() === Clutter.EventType.TOUCH_BEGIN || event.type() === Clutter.EventType.BUTTON_PRESS) Main.screenshotUI.stopScreencast(); return Clutter.EVENT_PROPAGATE; } _updateLabel() { const minutes = this._secondsPassed / 60; const seconds = this._secondsPassed % 60; this._label.text = '%d:%02d'.format(minutes, seconds); } _onScreencastInProgressChanged() { if (Main.screenshotUI.screencast_in_progress) { this.show(); this._secondsPassed = 0; this._updateLabel(); this._timeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 1000, () => { this._secondsPassed += 1; this._updateLabel(); return GLib.SOURCE_CONTINUE; }); GLib.Source.set_name_by_id( this._timeoutId, '[gnome-shell] screen recording indicator tick'); } else { this.hide(); GLib.source_remove(this._timeoutId); delete this._timeoutId; delete this._secondsPassed; } } }); export const ScreenSharingIndicator = GObject.registerClass({ Signals: {'menu-set': {}}, }, class ScreenSharingIndicator extends PanelMenu.ButtonBox { _init() { super._init({ reactive: true, can_focus: true, track_hover: true, accessible_name: _('Stop Screen Sharing'), accessible_role: Atk.Role.PUSH_BUTTON, }); this.add_style_class_name('screen-sharing-indicator'); this._box = new St.BoxLayout(); this.add_child(this._box); let icon = new St.Icon({icon_name: 'screen-shared-symbolic'}); this._box.add_child(icon); icon = new St.Icon({icon_name: 'screencast-stop-symbolic'}); this._box.add_child(icon); this._controller = global.backend.get_remote_access_controller(); this._handles = new Set(); this._controller?.connect('new-handle', (o, handle) => this._onNewHandle(handle)); this._sync(); } _onNewHandle(handle) { // We can't possibly know about all types of screen sharing on X11, so // showing these controls on X11 might give a false sense of security. // Thus, only enable these controls when using Wayland, where we are // in control of sharing. if (!Meta.is_wayland_compositor()) return; if (handle.isRecording) return; this._handles.add(handle); handle.connect('stopped', () => { this._handles.delete(handle); this._sync(); }); this._sync(); } vfunc_event(event) { if (event.type() === Clutter.EventType.TOUCH_BEGIN || event.type() === Clutter.EventType.BUTTON_PRESS) this._stopSharing(); return Clutter.EVENT_PROPAGATE; } _stopSharing() { for (const handle of this._handles) handle.stop(); } _hideIndicator() { this.hide(); delete this._hideIndicatorId; return GLib.SOURCE_REMOVE; } _sync() { if (this._hideIndicatorId) { GLib.source_remove(this._hideIndicatorId); delete this._hideIndicatorId; } if (this._handles.size > 0) { if (!this.visible) this._visibleTimeUs = GLib.get_monotonic_time(); this.show(); } else if (this.visible) { const currentTimeUs = GLib.get_monotonic_time(); const timeSinceVisibleUs = currentTimeUs - this._visibleTimeUs; if (timeSinceVisibleUs >= MIN_SHARED_INDICATOR_VISIBLE_TIME_US) { this._hideIndicator(); } else { const timeUntilHideUs = MIN_SHARED_INDICATOR_VISIBLE_TIME_US - timeSinceVisibleUs; this._hideIndicatorId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, timeUntilHideUs / GLib.TIME_SPAN_MILLISECOND, () => this._hideIndicator()); } } } }); 070701000001F4000081A40000000000000000000000016712993F0000101A000000000000000000000000000000000000002800000000gnome-shell-47.1/js/ui/status/rfkill.jsimport Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import {QuickToggle, SystemIndicator} from '../quickSettings.js'; import {loadInterfaceXML} from '../../misc/fileUtils.js'; const BUS_NAME = 'org.gnome.SettingsDaemon.Rfkill'; const OBJECT_PATH = '/org/gnome/SettingsDaemon/Rfkill'; const RfkillManagerInterface = loadInterfaceXML('org.gnome.SettingsDaemon.Rfkill'); const rfkillManagerInfo = Gio.DBusInterfaceInfo.new_for_xml(RfkillManagerInterface); const RfkillManager = GObject.registerClass({ Properties: { 'airplane-mode': GObject.ParamSpec.boolean( 'airplane-mode', null, null, GObject.ParamFlags.READWRITE, false), 'hw-airplane-mode': GObject.ParamSpec.boolean( 'hw-airplane-mode', null, null, GObject.ParamFlags.READABLE, false), 'show-airplane-mode': GObject.ParamSpec.boolean( 'show-airplane-mode', null, null, GObject.ParamFlags.READABLE, false), }, }, class RfkillManager extends GObject.Object { constructor() { super(); this._proxy = new Gio.DBusProxy({ g_connection: Gio.DBus.session, g_name: BUS_NAME, g_object_path: OBJECT_PATH, g_interface_name: rfkillManagerInfo.name, g_interface_info: rfkillManagerInfo, }); this._proxy.connect('g-properties-changed', this._changed.bind(this)); this._proxy.init_async(GLib.PRIORITY_DEFAULT, null) .catch(e => console.error(e.message)); } /* eslint-disable camelcase */ get airplane_mode() { return this._proxy.AirplaneMode; } set airplane_mode(v) { this._proxy.AirplaneMode = v; } get hw_airplane_mode() { return this._proxy.HardwareAirplaneMode; } get show_airplane_mode() { return this._proxy.HasAirplaneMode && this._proxy.ShouldShowAirplaneMode; } /* eslint-enable camelcase */ _changed(proxy, properties) { for (const prop in properties.deepUnpack()) { switch (prop) { case 'AirplaneMode': this.notify('airplane-mode'); break; case 'HardwareAirplaneMode': this.notify('hw-airplane-mode'); break; case 'HasAirplaneMode': case 'ShouldShowAirplaneMode': this.notify('show-airplane-mode'); break; } } } }); let _manager; /** * @returns {RfkillManager} */ export function getRfkillManager() { if (_manager != null) return _manager; _manager = new RfkillManager(); return _manager; } const RfkillToggle = GObject.registerClass( class RfkillToggle extends QuickToggle { _init() { super._init({ title: _('Airplane Mode'), iconName: 'airplane-mode-symbolic', }); this._manager = getRfkillManager(); this._manager.bind_property('show-airplane-mode', this, 'visible', GObject.BindingFlags.SYNC_CREATE); this._manager.bind_property('airplane-mode', this, 'checked', GObject.BindingFlags.SYNC_CREATE); this.connect('clicked', () => (this._manager.airplaneMode = !this._manager.airplaneMode)); } }); export const Indicator = GObject.registerClass( class Indicator extends SystemIndicator { _init() { super._init(); this._indicator = this._addIndicator(); this._indicator.icon_name = 'airplane-mode-symbolic'; this._rfkillToggle = new RfkillToggle(); this._rfkillToggle.connectObject( 'notify::visible', () => this._sync(), 'notify::checked', () => this._sync(), this); this.quickSettingsItems.push(this._rfkillToggle); this._sync(); } _sync() { // Only show indicator when airplane mode is on const {visible, checked} = this._rfkillToggle; this._indicator.visible = visible && checked; } }); 070701000001F5000081A40000000000000000000000016712993F00002D99000000000000000000000000000000000000002800000000gnome-shell-47.1/js/ui/status/system.jsimport Atk from 'gi://Atk'; import Clutter from 'gi://Clutter'; import Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import Meta from 'gi://Meta'; import Shell from 'gi://Shell'; import St from 'gi://St'; import UPower from 'gi://UPowerGlib'; import * as SystemActions from '../../misc/systemActions.js'; import * as Main from '../main.js'; import * as PopupMenu from '../popupMenu.js'; import {PopupAnimation} from '../boxpointer.js'; import {QuickSettingsItem, QuickToggle, SystemIndicator} from '../quickSettings.js'; import {loadInterfaceXML} from '../../misc/fileUtils.js'; const BUS_NAME = 'org.freedesktop.UPower'; const OBJECT_PATH = '/org/freedesktop/UPower/devices/DisplayDevice'; const DisplayDeviceInterface = loadInterfaceXML('org.freedesktop.UPower.Device'); const PowerManagerProxy = Gio.DBusProxy.makeProxyWrapper(DisplayDeviceInterface); const SHOW_BATTERY_PERCENTAGE = 'show-battery-percentage'; const PowerToggle = GObject.registerClass({ Properties: { 'fallback-icon-name': GObject.ParamSpec.string('fallback-icon-name', null, null, GObject.ParamFlags.READWRITE, ''), }, }, class PowerToggle extends QuickToggle { _init() { super._init({ accessible_role: Atk.Role.PUSH_BUTTON, }); this.add_style_class_name('power-item'); this._proxy = new PowerManagerProxy(Gio.DBus.system, BUS_NAME, OBJECT_PATH, (proxy, error) => { if (error) console.error(error.message); else this._proxy.connect('g-properties-changed', () => this._sync()); this._sync(); }); this.bind_property('fallback-icon-name', this._icon, 'fallback-icon-name', GObject.BindingFlags.SYNC_CREATE); this.connect('clicked', () => { const app = Shell.AppSystem.get_default().lookup_app('gnome-power-panel.desktop'); Main.overview.hide(); Main.panel.closeQuickSettings(); app.activate(); }); Main.sessionMode.connect('updated', () => this._sessionUpdated()); this._sessionUpdated(); this._sync(); } _sessionUpdated() { this.reactive = Main.sessionMode.allowSettings; } _sync() { // Do we have batteries or a UPS? this.visible = this._proxy.IsPresent; if (!this.visible) return; // The icons let chargingState = this._proxy.State === UPower.DeviceState.CHARGING ? '-charging' : ''; let fillLevel = 10 * Math.floor(this._proxy.Percentage / 10); const charged = this._proxy.State === UPower.DeviceState.FULLY_CHARGED || (this._proxy.State === UPower.DeviceState.CHARGING && fillLevel === 100); const icon = charged ? 'battery-level-100-charged-symbolic' : `battery-level-${fillLevel}${chargingState}-symbolic`; // Make sure we fall back to fallback-icon-name and not GThemedIcon's // default fallbacks const gicon = new Gio.ThemedIcon({ name: icon, use_default_fallbacks: false, }); const formatter = new Intl.NumberFormat(undefined, {style: 'percent'}); this.set({ title: formatter.format(this._proxy.Percentage / 100), fallback_icon_name: this._proxy.IconName, gicon, }); } }); const ScreenshotItem = GObject.registerClass( class ScreenshotItem extends QuickSettingsItem { _init() { super._init({ style_class: 'icon-button', can_focus: true, icon_name: 'screenshooter-symbolic', visible: !Main.sessionMode.isGreeter, accessible_name: _('Take Screenshot'), }); this.connect('clicked', () => { const topMenu = Main.panel.statusArea.quickSettings.menu; const laters = global.compositor.get_laters(); laters.add(Meta.LaterType.BEFORE_REDRAW, () => { Main.screenshotUI.open().catch(logError); return GLib.SOURCE_REMOVE; }); topMenu.close(PopupAnimation.NONE); }); } }); const SettingsItem = GObject.registerClass( class SettingsItem extends QuickSettingsItem { _init() { super._init({ style_class: 'icon-button', can_focus: true, child: new St.Icon(), }); this._settingsApp = Shell.AppSystem.get_default().lookup_app( 'org.gnome.Settings.desktop'); if (!this._settingsApp) console.warn('Missing required core component Settings, expect trouble…'); this.child.gicon = this._settingsApp?.get_icon() ?? null; this.accessible_name = this._settingsApp?.get_name() ?? null; this.connect('clicked', () => { Main.overview.hide(); Main.panel.closeQuickSettings(); this._settingsApp.activate(); }); Main.sessionMode.connectObject('updated', () => this._sync(), this); this._sync(); } _sync() { this.visible = this._settingsApp != null && Main.sessionMode.allowSettings; } }); const ShutdownItem = GObject.registerClass( class ShutdownItem extends QuickSettingsItem { _init() { super._init({ style_class: 'icon-button', hasMenu: true, canFocus: true, icon_name: 'system-shutdown-symbolic', accessible_name: _('Power Off Menu'), }); this._systemActions = new SystemActions.getDefault(); this._items = []; this.menu.setHeader('system-shutdown-symbolic', C_('title', 'Power Off')); this._addSystemAction(_('Suspend'), 'can-suspend', () => { this._systemActions.activateSuspend(); Main.panel.closeQuickSettings(); }); this._addSystemAction(_('Restart…'), 'can-restart', () => { this._systemActions.activateRestart(); Main.panel.closeQuickSettings(); }); this._addSystemAction(_('Power Off…'), 'can-power-off', () => { this._systemActions.activatePowerOff(); Main.panel.closeQuickSettings(); }); this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); this._addSystemAction(_('Log Out…'), 'can-logout', () => { this._systemActions.activateLogout(); Main.panel.closeQuickSettings(); }); this._addSystemAction(_('Switch User…'), 'can-switch-user', () => { this._systemActions.activateSwitchUser(); Main.panel.closeQuickSettings(); }); // Whether shutdown is available or not depends on both lockdown // settings (disable-log-out) and Polkit policy - the latter doesn't // notify, so we update the item each time we become visible or // the lockdown setting changes, which should be close enough. this.connect('notify::mapped', () => { if (!this.mapped) return; this._systemActions.forceUpdate(); }); this.connect('clicked', () => this.menu.open()); this.connect('popup-menu', () => this.menu.open()); } _addSystemAction(label, propName, callback) { const item = this.menu.addAction(label, callback); this._items.push(item); this._systemActions.bind_property(propName, item, 'visible', GObject.BindingFlags.DEFAULT | GObject.BindingFlags.SYNC_CREATE); item.connect('notify::visible', () => this._sync()); } _sync() { this.visible = this._items.some(i => i.visible); } }); const LockItem = GObject.registerClass( class LockItem extends QuickSettingsItem { _init() { this._systemActions = new SystemActions.getDefault(); super._init({ style_class: 'icon-button', can_focus: true, icon_name: 'system-lock-screen-symbolic', accessible_name: C_('action', 'Lock Screen'), }); this._systemActions.bind_property('can-lock-screen', this, 'visible', GObject.BindingFlags.DEFAULT | GObject.BindingFlags.SYNC_CREATE); this.connect('clicked', () => this._systemActions.activateLockScreen()); } }); const SystemItem = GObject.registerClass( class SystemItem extends QuickSettingsItem { _init() { super._init({ style_class: 'quick-settings-system-item', reactive: false, }); this.child = new St.BoxLayout(); this._powerToggle = new PowerToggle(); this.child.add_child(this._powerToggle); this._laptopSpacer = new Clutter.Actor({x_expand: true}); this._powerToggle.bind_property('visible', this._laptopSpacer, 'visible', GObject.BindingFlags.SYNC_CREATE); this.child.add_child(this._laptopSpacer); const screenshotItem = new ScreenshotItem(); this.child.add_child(screenshotItem); const settingsItem = new SettingsItem(); this.child.add_child(settingsItem); this._desktopSpacer = new Clutter.Actor({x_expand: true}); this._powerToggle.bind_property('visible', this._desktopSpacer, 'visible', GObject.BindingFlags.INVERT_BOOLEAN | GObject.BindingFlags.SYNC_CREATE); this.child.add_child(this._desktopSpacer); const lockItem = new LockItem(); this.child.add_child(lockItem); const shutdownItem = new ShutdownItem(); this.child.add_child(shutdownItem); this.menu = shutdownItem.menu; } get powerToggle() { return this._powerToggle; } }); export const Indicator = GObject.registerClass( class Indicator extends SystemIndicator { _init() { super._init(); this._desktopSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.interface', }); this._desktopSettings.connectObject( `changed::${SHOW_BATTERY_PERCENTAGE}`, () => this._sync(), this); this._indicator = this._addIndicator(); this._percentageLabel = new St.Label({ y_expand: true, y_align: Clutter.ActorAlign.CENTER, }); this.add_child(this._percentageLabel); this.add_style_class_name('power-status'); this._systemItem = new SystemItem(); const {powerToggle} = this._systemItem; powerToggle.bind_property('title', this._percentageLabel, 'text', GObject.BindingFlags.SYNC_CREATE); powerToggle.connectObject( 'notify::visible', () => this._sync(), 'notify::gicon', () => this._sync(), 'notify::fallback-icon-name', () => this._sync(), this); this.quickSettingsItems.push(this._systemItem); this._sync(); } _sync() { const {powerToggle} = this._systemItem; if (powerToggle.visible) { this._indicator.set({ gicon: powerToggle.gicon, fallback_icon_name: powerToggle.fallback_icon_name, }); this._percentageLabel.visible = this._desktopSettings.get_boolean(SHOW_BATTERY_PERCENTAGE); } else { // If there's no battery, then we use the power icon. this._indicator.icon_name = 'system-shutdown-symbolic'; this._percentageLabel.hide(); } } }); 070701000001F6000081A40000000000000000000000016712993F00002768000000000000000000000000000000000000002D00000000gnome-shell-47.1/js/ui/status/thunderbolt.js// the following is a modified version of bolt/contrib/js/client.js import Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import Polkit from 'gi://Polkit'; import Shell from 'gi://Shell'; import * as Signals from '../../misc/signals.js'; import * as Main from '../main.js'; import * as MessageTray from '../messageTray.js'; import {SystemIndicator} from '../quickSettings.js'; import {loadInterfaceXML} from '../../misc/fileUtils.js'; /* Keep in sync with data/org.freedesktop.bolt.xml */ const BoltClientInterface = loadInterfaceXML('org.freedesktop.bolt1.Manager'); const BoltDeviceInterface = loadInterfaceXML('org.freedesktop.bolt1.Device'); const BoltDeviceProxy = Gio.DBusProxy.makeProxyWrapper(BoltDeviceInterface); /** @enum {string} */ const Status = { DISCONNECTED: 'disconnected', CONNECTING: 'connecting', CONNECTED: 'connected', AUTHORIZING: 'authorizing', AUTH_ERROR: 'auth-error', AUTHORIZED: 'authorized', }; /** @enum {string} */ const Policy = { DEFAULT: 'default', MANUAL: 'manual', AUTO: 'auto', }; /** @enum {string} */ const AuthCtrl = { NONE: 'none', }; /** @enum {string} */ const AuthMode = { DISABLED: 'disabled', ENABLED: 'enabled', }; const BOLT_DBUS_CLIENT_IFACE = 'org.freedesktop.bolt1.Manager'; const BOLT_DBUS_NAME = 'org.freedesktop.bolt'; const BOLT_DBUS_PATH = '/org/freedesktop/bolt'; class Client extends Signals.EventEmitter { constructor() { super(); this._proxy = null; this.probing = false; this._getProxy(); } async _getProxy() { let nodeInfo = Gio.DBusNodeInfo.new_for_xml(BoltClientInterface); try { this._proxy = await Gio.DBusProxy.new( Gio.DBus.system, Gio.DBusProxyFlags.DO_NOT_AUTO_START, nodeInfo.lookup_interface(BOLT_DBUS_CLIENT_IFACE), BOLT_DBUS_NAME, BOLT_DBUS_PATH, BOLT_DBUS_CLIENT_IFACE, null); } catch (e) { log(`error creating bolt proxy: ${e.message}`); return; } this._proxy.connectObject('g-properties-changed', this._onPropertiesChanged.bind(this), this); this._deviceAddedId = this._proxy.connectSignal('DeviceAdded', this._onDeviceAdded.bind(this)); this.probing = this._proxy.Probing; if (this.probing) this.emit('probing-changed', this.probing); } _onPropertiesChanged(proxy, properties) { const probingChanged = !!properties.lookup_value('Probing', null); if (probingChanged) { this.probing = this._proxy.Probing; this.emit('probing-changed', this.probing); } } _onDeviceAdded(proxy, emitter, params) { let [path] = params; let device = new BoltDeviceProxy(Gio.DBus.system, BOLT_DBUS_NAME, path); this.emit('device-added', device); } /* public methods */ close() { if (!this._proxy) return; this._proxy.disconnectSignal(this._deviceAddedId); this._proxy.disconnectObject(this); this._proxy = null; } async enrollDevice(id, policy) { try { const [path] = await this._proxy.EnrollDeviceAsync(id, policy, AuthCtrl.NONE); const device = new BoltDeviceProxy(Gio.DBus.system, BOLT_DBUS_NAME, path); return device; } catch (error) { Gio.DBusError.strip_remote_error(error); throw error; } } get authMode() { return this._proxy.AuthMode; } } /* helper class to automatically authorize new devices */ class AuthRobot extends Signals.EventEmitter { constructor(client) { super(); this._client = client; this._devicesToEnroll = []; this._enrolling = false; this._client.connect('device-added', this._onDeviceAdded.bind(this)); } close() { this.disconnectAll(); this._client = null; } /* the "device-added" signal will be emitted by boltd for every * device that is not currently stored in the database. We are * only interested in those devices, because all known devices * will be handled by the user himself */ _onDeviceAdded(cli, dev) { if (dev.Status !== Status.CONNECTED) return; /* check if authorization is enabled in the daemon. if not * we won't even bother authorizing, because we will only * get an error back. The exact contents of AuthMode might * change in the future, but must contain AuthMode.ENABLED * if it is enabled. */ if (!cli.authMode.split('|').includes(AuthMode.ENABLED)) return; /* check if we should enroll the device */ let res = [false]; this.emit('enroll-device', dev, res); if (res[0] !== true) return; /* ok, we should authorize the device, add it to the back * of the list */ this._devicesToEnroll.push(dev); this._enrollDevices(); } /* The enrollment queue: * - new devices will be added to the end of the array. * - an idle callback will be scheduled that will keep * calling itself as long as there a devices to be * enrolled. */ _enrollDevices() { if (this._enrolling) return; this._enrolling = true; GLib.idle_add(GLib.PRIORITY_DEFAULT, this._enrollDevicesIdle.bind(this)); } async _enrollDevicesIdle() { let devices = this._devicesToEnroll; let dev = devices.shift(); if (dev === undefined) return GLib.SOURCE_REMOVE; try { await this._client.enrollDevice(dev.Uid, Policy.DEFAULT); /* TODO: scan the list of devices to be authorized for children * of this device and remove them (and their children and * their children and ....) from the device queue */ this._enrolling = this._devicesToEnroll.length > 0; if (this._enrolling) { GLib.idle_add(GLib.PRIORITY_DEFAULT, this._enrollDevicesIdle.bind(this)); } } catch (error) { this.emit('enroll-failed', null, error); } return GLib.SOURCE_REMOVE; } } /* eof client.js */ export const Indicator = GObject.registerClass( class Indicator extends SystemIndicator { _init() { super._init(); this._indicator = this._addIndicator(); this._indicator.icon_name = 'thunderbolt-symbolic'; this._client = new Client(); this._client.connect('probing-changed', this._onProbing.bind(this)); this._robot = new AuthRobot(this._client); this._robot.connect('enroll-device', this._onEnrollDevice.bind(this)); this._robot.connect('enroll-failed', this._onEnrollFailed.bind(this)); Main.sessionMode.connect('updated', this._sync.bind(this)); this._sync(); this._perm = null; this._createPermission(); } async _createPermission() { try { this._perm = await Polkit.Permission.new('org.freedesktop.bolt.enroll', null, null); } catch (e) { log(`Failed to get PolKit permission: ${e}`); } } _onDestroy() { this._robot.close(); this._client.close(); } _notify(title, body) { if (this._notification) this._notification.destroy(); const source = MessageTray.getSystemSource(); this._notification = new MessageTray.Notification({ source, title, body, iconName: 'thunderbolt-symbolic', urgency: MessageTray.Urgency.HIGH, }); this._notification.connect('destroy', () => { this._notification = null; }); this._notification.connect('activated', () => { const app = Shell.AppSystem.get_default().lookup_app('gnome-thunderbolt-panel.desktop'); app?.activate(); }); source.addNotification(this._notification); } /* Session callbacks */ _sync() { let active = !Main.sessionMode.isLocked && !Main.sessionMode.isGreeter; this._indicator.visible = active && this._client.probing; } /* Bolt.Client callbacks */ _onProbing(cli, probing) { if (probing) this._indicator.icon_name = 'thunderbolt-acquiring-symbolic'; else this._indicator.icon_name = 'thunderbolt-symbolic'; this._sync(); } /* AuthRobot callbacks */ _onEnrollDevice(obj, device, policy) { /* only authorize new devices when in an unlocked user session */ let unlocked = !Main.sessionMode.isLocked && !Main.sessionMode.isGreeter; /* and if we have the permission to do so, otherwise we trigger a PolKit dialog */ let allowed = this._perm && this._perm.allowed; let auth = unlocked && allowed; policy[0] = auth; log(`thunderbolt: [${device.Name}] auto enrollment: ${auth ? 'yes' : 'no'} (allowed: ${allowed ? 'yes' : 'no'})`); if (auth) return; /* we are done */ if (!unlocked) { const title = _('Unknown Thunderbolt device'); const body = _('New device has been detected while you were away. Please disconnect and reconnect the device to start using it.'); this._notify(title, body); } else { const title = _('Unauthorized Thunderbolt device'); const body = _('New device has been detected and needs to be authorized by an administrator'); this._notify(title, body); } } _onEnrollFailed(obj, device, error) { const title = _('Thunderbolt authorization error'); const body = _('Could not authorize the Thunderbolt device: %s').format(error.message); this._notify(title, body); } }); 070701000001F7000081A40000000000000000000000016712993F00003BCA000000000000000000000000000000000000002800000000gnome-shell-47.1/js/ui/status/volume.jsimport Clutter from 'gi://Clutter'; import Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import Gvc from 'gi://Gvc'; import * as Main from '../main.js'; import * as PopupMenu from '../popupMenu.js'; import {QuickSlider, SystemIndicator} from '../quickSettings.js'; const ALLOW_AMPLIFIED_VOLUME_KEY = 'allow-volume-above-100-percent'; const UNMUTE_DEFAULT_VOLUME = 0.25; // Each Gvc.MixerControl is a connection to PulseAudio, // so it's better to make it a singleton let _mixerControl; /** * @returns {Gvc.MixerControl} - the mixer control singleton */ export function getMixerControl() { if (_mixerControl) return _mixerControl; _mixerControl = new Gvc.MixerControl({name: 'GNOME Shell Volume Control'}); _mixerControl.open(); return _mixerControl; } const StreamSlider = GObject.registerClass({ Signals: { 'stream-updated': {}, }, }, class StreamSlider extends QuickSlider { _init(control) { super._init({ icon_reactive: true, }); this._control = control; this._inDrag = false; this._notifyVolumeChangeId = 0; this._soundSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.sound', }); this._soundSettings.connect(`changed::${ALLOW_AMPLIFIED_VOLUME_KEY}`, () => this._amplifySettingsChanged()); this._amplifySettingsChanged(); this._sliderChangedId = this.slider.connect('notify::value', () => this._sliderChanged()); this.slider.connect('drag-begin', () => (this._inDrag = true)); this.slider.connect('drag-end', () => { this._inDrag = false; this._notifyVolumeChange(); }); this.connect('icon-clicked', () => { if (!this._stream) return; const {isMuted} = this._stream; if (isMuted && this._stream.volume === 0) { this._stream.volume = UNMUTE_DEFAULT_VOLUME * this._control.get_vol_max_norm(); this._stream.push_volume(); } this._stream.change_is_muted(!isMuted); }); this._deviceItems = new Map(); this._deviceSection = new PopupMenu.PopupMenuSection(); this.menu.addMenuItem(this._deviceSection); this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); this.menu.addSettingsAction(_('Sound Settings'), 'gnome-sound-panel.desktop'); this._stream = null; this._volumeCancellable = null; this._icons = []; this._sync(); } get stream() { return this._stream; } set stream(stream) { this._stream?.disconnectObject(this); this._stream = stream; if (this._stream) { this._connectStream(this._stream); this._updateVolume(); } else { this.emit('stream-updated'); } this._sync(); } _connectStream(stream) { stream.connectObject( 'notify::is-muted', this._updateVolume.bind(this), 'notify::volume', this._updateVolume.bind(this), this); } _lookupDevice(_id) { throw new GObject.NotImplementedError( `_lookupDevice in ${this.constructor.name}`); } _activateDevice(_device) { throw new GObject.NotImplementedError( `_activateDevice in ${this.constructor.name}`); } _addDevice(id) { if (this._deviceItems.has(id)) return; const device = this._lookupDevice(id); if (!device) return; const {description, origin} = device; const name = origin ? `${description} – ${origin}` : description; const item = new PopupMenu.PopupImageMenuItem(name, device.get_gicon()); item.connect('activate', () => { const dev = this._lookupDevice(id); if (dev) this._activateDevice(dev); else console.warn(`Trying to activate invalid device ${id}`); }); this._deviceSection.addMenuItem(item); this._deviceItems.set(id, item); this._sync(); } _removeDevice(id) { this._deviceItems.get(id)?.destroy(); if (this._deviceItems.delete(id)) this._sync(); } _setActiveDevice(activeId) { for (const [id, item] of this._deviceItems) { item.setOrnament(id === activeId ? PopupMenu.Ornament.CHECK : PopupMenu.Ornament.NONE); } } _shouldBeVisible() { return this._stream != null; } _sync() { this.visible = this._shouldBeVisible(); this.menuEnabled = this._deviceItems.size > 1; } _sliderChanged() { if (!this._stream) return; let value = this.slider.value; let volume = value * this._control.get_vol_max_norm(); let prevMuted = this._stream.is_muted; let prevVolume = this._stream.volume; if (volume < 1) { this._stream.volume = 0; if (!prevMuted) this._stream.change_is_muted(true); } else { this._stream.volume = volume; if (prevMuted) this._stream.change_is_muted(false); } this._stream.push_volume(); let volumeChanged = this._stream.volume !== prevVolume; if (volumeChanged && !this._notifyVolumeChangeId && !this._inDrag) { this._notifyVolumeChangeId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 30, () => { this._notifyVolumeChange(); this._notifyVolumeChangeId = 0; return GLib.SOURCE_REMOVE; }); GLib.Source.set_name_by_id(this._notifyVolumeChangeId, '[gnome-shell] this._notifyVolumeChangeId'); } } _notifyVolumeChange() { if (this._volumeCancellable) this._volumeCancellable.cancel(); this._volumeCancellable = null; if (this._stream.state === Gvc.MixerStreamState.RUNNING) return; // feedback not necessary while playing this._volumeCancellable = new Gio.Cancellable(); let player = global.display.get_sound_player(); player.play_from_theme('audio-volume-change', _('Volume changed'), this._volumeCancellable); } _changeSlider(value) { this.slider.block_signal_handler(this._sliderChangedId); this.slider.value = value; this.slider.unblock_signal_handler(this._sliderChangedId); } _updateVolume() { let muted = this._stream.is_muted; this._changeSlider(muted ? 0 : this._stream.volume / this._control.get_vol_max_norm()); this.iconLabel = muted ? _('Unmute') : _('Mute'); this._updateIcon(); this.emit('stream-updated'); } _amplifySettingsChanged() { this._allowAmplified = this._soundSettings.get_boolean(ALLOW_AMPLIFIED_VOLUME_KEY); this.slider.maximum_value = this._allowAmplified ? this.getMaxLevel() : 1; if (this._stream) this._updateVolume(); } _updateIcon() { this.iconName = this.getIcon(); } getIcon() { if (!this._stream) return null; let volume = this._stream.volume; let n; if (this._stream.is_muted || volume <= 0) { n = 0; } else { n = Math.ceil(3 * volume / this._control.get_vol_max_norm()); n = Math.clamp(n, 1, this._icons.length - 1); } return this._icons[n]; } getLevel() { if (!this._stream) return null; return this._stream.volume / this._control.get_vol_max_norm(); } getMaxLevel() { let maxVolume = this._control.get_vol_max_norm(); if (this._allowAmplified) maxVolume = this._control.get_vol_max_amplified(); return maxVolume / this._control.get_vol_max_norm(); } }); const OutputStreamSlider = GObject.registerClass( class OutputStreamSlider extends StreamSlider { _init(control) { super._init(control); this.slider.accessible_name = _('Volume'); this._control.connectObject( 'output-added', (c, id) => this._addDevice(id), 'output-removed', (c, id) => this._removeDevice(id), 'active-output-update', (c, id) => this._setActiveDevice(id), this); this._icons = [ 'audio-volume-muted-symbolic', 'audio-volume-low-symbolic', 'audio-volume-medium-symbolic', 'audio-volume-high-symbolic', 'audio-volume-overamplified-symbolic', ]; this.menu.setHeader('audio-headphones-symbolic', _('Sound Output')); } _connectStream(stream) { super._connectStream(stream); stream.connectObject('notify::port', this._portChanged.bind(this), this); this._portChanged(); } _lookupDevice(id) { return this._control.lookup_output_id(id); } _activateDevice(device) { this._control.change_output(device); } _findHeadphones(sink) { // This only works for external headphones (e.g. bluetooth) if (sink.get_form_factor() === 'headset' || sink.get_form_factor() === 'headphone') return true; // a bit hackish, but ALSA/PulseAudio have a number // of different identifiers for headphones, and I could // not find the complete list if (sink.get_ports().length > 0) return sink.get_port().port.toLowerCase().includes('headphone'); return false; } _portChanged() { const hasHeadphones = this._findHeadphones(this._stream); if (hasHeadphones === this._hasHeadphones) return; this._hasHeadphones = hasHeadphones; this._updateIcon(); } _updateIcon() { this.iconName = this._hasHeadphones ? 'audio-headphones-symbolic' : this.getIcon(); } }); const InputStreamSlider = GObject.registerClass( class InputStreamSlider extends StreamSlider { _init(control) { super._init(control); this.slider.accessible_name = _('Microphone'); this._control.connectObject( 'input-added', (c, id) => this._addDevice(id), 'input-removed', (c, id) => this._removeDevice(id), 'active-input-update', (c, id) => this._setActiveDevice(id), 'stream-added', () => this._maybeShowInput(), 'stream-removed', () => this._maybeShowInput(), this); this.iconName = 'audio-input-microphone-symbolic'; this._icons = [ 'microphone-sensitivity-muted-symbolic', 'microphone-sensitivity-low-symbolic', 'microphone-sensitivity-medium-symbolic', 'microphone-sensitivity-high-symbolic', ]; this.menu.setHeader('audio-input-microphone-symbolic', _('Sound Input')); } _connectStream(stream) { super._connectStream(stream); this._maybeShowInput(); } _lookupDevice(id) { return this._control.lookup_input_id(id); } _activateDevice(device) { this._control.change_input(device); } _maybeShowInput() { // only show input widgets if any application is recording audio let showInput = false; if (this._stream) { // skip gnome-volume-control and pavucontrol which appear // as recording because they show the input level let skippedApps = [ 'org.gnome.VolumeControl', 'org.PulseAudio.pavucontrol', ]; showInput = this._control.get_source_outputs().some( output => !skippedApps.includes(output.get_application_id())); } this._showInput = showInput; this._sync(); } _shouldBeVisible() { return super._shouldBeVisible() && this._showInput; } }); let VolumeIndicator = GObject.registerClass( class VolumeIndicator extends SystemIndicator { constructor() { super(); this._indicator = this._addIndicator(); this._indicator.reactive = true; } _handleScrollEvent(item, event) { const result = item.slider.scroll(event); if (result === Clutter.EVENT_PROPAGATE || item.mapped) return result; const gicon = new Gio.ThemedIcon({name: item.getIcon()}); const level = item.getLevel(); const maxLevel = item.getMaxLevel(); Main.osdWindowManager.show(-1, gicon, null, level, maxLevel); return result; } }); export const OutputIndicator = GObject.registerClass( class OutputIndicator extends VolumeIndicator { constructor() { super(); this._indicator.connect('scroll-event', (actor, event) => this._handleScrollEvent(this._output, event)); this._control = getMixerControl(); this._control.connectObject( 'state-changed', () => this._onControlStateChanged(), 'default-sink-changed', () => this._readOutput(), this); this._output = new OutputStreamSlider(this._control); this._output.connect('stream-updated', () => { const icon = this._output.getIcon(); if (icon) this._indicator.icon_name = icon; this._indicator.visible = icon !== null; }); this.quickSettingsItems.push(this._output); this._onControlStateChanged(); } _onControlStateChanged() { if (this._control.get_state() === Gvc.MixerControlState.READY) this._readOutput(); else this._indicator.hide(); } _readOutput() { this._output.stream = this._control.get_default_sink(); } }); export const InputIndicator = GObject.registerClass( class InputIndicator extends VolumeIndicator { constructor() { super(); this._indicator.add_style_class_name('privacy-indicator'); this._indicator.connect('scroll-event', (actor, event) => this._handleScrollEvent(this._input, event)); this._control = getMixerControl(); this._control.connectObject( 'state-changed', () => this._onControlStateChanged(), 'default-source-changed', () => this._readInput(), this); this._input = new InputStreamSlider(this._control); this._input.connect('stream-updated', () => { const icon = this._input.getIcon(); if (icon) this._indicator.icon_name = icon; }); this._input.bind_property('visible', this._indicator, 'visible', GObject.BindingFlags.SYNC_CREATE); this.quickSettingsItems.push(this._input); this._onControlStateChanged(); } _onControlStateChanged() { if (this._control.get_state() === Gvc.MixerControlState.READY) this._readInput(); } _readInput() { this._input.stream = this._control.get_default_source(); } }); 070701000001F8000081A40000000000000000000000016712993F00006617000000000000000000000000000000000000002700000000gnome-shell-47.1/js/ui/swipeTracker.jsimport Clutter from 'gi://Clutter'; import Gio from 'gi://Gio'; import GObject from 'gi://GObject'; import Mtk from 'gi://Mtk'; import * as Main from './main.js'; import * as Params from '../misc/params.js'; // FIXME: ideally these values matches physical touchpad size. We can get the // correct values for gnome-shell specifically, since mutter uses libinput // directly, but GTK apps cannot get it, so use an arbitrary value so that // it's consistent with apps. const TOUCHPAD_BASE_HEIGHT = 300; const TOUCHPAD_BASE_WIDTH = 400; const EVENT_HISTORY_THRESHOLD_MS = 150; const SCROLL_MULTIPLIER = 10; const MIN_ANIMATION_DURATION = 100; const MAX_ANIMATION_DURATION = 400; const VELOCITY_THRESHOLD_TOUCH = 0.3; const VELOCITY_THRESHOLD_TOUCHPAD = 0.6; const DECELERATION_TOUCH = 0.998; const DECELERATION_TOUCHPAD = 0.997; const VELOCITY_CURVE_THRESHOLD = 2; const DECELERATION_PARABOLA_MULTIPLIER = 0.35; const DRAG_THRESHOLD_DISTANCE = 16; // Derivative of easeOutCubic at t=0 const DURATION_MULTIPLIER = 3; const ANIMATION_BASE_VELOCITY = 0.002; const EPSILON = 0.005; const GESTURE_FINGER_COUNT = 3; /** @enum {number} */ const State = { NONE: 0, SCROLLING: 1, }; const TouchpadState = { NONE: 0, PENDING: 1, HANDLING: 2, IGNORED: 3, }; const EventHistory = class { constructor() { this.reset(); } reset() { this._data = []; } trim(time) { const thresholdTime = time - EVENT_HISTORY_THRESHOLD_MS; const index = this._data.findIndex(r => r.time >= thresholdTime); this._data.splice(0, index); } append(time, delta) { this.trim(time); this._data.push({time, delta}); } calculateVelocity() { if (this._data.length < 2) return 0; const firstTime = this._data[0].time; const lastTime = this._data[this._data.length - 1].time; if (firstTime === lastTime) return 0; const totalDelta = this._data.slice(1).map(a => a.delta).reduce((a, b) => a + b); const period = lastTime - firstTime; return totalDelta / period; } }; const TouchpadSwipeGesture = GObject.registerClass({ Properties: { 'enabled': GObject.ParamSpec.boolean( 'enabled', null, null, GObject.ParamFlags.READWRITE, true), 'orientation': GObject.ParamSpec.enum( 'orientation', null, null, GObject.ParamFlags.READWRITE, Clutter.Orientation, Clutter.Orientation.HORIZONTAL), }, Signals: { 'begin': {param_types: [GObject.TYPE_UINT, GObject.TYPE_DOUBLE, GObject.TYPE_DOUBLE]}, 'update': {param_types: [GObject.TYPE_UINT, GObject.TYPE_DOUBLE, GObject.TYPE_DOUBLE]}, 'end': {param_types: [GObject.TYPE_UINT, GObject.TYPE_DOUBLE]}, }, }, class TouchpadSwipeGesture extends GObject.Object { _init(allowedModes) { super._init(); this._allowedModes = allowedModes; this._state = TouchpadState.NONE; this._cumulativeX = 0; this._cumulativeY = 0; this._touchpadSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.peripherals.touchpad', }); global.stage.connectObject( 'captured-event::touchpad', this._handleEvent.bind(this), this); } _handleEvent(actor, event) { if (event.type() !== Clutter.EventType.TOUCHPAD_SWIPE) return Clutter.EVENT_PROPAGATE; if (event.get_gesture_phase() === Clutter.TouchpadGesturePhase.BEGIN) this._state = TouchpadState.NONE; if (event.get_touchpad_gesture_finger_count() < GESTURE_FINGER_COUNT) return Clutter.EVENT_PROPAGATE; if ((this._allowedModes & Main.actionMode) === 0) return Clutter.EVENT_PROPAGATE; if (!this.enabled) return Clutter.EVENT_PROPAGATE; if (this._state === TouchpadState.IGNORED) return Clutter.EVENT_PROPAGATE; let time = event.get_time(); const [x, y] = event.get_coords(); const [dx, dy] = event.get_gesture_motion_delta_unaccelerated(); if (this._state === TouchpadState.NONE) { if (dx === 0 && dy === 0) return Clutter.EVENT_PROPAGATE; this._cumulativeX = 0; this._cumulativeY = 0; this._state = TouchpadState.PENDING; } if (this._state === TouchpadState.PENDING) { this._cumulativeX += dx; this._cumulativeY += dy; const cdx = this._cumulativeX; const cdy = this._cumulativeY; const distance = Math.sqrt(cdx * cdx + cdy * cdy); if (distance >= DRAG_THRESHOLD_DISTANCE) { const gestureOrientation = Math.abs(cdx) > Math.abs(cdy) ? Clutter.Orientation.HORIZONTAL : Clutter.Orientation.VERTICAL; this._cumulativeX = 0; this._cumulativeY = 0; if (gestureOrientation === this.orientation) { this._state = TouchpadState.HANDLING; this.emit('begin', time, x, y); } else { this._state = TouchpadState.IGNORED; return Clutter.EVENT_PROPAGATE; } } else { return Clutter.EVENT_PROPAGATE; } } const vertical = this.orientation === Clutter.Orientation.VERTICAL; let delta = vertical ? dy : dx; const distance = vertical ? TOUCHPAD_BASE_HEIGHT : TOUCHPAD_BASE_WIDTH; switch (event.get_gesture_phase()) { case Clutter.TouchpadGesturePhase.BEGIN: case Clutter.TouchpadGesturePhase.UPDATE: if (this._touchpadSettings.get_boolean('natural-scroll')) delta = -delta; this.emit('update', time, delta, distance); break; case Clutter.TouchpadGesturePhase.END: case Clutter.TouchpadGesturePhase.CANCEL: this.emit('end', time, distance); this._state = TouchpadState.NONE; break; } return this._state === TouchpadState.HANDLING ? Clutter.EVENT_STOP : Clutter.EVENT_PROPAGATE; } destroy() { global.stage.disconnectObject(this); } }); const TouchSwipeGesture = GObject.registerClass({ Properties: { 'distance': GObject.ParamSpec.double( 'distance', null, null, GObject.ParamFlags.READWRITE, 0, Infinity, 0), 'orientation': GObject.ParamSpec.enum( 'orientation', null, null, GObject.ParamFlags.READWRITE, Clutter.Orientation, Clutter.Orientation.HORIZONTAL), }, Signals: { 'begin': {param_types: [GObject.TYPE_UINT, GObject.TYPE_DOUBLE, GObject.TYPE_DOUBLE]}, 'update': {param_types: [GObject.TYPE_UINT, GObject.TYPE_DOUBLE, GObject.TYPE_DOUBLE]}, 'end': {param_types: [GObject.TYPE_UINT, GObject.TYPE_DOUBLE]}, 'cancel': {param_types: [GObject.TYPE_UINT, GObject.TYPE_DOUBLE]}, }, }, class TouchSwipeGesture extends Clutter.GestureAction { _init(allowedModes, nTouchPoints, thresholdTriggerEdge) { super._init(); this.set_n_touch_points(nTouchPoints); this.set_threshold_trigger_edge(thresholdTriggerEdge); this._allowedModes = allowedModes; this._distance = global.screen_height; this._lastPosition = 0; } get distance() { return this._distance; } set distance(distance) { if (this._distance === distance) return; this._distance = distance; this.notify('distance'); } vfunc_gesture_prepare(actor) { if (!super.vfunc_gesture_prepare(actor)) return false; if ((this._allowedModes & Main.actionMode) === 0) return false; let time = this.get_last_event(0).get_time(); let [xPress, yPress] = this.get_press_coords(0); let [x, y] = this.get_motion_coords(0); const [xDelta, yDelta] = [x - xPress, y - yPress]; const swipeOrientation = Math.abs(xDelta) > Math.abs(yDelta) ? Clutter.Orientation.HORIZONTAL : Clutter.Orientation.VERTICAL; if (swipeOrientation !== this.orientation) return false; this._lastPosition = this.orientation === Clutter.Orientation.VERTICAL ? y : x; this.emit('begin', time, xPress, yPress); return true; } vfunc_gesture_progress(_actor) { let [x, y] = this.get_motion_coords(0); let pos = this.orientation === Clutter.Orientation.VERTICAL ? y : x; let delta = pos - this._lastPosition; this._lastPosition = pos; let time = this.get_last_event(0).get_time(); this.emit('update', time, -delta, this._distance); return true; } vfunc_gesture_end(_actor) { let time = this.get_last_event(0).get_time(); this.emit('end', time, this._distance); } vfunc_gesture_cancel(_actor) { let time = Clutter.get_current_event_time(); this.emit('cancel', time, this._distance); } }); const ScrollGesture = GObject.registerClass({ Properties: { 'enabled': GObject.ParamSpec.boolean( 'enabled', null, null, GObject.ParamFlags.READWRITE, true), 'orientation': GObject.ParamSpec.enum( 'orientation', null, null, GObject.ParamFlags.READWRITE, Clutter.Orientation, Clutter.Orientation.HORIZONTAL), 'scroll-modifiers': GObject.ParamSpec.flags( 'scroll-modifiers', null, null, GObject.ParamFlags.READWRITE, Clutter.ModifierType, 0), }, Signals: { 'begin': {param_types: [GObject.TYPE_UINT, GObject.TYPE_DOUBLE, GObject.TYPE_DOUBLE]}, 'update': {param_types: [GObject.TYPE_UINT, GObject.TYPE_DOUBLE, GObject.TYPE_DOUBLE]}, 'end': {param_types: [GObject.TYPE_UINT, GObject.TYPE_DOUBLE]}, }, }, class ScrollGesture extends GObject.Object { _init(actor, allowedModes) { super._init(); this._allowedModes = allowedModes; this._began = false; this._enabled = true; actor.connect('scroll-event', this._handleEvent.bind(this)); } get enabled() { return this._enabled; } set enabled(enabled) { if (this._enabled === enabled) return; this._enabled = enabled; this._began = false; this.notify('enabled'); } canHandleEvent(event) { if (event.type() !== Clutter.EventType.SCROLL) return false; if (event.get_scroll_source() !== Clutter.ScrollSource.FINGER && event.get_source_device().get_device_type() !== Clutter.InputDeviceType.TOUCHPAD_DEVICE) return false; if (!this.enabled) return false; if ((this._allowedModes & Main.actionMode) === 0) return false; if (!this._began && this.scrollModifiers !== 0 && (event.get_state() & this.scrollModifiers) === 0) return false; return true; } _handleEvent(actor, event) { if (!this.canHandleEvent(event)) return Clutter.EVENT_PROPAGATE; if (event.get_scroll_direction() !== Clutter.ScrollDirection.SMOOTH) return Clutter.EVENT_PROPAGATE; const vertical = this.orientation === Clutter.Orientation.VERTICAL; const distance = vertical ? TOUCHPAD_BASE_HEIGHT : TOUCHPAD_BASE_WIDTH; let time = event.get_time(); let [dx, dy] = event.get_scroll_delta(); if (dx === 0 && dy === 0) { this.emit('end', time, distance); this._began = false; return Clutter.EVENT_STOP; } if (!this._began) { let [x, y] = event.get_coords(); this.emit('begin', time, x, y); this._began = true; } const delta = (vertical ? dy : dx) * SCROLL_MULTIPLIER; this.emit('update', time, delta, distance); return Clutter.EVENT_STOP; } }); // USAGE: // // To correctly implement the gesture, there must be handlers for the following // signals: // // begin(tracker, monitor) // The handler should check whether a deceleration animation is currently // running. If it is, it should stop the animation (without resetting // progress). Then it should call: // tracker.confirmSwipe(distance, snapPoints, currentProgress, cancelProgress) // If it's not called, the swipe would be ignored. // The parameters are: // * distance: the page size; // * snapPoints: an (sorted with ascending order) array of snap points; // * currentProgress: the current progress; // * cancelprogress: a non-transient value that would be used if the gesture // is cancelled. // If no animation was running, currentProgress and cancelProgress should be // same. The handler may set 'orientation' property here. // // update(tracker, progress) // The handler should set the progress to the given value. // // end(tracker, duration, endProgress) // The handler should animate the progress to endProgress. If endProgress is // 0, it should do nothing after the animation, otherwise it should change the // state, e.g. change the current page or switch workspace. // NOTE: duration can be 0 in some cases, in this case it should finish // instantly. /** A class for handling swipe gestures */ export const SwipeTracker = GObject.registerClass({ Properties: { 'enabled': GObject.ParamSpec.boolean( 'enabled', null, null, GObject.ParamFlags.READWRITE, true), 'orientation': GObject.ParamSpec.enum( 'orientation', null, null, GObject.ParamFlags.READWRITE, Clutter.Orientation, Clutter.Orientation.HORIZONTAL), 'distance': GObject.ParamSpec.double( 'distance', null, null, GObject.ParamFlags.READWRITE, 0, Infinity, 0), 'allow-long-swipes': GObject.ParamSpec.boolean( 'allow-long-swipes', null, null, GObject.ParamFlags.READWRITE, false), 'scroll-modifiers': GObject.ParamSpec.flags( 'scroll-modifiers', null, null, GObject.ParamFlags.READWRITE, Clutter.ModifierType, 0), }, Signals: { 'begin': {param_types: [GObject.TYPE_UINT]}, 'update': {param_types: [GObject.TYPE_DOUBLE]}, 'end': {param_types: [GObject.TYPE_UINT64, GObject.TYPE_DOUBLE]}, }, }, class SwipeTracker extends GObject.Object { _init(actor, orientation, allowedModes, params) { super._init(); params = Params.parse(params, {allowDrag: true, allowScroll: true}); this.orientation = orientation; this._allowedModes = allowedModes; this._enabled = true; this._distance = global.screen_height; this._history = new EventHistory(); this._reset(); this._touchpadGesture = new TouchpadSwipeGesture(allowedModes); this._touchpadGesture.connect('begin', this._beginGesture.bind(this)); this._touchpadGesture.connect('update', this._updateGesture.bind(this)); this._touchpadGesture.connect('end', this._endTouchpadGesture.bind(this)); this.bind_property('enabled', this._touchpadGesture, 'enabled', 0); this.bind_property('orientation', this._touchpadGesture, 'orientation', GObject.BindingFlags.SYNC_CREATE); this._touchGesture = new TouchSwipeGesture(allowedModes, GESTURE_FINGER_COUNT, Clutter.GestureTriggerEdge.AFTER); this._touchGesture.connect('begin', this._beginTouchSwipe.bind(this)); this._touchGesture.connect('update', this._updateGesture.bind(this)); this._touchGesture.connect('end', this._endTouchGesture.bind(this)); this._touchGesture.connect('cancel', this._cancelTouchGesture.bind(this)); this.bind_property('enabled', this._touchGesture, 'enabled', 0); this.bind_property('orientation', this._touchGesture, 'orientation', GObject.BindingFlags.SYNC_CREATE); this.bind_property('distance', this._touchGesture, 'distance', 0); global.stage.add_action_full('swipe', Clutter.EventPhase.CAPTURE, this._touchGesture); if (params.allowDrag) { this._dragGesture = new TouchSwipeGesture(allowedModes, 1, Clutter.GestureTriggerEdge.AFTER); this._dragGesture.connect('begin', this._beginGesture.bind(this)); this._dragGesture.connect('update', this._updateGesture.bind(this)); this._dragGesture.connect('end', this._endTouchGesture.bind(this)); this._dragGesture.connect('cancel', this._cancelTouchGesture.bind(this)); this.bind_property('enabled', this._dragGesture, 'enabled', 0); this.bind_property('orientation', this._dragGesture, 'orientation', GObject.BindingFlags.SYNC_CREATE); this.bind_property('distance', this._dragGesture, 'distance', 0); actor.add_action_full('drag', Clutter.EventPhase.CAPTURE, this._dragGesture); } else { this._dragGesture = null; } if (params.allowScroll) { this._scrollGesture = new ScrollGesture(actor, allowedModes); this._scrollGesture.connect('begin', this._beginGesture.bind(this)); this._scrollGesture.connect('update', this._updateGesture.bind(this)); this._scrollGesture.connect('end', this._endTouchpadGesture.bind(this)); this.bind_property('enabled', this._scrollGesture, 'enabled', 0); this.bind_property('orientation', this._scrollGesture, 'orientation', GObject.BindingFlags.SYNC_CREATE); this.bind_property('scroll-modifiers', this._scrollGesture, 'scroll-modifiers', 0); } else { this._scrollGesture = null; } } /** * canHandleScrollEvent: * This function can be used to combine swipe gesture and mouse * scrolling. * * @param {Clutter.Event} scrollEvent an event to check * @returns {boolean} whether the event can be handled by the tracker */ canHandleScrollEvent(scrollEvent) { if (!this.enabled || this._scrollGesture === null) return false; return this._scrollGesture.canHandleEvent(scrollEvent); } get enabled() { return this._enabled; } set enabled(enabled) { if (this._enabled === enabled) return; this._enabled = enabled; if (!enabled && this._state === State.SCROLLING) this._interrupt(); this.notify('enabled'); } get distance() { return this._distance; } set distance(distance) { if (this._distance === distance) return; this._distance = distance; this.notify('distance'); } _reset() { this._state = State.NONE; this._snapPoints = []; this._initialProgress = 0; this._cancelProgress = 0; this._prevOffset = 0; this._progress = 0; this._cancelled = false; this._history.reset(); } _interrupt() { this.emit('end', 0, this._cancelProgress); this._reset(); } _beginTouchSwipe(gesture, time, x, y) { if (this._dragGesture) this._dragGesture.cancel(); this._beginGesture(gesture, time, x, y); } _beginGesture(gesture, time, x, y) { if (this._state === State.SCROLLING) return; this._history.append(time, 0); const rect = new Mtk.Rectangle({x, y, width: 1, height: 1}); let monitor = global.display.get_monitor_index_for_rect(rect); this.emit('begin', monitor); } _findClosestPoint(pos) { const distances = this._snapPoints.map(x => Math.abs(x - pos)); const min = Math.min(...distances); return distances.indexOf(min); } _findNextPoint(pos) { return this._snapPoints.findIndex(p => p >= pos); } _findPreviousPoint(pos) { const reversedIndex = this._snapPoints.slice().reverse().findIndex(p => p <= pos); return this._snapPoints.length - 1 - reversedIndex; } _findPointForProjection(pos, velocity) { const initial = this._findClosestPoint(this._initialProgress); const prev = this._findPreviousPoint(pos); const next = this._findNextPoint(pos); if ((velocity > 0 ? prev : next) === initial) return velocity > 0 ? next : prev; return this._findClosestPoint(pos); } _getBounds(pos) { if (this.allowLongSwipes) return [this._snapPoints[0], this._snapPoints[this._snapPoints.length - 1]]; const closest = this._findClosestPoint(pos); let prev, next; if (Math.abs(this._snapPoints[closest] - pos) < EPSILON) { prev = next = closest; } else { prev = this._findPreviousPoint(pos); next = this._findNextPoint(pos); } const lowerIndex = Math.max(prev - 1, 0); const upperIndex = Math.min(next + 1, this._snapPoints.length - 1); return [this._snapPoints[lowerIndex], this._snapPoints[upperIndex]]; } _updateGesture(gesture, time, delta, distance) { if (this._state !== State.SCROLLING) return; if ((this._allowedModes & Main.actionMode) === 0 || !this.enabled) { this._interrupt(); return; } if (this.orientation === Clutter.Orientation.HORIZONTAL && Clutter.get_default_text_direction() === Clutter.TextDirection.RTL) delta = -delta; this._progress += delta / distance; this._history.append(time, delta); this._progress = Math.clamp(this._progress, ...this._getBounds(this._initialProgress)); this.emit('update', this._progress); } _getEndProgress(velocity, distance, isTouchpad) { if (this._cancelled) return this._cancelProgress; const threshold = isTouchpad ? VELOCITY_THRESHOLD_TOUCHPAD : VELOCITY_THRESHOLD_TOUCH; if (Math.abs(velocity) < threshold) return this._snapPoints[this._findClosestPoint(this._progress)]; const decel = isTouchpad ? DECELERATION_TOUCHPAD : DECELERATION_TOUCH; const slope = decel / (1.0 - decel) / 1000.0; let pos; if (Math.abs(velocity) > VELOCITY_CURVE_THRESHOLD) { const c = slope / 2 / DECELERATION_PARABOLA_MULTIPLIER; const x = Math.abs(velocity) - VELOCITY_CURVE_THRESHOLD + c; pos = slope * VELOCITY_CURVE_THRESHOLD + DECELERATION_PARABOLA_MULTIPLIER * x * x - DECELERATION_PARABOLA_MULTIPLIER * c * c; } else { pos = Math.abs(velocity) * slope; } pos = pos * Math.sign(velocity) + this._progress; pos = Math.clamp(pos, ...this._getBounds(this._initialProgress)); const index = this._findPointForProjection(pos, velocity); return this._snapPoints[index]; } _endTouchGesture(_gesture, time, distance) { this._endGesture(time, distance, false); } _endTouchpadGesture(_gesture, time, distance) { this._endGesture(time, distance, true); } _endGesture(time, distance, isTouchpad) { if (this._state !== State.SCROLLING) return; if ((this._allowedModes & Main.actionMode) === 0 || !this.enabled) { this._interrupt(); return; } this._history.trim(time); let velocity = this._history.calculateVelocity(); const endProgress = this._getEndProgress(velocity, distance, isTouchpad); velocity /= distance; if ((endProgress - this._progress) * velocity <= 0) velocity = ANIMATION_BASE_VELOCITY; const nPoints = Math.max(1, Math.ceil(Math.abs(this._progress - endProgress))); const maxDuration = MAX_ANIMATION_DURATION * Math.log2(1 + nPoints); let duration = Math.abs((this._progress - endProgress) / velocity * DURATION_MULTIPLIER); if (duration > 0) duration = Math.clamp(duration, MIN_ANIMATION_DURATION, maxDuration); this._reset(); this.emit('end', duration, endProgress); } _cancelTouchGesture(_gesture, time, distance) { if (this._state !== State.SCROLLING) return; this._cancelled = true; this._endGesture(time, distance, false); } /** * Confirms a swipe. User has to call this in 'begin' signal handler, * otherwise the swipe wouldn't start. If there's an animation running, * it should be stopped first. * * `cancelProgress` must always be a snap point, or a value matching * some other non-transient state. * * @param {number} distance - swipe distance in pixels * @param {number[]} snapPoints - An array of snap points, sorted in ascending order * @param {number} currentProgress - initial progress value * @param {number} cancelProgress - the value to be used on cancelling */ confirmSwipe(distance, snapPoints, currentProgress, cancelProgress) { this.distance = distance; this._snapPoints = snapPoints; this._initialProgress = currentProgress; this._progress = currentProgress; this._cancelProgress = cancelProgress; this._state = State.SCROLLING; } destroy() { if (this._touchpadGesture) { this._touchpadGesture.destroy(); delete this._touchpadGesture; } if (this._touchGesture) { global.stage.remove_action(this._touchGesture); delete this._touchGesture; } } }); 070701000001F9000081A40000000000000000000000016712993F00000EB3000000000000000000000000000000000000002800000000gnome-shell-47.1/js/ui/switchMonitor.jsimport Clutter from 'gi://Clutter'; import GObject from 'gi://GObject'; import Meta from 'gi://Meta'; import St from 'gi://St'; import * as SwitcherPopup from './switcherPopup.js'; const APP_ICON_SIZE = 96; export const SwitchMonitorPopup = GObject.registerClass( class SwitchMonitorPopup extends SwitcherPopup.SwitcherPopup { _init() { let items = []; items.push({ icon: 'shell-display-mirror-symbolic', /* Translators: this is for display mirroring i.e. cloning. * Try to keep it under around 15 characters. */ label: _('Mirror'), configType: Meta.MonitorSwitchConfigType.ALL_MIRROR, }); items.push({ icon: 'shell-display-extend-all-symbolic', /* Translators: this is for the desktop spanning displays. * Try to keep it under around 15 characters. */ label: _('Join Displays'), configType: Meta.MonitorSwitchConfigType.ALL_LINEAR, }); if (global.backend.get_monitor_manager().has_builtin_panel) { items.push({ icon: 'shell-display-external-only-symbolic', /* Translators: this is for using only external displays. * Try to keep it under around 15 characters. */ label: _('External Only'), configType: Meta.MonitorSwitchConfigType.EXTERNAL, }); items.push({ icon: 'shell-display-built-in-only-symbolic', /* Translators: this is for using only the laptop display. * Try to keep it under around 15 characters. */ label: _('Built-in Only'), configType: Meta.MonitorSwitchConfigType.BUILTIN, }); } super._init(items); this._switcherList = new SwitchMonitorSwitcher(items); } show(backward, binding, mask) { if (!global.backend.get_monitor_manager().can_switch_config()) return false; return super.show(backward, binding, mask); } _initialSelection() { let currentConfig = global.backend.get_monitor_manager().get_switch_config(); let selectConfig = (currentConfig + 1) % this._items.length; this._select(selectConfig); } _keyPressHandler(keysym, action) { if (action === Meta.KeyBindingAction.SWITCH_MONITOR) this._select(this._next()); else if (keysym === Clutter.KEY_Left) this._select(this._previous()); else if (keysym === Clutter.KEY_Right) this._select(this._next()); else return Clutter.EVENT_PROPAGATE; return Clutter.EVENT_STOP; } _finish() { super._finish(); const monitorManager = global.backend.get_monitor_manager(); const item = this._items[this._selectedIndex]; monitorManager.switch_config(item.configType); } }); const SwitchMonitorSwitcher = GObject.registerClass( class SwitchMonitorSwitcher extends SwitcherPopup.SwitcherList { _init(items) { super._init(true); for (let i = 0; i < items.length; i++) this._addIcon(items[i]); } _addIcon(item) { const box = new St.BoxLayout({ style_class: 'alt-tab-app', vertical: true, }); const icon = new St.Icon({ icon_name: item.icon, icon_size: APP_ICON_SIZE, }); box.add_child(icon); let text = new St.Label({ text: item.label, x_align: Clutter.ActorAlign.CENTER, }); box.add_child(text); this.addItem(box, text); } }); 070701000001FA000081A40000000000000000000000016712993F000054A1000000000000000000000000000000000000002800000000gnome-shell-47.1/js/ui/switcherPopup.jsimport Clutter from 'gi://Clutter'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import St from 'gi://St'; import * as Main from './main.js'; const POPUP_DELAY_TIMEOUT = 150; // milliseconds const POPUP_SCROLL_TIME = 100; // milliseconds const POPUP_FADE_OUT_TIME = 100; // milliseconds const DISABLE_HOVER_TIMEOUT = 500; // milliseconds const NO_MODS_TIMEOUT = 1500; // milliseconds /** * @param {number} a * @param {number} b * @returns {number} */ export function mod(a, b) { return (a + b) % b; } function primaryModifier(mask) { if (mask === 0) return 0; let primary = 1; while (mask > 1) { mask >>= 1; primary <<= 1; } return primary; } export const SwitcherPopup = GObject.registerClass({ GTypeFlags: GObject.TypeFlags.ABSTRACT, }, class SwitcherPopup extends St.Widget { _init(items) { super._init({ style_class: 'switcher-popup', reactive: true, visible: false, }); this._switcherList = null; this._items = items || []; this._selectedIndex = 0; this.connect('destroy', this._onDestroy.bind(this)); Main.uiGroup.add_child(this); Main.layoutManager.connectObject( 'system-modal-opened', () => this.destroy(), this); this._haveModal = false; this._modifierMask = 0; this._motionTimeoutId = 0; this._initialDelayTimeoutId = 0; this._noModsTimeoutId = 0; this.add_constraint(new Clutter.BindConstraint({ source: global.stage, coordinate: Clutter.BindCoordinate.ALL, })); // Initially disable hover so we ignore the enter-event if // the switcher appears underneath the current pointer location this._disableHover(); } vfunc_allocate(box) { this.set_allocation(box); let childBox = new Clutter.ActorBox(); let primary = Main.layoutManager.primaryMonitor; let leftPadding = this.get_theme_node().get_padding(St.Side.LEFT); let rightPadding = this.get_theme_node().get_padding(St.Side.RIGHT); let hPadding = leftPadding + rightPadding; // Allocate the switcherList // We select a size based on an icon size that does not overflow the screen let [, childNaturalHeight] = this._switcherList.get_preferred_height(primary.width - hPadding); let [, childNaturalWidth] = this._switcherList.get_preferred_width(childNaturalHeight); childBox.x1 = Math.max(primary.x + leftPadding, primary.x + Math.floor((primary.width - childNaturalWidth) / 2)); childBox.x2 = Math.min(primary.x + primary.width - rightPadding, childBox.x1 + childNaturalWidth); childBox.y1 = primary.y + Math.floor((primary.height - childNaturalHeight) / 2); childBox.y2 = childBox.y1 + childNaturalHeight; this._switcherList.allocate(childBox); } _initialSelection(backward, _binding) { if (backward) this._select(this._items.length - 1); else if (this._items.length === 1) this._select(0); else this._select(1); } show(backward, binding, mask) { if (this._items.length === 0) return false; let grab = Main.pushModal(this); // We expect at least a keyboard grab here if ((grab.get_seat_state() & Clutter.GrabState.KEYBOARD) === 0) { Main.popModal(grab); return false; } this._grab = grab; this._haveModal = true; this._modifierMask = primaryModifier(mask); this.add_child(this._switcherList); this._switcherList.connect('item-activated', this._itemActivated.bind(this)); this._switcherList.connect('item-entered', this._itemEntered.bind(this)); this._switcherList.connect('item-removed', this._itemRemoved.bind(this)); // Need to force an allocation so we can figure out whether we // need to scroll when selecting this.opacity = 0; this.visible = true; this.get_allocation_box(); this._initialSelection(backward, binding); // There's a race condition; if the user released Alt before // we got the grab, then we won't be notified. (See // https://bugzilla.gnome.org/show_bug.cgi?id=596695 for // details.) So we check now. (Have to do this after updating // selection.) if (this._modifierMask) { let [x_, y_, mods] = global.get_pointer(); if (!(mods & this._modifierMask)) { this._finish(global.get_current_time()); return true; } } else { this._resetNoModsTimeout(); } // We delay showing the popup so that fast Alt+Tab users aren't // disturbed by the popup briefly flashing. this._initialDelayTimeoutId = GLib.timeout_add( GLib.PRIORITY_DEFAULT, POPUP_DELAY_TIMEOUT, () => { this._showImmediately(); return GLib.SOURCE_REMOVE; }); GLib.Source.set_name_by_id(this._initialDelayTimeoutId, '[gnome-shell] Main.osdWindow.cancel'); return true; } _showImmediately() { if (this._initialDelayTimeoutId === 0) return; GLib.source_remove(this._initialDelayTimeoutId); this._initialDelayTimeoutId = 0; Main.osdWindowManager.hideAll(); this.opacity = 255; } _next() { return mod(this._selectedIndex + 1, this._items.length); } _previous() { return mod(this._selectedIndex - 1, this._items.length); } _keyPressHandler(_keysym, _action) { throw new GObject.NotImplementedError(`_keyPressHandler in ${this.constructor.name}`); } vfunc_key_press_event(event) { let keysym = event.get_key_symbol(); let action = global.display.get_keybinding_action( event.get_key_code(), event.get_state()); this._disableHover(); if (this._keyPressHandler(keysym, action) !== Clutter.EVENT_PROPAGATE) { this._showImmediately(); return Clutter.EVENT_STOP; } // Note: pressing one of the below keys will destroy the popup only if // that key is not used by the active popup's keyboard shortcut if (keysym === Clutter.KEY_Escape || keysym === Clutter.KEY_Tab) this.fadeAndDestroy(); // Allow to explicitly select the current item; this is particularly // useful for no-modifier popups if (keysym === Clutter.KEY_space || keysym === Clutter.KEY_Return || keysym === Clutter.KEY_KP_Enter || keysym === Clutter.KEY_ISO_Enter) this._finish(event.get_time()); return Clutter.EVENT_STOP; } vfunc_key_release_event(event) { if (this._modifierMask) { let [x_, y_, mods] = global.get_pointer(); let state = mods & this._modifierMask; if (state === 0) this._finish(event.get_time()); } else { this._resetNoModsTimeout(); } return Clutter.EVENT_STOP; } vfunc_button_press_event() { /* We clicked outside */ this.fadeAndDestroy(); return Clutter.EVENT_PROPAGATE; } _scrollHandler(direction) { if (direction === Clutter.ScrollDirection.UP) this._select(this._previous()); else if (direction === Clutter.ScrollDirection.DOWN) this._select(this._next()); } vfunc_scroll_event(event) { this._disableHover(); this._scrollHandler(event.get_scroll_direction()); return Clutter.EVENT_PROPAGATE; } _itemActivatedHandler(n) { this._select(n); } _itemActivated(switcher, n) { this._itemActivatedHandler(n); this._finish(global.get_current_time()); } _itemEnteredHandler(n) { this._select(n); } _itemEntered(switcher, n) { if (!this.mouseActive) return; this._itemEnteredHandler(n); } _itemRemovedHandler(n) { if (this._items.length > 0) { let newIndex; if (n < this._selectedIndex) newIndex = this._selectedIndex - 1; else if (n === this._selectedIndex) newIndex = Math.min(n, this._items.length - 1); else if (n > this._selectedIndex) return; // No need to select something new in this case this._select(newIndex); } else { this.fadeAndDestroy(); } } _itemRemoved(switcher, n) { this._itemRemovedHandler(n); } _disableHover() { this.mouseActive = false; if (this._motionTimeoutId !== 0) GLib.source_remove(this._motionTimeoutId); this._motionTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, DISABLE_HOVER_TIMEOUT, this._mouseTimedOut.bind(this)); GLib.Source.set_name_by_id(this._motionTimeoutId, '[gnome-shell] this._mouseTimedOut'); } _mouseTimedOut() { this._motionTimeoutId = 0; this.mouseActive = true; return GLib.SOURCE_REMOVE; } _resetNoModsTimeout() { if (this._noModsTimeoutId !== 0) GLib.source_remove(this._noModsTimeoutId); this._noModsTimeoutId = GLib.timeout_add( GLib.PRIORITY_DEFAULT, NO_MODS_TIMEOUT, () => { this._finish(global.display.get_current_time_roundtrip()); this._noModsTimeoutId = 0; return GLib.SOURCE_REMOVE; }); } _popModal() { if (this._haveModal) { Main.popModal(this._grab); this._grab = null; this._haveModal = false; } } fadeAndDestroy() { this._popModal(); if (this.opacity > 0) { this.ease({ opacity: 0, duration: POPUP_FADE_OUT_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => this.destroy(), }); } else { this.destroy(); } } _finish(_timestamp) { this.fadeAndDestroy(); } _onDestroy() { this._popModal(); if (this._motionTimeoutId !== 0) GLib.source_remove(this._motionTimeoutId); if (this._initialDelayTimeoutId !== 0) GLib.source_remove(this._initialDelayTimeoutId); if (this._noModsTimeoutId !== 0) GLib.source_remove(this._noModsTimeoutId); // Make sure the SwitcherList is always destroyed, it may not be // a child of the actor at this point. if (this._switcherList) this._switcherList.destroy(); } _select(num) { this._selectedIndex = num; this._switcherList.highlight(num); } }); const SwitcherButton = GObject.registerClass( class SwitcherButton extends St.Button { _init(square) { super._init({ style_class: 'item-box', reactive: true, }); this._square = square; } vfunc_get_preferred_width(forHeight) { if (this._square) return this.get_preferred_height(-1); else return super.vfunc_get_preferred_width(forHeight); } }); export const SwitcherList = GObject.registerClass({ Signals: { 'item-activated': {param_types: [GObject.TYPE_INT]}, 'item-entered': {param_types: [GObject.TYPE_INT]}, 'item-removed': {param_types: [GObject.TYPE_INT]}, }, }, class SwitcherList extends St.Widget { _init(squareItems) { super._init({style_class: 'switcher-list'}); this._list = new St.BoxLayout({ style_class: 'switcher-list-item-container', vertical: false, x_expand: true, y_expand: true, }); let layoutManager = this._list.get_layout_manager(); this._list.spacing = 0; this._list.connect('style-changed', () => { this._list.spacing = this._list.get_theme_node().get_length('spacing'); }); this._scrollView = new St.ScrollView({ style_class: 'hfade', enable_mouse_scrolling: false, hscrollbar_policy: St.PolicyType.NEVER, vscrollbar_policy: St.PolicyType.NEVER, child: this._list, }); this.add_child(this._scrollView); // Those arrows indicate whether scrolling in one direction is possible this._leftArrow = new St.DrawingArea({ style_class: 'switcher-arrow', pseudo_class: 'highlighted', }); this._leftArrow.connect('repaint', () => { drawArrow(this._leftArrow, St.Side.LEFT); }); this._rightArrow = new St.DrawingArea({ style_class: 'switcher-arrow', pseudo_class: 'highlighted', }); this._rightArrow.connect('repaint', () => { drawArrow(this._rightArrow, St.Side.RIGHT); }); this.add_child(this._leftArrow); this.add_child(this._rightArrow); this._items = []; this._highlighted = -1; this._squareItems = squareItems; this._scrollableRight = true; this._scrollableLeft = false; layoutManager.homogeneous = squareItems; } addItem(item, label) { let bbox = new SwitcherButton(this._squareItems); bbox.set_child(item); this._list.add_child(bbox); bbox.connect('clicked', () => this._onItemClicked(bbox)); bbox.connect('motion-event', () => this._onItemMotion(bbox)); bbox.label_actor = label; this._items.push(bbox); return bbox; } removeItem(index) { let item = this._items.splice(index, 1); item[0].destroy(); this.emit('item-removed', index); } addAccessibleState(index, state) { this._items[index].add_accessible_state(state); } removeAccessibleState(index, state) { this._items[index].remove_accessible_state(state); } _onItemClicked(item) { this._itemActivated(this._items.indexOf(item)); } _onItemMotion(item) { // Avoid reentrancy if (item !== this._items[this._highlighted]) this._itemEntered(this._items.indexOf(item)); return Clutter.EVENT_PROPAGATE; } highlight(index, justOutline) { if (this._items[this._highlighted]) { this._items[this._highlighted].remove_style_pseudo_class('selected'); this._items[this._highlighted].remove_style_pseudo_class('highlighted'); } if (this._items[index]) { if (justOutline) this._items[index].add_style_pseudo_class('highlighted'); else this._items[index].add_style_pseudo_class('selected'); } this._highlighted = index; const adjustment = this._scrollView.hadjustment; let [value] = adjustment.get_values(); let [absItemX] = this._items[index].get_transformed_position(); let [result_, posX, posY_] = this.transform_stage_point(absItemX, 0); let [containerWidth] = this.get_transformed_size(); if (posX + this._items[index].get_width() > containerWidth) this._scrollToRight(index); else if (this._items[index].allocation.x1 - value < 0) this._scrollToLeft(index); } _scrollToLeft(index) { const adjustment = this._scrollView.hadjustment; let [value, lower_, upper, stepIncrement_, pageIncrement_, pageSize] = adjustment.get_values(); let item = this._items[index]; if (item.allocation.x1 < value) value = Math.max(0, item.allocation.x1); else if (item.allocation.x2 > value + pageSize) value = Math.min(upper, item.allocation.x2 - pageSize); this._scrollableRight = true; adjustment.ease(value, { progress_mode: Clutter.AnimationMode.EASE_OUT_QUAD, duration: POPUP_SCROLL_TIME, onComplete: () => { if (index === 0) this._scrollableLeft = false; this.queue_relayout(); }, }); } _scrollToRight(index) { const adjustment = this._scrollView.hadjustment; let [value, lower_, upper, stepIncrement_, pageIncrement_, pageSize] = adjustment.get_values(); let item = this._items[index]; if (item.allocation.x1 < value) value = Math.max(0, item.allocation.x1); else if (item.allocation.x2 > value + pageSize) value = Math.min(upper, item.allocation.x2 - pageSize); this._scrollableLeft = true; adjustment.ease(value, { progress_mode: Clutter.AnimationMode.EASE_OUT_QUAD, duration: POPUP_SCROLL_TIME, onComplete: () => { if (index === this._items.length - 1) this._scrollableRight = false; this.queue_relayout(); }, }); } _itemActivated(n) { this.emit('item-activated', n); } _itemEntered(n) { this.emit('item-entered', n); } _maxChildWidth(forHeight) { let maxChildMin = 0; let maxChildNat = 0; for (let i = 0; i < this._items.length; i++) { let [childMin, childNat] = this._items[i].get_preferred_width(forHeight); maxChildMin = Math.max(childMin, maxChildMin); maxChildNat = Math.max(childNat, maxChildNat); if (this._squareItems) { [childMin, childNat] = this._items[i].get_preferred_height(-1); maxChildMin = Math.max(childMin, maxChildMin); maxChildNat = Math.max(childNat, maxChildNat); } } return [maxChildMin, maxChildNat]; } vfunc_get_preferred_width(forHeight) { let themeNode = this.get_theme_node(); let [maxChildMin] = this._maxChildWidth(forHeight); let [minListWidth] = this._list.get_preferred_width(forHeight); return themeNode.adjust_preferred_width(maxChildMin, minListWidth); } vfunc_get_preferred_height(_forWidth) { let maxChildMin = 0; let maxChildNat = 0; for (let i = 0; i < this._items.length; i++) { let [childMin, childNat] = this._items[i].get_preferred_height(-1); maxChildMin = Math.max(childMin, maxChildMin); maxChildNat = Math.max(childNat, maxChildNat); } if (this._squareItems) { let [childMin] = this._maxChildWidth(-1); maxChildMin = Math.max(childMin, maxChildMin); maxChildNat = maxChildMin; } let themeNode = this.get_theme_node(); return themeNode.adjust_preferred_height(maxChildMin, maxChildNat); } vfunc_allocate(box) { this.set_allocation(box); let contentBox = this.get_theme_node().get_content_box(box); let width = contentBox.x2 - contentBox.x1; let height = contentBox.y2 - contentBox.y1; let leftPadding = this.get_theme_node().get_padding(St.Side.LEFT); let rightPadding = this.get_theme_node().get_padding(St.Side.RIGHT); let [minListWidth] = this._list.get_preferred_width(height); let childBox = new Clutter.ActorBox(); let scrollable = minListWidth > width; this._scrollView.allocate(contentBox); let arrowWidth = Math.floor(leftPadding / 3); let arrowHeight = arrowWidth * 2; childBox.x1 = leftPadding / 2; childBox.y1 = this.height / 2 - arrowWidth; childBox.x2 = childBox.x1 + arrowWidth; childBox.y2 = childBox.y1 + arrowHeight; this._leftArrow.allocate(childBox); this._leftArrow.opacity = this._scrollableLeft && scrollable ? 255 : 0; arrowWidth = Math.floor(rightPadding / 3); arrowHeight = arrowWidth * 2; childBox.x1 = this.width - arrowWidth - rightPadding / 2; childBox.y1 = this.height / 2 - arrowWidth; childBox.x2 = childBox.x1 + arrowWidth; childBox.y2 = childBox.y1 + arrowHeight; this._rightArrow.allocate(childBox); this._rightArrow.opacity = this._scrollableRight && scrollable ? 255 : 0; } }); /** * @param {St.DrawingArrow} area * @param {St.Side} side */ export function drawArrow(area, side) { let themeNode = area.get_theme_node(); let borderColor = themeNode.get_border_color(side); let bodyColor = themeNode.get_foreground_color(); let [width, height] = area.get_surface_size(); let cr = area.get_context(); cr.setLineWidth(1.0); cr.setSourceColor(borderColor); switch (side) { case St.Side.TOP: cr.moveTo(0, height); cr.lineTo(Math.floor(width * 0.5), 0); cr.lineTo(width, height); break; case St.Side.BOTTOM: cr.moveTo(width, 0); cr.lineTo(Math.floor(width * 0.5), height); cr.lineTo(0, 0); break; case St.Side.LEFT: cr.moveTo(width, height); cr.lineTo(0, Math.floor(height * 0.5)); cr.lineTo(width, 0); break; case St.Side.RIGHT: cr.moveTo(0, 0); cr.lineTo(width, Math.floor(height * 0.5)); cr.lineTo(0, height); break; } cr.strokePreserve(); cr.setSourceColor(bodyColor); cr.fill(); cr.$dispose(); } 070701000001FB000081A40000000000000000000000016712993F00007173000000000000000000000000000000000000002700000000gnome-shell-47.1/js/ui/unlockDialog.jsimport AccountsService from 'gi://AccountsService'; import Atk from 'gi://Atk'; import Clutter from 'gi://Clutter'; import Gdm from 'gi://Gdm'; import Gio from 'gi://Gio'; import GnomeDesktop from 'gi://GnomeDesktop'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import Shell from 'gi://Shell'; import St from 'gi://St'; import * as Background from './background.js'; import * as Layout from './layout.js'; import * as Main from './main.js'; import * as MessageTray from './messageTray.js'; import * as SwipeTracker from './swipeTracker.js'; import {formatDateWithCFormatString} from '../misc/dateUtils.js'; import * as AuthPrompt from '../gdm/authPrompt.js'; // The timeout before going back automatically to the lock screen (in seconds) const IDLE_TIMEOUT = 2 * 60; // The timeout before showing the unlock hint (in seconds) const HINT_TIMEOUT = 4; const CROSSFADE_TIME = 300; const FADE_OUT_TRANSLATION = 200; const FADE_OUT_SCALE = 0.3; const BLUR_BRIGHTNESS = 0.65; const BLUR_RADIUS = 90; const NotificationsBox = GObject.registerClass({ Signals: {'wake-up-screen': {}}, }, class NotificationsBox extends St.BoxLayout { _init() { super._init({ vertical: true, name: 'unlockDialogNotifications', }); this._notificationBox = new St.BoxLayout({ vertical: true, style_class: 'unlock-dialog-notifications-container', }); this._scrollView = new St.ScrollView({ child: this._notificationBox, }); this.add_child(this._scrollView); this._settings = new Gio.Settings({ schema_id: 'org.gnome.desktop.notifications', }); this._sources = new Map(); Main.messageTray.getSources().forEach(source => { this._sourceAdded(Main.messageTray, source, true); }); this._updateVisibility(); Main.messageTray.connectObject('source-added', this._sourceAdded.bind(this), this); this.connect('destroy', this._onDestroy.bind(this)); } _onDestroy() { let items = this._sources.entries(); for (let [source, obj] of items) this._removeSource(source, obj); } _updateVisibility() { this._notificationBox.visible = this._notificationBox.get_children().some(a => a.visible); this.visible = this._notificationBox.visible; } _makeNotificationSource(source, box) { let iconActor = new St.Icon({ style_class: 'unlock-dialog-notification-icon', fallback_icon_name: 'application-x-executable', }); source.bind_property('icon', iconActor, 'gicon', GObject.BindingFlags.SYNC_CREATE); box.add_child(iconActor); let textBox = new St.BoxLayout({ x_expand: true, y_expand: true, y_align: Clutter.ActorAlign.CENTER, }); box.add_child(textBox); let title = new St.Label({ style_class: 'unlock-dialog-notification-label', x_expand: true, x_align: Clutter.ActorAlign.START, }); source.bind_property('title', title, 'text', GObject.BindingFlags.SYNC_CREATE); textBox.add_child(title); let count = source.unseenCount; let countLabel = new St.Label({ text: `${count}`, visible: count > 1, style_class: 'unlock-dialog-notification-count-text', }); textBox.add_child(countLabel); box.visible = count !== 0; return [title, countLabel]; } _makeNotificationDetailedSource(source, box) { let iconActor = new St.Icon({ style_class: 'unlock-dialog-notification-icon', fallback_icon_name: 'application-x-executable', }); source.bind_property('icon', iconActor, 'gicon', GObject.BindingFlags.SYNC_CREATE); box.add_child(iconActor); let textBox = new St.BoxLayout({vertical: true}); box.add_child(textBox); let title = new St.Label({ style_class: 'unlock-dialog-notification-label', }); source.bind_property_full('title', title, 'text', GObject.BindingFlags.SYNC_CREATE, (bind, sourceVal) => [true, sourceVal?.replace(/\n/g, ' ') ?? ''], null); textBox.add_child(title); let visible = false; for (let i = 0; i < source.notifications.length; i++) { let n = source.notifications[i]; if (n.acknowledged) continue; let body = ''; if (n.body) { const bodyText = n.body.replace(/\n/g, ' '); body = n.useBodyMarkup ? bodyText : GLib.markup_escape_text(bodyText, -1); } let label = new St.Label({style_class: 'unlock-dialog-notification-count-text'}); label.clutter_text.set_markup(`${n.title} ${body}`); textBox.add_child(label); visible = true; } box.visible = visible; return [title, null]; } _shouldShowDetails(source) { return source.policy.detailsInLockScreen || source.narrowestPrivacyScope === MessageTray.PrivacyScope.SYSTEM; } _updateSourceBoxStyle(source, obj, box) { let hasCriticalNotification = source.notifications.some(n => n.urgency === MessageTray.Urgency.CRITICAL); if (hasCriticalNotification !== obj.hasCriticalNotification) { obj.hasCriticalNotification = hasCriticalNotification; if (hasCriticalNotification) box.add_style_class_name('critical'); else box.remove_style_class_name('critical'); } } _showSource(source, obj, box) { if (obj.detailed) [obj.titleLabel, obj.countLabel] = this._makeNotificationDetailedSource(source, box); else [obj.titleLabel, obj.countLabel] = this._makeNotificationSource(source, box); box.visible = obj.visible && (source.unseenCount > 0); this._updateSourceBoxStyle(source, obj, box); } _wakeUpScreenForSource(source) { if (!this._settings.get_boolean('show-banners')) return; const obj = this._sources.get(source); if (obj?.sourceBox.visible) this.emit('wake-up-screen'); } _sourceAdded(tray, source, initial) { let obj = { visible: source.policy.showInLockScreen, detailed: this._shouldShowDetails(source), sourceBox: null, titleLabel: null, countLabel: null, hasCriticalNotification: false, }; obj.sourceBox = new St.BoxLayout({ style_class: 'unlock-dialog-notification-source', x_expand: true, }); this._showSource(source, obj, obj.sourceBox); this._notificationBox.add_child(obj.sourceBox); source.connectObject( 'notify::count', () => this._countChanged(source, obj), 'notify::title', () => this._titleChanged(source, obj), 'destroy', () => { this._removeSource(source, obj); this._updateVisibility(); }, this); obj.policyChangedId = source.policy.connect('notify', (policy, pspec) => { if (pspec.name === 'show-in-lock-screen') this._visibleChanged(source, obj); else this._detailedChanged(source, obj); }); this._sources.set(source, obj); if (!initial) { // block scrollbars while animating, if they're not needed now let boxHeight = this._notificationBox.height; if (this._scrollView.height >= boxHeight) this._scrollView.vscrollbar_policy = St.PolicyType.NEVER; let widget = obj.sourceBox; let [, natHeight] = widget.get_preferred_height(-1); widget.height = 0; widget.ease({ height: natHeight, mode: Clutter.AnimationMode.EASE_OUT_QUAD, duration: 250, onComplete: () => { this._scrollView.vscrollbar_policy = St.PolicyType.AUTOMATIC; widget.set_height(-1); }, }); this._updateVisibility(); this._wakeUpScreenForSource(source); } } _titleChanged(source, obj) { obj.titleLabel.text = source.title; } _countChanged(source, obj) { // A change in the number of notifications may change whether we show // details. let newDetailed = this._shouldShowDetails(source); let oldDetailed = obj.detailed; obj.detailed = newDetailed; if (obj.detailed || oldDetailed !== newDetailed) { // A new notification was pushed, or a previous notification was destroyed. // Give up, and build the list again. obj.sourceBox.destroy_all_children(); obj.titleLabel = obj.countLabel = null; this._showSource(source, obj, obj.sourceBox); } else { let count = source.unseenCount; obj.countLabel.text = `${count}`; obj.countLabel.visible = count > 1; } obj.sourceBox.visible = obj.visible && (source.unseenCount > 0); this._updateVisibility(); this._wakeUpScreenForSource(source); } _visibleChanged(source, obj) { if (obj.visible === source.policy.showInLockScreen) return; obj.visible = source.policy.showInLockScreen; obj.sourceBox.visible = obj.visible && source.unseenCount > 0; this._updateVisibility(); this._wakeUpScreenForSource(source); } _detailedChanged(source, obj) { let newDetailed = this._shouldShowDetails(source); if (obj.detailed === newDetailed) return; obj.detailed = newDetailed; obj.sourceBox.destroy_all_children(); obj.titleLabel = obj.countLabel = null; this._showSource(source, obj, obj.sourceBox); } _removeSource(source, obj) { obj.sourceBox.destroy(); obj.sourceBox = obj.titleLabel = obj.countLabel = null; source.policy.disconnect(obj.policyChangedId); this._sources.delete(source); } }); const Clock = GObject.registerClass( class UnlockDialogClock extends St.BoxLayout { _init() { super._init({style_class: 'unlock-dialog-clock', vertical: true}); this._time = new St.Label({ style_class: 'unlock-dialog-clock-time', x_align: Clutter.ActorAlign.CENTER, }); this._date = new St.Label({ style_class: 'unlock-dialog-clock-date', x_align: Clutter.ActorAlign.CENTER, }); this._hint = new St.Label({ style_class: 'unlock-dialog-clock-hint', x_align: Clutter.ActorAlign.CENTER, opacity: 0, }); this.add_child(this._time); this.add_child(this._date); this.add_child(this._hint); this._wallClock = new GnomeDesktop.WallClock({time_only: true}); this._wallClock.connect('notify::clock', this._updateClock.bind(this)); this._seat = Clutter.get_default_backend().get_default_seat(); this._seat.connectObject('notify::touch-mode', this._updateHint.bind(this), this); this._monitorManager = global.backend.get_monitor_manager(); this._monitorManager.connectObject('power-save-mode-changed', () => (this._hint.opacity = 0), this); this._idleMonitor = global.backend.get_core_idle_monitor(); this._idleWatchId = this._idleMonitor.add_idle_watch(HINT_TIMEOUT * 1000, () => { this._hint.ease({ opacity: 255, duration: CROSSFADE_TIME, }); }); this._updateClock(); this._updateHint(); this.connect('destroy', this._onDestroy.bind(this)); } _updateClock() { this._time.text = this._wallClock.clock.trim(); let date = new Date(); /* Translators: This is a time format for a date in long format */ let dateFormat = Shell.util_translate_time_string(N_('%A %B %-d')); this._date.text = formatDateWithCFormatString(date, dateFormat); } _updateHint() { this._hint.text = this._seat.touch_mode ? _('Swipe up to unlock') : _('Click or press a key to unlock'); } _onDestroy() { this._wallClock.run_dispose(); this._idleMonitor.remove_watch(this._idleWatchId); } }); const UnlockDialogLayout = GObject.registerClass( class UnlockDialogLayout extends Clutter.LayoutManager { _init(stack, notifications, switchUserButton) { super._init(); this._stack = stack; this._notifications = notifications; this._switchUserButton = switchUserButton; } vfunc_get_preferred_width(container, forHeight) { return this._stack.get_preferred_width(forHeight); } vfunc_get_preferred_height(container, forWidth) { return this._stack.get_preferred_height(forWidth); } vfunc_allocate(container, box) { let [width, height] = box.get_size(); let tenthOfHeight = height / 10.0; let thirdOfHeight = height / 3.0; let [, , stackWidth, stackHeight] = this._stack.get_preferred_size(); let [, , notificationsWidth, notificationsHeight] = this._notifications.get_preferred_size(); let columnWidth = Math.max(stackWidth, notificationsWidth); let columnX1 = Math.floor((width - columnWidth) / 2.0); let actorBox = new Clutter.ActorBox(); // Notifications let maxNotificationsHeight = Math.min( notificationsHeight, height - tenthOfHeight - stackHeight); actorBox.x1 = columnX1; actorBox.y1 = height - maxNotificationsHeight; actorBox.x2 = columnX1 + columnWidth; actorBox.y2 = actorBox.y1 + maxNotificationsHeight; this._notifications.allocate(actorBox); // Authentication Box let stackY = Math.min( thirdOfHeight, height - stackHeight - maxNotificationsHeight); actorBox.x1 = columnX1; actorBox.y1 = stackY; actorBox.x2 = columnX1 + columnWidth; actorBox.y2 = stackY + stackHeight; this._stack.allocate(actorBox); // Switch User button if (this._switchUserButton.visible) { let [, , natWidth, natHeight] = this._switchUserButton.get_preferred_size(); const textDirection = this._switchUserButton.get_text_direction(); if (textDirection === Clutter.TextDirection.RTL) actorBox.x1 = box.x1 + natWidth; else actorBox.x1 = box.x2 - (natWidth * 2); actorBox.y1 = box.y2 - (natHeight * 2); actorBox.x2 = actorBox.x1 + natWidth; actorBox.y2 = actorBox.y1 + natHeight; this._switchUserButton.allocate(actorBox); } } }); export const UnlockDialog = GObject.registerClass({ Signals: { 'failed': {}, 'wake-up-screen': {}, }, }, class UnlockDialog extends St.Widget { _init(parentActor) { super._init({ accessible_role: Atk.Role.WINDOW, style_class: 'unlock-dialog', visible: false, reactive: true, }); parentActor.add_child(this); this._gdmClient = new Gdm.Client(); try { this._gdmClient.set_enabled_extensions([ Gdm.UserVerifierChoiceList.interface_info().name, ]); } catch (e) { } this._adjustment = new St.Adjustment({ actor: this, lower: 0, upper: 2, page_size: 1, page_increment: 1, }); this._adjustment.connect('notify::value', () => { this._setTransitionProgress(this._adjustment.value); }); this._swipeTracker = new SwipeTracker.SwipeTracker(this, Clutter.Orientation.VERTICAL, Shell.ActionMode.UNLOCK_SCREEN); this._swipeTracker.connect('begin', this._swipeBegin.bind(this)); this._swipeTracker.connect('update', this._swipeUpdate.bind(this)); this._swipeTracker.connect('end', this._swipeEnd.bind(this)); this.connect('scroll-event', (o, event) => { if (this._swipeTracker.canHandleScrollEvent(event)) return Clutter.EVENT_PROPAGATE; let direction = event.get_scroll_direction(); if (direction === Clutter.ScrollDirection.UP) this._showClock(); else if (direction === Clutter.ScrollDirection.DOWN) this._showPrompt(); return Clutter.EVENT_STOP; }); this._activePage = null; let tapAction = new Clutter.TapAction(); tapAction.connect('tap', this._showPrompt.bind(this)); this.add_action(tapAction); // Background this._backgroundGroup = new Clutter.Actor(); this.add_child(this._backgroundGroup); this._bgManagers = []; const themeContext = St.ThemeContext.get_for_stage(global.stage); themeContext.connectObject('notify::scale-factor', () => this._updateBackgroundEffects(), this); this._updateBackgrounds(); Main.layoutManager.connectObject('monitors-changed', this._updateBackgrounds.bind(this), this); this._userManager = AccountsService.UserManager.get_default(); this._userName = GLib.get_user_name(); this._user = this._userManager.get_user(this._userName); // Authentication & Clock stack this._stack = new Shell.Stack(); this._promptBox = new St.BoxLayout({vertical: true}); this._promptBox.set_pivot_point(0.5, 0.5); this._promptBox.hide(); this._stack.add_child(this._promptBox); this._clock = new Clock(); this._clock.set_pivot_point(0.5, 0.5); this._stack.add_child(this._clock); this._showClock(); this.allowCancel = false; Main.ctrlAltTabManager.addGroup(this, _('Unlock Window'), 'dialog-password-symbolic'); // Notifications this._notificationsBox = new NotificationsBox(); this._notificationsBox.connect('wake-up-screen', () => this.emit('wake-up-screen')); // Switch User button this._otherUserButton = new St.Button({ style_class: 'login-dialog-button switch-user-button', accessible_name: _('Log in as another user'), button_mask: St.ButtonMask.ONE | St.ButtonMask.THREE, reactive: false, opacity: 0, x_align: Clutter.ActorAlign.END, y_align: Clutter.ActorAlign.END, icon_name: 'system-users-symbolic', }); this._otherUserButton.set_pivot_point(0.5, 0.5); this._otherUserButton.connect('clicked', this._otherUserClicked.bind(this)); this._screenSaverSettings = new Gio.Settings({schema_id: 'org.gnome.desktop.screensaver'}); this._screenSaverSettings.connectObject('changed::user-switch-enabled', this._updateUserSwitchVisibility.bind(this), this); this._lockdownSettings = new Gio.Settings({schema_id: 'org.gnome.desktop.lockdown'}); this._lockdownSettings.connect('changed::disable-user-switching', this._updateUserSwitchVisibility.bind(this)); this._user.connectObject( 'notify::is-loaded', () => this._updateUserSwitchVisibility(), 'notify::has-multiple-users', () => this._updateUserSwitchVisibility(), this); this._updateUserSwitchVisibility(); // Main Box let mainBox = new St.Widget(); mainBox.add_constraint(new Layout.MonitorConstraint({primary: true})); mainBox.add_child(this._stack); mainBox.add_child(this._notificationsBox); mainBox.add_child(this._otherUserButton); mainBox.layout_manager = new UnlockDialogLayout( this._stack, this._notificationsBox, this._otherUserButton); this.add_child(mainBox); this._idleMonitor = global.backend.get_core_idle_monitor(); this._idleWatchId = this._idleMonitor.add_idle_watch(IDLE_TIMEOUT * 1000, this._escape.bind(this)); this.connect('destroy', this._onDestroy.bind(this)); } vfunc_key_press_event(event) { if (this._activePage === this._promptBox || (this._promptBox && this._promptBox.visible)) return Clutter.EVENT_PROPAGATE; const keyval = event.get_key_symbol(); if (keyval === Clutter.KEY_Shift_L || keyval === Clutter.KEY_Shift_R || keyval === Clutter.KEY_Shift_Lock || keyval === Clutter.KEY_Caps_Lock) return Clutter.EVENT_PROPAGATE; let unichar = event.get_key_unicode(); this._showPrompt(); if (GLib.unichar_isgraph(unichar)) this._authPrompt.addCharacter(unichar); return Clutter.EVENT_PROPAGATE; } vfunc_captured_event(event) { if (Main.keyboard.maybeHandleEvent(event)) return Clutter.EVENT_STOP; return Clutter.EVENT_PROPAGATE; } _createBackground(monitorIndex) { let monitor = Main.layoutManager.monitors[monitorIndex]; let widget = new St.Widget({ style_class: 'screen-shield-background', x: monitor.x, y: monitor.y, width: monitor.width, height: monitor.height, effect: new Shell.BlurEffect({name: 'blur'}), }); let bgManager = new Background.BackgroundManager({ container: widget, monitorIndex, controlPosition: false, }); this._bgManagers.push(bgManager); this._backgroundGroup.add_child(widget); } _updateBackgroundEffects() { const themeContext = St.ThemeContext.get_for_stage(global.stage); for (const widget of this._backgroundGroup) { const effect = widget.get_effect('blur'); if (effect) { effect.set({ brightness: BLUR_BRIGHTNESS, radius: BLUR_RADIUS * themeContext.scale_factor, }); } } } _updateBackgrounds() { for (let i = 0; i < this._bgManagers.length; i++) this._bgManagers[i].destroy(); this._bgManagers = []; this._backgroundGroup.destroy_all_children(); for (let i = 0; i < Main.layoutManager.monitors.length; i++) this._createBackground(i); this._updateBackgroundEffects(); } _ensureAuthPrompt() { if (!this._authPrompt) { this._authPrompt = new AuthPrompt.AuthPrompt(this._gdmClient, AuthPrompt.AuthPromptMode.UNLOCK_ONLY); this._authPrompt.connect('failed', this._fail.bind(this)); this._authPrompt.connect('cancelled', this._fail.bind(this)); this._authPrompt.connect('reset', this._onReset.bind(this)); this._promptBox.add_child(this._authPrompt); } this._authPrompt.reset(); this._authPrompt.updateSensitivity(true); } _maybeDestroyAuthPrompt() { let focus = global.stage.key_focus; if (focus === null || (this._authPrompt && this._authPrompt.contains(focus)) || (this._otherUserButton && focus === this._otherUserButton)) this.grab_key_focus(); if (this._authPrompt) { this._authPrompt.destroy(); this._authPrompt = null; } } _showClock() { if (this._activePage === this._clock) return; this._activePage = this._clock; this._adjustment.ease(0, { duration: CROSSFADE_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => this._maybeDestroyAuthPrompt(), }); } _showPrompt() { this._ensureAuthPrompt(); if (this._activePage === this._promptBox) return; this._activePage = this._promptBox; this._adjustment.ease(1, { duration: CROSSFADE_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, }); } _setTransitionProgress(progress) { this._promptBox.visible = progress > 0; this._clock.visible = progress < 1; this._otherUserButton.set({ reactive: progress > 0, can_focus: progress > 0, }); const {scaleFactor} = St.ThemeContext.get_for_stage(global.stage); this._promptBox.set({ opacity: 255 * progress, scale_x: FADE_OUT_SCALE + (1 - FADE_OUT_SCALE) * progress, scale_y: FADE_OUT_SCALE + (1 - FADE_OUT_SCALE) * progress, translation_y: FADE_OUT_TRANSLATION * (1 - progress) * scaleFactor, }); this._clock.set({ opacity: 255 * (1 - progress), scale_x: FADE_OUT_SCALE + (1 - FADE_OUT_SCALE) * (1 - progress), scale_y: FADE_OUT_SCALE + (1 - FADE_OUT_SCALE) * (1 - progress), translation_y: -FADE_OUT_TRANSLATION * progress * scaleFactor, }); this._otherUserButton.set({ opacity: 255 * progress, scale_x: FADE_OUT_SCALE + (1 - FADE_OUT_SCALE) * progress, scale_y: FADE_OUT_SCALE + (1 - FADE_OUT_SCALE) * progress, }); } _fail() { this._showClock(); this.emit('failed'); } _onReset(authPrompt, beginRequest) { let userName; if (beginRequest === AuthPrompt.BeginRequestType.PROVIDE_USERNAME) { this._authPrompt.setUser(this._user); userName = this._userName; } else { userName = null; } this._authPrompt.begin({userName}); } _escape() { if (this._authPrompt && this.allowCancel) this._authPrompt.cancel(); } _swipeBegin(tracker, monitor) { if (monitor !== Main.layoutManager.primaryIndex) return; this._adjustment.remove_transition('value'); this._ensureAuthPrompt(); let progress = this._adjustment.value; tracker.confirmSwipe(this._stack.height, [0, 1], progress, Math.round(progress)); } _swipeUpdate(tracker, progress) { this._adjustment.value = progress; } _swipeEnd(tracker, duration, endProgress) { this._activePage = endProgress ? this._promptBox : this._clock; this._adjustment.ease(endProgress, { mode: Clutter.AnimationMode.EASE_OUT_CUBIC, duration, onComplete: () => { if (this._activePage === this._clock) this._maybeDestroyAuthPrompt(); }, }); } _otherUserClicked() { Gdm.goto_login_session_sync(null); this._authPrompt.cancel(); } _onDestroy() { this.popModal(); if (this._idleWatchId) { this._idleMonitor.remove_watch(this._idleWatchId); this._idleWatchId = 0; } if (this._gdmClient) { this._gdmClient = null; delete this._gdmClient; } } _updateUserSwitchVisibility() { this._otherUserButton.visible = this._userManager.can_switch() && this._userManager.has_multiple_users && this._screenSaverSettings.get_boolean('user-switch-enabled') && !this._lockdownSettings.get_boolean('disable-user-switching'); } cancel() { if (this._authPrompt) this._authPrompt.cancel(); } finish(onComplete) { if (!this._authPrompt) { onComplete(); return; } this._authPrompt.finish(onComplete); } open() { this.show(); if (this._isModal) return true; const grab = Main.pushModal(Main.uiGroup, {actionMode: Shell.ActionMode.UNLOCK_SCREEN}); if (grab.get_seat_state() !== Clutter.GrabState.ALL) { Main.popModal(grab); return false; } this._grab = grab; this._isModal = true; return true; } activate() { this._showPrompt(); } popModal() { if (this._isModal) { Main.popModal(this._grab); this._grab = null; this._isModal = false; } } }); 070701000001FC000081A40000000000000000000000016712993F000019AC000000000000000000000000000000000000002500000000gnome-shell-47.1/js/ui/userWidget.js// // A widget showing the user avatar and name import Clutter from 'gi://Clutter'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import St from 'gi://St'; import * as Params from '../misc/params.js'; const AVATAR_ICON_SIZE = 64; // Adapted from gdm/gui/user-switch-applet/applet.c // // Copyright (C) 2004-2005 James M. Cape . // Copyright (C) 2008,2009 Red Hat, Inc. export const Avatar = GObject.registerClass( class Avatar extends St.Bin { _init(user, params) { let themeContext = St.ThemeContext.get_for_stage(global.stage); params = Params.parse(params, { styleClass: 'user-icon', reactive: false, iconSize: AVATAR_ICON_SIZE, }); super._init({ style_class: params.styleClass, reactive: params.reactive, width: params.iconSize * themeContext.scaleFactor, height: params.iconSize * themeContext.scaleFactor, x_expand: false, y_expand: false, }); this._iconSize = params.iconSize; this._user = user; this.bind_property('reactive', this, 'track-hover', GObject.BindingFlags.SYNC_CREATE); this.bind_property('reactive', this, 'can-focus', GObject.BindingFlags.SYNC_CREATE); // Monitor the scaling factor to make sure we recreate the avatar when needed. themeContext.connectObject('notify::scale-factor', this.update.bind(this), this); } vfunc_style_changed() { super.vfunc_style_changed(); let node = this.get_theme_node(); let [found, iconSize] = node.lookup_length('icon-size', false); if (!found) return; let themeContext = St.ThemeContext.get_for_stage(global.stage); // node.lookup_length() returns a scaled value, but we // need unscaled this._iconSize = iconSize / themeContext.scaleFactor; this.update(); } setSensitive(sensitive) { this.reactive = sensitive; } update() { let iconFile = null; if (this._user) { iconFile = this._user.get_icon_file(); if (iconFile && !GLib.file_test(iconFile, GLib.FileTest.EXISTS)) iconFile = null; } let {scaleFactor} = St.ThemeContext.get_for_stage(global.stage); this.set_size( this._iconSize * scaleFactor, this._iconSize * scaleFactor); if (iconFile) { this.child = null; this.add_style_class_name('user-avatar'); this.style = ` background-image: url("${iconFile}"); background-size: cover;`; } else { this.style = null; this.child = new St.Icon({ icon_name: 'avatar-default-symbolic', icon_size: this._iconSize, x_expand: true, y_expand: true, }); } } }); export const UserWidgetLabel = GObject.registerClass( class UserWidgetLabel extends St.Widget { _init(user) { super._init({layout_manager: new Clutter.BinLayout()}); this._user = user; this._realNameLabel = new St.Label({ style_class: 'user-widget-label', y_align: Clutter.ActorAlign.CENTER, }); this.add_child(this._realNameLabel); this._userNameLabel = new St.Label({ style_class: 'user-widget-label', y_align: Clutter.ActorAlign.CENTER, }); this.add_child(this._userNameLabel); this._currentLabel = null; this._user.connectObject( 'notify::is-loaded', this._updateUser.bind(this), 'changed', this._updateUser.bind(this), this); this._updateUser(); } vfunc_allocate(box) { this.set_allocation(box); let availWidth = box.x2 - box.x1; let availHeight = box.y2 - box.y1; let [, , natRealNameWidth] = this._realNameLabel.get_preferred_size(); let childBox = new Clutter.ActorBox(); let hiddenLabel; if (natRealNameWidth <= availWidth) { this._currentLabel = this._realNameLabel; hiddenLabel = this._userNameLabel; } else { this._currentLabel = this._userNameLabel; hiddenLabel = this._realNameLabel; } this.label_actor = this._currentLabel; hiddenLabel.allocate(childBox); childBox.set_size(availWidth, availHeight); this._currentLabel.allocate(childBox); } vfunc_paint(paintContext) { this._currentLabel.paint(paintContext); } _updateUser() { if (this._user.is_loaded) { this._realNameLabel.text = this._user.get_real_name(); this._userNameLabel.text = this._user.get_user_name(); } else { this._realNameLabel.text = ''; this._userNameLabel.text = ''; } } }); export const UserWidget = GObject.registerClass( class UserWidget extends St.BoxLayout { _init(user, orientation = Clutter.Orientation.HORIZONTAL) { // If user is null, that implies a username-based login authorization. this._user = user; let vertical = orientation === Clutter.Orientation.VERTICAL; let xAlign = vertical ? Clutter.ActorAlign.CENTER : Clutter.ActorAlign.START; let styleClass = vertical ? 'user-widget vertical' : 'user-widget horizontal'; super._init({ styleClass, vertical, xAlign, }); this._avatar = new Avatar(user); this._avatar.x_align = Clutter.ActorAlign.CENTER; this.add_child(this._avatar); this._userLoadedId = 0; this._userChangedId = 0; if (user) { this._label = new UserWidgetLabel(user); this.add_child(this._label); this._label.bind_property('label-actor', this, 'label-actor', GObject.BindingFlags.SYNC_CREATE); this._user.connectObject( 'notify::is-loaded', this._updateUser.bind(this), 'changed', this._updateUser.bind(this), this); } else { this._label = new St.Label({ style_class: 'user-widget-label', text: 'Empty User', opacity: 0, }); this.add_child(this._label); } this._updateUser(); } _updateUser() { this._avatar.update(); } }); 070701000001FD000081A40000000000000000000000016712993F000008F0000000000000000000000000000000000000002800000000gnome-shell-47.1/js/ui/welcomeDialog.jsimport Clutter from 'gi://Clutter'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import Shell from 'gi://Shell'; import St from 'gi://St'; import * as Config from '../misc/config.js'; import * as Main from './main.js'; import * as Dialog from './dialog.js'; import * as ModalDialog from './modalDialog.js'; /** @enum {number} */ const DialogResponse = { SKIP: 0, TAKE_TOUR: 1, }; export const WelcomeDialog = GObject.registerClass( class WelcomeDialog extends ModalDialog.ModalDialog { _init() { super._init({styleClass: 'welcome-dialog'}); const appSystem = Shell.AppSystem.get_default(); this._tourAppInfo = appSystem.lookup_app('org.gnome.Tour.desktop'); this._buildLayout(); } open() { if (!this._tourAppInfo) return false; return super.open(); } _getOSName() { const prettyName = GLib.get_os_info('PRETTY_NAME'); if (prettyName) return prettyName; const name = GLib.get_os_info('NAME'); const version = GLib.get_os_info('VERSION'); if (name) return version ? `${name} ${version}` : name; const [majorVersion] = Config.PACKAGE_VERSION.split('.'); return _('GNOME %s').format(majorVersion); } _buildLayout() { const title = _('Welcome to %s').format(this._getOSName()); const description = _('If you want to learn your way around, check out the tour'); const content = new Dialog.MessageDialogContent({title, description}); const icon = new St.Widget({style_class: 'welcome-dialog-image'}); content.insert_child_at_index(icon, 0); this.contentLayout.add_child(content); this.addButton({ label: _('Skip'), action: () => this._sendResponse(DialogResponse.SKIP), key: Clutter.KEY_Escape, }); this.addButton({ label: _('Take Tour'), action: () => this._sendResponse(DialogResponse.TAKE_TOUR), }); } _sendResponse(response) { if (response === DialogResponse.TAKE_TOUR) { this._tourAppInfo.launch(0, -1, Shell.AppLaunchGpu.APP_PREF); Main.overview.hide(); } this.close(); } }); 070701000001FE000081A40000000000000000000000016712993F00000B52000000000000000000000000000000000000003100000000gnome-shell-47.1/js/ui/windowAttentionHandler.jsimport GObject from 'gi://GObject'; import Shell from 'gi://Shell'; import * as Main from './main.js'; import * as MessageTray from './messageTray.js'; export class WindowAttentionHandler { constructor() { this._tracker = Shell.WindowTracker.get_default(); global.display.connectObject( 'window-demands-attention', this._onWindowDemandsAttention.bind(this), 'window-marked-urgent', this._onWindowDemandsAttention.bind(this), this); } _getTitleAndBanner(app, window) { let title = app.get_name(); let banner = _('“%s” is ready').format(window.get_title()); return [title, banner]; } _onWindowDemandsAttention(display, window) { // We don't want to show the notification when the window is already focused, // because this is rather pointless. // Some apps (like GIMP) do things like setting the urgency hint on the // toolbar windows which would result into a notification even though GIMP itself is // focused. // We are just ignoring the hint on skip_taskbar windows for now. // (Which is the same behaviour as with metacity + panel) if (!window || window.has_focus() || window.is_skip_taskbar()) return; let app = this._tracker.get_window_app(window); let source = new WindowAttentionSource(app, window); Main.messageTray.add(source); let [title, body] = this._getTitleAndBanner(app, window); let notification = new MessageTray.Notification({ source, title, body, forFeedback: true, }); notification.connect('activated', () => { source.open(); }); source.addNotification(notification); window.connectObject('notify::title', () => { [title, body] = this._getTitleAndBanner(app, window); notification.set({title, body}); }, source); } } const WindowAttentionSource = GObject.registerClass( class WindowAttentionSource extends MessageTray.Source { constructor(app, window) { super({ title: app.get_name(), icon: app.get_icon(), policy: MessageTray.NotificationPolicy.newForApp(app), }); this._window = window; this._window.connectObject( 'notify::demands-attention', this._sync.bind(this), 'notify::urgent', this._sync.bind(this), 'focus', () => this.destroy(), 'unmanaged', () => this.destroy(), this); } _sync() { if (this._window.demands_attention || this._window.urgent) return; this.destroy(); } destroy(params) { this._window.disconnectObject(this); super.destroy(params); } open() { Main.activateWindow(this._window); } }); 070701000001FF000081A40000000000000000000000016712993F000114C3000000000000000000000000000000000000002800000000gnome-shell-47.1/js/ui/windowManager.jsimport Clutter from 'gi://Clutter'; import Cogl from 'gi://Cogl'; import Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import Meta from 'gi://Meta'; import Mtk from 'gi://Mtk'; import Shell from 'gi://Shell'; import St from 'gi://St'; import * as AltTab from './altTab.js'; import * as AppFavorites from './appFavorites.js'; import * as Dialog from './dialog.js'; import * as WorkspaceSwitcherPopup from './workspaceSwitcherPopup.js'; import * as InhibitShortcutsDialog from './inhibitShortcutsDialog.js'; import * as ModalDialog from './modalDialog.js'; import * as WindowMenu from './windowMenu.js'; import * as PadOsd from './padOsd.js'; import * as EdgeDragAction from './edgeDragAction.js'; import * as CloseDialog from './closeDialog.js'; import * as SwitchMonitor from './switchMonitor.js'; import * as IBusManager from '../misc/ibusManager.js'; import * as WorkspaceAnimation from './workspaceAnimation.js'; import {loadInterfaceXML} from '../misc/fileUtils.js'; import * as Main from './main.js'; export const SHELL_KEYBINDINGS_SCHEMA = 'org.gnome.shell.keybindings'; const MINIMIZE_WINDOW_ANIMATION_TIME = 400; const MINIMIZE_WINDOW_ANIMATION_MODE = Clutter.AnimationMode.EASE_OUT_EXPO; const SHOW_WINDOW_ANIMATION_TIME = 150; const DIALOG_SHOW_WINDOW_ANIMATION_TIME = 100; const DESTROY_WINDOW_ANIMATION_TIME = 150; const DIALOG_DESTROY_WINDOW_ANIMATION_TIME = 100; const WINDOW_ANIMATION_TIME = 250; export const SCROLL_TIMEOUT_TIME = 150; const DIM_BRIGHTNESS = -0.3; const DIM_TIME = 500; const UNDIM_TIME = 250; const ONE_SECOND = 1000; // in ms const MIN_NUM_WORKSPACES = 2; const GSD_WACOM_BUS_NAME = 'org.gnome.SettingsDaemon.Wacom'; const GSD_WACOM_OBJECT_PATH = '/org/gnome/SettingsDaemon/Wacom'; const GsdWacomIface = loadInterfaceXML('org.gnome.SettingsDaemon.Wacom'); const GsdWacomProxy = Gio.DBusProxy.makeProxyWrapper(GsdWacomIface); const WINDOW_DIMMER_EFFECT_NAME = 'gnome-shell-window-dimmer'; Gio._promisify(Shell, 'util_start_systemd_unit'); Gio._promisify(Shell, 'util_stop_systemd_unit'); const DisplayChangeDialog = GObject.registerClass( class DisplayChangeDialog extends ModalDialog.ModalDialog { _init(wm) { super._init(); this._wm = wm; const monitorManager = global.backend.get_monitor_manager(); this._countDown = monitorManager.get_display_configuration_timeout(); // Translators: This string should be shorter than 30 characters let title = _('Keep these display settings?'); let description = this._formatCountDown(); this._content = new Dialog.MessageDialogContent({title, description}); this.contentLayout.add_child(this._content); /* Translators: this and the following message should be limited in length, to avoid ellipsizing the labels. */ this._cancelButton = this.addButton({ label: _('Revert Settings'), action: this._onFailure.bind(this), key: Clutter.KEY_Escape, }); this._okButton = this.addButton({ label: _('Keep Changes'), action: this._onSuccess.bind(this), default: true, }); this._timeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, ONE_SECOND, this._tick.bind(this)); GLib.Source.set_name_by_id(this._timeoutId, '[gnome-shell] this._tick'); } close(timestamp) { if (this._timeoutId > 0) { GLib.source_remove(this._timeoutId); this._timeoutId = 0; } super.close(timestamp); } _formatCountDown() { const fmt = ngettext( 'Settings changes will revert in %d second', 'Settings changes will revert in %d seconds', this._countDown); return fmt.format(this._countDown); } _tick() { this._countDown--; if (this._countDown === 0) { /* mutter already takes care of failing at timeout */ this._timeoutId = 0; this.close(); return GLib.SOURCE_REMOVE; } this._content.description = this._formatCountDown(); return GLib.SOURCE_CONTINUE; } _onFailure() { this._wm.complete_display_change(false); this.close(); } _onSuccess() { this._wm.complete_display_change(true); this.close(); } }); export const WindowDimmer = GObject.registerClass( class WindowDimmer extends Clutter.BrightnessContrastEffect { _init() { super._init({ name: WINDOW_DIMMER_EFFECT_NAME, enabled: false, }); } _syncEnabled(dimmed) { let animating = this.actor.get_transition(`@effects.${this.name}.brightness`) !== null; this.enabled = Meta.prefs_get_attach_modal_dialogs() && (animating || dimmed); } setDimmed(dimmed, animate) { let val = 127 * (1 + (dimmed ? 1 : 0) * DIM_BRIGHTNESS); const color = new Cogl.Color({ red: val, green: val, blue: val, alpha: 255, }); this.actor.ease_property(`@effects.${this.name}.brightness`, color, { mode: Clutter.AnimationMode.LINEAR, duration: (dimmed ? DIM_TIME : UNDIM_TIME) * (animate ? 1 : 0), onStopped: () => this._syncEnabled(dimmed), }); this._syncEnabled(dimmed); } }); /** * @param {Meta.WindowActor} actor */ function getWindowDimmer(actor) { let effect = actor.get_effect(WINDOW_DIMMER_EFFECT_NAME); if (!effect) { effect = new WindowDimmer(); actor.add_effect(effect); } return effect; } /* * When the last window closed on a workspace is a dialog or splash * screen, we assume that it might be an initial window shown before * the main window of an application, and give the app a grace period * where it can map another window before we remove the workspace. */ const LAST_WINDOW_GRACE_TIME = 1000; class WorkspaceTracker { constructor(wm) { this._wm = wm; this._workspaces = []; this._checkWorkspacesId = 0; this._pauseWorkspaceCheck = false; let tracker = Shell.WindowTracker.get_default(); tracker.connect('startup-sequence-changed', this._queueCheckWorkspaces.bind(this)); let workspaceManager = global.workspace_manager; workspaceManager.connect('notify::n-workspaces', this._nWorkspacesChanged.bind(this)); workspaceManager.connect('workspaces-reordered', () => { this._workspaces.sort((a, b) => a.index() - b.index()); }); global.window_manager.connect('switch-workspace', this._queueCheckWorkspaces.bind(this)); global.display.connect('window-entered-monitor', this._windowEnteredMonitor.bind(this)); global.display.connect('window-left-monitor', this._windowLeftMonitor.bind(this)); this._workspaceSettings = new Gio.Settings({schema_id: 'org.gnome.mutter'}); this._workspaceSettings.connect('changed::dynamic-workspaces', this._queueCheckWorkspaces.bind(this)); this._nWorkspacesChanged(); } blockUpdates() { this._pauseWorkspaceCheck = true; } unblockUpdates() { this._pauseWorkspaceCheck = false; } _checkWorkspaces() { let workspaceManager = global.workspace_manager; let i; let emptyWorkspaces = []; if (!Meta.prefs_get_dynamic_workspaces()) { this._checkWorkspacesId = 0; return false; } // Update workspaces only if Dynamic Workspace Management has not been paused by some other function if (this._pauseWorkspaceCheck) return true; for (i = 0; i < this._workspaces.length; i++) { let lastRemoved = this._workspaces[i]._lastRemovedWindow; if ((lastRemoved && (lastRemoved.get_window_type() === Meta.WindowType.SPLASHSCREEN || lastRemoved.get_window_type() === Meta.WindowType.DIALOG || lastRemoved.get_window_type() === Meta.WindowType.MODAL_DIALOG)) || this._workspaces[i]._keepAliveId) emptyWorkspaces[i] = false; else emptyWorkspaces[i] = true; } let sequences = Shell.WindowTracker.get_default().get_startup_sequences(); for (i = 0; i < sequences.length; i++) { let index = sequences[i].get_workspace(); if (index >= 0 && index <= workspaceManager.n_workspaces) emptyWorkspaces[index] = false; } let windows = global.get_window_actors(); for (i = 0; i < windows.length; i++) { let actor = windows[i]; let win = actor.get_meta_window(); if (win.is_on_all_workspaces()) continue; let workspaceIndex = win.get_workspace().index(); emptyWorkspaces[workspaceIndex] = false; } // If we don't have an empty workspace at the end, add one if (!emptyWorkspaces[emptyWorkspaces.length - 1]) { workspaceManager.append_new_workspace(false, global.get_current_time()); emptyWorkspaces.push(true); } // Enforce minimum number of workspaces while (emptyWorkspaces.length < MIN_NUM_WORKSPACES) { workspaceManager.append_new_workspace(false, global.get_current_time()); emptyWorkspaces.push(true); } let lastIndex = emptyWorkspaces.length - 1; let lastEmptyIndex = emptyWorkspaces.lastIndexOf(false) + 1; let activeWorkspaceIndex = workspaceManager.get_active_workspace_index(); emptyWorkspaces[activeWorkspaceIndex] = false; // Delete empty workspaces except for the last one; do it from the end // to avoid index changes for (i = lastIndex; i >= 0; i--) { if (workspaceManager.n_workspaces === MIN_NUM_WORKSPACES) break; if (emptyWorkspaces[i] && i !== lastEmptyIndex) workspaceManager.remove_workspace(this._workspaces[i], global.get_current_time()); } this._checkWorkspacesId = 0; return false; } keepWorkspaceAlive(workspace, duration) { if (workspace._keepAliveId) GLib.source_remove(workspace._keepAliveId); workspace._keepAliveId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, duration, () => { workspace._keepAliveId = 0; this._queueCheckWorkspaces(); return GLib.SOURCE_REMOVE; }); GLib.Source.set_name_by_id(workspace._keepAliveId, '[gnome-shell] this._queueCheckWorkspaces'); } _windowRemoved(workspace, window) { workspace._lastRemovedWindow = window; this._queueCheckWorkspaces(); let id = GLib.timeout_add(GLib.PRIORITY_DEFAULT, LAST_WINDOW_GRACE_TIME, () => { if (workspace._lastRemovedWindow === window) { workspace._lastRemovedWindow = null; this._queueCheckWorkspaces(); } return GLib.SOURCE_REMOVE; }); GLib.Source.set_name_by_id(id, '[gnome-shell] this._queueCheckWorkspaces'); } _windowLeftMonitor(metaDisplay, monitorIndex, _metaWin) { // If the window left the primary monitor, that // might make that workspace empty if (monitorIndex === Main.layoutManager.primaryIndex) this._queueCheckWorkspaces(); } _windowEnteredMonitor(metaDisplay, monitorIndex, _metaWin) { // If the window entered the primary monitor, that // might make that workspace non-empty if (monitorIndex === Main.layoutManager.primaryIndex) this._queueCheckWorkspaces(); } _queueCheckWorkspaces() { if (this._checkWorkspacesId === 0) { const laters = global.compositor.get_laters(); this._checkWorkspacesId = laters.add(Meta.LaterType.BEFORE_REDRAW, this._checkWorkspaces.bind(this)); } } _nWorkspacesChanged() { let workspaceManager = global.workspace_manager; let oldNumWorkspaces = this._workspaces.length; let newNumWorkspaces = workspaceManager.n_workspaces; if (oldNumWorkspaces === newNumWorkspaces) return false; if (newNumWorkspaces > oldNumWorkspaces) { let w; // Assume workspaces are only added at the end for (w = oldNumWorkspaces; w < newNumWorkspaces; w++) this._workspaces[w] = workspaceManager.get_workspace_by_index(w); for (w = oldNumWorkspaces; w < newNumWorkspaces; w++) { this._workspaces[w].connectObject( 'window-added', this._queueCheckWorkspaces.bind(this), 'window-removed', this._windowRemoved.bind(this), this); } } else { // Assume workspaces are only removed sequentially // (e.g. 2,3,4 - not 2,4,7) let removedIndex; let removedNum = oldNumWorkspaces - newNumWorkspaces; for (let w = 0; w < oldNumWorkspaces; w++) { let workspace = workspaceManager.get_workspace_by_index(w); if (this._workspaces[w] !== workspace) { removedIndex = w; break; } } let lostWorkspaces = this._workspaces.splice(removedIndex, removedNum); lostWorkspaces.forEach(workspace => workspace.disconnectObject(this)); } this._queueCheckWorkspaces(); return false; } } export const TilePreview = GObject.registerClass( class TilePreview extends St.Widget { _init() { super._init(); global.window_group.add_child(this); this._reset(); this._showing = false; } open(window, tileRect, monitorIndex) { let windowActor = window.get_compositor_private(); if (!windowActor) return; global.window_group.set_child_below_sibling(this, windowActor); if (this._rect && this._rect.equal(tileRect)) return; let changeMonitor = this._monitorIndex === -1 || this._monitorIndex !== monitorIndex; this._monitorIndex = monitorIndex; this._rect = tileRect; let monitor = Main.layoutManager.monitors[monitorIndex]; this._updateStyle(monitor); if (!this._showing || changeMonitor) { const monitorRect = new Mtk.Rectangle({ x: monitor.x, y: monitor.y, width: monitor.width, height: monitor.height, }); let [, rect] = window.get_frame_rect().intersect(monitorRect); this.set_size(rect.width, rect.height); this.set_position(rect.x, rect.y); this.opacity = 0; } this._showing = true; this.show(); this.ease({ x: tileRect.x, y: tileRect.y, width: tileRect.width, height: tileRect.height, opacity: 255, duration: WINDOW_ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, }); } close() { if (!this._showing) return; this._showing = false; this.ease({ opacity: 0, duration: WINDOW_ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => this._reset(), }); } _reset() { this.hide(); this._rect = null; this._monitorIndex = -1; } _updateStyle(monitor) { let styles = ['tile-preview']; if (this._monitorIndex === Main.layoutManager.primaryIndex) styles.push('on-primary'); if (this._rect.x === monitor.x) styles.push('tile-preview-left'); if (this._rect.x + this._rect.width === monitor.x + monitor.width) styles.push('tile-preview-right'); this.style_class = styles.join(' '); } }); const ResizePopup = GObject.registerClass( class ResizePopup extends St.Widget { _init() { super._init({layout_manager: new Clutter.BinLayout()}); this._label = new St.Label({ style_class: 'resize-popup', x_align: Clutter.ActorAlign.CENTER, y_align: Clutter.ActorAlign.CENTER, x_expand: true, y_expand: true, }); this.add_child(this._label); Main.uiGroup.add_child(this); } set(rect, displayW, displayH) { /* Translators: This represents the size of a window. The first number is * the width of the window and the second is the height. */ let text = _('%d × %d').format(displayW, displayH); this._label.set_text(text); this.set_position(rect.x, rect.y); this.set_size(rect.width, rect.height); } }); export class WindowManager { constructor() { this._shellwm = global.window_manager; this._minimizing = new Set(); this._unminimizing = new Set(); this._mapping = new Set(); this._resizing = new Set(); this._resizePending = new Set(); this._destroying = new Set(); this._skippedActors = new Set(); this._allowedKeybindings = {}; this._isWorkspacePrepended = false; this._canScroll = true; // limiting scrolling speed this._shellwm.connect('kill-window-effects', (shellwm, actor) => { this._minimizeWindowDone(shellwm, actor); this._mapWindowDone(shellwm, actor); this._destroyWindowDone(shellwm, actor); this._sizeChangeWindowDone(shellwm, actor); }); this._shellwm.connect('switch-workspace', this._switchWorkspace.bind(this)); this._shellwm.connect('show-tile-preview', this._showTilePreview.bind(this)); this._shellwm.connect('hide-tile-preview', this._hideTilePreview.bind(this)); this._shellwm.connect('show-window-menu', this._showWindowMenu.bind(this)); this._shellwm.connect('minimize', this._minimizeWindow.bind(this)); this._shellwm.connect('unminimize', this._unminimizeWindow.bind(this)); this._shellwm.connect('size-change', this._sizeChangeWindow.bind(this)); this._shellwm.connect('size-changed', this._sizeChangedWindow.bind(this)); this._shellwm.connect('map', this._mapWindow.bind(this)); this._shellwm.connect('destroy', this._destroyWindow.bind(this)); this._shellwm.connect('filter-keybinding', this._filterKeybinding.bind(this)); this._shellwm.connect('confirm-display-change', this._confirmDisplayChange.bind(this)); this._shellwm.connect('create-close-dialog', this._createCloseDialog.bind(this)); this._shellwm.connect('create-inhibit-shortcuts-dialog', this._createInhibitShortcutsDialog.bind(this)); this._workspaceSwitcherPopup = null; this._tilePreview = null; this.allowKeybinding('switch-to-session-1', Shell.ActionMode.ALL); this.allowKeybinding('switch-to-session-2', Shell.ActionMode.ALL); this.allowKeybinding('switch-to-session-3', Shell.ActionMode.ALL); this.allowKeybinding('switch-to-session-4', Shell.ActionMode.ALL); this.allowKeybinding('switch-to-session-5', Shell.ActionMode.ALL); this.allowKeybinding('switch-to-session-6', Shell.ActionMode.ALL); this.allowKeybinding('switch-to-session-7', Shell.ActionMode.ALL); this.allowKeybinding('switch-to-session-8', Shell.ActionMode.ALL); this.allowKeybinding('switch-to-session-9', Shell.ActionMode.ALL); this.allowKeybinding('switch-to-session-10', Shell.ActionMode.ALL); this.allowKeybinding('switch-to-session-11', Shell.ActionMode.ALL); this.allowKeybinding('switch-to-session-12', Shell.ActionMode.ALL); this.setCustomKeybindingHandler('switch-to-workspace-left', Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, this._showWorkspaceSwitcher.bind(this)); this.setCustomKeybindingHandler('switch-to-workspace-right', Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, this._showWorkspaceSwitcher.bind(this)); this.setCustomKeybindingHandler('switch-to-workspace-up', Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, this._showWorkspaceSwitcher.bind(this)); this.setCustomKeybindingHandler('switch-to-workspace-down', Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, this._showWorkspaceSwitcher.bind(this)); this.setCustomKeybindingHandler('switch-to-workspace-last', Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, this._showWorkspaceSwitcher.bind(this)); this.setCustomKeybindingHandler('move-to-workspace-left', Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, this._showWorkspaceSwitcher.bind(this)); this.setCustomKeybindingHandler('move-to-workspace-right', Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, this._showWorkspaceSwitcher.bind(this)); this.setCustomKeybindingHandler('move-to-workspace-up', Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, this._showWorkspaceSwitcher.bind(this)); this.setCustomKeybindingHandler('move-to-workspace-down', Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, this._showWorkspaceSwitcher.bind(this)); this.setCustomKeybindingHandler('switch-to-workspace-1', Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, this._showWorkspaceSwitcher.bind(this)); this.setCustomKeybindingHandler('switch-to-workspace-2', Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, this._showWorkspaceSwitcher.bind(this)); this.setCustomKeybindingHandler('switch-to-workspace-3', Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, this._showWorkspaceSwitcher.bind(this)); this.setCustomKeybindingHandler('switch-to-workspace-4', Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, this._showWorkspaceSwitcher.bind(this)); this.setCustomKeybindingHandler('switch-to-workspace-5', Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, this._showWorkspaceSwitcher.bind(this)); this.setCustomKeybindingHandler('switch-to-workspace-6', Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, this._showWorkspaceSwitcher.bind(this)); this.setCustomKeybindingHandler('switch-to-workspace-7', Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, this._showWorkspaceSwitcher.bind(this)); this.setCustomKeybindingHandler('switch-to-workspace-8', Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, this._showWorkspaceSwitcher.bind(this)); this.setCustomKeybindingHandler('switch-to-workspace-9', Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, this._showWorkspaceSwitcher.bind(this)); this.setCustomKeybindingHandler('switch-to-workspace-10', Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, this._showWorkspaceSwitcher.bind(this)); this.setCustomKeybindingHandler('switch-to-workspace-11', Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, this._showWorkspaceSwitcher.bind(this)); this.setCustomKeybindingHandler('switch-to-workspace-12', Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, this._showWorkspaceSwitcher.bind(this)); this.setCustomKeybindingHandler('move-to-workspace-1', Shell.ActionMode.NORMAL, this._showWorkspaceSwitcher.bind(this)); this.setCustomKeybindingHandler('move-to-workspace-2', Shell.ActionMode.NORMAL, this._showWorkspaceSwitcher.bind(this)); this.setCustomKeybindingHandler('move-to-workspace-3', Shell.ActionMode.NORMAL, this._showWorkspaceSwitcher.bind(this)); this.setCustomKeybindingHandler('move-to-workspace-4', Shell.ActionMode.NORMAL, this._showWorkspaceSwitcher.bind(this)); this.setCustomKeybindingHandler('move-to-workspace-5', Shell.ActionMode.NORMAL, this._showWorkspaceSwitcher.bind(this)); this.setCustomKeybindingHandler('move-to-workspace-6', Shell.ActionMode.NORMAL, this._showWorkspaceSwitcher.bind(this)); this.setCustomKeybindingHandler('move-to-workspace-7', Shell.ActionMode.NORMAL, this._showWorkspaceSwitcher.bind(this)); this.setCustomKeybindingHandler('move-to-workspace-8', Shell.ActionMode.NORMAL, this._showWorkspaceSwitcher.bind(this)); this.setCustomKeybindingHandler('move-to-workspace-9', Shell.ActionMode.NORMAL, this._showWorkspaceSwitcher.bind(this)); this.setCustomKeybindingHandler('move-to-workspace-10', Shell.ActionMode.NORMAL, this._showWorkspaceSwitcher.bind(this)); this.setCustomKeybindingHandler('move-to-workspace-11', Shell.ActionMode.NORMAL, this._showWorkspaceSwitcher.bind(this)); this.setCustomKeybindingHandler('move-to-workspace-12', Shell.ActionMode.NORMAL, this._showWorkspaceSwitcher.bind(this)); this.setCustomKeybindingHandler('move-to-workspace-last', Shell.ActionMode.NORMAL, this._showWorkspaceSwitcher.bind(this)); this.setCustomKeybindingHandler('switch-applications', Shell.ActionMode.NORMAL, this._startSwitcher.bind(this)); this.setCustomKeybindingHandler('switch-group', Shell.ActionMode.NORMAL, this._startSwitcher.bind(this)); this.setCustomKeybindingHandler('switch-applications-backward', Shell.ActionMode.NORMAL, this._startSwitcher.bind(this)); this.setCustomKeybindingHandler('switch-group-backward', Shell.ActionMode.NORMAL, this._startSwitcher.bind(this)); this.setCustomKeybindingHandler('switch-windows', Shell.ActionMode.NORMAL, this._startSwitcher.bind(this)); this.setCustomKeybindingHandler('switch-windows-backward', Shell.ActionMode.NORMAL, this._startSwitcher.bind(this)); this.setCustomKeybindingHandler('cycle-windows', Shell.ActionMode.NORMAL, this._startSwitcher.bind(this)); this.setCustomKeybindingHandler('cycle-windows-backward', Shell.ActionMode.NORMAL, this._startSwitcher.bind(this)); this.setCustomKeybindingHandler('cycle-group', Shell.ActionMode.NORMAL, this._startSwitcher.bind(this)); this.setCustomKeybindingHandler('cycle-group-backward', Shell.ActionMode.NORMAL, this._startSwitcher.bind(this)); this.setCustomKeybindingHandler('switch-panels', Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW | Shell.ActionMode.LOCK_SCREEN | Shell.ActionMode.UNLOCK_SCREEN | Shell.ActionMode.LOGIN_SCREEN, this._startA11ySwitcher.bind(this)); this.setCustomKeybindingHandler('switch-panels-backward', Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW | Shell.ActionMode.LOCK_SCREEN | Shell.ActionMode.UNLOCK_SCREEN | Shell.ActionMode.LOGIN_SCREEN, this._startA11ySwitcher.bind(this)); this.setCustomKeybindingHandler('switch-monitor', Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, this._startSwitcher.bind(this)); this.addKeybinding('toggle-message-tray', new Gio.Settings({schema_id: SHELL_KEYBINDINGS_SCHEMA}), Meta.KeyBindingFlags.IGNORE_AUTOREPEAT, Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW | Shell.ActionMode.POPUP, this._toggleCalendar.bind(this)); this.addKeybinding('toggle-quick-settings', new Gio.Settings({schema_id: SHELL_KEYBINDINGS_SCHEMA}), Meta.KeyBindingFlags.IGNORE_AUTOREPEAT, Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW | Shell.ActionMode.POPUP, this._toggleQuickSettings.bind(this)); this.addKeybinding('switch-to-application-1', new Gio.Settings({schema_id: SHELL_KEYBINDINGS_SCHEMA}), Meta.KeyBindingFlags.IGNORE_AUTOREPEAT, Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, this._switchToApplication.bind(this)); this.addKeybinding('switch-to-application-2', new Gio.Settings({schema_id: SHELL_KEYBINDINGS_SCHEMA}), Meta.KeyBindingFlags.IGNORE_AUTOREPEAT, Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, this._switchToApplication.bind(this)); this.addKeybinding('switch-to-application-3', new Gio.Settings({schema_id: SHELL_KEYBINDINGS_SCHEMA}), Meta.KeyBindingFlags.IGNORE_AUTOREPEAT, Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, this._switchToApplication.bind(this)); this.addKeybinding('switch-to-application-4', new Gio.Settings({schema_id: SHELL_KEYBINDINGS_SCHEMA}), Meta.KeyBindingFlags.IGNORE_AUTOREPEAT, Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, this._switchToApplication.bind(this)); this.addKeybinding('switch-to-application-5', new Gio.Settings({schema_id: SHELL_KEYBINDINGS_SCHEMA}), Meta.KeyBindingFlags.IGNORE_AUTOREPEAT, Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, this._switchToApplication.bind(this)); this.addKeybinding('switch-to-application-6', new Gio.Settings({schema_id: SHELL_KEYBINDINGS_SCHEMA}), Meta.KeyBindingFlags.IGNORE_AUTOREPEAT, Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, this._switchToApplication.bind(this)); this.addKeybinding('switch-to-application-7', new Gio.Settings({schema_id: SHELL_KEYBINDINGS_SCHEMA}), Meta.KeyBindingFlags.IGNORE_AUTOREPEAT, Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, this._switchToApplication.bind(this)); this.addKeybinding('switch-to-application-8', new Gio.Settings({schema_id: SHELL_KEYBINDINGS_SCHEMA}), Meta.KeyBindingFlags.IGNORE_AUTOREPEAT, Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, this._switchToApplication.bind(this)); this.addKeybinding('switch-to-application-9', new Gio.Settings({schema_id: SHELL_KEYBINDINGS_SCHEMA}), Meta.KeyBindingFlags.IGNORE_AUTOREPEAT, Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, this._switchToApplication.bind(this)); this.addKeybinding('open-new-window-application-1', new Gio.Settings({schema_id: SHELL_KEYBINDINGS_SCHEMA}), Meta.KeyBindingFlags.IGNORE_AUTOREPEAT, Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, this._openNewApplicationWindow.bind(this)); this.addKeybinding('open-new-window-application-2', new Gio.Settings({schema_id: SHELL_KEYBINDINGS_SCHEMA}), Meta.KeyBindingFlags.IGNORE_AUTOREPEAT, Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, this._openNewApplicationWindow.bind(this)); this.addKeybinding('open-new-window-application-3', new Gio.Settings({schema_id: SHELL_KEYBINDINGS_SCHEMA}), Meta.KeyBindingFlags.IGNORE_AUTOREPEAT, Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, this._openNewApplicationWindow.bind(this)); this.addKeybinding('open-new-window-application-4', new Gio.Settings({schema_id: SHELL_KEYBINDINGS_SCHEMA}), Meta.KeyBindingFlags.IGNORE_AUTOREPEAT, Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, this._openNewApplicationWindow.bind(this)); this.addKeybinding('open-new-window-application-5', new Gio.Settings({schema_id: SHELL_KEYBINDINGS_SCHEMA}), Meta.KeyBindingFlags.IGNORE_AUTOREPEAT, Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, this._openNewApplicationWindow.bind(this)); this.addKeybinding('open-new-window-application-6', new Gio.Settings({schema_id: SHELL_KEYBINDINGS_SCHEMA}), Meta.KeyBindingFlags.IGNORE_AUTOREPEAT, Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, this._openNewApplicationWindow.bind(this)); this.addKeybinding('open-new-window-application-7', new Gio.Settings({schema_id: SHELL_KEYBINDINGS_SCHEMA}), Meta.KeyBindingFlags.IGNORE_AUTOREPEAT, Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, this._openNewApplicationWindow.bind(this)); this.addKeybinding('open-new-window-application-8', new Gio.Settings({schema_id: SHELL_KEYBINDINGS_SCHEMA}), Meta.KeyBindingFlags.IGNORE_AUTOREPEAT, Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, this._openNewApplicationWindow.bind(this)); this.addKeybinding('open-new-window-application-9', new Gio.Settings({schema_id: SHELL_KEYBINDINGS_SCHEMA}), Meta.KeyBindingFlags.IGNORE_AUTOREPEAT, Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, this._openNewApplicationWindow.bind(this)); global.stage.connect('scroll-event', (stage, event) => { const allowedModes = Shell.ActionMode.NORMAL; if ((allowedModes & Main.actionMode) === 0) return Clutter.EVENT_PROPAGATE; if (this._workspaceAnimation.canHandleScrollEvent(event)) return Clutter.EVENT_PROPAGATE; if ((event.get_state() & global.display.compositor_modifiers) === 0) return Clutter.EVENT_PROPAGATE; return this.handleWorkspaceScroll(event); }); global.display.connect('show-resize-popup', this._showResizePopup.bind(this)); global.display.connect('show-pad-osd', this._showPadOsd.bind(this)); global.display.connect('show-osd', (display, monitorIndex, iconName, label) => { let icon = Gio.Icon.new_for_string(iconName); Main.osdWindowManager.show(monitorIndex, icon, label, null); }); this._gsdWacomProxy = new GsdWacomProxy(Gio.DBus.session, GSD_WACOM_BUS_NAME, GSD_WACOM_OBJECT_PATH, (proxy, error) => { if (error) log(error.message); }); global.display.connect('pad-mode-switch', (display, pad, _group, _mode) => { let labels = []; // FIXME: Fix num buttons for (let i = 0; i < 50; i++) { let str = display.get_pad_action_label(pad, Meta.PadActionType.BUTTON, i); labels.push(str ?? ''); } this._gsdWacomProxy?.SetOLEDLabelsAsync( pad.get_device_node(), labels).catch(logError); }); global.display.connect('init-xserver', (display, task) => { IBusManager.getIBusManager().restartDaemon(['--xim']); this._startX11Services(task); return true; }); global.display.connect('x11-display-closing', () => { if (!Meta.is_wayland_compositor()) return; this._stopX11Services(null); IBusManager.getIBusManager().restartDaemon(); }); this._windowMenuManager = new WindowMenu.WindowMenuManager(); if (Main.sessionMode.hasWorkspaces) this._workspaceTracker = new WorkspaceTracker(this); let mode = Shell.ActionMode.NORMAL; let topDragAction = new EdgeDragAction.EdgeDragAction(St.Side.TOP, mode); topDragAction.connect('activated', () => { let currentWindow = global.display.focus_window; if (currentWindow) currentWindow.unmake_fullscreen(); }); let updateUnfullscreenGesture = () => { let currentWindow = global.display.focus_window; topDragAction.enabled = currentWindow && currentWindow.is_fullscreen(); }; global.display.connect('notify::focus-window', updateUnfullscreenGesture); global.display.connect('in-fullscreen-changed', updateUnfullscreenGesture); updateUnfullscreenGesture(); global.stage.add_action_full('unfullscreen', Clutter.EventPhase.CAPTURE, topDragAction); this._workspaceAnimation = new WorkspaceAnimation.WorkspaceAnimationController(); this._shellwm.connect('kill-switch-workspace', () => { this._workspaceAnimation.cancelSwitchAnimation(); this._switchWorkspaceDone(); }); } async _startX11Services(task) { let status = true; try { await Shell.util_start_systemd_unit( 'gnome-session-x11-services-ready.target', 'fail', null); } catch (e) { // Ignore NOT_SUPPORTED error, which indicates we are not systemd // managed and gnome-session will have taken care of everything // already. // Note that we do log cancellation from here. if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_SUPPORTED)) { log(`Error starting X11 services: ${e.message}`); status = false; } } finally { task.return_boolean(status); } } async _stopX11Services(cancellable) { try { await Shell.util_stop_systemd_unit( 'gnome-session-x11-services.target', 'fail', cancellable); } catch (e) { // Ignore NOT_SUPPORTED error, which indicates we are not systemd // managed and gnome-session will have taken care of everything // already. // Note that we do log cancellation from here. if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_SUPPORTED)) log(`Error stopping X11 services: ${e.message}`); } } _showPadOsd(display, device, settings, imagePath, editionMode, monitorIndex) { this._currentPadOsd = new PadOsd.PadOsd(device, settings, imagePath, editionMode, monitorIndex); this._currentPadOsd.connect('closed', () => (this._currentPadOsd = null)); return this._currentPadOsd; } _lookupIndex(windows, metaWindow) { for (let i = 0; i < windows.length; i++) { if (windows[i].metaWindow === metaWindow) return i; } return -1; } _switchApp() { let windows = global.get_window_actors().filter(actor => { let win = actor.metaWindow; let workspaceManager = global.workspace_manager; let activeWorkspace = workspaceManager.get_active_workspace(); return !win.is_override_redirect() && win.located_on_workspace(activeWorkspace); }); if (windows.length === 0) return; let focusWindow = global.display.focus_window; let nextWindow; if (focusWindow == null) { nextWindow = windows[0].metaWindow; } else { let index = this._lookupIndex(windows, focusWindow) + 1; if (index >= windows.length) index = 0; nextWindow = windows[index].metaWindow; } Main.activateWindow(nextWindow); } insertWorkspace(pos) { let workspaceManager = global.workspace_manager; if (!Meta.prefs_get_dynamic_workspaces()) return; workspaceManager.append_new_workspace(false, global.get_current_time()); let windows = global.get_window_actors().map(a => a.meta_window); // To create a new workspace, we slide all the windows on workspaces // below us to the next workspace, leaving a blank workspace for us // to recycle. windows.forEach(window => { // If the window is attached to an ancestor, we don't need/want // to move it if (window.get_transient_for() != null) return; // Same for OR windows if (window.is_override_redirect()) return; // Sticky windows don't need moving, in fact moving would // unstick them if (window.on_all_workspaces) return; // Windows on workspaces below pos don't need moving let index = window.get_workspace().index(); if (index < pos) return; window.change_workspace_by_index(index + 1, true); }); // If the new workspace was inserted before the active workspace, // activate the workspace to which its windows went let activeIndex = workspaceManager.get_active_workspace_index(); if (activeIndex >= pos) { let newWs = workspaceManager.get_workspace_by_index(activeIndex + 1); this._blockAnimations = true; newWs.activate(global.get_current_time()); this._blockAnimations = false; } } keepWorkspaceAlive(workspace, duration) { if (!this._workspaceTracker) return; this._workspaceTracker.keepWorkspaceAlive(workspace, duration); } skipNextEffect(actor) { this._skippedActors.add(actor); } setCustomKeybindingHandler(name, modes, handler) { if (Meta.keybindings_set_custom_handler(name, handler)) this.allowKeybinding(name, modes); } addKeybinding(name, settings, flags, modes, handler) { let action = global.display.add_keybinding(name, settings, flags, handler); if (action !== Meta.KeyBindingAction.NONE) this.allowKeybinding(name, modes); return action; } removeKeybinding(name) { if (global.display.remove_keybinding(name)) this.allowKeybinding(name, Shell.ActionMode.NONE); } allowKeybinding(name, modes) { this._allowedKeybindings[name] = modes; } _getAnimationWindowType(actor) { const {metaWindow: window} = actor; const {windowType} = window; if (windowType !== Meta.WindowType.NORMAL || window.get_client_type() === Meta.WindowClientType.X11) return windowType; // wayland doesn't use the DIALOG type, but for // animations we want transients to behave like ones return window.get_transient_for() != null ? Meta.WindowType.DIALOG : windowType; } _shouldAnimate() { const overviewOpen = Main.overview.visible && !Main.overview.closing; return !(overviewOpen || this._workspaceAnimation.gestureActive); } _shouldAnimateActor(actor, types) { if (this._skippedActors.delete(actor)) return false; if (!this._shouldAnimate()) return false; if (!actor.get_texture()) return false; const type = this._getAnimationWindowType(actor); return types.includes(type); } _minimizeWindow(shellwm, actor) { const types = [ Meta.WindowType.NORMAL, Meta.WindowType.MODAL_DIALOG, Meta.WindowType.DIALOG, ]; if (!this._shouldAnimateActor(actor, types)) { shellwm.completed_minimize(actor); return; } actor.set_scale(1.0, 1.0); this._minimizing.add(actor); if (actor.meta_window.is_monitor_sized()) { actor.ease({ opacity: 0, duration: MINIMIZE_WINDOW_ANIMATION_TIME, mode: MINIMIZE_WINDOW_ANIMATION_MODE, onStopped: () => this._minimizeWindowDone(shellwm, actor), }); } else { let xDest, yDest, xScale, yScale; let [success, geom] = actor.meta_window.get_icon_geometry(); if (success) { xDest = geom.x; yDest = geom.y; xScale = geom.width / actor.width; yScale = geom.height / actor.height; } else { let monitor = Main.layoutManager.monitors[actor.meta_window.get_monitor()]; if (!monitor) { this._minimizeWindowDone(); return; } xDest = monitor.x; yDest = monitor.y; if (Clutter.get_default_text_direction() === Clutter.TextDirection.RTL) xDest += monitor.width; xScale = 0; yScale = 0; } actor.ease({ opacity: 0, scale_x: xScale, scale_y: yScale, x: xDest, y: yDest, duration: MINIMIZE_WINDOW_ANIMATION_TIME, mode: MINIMIZE_WINDOW_ANIMATION_MODE, onStopped: () => this._minimizeWindowDone(shellwm, actor), }); } } _minimizeWindowDone(shellwm, actor) { if (this._minimizing.delete(actor)) { actor.remove_all_transitions(); actor.set_scale(1.0, 1.0); actor.set_opacity(255); actor.set_pivot_point(0, 0); shellwm.completed_minimize(actor); } } _unminimizeWindow(shellwm, actor) { const types = [ Meta.WindowType.NORMAL, Meta.WindowType.MODAL_DIALOG, Meta.WindowType.DIALOG, ]; if (!this._shouldAnimateActor(actor, types)) { shellwm.completed_unminimize(actor); return; } this._unminimizing.add(actor); if (actor.meta_window.is_monitor_sized()) { actor.opacity = 0; actor.set_scale(1.0, 1.0); actor.ease({ opacity: 255, duration: MINIMIZE_WINDOW_ANIMATION_TIME, mode: MINIMIZE_WINDOW_ANIMATION_MODE, onStopped: () => this._unminimizeWindowDone(shellwm, actor), }); } else { let [success, geom] = actor.meta_window.get_icon_geometry(); if (success) { actor.set_position(geom.x, geom.y); actor.set_scale( geom.width / actor.width, geom.height / actor.height); } else { let monitor = Main.layoutManager.monitors[actor.meta_window.get_monitor()]; if (!monitor) { actor.show(); this._unminimizeWindowDone(); return; } actor.set_position(monitor.x, monitor.y); if (Clutter.get_default_text_direction() === Clutter.TextDirection.RTL) actor.x += monitor.width; actor.set_scale(0, 0); } let rect = actor.meta_window.get_buffer_rect(); let [xDest, yDest] = [rect.x, rect.y]; actor.show(); actor.ease({ scale_x: 1, scale_y: 1, x: xDest, y: yDest, duration: MINIMIZE_WINDOW_ANIMATION_TIME, mode: MINIMIZE_WINDOW_ANIMATION_MODE, onStopped: () => this._unminimizeWindowDone(shellwm, actor), }); } } _unminimizeWindowDone(shellwm, actor) { if (this._unminimizing.delete(actor)) { actor.remove_all_transitions(); actor.set_scale(1.0, 1.0); actor.set_opacity(255); actor.set_pivot_point(0, 0); shellwm.completed_unminimize(actor); } } _sizeChangeWindow(shellwm, actor, whichChange, oldFrameRect, _oldBufferRect) { const types = [Meta.WindowType.NORMAL]; const shouldAnimate = this._shouldAnimateActor(actor, types) && oldFrameRect.width > 0 && oldFrameRect.height > 0; if (shouldAnimate) this._prepareAnimationInfo(shellwm, actor, oldFrameRect, whichChange); else shellwm.completed_size_change(actor); } _prepareAnimationInfo(shellwm, actor, oldFrameRect, _change) { // Position a clone of the window on top of the old position, // while actor updates are frozen. let actorContent = actor.paint_to_content(oldFrameRect); let actorClone = new St.Widget({content: actorContent}); actorClone.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS); actorClone.set_position(oldFrameRect.x, oldFrameRect.y); actorClone.set_size(oldFrameRect.width, oldFrameRect.height); actor.freeze(); if (this._clearAnimationInfo(actor)) { log(`Old animationInfo removed from actor ${actor}`); this._shellwm.completed_size_change(actor); } actor.connectObject('destroy', () => this._clearAnimationInfo(actor), actorClone); this._resizePending.add(actor); actor.__animationInfo = { clone: actorClone, oldRect: oldFrameRect, frozen: true, }; } _sizeChangedWindow(shellwm, actor) { if (!actor.__animationInfo) return; if (this._resizing.has(actor)) return; let actorClone = actor.__animationInfo.clone; let targetRect = actor.meta_window.get_frame_rect(); let sourceRect = actor.__animationInfo.oldRect; let scaleX = targetRect.width / sourceRect.width; let scaleY = targetRect.height / sourceRect.height; this._resizePending.delete(actor); this._resizing.add(actor); Main.uiGroup.add_child(actorClone); // Now scale and fade out the clone actorClone.ease({ x: targetRect.x, y: targetRect.y, scale_x: scaleX, scale_y: scaleY, opacity: 0, duration: WINDOW_ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, }); actor.translation_x = -targetRect.x + sourceRect.x; actor.translation_y = -targetRect.y + sourceRect.y; // Now set scale the actor to size it as the clone. actor.scale_x = 1 / scaleX; actor.scale_y = 1 / scaleY; // Scale it to its actual new size actor.ease({ scale_x: 1, scale_y: 1, translation_x: 0, translation_y: 0, duration: WINDOW_ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onStopped: () => this._sizeChangeWindowDone(shellwm, actor), }); // ease didn't animate and cleared the info, we are done if (!actor.__animationInfo) return; // Now unfreeze actor updates, to get it to the new size. // It's important that we don't wait until the animation is completed to // do this, otherwise our scale will be applied to the old texture size. actor.thaw(); actor.__animationInfo.frozen = false; } _clearAnimationInfo(actor) { if (actor.__animationInfo) { actor.__animationInfo.clone.destroy(); if (actor.__animationInfo.frozen) actor.thaw(); delete actor.__animationInfo; return true; } return false; } _sizeChangeWindowDone(shellwm, actor) { if (this._resizing.delete(actor)) { actor.remove_all_transitions(); actor.scale_x = 1.0; actor.scale_y = 1.0; actor.translation_x = 0; actor.translation_y = 0; this._clearAnimationInfo(actor); this._shellwm.completed_size_change(actor); } if (this._resizePending.delete(actor)) { this._clearAnimationInfo(actor); this._shellwm.completed_size_change(actor); } } _checkDimming(window) { const shouldDim = window.has_attached_dialogs(); if (shouldDim && !window._dimmed) { window._dimmed = true; this._dimWindow(window); } else if (!shouldDim && window._dimmed) { window._dimmed = false; this._undimWindow(window); } } _dimWindow(window) { let actor = window.get_compositor_private(); if (!actor) return; let dimmer = getWindowDimmer(actor); if (!dimmer) return; dimmer.setDimmed(true, this._shouldAnimate()); } _undimWindow(window) { let actor = window.get_compositor_private(); if (!actor) return; let dimmer = getWindowDimmer(actor); if (!dimmer) return; dimmer.setDimmed(false, this._shouldAnimate()); } _waitForOverviewToHide() { if (!Main.overview.visible) return Promise.resolve(); return new Promise(resolve => { const id = Main.overview.connect('hidden', () => { Main.overview.disconnect(id); resolve(); }); }); } async _mapWindow(shellwm, actor) { actor._windowType = actor.meta_window.get_window_type(); actor.meta_window.connectObject('notify::window-type', () => { let type = actor.meta_window.get_window_type(); if (type === actor._windowType) return; if (type === Meta.WindowType.MODAL_DIALOG || actor._windowType === Meta.WindowType.MODAL_DIALOG) { let parent = actor.get_meta_window().get_transient_for(); if (parent) this._checkDimming(parent); } actor._windowType = type; }, actor); actor.meta_window.connect('unmanaged', window => { let parent = window.get_transient_for(); if (parent) this._checkDimming(parent); }); if (actor.meta_window.is_attached_dialog()) this._checkDimming(actor.get_meta_window().get_transient_for()); const types = [ Meta.WindowType.NORMAL, Meta.WindowType.DIALOG, Meta.WindowType.MODAL_DIALOG, ]; if (!this._shouldAnimateActor(actor, types)) { shellwm.completed_map(actor); return; } switch (this._getAnimationWindowType(actor)) { case Meta.WindowType.NORMAL: actor.set_pivot_point(0.5, 1.0); actor.scale_x = 0.01; actor.scale_y = 0.05; actor.opacity = 0; actor.show(); this._mapping.add(actor); await this._waitForOverviewToHide(); actor.ease({ opacity: 255, scale_x: 1, scale_y: 1, duration: SHOW_WINDOW_ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_EXPO, onStopped: () => this._mapWindowDone(shellwm, actor), }); break; case Meta.WindowType.MODAL_DIALOG: case Meta.WindowType.DIALOG: actor.set_pivot_point(0.5, 0.5); actor.scale_y = 0; actor.opacity = 0; actor.show(); this._mapping.add(actor); await this._waitForOverviewToHide(); actor.ease({ opacity: 255, scale_x: 1, scale_y: 1, duration: DIALOG_SHOW_WINDOW_ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onStopped: () => this._mapWindowDone(shellwm, actor), }); break; default: shellwm.completed_map(actor); } } _mapWindowDone(shellwm, actor) { if (this._mapping.delete(actor)) { actor.remove_all_transitions(); actor.opacity = 255; actor.set_pivot_point(0, 0); actor.scale_y = 1; actor.scale_x = 1; actor.translation_y = 0; actor.translation_x = 0; shellwm.completed_map(actor); } } _destroyWindow(shellwm, actor) { let window = actor.meta_window; window.disconnectObject(actor); if (window.is_attached_dialog()) this._checkDimming(window.get_transient_for()); const types = [ Meta.WindowType.NORMAL, Meta.WindowType.DIALOG, Meta.WindowType.MODAL_DIALOG, ]; if (!this._shouldAnimateActor(actor, types)) { shellwm.completed_destroy(actor); return; } switch (this._getAnimationWindowType(actor)) { case Meta.WindowType.NORMAL: actor.set_pivot_point(0.5, 0.5); this._destroying.add(actor); actor.ease({ opacity: 0, scale_x: 0.8, scale_y: 0.8, duration: DESTROY_WINDOW_ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onStopped: () => this._destroyWindowDone(shellwm, actor), }); break; case Meta.WindowType.MODAL_DIALOG: case Meta.WindowType.DIALOG: actor.set_pivot_point(0.5, 0.5); this._destroying.add(actor); if (window.is_attached_dialog()) { let parent = window.get_transient_for(); parent.connectObject('unmanaged', () => { actor.remove_all_transitions(); this._destroyWindowDone(shellwm, actor); }, actor); } actor.ease({ scale_y: 0, duration: DIALOG_DESTROY_WINDOW_ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onStopped: () => this._destroyWindowDone(shellwm, actor), }); break; default: shellwm.completed_destroy(actor); } } _destroyWindowDone(shellwm, actor) { if (this._destroying.delete(actor)) { const parent = actor.get_meta_window()?.get_transient_for(); parent?.disconnectObject(actor); shellwm.completed_destroy(actor); } } _filterKeybinding(shellwm, binding) { if (Main.actionMode === Shell.ActionMode.NONE) return true; // There's little sense in implementing a keybinding in mutter and // not having it work in NORMAL mode; handle this case generically // so we don't have to explicitly allow all builtin keybindings in // NORMAL mode. if (Main.actionMode === Shell.ActionMode.NORMAL && binding.is_builtin()) return false; return !(this._allowedKeybindings[binding.get_name()] & Main.actionMode); } _switchWorkspace(shellwm, from, to, direction) { if (!Main.sessionMode.hasWorkspaces || !this._shouldAnimate()) { shellwm.completed_switch_workspace(); return; } this._switchInProgress = true; this._workspaceAnimation.animateSwitch(from, to, direction, () => { this._shellwm.completed_switch_workspace(); this._switchInProgress = false; }); } _switchWorkspaceDone() { if (!this._switchInProgress) return; this._shellwm.completed_switch_workspace(); this._switchInProgress = false; } _showTilePreview(shellwm, window, tileRect, monitorIndex) { if (!this._tilePreview) this._tilePreview = new TilePreview(); this._tilePreview.open(window, tileRect, monitorIndex); } _hideTilePreview() { if (!this._tilePreview) return; this._tilePreview.close(); } _showWindowMenu(shellwm, window, menu, rect) { this._windowMenuManager.showWindowMenuForWindow(window, menu, rect); } _startSwitcher(display, window, binding) { let constructor = null; switch (binding.get_name()) { case 'switch-applications': case 'switch-applications-backward': case 'switch-group': case 'switch-group-backward': constructor = AltTab.AppSwitcherPopup; break; case 'switch-windows': case 'switch-windows-backward': constructor = AltTab.WindowSwitcherPopup; break; case 'cycle-windows': case 'cycle-windows-backward': constructor = AltTab.WindowCyclerPopup; break; case 'cycle-group': case 'cycle-group-backward': constructor = AltTab.GroupCyclerPopup; break; case 'switch-monitor': constructor = SwitchMonitor.SwitchMonitorPopup; break; } if (!constructor) return; /* prevent a corner case where both popups show up at once */ if (this._workspaceSwitcherPopup != null) this._workspaceSwitcherPopup.destroy(); let tabPopup = new constructor(); if (!tabPopup.show(binding.is_reversed(), binding.get_name(), binding.get_mask())) tabPopup.destroy(); } _startA11ySwitcher(display, window, binding) { Main.ctrlAltTabManager.popup(binding.is_reversed(), binding.get_name(), binding.get_mask()); } _allowFavoriteShortcuts() { return Main.sessionMode.hasOverview; } _getNthFavoriteApp(n) { if (!this._allowFavoriteShortcuts()) return null; const apps = AppFavorites.getAppFavorites().getFavorites(); return apps[n]; } _switchToApplication(display, window, binding) { const [, , , target] = binding.get_name().split('-'); const app = this._getNthFavoriteApp(target - 1); if (app) { Main.overview.hide(); app.activate(); } } _openNewApplicationWindow(display, window, binding) { const [, , , , target] = binding.get_name().split('-'); const app = this._getNthFavoriteApp(target - 1); if (app) app.open_new_window(-1); } _toggleCalendar() { Main.panel.toggleCalendar(); } _toggleQuickSettings() { Main.panel.toggleQuickSettings(); } _showWorkspaceSwitcher(display, window, binding) { let workspaceManager = display.get_workspace_manager(); if (!Main.sessionMode.hasWorkspaces) return; if (workspaceManager.n_workspaces === 1) return; let [action,,, target] = binding.get_name().split('-'); let newWs; let direction; let vertical = workspaceManager.layout_rows === -1; let rtl = Clutter.get_default_text_direction() === Clutter.TextDirection.RTL; if (action === 'move') { // "Moving" a window to another workspace doesn't make sense when // it cannot be unstuck, and is potentially confusing if a new // workspaces is added at the start/end if (window.is_always_on_all_workspaces() || (Meta.prefs_get_workspaces_only_on_primary() && window.get_monitor() !== Main.layoutManager.primaryIndex)) return; } if (target === 'last') { if (vertical) direction = Meta.MotionDirection.DOWN; else if (rtl) direction = Meta.MotionDirection.LEFT; else direction = Meta.MotionDirection.RIGHT; newWs = workspaceManager.get_workspace_by_index(workspaceManager.n_workspaces - 1); } else if (isNaN(target)) { // Prepend a new workspace dynamically let prependTarget; if (vertical) prependTarget = 'up'; else if (rtl) prependTarget = 'right'; else prependTarget = 'left'; if (workspaceManager.get_active_workspace_index() === 0 && action === 'move' && target === prependTarget && this._isWorkspacePrepended === false) { this.insertWorkspace(0); this._isWorkspacePrepended = true; } direction = Meta.MotionDirection[target.toUpperCase()]; newWs = workspaceManager.get_active_workspace().get_neighbor(direction); } else if ((target > 0) && (target <= workspaceManager.n_workspaces)) { target--; newWs = workspaceManager.get_workspace_by_index(target); if (workspaceManager.get_active_workspace_index() > target) { if (vertical) direction = Meta.MotionDirection.UP; else if (rtl) direction = Meta.MotionDirection.RIGHT; else direction = Meta.MotionDirection.LEFT; } else { if (vertical) // eslint-disable-line no-lonely-if direction = Meta.MotionDirection.DOWN; else if (rtl) direction = Meta.MotionDirection.LEFT; else direction = Meta.MotionDirection.RIGHT; } } if (workspaceManager.layout_rows === -1 && direction !== Meta.MotionDirection.UP && direction !== Meta.MotionDirection.DOWN) return; if (workspaceManager.layout_columns === -1 && direction !== Meta.MotionDirection.LEFT && direction !== Meta.MotionDirection.RIGHT) return; if (action === 'switch') this.actionMoveWorkspace(newWs); else this.actionMoveWindow(window, newWs); if (!Main.overview.visible) { if (this._workspaceSwitcherPopup == null) { this._workspaceTracker.blockUpdates(); this._workspaceSwitcherPopup = new WorkspaceSwitcherPopup.WorkspaceSwitcherPopup(); this._workspaceSwitcherPopup.connect('destroy', () => { this._workspaceTracker.unblockUpdates(); this._workspaceSwitcherPopup = null; this._isWorkspacePrepended = false; }); } this._workspaceSwitcherPopup.display(newWs.index()); } } actionMoveWorkspace(workspace) { if (!Main.sessionMode.hasWorkspaces) return; if (!workspace.active) workspace.activate(global.get_current_time()); } actionMoveWindow(window, workspace) { if (!Main.sessionMode.hasWorkspaces) return; if (!workspace.active) { // This won't have any effect for "always sticky" windows // (like desktop windows or docks) this._workspaceAnimation.movingWindow = window; window.change_workspace(workspace); global.display.clear_mouse_mode(); workspace.activate_with_focus(window, global.get_current_time()); } } handleWorkspaceScroll(event) { if (!this._canScroll) return Clutter.EVENT_PROPAGATE; if (event.type() !== Clutter.EventType.SCROLL) return Clutter.EVENT_PROPAGATE; const direction = event.get_scroll_direction(); if (direction === Clutter.ScrollDirection.SMOOTH) return Clutter.EVENT_PROPAGATE; const workspaceManager = global.workspace_manager; const vertical = workspaceManager.layout_rows === -1; const rtl = Clutter.get_default_text_direction() === Clutter.TextDirection.RTL; const activeWs = workspaceManager.get_active_workspace(); let ws; switch (direction) { case Clutter.ScrollDirection.UP: if (vertical) ws = activeWs.get_neighbor(Meta.MotionDirection.UP); else if (rtl) ws = activeWs.get_neighbor(Meta.MotionDirection.RIGHT); else ws = activeWs.get_neighbor(Meta.MotionDirection.LEFT); break; case Clutter.ScrollDirection.DOWN: if (vertical) ws = activeWs.get_neighbor(Meta.MotionDirection.DOWN); else if (rtl) ws = activeWs.get_neighbor(Meta.MotionDirection.LEFT); else ws = activeWs.get_neighbor(Meta.MotionDirection.RIGHT); break; case Clutter.ScrollDirection.LEFT: ws = activeWs.get_neighbor(Meta.MotionDirection.LEFT); break; case Clutter.ScrollDirection.RIGHT: ws = activeWs.get_neighbor(Meta.MotionDirection.RIGHT); break; default: return Clutter.EVENT_PROPAGATE; } this.actionMoveWorkspace(ws); this._canScroll = false; GLib.timeout_add(GLib.PRIORITY_DEFAULT, SCROLL_TIMEOUT_TIME, () => { this._canScroll = true; return GLib.SOURCE_REMOVE; }); return Clutter.EVENT_STOP; } _confirmDisplayChange() { let dialog = new DisplayChangeDialog(this._shellwm); dialog.open(); } _createCloseDialog(shellwm, window) { return new CloseDialog.CloseDialog(window); } _createInhibitShortcutsDialog(shellwm, window) { return new InhibitShortcutsDialog.InhibitShortcutsDialog(window); } _showResizePopup(display, show, rect, displayW, displayH) { if (show) { if (!this._resizePopup) this._resizePopup = new ResizePopup(); this._resizePopup.set(rect, displayW, displayH); } else { if (!this._resizePopup) return; this._resizePopup.destroy(); this._resizePopup = null; } } } 07070100000200000081A40000000000000000000000016712993F0000259B000000000000000000000000000000000000002500000000gnome-shell-47.1/js/ui/windowMenu.jsimport Clutter from 'gi://Clutter'; import Meta from 'gi://Meta'; import St from 'gi://St'; import * as BoxPointer from './boxpointer.js'; import * as Main from './main.js'; import * as PopupMenu from './popupMenu.js'; import * as Screenshot from './screenshot.js'; export class WindowMenu extends PopupMenu.PopupMenu { constructor(window, sourceActor) { super(sourceActor, 0, St.Side.TOP); this.actor.add_style_class_name('window-menu'); Main.layoutManager.uiGroup.add_child(this.actor); this.actor.hide(); this._buildMenu(window); } _buildMenu(window) { let type = window.get_window_type(); let item; // Translators: entry in the window right click menu. item = this.addAction(_('Take Screenshot'), async () => { try { const actor = window.get_compositor_private(); const content = actor.paint_to_content(null); const texture = content.get_texture(); await Screenshot.captureScreenshot(texture, null, 1, null); } catch (e) { logError(e, 'Error capturing screenshot'); } }); item = this.addAction(_('Hide'), () => { window.minimize(); }); if (!window.can_minimize()) item.setSensitive(false); if (window.get_maximized()) { item = this.addAction(_('Restore'), () => { window.unmaximize(Meta.MaximizeFlags.BOTH); }); } else { item = this.addAction(_('Maximize'), () => { window.maximize(Meta.MaximizeFlags.BOTH); }); } if (!window.can_maximize()) item.setSensitive(false); item = this.addAction(_('Move'), event => { const device = event.get_device(); const seat = device.get_seat(); const deviceType = device.get_device_type(); const pointer = deviceType === Clutter.InputDeviceType.POINTER_DEVICE || deviceType === Clutter.InputDeviceType.TABLET_DEVICE || deviceType === Clutter.InputDeviceType.PEN_DEVICE || deviceType === Clutter.InputDeviceType.ERASER_DEVICE ? device : seat.get_pointer(); window.begin_grab_op( Meta.GrabOp.KEYBOARD_MOVING, pointer, null, event.get_time(), null); }); if (!window.allows_move()) item.setSensitive(false); item = this.addAction(_('Resize'), event => { const device = event.get_device(); const seat = device.get_seat(); const deviceType = device.get_device_type(); const pointer = deviceType === Clutter.InputDeviceType.POINTER_DEVICE || deviceType === Clutter.InputDeviceType.TABLET_DEVICE || deviceType === Clutter.InputDeviceType.PEN_DEVICE || deviceType === Clutter.InputDeviceType.ERASER_DEVICE ? device : seat.get_pointer(); window.begin_grab_op( Meta.GrabOp.KEYBOARD_RESIZING_UNKNOWN, pointer, null, event.get_time(), null); }); if (!window.allows_resize()) item.setSensitive(false); item = this.addAction(_('Always on Top'), () => { if (window.is_above()) window.unmake_above(); else window.make_above(); }); if (window.is_above()) item.setOrnament(PopupMenu.Ornament.CHECK); if (window.get_maximized() === Meta.MaximizeFlags.BOTH || type === Meta.WindowType.DOCK || type === Meta.WindowType.DESKTOP || type === Meta.WindowType.SPLASHSCREEN) item.setSensitive(false); if (Main.sessionMode.hasWorkspaces && (!Meta.prefs_get_workspaces_only_on_primary() || window.is_on_primary_monitor())) { let isSticky = window.is_on_all_workspaces(); item = this.addAction(_('Always on Visible Workspace'), () => { if (isSticky) window.unstick(); else window.stick(); }); if (isSticky) item.setOrnament(PopupMenu.Ornament.CHECK); if (window.is_always_on_all_workspaces()) item.setSensitive(false); if (!isSticky) { let workspace = window.get_workspace(); if (workspace !== workspace.get_neighbor(Meta.MotionDirection.LEFT)) { this.addAction(_('Move to Workspace Left'), () => { let dir = Meta.MotionDirection.LEFT; window.change_workspace(workspace.get_neighbor(dir)); }); } if (workspace !== workspace.get_neighbor(Meta.MotionDirection.RIGHT)) { this.addAction(_('Move to Workspace Right'), () => { let dir = Meta.MotionDirection.RIGHT; window.change_workspace(workspace.get_neighbor(dir)); }); } if (workspace !== workspace.get_neighbor(Meta.MotionDirection.UP)) { this.addAction(_('Move to Workspace Up'), () => { let dir = Meta.MotionDirection.UP; window.change_workspace(workspace.get_neighbor(dir)); }); } if (workspace !== workspace.get_neighbor(Meta.MotionDirection.DOWN)) { this.addAction(_('Move to Workspace Down'), () => { let dir = Meta.MotionDirection.DOWN; window.change_workspace(workspace.get_neighbor(dir)); }); } } } let display = global.display; let nMonitors = display.get_n_monitors(); let monitorIndex = window.get_monitor(); if (nMonitors > 1 && monitorIndex >= 0) { this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); let dir = Meta.DisplayDirection.UP; let upMonitorIndex = display.get_monitor_neighbor_index(monitorIndex, dir); if (upMonitorIndex !== -1) { this.addAction(_('Move to Monitor Up'), () => { window.move_to_monitor(upMonitorIndex); }); } dir = Meta.DisplayDirection.DOWN; let downMonitorIndex = display.get_monitor_neighbor_index(monitorIndex, dir); if (downMonitorIndex !== -1) { this.addAction(_('Move to Monitor Down'), () => { window.move_to_monitor(downMonitorIndex); }); } dir = Meta.DisplayDirection.LEFT; let leftMonitorIndex = display.get_monitor_neighbor_index(monitorIndex, dir); if (leftMonitorIndex !== -1) { this.addAction(_('Move to Monitor Left'), () => { window.move_to_monitor(leftMonitorIndex); }); } dir = Meta.DisplayDirection.RIGHT; let rightMonitorIndex = display.get_monitor_neighbor_index(monitorIndex, dir); if (rightMonitorIndex !== -1) { this.addAction(_('Move to Monitor Right'), () => { window.move_to_monitor(rightMonitorIndex); }); } } this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); item = this.addAction(_('Close'), event => { window.delete(event.get_time()); }); if (!window.can_close()) item.setSensitive(false); } addAction(label, callback) { const item = super.addAction(label, callback); item.setOrnament(PopupMenu.Ornament.NONE); return item; } } export class WindowMenuManager { constructor() { this._manager = new PopupMenu.PopupMenuManager(Main.layoutManager.dummyCursor); this._sourceActor = new St.Widget({reactive: true, visible: false}); this._sourceActor.connect('button-press-event', () => { this._manager.activeMenu.toggle(); }); Main.uiGroup.add_child(this._sourceActor); } showWindowMenuForWindow(window, type, rect) { if (!Main.sessionMode.hasWmMenus) return; if (type !== Meta.WindowMenuType.WM) throw new Error('Unsupported window menu type'); let menu = new WindowMenu(window, this._sourceActor); this._manager.addMenu(menu); menu.connect('activate', () => { window.check_alive(global.get_current_time()); }); let destroyId = window.connect('unmanaged', () => { menu.close(); }); this._sourceActor.set_size(Math.max(1, rect.width), Math.max(1, rect.height)); this._sourceActor.set_position(rect.x, rect.y); this._sourceActor.show(); menu.open(BoxPointer.PopupAnimation.FADE); menu.actor.navigate_focus(null, St.DirectionType.TAB_FORWARD, false); menu.connect('open-state-changed', (menu_, isOpen) => { if (isOpen) return; this._sourceActor.hide(); menu.destroy(); window.disconnect(destroyId); }); } } 07070100000201000081A40000000000000000000000016712993F000055CB000000000000000000000000000000000000002800000000gnome-shell-47.1/js/ui/windowPreview.jsimport Atk from 'gi://Atk'; import Clutter from 'gi://Clutter'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import Graphene from 'gi://Graphene'; import Meta from 'gi://Meta'; import Pango from 'gi://Pango'; import Shell from 'gi://Shell'; import St from 'gi://St'; import * as DND from './dnd.js'; import * as OverviewControls from './overviewControls.js'; const WINDOW_DND_SIZE = 256; const WINDOW_OVERLAY_IDLE_HIDE_TIMEOUT = 750; const WINDOW_OVERLAY_FADE_TIME = 200; const WINDOW_SCALE_TIME = 200; const WINDOW_ACTIVE_SIZE_INC = 5; // in each direction const DRAGGING_WINDOW_OPACITY = 100; const ICON_SIZE = 64; const ICON_OVERLAP = 0.7; const ICON_TITLE_SPACING = 6; export const WindowPreview = GObject.registerClass({ Properties: { 'overlay-enabled': GObject.ParamSpec.boolean( 'overlay-enabled', null, null, GObject.ParamFlags.READWRITE, true), }, Signals: { 'drag-begin': {}, 'drag-cancelled': {}, 'drag-end': {}, 'selected': {param_types: [GObject.TYPE_UINT]}, 'show-chrome': {}, 'size-changed': {}, }, }, class WindowPreview extends Shell.WindowPreview { _init(metaWindow, workspace, overviewAdjustment) { this.metaWindow = metaWindow; this.metaWindow._delegate = this; this._windowActor = metaWindow.get_compositor_private(); this._workspace = workspace; this._overviewAdjustment = overviewAdjustment; super._init({ reactive: true, can_focus: true, accessible_role: Atk.Role.PUSH_BUTTON, offscreen_redirect: Clutter.OffscreenRedirect.AUTOMATIC_FOR_OPACITY, }); const windowContainer = new Clutter.Actor({ pivot_point: new Graphene.Point({x: 0.5, y: 0.5}), }); this.window_container = windowContainer; windowContainer.connect('notify::scale-x', () => this._adjustOverlayOffsets()); // gjs currently can't handle setting an actors layout manager during // the initialization of the actor if that layout manager keeps track // of its container, so set the layout manager after creating the // container windowContainer.layout_manager = new Shell.WindowPreviewLayout(); this.add_child(windowContainer); this._addWindow(metaWindow); this._delegate = this; this._stackAbove = null; this._cachedBoundingBox = { x: windowContainer.layout_manager.bounding_box.x1, y: windowContainer.layout_manager.bounding_box.y1, width: windowContainer.layout_manager.bounding_box.get_width(), height: windowContainer.layout_manager.bounding_box.get_height(), }; windowContainer.layout_manager.connect( 'notify::bounding-box', layout => { this._cachedBoundingBox = { x: layout.bounding_box.x1, y: layout.bounding_box.y1, width: layout.bounding_box.get_width(), height: layout.bounding_box.get_height(), }; // A bounding box of 0x0 means all windows were removed if (layout.bounding_box.get_area() > 0) this.emit('size-changed'); }); this._windowActor.connectObject('destroy', () => this.destroy(), this); this._updateAttachedDialogs(); this.connect('destroy', this._onDestroy.bind(this)); this._draggable = DND.makeDraggable(this, { restoreOnSuccess: true, dragActorMaxSize: WINDOW_DND_SIZE, dragActorOpacity: DRAGGING_WINDOW_OPACITY, }); this._draggable.connect('drag-begin', this._onDragBegin.bind(this)); this._draggable.connect('drag-cancelled', this._onDragCancelled.bind(this)); this._draggable.connect('drag-end', this._onDragEnd.bind(this)); this.inDrag = false; let clickAction = new Clutter.ClickAction(); clickAction.connect('clicked', () => this._activate()); clickAction.connect('long-press', (action, actor, state) => { if (state === Clutter.LongPressState.ACTIVATE) this.showOverlay(true); return true; }); this._draggable.addClickAction(clickAction); this._overlayEnabled = true; this._overlayShown = false; this._closeRequested = false; this._idleHideOverlayId = 0; const tracker = Shell.WindowTracker.get_default(); const app = tracker.get_window_app(this.metaWindow); this._icon = app.create_icon_texture(ICON_SIZE); this._icon.add_style_class_name('window-icon'); this._icon.add_style_class_name('icon-dropshadow'); this._icon.set({ reactive: true, pivot_point: new Graphene.Point({x: 0.5, y: 0.5}), }); this._icon.add_constraint(new Clutter.BindConstraint({ source: windowContainer, coordinate: Clutter.BindCoordinate.POSITION, })); this._icon.add_constraint(new Clutter.AlignConstraint({ source: windowContainer, align_axis: Clutter.AlignAxis.X_AXIS, factor: 0.5, })); this._icon.add_constraint(new Clutter.AlignConstraint({ source: windowContainer, align_axis: Clutter.AlignAxis.Y_AXIS, pivot_point: new Graphene.Point({x: -1, y: ICON_OVERLAP}), factor: 1, })); const {scaleFactor} = St.ThemeContext.get_for_stage(global.stage); this._title = new St.Label({ visible: false, style_class: 'window-caption', text: this._getCaption(), reactive: true, }); this._title.clutter_text.single_line_mode = true; this._title.add_constraint(new Clutter.BindConstraint({ source: windowContainer, coordinate: Clutter.BindCoordinate.X, })); const iconBottomOverlap = ICON_SIZE * (1 - ICON_OVERLAP); this._title.add_constraint(new Clutter.BindConstraint({ source: windowContainer, coordinate: Clutter.BindCoordinate.Y, offset: scaleFactor * (iconBottomOverlap + ICON_TITLE_SPACING), })); this._title.add_constraint(new Clutter.AlignConstraint({ source: windowContainer, align_axis: Clutter.AlignAxis.X_AXIS, factor: 0.5, })); this._title.add_constraint(new Clutter.AlignConstraint({ source: windowContainer, align_axis: Clutter.AlignAxis.Y_AXIS, pivot_point: new Graphene.Point({x: -1, y: 0}), factor: 1, })); this._title.clutter_text.ellipsize = Pango.EllipsizeMode.END; this.label_actor = this._title; this.metaWindow.connectObject( 'notify::title', () => (this._title.text = this._getCaption()), this); const layout = Meta.prefs_get_button_layout(); this._closeButtonSide = layout.left_buttons.includes(Meta.ButtonFunction.CLOSE) ? St.Side.LEFT : St.Side.RIGHT; this._closeButton = new St.Button({ visible: false, style_class: 'window-close', icon_name: 'preview-close-symbolic', }); this._closeButton.add_constraint(new Clutter.BindConstraint({ source: windowContainer, coordinate: Clutter.BindCoordinate.POSITION, })); this._closeButton.add_constraint(new Clutter.AlignConstraint({ source: windowContainer, align_axis: Clutter.AlignAxis.X_AXIS, pivot_point: new Graphene.Point({x: 0.5, y: -1}), factor: this._closeButtonSide === St.Side.LEFT ? 0 : 1, })); this._closeButton.add_constraint(new Clutter.AlignConstraint({ source: windowContainer, align_axis: Clutter.AlignAxis.Y_AXIS, pivot_point: new Graphene.Point({x: -1, y: 0.5}), factor: 0, })); this._closeButton.connect('clicked', () => this._deleteAll()); this.add_child(this._title); this.add_child(this._icon); this.add_child(this._closeButton); this._overviewAdjustment.connectObject( 'notify::value', () => this._updateIconScale(), this); this._updateIconScale(); this.connect('notify::realized', () => { if (!this.realized) return; this._title.ensure_style(); this._icon.ensure_style(); }); } _updateIconScale() { const {ControlsState} = OverviewControls; const {currentState, initialState, finalState} = this._overviewAdjustment.getStateTransitionParams(); const visible = initialState === ControlsState.WINDOW_PICKER || finalState === ControlsState.WINDOW_PICKER; const scale = visible ? 1 - Math.abs(ControlsState.WINDOW_PICKER - currentState) : 0; this._icon.set({ scale_x: scale, scale_y: scale, }); } _windowCanClose() { return this.metaWindow.can_close() && !this._hasAttachedDialogs(); } _getCaption() { if (this.metaWindow.title) return this.metaWindow.title; let tracker = Shell.WindowTracker.get_default(); let app = tracker.get_window_app(this.metaWindow); return app.get_name(); } overlapHeights() { const [, titleHeight] = this._title.get_preferred_height(-1); const topOverlap = 0; const bottomOverlap = ICON_TITLE_SPACING + titleHeight; return [topOverlap, bottomOverlap]; } chromeHeights() { const [, closeButtonHeight] = this._closeButton.get_preferred_height(-1); const [, iconHeight] = this._icon.get_preferred_height(-1); const {scaleFactor} = St.ThemeContext.get_for_stage(global.stage); const activeExtraSize = WINDOW_ACTIVE_SIZE_INC * scaleFactor; const topOversize = closeButtonHeight / 2; const bottomOversize = (1 - ICON_OVERLAP) * iconHeight; return [ topOversize + activeExtraSize, bottomOversize + activeExtraSize, ]; } chromeWidths() { const [, closeButtonWidth] = this._closeButton.get_preferred_width(-1); const {scaleFactor} = St.ThemeContext.get_for_stage(global.stage); const activeExtraSize = WINDOW_ACTIVE_SIZE_INC * scaleFactor; const leftOversize = this._closeButtonSide === St.Side.LEFT ? closeButtonWidth / 2 : 0; const rightOversize = this._closeButtonSide === St.Side.LEFT ? 0 : closeButtonWidth / 2; return [ leftOversize + activeExtraSize, rightOversize + activeExtraSize, ]; } showOverlay(animate) { if (!this._overlayEnabled) return; if (this._overlayShown) return; this._overlayShown = true; this._restack(); // If we're supposed to animate and an animation in our direction // is already happening, let that one continue const ongoingTransition = this._title.get_transition('opacity'); if (animate && ongoingTransition && ongoingTransition.get_interval().peek_final_value() === 255) return; const toShow = this._windowCanClose() ? [this._title, this._closeButton] : [this._title]; toShow.forEach(a => { a.opacity = 0; a.show(); a.ease({ opacity: 255, duration: animate ? WINDOW_OVERLAY_FADE_TIME : 0, mode: Clutter.AnimationMode.EASE_OUT_QUAD, }); }); const [width, height] = this.window_container.get_size(); const {scaleFactor} = St.ThemeContext.get_for_stage(global.stage); const activeExtraSize = WINDOW_ACTIVE_SIZE_INC * 2 * scaleFactor; const origSize = Math.max(width, height); const scale = (origSize + activeExtraSize) / origSize; this.window_container.ease({ scale_x: scale, scale_y: scale, duration: animate ? WINDOW_SCALE_TIME : 0, mode: Clutter.AnimationMode.EASE_OUT_QUAD, }); this.emit('show-chrome'); } hideOverlay(animate) { if (!this._overlayShown) return; this._overlayShown = false; this._restack(); // If we're supposed to animate and an animation in our direction // is already happening, let that one continue const ongoingTransition = this._title.get_transition('opacity'); if (animate && ongoingTransition && ongoingTransition.get_interval().peek_final_value() === 0) return; [this._title, this._closeButton].forEach(a => { a.opacity = 255; a.ease({ opacity: 0, duration: animate ? WINDOW_OVERLAY_FADE_TIME : 0, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => a.hide(), }); }); this.window_container.ease({ scale_x: 1, scale_y: 1, duration: animate ? WINDOW_SCALE_TIME : 0, mode: Clutter.AnimationMode.EASE_OUT_QUAD, }); } _adjustOverlayOffsets() { // Assume that scale-x and scale-y update always set // in lock-step; that allows us to not use separate // handlers for horizontal and vertical offsets const previewScale = this.window_container.scale_x; const [previewWidth, previewHeight] = this.window_container.allocation.get_size(); const heightIncrease = Math.floor(previewHeight * (previewScale - 1) / 2); const widthIncrease = Math.floor(previewWidth * (previewScale - 1) / 2); const closeAlign = this._closeButtonSide === St.Side.LEFT ? -1 : 1; this._icon.translation_y = heightIncrease; this._title.translation_y = heightIncrease; this._closeButton.set({ translation_x: closeAlign * widthIncrease, translation_y: -heightIncrease, }); } _addWindow(metaWindow) { const clone = this.window_container.layout_manager.add_window(metaWindow); if (!clone) return; // We expect this to be used for all interaction rather than // the ClutterClone; as the former is reactive and the latter // is not, this just works for most cases. However, for DND all // actors are picked, so DND operations would operate on the clone. // To avoid this, we hide it from pick. Shell.util_set_hidden_from_pick(clone, true); } vfunc_has_overlaps() { return this._hasAttachedDialogs() || this._icon.visible || this._closeButton.visible; } _deleteAll() { const windows = this.window_container.layout_manager.get_windows(); // Delete all windows, starting from the bottom-most (most-modal) one for (const window of windows.reverse()) window.delete(global.get_current_time()); this._closeRequested = true; } addDialog(win) { let parent = win.get_transient_for(); while (parent.is_attached_dialog()) parent = parent.get_transient_for(); // Display dialog if it is attached to our metaWindow if (win.is_attached_dialog() && parent === this.metaWindow) this._addWindow(win); // The dialog popped up after the user tried to close the window, // assume it's a close confirmation and leave the overview if (this._closeRequested) this._activate(); } _hasAttachedDialogs() { return this.window_container.layout_manager.get_windows().length > 1; } _updateAttachedDialogs() { let iter = win => { let actor = win.get_compositor_private(); if (!actor) return false; if (!win.is_attached_dialog()) return false; this._addWindow(win); win.foreach_transient(iter); return true; }; this.metaWindow.foreach_transient(iter); } get boundingBox() { return {...this._cachedBoundingBox}; } get windowCenter() { return { x: this._cachedBoundingBox.x + this._cachedBoundingBox.width / 2, y: this._cachedBoundingBox.y + this._cachedBoundingBox.height / 2, }; } get overlayEnabled() { return this._overlayEnabled; } set overlayEnabled(enabled) { if (this._overlayEnabled === enabled) return; this._overlayEnabled = enabled; this.notify('overlay-enabled'); if (!enabled) this.hideOverlay(false); else if (this['has-pointer'] || global.stage.key_focus === this) this.showOverlay(true); } // Find the actor just below us, respecting reparenting done by DND code _getActualStackAbove() { if (this._stackAbove == null) return null; if (this.inDrag) { if (this._stackAbove._delegate) return this._stackAbove._delegate._getActualStackAbove(); else return null; } else { return this._stackAbove; } } setStackAbove(actor) { this._stackAbove = actor; if (this.inDrag) // We'll fix up the stack after the drag return; let parent = this.get_parent(); let actualAbove = this._getActualStackAbove(); if (actualAbove == null) parent.set_child_below_sibling(this, null); else parent.set_child_above_sibling(this, actualAbove); } _onDestroy() { this.metaWindow._delegate = null; this._delegate = null; this._destroyed = true; if (this._longPressLater) { const laters = global.compositor.get_laters(); laters.remove(this._longPressLater); delete this._longPressLater; } if (this._idleHideOverlayId > 0) { GLib.source_remove(this._idleHideOverlayId); this._idleHideOverlayId = 0; } if (this.inDrag) { this.emit('drag-end'); this.inDrag = false; } } _activate() { this.emit('selected', global.get_current_time()); } vfunc_enter_event(event) { this.showOverlay(true); return super.vfunc_enter_event(event); } vfunc_leave_event(event) { if (this._destroyed) return super.vfunc_leave_event(event); if ((event.get_flags() & Clutter.EventFlags.FLAG_GRAB_NOTIFY) !== 0 && global.stage.get_grab_actor() === this._closeButton) return super.vfunc_leave_event(event); if (this._idleHideOverlayId > 0) GLib.source_remove(this._idleHideOverlayId); this._idleHideOverlayId = GLib.timeout_add( GLib.PRIORITY_DEFAULT, WINDOW_OVERLAY_IDLE_HIDE_TIMEOUT, () => { if (this._closeButton['has-pointer'] || this._icon['has-pointer'] || this._title['has-pointer']) return GLib.SOURCE_CONTINUE; if (!this['has-pointer']) this.hideOverlay(true); this._idleHideOverlayId = 0; return GLib.SOURCE_REMOVE; }); GLib.Source.set_name_by_id(this._idleHideOverlayId, '[gnome-shell] this._idleHideOverlayId'); return super.vfunc_leave_event(event); } vfunc_key_focus_in() { super.vfunc_key_focus_in(); this.showOverlay(true); } vfunc_key_focus_out() { super.vfunc_key_focus_out(); if (global.stage.get_grab_actor() !== this._closeButton) this.hideOverlay(true); } vfunc_key_press_event(event) { let symbol = event.get_key_symbol(); let isEnter = symbol === Clutter.KEY_Return || symbol === Clutter.KEY_KP_Enter; if (isEnter) { this._activate(); return true; } return super.vfunc_key_press_event(event); } _restack() { // We may not have a parent if DnD completed successfully, in // which case our clone will shortly be destroyed and replaced // with a new one on the target workspace. const parent = this.get_parent(); if (parent !== null) { if (this._overlayShown) parent.set_child_above_sibling(this, null); else if (this._stackAbove === null) parent.set_child_below_sibling(this, null); else if (!this._stackAbove._overlayShown) parent.set_child_above_sibling(this, this._stackAbove); } } _onDragBegin(_draggable, _time) { this.inDrag = true; this.hideOverlay(false); this.emit('drag-begin'); } handleDragOver(source, actor, x, y, time) { return this._workspace.handleDragOver(source, actor, x, y, time); } acceptDrop(source, actor, x, y, time) { return this._workspace.acceptDrop(source, actor, x, y, time); } _onDragCancelled(_draggable, _time) { this.emit('drag-cancelled'); } _onDragEnd(_draggable, _time, _snapback) { this.inDrag = false; this._restack(); if (this['has-pointer']) this.showOverlay(true); this.emit('drag-end'); } }); 07070100000202000081A40000000000000000000000016712993F0000CBC1000000000000000000000000000000000000002400000000gnome-shell-47.1/js/ui/workspace.jsimport Clutter from 'gi://Clutter'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import Graphene from 'gi://Graphene'; import Meta from 'gi://Meta'; import Shell from 'gi://Shell'; import St from 'gi://St'; import * as Background from './background.js'; import * as DND from './dnd.js'; import * as Main from './main.js'; import * as OverviewControls from './overviewControls.js'; import * as Params from '../misc/params.js'; import * as Util from '../misc/util.js'; import {WindowPreview} from './windowPreview.js'; const WINDOW_PREVIEW_MAXIMUM_SCALE = 0.95; const WINDOW_REPOSITIONING_DELAY = 750; // When calculating a layout, we calculate the scale of windows and the percent // of the available area the new layout uses. If the values for the new layout, // when weighted with the values as below, are worse than the previous layout's, // we stop looking for a new layout and use the previous layout. // Otherwise, we keep looking for a new layout. const LAYOUT_SCALE_WEIGHT = 1; const LAYOUT_SPACE_WEIGHT = 0.1; const BACKGROUND_CORNER_RADIUS_PIXELS = 30; // Window Thumbnail Layout Algorithm // ================================= // // General overview // ---------------- // // The window thumbnail layout algorithm calculates some optimal layout // by computing layouts with some number of rows, calculating how good // each layout is, and stopping iterating when it finds one that is worse // than the previous layout. A layout consists of which windows are in // which rows, row sizes and other general state tracking that would make // calculating window positions from this information fairly easy. // // After a layout is computed that's considered the best layout, we // compute the layout scale to fit it in the area, and then compute // slots (sizes and positions) for each thumbnail. // // Layout generation // ----------------- // // Layout generation is naive and simple: we simply add windows to a row // until we've added too many windows to a row, and then make a new row, // until we have our required N rows. The potential issue with this strategy // is that we may have too many windows at the bottom in some pathological // cases, which tends to make the thumbnails have the shape of a pile of // sand with a peak, with one window at the top. // // Scaling factors // --------------- // // Thumbnail position is mostly straightforward -- the main issue is // computing an optimal scale for each window that fits the constraints, // and doesn't make the thumbnail too small to see. There are two factors // involved in thumbnail scale to make sure that these two goals are met: // the window scale (calculated by _computeWindowScale) and the layout // scale (calculated by computeSizeAndScale). // // The calculation logic becomes slightly more complicated because row // and column spacing are not scaled, they're constant, so we can't // simply generate a bunch of window positions and then scale it. In // practice, it's not too bad -- we can simply try to fit the layout // in the input area minus whatever spacing we have, and then add // it back afterwards. // // The window scale is constant for the window's size regardless of the // input area or the layout scale or rows or anything else, and right // now just enlarges the window if it's too small. The fact that this // factor is stable makes it easy to calculate, so there's no sense // in not applying it in most calculations. // // The layout scale depends on the input area, the rows, etc, but is the // same for the entire layout, rather than being per-window. After // generating the rows of windows, we basically do some basic math to // fit the full, unscaled layout to the input area, as described above. // // With these two factors combined, the final scale of each thumbnail is // simply windowScale * layoutScale... almost. // // There's one additional constraint: the thumbnail scale must never be // larger than WINDOW_PREVIEW_MAXIMUM_SCALE, which means that the inequality: // // windowScale * layoutScale <= WINDOW_PREVIEW_MAXIMUM_SCALE // // must always be true. This is for each individual window -- while we // could adjust layoutScale to make the largest thumbnail smaller than // WINDOW_PREVIEW_MAXIMUM_SCALE, it would shrink windows which are already // under the inequality. To solve this, we simply cheat: we simply keep // each window's "cell" area to be the same, but we shrink the thumbnail // and center it horizontally, and align it to the bottom vertically. export class LayoutStrategy { constructor(params) { params = Params.parse(params, { monitor: null, rowSpacing: 0, columnSpacing: 0, }); if (!params.monitor) throw new Error(`No monitor param passed to ${this.constructor.name}`); this._monitor = params.monitor; this._rowSpacing = params.rowSpacing; this._columnSpacing = params.columnSpacing; } // Compute a strategy-specific overall layout given a list of WindowPreviews // @windows and the strategy-specific @layoutParams. // // Returns a strategy-specific layout object that is opaque to the user. computeLayout(_windows, _layoutParams) { throw new GObject.NotImplementedError(`computeLayout in ${this.constructor.name}`); } // Given @layout and @area, compute the overall scale of the layout and // space occupied by the layout. // // This method returns an array where the first element is the scale and // the second element is the space. // // This method must be called before calling computeWindowSlots(), as it // sets the fixed overall scale of the layout. computeScaleAndSpace(_layout, _area) { throw new GObject.NotImplementedError(`computeScaleAndSpace in ${this.constructor.name}`); } // Returns an array with final position and size information for each // window of the layout, given a bounding area that it will be inside of. computeWindowSlots(_layout, _area) { throw new GObject.NotImplementedError(`computeWindowSlots in ${this.constructor.name}`); } } class UnalignedLayoutStrategy extends LayoutStrategy { _newRow() { // Row properties: // // * x, y are the position of row, relative to area // // * width, height are the scaled versions of fullWidth, fullHeight // // * width also has the spacing in between windows. It's not in // fullWidth, as the spacing is constant, whereas fullWidth is // meant to be scaled // // * neither height/fullHeight have any sort of spacing or padding return { x: 0, y: 0, width: 0, height: 0, fullWidth: 0, fullHeight: 0, windows: [], }; } // Computes and returns an individual scaling factor for @window, // to be applied in addition to the overall layout scale. _computeWindowScale(window) { // Since we align windows next to each other, the height of the // thumbnails is much more important to preserve than the width of // them, so two windows with equal height, but maybe differering // widths line up. let ratio = window.boundingBox.height / this._monitor.height; // The purpose of this manipulation here is to prevent windows // from getting too small. For something like a calculator window, // we need to bump up the size just a bit to make sure it looks // good. We'll use a multiplier of 1.5 for this. // Map from [0, 1] to [1.5, 1] return Util.lerp(1.5, 1, ratio); } _computeRowSizes(layout) { let {rows, scale} = layout; for (let i = 0; i < rows.length; i++) { let row = rows[i]; row.width = row.fullWidth * scale + (row.windows.length - 1) * this._columnSpacing; row.height = row.fullHeight * scale; } } _keepSameRow(row, window, width, idealRowWidth) { if (row.fullWidth + width <= idealRowWidth) return true; let oldRatio = row.fullWidth / idealRowWidth; let newRatio = (row.fullWidth + width) / idealRowWidth; if (Math.abs(1 - newRatio) < Math.abs(1 - oldRatio)) return true; return false; } _sortRow(row) { // Sort windows horizontally to minimize travel distance. // This affects in what order the windows end up in a row. row.windows.sort((a, b) => a.windowCenter.x - b.windowCenter.x); } computeLayout(windows, layoutParams) { layoutParams = Params.parse(layoutParams, { numRows: 0, }); if (layoutParams.numRows === 0) throw new Error(`${this.constructor.name}: No numRows given in layout params`); const numRows = layoutParams.numRows; let rows = []; let totalWidth = 0; for (let i = 0; i < windows.length; i++) { let window = windows[i]; let s = this._computeWindowScale(window); totalWidth += window.boundingBox.width * s; } let idealRowWidth = totalWidth / numRows; // Sort windows vertically to minimize travel distance. // This affects what rows the windows get placed in. let sortedWindows = windows.slice(); sortedWindows.sort((a, b) => a.windowCenter.y - b.windowCenter.y); let windowIdx = 0; for (let i = 0; i < numRows; i++) { let row = this._newRow(); rows.push(row); for (; windowIdx < sortedWindows.length; windowIdx++) { let window = sortedWindows[windowIdx]; let s = this._computeWindowScale(window); let width = window.boundingBox.width * s; let height = window.boundingBox.height * s; row.fullHeight = Math.max(row.fullHeight, height); // either new width is < idealWidth or new width is nearer from idealWidth then oldWidth if (this._keepSameRow(row, window, width, idealRowWidth) || (i === numRows - 1)) { row.windows.push(window); row.fullWidth += width; } else { break; } } } let gridHeight = 0; let maxRow; for (let i = 0; i < numRows; i++) { let row = rows[i]; this._sortRow(row); if (!maxRow || row.fullWidth > maxRow.fullWidth) maxRow = row; gridHeight += row.fullHeight; } return { numRows, rows, maxColumns: maxRow.windows.length, gridWidth: maxRow.fullWidth, gridHeight, }; } computeScaleAndSpace(layout, area) { let hspacing = (layout.maxColumns - 1) * this._columnSpacing; let vspacing = (layout.numRows - 1) * this._rowSpacing; let spacedWidth = area.width - hspacing; let spacedHeight = area.height - vspacing; let horizontalScale = spacedWidth / layout.gridWidth; let verticalScale = spacedHeight / layout.gridHeight; // Thumbnails should be less than 70% of the original size let scale = Math.min( horizontalScale, verticalScale, WINDOW_PREVIEW_MAXIMUM_SCALE); let scaledLayoutWidth = layout.gridWidth * scale + hspacing; let scaledLayoutHeight = layout.gridHeight * scale + vspacing; let space = (scaledLayoutWidth * scaledLayoutHeight) / (area.width * area.height); layout.scale = scale; return [scale, space]; } computeWindowSlots(layout, area) { this._computeRowSizes(layout); let {rows, scale} = layout; let slots = []; // Do this in three parts. let heightWithoutSpacing = 0; for (let i = 0; i < rows.length; i++) { let row = rows[i]; heightWithoutSpacing += row.height; } let verticalSpacing = (rows.length - 1) * this._rowSpacing; let additionalVerticalScale = Math.min(1, (area.height - verticalSpacing) / heightWithoutSpacing); // keep track how much smaller the grid becomes due to scaling // so it can be centered again let compensation = 0; let y = 0; for (let i = 0; i < rows.length; i++) { let row = rows[i]; // If this window layout row doesn't fit in the actual // geometry, then apply an additional scale to it. let horizontalSpacing = (row.windows.length - 1) * this._columnSpacing; let widthWithoutSpacing = row.width - horizontalSpacing; let additionalHorizontalScale = Math.min(1, (area.width - horizontalSpacing) / widthWithoutSpacing); if (additionalHorizontalScale < additionalVerticalScale) { row.additionalScale = additionalHorizontalScale; // Only consider the scaling in addition to the vertical scaling for centering. compensation += (additionalVerticalScale - additionalHorizontalScale) * row.height; } else { row.additionalScale = additionalVerticalScale; // No compensation when scaling vertically since centering based on a too large // height would undo what vertical scaling is trying to achieve. } row.x = area.x + (Math.max(area.width - (widthWithoutSpacing * row.additionalScale + horizontalSpacing), 0) / 2); row.y = area.y + (Math.max(area.height - (heightWithoutSpacing + verticalSpacing), 0) / 2) + y; y += row.height * row.additionalScale + this._rowSpacing; } compensation /= 2; for (let i = 0; i < rows.length; i++) { const row = rows[i]; const rowY = row.y + compensation; const rowHeight = row.height * row.additionalScale; let x = row.x; for (let j = 0; j < row.windows.length; j++) { let window = row.windows[j]; let s = scale * this._computeWindowScale(window) * row.additionalScale; let cellWidth = window.boundingBox.width * s; let cellHeight = window.boundingBox.height * s; s = Math.min(s, WINDOW_PREVIEW_MAXIMUM_SCALE); let cloneWidth = window.boundingBox.width * s; const cloneHeight = window.boundingBox.height * s; let cloneX = x + (cellWidth - cloneWidth) / 2; let cloneY; // If there's only one row, align windows vertically centered inside the row if (rows.length === 1) cloneY = rowY + (rowHeight - cloneHeight) / 2; // If there are multiple rows, align windows to the bottom edge of the row else cloneY = rowY + rowHeight - cellHeight; // Align with the pixel grid to prevent blurry windows at scale = 1 cloneX = Math.floor(cloneX); cloneY = Math.floor(cloneY); slots.push([cloneX, cloneY, cloneWidth, cloneHeight, window]); x += cellWidth + this._columnSpacing; } } return slots; } } function animateAllocation(actor, box) { actor.save_easing_state(); actor.set_easing_mode(Clutter.AnimationMode.EASE_OUT_QUAD); actor.set_easing_duration(200); actor.allocate(box); actor.restore_easing_state(); return actor.get_transition('allocation'); } export const WorkspaceLayout = GObject.registerClass({ Properties: { 'spacing': GObject.ParamSpec.double( 'spacing', null, null, GObject.ParamFlags.READWRITE, 0, Infinity, 20), 'layout-frozen': GObject.ParamSpec.boolean( 'layout-frozen', null, null, GObject.ParamFlags.READWRITE, false), }, }, class WorkspaceLayout extends Clutter.LayoutManager { _init(metaWorkspace, monitorIndex, overviewAdjustment) { super._init(); this._spacing = 20; this._layoutFrozen = false; this._metaWorkspace = metaWorkspace; this._monitorIndex = monitorIndex; this._overviewAdjustment = overviewAdjustment; this._container = null; this._windows = new Map(); this._sortedWindows = []; this._lastBox = null; this._windowSlots = []; this._layout = null; this._needsLayout = true; this._stateAdjustment = new St.Adjustment({ value: 0, lower: 0, upper: 1, }); this._stateAdjustment.connect('notify::value', () => { this._syncOpacities(); this.syncOverlays(); this.layout_changed(); }); this._workarea = null; this._workareasChangedId = 0; } _syncOpacity(actor, metaWindow) { if (!metaWindow.showing_on_its_workspace()) actor.opacity = this._stateAdjustment.value * 255; } _syncOpacities() { this._windows.forEach(({metaWindow}, actor) => { this._syncOpacity(actor, metaWindow); }); } _isBetterScaleAndSpace(oldScale, oldSpace, scale, space) { let spacePower = (space - oldSpace) * LAYOUT_SPACE_WEIGHT; let scalePower = (scale - oldScale) * LAYOUT_SCALE_WEIGHT; if (scale > oldScale && space > oldSpace) { // Win win -- better scale and better space return true; } else if (scale > oldScale && space <= oldSpace) { // Keep new layout only if scale gain outweighs aspect space loss return scalePower > spacePower; } else if (scale <= oldScale && space > oldSpace) { // Keep new layout only if aspect space gain outweighs scale loss return spacePower > scalePower; } else { // Lose -- worse scale and space return false; } } _adjustSpacingAndPadding(rowSpacing, colSpacing, containerBox) { if (this._sortedWindows.length === 0) return [rowSpacing, colSpacing, containerBox]; // All of the overlays have the same chrome sizes, // so just pick the first one. const window = this._sortedWindows[0]; const [topOversize, bottomOversize] = window.chromeHeights(); const [leftOversize, rightOversize] = window.chromeWidths(); const oversize = Math.max(topOversize, bottomOversize, leftOversize, rightOversize); if (rowSpacing !== null) rowSpacing += oversize; if (colSpacing !== null) colSpacing += oversize; if (containerBox) { const monitor = Main.layoutManager.monitors[this._monitorIndex]; const bottomPoint = new Graphene.Point3D({y: containerBox.y2}); const transformedBottomPoint = this._container.apply_transform_to_point(bottomPoint); const bottomFreeSpace = (monitor.y + monitor.height) - transformedBottomPoint.y; const [, bottomOverlap] = window.overlapHeights(); if ((bottomOverlap + oversize) > bottomFreeSpace) containerBox.y2 -= (bottomOverlap + oversize) - bottomFreeSpace; } return [rowSpacing, colSpacing, containerBox]; } _createBestLayout(area) { const [rowSpacing, columnSpacing] = this._adjustSpacingAndPadding(this._spacing, this._spacing, null); // We look for the largest scale that allows us to fit the // largest row/tallest column on the workspace. this._layoutStrategy = new UnalignedLayoutStrategy({ monitor: Main.layoutManager.monitors[this._monitorIndex], rowSpacing, columnSpacing, }); let lastLayout = null; let lastNumColumns = -1; let lastScale = 0; let lastSpace = 0; for (let numRows = 1; ; numRows++) { const numColumns = Math.ceil(this._sortedWindows.length / numRows); // If adding a new row does not change column count just stop // (for instance: 9 windows, with 3 rows -> 3 columns, 4 rows -> // 3 columns as well => just use 3 rows then) if (numColumns === lastNumColumns) break; const layout = this._layoutStrategy.computeLayout(this._sortedWindows, { numRows, }); const [scale, space] = this._layoutStrategy.computeScaleAndSpace(layout, area); if (lastLayout && !this._isBetterScaleAndSpace(lastScale, lastSpace, scale, space)) break; lastLayout = layout; lastNumColumns = numColumns; lastScale = scale; lastSpace = space; } return lastLayout; } _getWindowSlots(containerBox) { [, , containerBox] = this._adjustSpacingAndPadding(null, null, containerBox); const availArea = { x: parseInt(containerBox.x1), y: parseInt(containerBox.y1), width: parseInt(containerBox.get_width()), height: parseInt(containerBox.get_height()), }; return this._layoutStrategy.computeWindowSlots(this._layout, availArea); } _getAdjustedWorkarea(container) { const workarea = this._workarea.copy(); if (container instanceof St.Widget) { const themeNode = container.get_theme_node(); workarea.width -= themeNode.get_horizontal_padding(); workarea.height -= themeNode.get_vertical_padding(); } return workarea; } _syncWorkareaTracking() { if (this._container) { if (this._workAreaChangedId) return; this._workarea = Main.layoutManager.getWorkAreaForMonitor(this._monitorIndex); this._workareasChangedId = global.display.connect('workareas-changed', () => { this._workarea = Main.layoutManager.getWorkAreaForMonitor(this._monitorIndex); this.layout_changed(); }); } else if (this._workareasChangedId) { global.display.disconnect(this._workareasChangedId); this._workareasChangedId = 0; } } vfunc_set_container(container) { this._container = container; this._syncWorkareaTracking(); this._stateAdjustment.actor = container; } vfunc_get_preferred_width(container, forHeight) { const workarea = this._getAdjustedWorkarea(container); if (forHeight === -1) return [0, workarea.width]; const workAreaAspectRatio = workarea.width / workarea.height; const widthPreservingAspectRatio = forHeight * workAreaAspectRatio; return [0, widthPreservingAspectRatio]; } vfunc_get_preferred_height(container, forWidth) { const workarea = this._getAdjustedWorkarea(container); if (forWidth === -1) return [0, workarea.height]; const workAreaAspectRatio = workarea.width / workarea.height; const heightPreservingAspectRatio = forWidth / workAreaAspectRatio; return [0, heightPreservingAspectRatio]; } vfunc_allocate(container, box) { const containerBox = container.allocation; const [containerWidth, containerHeight] = containerBox.get_size(); const containerAllocationChanged = this._lastBox === null || !this._lastBox.equal(containerBox); // If the containers size changed, we can no longer keep around // the old windowSlots, so we must unfreeze the layout. // // However, if the overview animation is in progress, don't unfreeze // the layout. This is needed to prevent windows "snapping" to their // new positions during the overview closing animation when the // allocation subtly expands every frame. if (this._layoutFrozen && containerAllocationChanged && !Main.overview.animationInProgress) { this._layoutFrozen = false; this.notify('layout-frozen'); } const {ControlsState} = OverviewControls; const {currentState} = this._overviewAdjustment.getStateTransitionParams(); const inSessionTransition = currentState <= ControlsState.WINDOW_PICKER; const window = this._sortedWindows[0]; if (inSessionTransition || !window) { container.remove_clip(); } else { const [, bottomOversize] = window.chromeHeights(); const [containerX, containerY] = containerBox.get_origin(); const extraHeightProgress = currentState - OverviewControls.ControlsState.WINDOW_PICKER; const extraClipHeight = bottomOversize * (1 - extraHeightProgress); container.set_clip(containerX, containerY, containerWidth, containerHeight + extraClipHeight); } let layoutChanged = false; if (!this._layoutFrozen || !this._lastBox) { if (this._needsLayout) { this._layout = this._createBestLayout(this._workarea); this._needsLayout = false; layoutChanged = true; } if (layoutChanged || containerAllocationChanged) { this._windowSlotsBox = box.copy(); this._windowSlots = this._getWindowSlots(this._windowSlotsBox); } } const slotsScale = box.get_width() / this._windowSlotsBox.get_width(); const workareaX = this._workarea.x; const workareaY = this._workarea.y; const workareaWidth = this._workarea.width; const stateAdjustementValue = this._stateAdjustment.value; const allocationScale = containerWidth / workareaWidth; const childBox = new Clutter.ActorBox(); const nSlots = this._windowSlots.length; for (let i = 0; i < nSlots; i++) { let [x, y, width, height, child] = this._windowSlots[i]; if (!child.visible) continue; x *= slotsScale; y *= slotsScale; width *= slotsScale; height *= slotsScale; const windowInfo = this._windows.get(child); let workspaceBoxX, workspaceBoxY; let workspaceBoxWidth, workspaceBoxHeight; if (windowInfo.metaWindow.showing_on_its_workspace()) { workspaceBoxX = (child.boundingBox.x - workareaX) * allocationScale; workspaceBoxY = (child.boundingBox.y - workareaY) * allocationScale; workspaceBoxWidth = child.boundingBox.width * allocationScale; workspaceBoxHeight = child.boundingBox.height * allocationScale; } else { workspaceBoxX = workareaX * allocationScale; workspaceBoxY = workareaY * allocationScale; workspaceBoxWidth = 0; workspaceBoxHeight = 0; } // Don't allow the scaled floating size to drop below // the target layout size. // We only want to apply this when the scaled floating size is // actually larger than the target layout size, that is while // animating between the session and the window picker. if (inSessionTransition) { workspaceBoxWidth = Math.max(workspaceBoxWidth, width); workspaceBoxHeight = Math.max(workspaceBoxHeight, height); } x = Util.lerp(workspaceBoxX, x, stateAdjustementValue); y = Util.lerp(workspaceBoxY, y, stateAdjustementValue); width = Util.lerp(workspaceBoxWidth, width, stateAdjustementValue); height = Util.lerp(workspaceBoxHeight, height, stateAdjustementValue); childBox.set_origin(x, y); childBox.set_size(width, height); if (windowInfo.currentTransition) { windowInfo.currentTransition.get_interval().set_final(childBox); // The timeline of the transition might not have been updated // before this allocation cycle, so make sure the child // still updates needs_allocation to FALSE. // Unfortunately, this relies on the fast paths in // clutter_actor_allocate(), otherwise we'd start a new // transition on the child, replacing the current one. child.allocate(child.allocation); continue; } // We want layout changes (ie. larger changes to the layout like // reshuffling the window order) to be animated, but small changes // like changes to the container size to happen immediately (for // example if the container height is being animated, we want to // avoid animating the children allocations to make sure they // don't "lag behind" the other animation). if (layoutChanged && !Main.overview.animationInProgress) { const transition = animateAllocation(child, childBox); if (transition) { windowInfo.currentTransition = transition; windowInfo.currentTransition.connect('stopped', () => { windowInfo.currentTransition = null; }); } } else { child.allocate(childBox); } } this._lastBox = containerBox.copy(); } _syncOverlay(preview) { const active = this._metaWorkspace?.active ?? true; preview.overlayEnabled = active && this._stateAdjustment.value === 1; } /** * Synchronizes the overlay state of all window previews. */ syncOverlays() { [...this._windows.keys()].forEach(preview => this._syncOverlay(preview)); } /** * Adds `window` to the workspace, it will be shown immediately if * the layout isn't frozen using the layout-frozen property. * * If `window` is already part of the workspace, nothing will happen. * * @param {WindowPreview} window - the window to add * @param {Meta.Window} metaWindow - the MetaWindow of the window */ addWindow(window, metaWindow) { if (this._windows.has(window)) return; this._windows.set(window, { metaWindow, sizeChangedId: metaWindow.connect('size-changed', () => { this._needsLayout = true; this.layout_changed(); }), destroyId: window.connect('destroy', () => this.removeWindow(window)), currentTransition: null, }); this._sortedWindows.push(window); this._sortedWindows.sort((a, b) => { const winA = this._windows.get(a).metaWindow; const winB = this._windows.get(b).metaWindow; return winA.get_stable_sequence() - winB.get_stable_sequence(); }); this._syncOpacity(window, metaWindow); this._syncOverlay(window); this._container.add_child(window); this._needsLayout = true; this.layout_changed(); } /** * Removes `window` from the workspace if `window` is a part of the * workspace. If the layout-frozen property is set to true, the * window will still be visible until the property is set to false. * * @param {WindowPreview} window - the window to remove */ removeWindow(window) { const windowInfo = this._windows.get(window); if (!windowInfo) return; windowInfo.metaWindow.disconnect(windowInfo.sizeChangedId); window.disconnect(windowInfo.destroyId); if (windowInfo.currentTransition) window.remove_transition('allocation'); this._windows.delete(window); this._sortedWindows.splice(this._sortedWindows.indexOf(window), 1); // The layout might be frozen and we might not update the windowSlots // on the next allocation, so remove the slot now already const index = this._windowSlots.findIndex(s => s[4] === window); if (index !== -1) this._windowSlots.splice(index, 1); // The window might have been reparented by DND if (window.get_parent() === this._container) this._container.remove_child(window); this._needsLayout = true; this.layout_changed(); } syncStacking(stackIndices) { const windows = [...this._windows.keys()]; windows.sort((a, b) => { const seqA = this._windows.get(a).metaWindow.get_stable_sequence(); const seqB = this._windows.get(b).metaWindow.get_stable_sequence(); return stackIndices[seqA] - stackIndices[seqB]; }); let lastWindow = null; for (const window of windows) { window.setStackAbove(lastWindow); lastWindow = window; } this._needsLayout = true; this.layout_changed(); } /** * getFocusChain: * * Gets the focus chain of the workspace. This function will return * an empty array if the floating window layout is used. * * @returns {Array} an array of {Clutter.Actor}s */ getFocusChain() { if (this._stateAdjustment.value === 0) return []; // The fifth element in the slot array is the WindowPreview return this._windowSlots.map(s => s[4]); } /** * An StAdjustment for controlling and transitioning between * the alignment of windows using the layout strategy and the * floating window layout. * * A value of 0 of the adjustment completely uses the floating * window layout while a value of 1 completely aligns windows using * the layout strategy. * * @type {St.Adjustment} */ get stateAdjustment() { return this._stateAdjustment; } get spacing() { return this._spacing; } set spacing(s) { if (this._spacing === s) return; this._spacing = s; this._needsLayout = true; this.notify('spacing'); this.layout_changed(); } get layoutFrozen() { return this._layoutFrozen; } set layoutFrozen(f) { if (this._layoutFrozen === f) return; this._layoutFrozen = f; this.notify('layout-frozen'); if (!this._layoutFrozen) this.layout_changed(); } }); export const WorkspaceBackground = GObject.registerClass( class WorkspaceBackground extends Shell.WorkspaceBackground { _init(monitorIndex, stateAdjustment) { super._init({ style_class: 'workspace-background', x_expand: true, y_expand: true, monitor_index: monitorIndex, }); this._monitorIndex = monitorIndex; this._workarea = Main.layoutManager.getWorkAreaForMonitor(monitorIndex); this._stateAdjustment = stateAdjustment; this._stateAdjustment.connectObject('notify::value', () => { this._updateBorderRadius(); this.queue_relayout(); }, this); this._stateAdjustment.bind_property( 'value', this, 'state-adjustment-value', GObject.BindingFlags.SYNC_CREATE ); this._bin = new Clutter.Actor({ layout_manager: new Clutter.BinLayout(), clip_to_allocation: true, }); this._backgroundGroup = new Meta.BackgroundGroup({ layout_manager: new Clutter.BinLayout(), x_expand: true, y_expand: true, }); this._bin.add_child(this._backgroundGroup); this.add_child(this._bin); this._bgManager = new Background.BackgroundManager({ container: this._backgroundGroup, monitorIndex: this._monitorIndex, controlPosition: false, useContentSize: false, }); this._bgManager.connect('changed', () => { this._updateRoundedClipBounds(); this._updateBorderRadius(); }); global.display.connectObject('workareas-changed', () => { this._workarea = Main.layoutManager.getWorkAreaForMonitor(monitorIndex); this._updateRoundedClipBounds(); this.queue_relayout(); }, this); this._updateRoundedClipBounds(); this._updateBorderRadius(); this.connect('destroy', this._onDestroy.bind(this)); } _updateBorderRadius() { const {scaleFactor} = St.ThemeContext.get_for_stage(global.stage); const cornerRadius = scaleFactor * BACKGROUND_CORNER_RADIUS_PIXELS; const backgroundContent = this._bgManager.backgroundActor.content; backgroundContent.rounded_clip_radius = Util.lerp(0, cornerRadius, this._stateAdjustment.value); } _updateRoundedClipBounds() { const monitor = Main.layoutManager.monitors[this._monitorIndex]; const rect = new Graphene.Rect(); rect.origin.x = this._workarea.x - monitor.x; rect.origin.y = this._workarea.y - monitor.y; rect.size.width = this._workarea.width; rect.size.height = this._workarea.height; this._bgManager.backgroundActor.content.set_rounded_clip_bounds(rect); } _onDestroy() { if (this._bgManager) { this._bgManager.destroy(); this._bgManager = null; } } }); export const Workspace = GObject.registerClass( class Workspace extends St.Widget { /** * @param {Meta.Workspace} metaWorkspace * @param {number} monitorIndex * @param {OverviewAdjustment} overviewAdjustment */ _init(metaWorkspace, monitorIndex, overviewAdjustment) { super._init({ style_class: 'window-picker', pivot_point: new Graphene.Point({x: 0.5, y: 0.5}), layout_manager: new Clutter.BinLayout(), }); const layoutManager = new WorkspaceLayout(metaWorkspace, monitorIndex, overviewAdjustment); // Background this._background = new WorkspaceBackground(monitorIndex, layoutManager.stateAdjustment); this.add_child(this._background); // Window previews this._container = new Clutter.Actor({ reactive: true, x_expand: true, y_expand: true, }); this._container.layout_manager = layoutManager; this.add_child(this._container); this.metaWorkspace = metaWorkspace; this._overviewAdjustment = overviewAdjustment; this.monitorIndex = monitorIndex; this._monitor = Main.layoutManager.monitors[this.monitorIndex]; if (monitorIndex !== Main.layoutManager.primaryIndex) this.add_style_class_name('external-monitor'); const clickAction = new Clutter.ClickAction(); clickAction.connect('clicked', action => { // Switch to the workspace when not the active one, leave the // overview otherwise. if (action.get_button() === 1 || action.get_button() === 0) { const leaveOverview = this._shouldLeaveOverview(); this.metaWorkspace?.activate(global.get_current_time()); if (leaveOverview) Main.overview.hide(); } }); this.bind_property('mapped', clickAction, 'enabled', GObject.BindingFlags.SYNC_CREATE); this._container.add_action(clickAction); this.connect('style-changed', this._onStyleChanged.bind(this)); this.connect('destroy', this._onDestroy.bind(this)); this._skipTaskbarSignals = new Map(); this._windows = []; this._layoutFrozenId = 0; // DND requires this to be set this._delegate = this; // Track window changes, but let the window tracker process them first this.metaWorkspace?.connectObject( 'window-added', this._windowAdded.bind(this), GObject.ConnectFlags.AFTER, 'window-removed', this._windowRemoved.bind(this), GObject.ConnectFlags.AFTER, 'notify::active', () => layoutManager.syncOverlays(), this); global.display.connectObject( 'window-entered-monitor', this._windowEnteredMonitor.bind(this), GObject.ConnectFlags.AFTER, 'window-left-monitor', this._windowLeftMonitor.bind(this), GObject.ConnectFlags.AFTER, this); // Create clones for windows that should be // visible in the Overview global.get_window_actors().map(a => this._doAddWindow(a.meta_window)); } _shouldLeaveOverview() { if (!this.metaWorkspace || this.metaWorkspace.active) return true; const overviewState = this._overviewAdjustment.value; return overviewState > OverviewControls.ControlsState.WINDOW_PICKER; } vfunc_get_focus_chain() { return this._container.layout_manager.getFocusChain(); } _lookupIndex(metaWindow) { return this._windows.findIndex(w => w.metaWindow === metaWindow); } containsMetaWindow(metaWindow) { return this._lookupIndex(metaWindow) >= 0; } isEmpty() { return this._windows.length === 0; } syncStacking(stackIndices) { this._container.layout_manager.syncStacking(stackIndices); } _doRemoveWindow(metaWin) { let clone = this._removeWindowClone(metaWin); if (!clone) return; clone.destroy(); // We need to reposition the windows; to avoid shuffling windows // around while the user is interacting with the workspace, we delay // the positioning until the pointer remains still for at least 750 ms // or is moved outside the workspace this._container.layout_manager.layout_frozen = true; if (this._layoutFrozenId > 0) { GLib.source_remove(this._layoutFrozenId); this._layoutFrozenId = 0; } let [oldX, oldY] = global.get_pointer(); this._layoutFrozenId = GLib.timeout_add( GLib.PRIORITY_DEFAULT, WINDOW_REPOSITIONING_DELAY, () => { const [newX, newY] = global.get_pointer(); const pointerHasMoved = oldX !== newX || oldY !== newY; const actorUnderPointer = global.stage.get_actor_at_pos( Clutter.PickMode.REACTIVE, newX, newY); if ((pointerHasMoved && this.contains(actorUnderPointer)) || this._windows.some(w => w.contains(actorUnderPointer))) { oldX = newX; oldY = newY; return GLib.SOURCE_CONTINUE; } this._container.layout_manager.layout_frozen = false; this._layoutFrozenId = 0; return GLib.SOURCE_REMOVE; }); GLib.Source.set_name_by_id(this._layoutFrozenId, '[gnome-shell] this._layoutFrozenId'); } _doAddWindow(metaWin) { let win = metaWin.get_compositor_private(); if (!win) { // Newly-created windows are added to a workspace before // the compositor finds out about them... let id = GLib.idle_add(GLib.PRIORITY_DEFAULT, () => { if (metaWin.get_compositor_private() && metaWin.get_workspace() === this.metaWorkspace) this._doAddWindow(metaWin); return GLib.SOURCE_REMOVE; }); GLib.Source.set_name_by_id(id, '[gnome-shell] this._doAddWindow'); return; } // We might have the window in our list already if it was on all workspaces and // now was moved to this workspace if (this.containsMetaWindow(metaWin)) return; if (!this._isMyWindow(metaWin)) return; this._skipTaskbarSignals.set(metaWin, metaWin.connect('notify::skip-taskbar', () => { if (metaWin.skip_taskbar) this._doRemoveWindow(metaWin); else this._doAddWindow(metaWin); })); if (!this._isOverviewWindow(metaWin)) { if (metaWin.get_transient_for() == null) return; // Let the top-most ancestor handle all transients let parent = metaWin.find_root_ancestor(); let clone = this._windows.find(c => c.metaWindow === parent); // If no clone was found, the parent hasn't been created yet // and will take care of the dialog when added if (clone) clone.addDialog(metaWin); return; } const clone = this._addWindowClone(metaWin); clone.set_pivot_point(0.5, 0.5); clone.scale_x = 0; clone.scale_y = 0; clone.ease({ scale_x: 1, scale_y: 1, duration: 250, onStopped: () => clone.set_pivot_point(0, 0), }); if (this._layoutFrozenId > 0) { // If a window was closed before, unfreeze the layout to ensure // the new window is immediately shown this._container.layout_manager.layout_frozen = false; GLib.source_remove(this._layoutFrozenId); this._layoutFrozenId = 0; } } _windowAdded(metaWorkspace, metaWin) { if (!Main.overview.closing) this._doAddWindow(metaWin); } _windowRemoved(metaWorkspace, metaWin) { this._doRemoveWindow(metaWin); } _windowEnteredMonitor(metaDisplay, monitorIndex, metaWin) { if (monitorIndex === this.monitorIndex && !Main.overview.closing) this._doAddWindow(metaWin); } _windowLeftMonitor(metaDisplay, monitorIndex, metaWin) { if (monitorIndex === this.monitorIndex) this._doRemoveWindow(metaWin); } // check for maximized windows on the workspace hasMaximizedWindows() { for (let i = 0; i < this._windows.length; i++) { let metaWindow = this._windows[i].metaWindow; if (metaWindow.showing_on_its_workspace() && metaWindow.maximized_horizontally && metaWindow.maximized_vertically) return true; } return false; } _clearSkipTaskbarSignals() { for (const [metaWin, id] of this._skipTaskbarSignals) metaWin.disconnect(id); this._skipTaskbarSignals.clear(); } prepareToLeaveOverview() { this._clearSkipTaskbarSignals(); for (let i = 0; i < this._windows.length; i++) this._windows[i].remove_all_transitions(); if (this._layoutFrozenId > 0) { GLib.source_remove(this._layoutFrozenId); this._layoutFrozenId = 0; } this._container.layout_manager.layout_frozen = true; Main.overview.connectObject( 'hidden', this._doneLeavingOverview.bind(this), this); } _onDestroy() { this._clearSkipTaskbarSignals(); if (this._layoutFrozenId > 0) { GLib.source_remove(this._layoutFrozenId); this._layoutFrozenId = 0; } this._windows = []; } _doneLeavingOverview() { this._container.layout_manager.layout_frozen = false; } _doneShowingOverview() { this._container.layout_manager.layout_frozen = false; } _isMyWindow(window) { const isOnWorkspace = this.metaWorkspace === null || window.located_on_workspace(this.metaWorkspace); const isOnMonitor = window.get_monitor() === this.monitorIndex; return isOnWorkspace && isOnMonitor; } _isOverviewWindow(window) { return !window.skip_taskbar; } // Create a clone of a (non-desktop) window and add it to the window list _addWindowClone(metaWindow) { let clone = new WindowPreview(metaWindow, this, this._overviewAdjustment); clone.connect('selected', this._onCloneSelected.bind(this)); clone.connect('drag-begin', () => { Main.overview.beginWindowDrag(metaWindow); }); clone.connect('drag-cancelled', () => { Main.overview.cancelledWindowDrag(metaWindow); }); clone.connect('drag-end', () => { Main.overview.endWindowDrag(metaWindow); }); clone.connect('show-chrome', () => { let focus = global.stage.key_focus; if (focus == null || this.contains(focus)) clone.grab_key_focus(); this._windows.forEach(c => { if (c !== clone) c.hideOverlay(true); }); }); clone.connect('destroy', () => { this._doRemoveWindow(metaWindow); }); this._container.layout_manager.addWindow(clone, metaWindow); if (this._windows.length === 0) clone.setStackAbove(null); else clone.setStackAbove(this._windows[this._windows.length - 1]); this._windows.push(clone); return clone; } _removeWindowClone(metaWin) { // find the position of the window in our list let index = this._lookupIndex(metaWin); if (index === -1) return null; this._container.layout_manager.removeWindow(this._windows[index]); return this._windows.splice(index, 1).pop(); } _onStyleChanged() { const themeNode = this.get_theme_node(); this._container.layout_manager.spacing = themeNode.get_length('spacing'); } _onCloneSelected(clone, time) { const wsIndex = this.metaWorkspace?.index(); if (this._shouldLeaveOverview()) Main.activateWindow(clone.metaWindow, time, wsIndex); else this.metaWorkspace?.activate(time); } // Draggable target interface handleDragOver(source, _actor, _x, _y, _time) { if (source.metaWindow && !this._isMyWindow(source.metaWindow)) return DND.DragMotionResult.MOVE_DROP; if (source.app && source.app.can_open_new_window()) return DND.DragMotionResult.COPY_DROP; if (!source.app && source.shellWorkspaceLaunch) return DND.DragMotionResult.COPY_DROP; return DND.DragMotionResult.CONTINUE; } acceptDrop(source, actor, x, y, time) { let workspaceManager = global.workspace_manager; let workspaceIndex = this.metaWorkspace ? this.metaWorkspace.index() : workspaceManager.get_active_workspace_index(); if (source.metaWindow) { const window = source.metaWindow; if (this._isMyWindow(window)) return false; Main.moveWindowToMonitorAndWorkspace(window, this.monitorIndex, workspaceIndex); return true; } else if (source.app && source.app.can_open_new_window()) { if (source.animateLaunchAtPos) source.animateLaunchAtPos(actor.x, actor.y); source.app.open_new_window(workspaceIndex); return true; } else if (!source.app && source.shellWorkspaceLaunch) { // While unused in our own drag sources, shellWorkspaceLaunch allows // extensions to define custom actions for their drag sources. source.shellWorkspaceLaunch({ workspace: workspaceIndex, timestamp: time, }); return true; } return false; } get stateAdjustment() { return this._container.layout_manager.stateAdjustment; } }); 07070100000203000081A40000000000000000000000016712993F00004617000000000000000000000000000000000000002D00000000gnome-shell-47.1/js/ui/workspaceAnimation.jsimport Clutter from 'gi://Clutter'; import GObject from 'gi://GObject'; import Meta from 'gi://Meta'; import Shell from 'gi://Shell'; import St from 'gi://St'; import * as Background from './background.js'; import * as Layout from './layout.js'; import * as SwipeTracker from './swipeTracker.js'; import * as Util from '../misc/util.js'; import * as Main from './main.js'; const WINDOW_ANIMATION_TIME = 250; export const WORKSPACE_SPACING = 100; export const WorkspaceGroup = GObject.registerClass( class WorkspaceGroup extends Clutter.Actor { _init(workspace, monitor, movingWindow) { super._init({ width: monitor.width, height: monitor.height, clip_to_allocation: true, }); this._workspace = workspace; this._monitor = monitor; this._movingWindow = movingWindow; this._windowRecords = []; if (this._workspace) { this._background = new Meta.BackgroundGroup(); this.add_child(this._background); this._bgManager = new Background.BackgroundManager({ container: this._background, monitorIndex: this._monitor.index, controlPosition: false, }); this._createDesktopWindows(); } this._createWindows(); this.connect('destroy', this._onDestroy.bind(this)); global.display.connectObject('restacked', this._syncStacking.bind(this), this); } get workspace() { return this._workspace; } _shouldShowWindow(window) { if (!window.showing_on_its_workspace() || this._isDesktopWindow(window)) return false; if (window.is_override_redirect()) return false; if (!this._windowIsOnThisMonitor(window)) return false; const isSticky = window.is_on_all_workspaces() || window === this._movingWindow; // No workspace means we should show windows that are on all workspaces if (!this._workspace) return isSticky; // Otherwise only show windows that are (only) on that workspace return !isSticky && window.located_on_workspace(this._workspace); } _syncStacking() { const windowActors = global.get_window_actors().filter(w => this._shouldShowWindow(w.meta_window)); let lastRecord; const bottomActor = this._background ?? null; for (const windowActor of windowActors) { const record = this._windowRecords.find(r => r.windowActor === windowActor); this.set_child_above_sibling(record.clone, lastRecord ? lastRecord.clone : bottomActor); lastRecord = record; } } _isDesktopWindow(metaWindow) { return metaWindow.get_window_type() === Meta.WindowType.DESKTOP; } _windowIsOnThisMonitor(metawindow) { const geometry = global.display.get_monitor_geometry(this._monitor.index); const [intersects] = metawindow.get_frame_rect().intersect(geometry); return intersects; } _createDesktopWindows() { const desktopActors = global.get_window_actors().filter(w => { return this._isDesktopWindow(w.meta_window) && this._windowIsOnThisMonitor(w.meta_window); }); desktopActors.map(a => this._createClone(a)).forEach(clone => this._background.add_child(clone)); } _createWindows() { const windowActors = global.get_window_actors().filter(w => this._shouldShowWindow(w.meta_window)); windowActors.map(a => this._createClone(a)).forEach(clone => this.add_child(clone)); } _createClone(windowActor) { const clone = new Clutter.Clone({ source: windowActor, x: windowActor.x - this._monitor.x, y: windowActor.y - this._monitor.y, }); const record = {windowActor, clone}; windowActor.connectObject('destroy', () => { clone.destroy(); this._windowRecords.splice(this._windowRecords.indexOf(record), 1); }, this); this._windowRecords.push(record); return clone; } _removeWindows() { for (const record of this._windowRecords) record.clone.destroy(); this._windowRecords = []; } _onDestroy() { this._removeWindows(); if (this._workspace) this._bgManager.destroy(); } }); export const MonitorGroup = GObject.registerClass({ Properties: { 'progress': GObject.ParamSpec.double( 'progress', null, null, GObject.ParamFlags.READWRITE, -Infinity, Infinity, 0), }, }, class MonitorGroup extends St.Widget { _init(monitor, workspaceIndices, movingWindow) { super._init({ clip_to_allocation: true, style_class: 'workspace-animation', }); this._monitor = monitor; const constraint = new Layout.MonitorConstraint({index: monitor.index}); this.add_constraint(constraint); this._container = new Clutter.Actor(); this.add_child(this._container); const stickyGroup = new WorkspaceGroup(null, monitor, movingWindow); this.add_child(stickyGroup); this._workspaceGroups = []; const workspaceManager = global.workspace_manager; const vertical = workspaceManager.layout_rows === -1; const activeWorkspace = workspaceManager.get_active_workspace(); let x = 0; let y = 0; for (const i of workspaceIndices) { const ws = workspaceManager.get_workspace_by_index(i); const fullscreen = ws.list_windows().some(w => w.get_monitor() === monitor.index && w.is_fullscreen()); if (i > 0 && vertical && !fullscreen && monitor.index === Main.layoutManager.primaryIndex) { // We have to shift windows up or down by the height of the panel to prevent having a // visible gap between the windows while switching workspaces. Since fullscreen windows // hide the panel, they don't need to be shifted up or down. y -= Main.panel.height; } const group = new WorkspaceGroup(ws, monitor, movingWindow); this._workspaceGroups.push(group); this._container.add_child(group); group.set_position(x, y); if (vertical) y += this.baseDistance; else if (Clutter.get_default_text_direction() === Clutter.TextDirection.RTL) x -= this.baseDistance; else x += this.baseDistance; } this.progress = this.getWorkspaceProgress(activeWorkspace); if (monitor.index === Main.layoutManager.primaryIndex) { this._workspacesAdjustment = Main.createWorkspacesAdjustment(this); this.bind_property_full('progress', this._workspacesAdjustment, 'value', GObject.BindingFlags.SYNC_CREATE, (bind, source) => { const indices = [ workspaceIndices[Math.floor(source)], workspaceIndices[Math.ceil(source)], ]; return [true, Util.lerp(...indices, source % 1.0)]; }, null); this.connect('destroy', () => { delete this._workspacesAdjustment; }); } } get baseDistance() { const spacing = WORKSPACE_SPACING * St.ThemeContext.get_for_stage(global.stage).scale_factor; if (global.workspace_manager.layout_rows === -1) return this._monitor.height + spacing; else return this._monitor.width + spacing; } get progress() { if (global.workspace_manager.layout_rows === -1) return -this._container.y / this.baseDistance; else if (this.get_text_direction() === Clutter.TextDirection.RTL) return this._container.x / this.baseDistance; else return -this._container.x / this.baseDistance; } set progress(p) { if (global.workspace_manager.layout_rows === -1) this._container.y = -Math.round(p * this.baseDistance); else if (this.get_text_direction() === Clutter.TextDirection.RTL) this._container.x = Math.round(p * this.baseDistance); else this._container.x = -Math.round(p * this.baseDistance); this.notify('progress'); } get index() { return this._monitor.index; } getWorkspaceProgress(workspace) { const group = this._workspaceGroups.find(g => g.workspace.index() === workspace.index()); return this._getWorkspaceGroupProgress(group); } _getWorkspaceGroupProgress(group) { if (global.workspace_manager.layout_rows === -1) return group.y / this.baseDistance; else if (this.get_text_direction() === Clutter.TextDirection.RTL) return -group.x / this.baseDistance; else return group.x / this.baseDistance; } getSnapPoints() { return this._workspaceGroups.map(g => this._getWorkspaceGroupProgress(g)); } findClosestWorkspace(progress) { const distances = this.getSnapPoints().map(p => Math.abs(p - progress)); const index = distances.indexOf(Math.min(...distances)); return this._workspaceGroups[index].workspace; } _interpolateProgress(progress, monitorGroup) { if (this.index === monitorGroup.index) return progress; const points1 = monitorGroup.getSnapPoints(); const points2 = this.getSnapPoints(); const upper = points1.indexOf(points1.find(p => p >= progress)); const lower = points1.indexOf(points1.slice().reverse().find(p => p <= progress)); if (points1[upper] === points1[lower]) return points2[upper]; const t = (progress - points1[lower]) / (points1[upper] - points1[lower]); return points2[lower] + (points2[upper] - points2[lower]) * t; } updateSwipeForMonitor(progress, monitorGroup) { this.progress = this._interpolateProgress(progress, monitorGroup); } }); export class WorkspaceAnimationController { constructor() { this._movingWindow = null; this._switchData = null; Main.overview.connect('showing', () => { if (this._switchData) { if (this._switchData.gestureActivated) this._finishWorkspaceSwitch(this._switchData); this._swipeTracker.enabled = false; } }); Main.overview.connect('hiding', () => { this._swipeTracker.enabled = true; }); const swipeTracker = new SwipeTracker.SwipeTracker(global.stage, Clutter.Orientation.HORIZONTAL, Shell.ActionMode.NORMAL, {allowDrag: false}); swipeTracker.connect('begin', this._switchWorkspaceBegin.bind(this)); swipeTracker.connect('update', this._switchWorkspaceUpdate.bind(this)); swipeTracker.connect('end', this._switchWorkspaceEnd.bind(this)); this._swipeTracker = swipeTracker; global.display.bind_property('compositor-modifiers', this._swipeTracker, 'scroll-modifiers', GObject.BindingFlags.SYNC_CREATE); } _prepareWorkspaceSwitch(workspaceIndices) { if (this._switchData) return; const workspaceManager = global.workspace_manager; const nWorkspaces = workspaceManager.get_n_workspaces(); const switchData = {}; this._switchData = switchData; switchData.monitors = []; switchData.gestureActivated = false; switchData.inProgress = false; if (!workspaceIndices) workspaceIndices = [...Array(nWorkspaces).keys()]; const monitors = Meta.prefs_get_workspaces_only_on_primary() ? [Main.layoutManager.primaryMonitor] : Main.layoutManager.monitors; for (const monitor of monitors) { if (Meta.prefs_get_workspaces_only_on_primary() && monitor.index !== Main.layoutManager.primaryIndex) continue; const group = new MonitorGroup(monitor, workspaceIndices, this.movingWindow); Main.uiGroup.insert_child_above(group, global.window_group); switchData.monitors.push(group); } Meta.disable_unredirect_for_display(global.display); } _finishWorkspaceSwitch(switchData) { Meta.enable_unredirect_for_display(global.display); this._switchData = null; switchData.monitors.forEach(m => m.destroy()); this.movingWindow = null; } animateSwitch(from, to, direction, onComplete) { this._swipeTracker.enabled = false; let workspaceIndices = []; switch (direction) { case Meta.MotionDirection.UP: case Meta.MotionDirection.LEFT: case Meta.MotionDirection.UP_LEFT: case Meta.MotionDirection.UP_RIGHT: workspaceIndices = [to, from]; break; case Meta.MotionDirection.DOWN: case Meta.MotionDirection.RIGHT: case Meta.MotionDirection.DOWN_LEFT: case Meta.MotionDirection.DOWN_RIGHT: workspaceIndices = [from, to]; break; } if (Clutter.get_default_text_direction() === Clutter.TextDirection.RTL && direction !== Meta.MotionDirection.UP && direction !== Meta.MotionDirection.DOWN) workspaceIndices.reverse(); this._prepareWorkspaceSwitch(workspaceIndices); this._switchData.inProgress = true; const fromWs = global.workspace_manager.get_workspace_by_index(from); const toWs = global.workspace_manager.get_workspace_by_index(to); for (const monitorGroup of this._switchData.monitors) { monitorGroup.progress = monitorGroup.getWorkspaceProgress(fromWs); const progress = monitorGroup.getWorkspaceProgress(toWs); const params = { duration: WINDOW_ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_CUBIC, }; if (monitorGroup.index === Main.layoutManager.primaryIndex) { params.onComplete = () => { this._finishWorkspaceSwitch(this._switchData); onComplete(); this._swipeTracker.enabled = true; }; } monitorGroup.ease_property('progress', progress, params); } } canHandleScrollEvent(event) { return this._swipeTracker.canHandleScrollEvent(event); } _findMonitorGroup(monitorIndex) { return this._switchData.monitors.find(m => m.index === monitorIndex); } _switchWorkspaceBegin(tracker, monitor) { if (Meta.prefs_get_workspaces_only_on_primary() && monitor !== Main.layoutManager.primaryIndex) return; const workspaceManager = global.workspace_manager; const horiz = workspaceManager.layout_rows !== -1; tracker.orientation = horiz ? Clutter.Orientation.HORIZONTAL : Clutter.Orientation.VERTICAL; if (this._switchData && this._switchData.gestureActivated) { for (const group of this._switchData.monitors) group.remove_all_transitions(); } else { this._prepareWorkspaceSwitch(); } const monitorGroup = this._findMonitorGroup(monitor); const baseDistance = monitorGroup.baseDistance; const progress = monitorGroup.progress; const closestWs = monitorGroup.findClosestWorkspace(progress); const cancelProgress = monitorGroup.getWorkspaceProgress(closestWs); const points = monitorGroup.getSnapPoints(); this._switchData.baseMonitorGroup = monitorGroup; tracker.confirmSwipe(baseDistance, points, progress, cancelProgress); } _switchWorkspaceUpdate(tracker, progress) { if (!this._switchData) return; for (const monitorGroup of this._switchData.monitors) monitorGroup.updateSwipeForMonitor(progress, this._switchData.baseMonitorGroup); } _switchWorkspaceEnd(tracker, duration, endProgress) { if (!this._switchData) return; const switchData = this._switchData; switchData.gestureActivated = true; const newWs = switchData.baseMonitorGroup.findClosestWorkspace(endProgress); const endTime = Clutter.get_current_event_time(); for (const monitorGroup of this._switchData.monitors) { const progress = monitorGroup.getWorkspaceProgress(newWs); const params = { duration, mode: Clutter.AnimationMode.EASE_OUT_CUBIC, }; if (monitorGroup.index === Main.layoutManager.primaryIndex) { params.onComplete = () => { if (!newWs.active) newWs.activate(endTime); this._finishWorkspaceSwitch(switchData); }; } monitorGroup.ease_property('progress', progress, params); } } get gestureActive() { return this._switchData !== null && this._switchData.gestureActivated; } cancelSwitchAnimation() { if (!this._switchData) return; if (this._switchData.gestureActivated) return; this._finishWorkspaceSwitch(this._switchData); } set movingWindow(movingWindow) { this._movingWindow = movingWindow; } get movingWindow() { return this._movingWindow; } } 07070100000204000081A40000000000000000000000016712993F00000B56000000000000000000000000000000000000003100000000gnome-shell-47.1/js/ui/workspaceSwitcherPopup.jsimport Clutter from 'gi://Clutter'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import St from 'gi://St'; import * as Layout from './layout.js'; import * as Main from './main.js'; const ANIMATION_TIME = 100; const DISPLAY_TIMEOUT = 600; export const WorkspaceSwitcherPopup = GObject.registerClass( class WorkspaceSwitcherPopup extends Clutter.Actor { _init() { super._init({ offscreen_redirect: Clutter.OffscreenRedirect.ALWAYS, x_expand: true, y_expand: true, x_align: Clutter.ActorAlign.CENTER, y_align: Clutter.ActorAlign.END, }); const constraint = new Layout.MonitorConstraint({primary: true}); this.add_constraint(constraint); Main.uiGroup.add_child(this); this._timeoutId = 0; this._list = new St.BoxLayout({ style_class: 'workspace-switcher', }); this.add_child(this._list); this._redisplay(); this.hide(); let workspaceManager = global.workspace_manager; workspaceManager.connectObject( 'workspace-added', this._redisplay.bind(this), 'workspace-removed', this._redisplay.bind(this), this); this.connect('destroy', this._onDestroy.bind(this)); } _redisplay() { let workspaceManager = global.workspace_manager; this._list.destroy_all_children(); for (let i = 0; i < workspaceManager.n_workspaces; i++) { const indicator = new St.Bin({ style_class: 'ws-switcher-indicator', }); if (i === this._activeWorkspaceIndex) indicator.add_style_pseudo_class('active'); this._list.add_child(indicator); } } display(activeWorkspaceIndex) { this._activeWorkspaceIndex = activeWorkspaceIndex; this._redisplay(); if (this._timeoutId !== 0) GLib.source_remove(this._timeoutId); this._timeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, DISPLAY_TIMEOUT, this._onTimeout.bind(this)); GLib.Source.set_name_by_id(this._timeoutId, '[gnome-shell] this._onTimeout'); const duration = this.visible ? 0 : ANIMATION_TIME; this.show(); this.opacity = 0; this.ease({ opacity: 255, duration, mode: Clutter.AnimationMode.EASE_OUT_QUAD, }); } _onTimeout() { GLib.source_remove(this._timeoutId); this._timeoutId = 0; this.ease({ opacity: 0.0, duration: ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => this.destroy(), }); return GLib.SOURCE_REMOVE; } _onDestroy() { if (this._timeoutId) GLib.source_remove(this._timeoutId); this._timeoutId = 0; } }); 07070100000205000081A40000000000000000000000016712993F0000C1B4000000000000000000000000000000000000002D00000000gnome-shell-47.1/js/ui/workspaceThumbnail.jsimport Clutter from 'gi://Clutter'; import Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import Meta from 'gi://Meta'; import Shell from 'gi://Shell'; import St from 'gi://St'; import Graphene from 'gi://Graphene'; import * as DND from './dnd.js'; import * as Main from './main.js'; import {TransientSignalHolder} from '../misc/signalTracker.js'; import * as Util from '../misc/util.js'; import * as Workspace from './workspace.js'; const NUM_WORKSPACES_THRESHOLD = 2; // The maximum size of a thumbnail is 5% the width and height of the screen export const MAX_THUMBNAIL_SCALE = 0.05; const RESCALE_ANIMATION_TIME = 200; const SLIDE_ANIMATION_TIME = 200; // When we create workspaces by dragging, we add a "cut" into the top and // bottom of each workspace so that the user doesn't have to hit the // placeholder exactly. const WORKSPACE_CUT_SIZE = 10; const WORKSPACE_KEEP_ALIVE_TIME = 100; const MUTTER_SCHEMA = 'org.gnome.mutter'; /* A layout manager that requests size only for primary_actor, but then allocates all using a fixed layout */ const PrimaryActorLayout = GObject.registerClass( class PrimaryActorLayout extends Clutter.FixedLayout { _init(primaryActor) { super._init(); this.primaryActor = primaryActor; } vfunc_get_preferred_width(container, forHeight) { return this.primaryActor.get_preferred_width(forHeight); } vfunc_get_preferred_height(container, forWidth) { return this.primaryActor.get_preferred_height(forWidth); } }); export const WindowClone = GObject.registerClass({ Signals: { 'drag-begin': {}, 'drag-cancelled': {}, 'drag-end': {}, 'selected': {param_types: [GObject.TYPE_UINT]}, }, }, class WindowClone extends Clutter.Actor { _init(realWindow) { let clone = new Clutter.Clone({source: realWindow}); super._init({ layout_manager: new PrimaryActorLayout(clone), reactive: true, }); this._delegate = this; this.add_child(clone); this.realWindow = realWindow; this.metaWindow = realWindow.meta_window; this.realWindow.connectObject( 'notify::position', this._onPositionChanged.bind(this), 'destroy', () => { // First destroy the clone and then destroy everything // This will ensure that we never see it in the _disconnectSignals loop clone.destroy(); this.destroy(); }, this); this._onPositionChanged(); this.connect('destroy', this._onDestroy.bind(this)); this._draggable = DND.makeDraggable(this, { restoreOnSuccess: true, dragActorMaxSize: Workspace.WINDOW_DND_SIZE, dragActorOpacity: Workspace.DRAGGING_WINDOW_OPACITY, }); this._draggable.connect('drag-begin', this._onDragBegin.bind(this)); this._draggable.connect('drag-cancelled', this._onDragCancelled.bind(this)); this._draggable.connect('drag-end', this._onDragEnd.bind(this)); this.inDrag = false; const clickAction = new Clutter.ClickAction(); clickAction.connect('clicked', () => this.emit('selected', Clutter.get_current_event_time())); this._draggable.addClickAction(clickAction); let iter = win => { let actor = win.get_compositor_private(); if (!actor) return false; if (!win.is_attached_dialog()) return false; this._doAddAttachedDialog(win, actor); win.foreach_transient(iter); return true; }; this.metaWindow.foreach_transient(iter); } // Find the actor just below us, respecting reparenting done // by DND code getActualStackAbove() { if (this._stackAbove == null) return null; if (this.inDrag) { if (this._stackAbove._delegate) return this._stackAbove._delegate.getActualStackAbove(); else return null; } else { return this._stackAbove; } } setStackAbove(actor) { this._stackAbove = actor; // Don't apply the new stacking now, it will be applied // when dragging ends and window are stacked again if (actor.inDrag) return; let parent = this.get_parent(); let actualAbove = this.getActualStackAbove(); if (actualAbove == null) parent.set_child_below_sibling(this, null); else parent.set_child_above_sibling(this, actualAbove); } addAttachedDialog(win) { this._doAddAttachedDialog(win, win.get_compositor_private()); } _doAddAttachedDialog(metaDialog, realDialog) { let clone = new Clutter.Clone({source: realDialog}); this._updateDialogPosition(realDialog, clone); realDialog.connectObject( 'notify::position', dialog => this._updateDialogPosition(dialog, clone), 'destroy', () => clone.destroy(), this); this.add_child(clone); } _updateDialogPosition(realDialog, cloneDialog) { let metaDialog = realDialog.meta_window; let dialogRect = metaDialog.get_frame_rect(); let rect = this.metaWindow.get_frame_rect(); cloneDialog.set_position(dialogRect.x - rect.x, dialogRect.y - rect.y); } _onPositionChanged() { this.set_position(this.realWindow.x, this.realWindow.y); } _onDestroy() { this._delegate = null; if (this.inDrag) { this.emit('drag-end'); this.inDrag = false; } } _onDragBegin(_draggable, _time) { this.inDrag = true; this.emit('drag-begin'); } _onDragCancelled(_draggable, _time) { this.emit('drag-cancelled'); } _onDragEnd(_draggable, _time, _snapback) { this.inDrag = false; // We may not have a parent if DnD completed successfully, in // which case our clone will shortly be destroyed and replaced // with a new one on the target workspace. let parent = this.get_parent(); if (parent !== null) { if (this._stackAbove == null) parent.set_child_below_sibling(this, null); else parent.set_child_above_sibling(this, this._stackAbove); } this.emit('drag-end'); } }); export const ThumbnailState = { NEW: 0, EXPANDING: 1, EXPANDED: 2, ANIMATING_IN: 3, NORMAL: 4, REMOVING: 5, ANIMATING_OUT: 6, ANIMATED_OUT: 7, COLLAPSING: 8, DESTROYED: 9, }; export const WorkspaceThumbnail = GObject.registerClass({ Properties: { 'collapse-fraction': GObject.ParamSpec.double( 'collapse-fraction', null, null, GObject.ParamFlags.READWRITE, 0, 1, 0), 'slide-position': GObject.ParamSpec.double( 'slide-position', null, null, GObject.ParamFlags.READWRITE, 0, 1, 0), }, }, class WorkspaceThumbnail extends St.Widget { /** * @param {Meta.Workspace} metaWorkspace * @param {number} monitorIndex */ _init(metaWorkspace, monitorIndex) { super._init({ clip_to_allocation: true, style_class: 'workspace-thumbnail', pivot_point: new Graphene.Point({x: 0.5, y: 0.5}), }); this._delegate = this; this.metaWorkspace = metaWorkspace; this.monitorIndex = monitorIndex; this._removed = false; this._viewport = new Clutter.Actor(); this.add_child(this._viewport); this._contents = new Clutter.Actor(); this._viewport.add_child(this._contents); this.connect('destroy', this._onDestroy.bind(this)); let workArea = Main.layoutManager.getWorkAreaForMonitor(this.monitorIndex); this.setPorthole(workArea.x, workArea.y, workArea.width, workArea.height); let windows = global.get_window_actors().filter(actor => { let win = actor.meta_window; return win.located_on_workspace(metaWorkspace); }); // Create clones for windows that should be visible in the Overview this._windows = []; this._allWindows = []; for (let i = 0; i < windows.length; i++) { windows[i].meta_window.connectObject('notify::minimized', this._updateMinimized.bind(this), this); this._allWindows.push(windows[i].meta_window); if (this._isMyWindow(windows[i]) && this._isOverviewWindow(windows[i])) this._addWindowClone(windows[i]); } // Track window changes this.metaWorkspace.connectObject( 'window-added', this._windowAdded.bind(this), 'window-removed', this._windowRemoved.bind(this), this); global.display.connectObject( 'window-entered-monitor', this._windowEnteredMonitor.bind(this), 'window-left-monitor', this._windowLeftMonitor.bind(this), this); this.state = ThumbnailState.NORMAL; this._slidePosition = 0; // Fully slid in this._collapseFraction = 0; // Not collapsed } setPorthole(x, y, width, height) { this._viewport.set_size(width, height); this._contents.set_position(-x, -y); } _lookupIndex(metaWindow) { return this._windows.findIndex(w => w.metaWindow === metaWindow); } syncStacking(stackIndices) { this._windows.sort((a, b) => { let indexA = stackIndices[a.metaWindow.get_stable_sequence()]; let indexB = stackIndices[b.metaWindow.get_stable_sequence()]; return indexA - indexB; }); for (let i = 1; i < this._windows.length; i++) { let clone = this._windows[i]; const previousClone = this._windows[i - 1]; clone.setStackAbove(previousClone); } } set slidePosition(slidePosition) { if (this._slidePosition === slidePosition) return; const scale = Util.lerp(1, 0.75, slidePosition); this.set_scale(scale, scale); this.opacity = Util.lerp(255, 0, slidePosition); this._slidePosition = slidePosition; this.notify('slide-position'); this.queue_relayout(); } get slidePosition() { return this._slidePosition; } set collapseFraction(collapseFraction) { if (this._collapseFraction === collapseFraction) return; this._collapseFraction = collapseFraction; this.notify('collapse-fraction'); this.queue_relayout(); } get collapseFraction() { return this._collapseFraction; } _doRemoveWindow(metaWin) { let clone = this._removeWindowClone(metaWin); if (clone) clone.destroy(); } _doAddWindow(metaWin) { if (this._removed) return; let win = metaWin.get_compositor_private(); if (!win) { // Newly-created windows are added to a workspace before // the compositor finds out about them... let id = GLib.idle_add(GLib.PRIORITY_DEFAULT, () => { if (!this._removed && metaWin.get_compositor_private() && metaWin.get_workspace() === this.metaWorkspace) this._doAddWindow(metaWin); return GLib.SOURCE_REMOVE; }); GLib.Source.set_name_by_id(id, '[gnome-shell] this._doAddWindow'); return; } if (!this._allWindows.includes(metaWin)) { metaWin.connectObject('notify::minimized', this._updateMinimized.bind(this), this); this._allWindows.push(metaWin); } // We might have the window in our list already if it was on all workspaces and // now was moved to this workspace if (this._lookupIndex(metaWin) !== -1) return; if (!this._isMyWindow(win)) return; if (this._isOverviewWindow(win)) { this._addWindowClone(win); } else if (metaWin.is_attached_dialog()) { let parent = metaWin.get_transient_for(); while (parent.is_attached_dialog()) parent = parent.get_transient_for(); let idx = this._lookupIndex(parent); if (idx < 0) { // parent was not created yet, it will take care // of the dialog when created return; } let clone = this._windows[idx]; clone.addAttachedDialog(metaWin); } } _windowAdded(metaWorkspace, metaWin) { this._doAddWindow(metaWin); } _windowRemoved(metaWorkspace, metaWin) { let index = this._allWindows.indexOf(metaWin); if (index !== -1) { metaWin.disconnectObject(this); this._allWindows.splice(index, 1); } this._doRemoveWindow(metaWin); } _windowEnteredMonitor(metaDisplay, monitorIndex, metaWin) { if (monitorIndex === this.monitorIndex) this._doAddWindow(metaWin); } _windowLeftMonitor(metaDisplay, monitorIndex, metaWin) { if (monitorIndex === this.monitorIndex) this._doRemoveWindow(metaWin); } _updateMinimized(metaWin) { if (metaWin.minimized) this._doRemoveWindow(metaWin); else this._doAddWindow(metaWin); } workspaceRemoved() { if (this._removed) return; this._removed = true; this.metaWorkspace.disconnectObject(this); global.display.disconnectObject(this); this._allWindows.forEach(w => w.disconnectObject(this)); } _onDestroy() { this.workspaceRemoved(); this._windows = []; } // Tests if @actor belongs to this workspace and monitor _isMyWindow(actor) { let win = actor.meta_window; return win.located_on_workspace(this.metaWorkspace) && (win.get_monitor() === this.monitorIndex); } // Tests if @win should be shown in the Overview _isOverviewWindow(win) { return !win.get_meta_window().skip_taskbar && win.get_meta_window().showing_on_its_workspace(); } // Create a clone of a (non-desktop) window and add it to the window list _addWindowClone(win) { let clone = new WindowClone(win); clone.connect('selected', (o, time) => { this.activate(time); }); clone.connect('drag-begin', () => { Main.overview.beginWindowDrag(clone.metaWindow); }); clone.connect('drag-cancelled', () => { Main.overview.cancelledWindowDrag(clone.metaWindow); }); clone.connect('drag-end', () => { Main.overview.endWindowDrag(clone.metaWindow); }); clone.connect('destroy', () => { this._removeWindowClone(clone.metaWindow); }); this._contents.add_child(clone); if (this._windows.length > 0) clone.setStackAbove(this._windows[this._windows.length - 1]); this._windows.push(clone); return clone; } _removeWindowClone(metaWin) { // find the position of the window in our list let index = this._lookupIndex(metaWin); if (index === -1) return null; return this._windows.splice(index, 1).pop(); } activate(time) { if (this.state > ThumbnailState.NORMAL) return; // a click on the already current workspace should go back to the main view if (this.metaWorkspace.active) Main.overview.hide(); else this.metaWorkspace.activate(time); } // Draggable target interface used only by ThumbnailsBox handleDragOverInternal(source, actor, time) { if (source === Main.xdndHandler) { this.metaWorkspace.activate(time); return DND.DragMotionResult.CONTINUE; } if (this.state > ThumbnailState.NORMAL) return DND.DragMotionResult.CONTINUE; if (source.metaWindow && !this._isMyWindow(source.metaWindow.get_compositor_private())) return DND.DragMotionResult.MOVE_DROP; if (source.app && source.app.can_open_new_window()) return DND.DragMotionResult.COPY_DROP; if (!source.app && source.shellWorkspaceLaunch) return DND.DragMotionResult.COPY_DROP; return DND.DragMotionResult.CONTINUE; } acceptDropInternal(source, actor, time) { if (this.state > ThumbnailState.NORMAL) return false; if (source.metaWindow) { let win = source.metaWindow.get_compositor_private(); if (this._isMyWindow(win)) return false; let metaWindow = win.get_meta_window(); Main.moveWindowToMonitorAndWorkspace(metaWindow, this.monitorIndex, this.metaWorkspace.index()); return true; } else if (source.app && source.app.can_open_new_window()) { if (source.animateLaunchAtPos) source.animateLaunchAtPos(actor.x, actor.y); source.app.open_new_window(this.metaWorkspace.index()); return true; } else if (!source.app && source.shellWorkspaceLaunch) { // While unused in our own drag sources, shellWorkspaceLaunch allows // extensions to define custom actions for their drag sources. source.shellWorkspaceLaunch({ workspace: this.metaWorkspace.index(), timestamp: time, }); return true; } return false; } setScale(scaleX, scaleY) { this._viewport.set_scale(scaleX, scaleY); } }); export const ThumbnailsBox = GObject.registerClass({ Properties: { 'expand-fraction': GObject.ParamSpec.double( 'expand-fraction', null, null, GObject.ParamFlags.READWRITE, 0, 1, 1), 'scale': GObject.ParamSpec.double( 'scale', null, null, GObject.ParamFlags.READWRITE, 0, Infinity, 0), 'should-show': GObject.ParamSpec.boolean( 'should-show', null, null, GObject.ParamFlags.READABLE, true), }, }, class ThumbnailsBox extends St.Widget { _init(scrollAdjustment, monitorIndex) { super._init({ style_class: 'workspace-thumbnails', reactive: true, x_align: Clutter.ActorAlign.CENTER, pivot_point: new Graphene.Point({x: 0.5, y: 0.5}), }); this._delegate = this; let indicator = new St.Bin({style_class: 'workspace-thumbnail-indicator'}); // We don't want the indicator to affect drag-and-drop Shell.util_set_hidden_from_pick(indicator, true); this._indicator = indicator; this.add_child(indicator); this._monitorIndex = monitorIndex; this._dropWorkspace = -1; this._dropPlaceholderPos = -1; this._dropPlaceholder = new St.Bin({style_class: 'placeholder'}); this.add_child(this._dropPlaceholder); this._spliceIndex = -1; this._maxThumbnailScale = MAX_THUMBNAIL_SCALE; this._targetScale = 0; this._scale = 0; this._expandFraction = 1; this._updateStateId = 0; this._pendingScaleUpdate = false; this._animatingIndicator = false; this._shouldShow = true; this._stateCounts = {}; for (let key in ThumbnailState) this._stateCounts[ThumbnailState[key]] = 0; this._thumbnails = []; const clickAction = new Clutter.ClickAction(); clickAction.connect('clicked', () => { this._activateThumbnailAtPoint( ...clickAction.get_coords(), Clutter.get_current_event_time()); }); this.add_action(clickAction); Main.overview.connectObject( 'showing', () => this._createThumbnails(), 'hidden', () => this._destroyThumbnails(), 'item-drag-begin', () => this._onDragBegin(), 'item-drag-end', () => this._onDragEnd(), 'item-drag-cancelled', () => this._onDragCancelled(), 'window-drag-begin', () => this._onDragBegin(), 'window-drag-end', () => this._onDragEnd(), 'window-drag-cancelled', () => this._onDragCancelled(), this); this._settings = new Gio.Settings({schema_id: MUTTER_SCHEMA}); this._settings.connect('changed::dynamic-workspaces', () => this._updateShouldShow()); this._updateShouldShow(); Main.layoutManager.connectObject('monitors-changed', () => { this._destroyThumbnails(); if (Main.overview.visible) this._createThumbnails(); }, this); // The porthole is the part of the screen we're showing in the thumbnails global.display.connectObject('workareas-changed', () => this._updatePorthole(), this); this._updatePorthole(); this.connect('notify::visible', () => { if (!this.visible) this._queueUpdateStates(); }); this.connect('destroy', () => this._onDestroy()); this._scrollAdjustment = scrollAdjustment; this._scrollAdjustment.connectObject('notify::value', () => this._updateIndicator(), this); } get maxThumbnailScale() { return this._maxThumbnailScale; } setMonitorIndex(monitorIndex) { this._monitorIndex = monitorIndex; } _onDestroy() { this._destroyThumbnails(); this._unqueueUpdateStates(); if (this._settings) this._settings.run_dispose(); this._settings = null; } _updateShouldShow() { const {nWorkspaces} = global.workspace_manager; const shouldShow = this._settings.get_boolean('dynamic-workspaces') ? nWorkspaces > NUM_WORKSPACES_THRESHOLD : nWorkspaces > 1; if (this._shouldShow === shouldShow) return; this._shouldShow = shouldShow; this.notify('should-show'); } _updateIndicator() { const {value} = this._scrollAdjustment; const {workspaceManager} = global; const activeIndex = workspaceManager.get_active_workspace_index(); this._animatingIndicator = value !== activeIndex; if (!this._animatingIndicator) this._queueUpdateStates(); this.queue_relayout(); } _activateThumbnailAtPoint(stageX, stageY, time) { const [r_, x] = this.transform_stage_point(stageX, stageY); const thumbnail = this._thumbnails.find(t => x >= t.x && x <= t.x + t.width); if (thumbnail) thumbnail.activate(time); } _onDragBegin() { this._dragCancelled = false; this._dragMonitor = { dragMotion: this._onDragMotion.bind(this), }; DND.addDragMonitor(this._dragMonitor); } _onDragEnd() { if (this._dragCancelled) return; this._endDrag(); } _onDragCancelled() { this._dragCancelled = true; this._endDrag(); } _endDrag() { this._clearDragPlaceholder(); DND.removeDragMonitor(this._dragMonitor); } _onDragMotion(dragEvent) { if (!this.contains(dragEvent.targetActor)) this._onLeave(); return DND.DragMotionResult.CONTINUE; } _onLeave() { this._clearDragPlaceholder(); } _clearDragPlaceholder() { if (this._dropPlaceholderPos === -1) return; this._dropPlaceholderPos = -1; this.queue_relayout(); } _getPlaceholderTarget(index, spacing, rtl) { const workspace = this._thumbnails[index]; let targetX1; let targetX2; if (rtl) { const baseX = workspace.x + workspace.width; targetX1 = baseX - WORKSPACE_CUT_SIZE; targetX2 = baseX + spacing + WORKSPACE_CUT_SIZE; } else { targetX1 = workspace.x - spacing - WORKSPACE_CUT_SIZE; targetX2 = workspace.x + WORKSPACE_CUT_SIZE; } if (index === 0) { if (rtl) targetX2 -= spacing + WORKSPACE_CUT_SIZE; else targetX1 += spacing + WORKSPACE_CUT_SIZE; } if (index === this._dropPlaceholderPos) { const placeholderWidth = this._dropPlaceholder.get_width() + spacing; if (rtl) targetX2 += placeholderWidth; else targetX1 -= placeholderWidth; } return [targetX1, targetX2]; } _withinWorkspace(x, index, rtl) { const length = this._thumbnails.length; const workspace = this._thumbnails[index]; let workspaceX1 = workspace.x + WORKSPACE_CUT_SIZE; let workspaceX2 = workspace.x + workspace.width - WORKSPACE_CUT_SIZE; if (index === length - 1) { if (rtl) workspaceX1 -= WORKSPACE_CUT_SIZE; else workspaceX2 += WORKSPACE_CUT_SIZE; } return x > workspaceX1 && x <= workspaceX2; } // Draggable target interface handleDragOver(source, actor, x, y, time) { if (!source.metaWindow && (!source.app || !source.app.can_open_new_window()) && (source.app || !source.shellWorkspaceLaunch) && source !== Main.xdndHandler) return DND.DragMotionResult.CONTINUE; const rtl = Clutter.get_default_text_direction() === Clutter.TextDirection.RTL; let canCreateWorkspaces = Meta.prefs_get_dynamic_workspaces(); let spacing = this.get_theme_node().get_length('spacing'); this._dropWorkspace = -1; let placeholderPos = -1; let length = this._thumbnails.length; for (let i = 0; i < length; i++) { const index = rtl ? length - i - 1 : i; if (canCreateWorkspaces && source !== Main.xdndHandler) { const [targetStart, targetEnd] = this._getPlaceholderTarget(index, spacing, rtl); if (x > targetStart && x <= targetEnd) { placeholderPos = index; break; } } if (this._withinWorkspace(x, index, rtl)) { this._dropWorkspace = index; break; } } if (this._dropPlaceholderPos !== placeholderPos) { this._dropPlaceholderPos = placeholderPos; this.queue_relayout(); } if (this._dropWorkspace !== -1) return this._thumbnails[this._dropWorkspace].handleDragOverInternal(source, actor, time); else if (this._dropPlaceholderPos !== -1) return source.metaWindow ? DND.DragMotionResult.MOVE_DROP : DND.DragMotionResult.COPY_DROP; else return DND.DragMotionResult.CONTINUE; } acceptDrop(source, actor, x, y, time) { if (this._dropWorkspace !== -1) { return this._thumbnails[this._dropWorkspace].acceptDropInternal(source, actor, time); } else if (this._dropPlaceholderPos !== -1) { if (!source.metaWindow && (!source.app || !source.app.can_open_new_window()) && (source.app || !source.shellWorkspaceLaunch)) return false; let isWindow = !!source.metaWindow; let newWorkspaceIndex; [newWorkspaceIndex, this._dropPlaceholderPos] = [this._dropPlaceholderPos, -1]; this._spliceIndex = newWorkspaceIndex; Main.wm.insertWorkspace(newWorkspaceIndex); if (isWindow) { // Move the window to our monitor first if necessary. let thumbMonitor = this._thumbnails[newWorkspaceIndex].monitorIndex; Main.moveWindowToMonitorAndWorkspace(source.metaWindow, thumbMonitor, newWorkspaceIndex, true); } else if (source.app && source.app.can_open_new_window()) { if (source.animateLaunchAtPos) source.animateLaunchAtPos(actor.x, actor.y); source.app.open_new_window(newWorkspaceIndex); } else if (!source.app && source.shellWorkspaceLaunch) { // While unused in our own drag sources, shellWorkspaceLaunch allows // extensions to define custom actions for their drag sources. source.shellWorkspaceLaunch({ workspace: newWorkspaceIndex, timestamp: time, }); } if (source.app || (!source.app && source.shellWorkspaceLaunch)) { // This new workspace will be automatically removed if the application fails // to open its first window within some time, as tracked by Shell.WindowTracker. // Here, we only add a very brief timeout to avoid the _immediate_ removal of the // workspace while we wait for the startup sequence to load. let workspaceManager = global.workspace_manager; Main.wm.keepWorkspaceAlive(workspaceManager.get_workspace_by_index(newWorkspaceIndex), WORKSPACE_KEEP_ALIVE_TIME); } // Start the animation on the workspace (which is actually // an old one which just became empty) let thumbnail = this._thumbnails[newWorkspaceIndex]; this._setThumbnailState(thumbnail, ThumbnailState.NEW); thumbnail.slide_position = 1; thumbnail.collapse_fraction = 1; this._queueUpdateStates(); return true; } else { return false; } } _createThumbnails() { if (this._thumbnails.length > 0) return; const {workspaceManager} = global; this._transientSignalHolder = new TransientSignalHolder(this); workspaceManager.connectObject( 'notify::n-workspaces', this._workspacesChanged.bind(this), 'active-workspace-changed', () => this._updateIndicator(), 'workspaces-reordered', () => { this._thumbnails.sort((a, b) => { return a.metaWorkspace.index() - b.metaWorkspace.index(); }); this.queue_relayout(); }, this._transientSignalHolder); Main.overview.connectObject('windows-restacked', this._syncStacking.bind(this), this._transientSignalHolder); this._targetScale = 0; this._scale = 0; this._pendingScaleUpdate = false; this._unqueueUpdateStates(); this._stateCounts = {}; for (let key in ThumbnailState) this._stateCounts[ThumbnailState[key]] = 0; this.addThumbnails(0, workspaceManager.n_workspaces); this._updateShouldShow(); } _destroyThumbnails() { if (this._thumbnails.length === 0) return; this._transientSignalHolder.destroy(); delete this._transientSignalHolder; for (let w = 0; w < this._thumbnails.length; w++) this._thumbnails[w].destroy(); this._thumbnails = []; } _workspacesChanged() { let validThumbnails = this._thumbnails.filter(t => t.state <= ThumbnailState.NORMAL); let workspaceManager = global.workspace_manager; let oldNumWorkspaces = validThumbnails.length; let newNumWorkspaces = workspaceManager.n_workspaces; if (newNumWorkspaces > oldNumWorkspaces) { this.addThumbnails(oldNumWorkspaces, newNumWorkspaces - oldNumWorkspaces); } else { let removedIndex; let removedNum = oldNumWorkspaces - newNumWorkspaces; for (let w = 0; w < oldNumWorkspaces; w++) { let metaWorkspace = workspaceManager.get_workspace_by_index(w); if (this._thumbnails[w].metaWorkspace !== metaWorkspace) { removedIndex = w; break; } } this.removeThumbnails(removedIndex, removedNum); } this._updateShouldShow(); } addThumbnails(start, count) { let workspaceManager = global.workspace_manager; for (let k = start; k < start + count; k++) { let metaWorkspace = workspaceManager.get_workspace_by_index(k); let thumbnail = new WorkspaceThumbnail(metaWorkspace, this._monitorIndex); thumbnail.setPorthole( this._porthole.x, this._porthole.y, this._porthole.width, this._porthole.height); this._thumbnails.push(thumbnail); this.add_child(thumbnail); if (this._shouldShow && start > 0 && this._spliceIndex === -1) { // not the initial fill, and not splicing via DND thumbnail.state = ThumbnailState.NEW; thumbnail.slide_position = 1; // start slid out thumbnail.collapse_fraction = 1; // start fully collapsed this._haveNewThumbnails = true; } else { thumbnail.state = ThumbnailState.NORMAL; } this._stateCounts[thumbnail.state]++; } this._queueUpdateStates(); // The thumbnails indicator actually needs to be on top of the thumbnails this.set_child_above_sibling(this._indicator, null); // Clear the splice index, we got the message this._spliceIndex = -1; } removeThumbnails(start, count) { let currentPos = 0; for (let k = 0; k < this._thumbnails.length; k++) { let thumbnail = this._thumbnails[k]; if (thumbnail.state > ThumbnailState.NORMAL) continue; if (currentPos >= start && currentPos < start + count) { thumbnail.workspaceRemoved(); this._setThumbnailState(thumbnail, ThumbnailState.REMOVING); } currentPos++; } this._queueUpdateStates(); } _syncStacking(overview, stackIndices) { for (let i = 0; i < this._thumbnails.length; i++) this._thumbnails[i].syncStacking(stackIndices); } set scale(scale) { if (this._scale === scale) return; this._scale = scale; this.notify('scale'); this.queue_relayout(); } get scale() { return this._scale; } _setThumbnailState(thumbnail, state) { this._stateCounts[thumbnail.state]--; thumbnail.state = state; this._stateCounts[thumbnail.state]++; } _iterateStateThumbnails(state, callback) { if (this._stateCounts[state] === 0) return; for (let i = 0; i < this._thumbnails.length; i++) { if (this._thumbnails[i].state === state) callback.call(this, this._thumbnails[i]); } } _updateStates() { this._updateStateId = 0; // If we are animating the indicator, wait if (this._animatingIndicator) return; // Likewise if we are in the process of hiding if (!this._shouldShow && this.visible) return; // Then slide out any thumbnails that have been destroyed this._iterateStateThumbnails(ThumbnailState.REMOVING, thumbnail => { this._setThumbnailState(thumbnail, ThumbnailState.ANIMATING_OUT); thumbnail.ease_property('slide-position', 1, { duration: SLIDE_ANIMATION_TIME, mode: Clutter.AnimationMode.LINEAR, onComplete: () => { this._setThumbnailState(thumbnail, ThumbnailState.ANIMATED_OUT); this._queueUpdateStates(); }, }); }); // As long as things are sliding out, don't proceed if (this._stateCounts[ThumbnailState.ANIMATING_OUT] > 0) return; // Once that's complete, we can start scaling to the new size, // collapse any removed thumbnails and expand added ones this._iterateStateThumbnails(ThumbnailState.ANIMATED_OUT, thumbnail => { this._setThumbnailState(thumbnail, ThumbnailState.COLLAPSING); thumbnail.ease_property('collapse-fraction', 1, { duration: RESCALE_ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => { this._stateCounts[thumbnail.state]--; thumbnail.state = ThumbnailState.DESTROYED; let index = this._thumbnails.indexOf(thumbnail); this._thumbnails.splice(index, 1); thumbnail.destroy(); this._queueUpdateStates(); }, }); }); this._iterateStateThumbnails(ThumbnailState.NEW, thumbnail => { this._setThumbnailState(thumbnail, ThumbnailState.EXPANDING); thumbnail.ease_property('collapse-fraction', 0, { duration: SLIDE_ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => { this._setThumbnailState(thumbnail, ThumbnailState.EXPANDED); this._queueUpdateStates(); }, }); }); if (this._pendingScaleUpdate) { this.ease_property('scale', this._targetScale, { mode: Clutter.AnimationMode.EASE_OUT_QUAD, duration: RESCALE_ANIMATION_TIME, onComplete: () => this._queueUpdateStates(), }); this._pendingScaleUpdate = false; } // Wait until that's done if (this._scale !== this._targetScale || this._stateCounts[ThumbnailState.COLLAPSING] > 0 || this._stateCounts[ThumbnailState.EXPANDING] > 0) return; // And then slide in any new thumbnails this._iterateStateThumbnails(ThumbnailState.EXPANDED, thumbnail => { this._setThumbnailState(thumbnail, ThumbnailState.ANIMATING_IN); thumbnail.ease_property('slide-position', 0, { duration: SLIDE_ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => { this._setThumbnailState(thumbnail, ThumbnailState.NORMAL); }, }); }); } _queueUpdateStates() { if (this._updateStateId > 0) return; const laters = global.compositor.get_laters(); this._updateStateId = laters.add( Meta.LaterType.BEFORE_REDRAW, () => this._updateStates()); } _unqueueUpdateStates() { if (this._updateStateId) { const laters = global.compositor.get_laters(); laters.remove(this._updateStateId); } this._updateStateId = 0; } vfunc_get_preferred_height(forWidth) { let themeNode = this.get_theme_node(); forWidth = themeNode.adjust_for_width(forWidth); let spacing = themeNode.get_length('spacing'); let nWorkspaces = this._thumbnails.length; let totalSpacing = (nWorkspaces - 1) * spacing; const avail = forWidth - totalSpacing; let scale = (avail / nWorkspaces) / this._porthole.width; scale = Math.min(scale, this._maxThumbnailScale); const height = Math.round(this._porthole.height * scale); return themeNode.adjust_preferred_height(height, height); } vfunc_get_preferred_width(_forHeight) { // Note that for getPreferredHeight/Width we cheat a bit and skip propagating // the size request to our children because we know how big they are and know // that the actors aren't depending on the virtual functions being called. let themeNode = this.get_theme_node(); let spacing = themeNode.get_length('spacing'); let nWorkspaces = this._thumbnails.length; let totalSpacing = (nWorkspaces - 1) * spacing; const naturalWidth = this._thumbnails.reduce((accumulator, thumbnail, index) => { let workspaceSpacing = 0; if (index > 0) workspaceSpacing += spacing / 2; if (index < this._thumbnails.length - 1) workspaceSpacing += spacing / 2; const progress = 1 - thumbnail.collapse_fraction; const width = (this._porthole.width * this._maxThumbnailScale + workspaceSpacing) * progress; return accumulator + width; }, 0); return themeNode.adjust_preferred_width(totalSpacing, naturalWidth); } _updatePorthole() { if (!Main.layoutManager.monitors[this._monitorIndex]) { const {x, y, width, height} = global.stage; this._porthole = {x, y, width, height}; } else { this._porthole = Main.layoutManager.getWorkAreaForMonitor(this._monitorIndex); } this.queue_relayout(); } vfunc_allocate(box) { this.set_allocation(box); let rtl = Clutter.get_default_text_direction() === Clutter.TextDirection.RTL; if (this._thumbnails.length === 0) // not visible return; let themeNode = this.get_theme_node(); box = themeNode.get_content_box(box); const portholeWidth = this._porthole.width; const portholeHeight = this._porthole.height; const spacing = themeNode.get_length('spacing'); const nWorkspaces = this._thumbnails.length; // Compute the scale we'll need once everything is updated, // unless we are currently transitioning if (this._expandFraction === 0 || this._expandFraction === 1) { const [, natWidth] = this.get_preferred_width(-1); const [, natHeight] = this.get_preferred_height(natWidth); const totalSpacing = (nWorkspaces - 1) * spacing; const availableWidth = (box.get_width() - totalSpacing) / nWorkspaces; const availableHeight = Math.min(natHeight, portholeHeight * this.maxThumbnailScale) - themeNode.get_vertical_padding() - themeNode.get_border_width(St.Side.TOP) - themeNode.get_border_width(St.Side.BOTTOM); const hScale = availableWidth / portholeWidth; const vScale = availableHeight / portholeHeight; const newScale = Math.min(hScale, vScale); if (newScale !== this._targetScale) { if (this._targetScale > 0) { // We don't ease immediately because we need to observe the // ordering in queueUpdateStates - if workspaces have been // removed we need to slide them out as the first thing. this._targetScale = newScale; this._pendingScaleUpdate = true; } else { this._targetScale = this._scale = newScale; } this._queueUpdateStates(); } } const ratio = portholeWidth / portholeHeight; const thumbnailFullHeight = Math.round(portholeHeight * this._scale); const thumbnailWidth = Math.round(thumbnailFullHeight * ratio); const thumbnailHeight = thumbnailFullHeight * this._expandFraction; const roundedVScale = thumbnailHeight / portholeHeight; // We always request size for maxThumbnailScale, distribute // space evently if we use smaller thumbnails const extraWidth = (this._maxThumbnailScale * portholeWidth - thumbnailWidth) * nWorkspaces; box.x1 += Math.round(extraWidth / 2); box.x2 -= Math.round(extraWidth / 2); let indicatorValue = this._scrollAdjustment.value; let indicatorUpperWs = Math.ceil(indicatorValue); let indicatorLowerWs = Math.floor(indicatorValue); let indicatorLowerX1 = 0; let indicatorLowerX2 = 0; let indicatorUpperX1 = 0; let indicatorUpperX2 = 0; let indicatorThemeNode = this._indicator.get_theme_node(); let indicatorTopFullBorder = indicatorThemeNode.get_padding(St.Side.TOP) + indicatorThemeNode.get_border_width(St.Side.TOP); let indicatorBottomFullBorder = indicatorThemeNode.get_padding(St.Side.BOTTOM) + indicatorThemeNode.get_border_width(St.Side.BOTTOM); let indicatorLeftFullBorder = indicatorThemeNode.get_padding(St.Side.LEFT) + indicatorThemeNode.get_border_width(St.Side.LEFT); let indicatorRightFullBorder = indicatorThemeNode.get_padding(St.Side.RIGHT) + indicatorThemeNode.get_border_width(St.Side.RIGHT); let x = box.x1; if (this._dropPlaceholderPos === -1) { this._dropPlaceholder.allocate_preferred_size( ...this._dropPlaceholder.get_position()); const laters = global.compositor.get_laters(); laters.add(Meta.LaterType.BEFORE_REDRAW, () => { this._dropPlaceholder.hide(); }); } let childBox = new Clutter.ActorBox(); for (let i = 0; i < this._thumbnails.length; i++) { const thumbnail = this._thumbnails[i]; if (i > 0) x += spacing - Math.round(thumbnail.collapse_fraction * spacing); const y1 = box.y1; const y2 = y1 + thumbnailHeight; if (i === this._dropPlaceholderPos) { const [, placeholderWidth] = this._dropPlaceholder.get_preferred_width(-1); childBox.y1 = y1; childBox.y2 = y2; if (rtl) { childBox.x2 = box.x2 - Math.round(x); childBox.x1 = box.x2 - Math.round(x + placeholderWidth); } else { childBox.x1 = Math.round(x); childBox.x2 = Math.round(x + placeholderWidth); } this._dropPlaceholder.allocate(childBox); const laters = global.compositor.get_laters(); laters.add(Meta.LaterType.BEFORE_REDRAW, () => { this._dropPlaceholder.show(); }); x += placeholderWidth + spacing; } // We might end up with thumbnailWidth being something like 99.33 // pixels. To make this work and not end up with a gap at the end, // we need some thumbnails to be 99 pixels and some 100 pixels width; // we compute an actual scale separately for each thumbnail. const x1 = Math.round(x); const x2 = Math.round(x + thumbnailWidth); const roundedHScale = (x2 - x1) / portholeWidth; // Allocating a scaled actor is funny - x1/y1 correspond to the origin // of the actor, but x2/y2 are increased by the *unscaled* size. if (rtl) { childBox.x2 = box.x2 - x1; childBox.x1 = box.x2 - (x1 + thumbnailWidth); } else { childBox.x1 = x1; childBox.x2 = x1 + thumbnailWidth; } childBox.y1 = y1; childBox.y2 = y1 + thumbnailHeight; thumbnail.setScale(roundedHScale, roundedVScale); thumbnail.allocate(childBox); if (i === indicatorUpperWs) { indicatorUpperX1 = childBox.x1; indicatorUpperX2 = childBox.x2; } if (i === indicatorLowerWs) { indicatorLowerX1 = childBox.x1; indicatorLowerX2 = childBox.x2; } // We round the collapsing portion so that we don't get thumbnails resizing // during an animation due to differences in rounded, but leave the uncollapsed // portion unrounded so that non-animating we end up with the right total x += thumbnailWidth - Math.round(thumbnailWidth * thumbnail.collapse_fraction); } childBox.y1 = box.y1; childBox.y2 = box.y1 + thumbnailHeight; const indicatorX1 = indicatorLowerX1 + (indicatorUpperX1 - indicatorLowerX1) * (indicatorValue % 1); const indicatorX2 = indicatorLowerX2 + (indicatorUpperX2 - indicatorLowerX2) * (indicatorValue % 1); childBox.x1 = indicatorX1 - indicatorLeftFullBorder; childBox.x2 = indicatorX2 + indicatorRightFullBorder; childBox.y1 -= indicatorTopFullBorder; childBox.y2 += indicatorBottomFullBorder; this._indicator.allocate(childBox); } get shouldShow() { return this._shouldShow; } set expandFraction(expandFraction) { if (this._expandFraction === expandFraction) return; this._expandFraction = expandFraction; this.notify('expand-fraction'); this.queue_relayout(); } get expandFraction() { return this._expandFraction; } }); 07070100000206000081A40000000000000000000000016712993F00009600000000000000000000000000000000000000002900000000gnome-shell-47.1/js/ui/workspacesView.jsimport Clutter from 'gi://Clutter'; import Gio from 'gi://Gio'; import GObject from 'gi://GObject'; import Meta from 'gi://Meta'; import Mtk from 'gi://Mtk'; import Shell from 'gi://Shell'; import St from 'gi://St'; import * as Layout from './layout.js'; import * as Main from './main.js'; import * as OverviewControls from './overviewControls.js'; import * as SwipeTracker from './swipeTracker.js'; import * as Util from '../misc/util.js'; import * as Workspace from './workspace.js'; import {ThumbnailsBox} from './workspaceThumbnail.js'; const WORKSPACE_SWITCH_TIME = 250; const MUTTER_SCHEMA = 'org.gnome.mutter'; const WORKSPACE_MIN_SPACING = 24; const WORKSPACE_MAX_SPACING = 80; const WORKSPACE_INACTIVE_SCALE = 0.94; const SECONDARY_WORKSPACE_SCALE = 0.80; const WorkspacesViewBase = GObject.registerClass({ GTypeFlags: GObject.TypeFlags.ABSTRACT, }, class WorkspacesViewBase extends St.Widget { _init(monitorIndex, overviewAdjustment) { super._init({ style_class: 'workspaces-view', x_expand: true, y_expand: true, }); this.connect('destroy', this._onDestroy.bind(this)); global.focus_manager.add_group(this); this._monitorIndex = monitorIndex; this._inDrag = false; Main.overview.connectObject( 'window-drag-begin', this._dragBegin.bind(this), 'window-drag-end', this._dragEnd.bind(this), this); this._overviewAdjustment = overviewAdjustment; overviewAdjustment.connectObject('notify::value', () => this._updateWorkspaceMode(), this); } _onDestroy() { this._dragEnd(); } _dragBegin() { this._inDrag = true; } _dragEnd() { this._inDrag = false; } _updateWorkspaceMode() { } vfunc_allocate(box) { this.set_allocation(box); for (const child of this) child.allocate_available_size(0, 0, box.get_width(), box.get_height()); } vfunc_get_preferred_width() { return [0, 0]; } vfunc_get_preferred_height() { return [0, 0]; } }); /** @enum {number} */ export const FitMode = { SINGLE: 0, ALL: 1, }; export const WorkspacesView = GObject.registerClass( class WorkspacesView extends WorkspacesViewBase { _init(monitorIndex, controls, scrollAdjustment, fitModeAdjustment, overviewAdjustment) { let workspaceManager = global.workspace_manager; super._init(monitorIndex, overviewAdjustment); this._controls = controls; this._fitModeAdjustment = fitModeAdjustment; this._fitModeAdjustment.connectObject('notify::value', () => { this._updateVisibility(); this._updateWorkspacesState(); this.queue_relayout(); }, this); this._animating = false; // tweening this._gestureActive = false; // touch(pad) gestures this._scrollAdjustment = scrollAdjustment; this._scrollAdjustment.connectObject('notify::value', this._onScrollAdjustmentChanged.bind(this), this); this._workspaces = []; this._updateWorkspaces(); workspaceManager.connectObject( 'notify::n-workspaces', this._updateWorkspaces.bind(this), 'workspaces-reordered', () => { this._workspaces.sort((a, b) => { return a.metaWorkspace.index() - b.metaWorkspace.index(); }); this._workspaces.forEach( (ws, i) => this.set_child_at_index(ws, i)); }, this); global.window_manager.connectObject('switch-workspace', this._activeWorkspaceChanged.bind(this), this); } _getFirstFitAllWorkspaceBox(box, spacing, vertical) { const {nWorkspaces} = global.workspaceManager; const [width, height] = box.get_size(); const [workspace] = this._workspaces; const fitAllBox = new Clutter.ActorBox(); let [x1, y1] = box.get_origin(); // Spacing here is not only the space between workspaces, but also the // space before the first workspace, and after the last one. This prevents // workspaces from touching the edges of the allocation box. if (vertical) { const availableHeight = height - spacing * (nWorkspaces + 1); let workspaceHeight = availableHeight / nWorkspaces; let [, workspaceWidth] = workspace.get_preferred_width(workspaceHeight); y1 = spacing; if (workspaceWidth > width) { [, workspaceHeight] = workspace.get_preferred_height(width); y1 += Math.max((availableHeight - workspaceHeight * nWorkspaces) / 2, 0); } fitAllBox.set_size(width, workspaceHeight); } else { const availableWidth = width - spacing * (nWorkspaces + 1); let workspaceWidth = availableWidth / nWorkspaces; let [, workspaceHeight] = workspace.get_preferred_height(workspaceWidth); x1 = spacing; if (workspaceHeight > height) { [, workspaceWidth] = workspace.get_preferred_width(height); x1 += Math.max((availableWidth - workspaceWidth * nWorkspaces) / 2, 0); } fitAllBox.set_size(workspaceWidth, height); } fitAllBox.set_origin(x1, y1); return fitAllBox; } _getFirstFitSingleWorkspaceBox(box, spacing, vertical) { const [width, height] = box.get_size(); const [workspace] = this._workspaces; const rtl = this.text_direction === Clutter.TextDirection.RTL; const adj = this._scrollAdjustment; const currentWorkspace = vertical || !rtl ? adj.value : adj.upper - adj.value - 1; // Single fit mode implies centered too let [x1, y1] = box.get_origin(); if (vertical) { const [, workspaceHeight] = workspace.get_preferred_height(width); y1 += (height - workspaceHeight) / 2; y1 -= currentWorkspace * (workspaceHeight + spacing); } else { const [, workspaceWidth] = workspace.get_preferred_width(height); x1 += (width - workspaceWidth) / 2; x1 -= currentWorkspace * (workspaceWidth + spacing); } const fitSingleBox = new Clutter.ActorBox({x1, y1}); if (vertical) { const [, workspaceHeight] = workspace.get_preferred_height(width); fitSingleBox.set_size(width, workspaceHeight); } else { const [, workspaceWidth] = workspace.get_preferred_width(height); fitSingleBox.set_size(workspaceWidth, height); } return fitSingleBox; } _getSpacing(box, fitMode, vertical) { const [width, height] = box.get_size(); const [workspace] = this._workspaces; let availableSpace; let workspaceSize; if (vertical) { [, workspaceSize] = workspace.get_preferred_height(width); availableSpace = (height - workspaceSize) / 2; } else { [, workspaceSize] = workspace.get_preferred_width(height); availableSpace = (width - workspaceSize) / 2; } const spacing = (availableSpace - workspaceSize * 0.4) * (1 - fitMode); const {scaleFactor} = St.ThemeContext.get_for_stage(global.stage); return Math.clamp(spacing, WORKSPACE_MIN_SPACING * scaleFactor, WORKSPACE_MAX_SPACING * scaleFactor); } _getWorkspaceModeForOverviewState(state) { const {ControlsState} = OverviewControls; switch (state) { case ControlsState.HIDDEN: return 0; case ControlsState.WINDOW_PICKER: return 1; case ControlsState.APP_GRID: return 0; } return 0; } _updateWorkspacesState() { const adj = this._scrollAdjustment; const fitMode = this._fitModeAdjustment.value; const {initialState, finalState, progress} = this._overviewAdjustment.getStateTransitionParams(); const workspaceMode = (1 - fitMode) * Util.lerp( this._getWorkspaceModeForOverviewState(initialState), this._getWorkspaceModeForOverviewState(finalState), progress); // Fade and scale inactive workspaces this._workspaces.forEach((w, index) => { w.stateAdjustment.value = workspaceMode; const distanceToCurrentWorkspace = Math.abs(adj.value - index); const scaleProgress = 1 - Math.clamp(distanceToCurrentWorkspace, 0, 1); const scale = Util.lerp(WORKSPACE_INACTIVE_SCALE, 1, scaleProgress); w.set_scale(scale, scale); }); } _getFitModeForState(state) { const {ControlsState} = OverviewControls; switch (state) { case ControlsState.HIDDEN: case ControlsState.WINDOW_PICKER: return FitMode.SINGLE; case ControlsState.APP_GRID: return FitMode.ALL; default: return FitMode.SINGLE; } } _getInitialBoxes(box) { const offsetBox = new Clutter.ActorBox(); offsetBox.set_size(...box.get_size()); let fitSingleBox = offsetBox; let fitAllBox = offsetBox; const {transitioning, initialState, finalState} = this._overviewAdjustment.getStateTransitionParams(); const isPrimary = Main.layoutManager.primaryIndex === this._monitorIndex; if (isPrimary && transitioning) { const initialFitMode = this._getFitModeForState(initialState); const finalFitMode = this._getFitModeForState(finalState); // Only use the relative boxes when the overview is in a state // transition, and the corresponding fit modes are different. if (initialFitMode !== finalFitMode) { const initialBox = this._controls.getWorkspacesBoxForState(initialState).copy(); const finalBox = this._controls.getWorkspacesBoxForState(finalState).copy(); // Boxes are relative to ControlsManager, transform them; // this.apply_relative_transform_to_point(controls, // new Graphene.Point3D()); // would be more correct, but also more expensive const [parentOffsetX, parentOffsetY] = this.get_parent().allocation.get_origin(); [initialBox, finalBox].forEach(b => { b.set_origin(b.x1 - parentOffsetX, b.y1 - parentOffsetY); }); if (initialFitMode === FitMode.SINGLE) [fitSingleBox, fitAllBox] = [initialBox, finalBox]; else [fitAllBox, fitSingleBox] = [initialBox, finalBox]; } } return [fitSingleBox, fitAllBox]; } _updateWorkspaceMode() { this._updateWorkspacesState(); } vfunc_allocate(box) { this.set_allocation(box); if (this._workspaces.length === 0) return; const vertical = global.workspaceManager.layout_rows === -1; const rtl = this.text_direction === Clutter.TextDirection.RTL; const fitMode = this._fitModeAdjustment.value; let [fitSingleBox, fitAllBox] = this._getInitialBoxes(box); const fitSingleSpacing = this._getSpacing(fitSingleBox, FitMode.SINGLE, vertical); fitSingleBox = this._getFirstFitSingleWorkspaceBox(fitSingleBox, fitSingleSpacing, vertical); const fitAllSpacing = this._getSpacing(fitAllBox, FitMode.ALL, vertical); fitAllBox = this._getFirstFitAllWorkspaceBox(fitAllBox, fitAllSpacing, vertical); // Account for RTL locales by reversing the list const workspaces = this._workspaces.slice(); if (rtl) workspaces.reverse(); const [fitSingleX1, fitSingleY1] = fitSingleBox.get_origin(); const [fitSingleWidth, fitSingleHeight] = fitSingleBox.get_size(); const [fitAllX1, fitAllY1] = fitAllBox.get_origin(); const [fitAllWidth, fitAllHeight] = fitAllBox.get_size(); workspaces.forEach(child => { if (fitMode === FitMode.SINGLE) box = fitSingleBox; else if (fitMode === FitMode.ALL) box = fitAllBox; else box = fitSingleBox.interpolate(fitAllBox, fitMode); child.allocate_align_fill(box, 0.5, 0.5, false, false); if (vertical) { fitSingleBox.set_origin( fitSingleX1, fitSingleBox.y1 + fitSingleHeight + fitSingleSpacing); fitAllBox.set_origin( fitAllX1, fitAllBox.y1 + fitAllHeight + fitAllSpacing); } else { fitSingleBox.set_origin( fitSingleBox.x1 + fitSingleWidth + fitSingleSpacing, fitSingleY1); fitAllBox.set_origin( fitAllBox.x1 + fitAllWidth + fitAllSpacing, fitAllY1); } }); } getActiveWorkspace() { let workspaceManager = global.workspace_manager; let active = workspaceManager.get_active_workspace_index(); return this._workspaces[active]; } prepareToLeaveOverview() { for (let w = 0; w < this._workspaces.length; w++) this._workspaces[w].prepareToLeaveOverview(); } syncStacking(stackIndices) { for (let i = 0; i < this._workspaces.length; i++) this._workspaces[i].syncStacking(stackIndices); } _scrollToActive() { const {workspaceManager} = global; const active = workspaceManager.get_active_workspace_index(); this._animating = true; this._updateVisibility(); this._scrollAdjustment.remove_transition('value'); this._scrollAdjustment.ease(active, { duration: WORKSPACE_SWITCH_TIME, mode: Clutter.AnimationMode.EASE_OUT_CUBIC, onComplete: () => { this._animating = false; this._updateVisibility(); }, }); } _updateVisibility() { let workspaceManager = global.workspace_manager; let active = workspaceManager.get_active_workspace_index(); const fitMode = this._fitModeAdjustment.value; const singleFitMode = fitMode === FitMode.SINGLE; for (let w = 0; w < this._workspaces.length; w++) { let workspace = this._workspaces[w]; if (this._animating || this._gestureActive || !singleFitMode) workspace.show(); else workspace.visible = Math.abs(w - active) <= 1; } } _raiseActiveWorkspace() { const activeWorkspace = this.getActiveWorkspace(); this.set_child_above_sibling(activeWorkspace, null); } _updateWorkspaces() { let workspaceManager = global.workspace_manager; let newNumWorkspaces = workspaceManager.n_workspaces; for (let j = 0; j < newNumWorkspaces; j++) { let metaWorkspace = workspaceManager.get_workspace_by_index(j); let workspace; if (j >= this._workspaces.length) { /* added */ workspace = new Workspace.Workspace( metaWorkspace, this._monitorIndex, this._overviewAdjustment); this.add_child(workspace); this._workspaces[j] = workspace; } else { workspace = this._workspaces[j]; if (workspace.metaWorkspace !== metaWorkspace) { /* removed */ workspace.destroy(); this._workspaces.splice(j, 1); } /* else kept */ } } for (let j = this._workspaces.length - 1; j >= newNumWorkspaces; j--) { this._workspaces[j].destroy(); this._workspaces.splice(j, 1); } this._updateWorkspacesState(); this._updateVisibility(); this._raiseActiveWorkspace(); } _activeWorkspaceChanged(_wm, _from, _to, _direction) { this._scrollToActive(); this._raiseActiveWorkspace(); } _onDestroy() { super._onDestroy(); this._workspaces = []; } startTouchGesture() { this._gestureActive = true; this._updateVisibility(); } endTouchGesture() { this._gestureActive = false; // Make sure title captions etc are shown as necessary this._scrollToActive(); this._updateVisibility(); } // sync the workspaces' positions to the value of the scroll adjustment // and change the active workspace if appropriate _onScrollAdjustmentChanged() { if (!this.has_allocation()) return; const adj = this._scrollAdjustment; const allowSwitch = adj.get_transition('value') === null && !this._gestureActive; let workspaceManager = global.workspace_manager; let active = workspaceManager.get_active_workspace_index(); let current = Math.round(adj.value); if (allowSwitch && active !== current) { if (!this._workspaces[current]) { // The current workspace was destroyed. This could happen // when you are on the last empty workspace, and consolidate // windows using the thumbnail bar. // In that case, the intended behavior is to stay on the empty // workspace, which is the last one, so pick it. current = this._workspaces.length - 1; } let metaWorkspace = this._workspaces[current].metaWorkspace; metaWorkspace.activate(global.get_current_time()); } this._updateWorkspacesState(); this.queue_relayout(); } }); export const ExtraWorkspaceView = GObject.registerClass( class ExtraWorkspaceView extends WorkspacesViewBase { _init(monitorIndex, overviewAdjustment) { super._init(monitorIndex, overviewAdjustment); this._workspace = new Workspace.Workspace(null, monitorIndex, overviewAdjustment); this.add_child(this._workspace); } _updateWorkspaceMode() { const overviewState = this._overviewAdjustment.value; const progress = Math.clamp(overviewState, OverviewControls.ControlsState.HIDDEN, OverviewControls.ControlsState.WINDOW_PICKER); this._workspace.stateAdjustment.value = progress; } vfunc_allocate(box) { this.set_allocation(box); const [width, height] = box.get_size(); const [, childWidth] = this._workspace.get_preferred_width(height); const childBox = new Clutter.ActorBox(); childBox.set_origin(Math.round((width - childWidth) / 2), 0); childBox.set_size(childWidth, height); this._workspace.allocate(childBox); } getActiveWorkspace() { return this._workspace; } prepareToLeaveOverview() { this._workspace.prepareToLeaveOverview(); } syncStacking(stackIndices) { this._workspace.syncStacking(stackIndices); } startTouchGesture() { } endTouchGesture() { } }); export const SecondaryMonitorDisplay = GObject.registerClass( class SecondaryMonitorDisplay extends St.Widget { _init(monitorIndex, controls, scrollAdjustment, fitModeAdjustment, overviewAdjustment) { this._monitorIndex = monitorIndex; this._controls = controls; this._scrollAdjustment = scrollAdjustment; this._fitModeAdjustment = fitModeAdjustment; this._overviewAdjustment = overviewAdjustment; super._init({ style_class: 'secondary-monitor-workspaces', constraints: new Layout.MonitorConstraint({ index: this._monitorIndex, work_area: true, }), clip_to_allocation: true, }); this.connect('destroy', () => this._onDestroy()); this._thumbnails = new ThumbnailsBox( this._scrollAdjustment, monitorIndex); this.add_child(this._thumbnails); this._thumbnails.connect('notify::should-show', () => this._updateThumbnailVisibility()); this._overviewAdjustment.connectObject('notify::value', () => { this._updateThumbnailParams(); this.queue_relayout(); }, this); this._settings = new Gio.Settings({schema_id: MUTTER_SCHEMA}); this._settings.connect('changed::workspaces-only-on-primary', () => this._workspacesOnPrimaryChanged()); this._workspacesOnPrimaryChanged(); } _getThumbnailParamsForState(state) { const {ControlsState} = OverviewControls; let opacity, scale; switch (state) { case ControlsState.HIDDEN: case ControlsState.WINDOW_PICKER: opacity = 255; scale = 1; break; case ControlsState.APP_GRID: opacity = 0; scale = 0.5; break; default: opacity = 255; scale = 1; break; } return {opacity, scale}; } _getThumbnailsHeight(box) { if (!this._thumbnails.visible) return 0; const [width, height] = box.get_size(); const {expandFraction} = this._thumbnails; const [thumbnailsHeight] = this._thumbnails.get_preferred_height(width); return Math.min( thumbnailsHeight * expandFraction, height * this._thumbnails.maxThumbnailScale); } _getWorkspacesBoxForState(state, box, padding, thumbnailsHeight, spacing) { const {ControlsState} = OverviewControls; const workspaceBox = box.copy(); const [width, height] = workspaceBox.get_size(); switch (state) { case ControlsState.HIDDEN: break; case ControlsState.WINDOW_PICKER: workspaceBox.set_origin(0, padding + thumbnailsHeight + spacing); workspaceBox.set_size( width, height - 2 * padding - thumbnailsHeight - spacing); break; case ControlsState.APP_GRID: workspaceBox.set_origin(0, padding); workspaceBox.set_size( width, height - 2 * padding); break; } return workspaceBox; } vfunc_allocate(box) { this.set_allocation(box); const themeNode = this.get_theme_node(); const contentBox = themeNode.get_content_box(box); const [width, height] = contentBox.get_size(); const {expandFraction} = this._thumbnails; const spacing = themeNode.get_length('spacing') * expandFraction; const padding = Math.round((1 - SECONDARY_WORKSPACE_SCALE) * height / 2); const thumbnailsHeight = this._getThumbnailsHeight(contentBox); if (this._thumbnails.visible) { const childBox = new Clutter.ActorBox(); childBox.set_origin(0, padding); childBox.set_size(width, thumbnailsHeight); this._thumbnails.allocate(childBox); } const { currentState, initialState, finalState, transitioning, progress, } = this._overviewAdjustment.getStateTransitionParams(); let workspacesBox; const workspaceParams = [contentBox, padding, thumbnailsHeight, spacing]; if (!transitioning) { workspacesBox = this._getWorkspacesBoxForState(currentState, ...workspaceParams); } else { const initialBox = this._getWorkspacesBoxForState(initialState, ...workspaceParams); const finalBox = this._getWorkspacesBoxForState(finalState, ...workspaceParams); workspacesBox = initialBox.interpolate(finalBox, progress); } this._workspacesView.allocate(workspacesBox); } _onDestroy() { if (this._settings) this._settings.run_dispose(); this._settings = null; } _workspacesOnPrimaryChanged() { this._updateWorkspacesView(); this._updateThumbnailVisibility(); } _updateWorkspacesView() { if (this._workspacesView) this._workspacesView.destroy(); if (this._settings.get_boolean('workspaces-only-on-primary')) { this._workspacesView = new ExtraWorkspaceView( this._monitorIndex, this._overviewAdjustment); } else { this._workspacesView = new WorkspacesView( this._monitorIndex, this._controls, this._scrollAdjustment, this._fitModeAdjustment, this._overviewAdjustment); } this.add_child(this._workspacesView); } _updateThumbnailVisibility() { const visible = this._thumbnails.should_show && !this._settings.get_boolean('workspaces-only-on-primary'); if (this._thumbnails.visible === visible) return; this._thumbnails.show(); this._updateThumbnailParams(); this._thumbnails.ease_property('expand-fraction', visible ? 1 : 0, { duration: OverviewControls.SIDE_CONTROLS_ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => (this._thumbnails.visible = visible), }); } _updateThumbnailParams() { if (!this._thumbnails.visible) return; const {initialState, finalState, progress} = this._overviewAdjustment.getStateTransitionParams(); const initialParams = this._getThumbnailParamsForState(initialState); const finalParams = this._getThumbnailParamsForState(finalState); const opacity = Util.lerp(initialParams.opacity, finalParams.opacity, progress); const scale = Util.lerp(initialParams.scale, finalParams.scale, progress); this._thumbnails.set({ opacity, scale_x: scale, scale_y: scale, }); } getActiveWorkspace() { return this._workspacesView.getActiveWorkspace(); } prepareToLeaveOverview() { this._workspacesView.prepareToLeaveOverview(); } syncStacking(stackIndices) { this._workspacesView.syncStacking(stackIndices); } startTouchGesture() { this._workspacesView.startTouchGesture(); } endTouchGesture() { this._workspacesView.endTouchGesture(); } }); export const WorkspacesDisplay = GObject.registerClass( class WorkspacesDisplay extends St.Widget { _init(controls, scrollAdjustment, overviewAdjustment) { super._init({ layout_manager: new Clutter.BinLayout(), reactive: true, }); this._controls = controls; this._overviewAdjustment = overviewAdjustment; this._fitModeAdjustment = new St.Adjustment({ actor: this, value: FitMode.SINGLE, lower: FitMode.SINGLE, upper: FitMode.ALL, }); let workspaceManager = global.workspace_manager; this._scrollAdjustment = scrollAdjustment; global.window_manager.connectObject('switch-workspace', this._activeWorkspaceChanged.bind(this), this); this._swipeTracker = new SwipeTracker.SwipeTracker( Main.layoutManager.overviewGroup, Clutter.Orientation.HORIZONTAL, Shell.ActionMode.OVERVIEW, {allowDrag: false}); this._swipeTracker.allowLongSwipes = true; this._swipeTracker.connect('begin', this._switchWorkspaceBegin.bind(this)); this._swipeTracker.connect('update', this._switchWorkspaceUpdate.bind(this)); this._swipeTracker.connect('end', this._switchWorkspaceEnd.bind(this)); this.connect('notify::mapped', this._updateSwipeTracker.bind(this)); workspaceManager.connectObject( 'workspaces-reordered', this._workspacesReordered.bind(this), 'notify::layout-rows', this._updateTrackerOrientation.bind(this), this); this._updateTrackerOrientation(); Main.overview.connectObject( 'window-drag-begin', this._windowDragBegin.bind(this), 'window-drag-end', this._windowDragEnd.bind(this), this); this._primaryVisible = true; this._primaryIndex = Main.layoutManager.primaryIndex; this._workspacesViews = []; this._settings = new Gio.Settings({schema_id: MUTTER_SCHEMA}); this._inWindowDrag = false; this._leavingOverview = false; this._gestureActive = false; // touch(pad) gestures } _windowDragBegin() { this._inWindowDrag = true; this._updateSwipeTracker(); } _windowDragEnd() { this._inWindowDrag = false; this._updateSwipeTracker(); } _updateSwipeTracker() { this._swipeTracker.enabled = this.mapped && !this._inWindowDrag && !this._leavingOverview; } _workspacesReordered() { let workspaceManager = global.workspace_manager; this._scrollAdjustment.value = workspaceManager.get_active_workspace_index(); } _activeWorkspaceChanged(_wm, _from, to, _direction) { if (this._gestureActive) return; this._scrollAdjustment.ease(to, { mode: Clutter.AnimationMode.EASE_OUT_CUBIC, duration: WORKSPACE_SWITCH_TIME, }); } _updateTrackerOrientation() { const {layoutRows} = global.workspace_manager; this._swipeTracker.orientation = layoutRows !== -1 ? Clutter.Orientation.HORIZONTAL : Clutter.Orientation.VERTICAL; } _directionForProgress(progress) { if (global.workspace_manager.layout_rows === -1) { return progress > 0 ? Meta.MotionDirection.DOWN : Meta.MotionDirection.UP; } else if (this.text_direction === Clutter.TextDirection.RTL) { return progress > 0 ? Meta.MotionDirection.LEFT : Meta.MotionDirection.RIGHT; } else { return progress > 0 ? Meta.MotionDirection.RIGHT : Meta.MotionDirection.LEFT; } } _switchWorkspaceBegin(tracker, monitor) { if (this._workspacesOnlyOnPrimary && monitor !== this._primaryIndex) return; let workspaceManager = global.workspace_manager; let adjustment = this._scrollAdjustment; if (this._gestureActive) adjustment.remove_transition('value'); const distance = global.workspace_manager.layout_rows === -1 ? this.height : this.width; for (let i = 0; i < this._workspacesViews.length; i++) this._workspacesViews[i].startTouchGesture(); let progress = adjustment.value / adjustment.page_size; let points = Array.from( {length: workspaceManager.n_workspaces}, (v, i) => i); tracker.confirmSwipe(distance, points, progress, Math.round(progress)); this._gestureActive = true; } _switchWorkspaceUpdate(tracker, progress) { let adjustment = this._scrollAdjustment; adjustment.value = progress * adjustment.page_size; } _switchWorkspaceEnd(tracker, duration, endProgress) { let workspaceManager = global.workspace_manager; let newWs = workspaceManager.get_workspace_by_index(endProgress); this._scrollAdjustment.ease(endProgress, { mode: Clutter.AnimationMode.EASE_OUT_CUBIC, duration, onComplete: () => { if (!newWs.active) newWs.activate(global.get_current_time()); this._endTouchGesture(); }, }); } _endTouchGesture() { for (let i = 0; i < this._workspacesViews.length; i++) this._workspacesViews[i].endTouchGesture(); this._gestureActive = false; } vfunc_navigate_focus(from, direction) { return this._getPrimaryView()?.navigate_focus(from, direction, false); } setPrimaryWorkspaceVisible(visible) { if (this._primaryVisible === visible) return; this._primaryVisible = visible; const primaryIndex = Main.layoutManager.primaryIndex; const primaryWorkspace = this._workspacesViews[primaryIndex]; if (primaryWorkspace) primaryWorkspace.visible = visible; } prepareToEnterOverview() { this.show(); this._updateWorkspacesViews(); Main.overview.connectObject( 'windows-restacked', this._onRestacked.bind(this), 'scroll-event', this._onScrollEvent.bind(this), this); global.stage.connectObject( 'key-press-event', this._onKeyPressEvent.bind(this), this); } prepareToLeaveOverview() { for (let i = 0; i < this._workspacesViews.length; i++) this._workspacesViews[i].prepareToLeaveOverview(); this._leavingOverview = true; this._updateSwipeTracker(); } vfunc_hide() { Main.overview.disconnectObject(this); global.stage.disconnectObject(this); for (let i = 0; i < this._workspacesViews.length; i++) this._workspacesViews[i].destroy(); this._workspacesViews = []; this._leavingOverview = false; super.vfunc_hide(); } _updateWorkspacesViews() { for (let i = 0; i < this._workspacesViews.length; i++) this._workspacesViews[i].destroy(); this._primaryIndex = Main.layoutManager.primaryIndex; this._workspacesViews = []; let monitors = Main.layoutManager.monitors; for (let i = 0; i < monitors.length; i++) { let view; if (i === this._primaryIndex) { view = new WorkspacesView(i, this._controls, this._scrollAdjustment, this._fitModeAdjustment, this._overviewAdjustment); view.visible = this._primaryVisible; this.bind_property('opacity', view, 'opacity', GObject.BindingFlags.SYNC_CREATE); this.add_child(view); } else { view = new SecondaryMonitorDisplay(i, this._controls, this._scrollAdjustment, this._fitModeAdjustment, this._overviewAdjustment); Main.layoutManager.overviewGroup.add_child(view); } this._workspacesViews.push(view); } } _getMonitorIndexForEvent(event) { let [x, y] = event.get_coords(); const rect = new Mtk.Rectangle({x, y, width: 1, height: 1}); return global.display.get_monitor_index_for_rect(rect); } _getPrimaryView() { if (!this._workspacesViews.length) return null; return this._workspacesViews[this._primaryIndex]; } activeWorkspaceHasMaximizedWindows() { const primaryView = this._getPrimaryView(); return primaryView ? primaryView.getActiveWorkspace().hasMaximizedWindows() : false; } _onRestacked(overview, stackIndices) { for (let i = 0; i < this._workspacesViews.length; i++) this._workspacesViews[i].syncStacking(stackIndices); } _onScrollEvent(actor, event) { if (this._swipeTracker.canHandleScrollEvent(event)) return Clutter.EVENT_PROPAGATE; if (!this.mapped) return Clutter.EVENT_PROPAGATE; if (this._workspacesOnlyOnPrimary && this._getMonitorIndexForEvent(event) !== this._primaryIndex) return Clutter.EVENT_PROPAGATE; return Main.wm.handleWorkspaceScroll(event); } _onKeyPressEvent(actor, event) { const {ControlsState} = OverviewControls; if (this._overviewAdjustment.value !== ControlsState.WINDOW_PICKER) return Clutter.EVENT_PROPAGATE; if (!this.reactive) return Clutter.EVENT_PROPAGATE; const {workspaceManager} = global; const vertical = workspaceManager.layout_rows === -1; const rtl = this.get_text_direction() === Clutter.TextDirection.RTL; let which; switch (event.get_key_symbol()) { case Clutter.KEY_Page_Up: if (vertical) which = Meta.MotionDirection.UP; else if (rtl) which = Meta.MotionDirection.RIGHT; else which = Meta.MotionDirection.LEFT; break; case Clutter.KEY_Page_Down: if (vertical) which = Meta.MotionDirection.DOWN; else if (rtl) which = Meta.MotionDirection.LEFT; else which = Meta.MotionDirection.RIGHT; break; case Clutter.KEY_Home: which = 0; break; case Clutter.KEY_End: which = workspaceManager.n_workspaces - 1; break; default: return Clutter.EVENT_PROPAGATE; } let ws; if (which < 0) // Negative workspace numbers are directions // with respect to the current workspace ws = workspaceManager.get_active_workspace().get_neighbor(which); else // Otherwise it is a workspace index ws = workspaceManager.get_workspace_by_index(which); if (ws) Main.wm.actionMoveWorkspace(ws); return Clutter.EVENT_STOP; } get _workspacesOnlyOnPrimary() { return this._settings.get_boolean('workspaces-only-on-primary'); } get fitModeAdjustment() { return this._fitModeAdjustment; } }); 07070100000207000081A40000000000000000000000016712993F00000F37000000000000000000000000000000000000002600000000gnome-shell-47.1/js/ui/xdndHandler.jsimport Clutter from 'gi://Clutter'; import * as Signals from '../misc/signals.js'; import * as DND from './dnd.js'; import * as Main from './main.js'; export class XdndHandler extends Signals.EventEmitter { constructor() { super(); // Used to display a clone of the cursor window when the // window group is hidden (like it happens in the overview) this._cursorWindowClone = null; // Used as a drag actor in case we don't have a cursor window clone this._dummy = new Clutter.Actor({width: 1, height: 1, opacity: 0}); Main.uiGroup.add_child(this._dummy); this._dummy.hide(); var dnd = global.backend.get_dnd(); dnd.connect('dnd-enter', this._onEnter.bind(this)); dnd.connect('dnd-position-change', this._onPositionChanged.bind(this)); dnd.connect('dnd-leave', this._onLeave.bind(this)); } // Called when the user cancels the drag (i.e release the button) _onLeave() { global.window_group.disconnectObject(this); if (this._cursorWindowClone) { this._cursorWindowClone.destroy(); this._cursorWindowClone = null; } this.emit('drag-end'); } _onEnter() { global.window_group.connectObject('notify::visible', this._onWindowGroupVisibilityChanged.bind(this), this); this.emit('drag-begin', global.get_current_time()); } _onWindowGroupVisibilityChanged() { if (!global.window_group.visible) { if (this._cursorWindowClone) return; let windows = global.get_window_actors(); let cursorWindow = windows[windows.length - 1]; // FIXME: more reliable way? if (!cursorWindow.get_meta_window().is_override_redirect()) return; const constraintPosition = new Clutter.BindConstraint({ coordinate: Clutter.BindCoordinate.POSITION, source: cursorWindow, }); this._cursorWindowClone = new Clutter.Clone({source: cursorWindow}); Main.uiGroup.add_child(this._cursorWindowClone); // Make sure that the clone has the same position as the source this._cursorWindowClone.add_constraint(constraintPosition); } else { if (!this._cursorWindowClone) return; this._cursorWindowClone.destroy(); this._cursorWindowClone = null; } } _onPositionChanged(obj, x, y) { let pickedActor = global.stage.get_actor_at_pos(Clutter.PickMode.REACTIVE, x, y); // Make sure that the cursor window is on top if (this._cursorWindowClone) Main.uiGroup.set_child_above_sibling(this._cursorWindowClone, null); let dragEvent = { x, y, dragActor: this._cursorWindowClone ?? this._dummy, source: this, targetActor: pickedActor, }; for (let i = 0; i < DND.dragMonitors.length; i++) { let motionFunc = DND.dragMonitors[i].dragMotion; if (motionFunc) { let result = motionFunc(dragEvent); if (result !== DND.DragMotionResult.CONTINUE) return; } } while (pickedActor) { if (pickedActor._delegate && pickedActor._delegate.handleDragOver) { let [r_, targX, targY] = pickedActor.transform_stage_point(x, y); let result = pickedActor._delegate.handleDragOver(this, dragEvent.dragActor, targX, targY, global.get_current_time()); if (result !== DND.DragMotionResult.CONTINUE) return; } pickedActor = pickedActor.get_parent(); } } } 07070100000208000041ED0000000000000000000000026712993F00000000000000000000000000000000000000000000001600000000gnome-shell-47.1/lint07070100000209000081A40000000000000000000000016712993F00001A42000000000000000000000000000000000000002700000000gnome-shell-47.1/lint/eslintrc-gjs.yml--- # SPDX-License-Identifier: MIT OR LGPL-2.0-or-later # SPDX-FileCopyrightText: 2018 Claudio André env: es2021: true extends: 'eslint:recommended' plugins: - jsdoc rules: array-bracket-newline: - error - consistent array-bracket-spacing: - error - never array-callback-return: error arrow-parens: - error - as-needed arrow-spacing: error block-scoped-var: error block-spacing: error brace-style: error # Waiting for this to have matured a bit in eslint # camelcase: # - error # - properties: never # allow: [^vfunc_, ^on_, _instance_init] comma-dangle: - error - arrays: always-multiline objects: always-multiline functions: never comma-spacing: - error - before: false after: true comma-style: - error - last computed-property-spacing: error curly: - error - multi-or-nest - consistent dot-location: - error - property eol-last: error eqeqeq: error func-call-spacing: error func-name-matching: error func-style: - error - declaration - allowArrowFunctions: true indent: - error - 4 - ignoredNodes: # Allow not indenting the body of GObject.registerClass, since in the # future it's intended to be a decorator - 'CallExpression[callee.object.name=GObject][callee.property.name=registerClass] > ClassExpression:first-child' # Allow dedenting chained member expressions MemberExpression: 'off' jsdoc/check-alignment: error jsdoc/check-param-names: error jsdoc/check-tag-names: error jsdoc/check-types: error jsdoc/implements-on-classes: error jsdoc/tag-lines: - error - any - startLines: 1 jsdoc/require-jsdoc: error jsdoc/require-param: error jsdoc/require-param-description: error jsdoc/require-param-name: error jsdoc/require-param-type: error key-spacing: - error - beforeColon: false afterColon: true keyword-spacing: - error - before: true after: true linebreak-style: - error - unix lines-between-class-members: - error - always - exceptAfterSingleLine: true max-nested-callbacks: error max-statements-per-line: error new-parens: error no-array-constructor: error no-await-in-loop: error no-caller: error no-constant-condition: - error - checkLoops: false no-div-regex: error no-empty: - error - allowEmptyCatch: true no-extra-bind: error no-extra-parens: - error - all - conditionalAssign: false nestedBinaryExpressions: false returnAssign: false no-implicit-coercion: - error - allow: - '!!' no-invalid-this: error no-iterator: error no-label-var: error no-lonely-if: error no-loop-func: error no-nested-ternary: error no-new-object: error no-new-wrappers: error no-octal-escape: error no-proto: error no-prototype-builtins: 'off' no-restricted-globals: [error, window] no-restricted-properties: - error - object: Lang property: copyProperties message: Use Object.assign() - object: Lang property: bind message: Use arrow notation or Function.prototype.bind() - object: Lang property: Class message: Use ES6 classes no-restricted-syntax: - error - selector: >- MethodDefinition[key.name="_init"] > FunctionExpression[params.length=1] > BlockStatement[body.length=1] CallExpression[arguments.length=1][callee.object.type="Super"][callee.property.name="_init"] > Identifier:first-child message: _init() that only calls super._init() is unnecessary - selector: >- MethodDefinition[key.name="_init"] > FunctionExpression[params.length=0] > BlockStatement[body.length=1] CallExpression[arguments.length=0][callee.object.type="Super"][callee.property.name="_init"] message: _init() that only calls super._init() is unnecessary - selector: BinaryExpression[operator="instanceof"][right.name="Array"] message: Use Array.isArray() no-return-assign: error no-return-await: error no-self-compare: error no-shadow: error no-shadow-restricted-names: error no-spaced-func: error no-tabs: error no-template-curly-in-string: error no-throw-literal: error no-trailing-spaces: error no-undef-init: error no-unneeded-ternary: error no-unused-expressions: error no-unused-vars: - error # Vars use a suffix _ instead of a prefix because of file-scope private vars - varsIgnorePattern: (^unused|_$) argsIgnorePattern: ^(unused|_) no-useless-call: error no-useless-computed-key: error no-useless-concat: error no-useless-constructor: error no-useless-rename: error no-useless-return: error no-whitespace-before-property: error no-with: error nonblock-statement-body-position: - error - below object-curly-newline: - error - consistent: true multiline: true object-curly-spacing: error object-shorthand: error operator-assignment: error operator-linebreak: error padded-blocks: - error - never # These may be a bit controversial, we can try them out and enable them later # prefer-const: error # prefer-destructuring: error prefer-numeric-literals: error prefer-promise-reject-errors: error prefer-rest-params: error prefer-spread: error prefer-template: error quotes: - error - single - avoidEscape: true require-await: error rest-spread-spacing: error semi: - error - always semi-spacing: - error - before: false after: true semi-style: error space-before-blocks: error space-before-function-paren: - error - named: never # for `function ()` and `async () =>`, preserve space around keywords anonymous: always asyncArrow: always space-in-parens: error space-infix-ops: - error - int32Hint: false space-unary-ops: error spaced-comment: error switch-colon-spacing: error symbol-description: error template-curly-spacing: error template-tag-spacing: error unicode-bom: error wrap-iife: - error - inside yield-star-spacing: error yoda: error settings: jsdoc: mode: typescript globals: ARGV: readonly Debugger: readonly GIRepositoryGType: readonly globalThis: readonly imports: readonly Intl: readonly log: readonly logError: readonly print: readonly printerr: readonly window: readonly TextEncoder: readonly TextDecoder: readonly console: readonly setTimeout: readonly setInterval: readonly clearTimeout: readonly clearInterval: readonly parserOptions: ecmaVersion: 2022 0707010000020A000081A40000000000000000000000016712993F00000306000000000000000000000000000000000000002900000000gnome-shell-47.1/lint/eslintrc-shell.ymlrules: camelcase: - error - properties: never allow: [^vfunc_, ^on_] consistent-return: error eqeqeq: - error - smart key-spacing: - error - mode: minimum beforeColon: false afterColon: true prefer-arrow-callback: error jsdoc/require-param-description: off jsdoc/require-jsdoc: - error - exemptEmptyFunctions: true publicOnly: esm: true overrides: - files: - js/** - tests/shell/** excludedFiles: - js/portalHelper/* - js/extensions/* globals: global: readonly _: readonly C_: readonly N_: readonly ngettext: readonly - files: subprojects/extensions-app/js/** globals: _: readonly C_: readonly N_: readonly 0707010000020B000041ED0000000000000000000000026712993F00000000000000000000000000000000000000000000001500000000gnome-shell-47.1/man0707010000020C000081A40000000000000000000000016712993F00000904000000000000000000000000000000000000002500000000gnome-shell-47.1/man/gnome-shell.rst=========== gnome-shell =========== ------------------------------------- Graphical shell for the GNOME desktop ------------------------------------- :Manual section: 1 :Manual group: User Commands SYNOPSIS -------- **gnome-shell** [*OPTION*...] DESCRIPTION ----------- GNOME shell provides core user interface functions for the GNOME 3 desktop, like switching to windows and launching applications. GNOME shell takes advantage of the capabilities of modern graphics hardware and introduces innovative user interface concepts to provide a visually attractive and easy to use experience. gnome-shell is a required component of the GNOME desktop, i.e. it is listed in the RequiredComponents field of /usr/share/gnome-session/sessions/gnome.session. It is started in the window manager phase of the session. OPTIONS ------- ``--wayland`` Run as a wayland compositor ``--display-server`` Run as a full display server, rather than nested ``--nested`` Run as a nested compositor ``--no-x11`` Run wayland compositor without starting Xwayland ``--x11`` Run with X11 backend ``--wayland-display``\ =\ *DISPLAY* Wayland display name to use ``-d``, ``--display``\ =\ *DISPLAY* X display to use ``-r``, ``--replace`` Replace the running window manager ``--sm-disable`` Disable connection to the session manager ``--sm-client-id``\ =\ *ID* Specify session management *ID* ``--sm-save-file``\ =\ *FILE* Initialize session from *FILE* ``--sync`` Make X calls synchronous ``--mode=MODE`` Use a specific mode, e.g. "gdm" for login screen ``--list-modes`` List possible modes and exit ``--version`` Print version and exit ``--help`` Display help and exit FILES ----- /usr/share/gnome-session/sessions/gnome.session, /usr/share/applications/org.gnome.Shell.desktop. BUGS ---- The bug tracker can be reached by visiting the website https://gitlab.gnome.org/GNOME/gnome-shell/issues. Before sending a bug report, please verify that you have the latest version of gnome-shell. Many bugs (major and minor) are fixed at each release, and if yours is out of date, the problem may already have been solved. ADDITIONAL INFORMATION ---------------------- For further information, visit the website https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/README.md. 0707010000020D000081A40000000000000000000000016712993F000000D1000000000000000000000000000000000000002100000000gnome-shell-47.1/man/meson.buildcustom_target('man page', input: 'gnome-shell.rst', output: 'gnome-shell.1', command: [rst2man, '--syntax-highlight=none', '@INPUT@'], capture: true, install_dir: mandir + '/man1', install: true ) 0707010000020E000041ED0000000000000000000000026712993F00000000000000000000000000000000000000000000001700000000gnome-shell-47.1/meson0707010000020F000081A40000000000000000000000016712993F0000292A000000000000000000000000000000000000001D00000000gnome-shell-47.1/meson.buildproject('gnome-shell', 'c', version: '47.1', meson_version: '>= 0.58.0', license: 'GPLv2+' ) split_version = meson.project_version().split('.') # We depend on a specific version of the libmutter API. The mutter variants of # the Cogl and Clutter libraries also use this API version. # The API version is increased each development cycle, # starting with 0 in 3.23.x mutter_api_version = '15' clutter_pc = 'mutter-clutter-' + mutter_api_version cogl_pc = 'mutter-cogl-' + mutter_api_version cogl_pango_pc = 'mutter-cogl-pango-' + mutter_api_version mtk_pc = 'mutter-mtk-' + mutter_api_version libmutter_pc = 'libmutter-' + mutter_api_version libmutter_test_pc = 'libmutter-test-' + mutter_api_version ecal_req = '>= 3.33.1' eds_req = '>= 3.33.1' gcr_req = '>= 3.90.0' gio_req = '>= 2.79.2' gi_req = '>= 1.49.1' gjs_req = '>= 1.73.1' gtk_req = '>= 4.0' mutter_req = '>= 47.0' polkit_req = '>= 0.100' schemas_req = '>= 47.alpha' systemd_req = '>= 246' ibus_req = '>= 1.5.19' gnome_desktop_req = '>= 40' pipewire_req = '>= 0.3.49' nm_req = '>= 1.10.4' secret_req = '>= 0.18' fs = import('fs') gnome = import('gnome') i18n = import('i18n') prefix = get_option('prefix') bindir = join_paths(prefix, get_option('bindir')) datadir = join_paths(prefix, get_option('datadir')) libdir = join_paths(prefix, get_option('libdir')) libexecdir = join_paths(prefix, get_option('libexecdir')) mandir = join_paths(prefix, get_option('mandir')) sysconfdir = join_paths(prefix, get_option('sysconfdir')) pkgdatadir = join_paths(datadir, meson.project_name()) pkglibdir = join_paths(libdir, meson.project_name()) autostartdir = join_paths(sysconfdir, 'xdg', 'autostart') desktopdir = join_paths(datadir, 'applications') icondir = join_paths(datadir, 'icons') ifacedir = join_paths(datadir, 'dbus-1', 'interfaces') localedir = join_paths(datadir, 'locale') metainfodir = join_paths(datadir, 'metainfo') schemadir = join_paths(datadir, 'glib-2.0', 'schemas') servicedir = join_paths(datadir, 'dbus-1', 'services') keybindings_dep = dependency('gnome-keybindings', required: false) if keybindings_dep.found() keysdir = keybindings_dep.get_variable('keysdir', pkgconfig_define: ['datadir', datadir]) else keysdir = join_paths(datadir, 'gnome-control-center', 'keybindings') endif atk_bridge_dep = dependency('atk-bridge-2.0') ecal_dep = dependency('libecal-2.0', version: ecal_req) eds_dep = dependency('libedataserver-1.2', version: eds_req) gcr_dep = dependency('gcr-4', version: gcr_req) gdk_pixbuf_dep = dependency('gdk-pixbuf-2.0') gi_dep = dependency('gobject-introspection-1.0', version: gi_req) gio_dep = dependency('gio-2.0', version: gio_req) gio_unix_dep = dependency('gio-unix-2.0', version: gio_req) gjs_dep = dependency('gjs-1.0', version: gjs_req) gtk_dep = dependency('gtk4', version: gtk_req) libxml_dep = dependency('libxml-2.0') clutter_dep = dependency(clutter_pc, version: mutter_req) mtk_dep = dependency(mtk_pc, version: mutter_req) cogl_dep = dependency(cogl_pc, version: mutter_req) cogl_pango_dep = dependency(cogl_pango_pc, version: mutter_req) mutter_dep = dependency(libmutter_pc, version: mutter_req) polkit_dep = dependency('polkit-agent-1', version: polkit_req) ibus_dep = dependency('ibus-1.0', version: ibus_req) schemas_dep = dependency('gsettings-desktop-schemas', version: schemas_req) gnome_desktop_dep = dependency('gnome-desktop-4', version: gnome_desktop_req) have_x11 = mutter_dep.get_variable('have_x11') == 'true' have_x11_client = mutter_dep.get_variable('have_x11_client') == 'true' if have_x11_client or have_x11 x11_dep = dependency('x11') endif nm_deps = [] if get_option('networkmanager') nm_deps += dependency('libnm', version: nm_req) nm_deps += dependency('libsecret-1', version: secret_req) have_networkmanager = true else have_networkmanager = false endif have_portal_helper = get_option('portal_helper') if have_portal_helper and not have_networkmanager error('Portal helper requires networkmanager support') endif if get_option('camera_monitor') libpipewire_dep = dependency('libpipewire-0.3', version: pipewire_req) have_pipewire = true else libpipewire_dep = [] have_pipewire = false endif if get_option('systemd') libsystemd_dep = dependency('libsystemd', version: systemd_req) systemd_dep = dependency('systemd', version: systemd_req) systemduserunitdir = systemd_dep.get_variable('systemduserunitdir', pkgconfig_define: ['prefix', prefix]) have_systemd = true else libsystemd_dep = [] have_systemd = false endif if get_option('man') rst2man = find_program('rst2man') subdir('man') endif mutter_typelibdir = mutter_dep.get_variable('typelibdir') python = find_program('python3') gjs = find_program('gjs') cc = meson.get_compiler('c') m_dep = cc.find_library('m', required: false) cdata = configuration_data() cdata.set_quoted('GETTEXT_PACKAGE', meson.project_name()) cdata.set_quoted('VERSION', meson.project_version()) cdata.set_quoted('PACKAGE_VERSION', meson.project_version()) cdata.set('HAVE_NETWORKMANAGER', have_networkmanager) cdata.set('HAVE_PIPEWIRE', have_pipewire) cdata.set('HAVE_SYSTEMD', have_systemd) cdata.set('HAVE_X11', have_x11) cdata.set('HAVE_X11_CLIENT', have_x11_client) cdata.set('HAVE_FDWALK', cc.has_function('fdwalk')) cdata.set('HAVE_MALLINFO', cc.has_function('mallinfo')) cdata.set('HAVE_MALLINFO2', cc.has_function('mallinfo2')) cdata.set('HAVE_SYS_RESOURCE_H', cc.has_header('sys/resource.h')) cdata.set('HAVE_EXE_INTROSPECTION', cc.has_header('elf.h') and cc.has_header('link.h')) cdata.set('HAVE__NL_TIME_FIRST_WEEKDAY', cc.has_header_symbol('langinfo.h', '_NL_TIME_FIRST_WEEKDAY') ) cdata.set('HAVE_FDWALK', cc.has_function('fdwalk') ) polkit_has_autocleanup = cc.compiles( ''' #define POLKIT_AGENT_I_KNOW_API_IS_SUBJECT_TO_CHANGE #include void main(void) { g_autoptr(PolkitAgentListener) agent = NULL; } ''', dependencies: polkit_dep) cdata.set('HAVE_POLKIT_AUTOCLEANUP', polkit_has_autocleanup) buildtype = get_option('buildtype') if buildtype != 'plain' gs_c_args = [ '-fno-omit-frame-pointer', '-mno-omit-leaf-frame-pointer', '-fno-strict-aliasing', '-Wpointer-arith', '-Wmissing-declarations', '-Wimplicit-function-declaration', '-Wformat=2', '-Wformat-nonliteral', '-Wformat-security', '-Wstrict-prototypes', '-Wmissing-prototypes', '-Wnested-externs', '-Wold-style-definition', '-Wundef', '-Wunused', '-Wcast-align', '-Wmissing-noreturn', '-Wmissing-format-attribute', '-Wmissing-include-dirs', '-Wlogical-op', '-Wignored-qualifiers', '-Werror=redundant-decls', '-Werror=implicit', '-Werror=nonnull', '-Werror=init-self', '-Werror=main', '-Werror=missing-braces', '-Werror=sequence-point', '-Werror=return-type', '-Werror=trigraphs', '-Werror=array-bounds', '-Werror=write-strings', '-Werror=address', '-Werror=int-to-pointer-cast', '-Werror=pointer-to-int-cast', '-Werror=empty-body', '-Werror=write-strings', ] if get_option('debug') gs_c_args += [ '-DG_ENABLE_DEBUG', ] endif supported_gs_c_args = cc.get_supported_arguments(gs_c_args) add_project_arguments(supported_gs_c_args, language: 'c') endif config_h = configure_file( input: 'config.h.meson', output: 'config.h', configuration: cdata ) conf_inc = include_directories('.') libgvc = subproject('gvc', default_options: [ 'package_name=' + meson.project_name(), 'package_version=' + meson.project_version(), 'pkgdatadir=' + pkgdatadir, 'pkglibdir=' + pkglibdir, 'static=false', 'introspection=true', 'alsa=false' ] ) libgvc_gir = libgvc.get_variable('libgvc_gir') libshew = subproject('shew', default_options: [ 'package_name=@0@'.format(meson.project_name()), ] ) libshew_version = libshew.get_variable('package_version') assert(libshew_version == meson.project_version(), 'shew version does not match project version') if get_option('extensions_tool') extension_tool = subproject('extensions-tool', default_options: [ 'package_name=@0@'.format(meson.project_name()), ] ) extension_tool_version = extension_tool.get_variable('package_version') assert(extension_tool_version == meson.project_version(), 'extension-tool version does not match project version' ) endif if get_option('extensions_app') extensions_app = subproject('extensions-app', default_options: [ 'package_name=@0@'.format(meson.project_name()), ] ) extensions_app_version = extensions_app.get_variable('package_version') assert(extensions_app_version == meson.project_version(), 'Extensions app version does not match project version' ) endif if get_option('tests') common_test_env = environment() common_test_env.set('GSETTINGS_SCHEMA_DIR', meson.project_build_root() / 'data') common_test_env.set('GSETTINGS_BACKEND', 'memory') common_test_env.set('XDG_CURRENT_DESKTOP', '') jasmine = find_program('jasmine') add_test_setup('default', is_default: true, env: common_test_env, ) endif po_dir = join_paths(meson.current_source_dir(), 'po') subdir('js') subdir('src') subdir('po') subdir('data') if get_option('tests') and have_x11_client subdir('tests') endif if get_option('gtk_doc') subdir('docs/reference') endif gnome.post_install( glib_compile_schemas: true, gtk_update_icon_cache: true ) meson.add_dist_script('meson/generate-stylesheets.py') meson.add_dist_script('meson/check-version.py', meson.project_version(), 'NEWS') summary_options = { 'x11': have_x11, 'x11_client': have_x11_client, 'camera_monitor': get_option('camera_monitor'), 'networkmanager': get_option('networkmanager'), 'systemd': get_option('systemd'), 'extensions_app': get_option('extensions_app'), 'extensions_tool': get_option('extensions_tool'), 'man': get_option('man'), 'gtk_doc': get_option('gtk_doc'), } summary_build = { 'buildtype': get_option('buildtype'), 'debug': get_option('debug'), } summary_dirs = { 'prefix': get_option('prefix'), 'bindir': get_option('bindir'), 'libdir': get_option('libdir'), 'libexecdir': get_option('libexecdir'), 'datadir': get_option('datadir'), 'sysconfdir': get_option('sysconfdir'), } if get_option('man') summary_dirs += { 'mandir': get_option('mandir') } endif summary(summary_dirs, section: 'Directories') summary(summary_build, section: 'Build Configuration') summary(summary_options, section: 'Build Options') 07070100000210000081ED0000000000000000000000016712993F0000043F000000000000000000000000000000000000002800000000gnome-shell-47.1/meson/check-version.py#!/usr/bin/env python3 import os, sys from pathlib import Path import argparse, subprocess def check_version(version, file, type='news'): if type == 'news': line = file.open().readline() ok = line.startswith(version) print("{}: {}".format(file, "OK" if ok else "FAILED")) if not ok: raise Exception("{} does not start with {}".format(file, version)) elif type == 'metainfo': subprocess.run(['appstream-util', 'validate-version', file, version], check=True) else: raise Exception('Not implemented') parser = argparse.ArgumentParser(description='Check release version information.') parser.add_argument('--type', choices=['metainfo','news'], default='news') parser.add_argument('version', help='the version to check for') parser.add_argument('files', nargs='+', help='files to check') args = parser.parse_args() distroot = os.environ.get('MESON_DIST_ROOT', './') try: for file in args.files: check_version(args.version, Path(distroot, file), args.type) except: sys.exit(1) 07070100000211000081A40000000000000000000000016712993F00000239000000000000000000000000000000000000002F00000000gnome-shell-47.1/meson/generate-stylesheets.py#!/usr/bin/env python3 import os from pathlib import PurePath import subprocess stylesheets = [ 'data/theme/gnome-shell-high-contrast.css', 'data/theme/gnome-shell-dark.css', 'data/theme/gnome-shell-light.css' ] sourceroot = os.environ.get('MESON_SOURCE_ROOT') distroot = os.environ.get('MESON_DIST_ROOT') for stylesheet in stylesheets: stylesheet_path = PurePath(stylesheet) src = PurePath(sourceroot, stylesheet_path.with_suffix('.scss')) dst = PurePath(distroot, stylesheet_path) subprocess.run(['sassc', '-a', src, dst], check=True) 07070100000212000081A40000000000000000000000016712993F00000398000000000000000000000000000000000000002300000000gnome-shell-47.1/meson_options.txtoption('camera_monitor', type: 'boolean', value: true, description: 'Enable the camera monitor' ) option('extensions_tool', type: 'boolean', value: true, description: 'Build gnome-extensions CLI tool' ) option('extensions_app', type: 'boolean', value: true, description: 'Build gnome-extensions GUI application' ) option('gtk_doc', type: 'boolean', value: false, description: 'Build API reference' ) option('man', type: 'boolean', value: true, description: 'Generate man pages' ) option('tests', type: 'boolean', value: true, description: 'Enable tests' ) option('networkmanager', type: 'boolean', value: true, description: 'Enable NetworkManager support' ) option('portal_helper', type: 'boolean', value: true, description: 'Enable build-in network portal login' ) option('systemd', type: 'boolean', value: true, description: 'Enable systemd integration' ) 07070100000213000041ED0000000000000000000000026712993F00000000000000000000000000000000000000000000001400000000gnome-shell-47.1/po07070100000214000081A40000000000000000000000016712993F00000138000000000000000000000000000000000000001C00000000gnome-shell-47.1/po/LINGUASab af an ar as ast be bg bn bn_IN bs ca ca@valencia ckb cs da de el en_GB eo es et eu fa fi fr fur fy ga gd gl gu he hi hr hu ia id ie is it ja ka kab kk km kn ko ku ky lt lv mjw mk ml mr ms nb ne nl nn oc or os pa pl pt pt_BR ro ru si sk sl sr sr@latin sv ta te tg th tr ug uk uz@cyrillic vi zh_CN zh_HK zh_TW 07070100000215000081A40000000000000000000000016712993F00000E2F000000000000000000000000000000000000002000000000gnome-shell-47.1/po/POTFILES.in# List of source files containing translatable strings. # Please keep this file sorted alphabetically. data/50-gnome-shell-launchers.xml data/50-gnome-shell-screenshots.xml data/50-gnome-shell-system.xml data/org.gnome.Shell.desktop.in.in data/org.gnome.shell.gschema.xml.in data/org.gnome.Shell.Extensions.desktop.in.in data/org.gnome.Shell.PortalHelper.desktop.in.in js/dbusServices/extensions/ui/extension-error-page.ui js/gdm/authPrompt.js js/gdm/loginDialog.js js/gdm/util.js js/misc/systemActions.js js/misc/util.js js/misc/dateUtils.js js/portalHelper/main.js js/ui/accessDialog.js js/ui/appDisplay.js js/ui/appFavorites.js js/ui/appMenu.js js/ui/audioDeviceSelection.js js/ui/backgroundMenu.js js/ui/calendar.js js/ui/closeDialog.js js/ui/components/automountManager.js js/ui/components/autorunManager.js js/ui/components/keyring.js js/ui/components/networkAgent.js js/ui/components/polkitAgent.js js/ui/ctrlAltTab.js js/ui/dash.js js/ui/dateMenu.js js/ui/endSessionDialog.js js/ui/extensionDownloader.js js/ui/extensionSystem.js js/ui/inhibitShortcutsDialog.js js/ui/kbdA11yDialog.js js/ui/keyboard.js js/ui/lookingGlass.js js/ui/main.js js/ui/messageList.js js/ui/messageTray.js js/ui/mpris.js js/ui/notificationDaemon.js js/ui/osdWindow.js js/ui/overviewControls.js js/ui/overview.js js/ui/padOsd.js js/ui/panel.js js/ui/popupMenu.js js/ui/quickSettings.js js/ui/runDialog.js js/ui/screenShield.js js/ui/screenshot.js js/ui/search.js js/ui/searchController.js js/ui/shellEntry.js js/ui/shellMountOperation.js js/ui/status/accessibility.js js/ui/status/autoRotate.js js/ui/status/backgroundApps.js js/ui/status/backlight.js js/ui/status/bluetooth.js js/ui/status/brightness.js js/ui/status/darkMode.js js/ui/status/dwellClick.js js/ui/status/keyboard.js js/ui/status/location.js js/ui/status/network.js js/ui/status/nightLight.js js/ui/status/powerProfiles.js js/ui/status/remoteAccess.js js/ui/status/rfkill.js js/ui/status/system.js js/ui/status/thunderbolt.js js/ui/status/volume.js js/ui/switchMonitor.js js/ui/unlockDialog.js js/ui/welcomeDialog.js js/ui/windowAttentionHandler.js js/ui/windowManager.js js/ui/windowMenu.js src/main.c src/shell-app.c src/shell-app-system.c src/shell-global.c src/shell-keyring-prompt.c src/shell-polkit-authentication-agent.c src/shell-util.c src/st/st-icon-theme.c subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in subprojects/extensions-app/js/extensionManager.js subprojects/extensions-app/js/extensionRow.js subprojects/extensions-app/js/extensionsWindow.js subprojects/extensions-app/data/ui/extension-row.ui subprojects/extensions-app/data/ui/extensions-window.ui subprojects/extensions-app/data/ui/help-overlay.ui subprojects/extensions-tool/src/command-create.c subprojects/extensions-tool/src/command-disable.c subprojects/extensions-tool/src/command-enable.c subprojects/extensions-tool/src/command-info.c subprojects/extensions-tool/src/command-install.c subprojects/extensions-tool/src/command-list.c subprojects/extensions-tool/src/command-pack.c subprojects/extensions-tool/src/command-prefs.c subprojects/extensions-tool/src/command-reset.c subprojects/extensions-tool/src/command-uninstall.c subprojects/extensions-tool/src/main.c subprojects/extensions-tool/src/templates/00-plain.desktop.in subprojects/extensions-tool/src/templates/indicator.desktop.in subprojects/extensions-tool/src/templates/quick-settings.desktop.in # Please do not remove this file from POTFILES.in. Run "git submodule init && git submodule update" to get it. subprojects/gvc/gvc-mixer-control.c 07070100000216000081A40000000000000000000000016712993F00000114000000000000000000000000000000000000002200000000gnome-shell-47.1/po/POTFILES.skipdata/org.gnome.Shell@wayland.service.in data/org.gnome.Shell@x11.service.in js/ui/init.js subprojects/extensions-tool/src/templates/indicator/extension.js subprojects/extensions-tool/src/templates/prefs.js subprojects/extensions-tool/src/templates/quick-settings/extension.js 07070100000217000081A40000000000000000000000016712993F0000ECA2000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/ab.pomsgid "" msgstr "" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" "POT-Creation-Date: 2022-10-26 10:09+0000\n" "Last-Translator: Нанба Наала \n" "Language-Team: Abkhazian \n" "Language: ab\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-DamnedLies-Scope: partial\n" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate favorite application 1" msgstr "" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate favorite application 2" msgstr "" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate favorite application 3" msgstr "" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate favorite application 4" msgstr "" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate favorite application 5" msgstr "" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate favorite application 6" msgstr "" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate favorite application 7" msgstr "" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate favorite application 8" msgstr "" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate favorite application 9" msgstr "" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2079 msgid "Screenshots" msgstr "" #: data/50-gnome-shell-system.xml:6 msgid "System" msgstr "" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "" #: data/50-gnome-shell-system.xml:12 msgid "Focus the active notification" msgstr "" #: data/50-gnome-shell-system.xml:15 msgid "Show the overview" msgstr "" #: data/50-gnome-shell-system.xml:18 msgid "Show all applications" msgstr "" #: data/50-gnome-shell-system.xml:21 msgid "Open the application menu" msgstr "Аԥшьы амениу аартра " #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "GNOME Shell" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" "Аҭҵааҩцәеи аԥышәара азызуои рзы Alt-F2 аҟынтәи аҩныҵҟатәи амаругақәа рҿакра" #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "UUID иаҿаку ахкырбагақәа" #: data/org.gnome.shell.gschema.xml.in:293 msgid "Locations" msgstr "Аҭыӡҭыԥқәа" #: data/org.gnome.shell.gschema.xml.in:304 msgid "Automatic location" msgstr "Автоматикла ҭыԥс аҟазаара аилкаара" #: data/org.gnome.shell.gschema.xml.in:312 msgid "Location" msgstr "Аҭыӡҭыԥ" #: data/org.gnome.shell.gschema.xml.in:334 msgid "Enable edge tiling when dropping windows on screen edges" msgstr "" "Аԥенџьырқәа аекран акьыԥшь ахь реиҭагараан автоматикла аԥенџьыр ашәагаа " "аҽаԥсахра аҿакра." #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:144 msgid "Something’s gone wrong" msgstr "" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 msgid "Visit extension homepage" msgstr "" #: js/gdm/authPrompt.js:144 js/ui/audioDeviceSelection.js:61 #: js/ui/components/networkAgent.js:109 js/ui/components/polkitAgent.js:141 #: js/ui/endSessionDialog.js:440 js/ui/extensionDownloader.js:223 #: js/ui/shellMountOperation.js:377 js/ui/shellMountOperation.js:387 #: subprojects/extensions-app/js/main.js:173 msgid "Cancel" msgstr "Аԥыхры" #: js/gdm/authPrompt.js:307 js/ui/components/networkAgent.js:209 #: js/ui/components/networkAgent.js:229 js/ui/components/networkAgent.js:261 #: js/ui/components/networkAgent.js:294 js/ui/components/networkAgent.js:333 #: js/ui/components/networkAgent.js:346 js/ui/components/polkitAgent.js:283 #: js/ui/shellMountOperation.js:327 msgid "Password" msgstr "Ажәамаӡа" #: js/gdm/loginDialog.js:317 msgid "Choose Session" msgstr "" #: js/gdm/loginDialog.js:462 msgid "Not listed?" msgstr "" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:930 #, javascript-format msgid "(e.g., user or %s)" msgstr "" #: js/gdm/loginDialog.js:935 js/ui/components/networkAgent.js:253 #: js/ui/components/networkAgent.js:288 js/ui/components/networkAgent.js:322 msgid "Username" msgstr "Ахархәаҩ ихьӡ" #: js/gdm/loginDialog.js:1258 msgid "Login Window" msgstr "" #: js/gdm/util.js:431 msgid "Authentication error" msgstr "" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:603 msgid "(or swipe finger across reader)" msgstr "" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:608 msgid "(or place finger on reader)" msgstr "" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:84 msgctxt "search-result" msgid "Power Off" msgstr "" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:87 msgid "power off;shutdown;halt;stop" msgstr "" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:92 msgctxt "search-result" msgid "Restart" msgstr "" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:95 msgid "reboot;restart;" msgstr "" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:100 msgctxt "search-result" msgid "Lock Screen" msgstr "" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:103 msgid "lock screen" msgstr "" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:108 msgctxt "search-result" msgid "Log Out" msgstr "" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:111 msgid "logout;log out;sign off" msgstr "" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:116 msgctxt "search-result" msgid "Suspend" msgstr "" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:119 msgid "suspend;sleep" msgstr "" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:124 msgctxt "search-result" msgid "Switch User" msgstr "" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:127 msgid "switch user" msgstr "" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:134 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:139 msgctxt "search-result" msgid "Take a Screenshot" msgstr "" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:142 msgid "screenshot;screencast;snip;capture;record" msgstr "" #: js/misc/systemActions.js:242 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "" #: js/misc/systemActions.js:243 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "" #: js/misc/util.js:129 msgid "Command not found" msgstr "" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:166 msgid "Could not parse command:" msgstr "" #: js/misc/util.js:174 #, javascript-format msgid "Execution of “%s” failed:" msgstr "" #: js/misc/util.js:191 msgid "Just now" msgstr "" #: js/misc/util.js:193 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "" msgstr[1] "" #: js/misc/util.js:197 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "" msgstr[1] "" #: js/misc/util.js:201 js/ui/dateMenu.js:167 msgid "Yesterday" msgstr "Иацы" #: js/misc/util.js:203 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "" msgstr[1] "" #: js/misc/util.js:207 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "" msgstr[1] "" #: js/misc/util.js:211 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "" msgstr[1] "" #: js/misc/util.js:214 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "" msgstr[1] "" #. Translators: Time in 24h format #: js/misc/util.js:247 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/util.js:253 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "Иацы, %H∶%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/util.js:259 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/util.js:265 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%-d %B, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/util.js:271 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%-d %B %Y, %H∶%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/util.js:276 msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/util.js:282 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "Иацы, %-l∶%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/util.js:288 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %-l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/util.js:294 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%-d %B, %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/util.js:300 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%-d %B %Y, %l∶%M %p" #: js/portalHelper/main.js:55 msgid "Hotspot Login" msgstr "Анеира аҭыԥ аҟны ахаҭара шьақәыргылара" #: js/portalHelper/main.js:108 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:39 js/ui/status/location.js:350 msgid "Deny Access" msgstr "" #: js/ui/accessDialog.js:40 js/ui/status/location.js:355 msgid "Grant Access" msgstr "" #: js/ui/appDisplay.js:1728 msgid "Unnamed Folder" msgstr "" #: js/ui/appFavorites.js:166 #, javascript-format msgid "%s has been pinned to the dash." msgstr "" #: js/ui/appFavorites.js:199 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "" #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:46 msgid "Open Windows" msgstr "" #: js/ui/appMenu.js:54 msgid "New Window" msgstr "" #: js/ui/appMenu.js:81 msgid "Show Details" msgstr "" #: js/ui/appMenu.js:97 msgid "Quit" msgstr "Аҭыҵра" #: js/ui/appMenu.js:157 js/ui/dash.js:249 msgid "Unpin" msgstr "" #: js/ui/appMenu.js:158 msgid "Pin to Dash" msgstr "" #: js/ui/appMenu.js:175 msgid "Launch using Integrated Graphics Card" msgstr "" #: js/ui/appMenu.js:176 msgid "Launch using Discrete Graphics Card" msgstr "" #: js/ui/audioDeviceSelection.js:41 msgid "Select Audio Device" msgstr "" #: js/ui/audioDeviceSelection.js:56 js/ui/status/volume.js:63 msgid "Sound Settings" msgstr "" #: js/ui/audioDeviceSelection.js:69 msgid "Headphones" msgstr "" #: js/ui/audioDeviceSelection.js:71 msgid "Headset" msgstr "" #: js/ui/audioDeviceSelection.js:73 js/ui/status/volume.js:322 msgid "Microphone" msgstr "" #: js/ui/backgroundMenu.js:14 msgid "Change Background…" msgstr "" #: js/ui/backgroundMenu.js:16 msgid "Display Settings" msgstr "" #: js/ui/backgroundMenu.js:17 #: subprojects/extensions-app/data/ui/extension-row.ui:122 msgid "Settings" msgstr "" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:35 msgctxt "calendar-no-work" msgid "06" msgstr "" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:61 msgctxt "grid sunday" msgid "S" msgstr "" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:63 msgctxt "grid monday" msgid "M" msgstr "" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:65 msgctxt "grid tuesday" msgid "T" msgstr "" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:67 msgctxt "grid wednesday" msgid "W" msgstr "" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:69 msgctxt "grid thursday" msgid "T" msgstr "" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:71 msgctxt "grid friday" msgid "F" msgstr "" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:73 msgctxt "grid saturday" msgid "S" msgstr "" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:414 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:424 msgid "%OB %Y" msgstr "%OB %Y" #: js/ui/calendar.js:485 msgid "Previous month" msgstr "Иаҧхьааиуа амз" #: js/ui/calendar.js:503 msgid "Next month" msgstr "Анаҩстәи амз" #: js/ui/calendar.js:654 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "" #: js/ui/calendar.js:713 msgid "Week %V" msgstr "" #: js/ui/calendar.js:892 msgid "No Notifications" msgstr "" #: js/ui/calendar.js:949 msgid "Do Not Disturb" msgstr "" #: js/ui/calendar.js:970 msgid "Clear" msgstr "Арыцқьара" #. Translators: %s is an application name #: js/ui/closeDialog.js:40 #, javascript-format msgid "“%s” is not responding." msgstr "" #: js/ui/closeDialog.js:41 msgid "" "You may choose to wait a short while for it to continue or force the " "application to quit entirely." msgstr "" #: js/ui/closeDialog.js:69 msgid "Force Quit" msgstr "" #: js/ui/closeDialog.js:74 msgid "Wait" msgstr "" #: js/ui/components/automountManager.js:84 msgid "External drive connected" msgstr "" #: js/ui/components/automountManager.js:96 msgid "External drive disconnected" msgstr "" #: js/ui/components/automountManager.js:207 msgid "Unable to unlock volume" msgstr "" #: js/ui/components/automountManager.js:208 msgid "The installed udisks version does not support the PIM setting" msgstr "" #: js/ui/components/autorunManager.js:316 #, javascript-format msgid "Open with %s" msgstr "" #: js/ui/components/networkAgent.js:91 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router." msgstr "" #: js/ui/components/networkAgent.js:103 js/ui/status/network.js:436 msgid "Connect" msgstr "" #: js/ui/components/networkAgent.js:218 msgid "Key" msgstr "Ацвԥха" #: js/ui/components/networkAgent.js:269 js/ui/components/networkAgent.js:308 msgid "Private key password" msgstr "" #: js/ui/components/networkAgent.js:302 msgid "Identity" msgstr "" #: js/ui/components/networkAgent.js:328 msgid "Service" msgstr "" #: js/ui/components/networkAgent.js:366 js/ui/components/networkAgent.js:402 #: js/ui/components/networkAgent.js:747 js/ui/components/networkAgent.js:768 msgid "Authentication required" msgstr "" #: js/ui/components/networkAgent.js:367 js/ui/components/networkAgent.js:748 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network " "“%s”." msgstr "" #: js/ui/components/networkAgent.js:371 js/ui/components/networkAgent.js:752 msgid "Wired 802.1X authentication" msgstr "Ахаҭареилкаара Wired 802.1X" #: js/ui/components/networkAgent.js:374 msgid "Network name" msgstr "" #: js/ui/components/networkAgent.js:382 js/ui/components/networkAgent.js:756 msgid "DSL authentication" msgstr "Ахаҭареилкаара DSL" #: js/ui/components/networkAgent.js:389 js/ui/components/networkAgent.js:761 msgid "PIN code required" msgstr "" #: js/ui/components/networkAgent.js:390 js/ui/components/networkAgent.js:762 msgid "PIN code is needed for the mobile broadband device" msgstr "" #: js/ui/components/networkAgent.js:392 msgid "PIN" msgstr "PIN" #: js/ui/components/networkAgent.js:403 js/ui/components/networkAgent.js:753 #: js/ui/components/networkAgent.js:757 js/ui/components/networkAgent.js:769 #: js/ui/components/networkAgent.js:773 #, javascript-format msgid "A password is required to connect to “%s”." msgstr "" #: js/ui/components/networkAgent.js:736 msgid "Network Manager" msgstr "" #: js/ui/components/networkAgent.js:772 msgid "VPN password" msgstr "VPN Ажәамаӡа " #: js/ui/components/polkitAgent.js:41 msgid "Authentication Required" msgstr "" #: js/ui/components/polkitAgent.js:81 msgid "Administrator" msgstr "Анаԥхгаҩы" #: js/ui/components/polkitAgent.js:146 msgid "Authenticate" msgstr "" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:260 js/ui/shellMountOperation.js:403 msgid "Sorry, that didn’t work. Please try again." msgstr "" #: js/ui/components/telepathyClient.js:828 #, javascript-format msgid "%s is now known as %s" msgstr "" #: js/ui/ctrlAltTab.js:22 js/ui/overviewControls.js:417 msgid "Windows" msgstr "Windows" #: js/ui/dash.js:205 js/ui/dash.js:251 msgid "Show Applications" msgstr "" #. Translators: this is the name of the dock/favorites area on #. the left of the overview #: js/ui/dash.js:398 msgid "Dash" msgstr "" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:83 msgid "%B %-d %Y" msgstr "%-d %B %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:90 msgid "%A %B %e %Y" msgstr "%A, %-d %B %Y" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:156 msgctxt "calendar heading" msgid "%B %-d" msgstr "" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:159 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "" #: js/ui/dateMenu.js:165 msgid "Today" msgstr "Иахьа" #: js/ui/dateMenu.js:169 msgid "Tomorrow" msgstr "Уаҵәы" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:200 msgctxt "event list time" msgid "All Day" msgstr "" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:222 msgid "%m/%d" msgstr "%d/%m" #: js/ui/dateMenu.js:273 msgid "No Events" msgstr "" #: js/ui/dateMenu.js:396 msgid "Add world clocks…" msgstr "" #: js/ui/dateMenu.js:397 msgid "World Clocks" msgstr "" #: js/ui/dateMenu.js:681 msgid "Loading…" msgstr "Аҭагалара..." #: js/ui/dateMenu.js:691 msgid "Go online for weather information" msgstr "" #: js/ui/dateMenu.js:693 msgid "Weather information is currently unavailable" msgstr "" #: js/ui/dateMenu.js:703 msgid "Weather" msgstr "Амш зеиԥшроу" #: js/ui/dateMenu.js:705 msgid "Select weather location…" msgstr "" #: js/ui/endSessionDialog.js:41 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "" #: js/ui/endSessionDialog.js:42 msgctxt "title" msgid "Log Out" msgstr "" #: js/ui/endSessionDialog.js:45 #, javascript-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "" msgstr[1] "" #: js/ui/endSessionDialog.js:51 #, javascript-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "" msgstr[1] "" #: js/ui/endSessionDialog.js:58 msgctxt "button" msgid "Log Out" msgstr "" #: js/ui/endSessionDialog.js:64 js/ui/status/system.js:167 msgctxt "title" msgid "Power Off" msgstr "" #: js/ui/endSessionDialog.js:65 msgctxt "title" msgid "Install Updates & Power Off" msgstr "" #: js/ui/endSessionDialog.js:68 #, javascript-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "" msgstr[1] "" #: js/ui/endSessionDialog.js:72 js/ui/endSessionDialog.js:91 msgctxt "checkbox" msgid "Install pending software updates" msgstr "" #: js/ui/endSessionDialog.js:76 msgctxt "button" msgid "Power Off" msgstr "" #: js/ui/endSessionDialog.js:83 msgctxt "title" msgid "Restart" msgstr "" #: js/ui/endSessionDialog.js:84 msgctxt "title" msgid "Install Updates & Restart" msgstr "" #: js/ui/endSessionDialog.js:87 #, javascript-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "" msgstr[1] "" #: js/ui/endSessionDialog.js:95 msgctxt "button" msgid "Restart" msgstr "" #: js/ui/endSessionDialog.js:103 msgctxt "title" msgid "Restart & Install Updates" msgstr "" #: js/ui/endSessionDialog.js:106 #, javascript-format msgid "The system will automatically restart and install updates in %d second." msgid_plural "" "The system will automatically restart and install updates in %d seconds." msgstr[0] "" msgstr[1] "" #: js/ui/endSessionDialog.js:113 js/ui/endSessionDialog.js:134 msgctxt "button" msgid "Restart & Install" msgstr "" #: js/ui/endSessionDialog.js:115 msgctxt "button" msgid "Install & Power Off" msgstr "" #: js/ui/endSessionDialog.js:116 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "" #: js/ui/endSessionDialog.js:123 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:128 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" #: js/ui/endSessionDialog.js:285 msgid "Low battery power: please plug in before installing updates." msgstr "" #: js/ui/endSessionDialog.js:294 msgid "Some applications are busy or have unsaved work" msgstr "" #: js/ui/endSessionDialog.js:299 msgid "Other users are logged in" msgstr "" #: js/ui/endSessionDialog.js:470 msgctxt "button" msgid "Boot Options" msgstr "" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:675 #, javascript-format msgid "%s (remote)" msgstr "" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:678 #, javascript-format msgid "%s (console)" msgstr "" #: js/ui/extensionDownloader.js:227 msgid "Install" msgstr "" #: js/ui/extensionDownloader.js:233 msgid "Install Extension" msgstr "" #: js/ui/extensionDownloader.js:234 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "" #: js/ui/extensionSystem.js:270 msgid "Extension Updates Available" msgstr "" #: js/ui/extensionSystem.js:271 msgid "Extension updates are ready to be installed." msgstr "" #: js/ui/inhibitShortcutsDialog.js:75 msgid "Allow inhibiting shortcuts" msgstr "" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:78 #, javascript-format msgid "The application %s wants to inhibit shortcuts" msgstr "" #: js/ui/inhibitShortcutsDialog.js:79 msgid "An application wants to inhibit shortcuts" msgstr "" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:86 #, javascript-format msgid "You can restore shortcuts by pressing %s." msgstr "" #: js/ui/inhibitShortcutsDialog.js:97 msgid "Deny" msgstr "" #: js/ui/inhibitShortcutsDialog.js:106 msgid "Allow" msgstr "Азин аҭара" #: js/ui/kbdA11yDialog.js:32 msgid "Slow Keys Turned On" msgstr "" #: js/ui/kbdA11yDialog.js:33 msgid "Slow Keys Turned Off" msgstr "" #: js/ui/kbdA11yDialog.js:34 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" #: js/ui/kbdA11yDialog.js:40 msgid "Sticky Keys Turned On" msgstr "" #: js/ui/kbdA11yDialog.js:41 msgid "Sticky Keys Turned Off" msgstr "" #: js/ui/kbdA11yDialog.js:43 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" #: js/ui/kbdA11yDialog.js:55 msgid "Leave On" msgstr "" #: js/ui/kbdA11yDialog.js:55 msgid "Turn On" msgstr "Аҿакра" #: js/ui/kbdA11yDialog.js:65 js/ui/status/network.js:447 msgid "Turn Off" msgstr "" #: js/ui/kbdA11yDialog.js:65 msgid "Leave Off" msgstr "" #: js/ui/keyboard.js:219 msgid "Region & Language Settings" msgstr "" #: js/ui/lookingGlass.js:713 msgid "No extensions installed" msgstr "" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:774 #, javascript-format msgid "%s has not emitted any errors." msgstr "" #: js/ui/lookingGlass.js:780 msgid "Hide Errors" msgstr "" #: js/ui/lookingGlass.js:784 js/ui/lookingGlass.js:857 msgid "Show Errors" msgstr "" #: js/ui/lookingGlass.js:793 msgid "Enabled" msgstr "Иаҿакуп" #. translators: #. * The device has been disabled #: js/ui/lookingGlass.js:796 subprojects/gvc/gvc-mixer-control.c:1900 msgid "Disabled" msgstr "" #: js/ui/lookingGlass.js:798 msgid "Error" msgstr "" #: js/ui/lookingGlass.js:800 msgid "Out of date" msgstr "" #: js/ui/lookingGlass.js:802 msgid "Downloading" msgstr "" #: js/ui/lookingGlass.js:835 msgid "View Source" msgstr "" #: js/ui/lookingGlass.js:846 msgid "Web Page" msgstr "Веб-адаҟьа" #: js/ui/main.js:286 msgid "System was put in unsafe mode" msgstr "" #: js/ui/main.js:287 msgid "Applications now have unrestricted access" msgstr "" #: js/ui/main.js:288 js/ui/overview.js:58 msgid "Undo" msgstr "Архынҳәра" #: js/ui/main.js:334 msgid "Logged in as a privileged user" msgstr "Ахаҭара шьақәыргылоуп аԥыжәара змоу хархәаҩҵас" #: js/ui/main.js:335 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" #: js/ui/main.js:384 msgid "Screen Lock disabled" msgstr "Аекаран аусура аанкылара аҿыхуп" #: js/ui/main.js:385 msgid "Screen Locking requires the GNOME display manager." msgstr "" #: js/ui/messageTray.js:1418 msgid "System Information" msgstr "" #: js/ui/mpris.js:202 msgid "Unknown artist" msgstr "" #: js/ui/mpris.js:212 msgid "Unknown title" msgstr "" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:327 msgid "Type to search" msgstr "" #: js/ui/overviewControls.js:405 msgid "Applications" msgstr "Аԥшькәа" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:71 msgid "Overview" msgstr "Алаԥшхагара" #: js/ui/padOsd.js:100 msgid "New shortcut…" msgstr "" #: js/ui/padOsd.js:154 msgid "Application defined" msgstr "" #: js/ui/padOsd.js:155 msgid "Show on-screen help" msgstr "" #: js/ui/padOsd.js:156 msgid "Switch monitor" msgstr "" #: js/ui/padOsd.js:157 msgid "Assign keystroke" msgstr "" #: js/ui/padOsd.js:226 msgid "Done" msgstr "" #: js/ui/padOsd.js:743 msgid "Edit…" msgstr "" #: js/ui/padOsd.js:785 js/ui/padOsd.js:902 msgid "None" msgstr "" #: js/ui/padOsd.js:856 msgid "Press a button to configure" msgstr "" #: js/ui/padOsd.js:857 msgid "Press Esc to exit" msgstr "" #: js/ui/padOsd.js:860 msgid "Press any key to exit" msgstr "" #: js/ui/panel.js:244 msgid "Activities" msgstr "Аҽазыҟаҵарақәа" #: js/ui/panel.js:338 msgctxt "System menu in the top bar" msgid "System" msgstr "" #: js/ui/panel.js:457 msgid "Top Bar" msgstr "Хыхьтәи апанель" #: js/ui/runDialog.js:58 msgid "Run a Command" msgstr "" #: js/ui/runDialog.js:73 msgid "Press ESC to close" msgstr "" #: js/ui/runDialog.js:238 msgid "Restart is not available on Wayland" msgstr "" #: js/ui/runDialog.js:243 msgid "Restarting…" msgstr "" #: js/ui/screenShield.js:235 msgid "GNOME needs to lock the screen" msgstr "" #. We could not become modal, so we can't activate the #. screenshield. The user is probably very upset at this #. point, but any application using global grabs is broken #. Just tell them to stop using this app #. #. XXX: another option is to kick the user into the gdm login #. screen, where we're not affected by grabs #: js/ui/screenShield.js:275 js/ui/screenShield.js:652 msgid "Unable to lock" msgstr "" #: js/ui/screenShield.js:276 js/ui/screenShield.js:653 msgid "Lock was blocked by an application" msgstr "Аусура аанкылара иаԥырхагахеит аԥшьы " #: js/ui/screenshot.js:1147 msgid "Selection" msgstr "_Алкаара" #: js/ui/screenshot.js:1157 msgid "Area Selection" msgstr "" #: js/ui/screenshot.js:1162 msgid "Screen" msgstr "" #: js/ui/screenshot.js:1172 msgid "Screen Selection" msgstr "" #: js/ui/screenshot.js:1177 msgid "Window" msgstr "" #: js/ui/screenshot.js:1187 msgid "Window Selection" msgstr "" #: js/ui/screenshot.js:1225 msgid "Screenshot / Screencast" msgstr "" #: js/ui/screenshot.js:1261 msgid "Show Pointer" msgstr "" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1849 msgid "Screencasts" msgstr "" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast from 07-17-2013 10:00:46 PM.webm" #: js/ui/screenshot.js:1854 #, no-c-format msgid "Screencast from %d %t.webm" msgstr "" #. Translators: notification source name. #: js/ui/screenshot.js:1920 js/ui/screenshot.js:2132 msgid "Screenshot" msgstr "Аскриншот" #. Translators: notification title. #: js/ui/screenshot.js:1926 msgid "Screencast recorded" msgstr "" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:1928 msgid "Click here to view the video." msgstr "" #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:1931 js/ui/screenshot.js:2146 msgid "Show in Files" msgstr "" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2092 #, javascript-format msgid "Screenshot from %s" msgstr "" #. Translators: notification title. #: js/ui/screenshot.js:2138 msgid "Screenshot captured" msgstr "" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2140 msgid "You can paste the image from the clipboard." msgstr "" #: js/ui/screenshot.js:2193 js/ui/screenshot.js:2358 msgid "Screenshot taken" msgstr "" #: js/ui/search.js:804 msgid "Searching…" msgstr "" #: js/ui/search.js:806 msgid "No results." msgstr "" #: js/ui/search.js:937 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "" msgstr[1] "" #: js/ui/searchController.js:87 msgid "Search" msgstr "Аҧшаара" #: js/ui/shellEntry.js:20 msgid "Copy" msgstr "" #: js/ui/shellEntry.js:25 msgid "Paste" msgstr "" #: js/ui/shellEntry.js:77 msgid "Show Text" msgstr "" #: js/ui/shellEntry.js:79 msgid "Hide Text" msgstr "" #: js/ui/shellEntry.js:166 msgid "Caps lock is on." msgstr "Caps Lock аҿакуп." #: js/ui/shellMountOperation.js:286 msgid "Hidden Volume" msgstr "" #: js/ui/shellMountOperation.js:289 msgid "Windows System Volume" msgstr "" #: js/ui/shellMountOperation.js:292 msgid "Uses Keyfiles" msgstr "" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:299 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead." msgstr "" #: js/ui/shellMountOperation.js:307 msgid "PIM Number" msgstr "" #: js/ui/shellMountOperation.js:366 msgid "Remember Password" msgstr "" #: js/ui/shellMountOperation.js:381 msgid "Unlock" msgstr "" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:392 #, javascript-format msgid "Open %s" msgstr "" #: js/ui/shellMountOperation.js:424 msgid "The PIM must be a number or empty." msgstr "PIM иамазароуп адаҟьақәа мамзар иҭацәызароуп" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:466 #, javascript-format msgid "Unable to start %s" msgstr "" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:468 #, javascript-format msgid "Couldn’t find the %s application" msgstr "" #: js/ui/status/accessibility.js:34 msgid "Accessibility" msgstr "" #: js/ui/status/accessibility.js:44 msgid "High Contrast" msgstr "Иҳараку аконтрастра" #: js/ui/status/accessibility.js:47 msgid "Zoom" msgstr "Zoom" #: js/ui/status/accessibility.js:54 msgid "Screen Reader" msgstr "" #: js/ui/status/accessibility.js:58 msgid "Screen Keyboard" msgstr "" #: js/ui/status/accessibility.js:62 msgid "Visual Alerts" msgstr "" #: js/ui/status/accessibility.js:65 msgid "Sticky Keys" msgstr "" #: js/ui/status/accessibility.js:68 msgid "Slow Keys" msgstr "" #: js/ui/status/accessibility.js:71 msgid "Bounce Keys" msgstr "" #: js/ui/status/accessibility.js:74 msgid "Mouse Keys" msgstr "" #: js/ui/status/accessibility.js:131 msgid "Large Text" msgstr "" #: js/ui/status/autoRotate.js:14 msgid "Auto Rotate" msgstr "" #: js/ui/status/bluetooth.js:151 msgid "Bluetooth" msgstr "Bluetooth" #: js/ui/status/brightness.js:34 msgid "Brightness" msgstr "Ашеишеира" #: js/ui/status/darkMode.js:11 msgid "Dark Mode" msgstr "" #: js/ui/status/dwellClick.js:12 msgid "Single Click" msgstr "" #: js/ui/status/dwellClick.js:17 msgid "Double Click" msgstr "" #: js/ui/status/dwellClick.js:22 msgid "Drag" msgstr "" #: js/ui/status/dwellClick.js:27 msgid "Secondary Click" msgstr "" #: js/ui/status/dwellClick.js:36 msgid "Dwell Click" msgstr "" #: js/ui/status/keyboard.js:833 msgid "Keyboard" msgstr "Арыдыркыра" #: js/ui/status/keyboard.js:850 msgid "Show Keyboard Layout" msgstr "" #: js/ui/status/location.js:330 msgid "Allow location access" msgstr "" #. Translators: %s is an application name #: js/ui/status/location.js:332 #, javascript-format msgid "The app %s wants to access your location" msgstr "" #: js/ui/status/location.js:342 msgid "Location access can be changed at any time from the privacy settings." msgstr "" #: js/ui/status/network.js:53 msgid "" msgstr "<еилкаам>" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:356 #, javascript-format msgid "Disconnect %s" msgstr "" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:358 #, javascript-format msgid "Connect to %s" msgstr "" #. Translators: %s is a network identifier #: js/ui/status/network.js:1107 #, javascript-format msgid "%s Hotspot" msgstr "Анеирҭа аҭыԥ %s аҿакуп" #: js/ui/status/nightLight.js:20 msgid "Night Light" msgstr "" #: js/ui/status/powerProfiles.js:20 msgctxt "Power profile" msgid "Performance" msgstr "" #: js/ui/status/powerProfiles.js:25 msgctxt "Power profile" msgid "Balanced" msgstr "" #: js/ui/status/powerProfiles.js:30 msgctxt "Power profile" msgid "Power Saver" msgstr "" #: js/ui/status/powerProfiles.js:70 msgid "Power Profiles" msgstr "" #: js/ui/status/remoteAccess.js:74 msgid "Stop Screencast" msgstr "" #: js/ui/status/remoteAccess.js:144 msgid "Stop Screen Sharing" msgstr "" #: js/ui/status/rfkill.js:96 msgid "Airplane Mode" msgstr "Авиарежим" #: js/ui/status/system.js:90 #, javascript-format msgid "%d %%" msgstr "%d %%" #. Translators: entry in the window right click menu. #: js/ui/status/system.js:105 js/ui/windowMenu.js:29 msgid "Take Screenshot" msgstr "Аскриншот аҟаҵара" #: js/ui/status/system.js:161 msgid "Power Off Menu" msgstr "" #: js/ui/status/system.js:169 msgid "Suspend" msgstr "" #: js/ui/status/system.js:174 msgid "Restart…" msgstr "" #: js/ui/status/system.js:179 msgid "Power Off…" msgstr "" #: js/ui/status/system.js:186 #: subprojects/extensions-app/data/ui/extensions-window.ui:190 msgid "Log Out…" msgstr "" #: js/ui/status/system.js:191 msgid "Switch User…" msgstr "" #: js/ui/status/system.js:235 msgctxt "action" msgid "Lock Screen" msgstr "" #: js/ui/status/thunderbolt.js:256 msgid "Thunderbolt" msgstr "Thunderbolt" #: js/ui/status/thunderbolt.js:317 msgid "Unknown Thunderbolt device" msgstr "" #: js/ui/status/thunderbolt.js:318 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" #: js/ui/status/thunderbolt.js:321 msgid "Unauthorized Thunderbolt device" msgstr "" #: js/ui/status/thunderbolt.js:322 msgid "" "New device has been detected and needs to be authorized by an administrator." msgstr "" #: js/ui/status/thunderbolt.js:328 msgid "Thunderbolt authorization error" msgstr "" #: js/ui/status/thunderbolt.js:329 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "" #: js/ui/status/volume.js:194 msgid "Volume changed" msgstr "" #: js/ui/status/volume.js:256 msgid "Volume" msgstr "Амҽхак" #: js/ui/status/volume.js:272 msgid "Sound Output" msgstr "%u ҭыҵрак" #: js/ui/status/volume.js:340 msgid "Sound Input" msgstr "%u аҭалара" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:20 msgid "Mirror" msgstr "Асаркьа" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:29 msgid "Join Displays" msgstr "" #. Translators: this is for using only an external display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:39 msgid "External Only" msgstr "" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:47 msgid "Built-in Only" msgstr "" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:364 msgid "%A %B %-d" msgstr "%A, %-d %B" #: js/ui/unlockDialog.js:370 msgid "Swipe up to unlock" msgstr "" #: js/ui/unlockDialog.js:371 msgid "Click or press a key to unlock" msgstr "" #: js/ui/unlockDialog.js:554 msgid "Unlock Window" msgstr "" #: js/ui/unlockDialog.js:563 msgid "Log in as another user" msgstr "Даҽа хархәаҩк ихьӡала аҭалара" #: js/ui/welcomeDialog.js:36 #, javascript-format msgid "Welcome to GNOME %s" msgstr "" #: js/ui/welcomeDialog.js:37 msgid "If you want to learn your way around, check out the tour." msgstr "" #: js/ui/welcomeDialog.js:46 msgid "No Thanks" msgstr "" #: js/ui/welcomeDialog.js:51 msgid "Take Tour" msgstr "" #: js/ui/windowAttentionHandler.js:20 #, javascript-format msgid "“%s” is ready" msgstr "" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:62 msgid "Keep these display settings?" msgstr "" #: js/ui/windowManager.js:72 msgid "Revert Settings" msgstr "" #: js/ui/windowManager.js:77 msgid "Keep Changes" msgstr "" #: js/ui/windowManager.js:97 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "" msgstr[1] "" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:544 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:41 msgid "Hide" msgstr "" #: js/ui/windowMenu.js:48 msgid "Restore" msgstr "Аиҭашьақәыргылара" #: js/ui/windowMenu.js:52 msgid "Maximize" msgstr "Аиҵыхра" #: js/ui/windowMenu.js:59 msgid "Move" msgstr "" #: js/ui/windowMenu.js:65 msgid "Resize" msgstr "" #: js/ui/windowMenu.js:72 msgid "Move Titlebar Onscreen" msgstr "" #: js/ui/windowMenu.js:77 msgid "Always on Top" msgstr "" #: js/ui/windowMenu.js:96 msgid "Always on Visible Workspace" msgstr "Еснагь иахьубарҭоу аусуратә ҭыԥ аҟны" #: js/ui/windowMenu.js:110 msgid "Move to Workspace Left" msgstr "" #: js/ui/windowMenu.js:116 msgid "Move to Workspace Right" msgstr "" #: js/ui/windowMenu.js:122 msgid "Move to Workspace Up" msgstr "" #: js/ui/windowMenu.js:128 msgid "Move to Workspace Down" msgstr "" #: js/ui/windowMenu.js:146 msgid "Move to Monitor Up" msgstr "" #: js/ui/windowMenu.js:155 msgid "Move to Monitor Down" msgstr "" #: js/ui/windowMenu.js:164 msgid "Move to Monitor Left" msgstr "" #: js/ui/windowMenu.js:173 msgid "Move to Monitor Right" msgstr "" #: js/ui/windowMenu.js:181 msgid "Close" msgstr "Аркра" #: src/calendar-server/evolution-calendar.desktop.in:3 msgid "Evolution Calendar" msgstr "" #: src/main.c:435 subprojects/extensions-tool/src/main.c:321 msgid "Print version" msgstr "" #: src/main.c:441 msgid "Mode used by GDM for login screen" msgstr "" #: src/main.c:447 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "" #: src/main.c:453 msgid "List possible modes" msgstr "" #: src/shell-app.c:305 msgctxt "program" msgid "Unknown" msgstr "" #: src/shell-app.c:556 #, c-format msgid "Failed to launch “%s”" msgstr "«%s» аус арура залшом" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match." msgstr "Ажәамаӡақәа еиқәшәаӡом" #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "Ахаҭареилкаара ахархәаҩ ила мап ацәкын" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/js/main.js:212 #: subprojects/extensions-app/data/ui/extensions-window.ui:18 #: subprojects/extensions-app/data/ui/extensions-window.ui:83 msgid "Extensions" msgstr "" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 msgid "Manage your GNOME Extensions" msgstr "" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:17 #: subprojects/extensions-app/js/main.js:216 msgid "The GNOME Project" msgstr "The GNOME Project" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:36 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "" #: subprojects/extensions-app/js/main.js:130 #: subprojects/extensions-app/js/main.js:141 msgid "No Matches" msgstr "" #: subprojects/extensions-app/js/main.js:169 #, javascript-format msgid "Remove “%s”?" msgstr "" #: subprojects/extensions-app/js/main.js:170 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "" #: subprojects/extensions-app/js/main.js:174 msgid "Remove" msgstr "" #: subprojects/extensions-app/js/main.js:211 msgid "translator-credits" msgstr "Нанба Наала , 2022" #: subprojects/extensions-app/js/main.js:339 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "" msgstr[1] "" #: subprojects/extensions-app/js/main.js:481 msgid "The extension is incompatible with the current GNOME version" msgstr "" #: subprojects/extensions-app/js/main.js:484 #: subprojects/extensions-app/data/ui/extension-row.ui:52 msgid "The extension had an error" msgstr "" #: subprojects/extensions-app/data/ui/extension-row.ui:62 msgid "The extension can be updated" msgstr "" #: subprojects/extensions-app/data/ui/extension-row.ui:112 msgid "Website" msgstr "Веб-асаит" #: subprojects/extensions-app/data/ui/extension-row.ui:134 msgid "Remove…" msgstr "" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Help" msgstr "Аилыркаа" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "" #: subprojects/extensions-app/data/ui/extensions-window.ui:84 msgid "" "Extensions can cause performance and stability issues. Disable extensions if " "you encounter problems with your system." msgstr "" #: subprojects/extensions-app/data/ui/extensions-window.ui:98 msgid "Manually Installed" msgstr "" #: subprojects/extensions-app/data/ui/extensions-window.ui:99 #: subprojects/extensions-app/data/ui/extensions-window.ui:134 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" #: subprojects/extensions-app/data/ui/extensions-window.ui:112 msgid "Built-In" msgstr "" #: subprojects/extensions-app/data/ui/extensions-window.ui:133 msgid "No Installed Extensions" msgstr "" #: subprojects/extensions-app/data/ui/extensions-window.ui:145 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" #: subprojects/extensions-app/data/ui/extensions-window.ui:175 msgid "Extension Updates Ready" msgstr "" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:222 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "" #: subprojects/extensions-tool/src/command-create.c:296 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" #: subprojects/extensions-tool/src/command-create.c:302 #: subprojects/extensions-tool/src/main.c:238 msgid "Name" msgstr "Ахьӡ" #: subprojects/extensions-tool/src/command-create.c:316 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" #: subprojects/extensions-tool/src/command-create.c:322 #: subprojects/extensions-tool/src/main.c:241 msgid "Description" msgstr "Ахцәажәара" #: subprojects/extensions-tool/src/command-create.c:336 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" #: subprojects/extensions-tool/src/command-create.c:363 msgid "Choose one of the available templates:\n" msgstr "" #: subprojects/extensions-tool/src/command-create.c:377 msgid "Template" msgstr "Ацәабла" #: subprojects/extensions-tool/src/command-create.c:432 msgid "The unique identifier of the new extension" msgstr "" #: subprojects/extensions-tool/src/command-create.c:435 msgid "NAME" msgstr "АХЬӠ" #: subprojects/extensions-tool/src/command-create.c:436 msgid "The user-visible name of the new extension" msgstr "" #: subprojects/extensions-tool/src/command-create.c:438 msgid "DESCRIPTION" msgstr "" #: subprojects/extensions-tool/src/command-create.c:440 msgid "A short description of what the extension does" msgstr "" #: subprojects/extensions-tool/src/command-create.c:443 msgid "TEMPLATE" msgstr "" #: subprojects/extensions-tool/src/command-create.c:444 msgid "The template to use for the new extension" msgstr "" #: subprojects/extensions-tool/src/command-create.c:450 msgid "Enter extension information interactively" msgstr "" #: subprojects/extensions-tool/src/command-create.c:458 msgid "Create a new extension" msgstr "" #: subprojects/extensions-tool/src/command-create.c:476 #: subprojects/extensions-tool/src/command-list.c:172 msgid "Unknown arguments" msgstr "" #: subprojects/extensions-tool/src/command-create.c:501 msgid "UUID, name and description are required" msgstr "" #: subprojects/extensions-tool/src/command-disable.c:46 #: subprojects/extensions-tool/src/command-enable.c:46 #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:64 #: subprojects/extensions-tool/src/main.c:146 msgid "Failed to connect to GNOME Shell\n" msgstr "" #: subprojects/extensions-tool/src/command-disable.c:53 #: subprojects/extensions-tool/src/command-enable.c:53 #, c-format msgid "Extension “%s” does not exist\n" msgstr "" #: subprojects/extensions-tool/src/command-disable.c:101 msgid "Disable an extension" msgstr "" #: subprojects/extensions-tool/src/command-disable.c:119 #: subprojects/extensions-tool/src/command-enable.c:119 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "" #: subprojects/extensions-tool/src/command-disable.c:124 #: subprojects/extensions-tool/src/command-enable.c:124 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "" #: subprojects/extensions-tool/src/command-enable.c:101 msgid "Enable an extension" msgstr "" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:155 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "" #: subprojects/extensions-tool/src/command-install.c:173 msgid "Overwrite an existing extension" msgstr "" #: subprojects/extensions-tool/src/command-install.c:175 msgid "EXTENSION_BUNDLE" msgstr "" #: subprojects/extensions-tool/src/command-install.c:184 msgid "Install an extension bundle" msgstr "" #: subprojects/extensions-tool/src/command-install.c:202 msgid "No extension bundle specified" msgstr "" #: subprojects/extensions-tool/src/command-install.c:208 msgid "More than one extension bundle specified" msgstr "" #: subprojects/extensions-tool/src/command-list.c:128 msgid "Show user-installed extensions" msgstr "" #: subprojects/extensions-tool/src/command-list.c:131 msgid "Show system-installed extensions" msgstr "" #: subprojects/extensions-tool/src/command-list.c:134 msgid "Show enabled extensions" msgstr "" #: subprojects/extensions-tool/src/command-list.c:137 msgid "Show disabled extensions" msgstr "" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show extensions with preferences" msgstr "" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show extensions with updates" msgstr "" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Print extension details" msgstr "" #: subprojects/extensions-tool/src/command-list.c:154 msgid "List installed extensions" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:450 msgid "FILE" msgstr "АФАИЛ" #: subprojects/extensions-tool/src/command-pack.c:451 msgid "Additional source to include in the bundle" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:454 msgid "SCHEMA" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:455 msgid "A GSettings schema that should be included" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:457 #: subprojects/extensions-tool/src/command-pack.c:468 msgid "DIRECTORY" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:459 msgid "The directory where translations are found" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:461 msgid "DOMAIN" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:463 msgid "The gettext domain to use for translations" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "Overwrite an existing pack" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:470 msgid "The directory where the pack should be created" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:472 msgid "SOURCE_DIRECTORY" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:481 msgid "Create an extension bundle" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:501 msgid "More than one source directory specified" msgstr "" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "" #: subprojects/extensions-tool/src/command-prefs.c:87 msgid "Opens extension preferences" msgstr "" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "" #: subprojects/extensions-tool/src/main.c:72 msgid "Do not print error messages" msgstr "" #: subprojects/extensions-tool/src/main.c:244 msgid "Path" msgstr "" #: subprojects/extensions-tool/src/main.c:247 msgid "URL" msgstr "URL" #: subprojects/extensions-tool/src/main.c:250 msgid "Original author" msgstr "" #: subprojects/extensions-tool/src/main.c:253 msgid "Version" msgstr "Аверсиа" #: subprojects/extensions-tool/src/main.c:256 msgid "State" msgstr "Аҵакыра" #: subprojects/extensions-tool/src/main.c:294 msgid "“version” takes no arguments" msgstr "" #: subprojects/extensions-tool/src/main.c:296 #: subprojects/extensions-tool/src/main.c:316 msgid "Usage:" msgstr "Ахархәара:" #: subprojects/extensions-tool/src/main.c:299 msgid "Print version information and exit." msgstr "" #: subprojects/extensions-tool/src/main.c:314 #: subprojects/extensions-tool/src/main.c:317 msgid "COMMAND" msgstr "" #: subprojects/extensions-tool/src/main.c:317 msgid "[ARGS…]" msgstr "[АҴАҴӶӘҚӘА…]" #: subprojects/extensions-tool/src/main.c:319 msgid "Commands:" msgstr "" #: subprojects/extensions-tool/src/main.c:320 msgid "Print help" msgstr "" #: subprojects/extensions-tool/src/main.c:322 msgid "Enable extension" msgstr "" #: subprojects/extensions-tool/src/main.c:323 msgid "Disable extension" msgstr "" #: subprojects/extensions-tool/src/main.c:324 msgid "Reset extension" msgstr "" #: subprojects/extensions-tool/src/main.c:325 msgid "Uninstall extension" msgstr "" #: subprojects/extensions-tool/src/main.c:326 msgid "List extensions" msgstr "" #: subprojects/extensions-tool/src/main.c:327 #: subprojects/extensions-tool/src/main.c:328 msgid "Show extension info" msgstr "" #: subprojects/extensions-tool/src/main.c:329 msgid "Open extension preferences" msgstr "" #: subprojects/extensions-tool/src/main.c:330 msgid "Create extension" msgstr "" #: subprojects/extensions-tool/src/main.c:331 msgid "Package extension" msgstr "" #: subprojects/extensions-tool/src/main.c:332 msgid "Install extension bundle" msgstr "" #: subprojects/extensions-tool/src/main.c:334 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "Имариоу" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1907 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u ҭыҵрак" msgstr[1] "%u ҭыҵрак" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1917 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u аҭалара" msgstr[1] "%u аҭаларақәа" #: subprojects/gvc/gvc-mixer-control.c:2867 msgid "System Sounds" msgstr "" #, fuzzy 07070100000218000081A40000000000000000000000016712993F00012D5F000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/af.po# Afrikaans translation for gnome-shell. # Copyright (C) 2011 # This file is distributed under the same license as the gnome-shell package. # F Wolff , 2011, 2013, 2014, 2015, 2016. # Dawid Loubser , 2013. # Pieter Schoeman , 2017. # msgid "" msgstr "" "Project-Id-Version: gnome-shell master\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" "POT-Creation-Date: 2019-01-16 00:12+0000\n" "PO-Revision-Date: 2018-02-10 11:12+0200\n" "Last-Translator: Pieter Schalk Schoeman \n" "Language-Team: Afrikaans \n" "Language: af\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 2.0.3\n" "X-DamnedLies-Scope: partial\n" "X-Project-Style: gnome\n" #: data/50-gnome-shell-system.xml:6 msgid "System" msgstr "Stelsel" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "Wys die lys van kennisgewings" #: data/50-gnome-shell-system.xml:12 msgid "Focus the active notification" msgstr "Fokus op die aktiewe kennisgewing" #: data/50-gnome-shell-system.xml:15 msgid "Show the overview" msgstr "Wys die oorsig" #: data/50-gnome-shell-system.xml:18 msgid "Show all applications" msgstr "Wys alle toepassings" #: data/50-gnome-shell-system.xml:21 msgid "Open the application menu" msgstr "Open die toepassingkieslys" #: data/gnome-shell-extension-prefs.desktop.in.in:4 #: js/extensionPrefs/main.js:150 msgid "Shell Extensions" msgstr "Shell uitbreidings" #: data/gnome-shell-extension-prefs.desktop.in.in:5 msgid "Configure GNOME Shell Extensions" msgstr "Stel GNOME Shell-uitbreidings op" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "GNOME Shell" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "Vensterbestuur en toepassinglansering" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" "Aktiveer interne gereedskap wat nuttig is vir ontwikkelaars en toetsers " "vanaf Alt-F2" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Laat toegang na interne ontfout- en moniteringsgereedskap toe deur die Alt-" "F2-dialoog te gebruik." #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "UUID's van uitbreidings om te aktiveer" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "GNOME Shell-uitbreidings het elk 'n UUID-eienskap; hierdie sleutel lys " "uitbreidings wat gelaai moet word. Enige uitbreiding wat gelaai wil word " "moet in hierdie lys verskyn. U kan ook hierdie lys manipuleer met die " "EnableExtension- en DisableExtension-DBus-metodes op org.gnome.Shell." #: data/org.gnome.shell.gschema.xml.in:26 msgid "Disable user extensions" msgstr "Skakel gebruikers uitbreidings af" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" "Skakel alle uitbreidings wat die gebruiker aangeskakel het af sonder om die " "\"aangeskakelde-uitbreiding\" instelling te verander." #: data/org.gnome.shell.gschema.xml.in:34 msgid "Disables the validation of extension version compatibility" msgstr "Skakel die validasie van uitbreidings weergawe versoenbaarheid af" #: data/org.gnome.shell.gschema.xml.in:35 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "GNOME Shell sal slegs uitbreidings laai wat die huidig geïnstalleerde " "weergawe ondersteun. Deur die opsie te aktiveer sal die toets afgeskakel " "word en alle uitbreidings sal gelaai kan word ongeag of hulle die weergawe " "ondersteun of nie." #: data/org.gnome.shell.gschema.xml.in:43 msgid "List of desktop file IDs for favorite applications" msgstr "Lys van werkarealêer-ID's vir gunstelingtoepassings" #: data/org.gnome.shell.gschema.xml.in:44 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" "Die toepassings wat ooreenstem met dié identifiseerders sal in die " "gunstelinge-area vertoon word." #: data/org.gnome.shell.gschema.xml.in:51 msgid "App Picker View" msgstr "Toepassingkieser oorsig" #: data/org.gnome.shell.gschema.xml.in:52 msgid "Index of the currently selected view in the application picker." msgstr "Indeks van die huidige aansig in die toepassing kieser." #: data/org.gnome.shell.gschema.xml.in:58 msgid "History for command (Alt-F2) dialog" msgstr "Geskiedenis vir die opdrag-dialoogvenster (Alt-F2)" #. Translators: looking glass is a debugger and inspector tool, see https://wiki.gnome.org/Projects/GnomeShell/LookingGlass #: data/org.gnome.shell.gschema.xml.in:63 msgid "History for the looking glass dialog" msgstr "Geskiedenis vir die \"looking glass\"-dialoogvenster" #: data/org.gnome.shell.gschema.xml.in:67 msgid "Always show the “Log out” menu item in the user menu." msgstr "Wys altyd die 'Meld af' opsie in die gebruikerkieslys." #: data/org.gnome.shell.gschema.xml.in:68 msgid "" "This key overrides the automatic hiding of the “Log out” menu item in single-" "user, single-session situations." msgstr "" "Hierdie sleutel oorheers die outomatiese wegsteek van die 'Meld af'-" "kieslysitem in enkelgebruiker-, enkelsessie-situasies." #: data/org.gnome.shell.gschema.xml.in:75 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "Of wagwoord onthou moet word vir die heg van geënkripteerde of afgeleë " "lêerstelsels" #: data/org.gnome.shell.gschema.xml.in:76 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "'n Wagwoord sal versoek word wanneer 'n geënkripteerde toestel of afgeleë " "lêerstelsel geheg word. As die wagwoord vir toekomstige gebruik gestoor kan " "word sal 'n 'Onthou wagwoord'-keuseblokkie teenwoordig wees. Hierdie sleutel " "stel die verstektoestand van die keuseblokkie stel." #: data/org.gnome.shell.gschema.xml.in:85 msgid "" "Whether the default Bluetooth adapter had set up devices associated to it" msgstr "" "Of die verstek Bluetooth verwerker opgestelde toestelle het wat daarmee " "verband hou" #: data/org.gnome.shell.gschema.xml.in:86 msgid "" "The shell will only show a Bluetooth menu item if a Bluetooth adapter is " "powered, or if there were devices set up associated with the default " "adapter. This will be reset if the default adapter is ever seen not to have " "devices associated to it." msgstr "" "Die shell sal slegs 'n Bluetooth-kieslysitem wys as 'n Bluetooth-verwerker " "aangeskakel is, of as daar toestelle ingestel is wat verband hou met die " "verstekverwerker. Dit sal herstel word as die verstekverwerker ooit gesien " "word om nie toestelle wat daarmee verband hou, te hê nie." #: data/org.gnome.shell.gschema.xml.in:101 msgid "Keybinding to open the application menu" msgstr "Sleutelbinding om die toepassingskieslys oop te maak" #: data/org.gnome.shell.gschema.xml.in:102 msgid "Keybinding to open the application menu." msgstr "Sleutelbinding om die toepassingskieslys oop te maak." #: data/org.gnome.shell.gschema.xml.in:108 msgid "Keybinding to open the “Show Applications” view" msgstr "Sleutelkortpad om die \"Vertoon toepassings\"-aansig oop te maak" #: data/org.gnome.shell.gschema.xml.in:109 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "" "Sleutelkortpad om die \"Vertoon toepassings\"-aansig van die Aktiwiteite-" "oorsig oop te maak." #: data/org.gnome.shell.gschema.xml.in:116 msgid "Keybinding to open the overview" msgstr "Sleutelbinding om die oorsig oop te maak" #: data/org.gnome.shell.gschema.xml.in:117 msgid "Keybinding to open the Activities Overview." msgstr "Sleutelbinding om die Aktiwiteite-oorsig oop te maak." #: data/org.gnome.shell.gschema.xml.in:123 msgid "Keybinding to toggle the visibility of the notification list" msgstr "Sleutelbinding om die sigbaarheid van die kennisgewinglys te swik" #: data/org.gnome.shell.gschema.xml.in:124 msgid "Keybinding to toggle the visibility of the notification list." msgstr "Sleutelbinding om die sigbaarheid van die kennisgewinglys te swik." #: data/org.gnome.shell.gschema.xml.in:130 msgid "Keybinding to focus the active notification" msgstr "Sleutelbinding om die aktiewe kennisgewing te fokus" #: data/org.gnome.shell.gschema.xml.in:131 msgid "Keybinding to focus the active notification." msgstr "Sleutelbinding om die aktiewe kennisgewing te fokus." #: data/org.gnome.shell.gschema.xml.in:137 msgid "" "Keybinding that pauses and resumes all running tweens, for debugging purposes" msgstr "" "Sleutelkortpaaie wat alle uitvoerende tweens stop en weer begin vir " "ontvoutings doeleindes" #: data/org.gnome.shell.gschema.xml.in:146 msgid "Which keyboard to use" msgstr "Watter sleutelbord om te gebruik" #: data/org.gnome.shell.gschema.xml.in:147 msgid "The type of keyboard to use." msgstr "Die tipe sleutelbord om te gebruik." #: data/org.gnome.shell.gschema.xml.in:158 #: data/org.gnome.shell.gschema.xml.in:185 msgid "Limit switcher to current workspace." msgstr "Beperk wisselaar tot huidige werkspasie." #: data/org.gnome.shell.gschema.xml.in:159 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "As waar sal slegs toepassings wat vensters in die huidige werkspasie het in " "die wisselaar vertoon word. Anders sal alle toepassings ingesluit word." #: data/org.gnome.shell.gschema.xml.in:176 msgid "The application icon mode." msgstr "Die toepassingsikoon-modus." #: data/org.gnome.shell.gschema.xml.in:177 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-" "only” (shows only the application icon) or “both”." msgstr "" "Stel op hoe die vensters vertoon word in die wisselaar. Geldige moontlikhede " "is 'slegs-duimnaelskets' (wys 'n duimnaelskets van die venster), 'slegs-toep-" "ikoon' (wys slegs die toepassing se ikoon), of 'altwee'." #: data/org.gnome.shell.gschema.xml.in:186 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "As waar sal slegs vensters van die huidige werkspasie in die wisselaar " "vertoon word. Anders sal alle vensters ingesluit word." #: data/org.gnome.shell.gschema.xml.in:197 msgid "Attach modal dialog to the parent window" msgstr "Heg modale dialoogvenster vas aan die ouervenster" #: data/org.gnome.shell.gschema.xml.in:198 #: data/org.gnome.shell.gschema.xml.in:207 #: data/org.gnome.shell.gschema.xml.in:215 #: data/org.gnome.shell.gschema.xml.in:223 #: data/org.gnome.shell.gschema.xml.in:231 msgid "" "This key overrides the key in org.gnome.mutter when running GNOME Shell." msgstr "" "Hierdie sleutel oorskryf die sleutel in org.gnome.mutter wanneer GNOME Shell " "uitgevoer word." #: data/org.gnome.shell.gschema.xml.in:206 msgid "Enable edge tiling when dropping windows on screen edges" msgstr "Aktiveer rand-tilering wanneer vensters op skermrand laat val word" #: data/org.gnome.shell.gschema.xml.in:214 msgid "Workspaces are managed dynamically" msgstr "Werkspasies word dinamies bestuur" #: data/org.gnome.shell.gschema.xml.in:222 msgid "Workspaces only on primary monitor" msgstr "Werkspasies slegs op primêre monitor" #: data/org.gnome.shell.gschema.xml.in:230 msgid "Delay focus changes in mouse mode until the pointer stops moving" msgstr "Vertraag fokusverandering in muismodus totdat die wyser ophou beweeg" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "Netwerkaanmelding" #. Translators: Do NOT translate or transliterate this text (this is an icon file name)! #: data/org.gnome.Shell.PortalHelper.desktop.in.in:9 msgid "network-workgroup" msgstr "network-workgroup" #: js/extensionPrefs/main.js:120 #, javascript-format msgid "There was an error loading the preferences dialog for %s:" msgstr "" "'n Fout het voorgekom tydens die lansering van die voorkeuredialoog vir %s:" #: js/gdm/authPrompt.js:147 js/ui/audioDeviceSelection.js:71 #: js/ui/components/networkAgent.js:117 js/ui/components/polkitAgent.js:153 #: js/ui/endSessionDialog.js:482 js/ui/extensionDownloader.js:197 #: js/ui/shellMountOperation.js:343 js/ui/status/network.js:921 msgid "Cancel" msgstr "Kanselleer" #: js/gdm/authPrompt.js:166 js/gdm/authPrompt.js:209 js/gdm/authPrompt.js:441 msgid "Next" msgstr "Volgende" #: js/gdm/authPrompt.js:205 js/ui/shellMountOperation.js:347 #: js/ui/unlockDialog.js:59 msgid "Unlock" msgstr "Sluit oop" #: js/gdm/authPrompt.js:207 msgctxt "button" msgid "Sign In" msgstr "Meld aan" #: js/gdm/loginDialog.js:315 msgid "Choose Session" msgstr "Kies sessie" #. translators: this message is shown below the user list on the #. login screen. It can be activated to reveal an entry for #. manually entering the username. #: js/gdm/loginDialog.js:458 msgid "Not listed?" msgstr "Nie op die lys nie?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:887 #, javascript-format msgid "(e.g., user or %s)" msgstr "(bv. gebruiker of %s)" #. TTLS and PEAP are actually much more complicated, but this complication #. is not visible here since we only care about phase2 authentication #. (and don't even care of which one) #: js/gdm/loginDialog.js:892 js/ui/components/networkAgent.js:243 #: js/ui/components/networkAgent.js:261 msgid "Username: " msgstr "Gebruikernaam: " #: js/gdm/loginDialog.js:1228 msgid "Login Window" msgstr "Aanmeldvenster" #: js/gdm/util.js:345 msgid "Authentication error" msgstr "Verifiëringsfout" #. We don't show fingerprint messages directly since it's #. not the main auth service. Instead we use the messages #. as a cue to display our own message. #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger instead #: js/gdm/util.js:482 msgid "(or swipe finger)" msgstr "(of veeg vinger)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:99 #, fuzzy #| msgid "Power Off" msgctxt "search-result" msgid "Power Off" msgstr "Skakel af" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:102 #, fuzzy #| msgid "power off;shutdown" msgid "power off;shutdown;reboot;restart" msgstr "skakel af;afskakel" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:106 #, fuzzy #| msgctxt "search-result" #| msgid "Lock screen" msgctxt "search-result" msgid "Lock Screen" msgstr "Sluit skerm" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:109 msgid "lock screen" msgstr "sluit skerm" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:113 #, fuzzy #| msgid "Log Out" msgctxt "search-result" msgid "Log Out" msgstr "Meld af" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:116 msgid "logout;sign off" msgstr "meld af;teken af" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:120 msgctxt "search-result" msgid "Suspend" msgstr "Sluimer" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:123 msgid "suspend;sleep" msgstr "suspend;sleep;sluimer;slaap" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:127 #, fuzzy #| msgid "Switch User" msgctxt "search-result" msgid "Switch User" msgstr "Wissel gebruiker" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:130 msgid "switch user" msgstr "wissel gebruiker" #. Translators: The name of the lock orientation action in search #: js/misc/systemActions.js:134 #, fuzzy #| msgctxt "search-result" #| msgid "Lock orientation" msgctxt "search-result" msgid "Lock Orientation" msgstr "Sluit oriëntasie" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:137 #, fuzzy #| msgid "lock orientation" msgid "lock orientation;screen;rotation" msgstr "sluit oriëntasie" #: js/misc/util.js:122 msgid "Command not found" msgstr "Opdrag nie gevind nie" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:155 msgid "Could not parse command:" msgstr "Kon nie opdrag ontleed nie:" #: js/misc/util.js:163 #, javascript-format msgid "Execution of “%s” failed:" msgstr "Uitvoer van “%s” het misluk:" #: js/misc/util.js:180 msgid "Just now" msgstr "Nounet" #: js/misc/util.js:182 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d minuut gelede" msgstr[1] "%d minute gelede" #: js/misc/util.js:185 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d uur gelede" msgstr[1] "%d ure gelede" #: js/misc/util.js:188 msgid "Yesterday" msgstr "Gister" #: js/misc/util.js:190 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d dag gelede" msgstr[1] "%d dae gelede" #: js/misc/util.js:193 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d week gelede" msgstr[1] "%d weke gelede" #: js/misc/util.js:196 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%d maand gelede" msgstr[1] "%d maande gelede" #: js/misc/util.js:198 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "%d jaar gelede" msgstr[1] "%d jaar gelede" #. Translators: Time in 24h format #: js/misc/util.js:228 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/util.js:234 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "Gister, %H:%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/util.js:240 #, no-c-format msgid "%A, %H∶%M" msgstr "%A %H:%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/util.js:246 #, no-c-format msgid "%B %d, %H∶%M" msgstr "%e %B %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/util.js:252 #, no-c-format msgid "%B %d %Y, %H∶%M" msgstr "%e %B %Y, %H∶%M" #. Translators: Time in 12h format #: js/misc/util.js:257 msgid "%l∶%M %p" msgstr "%l:%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/util.js:263 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "Gister, %l∶%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/util.js:269 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %l:%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/util.js:275 #, no-c-format msgid "%B %d, %l∶%M %p" msgstr "%e %B %l:%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/util.js:281 #, no-c-format msgid "%B %d %Y, %l∶%M %p" msgstr "%e %B %Y, %l:%M %p" #. TRANSLATORS: this is the title of the wifi captive portal login window #: js/portalHelper/main.js:66 msgid "Hotspot Login" msgstr "Kuberkolaanmelding" #: js/portalHelper/main.js:112 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "Jou verbinding met die kuberkolaanmelding is nie veilig nie. Wagwoorde en " "ander inligting op die bladsy kan deur ander mense gesien word." #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:63 js/ui/status/location.js:393 msgid "Deny Access" msgstr "Wyer toegang" #: js/ui/accessDialog.js:64 js/ui/status/location.js:396 msgid "Grant Access" msgstr "Verleen toegang" #: js/ui/appDisplay.js:793 msgid "Frequently used applications will appear here" msgstr "Toepassings wat gereeld gebruik word sal hier verskyn" #: js/ui/appDisplay.js:914 msgid "Frequent" msgstr "Gereeldes" #: js/ui/appDisplay.js:921 msgid "All" msgstr "Almal" #: js/ui/appDisplay.js:1886 msgid "New Window" msgstr "Nuwe venster" #: js/ui/appDisplay.js:1900 msgid "Launch using Dedicated Graphics Card" msgstr "Begin met 'n Toegewyde Grafika Kaart" #: js/ui/appDisplay.js:1927 js/ui/dash.js:287 msgid "Remove from Favorites" msgstr "Verwyder uit gunstelinge" #: js/ui/appDisplay.js:1933 msgid "Add to Favorites" msgstr "Voeg by gunstelinge" #: js/ui/appDisplay.js:1943 msgid "Show Details" msgstr "Wys besonderhede" #: js/ui/appFavorites.js:140 #, javascript-format msgid "%s has been added to your favorites." msgstr "%s is by die gunstelinge gevoeg." #: js/ui/appFavorites.js:174 #, javascript-format msgid "%s has been removed from your favorites." msgstr "%s uit die gunstelinge verwyder." #: js/ui/audioDeviceSelection.js:59 msgid "Select Audio Device" msgstr "Kies klanktoestel" #: js/ui/audioDeviceSelection.js:69 msgid "Sound Settings" msgstr "Klankinstellings" #: js/ui/audioDeviceSelection.js:78 msgid "Headphones" msgstr "Oorfone" #: js/ui/audioDeviceSelection.js:80 msgid "Headset" msgstr "Kopstuk" #: js/ui/audioDeviceSelection.js:82 js/ui/status/volume.js:221 msgid "Microphone" msgstr "Mikrofoon" #: js/ui/backgroundMenu.js:19 msgid "Change Background…" msgstr "Verander agtergrond…" #: js/ui/backgroundMenu.js:21 js/ui/status/nightLight.js:51 msgid "Display Settings" msgstr "Vertooninstellings" #: js/ui/backgroundMenu.js:22 js/ui/status/system.js:267 msgid "Settings" msgstr "Instellings" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:44 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:73 msgctxt "grid sunday" msgid "S" msgstr "S" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:75 msgctxt "grid monday" msgid "M" msgstr "M" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:77 msgctxt "grid tuesday" msgid "T" msgstr "D" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:79 msgctxt "grid wednesday" msgid "W" msgstr "W" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:81 msgctxt "grid thursday" msgid "T" msgstr "D" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:83 msgctxt "grid friday" msgid "F" msgstr "V" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:85 msgctxt "grid saturday" msgid "S" msgstr "S" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:379 msgid "%OB" msgstr "" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:389 msgid "%OB %Y" msgstr "" #: js/ui/calendar.js:446 msgid "Previous month" msgstr "Vorige maand" #: js/ui/calendar.js:456 msgid "Next month" msgstr "Volgende maand" #: js/ui/calendar.js:609 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:664 msgid "Week %V" msgstr "Week %V" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/calendar.js:733 msgctxt "event list time" msgid "All Day" msgstr "Heel dag" #: js/ui/calendar.js:868 msgctxt "calendar heading" msgid "%A, %B %d" msgstr "%A %e %B" #: js/ui/calendar.js:872 msgctxt "calendar heading" msgid "%A, %B %d, %Y" msgstr "%A %e %B %Y" #: js/ui/calendar.js:1102 msgid "No Notifications" msgstr "Geen kennisgewings" #: js/ui/calendar.js:1105 msgid "No Events" msgstr "Geen gebeure" #: js/ui/calendar.js:1133 msgid "Clear All" msgstr "Maak als skoon" #. Translators: %s is an application name #: js/ui/closeDialog.js:44 #, javascript-format msgid "“%s” is not responding." msgstr "“%s” reageer nie." #: js/ui/closeDialog.js:45 msgid "" "You may choose to wait a short while for it to continue or force the " "application to quit entirely." msgstr "" "Jy mag 'n wyle te wag vir die program om voort te gaan of jy kan die program " "forseer om af te sluit." #: js/ui/closeDialog.js:61 msgid "Force Quit" msgstr "Forseer afsluit" #: js/ui/closeDialog.js:64 msgid "Wait" msgstr "Wag" #: js/ui/components/automountManager.js:90 msgid "External drive connected" msgstr "Eksterne skyf ingeprop" #: js/ui/components/automountManager.js:101 msgid "External drive disconnected" msgstr "Eksterne skyf uitgeprop" #: js/ui/components/autorunManager.js:354 #, javascript-format msgid "Open with %s" msgstr "Open met %s" #: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:297 msgid "Password:" msgstr "Wagwoord:" #: js/ui/components/keyring.js:140 msgid "Type again:" msgstr "Tik weer:" #: js/ui/components/networkAgent.js:112 js/ui/status/network.js:245 #: js/ui/status/network.js:336 js/ui/status/network.js:924 msgid "Connect" msgstr "Verbind" #. Cisco LEAP #: js/ui/components/networkAgent.js:205 js/ui/components/networkAgent.js:217 #: js/ui/components/networkAgent.js:245 js/ui/components/networkAgent.js:265 #: js/ui/components/networkAgent.js:275 msgid "Password: " msgstr "Wagwoord: " #. static WEP #: js/ui/components/networkAgent.js:210 msgid "Key: " msgstr "Sleutel: " #: js/ui/components/networkAgent.js:249 msgid "Identity: " msgstr "Identiteit: " #: js/ui/components/networkAgent.js:251 msgid "Private key password: " msgstr "Private sleutel se wagwoord: " #: js/ui/components/networkAgent.js:263 msgid "Service: " msgstr "Diens: " #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:659 msgid "Authentication required by wireless network" msgstr "Verifiëring vereis deur draadlose netwerk" #: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:660 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network " "“%s”." msgstr "" "Wagwoorde of enkripsiesleutels is nodig om toegang te verkry tot die " "draadlose netwerk “%s”." #: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:663 msgid "Wired 802.1X authentication" msgstr "Verifiëring vir 802.1X met kabel" #: js/ui/components/networkAgent.js:299 msgid "Network name: " msgstr "Netwerknaam: " #: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:667 msgid "DSL authentication" msgstr "DSL-verifiëring" #: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:673 msgid "PIN code required" msgstr "PIN-kode nodig" #: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:674 msgid "PIN code is needed for the mobile broadband device" msgstr "PIN-kode is nodig vir die selfoonbreëbandtoestel" #: js/ui/components/networkAgent.js:313 msgid "PIN: " msgstr "PIN: " #: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:680 msgid "Mobile broadband network password" msgstr "Selfoonbreëband se netwerkwagwoord" #: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:664 #: js/ui/components/networkAgent.js:668 js/ui/components/networkAgent.js:681 #, javascript-format msgid "A password is required to connect to “%s”." msgstr "'n Wagwoord is nodig om te verbind aan “%s”." #: js/ui/components/networkAgent.js:648 js/ui/status/network.js:1693 msgid "Network Manager" msgstr "Netwerkbestuurder" #: js/ui/components/polkitAgent.js:48 msgid "Authentication Required" msgstr "Verifiëringsversoek" #: js/ui/components/polkitAgent.js:76 msgid "Administrator" msgstr "Administrateur" #: js/ui/components/polkitAgent.js:156 msgid "Authenticate" msgstr "Verifieer" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:283 js/ui/shellMountOperation.js:327 msgid "Sorry, that didn’t work. Please try again." msgstr "Jammer, dit het nie gewerk nie. Probeer gerus weer." #. Translators: this is the other person changing their old IM name to their new #. IM name. #: js/ui/components/telepathyClient.js:795 #, javascript-format msgid "%s is now known as %s" msgstr "%s staan nou bekend as %s" #: js/ui/ctrlAltTab.js:29 js/ui/viewSelector.js:186 msgid "Windows" msgstr "Vensters" #: js/ui/dash.js:248 js/ui/dash.js:289 msgid "Show Applications" msgstr "Wys toepassings" #. Translators: this is the name of the dock/favorites area on #. the left of the overview #: js/ui/dash.js:445 msgid "Dash" msgstr "Toeps" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM"). #. #: js/ui/dateMenu.js:74 msgid "%B %e %Y" msgstr "%e %B %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:81 msgid "%A %B %e %Y" msgstr "%A %e %B %Y" #: js/ui/dateMenu.js:145 msgid "Add world clocks…" msgstr "Voeg wêreldhorlosies by…" #: js/ui/dateMenu.js:146 msgid "World Clocks" msgstr "Wêreldhorlosies" #: js/ui/dateMenu.js:227 msgid "Weather" msgstr "Weer" #. Translators: %s is a weather condition like "Clear sky"; see #. libgweather for the possible condition strings. If at all #. possible, the sentence should match the grammatical case etc. of #. the inserted conditions. #: js/ui/dateMenu.js:291 #, javascript-format msgid "%s all day." msgstr "%s heeldag." #. Translators: %s is a weather condition like "Clear sky"; see #. libgweather for the possible condition strings. If at all #. possible, the sentence should match the grammatical case etc. of #. the inserted conditions. #: js/ui/dateMenu.js:297 #, javascript-format msgid "%s, then %s later." msgstr "%s, dan %s later." #. Translators: %s is a weather condition like "Clear sky"; see #. libgweather for the possible condition strings. If at all #. possible, the sentence should match the grammatical case etc. of #. the inserted conditions. #: js/ui/dateMenu.js:303 #, javascript-format msgid "%s, then %s, followed by %s later." msgstr "%s, dan %s, en later %s." #: js/ui/dateMenu.js:314 msgid "Select a location…" msgstr "Kies 'n ligging…" #: js/ui/dateMenu.js:317 msgid "Loading…" msgstr "Laai tans…" #. Translators: %s is a temperature with unit, e.g. "23℃" #: js/ui/dateMenu.js:323 #, javascript-format msgid "Feels like %s." msgstr "Voel soos %s." #: js/ui/dateMenu.js:326 msgid "Go online for weather information" msgstr "Gaan aanlyn vir weer inligting" #: js/ui/dateMenu.js:328 msgid "Weather information is currently unavailable" msgstr "Weer inligting is nie tans beskikbaar nie" #: js/ui/endSessionDialog.js:64 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "Meld af as %s" #: js/ui/endSessionDialog.js:65 msgctxt "title" msgid "Log Out" msgstr "Meld af" #: js/ui/endSessionDialog.js:67 #, javascript-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "%s sal outomaties afgemeld word oor %d sekonde." msgstr[1] "%s sal outomaties afgemeld word oor %d sekondes." #: js/ui/endSessionDialog.js:72 #, javascript-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "U sal outomaties afgemeld word oor %d sekonde." msgstr[1] "U sal outomaties afgemeld word oor %d sekondes." #: js/ui/endSessionDialog.js:78 msgctxt "button" msgid "Log Out" msgstr "Meld af" #: js/ui/endSessionDialog.js:84 msgctxt "title" msgid "Power Off" msgstr "Skakel af" #: js/ui/endSessionDialog.js:85 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Installeer bywerkings en skakel af" #: js/ui/endSessionDialog.js:87 #, javascript-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "Die stelsel sal outomaties afgeskakel word oor %d sekonde." msgstr[1] "Die stelsel sal outomaties afgeskakel word oor %d sekondes." #: js/ui/endSessionDialog.js:91 msgctxt "checkbox" msgid "Install pending software updates" msgstr "Installeer wagtende sagtewarebywerkings" #: js/ui/endSessionDialog.js:94 js/ui/endSessionDialog.js:111 msgctxt "button" msgid "Restart" msgstr "Herbegin" #: js/ui/endSessionDialog.js:96 msgctxt "button" msgid "Power Off" msgstr "Skakel af" #: js/ui/endSessionDialog.js:103 msgctxt "title" msgid "Restart" msgstr "Herbegin" #: js/ui/endSessionDialog.js:105 #, javascript-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "Die stelsel sal outomaties herbegin oor %d sekonde." msgstr[1] "Die stelsel sal outomaties herbegin oor %d sekondes." #: js/ui/endSessionDialog.js:119 msgctxt "title" msgid "Restart & Install Updates" msgstr "Herbegin en installeer bywerkings" #: js/ui/endSessionDialog.js:121 #, javascript-format msgid "The system will automatically restart and install updates in %d second." msgid_plural "" "The system will automatically restart and install updates in %d seconds." msgstr[0] "" "Die stelsel sal outomaties herbegin, en bywerkings sal geïnstalleer word oor " "%d sekonde." msgstr[1] "" "Die stelsel sal outomaties herbegin, en bywerkings sal geïnstalleer word oor " "%d sekondes." #: js/ui/endSessionDialog.js:127 js/ui/endSessionDialog.js:147 msgctxt "button" msgid "Restart & Install" msgstr "Herbegin en installeer" #: js/ui/endSessionDialog.js:128 msgctxt "button" msgid "Install & Power Off" msgstr "Installeer en skakel af" #: js/ui/endSessionDialog.js:129 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Skakel af nadat bywerkings geïnstalleer is" #: js/ui/endSessionDialog.js:137 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "Herbegin en installeer bywerkings" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:142 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "%s %s sal na die rekenaar herbegin het geïnstalleer word. Die installasie " "van opgraderings kan lank neem: maak seker dat 'n rugsteen gemaak is en dat " "die rekenaar ingeprop is." #: js/ui/endSessionDialog.js:361 msgid "Running on battery power: please plug in before installing updates." msgstr "Tans op batterykrag: prop in voordat bywerkings geïnstalleer word." #: js/ui/endSessionDialog.js:378 msgid "Some applications are busy or have unsaved work." msgstr "Sommige toepassings is besig of het ongestoorde werk." #: js/ui/endSessionDialog.js:385 msgid "Other users are logged in." msgstr "Ander gebruikers is aangemeld." #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:666 #, javascript-format msgid "%s (remote)" msgstr "%s (afgeleë)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:669 #, javascript-format msgid "%s (console)" msgstr "%s (konsole)" #: js/ui/extensionDownloader.js:201 msgid "Install" msgstr "Installeer" #: js/ui/extensionDownloader.js:206 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "Wil u “%s” vanaf extensions.gnome.org aflaai en installeer?" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:59 #, javascript-format msgid "%s wants to inhibit shortcuts" msgstr "%s wil kortpaaie onderdruk" #: js/ui/inhibitShortcutsDialog.js:60 msgid "Application wants to inhibit shortcuts" msgstr "Toepassing wil kortpaaie onderdruk" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:69 #, javascript-format msgid "You can restore shortcuts by pressing %s." msgstr "Jy kan kortpaaie herstel deur %s te druk." #: js/ui/inhibitShortcutsDialog.js:74 msgid "Deny" msgstr "Weier" #: js/ui/inhibitShortcutsDialog.js:80 msgid "Allow" msgstr "Laat toe" #: js/ui/kbdA11yDialog.js:33 #, fuzzy #| msgid "Slow Keys" msgid "Slow Keys Turned On" msgstr "Stadige sleutels" #: js/ui/kbdA11yDialog.js:34 #, fuzzy #| msgid "Slow Keys" msgid "Slow Keys Turned Off" msgstr "Stadige sleutels" #: js/ui/kbdA11yDialog.js:35 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" #: js/ui/kbdA11yDialog.js:42 #, fuzzy #| msgid "Sticky Keys" msgid "Sticky Keys Turned On" msgstr "Kleefsleutels" #: js/ui/kbdA11yDialog.js:43 #, fuzzy #| msgid "Sticky Keys" msgid "Sticky Keys Turned Off" msgstr "Kleefsleutels" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" #: js/ui/kbdA11yDialog.js:47 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" #: js/ui/kbdA11yDialog.js:59 msgid "Leave On" msgstr "" #: js/ui/kbdA11yDialog.js:59 js/ui/status/bluetooth.js:143 #: js/ui/status/network.js:1283 msgid "Turn On" msgstr "Skakel aan" #: js/ui/kbdA11yDialog.js:67 js/ui/status/bluetooth.js:143 #: js/ui/status/network.js:154 js/ui/status/network.js:337 #: js/ui/status/network.js:1283 js/ui/status/network.js:1398 #: js/ui/status/nightLight.js:47 js/ui/status/rfkill.js:90 #: js/ui/status/rfkill.js:117 msgid "Turn Off" msgstr "Skakel af" #: js/ui/kbdA11yDialog.js:67 msgid "Leave Off" msgstr "" #: js/ui/keyboard.js:198 #, fuzzy #| msgid "Region and Language Settings" msgid "Region & Language Settings" msgstr "Instellings vir streek en taal" #: js/ui/lookingGlass.js:644 msgid "No extensions installed" msgstr "Geen uitbreidings geïnstalleer nie" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:698 #, javascript-format msgid "%s has not emitted any errors." msgstr "%s het nie enige foute uitgevoer nie." #: js/ui/lookingGlass.js:704 msgid "Hide Errors" msgstr "Versteek foute" #: js/ui/lookingGlass.js:708 js/ui/lookingGlass.js:768 msgid "Show Errors" msgstr "Wys foute" #: js/ui/lookingGlass.js:717 msgid "Enabled" msgstr "Geaktiveer" #. translators: #. * The device has been disabled #: js/ui/lookingGlass.js:720 subprojects/gvc/gvc-mixer-control.c:1866 msgid "Disabled" msgstr "Gedeaktiveer" #: js/ui/lookingGlass.js:722 msgid "Error" msgstr "Fout" #: js/ui/lookingGlass.js:724 msgid "Out of date" msgstr "Verouderd" #: js/ui/lookingGlass.js:726 msgid "Downloading" msgstr "Laai tans af" #: js/ui/lookingGlass.js:750 msgid "View Source" msgstr "Vertoon bronkode" #: js/ui/lookingGlass.js:759 msgid "Web Page" msgstr "Webblad" #: js/ui/messageTray.js:1495 msgid "System Information" msgstr "Stelselinligting" #: js/ui/mpris.js:211 msgid "Unknown artist" msgstr "Onbekende kunstenaar" #: js/ui/mpris.js:212 msgid "Unknown title" msgstr "Onbekende titel" #: js/ui/overview.js:83 msgid "Undo" msgstr "Ontdoen" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:112 msgid "Overview" msgstr "Oorsig" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overview.js:239 msgid "Type to search…" msgstr "Tik om te soek…" #: js/ui/padOsd.js:105 msgid "New shortcut…" msgstr "Nuwe kortpad…" #: js/ui/padOsd.js:156 msgid "Application defined" msgstr "Toepassings gedefinieer" #: js/ui/padOsd.js:157 msgid "Show on-screen help" msgstr "Wys hulp op die skerm" #: js/ui/padOsd.js:158 msgid "Switch monitor" msgstr "Wissel skerms" #: js/ui/padOsd.js:159 msgid "Assign keystroke" msgstr "Ken steutel toe" #: js/ui/padOsd.js:226 msgid "Done" msgstr "Klaar" #: js/ui/padOsd.js:740 msgid "Edit…" msgstr "Redigeer…" #: js/ui/padOsd.js:782 js/ui/padOsd.js:887 msgid "None" msgstr "Geen" #: js/ui/padOsd.js:841 msgid "Press a button to configure" msgstr "Druk 'n knoppie om in te stel" #: js/ui/padOsd.js:842 msgid "Press Esc to exit" msgstr "Druk Esc om uit te gaan" #: js/ui/padOsd.js:845 msgid "Press any key to exit" msgstr "Druk enige knoppie om uit te gaan" #: js/ui/panel.js:355 msgid "Quit" msgstr "Sluit af" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:411 msgid "Activities" msgstr "Aktiwiteite" #: js/ui/panel.js:692 msgctxt "System menu in the top bar" msgid "System" msgstr "Stelsel" #: js/ui/panel.js:812 msgid "Top Bar" msgstr "Boonste balk" #. Translators: this MUST be either "toggle-switch-us" #. (for toggle switches containing the English words #. "ON" and "OFF") or "toggle-switch-intl" (for toggle #. switches containing "◯" and "|"). Other values will #. simply result in invisible toggle switches. #: js/ui/popupMenu.js:300 msgid "toggle-switch-us" msgstr "toggle-switch-intl" #: js/ui/runDialog.js:70 msgid "Enter a Command" msgstr "Tik 'n opdrag" #: js/ui/runDialog.js:110 js/ui/windowMenu.js:174 msgid "Close" msgstr "Sluit" #: js/ui/runDialog.js:271 msgid "Restart is not available on Wayland" msgstr "Herbegin is nie op Wayland beskikbaar nie" #: js/ui/runDialog.js:276 msgid "Restarting…" msgstr "Herbegin tans…" #. Translators: This is a time format for a date in #. long format #: js/ui/screenShield.js:88 msgid "%A, %B %d" msgstr "%A %e %B" #: js/ui/screenShield.js:146 #, javascript-format msgid "%d new message" msgid_plural "%d new messages" msgstr[0] "%d nuwe boodskap" msgstr[1] "%d nuwe boodskappe" #: js/ui/screenShield.js:148 #, javascript-format msgid "%d new notification" msgid_plural "%d new notifications" msgstr[0] "%d nuwe kennisgewing" msgstr[1] "%d nuwe kennisgewings" #: js/ui/screenShield.js:451 js/ui/status/system.js:286 msgid "Lock" msgstr "Sluit" #: js/ui/screenShield.js:715 msgid "GNOME needs to lock the screen" msgstr "GNOME moet die skerm sluit" #. We could not become modal, so we can't activate the #. screenshield. The user is probably very upset at this #. point, but any application using global grabs is broken #. Just tell him to stop using this app #. #. XXX: another option is to kick the user into the gdm login #. screen, where we're not affected by grabs #: js/ui/screenShield.js:836 js/ui/screenShield.js:1309 msgid "Unable to lock" msgstr "Kan nie sluit nie" #: js/ui/screenShield.js:837 js/ui/screenShield.js:1310 msgid "Lock was blocked by an application" msgstr "Sluit is gekeer deur 'n program" #: js/ui/search.js:660 msgid "Searching…" msgstr "Soek tans…" #: js/ui/search.js:662 msgid "No results." msgstr "Geen resultate nie." #: js/ui/search.js:786 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "%d meer" msgstr[1] "%d meer" #: js/ui/shellEntry.js:25 msgid "Copy" msgstr "Kopieer" #: js/ui/shellEntry.js:30 msgid "Paste" msgstr "Plak" #: js/ui/shellEntry.js:96 msgid "Show Text" msgstr "Vertoon teks" #: js/ui/shellEntry.js:98 msgid "Hide Text" msgstr "Versteek teks" #: js/ui/shellMountOperation.js:314 msgid "Password" msgstr "Wagwoord" #: js/ui/shellMountOperation.js:335 msgid "Remember Password" msgstr "Onthou wagwoord" #: js/ui/status/accessibility.js:42 msgid "Accessibility" msgstr "Toeganklikheid" #: js/ui/status/accessibility.js:57 msgid "Zoom" msgstr "Zoem" #: js/ui/status/accessibility.js:64 msgid "Screen Reader" msgstr "Skermleser" #: js/ui/status/accessibility.js:68 msgid "Screen Keyboard" msgstr "Skermsleutelbord" #: js/ui/status/accessibility.js:72 msgid "Visual Alerts" msgstr "Visuele waarskuwings" #: js/ui/status/accessibility.js:75 msgid "Sticky Keys" msgstr "Kleefsleutels" #: js/ui/status/accessibility.js:78 msgid "Slow Keys" msgstr "Stadige sleutels" #: js/ui/status/accessibility.js:81 msgid "Bounce Keys" msgstr "Bonssleutels" #: js/ui/status/accessibility.js:84 msgid "Mouse Keys" msgstr "Muissleutels" #: js/ui/status/accessibility.js:165 msgid "High Contrast" msgstr "Hoë kontras" #: js/ui/status/accessibility.js:200 msgid "Large Text" msgstr "Groot teks" #: js/ui/status/bluetooth.js:48 msgid "Bluetooth" msgstr "Bluetooth" #: js/ui/status/bluetooth.js:57 js/ui/status/network.js:616 msgid "Bluetooth Settings" msgstr "Bluetooth-instellings" #. Translators: this is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:137 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d gekoppel" msgstr[1] "%d gekoppel" #: js/ui/status/bluetooth.js:139 msgid "Off" msgstr "Af" #: js/ui/status/bluetooth.js:141 msgid "On" msgstr "Aan" #: js/ui/status/brightness.js:44 msgid "Brightness" msgstr "Helderheid" #: js/ui/status/keyboard.js:795 msgid "Keyboard" msgstr "Sleutelbord" #: js/ui/status/keyboard.js:818 msgid "Show Keyboard Layout" msgstr "Wys sleutelborduitleg" #: js/ui/status/location.js:89 js/ui/status/location.js:197 msgid "Location Enabled" msgstr "Ligging geaktiveer" #: js/ui/status/location.js:90 js/ui/status/location.js:198 msgid "Disable" msgstr "Deaktiveer" #: js/ui/status/location.js:91 msgid "Privacy Settings" msgstr "Instellings vir privaatheid" #: js/ui/status/location.js:196 msgid "Location In Use" msgstr "Ligging in gebruik" #: js/ui/status/location.js:200 msgid "Location Disabled" msgstr "Ligging gedeaktiveer" #: js/ui/status/location.js:201 msgid "Enable" msgstr "Aktiveer" #. Translators: %s is an application name #: js/ui/status/location.js:386 #, javascript-format msgid "Give %s access to your location?" msgstr "Gee %s toegang tot u ligging?" #: js/ui/status/location.js:387 msgid "Location access can be changed at any time from the privacy settings." msgstr "" "Toegang tot jou ligging kan enige tyd in privaatheid instellings verander " "word." #: js/ui/status/network.js:90 msgid "" msgstr "" #. Translators: %s is a network identifier #: js/ui/status/network.js:443 js/ui/status/network.js:1312 #, javascript-format msgid "%s Off" msgstr "%s Af" #. Translators: %s is a network identifier #: js/ui/status/network.js:446 #, javascript-format msgid "%s Connected" msgstr "%s Gekoppel" #. Translators: this is for network devices that are physically present but are not #. under NetworkManager's control (and thus cannot be used in the menu); #. %s is a network identifier #: js/ui/status/network.js:451 #, javascript-format msgid "%s Unmanaged" msgstr "%s Nie bestuur nie" #. Translators: %s is a network identifier #: js/ui/status/network.js:454 #, javascript-format msgid "%s Disconnecting" msgstr "%s Ontkoppel tans" #. Translators: %s is a network identifier #: js/ui/status/network.js:461 js/ui/status/network.js:1304 #, javascript-format msgid "%s Connecting" msgstr "%s Koppel tans" #. Translators: this is for network connections that require some kind of key or password; %s is a network identifier #: js/ui/status/network.js:464 #, javascript-format msgid "%s Requires Authentication" msgstr "%s Benodig identifisering" #. Translators: this is for devices that require some kind of firmware or kernel #. module, which is missing; %s is a network identifier #: js/ui/status/network.js:472 #, javascript-format msgid "Firmware Missing For %s" msgstr "Fermware ontbreek vir %s" #. Translators: this is for a network device that cannot be activated (for example it #. is disabled by rfkill, or it has no coverage; %s is a network identifier #: js/ui/status/network.js:476 #, javascript-format msgid "%s Unavailable" msgstr "%s nie beskikbaar nie" #. Translators: %s is a network identifier #: js/ui/status/network.js:479 #, javascript-format msgid "%s Connection Failed" msgstr "%s-verbinding het misluk" #: js/ui/status/network.js:495 msgid "Wired Settings" msgstr "Kabelinstellings" #: js/ui/status/network.js:537 msgid "Mobile Broadband Settings" msgstr "Selfoonbreëband-instellings" #. Translators: %s is a network identifier #: js/ui/status/network.js:580 js/ui/status/network.js:1309 #, javascript-format msgid "%s Hardware Disabled" msgstr "%s deur hardeware gedeaktiveer" #. Translators: this is for a network device that cannot be activated #. because it's disabled by rfkill (airplane mode); %s is a network identifier #: js/ui/status/network.js:584 #, javascript-format msgid "%s Disabled" msgstr "%s gedeaktiveer" #: js/ui/status/network.js:624 msgid "Connect to Internet" msgstr "Koppel aan die internet" #: js/ui/status/network.js:818 msgid "Airplane Mode is On" msgstr "Vliegtuigmodus is aan" #: js/ui/status/network.js:819 msgid "Wi-Fi is disabled when airplane mode is on." msgstr "Wi-Fi word gedeaktiveer tydens vliegtuigmodus." #: js/ui/status/network.js:820 msgid "Turn Off Airplane Mode" msgstr "Skakel vlugmodus af" #: js/ui/status/network.js:829 msgid "Wi-Fi is Off" msgstr "Wi-Fi is af" #: js/ui/status/network.js:830 msgid "Wi-Fi needs to be turned on in order to connect to a network." msgstr "Wi-Fi moet aangeskakel wees om aan 'n netwerk te koppel." #: js/ui/status/network.js:831 msgid "Turn On Wi-Fi" msgstr "Skakel Wi-Fi aan" #: js/ui/status/network.js:856 msgid "Wi-Fi Networks" msgstr "Wi-Fi-netwerke" #: js/ui/status/network.js:858 msgid "Select a network" msgstr "Kies 'n netwerk" #: js/ui/status/network.js:888 msgid "No Networks" msgstr "Geen netwerke" #: js/ui/status/network.js:909 js/ui/status/rfkill.js:115 msgid "Use hardware switch to turn off" msgstr "Gebruik die hardewareskakelaar om mee af te skakel" #: js/ui/status/network.js:1175 msgid "Select Network" msgstr "Kies netwerk" #: js/ui/status/network.js:1181 msgid "Wi-Fi Settings" msgstr "Wi-Fi-instellings" #. Translators: %s is a network identifier #: js/ui/status/network.js:1300 #, javascript-format msgid "%s Hotspot Active" msgstr "%s Kuberkol Aktief" #. Translators: %s is a network identifier #: js/ui/status/network.js:1315 #, javascript-format msgid "%s Not Connected" msgstr "%s nie gekoppel nie" #: js/ui/status/network.js:1415 msgid "connecting…" msgstr "verbind tans…" #. Translators: this is for network connections that require some kind of key or password #: js/ui/status/network.js:1418 msgid "authentication required" msgstr "verifiëring benodig" #: js/ui/status/network.js:1420 msgid "connection failed" msgstr "verbinding het misluk" #: js/ui/status/network.js:1474 msgid "VPN Settings" msgstr "VPN-instellings" #: js/ui/status/network.js:1487 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1497 msgid "VPN Off" msgstr "VPN af" #: js/ui/status/network.js:1561 js/ui/status/rfkill.js:93 msgid "Network Settings" msgstr "Netwerkinstellings" #: js/ui/status/network.js:1590 #, javascript-format msgid "%s Wired Connection" msgid_plural "%s Wired Connections" msgstr[0] "%s Gekabelde verbinding" msgstr[1] "%s Gekabelde verbindings" #: js/ui/status/network.js:1594 #, javascript-format msgid "%s Wi-Fi Connection" msgid_plural "%s Wi-Fi Connections" msgstr[0] "%s Wi-Fi verbinding" msgstr[1] "%s Wi-Fi verbindings" #: js/ui/status/network.js:1598 #, javascript-format msgid "%s Modem Connection" msgid_plural "%s Modem Connections" msgstr[0] "%s Modem verbinding" msgstr[1] "%s Modem verbindings" #: js/ui/status/network.js:1730 msgid "Connection failed" msgstr "Verbinding het misluk" #: js/ui/status/network.js:1731 msgid "Activation of network connection failed" msgstr "Aktivering van netwerkverbinding het misluk" #: js/ui/status/nightLight.js:68 msgid "Night Light Disabled" msgstr "Naglig af" #: js/ui/status/nightLight.js:69 msgid "Night Light On" msgstr "Naglig aan" #: js/ui/status/nightLight.js:70 msgid "Resume" msgstr "Hervat" #: js/ui/status/nightLight.js:71 msgid "Disable Until Tomorrow" msgstr "Skakel af tot more" #: js/ui/status/power.js:61 msgid "Power Settings" msgstr "Kraginstellings" #: js/ui/status/power.js:77 msgid "Fully Charged" msgstr "Volgelaai" #. 0 is reported when UPower does not have enough data #. to estimate battery life #: js/ui/status/power.js:84 js/ui/status/power.js:90 msgid "Estimating…" msgstr "Skat tans…" #. Translators: this is : Remaining () #: js/ui/status/power.js:98 #, javascript-format msgid "%d∶%02d Remaining (%d %%)" msgstr "%d∶%02d oor (%d%%)" #. Translators: this is : Until Full () #: js/ui/status/power.js:103 #, javascript-format msgid "%d∶%02d Until Full (%d %%)" msgstr "%d∶%02d tot vol (%d%%)" #: js/ui/status/power.js:131 js/ui/status/power.js:133 #, javascript-format msgid "%d %%" msgstr "%d %%" #. The menu only appears when airplane mode is on, so just #. statically build it as if it was on, rather than dynamically #. changing the menu contents. #: js/ui/status/rfkill.js:88 msgid "Airplane Mode On" msgstr "Vlugmodus is aan" #: js/ui/status/system.js:230 msgid "Switch User" msgstr "Wissel gebruiker" #: js/ui/status/system.js:242 msgid "Log Out" msgstr "Meld af" #: js/ui/status/system.js:254 msgid "Account Settings" msgstr "Rekeningopstelling" #: js/ui/status/system.js:271 msgid "Orientation Lock" msgstr "Oriëntasieslot" #: js/ui/status/system.js:297 msgid "Suspend" msgstr "Sluimer" #: js/ui/status/system.js:307 msgid "Power Off" msgstr "Skakel af" #: js/ui/status/thunderbolt.js:294 msgid "Thunderbolt" msgstr "" #. we are done #: js/ui/status/thunderbolt.js:350 msgid "Unknown Thunderbolt device" msgstr "" #: js/ui/status/thunderbolt.js:351 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" #: js/ui/status/thunderbolt.js:356 msgid "Thunderbolt authorization error" msgstr "" #: js/ui/status/thunderbolt.js:357 #, javascript-format msgid "Could not authorize the thunderbolt device: %s" msgstr "" #: js/ui/status/volume.js:128 msgid "Volume changed" msgstr "Volume het verander" #: js/ui/status/volume.js:170 msgid "Volume" msgstr "Volume" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:21 msgid "Mirror" msgstr "Spieëlbeeld" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:26 msgid "Join Displays" msgstr "Koppel skerms" #. Translators: this is for using only an external display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:31 msgid "External Only" msgstr "Slegs ekstern" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:36 msgid "Built-in Only" msgstr "Slegs ingebou" #: js/ui/unlockDialog.js:67 msgid "Log in as another user" msgstr "Meld aan as 'n ander gebruiker" #: js/ui/unlockDialog.js:84 msgid "Unlock Window" msgstr "Onsluit venster" #: js/ui/viewSelector.js:190 msgid "Applications" msgstr "Toepassings" #: js/ui/viewSelector.js:194 msgid "Search" msgstr "Soek" #: js/ui/windowAttentionHandler.js:20 #, javascript-format msgid "“%s” is ready" msgstr "“%s” is gereed" #: js/ui/windowManager.js:72 msgid "Do you want to keep these display settings?" msgstr "Wil u hierdie skerminstellings behou?" #. Translators: this and the following message should be limited in lenght, #. to avoid ellipsizing the labels. #. #: js/ui/windowManager.js:84 msgid "Revert Settings" msgstr "Stel instellings terug" #: js/ui/windowManager.js:87 msgid "Keep Changes" msgstr "Behou wysigings" #: js/ui/windowManager.js:105 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "Wysigings gaan teruggestel word oor %d sekonde" msgstr[1] "Wysigings gaan teruggestel word oor %d sekondes" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:660 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:34 msgid "Minimize" msgstr "Minimeer" #: js/ui/windowMenu.js:41 msgid "Unmaximize" msgstr "Onmaksimeer" #: js/ui/windowMenu.js:45 msgid "Maximize" msgstr "Maksimeer" #: js/ui/windowMenu.js:52 msgid "Move" msgstr "Skuif" #: js/ui/windowMenu.js:58 msgid "Resize" msgstr "Verander grootte" #: js/ui/windowMenu.js:65 msgid "Move Titlebar Onscreen" msgstr "Skuif titelbalk na skerm" #: js/ui/windowMenu.js:70 msgid "Always on Top" msgstr "Altyd bo-op" #: js/ui/windowMenu.js:89 msgid "Always on Visible Workspace" msgstr "Altyd op sigbare werkspasie" #: js/ui/windowMenu.js:103 msgid "Move to Workspace Left" msgstr "Skuif na werkspasie links" #: js/ui/windowMenu.js:109 msgid "Move to Workspace Right" msgstr "Skuif na werkspasie regs" #: js/ui/windowMenu.js:115 msgid "Move to Workspace Up" msgstr "Skuif na hoër werkspasie" #: js/ui/windowMenu.js:121 msgid "Move to Workspace Down" msgstr "Skuif na laer werkspasie" #: js/ui/windowMenu.js:139 msgid "Move to Monitor Up" msgstr "Skuif na hoër monitor" #: js/ui/windowMenu.js:148 msgid "Move to Monitor Down" msgstr "Skuif na laer monitor" #: js/ui/windowMenu.js:157 msgid "Move to Monitor Left" msgstr "Skuif na monitor links" #: js/ui/windowMenu.js:166 msgid "Move to Monitor Right" msgstr "Skuif na monitor regs" #: src/calendar-server/evolution-calendar.desktop.in:3 msgid "Evolution Calendar" msgstr "Evolution-kalender" #. Translators: Do NOT translate or transliterate this text (this is an icon file name)! #: src/calendar-server/evolution-calendar.desktop.in:6 msgid "evolution" msgstr "evolution" #: src/main.c:432 msgid "Print version" msgstr "Druk weergawe" #: src/main.c:438 msgid "Mode used by GDM for login screen" msgstr "Modus deur GDM gebruik vir aanmeldskerm" #: src/main.c:444 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "Gebruik 'n spesifieke modus, bv. \"gdm\" vir aanmeldskerm" #: src/main.c:450 msgid "List possible modes" msgstr "Lys van moontlike modusse" #: src/shell-app.c:270 msgctxt "program" msgid "Unknown" msgstr "Onbekend" #: src/shell-app.c:511 #, c-format msgid "Failed to launch “%s”" msgstr "Kon nie “%s” lanseer nie" #: src/shell-keyring-prompt.c:730 msgid "Passwords do not match." msgstr "Wagwoorde stem nie ooreen nie." #: src/shell-keyring-prompt.c:738 msgid "Password cannot be blank" msgstr "Wagwoord kan nie leeg wees nie" #: src/shell-polkit-authentication-agent.c:353 msgid "Authentication dialog was dismissed by the user" msgstr "Verifiëringsdialoog is gesluit deur gebruiker" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1873 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u Afvoer" msgstr[1] "%u Afvoere" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1883 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u Toevoer" msgstr[1] "%u Toevoere" #: subprojects/gvc/gvc-mixer-control.c:2738 msgid "System Sounds" msgstr "Stelselklanke" #~ msgctxt "search-result" #~ msgid "Power off" #~ msgstr "Skakel af" #~ msgctxt "search-result" #~ msgid "Log out" #~ msgstr "Meld af" #~ msgctxt "search-result" #~ msgid "Switch user" #~ msgstr "Wissel gebruiker" #~ msgid "GNOME Shell Extension Preferences" #~ msgstr "Voorkeure vir GNOME Shell-uitbreidings" #~ msgid "Show the week date in the calendar" #~ msgstr "Wys die weekdatum in die kalender" #~ msgid "If true, display the ISO week date in the calendar." #~ msgstr "Indien waar, vertoon die ISO-weekdatum in die kalender." #, fuzzy #~| msgid "Authentication Required" #~ msgid "Web Authentication Redirect" #~ msgstr "Verifiëringsversoek" #~ msgid "Events" #~ msgstr "Gebeure" #~ msgid "Notifications" #~ msgstr "Kennisgewings" #~| msgid "Hide Text" #~ msgid "Hide tray" #~ msgstr "Versteek laai" #~ msgid "Status Icons" #~ msgstr "Statusikone" #~ msgid "Media" #~ msgstr "Media" #~| msgid "In Use" #~ msgid "Not In Use" #~ msgstr "Nie in gebruik nie" #~ msgid "%s is requesting access to your location." #~ msgstr "%s versoek toegang tot u ligging." #~ msgid "Use as Internet connection" #~ msgstr "Gebruik as internetverbinding" #~ msgid "%d x %d" #~ msgstr "%d x %d" #~ msgctxt "event list time" #~ msgid "%H∶%M" #~ msgstr "%H∶%M" #~ msgctxt "event list time" #~ msgid "%l∶%M %p" #~ msgstr "%l:%M %p" #~ msgid "Invitation" #~ msgstr "Uitnodiging" #~ msgid "Call" #~ msgstr "Oproep" #~ msgid "File Transfer" #~ msgstr "Lêeroordrag" #~ msgid "Chat" #~ msgstr "Gesels" #~ msgid "Invitation to %s" #~ msgstr "Uitnodiging na %s" #~ msgid "%s is inviting you to join %s" #~ msgstr "%s nooi u uit om by %s aan te sluit" #~ msgid "Decline" #~ msgstr "Nee, dankie" #~ msgid "Accept" #~ msgstr "Aanvaar" #~ msgid "Video call from %s" #~ msgstr "Video-oproep van %s" #~ msgid "Call from %s" #~ msgstr "Oproep van %s" #~ msgid "Answer" #~ msgstr "Antwoord" #~ msgid "%s is sending you %s" #~ msgstr "%s stuur %s aan u" #~ msgid "%s would like permission to see when you are online" #~ msgstr "%s vra toestemming om te sien wanneer u aanlyn is" #~ msgid "Authentication failed" #~ msgstr "Verifiëring het misluk" #~ msgid "Encryption error" #~ msgstr "Enkripsiefout" #~ msgid "Certificate not provided" #~ msgstr "Sertifikaat nie voorsien nie" #~ msgid "Certificate untrusted" #~ msgstr "Sertifikaat nie vertrou nie" #~ msgid "Certificate expired" #~ msgstr "Sertifikaat het verval" #~ msgid "Certificate not activated" #~ msgstr "Sertifikaat nie geaktiveer nie" #~ msgid "Certificate hostname mismatch" #~ msgstr "Sertifikaat se rekenaarnaam stem nie ooreen nie" #~ msgid "Certificate fingerprint mismatch" #~ msgstr "Sertifikaat se vingerafdruk stem nie ooreen nie" #~ msgid "Certificate self-signed" #~ msgstr "Sertifikaat is self-onderteken" #~ msgid "Status is set to offline" #~ msgstr "Status is nou vanlyn" #~ msgid "Certificate is invalid" #~ msgstr "Sertifikaat is ongeldig" #~ msgid "Connection has been refused" #~ msgstr "Verbinding is geweier" #~ msgid "Connection can't be established" #~ msgstr "Verbinding kan nie gemaak word nie" #~ msgid "Connection has been lost" #~ msgstr "Verbinding is verloor" #~ msgid "This account is already connected to the server" #~ msgstr "Die rekening is reeds verbind aan die bediener" #~ msgid "" #~ "Connection has been replaced by a new connection using the same resource" #~ msgstr "" #~ "Verbinding is vervang met 'n nuwe verbinding wat die selfde hulpbron " #~ "gebruik" #~ msgid "The account already exists on the server" #~ msgstr "Die rekening bestaan reeds op die bediener" #~ msgid "Server is currently too busy to handle the connection" #~ msgstr "Die bediener is tans te besig om die verbinding te hanteer" #~ msgid "Certificate has been revoked" #~ msgstr "Die sertifikaat is opgehef" #~ msgid "" #~ "Certificate uses an insecure cipher algorithm or is cryptographically weak" #~ msgstr "" #~ "Die sertifikaat gebruik 'n onveilige syferalgoritme of is kriptografies " #~ "swak" #~ msgid "" #~ "The length of the server certificate, or the depth of the server " #~ "certificate chain, exceed the limits imposed by the cryptography library" #~ msgstr "" #~ "Die lengte van die bedienersertifikaat, of die diepte van die " #~ "bedienersertifikaat-ketting, het die limiete van die kriptografie-" #~ "biblioteek oorskry" #~ msgid "Internal error" #~ msgstr "Interne fout" #~ msgid "Unable to connect to %s" #~ msgstr "Kan nie verbind aan %s nie" #~ msgid "View account" #~ msgstr "Bekyk rekening" #~ msgid "%d Connected Device" #~ msgid_plural "%d Connected Devices" #~ msgstr[0] "%d gekoppelde toestel" #~ msgstr[1] "%d gekoppelde toestelle" #~ msgid "Authentication required" #~ msgstr "Verifiëring benodig" #~ msgid "UPS" #~ msgstr "UPS" #~ msgid "Battery" #~ msgstr "Battery" #~ msgid "Airplane Mode" #~ msgstr "Vliegtuigmodus" #~ msgid "Show the message tray" #~ msgstr "Wys die boodskaplaai" #~ msgctxt "list sunday" #~ msgid "Su" #~ msgstr "So" #~ msgctxt "list monday" #~ msgid "M" #~ msgstr "M" #~ msgctxt "list tuesday" #~ msgid "T" #~ msgstr "Di" #~ msgctxt "list wednesday" #~ msgid "W" #~ msgstr "W" #~ msgctxt "list thursday" #~ msgid "Th" #~ msgstr "Do" #~ msgctxt "list friday" #~ msgid "F" #~ msgstr "V" #~ msgctxt "list saturday" #~ msgid "S" #~ msgstr "Sa" #~ msgid "Nothing Scheduled" #~ msgstr "Niks geskeduleer nie" #~ msgid "Today" #~ msgstr "Vandag" #~ msgid "Tomorrow" #~ msgstr "Môre" #~ msgid "This week" #~ msgstr "Dié week" #~ msgid "Next week" #~ msgstr "Volgende week" #~ msgid "Removable Devices" #~ msgstr "Verwyderbare toestelle" #~ msgid "Eject" #~ msgstr "Skiet uit" #~ msgid "Unmute" #~ msgstr "Hoor weer" #~ msgid "Mute" #~ msgstr "Maak stil" #~ msgid "Open Calendar" #~ msgstr "Maak kalender oop" #~ msgid "Date & Time Settings" #~ msgstr "Instellings vir datum en tyd" #~ msgid "Open" #~ msgstr "Open" #~ msgid "Remove" #~ msgstr "Verwyder" #~ msgid "Clear Messages" #~ msgstr "Maak boodskappe skoon" #~ msgid "Notification Settings" #~ msgstr "Kennisgewingopstellings" #~ msgid "Tray Menu" #~ msgstr "Laai-kieslys" #~ msgid "No Messages" #~ msgstr "Geen boodskappe" #~ msgid "Message Tray" #~ msgstr "Boodskaplaai" #~ msgid "List of categories that should be displayed as folders" #~ msgstr "Lys van kategorieë wat as gidse vertoon moet word." #~ msgid "" #~ "Each category name in this list will be represented as folder in the " #~ "application view, rather than being displayed inline in the main view." #~ msgstr "" #~ "Elke kategorienaam in hierdie lys sal as gids in die toepassingsaansig " #~ "voorgestel word, in plaas daarvan om inlyn in die hoofaansig vertoon te " #~ "word." #~ msgid "Arrangement of buttons on the titlebar" #~ msgstr "Rangskikking van die knoppies op die titelbalk" #~ msgid "" #~ "This key overrides the key in org.gnome.desktop.wm.preferences when " #~ "running GNOME Shell." #~ msgstr "" #~ "Hierdie sleutel oorskryf die sleutel in org.gnome.desktop.wm.preferences " #~ "wanneer GNOME Shell uitgevoer word." #~ msgid "Select an extension to configure using the combobox above." #~ msgstr "Kies 'n uitbreiding om op te stel uit die kombinasiekas hierbo." #~ msgid "%A, %H:%M" #~ msgstr "%A, %H:%M" #~ msgid "%B %d, %H:%M" #~ msgstr "%e %B %H:%M" #~ msgid "%B %d %Y, %H:%M " #~ msgstr "%e %B %Y, %H:%M " #~ msgid "Authorization request from %s" #~ msgstr "Magtigingversoek van %s" #~ msgid "Device %s wants to pair with this computer" #~ msgstr "Die toestel %s wil met hierdie rekenaar oppaar" #~ msgid "Device %s wants access to the service '%s'" #~ msgstr "Toestel %s wil toegang hê tot die '%s'-diens" #~ msgid "Grant this time only" #~ msgstr "Verleen slegs nou toegang" #~ msgid "Reject" #~ msgstr "Weier" #~ msgid "Pairing confirmation for %s" #~ msgstr "Bevestig oppaar vir %s" #~ msgid "" #~ "Please confirm whether the Passkey '%06d' matches the one on the device." #~ msgstr "" #~ "Bevestig asseblief of die wagkode '%06d' dieselfde is as die een op die " #~ "toestel." #~ msgid "Matches" #~ msgstr "Dit pas" #~ msgid "Does not match" #~ msgstr "Dit pas nie" #~ msgid "Pairing request for %s" #~ msgstr "Versoek om op te paar vanaf %s" #~ msgid "Please enter the PIN mentioned on the device." #~ msgstr "Tik die PIN wat op die toestel gewys word." #~ msgid "OK" #~ msgstr "Regso" #~ msgid "unavailable" #~ msgstr "onbeskikbaar" #~ msgid "" #~ "Sorry, no wisdom for you today:\n" #~ "%s" #~ msgstr "" #~ "Jammer, geen pêrels om voor die swyne te gooi vandag nie:\n" #~ "%s" #~ msgid "%s the Oracle says" #~ msgstr "Die Orakel sê: %s" #~ msgid "Screenshots" #~ msgstr "Skermkiekies" #~ msgid "Extension" #~ msgstr "Uitbreiding" #~ msgid "Session" #~ msgstr "Sessie" #~ msgid "Power" #~ msgstr "Krag" #~ msgid "Restart" #~ msgstr "Herbegin" #~ msgctxt "event list time" #~ msgid "%H\\u2236%M" #~ msgstr "%H\\u2236%M" #~ msgctxt "event list time" #~ msgid "%l\\u2236%M\\u2009%p" #~ msgstr "%l\\u2236%M\\u2009%p" #~ msgid "Click Log Out to quit these applications and log out of the system." #~ msgstr "" #~ "Klik 'Meld af' om dié toepassings af te sluit en af te meld van die " #~ "stelsel." #~ msgid "Logging out of the system." #~ msgstr "U meld nou van die stelsel af." #~ msgid "Click Power Off to quit these applications and power off the system." #~ msgstr "" #~ "Klik 'Skakel af' om dié toepassings af te sluit en die stelsel af te " #~ "skakel." #~ msgid "Powering off the system." #~ msgstr "Die stelsel skakel nou af." #~ msgid "Click Restart to quit these applications and restart the system." #~ msgstr "" #~ "Klik 'Herbegin' om dié toepassings af te sluit en die stelsel weer te " #~ "begin." #~ msgid "Restarting the system." #~ msgstr "Die stelsel word nou herbegin." #~ msgid "Volume, network, battery" #~ msgstr "Volume, netwerk, battery" #~ msgid "Shutting down might cause them to lose unsaved work." #~ msgstr "Deur af te skakel, kan hulle ongestoorde werk verloor." #~ msgid "Show date in clock" #~ msgstr "Wys die datum in die horlosie" #~ msgid "Show time with seconds" #~ msgstr "Wys die tyd met sekondes" #~ msgctxt "title" #~ msgid "Sign In" #~ msgstr "Meld aan" #~ msgid "APPLICATIONS" #~ msgstr "TOEPASSINGS" #~ msgid "SETTINGS" #~ msgstr "INSTELLINGS" #~ msgctxt "event list time" #~ msgid "%H:%M" #~ msgstr "%H:%M" #~ msgid "Available" #~ msgstr "Beskikbaar" #~ msgid "Away" #~ msgstr "Weg" #~ msgid "Busy" #~ msgstr "Besig" #~ msgid "CONTACTS" #~ msgstr "KONTAKTE" #~ msgid "%a %b %e, %R:%S" #~ msgstr "%a %e %b %R:%S" #~ msgid "%a %b %e, %R" #~ msgstr "%a %e %b %R" #~ msgid "%a %R:%S" #~ msgstr "%a %R:%S" #~ msgid "%a %R" #~ msgstr "%a %R" #~ msgid "%a %b %e, %l:%M:%S %p" #~ msgstr "%a %e %b %l:%M:%S %p" #~ msgid "%a %l:%M:%S %p" #~ msgstr "%a %l:%M:%S %p" #~ msgid "RECENT ITEMS" #~ msgstr "ONLANGSE ITEMS" #~ msgid "Show password" #~ msgstr "Wys wagwoord" #~ msgid "Failed to unmount '%s'" #~ msgstr "Kon nie '%s' ontheg nie" #~ msgid "Retry" #~ msgstr "Herprobeer" #~ msgid "PLACES & DEVICES" #~ msgstr "PLEKKE EN TOESTELLE" #~ msgid "Wrong password, please try again" #~ msgstr "Verkeerde wagwoord. Probeer gerus weer." #~ msgid "Universal Access Settings" #~ msgstr "Instellings vir universele toegang" #~ msgid "Set up a New Device..." #~ msgstr "Stel 'n nuwe toestel op..." #~ msgid "Send Files..." #~ msgstr "Stuur lêers..." #~ msgid "Browse Files..." #~ msgstr "Blaai deur lêers..." #~ msgid "Error browsing device" #~ msgstr "Fout met blaai deur toestel" #~ msgid "The requested device cannot be browsed, error is '%s'" #~ msgstr "" #~ "Die aangevraagde toestel kan nie deurgeblaai word nie. Die fout is '%s'." #~ msgid "Keyboard Settings" #~ msgstr "Sleutelbordinstellings" #~ msgid "disabled" #~ msgstr "gedeaktiveer" #~ msgid "cable unplugged" #~ msgstr "kabel uitgeprop" #~ msgid "More..." #~ msgstr "Meer..." #~ msgid "Auto Ethernet" #~ msgstr "Outo-Ethernet" #~ msgid "Auto broadband" #~ msgstr "Outo-breëband" #~ msgid "Auto dial-up" #~ msgstr "Outo-inbel" #~ msgid "Auto %s" #~ msgstr "Outo-%s" #~ msgid "Auto bluetooth" #~ msgstr "Outo-Bluetooth" #~ msgid "Auto wireless" #~ msgstr "Outo-draadloos" #~ msgid "Wired" #~ msgstr "Draad" #~ msgid "Wireless" #~ msgstr "Draadloos" #~ msgid "VPN Connections" #~ msgstr "VPN-verbindings" #~ msgid "Connectivity lost" #~ msgstr "Verbinding verloor" #~ msgid "You're no longer connected to the network" #~ msgstr "U is nie meer aan die netwerk verbind nie" #~ msgid "%d hour remaining" #~ msgid_plural "%d hours remaining" #~ msgstr[0] "%d uur bly oor" #~ msgstr[1] "%d ure bly oor" #~ msgid "%d %s %d %s remaining" #~ msgstr "%d %s en %d %s bly oor" #~ msgid "hour" #~ msgid_plural "hours" #~ msgstr[0] "uur" #~ msgstr[1] "ure" #~ msgid "minute" #~ msgid_plural "minutes" #~ msgstr[0] "minuut" #~ msgstr[1] "minute" #~ msgid "%d minute remaining" #~ msgid_plural "%d minutes remaining" #~ msgstr[0] "%d minuut bly oor" #~ msgstr[1] "%d minute bly oor" #~ msgid "AC adapter" #~ msgstr "Muurkrag" #~ msgid "Laptop battery" #~ msgstr "Skootrekenaarbattery" #~ msgid "Monitor" #~ msgstr "Monitor" #~ msgid "Mouse" #~ msgstr "Muis" #~ msgid "PDA" #~ msgstr "PDA" #~ msgid "Media player" #~ msgstr "Mediaspeler" #~ msgid "Tablet" #~ msgstr "Tablet" #~ msgid "Computer" #~ msgstr "Rekenaar" #~ msgid "%s is online." #~ msgstr "%s is aanlyn." #~ msgid "%s is offline." #~ msgstr "%s is vanlyn." #~ msgid "%s is away." #~ msgstr "%s is weg." #~ msgid "%s is busy." #~ msgstr "%s is besig." #, fuzzy #~ msgid "Sent at %X on %A" #~ msgstr "Gestuur om %X op %A" #~ msgid "Sent on %A, %B %d, %Y" #~ msgstr "Gestuur op %A %e %B %Y" #~ msgid "Connection to %s failed" #~ msgstr "Verbinding na %s het misluk" #~ msgid "Reconnect" #~ msgstr "Verbind weer" #~ msgid "Hidden" #~ msgstr "Versteek" #~ msgid "Idle" #~ msgstr "Ledig" #~ msgid "Power Off..." #~ msgstr "Skakel af..." #~ msgid "Online Accounts" #~ msgstr "Aanlynrekeninge" #~ msgid "System Settings" #~ msgstr "Stelselinstellings" #~ msgid "Log Out..." #~ msgstr "Meld af..." #~ msgid "%s has finished starting" #~ msgstr "%s het sy aanvang geneem" #~ msgid "United Kingdom" #~ msgstr "Verenigde Koninkryk" #~ msgid "Default" #~ msgstr "Verstek" #~ msgid "Home Folder" #~ msgstr "Tuisgids" #~ msgid "%1$s: %2$s" #~ msgstr "%1$s: %2$s" #~ msgid "Localization Settings" #~ msgstr "Lokaliseringsinstellings" #~ msgid "You're now connected to mobile broadband connection '%s'" #~ msgstr "U is nou verbind aan die verbinding vir selfoonbreëband '%s'" #~ msgid "You're now connected to VPN network '%s'" #~ msgstr "U is nou verbind aan die VPN-netwerk '%s'" #~ msgid "Less than a minute ago" #~ msgstr "Minder as 'n minuut gelede" #~ msgid "Shut Down" #~ msgstr "Skakel af" #~ msgid "Click Shut Down to quit these applications and shut down the system." #~ msgstr "" #~ "Klik 'Skakel af' om dié toepassings af te sluit en die stelsel af te " #~ "skakel." #~ msgid "The system will shut down automatically in %d seconds." #~ msgstr "Die stelsel sal outomaties afgeskakel word oor %d sekondes." #~ msgid "Shutting down the system." #~ msgstr "Die stelsel word nou afgeskakel." #~ msgid "Confirm" #~ msgstr "Bevestig" 07070100000219000081A40000000000000000000000016712993F0000FD39000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/an.po# Aragonese translation for gnome-shell. # Copyright (C) 2011 gnome-shell's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-shell package. # FULL NAME , 2011. # Daniel Martinez , 2011, 2014, 2015. # msgid "" msgstr "" "Project-Id-Version: gnome-shell master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "shell&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2015-07-23 08:08+0000\n" "PO-Revision-Date: 2015-04-28 08:40+0200\n" "Last-Translator: Daniel \n" "Language-Team: Aragonés \n" "Language: an\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.5.1.1\n" "X-POOTLE-MTIME: 1430206804.000000\n" #: ../data/50-gnome-shell-system.xml.in.h:1 msgid "System" msgstr "Sistema" #: ../data/50-gnome-shell-system.xml.in.h:2 msgid "Show the notification list" msgstr "Amostrar a lista de notificacions" #: ../data/50-gnome-shell-system.xml.in.h:3 msgid "Focus the active notification" msgstr "Dar o foco a la notificación activa" #: ../data/50-gnome-shell-system.xml.in.h:4 msgid "Show the overview" msgstr "Amostrar l'anvista cheneral" #: ../data/50-gnome-shell-system.xml.in.h:5 msgid "Show all applications" msgstr "Amostrar todas as aplicacions" #: ../data/50-gnome-shell-system.xml.in.h:6 msgid "Open the application menu" msgstr "Ubrir o menú de l'aplicación" #: ../data/gnome-shell.desktop.in.in.h:1 msgid "GNOME Shell" msgstr "GNOME Shell" #: ../data/gnome-shell.desktop.in.in.h:2 #: ../data/gnome-shell-wayland.desktop.in.in.h:2 msgid "Window management and application launching" msgstr "Chestión de finestras y inicio d'aplicacions" #: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1 msgid "GNOME Shell Extension Preferences" msgstr "Preferencias d'as extensions de GNOME Shell" #: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2 msgid "Configure GNOME Shell Extensions" msgstr "Configurar as extensions de GNOME Shell" #: ../data/gnome-shell-wayland.desktop.in.in.h:1 msgid "GNOME Shell (wayland compositor)" msgstr "GNOME Shell (composición wayland)" #: ../data/org.gnome.shell.gschema.xml.in.in.h:1 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" "Activar as ferramientas internas, utils ta desembolicadors y probadores, " "dende Alt+F2" #: ../data/org.gnome.shell.gschema.xml.in.in.h:2 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Permitir accedir a las ferramientas internas de depuración monitorización " "usando o dialogo Alt+F2" #: ../data/org.gnome.shell.gschema.xml.in.in.h:3 msgid "UUIDs of extensions to enable" msgstr "UUID d'as extensions que activar" #: ../data/org.gnome.shell.gschema.xml.in.in.h:4 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "As extensions de GNOME Shell tienen una propiedat UUID; ista clau lista as " "extensions que s'han de cargar. Qualsiquier extensión que se quiera cargar " "debe estar en ista lista. Tamién puetz manipular ista lista con os metodos " "de DBus «EnableExtension» y «DisableExtension» en org.gnome.Shell." #: ../data/org.gnome.shell.gschema.xml.in.in.h:5 msgid "Disables the validation of extension version compatibility" msgstr "Desactiva a validación d'a compatibilidat d'a versión d'a extensión" #: ../data/org.gnome.shell.gschema.xml.in.in.h:6 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "GNOME Shell solament cargará as extensions que indiquen que suportan a " "versión actual en execución. Activar ista opción desactivará ista " "comprebación y intentará cargar todas as extensions, independientment d'as " "versions que indiquen que suportan." #: ../data/org.gnome.shell.gschema.xml.in.in.h:7 msgid "List of desktop file IDs for favorite applications" msgstr "Lista d'ID de fichers d'escritorio ta las aplicacions favoritas" #: ../data/org.gnome.shell.gschema.xml.in.in.h:8 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" "As aplicacions correspondients con ixos identificadors s'amostrarán en " "l'aria de favoritos." #: ../data/org.gnome.shell.gschema.xml.in.in.h:9 msgid "App Picker View" msgstr "Anvista de selección d'aplicación" #: ../data/org.gnome.shell.gschema.xml.in.in.h:10 msgid "Index of the currently selected view in the application picker." msgstr "Indiz de l'anvista seleccionada actual en o selector d'aplicacion." #: ../data/org.gnome.shell.gschema.xml.in.in.h:11 msgid "History for command (Alt-F2) dialog" msgstr "Historico d'o dialogo de comandos (Alt+F2)" #. Translators: looking glass is a debugger and inspector tool, see https://live.gnome.org/GnomeShell/LookingGlass #: ../data/org.gnome.shell.gschema.xml.in.in.h:13 msgid "History for the looking glass dialog" msgstr "Historico d'o dialogo de \"looking glass\"" #: ../data/org.gnome.shell.gschema.xml.in.in.h:14 msgid "Always show the 'Log out' menu item in the user menu." msgstr "" "Amostrar siempre l'elemento de menú \"Trancar sesión\" en o menú de " "l'usuario." #: ../data/org.gnome.shell.gschema.xml.in.in.h:15 msgid "" "This key overrides the automatic hiding of the 'Log out' menu item in single-" "user, single-session situations." msgstr "" "Ista clau sobrescribe a ocultación automatica de l'elemento de menú " "\"Trancar sesión\" en situacions d'un solo usuario u d'una sola sesión." #: ../data/org.gnome.shell.gschema.xml.in.in.h:16 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "Indica si se debe recordar a clau ta amontar sistemas de fichers remotos u " "zifraus" #: ../data/org.gnome.shell.gschema.xml.in.in.h:17 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "'Remember Password' checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "A shell solicitará una clau quan s'amonte un dispositivo zifrau u un sistema " "de fichers remoto. Si a clau se puede alzar ta usar-la en un futuro, " "s'amostrará a caixeta \"Remerar clau\". Ista clau estableix a valor " "predeterminada d'a caixeta." #: ../data/org.gnome.shell.gschema.xml.in.in.h:18 msgid "Show the week date in the calendar" msgstr "Amostrar a calendata d'a semana en o calendario" #: ../data/org.gnome.shell.gschema.xml.in.in.h:19 msgid "If true, display the ISO week date in the calendar." msgstr "Si ye cierta, amuestra a calendata de semana ISO en o calandario." #: ../data/org.gnome.shell.gschema.xml.in.in.h:20 msgid "Keybinding to open the application menu" msgstr "Asociación de teclas ta ubrir o menú de l'aplicación" #: ../data/org.gnome.shell.gschema.xml.in.in.h:21 msgid "Keybinding to open the application menu." msgstr "Asociación de teclas ta ubrir o menú de l'aplicación." #: ../data/org.gnome.shell.gschema.xml.in.in.h:22 msgid "Keybinding to open the \"Show Applications\" view" msgstr "Asociación de teclas ta la vista \"Amostrar aplicacions\"" #: ../data/org.gnome.shell.gschema.xml.in.in.h:23 msgid "" "Keybinding to open the \"Show Applications\" view of the Activities Overview." msgstr "" "Asociación de teclas ta ubrir la vista \"Amostrar aplicacions\" de la vista " "d'actividatz." #: ../data/org.gnome.shell.gschema.xml.in.in.h:24 msgid "Keybinding to open the overview" msgstr "Asociación de teclas ta l'anvista cheneral" #: ../data/org.gnome.shell.gschema.xml.in.in.h:25 msgid "Keybinding to open the Activities Overview." msgstr "Asociación de teclas ta ubrir l'anvista d'actividatz" #: ../data/org.gnome.shell.gschema.xml.in.in.h:26 msgid "Keybinding to toggle the visibility of the notification list" msgstr "" "Asociación de teclas ta cambiar a visibilidat d'a lista de notificacions" #: ../data/org.gnome.shell.gschema.xml.in.in.h:27 msgid "Keybinding to toggle the visibility of the notification list." msgstr "" "Asociación de teclas ta cambiar a visibilidat d'a lista de notificacions." #: ../data/org.gnome.shell.gschema.xml.in.in.h:28 msgid "Keybinding to focus the active notification" msgstr "Asociación de teclas ta dar o foco a la notificación activa" #: ../data/org.gnome.shell.gschema.xml.in.in.h:29 msgid "Keybinding to focus the active notification." msgstr "Asociación de teclas ta dar o foco a la notificación activa." #: ../data/org.gnome.shell.gschema.xml.in.in.h:30 msgid "" "Keybinding that pauses and resumes all running tweens, for debugging purposes" msgstr "" "Asociación de teclas que pausan y continan todas as execucions de «tweens», " "ta propositos de depuraci'on" #: ../data/org.gnome.shell.gschema.xml.in.in.h:31 msgid "Which keyboard to use" msgstr "Que teclau usar" #: ../data/org.gnome.shell.gschema.xml.in.in.h:32 msgid "The type of keyboard to use." msgstr "O tipo de teclau que usar." #: ../data/org.gnome.shell.gschema.xml.in.in.h:33 msgid "Limit switcher to current workspace." msgstr "Selector de limite ta l'aria de treballo actual." #: ../data/org.gnome.shell.gschema.xml.in.in.h:34 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "Si en ye verdadero, nomás s'amostrarán en o selector aplicacions que tiengan " "finestras en l'aria de treballo actual. D'atra man, s'incluirán todas as " "aplicacions." #: ../data/org.gnome.shell.gschema.xml.in.in.h:35 msgid "The application icon mode." msgstr "O modo d'icono de l'aplicación." #: ../data/org.gnome.shell.gschema.xml.in.in.h:36 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-only' " "(shows only the application icon) or 'both'." msgstr "" "Configura cómo s'amuestran as finestras en o selector. Os valore posibles " "son \"thumbnail-only\" (amuestra una miniatura d'a finestra), \"app-icon-" "only\" (solament amuestra l'icono de l'aplicación) u \"both\"." #: ../data/org.gnome.shell.gschema.xml.in.in.h:37 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "Si en ye verdadero, nomás s'amostrarán en o selector finestras de l'aria de " "treballo actual. D'atra man, s'incluirán todas as finestras." #: ../data/org.gnome.shell.gschema.xml.in.in.h:38 msgid "Attach modal dialog to the parent window" msgstr "Acoplar un dialogo modal a la finestra pai" #: ../data/org.gnome.shell.gschema.xml.in.in.h:39 msgid "" "This key overrides the key in org.gnome.mutter when running GNOME Shell." msgstr "" "Ista clau sobrescribe a clau en org.gnome.mutter en executar GNOME Shell." #: ../data/org.gnome.shell.gschema.xml.in.in.h:40 msgid "Enable edge tiling when dropping windows on screen edges" msgstr "" "Activar o mosaico en os bordes en arrocegar finestras a os bordes d'a " "finestra" #: ../data/org.gnome.shell.gschema.xml.in.in.h:41 msgid "Workspaces are managed dynamically" msgstr "As arias de treballo se chestionan dinámicamente" #: ../data/org.gnome.shell.gschema.xml.in.in.h:42 msgid "Workspaces only on primary monitor" msgstr "Arias de treballo solament en a pantalla prencipal" #: ../data/org.gnome.shell.gschema.xml.in.in.h:43 msgid "Delay focus changes in mouse mode until the pointer stops moving" msgstr "" "Retardo en cambiar o foco d'o churi dica que o puntero deixa de mover-se" #: ../data/org.gnome.Shell.PortalHelper.desktop.in.h:1 msgid "Network Login" msgstr "Encetar sesión en o rete" #: ../js/extensionPrefs/main.js:122 #, javascript-format msgid "There was an error loading the preferences dialog for %s:" msgstr "I habió una error en lanzar o diálogo de preferencias ta %s:" #: ../js/extensionPrefs/main.js:154 msgid "GNOME Shell Extensions" msgstr "Extensions de GNOME Shell" #: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:145 #: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:452 #: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399 #: ../js/ui/status/network.js:916 msgid "Cancel" msgstr "Cancelar" #: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:215 msgid "Next" msgstr "Siguient" #: ../js/gdm/authPrompt.js:211 ../js/ui/shellMountOperation.js:403 #: ../js/ui/unlockDialog.js:59 msgid "Unlock" msgstr "Desbloquiar" #: ../js/gdm/authPrompt.js:213 msgctxt "button" msgid "Sign In" msgstr "Encetar sesión" #: ../js/gdm/loginDialog.js:281 msgid "Choose Session" msgstr "Esleyir a sesión" #: ../js/gdm/loginDialog.js:431 msgid "Not listed?" msgstr "No ye en a lista?" #: ../js/gdm/loginDialog.js:847 #, javascript-format msgid "(e.g., user or %s)" msgstr "(eix., usuario u %s)" #: ../js/gdm/loginDialog.js:852 ../js/ui/components/networkAgent.js:271 #: ../js/ui/components/networkAgent.js:289 msgid "Username: " msgstr "Nombre d'usuario: " #: ../js/gdm/loginDialog.js:1180 msgid "Login Window" msgstr "Finestra d'inicio de sesión" #: ../js/gdm/util.js:341 msgid "Authentication error" msgstr "Error d'autenticación" #: ../js/gdm/util.js:473 msgid "(or swipe finger)" msgstr "(u pase o dido)" #: ../js/misc/util.js:119 msgid "Command not found" msgstr "No s'ha trobau lo comando" #: ../js/misc/util.js:152 msgid "Could not parse command:" msgstr "No s'ha puesto analizar o comando:" #: ../js/misc/util.js:160 #, javascript-format msgid "Execution of “%s” failed:" msgstr "Ha fallau a execucion de \"%s\":" #. Translators: Time in 24h format */ #: ../js/misc/util.js:191 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" */ #: ../js/misc/util.js:197 msgid "Yesterday, %H∶%M" msgstr "Ahiere, %H∶%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" */ #: ../js/misc/util.js:203 msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" */ #: ../js/misc/util.js:209 msgid "%B %d, %H∶%M" msgstr "%d de %B, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" */ #: ../js/misc/util.js:215 msgid "%B %d %Y, %H∶%M" msgstr "%d de %B de %Y, %H∶%M" #. Translators: Time in 12h format */ #: ../js/misc/util.js:220 msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" */ #: ../js/misc/util.js:226 msgid "Yesterday, %l∶%M %p" msgstr "Ahiere a las %l∶%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" */ #: ../js/misc/util.js:232 msgid "%A, %l∶%M %p" msgstr "%A, %l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" */ #: ../js/misc/util.js:238 msgid "%B %d, %l∶%M %p" msgstr "%d de %B, %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm"*/ #: ../js/misc/util.js:244 msgid "%B %d %Y, %l∶%M %p" msgstr "%d de %B de %Y, %l∶%M %" #. TRANSLATORS: this is the title of the wifi captive portal login #. * window, until we know the title of the actual login page */ #: ../js/portalHelper/main.js:85 msgid "Web Authentication Redirect" msgstr "Rendrecera ta autentiación web" #: ../js/ui/appDisplay.js:789 msgid "Frequently used applications will appear here" msgstr "As aplicaciones usadas freqüentment amaneixerán aquí" #: ../js/ui/appDisplay.js:909 msgid "Frequent" msgstr "Freqüent" #: ../js/ui/appDisplay.js:916 msgid "All" msgstr "Todas" #: ../js/ui/appDisplay.js:1845 msgid "New Window" msgstr "Finestra nueva" #: ../js/ui/appDisplay.js:1873 ../js/ui/dash.js:289 msgid "Remove from Favorites" msgstr "Sacar d'os favoritos" #: ../js/ui/appDisplay.js:1879 msgid "Add to Favorites" msgstr "Anyadir a os favoritos" #: ../js/ui/appDisplay.js:1889 msgid "Show Details" msgstr "Amostrar detalles" #: ../js/ui/appFavorites.js:132 #, javascript-format msgid "%s has been added to your favorites." msgstr "S'ha anyadiu %s a os suyos favoritos." #: ../js/ui/appFavorites.js:166 #, javascript-format msgid "%s has been removed from your favorites." msgstr "S'ha sacau %s d'os suyos favoritos" #: ../js/ui/backgroundMenu.js:19 msgid "Change Background…" msgstr "Cambiar o fondo…" #: ../js/ui/backgroundMenu.js:21 msgid "Display Settings" msgstr "Preferencias de pantalla" #: ../js/ui/backgroundMenu.js:22 ../js/ui/panel.js:650 #: ../js/ui/status/system.js:357 msgid "Settings" msgstr "Configuración" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). */ #: ../js/ui/calendar.js:53 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. */ #: ../js/ui/calendar.js:82 msgctxt "grid sunday" msgid "S" msgstr "D" #. Translators: Calendar grid abbreviation for Monday */ #: ../js/ui/calendar.js:84 msgctxt "grid monday" msgid "M" msgstr "L" #. Translators: Calendar grid abbreviation for Tuesday */ #: ../js/ui/calendar.js:86 msgctxt "grid tuesday" msgid "T" msgstr "M" #. Translators: Calendar grid abbreviation for Wednesday */ #: ../js/ui/calendar.js:88 msgctxt "grid wednesday" msgid "W" msgstr "X" #. Translators: Calendar grid abbreviation for Thursday */ #: ../js/ui/calendar.js:90 msgctxt "grid thursday" msgid "T" msgstr "Ch" #. Translators: Calendar grid abbreviation for Friday */ #: ../js/ui/calendar.js:92 msgctxt "grid friday" msgid "F" msgstr "V" #. Translators: Calendar grid abbreviation for Saturday */ #: ../js/ui/calendar.js:94 msgctxt "grid saturday" msgid "S" msgstr "S" #: ../js/ui/calendar.js:564 msgid "Previous month" msgstr "Mes anterior" #: ../js/ui/calendar.js:574 msgid "Next month" msgstr "Mes siguient" #: ../js/ui/calendar.js:781 msgid "Week %V" msgstr "Semana %V" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. */ #: ../js/ui/calendar.js:1187 msgctxt "event list time" msgid "All Day" msgstr "Tot o diya" #: ../js/ui/calendar.js:1289 msgid "Clear section" msgstr "Limpiar a sección" #: ../js/ui/calendar.js:1516 msgid "Events" msgstr "Eventos" #: ../js/ui/calendar.js:1525 msgctxt "calendar heading" msgid "%A, %B %d" msgstr "%A, %d de %B" #: ../js/ui/calendar.js:1529 msgctxt "calendar heading" msgid "%A, %B %d, %Y" msgstr "%A, %d de %B de %Y" #: ../js/ui/calendar.js:1614 msgid "Notifications" msgstr "Notificacions" #: ../js/ui/calendar.js:1765 msgid "No Notifications" msgstr "No i hai notificacions" #: ../js/ui/calendar.js:1768 msgid "No Events" msgstr "No i hai eventos" #: ../js/ui/components/automountManager.js:91 msgid "External drive connected" msgstr "Dispositivo externo enchegau" #: ../js/ui/components/automountManager.js:102 msgid "External drive disconnected" msgstr "Dispositivo externo desenchegau" #: ../js/ui/components/autorunManager.js:354 #, javascript-format msgid "Open with %s" msgstr "Ubrir con %s" #: ../js/ui/components/keyring.js:94 ../js/ui/components/polkitAgent.js:285 msgid "Password:" msgstr "Clau de paso:" #: ../js/ui/components/keyring.js:120 msgid "Type again:" msgstr "Escriba atra vegada:" #: ../js/ui/components/networkAgent.js:140 ../js/ui/status/network.js:277 #: ../js/ui/status/network.js:359 ../js/ui/status/network.js:919 msgid "Connect" msgstr "Connectar" #: ../js/ui/components/networkAgent.js:233 #: ../js/ui/components/networkAgent.js:245 #: ../js/ui/components/networkAgent.js:273 #: ../js/ui/components/networkAgent.js:293 #: ../js/ui/components/networkAgent.js:303 msgid "Password: " msgstr "Clau de paso: " #: ../js/ui/components/networkAgent.js:238 msgid "Key: " msgstr "Clau: " #: ../js/ui/components/networkAgent.js:277 msgid "Identity: " msgstr "Identidat: " #: ../js/ui/components/networkAgent.js:279 msgid "Private key password: " msgstr "Clau d'a clau privada: " #: ../js/ui/components/networkAgent.js:291 msgid "Service: " msgstr "Servicio: " #: ../js/ui/components/networkAgent.js:320 #: ../js/ui/components/networkAgent.js:658 msgid "Authentication required by wireless network" msgstr "O ret sin cordón requiere autenticación" #: ../js/ui/components/networkAgent.js:321 #: ../js/ui/components/networkAgent.js:659 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network “" "%s”." msgstr "" "S'amenesten claus u claus de zifrau ta accedir a o ret inalambrico\"%s\"." #: ../js/ui/components/networkAgent.js:325 #: ../js/ui/components/networkAgent.js:662 msgid "Wired 802.1X authentication" msgstr "Autenticación 802.1X cableada" #: ../js/ui/components/networkAgent.js:327 msgid "Network name: " msgstr "Nombre d'o ret: " #: ../js/ui/components/networkAgent.js:332 #: ../js/ui/components/networkAgent.js:666 msgid "DSL authentication" msgstr "Autenticación DSL" #: ../js/ui/components/networkAgent.js:339 #: ../js/ui/components/networkAgent.js:672 msgid "PIN code required" msgstr "Codigo PIN requeriu" #: ../js/ui/components/networkAgent.js:340 #: ../js/ui/components/networkAgent.js:673 msgid "PIN code is needed for the mobile broadband device" msgstr "S'ameneste un codigo PIN ta o dispositivo de banda ampla mobil" #: ../js/ui/components/networkAgent.js:341 msgid "PIN: " msgstr "PIN: " #: ../js/ui/components/networkAgent.js:348 #: ../js/ui/components/networkAgent.js:679 msgid "Mobile broadband network password" msgstr "Clau d'o ret de banda ampla mobil" #: ../js/ui/components/networkAgent.js:349 #: ../js/ui/components/networkAgent.js:663 #: ../js/ui/components/networkAgent.js:667 #: ../js/ui/components/networkAgent.js:680 #, javascript-format msgid "A password is required to connect to “%s”." msgstr "Se requier una clau ta connectar-se a \"%s\"." #: ../js/ui/components/networkAgent.js:647 ../js/ui/status/network.js:1657 msgid "Network Manager" msgstr "Chestor d'o rete" #: ../js/ui/components/polkitAgent.js:54 msgid "Authentication Required" msgstr "S'ameneste autenticación" #: ../js/ui/components/polkitAgent.js:96 msgid "Administrator" msgstr "Administrador" #: ../js/ui/components/polkitAgent.js:175 msgid "Authenticate" msgstr "Autenticar" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. */ #: ../js/ui/components/polkitAgent.js:271 ../js/ui/shellMountOperation.js:383 msgid "Sorry, that didn't work. Please try again." msgstr "Prebe atra vegada." #. Translators: this is the other person changing their old IM name to their new #. IM name. */ #: ../js/ui/components/telepathyClient.js:757 #, javascript-format msgid "%s is now known as %s" msgstr "Agora %s se dice %s" #: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:155 msgid "Windows" msgstr "Finestras" #: ../js/ui/dash.js:250 ../js/ui/dash.js:291 msgid "Show Applications" msgstr "Amostrar aplicacions" #: ../js/ui/dash.js:449 msgid "Dash" msgstr "Tablero" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM"). #. */ #: ../js/ui/dateMenu.js:73 msgid "%B %e %Y" msgstr "%B %e %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. */ #: ../js/ui/dateMenu.js:80 msgid "%A %B %e %Y" msgstr "%A %e de %B de %Y" #: ../js/ui/dateMenu.js:160 msgid "Add world clocks…" msgstr "Adhibir reloches d'o mundo…" #: ../js/ui/dateMenu.js:161 msgid "World Clocks" msgstr "Reloches d'o mundo" #: ../js/ui/endSessionDialog.js:64 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "Trancar a sesión %s" #: ../js/ui/endSessionDialog.js:65 msgctxt "title" msgid "Log Out" msgstr "Trancar a sesión" #: ../js/ui/endSessionDialog.js:67 #, javascript-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "se trancará automaticament a sesión de %s en %d segundo." msgstr[1] "se trancará automaticament a sesión de %s en %d segundos." #: ../js/ui/endSessionDialog.js:72 #, javascript-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "A suya sesión se trancará automaticament en %d segundo." msgstr[1] "A suya sesión se trancará automaticament en %d segundos." #: ../js/ui/endSessionDialog.js:78 msgctxt "button" msgid "Log Out" msgstr "Trancar sesion" #: ../js/ui/endSessionDialog.js:84 msgctxt "title" msgid "Power Off" msgstr "Amortar" #: ../js/ui/endSessionDialog.js:85 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Instalar actualizacions y amortar" #: ../js/ui/endSessionDialog.js:87 #, javascript-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "O sistema se reiniciara automaticament en %d segundos." msgstr[1] "O sistema se reiniciara automaticament en %d segundos." #: ../js/ui/endSessionDialog.js:91 msgctxt "checkbox" msgid "Install pending software updates" msgstr "Instalar as actualizacions de software pendients" #: ../js/ui/endSessionDialog.js:94 ../js/ui/endSessionDialog.js:111 msgctxt "button" msgid "Restart" msgstr "Reiniciar" #: ../js/ui/endSessionDialog.js:96 msgctxt "button" msgid "Power Off" msgstr "Amortar" #: ../js/ui/endSessionDialog.js:103 msgctxt "title" msgid "Restart" msgstr "Reiniciar" #: ../js/ui/endSessionDialog.js:105 #, javascript-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "O sistema se reiniciara automaticament en %d segundo." msgstr[1] "O sistema se reiniciara automaticament en %d segundos." #: ../js/ui/endSessionDialog.js:119 msgctxt "title" msgid "Restart & Install Updates" msgstr "Reenchegar y instalar as actualizacions" #: ../js/ui/endSessionDialog.js:121 #, javascript-format msgid "The system will automatically restart and install updates in %d second." msgid_plural "" "The system will automatically restart and install updates in %d seconds." msgstr[0] "" "O sistema se reenchegará y instalará as actualizacions automaticament en %d " "segundo." msgstr[1] "" "O sistema se reenchegará y instalará as actualizacions automaticament en %d " "segundos." #: ../js/ui/endSessionDialog.js:127 msgctxt "button" msgid "Restart & Install" msgstr "Reenchegar y instalar" #: ../js/ui/endSessionDialog.js:128 msgctxt "button" msgid "Install & Power Off" msgstr "Instalar y amortar" #: ../js/ui/endSessionDialog.js:129 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Amortar dimpués d'instalar as actualizacions" #: ../js/ui/endSessionDialog.js:338 msgid "Running on battery power: please plug in before installing updates." msgstr "" "Funcionando con batería: se connecte antes d'instalar as actualizacions." #: ../js/ui/endSessionDialog.js:355 msgid "Some applications are busy or have unsaved work." msgstr "Bellas aplicacions son ocupadas u tienen treballo sin alzar." #: ../js/ui/endSessionDialog.js:362 msgid "Other users are logged in." msgstr "I hai atros usuarios con a sesión encetada" #. Translators: Remote here refers to a remote session, like a ssh login */ #: ../js/ui/endSessionDialog.js:640 #, javascript-format msgid "%s (remote)" msgstr "%s (remoto)" #. Translators: Console here refers to a tty like a VT console */ #: ../js/ui/endSessionDialog.js:643 #, javascript-format msgid "%s (console)" msgstr "%s (consola)" #: ../js/ui/extensionDownloader.js:199 msgid "Install" msgstr "Instalar" #: ../js/ui/extensionDownloader.js:204 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "Descargar y instalar \"%s\" dende extensions.gnome.org?" #: ../js/ui/keyboard.js:747 ../js/ui/status/keyboard.js:713 msgid "Keyboard" msgstr "Teclau" #. translators: 'Hide' is a verb */ #: ../js/ui/legacyTray.js:66 msgid "Hide tray" msgstr "Amagar servilla" #: ../js/ui/legacyTray.js:107 msgid "Status Icons" msgstr "Iconos d'estau" #: ../js/ui/lookingGlass.js:643 msgid "No extensions installed" msgstr "No bi ha extensions instaladas" #. Translators: argument is an extension UUID. */ #: ../js/ui/lookingGlass.js:697 #, javascript-format msgid "%s has not emitted any errors." msgstr "%s no ha chenerau garra error." #: ../js/ui/lookingGlass.js:703 msgid "Hide Errors" msgstr "Amagar errors" #: ../js/ui/lookingGlass.js:707 ../js/ui/lookingGlass.js:767 msgid "Show Errors" msgstr "Amostrar errors" #: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:71 #: ../js/ui/status/location.js:176 msgid "Enabled" msgstr "Activau" #. Translators: this is for a network device that cannot be activated #. because it's disabled by rfkill (airplane mode) */ #. translators: #. * The device has been disabled #: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:179 #: ../js/ui/status/network.js:592 ../src/gvc/gvc-mixer-control.c:1830 msgid "Disabled" msgstr "Desactivau" #: ../js/ui/lookingGlass.js:721 msgid "Error" msgstr "Error" #: ../js/ui/lookingGlass.js:723 msgid "Out of date" msgstr "Caducau" #: ../js/ui/lookingGlass.js:725 msgid "Downloading" msgstr "Descargando" #: ../js/ui/lookingGlass.js:749 msgid "View Source" msgstr "Veyer fuent" #: ../js/ui/lookingGlass.js:758 msgid "Web Page" msgstr "Pachina web" #: ../js/ui/messageTray.js:1486 msgid "System Information" msgstr "Informacion d'o sistema" #: ../js/ui/overview.js:84 msgid "Undo" msgstr "Desfer" #: ../js/ui/overview.js:124 msgid "Overview" msgstr "Vista cheneral" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. */ #: ../js/ui/overview.js:246 msgid "Type to search…" msgstr "Tecleyar ta mirar…" #: ../js/ui/panel.js:352 msgid "Quit" msgstr "Salir" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". */ #: ../js/ui/panel.js:404 msgid "Activities" msgstr "Actividatz" #: ../js/ui/panel.js:755 msgid "Top Bar" msgstr "Barra superior" #: ../js/ui/popupMenu.js:289 msgid "toggle-switch-us" msgstr "toggle-switch-intl" #: ../js/ui/runDialog.js:70 msgid "Enter a Command" msgstr "Introducir un comando" #: ../js/ui/runDialog.js:110 ../js/ui/windowMenu.js:162 msgid "Close" msgstr "Trancar" #: ../js/ui/runDialog.js:281 msgid "Restarting…" msgstr "Reenchegando…" #. Translators: This is a time format for a date in #. long format */ #: ../js/ui/screenShield.js:85 msgid "%A, %B %d" msgstr "%A, %d de %B" #: ../js/ui/screenShield.js:144 #, javascript-format msgid "%d new message" msgid_plural "%d new messages" msgstr[0] "%d mensache nuevo" msgstr[1] "%d mensaches nuevos" #: ../js/ui/screenShield.js:146 #, javascript-format msgid "%d new notification" msgid_plural "%d new notifications" msgstr[0] "%d notificación nueva" msgstr[1] "%d notificacions nuevas" #: ../js/ui/screenShield.js:432 ../js/ui/status/system.js:365 msgid "Lock" msgstr "Blocar" #: ../js/ui/screenShield.js:684 msgid "GNOME needs to lock the screen" msgstr "GNOME ameneste blocar a pantalla" #: ../js/ui/screenShield.js:805 ../js/ui/screenShield.js:1271 msgid "Unable to lock" msgstr "No se podió blocar" #: ../js/ui/screenShield.js:806 ../js/ui/screenShield.js:1272 msgid "Lock was blocked by an application" msgstr "Una aplicación impidió o bloqueyo" #: ../js/ui/search.js:617 msgid "Searching…" msgstr "Mirando…" #: ../js/ui/search.js:619 msgid "No results." msgstr "No se troboron resultaus." #: ../js/ui/shellEntry.js:25 msgid "Copy" msgstr "Copiar" #: ../js/ui/shellEntry.js:30 msgid "Paste" msgstr "Apegar" #: ../js/ui/shellEntry.js:97 msgid "Show Text" msgstr "Amostrar texto" #: ../js/ui/shellEntry.js:99 msgid "Hide Text" msgstr "Amagar texto" #: ../js/ui/shellMountOperation.js:370 msgid "Password" msgstr "Clau de paso:" #: ../js/ui/shellMountOperation.js:391 msgid "Remember Password" msgstr "Remerar clau de paso:" #: ../js/ui/status/accessibility.js:42 msgid "Accessibility" msgstr "Accesibilidat" #: ../js/ui/status/accessibility.js:57 msgid "Zoom" msgstr "Ampliación" #: ../js/ui/status/accessibility.js:64 msgid "Screen Reader" msgstr "Lector de pantalla" #: ../js/ui/status/accessibility.js:68 msgid "Screen Keyboard" msgstr "Teclau en pantalla" #: ../js/ui/status/accessibility.js:72 msgid "Visual Alerts" msgstr "Alertas visuals" #: ../js/ui/status/accessibility.js:75 msgid "Sticky Keys" msgstr "Teclas persistents" #: ../js/ui/status/accessibility.js:78 msgid "Slow Keys" msgstr "Teclas lentas" #: ../js/ui/status/accessibility.js:81 msgid "Bounce Keys" msgstr "Refuso de teclas" #: ../js/ui/status/accessibility.js:84 msgid "Mouse Keys" msgstr "Teclas d'o ratet" #: ../js/ui/status/accessibility.js:167 msgid "High Contrast" msgstr "Contraste alto" #: ../js/ui/status/accessibility.js:202 msgid "Large Text" msgstr "Texto gran" #: ../js/ui/status/bluetooth.js:49 msgid "Bluetooth" msgstr "Bluetooth" #: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:178 #: ../js/ui/status/network.js:360 ../js/ui/status/network.js:1282 #: ../js/ui/status/network.js:1393 ../js/ui/status/rfkill.js:91 #: ../js/ui/status/rfkill.js:118 msgid "Turn Off" msgstr "Desenchegar" #: ../js/ui/status/bluetooth.js:54 msgid "Bluetooth Settings" msgstr "Cofiguracion de Bluetooth" #: ../js/ui/status/bluetooth.js:104 #, javascript-format msgid "%d Connected Device" msgid_plural "%d Connected Devices" msgstr[0] "%d dispositivo connectau" msgstr[1] "%d dispositivos connectaus" #: ../js/ui/status/bluetooth.js:106 ../js/ui/status/network.js:1310 msgid "Not Connected" msgstr "No connectau" #: ../js/ui/status/brightness.js:44 msgid "Brightness" msgstr "Brilo" #: ../js/ui/status/keyboard.js:736 msgid "Show Keyboard Layout" msgstr "Amostrar a distribución d'o teclau" #: ../js/ui/status/location.js:65 msgid "Location" msgstr "Ubicación" #: ../js/ui/status/location.js:72 ../js/ui/status/location.js:177 msgid "Disable" msgstr "Desactivar" #: ../js/ui/status/location.js:73 msgid "Privacy Settings" msgstr "Configuracion de privacidat" #: ../js/ui/status/location.js:176 msgid "In Use" msgstr "En uso" #: ../js/ui/status/location.js:180 msgid "Enable" msgstr "Activar" #: ../js/ui/status/network.js:101 msgid "" msgstr "" #: ../js/ui/status/network.js:457 ../js/ui/status/network.js:1308 #: ../js/ui/status/network.js:1512 msgid "Off" msgstr "Desenchegau" #: ../js/ui/status/network.js:459 msgid "Connected" msgstr "Connectau" #. Translators: this is for network devices that are physically present but are not #. under NetworkManager's control (and thus cannot be used in the menu) */ #: ../js/ui/status/network.js:463 msgid "Unmanaged" msgstr "no chestionada" #: ../js/ui/status/network.js:465 msgid "Disconnecting" msgstr "desconnectando" #: ../js/ui/status/network.js:471 ../js/ui/status/network.js:1302 msgid "Connecting" msgstr "Connectando" #. Translators: this is for network connections that require some kind of key or password */ #: ../js/ui/status/network.js:474 msgid "Authentication required" msgstr "S'amenista autenticación" #. Translators: this is for devices that require some kind of firmware or kernel #. module, which is missing */ #: ../js/ui/status/network.js:482 msgid "Firmware missing" msgstr "Manca o \"firmware\"" #. Translators: this is for a network device that cannot be activated (for example it #. is disabled by rfkill, or it has no coverage */ #: ../js/ui/status/network.js:486 msgid "Unavailable" msgstr "No disponible" #: ../js/ui/status/network.js:488 ../js/ui/status/network.js:1696 msgid "Connection failed" msgstr "Falló a connexión" #: ../js/ui/status/network.js:504 msgid "Wired Settings" msgstr "Opcions inalambricas" #: ../js/ui/status/network.js:546 ../js/ui/status/network.js:624 msgid "Mobile Broadband Settings" msgstr "Opcions de Banda ampla mobil" #: ../js/ui/status/network.js:588 ../js/ui/status/network.js:1306 msgid "Hardware Disabled" msgstr "Hardware desactivau" #: ../js/ui/status/network.js:632 msgid "Use as Internet connection" msgstr "Fer servir como una connexión a internet" #: ../js/ui/status/network.js:813 msgid "Airplane Mode is On" msgstr "O modo avión ye enchegau" #: ../js/ui/status/network.js:814 msgid "Wi-Fi is disabled when airplane mode is on." msgstr "O Wi-Fi ye desactivau quan o modo avión ye enchegau." #: ../js/ui/status/network.js:815 msgid "Turn Off Airplane Mode" msgstr "Desenchegar o modo avión" #: ../js/ui/status/network.js:824 msgid "Wi-Fi is Off" msgstr "O Wi-Fi ye desenchegau" #: ../js/ui/status/network.js:825 msgid "Wi-Fi needs to be turned on in order to connect to a network." msgstr "O Wi-Fi ameniste estar enchegau ta connectar-se a un ret." #: ../js/ui/status/network.js:826 msgid "Turn On Wi-Fi" msgstr "Enchegar o Wi-Fi" #: ../js/ui/status/network.js:851 msgid "Wi-Fi Networks" msgstr "Retz inalambricos" #: ../js/ui/status/network.js:853 msgid "Select a network" msgstr "Selecciona un ret" #: ../js/ui/status/network.js:883 msgid "No Networks" msgstr "No bi ha retz" #: ../js/ui/status/network.js:904 ../js/ui/status/rfkill.js:116 msgid "Use hardware switch to turn off" msgstr "Fer servir o selector de hardware ta desenchegar-lo" #: ../js/ui/status/network.js:1174 msgid "Select Network" msgstr "Selecciona o ret" #: ../js/ui/status/network.js:1180 msgid "Wi-Fi Settings" msgstr "Opcions d'o Wi-Fi" #: ../js/ui/status/network.js:1282 msgid "Turn On" msgstr "Enchegar" #: ../js/ui/status/network.js:1299 msgid "Hotspot Active" msgstr "Punto d'acceso activo" #: ../js/ui/status/network.js:1410 msgid "connecting..." msgstr "conectando…" #. Translators: this is for network connections that require some kind of key or password */ #: ../js/ui/status/network.js:1413 msgid "authentication required" msgstr "s'amenista autenticacion" #: ../js/ui/status/network.js:1415 msgid "connection failed" msgstr "falló a connexión" #: ../js/ui/status/network.js:1481 ../js/ui/status/rfkill.js:94 msgid "Network Settings" msgstr "Configuracion d'o rete" #: ../js/ui/status/network.js:1483 msgid "VPN Settings" msgstr "Configuración de VPN" #: ../js/ui/status/network.js:1502 msgid "VPN" msgstr "VPN" #: ../js/ui/status/network.js:1697 msgid "Activation of network connection failed" msgstr "Falló l'activación d'a connexión de ret" #: ../js/ui/status/power.js:49 msgid "Power Settings" msgstr "Configuracion d'enerchia" #: ../js/ui/status/power.js:65 msgid "Fully Charged" msgstr "Cargada de raso" #: ../js/ui/status/power.js:72 ../js/ui/status/power.js:78 msgid "Estimating…" msgstr "Estimando…" #: ../js/ui/status/power.js:86 #, javascript-format msgid "%d∶%02d Remaining (%d%%)" msgstr "En queda %d∶%02d (%d%%)" #: ../js/ui/status/power.js:91 #, javascript-format msgid "%d∶%02d Until Full (%d%%)" msgstr "%d∶%02d ta la carga plena (%d%%)" #: ../js/ui/status/power.js:119 msgid "UPS" msgstr "SAI" #: ../js/ui/status/power.js:121 msgid "Battery" msgstr "Batería" #: ../js/ui/status/rfkill.js:88 msgid "Airplane Mode" msgstr "Modo avión" #: ../js/ui/status/rfkill.js:90 msgid "On" msgstr "Enchegau" #: ../js/ui/status/system.js:337 msgid "Switch User" msgstr "Cambear d'usuario" #: ../js/ui/status/system.js:342 msgid "Log Out" msgstr "Trancar sesion" #: ../js/ui/status/system.js:361 msgid "Orientation Lock" msgstr "Bloqueyo d'Orientación" #: ../js/ui/status/system.js:369 msgid "Suspend" msgstr "Suspender" #: ../js/ui/status/system.js:372 msgid "Power Off" msgstr "Amortar" #: ../js/ui/status/volume.js:127 msgid "Volume changed" msgstr "Volumen modificau" #: ../js/ui/status/volume.js:162 msgid "Volume" msgstr "Volumen" #: ../js/ui/status/volume.js:213 msgid "Microphone" msgstr "Microfono" #: ../js/ui/unlockDialog.js:67 msgid "Log in as another user" msgstr "Encetar sesión como unatro usuario" #: ../js/ui/unlockDialog.js:84 msgid "Unlock Window" msgstr "Desbloquiar finestra" #: ../js/ui/viewSelector.js:159 msgid "Applications" msgstr "Aplicacions" #: ../js/ui/viewSelector.js:163 msgid "Search" msgstr "Mirar" #: ../js/ui/windowAttentionHandler.js:20 #, javascript-format msgid "“%s” is ready" msgstr "\"%s\" ye parau" #: ../js/ui/windowManager.js:63 msgid "Do you want to keep these display settings?" msgstr "Quiers mantener istas opcions de pantalla?" #. Translators: this and the following message should be limited in lenght, #. to avoid ellipsizing the labels. #. */ #: ../js/ui/windowManager.js:82 msgid "Revert Settings" msgstr "Revertir as opcions" #: ../js/ui/windowManager.js:86 msgid "Keep Changes" msgstr "Mantener os cambeos" #: ../js/ui/windowManager.js:105 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "Os cambeos d'as opcions serán revertius en %d segundo" msgstr[1] "Os cambeos d'as opcions serán revertius en %d segundos" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. */ #: ../js/ui/windowManager.js:660 #, javascript-format msgid "%d x %d" msgstr "%d x %d" #: ../js/ui/windowMenu.js:34 msgid "Minimize" msgstr "Minimizar" #: ../js/ui/windowMenu.js:41 msgid "Unmaximize" msgstr "Restaurar" #: ../js/ui/windowMenu.js:45 msgid "Maximize" msgstr "Maximizar" #: ../js/ui/windowMenu.js:52 msgid "Move" msgstr "Mover" #: ../js/ui/windowMenu.js:58 msgid "Resize" msgstr "Redimensionar" #: ../js/ui/windowMenu.js:65 msgid "Move Titlebar Onscreen" msgstr "Mover abarra de titol adentro d'a pantalla" #: ../js/ui/windowMenu.js:70 msgid "Always on Top" msgstr "Siempre veyible" #: ../js/ui/windowMenu.js:89 msgid "Always on Visible Workspace" msgstr "Siempre en l'aria de treballo veyible" #: ../js/ui/windowMenu.js:105 #, fuzzy #| msgid "Move to Workspace Up" msgid "Move to Workspace Left" msgstr "Mover a l'aria de treballo d'a cucha" #: ../js/ui/windowMenu.js:110 #, fuzzy #| msgid "Move to Workspace Up" msgid "Move to Workspace Right" msgstr "Mover a l'aria de treballo d'a dreita" #: ../js/ui/windowMenu.js:115 msgid "Move to Workspace Up" msgstr "Mover ta l'aria de treballo d'alto" #: ../js/ui/windowMenu.js:120 msgid "Move to Workspace Down" msgstr "Mover ta l'aria de treballo d'abaixo" #: ../js/ui/windowMenu.js:136 #, fuzzy #| msgid "Move to Workspace Up" msgid "Move to Monitor Up" msgstr "Mover a la pantalla d'alto" #: ../js/ui/windowMenu.js:142 #, fuzzy #| msgid "Move to Workspace Down" msgid "Move to Monitor Down" msgstr "Mover a la pantalla d'abaixo" #: ../js/ui/windowMenu.js:148 #, fuzzy msgid "Move to Monitor Left" msgstr "Mover a la pantalla d'a cucha" #: ../js/ui/windowMenu.js:154 #, fuzzy msgid "Move to Monitor Right" msgstr "Mover a la pantalla d'a dreita" #: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1 msgid "Evolution Calendar" msgstr "Calandario d'Evolution" #. translators: #. * The number of sound outputs on a particular device #: ../src/gvc/gvc-mixer-control.c:1837 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u surtida" msgstr[1] "%u surtidas" #. translators: #. * The number of sound inputs on a particular device #: ../src/gvc/gvc-mixer-control.c:1847 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u dentrada" msgstr[1] "%u dentradas" #: ../src/gvc/gvc-mixer-control.c:2373 msgid "System Sounds" msgstr "Sonius d'o sistema" #: ../src/main.c:373 msgid "Print version" msgstr "Imprentar version" #: ../src/main.c:379 msgid "Mode used by GDM for login screen" msgstr "Modo usau por GDM ta la pantalla d'inicio" #: ../src/main.c:385 msgid "Use a specific mode, e.g. \"gdm\" for login screen" msgstr "" "Usar un modo especifico, por eixemplo, \"gdm\" ta la pantalla d'inicio de " "sesión" #: ../src/main.c:391 msgid "List possible modes" msgstr "Listar os modos posibles" #: ../src/shell-app.c:239 msgctxt "program" msgid "Unknown" msgstr "Desconoxiu" #: ../src/shell-app.c:480 #, c-format msgid "Failed to launch “%s”" msgstr "Ha fallau en aventar \"%s\"" #: ../src/shell-keyring-prompt.c:742 msgid "Passwords do not match." msgstr "As claus de paso no coinciden." #: ../src/shell-keyring-prompt.c:750 msgid "Password cannot be blank" msgstr "A clau de paso no puede estar vueda" #: ../src/shell-polkit-authentication-agent.c:346 msgid "Authentication dialog was dismissed by the user" msgstr "L'usuario refusó o dialogo d'autenticación" #~ msgid "Show the message tray" #~ msgstr "Amostrar a servilla de mensaches" #~ msgctxt "event list time" #~ msgid "%H∶%M" #~ msgstr "%H∶%M" #~ msgctxt "event list time" #~ msgid "%l∶%M %p" #~ msgstr "%l∶%M %p" #~ msgctxt "list sunday" #~ msgid "Su" #~ msgstr "Dom" #~ msgctxt "list monday" #~ msgid "M" #~ msgstr "L" #~ msgctxt "list tuesday" #~ msgid "T" #~ msgstr "M" #~ msgctxt "list wednesday" #~ msgid "W" #~ msgstr "X" #~ msgctxt "list thursday" #~ msgid "Th" #~ msgstr "Ch" #~ msgctxt "list friday" #~ msgid "F" #~ msgstr "V" #~ msgctxt "list saturday" #~ msgid "S" #~ msgstr "D" #~ msgid "Nothing Scheduled" #~ msgstr "Cosa programau" #~ msgid "Today" #~ msgstr "Huei" #~ msgid "Tomorrow" #~ msgstr "Maitin" #~ msgid "This week" #~ msgstr "Ista semana" #~ msgid "Next week" #~ msgstr "A semana vinient" #~ msgid "Removable Devices" #~ msgstr "Dispositivos extraíbles" #~ msgid "Eject" #~ msgstr "Fer fuera" #~ msgid "Invitation" #~ msgstr "Convite" #~ msgid "Call" #~ msgstr "Gritar" #~ msgid "File Transfer" #~ msgstr "Transferencia de fichers" #~ msgid "Chat" #~ msgstr "Chat" #~ msgid "Unmute" #~ msgstr "Dar voz" #~ msgid "Mute" #~ msgstr "Silenciar" #~ msgid "Invitation to %s" #~ msgstr "Invitación a %s" #~ msgid "%s is inviting you to join %s" #~ msgstr "%s ye convidando-le a unir-se a %s" #~ msgid "Decline" #~ msgstr "Refusar" #~ msgid "Accept" #~ msgstr "Acceptar" #~ msgid "Video call from %s" #~ msgstr "Videogritada de %s" #~ msgid "Call from %s" #~ msgstr "Gritada de %s" #~ msgid "Answer" #~ msgstr "Responder" #~ msgid "%s is sending you %s" #~ msgstr "%s ye ninviando-le %s" #~ msgid "%s would like permission to see when you are online" #~ msgstr "%s solicita permiso ta veyer quán ye enchegau" #~ msgid "Network error" #~ msgstr "Error d'o ret" #~ msgid "Authentication failed" #~ msgstr "Falló l'autenticación" #~ msgid "Encryption error" #~ msgstr "Error de zifrau" #~ msgid "Certificate not provided" #~ msgstr "Certificau no proporcionau" #~ msgid "Certificate untrusted" #~ msgstr "No se confía en o certificau" #~ msgid "Certificate expired" #~ msgstr "Certificau caducau" #~ msgid "Certificate not activated" #~ msgstr "Certificau no activau" #~ msgid "Certificate hostname mismatch" #~ msgstr "O nombre d'o servidor d'o certificau no coincide" #~ msgid "Certificate fingerprint mismatch" #~ msgstr "O sinyal d'o certificau no coincide" #~ msgid "Certificate self-signed" #~ msgstr "Certificau autofirmau" #~ msgid "Status is set to offline" #~ msgstr "O estau ye establiu a \"desconnectau\"" #~ msgid "Encryption is not available" #~ msgstr "O zifrau no ye disponible" #~ msgid "Certificate is invalid" #~ msgstr "O certificau no ye valido" #~ msgid "Connection has been refused" #~ msgstr "S'ha refusau a connexión" #~ msgid "Connection can't be established" #~ msgstr "No se puede establir a connexión" #~ msgid "Connection has been lost" #~ msgstr "S'ha perdiu a conexión" #~ msgid "This account is already connected to the server" #~ msgstr "Ista cuenta ya ye connectada a o servidor" #~ msgid "" #~ "Connection has been replaced by a new connection using the same resource" #~ msgstr "" #~ "S'ha substituiu a connexión por una nueva connexión usando o mesmo recurso" #~ msgid "The account already exists on the server" #~ msgstr "A cuenta ya existe en o servidor" #~ msgid "Server is currently too busy to handle the connection" #~ msgstr "" #~ "Actualment o servidor ye muit aqueferau intentando chestionar a connexión" #~ msgid "Certificate has been revoked" #~ msgstr "S'ha revocau o certificau" #~ msgid "" #~ "Certificate uses an insecure cipher algorithm or is cryptographically weak" #~ msgstr "" #~ "O certificau usa un algorismo de zifrau inseguro u ye criptograficament " #~ "feble" #~ msgid "" #~ "The length of the server certificate, or the depth of the server " #~ "certificate chain, exceed the limits imposed by the cryptography library" #~ msgstr "" #~ "A longaria d'o certificau d'o servidor u a profundidat d'a cadena d'o " #~ "certificau d'o servidor exceden os limites imposaus por a biblioteca de " #~ "criptografía" #~ msgid "Internal error" #~ msgstr "Error interna" #~ msgid "Unable to connect to %s" #~ msgstr "No se podió connectar a %s" #~ msgid "View account" #~ msgstr "Veyer cuenta" #~ msgid "Unknown reason" #~ msgstr "Razón desconoixida" #~ msgid "Open Calendar" #~ msgstr "Ubrir calendario" #~ msgid "Date & Time Settings" #~ msgstr "Achustes de calendata y hora" #~ msgid "Open" #~ msgstr "Ubrir" #~ msgid "Remove" #~ msgstr "Sacar" #~ msgid "Clear Messages" #~ msgstr "Escoscar mensaches" #~ msgid "Notification Settings" #~ msgstr "Configuración d'as notificacions" #~ msgid "Tray Menu" #~ msgstr "Servilla d'o menú" #~ msgid "No Messages" #~ msgstr "No i hai mensaches" #~ msgid "Message Tray" #~ msgstr "Servilla de mensaches" #~ msgid "Captive Portal" #~ msgstr "Portal captivo" #~ msgid "The maximum accuracy level of location." #~ msgstr "O maximo libel de precisión d'ubicación." #~ msgid "" #~ "Configures the maximum level of location accuracy applications are " #~ "allowed to see. Valid options are 'off' (disable location tracking), " #~ "'country', 'city', 'neighborhood', 'street', and 'exact' (typically " #~ "requires GPS receiver). Please keep in mind that this only controls what " #~ "GeoClue will allow applications to see and they can find user's location " #~ "on their own using network resources (albeit with street-level accuracy " #~ "at best)." #~ msgstr "" #~ "Configura o ran maximo de precisión d'ubicación que as aplicacions " #~ "pueden veyer. As opcions validas son 'off' (seguimiento d'ubicación " #~ "desenchegau), 'country', 'city', 'neighborhood', 'street', and 'exact' " #~ "(typicament requier GPS " #~ msgid "Arrangement of buttons on the titlebar" #~ msgstr "Orden d'os botons en a barra de titol" #~ msgid "" #~ "This key overrides the key in org.gnome.desktop.wm.preferences when " #~ "running GNOME Shell." #~ msgstr "" #~ "Ista clau sobrescribe a clau en org.gnome.desktop.wm.preferences en " #~ "executar GNOME Shell." #~ msgid "Extension" #~ msgstr "Extensión" #~ msgid "Select an extension to configure using the combobox above." #~ msgstr "" #~ "Seleccione una extensión que configurar usando a caixa combinada d'alto." #~ msgid "calendar:MY" #~ msgstr "calendar:MY" #~ msgid "%A, %H:%M" #~ msgstr "%A, %H:%M" #~ msgid "%B %d, %H:%M" #~ msgstr "%d de %B , %H:%M" #~ msgid "%B %d %Y, %H:%M " #~ msgstr "%d de %B %Y, %H:%M " #~ msgid "List of categories that should be displayed as folders" #~ msgstr "Lista de categorías que s'han d'amostrar como carpetas" #~ msgid "" #~ "Each category name in this list will be represented as folder in the " #~ "application view, rather than being displayed inline in the main view." #~ msgstr "" #~ "Cada nombre de categoría d'ista lista se representará como una carpeta en " #~ "a vista d'aplicacions, en cuenta d'amostrar-se en linia en la vista " #~ "prencipal." #~ msgctxt "event list time" #~ msgid "%H\\u2236%M" #~ msgstr "%H\\u2236%M" #~ msgctxt "event list time" #~ msgid "%l\\u2236%M\\u2009%p" #~ msgstr "%l\\u2236%M\\u2009%p" #~ msgid "Screenshots" #~ msgstr "Capturas de pantalla" #~ msgid "Record a screencast" #~ msgstr "Gravar una captura de pantalla" #~ msgid "Whether to collect stats about applications usage" #~ msgstr "" #~ "Indica si s'han de recullir estatisticas sobre l'uso d'as aplicacions" #~ msgid "" #~ "The shell normally monitors active applications in order to present the " #~ "most used ones (e.g. in launchers). While this data will be kept private, " #~ "you may want to disable this for privacy reasons. Please note that doing " #~ "so won't remove already saved data." #~ msgstr "" #~ "A \"shell\" normalment monitoriza todas as aplicacions activas ta " #~ "presentar as mas usadas (eix. en os lanzadors). Encara que istos datos se " #~ "mantienen de forma privada, puede querer desactivar-lo por razons de " #~ "privacidat. Note que fendo-lo no eliminará os datos ya alzaus." #~ msgid "" #~ "Internally used to store the last IM presence explicitly set by the user. " #~ "The value here is from the TpConnectionPresenceType enumeration." #~ msgstr "" #~ "Usau internament ta alzar o zaguer IM de presencia establiu explicitament " #~ "por l'usuario. A valor aquí ye d'a enumeración TpConnectionPresenceType." #~ msgid "" #~ "Internally used to store the last session presence status for the user. " #~ "The value here is from the GsmPresenceStatus enumeration." #~ msgstr "" #~ "Usau internament ta alzar o zaguer estau de presencia d'a sesión de " #~ "l'usuario. A valor aquí ye d'a GsmPresenceStatus." #~ msgid "Keybinding to toggle the screen recorder" #~ msgstr "Asociación de teclas ta cambiar o gravador de pantalla" #~ msgid "Keybinding to start/stop the builtin screen recorder." #~ msgstr "Asociación de teclas ta encetar/aturar o gravador de pantalla." #~ msgid "Framerate used for recording screencasts." #~ msgstr "Taxa de fotogramas usada ta gravar \"screencast\"." #~ msgid "" #~ "The framerate of the resulting screencast recordered by GNOME Shell's " #~ "screencast recorder in frames-per-second." #~ msgstr "" #~ "A taxa de fotogramas d'a gravación resultant gravada por o gravador de " #~ "\"screencast\" de GNOME Shell, en fotogramas por segundo." #~ msgid "The gstreamer pipeline used to encode the screencast" #~ msgstr "A canyería de gstreamer usada ta codificar o \"screencast\"" #~ msgid "" #~ "Sets the GStreamer pipeline used to encode recordings. It follows the " #~ "syntax used for gst-launch. The pipeline should have an unconnected sink " #~ "pad where the recorded video is recorded. It will normally have a " #~ "unconnected source pad; output from that pad will be written into the " #~ "output file. However the pipeline can also take care of its own output - " #~ "this might be used to send the output to an icecast server via shout2send " #~ "or similar. When unset or set to an empty value, the default pipeline " #~ "will be used. This is currently 'vp8enc min_quantizer=13 max_quantizer=13 " #~ "cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux' and records to " #~ "WEBM using the VP8 codec. %T is used as a placeholder for a guess at the " #~ "optimal thread count on the system." #~ msgstr "" #~ "Estableix a canyería GStreamer usada ta codificar gravacions. Sigue a " #~ "sintaxi usada ta gst-launch. A canyería habría de tener un sumidero " #~ "(«sink») desconnectau an gravar o video que se ye gravando. Cheneralment " #~ "tendrá un punto d'orichen desconnectau; a salida d'ixe punto s'escribirá " #~ "en o fichero de salida. Manimenos, a canyería tamién puede prener parte " #~ "en a suya propia salida; isto se puede usar ta ninviar a salida a un " #~ "servidor «icecast» a traviés de shout2send u semellant. Quan no ye " #~ "establiu u lo ye a una valor vueda, s'usará a canyería predeterminada. " #~ "Actualment ye «'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 " #~ "deadline=1000000 threads=%T ! queue ! webmmux» y grava en WEBM usando o " #~ "códec VP8. S'usa %T como marcador de posición ta o numero de filos " #~ "optimos en o sistema." #~ msgid "File extension used for storing the screencast" #~ msgstr "Extensión de fichero que usar ta almagazenar os \"screencast\"" #~ msgid "" #~ "The filename for recorded screencasts will be a unique filename based on " #~ "the current date, and use this extension. It should be changed when " #~ "recording to a different container format." #~ msgstr "" #~ "O nombre de fichero ta os \"screencast\" será un nombre de fichero solo " #~ "basau en a calendata actual y usará ista extensión. S'habría de cambiar " #~ "en gravar en unatro formato contenedor diferent." #~ msgid "Session…" #~ msgstr "Sesión…" #~ msgid "Power" #~ msgstr "Enerchía" #~ msgid "Restart" #~ msgstr "Reiniciar" #~ msgid "Screencast from %d %t" #~ msgstr "Screencast dende %d %t" #~ msgid "Click Log Out to quit these applications and log out of the system." #~ msgstr "" #~ "Prete \"Trancar sesion\" ta salir de ixas aplicacions y trancar a sesion " #~ "d'o sistema." #~ msgid "Logging out of the system." #~ msgstr "Trancando a sesion." #~ msgid "Click Power Off to quit these applications and power off the system." #~ msgstr "Prete \"Amortar\" ta salir d'ixas aplicacions y amortar o sistema." #~ msgid "Powering off the system." #~ msgstr "Amortando o sistema." #~ msgid "Click Restart to quit these applications and restart the system." #~ msgstr "" #~ "Prete \"Reiniciar\" ta salir d'ixas aplicacions y reiniciar o sistema." #~ msgid "Restarting the system." #~ msgstr "Reiniciando lo sistema." #~ msgid "Universal Access Settings" #~ msgstr "Configuración de l'acceso universal" #~ msgid "Visibility" #~ msgstr "Visibilidat" #~ msgid "Send Files to Device…" #~ msgstr "Ninviar fichers a o dispositivo…" #~ msgid "Set Up a New Device…" #~ msgstr "Configurar un dispositivo nuevo…" #~ msgid "Send Files…" #~ msgstr "Ninviar fichers…" #~ msgid "Keyboard Settings" #~ msgstr "Configuración d'o teclau" #~ msgid "Mouse Settings" #~ msgstr "Configuración d'o ratet…" #~ msgid "Sound Settings" #~ msgstr "Configuración d'o son" #~ msgid "Authorization request from %s" #~ msgstr "Solicitut d'autorización de %s" #~ msgid "Device %s wants access to the service '%s'" #~ msgstr "O dispositivo %s quiere accedir a o servicio \"%s\"" #~ msgid "Always grant access" #~ msgstr "Conceder acceso siempre" #~ msgid "Grant this time only" #~ msgstr "Conceder solament ista vegada" #~ msgid "Reject" #~ msgstr "Refusar" #~ msgid "Pairing confirmation for %s" #~ msgstr "Confirmación d'emparellamiento ta \"%s\"" #~ msgid "Device %s wants to pair with this computer" #~ msgstr "O dispositivo \"%s\" quiere emparellar-se con iste equipo" #~ msgid "Please confirm whether the PIN '%06d' matches the one on the device." #~ msgstr "" #~ "Confirme que o PIN amostrau en \"%06d\" coincide con o d'o dispositivo." #~ msgid "Matches" #~ msgstr "Coincide" #~ msgid "Does not match" #~ msgstr "No coincide" #~ msgid "Pairing request for %s" #~ msgstr "Solicitut d'emparejamiento ta \"%s\"" #~ msgid "Please enter the PIN mentioned on the device." #~ msgstr "Introduzca o PIN mencionau en o dispositivo." #~ msgid "OK" #~ msgstr "Aceptar" #~ msgid "Region & Language Settings" #~ msgstr "Configuración de rechión y luenga" #~ msgid "Volume, network, battery" #~ msgstr "Volumen, ret, batería" #~ msgid "disabled" #~ msgstr "desactivada" #~ msgid "cable unplugged" #~ msgstr "cordon desenchegau" #~ msgid "More…" #~ msgstr "Más…" #~ msgid "Wired" #~ msgstr "Cableada" #~ msgid "Auto Ethernet" #~ msgstr "Ethernet automatica" #~ msgid "Auto broadband" #~ msgstr "Banda ampla automatica" #~ msgid "Auto dial-up" #~ msgstr "Marcau automatico" #~ msgid "Auto %s" #~ msgstr "%s automatica" #~ msgid "Auto bluetooth" #~ msgstr "Bluetooth automatico" #~ msgid "Auto wireless" #~ msgstr "Sin cordón automatica" #~ msgid "Wi-Fi" #~ msgstr "Wi-Fi" #~ msgid "Networking is disabled" #~ msgstr "O rete ye desactivau" #~ msgid "%d hour remaining" #~ msgid_plural "%d hours remaining" #~ msgstr[0] "Manca %d hora" #~ msgstr[1] "Mancan %d horas" #~ msgid "%d %s %d %s remaining" #~ msgstr "Mancan %d %s %d %s" #~ msgid "hour" #~ msgid_plural "hours" #~ msgstr[0] "hora" #~ msgstr[1] "horas" #~ msgid "minute" #~ msgid_plural "minutes" #~ msgstr[0] "minuto" #~ msgstr[1] "minutos" #~ msgid "%d minute remaining" #~ msgid_plural "%d minutes remaining" #~ msgstr[0] "Manca %d minuto" #~ msgstr[1] "Mancan %d minutos" #~ msgctxt "percent of battery remaining" #~ msgid "%d%%" #~ msgstr "%d%%" #~ msgid "AC Adapter" #~ msgstr "Adaptador de corrient" #~ msgid "Laptop Battery" #~ msgstr "Bateria d'o portatil" #~ msgid "Monitor" #~ msgstr "Monitor" #~ msgid "Mouse" #~ msgstr "Ratet" #~ msgid "PDA" #~ msgstr "PDA" #~ msgid "Cell Phone" #~ msgstr "Telefono movil" #~ msgid "Media Player" #~ msgstr "Reproductor multimeya" #~ msgid "Tablet" #~ msgstr "Tablet" #~ msgid "Computer" #~ msgstr "Equipo" #~ msgctxt "device" #~ msgid "Unknown" #~ msgstr "Desconoxiu" #~ msgid "Available" #~ msgstr "Disponible" #~ msgid "Busy" #~ msgstr "Aqueferau" #~ msgid "Invisible" #~ msgstr "Invisible" #~ msgid "Away" #~ msgstr "Ausent" #~ msgid "Idle" #~ msgstr "Inactivo" #~ msgid "Your chat status will be set to busy" #~ msgstr "O suyo estau d'o chat s'establirá a \"Aqueferau\"" #~ msgid "" #~ "Notifications are now disabled, including chat messages. Your online " #~ "status has been adjusted to let others know that you might not see their " #~ "messages." #~ msgstr "" #~ "As notificacions son agora desactivadas, incluindo os mensaches de chat. " #~ "O suyo estau en linia s'ha achustau ta que atros saban que puede no leyer " #~ "os suyos mensaches." #~ msgid "Shutting down might cause them to lose unsaved work." #~ msgstr "Amortar puede fer que pierdan o treballo que no haigan alzau." #~ msgid "" #~ "Sorry, no wisdom for you today:\n" #~ "%s" #~ msgstr "" #~ "Hue no tiene garra mensache:\n" #~ "%s" #~ msgid "%s the Oracle says" #~ msgstr "L'oráculo %s diz" #~ msgid "Show date in clock" #~ msgstr "Amostrar a calendata en o reloch" #~ msgid "Show time with seconds" #~ msgstr "Amostrar a hora con segundos" #~ msgid "disabled OpenSearch providers" #~ msgstr "proveedors OpenSearch desactivaus" #~ msgid "APPLICATIONS" #~ msgstr "APLICACIONS" #~ msgid "SETTINGS" #~ msgstr "CONFIGURACION" #~ msgctxt "event list time" #~ msgid "%H:%M" #~ msgstr "%H:%M" #~ msgctxt "event list time" #~ msgid "%l:%M %p" #~ msgstr "%l:%M %p" #~ msgid "%a %b %e, %R:%S" #~ msgstr "%a %e de %b, %R:%S" #~ msgid "%a %b %e, %R" #~ msgstr "%a %e de %b, %R" #~ msgid "%a %R:%S" #~ msgstr "%a %R:%S" #~ msgid "%a %R" #~ msgstr "%a %R" #~ msgid "%a %b %e, %l:%M:%S %p" #~ msgstr "%a %e de %b, %H:%M:%S" #~ msgid "%a %l:%M:%S %p" #~ msgstr "%a %H:%M:%S" #~ msgid "RECENT ITEMS" #~ msgstr "ELEMENTOS RECIENTZ" #~ msgid "Retry" #~ msgstr "Prebar atra vegada" #~ msgid "PLACES & DEVICES" #~ msgstr "PUESTOS Y DISPOSITIVOS" #~ msgid "Power Off..." #~ msgstr "Amortar..." #~ msgid "System Settings" #~ msgstr "Configuracion d'o sistema" #~ msgid "Lock Screen" #~ msgstr "Bloqueyar a pantalla" #~ msgid "Log Out..." #~ msgstr "Trancar a sesion..." #~ msgid "More..." #~ msgstr "Mas..." #~ msgid "%s is online." #~ msgstr "%s ye enchegau/da." #~ msgid "%s is away." #~ msgstr "%s ye ausent." #~ msgid "%s is busy." #~ msgstr "%s ye aqueferau/da." #~ msgid "Sent at %X on %A" #~ msgstr "Ninviau a las %X o %A" #~ msgid "United Kingdom" #~ msgstr "Reino Uniu" #~ msgid "Default" #~ msgstr "Predeterminada" #~ msgid "Home Folder" #~ msgstr "Carpeta presonal" #~ msgid "%1$s: %2$s" #~ msgstr "%1$s: %2$s" 0707010000021A000081A40000000000000000000000016712993F000161F1000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/ar.po# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Khaled Hosny , 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019. # Muhammed Abd-ulaziz Abd-ullah , 2012. # Abderrahim Kitouni , 2012, 2014. # Ibrahim Saed , 2012. msgid "" msgstr "" "Project-Id-Version: gnome-shell master\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-03-18 14:28+0200\n" "PO-Revision-Date: 2019-03-18 14:37+0200\n" "Last-Translator: Khaled Hosny \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: Virtaal 0.7.1\n" "X-Project-Style: gnome\n" #: data/50-gnome-shell-system.xml:6 msgid "System" msgstr "النظام" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "اعرض قائمة التنبيهات" #: data/50-gnome-shell-system.xml:12 msgid "Focus the active notification" msgstr "ركّز على التنبيه النشط" #: data/50-gnome-shell-system.xml:15 msgid "Show the overview" msgstr "اعرض النظرة العامة" #: data/50-gnome-shell-system.xml:18 msgid "Show all applications" msgstr "أظهر كل التطبيقات" #: data/50-gnome-shell-system.xml:21 msgid "Open the application menu" msgstr "افتح قائمة التطبيقات" #: data/gnome-shell-extension-prefs.desktop.in.in:4 #: js/extensionPrefs/main.js:216 msgid "Shell Extensions" msgstr "امتدادات الصدفة" #: data/gnome-shell-extension-prefs.desktop.in.in:5 msgid "Configure GNOME Shell Extensions" msgstr "اضبط امتدادات صدفة جنوم" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "صدفة جنوم" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "إدارة النوافذ وإطلاق التطبيقات" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "تمكين الأدوات الداخلية المفيدة للمطورين والمختبرين من Alt-F2" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "السماح بالوصول إلى التنقيح الداخلي ومراقبة الأدوات باستخدام نافذة حوار Alt-" "F2." #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "معرّفات الامتدادات التي ستُفعّل" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" #: data/org.gnome.shell.gschema.xml.in:26 msgid "Disable user extensions" msgstr "عطّل امتدادات المستخدمين" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" #: data/org.gnome.shell.gschema.xml.in:34 msgid "Disables the validation of extension version compatibility" msgstr "" #: data/org.gnome.shell.gschema.xml.in:35 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" #: data/org.gnome.shell.gschema.xml.in:43 msgid "List of desktop file IDs for favorite applications" msgstr "" #: data/org.gnome.shell.gschema.xml.in:44 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" #: data/org.gnome.shell.gschema.xml.in:51 msgid "App Picker View" msgstr "منظور منتقي التطبيقات" #: data/org.gnome.shell.gschema.xml.in:52 msgid "Index of the currently selected view in the application picker." msgstr "" #: data/org.gnome.shell.gschema.xml.in:58 msgid "History for command (Alt-F2) dialog" msgstr "التأريخ لنافذة حوار الأمر (Alt-F2)" #. Translators: looking glass is a debugger and inspector tool, see https://wiki.gnome.org/Projects/GnomeShell/LookingGlass #: data/org.gnome.shell.gschema.xml.in:63 msgid "History for the looking glass dialog" msgstr "التأريخ لنافذة المرآة" #: data/org.gnome.shell.gschema.xml.in:67 msgid "Always show the “Log out” menu item in the user menu." msgstr "" #: data/org.gnome.shell.gschema.xml.in:68 msgid "" "This key overrides the automatic hiding of the “Log out” menu item in single-" "user, single-session situations." msgstr "" #: data/org.gnome.shell.gschema.xml.in:75 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" #: data/org.gnome.shell.gschema.xml.in:76 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" #: data/org.gnome.shell.gschema.xml.in:85 msgid "" "Whether the default Bluetooth adapter had set up devices associated to it" msgstr "" #: data/org.gnome.shell.gschema.xml.in:86 msgid "" "The shell will only show a Bluetooth menu item if a Bluetooth adapter is " "powered, or if there were devices set up associated with the default " "adapter. This will be reset if the default adapter is ever seen not to have " "devices associated to it." msgstr "" #: data/org.gnome.shell.gschema.xml.in:95 msgid "Enable introspection API" msgstr "" #: data/org.gnome.shell.gschema.xml.in:96 msgid "" "Enables a D-Bus API that allows to introspect the application state of the " "shell." msgstr "" #: data/org.gnome.shell.gschema.xml.in:109 msgid "Keybinding to open the application menu" msgstr "اختصار فتح قائمة التطبيقات" #: data/org.gnome.shell.gschema.xml.in:110 msgid "Keybinding to open the application menu." msgstr "اختصار فتح قائمة التطبيقات." #: data/org.gnome.shell.gschema.xml.in:116 msgid "Keybinding to open the “Show Applications” view" msgstr "اختصار منظور ”اعرض التطبيقات“" #: data/org.gnome.shell.gschema.xml.in:117 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "اختصار منظور ”اعرض التطبيقات“ في النظرة العامة للتطبيقات." #: data/org.gnome.shell.gschema.xml.in:124 msgid "Keybinding to open the overview" msgstr "اختصار فتح النظرة العامة" #: data/org.gnome.shell.gschema.xml.in:125 msgid "Keybinding to open the Activities Overview." msgstr "اختصار فتح النظرة العامة للأنشطة" #: data/org.gnome.shell.gschema.xml.in:131 msgid "Keybinding to toggle the visibility of the notification list" msgstr "اختصار تبديل حالة ظهور قائمة التنبيهات" #: data/org.gnome.shell.gschema.xml.in:132 msgid "Keybinding to toggle the visibility of the notification list." msgstr "اختصار تبديل حالة ظهور قائمة التنبيهات." #: data/org.gnome.shell.gschema.xml.in:138 msgid "Keybinding to focus the active notification" msgstr "اختصار التركيز على التنبيه النشط" #: data/org.gnome.shell.gschema.xml.in:139 msgid "Keybinding to focus the active notification." msgstr "اختصار التركيز على التنبيه النشط." #: data/org.gnome.shell.gschema.xml.in:145 msgid "" "Keybinding that pauses and resumes all running tweens, for debugging purposes" msgstr "" #: data/org.gnome.shell.gschema.xml.in:150 #, fuzzy msgid "Switch to application 1" msgstr "أظهر التطبيقات" #: data/org.gnome.shell.gschema.xml.in:154 #, fuzzy msgid "Switch to application 2" msgstr "أظهر التطبيقات" #: data/org.gnome.shell.gschema.xml.in:158 #, fuzzy msgid "Switch to application 3" msgstr "أظهر التطبيقات" #: data/org.gnome.shell.gschema.xml.in:162 #, fuzzy msgid "Switch to application 4" msgstr "أظهر التطبيقات" #: data/org.gnome.shell.gschema.xml.in:166 #, fuzzy msgid "Switch to application 5" msgstr "أظهر التطبيقات" #: data/org.gnome.shell.gschema.xml.in:170 #, fuzzy msgid "Switch to application 6" msgstr "أظهر التطبيقات" #: data/org.gnome.shell.gschema.xml.in:174 #, fuzzy msgid "Switch to application 7" msgstr "أظهر التطبيقات" #: data/org.gnome.shell.gschema.xml.in:178 #, fuzzy msgid "Switch to application 8" msgstr "أظهر التطبيقات" #: data/org.gnome.shell.gschema.xml.in:182 #, fuzzy msgid "Switch to application 9" msgstr "أظهر التطبيقات" #: data/org.gnome.shell.gschema.xml.in:190 msgid "Which keyboard to use" msgstr "أي لوحة مفاتيح ترغب باستخدامها" #: data/org.gnome.shell.gschema.xml.in:191 msgid "The type of keyboard to use." msgstr "نوع لوحة المفاتيح التي ترغب باستخدامها." #: data/org.gnome.shell.gschema.xml.in:202 #: data/org.gnome.shell.gschema.xml.in:229 msgid "Limit switcher to current workspace." msgstr "" #: data/org.gnome.shell.gschema.xml.in:203 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" #: data/org.gnome.shell.gschema.xml.in:220 msgid "The application icon mode." msgstr "" #: data/org.gnome.shell.gschema.xml.in:221 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-" "only” (shows only the application icon) or “both”." msgstr "" #: data/org.gnome.shell.gschema.xml.in:230 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" #: data/org.gnome.shell.gschema.xml.in:242 msgid "Attach modal dialog to the parent window" msgstr "" #: data/org.gnome.shell.gschema.xml.in:243 #: data/org.gnome.shell.gschema.xml.in:252 #: data/org.gnome.shell.gschema.xml.in:260 #: data/org.gnome.shell.gschema.xml.in:268 #: data/org.gnome.shell.gschema.xml.in:276 msgid "" "This key overrides the key in org.gnome.mutter when running GNOME Shell." msgstr "" #: data/org.gnome.shell.gschema.xml.in:251 msgid "Enable edge tiling when dropping windows on screen edges" msgstr "" #: data/org.gnome.shell.gschema.xml.in:259 msgid "Workspaces are managed dynamically" msgstr "" #: data/org.gnome.shell.gschema.xml.in:267 msgid "Workspaces only on primary monitor" msgstr "مساحات عمل على الشاشة الرئيسية فقط" #: data/org.gnome.shell.gschema.xml.in:275 msgid "Delay focus changes in mouse mode until the pointer stops moving" msgstr "" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "ولوج الشّبكة" #. Translators: Do NOT translate or transliterate this text (this is an icon file name)! #: data/org.gnome.Shell.PortalHelper.desktop.in.in:9 msgid "network-workgroup" msgstr "network-workgroup" #: js/extensionPrefs/main.js:116 msgid "Something’s gone wrong" msgstr "حدثت مشكلة" #: js/extensionPrefs/main.js:123 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" "نأسف جدا لهذا، لكن هناك مشكلة: لا يمكن عرض إعدادات هذا الامتداد. ننصح بإبلاغ " "مطوري هذا الامتداد عن هذه المشكلة." #: js/extensionPrefs/main.js:130 msgid "Technical Details" msgstr "التفاصيل التقنية" #: js/extensionPrefs/main.js:165 msgid "Copy Error" msgstr "انسخ الخطأ" #: js/extensionPrefs/main.js:185 msgid "Homepage" msgstr "الصفحة الرئيسية" #: js/extensionPrefs/main.js:186 msgid "Visit extension homepage" msgstr "اذهب إلى صفحة الامتداد الرئيسية" #: js/extensionPrefs/main.js:449 msgid "No Extensions Installed" msgstr "لا امتدادات مثبّتة" #: js/extensionPrefs/main.js:459 msgid "" "Extensions can be installed through Software or extensions.gnome.org." msgstr "" "يمكن تثبيت الامتدادات من تطبيق «البرمجيات» أو من extensions.gnome.org " #: js/extensionPrefs/main.js:474 msgid "Browse in Software" msgstr "تصفح في «البرمجيات»" #: js/gdm/authPrompt.js:140 js/ui/audioDeviceSelection.js:55 #: js/ui/components/networkAgent.js:117 js/ui/components/polkitAgent.js:136 #: js/ui/endSessionDialog.js:430 js/ui/extensionDownloader.js:188 #: js/ui/shellMountOperation.js:325 js/ui/status/network.js:888 msgid "Cancel" msgstr "ألغِ" #: js/gdm/authPrompt.js:159 js/gdm/authPrompt.js:202 js/gdm/authPrompt.js:434 msgid "Next" msgstr "التالي" #: js/gdm/authPrompt.js:198 js/ui/shellMountOperation.js:329 #: js/ui/unlockDialog.js:41 msgid "Unlock" msgstr "فك القفل" #: js/gdm/authPrompt.js:200 msgctxt "button" msgid "Sign In" msgstr "ادخل" #: js/gdm/loginDialog.js:302 msgid "Choose Session" msgstr "أغلق الجلسة" #. translators: this message is shown below the user list on the #. login screen. It can be activated to reveal an entry for #. manually entering the username. #: js/gdm/loginDialog.js:446 msgid "Not listed?" msgstr "غير مدرج؟" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:884 #, javascript-format msgid "(e.g., user or %s)" msgstr "(مثلا مستخدم أو %s)" #. TTLS and PEAP are actually much more complicated, but this complication #. is not visible here since we only care about phase2 authentication #. (and don't even care of which one) #: js/gdm/loginDialog.js:889 js/ui/components/networkAgent.js:243 #: js/ui/components/networkAgent.js:263 js/ui/components/networkAgent.js:281 msgid "Username: " msgstr "اسم المستخدم: " #: js/gdm/loginDialog.js:1227 msgid "Login Window" msgstr "نافذة الولوج" #: js/gdm/util.js:337 msgid "Authentication error" msgstr "خطأ في الاستيثاق" #. We don't show fingerprint messages directly since it's #. not the main auth service. Instead we use the messages #. as a cue to display our own message. #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger instead #: js/gdm/util.js:477 msgid "(or swipe finger)" msgstr "(أو مرر إصبع)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:88 msgctxt "search-result" msgid "Power Off" msgstr "أطفئ" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:91 msgid "power off;shutdown;reboot;restart" msgstr "أطفئ;أغلق;أعد التشغيل" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:95 msgctxt "search-result" msgid "Lock Screen" msgstr "أوصد الشاشة" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:98 msgid "lock screen" msgstr "أوصد الشاشة" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:102 msgctxt "search-result" msgid "Log Out" msgstr "اخرج" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:105 msgid "logout;sign off" msgstr "اخرج" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:109 msgctxt "search-result" msgid "Suspend" msgstr "علّق" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:112 msgid "suspend;sleep" msgstr "علّق" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:116 msgctxt "search-result" msgid "Switch User" msgstr "غيّر المستخدم" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:119 msgid "switch user" msgstr "بدّل المستخدم" #. Translators: The name of the lock orientation action in search #: js/misc/systemActions.js:123 msgctxt "search-result" msgid "Lock Orientation" msgstr "أوصد الاتجاه" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:126 msgid "lock orientation;screen;rotation" msgstr "أوصد الاتجاه;شاشة;تدوير" #: js/misc/util.js:117 msgid "Command not found" msgstr "لم يُعثَر على الأمر" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:150 msgid "Could not parse command:" msgstr "تعذّر تحليل الأمر:" #: js/misc/util.js:158 #, javascript-format msgid "Execution of “%s” failed:" msgstr "فشل تنفيذ ”%s“:‏" #: js/misc/util.js:175 msgid "Just now" msgstr "الآن" #: js/misc/util.js:177 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "منذ أقل من دقيقة" msgstr[1] "منذ دقيقة" msgstr[2] "منذ دقيقتين" msgstr[3] "منذ %d دقائق" msgstr[4] "منذ %d دقيقة" msgstr[5] "منذ %d دقيقة" #: js/misc/util.js:180 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "منذ أقل من ساعة" msgstr[1] "منذ ساعة" msgstr[2] "منذ ساعتين" msgstr[3] "منذ %d ساعات" msgstr[4] "منذ %d ساعة" msgstr[5] "منذ %d ساعة" #: js/misc/util.js:183 msgid "Yesterday" msgstr "أمس" #: js/misc/util.js:185 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "منذ أقل من يوم" msgstr[1] "منذ يوم" msgstr[2] "منذ يومين" msgstr[3] "منذ %d أيام" msgstr[4] "منذ %d يوما" msgstr[5] "منذ %d يوم" #: js/misc/util.js:188 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "منذ أقل من أسبوع" msgstr[1] "منذ أسبوع" msgstr[2] "منذ أسبوعين" msgstr[3] "منذ %d أسابيع" msgstr[4] "منذ %d أسبوعا" msgstr[5] "منذ %d أسبوع" #: js/misc/util.js:191 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "منذ أقل من شهر" msgstr[1] "منذ شهر واحد" msgstr[2] "منذ شهرين" msgstr[3] "منذ %d أشهر" msgstr[4] "منذ %d شهرًا" msgstr[5] "منذ %d شهر" #: js/misc/util.js:193 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "منذ أقل من سنة" msgstr[1] "منذ سنة واحدة" msgstr[2] "منذ سنتين" msgstr[3] "منذ %d سنوات" msgstr[4] "منذ %d سنة" msgstr[5] "منذ %d سنة" #. Translators: Time in 24h format #: js/misc/util.js:223 msgid "%H∶%M" msgstr "%H:%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/util.js:229 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "بالأمس، %H:%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/util.js:235 #, no-c-format msgid "%A, %H∶%M" msgstr "%A، %H:%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/util.js:241 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%-d %B، %H:%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/util.js:247 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%-d %B %Y، %H:%M" #. Translators: Time in 12h format #: js/misc/util.js:252 msgid "%l∶%M %p" msgstr "%l:%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/util.js:258 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "بالأمس، %l:%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/util.js:264 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A، %l:%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/util.js:270 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%-d %B، %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/util.js:276 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%-d %B %Y، %l:%M %p" #. TRANSLATORS: this is the title of the wifi captive portal login window #: js/portalHelper/main.js:40 msgid "Hotspot Login" msgstr "ولوج نقطة البث" #: js/portalHelper/main.js:86 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "اتصالك بنقطة الاتصال هذه غير آمن. كلمات السر أو أي معلومات تُدخلها في هذه " "الصفحة يمكن أن يطلع عليها الآخرون." #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:37 js/ui/status/location.js:360 msgid "Deny Access" msgstr "ارفض منح الصلاحية" #: js/ui/accessDialog.js:38 js/ui/status/location.js:363 msgid "Grant Access" msgstr "امنح الصلاحية" #: js/ui/appDisplay.js:660 msgid "Frequently used applications will appear here" msgstr "التطبيقات شائعة الاستخدام ستظهر هنا" #: js/ui/appDisplay.js:775 msgid "Frequent" msgstr "شائعة" #: js/ui/appDisplay.js:782 msgid "All" msgstr "الكل" #: js/ui/appDisplay.js:1737 js/ui/panel.js:83 msgid "New Window" msgstr "نافذة جديدة" #: js/ui/appDisplay.js:1751 msgid "Launch using Dedicated Graphics Card" msgstr "شغل باستخدام بطاقة الرسوميات المنفصلة" #: js/ui/appDisplay.js:1778 js/ui/dash.js:239 msgid "Remove from Favorites" msgstr "أزِل من المفضّلة" #: js/ui/appDisplay.js:1784 msgid "Add to Favorites" msgstr "أضِف إلى المفضّلة" #: js/ui/appDisplay.js:1794 js/ui/panel.js:94 msgid "Show Details" msgstr "أظهر التفاصيل" #: js/ui/appFavorites.js:141 #, javascript-format msgid "%s has been added to your favorites." msgstr "أُضيف %s إلى مفضلتك." #: js/ui/appFavorites.js:175 #, javascript-format msgid "%s has been removed from your favorites." msgstr "أُزيل %s من مفضّلتك." #: js/ui/audioDeviceSelection.js:42 msgid "Select Audio Device" msgstr "اختر جهاز صوت" #: js/ui/audioDeviceSelection.js:53 msgid "Sound Settings" msgstr "إعدادات الصوت" #: js/ui/audioDeviceSelection.js:62 msgid "Headphones" msgstr "سماعات أذن" #: js/ui/audioDeviceSelection.js:64 msgid "Headset" msgstr "سماعة رأس" #: js/ui/audioDeviceSelection.js:66 js/ui/status/volume.js:247 msgid "Microphone" msgstr "ميكروفون" #: js/ui/backgroundMenu.js:13 msgid "Change Background…" msgstr "غيّر الخلفية…" #: js/ui/backgroundMenu.js:15 js/ui/status/nightLight.js:43 msgid "Display Settings" msgstr "إعدادات العرض" #: js/ui/backgroundMenu.js:16 msgid "Settings" msgstr "الإعدادات" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:40 msgctxt "calendar-no-work" msgid "06" msgstr "56" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:69 msgctxt "grid sunday" msgid "S" msgstr "ح" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:71 msgctxt "grid monday" msgid "M" msgstr "ن" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:73 msgctxt "grid tuesday" msgid "T" msgstr "ث" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:75 msgctxt "grid wednesday" msgid "W" msgstr "ر" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:77 msgctxt "grid thursday" msgid "T" msgstr "خ" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:79 msgctxt "grid friday" msgid "F" msgstr "ج" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:81 msgctxt "grid saturday" msgid "S" msgstr "س" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:332 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:342 msgid "%OB %Y" msgstr "%OB %Y" #: js/ui/calendar.js:399 msgid "Previous month" msgstr "الشهر السابق" #: js/ui/calendar.js:410 msgid "Next month" msgstr "الشهر التالي" #: js/ui/calendar.js:564 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:619 msgid "Week %V" msgstr "أسبوع %V" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/calendar.js:687 msgctxt "event list time" msgid "All Day" msgstr "طوال اليوم" #: js/ui/calendar.js:819 msgctxt "calendar heading" msgid "%A, %B %-d" msgstr "%A، %-d %B" #: js/ui/calendar.js:823 msgctxt "calendar heading" msgid "%A, %B %-d, %Y" msgstr "%A، %-d %B، %Y" #: js/ui/calendar.js:1046 msgid "No Notifications" msgstr "لا تنبيهات" #: js/ui/calendar.js:1049 msgid "No Events" msgstr "لا أحداث" #: js/ui/calendar.js:1075 msgid "Clear" msgstr "امسح" #. Translators: %s is an application name #: js/ui/closeDialog.js:42 #, javascript-format msgid "“%s” is not responding." msgstr "”‏%s“ لا يستجيب." #: js/ui/closeDialog.js:43 msgid "" "You may choose to wait a short while for it to continue or force the " "application to quit entirely." msgstr "ربما ترغب في الانتظار قليلا ليُكمِل أو إجبار التطبيق على الإنهاء كُلّية." #: js/ui/closeDialog.js:59 msgid "Force Quit" msgstr "أجبر الإنهاء" #: js/ui/closeDialog.js:62 msgid "Wait" msgstr "انتظر" #: js/ui/components/automountManager.js:86 msgid "External drive connected" msgstr "وُصّل قرص خارجي" #: js/ui/components/automountManager.js:98 msgid "External drive disconnected" msgstr "فُصل القرص الخارجي" #: js/ui/components/autorunManager.js:334 #, javascript-format msgid "Open with %s" msgstr "افتح باستخدام %s" #: js/ui/components/keyring.js:77 js/ui/components/polkitAgent.js:255 msgid "Password:" msgstr "كلمة السرّ:" #: js/ui/components/keyring.js:108 msgid "Type again:" msgstr "أدخلها ثانية:" #: js/ui/components/networkAgent.js:102 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router." msgstr "" #: js/ui/components/networkAgent.js:112 js/ui/status/network.js:219 #: js/ui/status/network.js:309 js/ui/status/network.js:891 msgid "Connect" msgstr "اتصل" #. Cisco LEAP #: js/ui/components/networkAgent.js:211 js/ui/components/networkAgent.js:223 #: js/ui/components/networkAgent.js:246 js/ui/components/networkAgent.js:265 #: js/ui/components/networkAgent.js:285 js/ui/components/networkAgent.js:295 msgid "Password: " msgstr "كلمة السرّ: " #. static WEP #: js/ui/components/networkAgent.js:216 msgid "Key: " msgstr "المفتاح: " #: js/ui/components/networkAgent.js:249 js/ui/components/networkAgent.js:271 msgid "Private key password: " msgstr "كلمة سرّ المفتاح الخاص: " #: js/ui/components/networkAgent.js:269 msgid "Identity: " msgstr "التعريف: " #: js/ui/components/networkAgent.js:283 msgid "Service: " msgstr "الخدمة: " #: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:685 msgid "Authentication required by wireless network" msgstr "تتطلب الشبكة اللاسلكية الاستيثاق" #: js/ui/components/networkAgent.js:313 js/ui/components/networkAgent.js:686 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network " "“%s”." msgstr "كلمات السر أو مفاتيح التعمية مطلوبة للوصول إلى الشبكة اللاسلكية ”%s“." #: js/ui/components/networkAgent.js:317 js/ui/components/networkAgent.js:689 msgid "Wired 802.1X authentication" msgstr "استيثاق 802.1X سلكي" #: js/ui/components/networkAgent.js:319 msgid "Network name: " msgstr "اسم الشبكة: " #: js/ui/components/networkAgent.js:324 js/ui/components/networkAgent.js:693 msgid "DSL authentication" msgstr "استيثاق اتصال DSL" #: js/ui/components/networkAgent.js:331 js/ui/components/networkAgent.js:699 msgid "PIN code required" msgstr "رمز PIN مطلوب" #: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:700 msgid "PIN code is needed for the mobile broadband device" msgstr "جهاز شبكة الهاتف المحمول يتطلب رمز PIN" #: js/ui/components/networkAgent.js:333 msgid "PIN: " msgstr "PIN: " #: js/ui/components/networkAgent.js:340 js/ui/components/networkAgent.js:706 msgid "Mobile broadband network password" msgstr "كلمة سرّ شبكة الهاتف المحمول" #: js/ui/components/networkAgent.js:341 js/ui/components/networkAgent.js:690 #: js/ui/components/networkAgent.js:694 js/ui/components/networkAgent.js:707 #, javascript-format msgid "A password is required to connect to “%s”." msgstr "كلمة السرّ مطلوبة للاتصال ب‍ ”%s“." #: js/ui/components/networkAgent.js:674 js/ui/status/network.js:1664 msgid "Network Manager" msgstr "مدير الشبكة" #: js/ui/components/polkitAgent.js:34 msgid "Authentication Required" msgstr "الاستيثاق مطلوب" #: js/ui/components/polkitAgent.js:62 msgid "Administrator" msgstr "المدير" #: js/ui/components/polkitAgent.js:139 msgid "Authenticate" msgstr "استوثق" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:241 js/ui/shellMountOperation.js:309 msgid "Sorry, that didn’t work. Please try again." msgstr "للأسف لم يُفلح هذا. أعِد المحاولة." #. Translators: this is the other person changing their old IM name to their new #. IM name. #: js/ui/components/telepathyClient.js:778 #, javascript-format msgid "%s is now known as %s" msgstr "غيّر %s اسمه إلى %s" #: js/ui/ctrlAltTab.js:21 js/ui/viewSelector.js:169 msgid "Windows" msgstr "النوافذ" #: js/ui/dash.js:200 js/ui/dash.js:241 msgid "Show Applications" msgstr "أظهر التطبيقات" #. Translators: this is the name of the dock/favorites area on #. the left of the overview #: js/ui/dash.js:390 msgid "Dash" msgstr "الشريط" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:62 msgid "%B %-d %Y" msgstr "%-d %B %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:69 msgid "%A %B %e %Y" msgstr "%A %e %B %Y" #: js/ui/dateMenu.js:131 msgid "Add world clocks…" msgstr "أضف ساعات عالمية…" #: js/ui/dateMenu.js:132 msgid "World Clocks" msgstr "ساعات عالمية" #: js/ui/dateMenu.js:222 msgid "Weather" msgstr "الطقس" #: js/ui/dateMenu.js:305 msgid "Select a location…" msgstr "اختر موقعا…" #: js/ui/dateMenu.js:313 msgid "Loading…" msgstr "يحمّل…" #: js/ui/dateMenu.js:323 msgid "Go online for weather information" msgstr "اتصل بالإنترنت لمعلومات الطقس" #: js/ui/dateMenu.js:325 msgid "Weather information is currently unavailable" msgstr "معلومات الطقس غير متاحة حاليًا" #: js/ui/endSessionDialog.js:42 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "خروج %s" #: js/ui/endSessionDialog.js:43 msgctxt "title" msgid "Log Out" msgstr "خروج" #: js/ui/endSessionDialog.js:45 #, javascript-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "سيُخرج %s تلقائيا الآن." msgstr[1] "سيُخرج %s تلقائيا بعد ثانية." msgstr[2] "سيُخرج %s تلقائيا بعد ثانيتين." msgstr[3] "سيُخرج %s تلقائيا بعد %d ثوان." msgstr[4] "سيُخرج %s تلقائيا بعد %d ثانية." msgstr[5] "سيُخرج %s تلقائيا بعد %d ثانية." #: js/ui/endSessionDialog.js:50 #, javascript-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "ستُخرج تلقائيا الآن." msgstr[1] "ستُخرج تلقائيا بعد ثانية." msgstr[2] "ستُخرج تلقائيا بعد ثانيتين." msgstr[3] "ستُخرج تلقائيا بعد %d ثوان." msgstr[4] "ستُخرج تلقائيا بعد %d ثانية." msgstr[5] "ستُخرج تلقائيا بعد %d ثانية." #: js/ui/endSessionDialog.js:56 msgctxt "button" msgid "Log Out" msgstr "اخرج" #: js/ui/endSessionDialog.js:62 msgctxt "title" msgid "Power Off" msgstr "إطفاء الحاسوب" #: js/ui/endSessionDialog.js:63 msgctxt "title" msgid "Install Updates & Power Off" msgstr "ثبّت التحديثات ثم أطفئ" #: js/ui/endSessionDialog.js:65 #, javascript-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "سيُطفأ النظام تلقائيا الآن." msgstr[1] "سيُطفأ النظام تلقائيا بعد ثانية." msgstr[2] "سيُطفأ النظام تلقائيا بعد ثانيتين." msgstr[3] "سيُطفأ النظام تلقائيا بعد %d ثوان." msgstr[4] "سيُطفأ النظام تلقائيا بعد %d ثانية." msgstr[5] "سيُطفأ النظام تلقائيا بعد %d ثانية." #: js/ui/endSessionDialog.js:69 msgctxt "checkbox" msgid "Install pending software updates" msgstr "ثبّت تحديثات البرمجيات المعلّقة" #: js/ui/endSessionDialog.js:72 js/ui/endSessionDialog.js:89 msgctxt "button" msgid "Restart" msgstr "أعِد التشغيل" #: js/ui/endSessionDialog.js:74 msgctxt "button" msgid "Power Off" msgstr "أطفئ" #: js/ui/endSessionDialog.js:81 msgctxt "title" msgid "Restart" msgstr "إعادة التشغيل" #: js/ui/endSessionDialog.js:83 #, javascript-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "سيُعاد تشغيل النظام تلقائيا الآن." msgstr[1] "سيُعاد تشغيل النظام تلقائيا بعد ثانية." msgstr[2] "سيُعاد تشغيل النظام تلقائيا بعد ثانيتين." msgstr[3] "سيُعاد تشغيل النظام تلقائيا بعد %d ثوان." msgstr[4] "سيُعاد تشغيل النظام تلقائيا بعد %d ثانية." msgstr[5] "سيُعاد تشغيل النظام تلقائيا بعد %d ثانية." #: js/ui/endSessionDialog.js:97 msgctxt "title" msgid "Restart & Install Updates" msgstr "أعد التشغيل و ثبّت التحديثات" #: js/ui/endSessionDialog.js:99 #, javascript-format msgid "The system will automatically restart and install updates in %d second." msgid_plural "" "The system will automatically restart and install updates in %d seconds." msgstr[0] "سيُعاد تشغيل النظام تلقائيا و تُثبت التحديثات الآن." msgstr[1] "سيُعاد تشغيل النظام تلقائيا و تُثبت التحديثات بعد ثانية." msgstr[2] "سيُعاد تشغيل النظام تلقائيا و تُثبت التحديثات بعد ثانيتين." msgstr[3] "سيُعاد تشغيل النظام تلقائيا و تُثبت التحديثات بعد %d ثوان." msgstr[4] "سيُعاد تشغيل النظام تلقائيا و تُثبت التحديثات بعد %d ثانية." msgstr[5] "سيُعاد تشغيل النظام تلقائيا و تُثبت التحديثات بعد %d ثانية." #: js/ui/endSessionDialog.js:105 js/ui/endSessionDialog.js:125 msgctxt "button" msgid "Restart & Install" msgstr "أعد التشغيل ثم ثبّت" #: js/ui/endSessionDialog.js:106 msgctxt "button" msgid "Install & Power Off" msgstr "ثبّت ثم أطفئ" #: js/ui/endSessionDialog.js:107 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "أطفئ بعد تثبيت التحديثات" #: js/ui/endSessionDialog.js:115 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "أعد التشغيل و ثبّت الترقية" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:120 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "ستُثبّت %s %s بعد إعادة التشغيل. قد يستغرق تثبيت الترقية بعض الوقت: تأكد من " "الحفظ الاحتياطي، و توصيل الحاسوب بمقبس الطاقة." #: js/ui/endSessionDialog.js:309 msgid "Running on battery power: please plug in before installing updates." msgstr "يعمل على طاقة البطارية: رجاءً وصّل بمقبس التيار قبل تثبيت التحديثات." #: js/ui/endSessionDialog.js:326 msgid "Some applications are busy or have unsaved work." msgstr "بعض التطبيقات مشغولة أو تحتوي عملًا لم يُحفظ." #: js/ui/endSessionDialog.js:333 msgid "Other users are logged in." msgstr "مستخدمون آخرون والِجون" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:614 #, javascript-format msgid "%s (remote)" msgstr "%s (عن بعد)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:617 #, javascript-format msgid "%s (console)" msgstr "%s (طرفية)" #: js/ui/extensionDownloader.js:192 msgid "Install" msgstr "ثبت" #: js/ui/extensionDownloader.js:197 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "هل تريد تنزيل و تثبيت ”%s“ من extensions.gnome.org؟" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:78 #, javascript-format msgid "%s wants to inhibit shortcuts" msgstr "يريد %s تعطيل الاختصارات" #: js/ui/inhibitShortcutsDialog.js:79 msgid "Application wants to inhibit shortcuts" msgstr "يريد التطبيق تعطيل الاختصارات" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:88 #, javascript-format msgid "You can restore shortcuts by pressing %s." msgstr "يمكنك استعادة الاختصارات بضغط %s." #: js/ui/inhibitShortcutsDialog.js:93 msgid "Deny" msgstr "ارفض" #: js/ui/inhibitShortcutsDialog.js:100 msgid "Allow" msgstr "اسمح" #: js/ui/kbdA11yDialog.js:31 msgid "Slow Keys Turned On" msgstr "المفاتيح البطيئة مفعلة" #: js/ui/kbdA11yDialog.js:32 msgid "Slow Keys Turned Off" msgstr "المفاتيح البطيئة معطّلة" #: js/ui/kbdA11yDialog.js:33 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "لقد ضغطت مفتاح Shift لثمان ثوان. هذا اختصار ميزة المفاتيح البطيئة المؤثّر على " "طريقة عمل لوحة مفاتيحك." #: js/ui/kbdA11yDialog.js:40 msgid "Sticky Keys Turned On" msgstr "المفاتيح اللاصقة مفعلة" #: js/ui/kbdA11yDialog.js:41 msgid "Sticky Keys Turned Off" msgstr "المفاتيح اللاصقة معطّلة" #: js/ui/kbdA11yDialog.js:43 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "لقد نقرت مفتاح Shift خمس مرات متتالية. هذا اختصار ميزة المفاتيح اللاصقة " "المؤثّر على طريقة عمل لوحة مفاتيحك." #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" "لقد ضغطت على مفتاحان في آن واحد أو نقرت مفتاح Shift خمس مرّات متتالية. يعطّل " "هذا ميزة المفاتيح اللاصقة المؤثّر على طريقة عمل لوحة مفاتيحك." #: js/ui/kbdA11yDialog.js:57 msgid "Leave On" msgstr "اتركه مفعّلا" #: js/ui/kbdA11yDialog.js:57 js/ui/status/bluetooth.js:133 #: js/ui/status/network.js:1263 msgid "Turn On" msgstr "شغّل" #: js/ui/kbdA11yDialog.js:65 js/ui/status/bluetooth.js:133 #: js/ui/status/network.js:128 js/ui/status/network.js:310 #: js/ui/status/network.js:1263 js/ui/status/network.js:1375 #: js/ui/status/nightLight.js:39 js/ui/status/rfkill.js:79 #: js/ui/status/rfkill.js:106 msgid "Turn Off" msgstr "أوقف" #: js/ui/kbdA11yDialog.js:65 msgid "Leave Off" msgstr "اتركه معطّلا" #: js/ui/keyboard.js:200 msgid "Region & Language Settings" msgstr "إعدادات الإقليم و اللغة" #: js/ui/lookingGlass.js:615 msgid "No extensions installed" msgstr "لا امتدادات مثبّتة" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:669 #, javascript-format msgid "%s has not emitted any errors." msgstr "لم يصدر %s أي خطأ." #: js/ui/lookingGlass.js:675 msgid "Hide Errors" msgstr "أخفِ الأخطاء" #: js/ui/lookingGlass.js:679 js/ui/lookingGlass.js:739 msgid "Show Errors" msgstr "اظهر الأخطاء" #: js/ui/lookingGlass.js:688 msgid "Enabled" msgstr "مفعّل" #. translators: #. * The device has been disabled #: js/ui/lookingGlass.js:691 subprojects/gvc/gvc-mixer-control.c:1864 msgid "Disabled" msgstr "معطّل" #: js/ui/lookingGlass.js:693 msgid "Error" msgstr "خطأ" #: js/ui/lookingGlass.js:695 msgid "Out of date" msgstr "قديم" #: js/ui/lookingGlass.js:697 msgid "Downloading" msgstr "ينزّل" #: js/ui/lookingGlass.js:721 msgid "View Source" msgstr "اعرض المصدر" #: js/ui/lookingGlass.js:730 msgid "Web Page" msgstr "صفحة الوب" #: js/ui/messageTray.js:1480 msgid "System Information" msgstr "معلومات النظام" #: js/ui/mpris.js:177 msgid "Unknown artist" msgstr "فنان غير معروف" #: js/ui/mpris.js:178 msgid "Unknown title" msgstr "عنوان غير معروف" #: js/ui/osdWindow.js:22 js/ui/status/volume.js:199 msgid "Volume" msgstr "شدة الصوت" #: js/ui/overview.js:73 msgid "Undo" msgstr "تراجع" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:100 msgid "Overview" msgstr "نظرة عامة" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overview.js:226 msgid "Type to search…" msgstr "اكتب نصا للبحث عنه…" #: js/ui/padOsd.js:92 msgid "New shortcut…" msgstr "اختصار جديد…" #: js/ui/padOsd.js:141 msgid "Application defined" msgstr "التطبيقات معرّفة" #: js/ui/padOsd.js:142 msgid "Show on-screen help" msgstr "اعرض المساعدة على الشاشة" #: js/ui/padOsd.js:143 msgid "Switch monitor" msgstr "بدّل الشاشة" #: js/ui/padOsd.js:144 msgid "Assign keystroke" msgstr "أسند ضغطة مفتاح" #: js/ui/padOsd.js:209 msgid "Done" msgstr "تم" #: js/ui/padOsd.js:721 msgid "Edit…" msgstr "حرّر…" #: js/ui/padOsd.js:763 js/ui/padOsd.js:868 msgid "None" msgstr "لا شيء" #: js/ui/padOsd.js:822 msgid "Press a button to configure" msgstr "اضغط زر للضبط" #: js/ui/padOsd.js:823 msgid "Press Esc to exit" msgstr "اضغط Esc للخروج" #: js/ui/padOsd.js:826 msgid "Press any key to exit" msgstr "اضغط أي زر للخروج" #: js/ui/panel.js:108 msgid "Quit" msgstr "أنْهِ" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:471 msgid "Activities" msgstr "الأنشطة" #: js/ui/panel.js:746 msgctxt "System menu in the top bar" msgid "System" msgstr "النظام" #: js/ui/panel.js:866 msgid "Top Bar" msgstr "الشريط العلوي" #. Translators: this MUST be either "toggle-switch-us" #. (for toggle switches containing the English words #. "ON" and "OFF") or "toggle-switch-intl" (for toggle #. switches containing "◯" and "|"). Other values will #. simply result in invisible toggle switches. #: js/ui/popupMenu.js:285 msgid "toggle-switch-us" msgstr "toggle-switch-intl" #: js/ui/runDialog.js:64 msgid "Enter a Command" msgstr "اكتب أمرًا" #: js/ui/runDialog.js:104 js/ui/windowMenu.js:166 msgid "Close" msgstr "أغلِق" #: js/ui/runDialog.js:266 msgid "Restart is not available on Wayland" msgstr "إعادة التشغيل غير متاحة على وايلاند" #: js/ui/runDialog.js:271 msgid "Restarting…" msgstr "يُعيد التشغيل…" #. Translators: This is a time format for a date in #. long format #: js/ui/screenShield.js:77 msgid "%A, %B %d" msgstr "%A، %d %B" #: js/ui/screenShield.js:133 #, javascript-format msgid "%d new message" msgid_plural "%d new messages" msgstr[0] "لا رسائل جديدة" msgstr[1] "رسالة جديدة" msgstr[2] "رسالتين جديدتين" msgstr[3] "%d رسائل جديدة" msgstr[4] "%d رسالة جديدة" msgstr[5] "%d رسالة جديدة" #: js/ui/screenShield.js:135 #, javascript-format msgid "%d new notification" msgid_plural "%d new notifications" msgstr[0] "لا تنبيهات جديدة" msgstr[1] "تنبيه جديد" msgstr[2] "تنبيهين جديدين" msgstr[3] "%d تنبيهات جديدة" msgstr[4] "%d تنبيها جديدا" msgstr[5] "%d تنبيه جديد" #: js/ui/screenShield.js:449 js/ui/status/system.js:270 msgid "Lock" msgstr "أوصِد" #: js/ui/screenShield.js:713 msgid "GNOME needs to lock the screen" msgstr "تحتاج جنوم إلى إيصاد الشاشة" #. We could not become modal, so we can't activate the #. screenshield. The user is probably very upset at this #. point, but any application using global grabs is broken #. Just tell him to stop using this app #. #. XXX: another option is to kick the user into the gdm login #. screen, where we're not affected by grabs #: js/ui/screenShield.js:826 js/ui/screenShield.js:1299 msgid "Unable to lock" msgstr "تعذّر الإيصاد" #: js/ui/screenShield.js:827 js/ui/screenShield.js:1300 msgid "Lock was blocked by an application" msgstr "منع تطبيق الإيصاد" #: js/ui/search.js:635 msgid "Searching…" msgstr "يبحث…" #: js/ui/search.js:637 msgid "No results." msgstr "لا نتائج." #: js/ui/search.js:761 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "لا مزيد" msgstr[1] "%d أكثر" msgstr[2] "%d أكثر" msgstr[3] "%d أكثر" msgstr[4] "%d أكثر" msgstr[5] "%d أكثر" #: js/ui/shellEntry.js:19 msgid "Copy" msgstr "انسخ" #: js/ui/shellEntry.js:24 msgid "Paste" msgstr "ألصق" #: js/ui/shellEntry.js:90 msgid "Show Text" msgstr "أظهر النص" #: js/ui/shellEntry.js:92 msgid "Hide Text" msgstr "أخفِ النص" #: js/ui/shellMountOperation.js:296 msgid "Password" msgstr "كلمة السر" #: js/ui/shellMountOperation.js:317 msgid "Remember Password" msgstr "تذكر كلمة السر" #: js/ui/status/accessibility.js:35 msgid "Accessibility" msgstr "الإتاحة" #: js/ui/status/accessibility.js:50 msgid "Zoom" msgstr "تقريب" #: js/ui/status/accessibility.js:57 msgid "Screen Reader" msgstr "قارئ الشاشة" #: js/ui/status/accessibility.js:61 msgid "Screen Keyboard" msgstr "لوحة مفاتيح على الشاشة" #: js/ui/status/accessibility.js:65 msgid "Visual Alerts" msgstr "تنبيهات بصرية" #: js/ui/status/accessibility.js:68 msgid "Sticky Keys" msgstr "مفاتيح لاصقة" #: js/ui/status/accessibility.js:71 msgid "Slow Keys" msgstr "مفاتيح بطيئة" #: js/ui/status/accessibility.js:74 msgid "Bounce Keys" msgstr "مفاتيح لها صوت" #: js/ui/status/accessibility.js:77 msgid "Mouse Keys" msgstr "مفاتيح الفأرة" #: js/ui/status/accessibility.js:151 msgid "High Contrast" msgstr "تباين عال" #: js/ui/status/accessibility.js:182 msgid "Large Text" msgstr "نص كبير" #: js/ui/status/bluetooth.js:38 msgid "Bluetooth" msgstr "بلوتوث" #: js/ui/status/bluetooth.js:47 js/ui/status/network.js:585 msgid "Bluetooth Settings" msgstr "إعدادات بلوتوث" #. Translators: this is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:127 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d مُتصل" msgstr[1] "%d مُتصل" msgstr[2] "%d مُتصل" msgstr[3] "%d مُتصل" msgstr[4] "%d مُتصل" msgstr[5] "%d مُتصل" #: js/ui/status/bluetooth.js:129 msgid "Off" msgstr "مغلق" #: js/ui/status/bluetooth.js:131 msgid "On" msgstr "مفعّل" #: js/ui/status/brightness.js:36 msgid "Brightness" msgstr "السطوع" #: js/ui/status/keyboard.js:812 msgid "Keyboard" msgstr "لوحة المفاتيح" #: js/ui/status/keyboard.js:834 msgid "Show Keyboard Layout" msgstr "أظهر تخطيط لوحة المفاتيح" #: js/ui/status/location.js:64 js/ui/status/location.js:172 msgid "Location Enabled" msgstr "التموضع مفعّل" #: js/ui/status/location.js:65 js/ui/status/location.js:173 msgid "Disable" msgstr "عطّل" #: js/ui/status/location.js:66 msgid "Privacy Settings" msgstr "إعدادات الخصوصية" #: js/ui/status/location.js:171 msgid "Location In Use" msgstr "التموضع مستخدم" #: js/ui/status/location.js:175 msgid "Location Disabled" msgstr "التموضع غير مفعّل" #: js/ui/status/location.js:176 msgid "Enable" msgstr "فعّل" #. Translators: %s is an application name #: js/ui/status/location.js:353 #, javascript-format msgid "Give %s access to your location?" msgstr "أتريد إعطاء %s صلاحية معرفة مكانك؟" #: js/ui/status/location.js:354 msgid "Location access can be changed at any time from the privacy settings." msgstr "يمكن تغيير صلاحيات الوصول لمكانك في أي وقت من إعدادات الخصوصية." #: js/ui/status/network.js:66 msgid "" msgstr "<غير معروفة>" #. Translators: %s is a network identifier #: js/ui/status/network.js:416 js/ui/status/network.js:1292 #, javascript-format msgid "%s Off" msgstr "‏%s مغلق" #. Translators: %s is a network identifier #: js/ui/status/network.js:419 #, javascript-format msgid "%s Connected" msgstr "‏%s مُتصل" #. Translators: this is for network devices that are physically present but are not #. under NetworkManager's control (and thus cannot be used in the menu); #. %s is a network identifier #: js/ui/status/network.js:424 #, javascript-format msgid "%s Unmanaged" msgstr "‏%s غير مُدار" #. Translators: %s is a network identifier #: js/ui/status/network.js:427 #, javascript-format msgid "%s Disconnecting" msgstr "‏%s يقطع الاتّصال" #. Translators: %s is a network identifier #: js/ui/status/network.js:434 js/ui/status/network.js:1284 #, javascript-format msgid "%s Connecting" msgstr "‏%s يتّصل" #. Translators: this is for network connections that require some kind of key or password; %s is a network identifier #: js/ui/status/network.js:437 #, javascript-format msgid "%s Requires Authentication" msgstr "يتطلب %s استيثاق" #. Translators: this is for devices that require some kind of firmware or kernel #. module, which is missing; %s is a network identifier #: js/ui/status/network.js:445 #, javascript-format msgid "Firmware Missing For %s" msgstr "برمجيات %s المغروسة (Firmware) غير متاحة" #. Translators: this is for a network device that cannot be activated (for example it #. is disabled by rfkill, or it has no coverage; %s is a network identifier #: js/ui/status/network.js:449 #, javascript-format msgid "%s Unavailable" msgstr "‏%s غير متاح" #. Translators: %s is a network identifier #: js/ui/status/network.js:452 #, javascript-format msgid "%s Connection Failed" msgstr "فشل اتصال %s" #: js/ui/status/network.js:464 msgid "Wired Settings" msgstr "إعدادات الاتصال السلكي" #: js/ui/status/network.js:506 msgid "Mobile Broadband Settings" msgstr "إعدادات شبكة الهاتف المحمول" #. Translators: %s is a network identifier #: js/ui/status/network.js:553 js/ui/status/network.js:1289 #, javascript-format msgid "%s Hardware Disabled" msgstr "عتاد %s مُعَطَّل" #. Translators: this is for a network device that cannot be activated #. because it's disabled by rfkill (airplane mode); %s is a network identifier #: js/ui/status/network.js:557 #, javascript-format msgid "%s Disabled" msgstr "‏%s معطّل" #: js/ui/status/network.js:597 msgid "Connect to Internet" msgstr "اتصل بالإنترنت" #: js/ui/status/network.js:786 msgid "Airplane Mode is On" msgstr "وضع الطائرة مُفعّل" #: js/ui/status/network.js:787 msgid "Wi-Fi is disabled when airplane mode is on." msgstr "الاتصال اللاسلكي مُعطّل في وضع الطائرة." #: js/ui/status/network.js:788 msgid "Turn Off Airplane Mode" msgstr "عطّل وضع الطائرة" #: js/ui/status/network.js:797 msgid "Wi-Fi is Off" msgstr "الاتصال اللاسلكي مغلق" #: js/ui/status/network.js:798 msgid "Wi-Fi needs to be turned on in order to connect to a network." msgstr "تحتاج إلى تشغيل الاتصال اللاسلكي للاتصال بالشبكة." #: js/ui/status/network.js:799 msgid "Turn On Wi-Fi" msgstr "شغّل الاتصال اللاسلكي" #: js/ui/status/network.js:824 msgid "Wi-Fi Networks" msgstr "الشبكات اللاسلكية" #: js/ui/status/network.js:826 msgid "Select a network" msgstr "اختر شبكة" #: js/ui/status/network.js:855 msgid "No Networks" msgstr "لا شبكات" #: js/ui/status/network.js:876 js/ui/status/rfkill.js:104 msgid "Use hardware switch to turn off" msgstr "استخدم زر العتاد للإغلاق" #: js/ui/status/network.js:1152 msgid "Select Network" msgstr "اختر شبكة" #: js/ui/status/network.js:1158 msgid "Wi-Fi Settings" msgstr "إعدادات الاتصال اللاسلكي" #. Translators: %s is a network identifier #: js/ui/status/network.js:1280 #, javascript-format msgid "%s Hotspot Active" msgstr "نقطة اتصال %s نشطة" #. Translators: %s is a network identifier #: js/ui/status/network.js:1295 #, javascript-format msgid "%s Not Connected" msgstr "‏%s غير متّصل" #: js/ui/status/network.js:1392 msgid "connecting…" msgstr "يتّصل…" #. Translators: this is for network connections that require some kind of key or password #: js/ui/status/network.js:1395 msgid "authentication required" msgstr "الاستيثاق مطلوب" #: js/ui/status/network.js:1397 msgid "connection failed" msgstr "فشل الاتصال" #: js/ui/status/network.js:1447 msgid "VPN Settings" msgstr "إعدادات VPN" #: js/ui/status/network.js:1464 msgid "VPN" msgstr "‏VPN" #: js/ui/status/network.js:1474 msgid "VPN Off" msgstr "‏VPN مُطفأ" #: js/ui/status/network.js:1535 js/ui/status/rfkill.js:82 msgid "Network Settings" msgstr "إعدادات الشّبكة" #: js/ui/status/network.js:1564 #, javascript-format msgid "%s Wired Connection" msgid_plural "%s Wired Connections" msgstr[0] "اتصال سلكي" msgstr[1] "اتصال سلكي" msgstr[2] "اتصاليْن سلكيِّيْن" msgstr[3] "%s اتصالات سلكية" msgstr[4] "%s اتصالًا سلكيًا" msgstr[5] "%s اتصال سلكي" #: js/ui/status/network.js:1568 #, javascript-format msgid "%s Wi-Fi Connection" msgid_plural "%s Wi-Fi Connections" msgstr[0] "اتصال لاسكلي" msgstr[1] "اتصال لاسكلي" msgstr[2] "اتصاليْن لاسكليِّيْن" msgstr[3] "%s اتصالات لاسكلية" msgstr[4] "%s اتصالًا لاسكليًا" msgstr[5] "%s اتصال لاسكلي" #: js/ui/status/network.js:1572 #, javascript-format msgid "%s Modem Connection" msgid_plural "%s Modem Connections" msgstr[0] "اتصال مودم" msgstr[1] "اتصال مودم" msgstr[2] "اتصاليْ مودم" msgstr[3] "‏%s اتصالات مودم" msgstr[4] "‏%s اتصال مودم" msgstr[5] "‏%s اتصال مودم" #: js/ui/status/network.js:1701 msgid "Connection failed" msgstr "فشل الاتصال" #: js/ui/status/network.js:1702 msgid "Activation of network connection failed" msgstr "فشل تفعيل اتصال الشبكة" #: js/ui/status/nightLight.js:60 msgid "Night Light Disabled" msgstr "الإضاءة الليلية موقفة" #: js/ui/status/nightLight.js:61 msgid "Night Light On" msgstr "الإضاءة الليلية مفعّلة" #: js/ui/status/nightLight.js:62 msgid "Resume" msgstr "استكمل" #: js/ui/status/nightLight.js:63 msgid "Disable Until Tomorrow" msgstr "أوقف حتى الغد" #: js/ui/status/power.js:45 msgid "Power Settings" msgstr "إعدادات الطاقة" #: js/ui/status/power.js:61 msgid "Fully Charged" msgstr "مشحونة بالكامل" #: js/ui/status/power.js:67 msgid "Not Charging" msgstr "لا تُشحن" #. 0 is reported when UPower does not have enough data #. to estimate battery life #: js/ui/status/power.js:70 js/ui/status/power.js:76 msgid "Estimating…" msgstr "يَحسِب…" #. Translators: this is : Remaining () #: js/ui/status/power.js:84 #, javascript-format msgid "%d∶%02d Remaining (%d %%)" msgstr "بقي %d:%02d ‏(%d٪)" #. Translators: this is : Until Full () #: js/ui/status/power.js:89 #, javascript-format msgid "%d∶%02d Until Full (%d %%)" msgstr "بقي على الاكتمال %d:%02d ‏(%d٪)" #: js/ui/status/power.js:117 js/ui/status/power.js:119 #, javascript-format msgid "%d %%" msgstr "%d ٪" #: js/ui/status/remoteAccess.js:42 msgid "Screen is Being Shared" msgstr "تجري مشاركة الشاشة" #: js/ui/status/remoteAccess.js:44 msgid "Turn off" msgstr "أوقف" #. The menu only appears when airplane mode is on, so just #. statically build it as if it was on, rather than dynamically #. changing the menu contents. #: js/ui/status/rfkill.js:77 msgid "Airplane Mode On" msgstr "وضع الطائرة مُفعّل" #: js/ui/status/system.js:203 msgid "Switch User" msgstr "بدّل المستخدم" #: js/ui/status/system.js:215 msgid "Log Out" msgstr "اخرج" #: js/ui/status/system.js:227 msgid "Account Settings" msgstr "إعدادات الحساب" #: js/ui/status/system.js:255 msgid "Orientation Lock" msgstr "قفل الاتجاه" #: js/ui/status/system.js:281 msgid "Suspend" msgstr "علّق" #: js/ui/status/system.js:291 msgid "Power Off" msgstr "أطفئ الحاسوب" #: js/ui/status/thunderbolt.js:261 msgid "Thunderbolt" msgstr "ثندربُلت" #: js/ui/status/thunderbolt.js:322 msgid "Unknown Thunderbolt device" msgstr "جهاز ثندربُلت غير معروف" #: js/ui/status/thunderbolt.js:323 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" "وصّل جهاز جديد و أنت غير موجود. رجاء أفصل الجهاز ثم أوصله لتستطيع استخدامه." #: js/ui/status/thunderbolt.js:326 msgid "Unauthorized Thunderbolt device" msgstr "جهاز ثندربُلت غير مخوّل" #: js/ui/status/thunderbolt.js:327 msgid "" "New device has been detected and needs to be authorized by an administrator." msgstr "اكتُشف جهاز جديد وعلى مدير النظام تخويله." #: js/ui/status/thunderbolt.js:333 msgid "Thunderbolt authorization error" msgstr "عطل أثناء تخويل ثندربُلت" #: js/ui/status/thunderbolt.js:334 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "تعذّر تخويل جهاز ثندربُلت: %s" #: js/ui/status/volume.js:133 msgid "Volume changed" msgstr "تغيّرت شدة الصوت" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:16 msgid "Mirror" msgstr "طابق" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:21 msgid "Join Displays" msgstr "ضم الشاشات" #. Translators: this is for using only an external display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:26 msgid "External Only" msgstr "الخارجية فقط" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:31 msgid "Built-in Only" msgstr "المدمجة فقط" #: js/ui/unlockDialog.js:49 msgid "Log in as another user" msgstr "لِج كمستخدم آخر" #: js/ui/unlockDialog.js:66 msgid "Unlock Window" msgstr "افتح قفل النافذة" #: js/ui/viewSelector.js:173 msgid "Applications" msgstr "التطبيقات" #: js/ui/viewSelector.js:177 msgid "Search" msgstr "ابحث" #: js/ui/windowAttentionHandler.js:19 #, javascript-format msgid "“%s” is ready" msgstr "‏”%s“ جاهز" #: js/ui/windowManager.js:53 msgid "Do you want to keep these display settings?" msgstr "أتريد الإبقاء على هذه الإعدادات؟" #. Translators: this and the following message should be limited in lenght, #. to avoid ellipsizing the labels. #. #: js/ui/windowManager.js:65 msgid "Revert Settings" msgstr "تراجع عن الإعدادات" #: js/ui/windowManager.js:68 msgid "Keep Changes" msgstr "أبق على التغييرات" #: js/ui/windowManager.js:86 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "سيُتراجع عن التغييرات الآن" msgstr[1] "سيُتراجع عن التغييرات بعد ثانية" msgstr[2] "سيُتراجع عن التغييرات بعد ثانيتين" msgstr[3] "سيُتراجع عن التغييرات بعد %d ثوان" msgstr[4] "سيُتراجع عن التغييرات بعد %d ثانية" msgstr[5] "سيُتراجع عن التغييرات بعد %d ثانية" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:662 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:26 msgid "Minimize" msgstr "صغّر" #: js/ui/windowMenu.js:33 msgid "Unmaximize" msgstr "ألغِ التكبير" #: js/ui/windowMenu.js:37 msgid "Maximize" msgstr "كبّر" #: js/ui/windowMenu.js:44 msgid "Move" msgstr "انقل" #: js/ui/windowMenu.js:50 msgid "Resize" msgstr "غيّر الحجم" #: js/ui/windowMenu.js:57 msgid "Move Titlebar Onscreen" msgstr "انقل شريط العنوان على الشاشة" #: js/ui/windowMenu.js:62 msgid "Always on Top" msgstr "دائما في القمّة" #: js/ui/windowMenu.js:81 msgid "Always on Visible Workspace" msgstr "دائما على مساحة العمل المرئية" #: js/ui/windowMenu.js:95 msgid "Move to Workspace Left" msgstr "انقل لمساحة العمل على اليسار" #: js/ui/windowMenu.js:101 msgid "Move to Workspace Right" msgstr "انقل لمساحة العمل على اليمين" #: js/ui/windowMenu.js:107 msgid "Move to Workspace Up" msgstr "انقل لمساحة العمل لأعلى" #: js/ui/windowMenu.js:113 msgid "Move to Workspace Down" msgstr "انقل لمساحة العمل لأسفل" #: js/ui/windowMenu.js:131 msgid "Move to Monitor Up" msgstr "انقل للشاشة الأعلى" #: js/ui/windowMenu.js:140 msgid "Move to Monitor Down" msgstr "انقل للشاشة الأسفل" #: js/ui/windowMenu.js:149 msgid "Move to Monitor Left" msgstr "انقل للشاشة اليسرى" #: js/ui/windowMenu.js:158 msgid "Move to Monitor Right" msgstr "انقل للشاشة اليمنى" #: src/calendar-server/evolution-calendar.desktop.in:3 msgid "Evolution Calendar" msgstr "تقويم إيفُليوشِن" #. Translators: Do NOT translate or transliterate this text (this is an icon file name)! #: src/calendar-server/evolution-calendar.desktop.in:6 msgid "evolution" msgstr "evolution" #: src/main.c:408 msgid "Print version" msgstr "اطبع الإصدارة" #: src/main.c:414 msgid "Mode used by GDM for login screen" msgstr "الوضع الذي يستخدمه مدير ولوج جنوم لشاشة الولوج" #: src/main.c:420 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "استخدم طورا معينا، مثلا: ”gdm“ لشاشة الولوج" #: src/main.c:426 msgid "List possible modes" msgstr "اسرد كل الأطوار الممكنة" #: src/shell-app.c:264 msgctxt "program" msgid "Unknown" msgstr "غير معروف" #: src/shell-app.c:515 #, c-format msgid "Failed to launch “%s”" msgstr "فشل تشغيل ”%s“" #: src/shell-keyring-prompt.c:730 msgid "Passwords do not match." msgstr "لا تتطابق كلمتا السر." #: src/shell-keyring-prompt.c:738 msgid "Password cannot be blank" msgstr "لا يمكن أن تكون كلمة السرّ فارغة" #: src/shell-polkit-authentication-agent.c:348 msgid "Authentication dialog was dismissed by the user" msgstr "أغلق المستخدم مربع الاستيثاق الحِواري" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1871 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "لا مخرَج" msgstr[1] "مخرَج واحد" msgstr[2] "مخرَجين" msgstr[3] "%u مخارج" msgstr[4] "%u مخرجا" msgstr[5] "%u مخرج" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1881 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "لا مدخل" msgstr[1] "مدخل واحد" msgstr[2] "مدخلين" msgstr[3] "%u مداخل" msgstr[4] "%u مدخلا" msgstr[5] "%u مدخل" #: subprojects/gvc/gvc-mixer-control.c:2736 msgid "System Sounds" msgstr "أصوات النظام" #~ msgid "There was an error loading the preferences dialog for %s:" #~ msgstr "حدث خطأ أثناء تشغيل حوار تفضيلات %s‏:" #~ msgid "%s all day." #~ msgstr "%s طوال اليوم." #~ msgid "%s, then %s later." #~ msgstr "%s، ثم %s فيما بعد." #~ msgid "%s, then %s, followed by %s later." #~ msgstr "%s، ثم %s، و بعدها %s." #~ msgid "Feels like %s." #~ msgstr "تبدو مثل %s." #~ msgctxt "search-result" #~ msgid "Power off" #~ msgstr "أطفئ" #~ msgctxt "search-result" #~ msgid "Log out" #~ msgstr "اخرج" #~ msgctxt "search-result" #~ msgid "Switch user" #~ msgstr "بدّل المستخدم" #~ msgid "Hide tray" #~ msgstr "أخفِ الصينية" #~ msgid "Status Icons" #~ msgstr "أيقونات الحالة" #~ msgid "GNOME Shell Extension Preferences" #~ msgstr "تفضيلات امتدادات صدفة جنوم" #~ msgid "Web Authentication Redirect" #~ msgstr "إعادة توجيه استيثاق عبر الوب" #~ msgid "Events" #~ msgstr "الأحداث" #~ msgid "Notifications" #~ msgstr "التنبيهات" #~ msgid "Clear section" #~ msgstr "امسح القسم" #~ msgid "Media" #~ msgstr "وسائط" #~ msgid "Not In Use" #~ msgstr "غير مستخدم" #~ msgid "%d x %d" #~ msgstr "%d × %d" #~ msgid "Show the week date in the calendar" #~ msgstr "اعرض تاريخ الأسبوع في التقويم" #~ msgid "Use as Internet connection" #~ msgstr "استخدمه اتّصالًا بالإنترنت" #~ msgid "%s is requesting access to your location." #~ msgstr "يطلب %s صلاحية معرفة مكانك." #~ msgid "GNOME Shell (wayland compositor)" #~ msgstr "صدفة جنوم (وايلاند)" #~ msgid "%d Connected Device" #~ msgid_plural "%d Connected Devices" #~ msgstr[0] "لا أجهزة موصّلة" #~ msgstr[1] "جهاز واحد موصّل" #~ msgstr[2] "جهازين موصّلين" #~ msgstr[3] "%d أجهزة موصّلة" #~ msgstr[4] "%d جهازًا موصّلا" #~ msgstr[5] "%d جهاز موصّل" #~ msgid "Authentication required" #~ msgstr "الاستيثاق مطلوب" #~ msgid "UPS" #~ msgstr "مزود طاقة لا منقطعة (UPS)" #~ msgid "Battery" #~ msgstr "البطارية" #~ msgid "Airplane Mode" #~ msgstr "وضع الطائرة" #~ msgid "Show the message tray" #~ msgstr "أظهر لوحة الرسائل" #~ msgctxt "event list time" #~ msgid "%H∶%M" #~ msgstr "%H:%M" #~ msgctxt "event list time" #~ msgid "%l∶%M %p" #~ msgstr "%l:%M %p" #~ msgctxt "list sunday" #~ msgid "Su" #~ msgstr "الأحد" #~ msgctxt "list monday" #~ msgid "M" #~ msgstr "الاثنين" #~ msgctxt "list tuesday" #~ msgid "T" #~ msgstr "الثلاثاء" #~ msgctxt "list wednesday" #~ msgid "W" #~ msgstr "الأربعاء" #~ msgctxt "list thursday" #~ msgid "Th" #~ msgstr "الخميس" #~ msgctxt "list friday" #~ msgid "F" #~ msgstr "الجمعة" #~ msgctxt "list saturday" #~ msgid "S" #~ msgstr "السبت" #~ msgid "Nothing Scheduled" #~ msgstr "الجدول خال" #~ msgid "Today" #~ msgstr "اليوم" #~ msgid "Tomorrow" #~ msgstr "غدا" #~ msgid "This week" #~ msgstr "هذا الأسبوع" #~ msgid "Next week" #~ msgstr "الأسبوع القادم" #~ msgid "Removable Devices" #~ msgstr "الأجهزة المنفصلة" #~ msgid "Eject" #~ msgstr "أخرج" #~ msgid "Invitation" #~ msgstr "دعوة" #~ msgid "Call" #~ msgstr "اتصال" #~ msgid "File Transfer" #~ msgstr "نقل ملفات" #~ msgid "Chat" #~ msgstr "دردشة" #~ msgid "Unmute" #~ msgstr "أطلِق الصوت" #~ msgid "Mute" #~ msgstr "أصمِت" #~ msgid "Invitation to %s" #~ msgstr "دعوة إلى %s" #~ msgid "%s is inviting you to join %s" #~ msgstr "يدعوك %s للانضمام إلى %s" #~ msgid "Decline" #~ msgstr "أرفُض" #~ msgid "Accept" #~ msgstr "أقْبَل" #~ msgid "Video call from %s" #~ msgstr "مكالمة فيديو من %s" #~ msgid "Call from %s" #~ msgstr "مكالمة من %s" #~ msgid "Answer" #~ msgstr "أجب" #~ msgid "%s is sending you %s" #~ msgstr "‏%s يرسل لك %s" #~ msgid "%s would like permission to see when you are online" #~ msgstr "يريد %s الإذن ليعرف عندما تكون متصلا" #~ msgid "Authentication failed" #~ msgstr "فشل الاستيثاق" #~ msgid "Encryption error" #~ msgstr "فشل التعمية" #~ msgid "Certificate not provided" #~ msgstr "الشهادة غير متوفرة" #~ msgid "Certificate untrusted" #~ msgstr "الشهادة غير موثوقة" #~ msgid "Certificate expired" #~ msgstr "الشهادة منتهية الصلاحية" #~ msgid "Certificate not activated" #~ msgstr "الشهادة غير مفعلة" #~ msgid "Certificate hostname mismatch" #~ msgstr "الشهادة غير متوافقة مع اسم المستضيف" #~ msgid "Certificate fingerprint mismatch" #~ msgstr "بصمة الشهادة غير متطابقة" #~ msgid "Certificate self-signed" #~ msgstr "الشهادة موقعة ذاتيا" #~ msgid "Status is set to offline" #~ msgstr "الحالة مضبوطة إلى غير متصل" #~ msgid "Certificate is invalid" #~ msgstr "الشهادة غير صالحة" #~ msgid "Connection has been refused" #~ msgstr "رُفض الاتصال" #~ msgid "Connection can't be established" #~ msgstr "تعذر إنشاء الاتصال" #~ msgid "Connection has been lost" #~ msgstr "فُقد الاتصال" #~ msgid "This account is already connected to the server" #~ msgstr "هذا الحساب متصل بالخادوم بالفعل" #~ msgid "" #~ "Connection has been replaced by a new connection using the same resource" #~ msgstr "تم تبديل الاتصال باتصال جديد باستخدام نفس المورد" #~ msgid "The account already exists on the server" #~ msgstr "الحساب موجود بالفعل في الخادوم" #~ msgid "Server is currently too busy to handle the connection" #~ msgstr "الخادوم مشغول للغاية حاليًا ولا يستطيع التعامل مع الاتصال" #~ msgid "Certificate has been revoked" #~ msgstr "نُقِضت الشهادة" #~ msgid "" #~ "Certificate uses an insecure cipher algorithm or is cryptographically weak" #~ msgstr "تستخدم الشهادة خوارزمية تعمية غير آمنة أو ضعيفة" #~ msgid "" #~ "The length of the server certificate, or the depth of the server " #~ "certificate chain, exceed the limits imposed by the cryptography library" #~ msgstr "" #~ "طول شهادة الخادم أو طول سلسلة الشهادات إلى الخادم تجاوز الحد الذي تفرضه " #~ "مكتبة التعمية" #~ msgid "Internal error" #~ msgstr "خطأ داخلي" #~ msgid "Unable to connect to %s" #~ msgstr "تعذّر الاتصال مع %s" #~ msgid "View account" #~ msgstr "أظهر الحساب" #~ msgid "Open Calendar" #~ msgstr "افتح التقويم" #~ msgid "Date & Time Settings" #~ msgstr "إعدادات الوقت و التّاريخ" #~ msgid "Open" #~ msgstr "افتح" #~ msgid "Remove" #~ msgstr "أزِل" #~ msgid "Clear Messages" #~ msgstr "امسح الرسائل" #~ msgid "Notification Settings" #~ msgstr "إعدادات التنبيهات" #~ msgid "Tray Menu" #~ msgstr "قائمة الصينية" #~ msgid "No Messages" #~ msgstr "لا رسائل" #~ msgid "Message Tray" #~ msgstr "لوحة الرسائل" #~ msgid "Extension" #~ msgstr "امتداد" #~ msgid "Select an extension to configure using the combobox above." #~ msgstr "اختر امتدادا لضبطه من القائمة أعلاه." #~ msgid "unavailable" #~ msgstr "غير متاح" #~ msgctxt "event list time" #~ msgid "%H\\u2236%M" #~ msgstr "%H:%M" #~ msgctxt "event list time" #~ msgid "%l\\u2236%M\\u2009%p" #~ msgstr "%l:%M\\u2009%p" #~ msgid "%H\\u2236%M" #~ msgstr "%H\\u2236%M" #~ msgid "%A, %H\\u2236%M" #~ msgstr "%A، %H\\u2236%M" #~ msgid "%B %d, %H\\u2236%M" #~ msgstr "%d %B، %H\\u2236%M" #~ msgid "%B %d %Y, %H\\u2236%M" #~ msgstr "%d %B %Y، %H\\u2236%M" #~ msgid "%l\\u2236%M %p" #~ msgstr "%H\\u2236%M" #~ msgid "%A, %l\\u2236%M %p" #~ msgstr "%A، %l\\u2236%M %p" #~ msgid "%B %d, %l\\u2236%M %p" #~ msgstr "%d %B، %l\\u2236%M %p" #~ msgid "%A, %H:%M" #~ msgstr "%A، %H:%M" #~ msgid "%B %d, %H:%M" #~ msgstr "%d %B، %H:%M" #~ msgid "%B %d %Y, %H:%M " #~ msgstr "%d %B %Y، %H:%M " #~ msgid "Settings Menu" #~ msgstr "قائمة الإعدادات" #~ msgid "Authorization request from %s" #~ msgstr "طلب تخويل من %s" #~ msgid "Device %s wants to pair with this computer" #~ msgstr "يريد الجهاز %s المزاوجة مع هذا الحاسوب" #~ msgid "Device %s wants access to the service '%s'" #~ msgstr "يريد الجهاز %s صلاحية الوصول للخدمة '%s'" #~ msgid "Grant this time only" #~ msgstr "امنح هذه المرة فقط" #~ msgid "Reject" #~ msgstr "ارفض" #~ msgid "Pairing confirmation for %s" #~ msgstr "تأكيد مزاوجة %s" #~ msgid "" #~ "Please confirm whether the Passkey '%06d' matches the one on the device." #~ msgstr "من فضلك أكد تطابق مفتاح السر '%06d' مع الموجود على الجهاز." #~ msgid "Matches" #~ msgstr "مطابق" #~ msgid "Does not match" #~ msgstr "غير مطابق" #~ msgid "Pairing request for %s" #~ msgstr "طلب مزاوجة من %s" #~ msgid "Please enter the PIN mentioned on the device." #~ msgstr "من فضلك أدخل الرقم المذكور على الجهاز." #~ msgid "OK" #~ msgstr "حسنا" #~ msgid "" #~ "Sorry, no wisdom for you today:\n" #~ "%s" #~ msgstr "" #~ "عذرًا, لا حكمة لك اليوم:\n" #~ "%s" #~ msgid "%s the Oracle says" #~ msgstr "يقول الحكيم %s" #~ msgid "Screenshots" #~ msgstr "لقطات الشاشة" #~ msgid "Record a screencast" #~ msgstr "سجّل فديو للشاشة" #~ msgid "Session" #~ msgstr "الجلسة" #~ msgid "Power" #~ msgstr "الطاقة" #~ msgid "Restart" #~ msgstr "أعِد التشغيل" #~ msgid "Screencast from %d %t" #~ msgstr "تسجيل شاشة من %d %t" #~ msgid "Click Log Out to quit these applications and log out of the system." #~ msgstr "انقر على \"اخرج\" لغلق هذه التطبيقات والخروج من النظام." #~ msgid "Logging out of the system." #~ msgstr "يخرج من النظام." #~ msgid "Click Power Off to quit these applications and power off the system." #~ msgstr "انقر على \"أطفئ\" لغلق هذه التطبيقات وإطفاء النظام." #~ msgid "Powering off the system." #~ msgstr "يُطفأ النظام." #~ msgid "Click Restart to quit these applications and restart the system." #~ msgstr "انقر على \"أعِد التشغيل\" لغلق هذه التطبيقات وإعادة تشغيل النظام." #~ msgid "Restarting the system." #~ msgstr "يُعاد تشغيل النظام." #~ msgid "Volume, network, battery" #~ msgstr "الصوت، الشبكة، البطارية" #~ msgid "Shutting down might cause them to lose unsaved work." #~ msgstr "إغلاق الحاسوب قد يتسبب في فقدانهم للعمل غير المحفوظ." #~ msgid "Whether to collect stats about applications usage" #~ msgstr "ما إذا كنت ترغب في تجميع الحالات عن استخدام التطبيقات" #~ msgid "Universal Access Settings" #~ msgstr "إعدادات الإتاحة" #~ msgid "Visibility" #~ msgstr "الرؤية" #~ msgid "Set Up a New Device…" #~ msgstr "اضبط جهازًا جديدًا…" #~ msgid "Send Files…" #~ msgstr "أرسل ملفات…" #~ msgid "Keyboard Settings" #~ msgstr "إعدادات لوحة المفاتيح" #~ msgid "Mouse Settings" #~ msgstr "إعدادات الفأرة" #~ msgid "disabled" #~ msgstr "مُعَطَّل" #~ msgid "cable unplugged" #~ msgstr "الكبل مفصول" #~ msgid "More…" #~ msgstr "المزيد…" #~ msgid "Wired" #~ msgstr "سلكي" #~ msgid "Auto Ethernet" #~ msgstr "إيثرنت تلقائي" #~ msgid "Auto broadband" #~ msgstr "شبكة هاتف محمول تلقائية" #~ msgid "Auto dial-up" #~ msgstr "اتصال هاتفي تلقائي" #~ msgid "Auto %s" #~ msgstr "‏%s تلقائي" #~ msgid "Auto bluetooth" #~ msgstr "بلوتوث تلقائي" #~ msgid "Auto wireless" #~ msgstr "لاسلكي تلقائي" #~ msgid "Wi-Fi" #~ msgstr "واي فاي" #~ msgid "%d hour remaining" #~ msgid_plural "%d hours remaining" #~ msgstr[0] "بقي أقل من ساعة" #~ msgstr[1] "بقيت ساعة" #~ msgstr[2] "بقيت ساعتان" #~ msgstr[3] "بقيت %d ساعات" #~ msgstr[4] "بقيت %d ساعة" #~ msgstr[5] "بقيت %d ساعة" #~ msgid "%d %s %d %s remaining" #~ msgstr "بقي %d %s و%d %s" #~ msgid "hour" #~ msgid_plural "hours" #~ msgstr[0] "ساعة" #~ msgstr[1] "ساعة" #~ msgstr[2] "ساعتان" #~ msgstr[3] "ساعات" #~ msgstr[4] "ساعة" #~ msgstr[5] "ساعة" #~ msgid "minute" #~ msgid_plural "minutes" #~ msgstr[0] "دقيقة" #~ msgstr[1] "دقيقة" #~ msgstr[2] "دقيقتان" #~ msgstr[3] "دقائق" #~ msgstr[4] "دقيقة" #~ msgstr[5] "دقيقة" #~ msgid "%d minute remaining" #~ msgid_plural "%d minutes remaining" #~ msgstr[0] "بقي أقل من دقيقة" #~ msgstr[1] "بقيت دقيقة" #~ msgstr[2] "بقيت دقيقتان" #~ msgstr[3] "بقيت %d دقائق" #~ msgstr[4] "بقيت %d دقيقة" #~ msgstr[5] "بقيت %d دقيقة" #~ msgid "AC Adapter" #~ msgstr "مقبس طاقة" #~ msgid "Laptop Battery" #~ msgstr "بطارية حاسوب" #~ msgid "Monitor" #~ msgstr "شاشة" #~ msgid "Mouse" #~ msgstr "فأرة" #~ msgid "PDA" #~ msgstr "مساعد رقمي (PDA)" #~ msgid "Cell Phone" #~ msgstr "هاتف محمول" #~ msgid "Media Player" #~ msgstr "مشغل وسائط" #~ msgid "Tablet" #~ msgstr "لوحي" #~ msgid "Computer" #~ msgstr "حاسوب" #~ msgctxt "device" #~ msgid "Unknown" #~ msgstr "غير معروف" #~ msgid "Available" #~ msgstr "متفرّغ" #~ msgid "Busy" #~ msgstr "مشغول" #~ msgid "Invisible" #~ msgstr "خفي" #~ msgid "Away" #~ msgstr "غائب" #~ msgid "Idle" #~ msgstr "ساكن" #~ msgid "Your chat status will be set to busy" #~ msgstr "ستُجعل حالة اتصالك ”مشغول“" #~ msgid "" #~ "Notifications are now disabled, including chat messages. Your online " #~ "status has been adjusted to let others know that you might not see their " #~ "messages." #~ msgstr "" #~ "التنبيهات معطلة الآن، بما فيها رسائل المحادثة. حالة اتصالك تغيرت حتى يعلم " #~ "الآخرون أنك قد لا ترى رسائلهم." #~ msgctxt "title" #~ msgid "Sign In" #~ msgstr "ادخل" #~ msgctxt "event list time" #~ msgid "%H:%M" #~ msgstr "%H:%M" #~ msgctxt "event list time" #~ msgid "%l:%M %p" #~ msgstr "%l:%M %p" #~ msgid "tray" #~ msgstr "لوحة النظام" #~ msgid "More..." #~ msgstr "المزيد..." #~ msgid "United Kingdom" #~ msgstr "المملكة المتحدة" #~ msgid "Default" #~ msgstr "المبدئي" #~ msgid "APPLICATIONS" #~ msgstr "التطبيقات" #~ msgid "SETTINGS" #~ msgstr "الإعدادات" #~ msgid "Subscription request" #~ msgstr "طلب اشتراك" #~ msgid "Sent at %X on %A" #~ msgstr "أُرسلت يوم %A الساعة %l:%M" #~ msgid "Sent on %A, %B %d, %Y" #~ msgstr "أُرْسِلت يوم %A، %d %B، %Y" #~ msgid "Connection to %s failed" #~ msgstr "فشل الاتصال ب‍ %s" #~ msgid "Reconnect" #~ msgstr "أعد الاتصال" #~ msgid "Browse Files..." #~ msgstr "تصفح الملفات..." #~ msgid "Error browsing device" #~ msgstr "حدث عطل أثناء تصفّح الجهاز" #~ msgid "The requested device cannot be browsed, error is '%s'" #~ msgstr "تعذّر تصفح الجهاز، رسالة العطل '%s'" #~ msgid "Wireless" #~ msgstr "لاسلكي" #~ msgid "VPN Connections" #~ msgstr "اتصالات VPN" #~ msgid "System Settings" #~ msgstr "إعدادات النظام" #~ msgid "Failed to unmount '%s'" #~ msgstr "فشل فصْل '%s'" #~ msgid "Retry" #~ msgstr "أعد المحاولة" #~ msgid "PLACES & DEVICES" #~ msgstr "الأماكن والأجهزة" #~ msgid "%1$s: %2$s" #~ msgstr "%1$s: %2$s" #~ msgid "Connect to..." #~ msgstr "اتّصل ب‍..." #~ msgid "Passphrase" #~ msgstr "عبارة السر" #~ msgid "%s is online." #~ msgstr "‏%s متّصل." #~ msgid "%s is offline." #~ msgstr "‏%s غير متّصل." #~ msgid "%s is away." #~ msgstr "‏%s غائب." #~ msgid "%s is busy." #~ msgstr "‏%s مشغول." #~ msgctxt "contact" #~ msgid "Unknown" #~ msgstr "غير معروف" #~ msgid "CONTACTS" #~ msgstr "المتراسلون" #~ msgid "Show time with seconds" #~ msgstr "اعرض الوقت بالثواني" #~ msgid "If true, display seconds in time." #~ msgstr "إذا كان صحيحًا، ستعرض الثواني في الوقت." #~ msgid "Show date in clock" #~ msgstr "اعرض التاريخ في الساعة" #~ msgid "If true, display date in the clock, in addition to time." #~ msgstr "إذا كان صحيحًا، سيعرض في الساعة التاريخ بالإضافة إلى الوقت." #~ msgid "%a %b %e, %R:%S" #~ msgstr "%A %e %B، %R:%S" #~ msgid "%a %b %e, %R" #~ msgstr "%A %e %B، %R" #~ msgid "%a %R:%S" #~ msgstr "%A %R:%S" #~ msgid "%a %R" #~ msgstr "%A %R" #~ msgid "%a %b %e, %l:%M:%S %p" #~ msgstr "%A %e %B، %l:%M:%S %p" #~ msgid "%a %l:%M:%S %p" #~ msgstr "%A %l:%M:%S %p" #~ msgid "Wrong password, please try again" #~ msgstr "كلمة السرّ خاطئة، من فضلك أعد المحاولة" #~ msgid "Hidden" #~ msgstr "مخفي" #~ msgid "Power Off..." #~ msgstr "أطفئ..." #~ msgid "Online Accounts" #~ msgstr "الحسابات المتصلة" #~ msgid "Log Out..." #~ msgstr "اخرج..." #~ msgid "RECENT ITEMS" #~ msgstr "العناصر الحديثة" #~ msgid "Localization Settings" #~ msgstr "إعدادات اللغة" #~ msgid "You're now connected to mobile broadband connection '%s'" #~ msgstr "صرت الآن متّصلا بشبكة الهاتف المحمول '%s'" #~ msgid "You're now connected to wireless network '%s'" #~ msgstr "صرت الآن متّصلا بالشبكة اللاسلكية '%s'" #~ msgid "You're now connected to wired network '%s'" #~ msgstr "صرت الآن متّصلا بالشبكة السلكية '%s'" #~ msgid "You're now connected to VPN network '%s'" #~ msgstr "صرت الآن متّصلا بشبكة ش‌خ‌ف '%s'" #~ msgid "%s has finished starting" #~ msgstr "انتهى %s من البدء" #~ msgid "Less than a minute ago" #~ msgstr "منذ أقل من دقيقة" #~ msgid "Home Folder" #~ msgstr "مجلد المنزل" #~ msgid "Shut Down" #~ msgstr "أطفئ" #~ msgid "Click Shut Down to quit these applications and shut down the system." #~ msgstr "انقر على \"أطفئ\" لغلق هذه التطبيقات وإطفاء النظام." #~ msgid "The system will shut down automatically in %d seconds." #~ msgstr "سيُطفأ النظام تلقائيا خلال %d ثوان." #~ msgid "Shutting down the system." #~ msgstr "يُغلق النظام." #~ msgid "Confirm" #~ msgstr "أكّد" #~ msgid "PREFERENCES" #~ msgstr "التفضيلات" #~ msgid "Shut Down..." #~ msgstr "أطفئ..." #~ msgid "Search your computer" #~ msgstr "ابحث في حاسوبك" #~ msgid "Bluetooth Agent" #~ msgstr "عميل بلوتوث" #~ msgid "" #~ "Can't add a new workspace because maximum workspaces limit has been " #~ "reached." #~ msgstr "تعذّر إضافة مساحة عمل جديدة، لتجاوز أقصى عدد من مساحات العمل." #~ msgid "Can't remove the first workspace." #~ msgstr "لا يمكن حذف مساحة العمل الأولى." #~ msgid "Customize the panel clock" #~ msgstr "طوّع ساعة اللوحة" #~ msgid "Clock Preferences" #~ msgstr "تفضيلات الساعة" #~ msgid "_12 hour format" #~ msgstr "نسق _12 ساعة" #~ msgid "_24 hour format" #~ msgstr "نسق _24 ساعة" #~ msgid "Drag here to add favorites" #~ msgstr "اسحب إلى هنا ليضاف إلى المفضّلة" #~ msgid "Find" #~ msgstr "ابحث" #~ msgid "Preferences" #~ msgstr "التفضيلات" #~ msgid "System Preferences..." #~ msgstr "تفضيلات النظام..." #~ msgid "Recent Documents" #~ msgstr "المستندات الحديثة" #~ msgid "(see all)" #~ msgstr "(انظر الكل)" #~ msgid "PLACES" #~ msgstr "الأماكن" #~ msgid "SEARCH RESULTS" #~ msgstr "نتائج البحث" #~ msgid "Can't lock screen: %s" #~ msgstr "تعذّر إيصاد الشاشة: %s" #~ msgid "Can't temporarily set screensaver to blank screen: %s" #~ msgstr "تعذّر ضبك حافظة الشاشة مؤقتا لتكون شاشة خالية: %s" #~ msgid "Can't logout: %s" #~ msgstr "تعذّر الخروج: %s" #~ msgid "Sidebar" #~ msgstr "الشريط الجانبي" #~ msgid "Browse" #~ msgstr "استعرض" 0707010000021B000081A40000000000000000000000016712993F00015C67000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/as.po# Assamese translation for gnome-shell. # Copyright (C) 2011 gnome-shell's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-shell package. # # ngoswami , 2011. # Nilamdyuti Goswami , 2011, 2012, 2013, 2014. msgid "" msgstr "" "Project-Id-Version: gnome-shell master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "shell&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2014-09-15 07:36+0000\n" "PO-Revision-Date: 2014-09-15 14:59+0530\n" "Last-Translator: Nilamdyuti Goswami \n" "Language-Team: Assamese \n" "Language: as\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: Lokalize 1.5\n" #: ../data/50-gnome-shell-system.xml.in.h:1 msgid "System" msgstr "চিস্টেম" #: ../data/50-gnome-shell-system.xml.in.h:2 msgid "Show the message tray" msgstr "বাৰ্তা ট্ৰে দেখুৱাওক" #: ../data/50-gnome-shell-system.xml.in.h:3 msgid "Focus the active notification" msgstr "সক্ৰিয় অধিসূচনাত ফকাচ কৰক" #: ../data/50-gnome-shell-system.xml.in.h:4 msgid "Show the overview" msgstr "অভাৰভিউ দেখুৱাওক" #: ../data/50-gnome-shell-system.xml.in.h:5 msgid "Show all applications" msgstr "সকলো এপ্লিকেচন দেখুৱাওক" #: ../data/50-gnome-shell-system.xml.in.h:6 msgid "Open the application menu" msgstr "এপ্লিকেচন মেনু খোলক" #: ../data/gnome-shell.desktop.in.in.h:1 msgid "GNOME Shell" msgstr "GNOME শ্বেল" #: ../data/gnome-shell.desktop.in.in.h:2 #: ../data/gnome-shell-wayland.desktop.in.in.h:2 msgid "Window management and application launching" msgstr "উইন্ডো ব্যৱস্থাপনা আৰু এপ্লিকেচনৰ লঞ্চ" #: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1 msgid "GNOME Shell Extension Preferences" msgstr "GNOME শ্বেল সম্প্ৰসাৰন পছন্দসমূহ" #: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2 msgid "Configure GNOME Shell Extensions" msgstr "GNOME শ্বেল সম্প্ৰসাৰনসমূহ সংৰূপণ কৰক" #: ../data/gnome-shell-wayland.desktop.in.in.h:1 msgid "GNOME Shell (wayland compositor)" msgstr "GNOME শ্বেল (wayland compositor)" #: ../data/org.gnome.shell.gschema.xml.in.in.h:1 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" "Alt-F2 ৰ পৰা উন্নয়নকাৰী আৰু পৰীক্ষকসমূহৰ কাৰণে লাভদায়ক অভ্যন্তৰীক সঁজুলিসমূহ " "সামৰ্থবান " "কৰক" #: ../data/org.gnome.shell.gschema.xml.in.in.h:2 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Alt-F2 ডাইলগ ব্যৱহাৰ কৰি অভ্যন্তৰীক ডিবাগিং আৰু মনিটৰিং সঁজুলিসমূহলে অভিগমৰ " "অনুমতি " "দিয়ে।" #: ../data/org.gnome.shell.gschema.xml.in.in.h:3 msgid "UUIDs of extensions to enable" msgstr "সামৰ্থবান কৰিব লগিয়া সম্প্ৰসাৰণসমূহৰ UUIDs" #: ../data/org.gnome.shell.gschema.xml.in.in.h:4 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "GNOME শ্বেল সম্প্ৰসাৰণসমূহৰ এটা UUID বৈশিষ্ট্য আছে; এই কি'য়ে ল'ড হব লগিয়া " "সমপ্ৰসাৰণসমূহ তালিকাভুক্ত কৰে। যিকোনো সম্প্ৰসাৰন যি ল'ড হব বিচাৰে এই তালিকাত " "থাকিব " "লাগিব। আপুনি এই তালিকাক org.gnome.Shell ত EnableExtension আৰু " "DisableExtension " "D-Bus পদ্ধতিৰ সৈতে সলনি কৰিব পাৰিব।" #: ../data/org.gnome.shell.gschema.xml.in.in.h:5 msgid "Disables the validation of extension version compatibility" msgstr "সম্প্ৰসাৰন সংস্কৰণ সংগতাৰ বৈধতাক অসামৰ্থবান কৰে" #: ../data/org.gnome.shell.gschema.xml.in.in.h:6 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "GNOME শ্বেলে কেৱল বৰ্তমান চলি থকা সংস্কৰণক সমৰ্থন কৰা সম্প্ৰসাৰনসমূহ ল'ড " "কৰিব। এই " "বিকল্প সামৰ্থবান কৰিলে এই নিৰীক্ষণ অসামৰ্থবান কৰা হব আৰু সিহতে সমৰ্থন কৰা " "সংস্কৰণসমূহৰ নিৰপেক্ষে সকলো সম্প্ৰসাৰন ল'ড কৰিব।" #: ../data/org.gnome.shell.gschema.xml.in.in.h:7 msgid "List of desktop file IDs for favorite applications" msgstr "পছন্দৰ এপ্লিকেচনসমূহৰ কাৰণে ডেস্কটপ ফাইল IDসমূহৰ তালিকা" #: ../data/org.gnome.shell.gschema.xml.in.in.h:8 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" "এই পৰিচয়কসমূহৰ লগত আনুষংগিক এপ্লিকেচনসমূহ পছন্দৰ স্থানত প্ৰদৰ্শীত কৰা হব।" #: ../data/org.gnome.shell.gschema.xml.in.in.h:9 msgid "App Picker View" msgstr "এপ পিকাৰ দৰ্শন" #: ../data/org.gnome.shell.gschema.xml.in.in.h:10 msgid "Index of the currently selected view in the application picker." msgstr "এপ্লিকেচন পিকাৰত বৰ্তমানে নিৰ্বাচিত দৰ্শনৰ সূচী।" #: ../data/org.gnome.shell.gschema.xml.in.in.h:11 msgid "History for command (Alt-F2) dialog" msgstr "কমান্ড (Alt-F2) ডাইলগৰ কাৰণে ইতিহাস" #: ../data/org.gnome.shell.gschema.xml.in.in.h:12 msgid "History for the looking glass dialog" msgstr "চোৱা কাঁচ ডাইলগৰ কাৰণে ইতিহাস" #: ../data/org.gnome.shell.gschema.xml.in.in.h:13 msgid "Always show the 'Log out' menu item in the user menu." msgstr "ব্যৱহাৰকাৰী মেনুত 'লগ আউট' মেনু আইটেম সদায় দেখুৱাব।" #: ../data/org.gnome.shell.gschema.xml.in.in.h:14 msgid "" "This key overrides the automatic hiding of the 'Log out' menu item in single-" "user, single-session situations." msgstr "" "এই কি'য়ে এটা-ব্যৱহাৰকাৰী, এটা-অধিবেশন অৱস্থাবোৰত 'লগ আউট' মেনুআইটেম " "স্বচালিতভাৱে " "লুকুৱা অভাৰৰাইড কৰে।" #: ../data/org.gnome.shell.gschema.xml.in.in.h:15 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "ইনক্ৰিপ্টেড অথবা দূৰৱৰ্তী ফাইলচিস্টেমসমূহ মাউণ্ট কৰাৰ বাবে পাছৱৰ্ড মনত ৰখা হব " "নে" #: ../data/org.gnome.shell.gschema.xml.in.in.h:16 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "'Remember Password' checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "শ্বেলে এটা পাছৱৰ্ড অনুৰোধ কৰিব যেতিয়া এটা ইনক্ৰিপ্টেড ডিভাইচ অথবা এটা " "দূৰৱৰ্তী " "ফাইলচিস্টেম মাউণ্ট কৰা হয়। যদি পাছৱৰ্ডক ভৱিষ্যত ব্যৱহাৰৰ বাবে সংৰক্ষণ কৰিব " "পাৰি " "তেন্তে এটা 'পাছৱৰ্ড মনত ৰাখক' চেকবাকচ উপস্থিত থাকিব। এই কি'য়ে চেকবাকচৰ " "অবিকল্পিত " "অৱস্থা সংহতি কৰে।" #: ../data/org.gnome.shell.gschema.xml.in.in.h:17 msgid "Show the week date in the calendar" msgstr "কেলেন্ডাৰত সপ্তাহৰ তাৰিখ দেখুৱাওক" #: ../data/org.gnome.shell.gschema.xml.in.in.h:18 msgid "If true, display the ISO week date in the calendar." msgstr "যদি সত্য, ISO সপ্তাহ তাৰিখক কেলেণ্ডাৰত দেখুৱাওক।" #: ../data/org.gnome.shell.gschema.xml.in.in.h:19 msgid "Keybinding to open the application menu" msgstr "এপ্লিকেচন মেনু খোলিবলে Keybinding" #: ../data/org.gnome.shell.gschema.xml.in.in.h:20 msgid "Keybinding to open the application menu." msgstr "এপ্লিকেচন মেনু খোলিবলে Keybinding।" #: ../data/org.gnome.shell.gschema.xml.in.in.h:21 msgid "Keybinding to open the \"Show Applications\" view" msgstr "\"এপ্লিকেচনসমূহ দেখুৱাওক\" দৰ্শন খোলিবলে কি'বাইণ্ডিং" #: ../data/org.gnome.shell.gschema.xml.in.in.h:22 msgid "" "Keybinding to open the \"Show Applications\" view of the Activities Overview." msgstr "" "কাৰ্য্যসমূহ অভাৰভিউৰ \"এপ্লিকেচনসমূহ দেখুৱাওক\" দৰ্শন খোলিবলে কি'বাইণ্ডিং।" #: ../data/org.gnome.shell.gschema.xml.in.in.h:23 msgid "Keybinding to open the overview" msgstr "অভাৰভিউ খোলিবলে কি'বাইণ্ডিং" #: ../data/org.gnome.shell.gschema.xml.in.in.h:24 msgid "Keybinding to open the Activities Overview." msgstr "কাৰ্য্যসমূহ অভাৰভিউ খোলিবলে কি'বাইণ্ডিং" #: ../data/org.gnome.shell.gschema.xml.in.in.h:25 msgid "Keybinding to toggle the visibility of the message tray" msgstr "বাৰ্তা ট্ৰেৰ দৃশ্যমানতা টগ'ল কৰিবলে Keybinding" #: ../data/org.gnome.shell.gschema.xml.in.in.h:26 msgid "Keybinding to toggle the visibility of the message tray." msgstr "বাৰ্তা ট্ৰেৰ দৃশ্যমানতা টগ'ল কৰিবলে Keybinding।" #: ../data/org.gnome.shell.gschema.xml.in.in.h:27 msgid "Keybinding to focus the active notification" msgstr "সক্ৰিয় অধিসূচনা ফকাচ কৰিবলে কি'বাইণ্ডিং" #: ../data/org.gnome.shell.gschema.xml.in.in.h:28 msgid "Keybinding to focus the active notification." msgstr "সক্ৰিয় অধিসূচনা ফকাচ কৰিবলে কি'বাইণ্ডিং।" #: ../data/org.gnome.shell.gschema.xml.in.in.h:29 msgid "" "Keybinding that pauses and resumes all running tweens, for debugging purposes" msgstr "" "কিবাইন্ডিং যি সকলো চলি থকা টুইনক বিৰাম দিয়ে আৰু চলায়, ডিবাগিং কাৰণসমূহৰ বাবে " #: ../data/org.gnome.shell.gschema.xml.in.in.h:30 msgid "Which keyboard to use" msgstr "কোনটো কিবৰ্ড ব্যৱহাৰ কৰা হব" #: ../data/org.gnome.shell.gschema.xml.in.in.h:31 msgid "The type of keyboard to use." msgstr "ব্যৱহাৰ কৰিব লগিয়া কিবৰ্ডৰ ধৰণ।" #: ../data/org.gnome.shell.gschema.xml.in.in.h:32 msgid "Limit switcher to current workspace." msgstr "চুইচাৰক বৰ্তমান কাৰ্য্যস্থানলৈ সীমিত ৰাখক।" #: ../data/org.gnome.shell.gschema.xml.in.in.h:33 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "যদি সত্য, কেৱল বৰ্তমান কাৰ্য্যস্থানক উইন্ডো থকা এপ্লিকেচনসমূক চুইচাৰত দেখুৱা " "হব। নহলে, " "সকলো এপ্লিকেচন অন্তৰ্ভুক্ত কৰা হয়।" #: ../data/org.gnome.shell.gschema.xml.in.in.h:34 msgid "The application icon mode." msgstr "এপ্লিকেচন আইকন অৱস্থা।" #: ../data/org.gnome.shell.gschema.xml.in.in.h:35 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-" "only' (shows only the application icon) or 'both'." msgstr "" "চুইচাৰত উইন্ডোসমূহ কেনেধৰণে দেখুৱা হয় সংৰূপণ কৰে। বৈধ সম্ভাবনাসমূহ হল " "'thumbnail-" "only' (উইন্ডোৰ এটা থাম্বনেইল দেখুৱায়), 'app-icon-only' (কেৱল এপ্লিকেচন আইকন " "দেখুৱায়) অথবা 'both'।" #: ../data/org.gnome.shell.gschema.xml.in.in.h:36 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "যদি সত্য, কেৱল বৰ্তমান কাৰ্য্যস্থানৰ পৰা উইন্ডোসমূহক চুইচাৰত দেখুৱা হব। নহলে, " "সকলো " "উইন্ডো অন্তৰ্ভুক্ত কৰা হব।" #: ../data/org.gnome.shell.gschema.xml.in.in.h:37 msgid "Attach modal dialog to the parent window" msgstr "মডাল ডাইলগ উপধায়ক উইন্ডোৰ সৈতে সংলগ্ন কৰক" #: ../data/org.gnome.shell.gschema.xml.in.in.h:38 msgid "" "This key overrides the key in org.gnome.mutter when running GNOME Shell." msgstr "GNOME শ্বেল চলাওতে এই কি'য়ে org.gnome.mutter ত থকা কি' অভাৰৰাইড কৰে।" #: ../data/org.gnome.shell.gschema.xml.in.in.h:39 msgid "Enable edge tiling when dropping windows on screen edges" msgstr "উইন্ডোসমূহক পৰ্দাৰ প্ৰান্তসমূহত এৰোতে প্ৰান্ত টাইলিং সামৰ্থবান কৰক" #: ../data/org.gnome.shell.gschema.xml.in.in.h:40 msgid "Workspaces are managed dynamically" msgstr "কাৰ্য্যস্থানসমূহক চলমানভাৱে ব্যৱস্থাপনা কৰা হয়" #: ../data/org.gnome.shell.gschema.xml.in.in.h:41 msgid "Workspaces only on primary monitor" msgstr "কাৰ্য্যস্থানসমূহ কেৱল প্ৰাথমিক মনিটৰত" #: ../data/org.gnome.shell.gschema.xml.in.in.h:42 msgid "Delay focus changes in mouse mode until the pointer stops moving" msgstr "" "বিলম্বৰ ফকাচ মাউছ অৱস্থাত পৰিবৰ্তন হয় যেতিয়ালৈকে পইন্টাৰে গমন কৰা বন্ধ নকৰে" #: ../data/org.gnome.Shell.PortalHelper.desktop.in.h:1 msgid "Captive Portal" msgstr "কেপটিভ পৰ্টেল" #: ../js/extensionPrefs/main.js:123 #, javascript-format msgid "There was an error loading the preferences dialog for %s:" msgstr "%s ৰ বাবে পছন্দসমূহ ডাইলগ ল'ড কৰোতে এটা ত্ৰুটি হৈছিল:" #: ../js/extensionPrefs/main.js:155 msgid "GNOME Shell Extensions" msgstr "GNOME শ্বেল সম্প্ৰসাৰনসমূহ" #: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143 #: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:452 #: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399 #: ../js/ui/status/network.js:915 msgid "Cancel" msgstr "বাতিল কৰক" #: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:217 msgid "Next" msgstr "পৰৱৰ্তী" #: ../js/gdm/authPrompt.js:213 ../js/ui/shellMountOperation.js:403 #: ../js/ui/unlockDialog.js:59 msgid "Unlock" msgstr "আনলক কৰক" #: ../js/gdm/authPrompt.js:215 msgctxt "button" msgid "Sign In" msgstr "ছাইন ইন কৰক" #: ../js/gdm/loginDialog.js:269 msgid "Choose Session" msgstr "অধিবেশন বাছক" #: ../js/gdm/loginDialog.js:429 msgid "Not listed?" msgstr "তালিকাভুক্ত নহয়?" #: ../js/gdm/loginDialog.js:614 #, javascript-format msgid "(e.g., user or %s)" msgstr "(উদাহৰণ, ব্যৱহাৰকাৰী অথবা %s)" #: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:269 #: ../js/ui/components/networkAgent.js:287 msgid "Username: " msgstr "ব্যৱহাৰকাৰীৰ নাম: " #: ../js/gdm/loginDialog.js:922 msgid "Login Window" msgstr "লগিন উইন্ডো" #: ../js/gdm/util.js:323 msgid "Authentication error" msgstr "প্ৰমাণীকৰণ ত্ৰুটি" #: ../js/gdm/util.js:453 msgid "(or swipe finger)" msgstr "(অথবা আঙুলি স্বাইপ কৰক)" #: ../js/misc/util.js:115 msgid "Command not found" msgstr "কমান্ড পোৱা নগল" #: ../js/misc/util.js:148 msgid "Could not parse command:" msgstr "কমান্ড বিশ্লেষন কৰিব নোৱাৰি:" #: ../js/misc/util.js:156 #, javascript-format msgid "Execution of “%s” failed:" msgstr "“%s” ৰ প্ৰেৰণ ব্যৰ্থ হল:" #: ../js/portalHelper/main.js:85 msgid "Web Authentication Redirect" msgstr "ৱেব প্ৰমাণীকৰণৰ পুনৰনিৰ্দেশ" #: ../js/ui/appDisplay.js:772 msgid "Frequently used applications will appear here" msgstr "সঘনে ব্যৱহাৰ কৰা এপ্লিকেচনসমূহ ইয়াত উপস্থিত হব" #: ../js/ui/appDisplay.js:883 msgid "Frequent" msgstr "সঘন" #: ../js/ui/appDisplay.js:890 msgid "All" msgstr "সকলো" #: ../js/ui/appDisplay.js:1789 msgid "New Window" msgstr "নতুন উইন্ডো" #: ../js/ui/appDisplay.js:1815 ../js/ui/dash.js:285 msgid "Remove from Favorites" msgstr "পছন্দৰ পৰা আতৰাওক" #: ../js/ui/appDisplay.js:1821 msgid "Add to Favorites" msgstr "পছন্দলে যোগ কৰক" #: ../js/ui/appDisplay.js:1830 msgid "Show Details" msgstr "বিৱৰণসমূহ দেখুৱাওক" #: ../js/ui/appFavorites.js:124 #, javascript-format msgid "%s has been added to your favorites." msgstr "%s ক আপোনাৰ পছন্দলে যোগ কৰা হৈছে।" #: ../js/ui/appFavorites.js:158 #, javascript-format msgid "%s has been removed from your favorites." msgstr "%s ক আপোনাৰ পছন্দৰ পৰা আতৰোৱা হৈছে।" #: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:813 #: ../js/ui/status/system.js:337 msgid "Settings" msgstr "সংহতিসমূহ" #: ../js/ui/backgroundMenu.js:21 msgid "Change Background…" msgstr "পটভূমি পৰিবৰ্তন কৰক…" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. */ #: ../js/ui/calendar.js:67 msgctxt "event list time" msgid "All Day" msgstr "গোটেই দিনটো" #. Translators: Shown in calendar event list, if 24h format, #. \u2236 is a ratio character, similar to : */ #: ../js/ui/calendar.js:73 msgctxt "event list time" msgid "%H∶%M" msgstr "%H∶%M" #. Translators: Shown in calendar event list, if 12h format, #. \u2236 is a ratio character, similar to : and \u2009 is #. a thin space */ #: ../js/ui/calendar.js:82 msgctxt "event list time" msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. */ #: ../js/ui/calendar.js:113 msgctxt "grid sunday" msgid "S" msgstr "S" #. Translators: Calendar grid abbreviation for Monday */ #: ../js/ui/calendar.js:115 msgctxt "grid monday" msgid "M" msgstr "M" #. Translators: Calendar grid abbreviation for Tuesday */ #: ../js/ui/calendar.js:117 msgctxt "grid tuesday" msgid "T" msgstr "T" #. Translators: Calendar grid abbreviation for Wednesday */ #: ../js/ui/calendar.js:119 msgctxt "grid wednesday" msgid "W" msgstr "W" #. Translators: Calendar grid abbreviation for Thursday */ #: ../js/ui/calendar.js:121 msgctxt "grid thursday" msgid "T" msgstr "T" #. Translators: Calendar grid abbreviation for Friday */ #: ../js/ui/calendar.js:123 msgctxt "grid friday" msgid "F" msgstr "F" #. Translators: Calendar grid abbreviation for Saturday */ #: ../js/ui/calendar.js:125 msgctxt "grid saturday" msgid "S" msgstr "S" #. Translators: Event list abbreviation for Sunday. #. * #. * NOTE: These list abbreviations are normally not shown together #. * so they need to be unique (e.g. Tuesday and Thursday cannot #. * both be 'T'). #. */ #: ../js/ui/calendar.js:138 msgctxt "list sunday" msgid "Su" msgstr "Su" #. Translators: Event list abbreviation for Monday */ #: ../js/ui/calendar.js:140 msgctxt "list monday" msgid "M" msgstr "M" #. Translators: Event list abbreviation for Tuesday */ #: ../js/ui/calendar.js:142 msgctxt "list tuesday" msgid "T" msgstr "T" #. Translators: Event list abbreviation for Wednesday */ #: ../js/ui/calendar.js:144 msgctxt "list wednesday" msgid "W" msgstr "W" #. Translators: Event list abbreviation for Thursday */ #: ../js/ui/calendar.js:146 msgctxt "list thursday" msgid "Th" msgstr "Th" #. Translators: Event list abbreviation for Friday */ #: ../js/ui/calendar.js:148 msgctxt "list friday" msgid "F" msgstr "F" #. Translators: Event list abbreviation for Saturday */ #: ../js/ui/calendar.js:150 msgctxt "list saturday" msgid "S" msgstr "S" #: ../js/ui/calendar.js:453 msgid "Previous month" msgstr "যোৱা মাহ" #: ../js/ui/calendar.js:463 msgid "Next month" msgstr "অহা মাহ" #. Translators: Text to show if there are no events */ #: ../js/ui/calendar.js:781 msgid "Nothing Scheduled" msgstr "একো অনুসূচীত কৰা হোৱা নাই" #. Translators: Shown on calendar heading when selected day occurs on current year */ #: ../js/ui/calendar.js:799 msgctxt "calendar heading" msgid "%A, %B %d" msgstr "%A, %B %d" #. Translators: Shown on calendar heading when selected day occurs on different year */ #: ../js/ui/calendar.js:802 msgctxt "calendar heading" msgid "%A, %B %d, %Y" msgstr "%A, %B %d, %Y" #: ../js/ui/calendar.js:813 msgid "Today" msgstr "আজি" #: ../js/ui/calendar.js:817 msgid "Tomorrow" msgstr "কালি" #: ../js/ui/calendar.js:828 msgid "This week" msgstr "এই সপ্তাহ" #: ../js/ui/calendar.js:836 msgid "Next week" msgstr "অহা সপ্তাহ" #: ../js/ui/components/automountManager.js:91 msgid "External drive connected" msgstr "বহিৰ্তম ড্ৰাইভ সংযোগ কৰা হৈছে" #: ../js/ui/components/automountManager.js:102 msgid "External drive disconnected" msgstr "বহিৰ্তম ড্ৰাইভ বিচ্ছিন্ন কৰা হৈছে" #: ../js/ui/components/autorunManager.js:296 msgid "Removable Devices" msgstr "আতৰাব পৰা ডিভাইচসমূহ" #: ../js/ui/components/autorunManager.js:596 #, javascript-format msgid "Open with %s" msgstr "%s ৰ সৈতে খোলক" #: ../js/ui/components/autorunManager.js:622 msgid "Eject" msgstr "উলিৱাওক" #: ../js/ui/components/keyring.js:94 ../js/ui/components/polkitAgent.js:285 msgid "Password:" msgstr "পাছৱৰ্ড:" #: ../js/ui/components/keyring.js:120 msgid "Type again:" msgstr "আকৌ টাইপ কৰক:" #: ../js/ui/components/networkAgent.js:138 ../js/ui/status/network.js:277 #: ../js/ui/status/network.js:359 ../js/ui/status/network.js:918 msgid "Connect" msgstr "সংযোগ কৰক" #: ../js/ui/components/networkAgent.js:231 #: ../js/ui/components/networkAgent.js:243 #: ../js/ui/components/networkAgent.js:271 #: ../js/ui/components/networkAgent.js:291 #: ../js/ui/components/networkAgent.js:301 msgid "Password: " msgstr "পাছৱৰ্ড: " #: ../js/ui/components/networkAgent.js:236 msgid "Key: " msgstr "কি': " #: ../js/ui/components/networkAgent.js:275 msgid "Identity: " msgstr "পৰিচয়: " #: ../js/ui/components/networkAgent.js:277 msgid "Private key password: " msgstr "ব্যক্তিগত কি' পাছৱৰ্ড: " #: ../js/ui/components/networkAgent.js:289 msgid "Service: " msgstr "সেৱা: " #: ../js/ui/components/networkAgent.js:318 msgid "Authentication required by wireless network" msgstr "বেতাঁৰ নেটৱৰ্কৰ দ্বাৰা প্ৰমাণীকৰণৰ প্ৰয়োজন" #: ../js/ui/components/networkAgent.js:319 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network " "“%s”." msgstr "" "বেতাঁৰ নেটৱৰ্ক “%s” অভিগম কৰিবলে পাছৱৰ্ডসমূহ অথবা ইনক্ৰিপষণ কি'সমূহৰ প্ৰয়োজন।" #: ../js/ui/components/networkAgent.js:323 msgid "Wired 802.1X authentication" msgstr "তাঁৰযুক্ত 802.1X প্ৰমাণীকৰণ" #: ../js/ui/components/networkAgent.js:325 msgid "Network name: " msgstr "নেটৱৰ্কৰ নাম: " #: ../js/ui/components/networkAgent.js:330 msgid "DSL authentication" msgstr "DSL প্ৰমাণীকৰণ" #: ../js/ui/components/networkAgent.js:337 msgid "PIN code required" msgstr "PIN ক'ডৰ প্ৰয়োজন" #: ../js/ui/components/networkAgent.js:338 msgid "PIN code is needed for the mobile broadband device" msgstr "মবাইল ব্ৰডবেণ্ড সেৱাৰ বাবে PIN ক'ডৰ প্ৰয়োজন" #: ../js/ui/components/networkAgent.js:339 msgid "PIN: " msgstr "PIN: " #: ../js/ui/components/networkAgent.js:345 msgid "Mobile broadband network password" msgstr "মবাইল ব্ৰডবেণ্ড নেটৱৰ্ক পাছৱৰ্ড" #: ../js/ui/components/networkAgent.js:346 #, javascript-format msgid "A password is required to connect to “%s”." msgstr "“%s” লে সংযোগ কৰিবলে এটা পাছৱৰ্ডৰ প্ৰয়োজন।" #: ../js/ui/components/polkitAgent.js:54 msgid "Authentication Required" msgstr "প্ৰমাণীকৰণৰ প্ৰয়োজন" #: ../js/ui/components/polkitAgent.js:96 msgid "Administrator" msgstr "প্ৰশাসক" #: ../js/ui/components/polkitAgent.js:175 msgid "Authenticate" msgstr "প্ৰমাণীত কৰক" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. */ #: ../js/ui/components/polkitAgent.js:271 ../js/ui/shellMountOperation.js:383 msgid "Sorry, that didn't work. Please try again." msgstr "ক্ষমা কৰিব, সেয়া কাম নকৰিলে। অনুগ্ৰহ কৰি পুনৰ চেষ্টা কৰক।" #: ../js/ui/components/telepathyClient.js:240 msgid "Invitation" msgstr "নিমন্ত্ৰণ" #: ../js/ui/components/telepathyClient.js:300 msgid "Call" msgstr "কল" #: ../js/ui/components/telepathyClient.js:316 msgid "File Transfer" msgstr "ফাইল স্থানান্তৰ" #: ../js/ui/components/telepathyClient.js:420 msgid "Chat" msgstr "চেট" #: ../js/ui/components/telepathyClient.js:483 msgid "Unmute" msgstr "অমৌন কৰক" #: ../js/ui/components/telepathyClient.js:483 msgid "Mute" msgstr "মোন কৰক" #. Translators: Time in 24h format */ #: ../js/ui/components/telepathyClient.js:953 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" */ #: ../js/ui/components/telepathyClient.js:960 msgid "Yesterday, %H∶%M" msgstr "যোৱাকালী, %H∶%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" */ #: ../js/ui/components/telepathyClient.js:967 msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" */ #: ../js/ui/components/telepathyClient.js:974 msgid "%B %d, %H∶%M" msgstr "%B %d, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" */ #: ../js/ui/components/telepathyClient.js:980 msgid "%B %d %Y, %H∶%M" msgstr "%B %d %Y, %H∶%M" #. Translators: Time in 24h format */ #: ../js/ui/components/telepathyClient.js:986 msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" */ #: ../js/ui/components/telepathyClient.js:993 msgid "Yesterday, %l∶%M %p" msgstr "যোৱাকালী, %l∶%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" */ #: ../js/ui/components/telepathyClient.js:1000 msgid "%A, %l∶%M %p" msgstr "%A, %l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" */ #: ../js/ui/components/telepathyClient.js:1007 msgid "%B %d, %l∶%M %p" msgstr "%B %d, %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm"*/ #: ../js/ui/components/telepathyClient.js:1013 msgid "%B %d %Y, %l∶%M %p" msgstr "%B %d %Y, %l∶%M %p" #. Translators: this is the other person changing their old IM name to their new #. IM name. */ #: ../js/ui/components/telepathyClient.js:1045 #, javascript-format msgid "%s is now known as %s" msgstr "%s এতিয়া %s হিচাপে জনাজাত" #. translators: argument is a room name like #. * room@jabber.org for example. */ #: ../js/ui/components/telepathyClient.js:1149 #, javascript-format msgid "Invitation to %s" msgstr "%s লে নিমন্ত্ৰণ" #. translators: first argument is the name of a contact and the second #. * one the name of a room. "Alice is inviting you to join room@jabber.org #. * for example. */ #: ../js/ui/components/telepathyClient.js:1157 #, javascript-format msgid "%s is inviting you to join %s" msgstr "%s এ আপোনাক %s ত অংশগ্ৰহণ কৰিবলে আমন্ত্ৰণ জনাইছে" #: ../js/ui/components/telepathyClient.js:1159 #: ../js/ui/components/telepathyClient.js:1194 #: ../js/ui/components/telepathyClient.js:1228 #: ../js/ui/components/telepathyClient.js:1286 msgid "Decline" msgstr "নাকচ কৰক" #: ../js/ui/components/telepathyClient.js:1165 #: ../js/ui/components/telepathyClient.js:1234 #: ../js/ui/components/telepathyClient.js:1291 msgid "Accept" msgstr "গ্ৰহন কৰক" #. translators: argument is a contact name like Alice for example. */ #: ../js/ui/components/telepathyClient.js:1184 #, javascript-format msgid "Video call from %s" msgstr "%s ৰ পৰা ভিডিঅ' কল" #. translators: argument is a contact name like Alice for example. */ #: ../js/ui/components/telepathyClient.js:1187 #, javascript-format msgid "Call from %s" msgstr "%s ৰ পৰা কল" #. translators: this is a button label (verb), not a noun */ #: ../js/ui/components/telepathyClient.js:1201 msgid "Answer" msgstr "উত্তৰ দিয়ক" #. To translators: The first parameter is #. * the contact's alias and the second one is the #. * file name. The string will be something #. * like: "Alice is sending you test.ogg" #. */ #: ../js/ui/components/telepathyClient.js:1222 #, javascript-format msgid "%s is sending you %s" msgstr "%s এ আপোনাক %s পঠাই আছে" #. To translators: The parameter is the contact's alias */ #: ../js/ui/components/telepathyClient.js:1251 #, javascript-format msgid "%s would like permission to see when you are online" msgstr "আপুনি কেতিয়া অনলাইন আছে চাবলে %s এ অনুমতি বিচাৰিব" #: ../js/ui/components/telepathyClient.js:1337 msgid "Network error" msgstr "নেটৱৰ্ক ত্ৰুটি" #: ../js/ui/components/telepathyClient.js:1339 msgid "Authentication failed" msgstr "প্ৰমাণীকৰণ ব্যৰ্থ" #: ../js/ui/components/telepathyClient.js:1341 msgid "Encryption error" msgstr "ইনক্ৰিপষণ ত্ৰুটি" #: ../js/ui/components/telepathyClient.js:1343 msgid "Certificate not provided" msgstr "প্ৰমাণপত্ৰ প্ৰদান কৰা হোৱা নাই" #: ../js/ui/components/telepathyClient.js:1345 msgid "Certificate untrusted" msgstr "প্ৰমাণপত্ৰক ভৰষা কৰিব নোৱাৰি" #: ../js/ui/components/telepathyClient.js:1347 msgid "Certificate expired" msgstr "প্ৰমাণপত্ৰৰ অৱসান ঘটিছে" #: ../js/ui/components/telepathyClient.js:1349 msgid "Certificate not activated" msgstr "প্ৰমাণপত্ৰ সক্ৰিয় কৰা হোৱা নাই" #: ../js/ui/components/telepathyClient.js:1351 msgid "Certificate hostname mismatch" msgstr "প্ৰমাণপত্ৰ হস্টনাম অমিল" #: ../js/ui/components/telepathyClient.js:1353 msgid "Certificate fingerprint mismatch" msgstr "প্ৰমাণপত্ৰ ফিংগাৰপ্ৰিণ্ট অমিল" #: ../js/ui/components/telepathyClient.js:1355 msgid "Certificate self-signed" msgstr "প্ৰমাণপত্ৰ স্ব-স্বাক্ষৰীত" #: ../js/ui/components/telepathyClient.js:1357 msgid "Status is set to offline" msgstr "অৱস্থা অফলাইনলে সংহতি কৰা হৈছে" #: ../js/ui/components/telepathyClient.js:1359 msgid "Encryption is not available" msgstr "ইনক্ৰিপষণ উপলব্ধ নহয়" #: ../js/ui/components/telepathyClient.js:1361 msgid "Certificate is invalid" msgstr "প্ৰমাণপত্ৰ অবৈধ" #: ../js/ui/components/telepathyClient.js:1363 msgid "Connection has been refused" msgstr "সংযোগ নাকচ কৰা হৈছে" #: ../js/ui/components/telepathyClient.js:1365 msgid "Connection can't be established" msgstr "সংযোগ স্থাপন কৰিব নোৱাৰি" #: ../js/ui/components/telepathyClient.js:1367 msgid "Connection has been lost" msgstr "সংযোগ হেৰাইছে" #: ../js/ui/components/telepathyClient.js:1369 msgid "This account is already connected to the server" msgstr "এই একাওণ্ট ইতিমধ্যে চাৰ্ভাৰৰ সৈতে সংযোগিত" #: ../js/ui/components/telepathyClient.js:1371 msgid "" "Connection has been replaced by a new connection using the same resource" msgstr "সংযোগক একে সম্পদ ব্যৱহাৰ কৰি এটা নতুন সংযোগৰে প্ৰতিস্থাপন কৰা হৈছে" #: ../js/ui/components/telepathyClient.js:1373 msgid "The account already exists on the server" msgstr "একাওণ্ট ইতিমধ্যে চাৰ্ভাৰত উপস্থিত" #: ../js/ui/components/telepathyClient.js:1375 msgid "Server is currently too busy to handle the connection" msgstr "চাৰ্ভাৰ সংযোগ ব্যৱস্থাপনা কৰিবলে বৰ্তমানে অতি ব্যস্ত" #: ../js/ui/components/telepathyClient.js:1377 msgid "Certificate has been revoked" msgstr "প্ৰমাণপত্ৰ প্ৰত্যাহাৰ কৰা হৈছে" #: ../js/ui/components/telepathyClient.js:1379 msgid "" "Certificate uses an insecure cipher algorithm or is cryptographically weak" msgstr "" "প্ৰমাণপত্ৰয় এটা অসুৰক্ষিত চিফাৰ এলগৰিথম ব্যৱহাৰ কৰে অথবা ক্ৰিপ্টোগ্ৰাফিয়ভাৱে " "দুৰ্বল" #: ../js/ui/components/telepathyClient.js:1381 msgid "" "The length of the server certificate, or the depth of the server certificate " "chain, exceed the limits imposed by the cryptography library" msgstr "" "চাৰ্ভাৰ প্ৰমাণপত্ৰৰ দৈৰ্ঘ, অথবা চাৰ্ভাৰ প্ৰমাণপত্ৰ শৃংখলৰ গভীৰতা, " "ক্ৰিপ্টোগ্ৰাফী " "লাইব্ৰেৰীয়ে প্ৰণয়ন কৰা সীমাসমূহত অতিক্ৰম কৰে" #: ../js/ui/components/telepathyClient.js:1383 msgid "Internal error" msgstr "অভ্যন্তৰীক ত্ৰুটি" #. translators: argument is the account name, like #. * name@jabber.org for example. */ #: ../js/ui/components/telepathyClient.js:1393 #, javascript-format msgid "Unable to connect to %s" msgstr "%s ৰ সৈতে সংযোগ কৰিবলে অক্ষম" #: ../js/ui/components/telepathyClient.js:1398 msgid "View account" msgstr "একাওণ্ট দৰ্শন কৰক" #: ../js/ui/components/telepathyClient.js:1435 msgid "Unknown reason" msgstr "অজ্ঞাত কাৰণ" #: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:154 msgid "Windows" msgstr "উইন্ডোসমূহ" #: ../js/ui/dash.js:249 ../js/ui/dash.js:287 msgid "Show Applications" msgstr "এপ্লিকেচনসমূহ দেখুৱাওক" #: ../js/ui/dash.js:445 msgid "Dash" msgstr "ডেশ" #: ../js/ui/dateMenu.js:96 msgid "Open Calendar" msgstr "কেলেন্ডাৰ খোলক" #: ../js/ui/dateMenu.js:100 msgid "Open Clocks" msgstr "ঘড়ীবোৰ খোলক" #: ../js/ui/dateMenu.js:107 msgid "Date & Time Settings" msgstr "তাৰিখ আৰু সময সংহতিসমূহ" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM"). #. */ #: ../js/ui/dateMenu.js:204 msgid "%A %B %e, %Y" msgstr "%A %B %e, %Y" #: ../js/ui/endSessionDialog.js:64 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "%s ক লগ আউট কৰক" #: ../js/ui/endSessionDialog.js:65 msgctxt "title" msgid "Log Out" msgstr "লগ আউট কৰক" #: ../js/ui/endSessionDialog.js:67 #, javascript-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "%s স্বচালিতভাৱে %d ছেকেণ্ডৰ পিছত লগ আউট হৈ যাব।" msgstr[1] "%s স্বচালিতভাৱে %d ছেকেণ্ডৰ পিছত লগ আউট হৈ যাব।" #: ../js/ui/endSessionDialog.js:72 #, javascript-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "আপুনি স্বচালিতভাৱে %d ছেকেণ্ড পিছত লগ আউট হৈ যাব।" msgstr[1] "আপুনি স্বচালিতভাৱে %d ছেকেণ্ড পিছত লগ আউট হৈ যাব।" #: ../js/ui/endSessionDialog.js:78 msgctxt "button" msgid "Log Out" msgstr "লগ আউট কৰক" #: ../js/ui/endSessionDialog.js:84 msgctxt "title" msgid "Power Off" msgstr "বন্ধ কৰক" #: ../js/ui/endSessionDialog.js:85 msgctxt "title" msgid "Install Updates & Power Off" msgstr "আপডেইটসমূহ ইনস্টল কৰি চিস্টেম বন্ধ কৰক" #: ../js/ui/endSessionDialog.js:87 #, javascript-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "চিস্টেম %d ছেকেণ্ড পিছত স্বচালিতভাৱে বন্ধ কৰক হব। " msgstr[1] "চিস্টেম %d ছেকেণ্ডৰ পিছত স্বচালিতভাৱে বন্ধ হব। " #: ../js/ui/endSessionDialog.js:91 msgctxt "checkbox" msgid "Install pending software updates" msgstr "বাকি থকা চফ্টৱেৰ আপডেইটসমূহ ইনস্টল কৰক" #: ../js/ui/endSessionDialog.js:94 ../js/ui/endSessionDialog.js:111 msgctxt "button" msgid "Restart" msgstr "পুনৰাম্ভ কৰক" #: ../js/ui/endSessionDialog.js:96 msgctxt "button" msgid "Power Off" msgstr "বন্ধ কৰক" #: ../js/ui/endSessionDialog.js:103 msgctxt "title" msgid "Restart" msgstr "পুনৰাম্ভ কৰক" #: ../js/ui/endSessionDialog.js:105 #, javascript-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "চিস্টেম %d ছেকেণ্ডত স্বচালিতভাৱে পুনৰাম্ভ হব।" msgstr[1] "চিস্টেম %d ছেকেণ্ডত স্বচালিতভাৱে পুনৰাম্ভ হব।" #: ../js/ui/endSessionDialog.js:119 msgctxt "title" msgid "Restart & Install Updates" msgstr "পুনাৰম্ভ কৰক আৰু আপডেইটসমূহ ইনস্টল কৰক" #: ../js/ui/endSessionDialog.js:121 #, javascript-format msgid "The system will automatically restart and install updates in %d second." msgid_plural "" "The system will automatically restart and install updates in %d seconds." msgstr[0] "" "চিস্টেম %d ছেকেণ্ডত স্বচালিতভাৱে পুনৰাম্ভ হব আৰু আপডেইটসমূহ ইনস্টল কৰিব।" msgstr[1] "" "চিস্টেম %d ছেকেণ্ডত স্বচালিতভাৱে পুনৰাম্ভ হব আৰু আপডেইটসমূহ ইনস্টল কৰিব।" #: ../js/ui/endSessionDialog.js:127 msgctxt "button" msgid "Restart & Install" msgstr "পুনৰাম্ভ কৰক & ইনস্টল কৰক" #: ../js/ui/endSessionDialog.js:128 msgctxt "button" msgid "Install & Power Off" msgstr "ইনস্টল কৰক & চিস্টেম বন্ধ কৰক" #: ../js/ui/endSessionDialog.js:129 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "আপডেইটসমূহ ইনস্টল কৰাৰ পিছত চিস্টেম বন্ধ কৰক" #: ../js/ui/endSessionDialog.js:338 msgid "Running on battery power: please plug in before installing updates." msgstr "" "বেটাৰি শক্তিত চলি আছে: অনুগ্ৰহ কৰি আপডেইটসমূহ ইনস্টল কৰাৰ আগত চাৰ্জাৰ লগাওক।" #: ../js/ui/endSessionDialog.js:355 msgid "Some applications are busy or have unsaved work." msgstr "" "কিছুমান এপ্লিকেচন ব্যস্ত হব পাৰে অথবা সিহতৰ কিছুমান অসংৰক্ষিত কাৰ্য্য থাকিব " "পাৰে।" #: ../js/ui/endSessionDialog.js:362 msgid "Other users are logged in." msgstr "অন্য ব্যৱহাৰকাৰীসকল লগ্ড ইন আছে।" #. Translators: Remote here refers to a remote session, like a ssh login */ #: ../js/ui/endSessionDialog.js:640 #, javascript-format msgid "%s (remote)" msgstr "%s (দূৰৱৰ্তী)" #. Translators: Console here refers to a tty like a VT console */ #: ../js/ui/endSessionDialog.js:643 #, javascript-format msgid "%s (console)" msgstr "%s (কনচৌল)" #: ../js/ui/extensionDownloader.js:199 msgid "Install" msgstr "ইনস্টল কৰক" #: ../js/ui/extensionDownloader.js:204 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "extensions.gnome.org ৰ পৰা “%s” ক ডাউনল'ড আৰু ইনস্টল কৰিব নে?" #: ../js/ui/keyboard.js:692 ../js/ui/status/keyboard.js:523 msgid "Keyboard" msgstr "কিবৰ্ড" #: ../js/ui/lookingGlass.js:643 msgid "No extensions installed" msgstr "কোনো সম্প্ৰসাৰন ইনস্টল কৰা হোৱা নাই" #. Translators: argument is an extension UUID. */ #: ../js/ui/lookingGlass.js:697 #, javascript-format msgid "%s has not emitted any errors." msgstr "%s এ কোনো ত্ৰুটি প্ৰেৰণ কৰা নাই।" #: ../js/ui/lookingGlass.js:703 msgid "Hide Errors" msgstr "ত্ৰুটিসমূহ লুকুৱাওক" #: ../js/ui/lookingGlass.js:707 ../js/ui/lookingGlass.js:767 msgid "Show Errors" msgstr "ত্ৰুটিসমূহ দেখুৱাওক" #: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:71 #: ../js/ui/status/location.js:176 msgid "Enabled" msgstr "সামৰ্থবান কৰা আছে" #. Translators: this is for a network device that cannot be activated #. because it's disabled by rfkill (airplane mode) */ #. translators: #. * The device has been disabled #: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:179 #: ../js/ui/status/network.js:592 ../src/gvc/gvc-mixer-control.c:1830 msgid "Disabled" msgstr "অসামৰ্থবান কৰা আছে" #: ../js/ui/lookingGlass.js:721 msgid "Error" msgstr "ত্ৰুটি" #: ../js/ui/lookingGlass.js:723 msgid "Out of date" msgstr "পুৰনি" #: ../js/ui/lookingGlass.js:725 msgid "Downloading" msgstr "ডাউনল'ড কৰা হৈছে" #: ../js/ui/lookingGlass.js:749 msgid "View Source" msgstr "উৎস দৰ্শন কৰক" #: ../js/ui/lookingGlass.js:758 msgid "Web Page" msgstr "ৱেব পৃষ্ঠা" #: ../js/ui/messageTray.js:1326 msgid "Open" msgstr "খোলক" #: ../js/ui/messageTray.js:1333 msgid "Remove" msgstr "আতৰাওক" #: ../js/ui/messageTray.js:1630 msgid "Notifications" msgstr "অধিসূচনাসমূহ" #: ../js/ui/messageTray.js:1637 msgid "Clear Messages" msgstr "বাৰ্তাসমূহ পৰিষ্কাৰ কৰক" #: ../js/ui/messageTray.js:1656 msgid "Notification Settings" msgstr "অধিসূচনা সংহতিসমূহ" #: ../js/ui/messageTray.js:1709 msgid "Tray Menu" msgstr "ট্ৰে মেনু" #: ../js/ui/messageTray.js:1926 msgid "No Messages" msgstr "কোনো বাৰ্তা নাই" #: ../js/ui/messageTray.js:1968 msgid "Message Tray" msgstr "বাৰ্তা ট্ৰে" #: ../js/ui/messageTray.js:2971 msgid "System Information" msgstr "চিস্টেম তথ্য" #: ../js/ui/notificationDaemon.js:513 ../src/shell-app.c:425 msgctxt "program" msgid "Unknown" msgstr "অজ্ঞাত" #: ../js/ui/overviewControls.js:482 ../js/ui/screenShield.js:151 #, javascript-format msgid "%d new message" msgid_plural "%d new messages" msgstr[0] "%d নতুন বাৰ্তা" msgstr[1] "%d নতুন বাৰ্তাসমূহ" #: ../js/ui/overview.js:84 msgid "Undo" msgstr "কাৰ্য্য বাতিল কৰক" #: ../js/ui/overview.js:124 msgid "Overview" msgstr "অভাৰভিউ" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. */ #: ../js/ui/overview.js:246 msgid "Type to search…" msgstr "সন্ধান কৰিবলে টাইপ কৰক…" #: ../js/ui/panel.js:515 msgid "Quit" msgstr "প্ৰস্থান কৰক" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". */ #: ../js/ui/panel.js:567 msgid "Activities" msgstr "কাৰ্য্যসমূহ" #: ../js/ui/panel.js:918 msgid "Top Bar" msgstr "উপৰৰ বাৰ" #: ../js/ui/popupMenu.js:269 msgid "toggle-switch-us" msgstr "toggle-switch-us" #: ../js/ui/runDialog.js:70 msgid "Enter a Command" msgstr "এটা কমান্ড সুমুৱাওক" #: ../js/ui/runDialog.js:110 ../js/ui/windowMenu.js:120 msgid "Close" msgstr "বন্ধ কৰক" #: ../js/ui/runDialog.js:277 msgid "Restarting…" msgstr "পুনাৰম্ভ কৰা হৈছে…" #. Translators: This is a time format for a date in #. long format */ #: ../js/ui/screenShield.js:88 msgid "%A, %B %d" msgstr "%A, %B %d" #: ../js/ui/screenShield.js:153 #, javascript-format msgid "%d new notification" msgid_plural "%d new notifications" msgstr[0] "%d নতুন অধিসূচনা" msgstr[1] "%d নতুন অধিসূচনাসমূহ" #: ../js/ui/screenShield.js:472 ../js/ui/status/system.js:345 msgid "Lock" msgstr "লক কৰক" #: ../js/ui/screenShield.js:706 msgid "GNOME needs to lock the screen" msgstr "GNOME এ পৰ্দা লক কৰিব লাগিব" #: ../js/ui/screenShield.js:833 ../js/ui/screenShield.js:1304 msgid "Unable to lock" msgstr "লক কৰিবলে অক্ষম" #: ../js/ui/screenShield.js:834 ../js/ui/screenShield.js:1305 msgid "Lock was blocked by an application" msgstr "লক কাৰ্য্য এটা এপ্লিকেচন দ্বাৰা প্ৰতিৰোধ কৰা হৈছিল" #: ../js/ui/search.js:594 msgid "Searching…" msgstr "সন্ধান কৰা হৈছে…" #: ../js/ui/search.js:596 msgid "No results." msgstr "কোনো ফলাফল নাই।" #: ../js/ui/shellEntry.js:25 msgid "Copy" msgstr "কপি কৰক" #: ../js/ui/shellEntry.js:30 msgid "Paste" msgstr "পেইস্ট কৰক" #: ../js/ui/shellEntry.js:97 msgid "Show Text" msgstr "লিখনি দেখুৱাওক" #: ../js/ui/shellEntry.js:99 msgid "Hide Text" msgstr "লিখনি লুকুৱাওক" #: ../js/ui/shellMountOperation.js:370 msgid "Password" msgstr "পাছৱৰ্ড" #: ../js/ui/shellMountOperation.js:391 msgid "Remember Password" msgstr "পাছৱৰ্ড মনত ৰাখক" #: ../js/ui/status/accessibility.js:42 msgid "Accessibility" msgstr "অভিগম্যতা" #: ../js/ui/status/accessibility.js:57 msgid "Zoom" msgstr "জুম কৰক" #: ../js/ui/status/accessibility.js:64 msgid "Screen Reader" msgstr "পৰ্দা ৰিডাৰ" #: ../js/ui/status/accessibility.js:68 msgid "Screen Keyboard" msgstr "পৰ্দা কিবৰ্ড" #: ../js/ui/status/accessibility.js:72 msgid "Visual Alerts" msgstr "চক্ষ সতৰ্কবাৰ্তাসমূহ" #: ../js/ui/status/accessibility.js:75 msgid "Sticky Keys" msgstr "স্টিকি কি'সমূহ" #: ../js/ui/status/accessibility.js:78 msgid "Slow Keys" msgstr "মন্থৰ কি'সমূহ" #: ../js/ui/status/accessibility.js:81 msgid "Bounce Keys" msgstr "বাউঞ্চ কি'সমূহ" #: ../js/ui/status/accessibility.js:84 msgid "Mouse Keys" msgstr "মাউছ কি'সমূহ" #: ../js/ui/status/accessibility.js:144 msgid "High Contrast" msgstr "উচ্চ কন্ট্ৰাস্ট" #: ../js/ui/status/accessibility.js:193 msgid "Large Text" msgstr "ডাঙৰ লিখনি" #: ../js/ui/status/bluetooth.js:49 msgid "Bluetooth" msgstr "ব্লুটুথ" #: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:178 #: ../js/ui/status/network.js:360 ../js/ui/status/network.js:1281 #: ../js/ui/status/network.js:1392 ../js/ui/status/rfkill.js:86 #: ../js/ui/status/rfkill.js:114 msgid "Turn Off" msgstr "বন্ধ কৰক" #: ../js/ui/status/bluetooth.js:54 msgid "Bluetooth Settings" msgstr "ব্লুটুথ সংহতিসমূহ" #: ../js/ui/status/bluetooth.js:104 #, javascript-format msgid "%d Connected Device" msgid_plural "%d Connected Devices" msgstr[0] "%d সংযুক্ত ডিভাইচ" msgstr[1] "%d সংযুক্ত ডিভাইচসমূহ" #: ../js/ui/status/bluetooth.js:106 ../js/ui/status/network.js:1309 msgid "Not Connected" msgstr "সংযুক্ত নহয়" #: ../js/ui/status/brightness.js:44 msgid "Brightness" msgstr "উজ্জ্বলতা" #: ../js/ui/status/keyboard.js:547 msgid "Show Keyboard Layout" msgstr "কিবৰ্ড বিন্যাস দেখুৱাওক" #: ../js/ui/status/location.js:65 msgid "Location" msgstr "অবস্থান" #: ../js/ui/status/location.js:72 ../js/ui/status/location.js:177 msgid "Disable" msgstr "অসামৰ্থবান কৰক" #: ../js/ui/status/location.js:73 #| msgid "Power Settings" msgid "Privacy Settings" msgstr "গোপনীয়তা সংহতিসমূহ" #: ../js/ui/status/location.js:176 msgid "In Use" msgstr "ব্যৱহৃত" #: ../js/ui/status/location.js:180 msgid "Enable" msgstr "সামৰ্থবান কৰক" #: ../js/ui/status/network.js:101 msgid "" msgstr "" #: ../js/ui/status/network.js:457 ../js/ui/status/network.js:1307 #: ../js/ui/status/network.js:1511 msgid "Off" msgstr "অফ" #: ../js/ui/status/network.js:459 msgid "Connected" msgstr "সংযুক্ত" #. Translators: this is for network devices that are physically present but are not #. under NetworkManager's control (and thus cannot be used in the menu) */ #: ../js/ui/status/network.js:463 msgid "Unmanaged" msgstr "অব্যৱস্থাপিত" #: ../js/ui/status/network.js:465 msgid "Disconnecting" msgstr "বিচ্ছিনিত কৰা হৈছে" #: ../js/ui/status/network.js:471 ../js/ui/status/network.js:1301 msgid "Connecting" msgstr "সংযোগ কৰা হৈছে" #. Translators: this is for network connections that require some kind of key or password */ #: ../js/ui/status/network.js:474 msgid "Authentication required" msgstr "প্ৰমাণীকৰণৰ প্ৰয়োজন" #. Translators: this is for devices that require some kind of firmware or kernel #. module, which is missing */ #: ../js/ui/status/network.js:482 msgid "Firmware missing" msgstr "ফাৰ্মৱেৰ সন্ধানহীন" #. Translators: this is for a network device that cannot be activated (for example it #. is disabled by rfkill, or it has no coverage */ #: ../js/ui/status/network.js:486 msgid "Unavailable" msgstr "উপলব্ধ নাই" #: ../js/ui/status/network.js:488 ../js/ui/status/network.js:1695 msgid "Connection failed" msgstr "সংযোগ ব্যৰ্থ" #: ../js/ui/status/network.js:504 msgid "Wired Settings" msgstr "তাঁৰযুক্ত সংহতিসমূহ" #: ../js/ui/status/network.js:546 ../js/ui/status/network.js:624 msgid "Mobile Broadband Settings" msgstr "মবাইল ব্ৰডবেণ্ড সংহতিসমূহ" #: ../js/ui/status/network.js:588 ../js/ui/status/network.js:1305 msgid "Hardware Disabled" msgstr "হাৰ্ডৱেৰ অসামৰ্থবান কৰা আছে" #: ../js/ui/status/network.js:632 msgid "Use as Internet connection" msgstr "ইন্টাৰনেট সংযোগ ৰূপে ব্যৱহাৰ কৰক" #: ../js/ui/status/network.js:813 msgid "Airplane Mode is On" msgstr "বিমান অৱস্থা অন আছে" #: ../js/ui/status/network.js:814 msgid "Wi-Fi is disabled when airplane mode is on." msgstr "বিমান অৱস্থা অন থকা অৱস্থাত Wi-Fi অসামৰ্থবান থাকে।" #: ../js/ui/status/network.js:815 msgid "Turn Off Airplane Mode" msgstr "বিমান অৱস্থা বন্ধ কৰক" #: ../js/ui/status/network.js:824 msgid "Wi-Fi is Off" msgstr "Wi-Fi অফ আছে" #: ../js/ui/status/network.js:825 msgid "Wi-Fi needs to be turned on in order to connect to a network." msgstr "এটা নেটৱৰ্কৰ সৈতে সংযোগ কৰিবলে Wi-Fi অন কৰিব লাগিব।" #: ../js/ui/status/network.js:826 msgid "Turn On Wi-Fi" msgstr "Wi-Fi অন কৰক" #: ../js/ui/status/network.js:851 msgid "Wi-Fi Networks" msgstr "Wi-Fi নেটৱৰ্কসমূহ" #: ../js/ui/status/network.js:853 msgid "Select a network" msgstr "এটা নেটৱৰ্ক বাছক" #: ../js/ui/status/network.js:882 msgid "No Networks" msgstr "কোনো নেটৱৰ্ক নাই" #: ../js/ui/status/network.js:903 ../js/ui/status/rfkill.js:112 msgid "Use hardware switch to turn off" msgstr "বন্ধ কৰিবলে হাৰ্ডৱেৰ চুইচ ব্যৱহাৰ কৰক" #: ../js/ui/status/network.js:1173 msgid "Select Network" msgstr "নেটৱৰ্ক বাছক" #: ../js/ui/status/network.js:1179 msgid "Wi-Fi Settings" msgstr "Wi-Fi সংহতিসমূহ" #: ../js/ui/status/network.js:1281 msgid "Turn On" msgstr "অন কৰক" #: ../js/ui/status/network.js:1298 msgid "Hotspot Active" msgstr "হটস্পট সক্ৰিয়" #: ../js/ui/status/network.js:1409 msgid "connecting..." msgstr "সংযোগ কৰা হৈছে..." #. Translators: this is for network connections that require some kind of key or password */ #: ../js/ui/status/network.js:1412 msgid "authentication required" msgstr "প্ৰমাণীকৰণৰ প্ৰয়োজন" #: ../js/ui/status/network.js:1414 msgid "connection failed" msgstr "সংযোগ ব্যৰ্থ" #: ../js/ui/status/network.js:1480 ../js/ui/status/rfkill.js:89 msgid "Network Settings" msgstr "নেটৱৰ্ক সংহতিসমূহ" #: ../js/ui/status/network.js:1482 msgid "VPN Settings" msgstr "VPN সংহতিসমূহ" #: ../js/ui/status/network.js:1501 msgid "VPN" msgstr "VPN" #: ../js/ui/status/network.js:1656 msgid "Network Manager" msgstr "নেটৱৰ্ক ব্যৱস্থাপক" #: ../js/ui/status/network.js:1696 msgid "Activation of network connection failed" msgstr "নেটৱৰ্ক সংযোগ সক্ৰিয়কৰণ ব্যৰ্থ হল" #: ../js/ui/status/power.js:49 msgid "Power Settings" msgstr "শক্তি সংহতিসমূহ" #: ../js/ui/status/power.js:65 msgid "Fully Charged" msgstr "সম্পূৰ্ণভাৱে চাৰ্জড্" #: ../js/ui/status/power.js:72 ../js/ui/status/power.js:78 msgid "Estimating…" msgstr "অনুমান কৰা হৈছে…" #: ../js/ui/status/power.js:86 #, javascript-format msgid "%d∶%02d Remaining (%d%%)" msgstr "%d∶%02d অৱশিষ্ট (%d%%)" #: ../js/ui/status/power.js:91 #, javascript-format msgid "%d∶%02d Until Full (%d%%)" msgstr "%d∶%02d সম্পূৰ্ণ হোৱালৈ (%d%%)" #: ../js/ui/status/power.js:119 msgid "UPS" msgstr "UPS" #: ../js/ui/status/power.js:121 msgid "Battery" msgstr "বেটাৰি" #: ../js/ui/status/rfkill.js:83 msgid "Airplane Mode" msgstr "বিমান অৱস্থা" #: ../js/ui/status/rfkill.js:85 msgid "On" msgstr "অন" #: ../js/ui/status/system.js:317 msgid "Switch User" msgstr "ব্যৱহাৰকাৰী পৰিবৰ্তন কৰক" #: ../js/ui/status/system.js:322 msgid "Log Out" msgstr "লগ আউট কৰক" #: ../js/ui/status/system.js:341 msgid "Orientation Lock" msgstr "দিশনিৰ্ণয় লক" #: ../js/ui/status/system.js:349 msgid "Suspend" msgstr "বাতিল কৰক" #: ../js/ui/status/system.js:352 msgid "Power Off" msgstr "বন্ধ কৰক" #: ../js/ui/status/volume.js:127 msgid "Volume changed" msgstr "ভলিউম পৰিবৰ্তন কৰা হৈছে" #: ../js/ui/status/volume.js:162 msgid "Volume" msgstr "ভলিউম" #: ../js/ui/status/volume.js:213 msgid "Microphone" msgstr "মাইক্ৰোফোন" #: ../js/ui/unlockDialog.js:67 msgid "Log in as another user" msgstr "অন্য ব্যৱহাৰকাৰী হিচাপে লগিন কৰক" #: ../js/ui/unlockDialog.js:84 msgid "Unlock Window" msgstr "উইন্ডো আনলক কৰক" #: ../js/ui/viewSelector.js:158 msgid "Applications" msgstr "এপ্লিকেচনসমূহ" #: ../js/ui/viewSelector.js:162 msgid "Search" msgstr "সন্ধান কৰক" #: ../js/ui/windowAttentionHandler.js:19 #, javascript-format msgid "“%s” is ready" msgstr "“%s” প্ৰস্তুত" #: ../js/ui/windowManager.js:65 msgid "Do you want to keep these display settings?" msgstr "আপুনি এই প্ৰদৰ্শন সংহতিসমূহ ৰাখিব বিচাৰে নে?" #. Translators: this and the following message should be limited in lenght, #. to avoid ellipsizing the labels. #. */ #: ../js/ui/windowManager.js:84 msgid "Revert Settings" msgstr "সংহতিসমূহক পূৰ্ব অৱস্থালৈ নিয়ক" #: ../js/ui/windowManager.js:88 msgid "Keep Changes" msgstr "পৰিৱৰ্তনসমূহ ৰাখক" #: ../js/ui/windowManager.js:107 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "সংহতিসমূহৰ পৰিবৰ্তন %d ছেকেণ্ডত পূৰ্ব অৱস্থালৈ যাব" msgstr[1] "সংহতিসমূহৰ পৰিবৰ্তন %d ছেকেণ্ডত পূৰ্ব অৱস্থালৈ যাব" #: ../js/ui/windowMenu.js:34 msgid "Minimize" msgstr "সৰু কৰক" #: ../js/ui/windowMenu.js:41 msgid "Unmaximize" msgstr "স্বাভাৱিক আকাৰ দিয়ক" #: ../js/ui/windowMenu.js:45 msgid "Maximize" msgstr "ডাঙৰ কৰক" #: ../js/ui/windowMenu.js:52 msgid "Move" msgstr "স্থানান্তৰ কৰক" #: ../js/ui/windowMenu.js:58 msgid "Resize" msgstr "পুনৰআকাৰ দিয়ক" #: ../js/ui/windowMenu.js:65 msgid "Move Titlebar Onscreen" msgstr "অনস্ক্ৰিন শীৰ্ষকবাৰক স্থানান্তৰ কৰক" #: ../js/ui/windowMenu.js:70 msgid "Always on Top" msgstr "সদায় ওপৰত" #: ../js/ui/windowMenu.js:89 msgid "Always on Visible Workspace" msgstr "সদায় দৃশ্যমান কাৰ্য্যস্থানত" #: ../js/ui/windowMenu.js:106 msgid "Move to Workspace Up" msgstr "ওপৰৰ কাৰ্য্যস্থানলৈ স্থানান্তৰ কৰক" #: ../js/ui/windowMenu.js:111 msgid "Move to Workspace Down" msgstr "তলৰ কাৰ্য্যস্থানলৈ স্থানান্তৰ কৰক" #: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1 msgid "Evolution Calendar" msgstr "Evolution কেলেন্ডাৰ" #. translators: #. * The number of sound outputs on a particular device #: ../src/gvc/gvc-mixer-control.c:1837 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u আউটপুট" msgstr[1] "%u আউটপুটসমূহ" #. translators: #. * The number of sound inputs on a particular device #: ../src/gvc/gvc-mixer-control.c:1847 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u ইনপুট" msgstr[1] "%u ইনপুটসমূহ" #: ../src/gvc/gvc-mixer-control.c:2373 msgid "System Sounds" msgstr "চিস্টেম শব্দসমূহ" #: ../src/main.c:373 msgid "Print version" msgstr "প্ৰিণ্ট সংস্কৰণ" #: ../src/main.c:379 msgid "Mode used by GDM for login screen" msgstr "লগিন স্ক্ৰিনৰ বাবে GDM দ্বাৰা ব্যৱহাৰ কৰা অৱস্থা" #: ../src/main.c:385 msgid "Use a specific mode, e.g. \"gdm\" for login screen" msgstr "লগিন পৰ্দাৰ বাবে এটা বিশেষ অৱস্থা, উদাহৰণস্বৰূপ \"gdm\" ব্যৱহাৰ কৰক" #: ../src/main.c:391 msgid "List possible modes" msgstr "সম্ভাব্য অৱস্থাসমূহ তালিকাভুক্ত কৰক" #: ../src/shell-app.c:666 #, c-format msgid "Failed to launch “%s”" msgstr "“%s” লঞ্চ কৰিবলে ব্যৰ্থ" #: ../src/shell-keyring-prompt.c:714 msgid "Passwords do not match." msgstr "পাছৱৰ্ডসমূহ মিল নাখায়।" #: ../src/shell-keyring-prompt.c:722 msgid "Password cannot be blank" msgstr "পাছৱৰ্ড ৰিক্ত হব নোৱাৰিব" #: ../src/shell-polkit-authentication-agent.c:346 msgid "Authentication dialog was dismissed by the user" msgstr "প্ৰমাণীকৰণ ডাইলগ ব্যৱহাৰকাৰী দ্বাৰা নাকচ কৰা হৈছিল" #~ msgid "Arrangement of buttons on the titlebar" #~ msgstr "শীৰ্ষকবাৰত বুটামসমূহ সজোঁৱা" #~ msgid "" #~ "This key overrides the key in org.gnome.desktop.wm.preferences when " #~ "running GNOME Shell." #~ msgstr "" #~ "GNOME শ্বেল চলাওতে এই কি'য়ে org.gnome.desktop.wm.preferences ত থকা কি' " #~ "অভাৰৰাইড কৰে।" #~ msgid "Extension" #~ msgstr "প্ৰসাৰন" #~ msgid "Select an extension to configure using the combobox above." #~ msgstr "উপৰত দিয়া কম্বোবাকচ ব্যৱহাৰ কৰি সংৰূপণ কৰিবলে এটা সম্প্ৰসাৰন বাছক।" #~ msgid "calendar:MY" #~ msgstr "কেলেন্ডাৰ:MY" #~ msgid "%A, %H:%M" #~ msgstr "%A, %H:%M" #~ msgid "%B %d, %H:%M" #~ msgstr "%B %d, %H:%M" #~ msgid "%B %d %Y, %H:%M " #~ msgstr "%B %d %Y, %H:%M " #~ msgid "unavailable" #~ msgstr "উপলব্ধ নাই" #~ msgid "List of categories that should be displayed as folders" #~ msgstr "ফোল্ডাৰ হিচাপে প্ৰদৰ্শন কৰিব লগিয়া বিভাগসমূহ তালিকাৰ" #~ msgid "" #~ "Each category name in this list will be represented as folder in the " #~ "application view, rather than being displayed inline in the main view." #~ msgstr "" #~ "এই তালিকাৰ প্ৰতিটো বিভাগ নামক এপ্লিকেচন দৰ্শনত ফোল্ডাৰ হিচাপে প্ৰতিনিদ্ধিত্ব কৰা " #~ "হব, মূখ্য দৰ্শনত ইনলাইন হিচাপে প্ৰদৰ্শন কৰাৰ পৰিৱৰ্তে।" #~ msgid "Authorization request from %s" #~ msgstr "%s ৰ পৰা প্ৰমাণীকৰণ অনুৰোধ" #~ msgid "Device %s wants to pair with this computer" #~ msgstr "ডিভাইচ %s এ এই কমপিউটাৰৰ লগত সংযোগ কৰিব বিচাৰে" #~ msgid "Allow" #~ msgstr "অনুমতি দিয়ক" #~ msgid "Deny" #~ msgstr "নাকচ কৰক" #~ msgid "Device %s wants access to the service '%s'" #~ msgstr "ডিভাইচ %s এ সেৱা '%s' লে অভিগম বিচাৰে" #~ msgid "Always grant access" #~ msgstr "সদায় অভিগম প্ৰদান কৰক" #~ msgid "Grant this time only" #~ msgstr "কেৱল এইবাৰৰ কাৰণে প্ৰদান কৰক" #~ msgid "Reject" #~ msgstr "নাকচ কৰক" #~ msgid "Pairing confirmation for %s" #~ msgstr "%s ৰ কাৰণে যোৰ প্ৰতিশ্ৰুতি" #~ msgid "" #~ "Please confirm whether the Passkey '%06d' matches the one on the device." #~ msgstr "অনুগ্ৰহ কৰি সুনিশ্চিত কৰক যে পাছকি '%06d' ডিভাইচত থকাটোৰ সৈতে মিল খায়।" #~ msgid "Matches" #~ msgstr "মিলসমূহ" #~ msgid "Does not match" #~ msgstr "মিল নাখায়" #~ msgid "Pairing request for %s" #~ msgstr "%s ৰ কাৰণে যোৰ অনুৰোধ" #~ msgid "Please enter the PIN mentioned on the device." #~ msgstr "অনুগ্ৰহ কৰি ডিভাইচত উল্লেখ কৰা PIN সুমুৱাওক।" #~ msgid "OK" #~ msgstr "ঠিক আছে" #~ msgid "" #~ "Sorry, no wisdom for you today:\n" #~ "%s" #~ msgstr "" #~ "ক্ষমা কৰিব, আপোনাৰ বাবে আজি কোনো জ্ঞান নাই:\n" #~ "%s" #~ msgid "%s the Oracle says" #~ msgstr "%s Oracle এ ক'য়" #~ msgctxt "event list time" #~ msgid "%H\\u2236%M" #~ msgstr "%H\\u2236%M" #~ msgctxt "event list time" #~ msgid "%l\\u2236%M\\u2009%p" #~ msgstr "%l\\u2236%M\\u2009%p" #~ msgid "Settings Menu" #~ msgstr "সংহতিসমূহ মেনু" #~ msgid "Screenshots" #~ msgstr "স্ক্ৰিনশ্বটসমূহ" #~ msgid "Record a screencast" #~ msgstr "এটা স্ক্ৰিনশ্বট ৰেকৰ্ড কৰক" #~ msgid "Whether to collect stats about applications usage" #~ msgstr "এপ্লিকেচন ব্যৱহাৰ বিষয়ে পৰিসংখ্যা সংগ্ৰহ কৰা হব নে" #~ msgid "" #~ "The shell normally monitors active applications in order to present the " #~ "most used ones (e.g. in launchers). While this data will be kept private, " #~ "you may want to disable this for privacy reasons. Please note that doing " #~ "so won't remove already saved data." #~ msgstr "" #~ "শ্বেলে সাধাৰণত সক্ৰিয় এপ্লিকেচনসমূহ মনিটৰ কৰে যাতে সকলোতকৈ অধিক ব্যৱহৃতসমূহ " #~ "(উদাহৰনস্বৰুপে লঞ্চাৰসমূহত) ক দেখুৱাব পাৰে। যত এই তথ্য গোপন ৰখা হব, আপুনি ইয়াক " #~ "গোপনীয়তা কাৰণসমূহৰ কাৰণে অসামৰ্থবান কৰিব পাৰে। অনুগ্ৰহ কৰি মন কৰিব যে এনেকুৱা " #~ "কৰাত ইতিমধ্যে সংৰক্ষীত তথ্য আতৰি নাযায়।" #~ msgid "" #~ "Internally used to store the last IM presence explicitly set by the user. " #~ "The value here is from the TpConnectionPresenceType enumeration." #~ msgstr "" #~ "ব্যৱহাৰকাৰী দ্বাৰা স্পষ্টভাৱে সংহতি কৰা সৰ্বশেষ IM উপস্থিতি সংৰক্ষণ কৰাৰ বাবে " #~ "অভ্যন্তৰীয় বাবে ব্যৱহৃত। ইয়াত থকা মান TpConnectionPresenceType ইনুমাৰেষণৰ পৰা।" #~ msgid "" #~ "Internally used to store the last session presence status for the user. " #~ "The value here is from the GsmPresenceStatus enumeration." #~ msgstr "" #~ "ব্যৱহাৰকাৰীৰ বাবে সৰ্বশেষ অধিবেশন উপস্থিতি অৱস্থা সংৰক্ষণ কৰাৰ বাবে " #~ "অভ্যন্তৰীয়ভাৱে ব্যৱহৃত। ইয়াত থকা মান GsmPresenceStatus ইনুমাৰেষণৰ পৰা উপলব্ধ।" #~ msgid "Keybinding to toggle the screen recorder" #~ msgstr "পৰ্দা ৰেকৰ্ডাৰ অদল বদল কৰিবলে Keybinding" #~ msgid "Keybinding to start/stop the builtin screen recorder." #~ msgstr "বিল্টইন পৰ্দা ৰেকৰ্ডাৰ আৰম্ভ/বন্ধ কৰিবলে Keybinding।" #~ msgid "Framerate used for recording screencasts." #~ msgstr "screencasts ৰেকৰ্ড কৰাৰ কাৰণে ব্যৱহৃত Framerate" #~ msgid "" #~ "The framerate of the resulting screencast recordered by GNOME Shell's " #~ "screencast recorder in frames-per-second." #~ msgstr "" #~ "GNOME শ্বেলৰ screencast ৰেকৰ্ডাৰে ফ্ৰেইম-প্ৰতি ছেকেণ্ডত ৰেকৰ্ড কৰা পৰিণাম " #~ "screencast ৰ framerate।" #~ msgid "The gstreamer pipeline used to encode the screencast" #~ msgstr "screencast এনক'ড কৰিবলে ব্যৱহাৰ কৰা gstreamer পাইপলাইন" #~ msgid "" #~ "Sets the GStreamer pipeline used to encode recordings. It follows the " #~ "syntax used for gst-launch. The pipeline should have an unconnected sink " #~ "pad where the recorded video is recorded. It will normally have a " #~ "unconnected source pad; output from that pad will be written into the " #~ "output file. However the pipeline can also take care of its own output - " #~ "this might be used to send the output to an icecast server via shout2send " #~ "or similar. When unset or set to an empty value, the default pipeline " #~ "will be used. This is currently 'vp8enc min_quantizer=13 max_quantizer=13 " #~ "cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux' and records to " #~ "WEBM using the VP8 codec. %T is used as a placeholder for a guess at the " #~ "optimal thread count on the system." #~ msgstr "" #~ "ৰেকৰ্ডিংসমূহ এনক'ড কৰোতে ব্যৱহৃত GStreamer পাইপলাইন সংহতি কৰে। ই gst-launch ৰ " #~ "কাৰণে ব্যৱহৃত বাক্যবিন্যাস অনুকৰন কৰে। পাইপলাইনৰ এটা অসংযোগিত চিঙ্ক পেড থাকিব " #~ "লাগে যত ৰেকৰ্ড কৰা ভিডিঅ' ৰেকৰ্ড কৰা হয়। ইয়াৰ সাধাৰণত এটা অসংযোগিত উৎস পেড " #~ "থাকিব; সেই পেডৰ পৰা আউটপুট এটা আউটপুট ফাইললে লিখা হব। যি কি নহওক পাইপলাইনে " #~ "নিজৰ আউটপুটৰ যত্ন লব পাৰে - ইয়াৰ হওতো আউটপুটক shout2send অথবা সমসাময়িকৰে এটা " #~ "icecast চাৰ্ভাৰত পঠাবলে ব্যৱহাৰ হব পাৰে। যেতিয়া এটা ৰিক্ত মানলে অসংহিত বা " #~ "সংহিত, অবিকল্পিত পাইপলাইন ব্যৱহাৰ কৰা হব। এইটো বৰ্তমানত 'vp8enc " #~ "min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=" #~ "%T ! queue ! webmmux' আৰু VP8 কডেক ব্যৱহাৰ কৰি WEBM ত ৰেকৰ্ড কৰে। %T ক " #~ "চিস্টেমত অনুকূলিত থ্ৰেড কাওণ্টত এটা অনুমানৰ প্লেইচহল্ডাৰ হিচাপে ব্যৱহাৰ কৰা হয়।" #~ msgid "File extension used for storing the screencast" #~ msgstr "screencast সংৰক্ষণ কৰাৰ কাৰণে লথিপত্ৰ সম্প্ৰসাৰন" #~ msgid "" #~ "The filename for recorded screencasts will be a unique filename based on " #~ "the current date, and use this extension. It should be changed when " #~ "recording to a different container format." #~ msgstr "" #~ "ৰেকৰ্ড কৰা screencasts ৰ কাৰণে ফাইল নাম বৰ্তমান তাৰিখৰ উপৰত ভিত্তি কৰি এটা " #~ "অবিকল্প ফাইল নাম হব, আৰু এই সম্প্ৰসাৰন ব্যৱহাৰ কৰিব। ইয়াক এটা ভিন্ন অন্তৰ্ভুক্তক " #~ "বিন্যাসত ৰেকৰ্ড কৰোতে পৰিবৰ্তন কৰিব লাগিব।" #~| msgid "Session..." #~ msgid "Session…" #~ msgstr "অধিবেশন…" #~ msgid "Power" #~ msgstr "শক্তি" #~ msgid "Restart" #~ msgstr "পুনৰাম্ভ কৰক" #~ msgid "Screencast from %d %t" #~ msgstr "%d %t ৰ পৰা স্ক্ৰিনকাস্ট দেখুৱাওক" #~ msgid "Click Log Out to quit these applications and log out of the system." #~ msgstr "এই এপ্লিকেচনসমূহ প্ৰস্থান কৰি চিস্টেমৰ পৰা লগ আউট হবলে লগ আউট ক্লিক কৰক।" #~ msgid "Logging out of the system." #~ msgstr "চিস্টেমৰ পৰা লগ আউট কৰা হৈছে।" #~ msgid "Click Power Off to quit these applications and power off the system." #~ msgstr "এই এপ্লিকেচনসমূহক প্ৰস্থান কৰি চিস্টেম বন্ধ কৰিবলে বন্ধ কৰক ক্লিক কৰক।" #~ msgid "Powering off the system." #~ msgstr "চিস্টেম বন্ধ কৰা হৈছে।" #~ msgid "Click Restart to quit these applications and restart the system." #~ msgstr "এই এপ্লিকেচনসমূহক প্ৰস্থান কৰি চিস্টেম পুনৰাম্ভ কৰিবলে পুনৰাম্ভ ক্লিক কৰক।" #~ msgid "Restarting the system." #~ msgstr "চিস্টেম পুনৰাম্ভ কৰা হৈছে।" #~ msgid "Universal Access Settings" #~ msgstr "সাৰ্বভৈমক অভিগম সংহতিসমূহ" #~ msgid "Visibility" #~ msgstr "দৃশ্যমানতা" #~| msgid "Send Files to Device..." #~ msgid "Send Files to Device…" #~ msgstr "ফাইলসমূহক ডিভাইচলে পঠাওক…" #~| msgid "Set up a New Device..." #~ msgid "Set Up a New Device…" #~ msgstr "এটা নতুন ডিভাইচ সংহতি কৰক…" #~| msgid "Send Files..." #~ msgid "Send Files…" #~ msgstr "ফাইলসমূহ পঠাওক…" #~ msgid "Keyboard Settings" #~ msgstr "কিবৰ্ড সংহতিসমূহ" #~ msgid "Mouse Settings" #~ msgstr "মাউছ আৰু টাচপেড সংহতিসমূহ" #~ msgid "Sound Settings" #~ msgstr "শব্দ সংহতিসমূহ" #~| msgid "Region and Language Settings" #~ msgid "Region & Language Settings" #~ msgstr "অঞ্চল আৰু ভাষা সংহতিসমূহ" #~ msgid "Volume, network, battery" #~ msgstr "ভলিউম, নেটৱৰ্ক, বেটাৰি" #~ msgid "disabled" #~ msgstr "অসামৰ্থবান" #~ msgid "cable unplugged" #~ msgstr "কেবুল আনপ্লাগ্গড" #~ msgid "More…" #~ msgstr "অধিক…" #~ msgid "Wired" #~ msgstr "তাৰঁযুক্ত" #~ msgid "Auto Ethernet" #~ msgstr "স্বচালিত ইথাৰনেট" #~ msgid "Auto broadband" #~ msgstr "স্বচালিত ব্ৰডবেণ্ড" #~ msgid "Auto dial-up" #~ msgstr "স্বচালিত ডায়েল-আপ" #~ msgid "Auto %s" #~ msgstr "স্বচালিত %s" #~ msgid "Auto bluetooth" #~ msgstr "স্বচালিত ব্লুটুথ" #~ msgid "Auto wireless" #~ msgstr "স্বচালিত বেতাঁৰ" #~ msgid "Wi-Fi" #~ msgstr "Wi-Fi" #~ msgid "Networking is disabled" #~ msgstr "নেটৱাৰ্কিং অসামৰ্থবান কৰা আছে" #~ msgid "%d hour remaining" #~ msgid_plural "%d hours remaining" #~ msgstr[0] "%d ঘন্টা অৱশিষ্ট" #~ msgstr[1] "%d ঘন্টা অৱশিষ্ট" #~ msgid "%d %s %d %s remaining" #~ msgstr "%d %s %d %s অৱশিষ্ট" #~ msgid "hour" #~ msgid_plural "hours" #~ msgstr[0] "ঘন্টা" #~ msgstr[1] "ঘন্টা" #~ msgid "minute" #~ msgid_plural "minutes" #~ msgstr[0] "মিনিট" #~ msgstr[1] "মিনিট" #~ msgid "%d minute remaining" #~ msgid_plural "%d minutes remaining" #~ msgstr[0] "%d মিনিট অৱশিষ্ট" #~ msgstr[1] "%d মিনিট অৱশিষ্ট" #~ msgctxt "percent of battery remaining" #~ msgid "%d%%" #~ msgstr "%d%%" #~| msgid "AC adapter" #~ msgid "AC Adapter" #~ msgstr "AC এডাপ্টাৰ" #~| msgid "Laptop battery" #~ msgid "Laptop Battery" #~ msgstr "লেপটপ বেটাৰি" #~ msgid "Monitor" #~ msgstr "মনিটৰ" #~ msgid "Mouse" #~ msgstr "মাউছ" #~ msgid "PDA" #~ msgstr "PDA" #~| msgid "Cell phone" #~ msgid "Cell Phone" #~ msgstr "চেল ফোন" #~| msgid "Media player" #~ msgid "Media Player" #~ msgstr "মিডিয়া প্লেয়াৰ" #~ msgid "Tablet" #~ msgstr "টেবলেট" #~ msgid "Computer" #~ msgstr "কমপিউটাৰ" #~ msgctxt "device" #~ msgid "Unknown" #~ msgstr "অজ্ঞাত" #~ msgid "Available" #~ msgstr "উপলব্ধ" #~ msgid "Busy" #~ msgstr "ব্যস্থ" #~ msgid "Invisible" #~ msgstr "অদৃশ্য" #~ msgid "Away" #~ msgstr "আতৰত" #~ msgid "Idle" #~ msgstr "অলস" #~ msgid "Your chat status will be set to busy" #~ msgstr "আপোনাৰ চেট অৱস্থা ব্যস্থলে সংহতি কৰা হব" #~ msgid "" #~ "Notifications are now disabled, including chat messages. Your online " #~ "status has been adjusted to let others know that you might not see their " #~ "messages." #~ msgstr "" #~ "অধিসূচনাসমূহ এতিয়া অসামৰ্থবান কৰা হৈছে, চেট বাৰ্তাসমূহ অন্তৰ্ভুক্ত কৰাকৈ। আপোনাৰ " #~ "অনলাইন অৱস্থা ঠিক কৰা হৈছে যাতে আনে জানিব পাৰে যে আপুনি সিহতৰ বাৰ্তা চাব " #~ "নোৱাৰিবও পাৰে।" #~ msgid "Shutting down might cause them to lose unsaved work." #~ msgstr "বন্ধ কৰিলে তেওঁলোকৰ অসংৰক্ষিত কাৰ্য্য হেৰাব পাৰে।" #~ msgctxt "title" #~ msgid "Sign In" #~ msgstr "ছাইন ইন কৰক" #~ msgctxt "event list time" #~ msgid "%H:%M" #~ msgstr "%H:%M" #~ msgctxt "event list time" #~ msgid "%l:%M %p" #~ msgstr "%l:%M %p" #~ msgid "tray" #~ msgstr "ট্ৰে" #~ msgid "More..." #~ msgstr "অধিক..." #~ msgid "United Kingdom" #~ msgstr "ইংলেণ্ড" #~ msgid "Default" #~ msgstr "অবিকল্পিত" #~ msgid "Show full name in the user menu" #~ msgstr "ব্যৱহাৰকাৰী মেনুত সম্পূৰ্ণ নাম দেখুৱাওক" #~ msgid "Whether the users full name is shown in the user menu or not." #~ msgstr "ব্যৱহাৰকাৰী মেনুত ব্যৱহাৰকাৰীসকলৰ সম্পূৰ্ণ নাম দেখুৱা হয় নে নহয়।" #~ msgid "APPLICATIONS" #~ msgstr "APPLICATIONS" #~ msgid "SETTINGS" #~ msgstr "SETTINGS" #~ msgid "Your favorite Easter Egg" #~ msgstr "আপোনাৰ পছন্দৰ Easter Egg" #~ msgid "%H:%M on Yesterday" #~ msgstr "%H:%M যোৱাকালী" #~ msgid "%H:%M on %A, %B %d, %Y" #~ msgstr "%A%H:%M, %B %d, %Y" #~ msgid "Subscription request" #~ msgstr "স্বাক্ষৰণ অনুৰোধ" #~ msgid "Connection error" #~ msgstr "সংযোগ ত্ৰুটি" #~ msgid "Connection to %s failed" #~ msgstr "%s লে সংযোগ ব্যৰ্থ" #~ msgid "Reconnect" #~ msgstr "পুনৰ সংযোগ কৰক" #~ msgid "Browse Files..." #~ msgstr "ফাইলসমূহ ব্ৰাউছ কৰক..." #~ msgid "Error browsing device" #~ msgstr "ডিভাইচ ব্ৰাউছ কৰোতে ত্ৰুটি" #~ msgid "The requested device cannot be browsed, error is '%s'" #~ msgstr "অনুৰোধিত ডিভাইচ ব্ৰাউছ কৰিব নোৱাৰি, ত্ৰুটি '%s'" #~ msgid "Wireless" #~ msgstr "বেতাঁৰ" #~ msgid "VPN Connections" #~ msgstr "VPN সংযোগসমূহ" #~ msgid "System Settings" #~ msgstr "চিস্টেম সংহতিসমূহ" #~ msgid "Failed to unmount '%s'" #~ msgstr "'%s' আনমাউণ্ট কৰিবলে ব্যৰ্থ" #~ msgid "Retry" #~ msgstr "পুনৰ চেষ্টা কৰক" #~ msgid "PLACES & DEVICES" #~ msgstr "PLACES & DEVICES" #~ msgid "Home" #~ msgstr "ঘৰ" #~ msgid "%1$s: %2$s" #~ msgstr "%1$s: %2$s" #~ msgid "disabled OpenSearch providers" #~ msgstr "অসামৰ্থবান কৰা OpenSearch প্ৰদানকাৰীসমূহ" #~ msgid "Connect to..." #~ msgstr "লে সংযোগ কৰক..." #~ msgid "Passphrase" #~ msgstr "পাচফ্ৰেইছ" #~ msgid "%s is online." #~ msgstr "%s অনলাইন আছে।" #~ msgid "%s is offline." #~ msgstr "%s অফলাইন আছে।" #~ msgid "%s is away." #~ msgstr "%s আতৰত আছে।" #~ msgid "%s is busy." #~ msgstr "%s ব্যস্ত আছে।" #~ msgid "Show time with seconds" #~ msgstr "সময়ক ছেকেণ্ডসমূহৰ সৈতে দেখুৱাওক" #~ msgid "If true, display seconds in time." #~ msgstr "যদি সত্য, ছেকেণ্ডসমূহ সময়ত দেখুৱাওক।" #~ msgid "Show date in clock" #~ msgstr "ঘড়িত তাৰিখ দেখুৱাওক" #~ msgid "If true, display date in the clock, in addition to time." #~ msgstr "যদি সত্য, ঘড়িত তাৰিখ প্ৰদৰ্শন কৰক, সময়ৰ অতিৰিক্তভাৱে।" #~ msgid "CONTACTS" #~ msgstr "CONTACTS" #~ msgid "%a %b %e, %R:%S" #~ msgstr "%a %b %e, %R:%S" #~ msgid "%a %b %e, %R" #~ msgstr "%a %b %e, %R" #~ msgid "%a %R:%S" #~ msgstr "%a %R:%S" #~ msgid "%a %R" #~ msgstr "%a %R" #~ msgid "%a %b %e, %l:%M:%S %p" #~ msgstr "%a %b %e, %l:%M:%S %p" #~ msgid "%a %l:%M:%S %p" #~ msgstr "%a %l:%M:%S %p" #~ msgid "Wrong password, please try again" #~ msgstr "ভুল পাছৱৰ্ড। অনুগ্ৰহ কৰি পুনৰ চেষ্টা কৰক।" #~ msgid "Hidden" #~ msgstr "লুকাই থকা" #~ msgid "Power Off..." #~ msgstr "বন্ধ কৰক" #~ msgid "Online Accounts" #~ msgstr "অনলাইন একাওণ্টসমূহ" #~ msgid "Lock Screen" #~ msgstr "পৰ্দা লক কৰক" #~ msgid "Log Out..." #~ msgstr "লগ আউট কৰক..." #~ msgid "RECENT ITEMS" #~ msgstr "RECENT ITEMS" #~ msgid "Show password" #~ msgstr "পাছৱৰ্ড দেখুৱাওক" #~ msgid "%s has finished starting" #~ msgstr "%s এ আৰম্ভ কৰা সমাপ্ত কৰিছে" #~ msgid "Home Folder" #~ msgstr "ঘৰ ফোল্ডাৰ" 0707010000021C000081A40000000000000000000000016712993F0000B0BD000000000000000000000000000000000000001B00000000gnome-shell-47.1/po/ast.po# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Xandru Armesto , 2011. msgid "" msgstr "" "Project-Id-Version: gnome-shell\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "shell&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2011-09-30 18:14+0000\n" "PO-Revision-Date: 2011-09-30 20:56+0200\n" "Last-Translator: Xandru Armesto \n" "Language-Team: Softastur \n" "Language: ast\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: Virtaal 0.5.2\n" "X-Poedit-Language: asturian\n" #: ../data/gnome-shell.desktop.in.in.h:1 msgid "GNOME Shell" msgstr "GNOME Shell" #: ../data/gnome-shell.desktop.in.in.h:2 msgid "Window management and application launching" msgstr "Xestión de ventanes y aniciu d'aplicaciones" #: ../data/org.gnome.shell.gschema.xml.in.h:1 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Permitir acceder a les ferramientes internes de depuración y monitorización " "usando'l diálogu Alt+F2" #: ../data/org.gnome.shell.gschema.xml.in.h:2 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" "Activar les ferramientes internes, útiles pa desendolcadores y probadores, " "dende Alt+F2" #: ../data/org.gnome.shell.gschema.xml.in.h:3 msgid "File extension used for storing the screencast" msgstr "Estensión de ficheru qu'usar p'almacenar los «screencast»" #: ../data/org.gnome.shell.gschema.xml.in.h:4 msgid "Framerate used for recording screencasts." msgstr "Tasa de fotogrames usada pa grabar «screencast»." #: ../data/org.gnome.shell.gschema.xml.in.h:5 msgid "" "GNOME Shell extensions have a uuid property; this key lists extensions which " "should be loaded. disabled-extensions overrides this setting for extensions " "that appear in both lists." msgstr "" "Les estensiones de GNOME Shell tienen una propiedá uuid; esta contraseña " "llista les estensiones que nun se deben cargar. «disabled-extensions» " "sobrescribe esti axuste pa les estensiones qu'aparecen en dambes llistes." #: ../data/org.gnome.shell.gschema.xml.in.h:6 msgid "History for command (Alt-F2) dialog" msgstr "Históricu del diálogu de comandos (Alt+F2)" #: ../data/org.gnome.shell.gschema.xml.in.h:7 msgid "History for the looking glass dialog" msgstr "Históricu del diálogu de «looking glass»" #: ../data/org.gnome.shell.gschema.xml.in.h:8 msgid "If true, display date in the clock, in addition to time." msgstr "Si ye cierta, amuesa la data nel reló, arriendes de la hora." #: ../data/org.gnome.shell.gschema.xml.in.h:9 msgid "If true, display seconds in time." msgstr "Si ye cierta, amuesa los segundos na hora." #: ../data/org.gnome.shell.gschema.xml.in.h:10 msgid "If true, display the ISO week date in the calendar." msgstr "Si ye cierta, amuesa la data de selmana ISO nel calendariu." #: ../data/org.gnome.shell.gschema.xml.in.h:11 msgid "List of desktop file IDs for favorite applications" msgstr "Llista de ID de ficheros d'escritoriu pa les aplicaciones favorites" #: ../data/org.gnome.shell.gschema.xml.in.h:13 #, no-c-format msgid "" "Sets the GStreamer pipeline used to encode recordings. It follows the syntax " "used for gst-launch. The pipeline should have an unconnected sink pad where " "the recorded video is recorded. It will normally have a unconnected source " "pad; output from that pad will be written into the output file. However the " "pipeline can also take care of its own output - this might be used to send " "the output to an icecast server via shout2send or similar. When unset or set " "to an empty value, the default pipeline will be used. This is currently " "'videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux' and " "records to WEBM using the VP8 codec. %T is used as a placeholder for a guess " "at the optimal thread count on the system." msgstr "" "Afita la tubería GStreamer usada pa codificar grabaciones. Sigue la sintaxis " "usada pa gst-launch. La tubería tendría tener un sumideru («sink») " "d'ensamblaxe/desensamblaxe au'l videu que se ta grabando, se graba. " "Xeneralmente tendrá un orixe d'ensambláu/desensambláu; la salida d'esi puntu " "escribiráse nel ficheru de salida. Sicasí, la tubería tamién pue tomar " "parte na so propia salida; esto pue usase pa unviar la salida a un sirvidor " "«icecast» a traviés de shout2send o similar. Cuando nun ta afitáu o lo ta a " "un valor baleru, va usase la tubería predeterminada. Anguaño te «videorate ! " "vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux» y graba en WEBM " "usando'l códec VP8. Úsase %T como suposición pal númberu de filos óptimos " "nel sistema." #: ../data/org.gnome.shell.gschema.xml.in.h:14 msgid "Show date in clock" msgstr "Amosar la data nel reló" #: ../data/org.gnome.shell.gschema.xml.in.h:15 msgid "Show the week date in the calendar" msgstr "Amosar la data de la selmana nel calendariu" #: ../data/org.gnome.shell.gschema.xml.in.h:16 msgid "Show time with seconds" msgstr "Amosar la hora con segundos" #: ../data/org.gnome.shell.gschema.xml.in.h:17 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" "Les aplicaciones correspondientes con esos identificadores van amosase nel " "área de favoritos." #: ../data/org.gnome.shell.gschema.xml.in.h:18 msgid "" "The filename for recorded screencasts will be a unique filename based on the " "current date, and use this extension. It should be changed when recording to " "a different container format." msgstr "" "El nome de ficheru pa los «screencast» sedrá un nome de ficheru únicu basáu " "na data actual y usará esta estensión. Tendría de camudase al grabar n'otru " "formatu contenedor distintu." #: ../data/org.gnome.shell.gschema.xml.in.h:19 msgid "" "The framerate of the resulting screencast recordered by GNOME Shell's " "screencast recorder in frames-per-second." msgstr "" "La tasa de fotogrames de la grabación resultante grabada pol grabador de " "«screencast» de GNOME Shell, en fotogrames per segundu." #: ../data/org.gnome.shell.gschema.xml.in.h:20 msgid "The gstreamer pipeline used to encode the screencast" msgstr "La tubería de gstreamer usada pa codificar el «screencast»" #: ../data/org.gnome.shell.gschema.xml.in.h:21 msgid "" "The shell normally monitors active applications in order to present the most " "used ones (e.g. in launchers). While this data will be kept private, you may " "want to disable this for privacy reasons. Please note that doing so won't " "remove already saved data." msgstr "" "La «shell» normalmente monitoriza toles aplicaciones actives pa presentar " "les más usaes (ex. nos lanzadores). Magar qu'estos datos se caltienen de " "forma privada, pues querer desactivalo por razones de privacidá. Nota que " "faciéndolo nun desanicies los datos yá guardaos." #: ../data/org.gnome.shell.gschema.xml.in.h:22 msgid "The type of keyboard to use." msgstr "La triba de tecláu qu'usar." #: ../data/org.gnome.shell.gschema.xml.in.h:23 msgid "Uuids of extensions to enable" msgstr "Uuid de les estensiones qu'activar" #: ../data/org.gnome.shell.gschema.xml.in.h:24 msgid "Whether to collect stats about applications usage" msgstr "" "Indica si hai de recolectar estadístiques tocante al usu de les aplicaciones" #: ../data/org.gnome.shell.gschema.xml.in.h:25 msgid "Which keyboard to use" msgstr "Qué tecláu usar" #: ../data/org.gnome.shell.gschema.xml.in.h:26 msgid "disabled OpenSearch providers" msgstr "fornidores OpenSearch desactivaos" #: ../js/gdm/loginDialog.js:617 msgid "Session..." msgstr "Sesión…" #: ../js/gdm/loginDialog.js:785 msgctxt "title" msgid "Sign In" msgstr "Entamar sesión" #. translators: this message is shown below the password entry field #. to indicate the user can swipe their finger instead #: ../js/gdm/loginDialog.js:830 msgid "(or swipe finger)" msgstr "(o pasa'l deu)" #: ../js/gdm/loginDialog.js:848 msgid "Not listed?" msgstr "¿Nun ta llistáu?" #: ../js/gdm/loginDialog.js:1004 ../js/ui/endSessionDialog.js:426 #: ../js/ui/extensionSystem.js:477 ../js/ui/networkAgent.js:165 #: ../js/ui/polkitAuthenticationAgent.js:171 ../js/ui/status/bluetooth.js:480 msgid "Cancel" msgstr "Encaboxar" #: ../js/gdm/loginDialog.js:1009 msgctxt "button" msgid "Sign In" msgstr "Entamar sesión" #: ../js/gdm/loginDialog.js:1358 msgid "Login Window" msgstr "Ventana d'aniciu de sesión" #: ../js/gdm/powerMenu.js:116 ../js/ui/userMenu.js:514 #: ../js/ui/userMenu.js:516 ../js/ui/userMenu.js:585 msgid "Suspend" msgstr "Suspender" #: ../js/gdm/powerMenu.js:121 ../js/ui/endSessionDialog.js:89 #: ../js/ui/endSessionDialog.js:97 ../js/ui/endSessionDialog.js:106 msgid "Restart" msgstr "Reaniciar" #: ../js/gdm/powerMenu.js:126 ../js/ui/endSessionDialog.js:80 #: ../js/ui/endSessionDialog.js:91 msgid "Power Off" msgstr "Apagar" #: ../js/misc/util.js:92 msgid "Command not found" msgstr "Comandu non alcontráu" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: ../js/misc/util.js:119 msgid "Could not parse command:" msgstr "Nun pudo analizase'l comandu:" #: ../js/misc/util.js:127 #, c-format msgid "Execution of '%s' failed:" msgstr "Falló la execución de «%s»:" #. Translators: Filter to display all applications #: ../js/ui/appDisplay.js:255 msgid "All" msgstr "Toes" #: ../js/ui/appDisplay.js:319 msgid "APPLICATIONS" msgstr "APLICACIONES" #: ../js/ui/appDisplay.js:377 msgid "SETTINGS" msgstr "CONFIGURACIÓN" #: ../js/ui/appDisplay.js:684 msgid "New Window" msgstr "Ventana nueva" #: ../js/ui/appDisplay.js:687 msgid "Remove from Favorites" msgstr "Quitar de los favoritos" #: ../js/ui/appDisplay.js:688 msgid "Add to Favorites" msgstr "Amestar a los favoritos" #: ../js/ui/appFavorites.js:89 #, c-format msgid "%s has been added to your favorites." msgstr "Amestóse %s a los favoritos." #: ../js/ui/appFavorites.js:120 #, c-format msgid "%s has been removed from your favorites." msgstr "Desanicióse %s de los favoritos." #: ../js/ui/autorunManager.js:280 msgid "Removable Devices" msgstr "Preseos extraíbles" #: ../js/ui/autorunManager.js:590 #, c-format msgid "Open with %s" msgstr "Abrir con %s" #: ../js/ui/autorunManager.js:616 msgid "Eject" msgstr "Espulsar" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: ../js/ui/calendar.js:63 msgctxt "event list time" msgid "All Day" msgstr "Tol día" #. Translators: Shown in calendar event list, if 24h format #: ../js/ui/calendar.js:68 msgctxt "event list time" msgid "%H:%M" msgstr "%H:%M" #. Transators: Shown in calendar event list, if 12h format #: ../js/ui/calendar.js:75 msgctxt "event list time" msgid "%l:%M %p" msgstr "%l:%M %p" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: ../js/ui/calendar.js:115 msgctxt "grid sunday" msgid "S" msgstr "D" #. Translators: Calendar grid abbreviation for Monday #: ../js/ui/calendar.js:117 msgctxt "grid monday" msgid "M" msgstr "L" #. Translators: Calendar grid abbreviation for Tuesday #: ../js/ui/calendar.js:119 msgctxt "grid tuesday" msgid "T" msgstr "M" #. Translators: Calendar grid abbreviation for Wednesday #: ../js/ui/calendar.js:121 msgctxt "grid wednesday" msgid "W" msgstr "m" #. Translators: Calendar grid abbreviation for Thursday #: ../js/ui/calendar.js:123 msgctxt "grid thursday" msgid "T" msgstr "X" #. Translators: Calendar grid abbreviation for Friday #: ../js/ui/calendar.js:125 msgctxt "grid friday" msgid "F" msgstr "V" #. Translators: Calendar grid abbreviation for Saturday #: ../js/ui/calendar.js:127 msgctxt "grid saturday" msgid "S" msgstr "S" #. Translators: Event list abbreviation for Sunday. #. * #. * NOTE: These list abbreviations are normally not shown together #. * so they need to be unique (e.g. Tuesday and Thursday cannot #. * both be 'T'). #. #: ../js/ui/calendar.js:140 msgctxt "list sunday" msgid "Su" msgstr "Dom" #. Translators: Event list abbreviation for Monday #: ../js/ui/calendar.js:142 msgctxt "list monday" msgid "M" msgstr "Llu" #. Translators: Event list abbreviation for Tuesday #: ../js/ui/calendar.js:144 msgctxt "list tuesday" msgid "T" msgstr "Mar" #. Translators: Event list abbreviation for Wednesday #: ../js/ui/calendar.js:146 msgctxt "list wednesday" msgid "W" msgstr "Mié" #. Translators: Event list abbreviation for Thursday #: ../js/ui/calendar.js:148 msgctxt "list thursday" msgid "Th" msgstr "Xue" #. Translators: Event list abbreviation for Friday #: ../js/ui/calendar.js:150 msgctxt "list friday" msgid "F" msgstr "Vie" #. Translators: Event list abbreviation for Saturday #: ../js/ui/calendar.js:152 msgctxt "list saturday" msgid "S" msgstr "Sáb" #. Translators: Text to show if there are no events #: ../js/ui/calendar.js:687 msgid "Nothing Scheduled" msgstr "Res programáu" #. Translators: Shown on calendar heading when selected day occurs on current year #: ../js/ui/calendar.js:703 msgctxt "calendar heading" msgid "%A, %B %d" msgstr "%A, %d de %B" #. Translators: Shown on calendar heading when selected day occurs on different year #: ../js/ui/calendar.js:706 msgctxt "calendar heading" msgid "%A, %B %d, %Y" msgstr "%A, %d de %B de %Y" #: ../js/ui/calendar.js:716 msgid "Today" msgstr "Güei" #: ../js/ui/calendar.js:720 msgid "Tomorrow" msgstr "Mañana" #: ../js/ui/calendar.js:729 msgid "This week" msgstr "Esta selmana" #: ../js/ui/calendar.js:737 msgid "Next week" msgstr "La selmana que vien" #: ../js/ui/contactDisplay.js:59 ../js/ui/notificationDaemon.js:444 #: ../js/ui/status/power.js:223 ../src/shell-app.c:355 msgid "Unknown" msgstr "Desconocíu" #: ../js/ui/contactDisplay.js:80 ../js/ui/userMenu.js:139 msgid "Available" msgstr "Disponible" #: ../js/ui/contactDisplay.js:85 ../js/ui/userMenu.js:148 msgid "Away" msgstr "Ausente" #: ../js/ui/contactDisplay.js:89 ../js/ui/userMenu.js:142 msgid "Busy" msgstr "Ocupáu" #: ../js/ui/contactDisplay.js:93 msgid "Offline" msgstr "Desconeutáu" #: ../js/ui/contactDisplay.js:140 msgid "CONTACTS" msgstr "CONTAUTOS" #: ../js/ui/dash.js:172 ../js/ui/messageTray.js:1204 msgid "Remove" msgstr "Desaniciar" #: ../js/ui/dateMenu.js:99 msgid "Date and Time Settings" msgstr "Axustes d'hora y data" #: ../js/ui/dateMenu.js:125 msgid "Open Calendar" msgstr "Abrir calendariu" #. Translators: This is the time format with date used #. in 24-hour mode. #: ../js/ui/dateMenu.js:183 msgid "%a %b %e, %R:%S" msgstr "%a %e de %b, %R:%S" #: ../js/ui/dateMenu.js:184 msgid "%a %b %e, %R" msgstr "%a %e de %b, %R" #. Translators: This is the time format without date used #. in 24-hour mode. #: ../js/ui/dateMenu.js:188 msgid "%a %R:%S" msgstr "%a %R:%S" #: ../js/ui/dateMenu.js:189 msgid "%a %R" msgstr "%a %R" #. Translators: This is a time format with date used #. for AM/PM. #: ../js/ui/dateMenu.js:196 msgid "%a %b %e, %l:%M:%S %p" msgstr "%a %e de %b, %l:%M:%S %p" #: ../js/ui/dateMenu.js:197 msgid "%a %b %e, %l:%M %p" msgstr "%a %e de %b, %l:%M %p" #. Translators: This is a time format without date used #. for AM/PM. #: ../js/ui/dateMenu.js:201 msgid "%a %l:%M:%S %p" msgstr "%a %l:%M:%S %p" #: ../js/ui/dateMenu.js:202 msgid "%a %l:%M %p" msgstr "%a %l:%M %p" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM"). #. #: ../js/ui/dateMenu.js:213 msgid "%A %B %e, %Y" msgstr "%A, %e de %B de %Y" #: ../js/ui/docDisplay.js:16 msgid "RECENT ITEMS" msgstr "ELEMENTOS RECIENTES" #: ../js/ui/endSessionDialog.js:60 #, c-format msgid "Log Out %s" msgstr "Zarrar la sesión %s" #: ../js/ui/endSessionDialog.js:61 ../js/ui/endSessionDialog.js:75 msgid "Log Out" msgstr "Zarrar la sesión" #: ../js/ui/endSessionDialog.js:62 msgid "Click Log Out to quit these applications and log out of the system." msgstr "" "Calca «Zarrar la sesión» pa colar d'eses aplicaciones y zarrar la sesión del " "sistema." #: ../js/ui/endSessionDialog.js:64 #, c-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "va zarrase automáticamente la sesión de %s en %d segundu." msgstr[1] "va zarrase automáticamente la sesión de %s en %d segundos." #: ../js/ui/endSessionDialog.js:69 #, c-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "La sesión va zarrase automáticamente en %d segundu." msgstr[1] "La sesión va zarrase automáticamente en %d segundos." #: ../js/ui/endSessionDialog.js:73 msgid "Logging out of the system." msgstr "Zarrando la sesión." #: ../js/ui/endSessionDialog.js:81 msgid "Click Power Off to quit these applications and power off the system." msgstr "Calca «Apagar» pa colar d'eses aplicaciones y apagar el sistema." #: ../js/ui/endSessionDialog.js:83 #, c-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "El sistema va apagase automáticamente en %d segundu." msgstr[1] "El sistema va apagase automáticamente en %d segundos." #: ../js/ui/endSessionDialog.js:87 msgid "Powering off the system." msgstr "Apagando'l sistema." #: ../js/ui/endSessionDialog.js:98 msgid "Click Restart to quit these applications and restart the system." msgstr "Calca «Reaniciar» pa colar d'eses aplicaciones y reaniciar el sistema." #: ../js/ui/endSessionDialog.js:100 #, c-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "El sistema va reaniciase automáticamente en %d segundu." msgstr[1] "El sistema va reaniciase automáticamente en %d segundos." #: ../js/ui/endSessionDialog.js:104 msgid "Restarting the system." msgstr "Reaniciando'l sistema." #: ../js/ui/extensionSystem.js:481 msgid "Install" msgstr "Instalar" #: ../js/ui/extensionSystem.js:485 #, c-format msgid "Download and install '%s' from extensions.gnome.org?" msgstr "¿Baxar ya instalar «%s» dende extensions.gnome.org?" #: ../js/ui/keyboard.js:529 ../js/ui/status/power.js:211 msgid "Keyboard" msgstr "Tecláu" #: ../js/ui/lookingGlass.js:645 msgid "No extensions installed" msgstr "Nun hai estensiones instalaes" #. Translators: argument is an extension UUID. #: ../js/ui/lookingGlass.js:700 #, c-format msgid "%s has not emitted any errors." msgstr "%s nun emitió error nengún." #: ../js/ui/lookingGlass.js:706 msgid "Hide Errors" msgstr "Anubrir Errores" #: ../js/ui/lookingGlass.js:710 ../js/ui/lookingGlass.js:760 msgid "Show Errors" msgstr "Amosar Errores" #: ../js/ui/lookingGlass.js:719 msgid "Enabled" msgstr "Activáu" #. translators: #. * The device has been disabled #: ../js/ui/lookingGlass.js:721 ../src/gvc/gvc-mixer-control.c:1093 msgid "Disabled" msgstr "Desactiváu" #: ../js/ui/lookingGlass.js:723 msgid "Error" msgstr "Fallu" #: ../js/ui/lookingGlass.js:725 msgid "Out of date" msgstr "Caducáu" #: ../js/ui/lookingGlass.js:727 msgid "Downloading" msgstr "Descargando" #: ../js/ui/lookingGlass.js:748 msgid "View Source" msgstr "Ver fonte" #: ../js/ui/lookingGlass.js:754 msgid "Web Page" msgstr "Páxina web" #: ../js/ui/messageTray.js:1197 msgid "Open" msgstr "Abrir" #: ../js/ui/messageTray.js:2406 msgid "System Information" msgstr "Información del sistema" #: ../js/ui/networkAgent.js:145 msgid "Show password" msgstr "Amosar contraseña" #: ../js/ui/networkAgent.js:160 msgid "Connect" msgstr "Coneutar" #. Cisco LEAP #: ../js/ui/networkAgent.js:255 ../js/ui/networkAgent.js:267 #: ../js/ui/networkAgent.js:294 ../js/ui/networkAgent.js:314 #: ../js/ui/networkAgent.js:324 msgid "Password: " msgstr "Contraseña: " #. static WEP #: ../js/ui/networkAgent.js:260 msgid "Key: " msgstr "Contraseña:" #. TTLS and PEAP are actually much more complicated, but this complication #. is not visible here since we only care about phase2 authentication #. (and don't even care of which one) #: ../js/ui/networkAgent.js:292 ../js/ui/networkAgent.js:310 msgid "Username: " msgstr "Nome d'usuariu:" #: ../js/ui/networkAgent.js:298 msgid "Identity: " msgstr "Identidá:" #: ../js/ui/networkAgent.js:300 msgid "Private key password: " msgstr "Clave de la contraseña privada:" #: ../js/ui/networkAgent.js:312 msgid "Service: " msgstr "Serviciu:" #: ../js/ui/networkAgent.js:341 msgid "Authentication required by wireless network" msgstr "La rede inalámbrica requier autenticación" #: ../js/ui/networkAgent.js:342 #, c-format msgid "" "Passwords or encryption keys are required to access the wireless network '%" "s'." msgstr "" "Necesítense contraseñes o claves de cifráu p'acceder a la rede inalámbrica «" "%s»." #: ../js/ui/networkAgent.js:346 msgid "Wired 802.1X authentication" msgstr "Autenticación 802.1X cableada" #: ../js/ui/networkAgent.js:348 msgid "Network name: " msgstr "Nome de la rede" #: ../js/ui/networkAgent.js:353 msgid "DSL authentication" msgstr "Autenticación DSL" #: ../js/ui/networkAgent.js:360 msgid "PIN code required" msgstr "Códigu PIN requeríu" #: ../js/ui/networkAgent.js:361 msgid "PIN code is needed for the mobile broadband device" msgstr "Necesítase un códigu PIN pal preséu de banda ancha móvil" #: ../js/ui/networkAgent.js:362 msgid "PIN: " msgstr "PIN: " #: ../js/ui/networkAgent.js:368 msgid "Mobile broadband network password" msgstr "Contraseña de la rede de banda ancha móvil" #: ../js/ui/networkAgent.js:369 #, c-format msgid "A password is required to connect to '%s'." msgstr "Requierse una contraseña pa coneutar a «%s»." #: ../js/ui/overview.js:91 msgid "Undo" msgstr "Desfacer" #: ../js/ui/overview.js:205 msgid "Windows" msgstr "Ventanes" #: ../js/ui/overview.js:208 msgid "Applications" msgstr "Aplicaciones" #. Translators: this is the name of the dock/favorites area on #. the left of the overview #: ../js/ui/overview.js:230 msgid "Dash" msgstr "Tableru" #. TODO - _quit() doesn't really work on apps in state STARTING yet #: ../js/ui/panel.js:539 #, c-format msgid "Quit %s" msgstr "Colar de %s" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: ../js/ui/panel.js:575 msgid "Activities" msgstr "Actividaes" #: ../js/ui/panel.js:967 msgid "Top Bar" msgstr "Barra superior" #: ../js/ui/placeDisplay.js:120 #, c-format msgid "Failed to unmount '%s'" msgstr "Falló al desmontar «%s»" #: ../js/ui/placeDisplay.js:123 msgid "Retry" msgstr "Reintentar" #: ../js/ui/placeDisplay.js:163 msgid "Connect to..." msgstr "Coneutar a…" #: ../js/ui/placeDisplay.js:375 msgid "PLACES & DEVICES" msgstr "LLUGARES Y PRESEOS" #: ../js/ui/polkitAuthenticationAgent.js:72 msgid "Authentication Required" msgstr "Necesítase autenticación" #: ../js/ui/polkitAuthenticationAgent.js:106 msgid "Administrator" msgstr "Alministrador" #: ../js/ui/polkitAuthenticationAgent.js:175 msgid "Authenticate" msgstr "Autenticar" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: ../js/ui/polkitAuthenticationAgent.js:256 msgid "Sorry, that didn't work. Please try again." msgstr "Inténtalo de nueves," #: ../js/ui/polkitAuthenticationAgent.js:268 msgid "Password:" msgstr "Contraseña:" #. Translators: this MUST be either "toggle-switch-us" #. (for toggle switches containing the English words #. "ON" and "OFF") or "toggle-switch-intl" (for toggle #. switches containing "◯" and "|"). Other values will #. simply result in invisible toggle switches. #: ../js/ui/popupMenu.js:731 msgid "toggle-switch-us" msgstr "toggle-switch-intl" #: ../js/ui/runDialog.js:208 msgid "Please enter a command:" msgstr "Introduz un comandu:" #: ../js/ui/searchDisplay.js:340 msgid "Searching..." msgstr "Guetando…" #: ../js/ui/searchDisplay.js:363 msgid "No matching results." msgstr "Nun s'atopó dengún resultáu coincidente." #: ../js/ui/shellMountOperation.js:285 msgid "Wrong password, please try again" msgstr "Contraseña incorreuta; inténtalo de nueves" #: ../js/ui/status/accessibility.js:60 msgid "Zoom" msgstr "Ampliación" #. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA, #. 'screen-reader-enabled'); #. this.menu.addMenuItem(screenReader); #: ../js/ui/status/accessibility.js:71 msgid "Screen Keyboard" msgstr "Tecláu en pantalla" #: ../js/ui/status/accessibility.js:75 msgid "Visual Alerts" msgstr "Alertes visuales" #: ../js/ui/status/accessibility.js:78 msgid "Sticky Keys" msgstr "Tecles persistentes" #: ../js/ui/status/accessibility.js:81 msgid "Slow Keys" msgstr "Tecles lentes" #: ../js/ui/status/accessibility.js:84 msgid "Bounce Keys" msgstr "Refugu de tecles" #: ../js/ui/status/accessibility.js:87 msgid "Mouse Keys" msgstr "Tecles del mur" #: ../js/ui/status/accessibility.js:91 msgid "Universal Access Settings" msgstr "Configuración del accesu universal" #: ../js/ui/status/accessibility.js:141 msgid "High Contrast" msgstr "Contraste altu" #: ../js/ui/status/accessibility.js:178 msgid "Large Text" msgstr "Testu grande" #: ../js/ui/status/bluetooth.js:39 ../js/ui/status/bluetooth.js:261 #: ../js/ui/status/bluetooth.js:347 ../js/ui/status/bluetooth.js:381 #: ../js/ui/status/bluetooth.js:421 ../js/ui/status/bluetooth.js:454 msgid "Bluetooth" msgstr "Bluetooth" #: ../js/ui/status/bluetooth.js:52 msgid "Visibility" msgstr "Visibilidá" #: ../js/ui/status/bluetooth.js:66 msgid "Send Files to Device..." msgstr "Unviar ficheros al preséu…" #: ../js/ui/status/bluetooth.js:67 msgid "Set up a New Device..." msgstr "Configurar un preséu nuevu…" #: ../js/ui/status/bluetooth.js:91 msgid "Bluetooth Settings" msgstr "Configuración de Bluetooth" #. TRANSLATORS: this means that bluetooth was disabled by hardware rfkill #: ../js/ui/status/bluetooth.js:111 msgid "hardware disabled" msgstr "hardware desactiváu" #: ../js/ui/status/bluetooth.js:208 msgid "Connection" msgstr "Conexón" #: ../js/ui/status/bluetooth.js:217 ../js/ui/status/network.js:486 msgid "disconnecting..." msgstr "desconeutando…" #: ../js/ui/status/bluetooth.js:230 ../js/ui/status/network.js:492 msgid "connecting..." msgstr "coneutando…" #: ../js/ui/status/bluetooth.js:248 msgid "Send Files..." msgstr "Unviar ficheros…" #: ../js/ui/status/bluetooth.js:253 msgid "Browse Files..." msgstr "Desaminar ficheros…" #: ../js/ui/status/bluetooth.js:262 msgid "Error browsing device" msgstr "Fallu al desaminar el preséu" #: ../js/ui/status/bluetooth.js:263 #, c-format msgid "The requested device cannot be browsed, error is '%s'" msgstr "Nun se pue desaminar el preséu solicitáu, el fallu ye «%s»" #: ../js/ui/status/bluetooth.js:271 msgid "Keyboard Settings" msgstr "Configuración del tecláu" #: ../js/ui/status/bluetooth.js:274 msgid "Mouse Settings" msgstr "Axustes del mur…" #: ../js/ui/status/bluetooth.js:279 ../js/ui/status/volume.js:62 msgid "Sound Settings" msgstr "Configuración del soníu" #: ../js/ui/status/bluetooth.js:382 #, c-format msgid "Authorization request from %s" msgstr "Solicitú d'autorización de %s" #: ../js/ui/status/bluetooth.js:388 #, c-format msgid "Device %s wants access to the service '%s'" msgstr "El preséu %s quier acceder al serviciu «%s»" #: ../js/ui/status/bluetooth.js:390 msgid "Always grant access" msgstr "Conceder accesu siempre" #: ../js/ui/status/bluetooth.js:391 msgid "Grant this time only" msgstr "Conceder namái esta vegada" #: ../js/ui/status/bluetooth.js:392 ../js/ui/telepathyClient.js:1200 msgid "Reject" msgstr "Refugar" #: ../js/ui/status/bluetooth.js:422 #, c-format msgid "Pairing confirmation for %s" msgstr "Confirmación d'emparexamientu pa «%s»" #: ../js/ui/status/bluetooth.js:428 ../js/ui/status/bluetooth.js:462 #, c-format msgid "Device %s wants to pair with this computer" msgstr "El preséu «%s» quier emparexase con esti equipu" #: ../js/ui/status/bluetooth.js:429 #, c-format msgid "Please confirm whether the PIN '%s' matches the one on the device." msgstr "Confirma que'l PIN amosáu en «%s» concasa col del preséu." #: ../js/ui/status/bluetooth.js:431 msgid "Matches" msgstr "Concasa" #: ../js/ui/status/bluetooth.js:432 msgid "Does not match" msgstr "Nun concasa" #: ../js/ui/status/bluetooth.js:455 #, c-format msgid "Pairing request for %s" msgstr "Solicitú d'emparexamientu pa «%s»" #: ../js/ui/status/bluetooth.js:463 msgid "Please enter the PIN mentioned on the device." msgstr "Introduz el PIN mencionáu nel preséu." #: ../js/ui/status/bluetooth.js:479 msgid "OK" msgstr "Aceutar" #: ../js/ui/status/keyboard.js:73 msgid "Show Keyboard Layout" msgstr "Amosar la distribución del tecláu" #: ../js/ui/status/keyboard.js:78 msgid "Region and Language Settings" msgstr "Configuración de rexón y llingua" #: ../js/ui/status/network.js:97 msgid "" msgstr "" #. Translators: this indicates that wireless or wwan is disabled by hardware killswitch #: ../js/ui/status/network.js:285 msgid "disabled" msgstr "desactivada" #. Translators: this is for network devices that are physically present but are not #. under NetworkManager's control (and thus cannot be used in the menu) #: ../js/ui/status/network.js:484 msgid "unmanaged" msgstr "non xestionada" #. Translators: this is for network connections that require some kind of key or password #: ../js/ui/status/network.js:495 msgid "authentication required" msgstr "necesítase autenticación" #. Translators: this is for devices that require some kind of firmware or kernel #. module, which is missing #: ../js/ui/status/network.js:505 msgid "firmware missing" msgstr "falta'l «firmware»" #. Translators: this is for wired network devices that are physically disconnected #: ../js/ui/status/network.js:512 msgid "cable unplugged" msgstr "cable desconeutáu" #. Translators: this is for a network device that cannot be activated (for example it #. is disabled by rfkill, or it has no coverage #: ../js/ui/status/network.js:517 msgid "unavailable" msgstr "non disponible" #: ../js/ui/status/network.js:519 msgid "connection failed" msgstr "falló la conexón" #: ../js/ui/status/network.js:575 ../js/ui/status/network.js:1523 msgid "More..." msgstr "Más…" #. TRANSLATORS: this is the indication that a connection for another logged in user is active, #. and we cannot access its settings (including the name) #: ../js/ui/status/network.js:611 ../js/ui/status/network.js:1458 msgid "Connected (private)" msgstr "Coneutada (privada)" #: ../js/ui/status/network.js:689 msgid "Auto Ethernet" msgstr "Ethernet automática" #: ../js/ui/status/network.js:753 msgid "Auto broadband" msgstr "Banda ancha automática" #: ../js/ui/status/network.js:756 msgid "Auto dial-up" msgstr "Marcáu automáticu" #. TRANSLATORS: this the automatic wireless connection name (including the network name) #: ../js/ui/status/network.js:878 ../js/ui/status/network.js:1470 #, c-format msgid "Auto %s" msgstr "%s automática" #: ../js/ui/status/network.js:880 msgid "Auto bluetooth" msgstr "Bluetooth automáticu" #: ../js/ui/status/network.js:1472 msgid "Auto wireless" msgstr "Inalámbrica automática" #: ../js/ui/status/network.js:1566 msgid "Enable networking" msgstr "Activar rede" #: ../js/ui/status/network.js:1578 msgid "Wired" msgstr "Cableada" #: ../js/ui/status/network.js:1589 msgid "Wireless" msgstr "Inalámbrica" #: ../js/ui/status/network.js:1599 msgid "Mobile broadband" msgstr "Banda ancha móvil" #: ../js/ui/status/network.js:1609 msgid "VPN Connections" msgstr "Conexones VPN" #: ../js/ui/status/network.js:1620 msgid "Network Settings" msgstr "Configuración de la rede" #: ../js/ui/status/network.js:1757 msgid "Connection failed" msgstr "Falló la conexón" #: ../js/ui/status/network.js:1758 msgid "Activation of network connection failed" msgstr "Falló l'activación de la conexón de rede" #: ../js/ui/status/network.js:2008 msgid "Networking is disabled" msgstr "La rede ta desactivada" #: ../js/ui/status/network.js:2133 msgid "Network Manager" msgstr "Xestor de la rede" #: ../js/ui/status/power.js:82 msgid "Power Settings" msgstr "Configuración d'enerxía" #. 0 is reported when UPower does not have enough data #. to estimate battery life #: ../js/ui/status/power.js:103 msgid "Estimating..." msgstr "Estimando…" #: ../js/ui/status/power.js:110 #, c-format msgid "%d hour remaining" msgid_plural "%d hours remaining" msgstr[0] "Queda %d hora" msgstr[1] "Queden %d hores" #. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining" #: ../js/ui/status/power.js:113 #, c-format msgid "%d %s %d %s remaining" msgstr "Queden %d %s %d %s" #: ../js/ui/status/power.js:115 msgid "hour" msgid_plural "hours" msgstr[0] "hora" msgstr[1] "hores" #: ../js/ui/status/power.js:115 msgid "minute" msgid_plural "minutes" msgstr[0] "minutu" msgstr[1] "minutos" #: ../js/ui/status/power.js:118 #, c-format msgid "%d minute remaining" msgid_plural "%d minutes remaining" msgstr[0] "Queda %d minutu" msgstr[1] "Queden %d minutos" #: ../js/ui/status/power.js:121 ../js/ui/status/power.js:194 #, c-format msgctxt "percent of battery remaining" msgid "%d%%" msgstr "%d%%" #: ../js/ui/status/power.js:201 msgid "AC adapter" msgstr "Adautador de corriente" #: ../js/ui/status/power.js:203 msgid "Laptop battery" msgstr "Batería del portátil" #: ../js/ui/status/power.js:205 msgid "UPS" msgstr "SAI" #: ../js/ui/status/power.js:207 msgid "Monitor" msgstr "Monitor" #: ../js/ui/status/power.js:209 msgid "Mouse" msgstr "Mur" #: ../js/ui/status/power.js:213 msgid "PDA" msgstr "PDA" #: ../js/ui/status/power.js:215 msgid "Cell phone" msgstr "Teléfonu móvil" #: ../js/ui/status/power.js:217 msgid "Media player" msgstr "Reproductor multimedia" #: ../js/ui/status/power.js:219 msgid "Tablet" msgstr "Tableta" #: ../js/ui/status/power.js:221 msgid "Computer" msgstr "Equipu" #: ../js/ui/status/volume.js:42 msgid "Volume" msgstr "Volume" #: ../js/ui/status/volume.js:54 msgid "Microphone" msgstr "Micrófonu" #. We got the TpContact #. FIXME: We don't have a 'chat room' icon (bgo #653737) use #. system-users for now as Empathy does. #: ../js/ui/telepathyClient.js:259 msgid "Invitation" msgstr "Invitación" #. We got the TpContact #: ../js/ui/telepathyClient.js:327 msgid "Call" msgstr "Llamar" #. We got the TpContact #: ../js/ui/telepathyClient.js:357 msgid "File Transfer" msgstr "Tresferencia de ficheros" #: ../js/ui/telepathyClient.js:438 msgid "Subscription request" msgstr "Solicitú de suscripción" #: ../js/ui/telepathyClient.js:474 msgid "Connection error" msgstr "Fally de conexón" #: ../js/ui/telepathyClient.js:737 #, c-format msgid "%s is online." msgstr "%s ta coneutáu/ada." #: ../js/ui/telepathyClient.js:742 #, c-format msgid "%s is offline." msgstr "%s ta desconeutáu/ada." #: ../js/ui/telepathyClient.js:745 #, c-format msgid "%s is away." msgstr "%s ta ausente." #: ../js/ui/telepathyClient.js:748 #, c-format msgid "%s is busy." msgstr "%s ta ocupáu/ada." #. Translators: this is a time format string followed by a date. #. If applicable, replace %X with a strftime format valid for your #. locale, without seconds. #: ../js/ui/telepathyClient.js:982 #, no-c-format msgid "Sent at %X on %A" msgstr "Unviáu el %A a les %H:%M" #. Translators: this is a time format in the style of "Wednesday, May 25", #. shown when you get a chat message in the same year. #: ../js/ui/telepathyClient.js:988 #, no-c-format msgid "Sent on %A, %B %d" msgstr "Unviáu el %A, %d de %B" #. Translators: this is a time format in the style of "Wednesday, May 25, 2012", #. shown when you get a chat message in a different year. #: ../js/ui/telepathyClient.js:993 #, no-c-format msgid "Sent on %A, %B %d, %Y" msgstr "Unviáu el %A, %d de %B de %Y" #. Translators: this is the other person changing their old IM name to their new #. IM name. #: ../js/ui/telepathyClient.js:1035 #, c-format msgid "%s is now known as %s" msgstr "Agora %s llámase %s" #. translators: argument is a room name like #. * room@jabber.org for example. #: ../js/ui/telepathyClient.js:1144 #, c-format msgid "Invitation to %s" msgstr "Invitación a %s" #. translators: first argument is the name of a contact and the second #. * one the name of a room. "Alice is inviting you to join room@jabber.org #. * for example. #: ../js/ui/telepathyClient.js:1152 #, c-format msgid "%s is inviting you to join %s" msgstr "%s ta invitándote a xunite a %s" #: ../js/ui/telepathyClient.js:1154 ../js/ui/telepathyClient.js:1243 #: ../js/ui/telepathyClient.js:1347 msgid "Decline" msgstr "Refugar" #: ../js/ui/telepathyClient.js:1155 ../js/ui/telepathyClient.js:1244 #: ../js/ui/telepathyClient.js:1348 msgid "Accept" msgstr "Aceutar" #. translators: argument is a contact name like Alice for example. #: ../js/ui/telepathyClient.js:1188 #, c-format msgid "Video call from %s" msgstr "Videullamada de %s" #. translators: argument is a contact name like Alice for example. #: ../js/ui/telepathyClient.js:1191 #, c-format msgid "Call from %s" msgstr "Llamada de %s" #: ../js/ui/telepathyClient.js:1201 msgid "Answer" msgstr "Retrucar" #. To translators: The first parameter is #. * the contact's alias and the second one is the #. * file name. The string will be something #. * like: "Alice is sending you test.ogg" #. #: ../js/ui/telepathyClient.js:1237 #, c-format msgid "%s is sending you %s" msgstr "%s ta unviándote %s" #. To translators: The parameter is the contact's alias #: ../js/ui/telepathyClient.js:1312 #, c-format msgid "%s would like permission to see when you are online" msgstr "%s solicita permisu pa ver cuándo tas en llinia" #: ../js/ui/telepathyClient.js:1410 msgid "Network error" msgstr "Fallu de la rede" #: ../js/ui/telepathyClient.js:1412 msgid "Authentication failed" msgstr "Falló l'autenticación" #: ../js/ui/telepathyClient.js:1414 msgid "Encryption error" msgstr "Fallu de cifráu" #: ../js/ui/telepathyClient.js:1416 msgid "Certificate not provided" msgstr "Certificáu non proporcionáu" #: ../js/ui/telepathyClient.js:1418 msgid "Certificate untrusted" msgstr "Nun se confía nel certificáu" #: ../js/ui/telepathyClient.js:1420 msgid "Certificate expired" msgstr "Certificáu caducáu" #: ../js/ui/telepathyClient.js:1422 msgid "Certificate not activated" msgstr "Certificáu non activáu" #: ../js/ui/telepathyClient.js:1424 msgid "Certificate hostname mismatch" msgstr "El nome del sirvidor del certificáu no concasa" #: ../js/ui/telepathyClient.js:1426 msgid "Certificate fingerprint mismatch" msgstr "La buelga del certificáu nun concasa" #: ../js/ui/telepathyClient.js:1428 msgid "Certificate self-signed" msgstr "Certificáu autofirmáu" #: ../js/ui/telepathyClient.js:1430 msgid "Status is set to offline" msgstr "L'estáu ta afitáu a «desconeutáu»" #: ../js/ui/telepathyClient.js:1432 msgid "Encryption is not available" msgstr "El cifráu nun ta disponible" #: ../js/ui/telepathyClient.js:1434 msgid "Certificate is invalid" msgstr "El certificáu nun ye válidu" #: ../js/ui/telepathyClient.js:1436 msgid "Connection has been refused" msgstr "Refugóse la conexón" #: ../js/ui/telepathyClient.js:1438 msgid "Connection can't be established" msgstr "Nun pue afitase la conexón" #: ../js/ui/telepathyClient.js:1440 msgid "Connection has been lost" msgstr "Perdióse la conexón" #: ../js/ui/telepathyClient.js:1442 msgid "This resource is already connected to the server" msgstr "Esti recursu yá ta coneutáu al sirvidor" #: ../js/ui/telepathyClient.js:1444 msgid "" "Connection has been replaced by a new connection using the same resource" msgstr "Sustituyóse la conexón por una nueva conexón usando'l mesmu recursu" #: ../js/ui/telepathyClient.js:1446 msgid "The account already exists on the server" msgstr "La cuenta yá esiste nel sirvidor" #: ../js/ui/telepathyClient.js:1448 msgid "Server is currently too busy to handle the connection" msgstr "Anguaño, el sirvidor ta mui ocupáu intentando xestionar la conexón" #: ../js/ui/telepathyClient.js:1450 msgid "Certificate has been revoked" msgstr "Revocóse'l certificáu" #: ../js/ui/telepathyClient.js:1452 msgid "" "Certificate uses an insecure cipher algorithm or is cryptographically weak" msgstr "" "El certificáu usa un algoritmu de cifráu inseguru o ye criptográficamente " "feble" #: ../js/ui/telepathyClient.js:1454 msgid "" "The length of the server certificate, or the depth of the server certificate " "chain, exceed the limits imposed by the cryptography library" msgstr "" "El llargor del certificáu del sirvidor o la profundidá de la cadena del " "certificáu del sirvidor perpasa llímites impuestos pola biblioteca de " "criptografía" #. translators: argument is the account name, like #. * name@jabber.org for example. #: ../js/ui/telepathyClient.js:1463 #, c-format msgid "Connection to %s failed" msgstr "Falló la conexón a %s" #: ../js/ui/telepathyClient.js:1472 msgid "Reconnect" msgstr "Reconeutar" #: ../js/ui/telepathyClient.js:1473 msgid "Edit account" msgstr "Editar cuenta" #: ../js/ui/telepathyClient.js:1519 msgid "Unknown reason" msgstr "Razón desconocida" #: ../js/ui/userMenu.js:145 msgid "Hidden" msgstr "Ocultu" #: ../js/ui/userMenu.js:151 msgid "Idle" msgstr "Inactivu" #: ../js/ui/userMenu.js:154 msgid "Unavailable" msgstr "Non disponible" #: ../js/ui/userMenu.js:512 ../js/ui/userMenu.js:516 ../js/ui/userMenu.js:586 msgid "Power Off..." msgstr "Apagar…" #: ../js/ui/userMenu.js:548 msgid "Notifications" msgstr "Notificaciones" #: ../js/ui/userMenu.js:556 msgid "Online Accounts" msgstr "Cuentes en llinia" #: ../js/ui/userMenu.js:560 msgid "System Settings" msgstr "Configuración del sistema" #: ../js/ui/userMenu.js:567 msgid "Lock Screen" msgstr "Bloquiar la pantalla" #: ../js/ui/userMenu.js:572 msgid "Switch User" msgstr "Camudar d'usuariu" #: ../js/ui/userMenu.js:577 msgid "Log Out..." msgstr "Zarrar la sesión…" #: ../js/ui/userMenu.js:605 msgid "Your chat status will be set to busy" msgstr "El to estáu del chat va afitase a «ocupáu»" #: ../js/ui/userMenu.js:606 msgid "" "Notifications are now disabled, including chat messages. Your online status " "has been adjusted to let others know that you might not see their messages." msgstr "" "Les notificaciones tán agora desactivaes, incluyendo los mensaxes de chat. " "El to estáu en llinia axustóse pa qu'otros sepan que nun pues lleer los sos " "mensaxes." #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: ../js/ui/viewSelector.js:120 msgid "Type to search..." msgstr "Escribi pa guetar…" #: ../js/ui/viewSelector.js:140 ../src/shell-util.c:261 msgid "Search" msgstr "Guetar" #: ../js/ui/windowAttentionHandler.js:35 #, c-format msgid "'%s' is ready" msgstr "«%s» ta preparáu" #. translators: #. * The number of sound outputs on a particular device #: ../src/gvc/gvc-mixer-control.c:1100 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u salida" msgstr[1] "%u salides" #. translators: #. * The number of sound inputs on a particular device #: ../src/gvc/gvc-mixer-control.c:1110 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u entrada" msgstr[1] "%u entraes" #: ../src/gvc/gvc-mixer-control.c:1408 msgid "System Sounds" msgstr "Soníos del sistema" #: ../src/main.c:480 msgid "Print version" msgstr "Imprentar versión" #: ../src/main.c:486 msgid "Mode used by GDM for login screen" msgstr "Mou usáu por GDM na pantalla d'aniciu" #: ../src/shell-app.c:581 #, c-format msgid "Failed to launch '%s'" msgstr "Falló al llanzar «%s»" #: ../src/shell-mobile-providers.c:80 msgid "United Kingdom" msgstr "Reinu Xuníu" #: ../src/shell-mobile-providers.c:526 msgid "Default" msgstr "Predeterminada" #: ../src/shell-polkit-authentication-agent.c:334 msgid "Authentication dialog was dismissed by the user" msgstr "L'usuariu refugó'l diálogu d'autenticación" #: ../src/shell-util.c:100 msgid "Home Folder" msgstr "Carpeta personal" #. Translators: this is the same string as the one found in #. * nautilus #: ../src/shell-util.c:115 msgid "File System" msgstr "Sistema de ficheros" #. Translators: the first string is the name of a gvfs #. * method, and the second string is a path. For #. * example, "Trash: some-directory". It means that the #. * directory called "some-directory" is in the trash. #. #: ../src/shell-util.c:311 #, c-format msgid "%1$s: %2$s" msgstr "%1$s: %2$s" #, c-format #~ msgid "%s has finished starting" #~ msgstr "%s finó'l so llanzamientu" 0707010000021D000081A40000000000000000000000016712993F0001DB48000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/be.po# Ihar Hrachyshka , 2011, 2013, 2014. # Kasia Bondarava , 2012. # Yuras Shumovich , 2017 msgid "" msgstr "" "Project-Id-Version: gnome-shell.master\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues/\n" "POT-Creation-Date: 2024-08-27 19:58+0000\n" "PO-Revision-Date: 2024-08-29 00:32+0300\n" "Last-Translator: Yuras Shumovich \n" "Language-Team: Belarusian \n" "Language: be\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: Poedit 3.4.4\n" "X-Project-Style: gnome\n" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "Запуск праграм" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate pinned app 1" msgstr "Актываваць прымацаваную праграму 1" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate pinned app 2" msgstr "Актываваць прымацаваную праграму 2" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate pinned app 3" msgstr "Актываваць прымацаваную праграму 3" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate pinned app 4" msgstr "Актываваць прымацаваную праграму 4" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate pinned app 5" msgstr "Актываваць прымацаваную праграму 5" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate pinned app 6" msgstr "Актываваць прымацаваную праграму 6" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate pinned app 7" msgstr "Актываваць прымацаваную праграму 7" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate pinned app 8" msgstr "Актываваць прымацаваную праграму 8" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate pinned app 9" msgstr "Актываваць прымацаваную праграму 9" #: data/50-gnome-shell-launchers.xml:46 msgid "Open new window of pinned app 1" msgstr "Адкрыць новае акно прымацаванай праграмы 1" #: data/50-gnome-shell-launchers.xml:50 msgid "Open new window of pinned app 2" msgstr "Адкрыць новае акно прымацаванай праграмы 2" #: data/50-gnome-shell-launchers.xml:54 msgid "Open new window of pinned app 3" msgstr "Адкрыць новае акно прымацаванай праграмы 3" #: data/50-gnome-shell-launchers.xml:58 msgid "Open new window of pinned app 4" msgstr "Адкрыць новае акно прымацаванай праграмы 4" #: data/50-gnome-shell-launchers.xml:62 msgid "Open new window of pinned app 5" msgstr "Адкрыць новае акно прымацаванай праграмы 5" #: data/50-gnome-shell-launchers.xml:66 msgid "Open new window of pinned app 6" msgstr "Адкрыць новае акно прымацаванай праграмы 6" #: data/50-gnome-shell-launchers.xml:70 msgid "Open new window of pinned app 7" msgstr "Адкрыць новае акно прымацаванай праграмы 7" #: data/50-gnome-shell-launchers.xml:74 msgid "Open new window of pinned app 8" msgstr "Адкрыць новае акно прымацаванай праграмы 8" #: data/50-gnome-shell-launchers.xml:78 msgid "Open new window of pinned app 9" msgstr "Адкрыць новае акно прымацаванай праграмы 9" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2274 msgid "Screenshots" msgstr "Здымкі экрана" #: data/50-gnome-shell-screenshots.xml:9 #: data/org.gnome.shell.gschema.xml.in:287 msgid "Take a screenshot interactively" msgstr "Зрабіць здымак экрана інтэрактыўна" #: data/50-gnome-shell-screenshots.xml:12 #: data/org.gnome.shell.gschema.xml.in:299 msgid "Take a screenshot" msgstr "Зрабіць здымак экрана" #: data/50-gnome-shell-screenshots.xml:15 #: data/org.gnome.shell.gschema.xml.in:295 msgid "Take a screenshot of a window" msgstr "Зрабіць здымак акна" #: data/50-gnome-shell-screenshots.xml:18 #: data/org.gnome.shell.gschema.xml.in:291 msgid "Record a screencast interactively" msgstr "Зрабіць запіс экрана інтэрактыўна" #: data/50-gnome-shell-system.xml:6 js/ui/messageTray.js:1298 msgid "System" msgstr "Сістэма" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "Паказаць спіс апавяшчэнняў" #: data/50-gnome-shell-system.xml:12 msgid "Open the quick settings menu" msgstr "Адкрыць меню хуткіх налад" #: data/50-gnome-shell-system.xml:15 msgid "Focus the active notification" msgstr "Перанесці фокус на актыўнае апавяшчэнне" #: data/50-gnome-shell-system.xml:18 msgid "Show the overview" msgstr "Паказаць агляд" #: data/50-gnome-shell-system.xml:21 msgid "Show all apps" msgstr "Паказаць усе праграмы" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "Абалонка GNOME" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "Кіраванне вокнамі і запуск праграм" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" "Уключыць унутраныя інструменты з Alt-F2 для распрацоўшчыкаў і тэсціроўшчыкаў" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Дазваляе доступ да ўнутраных інструментаў адладкі і назірання праз " "дыялогавае акно Alt-F2." #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "UUID пашырэнняў, якія трэба ўключыць" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "Пашырэнні абалонкі GNOME маюць уласцівасць UUID; у гэтым ключы пералічаны " "пашырэнні, якія неабходна загрузіць. Усе пашырэнні, якія вы хочаце " "загрузіць, трэба ўпісаць у гэты спіс. Спісам таксама можна кіраваць метадамі " "DBus EnableExtension і DisableExtension у org.gnome.Shell." #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "UUID пашырэнняў, якія трэба прымусова адключыць" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" "Пашырэнні абалонкі GNOME маюць уласцівасць UUID; у гэтым ключы пералічаны " "пашырэнні, якія неабходна адключыць, нават калі яны загрузіліся як частка " "бягучага рэжыму. Спісам таксама можна кіраваць метадамі DBus EnableExtension " "і DisableExtension у org.gnome.Shell. Прыярытэт гэтага ключа вышэйшы за " "значэнне налады «enabled-extensions»." #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "Адключыць пашырэнні карыстальніка" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" "Адключыць усе пашырэнні, якія ўключыў карыстальнік без змянення налады " "«enabled-extension»." #: data/org.gnome.shell.gschema.xml.in:45 msgid "Allow extension installation" msgstr "Дазволіць усталяванне пашырэнняў" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "Allow users to install extensions in their home folder. If disabled, the " "InstallRemoteExtension D-Bus method will fail, and extensions are only " "loaded from system directories on startup. It does not affect extensions " "that are already loaded, so a change only takes full effect on the next " "login." msgstr "" "Дазволіць карыстальнікам усталёўваць пашырэнні ў сваю хатнюю папку. Калі " "адключана, метад D-Bus InstallRemoteExtension не спрацуе і, пры запуску " "пашырэнні будуць загружацца толькі з сістэмных каталогаў. Не ўплывае на ўжо " "загружаныя пашырэнні, таму змены ўжываюцца толькі падчас наступнага ўваходу " "ў сістэму." #: data/org.gnome.shell.gschema.xml.in:56 msgid "Disables the validation of extension version compatibility" msgstr "Адключае праверку сумяшчальнасці версій пашырэнняў" #: data/org.gnome.shell.gschema.xml.in:57 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "Абалонка GNOME запускае толькі пашырэнні, для якіх заяўлена падтрымка яе " "бягучай версіі. Гэты параметр адключыць праверку сумяшчальнасці і абалонка " "паспрабуе загрузіць усе пашырэнні незалежна ад заяўленай падтрымкі." #: data/org.gnome.shell.gschema.xml.in:65 msgid "List of desktop file IDs for favorite applications" msgstr "Спіс ідэнтыфікатараў файлаў для абраных праграм" #: data/org.gnome.shell.gschema.xml.in:66 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "Праграмы з адпаведнымі ідэнтыфікатарамі будуць паказаны ў абраным." #: data/org.gnome.shell.gschema.xml.in:73 msgid "History for command (Alt-F2) dialog" msgstr "Гісторыя каманд дыялогавага акна (Alt-F2)" #. Translators: looking glass is a debugger and inspector tool, see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/docs/looking-glass.md #: data/org.gnome.shell.gschema.xml.in:78 msgid "History for the looking glass dialog" msgstr "Гісторыя дыялогавага акна Looking Glass" #: data/org.gnome.shell.gschema.xml.in:82 msgid "Always show the “Log Out” action in the system menu" msgstr "Заўсёды паказваць элемент «Выйсці» ў меню сістэмы" #: data/org.gnome.shell.gschema.xml.in:83 msgid "" "This key overrides the automatic hiding of the “Log out” action in the " "system menu for logged-in situations where there is a single, local, non-" "system user and only a single available session type (e.g. GNOME on Wayland)." msgstr "" "Гэты ключ перавызначае аўтаматычнае хаванне элемента «Выйсці» ў меню " "сістэмы, для выпадкаў з адным (лакальным, не сістэмным) карыстальнікам і " "адным тыпам сеанса (напр. GNOME на Wayland)." #: data/org.gnome.shell.gschema.xml.in:92 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "Ці запамінаць пароль для падключэння зашыфраваных і аддаленых файлавых сістэм" #: data/org.gnome.shell.gschema.xml.in:93 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "Абалонка запытвае пароль пры падключэнні зашыфраванай прылады або аддаленай " "файлавай сістэмы. Калі пароль магчыма захаваць на будучыню, будзе паказаны " "пераключальнік «Запомніць пароль». Гэты ключ вызначае прадвызначаны стан для " "пераключальніка." #: data/org.gnome.shell.gschema.xml.in:102 msgid "The last selected non-default power profile" msgstr "Апошні выбраны нестандартны профіль электрасілкавання" #: data/org.gnome.shell.gschema.xml.in:103 msgid "" "Some systems support more than two power profiles. In order to still support " "toggling between two profiles, this key records the last selected non-" "default profile." msgstr "" "Некаторыя сістэмы падтрымліваюць больш за два профілі электрасілкавання. Каб " "захаваць падтрымку пераключэння паміж двума профілямі, гэты ключ запісвае " "апошні выбраны нестандартны профіль." #: data/org.gnome.shell.gschema.xml.in:111 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "Апошняя версія дыялогу «Вітаем у GNOME» была паказана для" #: data/org.gnome.shell.gschema.xml.in:112 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can " "be used to effectively disable the dialog." msgstr "" "Гэты ключ вызначае для якой версіі ў апошні раз паказваўся дыялог «Вітаем у " "GNOME». Пусты радок азначае самую старую з магчымых версій, а занадта вялікі " "нумар будзе імітаваць неіснуючую версію. Можна выкарыстаць занадта вялікі " "нумар версіі, каб адключыць дыялогавае акно." #: data/org.gnome.shell.gschema.xml.in:145 msgid "Layout of the app picker" msgstr "Макет для сродку выбару праграм" #: data/org.gnome.shell.gschema.xml.in:146 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" msgstr "" "Макет для сродку выбару праграм. Кожны запіс у масіве - гэта старонка. " "Старонкі захоўваюцца ў парадку з'яўлення ў абалонцы GNOME. Кожная старонка " "змяшчае пару «id праграмы» → «даныя». Зараз як «даныя» захоўваюцца наступныя " "значэнні: • «position» – пазіцыя значка праграмы на старонцы" #: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:172 msgid "Keybinding to shift between overview states" msgstr "Спалучэнне клавіш, каб пераключацца паміж станамі меню агляд" #: data/org.gnome.shell.gschema.xml.in:166 msgid "Keybinding to shift between session, window picker and app grid" msgstr "" "Спалучэнне клавіш, каб пераключацца паміж сесіяй, выбарам акон і сеткай " "праграм" #: data/org.gnome.shell.gschema.xml.in:173 msgid "Keybinding to shift between app grid, window picker and session" msgstr "" "Спалучэнне клавіш, каб пераключацца паміж сеткай праграм, выбарам акон і " "сесіяй" #: data/org.gnome.shell.gschema.xml.in:179 msgid "Keybinding to open the “Show Applications” view" msgstr "Спалучэнне клавіш, каб адкрыць «Паказаць праграмы»" #: data/org.gnome.shell.gschema.xml.in:180 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "" "Спалучэнне клавіш, каб адкрыць «Паказаць праграмы» ў меню агляд дзейнасці." #: data/org.gnome.shell.gschema.xml.in:187 msgid "Keybinding to open the overview" msgstr "Спалучэнне клавіш, каб адкрыць меню агляд" #: data/org.gnome.shell.gschema.xml.in:188 msgid "Keybinding to open the Activities Overview." msgstr "Спалучэнне клавіш, каб адкрыць меню агляд дзейнасці." #: data/org.gnome.shell.gschema.xml.in:194 msgid "Keybinding to toggle the visibility of the notification list" msgstr "Спалучэнне клавіш, каб пераключыць бачнасць спіса апавяшчэнняў" #: data/org.gnome.shell.gschema.xml.in:195 msgid "Keybinding to toggle the visibility of the notification list." msgstr "Спалучэнне клавіш, каб пераключыць бачнасць спіса апавяшчэнняў." #: data/org.gnome.shell.gschema.xml.in:201 msgid "Keybinding to toggle the quick settings menu" msgstr "Спалучэнне клавіш, каб пераключыць бачнасць меню хуткіх налад" #: data/org.gnome.shell.gschema.xml.in:202 msgid "Keybinding to toggle the quick settings menu." msgstr "Спалучэнне клавіш, каб пераключыць бачнасць меню хуткіх налад." #: data/org.gnome.shell.gschema.xml.in:208 msgid "Keybinding to focus the active notification" msgstr "Спалучэнне клавіш, каб перанесці фокус на актыўнае апавяшчэнне" #: data/org.gnome.shell.gschema.xml.in:209 msgid "Keybinding to focus the active notification." msgstr "Спалучэнне клавіш, каб перанесці фокус на актыўнае апавяшчэнне." #: data/org.gnome.shell.gschema.xml.in:215 msgid "Switch to application 1" msgstr "Пераключыцца на праграму 1" #: data/org.gnome.shell.gschema.xml.in:219 msgid "Switch to application 2" msgstr "Пераключыцца на праграму 2" #: data/org.gnome.shell.gschema.xml.in:223 msgid "Switch to application 3" msgstr "Пераключыцца на праграму 3" #: data/org.gnome.shell.gschema.xml.in:227 msgid "Switch to application 4" msgstr "Пераключыцца на праграму 4" #: data/org.gnome.shell.gschema.xml.in:231 msgid "Switch to application 5" msgstr "Пераключыцца на праграму 5" #: data/org.gnome.shell.gschema.xml.in:235 msgid "Switch to application 6" msgstr "Пераключыцца на праграму 6" #: data/org.gnome.shell.gschema.xml.in:239 msgid "Switch to application 7" msgstr "Пераключыцца на праграму 7" #: data/org.gnome.shell.gschema.xml.in:243 msgid "Switch to application 8" msgstr "Пераключыцца на праграму 8" #: data/org.gnome.shell.gschema.xml.in:247 msgid "Switch to application 9" msgstr "Пераключыцца на праграму 9" #: data/org.gnome.shell.gschema.xml.in:251 msgid "Open a new instance of application 1" msgstr "Адкрыць новы экзэмпляр праграмы 1" #: data/org.gnome.shell.gschema.xml.in:255 msgid "Open a new instance of application 2" msgstr "Адкрыць новы экзэмпляр праграмы 2" #: data/org.gnome.shell.gschema.xml.in:259 msgid "Open a new instance of application 3" msgstr "Адкрыць новы экзэмпляр праграмы 3" #: data/org.gnome.shell.gschema.xml.in:263 msgid "Open a new instance of application 4" msgstr "Адкрыць новы экзэмпляр праграмы 4" #: data/org.gnome.shell.gschema.xml.in:267 msgid "Open a new instance of application 5" msgstr "Адкрыць новы экзэмпляр праграмы 5" #: data/org.gnome.shell.gschema.xml.in:271 msgid "Open a new instance of application 6" msgstr "Адкрыць новы экзэмпляр праграмы 6" #: data/org.gnome.shell.gschema.xml.in:275 msgid "Open a new instance of application 7" msgstr "Адкрыць новы экзэмпляр праграмы 7" #: data/org.gnome.shell.gschema.xml.in:279 msgid "Open a new instance of application 8" msgstr "Адкрыць новы экзэмпляр праграмы 8" #: data/org.gnome.shell.gschema.xml.in:283 msgid "Open a new instance of application 9" msgstr "Адкрыць новы экзэмпляр праграмы 9" #: data/org.gnome.shell.gschema.xml.in:308 #: data/org.gnome.shell.gschema.xml.in:335 msgid "Limit switcher to current workspace." msgstr "Абмежаваць пераключальнік бягучай працоўнай прасторай." #: data/org.gnome.shell.gschema.xml.in:309 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "Калі актыўная, у пераключальніку паказваюцца толькі праграмы з бягучай " "працоўнай прасторы. Іначай – паказваюцца ўсе праграмы." #: data/org.gnome.shell.gschema.xml.in:326 msgid "The application icon mode." msgstr "Рэжым значкоў праграм." #: data/org.gnome.shell.gschema.xml.in:327 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-" "only” (shows only the application icon) or “both”." msgstr "" "Вызначае як паказваюцца вокны ў пераключальніку. Магчымыя значэнні: " "«thumbnail-only» (паказваць мініяцюры вокнаў), «app-icon-only» (паказваць " "толькі значкі праграм) і «both» (паказваць мініяцюры і значкі)." #: data/org.gnome.shell.gschema.xml.in:336 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "Калі актыўная, у пераключальніку паказваюцца толькі вокны з бягучай " "працоўнай прасторы. Іначай – паказваюцца ўсе вокны." #: data/org.gnome.shell.gschema.xml.in:346 msgid "Locations" msgstr "Месцазнаходжанні" #: data/org.gnome.shell.gschema.xml.in:347 msgid "The locations to show in world clocks" msgstr "Месцазнаходжанне ў сусветных гадзінніках" #: data/org.gnome.shell.gschema.xml.in:357 msgid "Automatic location" msgstr "Аўтаматычна вызначаць месцазнаходжанне" #: data/org.gnome.shell.gschema.xml.in:358 msgid "Whether to fetch the current location or not" msgstr "Ці атрымліваць бягучае месцазнаходжанне" #: data/org.gnome.shell.gschema.xml.in:365 msgid "Location" msgstr "Месцазнаходжанне" #: data/org.gnome.shell.gschema.xml.in:366 msgid "The location for which to show a forecast" msgstr "Месцазнаходжанне для якога паказваецца надвор'е" #. Keep in sync with subprojects/extensions-app #: data/org.gnome.Shell.Extensions.desktop.in.in:5 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/data/ui/extensions-window.ui:57 msgid "Extensions" msgstr "Пашырэнні" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "Сеткавы ўваход" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:275 msgid "Something’s gone wrong" msgstr "Нешта пайшло не так" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" "На жаль, узнікла праблема: немагчыма паказаць налады гэтага пашырэння. Мы " "раім вам паведаміць аб праблеме аўтарам пашырэння." #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "Тэхнічныя падрабязнасці" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "Хатняя старонка" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 msgid "Visit extension homepage" msgstr "Наведаць хатнюю старонку пашырэння" #: js/gdm/authPrompt.js:151 js/gdm/loginDialog.js:466 #: js/ui/audioDeviceSelection.js:66 js/ui/components/networkAgent.js:113 #: js/ui/components/polkitAgent.js:144 js/ui/endSessionDialog.js:437 #: js/ui/extensionDownloader.js:276 js/ui/shellMountOperation.js:382 #: js/ui/shellMountOperation.js:392 msgid "Cancel" msgstr "Скасаваць" #: js/gdm/authPrompt.js:317 js/ui/components/networkAgent.js:213 #: js/ui/components/networkAgent.js:233 js/ui/components/networkAgent.js:265 #: js/ui/components/networkAgent.js:298 js/ui/components/networkAgent.js:337 #: js/ui/components/networkAgent.js:350 js/ui/components/polkitAgent.js:286 #: js/ui/shellMountOperation.js:332 msgid "Password" msgstr "Пароль" #: js/gdm/loginDialog.js:326 msgid "Choose Session" msgstr "Выбраць сеанс" #. Translators: is running for #: js/gdm/loginDialog.js:424 #, javascript-format msgid "" "Remote login is not possible because a remote session is already running for " "%s. To login remotely, you must log out from the remote session or force " "stop it." msgstr "" "Аддалены ўваход немагчымы, таму што ўжо запушчаны аддалены сеанс для %s. Для " "аддаленага ўваходу ў сістэму, патрабуецца з яго выйсці або прымусова спыніць." #. Translators: is running for #: js/gdm/loginDialog.js:427 #, javascript-format msgid "" "Login is not possible because a remote session is already running for %s. To " "login, you must log out from the remote session or force stop it." msgstr "" "Уваход у сістэму немагчымы, таму што ўжо запушчаны аддалены сеанс для %s. " "Каб увайсці ў сістэму, патрабуецца з яго выйсці або прымусова спыніць." #. Translators: is running for #: js/gdm/loginDialog.js:430 #, javascript-format msgid "" "Remote login is not possible because a local session is already running for " "%s. To login remotely, you must log out from the local session or force stop " "it." msgstr "" "Аддалены ўваход немагчымы, таму што ўжо запушчаны лакальны сеанс для %s. Для " "аддаленага ўваходу ў сістэму, патрабуецца з яго выйсці або прымусова спыніць." #. Translators: is running for #: js/gdm/loginDialog.js:433 #, javascript-format msgid "" "Login is not possible because a session is already running for %s. To login, " "you must log out from the session or force stop it." msgstr "" "Уваход у сістэму немагчымы, таму што сеанс для %s ужо запушчаны. Для ўваходу " "ў сістэму, патрабуецца з яго выйсці або прымусова спыніць." #: js/gdm/loginDialog.js:442 msgid "Session Already Running" msgstr "Сеанс ужо запушчаны" #: js/gdm/loginDialog.js:454 msgid "" "Force stopping will quit any running apps and processes, and could result in " "data loss" msgstr "" "Прымусовае спыненне прывядзе да завяршэння запушчаных праграм і працэсаў, а " "таксама можа прывесці да страты даных" #: js/gdm/loginDialog.js:474 msgid "Force Stop" msgstr "Прымусова спыніць" #: js/gdm/loginDialog.js:542 msgid "Not listed?" msgstr "Няма ў спісе?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:1010 #, javascript-format msgid "(e.g., user or %s)" msgstr "(напр. карыстальнік ці %s)" #: js/gdm/loginDialog.js:1015 js/ui/components/networkAgent.js:257 #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:326 msgid "Username" msgstr "Імя карыстальніка" #: js/gdm/loginDialog.js:1081 msgid "Login Attempt Timed Out" msgstr "Скончыўся тэрмін чакання ўваходу ў сістэму" #: js/gdm/loginDialog.js:1082 msgid "Login took too long, please try again" msgstr "Уваход у сістэму заняў занадта шмат часу, паўтарыце спробу" #: js/gdm/loginDialog.js:1431 msgid "Login Window" msgstr "Акно ўваходу ў сістэму" #: js/gdm/util.js:496 msgid "Authentication error" msgstr "Памылка праверкі сапраўднасці" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:727 msgid "(or swipe finger across reader)" msgstr "(або правядзіце пальцам па чытальніку)" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:732 msgid "(or place finger on reader)" msgstr "(або прыкладзіце палец да чытальніка)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:91 msgctxt "search-result" msgid "Power Off" msgstr "Выключыць" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:94 msgid "power off;poweroff;shutdown;halt;stop" msgstr "" "power off;poweroff;shutdown;halt;stop;выключыць;спыніць;прыпыніць;завяршыць" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:99 msgctxt "search-result" msgid "Restart" msgstr "Перазапусціць" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:102 msgid "reboot;restart;" msgstr "reboot;restart;перазапусціць;перазапуск;перазагрузіць;" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:107 msgctxt "search-result" msgid "Lock Screen" msgstr "Заблакіраваць экран" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:110 msgid "lock screen" msgstr "заблакіраваць экран" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:115 msgctxt "search-result" msgid "Log Out" msgstr "Завяршыць сеанс" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:118 msgid "logout;log out;sign off" msgstr "logout;log out;выйсці;завяршыць сеанс" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:123 msgctxt "search-result" msgid "Suspend" msgstr "Прыпыніць працу" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:126 msgid "suspend;sleep" msgstr "suspend;прыпыніць;заснуць;сон" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:131 msgctxt "search-result" msgid "Switch User" msgstr "Змяніць карыстальніка" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:134 msgid "switch user" msgstr "змяніць карыстальніка" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:141 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "" "lock orientation;rotation;заблакіраваць арыентацыю; разблакіраваць;экран;" "паварот" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:146 msgctxt "search-result" msgid "Take a Screenshot" msgstr "Зрабіць здымак экрана" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:149 msgid "screenshot;screencast;snip;capture;record" msgstr "screenshot;capture;здымак;запіс;экрана;экранны здымак;нажніцы;захоп" #: js/misc/systemActions.js:249 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "Разблакіраваць паварот экрана" #: js/misc/systemActions.js:250 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "Заблакіраваць паварот экрана" #: js/misc/util.js:130 msgid "Command not found" msgstr "Каманда не знойдзена" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:170 msgid "Could not parse command:" msgstr "Не ўдалося разабраць каманду:" #: js/misc/util.js:178 #, javascript-format msgid "Execution of “%s” failed:" msgstr "Не ўдалося выканаць «%s»:" #: js/misc/dateUtils.js:69 msgid "Just now" msgstr "Толькі што" #: js/misc/dateUtils.js:72 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d хвіліну таму" msgstr[1] "%d хвіліны таму" msgstr[2] "%d хвілін таму" #: js/misc/dateUtils.js:79 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d гадзіну таму" msgstr[1] "%d гадзіны таму" msgstr[2] "%d гадзін таму" #: js/misc/dateUtils.js:85 js/ui/dateMenu.js:183 msgid "Yesterday" msgstr "Учора" #: js/misc/dateUtils.js:88 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d дзень таму" msgstr[1] "%d дні таму" msgstr[2] "%d дзён таму" #: js/misc/dateUtils.js:95 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d тыдзень таму" msgstr[1] "%d тыдні таму" msgstr[2] "%d тыдняў таму" #: js/misc/dateUtils.js:102 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%d месяц таму" msgstr[1] "%d месяцы таму" msgstr[2] "%d месяцаў таму" #: js/misc/dateUtils.js:108 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "%d год таму" msgstr[1] "%d гады таму" msgstr[2] "%d гадоў таму" #. Translators: Time in 24h format #: js/misc/dateUtils.js:155 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/dateUtils.js:161 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "Учора, %H:%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/dateUtils.js:167 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/dateUtils.js:173 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%-d %B, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/dateUtils.js:179 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%-d %B %Y, %H∶%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/dateUtils.js:184 msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/dateUtils.js:190 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "Учора, %l∶%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/dateUtils.js:196 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %-l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/dateUtils.js:202 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%-d %B, %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/dateUtils.js:208 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%-d %B %Y, %l∶%M %p" #: js/portalHelper/main.js:98 msgid "Your connection seems to be secure" msgstr "Злучэнне выглядае бяспечным" #: js/portalHelper/main.js:104 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "Злучэнне з гэтым хот-спотам не бяспечнае. Людзі вакол могуць атрымаць паролі " "або іншую інфармацыю, якую вы ўводзіце на старонцы." #: js/portalHelper/main.js:115 msgid "Hotspot Login" msgstr "Уваход у хот-спот" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:51 js/ui/inhibitShortcutsDialog.js:92 msgid "Deny" msgstr "Забараніць" #: js/ui/accessDialog.js:52 js/ui/inhibitShortcutsDialog.js:101 msgid "Allow" msgstr "Дазволіць" #: js/ui/appDisplay.js:1769 msgid "Unnamed Folder" msgstr "Неназваная папка" #: js/ui/appFavorites.js:163 #, javascript-format msgid "%s has been pinned to the dash." msgstr "%s замацавана на панэлі праграм." #: js/ui/appFavorites.js:194 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "%s адмацавана ад панэлі праграм." #: js/ui/appFavorites.js:208 js/ui/main.js:281 msgid "Undo" msgstr "Адрабіць" #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:49 msgid "Open Windows" msgstr "Адкрытыя вокны" #: js/ui/appMenu.js:57 msgid "New Window" msgstr "Новае акно" #: js/ui/appMenu.js:84 msgid "App Details" msgstr "Падрабязнасці праграмы" #: js/ui/appMenu.js:100 msgid "Quit" msgstr "Выйсці" #: js/ui/appMenu.js:160 js/ui/dash.js:248 msgid "Unpin" msgstr "Адмацаваць" #: js/ui/appMenu.js:161 msgid "Pin to Dash" msgstr "Замацаваць на панэлі праграм" #: js/ui/appMenu.js:178 msgid "Launch using Integrated Graphics Card" msgstr "Запусціць з выкарыстаннем інтэграванай відэакарты" #: js/ui/appMenu.js:179 msgid "Launch using Discrete Graphics Card" msgstr "Запусціць з выкарыстаннем дыскрэтнай відэакарты" #: js/ui/audioDeviceSelection.js:46 msgid "Select Audio Device" msgstr "Выберыце аўдыяпрыладу" #: js/ui/audioDeviceSelection.js:61 js/ui/status/volume.js:81 msgid "Sound Settings" msgstr "Налады гуку" #: js/ui/audioDeviceSelection.js:74 msgid "Headphones" msgstr "Навушнікі" #: js/ui/audioDeviceSelection.js:76 msgid "Headset" msgstr "Гарнітура" #: js/ui/audioDeviceSelection.js:78 js/ui/status/volume.js:356 msgid "Microphone" msgstr "Мікрафон" #: js/ui/backgroundMenu.js:13 msgid "Change Background…" msgstr "Змяніць фон…" #: js/ui/backgroundMenu.js:15 msgid "Display Settings" msgstr "Налады дысплэя" #: js/ui/backgroundMenu.js:16 msgid "Settings" msgstr "Налады" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:37 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:63 msgctxt "grid sunday" msgid "S" msgstr "Н" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:65 msgctxt "grid monday" msgid "M" msgstr "П" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:67 msgctxt "grid tuesday" msgid "T" msgstr "А" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:69 msgctxt "grid wednesday" msgid "W" msgstr "С" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:71 msgctxt "grid thursday" msgid "T" msgstr "Ч" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:73 msgctxt "grid friday" msgid "F" msgstr "П" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:75 msgctxt "grid saturday" msgid "S" msgstr "С" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:426 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:436 msgid "%OB %Y" msgstr "%OB %Y" #: js/ui/calendar.js:498 msgid "Previous month" msgstr "Папярэдні месяц" #: js/ui/calendar.js:516 msgid "Next month" msgstr "Наступны месяц" #: js/ui/calendar.js:667 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%-d" #: js/ui/calendar.js:726 msgid "Week %V" msgstr "Тыдзень %V" #: js/ui/calendar.js:918 msgid "No Notifications" msgstr "Няма апавяшчэнняў" #: js/ui/calendar.js:974 msgid "Do Not Disturb" msgstr "Не турбаваць" #: js/ui/calendar.js:995 msgid "Clear" msgstr "Ачысціць" #: js/ui/calendar.js:999 msgctxt "action" msgid "Clear all notifications" msgstr "Ачысціць усе апавяшчэнні" #. Translators: %s is an application name #: js/ui/closeDialog.js:42 #, javascript-format msgid "“%s” Is Not Responding" msgstr "«%s» не адказвае" #: js/ui/closeDialog.js:43 msgid "" "You may choose to wait a short while for it to continue or force the app to " "quit entirely" msgstr "Вы можаце пачакаць адказу або прымусова завяршыць працу праграмы" #: js/ui/closeDialog.js:71 msgid "Force Quit" msgstr "Прымусова завяршыць" #: js/ui/closeDialog.js:76 msgid "Wait" msgstr "Пачакаць" #: js/ui/components/automountManager.js:82 msgid "External drive connected" msgstr "Падлучаны знешні дыск" #: js/ui/components/automountManager.js:94 msgid "External drive disconnected" msgstr "Адлучаны знешні дыск" #: js/ui/components/automountManager.js:208 msgid "Unable to unlock volume" msgstr "Немагчыма разблакіраваць том" #: js/ui/components/automountManager.js:209 msgid "The installed udisks version does not support the PIM setting" msgstr "Усталяваная версія udisks не падтрымлівае налады PIM" #. Translators: %s is the name of a partition on a external drive #: js/ui/components/autorunManager.js:189 #, javascript-format msgid "“%s” connected" msgstr "«%s» падлучаны" #: js/ui/components/autorunManager.js:190 msgid "Disk can now be used" msgstr "Цяпер дыск можна выкарыстоўваць" #: js/ui/components/autorunManager.js:202 #, javascript-format msgid "Open with %s" msgstr "Адкрыць праз %s" #: js/ui/components/networkAgent.js:95 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router" msgstr "Таксама можна злучыцца, націснуўшы кнопку «WPS» на маршрутызатары" #: js/ui/components/networkAgent.js:107 js/ui/status/bluetooth.js:245 #: js/ui/status/network.js:360 js/ui/status/network.js:444 msgid "Connect" msgstr "Злучыцца" #: js/ui/components/networkAgent.js:222 msgid "Key" msgstr "Ключ" #: js/ui/components/networkAgent.js:273 js/ui/components/networkAgent.js:312 msgid "Private key password" msgstr "Пароль прыватнага ключа" #: js/ui/components/networkAgent.js:306 msgid "Identity" msgstr "Ідэнтычнасць" #: js/ui/components/networkAgent.js:332 msgid "Service" msgstr "Сэрвіс" #: js/ui/components/networkAgent.js:370 js/ui/components/networkAgent.js:406 #: js/ui/components/networkAgent.js:743 js/ui/components/networkAgent.js:764 msgid "Authentication required" msgstr "Патрабуецца праверка сапраўднасці" #: js/ui/components/networkAgent.js:371 js/ui/components/networkAgent.js:744 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network “%s”" msgstr "" "Для доступу да бесправадной сеткі «%s» патрабуецца пароль або ключ шыфравання" #: js/ui/components/networkAgent.js:375 js/ui/components/networkAgent.js:748 msgid "Wired 802.1X authentication" msgstr "Правадны доступ, праверка сапраўднасці 802.1X" #: js/ui/components/networkAgent.js:378 msgid "Network name" msgstr "Назва сеткі" #: js/ui/components/networkAgent.js:386 js/ui/components/networkAgent.js:752 msgid "DSL authentication" msgstr "DSL-аўтэнтыфікацыя" #: js/ui/components/networkAgent.js:393 js/ui/components/networkAgent.js:757 msgid "PIN code required" msgstr "Патрабуецца PIN-код" #: js/ui/components/networkAgent.js:394 js/ui/components/networkAgent.js:758 msgid "PIN code is needed for the mobile broadband device" msgstr "Прыладзе шырокапалоснай мабільнай сеткі патрабуецца PIN-код" #: js/ui/components/networkAgent.js:396 msgid "PIN" msgstr "PIN" #: js/ui/components/networkAgent.js:407 js/ui/components/networkAgent.js:749 #: js/ui/components/networkAgent.js:753 js/ui/components/networkAgent.js:765 #: js/ui/components/networkAgent.js:769 #, javascript-format msgid "A password is required to connect to “%s”" msgstr "Каб злучыцца з «%s», патрабуецца пароль" #: js/ui/components/networkAgent.js:768 msgid "VPN password" msgstr "Пароль VPN" #: js/ui/components/polkitAgent.js:44 msgid "Authentication Required" msgstr "Патрабуецца праверка сапраўднасці" #: js/ui/components/polkitAgent.js:84 msgid "Administrator" msgstr "Адміністратар" #: js/ui/components/polkitAgent.js:149 msgid "Authenticate" msgstr "Пацвердзіць" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:263 js/ui/shellMountOperation.js:415 msgid "Sorry, that didn’t work. Please try again." msgstr "Не ўдалося пацвердзіць сапраўднасць. Паўтарыце спробу." #: js/ui/ctrlAltTab.js:23 js/ui/overviewControls.js:404 msgid "Windows" msgstr "Вокны" #: js/ui/dash.js:204 js/ui/dash.js:250 msgid "Show Apps" msgstr "Паказаць праграмы" #. Translators: this is the name of the dock/favorites area on #. the bottom of the overview #: js/ui/dash.js:408 msgid "Dash" msgstr "Панэль праграм" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:99 msgid "%B %-d %Y" msgstr "%-d %B %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:106 msgid "%A %B %e %Y" msgstr "%A, %e %B %Y" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:172 msgctxt "calendar heading" msgid "%B %-d" msgstr "%-d %B" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:175 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%-d %B %Y" #: js/ui/dateMenu.js:181 msgid "Today" msgstr "Сёння" #: js/ui/dateMenu.js:185 msgid "Tomorrow" msgstr "Заўтра" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:216 msgctxt "event list time" msgid "All Day" msgstr "Увесь дзень" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:238 msgid "%m/%d" msgstr "%d/%m" #: js/ui/dateMenu.js:289 msgid "No Events" msgstr "Няма падзей" #: js/ui/dateMenu.js:411 msgid "Add World Clocks…" msgstr "Дадаць сусветныя гадзіннікі…" #: js/ui/dateMenu.js:412 msgid "World Clocks" msgstr "Сусветныя гадзіннікі" #: js/ui/dateMenu.js:702 msgid "Loading…" msgstr "Загрузка…" #: js/ui/dateMenu.js:712 msgid "Go Online for Weather Information" msgstr "Злучыцеся з інтэрнэтам, каб атрымаць звесткі пра надвор'е" #: js/ui/dateMenu.js:714 msgid "Weather Information Unavailable" msgstr "Звесткі пра надвор'е зараз недаступны" #: js/ui/dateMenu.js:724 msgid "Weather" msgstr "Надвор'е" #: js/ui/dateMenu.js:726 msgid "Select Weather Location…" msgstr "Выбраць месцазнаходжанне…" #: js/ui/endSessionDialog.js:47 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "Завяршэнне сеанса %s" #: js/ui/endSessionDialog.js:48 msgctxt "title" msgid "Log Out" msgstr "Завяршэнне сеанса" #: js/ui/endSessionDialog.js:51 #, javascript-format msgid "%s will be logged out automatically in %d second" msgid_plural "%s will be logged out automatically in %d seconds" msgstr[0] "Сеанс карыстальніка %s аўтаматычна завершыцца праз %d секунду" msgstr[1] "Сеанс карыстальніка %s аўтаматычна завершыцца праз %d секунды" msgstr[2] "Сеанс карыстальніка %s аўтаматычна завершыцца праз %d секунд" #: js/ui/endSessionDialog.js:57 #, javascript-format msgid "You will be logged out automatically in %d second" msgid_plural "You will be logged out automatically in %d seconds" msgstr[0] "Ваш сеанс аўтаматычна завершыцца праз %d секунду" msgstr[1] "Ваш сеанс аўтаматычна завершыцца праз %d секунды" msgstr[2] "Ваш сеанс аўтаматычна завершыцца праз %d секунд" #: js/ui/endSessionDialog.js:64 msgctxt "button" msgid "Log Out" msgstr "Выйсці" #: js/ui/endSessionDialog.js:70 js/ui/status/system.js:174 msgctxt "title" msgid "Power Off" msgstr "Выключэнне камп'ютара" #: js/ui/endSessionDialog.js:71 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Усталяваць абнаўленні і выключыць камп'ютар" #: js/ui/endSessionDialog.js:74 #, javascript-format msgid "The system will power off automatically in %d second" msgid_plural "The system will power off automatically in %d seconds" msgstr[0] "Сістэма аўтаматычна выключыцца праз %d секунду" msgstr[1] "Сістэма аўтаматычна выключыцца праз %d секунды" msgstr[2] "Сістэма аўтаматычна выключыцца праз %d секунд" #: js/ui/endSessionDialog.js:78 js/ui/endSessionDialog.js:97 msgctxt "checkbox" msgid "Install pending software updates" msgstr "Усталяваць адкладзеныя абнаўленні ПЗ" #: js/ui/endSessionDialog.js:82 msgctxt "button" msgid "Power Off" msgstr "Выключыць" #: js/ui/endSessionDialog.js:89 msgctxt "title" msgid "Restart" msgstr "Перазапуск" #: js/ui/endSessionDialog.js:90 msgctxt "title" msgid "Install Updates & Restart" msgstr "Усталяваць абнаўленні і перазапусціць" #: js/ui/endSessionDialog.js:93 #, javascript-format msgid "The system will restart automatically in %d second" msgid_plural "The system will restart automatically in %d seconds" msgstr[0] "Сістэма аўтаматычна перазапусціцца праз %d секунду" msgstr[1] "Сістэма аўтаматычна перазапусціцца праз %d секунды" msgstr[2] "Сістэма аўтаматычна перазапусціцца праз %d секунд" #: js/ui/endSessionDialog.js:101 msgctxt "button" msgid "Restart" msgstr "Перазапусціць" #: js/ui/endSessionDialog.js:109 msgctxt "title" msgid "Restart & Install Updates" msgstr "Перазапусціць і ўсталяваць абнаўленні" #: js/ui/endSessionDialog.js:112 #, javascript-format msgid "The system will automatically restart and install updates in %d second" msgid_plural "" "The system will automatically restart and install updates in %d seconds" msgstr[0] "" "Сістэма аўтаматычна перазапусціцца і ўсталюе абнаўленні праз %d секунду" msgstr[1] "" "Сістэма аўтаматычна перазапусціцца і ўсталюе абнаўленні праз %d секунды" msgstr[2] "" "Сістэма аўтаматычна перазапусціцца і ўсталюе абнаўленні праз %d секунд" #: js/ui/endSessionDialog.js:119 js/ui/endSessionDialog.js:140 msgctxt "button" msgid "Restart & Install" msgstr "Перазапусціць і ўсталяваць" #: js/ui/endSessionDialog.js:121 msgctxt "button" msgid "Install & Power Off" msgstr "Усталяваць і выключыць камп'ютар" #: js/ui/endSessionDialog.js:122 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Выключыць камп'ютар пасля ўсталявання абнаўленняў" #: js/ui/endSessionDialog.js:129 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "Перазапусціць і ўсталяваць абнаўленне" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:134 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "%s %s будзе ўсталявана пасля перазапуску. Абнаўленне можа заняць шмат часу, " "пераканайцеся, што вы маеце рэзервовую копію, а камп'ютар працуе ад " "электрасеткі." #: js/ui/endSessionDialog.js:283 msgid "Low battery power: please plug in before installing updates" msgstr "" "Нізкі зарад акумулятара. Падключыце зарадную прыладу перад усталяваннем " "абнаўленняў" #: js/ui/endSessionDialog.js:292 msgid "Some applications are busy or have unsaved work" msgstr "Некаторыя праграмы заняты або маюць незахаваныя вынікі працы" #: js/ui/endSessionDialog.js:297 msgid "Other users are logged in" msgstr "Іншыя карыстальнікі не завяршылі сеанс" #: js/ui/endSessionDialog.js:467 msgctxt "button" msgid "Boot Options" msgstr "Параметры запуску" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:672 #, javascript-format msgid "%s (remote)" msgstr "%s (аддалены сеанс)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:675 #, javascript-format msgid "%s (console)" msgstr "%s (кансоль)" #: js/ui/extensionDownloader.js:280 msgid "Install" msgstr "Усталяваць" #: js/ui/extensionDownloader.js:286 msgid "Install Extension" msgstr "Усталяваць пашырэнне" #: js/ui/extensionDownloader.js:287 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "Спампаваць і ўсталяваць «%s» з extensions.gnome.org?" #: js/ui/extensionSystem.js:352 msgid "Extension Updates Available" msgstr "Даступны абнаўленні пашырэнняў" #: js/ui/extensionSystem.js:353 msgid "Extension updates are ready to be installed" msgstr "Абнаўленні пашырэнняў гатовыя да ўсталявання" #: js/ui/inhibitShortcutsDialog.js:70 msgid "Allow inhibiting shortcuts" msgstr "Дазволіць блакіраванне спалучэнняў клавіш" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:73 #, javascript-format msgid "The app %s wants to inhibit shortcuts" msgstr "Праграма %s спрабуе заблакіраваць спалучэнні клавіш" #: js/ui/inhibitShortcutsDialog.js:74 msgid "An app wants to inhibit shortcuts" msgstr "Праграма спрабуе заблакіраваць спалучэнні клавіш" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:81 #, javascript-format msgid "You can restore shortcuts by pressing %s" msgstr "Каб аднавіць спалучэнні клавіш, націсніце %s" #: js/ui/kbdA11yDialog.js:34 msgid "Slow Keys Turned On" msgstr "Павольныя клавішы ўключаны" #: js/ui/kbdA11yDialog.js:35 msgid "Slow Keys Turned Off" msgstr "Павольныя клавішы выключаны" #: js/ui/kbdA11yDialog.js:36 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "Вы на працягу васьмі секунд утрымлівалі клавішу Shift націснутай. Гэта " "спалучэнне клавіш уключае функцыю «павольныя клавішы», якая ўплывае на працу " "клавіятуры." #: js/ui/kbdA11yDialog.js:42 msgid "Sticky Keys Turned On" msgstr "Ліпкія клавішы ўключаны" #: js/ui/kbdA11yDialog.js:43 msgid "Sticky Keys Turned Off" msgstr "Ліпкія клавішы выключаны" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "Вы націснулі клавішу Shift пяць разоў запар. Гэта спалучэнні клавіш уключае " "функцыю «ліпкія клавішы», якая ўплывае на працу клавіятуры." #: js/ui/kbdA11yDialog.js:47 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" "Вы націснулі дзве клавішы адначасова або клавішу Shift пяць разоў запар. " "Гэта дзеянне выключае функцыю «ліпкія клавішы», якая ўплывае на працу " "клавіятуры." #: js/ui/kbdA11yDialog.js:57 msgid "Leave On" msgstr "Пакінуць уключанай" #: js/ui/kbdA11yDialog.js:57 msgid "Turn On" msgstr "Уключыць" #: js/ui/kbdA11yDialog.js:67 js/ui/status/network.js:455 msgid "Turn Off" msgstr "Выключыць" #: js/ui/kbdA11yDialog.js:67 msgid "Leave Off" msgstr "Пакінуць выключанай" #: js/ui/keyboard.js:180 js/ui/status/keyboard.js:897 msgid "Keyboard Settings" msgstr "Налады клавіятуры" #: js/ui/lookingGlass.js:727 msgid "No extensions installed" msgstr "Няма ўсталяваных пашырэнняў" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:788 #, javascript-format msgid "%s has not emitted any errors" msgstr "%s не генеруе ніякіх памылак" #: js/ui/lookingGlass.js:794 msgid "Hide Errors" msgstr "Схаваць памылкі" #: js/ui/lookingGlass.js:798 js/ui/lookingGlass.js:875 msgid "Show Errors" msgstr "Паказаць памылкі" #: js/ui/lookingGlass.js:807 msgid "Active" msgstr "Актыўна" #: js/ui/lookingGlass.js:810 msgid "Inactive" msgstr "Неактыўна" #: js/ui/lookingGlass.js:812 msgid "Error" msgstr "Памылка" #: js/ui/lookingGlass.js:814 msgid "Out of date" msgstr "Састарэла" #: js/ui/lookingGlass.js:816 msgid "Downloading" msgstr "Спампоўванне" #: js/ui/lookingGlass.js:818 msgid "Deactivating" msgstr "Дэактывацыя" #: js/ui/lookingGlass.js:820 msgid "Activating" msgstr "Актывацыя" #: js/ui/lookingGlass.js:853 msgid "View Source" msgstr "Зыходны код" #: js/ui/lookingGlass.js:864 msgid "Web Page" msgstr "Вэб-старонка" #: js/ui/main.js:277 msgid "System was put in unsafe mode" msgstr "Сістэма пераведзена ў небяспечны рэжым" #: js/ui/main.js:278 msgid "Apps now have unrestricted access" msgstr "Цяпер праграмы маюць неабмежаваны доступ" #: js/ui/main.js:338 msgid "Logged in as a privileged user" msgstr "Увайшоў як прывілеяваны карыстальнік" #: js/ui/main.js:339 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" "У мэтах бяспекі неабходна пазбягаць запуску сеанса ў якасці прывілеяванага " "карыстальніка. Калі магчыма, увайдзіце як звычайны карыстальнік." #: js/ui/main.js:387 msgid "Screen Lock disabled" msgstr "Блакіраванне экрана адключана" #: js/ui/main.js:388 msgid "Screen Locking requires the GNOME display manager" msgstr "Для блакіравання экрана патрабуецца GNOME display manager" #. Translators: this is the string displayed in the header when a message #. source doesn't have a name #: js/ui/messageList.js:374 msgid "Unknown App" msgstr "Невядомая праграма" #: js/ui/messageTray.js:326 js/ui/messageTray.js:328 msgid "Notification sound" msgstr "Гук апавяшчэння" #: js/ui/mpris.js:198 msgid "Unknown artist" msgstr "Невядомы выканаўца" #: js/ui/mpris.js:208 msgid "Unknown title" msgstr "Невядомая назва" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:328 msgid "Type to search" msgstr "Увядзіце пошукавы запыт" #: js/ui/overviewControls.js:392 msgid "Apps" msgstr "Праграмы" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:33 msgid "Overview" msgstr "Агляд" #: js/ui/padOsd.js:98 msgid "New shortcut…" msgstr "Новае спалучэнні клавіш…" #: js/ui/padOsd.js:151 msgid "App defined" msgstr "Праграма вызначана" #: js/ui/padOsd.js:152 msgid "Show on-screen help" msgstr "Паказваць даведку на экране" #: js/ui/padOsd.js:153 msgid "Switch monitor" msgstr "Пераключыць манітор" #: js/ui/padOsd.js:154 msgid "Assign keystroke" msgstr "Прызначыць клавішу" #: js/ui/padOsd.js:223 msgid "Done" msgstr "Гатова" #: js/ui/padOsd.js:726 msgid "Edit…" msgstr "Рэдагаваць…" #: js/ui/padOsd.js:773 msgid "None" msgstr "Няма" #: js/ui/padOsd.js:844 msgid "Press a button to configure" msgstr "Націсніце кнопку, каб наладзіць" #: js/ui/padOsd.js:845 msgid "Press Esc to exit" msgstr "Націсніце Esc, каб выйсці" #: js/ui/padOsd.js:848 msgid "Press any key to exit" msgstr "Націсніце любую клавішу, каб выйсці" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:423 msgid "Activities" msgstr "Дзейнасць" #: js/ui/panel.js:504 msgctxt "System menu in the top bar" msgid "System" msgstr "Сістэма" #: js/ui/panel.js:678 msgid "Top Bar" msgstr "Верхняя панэль" #: js/ui/quickSettings.js:188 msgid "Open menu" msgstr "Адкрыць меню" #: js/ui/runDialog.js:61 msgid "Run a Command" msgstr "Выканаць каманду" #: js/ui/runDialog.js:76 msgid "Press ESC to close" msgstr "Націсніце ESC, каб выйсці" #: js/ui/runDialog.js:241 msgid "Restart is not available on Wayland" msgstr "Перазапуск недаступны на Wayland" #: js/ui/runDialog.js:246 msgid "Restarting…" msgstr "Перазапуск…" #: js/ui/screenShield.js:233 msgid "GNOME needs to lock the screen" msgstr "GNOME патрабуе заблакіраваць экран" #: js/ui/screenShield.js:274 js/ui/screenShield.js:667 msgid "Unable to lock" msgstr "Не ўдалося заблакіраваць" #: js/ui/screenShield.js:275 js/ui/screenShield.js:668 msgid "Lock was blocked by an app" msgstr "Блакіраванне спынена праграмай" #: js/ui/screenshot.js:1252 msgid "Selection" msgstr "Вылучэнне" #: js/ui/screenshot.js:1262 msgid "Area Selection" msgstr "Вылучэнне вобласці" #: js/ui/screenshot.js:1267 msgid "Screen" msgstr "Экран" #: js/ui/screenshot.js:1277 msgid "Screen Selection" msgstr "Выбар экрана" #: js/ui/screenshot.js:1282 msgid "Window" msgstr "Акно" #: js/ui/screenshot.js:1292 msgid "Window Selection" msgstr "Выбар акна" #. Translators: entry in the window right click menu. #: js/ui/screenshot.js:1317 js/ui/status/system.js:111 js/ui/windowMenu.js:28 msgid "Take Screenshot" msgstr "Зрабіць здымак экрана" #: js/ui/screenshot.js:1333 msgid "Record Screen" msgstr "Запіс відэа з экрана" #. Translators: since this string refers to an action, #. it needs to be phrased as a verb. #: js/ui/screenshot.js:1350 msgid "Capture" msgstr "Зняць" #: js/ui/screenshot.js:1372 msgid "Show Pointer" msgstr "Паказваць указальнік мышы" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1996 msgid "Screencasts" msgstr "Запісы экрана" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast From 07-17-2013 10:00:46 PM" #: js/ui/screenshot.js:2001 #, no-c-format msgid "Screencast From %d %t" msgstr "Запіс экрана ад %d %t" #. Translators: notification title. #: js/ui/screenshot.js:2047 msgid "Screencast recorded" msgstr "Запіс экрана зроблены" #. Translators: notification title. #: js/ui/screenshot.js:2060 msgid "Screencast failed to start" msgstr "Не ўдалося пачаць запіс відэа з экрана" #. Translators: notification title. #: js/ui/screenshot.js:2066 msgid "Screencast ended: Out of disk space" msgstr "Запіс экрана завершаны. Скончылася месца на дыску" #. We can encourage user to try again on service crashes since the #. recorder will auto-blocklist the pipeline that crashed. #. Translators: notification title. #: js/ui/screenshot.js:2072 msgid "Screencast ended unexpectedly, please try again" msgstr "Запіс экрана нечакана завяршыўся, паўтарыце спробу" #. Translators: notification title. #: js/ui/screenshot.js:2075 msgid "Screencast ended unexpectedly" msgstr "Запіс экрана нечакана завяршыўся" #. Translators: notification source name. #: js/ui/screenshot.js:2085 js/ui/screenshot.js:2327 msgid "Screenshot" msgstr "Здымак экрана" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:2092 msgid "Click here to view the video." msgstr "Націсніце сюды, каб праглядзець відэа." #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:2100 js/ui/screenshot.js:2343 msgid "Show in Files" msgstr "Паказаць праз «Файлы»" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2287 #, javascript-format msgid "Screenshot From %s" msgstr "Здымак экрана ад %s" #. Translators: notification title. #: js/ui/screenshot.js:2333 msgid "Screenshot captured" msgstr "Здымак экрана захоплены" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2335 msgid "You can paste the image from the clipboard." msgstr "Вы можаце ўставіць выяву з буфера абмену." #: js/ui/screenshot.js:2391 js/ui/screenshot.js:2555 msgid "Screenshot taken" msgstr "Здымак экрана атрыманы" #: js/ui/search.js:829 msgid "Searching…" msgstr "Пошук…" #: js/ui/search.js:831 msgid "No results" msgstr "Нічога не знойдзена" #: js/ui/search.js:962 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "Яшчэ %d" msgstr[1] "Яшчэ %d" msgstr[2] "Яшчэ %d" #: js/ui/searchController.js:87 #: subprojects/extensions-app/data/ui/extensions-window.ui:73 msgid "Search" msgstr "Пошук" #: js/ui/shellEntry.js:21 msgid "Copy" msgstr "Капіяваць" #: js/ui/shellEntry.js:26 msgid "Paste" msgstr "Уставіць" #: js/ui/shellEntry.js:78 msgid "Show Text" msgstr "Паказаць тэкст" #: js/ui/shellEntry.js:80 msgid "Hide Text" msgstr "Схаваць тэкст" #: js/ui/shellEntry.js:174 msgid "Caps lock is on" msgstr "Caps lock уключаны" #: js/ui/shellMountOperation.js:286 msgid "Hidden Volume" msgstr "Схаваны том" #: js/ui/shellMountOperation.js:289 msgid "Windows System Volume" msgstr "Сістэмны том Windows" #: js/ui/shellMountOperation.js:292 msgid "Uses Keyfiles" msgstr "Выкарыстоўвае файлы-ключы" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:300 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead" msgstr "" "Каб разблакіраваць том, які выкарыстоўвае файлы-ключы, скарыстайцеся замест " "іх утылітай %s" #: js/ui/shellMountOperation.js:304 msgid "" "You need an external utility like Disks to unlock a volume that uses " "keyfiles" msgstr "" "Каб разблакіраваць том, які выкарыстоўвае файлы-ключы, патрабуецца знешняя " "ўтыліта, напрыклад Дыскі" #: js/ui/shellMountOperation.js:312 msgid "PIM Number" msgstr "Нумар PIM" #: js/ui/shellMountOperation.js:371 msgid "Remember Password" msgstr "Запомніць пароль" #: js/ui/shellMountOperation.js:386 msgid "Unlock" msgstr "Разблакіраваць" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:400 #, javascript-format msgid "Open %s" msgstr "Адкрыць %s" #: js/ui/shellMountOperation.js:436 msgid "The PIM must be a number or empty" msgstr "PIM павінен быць лічбавым або пустым" #: js/ui/status/accessibility.js:34 msgid "Accessibility" msgstr "Спецыяльныя магчымасці" #: js/ui/status/accessibility.js:44 msgid "High Contrast" msgstr "Высокая кантраснасць" #: js/ui/status/accessibility.js:47 msgid "Zoom" msgstr "Маштабаванне" #: js/ui/status/accessibility.js:54 msgid "Screen Reader" msgstr "Чытанне з экрана" #: js/ui/status/accessibility.js:58 msgid "Screen Keyboard" msgstr "Экранная клавіятура" #: js/ui/status/accessibility.js:62 msgid "Visual Alerts" msgstr "Візуальныя сігналы" #: js/ui/status/accessibility.js:66 msgid "Sticky Keys" msgstr "Ліпкія клавішы" #: js/ui/status/accessibility.js:70 msgid "Slow Keys" msgstr "Павольныя клавішы" #: js/ui/status/accessibility.js:74 msgid "Bounce Keys" msgstr "Пругкія клавішы" #: js/ui/status/accessibility.js:78 msgid "Mouse Keys" msgstr "Кіраванне ўказальнікам мышы" #: js/ui/status/accessibility.js:83 msgid "Accessibility Settings" msgstr "Налады спецыяльных магчымасцей" #: js/ui/status/accessibility.js:140 msgid "Large Text" msgstr "Вялікі тэкст" #: js/ui/status/autoRotate.js:14 msgid "Auto Rotate" msgstr "Аўтапаварот" #: js/ui/status/backgroundApps.js:156 msgctxt "title" msgid "Background Apps" msgstr "Праграмы ў фоне" #: js/ui/status/backgroundApps.js:171 msgid "Apps known to be running without a window" msgstr "Вядомыя праграмы, якія выконваюцца без акна" #: js/ui/status/backgroundApps.js:182 msgid "App Settings" msgstr "Налады праграм" #: js/ui/status/backgroundApps.js:239 msgid "No Background Apps" msgstr "Няма праграм у фоне" #: js/ui/status/backgroundApps.js:241 #, javascript-format msgid "%d Background App" msgid_plural "%d Background Apps" msgstr[0] "%d праграма ў фоне" msgstr[1] "%d праграмы ў фоне" msgstr[2] "%d праграм у фоне" #: js/ui/status/backlight.js:39 msgid "Keyboard Brightness" msgstr "Яркасць падсветкі клавіятуры" #: js/ui/status/backlight.js:79 msgid "Off" msgstr "Выключана" #: js/ui/status/backlight.js:80 msgid "Low" msgstr "Нізкая" #: js/ui/status/backlight.js:81 msgid "High" msgstr "Высокая" #: js/ui/status/backlight.js:147 js/ui/status/keyboard.js:879 msgid "Keyboard" msgstr "Клавіятура" #: js/ui/status/bluetooth.js:245 js/ui/status/network.js:360 msgid "Disconnect" msgstr "Адлучыцца" #: js/ui/status/bluetooth.js:262 js/ui/status/bluetooth.js:264 msgid "Bluetooth" msgstr "Bluetooth" #: js/ui/status/bluetooth.js:287 js/ui/status/network.js:1900 msgid "Bluetooth Settings" msgstr "Налады Bluetooth" #: js/ui/status/bluetooth.js:334 msgid "No available or connected devices" msgstr "Няма даступных або падлучаных прылад" #: js/ui/status/bluetooth.js:335 msgid "Turn on Bluetooth to connect to devices" msgstr "Уключыце Bluetooth, каб падлучыцца да прылад" #. Translators: This is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:389 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "Падлучана %d" msgstr[1] "Падлучана %d" msgstr[2] "Падлучана %d" #: js/ui/status/brightness.js:32 msgid "Brightness" msgstr "Яркасць" #: js/ui/status/darkMode.js:12 msgid "Dark Style" msgstr "Цёмны стыль" #: js/ui/status/dwellClick.js:15 msgid "Single Click" msgstr "Адзінарнае націсканне" #: js/ui/status/dwellClick.js:20 msgid "Double Click" msgstr "Падвойнае націсканне" #: js/ui/status/dwellClick.js:25 msgid "Drag" msgstr "Перацягванне" #: js/ui/status/dwellClick.js:30 msgid "Secondary Click" msgstr "Націсканне другой кнопкай" #: js/ui/status/dwellClick.js:39 msgid "Dwell Click" msgstr "Націсканне пры спыненні ўказальніка" #: js/ui/status/keyboard.js:896 msgid "Show Keyboard Layout" msgstr "Паказаць раскладку клавіятуры" #: js/ui/status/location.js:337 msgid "Allow location access" msgstr "Дазволіць доступ да месцазнаходжання" #. Translators: %s is an application name #: js/ui/status/location.js:339 #, javascript-format msgid "The app %s wants to access your location" msgstr "Праграма %s спрабуе атрымаць доступ да вашага месцазнаходжання" #: js/ui/status/location.js:349 msgid "Location access can be changed at any time from the privacy settings" msgstr "" "Доступ да месцазнаходжанне заўсёды можна змяніць праз налады прыватнасці" #: js/ui/status/location.js:357 msgid "Deny Access" msgstr "Забараніць доступ" #: js/ui/status/location.js:362 msgid "Grant Access" msgstr "Дазволіць доступ" #: js/ui/status/network.js:62 msgid "" msgstr "<невядома>" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:354 #, javascript-format msgid "Disconnect %s" msgstr "Адлучыцца ад %s" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:356 #, javascript-format msgid "Connect to %s" msgstr "Злучыцца з %s" #: js/ui/status/network.js:1050 msgid "Secure" msgstr "Бяспечная" #: js/ui/status/network.js:1050 msgid "Not secure" msgstr "Небяспечная" #: js/ui/status/network.js:1051 #, javascript-format msgid "Signal strength %s%%" msgstr "Сіла сігналу %s%%" #. translators: The first placeholder is the network name, the second and indication whether it is secure, and the last the signal strength indication #: js/ui/status/network.js:1053 #, javascript-format msgid "%s, %s, %s" msgstr "%s, %s, %s" #. Translators: %s is a network identifier #: js/ui/status/network.js:1155 #, javascript-format msgid "%s Hotspot" msgstr "Хот-спот %s" #: js/ui/status/network.js:1426 #, javascript-format msgid "%d connected" msgid_plural "%d connected" msgstr[0] "Падлучана %d" msgstr[1] "Падлучана %d" msgstr[2] "Падлучана %d" #: js/ui/status/network.js:1524 js/ui/status/network.js:1540 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1525 msgid "VPN Settings" msgstr "Налады VPN" #: js/ui/status/network.js:1785 msgid "Wi–Fi" msgstr "Wi–Fi" #: js/ui/status/network.js:1787 msgid "All Networks" msgstr "Усе сеткі" #: js/ui/status/network.js:1884 msgid "Wired Connections" msgstr "Правадныя злучэнні" #: js/ui/status/network.js:1885 msgid "Wired Settings" msgstr "Налады праваднога злучэння" #: js/ui/status/network.js:1899 msgid "Bluetooth Tethers" msgstr "Bluetooth Tethers" #. Translators: "Tether" from "Bluetooth Tether" #: js/ui/status/network.js:1906 msgid "Tether" msgstr "Tether" #: js/ui/status/network.js:1919 msgid "Mobile Connections" msgstr "Мабільныя злучэнні" #: js/ui/status/network.js:1921 msgid "Mobile Broadband Settings" msgstr "Налады мабільнага злучэння" #. Translators: "Mobile" from "Mobile Broadband" #: js/ui/status/network.js:1930 msgid "Mobile" msgstr "Мабільны" #: js/ui/status/network.js:1964 msgid "Sign Into Wi–Fi Network" msgstr "Уваход у сетку Wi–Fi" #: js/ui/status/network.js:2151 msgid "Connection failed" msgstr "Не ўдалося злучыцца" #: js/ui/status/network.js:2152 msgid "Activation of network connection failed" msgstr "Не ўдалося актываваць сеткавае злучэнне" #: js/ui/status/nightLight.js:19 msgid "Night Light" msgstr "Начное святло" #: js/ui/status/powerProfiles.js:19 msgctxt "Power profile" msgid "Performance" msgstr "Прадукцыйнасць" #: js/ui/status/powerProfiles.js:24 msgctxt "Power profile" msgid "Balanced" msgstr "Збалансаваны" #: js/ui/status/powerProfiles.js:29 msgctxt "Power profile" msgid "Power Saver" msgstr "Энергазберажэнне" #: js/ui/status/powerProfiles.js:39 js/ui/status/powerProfiles.js:69 msgid "Power Mode" msgstr "Рэжым сілкавання" #: js/ui/status/powerProfiles.js:71 msgid "Power Settings" msgstr "Налады сілкавання" #: js/ui/status/remoteAccess.js:74 msgid "Stop Screencast" msgstr "Спыніць запіс экрана" #: js/ui/status/remoteAccess.js:144 msgid "Stop Screen Sharing" msgstr "Спыніць супольны доступ да экрана" #: js/ui/status/rfkill.js:99 msgid "Airplane Mode" msgstr "Рэжым палёту" #: js/ui/status/system.js:168 msgid "Power Off Menu" msgstr "Меню выключэння" #: js/ui/status/system.js:176 msgid "Suspend" msgstr "Прыпыніць працу" #: js/ui/status/system.js:181 msgid "Restart…" msgstr "Перазапуск…" #: js/ui/status/system.js:186 msgid "Power Off…" msgstr "Выключыць…" #: js/ui/status/system.js:193 #: subprojects/extensions-app/data/ui/extensions-window.ui:124 msgid "Log Out…" msgstr "Выйсці…" #: js/ui/status/system.js:198 msgid "Switch User…" msgstr "Змяніць карыстальніка…" #: js/ui/status/system.js:242 msgctxt "action" msgid "Lock Screen" msgstr "Заблакіраваць экран" #: js/ui/status/thunderbolt.js:308 msgid "Unknown Thunderbolt device" msgstr "Невядомая прылада Thunderbolt" #: js/ui/status/thunderbolt.js:309 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" "Падчас вашай адсутнасці была выяўлена новая прылада. Каб пачаць ёй " "карыстацца, адлучыце і зноў падлучыце прыладу." #: js/ui/status/thunderbolt.js:312 msgid "Unauthorized Thunderbolt device" msgstr "Несанкцыянаваная прылада Thunderbolt" #: js/ui/status/thunderbolt.js:313 msgid "" "New device has been detected and needs to be authorized by an administrator" msgstr "Выяўлена новая прылада. Патрабуецца аўтарызацыя ад адміністратара" #: js/ui/status/thunderbolt.js:319 msgid "Thunderbolt authorization error" msgstr "Памылка аўтарызацыі Thunderbolt" #: js/ui/status/thunderbolt.js:320 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "Не ўдалося аўтарызаваць прыладу Thunderbolt: %s" #: js/ui/status/volume.js:218 msgid "Volume changed" msgstr "Гучнасць зменена" #: js/ui/status/volume.js:231 msgid "Unmute" msgstr "Уключыць гук" #: js/ui/status/volume.js:231 msgid "Mute" msgstr "Адключыць гук" #: js/ui/status/volume.js:286 msgid "Volume" msgstr "Гучнасць" #: js/ui/status/volume.js:302 msgid "Sound Output" msgstr "Аўдыявыхад" #: js/ui/status/volume.js:374 msgid "Sound Input" msgstr "Аўдыяўваход" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:20 msgid "Mirror" msgstr "Адлюстраванне" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:29 msgid "Join Displays" msgstr "Аб'яднаць дысплэі" #. Translators: this is for using only external displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:39 msgid "External Only" msgstr "Толькі знешні" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:47 msgid "Built-in Only" msgstr "Толькі ўбудаваны" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:378 msgid "%A %B %-d" msgstr "%A, %-d %B" #: js/ui/unlockDialog.js:384 msgid "Swipe up to unlock" msgstr "Правядзіце пальцам, каб разблакіраваць" #: js/ui/unlockDialog.js:385 msgid "Click or press a key to unlock" msgstr "Каб разблакіраваць, націсніце кнопку мышы ці клавіятуры" #: js/ui/unlockDialog.js:568 msgid "Unlock Window" msgstr "Разблакіраваць акно" #: js/ui/unlockDialog.js:577 msgid "Log in as another user" msgstr "Увайсці як іншы карыстальнік" #: js/ui/welcomeDialog.js:47 #, javascript-format msgid "GNOME %s" msgstr "GNOME %s" #: js/ui/welcomeDialog.js:51 #, javascript-format msgid "Welcome to %s" msgstr "Вітаем у %s" #: js/ui/welcomeDialog.js:52 msgid "If you want to learn your way around, check out the tour" msgstr "" "Калі хочаце азнаёміцца з новымі магчымасцямі, прапануем вам кароткі агляд" #: js/ui/welcomeDialog.js:61 msgid "Skip" msgstr "Прапусціць" #: js/ui/welcomeDialog.js:66 msgid "Take Tour" msgstr "Азнаёміцца" #: js/ui/windowAttentionHandler.js:18 #, javascript-format msgid "“%s” is ready" msgstr "«%s» гатова" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:68 msgid "Keep these display settings?" msgstr "Захаваць гэтыя налады дысплэя?" #: js/ui/windowManager.js:78 msgid "Revert Settings" msgstr "Скінуць змены налад" #: js/ui/windowManager.js:83 msgid "Keep Changes" msgstr "Захаваць змены" #: js/ui/windowManager.js:103 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "Змены налад будуць скінуты праз %d секунду" msgstr[1] "Змены налад будуць скінуты праз %d секунды" msgstr[2] "Змены налад будуць скінуты праз %d секунд" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:500 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:40 msgid "Hide" msgstr "Схаваць" #: js/ui/windowMenu.js:47 msgid "Restore" msgstr "Аднавіць" #: js/ui/windowMenu.js:51 msgid "Maximize" msgstr "Разгарнуць" #: js/ui/windowMenu.js:58 msgid "Move" msgstr "Перамясціць" #: js/ui/windowMenu.js:78 msgid "Resize" msgstr "Змяніць памер" #: js/ui/windowMenu.js:98 msgid "Always on Top" msgstr "Заўсёды зверху" #: js/ui/windowMenu.js:117 msgid "Always on Visible Workspace" msgstr "Заўсёды на бачнай працоўнай прасторы" #: js/ui/windowMenu.js:131 msgid "Move to Workspace Left" msgstr "Перамясціць на працоўную прастору лявей" #: js/ui/windowMenu.js:137 msgid "Move to Workspace Right" msgstr "Перамясціць на працоўную прастору правей" #: js/ui/windowMenu.js:143 msgid "Move to Workspace Up" msgstr "Перамясціць на працоўную прастору вышэй" #: js/ui/windowMenu.js:149 msgid "Move to Workspace Down" msgstr "Перамясціць на працоўную прастору ніжэй" #: js/ui/windowMenu.js:167 msgid "Move to Monitor Up" msgstr "Перамясціць на манітор вышэй" #: js/ui/windowMenu.js:176 msgid "Move to Monitor Down" msgstr "Перамясціць на манітор ніжэй" #: js/ui/windowMenu.js:185 msgid "Move to Monitor Left" msgstr "Перамясціць на манітор лявей" #: js/ui/windowMenu.js:194 msgid "Move to Monitor Right" msgstr "Перамясціць на манітор правей" #: js/ui/windowMenu.js:202 msgid "Close" msgstr "Закрыць" #: src/main.c:512 subprojects/extensions-tool/src/main.c:336 msgid "Print version" msgstr "Вывесці нумар версіі" #: src/main.c:518 msgid "Mode used by GDM for login screen" msgstr "Рэжым, які выкарыстоўвае GDM для экрана ўваходу" #: src/main.c:524 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "Выкарыстоўваць вызначаны рэжым, напрыклад, «gdm» для экрана ўваходу" #: src/main.c:530 msgid "List possible modes" msgstr "Спіс магчымых рэжымаў" #: src/main.c:536 msgid "Force animations to be enabled" msgstr "Прымусовае ўключэнне анімацыі" #: src/shell-app.c:252 msgctxt "program" msgid "Unknown" msgstr "Невядомая" #: src/shell-app.c:503 #, c-format msgid "Failed to launch “%s”" msgstr "Не ўдалося запусціць «%s»" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match" msgstr "Паролі не супадаюць" #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "Пароль не можа быць пустым" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "Праверкі сапраўднасці адхілена карыстальнікам" #: src/st/st-icon-theme.c:1865 #, c-format msgid "Icon '%s' not present in theme %s" msgstr "Значок «%s» адсутнічае ў тэме %s" #: src/st/st-icon-theme.c:3454 src/st/st-icon-theme.c:3757 msgid "Failed to load icon" msgstr "Не ўдалося загрузіць значок" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 msgid "Manage your GNOME Extensions" msgstr "Кіраванне пашырэннямі GNOME" #. developer_name tag deprecated with Appstream 1.0 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:19 msgid "The GNOME Project" msgstr "Праект GNOME" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:51 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" "Пашырэнні GNOME ажыццяўляюць абнаўленне і змяненне параметраў пашырэнняў, " "выдаленне або адключэнне непажаданых пашырэнняў." #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:64 msgid "Main Window" msgstr "Галоўнае акно" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:68 msgid "Available Updates" msgstr "Даступны абнаўленні" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:72 msgid "Search View" msgstr "Пошук" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "Наладзіць пашырэнні абалонкі GNOME" #: subprojects/extensions-app/js/extensionManager.js:237 #, javascript-format msgid "" "The installed version of this extension (%s) is incompatible with the " "current version of GNOME (%s). The extension has been disabled." msgstr "" "Усталяваная версія пашырэння (%s) несумяшчальная з бягучай версіяй GNOME " "(%s). Пашырэнне адключана." #: subprojects/extensions-app/js/extensionManager.js:238 #, javascript-format msgid "" "The installed version of this extension is incompatible with the current " "version of GNOME (%s). The extension has been disabled." msgstr "" "Усталяваная версія пашырэння несумяшчальная з бягучай версіяй GNOME (%s). " "Пашырэнне адключана." #: subprojects/extensions-app/js/extensionManager.js:242 msgid "" "An error has occurred in this extension. This could cause issues elsewhere " "in the system. It is recommended to turn the extension off until the error " "is resolved." msgstr "" "У гэтым пашырэнні адбылася памылка, што можа прывесці да праблем у іншых " "частках сістэмы. Пакуль памылка не будзе выпраўлена, рэкамендуецца адключыць " "пашырэнне." #. translators: Details for an extension error #: subprojects/extensions-app/js/extensionManager.js:248 msgid "Error details:" msgstr "Падрабязнасці памылкі:" #: subprojects/extensions-app/js/extensionRow.js:82 #, javascript-format msgid "Version %s" msgstr "Версія %s" #: subprojects/extensions-app/js/extensionsWindow.js:113 #, javascript-format msgid "Remove “%s”?" msgstr "Выдаліць «%s»?" #: subprojects/extensions-app/js/extensionsWindow.js:114 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "" "Калі выдаліць пашырэнне і потым уключыць яго зноў, спатрэбіцца паўторнае " "спампоўванне" #: subprojects/extensions-app/js/extensionsWindow.js:117 msgid "_Cancel" msgstr "_Скасаваць" #: subprojects/extensions-app/js/extensionsWindow.js:118 msgid "_Remove" msgstr "_Выдаліць" #: subprojects/extensions-app/js/extensionsWindow.js:158 msgid "translator-credits" msgstr "" "Ihar Hrachyshka \n" "Kasia Bondarava \n" "Yuras Shumovich " #: subprojects/extensions-app/js/extensionsWindow.js:203 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "Падчас наступнага ўваходу ў сістэму абновіцца %d пашырэнне." msgstr[1] "Падчас наступнага ўваходу ў сістэму абновіцца %d пашырэнні." msgstr[2] "Падчас наступнага ўваходу ў сістэму абновіцца %d пашырэнняў." #: subprojects/extensions-app/data/ui/extension-row.ui:22 msgid "Error Details" msgstr "Падрабязнасці памылкі" #: subprojects/extensions-app/data/ui/extension-row.ui:62 msgid "Updates Details" msgstr "Падрабязнасці абнаўлення" #: subprojects/extensions-app/data/ui/extension-row.ui:72 msgid "" "A new version of this extension is ready and will be loaded on next login." msgstr "" "Новая версія пашырэння гатова да выкарыстання, яна будзе загружана падчас " "наступнага ўваходу ў сістэму." #: subprojects/extensions-app/data/ui/extension-row.ui:104 msgid "Extension Details" msgstr "Звесткі аб пашырэнні" #: subprojects/extensions-app/data/ui/extension-row.ui:192 msgid "_Website" msgstr "_Вэб-сайт" #: subprojects/extensions-app/data/ui/extension-row.ui:219 msgid "_Settings" msgstr "_Налады" #: subprojects/extensions-app/data/ui/extension-row.ui:246 msgid "_Remove…" msgstr "_Выдаліць…" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Keyboard Shortcuts" msgstr "Спалучэнні клавіш" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "Пра пашырэнні" #: subprojects/extensions-app/data/ui/extensions-window.ui:64 msgid "Main Menu" msgstr "Галоўнае меню" #: subprojects/extensions-app/data/ui/extensions-window.ui:106 msgid "Search extensions" msgstr "Пошук пашырэнняў" #: subprojects/extensions-app/data/ui/extensions-window.ui:134 msgid "_Extensions" msgstr "_Пашырэнні" #: subprojects/extensions-app/data/ui/extensions-window.ui:139 msgid "More Information" msgstr "Дадатковыя звесткі" #: subprojects/extensions-app/data/ui/extensions-window.ui:151 msgid "" "Extensions can cause performance and stability issues. It is recommended to " "disable all extensions if you experience problems with your system." msgstr "" "Пашырэнні могуць выклікаць праблемы з прадукцыйнасцю і стабільнасцю. " "Рэкамендуецца адключыць усе пашырэнні, калі вы сутыкнуліся з праблемамі ў " "сваёй сістэме." #: subprojects/extensions-app/data/ui/extensions-window.ui:178 msgid "User Extensions" msgstr "Пашырэнні карыстальніка" #: subprojects/extensions-app/data/ui/extensions-window.ui:198 msgid "System Extensions" msgstr "Сістэмныя пашырэнні" #: subprojects/extensions-app/data/ui/extensions-window.ui:233 msgid "Search Results" msgstr "Вынікі пошуку" #: subprojects/extensions-app/data/ui/extensions-window.ui:252 msgid "No Results Found" msgstr "Нічога не знойдзена" #: subprojects/extensions-app/data/ui/extensions-window.ui:253 msgid "Try a different search" msgstr "Паспрабуйце змяніць пошукавы запыт" #: subprojects/extensions-app/data/ui/extensions-window.ui:264 msgid "No Installed Extensions" msgstr "Няма ўсталяваных пашырэнняў" #: subprojects/extensions-app/data/ui/extensions-window.ui:265 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" "Каб знайсці і дадаць пашырэнні, наведайце extensions.gnome.org." #: subprojects/extensions-app/data/ui/extensions-window.ui:276 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" "На жаль, немагчыма атрымаць спіс усталяваных пашырэнняў. Праверце, ці " "ўвайшлі вы ў GNOME і паўтарыце спробу." #: subprojects/extensions-app/data/ui/help-overlay.ui:9 msgctxt "shortcut window" msgid "General" msgstr "Агульныя" #: subprojects/extensions-app/data/ui/help-overlay.ui:12 msgctxt "shortcut window" msgid "Open Menu" msgstr "Адкрыць меню" #: subprojects/extensions-app/data/ui/help-overlay.ui:18 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Пошук" #: subprojects/extensions-app/data/ui/help-overlay.ui:24 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Паказаць спалучэнні клавіш" #: subprojects/extensions-app/data/ui/help-overlay.ui:30 msgctxt "shortcut window" msgid "Quit" msgstr "Выйсці" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:284 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "Новае пашырэнне створана ў %s.\n" #: subprojects/extensions-tool/src/command-create.c:376 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" "Назва — кароткая (лепш за ўсё апісальная) фраза ці слова.\n" "Прыклады: %s" #: subprojects/extensions-tool/src/command-create.c:382 #: subprojects/extensions-tool/src/main.c:243 msgid "Name" msgstr "Назва" #: subprojects/extensions-tool/src/command-create.c:396 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" "Апісанне — тлумачэнне адным сказам, што робіць ваша пашырэнне.\n" "Прыклады: %s" #: subprojects/extensions-tool/src/command-create.c:402 #: subprojects/extensions-tool/src/main.c:246 msgid "Description" msgstr "Апісанне" #: subprojects/extensions-tool/src/command-create.c:416 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" "UUID — усеагульны ўнікальны ідэнтыфікатар вашага пашырэння.\n" "Ён павінен мець фармат адраса электроннай пошты (nazva@jankupala.pryklad." "com)\n" #: subprojects/extensions-tool/src/command-create.c:443 msgid "Choose one of the available templates:\n" msgstr "Выберыце адзін з даступных шаблонаў:\n" #: subprojects/extensions-tool/src/command-create.c:457 msgid "Template" msgstr "Шаблон" #: subprojects/extensions-tool/src/command-create.c:515 msgid "The unique identifier of the new extension" msgstr "Унікальны ідэнтыфікатар новага пашырэння" #: subprojects/extensions-tool/src/command-create.c:518 msgid "NAME" msgstr "НАЗВА" #: subprojects/extensions-tool/src/command-create.c:519 msgid "The user-visible name of the new extension" msgstr "Назва новага пашырэння, якую бачыць карыстальнік" #: subprojects/extensions-tool/src/command-create.c:521 msgid "DESCRIPTION" msgstr "АПІСАННЕ" #: subprojects/extensions-tool/src/command-create.c:523 msgid "A short description of what the extension does" msgstr "Кароткае апісанне, што робіць пашырэнне" #: subprojects/extensions-tool/src/command-create.c:525 #: subprojects/extensions-tool/src/command-pack.c:455 msgid "DOMAIN" msgstr "ДАМЕН" #: subprojects/extensions-tool/src/command-create.c:527 msgid "The gettext domain used by the extension" msgstr "Дамен gettext, які выкарыстоўваецца пашырэннем" #: subprojects/extensions-tool/src/command-create.c:529 #: subprojects/extensions-tool/src/command-pack.c:448 msgid "SCHEMA" msgstr "СХЕМА" #: subprojects/extensions-tool/src/command-create.c:531 msgid "The GSettings schema used by the extension" msgstr "Схема GSettings, якая выкарыстоўваецца пашырэннем" #: subprojects/extensions-tool/src/command-create.c:534 msgid "TEMPLATE" msgstr "ШАБЛОН" #: subprojects/extensions-tool/src/command-create.c:535 msgid "The template to use for the new extension" msgstr "Шаблон для новых пашырэнняў" #: subprojects/extensions-tool/src/command-create.c:538 msgid "Include prefs.js template" msgstr "Уключыць шаблон prefs.js" #: subprojects/extensions-tool/src/command-create.c:544 msgid "Enter extension information interactively" msgstr "Інтэрактыўны ўвод інфармацыі аб пашырэнні" #: subprojects/extensions-tool/src/command-create.c:552 msgid "Create a new extension" msgstr "Стварыць новае пашырэнне" #: subprojects/extensions-tool/src/command-create.c:570 #: subprojects/extensions-tool/src/command-list.c:190 msgid "Unknown arguments" msgstr "Невядомыя аргументы" #: subprojects/extensions-tool/src/command-create.c:595 msgid "UUID, name and description are required" msgstr "Патрабуецца UUID, назва і апісанне" #: subprojects/extensions-tool/src/command-disable.c:62 #: subprojects/extensions-tool/src/command-enable.c:62 #, c-format msgid "Extension “%s” does not exist\n" msgstr "Пашырэнне «%s» не існуе\n" #: subprojects/extensions-tool/src/command-disable.c:98 msgid "Disable an extension" msgstr "Адключыць пашырэнне" #: subprojects/extensions-tool/src/command-disable.c:116 #: subprojects/extensions-tool/src/command-enable.c:116 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "UUID не ўказаны" #: subprojects/extensions-tool/src/command-disable.c:121 #: subprojects/extensions-tool/src/command-enable.c:121 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "Указана больш за адзін UUID" #: subprojects/extensions-tool/src/command-enable.c:98 msgid "Enable an extension" msgstr "Уключыць пашырэнне" #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:66 #: subprojects/extensions-tool/src/main.c:150 msgid "Failed to connect to GNOME Shell\n" msgstr "Не ўдалося злучыцца з абалонкай GNOME\n" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:159 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "Пашырэнне «%s» не існуе\n" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "Паказаць звесткі аб пашырэнні" #: subprojects/extensions-tool/src/command-install.c:190 msgid "Overwrite an existing extension" msgstr "Перазапісаць існуючае пашырэнне" #: subprojects/extensions-tool/src/command-install.c:192 msgid "EXTENSION_BUNDLE" msgstr "ПАКЕТ_ПАШЫРЭННЯ" #: subprojects/extensions-tool/src/command-install.c:201 msgid "Install an extension bundle" msgstr "Усталяваць пакет пашырэння" #: subprojects/extensions-tool/src/command-install.c:219 msgid "No extension bundle specified" msgstr "Не ўказаны пакет пашырэння" #: subprojects/extensions-tool/src/command-install.c:225 msgid "More than one extension bundle specified" msgstr "Указана больш за адзін пакет пашырэння" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show user-installed extensions" msgstr "Паказаць пашырэнні ўсталяваныя карыстальнікам" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show system-installed extensions" msgstr "Паказаць пашырэнні ўсталяваныя сістэмай" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Show enabled extensions" msgstr "Паказаць уключаныя пашырэнні" #: subprojects/extensions-tool/src/command-list.c:149 msgid "Show disabled extensions" msgstr "Паказаць адключаныя пашырэнні" #: subprojects/extensions-tool/src/command-list.c:152 msgid "Show extensions in active state" msgstr "Паказаць актыўныя пашырэнні" #: subprojects/extensions-tool/src/command-list.c:155 msgid "Show extensions in inactive state" msgstr "Паказаць неактыўныя пашырэнні" #: subprojects/extensions-tool/src/command-list.c:158 msgid "Show extensions with preferences" msgstr "Паказаць пашырэнні з параметрамі" #: subprojects/extensions-tool/src/command-list.c:161 msgid "Show extensions with updates" msgstr "Паказаць пашырэнні з абнаўленнямі" #: subprojects/extensions-tool/src/command-list.c:164 msgid "Print extension details" msgstr "Вывесці звесткі аб пашырэнні" #: subprojects/extensions-tool/src/command-list.c:172 msgid "List installed extensions" msgstr "Спіс усталяваных пашырэнняў" #: subprojects/extensions-tool/src/command-pack.c:444 msgid "FILE" msgstr "ФАЙЛ" #: subprojects/extensions-tool/src/command-pack.c:445 msgid "Additional source to include in the bundle" msgstr "Дадатковая крыніца для ўключэння ў пакет" #: subprojects/extensions-tool/src/command-pack.c:449 msgid "A GSettings schema that should be included" msgstr "Схема GSettings якую трэба ўключыць" #: subprojects/extensions-tool/src/command-pack.c:451 #: subprojects/extensions-tool/src/command-pack.c:462 msgid "DIRECTORY" msgstr "КАТАЛОГ" #: subprojects/extensions-tool/src/command-pack.c:453 msgid "The directory where translations are found" msgstr "Каталог, у якім знаходзяцца пераклады" #: subprojects/extensions-tool/src/command-pack.c:457 msgid "The gettext domain to use for translations" msgstr "Дамен gettext, які выкарыстоўваецца для перакладу" #: subprojects/extensions-tool/src/command-pack.c:460 msgid "Overwrite an existing pack" msgstr "Перазапісаць існуючы пакет" #: subprojects/extensions-tool/src/command-pack.c:464 msgid "The directory where the pack should be created" msgstr "Каталог, у якім будзе створаны пакет" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "SOURCE_DIRECTORY" msgstr "ЗЫХОДНЫ_КАТАЛОГ" #: subprojects/extensions-tool/src/command-pack.c:475 msgid "Create an extension bundle" msgstr "Стварыць пакет пашырэння" #: subprojects/extensions-tool/src/command-pack.c:495 msgid "More than one source directory specified" msgstr "Указана больш за адзін зыходны каталог" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "У пашырэння «%s» няма параметраў\n" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "Не ўдалося адкрыць параметры пашырэння «%s»: %s\n" #: subprojects/extensions-tool/src/command-prefs.c:87 msgid "Opens extension preferences" msgstr "Адкрывае параметры пашырэння" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "Скінуць пашырэнне" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "Нельга выдаляць сістэмныя пашырэнні\n" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "Не ўдалося выдаліць «%s»\n" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "Выдаліць пашырэнне" #: subprojects/extensions-tool/src/main.c:76 msgid "Do not print error messages" msgstr "Не выводзіць паведамленні пра памылкі" #: subprojects/extensions-tool/src/main.c:249 msgid "Path" msgstr "Шлях" #: subprojects/extensions-tool/src/main.c:252 msgid "URL" msgstr "URL-адрас" #: subprojects/extensions-tool/src/main.c:255 msgid "Original author" msgstr "Першы аўтар" #: subprojects/extensions-tool/src/main.c:261 #: subprojects/extensions-tool/src/main.c:263 #: subprojects/extensions-tool/src/main.c:265 msgid "Version" msgstr "Версія" #: subprojects/extensions-tool/src/main.c:268 msgid "Enabled" msgstr "Уключана" #: subprojects/extensions-tool/src/main.c:268 msgid "Yes" msgstr "Так" #: subprojects/extensions-tool/src/main.c:268 msgid "No" msgstr "Не" #: subprojects/extensions-tool/src/main.c:271 msgid "State" msgstr "Стан" #: subprojects/extensions-tool/src/main.c:309 msgid "“version” takes no arguments" msgstr "«version» не прымае аргументаў" #: subprojects/extensions-tool/src/main.c:311 #: subprojects/extensions-tool/src/main.c:331 msgid "Usage:" msgstr "Выкарыстанне:" #: subprojects/extensions-tool/src/main.c:314 msgid "Print version information and exit." msgstr "Вывесці звесткі пра версію і выйсці." #: subprojects/extensions-tool/src/main.c:329 #: subprojects/extensions-tool/src/main.c:332 msgid "COMMAND" msgstr "КАМАНДА" #: subprojects/extensions-tool/src/main.c:332 msgid "[ARGS…]" msgstr "[АРГУМЕНТЫ…]" #: subprojects/extensions-tool/src/main.c:334 msgid "Commands:" msgstr "Каманды:" #: subprojects/extensions-tool/src/main.c:335 msgid "Print help" msgstr "Вывесці даведку" #: subprojects/extensions-tool/src/main.c:337 msgid "Enable extension" msgstr "Уключыць пашырэнне" #: subprojects/extensions-tool/src/main.c:338 msgid "Disable extension" msgstr "Адключыць пашырэнне" #: subprojects/extensions-tool/src/main.c:339 msgid "Reset extension" msgstr "Скінуць пашырэнне" #: subprojects/extensions-tool/src/main.c:340 msgid "Uninstall extension" msgstr "Выдаліць пашырэнне" #: subprojects/extensions-tool/src/main.c:341 msgid "List extensions" msgstr "Спіс пашырэнняў" #: subprojects/extensions-tool/src/main.c:342 #: subprojects/extensions-tool/src/main.c:343 msgid "Show extension info" msgstr "Паказаць звесткі аб пашырэнні" #: subprojects/extensions-tool/src/main.c:344 msgid "Open extension preferences" msgstr "Адкрыць параметры пашырэння" #: subprojects/extensions-tool/src/main.c:345 msgid "Create extension" msgstr "Стварыць пашырэнне" #: subprojects/extensions-tool/src/main.c:346 msgid "Package extension" msgstr "Запакаваць пашырэнне" #: subprojects/extensions-tool/src/main.c:347 msgid "Install extension bundle" msgstr "Усталяваць пакет пашырэння" #: subprojects/extensions-tool/src/main.c:349 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "Выкарыстоўвайце «%s», каб атрымаць падрабязную даведку.\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "Просты" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "Пустое пашырэнне" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "Індыкатар" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "Дадаць значок у верхнюю панэль" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:4 msgid "Quick Settings Item" msgstr "Элемент хуткіх налад" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:5 msgid "Add an item to quick settings" msgstr "Дадаць элемент у хуткія налады" #. translators: #. * The device has been disabled #: subprojects/gvc/gvc-mixer-control.c:1872 msgid "Disabled" msgstr "Выключана" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1879 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u выхад" msgstr[1] "%u выхады" msgstr[2] "%u выхадаў" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1889 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u аўдыяўваход" msgstr[1] "%u аўдыяўваходы" msgstr[2] "%u аўдыяўваходаў" #: subprojects/gvc/gvc-mixer-control.c:2872 msgid "System Sounds" msgstr "Сістэмныя гукі" #~ msgid "Move Titlebar Onscreen" #~ msgstr "Перамясціць панэль загалоўка на экран" #, javascript-format #~ msgid "%s is now known as %s" #~ msgstr "%s змяніў імя на %s" #~ msgid "Network Manager" #~ msgstr "Менеджар сетак" #~ msgid "System Information" #~ msgstr "Сістэмная інфармацыя" #~ msgid "Thunderbolt" #~ msgstr "Thunderbolt" #~ msgid "Disabling" #~ msgstr "Адключэнне" #~ msgid "Enabling" #~ msgstr "Уключэнне" #, javascript-format #~ msgid "%d %%" #~ msgstr "%d %%" #~ msgid "No Thanks" #~ msgstr "Не, дзякуй" #~ msgid "No Matches" #~ msgstr "Няма супадзенняў" #~ msgid "The extension had an error" #~ msgstr "Пашырэнне змяшчае памылку" #~ msgid "The extension can be updated" #~ msgstr "Пашырэнне можа быць абноўлена" #~ msgid "Help" #~ msgstr "Даведка" #~ msgid "Manually Installed" #~ msgstr "Усталяваныя ўручную" #~ msgid "Built-In" #~ msgstr "Убудаваныя" #~ msgid "Extension Updates Ready" #~ msgstr "Даступны абнаўленні пашырэнняў" #~ msgid "Open the app menu" #~ msgstr "Адкрыць меню праграм" #~ msgid "Keybinding to open the application menu" #~ msgstr "Спалучэнне клавіш, каб адкрыць меню актыўнай праграмы" #~ msgid "Keybinding to open the application menu." #~ msgstr "Спалучэнне клавіш, каб адкрыць меню актыўнай праграмы." #~ msgid "Screenshot / Screencast" #~ msgstr "Здымак экрана / Запіс экрана" #~ msgid "Power Profiles" #~ msgstr "Профілі сілкавання" #~ msgid "Evolution Calendar" #~ msgstr "Каляндар Evolution" #~ msgid "Applications" #~ msgstr "Праграмы" #, javascript-format #~ msgid "Unable to start %s" #~ msgstr "Не ўдалося запусціць %s" #, javascript-format #~ msgid "Couldn’t find the %s application" #~ msgstr "Не ўдалося знайсці праграму %s" 0707010000021E000081A40000000000000000000000016712993F0001DC61000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/bg.po# Bulgarian translation of gnome-shell po-file. # Copyright (C) 2010, 2011, 2012, 2013, 2014 Free Software Foundation, Inc. # Copyright (C) 2015, 2016, 2017 Free Software Foundation, Inc. # Copyright (C) 2021, 2022, 2023 Alexander Shopov. # Copyright (C) 2024 twlvnn kraftwerk. # This file is distributed under the same license as the gnome-shell package. # Ivaylo Valkov , 2010, 2011, 2012, 2013, 2014. # Alexander Shopov , 2012, 2015, 2016, 2017, 2021, 2022, 2023. # twlvnn kraftwerk , 2024. # msgid "" msgstr "" "Project-Id-Version: gnome-shell main\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues/\n" "POT-Creation-Date: 2024-09-02 07:17+0000\n" "PO-Revision-Date: 2024-09-02 10:35+0200\n" "Last-Translator: twlvnn kraftwerk \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: Gtranslator 46.1\n" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "Стартери" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate pinned app 1" msgstr "Стартиране на закачена програма 1" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate pinned app 2" msgstr "Стартиране на закачена програма 2" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate pinned app 3" msgstr "Стартиране на закачена програма 3" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate pinned app 4" msgstr "Стартиране на закачена програма 4" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate pinned app 5" msgstr "Стартиране на закачена програма 5" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate pinned app 6" msgstr "Стартиране на закачена програма 6" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate pinned app 7" msgstr "Стартиране на закачена програма 7" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate pinned app 8" msgstr "Стартиране на закачена програма 8" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate pinned app 9" msgstr "Стартиране на закачена програма 9" #: data/50-gnome-shell-launchers.xml:46 msgid "Open new window of pinned app 1" msgstr "Отваряне на нов прозорец за закачена програма 1" #: data/50-gnome-shell-launchers.xml:50 msgid "Open new window of pinned app 2" msgstr "Отваряне на нов прозорец за закачена програма 2" #: data/50-gnome-shell-launchers.xml:54 msgid "Open new window of pinned app 3" msgstr "Отваряне на нов прозорец за закачена програма 3" #: data/50-gnome-shell-launchers.xml:58 msgid "Open new window of pinned app 4" msgstr "Отваряне на нов прозорец за закачена програма 4" #: data/50-gnome-shell-launchers.xml:62 msgid "Open new window of pinned app 5" msgstr "Отваряне на нов прозорец за закачена програма 5" #: data/50-gnome-shell-launchers.xml:66 msgid "Open new window of pinned app 6" msgstr "Отваряне на нов прозорец за закачена програма 6" #: data/50-gnome-shell-launchers.xml:70 msgid "Open new window of pinned app 7" msgstr "Отваряне на нов прозорец за закачена програма 7" #: data/50-gnome-shell-launchers.xml:74 msgid "Open new window of pinned app 8" msgstr "Отваряне на нов прозорец за закачена програма 8" #: data/50-gnome-shell-launchers.xml:78 msgid "Open new window of pinned app 9" msgstr "Отваряне на нов прозорец за закачена програма 9" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2274 msgid "Screenshots" msgstr "Снимки на екрана" #: data/50-gnome-shell-screenshots.xml:9 #: data/org.gnome.shell.gschema.xml.in:287 msgid "Take a screenshot interactively" msgstr "Интерактивно снимане на екрана" #: data/50-gnome-shell-screenshots.xml:12 #: data/org.gnome.shell.gschema.xml.in:299 msgid "Take a screenshot" msgstr "Снимка на екрана" #: data/50-gnome-shell-screenshots.xml:15 #: data/org.gnome.shell.gschema.xml.in:295 msgid "Take a screenshot of a window" msgstr "Снимка на прозорец" #: data/50-gnome-shell-screenshots.xml:18 #: data/org.gnome.shell.gschema.xml.in:291 msgid "Record a screencast interactively" msgstr "Интерактивен запис на екрана" #: data/50-gnome-shell-system.xml:6 js/ui/messageTray.js:1298 msgid "System" msgstr "Системни" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "Показване на списъка с известия" #: data/50-gnome-shell-system.xml:12 msgid "Open the quick settings menu" msgstr "Отваряне на менюто за бързи настройки" #: data/50-gnome-shell-system.xml:15 msgid "Focus the active notification" msgstr "Фокусиране на активното известие" #: data/50-gnome-shell-system.xml:18 msgid "Show the overview" msgstr "Показване на прегледа на дейностите" #: data/50-gnome-shell-system.xml:21 msgid "Show all apps" msgstr "Показване на всички програми" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "Обвивка на GNOME" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "Управление на прозорци и стартиране на програми" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" "Включване на вътрешни инструменти полезни за разработчици и изпитатели чрез " "Alt-F2" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Разрешаване на достъпа до вътрешни инструменти за наблюдение и изчистване " "грешки чрез Alt-F2." #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "Идентификатори на разширенията за включване" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "Разширенията на „Обвивката на GNOME“ имат идентификатор (UUID). Този ключ " "съдържа списък на разширенията, които да се зареждат. Само разширения " "включени в списъка ще бъдат заредени. Можете да променяте този списък с " "методите на D-Bus — „EnableExtension“ и „DisableExtension“ на org.gnome." "Shell." #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "Идентификатори на разширенията за изключване" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" "Разширенията на „Обвивката на GNOME“ имат идентификатор (UUID). Този ключ " "съдържа списък на разширенията, които да се изключат дори и да са част от " "текущия режим. Можете да променяте този списък с методите на D-Bus — " "„EnableExtension“ и „DisableExtension“ на org.gnome.Shell. Тази настройка е " "с превес над „enabled-estensions“." #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "Изключване на потребителските разширения" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" "Изключване на всички включени от потребителя разширения без промяна на " "настройката „enabled-extension“." #: data/org.gnome.shell.gschema.xml.in:45 msgid "Allow extension installation" msgstr "Позволяване на разширението да се инсталира" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "Allow users to install extensions in their home folder. If disabled, the " "InstallRemoteExtension D-Bus method will fail, and extensions are only " "loaded from system directories on startup. It does not affect extensions " "that are already loaded, so a change only takes full effect on the next " "login." msgstr "" "Позволете на потребителите да инсталират разширения в домашната си папка. " "Ако е изключено, методът на D-Bus InstallRemoteExtension винаги ще връща " "грешка и разширенията ще се зареждат само от системните директории при " "стартиране. Това не засяга разширенията, които вече са заредени, така че " "промяната влиза в сила при следващото влизане." #: data/org.gnome.shell.gschema.xml.in:56 msgid "Disables the validation of extension version compatibility" msgstr "Изключване на проверката за съвместимостта на версиите на разширенията" #: data/org.gnome.shell.gschema.xml.in:57 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "Обвивката на GNOME ще зарежда само разширения, които изрично са заявили, че " "поддържат текущата версия. Избирането на тази функция изключва проверката за " "съвместимост и зарежда разширенията независимо от версията." #: data/org.gnome.shell.gschema.xml.in:65 msgid "List of desktop file IDs for favorite applications" msgstr "" "Списък на идентификаторите на файловете във формат „.desktop“ за любими " "програми" #: data/org.gnome.shell.gschema.xml.in:66 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" "Програмите, които отговарят на тези идентификатор, ще бъдат показани в " "областта „Любими“." #: data/org.gnome.shell.gschema.xml.in:73 msgid "History for command (Alt-F2) dialog" msgstr "История на командата Alt-F2" #. Translators: looking glass is a debugger and inspector tool, see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/docs/looking-glass.md #: data/org.gnome.shell.gschema.xml.in:78 msgid "History for the looking glass dialog" msgstr "История на прозореца на дебъгера" #: data/org.gnome.shell.gschema.xml.in:82 msgid "Always show the “Log Out” action in the system menu" msgstr "Винаги да се показва „Изход“ в менюто на системата" #: data/org.gnome.shell.gschema.xml.in:83 msgid "" "This key overrides the automatic hiding of the “Log out” action in the " "system menu for logged-in situations where there is a single, local, non-" "system user and only a single available session type (e.g. GNOME on Wayland)." msgstr "" "Този ключ предефинира автоматичното скриване на обекта „Изход“ от менюто в " "режими с един, несистемен потребител или единичен вид сесия (например GNOME " "с Wayland)." #: data/org.gnome.shell.gschema.xml.in:92 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "Дали да се запазват пароли за монтиране на шифрирани или отдалечени файлови " "системи" #: data/org.gnome.shell.gschema.xml.in:93 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "Обвивката ще поиска парола, когато се монтира шифрирано устройство или " "отдалечена файлова система. Ще се предостави отметка „Запомняне на " "паролата“, ако е възможно запазването на паролата за по-късно използване." #: data/org.gnome.shell.gschema.xml.in:102 msgid "The last selected non-default power profile" msgstr "Последно избран профил за захранване, различен от стандартния" #: data/org.gnome.shell.gschema.xml.in:103 msgid "" "Some systems support more than two power profiles. In order to still support " "toggling between two profiles, this key records the last selected non-" "default profile." msgstr "" "Някои системи разполагат с повече от два профила за захранване. За да работи " "превключването, този ключ съдържа последно избрания профил, който не е " "стандартния." #: data/org.gnome.shell.gschema.xml.in:111 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "Последна версия, за която е показван прозореца „Добре дошли в GNOME“" #: data/org.gnome.shell.gschema.xml.in:112 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can " "be used to effectively disable the dialog." msgstr "" "Ключът съдържа версията на GNOME, за която прозорецът „Добре дошли в GNOME“ " "е показван. Празен низ указва възможно най-стара версия, а прекалено голямо " "число ще сочи версия, която още не съществува. Ако попълнете такова голямо " "число, изключвате прозореца на практика." #: data/org.gnome.shell.gschema.xml.in:145 msgid "Layout of the app picker" msgstr "Подредба на избора на програми" #: data/org.gnome.shell.gschema.xml.in:146 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" msgstr "" "Подредба на избора на програми. Всеки запис в масива е страница. Подредбата " "указва реда им в „Обвивката на GNOME“. Всеки запис на страница съдържа " "двойка „идентификатор на програма“ → „данни“. Текущо следните стойности се " "съхраняват като данни: • „position“: местоположение на иконата програмата на " "страницата" #: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:172 msgid "Keybinding to shift between overview states" msgstr "Клавишна комбинация за смяна на изгледа" #: data/org.gnome.shell.gschema.xml.in:166 msgid "Keybinding to shift between session, window picker and app grid" msgstr "" "Клавишна комбинация за преминаване към сесия, към управлението на прозорци и " "към решетката на програмите" #: data/org.gnome.shell.gschema.xml.in:173 msgid "Keybinding to shift between app grid, window picker and session" msgstr "" "Клавишна комбинация за преминаване към решетката на програмите, към " "управлението на прозорци и към сесия" #: data/org.gnome.shell.gschema.xml.in:179 msgid "Keybinding to open the “Show Applications” view" msgstr "Клавишна комбинация за отваряне на изгледа „Показване на програмите“" #: data/org.gnome.shell.gschema.xml.in:180 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "" "Клавишна комбинация за отваряне на изгледа „Показване на програмите“ за " "прегледа на дейностите." #: data/org.gnome.shell.gschema.xml.in:187 msgid "Keybinding to open the overview" msgstr "Клавишна комбинация за отваряне на изгледа „Прегледа на дейностите“" #: data/org.gnome.shell.gschema.xml.in:188 msgid "Keybinding to open the Activities Overview." msgstr "Клавишна комбинация за отваряне на изгледа „Прегледа на дейностите“." #: data/org.gnome.shell.gschema.xml.in:194 msgid "Keybinding to toggle the visibility of the notification list" msgstr "Клавишна комбинация за показване/скриване на областта за известия" #: data/org.gnome.shell.gschema.xml.in:195 msgid "Keybinding to toggle the visibility of the notification list." msgstr "Клавишна комбинация за показване/скриване на областта за известия." #: data/org.gnome.shell.gschema.xml.in:201 msgid "Keybinding to toggle the quick settings menu" msgstr "Клавишна комбинация за превключване на менюто за бързи настройки" #: data/org.gnome.shell.gschema.xml.in:202 msgid "Keybinding to toggle the quick settings menu." msgstr "Клавишна комбинация за превключване на менюто за бързи настройки." #: data/org.gnome.shell.gschema.xml.in:208 msgid "Keybinding to focus the active notification" msgstr "Клавишна комбинация за фокусиране на текущото известие" #: data/org.gnome.shell.gschema.xml.in:209 msgid "Keybinding to focus the active notification." msgstr "Клавишна комбинация за фокусиране на текущото известие." #: data/org.gnome.shell.gschema.xml.in:215 msgid "Switch to application 1" msgstr "Към програма 1" #: data/org.gnome.shell.gschema.xml.in:219 msgid "Switch to application 2" msgstr "Към програма 2" #: data/org.gnome.shell.gschema.xml.in:223 msgid "Switch to application 3" msgstr "Към програма 3" #: data/org.gnome.shell.gschema.xml.in:227 msgid "Switch to application 4" msgstr "Към програма 4" #: data/org.gnome.shell.gschema.xml.in:231 msgid "Switch to application 5" msgstr "Към програма 5" #: data/org.gnome.shell.gschema.xml.in:235 msgid "Switch to application 6" msgstr "Към програма 6" #: data/org.gnome.shell.gschema.xml.in:239 msgid "Switch to application 7" msgstr "Към програма 7" #: data/org.gnome.shell.gschema.xml.in:243 msgid "Switch to application 8" msgstr "Към програма 8" #: data/org.gnome.shell.gschema.xml.in:247 msgid "Switch to application 9" msgstr "Към програма 9" #: data/org.gnome.shell.gschema.xml.in:251 msgid "Open a new instance of application 1" msgstr "Отваряне на нов прозорец за програма 1" #: data/org.gnome.shell.gschema.xml.in:255 msgid "Open a new instance of application 2" msgstr "Отваряне на нов прозорец за програма 2" #: data/org.gnome.shell.gschema.xml.in:259 msgid "Open a new instance of application 3" msgstr "Отваряне на нов прозорец за програма 3" #: data/org.gnome.shell.gschema.xml.in:263 msgid "Open a new instance of application 4" msgstr "Отваряне на нов прозорец за програма 4" #: data/org.gnome.shell.gschema.xml.in:267 msgid "Open a new instance of application 5" msgstr "Отваряне на нов прозорец за програма 5" #: data/org.gnome.shell.gschema.xml.in:271 msgid "Open a new instance of application 6" msgstr "Отваряне на нов прозорец за програма 6" #: data/org.gnome.shell.gschema.xml.in:275 msgid "Open a new instance of application 7" msgstr "Отваряне на нов прозорец за програма 7" #: data/org.gnome.shell.gschema.xml.in:279 msgid "Open a new instance of application 8" msgstr "Отваряне на нов прозорец за програма 8" #: data/org.gnome.shell.gschema.xml.in:283 msgid "Open a new instance of application 9" msgstr "Отваряне на нов прозорец за програма 9" #: data/org.gnome.shell.gschema.xml.in:308 #: data/org.gnome.shell.gschema.xml.in:335 msgid "Limit switcher to current workspace." msgstr "Ограничаване на превключването до текущия работен плот." #: data/org.gnome.shell.gschema.xml.in:309 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "Ако е истина, само програмите с прозорци на текущият работен плот се " "превключват. В противен случай се превключва между всички програми." #: data/org.gnome.shell.gschema.xml.in:326 msgid "The application icon mode." msgstr "Режим на иконите." #: data/org.gnome.shell.gschema.xml.in:327 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-only” " "(shows only the application icon) or “both”." msgstr "" "Определя как бутоните да се показват в областта за превключване. Възможните " "стойности са: „thumbnail-only“ (показване на миниатюра на прозореца), „app-" "icon-only“ (показване само на иконата на приложението) и „both“ (и двете)." #: data/org.gnome.shell.gschema.xml.in:336 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "Ако е истина, само програмите с прозорци на текущият работен плот се " "превключват. В противен случай се превключва между всички програми." #: data/org.gnome.shell.gschema.xml.in:346 msgid "Locations" msgstr "Местоположения" #: data/org.gnome.shell.gschema.xml.in:347 msgid "The locations to show in world clocks" msgstr "Местоположенията за световния часовник" #: data/org.gnome.shell.gschema.xml.in:357 msgid "Automatic location" msgstr "Автоматично местоположение" #: data/org.gnome.shell.gschema.xml.in:358 msgid "Whether to fetch the current location or not" msgstr "Да се включи ли и текущото местоположение" #: data/org.gnome.shell.gschema.xml.in:365 msgid "Location" msgstr "Местоположение" #: data/org.gnome.shell.gschema.xml.in:366 msgid "The location for which to show a forecast" msgstr "Местоположение, за което да се показва прогноза на времето" #. Keep in sync with subprojects/extensions-app #: data/org.gnome.Shell.Extensions.desktop.in.in:5 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/data/ui/extensions-window.ui:57 msgid "Extensions" msgstr "Разширения" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "Мрежов вход" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:275 msgid "Something’s gone wrong" msgstr "Нещо се обърка" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" "За съжаление се появи проблем: настройките на разширението не може да се " "изведат. Препоръчваме ви да докладвате проблема на авторите му." #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "Технически детайли" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "Уеб страница" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 msgid "Visit extension homepage" msgstr "Към уеб страницата на разширението" #: js/gdm/authPrompt.js:151 js/gdm/loginDialog.js:466 #: js/ui/audioDeviceSelection.js:66 js/ui/components/networkAgent.js:113 #: js/ui/components/polkitAgent.js:144 js/ui/endSessionDialog.js:437 #: js/ui/extensionDownloader.js:276 js/ui/shellMountOperation.js:382 #: js/ui/shellMountOperation.js:392 msgid "Cancel" msgstr "Отказване" #: js/gdm/authPrompt.js:317 js/ui/components/networkAgent.js:213 #: js/ui/components/networkAgent.js:233 js/ui/components/networkAgent.js:265 #: js/ui/components/networkAgent.js:298 js/ui/components/networkAgent.js:337 #: js/ui/components/networkAgent.js:350 js/ui/components/polkitAgent.js:286 #: js/ui/shellMountOperation.js:332 msgid "Password" msgstr "Парола" #: js/gdm/loginDialog.js:326 msgid "Choose Session" msgstr "Избор на сесия" #. Translators: is running for #: js/gdm/loginDialog.js:424 #, javascript-format msgid "" "Remote login is not possible because a remote session is already running for " "%s. To login remotely, you must log out from the remote session or force " "stop it." msgstr "" "Отдалечено влизане не е възможно, защото вече е стартирана отдалечена сесия " "за %s. За да влезете дистанционно, трябва да излезете от отдалечената сесия " "или да я спрете принудително." #. Translators: is running for #: js/gdm/loginDialog.js:427 #, javascript-format msgid "" "Login is not possible because a remote session is already running for %s. To " "login, you must log out from the remote session or force stop it." msgstr "" "Влизането не е възможно, защото вече е стартирана отдалечена сесия за %s. За " "да влезете, трябва да излезете от отдалечената сесия или да я спрете " "принудително." #. Translators: is running for #: js/gdm/loginDialog.js:430 #, javascript-format msgid "" "Remote login is not possible because a local session is already running for " "%s. To login remotely, you must log out from the local session or force stop " "it." msgstr "" "Отдалечено влизане не е възможно, защото вече е стартирана локална сесия за " "%s. За да влезете дистанционно, трябва да излезете от локалната сесия или да " "я спрете принудително." #. Translators: is running for #: js/gdm/loginDialog.js:433 #, javascript-format msgid "" "Login is not possible because a session is already running for %s. To login, " "you must log out from the session or force stop it." msgstr "" "Влизането не е възможно, защото вече е стартирана сесия за %s. За да " "влезете, трябва да излезете от сесията или да я спрете принудително." #: js/gdm/loginDialog.js:442 msgid "Session Already Running" msgstr "Вече е стартирана сесия" #: js/gdm/loginDialog.js:454 msgid "" "Force stopping will quit any running apps and processes, and could result in " "data loss" msgstr "" "Принудителното спиране ще прекрати всички работещи програми и процеси и може " "да доведе до загуба на данни" #: js/gdm/loginDialog.js:474 msgid "Force Stop" msgstr "Принудително спиране" #: js/gdm/loginDialog.js:542 msgid "Not listed?" msgstr "Липсва в списъка?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:1010 #, javascript-format msgid "(e.g., user or %s)" msgstr "(напр. потребител или %s)" #: js/gdm/loginDialog.js:1015 js/ui/components/networkAgent.js:257 #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:326 msgid "Username" msgstr "Потребител" #: js/gdm/loginDialog.js:1081 msgid "Login Attempt Timed Out" msgstr "Времето за влизане изтече" #: js/gdm/loginDialog.js:1082 msgid "Login took too long, please try again" msgstr "Влизането продължи твърде дълго, опитайте отново" #: js/gdm/loginDialog.js:1431 msgid "Login Window" msgstr "Екран за идентификация" #: js/gdm/util.js:496 msgid "Authentication error" msgstr "Грешка при удостоверяване" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:727 msgid "(or swipe finger across reader)" msgstr "(или прекарайте пръст през сензора за отпечатъци)" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:732 msgid "(or place finger on reader)" msgstr "(или поставете пръст на сензора за отпечатъци)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:91 msgctxt "search-result" msgid "Power Off" msgstr "Изключване" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:94 msgid "power off;poweroff;shutdown;halt;stop" msgstr "изключване;спиране;power off;poweroff;shutdown;halt;stop;" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:99 msgctxt "search-result" msgid "Restart" msgstr "Рестартиране" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:102 msgid "reboot;restart;" msgstr "reboot;restart;рестартиране" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:107 msgctxt "search-result" msgid "Lock Screen" msgstr "Заключване на екрана" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:110 msgid "lock screen" msgstr "lock screen;заключване" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:115 msgctxt "search-result" msgid "Log Out" msgstr "Изход" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:118 msgid "logout;log out;sign off" msgstr "logout;log out;sign off;излизане;изход" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:123 msgctxt "search-result" msgid "Suspend" msgstr "Приспиване" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:126 msgid "suspend;sleep" msgstr "приспиване" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:131 msgctxt "search-result" msgid "Switch User" msgstr "Смяна на потребител" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:134 msgid "switch user" msgstr "смяна на потребител" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:141 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "" "lock orientation;unlock orientation;screen;rotation;ориентация;завъртане;" "обръщане;завъртане на екрана" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:146 msgctxt "search-result" msgid "Take a Screenshot" msgstr "Снимка на екрана" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:149 msgid "screenshot;screencast;snip;capture;record" msgstr "" "screenshot;screencast;snip;capture;record;снимка;шот;каст;записване;екран;" #: js/misc/systemActions.js:249 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "Завъртане на екрана, когато е отключен" #: js/misc/systemActions.js:250 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "Завъртане на екрана, когато е заключен" #: js/misc/util.js:130 msgid "Command not found" msgstr "Командата не беше открита" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:170 msgid "Could not parse command:" msgstr "Неуспешно анализиране на командата:" #: js/misc/util.js:178 #, javascript-format msgid "Execution of “%s” failed:" msgstr "Неуспешно изпълнение на „%s“:" #: js/misc/dateUtils.js:69 msgid "Just now" msgstr "Сега" #: js/misc/dateUtils.js:72 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "преди %d минута" msgstr[1] "преди %d минути" #: js/misc/dateUtils.js:79 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "преди %d час" msgstr[1] "преди %d часа" #: js/misc/dateUtils.js:85 js/ui/dateMenu.js:183 msgid "Yesterday" msgstr "Вчера" #: js/misc/dateUtils.js:88 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "преди %d ден" msgstr[1] "преди %d дни" #: js/misc/dateUtils.js:95 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "преди %d седмица" msgstr[1] "преди %d седмици" #: js/misc/dateUtils.js:102 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "преди %d месец" msgstr[1] "преди %d месеца" #: js/misc/dateUtils.js:108 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "преди %d година" msgstr[1] "преди %d години" #. Translators: Time in 24h format #: js/misc/dateUtils.js:155 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/dateUtils.js:161 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "Вчера, %H:%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/dateUtils.js:167 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, %H:%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/dateUtils.js:173 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%-d% %B, %H:%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/dateUtils.js:179 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%-d %B %Y, %H:%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/dateUtils.js:184 msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/dateUtils.js:190 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "Вчера, %l:%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/dateUtils.js:196 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %l:%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/dateUtils.js:202 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%-d %B, %l:%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/dateUtils.js:208 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%-d %B %Y, %l:%M %p" #: js/portalHelper/main.js:98 msgid "Your connection seems to be secure" msgstr "Връзката ви изглежда сигурна" #: js/portalHelper/main.js:104 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "Връзката към тази безжична мрежа не е шифрирана. Информацията и паролите, " "които въведете на тази страница, са потенциално видими за всички наоколо." #: js/portalHelper/main.js:115 msgid "Hotspot Login" msgstr "Вход в безжична мрежа" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:51 js/ui/inhibitShortcutsDialog.js:92 msgid "Deny" msgstr "Забраняване" #: js/ui/accessDialog.js:52 js/ui/inhibitShortcutsDialog.js:101 msgid "Allow" msgstr "Позволяване" #: js/ui/appDisplay.js:1769 msgid "Unnamed Folder" msgstr "Папка без име" #: js/ui/appFavorites.js:163 #, javascript-format msgid "%s has been pinned to the dash." msgstr "„%s“ е добавена в „Любими“" #: js/ui/appFavorites.js:194 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "„%s“ е махната от „Любими“" #: js/ui/appFavorites.js:208 js/ui/main.js:281 msgid "Undo" msgstr "Отмяна" #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:49 msgid "Open Windows" msgstr "Отворени прозорци" #: js/ui/appMenu.js:57 msgid "New Window" msgstr "Нов прозорец" #: js/ui/appMenu.js:84 msgid "App Details" msgstr "Подробности за програмата" #: js/ui/appMenu.js:100 msgid "Quit" msgstr "Спиране на програмата" #: js/ui/appMenu.js:160 js/ui/dash.js:248 msgid "Unpin" msgstr "Махане" #: js/ui/appMenu.js:161 msgid "Pin to Dash" msgstr "Добавяне в „Любими“" #: js/ui/appMenu.js:178 msgid "Launch using Integrated Graphics Card" msgstr "Стартиране с вградената графична карта" #: js/ui/appMenu.js:179 msgid "Launch using Discrete Graphics Card" msgstr "Стартиране с отделната графична карта" #: js/ui/audioDeviceSelection.js:46 msgid "Select Audio Device" msgstr "Избор на устройство за аудио" #: js/ui/audioDeviceSelection.js:61 js/ui/status/volume.js:81 msgid "Sound Settings" msgstr "Настройки на звука" #: js/ui/audioDeviceSelection.js:74 msgid "Headphones" msgstr "Слушалки" #: js/ui/audioDeviceSelection.js:76 msgid "Headset" msgstr "Малки слушалки" #: js/ui/audioDeviceSelection.js:78 js/ui/status/volume.js:356 msgid "Microphone" msgstr "Микрофон" #: js/ui/backgroundMenu.js:13 msgid "Change Background…" msgstr "Смяна на фона…" #: js/ui/backgroundMenu.js:15 msgid "Display Settings" msgstr "Настройки на екрана" #: js/ui/backgroundMenu.js:16 msgid "Settings" msgstr "Настройки" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:37 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:63 msgctxt "grid sunday" msgid "S" msgstr "Н" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:65 msgctxt "grid monday" msgid "M" msgstr "П" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:67 msgctxt "grid tuesday" msgid "T" msgstr "В" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:69 msgctxt "grid wednesday" msgid "W" msgstr "С" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:71 msgctxt "grid thursday" msgid "T" msgstr "Ч" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:73 msgctxt "grid friday" msgid "F" msgstr "П" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:75 msgctxt "grid saturday" msgid "S" msgstr "С" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:426 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:436 msgid "%OB %Y" msgstr "%OB %Y" #: js/ui/calendar.js:498 msgid "Previous month" msgstr "Предния месец" #: js/ui/calendar.js:516 msgid "Next month" msgstr "Следващия месец" #: js/ui/calendar.js:667 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:726 msgid "Week %V" msgstr "%V-а седмица" #: js/ui/calendar.js:918 msgid "No Notifications" msgstr "Няма известия" #: js/ui/calendar.js:974 msgid "Do Not Disturb" msgstr "Не безпокойте!" #: js/ui/calendar.js:995 msgid "Clear" msgstr "Изчистване" #: js/ui/calendar.js:999 msgctxt "action" msgid "Clear all notifications" msgstr "Изчистване на всички известия" #. Translators: %s is an application name #: js/ui/closeDialog.js:42 #, javascript-format msgid "“%s” Is Not Responding" msgstr "Програмата „%s“ не отговаря" #: js/ui/closeDialog.js:43 msgid "" "You may choose to wait a short while for it to continue or force the app to " "quit entirely" msgstr "" "Може да изчакате известно време за отговор или принудително да спрете " "програмата" #: js/ui/closeDialog.js:71 msgid "Force Quit" msgstr "Принудително спиране" #: js/ui/closeDialog.js:76 msgid "Wait" msgstr "Изчакване" #: js/ui/components/automountManager.js:82 msgid "External drive connected" msgstr "Закачен е външен диск" #: js/ui/components/automountManager.js:94 msgid "External drive disconnected" msgstr "Отдалеченият диск е разкачен" #: js/ui/components/automountManager.js:208 msgid "Unable to unlock volume" msgstr "Неуспешно отключване на тома" #: js/ui/components/automountManager.js:209 msgid "The installed udisks version does not support the PIM setting" msgstr "" "Инсталираната версия на „udisks“ не поддържа задаването на брой итерации " "(PIM)" #. Translators: %s is the name of a partition on a external drive #: js/ui/components/autorunManager.js:189 #, javascript-format msgid "“%s” connected" msgstr "„%s“: свързано" #: js/ui/components/autorunManager.js:190 msgid "Disk can now be used" msgstr "Дискът може вече да се ползва" #: js/ui/components/autorunManager.js:202 #, javascript-format msgid "Open with %s" msgstr "Отваряне с „%s“" #: js/ui/components/networkAgent.js:95 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router" msgstr "Може да се свържете и като натиснете бутона „WPS“ на рутъра" #: js/ui/components/networkAgent.js:107 js/ui/status/bluetooth.js:245 #: js/ui/status/network.js:360 js/ui/status/network.js:444 msgid "Connect" msgstr "Свързване" #: js/ui/components/networkAgent.js:222 msgid "Key" msgstr "Ключ" #: js/ui/components/networkAgent.js:273 js/ui/components/networkAgent.js:312 msgid "Private key password" msgstr "Парола за частния ключ" #: js/ui/components/networkAgent.js:306 msgid "Identity" msgstr "Самоличност" #: js/ui/components/networkAgent.js:332 msgid "Service" msgstr "Услуга" #: js/ui/components/networkAgent.js:370 js/ui/components/networkAgent.js:406 #: js/ui/components/networkAgent.js:743 js/ui/components/networkAgent.js:764 msgid "Authentication required" msgstr "Изисква се удостоверяване" #: js/ui/components/networkAgent.js:371 js/ui/components/networkAgent.js:744 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network “%s”" msgstr "" "За достъп до безжичната мрежа „%s“ са необходими пароли или криптирани " "ключове" #: js/ui/components/networkAgent.js:375 js/ui/components/networkAgent.js:748 msgid "Wired 802.1X authentication" msgstr "Жична идентификация 802.1Х" #: js/ui/components/networkAgent.js:378 msgid "Network name" msgstr "Име на мрежа" #: js/ui/components/networkAgent.js:386 js/ui/components/networkAgent.js:752 msgid "DSL authentication" msgstr "Удостоверяване за DSL" #: js/ui/components/networkAgent.js:393 js/ui/components/networkAgent.js:757 msgid "PIN code required" msgstr "Необходим е ПИН" #: js/ui/components/networkAgent.js:394 js/ui/components/networkAgent.js:758 msgid "PIN code is needed for the mobile broadband device" msgstr "Мобилното устройство изисква ПИН" #: js/ui/components/networkAgent.js:396 msgid "PIN" msgstr "ПИН" #: js/ui/components/networkAgent.js:407 js/ui/components/networkAgent.js:749 #: js/ui/components/networkAgent.js:753 js/ui/components/networkAgent.js:765 #: js/ui/components/networkAgent.js:769 #, javascript-format msgid "A password is required to connect to “%s”" msgstr "За свързване към „%s“ се изисква парола" #: js/ui/components/networkAgent.js:768 msgid "VPN password" msgstr "Парола за ВЧМ" #: js/ui/components/polkitAgent.js:44 msgid "Authentication Required" msgstr "Необходимо е удостоверяване" #: js/ui/components/polkitAgent.js:84 msgid "Administrator" msgstr "Администратор" #: js/ui/components/polkitAgent.js:149 msgid "Authenticate" msgstr "Удостоверяване" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:263 js/ui/shellMountOperation.js:415 msgid "Sorry, that didn’t work. Please try again." msgstr "Неуспешно действие. Опитайте отново." #: js/ui/ctrlAltTab.js:23 js/ui/overviewControls.js:404 msgid "Windows" msgstr "Прозорци" #: js/ui/dash.js:204 js/ui/dash.js:250 msgid "Show Apps" msgstr "Показване на програмите" #. Translators: this is the name of the dock/favorites area on #. the bottom of the overview #: js/ui/dash.js:408 msgid "Dash" msgstr "Любими" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:99 msgid "%B %-d %Y" msgstr "%-d %B %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:106 msgid "%A %B %e %Y" msgstr "%A, %e %B %Y" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:172 msgctxt "calendar heading" msgid "%B %-d" msgstr "%-d %B" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:175 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%-d %B %Y" #: js/ui/dateMenu.js:181 msgid "Today" msgstr "Днес" #: js/ui/dateMenu.js:185 msgid "Tomorrow" msgstr "Утре" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:216 msgctxt "event list time" msgid "All Day" msgstr "Цял ден" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:238 msgid "%m/%d" msgstr "%d %b" #: js/ui/dateMenu.js:289 msgid "No Events" msgstr "Няма събития" #: js/ui/dateMenu.js:411 msgid "Add World Clocks…" msgstr "Добавяне на световен часовник…" #: js/ui/dateMenu.js:412 msgid "World Clocks" msgstr "Световен часовник" #: js/ui/dateMenu.js:702 msgid "Loading…" msgstr "Зареждане…" #: js/ui/dateMenu.js:712 msgid "Go Online for Weather Information" msgstr "За метеорологичната обстановка трябва да сте онлайн" #: js/ui/dateMenu.js:714 msgid "Weather Information Unavailable" msgstr "В момента метеорологичната информация не е налична" #: js/ui/dateMenu.js:724 msgid "Weather" msgstr "Прогноза за времето" #: js/ui/dateMenu.js:726 msgid "Select Weather Location…" msgstr "Избор на местоположение…" #: js/ui/endSessionDialog.js:47 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "Изход на „%s“" #: js/ui/endSessionDialog.js:48 msgctxt "title" msgid "Log Out" msgstr "Изход" #: js/ui/endSessionDialog.js:51 #, javascript-format msgid "%s will be logged out automatically in %d second" msgid_plural "%s will be logged out automatically in %d seconds" msgstr[0] "" "Потребителят „%s“ ще излезе от системата автоматично след %d секунда" msgstr[1] "" "Потребителят „%s“ ще излезе от системата автоматично след %d секунди" #: js/ui/endSessionDialog.js:57 #, javascript-format msgid "You will be logged out automatically in %d second" msgid_plural "You will be logged out automatically in %d seconds" msgstr[0] "Ще излезете от системата автоматично след %d секунда" msgstr[1] "Ще излезете от системата автоматично след %d секунди" #: js/ui/endSessionDialog.js:64 msgctxt "button" msgid "Log Out" msgstr "Изход" #: js/ui/endSessionDialog.js:70 js/ui/status/system.js:174 msgctxt "title" msgid "Power Off" msgstr "Изключване" #: js/ui/endSessionDialog.js:71 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Инсталиране на обновленията и изключване" #: js/ui/endSessionDialog.js:74 #, javascript-format msgid "The system will power off automatically in %d second" msgid_plural "The system will power off automatically in %d seconds" msgstr[0] "Системата ще се изключи автоматично след %d секунда" msgstr[1] "Системата ще се изключи автоматично след %d секунди" #: js/ui/endSessionDialog.js:78 js/ui/endSessionDialog.js:97 msgctxt "checkbox" msgid "Install pending software updates" msgstr "Инсталиране на изчакващите обновления" #: js/ui/endSessionDialog.js:82 msgctxt "button" msgid "Power Off" msgstr "Изключване" #: js/ui/endSessionDialog.js:89 msgctxt "title" msgid "Restart" msgstr "Рестартиране" #: js/ui/endSessionDialog.js:90 msgctxt "title" msgid "Install Updates & Restart" msgstr "Инсталиране на обновленията и рестартиране" #: js/ui/endSessionDialog.js:93 #, javascript-format msgid "The system will restart automatically in %d second" msgid_plural "The system will restart automatically in %d seconds" msgstr[0] "Системата ще се рестартира автоматично след %d секунда" msgstr[1] "Системата ще се рестартира автоматично след %d секунди" #: js/ui/endSessionDialog.js:101 msgctxt "button" msgid "Restart" msgstr "Рестартиране" #: js/ui/endSessionDialog.js:109 msgctxt "title" msgid "Restart & Install Updates" msgstr "Рестартиране и инсталиране на обновленията" #: js/ui/endSessionDialog.js:112 #, javascript-format msgid "The system will automatically restart and install updates in %d second" msgid_plural "" "The system will automatically restart and install updates in %d seconds" msgstr[0] "" "Системата ще се рестартира автоматично и ще инсталира обновления след %d " "секунда" msgstr[1] "" "Системата ще се рестартира автоматично и ще инсталира обновления след %d " "секунди" #: js/ui/endSessionDialog.js:119 js/ui/endSessionDialog.js:140 msgctxt "button" msgid "Restart & Install" msgstr "Рестартиране и инсталиране" #: js/ui/endSessionDialog.js:121 msgctxt "button" msgid "Install & Power Off" msgstr "Инсталиране и изключване" #: js/ui/endSessionDialog.js:122 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Изключване на компютъра след инсталиране на обновленията" #: js/ui/endSessionDialog.js:129 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "Рестартиране и инсталиране на обновленията" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:134 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "След рестартиране ще се инсталира %s %s. Обновяването отнема доста време, " "проверете дали имате резервно копие на данните си и дали компютърът има " "надежден източник на захранване." #: js/ui/endSessionDialog.js:283 msgid "Low battery power: please plug in before installing updates" msgstr "" "Нисък заряд в батериите: включете захранването, преди да инсталирате " "обновленията" #: js/ui/endSessionDialog.js:292 msgid "Some applications are busy or have unsaved work" msgstr "Някои програми са заети или имат незапазени промени" #: js/ui/endSessionDialog.js:297 msgid "Other users are logged in" msgstr "Има други влезли потребители" #: js/ui/endSessionDialog.js:467 msgctxt "button" msgid "Boot Options" msgstr "Настройки за стартиране" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:672 #, javascript-format msgid "%s (remote)" msgstr "%s (отдалечен)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:675 #, javascript-format msgid "%s (console)" msgstr "%s (конзола)" #: js/ui/extensionDownloader.js:280 msgid "Install" msgstr "Инсталиране" #: js/ui/extensionDownloader.js:286 msgid "Install Extension" msgstr "Инсталиране на разширение" #: js/ui/extensionDownloader.js:287 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "Да се изтегли и инсталира ли „%s“ от from extensions.gnome.org?" #: js/ui/extensionSystem.js:352 msgid "Extension Updates Available" msgstr "Има обновления на разширенията" #: js/ui/extensionSystem.js:353 msgid "Extension updates are ready to be installed" msgstr "Обновленията са готови за инсталиране" #: js/ui/inhibitShortcutsDialog.js:70 msgid "Allow inhibiting shortcuts" msgstr "Клавишните комбинации да може да се изключват" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:73 #, javascript-format msgid "The app %s wants to inhibit shortcuts" msgstr "Програмата „%s“ иска временно да изключи клавишните комбинации" #: js/ui/inhibitShortcutsDialog.js:74 msgid "An app wants to inhibit shortcuts" msgstr "Програма иска временно да изключи клавишните комбинации" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:81 #, javascript-format msgid "You can restore shortcuts by pressing %s" msgstr "Може да ги възстановите като натиснете комбинацията %s" #: js/ui/kbdA11yDialog.js:34 msgid "Slow Keys Turned On" msgstr "Бавни клавиши включени" #: js/ui/kbdA11yDialog.js:35 msgid "Slow Keys Turned Off" msgstr "Бавни клавиши изключени" #: js/ui/kbdA11yDialog.js:36 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "Задържахте клавиша Shift натиснат за 8 секунди. Това включва „Бавни клавиши“ " "— настройка, която променя начина на работа на клавиатурата." #: js/ui/kbdA11yDialog.js:42 msgid "Sticky Keys Turned On" msgstr "Лепкави клавиши включени" #: js/ui/kbdA11yDialog.js:43 msgid "Sticky Keys Turned Off" msgstr "Лепкави клавиши изключени" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "Натиснахте клавиша Shift 5 пъти последователно. Това включва „Лепкави " "клавиши“ — настройка, която променя начина на работа на клавиатурата." #: js/ui/kbdA11yDialog.js:47 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" "Току що натиснахте два клавиша едновременно или натиснахте клавиша Shift 5 " "пъти последователно. Това изключва „Лепкави клавиши“ — настройка, която " "променя начина на работа на клавиатурата." #: js/ui/kbdA11yDialog.js:57 msgid "Leave On" msgstr "Оставяне включено" #: js/ui/kbdA11yDialog.js:57 msgid "Turn On" msgstr "Включване" #: js/ui/kbdA11yDialog.js:67 js/ui/status/network.js:455 msgid "Turn Off" msgstr "Изключване" #: js/ui/kbdA11yDialog.js:67 msgid "Leave Off" msgstr "Оставяне изключено" #: js/ui/keyboard.js:180 js/ui/status/keyboard.js:897 msgid "Keyboard Settings" msgstr "Настройки на клавиатурата" #: js/ui/lookingGlass.js:727 msgid "No extensions installed" msgstr "Няма инсталирани разширения" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:788 #, javascript-format msgid "%s has not emitted any errors" msgstr "Разширението %s не е обозначило никакви грешки" #: js/ui/lookingGlass.js:794 msgid "Hide Errors" msgstr "Скриване на грешките" #: js/ui/lookingGlass.js:798 js/ui/lookingGlass.js:875 msgid "Show Errors" msgstr "Показване на грешките" #: js/ui/lookingGlass.js:807 msgid "Active" msgstr "Активно" #: js/ui/lookingGlass.js:810 msgid "Inactive" msgstr "Неактивно" #: js/ui/lookingGlass.js:812 msgid "Error" msgstr "Грешка" #: js/ui/lookingGlass.js:814 msgid "Out of date" msgstr "Остаряло" #: js/ui/lookingGlass.js:816 msgid "Downloading" msgstr "Изтегляне" #: js/ui/lookingGlass.js:818 msgid "Deactivating" msgstr "Изключване" #: js/ui/lookingGlass.js:820 msgid "Activating" msgstr "Включване" #: js/ui/lookingGlass.js:853 msgid "View Source" msgstr "Преглед на изходния код" #: js/ui/lookingGlass.js:864 msgid "Web Page" msgstr "Домашна страница" #: js/ui/main.js:277 msgid "System was put in unsafe mode" msgstr "Системата е в необезапасен режим" #: js/ui/main.js:278 msgid "Apps now have unrestricted access" msgstr "Програмите работят с неограничен достъп" #: js/ui/main.js:338 msgid "Logged in as a privileged user" msgstr "Влезли сте като администратор" #: js/ui/main.js:339 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" "Избягвайте да стартирате сесия като администратор заради сигурността. " "Влезте в системата като обикновен потребител, ако е възможно." #: js/ui/main.js:387 msgid "Screen Lock disabled" msgstr "Заключването на екрана е изключено" #: js/ui/main.js:388 msgid "Screen Locking requires the GNOME display manager" msgstr "" "Заключването на екрана изисква програмата за управление на екрани на GNOME " "(gdm)" #. Translators: this is the string displayed in the header when a message #. source doesn't have a name #: js/ui/messageList.js:374 msgid "Unknown App" msgstr "Неизвестна програма" #: js/ui/messageTray.js:326 js/ui/messageTray.js:328 msgid "Notification sound" msgstr "Звук за известията" #: js/ui/mpris.js:198 msgid "Unknown artist" msgstr "Неизвестен изпълнител" #: js/ui/mpris.js:208 msgid "Unknown title" msgstr "Неизвестно заглавие" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:328 msgid "Type to search" msgstr "Текст за търсене" #: js/ui/overviewControls.js:392 msgid "Apps" msgstr "Програми" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:33 msgid "Overview" msgstr "Преглед" #: js/ui/padOsd.js:98 msgid "New shortcut…" msgstr "Нова комбинация…" #: js/ui/padOsd.js:151 msgid "App defined" msgstr "Налични програми" #: js/ui/padOsd.js:152 msgid "Show on-screen help" msgstr "Извеждане на помощта" #: js/ui/padOsd.js:153 msgid "Switch monitor" msgstr "Смяна на екран" #: js/ui/padOsd.js:154 msgid "Assign keystroke" msgstr "Задаване на клавишна комбинация" #: js/ui/padOsd.js:223 msgid "Done" msgstr "Готово" #: js/ui/padOsd.js:726 msgid "Edit…" msgstr "Редактиране…" #: js/ui/padOsd.js:773 msgid "None" msgstr "Няма" #: js/ui/padOsd.js:844 msgid "Press a button to configure" msgstr "Натиснете клавиш за настройване" #: js/ui/padOsd.js:845 msgid "Press Esc to exit" msgstr "Натиснете Esc за отмяна" #: js/ui/padOsd.js:848 msgid "Press any key to exit" msgstr "Натиснете произволен клавиш за изход" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:423 msgid "Activities" msgstr "Дейности" #: js/ui/panel.js:504 msgctxt "System menu in the top bar" msgid "System" msgstr "Системни" #: js/ui/panel.js:678 msgid "Top Bar" msgstr "Горна лента" #: js/ui/quickSettings.js:188 msgid "Open menu" msgstr "Отваряне на меню" #: js/ui/runDialog.js:61 msgid "Run a Command" msgstr "Изпълнение на команда" #: js/ui/runDialog.js:76 msgid "Press ESC to close" msgstr "Натиснете Esc за отмяна" #: js/ui/runDialog.js:241 msgid "Restart is not available on Wayland" msgstr "Рестартирането не е налично в Wayland" #: js/ui/runDialog.js:246 msgid "Restarting…" msgstr "Рестартиране…" #: js/ui/screenShield.js:233 msgid "GNOME needs to lock the screen" msgstr "Екранът трябва да бъде заключен от GNOME" #: js/ui/screenShield.js:274 js/ui/screenShield.js:667 msgid "Unable to lock" msgstr "Неуспешно заключване" #: js/ui/screenShield.js:275 js/ui/screenShield.js:668 msgid "Lock was blocked by an app" msgstr "Заключването беше блокирано от програма" #: js/ui/screenshot.js:1252 msgid "Selection" msgstr "Избор" #: js/ui/screenshot.js:1262 msgid "Area Selection" msgstr "Избор на област" #: js/ui/screenshot.js:1267 msgid "Screen" msgstr "Екран" #: js/ui/screenshot.js:1277 msgid "Screen Selection" msgstr "Избор на част от екрана" #: js/ui/screenshot.js:1282 msgid "Window" msgstr "Прозорeц" #: js/ui/screenshot.js:1292 msgid "Window Selection" msgstr "Избор на прозорец" #. Translators: entry in the window right click menu. #: js/ui/screenshot.js:1317 js/ui/status/system.js:111 js/ui/windowMenu.js:28 msgid "Take Screenshot" msgstr "Снимка на екрана" #: js/ui/screenshot.js:1333 msgid "Record Screen" msgstr "Записване на екрана" #. Translators: since this string refers to an action, #. it needs to be phrased as a verb. #: js/ui/screenshot.js:1350 msgid "Capture" msgstr "Снимка" #: js/ui/screenshot.js:1372 msgid "Show Pointer" msgstr "Включване на показалеца" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1996 msgid "Screencasts" msgstr "Записи на екрана" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast From 07-17-2013 10:00:46 PM" #: js/ui/screenshot.js:2001 #, no-c-format msgid "Screencast From %d %t" msgstr "Запис на екрана на %d %t" #. Translators: notification title. #: js/ui/screenshot.js:2047 msgid "Screencast recorded" msgstr "Екранът е записан" #. Translators: notification title. #: js/ui/screenshot.js:2060 msgid "Screencast failed to start" msgstr "Записването на екрана не може да стартира" #. Translators: notification title. #: js/ui/screenshot.js:2066 msgid "Screencast ended: Out of disk space" msgstr "Записването на екрана завърши: няма достатъчно свободно място на диска" #. We can encourage user to try again on service crashes since the #. recorder will auto-blocklist the pipeline that crashed. #. Translators: notification title. #: js/ui/screenshot.js:2072 msgid "Screencast ended unexpectedly, please try again" msgstr "Записването на екрана завърши неочаквано, опитайте отново" #. Translators: notification title. #: js/ui/screenshot.js:2075 msgid "Screencast ended unexpectedly" msgstr "Записването на екрана завърши неочаквано" #. Translators: notification source name. #: js/ui/screenshot.js:2085 js/ui/screenshot.js:2327 msgid "Screenshot" msgstr "Снимка на екрана" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:2092 msgid "Click here to view the video." msgstr "Натиснете, за да прегледате видеото." #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:2100 js/ui/screenshot.js:2343 msgid "Show in Files" msgstr "Показване във „Файлове“" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2287 #, javascript-format msgid "Screenshot From %s" msgstr "Снимка на екрана на %s" #. Translators: notification title. #: js/ui/screenshot.js:2333 msgid "Screenshot captured" msgstr "Екранът е заснет" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2335 msgid "You can paste the image from the clipboard." msgstr "Изображението е в буфера за обмен и може да го поставите." #: js/ui/screenshot.js:2391 js/ui/screenshot.js:2555 msgid "Screenshot taken" msgstr "Екранът е заснет" #: js/ui/search.js:829 msgid "Searching…" msgstr "Търсене…" #: js/ui/search.js:831 msgid "No results" msgstr "Няма съвпадения" #: js/ui/search.js:962 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "още %d" msgstr[1] "още %d" #: js/ui/searchController.js:87 #: subprojects/extensions-app/data/ui/extensions-window.ui:73 msgid "Search" msgstr "Търсене" #: js/ui/shellEntry.js:21 msgid "Copy" msgstr "Копиране" #: js/ui/shellEntry.js:26 msgid "Paste" msgstr "Поставяне" #: js/ui/shellEntry.js:78 msgid "Show Text" msgstr "Показване на текста" #: js/ui/shellEntry.js:80 msgid "Hide Text" msgstr "Скриване на текста" #: js/ui/shellEntry.js:174 msgid "Caps lock is on" msgstr "Caps Lock е натиснат" #: js/ui/shellMountOperation.js:286 msgid "Hidden Volume" msgstr "Скрит дял" #: js/ui/shellMountOperation.js:289 msgid "Windows System Volume" msgstr "Системен дял на Windows" #: js/ui/shellMountOperation.js:292 msgid "Uses Keyfiles" msgstr "Файл с ключ" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:300 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead" msgstr "" "За да отключите дял, който ползва ключове, ползвайте програмата %s" #: js/ui/shellMountOperation.js:304 msgid "" "You need an external utility like Disks to unlock a volume that uses " "keyfiles" msgstr "" "Трябва да ползвате външна програма като Дискове, за да отключите " "заключен том" #: js/ui/shellMountOperation.js:312 msgid "PIM Number" msgstr "Итерации (PIM)" #: js/ui/shellMountOperation.js:371 msgid "Remember Password" msgstr "Запомняне на паролата" #: js/ui/shellMountOperation.js:386 msgid "Unlock" msgstr "Отключване" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:400 #, javascript-format msgid "Open %s" msgstr "Отваряне на „%s“" #: js/ui/shellMountOperation.js:436 msgid "The PIM must be a number or empty" msgstr "Броят итерации (PIM) трябва да е число или да е празно" #: js/ui/status/accessibility.js:34 msgid "Accessibility" msgstr "Достъпност" #: js/ui/status/accessibility.js:44 msgid "High Contrast" msgstr "Висок контраст" #: js/ui/status/accessibility.js:47 msgid "Zoom" msgstr "Увеличаване" #: js/ui/status/accessibility.js:54 msgid "Screen Reader" msgstr "Четец на екрана" #: js/ui/status/accessibility.js:58 msgid "Screen Keyboard" msgstr "Екранна клавиатура" #: js/ui/status/accessibility.js:62 msgid "Visual Alerts" msgstr "Визуална помощ" #: js/ui/status/accessibility.js:66 msgid "Sticky Keys" msgstr "Лепкави клавиши" #: js/ui/status/accessibility.js:70 msgid "Slow Keys" msgstr "Бавни клавиши" #: js/ui/status/accessibility.js:74 msgid "Bounce Keys" msgstr "Подскачащи клавиши" #: js/ui/status/accessibility.js:78 msgid "Mouse Keys" msgstr "Клавиши за мишка" #: js/ui/status/accessibility.js:83 msgid "Accessibility Settings" msgstr "Настройки на достъпността" #: js/ui/status/accessibility.js:140 msgid "Large Text" msgstr "Едър текст" #: js/ui/status/autoRotate.js:14 msgid "Auto Rotate" msgstr "Автоматично завъртане" #: js/ui/status/backgroundApps.js:156 msgctxt "title" msgid "Background Apps" msgstr "Програми на фонов режим" #: js/ui/status/backgroundApps.js:171 msgid "Apps known to be running without a window" msgstr "Програми, които работят без прозорец" #: js/ui/status/backgroundApps.js:182 msgid "App Settings" msgstr "Настройки на програмата" #: js/ui/status/backgroundApps.js:239 msgid "No Background Apps" msgstr "Няма програми на фонов режим" #: js/ui/status/backgroundApps.js:241 #, javascript-format msgid "%d Background App" msgid_plural "%d Background Apps" msgstr[0] "%d програма на фонов режим" msgstr[1] "%d програми на фонов режим" #: js/ui/status/backlight.js:39 msgid "Keyboard Brightness" msgstr "Яркост на клавиатурата" #: js/ui/status/backlight.js:79 msgid "Off" msgstr "Изкл." #: js/ui/status/backlight.js:80 msgid "Low" msgstr "Ниска" #: js/ui/status/backlight.js:81 msgid "High" msgstr "Висока" #: js/ui/status/backlight.js:147 js/ui/status/keyboard.js:879 msgid "Keyboard" msgstr "Клавиатура" #: js/ui/status/bluetooth.js:245 js/ui/status/network.js:360 msgid "Disconnect" msgstr "Прекъсване на връзката" #: js/ui/status/bluetooth.js:262 js/ui/status/bluetooth.js:264 msgid "Bluetooth" msgstr "Bluetooth" #: js/ui/status/bluetooth.js:287 js/ui/status/network.js:1900 msgid "Bluetooth Settings" msgstr "Настройки на Bluetooth" #: js/ui/status/bluetooth.js:334 msgid "No available or connected devices" msgstr "Няма налични или свързани устройства" #: js/ui/status/bluetooth.js:335 msgid "Turn on Bluetooth to connect to devices" msgstr "Включване на Bluetooth за свързване на устройства" #. Translators: This is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:389 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d свързано" msgstr[1] "%d свързани" #: js/ui/status/brightness.js:32 msgid "Brightness" msgstr "Яркост" #: js/ui/status/darkMode.js:12 msgid "Dark Style" msgstr "Тъмен режим" #: js/ui/status/dwellClick.js:15 msgid "Single Click" msgstr "Еднократно натискане" #: js/ui/status/dwellClick.js:20 msgid "Double Click" msgstr "Двукратно натискане" #: js/ui/status/dwellClick.js:25 msgid "Drag" msgstr "Влачене" #: js/ui/status/dwellClick.js:30 msgid "Secondary Click" msgstr "Натискане на 2я бутон" #: js/ui/status/dwellClick.js:39 msgid "Dwell Click" msgstr "Натискане чрез задържане" #: js/ui/status/keyboard.js:896 msgid "Show Keyboard Layout" msgstr "Показване на клавиатурната подредба" #: js/ui/status/location.js:337 msgid "Allow location access" msgstr "Позволяване на достъп до местоположението" #. Translators: %s is an application name #: js/ui/status/location.js:339 #, javascript-format msgid "The app %s wants to access your location" msgstr "Заявка от „%s“ за местоположението ви" #: js/ui/status/location.js:349 msgid "Location access can be changed at any time from the privacy settings" msgstr "" "Може да промените правата за достъп до местоположението през настройките за " "лични данни" #: js/ui/status/location.js:357 msgid "Deny Access" msgstr "Отказване на достъп" #: js/ui/status/location.js:362 msgid "Grant Access" msgstr "Позволяване на достъп" #: js/ui/status/network.js:62 msgid "" msgstr "<неизвестно>" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:354 #, javascript-format msgid "Disconnect %s" msgstr "Прекъсване на връзката към „%s“" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:356 #, javascript-format msgid "Connect to %s" msgstr "Свързване към „%s“" #: js/ui/status/network.js:1050 msgid "Secure" msgstr "Защитена" #: js/ui/status/network.js:1050 msgid "Not secure" msgstr "Незащитена" #: js/ui/status/network.js:1051 #, javascript-format msgid "Signal strength %s%%" msgstr "Сила на сигнала %s %%" #. translators: The first placeholder is the network name, the second and indication whether it is secure, and the last the signal strength indication #: js/ui/status/network.js:1053 #, javascript-format msgid "%s, %s, %s" msgstr "%s, %s, %s" #. Translators: %s is a network identifier #: js/ui/status/network.js:1155 #, javascript-format msgid "%s Hotspot" msgstr "Безжична точка за достъп „%s“" #: js/ui/status/network.js:1426 #, javascript-format msgid "%d connected" msgid_plural "%d connected" msgstr[0] "%d свързано" msgstr[1] "%d свързани" #: js/ui/status/network.js:1524 js/ui/status/network.js:1540 msgid "VPN" msgstr "ВЧМ" #: js/ui/status/network.js:1525 msgid "VPN Settings" msgstr "Настройки на ВЧМ (VPN)" #: js/ui/status/network.js:1785 msgid "Wi–Fi" msgstr "Wi–Fi" #: js/ui/status/network.js:1787 msgid "All Networks" msgstr "Всички мрежи" #: js/ui/status/network.js:1884 msgid "Wired Connections" msgstr "Жични връзки" #: js/ui/status/network.js:1885 msgid "Wired Settings" msgstr "Настройки на жична връзка" #: js/ui/status/network.js:1899 msgid "Bluetooth Tethers" msgstr "Връзка по Bluetooth" #. Translators: "Tether" from "Bluetooth Tether" #: js/ui/status/network.js:1906 msgid "Tether" msgstr "Bluetooth" #: js/ui/status/network.js:1919 msgid "Mobile Connections" msgstr "Мобилни връзки" #: js/ui/status/network.js:1921 msgid "Mobile Broadband Settings" msgstr "Настройки на мобилна широколентова връзка" #. Translators: "Mobile" from "Mobile Broadband" #: js/ui/status/network.js:1930 msgid "Mobile" msgstr "Мобилна" #: js/ui/status/network.js:1964 msgid "Sign Into Wi–Fi Network" msgstr "Свързване с безжична мрежа по Wi–Fi" #: js/ui/status/network.js:2151 msgid "Connection failed" msgstr "Връзката е неуспешна" #: js/ui/status/network.js:2152 msgid "Activation of network connection failed" msgstr "Неуспешна връзка към мрежата" #: js/ui/status/nightLight.js:19 msgid "Night Light" msgstr "Нощен режим" #: js/ui/status/powerProfiles.js:19 msgctxt "Power profile" msgid "Performance" msgstr "Бързина" #: js/ui/status/powerProfiles.js:24 msgctxt "Power profile" msgid "Balanced" msgstr "Баланс" #: js/ui/status/powerProfiles.js:29 msgctxt "Power profile" msgid "Power Saver" msgstr "Енергоспестяване" #: js/ui/status/powerProfiles.js:39 js/ui/status/powerProfiles.js:69 msgid "Power Mode" msgstr "Профил за захранване" #: js/ui/status/powerProfiles.js:71 msgid "Power Settings" msgstr "Настройки на захранването" #: js/ui/status/remoteAccess.js:74 msgid "Stop Screencast" msgstr "Край на записа на екрана" #: js/ui/status/remoteAccess.js:144 msgid "Stop Screen Sharing" msgstr "Край на споделянето на екрана" #: js/ui/status/rfkill.js:99 msgid "Airplane Mode" msgstr "Самолетeн режим" #: js/ui/status/system.js:168 msgid "Power Off Menu" msgstr "Меню за изключване" #: js/ui/status/system.js:176 msgid "Suspend" msgstr "Приспиване" #: js/ui/status/system.js:181 msgid "Restart…" msgstr "Рестартиране…" #: js/ui/status/system.js:186 msgid "Power Off…" msgstr "Изключване" #: js/ui/status/system.js:193 #: subprojects/extensions-app/data/ui/extensions-window.ui:124 msgid "Log Out…" msgstr "Изход…" #: js/ui/status/system.js:198 msgid "Switch User…" msgstr "Смяна на потребител…" #: js/ui/status/system.js:242 msgctxt "action" msgid "Lock Screen" msgstr "Заключване на екрана" #: js/ui/status/thunderbolt.js:308 msgid "Unknown Thunderbolt device" msgstr "Непознато устройство с Thunderbolt" #: js/ui/status/thunderbolt.js:309 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" "Засечено е ново устройство докато отсъствахте. За да го ползвате, извадете " "го и го поставете наново." #: js/ui/status/thunderbolt.js:312 msgid "Unauthorized Thunderbolt device" msgstr "Неодобрено устройство с Thunderbolt" #: js/ui/status/thunderbolt.js:313 msgid "" "New device has been detected and needs to be authorized by an administrator" msgstr "Засечено е ново устройство, което трябва да се одобри от администратор" #: js/ui/status/thunderbolt.js:319 msgid "Thunderbolt authorization error" msgstr "Грешка при одобряване на устройство с Thunderbolt" #: js/ui/status/thunderbolt.js:320 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "Устройството с Thunderbolt не може да се одобри: %s" #: js/ui/status/volume.js:218 msgid "Volume changed" msgstr "Променена сила на звука" #: js/ui/status/volume.js:231 msgid "Unmute" msgstr "Със звук" #: js/ui/status/volume.js:231 msgid "Mute" msgstr "Заглушаване" #: js/ui/status/volume.js:286 msgid "Volume" msgstr "Сила на звука" #: js/ui/status/volume.js:302 msgid "Sound Output" msgstr "Аудио изход" #: js/ui/status/volume.js:374 msgid "Sound Input" msgstr "Аудио вход" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:20 msgid "Mirror" msgstr "Еднакво изображение" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:29 msgid "Join Displays" msgstr "Обединяване на екраните" #. Translators: this is for using only external displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:39 msgid "External Only" msgstr "Външни екрани" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:47 msgid "Built-in Only" msgstr "Вградени екрани" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:378 msgid "%A %B %-d" msgstr "%A, %-d %B" #: js/ui/unlockDialog.js:384 msgid "Swipe up to unlock" msgstr "За отключване прокарайте пръст" #: js/ui/unlockDialog.js:385 msgid "Click or press a key to unlock" msgstr "За отключване натиснете клавиш" #: js/ui/unlockDialog.js:568 msgid "Unlock Window" msgstr "Отключване на прозореца" #: js/ui/unlockDialog.js:577 msgid "Log in as another user" msgstr "Влизане като друг потребител" #: js/ui/welcomeDialog.js:47 #, javascript-format msgid "GNOME %s" msgstr "GNOME %s" #: js/ui/welcomeDialog.js:51 #, javascript-format msgid "Welcome to %s" msgstr "Добре дошли в %s" #: js/ui/welcomeDialog.js:52 msgid "If you want to learn your way around, check out the tour" msgstr "Въвеждащата демонстрация ще ви помогне да се ориентирате" #: js/ui/welcomeDialog.js:61 msgid "Skip" msgstr "Пропускане" #: js/ui/welcomeDialog.js:66 msgid "Take Tour" msgstr "Демонстрация" #: js/ui/windowAttentionHandler.js:18 #, javascript-format msgid "“%s” is ready" msgstr "Програмата „%s“ е готова за употреба" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:68 msgid "Keep these display settings?" msgstr "Запазване на настройките?" #: js/ui/windowManager.js:78 msgid "Revert Settings" msgstr "Връщане на предишните" #: js/ui/windowManager.js:83 msgid "Keep Changes" msgstr "Запазване на промените" #: js/ui/windowManager.js:103 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "Настройките ще се възстановят след %d секунда" msgstr[1] "Настройките ще се възстановят след %d секунди" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:500 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:40 msgid "Hide" msgstr "Скриване" #: js/ui/windowMenu.js:47 msgid "Restore" msgstr "Възстановяване" #: js/ui/windowMenu.js:51 msgid "Maximize" msgstr "Максимизиране" #: js/ui/windowMenu.js:58 msgid "Move" msgstr "Преместване" #: js/ui/windowMenu.js:78 msgid "Resize" msgstr "Оразмеряване" #: js/ui/windowMenu.js:98 msgid "Always on Top" msgstr "Винаги отгоре" #: js/ui/windowMenu.js:117 msgid "Always on Visible Workspace" msgstr "Винаги на видимия работен плот" #: js/ui/windowMenu.js:131 msgid "Move to Workspace Left" msgstr "Преместване на левия работен плот" #: js/ui/windowMenu.js:137 msgid "Move to Workspace Right" msgstr "Преместване на десния работен плот" #: js/ui/windowMenu.js:143 msgid "Move to Workspace Up" msgstr "Преместване на горния работен плот" #: js/ui/windowMenu.js:149 msgid "Move to Workspace Down" msgstr "Преместване на долния работен плот" #: js/ui/windowMenu.js:167 msgid "Move to Monitor Up" msgstr "Преместване на горния монитор" #: js/ui/windowMenu.js:176 msgid "Move to Monitor Down" msgstr "Преместване на долния монитор" #: js/ui/windowMenu.js:185 msgid "Move to Monitor Left" msgstr "Преместване на левия монитор" #: js/ui/windowMenu.js:194 msgid "Move to Monitor Right" msgstr "Преместване на десния монитор" #: js/ui/windowMenu.js:202 msgid "Close" msgstr "Затваряне" #: src/main.c:512 subprojects/extensions-tool/src/main.c:336 msgid "Print version" msgstr "Показване на версията" #: src/main.c:518 msgid "Mode used by GDM for login screen" msgstr "Режим на GDM за екрана за влизане" #: src/main.c:524 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "Използване на определен режим за екрана за идентификация, напр. „gdm“" #: src/main.c:530 msgid "List possible modes" msgstr "Списък на достъпните режими" #: src/main.c:536 msgid "Force animations to be enabled" msgstr "Анимациите да са включени" #: src/shell-app.c:252 msgctxt "program" msgid "Unknown" msgstr "Неизвестна" #: src/shell-app.c:503 #, c-format msgid "Failed to launch “%s”" msgstr "Неуспешно стартиране на „%s“" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match" msgstr "Паролите не съвпадат" #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "Не може да не попълнете паролата" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "Прозорецът за упълномощаване беше затворен от потребителя" #: src/st/st-icon-theme.c:1865 #, c-format msgid "Icon '%s' not present in theme %s" msgstr "Иконата „%s“ липсва в темата „%s“" #: src/st/st-icon-theme.c:3454 src/st/st-icon-theme.c:3757 msgid "Failed to load icon" msgstr "Неуспешно зареждане на икона" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 msgid "Manage your GNOME Extensions" msgstr "Управление на разширенията на GNOME" #. developer_name tag deprecated with Appstream 1.0 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:19 msgid "The GNOME Project" msgstr "Проектът GNOME" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:51 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" "С „Разширенията на GNOME“ може да променяте настройките им, да инсталирате " "нови, да деинсталирате или изключвате нежеланите разширения." #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:65 msgid "Main Window" msgstr "Основен прозорец" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:69 msgid "Available Updates" msgstr "Налични обновления" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:73 msgid "Search View" msgstr "Изглед за търсене" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "Настройки на разширенията на обвивката" #: subprojects/extensions-app/js/extensionManager.js:237 #, javascript-format msgid "" "The installed version of this extension (%s) is incompatible with the " "current version of GNOME (%s). The extension has been disabled." msgstr "" "Инсталираната версия на разширението (%s) не е съвместима с текущата версия " "на GNOME (%s). Разширението е изключено." #: subprojects/extensions-app/js/extensionManager.js:238 #, javascript-format msgid "" "The installed version of this extension is incompatible with the current " "version of GNOME (%s). The extension has been disabled." msgstr "" "Инсталираната версия на разширението не е съвместима с текущата версия на " "GNOME (%s). Разширението е изключено." #: subprojects/extensions-app/js/extensionManager.js:242 msgid "" "An error has occurred in this extension. This could cause issues elsewhere " "in the system. It is recommended to turn the extension off until the error " "is resolved." msgstr "" "В това разширение е възникнала грешка. Това може да доведе до проблеми в " "други части на системата. Препоръчително е да изключите разширението, докато " "грешката бъде отстранена." #. translators: Details for an extension error #: subprojects/extensions-app/js/extensionManager.js:248 msgid "Error details:" msgstr "Подробности за грешката:" #: subprojects/extensions-app/js/extensionRow.js:82 #, javascript-format msgid "Version %s" msgstr "Версия %s" #: subprojects/extensions-app/js/extensionsWindow.js:113 #, javascript-format msgid "Remove “%s”?" msgstr "Да се премахне ли „%s“?" #: subprojects/extensions-app/js/extensionsWindow.js:114 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "" "Ако премахнете разширение, ще трябва да го изтеглите наново, за да го " "включите." #: subprojects/extensions-app/js/extensionsWindow.js:117 msgid "_Cancel" msgstr "_Отказване" #: subprojects/extensions-app/js/extensionsWindow.js:118 msgid "_Remove" msgstr "_Премахване" #: subprojects/extensions-app/js/extensionsWindow.js:158 msgid "translator-credits" msgstr "" "Ивайло Вълков <ivaylo@e-valkov.org>\n" "Александър Шопов <ash@kambanaria.org>\n" "Twlvnn Kraftwerk <kraft_werk@tutanota.com>\n" "\n" "\n" "Проектът за превод на GNOME има нужда от подкрепа.\n" "Научете повече за нас на уеб сайта ни.\n" "Докладвайте за грешки в превода в съответния раздел." #: subprojects/extensions-app/js/extensionsWindow.js:203 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "При следващото влизане ще се обнови %d разширение." msgstr[1] "При следващото влизане ще се обновят %d разширения." #: subprojects/extensions-app/data/ui/extension-row.ui:22 msgid "Error Details" msgstr "Подробности за грешката" #: subprojects/extensions-app/data/ui/extension-row.ui:62 msgid "Updates Details" msgstr "Подробности за обновленията" #: subprojects/extensions-app/data/ui/extension-row.ui:72 msgid "" "A new version of this extension is ready and will be loaded on next login." msgstr "" "Готова е нова версия на това разширение и тя ще се зареди при следващото " "влизане." #: subprojects/extensions-app/data/ui/extension-row.ui:104 msgid "Extension Details" msgstr "Подробности за разширението" #: subprojects/extensions-app/data/ui/extension-row.ui:192 msgid "_Website" msgstr "_Уеб сайт" #: subprojects/extensions-app/data/ui/extension-row.ui:219 msgid "_Settings" msgstr "_Настройки" #: subprojects/extensions-app/data/ui/extension-row.ui:246 msgid "_Remove…" msgstr "_Премахване…" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Keyboard Shortcuts" msgstr "Клавишни комбинации" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "Относно „Разширения“" #: subprojects/extensions-app/data/ui/extensions-window.ui:64 msgid "Main Menu" msgstr "Основно меню" #: subprojects/extensions-app/data/ui/extensions-window.ui:106 msgid "Search extensions" msgstr "Търсене на разширения" #: subprojects/extensions-app/data/ui/extensions-window.ui:134 msgid "_Extensions" msgstr "_Разширения" #: subprojects/extensions-app/data/ui/extensions-window.ui:139 msgid "More Information" msgstr "Още информация" #: subprojects/extensions-app/data/ui/extensions-window.ui:151 msgid "" "Extensions can cause performance and stability issues. It is recommended to " "disable all extensions if you experience problems with your system." msgstr "" "Разширенията понякога създават проблеми с производителността и надеждността. " "Препоръчително е да ги изключите, ако се натъкнете на това." #: subprojects/extensions-app/data/ui/extensions-window.ui:178 msgid "User Extensions" msgstr "Потребителски разширения" #: subprojects/extensions-app/data/ui/extensions-window.ui:198 msgid "System Extensions" msgstr "Системни разширения" #: subprojects/extensions-app/data/ui/extensions-window.ui:233 msgid "Search Results" msgstr "Резултати от търсенето" #: subprojects/extensions-app/data/ui/extensions-window.ui:252 msgid "No Results Found" msgstr "Няма намерени съвпадения" #: subprojects/extensions-app/data/ui/extensions-window.ui:253 msgid "Try a different search" msgstr "Oпитайте различно търсене" #: subprojects/extensions-app/data/ui/extensions-window.ui:264 msgid "No Installed Extensions" msgstr "Не са инсталирани разширения" #: subprojects/extensions-app/data/ui/extensions-window.ui:265 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" "За търсене и добавяне на разширения посетете extensions.gnome.org." #: subprojects/extensions-app/data/ui/extensions-window.ui:276 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" "За съжаление списъкът с инсталираните разширения не може да се получи. " "Влезте наново в GNOME и пробвайте пак." #: subprojects/extensions-app/data/ui/help-overlay.ui:9 msgctxt "shortcut window" msgid "General" msgstr "Общи" #: subprojects/extensions-app/data/ui/help-overlay.ui:12 msgctxt "shortcut window" msgid "Open Menu" msgstr "Отваряне на меню" #: subprojects/extensions-app/data/ui/help-overlay.ui:18 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Превключване на търсенето" #: subprojects/extensions-app/data/ui/help-overlay.ui:24 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Показване на клавишните комбинации" #: subprojects/extensions-app/data/ui/help-overlay.ui:30 msgctxt "shortcut window" msgid "Quit" msgstr "Спиране на програмата" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:284 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "Новото разширение бе успешно създадено в „%s“.\n" #: subprojects/extensions-tool/src/command-create.c:376 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" "Името трябва да е кратко и описателно.\n" "Примери: %s" #: subprojects/extensions-tool/src/command-create.c:382 #: subprojects/extensions-tool/src/main.c:243 msgid "Name" msgstr "Име" #: subprojects/extensions-tool/src/command-create.c:396 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" "Описанието трябва да обясни какво прави разширението с едно изречение.\n" "Примери: %s" #: subprojects/extensions-tool/src/command-create.c:402 #: subprojects/extensions-tool/src/main.c:246 msgid "Description" msgstr "Описание" #: subprojects/extensions-tool/src/command-create.c:416 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" "Това е уникален идентификатор (UUID) на разширението.\n" "Форматът е като на адрес за е-поща (clicktofocus@janedoe.example.com)\n" #: subprojects/extensions-tool/src/command-create.c:443 msgid "Choose one of the available templates:\n" msgstr "Избор на някой он съществуващите шаблони:\n" #: subprojects/extensions-tool/src/command-create.c:457 msgid "Template" msgstr "Шаблон" #: subprojects/extensions-tool/src/command-create.c:515 msgid "The unique identifier of the new extension" msgstr "Уникален ИДЕНТИФИКАТОР на разширението" #: subprojects/extensions-tool/src/command-create.c:518 msgid "NAME" msgstr "ИМЕ" #: subprojects/extensions-tool/src/command-create.c:519 msgid "The user-visible name of the new extension" msgstr "ИМЕ на приложението" #: subprojects/extensions-tool/src/command-create.c:521 msgid "DESCRIPTION" msgstr "ОПИСАНИЕ" #: subprojects/extensions-tool/src/command-create.c:523 msgid "A short description of what the extension does" msgstr "Кратко ОПИСАНИЕ на функционалността на разширението" #: subprojects/extensions-tool/src/command-create.c:525 #: subprojects/extensions-tool/src/command-pack.c:455 msgid "DOMAIN" msgstr "КОНТЕКСТ" #: subprojects/extensions-tool/src/command-create.c:527 msgid "The gettext domain used by the extension" msgstr "КОНТЕКСТ на gettext, който се използва от разширението" #: subprojects/extensions-tool/src/command-create.c:529 #: subprojects/extensions-tool/src/command-pack.c:448 msgid "SCHEMA" msgstr "СХЕМА" #: subprojects/extensions-tool/src/command-create.c:531 msgid "The GSettings schema used by the extension" msgstr "СХЕМА на GSettings, която се използва от разширението" #: subprojects/extensions-tool/src/command-create.c:534 msgid "TEMPLATE" msgstr "ШАБЛОН" #: subprojects/extensions-tool/src/command-create.c:535 msgid "The template to use for the new extension" msgstr "Шаблон за новото разширение" #: subprojects/extensions-tool/src/command-create.c:538 msgid "Include prefs.js template" msgstr "Включване на шаблон чрез „prefs.js“" #: subprojects/extensions-tool/src/command-create.c:544 msgid "Enter extension information interactively" msgstr "Интерактивно въвеждане на информацията за разширението" #: subprojects/extensions-tool/src/command-create.c:552 msgid "Create a new extension" msgstr "Създаване на ново разширение" #: subprojects/extensions-tool/src/command-create.c:570 #: subprojects/extensions-tool/src/command-list.c:190 msgid "Unknown arguments" msgstr "Непознати аргументи" #: subprojects/extensions-tool/src/command-create.c:595 msgid "UUID, name and description are required" msgstr "Идентификаторът, името и описанието са задължителни" #: subprojects/extensions-tool/src/command-disable.c:62 #: subprojects/extensions-tool/src/command-enable.c:62 #, c-format msgid "Extension “%s” does not exist\n" msgstr "Разширението „%s“ не съществува\n" #: subprojects/extensions-tool/src/command-disable.c:98 msgid "Disable an extension" msgstr "Изключване на разширение" #: subprojects/extensions-tool/src/command-disable.c:116 #: subprojects/extensions-tool/src/command-enable.c:116 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "Не е зададен идентификатор" #: subprojects/extensions-tool/src/command-disable.c:121 #: subprojects/extensions-tool/src/command-enable.c:121 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "Зададен е повече от един идентификатор" #: subprojects/extensions-tool/src/command-enable.c:98 msgid "Enable an extension" msgstr "Включване на разширение" #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:66 #: subprojects/extensions-tool/src/main.c:150 msgid "Failed to connect to GNOME Shell\n" msgstr "Няма връзка с обвивката на GNOME\n" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:159 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "Разширението „%s“ не съществува\n" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "Извеждане на информация за разширение" #: subprojects/extensions-tool/src/command-install.c:190 msgid "Overwrite an existing extension" msgstr "Презаписване на съществуващо разширение" #: subprojects/extensions-tool/src/command-install.c:192 msgid "EXTENSION_BUNDLE" msgstr "КОМПЛЕКТ_РАЗШИРЕНИЯ" #: subprojects/extensions-tool/src/command-install.c:201 msgid "Install an extension bundle" msgstr "Инсталиране на комплект разширения" #: subprojects/extensions-tool/src/command-install.c:219 msgid "No extension bundle specified" msgstr "Не е указан комплект разширения" #: subprojects/extensions-tool/src/command-install.c:225 msgid "More than one extension bundle specified" msgstr "Указани са повече от един комплекти разширения" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show user-installed extensions" msgstr "Потребителски разширения на обвивката" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show system-installed extensions" msgstr "Системни разширения на обвивката" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Show enabled extensions" msgstr "Включени разширения" #: subprojects/extensions-tool/src/command-list.c:149 msgid "Show disabled extensions" msgstr "Изключени разширения" #: subprojects/extensions-tool/src/command-list.c:152 msgid "Show extensions in active state" msgstr "Показване на активните разширения" #: subprojects/extensions-tool/src/command-list.c:155 msgid "Show extensions in inactive state" msgstr "Показване на неактивните разширения" #: subprojects/extensions-tool/src/command-list.c:158 msgid "Show extensions with preferences" msgstr "Разширения с настройки" #: subprojects/extensions-tool/src/command-list.c:161 msgid "Show extensions with updates" msgstr "Разширения с обновления" #: subprojects/extensions-tool/src/command-list.c:164 msgid "Print extension details" msgstr "Подробна информация за разширение" #: subprojects/extensions-tool/src/command-list.c:172 msgid "List installed extensions" msgstr "Списък с инсталираните приложения" #: subprojects/extensions-tool/src/command-pack.c:444 msgid "FILE" msgstr "ФАЙЛ" #: subprojects/extensions-tool/src/command-pack.c:445 msgid "Additional source to include in the bundle" msgstr "Допълнително да се включи в комплекта" #: subprojects/extensions-tool/src/command-pack.c:449 msgid "A GSettings schema that should be included" msgstr "СХЕМА на GSettings, която да се включи" #: subprojects/extensions-tool/src/command-pack.c:451 #: subprojects/extensions-tool/src/command-pack.c:462 msgid "DIRECTORY" msgstr "ДИРЕКТОРИЯ" #: subprojects/extensions-tool/src/command-pack.c:453 msgid "The directory where translations are found" msgstr "ДИРЕКТОРИЯ, в която са преводите" #: subprojects/extensions-tool/src/command-pack.c:457 msgid "The gettext domain to use for translations" msgstr "КОНТЕКСТ на gettext за преводите" #: subprojects/extensions-tool/src/command-pack.c:460 msgid "Overwrite an existing pack" msgstr "Презаписване на съществуващ пакет" #: subprojects/extensions-tool/src/command-pack.c:464 msgid "The directory where the pack should be created" msgstr "В коя директория да се създаде пакетът" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "SOURCE_DIRECTORY" msgstr "ДИРЕКТОРИЯ_ИЗТОЧНИК" #: subprojects/extensions-tool/src/command-pack.c:475 msgid "Create an extension bundle" msgstr "Създаване на комплект разширения" #: subprojects/extensions-tool/src/command-pack.c:495 msgid "More than one source directory specified" msgstr "Указана е повече от една директория-източник" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "Разширението „%s“ няма настройки\n" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "Настройките на разширението „%s“ не може да се отворят: %s\n" #: subprojects/extensions-tool/src/command-prefs.c:87 msgid "Opens extension preferences" msgstr "Отваряне на настройките на разширението" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "Нулиране на разширение" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "Системните разширения не може да се деинсталират\n" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "Неуспешно деинсталиране на „%s“\n" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "Деинсталиране на разширение" #: subprojects/extensions-tool/src/main.c:76 msgid "Do not print error messages" msgstr "Без извеждане на грешки" #: subprojects/extensions-tool/src/main.c:249 msgid "Path" msgstr "Път" #: subprojects/extensions-tool/src/main.c:252 msgid "URL" msgstr "Адрес" #: subprojects/extensions-tool/src/main.c:255 msgid "Original author" msgstr "Първоначален автор" #: subprojects/extensions-tool/src/main.c:261 #: subprojects/extensions-tool/src/main.c:263 #: subprojects/extensions-tool/src/main.c:265 msgid "Version" msgstr "Версия" #: subprojects/extensions-tool/src/main.c:268 msgid "Enabled" msgstr "Включено" #: subprojects/extensions-tool/src/main.c:268 msgid "Yes" msgstr "Да" #: subprojects/extensions-tool/src/main.c:268 msgid "No" msgstr "Не" #: subprojects/extensions-tool/src/main.c:271 msgid "State" msgstr "Състояние" #: subprojects/extensions-tool/src/main.c:309 msgid "“version” takes no arguments" msgstr "Опцията „version“ не приема аргументи" #: subprojects/extensions-tool/src/main.c:311 #: subprojects/extensions-tool/src/main.c:331 msgid "Usage:" msgstr "Употреба:" #: subprojects/extensions-tool/src/main.c:314 msgid "Print version information and exit." msgstr "Извеждане на версията и изход." #: subprojects/extensions-tool/src/main.c:329 #: subprojects/extensions-tool/src/main.c:332 msgid "COMMAND" msgstr "КОМАНДА" #: subprojects/extensions-tool/src/main.c:332 msgid "[ARGS…]" msgstr "[АРГУМЕНТ…]" #: subprojects/extensions-tool/src/main.c:334 msgid "Commands:" msgstr "Команди:" #: subprojects/extensions-tool/src/main.c:335 msgid "Print help" msgstr "Извеждане на помощта" #: subprojects/extensions-tool/src/main.c:337 msgid "Enable extension" msgstr "Включване на разширение" #: subprojects/extensions-tool/src/main.c:338 msgid "Disable extension" msgstr "Изключване на разширение" #: subprojects/extensions-tool/src/main.c:339 msgid "Reset extension" msgstr "Нулиране на разширение" #: subprojects/extensions-tool/src/main.c:340 msgid "Uninstall extension" msgstr "Деинсталиране на разширение" #: subprojects/extensions-tool/src/main.c:341 msgid "List extensions" msgstr "Списък на разширенията" #: subprojects/extensions-tool/src/main.c:342 #: subprojects/extensions-tool/src/main.c:343 msgid "Show extension info" msgstr "Информация за разширение" #: subprojects/extensions-tool/src/main.c:344 msgid "Open extension preferences" msgstr "Настройки на разширение" #: subprojects/extensions-tool/src/main.c:345 msgid "Create extension" msgstr "Създаване на разширение" #: subprojects/extensions-tool/src/main.c:346 msgid "Package extension" msgstr "Пакетиране на разширение" #: subprojects/extensions-tool/src/main.c:347 msgid "Install extension bundle" msgstr "Инсталиране на комплект разширения" #: subprojects/extensions-tool/src/main.c:349 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "За подробна помощ ползвайте „%s“.\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "Примерно" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "Примерно разширение" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "Индикатор" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "Икона в горната лента" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:4 msgid "Quick Settings Item" msgstr "Елемент от бързи настройки" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:5 msgid "Add an item to quick settings" msgstr "Добавяне на елемент в бързите настройки" #. translators: #. * The device has been disabled #: subprojects/gvc/gvc-mixer-control.c:1872 msgid "Disabled" msgstr "Изключено" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1879 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u изход" msgstr[1] "%u изхода" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1889 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u вход" msgstr[1] "%u входа" #: subprojects/gvc/gvc-mixer-control.c:2872 msgid "System Sounds" msgstr "Системни звуци" #~ msgid "Move Titlebar Onscreen" #~ msgstr "Преместване на лентата за заглавието по екрана" #~ msgid "Network Manager" #~ msgstr "Управление на мрежата" #, javascript-format #~ msgid "%s is now known as %s" #~ msgstr "„%s“ в момента е познат като „%s“" #~ msgid "Disabling" #~ msgstr "Изключване" #~ msgid "Enabling" #~ msgstr "Включване" #~ msgid "Screenshot / Screencast" #~ msgstr "Снимка/запис на екрана" #, javascript-format #~ msgid "%d %%" #~ msgstr "%d %%" #~ msgid "Thunderbolt" #~ msgstr "Thunderbolt" #~ msgid "No Thanks" #~ msgstr "Няма нужда" #~ msgid "No Matches" #~ msgstr "Няма открити" #~ msgid "The extension had an error" #~ msgstr "Грешка от разширението" #~ msgid "The extension can be updated" #~ msgstr "Разширението може да се обнови" #~ msgid "Help" #~ msgstr "Помощ" #~ msgid "Manually Installed" #~ msgstr "Ръчно инсталирано" #~ msgid "Built-In" #~ msgstr "Вградено" #~ msgid "Extension Updates Ready" #~ msgstr "Налични са обновления на разширенията" 0707010000021F000081A40000000000000000000000016712993F00008BC4000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/bn.pomsgid "" msgstr "" "Project-Id-Version: bn\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "shell&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2011-04-04 02:20+0000\n" "PO-Revision-Date: 2011-04-04 11:04+0600\n" "Last-Translator: Israt Jahan \n" "Language-Team: Bengali \n" "Language: bn\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: Translate Toolkit 1.8.0\n" "X-Language: bn_BD\n" "X-DamnedLies-Scope: partial\n" #: ../data/gnome-shell.desktop.in.in.h:1 msgid "GNOME Shell" msgstr "জিনোম সেল" #: ../data/gnome-shell.desktop.in.in.h:2 msgid "Window management and application launching" msgstr "উইন্ডো ব্যবস্থাপনা এবং অ্যাপ্লিকেশন চালু" #: ../data/org.gnome.shell.gschema.xml.in.h:1 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:2 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:3 msgid "File extension used for storing the screencast" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:4 msgid "Framerate used for recording screencasts." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:5 msgid "" "GNOME Shell extensions have a uuid property; this key lists extensions which " "should not be loaded." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:6 msgid "History for command (Alt-F2) dialog" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:7 msgid "History for the looking glass dialog" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:8 msgid "If true, display date in the clock, in addition to time." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:9 msgid "If true, display seconds in time." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:10 msgid "If true, display the ISO week date in the calendar." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:11 msgid "List of desktop file IDs for favorite applications" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:13 #, no-c-format msgid "" "Sets the GStreamer pipeline used to encode recordings. It follows the syntax " "used for gst-launch. The pipeline should have an unconnected sink pad where " "the recorded video is recorded. It will normally have a unconnected source " "pad; output from that pad will be written into the output file. However the " "pipeline can also take care of its own output - this might be used to send " "the output to an icecast server via shout2send or similar. When unset or set " "to an empty value, the default pipeline will be used. This is currently " "'videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux' and " "records to WEBM using the VP8 codec. %T is used as a placeholder for a guess " "at the optimal thread count on the system." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:14 msgid "Show date in clock" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:15 msgid "Show the week date in the calendar" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:16 msgid "Show time with seconds" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:17 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:18 msgid "" "The filename for recorded screencasts will be a unique filename based on the " "current date, and use this extension. It should be changed when recording to " "a different container format." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:19 msgid "" "The framerate of the resulting screencast recordered by GNOME Shell's " "screencast recorder in frames-per-second." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:20 msgid "The gstreamer pipeline used to encode the screencast" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:21 msgid "" "The shell normally monitors active applications in order to present the most " "used ones (e.g. in launchers). While this data will be kept private, you may " "want to disable this for privacy reasons. Please note that doing so won't " "remove already saved data." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:22 #, fuzzy msgid "Uuids of extensions to disable" msgstr "কোনো এক্সটেনশন ইনস্টল করা হয়নি" #: ../data/org.gnome.shell.gschema.xml.in.h:23 msgid "Whether to collect stats about applications usage" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:24 msgid "disabled OpenSearch providers" msgstr "" #: ../js/misc/util.js:71 msgid "Command not found" msgstr "কমান্ড পাওয়া যায়নি" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: ../js/misc/util.js:98 msgid "Could not parse command:" msgstr "কমান্ড পার্স করা যায়নি:" #: ../js/misc/util.js:106 #, c-format msgid "Execution of '%s' failed:" msgstr "'%s' কার্যকর করা ব্যর্থ:" #. Translators: Filter to display all applications #: ../js/ui/appDisplay.js:230 msgid "All" msgstr "সব" #: ../js/ui/appDisplay.js:328 msgid "APPLICATIONS" msgstr "অ্যাপ্লিকেশন" #: ../js/ui/appDisplay.js:354 msgid "SETTINGS" msgstr "সেটিংস" #: ../js/ui/appDisplay.js:625 msgid "New Window" msgstr "নতুন উইন্ডো" #: ../js/ui/appDisplay.js:628 msgid "Remove from Favorites" msgstr "পছন্দ থেকে অপসারণ" #: ../js/ui/appDisplay.js:629 msgid "Add to Favorites" msgstr "পছন্দে যোগ" #: ../js/ui/appFavorites.js:91 #, c-format msgid "%s has been added to your favorites." msgstr "আপনার পছন্দে %s যোগ করা হয়েছে।" #: ../js/ui/appFavorites.js:122 #, c-format msgid "%s has been removed from your favorites." msgstr "আপনার পছন্দ থেকে %s বাদ হয়েছে।" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: ../js/ui/calendar.js:66 msgctxt "event list time" msgid "All Day" msgstr "পুরো দিন" #. Translators: Shown in calendar event list, if 24h format #: ../js/ui/calendar.js:71 msgctxt "event list time" msgid "%H:%M" msgstr "%H:%M" #. Transators: Shown in calendar event list, if 12h format #: ../js/ui/calendar.js:78 msgctxt "event list time" msgid "%l:%M %p" msgstr "%l:%M %p" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: ../js/ui/calendar.js:118 msgctxt "grid sunday" msgid "S" msgstr "S" #. Translators: Calendar grid abbreviation for Monday #: ../js/ui/calendar.js:120 msgctxt "grid monday" msgid "M" msgstr "M" #. Translators: Calendar grid abbreviation for Tuesday #: ../js/ui/calendar.js:122 msgctxt "grid tuesday" msgid "T" msgstr "T" #. Translators: Calendar grid abbreviation for Wednesday #: ../js/ui/calendar.js:124 msgctxt "grid wednesday" msgid "W" msgstr "W" #. Translators: Calendar grid abbreviation for Thursday #: ../js/ui/calendar.js:126 msgctxt "grid thursday" msgid "T" msgstr "T" #. Translators: Calendar grid abbreviation for Friday #: ../js/ui/calendar.js:128 msgctxt "grid friday" msgid "F" msgstr "F" #. Translators: Calendar grid abbreviation for Saturday #: ../js/ui/calendar.js:130 msgctxt "grid saturday" msgid "S" msgstr "S" #. Translators: Event list abbreviation for Sunday. #. * #. * NOTE: These list abbreviations are normally not shown together #. * so they need to be unique (e.g. Tuesday and Thursday cannot #. * both be 'T'). #. #: ../js/ui/calendar.js:143 msgctxt "list sunday" msgid "Su" msgstr "Su" #. Translators: Event list abbreviation for Monday #: ../js/ui/calendar.js:145 msgctxt "list monday" msgid "M" msgstr "M" #. Translators: Event list abbreviation for Tuesday #: ../js/ui/calendar.js:147 msgctxt "list tuesday" msgid "T" msgstr "T" #. Translators: Event list abbreviation for Wednesday #: ../js/ui/calendar.js:149 msgctxt "list wednesday" msgid "W" msgstr "W" #. Translators: Event list abbreviation for Thursday #: ../js/ui/calendar.js:151 msgctxt "list thursday" msgid "Th" msgstr "Th" #. Translators: Event list abbreviation for Friday #: ../js/ui/calendar.js:153 msgctxt "list friday" msgid "F" msgstr "F" #. Translators: Event list abbreviation for Saturday #: ../js/ui/calendar.js:155 msgctxt "list saturday" msgid "S" msgstr "S" #. Translators: Text to show if there are no events #: ../js/ui/calendar.js:704 msgid "Nothing Scheduled" msgstr "কোনো কিছুর সময় ঠিক করা হয়নি" #. Translators: Shown on calendar heading when selected day occurs on current year #: ../js/ui/calendar.js:720 ../js/ui/telepathyClient.js:490 msgctxt "calendar heading" msgid "%A, %B %d" msgstr "%A, %B %d" #. Translators: Shown on calendar heading when selected day occurs on different year #: ../js/ui/calendar.js:723 ../js/ui/telepathyClient.js:493 msgctxt "calendar heading" msgid "%A, %B %d, %Y" msgstr "%A, %B %d, %Y" #: ../js/ui/calendar.js:733 msgid "Today" msgstr "আজ" #: ../js/ui/calendar.js:737 msgid "Tomorrow" msgstr "আগামীকাল" #: ../js/ui/calendar.js:746 msgid "This week" msgstr "এ সপ্তাহ" #: ../js/ui/calendar.js:754 msgid "Next week" msgstr "পরবর্তী সপ্তাহ" #: ../js/ui/dash.js:174 ../js/ui/messageTray.js:1007 msgid "Remove" msgstr "অপসারণ" #: ../js/ui/dateMenu.js:91 msgid "Date and Time Settings" msgstr "তারিখ ও সময় এর সেটিং" #: ../js/ui/dateMenu.js:111 msgid "Open Calendar" msgstr "ক্যালেন্ডার খুলুন" #. Translators: This is the time format with date used #. in 24-hour mode. #: ../js/ui/dateMenu.js:164 msgid "%a %b %e, %R:%S" msgstr "%a %b %e, %R:%S" #: ../js/ui/dateMenu.js:165 msgid "%a %b %e, %R" msgstr "%a %b %e, %R" #. Translators: This is the time format without date used #. in 24-hour mode. #: ../js/ui/dateMenu.js:169 msgid "%a %R:%S" msgstr "%a %R:%S" #: ../js/ui/dateMenu.js:170 msgid "%a %R" msgstr "%a %R" #. Translators: This is a time format with date used #. for AM/PM. #: ../js/ui/dateMenu.js:177 msgid "%a %b %e, %l:%M:%S %p" msgstr "%a %b %e, %l:%M:%S %p" #: ../js/ui/dateMenu.js:178 msgid "%a %b %e, %l:%M %p" msgstr "%a %b %e, %l:%M %p" #. Translators: This is a time format without date used #. for AM/PM. #: ../js/ui/dateMenu.js:182 msgid "%a %l:%M:%S %p" msgstr "%a %l:%M:%S %p" #: ../js/ui/dateMenu.js:183 msgid "%a %l:%M %p" msgstr "%a %l:%M %p" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM"). #. #: ../js/ui/dateMenu.js:194 msgid "%A %B %e, %Y" msgstr "%A %B %e, %Y" #: ../js/ui/docDisplay.js:19 msgid "RECENT ITEMS" msgstr "সাম্প্রতিক আইটেম" #: ../js/ui/endSessionDialog.js:63 #, c-format msgid "Log Out %s" msgstr "লগআউট %s" #: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:70 msgid "Log Out" msgstr "লগআউট" #: ../js/ui/endSessionDialog.js:65 msgid "Click Log Out to quit these applications and log out of the system." msgstr "লগআউট ক্লিক করে অ্যাপ্লিকেশন বন্ধ এবং সিস্টেম থেকে লগআউট।" #: ../js/ui/endSessionDialog.js:66 #, c-format msgid "%s will be logged out automatically in %d seconds." msgstr "%s থেকে স্বয়ংক্রিয়ভাবে %d সেকেন্ডের মধ্যে লগআউট।" #: ../js/ui/endSessionDialog.js:67 #, c-format msgid "You will be logged out automatically in %d seconds." msgstr "আপনি স্বয়ংক্রিয়ভাবে %d সেকেন্ডের মধ্যে লগআউট হবেন।" #: ../js/ui/endSessionDialog.js:68 msgid "Logging out of the system." msgstr "সিস্টেম থেকে লগ আউট।" #: ../js/ui/endSessionDialog.js:75 ../js/ui/endSessionDialog.js:82 #, fuzzy msgid "Power Off" msgstr "পাওয়ার বন্ধ..." #: ../js/ui/endSessionDialog.js:76 #, fuzzy msgid "Click Power Off to quit these applications and power off the system." msgstr "লগআউট ক্লিক করে অ্যাপ্লিকেশন বন্ধ এবং সিস্টেম থেকে লগআউট।" #: ../js/ui/endSessionDialog.js:77 #, fuzzy, c-format msgid "The system will power off automatically in %d seconds." msgstr "সিস্টেম %d সেকেন্ডে স্বয়ংক্রিয়ভাবে রিস্টার্ট হবে।" #: ../js/ui/endSessionDialog.js:78 #, fuzzy msgid "Powering off the system." msgstr "সিস্টেম থেকে লগ আউট।" #: ../js/ui/endSessionDialog.js:80 ../js/ui/endSessionDialog.js:88 #: ../js/ui/endSessionDialog.js:93 msgid "Restart" msgstr "রিস্টার্ট" #: ../js/ui/endSessionDialog.js:89 msgid "Click Restart to quit these applications and restart the system." msgstr "এ অ্যাপ্লিকেশন বন্ধ করার জন্য রিস্টার্ট ক্লিক করে সিস্টেম রিস্টার্ট।" #: ../js/ui/endSessionDialog.js:90 #, c-format msgid "The system will restart automatically in %d seconds." msgstr "সিস্টেম %d সেকেন্ডে স্বয়ংক্রিয়ভাবে রিস্টার্ট হবে।" #: ../js/ui/endSessionDialog.js:91 msgid "Restarting the system." msgstr "সিস্টেম রিস্টার্ট করা হচ্ছে।" #: ../js/ui/endSessionDialog.js:417 ../js/ui/polkitAuthenticationAgent.js:172 #: ../js/ui/status/bluetooth.js:466 msgid "Cancel" msgstr "বাতিল" #: ../js/ui/lookingGlass.js:588 msgid "No extensions installed" msgstr "কোনো এক্সটেনশন ইনস্টল করা হয়নি" #: ../js/ui/lookingGlass.js:625 msgid "Enabled" msgstr "সক্রিয়" #. translators: #. * The device has been disabled #: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1091 msgid "Disabled" msgstr "নিস্ক্রিয়" #: ../js/ui/lookingGlass.js:629 msgid "Error" msgstr "ত্রুটি" #: ../js/ui/lookingGlass.js:631 msgid "Out of date" msgstr "সময় শেষ" #: ../js/ui/lookingGlass.js:656 msgid "View Source" msgstr "সোর্স দেখুন" #: ../js/ui/lookingGlass.js:662 msgid "Web Page" msgstr "ওয়েব পেজ" #: ../js/ui/messageTray.js:1000 msgid "Open" msgstr "খুলুন" #: ../js/ui/messageTray.js:2164 msgid "System Information" msgstr "সিস্টেম তথ্য" #: ../js/ui/overview.js:91 msgid "Undo" msgstr "পূর্বাবস্থায় ফিরিয়ে নেয়া" #: ../js/ui/overview.js:186 msgid "Windows" msgstr "উইন্ডো" #: ../js/ui/overview.js:189 msgid "Applications" msgstr "অ্যাপ্লিকেশন" #. Translators: this is the name of the dock/favorites area on #. the left of the overview #: ../js/ui/overview.js:205 msgid "Dash" msgstr "ড্যাশ" #. TODO - _quit() doesn't really work on apps in state STARTING yet #: ../js/ui/panel.js:524 #, c-format msgid "Quit %s" msgstr "%s বন্ধ" #. Button on the left side of the panel. #. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview". #: ../js/ui/panel.js:902 msgid "Activities" msgstr "অ্যাক্টিভিটিজ" #: ../js/ui/panel.js:1003 msgid "Top Bar" msgstr "শীর্ষ বার" #: ../js/ui/placeDisplay.js:122 #, c-format msgid "Failed to unmount '%s'" msgstr "'%s' আনমাউন্ট করতে ব্যর্থ" #: ../js/ui/placeDisplay.js:125 msgid "Retry" msgstr "পুনরায় চেষ্টা" #: ../js/ui/placeDisplay.js:165 msgid "Connect to..." msgstr "সংযুক্ত..." #: ../js/ui/placeDisplay.js:380 msgid "PLACES & DEVICES" msgstr "স্থান এবং ডিভাইস" #: ../js/ui/polkitAuthenticationAgent.js:74 #, fuzzy msgid "Authentication Required" msgstr "প্রমাণীকরণ আবশ্যক" #: ../js/ui/polkitAuthenticationAgent.js:108 msgid "Administrator" msgstr "" #: ../js/ui/polkitAuthenticationAgent.js:176 #, fuzzy msgid "Authenticate" msgstr "প্রমাণীকরণ আবশ্যক" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: ../js/ui/polkitAuthenticationAgent.js:264 msgid "Sorry, that didn't work. Please try again." msgstr "" #: ../js/ui/polkitAuthenticationAgent.js:276 msgid "Password:" msgstr "" #. Translators: this MUST be either "toggle-switch-us" #. (for toggle switches containing the English words #. "ON" and "OFF") or "toggle-switch-intl" (for toggle #. switches containing "◯" and "|"). Other values will #. simply result in invisible toggle switches. #: ../js/ui/popupMenu.js:679 msgid "toggle-switch-us" msgstr "টগল-পরিবর্তন-আমাদের" #: ../js/ui/runDialog.js:205 msgid "Please enter a command:" msgstr "অনুগ্রহ করে একটি কমান্ড দিন:" #: ../js/ui/searchDisplay.js:311 msgid "Searching..." msgstr "অনুসন্ধান..." #: ../js/ui/searchDisplay.js:325 msgid "No matching results." msgstr "মিলযুক্ত কোনো ফলাফল নেই।" #: ../js/ui/statusMenu.js:161 ../js/ui/statusMenu.js:163 #: ../js/ui/statusMenu.js:228 msgid "Power Off..." msgstr "পাওয়ার বন্ধ..." #: ../js/ui/statusMenu.js:163 ../js/ui/statusMenu.js:227 msgid "Suspend" msgstr "বাতিল" #: ../js/ui/statusMenu.js:184 msgid "Available" msgstr "বিদ্যমান" #: ../js/ui/statusMenu.js:189 msgid "Busy" msgstr "ব্যস্ত" #: ../js/ui/statusMenu.js:197 msgid "My Account" msgstr "আমার অ্যাকাউন্ট" #: ../js/ui/statusMenu.js:201 msgid "System Settings" msgstr "সিস্টেম সেটিং" #: ../js/ui/statusMenu.js:208 msgid "Lock Screen" msgstr "লক স্ক্রিন" #: ../js/ui/statusMenu.js:213 msgid "Switch User" msgstr "ব্যবহারকারী পরিবর্তন" #: ../js/ui/statusMenu.js:218 msgid "Log Out..." msgstr "লগআউট..." #: ../js/ui/status/accessibility.js:62 msgid "Zoom" msgstr "বড় আকারে প্রদর্শন" #. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA, #. 'screen-reader-enabled'); #. this.menu.addMenuItem(screenReader); #. let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA, #. 'screen-keyboard-enabled'); #. this.menu.addMenuItem(screenKeyboard); #: ../js/ui/status/accessibility.js:77 msgid "Visual Alerts" msgstr "দৃষ্টিনির্ভর সতর্কবানী" #: ../js/ui/status/accessibility.js:80 msgid "Sticky Keys" msgstr "স্টিকি কী" #: ../js/ui/status/accessibility.js:83 msgid "Slow Keys" msgstr "ধীর গতির কী" #: ../js/ui/status/accessibility.js:86 msgid "Bounce Keys" msgstr "বাউন্স কী" #: ../js/ui/status/accessibility.js:89 msgid "Mouse Keys" msgstr "মাউস কী" #: ../js/ui/status/accessibility.js:93 msgid "Universal Access Settings" msgstr "সার্বজনীন ব্যবহার করার সেটিং" #: ../js/ui/status/accessibility.js:146 msgid "High Contrast" msgstr "উচ্চ বৈশাদৃশ্য" #: ../js/ui/status/accessibility.js:183 msgid "Large Text" msgstr "বড় টেক্সট" #: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:237 #: ../js/ui/status/bluetooth.js:333 ../js/ui/status/bluetooth.js:367 #: ../js/ui/status/bluetooth.js:407 ../js/ui/status/bluetooth.js:440 msgid "Bluetooth" msgstr "ব্লুটুথ" #: ../js/ui/status/bluetooth.js:55 msgid "Visibility" msgstr "দৃশ্যমানতা" #: ../js/ui/status/bluetooth.js:69 msgid "Send Files to Device..." msgstr "ডিভাইসে ফাইল প্রেরণ..." #: ../js/ui/status/bluetooth.js:70 msgid "Setup a New Device..." msgstr "নতুন ডিভাইস সেটআপ..." #: ../js/ui/status/bluetooth.js:95 msgid "Bluetooth Settings" msgstr "ব্লুটুথ সেটিং" #: ../js/ui/status/bluetooth.js:188 msgid "Connection" msgstr "সংযোগ" #: ../js/ui/status/bluetooth.js:224 msgid "Send Files..." msgstr "ফাইল প্রেরণ..." #: ../js/ui/status/bluetooth.js:229 msgid "Browse Files..." msgstr "ফাইল ব্রাউজ..." #: ../js/ui/status/bluetooth.js:238 msgid "Error browsing device" msgstr "ডিভাইস ব্রাউজিং ত্রুটি" #: ../js/ui/status/bluetooth.js:239 #, c-format msgid "The requested device cannot be browsed, error is '%s'" msgstr "অনুরোধকৃত ডিভাইস ব্রাউজ করা যায়না, ত্রুটি '%s'" #: ../js/ui/status/bluetooth.js:247 msgid "Keyboard Settings" msgstr "কীবোর্ড সেটিং" #: ../js/ui/status/bluetooth.js:252 msgid "Mouse Settings" msgstr "মাউস সেটিং" #: ../js/ui/status/bluetooth.js:259 ../js/ui/status/volume.js:66 msgid "Sound Settings" msgstr "শব্দ সেটিং" #: ../js/ui/status/bluetooth.js:368 #, c-format msgid "Authorization request from %s" msgstr "%s হতে প্রমানীকরণের জন্য অনুরোধ" #: ../js/ui/status/bluetooth.js:374 #, c-format msgid "Device %s wants access to the service '%s'" msgstr "সার্ভিস '%s' ডিভাইস %s ব্যবহার করতে চায়" #: ../js/ui/status/bluetooth.js:376 msgid "Always grant access" msgstr "সর্বদা ব্যবহারের অনুমোদন" #: ../js/ui/status/bluetooth.js:377 msgid "Grant this time only" msgstr "কেবল এইবার অনুমোদন" #: ../js/ui/status/bluetooth.js:378 msgid "Reject" msgstr "বাতিল" #: ../js/ui/status/bluetooth.js:408 #, c-format msgid "Pairing confirmation for %s" msgstr "%s এ র জন্য নিশ্চিতকরণ মিলানো হচ্ছে" #: ../js/ui/status/bluetooth.js:414 ../js/ui/status/bluetooth.js:448 #, c-format msgid "Device %s wants to pair with this computer" msgstr "ডিভাইস %s কম্পিউটারের এর সাথে পেয়ার করতে চায়" #: ../js/ui/status/bluetooth.js:415 #, c-format msgid "Please confirm whether the PIN '%s' matches the one on the device." msgstr "অনুগ্রহ করে নিশ্চিত হোন যে পিন '%s' ডিভাইসের পিনের সাথে মিলে কিনা।" #: ../js/ui/status/bluetooth.js:417 msgid "Matches" msgstr "মিল" #: ../js/ui/status/bluetooth.js:418 msgid "Does not match" msgstr "মিলে না" #: ../js/ui/status/bluetooth.js:441 #, c-format msgid "Pairing request for %s" msgstr "%s এর সাথে পেয়ার করার অনুরোধ" #: ../js/ui/status/bluetooth.js:449 msgid "Please enter the PIN mentioned on the device." msgstr "ডিভাইসে উল্লেখিত পিন দিন।" #: ../js/ui/status/bluetooth.js:465 msgid "OK" msgstr "ঠিক আছে" #: ../js/ui/status/keyboard.js:73 msgid "Show Keyboard Layout..." msgstr "কীবোর্ডের লেআউট প্রদর্শন..." #: ../js/ui/status/keyboard.js:76 msgid "Localization Settings" msgstr "স্থানীয়করণ সেটিং" #: ../js/ui/status/network.js:105 ../js/ui/status/network.js:1467 msgid "" msgstr "" #. Translators: this indicates that wireless or wwan is disabled by hardware killswitch #: ../js/ui/status/network.js:319 msgid "disabled" msgstr "নিস্ক্রিয়" #: ../js/ui/status/network.js:502 msgid "connecting..." msgstr "সংযুক্ত করা হচ্ছে..." #. Translators: this is for network connections that require some kind of key or password #: ../js/ui/status/network.js:505 msgid "authentication required" msgstr "প্রমাণীকরণ আবশ্যক" #. Translators: this is for devices that require some kind of firmware or kernel #. module, which is missing #: ../js/ui/status/network.js:515 msgid "firmware missing" msgstr "" #. Translators: this is for wired network devices that are physically disconnected #: ../js/ui/status/network.js:522 msgid "cable unplugged" msgstr "ক্যাবল আনপ্লাগকৃত" #. Translators: this is for a network device that cannot be activated (for example it #. is disabled by rfkill, or it has no coverage #: ../js/ui/status/network.js:527 msgid "unavailable" msgstr "বিদ্যমান নয়" #: ../js/ui/status/network.js:529 msgid "connection failed" msgstr "সংযোগ ব্যর্থ" #. TRANSLATORS: this is the indication that a connection for another logged in user is active, #. and we cannot access its settings (including the name) #: ../js/ui/status/network.js:609 ../js/ui/status/network.js:1415 msgid "Connected (private)" msgstr "সংযুক্ত (ব্যক্তিগত)" #: ../js/ui/status/network.js:690 msgid "Auto Ethernet" msgstr "স্বয়ংক্রিয় ইথারনেট" #: ../js/ui/status/network.js:765 msgid "Auto broadband" msgstr "স্বয়ংক্রিয় ব্রডব্যান্ড" #: ../js/ui/status/network.js:768 msgid "Auto dial-up" msgstr "স্বয়ংক্রিয় ডায়াল-আপ" #. TRANSLATORS: this the automatic wireless connection name (including the network name) #: ../js/ui/status/network.js:911 ../js/ui/status/network.js:1427 #, c-format msgid "Auto %s" msgstr "স্বয়ংক্রিয় %s" #: ../js/ui/status/network.js:913 msgid "Auto bluetooth" msgstr "স্বয়ংক্রিয় ব্লুটুথ" #: ../js/ui/status/network.js:1429 msgid "Auto wireless" msgstr "স্বয়ংক্রিয় ওয়ারলেস" #: ../js/ui/status/network.js:1487 msgid "More..." msgstr "আরও..." #: ../js/ui/status/network.js:1510 msgid "Enable networking" msgstr "নেটওয়ার্কিং সক্রিয়" #: ../js/ui/status/network.js:1522 msgid "Wired" msgstr "সংযুক্ত" #: ../js/ui/status/network.js:1533 msgid "Wireless" msgstr "ওয়ারলেস" #: ../js/ui/status/network.js:1543 msgid "Mobile broadband" msgstr "মোবাইল ব্রডব্যান্ড" #: ../js/ui/status/network.js:1553 msgid "VPN Connections" msgstr "VPN সংযোগ" #: ../js/ui/status/network.js:1565 msgid "Network Settings" msgstr "নেটওয়ার্ক সেটিং" #: ../js/ui/status/network.js:1855 #, c-format msgid "You're now connected to mobile broadband connection '%s'" msgstr "আপনি এখন মোবাইল ব্রডব্যান্ড সংযোগ '%s' এ সংযুক্ত" #: ../js/ui/status/network.js:1859 #, c-format msgid "You're now connected to wireless network '%s'" msgstr "আপনি এখন ওয়ারলেস নেটওয়ার্ক সংযোগে '%s' এ সংযুক্ত" #: ../js/ui/status/network.js:1863 #, c-format msgid "You're now connected to wired network '%s'" msgstr "আপনি এখন তারযুক্ত সংযোগে '%s' এ সংযুক্ত" #: ../js/ui/status/network.js:1867 #, c-format msgid "You're now connected to VPN network '%s'" msgstr "আপনি এখন VPN নেটওয়ার্ক সংযোগ '%s' এ সংযুক্ত" #: ../js/ui/status/network.js:1872 #, c-format msgid "You're now connected to '%s'" msgstr "আপনি এখন '%s' এ সংযুক্ত" #: ../js/ui/status/network.js:1880 msgid "Connection established" msgstr "সংযোগ প্রতিষ্ঠিত" #: ../js/ui/status/network.js:2006 msgid "Networking is disabled" msgstr "নেটওয়ার্কিং বিচ্ছিন্ন" #: ../js/ui/status/network.js:2131 msgid "Network Manager" msgstr "নেটওয়ার্ক ব্যবস্থাপক" #: ../js/ui/status/power.js:85 msgid "Power Settings" msgstr "পাওয়ার সেটিং" #. 0 is reported when UPower does not have enough data #. to estimate battery life #: ../js/ui/status/power.js:111 msgid "Estimating..." msgstr "গণনা করা হচ্ছে..." #: ../js/ui/status/power.js:118 #, c-format msgid "%d hour remaining" msgid_plural "%d hours remaining" msgstr[0] "%d ঘন্টা বাকি" msgstr[1] "%d ঘন্টা বাকি" #. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining" #: ../js/ui/status/power.js:121 #, c-format msgid "%d %s %d %s remaining" msgstr "%d %s %d %s বাকি" #: ../js/ui/status/power.js:123 msgid "hour" msgid_plural "hours" msgstr[0] "ঘন্টা" msgstr[1] "ঘন্টা" #: ../js/ui/status/power.js:123 msgid "minute" msgid_plural "minutes" msgstr[0] "মিনিট" msgstr[1] "মিনিট" #: ../js/ui/status/power.js:126 #, c-format msgid "%d minute remaining" msgid_plural "%d minutes remaining" msgstr[0] "%d মিনিট বাকি" msgstr[1] "%d মিনিট বাকি" #: ../js/ui/status/power.js:228 msgid "AC adapter" msgstr "AC অ্যাডাপ্টার" #: ../js/ui/status/power.js:230 msgid "Laptop battery" msgstr "ল্যাপটপ ব্যাটারি" #: ../js/ui/status/power.js:232 msgid "UPS" msgstr "UPS" #: ../js/ui/status/power.js:234 msgid "Monitor" msgstr "মনিটর" #: ../js/ui/status/power.js:236 msgid "Mouse" msgstr "মাউস" #: ../js/ui/status/power.js:238 msgid "Keyboard" msgstr "কীবোর্ড" #: ../js/ui/status/power.js:240 msgid "PDA" msgstr "PDA" #: ../js/ui/status/power.js:242 msgid "Cell phone" msgstr "সেল ফোন" #: ../js/ui/status/power.js:244 msgid "Media player" msgstr "মিডিয়া প্লেয়ার" #: ../js/ui/status/power.js:246 msgid "Tablet" msgstr "ট্যাবলেট" #: ../js/ui/status/power.js:248 msgid "Computer" msgstr "কম্পিউটার" #: ../js/ui/status/power.js:250 ../src/shell-app-system.c:1088 msgid "Unknown" msgstr "অজানা" #: ../js/ui/status/volume.js:45 msgid "Volume" msgstr "ভলিউম" #: ../js/ui/status/volume.js:58 msgid "Microphone" msgstr "মাইক্রোফোন" #: ../js/ui/telepathyClient.js:335 #, c-format msgid "%s is online." msgstr "%s অনলাইনে।" #: ../js/ui/telepathyClient.js:340 #, c-format msgid "%s is offline." msgstr "%s অফলাইনে।" #: ../js/ui/telepathyClient.js:343 #, c-format msgid "%s is away." msgstr "%s কাছে নেই।" #: ../js/ui/telepathyClient.js:346 #, c-format msgid "%s is busy." msgstr "%s ব্যস্ত।" #. Translators: this is a time format string followed by a date. #. If applicable, replace %X with a strftime format valid for your #. locale, without seconds. #: ../js/ui/telepathyClient.js:482 #, no-c-format msgid "Sent at %X on %A" msgstr "%A এ %X প্রেরণ" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: ../js/ui/viewSelector.js:122 msgid "Type to search..." msgstr "অনুসন্ধান করতে লিখুন..." #: ../js/ui/viewSelector.js:142 ../src/shell-util.c:250 msgid "Search" msgstr "অনুসন্ধান" #: ../js/ui/windowAttentionHandler.js:42 #, c-format msgid "%s has finished starting" msgstr "%s শুরু করা শেষ" #: ../js/ui/windowAttentionHandler.js:44 #, c-format msgid "'%s' is ready" msgstr "'%s' প্রস্তুত" #. translators: #. * The number of sound outputs on a particular device #: ../src/gvc/gvc-mixer-control.c:1098 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u আউটপুট" msgstr[1] "%u আউটপুট" #. translators: #. * The number of sound inputs on a particular device #: ../src/gvc/gvc-mixer-control.c:1108 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u ইনপুট" msgstr[1] "%u ইনপুট" #: ../src/gvc/gvc-mixer-control.c:1406 msgid "System Sounds" msgstr "সিস্টেমের শব্দ" #: ../src/main.c:446 msgid "Print version" msgstr "মুদ্রণ সংস্করণ" #: ../src/shell-app.c:454 #, c-format msgid "Failed to launch '%s'" msgstr "'%s' চালু করতে ব্যর্থ" #: ../src/shell-global.c:1395 msgid "Less than a minute ago" msgstr "এক মিনিটেরও কম সময় আগে" #: ../src/shell-global.c:1399 #, c-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d মিনিট আগে" msgstr[1] "%d মিনিট আগে" #: ../src/shell-global.c:1404 #, c-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d ঘন্টা আগে" msgstr[1] "%d ঘন্টা আগে" #: ../src/shell-global.c:1409 #, c-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d দিন আগে" msgstr[1] "%d দিন আগে" #: ../src/shell-global.c:1414 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d সপ্তাহ আগে" msgstr[1] "%d সপ্তাহ আগে" #: ../src/shell-mobile-providers.c:80 msgid "United Kingdom" msgstr "যুক্তরাজ্য" #: ../src/shell-mobile-providers.c:526 msgid "Default" msgstr "পূর্বনির্ধারিত" #: ../src/shell-polkit-authentication-agent.c:334 msgid "Authentication dialog was dismissed by the user" msgstr "ব্যবহারকারী কর্তৃক প্রমাণীকরণ ডায়ালগ বাতিল" #: ../src/shell-util.c:89 msgid "Home Folder" msgstr "হোম ফোল্ডার" #. Translators: this is the same string as the one found in #. * nautilus #: ../src/shell-util.c:104 msgid "File System" msgstr "ফাইল সিস্টেম" #. Translators: the first string is the name of a gvfs #. * method, and the second string is a path. For #. * example, "Trash: some-directory". It means that the #. * directory called "some-directory" is in the trash. #. #: ../src/shell-util.c:300 #, c-format msgid "%1$s: %2$s" msgstr "%1$s: %2$s" #~ msgid "Shut Down" #~ msgstr "বন্ধ" #~ msgid "Click Shut Down to quit these applications and shut down the system." #~ msgstr "এ অ্যাপ্লিকেশন বন্ধ করার জন্য বন্ধ করায় ক্লিক করে সিস্টেম বন্ধ।" #~ msgid "The system will shut down automatically in %d seconds." #~ msgstr "সিস্টেম %d সেকেন্ডে স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যাবে।" #~ msgid "Shutting down the system." #~ msgstr "সিস্টেম বন্ধ করা হচ্ছে।" #~ msgid "Confirm" #~ msgstr "নিশ্চিত" 07070100000220000081A40000000000000000000000016712993F0001E5B2000000000000000000000000000000000000001D00000000gnome-shell-47.1/po/bn_IN.po# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # , 2014. # Akarshan Biswas , 2020. # msgid "" msgstr "" "Project-Id-Version: unnamed project\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" "POT-Creation-Date: 2020-10-08 00:42+0000\n" "PO-Revision-Date: 2020-10-11 12:33+0530\n" "Last-Translator: Akarshan Biswas \n" "Language-Team: Bengali \n" "Language: bn_IN\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-DamnedLies-Scope: partial\n" "X-Generator: Gtranslator 3.38.0\n" #: data/50-gnome-shell-system.xml:6 msgid "System" msgstr "সিস্টেম" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "বিজ্ঞপ্তি তালিকা দেখান" #: data/50-gnome-shell-system.xml:12 msgid "Focus the active notification" msgstr "বর্তমান বিজ্ঞপ্তিতে নজর দিন" #: data/50-gnome-shell-system.xml:15 msgid "Show the overview" msgstr "পূর্বরূপ দেখান" #: data/50-gnome-shell-system.xml:18 msgid "Show all applications" msgstr "সমস্ত অ্যাপ্লিকেশন দেখান" #: data/50-gnome-shell-system.xml:21 msgid "Open the application menu" msgstr "অ্যাপ্লিকেশন মেনু খুলুন" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "GNOME সেল" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "উইন্ডো পরিচালনা ও অ্যাপ্লিকেশন প্রারম্ভ" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "ডেভেলপার এবং টেস্টারদের কাজের সহায়ক অভ্যন্তরীণ সরঞ্জাম Alt-F2 থেকে চালু করুন" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Alt-F2 ডায়ালগ ব্যবহার করে অভ্যন্তরীণ ডিবাগিং এবং নিয়ন্ত্রণ সরঞ্জামে অ্যাক্সেস দেয়" #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "চালুর করার UUID এক্সটেনশন" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "GNOME সেল এক্সটেনশনের রয়েছে UUID বিশিষ্টতা; লোড করা উচিত এমন এক্সটেনশনগুলি এই কী " "তালিকাভুক্ত করে। লোড হতে চাওয়া যেকোনো এক্সটেনশনকে এই তালিকায় থাকতে হবে। আপনি " "org.gnome.Shell-এ EnableExtension এবং DisableExtension D-Bus পদ্ধতি দিয়ে এই " "তালিকা ব্যবহার করতে পারবেন।" #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "জোর করে অক্ষম করা এক্সটেন্সানগুলির UUIDs" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" "জিনোম শেল এক্সটেনশনের একটি UUID সম্পত্তি রয়েছে; এই কীটি এমন এক্সটেনশনগুলির তালিকা " "দেয় যা বর্তমান মোডের অংশ হিসাবে লোড হওয়া সত্ত্বেও অক্ষম করা উচিত। আপনি org.gnome." "Shell- এ সক্ষম করুন এক্সটেনশন এবং ডিজেবল এক্সটেনশন ডি-বাস পদ্ধতিগুলির সাহায্যে এই " "তালিকাটিও হেরফের করতে পারেন। এই কীটি \"enabled-extensions\" সেটিংসের চেয়ে " "অগ্রাধিকার নেয়।" #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "ব্যবহারকারীর এক্সটেনশনগুলি অক্ষম করুন" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" "ব্যবহারকারী \"সক্ষম-এক্সটেনশন\" সেটিংসকে প্রভাবিত না করে সক্ষম করেছেন এমন সমস্ত " "এক্সটেনশন অক্ষম করুন।" #: data/org.gnome.shell.gschema.xml.in:45 msgid "Disables the validation of extension version compatibility" msgstr "এক্সটেনশন সংস্করণের সুসংগততার যাচাইকরণ নিষ্ক্রিয় করে" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "GNOME Shell শুধুমাত্র সেই এক্সটেনশনগুলি লোড করবে যা বর্তমান চলা সংস্করণ সমর্থন করে " "বলে জানাচ্ছে। এই বিকল্প চালু করলে তা এই টিক চিহ্ন নিষ্ক্রিয় করবে এবং যে সংস্করণগুলিই " "সমর্থন করছে বলে জানাক না কেন তা সমস্ত এক্সটেনশনই লোড করার চেষ্টা করবে।" #: data/org.gnome.shell.gschema.xml.in:54 msgid "List of desktop file IDs for favorite applications" msgstr "পছন্দসই অ্যাপ্লিকেশনগুলির জন্য ডেস্কটপ ফাইল ID-গুলির তালিকা" #: data/org.gnome.shell.gschema.xml.in:55 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "এই চিহ্নিতকারীর সাথে সংশ্লিষ্ট অ্যাপ্লিকেশনগুলি পছন্দসই অংশে দেখানো হবে।" #: data/org.gnome.shell.gschema.xml.in:62 msgid "App Picker View" msgstr "অ্যাপ চয়নকারীর রূপ" #: data/org.gnome.shell.gschema.xml.in:63 msgid "Index of the currently selected view in the application picker." msgstr "অ্যাপ্লিকেশন চয়নকারীতে বর্তমানে নির্বাচিত রূপের সূচি।" #: data/org.gnome.shell.gschema.xml.in:69 msgid "History for command (Alt-F2) dialog" msgstr "(Alt-F2) কম্যান্ড ডায়ালগের ইতিহাস" #. Translators: looking glass is a debugger and inspector tool, see https://wiki.gnome.org/Projects/GnomeShell/LookingGlass #: data/org.gnome.shell.gschema.xml.in:74 msgid "History for the looking glass dialog" msgstr "লুকিং গ্লাস ডায়ালগের ইতিহাস" #: data/org.gnome.shell.gschema.xml.in:78 msgid "Always show the “Log out” menu item in the user menu." msgstr "ব্যবহারকারী মেনুতে সর্বদা \"লগ আউট\" মেনু আইটেমটি দেখান।" #: data/org.gnome.shell.gschema.xml.in:79 msgid "" "This key overrides the automatic hiding of the “Log out” menu item in single-" "user, single-session situations." msgstr "" "এই কীটি একক ব্যবহারকারী, একক-অধিবেশন পরিস্থিতিতে \"লগ আউট\" মেনু আইটেমের " "স্বয়ংক্রিয় আড়ালকরণকে ওভাররাইড করে।" #: data/org.gnome.shell.gschema.xml.in:86 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "এনক্রিপ্ট করা বা রিমোট ফাইলসিস্টেম মাউন্ট করার জন্য পাসওয়ার্ড মনে রাখা হবে কিনা" #: data/org.gnome.shell.gschema.xml.in:87 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "কোনও এনক্রিপ্ট করা ডিভাইস বা একটি রিমোট ফাইল সিস্টেম মাউন্ট করা হলে শেলটি একটি " "পাসওয়ার্ডের জন্য অনুরোধ করবে। ভবিষ্যতে ব্যবহারের জন্য যদি পাসওয়ার্ডটি সংরক্ষণ করা " "যায় তবে একটি \"পাসওয়ার্ড মনে রাখবেন\" চেকবক্স উপস্থিত থাকবে। এই কীটি চেকবাক্সের " "ডিফল্ট অবস্থা সেট করে।" #: data/org.gnome.shell.gschema.xml.in:96 msgid "" "Whether the default Bluetooth adapter had set up devices associated to it" msgstr "ডিফল্ট ব্লুটুথ অ্যাডাপ্টারের সাথে সম্পর্কিত ডিভাইসগুলি সেট আপ করেছিল কিনা" #: data/org.gnome.shell.gschema.xml.in:97 msgid "" "The shell will only show a Bluetooth menu item if a Bluetooth adapter is " "powered, or if there were devices set up associated with the default " "adapter. This will be reset if the default adapter is ever seen not to have " "devices associated to it." msgstr "" "শেলটি কেবলমাত্র একটি ব্লুটুথ মেনু আইটেম দেখায় যদি কোনও ব্লুটুথ অ্যাডাপ্টার চালিত হয় বা " "ডিফল্ট অ্যাডাপ্টারের সাথে যুক্ত ডিভাইসগুলি উপস্থিত থাকে। ডিফল্ট অ্যাডাপ্টারের সাথে এর " "সাথে যুক্ত ডিভাইস না দেখা গেলে এটি পুনরায় সেট করা হবে।" #: data/org.gnome.shell.gschema.xml.in:106 msgid "Enable introspection API" msgstr "আত্মবিজ্ঞাপন API সক্ষম করুন" #: data/org.gnome.shell.gschema.xml.in:107 msgid "" "Enables a D-Bus API that allows to introspect the application state of the " "shell." msgstr "ডি-বাস এপিআই সক্ষম করে যা শেলের অ্যাপ্লিকেশন স্থিতিকে আত্ম-পরীক্ষা করতে দেয়।" #: data/org.gnome.shell.gschema.xml.in:114 msgid "Layout of the app picker" msgstr "অ্যাপ পিকারের লেআউট" #: data/org.gnome.shell.gschema.xml.in:115 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" msgstr "" "অ্যাপ পিকারের লেআউট। অ্যারের প্রতিটি এন্ট্রি একটি পৃষ্ঠা। পৃষ্ঠাগুলি তারা জিনোম " "শেলগুলিতে প্রদর্শিত ক্রমে সংরক্ষণ করা হয়। প্রতিটি পৃষ্ঠায় একটি \"অ্যাপ্লিকেশন আইডি\" " "→ 'ডেটা' জুটি থাকে। বর্তমানে, নিম্নলিখিত মানগুলি 'ডেটা' হিসাবে সংরক্ষণ করা হয়: • " "\"অবস্থান\": পৃষ্ঠায় অ্যাপ্লিকেশন আইকনের অবস্থান" #: data/org.gnome.shell.gschema.xml.in:130 msgid "Keybinding to open the application menu" msgstr "অ্যাপ্লিকেশন মেনু খুলতে কীবাইন্ডিং" #: data/org.gnome.shell.gschema.xml.in:131 msgid "Keybinding to open the application menu." msgstr "অ্যাপ্লিকেশন মেনু খুলতে কীবাইন্ডিং।" #: data/org.gnome.shell.gschema.xml.in:137 msgid "Keybinding to open the “Show Applications” view" msgstr "\"অ্যাপ্লিকেশনগুলি দেখান\" খুলতে কীবাইন্ডিং" #: data/org.gnome.shell.gschema.xml.in:138 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "ক্রিয়াকলাপের পূর্বরূপের \"অ্যাপ্লিকেশনগুলি দেখান\" খুলতে কীবাইন্ডিং।" #: data/org.gnome.shell.gschema.xml.in:145 msgid "Keybinding to open the overview" msgstr "পূর্বরূপ খুলতে কীবাইন্ডিং" #: data/org.gnome.shell.gschema.xml.in:146 msgid "Keybinding to open the Activities Overview." msgstr "ক্রিয়াকলাপের পূর্বরূপ খুলতে কীবাইন্ডিং।" #: data/org.gnome.shell.gschema.xml.in:152 msgid "Keybinding to toggle the visibility of the notification list" msgstr "বিজ্ঞপ্তি তালিকার দৃশ্যমানতা টগল করতে কী-বাইন্ডিং" #: data/org.gnome.shell.gschema.xml.in:153 msgid "Keybinding to toggle the visibility of the notification list." msgstr "বিজ্ঞপ্তি তালিকার দৃশ্যমানতা টগল করতে কী-বাইন্ডিং।" #: data/org.gnome.shell.gschema.xml.in:159 msgid "Keybinding to focus the active notification" msgstr "সক্রিয় বিজ্ঞপ্তি ফোকাস করতে কীবাইন্ডিং" #: data/org.gnome.shell.gschema.xml.in:160 msgid "Keybinding to focus the active notification." msgstr "সক্রিয় বিজ্ঞপ্তি ফোকাস করতে কীবাইন্ডিং।" #: data/org.gnome.shell.gschema.xml.in:166 msgid "Switch to application 1" msgstr "অ্যাপ্লিকেশন ১ এ স্যুইচ করুন" #: data/org.gnome.shell.gschema.xml.in:170 msgid "Switch to application 2" msgstr "অ্যাপ্লিকেশন ২ এ স্যুইচ করুন" #: data/org.gnome.shell.gschema.xml.in:174 msgid "Switch to application 3" msgstr "অ্যাপ্লিকেশন ৩ এ স্যুইচ করুন" #: data/org.gnome.shell.gschema.xml.in:178 msgid "Switch to application 4" msgstr "অ্যাপ্লিকেশন ৪ এ স্যুইচ করুন" #: data/org.gnome.shell.gschema.xml.in:182 msgid "Switch to application 5" msgstr "অ্যাপ্লিকেশন ৫ এ স্যুইচ করুন" #: data/org.gnome.shell.gschema.xml.in:186 msgid "Switch to application 6" msgstr "অ্যাপ্লিকেশন ৬ এ স্যুইচ করুন" #: data/org.gnome.shell.gschema.xml.in:190 msgid "Switch to application 7" msgstr "অ্যাপ্লিকেশন ৭ এ স্যুইচ করুন" #: data/org.gnome.shell.gschema.xml.in:194 msgid "Switch to application 8" msgstr "অ্যাপ্লিকেশন ৮ এ স্যুইচ করুন" #: data/org.gnome.shell.gschema.xml.in:198 msgid "Switch to application 9" msgstr "অ্যাপ্লিকেশন ৯ এ স্যুইচ করুন" #: data/org.gnome.shell.gschema.xml.in:207 #: data/org.gnome.shell.gschema.xml.in:234 msgid "Limit switcher to current workspace." msgstr "বর্তমান কাজেরস্থানে স্যুইচার সীমাবদ্ধ করুন।" #: data/org.gnome.shell.gschema.xml.in:208 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "সত্য হলে, বর্তমান কাজেরস্থানে উইন্ডো থাকা অ্যাপ্লিকেশনগুলিই শুধুমাত্র স্যুইচারে দেখানো " "হয়। অন্যথায়, সকল অ্যাপ্লিকেশন অন্তর্ভুক্ত।" #: data/org.gnome.shell.gschema.xml.in:225 msgid "The application icon mode." msgstr "অ্যাপ্লিকেশন আইকন মোড।" #: data/org.gnome.shell.gschema.xml.in:226 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-" "only” (shows only the application icon) or “both”." msgstr "" "সুইচারে উইন্ডোজগুলি কীভাবে প্রদর্শিত হয় তা কনফিগার করে। বৈধ সম্ভাবনাগুলি হ'ল \"কেবল " "থাম্বনেইল\" (উইন্ডোর একটি থাম্বনেইল দেখায়), \"অ্যাপ-আইকন-কেবল\" (কেবলমাত্র " "অ্যাপ্লিকেশন আইকন দেখায়) বা \"উভয়\"।" #: data/org.gnome.shell.gschema.xml.in:235 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "সত্য হলে, শুধুমাত্র বর্তমান ওয়ার্কস্পেসের উইন্ডোগুলি স্যুইচারে দেখানো হয়। অন্যথায়, সমস্ত " "উইন্ডো অন্তর্ভুক্ত করা হয়।" #: data/org.gnome.shell.gschema.xml.in:245 msgid "Locations" msgstr "অবস্থানগুলি" #: data/org.gnome.shell.gschema.xml.in:246 msgid "The locations to show in world clocks" msgstr "বিশ্বের ঘড়িতে দেখানোর জন্য অবস্থানগুলি" #: data/org.gnome.shell.gschema.xml.in:256 msgid "Automatic location" msgstr "স্বয়ংক্রিয় অবস্থান" #: data/org.gnome.shell.gschema.xml.in:257 msgid "Whether to fetch the current location or not" msgstr "বর্তমান অবস্থান আনতে হবে কিনা" #: data/org.gnome.shell.gschema.xml.in:264 msgid "Location" msgstr "অবস্থান" #: data/org.gnome.shell.gschema.xml.in:265 msgid "The location for which to show a forecast" msgstr "পূর্বাভাস প্রদর্শন করার জন্য অবস্থান" #: data/org.gnome.shell.gschema.xml.in:277 msgid "Attach modal dialog to the parent window" msgstr "প্রধান উইন্ডোতে মোডেল ডায়ালগ সংযুক্ত করুন" #: data/org.gnome.shell.gschema.xml.in:278 #: data/org.gnome.shell.gschema.xml.in:287 #: data/org.gnome.shell.gschema.xml.in:295 #: data/org.gnome.shell.gschema.xml.in:303 #: data/org.gnome.shell.gschema.xml.in:311 msgid "" "This key overrides the key in org.gnome.mutter when running GNOME Shell." msgstr "GNOME সেল চালানোর ক্ষেত্রে এই কী in org.gnome.mutter এর কী ওভাররাইড করে।" #: data/org.gnome.shell.gschema.xml.in:286 msgid "Enable edge tiling when dropping windows on screen edges" msgstr "উইন্ডো স্ক্রীন কিনারায় রাখার সময়ে কিনারা টাইলিং সক্রিয় করুন" #: data/org.gnome.shell.gschema.xml.in:294 msgid "Workspaces are managed dynamically" msgstr "ওয়ার্কস্পেসগুলি ডায়নামিক ভাবে ব্যবস্থাপিত হয়" #: data/org.gnome.shell.gschema.xml.in:302 msgid "Workspaces only on primary monitor" msgstr "শুধুমাত্র প্রধান মনিটরে ওয়ার্কস্পেস" #: data/org.gnome.shell.gschema.xml.in:310 msgid "Delay focus changes in mouse mode until the pointer stops moving" msgstr "" "পয়েন্টার অবস্থান পরিবর্তন না থামানো পর্যন্ত মাউস মোডে ফোকাস পরিবর্তন বিলম্বিত করুন" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "নেটওয়ার্ক লগিন" #: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:36 #: subprojects/extensions-app/data/ui/extensions-window.ui:224 msgid "Something’s gone wrong" msgstr "কিছু ভুল হয়েছে" #: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:48 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" "আমরা খুব দুঃখিত, কিন্তু একটি সমস্যা হয়েছে: এই এক্সটেনশনের সেটিংস প্রদর্শিত হতে পারে " "না। আমরা আপনাকে এক্সটেনশন লেখকদের কাছে সমস্যাটি প্রতিবেদন করার পরামর্শ দিচ্ছি।" #: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:82 msgid "Technical Details" msgstr "প্রযুক্তিগত বিবরণ" #: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:165 msgid "Homepage" msgstr "হোমপেজ " #: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:166 msgid "Visit extension homepage" msgstr "এক্সটেনশন হোমপেজে যান" #: js/gdm/authPrompt.js:137 js/ui/audioDeviceSelection.js:57 #: js/ui/components/networkAgent.js:111 js/ui/components/polkitAgent.js:139 #: js/ui/endSessionDialog.js:438 js/ui/extensionDownloader.js:183 #: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386 #: js/ui/status/network.js:940 subprojects/extensions-app/js/main.js:149 msgid "Cancel" msgstr "বাতিল" #. Cisco LEAP #: js/gdm/authPrompt.js:239 js/ui/components/networkAgent.js:206 #: js/ui/components/networkAgent.js:222 js/ui/components/networkAgent.js:246 #: js/ui/components/networkAgent.js:267 js/ui/components/networkAgent.js:287 #: js/ui/components/networkAgent.js:297 js/ui/components/polkitAgent.js:277 #: js/ui/shellMountOperation.js:326 msgid "Password" msgstr "পাসওয়ার্ড" #: js/gdm/loginDialog.js:318 msgid "Choose Session" msgstr "সেশন বাছুন" #: js/gdm/loginDialog.js:457 msgid "Not listed?" msgstr "তালিকায় নেই?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:913 #, javascript-format msgid "(e.g., user or %s)" msgstr "(উদাঃ, ব্যবহারকারী বা %s)" #. TTLS and PEAP are actually much more complicated, but this complication #. is not visible here since we only care about phase2 authentication #. (and don't even care of which one) #: js/gdm/loginDialog.js:918 js/ui/components/networkAgent.js:242 #: js/ui/components/networkAgent.js:265 js/ui/components/networkAgent.js:283 msgid "Username" msgstr "ব্যবহারকারীর নাম" #: js/gdm/loginDialog.js:1253 msgid "Login Window" msgstr "লগিন উইন্ডো" #: js/gdm/util.js:355 msgid "Authentication error" msgstr "অনুমোদন সংক্রান্ত সমস্যা" #. We don't show fingerprint messages directly since it's #. not the main auth service. Instead we use the messages #. as a cue to display our own message. #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger instead #: js/gdm/util.js:481 msgid "(or swipe finger)" msgstr "(বা আঙুল চালানো)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:82 msgctxt "search-result" msgid "Power Off" msgstr "পাওয়ার বন্ধ" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:85 msgid "power off;shutdown;halt;stop" msgstr "পাওয়ার অফ;শাটডাউন;থাম;বন্ধ করুন" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:90 msgctxt "search-result" msgid "Restart" msgstr "পুনরায় আরম্ভ করুন" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:93 msgid "reboot;restart;" msgstr "রিবুট;পুনরায় আরম্ভ;" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:98 msgctxt "search-result" msgid "Lock Screen" msgstr "লক স্ক্রীন" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:101 msgid "lock screen" msgstr "লক স্ক্রীন" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:106 msgctxt "search-result" msgid "Log Out" msgstr "লগ আউট" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:109 msgid "logout;log out;sign off" msgstr "লগআউট; লগ আউট; সাইন অফ" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:114 msgctxt "search-result" msgid "Suspend" msgstr "থামানো" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:117 msgid "suspend;sleep" msgstr "থামানো; ঘুমানো" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:122 msgctxt "search-result" msgid "Switch User" msgstr "ব্যবহারকারী পাল্টান" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:125 msgid "switch user" msgstr "ব্যবহারকারী পাল্টান" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:132 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "লক ওরিয়েন্টেশন; আনলক ওরিয়েন্টেশন; স্ক্রিন; রোটেশন" #: js/misc/systemActions.js:240 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "স্ক্রিন রোটেশন আনলক করুন" #: js/misc/systemActions.js:241 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "স্ক্রিন রোটেশন লক করুন" #: js/misc/util.js:120 msgid "Command not found" msgstr "কম্যান্ড পাওয়া যায়নি" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:156 msgid "Could not parse command:" msgstr "কম্যান্ড পার্জ করা যায়নি:" #: js/misc/util.js:164 #, javascript-format msgid "Execution of “%s” failed:" msgstr "“%s” -এর সম্পাদনা ব্যর্থ হয়েছে:" #: js/misc/util.js:181 msgid "Just now" msgstr "এক্ষুনি" #: js/misc/util.js:183 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d মিনিট আগে" msgstr[1] "%d মিনিট আগে" #: js/misc/util.js:187 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d ঘণ্টা আগে" msgstr[1] "%d ঘণ্টা আগে" #: js/misc/util.js:191 js/ui/dateMenu.js:162 msgid "Yesterday" msgstr "গতকাল" #: js/misc/util.js:193 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d দিন আগে" msgstr[1] "%d দিন আগে" #: js/misc/util.js:197 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d সপ্তাহ আগে" msgstr[1] "%d সপ্তাহ আগে" #: js/misc/util.js:201 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%d মাস আগে" msgstr[1] "%d মাস আগে" #: js/misc/util.js:204 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "%d বছর আগে" msgstr[1] "%d বছর আগে" #. Translators: Time in 24h format #: js/misc/util.js:237 msgid "%H∶%M" msgstr "%ঘ∶%মি" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/util.js:243 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "গতকাল, %ঘ∶%মি" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/util.js:249 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/util.js:255 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%B %-d, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/util.js:261 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%B %-d %Y, %H∶%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/util.js:266 msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/util.js:272 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "গতকাল, %l∶%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/util.js:278 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/util.js:284 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%B %-d, %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/util.js:290 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%B %-d %Y, %l∶%M %p" #. TRANSLATORS: this is the title of the wifi captive portal login window #: js/portalHelper/main.js:41 msgid "Hotspot Login" msgstr "হটস্পট লগইন" #: js/portalHelper/main.js:87 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "এই হটস্পট লগইনে আপনার সংযোগ নিরাপদ নয়। এই পৃষ্ঠায় আপনি প্রবেশ করা পাসওয়ার্ড বা " "অন্যান্য তথ্য আশেপাশের লোকেরা দেখতে পাবেন।" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:39 js/ui/status/location.js:369 msgid "Deny Access" msgstr "প্রবেশ নিষেধ" #: js/ui/accessDialog.js:40 js/ui/status/location.js:372 msgid "Grant Access" msgstr "অনুদান অ্যাক্সেস" #: js/ui/appDisplay.js:1346 msgid "Unnamed Folder" msgstr "নামহীন ফোল্ডার" #. Translators: This is the heading of a list of open windows #: js/ui/appDisplay.js:2870 js/ui/panel.js:75 msgid "Open Windows" msgstr "উইন্ডোজ খুলুন" #: js/ui/appDisplay.js:2889 js/ui/panel.js:82 msgid "New Window" msgstr "নতুন উইন্ডো" #: js/ui/appDisplay.js:2905 msgid "Launch using Integrated Graphics Card" msgstr "ইন্টিগ্রেটেড গ্রাফিক্স কার্ড ব্যবহার করে লঞ্চ করুন" #: js/ui/appDisplay.js:2906 msgid "Launch using Discrete Graphics Card" msgstr "বিচ্ছিন্ন গ্রাফিক্স কার্ড ব্যবহার করে চালু করুন" #: js/ui/appDisplay.js:2934 js/ui/dash.js:239 msgid "Remove from Favorites" msgstr "পছন্দসই থেকে সরান" #: js/ui/appDisplay.js:2940 msgid "Add to Favorites" msgstr "পছন্দসইতে যোগ করুন" #: js/ui/appDisplay.js:2950 js/ui/panel.js:93 msgid "Show Details" msgstr "বিবরণ প্রদর্শন করা হবে" #: js/ui/appFavorites.js:164 #, javascript-format msgid "%s has been added to your favorites." msgstr "%s আপনার পছন্দসইতে যোগ করা হয়েছে।" #: js/ui/appFavorites.js:197 #, javascript-format msgid "%s has been removed from your favorites." msgstr "আপনার পছন্দসই থেকে %s সরানো হয়েছে।" #: js/ui/audioDeviceSelection.js:41 msgid "Select Audio Device" msgstr "অডিও ডিভাইস নির্বাচন করুন" #: js/ui/audioDeviceSelection.js:54 msgid "Sound Settings" msgstr "ধ্বনি সেটিং" #: js/ui/audioDeviceSelection.js:64 msgid "Headphones" msgstr "হেডফোন" #: js/ui/audioDeviceSelection.js:66 msgid "Headset" msgstr "হেডসেট" #: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:272 msgid "Microphone" msgstr "মাইক্রোফোন" #: js/ui/backgroundMenu.js:14 msgid "Change Background…" msgstr "ব্যাকগ্রাউন্ড পরিবর্তন করুন…" #: js/ui/backgroundMenu.js:16 js/ui/status/nightLight.js:45 msgid "Display Settings" msgstr "ডিসপ্লে সেটিং" #: js/ui/backgroundMenu.js:17 msgid "Settings" msgstr "সেটিং" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:36 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:65 msgctxt "grid sunday" msgid "S" msgstr "S" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:67 msgctxt "grid monday" msgid "M" msgstr "M" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:69 msgctxt "grid tuesday" msgid "T" msgstr "T" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:71 msgctxt "grid wednesday" msgid "W" msgstr "W" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:73 msgctxt "grid thursday" msgid "T" msgstr "T" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:75 msgctxt "grid friday" msgid "F" msgstr "F" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:77 msgctxt "grid saturday" msgid "S" msgstr "S" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:392 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:402 msgid "%OB %Y" msgstr "%OB %Y" #: js/ui/calendar.js:461 msgid "Previous month" msgstr "পূর্ববর্তী মাস" #: js/ui/calendar.js:476 msgid "Next month" msgstr "পরবর্তী মাস" #: js/ui/calendar.js:626 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:682 msgid "Week %V" msgstr "সপ্তাহ %V" #: js/ui/calendar.js:896 msgid "No Notifications" msgstr "কোন বিজ্ঞপ্তি নেই" #: js/ui/calendar.js:950 msgid "Do Not Disturb" msgstr "বিরক্ত করবেন না" #: js/ui/calendar.js:969 msgid "Clear" msgstr "পরিষ্কার" #. Translators: %s is an application name #: js/ui/closeDialog.js:42 #, javascript-format msgid "“%s” is not responding." msgstr "“%s” সাড়া দিচ্ছে না" #: js/ui/closeDialog.js:43 msgid "" "You may choose to wait a short while for it to continue or force the " "application to quit entirely." msgstr "" "আপনি এটি চালিয়ে যাওয়ার জন্য অল্প সময়ের জন্য অপেক্ষা করতে বা অ্যাপ্লিকেশনটিকে " "পুরোপুরি ছাড়তে বাধ্য করতে পারেন।" #: js/ui/closeDialog.js:70 msgid "Force Quit" msgstr "জোর করে বন্ধ" #: js/ui/closeDialog.js:73 msgid "Wait" msgstr "অপেক্ষা" #: js/ui/components/automountManager.js:86 msgid "External drive connected" msgstr "বাহ্যিক ড্রাইভ সংযুক্ত" #: js/ui/components/automountManager.js:98 msgid "External drive disconnected" msgstr "বাহ্যিক ড্রাইভ সংযোগ বিচ্ছিন্ন" #: js/ui/components/automountManager.js:208 msgid "Unable to unlock volume" msgstr "ভলিউম আনলক করতে অক্ষম" #: js/ui/components/automountManager.js:209 msgid "The installed udisks version does not support the PIM setting" msgstr "ইনস্টল করা উডিস্কস সংস্করণ পিআইএম সেটিংস সমর্থন করে না" #: js/ui/components/autorunManager.js:332 #, javascript-format msgid "Open with %s" msgstr "%s সহযোগে খুলুন" #: js/ui/components/networkAgent.js:93 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router." msgstr "বিকল্পভাবে আপনি আপনার রাউটারের \"WPS\" বোতামটি টিপে সংযোগ করতে পারেন। " #: js/ui/components/networkAgent.js:105 js/ui/status/network.js:252 #: js/ui/status/network.js:343 js/ui/status/network.js:943 msgid "Connect" msgstr "সংযোগ করুন" #: js/ui/components/networkAgent.js:212 msgid "Key" msgstr "কী" #: js/ui/components/networkAgent.js:250 js/ui/components/networkAgent.js:273 msgid "Private key password" msgstr "ব্যক্তিগত কী পাসওয়ার্ড" #: js/ui/components/networkAgent.js:271 msgid "Identity" msgstr "পরিচয়" #: js/ui/components/networkAgent.js:285 msgid "Service" msgstr "পরিষেবা" #: js/ui/components/networkAgent.js:314 js/ui/components/networkAgent.js:342 #: js/ui/components/networkAgent.js:675 js/ui/components/networkAgent.js:696 msgid "Authentication required" msgstr "পরিচয় প্রমাণ করা আবশ্যক" #: js/ui/components/networkAgent.js:315 js/ui/components/networkAgent.js:676 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network " "“%s”." msgstr "“%s” বেতার নেটওয়ার্ক অ্যাক্সেস করতে পাসওয়ার্ড বা এনক্রিপশন কী'র প্রয়োজন।" #: js/ui/components/networkAgent.js:319 js/ui/components/networkAgent.js:680 msgid "Wired 802.1X authentication" msgstr "তারযুক্ত 802.1X প্রমাণীকরণ" #: js/ui/components/networkAgent.js:321 msgid "Network name" msgstr "নেটওয়ার্কের নাম" #: js/ui/components/networkAgent.js:326 js/ui/components/networkAgent.js:684 msgid "DSL authentication" msgstr "DSL প্রমাণীকরণ" #: js/ui/components/networkAgent.js:333 js/ui/components/networkAgent.js:689 msgid "PIN code required" msgstr "PIN কোড প্রয়োজনীয়" #: js/ui/components/networkAgent.js:334 js/ui/components/networkAgent.js:690 msgid "PIN code is needed for the mobile broadband device" msgstr "মোবাইল ব্রডব্যান্ড ডিভাইসের জন্য PIN কোড প্রয়োজন" #: js/ui/components/networkAgent.js:335 msgid "PIN" msgstr "PIN" #: js/ui/components/networkAgent.js:343 js/ui/components/networkAgent.js:681 #: js/ui/components/networkAgent.js:685 js/ui/components/networkAgent.js:697 #: js/ui/components/networkAgent.js:701 #, javascript-format msgid "A password is required to connect to “%s”." msgstr "“%s” -এ সংযোগ করতে একটি পাসওয়ার্ডের প্রয়োজন" #: js/ui/components/networkAgent.js:664 js/ui/status/network.js:1718 msgid "Network Manager" msgstr "নেটওয়ার্ক ম্যানেজার" #: js/ui/components/networkAgent.js:700 msgid "VPN password" msgstr "VPN পাসওয়ার্ড" #: js/ui/components/polkitAgent.js:39 msgid "Authentication Required" msgstr "পরিচয় প্রমাণ করা আবশ্যক" #: js/ui/components/polkitAgent.js:80 msgid "Administrator" msgstr "প্রশাসক" #: js/ui/components/polkitAgent.js:142 msgid "Authenticate" msgstr "প্রমাণীকরণ" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:254 js/ui/shellMountOperation.js:402 msgid "Sorry, that didn’t work. Please try again." msgstr "দুঃখিত, এটি কার্যকর হয়নি। অনুগ্রহপূর্বক আবার চেষ্টা করুন।" #. Translators: this is the other person changing their old IM name to their new #. IM name. #: js/ui/components/telepathyClient.js:822 #, javascript-format msgid "%s is now known as %s" msgstr "%s %s হিসাবে পরিচিত" #: js/ui/ctrlAltTab.js:21 js/ui/viewSelector.js:178 msgid "Windows" msgstr "Windows" #: js/ui/dash.js:200 js/ui/dash.js:241 msgid "Show Applications" msgstr "অ্যাপ্লিকেশনগুলি দেখান" #. Translators: this is the name of the dock/favorites area on #. the left of the overview #: js/ui/dash.js:394 msgid "Dash" msgstr "ড্যাশ" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:79 msgid "%B %-d %Y" msgstr "%B %-d %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:86 msgid "%A %B %e %Y" msgstr "%A %B %e %Y" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:151 msgctxt "calendar heading" msgid "%B %-d" msgstr "%B %-d" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:154 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%B %-d %Y" #: js/ui/dateMenu.js:160 msgid "Today" msgstr "আজ" #: js/ui/dateMenu.js:164 msgid "Tomorrow" msgstr "আগামী কাল" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:180 msgctxt "event list time" msgid "All Day" msgstr "সারাদিন" #: js/ui/dateMenu.js:231 msgid "No Events" msgstr "কোনও ইভেন্ট নেই" #: js/ui/dateMenu.js:348 msgid "Add world clocks…" msgstr "বিশ্বের ঘড়ি যুক্ত করুন ..." #: js/ui/dateMenu.js:349 msgid "World Clocks" msgstr "বিশ্ব ঘড়ি" #: js/ui/dateMenu.js:629 msgid "Loading…" msgstr "লোড হচ্ছে ..." #: js/ui/dateMenu.js:639 msgid "Go online for weather information" msgstr "আবহাওয়ার তথ্যের জন্য অনলাইনে যান" #: js/ui/dateMenu.js:641 msgid "Weather information is currently unavailable" msgstr "আবহাওয়ার তথ্য বর্তমানে অনুপলব্ধ" #: js/ui/dateMenu.js:651 msgid "Weather" msgstr "আবহাওয়া" #: js/ui/dateMenu.js:653 msgid "Select weather location…" msgstr "আবহাওয়ার অবস্থান নির্বাচন করুন ..." #: js/ui/endSessionDialog.js:39 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "%s লগ আউট করুন" #: js/ui/endSessionDialog.js:40 msgctxt "title" msgid "Log Out" msgstr "লগ আউট করুন" #: js/ui/endSessionDialog.js:43 #, javascript-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "%s %d -এর মধ্যে স্বয়ংক্রিয় ভাবে লগ আউট হবে।" msgstr[1] "%s %d সেকেন্ডের মধ্যে স্বয়ংক্রিয় ভাবে লগ আউট হবে।" #: js/ui/endSessionDialog.js:49 #, javascript-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "আপনি %d সেকেন্ডের মধ্যে স্বয়ংক্রিয় ভাবে লগ আউট হবেন।" msgstr[1] "আপনি %d সেকেন্ডের মধ্যে স্বয়ংক্রিয় ভাবে লগ আউট হবেন।" #: js/ui/endSessionDialog.js:56 msgctxt "button" msgid "Log Out" msgstr "লগ আউট করুন" #: js/ui/endSessionDialog.js:62 msgctxt "title" msgid "Power Off" msgstr "পাওয়ার বন্ধ" #: js/ui/endSessionDialog.js:63 msgctxt "title" msgid "Install Updates & Power Off" msgstr "আপডেট ইনস্টল করুন এবং পাওয়ার বন্ধ করুন" #: js/ui/endSessionDialog.js:66 #, javascript-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "সিস্টেমের পাওয়ার %d সেকেন্ডের মধ্যে স্বয়ংক্রিয় ভাবে বন্ধ হয়ে যাবে।" msgstr[1] "সিস্টেমের পাওয়ার %d সেকেন্ডের মধ্যে স্বয়ংক্রিয় ভাবে বন্ধ হয়ে যাবে।" #: js/ui/endSessionDialog.js:70 js/ui/endSessionDialog.js:89 msgctxt "checkbox" msgid "Install pending software updates" msgstr "বাকি থাকা সফ্টওয়্যার আপডেট ইনস্টল করুন" #: js/ui/endSessionDialog.js:74 msgctxt "button" msgid "Power Off" msgstr "পাওয়ার বন্ধ" #: js/ui/endSessionDialog.js:81 msgctxt "title" msgid "Restart" msgstr "পুনরায় আরম্ভ করুন" #: js/ui/endSessionDialog.js:82 msgctxt "title" msgid "Install Updates & Restart" msgstr "আপডেট ইনস্টল করুন এবং পুনরায় আরম্ভ করুন" #: js/ui/endSessionDialog.js:85 #, javascript-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "সিস্টেম %d সেকেন্ডের মধ্যে স্বয়ংক্রিয় ভাবে শুরু হবে।" msgstr[1] "সিস্টেম %d সেকেন্ডের মধ্যে স্বয়ংক্রিয় ভাবে শুরু হবে।" #: js/ui/endSessionDialog.js:93 msgctxt "button" msgid "Restart" msgstr "পুনরায় আরম্ভ করুন" #: js/ui/endSessionDialog.js:101 msgctxt "title" msgid "Restart & Install Updates" msgstr "আবার চালু করুন ও আপডেটগুলি ইনস্টল করুন" #: js/ui/endSessionDialog.js:104 #, javascript-format msgid "The system will automatically restart and install updates in %d second." msgid_plural "" "The system will automatically restart and install updates in %d seconds." msgstr[0] "" "সিস্টেম %d সেকেন্ডের মধ্যে স্বয়ংক্রিয় ভাবে চালু হবে এবং আপডেট ইনস্টল করবে।" msgstr[1] "" "সিস্টেম %d সেকেন্ডের মধ্যে স্বয়ংক্রিয় ভাবে চালু হবে এবং আপডেট ইনস্টল করবে।" #: js/ui/endSessionDialog.js:111 js/ui/endSessionDialog.js:132 msgctxt "button" msgid "Restart & Install" msgstr "আবার চালু করুন ও ইনস্টল করুন" #: js/ui/endSessionDialog.js:113 msgctxt "button" msgid "Install & Power Off" msgstr "ইনস্টল করুন ও পাওয়ার বন্ধ করুন" #: js/ui/endSessionDialog.js:114 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "আপডেটগুলি ইনস্টল হয়ে যাওয়ার পরে পাওয়ার বন্ধ করুন" #: js/ui/endSessionDialog.js:121 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "পুনরায় আরম্ভ করুন এবং আপগ্রেড ইনস্টল করুন" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:126 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "%s %s পুনরায় চালু হওয়ার পরে ইনস্টল করা হবে। আপগ্রেড ইনস্টলেশনটি দীর্ঘ সময় নিতে " "পারে: আপনি ব্যাক আপ নিয়ে এসেছেন এবং কম্পিউটারটি প্লাগ ইন হয়েছে তা নিশ্চিত করুন।" #: js/ui/endSessionDialog.js:284 msgid "Low battery power: please plug in before installing updates." msgstr "লো ব্যাটারি শক্তি: আপডেট ইনস্টল করার আগে প্লাগ ইন করুন।" #: js/ui/endSessionDialog.js:293 msgid "Some applications are busy or have unsaved work" msgstr "কিছু অ্যাপ্লিকেশনগুলি ব্যস্ত বা অসুরক্ষিত কাজ রয়েছে" #: js/ui/endSessionDialog.js:298 msgid "Other users are logged in" msgstr "অন্যান্য ব্যবহারকারীরা লগ ইন আছে" #: js/ui/endSessionDialog.js:467 msgctxt "button" msgid "Boot Options" msgstr "বুট অপশনগুলি" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:685 #, javascript-format msgid "%s (remote)" msgstr "%s (দূরবর্তী)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:688 #, javascript-format msgid "%s (console)" msgstr "%s (কনসোল)" #: js/ui/extensionDownloader.js:187 msgid "Install" msgstr "ইনস্টল করুন" #: js/ui/extensionDownloader.js:193 msgid "Install Extension" msgstr "এক্সটেনশন ইনস্টল করুন" #: js/ui/extensionDownloader.js:194 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "“%s” extensions.gnome.org থেকে ডাউনলোড এবং ইনস্টল করবেন?" #: js/ui/extensionSystem.js:253 msgid "Extension Updates Available" msgstr "এক্সটেনশন আপডেট উপলব্ধ" #: js/ui/extensionSystem.js:254 msgid "Extension updates are ready to be installed." msgstr "এক্সটেনশন আপডেটগুলি ইনস্টল করার জন্য প্রস্তুত।" #: js/ui/inhibitShortcutsDialog.js:79 msgid "Allow inhibiting shortcuts" msgstr "বাধা শর্টকাটগুলির অনুমতি দিন" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:82 #, javascript-format msgid "The application %s wants to inhibit shortcuts" msgstr "অ্যাপ্লিকেশন %s শর্টকাটগুলি বাধা দিতে চায়" #: js/ui/inhibitShortcutsDialog.js:83 msgid "An application wants to inhibit shortcuts" msgstr "একটি অ্যাপ্লিকেশন শর্টকাটগুলি বাধা দিতে চায়" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:90 #, javascript-format msgid "You can restore shortcuts by pressing %s." msgstr "আপনি %s টিপে শর্টকাটগুলি পুনরুদ্ধার করতে পারেন।" #: js/ui/inhibitShortcutsDialog.js:100 msgid "Deny" msgstr "অস্বীকার" #: js/ui/inhibitShortcutsDialog.js:107 msgid "Allow" msgstr "অনুমতি" #: js/ui/kbdA11yDialog.js:32 msgid "Slow Keys Turned On" msgstr "স্লো কীগুলি চালু হয়েছে" #: js/ui/kbdA11yDialog.js:33 msgid "Slow Keys Turned Off" msgstr "স্লো কীগুলি বন্ধ হয়ে গেছে" #: js/ui/kbdA11yDialog.js:34 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "আপনি মাত্র ৮ সেকেন্ডের জন্য শিফট কীটি ধরে রেখেছেন। এটি স্লো কীগুলির বৈশিষ্ট্যটির " "শর্টকাট, যা আপনার কীবোর্ডের কাজ করার পদ্ধতিকে প্রভাবিত করে।" #: js/ui/kbdA11yDialog.js:41 msgid "Sticky Keys Turned On" msgstr "স্টিকি কীগুলি চালু হয়েছে" #: js/ui/kbdA11yDialog.js:42 msgid "Sticky Keys Turned Off" msgstr "স্টিকি কীগুলি বন্ধ হয়ে গেছে" #: js/ui/kbdA11yDialog.js:44 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "আপনি একটানা ৫ বার শিফট কী টিপেছেন। এটি স্টিকি কীগুলির বৈশিষ্ট্যটির শর্টকাট, যা " "আপনার কীবোর্ডের কাজের পদ্ধতিকে প্রভাবিত করে।" #: js/ui/kbdA11yDialog.js:46 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" "আপনি একবারে দুটি কী একসাথে টিপেছেন, অথবা ৫ বার শিফট কী টিপেছেন। এটি স্টিকি " "কীগুলি বৈশিষ্ট্যটি বন্ধ করে দেয় যা আপনার কীবোর্ডের কাজ করার পদ্ধতিকে প্রভাবিত করে।" #: js/ui/kbdA11yDialog.js:55 msgid "Leave On" msgstr "লীভ চালু" #: js/ui/kbdA11yDialog.js:55 js/ui/status/bluetooth.js:156 #: js/ui/status/network.js:1315 msgid "Turn On" msgstr "চালু করুন" #: js/ui/kbdA11yDialog.js:63 js/ui/status/bluetooth.js:156 #: js/ui/status/network.js:160 js/ui/status/network.js:344 #: js/ui/status/network.js:1315 js/ui/status/network.js:1427 #: js/ui/status/nightLight.js:41 js/ui/status/rfkill.js:81 #: js/ui/status/rfkill.js:110 msgid "Turn Off" msgstr "বন্ধ করুন" #: js/ui/kbdA11yDialog.js:63 msgid "Leave Off" msgstr "লীভ বন্ধ" #: js/ui/keyboard.js:226 msgid "Region & Language Settings" msgstr "অঞ্চল এবং ভাষা সেটিংস" #: js/ui/lookingGlass.js:664 msgid "No extensions installed" msgstr "কোনো এক্সটেনশন ইনস্টল নেই" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:719 #, javascript-format msgid "%s has not emitted any errors." msgstr "%s থেকে কোনো ত্রুটি আসেনি।" #: js/ui/lookingGlass.js:725 msgid "Hide Errors" msgstr "ত্রুটি লুকান" #: js/ui/lookingGlass.js:729 js/ui/lookingGlass.js:794 msgid "Show Errors" msgstr "ত্রুটি দেখান" #: js/ui/lookingGlass.js:738 msgid "Enabled" msgstr "সক্রিয়" #. translators: #. * The device has been disabled #: js/ui/lookingGlass.js:741 subprojects/gvc/gvc-mixer-control.c:1900 msgid "Disabled" msgstr "নিষ্ক্রিয়" #: js/ui/lookingGlass.js:743 #: subprojects/extensions-app/data/ui/extension-row.ui:188 msgid "Error" msgstr "ত্রুটি" #: js/ui/lookingGlass.js:745 msgid "Out of date" msgstr "মেয়াদ উত্তীর্ণ" #: js/ui/lookingGlass.js:747 msgid "Downloading" msgstr "ডাউনলোড হচ্ছে" #: js/ui/lookingGlass.js:776 msgid "View Source" msgstr "উৎস দেখুন" #: js/ui/lookingGlass.js:785 msgid "Web Page" msgstr "ওয়েব পেজ" #: js/ui/main.js:294 msgid "Logged in as a privileged user" msgstr "একটি সুবিধাযুক্ত ব্যবহারকারী হয়ে লগ ইন আছে" #: js/ui/main.js:295 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" "সুরক্ষার কারণে একটি বিশেষাধিকারী ব্যবহারকারী হয়ে একটি অধিবেশন চালানো এড়ানো " "উচিত। যদি সম্ভব হয় তবে আপনার সাধারণ ব্যবহারকারী হয়ে লগ ইন করা উচিত।" #: js/ui/main.js:334 msgid "Screen Lock disabled" msgstr "স্ক্রীনের লক নিষ্ক্রিয় করা হয়েছে" #: js/ui/main.js:335 msgid "Screen Locking requires the GNOME display manager." msgstr "স্ক্রীন লক করার জন্য জিনোম প্রদর্শন পরিচালক প্রয়োজন।" #: js/ui/messageTray.js:1476 msgid "System Information" msgstr "সিস্টেম তথ্য" #: js/ui/mpris.js:203 msgid "Unknown artist" msgstr "অজানা শিল্পী" #: js/ui/mpris.js:213 msgid "Unknown title" msgstr "অজানা শিরোনাম" #: js/ui/overview.js:74 msgid "Undo" msgstr "পূর্বাবস্থা" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:87 msgid "Overview" msgstr "সংক্ষিপ্ত বর্ণনা" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overview.js:108 msgid "Type to search" msgstr "অনুসন্ধান করতে লিখুন" #: js/ui/padOsd.js:96 msgid "New shortcut…" msgstr "নতুন শর্টকাট" #: js/ui/padOsd.js:143 msgid "Application defined" msgstr "অ্যাপ্লিকেশন সংজ্ঞায়িত" #: js/ui/padOsd.js:144 msgid "Show on-screen help" msgstr "অন-স্ক্রিন সহায়তা প্রদর্শন করুন" #: js/ui/padOsd.js:145 msgid "Switch monitor" msgstr "মনিটর পাল্টান" #: js/ui/padOsd.js:146 msgid "Assign keystroke" msgstr "কীস্ট্রোক বরাদ্দ করুন" #: js/ui/padOsd.js:212 msgid "Done" msgstr "সম্পন্ন" #: js/ui/padOsd.js:732 msgid "Edit…" msgstr "সম্পাদনা করুন ..." #: js/ui/padOsd.js:774 js/ui/padOsd.js:891 msgid "None" msgstr "কোনটাই না" #: js/ui/padOsd.js:845 msgid "Press a button to configure" msgstr "কনফিগার করতে একটি বোতাম টিপুন" #: js/ui/padOsd.js:846 msgid "Press Esc to exit" msgstr "প্রস্থান করতে Esc টিপুন" #: js/ui/padOsd.js:849 msgid "Press any key to exit" msgstr "প্রস্থান করার জন্য যে কোন কী টিপুন" #: js/ui/panel.js:107 msgid "Quit" msgstr "প্রস্থান" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:435 msgid "Activities" msgstr "ক্রিয়াকলাপ" #: js/ui/panel.js:719 msgctxt "System menu in the top bar" msgid "System" msgstr "সিস্টেম" #: js/ui/panel.js:830 msgid "Top Bar" msgstr "শীর্ষ দন্ড" #: js/ui/runDialog.js:58 msgid "Run a Command" msgstr "একটি কম্যান্ড চালান" #: js/ui/runDialog.js:73 msgid "Press ESC to close" msgstr "বন্ধ করতে ESC টিপুন" #: js/ui/runDialog.js:238 msgid "Restart is not available on Wayland" msgstr "পুনরায় চালু করা ওয়েল্যান্ড এ উপলব্ধ নয়" #: js/ui/runDialog.js:243 msgid "Restarting…" msgstr "পুনরায় আরম্ভ করা হচ্ছে…" #: js/ui/screenShield.js:203 msgid "GNOME needs to lock the screen" msgstr "GNOME কে স্ক্রীন লক করতে হবে" #. We could not become modal, so we can't activate the #. screenshield. The user is probably very upset at this #. point, but any application using global grabs is broken #. Just tell him to stop using this app #. #. XXX: another option is to kick the user into the gdm login #. screen, where we're not affected by grabs #: js/ui/screenShield.js:244 js/ui/screenShield.js:602 msgid "Unable to lock" msgstr "লক করা যায়নি" #: js/ui/screenShield.js:245 js/ui/screenShield.js:603 msgid "Lock was blocked by an application" msgstr "লক করা একটি অ্যাপ্লিকেশন দ্বারা আটকানো হয়েছে" #: js/ui/search.js:823 msgid "Searching…" msgstr "অনুসন্ধান করা হচ্ছে..." #: js/ui/search.js:825 msgid "No results." msgstr "কোনো ফলাফল নেই।" #: js/ui/search.js:951 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "আরও %d" msgstr[1] "আরও %d" #: js/ui/shellEntry.js:20 msgid "Copy" msgstr "প্রতিলিপি" #: js/ui/shellEntry.js:25 msgid "Paste" msgstr "লেপন" #: js/ui/shellEntry.js:73 msgid "Show Text" msgstr "টেক্সট দেখান" #: js/ui/shellEntry.js:75 msgid "Hide Text" msgstr "টেক্সট লুকান" #: js/ui/shellEntry.js:162 msgid "Caps lock is on." msgstr "ক্যাপ্‌স লক সক্রিয় আছে" #: js/ui/shellMountOperation.js:285 msgid "Hidden Volume" msgstr "লুকানো ভলিউম" #: js/ui/shellMountOperation.js:288 msgid "Windows System Volume" msgstr "উইন্ডোজ সিস্টেম ভলিউম" #: js/ui/shellMountOperation.js:291 msgid "Uses Keyfiles" msgstr "কীফাইল ব্যবহার করে" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:298 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead." msgstr "" "কীফাইলগুলি ব্যবহার করে এমন একটি ভলিউম আনলক করতে, পরিবর্তে %s ইউটিলিটিটি " "ব্যবহার করুন।" #: js/ui/shellMountOperation.js:306 msgid "PIM Number" msgstr "PIM সংখ্যা" #: js/ui/shellMountOperation.js:365 msgid "Remember Password" msgstr "পাসওয়ার্ড মনে রাখুন" #: js/ui/shellMountOperation.js:380 msgid "Unlock" msgstr "আন-লক" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:391 #, javascript-format msgid "Open %s" msgstr "%s খুলুন" #: js/ui/shellMountOperation.js:423 msgid "The PIM must be a number or empty." msgstr "PIM অবশ্যই একটি নম্বর বা খালি থাকতে হবে।" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:465 #, javascript-format msgid "Unable to start %s" msgstr "%s চালু করতে ব্যর্থ" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:467 #, javascript-format msgid "Couldn’t find the %s application" msgstr "%s অ্যাপ্লিকেশনটি খুঁজে পাওয়া যায় নি" #: js/ui/status/accessibility.js:35 msgid "Accessibility" msgstr "অ্যাক্সেসযোগ্যতা" #: js/ui/status/accessibility.js:50 msgid "Zoom" msgstr "জুম" #: js/ui/status/accessibility.js:57 msgid "Screen Reader" msgstr "স্ক্রীন রিডার" #: js/ui/status/accessibility.js:61 msgid "Screen Keyboard" msgstr "স্ক্রীন কীবোর্ড" #: js/ui/status/accessibility.js:65 msgid "Visual Alerts" msgstr "ভিজ্যুয়াল সর্তকর্তা" #: js/ui/status/accessibility.js:68 msgid "Sticky Keys" msgstr "স্টিকি কী" #: js/ui/status/accessibility.js:71 msgid "Slow Keys" msgstr "মন্থর কী" #: js/ui/status/accessibility.js:74 msgid "Bounce Keys" msgstr "বাউন্স কী" #: js/ui/status/accessibility.js:77 msgid "Mouse Keys" msgstr "মাউস কী" #: js/ui/status/accessibility.js:136 msgid "High Contrast" msgstr "উচ্চ বৈপরীত্য" #: js/ui/status/accessibility.js:178 msgid "Large Text" msgstr "অপেক্ষাকৃত বড় টেক্সট" #: js/ui/status/bluetooth.js:40 msgid "Bluetooth" msgstr "ব্লুটুথ" #: js/ui/status/bluetooth.js:49 js/ui/status/network.js:619 msgid "Bluetooth Settings" msgstr "ব্লুটুথ সেটিং" #. Translators: this is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:148 #, javascript-format #| msgid "%s Connected" msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d সংযুক্ত" msgstr[1] "%d সংযুক্ত" #: js/ui/status/bluetooth.js:152 msgid "Bluetooth Off" msgstr "ব্লুটুথ নিষ্ক্রিয়" #: js/ui/status/bluetooth.js:154 msgid "Bluetooth On" msgstr "ব্লুটুথ সক্রিয়" #: js/ui/status/brightness.js:39 msgid "Brightness" msgstr "উজ্জ্বলতা" #: js/ui/status/dwellClick.js:13 msgid "Single Click" msgstr "একক ক্লিক" #: js/ui/status/dwellClick.js:18 msgid "Double Click" msgstr "ডবল ক্লিক" #: js/ui/status/dwellClick.js:23 msgid "Drag" msgstr "টানা" #: js/ui/status/dwellClick.js:28 msgid "Secondary Click" msgstr "অপ্রধান ক্লিক" #: js/ui/status/dwellClick.js:37 msgid "Dwell Click" msgstr "বাসা ক্লিক" #: js/ui/status/keyboard.js:826 msgid "Keyboard" msgstr "কীবোর্ড" #: js/ui/status/keyboard.js:848 msgid "Show Keyboard Layout" msgstr "কীবোর্ড সজ্জা দেখান" #: js/ui/status/location.js:65 js/ui/status/location.js:174 msgid "Location Enabled" msgstr "অবস্থান সক্রিয়" #: js/ui/status/location.js:66 js/ui/status/location.js:175 msgid "Disable" msgstr "নিষ্ক্রিয় করুন" #: js/ui/status/location.js:67 msgid "Privacy Settings" msgstr "গোপনীয়তা সেটিং" #: js/ui/status/location.js:173 msgid "Location In Use" msgstr "অবস্থান ব্যবহৃত" #: js/ui/status/location.js:177 msgid "Location Disabled" msgstr "অবস্থান অক্ষম" #: js/ui/status/location.js:178 msgid "Enable" msgstr "সক্রিয়" #: js/ui/status/location.js:350 msgid "Allow location access" msgstr "অবস্থান অ্যাক্সেসের অনুমতি দিন" #. Translators: %s is an application name #: js/ui/status/location.js:352 #, javascript-format msgid "The app %s wants to access your location" msgstr "অ্যাপ্লিকেশন %s আপনার অবস্থান অ্যাক্সেস করতে চায়" #: js/ui/status/location.js:362 msgid "Location access can be changed at any time from the privacy settings." msgstr "" "গোপনীয়তা সেটিংস থেকে যে কোনও সময় অবস্থানের অ্যাক্সেস পরিবর্তন করা যেতে পারে।" #: js/ui/status/network.js:71 msgid "" msgstr "" #. Translators: %s is a network identifier #: js/ui/status/network.js:449 js/ui/status/network.js:1344 #, javascript-format msgid "%s Off" msgstr "%s বন্ধ" #. Translators: %s is a network identifier #: js/ui/status/network.js:452 #, javascript-format msgid "%s Connected" msgstr "%s সংযুক্ত" #. Translators: this is for network devices that are physically present but are not #. under NetworkManager's control (and thus cannot be used in the menu); #. %s is a network identifier #: js/ui/status/network.js:457 #, javascript-format msgid "%s Unmanaged" msgstr "%s অপরিচালিত" #. Translators: %s is a network identifier #: js/ui/status/network.js:460 #, javascript-format msgid "%s Disconnecting" msgstr "%s সংযোগ বিচ্ছিন্ন করা হচ্ছে" #. Translators: %s is a network identifier #: js/ui/status/network.js:467 js/ui/status/network.js:1336 #, javascript-format msgid "%s Connecting" msgstr "%s সংযোগ করা হচ্ছে" #. Translators: this is for network connections that require some kind of key or password; %s is a network identifier #: js/ui/status/network.js:470 #, javascript-format msgid "%s Requires Authentication" msgstr "%s এর অনুমোদন প্রয়োজন" #. Translators: this is for devices that require some kind of firmware or kernel #. module, which is missing; %s is a network identifier #: js/ui/status/network.js:478 #, javascript-format msgid "Firmware Missing For %s" msgstr "ফার্মওয়্যার %s এর জন্য অনুপস্থিত" #. Translators: this is for a network device that cannot be activated (for example it #. is disabled by rfkill, or it has no coverage; %s is a network identifier #: js/ui/status/network.js:482 #, javascript-format msgid "%s Unavailable" msgstr "%s অনুপলব্ধ" #. Translators: %s is a network identifier #: js/ui/status/network.js:485 #, javascript-format msgid "%s Connection Failed" msgstr "%s সংযোগ ব্যর্থ হয়েছে" #: js/ui/status/network.js:497 msgid "Wired Settings" msgstr "তারযুক্ত সেটিং" #: js/ui/status/network.js:540 msgid "Mobile Broadband Settings" msgstr "মোবাইল ব্রডব্যান্ড সেটিং" #. Translators: %s is a network identifier #: js/ui/status/network.js:586 js/ui/status/network.js:1341 #, javascript-format msgid "%s Hardware Disabled" msgstr "%s হার্ডওয়্যার নিষ্ক্রিয়" #. Translators: this is for a network device that cannot be activated #. because it's disabled by rfkill (airplane mode); %s is a network identifier #: js/ui/status/network.js:590 #, javascript-format msgid "%s Disabled" msgstr "%s নিষ্ক্রিয়" #: js/ui/status/network.js:631 msgid "Connect to Internet" msgstr "ইন্টারনেটের সাথে সংযুক্ত করুন" #: js/ui/status/network.js:835 msgid "Airplane Mode is On" msgstr "বিমান মোড চালু আছে" #: js/ui/status/network.js:836 msgid "Wi-Fi is disabled when airplane mode is on." msgstr "বিমান মোড চালু অবস্থায় Wi-Fi নিষ্ক্রিয় করা হয়।" #: js/ui/status/network.js:837 msgid "Turn Off Airplane Mode" msgstr "বিমান মোড বন্ধ করুন" #: js/ui/status/network.js:846 msgid "Wi-Fi is Off" msgstr "Wi-Fi বন্ধ" #: js/ui/status/network.js:847 msgid "Wi-Fi needs to be turned on in order to connect to a network." msgstr "একটি নেটওয়ার্কের সাথে সংযুক্ত হতে Wi-Fi চালু করতে হবে।" #: js/ui/status/network.js:848 msgid "Turn On Wi-Fi" msgstr "Wi-Fi চালু করুন" #: js/ui/status/network.js:873 msgid "Wi-Fi Networks" msgstr "Wi-Fi নেটওয়ার্ক" #: js/ui/status/network.js:875 msgid "Select a network" msgstr "একটি নেটওয়ার্ক নির্বাচন করুন" #: js/ui/status/network.js:907 msgid "No Networks" msgstr "কোনো নেটওয়ার্ক নেই" #: js/ui/status/network.js:928 js/ui/status/rfkill.js:108 msgid "Use hardware switch to turn off" msgstr "বন্ধ করতে হার্ডওয়্যার স্যুইচ ব্যবহার করুন" #: js/ui/status/network.js:1205 msgid "Select Network" msgstr "একটি নেটওয়ার্ক নির্বাচন করুন" #: js/ui/status/network.js:1211 msgid "Wi-Fi Settings" msgstr "Wi-Fi সেটিং" #. Translators: %s is a network identifier #: js/ui/status/network.js:1332 #, javascript-format msgid "%s Hotspot Active" msgstr "%s Hotspot সক্রিয়" #. Translators: %s is a network identifier #: js/ui/status/network.js:1347 #, javascript-format msgid "%s Not Connected" msgstr "%s সংযুক্ত নয়" #: js/ui/status/network.js:1444 msgid "connecting…" msgstr "সংযোগ করা হচ্ছে..." #. Translators: this is for network connections that require some kind of key or password #: js/ui/status/network.js:1447 msgid "authentication required" msgstr "পরিচয় প্রমাণ করা আবশ্যক" #: js/ui/status/network.js:1449 msgid "connection failed" msgstr "সংযোগ ব্যর্থ হয়েছে" #: js/ui/status/network.js:1500 msgid "VPN Settings" msgstr "VPN সেটিং" #: js/ui/status/network.js:1517 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1527 msgid "VPN Off" msgstr "VPN বন্ধ" #: js/ui/status/network.js:1588 js/ui/status/rfkill.js:84 msgid "Network Settings" msgstr "নেটওয়ার্ক সেটিং" #: js/ui/status/network.js:1617 #, javascript-format msgid "%s Wired Connection" msgid_plural "%s Wired Connections" msgstr[0] "%s তারযুক্ত সংযোগ" msgstr[1] "%s তারযুক্ত সংযোগগুলি" #: js/ui/status/network.js:1621 #, javascript-format msgid "%s Wi-Fi Connection" msgid_plural "%s Wi-Fi Connections" msgstr[0] "%s ওয়াই-ফাই সংযোগ" msgstr[1] "%s ওয়াই-ফাই সংযোগগুলি" #: js/ui/status/network.js:1625 #, javascript-format msgid "%s Modem Connection" msgid_plural "%s Modem Connections" msgstr[0] "%s মডেম সংযোগ" msgstr[1] "%s মডেম সংযোগগুলি" #: js/ui/status/network.js:1759 msgid "Connection failed" msgstr "সংযোগ ব্যর্থ হয়েছে" #: js/ui/status/network.js:1760 msgid "Activation of network connection failed" msgstr "নেটওয়ার্ক সংযোগের সক্রিয়করণ ব্যর্থ হয়েছে" #: js/ui/status/nightLight.js:63 msgid "Night Light Disabled" msgstr "নাইট লাইট অক্ষম" #: js/ui/status/nightLight.js:64 msgid "Night Light On" msgstr "নাইট লাইট সক্ষম" #: js/ui/status/nightLight.js:66 msgid "Resume" msgstr "জীবনবৃত্তান্ত" #: js/ui/status/nightLight.js:67 msgid "Disable Until Tomorrow" msgstr "আগামীকাল অবধি অক্ষম করুন" #: js/ui/status/power.js:47 msgid "Power Settings" msgstr "পাওয়ার সেটিং" #: js/ui/status/power.js:63 msgid "Fully Charged" msgstr "পুরোপুরি চার্জ রয়েছে" #: js/ui/status/power.js:69 msgid "Not Charging" msgstr "চার্জ হচ্ছে না" #. 0 is reported when UPower does not have enough data #. to estimate battery life #: js/ui/status/power.js:72 js/ui/status/power.js:78 msgid "Estimating…" msgstr "নির্ধারণ করা হচ্ছে…" #. Translators: this is : Remaining () #: js/ui/status/power.js:86 #, javascript-format msgid "%d∶%02d Remaining (%d %%)" msgstr "%d∶%02d বাকি আছে (%d%%)" #. Translators: this is : Until Full () #: js/ui/status/power.js:91 #, javascript-format msgid "%d∶%02d Until Full (%d %%)" msgstr "%d∶%02d পুর হতে (%d%%)" #: js/ui/status/power.js:139 js/ui/status/power.js:141 #, javascript-format msgid "%d %%" msgstr "%d %%" #: js/ui/status/remoteAccess.js:45 msgid "Screen is Being Shared" msgstr "স্ক্রিন ভাগ করা হচ্ছে" #: js/ui/status/remoteAccess.js:47 msgid "Turn off" msgstr "বন্ধ করুন" #. The menu only appears when airplane mode is on, so just #. statically build it as if it was on, rather than dynamically #. changing the menu contents. #: js/ui/status/rfkill.js:79 msgid "Airplane Mode On" msgstr "বিমান মোড চালু আছে" #: js/ui/status/system.js:104 msgid "Lock" msgstr "লক" #: js/ui/status/system.js:116 msgid "Power Off / Log Out" msgstr "পাওয়ার বন্ধ / লগ আউট" #: js/ui/status/system.js:119 msgid "Suspend" msgstr "থামানো" #: js/ui/status/system.js:130 msgid "Restart…" msgstr "পুনরায় আরম্ভ করুন..." #: js/ui/status/system.js:141 msgid "Power Off…" msgstr "পাওয়ার বন্ধ..." #: js/ui/status/system.js:154 msgid "Log Out" msgstr "লগ আউট করুন" #: js/ui/status/system.js:165 msgid "Switch User…" msgstr "ব্যবহারকারী পাল্টান..." #: js/ui/status/thunderbolt.js:263 msgid "Thunderbolt" msgstr "থান্ডারবোল্ট " #: js/ui/status/thunderbolt.js:325 msgid "Unknown Thunderbolt device" msgstr "অজানা থান্ডারবোল্ট যন্ত্র" #: js/ui/status/thunderbolt.js:326 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" "আপনি দূরে থাকাকালীন নতুন ডিভাইস সনাক্ত করা হয়েছে। দয়া করে ডিভাইসটি ব্যবহার শুরু " "করার জন্য এটি সংযোগ বিচ্ছিন্ন করুন এবং পুনরায় সংযোগ করুন।" #: js/ui/status/thunderbolt.js:329 msgid "Unauthorized Thunderbolt device" msgstr "অননুমোদিত থান্ডারবোল্ট ডিভাইস" #: js/ui/status/thunderbolt.js:330 msgid "" "New device has been detected and needs to be authorized by an administrator." msgstr "নতুন ডিভাইস সনাক্ত করা হয়েছে এবং প্রশাসকের দ্বারা অনুমোদিত হওয়া দরকার।" #: js/ui/status/thunderbolt.js:336 msgid "Thunderbolt authorization error" msgstr "থান্ডারবোল্ট অনুমোদনের ত্রুটি" #: js/ui/status/thunderbolt.js:337 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "থান্ডারবোল্ট ডিভাইস অনুমোদন করতে পারেনি: %s" #: js/ui/status/volume.js:155 msgid "Volume changed" msgstr "ভলিউম পরিবর্তিত" #: js/ui/status/volume.js:217 msgid "Volume" msgstr "ভলিউম" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:17 msgid "Mirror" msgstr "আয়না" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:22 msgid "Join Displays" msgstr "ডিসপ্লে যোগ করুন" #. Translators: this is for using only an external display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:27 msgid "External Only" msgstr "কেবলমাত্র বাহ্যিক" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:32 msgid "Built-in Only" msgstr "কেবল অন্তর্নির্মিত" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:371 msgid "%A %B %-d" msgstr "%A %B %-d" #: js/ui/unlockDialog.js:377 msgid "Swipe up to unlock" msgstr "আনলক করতে অপরের দইকে সোয়াইপ করুন" #: js/ui/unlockDialog.js:378 msgid "Click or press a key to unlock" msgstr "আনলক করতে একটি কী টিপুন বা ক্লিক করুন" #: js/ui/unlockDialog.js:555 msgid "Unlock Window" msgstr "উইন্ডো আন-লক করুন" #: js/ui/unlockDialog.js:564 msgid "Log in as another user" msgstr "অপর ব্যবহারকারী হিসাবে লগ ইন করুন" #: js/ui/viewSelector.js:182 msgid "Applications" msgstr "অ্যাপ্লিকেশন" #: js/ui/viewSelector.js:186 msgid "Search" msgstr "অনুসন্ধান" #: js/ui/windowAttentionHandler.js:20 #, javascript-format msgid "“%s” is ready" msgstr "“%s” প্রস্তুত" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:60 msgid "Keep these display settings?" msgstr "আপনি কি এই প্রদর্শন সেটিংগুলি রাখতে চান?" #. Translators: this and the following message should be limited in length, #. to avoid ellipsizing the labels. #. #: js/ui/windowManager.js:69 msgid "Revert Settings" msgstr "সেটিং পাল্টান" #: js/ui/windowManager.js:72 msgid "Keep Changes" msgstr "পরিবর্তনগুলি রাখুন" #: js/ui/windowManager.js:91 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "সেটিং পরিবর্তন %d সেকেন্ডের মধ্যে পূর্বাবস্থা করা হবে" msgstr[1] "সেটিং পরিবর্তন %d সেকেন্ডের মধ্যে পূর্বাবস্থা করা হবে" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:551 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:27 msgid "Minimize" msgstr "ছোট করুন" #: js/ui/windowMenu.js:34 msgid "Unmaximize" msgstr "আন-ম্যাক্সিমাইজ" #: js/ui/windowMenu.js:38 msgid "Maximize" msgstr "বড় করুন" #: js/ui/windowMenu.js:45 msgid "Move" msgstr "স্থানান্তরণ" #: js/ui/windowMenu.js:51 msgid "Resize" msgstr "মাপ পরিবর্তন" #: js/ui/windowMenu.js:58 msgid "Move Titlebar Onscreen" msgstr "টাইটেল-বার অন-স্ক্রীন সরান" #: js/ui/windowMenu.js:63 msgid "Always on Top" msgstr "সর্বদা উপরে" #: js/ui/windowMenu.js:82 msgid "Always on Visible Workspace" msgstr "সর্বদা দৃশ্যমান ওয়ার্কস্পেসে" #: js/ui/windowMenu.js:96 msgid "Move to Workspace Left" msgstr "বামদিকের কর্মক্ষেত্রে স্থানান্তরণ" #: js/ui/windowMenu.js:102 msgid "Move to Workspace Right" msgstr "ডান্ডিকের কর্মক্ষেত্রে স্থানান্তরণ" #: js/ui/windowMenu.js:108 msgid "Move to Workspace Up" msgstr "উপরের কর্মক্ষেত্রে স্থানান্তরণ" #: js/ui/windowMenu.js:114 msgid "Move to Workspace Down" msgstr "নীচের কর্মক্ষেত্রে স্থানান্তরণ" #: js/ui/windowMenu.js:132 msgid "Move to Monitor Up" msgstr "মনিটর অপরের দিকে এ সরান" #: js/ui/windowMenu.js:141 msgid "Move to Monitor Down" msgstr "মনিটর নিচের দিকে সরান" #: js/ui/windowMenu.js:150 msgid "Move to Monitor Left" msgstr "মনিটর বাম দিকে সরান" #: js/ui/windowMenu.js:159 msgid "Move to Monitor Right" msgstr "মনিটর দান দিকে সরান" #: js/ui/windowMenu.js:167 msgid "Close" msgstr "বন্ধ করুন" #: src/calendar-server/evolution-calendar.desktop.in:3 msgid "Evolution Calendar" msgstr "Evolution বর্ষপঞ্জি" #: src/main.c:458 subprojects/extensions-tool/src/main.c:317 msgid "Print version" msgstr "মুদ্রণ সংস্করণ" #: src/main.c:464 msgid "Mode used by GDM for login screen" msgstr "লগিন স্ক্রীনের জন্য GDM দ্বারা ব্যবহৃত মোড" #: src/main.c:470 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "একটি নির্দিষ্ট মোড ব্যবহার করুন, উদাঃ লগইন স্ক্রিনের জন্য \"gdm\"" #: src/main.c:476 msgid "List possible modes" msgstr "সম্ভাব্য মোডগুলির তালিকা করুন" #: src/shell-app.c:268 msgctxt "program" msgid "Unknown" msgstr "অজানা" #: src/shell-app.c:519 #, c-format msgid "Failed to launch “%s”" msgstr "“%s\" লঞ্চ করা গেল না" #: src/shell-keyring-prompt.c:731 msgid "Passwords do not match." msgstr "পাসওয়ার্ডগুলি মিলছে না।" #: src/shell-keyring-prompt.c:739 msgid "Password cannot be blank" msgstr "পাসওয়ার্ড খালি থাকলে চলবে না" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "প্রমাণীকরণের ডায়ালগ ব্যবহারকারী দ্বারা বাতিল করা হয়েছে" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/js/main.js:183 #: subprojects/extensions-app/data/ui/extensions-window.ui:61 msgid "Extensions" msgstr "এক্সটেনশনগুলি" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 #: subprojects/extensions-app/js/main.js:184 msgid "Manage your GNOME Extensions" msgstr "আপনার জিনোম এক্সটেনশনগুলি পরিচালনা করুন" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:17 msgid "The GNOME Project" msgstr "জিনোম প্রকল্প" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:36 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" "জিনোম এক্সটেনশনস এক্সটেনশানগুলি আপডেট করতে, এক্সটেনশান পছন্দগুলি কনফিগার করে এবং " "অযাচিত এক্সটেনশানগুলি সরিয়ে বা অক্ষম করে।" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "GNOME সেল এক্সটেনশন কনফিগার করুন" #: subprojects/extensions-app/js/main.js:145 #, javascript-format msgid "Remove “%s”?" msgstr "“%s” সরাবেন? " #: subprojects/extensions-app/js/main.js:146 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "" "আপনি যদি এক্সটেনশনটি সরিয়ে থাকেন তবে আপনি যদি আবার সক্ষম করতে চান তবে এটি " "ডাউনলোড করতে আপনাকে ফিরে যেতে হবে" #: subprojects/extensions-app/js/main.js:150 msgid "Remove" msgstr "মুছে ফেলুন" #: subprojects/extensions-app/js/main.js:182 msgid "translator-credits" msgstr "অনুবাদক-ক্রেডিট" #: subprojects/extensions-app/js/main.js:314 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "%d টা এক্সটেনশন পরবর্তী লগইন আপডেট করা হবে।" msgstr[1] "%d টি এক্সটেনশনগুলি পরবর্তী লগইন আপডেট করা হবে।" #: subprojects/extensions-app/js/main.js:461 msgid "The extension is incompatible with the current GNOME version" msgstr "এক্সটেনশনটি বর্তমান জিনোম সংস্করণের সাথে বেমানান" #: subprojects/extensions-app/js/main.js:464 msgid "The extension had an error" msgstr "এক্সটেনশানটিতে একটি ত্রুটি ঘটেছিল" #: subprojects/extensions-app/data/ui/extension-row.ui:109 #: subprojects/extensions-tool/src/command-create.c:325 #: subprojects/extensions-tool/src/main.c:241 msgid "Description" msgstr "বিবরণ" #: subprojects/extensions-app/data/ui/extension-row.ui:132 #: subprojects/extensions-tool/src/main.c:253 msgid "Version" msgstr "সংস্করণ" #: subprojects/extensions-app/data/ui/extension-row.ui:160 msgid "Author" msgstr "লেখক" #: subprojects/extensions-app/data/ui/extension-row.ui:216 msgid "Website" msgstr "ওয়েবসাইট" #: subprojects/extensions-app/data/ui/extension-row.ui:233 msgid "Remove…" msgstr "সরান..." #: subprojects/extensions-app/data/ui/extensions-window.ui:8 msgid "Help" msgstr "সাহায্য" #: subprojects/extensions-app/data/ui/extensions-window.ui:12 msgid "About Extensions" msgstr "এক্সটেনশন সম্পর্কে" #: subprojects/extensions-app/data/ui/extensions-window.ui:27 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" "এক্সটেনশানগুলি সন্ধান এবং যুক্ত করতে, extensions.gnome.org দেখুন।" #: subprojects/extensions-app/data/ui/extensions-window.ui:35 msgid "Warning" msgstr "সতর্কতা" #: subprojects/extensions-app/data/ui/extensions-window.ui:46 msgid "" "Extensions can cause system issues, including performance problems. If you " "encounter problems with your system, it is recommended to disable all " "extensions." msgstr "" "এক্সটেনশানগুলি পারফরম্যান্স সমস্যা সহ সিস্টেম সম্পর্কিত সমস্যা তৈরি করতে পারে। যদি " "আপনার সিস্টেমে সমস্যা দেখা দেয় তবে সমস্ত এক্সটেনশন অক্ষম করার পরামর্শ দেওয়া হচ্ছে।" #: subprojects/extensions-app/data/ui/extensions-window.ui:135 msgid "Manually Installed" msgstr "ম্যানুয়ালি ইনস্টল করা হয়েছে" #: subprojects/extensions-app/data/ui/extensions-window.ui:159 msgid "Built-In" msgstr "অন্তর্নির্মিত" #: subprojects/extensions-app/data/ui/extensions-window.ui:200 msgid "No Installed Extensions" msgstr "কোনও ইনস্টল করা এক্সটেনশন নেই" #: subprojects/extensions-app/data/ui/extensions-window.ui:236 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" "আমরা খুব দুঃখিত, তবে ইনস্টল হওয়া এক্সটেনশনের তালিকা পাওয়া সম্ভব ছিল না। নিশ্চিত " "হয়ে নিন যে আপনি জিনোমে লগইন করেছেন এবং আবার চেষ্টা করুন।" #: subprojects/extensions-app/data/ui/extensions-window.ui:273 msgid "Extension Updates Ready" msgstr "এক্সটেনশন আপডেট প্রস্তুত" #: subprojects/extensions-app/data/ui/extensions-window.ui:289 msgid "Log Out…" msgstr "লগ আউট..." #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:226 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "নতুন এক্সটেনশনটি সফলভাবে %s তে তৈরি হয়েছিল।\n" #: subprojects/extensions-tool/src/command-create.c:299 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" "নাম খুব অল্প (আদর্শগতভাবে বর্ণনামূলক) স্ট্রিং হতে হবে।\n" "উদাহরণগুলি হল: %s" #: subprojects/extensions-tool/src/command-create.c:305 #: subprojects/extensions-tool/src/main.c:238 msgid "Name" msgstr "নাম" #: subprojects/extensions-tool/src/command-create.c:319 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" "বর্ণনাটি আপনার এক্সটেনশনটি কী করে তার একক বাক্য ব্যাখ্যা।\n" "উদাহরণগুলি হল: %s" #: subprojects/extensions-tool/src/command-create.c:339 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" "UUID হ'ল আপনার এক্সটেনশনের জন্য বিশ্বব্যাপী অনন্য শনাক্তকারী।\n" "এটি কোনও ইমেল ঠিকানার ফর্ম্যাটে থাকতে হবে (clicktofocus@janedoe.example.com)\n" #: subprojects/extensions-tool/src/command-create.c:366 msgid "Choose one of the available templates:\n" msgstr "উপলব্ধ টেম্পলেটগুলির মধ্যে একটি চয়ন করুন:\n" #: subprojects/extensions-tool/src/command-create.c:380 msgid "Template" msgstr "টেমপ্লেট" #: subprojects/extensions-tool/src/command-create.c:435 msgid "The unique identifier of the new extension" msgstr "নতুন এক্সটেনশনের অনন্য শনাক্তকারী" #: subprojects/extensions-tool/src/command-create.c:438 msgid "NAME" msgstr "নাম" #: subprojects/extensions-tool/src/command-create.c:439 msgid "The user-visible name of the new extension" msgstr "নতুন এক্সটেনশনের ব্যবহারকারী-দৃশ্যমান নাম" #: subprojects/extensions-tool/src/command-create.c:441 msgid "DESCRIPTION" msgstr "বর্ণনা" #: subprojects/extensions-tool/src/command-create.c:443 msgid "A short description of what the extension does" msgstr "এক্সটেনশনটি কী করে তার একটি সংক্ষিপ্ত বিবরণ" #: subprojects/extensions-tool/src/command-create.c:446 msgid "TEMPLATE" msgstr "টেমপ্লেট" #: subprojects/extensions-tool/src/command-create.c:447 msgid "The template to use for the new extension" msgstr "নতুন এক্সটেনশনের জন্য ব্যবহৃত টেমপ্লেট" #: subprojects/extensions-tool/src/command-create.c:453 msgid "Enter extension information interactively" msgstr "ইন্টারেক্টিভভাবে এক্সটেনশনের তথ্য লিখুন" #: subprojects/extensions-tool/src/command-create.c:461 msgid "Create a new extension" msgstr "একটি নতুন এক্সটেনশন তৈরি করুন" #: subprojects/extensions-tool/src/command-create.c:479 #: subprojects/extensions-tool/src/command-list.c:172 msgid "Unknown arguments" msgstr "অজানা যুক্তি" #: subprojects/extensions-tool/src/command-create.c:504 msgid "UUID, name and description are required" msgstr "UUID, নাম এবং বিবরণ প্রয়োজন" #: subprojects/extensions-tool/src/command-disable.c:46 #: subprojects/extensions-tool/src/command-enable.c:46 #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:64 msgid "Failed to connect to GNOME Shell\n" msgstr "জিনোম শেলের সাথে সংযোগ করতে ব্যর্থ\n" #: subprojects/extensions-tool/src/command-disable.c:53 #: subprojects/extensions-tool/src/command-enable.c:53 #, c-format msgid "Extension “%s” does not exist\n" msgstr "এক্সটেনশন \"%s\" বিদ্যমান নেই\n" #: subprojects/extensions-tool/src/command-disable.c:101 msgid "Disable an extension" msgstr "একটি এক্সটেনশন অক্ষম করুন" #: subprojects/extensions-tool/src/command-disable.c:119 #: subprojects/extensions-tool/src/command-enable.c:119 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:97 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "কোনও UUID দেওয়া হয়নি" #: subprojects/extensions-tool/src/command-disable.c:124 #: subprojects/extensions-tool/src/command-enable.c:124 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:102 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "একাধিক UUID দেওয়া হয়েছে" #: subprojects/extensions-tool/src/command-enable.c:101 msgid "Enable an extension" msgstr "একটি এক্সটেনশন সক্ষম করুন" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:155 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "এক্সটেনশন \"%s\" বিদ্যমান নেই\n" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "এক্সটেনশনের তথ্য দেখান" #: subprojects/extensions-tool/src/command-install.c:173 msgid "Overwrite an existing extension" msgstr "একটি বিদ্যমান এক্সটেনশান ওভাররাইট করুন" #: subprojects/extensions-tool/src/command-install.c:175 msgid "EXTENSION_BUNDLE" msgstr "EXTENSION_BUNDLE" #: subprojects/extensions-tool/src/command-install.c:184 msgid "Install an extension bundle" msgstr "একটি এক্সটেনশন বান্ডিল ইনস্টল করুন" #: subprojects/extensions-tool/src/command-install.c:202 msgid "No extension bundle specified" msgstr "কোনও এক্সটেনশন বান্ডেল নির্দিষ্ট করা হয়নি" #: subprojects/extensions-tool/src/command-install.c:208 msgid "More than one extension bundle specified" msgstr "একাধিক এক্সটেনশন বান্ডিল নির্দিষ্ট করা হয়েছে" #: subprojects/extensions-tool/src/command-list.c:128 msgid "Show user-installed extensions" msgstr "ব্যবহারকারী-ইনস্টল করা এক্সটেনশানগুলি দেখান" #: subprojects/extensions-tool/src/command-list.c:131 msgid "Show system-installed extensions" msgstr "সিস্টেম-ইনস্টল করা এক্সটেনশানগুলি দেখান" #: subprojects/extensions-tool/src/command-list.c:134 msgid "Show enabled extensions" msgstr "সক্ষম এক্সটেনশনগুলি দেখান" #: subprojects/extensions-tool/src/command-list.c:137 msgid "Show disabled extensions" msgstr "অক্ষম এক্সটেনশানগুলি দেখান" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show extensions with preferences" msgstr "পছন্দগুলি সহ এক্সটেনশানগুলি দেখান" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show extensions with updates" msgstr "আপডেটগুলি সহ এক্সটেনশানগুলি দেখান" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Print extension details" msgstr "এক্সটেনশান বিশদ প্রিন্ট করুন" #: subprojects/extensions-tool/src/command-list.c:154 msgid "List installed extensions" msgstr "ইনস্টল করা এক্সটেনশনের তালিকা দিন" #: subprojects/extensions-tool/src/command-pack.c:450 msgid "FILE" msgstr "ফাইল" #: subprojects/extensions-tool/src/command-pack.c:451 msgid "Additional source to include in the bundle" msgstr "বান্ডলে অন্তর্ভুক্ত করার জন্য অতিরিক্ত উত্স" #: subprojects/extensions-tool/src/command-pack.c:454 msgid "SCHEMA" msgstr "স্কিমা" #: subprojects/extensions-tool/src/command-pack.c:455 msgid "A GSettings schema that should be included" msgstr "একটি জিএসটিটিংস স্কিমা যা অন্তর্ভুক্ত করা উচিত" #: subprojects/extensions-tool/src/command-pack.c:457 #: subprojects/extensions-tool/src/command-pack.c:468 msgid "DIRECTORY" msgstr "ডিরেক্টরী" #: subprojects/extensions-tool/src/command-pack.c:459 msgid "The directory where translations are found" msgstr "যে ডিরেক্টরিটি অনুবাদ খুঁজে পাওয়া যায়" #: subprojects/extensions-tool/src/command-pack.c:461 msgid "DOMAIN" msgstr "ডোমেইন" #: subprojects/extensions-tool/src/command-pack.c:463 msgid "The gettext domain to use for translations" msgstr "অনুবাদগুলির জন্য ব্যবহারের জন্য gettext ডোমেন" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "Overwrite an existing pack" msgstr "বিদ্যমান প্যাকটি ওভাররাইট করুন" #: subprojects/extensions-tool/src/command-pack.c:470 msgid "The directory where the pack should be created" msgstr "যে ডিরেক্টরিটি প্যাকটি তৈরি করা উচিত" #: subprojects/extensions-tool/src/command-pack.c:472 msgid "SOURCE_DIRECTORY" msgstr "SOURCE_DIRECTORY" #: subprojects/extensions-tool/src/command-pack.c:481 msgid "Create an extension bundle" msgstr "একটি এক্সটেনশন বান্ডিল তৈরি করুন" #: subprojects/extensions-tool/src/command-pack.c:501 msgid "More than one source directory specified" msgstr "একাধিক উত্স ডিরেক্টরি নির্দিষ্ট করা আছে" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "এক্সটেনশান \"%s\" এর পছন্দসইগুলি নেই\n" #: subprojects/extensions-tool/src/command-prefs.c:79 msgid "Opens extension preferences" msgstr "এক্সটেনশন পছন্দগুলি খোলে" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "একটি এক্সটেনশন পুনরায় সেট করুন" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "সিস্টেম এক্সটেনশানগুলি আনইনস্টল করতে পারা যায় না\n" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "“%s\" আনইনস্টল করতে ব্যর্থ\n" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "একটি এক্সটেনশন আনইনস্টল করুন" #: subprojects/extensions-tool/src/main.c:72 msgid "Do not print error messages" msgstr "ত্রুটি বার্তা মুদ্রণ করবেন না" #: subprojects/extensions-tool/src/main.c:146 msgid "Failed to connect to GNOME Shell" msgstr "জিনোম শেলের সাথে সংযোগ করতে ব্যর্থ" #: subprojects/extensions-tool/src/main.c:244 msgid "Path" msgstr "পথ" #: subprojects/extensions-tool/src/main.c:247 msgid "URL" msgstr "URL" #: subprojects/extensions-tool/src/main.c:250 msgid "Original author" msgstr "মূল লেখক" #: subprojects/extensions-tool/src/main.c:256 msgid "State" msgstr "রাষ্ট্র" #: subprojects/extensions-tool/src/main.c:290 msgid "“version” takes no arguments" msgstr "\"সংস্করণ\" তে কোন যুক্তি লাগে না" #: subprojects/extensions-tool/src/main.c:292 #: subprojects/extensions-tool/src/main.c:312 msgid "Usage:" msgstr "ব্যবহার:" #: subprojects/extensions-tool/src/main.c:295 msgid "Print version information and exit." msgstr "সংস্করণ তথ্য মুদ্রণ করুন এবং প্রস্থান করুন।" #: subprojects/extensions-tool/src/main.c:310 #: subprojects/extensions-tool/src/main.c:313 msgid "COMMAND" msgstr "কমান্ড" #: subprojects/extensions-tool/src/main.c:313 msgid "[ARGS…]" msgstr "[ARGS…]" #: subprojects/extensions-tool/src/main.c:315 msgid "Commands:" msgstr "কমান্ডগুলি:" #: subprojects/extensions-tool/src/main.c:316 msgid "Print help" msgstr "মুদ্রণ সহায়তা" #: subprojects/extensions-tool/src/main.c:318 msgid "Enable extension" msgstr "এক্সটেনশন সক্ষম করুন" #: subprojects/extensions-tool/src/main.c:319 msgid "Disable extension" msgstr "এক্সটেনশন অক্ষম করুন" #: subprojects/extensions-tool/src/main.c:320 msgid "Reset extension" msgstr "এক্সটেনশন পুনঃসারণ করুন" #: subprojects/extensions-tool/src/main.c:321 msgid "Uninstall extension" msgstr "এক্সটেনশন আনইনস্টল করুন" #: subprojects/extensions-tool/src/main.c:322 msgid "List extensions" msgstr "এক্সটেন্সানগুলির তালিকা দেখান" #: subprojects/extensions-tool/src/main.c:323 #: subprojects/extensions-tool/src/main.c:324 msgid "Show extension info" msgstr "এক্সটেনশনের তথ্য দেখান" #: subprojects/extensions-tool/src/main.c:325 msgid "Open extension preferences" msgstr "এক্সটেনশন পছন্দগুলি খুলুন" #: subprojects/extensions-tool/src/main.c:326 msgid "Create extension" msgstr "এক্সটেনশন তৈরি করুন" #: subprojects/extensions-tool/src/main.c:327 msgid "Package extension" msgstr "এক্সটেন্সান প্যাকেজ করুন" #: subprojects/extensions-tool/src/main.c:328 msgid "Install extension bundle" msgstr "এক্সটেনশন বান্ডেল ইনস্টল করুন" #: subprojects/extensions-tool/src/main.c:330 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "বিস্তারিত সহায়তা পেতে \"%s\" ব্যবহার করুন।\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "সাধারণ" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "একটি ফাঁকা এক্সটেনশন" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "সূচক" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "উপরের বারে একটি আইকন যুক্ত করুন" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1907 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u আউটপুট" msgstr[1] "%u আউটপুট" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1917 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u ইনপুট" msgstr[1] "%u ইনপুট" #: subprojects/gvc/gvc-mixer-control.c:2867 msgid "System Sounds" msgstr "সিস্টেম সাউন্ড" #~ msgid "Show the message tray" #~ msgstr "বার্তা ট্রে দেখান" #~ msgid "GNOME Shell (wayland compositor)" #~ msgstr "GNOME সেল (ওয়েল্যান্ড কম্পোজিটর)" #~ msgid "Show the week date in the calendar" #~ msgstr "ক্যালেন্ডারে সপ্তাহের তারিখ দেখান" #~ msgid "If true, display the ISO week date in the calendar." #~ msgstr "সত্য হলে, ক্যালেন্ডারে ISO সপ্তাহ তারিখ দেখান।" #~ msgid "" #~ "Keybinding that pauses and resumes all running tweens, for debugging " #~ "purposes" #~ msgstr "" #~ "সকল চলা জোড়া সাময়িক থামানো এবং আবার শুরু করার কীবাইন্ডিং, ডিবাগিং করার জন্য" #~ msgid "Which keyboard to use" #~ msgstr "কোন কীবোর্ড ব্যবহার করা হবে" #~ msgid "The type of keyboard to use." #~ msgstr "যে ধরনের কীবোর্ড ব্যবহার করা হবে।" #~ msgid "There was an error loading the preferences dialog for %s:" #~ msgstr "%s -এর অগ্রাধিকার ডায়ালগ লোড করতে একটি সমস্যা দেখা দিয়েছে:" #~ msgid "Next" #~ msgstr "পরবর্তী" #~ msgctxt "button" #~ msgid "Sign In" #~ msgstr "সাইন ইন" #~ msgid "Web Authentication Redirect" #~ msgstr "ওয়েব প্রমাণীকরণ পুনঃনির্দেশ" #~ msgid "Frequently used applications will appear here" #~ msgstr "প্রায়ই ব্যবহৃত অ্যাপ্লিকেশনগুলি এখানে দেখা যাবে" #~ msgid "Frequent" #~ msgstr "প্রায়ই" #~ msgid "All" #~ msgstr "সকল" #~ msgctxt "event list time" #~ msgid "%H∶%M" #~ msgstr "%ঘ∶%মি" #~ msgctxt "event list time" #~ msgid "%l∶%M %p" #~ msgstr "%l∶%M %p" #~ msgctxt "list sunday" #~ msgid "Su" #~ msgstr "রবি" #~ msgctxt "list monday" #~ msgid "M" #~ msgstr "সোম" #~ msgctxt "list tuesday" #~ msgid "T" #~ msgstr "মঙ্গল" #~ msgctxt "list wednesday" #~ msgid "W" #~ msgstr "বুধ" #~ msgctxt "list thursday" #~ msgid "Th" #~ msgstr "বৃহ" #~ msgctxt "list friday" #~ msgid "F" #~ msgstr "শুক্র" #~ msgctxt "list saturday" #~ msgid "S" #~ msgstr "শনি" #~ msgid "Nothing Scheduled" #~ msgstr "কিছু পরিকল্পিত নেই" #~ msgid "This week" #~ msgstr "এই সপ্তাহ" #~ msgid "Next week" #~ msgstr "পরবর্তী সপ্তাহ" #~ msgid "Removable Devices" #~ msgstr "অপসারণযোগ্য ডিভাইসগুলি" #~ msgid "Eject" #~ msgstr "ইজেক্ট" #~ msgid "Password:" #~ msgstr "পাসওয়ার্ড:" #~ msgid "Type again:" #~ msgstr " আবার লিখুন:" #~ msgid "Password: " #~ msgstr "পাসওয়ার্ড:" #~ msgid "Authentication required by wireless network" #~ msgstr "বেতার নেটওয়ার্ক দ্বারা প্রমাণীকরণ প্রয়োজন" #~ msgid "Mobile broadband network password" #~ msgstr "মোবাইল ব্রডব্যান্ড নেটওয়ার্ক পাসওয়ার্ড" #~ msgid "Invitation" #~ msgstr "আমন্ত্রণ" #~ msgid "Call" #~ msgstr "কল" #~ msgid "File Transfer" #~ msgstr "ফাইল স্থানান্তর" #~ msgid "Chat" #~ msgstr "চ্যাট" #~ msgid "Unmute" #~ msgstr "সরব" #~ msgid "Mute" #~ msgstr "নীরব" #~ msgid "Invitation to %s" #~ msgstr "%s -এ আমন্ত্রণ" #~ msgid "%s is inviting you to join %s" #~ msgstr "%s আপনাকে %s-এ আমন্ত্রণ জানাচ্ছেন" #~ msgid "Decline" #~ msgstr "প্রত্যাখ্যান করুন" #~ msgid "Accept" #~ msgstr "গ্রহণ করুন" #~ msgid "Video call from %s" #~ msgstr "%s থেকে ভিডিও কল" #~ msgid "Call from %s" #~ msgstr "%s থেকে কল" #~ msgid "Answer" #~ msgstr "উত্তর দিন" #~ msgid "%s is sending you %s" #~ msgstr "%s আপনাকে %s পাঠাচ্ছেন" #~ msgid "%s would like permission to see when you are online" #~ msgstr "%s আপনি অনলাইনে থাকলে তা দেখার অনুমতি চায়" #~ msgid "Network error" #~ msgstr "নেটওয়ার্ক সংক্রান্ত ত্রুটি" #~ msgid "Authentication failed" #~ msgstr "অনুমোদন ব্যর্থ" #~ msgid "Encryption error" #~ msgstr "এনক্রিপশন সংক্রান্ত ত্রুটি" #~ msgid "Certificate not provided" #~ msgstr "সার্টিফিকেট উপলব্ধ করা হয়নি" #~ msgid "Certificate untrusted" #~ msgstr "সার্টিফিকেট বিশ্বস্ত নয়" #~ msgid "Certificate expired" #~ msgstr "সার্টিফিকেটের মেয়াদ উত্তীর্ণ হয়েছে" #~ msgid "Certificate not activated" #~ msgstr "সার্টিফিকেট সক্রিয় করা হয়নি" #~ msgid "Certificate hostname mismatch" #~ msgstr "সার্টিফিকেটের হোস্টনেম-এ গরমিল" #~ msgid "Certificate fingerprint mismatch" #~ msgstr "সার্টিফিকেটের ফিনঙ্গারপ্রিন্ট-এ গরমিল" #~ msgid "Certificate self-signed" #~ msgstr "স্বয়ং স্বাক্ষরিত সার্টিফিকেট" #~ msgid "Status is set to offline" #~ msgstr "স্ট্যাটাস অফলাইনে সেট করা হয়েছে" #~ msgid "Certificate is invalid" #~ msgstr "সার্টিফিকেট অবৈধ" #~ msgid "Connection has been refused" #~ msgstr "সংযোগ প্রত্যাখ্যান করা হয়েছে" #~ msgid "Connection can't be established" #~ msgstr "সংযোগ স্থাপন করা যাচ্ছে না" #~ msgid "Connection has been lost" #~ msgstr "সংযোগ হারিয়ে গেছে" #~ msgid "This account is already connected to the server" #~ msgstr "এই অ্যাকাউন্ট সার্ভারের সংগে ইতিমধ্যেই সংযুক্ত" #~ msgid "" #~ "Connection has been replaced by a new connection using the same resource" #~ msgstr "" #~ "একই রিসোর্স ব্যবহার করে একটি নতুন সংযোগ দ্বারা সংযোগ প্রতিস্থাপন করা হয়েছে" #~ msgid "The account already exists on the server" #~ msgstr "অ্যাকাউন্ট ইতিমধ্যেই সার্ভারে উপস্থিত" #~ msgid "Server is currently too busy to handle the connection" #~ msgstr "সংযোগ ব্যবস্থাপনা করার দিক থেকে সার্ভার বর্তমানে অত্যন্ত ব্যস্ত" #~ msgid "Certificate has been revoked" #~ msgstr "সার্টিফিকেট তুলে নেওয়া হয়েছে" #~ msgid "" #~ "Certificate uses an insecure cipher algorithm or is cryptographically weak" #~ msgstr "" #~ "সার্টিফিকেট এক অনিরাপদ cipher অ্যালগরিদম ব্যবহার করে বা ক্রিপটোগ্র্যাফিক দিক " #~ "থেকে দুর্বল" #~ msgid "" #~ "The length of the server certificate, or the depth of the server " #~ "certificate chain, exceed the limits imposed by the cryptography library" #~ msgstr "" #~ "সার্ভার সার্টিফিকেটের দৈর্ঘ্য, বা সার্ভার সার্টিফিকেট চেনের গভীরতা, " #~ "ক্রিপটোগ্র্যাফি লাইব্রেরি দ্বারা নির্দিষ্ট সীমা ছাড়িয়ে গেছে" #~ msgid "Internal error" #~ msgstr "অভ্যন্তরীণ ত্রুটি" #~ msgid "View account" #~ msgstr "অ্যাকাউন্ট দেখুন" #~ msgid "Open Calendar" #~ msgstr "ক্যালেন্ডার খুলুন" #~ msgid "Open" #~ msgstr "খুলুন" #~ msgid "Clear Messages" #~ msgstr "বার্তাগুলি সাফ করুন" #~ msgid "Notification Settings" #~ msgstr "বিজ্ঞপ্তি সেটিং" #~ msgid "Tray Menu" #~ msgstr "ট্রে মেনু" #~ msgid "No Messages" #~ msgstr "কোনো বার্তা নেই" #~ msgid "Message Tray" #~ msgstr "বার্তা ট্রে" #~ msgid "%d new message" #~ msgid_plural "%d new messages" #~ msgstr[0] "%d টি নতুন বার্তা" #~ msgstr[1] "%d টি নতুন বার্তা" #~ msgid "toggle-switch-us" #~ msgstr "toggle-switch-us" #~ msgid "%d Connected Device" #~ msgid_plural "%d Connected Devices" #~ msgstr[0] "%d টি সংযুক্ত ডিভাইস" #~ msgstr[1] "%d টি সংযুক্ত ডিভাইস" #~ msgid "In Use" #~ msgstr "ব্যবহৃত হচ্ছে" #~ msgid "Off" #~ msgstr "বন্ধ" #~ msgid "connecting..." #~ msgstr "সংযোগ করা হচ্ছে..." #~ msgid "UPS" #~ msgstr "UPS" #~ msgid "Battery" #~ msgstr "ব্যাটারি" #~ msgid "Airplane Mode" #~ msgstr "বিমান মোড" #~ msgid "On" #~ msgstr "চালু" #~ msgid "Orientation Lock" #~ msgstr "সজ্জা লক" 07070100000221000081A40000000000000000000000016712993F0000C508000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/bs.po# Bosnian translation for bosnianuniversetranslation # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the bosnianuniversetranslation package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: bosnianuniversetranslation\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "shell&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2015-02-27 03:04+0000\n" "PO-Revision-Date: 2015-03-01 23:13+0100\n" "Last-Translator: Samir Ribić \n" "Language-Team: Bosnian \n" "Language: bs\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-Launchpad-Export-Date: 2015-02-05 07:05+0000\n" "X-Generator: Poedit 1.7.4\n" #: ../data/50-gnome-shell-system.xml.in.h:1 msgid "System" msgstr "Sistem" #: ../data/50-gnome-shell-system.xml.in.h:2 msgid "Show the message list" msgstr "Prikaži listu poruka" #: ../data/50-gnome-shell-system.xml.in.h:3 msgid "Focus the active notification" msgstr "Fokusirati se na aktivnu obavijest" #: ../data/50-gnome-shell-system.xml.in.h:4 msgid "Show the overview" msgstr "Pokaži pregled" #: ../data/50-gnome-shell-system.xml.in.h:5 msgid "Show all applications" msgstr "Prikaži sve aplikacije" #: ../data/50-gnome-shell-system.xml.in.h:6 msgid "Open the application menu" msgstr "Otvorite izbornik aplikacije" #: ../data/gnome-shell.desktop.in.in.h:1 msgid "GNOME Shell" msgstr "GNOME školjka" #: ../data/gnome-shell.desktop.in.in.h:2 #: ../data/gnome-shell-wayland.desktop.in.in.h:2 msgid "Window management and application launching" msgstr "Upravljanje prozorima i pokretanje programa" #: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1 msgid "GNOME Shell Extension Preferences" msgstr "GNOME Shell postavke proširenja" #: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2 msgid "Configure GNOME Shell Extensions" msgstr "Podesi GNOME Shell proširenja" #: ../data/gnome-shell-wayland.desktop.in.in.h:1 msgid "GNOME Shell (wayland compositor)" msgstr "GNOME školjka (wayland compositor)" #: ../data/org.gnome.shell.gschema.xml.in.in.h:1 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "Omogućite interne alate korisne za programere i testere iz Alt-F2" #: ../data/org.gnome.shell.gschema.xml.in.in.h:2 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Omogućava pristup internom ispravljanju grešaka i praćenje alata pomoću " "dijaloga Alt-F2." #: ../data/org.gnome.shell.gschema.xml.in.in.h:3 msgid "UUIDs of extensions to enable" msgstr "UUID nastavci za omogućavanje" #: ../data/org.gnome.shell.gschema.xml.in.in.h:4 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "GNOME Shell ekstenzije imaju UUID osobinu; ovaj ključ prikazuje nastavke " "koji bi trebali biti učitani. Svaka se ekstenzija koja želi da se učita " "treba biti na ovom popisu. Također možete manipulirati ovim popisom sa " "OmogućiNastavke i OnemogućiNastavke D - Bus metodama na org.gnome.Shell." #: ../data/org.gnome.shell.gschema.xml.in.in.h:5 msgid "Disables the validation of extension version compatibility" msgstr "Onemogućava validaciju kompatibilnosti verzije nastavaka" #: ../data/org.gnome.shell.gschema.xml.in.in.h:6 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "GNOME Shell će učitati samo ekstenzije koje podržavaju trenutno pokrenutu " "verziju. Uključivanje ove opcije će onemogućiti ovu provjeru i pokušati " "učitati sve nastavke bez obzira na verzije koje podržavaju." #: ../data/org.gnome.shell.gschema.xml.in.in.h:7 msgid "List of desktop file IDs for favorite applications" msgstr "Popis ID-desktop datoteke za omiljene aplikacije" #: ../data/org.gnome.shell.gschema.xml.in.in.h:8 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" "Aplikacije koje odgovaraju ovim identifikatorima će biti prikazane u " "omiljenom području." #: ../data/org.gnome.shell.gschema.xml.in.in.h:9 msgid "App Picker View" msgstr "Pregled birača aplikacije" #: ../data/org.gnome.shell.gschema.xml.in.in.h:10 msgid "Index of the currently selected view in the application picker." msgstr "Indeks trenutno odabranog pregleda u biraču aplikacija." #: ../data/org.gnome.shell.gschema.xml.in.in.h:11 msgid "History for command (Alt-F2) dialog" msgstr "Historija za dijalog komande (Alt-F2)." #: ../data/org.gnome.shell.gschema.xml.in.in.h:12 msgid "History for the looking glass dialog" msgstr "Historija za ogledalo dijalog." #: ../data/org.gnome.shell.gschema.xml.in.in.h:13 msgid "Always show the 'Log out' menu item in the user menu." msgstr "Uvijek prikaži 'Odjavi se' stavku menija u korisničkom meniju." #: ../data/org.gnome.shell.gschema.xml.in.in.h:14 msgid "" "This key overrides the automatic hiding of the 'Log out' menu item in single-" "user, single-session situations." msgstr "" "Ovaj ključ nadjačava automatsko skrivanje 'Odjava' stavke izbornika jednog " "korisnika, u situacijama jedne sesije." #: ../data/org.gnome.shell.gschema.xml.in.in.h:15 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "Bilo da zapamti lozinku šifrovanog ili udaljenog fajl sistema." #: ../data/org.gnome.shell.gschema.xml.in.in.h:16 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "'Remember Password' checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "Ljuska će zahtijevati lozinku kad je postavljen uređaj za šifrovanje ili " "udaljeni fajl sistem. Ako lozinka mozi biti spašena, u budućnosti će vam se " "prikazati kvadratić da oznacčte Zapamti lozinku. Ova tipka postavlja osnovno " "stanje kvadratića za označavanje." #: ../data/org.gnome.shell.gschema.xml.in.in.h:17 msgid "Show the week date in the calendar" msgstr "Prikaži datum sedmice u kalendaru." #: ../data/org.gnome.shell.gschema.xml.in.in.h:18 msgid "If true, display the ISO week date in the calendar." msgstr "Ako je tačno, prikazi ISO datum sedmice u kalendaru." #: ../data/org.gnome.shell.gschema.xml.in.in.h:19 msgid "Keybinding to open the application menu" msgstr "Prečica za otvaranje aplikacijskog menija." #: ../data/org.gnome.shell.gschema.xml.in.in.h:20 msgid "Keybinding to open the application menu." msgstr "Prečica za otvaranje aplikacijskog menija." #: ../data/org.gnome.shell.gschema.xml.in.in.h:21 msgid "Keybinding to open the \"Show Applications\" view" msgstr "Prečica za otvaranje \"Prikaži aplikacije\" prikaza." #: ../data/org.gnome.shell.gschema.xml.in.in.h:22 msgid "" "Keybinding to open the \"Show Applications\" view of the Activities Overview." msgstr "" "Prečica za otvaranje \"Prikaži aplikacije\" prikaza u pregledu aktivnosti." #: ../data/org.gnome.shell.gschema.xml.in.in.h:23 msgid "Keybinding to open the overview" msgstr "Prečica za otvaranje pregleda." #: ../data/org.gnome.shell.gschema.xml.in.in.h:24 msgid "Keybinding to open the Activities Overview." msgstr "Prečica za otvaranje pregleda aktivnosti." #: ../data/org.gnome.shell.gschema.xml.in.in.h:25 msgid "Keybinding to toggle the visibility of the message tray" msgstr "Prečica za mijenjanje prikaza poruke." #: ../data/org.gnome.shell.gschema.xml.in.in.h:26 msgid "Keybinding to toggle the visibility of the message tray." msgstr "Prečica za mijenjanje prikaza poruke." #: ../data/org.gnome.shell.gschema.xml.in.in.h:27 msgid "Keybinding to focus the active notification" msgstr "Precica za fokusiranje aktivne obavijesti." #: ../data/org.gnome.shell.gschema.xml.in.in.h:28 msgid "Keybinding to focus the active notification." msgstr "Precica za fokusiranje aktivne obavijesti." #: ../data/org.gnome.shell.gschema.xml.in.in.h:29 msgid "" "Keybinding that pauses and resumes all running tweens, for debugging purposes" msgstr "" "Kratice tipkovnice koje pauziraju i nastavljaju sve pokrenute tweens, što za " "svrhu ima ispravljanje pogrešaka" #: ../data/org.gnome.shell.gschema.xml.in.in.h:30 msgid "Which keyboard to use" msgstr "Koju tastaturu koristiti" #: ../data/org.gnome.shell.gschema.xml.in.in.h:31 msgid "The type of keyboard to use." msgstr "Tip tastature za koristenje." #: ../data/org.gnome.shell.gschema.xml.in.in.h:32 msgid "Limit switcher to current workspace." msgstr "Ograničite prebacivanje na trenutnom radnom prostoru." #: ../data/org.gnome.shell.gschema.xml.in.in.h:33 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "Ako je tačno, samo aplikacije koje imaju prozore na trenutnom radnom " "prostoru su prikazane u prekidaču. Inače, sve alpikacije su uključene." #: ../data/org.gnome.shell.gschema.xml.in.in.h:34 msgid "The application icon mode." msgstr "Mod aplikacijske ikone." #: ../data/org.gnome.shell.gschema.xml.in.in.h:35 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-" "only' (shows only the application icon) or 'both'." msgstr "" "Konfigurise kako su prozori prikazani u preklopniku. Ispravne mogucnosti su " "'slicicica-–samo' (prikazuje slicicu prozora), 'app-icon- samo' (prikazuje " "samo aplikaciju) ili 'oboje'." #: ../data/org.gnome.shell.gschema.xml.in.in.h:36 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "Ako je tačno, samo forme na trenutnom radnom prostoru su prikazane u " "prekidaču. Inače, svi prozori su uključeni." #: ../data/org.gnome.shell.gschema.xml.in.in.h:37 msgid "Attach modal dialog to the parent window" msgstr "Pričvrstite modalni dijalog na izvornom prozoru" #: ../data/org.gnome.shell.gschema.xml.in.in.h:38 msgid "" "This key overrides the key in org.gnome.mutter when running GNOME Shell." msgstr "" "Ovaj ključ nadjačava ključ u org.gnome.mutter kada se izvodi GNOME školjka." #: ../data/org.gnome.shell.gschema.xml.in.in.h:39 msgid "Enable edge tiling when dropping windows on screen edges" msgstr "Omogući poravnanje rubova prilikom spuštanja prozora na rubove ekrana" #: ../data/org.gnome.shell.gschema.xml.in.in.h:40 msgid "Workspaces are managed dynamically" msgstr "Radni prostor je upravljan dinamički" #: ../data/org.gnome.shell.gschema.xml.in.in.h:41 msgid "Workspaces only on primary monitor" msgstr "Radni prostori samo na glavnom monitoru" #: ../data/org.gnome.shell.gschema.xml.in.in.h:42 msgid "Delay focus changes in mouse mode until the pointer stops moving" msgstr "" "Kašnjenje fokusa rezultuje promjenama u načinu miša dok pokazivač prestaje " "s kretanjem" #: ../data/org.gnome.Shell.PortalHelper.desktop.in.h:1 msgid "Network Login" msgstr "Mrežna prijava" #: ../js/extensionPrefs/main.js:123 msgid "There was an error loading the preferences dialog for %s:" msgstr "Postoji greška koja se javila pri učitanju dijaloga postavki za %s:" #: ../js/extensionPrefs/main.js:155 msgid "GNOME Shell Extensions" msgstr "GNOME Shell Nastavci" #: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143 #: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:452 #: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399 #: ../js/ui/status/network.js:916 msgid "Cancel" msgstr "Otkaži" #: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:217 msgid "Next" msgstr "Sljedeći" #: ../js/gdm/authPrompt.js:213 ../js/ui/shellMountOperation.js:403 #: ../js/ui/unlockDialog.js:59 msgid "Unlock" msgstr "Otključaj" #: ../js/gdm/authPrompt.js:215 msgctxt "button" msgid "Sign In" msgstr "Prijava" #: ../js/gdm/loginDialog.js:276 msgid "Choose Session" msgstr "Odaberite sesiju" #: ../js/gdm/loginDialog.js:417 msgid "Not listed?" msgstr "Nije izlistano?" #: ../js/gdm/loginDialog.js:826 msgid "(e.g., user or %s)" msgstr "(npr., korisnik ili %s)" #: ../js/gdm/loginDialog.js:831 ../js/ui/components/networkAgent.js:269 #: ../js/ui/components/networkAgent.js:287 msgid "Username: " msgstr "Korisničko ime: " #: ../js/gdm/loginDialog.js:1166 msgid "Login Window" msgstr "Prozor za prijavu" #: ../js/gdm/util.js:341 msgid "Authentication error" msgstr "Greška pri prijavljivanju" #: ../js/gdm/util.js:473 msgid "(or swipe finger)" msgstr "(ili pređi prstom)" #: ../js/misc/util.js:115 msgid "Command not found" msgstr "Naredba nije pronađena" #: ../js/misc/util.js:148 msgid "Could not parse command:" msgstr "Nije moguće analizirati naredbu:" #: ../js/misc/util.js:156 msgid "Execution of “%s” failed:" msgstr "Završavanje \"%s\" nije uspjelo:" #. TRANSLATORS: this is the title of the wifi captive portal login #. * window, until we know the title of the actual login page */ #: ../js/portalHelper/main.js:85 msgid "Web Authentication Redirect" msgstr "Preusmjerenje web provjere autentičnosti" #: ../js/ui/appDisplay.js:785 msgid "Frequently used applications will appear here" msgstr "Često korištene aplikacije će se pojaviti ovdje" #: ../js/ui/appDisplay.js:905 msgid "Frequent" msgstr "Često" #: ../js/ui/appDisplay.js:912 msgid "All" msgstr "Svi" #: ../js/ui/appDisplay.js:1840 msgid "New Window" msgstr "Novi prozor" #: ../js/ui/appDisplay.js:1868 ../js/ui/dash.js:289 msgid "Remove from Favorites" msgstr "Ukloni iz omiljenih" #: ../js/ui/appDisplay.js:1874 msgid "Add to Favorites" msgstr "Dodaj u omiljene" #: ../js/ui/appDisplay.js:1884 msgid "Show Details" msgstr "Prikaži detalje" #: ../js/ui/appFavorites.js:132 msgid "%s has been added to your favorites." msgstr "%s je dodan u vaše favorite." #: ../js/ui/appFavorites.js:166 msgid "%s has been removed from your favorites." msgstr "%s je uklonjen iz vaših favorita." #: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:649 #: ../js/ui/status/system.js:337 msgid "Settings" msgstr "Podešavanja" #: ../js/ui/backgroundMenu.js:21 msgid "Change Background…" msgstr "Promjeni pozadinu" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). */ #: ../js/ui/calendar.js:52 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can usi less then 10 characters #. */ #: ../js/ui/calendar.js:81 msgctxt "event list time" msgid "All Day" msgstr "Cijeli dan" #. Translators: Shown in calendar event list, if 24h format, #. \u2236 is a ratio character, similar to : */ #: ../js/ui/calendar.js:88 ../js/ui/calendar.js:1562 msgctxt "event list time" msgid "%H∶%M" msgstr "%H∶%M" #. Translators: Shown in calendar event list, if 12h format, #. \u2236 is a ratio character, similar to : and \u2009 is #. a thin space */ #: ../js/ui/calendar.js:97 msgctxt "event list time" msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. */ #: ../js/ui/calendar.js:111 msgctxt "grid sunday" msgid "S" msgstr "S" #. Translators: Calendar grid abbreviation for Monday */ #: ../js/ui/calendar.js:113 msgctxt "grid monday" msgid "M" msgstr "P" #. Translators: Calendar grid abbreviation for Tuesday */ #: ../js/ui/calendar.js:115 msgctxt "grid tuesday" msgid "T" msgstr "U" #. Translators: Calendar grid abbreviation for Wednesday */ #: ../js/ui/calendar.js:117 msgctxt "grid wednesday" msgid "W" msgstr "S" #. Translators: Calendar grid abbreviation for Thursday */ #: ../js/ui/calendar.js:119 msgctxt "grid thursday" msgid "T" msgstr "Č" #. Translators: Calendar grid abbreviation for Friday */ #: ../js/ui/calendar.js:121 msgctxt "grid friday" msgid "F" msgstr "P" #. Translators: Calendar grid abbreviation for Saturday */ #: ../js/ui/calendar.js:123 msgctxt "grid saturday" msgid "S" msgstr "S" #: ../js/ui/calendar.js:590 msgid "Previous month" msgstr "Prethodni mjesec" #: ../js/ui/calendar.js:600 msgid "Next month" msgstr "Sljedeći mjesec" #: ../js/ui/calendar.js:1245 msgid "Clear section" msgstr "Očisti sekciju" #: ../js/ui/calendar.js:1423 msgid "Events" msgstr "Događaji" #: ../js/ui/calendar.js:1431 msgctxt "calendar heading" msgid "%A, %B %d" msgstr "%A, %B %d" #: ../js/ui/calendar.js:1435 msgctxt "calendar heading" msgid "%A, %B %d, %Y" msgstr "%A, %B %d, %Y" #: ../js/ui/calendar.js:1528 msgid "Notifications" msgstr "Obavijesti" #: ../js/ui/calendar.js:1665 msgid "No Notifications" msgstr "Nema obavijesti" #: ../js/ui/calendar.js:1668 msgid "No Events" msgstr "Nema događaja" #: ../js/ui/components/automountManager.js:91 msgid "External drive connected" msgstr "Vanjski disk povezan" #: ../js/ui/components/automountManager.js:102 msgid "External drive disconnected" msgstr "Vanjski disk iskopčan" #: ../js/ui/components/autorunManager.js:354 msgid "Open with %s" msgstr "Otvori pomoću %s" #: ../js/ui/components/keyring.js:94 ../js/ui/components/polkitAgent.js:285 msgid "Password:" msgstr "Lozinka:" #: ../js/ui/components/keyring.js:120 msgid "Type again:" msgstr "Upišite ponovo:" #: ../js/ui/components/networkAgent.js:138 ../js/ui/status/network.js:277 #: ../js/ui/status/network.js:359 ../js/ui/status/network.js:919 msgid "Connect" msgstr "Povezati" #: ../js/ui/components/networkAgent.js:231 #: ../js/ui/components/networkAgent.js:243 #: ../js/ui/components/networkAgent.js:271 #: ../js/ui/components/networkAgent.js:291 #: ../js/ui/components/networkAgent.js:301 msgid "Password: " msgstr "Lozinka: " #: ../js/ui/components/networkAgent.js:236 msgid "Key: " msgstr "Kljuc: " #: ../js/ui/components/networkAgent.js:275 msgid "Identity: " msgstr "Identitet: " #: ../js/ui/components/networkAgent.js:277 msgid "Private key password: " msgstr "Osobni kljuc šifrovanja: " #: ../js/ui/components/networkAgent.js:289 msgid "Service: " msgstr "Održavati: " #: ../js/ui/components/networkAgent.js:318 msgid "Authentication required by wireless network" msgstr "Bežična mreža zahtjeva provjeru vjerodostojnosti" #: ../js/ui/components/networkAgent.js:319 msgid "" "Passwords or encryption keys are required to access the wireless network “%" "s”." msgstr "" "Lozinke ili kriptografski ključevi su potrebni za pristup bežičnoj mreži \"%s" "\"." #: ../js/ui/components/networkAgent.js:323 msgid "Wired 802.1X authentication" msgstr "Žičana 802.1X provjera vjerodostojnosti" #: ../js/ui/components/networkAgent.js:325 msgid "Network name: " msgstr "Naziv mreže: " #: ../js/ui/components/networkAgent.js:330 msgid "DSL authentication" msgstr "DSL provjera vjerodostojnosti" #: ../js/ui/components/networkAgent.js:337 msgid "PIN code required" msgstr "Potreban je PIN kod" #: ../js/ui/components/networkAgent.js:338 msgid "PIN code is needed for the mobile broadband device" msgstr "Potreban je PIN kod za povezivanje mobilnog širokopojasnog uređaja" #: ../js/ui/components/networkAgent.js:339 msgid "PIN: " msgstr "PIN: " #: ../js/ui/components/networkAgent.js:345 msgid "Mobile broadband network password" msgstr "Lozinka mobilne širokopojasne mreže" #: ../js/ui/components/networkAgent.js:346 msgid "A password is required to connect to “%s”." msgstr "Potrebna je lozinka za povezivanje sa \"%s\"." #: ../js/ui/components/polkitAgent.js:54 msgid "Authentication Required" msgstr "Neophodna provjera vjerodostojnosti" #: ../js/ui/components/polkitAgent.js:96 msgid "Administrator" msgstr "Administrator" #: ../js/ui/components/polkitAgent.js:175 msgid "Authenticate" msgstr "Dokaži autentičnost" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (liki invalid password), #. * for instance. */ #: ../js/ui/components/polkitAgent.js:271 ../js/ui/shellMountOperation.js:383 msgid "Sorry, that didn't work. Please try again." msgstr "Žao nam je, nije uspjelo. Molimo pokušajte ponovno." #: ../js/ui/components/telepathyClient.js:243 msgid "Invitation" msgstr "Pozivnica" #: ../js/ui/components/telepathyClient.js:303 msgid "Call" msgstr "Poziv" #: ../js/ui/components/telepathyClient.js:319 msgid "File Transfer" msgstr "Prijenos podataka" #: ../js/ui/components/telepathyClient.js:423 msgid "Chat" msgstr "Ćaskanje" #. Translators: Time in 24h format */ #: ../js/ui/components/telepathyClient.js:936 ../js/ui/dateMenu.js:209 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" */ #: ../js/ui/components/telepathyClient.js:943 msgid "Yesterday, %H∶%M" msgstr "Jučer, %H∶%M" #. Translators: this is the week day nami followed by a time #. string in 24h format. i.e. "Monday, 14:30" */ #: ../js/ui/components/telepathyClient.js:950 msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month nami and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" */ #: ../js/ui/components/telepathyClient.js:957 msgid "%B %d, %H∶%M" msgstr "%B %d, %H∶%M" #. Translators: this is the month nami, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" */ #: ../js/ui/components/telepathyClient.js:963 msgid "%B %d %Y, %H∶%M" msgstr "%B %d %Y, %H∶%M" #. Translators: Time in 12h format */ #: ../js/ui/components/telepathyClient.js:969 ../js/ui/dateMenu.js:212 msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" */ #: ../js/ui/components/telepathyClient.js:976 msgid "Yesterday, %l∶%M %p" msgstr "Jučer, %l∶%M %p" #. Translators: this is the week day nami followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" */ #: ../js/ui/components/telepathyClient.js:983 msgid "%A, %l∶%M %p" msgstr "%A, %l∶%M %p" #. Translators: this is the month nami and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" */ #: ../js/ui/components/telepathyClient.js:990 msgid "%B %d, %l∶%M %p" msgstr "%B %d, %l∶%M %p" #. Translators: this is the month nami, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm"*/ #: ../js/ui/components/telepathyClient.js:996 msgid "%B %d %Y, %l∶%M %p" msgstr "%B %d %Y, %l∶%M %p" #. Translators: this is the other person changing their old IM nami to their new #. IM nami. */ #: ../js/ui/components/telepathyClient.js:1028 msgid "%s is now known as %s" msgstr "%s je sada poznat kao %s" #. translators: argument is a room nami liki #. * room@jabber.org for example. */ #: ../js/ui/components/telepathyClient.js:1132 msgid "Invitation to %s" msgstr "Poziv za %s" #. translators: first argument is the nami of a contact and the second #. * one the nami of a room. "Alice is inviting you to join room@jabber.org #. * for example. */ #: ../js/ui/components/telepathyClient.js:1136 msgid "%s is inviting you to join %s" msgstr "%s vas poziva da se pridružite %s" #: ../js/ui/components/telepathyClient.js:1140 #: ../js/ui/components/telepathyClient.js:1175 #: ../js/ui/components/telepathyClient.js:1207 #: ../js/ui/components/telepathyClient.js:1273 msgid "Decline" msgstr "Odbij" #: ../js/ui/components/telepathyClient.js:1146 #: ../js/ui/components/telepathyClient.js:1213 #: ../js/ui/components/telepathyClient.js:1278 msgid "Accept" msgstr "Prihvati" #. translators: argument is a contact nami liki Alice for example. */ #: ../js/ui/components/telepathyClient.js:1165 msgid "Video call from %s" msgstr "Video poziv od %s" #. translators: argument is a contact nami liki Alice for example. */ #: ../js/ui/components/telepathyClient.js:1168 msgid "Call from %s" msgstr "Poziv od %s" #. translators: this is a button label (verb), not a noun */ #: ../js/ui/components/telepathyClient.js:1182 msgid "Answer" msgstr "Odgovor" #. To translators: The first parameter is #. * the contact's alias and the second one is the #. * file nami. The string will bje something #. * liki: "Alice is sending you test.ogg" #. */ #: ../js/ui/components/telepathyClient.js:1203 msgid "%s is sending you %s" msgstr "%s vam šalje %s" #. To translators: The parameter is the contact's alias */ #: ../js/ui/components/telepathyClient.js:1230 msgid "%s would like permission to see when you are online" msgstr "%s želi dozvolu da vidi kada ste na mreži" #: ../js/ui/components/telepathyClient.js:1321 msgid "Network error" msgstr "Mrežna greška" #: ../js/ui/components/telepathyClient.js:1323 msgid "Authentication failed" msgstr "Provjera vjerodostojnosti nije uspjela" #: ../js/ui/components/telepathyClient.js:1325 msgid "Encryption error" msgstr "Greška pri šifrovanju" #: ../js/ui/components/telepathyClient.js:1327 msgid "Certificate not provided" msgstr "Certifikat nije priložen" #: ../js/ui/components/telepathyClient.js:1329 msgid "Certificate untrusted" msgstr "Nepovjerljiv certifikat" #: ../js/ui/components/telepathyClient.js:1331 msgid "Certificate expired" msgstr "Certifikat je istekao" #: ../js/ui/components/telepathyClient.js:1333 msgid "Certificate not activated" msgstr "Certifikat nije aktiviran" #: ../js/ui/components/telepathyClient.js:1335 msgid "Certificate hostname mismatch" msgstr "Ime domaćina certifikata ne odgovara" #: ../js/ui/components/telepathyClient.js:1337 msgid "Certificate fingerprint mismatch" msgstr "Otisak certifikata ne odgovara" #: ../js/ui/components/telepathyClient.js:1339 msgid "Certificate self-signed" msgstr "Certifikat je potpisao sam sebe" #: ../js/ui/components/telepathyClient.js:1341 msgid "Status is set to offline" msgstr "Status je postavljen na odjavljen" #: ../js/ui/components/telepathyClient.js:1343 msgid "Encryption is not available" msgstr "Šifrovanje nije dostupno" #: ../js/ui/components/telepathyClient.js:1345 msgid "Certificate is invalid" msgstr "Certifikat nije ispravan" #: ../js/ui/components/telepathyClient.js:1347 msgid "Connection has been refused" msgstr "Veza je odbijena" #: ../js/ui/components/telepathyClient.js:1349 msgid "Connection can't be established" msgstr "Veza ne može biti uspostavljena" #: ../js/ui/components/telepathyClient.js:1351 msgid "Connection has been lost" msgstr "Veza je izgubljena" #: ../js/ui/components/telepathyClient.js:1353 msgid "This account is already connected to the server" msgstr "Ovaj nalog je već povezan sa serverom" #: ../js/ui/components/telepathyClient.js:1355 msgid "" "Connection has been replaced by a new connection using the same resource" msgstr "Veza je zamijenjena novom vezom koristeći isti resurs" #: ../js/ui/components/telepathyClient.js:1357 msgid "The account already exists on the server" msgstr "Ovaj nalog već postoji na serveru" #: ../js/ui/components/telepathyClient.js:1359 msgid "Server is currently too busy to handle the connection" msgstr "Server je trenutno previše zauzet da bi uspostavio vezu" #: ../js/ui/components/telepathyClient.js:1361 msgid "Certificate has been revoked" msgstr "Certifikat je opozvan" #: ../js/ui/components/telepathyClient.js:1363 msgid "" "Certificate uses an insecure cipher algorithm or is cryptographically weak" msgstr "" "Certifikat koristi nebezbjedni algoritam šifrovanja ili je kriptografski slab" #: ../js/ui/components/telepathyClient.js:1365 msgid "" "The length of the server certificate, or the depth of the server certificate " "chain, exceed the limits imposed by the cryptography library" msgstr "" "Dužina certifikata servera, ili dubina lanca certifikata servera premašuje " "granice biblioteke za šifrovanje" #: ../js/ui/components/telepathyClient.js:1367 msgid "Internal error" msgstr "Greška unutar programa" #. translators: argument is the account nami, liki #. * name@jabber.org for example. */ #: ../js/ui/components/telepathyClient.js:1377 msgid "Unable to connect to %s" msgstr "Nemoguće se povezati na %s" #: ../js/ui/components/telepathyClient.js:1382 msgid "View account" msgstr "Pogledaj nalog" #: ../js/ui/components/telepathyClient.js:1419 msgid "Unknown reason" msgstr "Nepoznat razlog" #: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:155 msgid "Windows" msgstr "Prozori" #: ../js/ui/dash.js:250 ../js/ui/dash.js:291 msgid "Show Applications" msgstr "Prikaži aplikacije" #: ../js/ui/dash.js:451 msgid "Dash" msgstr "Crta" #. Translators: This is the date format to usi when the calendar popup is #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM"). #. */ #: ../js/ui/dateMenu.js:72 msgid "%B %e %Y" msgstr "%B %e %Y" #. Translators: This is the accessible nami of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. */ #: ../js/ui/dateMenu.js:79 msgid "%A %B %e %Y" msgstr "%A %B %e %Y" #: ../js/ui/dateMenu.js:159 msgid "Add world clocks…" msgstr "Dodaj svjetske satove.." #: ../js/ui/dateMenu.js:160 msgid "World Clocks" msgstr "Svjetski časovnik" #: ../js/ui/endSessionDialog.js:64 msgctxt "title" msgid "Log Out %s" msgstr "Odjavi %s" #: ../js/ui/endSessionDialog.js:65 msgctxt "title" msgid "Log Out" msgstr "Odjavi se" # translations. #: ../js/ui/endSessionDialog.js:67 msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "%s će biti automatski odjavljen u %d sekundi." msgstr[1] "%s će biti automatski odjavljen u %d sekunde." msgstr[2] "%s će biti automatski odjavljen u %d sekundi." # translations. #: ../js/ui/endSessionDialog.js:72 msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "Bit ćete automatski odjavljeni u %d sekundi." msgstr[1] "Bit ćete automatski odjavljeni u %d sekunde." msgstr[2] "Bit ćete automatski odjavljeni u %d sekundi." #: ../js/ui/endSessionDialog.js:78 msgctxt "button" msgid "Log Out" msgstr "Odjavi se" #: ../js/ui/endSessionDialog.js:84 msgctxt "title" msgid "Power Off" msgstr "Ugasi" #: ../js/ui/endSessionDialog.js:85 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Instaliraj ažuriranja i ugasi" # translations. #: ../js/ui/endSessionDialog.js:87 msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "Sistem će biti automatski ugašen u %d sekundi." msgstr[1] "Sistem će biti automatski ugašen u %d sekunde." msgstr[2] "Sistem će biti automatski ugašen u %d sekundi." #: ../js/ui/endSessionDialog.js:91 msgctxt "checkbox" msgid "Install pending software updates" msgstr "Instaliraj tekuća ažuriranja softvera" #: ../js/ui/endSessionDialog.js:94 ../js/ui/endSessionDialog.js:111 msgctxt "button" msgid "Restart" msgstr "Ponovno pokretanje" #: ../js/ui/endSessionDialog.js:96 msgctxt "button" msgid "Power Off" msgstr "Gašenje" #: ../js/ui/endSessionDialog.js:103 msgctxt "title" msgid "Restart" msgstr "Ponovo pokreni" # translations. #: ../js/ui/endSessionDialog.js:105 msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "Sistem će biti automatski ponovo pokrenut u %d sekundi." msgstr[1] "Sistem će biti automatski ponovo pokrenut u %d sekunde." msgstr[2] "Sistem će biti automatski ponovo pokrenut u %d sekundi." #: ../js/ui/endSessionDialog.js:119 msgctxt "title" msgid "Restart & Install Updates" msgstr "Ponovo pokreni i instaliraj ažuriranja" # translations. #: ../js/ui/endSessionDialog.js:121 msgid "The system will automatically restart and install updates in %d second." msgid_plural "" "The system will automatically restart and install updates in %d seconds." msgstr[0] "" "Sistem će biti automatski ponovo pokrenut i instalirati ažuriranja u %d " "sekundi." msgstr[1] "" "Sistem će biti automatski ponovo pokrenut i instalirati ažuriranja u %d " "sekunde." msgstr[2] "" "Sistem će biti automatski ponovo pokrenut i instalirati ažuriranja u %d " "sekundi." #: ../js/ui/endSessionDialog.js:127 msgctxt "button" msgid "Restart & Install" msgstr "Ponovo pokreni & instaliraj" #: ../js/ui/endSessionDialog.js:128 msgctxt "button" msgid "Install & Power Off" msgstr "Instaliraj & ugasi" #: ../js/ui/endSessionDialog.js:129 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Ugasi nakon instaliranja ažuriranja" #: ../js/ui/endSessionDialog.js:338 msgid "Running on battery power: please plug in before installing updates." msgstr "Pokrenuto na baterije; molimo uključite prije instaliranja ažuriranja." #: ../js/ui/endSessionDialog.js:355 msgid "Some applications are busy or have unsaved work." msgstr "Neke aplikacije su zauzete ili imaju nesačuvanih poslova." #: ../js/ui/endSessionDialog.js:362 msgid "Other users are logged in." msgstr "Drugi korisnici su prijavljeni." #. Translators: Remote here refers to a remote session, liki a ssh login */ #: ../js/ui/endSessionDialog.js:640 msgid "%s (remote)" msgstr "%s (udaljen)" #. Translators: Console here refers to a tty liki a VT console */ #: ../js/ui/endSessionDialog.js:643 msgid "%s (console)" msgstr "%s (konzola)" #: ../js/ui/extensionDownloader.js:199 msgid "Install" msgstr "Instaliraj" #: ../js/ui/extensionDownloader.js:204 msgid "Download and install “%s” from extensions.gnome.org?" msgstr "Preuzeti i instalirati \"%s\" iz extensions.gnome.org?" #: ../js/ui/keyboard.js:706 ../js/ui/status/keyboard.js:576 msgid "Keyboard" msgstr "Tastatura" #: ../js/ui/lookingGlass.js:643 msgid "No extensions installed" msgstr "Nema instaliranih nastavaka" #. Translators: argument is an extension UUID. */ #: ../js/ui/lookingGlass.js:697 msgid "%s has not emitted any errors." msgstr "%s nije emitovao nikakve greške." #: ../js/ui/lookingGlass.js:703 msgid "Hide Errors" msgstr "Sakrij greške" #: ../js/ui/lookingGlass.js:707 ../js/ui/lookingGlass.js:767 msgid "Show Errors" msgstr "Prikaži greške" #: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:71 #: ../js/ui/status/location.js:176 msgid "Enabled" msgstr "Omogućeno" #. Translators: this is for a network djevice that cannot bje activated #. because it's disabled by rfkill (airplane mode) */ #. translators: #. * The djevice has been disabled #: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:179 #: ../js/ui/status/network.js:592 ../src/gvc/gvc-mixer-control.c:1830 msgid "Disabled" msgstr "Onemogućeno" #: ../js/ui/lookingGlass.js:721 msgid "Error" msgstr "Greška" #: ../js/ui/lookingGlass.js:723 msgid "Out of date" msgstr "Isteklo" #: ../js/ui/lookingGlass.js:725 msgid "Downloading" msgstr "Preuzimanje" #: ../js/ui/lookingGlass.js:749 msgid "View Source" msgstr "Pogledaj Izvor" #: ../js/ui/lookingGlass.js:758 msgid "Web Page" msgstr "Web stranica" #: ../js/ui/messageTray.js:2091 msgid "System Information" msgstr "Informacije o sistemu" #: ../js/ui/overview.js:84 msgid "Undo" msgstr "Poništi" #: ../js/ui/overview.js:124 msgid "Overview" msgstr "Pregled" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. */ #: ../js/ui/overview.js:246 msgid "Type to search…" msgstr "Utipkajte za pretragu…" #: ../js/ui/panel.js:351 msgid "Quit" msgstr "Izlaz" #. Translators: If there is no suitable word for "Activities" #. in your language, you can usi the word for "Overview". */ #: ../js/ui/panel.js:403 msgid "Activities" msgstr "Aktivnosti" #: ../js/ui/panel.js:754 msgid "Top Bar" msgstr "Top bar" #: ../js/ui/popupMenu.js:288 msgid "toggle-switch-us" msgstr "mijenjati-zamijeniti-nas" #: ../js/ui/runDialog.js:70 msgid "Enter a Command" msgstr "Unesi naredbu" #: ../js/ui/runDialog.js:110 ../js/ui/windowMenu.js:120 msgid "Close" msgstr "Zatvori" #: ../js/ui/runDialog.js:277 msgid "Restarting…" msgstr "Ponovno pokretanje…" #. Translators: This is a time format for a date in #. long format */ #: ../js/ui/screenShield.js:85 msgid "%A, %B %d" msgstr "%A, %d. %B" #: ../js/ui/screenShield.js:144 msgid "%d new message" msgid_plural "%d new messages" msgstr[0] "%d nova poruka" msgstr[1] "%d nove poruke" msgstr[2] "%d novih poruka" #: ../js/ui/screenShield.js:146 msgid "%d new notification" msgid_plural "%d new notifications" msgstr[0] "%d nova obavijest" msgstr[1] "%d nove obavijesti" msgstr[2] "%d novih obavijesti" #: ../js/ui/screenShield.js:432 ../js/ui/status/system.js:345 msgid "Lock" msgstr "Zaključavanje" #: ../js/ui/screenShield.js:668 msgid "GNOME needs to lock the screen" msgstr "GNOME treba zaključavanje ekrana" #: ../js/ui/screenShield.js:795 ../js/ui/screenShield.js:1271 msgid "Unable to lock" msgstr "U nemogućnosti zaključati" #: ../js/ui/screenShield.js:796 ../js/ui/screenShield.js:1272 msgid "Lock was blocked by an application" msgstr "Zaključavanje je blokirano od strane neke aplikacije" #: ../js/ui/search.js:609 msgid "Searching…" msgstr "Tražim…" #: ../js/ui/search.js:611 msgid "No results." msgstr "Nema rezultata." #: ../js/ui/shellEntry.js:25 msgid "Copy" msgstr "Kopiranje" #: ../js/ui/shellEntry.js:30 msgid "Paste" msgstr "Ubaci" #: ../js/ui/shellEntry.js:97 msgid "Show Text" msgstr "Prikaži tekst" #: ../js/ui/shellEntry.js:99 msgid "Hide Text" msgstr "Sakrij tekst" #: ../js/ui/shellMountOperation.js:370 msgid "Password" msgstr "Loznka" #: ../js/ui/shellMountOperation.js:391 msgid "Remember Password" msgstr "Zapamti loziku" #: ../js/ui/status/accessibility.js:42 msgid "Accessibility" msgstr "Pristupačnost" #: ../js/ui/status/accessibility.js:57 msgid "Zoom" msgstr "Uvećanje" #: ../js/ui/status/accessibility.js:64 msgid "Screen Reader" msgstr "Čitač ekrana" #: ../js/ui/status/accessibility.js:68 msgid "Screen Keyboard" msgstr "Ekranska Tastatura" #: ../js/ui/status/accessibility.js:72 msgid "Visual Alerts" msgstr "Vizualna upozorenja" #: ../js/ui/status/accessibility.js:75 msgid "Sticky Keys" msgstr "Upareni tasteri" #: ../js/ui/status/accessibility.js:78 msgid "Slow Keys" msgstr "Spori tasteri" #: ../js/ui/status/accessibility.js:81 msgid "Bounce Keys" msgstr "Odskočni tasteri" #: ../js/ui/status/accessibility.js:84 msgid "Mouse Keys" msgstr "Tipke miša" #: ../js/ui/status/accessibility.js:144 msgid "High Contrast" msgstr "Veliki kontrast" #: ../js/ui/status/accessibility.js:193 msgid "Large Text" msgstr "Veliki Tekst" #: ../js/ui/status/bluetooth.js:49 msgid "Bluetooth" msgstr "Bluetooth" #: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:178 #: ../js/ui/status/network.js:360 ../js/ui/status/network.js:1282 #: ../js/ui/status/network.js:1393 ../js/ui/status/rfkill.js:91 #: ../js/ui/status/rfkill.js:118 msgid "Turn Off" msgstr "Isključi" #: ../js/ui/status/bluetooth.js:54 msgid "Bluetooth Settings" msgstr "Bluetooth postavke" #: ../js/ui/status/bluetooth.js:104 msgid "%d Connected Device" msgid_plural "%d Connected Devices" msgstr[0] "%d povezan uređaj" msgstr[1] "%d povezana uređaja" msgstr[2] "%d povezanih uređaja" #: ../js/ui/status/bluetooth.js:106 ../js/ui/status/network.js:1310 msgid "Not Connected" msgstr "Nije spojen" #: ../js/ui/status/brightness.js:44 msgid "Brightness" msgstr "Osvjetljenje" #: ../js/ui/status/keyboard.js:599 msgid "Show Keyboard Layout" msgstr "Prikaži raspored Tastature" #: ../js/ui/status/location.js:65 msgid "Location" msgstr "Lokacija" #: ../js/ui/status/location.js:72 ../js/ui/status/location.js:177 msgid "Disable" msgstr "Onemogući" #: ../js/ui/status/location.js:73 msgid "Privacy Settings" msgstr "Postavke privatnosti" #: ../js/ui/status/location.js:176 msgid "In Use" msgstr "U upotrebi" #: ../js/ui/status/location.js:180 msgid "Enable" msgstr "Omogući" #: ../js/ui/status/network.js:101 msgid "" msgstr "" #: ../js/ui/status/network.js:457 ../js/ui/status/network.js:1308 #: ../js/ui/status/network.js:1512 msgid "Off" msgstr "Isključen" #: ../js/ui/status/network.js:459 msgid "Connected" msgstr "Povezano" #. Translators: this is for network devices that are physically present but are not #. under NetworkManager's control (and thus cannot bje used in the mijenu) */ #: ../js/ui/status/network.js:463 msgid "Unmanaged" msgstr "Neupravljivo" #: ../js/ui/status/network.js:465 msgid "Disconnecting" msgstr "Prekidam vezu" #: ../js/ui/status/network.js:471 ../js/ui/status/network.js:1302 msgid "Connecting" msgstr "Povezivanje" #. Translators: this is for network connections that require some kind of key or password */ #: ../js/ui/status/network.js:474 msgid "Authentication required" msgstr "Autentifikacija potrebna" #. Translators: this is for devices that require some kind of firmware or kernel #. module, which is missing */ #: ../js/ui/status/network.js:482 msgid "Firmware missing" msgstr "Nedostaje firmver" #. Translators: this is for a network djevice that cannot bje activated (for example it #. is disabled by rfkill, or it has no coverage */ #: ../js/ui/status/network.js:486 msgid "Unavailable" msgstr "Nedostupno" #: ../js/ui/status/network.js:488 ../js/ui/status/network.js:1696 msgid "Connection failed" msgstr "Veza nije uspjela" #: ../js/ui/status/network.js:504 msgid "Wired Settings" msgstr "Wired Postavke" #: ../js/ui/status/network.js:546 ../js/ui/status/network.js:624 msgid "Mobile Broadband Settings" msgstr "Mobilne širokopojasne postavke" #: ../js/ui/status/network.js:588 ../js/ui/status/network.js:1306 msgid "Hardware Disabled" msgstr "Hardware onemogućen" #: ../js/ui/status/network.js:632 msgid "Use as Internet connection" msgstr "Koristi internet vezu" #: ../js/ui/status/network.js:813 msgid "Airplane Mode is On" msgstr "Režim U avionu uključen" #: ../js/ui/status/network.js:814 msgid "Wi-Fi is disabled when airplane mode is on." msgstr "Wi-Fi je onemogućen kada je režim U avionu uključen." #: ../js/ui/status/network.js:815 msgid "Turn Off Airplane Mode" msgstr "Isključi režim U avionu" #: ../js/ui/status/network.js:824 msgid "Wi-Fi is Off" msgstr "Wi-Fi je isključen" #: ../js/ui/status/network.js:825 msgid "Wi-Fi needs to be turned on in order to connect to a network." msgstr "Wi-Fi treba da bude uključen da bi se povezali na mrežu." #: ../js/ui/status/network.js:826 msgid "Turn On Wi-Fi" msgstr "Uključi Wi-Fi" #: ../js/ui/status/network.js:851 msgid "Wi-Fi Networks" msgstr "Wi-Fi mreže" #: ../js/ui/status/network.js:853 msgid "Select a network" msgstr "Odaberite mrežu" #: ../js/ui/status/network.js:883 msgid "No Networks" msgstr "Nema mreže" #: ../js/ui/status/network.js:904 ../js/ui/status/rfkill.js:116 msgid "Use hardware switch to turn off" msgstr "Koristi hardver prekidač za isključenje" #: ../js/ui/status/network.js:1174 msgid "Select Network" msgstr "Odaberite mrežu" #: ../js/ui/status/network.js:1180 msgid "Wi-Fi Settings" msgstr "Wi-Fi podešavanja" #: ../js/ui/status/network.js:1282 msgid "Turn On" msgstr "Uključi" #: ../js/ui/status/network.js:1299 msgid "Hotspot Active" msgstr "Hotspot Aktivan" #: ../js/ui/status/network.js:1410 msgid "connecting..." msgstr "konektovanje..." #. Translators: this is for network connections that require some kind of key or password */ #: ../js/ui/status/network.js:1413 msgid "authentication required" msgstr "potvrda vjerodostojnosti neophodna" #: ../js/ui/status/network.js:1415 msgid "connection failed" msgstr "konekcija nije uspjela" #: ../js/ui/status/network.js:1481 ../js/ui/status/rfkill.js:94 msgid "Network Settings" msgstr "Mrežne postavke" #: ../js/ui/status/network.js:1483 msgid "VPN Settings" msgstr "VPN Postavke" #: ../js/ui/status/network.js:1502 msgid "VPN" msgstr "VPN" #: ../js/ui/status/network.js:1657 msgid "Network Manager" msgstr "Upravitelj mreže" #: ../js/ui/status/network.js:1697 msgid "Activation of network connection failed" msgstr "Aktivacija mrežne veze nije uspješna" #: ../js/ui/status/power.js:49 msgid "Power Settings" msgstr "Postavke napajanja" #: ../js/ui/status/power.js:65 msgid "Fully Charged" msgstr "Potpuno napunjeno" #: ../js/ui/status/power.js:72 ../js/ui/status/power.js:78 msgid "Estimating…" msgstr "Procjena" #: ../js/ui/status/power.js:86 msgid "%d∶%02d Remaining (%d%%)" msgstr "%d∶%02d Preostalo (%d%%)" #: ../js/ui/status/power.js:91 msgid "%d∶%02d Until Full (%d%%)" msgstr "%d∶%02d Do potpunog (%d%%)" #: ../js/ui/status/power.js:119 msgid "UPS" msgstr "UPS" #: ../js/ui/status/power.js:121 msgid "Battery" msgstr "Baterija" #: ../js/ui/status/rfkill.js:88 msgid "Airplane Mode" msgstr "Režim u avionu" #: ../js/ui/status/rfkill.js:90 msgid "On" msgstr "Uključeno" #: ../js/ui/status/system.js:317 msgid "Switch User" msgstr "Promijeni korisnika" #: ../js/ui/status/system.js:322 msgid "Log Out" msgstr "Odjavite se" #: ../js/ui/status/system.js:341 msgid "Orientation Lock" msgstr "Orjentaciju zaključati" #: ../js/ui/status/system.js:349 msgid "Suspend" msgstr "Suspenduj" #: ../js/ui/status/system.js:352 msgid "Power Off" msgstr "Ugasi" #: ../js/ui/status/volume.js:127 msgid "Volume changed" msgstr "Promjena jačine" #: ../js/ui/status/volume.js:162 msgid "Volume" msgstr "Jačina" #: ../js/ui/status/volume.js:213 msgid "Microphone" msgstr "Mikrofon" #: ../js/ui/unlockDialog.js:67 msgid "Log in as another user" msgstr "Prijavite se kao drugi korisnik" #: ../js/ui/unlockDialog.js:84 msgid "Unlock Window" msgstr "Otključaj prozor" #: ../js/ui/viewSelector.js:159 msgid "Applications" msgstr "Aplikacije" #: ../js/ui/viewSelector.js:163 msgid "Search" msgstr "Pretraži" #: ../js/ui/windowAttentionHandler.js:19 msgid "“%s” is ready" msgstr "\"%s\" je spreman" #: ../js/ui/windowManager.js:65 msgid "Do you want to keep these display settings?" msgstr "Da li želite zadržati ove postavke prikaza?" #. Translators: this and the following message should bje limited in lenght, #. to avoid ellipsizing the labels. #. */ #: ../js/ui/windowManager.js:84 msgid "Revert Settings" msgstr "Vraćanje postavki" #: ../js/ui/windowManager.js:88 msgid "Keep Changes" msgstr "Sačuvaj promjene" #: ../js/ui/windowManager.js:107 msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "Promjene postavki će se vratiti u %d sekundi" msgstr[1] "Promjene postavki će se vratiti u %d sekunde" msgstr[2] "Promjene postavki će se vratiti u %d sekundi" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. */ #: ../js/ui/windowManager.js:599 msgid "%d x %d" msgstr "%d x %d" #: ../js/ui/windowMenu.js:34 msgid "Minimize" msgstr "Umanji" #: ../js/ui/windowMenu.js:41 msgid "Unmaximize" msgstr "Poništi uvećavanje" #: ../js/ui/windowMenu.js:45 msgid "Maximize" msgstr "Uvećaj" #: ../js/ui/windowMenu.js:52 msgid "Move" msgstr "Premjesti" #: ../js/ui/windowMenu.js:58 msgid "Resize" msgstr "Promijeni veličinu" #: ../js/ui/windowMenu.js:65 msgid "Move Titlebar Onscreen" msgstr "Pomjeri Titlebar Onscreen" #: ../js/ui/windowMenu.js:70 msgid "Always on Top" msgstr "Uvijek na vrhu" #: ../js/ui/windowMenu.js:89 msgid "Always on Visible Workspace" msgstr "Uvijek na vidnom radnom mjestu" #: ../js/ui/windowMenu.js:106 msgid "Move to Workspace Up" msgstr "Premjesti na radni prostor gore" #: ../js/ui/windowMenu.js:111 msgid "Move to Workspace Down" msgstr "Premjesti na radni prostor dole" #: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1 msgid "Evolution Calendar" msgstr "Kalendar evolucije" #. translators: #. * The number of sound outputs on a particular djevice #: ../src/gvc/gvc-mixer-control.c:1837 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u izlaz" msgstr[1] "%u izlaza" msgstr[2] "%u izlaza" #. translators: #. * The number of sound inputs on a particular djevice #: ../src/gvc/gvc-mixer-control.c:1847 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u ulaz" msgstr[1] "%u ulaza" msgstr[2] "%u ulaza" #: ../src/gvc/gvc-mixer-control.c:2373 msgid "System Sounds" msgstr "Sistemski zvuci" #: ../src/main.c:373 msgid "Print version" msgstr "Ispiši izdanje" #: ../src/main.c:379 msgid "Mode used by GDM for login screen" msgstr "Mod koristen od strane GDM za prozor prijave." #: ../src/main.c:385 msgid "Use a specific mode, e.g. \"gdm\" for login screen" msgstr "Koristi specifični mod, npr. “\"gdm”\" za prozor prijave." #: ../src/main.c:391 msgid "List possible modes" msgstr "Spisak mogućih modova." #: ../src/shell-app.c:247 msgctxt "program" msgid "Unknown" msgstr "Nepoznato" #: ../src/shell-app.c:488 #, c-format msgid "Failed to launch “%s”" msgstr "Nisam uspio pokrenuti \"%s\"" #: ../src/shell-keyring-prompt.c:714 msgid "Passwords do not match." msgstr "Lozinke se ne poklapaju." #: ../src/shell-keyring-prompt.c:722 msgid "Password cannot be blank" msgstr "Lozinka ne može biti prazna" #: ../src/shell-polkit-authentication-agent.c:346 msgid "Authentication dialog was dismissed by the user" msgstr "Autentifikacijski dijalog ugašen od strane korisnika" #: ../data/50-gnome-shell-system.xml.in.h:2 msgid "Show the notification list" msgstr "Prikaži listu obavijesti" #: ../data/org.gnome.shell.gschema.xml.in.in.h:25 msgid "Keybinding to toggle the visibility of the notification list" msgstr "Taster za izmjenu vidljivosti liste obavijesti" #: ../data/org.gnome.shell.gschema.xml.in.in.h:26 msgid "Keybinding to toggle the visibility of the notification list." msgstr "Taster za izmjenu vidljivosti liste obavijesti" 07070100000222000081A40000000000000000000000016712993F0001933D000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/ca.po# Catalan gnome-shell translation. # Copyright (C) 2009 Siegfried-Angel Gevatter Pujals # This file is distributed under the same license as the gnome-shell package. # Siegfried-Angel Gevatter Pujals , 2009. # Jordi Serratosa , 2012, 2017. # Gil Forcada , 2010, 2011, 2013, 2014, 2016, 2018. # Jordi Mas i Hernàndez , 2017-2024 # # La terminologia que usem està documentada a la traducció del gnome-control-center # msgid "" msgstr "" "Project-Id-Version: HEAD\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues/\n" "POT-Creation-Date: 2024-08-21 13:15+0000\n" "PO-Revision-Date: 2024-08-14 21:49+0200\n" "Last-Translator: Jordi Mas i Hernàndez\n" "Language-Team: \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: Poedit 3.2.2\n" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "Llançadors" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate pinned app 1" msgstr "Activa l'aplicació fixada 1" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate pinned app 2" msgstr "Activa l'aplicació fixada 2" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate pinned app 3" msgstr "Activa l'aplicació fixada 3" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate pinned app 4" msgstr "Activa l'aplicació fixada 4" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate pinned app 5" msgstr "Activa l'aplicació fixada 5" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate pinned app 6" msgstr "Activa l'aplicació fixada 6" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate pinned app 7" msgstr "Activa l'aplicació fixada 7" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate pinned app 8" msgstr "Activa l'aplicació fixada 8" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate pinned app 9" msgstr "Activa l'aplicació fixada 9" #: data/50-gnome-shell-launchers.xml:46 msgid "Open new window of pinned app 1" msgstr "Obre una finestra nova de l'aplicació fixada 1" #: data/50-gnome-shell-launchers.xml:50 msgid "Open new window of pinned app 2" msgstr "Obre una finestra nova de l'aplicació fixada 2" #: data/50-gnome-shell-launchers.xml:54 msgid "Open new window of pinned app 3" msgstr "Obre una finestra nova de l'aplicació fixada 3" #: data/50-gnome-shell-launchers.xml:58 msgid "Open new window of pinned app 4" msgstr "Obre una finestra nova de l'aplicació fixada 4" #: data/50-gnome-shell-launchers.xml:62 msgid "Open new window of pinned app 5" msgstr "Obre una finestra nova de l'aplicació fixada 5" #: data/50-gnome-shell-launchers.xml:66 msgid "Open new window of pinned app 6" msgstr "Obre una finestra nova de l'aplicació fixada 6" #: data/50-gnome-shell-launchers.xml:70 msgid "Open new window of pinned app 7" msgstr "Obre una finestra nova de l'aplicació fixada 7" #: data/50-gnome-shell-launchers.xml:74 msgid "Open new window of pinned app 8" msgstr "Obre una finestra nova de l'aplicació fixada 8" #: data/50-gnome-shell-launchers.xml:78 msgid "Open new window of pinned app 9" msgstr "Obre una finestra nova de l'aplicació fixada 9" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2274 msgid "Screenshots" msgstr "Captures de pantalla" #: data/50-gnome-shell-screenshots.xml:9 #: data/org.gnome.shell.gschema.xml.in:287 msgid "Take a screenshot interactively" msgstr "Feu una captura de pantalla interactivament" #: data/50-gnome-shell-screenshots.xml:12 #: data/org.gnome.shell.gschema.xml.in:299 msgid "Take a screenshot" msgstr "Feu una captura de pantalla" #: data/50-gnome-shell-screenshots.xml:15 #: data/org.gnome.shell.gschema.xml.in:295 msgid "Take a screenshot of a window" msgstr "Feu una captura d'una finestra" #: data/50-gnome-shell-screenshots.xml:18 #: data/org.gnome.shell.gschema.xml.in:291 msgid "Record a screencast interactively" msgstr "Fes un enregistrament de pantalla interactivament" #: data/50-gnome-shell-system.xml:6 js/ui/messageTray.js:1298 msgid "System" msgstr "Sistema" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "Mostra la llista de notificacions" #: data/50-gnome-shell-system.xml:12 msgid "Open the quick settings menu" msgstr "Obre el menú de configuració ràpida" #: data/50-gnome-shell-system.xml:15 msgid "Focus the active notification" msgstr "Posa el focus en la notificació activa" #: data/50-gnome-shell-system.xml:18 msgid "Show the overview" msgstr "Mostra la vista general" #: data/50-gnome-shell-system.xml:21 msgid "Show all apps" msgstr "Mostra totes les aplicacions" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "GNOME Shell" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "Gestor de finestres i llançador d'aplicacions" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" "Habilita les eines internes en el diàleg de l'Alt+F2 que són útils per als " "desenvolupadors i provadors" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Permet l'accés a les eines de depuració i de seguiment internes a través del " "diàleg de l'Alt+F2." #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "" "Identificadors universals únics de les extensions que s'han d'habilitar" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "Les extensions del GNOME Shell tenen un identificador universal. Aquesta " "clau conté una llista de les extensions que s'han de carregar. Qualsevol " "extensió que s'hagi de carregar ha de ser a la llista. Podeu modificar " "aquesta llista amb els mètodes de D-Bus «EnableExtension» (activa una " "extensió) i «DisableExtension» (desactiva una extensió) a org.gnome.Shell." #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "" "Identificadors universals únics de les extensions que s'han d'inhabilitar" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" "Les extensions del GNOME Shell tenen un identificador universal. Aquesta " "clau conté una llista de les extensions que s'han de carregar. Qualsevol " "extensió que s'hagi de carregar ha de ser a la llista. Podeu modificar " "aquesta llista amb els mètodes de D-Bus «EnableExtension» (activa una " "extensió) i «DisableExtension» (desactiva una extensió) a org.gnome.Shell." "Aquesta clau té preferència sobre el paràmetre «enabled-extensions»." #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "Inhabilita les extensions d'usuari" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" "Inhabilita totes les extensions que l'usuari ha habilitat sense afectar el " "paràmetre «enabled-extension»." #: data/org.gnome.shell.gschema.xml.in:45 msgid "Allow extension installation" msgstr "Permet la instal·lació d'extensions" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "Allow users to install extensions in their home folder. If disabled, the " "InstallRemoteExtension D-Bus method will fail, and extensions are only " "loaded from system directories on startup. It does not affect extensions " "that are already loaded, so a change only takes full effect on the next " "login." msgstr "" "Permet als usuaris instal·lar extensions a la seva carpeta d'inici. Si està " "desactivat, el mètode D-Bus d'Instal·lació d'Extensió Remota fallarà, i les " "extensions només es carregaran des dels directoris del sistema en iniciar. " "No afecta les extensions que ja s'han carregat, de manera que un canvi només " "té efecte en el següent inici de sessió." #: data/org.gnome.shell.gschema.xml.in:56 msgid "Disables the validation of extension version compatibility" msgstr "Desactiva la validació de la compatibilitat de versió d'extensions" #: data/org.gnome.shell.gschema.xml.in:57 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "El GNOME Shell només carregarà extensions que afirmin ser compatibles amb la " "versió en execució. Si s'activa aquesta opció, es desactivarà la comprovació " "i es provarà de carregar totes les extensions sense tenir en compte les " "versions amb què afirmin ser compatibles." #: data/org.gnome.shell.gschema.xml.in:65 msgid "List of desktop file IDs for favorite applications" msgstr "" "Llista d'identificadors de fitxers d'escriptori de les aplicacions preferides" #: data/org.gnome.shell.gschema.xml.in:66 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" "Es mostraran, a l'àrea de preferits, les aplicacions que corresponguin a " "aquests identificadors." #: data/org.gnome.shell.gschema.xml.in:73 msgid "History for command (Alt-F2) dialog" msgstr "Historial de les ordres utilitzades en el diàleg de l'Alt+F2" #. Translators: looking glass is a debugger and inspector tool, see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/docs/looking-glass.md #: data/org.gnome.shell.gschema.xml.in:78 msgid "History for the looking glass dialog" msgstr "Historial del depurador del GNOME Shell" #: data/org.gnome.shell.gschema.xml.in:82 msgid "Always show the “Log Out” action in the system menu" msgstr "Mostra sempre l'element de menú «Surt» al menú de sistema" #: data/org.gnome.shell.gschema.xml.in:83 msgid "" "This key overrides the automatic hiding of the “Log out” action in the " "system menu for logged-in situations where there is a single, local, non-" "system user and only a single available session type (e.g. GNOME on Wayland)." msgstr "" "Aquesta clau anul·la l'ocultació automàtica de l'acció «Desconnecta» al menú " "del sistema per a situacions iniciades en què hi ha un únic usuari local, no " "del sistema i només un únic tipus de sessió disponible (p. ex. GNOME al " "Wayland)." #: data/org.gnome.shell.gschema.xml.in:92 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "Si s'han de recordar les contrasenyes dels punts de muntatge xifrat o els " "sistemes de fitxers remots" #: data/org.gnome.shell.gschema.xml.in:93 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "El GNOME Shell us demanarà la contrasenya quan es munti un dispositiu xifrat " "o un sistema de fitxers remot. Si es pot desar la contrasenya per a " "utilitzar-la en el futur, es mostrarà la casella de selecció «Recorda la " "contrasenya». Aquesta clau estableix el valor per defecte d'aquesta casella " "de selecció." #: data/org.gnome.shell.gschema.xml.in:102 msgid "The last selected non-default power profile" msgstr "El darrer perfil d'energia no predeterminat seleccionat" #: data/org.gnome.shell.gschema.xml.in:103 msgid "" "Some systems support more than two power profiles. In order to still support " "toggling between two profiles, this key records the last selected non-" "default profile." msgstr "" "Alguns sistemes suporten més de dos perfils d'energia. Per tal de continuar " "admetent el canvi entre dos perfils, aquesta clau registra l'últim perfil no " "predeterminat seleccionat." #: data/org.gnome.shell.gschema.xml.in:111 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "" "S'ha mostrat l'última versió per al diàleg «Us donem la benvinguda al GNOME»" #: data/org.gnome.shell.gschema.xml.in:112 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can " "be used to effectively disable the dialog." msgstr "" "Aquesta clau determina per a quina versió es va mostrar per última vegada " "del diàleg «Us donem la benvinguda al GNOME». Una cadena buida representa la " "versió més antiga possible, i un nombre enorme representarà versions que " "encara no existeixen. Aquest nombre enorme es pot utilitzar per a desactivar " "el diàleg." #: data/org.gnome.shell.gschema.xml.in:145 msgid "Layout of the app picker" msgstr "Disposició del selector d'aplicacions" #: data/org.gnome.shell.gschema.xml.in:146 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" msgstr "" "Disposició del selector d'aplicacions. Cada entrada de la matriu és una " "pàgina. Les pàgines s'emmagatzemen en l'ordre en què apareixen al GNOME " "Shell. Cada pàgina conté un «id de l'aplicació» → parell de «dades». " "Actualment, els valors següents s'emmagatzemen com a «dades»: • «posició» la " "posició de la icona de l'aplicació a la pàgina" #: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:172 msgid "Keybinding to shift between overview states" msgstr "Vinculació de tecla per a desplaçar entre els estats de resum" #: data/org.gnome.shell.gschema.xml.in:166 msgid "Keybinding to shift between session, window picker and app grid" msgstr "" "Vinculació de tecla per a desplaçar entre sessió, selector de finestres i " "graella d'aplicacions" #: data/org.gnome.shell.gschema.xml.in:173 msgid "Keybinding to shift between app grid, window picker and session" msgstr "" "Vinculació de tecla per a desplaçar entre la graella d'aplicació, el " "selector de finestres i la sessió" #: data/org.gnome.shell.gschema.xml.in:179 msgid "Keybinding to open the “Show Applications” view" msgstr "Vinculació de tecles per a obrir la vista «Mostra les aplicacions»" #: data/org.gnome.shell.gschema.xml.in:180 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "" "Vinculació de tecles per a obrir la vista «Mostra les aplicacions» de les " "activitats de la vista general." #: data/org.gnome.shell.gschema.xml.in:187 msgid "Keybinding to open the overview" msgstr "Vinculació per a obrir la vista general" #: data/org.gnome.shell.gschema.xml.in:188 msgid "Keybinding to open the Activities Overview." msgstr "Vinculació per a obrir la vista general d'activitats." #: data/org.gnome.shell.gschema.xml.in:194 msgid "Keybinding to toggle the visibility of the notification list" msgstr "" "La vinculació per a commutar la visibilitat de la llista de notificacions" #: data/org.gnome.shell.gschema.xml.in:195 msgid "Keybinding to toggle the visibility of the notification list." msgstr "" "La vinculació per a commutar la visibilitat de la llista de notificacions." #: data/org.gnome.shell.gschema.xml.in:201 msgid "Keybinding to toggle the quick settings menu" msgstr "Vinculació de tecles per a commutar el menú de configuració ràpida" #: data/org.gnome.shell.gschema.xml.in:202 msgid "Keybinding to toggle the quick settings menu." msgstr "Vinculació de tecles per a commutar el menú de configuració ràpida." #: data/org.gnome.shell.gschema.xml.in:208 msgid "Keybinding to focus the active notification" msgstr "Vinculació per a posar el focus a la notificació activa" #: data/org.gnome.shell.gschema.xml.in:209 msgid "Keybinding to focus the active notification." msgstr "Vinculació per a posar el focus a la notificació activa." #: data/org.gnome.shell.gschema.xml.in:215 msgid "Switch to application 1" msgstr "Commuta a l'aplicació 1" #: data/org.gnome.shell.gschema.xml.in:219 msgid "Switch to application 2" msgstr "Commuta a l'aplicació 2" #: data/org.gnome.shell.gschema.xml.in:223 msgid "Switch to application 3" msgstr "Commuta a l'aplicació 3" #: data/org.gnome.shell.gschema.xml.in:227 msgid "Switch to application 4" msgstr "Commuta a l'aplicació 4" #: data/org.gnome.shell.gschema.xml.in:231 msgid "Switch to application 5" msgstr "Commuta a l'aplicació 5" #: data/org.gnome.shell.gschema.xml.in:235 msgid "Switch to application 6" msgstr "Commuta a l'aplicació 6" #: data/org.gnome.shell.gschema.xml.in:239 msgid "Switch to application 7" msgstr "Commuta a l'aplicació 7" #: data/org.gnome.shell.gschema.xml.in:243 msgid "Switch to application 8" msgstr "Commuta a l'aplicació 8" #: data/org.gnome.shell.gschema.xml.in:247 msgid "Switch to application 9" msgstr "Commuta a l'aplicació 9" #: data/org.gnome.shell.gschema.xml.in:251 msgid "Open a new instance of application 1" msgstr "Obre una nova instància de l'aplicació 1" #: data/org.gnome.shell.gschema.xml.in:255 msgid "Open a new instance of application 2" msgstr "Obre una nova instància de l'aplicació 2" #: data/org.gnome.shell.gschema.xml.in:259 msgid "Open a new instance of application 3" msgstr "Obre una nova instància de l'aplicació 3" #: data/org.gnome.shell.gschema.xml.in:263 msgid "Open a new instance of application 4" msgstr "Obre una nova instància de l'aplicació 4" #: data/org.gnome.shell.gschema.xml.in:267 msgid "Open a new instance of application 5" msgstr "Obre una nova instància de l'aplicació 5" #: data/org.gnome.shell.gschema.xml.in:271 msgid "Open a new instance of application 6" msgstr "Obre una nova instància de l'aplicació 6" #: data/org.gnome.shell.gschema.xml.in:275 msgid "Open a new instance of application 7" msgstr "Obre una nova instància de l'aplicació 7" #: data/org.gnome.shell.gschema.xml.in:279 msgid "Open a new instance of application 8" msgstr "Obre una nova instància de l'aplicació 8" #: data/org.gnome.shell.gschema.xml.in:283 msgid "Open a new instance of application 9" msgstr "Obre una nova instància de l'aplicació 9" #: data/org.gnome.shell.gschema.xml.in:308 #: data/org.gnome.shell.gschema.xml.in:335 msgid "Limit switcher to current workspace." msgstr "Limita el canviador a l'espai de treball actual." #: data/org.gnome.shell.gschema.xml.in:309 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "Si és «true» (cert), només les aplicacions que tinguin finestres en l'espai " "de treball actual es mostren en el canviador. En cas contrari es mostren " "totes les aplicacions." #: data/org.gnome.shell.gschema.xml.in:326 msgid "The application icon mode." msgstr "El mode d'icona de les aplicacions." #: data/org.gnome.shell.gschema.xml.in:327 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-only” " "(shows only the application icon) or “both”." msgstr "" "Configureu com es mostren les finestres en l'intercanviador. Els valors " "possibles són: «thumbnail-only» (mostra una miniatura de la finestra), «app-" "icon-only» (mostra la icona de l'aplicació) o «both» (ambdues coses)." #: data/org.gnome.shell.gschema.xml.in:336 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "Si és «true» (cert), només les finestres de l'espai de treball actual es " "mostren en el canviador. En cas contrari, es mostren totes les finestres." #: data/org.gnome.shell.gschema.xml.in:346 msgid "Locations" msgstr "Ubicacions" #: data/org.gnome.shell.gschema.xml.in:347 msgid "The locations to show in world clocks" msgstr "Les ubicacions a mostrar en els rellotges del món" #: data/org.gnome.shell.gschema.xml.in:357 msgid "Automatic location" msgstr "Ubicació automàtica" #: data/org.gnome.shell.gschema.xml.in:358 msgid "Whether to fetch the current location or not" msgstr "Si s'ha d'obtenir la ubicació actual o no" #: data/org.gnome.shell.gschema.xml.in:365 msgid "Location" msgstr "Ubicació" #: data/org.gnome.shell.gschema.xml.in:366 msgid "The location for which to show a forecast" msgstr "La ubicació a mostrar la predicció del temps" #. Keep in sync with subprojects/extensions-app #: data/org.gnome.Shell.Extensions.desktop.in.in:5 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/data/ui/extensions-window.ui:57 msgid "Extensions" msgstr "Extensions" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "Inici de sessió de xarxa" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:275 msgid "Something’s gone wrong" msgstr "Alguna cosa ha anat malament" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" "Hi ha un problema: no es poden mostrar els paràmetres per a aquesta " "extensió. Us recomanem que informeu del problema als autors de l'extensió." #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "Detalls tècnics" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "Pàgina d'inici" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 msgid "Visit extension homepage" msgstr "Visiteu la pàgina d'inici de l'extensió" #: js/gdm/authPrompt.js:151 js/gdm/loginDialog.js:466 #: js/ui/audioDeviceSelection.js:66 js/ui/components/networkAgent.js:113 #: js/ui/components/polkitAgent.js:144 js/ui/endSessionDialog.js:437 #: js/ui/extensionDownloader.js:276 js/ui/shellMountOperation.js:382 #: js/ui/shellMountOperation.js:392 msgid "Cancel" msgstr "Cancel·la" #: js/gdm/authPrompt.js:317 js/ui/components/networkAgent.js:213 #: js/ui/components/networkAgent.js:233 js/ui/components/networkAgent.js:265 #: js/ui/components/networkAgent.js:298 js/ui/components/networkAgent.js:337 #: js/ui/components/networkAgent.js:350 js/ui/components/polkitAgent.js:286 #: js/ui/shellMountOperation.js:332 msgid "Password" msgstr "Contrasenya" #: js/gdm/loginDialog.js:326 msgid "Choose Session" msgstr "Trieu la sessió" #. Translators: is running for #: js/gdm/loginDialog.js:424 #, javascript-format msgid "" "Remote login is not possible because a remote session is already running for " "%s. To login remotely, you must log out from the remote session or force " "stop it." msgstr "" "L'inici de sessió remot no és possible perquè ja hi ha una sessió remota en " "execució de %s. Per a poder accedir remotament cal que abans es tanqui la " "sessió remota o se'n forci l'aturada." #. Translators: is running for #: js/gdm/loginDialog.js:427 #, javascript-format msgid "" "Login is not possible because a remote session is already running for %s. To " "login, you must log out from the remote session or force stop it." msgstr "" "L'inici de sessió no és possible perquè hi ha una sessió remota en execució " "de %s. Per a poder iniciar sessió, cal que abans es tanqui la sessió remota " "o se'n forci l'aturada." #. Translators: is running for #: js/gdm/loginDialog.js:430 #, javascript-format msgid "" "Remote login is not possible because a local session is already running for " "%s. To login remotely, you must log out from the local session or force stop " "it." msgstr "" "L'inici de sessió remot no és possible perquè hi ha una sessió local en " "execució de %s. Per a poder accedir remotament cal que abans es tanqui la " "sessió local o se'n forci l'aturada." #. Translators: is running for #: js/gdm/loginDialog.js:433 #, javascript-format msgid "" "Login is not possible because a session is already running for %s. To login, " "you must log out from the session or force stop it." msgstr "" "L'inici de sessió no és possible perquè ja hi ha una sessió en execució de " "%s. Per a poder iniciar sessió cal que abans es tanqui la sessió o se'n " "forci l'aturada." #: js/gdm/loginDialog.js:442 msgid "Session Already Running" msgstr "Ja hi ha una sessió executant-se" #: js/gdm/loginDialog.js:454 msgid "" "Force stopping will quit any running apps and processes, and could result in " "data loss" msgstr "" "Forçar l'aturada interromprà processos i aplicacions en execució, i podria " "provocar una pèrdua de dades" #: js/gdm/loginDialog.js:474 msgid "Force Stop" msgstr "Força l'aturada" #: js/gdm/loginDialog.js:542 msgid "Not listed?" msgstr "No esteu llistat?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:1010 #, javascript-format msgid "(e.g., user or %s)" msgstr "(p. ex. l'usuari o %s)" #: js/gdm/loginDialog.js:1015 js/ui/components/networkAgent.js:257 #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:326 msgid "Username" msgstr "Nom d'usuari" #: js/gdm/loginDialog.js:1081 msgid "Login Attempt Timed Out" msgstr "El temps per a intentar un inici de sessió ha expirat" #: js/gdm/loginDialog.js:1082 msgid "Login took too long, please try again" msgstr "L'inici de sessió ha trigat massa, torna-ho a provar" #: js/gdm/loginDialog.js:1431 msgid "Login Window" msgstr "Finestra d'entrada" #: js/gdm/util.js:496 msgid "Authentication error" msgstr "Error d'autenticació" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:727 msgid "(or swipe finger across reader)" msgstr "(o llisca el dit a través del lector)" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:732 msgid "(or place finger on reader)" msgstr "(o posa el dit al lector)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:91 msgctxt "search-result" msgid "Power Off" msgstr "Apaga" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:94 msgid "power off;poweroff;shutdown;halt;stop" msgstr "apaga;atura;reinicia" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:99 msgctxt "search-result" msgid "Restart" msgstr "Reinicia" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:102 msgid "reboot;restart;" msgstr "reinicia;reinici;" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:107 msgctxt "search-result" msgid "Lock Screen" msgstr "Bloqueja la pantalla" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:110 msgid "lock screen" msgstr "bloqueja;pantalla;bloca" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:115 msgctxt "search-result" msgid "Log Out" msgstr "Tanca la sessió" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:118 msgid "logout;log out;sign off" msgstr "desconnecta;sortida;surt" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:123 msgctxt "search-result" msgid "Suspend" msgstr "Suspèn" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:126 msgid "suspend;sleep" msgstr "suspèn;dorm" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:131 msgctxt "search-result" msgid "Switch User" msgstr "Canvia d'usuari" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:134 msgid "switch user" msgstr "canvia d'usuari" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:141 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "bloqueja l'orientació;desbloqueja l'orientació;pantalla;rotació" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:146 msgctxt "search-result" msgid "Take a Screenshot" msgstr "Fes una captura de pantalla" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:149 msgid "screenshot;screencast;snip;capture;record" msgstr "captura de pantalla;enregistrament de pantalla;tall;captura;registre" #: js/misc/systemActions.js:249 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "Desbloqueja la rotació de la pantalla" #: js/misc/systemActions.js:250 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "Bloqueja la rotació de la pantalla" #: js/misc/util.js:130 msgid "Command not found" msgstr "No s'ha trobat l'ordre" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:170 msgid "Could not parse command:" msgstr "No s'ha pogut analitzar l'ordre:" #: js/misc/util.js:178 #, javascript-format msgid "Execution of “%s” failed:" msgstr "No s'ha pogut executar «%s»:" #: js/misc/dateUtils.js:69 msgid "Just now" msgstr "Ara mateix" #: js/misc/dateUtils.js:72 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "fa %d minut" msgstr[1] "fa %d minuts" #: js/misc/dateUtils.js:79 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "fa %d hora" msgstr[1] "fa %d hores" #: js/misc/dateUtils.js:85 js/ui/dateMenu.js:183 msgid "Yesterday" msgstr "Ahir" #: js/misc/dateUtils.js:88 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "fa %d dia" msgstr[1] "fa %d dies" #: js/misc/dateUtils.js:95 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "fa %d setmana" msgstr[1] "fa %d setmanes" #: js/misc/dateUtils.js:102 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "fa %d mes" msgstr[1] "fa %d mesos" #: js/misc/dateUtils.js:108 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "fa %d any" msgstr[1] "fa %d anys" #. Translators: Time in 24h format #: js/misc/dateUtils.js:155 msgid "%H∶%M" msgstr "%-H:%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/dateUtils.js:161 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "Ahir, a les %-H:%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/dateUtils.js:167 #, no-c-format msgid "%A, %H∶%M" msgstr "%A a les %-H:%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/dateUtils.js:173 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%-d %B, a les %-H:%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/dateUtils.js:179 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%-d %B de %Y, a les %-H:%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/dateUtils.js:184 msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/dateUtils.js:190 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "Ahir, a les %l∶%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/dateUtils.js:196 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, a les %l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/dateUtils.js:202 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%-d %B, a les %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/dateUtils.js:208 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%-d %B de %Y, a les %l∶%M %p" #: js/portalHelper/main.js:98 msgid "Your connection seems to be secure" msgstr "La connexió sembla ser segura" #: js/portalHelper/main.js:104 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "La connexió a aquest punt d'accés no és segura. Contrasenyes o altra " "informació que introduïu en aquesta pàgina pot ser vista per persones " "properes." #: js/portalHelper/main.js:115 msgid "Hotspot Login" msgstr "Inici de sessió al punt d'accés Wi-Fi" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:51 js/ui/inhibitShortcutsDialog.js:92 msgid "Deny" msgstr "Denega" #: js/ui/accessDialog.js:52 js/ui/inhibitShortcutsDialog.js:101 msgid "Allow" msgstr "Permet" #: js/ui/appDisplay.js:1769 msgid "Unnamed Folder" msgstr "Carpeta sense nom" #: js/ui/appFavorites.js:163 #, javascript-format msgid "%s has been pinned to the dash." msgstr "%s s'ha ancorat al tauler." #: js/ui/appFavorites.js:194 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "%s s'ha desancorat del tauler." #: js/ui/appFavorites.js:208 js/ui/main.js:281 msgid "Undo" msgstr "Desfés" #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:49 msgid "Open Windows" msgstr "Obre finestres" #: js/ui/appMenu.js:57 msgid "New Window" msgstr "Finestra nova" #: js/ui/appMenu.js:84 msgid "App Details" msgstr "Detalls de l'aplicació" #: js/ui/appMenu.js:100 msgid "Quit" msgstr "Surt" #: js/ui/appMenu.js:160 js/ui/dash.js:248 msgid "Unpin" msgstr "Desancora" #: js/ui/appMenu.js:161 msgid "Pin to Dash" msgstr "Ancora-ho al tauler" #: js/ui/appMenu.js:178 msgid "Launch using Integrated Graphics Card" msgstr "Inicia usant una targeta gràfica integrada" #: js/ui/appMenu.js:179 msgid "Launch using Discrete Graphics Card" msgstr "Inicia usant una targeta gràfica externa" #: js/ui/audioDeviceSelection.js:46 msgid "Select Audio Device" msgstr "Seleccioneu dispositiu d'àudio" #: js/ui/audioDeviceSelection.js:61 js/ui/status/volume.js:81 msgid "Sound Settings" msgstr "Paràmetres del so" #: js/ui/audioDeviceSelection.js:74 msgid "Headphones" msgstr "Auriculars" #: js/ui/audioDeviceSelection.js:76 msgid "Headset" msgstr "Auriculars amb micròfon" #: js/ui/audioDeviceSelection.js:78 js/ui/status/volume.js:356 msgid "Microphone" msgstr "Micròfon" #: js/ui/backgroundMenu.js:13 msgid "Change Background…" msgstr "Canvia el fons de l'escriptori…" #: js/ui/backgroundMenu.js:15 msgid "Display Settings" msgstr "Paràmetres de la pantalla" #: js/ui/backgroundMenu.js:16 msgid "Settings" msgstr "Paràmetres" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:37 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:63 msgctxt "grid sunday" msgid "S" msgstr "Dg" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:65 msgctxt "grid monday" msgid "M" msgstr "Dl" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:67 msgctxt "grid tuesday" msgid "T" msgstr "Dt" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:69 msgctxt "grid wednesday" msgid "W" msgstr "Dc" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:71 msgctxt "grid thursday" msgid "T" msgstr "Dj" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:73 msgctxt "grid friday" msgid "F" msgstr "Dv" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:75 msgctxt "grid saturday" msgid "S" msgstr "Ds" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:426 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:436 msgid "%OB %Y" msgstr "%OB de %Y" #: js/ui/calendar.js:498 msgid "Previous month" msgstr "Mes anterior" #: js/ui/calendar.js:516 msgid "Next month" msgstr "Mes següent" #: js/ui/calendar.js:667 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%-d" #: js/ui/calendar.js:726 msgid "Week %V" msgstr "Setmana %-V" #: js/ui/calendar.js:918 msgid "No Notifications" msgstr "Cap notificació" #: js/ui/calendar.js:974 msgid "Do Not Disturb" msgstr "No molesteu" #: js/ui/calendar.js:995 msgid "Clear" msgstr "Neteja-ho" #: js/ui/calendar.js:999 msgctxt "action" msgid "Clear all notifications" msgstr "Esborra totes les notificacions" #. Translators: %s is an application name #: js/ui/closeDialog.js:42 #, javascript-format msgid "“%s” Is Not Responding" msgstr "«%s» no està responent" #: js/ui/closeDialog.js:43 msgid "" "You may choose to wait a short while for it to continue or force the app to " "quit entirely" msgstr "" "Podeu esperar un moment perquè continuï o podeu forçar a l'aplicació la " "sortida completa" #: js/ui/closeDialog.js:71 msgid "Force Quit" msgstr "Força la sortida" #: js/ui/closeDialog.js:76 msgid "Wait" msgstr "Espera" #: js/ui/components/automountManager.js:82 msgid "External drive connected" msgstr "S'ha connectat un dispositiu extern" #: js/ui/components/automountManager.js:94 msgid "External drive disconnected" msgstr "S'ha desconnectat un dispositiu extern" #: js/ui/components/automountManager.js:208 msgid "Unable to unlock volume" msgstr "No es pot desbloquejar el volum" #: js/ui/components/automountManager.js:209 msgid "The installed udisks version does not support the PIM setting" msgstr "" "La versió instal·lada del udisks no és compatible amb la configuració PIM" #. Translators: %s is the name of a partition on a external drive #: js/ui/components/autorunManager.js:189 #, javascript-format msgid "“%s” connected" msgstr "«%s» connectat" #: js/ui/components/autorunManager.js:190 msgid "Disk can now be used" msgstr "Ara es pot utilitzar el disc" #: js/ui/components/autorunManager.js:202 #, javascript-format msgid "Open with %s" msgstr "Obre amb %s" #: js/ui/components/networkAgent.js:95 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router" msgstr "També us podeu connectar prement el botó «WPS» del vostre encaminador" #: js/ui/components/networkAgent.js:107 js/ui/status/bluetooth.js:245 #: js/ui/status/network.js:360 js/ui/status/network.js:444 msgid "Connect" msgstr "Connecta" #: js/ui/components/networkAgent.js:222 msgid "Key" msgstr "Clau" #: js/ui/components/networkAgent.js:273 js/ui/components/networkAgent.js:312 msgid "Private key password" msgstr "Contrasenya de la clau privada" #: js/ui/components/networkAgent.js:306 msgid "Identity" msgstr "Identitat" #: js/ui/components/networkAgent.js:332 msgid "Service" msgstr "Servei" #: js/ui/components/networkAgent.js:370 js/ui/components/networkAgent.js:406 #: js/ui/components/networkAgent.js:743 js/ui/components/networkAgent.js:764 msgid "Authentication required" msgstr "Cal autenticació" #: js/ui/components/networkAgent.js:371 js/ui/components/networkAgent.js:744 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network “%s”" msgstr "" "Per a accedir a la xarxa sense fil «%s» calen les contrasenyes o les claus " "de xifratge" #: js/ui/components/networkAgent.js:375 js/ui/components/networkAgent.js:748 msgid "Wired 802.1X authentication" msgstr "Autenticació 802.1X per cable" #: js/ui/components/networkAgent.js:378 msgid "Network name" msgstr "Nom de la xarxa" #: js/ui/components/networkAgent.js:386 js/ui/components/networkAgent.js:752 msgid "DSL authentication" msgstr "Autenticació DSL" #: js/ui/components/networkAgent.js:393 js/ui/components/networkAgent.js:757 msgid "PIN code required" msgstr "Cal que introduïu el codi PIN" #: js/ui/components/networkAgent.js:394 js/ui/components/networkAgent.js:758 msgid "PIN code is needed for the mobile broadband device" msgstr "Cal que introduïu el codi PIN del dispositiu de banda ampla mòbil" #: js/ui/components/networkAgent.js:396 msgid "PIN" msgstr "PIN" #: js/ui/components/networkAgent.js:407 js/ui/components/networkAgent.js:749 #: js/ui/components/networkAgent.js:753 js/ui/components/networkAgent.js:765 #: js/ui/components/networkAgent.js:769 #, javascript-format msgid "A password is required to connect to “%s”" msgstr "Cal introduir una contrasenya per a connectar-vos a «%s»" #: js/ui/components/networkAgent.js:768 msgid "VPN password" msgstr "Contrasenya VPN" #: js/ui/components/polkitAgent.js:44 msgid "Authentication Required" msgstr "Cal autenticació" #: js/ui/components/polkitAgent.js:84 msgid "Administrator" msgstr "Administrador" #: js/ui/components/polkitAgent.js:149 msgid "Authenticate" msgstr "Autentica" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:263 js/ui/shellMountOperation.js:415 msgid "Sorry, that didn’t work. Please try again." msgstr "No ha funcionat. Torneu-ho a provar." #: js/ui/ctrlAltTab.js:23 js/ui/overviewControls.js:404 msgid "Windows" msgstr "Finestres" #: js/ui/dash.js:204 js/ui/dash.js:250 msgid "Show Apps" msgstr "Mostra les aplicacions" #. Translators: this is the name of the dock/favorites area on #. the bottom of the overview #: js/ui/dash.js:408 msgid "Dash" msgstr "Quadre d'aplicacions" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:99 msgid "%B %-d %Y" msgstr "%-d %B de %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:106 msgid "%A %B %e %Y" msgstr "%A, %-e %B de %Y" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:172 msgctxt "calendar heading" msgid "%B %-d" msgstr "%-d %B" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:175 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%-d %B de %Y" #: js/ui/dateMenu.js:181 msgid "Today" msgstr "Avui" #: js/ui/dateMenu.js:185 msgid "Tomorrow" msgstr "Demà" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:216 msgctxt "event list time" msgid "All Day" msgstr "Tot el dia" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:238 msgid "%m/%d" msgstr "%d/%m" #: js/ui/dateMenu.js:289 msgid "No Events" msgstr "Cap cita" #: js/ui/dateMenu.js:411 msgid "Add World Clocks…" msgstr "Afegeix rellotges del món…" #: js/ui/dateMenu.js:412 msgid "World Clocks" msgstr "Rellotges del món" #: js/ui/dateMenu.js:702 msgid "Loading…" msgstr "S'està carregant…" #: js/ui/dateMenu.js:712 msgid "Go Online for Weather Information" msgstr "Ves en línia per a informació sobre el temps" #: js/ui/dateMenu.js:714 msgid "Weather Information Unavailable" msgstr "La informació sobre el temps no està disponible" #: js/ui/dateMenu.js:724 msgid "Weather" msgstr "El temps" #: js/ui/dateMenu.js:726 msgid "Select Weather Location…" msgstr "Trieu una ubicació pel temps…" #: js/ui/endSessionDialog.js:47 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "Tanca la sessió %s" #: js/ui/endSessionDialog.js:48 msgctxt "title" msgid "Log Out" msgstr "Tanca la sessió" #: js/ui/endSessionDialog.js:51 #, javascript-format msgid "%s will be logged out automatically in %d second" msgid_plural "%s will be logged out automatically in %d seconds" msgstr[0] "%s tancarà la sessió automàticament d'aquí %d segon" msgstr[1] "%s tancarà la sessió automàticament d'aquí %d segons" #: js/ui/endSessionDialog.js:57 #, javascript-format msgid "You will be logged out automatically in %d second" msgid_plural "You will be logged out automatically in %d seconds" msgstr[0] "Es tancarà la sessió automàticament d'aquí %d segon" msgstr[1] "Es tancarà la sessió automàticament d'aquí %d segons" #: js/ui/endSessionDialog.js:64 msgctxt "button" msgid "Log Out" msgstr "Tanca la sessió" #: js/ui/endSessionDialog.js:70 js/ui/status/system.js:174 msgctxt "title" msgid "Power Off" msgstr "Apagada" #: js/ui/endSessionDialog.js:71 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Instal·la les actualitzacions i apaga" #: js/ui/endSessionDialog.js:74 #, javascript-format msgid "The system will power off automatically in %d second" msgid_plural "The system will power off automatically in %d seconds" msgstr[0] "S'apagarà l'ordinador automàticament d'aquí %d segon" msgstr[1] "S'apagarà l'ordinador automàticament d'aquí %d segons" #: js/ui/endSessionDialog.js:78 js/ui/endSessionDialog.js:97 msgctxt "checkbox" msgid "Install pending software updates" msgstr "Instal·la les actualitzacions pendents" #: js/ui/endSessionDialog.js:82 msgctxt "button" msgid "Power Off" msgstr "Apaga" #: js/ui/endSessionDialog.js:89 msgctxt "title" msgid "Restart" msgstr "Reinici" #: js/ui/endSessionDialog.js:90 msgctxt "title" msgid "Install Updates & Restart" msgstr "Instal·la les actualitzacions i reinicia" #: js/ui/endSessionDialog.js:93 #, javascript-format msgid "The system will restart automatically in %d second" msgid_plural "The system will restart automatically in %d seconds" msgstr[0] "Es reiniciarà l'ordinador automàticament d'aquí %d segon" msgstr[1] "Es reiniciarà l'ordinador automàticament d'aquí %d segons" #: js/ui/endSessionDialog.js:101 msgctxt "button" msgid "Restart" msgstr "Reinicia" #: js/ui/endSessionDialog.js:109 msgctxt "title" msgid "Restart & Install Updates" msgstr "Reinicia i instal·la les actualitzacions" #: js/ui/endSessionDialog.js:112 #, javascript-format msgid "The system will automatically restart and install updates in %d second" msgid_plural "" "The system will automatically restart and install updates in %d seconds" msgstr[0] "" "Es reiniciarà l'ordinador automàticament i s'instal·laran les " "actualitzacions d'aquí %d segon" msgstr[1] "" "Es reiniciarà l'ordinador automàticament i s'instal·laran les " "actualitzacions d'aquí %d segons" #: js/ui/endSessionDialog.js:119 js/ui/endSessionDialog.js:140 msgctxt "button" msgid "Restart & Install" msgstr "Reinicia i instal·la" #: js/ui/endSessionDialog.js:121 msgctxt "button" msgid "Install & Power Off" msgstr "Instal·la i apaga" #: js/ui/endSessionDialog.js:122 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Apaga després d'instal·lar les actualitzacions" #: js/ui/endSessionDialog.js:129 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "Reinicia i instal·la l'actualització" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:134 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "%s %s s'instal·larà després del reinici. Una actualització de la " "instal·lació pot trigar força temps. Assegureu-vos que heu fet còpia de " "seguretat i que l'ordinador està connectat al corrent." #: js/ui/endSessionDialog.js:283 msgid "Low battery power: please plug in before installing updates" msgstr "" "Hi ha poca bateria. Connecteu l'ordinador a la xarxa elèctrica abans " "d'instal·lar les actualitzacions" #: js/ui/endSessionDialog.js:292 msgid "Some applications are busy or have unsaved work" msgstr "" "Hi ha algunes aplicacions que estan ocupades o que tenen documents sense " "desar" #: js/ui/endSessionDialog.js:297 msgid "Other users are logged in" msgstr "Altres usuaris tenen la sessió oberta" #: js/ui/endSessionDialog.js:467 msgctxt "button" msgid "Boot Options" msgstr "Opcions d'arrencada" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:672 #, javascript-format msgid "%s (remote)" msgstr "%s (remot)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:675 #, javascript-format msgid "%s (console)" msgstr "%s (consola)" #: js/ui/extensionDownloader.js:280 msgid "Install" msgstr "Instal·la" #: js/ui/extensionDownloader.js:286 msgid "Install Extension" msgstr "Instal·la l'extensió" #: js/ui/extensionDownloader.js:287 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "Voleu baixar i instal·lar «%s» d'extensions.gnome.org?" #: js/ui/extensionSystem.js:352 msgid "Extension Updates Available" msgstr "Hi ha actualitzacions d'extensions disponibles" #: js/ui/extensionSystem.js:353 msgid "Extension updates are ready to be installed" msgstr "" "Les actualitzacions de les extensions estan preparades per a ser instal·lades" #: js/ui/inhibitShortcutsDialog.js:70 msgid "Allow inhibiting shortcuts" msgstr "Permet inhabilitar les dreceres" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:73 #, javascript-format msgid "The app %s wants to inhibit shortcuts" msgstr "L'aplicació %s vol inhabilitar les dreceres" #: js/ui/inhibitShortcutsDialog.js:74 msgid "An app wants to inhibit shortcuts" msgstr "Una aplicació vol inhabilitar les dreceres" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:81 #, javascript-format msgid "You can restore shortcuts by pressing %s" msgstr "Podeu restaurar les dreceres si premeu %s" #: js/ui/kbdA11yDialog.js:34 msgid "Slow Keys Turned On" msgstr "Tecles lentes actives" #: js/ui/kbdA11yDialog.js:35 msgid "Slow Keys Turned Off" msgstr "Tecles lentes inactives" #: js/ui/kbdA11yDialog.js:36 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "Heu mantingut premuda la tecla de majúscules durant 8 segons. Aquesta és la " "drecera per a la funcionalitat «tecles lentes», que afecta la forma de " "funcionar del teclat." #: js/ui/kbdA11yDialog.js:42 msgid "Sticky Keys Turned On" msgstr "Tecles enganxoses actives" #: js/ui/kbdA11yDialog.js:43 msgid "Sticky Keys Turned Off" msgstr "Tecles enganxoses inactives" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "Heu premut la tecla de majúscules 5 cops seguides. Aquesta és la drecera per " "la funcionalitat de les tecles enganxoses, que afecta la manera en què " "funciona el teclat." #: js/ui/kbdA11yDialog.js:47 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" "Heu premut dues tecles juntes, o la tecla de majúscules 5 cops seguides. " "Això desactiva la funcionalitat de les tecles enganxoses, que afecta la " "manera en què funciona el teclat." #: js/ui/kbdA11yDialog.js:57 msgid "Leave On" msgstr "Deixa-ho actiu" #: js/ui/kbdA11yDialog.js:57 msgid "Turn On" msgstr "Activa" #: js/ui/kbdA11yDialog.js:67 js/ui/status/network.js:455 msgid "Turn Off" msgstr "Desactiva" #: js/ui/kbdA11yDialog.js:67 msgid "Leave Off" msgstr "Deixa-ho desactivat" #: js/ui/keyboard.js:180 js/ui/status/keyboard.js:897 msgid "Keyboard Settings" msgstr "Paràmetres del teclat" #: js/ui/lookingGlass.js:727 msgid "No extensions installed" msgstr "No hi ha cap extensió instal·lada" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:788 #, javascript-format msgid "%s has not emitted any errors" msgstr "%s no ha emès cap error" #: js/ui/lookingGlass.js:794 msgid "Hide Errors" msgstr "Amaga els errors" #: js/ui/lookingGlass.js:798 js/ui/lookingGlass.js:875 msgid "Show Errors" msgstr "Mostra els errors" #: js/ui/lookingGlass.js:807 msgid "Active" msgstr "Actiu" #: js/ui/lookingGlass.js:810 msgid "Inactive" msgstr "Inactiu" #: js/ui/lookingGlass.js:812 msgid "Error" msgstr "Error" #: js/ui/lookingGlass.js:814 msgid "Out of date" msgstr "Obsolet" #: js/ui/lookingGlass.js:816 msgid "Downloading" msgstr "S'està baixant" #: js/ui/lookingGlass.js:818 msgid "Deactivating" msgstr "S'està desactivant" #: js/ui/lookingGlass.js:820 msgid "Activating" msgstr "S'està activant" #: js/ui/lookingGlass.js:853 msgid "View Source" msgstr "Mostra el codi font" #: js/ui/lookingGlass.js:864 msgid "Web Page" msgstr "Pàgina web" #: js/ui/main.js:277 msgid "System was put in unsafe mode" msgstr "El sistema s'ha posat en mode insegur" #: js/ui/main.js:278 msgid "Apps now have unrestricted access" msgstr "Ara les aplicacions tenen accés sense restriccions" #: js/ui/main.js:338 msgid "Logged in as a privileged user" msgstr "Sessió iniciada com a usuari privilegiat" #: js/ui/main.js:339 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" "Cal evitar iniciar sessions com a usuari privilegiat per raons de seguretat. " "Si és possible, entreu com a un usuari normal." #: js/ui/main.js:387 msgid "Screen Lock disabled" msgstr "La pantalla de bloqueig està inhabilitada" #: js/ui/main.js:388 msgid "Screen Locking requires the GNOME display manager" msgstr "El bloqueig de pantalla requereix el gestor de pantalla del GNOME" #. Translators: this is the string displayed in the header when a message #. source doesn't have a name #: js/ui/messageList.js:374 msgid "Unknown App" msgstr "App desconeguda" #: js/ui/messageTray.js:326 js/ui/messageTray.js:328 msgid "Notification sound" msgstr "So de notificació" #: js/ui/mpris.js:198 msgid "Unknown artist" msgstr "Artista desconegut" #: js/ui/mpris.js:208 msgid "Unknown title" msgstr "Títol desconegut" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:328 msgid "Type to search" msgstr "Teclegeu per a cercar" #: js/ui/overviewControls.js:392 msgid "Apps" msgstr "Aplicacions" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:33 msgid "Overview" msgstr "Vista general" #: js/ui/padOsd.js:98 msgid "New shortcut…" msgstr "Drecera de teclat nova…" #: js/ui/padOsd.js:151 msgid "App defined" msgstr "Definit per l'aplicació" #: js/ui/padOsd.js:152 msgid "Show on-screen help" msgstr "Mostra l'ajuda en pantalla" #: js/ui/padOsd.js:153 msgid "Switch monitor" msgstr "Commuta el monitor" #: js/ui/padOsd.js:154 msgid "Assign keystroke" msgstr "Assigna la pulsació de tecla" #: js/ui/padOsd.js:223 msgid "Done" msgstr "Fet" #: js/ui/padOsd.js:726 msgid "Edit…" msgstr "Edita…" #: js/ui/padOsd.js:773 msgid "None" msgstr "Cap" #: js/ui/padOsd.js:844 msgid "Press a button to configure" msgstr "Premeu un botó per a configurar" #: js/ui/padOsd.js:845 msgid "Press Esc to exit" msgstr "Premeu Esc per a sortir" #: js/ui/padOsd.js:848 msgid "Press any key to exit" msgstr "Premeu qualsevol tecla per a sortir" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:423 msgid "Activities" msgstr "Activitats" #: js/ui/panel.js:504 msgctxt "System menu in the top bar" msgid "System" msgstr "Sistema" #: js/ui/panel.js:678 msgid "Top Bar" msgstr "Barra superior" #: js/ui/quickSettings.js:188 msgid "Open menu" msgstr "Obre el menú" #: js/ui/runDialog.js:61 msgid "Run a Command" msgstr "Executa una ordre" #: js/ui/runDialog.js:76 msgid "Press ESC to close" msgstr "Premeu Esc per a tancar" #: js/ui/runDialog.js:241 msgid "Restart is not available on Wayland" msgstr "El reinici no està disponible en Wayland" #: js/ui/runDialog.js:246 msgid "Restarting…" msgstr "S'està reiniciant…" #: js/ui/screenShield.js:233 msgid "GNOME needs to lock the screen" msgstr "El GNOME necessita bloquejar la pantalla" #: js/ui/screenShield.js:274 js/ui/screenShield.js:667 msgid "Unable to lock" msgstr "No es pot bloquejar" #: js/ui/screenShield.js:275 js/ui/screenShield.js:668 msgid "Lock was blocked by an app" msgstr "Una aplicació ha bloquejat el bloqueig" #: js/ui/screenshot.js:1252 msgid "Selection" msgstr "Selecció" #: js/ui/screenshot.js:1262 msgid "Area Selection" msgstr "Selecció d'àrea" #: js/ui/screenshot.js:1267 msgid "Screen" msgstr "Pantalla" #: js/ui/screenshot.js:1277 msgid "Screen Selection" msgstr "Selecció de pantalla" #: js/ui/screenshot.js:1282 msgid "Window" msgstr "Finestra" #: js/ui/screenshot.js:1292 msgid "Window Selection" msgstr "Selecció de finestra" #. Translators: entry in the window right click menu. #: js/ui/screenshot.js:1317 js/ui/status/system.js:111 js/ui/windowMenu.js:28 msgid "Take Screenshot" msgstr "Fes una captura de pantalla" #: js/ui/screenshot.js:1333 msgid "Record Screen" msgstr "Enregistra la pantalla" #. Translators: since this string refers to an action, #. it needs to be phrased as a verb. #: js/ui/screenshot.js:1350 msgid "Capture" msgstr "Captura" #: js/ui/screenshot.js:1372 msgid "Show Pointer" msgstr "Mostra el punter" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1996 msgid "Screencasts" msgstr "Enregistraments de pantalla" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast From 07-17-2013 10:00:46 PM" #: js/ui/screenshot.js:2001 #, no-c-format msgid "Screencast From %d %t" msgstr "Enregistrament de pantalla a %d %t" #. Translators: notification title. #: js/ui/screenshot.js:2047 msgid "Screencast recorded" msgstr "Enregistrament de pantalla completat" #. Translators: notification title. #: js/ui/screenshot.js:2060 msgid "Screencast failed to start" msgstr "No s'ha pogut iniciar la captura de pantalla" #. Translators: notification title. #: js/ui/screenshot.js:2066 msgid "Screencast ended: Out of disk space" msgstr "S'ha finalitzat la captura de pantalla: no hi ha espai al disc" #. We can encourage user to try again on service crashes since the #. recorder will auto-blocklist the pipeline that crashed. #. Translators: notification title. #: js/ui/screenshot.js:2072 msgid "Screencast ended unexpectedly, please try again" msgstr "" "La captura de pantalla ha acabat de manera inesperada. Torneu-ho a provar" #. Translators: notification title. #: js/ui/screenshot.js:2075 msgid "Screencast ended unexpectedly" msgstr "L'enregistrament de pantalla ha acabat inesperadament" #. Translators: notification source name. #: js/ui/screenshot.js:2085 js/ui/screenshot.js:2327 msgid "Screenshot" msgstr "Captura de pantalla" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:2092 msgid "Click here to view the video." msgstr "Cliqueu aquí per a veure el vídeo." #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:2100 js/ui/screenshot.js:2343 msgid "Show in Files" msgstr "Mostra-ho al Fitxers" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2287 #, javascript-format msgid "Screenshot From %s" msgstr "Captura de pantalla de %s" #. Translators: notification title. #: js/ui/screenshot.js:2333 msgid "Screenshot captured" msgstr "Captura de pantalla realitzada" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2335 msgid "You can paste the image from the clipboard." msgstr "Podeu enganxar la imatge des del porta-retalls." #: js/ui/screenshot.js:2391 js/ui/screenshot.js:2555 msgid "Screenshot taken" msgstr "S'ha fet una captura de pantalla" #: js/ui/search.js:829 msgid "Searching…" msgstr "S'està cercant…" #: js/ui/search.js:831 msgid "No results" msgstr "No s'ha trobat cap resultat" #: js/ui/search.js:962 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "%d més" msgstr[1] "%d més" #: js/ui/searchController.js:87 #: subprojects/extensions-app/data/ui/extensions-window.ui:73 msgid "Search" msgstr "Cerca" #: js/ui/shellEntry.js:21 msgid "Copy" msgstr "Copia" #: js/ui/shellEntry.js:26 msgid "Paste" msgstr "Enganxa" #: js/ui/shellEntry.js:78 msgid "Show Text" msgstr "Mostra el text" #: js/ui/shellEntry.js:80 msgid "Hide Text" msgstr "Oculta el text" #: js/ui/shellEntry.js:174 msgid "Caps lock is on" msgstr "Bloq Maj està activat" #: js/ui/shellMountOperation.js:286 msgid "Hidden Volume" msgstr "Volum ocult" #: js/ui/shellMountOperation.js:289 msgid "Windows System Volume" msgstr "Volum del sistema del Windows" #: js/ui/shellMountOperation.js:292 msgid "Uses Keyfiles" msgstr "Usa fitxers de claus" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:300 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead" msgstr "" "Per a desbloquejar un volum que usa fitxers de claus, useu l'eina %s" #: js/ui/shellMountOperation.js:304 msgid "" "You need an external utility like Disks to unlock a volume that uses " "keyfiles" msgstr "" "Necessiteu una utilitat externa com Discs per a desbloquejar un volum " "que utilitza fitxers de claus" #: js/ui/shellMountOperation.js:312 msgid "PIM Number" msgstr "Número PIM" #: js/ui/shellMountOperation.js:371 msgid "Remember Password" msgstr "Recorda la contrasenya" #: js/ui/shellMountOperation.js:386 msgid "Unlock" msgstr "Desbloqueja" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:400 #, javascript-format msgid "Open %s" msgstr "Obre %s" #: js/ui/shellMountOperation.js:436 msgid "The PIM must be a number or empty" msgstr "El PIM ha de ser un nombre o estar buit" #: js/ui/status/accessibility.js:34 msgid "Accessibility" msgstr "Accessibilitat" #: js/ui/status/accessibility.js:44 msgid "High Contrast" msgstr "Alt contrast" #: js/ui/status/accessibility.js:47 msgid "Zoom" msgstr "Amplia" #: js/ui/status/accessibility.js:54 msgid "Screen Reader" msgstr "Lector de pantalla" #: js/ui/status/accessibility.js:58 msgid "Screen Keyboard" msgstr "Teclat en pantalla" #: js/ui/status/accessibility.js:62 msgid "Visual Alerts" msgstr "Avisos visuals" #: js/ui/status/accessibility.js:66 msgid "Sticky Keys" msgstr "Tecles enganxoses" #: js/ui/status/accessibility.js:70 msgid "Slow Keys" msgstr "Tecles lentes" #: js/ui/status/accessibility.js:74 msgid "Bounce Keys" msgstr "Tecles de salt" #: js/ui/status/accessibility.js:78 msgid "Mouse Keys" msgstr "Tecles del ratolí" #: js/ui/status/accessibility.js:83 msgid "Accessibility Settings" msgstr "Paràmetres d'accessibilitat" #: js/ui/status/accessibility.js:140 msgid "Large Text" msgstr "Text gran" #: js/ui/status/autoRotate.js:14 msgid "Auto Rotate" msgstr "Gira automàticament" #: js/ui/status/backgroundApps.js:156 msgctxt "title" msgid "Background Apps" msgstr "Aplicacions en segon pla" #: js/ui/status/backgroundApps.js:171 msgid "Apps known to be running without a window" msgstr "Aplicacions conegudes que s'estan executant sense una finestra" #: js/ui/status/backgroundApps.js:182 msgid "App Settings" msgstr "Paràmetres d'aplicació" #: js/ui/status/backgroundApps.js:239 msgid "No Background Apps" msgstr "No hi ha cap aplicació en segon pla" #: js/ui/status/backgroundApps.js:241 #, javascript-format msgid "%d Background App" msgid_plural "%d Background Apps" msgstr[0] "Aplicació en segon pla" msgstr[1] "%d aplicacions en segon pla" #: js/ui/status/backlight.js:39 msgid "Keyboard Brightness" msgstr "Brillantor del teclat" #: js/ui/status/backlight.js:79 msgid "Off" msgstr "Desactivat" #: js/ui/status/backlight.js:80 msgid "Low" msgstr "Baixa" #: js/ui/status/backlight.js:81 msgid "High" msgstr "Alta" #: js/ui/status/backlight.js:147 js/ui/status/keyboard.js:879 msgid "Keyboard" msgstr "Teclat" #: js/ui/status/bluetooth.js:245 js/ui/status/network.js:360 msgid "Disconnect" msgstr "Desconnecta" #: js/ui/status/bluetooth.js:262 js/ui/status/bluetooth.js:264 msgid "Bluetooth" msgstr "Bluetooth" #: js/ui/status/bluetooth.js:287 js/ui/status/network.js:1900 msgid "Bluetooth Settings" msgstr "Paràmetres del Bluetooth" #: js/ui/status/bluetooth.js:334 msgid "No available or connected devices" msgstr "No hi ha cap dispositiu disponible o connectat" #: js/ui/status/bluetooth.js:335 msgid "Turn on Bluetooth to connect to devices" msgstr "Activa el Bluetooth per a connectar-se als dispositius" #. Translators: This is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:389 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d connectat" msgstr[1] "%d connectats" #: js/ui/status/brightness.js:32 msgid "Brightness" msgstr "Brillantor" #: js/ui/status/darkMode.js:12 msgid "Dark Style" msgstr "Estil fosc" #: js/ui/status/dwellClick.js:15 msgid "Single Click" msgstr "Un sol clic" #: js/ui/status/dwellClick.js:20 msgid "Double Click" msgstr "Doble clic" #: js/ui/status/dwellClick.js:25 msgid "Drag" msgstr "Arrossega" #: js/ui/status/dwellClick.js:30 msgid "Secondary Click" msgstr "Clic secundari" #: js/ui/status/dwellClick.js:39 msgid "Dwell Click" msgstr "Clic en passar per sobre" #: js/ui/status/keyboard.js:896 msgid "Show Keyboard Layout" msgstr "Mostra la disposició del teclat" #: js/ui/status/location.js:337 msgid "Allow location access" msgstr "Permet accés a la ubicació" #. Translators: %s is an application name #: js/ui/status/location.js:339 #, javascript-format msgid "The app %s wants to access your location" msgstr "L'aplicació %s vol accedir a la vostra ubicació" #: js/ui/status/location.js:349 msgid "Location access can be changed at any time from the privacy settings" msgstr "" "Podeu canviar la configuració de l'accés a la ubicació sempre que vulgueu " "des de la configuració de la privacitat" #: js/ui/status/location.js:357 msgid "Deny Access" msgstr "Denega l'accés" #: js/ui/status/location.js:362 msgid "Grant Access" msgstr "Permet l'accés" #: js/ui/status/network.js:62 msgid "" msgstr "" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:354 #, javascript-format msgid "Disconnect %s" msgstr "Desconnecta %s" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:356 #, javascript-format msgid "Connect to %s" msgstr "Connecta a %s" #: js/ui/status/network.js:1050 msgid "Secure" msgstr "Segur" #: js/ui/status/network.js:1050 msgid "Not secure" msgstr "No és segur" #: js/ui/status/network.js:1051 #, javascript-format msgid "Signal strength %s%%" msgstr "Força del senyal %s%%" #. translators: The first placeholder is the network name, the second and indication whether it is secure, and the last the signal strength indication #: js/ui/status/network.js:1053 #, javascript-format msgid "%s, %s, %s" msgstr "%s, %s, %s" #. Translators: %s is a network identifier #: js/ui/status/network.js:1155 #, javascript-format msgid "%s Hotspot" msgstr "Punt d'accés %s" #: js/ui/status/network.js:1426 #, javascript-format msgid "%d connected" msgid_plural "%d connected" msgstr[0] "%d connectat" msgstr[1] "%d connectats" #: js/ui/status/network.js:1524 js/ui/status/network.js:1540 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1525 msgid "VPN Settings" msgstr "Paràmetres de la VPN" #: js/ui/status/network.js:1785 msgid "Wi–Fi" msgstr "Wi-Fi" #: js/ui/status/network.js:1787 msgid "All Networks" msgstr "Totes les xarxes" #: js/ui/status/network.js:1884 msgid "Wired Connections" msgstr "Connexions per cable" #: js/ui/status/network.js:1885 msgid "Wired Settings" msgstr "Paràmetres del cable" #: js/ui/status/network.js:1899 msgid "Bluetooth Tethers" msgstr "Bluetooth Tethers" #. Translators: "Tether" from "Bluetooth Tether" #: js/ui/status/network.js:1906 msgid "Tether" msgstr "Tether" #: js/ui/status/network.js:1919 msgid "Mobile Connections" msgstr "Connexions mòbils" #: js/ui/status/network.js:1921 msgid "Mobile Broadband Settings" msgstr "Paràmetres de la banda ampla mòbil" #. Translators: "Mobile" from "Mobile Broadband" #: js/ui/status/network.js:1930 msgid "Mobile" msgstr "Mòbil" #: js/ui/status/network.js:1964 msgid "Sign Into Wi–Fi Network" msgstr "Inicia la sessió a la xarxa Wi-Fi" #: js/ui/status/network.js:2151 msgid "Connection failed" msgstr "Ha fallat la connexió" #: js/ui/status/network.js:2152 msgid "Activation of network connection failed" msgstr "Ha fallat l'activació de la connexió de xarxa" #: js/ui/status/nightLight.js:19 msgid "Night Light" msgstr "Llum nocturna" #: js/ui/status/powerProfiles.js:19 msgctxt "Power profile" msgid "Performance" msgstr "Rendiment" #: js/ui/status/powerProfiles.js:24 msgctxt "Power profile" msgid "Balanced" msgstr "Equilibrat" #: js/ui/status/powerProfiles.js:29 msgctxt "Power profile" msgid "Power Saver" msgstr "Estalvi d'energia" #: js/ui/status/powerProfiles.js:39 js/ui/status/powerProfiles.js:69 msgid "Power Mode" msgstr "Mode d'energia" #: js/ui/status/powerProfiles.js:71 msgid "Power Settings" msgstr "Paràmetres de l'energia" #: js/ui/status/remoteAccess.js:74 msgid "Stop Screencast" msgstr "Atura l'enregistrament de pantalla" #: js/ui/status/remoteAccess.js:144 msgid "Stop Screen Sharing" msgstr "Atura la compartició de pantalla" #: js/ui/status/rfkill.js:99 msgid "Airplane Mode" msgstr "Mode d'avió" #: js/ui/status/system.js:168 msgid "Power Off Menu" msgstr "Menú d'apagada" #: js/ui/status/system.js:176 msgid "Suspend" msgstr "Suspèn" #: js/ui/status/system.js:181 msgid "Restart…" msgstr "Reinicia…" #: js/ui/status/system.js:186 msgid "Power Off…" msgstr "Apaga…" #: js/ui/status/system.js:193 #: subprojects/extensions-app/data/ui/extensions-window.ui:124 msgid "Log Out…" msgstr "Tanca la sessió…" #: js/ui/status/system.js:198 msgid "Switch User…" msgstr "Canvia d'usuari…" #: js/ui/status/system.js:242 msgctxt "action" msgid "Lock Screen" msgstr "Bloqueja la pantalla" #: js/ui/status/thunderbolt.js:308 msgid "Unknown Thunderbolt device" msgstr "Dispositiu Thunderbolt desconegut" #: js/ui/status/thunderbolt.js:309 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" "Un nou dispositiu s'ha detectat mentre estàveu absents. Desconnecteu i " "torneu a connectar el dispositiu per a començar a utilitzar-lo." #: js/ui/status/thunderbolt.js:312 msgid "Unauthorized Thunderbolt device" msgstr "Dispositiu Thunderbolt no autoritzat" #: js/ui/status/thunderbolt.js:313 msgid "" "New device has been detected and needs to be authorized by an administrator" msgstr "" "S'ha detectat un dispositiu nou i cal que sigui autoritzat per un " "administrador" #: js/ui/status/thunderbolt.js:319 msgid "Thunderbolt authorization error" msgstr "S'ha produït un error d'autorització a Thunderbolt" #: js/ui/status/thunderbolt.js:320 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "No s'ha pogut autoritzar el dispositiu Thunderbolt: %s" #: js/ui/status/volume.js:218 msgid "Volume changed" msgstr "S'ha canviat el volum" #: js/ui/status/volume.js:231 msgid "Unmute" msgstr "Deixa de silenciar" #: js/ui/status/volume.js:231 msgid "Mute" msgstr "Silencia" #: js/ui/status/volume.js:286 msgid "Volume" msgstr "Volum" #: js/ui/status/volume.js:302 msgid "Sound Output" msgstr "Sortida del so" #: js/ui/status/volume.js:374 msgid "Sound Input" msgstr "Entrada del so" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:20 msgid "Mirror" msgstr "Mirall" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:29 msgid "Join Displays" msgstr "Uneix pantalles" #. Translators: this is for using only external displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:39 msgid "External Only" msgstr "Només extern" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:47 msgid "Built-in Only" msgstr "Només l'integrat" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:378 msgid "%A %B %-d" msgstr "%A %-d %B" #: js/ui/unlockDialog.js:384 msgid "Swipe up to unlock" msgstr "Llisqueu amunt per a desbloquejar" #: js/ui/unlockDialog.js:385 msgid "Click or press a key to unlock" msgstr "Feu clic o premeu una tecla per a desbloquejar" #: js/ui/unlockDialog.js:568 msgid "Unlock Window" msgstr "Desbloqueja la finestra" #: js/ui/unlockDialog.js:577 msgid "Log in as another user" msgstr "Entra amb un altre usuari" #: js/ui/welcomeDialog.js:47 #, javascript-format msgid "GNOME %s" msgstr "GNOME %s" #: js/ui/welcomeDialog.js:51 #, javascript-format msgid "Welcome to %s" msgstr "Us donem la benvinguda a %s" #: js/ui/welcomeDialog.js:52 msgid "If you want to learn your way around, check out the tour" msgstr "Si voleu aprendre com funciona, feu una visita guiada" #: js/ui/welcomeDialog.js:61 msgid "Skip" msgstr "Omet" #: js/ui/welcomeDialog.js:66 msgid "Take Tour" msgstr "Visita guiada" #: js/ui/windowAttentionHandler.js:18 #, javascript-format msgid "“%s” is ready" msgstr "«%s» ja està a punt" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:68 msgid "Keep these display settings?" msgstr "Mantenir aquesta configuració de la pantalla?" #: js/ui/windowManager.js:78 msgid "Revert Settings" msgstr "Descarta els canvis" #: js/ui/windowManager.js:83 msgid "Keep Changes" msgstr "Mantén els canvis" #: js/ui/windowManager.js:103 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "Es descartaran els canvis d'aquí %d segon" msgstr[1] "Es descartaran els canvis d'aquí %d segons" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:500 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:40 msgid "Hide" msgstr "Oculta" #: js/ui/windowMenu.js:47 msgid "Restore" msgstr "Restaura" #: js/ui/windowMenu.js:51 msgid "Maximize" msgstr "Maximitza" #: js/ui/windowMenu.js:58 msgid "Move" msgstr "Mou" #: js/ui/windowMenu.js:78 msgid "Resize" msgstr "Canvia la mida" #: js/ui/windowMenu.js:98 msgid "Always on Top" msgstr "Sempre per damunt" #: js/ui/windowMenu.js:117 msgid "Always on Visible Workspace" msgstr "Sempre a l'espai de treball visible" #: js/ui/windowMenu.js:131 msgid "Move to Workspace Left" msgstr "Mou a l'espai de treball esquerre" #: js/ui/windowMenu.js:137 msgid "Move to Workspace Right" msgstr "Mou a l'espai de treball dret" #: js/ui/windowMenu.js:143 msgid "Move to Workspace Up" msgstr "Mou a l'espai de treball superior" #: js/ui/windowMenu.js:149 msgid "Move to Workspace Down" msgstr "Mou a l'espai de treball inferior" #: js/ui/windowMenu.js:167 msgid "Move to Monitor Up" msgstr "Mou a la pantalla de dalt" #: js/ui/windowMenu.js:176 msgid "Move to Monitor Down" msgstr "Mou a la pantalla de baix" #: js/ui/windowMenu.js:185 msgid "Move to Monitor Left" msgstr "Mou a la pantalla de l'esquerra" #: js/ui/windowMenu.js:194 msgid "Move to Monitor Right" msgstr "Mou a la pantalla de la dreta" #: js/ui/windowMenu.js:202 msgid "Close" msgstr "Tanca" #: src/main.c:527 subprojects/extensions-tool/src/main.c:336 msgid "Print version" msgstr "Mostra la versió" #: src/main.c:533 msgid "Mode used by GDM for login screen" msgstr "El mode que utilitzarà el GDM per a la pantalla d'entrada" #: src/main.c:539 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "Utilitza un mode específic, p. ex. «gdm» per la pantalla d'entrada" #: src/main.c:545 msgid "List possible modes" msgstr "Llista els modes possibles" #: src/main.c:551 msgid "Force animations to be enabled" msgstr "Força que les animacions estiguin habilitades" #: src/shell-app.c:252 msgctxt "program" msgid "Unknown" msgstr "Desconegut" #: src/shell-app.c:503 #, c-format msgid "Failed to launch “%s”" msgstr "No s'ha pogut iniciar «%s»" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match" msgstr "Les contrasenyes no coincideixen" #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "La contrasenya no pot ser buida" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "L'usuari ha descartat el diàleg d'autenticació" #: src/st/st-icon-theme.c:1865 #, c-format msgid "Icon '%s' not present in theme %s" msgstr "La icona «%s» no està present al tema %s" #: src/st/st-icon-theme.c:3454 src/st/st-icon-theme.c:3757 msgid "Failed to load icon" msgstr "No s'ha pogut carregar la icona" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 msgid "Manage your GNOME Extensions" msgstr "Gestioneu les extensions del GNOME Shell" #. developer_name tag deprecated with Appstream 1.0 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:19 msgid "The GNOME Project" msgstr "El projecte GNOME" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:51 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" "Les extensions del GNOME gestiona les actualitzacions de les extensions, " "configurant les preferències de l'extensió i suprimint o desactivant les " "extensions no desitjades." #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:64 msgid "Main Window" msgstr "Finestra principal" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:68 msgid "Available Updates" msgstr "Actualitzacions disponibles" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:72 msgid "Search View" msgstr "Vista de cerca" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "Configureu les extensions del GNOME Shell" #: subprojects/extensions-app/js/extensionManager.js:237 #, javascript-format msgid "" "The installed version of this extension (%s) is incompatible with the " "current version of GNOME (%s). The extension has been disabled." msgstr "" "La versió instal·lada d'aquesta extensió (%s) és incompatible amb la versió " "actual del GNOME (%s). S'ha desactivat l'extensió." #: subprojects/extensions-app/js/extensionManager.js:238 #, javascript-format msgid "" "The installed version of this extension is incompatible with the current " "version of GNOME (%s). The extension has been disabled." msgstr "" "La versió instal·lada d'aquesta extensió és incompatible amb la versió " "actual del GNOME (%s). S'ha desactivat l'extensió." #: subprojects/extensions-app/js/extensionManager.js:242 msgid "" "An error has occurred in this extension. This could cause issues elsewhere " "in the system. It is recommended to turn the extension off until the error " "is resolved." msgstr "" "S'ha produït un error en aquesta extensió. Això podria causar problemes en " "altres parts del sistema. Es recomana apagar l'extensió fins que es resolgui " "l'error." #. translators: Details for an extension error #: subprojects/extensions-app/js/extensionManager.js:248 msgid "Error details:" msgstr "Detalls de l'error:" #: subprojects/extensions-app/js/extensionRow.js:82 #, javascript-format msgid "Version %s" msgstr "Versió %s" #: subprojects/extensions-app/js/extensionsWindow.js:113 #, javascript-format msgid "Remove “%s”?" msgstr "Voleu suprimir «%s»?" #: subprojects/extensions-app/js/extensionsWindow.js:114 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "" "Si suprimiu una extensió, us cal tornar-la a baixar si voleu habilitar-la de " "nou" #: subprojects/extensions-app/js/extensionsWindow.js:117 msgid "_Cancel" msgstr "_Cancel·la" #: subprojects/extensions-app/js/extensionsWindow.js:118 msgid "_Remove" msgstr "_Suprimeix" #: subprojects/extensions-app/js/extensionsWindow.js:158 msgid "translator-credits" msgstr "" "siegfried-Angel Gevatter Pujals \n" "Jordi Serratosa \n" "Gil Forcada \n" "Jordi Mas i Hernàndez \n" "Miquel-Àngel Burgos i Fradeja " #: subprojects/extensions-app/js/extensionsWindow.js:203 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "%d extensió serà actualitzada la següent vegada que entreu." msgstr[1] "%d extensions seran actualitzades la següent vegada que entreu." #: subprojects/extensions-app/data/ui/extension-row.ui:22 msgid "Error Details" msgstr "Detalls de l'error" #: subprojects/extensions-app/data/ui/extension-row.ui:62 msgid "Updates Details" msgstr "Detalls de l'actualització" #: subprojects/extensions-app/data/ui/extension-row.ui:72 msgid "" "A new version of this extension is ready and will be loaded on next login." msgstr "" "Una nova versió d'aquesta extensió està llesta i es carregarà en el següent " "inici de sessió." #: subprojects/extensions-app/data/ui/extension-row.ui:104 msgid "Extension Details" msgstr "Detalls de l'extensió" #: subprojects/extensions-app/data/ui/extension-row.ui:192 msgid "_Website" msgstr "Lloc _web" #: subprojects/extensions-app/data/ui/extension-row.ui:219 msgid "_Settings" msgstr "_Paràmetres" #: subprojects/extensions-app/data/ui/extension-row.ui:246 msgid "_Remove…" msgstr "_Suprimeix…" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Keyboard Shortcuts" msgstr "Dreceres de teclat" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "Quant a les extensions" #: subprojects/extensions-app/data/ui/extensions-window.ui:64 msgid "Main Menu" msgstr "Menú principal" #: subprojects/extensions-app/data/ui/extensions-window.ui:106 msgid "Search extensions" msgstr "Cerca extensions" #: subprojects/extensions-app/data/ui/extensions-window.ui:134 msgid "_Extensions" msgstr "_Extensions" #: subprojects/extensions-app/data/ui/extensions-window.ui:139 msgid "More Information" msgstr "Més informació" #: subprojects/extensions-app/data/ui/extensions-window.ui:151 msgid "" "Extensions can cause performance and stability issues. It is recommended to " "disable all extensions if you experience problems with your system." msgstr "" "Les extensions poden causar problemes de rendiment i estabilitat. Es " "recomana inhabilitar les extensions si teniu problemes amb el vostre sistema." #: subprojects/extensions-app/data/ui/extensions-window.ui:178 msgid "User Extensions" msgstr "Extensions d'usuari" #: subprojects/extensions-app/data/ui/extensions-window.ui:198 msgid "System Extensions" msgstr "Extensions del sistema" #: subprojects/extensions-app/data/ui/extensions-window.ui:233 msgid "Search Results" msgstr "Resultats de la cerca" #: subprojects/extensions-app/data/ui/extensions-window.ui:252 msgid "No Results Found" msgstr "No s'ha trobat cap resultat" #: subprojects/extensions-app/data/ui/extensions-window.ui:253 msgid "Try a different search" msgstr "Proveu una cerca diferent" #: subprojects/extensions-app/data/ui/extensions-window.ui:264 msgid "No Installed Extensions" msgstr "No hi ha cap extensió instal·lada" #: subprojects/extensions-app/data/ui/extensions-window.ui:265 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" "Per a visitar i afegir extensions, visiteu extensions.gnome.org." #: subprojects/extensions-app/data/ui/extensions-window.ui:276 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" "No s'ha pogut obtenir la llista d'extensions instal·lades. Assegureu-vos que " "heu entrat al GNOME i torneu a provar-ho." #: subprojects/extensions-app/data/ui/help-overlay.ui:9 msgctxt "shortcut window" msgid "General" msgstr "General" #: subprojects/extensions-app/data/ui/help-overlay.ui:12 msgctxt "shortcut window" msgid "Open Menu" msgstr "Obre el menú" #: subprojects/extensions-app/data/ui/help-overlay.ui:18 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Commuta la cerca" #: subprojects/extensions-app/data/ui/help-overlay.ui:24 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Mostra les dreceres" #: subprojects/extensions-app/data/ui/help-overlay.ui:30 msgctxt "shortcut window" msgid "Quit" msgstr "Surt" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:284 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "L'extensió nova s'ha creat amb èxit a %s.\n" #: subprojects/extensions-tool/src/command-create.c:376 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" "El nom ha de ser una cadena molt curta (idealment descriptiva).\n" "Per exemple: %s" #: subprojects/extensions-tool/src/command-create.c:382 #: subprojects/extensions-tool/src/main.c:243 msgid "Name" msgstr "Nom" #: subprojects/extensions-tool/src/command-create.c:396 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" "La descripció és una explicació d'una frase de què fa l'extensió.\n" "Per exemple: %s" #: subprojects/extensions-tool/src/command-create.c:402 #: subprojects/extensions-tool/src/main.c:246 msgid "Description" msgstr "Descripció" #: subprojects/extensions-tool/src/command-create.c:416 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" "L'UUID és un identificador únic global per l'extensió\n" "Ha de tenir el format d'una adreça de correu (exemple@softcatala.org)\n" #: subprojects/extensions-tool/src/command-create.c:443 msgid "Choose one of the available templates:\n" msgstr "Trieu una de les plantilles disponibles:\n" #: subprojects/extensions-tool/src/command-create.c:457 msgid "Template" msgstr "Plantilla" #: subprojects/extensions-tool/src/command-create.c:515 msgid "The unique identifier of the new extension" msgstr "L'identificador únic de l'extensió nova" #: subprojects/extensions-tool/src/command-create.c:518 msgid "NAME" msgstr "NOM" #: subprojects/extensions-tool/src/command-create.c:519 msgid "The user-visible name of the new extension" msgstr "El nom visible a l'usuari de l'extensió nova" #: subprojects/extensions-tool/src/command-create.c:521 msgid "DESCRIPTION" msgstr "DESCRIPCIÓ" #: subprojects/extensions-tool/src/command-create.c:523 msgid "A short description of what the extension does" msgstr "Una descripció curta del que fa l'extensió" #: subprojects/extensions-tool/src/command-create.c:525 #: subprojects/extensions-tool/src/command-pack.c:455 msgid "DOMAIN" msgstr "DOMINI" #: subprojects/extensions-tool/src/command-create.c:527 msgid "The gettext domain used by the extension" msgstr "El domini del gettext per a les traduccions" #: subprojects/extensions-tool/src/command-create.c:529 #: subprojects/extensions-tool/src/command-pack.c:448 msgid "SCHEMA" msgstr "ESQUEMA" #: subprojects/extensions-tool/src/command-create.c:531 msgid "The GSettings schema used by the extension" msgstr "L'esquema GSettings utilitzat per l'extensió" #: subprojects/extensions-tool/src/command-create.c:534 msgid "TEMPLATE" msgstr "PLANTILLA" #: subprojects/extensions-tool/src/command-create.c:535 msgid "The template to use for the new extension" msgstr "La plantilla a usar per a l'extensió nova" #: subprojects/extensions-tool/src/command-create.c:538 msgid "Include prefs.js template" msgstr "Inclou la plantilla prefs.js" #: subprojects/extensions-tool/src/command-create.c:544 msgid "Enter extension information interactively" msgstr "Introduïu la informació de l'extensió interactivament" #: subprojects/extensions-tool/src/command-create.c:552 msgid "Create a new extension" msgstr "Crea una extensió nova" #: subprojects/extensions-tool/src/command-create.c:570 #: subprojects/extensions-tool/src/command-list.c:190 msgid "Unknown arguments" msgstr "Arguments desconeguts" #: subprojects/extensions-tool/src/command-create.c:595 msgid "UUID, name and description are required" msgstr "Calen l'UUID, el nom i la descripció" #: subprojects/extensions-tool/src/command-disable.c:62 #: subprojects/extensions-tool/src/command-enable.c:62 #, c-format msgid "Extension “%s” does not exist\n" msgstr "L'extensió «%s» no existeix\n" #: subprojects/extensions-tool/src/command-disable.c:98 msgid "Disable an extension" msgstr "Inhabilita una extensió" #: subprojects/extensions-tool/src/command-disable.c:116 #: subprojects/extensions-tool/src/command-enable.c:116 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "No s'ha donat un UUID" #: subprojects/extensions-tool/src/command-disable.c:121 #: subprojects/extensions-tool/src/command-enable.c:121 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "S'han donat més d'un UUID" #: subprojects/extensions-tool/src/command-enable.c:98 msgid "Enable an extension" msgstr "Habilita una extensió" #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:66 #: subprojects/extensions-tool/src/main.c:150 msgid "Failed to connect to GNOME Shell\n" msgstr "Ha fallat la connexió amb el GNOME Shell\n" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:159 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "L'extensió «%s» no existeix\n" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "Mostra la informació de les extensions" #: subprojects/extensions-tool/src/command-install.c:190 msgid "Overwrite an existing extension" msgstr "Sobreescriu una extensió existent" #: subprojects/extensions-tool/src/command-install.c:192 msgid "EXTENSION_BUNDLE" msgstr "EXTENSION_BUNDLE" #: subprojects/extensions-tool/src/command-install.c:201 msgid "Install an extension bundle" msgstr "Instal·la un paquet d'extensió" #: subprojects/extensions-tool/src/command-install.c:219 msgid "No extension bundle specified" msgstr "No s'ha especificat cap paquet d'extensió" #: subprojects/extensions-tool/src/command-install.c:225 msgid "More than one extension bundle specified" msgstr "S'ha especificat més un paquet d'extensió" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show user-installed extensions" msgstr "Mostra les extensions d'usuari instal·lades" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show system-installed extensions" msgstr "Mostra les extensions del sistema instal·lades" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Show enabled extensions" msgstr "Mostra les extensions habilitades" #: subprojects/extensions-tool/src/command-list.c:149 msgid "Show disabled extensions" msgstr "Mostra les extensions inhabilitades" #: subprojects/extensions-tool/src/command-list.c:152 msgid "Show extensions in active state" msgstr "Mostra les extensions en estat actiu" #: subprojects/extensions-tool/src/command-list.c:155 msgid "Show extensions in inactive state" msgstr "Mostra les extensions en estat inactiu" #: subprojects/extensions-tool/src/command-list.c:158 msgid "Show extensions with preferences" msgstr "Mostra les extensions amb preferències" #: subprojects/extensions-tool/src/command-list.c:161 msgid "Show extensions with updates" msgstr "Mostra les extensions amb actualitzacions" #: subprojects/extensions-tool/src/command-list.c:164 msgid "Print extension details" msgstr "Mostra els detalls de l'extensió" #: subprojects/extensions-tool/src/command-list.c:172 msgid "List installed extensions" msgstr "Llista les extensions instal·lades" #: subprojects/extensions-tool/src/command-pack.c:444 msgid "FILE" msgstr "FITXER" #: subprojects/extensions-tool/src/command-pack.c:445 msgid "Additional source to include in the bundle" msgstr "Font a addicional a incloure al paquet" #: subprojects/extensions-tool/src/command-pack.c:449 msgid "A GSettings schema that should be included" msgstr "Un esquema del GSettings a incloure" #: subprojects/extensions-tool/src/command-pack.c:451 #: subprojects/extensions-tool/src/command-pack.c:462 msgid "DIRECTORY" msgstr "DIRECTORI" #: subprojects/extensions-tool/src/command-pack.c:453 msgid "The directory where translations are found" msgstr "El directori on es troben les traduccions" #: subprojects/extensions-tool/src/command-pack.c:457 msgid "The gettext domain to use for translations" msgstr "El domini del gettext per a les traduccions" #: subprojects/extensions-tool/src/command-pack.c:460 msgid "Overwrite an existing pack" msgstr "Sobreescriu el paquet existent" #: subprojects/extensions-tool/src/command-pack.c:464 msgid "The directory where the pack should be created" msgstr "Directori on s'ha de crear el paquet" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "SOURCE_DIRECTORY" msgstr "DIRECTORI_FONT" #: subprojects/extensions-tool/src/command-pack.c:475 msgid "Create an extension bundle" msgstr "Crea un paquet d'extensió" #: subprojects/extensions-tool/src/command-pack.c:495 msgid "More than one source directory specified" msgstr "S'han especificat més d'un directori font" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "L'extensió «%s» no té preferències\n" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "No s'han pogut obrir les preferències per a l'extensió «%s»: %s\n" #: subprojects/extensions-tool/src/command-prefs.c:87 msgid "Opens extension preferences" msgstr "Obre les preferències de l'extensió" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "Reinicia una extensió" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "No es poden desinstal·lar les extensions del sistema\n" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "No s'ha pogut desinstal·lar «%s»\n" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "Desinstal·la una extensió" #: subprojects/extensions-tool/src/main.c:76 msgid "Do not print error messages" msgstr "No imprimeixis els missatges d'error" #: subprojects/extensions-tool/src/main.c:249 msgid "Path" msgstr "Camí" #: subprojects/extensions-tool/src/main.c:252 msgid "URL" msgstr "URL" #: subprojects/extensions-tool/src/main.c:255 msgid "Original author" msgstr "Autor original" #: subprojects/extensions-tool/src/main.c:261 #: subprojects/extensions-tool/src/main.c:263 #: subprojects/extensions-tool/src/main.c:265 msgid "Version" msgstr "Versió" #: subprojects/extensions-tool/src/main.c:268 msgid "Enabled" msgstr "Habilitat" #: subprojects/extensions-tool/src/main.c:268 msgid "Yes" msgstr "Sí" #: subprojects/extensions-tool/src/main.c:268 msgid "No" msgstr "No" #: subprojects/extensions-tool/src/main.c:271 msgid "State" msgstr "Estat" #: subprojects/extensions-tool/src/main.c:309 msgid "“version” takes no arguments" msgstr "«version» no té arguments" #: subprojects/extensions-tool/src/main.c:311 #: subprojects/extensions-tool/src/main.c:331 msgid "Usage:" msgstr "Ús:" #: subprojects/extensions-tool/src/main.c:314 msgid "Print version information and exit." msgstr "Mostra la informació de la versió i surt." #: subprojects/extensions-tool/src/main.c:329 #: subprojects/extensions-tool/src/main.c:332 msgid "COMMAND" msgstr "ORDRE" #: subprojects/extensions-tool/src/main.c:332 msgid "[ARGS…]" msgstr "[ARGS…]" #: subprojects/extensions-tool/src/main.c:334 msgid "Commands:" msgstr "Ordres:" #: subprojects/extensions-tool/src/main.c:335 msgid "Print help" msgstr "Mostra l'ajuda" #: subprojects/extensions-tool/src/main.c:337 msgid "Enable extension" msgstr "Habilita l'extensió" #: subprojects/extensions-tool/src/main.c:338 msgid "Disable extension" msgstr "Inhabilita l'extensió" #: subprojects/extensions-tool/src/main.c:339 msgid "Reset extension" msgstr "Reinicia l'extensió" #: subprojects/extensions-tool/src/main.c:340 msgid "Uninstall extension" msgstr "Desinstal·la l'extensió" #: subprojects/extensions-tool/src/main.c:341 msgid "List extensions" msgstr "Llista les extensions" #: subprojects/extensions-tool/src/main.c:342 #: subprojects/extensions-tool/src/main.c:343 msgid "Show extension info" msgstr "Mostra la informació de l'extensió" #: subprojects/extensions-tool/src/main.c:344 msgid "Open extension preferences" msgstr "Obre les preferències de l'extensió" #: subprojects/extensions-tool/src/main.c:345 msgid "Create extension" msgstr "Crea extensió" #: subprojects/extensions-tool/src/main.c:346 msgid "Package extension" msgstr "Paquet d'extensió" #: subprojects/extensions-tool/src/main.c:347 msgid "Install extension bundle" msgstr "Instal·la un paquet d'extensió" #: subprojects/extensions-tool/src/main.c:349 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "Feu servir «%s» per a obtenir ajuda detallada.\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "Pla" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "Una extensió buida" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "Indicador" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "Afegeix una icona a la barra superior" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:4 msgid "Quick Settings Item" msgstr "Element de configuració ràpida" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:5 msgid "Add an item to quick settings" msgstr "Afegeix un element a la configuració ràpida" #. translators: #. * The device has been disabled #: subprojects/gvc/gvc-mixer-control.c:1872 msgid "Disabled" msgstr "Inhabilitat" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1879 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u sortida" msgstr[1] "%u sortides" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1889 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u entrada" msgstr[1] "%u entrades" #: subprojects/gvc/gvc-mixer-control.c:2872 msgid "System Sounds" msgstr "Sons del sistema" 07070100000223000081A40000000000000000000000016712993F00010545000000000000000000000000000000000000002300000000gnome-shell-47.1/po/ca@valencia.po# Catalan gnome-shell translation. # Copyright (C) 2009 Siegfried-Angel Gevatter Pujals # This file is distributed under the same license as the gnome-shell package. # Siegfried-Angel Gevatter Pujals , 2009. # Jordi Serratosa , 2012, 2017. # Gil Forcada , 2010, 2011, 2013, 2014, 2016. # Jordi Mas i Hernàndez , 2017 # msgid "" msgstr "" "Project-Id-Version: HEAD\n" "Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "shell&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2017-09-10 06:17+0000\n" "PO-Revision-Date: 2017-08-23 09:48+0200\n" "Last-Translator: Xavi Ivars \n" "Language-Team: Catalan \n" "Language: ca-valencia\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 2.0.1\n" #: data/50-gnome-shell-system.xml:6 msgid "System" msgstr "Sistema" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "Mostra la llista de notificacions" #: data/50-gnome-shell-system.xml:12 msgid "Focus the active notification" msgstr "Posa el focus en la notificació activa" #: data/50-gnome-shell-system.xml:15 msgid "Show the overview" msgstr "Mostra la vista general" #: data/50-gnome-shell-system.xml:18 msgid "Show all applications" msgstr "Mostra totes les aplicacions" #: data/50-gnome-shell-system.xml:21 msgid "Open the application menu" msgstr "Obri el menú d'aplicació" #: data/gnome-shell-extension-prefs.desktop.in.in:4 #: js/extensionPrefs/main.js:152 msgid "Shell Extensions" msgstr "Extensions del Shell" #: data/gnome-shell-extension-prefs.desktop.in.in:5 msgid "Configure GNOME Shell Extensions" msgstr "Configureu les extensions del GNOME Shell" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "GNOME Shell" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "Gestor de finestres i llançador d'aplicacions" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" "Habilita les eines internes en el diàleg de l'Alt+F2 que són útils per als " "desenvolupadors i provadors" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Permet l'accés a les eines de depuració i de seguiment internes a través del " "diàleg de l'Alt+F2." #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "" "Identificadors universals únics de les extensions que s'han d'habilitar" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "Les extensions del GNOME Shell tenen un identificador universal. Esta " "clau conté una llista de les extensions que s'han de carregar. Qualsevol " "extensió que s'haja de carregar ha de ser a la llista. Podeu modificar " "esta llista amb els mètodes de D-Bus «EnableExtension» (activa una " "extensió) i «DisableExtension» (desactiva una extensió) a org.gnome.Shell." #: data/org.gnome.shell.gschema.xml.in:26 msgid "Disable user extensions" msgstr "Inhabilita les extensions d'usuari" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" "Inhabilita totes les extensions que l'usuari ha habilitat sense afectar el " "paràmetre «enabled-extension»." #: data/org.gnome.shell.gschema.xml.in:34 msgid "Disables the validation of extension version compatibility" msgstr "Desactiva la validació de la compatibilitat de versió d'extensions" #: data/org.gnome.shell.gschema.xml.in:35 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "El GNOME Shell només carregarà extensions que afirmin ser compatibles amb la " "versió en execució. Si s'activa esta opció, es desactivarà la comprovació " "i es provarà de carregar totes les extensions sense tindre en compte les " "versions amb què afirmin ser compatibles." #: data/org.gnome.shell.gschema.xml.in:43 msgid "List of desktop file IDs for favorite applications" msgstr "" "Llista d'identificadors de fitxers d'escriptori de les aplicacions preferides" #: data/org.gnome.shell.gschema.xml.in:44 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" "Es mostraran, a l'àrea de preferits, les aplicacions que corresponguin a " "estos identificadors." #: data/org.gnome.shell.gschema.xml.in:51 msgid "App Picker View" msgstr "Vista del seleccionador d'aplicacions" #: data/org.gnome.shell.gschema.xml.in:52 msgid "Index of the currently selected view in the application picker." msgstr "" "Índex de la vista seleccionada actualment en el seleccionador d'aplicacions." #: data/org.gnome.shell.gschema.xml.in:58 msgid "History for command (Alt-F2) dialog" msgstr "Historial de les ordes utilitzades en el diàleg de l'Alt+F2" #. Translators: looking glass is a debugger and inspector tool, see https://wiki.gnome.org/Projects/GnomeShell/LookingGlass #: data/org.gnome.shell.gschema.xml.in:63 msgid "History for the looking glass dialog" msgstr "Historial del depurador del GNOME Shell" #: data/org.gnome.shell.gschema.xml.in:67 msgid "Always show the “Log out” menu item in the user menu." msgstr "Mostra sempre l'element de menú «Ix» al menú d'usuari." #: data/org.gnome.shell.gschema.xml.in:68 msgid "" "This key overrides the automatic hiding of the “Log out” menu item in single-" "user, single-session situations." msgstr "" "Esta clau sobreescriu l'ocultació automàtica de l'element de menú «Ix» " "quan només hi ha un usuari i un sol tipus de sessió." #: data/org.gnome.shell.gschema.xml.in:75 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "Si s'han de recordar les contrasenyes dels punts de muntatge encriptats o " "els sistemes de fitxers remots" #: data/org.gnome.shell.gschema.xml.in:76 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "El GNOME Shell vos demanarà la contrasenya quan es munti un dispositiu " "encriptat o un sistema de fitxers remot. Si es pot guardar la contrasenya per " "utilitzar-lo en el futur, es mostrarà la casella de verificació «Recorda la " "contrasenya». Esta clau estableix el valor per defecte d'esta casella " "de verificació." #: data/org.gnome.shell.gschema.xml.in:85 msgid "" "Whether the default Bluetooth adapter had set up devices associated to it" msgstr "" "Si l'adaptador de Bluetooth predeterminat té dispositius configurats " "associats" #: data/org.gnome.shell.gschema.xml.in:86 msgid "" "The shell will only show a Bluetooth menu item if a Bluetooth adapter is " "powered, or if there were devices set up associated with the default " "adapter. This will be reset if the default adapter is ever seen not to have " "devices associated to it." msgstr "" "El Shell només mostrà una entrada de menú Bluetooth si un adaptador " "Bluetooth està engegat, o si hi ha dispositius configurats associats a " "l'adaptador predeterminat. Això es reiniciarà si l'adaptador predeterminat " "té dispositius associats." #: data/org.gnome.shell.gschema.xml.in:101 msgid "Keybinding to open the application menu" msgstr "Vinculació per obrir el menú d'aplicació" #: data/org.gnome.shell.gschema.xml.in:102 msgid "Keybinding to open the application menu." msgstr "La vinculació per obrir el menú d'aplicació." #: data/org.gnome.shell.gschema.xml.in:108 msgid "Keybinding to open the “Show Applications” view" msgstr "Vinculació de tecles per obrir la vista «Mostra les aplicacions»" #: data/org.gnome.shell.gschema.xml.in:109 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "" "Vinculació de tecles per obrir la vista «Mostra les aplicacions» de les " "activitats de la vista general." #: data/org.gnome.shell.gschema.xml.in:116 msgid "Keybinding to open the overview" msgstr "Vinculació per obrir la vista general" #: data/org.gnome.shell.gschema.xml.in:117 msgid "Keybinding to open the Activities Overview." msgstr "Vinculació per obrir la vista general d'activitats." #: data/org.gnome.shell.gschema.xml.in:123 msgid "Keybinding to toggle the visibility of the notification list" msgstr "" "La vinculació per commutar la visibilitat de la llista de notificacions" #: data/org.gnome.shell.gschema.xml.in:124 msgid "Keybinding to toggle the visibility of the notification list." msgstr "" "La vinculació per commutar la visibilitat de la llista de notificacions." #: data/org.gnome.shell.gschema.xml.in:130 msgid "Keybinding to focus the active notification" msgstr "Vinculació per posar el focus a la notificació activa" #: data/org.gnome.shell.gschema.xml.in:131 msgid "Keybinding to focus the active notification." msgstr "Vinculació per posar el focus a la notificació activa." #: data/org.gnome.shell.gschema.xml.in:137 msgid "" "Keybinding that pauses and resumes all running tweens, for debugging purposes" msgstr "" "Vinculació que fa una pausa i continua tots els «tweens» en execució, per " "motius de depuració" #: data/org.gnome.shell.gschema.xml.in:146 msgid "Which keyboard to use" msgstr "Quin tipus de teclat s'ha d'utilitzar" #: data/org.gnome.shell.gschema.xml.in:147 msgid "The type of keyboard to use." msgstr "El tipus de teclat que s'utilitzarà." #: data/org.gnome.shell.gschema.xml.in:158 #: data/org.gnome.shell.gschema.xml.in:185 msgid "Limit switcher to current workspace." msgstr "Limita el canviador a l'espai de treball actual." #: data/org.gnome.shell.gschema.xml.in:159 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "Si és «true» (cert), només les aplicacions que tinguen finestres en l'espai " "de treball actual es mostren en el canviador. En cas contrari es mostren " "totes les aplicacions." #: data/org.gnome.shell.gschema.xml.in:176 msgid "The application icon mode." msgstr "El mode d'icona de les aplicacions." #: data/org.gnome.shell.gschema.xml.in:177 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-" "only” (shows only the application icon) or “both”." msgstr "" "Configureu com es mostren les finestres en l'intercanviador. Els valors " "possibles són: «thumbnail-only» (mostra una miniatura de la finestra), «app-" "icon-only» (mostra la icona de l'aplicació) o «both» (ambdues coses)." #: data/org.gnome.shell.gschema.xml.in:186 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "Si és «true» (cert), només les finestres de l'espai de treball actual es " "mostren en el canviador. En cas contrari, es mostren totes les finestres." #: data/org.gnome.shell.gschema.xml.in:197 msgid "Attach modal dialog to the parent window" msgstr "Adjunta el diàleg modal a la finestra pare" #: data/org.gnome.shell.gschema.xml.in:198 #: data/org.gnome.shell.gschema.xml.in:207 #: data/org.gnome.shell.gschema.xml.in:215 #: data/org.gnome.shell.gschema.xml.in:223 #: data/org.gnome.shell.gschema.xml.in:231 msgid "" "This key overrides the key in org.gnome.mutter when running GNOME Shell." msgstr "" "Si s'executa el GNOME Shell, esta clau sobreescriu la clau «org.gnome." "mutter»." #: data/org.gnome.shell.gschema.xml.in:206 msgid "Enable edge tiling when dropping windows on screen edges" msgstr "" "Habilita la tessel·lització a les vores en deixar anar les finestres a les " "vores de la pantalla" #: data/org.gnome.shell.gschema.xml.in:214 msgid "Workspaces are managed dynamically" msgstr "Els espais de treball es gestionen dinàmicament" #: data/org.gnome.shell.gschema.xml.in:222 msgid "Workspaces only on primary monitor" msgstr "Només en el monitor principal hi ha espais de treball" #: data/org.gnome.shell.gschema.xml.in:230 msgid "Delay focus changes in mouse mode until the pointer stops moving" msgstr "" "Retarda el canvi del focus, quan s'està en mode ratolí, fins que el punter " "no estiga quiet" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "Inici de sessió de xarxa" #. Translators: Do NOT translate or transliterate this text (this is an icon file name)! #: data/org.gnome.Shell.PortalHelper.desktop.in.in:9 msgid "network-workgroup" msgstr "network-workgroup" #: js/extensionPrefs/main.js:120 #, javascript-format msgid "There was an error loading the preferences dialog for %s:" msgstr "S'ha produït un error en carregar el diàleg de preferències de %s:" #: js/gdm/authPrompt.js:149 js/ui/audioDeviceSelection.js:71 #: js/ui/components/networkAgent.js:117 js/ui/components/polkitAgent.js:148 #: js/ui/endSessionDialog.js:482 js/ui/extensionDownloader.js:197 #: js/ui/shellMountOperation.js:344 js/ui/status/network.js:936 msgid "Cancel" msgstr "Cancel·la" #: js/gdm/authPrompt.js:171 js/gdm/authPrompt.js:218 js/gdm/authPrompt.js:450 msgid "Next" msgstr "Següent" #: js/gdm/authPrompt.js:214 js/ui/shellMountOperation.js:348 #: js/ui/unlockDialog.js:59 msgid "Unlock" msgstr "Desbloqueja" #: js/gdm/authPrompt.js:216 msgctxt "button" msgid "Sign In" msgstr "Entra" #: js/gdm/loginDialog.js:308 msgid "Choose Session" msgstr "Trieu la sessió" #. translators: this message is shown below the user list on the #. login screen. It can be activated to reveal an entry for #. manually entering the username. #: js/gdm/loginDialog.js:458 msgid "Not listed?" msgstr "No esteu llistat?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:888 #, javascript-format msgid "(e.g., user or %s)" msgstr "(p. ex. l'usuari o %s)" #. TTLS and PEAP are actually much more complicated, but this complication #. is not visible here since we only care about phase2 authentication #. (and don't even care of which one) #: js/gdm/loginDialog.js:893 js/ui/components/networkAgent.js:243 #: js/ui/components/networkAgent.js:261 msgid "Username: " msgstr "Nom d'usuari:" #: js/gdm/loginDialog.js:1236 msgid "Login Window" msgstr "Finestra d'entrada" #: js/gdm/util.js:346 msgid "Authentication error" msgstr "Error d'autenticació" #. We don't show fingerprint messages directly since it's #. not the main auth service. Instead we use the messages #. as a cue to display our own message. #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger instead #: js/gdm/util.js:478 msgid "(or swipe finger)" msgstr "(o passeu el dit)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:99 msgctxt "search-result" msgid "Power off" msgstr "Apaga" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:102 msgid "power off;shutdown" msgstr "apaga;atura" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:106 msgctxt "search-result" msgid "Lock screen" msgstr "Bloqueja la pantalla" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:109 msgid "lock screen" msgstr "bloca la pantalla" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:113 msgctxt "search-result" msgid "Log out" msgstr "Desconnecta" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:116 msgid "logout;sign off" msgstr "desconnecta;eixida" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:120 msgctxt "search-result" msgid "Suspend" msgstr "Atura temporalment" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:123 msgid "suspend;sleep" msgstr "atura temporalment;dorm" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:127 msgctxt "search-result" msgid "Switch user" msgstr "Canvia d'usuari" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:130 msgid "switch user" msgstr "canvia d'usuari" #. Translators: The name of the lock orientation action in search #: js/misc/systemActions.js:134 msgctxt "search-result" msgid "Lock orientation" msgstr "Bloqueja l'orientació" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:137 msgid "lock orientation" msgstr "bloqueja l'orientació" #: js/misc/util.js:122 msgid "Command not found" msgstr "No s'ha trobat l'orde" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:155 msgid "Could not parse command:" msgstr "No s'ha pogut analitzar l'orde:" #: js/misc/util.js:163 #, javascript-format msgid "Execution of “%s” failed:" msgstr "No s'ha pogut executar «%s»:" #: js/misc/util.js:180 msgid "Just now" msgstr "Ara mateix" #: js/misc/util.js:182 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "fa %d minut" msgstr[1] "fa %d minuts" #: js/misc/util.js:185 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "fa %d hora" msgstr[1] "fa %d hores" #: js/misc/util.js:188 msgid "Yesterday" msgstr "Ahir" #: js/misc/util.js:190 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "fa %d dia" msgstr[1] "fa %d dies" #: js/misc/util.js:193 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "fa %d setmana" msgstr[1] "fa %d setmanes" #: js/misc/util.js:196 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "fa %d mes" msgstr[1] "fa %d mesos" #: js/misc/util.js:198 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "fa %d any" msgstr[1] "fa %d anys" #. Translators: Time in 24h format #: js/misc/util.js:228 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/util.js:234 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "Ahir, a les %H:%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/util.js:240 #, no-c-format msgid "%A, %H∶%M" msgstr "%A a les %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/util.js:246 #, no-c-format msgid "%B %d, %H∶%M" msgstr " %d de %B, a les %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/util.js:252 #, no-c-format msgid "%B %d %Y, %H∶%M" msgstr "%d de %B de %Y, a les %H∶%M" #. Translators: Time in 12h format #: js/misc/util.js:257 msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/util.js:263 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "Ahir, a les %l∶%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/util.js:269 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, a les %l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/util.js:275 #, no-c-format msgid "%B %d, %l∶%M %p" msgstr "%d de %B, a les %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/util.js:281 #, no-c-format msgid "%B %d %Y, %l∶%M %p" msgstr "%d de %B de %Y, a les %l∶%M %p" #. TRANSLATORS: this is the title of the wifi captive portal login window #: js/portalHelper/main.js:66 msgid "Hotspot Login" msgstr "Inici de sessió al punt d'accés Wi-Fi" #: js/portalHelper/main.js:112 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "La connexió a este punt d'accés no és segura. Contrasenyes o altra " "informació que introduïu en esta pàgina pot ser vista per persones " "properes." #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:63 js/ui/status/location.js:395 msgid "Deny Access" msgstr "Denega l'accés" #: js/ui/accessDialog.js:64 js/ui/status/location.js:398 msgid "Grant Access" msgstr "Permet l'accés" #: js/ui/appDisplay.js:809 msgid "Frequently used applications will appear here" msgstr "Les aplicacions utilitzades freqüentment apareixeran ací" #: js/ui/appDisplay.js:930 msgid "Frequent" msgstr "Freqüent" #: js/ui/appDisplay.js:937 msgid "All" msgstr "Totes" #: js/ui/appDisplay.js:1915 msgid "New Window" msgstr "Finestra nova" #: js/ui/appDisplay.js:1929 msgid "Launch using Dedicated Graphics Card" msgstr "Inicia usant una targeta gràfica dedicada" #: js/ui/appDisplay.js:1956 js/ui/dash.js:289 msgid "Remove from Favorites" msgstr "Suprimeix dels preferits" #: js/ui/appDisplay.js:1962 msgid "Add to Favorites" msgstr "Afig als preferits" #: js/ui/appDisplay.js:1972 msgid "Show Details" msgstr "Mostra els detalls" #: js/ui/appFavorites.js:141 #, javascript-format msgid "%s has been added to your favorites." msgstr "S'ha afegit %s als preferits." #: js/ui/appFavorites.js:175 #, javascript-format msgid "%s has been removed from your favorites." msgstr "S'ha suprimit %s dels preferits." #: js/ui/audioDeviceSelection.js:59 msgid "Select Audio Device" msgstr "Seleccioneu dispositiu d'àudio" #: js/ui/audioDeviceSelection.js:69 msgid "Sound Settings" msgstr "Paràmetres del so" #: js/ui/audioDeviceSelection.js:78 msgid "Headphones" msgstr "Auriculars" #: js/ui/audioDeviceSelection.js:80 msgid "Headset" msgstr "Auriculars amb micròfon" #: js/ui/audioDeviceSelection.js:82 js/ui/status/volume.js:221 msgid "Microphone" msgstr "Micròfon" #: js/ui/backgroundMenu.js:19 msgid "Change Background…" msgstr "Canvia el fons de l'escriptori…" #: js/ui/backgroundMenu.js:21 js/ui/status/nightLight.js:51 msgid "Display Settings" msgstr "Paràmetres de la pantalla" #: js/ui/backgroundMenu.js:22 js/ui/status/system.js:265 msgid "Settings" msgstr "Paràmetres" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:47 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:76 msgctxt "grid sunday" msgid "S" msgstr "Dg" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:78 msgctxt "grid monday" msgid "M" msgstr "Dl" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:80 msgctxt "grid tuesday" msgid "T" msgstr "Dt" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:82 msgctxt "grid wednesday" msgid "W" msgstr "Dc" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:84 msgctxt "grid thursday" msgid "T" msgstr "Dj" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:86 msgctxt "grid friday" msgid "F" msgstr "Dv" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:88 msgctxt "grid saturday" msgid "S" msgstr "Ds" #: js/ui/calendar.js:442 msgid "Previous month" msgstr "Mes anterior" #: js/ui/calendar.js:452 msgid "Next month" msgstr "Mes següent" #: js/ui/calendar.js:605 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:660 msgid "Week %V" msgstr "Setmana %V" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/calendar.js:729 msgctxt "event list time" msgid "All Day" msgstr "Tot el dia" #: js/ui/calendar.js:862 msgctxt "calendar heading" msgid "%A, %B %d" msgstr "%A %d de %B" #: js/ui/calendar.js:866 msgctxt "calendar heading" msgid "%A, %B %d, %Y" msgstr "%A %d de %B de %Y" #: js/ui/calendar.js:1086 msgid "No Notifications" msgstr "Cap notificació" #: js/ui/calendar.js:1089 msgid "No Events" msgstr "Cap cita" #: js/ui/calendar.js:1117 msgid "Clear All" msgstr "Neteja-ho tot" #. Translators: %s is an application name #: js/ui/closeDialog.js:44 #, javascript-format msgid "“%s” is not responding." msgstr "«%s» no està responent." #: js/ui/closeDialog.js:45 msgid "" "You may choose to wait a short while for it to continue or force the " "application to quit entirely." msgstr "" "Podeu esperar un moment perquè continue o podeu forçar-ne l'eixida " "completa." #: js/ui/closeDialog.js:61 msgid "Force Quit" msgstr "Força l'eixida" #: js/ui/closeDialog.js:64 msgid "Wait" msgstr "Espera" #: js/ui/components/automountManager.js:91 msgid "External drive connected" msgstr "S'ha connectat un dispositiu extern" #: js/ui/components/automountManager.js:102 msgid "External drive disconnected" msgstr "S'ha desconnectat un dispositiu extern" #: js/ui/components/autorunManager.js:354 #, javascript-format msgid "Open with %s" msgstr "Obri amb %s" #: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:284 msgid "Password:" msgstr "Contrasenya:" #: js/ui/components/keyring.js:140 msgid "Type again:" msgstr "Torneu a escriure-la:" #: js/ui/components/networkAgent.js:112 js/ui/status/network.js:261 #: js/ui/status/network.js:355 js/ui/status/network.js:939 msgid "Connect" msgstr "Connecta" #. Cisco LEAP #: js/ui/components/networkAgent.js:205 js/ui/components/networkAgent.js:217 #: js/ui/components/networkAgent.js:245 js/ui/components/networkAgent.js:265 #: js/ui/components/networkAgent.js:275 msgid "Password: " msgstr "Contrasenya:" #. static WEP #: js/ui/components/networkAgent.js:210 msgid "Key: " msgstr "Clau:" #: js/ui/components/networkAgent.js:249 msgid "Identity: " msgstr "Identitat:" #: js/ui/components/networkAgent.js:251 msgid "Private key password: " msgstr "Contrasenya de la clau privada:" #: js/ui/components/networkAgent.js:263 msgid "Service: " msgstr "Servei:" #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:638 msgid "Authentication required by wireless network" msgstr "La xarxa sense fil requereix autenticació" #: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:639 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network " "“%s”." msgstr "" "Per accedir a la xarxa sense fil «%s» calen les contrasenyes o les claus " "d'encriptació." #: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:642 msgid "Wired 802.1X authentication" msgstr "Autenticació 802.1X amb fil" #: js/ui/components/networkAgent.js:299 msgid "Network name: " msgstr "Nom de la xarxa: " #: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:646 msgid "DSL authentication" msgstr "Autenticació DSL" #: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:652 msgid "PIN code required" msgstr "Cal que introduïu el codi PIN" #: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:653 msgid "PIN code is needed for the mobile broadband device" msgstr "Cal que introduïu el codi PIN del dispositiu de banda ampla mòbil" #: js/ui/components/networkAgent.js:313 msgid "PIN: " msgstr "PIN: " #: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:659 msgid "Mobile broadband network password" msgstr "Contrasenya de la xarxa de banda ampla mòbil" #: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:643 #: js/ui/components/networkAgent.js:647 js/ui/components/networkAgent.js:660 #, javascript-format msgid "A password is required to connect to “%s”." msgstr "Cal introduir una contrasenya per connectar-vos a «%s»." #: js/ui/components/networkAgent.js:627 js/ui/status/network.js:1720 msgid "Network Manager" msgstr "Gestor de connexions de xarxa" #: js/ui/components/polkitAgent.js:43 msgid "Authentication Required" msgstr "Cal autenticació" #: js/ui/components/polkitAgent.js:71 msgid "Administrator" msgstr "Administrador" #: js/ui/components/polkitAgent.js:151 msgid "Authenticate" msgstr "Autentica" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:270 js/ui/shellMountOperation.js:328 msgid "Sorry, that didn’t work. Please try again." msgstr "No ha funcionat. Torneu-ho a provar." #. Translators: this is the other person changing their old IM name to their new #. IM name. #: js/ui/components/telepathyClient.js:799 #, javascript-format msgid "%s is now known as %s" msgstr "En/na %s ara es diu %s" #: js/ui/ctrlAltTab.js:29 js/ui/viewSelector.js:186 msgid "Windows" msgstr "Finestres" #: js/ui/dash.js:250 js/ui/dash.js:291 msgid "Show Applications" msgstr "Mostra les aplicacions" #. Translators: this is the name of the dock/favorites area on #. the left of the overview #: js/ui/dash.js:449 msgid "Dash" msgstr "Quadre d'aplicacions" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM"). #. #: js/ui/dateMenu.js:75 msgid "%B %e %Y" msgstr "%e de %B de %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:82 msgid "%A %B %e %Y" msgstr "%A, %e de %B de %Y" #: js/ui/dateMenu.js:144 msgid "Add world clocks…" msgstr "Afig rellotges del món…" #: js/ui/dateMenu.js:145 msgid "World Clocks" msgstr "Rellotges del món" #: js/ui/dateMenu.js:224 msgid "Weather" msgstr "El temps" #. Translators: %s is a weather condition like "Clear sky"; see #. libgweather for the possible condition strings. If at all #. possible, the sentence should match the grammatical case etc. of #. the inserted conditions. #: js/ui/dateMenu.js:286 #, javascript-format msgid "%s all day." msgstr "%s tot el dia." #. Translators: %s is a weather condition like "Clear sky"; see #. libgweather for the possible condition strings. If at all #. possible, the sentence should match the grammatical case etc. of #. the inserted conditions. #: js/ui/dateMenu.js:292 #, javascript-format msgid "%s, then %s later." msgstr "%s, llavors %s més tard." #. Translators: %s is a weather condition like "Clear sky"; see #. libgweather for the possible condition strings. If at all #. possible, the sentence should match the grammatical case etc. of #. the inserted conditions. #: js/ui/dateMenu.js:298 #, javascript-format msgid "%s, then %s, followed by %s later." msgstr "%s, llavors %s, seguit per %s més tard." #: js/ui/dateMenu.js:309 msgid "Select a location…" msgstr "Trieu una ubicació…" #: js/ui/dateMenu.js:312 msgid "Loading…" msgstr "S'està carregant…" #. Translators: %s is a temperature with unit, e.g. "23℃" #: js/ui/dateMenu.js:318 #, javascript-format msgid "Feels like %s." msgstr "Sensació tèrmica de %s." #: js/ui/dateMenu.js:321 msgid "Go online for weather information" msgstr "Vés en línia per a informació sobre el temps" #: js/ui/dateMenu.js:323 msgid "Weather information is currently unavailable" msgstr "La informació sobre el temps no està disponible" #: js/ui/endSessionDialog.js:64 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "Eixida %s" #: js/ui/endSessionDialog.js:65 msgctxt "title" msgid "Log Out" msgstr "Eixida" #: js/ui/endSessionDialog.js:67 #, javascript-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "%s eixirà de la sessió automàticament d'ací %d segon." msgstr[1] "%s eixirà de la sessió automàticament d'ací %d segons." #: js/ui/endSessionDialog.js:72 #, javascript-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "Eixireu automàticament d'ací %d segon." msgstr[1] "Eixireu automàticament d'ací %d segons." #: js/ui/endSessionDialog.js:78 msgctxt "button" msgid "Log Out" msgstr "Ix" #: js/ui/endSessionDialog.js:84 msgctxt "title" msgid "Power Off" msgstr "Apagada" #: js/ui/endSessionDialog.js:85 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Instal·la les actualitzacions i apaga" #: js/ui/endSessionDialog.js:87 #, javascript-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "S'apagarà l'ordinador automàticament d'ací %d segon." msgstr[1] "S'apagarà l'ordinador automàticament d'ací %d segons." #: js/ui/endSessionDialog.js:91 msgctxt "checkbox" msgid "Install pending software updates" msgstr "Instal·la les actualitzacions pendents" #: js/ui/endSessionDialog.js:94 js/ui/endSessionDialog.js:111 msgctxt "button" msgid "Restart" msgstr "Reinicia" #: js/ui/endSessionDialog.js:96 msgctxt "button" msgid "Power Off" msgstr "Apaga" #: js/ui/endSessionDialog.js:103 msgctxt "title" msgid "Restart" msgstr "Reinici" #: js/ui/endSessionDialog.js:105 #, javascript-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "Es reiniciarà l'ordinador automàticament d'ací %d segon." msgstr[1] "Es reiniciarà l'ordinador automàticament d'ací %d segons." #: js/ui/endSessionDialog.js:119 msgctxt "title" msgid "Restart & Install Updates" msgstr "Reinicia i instal·la les actualitzacions" #: js/ui/endSessionDialog.js:121 #, javascript-format msgid "The system will automatically restart and install updates in %d second." msgid_plural "" "The system will automatically restart and install updates in %d seconds." msgstr[0] "" "Es reiniciarà l'ordinador automàticament i s'instal·laran les " "actualitzacions d'ací %d segon." msgstr[1] "" "Es reiniciarà l'ordinador automàticament i s'instal·laran les " "actualitzacions d'ací %d segons." #: js/ui/endSessionDialog.js:127 js/ui/endSessionDialog.js:147 msgctxt "button" msgid "Restart & Install" msgstr "Reinicia i instal·la" #: js/ui/endSessionDialog.js:128 msgctxt "button" msgid "Install & Power Off" msgstr "Instal·la i apaga" #: js/ui/endSessionDialog.js:129 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Apaga després d'instal·lar les actualitzacions" #: js/ui/endSessionDialog.js:137 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "Reinicia i instal·la l'actualització" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:142 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "%s %s s'instal·larà després del reinici. Una actualització de la " "instal·lació pot trigar força temps. Assegureu-vos que heu fet còpia de " "seguretat i que l'ordinador està connectat al corrent." #: js/ui/endSessionDialog.js:361 msgid "Running on battery power: please plug in before installing updates." msgstr "" "S'està utilitzant la bateria: connecteu l'ordinador a la xarxa elèctrica " "abans d'instal·lar les actualitzacions." #: js/ui/endSessionDialog.js:378 msgid "Some applications are busy or have unsaved work." msgstr "" "Hi ha algunes aplicacions que estan ocupades o que tenen documents sense " "guardar." #: js/ui/endSessionDialog.js:385 msgid "Other users are logged in." msgstr "Altres usuaris tenen la sessió oberta." #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:670 #, javascript-format msgid "%s (remote)" msgstr "%s (remot)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:673 #, javascript-format msgid "%s (console)" msgstr "%s (consola)" #: js/ui/extensionDownloader.js:201 msgid "Install" msgstr "Instal·la" #: js/ui/extensionDownloader.js:206 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "Voleu baixar i instal·lar «%s» d'extensions.gnome.org?" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:59 #, javascript-format msgid "%s wants to inhibit shortcuts" msgstr "%s vol inhabilitar les dreceres" #: js/ui/inhibitShortcutsDialog.js:60 msgid "Application wants to inhibit shortcuts" msgstr "L'aplicació vol inhabilitar les dreceres" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:69 #, javascript-format msgid "You can restore shortcuts by pressing %s." msgstr "Podeu restaurar les dreceres si premeu %s." #: js/ui/inhibitShortcutsDialog.js:74 msgid "Deny" msgstr "Denega" #: js/ui/inhibitShortcutsDialog.js:80 msgid "Allow" msgstr "Permet" #: js/ui/keyboard.js:738 js/ui/status/keyboard.js:782 msgid "Keyboard" msgstr "Teclat" #: js/ui/lookingGlass.js:642 msgid "No extensions installed" msgstr "No hi ha cap extensió instal·lada" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:696 #, javascript-format msgid "%s has not emitted any errors." msgstr "%s no ha emés cap error." #: js/ui/lookingGlass.js:702 msgid "Hide Errors" msgstr "Amaga els errors" #: js/ui/lookingGlass.js:706 js/ui/lookingGlass.js:766 msgid "Show Errors" msgstr "Mostra els errors" #: js/ui/lookingGlass.js:715 msgid "Enabled" msgstr "Habilitat" #. translators: #. * The device has been disabled #: js/ui/lookingGlass.js:718 subprojects/gvc/gvc-mixer-control.c:1866 msgid "Disabled" msgstr "Inhabilitat" #: js/ui/lookingGlass.js:720 msgid "Error" msgstr "Error" #: js/ui/lookingGlass.js:722 msgid "Out of date" msgstr "Fora d'hora" #: js/ui/lookingGlass.js:724 msgid "Downloading" msgstr "S'està baixant" #: js/ui/lookingGlass.js:748 msgid "View Source" msgstr "Mostra el codi font" #: js/ui/lookingGlass.js:757 msgid "Web Page" msgstr "Pàgina web" #: js/ui/messageTray.js:1493 msgid "System Information" msgstr "Informació de l'ordinador" #: js/ui/mpris.js:211 msgid "Unknown artist" msgstr "Artista desconegut" #: js/ui/mpris.js:212 msgid "Unknown title" msgstr "Títol desconegut" #: js/ui/overview.js:84 msgid "Undo" msgstr "Desfés" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:113 msgid "Overview" msgstr "Vista general" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overview.js:240 msgid "Type to search…" msgstr "Teclegeu per buscar…" #: js/ui/padOsd.js:103 msgid "New shortcut…" msgstr "Drecera de teclat nova…" #: js/ui/padOsd.js:152 msgid "Application defined" msgstr "Definit per l'aplicació" #: js/ui/padOsd.js:153 msgid "Show on-screen help" msgstr "Mostra l'ajuda en pantalla" #: js/ui/padOsd.js:154 msgid "Switch monitor" msgstr "Commuta el monitor " #: js/ui/padOsd.js:155 msgid "Assign keystroke" msgstr "Assigna la pulsació de tecla" #: js/ui/padOsd.js:220 msgid "Done" msgstr "Fet" #: js/ui/padOsd.js:734 msgid "Edit…" msgstr "Edita…" #: js/ui/padOsd.js:774 js/ui/padOsd.js:879 msgid "None" msgstr "Cap" #: js/ui/padOsd.js:833 msgid "Press a button to configure" msgstr "Premeu un botó per a configurar" #: js/ui/padOsd.js:834 msgid "Press Esc to exit" msgstr "Premeu Esc per eixir" #: js/ui/padOsd.js:837 msgid "Press any key to exit" msgstr "Premeu qualsevol tecla per eixir" #: js/ui/panel.js:358 msgid "Quit" msgstr "Ix" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:414 msgid "Activities" msgstr "Activitats" #: js/ui/panel.js:695 msgctxt "System menu in the top bar" msgid "System" msgstr "Sistema" #: js/ui/panel.js:812 msgid "Top Bar" msgstr "Barra superior" #. Translators: this MUST be either "toggle-switch-us" #. (for toggle switches containing the English words #. "ON" and "OFF") or "toggle-switch-intl" (for toggle #. switches containing "◯" and "|"). Other values will #. simply result in invisible toggle switches. #: js/ui/popupMenu.js:291 msgid "toggle-switch-us" msgstr "toggle-switch-intl" #: js/ui/runDialog.js:71 msgid "Enter a Command" msgstr "Introduïu una orde" #: js/ui/runDialog.js:111 js/ui/windowMenu.js:160 msgid "Close" msgstr "Tanca" #: js/ui/runDialog.js:277 msgid "Restart is not available on Wayland" msgstr "El reinici no està disponible en Wayland" #: js/ui/runDialog.js:282 msgid "Restarting…" msgstr "S'està reiniciant…" #. Translators: This is a time format for a date in #. long format #: js/ui/screenShield.js:88 msgid "%A, %B %d" msgstr "%A %d de %B" #: js/ui/screenShield.js:147 #, javascript-format msgid "%d new message" msgid_plural "%d new messages" msgstr[0] "%d missatge nou" msgstr[1] "%d missatges nous" #: js/ui/screenShield.js:149 #, javascript-format msgid "%d new notification" msgid_plural "%d new notifications" msgstr[0] "%d notificació nova" msgstr[1] "%d notificacions noves" #: js/ui/screenShield.js:452 js/ui/status/system.js:284 msgid "Lock" msgstr "Bloqueja" #: js/ui/screenShield.js:715 msgid "GNOME needs to lock the screen" msgstr "El GNOME necessita bloquejar la pantalla" #. We could not become modal, so we can't activate the #. screenshield. The user is probably very upset at this #. point, but any application using global grabs is broken #. Just tell him to stop using this app #. #. XXX: another option is to kick the user into the gdm login #. screen, where we're not affected by grabs #: js/ui/screenShield.js:836 js/ui/screenShield.js:1308 msgid "Unable to lock" msgstr "No es pot blocar" #: js/ui/screenShield.js:837 js/ui/screenShield.js:1309 msgid "Lock was blocked by an application" msgstr "Una aplicació està bloquejant el bloqueig" #: js/ui/search.js:651 msgid "Searching…" msgstr "S'està cercant…" #: js/ui/search.js:653 msgid "No results." msgstr "No s'ha trobat cap resultat." #: js/ui/search.js:777 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "%d més" msgstr[1] "%d més" #: js/ui/shellEntry.js:25 msgid "Copy" msgstr "Copia" #: js/ui/shellEntry.js:30 msgid "Paste" msgstr "Enganxa" #: js/ui/shellEntry.js:97 msgid "Show Text" msgstr "Mostra el text" #: js/ui/shellEntry.js:99 msgid "Hide Text" msgstr "Oculta el text" #: js/ui/shellMountOperation.js:315 msgid "Password" msgstr "Contrasenya" #: js/ui/shellMountOperation.js:336 msgid "Remember Password" msgstr "Recorda la contrasenya" #: js/ui/status/accessibility.js:42 msgid "Accessibility" msgstr "Accessibilitat" #: js/ui/status/accessibility.js:57 msgid "Zoom" msgstr "Amplia" #: js/ui/status/accessibility.js:64 msgid "Screen Reader" msgstr "Lector de pantalla" #: js/ui/status/accessibility.js:68 msgid "Screen Keyboard" msgstr "Teclat en pantalla" #: js/ui/status/accessibility.js:72 msgid "Visual Alerts" msgstr "Avisos visuals" #: js/ui/status/accessibility.js:75 msgid "Sticky Keys" msgstr "Tecles enganxoses" #: js/ui/status/accessibility.js:78 msgid "Slow Keys" msgstr "Tecles lentes" #: js/ui/status/accessibility.js:81 msgid "Bounce Keys" msgstr "Tecles de salt" #: js/ui/status/accessibility.js:84 msgid "Mouse Keys" msgstr "Tecles del ratolí" #: js/ui/status/accessibility.js:167 msgid "High Contrast" msgstr "Alt contrast" #: js/ui/status/accessibility.js:202 msgid "Large Text" msgstr "Text gran" #: js/ui/status/bluetooth.js:47 msgid "Bluetooth" msgstr "Bluetooth" #: js/ui/status/bluetooth.js:56 js/ui/status/network.js:627 msgid "Bluetooth Settings" msgstr "Paràmetres del Bluetooth" #. Translators: this is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:136 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d connectat" msgstr[1] "%d connectats" #: js/ui/status/bluetooth.js:138 msgid "Off" msgstr "Desactivat" #: js/ui/status/bluetooth.js:140 msgid "On" msgstr "Activat" #: js/ui/status/bluetooth.js:142 js/ui/status/network.js:1299 msgid "Turn On" msgstr "Activa" #: js/ui/status/bluetooth.js:142 js/ui/status/network.js:170 #: js/ui/status/network.js:356 js/ui/status/network.js:1299 #: js/ui/status/network.js:1418 js/ui/status/nightLight.js:47 #: js/ui/status/rfkill.js:90 js/ui/status/rfkill.js:117 msgid "Turn Off" msgstr "Desactiva" #: js/ui/status/brightness.js:44 msgid "Brightness" msgstr "Brillantor" #: js/ui/status/keyboard.js:805 msgid "Show Keyboard Layout" msgstr "Mostra la disposició del teclat" #: js/ui/status/location.js:89 js/ui/status/location.js:197 msgid "Location Enabled" msgstr "Ubicació habilitada" #: js/ui/status/location.js:90 js/ui/status/location.js:198 msgid "Disable" msgstr "Inhabilita" #: js/ui/status/location.js:91 msgid "Privacy Settings" msgstr "Paràmetres de privacitat" #: js/ui/status/location.js:196 msgid "Location In Use" msgstr "Ubicació en ús" #: js/ui/status/location.js:200 msgid "Location Disabled" msgstr "Ubicació inhabilitada" #: js/ui/status/location.js:201 msgid "Enable" msgstr "Habilita" #. Translators: %s is an application name #: js/ui/status/location.js:388 #, javascript-format msgid "Give %s access to your location?" msgstr "Voleu donar a %s accés a la vostra ubicació?" #: js/ui/status/location.js:389 msgid "Location access can be changed at any time from the privacy settings." msgstr "" "Podeu canviar la configuració de l'accés a la ubicació sempre que vulgueu " "des de la configuració de la privacitat." #: js/ui/status/network.js:104 msgid "" msgstr "" #. Translators: %s is a network identifier #: js/ui/status/network.js:454 js/ui/status/network.js:1328 #, javascript-format msgid "%s Off" msgstr "%s apagat" # N.T.: p. ex. Connectat amb fil #. Translators: %s is a network identifier #: js/ui/status/network.js:457 #, javascript-format msgid "%s Connected" msgstr "Connectat %s" #. Translators: this is for network devices that are physically present but are not #. under NetworkManager's control (and thus cannot be used in the menu); #. %s is a network identifier #: js/ui/status/network.js:462 #, javascript-format msgid "%s Unmanaged" msgstr "%s no gestionat" #. Translators: %s is a network identifier #: js/ui/status/network.js:465 #, javascript-format msgid "%s Disconnecting" msgstr "%s s'està desconnectant" #. Translators: %s is a network identifier #: js/ui/status/network.js:472 js/ui/status/network.js:1320 #, javascript-format msgid "%s Connecting" msgstr "%s s'està connectant" #. Translators: this is for network connections that require some kind of key or password; %s is a network identifier #: js/ui/status/network.js:475 #, javascript-format msgid "%s Requires Authentication" msgstr "%s requereix autenticació" #. Translators: this is for devices that require some kind of firmware or kernel #. module, which is missing; %s is a network identifier #: js/ui/status/network.js:483 #, javascript-format msgid "Firmware Missing For %s" msgstr "Falta el microprogramari per %s" #. Translators: this is for a network device that cannot be activated (for example it #. is disabled by rfkill, or it has no coverage; %s is a network identifier #: js/ui/status/network.js:487 #, javascript-format msgid "%s Unavailable" msgstr "%s no disponible" #. Translators: %s is a network identifier #: js/ui/status/network.js:490 #, javascript-format msgid "%s Connection Failed" msgstr "%s ha fallat la connexió" #: js/ui/status/network.js:506 msgid "Wired Settings" msgstr "Paràmetres de la xarxa amb fil" #: js/ui/status/network.js:548 msgid "Mobile Broadband Settings" msgstr "Configuració de la xarxa de banda ampla mòbil" #. Translators: %s is a network identifier #: js/ui/status/network.js:591 js/ui/status/network.js:1325 #, javascript-format msgid "%s Hardware Disabled" msgstr "%s maquinari inhabilitat" #. Translators: this is for a network device that cannot be activated #. because it's disabled by rfkill (airplane mode); %s is a network identifier #: js/ui/status/network.js:595 #, javascript-format msgid "%s Disabled" msgstr "%s Inhabilitat" #: js/ui/status/network.js:635 msgid "Connect to Internet" msgstr "Connecta a Internet" #: js/ui/status/network.js:833 msgid "Airplane Mode is On" msgstr "El mode d'avió és actiu" #: js/ui/status/network.js:834 msgid "Wi-Fi is disabled when airplane mode is on." msgstr "Quan el mode d'avió és actiu es desactiva la xarxa sense fil." #: js/ui/status/network.js:835 msgid "Turn Off Airplane Mode" msgstr "Desactiva el mode d'avió" #: js/ui/status/network.js:844 msgid "Wi-Fi is Off" msgstr "La xarxa sense fil està desactivada" #: js/ui/status/network.js:845 msgid "Wi-Fi needs to be turned on in order to connect to a network." msgstr "S'ha d'activar la xarxa sense fil per poder-se connectar a una xarxa." #: js/ui/status/network.js:846 msgid "Turn On Wi-Fi" msgstr "Activa la xarxa sense fil" #: js/ui/status/network.js:871 msgid "Wi-Fi Networks" msgstr "Xarxes sense fil" #: js/ui/status/network.js:873 msgid "Select a network" msgstr "Trieu una xarxa" #: js/ui/status/network.js:903 msgid "No Networks" msgstr "Cap xarxa" #: js/ui/status/network.js:924 js/ui/status/rfkill.js:115 msgid "Use hardware switch to turn off" msgstr "Utilitza l'interruptor de maquinari per desactivar-la" #: js/ui/status/network.js:1191 msgid "Select Network" msgstr "Trieu una xarxa" #: js/ui/status/network.js:1197 msgid "Wi-Fi Settings" msgstr "Paràmetres de la xarxa sense fil" #. Translators: %s is a network identifier #: js/ui/status/network.js:1316 #, javascript-format msgid "%s Hotspot Active" msgstr "Hostpot %s actiu" #. Translators: %s is a network identifier #: js/ui/status/network.js:1331 #, javascript-format msgid "%s Not Connected" msgstr "%s no està connectat" #: js/ui/status/network.js:1435 msgid "connecting…" msgstr "s'està connectant..." #. Translators: this is for network connections that require some kind of key or password #: js/ui/status/network.js:1438 msgid "authentication required" msgstr "cal autenticació" #: js/ui/status/network.js:1440 msgid "connection failed" msgstr "ha fallat la connexió" #: js/ui/status/network.js:1494 msgid "VPN Settings" msgstr "Paràmetres de la VPN" #: js/ui/status/network.js:1498 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1508 msgid "VPN Off" msgstr "VPN apagada" #: js/ui/status/network.js:1572 js/ui/status/rfkill.js:93 msgid "Network Settings" msgstr "Paràmetres de xarxa" #: js/ui/status/network.js:1603 #, javascript-format msgid "%s Wired Connection" msgid_plural "%s Wired Connections" msgstr[0] "%s connexió amb fil" msgstr[1] "%s connexions amb fil" #: js/ui/status/network.js:1607 #, javascript-format msgid "%s Wi-Fi Connection" msgid_plural "%s Wi-Fi Connections" msgstr[0] "%s connexió Wifi" msgstr[1] "%s connexions Wifi" #: js/ui/status/network.js:1611 #, javascript-format msgid "%s Modem Connection" msgid_plural "%s Modem Connections" msgstr[0] "%s connexió mòdem" msgstr[1] "%s connexions mòdem" #: js/ui/status/network.js:1759 msgid "Connection failed" msgstr "Ha fallat la connexió" #: js/ui/status/network.js:1760 msgid "Activation of network connection failed" msgstr "Ha fallat l'activació de la connexió de xarxa" #: js/ui/status/nightLight.js:68 msgid "Night Light Disabled" msgstr "Llum nocturna inhabilitada" #: js/ui/status/nightLight.js:69 msgid "Night Light On" msgstr "Llum nocturna habilitada" #: js/ui/status/nightLight.js:70 msgid "Resume" msgstr "Reprén" #: js/ui/status/nightLight.js:71 msgid "Disable Until Tomorrow" msgstr "Inhabilita fins demà" #: js/ui/status/power.js:61 msgid "Power Settings" msgstr "Paràmetres d'energia" #: js/ui/status/power.js:77 msgid "Fully Charged" msgstr "Totalment carregada" #. 0 is reported when UPower does not have enough data #. to estimate battery life #: js/ui/status/power.js:84 js/ui/status/power.js:90 msgid "Estimating…" msgstr "S'està estimant la duració…" #. Translators: this is : Remaining () #: js/ui/status/power.js:98 #, javascript-format msgid "%d∶%02d Remaining (%d %%)" msgstr "Queden %d∶%02d (%d %%)" #. Translators: this is : Until Full () #: js/ui/status/power.js:103 #, javascript-format msgid "%d∶%02d Until Full (%d %%)" msgstr "%d∶%02d per completar la càrrega (%d %%)" #: js/ui/status/power.js:131 js/ui/status/power.js:133 #, javascript-format msgid "%d %%" msgstr "%d %%" #. The menu only appears when airplane mode is on, so just #. statically build it as if it was on, rather than dynamically #. changing the menu contents. #: js/ui/status/rfkill.js:88 msgid "Airplane Mode On" msgstr "El mode d'avió és actiu" #: js/ui/status/system.js:228 msgid "Switch User" msgstr "Canvia d'usuari" #: js/ui/status/system.js:240 msgid "Log Out" msgstr "Ix" #: js/ui/status/system.js:252 msgid "Account Settings" msgstr "Paràmetres del compte" #: js/ui/status/system.js:269 msgid "Orientation Lock" msgstr "Bloqueja l'orientació" #: js/ui/status/system.js:295 msgid "Suspend" msgstr "Atura temporalment" #: js/ui/status/system.js:305 msgid "Power Off" msgstr "Apaga" #: js/ui/status/volume.js:128 msgid "Volume changed" msgstr "S'ha canviat el volum" #: js/ui/status/volume.js:170 msgid "Volume" msgstr "Volum" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:21 msgid "Mirror" msgstr "Mirall" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:26 msgid "Join Displays" msgstr "Uneix pantalles" #. Translators: this is for using only an external display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:31 msgid "External Only" msgstr "Només extern" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:36 msgid "Built-in Only" msgstr "Només l'integrat" #: js/ui/unlockDialog.js:67 msgid "Log in as another user" msgstr "Entra amb un altre usuari" #: js/ui/unlockDialog.js:84 msgid "Unlock Window" msgstr "Desbloqueja la finestra" #: js/ui/viewSelector.js:190 msgid "Applications" msgstr "Aplicacions" #: js/ui/viewSelector.js:194 msgid "Search" msgstr "Busca" #: js/ui/windowAttentionHandler.js:20 #, javascript-format msgid "“%s” is ready" msgstr "«%s» ja està a punt" #: js/ui/windowManager.js:72 msgid "Do you want to keep these display settings?" msgstr "Voleu mantindre esta configuració de la pantalla?" #. Translators: this and the following message should be limited in lenght, #. to avoid ellipsizing the labels. #. #: js/ui/windowManager.js:84 msgid "Revert Settings" msgstr "Descarta els canvis" #: js/ui/windowManager.js:87 msgid "Keep Changes" msgstr "Mantén els canvis" #: js/ui/windowManager.js:105 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "Es descartaran els canvis d'ací %d segon" msgstr[1] "Es descartaran els canvis d'ací %d segons" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:660 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:34 msgid "Minimize" msgstr "Minimitza" #: js/ui/windowMenu.js:41 msgid "Unmaximize" msgstr "Desmaximitza" #: js/ui/windowMenu.js:45 msgid "Maximize" msgstr "Maximitza" #: js/ui/windowMenu.js:52 msgid "Move" msgstr "Mou" #: js/ui/windowMenu.js:58 msgid "Resize" msgstr "Reajusta" #: js/ui/windowMenu.js:65 msgid "Move Titlebar Onscreen" msgstr "Mou la barra de títol a la pantalla" #: js/ui/windowMenu.js:70 msgid "Always on Top" msgstr "Sempre per damunt" #: js/ui/windowMenu.js:89 msgid "Always on Visible Workspace" msgstr "Sempre a l'espai de treball visible" #: js/ui/windowMenu.js:103 msgid "Move to Workspace Left" msgstr "Mou a l'espai de treball esquerre" #: js/ui/windowMenu.js:108 msgid "Move to Workspace Right" msgstr "Mou a l'espai de treball dret" #: js/ui/windowMenu.js:113 msgid "Move to Workspace Up" msgstr "Mou a l'espai de treball superior" #: js/ui/windowMenu.js:118 msgid "Move to Workspace Down" msgstr "Mou a l'espai de treball inferior" #: js/ui/windowMenu.js:134 msgid "Move to Monitor Up" msgstr "Mou a la pantalla de dalt" #: js/ui/windowMenu.js:140 msgid "Move to Monitor Down" msgstr "Mou a la pantalla de baix" #: js/ui/windowMenu.js:146 msgid "Move to Monitor Left" msgstr "Mou a la pantalla de l'esquerra" #: js/ui/windowMenu.js:152 msgid "Move to Monitor Right" msgstr "Mou a la pantalla de la dreta" #: src/calendar-server/evolution-calendar.desktop.in:3 msgid "Evolution Calendar" msgstr "Calendari de l'Evolution" #. Translators: Do NOT translate or transliterate this text (this is an icon file name)! #: src/calendar-server/evolution-calendar.desktop.in:6 msgid "evolution" msgstr "evolution" #: src/main.c:380 msgid "Print version" msgstr "Mostra la versió" #: src/main.c:386 msgid "Mode used by GDM for login screen" msgstr "El mode que utilitzarà el GDM per a la pantalla d'entrada" #: src/main.c:392 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "Utilitza un mode específic, p. ex. «gdm» per la pantalla d'entrada" #: src/main.c:398 msgid "List possible modes" msgstr "Llista els modes possibles" #: src/shell-app.c:270 msgctxt "program" msgid "Unknown" msgstr "Desconegut" #: src/shell-app.c:511 #, c-format msgid "Failed to launch “%s”" msgstr "No s'ha pogut iniciar «%s»" #: src/shell-keyring-prompt.c:730 msgid "Passwords do not match." msgstr "Les contrasenyes no coincideixen." #: src/shell-keyring-prompt.c:738 msgid "Password cannot be blank" msgstr "La contrasenya no pot ser buida" #: src/shell-polkit-authentication-agent.c:353 msgid "Authentication dialog was dismissed by the user" msgstr "L'usuari ha descartat el diàleg d'autenticació" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1873 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u eixida" msgstr[1] "%u eixides" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1883 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u entrada" msgstr[1] "%u entrades" #: subprojects/gvc/gvc-mixer-control.c:2738 msgid "System Sounds" msgstr "Sons del sistema" #~ msgid "Hide tray" #~ msgstr "Oculta la Safata" #~ msgid "Status Icons" #~ msgstr "Icones d'estat" #~ msgid "Events" #~ msgstr "Cites" #~ msgid "Notifications" #~ msgstr "Notificacions" #~ msgid "Clear section" #~ msgstr "Neteja la secció" #~ msgid "Media" #~ msgstr "Multimèdia" #~ msgid "Web Authentication Redirect" #~ msgstr "Redirecció per l'autenticació web" #~ msgid "%d x %d" #~ msgstr "%d x %d" #~ msgid "Not In Use" #~ msgstr "No s'usa" #~ msgid "GNOME Shell Extension Preferences" #~ msgstr "Preferències de les extensions del GNOME Shell" #~ msgid "Show the week date in the calendar" #~ msgstr "Mostra el número de la setmana al calendari" #~ msgid "If true, display the ISO week date in the calendar." #~ msgstr "Si és «true» (cert) es mostra el número de la setmana al calendari." #~ msgid "Use as Internet connection" #~ msgstr "Utilitza com a connexió a Internet" #~ msgid "%s is requesting access to your location." #~ msgstr "%s està demanant accés a la vostra ubicació." #~ msgid "GNOME Shell (wayland compositor)" #~ msgstr "GNOME Shell (composició mitjançant Wayland)" #~ msgid "%d Connected Device" #~ msgid_plural "%d Connected Devices" #~ msgstr[0] "%d dispositiu connectat" #~ msgstr[1] "%d dispositius connectats" #~ msgid "Authentication required" #~ msgstr "Cal autenticació" #~ msgid "UPS" #~ msgstr "UPS" #~ msgid "Battery" #~ msgstr "Bateria" #~ msgid "Airplane Mode" #~ msgstr "Mode d'avió" #~ msgid "Show the message tray" #~ msgstr "Mostra la safata de missatges" #~ msgid "Captive Portal" #~ msgstr "Portal captiu" #~ msgctxt "event list time" #~ msgid "%H∶%M" #~ msgstr "%H∶%M" #~ msgctxt "event list time" #~ msgid "%l∶%M %p" #~ msgstr "%l∶%M %p" #~ msgctxt "list sunday" #~ msgid "Su" #~ msgstr "Dg." #~ msgctxt "list monday" #~ msgid "M" #~ msgstr "Dl." #~ msgctxt "list tuesday" #~ msgid "T" #~ msgstr "Dt." #~ msgctxt "list wednesday" #~ msgid "W" #~ msgstr "Dc." #~ msgctxt "list thursday" #~ msgid "Th" #~ msgstr "Dj." #~ msgctxt "list friday" #~ msgid "F" #~ msgstr "Dv." #~ msgctxt "list saturday" #~ msgid "S" #~ msgstr "Ds." #~ msgid "Nothing Scheduled" #~ msgstr "No hi ha res apuntat" #~ msgid "Today" #~ msgstr "Avui" #~ msgid "Tomorrow" #~ msgstr "Demà" #~ msgid "This week" #~ msgstr "Aquesta setmana" #~ msgid "Next week" #~ msgstr "La setmana que ve" #~ msgid "Removable Devices" #~ msgstr "Dispositius extraïbles" #~ msgid "Eject" #~ msgstr "Expulsa" #~ msgid "Invitation" #~ msgstr "Invitació" #~ msgid "Call" #~ msgstr "Trucada" #~ msgid "File Transfer" #~ msgstr "Transferència de fitxers" #~ msgid "Chat" #~ msgstr "Xat" #~ msgid "Unmute" #~ msgstr "Amb so" #~ msgid "Mute" #~ msgstr "Silencia" #~ msgid "Invitation to %s" #~ msgstr "Us han convidat a entrar a %s" #~ msgid "%s is inviting you to join %s" #~ msgstr "En/na %s us convida a entrar a %s" #~ msgid "Decline" #~ msgstr "Declina" #~ msgid "Accept" #~ msgstr "Accepta" #~ msgid "Video call from %s" #~ msgstr "Videotrucada de %s" #~ msgid "Call from %s" #~ msgstr "Trucada de %s" #~ msgid "Answer" #~ msgstr "Contesta" #~ msgid "%s is sending you %s" #~ msgstr "En/na %s us envia %s" #~ msgid "%s would like permission to see when you are online" #~ msgstr "%s vol poder saber quan esteu en línia" #~ msgid "Authentication failed" #~ msgstr "Ha fallat l'autenticació" #~ msgid "Encryption error" #~ msgstr "Error d'encriptació" #~ msgid "Certificate not provided" #~ msgstr "No s'ha proporcionat el certificat" #~ msgid "Certificate untrusted" #~ msgstr "El certificat no és de confiança" #~ msgid "Certificate expired" #~ msgstr "El certificat ha vençut" #~ msgid "Certificate not activated" #~ msgstr "El certificat no està activat" #~ msgid "Certificate hostname mismatch" #~ msgstr "No coincideix el nom de la màquina del certificat" #~ msgid "Certificate fingerprint mismatch" #~ msgstr "No coincideix l'empremta digital del certificat" #~ msgid "Certificate self-signed" #~ msgstr "Certificat signat per un mateix" #~ msgid "Status is set to offline" #~ msgstr "S'ha establert l'estat a fora de línia" #~ msgid "Certificate is invalid" #~ msgstr "El certificat no és vàlid" #~ msgid "Connection has been refused" #~ msgstr "S'ha rebutjat la connexió" #~ msgid "Connection can't be established" #~ msgstr "No es pot establir la connexió" #~ msgid "Connection has been lost" #~ msgstr "S'ha perdut la connexió" #~ msgid "This account is already connected to the server" #~ msgstr "Aquest compte ja està connectat al servidor" #~ msgid "" #~ "Connection has been replaced by a new connection using the same resource" #~ msgstr "" #~ "S'ha reemplaçat la connexió per una altra de nova fent servir el mateix " #~ "recurs" #~ msgid "The account already exists on the server" #~ msgstr "Ja existeix aquest compte al servidor" #~ msgid "Server is currently too busy to handle the connection" #~ msgstr "El servidor està massa ocupat per gestionar la connexió" #~ msgid "Certificate has been revoked" #~ msgstr "S'ha revocat el certificat" #~ msgid "" #~ "Certificate uses an insecure cipher algorithm or is cryptographically weak" #~ msgstr "" #~ "El certificat utilitza un algorisme criptogràfic no segur o la seva " #~ "fortalesa criptogràfica és feble" #~ msgid "" #~ "The length of the server certificate, or the depth of the server " #~ "certificate chain, exceed the limits imposed by the cryptography library" #~ msgstr "" #~ "La llargada del certificat del servidor o la profunditat de la cadena de " #~ "certificació excedeix els límits de la biblioteca criptogràfica" #~ msgid "Internal error" #~ msgstr "S'ha produït un error intern" #~ msgid "Unable to connect to %s" #~ msgstr "No es pot connectar a %s" #~ msgid "View account" #~ msgstr "Mostra el compte" #~ msgid "Open Calendar" #~ msgstr "Obre el calendari" #~ msgid "Date & Time Settings" #~ msgstr "Configuració de la data i de l'hora" #~ msgid "Open" #~ msgstr "Obre" #~ msgid "Remove" #~ msgstr "Suprimeix" #~ msgid "Clear Messages" #~ msgstr "Neteja els missatges" #~ msgid "Notification Settings" #~ msgstr "Configuració de les notificacions" #~ msgid "Tray Menu" #~ msgstr "Menú de la safata" #~ msgid "No Messages" #~ msgstr "No hi ha cap missatge" #~ msgid "Message Tray" #~ msgstr "Safata de missatges" 07070100000224000081A40000000000000000000000016712993F00011A9A000000000000000000000000000000000000001B00000000gnome-shell-47.1/po/ckb.po# Kurdish (Sorani) translation for gnome-shell # Copyright (c) 2020 Rosetta Contributors and Canonical Ltd 2020 # This file is distributed under the same license as the gnome-shell package. # FIRST AUTHOR , 2020. # msgid "" msgstr "" "Project-Id-Version: gnome-shell\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2020-01-13 09:13+0000\n" "PO-Revision-Date: 2020-03-28 18:37+0300\n" "Last-Translator: Jwtiyar Nariman \n" "Language-Team: Kurdish (Sorani) \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-Launchpad-Export-Date: 2020-03-28 15:36+0000\n" "X-Generator: Poedit 2.3\n" "Language: ckb\n" #: data/gnome-shell-extension-prefs.desktop.in.in:4 #: js/extensionPrefs/main.js:211 msgid "Shell Extensions" msgstr "" #: data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "ڕێکخستنی زیادکراوەکانی گنۆم شێڵ" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "شێڵی گنۆم" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" #: data/org.gnome.shell.gschema.xml.in:45 msgid "Disables the validation of extension version compatibility" msgstr "" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" #: data/org.gnome.shell.gschema.xml.in:54 msgid "List of desktop file IDs for favorite applications" msgstr "" #: data/org.gnome.shell.gschema.xml.in:55 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" #: data/org.gnome.shell.gschema.xml.in:62 msgid "App Picker View" msgstr "" #: data/org.gnome.shell.gschema.xml.in:63 msgid "Index of the currently selected view in the application picker." msgstr "" #: data/org.gnome.shell.gschema.xml.in:69 msgid "History for command (Alt-F2) dialog" msgstr "" #. Translators: looking glass is a debugger and inspector tool, see https://wiki.gnome.org/Projects/GnomeShell/LookingGlass #: data/org.gnome.shell.gschema.xml.in:74 msgid "History for the looking glass dialog" msgstr "" #: data/org.gnome.shell.gschema.xml.in:78 msgid "Always show the “Log out” menu item in the user menu." msgstr "" #: data/org.gnome.shell.gschema.xml.in:79 msgid "" "This key overrides the automatic hiding of the “Log out” menu item in single-" "user, single-session situations." msgstr "" #: data/org.gnome.shell.gschema.xml.in:86 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" #: data/org.gnome.shell.gschema.xml.in:87 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" #: data/org.gnome.shell.gschema.xml.in:96 msgid "" "Whether the default Bluetooth adapter had set up devices associated to it" msgstr "" #: data/org.gnome.shell.gschema.xml.in:97 msgid "" "The shell will only show a Bluetooth menu item if a Bluetooth adapter is " "powered, or if there were devices set up associated with the default " "adapter. This will be reset if the default adapter is ever seen not to have " "devices associated to it." msgstr "" #: data/org.gnome.shell.gschema.xml.in:106 msgid "Enable introspection API" msgstr "" #: data/org.gnome.shell.gschema.xml.in:107 msgid "" "Enables a D-Bus API that allows to introspect the application state of the " "shell." msgstr "" #: data/org.gnome.shell.gschema.xml.in:119 msgid "Keybinding to open the application menu" msgstr "" #: data/org.gnome.shell.gschema.xml.in:120 msgid "Keybinding to open the application menu." msgstr "" #: data/org.gnome.shell.gschema.xml.in:126 msgid "Keybinding to open the “Show Applications” view" msgstr "" #: data/org.gnome.shell.gschema.xml.in:127 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "" #: data/org.gnome.shell.gschema.xml.in:134 msgid "Keybinding to open the overview" msgstr "" #: data/org.gnome.shell.gschema.xml.in:135 msgid "Keybinding to open the Activities Overview." msgstr "" #: data/org.gnome.shell.gschema.xml.in:141 msgid "Keybinding to toggle the visibility of the notification list" msgstr "" #: data/org.gnome.shell.gschema.xml.in:142 msgid "Keybinding to toggle the visibility of the notification list." msgstr "" #: data/org.gnome.shell.gschema.xml.in:148 msgid "Keybinding to focus the active notification" msgstr "" #: data/org.gnome.shell.gschema.xml.in:149 msgid "Keybinding to focus the active notification." msgstr "" #: data/org.gnome.shell.gschema.xml.in:155 msgid "Switch to application 1" msgstr "گۆڕین بۆ داوانامەی ١" #: data/org.gnome.shell.gschema.xml.in:159 msgid "Switch to application 2" msgstr "گۆڕین بۆ داوانامەی ٢" #: data/org.gnome.shell.gschema.xml.in:163 msgid "Switch to application 3" msgstr "گۆڕین بۆ داوانامەی ٣" #: data/org.gnome.shell.gschema.xml.in:167 msgid "Switch to application 4" msgstr "گۆڕین بۆ داوانامەی ٤" #: data/org.gnome.shell.gschema.xml.in:171 msgid "Switch to application 5" msgstr "گۆڕین بۆ داوانامەی ٥" #: data/org.gnome.shell.gschema.xml.in:175 msgid "Switch to application 6" msgstr "گۆڕین بۆ داوانامەی ٦" #: data/org.gnome.shell.gschema.xml.in:179 msgid "Switch to application 7" msgstr "گۆڕین بۆ داوانامەی ٧" #: data/org.gnome.shell.gschema.xml.in:183 msgid "Switch to application 8" msgstr "گۆڕین بۆ داوانامەی ٨" #: data/org.gnome.shell.gschema.xml.in:187 msgid "Switch to application 9" msgstr "گۆڕین بۆ داوانامەی ٩" #: data/org.gnome.shell.gschema.xml.in:196 #: data/org.gnome.shell.gschema.xml.in:223 msgid "Limit switcher to current workspace." msgstr "گۆڕەڕ سنوردار بکە تەنها بۆ ئەم شوێنکارە" #: data/org.gnome.shell.gschema.xml.in:197 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" #: data/org.gnome.shell.gschema.xml.in:214 msgid "The application icon mode." msgstr "دۆخی وێنۆچکەی داوانامە." #: data/org.gnome.shell.gschema.xml.in:215 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-" "only” (shows only the application icon) or “both”." msgstr "" #: data/org.gnome.shell.gschema.xml.in:224 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" #: data/org.gnome.shell.gschema.xml.in:234 msgid "Locations" msgstr "شوێنەکان" #: data/org.gnome.shell.gschema.xml.in:235 msgid "The locations to show in world clocks" msgstr "ئەو شوێنانەی پیشان بدرێت لە کاتژمێری جیهانی" #: data/org.gnome.shell.gschema.xml.in:245 msgid "Automatic location" msgstr "شوێنی خۆکار" #: data/org.gnome.shell.gschema.xml.in:246 msgid "Whether to fetch the current location or not" msgstr "" #: data/org.gnome.shell.gschema.xml.in:253 msgid "Location" msgstr "شوێن" #: data/org.gnome.shell.gschema.xml.in:254 msgid "The location for which to show a forecast" msgstr "شوێنی کوێ بۆ پیشاندانی کەش" #: data/org.gnome.shell.gschema.xml.in:266 msgid "Attach modal dialog to the parent window" msgstr "" #: data/org.gnome.shell.gschema.xml.in:267 #: data/org.gnome.shell.gschema.xml.in:276 #: data/org.gnome.shell.gschema.xml.in:284 #: data/org.gnome.shell.gschema.xml.in:292 #: data/org.gnome.shell.gschema.xml.in:300 msgid "" "This key overrides the key in org.gnome.mutter when running GNOME Shell." msgstr "" #: data/org.gnome.shell.gschema.xml.in:275 msgid "Enable edge tiling when dropping windows on screen edges" msgstr "" #: data/org.gnome.shell.gschema.xml.in:283 msgid "Workspaces are managed dynamically" msgstr "" #: data/org.gnome.shell.gschema.xml.in:291 msgid "Workspaces only on primary monitor" msgstr "" #: data/org.gnome.shell.gschema.xml.in:299 msgid "Delay focus changes in mouse mode until the pointer stops moving" msgstr "" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "چوونەژوورەوەی ڕایەڵە" #. Translators: Do NOT translate or transliterate this text (this is an icon file name)! #: data/org.gnome.Shell.PortalHelper.desktop.in.in:9 msgid "network-workgroup" msgstr "network-workgroup" #: js/extensionPrefs/main.js:261 js/extensionPrefs/ui/extensions-window.ui:222 msgid "Something’s gone wrong" msgstr "هەندێک هەڵە ڕوویدا" #: js/extensionPrefs/main.js:268 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" #: js/extensionPrefs/main.js:275 msgid "Technical Details" msgstr "زانیاری تەکنیکی" #: js/extensionPrefs/main.js:310 msgid "Copy Error" msgstr "هەڵە لەبەربگرەوە" #: js/extensionPrefs/main.js:337 msgid "Homepage" msgstr "پەڕەی سەرەکی" #: js/extensionPrefs/main.js:338 msgid "Visit extension homepage" msgstr "سەردانی ماڵپەڕی زیادکراو بکە" #: js/extensionPrefs/main.js:477 msgid "No Extensions Installed" msgstr "" #: js/extensionPrefs/main.js:487 msgid "" "Extensions can be installed through Software or extensions.gnome.org." msgstr "" #: js/extensionPrefs/main.js:502 msgid "Browse in Software" msgstr "" #: js/extensionPrefs/ui/extensions-window.ui:234 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" #: js/extensionPrefs/main.js:144 js/gdm/authPrompt.js:135 #: js/ui/audioDeviceSelection.js:57 js/ui/components/networkAgent.js:107 #: js/ui/components/polkitAgent.js:139 js/ui/endSessionDialog.js:374 #: js/ui/extensionDownloader.js:177 js/ui/shellMountOperation.js:376 #: js/ui/shellMountOperation.js:386 js/ui/status/network.js:913 msgid "Cancel" msgstr "پاشگەزبوونەوە" #: js/gdm/authPrompt.js:158 js/gdm/authPrompt.js:201 js/gdm/authPrompt.js:433 msgid "Next" msgstr "" #: js/ui/shellMountOperation.js:380 msgid "Unlock" msgstr "کردنەوە" #: js/gdm/authPrompt.js:199 msgctxt "button" msgid "Sign In" msgstr "" #: js/gdm/loginDialog.js:318 msgid "Choose Session" msgstr "دانیشتن هەڵبژێرە" #: js/gdm/loginDialog.js:457 msgid "Not listed?" msgstr "لە لیستەکەدا نیە؟" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:912 #, javascript-format msgid "(e.g., user or %s)" msgstr "" #. TTLS and PEAP are actually much more complicated, but this complication #. is not visible here since we only care about phase2 authentication #. (and don't even care of which one) #: js/gdm/loginDialog.js:884 js/ui/components/networkAgent.js:248 #: js/ui/components/networkAgent.js:268 js/ui/components/networkAgent.js:286 msgid "Username: " msgstr "" #: js/gdm/loginDialog.js:1253 msgid "Login Window" msgstr "پەنجەرەی چوونەژوورەوە" #: js/gdm/util.js:338 msgid "Authentication error" msgstr "هەڵە لە ڕێپێدان" #. We don't show fingerprint messages directly since it's #. not the main auth service. Instead we use the messages #. as a cue to display our own message. #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger instead #: js/gdm/util.js:473 msgid "(or swipe finger)" msgstr "" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:89 msgctxt "search-result" msgid "Power Off" msgstr "بیکوژێنەوە" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:92 msgid "power off;shutdown;reboot;restart" msgstr "" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:97 msgctxt "search-result" msgid "Lock Screen" msgstr "پەردەی بەکلیلکراو" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:100 msgid "lock screen" msgstr "پەردەی بەکلیلکراو" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:105 msgctxt "search-result" msgid "Log Out" msgstr "دەرچوون" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:108 msgid "logout;log out;sign off" msgstr "logout;log out;sign off" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:113 msgctxt "search-result" msgid "Suspend" msgstr "ڕاگرتن" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:116 msgid "suspend;sleep" msgstr "suspend;sleep" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:121 msgctxt "search-result" msgid "Switch User" msgstr "گۆڕینی بەکارهێنەر" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:124 msgid "switch user" msgstr "گۆڕینی بەکارهێنەر" #. Translators: The name of the lock orientation action in search #: js/misc/systemActions.js:129 msgctxt "search-result" msgid "Lock Orientation" msgstr "" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:132 msgid "lock orientation;screen;rotation" msgstr "" #: js/misc/util.js:120 msgid "Command not found" msgstr "فرمان نەدۆزرایەوە" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:156 msgid "Could not parse command:" msgstr "" #: js/misc/util.js:164 #, javascript-format msgid "Execution of “%s” failed:" msgstr "جێبەجێکردنی “%s” سەرکەوتوو نەبوو:" #: js/misc/util.js:181 msgid "Just now" msgstr "هەر ئێستا" #: js/misc/util.js:183 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d خولەک پێش ئێستا" msgstr[1] "%d خولەک پێش ئێستا" #: js/misc/util.js:187 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d کاژێر پێش ئێستا" msgstr[1] "%d کاژێر پێش ئێستا" #: js/misc/util.js:191 msgid "Yesterday" msgstr "دوێنێ" #: js/misc/util.js:193 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d ڕۆژ پێش ئێستا" msgstr[1] "%d ڕۆژ پێش ئێستا" #: js/misc/util.js:197 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d هەفتە پێش ئێستا" msgstr[1] "%d هەفتە پێش ئێستا" #: js/misc/util.js:201 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%d مانگ پێش ئێستا" msgstr[1] "%d مانگ پێش ئێستا" #: js/misc/util.js:204 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "%d ساڵ پێش ئێستا" msgstr[1] "%d ساڵ پێش ئێستا" #. Translators: Time in 24h format #: js/misc/util.js:237 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/util.js:243 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "دوێنێ, %H∶%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/util.js:249 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/util.js:255 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%B %-d, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/util.js:261 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%B %-d %Y, %H∶%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/util.js:266 msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/util.js:272 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "دوێنێ, %l∶%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/util.js:278 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/util.js:284 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%B %-d, %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/util.js:290 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%B %-d %Y, %l∶%M %p" #. TRANSLATORS: this is the title of the wifi captive portal login window #: js/portalHelper/main.js:41 msgid "Hotspot Login" msgstr "چوونەژوورەوەی هۆتسپۆت" #: js/portalHelper/main.js:87 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:39 js/ui/status/location.js:374 msgid "Deny Access" msgstr "چوونەناو رەتبکەرەوە" #: js/ui/accessDialog.js:40 js/ui/status/location.js:377 msgid "Grant Access" msgstr "چوونەناو بەدەستبهێنە" #: js/ui/appDisplay.js:906 msgid "Unnamed Folder" msgstr "بوخچەی بێ ناو" #: js/ui/appDisplay.js:929 msgid "Frequently used applications will appear here" msgstr "" #: js/ui/appDisplay.js:1064 msgid "Frequent" msgstr "نوێترین" #: js/ui/appDisplay.js:1071 msgid "All" msgstr "هەمووی" #: js/ui/appDisplay.js:1789 msgid "Rename" msgstr "ناولێنان" #. Translators: This is the heading of a list of open windows #: js/ui/appDisplay.js:2450 js/ui/panel.js:75 msgid "Open Windows" msgstr "پەنجەرەکان بکرەوە" #: js/ui/appDisplay.js:2470 js/ui/panel.js:82 msgid "New Window" msgstr "پەنجەرەیەکی نوێ" #: js/ui/appDisplay.js:2481 msgid "Launch using Dedicated Graphics Card" msgstr "" #: js/ui/appDisplay.js:2509 js/ui/dash.js:239 msgid "Remove from Favorites" msgstr "سڕینەوە لە دڵخوازەکان" #: js/ui/appDisplay.js:2515 msgid "Add to Favorites" msgstr "زیادکردن بۆ دڵخوازەکان" #: js/ui/appDisplay.js:2525 js/ui/panel.js:93 msgid "Show Details" msgstr "پیشاندانی وردەکارییەکان" #: js/ui/appFavorites.js:152 #, javascript-format msgid "%s has been added to your favorites." msgstr "%s زیاد کرا بۆ دڵخوازەکان." #: js/ui/appFavorites.js:185 #, javascript-format msgid "%s has been removed from your favorites." msgstr "%s سڕایەوە لە دڵخوازەکان." #: js/ui/audioDeviceSelection.js:41 msgid "Select Audio Device" msgstr "ئامێری دەنگ دیاریبکە" #: js/ui/audioDeviceSelection.js:54 msgid "Sound Settings" msgstr "ڕێکخستنەکانی دەنگ" #: js/ui/audioDeviceSelection.js:64 msgid "Headphones" msgstr "بیستۆکی گوێ" #: js/ui/audioDeviceSelection.js:66 msgid "Headset" msgstr "بیستۆک" #: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:269 msgid "Microphone" msgstr "مایکرۆفۆن" #: js/ui/backgroundMenu.js:14 msgid "Change Background…" msgstr "پاشبنەما بگۆڕە" #: js/ui/backgroundMenu.js:16 js/ui/status/nightLight.js:45 msgid "Display Settings" msgstr "ڕێکخستنی روونما" #: js/ui/backgroundMenu.js:17 msgid "Settings" msgstr "ڕێكخستنەكان" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:41 msgctxt "calendar-no-work" msgid "06" msgstr "٠٦" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:70 msgctxt "grid sunday" msgid "S" msgstr "ی" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:72 msgctxt "grid monday" msgid "M" msgstr "د" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:74 msgctxt "grid tuesday" msgid "T" msgstr "س" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:76 msgctxt "grid wednesday" msgid "W" msgstr "چ" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:78 msgctxt "grid thursday" msgid "T" msgstr "پ" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:80 msgctxt "grid friday" msgid "F" msgstr "هـ" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:82 msgctxt "grid saturday" msgid "S" msgstr "ش" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:371 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:381 msgid "%OB %Y" msgstr "%OB %Y" #: js/ui/calendar.js:440 msgid "Previous month" msgstr "مانگی پێشوو" #: js/ui/calendar.js:455 msgid "Next month" msgstr "مانگی داهاتوو" #: js/ui/calendar.js:605 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:661 msgid "Week %V" msgstr "هەفتەی %V" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/calendar.js:730 msgctxt "event list time" msgid "All Day" msgstr "هه‌موو ڕۆژێك" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/calendar.js:867 msgctxt "calendar heading" msgid "%A, %B %-d" msgstr "%A, %B %-d" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/calendar.js:870 msgctxt "calendar heading" msgid "%A, %B %-d, %Y" msgstr "%A, %B %-d, %Y" #: js/ui/calendar.js:1096 msgid "No Notifications" msgstr "ئاگانامە نیە" #: js/ui/calendar.js:1099 msgid "No Events" msgstr "ڕووداو نیە" #: js/ui/calendar.js:1167 msgid "Clear" msgstr "پاککردنەوە" #. Translators: %s is an application name #: js/ui/closeDialog.js:42 #, javascript-format msgid "“%s” is not responding." msgstr "“%s” وەڵام ناداتەوە." #: js/ui/closeDialog.js:43 msgid "" "You may choose to wait a short while for it to continue or force the " "application to quit entirely." msgstr "" #: js/ui/closeDialog.js:70 msgid "Force Quit" msgstr "دەرچوون بە زەبر" #: js/ui/closeDialog.js:73 msgid "Wait" msgstr "چاوەڕێبکە" #: js/ui/components/automountManager.js:86 msgid "External drive connected" msgstr "وەگەڕخەری دەرەکی پەیوەستکرا" #: js/ui/components/automountManager.js:98 msgid "External drive disconnected" msgstr "وەگەڕخەری دەرەکی پەیوەست نەکرا" #: js/ui/components/automountManager.js:208 msgid "Unable to unlock volume" msgstr "" #: js/ui/components/automountManager.js:209 msgid "The installed udisks version does not support the PIM setting" msgstr "" #: js/ui/components/autorunManager.js:333 #, javascript-format msgid "Open with %s" msgstr "بیکەرەوە لە ڕێگەی %s" #: js/ui/components/keyring.js:67 js/ui/components/polkitAgent.js:260 msgid "Password:" msgstr "تێپه‌ڕه‌وشه‌:" #: js/ui/components/keyring.js:100 msgid "Type again:" msgstr "" #: js/ui/components/networkAgent.js:89 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router." msgstr "" #: js/ui/components/networkAgent.js:101 js/ui/status/network.js:223 #: js/ui/status/network.js:314 js/ui/status/network.js:916 msgid "Connect" msgstr "پەیوەندی ببەستە" #. Cisco LEAP #: js/ui/components/networkAgent.js:217 js/ui/components/networkAgent.js:229 #: js/ui/components/networkAgent.js:251 js/ui/components/networkAgent.js:270 #: js/ui/components/networkAgent.js:290 js/ui/components/networkAgent.js:300 msgid "Password: " msgstr "" #. static WEP #: js/ui/components/networkAgent.js:222 msgid "Key: " msgstr "" #: js/ui/components/networkAgent.js:254 js/ui/components/networkAgent.js:276 msgid "Private key password: " msgstr "" #: js/ui/components/networkAgent.js:274 msgid "Identity: " msgstr "" #: js/ui/components/networkAgent.js:288 msgid "Service: " msgstr "" #: js/ui/components/networkAgent.js:317 js/ui/components/networkAgent.js:692 msgid "Authentication required by wireless network" msgstr "" #: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:686 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network " "“%s”." msgstr "" #: js/ui/components/networkAgent.js:315 js/ui/components/networkAgent.js:690 msgid "Wired 802.1X authentication" msgstr "" #: js/ui/components/networkAgent.js:324 msgid "Network name: " msgstr "" #: js/ui/components/networkAgent.js:322 js/ui/components/networkAgent.js:694 msgid "DSL authentication" msgstr "" #: js/ui/components/networkAgent.js:329 js/ui/components/networkAgent.js:699 msgid "PIN code required" msgstr "" #: js/ui/components/networkAgent.js:330 js/ui/components/networkAgent.js:700 msgid "PIN code is needed for the mobile broadband device" msgstr "" #: js/ui/components/networkAgent.js:338 msgid "PIN: " msgstr "" #: js/ui/components/networkAgent.js:345 js/ui/components/networkAgent.js:713 msgid "Mobile broadband network password" msgstr "" #: js/ui/components/networkAgent.js:339 js/ui/components/networkAgent.js:691 #: js/ui/components/networkAgent.js:695 js/ui/components/networkAgent.js:707 #: js/ui/components/networkAgent.js:711 #, javascript-format msgid "A password is required to connect to “%s”." msgstr "" #: js/ui/components/networkAgent.js:674 js/ui/status/network.js:1691 msgid "Network Manager" msgstr "ڕێکخەری ڕایەڵە" #: js/ui/components/polkitAgent.js:39 msgid "Authentication Required" msgstr "ڕێگەپێدان داواکراوە" #: js/ui/components/polkitAgent.js:80 msgid "Administrator" msgstr "بەڕێوەبەر" #: js/ui/components/polkitAgent.js:142 msgid "Authenticate" msgstr "رێگەپێدان" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:254 js/ui/shellMountOperation.js:402 msgid "Sorry, that didn’t work. Please try again." msgstr "ببورە، ئەوە کاری نەکرد. تکایە هەوڵبدە رەوە" #. Translators: this is the other person changing their old IM name to their new #. IM name. #: js/ui/components/telepathyClient.js:787 #, javascript-format msgid "%s is now known as %s" msgstr "" #: js/ui/ctrlAltTab.js:21 js/ui/viewSelector.js:177 msgid "Windows" msgstr "پەنجەرەکان" #: js/ui/dash.js:200 js/ui/dash.js:241 msgid "Show Applications" msgstr "داوانامەکان پیشان بدە" #. Translators: this is the name of the dock/favorites area on #. the left of the overview #: js/ui/dash.js:394 msgid "Dash" msgstr "" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:75 msgid "%B %-d %Y" msgstr "%B %-d %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:82 msgid "%A %B %e %Y" msgstr "%A %B %e %Y" #: js/ui/dateMenu.js:161 msgid "Add world clocks…" msgstr "زیادکردنی کاتژمێری جیهانی..." #: js/ui/dateMenu.js:162 msgid "World Clocks" msgstr "کاتژمێری جیهانی" #: js/ui/dateMenu.js:276 msgid "Weather" msgstr "که‌ش وهه‌وا" #: js/ui/dateMenu.js:391 msgid "Select a location…" msgstr "شوێن دیاریبکە..." #: js/ui/dateMenu.js:404 msgid "Loading…" msgstr "باردەکرێت..." #: js/ui/dateMenu.js:414 msgid "Go online for weather information" msgstr "بچۆ سەرهێڵ بۆ زانیاری کەش وهەوا" #: js/ui/dateMenu.js:416 msgid "Weather information is currently unavailable" msgstr "زانیاری کەش وهەوا ئێستا بەردەست نیە" #: js/ui/endSessionDialog.js:37 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "بچۆ دەرەوە %s" #: js/ui/endSessionDialog.js:38 msgctxt "title" msgid "Log Out" msgstr "دەرچوون" #: js/ui/endSessionDialog.js:40 #, javascript-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "%s دەچیتە دەرەوە خۆکارانە پاش %d چرکە." msgstr[1] "%s دەچیتە دەرەوە خۆکارانە پاش %d چرکە." #: js/ui/endSessionDialog.js:45 #, javascript-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "دەچیتە دەرەوە خۆکارانە پاش %d چرکە." msgstr[1] "دەچیتە دەرەوە خۆکارانە پاش %d چرکە." #: js/ui/endSessionDialog.js:51 msgctxt "button" msgid "Log Out" msgstr "دەرچوون" #: js/ui/endSessionDialog.js:56 msgctxt "title" msgid "Power Off" msgstr "بیکوژێنەوە" #: js/ui/endSessionDialog.js:57 msgctxt "title" msgid "Install Updates & Power Off" msgstr "نوێکاری دابمەزرێنە و بیکوژێنەوە" #: js/ui/endSessionDialog.js:59 #, javascript-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "سیستمەکە خۆکارانە دەکوژێتەوە پاش %d چرکە." msgstr[1] "سیستمەکە خۆکارانە دەکوژێتەوە پاش %d چرکە." #: js/ui/endSessionDialog.js:63 msgctxt "checkbox" msgid "Install pending software updates" msgstr "دامەزراندنی نوێکارییە وەستێنراوەکان" #: js/ui/endSessionDialog.js:66 js/ui/endSessionDialog.js:82 msgctxt "button" msgid "Restart" msgstr "دووبارە پێکردنەوە" #: js/ui/endSessionDialog.js:68 msgctxt "button" msgid "Power Off" msgstr "بیکوژێنەوە" #: js/ui/endSessionDialog.js:74 msgctxt "title" msgid "Restart" msgstr "دووبارە پێکردنەوە" #: js/ui/endSessionDialog.js:76 #, javascript-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "سیستم خۆکارانە پێدەکرێتەوە پاش %d چرکە." msgstr[1] "سیستم خۆکارانە پێدەکرێتەوە پاش %d چرکە." #: js/ui/endSessionDialog.js:89 msgctxt "title" msgid "Restart & Install Updates" msgstr "پێکردنەوە و دامەزراندنی نوێکارییەکان" #: js/ui/endSessionDialog.js:91 #, javascript-format msgid "The system will automatically restart and install updates in %d second." msgid_plural "" "The system will automatically restart and install updates in %d seconds." msgstr[0] "سیستم خۆکارانە پێدەکرێتەوە و نوێکارییەکان دادەمەزرێنێت پاش %d چرکە." msgstr[1] "سیستم خۆکارانە پێدەکرێتەوە و نوێکارییەکان دادەمەزرێنێت پاش %d چرکە." #: js/ui/endSessionDialog.js:97 js/ui/endSessionDialog.js:116 msgctxt "button" msgid "Restart & Install" msgstr "پێکردنەوەی & دامەزراندن" #: js/ui/endSessionDialog.js:98 msgctxt "button" msgid "Install & Power Off" msgstr "دامەزراندنی & کوژاندنەوە" #: js/ui/endSessionDialog.js:99 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "بیکوژێنەوە کاتێک نوێکارییەکان دادەمزرێن" #: js/ui/endSessionDialog.js:106 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "پێکردنەوە و دامەزراندنی بەرزکردنەوە" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:111 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" #: js/ui/endSessionDialog.js:304 msgid "Running on battery power: please plug in before installing updates." msgstr "" #: js/ui/endSessionDialog.js:321 msgid "Some applications are busy or have unsaved work." msgstr "" #: js/ui/endSessionDialog.js:328 msgid "Other users are logged in." msgstr "" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:588 #, javascript-format msgid "%s (remote)" msgstr "" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:591 #, javascript-format msgid "%s (console)" msgstr "" #: js/ui/extensionDownloader.js:25 #, javascript-format msgid "Can't install “%s”:" msgstr "ناتوانرێت “%s” دابمەزرێت:" #: js/ui/extensionDownloader.js:26 msgid "" "This is an extension enabled by your current mode, you can't install " "manually any update in that session." msgstr "" #: js/ui/extensionDownloader.js:181 msgid "Install" msgstr "دامەزراندن" #: js/ui/extensionDownloader.js:188 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "داگرتن و دامەزراندنی “%s” لە extensions.gnome.org؟" #: js/ui/inhibitShortcutsDialog.js:80 #, javascript-format msgid "%s wants to inhibit shortcuts" msgstr "" #: js/ui/inhibitShortcutsDialog.js:81 msgid "Application wants to inhibit shortcuts" msgstr "" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:90 #, javascript-format msgid "You can restore shortcuts by pressing %s." msgstr "" #: js/ui/inhibitShortcutsDialog.js:98 msgid "Deny" msgstr "رەتیبکەرەوە" #: js/ui/inhibitShortcutsDialog.js:105 msgid "Allow" msgstr "ڕێدان" #: js/ui/kbdA11yDialog.js:32 msgid "Slow Keys Turned On" msgstr "" #: js/ui/kbdA11yDialog.js:33 msgid "Slow Keys Turned Off" msgstr "" #: js/ui/kbdA11yDialog.js:34 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" #: js/ui/kbdA11yDialog.js:41 msgid "Sticky Keys Turned On" msgstr "" #: js/ui/kbdA11yDialog.js:42 msgid "Sticky Keys Turned Off" msgstr "" #: js/ui/kbdA11yDialog.js:44 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" #: js/ui/kbdA11yDialog.js:46 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" #: js/ui/kbdA11yDialog.js:55 msgid "Leave On" msgstr "" #: js/ui/kbdA11yDialog.js:55 js/ui/status/bluetooth.js:135 #: js/ui/status/network.js:1288 msgid "Turn On" msgstr "داگیرساندن" #: js/ui/kbdA11yDialog.js:63 js/ui/status/bluetooth.js:135 #: js/ui/status/network.js:131 js/ui/status/network.js:315 #: js/ui/status/network.js:1288 js/ui/status/network.js:1400 #: js/ui/status/nightLight.js:41 js/ui/status/rfkill.js:81 #: js/ui/status/rfkill.js:108 msgid "Turn Off" msgstr "کوژاندنەوە" #: js/ui/kbdA11yDialog.js:63 msgid "Leave Off" msgstr "" #: js/ui/keyboard.js:207 msgid "Region & Language Settings" msgstr "ڕێکخستنی شوێن و زمان" #: js/ui/lookingGlass.js:665 msgid "No extensions installed" msgstr "هیچ زیادکراوێک دانەمەزراوە" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:720 #, javascript-format msgid "%s has not emitted any errors." msgstr "" #: js/ui/lookingGlass.js:726 msgid "Hide Errors" msgstr "هەڵە بشارەوە" #: js/ui/lookingGlass.js:730 js/ui/lookingGlass.js:795 msgid "Show Errors" msgstr "هەڵەکان پیشان بدە" #: js/ui/lookingGlass.js:739 msgid "Enabled" msgstr "چالاككراو" #. translators: #. * The device has been disabled #: js/ui/lookingGlass.js:742 subprojects/gvc/gvc-mixer-control.c:1892 msgid "Disabled" msgstr "ناچالاککراوە" #: js/ui/lookingGlass.js:744 msgid "Error" msgstr "هەڵە" #: js/ui/lookingGlass.js:746 msgid "Out of date" msgstr "بەسەرچووە" #: js/ui/lookingGlass.js:748 msgid "Downloading" msgstr "داگرتن" #: js/ui/lookingGlass.js:777 msgid "View Source" msgstr "سەرچاوە پیشان بدە" #: js/ui/lookingGlass.js:786 msgid "Web Page" msgstr "پەڕەی وێب" #: js/ui/messageTray.js:1554 msgid "System Information" msgstr "زانیاری سیستم" #: js/ui/mpris.js:199 msgid "Unknown artist" msgstr "هونەرمەندی نەناسراو" #: js/ui/mpris.js:209 msgid "Unknown title" msgstr "سەردێڕی نەناسراو" #: js/ui/overview.js:73 msgid "Undo" msgstr "گەڕانەوە" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:86 msgid "Overview" msgstr "پوختە" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overview.js:230 msgid "Type to search…" msgstr "" #: js/ui/padOsd.js:95 msgid "New shortcut…" msgstr "قەدبڕی نوێ..." #: js/ui/padOsd.js:142 msgid "Application defined" msgstr "داوانامە ناسراوە" #: js/ui/padOsd.js:143 msgid "Show on-screen help" msgstr "" #: js/ui/padOsd.js:144 msgid "Switch monitor" msgstr "پیشاندەر بگۆڕە" #: js/ui/padOsd.js:145 msgid "Assign keystroke" msgstr "" #: js/ui/padOsd.js:211 msgid "Done" msgstr "تەواو" #: js/ui/padOsd.js:745 msgid "Edit…" msgstr "دەستکاری..." #: js/ui/padOsd.js:787 js/ui/padOsd.js:910 msgid "None" msgstr "نییە" #: js/ui/padOsd.js:863 msgid "Press a button to configure" msgstr "پەنجە بنێ بە دوگمەکە بۆ ڕێکخستن" #: js/ui/padOsd.js:864 msgid "Press Esc to exit" msgstr "پەنجە بنێ بە Esc بۆ دەرچوون" #: js/ui/padOsd.js:867 msgid "Press any key to exit" msgstr "پەنجە بنێ هەر کلیلێک بۆ دەرچوون" #: js/ui/panel.js:109 msgid "Quit" msgstr "دەرچوون" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:434 msgid "Activities" msgstr "چالاکییەکان" #: js/ui/panel.js:713 msgctxt "System menu in the top bar" msgid "System" msgstr "سیستەم" #: js/ui/panel.js:826 msgid "Top Bar" msgstr "توڵی سەرەوە" #: js/ui/runDialog.js:58 msgid "Enter a Command" msgstr "" #: js/ui/windowMenu.js:167 msgid "Close" msgstr "داخستن" #: js/ui/runDialog.js:238 msgid "Restart is not available on Wayland" msgstr "پێکردنەوە بەردەست نیە لەسەر وایلاند" #: js/ui/runDialog.js:243 msgid "Restarting…" msgstr "پێکردنەوە..." #. Translators: This is a time format for a date in #. long format #: js/ui/screenShield.js:81 msgid "%A, %B %d" msgstr "" #: js/ui/screenShield.js:137 #, javascript-format msgid "%d new message" msgid_plural "%d new messages" msgstr[0] "" msgstr[1] "" #: js/ui/screenShield.js:139 #, javascript-format msgid "%d new notification" msgid_plural "%d new notifications" msgstr[0] "" msgstr[1] "" #: js/ui/status/system.js:103 msgid "Lock" msgstr "کلیلدان" #: js/ui/screenShield.js:206 msgid "GNOME needs to lock the screen" msgstr "گنۆم پێوسیتت بە کلیلکردنی پەردەیە" #. We could not become modal, so we can't activate the #. screenshield. The user is probably very upset at this #. point, but any application using global grabs is broken #. Just tell him to stop using this app #. #. XXX: another option is to kick the user into the gdm login #. screen, where we're not affected by grabs #: js/ui/screenShield.js:247 js/ui/screenShield.js:601 msgid "Unable to lock" msgstr "نەتوانرا کلیل بدرێ" #: js/ui/screenShield.js:248 js/ui/screenShield.js:602 msgid "Lock was blocked by an application" msgstr "" #: js/ui/search.js:728 msgid "Searching…" msgstr "گەڕان..." #: js/ui/search.js:730 msgid "No results." msgstr "ئەنجام نیە." #: js/ui/search.js:856 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "%d زیاتر" msgstr[1] "%d زیاتر" #: js/ui/shellEntry.js:20 msgid "Copy" msgstr "لەبەرگرتنەوە" #: js/ui/shellEntry.js:25 msgid "Paste" msgstr "لكاندن" #: js/ui/shellEntry.js:73 msgid "Show Text" msgstr "نیشاندانی دەق" #: js/ui/shellEntry.js:75 msgid "Hide Text" msgstr "دەق بشارەوە" #: js/ui/shellMountOperation.js:285 msgid "Hidden Volume" msgstr "قەبارەی شاراوە" #: js/ui/shellMountOperation.js:288 msgid "Windows System Volume" msgstr "پەنجەرەکانی قەبارەی سیستم" #: js/ui/shellMountOperation.js:291 msgid "Uses Keyfiles" msgstr "" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:298 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead." msgstr "" #: js/ui/shellMountOperation.js:306 msgid "PIM Number" msgstr "" #: js/ui/shellMountOperation.js:423 msgid "The PIM must be a number or empty." msgstr "" #. Cisco LEAP #: js/gdm/authPrompt.js:237 js/ui/components/networkAgent.js:202 #: js/ui/components/networkAgent.js:218 js/ui/components/networkAgent.js:242 #: js/ui/components/networkAgent.js:263 js/ui/components/networkAgent.js:283 #: js/ui/components/networkAgent.js:293 js/ui/components/polkitAgent.js:277 #: js/ui/shellMountOperation.js:326 msgid "Password" msgstr "تێپەڕەوشە" #: js/ui/shellMountOperation.js:365 msgid "Remember Password" msgstr "تێپەڕەوشەم بیربهێنەوە" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:391 #, javascript-format msgid "Open %s" msgstr "“%s” بکەرەوە" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:469 #, javascript-format msgid "Unable to start %s" msgstr "" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:471 #, javascript-format msgid "Couldn’t find the %s application" msgstr "" #: js/ui/status/accessibility.js:35 msgid "Accessibility" msgstr "دەستپێگەیشتن" #: js/ui/status/accessibility.js:50 msgid "Zoom" msgstr "دوورپێش" #: js/ui/status/accessibility.js:57 msgid "Screen Reader" msgstr "خوێنەرەوەی پەردە" #: js/ui/status/accessibility.js:61 msgid "Screen Keyboard" msgstr "تەختەکلیلی پەردە" #: js/ui/status/accessibility.js:65 msgid "Visual Alerts" msgstr "ئاگانامەیی بینەیی" #: js/ui/status/accessibility.js:68 msgid "Sticky Keys" msgstr "" #: js/ui/status/accessibility.js:71 msgid "Slow Keys" msgstr "" #: js/ui/status/accessibility.js:74 msgid "Bounce Keys" msgstr "" #: js/ui/status/accessibility.js:77 msgid "Mouse Keys" msgstr "" #: js/ui/status/accessibility.js:136 msgid "High Contrast" msgstr "" #: js/ui/status/accessibility.js:178 msgid "Large Text" msgstr "دەقی گەورە" #: js/ui/status/bluetooth.js:40 msgid "Bluetooth" msgstr "بلووتووس" #: js/ui/status/bluetooth.js:49 js/ui/status/network.js:591 msgid "Bluetooth Settings" msgstr "ڕێکخستنەکانی بلووتووس" #. Translators: this is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:129 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d پەیوەستە" msgstr[1] "%d پەیوەستە" #: js/ui/status/bluetooth.js:131 msgid "Off" msgstr "کوژاوه‌" #: js/ui/status/bluetooth.js:133 msgid "On" msgstr "هەڵکراوە" #: js/ui/status/brightness.js:39 msgid "Brightness" msgstr "ڕوونی" #: js/ui/status/dwellClick.js:13 msgid "Single Click" msgstr "یەک کرتە" #: js/ui/status/dwellClick.js:18 msgid "Double Click" msgstr "دوو کرتە" #: js/ui/status/dwellClick.js:23 msgid "Drag" msgstr "ڕاکێشان" #: js/ui/status/dwellClick.js:28 msgid "Secondary Click" msgstr "کرتەی لاوەکی" #: js/ui/status/dwellClick.js:37 msgid "Dwell Click" msgstr "" #: js/ui/status/keyboard.js:826 msgid "Keyboard" msgstr "تەختەکلیل" #: js/ui/status/keyboard.js:848 msgid "Show Keyboard Layout" msgstr "کڵێسەی تەختەکلیل پیشان بدە" #: js/ui/status/location.js:65 js/ui/status/location.js:174 msgid "Location Enabled" msgstr "شوێن چالاکە" #: js/ui/status/location.js:66 js/ui/status/location.js:175 msgid "Disable" msgstr "ناچالاککردن" #: js/ui/status/location.js:67 msgid "Privacy Settings" msgstr "ڕێکخستنەکانی تایبەتمەندی" #: js/ui/status/location.js:173 msgid "Location In Use" msgstr "شوێن لەکاردایە" #: js/ui/status/location.js:177 msgid "Location Disabled" msgstr "شوێن ناچالاکە" #: js/ui/status/location.js:178 msgid "Enable" msgstr "چالاک کردن" #. Translators: %s is an application name #: js/ui/status/location.js:356 #, javascript-format msgid "Give %s access to your location?" msgstr "" #: js/ui/status/location.js:367 msgid "Location access can be changed at any time from the privacy settings." msgstr "چوونەناوی شوێن دەتوانرێت بگۆڕدرێت لە بەشی ڕێکخستنەکانی تایبەتمەندی." #: js/ui/status/network.js:66 msgid "" msgstr "<نەزانراو>" #. Translators: %s is a network identifier #: js/ui/status/network.js:420 js/ui/status/network.js:1317 #, javascript-format msgid "%s Off" msgstr "%s کوژاوەتەوە" #. Translators: %s is a network identifier #: js/ui/status/network.js:423 #, javascript-format msgid "%s Connected" msgstr "%s بەستراوە" #. Translators: this is for network devices that are physically present but are not #. under NetworkManager's control (and thus cannot be used in the menu); #. %s is a network identifier #: js/ui/status/network.js:428 #, javascript-format msgid "%s Unmanaged" msgstr "" #. Translators: %s is a network identifier #: js/ui/status/network.js:431 #, javascript-format msgid "%s Disconnecting" msgstr "%s دەرهێڵبوون" #. Translators: %s is a network identifier #: js/ui/status/network.js:438 js/ui/status/network.js:1309 #, javascript-format msgid "%s Connecting" msgstr "%s پەیوەستبوون" #. Translators: this is for network connections that require some kind of key or password; %s is a network identifier #: js/ui/status/network.js:441 #, javascript-format msgid "%s Requires Authentication" msgstr "%s پێویستی بە ڕێپێدانە" #. Translators: this is for devices that require some kind of firmware or kernel #. module, which is missing; %s is a network identifier #: js/ui/status/network.js:449 #, javascript-format msgid "Firmware Missing For %s" msgstr "" #. Translators: this is for a network device that cannot be activated (for example it #. is disabled by rfkill, or it has no coverage; %s is a network identifier #: js/ui/status/network.js:453 #, javascript-format msgid "%s Unavailable" msgstr "%s بەردەست نیە" #. Translators: %s is a network identifier #: js/ui/status/network.js:456 #, javascript-format msgid "%s Connection Failed" msgstr "%s پەیوەندیگرتن سەرکەوتوو نەبوو" #: js/ui/status/network.js:468 msgid "Wired Settings" msgstr "ڕێکخستنەکانی وایەری" #: js/ui/status/network.js:511 msgid "Mobile Broadband Settings" msgstr "" #. Translators: %s is a network identifier #: js/ui/status/network.js:558 js/ui/status/network.js:1314 #, javascript-format msgid "%s Hardware Disabled" msgstr "" #. Translators: this is for a network device that cannot be activated #. because it's disabled by rfkill (airplane mode); %s is a network identifier #: js/ui/status/network.js:562 #, javascript-format msgid "%s Disabled" msgstr "%s ناچالاکە" #: js/ui/status/network.js:603 msgid "Connect to Internet" msgstr "پەیوەندی بکە بە ئینتەرنێت" #: js/ui/status/network.js:808 msgid "Airplane Mode is On" msgstr "دۆخی فرۆکە چالاکە" #: js/ui/status/network.js:809 msgid "Wi-Fi is disabled when airplane mode is on." msgstr "وایفای ناچالاکە کاتێک دۆخی فرۆکە چالاکە." #: js/ui/status/network.js:810 msgid "Turn Off Airplane Mode" msgstr "دۆخی فڕۆکە بکوژێنەوە" #: js/ui/status/network.js:819 msgid "Wi-Fi is Off" msgstr "وایفای کوژاوەتەوە" #: js/ui/status/network.js:820 msgid "Wi-Fi needs to be turned on in order to connect to a network." msgstr "پێویستە وایفای چالاک بێت بۆ پەیوەندیگرتن بە ئینتەرنێتەوە." #: js/ui/status/network.js:821 msgid "Turn On Wi-Fi" msgstr "وایفای دابگیرسێنە" #: js/ui/status/network.js:846 msgid "Wi-Fi Networks" msgstr "ڕایەڵەکانی وایفای" #: js/ui/status/network.js:848 msgid "Select a network" msgstr "ڕایەڵە دیاریبکە" #: js/ui/status/network.js:880 msgid "No Networks" msgstr "ڕایەڵە نیە" #: js/ui/status/network.js:901 js/ui/status/rfkill.js:106 msgid "Use hardware switch to turn off" msgstr "" #: js/ui/status/network.js:1178 msgid "Select Network" msgstr "ڕایەڵە دیاریبکە" #: js/ui/status/network.js:1184 msgid "Wi-Fi Settings" msgstr "ڕێکخستنەکانی وایفای" #. Translators: %s is a network identifier #: js/ui/status/network.js:1305 #, javascript-format msgid "%s Hotspot Active" msgstr "" #. Translators: %s is a network identifier #: js/ui/status/network.js:1320 #, javascript-format msgid "%s Not Connected" msgstr "" #: js/ui/status/network.js:1417 msgid "connecting…" msgstr "پەیوەندی گرتن..." #. Translators: this is for network connections that require some kind of key or password #: js/ui/status/network.js:1420 msgid "authentication required" msgstr "ڕێپێدان داواکراوە" #: js/ui/status/network.js:1422 msgid "connection failed" msgstr "پەیوەندی سەرکەوتوو نەبوو" #: js/ui/status/network.js:1473 msgid "VPN Settings" msgstr "ڕێکخستنی VPN" #: js/ui/status/network.js:1490 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1500 msgid "VPN Off" msgstr "VPN کارناکات" #: js/ui/status/network.js:1561 js/ui/status/rfkill.js:84 msgid "Network Settings" msgstr "ڕێکخستنەکانی ڕایەڵە" #: js/ui/status/network.js:1590 #, javascript-format msgid "%s Wired Connection" msgid_plural "%s Wired Connections" msgstr[0] "%s پەیوەستی وایەری" msgstr[1] "%s پەیوەستی وایەری" #: js/ui/status/network.js:1594 #, javascript-format msgid "%s Wi-Fi Connection" msgid_plural "%s Wi-Fi Connections" msgstr[0] "%s پەیوەستی وایفای" msgstr[1] "%s پەیوەستی وایفای" #: js/ui/status/network.js:1598 #, javascript-format msgid "%s Modem Connection" msgid_plural "%s Modem Connections" msgstr[0] "%s پەیوەستی مۆدیۆم" msgstr[1] "%s پەیوەستی مۆدیۆم" #: js/ui/status/network.js:1732 msgid "Connection failed" msgstr "پەیوەندی سەرکەوتوونەبوو" #: js/ui/status/network.js:1733 msgid "Activation of network connection failed" msgstr "" #: js/ui/status/nightLight.js:63 msgid "Night Light Disabled" msgstr "ڕووناکی شەوانە ناچالاکە" #: js/ui/status/nightLight.js:64 msgid "Night Light On" msgstr "ڕووناکی شەوانە چالاکە" #: js/ui/status/nightLight.js:66 msgid "Resume" msgstr "بەردەوامبوونەوە" #: js/ui/status/nightLight.js:67 msgid "Disable Until Tomorrow" msgstr "ناچالاکی بکە تا بەیانی" #: js/ui/status/power.js:47 msgid "Power Settings" msgstr "ڕێکخستنی توانا" #: js/ui/status/power.js:63 msgid "Fully Charged" msgstr "بەتواوی بارگاوی بووە" #: js/ui/status/power.js:69 msgid "Not Charging" msgstr "بارگاوی ناکات" #. 0 is reported when UPower does not have enough data #. to estimate battery life #: js/ui/status/power.js:72 js/ui/status/power.js:78 msgid "Estimating…" msgstr "بەنزیکەیی..." #. Translators: this is : Remaining () #: js/ui/status/power.js:86 #, javascript-format msgid "%d∶%02d Remaining (%d %%)" msgstr "%d∶%02d ماوە (%d %%)" #. Translators: this is : Until Full () #: js/ui/status/power.js:91 #, javascript-format msgid "%d∶%02d Until Full (%d %%)" msgstr "%d∶%02d بۆ پڕبوون (%d %%)" #: js/ui/status/power.js:139 js/ui/status/power.js:141 #, javascript-format msgid "%d %%" msgstr "%d %%" #: js/ui/status/remoteAccess.js:44 msgid "Screen is Being Shared" msgstr "پەردە هاوبەشیپێکرا" #: js/ui/status/remoteAccess.js:46 msgid "Turn off" msgstr "بیکوژێنەوە" #. The menu only appears when airplane mode is on, so just #. statically build it as if it was on, rather than dynamically #. changing the menu contents. #: js/ui/status/rfkill.js:79 msgid "Airplane Mode On" msgstr "دۆخی فرۆکە هەڵکراوە" #: js/ui/status/system.js:192 msgid "Switch User" msgstr "گۆڕینی بەکارهێنەر" #: js/ui/status/system.js:119 msgid "Log Out" msgstr "دەرچوون" #: js/ui/status/system.js:216 msgid "Account Settings" msgstr "" #: js/ui/status/system.js:245 msgid "Orientation Lock" msgstr "" #: js/ui/status/system.js:145 msgid "Suspend" msgstr "ڕاگرتن" #: js/ui/status/system.js:281 msgid "Power Off" msgstr "بیکوژێنەوە" #: js/ui/status/thunderbolt.js:263 msgid "Thunderbolt" msgstr "سەندەربۆڵت" #: js/ui/status/thunderbolt.js:325 msgid "Unknown Thunderbolt device" msgstr "" #: js/ui/status/thunderbolt.js:326 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" #: js/ui/status/thunderbolt.js:329 msgid "Unauthorized Thunderbolt device" msgstr "" #: js/ui/status/thunderbolt.js:330 msgid "" "New device has been detected and needs to be authorized by an administrator." msgstr "" #: js/ui/status/thunderbolt.js:336 msgid "Thunderbolt authorization error" msgstr "" #: js/ui/status/thunderbolt.js:337 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "" #: js/ui/status/volume.js:150 msgid "Volume changed" msgstr "" #: js/ui/status/volume.js:221 msgid "Volume" msgstr "پلەی دەنگ" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:17 msgid "Mirror" msgstr "ئاوێنە" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:22 msgid "Join Displays" msgstr "پشاندەرەکان پەیوەستبکە" #. Translators: this is for using only an external display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:27 msgid "External Only" msgstr "تەنها دەرەکی" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:32 msgid "Built-in Only" msgstr "تەنها ناوەکی" #: js/ui/unlockDialog.js:558 msgid "Log in as another user" msgstr "بچۆژوورەوە وە بەکارهێنەرێکی تر" #: js/ui/unlockDialog.js:549 msgid "Unlock Window" msgstr "کردنەوەی پەنجەرە" #: js/ui/viewSelector.js:181 msgid "Applications" msgstr "داوانامەکان" #: js/ui/viewSelector.js:185 msgid "Search" msgstr "گەڕان" #: js/ui/windowAttentionHandler.js:20 #, javascript-format msgid "“%s” is ready" msgstr "“%s” ئامادەیە" #: js/ui/windowManager.js:54 msgid "Do you want to keep these display settings?" msgstr "" #. Translators: this and the following message should be limited in length, #. to avoid ellipsizing the labels. #. #: js/ui/windowManager.js:64 msgid "Revert Settings" msgstr "گێڕانەوەی ڕێکخستنەکان" #: js/ui/windowManager.js:67 msgid "Keep Changes" msgstr "گۆڕانکارییەکان بهێڵەوە" #: js/ui/windowManager.js:85 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "گۆڕینی ڕێکخستنەکان دەگەڕێنەوە دووای %d چرکە" msgstr[1] "گۆڕینی ڕێکخستنەکان دەگەڕێنەوە دووای %d چرکە" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:544 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:27 msgid "Minimize" msgstr "بچوککردنەوە" #: js/ui/windowMenu.js:34 msgid "Unmaximize" msgstr "گەورەنەکردن" #: js/ui/windowMenu.js:38 msgid "Maximize" msgstr "گەورەکردن" #: js/ui/windowMenu.js:45 msgid "Move" msgstr "جووڵان" #: js/ui/windowMenu.js:51 msgid "Resize" msgstr "فراوانکردنەوە" #: js/ui/windowMenu.js:58 msgid "Move Titlebar Onscreen" msgstr "" #: js/ui/windowMenu.js:63 msgid "Always on Top" msgstr "هەموو کات لەسەرەوە" #: js/ui/windowMenu.js:82 msgid "Always on Visible Workspace" msgstr "هەموو لە شوێنکاری بینراو" #: js/ui/windowMenu.js:96 msgid "Move to Workspace Left" msgstr "ناردن بۆ شوێنکاری چەپ" #: js/ui/windowMenu.js:102 msgid "Move to Workspace Right" msgstr "ناردن بۆ شوێنکاری ڕاست" #: js/ui/windowMenu.js:108 msgid "Move to Workspace Up" msgstr "ناردن بۆ شوێنکاری سەرەوە" #: js/ui/windowMenu.js:114 msgid "Move to Workspace Down" msgstr "ناردن بۆ شوێنکاری خوارەوە" #: js/ui/windowMenu.js:132 msgid "Move to Monitor Up" msgstr "ناردن بۆ پیشاندەری سەرەوە" #: js/ui/windowMenu.js:141 msgid "Move to Monitor Down" msgstr "ناردن بۆ پیشاندەری خوارەوە" #: js/ui/windowMenu.js:150 msgid "Move to Monitor Left" msgstr "ناردن بۆ پیشاندەری چەپ" #: js/ui/windowMenu.js:159 msgid "Move to Monitor Right" msgstr "ناردن بۆ پیشاندەری ڕاست" #: src/calendar-server/evolution-calendar.desktop.in:3 msgid "Evolution Calendar" msgstr "" #. Translators: Do NOT translate or transliterate this text (this is an icon file name)! #: src/calendar-server/evolution-calendar.desktop.in:6 msgid "evolution" msgstr "evolution" #: subprojects/extensions-tool/src/command-create.c:194 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" #: subprojects/extensions-tool/src/command-create.c:197 #: subprojects/extensions-tool/src/main.c:170 msgid "Name" msgstr "ناو" #: subprojects/extensions-tool/src/command-create.c:208 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" #: js/extensionPrefs/ui/extension-row.ui:100 #: subprojects/extensions-tool/src/command-create.c:211 #: subprojects/extensions-tool/src/main.c:173 msgid "Description" msgstr "كورتەیەک" #: subprojects/extensions-tool/src/command-create.c:222 #, c-format msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" #: subprojects/extensions-tool/src/command-create.c:244 msgid "The unique identifier of the new extension" msgstr "" #: subprojects/extensions-tool/src/command-create.c:247 msgid "NAME" msgstr "ناو" #: subprojects/extensions-tool/src/command-create.c:248 msgid "The user-visible name of the new extension" msgstr "" #: subprojects/extensions-tool/src/command-create.c:250 msgid "DESCRIPTION" msgstr "" #: subprojects/extensions-tool/src/command-create.c:252 msgid "A short description of what the extension does" msgstr "" #: subprojects/extensions-tool/src/command-create.c:255 msgid "Enter extension information interactively" msgstr "" #: subprojects/extensions-tool/src/command-create.c:263 msgid "Create a new extension" msgstr "" #: subprojects/extensions-tool/src/command-create.c:280 #: subprojects/extensions-tool/src/command-list.c:168 msgid "Unknown arguments" msgstr "" #: subprojects/extensions-tool/src/command-create.c:289 msgid "UUID, name and description are required" msgstr "" #: subprojects/extensions-tool/src/command-disable.c:57 msgid "Disable an extension" msgstr "" #: subprojects/extensions-tool/src/command-disable.c:74 #: subprojects/extensions-tool/src/command-enable.c:74 #: subprojects/extensions-tool/src/command-info.c:96 #: subprojects/extensions-tool/src/command-prefs.c:107 #: subprojects/extensions-tool/src/command-reset.c:74 #: subprojects/extensions-tool/src/command-uninstall.c:89 msgid "No UUID given" msgstr "" #: subprojects/extensions-tool/src/command-disable.c:79 #: subprojects/extensions-tool/src/command-enable.c:79 #: subprojects/extensions-tool/src/command-info.c:101 #: subprojects/extensions-tool/src/command-prefs.c:112 #: subprojects/extensions-tool/src/command-reset.c:79 #: subprojects/extensions-tool/src/command-uninstall.c:94 msgid "More than one UUID given" msgstr "" #: subprojects/extensions-tool/src/command-enable.c:57 msgid "Enable an extension" msgstr "" #: subprojects/extensions-tool/src/command-info.c:79 msgid "Show extensions info" msgstr "" #: subprojects/extensions-tool/src/command-install.c:173 msgid "Overwrite an existing extension" msgstr "" #: subprojects/extensions-tool/src/command-install.c:175 msgid "EXTENSION_BUNDLE" msgstr "" #: subprojects/extensions-tool/src/command-install.c:184 msgid "Install an extension bundle" msgstr "" #: subprojects/extensions-tool/src/command-install.c:201 msgid "No extension bundle specified" msgstr "" #: subprojects/extensions-tool/src/command-install.c:207 msgid "More than one extension bundle specified" msgstr "" #: subprojects/extensions-tool/src/command-list.c:125 msgid "Show user-installed extensions" msgstr "" #: subprojects/extensions-tool/src/command-list.c:128 msgid "Show system-installed extensions" msgstr "" #: subprojects/extensions-tool/src/command-list.c:131 msgid "Show enabled extensions" msgstr "" #: subprojects/extensions-tool/src/command-list.c:134 msgid "Show disabled extensions" msgstr "" #: subprojects/extensions-tool/src/command-list.c:137 msgid "Show extensions with preferences" msgstr "" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Print extension details" msgstr "" #: subprojects/extensions-tool/src/command-list.c:151 msgid "List installed extensions" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:450 msgid "FILE" msgstr "پەڕگە" #: subprojects/extensions-tool/src/command-pack.c:451 msgid "Additional source to include in the bundle" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:454 msgid "SCHEMA" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:455 msgid "A GSettings schema that should be included" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:457 #: subprojects/extensions-tool/src/command-pack.c:468 msgid "DIRECTORY" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:459 msgid "The directory where translations are found" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:461 msgid "DOMAIN" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:463 msgid "The gettext domain to use for translations" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "Overwrite an existing pack" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:470 msgid "The directory where the pack should be created" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:472 msgid "SOURCE_DIRECTORY" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:481 msgid "Create an extension bundle" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:500 msgid "More than one source directory specified" msgstr "" #: subprojects/extensions-tool/src/command-prefs.c:90 msgid "Opens extension preferences" msgstr "" #: subprojects/extensions-tool/src/command-reset.c:57 msgid "Reset an extension" msgstr "سفرکردنەوەی زیادکراو" #: subprojects/extensions-tool/src/command-uninstall.c:72 msgid "Uninstall an extension" msgstr "زیادکراو بسڕەوە" #: subprojects/extensions-tool/src/main.c:176 msgid "Path" msgstr "ڕێڕەو" #: subprojects/extensions-tool/src/main.c:179 msgid "URL" msgstr "بەستەر" #: subprojects/extensions-tool/src/main.c:182 msgid "Original author" msgstr "نووسەری سەرەکی" #: js/extensionPrefs/ui/extension-row.ui:123 #: subprojects/extensions-tool/src/main.c:185 msgid "Version" msgstr "وەشان" #: subprojects/extensions-tool/src/main.c:188 msgid "State" msgstr "دۆخ" #: subprojects/extensions-tool/src/main.c:222 msgid "“version” takes no arguments" msgstr "" #: subprojects/extensions-tool/src/main.c:224 #: subprojects/extensions-tool/src/main.c:244 msgid "Usage:" msgstr "بەکارهێنان:" #: subprojects/extensions-tool/src/main.c:227 msgid "Print version information and exit." msgstr "چاپکردنی وەشانی زانیاری بچۆ دەرەوە." #: subprojects/extensions-tool/src/main.c:242 #: subprojects/extensions-tool/src/main.c:245 msgid "COMMAND" msgstr "فرمان" #: subprojects/extensions-tool/src/main.c:245 msgid "[ARGS…]" msgstr "" #: subprojects/extensions-tool/src/main.c:247 msgid "Commands:" msgstr "فرمانەکان:" #: subprojects/extensions-tool/src/main.c:248 msgid "Print help" msgstr "یارمەتی چاپکردن" #: src/main.c:538 subprojects/extensions-tool/src/main.c:249 msgid "Print version" msgstr "وه‌شان چاپبکه‌" #: subprojects/extensions-tool/src/main.c:250 msgid "Enable extension" msgstr "زیادکراو چالاک بکە" #: subprojects/extensions-tool/src/main.c:251 msgid "Disable extension" msgstr "زیادکراو ناچالاک بکە" #: subprojects/extensions-tool/src/main.c:252 msgid "Reset extension" msgstr "نوێکردنەوەی زیادکراو" #: subprojects/extensions-tool/src/main.c:253 msgid "Uninstall extension" msgstr "سڕینەوەی زیادکراو" #: subprojects/extensions-tool/src/main.c:254 msgid "List extensions" msgstr "لیستەکردنی زیادکراوەکان" #: subprojects/extensions-tool/src/main.c:255 #: subprojects/extensions-tool/src/main.c:256 msgid "Show extension info" msgstr "زانیارییەکانی زیادکراو پیشان بدە" #: subprojects/extensions-tool/src/main.c:257 msgid "Open extension preferences" msgstr "" #: subprojects/extensions-tool/src/main.c:258 msgid "Create extension" msgstr "دروستکردنی زیادکراو" #: subprojects/extensions-tool/src/main.c:259 msgid "Package extension" msgstr "زیادکراوەکانی گورزە" #: subprojects/extensions-tool/src/main.c:260 msgid "Install extension bundle" msgstr "" #: subprojects/extensions-tool/src/main.c:262 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "" #: src/main.c:544 msgid "Mode used by GDM for login screen" msgstr "" #: src/main.c:550 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "" #: src/main.c:556 msgid "List possible modes" msgstr "دۆخە گونجاوەکان لیست بکە" #: src/shell-app.c:279 msgctxt "program" msgid "Unknown" msgstr "نەناسراو" #: src/shell-app.c:530 #, c-format msgid "Failed to launch “%s”" msgstr "" #: src/shell-keyring-prompt.c:731 msgid "Passwords do not match." msgstr "تێپەڕوشە وەک یەک نین." #: src/shell-keyring-prompt.c:739 msgid "Password cannot be blank" msgstr "تێپەڕوشە نابێ بەتاڵ بێت" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "ڕێگەپێدان لەکارخرا لە لایەن بەکارهینەرەوە" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1899 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "" msgstr[1] "" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1909 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "" msgstr[1] "" #: subprojects/gvc/gvc-mixer-control.c:2766 msgid "System Sounds" msgstr "دەنگەکانی سیستم" 07070100000225000081A40000000000000000000000016712993F0001A087000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/cs.po# Czech translation of gnome-shell. # Copyright (C) 2009, 2010, 2011 the author(s) of gnome-shell. # This file is distributed under the same license as the gnome-shell package. # # Andre Klapper , 2009. # Petr Kovar , 2009, 2010, 2011, 2012, 2014, 2015, 2020. # Adam Matoušek , 2012, 2013. # Marek Černocký , 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024. # Kryštof Černý , 2023. # Vojtěch Perník , 2022-2024. # msgid "" msgstr "" "Project-Id-Version: gnome-shell\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues/\n" "POT-Creation-Date: 2024-08-24 17:02+0000\n" "PO-Revision-Date: 2024-08-25 14:09+0200\n" "Last-Translator: Vojtěch Perník \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: Gtranslator 46.1\n" "X-Project-Style: gnome\n" "X-DL-Lang: cs\n" "X-DL-Module: gnome-shell\n" "X-DL-Branch: main\n" "X-DL-Domain: po\n" "X-DL-State: None\n" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "Spouštěče" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate pinned app 1" msgstr "Aktivovat připnutou aplikaci č. 1" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate pinned app 2" msgstr "Aktivovat připnutou aplikaci č. 2" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate pinned app 3" msgstr "Aktivovat připnutou aplikaci č. 3" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate pinned app 4" msgstr "Aktivovat připnutou aplikaci č. 4" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate pinned app 5" msgstr "Aktivovat připnutou aplikaci č. 5" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate pinned app 6" msgstr "Aktivovat připnutou aplikaci č. 6" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate pinned app 7" msgstr "Aktivovat připnutou aplikaci č. 7" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate pinned app 8" msgstr "Aktivovat připnutou aplikaci č. 8" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate pinned app 9" msgstr "Aktivovat připnutou aplikaci č. 9" #: data/50-gnome-shell-launchers.xml:46 msgid "Open new window of pinned app 1" msgstr "Otevřít nové okno aplikace 1" #: data/50-gnome-shell-launchers.xml:50 msgid "Open new window of pinned app 2" msgstr "Otevřít nové okno aplikace 2" #: data/50-gnome-shell-launchers.xml:54 msgid "Open new window of pinned app 3" msgstr "Otevřít nové okno aplikace 3" #: data/50-gnome-shell-launchers.xml:58 msgid "Open new window of pinned app 4" msgstr "Otevřít nové okno aplikace 4" #: data/50-gnome-shell-launchers.xml:62 msgid "Open new window of pinned app 5" msgstr "Otevřít nové okno aplikace 5" #: data/50-gnome-shell-launchers.xml:66 msgid "Open new window of pinned app 6" msgstr "Otevřít nové okno aplikace 6" #: data/50-gnome-shell-launchers.xml:70 msgid "Open new window of pinned app 7" msgstr "Otevřít nové okno aplikace 7" #: data/50-gnome-shell-launchers.xml:74 msgid "Open new window of pinned app 8" msgstr "Otevřít nové okno aplikace 8" #: data/50-gnome-shell-launchers.xml:78 msgid "Open new window of pinned app 9" msgstr "Otevřít nové okno aplikace 9" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2274 msgid "Screenshots" msgstr "Snímky obrazovky" #: data/50-gnome-shell-screenshots.xml:9 #: data/org.gnome.shell.gschema.xml.in:287 msgid "Take a screenshot interactively" msgstr "Pořídit snímek obrazovky interaktivně" #: data/50-gnome-shell-screenshots.xml:12 #: data/org.gnome.shell.gschema.xml.in:299 msgid "Take a screenshot" msgstr "Pořídit snímek obrazovky" #: data/50-gnome-shell-screenshots.xml:15 #: data/org.gnome.shell.gschema.xml.in:295 msgid "Take a screenshot of a window" msgstr "Pořídit snímek okna" #: data/50-gnome-shell-screenshots.xml:18 #: data/org.gnome.shell.gschema.xml.in:291 msgid "Record a screencast interactively" msgstr "Zaznamenat dění na obrazovce interaktivně" #: data/50-gnome-shell-system.xml:6 js/ui/messageTray.js:1298 msgid "System" msgstr "Systém" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "Zobrazit seznam upozornění" #: data/50-gnome-shell-system.xml:12 msgid "Open the quick settings menu" msgstr "Otevřít nabídku rychlého nastavení" #: data/50-gnome-shell-system.xml:15 msgid "Focus the active notification" msgstr "Zaměřovat aktivní upozornění" #: data/50-gnome-shell-system.xml:18 msgid "Show the overview" msgstr "Zobrazit přehled" #: data/50-gnome-shell-system.xml:21 msgid "Show all apps" msgstr "Zobrazit všechny aplikace" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "GNOME Shell" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "Správa oken a spouštění aplikací" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "Povolit přes Alt-F2 vnitřní nástroje určené pro vývojáře a testery" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Poskytuje přístup k vnitřním ladicím a monitorovacím nástrojům pomocí okna " "ovládaného přes Alt-F2." #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "UUID rozšíření, která se mají zapnout" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "Rozšíření GNOME Shell mají vlastnost UUID; tento klíč je seznamem rozšíření, " "která by měla být načítána. Každé rozšíření, které má být načítáno, musí být " "na tomto seznamu. S tímto seznamem můžete pracovat také pomocí metod " "EnableExtension a DisableExtension sběrnice DBus na org.gnome.Shell." #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "UUID rozšíření, která se mají nuceně vypnout" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" "Rozšíření GNOME Shell mají vlastnost UUID; tento klíč je seznamem rozšíření, " "která by měla být vypnutá, i když se načtou jako součást aktuálního režimu. " "S tímto seznamem můžete pracovat také pomocí metod EnableExtension a " "DisableExtension sběrnice DBus na org.gnome.Shell. Tento klíč má přednost " "před nastavením „enabled-extensions“." #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "Zakázat uživatelská rozšíření" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" "Zakázat všechna rozšíření, která uživatel zapnul, bez vlivu na nastavení " "„enabled-extension“." #: data/org.gnome.shell.gschema.xml.in:45 msgid "Allow extension installation" msgstr "Povolit instalaci rozšíření" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "Allow users to install extensions in their home folder. If disabled, the " "InstallRemoteExtension D-Bus method will fail, and extensions are only " "loaded from system directories on startup. It does not affect extensions " "that are already loaded, so a change only takes full effect on the next " "login." msgstr "" "Povolit uživatelům instalovat rozšíření do jejich domovské složky. Pokud je " "zakázáno, metoda D-Bus InstallRemoteExtension selže a rozšíření se budou " "načítat pouze ze systémových adresářů při spuštění. Nemá vliv na již načtená " "rozšíření, takže změna se plně projeví až při příštím přihlášení." #: data/org.gnome.shell.gschema.xml.in:56 msgid "Disables the validation of extension version compatibility" msgstr "Vypíná kontrolu kompatibility verze rozšíření" #: data/org.gnome.shell.gschema.xml.in:57 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "GNOME Shell načítá pouze rozšíření, která propagují podporu právě běžící " "verze. Zapnutím této volby zakážete tuto kontrolu a rozšíření se budou " "zkoušet načíst bez ohledu na to, jakou verzi podporují." #: data/org.gnome.shell.gschema.xml.in:65 msgid "List of desktop file IDs for favorite applications" msgstr "Seznam ID souborů desktop oblíbených aplikací" #: data/org.gnome.shell.gschema.xml.in:66 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" "Aplikace odpovídající těmto identifikátorům budou zobrazeny oblasti " "oblíbených." #: data/org.gnome.shell.gschema.xml.in:73 msgid "History for command (Alt-F2) dialog" msgstr "Historie příkazového dialogového okna (Alt-F2)" #. Translators: looking glass is a debugger and inspector tool, see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/docs/looking-glass.md #: data/org.gnome.shell.gschema.xml.in:78 msgid "History for the looking glass dialog" msgstr "Historie dialogového okna „looking glass“ (Alt-F2)" #: data/org.gnome.shell.gschema.xml.in:82 msgid "Always show the “Log Out” action in the system menu" msgstr "V systémové nabídce vždy zobrazovat akci „Odhlásit“" #: data/org.gnome.shell.gschema.xml.in:83 msgid "" "This key overrides the automatic hiding of the “Log out” action in the " "system menu for logged-in situations where there is a single, local, non-" "system user and only a single available session type (e.g. GNOME on Wayland)." msgstr "" "Tento klíč ruší automatické skrývání akce „Odhlásit“ v systémové nabídce v " "situacích, kdy je přihlášen jeden místní uživatel, který není systémový a má " "pouze jeden dostupný typ relace (např. GNOME na Waylandu)." #: data/org.gnome.shell.gschema.xml.in:92 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "Zdali si pamatovat heslo k připojování šifrovaných či vzdálených souborových " "systémů" #: data/org.gnome.shell.gschema.xml.in:93 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "Shell požaduje heslo při připojování šifrovaných či vzdálených souborových " "systémů. Může-li být heslo uloženo pro budoucí použití, zobrazí se " "zaškrtávací pole „Pamatovat si heslo“. Tento klíč určuje výchozí stav této " "volby." #: data/org.gnome.shell.gschema.xml.in:102 msgid "The last selected non-default power profile" msgstr "Poslední vybraný profil napájení, jiný než výchozí" #: data/org.gnome.shell.gschema.xml.in:103 msgid "" "Some systems support more than two power profiles. In order to still support " "toggling between two profiles, this key records the last selected non-" "default profile." msgstr "" "Některé systémy podporují více než dva profily napájení. Aby bylo možné i " "nadále podporovat přepínání mezi dvěma profily, uchovává tento klíč poslední " "vybraný profil, jiný než výchozí." #: data/org.gnome.shell.gschema.xml.in:111 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "Poslední verze „Vítá vás GNOME“ nabídnutá v dialogovém okně" #: data/org.gnome.shell.gschema.xml.in:112 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can " "be used to effectively disable the dialog." msgstr "" "Klíč určuje, pro kterou verzi „Vítá vás GNOME“ bylo naposledy zobrazeno " "dialogové okno. Prázdný řetězec představuje nejstarší možnou verzi a velmi " "vysoké číslo představuje verzi, které doposud neexistuje. Takovýmto číslem " "se dá dialogové okno jednoduše zakázat." #: data/org.gnome.shell.gschema.xml.in:145 msgid "Layout of the app picker" msgstr "Rozvržení výběru aplikace" #: data/org.gnome.shell.gschema.xml.in:146 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" msgstr "" "Rozvržení výběru aplikace. Jednotlivé položky pole představují stránky. " "Stránky jsou v pořadí, v jakém se objeví v GNOME Shellu. Každá stránka " "obsahuje pár „id aplikace“ → „data“. V současnosti se jako „data“ ukládají " "následující hodnoty: • „pozice“: pozice ikony aplikace na stránce." #: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:172 msgid "Keybinding to shift between overview states" msgstr "Klávesová zkratka přesouvající mezi stavy přehledu" #: data/org.gnome.shell.gschema.xml.in:166 msgid "Keybinding to shift between session, window picker and app grid" msgstr "" "Klávesová zkratka přesouvající mezi sezením, výběrem oken a mřížkou aplikací" #: data/org.gnome.shell.gschema.xml.in:173 msgid "Keybinding to shift between app grid, window picker and session" msgstr "" "Klávesová zkratka přesouvající mezi mřížkou aplikací, výběrem oken a sezením" #: data/org.gnome.shell.gschema.xml.in:179 msgid "Keybinding to open the “Show Applications” view" msgstr "Klávesová zkratka otevírající zobrazení aplikací" #: data/org.gnome.shell.gschema.xml.in:180 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "" "Klávesová zkratka sloužící k otevření seznamu aplikací v Přehledu činností." #: data/org.gnome.shell.gschema.xml.in:187 msgid "Keybinding to open the overview" msgstr "Klávesová zkratka otevírající přehled" #: data/org.gnome.shell.gschema.xml.in:188 msgid "Keybinding to open the Activities Overview." msgstr "Klávesová zkratka sloužící k otevření přehledu činností." #: data/org.gnome.shell.gschema.xml.in:194 msgid "Keybinding to toggle the visibility of the notification list" msgstr "Klávesová zkratka přepínající viditelnost seznamu upozornění" #: data/org.gnome.shell.gschema.xml.in:195 msgid "Keybinding to toggle the visibility of the notification list." msgstr "Klávesová zkratka sloužící k přepnutí viditelnosti seznamu upozornění." #: data/org.gnome.shell.gschema.xml.in:201 msgid "Keybinding to toggle the quick settings menu" msgstr "Klávesová zkratka otevírající nabídku rychlého nastavení" #: data/org.gnome.shell.gschema.xml.in:202 msgid "Keybinding to toggle the quick settings menu." msgstr "Klávesová zkratka sloužící k otevření nabídky rychlého nastavení." #: data/org.gnome.shell.gschema.xml.in:208 msgid "Keybinding to focus the active notification" msgstr "Klávesová zkratka zaměřující aktivního upozornění" #: data/org.gnome.shell.gschema.xml.in:209 msgid "Keybinding to focus the active notification." msgstr "Klávesová zkratka sloužící k zaměření aktivního upozornění." #: data/org.gnome.shell.gschema.xml.in:215 msgid "Switch to application 1" msgstr "Přepnout do aplikace 1" #: data/org.gnome.shell.gschema.xml.in:219 msgid "Switch to application 2" msgstr "Přepnout do aplikace 2" #: data/org.gnome.shell.gschema.xml.in:223 msgid "Switch to application 3" msgstr "Přepnout do aplikace 3" #: data/org.gnome.shell.gschema.xml.in:227 msgid "Switch to application 4" msgstr "Přepnout do aplikace 4" #: data/org.gnome.shell.gschema.xml.in:231 msgid "Switch to application 5" msgstr "Přepnout do aplikace 5" #: data/org.gnome.shell.gschema.xml.in:235 msgid "Switch to application 6" msgstr "Přepnout do aplikace 6" #: data/org.gnome.shell.gschema.xml.in:239 msgid "Switch to application 7" msgstr "Přepnout do aplikace 7" #: data/org.gnome.shell.gschema.xml.in:243 msgid "Switch to application 8" msgstr "Přepnout do aplikace 8" #: data/org.gnome.shell.gschema.xml.in:247 msgid "Switch to application 9" msgstr "Přepnout do aplikace 9" #: data/org.gnome.shell.gschema.xml.in:251 msgid "Open a new instance of application 1" msgstr "Otevřít novou instanci aplikace 1" #: data/org.gnome.shell.gschema.xml.in:255 msgid "Open a new instance of application 2" msgstr "Otevřít novou instanci aplikace 2" #: data/org.gnome.shell.gschema.xml.in:259 msgid "Open a new instance of application 3" msgstr "Otevřít novou instanci aplikace 3" #: data/org.gnome.shell.gschema.xml.in:263 msgid "Open a new instance of application 4" msgstr "Otevřít novou instanci aplikace 4" #: data/org.gnome.shell.gschema.xml.in:267 msgid "Open a new instance of application 5" msgstr "Otevřít novou instanci aplikace 5" #: data/org.gnome.shell.gschema.xml.in:271 msgid "Open a new instance of application 6" msgstr "Otevřít novou instanci aplikace 6" #: data/org.gnome.shell.gschema.xml.in:275 msgid "Open a new instance of application 7" msgstr "Otevřít novou instanci aplikace 7" #: data/org.gnome.shell.gschema.xml.in:279 msgid "Open a new instance of application 8" msgstr "Otevřít novou instanci aplikace 8" #: data/org.gnome.shell.gschema.xml.in:283 msgid "Open a new instance of application 9" msgstr "Otevřít novou instanci aplikace 9" #: data/org.gnome.shell.gschema.xml.in:308 #: data/org.gnome.shell.gschema.xml.in:335 msgid "Limit switcher to current workspace." msgstr "Omezit přepínání jen na aktuální plochu." #: data/org.gnome.shell.gschema.xml.in:309 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "Je-li zapnuto, objeví se v přepínači aplikací jen ty, co jsou na aktuální " "pracovní ploše. V opačném případě jsou zahrnuty všechny aplikace." #: data/org.gnome.shell.gschema.xml.in:326 msgid "The application icon mode." msgstr "Režim ikon aplikací." #: data/org.gnome.shell.gschema.xml.in:327 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-only” " "(shows only the application icon) or “both”." msgstr "" "Nastavuje, jak jsou okna zobrazena v přepínači. Možnostmi jsou „thumbnail-" "only“ (zobrazí náhled okna), „app-icon-only“ (zobrazí pouze ikonu aplikace) " "a „both“ (zobrazí náhled i ikonu)." #: data/org.gnome.shell.gschema.xml.in:336 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "Je-li zapnuto, objeví se v přepínači oken jen ty, co jsou na aktuální " "pracovní ploše. V opačném případě jsou zahrnuta všechna okna." #: data/org.gnome.shell.gschema.xml.in:346 msgid "Locations" msgstr "Místa" #: data/org.gnome.shell.gschema.xml.in:347 msgid "The locations to show in world clocks" msgstr "Místa, která se mají zobrazovat ve světových časech" #: data/org.gnome.shell.gschema.xml.in:357 msgid "Automatic location" msgstr "Automatické místo" #: data/org.gnome.shell.gschema.xml.in:358 msgid "Whether to fetch the current location or not" msgstr "Zda si zjistit, či ne, aktuální místo" #: data/org.gnome.shell.gschema.xml.in:365 msgid "Location" msgstr "Místo" #: data/org.gnome.shell.gschema.xml.in:366 msgid "The location for which to show a forecast" msgstr "Místo, pro které se má zobrazovat předpověď počasí" #. Keep in sync with subprojects/extensions-app #: data/org.gnome.Shell.Extensions.desktop.in.in:5 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/data/ui/extensions-window.ui:57 msgid "Extensions" msgstr "Rozšíření" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "Přihlášení do sítě" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:275 msgid "Something’s gone wrong" msgstr "Něco se stalo špatně" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" "Omlouváme se, ale vyskytl se problém: nastavení pro toto rozšíření nelze " "zobrazit. Doporučujeme problém nahlásit autorovi rozšíření." #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "Technické podrobnosti" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "Domovská stránka" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 msgid "Visit extension homepage" msgstr "Navštívit domovskou stránku rozšíření" #: js/gdm/authPrompt.js:151 js/gdm/loginDialog.js:466 #: js/ui/audioDeviceSelection.js:66 js/ui/components/networkAgent.js:113 #: js/ui/components/polkitAgent.js:144 js/ui/endSessionDialog.js:437 #: js/ui/extensionDownloader.js:276 js/ui/shellMountOperation.js:382 #: js/ui/shellMountOperation.js:392 msgid "Cancel" msgstr "Zrušit" #: js/gdm/authPrompt.js:317 js/ui/components/networkAgent.js:213 #: js/ui/components/networkAgent.js:233 js/ui/components/networkAgent.js:265 #: js/ui/components/networkAgent.js:298 js/ui/components/networkAgent.js:337 #: js/ui/components/networkAgent.js:350 js/ui/components/polkitAgent.js:286 #: js/ui/shellMountOperation.js:332 msgid "Password" msgstr "Heslo" #: js/gdm/loginDialog.js:326 msgid "Choose Session" msgstr "Vybrat sezení" #. Translators: is running for #: js/gdm/loginDialog.js:424 #, javascript-format msgid "" "Remote login is not possible because a remote session is already running for " "%s. To login remotely, you must log out from the remote session or force " "stop it." msgstr "" "Vzdálené přihlášení není možné, protože pro uživatele %s již běží vzdálené " "sezení. Chcete-li se vzdáleně přihlásit, musíte se odhlásit z tohoto " "vzdáleného sezení nebo vynutit jeho zastavení." #. Translators: is running for #: js/gdm/loginDialog.js:427 #, javascript-format msgid "" "Login is not possible because a remote session is already running for %s. To " "login, you must log out from the remote session or force stop it." msgstr "" "Přihlášení není možné, protože pro uživatele %s již běží vzdálené sezení. " "Chcete-li se přihlásit, musíte se odhlásit z tohoto vzdáleného sezení nebo " "vynutit jeho zastavení." #. Translators: is running for #: js/gdm/loginDialog.js:430 #, javascript-format msgid "" "Remote login is not possible because a local session is already running for " "%s. To login remotely, you must log out from the local session or force stop " "it." msgstr "" "Vzdálené přihlášení není možné, protože pro uživatele %s již běží místní " "sezení. Chcete-li se vzdáleně přihlásit, musíte se odhlásit z tohoto " "místního sezení nebo vynutit jeho zastavení." #. Translators: is running for #: js/gdm/loginDialog.js:433 #, javascript-format msgid "" "Login is not possible because a session is already running for %s. To login, " "you must log out from the session or force stop it." msgstr "" "Přihlášení není možné, protože pro uživatele %s již běží sezení. Chcete-li " "se přihlásit, musíte se odhlásit z tohoto sezení nebo vynutit jeho zastavení." #: js/gdm/loginDialog.js:442 msgid "Session Already Running" msgstr "Sezení již běží" #: js/gdm/loginDialog.js:454 msgid "" "Force stopping will quit any running apps and processes, and could result in " "data loss" msgstr "" "Vynucené zastavení ukončí všechny spuštěné aplikace a procesy a může vést ke " "ztrátě dat" #: js/gdm/loginDialog.js:474 msgid "Force Stop" msgstr "Vynutit zastavení" #: js/gdm/loginDialog.js:542 msgid "Not listed?" msgstr "Nejste na seznamu?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:1010 #, javascript-format msgid "(e.g., user or %s)" msgstr "(např. uživatel nebo %s)" #: js/gdm/loginDialog.js:1015 js/ui/components/networkAgent.js:257 #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:326 msgid "Username" msgstr "Uživatelské jméno" #: js/gdm/loginDialog.js:1081 msgid "Login Attempt Timed Out" msgstr "Časový limit při pokusu o přihlášení vypršel" #: js/gdm/loginDialog.js:1082 msgid "Login took too long, please try again" msgstr "Přihlašování trvalo příliš dlouho, zkuste to prosím znovu" #: js/gdm/loginDialog.js:1431 msgid "Login Window" msgstr "Přihlašovací okno" #: js/gdm/util.js:496 msgid "Authentication error" msgstr "Chyba ověření" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:727 msgid "(or swipe finger across reader)" msgstr "(nebo přejeďte prstem přes čtečku)" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:732 msgid "(or place finger on reader)" msgstr "(nebo přiložte prst na čtečku)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:91 msgctxt "search-result" msgid "Power Off" msgstr "Vypnout" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:94 msgid "power off;poweroff;shutdown;halt;stop" msgstr "vypnout;vypnutí;zastavit;shodit;stopnout;stop;" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:99 msgctxt "search-result" msgid "Restart" msgstr "Restartovat" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:102 msgid "reboot;restart;" msgstr "" "restart;restartování;restartovat;reboot;znovu zavést systém;zavedení systému;" "natažení systému;" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:107 msgctxt "search-result" msgid "Lock Screen" msgstr "Zamknout obrazovku" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:110 msgid "lock screen" msgstr "" "zamknout obrazovku;zamknout počítač;uzamknout obrazovku;uzamknout počítač;" "zamčít obrazovku;zamčít počítač;uzamčít obrazovku;uzamčít počítač;zamknutí " "obrazovky;zamknutí počítače;uzamknutí obrazovky;uzamknutí počítače;zamčení " "obrazovky;zamčení počítače;uzamčení obrazovky;uzamčení počítače;" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:115 msgctxt "search-result" msgid "Log Out" msgstr "Odhlásit se" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:118 msgid "logout;log out;sign off" msgstr "odhlásit se;odhlášení;odlogovat se;odlogování;" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:123 msgctxt "search-result" msgid "Suspend" msgstr "Uspat do paměti" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:126 msgid "suspend;sleep" msgstr "uspat do paměti;režim spánku;" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:131 msgctxt "search-result" msgid "Switch User" msgstr "Přepnout uživatele" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:134 msgid "switch user" msgstr "přepnout uživatele;přepnutí uživatele;" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:141 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "" "zamknout otočení;zamknout orientaci;uzamknout otočení;uzamknout orientaci;" "zamčít otočení;zamčít orientaci;uzamčít otočení;uzamčít orientaci;zamknutí " "otočení;zamknutí orientace;uzamknutí otočení;uzamknutí orientace;zamčení " "otočení;zamčení orientace;uzamčení otočení;uzamčení orientace;odemknout " "otočení;odemknout orientaci;odemčít otočení;odemčít orientaci;odemknutí " "otočení;odemknutí orientace;odemčení otočení;odemčení orientace;obrazovka;" "otočení;orientace;" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:146 msgctxt "search-result" msgid "Take a Screenshot" msgstr "Pořídit snímek obrazovky" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:149 msgid "screenshot;screencast;snip;capture;record" msgstr "" "snímek obrazovky;záznam obrazovky;nahrávání obrazovky;zachytit;sejmout;" "nahrát;zaznamenat;" #: js/misc/systemActions.js:249 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "Odemknout otočení obrazovky" #: js/misc/systemActions.js:250 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "Zamknout otočení obrazovky" #: js/misc/util.js:130 msgid "Command not found" msgstr "Příkaz nenalezen" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:170 msgid "Could not parse command:" msgstr "Nelze analyzovat příkaz:" #: js/misc/util.js:178 #, javascript-format msgid "Execution of “%s” failed:" msgstr "Vykonání „%s“ selhalo:" #: js/misc/dateUtils.js:69 msgid "Just now" msgstr "právě teď" #: js/misc/dateUtils.js:72 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "před minutou" msgstr[1] "před %d minutami" msgstr[2] "před %d minutami" #: js/misc/dateUtils.js:79 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "před hodinou" msgstr[1] "před %d hodinami" msgstr[2] "před %d hodinami" #: js/misc/dateUtils.js:85 js/ui/dateMenu.js:183 msgid "Yesterday" msgstr "včera" #: js/misc/dateUtils.js:88 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "před %d dnem" msgstr[1] "před %d dny" msgstr[2] "před %d dny" #: js/misc/dateUtils.js:95 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "před týdnem" msgstr[1] "před %d týdny" msgstr[2] "před %d týdny" #: js/misc/dateUtils.js:102 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "před měsícem" msgstr[1] "před %d měsíci" msgstr[2] "před %d měsíci" #: js/misc/dateUtils.js:108 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "před rokem" msgstr[1] "před %d roky" msgstr[2] "před %d lety" #. Translators: Time in 24h format #: js/misc/dateUtils.js:155 msgid "%H∶%M" msgstr "%k∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/dateUtils.js:161 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "včera, %k∶%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/dateUtils.js:167 #, no-c-format msgid "%A, %H∶%M" msgstr "%A %k∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/dateUtils.js:173 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%-e. %B %k∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/dateUtils.js:179 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%-e. %B %Y, %k∶%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/dateUtils.js:184 msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/dateUtils.js:190 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "včera %l∶%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/dateUtils.js:196 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A %l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/dateUtils.js:202 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%-e. %B %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/dateUtils.js:208 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%-e. %B %Y, %l∶%M %p" #: js/portalHelper/main.js:98 msgid "Your connection seems to be secure" msgstr "Vaše připojení se zdá být bezpečné" #: js/portalHelper/main.js:104 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "Vaše připojení k tomuto přístupovému bodu není bezpečné. Hesla a další " "informace, které zadáte na této stránce mohou vidět ostatní lidé v okolí." #: js/portalHelper/main.js:115 msgid "Hotspot Login" msgstr "Přihlášení k přístupovému bodu" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:51 js/ui/inhibitShortcutsDialog.js:92 msgid "Deny" msgstr "Zamítnout" #: js/ui/accessDialog.js:52 js/ui/inhibitShortcutsDialog.js:101 msgid "Allow" msgstr "Povolit" #: js/ui/appDisplay.js:1769 msgid "Unnamed Folder" msgstr "Nepojmenovaná složka" #: js/ui/appFavorites.js:163 #, javascript-format msgid "%s has been pinned to the dash." msgstr "Aplikace %s byla přidána mezi oblíbené." #: js/ui/appFavorites.js:194 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "Aplikace %s byla odebrána z oblíbených." #: js/ui/appFavorites.js:208 js/ui/main.js:281 msgid "Undo" msgstr "Zpět" #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:49 msgid "Open Windows" msgstr "Otevřená okna" #: js/ui/appMenu.js:57 msgid "New Window" msgstr "Nové okno" #: js/ui/appMenu.js:84 msgid "App Details" msgstr "Podrobnosti o aplikaci" #: js/ui/appMenu.js:100 msgid "Quit" msgstr "Ukončit" #: js/ui/appMenu.js:160 js/ui/dash.js:248 msgid "Unpin" msgstr "Odebrat z oblíbených" #: js/ui/appMenu.js:161 msgid "Pin to Dash" msgstr "Přidat mezi oblíbené" #: js/ui/appMenu.js:178 msgid "Launch using Integrated Graphics Card" msgstr "Spustit pomocí integrované grafické karty" #: js/ui/appMenu.js:179 msgid "Launch using Discrete Graphics Card" msgstr "Spustit pomocí samostatné grafické karty" #: js/ui/audioDeviceSelection.js:46 msgid "Select Audio Device" msgstr "Výběr zvukového zařízení" #: js/ui/audioDeviceSelection.js:61 js/ui/status/volume.js:81 msgid "Sound Settings" msgstr "Nastavení zvuku" #: js/ui/audioDeviceSelection.js:74 msgid "Headphones" msgstr "Sluchátka" #: js/ui/audioDeviceSelection.js:76 msgid "Headset" msgstr "Sluchátka s mikrofonem" #: js/ui/audioDeviceSelection.js:78 js/ui/status/volume.js:356 msgid "Microphone" msgstr "Mikrofon" #: js/ui/backgroundMenu.js:13 msgid "Change Background…" msgstr "Změnit pozadí…" #: js/ui/backgroundMenu.js:15 msgid "Display Settings" msgstr "Nastavení displeje" #: js/ui/backgroundMenu.js:16 msgid "Settings" msgstr "Nastavení" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:37 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:63 msgctxt "grid sunday" msgid "S" msgstr "Ne" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:65 msgctxt "grid monday" msgid "M" msgstr "Po" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:67 msgctxt "grid tuesday" msgid "T" msgstr "Út" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:69 msgctxt "grid wednesday" msgid "W" msgstr "St" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:71 msgctxt "grid thursday" msgid "T" msgstr "Čt" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:73 msgctxt "grid friday" msgid "F" msgstr "Pá" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:75 msgctxt "grid saturday" msgid "S" msgstr "So" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:426 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:436 msgid "%OB %Y" msgstr "%OB %Y" #: js/ui/calendar.js:498 msgid "Previous month" msgstr "Předchozí měsíc" #: js/ui/calendar.js:516 msgid "Next month" msgstr "Následující měsíc" #: js/ui/calendar.js:667 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%-e" #: js/ui/calendar.js:726 msgid "Week %V" msgstr "%V. týden" #: js/ui/calendar.js:918 msgid "No Notifications" msgstr "Nejsou žádná upozornění" #: js/ui/calendar.js:974 msgid "Do Not Disturb" msgstr "Nevyrušovat" #: js/ui/calendar.js:995 msgid "Clear" msgstr "Vymazat" #: js/ui/calendar.js:999 msgctxt "action" msgid "Clear all notifications" msgstr "Vymazat všechna upozornění" #. Translators: %s is an application name #: js/ui/closeDialog.js:42 #, javascript-format msgid "“%s” Is Not Responding" msgstr "Aplikace „%s“ neodpovídá" #: js/ui/closeDialog.js:43 msgid "" "You may choose to wait a short while for it to continue or force the app to " "quit entirely" msgstr "" "Můžete si vybrat, zda chvilku počkat, jestli bude aplikace dál normálně " "pokračovat, nebo ji násilně celou ukončit" #: js/ui/closeDialog.js:71 msgid "Force Quit" msgstr "Vynutit ukončení" #: js/ui/closeDialog.js:76 msgid "Wait" msgstr "Počkat" #: js/ui/components/automountManager.js:82 msgid "External drive connected" msgstr "Externí svazek připojen" #: js/ui/components/automountManager.js:94 msgid "External drive disconnected" msgstr "Externí svazek odpojen" #: js/ui/components/automountManager.js:208 msgid "Unable to unlock volume" msgstr "Nelze uzamknout svazek" #: js/ui/components/automountManager.js:209 msgid "The installed udisks version does not support the PIM setting" msgstr "Nainstalovaná verze udisks nepodporuje nastavení PIM" #. Translators: %s is the name of a partition on a external drive #: js/ui/components/autorunManager.js:189 #, javascript-format msgid "“%s” connected" msgstr "„%s“ připojený" #: js/ui/components/autorunManager.js:190 msgid "Disk can now be used" msgstr "Disk lze nyní používat" #: js/ui/components/autorunManager.js:202 #, javascript-format msgid "Open with %s" msgstr "Otevřít pomocí %s" #: js/ui/components/networkAgent.js:95 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router" msgstr "" "Případně se můžete připojit zmáčknutím tlačítka „WPS“ na svém směrovači" #: js/ui/components/networkAgent.js:107 js/ui/status/bluetooth.js:245 #: js/ui/status/network.js:360 js/ui/status/network.js:444 msgid "Connect" msgstr "Připojit" #: js/ui/components/networkAgent.js:222 msgid "Key" msgstr "Klíč" #: js/ui/components/networkAgent.js:273 js/ui/components/networkAgent.js:312 msgid "Private key password" msgstr "Heslo soukromého klíče" #: js/ui/components/networkAgent.js:306 msgid "Identity" msgstr "Identita" #: js/ui/components/networkAgent.js:332 msgid "Service" msgstr "Služba" #: js/ui/components/networkAgent.js:370 js/ui/components/networkAgent.js:406 #: js/ui/components/networkAgent.js:743 js/ui/components/networkAgent.js:764 msgid "Authentication required" msgstr "Vyžaduje ověření" #: js/ui/components/networkAgent.js:371 js/ui/components/networkAgent.js:744 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network “%s”" msgstr "" "Pro přístup k bezdrátové síti „%s“ jsou vyžadována hesla nebo šifrovací klíče" #: js/ui/components/networkAgent.js:375 js/ui/components/networkAgent.js:748 msgid "Wired 802.1X authentication" msgstr "Ověření připojení po drátu 802.1X" #: js/ui/components/networkAgent.js:378 msgid "Network name" msgstr "Název sítě" #: js/ui/components/networkAgent.js:386 js/ui/components/networkAgent.js:752 msgid "DSL authentication" msgstr "Ověření DSL" #: js/ui/components/networkAgent.js:393 js/ui/components/networkAgent.js:757 msgid "PIN code required" msgstr "Požadován kód PIN" #: js/ui/components/networkAgent.js:394 js/ui/components/networkAgent.js:758 msgid "PIN code is needed for the mobile broadband device" msgstr "Pro mobilní širokopásmové zařízení je vyžadován kód PIN" #: js/ui/components/networkAgent.js:396 msgid "PIN" msgstr "PIN" #: js/ui/components/networkAgent.js:407 js/ui/components/networkAgent.js:749 #: js/ui/components/networkAgent.js:753 js/ui/components/networkAgent.js:765 #: js/ui/components/networkAgent.js:769 #, javascript-format msgid "A password is required to connect to “%s”" msgstr "Pro připojení k „%s“ je vyžadováno heslo" #: js/ui/components/networkAgent.js:768 msgid "VPN password" msgstr "Heslo k VPN" #: js/ui/components/polkitAgent.js:44 msgid "Authentication Required" msgstr "Vyžaduje ověření" #: js/ui/components/polkitAgent.js:84 msgid "Administrator" msgstr "Správce" #: js/ui/components/polkitAgent.js:149 msgid "Authenticate" msgstr "Ověřit" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:263 js/ui/shellMountOperation.js:415 msgid "Sorry, that didn’t work. Please try again." msgstr "Ověření bohužel nebylo úspěšné. Zkuste to prosím znovu." #: js/ui/ctrlAltTab.js:23 js/ui/overviewControls.js:404 msgid "Windows" msgstr "Okna" #: js/ui/dash.js:204 js/ui/dash.js:250 msgid "Show Apps" msgstr "Zobrazit aplikace" #. Translators: this is the name of the dock/favorites area on #. the bottom of the overview #: js/ui/dash.js:408 msgid "Dash" msgstr "Oblíbené" # Not sure whether we've enough space for it, but anyway, looks more aesthetically with "%A". #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:99 msgid "%B %-d %Y" msgstr "%-e. %B %Y" # Not sure whether we've enough space for it, but anyway, looks more aesthetically with "%A". #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:106 msgid "%A %B %e %Y" msgstr "%A, %-e. %B %Y" # Not sure whether we've enough space for it, but anyway, looks more aesthetically with "%A". #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:172 msgctxt "calendar heading" msgid "%B %-d" msgstr "%-e. %B" # Not sure whether we've enough space for it, but anyway, looks more aesthetically with "%A". #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:175 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%-e. %B %Y" #: js/ui/dateMenu.js:181 msgid "Today" msgstr "Dnes" #: js/ui/dateMenu.js:185 msgid "Tomorrow" msgstr "Zítra" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:216 msgctxt "event list time" msgid "All Day" msgstr "Celý den" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:238 msgid "%m/%d" msgstr "%-e.%-m." #: js/ui/dateMenu.js:289 msgid "No Events" msgstr "Nejsou žádné události" #: js/ui/dateMenu.js:411 msgid "Add World Clocks…" msgstr "Přidat světový čas…" #: js/ui/dateMenu.js:412 msgid "World Clocks" msgstr "Světové hodiny" #: js/ui/dateMenu.js:702 msgid "Loading…" msgstr "Načítá se…" #: js/ui/dateMenu.js:712 msgid "Go Online for Weather Information" msgstr "Připojit se kvůli informacím o počasí" #: js/ui/dateMenu.js:714 msgid "Weather Information Unavailable" msgstr "Informace o počasí nejsou dostupné" #: js/ui/dateMenu.js:724 msgid "Weather" msgstr "Počasí" #: js/ui/dateMenu.js:726 msgid "Select Weather Location…" msgstr "Vybrat místo pro počasí…" #: js/ui/endSessionDialog.js:47 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "Odhlásit uživatele %s" #: js/ui/endSessionDialog.js:48 msgctxt "title" msgid "Log Out" msgstr "Odhlášení" #: js/ui/endSessionDialog.js:51 #, javascript-format msgid "%s will be logged out automatically in %d second" msgid_plural "%s will be logged out automatically in %d seconds" msgstr[0] "Uživatel %s bude automaticky odhlášen za %d sekundu" msgstr[1] "Uživatel %s bude automaticky odhlášen za %d sekundy" msgstr[2] "Uživatel %s bude automaticky odhlášen za %d sekund" #: js/ui/endSessionDialog.js:57 #, javascript-format msgid "You will be logged out automatically in %d second" msgid_plural "You will be logged out automatically in %d seconds" msgstr[0] "Budete automaticky odhlášeni za %d sekundu" msgstr[1] "Budete automaticky odhlášeni za %d sekundy" msgstr[2] "Budete automaticky odhlášeni za %d sekund" #: js/ui/endSessionDialog.js:64 msgctxt "button" msgid "Log Out" msgstr "Odhlásit" #: js/ui/endSessionDialog.js:70 js/ui/status/system.js:174 msgctxt "title" msgid "Power Off" msgstr "Vypnutí" #: js/ui/endSessionDialog.js:71 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Nainstalování aktualizací a vypnutí" #: js/ui/endSessionDialog.js:74 #, javascript-format msgid "The system will power off automatically in %d second" msgid_plural "The system will power off automatically in %d seconds" msgstr[0] "Systém bude automaticky vypnut za %d sekundu" msgstr[1] "Systém bude automaticky vypnut za %d sekundy" msgstr[2] "Systém bude automaticky vypnut za %d sekund" #: js/ui/endSessionDialog.js:78 js/ui/endSessionDialog.js:97 msgctxt "checkbox" msgid "Install pending software updates" msgstr "Nainstalovat čekající aktualizace softwaru" #: js/ui/endSessionDialog.js:82 msgctxt "button" msgid "Power Off" msgstr "Vypnout" #: js/ui/endSessionDialog.js:89 msgctxt "title" msgid "Restart" msgstr "Restart" #: js/ui/endSessionDialog.js:90 msgctxt "title" msgid "Install Updates & Restart" msgstr "Nainstalování aktualizací a restart" #: js/ui/endSessionDialog.js:93 #, javascript-format msgid "The system will restart automatically in %d second" msgid_plural "The system will restart automatically in %d seconds" msgstr[0] "Systém bude automaticky restartován za %d sekundu" msgstr[1] "Systém bude automaticky restartován za %d sekundy" msgstr[2] "Systém bude automaticky restartován za %d sekund" #: js/ui/endSessionDialog.js:101 msgctxt "button" msgid "Restart" msgstr "Restartovat" #: js/ui/endSessionDialog.js:109 msgctxt "title" msgid "Restart & Install Updates" msgstr "Restart a nainstalování aktualizací" #: js/ui/endSessionDialog.js:112 #, javascript-format msgid "The system will automatically restart and install updates in %d second" msgid_plural "" "The system will automatically restart and install updates in %d seconds" msgstr[0] "" "Systém bude automaticky restartován za %d sekundu a poté se nainstalují " "aktualizace" msgstr[1] "" "Systém bude automaticky restartován za %d sekundy a poté se nainstalují " "aktualizace" msgstr[2] "" "Systém bude automaticky restartován za %d sekund a poté se nainstalují " "aktualizace" #: js/ui/endSessionDialog.js:119 js/ui/endSessionDialog.js:140 msgctxt "button" msgid "Restart & Install" msgstr "Restartovat a nainstalovat" #: js/ui/endSessionDialog.js:121 msgctxt "button" msgid "Install & Power Off" msgstr "Nainstalovat a vypnout" #: js/ui/endSessionDialog.js:122 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Po nainstalování aktualizací vypnout" #: js/ui/endSessionDialog.js:129 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "Restart a nainstalování povýšení" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:134 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "Verze %2s distribuce %1s bude nainstalována po restartu. Instalace povýšení " "může zabrat hodně času: zkontrolujte, že máte vše zazálohováno a že počítač " "je připojen do elektriky." #: js/ui/endSessionDialog.js:283 msgid "Low battery power: please plug in before installing updates" msgstr "Nízký stav baterie: před instalací prosím připojte k napájení" #: js/ui/endSessionDialog.js:292 msgid "Some applications are busy or have unsaved work" msgstr "Některé aplikace jsou zaneprázdněné nebo obsahují neuloženou práci" #: js/ui/endSessionDialog.js:297 msgid "Other users are logged in" msgstr "Jsou přihlášeni jiní uživatelé" #: js/ui/endSessionDialog.js:467 msgctxt "button" msgid "Boot Options" msgstr "Volby zavedení systému" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:672 #, javascript-format msgid "%s (remote)" msgstr "%s (vzdálený)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:675 #, javascript-format msgid "%s (console)" msgstr "%s (konzola)" #: js/ui/extensionDownloader.js:280 msgid "Install" msgstr "Nainstalovat" #: js/ui/extensionDownloader.js:286 msgid "Install Extension" msgstr "Instalace rozšíření" #: js/ui/extensionDownloader.js:287 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "Stáhnout a nainstalovat „%s“ z extensions.gnome.org?" #: js/ui/extensionSystem.js:352 msgid "Extension Updates Available" msgstr "Jsou dostupné aktualizace rozšíření" #: js/ui/extensionSystem.js:353 msgid "Extension updates are ready to be installed" msgstr "Aktualizace rozšíření jsou připravené k instalaci" #: js/ui/inhibitShortcutsDialog.js:70 msgid "Allow inhibiting shortcuts" msgstr "Povolení znemožnit klávesové zkratky" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:73 #, javascript-format msgid "The app %s wants to inhibit shortcuts" msgstr "Aplikace %s chce znemožnit klávesové zkratky" #: js/ui/inhibitShortcutsDialog.js:74 msgid "An app wants to inhibit shortcuts" msgstr "Některá aplikace chce znemožnit klávesové zkratky" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:81 #, javascript-format msgid "You can restore shortcuts by pressing %s" msgstr "Obnovit klávesové zkratky můžete zmáčknutím %s" #: js/ui/kbdA11yDialog.js:34 msgid "Slow Keys Turned On" msgstr "Pomalé klávesy zapnuty" #: js/ui/kbdA11yDialog.js:35 msgid "Slow Keys Turned Off" msgstr "Pomalé klávesy vypnuty" #: js/ui/kbdA11yDialog.js:36 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "Stačí podržet klávesu Shift po dobu 8 sekund. Jedná se o klávesovou zkratku " "pro funkci Pomalé klávesy, která ovlivňuje způsob, jakým funguje vaše " "klávesnice." #: js/ui/kbdA11yDialog.js:42 msgid "Sticky Keys Turned On" msgstr "Kombinace kláves jedním prstem zapnuty" #: js/ui/kbdA11yDialog.js:43 msgid "Sticky Keys Turned Off" msgstr "Kombinace kláves jedním prstem vypnuty" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "Stačí zmáčknout Shift pětkrát po sobě. Jedná se o klávesovou zkratku pro " "funkci Kombinace kláves jedním prstem, která ovlivňuje způsob, jakým funguje " "vaše klávesnice." #: js/ui/kbdA11yDialog.js:47 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" "Stačí zmáčknout dvě klávesy naráz, nebo Shift pětkrát po sobě. Tím se vypne " "funkce Kombinace kláves jedním prstem, která ovlivňuje způsob, jakým funguje " "vaše klávesnice." #: js/ui/kbdA11yDialog.js:57 msgid "Leave On" msgstr "Ponechat zapnuté" #: js/ui/kbdA11yDialog.js:57 msgid "Turn On" msgstr "Zapnout" #: js/ui/kbdA11yDialog.js:67 js/ui/status/network.js:455 msgid "Turn Off" msgstr "Vypnout" #: js/ui/kbdA11yDialog.js:67 msgid "Leave Off" msgstr "Ponechat vypnuté" #: js/ui/keyboard.js:180 js/ui/status/keyboard.js:897 msgid "Keyboard Settings" msgstr "Nastavení klávesnice" #: js/ui/lookingGlass.js:727 msgid "No extensions installed" msgstr "Nejsou nainstalována žádná rozšíření" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:788 #, javascript-format msgid "%s has not emitted any errors" msgstr "Rozšíření %s nevyvolalo žádné chyby" #: js/ui/lookingGlass.js:794 msgid "Hide Errors" msgstr "Skrývat chyby" #: js/ui/lookingGlass.js:798 js/ui/lookingGlass.js:875 msgid "Show Errors" msgstr "Zobrazovat chyby" #: js/ui/lookingGlass.js:807 msgid "Active" msgstr "Aktivní" #: js/ui/lookingGlass.js:810 msgid "Inactive" msgstr "Neaktivní" #: js/ui/lookingGlass.js:812 msgid "Error" msgstr "Chyba" #: js/ui/lookingGlass.js:814 msgid "Out of date" msgstr "Neaktuální" #: js/ui/lookingGlass.js:816 msgid "Downloading" msgstr "Stahování" #: js/ui/lookingGlass.js:818 msgid "Deactivating" msgstr "Deaktivuje se" #: js/ui/lookingGlass.js:820 msgid "Activating" msgstr "Aktivuje se" #: js/ui/lookingGlass.js:853 msgid "View Source" msgstr "Zobrazit zdroj" #: js/ui/lookingGlass.js:864 msgid "Web Page" msgstr "Webová stránka" #: js/ui/main.js:277 msgid "System was put in unsafe mode" msgstr "Systém byl přepnut do nebezpečného režimu" #: js/ui/main.js:278 msgid "Apps now have unrestricted access" msgstr "Aplikace mají nyní neomezený přístup" #: js/ui/main.js:338 msgid "Logged in as a privileged user" msgstr "Přihlášeni jako privilegovaný uživatel" #: js/ui/main.js:339 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" "Spouštění sezení pod privilegovaným uživatelem byste se měli z " "bezpečnostních důvodů vyhýbat. Pokud je to možné, přihlaste se jako běžný " "uživatel." #: js/ui/main.js:387 msgid "Screen Lock disabled" msgstr "Zamykání obrazovky je vypnuto" #: js/ui/main.js:388 msgid "Screen Locking requires the GNOME display manager" msgstr "Zamykání obrazovky vyžaduje správce displeje GNOME" #. Translators: this is the string displayed in the header when a message #. source doesn't have a name #: js/ui/messageList.js:374 msgid "Unknown App" msgstr "Neznámá aplikace" #: js/ui/messageTray.js:326 js/ui/messageTray.js:328 msgid "Notification sound" msgstr "Zvuk upozornění" #: js/ui/mpris.js:198 msgid "Unknown artist" msgstr "Neznámý umělec" #: js/ui/mpris.js:208 msgid "Unknown title" msgstr "Neznámý název" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:328 msgid "Type to search" msgstr "vyhledávejte psaním" #: js/ui/overviewControls.js:392 msgid "Apps" msgstr "Aplikace" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:33 msgid "Overview" msgstr "Přehled" #: js/ui/padOsd.js:98 msgid "New shortcut…" msgstr "Nová klávesová zkratka…" #: js/ui/padOsd.js:151 msgid "App defined" msgstr "Definováno aplikací" #: js/ui/padOsd.js:152 msgid "Show on-screen help" msgstr "Zobrazit nápovědu na obrazovce" #: js/ui/padOsd.js:153 msgid "Switch monitor" msgstr "Přepnout monitor" #: js/ui/padOsd.js:154 msgid "Assign keystroke" msgstr "Přířadit klávesu" #: js/ui/padOsd.js:223 msgid "Done" msgstr "Hotovo" #: js/ui/padOsd.js:726 msgid "Edit…" msgstr "Upravit…" #: js/ui/padOsd.js:773 msgid "None" msgstr "Žádná" #: js/ui/padOsd.js:844 msgid "Press a button to configure" msgstr "Zmáčkněte tlačítko pro nastavení" #: js/ui/padOsd.js:845 msgid "Press Esc to exit" msgstr "Zmáčknutím Esc ukončíte" #: js/ui/padOsd.js:848 msgid "Press any key to exit" msgstr "Zmáčknutím klávesy ukončíte" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:423 msgid "Activities" msgstr "Činnosti" #: js/ui/panel.js:504 msgctxt "System menu in the top bar" msgid "System" msgstr "Systém" #: js/ui/panel.js:678 msgid "Top Bar" msgstr "Horní lišta" #: js/ui/quickSettings.js:188 msgid "Open menu" msgstr "Otevřít nabídku" #: js/ui/runDialog.js:61 msgid "Run a Command" msgstr "Spuštění příkazu" #: js/ui/runDialog.js:76 msgid "Press ESC to close" msgstr "Zmáčknutím Esc zavřete" #: js/ui/runDialog.js:241 msgid "Restart is not available on Wayland" msgstr "Restart není na Waylandu k dispozici" #: js/ui/runDialog.js:246 msgid "Restarting…" msgstr "Restartuje se…" #: js/ui/screenShield.js:233 msgid "GNOME needs to lock the screen" msgstr "GNOME potřebuje uzamknout obrazovku" #: js/ui/screenShield.js:274 js/ui/screenShield.js:667 msgid "Unable to lock" msgstr "Nelze uzamknout obrazovku" #: js/ui/screenShield.js:275 js/ui/screenShield.js:668 msgid "Lock was blocked by an app" msgstr "Zamknutí je blokováno některou z aplikací" #: js/ui/screenshot.js:1252 msgid "Selection" msgstr "Výběr" #: js/ui/screenshot.js:1262 msgid "Area Selection" msgstr "Výběr oblasti" #: js/ui/screenshot.js:1267 msgid "Screen" msgstr "Obrazovka" #: js/ui/screenshot.js:1277 msgid "Screen Selection" msgstr "Výběr obrazovky" #: js/ui/screenshot.js:1282 msgid "Window" msgstr "Okno" #: js/ui/screenshot.js:1292 msgid "Window Selection" msgstr "Výběr okna" #. Translators: entry in the window right click menu. #: js/ui/screenshot.js:1317 js/ui/status/system.js:111 js/ui/windowMenu.js:28 msgid "Take Screenshot" msgstr "Pořídit snímek obrazovky" #: js/ui/screenshot.js:1333 msgid "Record Screen" msgstr "Nahrávat obrazovku" #. Translators: since this string refers to an action, #. it needs to be phrased as a verb. #: js/ui/screenshot.js:1350 msgid "Capture" msgstr "Zachytit" #: js/ui/screenshot.js:1372 msgid "Show Pointer" msgstr "Zobrazit ukazatel" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1996 msgid "Screencasts" msgstr "Záznamy obrazovky" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast From 07-17-2013 10:00:46 PM" #: js/ui/screenshot.js:2001 #, no-c-format msgid "Screencast From %d %t" msgstr "Záznam obrazovky z %d %t" #. Translators: notification title. #: js/ui/screenshot.js:2047 msgid "Screencast recorded" msgstr "Bylo zaznamenáno dění na obrazovce" #. Translators: notification title. #: js/ui/screenshot.js:2060 msgid "Screencast failed to start" msgstr "Započetí záznamu dění na obrazovce selhalo" #. Translators: notification title. #: js/ui/screenshot.js:2066 msgid "Screencast ended: Out of disk space" msgstr "Záznam dění na obrazovce skončil: nedostatek místa na disku" #. We can encourage user to try again on service crashes since the #. recorder will auto-blocklist the pipeline that crashed. #. Translators: notification title. #: js/ui/screenshot.js:2072 msgid "Screencast ended unexpectedly, please try again" msgstr "Záznam dění na obrazovce nečekaně skončil, zkuste to prosím znovu" #. Translators: notification title. #: js/ui/screenshot.js:2075 msgid "Screencast ended unexpectedly" msgstr "Záznam dění na obrazovce nečekaně skončil" #. Translators: notification source name. #: js/ui/screenshot.js:2085 js/ui/screenshot.js:2327 msgid "Screenshot" msgstr "Snímek obrazovky" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:2092 msgid "Click here to view the video." msgstr "Kliknutím zde video zobrazíte." #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:2100 js/ui/screenshot.js:2343 msgid "Show in Files" msgstr "Zobrazit v Souborech" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2287 #, javascript-format msgid "Screenshot From %s" msgstr "Snímek obrazovky z %s" #. Translators: notification title. #: js/ui/screenshot.js:2333 msgid "Screenshot captured" msgstr "Byl pořízen snímek obrazovky" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2335 msgid "You can paste the image from the clipboard." msgstr "Obrázek můžete vložit ze schránky." #: js/ui/screenshot.js:2391 js/ui/screenshot.js:2555 msgid "Screenshot taken" msgstr "Byl pořízen snímek obrazovky" #: js/ui/search.js:829 msgid "Searching…" msgstr "Hledá se…" #: js/ui/search.js:831 msgid "No results" msgstr "Žádné výsledky" #: js/ui/search.js:962 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "%d další" msgstr[1] "%d další" msgstr[2] "%d dalších" #: js/ui/searchController.js:87 #: subprojects/extensions-app/data/ui/extensions-window.ui:73 msgid "Search" msgstr "Hledat" #: js/ui/shellEntry.js:21 msgid "Copy" msgstr "Kopírovat" #: js/ui/shellEntry.js:26 msgid "Paste" msgstr "Vložit" #: js/ui/shellEntry.js:78 msgid "Show Text" msgstr "Zobrazit text" #: js/ui/shellEntry.js:80 msgid "Hide Text" msgstr "Skrýt text" #: js/ui/shellEntry.js:174 msgid "Caps lock is on" msgstr "Je zapnutý Caps Lock" #: js/ui/shellMountOperation.js:286 msgid "Hidden Volume" msgstr "Skrytý svazek" #: js/ui/shellMountOperation.js:289 msgid "Windows System Volume" msgstr "Systémový svazek Windows" #: js/ui/shellMountOperation.js:292 msgid "Uses Keyfiles" msgstr "Používat soubory s klíči" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:300 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead" msgstr "" "K odemknutí svazku, který používá soubory s klíči, místo toho použijte " "pomůcku %s" #: js/ui/shellMountOperation.js:304 msgid "" "You need an external utility like Disks to unlock a volume that uses " "keyfiles" msgstr "" "K odemčení svazku, který používá soubory s klíči, potřebujete externí " "nástroj, například Disky" #: js/ui/shellMountOperation.js:312 msgid "PIM Number" msgstr "Číslo PIM" #: js/ui/shellMountOperation.js:371 msgid "Remember Password" msgstr "Pamatovat si heslo" #: js/ui/shellMountOperation.js:386 msgid "Unlock" msgstr "Odemknout" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:400 #, javascript-format msgid "Open %s" msgstr "Otevřít %s" #: js/ui/shellMountOperation.js:436 msgid "The PIM must be a number or empty" msgstr "PIM musí být číslo nebo prázdné" #: js/ui/status/accessibility.js:34 msgid "Accessibility" msgstr "Přístupnost" #: js/ui/status/accessibility.js:44 msgid "High Contrast" msgstr "Vysoký kontrast" #: js/ui/status/accessibility.js:47 msgid "Zoom" msgstr "Zvětšení" #: js/ui/status/accessibility.js:54 msgid "Screen Reader" msgstr "Čtečka obrazovky" #: js/ui/status/accessibility.js:58 msgid "Screen Keyboard" msgstr "Klávesnice na obrazovce" #: js/ui/status/accessibility.js:62 msgid "Visual Alerts" msgstr "Vizuální upozornění" #: js/ui/status/accessibility.js:66 msgid "Sticky Keys" msgstr "Lepící klávesy" #: js/ui/status/accessibility.js:70 msgid "Slow Keys" msgstr "Pomalé klávesy" #: js/ui/status/accessibility.js:74 msgid "Bounce Keys" msgstr "Vícenásobné stisky kláves" #: js/ui/status/accessibility.js:78 msgid "Mouse Keys" msgstr "Myš klávesnicí" #: js/ui/status/accessibility.js:83 msgid "Accessibility Settings" msgstr "Nastavení přístupnosti" #: js/ui/status/accessibility.js:140 msgid "Large Text" msgstr "Styl velkého textu" #: js/ui/status/autoRotate.js:14 msgid "Auto Rotate" msgstr "Automaticky otáčet" #: js/ui/status/backgroundApps.js:156 msgctxt "title" msgid "Background Apps" msgstr "Aplikace na pozadí" #: js/ui/status/backgroundApps.js:171 msgid "Apps known to be running without a window" msgstr "Aplikace, o kterých je známo, že běží bez okna" #: js/ui/status/backgroundApps.js:182 msgid "App Settings" msgstr "Nastavení aplikací" #: js/ui/status/backgroundApps.js:239 msgid "No Background Apps" msgstr "žádné aplikace na pozadí" #: js/ui/status/backgroundApps.js:241 #, javascript-format msgid "%d Background App" msgid_plural "%d Background Apps" msgstr[0] "%d aplikace na pozadí" msgstr[1] "%d aplikace na pozadí" msgstr[2] "%d aplikací na pozadí" #: js/ui/status/backlight.js:39 msgid "Keyboard Brightness" msgstr "Podsvícení klávesnice" #: js/ui/status/backlight.js:79 msgid "Off" msgstr "Vypnuto" #: js/ui/status/backlight.js:80 msgid "Low" msgstr "Nízké" #: js/ui/status/backlight.js:81 msgid "High" msgstr "Vysoké" #: js/ui/status/backlight.js:147 js/ui/status/keyboard.js:879 msgid "Keyboard" msgstr "Klávesnice" #: js/ui/status/bluetooth.js:245 js/ui/status/network.js:360 msgid "Disconnect" msgstr "Odpojit" #: js/ui/status/bluetooth.js:262 js/ui/status/bluetooth.js:264 msgid "Bluetooth" msgstr "Bluetooth" #: js/ui/status/bluetooth.js:287 js/ui/status/network.js:1900 msgid "Bluetooth Settings" msgstr "Nastavení Bluetooth" #: js/ui/status/bluetooth.js:334 msgid "No available or connected devices" msgstr "Žádné dostupné nebo připojené zařízení" #: js/ui/status/bluetooth.js:335 msgid "Turn on Bluetooth to connect to devices" msgstr "Pro připojení k zařízení zapněte Bluetooth" #. Translators: This is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:389 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d připojené" msgstr[1] "%d připojené" msgstr[2] "%d připojených" #: js/ui/status/brightness.js:32 msgid "Brightness" msgstr "Jas" #: js/ui/status/darkMode.js:12 msgid "Dark Style" msgstr "Tmavý styl" #: js/ui/status/dwellClick.js:15 msgid "Single Click" msgstr "Jednoduché kliknutí" #: js/ui/status/dwellClick.js:20 msgid "Double Click" msgstr "Dvojité kliknutí" #: js/ui/status/dwellClick.js:25 msgid "Drag" msgstr "Tažení" #: js/ui/status/dwellClick.js:30 msgid "Secondary Click" msgstr "Druhé kliknutí" #: js/ui/status/dwellClick.js:39 msgid "Dwell Click" msgstr "Kliknutí posečkáním" #: js/ui/status/keyboard.js:896 msgid "Show Keyboard Layout" msgstr "Zobrazit rozložení klávesnice" #: js/ui/status/location.js:337 msgid "Allow location access" msgstr "Povolení přístupu k informacím o poloze" #. Translators: %s is an application name #: js/ui/status/location.js:339 #, javascript-format msgid "The app %s wants to access your location" msgstr "Aplikace %s chce přístup k informacím vaší poloze" #: js/ui/status/location.js:349 msgid "Location access can be changed at any time from the privacy settings" msgstr "" "Přístup ke službám pro určování polohy lze kdykoliv změnit v nastavení " "soukromí" #: js/ui/status/location.js:357 msgid "Deny Access" msgstr "Zamítnout přístup" #: js/ui/status/location.js:362 msgid "Grant Access" msgstr "Schválit přístup" #: js/ui/status/network.js:62 msgid "" msgstr "" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:354 #, javascript-format msgid "Disconnect %s" msgstr "Odpojit %s" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:356 #, javascript-format msgid "Connect to %s" msgstr "Připojit %s" #: js/ui/status/network.js:1050 msgid "Secure" msgstr "Zabezpečená" #: js/ui/status/network.js:1050 msgid "Not secure" msgstr "Nezabezpečená" #: js/ui/status/network.js:1051 #, javascript-format msgid "Signal strength %s%%" msgstr "Síla signálu %s%%" #. translators: The first placeholder is the network name, the second and indication whether it is secure, and the last the signal strength indication #: js/ui/status/network.js:1053 #, javascript-format msgid "%s, %s, %s" msgstr "%s, %s, %s" #. Translators: %s is a network identifier #: js/ui/status/network.js:1155 #, javascript-format msgid "%s Hotspot" msgstr "Přístupový bod %s" #: js/ui/status/network.js:1426 #, javascript-format msgid "%d connected" msgid_plural "%d connected" msgstr[0] "%d připojený" msgstr[1] "%d připojení" msgstr[2] "%d připojených" #: js/ui/status/network.js:1524 js/ui/status/network.js:1540 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1525 msgid "VPN Settings" msgstr "Nastavení VPN" #: js/ui/status/network.js:1785 msgid "Wi–Fi" msgstr "Wi-Fi" #: js/ui/status/network.js:1787 msgid "All Networks" msgstr "Všechny sítě" #: js/ui/status/network.js:1884 msgid "Wired Connections" msgstr "Drátová připojení" #: js/ui/status/network.js:1885 msgid "Wired Settings" msgstr "Nastavení drátových připojení" #: js/ui/status/network.js:1899 msgid "Bluetooth Tethers" msgstr "Sdílená připojení přes Bluetooth" #. Translators: "Tether" from "Bluetooth Tether" #: js/ui/status/network.js:1906 msgid "Tether" msgstr "Sdílení připojení" #: js/ui/status/network.js:1919 msgid "Mobile Connections" msgstr "Mobilní připojení" #: js/ui/status/network.js:1921 msgid "Mobile Broadband Settings" msgstr "Nastavení mobilního připojení" #. Translators: "Mobile" from "Mobile Broadband" #: js/ui/status/network.js:1930 msgid "Mobile" msgstr "Mobilní" #: js/ui/status/network.js:1964 msgid "Sign Into Wi–Fi Network" msgstr "Přihlásit se k síti Wi-Fi" #: js/ui/status/network.js:2151 msgid "Connection failed" msgstr "Připojení selhalo" #: js/ui/status/network.js:2152 msgid "Activation of network connection failed" msgstr "Aktivace síťového připojení selhala" #: js/ui/status/nightLight.js:19 msgid "Night Light" msgstr "Noční osvětlení" #: js/ui/status/powerProfiles.js:19 msgctxt "Power profile" msgid "Performance" msgstr "Vysoký výkon" #: js/ui/status/powerProfiles.js:24 msgctxt "Power profile" msgid "Balanced" msgstr "Rovnováha" #: js/ui/status/powerProfiles.js:29 msgctxt "Power profile" msgid "Power Saver" msgstr "Šetření energií" #: js/ui/status/powerProfiles.js:39 js/ui/status/powerProfiles.js:69 msgid "Power Mode" msgstr "Režim napájení" #: js/ui/status/powerProfiles.js:71 msgid "Power Settings" msgstr "Nastavení napájení" #: js/ui/status/remoteAccess.js:74 msgid "Stop Screencast" msgstr "Zastavit záznam obrazovky" #: js/ui/status/remoteAccess.js:144 msgid "Stop Screen Sharing" msgstr "Zastavit sdílení obrazovky" #: js/ui/status/rfkill.js:99 msgid "Airplane Mode" msgstr "Režim „letadlo“" #: js/ui/status/system.js:168 msgid "Power Off Menu" msgstr "Nabídka vypnutí" #: js/ui/status/system.js:176 msgid "Suspend" msgstr "Uspat do paměti" #: js/ui/status/system.js:181 msgid "Restart…" msgstr "Restartovat…" #: js/ui/status/system.js:186 msgid "Power Off…" msgstr "Vypnout…" #: js/ui/status/system.js:193 #: subprojects/extensions-app/data/ui/extensions-window.ui:124 msgid "Log Out…" msgstr "Odhlásit se…" #: js/ui/status/system.js:198 msgid "Switch User…" msgstr "Přepnout uživatele…" #: js/ui/status/system.js:242 msgctxt "action" msgid "Lock Screen" msgstr "Uzamknout obrazovku" #: js/ui/status/thunderbolt.js:308 msgid "Unknown Thunderbolt device" msgstr "Neznámé zařízení Thunderbolt" #: js/ui/status/thunderbolt.js:309 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" "Zatímco jste byli pryč, bylo nalezeno nové zařízení. Odpojte jej prosím a " "znovu připojte, abyste jej mohli používat." #: js/ui/status/thunderbolt.js:312 msgid "Unauthorized Thunderbolt device" msgstr "Neověřené zařízení Thunderbolt" #: js/ui/status/thunderbolt.js:313 msgid "" "New device has been detected and needs to be authorized by an administrator" msgstr "Bylo zjištěno nové zařízení a je třeba jej ověřit správcem" #: js/ui/status/thunderbolt.js:319 msgid "Thunderbolt authorization error" msgstr "Chyba ověření Thunderbolt" #: js/ui/status/thunderbolt.js:320 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "Nezdařilo se provést ověření zařízení Thunderbolt: %s" #: js/ui/status/volume.js:218 msgid "Volume changed" msgstr "Hlasitost změněna" #: js/ui/status/volume.js:231 msgid "Unmute" msgstr "Zrušit ztišení" #: js/ui/status/volume.js:231 msgid "Mute" msgstr "Ztišit" #: js/ui/status/volume.js:286 msgid "Volume" msgstr "Hlasitost" #: js/ui/status/volume.js:302 msgid "Sound Output" msgstr "Zvukový výstup" #: js/ui/status/volume.js:374 msgid "Sound Input" msgstr "Zvukový vstup" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:20 msgid "Mirror" msgstr "Duplikovat" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:29 msgid "Join Displays" msgstr "Sloučit displeje" #. Translators: this is for using only external displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:39 msgid "External Only" msgstr "Jen externí" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:47 msgid "Built-in Only" msgstr "Jen vestavěné" # Not sure whether we've enough space for it, but anyway, looks more aesthetically with "%A". #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:378 msgid "%A %B %-d" msgstr "%A, %-e. %B" #: js/ui/unlockDialog.js:384 msgid "Swipe up to unlock" msgstr "Pro odemčení přejeďte prstem nahoru" #: js/ui/unlockDialog.js:385 msgid "Click or press a key to unlock" msgstr "Pro odemčení klikněte nebo stiskněte klávesu" #: js/ui/unlockDialog.js:568 msgid "Unlock Window" msgstr "Odemykací okno" #: js/ui/unlockDialog.js:577 msgid "Log in as another user" msgstr "Přihlásit se jako jiný uživatel" #: js/ui/welcomeDialog.js:47 #, javascript-format msgid "GNOME %s" msgstr "GNOME %s" #: js/ui/welcomeDialog.js:51 #, javascript-format msgid "Welcome to %s" msgstr "Vítá vás %s" #: js/ui/welcomeDialog.js:52 msgid "If you want to learn your way around, check out the tour" msgstr "Jestli se potřebujete zorientovat, nabízíme vám úvodní prohlídku" #: js/ui/welcomeDialog.js:61 msgid "Skip" msgstr "Přeskočit" #: js/ui/welcomeDialog.js:66 msgid "Take Tour" msgstr "Začít prohlídku" #: js/ui/windowAttentionHandler.js:18 #, javascript-format msgid "“%s” is ready" msgstr "Připraveno „%s“" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:68 msgid "Keep these display settings?" msgstr "Zachovat toto nastavení displeje?" #: js/ui/windowManager.js:78 msgid "Revert Settings" msgstr "Obnovit původní" #: js/ui/windowManager.js:83 msgid "Keep Changes" msgstr "Zachovat" #: js/ui/windowManager.js:103 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "Nastavení se obnoví na původní za %d sekundu" msgstr[1] "Nastavení se obnoví na původní za %d sekundy" msgstr[2] "Nastavení se obnoví na původní za %d sekund" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:500 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:40 msgid "Hide" msgstr "Skrýt" #: js/ui/windowMenu.js:47 msgid "Restore" msgstr "Obnovit" #: js/ui/windowMenu.js:51 msgid "Maximize" msgstr "Maximalizovat" #: js/ui/windowMenu.js:58 msgid "Move" msgstr "Přesunout" #: js/ui/windowMenu.js:78 msgid "Resize" msgstr "Změnit velikost" #: js/ui/windowMenu.js:98 msgid "Always on Top" msgstr "Vždy nahoře" #: js/ui/windowMenu.js:117 msgid "Always on Visible Workspace" msgstr "Vždy na viditelné ploše" #: js/ui/windowMenu.js:131 msgid "Move to Workspace Left" msgstr "Přesunout o plochu doleva" #: js/ui/windowMenu.js:137 msgid "Move to Workspace Right" msgstr "Přesunout o plochu doprava" #: js/ui/windowMenu.js:143 msgid "Move to Workspace Up" msgstr "Přesunout o plochu výš" #: js/ui/windowMenu.js:149 msgid "Move to Workspace Down" msgstr "Přesunout o plochu níž" #: js/ui/windowMenu.js:167 msgid "Move to Monitor Up" msgstr "Přesunout o monitor výš" #: js/ui/windowMenu.js:176 msgid "Move to Monitor Down" msgstr "Přesunout o monitor níž" #: js/ui/windowMenu.js:185 msgid "Move to Monitor Left" msgstr "Přesunout o monitor doleva" #: js/ui/windowMenu.js:194 msgid "Move to Monitor Right" msgstr "Přesunout o monitor doprava" #: js/ui/windowMenu.js:202 msgid "Close" msgstr "Zavřít" #: src/main.c:512 subprojects/extensions-tool/src/main.c:336 msgid "Print version" msgstr "Vypsat verzi" #: src/main.c:518 msgid "Mode used by GDM for login screen" msgstr "Režim použitý GDM pro přihlašovací obrazovku" #: src/main.c:524 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "Použít pro přihlašovací obrazovku zadaný režim, např. „gdm“" #: src/main.c:530 msgid "List possible modes" msgstr "Vypsat možné režimy" #: src/main.c:536 msgid "Force animations to be enabled" msgstr "Vynutit povolení animací" #: src/shell-app.c:252 msgctxt "program" msgid "Unknown" msgstr "Neznámé" #: src/shell-app.c:503 #, c-format msgid "Failed to launch “%s”" msgstr "Nelze spustit „%s“" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match" msgstr "Hesla si neodpovídají" #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "Heslo nemůže být prázdné." #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "Dialogové okno ověření bylo uživatelem zrušeno" #: src/st/st-icon-theme.c:1865 #, c-format msgid "Icon '%s' not present in theme %s" msgstr "V motivu %2$s schází ikona „%1$s“" #: src/st/st-icon-theme.c:3454 src/st/st-icon-theme.c:3757 msgid "Failed to load icon" msgstr "Nezdařilo se načíst ikonu" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 msgid "Manage your GNOME Extensions" msgstr "Správa vašich rozšíření GNOME" #. developer_name tag deprecated with Appstream 1.0 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:19 msgid "The GNOME Project" msgstr "Projekt GNOME" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:51 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" "Aplikace Rozšíření GNOME umožňuje aktualizaci a nastavení předvoleb " "rozšíření a odstranění nebo vypnutí nechtěných rozšíření." #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:64 msgid "Main Window" msgstr "Hlavní okno" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:68 msgid "Available Updates" msgstr "Dostupné aktualizace" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:72 msgid "Search View" msgstr "Zobrazení vyhledávání" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "Nastavit rozšíření pro GNOME Shell" #: subprojects/extensions-app/js/extensionManager.js:237 #, javascript-format msgid "" "The installed version of this extension (%s) is incompatible with the " "current version of GNOME (%s). The extension has been disabled." msgstr "" "Nainstalovaná verze tohoto rozšíření (%s) není kompatibilní s aktuální verzí " "GNOME (%s). Rozšíření bylo zakázáno." #: subprojects/extensions-app/js/extensionManager.js:238 #, javascript-format msgid "" "The installed version of this extension is incompatible with the current " "version of GNOME (%s). The extension has been disabled." msgstr "" "Nainstalovaná verze tohoto rozšíření není kompatibilní s aktuální verzí " "GNOME (%s). Rozšíření bylo zakázáno." #: subprojects/extensions-app/js/extensionManager.js:242 msgid "" "An error has occurred in this extension. This could cause issues elsewhere " "in the system. It is recommended to turn the extension off until the error " "is resolved." msgstr "" "V tomto rozšíření došlo k chybě. To by mohlo způsobit problémy jinde v " "systému. Dokud nebude chyba vyřešena, doporučuje se rozšíření vypnout." #. translators: Details for an extension error #: subprojects/extensions-app/js/extensionManager.js:248 msgid "Error details:" msgstr "Podrobnosti o chybě:" #: subprojects/extensions-app/js/extensionRow.js:82 #, javascript-format msgid "Version %s" msgstr "Verze %s" #: subprojects/extensions-app/js/extensionsWindow.js:113 #, javascript-format msgid "Remove “%s”?" msgstr "Odebrat „%s“?" #: subprojects/extensions-app/js/extensionsWindow.js:114 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "" "Pokud rozšíření odeberete a budete jej chtít znovu povolit, budete se muset " "vrátit k jeho stažení." #: subprojects/extensions-app/js/extensionsWindow.js:117 msgid "_Cancel" msgstr "_Zrušit" #: subprojects/extensions-app/js/extensionsWindow.js:118 msgid "_Remove" msgstr "Odeb_rat" #: subprojects/extensions-app/js/extensionsWindow.js:158 msgid "translator-credits" msgstr "Marek Černocký " #: subprojects/extensions-app/js/extensionsWindow.js:203 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "Při příštím přihlášení bude aktualizováno %d rozšíření." msgstr[1] "Při příštím přihlášení budou aktualizována %d rozšíření." msgstr[2] "Při příštím přihlášení bude aktualizováno %d rozšíření." #: subprojects/extensions-app/data/ui/extension-row.ui:22 msgid "Error Details" msgstr "Podrobnosti o chybě" #: subprojects/extensions-app/data/ui/extension-row.ui:62 msgid "Updates Details" msgstr "Podrobnosti o aktualizacích" #: subprojects/extensions-app/data/ui/extension-row.ui:72 msgid "" "A new version of this extension is ready and will be loaded on next login." msgstr "" "Nová verze tohoto rozšíření je připravena a bude načtena při příštím " "přihlášení." #: subprojects/extensions-app/data/ui/extension-row.ui:104 msgid "Extension Details" msgstr "Podrobnosti o rozšíření" #: subprojects/extensions-app/data/ui/extension-row.ui:192 msgid "_Website" msgstr "_Webové stránky" #: subprojects/extensions-app/data/ui/extension-row.ui:219 msgid "_Settings" msgstr "Na_stavení" #: subprojects/extensions-app/data/ui/extension-row.ui:246 msgid "_Remove…" msgstr "Odeb_rat…" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Keyboard Shortcuts" msgstr "Klávesové zkratky" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "O aplikaci Rozšíření" #: subprojects/extensions-app/data/ui/extensions-window.ui:64 msgid "Main Menu" msgstr "Hlavní nabídka" #: subprojects/extensions-app/data/ui/extensions-window.ui:106 msgid "Search extensions" msgstr "hledat rozšíření" #: subprojects/extensions-app/data/ui/extensions-window.ui:134 msgid "_Extensions" msgstr "_Rozšíření" #: subprojects/extensions-app/data/ui/extensions-window.ui:139 msgid "More Information" msgstr "Další informace" #: subprojects/extensions-app/data/ui/extensions-window.ui:151 msgid "" "Extensions can cause performance and stability issues. It is recommended to " "disable all extensions if you experience problems with your system." msgstr "" "Rozšíření mohou způsobit problémy s výkonem a stabilitou. Pokud ve svém " "systému narazíte na podobné problémy, je doporučeno zakázat všechna " "rozšíření." #: subprojects/extensions-app/data/ui/extensions-window.ui:178 msgid "User Extensions" msgstr "Uživatelská rozšíření" #: subprojects/extensions-app/data/ui/extensions-window.ui:198 msgid "System Extensions" msgstr "Systémová rozšíření" #: subprojects/extensions-app/data/ui/extensions-window.ui:233 msgid "Search Results" msgstr "Výsledky vyhledávání" #: subprojects/extensions-app/data/ui/extensions-window.ui:252 msgid "No Results Found" msgstr "Nebyly nalezeny žádné výsledky" #: subprojects/extensions-app/data/ui/extensions-window.ui:253 msgid "Try a different search" msgstr "Zkuste jiné hledání" #: subprojects/extensions-app/data/ui/extensions-window.ui:264 msgid "No Installed Extensions" msgstr "Není nainstalované žádné rozšíření" #: subprojects/extensions-app/data/ui/extensions-window.ui:265 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" "Jestli chcete vyhledat a nainstalovat rozšíření, navštivte stránku extensions.gnome.org." #: subprojects/extensions-app/data/ui/extensions-window.ui:276 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" "Bohužel, ale není možné získat seznam nainstalovaných rozšíření. Ujistěte " "se, že jste přihlášení do GNOME, a zkuste to znovu." #: subprojects/extensions-app/data/ui/help-overlay.ui:9 msgctxt "shortcut window" msgid "General" msgstr "Obecné" #: subprojects/extensions-app/data/ui/help-overlay.ui:12 msgctxt "shortcut window" msgid "Open Menu" msgstr "Otevřít nabídku" #: subprojects/extensions-app/data/ui/help-overlay.ui:18 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Přepnout vyhledávání" #: subprojects/extensions-app/data/ui/help-overlay.ui:24 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Zobrazit zkratky" #: subprojects/extensions-app/data/ui/help-overlay.ui:30 msgctxt "shortcut window" msgid "Quit" msgstr "Ukončit" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:284 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "V %s bylo úspěšně vytvořeno nové rozšíření.\n" #: subprojects/extensions-tool/src/command-create.c:376 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" "Název by měl být velmi krátký (nejlépe samopopisný) řetězec.\n" "Příklady: %s" #: subprojects/extensions-tool/src/command-create.c:382 #: subprojects/extensions-tool/src/main.c:243 msgid "Name" msgstr "Název" #: subprojects/extensions-tool/src/command-create.c:396 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" "Popis by měl jednou větou vysvětlit, co vaše rozšíření vlastně dělá.\n" "Příklady: %s" #: subprojects/extensions-tool/src/command-create.c:402 #: subprojects/extensions-tool/src/main.c:246 msgid "Description" msgstr "Popis" #: subprojects/extensions-tool/src/command-create.c:416 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" "UUID je globálně jedinečnou identifikací vašeho rozšíření.\n" "Měl by být ve formátu e-mailové adresy (clicktofocus@janedoe.example.com)\n" #: subprojects/extensions-tool/src/command-create.c:443 msgid "Choose one of the available templates:\n" msgstr "Zvolte jednu z dostupných šablon:\n" #: subprojects/extensions-tool/src/command-create.c:457 msgid "Template" msgstr "Šablona" #: subprojects/extensions-tool/src/command-create.c:515 msgid "The unique identifier of the new extension" msgstr "Jednoznačná identifikace nového rozšíření" #: subprojects/extensions-tool/src/command-create.c:518 msgid "NAME" msgstr "NÁZEV" #: subprojects/extensions-tool/src/command-create.c:519 msgid "The user-visible name of the new extension" msgstr "Název nového rozšíření, jak jej uvidí uživatel" #: subprojects/extensions-tool/src/command-create.c:521 msgid "DESCRIPTION" msgstr "POPIS" #: subprojects/extensions-tool/src/command-create.c:523 msgid "A short description of what the extension does" msgstr "Krátký popis toho, co rozšíření vlastně dělá" #: subprojects/extensions-tool/src/command-create.c:525 #: subprojects/extensions-tool/src/command-pack.c:455 msgid "DOMAIN" msgstr "DOMÉNA" #: subprojects/extensions-tool/src/command-create.c:527 msgid "The gettext domain used by the extension" msgstr "Doména gettext používaná rozšířením" #: subprojects/extensions-tool/src/command-create.c:529 #: subprojects/extensions-tool/src/command-pack.c:448 msgid "SCHEMA" msgstr "SCHÉMA" #: subprojects/extensions-tool/src/command-create.c:531 msgid "The GSettings schema used by the extension" msgstr "Schéma GSettings používané rozšířením" #: subprojects/extensions-tool/src/command-create.c:534 msgid "TEMPLATE" msgstr "ŠABLONA" #: subprojects/extensions-tool/src/command-create.c:535 msgid "The template to use for the new extension" msgstr "Šablona, která se má použít pro nové rozšíření" #: subprojects/extensions-tool/src/command-create.c:538 msgid "Include prefs.js template" msgstr "Přibalit šablonu prefs.js" #: subprojects/extensions-tool/src/command-create.c:544 msgid "Enter extension information interactively" msgstr "Zadat informace o rozšíření interaktivně" #: subprojects/extensions-tool/src/command-create.c:552 msgid "Create a new extension" msgstr "Vytvořit nové rozšíření" #: subprojects/extensions-tool/src/command-create.c:570 #: subprojects/extensions-tool/src/command-list.c:190 msgid "Unknown arguments" msgstr "Neznámý argument" #: subprojects/extensions-tool/src/command-create.c:595 msgid "UUID, name and description are required" msgstr "Jsou vyžadovány UUID, název a popis" #: subprojects/extensions-tool/src/command-disable.c:62 #: subprojects/extensions-tool/src/command-enable.c:62 #, c-format msgid "Extension “%s” does not exist\n" msgstr "Rozšíření „%s“ neexistuje\n" #: subprojects/extensions-tool/src/command-disable.c:98 msgid "Disable an extension" msgstr "Zakázat rozšíření" #: subprojects/extensions-tool/src/command-disable.c:116 #: subprojects/extensions-tool/src/command-enable.c:116 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "Nebylo zadáno žádné UUID" #: subprojects/extensions-tool/src/command-disable.c:121 #: subprojects/extensions-tool/src/command-enable.c:121 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "Bylo zadáno více než jedno UUID" #: subprojects/extensions-tool/src/command-enable.c:98 msgid "Enable an extension" msgstr "Povolit rozšíření" #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:66 #: subprojects/extensions-tool/src/main.c:150 msgid "Failed to connect to GNOME Shell\n" msgstr "Selhalo připojení ke GNOME Shellu\n" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:159 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "Rozšíření „%s“ neexistuje\n" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "Zobrazit informace o rozšíření" #: subprojects/extensions-tool/src/command-install.c:190 msgid "Overwrite an existing extension" msgstr "Přepsat stávající rozšíření" #: subprojects/extensions-tool/src/command-install.c:192 msgid "EXTENSION_BUNDLE" msgstr "BALÍČEK_S_ROZŠÍŘENÍM" #: subprojects/extensions-tool/src/command-install.c:201 msgid "Install an extension bundle" msgstr "Nainstalovat balíček s rozšířením" #: subprojects/extensions-tool/src/command-install.c:219 msgid "No extension bundle specified" msgstr "Nebyl zadán žádný balíček s rozšířením" #: subprojects/extensions-tool/src/command-install.c:225 msgid "More than one extension bundle specified" msgstr "Bylo zadáno více balíčků s rozšířením naráz" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show user-installed extensions" msgstr "Zobrazit rozšíření nainstalovaná pro uživatele" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show system-installed extensions" msgstr "Zobrazit rozšíření nainstalovaná pro systém" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Show enabled extensions" msgstr "Zobrazit povolená rozšíření" #: subprojects/extensions-tool/src/command-list.c:149 msgid "Show disabled extensions" msgstr "Zobrazit zakázaná rozšíření" #: subprojects/extensions-tool/src/command-list.c:152 msgid "Show extensions in active state" msgstr "Zobrazit rozšíření v aktivním stavu" #: subprojects/extensions-tool/src/command-list.c:155 msgid "Show extensions in inactive state" msgstr "Zobrazit rozšíření v neaktivním stavu" #: subprojects/extensions-tool/src/command-list.c:158 msgid "Show extensions with preferences" msgstr "Zobrazit rozšíření s předvolbami" #: subprojects/extensions-tool/src/command-list.c:161 msgid "Show extensions with updates" msgstr "Zobrazit rozšíření s aktualizacemi" #: subprojects/extensions-tool/src/command-list.c:164 msgid "Print extension details" msgstr "Vypsat podrobnosti o rozšíření" #: subprojects/extensions-tool/src/command-list.c:172 msgid "List installed extensions" msgstr "Vypsat nainstalovaná rozšíření" #: subprojects/extensions-tool/src/command-pack.c:444 msgid "FILE" msgstr "SOUBOR" #: subprojects/extensions-tool/src/command-pack.c:445 msgid "Additional source to include in the bundle" msgstr "Dodatečný zdroj, který se má přibalit" #: subprojects/extensions-tool/src/command-pack.c:449 msgid "A GSettings schema that should be included" msgstr "Schéma GSettings, které se má přibalit" #: subprojects/extensions-tool/src/command-pack.c:451 #: subprojects/extensions-tool/src/command-pack.c:462 msgid "DIRECTORY" msgstr "SLOŽKA" #: subprojects/extensions-tool/src/command-pack.c:453 msgid "The directory where translations are found" msgstr "Složka, ve které se nacházejí jazykové překlady" #: subprojects/extensions-tool/src/command-pack.c:457 msgid "The gettext domain to use for translations" msgstr "Doména gettext, která se má použít pro překlady" #: subprojects/extensions-tool/src/command-pack.c:460 msgid "Overwrite an existing pack" msgstr "Přepsat stávající balíček" #: subprojects/extensions-tool/src/command-pack.c:464 msgid "The directory where the pack should be created" msgstr "Složka, ve které se má balíček vytvořit" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "SOURCE_DIRECTORY" msgstr "ZDROJOVÁ_SLOŽKA" #: subprojects/extensions-tool/src/command-pack.c:475 msgid "Create an extension bundle" msgstr "Vytvořit balíček s rozšířením" #: subprojects/extensions-tool/src/command-pack.c:495 msgid "More than one source directory specified" msgstr "Bylo zadáno více zdrojových složek naráz" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "Rozšíření „%s“ nemá žádné předvolby\n" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "Selhalo otevření předvoleb pro rozšíření „%s“: %s\n" #: subprojects/extensions-tool/src/command-prefs.c:87 msgid "Opens extension preferences" msgstr "Otevřít předvolby rozšíření" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "Uvést rozšíření od výchozího stavu" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "Systémové rozšíření odinstalovat nelze\n" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "Selhala odinstalace „%s“\n" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "Odinstalovat rozšíření" #: subprojects/extensions-tool/src/main.c:76 msgid "Do not print error messages" msgstr "Nevypisovat chybové zprávy" #: subprojects/extensions-tool/src/main.c:249 msgid "Path" msgstr "Cesta" #: subprojects/extensions-tool/src/main.c:252 msgid "URL" msgstr "Adresa URL" #: subprojects/extensions-tool/src/main.c:255 msgid "Original author" msgstr "Původní autor" #: subprojects/extensions-tool/src/main.c:261 #: subprojects/extensions-tool/src/main.c:263 #: subprojects/extensions-tool/src/main.c:265 msgid "Version" msgstr "Verze" #: subprojects/extensions-tool/src/main.c:268 msgid "Enabled" msgstr "Povoleno" #: subprojects/extensions-tool/src/main.c:268 msgid "Yes" msgstr "Ano" #: subprojects/extensions-tool/src/main.c:268 msgid "No" msgstr "Ne" #: subprojects/extensions-tool/src/main.c:271 msgid "State" msgstr "Stav" #: subprojects/extensions-tool/src/main.c:309 msgid "“version” takes no arguments" msgstr "„version“ nepřebírá žádné argumenty" #: subprojects/extensions-tool/src/main.c:311 #: subprojects/extensions-tool/src/main.c:331 msgid "Usage:" msgstr "Použití:" #: subprojects/extensions-tool/src/main.c:314 msgid "Print version information and exit." msgstr "Vypsat informace o verzi a skončit." #: subprojects/extensions-tool/src/main.c:329 #: subprojects/extensions-tool/src/main.c:332 msgid "COMMAND" msgstr "PŘÍKAZ" #: subprojects/extensions-tool/src/main.c:332 msgid "[ARGS…]" msgstr "[ARGUMENTY…]" #: subprojects/extensions-tool/src/main.c:334 msgid "Commands:" msgstr "Příkazy:" #: subprojects/extensions-tool/src/main.c:335 msgid "Print help" msgstr "Vypsat nápovědu" #: subprojects/extensions-tool/src/main.c:337 msgid "Enable extension" msgstr "Povolit rozšíření" #: subprojects/extensions-tool/src/main.c:338 msgid "Disable extension" msgstr "Zakázat rozšíření" #: subprojects/extensions-tool/src/main.c:339 msgid "Reset extension" msgstr "Uvést rozšíření do výchozího stavu" #: subprojects/extensions-tool/src/main.c:340 msgid "Uninstall extension" msgstr "Odinstalovat rozšíření" #: subprojects/extensions-tool/src/main.c:341 msgid "List extensions" msgstr "Vypsat rozšíření" #: subprojects/extensions-tool/src/main.c:342 #: subprojects/extensions-tool/src/main.c:343 msgid "Show extension info" msgstr "Zobrazit informace o rozšíření" #: subprojects/extensions-tool/src/main.c:344 msgid "Open extension preferences" msgstr "Otevřít předvolby rozšíření" #: subprojects/extensions-tool/src/main.c:345 msgid "Create extension" msgstr "Vytvořit rozšíření" #: subprojects/extensions-tool/src/main.c:346 msgid "Package extension" msgstr "Zabalit rozšíření" #: subprojects/extensions-tool/src/main.c:347 msgid "Install extension bundle" msgstr "Nainstalovat balíček s rozšířením" #: subprojects/extensions-tool/src/main.c:349 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "Použijte „%s“ k vypsání podrobné nápovědy.\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "Holá aplikace" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "Prázdné rozšíření" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "Ukazatel" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "Přidá ikonu na horní lištu" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:4 msgid "Quick Settings Item" msgstr "Položka rychlého nastavení" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:5 msgid "Add an item to quick settings" msgstr "Přidat položku do rychlého nastavení" #. translators: #. * The device has been disabled #: subprojects/gvc/gvc-mixer-control.c:1872 msgid "Disabled" msgstr "Zakázáno" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1879 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u výstup" msgstr[1] "%u výstupy" msgstr[2] "%u výstupů" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1889 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u vstup" msgstr[1] "%u vstupy" msgstr[2] "%u vstupů" #: subprojects/gvc/gvc-mixer-control.c:2872 msgid "System Sounds" msgstr "Systémové zvuky" #~ msgid "Move Titlebar Onscreen" #~ msgstr "Posunout záhlaví na obrazovku" #~ msgid "Stop conflicting session dialog closed" #~ msgstr "Dialogové okno zastavení konfliktního sezení bylo zavřeno" #, javascript-format #~ msgid "Try to login again to start a session for user %s." #~ msgstr "Zkuste se znovu přihlásit, abyste spustili sezení pro uživatele %s." #, javascript-format #~ msgid "%s is now known as %s" #~ msgstr "%s je teď znám jako %s" #~ msgid "Network Manager" #~ msgstr "Network Manager" #~ msgid "System Information" #~ msgstr "Informace o systému" #~ msgid "Thunderbolt" #~ msgstr "Thunderbolt" #~ msgid "Disabling" #~ msgstr "Zakazuje se" #~ msgid "Enabling" #~ msgstr "Povoluje se" #, javascript-format #~ msgid "%d %%" #~ msgstr "%d %%" #~ msgid "No Thanks" #~ msgstr "Ne, děkuji" #~ msgid "No Matches" #~ msgstr "Žádná shoda" #~ msgid "The extension had an error" #~ msgstr "V rozšíření se vyskytla chyba" #~ msgid "The extension can be updated" #~ msgstr "Rozšíření lze aktualizovat" #~ msgid "Help" #~ msgstr "Nápověda" #~ msgid "Manually Installed" #~ msgstr "Ručně nainstalované" #~ msgid "Built-In" #~ msgstr "Vestavěné" #~ msgid "Extension Updates Ready" #~ msgstr "Jsou připravené aktualizace rozšíření" #~ msgid "Screenshot / Screencast" #~ msgstr "Snímek/záznam obrazovky" #~ msgid "Power Profiles" #~ msgstr "Profily napájení" 07070100000226000081A40000000000000000000000016712993F00020A89000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/da.po# Danish translation of gnome-shell # Copyright (C) 2010-2011, 2014-2016, 2018, 2024 gnome-shell # This file is distributed under the same license as the gnome-shell package. # # Kenneth Nielsen , 2012. # Kris Thomsen , 2009-2014, 2016-2017. # Ask Hjorth Larsen , 2014-2016, 2018, 2024. # Alan Mortensen , 2018-2023. # scootergrisen, 2019-2020. # # Konventioner: # # dash => favoritområde # overview => overblik # msgid "" msgstr "" "Project-Id-Version: gnome-shell\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues/\n" "POT-Creation-Date: 2024-08-06 15:18+0000\n" "PO-Revision-Date: 2024-09-07 23:19+0200\n" "Last-Translator: Ask Hjorth Larsen \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: Poedit 3.0.1\n" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "Programstartere" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate pinned app 1" msgstr "Aktivér fastgjort program 1" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate pinned app 2" msgstr "Aktivér fastgjort program 2" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate pinned app 3" msgstr "Aktivér fastgjort program 3" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate pinned app 4" msgstr "Aktivér fastgjort program 4" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate pinned app 5" msgstr "Aktivér fastgjort program 5" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate pinned app 6" msgstr "Aktivér fastgjort program 6" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate pinned app 7" msgstr "Aktivér fastgjort program 7" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate pinned app 8" msgstr "Aktivér fastgjort program 8" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate pinned app 9" msgstr "Aktivér fastgjort program 9" #: data/50-gnome-shell-launchers.xml:46 msgid "Open new window of pinned app 1" msgstr "Åbn nyt vindue for fastgjort program 1" #: data/50-gnome-shell-launchers.xml:50 msgid "Open new window of pinned app 2" msgstr "Åbn nyt vindue for fastgjort program 2" #: data/50-gnome-shell-launchers.xml:54 msgid "Open new window of pinned app 3" msgstr "Åbn nyt vindue for fastgjort program 3" #: data/50-gnome-shell-launchers.xml:58 msgid "Open new window of pinned app 4" msgstr "Åbn nyt vindue for fastgjort program 4" #: data/50-gnome-shell-launchers.xml:62 msgid "Open new window of pinned app 5" msgstr "Åbn nyt vindue for fastgjort program 5" #: data/50-gnome-shell-launchers.xml:66 msgid "Open new window of pinned app 6" msgstr "Åbn nyt vindue for fastgjort program 6" #: data/50-gnome-shell-launchers.xml:70 msgid "Open new window of pinned app 7" msgstr "Åbn nyt vindue for fastgjort program 7" #: data/50-gnome-shell-launchers.xml:74 msgid "Open new window of pinned app 8" msgstr "Åbn nyt vindue for fastgjort program 8" #: data/50-gnome-shell-launchers.xml:78 msgid "Open new window of pinned app 9" msgstr "Åbn nyt vindue for fastgjort program 9" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2274 msgid "Screenshots" msgstr "Skærmbilleder" #: data/50-gnome-shell-screenshots.xml:9 #: data/org.gnome.shell.gschema.xml.in:287 msgid "Take a screenshot interactively" msgstr "Tag et skærmbillede interaktivt" #: data/50-gnome-shell-screenshots.xml:12 #: data/org.gnome.shell.gschema.xml.in:299 msgid "Take a screenshot" msgstr "Tag et skærmbillede" #: data/50-gnome-shell-screenshots.xml:15 #: data/org.gnome.shell.gschema.xml.in:295 msgid "Take a screenshot of a window" msgstr "Tag et skærmbillede af et vindue" #: data/50-gnome-shell-screenshots.xml:18 #: data/org.gnome.shell.gschema.xml.in:291 msgid "Record a screencast interactively" msgstr "Optag en skærmoptagelse interaktivt" #: data/50-gnome-shell-system.xml:6 js/ui/messageTray.js:1298 msgid "System" msgstr "System" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "Vis påmindelseslisten" #: data/50-gnome-shell-system.xml:12 msgid "Open the quick settings menu" msgstr "Åbn menuen til hurtige indstillinger" #: data/50-gnome-shell-system.xml:15 msgid "Focus the active notification" msgstr "Fokusér på den aktive påmindelse" #: data/50-gnome-shell-system.xml:18 msgid "Show the overview" msgstr "Vis oversigten" #: data/50-gnome-shell-system.xml:21 msgid "Show all apps" msgstr "Vis alle programmer" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "GNOME Shell" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "Vindueshåndtering og åbning af programmer" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" "Aktivér interne værktøjer, som er nyttige for udviklere og testere fra Alt-F2" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Tillad adgang til interne fejlsøgnings- og overvågningsværktøjer med brug af " "dialogen Alt-F2." #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "Uuid'er på udvidelser der aktiveres" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "Udvidelser til GNOME Shell har en uuid-egenskab; denne nøgle oplister " "udvidelser, som skal indlæses. Alle udvidelser, som skal indlæses, skal være " "i denne liste. Du kan også redigere listen med D-Bus-metoderne " "EnableExtension og DisableExtension i org.gnome.Shell." #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "Uuid'er på udvidelser der tvinges til deaktivering" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" "Udvidelser til GNOME Shell har en uuid-egenskab; denne nøgle oplister " "udvidelser, som skal deaktiveres, selv hvis de indlæses som del af den " "nuværende tilstand. Du kan også redigere listen med D-Bus-metoderne " "EnableExtension og DisableExtension i org.gnome.Shell. Nøglen har prioritet " "over indstillingen “enabled-extensions”." #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "Deaktivér brugerudvidelser" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" "Deaktivér alle udvidelser, som brugeren har aktiveret uden at ændre på " "“enabled-extension”-indstillingen." #: data/org.gnome.shell.gschema.xml.in:45 msgid "Allow extension installation" msgstr "Tillad installation af udvidelser" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "Allow users to install extensions in their home folder. If disabled, the " "InstallRemoteExtension D-Bus method will fail, and extensions are only " "loaded from system directories on startup. It does not affect extensions " "that are already loaded, so a change only takes full effect on the next " "login." msgstr "" "Tillad brugere at installere udvidelser i deres hjemmemappe. Hvis " "deaktiveret vil D-Bus-metoden InstallRemoteExtension fejle, og udvidelser " "indlæses kun fra systemkataloger ved start. Dette påvirker ikke udvidelser, " "som allerede er indlæst, så en ændring træder først fuldt i kraft ved læste " "login." #: data/org.gnome.shell.gschema.xml.in:56 msgid "Disables the validation of extension version compatibility" msgstr "Deaktiverer godkendelsen af udvidelsesversionskompatibilitet" #: data/org.gnome.shell.gschema.xml.in:57 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "GNOME Shell vil kun indlæse udvidelser, som påstår at understøtte den i " "øjeblikket kørende version. Dette tilvalg vil deaktivere denne kontrol, og " "forsøge at indlæse alle udvidelser uanset hvilken version, de påstår at " "understøtte." #: data/org.gnome.shell.gschema.xml.in:65 msgid "List of desktop file IDs for favorite applications" msgstr "Liste over skrivebordsfil-id'er til favoritprogrammer" #: data/org.gnome.shell.gschema.xml.in:66 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" "Programmerne som passer til disse identifikatorer vil blive vist i " "favoritområdet." #: data/org.gnome.shell.gschema.xml.in:73 msgid "History for command (Alt-F2) dialog" msgstr "Historik for kommandodialogen (Alt-F2)" #. Translators: looking glass is a debugger and inspector tool, see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/docs/looking-glass.md #: data/org.gnome.shell.gschema.xml.in:78 msgid "History for the looking glass dialog" msgstr "Historik for looking glass-dialogen" #: data/org.gnome.shell.gschema.xml.in:82 msgid "Always show the “Log Out” action in the system menu" msgstr "Vis altid “Log ud”-menupunktet i systemmenuen" #: data/org.gnome.shell.gschema.xml.in:83 msgid "" "This key overrides the automatic hiding of the “Log out” action in the " "system menu for logged-in situations where there is a single, local, non-" "system user and only a single available session type (e.g. GNOME on Wayland)." msgstr "" "Denne nøgle tilsidesætter, at menupunktet “Log ud” automatisk skjules, når " "der er en enkelt lokal ikke-system-bruger og kun én tilgængelig sessionstype " "(f.eks. GNOME på Wayland)." #: data/org.gnome.shell.gschema.xml.in:92 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "Om adgangskoder skal huskes for montering af krypterede eller fjern-" "filsystemer" #: data/org.gnome.shell.gschema.xml.in:93 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "Shell'en vil spørge efter en adgangskode når en krypteret enhed eller et " "fjern-filsystem bliver monteret. Hvis adgangskoden kan gemmes til fremtidig " "brug, vil et “Husk adgangskode”-afkrydsningsfelt være synlig. Denne nøgle " "angiver standardværdien af dette afkrydsningsfelt." #: data/org.gnome.shell.gschema.xml.in:102 msgid "The last selected non-default power profile" msgstr "Den sidst valgte ikke-standardstrømprofil" #: data/org.gnome.shell.gschema.xml.in:103 msgid "" "Some systems support more than two power profiles. In order to still support " "toggling between two profiles, this key records the last selected non-" "default profile." msgstr "" "Nogle systemer understøtter mere end to strømprofiler. For stadig at kunne " "skifte mellem to profiler registrerer denne nøgle den sidst valgte profil, " "der ikke er standardprofil." #: data/org.gnome.shell.gschema.xml.in:111 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "Den sidste version “Velkommen til GNOME”-dialogen blev vist for" #: data/org.gnome.shell.gschema.xml.in:112 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can " "be used to effectively disable the dialog." msgstr "" "Denne nøgle bestemmer, hvilken version “Velkommen til GNOME”-dialogen sidst " "blev vist for. En tom streng repræsenterer den ældst mulige version, og et " "kæmpe nummer repræsenterer versioner, som endnu ikke eksisterer. Et kæmpe " "nummer vil i praksis deaktivere dialogen." #: data/org.gnome.shell.gschema.xml.in:145 msgid "Layout of the app picker" msgstr "Layout af programvælgeren" #: data/org.gnome.shell.gschema.xml.in:146 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" msgstr "" "Layout af programvælgeren. Hver indgang i tabellen er en side. Sider gemmes " "i den rækkefølge, de optræder i GNOME Shell. Hver side indeholder et par af " "“program-id” → 'data'. Aktuelt gemmes følgende værdier som 'data': • " "“placering”: programikonets placering på siden" #: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:172 msgid "Keybinding to shift between overview states" msgstr "Genvejstast til at skifte mellem oversigtstilstande" #: data/org.gnome.shell.gschema.xml.in:166 msgid "Keybinding to shift between session, window picker and app grid" msgstr "" "Genvejstast til at skifte mellem session, vinduesvælger og programgitter" #: data/org.gnome.shell.gschema.xml.in:173 msgid "Keybinding to shift between app grid, window picker and session" msgstr "" "Genvejstast til at skifte mellem programgitter, vinduesvælger og session" #: data/org.gnome.shell.gschema.xml.in:179 msgid "Keybinding to open the “Show Applications” view" msgstr "Genvejstast til at åbne “Vis programmer”-visningen" #: data/org.gnome.shell.gschema.xml.in:180 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "" "Genvejstast til at åbne “Vis programmer”-visningen i Aktivitetsoversigten." #: data/org.gnome.shell.gschema.xml.in:187 msgid "Keybinding to open the overview" msgstr "Genvejstast til at åbne oversigten" #: data/org.gnome.shell.gschema.xml.in:188 msgid "Keybinding to open the Activities Overview." msgstr "Genvejstast til at åbne Aktivitetsoversigten." #: data/org.gnome.shell.gschema.xml.in:194 msgid "Keybinding to toggle the visibility of the notification list" msgstr "Genvejstast til at slå synligheden af påmindelseslisten til eller fra" #: data/org.gnome.shell.gschema.xml.in:195 msgid "Keybinding to toggle the visibility of the notification list." msgstr "Genvejstast til at slå synligheden af påmindelseslisten til eller fra." #: data/org.gnome.shell.gschema.xml.in:201 msgid "Keybinding to toggle the quick settings menu" msgstr "Genvejstast til at slå menuen til hurtige indstillinger til/fra" #: data/org.gnome.shell.gschema.xml.in:202 msgid "Keybinding to toggle the quick settings menu." msgstr "Genvejstast til at slå menuen til hurtige indstillinger til/fra." #: data/org.gnome.shell.gschema.xml.in:208 msgid "Keybinding to focus the active notification" msgstr "Genvejstast til at fokusere på den aktive påmindelse" #: data/org.gnome.shell.gschema.xml.in:209 msgid "Keybinding to focus the active notification." msgstr "Genvejstast til at fokusere på den aktive påmindelse." #: data/org.gnome.shell.gschema.xml.in:215 msgid "Switch to application 1" msgstr "Skift til program 1" #: data/org.gnome.shell.gschema.xml.in:219 msgid "Switch to application 2" msgstr "Skift til program 2" #: data/org.gnome.shell.gschema.xml.in:223 msgid "Switch to application 3" msgstr "Skift til program 3" #: data/org.gnome.shell.gschema.xml.in:227 msgid "Switch to application 4" msgstr "Skift til program 4" #: data/org.gnome.shell.gschema.xml.in:231 msgid "Switch to application 5" msgstr "Skift til program 5" #: data/org.gnome.shell.gschema.xml.in:235 msgid "Switch to application 6" msgstr "Skift til program 6" #: data/org.gnome.shell.gschema.xml.in:239 msgid "Switch to application 7" msgstr "Skift til program 7" #: data/org.gnome.shell.gschema.xml.in:243 msgid "Switch to application 8" msgstr "Skift til program 8" #: data/org.gnome.shell.gschema.xml.in:247 msgid "Switch to application 9" msgstr "Skift til program 9" # Session kan også være hele GNOME-sessionen, men jeg tror betydningen er klar #: data/org.gnome.shell.gschema.xml.in:251 msgid "Open a new instance of application 1" msgstr "Åbn en ny session af program 1" #: data/org.gnome.shell.gschema.xml.in:255 msgid "Open a new instance of application 2" msgstr "Åbn en ny session af program 2" #: data/org.gnome.shell.gschema.xml.in:259 msgid "Open a new instance of application 3" msgstr "Åbn en ny session af program 3" #: data/org.gnome.shell.gschema.xml.in:263 msgid "Open a new instance of application 4" msgstr "Åbn en ny session af program 4" #: data/org.gnome.shell.gschema.xml.in:267 msgid "Open a new instance of application 5" msgstr "Åbn en ny session af program 5" #: data/org.gnome.shell.gschema.xml.in:271 msgid "Open a new instance of application 6" msgstr "Åbn en ny session af program 6" #: data/org.gnome.shell.gschema.xml.in:275 msgid "Open a new instance of application 7" msgstr "Åbn en ny session af program 7" #: data/org.gnome.shell.gschema.xml.in:279 msgid "Open a new instance of application 8" msgstr "Åbn en ny session af program 8" #: data/org.gnome.shell.gschema.xml.in:283 msgid "Open a new instance of application 9" msgstr "Åbn en ny session af program 9" #: data/org.gnome.shell.gschema.xml.in:308 #: data/org.gnome.shell.gschema.xml.in:335 msgid "Limit switcher to current workspace." msgstr "Begræns skifteren til det nuværende arbejdsområde." #: data/org.gnome.shell.gschema.xml.in:309 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "Hvis sand, vises kun programmer, som har vinduer på det nuværende " "arbejdsområde, i skifteren. Ellers er alle programmer inkluderet." #: data/org.gnome.shell.gschema.xml.in:326 msgid "The application icon mode." msgstr "Ikon-tilstanden for programmet." #: data/org.gnome.shell.gschema.xml.in:327 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-only” " "(shows only the application icon) or “both”." msgstr "" "Konfigurerer hvordan vinduer bliver vist i omskifteren. Gyldige muligheder " "er “thumbnail-only” (viser forhåndsvisning af vinduet), “app-icon-only” " "(viser kun programikonet) eller “both” (begge)." #: data/org.gnome.shell.gschema.xml.in:336 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "Hvis sand, vises kun vinduer fra det nuværende arbejdsområde i skifteren. " "Ellers er alle programmer inkluderet." #: data/org.gnome.shell.gschema.xml.in:346 msgid "Locations" msgstr "Placeringer" #: data/org.gnome.shell.gschema.xml.in:347 msgid "The locations to show in world clocks" msgstr "Placeringerne som skal vises i verdensure" #: data/org.gnome.shell.gschema.xml.in:357 msgid "Automatic location" msgstr "Automatisk placering" #: data/org.gnome.shell.gschema.xml.in:358 msgid "Whether to fetch the current location or not" msgstr "Om den nuværende placering skal hentes eller ej" #: data/org.gnome.shell.gschema.xml.in:365 msgid "Location" msgstr "Placering" #: data/org.gnome.shell.gschema.xml.in:366 msgid "The location for which to show a forecast" msgstr "Placeringen der skal vises en prognose for" #. Keep in sync with subprojects/extensions-app #: data/org.gnome.Shell.Extensions.desktop.in.in:5 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/data/ui/extensions-window.ui:57 msgid "Extensions" msgstr "Udvidelser" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "Netværksindlogning" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:275 msgid "Something’s gone wrong" msgstr "Noget gik galt" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" "Vi er kede af det, men der er opstået et problem: Denne udvidelses " "indstillinger kan ikke vises. Vi anbefaler, at du rapporterer problemet til " "udvidelsens forfattere." #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "Tekniske detaljer" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "Hjemmeside" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 msgid "Visit extension homepage" msgstr "Besøg udvidelsens hjemmeside" #: js/gdm/authPrompt.js:151 js/gdm/loginDialog.js:465 #: js/ui/audioDeviceSelection.js:66 js/ui/components/networkAgent.js:113 #: js/ui/components/polkitAgent.js:144 js/ui/endSessionDialog.js:437 #: js/ui/extensionDownloader.js:276 js/ui/shellMountOperation.js:382 #: js/ui/shellMountOperation.js:392 msgid "Cancel" msgstr "Annullér" #: js/gdm/authPrompt.js:317 js/ui/components/networkAgent.js:213 #: js/ui/components/networkAgent.js:233 js/ui/components/networkAgent.js:265 #: js/ui/components/networkAgent.js:298 js/ui/components/networkAgent.js:337 #: js/ui/components/networkAgent.js:350 js/ui/components/polkitAgent.js:286 #: js/ui/shellMountOperation.js:332 msgid "Password" msgstr "Adgangskode" #: js/gdm/loginDialog.js:326 msgid "Choose Session" msgstr "Vælg session" #. Translators: is running for #: js/gdm/loginDialog.js:423 #, javascript-format msgid "" "Remote login is not possible because a remote session is already running for " "%s. To login remotely, you must log out from the remote session or force " "stop it." msgstr "" "Fjernlogin er ikke muligt, fordi der stadig kører en fjernsession for %s. " "For at logge ind over netværk er du nødt til at logge ud af den igangværende " "eller tvinge den til at afslutte." #. Translators: is running for #: js/gdm/loginDialog.js:426 #, javascript-format msgid "" "Login is not possible because a remote session is already running for %s. To " "login, you must log out from the remote session or force stop it." msgstr "" "Det er ikke muligt at logge ind, fordi der allerede kører en fjernsession " "for %s. For at logge ind skal du først logge ud af den igangværende " "fjernsession eller tvinge den til at afslutte." #. Translators: is running for #: js/gdm/loginDialog.js:429 #, javascript-format msgid "" "Remote login is not possible because a local session is already running for " "%s. To login remotely, you must log out from the local session or force stop " "it." msgstr "" "Fjernlogin er ikke muligt, fordi der allerede kører en lokal session for %s. " "For at logge ind over netværk skal du først logge ud af den igangværende " "lokale session eller tvinge den til at afslutte." #. Translators: is running for #: js/gdm/loginDialog.js:432 #, javascript-format msgid "" "Login is not possible because a session is already running for %s. To login, " "you must log out from the session or force stop it." msgstr "" "Det er ikke muligt at logge ind, fordi der allerede kører en session for %s. " "For at logge ind skal du logge ud af den igangværende session eller tvinge " "den til at afslutte." #: js/gdm/loginDialog.js:441 msgid "Session Already Running" msgstr "Der kører allerede en session" #: js/gdm/loginDialog.js:453 msgid "" "Force stopping will quit any running apps and processes, and could result in " "data loss" msgstr "Hvis en session tvinges til at afslutte, afsluttes alle kørende programmer og processer, og dette kan resultere i tab af data" #: js/gdm/loginDialog.js:473 msgid "Force Stop" msgstr "Tving til at afslutte" #: js/gdm/loginDialog.js:541 msgid "Not listed?" msgstr "Ikke listet?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:1009 #, javascript-format msgid "(e.g., user or %s)" msgstr "(f.eks. bruger eller %s)" #: js/gdm/loginDialog.js:1014 js/ui/components/networkAgent.js:257 #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:326 msgid "Username" msgstr "Brugernavn" #: js/gdm/loginDialog.js:1080 msgid "Login Attempt Timed Out" msgstr "Loginforsøg udløb" #: js/gdm/loginDialog.js:1081 msgid "Login took too long, please try again" msgstr "Login tog for lang tid; forsøg venligst igen" #: js/gdm/loginDialog.js:1426 msgid "Login Window" msgstr "Indlogningsvindue" #: js/gdm/util.js:496 msgid "Authentication error" msgstr "Godkendelsesfejl" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:727 msgid "(or swipe finger across reader)" msgstr "(eller stryg fingeren over aflæseren)" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:732 msgid "(or place finger on reader)" msgstr "(eller placér fingeren på aflæseren)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:91 msgctxt "search-result" msgid "Power Off" msgstr "Sluk" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:94 msgid "power off;poweroff;shutdown;halt;stop" msgstr "sluk;luk ned;stands;stop" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:99 msgctxt "search-result" msgid "Restart" msgstr "Genstart" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:102 msgid "reboot;restart;" msgstr "reboot;genstart;" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:107 msgctxt "search-result" msgid "Lock Screen" msgstr "Lås skærm" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:110 msgid "lock screen" msgstr "lås skærm" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:115 msgctxt "search-result" msgid "Log Out" msgstr "Log ud" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:118 msgid "logout;log out;sign off" msgstr "log ud;log af;udmeld" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:123 msgctxt "search-result" msgid "Suspend" msgstr "Hviletilstand" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:126 msgid "suspend;sleep" msgstr "hviletilstand" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:131 msgctxt "search-result" msgid "Switch User" msgstr "Skift bruger" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:134 msgid "switch user" msgstr "skift bruger" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:141 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "lås orientering;deaktivér låst orientering;skærm;rotation" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:146 msgctxt "search-result" msgid "Take a Screenshot" msgstr "Tag et skærmbillede" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:149 msgid "screenshot;screencast;snip;capture;record" msgstr "screenshot;screencast;skærmbillede;snip;klip;optag" #: js/misc/systemActions.js:249 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "Deaktivér låst skærmrotation" #: js/misc/systemActions.js:250 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "Lås skærmrotation" #: js/misc/util.js:130 msgid "Command not found" msgstr "Kommando ikke fundet" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:170 msgid "Could not parse command:" msgstr "Kunne ikke fortolke kommando:" #: js/misc/util.js:178 #, javascript-format msgid "Execution of “%s” failed:" msgstr "Kørsel af “%s” mislykkedes:" #: js/misc/dateUtils.js:69 msgid "Just now" msgstr "Lige nu" #: js/misc/dateUtils.js:72 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d minut siden" msgstr[1] "%d minutter siden" #: js/misc/dateUtils.js:79 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d time siden" msgstr[1] "%d timer siden" #: js/misc/dateUtils.js:85 js/ui/dateMenu.js:183 msgid "Yesterday" msgstr "I går" #: js/misc/dateUtils.js:88 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d dag siden" msgstr[1] "%d dage siden" #: js/misc/dateUtils.js:95 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d uge siden" msgstr[1] "%d uger siden" #: js/misc/dateUtils.js:102 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%d måned siden" msgstr[1] "%d måneder siden" #: js/misc/dateUtils.js:108 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "%d år siden" msgstr[1] "%d år siden" #. Translators: Time in 24h format #: js/misc/dateUtils.js:155 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/dateUtils.js:161 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "I går, %H∶%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/dateUtils.js:167 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/dateUtils.js:173 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%-d. %B, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/dateUtils.js:179 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%-d. %B %Y, %H∶%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/dateUtils.js:184 msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/dateUtils.js:190 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "I går, %l∶%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/dateUtils.js:196 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/dateUtils.js:202 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%-d. %B, %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/dateUtils.js:208 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%-d. %B %Y, %l∶%M %p" #: js/portalHelper/main.js:98 msgid "Your connection seems to be secure" msgstr "Din forbindelse ser ud til at være sikker" #: js/portalHelper/main.js:104 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "Din forbindelse til dette hotspot-login er ikke sikkert. Adgangskoder eller " "anden information du indtaster på denne side, kan ses af personer i nærheden." #: js/portalHelper/main.js:115 msgid "Hotspot Login" msgstr "Hotspot-login" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:51 js/ui/inhibitShortcutsDialog.js:92 msgid "Deny" msgstr "Nægt" #: js/ui/accessDialog.js:52 js/ui/inhibitShortcutsDialog.js:101 msgid "Allow" msgstr "Tillad" #: js/ui/appDisplay.js:1769 msgid "Unnamed Folder" msgstr "Unavngivet mappe" #: js/ui/appFavorites.js:163 #, javascript-format msgid "%s has been pinned to the dash." msgstr "%s er blevet fastgjort til favoritområdet." #: js/ui/appFavorites.js:194 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "%s er blevet frigjort fra favoritområdet." #: js/ui/appFavorites.js:208 js/ui/main.js:281 msgid "Undo" msgstr "Fortryd" #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:49 msgid "Open Windows" msgstr "Åbne vinduer" #: js/ui/appMenu.js:57 msgid "New Window" msgstr "Nyt vindue" #: js/ui/appMenu.js:84 msgid "App Details" msgstr "Programdetaljer" #: js/ui/appMenu.js:100 msgid "Quit" msgstr "Afslut" #: js/ui/appMenu.js:160 js/ui/dash.js:248 msgid "Unpin" msgstr "Frigør" #: js/ui/appMenu.js:161 msgid "Pin to Dash" msgstr "Fastgør til favoritområde" #: js/ui/appMenu.js:178 msgid "Launch using Integrated Graphics Card" msgstr "Start med integreret grafikkort" #: js/ui/appMenu.js:179 msgid "Launch using Discrete Graphics Card" msgstr "Start med særskilt grafikkort" #: js/ui/audioDeviceSelection.js:46 msgid "Select Audio Device" msgstr "Vælg lydenhed" #: js/ui/audioDeviceSelection.js:61 js/ui/status/volume.js:81 msgid "Sound Settings" msgstr "Indstillinger for lyd" #: js/ui/audioDeviceSelection.js:74 msgid "Headphones" msgstr "Hovedtelefoner" #: js/ui/audioDeviceSelection.js:76 msgid "Headset" msgstr "Headset" #: js/ui/audioDeviceSelection.js:78 js/ui/status/volume.js:356 msgid "Microphone" msgstr "Mikrofon" #: js/ui/backgroundMenu.js:13 msgid "Change Background…" msgstr "Skift baggrund …" #: js/ui/backgroundMenu.js:15 msgid "Display Settings" msgstr "Skærmindstillinger" #: js/ui/backgroundMenu.js:16 msgid "Settings" msgstr "Indstillinger" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:37 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:63 msgctxt "grid sunday" msgid "S" msgstr "S" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:65 msgctxt "grid monday" msgid "M" msgstr "M" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:67 msgctxt "grid tuesday" msgid "T" msgstr "T" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:69 msgctxt "grid wednesday" msgid "W" msgstr "O" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:71 msgctxt "grid thursday" msgid "T" msgstr "T" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:73 msgctxt "grid friday" msgid "F" msgstr "F" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:75 msgctxt "grid saturday" msgid "S" msgstr "L" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:426 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:436 msgid "%OB %Y" msgstr "%OB %Y" #: js/ui/calendar.js:498 msgid "Previous month" msgstr "Forrige måned" #: js/ui/calendar.js:516 msgid "Next month" msgstr "Næste måned" #: js/ui/calendar.js:667 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:726 msgid "Week %V" msgstr "Uge %V" #: js/ui/calendar.js:918 msgid "No Notifications" msgstr "Ingen påmindelser" #: js/ui/calendar.js:974 msgid "Do Not Disturb" msgstr "Forstyr ikke" #: js/ui/calendar.js:995 msgid "Clear" msgstr "Ryd" #: js/ui/calendar.js:999 msgctxt "action" msgid "Clear all notifications" msgstr "Ryd alle påmindelser" #. Translators: %s is an application name #: js/ui/closeDialog.js:42 #, javascript-format msgid "“%s” Is Not Responding" msgstr "“%s” svarer ikke" #: js/ui/closeDialog.js:43 msgid "" "You may choose to wait a short while for it to continue or force the app to " "quit entirely" msgstr "Du kan vælge at vente et øjeblik på, at det fortsætter, eller tvinge programmet til at lukke ned" #: js/ui/closeDialog.js:71 msgid "Force Quit" msgstr "Tving lukning" #: js/ui/closeDialog.js:76 msgid "Wait" msgstr "Vent" #: js/ui/components/automountManager.js:82 msgid "External drive connected" msgstr "Eksternt drev tilkoblet" #: js/ui/components/automountManager.js:94 msgid "External drive disconnected" msgstr "Eksternt drev frakoblet" #: js/ui/components/automountManager.js:208 msgid "Unable to unlock volume" msgstr "Kunne ikke låse op for diskenhed" #: js/ui/components/automountManager.js:209 msgid "The installed udisks version does not support the PIM setting" msgstr "Den installerede version af udisks understøtter ikke PIM-indstillingen" #. Translators: %s is the name of a partition on a external drive #: js/ui/components/autorunManager.js:189 #, javascript-format msgid "“%s” connected" msgstr "“%s” tilsluttet" #: js/ui/components/autorunManager.js:190 msgid "Disk can now be used" msgstr "Disken kan nu bruges" #: js/ui/components/autorunManager.js:202 #, javascript-format msgid "Open with %s" msgstr "Åbn med %s" #: js/ui/components/networkAgent.js:95 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router" msgstr "Du kan også oprette forbindelse ved at trykke på “WPS”-knappen på din router" #: js/ui/components/networkAgent.js:107 js/ui/status/bluetooth.js:245 #: js/ui/status/network.js:360 js/ui/status/network.js:444 msgid "Connect" msgstr "Forbind" #: js/ui/components/networkAgent.js:222 msgid "Key" msgstr "Nøgle" #: js/ui/components/networkAgent.js:273 js/ui/components/networkAgent.js:312 msgid "Private key password" msgstr "Adgangskode til privat nøgle" #: js/ui/components/networkAgent.js:306 msgid "Identity" msgstr "Identitet" #: js/ui/components/networkAgent.js:332 msgid "Service" msgstr "Tjeneste" #: js/ui/components/networkAgent.js:370 js/ui/components/networkAgent.js:406 #: js/ui/components/networkAgent.js:743 js/ui/components/networkAgent.js:764 msgid "Authentication required" msgstr "Godkendelse påkrævet" #: js/ui/components/networkAgent.js:371 js/ui/components/networkAgent.js:744 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network “%s”" msgstr "Adgangskoder eller krypteringsnøgler er påkrævet for at få adgang til det trådløse netværk “%s”" #: js/ui/components/networkAgent.js:375 js/ui/components/networkAgent.js:748 msgid "Wired 802.1X authentication" msgstr "Trådet 802.1X-godkendelse" #: js/ui/components/networkAgent.js:378 msgid "Network name" msgstr "Netværksnavn" #: js/ui/components/networkAgent.js:386 js/ui/components/networkAgent.js:752 msgid "DSL authentication" msgstr "DSL-godkendelse" #: js/ui/components/networkAgent.js:393 js/ui/components/networkAgent.js:757 msgid "PIN code required" msgstr "PIN-kode er påkrævet" #: js/ui/components/networkAgent.js:394 js/ui/components/networkAgent.js:758 msgid "PIN code is needed for the mobile broadband device" msgstr "PIN-kode er nødvendig for den mobile bredbåndsenhed" #: js/ui/components/networkAgent.js:396 msgid "PIN" msgstr "PIN" #: js/ui/components/networkAgent.js:407 js/ui/components/networkAgent.js:749 #: js/ui/components/networkAgent.js:753 js/ui/components/networkAgent.js:765 #: js/ui/components/networkAgent.js:769 #, javascript-format msgid "A password is required to connect to “%s”" msgstr "Der kræves en adgangskode for at forbinde til “%s”" #: js/ui/components/networkAgent.js:768 msgid "VPN password" msgstr "VPN-adgangskode" #: js/ui/components/polkitAgent.js:44 msgid "Authentication Required" msgstr "Godkendelse er påkrævet" #: js/ui/components/polkitAgent.js:84 msgid "Administrator" msgstr "Administrator" #: js/ui/components/polkitAgent.js:149 msgid "Authenticate" msgstr "Godkend" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:263 js/ui/shellMountOperation.js:415 msgid "Sorry, that didn’t work. Please try again." msgstr "Beklager, det fungerede ikke. Prøv igen." #: js/ui/ctrlAltTab.js:23 js/ui/overviewControls.js:404 msgid "Windows" msgstr "Vinduer" #: js/ui/dash.js:204 js/ui/dash.js:250 msgid "Show Apps" msgstr "Vis programmer" #. Translators: this is the name of the dock/favorites area on #. the bottom of the overview #: js/ui/dash.js:408 msgid "Dash" msgstr "Favoritområde" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:99 msgid "%B %-d %Y" msgstr "%-d. %B %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:106 msgid "%A %B %e %Y" msgstr "%A %-d. %B %Y" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:172 msgctxt "calendar heading" msgid "%B %-d" msgstr "%-d. %B" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:175 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%-d. %B %Y" #: js/ui/dateMenu.js:181 msgid "Today" msgstr "I dag" #: js/ui/dateMenu.js:185 msgid "Tomorrow" msgstr "I morgen" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:216 msgctxt "event list time" msgid "All Day" msgstr "Hele dagen" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:238 msgid "%m/%d" msgstr "%d/%m" #: js/ui/dateMenu.js:289 msgid "No Events" msgstr "Ingen begivenheder" #: js/ui/dateMenu.js:411 msgid "Add World Clocks…" msgstr "Tilføj verdensure …" #: js/ui/dateMenu.js:412 msgid "World Clocks" msgstr "Verdensure" #: js/ui/dateMenu.js:702 msgid "Loading…" msgstr "Indlæser …" #: js/ui/dateMenu.js:712 msgid "Go Online for Weather Information" msgstr "Gå online for at se information om vejret" #: js/ui/dateMenu.js:714 msgid "Weather Information Unavailable" msgstr "Vejrinformation er ikke tilgængelig" #: js/ui/dateMenu.js:724 msgid "Weather" msgstr "Vejr" #: js/ui/dateMenu.js:726 msgid "Select Weather Location…" msgstr "Vælg en placering for vejr …" #: js/ui/endSessionDialog.js:47 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "Log %s ud" #: js/ui/endSessionDialog.js:48 msgctxt "title" msgid "Log Out" msgstr "Log ud" #: js/ui/endSessionDialog.js:51 #, javascript-format msgid "%s will be logged out automatically in %d second" msgid_plural "%s will be logged out automatically in %d seconds" msgstr[0] "%s vil blive logget ud automatisk om %d sekund" msgstr[1] "%s vil blive logget ud automatisk om %d sekunder" #: js/ui/endSessionDialog.js:57 #, javascript-format msgid "You will be logged out automatically in %d second" msgid_plural "You will be logged out automatically in %d seconds" msgstr[0] "Du vil blive logget ud automatisk om %d sekund" msgstr[1] "Du vil blive logget ud automatisk om %d sekunder" #: js/ui/endSessionDialog.js:64 msgctxt "button" msgid "Log Out" msgstr "Log ud" #: js/ui/endSessionDialog.js:70 js/ui/status/system.js:174 msgctxt "title" msgid "Power Off" msgstr "Sluk" #: js/ui/endSessionDialog.js:71 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Installér opdateringer og sluk" #: js/ui/endSessionDialog.js:74 #, javascript-format msgid "The system will power off automatically in %d second" msgid_plural "The system will power off automatically in %d seconds" msgstr[0] "Systemet vil lukke ned automatisk om %d sekund" msgstr[1] "Systemet vil lukke ned automatisk om %d sekunder" #: js/ui/endSessionDialog.js:78 js/ui/endSessionDialog.js:97 msgctxt "checkbox" msgid "Install pending software updates" msgstr "Installér ventende softwareopdateringer" #: js/ui/endSessionDialog.js:82 msgctxt "button" msgid "Power Off" msgstr "Sluk" #: js/ui/endSessionDialog.js:89 msgctxt "title" msgid "Restart" msgstr "Genstart" #: js/ui/endSessionDialog.js:90 msgctxt "title" msgid "Install Updates & Restart" msgstr "Installér opdateringer og genstart" #: js/ui/endSessionDialog.js:93 #, javascript-format msgid "The system will restart automatically in %d second" msgid_plural "The system will restart automatically in %d seconds" msgstr[0] "Systemet vil genstarte automatisk om %d sekund" msgstr[1] "Systemet vil genstarte automatisk om %d sekunder" #: js/ui/endSessionDialog.js:101 msgctxt "button" msgid "Restart" msgstr "Genstart" #: js/ui/endSessionDialog.js:109 msgctxt "title" msgid "Restart & Install Updates" msgstr "Genstart og installér opdateringer" #: js/ui/endSessionDialog.js:112 #, javascript-format msgid "The system will automatically restart and install updates in %d second" msgid_plural "" "The system will automatically restart and install updates in %d seconds" msgstr[0] "Systemet vil genstarte og installere opdateringer automatisk om %d sekund" msgstr[1] "Systemet vil genstarte og installere opdateringer automatisk om %d sekunder" #: js/ui/endSessionDialog.js:119 js/ui/endSessionDialog.js:140 msgctxt "button" msgid "Restart & Install" msgstr "Genstart og installér" #: js/ui/endSessionDialog.js:121 msgctxt "button" msgid "Install & Power Off" msgstr "Installér og sluk" #: js/ui/endSessionDialog.js:122 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Sluk efter opdateringerne er installeret" #: js/ui/endSessionDialog.js:129 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "Genstart og installér opgradering" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:134 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "%s %s vil blive installeret efter genstart. Installering af opgradering kan " "vare længe: Sikr dig, at du har sikkerhedskopier, og at computeren er " "tilsluttet elnettet." #: js/ui/endSessionDialog.js:283 msgid "Low battery power: please plug in before installing updates" msgstr "Lavt batteriniveau: Tilslut strøm før installation af opdateringer" #: js/ui/endSessionDialog.js:292 msgid "Some applications are busy or have unsaved work" msgstr "" "Nogle programmer er optagede eller indeholder arbejde, der ikke er gemt" #: js/ui/endSessionDialog.js:297 msgid "Other users are logged in" msgstr "Andre brugere er logget ind" #: js/ui/endSessionDialog.js:467 msgctxt "button" msgid "Boot Options" msgstr "Bootindstillinger" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:672 #, javascript-format msgid "%s (remote)" msgstr "%s (fjern)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:675 #, javascript-format msgid "%s (console)" msgstr "%s (konsol)" #: js/ui/extensionDownloader.js:280 msgid "Install" msgstr "Installér" #: js/ui/extensionDownloader.js:286 msgid "Install Extension" msgstr "Installér udvidelse" #: js/ui/extensionDownloader.js:287 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "Hent og installér “%s” fra extensions.gnome.org?" #: js/ui/extensionSystem.js:352 msgid "Extension Updates Available" msgstr "Der er opdateringer til udvidelser" #: js/ui/extensionSystem.js:353 msgid "Extension updates are ready to be installed" msgstr "Opdateringer til udvidelser er klar til at blive installeret" #: js/ui/inhibitShortcutsDialog.js:70 msgid "Allow inhibiting shortcuts" msgstr "Tillad at genveje hindres" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:73 #, javascript-format msgid "The app %s wants to inhibit shortcuts" msgstr "Programmet %s vil forhindre genveje" #: js/ui/inhibitShortcutsDialog.js:74 msgid "An app wants to inhibit shortcuts" msgstr "Et program vil forhindre genveje" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:81 #, javascript-format msgid "You can restore shortcuts by pressing %s" msgstr "Du kan gendanne genveje ved at trykke %s" #: js/ui/kbdA11yDialog.js:34 msgid "Slow Keys Turned On" msgstr "Langsomme taster slået til" #: js/ui/kbdA11yDialog.js:35 msgid "Slow Keys Turned Off" msgstr "Langsomme taster slået fra" #: js/ui/kbdA11yDialog.js:36 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "Du har lige holdt skift-tasten nede i otte sekunder. Dette er genvejen til " "langsomme taster, som påvirker, hvordan dit tastatur virker." #: js/ui/kbdA11yDialog.js:42 msgid "Sticky Keys Turned On" msgstr "Klæbetaster slået til" #: js/ui/kbdA11yDialog.js:43 msgid "Sticky Keys Turned Off" msgstr "Klæbetaster slået fra" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "Du har lige trykket på skift-tasten fem gange i træk. Dette er genvejen til " "klæbetaster, som påvirker, hvordan dit tastatur virker." #: js/ui/kbdA11yDialog.js:47 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" "Du har lige trykket på to taster samtidigt eller trykket på skift-tasten fem " "gange i træk. Dette slår klæbetaster fra, hvilket påvirker, hvordan dit " "tastatur virker." #: js/ui/kbdA11yDialog.js:57 msgid "Leave On" msgstr "Lad være tændt" #: js/ui/kbdA11yDialog.js:57 msgid "Turn On" msgstr "Tænd" #: js/ui/kbdA11yDialog.js:67 js/ui/status/network.js:455 msgid "Turn Off" msgstr "Sluk" #: js/ui/kbdA11yDialog.js:67 msgid "Leave Off" msgstr "Lad være slukket" #: js/ui/keyboard.js:180 js/ui/status/keyboard.js:897 msgid "Keyboard Settings" msgstr "Indstillinger for tastatur" #: js/ui/lookingGlass.js:727 msgid "No extensions installed" msgstr "Ingen udvidelser er installeret" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:788 #, javascript-format msgid "%s has not emitted any errors" msgstr "%s er ikke kommet med nogen fejl" #: js/ui/lookingGlass.js:794 msgid "Hide Errors" msgstr "Skjul fejl" #: js/ui/lookingGlass.js:798 js/ui/lookingGlass.js:875 msgid "Show Errors" msgstr "Vis fejl" #: js/ui/lookingGlass.js:807 msgid "Active" msgstr "Aktiv" #: js/ui/lookingGlass.js:810 msgid "Inactive" msgstr "Inaktiv" #: js/ui/lookingGlass.js:812 msgid "Error" msgstr "Fejl" #: js/ui/lookingGlass.js:814 msgid "Out of date" msgstr "Udløbet" #: js/ui/lookingGlass.js:816 msgid "Downloading" msgstr "Henter" # Iflg. kildekoden er disse strenge tilstande af udvidelser, dvs. udvidelsen er ved at blive (de)aktiveret, hentet osv. Jeg tror nutid er fint #: js/ui/lookingGlass.js:818 msgid "Deactivating" msgstr "Deaktiverer" #: js/ui/lookingGlass.js:820 msgid "Activating" msgstr "Aktiverer" #: js/ui/lookingGlass.js:853 msgid "View Source" msgstr "Vis kilde" #: js/ui/lookingGlass.js:864 msgid "Web Page" msgstr "Webside" #: js/ui/main.js:277 msgid "System was put in unsafe mode" msgstr "Systemet blev placeret i usikker tilstand" #: js/ui/main.js:278 msgid "Apps now have unrestricted access" msgstr "Programmer har nu ubegrænset adgang" #: js/ui/main.js:338 msgid "Logged in as a privileged user" msgstr "Logget ind som en privilegeret bruger" #: js/ui/main.js:339 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" "Kørsel af en session som en privilegeret bruger bør undgås af " "sikkerhedsmæssige årsager. Log ind som en normal bruger, hvis det er muligt." #: js/ui/main.js:387 msgid "Screen Lock disabled" msgstr "Skærmlås er deaktiveret" #: js/ui/main.js:388 msgid "Screen Locking requires the GNOME display manager" msgstr "Skærmlåsning kræver GNOME-skærmhåndteringen" #. Translators: this is the string displayed in the header when a message #. source doesn't have a name #: js/ui/messageList.js:374 msgid "Unknown App" msgstr "Ukendt program" #: js/ui/messageTray.js:326 js/ui/messageTray.js:328 msgid "Notification sound" msgstr "Påmindelseslyd" #: js/ui/mpris.js:198 msgid "Unknown artist" msgstr "Ukendt kunstner" #: js/ui/mpris.js:208 msgid "Unknown title" msgstr "Ukendt titel" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:328 msgid "Type to search" msgstr "Skriv for at søge" #: js/ui/overviewControls.js:392 msgid "Apps" msgstr "Programmer" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:33 msgid "Overview" msgstr "Oversigt" #: js/ui/padOsd.js:98 msgid "New shortcut…" msgstr "Ny genvej …" #: js/ui/padOsd.js:151 msgid "App defined" msgstr "Program defineret" #: js/ui/padOsd.js:152 msgid "Show on-screen help" msgstr "Vis hjælp på skærmen" #: js/ui/padOsd.js:153 msgid "Switch monitor" msgstr "Skift skærm" #: js/ui/padOsd.js:154 msgid "Assign keystroke" msgstr "Tildel tastekombination" #: js/ui/padOsd.js:223 msgid "Done" msgstr "Færdig" #: js/ui/padOsd.js:726 msgid "Edit…" msgstr "Redigér …" #: js/ui/padOsd.js:773 msgid "None" msgstr "Ingen" #: js/ui/padOsd.js:844 msgid "Press a button to configure" msgstr "Tryk på en knap for at konfigurere" #: js/ui/padOsd.js:845 msgid "Press Esc to exit" msgstr "Tryk Esc for at afslutte" #: js/ui/padOsd.js:848 msgid "Press any key to exit" msgstr "Tryk en vilkårlig tast for at afslutte" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:423 msgid "Activities" msgstr "Aktiviteter" #: js/ui/panel.js:504 msgctxt "System menu in the top bar" msgid "System" msgstr "System" #: js/ui/panel.js:678 msgid "Top Bar" msgstr "Toppanel" #: js/ui/quickSettings.js:188 msgid "Open menu" msgstr "Åbn menu" #: js/ui/runDialog.js:61 msgid "Run a Command" msgstr "Kør en kommando" #: js/ui/runDialog.js:76 msgid "Press ESC to close" msgstr "Tryk Esc for at lukke" #: js/ui/runDialog.js:241 msgid "Restart is not available on Wayland" msgstr "Genstart er ikke tilgængelig på Wayland" #: js/ui/runDialog.js:246 msgid "Restarting…" msgstr "Genstarter …" #: js/ui/screenShield.js:233 msgid "GNOME needs to lock the screen" msgstr "GNOME er nødt til at låse skærmen" #: js/ui/screenShield.js:274 js/ui/screenShield.js:667 msgid "Unable to lock" msgstr "Kunne ikke låse" #: js/ui/screenShield.js:275 js/ui/screenShield.js:668 msgid "Lock was blocked by an app" msgstr "Lås blev blokeret af et program" #: js/ui/screenshot.js:1252 msgid "Selection" msgstr "Markering" #: js/ui/screenshot.js:1262 msgid "Area Selection" msgstr "Områdemarkering" #: js/ui/screenshot.js:1267 msgid "Screen" msgstr "Skærm" #: js/ui/screenshot.js:1277 msgid "Screen Selection" msgstr "Skærmmarkering" #: js/ui/screenshot.js:1282 msgid "Window" msgstr "Vindue" #: js/ui/screenshot.js:1292 msgid "Window Selection" msgstr "Vinduesmarkering" #. Translators: entry in the window right click menu. #: js/ui/screenshot.js:1317 js/ui/status/system.js:111 js/ui/windowMenu.js:28 msgid "Take Screenshot" msgstr "Tag skærmbillede" #: js/ui/screenshot.js:1333 msgid "Record Screen" msgstr "Optag skærm" #. Translators: since this string refers to an action, #. it needs to be phrased as a verb. #: js/ui/screenshot.js:1350 msgid "Capture" msgstr "Optag" #: js/ui/screenshot.js:1372 msgid "Show Pointer" msgstr "Vis markør" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1996 msgid "Screencasts" msgstr "Skærmoptagelser" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast From 07-17-2013 10:00:46 PM" #: js/ui/screenshot.js:2001 #, no-c-format msgid "Screencast From %d %t" msgstr "Skærmoptagelse fra %d %t" #. Translators: notification title. #: js/ui/screenshot.js:2047 msgid "Screencast recorded" msgstr "Skærmoptagelse optaget" #. Translators: notification title. #: js/ui/screenshot.js:2060 msgid "Screencast failed to start" msgstr "Skærmoptagelse kunne ikke starte" #. Translators: notification title. #: js/ui/screenshot.js:2066 msgid "Screencast ended: Out of disk space" msgstr "Skærmoptagelse afsluttede: Ingen diskplads" #. We can encourage user to try again on service crashes since the #. recorder will auto-blocklist the pipeline that crashed. #. Translators: notification title. #: js/ui/screenshot.js:2072 msgid "Screencast ended unexpectedly, please try again" msgstr "Skærmoptagelse afsluttede uventet; prøv venligst igen" #. Translators: notification title. #: js/ui/screenshot.js:2075 msgid "Screencast ended unexpectedly" msgstr "Skærmoptagelse afsluttede uventet" #. Translators: notification source name. #: js/ui/screenshot.js:2085 js/ui/screenshot.js:2327 msgid "Screenshot" msgstr "Skærmbillede" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:2092 msgid "Click here to view the video." msgstr "Klik her for at se videoen." #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:2100 js/ui/screenshot.js:2343 msgid "Show in Files" msgstr "Vis i Filer" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2287 #, javascript-format msgid "Screenshot From %s" msgstr "Skærmbillede fra %s" #. Translators: notification title. #: js/ui/screenshot.js:2333 msgid "Screenshot captured" msgstr "Skærmbillede taget" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2335 msgid "You can paste the image from the clipboard." msgstr "Du kan indsætte billedet fra udklipsholderen." #: js/ui/screenshot.js:2391 js/ui/screenshot.js:2555 msgid "Screenshot taken" msgstr "Skærmbillede blev taget" #: js/ui/search.js:829 msgid "Searching…" msgstr "Søger …" #: js/ui/search.js:831 msgid "No results" msgstr "Ingen resultater" #: js/ui/search.js:962 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "%d mere" msgstr[1] "%d mere" #: js/ui/searchController.js:87 #: subprojects/extensions-app/data/ui/extensions-window.ui:73 msgid "Search" msgstr "Søg" #: js/ui/shellEntry.js:21 msgid "Copy" msgstr "Kopiér" #: js/ui/shellEntry.js:26 msgid "Paste" msgstr "Indsæt" #: js/ui/shellEntry.js:78 msgid "Show Text" msgstr "Vis tekst" #: js/ui/shellEntry.js:80 msgid "Hide Text" msgstr "Skjul tekst" #: js/ui/shellEntry.js:174 msgid "Caps lock is on" msgstr "Caps lock er slået til" #: js/ui/shellMountOperation.js:286 msgid "Hidden Volume" msgstr "Skjult diskenhed" #: js/ui/shellMountOperation.js:289 msgid "Windows System Volume" msgstr "Windows systemdiskenhed" #: js/ui/shellMountOperation.js:292 msgid "Uses Keyfiles" msgstr "Bruger nøglefiler" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:300 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead" msgstr "Brug i stedet %s-redskabet for at låse op for en diskenhed, som bruger nøglefiler" #: js/ui/shellMountOperation.js:304 msgid "" "You need an external utility like Disks to unlock a volume that uses " "keyfiles" msgstr "Du skal bruge et eksternt værktøj som f.eks. Diske for at oplåse en diskenhed, som bruger nøglefiler" #: js/ui/shellMountOperation.js:312 msgid "PIM Number" msgstr "PIM-nummer" #: js/ui/shellMountOperation.js:371 msgid "Remember Password" msgstr "Husk adgangskode" #: js/ui/shellMountOperation.js:386 msgid "Unlock" msgstr "Lås op" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:400 #, javascript-format msgid "Open %s" msgstr "Åbn %s" #: js/ui/shellMountOperation.js:436 msgid "The PIM must be a number or empty" msgstr "PIM'et skal være et nummer eller tomt" #: js/ui/status/accessibility.js:34 msgid "Accessibility" msgstr "Tilgængelighed" #: js/ui/status/accessibility.js:44 msgid "High Contrast" msgstr "Høj kontrast" #: js/ui/status/accessibility.js:47 msgid "Zoom" msgstr "Zoom" #: js/ui/status/accessibility.js:54 msgid "Screen Reader" msgstr "Skærmlæser" #: js/ui/status/accessibility.js:58 msgid "Screen Keyboard" msgstr "Skærmtastatur" #: js/ui/status/accessibility.js:62 msgid "Visual Alerts" msgstr "Visuelle påmindelser" #: js/ui/status/accessibility.js:66 msgid "Sticky Keys" msgstr "Klæbetaster" #: js/ui/status/accessibility.js:70 msgid "Slow Keys" msgstr "Langsomme taster" #: js/ui/status/accessibility.js:74 msgid "Bounce Keys" msgstr "Hoppende taster" #: js/ui/status/accessibility.js:78 msgid "Mouse Keys" msgstr "Musetaster" #: js/ui/status/accessibility.js:83 msgid "Accessibility Settings" msgstr "Indstillinger for tilgængelighed" #: js/ui/status/accessibility.js:140 msgid "Large Text" msgstr "Stor tekst" #: js/ui/status/autoRotate.js:14 msgid "Auto Rotate" msgstr "Autorotation" #: js/ui/status/backgroundApps.js:156 msgctxt "title" msgid "Background Apps" msgstr "Baggrundsprogrammer" #: js/ui/status/backgroundApps.js:171 msgid "Apps known to be running without a window" msgstr "Programmer som vides at køre uden et vindue" #: js/ui/status/backgroundApps.js:182 msgid "App Settings" msgstr "Programindstillinger" #: js/ui/status/backgroundApps.js:239 msgid "No Background Apps" msgstr "Ingen baggrundsprogrammer" #: js/ui/status/backgroundApps.js:241 #, javascript-format msgid "%d Background App" msgid_plural "%d Background Apps" msgstr[0] "%d baggrundsprogram" msgstr[1] "%d baggrundsprogrammer" #: js/ui/status/backlight.js:39 msgid "Keyboard Brightness" msgstr "Tastaturlysstyrke" #: js/ui/status/backlight.js:79 msgid "Off" msgstr "Slukket" #: js/ui/status/backlight.js:80 msgid "Low" msgstr "Lav" #: js/ui/status/backlight.js:81 msgid "High" msgstr "Høj" #: js/ui/status/backlight.js:147 js/ui/status/keyboard.js:879 msgid "Keyboard" msgstr "Tastatur" #: js/ui/status/bluetooth.js:245 js/ui/status/network.js:360 msgid "Disconnect" msgstr "Afbryd" #: js/ui/status/bluetooth.js:262 js/ui/status/bluetooth.js:264 msgid "Bluetooth" msgstr "Bluetooth" #: js/ui/status/bluetooth.js:287 js/ui/status/network.js:1900 msgid "Bluetooth Settings" msgstr "Indstillinger for Bluetooth" #: js/ui/status/bluetooth.js:334 msgid "No available or connected devices" msgstr "Ingen tilgængelige eller tilsluttede enheder" #: js/ui/status/bluetooth.js:335 msgid "Turn on Bluetooth to connect to devices" msgstr "Slå Bluetooth til for at tilslutte til enheder" #. Translators: This is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:389 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d forbundet" msgstr[1] "%d forbundet" #: js/ui/status/brightness.js:32 msgid "Brightness" msgstr "Lysstyrke" #: js/ui/status/darkMode.js:12 msgid "Dark Style" msgstr "Mørk stil" #: js/ui/status/dwellClick.js:15 msgid "Single Click" msgstr "Enkeltklik" #: js/ui/status/dwellClick.js:20 msgid "Double Click" msgstr "Dobbeltklik" #: js/ui/status/dwellClick.js:25 msgid "Drag" msgstr "Træk" #: js/ui/status/dwellClick.js:30 msgid "Secondary Click" msgstr "Sekundært klik" #: js/ui/status/dwellClick.js:39 msgid "Dwell Click" msgstr "Hvileklik" #: js/ui/status/keyboard.js:896 msgid "Show Keyboard Layout" msgstr "Vis tastaturlayout" #: js/ui/status/location.js:337 msgid "Allow location access" msgstr "Tillad adgang til placering" #. Translators: %s is an application name #: js/ui/status/location.js:339 #, javascript-format msgid "The app %s wants to access your location" msgstr "Programmet %s ønsker adgang til din placering" #: js/ui/status/location.js:349 msgid "Location access can be changed at any time from the privacy settings" msgstr "Placeringsadgang kan ændres når som helst via privatlivsindstillingerne" #: js/ui/status/location.js:357 msgid "Deny Access" msgstr "Forbyd adgang" #: js/ui/status/location.js:362 msgid "Grant Access" msgstr "Giv adgang" #: js/ui/status/network.js:62 msgid "" msgstr "" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:354 #, javascript-format msgid "Disconnect %s" msgstr "Frakobl %s" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:356 #, javascript-format msgid "Connect to %s" msgstr "Forbind til %s" #: js/ui/status/network.js:1050 msgid "Secure" msgstr "Sikker" #: js/ui/status/network.js:1050 msgid "Not secure" msgstr "Usikker" #: js/ui/status/network.js:1051 #, javascript-format msgid "Signal strength %s%%" msgstr "Signalstyrke %s %%" #. translators: The first placeholder is the network name, the second and indication whether it is secure, and the last the signal strength indication #: js/ui/status/network.js:1053 #, javascript-format msgid "%s, %s, %s" msgstr "%s, %s, %s" #. Translators: %s is a network identifier #: js/ui/status/network.js:1155 #, javascript-format msgid "%s Hotspot" msgstr "%s-hotspot" #: js/ui/status/network.js:1426 #, javascript-format msgid "%d connected" msgid_plural "%d connected" msgstr[0] "%d forbundet" msgstr[1] "%d forbundet" #: js/ui/status/network.js:1524 js/ui/status/network.js:1540 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1525 msgid "VPN Settings" msgstr "Indstillinger for VPN" #: js/ui/status/network.js:1785 msgid "Wi–Fi" msgstr "Wi-fi" #: js/ui/status/network.js:1787 msgid "All Networks" msgstr "Alle netværk" #: js/ui/status/network.js:1884 msgid "Wired Connections" msgstr "Kablede forbindelser" #: js/ui/status/network.js:1885 msgid "Wired Settings" msgstr "Indstillinger for trådet netværk" #: js/ui/status/network.js:1899 msgid "Bluetooth Tethers" msgstr "Bluetooth-internetdelinger" #. Translators: "Tether" from "Bluetooth Tether" #: js/ui/status/network.js:1906 msgid "Tether" msgstr "Internetdeling" #: js/ui/status/network.js:1919 msgid "Mobile Connections" msgstr "Mobile forbindelser" #: js/ui/status/network.js:1921 msgid "Mobile Broadband Settings" msgstr "Indstillinger for mobilbredbånd" #. Translators: "Mobile" from "Mobile Broadband" #: js/ui/status/network.js:1930 msgid "Mobile" msgstr "Mobil" #: js/ui/status/network.js:1964 msgid "Sign Into Wi–Fi Network" msgstr "Tilgå Wi-Fi-netværk" #: js/ui/status/network.js:2151 msgid "Connection failed" msgstr "Forbindelse mislykkedes" #: js/ui/status/network.js:2152 msgid "Activation of network connection failed" msgstr "Aktivering af netværksforbindelse mislykkedes" #: js/ui/status/nightLight.js:19 msgid "Night Light" msgstr "Nattelys" #: js/ui/status/powerProfiles.js:19 msgctxt "Power profile" msgid "Performance" msgstr "Ydelse" #: js/ui/status/powerProfiles.js:24 msgctxt "Power profile" msgid "Balanced" msgstr "Balanceret" #: js/ui/status/powerProfiles.js:29 msgctxt "Power profile" msgid "Power Saver" msgstr "Strømsparetilstand" #: js/ui/status/powerProfiles.js:39 js/ui/status/powerProfiles.js:69 msgid "Power Mode" msgstr "Strømsparetilstand" #: js/ui/status/powerProfiles.js:71 msgid "Power Settings" msgstr "Indstillinger for strømstyring" #: js/ui/status/remoteAccess.js:74 msgid "Stop Screencast" msgstr "Stop en skærmoptagelse" #: js/ui/status/remoteAccess.js:144 msgid "Stop Screen Sharing" msgstr "Stop skærmdeling" #: js/ui/status/rfkill.js:99 msgid "Airplane Mode" msgstr "Flytilstand" #: js/ui/status/system.js:168 msgid "Power Off Menu" msgstr "Slukmenu" #: js/ui/status/system.js:176 msgid "Suspend" msgstr "Hviletilstand" #: js/ui/status/system.js:181 msgid "Restart…" msgstr "Genstart …" #: js/ui/status/system.js:186 msgid "Power Off…" msgstr "Sluk …" #: js/ui/status/system.js:193 #: subprojects/extensions-app/data/ui/extensions-window.ui:124 msgid "Log Out…" msgstr "Log ud …" #: js/ui/status/system.js:198 msgid "Switch User…" msgstr "Skift bruger …" #: js/ui/status/system.js:242 msgctxt "action" msgid "Lock Screen" msgstr "Lås skærm" #: js/ui/status/thunderbolt.js:308 msgid "Unknown Thunderbolt device" msgstr "Ukendt Thunderbolt-enhed" #: js/ui/status/thunderbolt.js:309 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" "En ny enhed blev fundet, mens du var væk. Frakobl og tilkobl enheden igen " "for at kunne bruge den." #: js/ui/status/thunderbolt.js:312 msgid "Unauthorized Thunderbolt device" msgstr "Ikkegodkendt Thunderbolt-enhed" #: js/ui/status/thunderbolt.js:313 msgid "" "New device has been detected and needs to be authorized by an administrator" msgstr "Ny enhed er fundet og skal godkendes af en administrator" #: js/ui/status/thunderbolt.js:319 msgid "Thunderbolt authorization error" msgstr "Thunderbolt-godkendelsesfejl" #: js/ui/status/thunderbolt.js:320 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "Kunne ikke godkende Thunderbolt-enheden: %s" #: js/ui/status/volume.js:218 msgid "Volume changed" msgstr "Lydstyrke ændret" #: js/ui/status/volume.js:231 msgid "Unmute" msgstr "Slå lyd til" #: js/ui/status/volume.js:231 msgid "Mute" msgstr "Slå lyd fra" #: js/ui/status/volume.js:286 msgid "Volume" msgstr "Lydstyrke" #: js/ui/status/volume.js:302 msgid "Sound Output" msgstr "Lydoutput" #: js/ui/status/volume.js:374 msgid "Sound Input" msgstr "Lydinput" # scootergrisen: tjek om det skal være Kloning frem for Klon. # scootergrisen: både i gnome-shell og gnome-control-center # scootergrisen: lader til Kloning er bedst i gnome-control-center # scootergrisen: men det ville nok være bedst hvis de var ens #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:20 msgid "Mirror" msgstr "Klon" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:29 msgid "Join Displays" msgstr "Sammenføj skærme" #. Translators: this is for using only external displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:39 msgid "External Only" msgstr "Kun ekstern" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:47 msgid "Built-in Only" msgstr "Kun indbygget" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:378 msgid "%A %B %-d" msgstr "%A %-d. %B" #: js/ui/unlockDialog.js:384 msgid "Swipe up to unlock" msgstr "Stryg op for at låse op" #: js/ui/unlockDialog.js:385 msgid "Click or press a key to unlock" msgstr "Klik eller tryk en tast for at låse op" #: js/ui/unlockDialog.js:568 msgid "Unlock Window" msgstr "Lås vindue op" #: js/ui/unlockDialog.js:577 msgid "Log in as another user" msgstr "Log ind som en anden bruger" #: js/ui/welcomeDialog.js:47 #, javascript-format msgid "GNOME %s" msgstr "GNOME %s" #: js/ui/welcomeDialog.js:51 #, javascript-format msgid "Welcome to %s" msgstr "Velkommen til %s" #: js/ui/welcomeDialog.js:52 msgid "If you want to learn your way around, check out the tour" msgstr "Hvis du vil lære at finde rundt, så prøv rundvisningen" #: js/ui/welcomeDialog.js:61 msgid "Skip" msgstr "Spring over" #: js/ui/welcomeDialog.js:66 msgid "Take Tour" msgstr "Tag rundvisningen" #: js/ui/windowAttentionHandler.js:18 #, javascript-format msgid "“%s” is ready" msgstr "“%s” er klar" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:68 msgid "Keep these display settings?" msgstr "Behold disse skærmindstillinger?" #: js/ui/windowManager.js:78 msgid "Revert Settings" msgstr "Forkast indstillinger" #: js/ui/windowManager.js:83 msgid "Keep Changes" msgstr "Behold ændringer" #: js/ui/windowManager.js:103 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "Indstillingsændringer forkastes om %d sekund" msgstr[1] "Indstillingsændringer forkastes om %d sekunder" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:500 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:40 msgid "Hide" msgstr "Skjul" #: js/ui/windowMenu.js:47 msgid "Restore" msgstr "Gendan" #: js/ui/windowMenu.js:51 msgid "Maximize" msgstr "Maksimér" #: js/ui/windowMenu.js:58 msgid "Move" msgstr "Flyt" #: js/ui/windowMenu.js:78 msgid "Resize" msgstr "Ændr størrelse" #: js/ui/windowMenu.js:98 msgid "Always on Top" msgstr "Altid øverst" #: js/ui/windowMenu.js:117 msgid "Always on Visible Workspace" msgstr "Altid på synligt arbejdsområde" #: js/ui/windowMenu.js:131 msgid "Move to Workspace Left" msgstr "Flyt til venstre arbejdsområde" #: js/ui/windowMenu.js:137 msgid "Move to Workspace Right" msgstr "Flyt til højre arbejdsområde" #: js/ui/windowMenu.js:143 msgid "Move to Workspace Up" msgstr "Flyt til arbejdsområdet ovenover" #: js/ui/windowMenu.js:149 msgid "Move to Workspace Down" msgstr "Flyt til arbejdsområdet nedenunder" #: js/ui/windowMenu.js:167 msgid "Move to Monitor Up" msgstr "Flyt til skærmen ovenover" #: js/ui/windowMenu.js:176 msgid "Move to Monitor Down" msgstr "Flyt til skærmen nedenunder" #: js/ui/windowMenu.js:185 msgid "Move to Monitor Left" msgstr "Flyt til venstre skærm" #: js/ui/windowMenu.js:194 msgid "Move to Monitor Right" msgstr "Flyt til højre skærm" #: js/ui/windowMenu.js:202 msgid "Close" msgstr "Luk" #: src/main.c:529 subprojects/extensions-tool/src/main.c:336 msgid "Print version" msgstr "Udskriv version" #: src/main.c:535 msgid "Mode used by GDM for login screen" msgstr "Tilstand brugt af GDM til indlogningsskærm" #: src/main.c:541 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "Brug en specifik tilstand, f.eks. “gdm” til indlogningsskærm" #: src/main.c:547 msgid "List possible modes" msgstr "Vis mulige tilstande" #: src/main.c:553 msgid "Force animations to be enabled" msgstr "Tving animationer til at være aktiverede" #: src/shell-app.c:252 msgctxt "program" msgid "Unknown" msgstr "Ukendt" #: src/shell-app.c:503 #, c-format msgid "Failed to launch “%s”" msgstr "Kunne ikke køre “%s”" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match" msgstr "Adgangskoder er ikke ens" #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "Adgangskode må ikke være tom" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "Godkendelsesdialogen blev afvist af brugeren" #: src/st/st-icon-theme.c:1865 #, c-format msgid "Icon '%s' not present in theme %s" msgstr "Ikonet “%s” er ikke tilgængeligt i temaet %s" #: src/st/st-icon-theme.c:3454 src/st/st-icon-theme.c:3757 msgid "Failed to load icon" msgstr "Kunne ikke indlæse ikon" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 msgid "Manage your GNOME Extensions" msgstr "Håndtér dine GNOME-udvidelser" #. developer_name tag deprecated with Appstream 1.0 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:19 msgid "The GNOME Project" msgstr "GNOME-projektet" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:51 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" "GNOME Udvidelser håndterer opdatering af udvidelser, konfigurering af deres " "indstillinger og fjernelse eller deaktivering af uønskede udvidelser." #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:64 msgid "Main Window" msgstr "Hovedvindue" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:68 msgid "Available Updates" msgstr "Tilgængelige opdateringer" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:72 msgid "Search View" msgstr "Søgevisning" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "Konfigurér GNOME Shell-udvidelser" #: subprojects/extensions-app/js/extensionManager.js:237 #, javascript-format msgid "" "The installed version of this extension (%s) is incompatible with the " "current version of GNOME (%s). The extension has been disabled." msgstr "" "Den installerede version af denne udvidelse (%s) er ikke kompatibel med " "denne version af GNOME (%s). Udvidelsen er blevet deaktiveret." #: subprojects/extensions-app/js/extensionManager.js:238 #, javascript-format msgid "" "The installed version of this extension is incompatible with the current " "version of GNOME (%s). The extension has been disabled." msgstr "" "Den installerede version af denne udvidelse er ikke kompatibel med denne " "version af GNOME (%s). Udvidelsen er blevet deaktiveret." #: subprojects/extensions-app/js/extensionManager.js:242 msgid "" "An error has occurred in this extension. This could cause issues elsewhere " "in the system. It is recommended to turn the extension off until the error " "is resolved." msgstr "" "Der opstod en fejl i denne udvidelse. Dette kan forårsage problemer " "andetsteds i systemet. Det anbefales at slå udvidelsen fra, indtil fejlen " "rettes." #. translators: Details for an extension error #: subprojects/extensions-app/js/extensionManager.js:248 msgid "Error details:" msgstr "Fejlbeskrivelse:" #: subprojects/extensions-app/js/extensionRow.js:82 #, javascript-format msgid "Version %s" msgstr "Version %s" #: subprojects/extensions-app/js/extensionsWindow.js:113 #, javascript-format msgid "Remove “%s”?" msgstr "Fjern “%s”?" #: subprojects/extensions-app/js/extensionsWindow.js:114 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "Fjerner du udvidelsen, skal du hente den igen for at aktivere den" #: subprojects/extensions-app/js/extensionsWindow.js:117 msgid "_Cancel" msgstr "_Annullér" #: subprojects/extensions-app/js/extensionsWindow.js:118 msgid "_Remove" msgstr "_Fjern" #: subprojects/extensions-app/js/extensionsWindow.js:158 msgid "translator-credits" msgstr "" "Kenneth Nielsen\n" "Kris Thomsen\n" "Ask Hjorth Larsen\n" "Alan Mortensen\n" "scootergrisen\n" "\n" "Dansk-gruppen \n" "Mere info: http://www.dansk-gruppen.dk" #: subprojects/extensions-app/js/extensionsWindow.js:203 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "%d udvidelse vil blive opdateret ved næste login." msgstr[1] "%d udvidelser vil blive opdateret ved næste login." #: subprojects/extensions-app/data/ui/extension-row.ui:22 msgid "Error Details" msgstr "Fejldetaljer" #: subprojects/extensions-app/data/ui/extension-row.ui:62 msgid "Updates Details" msgstr "Detaljer om opdateringer" #: subprojects/extensions-app/data/ui/extension-row.ui:72 msgid "" "A new version of this extension is ready and will be loaded on next login." msgstr "" "En ny version af denne udvidelse er klar til brug og vil blive indlæst ved " "næste login." #: subprojects/extensions-app/data/ui/extension-row.ui:104 msgid "Extension Details" msgstr "Detaljer om udvidelse" #: subprojects/extensions-app/data/ui/extension-row.ui:192 msgid "_Website" msgstr "_Websted" #: subprojects/extensions-app/data/ui/extension-row.ui:219 msgid "_Settings" msgstr "_Indstillinger" #: subprojects/extensions-app/data/ui/extension-row.ui:246 msgid "_Remove…" msgstr "_Fjern …" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Keyboard Shortcuts" msgstr "Tastaturgenveje" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "Om udvidelser" #: subprojects/extensions-app/data/ui/extensions-window.ui:64 msgid "Main Menu" msgstr "Hovedmenu" #: subprojects/extensions-app/data/ui/extensions-window.ui:106 msgid "Search extensions" msgstr "Søg udvidelser" #: subprojects/extensions-app/data/ui/extensions-window.ui:134 msgid "_Extensions" msgstr "_Udvidelser" #: subprojects/extensions-app/data/ui/extensions-window.ui:139 msgid "More Information" msgstr "Yderligere oplysninger" #: subprojects/extensions-app/data/ui/extensions-window.ui:151 msgid "" "Extensions can cause performance and stability issues. It is recommended to " "disable all extensions if you experience problems with your system." msgstr "" "Udvidelser kan skabe ydelses- og stabilitetsproblemer. Det anbefales at " "deaktivere alle udvidelser, hvis du får problemer med dit system." #: subprojects/extensions-app/data/ui/extensions-window.ui:178 msgid "User Extensions" msgstr "Brugerudvidelser" #: subprojects/extensions-app/data/ui/extensions-window.ui:198 msgid "System Extensions" msgstr "Systemudvidelser" #: subprojects/extensions-app/data/ui/extensions-window.ui:233 msgid "Search Results" msgstr "Resultater af søgning" #: subprojects/extensions-app/data/ui/extensions-window.ui:252 msgid "No Results Found" msgstr "Ingen resultater fundet" #: subprojects/extensions-app/data/ui/extensions-window.ui:253 msgid "Try a different search" msgstr "Prøv en anden søgning" #: subprojects/extensions-app/data/ui/extensions-window.ui:264 msgid "No Installed Extensions" msgstr "Ingen installerede udvidelser" #: subprojects/extensions-app/data/ui/extensions-window.ui:265 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" "Gå til extensions.gnome.org for " "at finde og tilføje udvidelser." #: subprojects/extensions-app/data/ui/extensions-window.ui:276 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" "Vi beklager meget, men det var ikke muligt at hente listen over installerede " "udvidelser. Sørg for at du er logget ind i GNOME og prøv igen." #: subprojects/extensions-app/data/ui/help-overlay.ui:9 msgctxt "shortcut window" msgid "General" msgstr "Generelle" #: subprojects/extensions-app/data/ui/help-overlay.ui:12 msgctxt "shortcut window" msgid "Open Menu" msgstr "Åbn menu" #: subprojects/extensions-app/data/ui/help-overlay.ui:18 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Slå søgning til/fra" #: subprojects/extensions-app/data/ui/help-overlay.ui:24 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Vis genveje" #: subprojects/extensions-app/data/ui/help-overlay.ui:30 msgctxt "shortcut window" msgid "Quit" msgstr "Afslut" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:284 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "Den nye udvidelse blev oprettet i %s.\n" #: subprojects/extensions-tool/src/command-create.c:376 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" "Navnet skal være en meget kort (helst beskrivende) streng.\n" "Eksempler: %s" #: subprojects/extensions-tool/src/command-create.c:382 #: subprojects/extensions-tool/src/main.c:243 msgid "Name" msgstr "Navn" #: subprojects/extensions-tool/src/command-create.c:396 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" "Beskrivelsen er én sætning, som forklarer, hvad din udvidelse gør.\n" "Eksempler: %s" #: subprojects/extensions-tool/src/command-create.c:402 #: subprojects/extensions-tool/src/main.c:246 msgid "Description" msgstr "Beskrivelse" #: subprojects/extensions-tool/src/command-create.c:416 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" "Uuid er en globalt unik identifikator til din udvidelse.\n" "Det skal udformes som en e-mailadresse (klikforfokus@rikkeræv.eksempel.org)\n" #: subprojects/extensions-tool/src/command-create.c:443 msgid "Choose one of the available templates:\n" msgstr "Vælg en af de tilgængelige skabeloner:\n" #: subprojects/extensions-tool/src/command-create.c:457 msgid "Template" msgstr "Skabelon" #: subprojects/extensions-tool/src/command-create.c:515 msgid "The unique identifier of the new extension" msgstr "Den nye udvidelses unikke identifikator" #: subprojects/extensions-tool/src/command-create.c:518 msgid "NAME" msgstr "NAVN" #: subprojects/extensions-tool/src/command-create.c:519 msgid "The user-visible name of the new extension" msgstr "Navnet på den nye udvidelse, som brugeren kommer til at se" #: subprojects/extensions-tool/src/command-create.c:521 msgid "DESCRIPTION" msgstr "BESKRIVELSE" #: subprojects/extensions-tool/src/command-create.c:523 msgid "A short description of what the extension does" msgstr "En kort beskrivelse af hvad udvidelsen gør" #: subprojects/extensions-tool/src/command-create.c:525 #: subprojects/extensions-tool/src/command-pack.c:455 msgid "DOMAIN" msgstr "DOMÆNE" #: subprojects/extensions-tool/src/command-create.c:527 msgid "The gettext domain used by the extension" msgstr "Gettext-domænet som bruges af udvidelsen" #: subprojects/extensions-tool/src/command-create.c:529 #: subprojects/extensions-tool/src/command-pack.c:448 msgid "SCHEMA" msgstr "SKEMA" #: subprojects/extensions-tool/src/command-create.c:531 msgid "The GSettings schema used by the extension" msgstr "GSettings-skemaet som bruges af udvidelsen" #: subprojects/extensions-tool/src/command-create.c:534 msgid "TEMPLATE" msgstr "SKABELON" #: subprojects/extensions-tool/src/command-create.c:535 msgid "The template to use for the new extension" msgstr "Skabelonen der skal bruges til den nye udvidelse" #: subprojects/extensions-tool/src/command-create.c:538 msgid "Include prefs.js template" msgstr "Medtag prefs.js-skabelon" #: subprojects/extensions-tool/src/command-create.c:544 msgid "Enter extension information interactively" msgstr "Indtast information om udvidelse interaktivt" #: subprojects/extensions-tool/src/command-create.c:552 msgid "Create a new extension" msgstr "Opret en ny udvidelse" #: subprojects/extensions-tool/src/command-create.c:570 #: subprojects/extensions-tool/src/command-list.c:190 msgid "Unknown arguments" msgstr "Ukendte argumenter" #: subprojects/extensions-tool/src/command-create.c:595 msgid "UUID, name and description are required" msgstr "Uuid, navn og beskrivelse er påkrævet" #: subprojects/extensions-tool/src/command-disable.c:62 #: subprojects/extensions-tool/src/command-enable.c:62 #, c-format msgid "Extension “%s” does not exist\n" msgstr "Udvidelsen “%s” findes ikke\n" #: subprojects/extensions-tool/src/command-disable.c:98 msgid "Disable an extension" msgstr "Deaktivér en udvidelse" #: subprojects/extensions-tool/src/command-disable.c:116 #: subprojects/extensions-tool/src/command-enable.c:116 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "Der er ikke angivet noget uuid" #: subprojects/extensions-tool/src/command-disable.c:121 #: subprojects/extensions-tool/src/command-enable.c:121 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "Der er angivet mere end ét uuid" #: subprojects/extensions-tool/src/command-enable.c:98 msgid "Enable an extension" msgstr "Aktivér en udvidelse" #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:66 #: subprojects/extensions-tool/src/main.c:150 msgid "Failed to connect to GNOME Shell\n" msgstr "Kunne ikke forbinde til GNOME Shell\n" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:159 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "Udvidelsen “%s” findes ikke\n" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "Vis information om udvidelser" #: subprojects/extensions-tool/src/command-install.c:190 msgid "Overwrite an existing extension" msgstr "Overskriv en eksisterende udvidelse" #: subprojects/extensions-tool/src/command-install.c:192 msgid "EXTENSION_BUNDLE" msgstr "UDVIDELSESBUNDT" #: subprojects/extensions-tool/src/command-install.c:201 msgid "Install an extension bundle" msgstr "Installér et udvidelsesbundt" #: subprojects/extensions-tool/src/command-install.c:219 msgid "No extension bundle specified" msgstr "Der er ikke angivet noget udvidelsesbundt" #: subprojects/extensions-tool/src/command-install.c:225 msgid "More than one extension bundle specified" msgstr "Der er angivet mere end ét udvidelsesbundt" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show user-installed extensions" msgstr "Vis brugerinstallerede udvidelser" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show system-installed extensions" msgstr "Vis systeminstallerede udvidelser" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Show enabled extensions" msgstr "Vis aktiverede udvidelser" #: subprojects/extensions-tool/src/command-list.c:149 msgid "Show disabled extensions" msgstr "Vis deaktiverede udvidelser" #: subprojects/extensions-tool/src/command-list.c:152 msgid "Show extensions in active state" msgstr "Vis udvidelser i aktiv tilstand" #: subprojects/extensions-tool/src/command-list.c:155 msgid "Show extensions in inactive state" msgstr "Vis udvidelser i inaktiv tilstand" #: subprojects/extensions-tool/src/command-list.c:158 msgid "Show extensions with preferences" msgstr "Vis udvidelser med indstillinger" #: subprojects/extensions-tool/src/command-list.c:161 msgid "Show extensions with updates" msgstr "Vis udvidelser med opdateringer" #: subprojects/extensions-tool/src/command-list.c:164 msgid "Print extension details" msgstr "Vis detaljer om udvidelse" #: subprojects/extensions-tool/src/command-list.c:172 msgid "List installed extensions" msgstr "Vis installerede udvidelser" #: subprojects/extensions-tool/src/command-pack.c:444 msgid "FILE" msgstr "FIL" #: subprojects/extensions-tool/src/command-pack.c:445 msgid "Additional source to include in the bundle" msgstr "Yderligere kilde som skal medtages i bundet" #: subprojects/extensions-tool/src/command-pack.c:449 msgid "A GSettings schema that should be included" msgstr "Et GSettings-skema som skal medtages" #: subprojects/extensions-tool/src/command-pack.c:451 #: subprojects/extensions-tool/src/command-pack.c:462 msgid "DIRECTORY" msgstr "MAPPE" #: subprojects/extensions-tool/src/command-pack.c:453 msgid "The directory where translations are found" msgstr "Mappen hvor oversættelser findes" #: subprojects/extensions-tool/src/command-pack.c:457 msgid "The gettext domain to use for translations" msgstr "Gettext-domænet som skal bruges til oversættelser" #: subprojects/extensions-tool/src/command-pack.c:460 msgid "Overwrite an existing pack" msgstr "Overskriv en eksisterende pakke" #: subprojects/extensions-tool/src/command-pack.c:464 msgid "The directory where the pack should be created" msgstr "Mappen hvor pakken skal oprettes" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "SOURCE_DIRECTORY" msgstr "KILDEMAPPE" #: subprojects/extensions-tool/src/command-pack.c:475 msgid "Create an extension bundle" msgstr "Opret et udvidelsesbundt" #: subprojects/extensions-tool/src/command-pack.c:495 msgid "More than one source directory specified" msgstr "Der er angivet mere end én kildemappe" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "Udvidelsen “%s” har ingen indstillinger\n" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "Kunne ikke åbne indstillinger for udvidelsen “%s”: %s\n" #: subprojects/extensions-tool/src/command-prefs.c:87 msgid "Opens extension preferences" msgstr "Åbner udvidelsesindstillinger" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "Nulstil en udvidelse" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "Kan ikke afinstallere systemudvidelser\n" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "Kunne ikke afinstallere “%s”\n" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "Afinstallér en udvidelse" #: subprojects/extensions-tool/src/main.c:76 msgid "Do not print error messages" msgstr "Udskriv ikke fejlmeddelelser" #: subprojects/extensions-tool/src/main.c:249 msgid "Path" msgstr "Sti" #: subprojects/extensions-tool/src/main.c:252 msgid "URL" msgstr "URL" #: subprojects/extensions-tool/src/main.c:255 msgid "Original author" msgstr "Oprindelig forfatter" #: subprojects/extensions-tool/src/main.c:261 #: subprojects/extensions-tool/src/main.c:263 #: subprojects/extensions-tool/src/main.c:265 msgid "Version" msgstr "Version" #: subprojects/extensions-tool/src/main.c:268 msgid "Enabled" msgstr "Aktiveret" #: subprojects/extensions-tool/src/main.c:268 msgid "Yes" msgstr "Ja" #: subprojects/extensions-tool/src/main.c:268 msgid "No" msgstr "Nej" #: subprojects/extensions-tool/src/main.c:271 msgid "State" msgstr "Tilstand" #: subprojects/extensions-tool/src/main.c:309 msgid "“version” takes no arguments" msgstr "“version” modtager ikke argumenter" #: subprojects/extensions-tool/src/main.c:311 #: subprojects/extensions-tool/src/main.c:331 msgid "Usage:" msgstr "Brug:" #: subprojects/extensions-tool/src/main.c:314 msgid "Print version information and exit." msgstr "Udskriv versionsinformation og afslut." #: subprojects/extensions-tool/src/main.c:329 #: subprojects/extensions-tool/src/main.c:332 msgid "COMMAND" msgstr "KOMMANDO" #: subprojects/extensions-tool/src/main.c:332 msgid "[ARGS…]" msgstr "[ARGUMENTER …]" #: subprojects/extensions-tool/src/main.c:334 msgid "Commands:" msgstr "Kommandoer:" #: subprojects/extensions-tool/src/main.c:335 msgid "Print help" msgstr "Udskriv hjælp" #: subprojects/extensions-tool/src/main.c:337 msgid "Enable extension" msgstr "Aktivér udvidelse" #: subprojects/extensions-tool/src/main.c:338 msgid "Disable extension" msgstr "Deaktivér udvidelse" #: subprojects/extensions-tool/src/main.c:339 msgid "Reset extension" msgstr "Nulstil udvidelse" #: subprojects/extensions-tool/src/main.c:340 msgid "Uninstall extension" msgstr "Afinstallér udvidelse" #: subprojects/extensions-tool/src/main.c:341 msgid "List extensions" msgstr "Vis udvidelser" #: subprojects/extensions-tool/src/main.c:342 #: subprojects/extensions-tool/src/main.c:343 msgid "Show extension info" msgstr "Vis information om udvidelse" #: subprojects/extensions-tool/src/main.c:344 msgid "Open extension preferences" msgstr "Åbn udvidelsesindstillinger" #: subprojects/extensions-tool/src/main.c:345 msgid "Create extension" msgstr "Opret udvidelse" #: subprojects/extensions-tool/src/main.c:346 msgid "Package extension" msgstr "Pakkeudvidelse" #: subprojects/extensions-tool/src/main.c:347 msgid "Install extension bundle" msgstr "Installér udvidelsesbundt" #: subprojects/extensions-tool/src/main.c:349 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "Brug “%s” for at få detaljeret hjælp.\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "Simpel" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "En tom udvidelse" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "Indikator" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "Tilføj et ikon til toppanelet" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:4 msgid "Quick Settings Item" msgstr "Hurtige Indstillinger-element" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:5 msgid "Add an item to quick settings" msgstr "Tilføj et element til hurtige Indstillinger" #. translators: #. * The device has been disabled #: subprojects/gvc/gvc-mixer-control.c:1872 msgid "Disabled" msgstr "Deaktiveret" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1879 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u output" msgstr[1] "%u outputs" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1889 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u input" msgstr[1] "%u inputs" #: subprojects/gvc/gvc-mixer-control.c:2872 msgid "System Sounds" msgstr "Systemlyde" #~ msgid "Stop conflicting session dialog closed" #~ msgstr "Dialogen stands spærrende session lukket" #, javascript-format #~ msgid "Try to login again to start a session for user %s." #~ msgstr "Prøv at logge ind igen for at starte en session for brugeren %s." #~ msgid "Move Titlebar Onscreen" #~ msgstr "Flyt titellinjen på skærmen" #~ msgid "Network Manager" #~ msgstr "Netværkshåndtering" #, javascript-format #~ msgid "%s is now known as %s" #~ msgstr "%s kalder sig nu %s" #~ msgid "Disabling" #~ msgstr "Deaktiverer" #~ msgid "Enabling" #~ msgstr "Aktiverer" #, javascript-format #~ msgid "%d %%" #~ msgstr "%d %%" #~ msgid "Thunderbolt" #~ msgstr "Thunderbolt" #~ msgid "No Thanks" #~ msgstr "Nej tak" #~ msgid "No Matches" #~ msgstr "Ingen fundet" #~ msgid "The extension had an error" #~ msgstr "Udvidelsen havde en fejl" #~ msgid "The extension can be updated" #~ msgstr "Udvidelsen kan opdateres" #~ msgid "Help" #~ msgstr "Hjælp" #~ msgid "Manually Installed" #~ msgstr "Manuelt installeret" #~ msgid "Built-In" #~ msgstr "Indbygget" #~ msgid "Extension Updates Ready" #~ msgstr "Opdateringer til udvidelser er klar" #~ msgid "Screenshot / Screencast" #~ msgstr "Skærmbillede/-optagelse" #~ msgid "Power Profiles" #~ msgstr "Strømprofiler" #~ msgid "" #~ "Whether the default Bluetooth adapter had set up devices associated to it" #~ msgstr "" #~ "Om standard Bluetooth-adapteren er indstillet til at have enheder " #~ "tilknyttet" #~ msgid "" #~ "The shell will only show a Bluetooth menu item if a Bluetooth adapter is " #~ "powered, or if there were devices set up associated with the default " #~ "adapter. This will be reset if the default adapter is ever seen not to " #~ "have devices associated to it." #~ msgstr "" #~ "Shell'en vil kun vise menupunktet Bluetooth, hvis en Bluetooth-adapter er " #~ "tændt, eller hvis der er enheder tilknyttet standard adapteren. Dette vil " #~ "kun blive nulstillet hvis standard adapteren på et tidspunkt, ikke " #~ "længere har enheder tilknyttet." #~ msgid "Attach modal dialog to the parent window" #~ msgstr "Hæft modal dialog til overliggende vindue" #~ msgid "" #~ "This key overrides the key in org.gnome.mutter when running GNOME Shell." #~ msgstr "" #~ "Denne nøgle overstyrer nøglen i org.gnome.mutter, når du kører GNOME " #~ "Shell." #~ msgid "Enable edge tiling when dropping windows on screen edges" #~ msgstr "Aktivér kant-fliselægning, når vinduer placeres ved skærmkanter" #~ msgid "Workspaces are managed dynamically" #~ msgstr "Arbejdsområder er håndteret dynamisk" #~ msgid "Workspaces only on primary monitor" #~ msgstr "Arbejdsområder kun på den primære skærm" #~ msgid "Delay focus changes in mouse mode until the pointer stops moving" #~ msgstr "" #~ "Forsink fokusændringer i musetilstand indtil pegeren holder op med at " #~ "bevæge sig" #~ msgid "Region & Language Settings" #~ msgstr "Indstillinger for område og sprog" #~ msgid "Applications" #~ msgstr "Programmer" #, javascript-format #~ msgid "Unable to start %s" #~ msgstr "Kunne ikke starte %s" #, javascript-format #~ msgid "Couldn’t find the %s application" #~ msgstr "Kunne ikke finde programmet %s" #~ msgid "Evolution Calendar" #~ msgstr "Evolution kalender" #~ msgid "Log Out" #~ msgstr "Log ud" #~ msgid "Bluetooth On" #~ msgstr "Bluetooth til" #~ msgid "Bluetooth Off" #~ msgstr "Bluetooth fra" #~ msgid "Location In Use" #~ msgstr "Placering i brug" #~ msgid "Location Disabled" #~ msgstr "Placering deaktiveret" #~ msgid "%s Off" #~ msgstr "%s er slukket" #~ msgid "%s Connected" #~ msgstr "%s er forbundet" #~ msgid "%s Unmanaged" #~ msgstr "%s er ikke håndteret" #~ msgid "%s Connecting" #~ msgstr "%s forbinder" #~ msgid "%s Requires Authentication" #~ msgstr "%s kræver godkendelse" #~ msgid "Firmware Missing For %s" #~ msgstr "Firmware mangler til %s" #~ msgid "%s Unavailable" #~ msgstr "%s utilgængelig" #~ msgid "%s Connection Failed" #~ msgstr "Forbindelse til %s mislykkedes" #~ msgid "%s Hardware Disabled" #~ msgstr "Hardwaren %s er deaktiveret" #~ msgid "%s Disabled" #~ msgstr "%s er deaktiveret" #~ msgid "Connect to Internet" #~ msgstr "Forbind til internet" #~ msgid "Airplane Mode is On" #~ msgstr "Flytilstand er slået til" #~ msgid "Wi-Fi is disabled when airplane mode is on." #~ msgstr "Trådløs er deaktiveret når flytilstand er slået til." #~ msgid "Turn Off Airplane Mode" #~ msgstr "Slå flytilstand fra" #~ msgid "Wi-Fi is Off" #~ msgstr "Trådløs er slået fra" #~ msgid "Wi-Fi needs to be turned on in order to connect to a network." #~ msgstr "Trådløs skal tændes for at kunne forbinde til et netværk." #~ msgid "Turn On Wi-Fi" #~ msgstr "Slå trådløs til" #~ msgid "Select a network" #~ msgstr "Vælg et netværk" #~ msgid "Use hardware switch to turn off" #~ msgstr "Brug hardwareknap til at slukke" #~ msgid "Select Network" #~ msgstr "Vælg netværk" #~ msgid "Wi-Fi Settings" #~ msgstr "Indstillinger for trådløs" #~ msgid "%s Not Connected" #~ msgstr "%s er ikke forbundet" #~ msgid "connecting…" #~ msgstr "forbinder …" #~ msgid "authentication required" #~ msgstr "godkendelse er påkrævet" #~ msgid "connection failed" #~ msgstr "forbindelse mislykkedes" #~ msgid "VPN Off" #~ msgstr "VPN slukket" #~ msgid "Network Settings" #~ msgstr "Netværksindstillinger" #~ msgid "%s Wi-Fi Connection" #~ msgid_plural "%s Wi-Fi Connections" #~ msgstr[0] "%s trådløs forbindelse" #~ msgstr[1] "%s trådløse forbindelser" #~ msgid "Night Light Disabled" #~ msgstr "Nattelys deaktiveret" #~ msgid "Resume" #~ msgstr "Genoptag" #~ msgid "Disable Until Tomorrow" #~ msgstr "Deaktivér indtil i morgen" #~ msgid "Fully Charged" #~ msgstr "Fuldt opladet" #~ msgid "Not Charging" #~ msgstr "Oplader ikke" #~ msgid "Estimating…" #~ msgstr "Udregner …" #~ msgid "%d∶%02d Remaining (%d %%)" #~ msgstr "%d∶%02d tilbage (%d %%)" #~ msgid "%d∶%02d Until Full (%d %%)" #~ msgstr "%d∶%02d indtil fuld (%d %%)" #~ msgid "Screen is Being Shared" #~ msgstr "Skærmen er delt" #~ msgid "Turn off" #~ msgstr "Sluk" #~ msgid "Airplane Mode On" #~ msgstr "Flytilstand er slået til" #~ msgid "Lock" #~ msgstr "Lås" #~ msgid "Power Off / Log Out" #~ msgstr "Sluk/log ud" #~ msgid "Remove from Favorites" #~ msgstr "Fjern fra favoritter" #~ msgid "Add to Favorites" #~ msgstr "Føj til favoritter" #~ msgid "Author" #~ msgstr "Forfatter" #~ msgid "Warning" #~ msgstr "Advarsel" #~ msgid "" #~ "Extensions can cause system issues, including performance problems. If " #~ "you encounter problems with your system, it is recommended to disable all " #~ "extensions." #~ msgstr "" #~ "Udvidelser kan medføre systemproblemer heriblandt ydelsesproblemer. " #~ "Støder du på problemer med dit system, anbefaler vi at deaktivere alle " #~ "udvidelser." #~ msgid "Failed to connect to GNOME Shell" #~ msgstr "Kunne ikke forbinde til GNOME Shell" #~ msgid "App Picker View" #~ msgstr "Programvælger-visning" #~ msgid "Index of the currently selected view in the application picker." #~ msgstr "Indeks for den valgte visning i programvælgeren." #~ msgid "Enable introspection API" #~ msgstr "Aktivér introspektions-API" # shell er andre steder ikke oversat #~ msgid "" #~ "Enables a D-Bus API that allows to introspect the application state of " #~ "the shell." #~ msgstr "" #~ "Aktiverer et D-Bus-API, som tillader introspektion af shell'ens " #~ "programtilstand." #~ msgid "Minimize" #~ msgstr "Minimér" #~ msgid "Unmaximize" #~ msgstr "Afmaksimér" #~ msgid "Copy Error" #~ msgstr "Kopieringsfejl" #~ msgid "Frequently used applications will appear here" #~ msgstr "Ofte brugte programmer vil blive vist her" #~ msgid "Frequent" #~ msgstr "Ofte" #~ msgid "All" #~ msgstr "Alle" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d" #~ msgstr "%A, %-d. %B" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d, %Y" #~ msgstr "%A, %-d. %B %Y" #~ msgid "On" #~ msgstr "Tændt" #~ msgid "Username…" #~ msgstr "Brugernavn …" #~ msgid "Password: " #~ msgstr "Adgangskode: " #~ msgid "Enter Password…" #~ msgstr "Indtast adgangskode …" #~ msgid "Browse in Software" #~ msgstr "Gennemse i Software" #~ msgid "Next" #~ msgstr "Næste" #~ msgctxt "button" #~ msgid "Sign In" #~ msgstr "Log ind" #~ msgctxt "search-result" #~ msgid "Lock Orientation" #~ msgstr "Lås orientering" #~ msgid "Rename" #~ msgstr "Omdøb" #~ msgid "Password:" #~ msgstr "Adgangskode:" #~ msgid "Type again:" #~ msgstr "Indtast igen:" #~ msgid "Authentication required by wireless network" #~ msgstr "Godkendelse er påkrævet af trådløst netværk" #~ msgid "Mobile broadband network password" #~ msgstr "Adgangskode til mobilt bredbåndsnetværk" #~ msgid "%A, %B %d" #~ msgstr "%A, %-d. %B" #~ msgid "%d new message" #~ msgid_plural "%d new messages" #~ msgstr[0] "%d ny besked" #~ msgstr[1] "%d nye beskeder" #~ msgid "Account Settings" #~ msgstr "Indstillinger for konti" #~ msgid "Orientation Lock" #~ msgstr "Orienteringslås" #~ msgid "" #~ "Keybinding that pauses and resumes all running tweens, for debugging " #~ "purposes" #~ msgstr "" #~ "Genvejstast, som pauser og genstarter alle kørende animationer, til " #~ "fejlsøgningsformål" #~ msgid "Which keyboard to use" #~ msgstr "Hvilket tastatur bruges" #~ msgid "The type of keyboard to use." #~ msgstr "Tastaturtypen som bruges." #~ msgid "network-workgroup" #~ msgstr "network-workgroup" #~ msgid "toggle-switch-us" #~ msgstr "toggle-switch-intl" #~ msgid "There was an error loading the preferences dialog for %s:" #~ msgstr "Der opstod in fejl ved indlæsning af indstillingsdialogen for %s:" #~ msgid "%s all day." #~ msgstr "%s hele dagen." #~ msgid "%s, then %s later." #~ msgstr "%s, derefter %s." #~ msgid "%s, then %s, followed by %s later." #~ msgstr "%s, derefter %s, efterfulgt af %s." #~ msgid "Feels like %s." #~ msgstr "Føles som %s." #~| msgid "Log Out" #~ msgctxt "search-result" #~ msgid "Log out" #~ msgstr "Log ud" #~| msgid "Switch User" #~ msgctxt "search-result" #~ msgid "Switch user" #~ msgstr "Skift bruger" #~ msgid "Hide tray" #~ msgstr "Skjul statusfelt" #~ msgid "Status Icons" #~ msgstr "Statusikoner" #~ msgid "Events" #~ msgstr "Begivenheder" #~ msgid "Media" #~ msgstr "Medier" #~ msgid "%d x %d" #~ msgstr "%d x %d" #~ msgid "Web Authentication Redirect" #~ msgstr "Omdirigering af webgodkendelse" #~ msgid "Show the week date in the calendar" #~ msgstr "Vis ugenummer i kalenderen" #~ msgid "If true, display the ISO week date in the calendar." #~ msgstr "Hvis sand vises ISO-ugenummeret i kalenderen." #~ msgid "Use as Internet connection" #~ msgstr "Brug som internetforbindelse" #~ msgid "%s is requesting access to your location." #~ msgstr "%s spørger efter adgang til din placering." #~ msgid "GNOME Shell (wayland compositor)" #~ msgstr "GNOME Shell (wayland-sammensætter)" #~ msgid "%d Connected Device" #~ msgid_plural "%d Connected Devices" #~ msgstr[0] "%d forbundet enhed" #~ msgstr[1] "%d forbundne enheder" #~ msgid "UPS" #~ msgstr "UPS" #~ msgid "Battery" #~ msgstr "Batteri" #~ msgid "Show the message tray" #~ msgstr "Vis besked-statusfeltet" #~ msgid "Captive Portal" #~ msgstr "Fangeportal" #~ msgctxt "event list time" #~ msgid "%H∶%M" #~ msgstr "%H∶%M" #~ msgctxt "event list time" #~ msgid "%l∶%M %p" #~ msgstr "%l∶%M %p" #~ msgctxt "list sunday" #~ msgid "Su" #~ msgstr "S" #~ msgctxt "list monday" #~ msgid "M" #~ msgstr "M" #~ msgctxt "list tuesday" #~ msgid "T" #~ msgstr "Ti" #~ msgctxt "list wednesday" #~ msgid "W" #~ msgstr "O" #~ msgctxt "list thursday" #~ msgid "Th" #~ msgstr "To" #~ msgctxt "list friday" #~ msgid "F" #~ msgstr "F" #~ msgctxt "list saturday" #~ msgid "S" #~ msgstr "L" #~ msgid "Nothing Scheduled" #~ msgstr "Intet planlagt" #~ msgid "This week" #~ msgstr "Denne uge" #~ msgid "Next week" #~ msgstr "Næste uge" #~ msgid "Removable Devices" #~ msgstr "Flytbare enheder" #~ msgid "Eject" #~ msgstr "Skub ud" #~ msgid "Invitation" #~ msgstr "Invitation" #~ msgid "Call" #~ msgstr "Opkald" #~ msgid "File Transfer" #~ msgstr "Filoverførsel" #~ msgid "Chat" #~ msgstr "Chat" #~ msgid "Invitation to %s" #~ msgstr "Invitation til %s" #~ msgid "%s is inviting you to join %s" #~ msgstr "%s inviterer dig til at deltage i %s" #~ msgid "Decline" #~ msgstr "Afvis" #~ msgid "Accept" #~ msgstr "Acceptér" #~ msgid "Video call from %s" #~ msgstr "Videoopkald fra %s" #~ msgid "Call from %s" #~ msgstr "Opkald fra %s" #~ msgid "Answer" #~ msgstr "Svar" #~ msgid "%s is sending you %s" #~ msgstr "%s sender dig %s" #~ msgid "%s would like permission to see when you are online" #~ msgstr "%s vil gerne have tilladelse til at se, når du er online" #~ msgid "Authentication failed" #~ msgstr "Godkendelse mislykkedes" #~ msgid "Encryption error" #~ msgstr "Krypteringsfejl" #~ msgid "Certificate not provided" #~ msgstr "Certifikat ikke angivet" #~ msgid "Certificate untrusted" #~ msgstr "Utroværdigt certifikat" #~ msgid "Certificate expired" #~ msgstr "Certifikat udløbet" #~ msgid "Certificate not activated" #~ msgstr "Certifikat ikke aktiveret" #~ msgid "Certificate hostname mismatch" #~ msgstr "Certifikat-værtsnavn stemmer ikke" #~ msgid "Certificate fingerprint mismatch" #~ msgstr "Certifikat-fingeraftryk stemmer ikke" #~ msgid "Certificate self-signed" #~ msgstr "Certifikat selv-underskrevet" #~ msgid "Status is set to offline" #~ msgstr "Status er angivet til offline" #~ msgid "Certificate is invalid" #~ msgstr "Ugyldigt certifikat" #~ msgid "Connection has been refused" #~ msgstr "Forbindelse er blevet afvist" #~ msgid "Connection can't be established" #~ msgstr "Forbindelse kan ikke oprettes" #~ msgid "Connection has been lost" #~ msgstr "Forbindelse er mistet" #~ msgid "This account is already connected to the server" #~ msgstr "Denne konto er allerede forbundet til serveren" #~ msgid "" #~ "Connection has been replaced by a new connection using the same resource" #~ msgstr "" #~ "Forbindelsen er blevet erstattet af en ny forbindelse, som bruger samme " #~ "ressource" #~ msgid "The account already exists on the server" #~ msgstr "Kontoen findes allerede på serveren" #~ msgid "Server is currently too busy to handle the connection" #~ msgstr "Serveren er i øjeblikket for travl til at behandle forbindelsen" #~ msgid "Certificate has been revoked" #~ msgstr "Certifikat er blevet påberåbt" #~ msgid "" #~ "Certificate uses an insecure cipher algorithm or is cryptographically weak" #~ msgstr "" #~ "Certifikat bruger en usikker cipher-algoritme eller er kryptografisk svag" #~ msgid "" #~ "The length of the server certificate, or the depth of the server " #~ "certificate chain, exceed the limits imposed by the cryptography library" #~ msgstr "" #~ "Længden på servercertifikatet, eller dybden af servercertifikat-kæden, " #~ "overskrider grænsen, som er fastsat af det kryptografiske-programbibliotek" #~ msgid "Internal error" #~ msgstr "Intern fejl" #~ msgid "View account" #~ msgstr "Vis konto" #~ msgid "Date & Time Settings" #~ msgstr "Indstillinger for dato og tid" #~ msgid "Open" #~ msgstr "Åbn" #~ msgid "Clear Messages" #~ msgstr "Ryd beskeder" #~ msgid "Notification Settings" #~ msgstr "Indstillinger for påmindelser" #~ msgid "No Messages" #~ msgstr "Ingen beskeder" #~ msgid "Message Tray" #~ msgstr "Besked-statusfelt" #~ msgid "The maximum accuracy level of location." #~ msgstr "Det maksimale nøjagtighedsniveau for placering." #~ msgid "" #~ "Configures the maximum level of location accuracy applications are " #~ "allowed to see. Valid options are 'off' (disable location tracking), " #~ "'country', 'city', 'neighborhood', 'street', and 'exact' (typically " #~ "requires GPS receiver). Please keep in mind that this only controls what " #~ "GeoClue will allow applications to see and they can find user's location " #~ "on their own using network resources (albeit with street-level accuracy " #~ "at best)." #~ msgstr "" #~ "Konfigurerer det maksimale nøjagtighedsniveau for placering, som det er " #~ "tilladt programmer at se. Mulighederne er “off” (deaktivér sporing), " #~ "“country”, “city”, “neighborhood”, “street” og “exact” (kræver typisk GPS-" #~ "modtager). Bemærk at dette kun styrer hvad GeoClue vil tillade " #~ "programmerne at se - disse kan selv finde brugerens placering ved brug af " #~ "netværksressourcer (dog højst ned til gadepræcision)." #~ msgid "Arrangement of buttons on the titlebar" #~ msgstr "Placering af knapper i titel-linjen" #~ msgid "" #~ "This key overrides the key in org.gnome.desktop.wm.preferences when " #~ "running GNOME Shell." #~ msgstr "" #~ "Denne nøgle overstyrer nøglen i org.gnome.desktop.wm.preferences, når du " #~ "kører GNOME Shell." #~ msgid "Select an extension to configure using the combobox above." #~ msgstr "" #~ "Vælg en udvidelse at konfigurere ved hjælp af kombinationsboksen ovenfor." #~ msgctxt "event list time" #~ msgid "%H\\u2236%M" #~ msgstr "%H\\u2236%M" #~ msgctxt "event list time" #~ msgid "%l\\u2236%M\\u2009%p" #~ msgstr "%l\\u2236%M\\u2009%p" #~ msgid "unavailable" #~ msgstr "utilgængelig" # Dette her er kode for at skrive måned før år jvf. kommentar for samme streng i gtk+: # # Translate to calendar:YM if you want years to be displayed # before months; otherwise translate to calendar:MY. # Do *not* translate it to anything else, if it # it isn't calendar:YM or calendar:MY it will not work. # # Note that the ordering described here is logical order, which is # further influenced by BIDI ordering. Thus, if you have a default # text direction of RTL and specify "calendar:YM", then the year # will appear to the right of the month. #~ msgid "calendar:MY" #~ msgstr "calendar:MY" #~ msgid "List of categories that should be displayed as folders" #~ msgstr "Liste over kategorier, som skal vises som mapper" #~ msgid "" #~ "Each category name in this list will be represented as folder in the " #~ "application view, rather than being displayed inline in the main view." #~ msgstr "" #~ "Hvert kategorinavn i denne liste vil blive repræsenteret som mappe i " #~ "programoversigten, i stedet for at blive vist inden i hovedoversigten." #~ msgid "%A, %H:%M" #~ msgstr "%A, %H:%M" #~ msgid "%B %d, %H:%M" #~ msgstr "%d. %B, %H:%M" #~ msgid "%B %d %Y, %H:%M " #~ msgstr "%d. %B %Y, %H:%M " #~ msgid "Authorization request from %s" #~ msgstr "Godkendelsesforespørgsel fra %s" #~ msgid "Device %s wants to pair with this computer" #~ msgstr "Enheden %s ønsker at blive parret med denne computer" #~ msgid "Device %s wants access to the service '%s'" #~ msgstr "Enheden %s ønsker adgang til tjenesten “%s”" #~ msgid "Grant this time only" #~ msgstr "Giv kun lov denne gang" #~ msgid "Reject" #~ msgstr "Afvis" #~ msgid "Pairing confirmation for %s" #~ msgstr "Bekræftelse af parring for %s" #~ msgid "" #~ "Please confirm whether the Passkey '%06d' matches the one on the device." #~ msgstr "" #~ "Bekræft om adgangsnøglen “%06d” stemmer overens med den, som vises på " #~ "enheden." #~ msgid "Does not match" #~ msgstr "Stemmer ikke" #~ msgid "Pairing request for %s" #~ msgstr "Forespørgsel om parring for %s" #~ msgid "Please enter the PIN mentioned on the device." #~ msgstr "Indtast PIN-koden nævnt på enheden." #~ msgid "OK" #~ msgstr "O.k." #~ msgid "" #~ "Sorry, no wisdom for you today:\n" #~ "%s" #~ msgstr "" #~ "Beklager, ingen visdom til dig i dag:\n" #~ "%s" #~ msgid "%s the Oracle says" #~ msgstr "Oraklet %s siger" #~ msgid "Settings Menu" #~ msgstr "Menu for indstillinger" #~ msgid "Whether to collect stats about applications usage" #~ msgstr "Om der skal indsamles statistik om programmers brug" #~ msgid "" #~ "The shell normally monitors active applications in order to present the " #~ "most used ones (e.g. in launchers). While this data will be kept private, " #~ "you may want to disable this for privacy reasons. Please note that doing " #~ "so won't remove already saved data." #~ msgstr "" #~ "Shell'ens overvåger normalt aktive programmer for at kunne vise de mest " #~ "brugte (f.eks. i genveje). Selvom disse data er holdt private, vil du " #~ "muligvis ønske at deaktivere dem af private grunde. Bemærk at selvom du " #~ "gør dette, vil det ikke fjerne de allerede gemte data." #~ msgid "" #~ "Internally used to store the last IM presence explicitly set by the user. " #~ "The value here is from the TpConnectionPresenceType enumeration." #~ msgstr "" #~ "Brugt internt til at gemme den seneste IM-tilstedeværelse angivet direkte " #~ "af brugeren. Værdien er fra tællingen TpConnectionPresenceType." #~ msgid "" #~ "Internally used to store the last session presence status for the user. " #~ "The value here is from the GsmPresenceStatus enumeration." #~ msgstr "" #~ "Brugt internt til at gemme den seneste tilstand for " #~ "sessionstilstedeværelse for brugeren. Værdien her er fra tællingen " #~ "GsmPresenceStatus." #~ msgid "Keybinding to toggle the screen recorder" #~ msgstr "Genvejstast til at slå skærmoptager til eller fra" #~ msgid "Keybinding to start/stop the builtin screen recorder." #~ msgstr "Genvejstast til at starte/stoppe den indbyggede skærmoptager." #~ msgid "Framerate used for recording screencasts." #~ msgstr "Billedfrekvens brugt til skærmoptagelser." #~ msgid "" #~ "The framerate of the resulting screencast recordered by GNOME Shell's " #~ "screencast recorder in frames-per-second." #~ msgstr "" #~ "Billedfrekvensen på den endelige skærmoptagelse, optaget af GNOME-Shells " #~ "skærmoptager i billeder-per-sekund." #~ msgid "The gstreamer pipeline used to encode the screencast" #~ msgstr "Datakanalen for Gstreamer bruges til indkodning af skærmoptagelsen" #~ msgid "" #~ "Sets the GStreamer pipeline used to encode recordings. It follows the " #~ "syntax used for gst-launch. The pipeline should have an unconnected sink " #~ "pad where the recorded video is recorded. It will normally have a " #~ "unconnected source pad; output from that pad will be written into the " #~ "output file. However the pipeline can also take care of its own output - " #~ "this might be used to send the output to an icecast server via shout2send " #~ "or similar. When unset or set to an empty value, the default pipeline " #~ "will be used. This is currently 'vp8enc min_quantizer=13 max_quantizer=13 " #~ "cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux' and records to " #~ "WEBM using the VP8 codec. %T is used as a placeholder for a guess at the " #~ "optimal thread count on the system." #~ msgstr "" #~ "Angiver datakanalen for GStreamer som bruges til at indkode optagelser. " #~ "Dette følger syntaksen brugt af gst-launch. Datakanalen bør have et " #~ "afkoblet sink-område hvor den optagede video gemmes. Den vil sædvanligvis " #~ "have et afkoblet kildeområde; outputtet fra det område vil blive skrevet " #~ "til outputfilen. Dog kan datakanalen også tage sig af sit eget output - " #~ "dette kan bruges til at sende outputtet til en icecast-server via " #~ "shout2send eller lignende. Når der ændres til en tom værdi, vil " #~ "standarddatakanalen blive brugt. Dette er i øjeblikket “vp8enc " #~ "min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 " #~ "threads=%T ! queue ! webmmux” og optager i WEBM-formatet med VP8-" #~ "codec'et. %T bruges som pladsholder for et gæt om det optimale trådantal " #~ "på systemet." #~ msgid "File extension used for storing the screencast" #~ msgstr "Filendelse til at gemme skærmoptagelser" #~ msgid "" #~ "The filename for recorded screencasts will be a unique filename based on " #~ "the current date, and use this extension. It should be changed when " #~ "recording to a different container format." #~ msgstr "" #~ "Filnavnet på skærmoptagelser vil være et unikt filnavn baseret på dags " #~ "dato og bruge denne endelse. Det skal ændres når der optages i et andet " #~ "containerformat." #~ msgid "Session…" #~ msgstr "Session …" #~ msgid "Power" #~ msgstr "Strøm" #~ msgid "Click Log Out to quit these applications and log out of the system." #~ msgstr "" #~ "Tryk Log ud for at afslutte disse programmer og logge ud af systemet." #~ msgid "Logging out of the system." #~ msgstr "Logger ud af systemet." #~ msgid "Click Power Off to quit these applications and power off the system." #~ msgstr "Tryk Sluk for at afslutte disse programmer og lukke systemet ned." #~ msgid "Powering off the system." #~ msgstr "Lukker systemet ned." #~ msgid "Click Restart to quit these applications and restart the system." #~ msgstr "" #~ "Tryk Genstart for at afslutte disse programmer og genstarte systemet." #~ msgid "Restarting the system." #~ msgstr "Genstarter systemet." #~ msgid "Universal Access Settings" #~ msgstr "Indstillinger for universel adgang" #~ msgid "Visibility" #~ msgstr "Synlighed" #~ msgid "Set Up a New Device…" #~ msgstr "Indstil en ny enhed …" #~ msgid "Send Files…" #~ msgstr "Send filer …" #~ msgid "Mouse Settings" #~ msgstr "Indstillinger for mus" #~ msgid "Volume, network, battery" #~ msgstr "Lydniveau, netværk, batteri" #~ msgid "disabled" #~ msgstr "deaktiveret" #~ msgid "cable unplugged" #~ msgstr "kabel er ikke sat i" #~ msgid "More…" #~ msgstr "Flere …" #~ msgid "Wired" #~ msgstr "Trådet" #~ msgid "Auto Ethernet" #~ msgstr "Auto ethernet" #~ msgid "Auto broadband" #~ msgstr "Auto bredbånd" #~ msgid "Auto dial-up" #~ msgstr "Auto opringning" #~ msgid "Auto %s" #~ msgstr "Auto %s" #~ msgid "Auto bluetooth" #~ msgstr "Auto bluetooth" #~ msgid "Auto wireless" #~ msgstr "Auto trådløs" #~ msgid "Wi-Fi" #~ msgstr "Wi-Fi" #~ msgid "%d hour remaining" #~ msgid_plural "%d hours remaining" #~ msgstr[0] "%d time tilbage" #~ msgstr[1] "%d timer tilbage" #~ msgid "%d %s %d %s remaining" #~ msgstr "%d %s %d %s tilbage" #~ msgid "hour" #~ msgid_plural "hours" #~ msgstr[0] "time" #~ msgstr[1] "timer" #~ msgid "minute" #~ msgid_plural "minutes" #~ msgstr[0] "minut" #~ msgstr[1] "minutter" #~ msgid "%d minute remaining" #~ msgid_plural "%d minutes remaining" #~ msgstr[0] "%d minut tilbage" #~ msgstr[1] "%d minutter tilbage" #~ msgid "AC Adapter" #~ msgstr "AC-adapter" #~ msgid "Laptop Battery" #~ msgstr "Batteri" #~ msgid "Monitor" #~ msgstr "Skærm" #~ msgid "Mouse" #~ msgstr "Mus" #~ msgid "PDA" #~ msgstr "PDA" #~ msgid "Cell Phone" #~ msgstr "Mobiltelefon" #~ msgid "Media Player" #~ msgstr "Medieafspiller" #~ msgid "Tablet" #~ msgstr "Tavle-pc" #~ msgid "Computer" #~ msgstr "Computer" #~ msgctxt "device" #~ msgid "Unknown" #~ msgstr "Ukendt" #~ msgid "Busy" #~ msgstr "Optaget" #~ msgid "Invisible" #~ msgstr "Usynlig" #~ msgid "Away" #~ msgstr "Ikke tilstede" #~ msgid "Idle" #~ msgstr "Tomgang" #~ msgid "Your chat status will be set to busy" #~ msgstr "Din chat-status vil blive angivet som optaget" #~ msgid "" #~ "Notifications are now disabled, including chat messages. Your online " #~ "status has been adjusted to let others know that you might not see their " #~ "messages." #~ msgstr "" #~ "Meddelelser er nu deaktiveret, inklusiv chat-beskeder. Din online-status " #~ "er blevet justeret, for at fortælle andre, at du muligvis ikke ser deres " #~ "beskeder." #~ msgid "Shutting down might cause them to lose unsaved work." #~ msgstr "Nedlukning kan resultere i tab af arbejde, som ikke er gemt." #~ msgctxt "title" #~ msgid "Sign In" #~ msgstr "Log ind" #~ msgid "APPLICATIONS" #~ msgstr "PROGRAMMER" #~ msgid "SETTINGS" #~ msgstr "INDSTILLINGER" #~ msgctxt "event list time" #~ msgid "%H:%M" #~ msgstr "%H:%M" #~ msgctxt "event list time" #~ msgid "%l:%M %p" #~ msgstr "%l:%M %p" #~ msgid "Subscription request" #~ msgstr "Godkendelsesforespørgsel" #~ msgid "Sent at %X on %A" #~ msgstr "Sendt %A kl. %H:%M" #~ msgid "Sent on %A, %B %d, %Y" #~ msgstr "Sendt %A den %e. %B, %Y" #~ msgid "Connection to %s failed" #~ msgstr "Forbindelse til %s mislykkedes" #~ msgid "Reconnect" #~ msgstr "Forbind igen" #~ msgid "tray" #~ msgstr "statusfelt" #~ msgid "Browse Files..." #~ msgstr "Gennemse filer …" #~ msgid "Error browsing device" #~ msgstr "Fejl under læsning af enhed" #~ msgid "The requested device cannot be browsed, error is '%s'" #~ msgstr "Den forespurgte enhed kan ikke læses, fejlen er “%s”" #~ msgid "More..." #~ msgstr "Mere …" #~ msgid "Wireless" #~ msgstr "Trådløs" #~ msgid "VPN Connections" #~ msgstr "VPN-forbindelser" #~ msgid "System Settings" #~ msgstr "Systemindstillinger" #~ msgid "Your favorite Easter Egg" #~ msgstr "Dit yndlingspåskeæg" #~ msgid "United Kingdom" #~ msgstr "Storbritannien" #~ msgid "Default" #~ msgstr "Standard" #~ msgid "Failed to unmount '%s'" #~ msgstr "Kunne ikke afmontere “%s”" #~ msgid "Retry" #~ msgstr "Forsøg igen" #~ msgid "PLACES & DEVICES" #~ msgstr "STEDER & ENHEDER" #~ msgid "%1$s: %2$s" #~ msgstr "%1$s: %2$s" #~ msgid "disabled OpenSearch providers" #~ msgstr "deaktiverede OpenSearch-udbydere" #~ msgid "Show time with seconds" #~ msgstr "Vis tid med sekunder" #~ msgid "If true, display seconds in time." #~ msgstr "Hvis sand vises sekunder i klokkeslæt." #~ msgid "Show date in clock" #~ msgstr "Vis dato i uret" #~ msgid "If true, display date in the clock, in addition to time." #~ msgstr "Hvis sand vises datoen i uret, som tillæg til tiden." #~ msgid "CONTACTS" #~ msgstr "KONTAKTER" #~ msgid "%a %b %e, %R:%S" #~ msgstr "%a %e. %b, %R:%S" #~ msgid "%a %b %e, %R" #~ msgstr "%a %e. %b, %R" #~ msgid "%a %R:%S" #~ msgstr "%a %R:%S" #~ msgid "%a %R" #~ msgstr "%a %R" #~ msgid "%a %b %e, %l:%M:%S %p" #~ msgstr "%a %e. %b, %l:%M:%S %p" #~ msgid "%a %l:%M:%S %p" #~ msgstr "%a %l:%M:%S %p" #~ msgid "%s is online." #~ msgstr "%s er online." #~ msgid "%s is offline." #~ msgstr "%s er offline." #~ msgid "%s is away." #~ msgstr "%s er ikke til stede." #~ msgid "%s is busy." #~ msgstr "%s er optaget." #~ msgid "Hidden" #~ msgstr "Skjult" #~ msgid "Power Off..." #~ msgstr "Sluk …" #~ msgid "Online Accounts" #~ msgstr "Online konti" #~ msgid "Log Out..." #~ msgstr "Log ud …" #~ msgid "RECENT ITEMS" #~ msgstr "SENESTE ELEMENTER" #~ msgid "" #~ "GNOME Shell extensions have a uuid property; this key lists extensions " #~ "which should be loaded. disabled-extensions overrides this setting for " #~ "extensions that appear in both lists." #~ msgstr "" #~ "GNOME-skallens udvidelser har en uuid-indstilling; denne nøgle oplister " #~ "udvidelser som ikke skal indlæses. disabled-extensions overskriver denne " #~ "indstilling for udvidelser, som vises i begge lister." #~ msgid "Show password" #~ msgstr "Vis adgangskode" #~ msgid "%s has finished starting" #~ msgstr "%s er færdig med at starte" #~ msgid "If true, display onscreen keyboard." #~ msgstr "Hvis sand vises skærmtastatur." #~ msgid "Connectivity lost" #~ msgstr "Forbindelse mistet" #~ msgid "You're no longer connected to the network" #~ msgstr "Du er ikke længere forbundet til netværket" #~ msgid "Uuids of extensions to disable" #~ msgstr "Uuid'er for udvidelser der deaktiveres" #~ msgid "You're now connected to mobile broadband connection '%s'" #~ msgstr "Du er nu forbundet til den mobile bredbåndsforbindelse “%s”" #~ msgid "You're now connected to wireless network '%s'" #~ msgstr "Du er nu forbundet til det trådløse netværk “%s”" #~ msgid "You're now connected to VPN network '%s'" #~ msgstr "Du er nu forbundet til VPN-netværket “%s”" #~ msgid "Localization Settings" #~ msgstr "Indstillinger for sprog" #~ msgid "Less than a minute ago" #~ msgstr "Mindre end et minut siden" #~ msgid "Shut Down" #~ msgstr "Luk ned" #~ msgid "Click Shut Down to quit these applications and shut down the system." #~ msgstr "" #~ "Tryk Luk ned for at afslutte disse programmer og lukke systemet ned." #~ msgid "The system will shut down automatically in %d seconds." #~ msgstr "System lukker automatisk ned om %d sekunder." #~ msgid "Shutting down the system." #~ msgstr "Lukker systemet ned." #~ msgid "Confirm" #~ msgstr "Bekræft" #~ msgid "PREFERENCES" #~ msgstr "INDSTILLINGER" #~ msgid "Drag here to add favorites" #~ msgstr "Træk hertil for at tilføje til favoritter" #~ msgid "Find..." #~ msgstr "Find …" #~ msgid "Sidebar" #~ msgstr "Sidebjælke" #~ msgid "System Preferences..." #~ msgstr "Systemindstillinger …" #~ msgid "Recent Documents" #~ msgstr "Seneste dokumenter" #~ msgid "(see all)" #~ msgstr "(se alle)" #~ msgid "PLACES" #~ msgstr "STEDER" #~ msgid "SEARCH RESULTS" #~ msgstr "SØGERESULTATER" #~ msgid "Can't lock screen: %s" #~ msgstr "Kan ikke låse skærm: %s" #~ msgid "Can't temporarily set screensaver to blank screen: %s" #~ msgstr "Kan ikke midlertidigt sætte pauseskærm til blank skærm: %s" #~ msgid "Can't logout: %s" #~ msgstr "Kan ikke logge ud: %s" #~ msgid "Browse" #~ msgstr "Gennemse" #~ msgid "Find apps or documents" #~ msgstr "Find programmer eller dokumenter" #~ msgid "The user manager object this user is controlled by." #~ msgstr "Brugerhåndteringsobjektet, denne bruger er styret af." 07070100000227000081A40000000000000000000000016712993F0001C80A000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/de.po# German gnome-shell translation. # Copyright (C) 2009 Free Software Foundation, Inc. # This file is distributed under the same license as the gnome-shell package. # # workspace - Arbeitsfläche # # Hendrik Brandt , 2009. # Mario Klug , 2010. # Jakob Kramer , 2010. # Hendrik Richter , 2009-2011. # Paul Seyfert , 2010-2011. # Tobias Endrigkeit , 2012-2013. # Benjamin Steinwender , 2013-2014. # Franco Della-Monica , 2016. # Mario Blättermann , 2009-2013, 2015-2018. # Bernd Homuth , 2014-2015, 2016, 2019. # Wolfgang Stöggl , 2012, 2014, 2017-2018, 2020. # Tim Sabsch , 2018-2020, 2022-2023. # Philipp Kiemle , 2020-2021, 2023-2024. # Jürgen Benvenuti , 2022-2024. # Christian Kirbach , 2009-2024. # msgid "" msgstr "" "Project-Id-Version: gnome-shell master\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues/\n" "POT-Creation-Date: 2024-08-06 15:18+0000\n" "PO-Revision-Date: 2024-08-22 22:50+0200\n" "Last-Translator: Jürgen Benvenuti \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: Poedit 3.4.4\n" "X-DamnedLies-Scope: partial\n" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "Starter" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate pinned app 1" msgstr "Angeheftete Anwendung 1 aktivieren" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate pinned app 2" msgstr "Angeheftete Anwendung 2 aktivieren" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate pinned app 3" msgstr "Angeheftete Anwendung 3 aktivieren" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate pinned app 4" msgstr "Angeheftete Anwendung 4 aktivieren" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate pinned app 5" msgstr "Angeheftete Anwendung 5 aktivieren" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate pinned app 6" msgstr "Angeheftete Anwendung 6 aktivieren" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate pinned app 7" msgstr "Angeheftete Anwendung 7 aktivieren" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate pinned app 8" msgstr "Angeheftete Anwendung 8 aktivieren" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate pinned app 9" msgstr "Angeheftete Anwendung 9 aktivieren" #: data/50-gnome-shell-launchers.xml:46 msgid "Open new window of pinned app 1" msgstr "Ein neues Fenster der angehefteten Anwendung 1 öffnen" #: data/50-gnome-shell-launchers.xml:50 msgid "Open new window of pinned app 2" msgstr "Ein neues Fenster der angehefteten Anwendung 2 öffnen" #: data/50-gnome-shell-launchers.xml:54 msgid "Open new window of pinned app 3" msgstr "Ein neues Fenster der angehefteten Anwendung 3 öffnen" #: data/50-gnome-shell-launchers.xml:58 msgid "Open new window of pinned app 4" msgstr "Ein neues Fenster der angehefteten Anwendung 4 öffnen" #: data/50-gnome-shell-launchers.xml:62 msgid "Open new window of pinned app 5" msgstr "Ein neues Fenster der angehefteten Anwendung 5 öffnen" #: data/50-gnome-shell-launchers.xml:66 msgid "Open new window of pinned app 6" msgstr "Ein neues Fenster der angehefteten Anwendung 6 öffnen" #: data/50-gnome-shell-launchers.xml:70 msgid "Open new window of pinned app 7" msgstr "Ein neues Fenster der angehefteten Anwendung 7 öffnen" #: data/50-gnome-shell-launchers.xml:74 msgid "Open new window of pinned app 8" msgstr "Ein neues Fenster der angehefteten Anwendung 8 öffnen" #: data/50-gnome-shell-launchers.xml:78 msgid "Open new window of pinned app 9" msgstr "Ein neues Fenster der angehefteten Anwendung 9 öffnen" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2274 msgid "Screenshots" msgstr "Bildschirmfotos" #: data/50-gnome-shell-screenshots.xml:9 #: data/org.gnome.shell.gschema.xml.in:287 msgid "Take a screenshot interactively" msgstr "Ein Bildschirmfoto interaktiv aufnehmen" #: data/50-gnome-shell-screenshots.xml:12 #: data/org.gnome.shell.gschema.xml.in:299 msgid "Take a screenshot" msgstr "Ein Bildschirmfoto aufnehmen" #: data/50-gnome-shell-screenshots.xml:15 #: data/org.gnome.shell.gschema.xml.in:295 msgid "Take a screenshot of a window" msgstr "Ein Bildschirmfoto eines Fensters aufnehmen" #: data/50-gnome-shell-screenshots.xml:18 #: data/org.gnome.shell.gschema.xml.in:291 msgid "Record a screencast interactively" msgstr "Eine Bildschirmaufzeichnung interaktiv aufnehmen" #: data/50-gnome-shell-system.xml:6 js/ui/messageTray.js:1298 msgid "System" msgstr "System" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "Die Benachrichtigungsliste anzeigen" #: data/50-gnome-shell-system.xml:12 msgid "Open the quick settings menu" msgstr "Das Schnelleinstellungenmenü öffnen" #: data/50-gnome-shell-system.xml:15 msgid "Focus the active notification" msgstr "Auf aktive Benachrichtigungen ausrichten" #: data/50-gnome-shell-system.xml:18 msgid "Show the overview" msgstr "Die Übersicht anzeigen" #: data/50-gnome-shell-system.xml:21 msgid "Show all apps" msgstr "Alle Anwendungen anzeigen" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "GNOME-Shell" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "Fenster verwalten und Anwendungen starten" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "Interne Werkzeuge für Entwickler und Tester mit Alt+F2 einschalten" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "Erlaubt Zugriff auf interne Fehlerdiagnose- und Überwachungswerkzeuge." #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "UUIDs der zu aktivierenden Erweiterungen" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "Die Erweiterungen der GNOME-Shell besitzen eine UUID-Eigenschaft. Dieser " "Schlüssel listet Erweiterungen auf, welche geladen werden sollen. Jede zu " "ladende Erweiterung muss in dieser Liste erscheinen. Sie können diese Liste " "auch mit den D-Bus-Methoden EnableExtension und DisableExtension in org." "gnome.Shell bearbeiten." #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "UUIDs der sofort zu deaktivierenden Erweiterungen" # Das ist gemeint mit "Sie", oder? #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" "Die Erweiterungen der GNOME-Shell besitzen eine UUID-Eigenschaft. Dieser " "Schlüssel listet Erweiterungen auf, welche deaktiviert werden sollten, " "selbst wenn sie als Teil des aktuellen Modus geladen sind. Sie können diese " "Liste auch mit den D-Bus-Methoden EnableExtension und DisableExtension in " "org.gnome.Shell bearbeiten. Dieser Schlüssel hat Vorrang vor der Einstellung " "»enabled-extensions«." #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "Shell-Erweiterungen deaktivieren" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" "Alle Shell-Erweiterungen, die der Benutzer aktiviert hat, deaktivieren. " "Beeinflusst nicht die Einstellung »enabled-extension«." #: data/org.gnome.shell.gschema.xml.in:45 msgid "Allow extension installation" msgstr "Das Installieren von Erweiterungen erlauben" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "Allow users to install extensions in their home folder. If disabled, the " "InstallRemoteExtension D-Bus method will fail, and extensions are only " "loaded from system directories on startup. It does not affect extensions " "that are already loaded, so a change only takes full effect on the next " "login." msgstr "" "Benutzern erlauben, Erweiterungen in ihrem persönlichen Ordner zu " "installieren. Wenn deaktiviert, wird die »InstallRemoteExtension«-D-Bus-" "Methode fehlschlagen und es werden beim Start ausschließlich Erweiterungen " "von Systemverzeichnissen geladen. Das betrifft keine bereits geladenen " "Erweiterungen, eine Änderung wirkt sich erst nach einer erneuten Anmeldung " "vollständig aus." #: data/org.gnome.shell.gschema.xml.in:56 msgid "Disables the validation of extension version compatibility" msgstr "" "Legt fest, ob die Überprüfung der Versionskompatibilität der Erweiterung " "deaktiviert werden soll" #: data/org.gnome.shell.gschema.xml.in:57 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "GNOME-Shell lädt nur Erweiterungen, die die aktuelle Version unterstützen. " "Durch Einschalten dieser Option wird die interne Kompatibilitätsprüfung " "deaktiviert und alle Erweiterungen werden versucht zu laden, unabhängig von " "der Version, die die Erweiterung offiziell unterstützt." #: data/org.gnome.shell.gschema.xml.in:65 msgid "List of desktop file IDs for favorite applications" msgstr "Liste von Desktop-Dateikennungen und deren bevorzugte Anwendungen" #: data/org.gnome.shell.gschema.xml.in:66 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" "Programme, welche auf diese Bezeichner zutreffen, werden im Favoriten-" "Bereich angezeigt." #: data/org.gnome.shell.gschema.xml.in:73 msgid "History for command (Alt-F2) dialog" msgstr "Verlauf des Befehlsdialogs (Alt+F2)" #. Translators: looking glass is a debugger and inspector tool, see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/docs/looking-glass.md #: data/org.gnome.shell.gschema.xml.in:78 msgid "History for the looking glass dialog" msgstr "Chronik des Dialogs »looking glass«" #: data/org.gnome.shell.gschema.xml.in:82 msgid "Always show the “Log Out” action in the system menu" msgstr "Immer die Aktion »Abmelden« im Systemmenü anzeigen" #: data/org.gnome.shell.gschema.xml.in:83 msgid "" "This key overrides the automatic hiding of the “Log out” action in the " "system menu for logged-in situations where there is a single, local, non-" "system user and only a single available session type (e.g. GNOME on Wayland)." msgstr "" "Dieser Schlüssel überschreibt das automatische Verbergen des Menüeintrags " "»Abmelden« im Systemmenü, wenn es im angemeldeten Zustand nur einen " "einzigen, lokalen Nicht-System-Nutzer und nur einen einzigen Sitzungstyp " "gibt (z. B. GNOME unter Wayland)." #: data/org.gnome.shell.gschema.xml.in:92 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "Legt fest, ob Passwörter für eingehängte, verschlüsselte oder entfernte " "Dateisysteme gespeichert werden" #: data/org.gnome.shell.gschema.xml.in:93 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "Die Shell wird ein Passwort anfragen, sobald ein verschlüsseltes Gerät oder " "ein entferntes Dateisystem eingehängt wird. Falls das Passwort für die " "Zukunft gespeichert werden kann, wird ein Ankreuzfeld »An Passwort erinnern« " "angeboten. Dieser Schlüssel stellt den Standardstatus für dieses Ankreuzfeld " "ein." #: data/org.gnome.shell.gschema.xml.in:102 msgid "The last selected non-default power profile" msgstr "Das zuletzt ausgewählte Nicht-Standard-Energieprofil" #: data/org.gnome.shell.gschema.xml.in:103 msgid "" "Some systems support more than two power profiles. In order to still support " "toggling between two profiles, this key records the last selected non-" "default profile." msgstr "" "Einige Systeme unterstützen mehr als zwei Energieprofile. Damit das " "Umschalten zwischen zwei Profilen weiterhin möglich ist, speichert dieser " "Schlüssel das zuletzt ausgewählte Nicht-Standardprofil." #: data/org.gnome.shell.gschema.xml.in:111 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "" "Die letzte Version, für die der »Willkommen bei GNOME«-Dialog angezeigt wurde" #: data/org.gnome.shell.gschema.xml.in:112 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can " "be used to effectively disable the dialog." msgstr "" "Dieser Schlüssel bestimmt, für welche Version der »Willkommen bei GNOME«-" "Dialog zuletzt angezeigt wurde. Eine leere Zeichenkette repräsentiert die " "älteste mögliche Version, eine riesige Zahl repräsentiert Versionen, die " "noch nicht existieren. Diese riesige Zahl kann dazu verwendet werden, diesen " "Dialog praktisch zu deaktivieren." #: data/org.gnome.shell.gschema.xml.in:145 msgid "Layout of the app picker" msgstr "Ausrichtung der Anwendungsauswahl" #: data/org.gnome.shell.gschema.xml.in:146 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" msgstr "" "Ausrichtung der Anwendungsauswahl. Jeder Eintrag in der Liste ist eine " "Seite. Seiten sind in der Reihenfolge sortiert, in der sie in GNOME-Shell " "erscheinen. Jede Seite enthält eine Zuordnung »application id« → »data«. " "Aktuell werden die folgenden Werte innerhalb von »data« gespeichert: • " "»position«: Die Position des Anwendungssymbols auf der Seite" #: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:172 msgid "Keybinding to shift between overview states" msgstr "Tastenkombination zum Wechseln zwischen Übersichts-Modi" #: data/org.gnome.shell.gschema.xml.in:166 msgid "Keybinding to shift between session, window picker and app grid" msgstr "" "Tastenkombination zum Wechseln zwischen Sitzung, Fensterwähler und " "Anwendungsraster" #: data/org.gnome.shell.gschema.xml.in:173 msgid "Keybinding to shift between app grid, window picker and session" msgstr "" "Tastenkombination zum Wechseln zwischen Anwendungsraster, Fensterwähler und " "Sitzung" #: data/org.gnome.shell.gschema.xml.in:179 msgid "Keybinding to open the “Show Applications” view" msgstr "Tastenkombination zum Öffnen der »Anwendungen anzeigen«-Ansicht" #: data/org.gnome.shell.gschema.xml.in:180 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "" "Tastenkombination zum Öffnen der »Anwendungen anzeigen«-Ansicht der " "Aktivitätenübersicht." #: data/org.gnome.shell.gschema.xml.in:187 msgid "Keybinding to open the overview" msgstr "Tastenkombination zum Öffnen der Übersicht" #: data/org.gnome.shell.gschema.xml.in:188 msgid "Keybinding to open the Activities Overview." msgstr "Tastenkombination zum Öffnen der »Aktivitäten«-Übersicht." #: data/org.gnome.shell.gschema.xml.in:194 msgid "Keybinding to toggle the visibility of the notification list" msgstr "" "Tastenkombination zum Umschalten der Sichtbarkeit der Benachrichtigungsliste" #: data/org.gnome.shell.gschema.xml.in:195 msgid "Keybinding to toggle the visibility of the notification list." msgstr "" "Tastenkombination zum Umschalten der Sichtbarkeit der Benachrichtigungsliste." #: data/org.gnome.shell.gschema.xml.in:201 msgid "Keybinding to toggle the quick settings menu" msgstr "Tastenkombination zum Ein-/Ausblenden des Schnelleinstellungenmenüs" #: data/org.gnome.shell.gschema.xml.in:202 msgid "Keybinding to toggle the quick settings menu." msgstr "Tastenkombination zum Ein-/Ausblenden des Schnelleinstellungenmenüs." #: data/org.gnome.shell.gschema.xml.in:208 msgid "Keybinding to focus the active notification" msgstr "Tastenkombination zur Ausrichtung auf die aktiven Benachrichtigungen" #: data/org.gnome.shell.gschema.xml.in:209 msgid "Keybinding to focus the active notification." msgstr "Tastenkombination zur Ausrichtung auf die aktiven Benachrichtigungen." #: data/org.gnome.shell.gschema.xml.in:215 msgid "Switch to application 1" msgstr "Zu Anwendung 1 wechseln" #: data/org.gnome.shell.gschema.xml.in:219 msgid "Switch to application 2" msgstr "Zu Anwendung 2 wechseln" #: data/org.gnome.shell.gschema.xml.in:223 msgid "Switch to application 3" msgstr "Zu Anwendung 3 wechseln" #: data/org.gnome.shell.gschema.xml.in:227 msgid "Switch to application 4" msgstr "Zu Anwendung 4 wechseln" #: data/org.gnome.shell.gschema.xml.in:231 msgid "Switch to application 5" msgstr "Zu Anwendung 5 wechseln" #: data/org.gnome.shell.gschema.xml.in:235 msgid "Switch to application 6" msgstr "Zu Anwendung 6 wechseln" #: data/org.gnome.shell.gschema.xml.in:239 msgid "Switch to application 7" msgstr "Zu Anwendung 7 wechseln" #: data/org.gnome.shell.gschema.xml.in:243 msgid "Switch to application 8" msgstr "Zu Anwendung 8 wechseln" #: data/org.gnome.shell.gschema.xml.in:247 msgid "Switch to application 9" msgstr "Zu Anwendung 9 wechseln" #: data/org.gnome.shell.gschema.xml.in:251 msgid "Open a new instance of application 1" msgstr "Eine neue Instanz von Anwendung 1 öffnen" #: data/org.gnome.shell.gschema.xml.in:255 msgid "Open a new instance of application 2" msgstr "Eine neue Instanz von Anwendung 2 öffnen" #: data/org.gnome.shell.gschema.xml.in:259 msgid "Open a new instance of application 3" msgstr "Eine neue Instanz von Anwendung 3 öffnen" #: data/org.gnome.shell.gschema.xml.in:263 msgid "Open a new instance of application 4" msgstr "Eine neue Instanz von Anwendung 4 öffnen" #: data/org.gnome.shell.gschema.xml.in:267 msgid "Open a new instance of application 5" msgstr "Eine neue Instanz von Anwendung 5 öffnen" #: data/org.gnome.shell.gschema.xml.in:271 msgid "Open a new instance of application 6" msgstr "Eine neue Instanz von Anwendung 6 öffnen" #: data/org.gnome.shell.gschema.xml.in:275 msgid "Open a new instance of application 7" msgstr "Eine neue Instanz von Anwendung 7 öffnen" #: data/org.gnome.shell.gschema.xml.in:279 msgid "Open a new instance of application 8" msgstr "Eine neue Instanz von Anwendung 8 öffnen" #: data/org.gnome.shell.gschema.xml.in:283 msgid "Open a new instance of application 9" msgstr "Eine neue Instanz von Anwendung 9 öffnen" #: data/org.gnome.shell.gschema.xml.in:308 #: data/org.gnome.shell.gschema.xml.in:335 msgid "Limit switcher to current workspace." msgstr "Fensterwechsler auf aktuelle Arbeitsfläche einschränken." #: data/org.gnome.shell.gschema.xml.in:309 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "Legt fest, ob nur Anwendungen im Fensterwechsler aufgeführt werden, die " "Fenster auf der aktuellen Arbeitsfläche haben. Andernfalls sind alle " "Anwendungen enthalten." #: data/org.gnome.shell.gschema.xml.in:326 msgid "The application icon mode." msgstr "Der Modus der Anwendungssymbole." #: data/org.gnome.shell.gschema.xml.in:327 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-only” " "(shows only the application icon) or “both”." msgstr "" "Legt fest, wie Fenster im Fensterwechsler dargestellt werden. Mögliche Werte " "sind »thumbnail-only« (Vorschaubilder der Fenster werden angezeigt), »app-" "icon-only« (Nur das Anwendungssymbol wird angezeigt) oder »both« (beides)." #: data/org.gnome.shell.gschema.xml.in:336 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "Legt fest, ob Fenster der aktuellen Arbeitsfläche im Fensterwechsler " "aufgeführt werden. Andernfalls sind alle Fenster enthalten." #: data/org.gnome.shell.gschema.xml.in:346 msgid "Locations" msgstr "Orte" #: data/org.gnome.shell.gschema.xml.in:347 msgid "The locations to show in world clocks" msgstr "Die von den Weltuhren anzuzeigenden Orte" #: data/org.gnome.shell.gschema.xml.in:357 msgid "Automatic location" msgstr "Automatischer Ort" #: data/org.gnome.shell.gschema.xml.in:358 msgid "Whether to fetch the current location or not" msgstr "Legt fest, ob der aktuelle Ort automatisch bestimmt werden soll" #: data/org.gnome.shell.gschema.xml.in:365 msgid "Location" msgstr "Ort" #: data/org.gnome.shell.gschema.xml.in:366 msgid "The location for which to show a forecast" msgstr "Der Ort, für den ein Wetterbericht angezeigt werden soll" #. Keep in sync with subprojects/extensions-app #: data/org.gnome.Shell.Extensions.desktop.in.in:5 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/data/ui/extensions-window.ui:57 msgid "Extensions" msgstr "Erweiterungen" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "Netzwerkanmeldung" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:275 msgid "Something’s gone wrong" msgstr "Etwas ist schiefgelaufen" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" "Es tut uns leid, aber es gibt ein Problem: Die Einstellungen für diese " "Erweiterung können nicht angezeigt werden. Wir empfehlen, dass Sie diesen " "Fehler den Autoren der Erweiterung melden." #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "Technische Details" # Warum nicht »Startseite«? - jb # »Homepage« hat sich m.M.n. im Kontext von Webseiten durchgesetzt. - ts #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "Homepage" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 msgid "Visit extension homepage" msgstr "Internetseite der Erweiterung besuchen" #: js/gdm/authPrompt.js:151 js/gdm/loginDialog.js:465 #: js/ui/audioDeviceSelection.js:66 js/ui/components/networkAgent.js:113 #: js/ui/components/polkitAgent.js:144 js/ui/endSessionDialog.js:437 #: js/ui/extensionDownloader.js:276 js/ui/shellMountOperation.js:382 #: js/ui/shellMountOperation.js:392 msgid "Cancel" msgstr "Abbrechen" #: js/gdm/authPrompt.js:317 js/ui/components/networkAgent.js:213 #: js/ui/components/networkAgent.js:233 js/ui/components/networkAgent.js:265 #: js/ui/components/networkAgent.js:298 js/ui/components/networkAgent.js:337 #: js/ui/components/networkAgent.js:350 js/ui/components/polkitAgent.js:286 #: js/ui/shellMountOperation.js:332 msgid "Password" msgstr "Passwort" #: js/gdm/loginDialog.js:326 msgid "Choose Session" msgstr "Sitzung wählen" #. Translators: is running for #: js/gdm/loginDialog.js:423 #, javascript-format msgid "" "Remote login is not possible because a remote session is already running for " "%s. To login remotely, you must log out from the remote session or force " "stop it." msgstr "" "Eine entfernte Anmeldung ist unmöglich, weil bereits eine entfernte Sitzung " "von %s läuft. Für eine Anmeldung müssen Sie sich zuerst aus der Sitzung " "abmelden, oder die Abmeldung erzwingen." #. Translators: is running for #: js/gdm/loginDialog.js:426 #, javascript-format msgid "" "Login is not possible because a remote session is already running for %s. To " "login, you must log out from the remote session or force stop it." msgstr "" "Eine Anmeldung ist unmöglich, weil bereits eine entfernte Sitzung von %s " "läuft. Für eine Anmeldung müssen Sie sich zuerst aus der Sitzung abmelden, " "oder die Abmeldung erzwingen." #. Translators: is running for #: js/gdm/loginDialog.js:429 #, javascript-format msgid "" "Remote login is not possible because a local session is already running for " "%s. To login remotely, you must log out from the local session or force stop " "it." msgstr "" "Eine entfernte Anmeldung ist unmöglich, weil bereits eine lokale Sitzung von " "%s läuft. Für eine entfernte Anmeldung müssen Sie sich zuerst aus der " "lokalen Sitzung abmelden, oder die Abmeldung erzwingen." #. Translators: is running for #: js/gdm/loginDialog.js:432 #, javascript-format msgid "" "Login is not possible because a session is already running for %s. To login, " "you must log out from the session or force stop it." msgstr "" "Eine Anmeldung ist unmöglich, weil bereits eine Sitzung von %s läuft. Für " "eine Anmeldung müssen Sie sich zuerst aus der Sitzung abmelden, oder die " "Abmeldung erzwingen." #: js/gdm/loginDialog.js:441 msgid "Session Already Running" msgstr "Sitzung läuft bereits" #: js/gdm/loginDialog.js:453 msgid "" "Force stopping will quit any running apps and processes, and could result in " "data loss" msgstr "" "Das Beenden zu erzwingen beendet laufende Anwendungen und Prozesse und " "könnte zu Datenverlust führen" #: js/gdm/loginDialog.js:473 msgid "Force Stop" msgstr "Beenden erzwingen" #: js/gdm/loginDialog.js:541 msgid "Not listed?" msgstr "Nicht aufgeführt?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:1009 #, javascript-format msgid "(e.g., user or %s)" msgstr "(z.B. Benutzer oder %s)" #: js/gdm/loginDialog.js:1014 js/ui/components/networkAgent.js:257 #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:326 msgid "Username" msgstr "Benutzername" #: js/gdm/loginDialog.js:1080 msgid "Login Attempt Timed Out" msgstr "Der Anmeldeversuch ist abgelaufen" #: js/gdm/loginDialog.js:1081 msgid "Login took too long, please try again" msgstr "Die Anmeldung dauerte zu lange, bitte versuchen Sie es erneut" #: js/gdm/loginDialog.js:1426 msgid "Login Window" msgstr "Anmeldefenster" #: js/gdm/util.js:496 msgid "Authentication error" msgstr "Anmeldung fehlgeschlagen" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:727 msgid "(or swipe finger across reader)" msgstr "(oder wischen Sie mit dem Finger über den Leser)" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:732 msgid "(or place finger on reader)" msgstr "(oder legen Sie einen Finger auf den Leser)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:91 msgctxt "search-result" msgid "Power Off" msgstr "Ausschalten" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:94 msgid "power off;poweroff;shutdown;halt;stop" msgstr "" "power off;poweroff;shutdown;halt;stop;ausschalten;herunterfahren;halten;" "stoppen" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:99 msgctxt "search-result" msgid "Restart" msgstr "Neu starten" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:102 msgid "reboot;restart;" msgstr "reboot;restart;neustarten;" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:107 msgctxt "search-result" msgid "Lock Screen" msgstr "Bildschirm sperren" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:110 msgid "lock screen" msgstr "Bildschirm sperren" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:115 msgctxt "search-result" msgid "Log Out" msgstr "Abmelden" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:118 msgid "logout;log out;sign off" msgstr "logout;log out;sign off;abmelden;verlassen" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:123 msgctxt "search-result" msgid "Suspend" msgstr "Bereitschaft" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:126 msgid "suspend;sleep" msgstr "suspend;sleep;Bereitschaft;Schlafen" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:131 msgctxt "search-result" msgid "Switch User" msgstr "Benutzer wechseln" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:134 msgid "switch user" msgstr "Benutzer wechseln" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:141 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "" "lock orientation;unlock orientation;screen;rotation;Ausrichtung sperren;" "Ausrichtung entsperren;Bildschirm;Drehung;drehen" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:146 msgctxt "search-result" msgid "Take a Screenshot" msgstr "Ein Bildschirmfoto aufnehmen" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:149 msgid "screenshot;screencast;snip;capture;record" msgstr "" "screenshot;screencast;snip;capture;recordBildschirmfoto;" "Bildschirmaufzeichnung;Bildschirmvideo;aufnehmen;Aufnahme;aufzeichnen" #: js/misc/systemActions.js:249 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "Bildschirmdrehung entsperren" #: js/misc/systemActions.js:250 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "Bildschirmdrehung sperren" #: js/misc/util.js:130 msgid "Command not found" msgstr "Befehl nicht gefunden" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:170 msgid "Could not parse command:" msgstr "Befehl konnte nicht verarbeitet werden:" #: js/misc/util.js:178 #, javascript-format msgid "Execution of “%s” failed:" msgstr "Ausführung von »%s« ist gescheitert:" #: js/misc/dateUtils.js:69 msgid "Just now" msgstr "Gerade eben" #: js/misc/dateUtils.js:72 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "vor %d Minute" msgstr[1] "vor %d Minuten" #: js/misc/dateUtils.js:79 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "vor %d Stunde" msgstr[1] "vor %d Stunden" #: js/misc/dateUtils.js:85 js/ui/dateMenu.js:183 msgid "Yesterday" msgstr "Gestern" #: js/misc/dateUtils.js:88 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "vor %d Tag" msgstr[1] "vor %d Tagen" #: js/misc/dateUtils.js:95 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "vor %d Woche" msgstr[1] "vor %d Wochen" #: js/misc/dateUtils.js:102 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "vor %d Monat" msgstr[1] "vor %d Monaten" #: js/misc/dateUtils.js:108 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "vor %d Jahr" msgstr[1] "vor %d Jahren" #. Translators: Time in 24h format #: js/misc/dateUtils.js:155 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/dateUtils.js:161 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "Gestern, %H:%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/dateUtils.js:167 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/dateUtils.js:173 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%e. %B, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/dateUtils.js:179 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%e. %B %Y, %H:%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/dateUtils.js:184 msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/dateUtils.js:190 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "Gestern, %l:%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/dateUtils.js:196 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/dateUtils.js:202 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%e. %B, %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/dateUtils.js:208 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%e. %B %Y, %l:%M %p" #: js/portalHelper/main.js:98 msgid "Your connection seems to be secure" msgstr "Ihre Verbindung scheint sicher zu sein" #: js/portalHelper/main.js:104 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "Ihre Verbindung zum Anmeldefenster dieses Hotspots ist nicht sicher. " "Passwörter oder andere Daten, die Sie auf dieser Seite eingeben, können von " "anderen in unmittelbarer Umgebung ausgelesen werden." #: js/portalHelper/main.js:115 msgid "Hotspot Login" msgstr "Hotspot-Anmeldung" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:51 js/ui/inhibitShortcutsDialog.js:92 msgid "Deny" msgstr "Ablehnen" #: js/ui/accessDialog.js:52 js/ui/inhibitShortcutsDialog.js:101 msgid "Allow" msgstr "Zulassen" #: js/ui/appDisplay.js:1769 msgid "Unnamed Folder" msgstr "Unbenannter Ordner" # Ich bin mir nicht sicher, ob wir nicht vielleicht einfach bei "hinzufügen" # und "entfernen" bleiben sollten. - ts #: js/ui/appFavorites.js:163 #, javascript-format msgid "%s has been pinned to the dash." msgstr "%s wurde an das Dash angeheftet." #: js/ui/appFavorites.js:194 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "%s wurde vom Dash losgelöst." #: js/ui/appFavorites.js:208 js/ui/main.js:281 msgid "Undo" msgstr "Rückgängig" # Fensterüberschrift #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:49 msgid "Open Windows" msgstr "Offene Fenster" #: js/ui/appMenu.js:57 msgid "New Window" msgstr "Neues Fenster" #: js/ui/appMenu.js:84 msgid "App Details" msgstr "Anwendungsdetails" #: js/ui/appMenu.js:100 msgid "Quit" msgstr "Beenden" #: js/ui/appMenu.js:160 js/ui/dash.js:248 msgid "Unpin" msgstr "Loslösen" #: js/ui/appMenu.js:161 msgid "Pin to Dash" msgstr "An Dash anheften" #: js/ui/appMenu.js:178 msgid "Launch using Integrated Graphics Card" msgstr "Mit integrierter Grafikkarte starten" #: js/ui/appMenu.js:179 msgid "Launch using Discrete Graphics Card" msgstr "Mit dedizierter Grafikkarte starten" #: js/ui/audioDeviceSelection.js:46 msgid "Select Audio Device" msgstr "Audio-Gerät auswählen" #: js/ui/audioDeviceSelection.js:61 js/ui/status/volume.js:81 msgid "Sound Settings" msgstr "Klangeinstellungen" #: js/ui/audioDeviceSelection.js:74 msgid "Headphones" msgstr "Kopfhörer" #: js/ui/audioDeviceSelection.js:76 msgid "Headset" msgstr "Headset" #: js/ui/audioDeviceSelection.js:78 js/ui/status/volume.js:356 msgid "Microphone" msgstr "Mikrofon" #: js/ui/backgroundMenu.js:13 msgid "Change Background…" msgstr "Hintergrund ändern …" #: js/ui/backgroundMenu.js:15 msgid "Display Settings" msgstr "Anzeigeeinstellungen" #: js/ui/backgroundMenu.js:16 msgid "Settings" msgstr "Einstellungen" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:37 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:63 msgctxt "grid sunday" msgid "S" msgstr "S" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:65 msgctxt "grid monday" msgid "M" msgstr "M" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:67 msgctxt "grid tuesday" msgid "T" msgstr "D" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:69 msgctxt "grid wednesday" msgid "W" msgstr "M" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:71 msgctxt "grid thursday" msgid "T" msgstr "D" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:73 msgctxt "grid friday" msgid "F" msgstr "F" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:75 msgctxt "grid saturday" msgid "S" msgstr "S" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:426 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:436 msgid "%OB %Y" msgstr "%OB %Y" #: js/ui/calendar.js:498 msgid "Previous month" msgstr "Vorheriger Monat" #: js/ui/calendar.js:516 msgid "Next month" msgstr "Nächster Monat" #: js/ui/calendar.js:667 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:726 msgid "Week %V" msgstr "Woche %V" #: js/ui/calendar.js:918 msgid "No Notifications" msgstr "Keine Benachrichtigungen" #: js/ui/calendar.js:974 msgid "Do Not Disturb" msgstr "Nicht stören" #: js/ui/calendar.js:995 msgid "Clear" msgstr "Leeren" #: js/ui/calendar.js:999 msgctxt "action" msgid "Clear all notifications" msgstr "Alle Benachrichtigungen entfernen" #. Translators: %s is an application name #: js/ui/closeDialog.js:42 #, javascript-format msgid "“%s” Is Not Responding" msgstr "»%s« antwortet nicht" #: js/ui/closeDialog.js:43 msgid "" "You may choose to wait a short while for it to continue or force the app to " "quit entirely" msgstr "" "Sie können der Anwendung noch etwas Zeit geben oder ein sofortiges Beenden " "erzwingen" #: js/ui/closeDialog.js:71 msgid "Force Quit" msgstr "Beenden erzwingen" #: js/ui/closeDialog.js:76 msgid "Wait" msgstr "Warten" #: js/ui/components/automountManager.js:82 msgid "External drive connected" msgstr "Externes Laufwerk verbunden" #: js/ui/components/automountManager.js:94 msgid "External drive disconnected" msgstr "Externes Laufwerk getrennt" #: js/ui/components/automountManager.js:208 msgid "Unable to unlock volume" msgstr "Datenträger konnte nicht entsperrt werden" #: js/ui/components/automountManager.js:209 msgid "The installed udisks version does not support the PIM setting" msgstr "" "Die PIM-Einstellung wird von der installierten udisks-Version nicht " "unterstützt" #. Translators: %s is the name of a partition on a external drive #: js/ui/components/autorunManager.js:189 #, javascript-format msgid "“%s” connected" msgstr "»%s« verbunden" #: js/ui/components/autorunManager.js:190 msgid "Disk can now be used" msgstr "Laufwerk kann jetzt verwendet werden" #: js/ui/components/autorunManager.js:202 #, javascript-format msgid "Open with %s" msgstr "Öffnen mit %s" #: js/ui/components/networkAgent.js:95 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router" msgstr "" "Alternativ können Sie sich verbinden, indem Sie den »WPS«-Knopf an Ihrem " "Router drücken" #: js/ui/components/networkAgent.js:107 js/ui/status/bluetooth.js:245 #: js/ui/status/network.js:360 js/ui/status/network.js:444 msgid "Connect" msgstr "Verbinden" #: js/ui/components/networkAgent.js:222 msgid "Key" msgstr "Schlüssel" #: js/ui/components/networkAgent.js:273 js/ui/components/networkAgent.js:312 msgid "Private key password" msgstr "Passwort für geheimen Schlüssel" #: js/ui/components/networkAgent.js:306 msgid "Identity" msgstr "Identität" #: js/ui/components/networkAgent.js:332 msgid "Service" msgstr "Dienst" #: js/ui/components/networkAgent.js:370 js/ui/components/networkAgent.js:406 #: js/ui/components/networkAgent.js:743 js/ui/components/networkAgent.js:764 msgid "Authentication required" msgstr "Anmeldung erforderlich" #: js/ui/components/networkAgent.js:371 js/ui/components/networkAgent.js:744 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network “%s”" msgstr "" "Passwörter oder Schlüssel sind erforderlich, um auf das Drahtlosnetzwerk " "»%s« zuzugreifen" #: js/ui/components/networkAgent.js:375 js/ui/components/networkAgent.js:748 msgid "Wired 802.1X authentication" msgstr "Kabelgebundene 802.1X-Anmeldung" #: js/ui/components/networkAgent.js:378 msgid "Network name" msgstr "Netzwerkname" #: js/ui/components/networkAgent.js:386 js/ui/components/networkAgent.js:752 msgid "DSL authentication" msgstr "DSL-Anmeldung" #: js/ui/components/networkAgent.js:393 js/ui/components/networkAgent.js:757 msgid "PIN code required" msgstr "PIN-Code ist erforderlich" #: js/ui/components/networkAgent.js:394 js/ui/components/networkAgent.js:758 msgid "PIN code is needed for the mobile broadband device" msgstr "Für das mobile Breitbandgerät wird ein PIN-Code benötigt" #: js/ui/components/networkAgent.js:396 msgid "PIN" msgstr "PIN" #: js/ui/components/networkAgent.js:407 js/ui/components/networkAgent.js:749 #: js/ui/components/networkAgent.js:753 js/ui/components/networkAgent.js:765 #: js/ui/components/networkAgent.js:769 #, javascript-format msgid "A password is required to connect to “%s”" msgstr "Es wird ein Passwort benötigt, um sich mit »%s« zu verbinden" #: js/ui/components/networkAgent.js:768 msgid "VPN password" msgstr "VPN-Passwort" #: js/ui/components/polkitAgent.js:44 msgid "Authentication Required" msgstr "Anmeldung erforderlich" #: js/ui/components/polkitAgent.js:84 msgid "Administrator" msgstr "Systemverwalter" #: js/ui/components/polkitAgent.js:149 msgid "Authenticate" msgstr "Anmelden" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:263 js/ui/shellMountOperation.js:415 msgid "Sorry, that didn’t work. Please try again." msgstr "" "Entschuldigung, das hat nicht funktioniert. Bitte versuchen Sie es erneut." #: js/ui/ctrlAltTab.js:23 js/ui/overviewControls.js:404 msgid "Windows" msgstr "Fenster" #: js/ui/dash.js:204 js/ui/dash.js:250 msgid "Show Apps" msgstr "Anwendungen anzeigen" # Würde ich so übernehmen, oder evtl. »Dock«. #. Translators: this is the name of the dock/favorites area on #. the bottom of the overview #: js/ui/dash.js:408 msgid "Dash" msgstr "Dash" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:99 msgid "%B %-d %Y" msgstr "%e. %B %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:106 msgid "%A %B %e %Y" msgstr "%A, %e. %B %Y" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:172 msgctxt "calendar heading" msgid "%B %-d" msgstr "%e. %B" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:175 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%e. %B %Y" #: js/ui/dateMenu.js:181 msgid "Today" msgstr "Heute" #: js/ui/dateMenu.js:185 msgid "Tomorrow" msgstr "Morgen" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:216 msgctxt "event list time" msgid "All Day" msgstr "Ganztägig" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:238 msgid "%m/%d" msgstr "%d.%m." #: js/ui/dateMenu.js:289 msgid "No Events" msgstr "Keine Termine" #: js/ui/dateMenu.js:411 msgid "Add World Clocks…" msgstr "Weltuhren hinzufügen …" #: js/ui/dateMenu.js:412 msgid "World Clocks" msgstr "Weltuhren" #: js/ui/dateMenu.js:702 msgid "Loading…" msgstr "Wird geladen …" #: js/ui/dateMenu.js:712 msgid "Go Online for Weather Information" msgstr "Gehen Sie online, um Wetterinformationen beziehen zu können" #: js/ui/dateMenu.js:714 msgid "Weather Information Unavailable" msgstr "Wetterinformationen sind nicht verfügbar" #: js/ui/dateMenu.js:724 msgid "Weather" msgstr "Wetter" #: js/ui/dateMenu.js:726 msgid "Select Weather Location…" msgstr "Wetterstandort auswählen …" #: js/ui/endSessionDialog.js:47 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "%s abmelden" #: js/ui/endSessionDialog.js:48 msgctxt "title" msgid "Log Out" msgstr "Abmelden" #: js/ui/endSessionDialog.js:51 #, javascript-format msgid "%s will be logged out automatically in %d second" msgid_plural "%s will be logged out automatically in %d seconds" msgstr[0] "%s wird automatisch in %d Sekunde abgemeldet" msgstr[1] "%s wird automatisch in %d Sekunden abgemeldet" #: js/ui/endSessionDialog.js:57 #, javascript-format msgid "You will be logged out automatically in %d second" msgid_plural "You will be logged out automatically in %d seconds" msgstr[0] "Sie werden automatisch in %d Sekunde abgemeldet" msgstr[1] "Sie werden automatisch in %d Sekunden abgemeldet" #: js/ui/endSessionDialog.js:64 msgctxt "button" msgid "Log Out" msgstr "Abmelden" #: js/ui/endSessionDialog.js:70 js/ui/status/system.js:174 msgctxt "title" msgid "Power Off" msgstr "Ausschalten" #: js/ui/endSessionDialog.js:71 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Aktualisierungen installieren und ausschalten" #: js/ui/endSessionDialog.js:74 #, javascript-format msgid "The system will power off automatically in %d second" msgid_plural "The system will power off automatically in %d seconds" msgstr[0] "Das System schaltet sich automatisch in %d Sekunde ab" msgstr[1] "Das System schaltet sich automatisch in %d Sekunden ab" #: js/ui/endSessionDialog.js:78 js/ui/endSessionDialog.js:97 msgctxt "checkbox" msgid "Install pending software updates" msgstr "Ausstehende Softwareaktualisierungen installieren" #: js/ui/endSessionDialog.js:82 msgctxt "button" msgid "Power Off" msgstr "Ausschalten" #: js/ui/endSessionDialog.js:89 msgctxt "title" msgid "Restart" msgstr "Neu starten" #: js/ui/endSessionDialog.js:90 msgctxt "title" msgid "Install Updates & Restart" msgstr "Aktualisierungen installieren und neu starten" #: js/ui/endSessionDialog.js:93 #, javascript-format msgid "The system will restart automatically in %d second" msgid_plural "The system will restart automatically in %d seconds" msgstr[0] "Das System wird automatisch in %d Sekunde neu gestartet" msgstr[1] "Das System wird automatisch in %d Sekunden neu gestartet" #: js/ui/endSessionDialog.js:101 msgctxt "button" msgid "Restart" msgstr "Neu starten" #: js/ui/endSessionDialog.js:109 msgctxt "title" msgid "Restart & Install Updates" msgstr "Neu starten und Aktualisierungen installieren" #: js/ui/endSessionDialog.js:112 #, javascript-format msgid "The system will automatically restart and install updates in %d second" msgid_plural "" "The system will automatically restart and install updates in %d seconds" msgstr[0] "" "Das System wird automatisch in %d Sekunde neu gestartet und aktualisiert" msgstr[1] "" "Das System wird automatisch in %d Sekunden neu gestartet und aktualisiert" #: js/ui/endSessionDialog.js:119 js/ui/endSessionDialog.js:140 msgctxt "button" msgid "Restart & Install" msgstr "Neu starten und installieren" #: js/ui/endSessionDialog.js:121 msgctxt "button" msgid "Install & Power Off" msgstr "Installieren und ausschalten" #: js/ui/endSessionDialog.js:122 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Ausschalten, nachdem Aktualisierungen installiert wurden" #: js/ui/endSessionDialog.js:129 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "Neu starten und Aktualisierung installieren" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:134 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "%s %s wird nach dem Neustart installiert, was möglicherweise viel Zeit " "beanspruchen kann. Vergewissern Sie sich, zuvor eine Sicherungskopie des " "Systems erstellt zu haben und dass eine zuverlässige Stromzufuhr besteht." #: js/ui/endSessionDialog.js:283 msgid "Low battery power: please plug in before installing updates" msgstr "" "Niedrige Akkuladung: Bitte schließen Sie Ihr Gerät an das Stromnetz an, " "bevor Sie Aktualisierungen installieren" #: js/ui/endSessionDialog.js:292 msgid "Some applications are busy or have unsaved work" msgstr "Einige Anwendungen sind beschäftigt oder haben ungesicherte Änderungen" #: js/ui/endSessionDialog.js:297 msgid "Other users are logged in" msgstr "Andere Benutzer sind angemeldet" #: js/ui/endSessionDialog.js:467 msgctxt "button" msgid "Boot Options" msgstr "Systemstart-Einstellungen" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:672 #, javascript-format msgid "%s (remote)" msgstr "%s (Entfernt)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:675 #, javascript-format msgid "%s (console)" msgstr "%s (Konsole)" #: js/ui/extensionDownloader.js:280 msgid "Install" msgstr "Installieren" #: js/ui/extensionDownloader.js:286 msgid "Install Extension" msgstr "Erweiterung installieren" #: js/ui/extensionDownloader.js:287 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "»%s« von extensions.gnome.org herunterladen und installieren?" #: js/ui/extensionSystem.js:352 msgid "Extension Updates Available" msgstr "Aktualisierungen für Erweiterungen verfügbar" #: js/ui/extensionSystem.js:353 msgid "Extension updates are ready to be installed" msgstr "Aktualisierungen für Erweiterungen stehen bereit zur Installation" #: js/ui/inhibitShortcutsDialog.js:70 msgid "Allow inhibiting shortcuts" msgstr "Sperrung von Tastenkürzel erlauben" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:73 #, javascript-format msgid "The app %s wants to inhibit shortcuts" msgstr "Die Anwendung %s möchte Tastenkürzel sperren" #: js/ui/inhibitShortcutsDialog.js:74 msgid "An app wants to inhibit shortcuts" msgstr "Eine Anwendung möchte Tastenkürzel sperren" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:81 #, javascript-format msgid "You can restore shortcuts by pressing %s" msgstr "Sie können Tastenkürzel durch Drücken von %s wiederherstellen" #: js/ui/kbdA11yDialog.js:34 msgid "Slow Keys Turned On" msgstr "Tastenverzögerung eingeschaltet" #: js/ui/kbdA11yDialog.js:35 msgid "Slow Keys Turned Off" msgstr "Tastenverzögerung ausgeschaltet" #: js/ui/kbdA11yDialog.js:36 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "Sie haben die Umschalttaste 8 Sekunden lang gedrückt gehalten. Dies ist die " "Tastenkombination für die Tastenverzögerung, welche beeinflusst, wie Ihre " "Tastatur funktioniert." #: js/ui/kbdA11yDialog.js:42 msgid "Sticky Keys Turned On" msgstr "Einrastfunktion eingeschaltet" #: js/ui/kbdA11yDialog.js:43 msgid "Sticky Keys Turned Off" msgstr "Einrastfunktion ausgeschaltet" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "Sie haben die Umschalttaste 5 Mal hintereinander gedrückt. Dies ist die " "Tastenkombination für die Einrastfunktion, welche beeinflusst, wie Ihre " "Tastatur funktioniert." #: js/ui/kbdA11yDialog.js:47 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" "Sie haben zwei Tasten gleichzeitig oder die Umschalttaste 5 Mal " "hintereinander gedrückt. Dies ist die Tastenkombination für die " "Einrastfunktion, welche beeinflusst, wie Ihre Tastatur funktioniert." #: js/ui/kbdA11yDialog.js:57 msgid "Leave On" msgstr "Eingeschaltet lassen" #: js/ui/kbdA11yDialog.js:57 msgid "Turn On" msgstr "Einschalten" #: js/ui/kbdA11yDialog.js:67 js/ui/status/network.js:455 msgid "Turn Off" msgstr "Ausschalten" #: js/ui/kbdA11yDialog.js:67 msgid "Leave Off" msgstr "Ausgeschaltet lassen" #: js/ui/keyboard.js:180 js/ui/status/keyboard.js:897 msgid "Keyboard Settings" msgstr "Tastatureinstellungen" #: js/ui/lookingGlass.js:727 msgid "No extensions installed" msgstr "Keine Erweiterungen installiert" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:788 #, javascript-format msgid "%s has not emitted any errors" msgstr "%s hat keine Fehler ausgegeben" #: js/ui/lookingGlass.js:794 msgid "Hide Errors" msgstr "Fehler verbergen" #: js/ui/lookingGlass.js:798 js/ui/lookingGlass.js:875 msgid "Show Errors" msgstr "Fehler anzeigen" #: js/ui/lookingGlass.js:807 msgid "Active" msgstr "Aktiv" #: js/ui/lookingGlass.js:810 msgid "Inactive" msgstr "Inaktiv" #: js/ui/lookingGlass.js:812 msgid "Error" msgstr "Fehler" #: js/ui/lookingGlass.js:814 msgid "Out of date" msgstr "Veraltet" #: js/ui/lookingGlass.js:816 msgid "Downloading" msgstr "Herunterladen" #: js/ui/lookingGlass.js:818 msgid "Deactivating" msgstr "Wird deaktiviert" #: js/ui/lookingGlass.js:820 msgid "Activating" msgstr "Wird aktiviert" #: js/ui/lookingGlass.js:853 msgid "View Source" msgstr "Quelle zeigen" #: js/ui/lookingGlass.js:864 msgid "Web Page" msgstr "Webseite" #: js/ui/main.js:277 msgid "System was put in unsafe mode" msgstr "Das System wurde in einen unsicheren Modus versetzt" #: js/ui/main.js:278 msgid "Apps now have unrestricted access" msgstr "Anwendungen haben nun uneingeschränkten Zugriff" #: js/ui/main.js:338 msgid "Logged in as a privileged user" msgstr "Als privilegierter Benutzer angemeldet" #: js/ui/main.js:339 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" "Der Betrieb einer Sitzung als privilegierter Benutzer sollte aus " "Sicherheitsgründen unterlassen werden. Falls möglich, melden Sie sich bitte " "als normaler Benutzer an." #: js/ui/main.js:387 msgid "Screen Lock disabled" msgstr "Bildschirmsperre deaktiviert" #: js/ui/main.js:388 msgid "Screen Locking requires the GNOME display manager" msgstr "Die Sperrung des Bildschirms erfordert den GNOME Display-Manager" #. Translators: this is the string displayed in the header when a message #. source doesn't have a name #: js/ui/messageList.js:374 msgid "Unknown App" msgstr "Unbekannte Anwendung" #: js/ui/messageTray.js:326 js/ui/messageTray.js:328 msgid "Notification sound" msgstr "Benachrichtigungston" #: js/ui/mpris.js:198 msgid "Unknown artist" msgstr "Unbekannter Künstler" #: js/ui/mpris.js:208 msgid "Unknown title" msgstr "Unbekannter Titel" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:328 msgid "Type to search" msgstr "Suchbegriff eingeben" #: js/ui/overviewControls.js:392 msgid "Apps" msgstr "Anwendungen" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:33 msgid "Overview" msgstr "Übersicht" #: js/ui/padOsd.js:98 msgid "New shortcut…" msgstr "Neue Tastenkombination …" #: js/ui/padOsd.js:151 msgid "App defined" msgstr "Von Anwendung festgelegt" #: js/ui/padOsd.js:152 msgid "Show on-screen help" msgstr "Bildschirmhilfe anzeigen" #: js/ui/padOsd.js:153 msgid "Switch monitor" msgstr "Bildschirm wechseln" #: js/ui/padOsd.js:154 msgid "Assign keystroke" msgstr "Tastenkombination zuweisen" #: js/ui/padOsd.js:223 msgid "Done" msgstr "Erledigt" #: js/ui/padOsd.js:726 msgid "Edit…" msgstr "Bearbeiten …" #: js/ui/padOsd.js:773 msgid "None" msgstr "Keine" #: js/ui/padOsd.js:844 msgid "Press a button to configure" msgstr "Klicken Sie auf einen Knopf zum Einrichten" #: js/ui/padOsd.js:845 msgid "Press Esc to exit" msgstr "Drücken Sie Esc zum Abbrechen" #: js/ui/padOsd.js:848 msgid "Press any key to exit" msgstr "Drücken Sie eine beliebige Taste zum Beenden" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:423 msgid "Activities" msgstr "Aktivitäten" #: js/ui/panel.js:504 msgctxt "System menu in the top bar" msgid "System" msgstr "System" #: js/ui/panel.js:678 msgid "Top Bar" msgstr "Obere Leiste" #: js/ui/quickSettings.js:188 msgid "Open menu" msgstr "Menü öffnen" #: js/ui/runDialog.js:61 msgid "Run a Command" msgstr "Einen Befehl ausführen" #: js/ui/runDialog.js:76 msgid "Press ESC to close" msgstr "Drücken Sie Esc zum Schließen" #: js/ui/runDialog.js:241 msgid "Restart is not available on Wayland" msgstr "Neu Starten ist unter Wayland nicht verfügbar" #: js/ui/runDialog.js:246 msgid "Restarting…" msgstr "Neustart …" #: js/ui/screenShield.js:233 msgid "GNOME needs to lock the screen" msgstr "GNOME muss den Bildschirm sperren" #: js/ui/screenShield.js:274 js/ui/screenShield.js:667 msgid "Unable to lock" msgstr "Sperrung fehlgeschlagen" #: js/ui/screenShield.js:275 js/ui/screenShield.js:668 msgid "Lock was blocked by an app" msgstr "Sperrung wurde von einer Anwendung blockiert" #: js/ui/screenshot.js:1252 msgid "Selection" msgstr "Auswahl" # Tooltip zu einer der verschiedenen Bildschirmfoto-Varianten. Ich halte die # wortwörtliche Übersetzung "Bereichauswahl" für sperrig, daher bisschen # freier übersetzt - ts # In Gnome 41 ist es "Aufnahmebereich" und erscheint über den Ausfwahlfelder "Bildschirm", "Fenster" und "Auswahl" #: js/ui/screenshot.js:1262 msgid "Area Selection" msgstr "Aufnahmebereich" #: js/ui/screenshot.js:1267 msgid "Screen" msgstr "Bildschirm" #: js/ui/screenshot.js:1277 msgid "Screen Selection" msgstr "Bildschirm aufnehmen" #: js/ui/screenshot.js:1282 msgid "Window" msgstr "Fenster" #: js/ui/screenshot.js:1292 msgid "Window Selection" msgstr "Fenster aufnehmen" #. Translators: entry in the window right click menu. #: js/ui/screenshot.js:1317 js/ui/status/system.js:111 js/ui/windowMenu.js:28 msgid "Take Screenshot" msgstr "Bildschirmfoto aufnehmen" #: js/ui/screenshot.js:1333 msgid "Record Screen" msgstr "Bildschirm aufzeichnen" #. Translators: since this string refers to an action, #. it needs to be phrased as a verb. #: js/ui/screenshot.js:1350 msgid "Capture" msgstr "Aufnehmen" #: js/ui/screenshot.js:1372 msgid "Show Pointer" msgstr "Mauszeiger anzeigen" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1996 msgid "Screencasts" msgstr "Bildschirmaufzeichnungen" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast From 07-17-2013 10:00:46 PM" #: js/ui/screenshot.js:2001 #, no-c-format msgid "Screencast From %d %t" msgstr "Bildschirmaufzeichnung vom %d %t" #. Translators: notification title. #: js/ui/screenshot.js:2047 msgid "Screencast recorded" msgstr "Bildschirminhalt aufgezeichnet" #. Translators: notification title. #: js/ui/screenshot.js:2060 msgid "Screencast failed to start" msgstr "Starten der Bildschirmaufnahme fehlgeschlagen" #. Translators: notification title. #: js/ui/screenshot.js:2066 msgid "Screencast ended: Out of disk space" msgstr "Bildschirmaufnahme beendet: Kein Speicherplatz mehr" #. We can encourage user to try again on service crashes since the #. recorder will auto-blocklist the pipeline that crashed. #. Translators: notification title. #: js/ui/screenshot.js:2072 msgid "Screencast ended unexpectedly, please try again" msgstr "Bildschirmaufnahme unerwartet beendet, bitte versuchen Sie es erneut" #. Translators: notification title. #: js/ui/screenshot.js:2075 msgid "Screencast ended unexpectedly" msgstr "Bildschirmaufnahme unerwartet beendet" #. Translators: notification source name. #: js/ui/screenshot.js:2085 js/ui/screenshot.js:2327 msgid "Screenshot" msgstr "Bildschirmfoto" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:2092 msgid "Click here to view the video." msgstr "Klicken Sie hier, um das Video anzusehen." #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:2100 js/ui/screenshot.js:2343 msgid "Show in Files" msgstr "In Dateien anzeigen" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2287 #, javascript-format msgid "Screenshot From %s" msgstr "Bildschirmfoto vom %s" #. Translators: notification title. #: js/ui/screenshot.js:2333 msgid "Screenshot captured" msgstr "Bildschirmfoto aufgenommen" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2335 msgid "You can paste the image from the clipboard." msgstr "Sie können das Bild aus der Zwischenablage einfügen." #: js/ui/screenshot.js:2391 js/ui/screenshot.js:2555 msgid "Screenshot taken" msgstr "Bildschirmfoto aufgenommen" #: js/ui/search.js:829 msgid "Searching…" msgstr "Suche läuft …" #: js/ui/search.js:831 msgid "No results" msgstr "Keine Ergebnisse" #: js/ui/search.js:962 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "%d weiteres" msgstr[1] "%d weitere" #: js/ui/searchController.js:87 #: subprojects/extensions-app/data/ui/extensions-window.ui:73 msgid "Search" msgstr "Suchen" #: js/ui/shellEntry.js:21 msgid "Copy" msgstr "Kopieren" #: js/ui/shellEntry.js:26 msgid "Paste" msgstr "Einfügen" #: js/ui/shellEntry.js:78 msgid "Show Text" msgstr "Text anzeigen" #: js/ui/shellEntry.js:80 msgid "Hide Text" msgstr "Text verbergen" #: js/ui/shellEntry.js:174 msgid "Caps lock is on" msgstr "Feststelltaste ist aktiviert" #: js/ui/shellMountOperation.js:286 msgid "Hidden Volume" msgstr "Verborgener Datenträger" #: js/ui/shellMountOperation.js:289 msgid "Windows System Volume" msgstr "Windows-Systemdatenträger" #: js/ui/shellMountOperation.js:292 msgid "Uses Keyfiles" msgstr "Verwendet Schlüsseldateien" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:300 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead" msgstr "" "Um einen Datenträger zu entsperren, der Schlüsseldateien verwendet, nutzen " "Sie stattdessen das Dienstprogramm %s" #: js/ui/shellMountOperation.js:304 msgid "" "You need an external utility like Disks to unlock a volume that uses " "keyfiles" msgstr "" "Sie benötigen ein externes Hilfsprogramm wie Laufwerke, um einen " "Datenträger zu entsperren, der Schlüsseldateien verwendet" #: js/ui/shellMountOperation.js:312 msgid "PIM Number" msgstr "PIM-Nummer" #: js/ui/shellMountOperation.js:371 msgid "Remember Password" msgstr "An Passwort erinnern" #: js/ui/shellMountOperation.js:386 msgid "Unlock" msgstr "Entsperren" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:400 #, javascript-format msgid "Open %s" msgstr "%s öffnen" #: js/ui/shellMountOperation.js:436 msgid "The PIM must be a number or empty" msgstr "Die PIM muss eine Nummer oder leer sein" #: js/ui/status/accessibility.js:34 msgid "Accessibility" msgstr "Barrierefreiheit" #: js/ui/status/accessibility.js:44 msgid "High Contrast" msgstr "Hoher Kontrast" #: js/ui/status/accessibility.js:47 msgid "Zoom" msgstr "Vergrößern" #: js/ui/status/accessibility.js:54 msgid "Screen Reader" msgstr "Bildschirmleser" #: js/ui/status/accessibility.js:58 msgid "Screen Keyboard" msgstr "Bildschirmtastatur" #: js/ui/status/accessibility.js:62 msgid "Visual Alerts" msgstr "Visuelle Warnungen" #: js/ui/status/accessibility.js:66 msgid "Sticky Keys" msgstr "Einrastfunktion" #: js/ui/status/accessibility.js:70 msgid "Slow Keys" msgstr "Tastenverzögerung" #: js/ui/status/accessibility.js:74 msgid "Bounce Keys" msgstr "Tastenanschlagfunktion" #: js/ui/status/accessibility.js:78 msgid "Mouse Keys" msgstr "Tastaturmaus" #: js/ui/status/accessibility.js:83 msgid "Accessibility Settings" msgstr "Barrierefreiheitseinstellungen" #: js/ui/status/accessibility.js:140 msgid "Large Text" msgstr "Große Schrift" #: js/ui/status/autoRotate.js:14 msgid "Auto Rotate" msgstr "Automatisches Drehen" #: js/ui/status/backgroundApps.js:156 msgctxt "title" msgid "Background Apps" msgstr "Hintergrundanwendungen" #: js/ui/status/backgroundApps.js:171 msgid "Apps known to be running without a window" msgstr "Anwendungen, die bekanntermaßen ohne Fenster laufen" #: js/ui/status/backgroundApps.js:182 msgid "App Settings" msgstr "Anwendungseinstellungen" #: js/ui/status/backgroundApps.js:239 msgid "No Background Apps" msgstr "Keine Hintergrundanwendungen" #: js/ui/status/backgroundApps.js:241 #, javascript-format msgid "%d Background App" msgid_plural "%d Background Apps" msgstr[0] "%d Hintergrundanwendung" msgstr[1] "%d Hintergrundanwendungen" #: js/ui/status/backlight.js:39 msgid "Keyboard Brightness" msgstr "Helligkeit der Tastatur" #: js/ui/status/backlight.js:79 msgid "Off" msgstr "Aus" #: js/ui/status/backlight.js:80 msgid "Low" msgstr "Niedrig" #: js/ui/status/backlight.js:81 msgid "High" msgstr "Hoch" #: js/ui/status/backlight.js:147 js/ui/status/keyboard.js:879 msgid "Keyboard" msgstr "Tastatur" #: js/ui/status/bluetooth.js:245 js/ui/status/network.js:360 msgid "Disconnect" msgstr "Trennen" #: js/ui/status/bluetooth.js:262 js/ui/status/bluetooth.js:264 msgid "Bluetooth" msgstr "Bluetooth" #: js/ui/status/bluetooth.js:287 js/ui/status/network.js:1900 msgid "Bluetooth Settings" msgstr "Bluetooth-Einstellungen" #: js/ui/status/bluetooth.js:334 msgid "No available or connected devices" msgstr "Keine verfügbaren oder verbundenen Geräte" #: js/ui/status/bluetooth.js:335 msgid "Turn on Bluetooth to connect to devices" msgstr "Bluetooth einschalten, um Geräte zu verbinden" #. Translators: This is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:389 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d verbunden" msgstr[1] "%d verbunden" #: js/ui/status/brightness.js:32 msgid "Brightness" msgstr "Helligkeit" #: js/ui/status/darkMode.js:12 msgid "Dark Style" msgstr "Dunkler Stil" #: js/ui/status/dwellClick.js:15 msgid "Single Click" msgstr "Einfacher Klick" #: js/ui/status/dwellClick.js:20 msgid "Double Click" msgstr "Doppelklick" #: js/ui/status/dwellClick.js:25 msgid "Drag" msgstr "Ziehen" #: js/ui/status/dwellClick.js:30 msgid "Secondary Click" msgstr "Kontextklick" # https://pilotmoon.com/dwellclick/ #: js/ui/status/dwellClick.js:39 msgid "Dwell Click" msgstr "Verweilender Klick" #: js/ui/status/keyboard.js:896 msgid "Show Keyboard Layout" msgstr "Tastaturbelegung anzeigen" #: js/ui/status/location.js:337 msgid "Allow location access" msgstr "Standortzugriff erlauben" #. Translators: %s is an application name #: js/ui/status/location.js:339 #, javascript-format msgid "The app %s wants to access your location" msgstr "Die Anwendung %s möchte auf Ihren Standort zugreifen" #: js/ui/status/location.js:349 msgid "Location access can be changed at any time from the privacy settings" msgstr "" "Standortzugriff kann in den Einstellungen zum Datenschutz jederzeit geändert " "werden" #: js/ui/status/location.js:357 msgid "Deny Access" msgstr "Zugriff verhindern" #: js/ui/status/location.js:362 msgid "Grant Access" msgstr "Zugriff gewähren" #: js/ui/status/network.js:62 msgid "" msgstr "" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:354 #, javascript-format msgid "Disconnect %s" msgstr "%s trennen" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:356 #, javascript-format msgid "Connect to %s" msgstr "Verbinden mit %s" #: js/ui/status/network.js:1050 msgid "Secure" msgstr "Sicher" #: js/ui/status/network.js:1050 msgid "Not secure" msgstr "Nicht sicher" #: js/ui/status/network.js:1051 #, javascript-format msgid "Signal strength %s%%" msgstr "Signalstärke %s %%" #. translators: The first placeholder is the network name, the second and indication whether it is secure, and the last the signal strength indication #: js/ui/status/network.js:1053 #, javascript-format msgid "%s, %s, %s" msgstr "%s, %s, %s" #. Translators: %s is a network identifier #: js/ui/status/network.js:1155 #, javascript-format msgid "%s Hotspot" msgstr "Hotspot %s" #: js/ui/status/network.js:1426 #, javascript-format msgid "%d connected" msgid_plural "%d connected" msgstr[0] "%d verbunden" msgstr[1] "%d verbunden" #: js/ui/status/network.js:1524 js/ui/status/network.js:1540 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1525 msgid "VPN Settings" msgstr "VPN-Einstellungen" #: js/ui/status/network.js:1785 msgid "Wi–Fi" msgstr "WLAN" #: js/ui/status/network.js:1787 msgid "All Networks" msgstr "Alle Netzwerke" #: js/ui/status/network.js:1884 msgid "Wired Connections" msgstr "Kabelverbindungen" #: js/ui/status/network.js:1885 msgid "Wired Settings" msgstr "LAN-Einstellungen" #: js/ui/status/network.js:1899 msgid "Bluetooth Tethers" msgstr "Über Bluetooth geteilte Verbindungen" #. Translators: "Tether" from "Bluetooth Tether" #: js/ui/status/network.js:1906 msgid "Tether" msgstr "Verbindung teilen" #: js/ui/status/network.js:1919 msgid "Mobile Connections" msgstr "Mobile Verbindungen" #: js/ui/status/network.js:1921 msgid "Mobile Broadband Settings" msgstr "Einstellungen der mobilen Breitbandverbindung" #. Translators: "Mobile" from "Mobile Broadband" #: js/ui/status/network.js:1930 msgid "Mobile" msgstr "Mobil" #: js/ui/status/network.js:1964 msgid "Sign Into Wi–Fi Network" msgstr "Im Drahtlosnetzwerk anmelden" #: js/ui/status/network.js:2151 msgid "Connection failed" msgstr "Verbindung gescheitert" #: js/ui/status/network.js:2152 msgid "Activation of network connection failed" msgstr "Aktivierung der Netzwerkverbindung ist gescheitert" #: js/ui/status/nightLight.js:19 msgid "Night Light" msgstr "Nachtmodus" #: js/ui/status/powerProfiles.js:19 msgctxt "Power profile" msgid "Performance" msgstr "Leistung" #: js/ui/status/powerProfiles.js:24 msgctxt "Power profile" msgid "Balanced" msgstr "Ausgeglichen" #: js/ui/status/powerProfiles.js:29 msgctxt "Power profile" msgid "Power Saver" msgstr "Energie sparen" # Heißt das auf Deutsch tatsächlich »Energieprofile«? Bei mir (Fedora 36, GNOME 42.4) habe ich in den Einstellungen nämlich die Kategorie »Energie-Modus«. Im entsprechenden Hilfe-Eintrag wird »Profil« und »Modus« recht beliebig gemischt. Oder sind das zwei verschiedene Punkte? - jb # Ohne mich tief eingelesen zu haben, gehe ich davon aus, dass es willkürlich ist. - ts #: js/ui/status/powerProfiles.js:39 js/ui/status/powerProfiles.js:69 msgid "Power Mode" msgstr "Energiemodus" #: js/ui/status/powerProfiles.js:71 msgid "Power Settings" msgstr "Energieeinstellungen" #: js/ui/status/remoteAccess.js:74 msgid "Stop Screencast" msgstr "Bildschirmaufzeichnung beenden" #: js/ui/status/remoteAccess.js:144 msgid "Stop Screen Sharing" msgstr "Bildschirmfreigabe beenden" #: js/ui/status/rfkill.js:99 msgid "Airplane Mode" msgstr "Flugzeugmodus" #: js/ui/status/system.js:168 msgid "Power Off Menu" msgstr "Ausschalten-Menü" #: js/ui/status/system.js:176 msgid "Suspend" msgstr "Bereitschaft" #: js/ui/status/system.js:181 msgid "Restart…" msgstr "Neustart …" #: js/ui/status/system.js:186 msgid "Power Off…" msgstr "Ausschalten …" #: js/ui/status/system.js:193 #: subprojects/extensions-app/data/ui/extensions-window.ui:124 msgid "Log Out…" msgstr "Abmelden …" #: js/ui/status/system.js:198 msgid "Switch User…" msgstr "Benutzer wechseln …" #: js/ui/status/system.js:242 msgctxt "action" msgid "Lock Screen" msgstr "Bildschirm sperren" #: js/ui/status/thunderbolt.js:308 msgid "Unknown Thunderbolt device" msgstr "Unbekanntes Thunderbolt-Gerät" #: js/ui/status/thunderbolt.js:309 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" "Ein neues Gerät ist in der Zwischenzeit erkannt worden. Bitte trennen Sie " "die Verbindung des Gerätes und schließen Sie es wieder an, um es zu " "verwenden." #: js/ui/status/thunderbolt.js:312 msgid "Unauthorized Thunderbolt device" msgstr "Nicht legitimiertes Thunderbolt-Gerät" #: js/ui/status/thunderbolt.js:313 msgid "" "New device has been detected and needs to be authorized by an administrator" msgstr "" "Neue Geräte wurden entdeckt und müssen durch einen Administrator legitimiert " "werden" #: js/ui/status/thunderbolt.js:319 msgid "Thunderbolt authorization error" msgstr "Thunderbolt-Legitimierungsfehler" #: js/ui/status/thunderbolt.js:320 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "Das Thunderbolt-Gerät %s konnte nicht legitimiert werden" #: js/ui/status/volume.js:218 msgid "Volume changed" msgstr "Lautstärke geändert" #: js/ui/status/volume.js:231 msgid "Unmute" msgstr "Stummschaltung aufheben" #: js/ui/status/volume.js:231 msgid "Mute" msgstr "Stumm schalten" #: js/ui/status/volume.js:286 msgid "Volume" msgstr "Lautstärke" #: js/ui/status/volume.js:302 msgid "Sound Output" msgstr "Tonausgang" #: js/ui/status/volume.js:374 msgid "Sound Input" msgstr "Toneingang" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:20 msgid "Mirror" msgstr "Spiegeln" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:29 msgid "Join Displays" msgstr "Bildschirme verketten" #. Translators: this is for using only external displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:39 msgid "External Only" msgstr "Nur extern" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:47 msgid "Built-in Only" msgstr "Nur eingebaut" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:378 msgid "%A %B %-d" msgstr "%A, %d. %B" #: js/ui/unlockDialog.js:384 msgid "Swipe up to unlock" msgstr "Nach oben wischen zum Entsperren" #: js/ui/unlockDialog.js:385 msgid "Click or press a key to unlock" msgstr "Durch Mausklick oder Tastendruck entsperren" # Beschreibung des Hauptbereichs im Entsperren-Dialog (über Strg-Alt-Tab erreichtbar) - ts #: js/ui/unlockDialog.js:568 msgid "Unlock Window" msgstr "Entsperren-Fenster" #: js/ui/unlockDialog.js:577 msgid "Log in as another user" msgstr "Als anderer Benutzer anmelden" #: js/ui/welcomeDialog.js:47 #, javascript-format msgid "GNOME %s" msgstr "GNOME %s" #: js/ui/welcomeDialog.js:51 #, javascript-format msgid "Welcome to %s" msgstr "Willkommen bei %s" #: js/ui/welcomeDialog.js:52 msgid "If you want to learn your way around, check out the tour" msgstr "Nutzen Sie die Einführung, um sich zurechtzufinden" #: js/ui/welcomeDialog.js:61 msgid "Skip" msgstr "Überspringen" #: js/ui/welcomeDialog.js:66 msgid "Take Tour" msgstr "Einführung starten" #: js/ui/windowAttentionHandler.js:18 #, javascript-format msgid "“%s” is ready" msgstr "»%s« ist bereit" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:68 msgid "Keep these display settings?" msgstr "Diese Anzeigeeinstellungen beibehalten?" #: js/ui/windowManager.js:78 msgid "Revert Settings" msgstr "Zurücksetzen" #: js/ui/windowManager.js:83 msgid "Keep Changes" msgstr "Änderungen beibehalten" #: js/ui/windowManager.js:103 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "Die Änderungen der Einstellungen werden in %d Sekunde zurückgesetzt" msgstr[1] "" "Die Änderungen der Einstellungen werden in %d Sekunden zurückgesetzt" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:500 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:40 msgid "Hide" msgstr "Verbergen" #: js/ui/windowMenu.js:47 msgid "Restore" msgstr "Wiederherstellen" #: js/ui/windowMenu.js:51 msgid "Maximize" msgstr "Maximieren" #: js/ui/windowMenu.js:58 msgid "Move" msgstr "Verschieben" #: js/ui/windowMenu.js:78 msgid "Resize" msgstr "Größe verändern" #: js/ui/windowMenu.js:98 msgid "Always on Top" msgstr "Immer im Vordergrund" #: js/ui/windowMenu.js:117 msgid "Always on Visible Workspace" msgstr "Immer auf der sichtbaren Arbeitsfläche" #: js/ui/windowMenu.js:131 msgid "Move to Workspace Left" msgstr "Eine Arbeitsfläche nach links verschieben" #: js/ui/windowMenu.js:137 msgid "Move to Workspace Right" msgstr "Eine Arbeitsfläche nach rechts verschieben" #: js/ui/windowMenu.js:143 msgid "Move to Workspace Up" msgstr "Eine Arbeitsfläche nach oben verschieben" #: js/ui/windowMenu.js:149 msgid "Move to Workspace Down" msgstr "Eine Arbeitsfläche nach unten verschieben" #: js/ui/windowMenu.js:167 msgid "Move to Monitor Up" msgstr "Auf den Bildschirm nach oben verschieben" #: js/ui/windowMenu.js:176 msgid "Move to Monitor Down" msgstr "Auf den Bildschirm nach unten verschieben" #: js/ui/windowMenu.js:185 msgid "Move to Monitor Left" msgstr "Auf den Bildschirm nach links verschieben" #: js/ui/windowMenu.js:194 msgid "Move to Monitor Right" msgstr "Auf den Bildschirm nach rechts verschieben" #: js/ui/windowMenu.js:202 msgid "Close" msgstr "Schließen" #: src/main.c:529 subprojects/extensions-tool/src/main.c:336 msgid "Print version" msgstr "Version ausgeben" #: src/main.c:535 msgid "Mode used by GDM for login screen" msgstr "Der durch GDM im Anmeldefenster verwendete Modus" #: src/main.c:541 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "" "Verwenden Sie einen spezifischen Modus wie z.B. »gdm« für den " "Anmeldebildschirm" #: src/main.c:547 msgid "List possible modes" msgstr "Die möglichen Modi auflisten" #: src/main.c:553 msgid "Force animations to be enabled" msgstr "Aktivierung von Animationen erzwingen" #: src/shell-app.c:252 msgctxt "program" msgid "Unknown" msgstr "Unbekannt" #: src/shell-app.c:503 #, c-format msgid "Failed to launch “%s”" msgstr "»%s« konnte nicht gestartet werden" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match" msgstr "Passwörter stimmen nicht überein" #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "Es muss ein Passwort angegeben werden" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "Der Dialog zur Anmeldung wurde vom Benutzer geschlossen" #: src/st/st-icon-theme.c:1865 #, c-format msgid "Icon '%s' not present in theme %s" msgstr "Symbol »%s« nicht im Thema %s vorhanden" #: src/st/st-icon-theme.c:3454 src/st/st-icon-theme.c:3757 msgid "Failed to load icon" msgstr "Symbol konnte nicht geladen werden" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 msgid "Manage your GNOME Extensions" msgstr "Ihre GNOME-Erweiterungen verwalten" #. developer_name tag deprecated with Appstream 1.0 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:19 msgid "The GNOME Project" msgstr "Das GNOME-Projekt" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:51 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" "GNOME-Erweiterungen dient der Aktualisierung von Erweiterungen, dem " "Konfigurieren der Voreinstellungen von Erweiterungen und dem Entfernen oder " "Deaktivieren nicht gewünschter Erweiterungen." #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:64 msgid "Main Window" msgstr "Hauptfenster" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:68 msgid "Available Updates" msgstr "Verfügbare Aktualisierungen" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:72 msgid "Search View" msgstr "Suchansicht" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "GNOME-Shell-Erweiterungen einrichten" #: subprojects/extensions-app/js/extensionManager.js:237 #, javascript-format msgid "" "The installed version of this extension (%s) is incompatible with the " "current version of GNOME (%s). The extension has been disabled." msgstr "" "Die installierte Version der Erweiterung (%s) ist inkompatibel mit der " "derzeitigen GNOME-Version (%s). Diese Erweiterung wurde deaktiviert." #: subprojects/extensions-app/js/extensionManager.js:238 #, javascript-format msgid "" "The installed version of this extension is incompatible with the current " "version of GNOME (%s). The extension has been disabled." msgstr "" "Die installierte Version dieser Erweiterung ist inkompatibel mit der " "derzeitigen GNOME-Version (%s). Die Erweiterung wurde deaktiviert." #: subprojects/extensions-app/js/extensionManager.js:242 msgid "" "An error has occurred in this extension. This could cause issues elsewhere " "in the system. It is recommended to turn the extension off until the error " "is resolved." msgstr "" "Mit dieser Erweiterung ist ein Fehler aufgetreten. Das könnte anderswo auf " "dem System zu Problemen führen. Es wird empfohlen, die Erweiterung zu " "deaktivieren, bis der Fehler behoben ist." #. translators: Details for an extension error #: subprojects/extensions-app/js/extensionManager.js:248 msgid "Error details:" msgstr "Fehlerdetails:" #: subprojects/extensions-app/js/extensionRow.js:82 #, javascript-format msgid "Version %s" msgstr "Version %s" #: subprojects/extensions-app/js/extensionsWindow.js:113 #, javascript-format msgid "Remove “%s”?" msgstr "»%s« entfernen?" #: subprojects/extensions-app/js/extensionsWindow.js:114 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "" "Wenn Sie die Erweiterung entfernen, müssen Sie sie erneut herunterladen, um " "sie wieder zu aktivieren" #: subprojects/extensions-app/js/extensionsWindow.js:117 msgid "_Cancel" msgstr "Abbre_chen" #: subprojects/extensions-app/js/extensionsWindow.js:118 msgid "_Remove" msgstr "Entfe_rnen" #: subprojects/extensions-app/js/extensionsWindow.js:158 msgid "translator-credits" msgstr "" "Tim Sabsch , 2020, 2022\n" "Christian Kirbach , 2020-2024\n" "Philipp Kiemle , 2020-2021, 2023-2024\n" "Jürgen Benvenuti , 2022-2024" #: subprojects/extensions-app/js/extensionsWindow.js:203 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "%d Erweiterung wird bei der nächsten Anmeldung aktualisiert." msgstr[1] "%d Erweiterungen werden bei der nächsten Anmeldung aktualisiert." #: subprojects/extensions-app/data/ui/extension-row.ui:22 msgid "Error Details" msgstr "Fehlerdetails" #: subprojects/extensions-app/data/ui/extension-row.ui:62 msgid "Updates Details" msgstr "Aktualisierungsdetails" #: subprojects/extensions-app/data/ui/extension-row.ui:72 msgid "" "A new version of this extension is ready and will be loaded on next login." msgstr "" "Eine neue Version dieser Erweiterung steht bereit und wird bei der nächsten " "Anmeldung geladen." #: subprojects/extensions-app/data/ui/extension-row.ui:104 msgid "Extension Details" msgstr "Erweiterungsdetails" #: subprojects/extensions-app/data/ui/extension-row.ui:192 msgid "_Website" msgstr "_Webseite" #: subprojects/extensions-app/data/ui/extension-row.ui:219 msgid "_Settings" msgstr "_Einstellungen" #: subprojects/extensions-app/data/ui/extension-row.ui:246 msgid "_Remove…" msgstr "Entfe_rnen …" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Keyboard Shortcuts" msgstr "Tastenkürzel" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "Info zu Erweiterungen" #: subprojects/extensions-app/data/ui/extensions-window.ui:64 msgid "Main Menu" msgstr "Hauptmenü" #: subprojects/extensions-app/data/ui/extensions-window.ui:106 msgid "Search extensions" msgstr "Erweiterung durchsuchen" #: subprojects/extensions-app/data/ui/extensions-window.ui:134 msgid "_Extensions" msgstr "_Erweiterungen" #: subprojects/extensions-app/data/ui/extensions-window.ui:139 msgid "More Information" msgstr "Weitere Informationen" #: subprojects/extensions-app/data/ui/extensions-window.ui:151 msgid "" "Extensions can cause performance and stability issues. It is recommended to " "disable all extensions if you experience problems with your system." msgstr "" "Erweiterungen können zu Beeinträchtigungen der Leistung und Stabilität " "führen. Es wird empfohlen, bei Problemen mit dem System alle Erweiterungen " "zu deaktivieren." #: subprojects/extensions-app/data/ui/extensions-window.ui:178 msgid "User Extensions" msgstr "Benutzererweiterungen" #: subprojects/extensions-app/data/ui/extensions-window.ui:198 msgid "System Extensions" msgstr "Systemerweiterungen" #: subprojects/extensions-app/data/ui/extensions-window.ui:233 msgid "Search Results" msgstr "Suchergebnisse" #: subprojects/extensions-app/data/ui/extensions-window.ui:252 msgid "No Results Found" msgstr "Keine Ergebnisse gefunden" #: subprojects/extensions-app/data/ui/extensions-window.ui:253 msgid "Try a different search" msgstr "Versuchen Sie eine andere Suchanfrage" #: subprojects/extensions-app/data/ui/extensions-window.ui:264 msgid "No Installed Extensions" msgstr "Keine installierten Erweiterungen" #: subprojects/extensions-app/data/ui/extensions-window.ui:265 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" "Besuchen Sie extensions.gnome.org, um Erweiterungen zu finden und hinzuzufügen." #: subprojects/extensions-app/data/ui/extensions-window.ui:276 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" "Tut uns sehr leid, wir konnten keine Liste der installierten Erweiterungen " "aufstellen. Stellen Sie sicher, dass Sie in GNOME angemeldet sind und " "versuchen Sie es dann erneut." #: subprojects/extensions-app/data/ui/help-overlay.ui:9 msgctxt "shortcut window" msgid "General" msgstr "Allgemein" #: subprojects/extensions-app/data/ui/help-overlay.ui:12 msgctxt "shortcut window" msgid "Open Menu" msgstr "Menü öffnen" #: subprojects/extensions-app/data/ui/help-overlay.ui:18 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Suche umschalten" #: subprojects/extensions-app/data/ui/help-overlay.ui:24 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Tastenkürzel anzeigen" #: subprojects/extensions-app/data/ui/help-overlay.ui:30 msgctxt "shortcut window" msgid "Quit" msgstr "Beenden" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:284 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "Die neue Erweiterung wurde erfolgreich in %s erstellt.\n" #: subprojects/extensions-tool/src/command-create.c:376 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" "Der Name sollte eine sehr kurze (idealerweise anschauliche) Zeichenkette " "sein.\n" "Beispiele sind: %s" #: subprojects/extensions-tool/src/command-create.c:382 #: subprojects/extensions-tool/src/main.c:243 msgid "Name" msgstr "Name" #: subprojects/extensions-tool/src/command-create.c:396 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" "Die Beschreibung erklärt in einem Satz, was Ihre Erweiterung beinhaltet.\n" "Beispiele sind: %s" #: subprojects/extensions-tool/src/command-create.c:402 #: subprojects/extensions-tool/src/main.c:246 msgid "Description" msgstr "Beschreibung" #: subprojects/extensions-tool/src/command-create.c:416 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" "Die UUID ist eine eindeutige Kennung Ihrer Erweiterung.\n" "Sie sollte das Format einer E-Mail-Adresse besitzen " "(klickfokus@erikamustermann.beispiel.de)\n" #: subprojects/extensions-tool/src/command-create.c:443 msgid "Choose one of the available templates:\n" msgstr "Wählen Sie eine der verfügbaren Vorlagen:\n" #: subprojects/extensions-tool/src/command-create.c:457 msgid "Template" msgstr "Vorlage" #: subprojects/extensions-tool/src/command-create.c:515 msgid "The unique identifier of the new extension" msgstr "Die eindeutige Kennung der neuen Erweiterung" #: subprojects/extensions-tool/src/command-create.c:518 msgid "NAME" msgstr "NAME" #: subprojects/extensions-tool/src/command-create.c:519 msgid "The user-visible name of the new extension" msgstr "Der sichtbare Name der neuen Erweiterung" #: subprojects/extensions-tool/src/command-create.c:521 msgid "DESCRIPTION" msgstr "BESCHREIBUNG" #: subprojects/extensions-tool/src/command-create.c:523 msgid "A short description of what the extension does" msgstr "Eine kurze Beschreibung der Erweiterung" #: subprojects/extensions-tool/src/command-create.c:525 #: subprojects/extensions-tool/src/command-pack.c:455 msgid "DOMAIN" msgstr "DOMÄNE" #: subprojects/extensions-tool/src/command-create.c:527 msgid "The gettext domain used by the extension" msgstr "Die von dieser Erweiterung verwendete gettext-Domäne" #: subprojects/extensions-tool/src/command-create.c:529 #: subprojects/extensions-tool/src/command-pack.c:448 msgid "SCHEMA" msgstr "SCHEMA" #: subprojects/extensions-tool/src/command-create.c:531 msgid "The GSettings schema used by the extension" msgstr "Das von dieser Erweiterung verwendete gsettings-Schema" #: subprojects/extensions-tool/src/command-create.c:534 msgid "TEMPLATE" msgstr "VORLAGE" #: subprojects/extensions-tool/src/command-create.c:535 msgid "The template to use for the new extension" msgstr "Die Vorlage für eine neue Erweiterung" #: subprojects/extensions-tool/src/command-create.c:538 msgid "Include prefs.js template" msgstr "prefs.js-Vorlage einbeziehen" #: subprojects/extensions-tool/src/command-create.c:544 msgid "Enter extension information interactively" msgstr "Informationen zur Erweiterung interaktiv eingeben" #: subprojects/extensions-tool/src/command-create.c:552 msgid "Create a new extension" msgstr "Eine neue Erweiterung erstellen" #: subprojects/extensions-tool/src/command-create.c:570 #: subprojects/extensions-tool/src/command-list.c:190 msgid "Unknown arguments" msgstr "Unbekannte Argumente" #: subprojects/extensions-tool/src/command-create.c:595 msgid "UUID, name and description are required" msgstr "Es werden eine UUID, ein Name und eine Beschreibung benötigt" #: subprojects/extensions-tool/src/command-disable.c:62 #: subprojects/extensions-tool/src/command-enable.c:62 #, c-format msgid "Extension “%s” does not exist\n" msgstr "Erweiterung »%s« existiert nicht\n" #: subprojects/extensions-tool/src/command-disable.c:98 msgid "Disable an extension" msgstr "Eine Erweiterung deaktivieren" #: subprojects/extensions-tool/src/command-disable.c:116 #: subprojects/extensions-tool/src/command-enable.c:116 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "Keine UUID angegeben" #: subprojects/extensions-tool/src/command-disable.c:121 #: subprojects/extensions-tool/src/command-enable.c:121 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "Mehr als eine UUID angegeben" #: subprojects/extensions-tool/src/command-enable.c:98 msgid "Enable an extension" msgstr "Eine Erweiterung aktivieren" #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:66 #: subprojects/extensions-tool/src/main.c:150 msgid "Failed to connect to GNOME Shell\n" msgstr "Fehler beim Verbinden zur GNOME-Shell\n" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:159 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "Erweiterung »%s« existiert nicht\n" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "Informationen zur Erweiterung anzeigen" #: subprojects/extensions-tool/src/command-install.c:190 msgid "Overwrite an existing extension" msgstr "Eine bestehende Erweiterung überschreiben" #: subprojects/extensions-tool/src/command-install.c:192 msgid "EXTENSION_BUNDLE" msgstr "ERWEITERUNGS_PAKET" #: subprojects/extensions-tool/src/command-install.c:201 msgid "Install an extension bundle" msgstr "Ein Erweiterungspaket installieren" #: subprojects/extensions-tool/src/command-install.c:219 msgid "No extension bundle specified" msgstr "Kein Erweiterungspaket angegeben" #: subprojects/extensions-tool/src/command-install.c:225 msgid "More than one extension bundle specified" msgstr "Mehr als ein Erweiterungspaket angegeben" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show user-installed extensions" msgstr "Vom Benutzer installierte Erweiterungen anzeigen" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show system-installed extensions" msgstr "Vom System installierte Erweiterungen anzeigen" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Show enabled extensions" msgstr "Aktivierte Erweiterungen anzeigen" #: subprojects/extensions-tool/src/command-list.c:149 msgid "Show disabled extensions" msgstr "Deaktivierte Erweiterungen anzeigen" #: subprojects/extensions-tool/src/command-list.c:152 msgid "Show extensions in active state" msgstr "Aktive Erweiterungen anzeigen" #: subprojects/extensions-tool/src/command-list.c:155 msgid "Show extensions in inactive state" msgstr "Inaktive Erweiterungen anzeigen" #: subprojects/extensions-tool/src/command-list.c:158 msgid "Show extensions with preferences" msgstr "Erweiterungen mit Einstellungen anzeigen" #: subprojects/extensions-tool/src/command-list.c:161 msgid "Show extensions with updates" msgstr "Erweiterungen mit Aktualisierungen anzeigen" #: subprojects/extensions-tool/src/command-list.c:164 msgid "Print extension details" msgstr "Erweiterungsdetails ausgeben" #: subprojects/extensions-tool/src/command-list.c:172 msgid "List installed extensions" msgstr "Installierte Erweiterungen auflisten" #: subprojects/extensions-tool/src/command-pack.c:444 msgid "FILE" msgstr "DATEI" #: subprojects/extensions-tool/src/command-pack.c:445 msgid "Additional source to include in the bundle" msgstr "Zusätzliche Quelle, die in das Paket eingebunden wird" #: subprojects/extensions-tool/src/command-pack.c:449 msgid "A GSettings schema that should be included" msgstr "Ein GSettings-Schema, das eingebunden werden soll" #: subprojects/extensions-tool/src/command-pack.c:451 #: subprojects/extensions-tool/src/command-pack.c:462 msgid "DIRECTORY" msgstr "ORDNER" #: subprojects/extensions-tool/src/command-pack.c:453 msgid "The directory where translations are found" msgstr "Der Ordner, in dem die Übersetzungen enthalten sind" #: subprojects/extensions-tool/src/command-pack.c:457 msgid "The gettext domain to use for translations" msgstr "Die von gettext zu verwendende Übersetzungsdomäne" #: subprojects/extensions-tool/src/command-pack.c:460 msgid "Overwrite an existing pack" msgstr "Ein bestehendes Pack überschreiben" #: subprojects/extensions-tool/src/command-pack.c:464 msgid "The directory where the pack should be created" msgstr "Der Ordner, in dem das Pack erstellt werden soll" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "SOURCE_DIRECTORY" msgstr "QUELL_ORDNER" #: subprojects/extensions-tool/src/command-pack.c:475 msgid "Create an extension bundle" msgstr "Ein Erweiterungspaket erstellen" #: subprojects/extensions-tool/src/command-pack.c:495 msgid "More than one source directory specified" msgstr "Mehr als ein Quellordner angegeben" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "Erweiterung »%s« hat keine Einstellungen\n" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "" "Das Öffnen der Einstellungen für die Erweiterung »%s« ist fehlgeschlagen: " "%s\n" #: subprojects/extensions-tool/src/command-prefs.c:87 msgid "Opens extension preferences" msgstr "Öffnet die Erweiterungseinstellungen" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "Eine Erweiterung zurücksetzen" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "Systemerweiterungen können nicht deinstalliert werden\n" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "»%s« konnte nicht deinstalliert werden\n" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "Eine Erweiterung deinstallieren" #: subprojects/extensions-tool/src/main.c:76 msgid "Do not print error messages" msgstr "Keine Fehlermeldungen ausgeben" #: subprojects/extensions-tool/src/main.c:249 msgid "Path" msgstr "Pfad" #: subprojects/extensions-tool/src/main.c:252 msgid "URL" msgstr "Adresse" #: subprojects/extensions-tool/src/main.c:255 msgid "Original author" msgstr "Originalersteller" #: subprojects/extensions-tool/src/main.c:261 #: subprojects/extensions-tool/src/main.c:263 #: subprojects/extensions-tool/src/main.c:265 msgid "Version" msgstr "Version" #: subprojects/extensions-tool/src/main.c:268 msgid "Enabled" msgstr "Eingeschaltet" #: subprojects/extensions-tool/src/main.c:268 msgid "Yes" msgstr "Ja" #: subprojects/extensions-tool/src/main.c:268 msgid "No" msgstr "Nein" #: subprojects/extensions-tool/src/main.c:271 msgid "State" msgstr "Status" #: subprojects/extensions-tool/src/main.c:309 msgid "“version” takes no arguments" msgstr "»version« akzeptiert keine Argumente" #: subprojects/extensions-tool/src/main.c:311 #: subprojects/extensions-tool/src/main.c:331 msgid "Usage:" msgstr "Aufruf:" #: subprojects/extensions-tool/src/main.c:314 msgid "Print version information and exit." msgstr "Versionsinformationen ausgeben und beenden." #: subprojects/extensions-tool/src/main.c:329 #: subprojects/extensions-tool/src/main.c:332 msgid "COMMAND" msgstr "BEFEHL" #: subprojects/extensions-tool/src/main.c:332 msgid "[ARGS…]" msgstr "[ARGUMENTE …]" #: subprojects/extensions-tool/src/main.c:334 msgid "Commands:" msgstr "Befehle:" #: subprojects/extensions-tool/src/main.c:335 msgid "Print help" msgstr "Hilfe ausgeben" #: subprojects/extensions-tool/src/main.c:337 msgid "Enable extension" msgstr "Erweiterung aktivieren" #: subprojects/extensions-tool/src/main.c:338 msgid "Disable extension" msgstr "Erweiterung deaktivieren" #: subprojects/extensions-tool/src/main.c:339 msgid "Reset extension" msgstr "Erweiterung zurücksetzen" #: subprojects/extensions-tool/src/main.c:340 msgid "Uninstall extension" msgstr "Erweiterung deinstallieren" #: subprojects/extensions-tool/src/main.c:341 msgid "List extensions" msgstr "Erweiterungen auflisten" #: subprojects/extensions-tool/src/main.c:342 #: subprojects/extensions-tool/src/main.c:343 msgid "Show extension info" msgstr "Erweiterungsinformationen anzeigen" #: subprojects/extensions-tool/src/main.c:344 msgid "Open extension preferences" msgstr "Erweiterungseinstellungen öffnen" #: subprojects/extensions-tool/src/main.c:345 msgid "Create extension" msgstr "Erweiterung erstellen" #: subprojects/extensions-tool/src/main.c:346 msgid "Package extension" msgstr "Paket-Erweiterung" #: subprojects/extensions-tool/src/main.c:347 msgid "Install extension bundle" msgstr "Erweiterungspaket installieren" #: subprojects/extensions-tool/src/main.c:349 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "Verwenden Sie »%s«, um detaillierte Hilfe zu erhalten.\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "Schlicht" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "Eine leere Erweiterung" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "Indikator" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "Ein Symbol zu der oberen Leiste hinzufügen" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:4 msgid "Quick Settings Item" msgstr "Schnelleinstellungen-Eintrag" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:5 msgid "Add an item to quick settings" msgstr "Einen Eintrag zu den Schnelleinstellungen hinzufügen" #. translators: #. * The device has been disabled #: subprojects/gvc/gvc-mixer-control.c:1872 msgid "Disabled" msgstr "Ausgeschaltet" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1879 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u Ausgang" msgstr[1] "%u Ausgänge" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1889 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u Eingang" msgstr[1] "%u Eingänge" #: subprojects/gvc/gvc-mixer-control.c:2872 msgid "System Sounds" msgstr "Systemklänge" #~ msgid "Move Titlebar Onscreen" #~ msgstr "Titelleiste auf den Bildschirm verschieben" #~ msgid "Stop conflicting session dialog closed" #~ msgstr "" #~ "Die Dialog zum Beenden einer konfliktbehafteten Sitzung wurde geschlossen" #, javascript-format #~ msgid "Try to login again to start a session for user %s." #~ msgstr "" #~ "Versuchen Sie, sich erneut anzumelden, um eine Sitzung für den Benutzer " #~ "%s zu starten." #~ msgid "%s is now known as %s" #~ msgstr "%s heißt jetzt %s" #~ msgid "Network Manager" #~ msgstr "Netzwerk-Verwaltung" #~ msgid "Disabling" #~ msgstr "Wird ausgeschaltet" #~ msgid "Enabling" #~ msgstr "Wird eingeschaltet" #~ msgid "Thunderbolt" #~ msgstr "Thunderbolt" #~ msgid "No Matches" #~ msgstr "Keine Treffer" #~ msgid "The extension had an error" #~ msgstr "Die Erweiterung hatte einen Fehler" #~ msgid "The extension can be updated" #~ msgstr "Die Erweiterung kann aktualisiert werden" #~ msgid "Help" #~ msgstr "Hilfe" #~ msgid "Manually Installed" #~ msgstr "Manuell installiert" #~ msgid "Built-In" #~ msgstr "Mitgeliefert" #~ msgid "Extension Updates Ready" #~ msgstr "Aktualisierungen für Erweiterungen stehen bereit" #~ msgid "%d %%" #~ msgstr "%d %%" #~ msgid "No Thanks" #~ msgstr "Nein danke" #~ msgid "Screenshot / Screencast" #~ msgstr "Bildschirmfoto / Bildschirmaufzeichnung" # Heißt das auf Deutsch tatsächlich »Energieprofile«? Bei mir (Fedora 36, GNOME 42.4) habe ich in den Einstellungen nämlich die Kategorie »Energie-Modus«. Im entsprechenden Hilfe-Eintrag wird »Profil« und »Modus« recht beliebig gemischt. Oder sind das zwei verschiedene Punkte? - jb # Ohne mich tief eingelesen zu haben, gehe ich davon aus, dass es willkürlich ist. - ts #~ msgid "Power Profiles" #~ msgstr "Energieprofile" #~ msgid "" #~ "Whether the default Bluetooth adapter had set up devices associated to it" #~ msgstr "Legt fest, ob der Standard-Bluetooth-Adapter zugeordnete Geräte hat" #~ msgid "" #~ "The shell will only show a Bluetooth menu item if a Bluetooth adapter is " #~ "powered, or if there were devices set up associated with the default " #~ "adapter. This will be reset if the default adapter is ever seen not to " #~ "have devices associated to it." #~ msgstr "" #~ "Die Shell zeigt nur dann ein Bluetooth-Menü an, wenn ein Bluetooth-" #~ "Adapter betriebsbereit ist, oder wenn dem Standard-Bluetooth-Adapter in " #~ "der Vergangenheit Geräte zugeordnet waren. Sollte keine Gerätezuordnung " #~ "mehr vorhanden sein, so wird das Menü ausgeblendet." #~ msgid "Attach modal dialog to the parent window" #~ msgstr "Modalen Dialog an übergeordnetes Fenster binden" #~ msgid "" #~ "This key overrides the key in org.gnome.mutter when running GNOME Shell." #~ msgstr "" #~ "Dieser Schlüssel überschreibt den Schlüssel in org.gnome.mutter, wenn die " #~ "GNOME-Shell läuft." #~ msgid "Enable edge tiling when dropping windows on screen edges" #~ msgstr "" #~ "Größenanpassung einschalten, wenn ein Fenster an die Bildschirmkante " #~ "verschoben wird" #~ msgid "Workspaces are managed dynamically" #~ msgstr "Arbeitsflächen dynamisch verwalten" #~ msgid "Workspaces only on primary monitor" #~ msgstr "Arbeitsflächen nur auf dem primären Bildschirm" #~ msgid "Delay focus changes in mouse mode until the pointer stops moving" #~ msgstr "" #~ "Fokuswechsel im Mausmodus verzögern, bis sich der Zeiger nicht mehr bewegt" #~ msgid "Region & Language Settings" #~ msgstr "Regions- und Spracheinstellungen" #~ msgid "Applications" #~ msgstr "Anwendungen" #~ msgid "Unable to start %s" #~ msgstr "%s konnte nicht gestartet werden" #~ msgid "Couldn’t find the %s application" #~ msgstr "Die Anwendung %s konnte nicht gefunden werden" #~ msgid "Evolution Calendar" #~ msgstr "Evolution-Kalender" #~ msgid "Log Out" #~ msgstr "Abmelden" #~ msgid "%s Off" #~ msgstr "%s ausgeschaltet" #~ msgid "%s Connected" #~ msgstr "%s verbunden" #~ msgid "%s Unmanaged" #~ msgstr "%s nicht verwaltet" #~ msgid "%s Connecting" #~ msgstr "%s wird verbunden" #~ msgid "%s Requires Authentication" #~ msgstr "%s erfordert eine Anmeldung" #~ msgid "Firmware Missing For %s" #~ msgstr "Firmware fehlt für %s" #~ msgid "%s Unavailable" #~ msgstr "%s nicht verfügbar" #~ msgid "%s Connection Failed" #~ msgstr "Verbindung von %s gescheitert" #~ msgid "%s Hardware Disabled" #~ msgstr "%s-Hardware ausgeschaltet" #~ msgid "%s Disabled" #~ msgstr "%s ausgeschaltet" #~ msgid "Connect to Internet" #~ msgstr "Mit dem Internet verbinden" #~ msgid "Airplane Mode is On" #~ msgstr "Flugmodus ist eingeschaltet" #~ msgid "Wi-Fi is disabled when airplane mode is on." #~ msgstr "" #~ "Drahtlosnetzwerk ist ausgeschaltet, wenn sich Ihr Gerät im Flugmodus " #~ "befindet." #~ msgid "Turn Off Airplane Mode" #~ msgstr "Flugmodus ausschalten" #~ msgid "Wi-Fi is Off" #~ msgstr "Drahtlosnetzwerk ist ausgeschaltet" #~ msgid "Wi-Fi needs to be turned on in order to connect to a network." #~ msgstr "" #~ "Drahtlosnetzwerk muss eingeschaltet werden, um eine Netzwerkverbindung " #~ "herzustellen." # Wi-Fi einschalten # oder # Schalten sie Wi-Fi ein #~ msgid "Turn On Wi-Fi" #~ msgstr "Drahtlosnetzwerk einschalten" #~ msgid "Select a network" #~ msgstr "Wählen Sie ein Netzwerk" #~ msgid "Use hardware switch to turn off" #~ msgstr "Benutzen Sie zum Ausschalten den Gehäuseschalter" #~ msgid "Select Network" #~ msgstr "Wählen Sie ein Netzwerk aus" #~ msgid "Wi-Fi Settings" #~ msgstr "Drahtlosnetzwerk-Einstellungen" #~ msgid "%s Not Connected" #~ msgstr "%s nicht verbunden" #~ msgid "unknown" #~ msgstr "unbekannt" #~ msgid "connecting…" #~ msgstr "Verbindungsaufbau …" #~ msgid "authentication required" #~ msgstr "Anmeldung erforderlich" #~ msgid "connection failed" #~ msgstr "Verbindung gescheitert" #~ msgid "VPN Off" #~ msgstr "VPN ausgeschaltet" #~ msgid "%s Wi-Fi Connection" #~ msgid_plural "%s Wi-Fi Connections" #~ msgstr[0] "%s Funknetzwerkverbindung" #~ msgstr[1] "%s Funknetzwerkverbindungen" #~ msgid "Lock" #~ msgstr "Sperren" #~ msgid "Power Off / Log Out" #~ msgstr "Ausschalten / Abmelden" #~ msgid "Bluetooth On" #~ msgstr "Bluetooth An" #~ msgid "Bluetooth Off" #~ msgstr "Bluetooth Aus" # Siehe https://mail.gnome.org/archives/gnome-de/2021-March/msg00080.html #~ msgid "Location In Use" #~ msgstr "Standort wird verwendet" #~ msgid "Location Disabled" #~ msgstr "Standort ausgeschaltet" #~ msgid "Night Light Disabled" #~ msgstr "Nachtmodus deaktiviert" #~ msgid "Resume" #~ msgstr "Fortsetzen" #~ msgid "Disable Until Tomorrow" #~ msgstr "Bis morgen deaktivieren" #~ msgid "Fully Charged" #~ msgstr "Vollständig geladen" #~ msgid "Not Charging" #~ msgstr "Lädt nicht" #~ msgid "Estimating…" #~ msgstr "Schätzung …" #~ msgid "%d∶%02d Remaining (%d %%)" #~ msgstr "%d∶%02d verbleibend (%d %%)" #~ msgid "%d∶%02d Until Full (%d %%)" #~ msgstr "%d∶%02d bis geladen (%d %%)" #~ msgid "Screen is Being Shared" #~ msgstr "Bildschirm wird zur Zeit geteilt" #~ msgid "Turn off" #~ msgstr "Ausschalten" #~ msgid "Remove from Favorites" #~ msgstr "Aus Favoriten entfernen" #~ msgid "Add to Favorites" #~ msgstr "Zu Favoriten hinzufügen" #~ msgid "Author" #~ msgstr "Autor" #~ msgid "Warning" #~ msgstr "Warnung" #~ msgid "" #~ "Extensions can cause system issues, including performance problems. If " #~ "you encounter problems with your system, it is recommended to disable all " #~ "extensions." #~ msgstr "" #~ "Erweiterungen können Probleme am System verursachen, darunter auch " #~ "Leistungsprobleme. Sollten Sie auf Probleme mit Ihrem System stoßen, wird " #~ "die Deaktivierung aller Erweiterungen empfohlen." #~ msgid "Enable introspection API" #~ msgstr "Introspection-API aktivieren" #~ msgid "" #~ "Enables a D-Bus API that allows to introspect the application state of " #~ "the shell." #~ msgstr "" #~ "Aktiviert eine D_Bus-API, die Einblicke in den Anwendungsstatus der Shell " #~ "gewährt." #~ msgid "Failed to connect to GNOME Shell" #~ msgstr "Fehler beim Verbinden zur GNOME Shell" #~ msgid "Minimize" #~ msgstr "Minimieren" #~ msgid "Unmaximize" #~ msgstr "Maximieren aufheben" #~ msgid "App Picker View" #~ msgstr "Anwendungsauswahlanzeige" #~ msgid "Index of the currently selected view in the application picker." #~ msgstr "Index der aktuell gewählten Ansicht in der Anwendungsauswahl." #~ msgid "Frequently used applications will appear here" #~ msgstr "Häufig genutzte Anwendungen erscheinen hier" #~ msgid "Frequent" #~ msgstr "Häufig" #~ msgid "All" #~ msgstr "Alle" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d" #~ msgstr "%A, %d. %B" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d, %Y" #~ msgstr "%A, %d. %B %Y" #~ msgid "On" #~ msgstr "An" #~ msgid "Copy Error" #~ msgstr "Kopierfehler" #~ msgid "Username…" #~ msgstr "Benutzername …" #~ msgid "Password: " #~ msgstr "Passwort: " #~ msgid "Enter Password…" #~ msgstr "Passwort eingeben …" #~ msgid "Browse in Software" #~ msgstr "»Software« durchsuchen" #~ msgid "Next" #~ msgstr "Weiter" #~ msgctxt "button" #~ msgid "Sign In" #~ msgstr "Anmelden" #~ msgid "Rename" #~ msgstr "Umbenennen" #~ msgid "Type again:" #~ msgstr "Erneut eingeben:" #~ msgid "Authentication required by wireless network" #~ msgstr "Anmeldung für Drahtlosnetzwerk wird benötigt" #~ msgid "Mobile broadband network password" #~ msgstr "Passwort der mobilen Breitbandverbindung" # %A - ausgeschriebener Name des Wochentages, abhängig von der gesetzten # Umgebung # %d - Tag des Monats als Zahl (Bereich 01 bis 31) # %B - ausgeschriebener Name des Monats, abhängig von der gesetzten Umgebung #~ msgid "%A, %B %d" #~ msgstr "%A, %d. %B" #~ msgid "%d new message" #~ msgid_plural "%d new messages" #~ msgstr[0] "%d neue Nachricht" #~ msgstr[1] "%d neue Nachrichten" #~ msgid "Account Settings" #~ msgstr "Kontoeinstellungen" #~ msgid "Orientation Lock" #~ msgstr "Hoch-/Querformats-Fixierung" #~ msgid "" #~ "Keybinding that pauses and resumes all running tweens, for debugging " #~ "purposes" #~ msgstr "" #~ "Tastenkombination, die alle laufenden Zwischenbilder anhält und " #~ "fortsetzt. Zur Fehlerdiagnose." #~ msgid "Which keyboard to use" #~ msgstr "Zu verwendende Tastatur" #~ msgid "The type of keyboard to use." #~ msgstr "Der Typ der zu verwendenden Tastatur" #~ msgid "network-workgroup" #~ msgstr "network-workgroup" #~ msgid "toggle-switch-us" #~ msgstr "toggle-switch-intl" #~ msgid "There was an error loading the preferences dialog for %s:" #~ msgstr "" #~ "Beim Laden des Einstellungsdialogs für %s ist ein Fehler aufgetreten:" #~ msgid "%s all day." #~ msgstr "Ganztägig %s." #~ msgid "%s, then %s later." #~ msgstr "%s, später %s." #~ msgid "%s, then %s, followed by %s later." #~ msgstr "%s, später %s, gefolgt von %s." #~ msgid "Feels like %s." #~ msgstr "Gefühlt wie %s." 07070100000228000081A40000000000000000000000016712993F000297F7000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/el.po# Kostas Papadimas , 2012. # Dimitris Spingos (Δημήτρης Σπίγγος) , 2013, 2014, 2015. # Vangelis Skarmoutsos , 2013. # Efstathios Iosifidis , 2013-2019. # msgid "" msgstr "" "Project-Id-Version: gnome-shell.po.master\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues/\n" "POT-Creation-Date: 2024-08-04 14:12+0000\n" "PO-Revision-Date: 2024-08-12 23:47+0300\n" "Last-Translator: Efstathios Iosifidis \n" "Language-Team: Greek, Modern (1453-) \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: Poedit 3.4.4\n" "X-DamnedLies-Scope: partial\n" "X-Poedit-SourceCharset: utf-8\n" "X-Project-Style: gnome\n" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "Εκκινητές" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate pinned app 1" msgstr "Ενεργοποίηση καρφιτσωμένης εφαρμογής 1" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate pinned app 2" msgstr "Ενεργοποίηση καρφιτσωμένης εφαρμογής 2" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate pinned app 3" msgstr "Ενεργοποίηση καρφιτσωμένης εφαρμογής 3" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate pinned app 4" msgstr "Ενεργοποίηση καρφιτσωμένης εφαρμογής 4" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate pinned app 5" msgstr "Ενεργοποίηση καρφιτσωμένης εφαρμογής 5" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate pinned app 6" msgstr "Ενεργοποίηση καρφιτσωμένης εφαρμογής 6" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate pinned app 7" msgstr "Ενεργοποίηση καρφιτσωμένης εφαρμογής 7" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate pinned app 8" msgstr "Ενεργοποίηση καρφιτσωμένης εφαρμογής 8" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate pinned app 9" msgstr "Ενεργοποίηση καρφιτσωμένης εφαρμογής 9" #: data/50-gnome-shell-launchers.xml:46 msgid "Open new window of pinned app 1" msgstr "Άνοιγμα νέου παραθύρου της καρφιτσωμένης εφαρμογής 1" #: data/50-gnome-shell-launchers.xml:50 msgid "Open new window of pinned app 2" msgstr "Άνοιγμα νέου παραθύρου της καρφιτσωμένης εφαρμογής 2" #: data/50-gnome-shell-launchers.xml:54 msgid "Open new window of pinned app 3" msgstr "Άνοιγμα νέου παραθύρου της καρφιτσωμένης εφαρμογής 3" #: data/50-gnome-shell-launchers.xml:58 msgid "Open new window of pinned app 4" msgstr "Άνοιγμα νέου παραθύρου της καρφιτσωμένης εφαρμογής 4" #: data/50-gnome-shell-launchers.xml:62 msgid "Open new window of pinned app 5" msgstr "Άνοιγμα νέου παραθύρου της καρφιτσωμένης εφαρμογής 5" #: data/50-gnome-shell-launchers.xml:66 msgid "Open new window of pinned app 6" msgstr "Άνοιγμα νέου παραθύρου της καρφιτσωμένης εφαρμογής 6" #: data/50-gnome-shell-launchers.xml:70 msgid "Open new window of pinned app 7" msgstr "Άνοιγμα νέου παραθύρου της καρφιτσωμένης εφαρμογής 7" #: data/50-gnome-shell-launchers.xml:74 msgid "Open new window of pinned app 8" msgstr "Άνοιγμα νέου παραθύρου της καρφιτσωμένης εφαρμογής 8" #: data/50-gnome-shell-launchers.xml:78 msgid "Open new window of pinned app 9" msgstr "Άνοιγμα νέου παραθύρου της καρφιτσωμένης εφαρμογής 9" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2276 msgid "Screenshots" msgstr "Στιγμιότυπα οθόνης" #: data/50-gnome-shell-screenshots.xml:9 #: data/org.gnome.shell.gschema.xml.in:287 msgid "Take a screenshot interactively" msgstr "Λήψη στιγμιότυπου οθόνης διαδραστικά" #: data/50-gnome-shell-screenshots.xml:12 #: data/org.gnome.shell.gschema.xml.in:299 msgid "Take a screenshot" msgstr "Λήψη στιγμιότυπου οθόνης" #: data/50-gnome-shell-screenshots.xml:15 #: data/org.gnome.shell.gschema.xml.in:295 msgid "Take a screenshot of a window" msgstr "Λήψη στιγμιότυπου παραθύρου" #: data/50-gnome-shell-screenshots.xml:18 #: data/org.gnome.shell.gschema.xml.in:291 msgid "Record a screencast interactively" msgstr "Καταγραφή ενός βίντεο οθόνης διαδραστικά" #: data/50-gnome-shell-system.xml:6 js/ui/messageTray.js:1300 msgid "System" msgstr "Σύστημα" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "Εμφάνιση της λίστας ειδοποιήσεων" #: data/50-gnome-shell-system.xml:12 msgid "Open the quick settings menu" msgstr "Άνοιγμα του μενού ρυθμίσεων γρήγορης πρόσβασης" #: data/50-gnome-shell-system.xml:15 msgid "Focus the active notification" msgstr "Εστίαση στην ενεργή ειδοποίηση" #: data/50-gnome-shell-system.xml:18 msgid "Show the overview" msgstr "Εμφάνιση της επισκόπησης" #: data/50-gnome-shell-system.xml:21 msgid "Show all apps" msgstr "Εμφάνιση όλων των εφαρμογών" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "Κέλυφος GNOME" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "Διαχείριση παραθύρων και εκκίνηση εφαρμογών" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" "Ενεργοποίηση εσωτερικών εργαλείων χρήσιμων για τους προγραμματιστές και τους " "δοκιμαστές, με το Alt-F2" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Επιτρέπει την πρόσβαση σε εσωτερικά εργαλεία αποσφαλμάτωσης και " "παρακολούθησης, με τη χρήση του διαλόγου Alt-F2." #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "Τα UUID των επεκτάσεων που θα ενεργοποιηθούν" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "Οι επεκτάσεις του Κελύφους GNOME έχουν μια ιδιότητα UUID. Αυτό το κλειδί " "εμφανίζει τις επεκτάσεις που πρέπει να φορτωθούν. Οποιαδήποτε επέκταση που " "επιθυμεί να φορτωθεί πρέπει να είναι στον κατάλογο. Μπορείτε ακόμη να " "χειρισθείτε αυτόν τον κατάλογο με τις μεθόδους διαύλου δεδομένων " "EnableExtension και DisableExtension στο org.gnome.Shell." #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "Τα UUID των επεκτάσεων για εξαναγκαστική απενεργοποίηση" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" "Οι επεκτάσεις του Κελύφους GNOME έχουν μια ιδιότητα UUID. Αυτό το κλειδί " "εμφανίζει τις επεκτάσεις που πρέπει να απενεργοποιηθούν, ακόμα και αν " "φορτωθεί ως μέρος της τρέχουσας λειτουργίας. Μπορείτε επίσης να χειριστείτε " "αυτήν τη λίστα με τις μεθόδους EnableExtension και DisableExtension D-Bus " "στο org.gnome.Shell. Αυτό το κλειδί υπερισχύει της ρύθμισης «enabled-" "extensions»." #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "Απενεργοποίηση επεκτάσεων χρήστη" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" "Απενεργοποίηση όλων των ενεργοποιημένων επεκτάσεων του χρήστη χωρίς να " "επηρεαστεί η ρύθμιση «enabled-extension»." #: data/org.gnome.shell.gschema.xml.in:45 msgid "Allow extension installation" msgstr "Να επιτρέπεται η εγκατάσταση επεκτάσεων" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "Allow users to install extensions in their home folder. If disabled, the " "InstallRemoteExtension D-Bus method will fail, and extensions are only " "loaded from system directories on startup. It does not affect extensions " "that are already loaded, so a change only takes full effect on the next " "login." msgstr "" "Επιτρέψτε στους χρήστες να εγκαθιστούν επεκτάσεις στον προσωπικό φάκελό " "τους. Αν απενεργοποιηθεί, η μέθοδος InstallRemoteExtension D-Bus θα " "αποτύχει, και οι επεκτάσεις φορτώνονται μόνο από τους καταλόγους συστήματος " "κατά την έναρξη. Δεν επηρεάζει τις επεκτάσεις που ήδη έχουν φορτωθεί, έτσι " "μια αλλαγή θα τεθεί σε ισχύ μόνο κατά την επόμενη σύνδεση." #: data/org.gnome.shell.gschema.xml.in:56 msgid "Disables the validation of extension version compatibility" msgstr "Απενεργοποιεί την επικύρωση της συμβατότητας έκδοσης επέκτασης" #: data/org.gnome.shell.gschema.xml.in:57 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "Το Κέλυφος GNOME θα φορτώσει μόνο τις επεκτάσεις που ισχυρίζονται ότι " "υποστηρίξουν την τρέχουσα εκτελούμενη έκδοση. Η ενεργοποίηση αυτής της " "επιλογής θα απενεργοποιήσει αυτόν τον έλεγχο και θα προσπαθήσει να φορτώσει " "όλες τις επεκτάσεις ανεξάρτητα από τις εκδόσεις που ισχυρίζονται ότι " "υποστηρίζουν." #: data/org.gnome.shell.gschema.xml.in:65 msgid "List of desktop file IDs for favorite applications" msgstr "" "Κατάλογος αναγνωριστικών αρχείων επιφάνειας εργασίας για προτιμώμενες " "εφαρμογές" #: data/org.gnome.shell.gschema.xml.in:66 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" "Οι εφαρμογές που αντιστοιχούν σε αυτά τα αναγνωριστικά θα εμφανισθούν στην " "περιοχή αγαπημένων." #: data/org.gnome.shell.gschema.xml.in:73 msgid "History for command (Alt-F2) dialog" msgstr "Ιστορικό του διαλόγου εντολών (Alt-F2)" #. Translators: looking glass is a debugger and inspector tool, see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/docs/looking-glass.md #: data/org.gnome.shell.gschema.xml.in:78 msgid "History for the looking glass dialog" msgstr "Ιστορικό του διαλόγου looking glass" #: data/org.gnome.shell.gschema.xml.in:82 #, fuzzy #| msgid "Always show the “Log out” menu item in the user menu." msgid "Always show the “Log Out” action in the system menu" msgstr "Να εμφανίζεται πάντα το στοιχείο μενού «Αποσύνδεση» στο μενού χρήστη." #: data/org.gnome.shell.gschema.xml.in:83 #, fuzzy #| msgid "" #| "This key overrides the automatic hiding of the “Log out” menu item in " #| "single-user, single-session situations." msgid "" "This key overrides the automatic hiding of the “Log out” action in the " "system menu for logged-in situations where there is a single, local, non-" "system user and only a single available session type (e.g. GNOME on Wayland)." msgstr "" "Αυτό το κλειδί υπερισχύει της αυτόματης απόκρυψης του στοιχείου μενού " "«Αποσύνδεση» σε μεμονωμένο χρήστη, σε καταστάσεις μεμονωμένης συνεδρίας." #: data/org.gnome.shell.gschema.xml.in:92 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "Αν θα θυμάται τον κωδικό πρόσβασης για προσάρτηση κρυπτογραφημένων ή " "απομακρυσμένων συστημάτων αρχείων" #: data/org.gnome.shell.gschema.xml.in:93 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "Το κέλυφος θα ζητήσει έναν κωδικό πρόσβασης όταν προσαρτάται μια " "κρυπτογραφημένη συσκευή ή ένα απομακρυσμένο σύστημα αρχείων. Εάν ο κωδικός " "πρόσβασης μπορεί να αποθηκευθεί για μελλοντική χρήση, θα παρουσιάζεται ένα " "πλαίσιο ελέγχου «Απομνημόνευση κωδικού πρόσβασης». Αυτό το κλειδί ορίζει την " "προεπιλεγμένη κατάσταση του πλαισίου επιλογής." #: data/org.gnome.shell.gschema.xml.in:102 msgid "The last selected non-default power profile" msgstr "Το τελευταία επιλεγμένο μη-προεπιλεγμένο προφίλ ισχύος" #: data/org.gnome.shell.gschema.xml.in:103 msgid "" "Some systems support more than two power profiles. In order to still support " "toggling between two profiles, this key records the last selected non-" "default profile." msgstr "" "Ορισμένα συστήματα υποστηρίζουν παραπάνω από δύο προφίλ ισχύος. Για να " "συνεχίζουν να υποστηρίζουν την εναλλαγή μεταξύ δύο προφίλ, αυτό το κλειδί " "καταγράφει το τελευταία επιλεγμένο μη-προεπιλεγμένο προφίλ ισχύος." #: data/org.gnome.shell.gschema.xml.in:111 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "" "Η τελευταία έκδοση του παραθύρου διαλόγου \"Καλωσορίσατε στο GNOME\" έχει " "προβληθεί για" #: data/org.gnome.shell.gschema.xml.in:112 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can " "be used to effectively disable the dialog." msgstr "" "Αυτό το κλειδί καθορίζει για ποια έκδοση έχει προβληθεί τελευταία το " "παράθυρο διαλόγου \"Καλωσορίσατε στο GNOME\". Μια κενή συμβολοσειρά " "αντιπροσωπεύει την παλαιότερη δυνατή έκδοση, και ένας μεγάλος αριθμός θα " "αντιπροσωπεύει εκδόσεις που ακόμα δεν υπάρχουν. Αυτός ο μεγάλος αριθμός " "μπορεί να χρησιμοποιηθεί ουσιαστικά για να απενεργοποιηθεί το παράθυρο " "διαλόγου." #: data/org.gnome.shell.gschema.xml.in:145 msgid "Layout of the app picker" msgstr "Διάταξη του επιλογέα εφαρμογών" #: data/org.gnome.shell.gschema.xml.in:146 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" msgstr "" "Διάταξη του επιλογέα εφαρμογών. Κάθε καταχώρηση στον πίνακα είναι μια " "σελίδα. Οι σελίδες αποθηκεύονται με τη σειρά που εμφανίζονται στο Κέλυφος " "GNOME. Κάθε σελίδα περιλαμβάνει ένα ζεύγος “application id” → 'data'. Μέχρι " "τώρα, οι ακόλουθες τιμές αποθηκεύονται ως 'data': • “position”: η θέση του " "εικονιδίου εφαρμογής στη σελίδα" #: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:172 msgid "Keybinding to shift between overview states" msgstr "Συνδυασμός πλήκτρων για εναλλαγή μεταξύ καταστάσεων επισκόπησης" #: data/org.gnome.shell.gschema.xml.in:166 msgid "Keybinding to shift between session, window picker and app grid" msgstr "" "Συνδυασμός πλήκτρων για εναλλαγή μεταξύ συνεδρίας, επιλογέα παραθύρου και " "πλέγματος εφαρμογών" #: data/org.gnome.shell.gschema.xml.in:173 msgid "Keybinding to shift between app grid, window picker and session" msgstr "" "Συνδυασμός πλήκτρων για εναλλαγή μεταξύ πλέγματος εφαρμογών, επιλογέα " "παραθύρου και συνεδρίας" #: data/org.gnome.shell.gschema.xml.in:179 msgid "Keybinding to open the “Show Applications” view" msgstr "Συνδυασμός πλήκτρων για το άνοιγμα της προβολής «Εμφάνιση εφαρμογών»" #: data/org.gnome.shell.gschema.xml.in:180 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "" "Συνδυασμός πλήκτρων για το άνοιγμα της προβολής «Εμφάνιση εφαρμογών» της " "επισκόπησης δραστηριοτήτων." #: data/org.gnome.shell.gschema.xml.in:187 msgid "Keybinding to open the overview" msgstr "Συνδυασμός πλήκτρων για το άνοιγμα της επισκόπησης" #: data/org.gnome.shell.gschema.xml.in:188 msgid "Keybinding to open the Activities Overview." msgstr "Συνδυασμός πλήκτρων για το άνοιγμα της επισκόπησης Δραστηριοτήτων." #: data/org.gnome.shell.gschema.xml.in:194 msgid "Keybinding to toggle the visibility of the notification list" msgstr "Συνδυασμός πλήκτρων για εναλλαγή ορατότητας της λίστας ειδοποιήσεων" #: data/org.gnome.shell.gschema.xml.in:195 msgid "Keybinding to toggle the visibility of the notification list." msgstr "Συνδυασμός πλήκτρων για εναλλαγή ορατότητας της λίστας ειδοποιήσεων." #: data/org.gnome.shell.gschema.xml.in:201 msgid "Keybinding to toggle the quick settings menu" msgstr "" "Συντόμευση πληκτρολογίου για εναλλαγή του μενού ρυθμίσεων γρήγορης πρόσβασης" #: data/org.gnome.shell.gschema.xml.in:202 msgid "Keybinding to toggle the quick settings menu." msgstr "" "Συντόμευση πληκτρολογίου για εναλλαγή του μενού ρυθμίσεων γρήγορης πρόσβασης." #: data/org.gnome.shell.gschema.xml.in:208 msgid "Keybinding to focus the active notification" msgstr "Συνδυασμός πλήκτρων για εστίαση της ενεργής ειδοποίησης" #: data/org.gnome.shell.gschema.xml.in:209 msgid "Keybinding to focus the active notification." msgstr "Συνδυασμός πλήκτρων για εστίαση της ενεργής ειδοποίησης." #: data/org.gnome.shell.gschema.xml.in:215 msgid "Switch to application 1" msgstr "Εναλλαγή στην εφαρμογή 1" #: data/org.gnome.shell.gschema.xml.in:219 msgid "Switch to application 2" msgstr "Εναλλαγή στην εφαρμογή 2" #: data/org.gnome.shell.gschema.xml.in:223 msgid "Switch to application 3" msgstr "Εναλλαγή στην εφαρμογή 3" #: data/org.gnome.shell.gschema.xml.in:227 msgid "Switch to application 4" msgstr "Εναλλαγή στην εφαρμογή 4" #: data/org.gnome.shell.gschema.xml.in:231 msgid "Switch to application 5" msgstr "Εναλλαγή στην εφαρμογή 5" #: data/org.gnome.shell.gschema.xml.in:235 msgid "Switch to application 6" msgstr "Εναλλαγή στην εφαρμογή 6" #: data/org.gnome.shell.gschema.xml.in:239 msgid "Switch to application 7" msgstr "Εναλλαγή στην εφαρμογή 7" #: data/org.gnome.shell.gschema.xml.in:243 msgid "Switch to application 8" msgstr "Εναλλαγή στην εφαρμογή 8" #: data/org.gnome.shell.gschema.xml.in:247 msgid "Switch to application 9" msgstr "Εναλλαγή στην εφαρμογή 9" #: data/org.gnome.shell.gschema.xml.in:251 #, fuzzy #| msgid "Switch to application 1" msgid "Open a new instance of application 1" msgstr "Εναλλαγή στην εφαρμογή 1" #: data/org.gnome.shell.gschema.xml.in:255 #, fuzzy #| msgid "Switch to application 2" msgid "Open a new instance of application 2" msgstr "Εναλλαγή στην εφαρμογή 2" #: data/org.gnome.shell.gschema.xml.in:259 #, fuzzy #| msgid "Switch to application 3" msgid "Open a new instance of application 3" msgstr "Εναλλαγή στην εφαρμογή 3" #: data/org.gnome.shell.gschema.xml.in:263 #, fuzzy #| msgid "Switch to application 4" msgid "Open a new instance of application 4" msgstr "Εναλλαγή στην εφαρμογή 4" #: data/org.gnome.shell.gschema.xml.in:267 #, fuzzy #| msgid "Switch to application 5" msgid "Open a new instance of application 5" msgstr "Εναλλαγή στην εφαρμογή 5" #: data/org.gnome.shell.gschema.xml.in:271 #, fuzzy #| msgid "Switch to application 6" msgid "Open a new instance of application 6" msgstr "Εναλλαγή στην εφαρμογή 6" #: data/org.gnome.shell.gschema.xml.in:275 #, fuzzy #| msgid "Switch to application 7" msgid "Open a new instance of application 7" msgstr "Εναλλαγή στην εφαρμογή 7" #: data/org.gnome.shell.gschema.xml.in:279 #, fuzzy #| msgid "Switch to application 8" msgid "Open a new instance of application 8" msgstr "Εναλλαγή στην εφαρμογή 8" #: data/org.gnome.shell.gschema.xml.in:283 #, fuzzy #| msgid "Switch to application 9" msgid "Open a new instance of application 9" msgstr "Εναλλαγή στην εφαρμογή 9" #: data/org.gnome.shell.gschema.xml.in:308 #: data/org.gnome.shell.gschema.xml.in:335 msgid "Limit switcher to current workspace." msgstr "Περιορισμός εναλλαγής παραθύρων στον τρέχοντα χώρο εργασίας." #: data/org.gnome.shell.gschema.xml.in:309 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "Αν είναι αληθές, μόνο εφαρμογές που έχουν παράθυρα στον τρέχοντα χώρο " "εργασίας εμφανίζονται κατά την εναλλαγή παραθύρων. Αλλιώς, θα " "περιλαμβάνονται όλες οι εφαρμογές." #: data/org.gnome.shell.gschema.xml.in:326 msgid "The application icon mode." msgstr "Η λειτουργία εικονιδίου εφαρμογής." #: data/org.gnome.shell.gschema.xml.in:327 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-only” " "(shows only the application icon) or “both”." msgstr "" "Διαμορφώνει πώς θα εμφανίζονται τα παράθυρα κατά την εναλλαγή των παραθύρων. " "Έγκυρες ρυθμίσεις είναι «thumbnail-only» (εμφανίζει μια μικρογραφία του " "παραθύρου), «app-icon-only» (εμφανίζει μόνο το εικονίδιο της εφαρμογής) ή " "«both» - και τα δύο." #: data/org.gnome.shell.gschema.xml.in:336 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "Αν είναι αληθές, μόνο παράθυρα του τρέχοντα χώρου εργασίας εμφανίζονται κατά " "την εναλλαγή παραθύρων. Αλλιώς, θα περιλαμβάνονται όλα τα παράθυρα." #: data/org.gnome.shell.gschema.xml.in:346 msgid "Locations" msgstr "Τοποθεσίες" #: data/org.gnome.shell.gschema.xml.in:347 msgid "The locations to show in world clocks" msgstr "Οι τοποθεσίες που θα εμφανίζονται στα παγκόσμια ρολόγια" #: data/org.gnome.shell.gschema.xml.in:357 msgid "Automatic location" msgstr "Αυτόματη τοποθεσία" #: data/org.gnome.shell.gschema.xml.in:358 msgid "Whether to fetch the current location or not" msgstr "Εάν θα γίνεται λήψη της τρέχουσας τοποθεσίας ή όχι" #: data/org.gnome.shell.gschema.xml.in:365 msgid "Location" msgstr "Τοποθεσία" #: data/org.gnome.shell.gschema.xml.in:366 msgid "The location for which to show a forecast" msgstr "Η τοποθεσία για την οποία θα εμφανιστεί μια πρόβλεψη καιρού" #. Keep in sync with subprojects/extensions-app #: data/org.gnome.Shell.Extensions.desktop.in.in:5 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/data/ui/extensions-window.ui:57 msgid "Extensions" msgstr "Επεκτάσεις" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "Σύνδεση δικτύου" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:275 msgid "Something’s gone wrong" msgstr "Κάτι πήγε στραβά" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" "Λυπούμαστε πολύ, αλλά παρουσιάστηκε πρόβλημα: οι ρυθμίσεις για αυτήν την " "επέκταση δεν είναι δυνατό να εμφανιστούν. Σας συνιστούμε να αναφέρετε το " "ζήτημα στους συγγραφείς επέκτασης." #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "Τεχνικές λεπτομέρειες" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "Ιστοσελίδα" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 msgid "Visit extension homepage" msgstr "Επισκεφθείτε την ιστοσελίδα της επέκτασης" #: js/gdm/authPrompt.js:153 js/gdm/loginDialog.js:466 #: js/ui/audioDeviceSelection.js:66 js/ui/components/networkAgent.js:115 #: js/ui/components/polkitAgent.js:146 js/ui/endSessionDialog.js:438 #: js/ui/extensionDownloader.js:278 js/ui/shellMountOperation.js:384 #: js/ui/shellMountOperation.js:394 msgid "Cancel" msgstr "Ακύρωση" #: js/gdm/authPrompt.js:319 js/ui/components/networkAgent.js:215 #: js/ui/components/networkAgent.js:235 js/ui/components/networkAgent.js:267 #: js/ui/components/networkAgent.js:300 js/ui/components/networkAgent.js:339 #: js/ui/components/networkAgent.js:352 js/ui/components/polkitAgent.js:288 #: js/ui/shellMountOperation.js:334 msgid "Password" msgstr "Κωδικός πρόσβασης" #: js/gdm/loginDialog.js:327 msgid "Choose Session" msgstr "Επιλογή συνεδρίας" #. Translators: is running for #: js/gdm/loginDialog.js:424 #, javascript-format msgid "" "Remote login is not possible because a remote session is already running for " "%s. To login remotely, you must log out from the remote session or force " "stop it." msgstr "" "Η απομακρυσμένη σύνδεση δεν είναι δυνατή επειδή μια απομακρυσμένη συνεδρία " "είναι ήδη ανοιχτή για %s. Για να συνδεθείτε απομακρυσμένα, πρέπει να " "αποσυνδεθείτε από την απομακρυσμένη συνεδρία ή να τη διακόψετε βιαίως." #. Translators: is running for #: js/gdm/loginDialog.js:427 #, javascript-format msgid "" "Login is not possible because a remote session is already running for %s. To " "login, you must log out from the remote session or force stop it." msgstr "" "Η σύνδεση δεν είναι δυνατή επειδή μια απομακρυσμένη συνεδρία είναι ήδη " "ανοιχτή για %s. Για να συνδεθείτε, πρέπει να αποσυνδεθείτε από την " "απομακρυσμένη συνεδρία ή να τη διακόψετε βιαίως." #. Translators: is running for #: js/gdm/loginDialog.js:430 #, javascript-format msgid "" "Remote login is not possible because a local session is already running for " "%s. To login remotely, you must log out from the local session or force stop " "it." msgstr "" "Η απομακρυσμένη σύνδεση δεν είναι δυνατή επειδή μια τοπική συνεδρία είναι " "ήδη ανοιχτή για %s. Για να συνδεθείτε απομακρυσμένα, πρέπει να αποσυνδεθείτε " "από την τοπική συνεδρία ή να τη διακόψετε βιαίως." #. Translators: is running for #: js/gdm/loginDialog.js:433 #, javascript-format msgid "" "Login is not possible because a session is already running for %s. To login, " "you must log out from the session or force stop it." msgstr "" "Η σύνδεση δεν είναι δυνατή επειδή μια συνεδρία είναι ήδη ανοιχτή για %s. Για " "να συνδεθείτε, πρέπει να αποσυνδεθείτε από τη συνεδρία ή να τη διακόψετε " "βιαίως." #: js/gdm/loginDialog.js:442 msgid "Session Already Running" msgstr "Συνεδρία ήδη ανοιχτή" #: js/gdm/loginDialog.js:454 msgid "" "Force stopping will quit any running apps and processes, and could result in " "data loss." msgstr "" "Η βίαιη διακοπή θα κλείσει όποιες εφαρμογές και διεργασίες εκτελούνται, και " "θα μπορούσε να οδηγήσει σε απώλεια δεδομένων." #: js/gdm/loginDialog.js:474 msgid "Force Stop" msgstr "Εξαναγκασμός διακοπής" #: js/gdm/loginDialog.js:542 msgid "Not listed?" msgstr "Δεν είστε στη λίστα;" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:1010 #, javascript-format msgid "(e.g., user or %s)" msgstr "(π.χ, χρήστης ή %s)" #: js/gdm/loginDialog.js:1015 js/ui/components/networkAgent.js:259 #: js/ui/components/networkAgent.js:294 js/ui/components/networkAgent.js:328 msgid "Username" msgstr "Όνομα χρήστη" #: js/gdm/loginDialog.js:1081 msgid "Login Attempt Timed Out" msgstr "Λήξη χρόνου προσπάθειας σύνδεσης" #: js/gdm/loginDialog.js:1082 msgid "Login took too long, please try again" msgstr "Η είσοδος πήρε πολύ χρόνο, προσπαθήστε ξανά" #: js/gdm/loginDialog.js:1427 msgid "Login Window" msgstr "Παράθυρο σύνδεσης" #: js/gdm/util.js:498 msgid "Authentication error" msgstr "Σφάλμα πιστοποίησης" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:729 msgid "(or swipe finger across reader)" msgstr "(ή περάστε το δάκτυλο σας από τον αναγνώστη δακτυλικών αποτυπωμάτων)" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:734 msgid "(or place finger on reader)" msgstr "(ή τοποθετήστε το δάκτυλο σας στον αναγνώστη δακτυλικών αποτυπωμάτων)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:91 msgctxt "search-result" msgid "Power Off" msgstr "Τερματισμός" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:94 msgid "power off;poweroff;shutdown;halt;stop" msgstr "απενεργοποίηση;απενεργοποίηση;τερματισμός;αναστολή;διακοπή" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:99 msgctxt "search-result" msgid "Restart" msgstr "Επανεκκίνηση" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:102 msgid "reboot;restart;" msgstr "επανεκκίνηση;επανεκκίνηση;" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:107 msgctxt "search-result" msgid "Lock Screen" msgstr "Κλείδωμα οθόνης" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:110 msgid "lock screen" msgstr "κλείδωμα οθόνης" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:115 msgctxt "search-result" msgid "Log Out" msgstr "Αποσύνδεση" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:118 msgid "logout;log out;sign off" msgstr "αποσύνδεση;αποσύνδεση;logout;sign off" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:123 msgctxt "search-result" msgid "Suspend" msgstr "Αναστολή" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:126 msgid "suspend;sleep" msgstr "αναστολή;αδράνεια;suspend;sleep" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:131 msgctxt "search-result" msgid "Switch User" msgstr "Αλλαγή χρήστη" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:134 msgid "switch user" msgstr "αλλαγή χρήστη" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:141 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "κλείδωμα προσανατολισμού;ξεκλείδωμα προσανατολισμού;οθόνη;περιστροφή" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:146 msgctxt "search-result" msgid "Take a Screenshot" msgstr "Λήψη στιγμιότυπου οθόνης" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:149 msgid "screenshot;screencast;snip;capture;record" msgstr "στιγμιότυπο οθόνης;βίντεο οθόνης;απόκομμα;καταγραφή;εγγραφή" #: js/misc/systemActions.js:249 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "Ξεκλείδωμα περιστροφής οθόνης" #: js/misc/systemActions.js:250 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "Κλείδωμα περιστροφής οθόνης" #: js/misc/util.js:132 msgid "Command not found" msgstr "Δε βρέθηκε η εντολή" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:172 msgid "Could not parse command:" msgstr "Δεν ήταν δυνατό να γίνει ανάλυση της εντολής:" #: js/misc/util.js:180 #, javascript-format msgid "Execution of “%s” failed:" msgstr "Απέτυχε η εκτέλεση του «%s»:" #: js/misc/dateUtils.js:69 msgid "Just now" msgstr "Μόλις τώρα" #: js/misc/dateUtils.js:72 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d λεπτό πριν" msgstr[1] "%d λεπτά πριν" #: js/misc/dateUtils.js:79 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d ώρα πριν" msgstr[1] "%d ώρες πριν" #: js/misc/dateUtils.js:85 js/ui/dateMenu.js:185 msgid "Yesterday" msgstr "Χθες" #: js/misc/dateUtils.js:88 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d ημέρα πριν" msgstr[1] "%d ημέρες πριν" #: js/misc/dateUtils.js:95 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d εβδομάδα πριν" msgstr[1] "%d εβδομάδες πριν" #: js/misc/dateUtils.js:102 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%d μήνας πριν" msgstr[1] "%d μήνες πριν" #: js/misc/dateUtils.js:108 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "%d χρόνο πριν" msgstr[1] "%d χρόνια πριν" #. Translators: Time in 24h format #: js/misc/dateUtils.js:155 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/dateUtils.js:161 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "Χθες, %H∶%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/dateUtils.js:167 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/dateUtils.js:173 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%B %-d, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/dateUtils.js:179 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%B %-d %Y, %H∶%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/dateUtils.js:184 msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/dateUtils.js:190 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "Χθες %l:%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/dateUtils.js:196 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/dateUtils.js:202 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%B %-d, %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/dateUtils.js:208 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%B %-d %Y, %l∶%M %p" #: js/portalHelper/main.js:98 msgid "Your connection seems to be secure" msgstr "Η σύνδεσή σας φαίνεται ασφαλής" #: js/portalHelper/main.js:104 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "Η σύνδεσή σας σε αυτό το σημείο πρόσβασης δεν είναι ασφαλής. Κωδικοί " "πρόσβασης ή άλλες πληροφορίες που εισάγετε σε αυτή τη σελίδα είναι ορατά από " "τους ανθρώπους που βρίσκονται κοντά σας." #: js/portalHelper/main.js:115 msgid "Hotspot Login" msgstr "Σύνδεση σημείου πρόσβασης" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:51 js/ui/inhibitShortcutsDialog.js:92 msgid "Deny" msgstr "Απόρριψη" #: js/ui/accessDialog.js:52 js/ui/inhibitShortcutsDialog.js:101 msgid "Allow" msgstr "Αποδοχή" #: js/ui/appDisplay.js:1775 msgid "Unnamed Folder" msgstr "Άτιτλος φάκελος" #: js/ui/appFavorites.js:166 #, javascript-format msgid "%s has been pinned to the dash." msgstr "Το %s προστέθηκε στο ταμπλό." #: js/ui/appFavorites.js:199 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "Το %s αφαιρέθηκε από το ταμπλό." #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:51 msgid "Open Windows" msgstr "Άνοιγμα παραθύρων" #: js/ui/appMenu.js:59 msgid "New Window" msgstr "Νέο παράθυρο" #: js/ui/appMenu.js:86 msgid "App Details" msgstr "Εμφάνιση λεπτομερειών" #: js/ui/appMenu.js:102 msgid "Quit" msgstr "Έξοδος" #: js/ui/appMenu.js:162 js/ui/dash.js:250 msgid "Unpin" msgstr "Ξεκαρφίτσωμα" #: js/ui/appMenu.js:163 msgid "Pin to Dash" msgstr "Καρφίτσωμα στο ταμπλό" #: js/ui/appMenu.js:180 msgid "Launch using Integrated Graphics Card" msgstr "Εκκίνηση με χρήση της ενσωματωμένης κάρτας γραφικών" #: js/ui/appMenu.js:181 msgid "Launch using Discrete Graphics Card" msgstr "Εκκίνηση με χρήση της διακριτικής κάρτας γραφικών" #: js/ui/audioDeviceSelection.js:46 msgid "Select Audio Device" msgstr "Επιλογή συσκευής εισόδου ήχου" #: js/ui/audioDeviceSelection.js:61 js/ui/status/volume.js:83 msgid "Sound Settings" msgstr "Ρυθμίσεις ήχου" #: js/ui/audioDeviceSelection.js:74 msgid "Headphones" msgstr "Ακουστικά" #: js/ui/audioDeviceSelection.js:76 msgid "Headset" msgstr "Ακουστικά ανοιχτής συνομιλίας" #: js/ui/audioDeviceSelection.js:78 js/ui/status/volume.js:358 msgid "Microphone" msgstr "Μικρόφωνο" #: js/ui/backgroundMenu.js:15 msgid "Change Background…" msgstr "Αλλαγή παρασκηνίου…" #: js/ui/backgroundMenu.js:17 msgid "Display Settings" msgstr "Ρυθμίσεις οθόνης" #: js/ui/backgroundMenu.js:18 msgid "Settings" msgstr "Ρυθμίσεις" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:39 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:65 msgctxt "grid sunday" msgid "S" msgstr "Κυ" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:67 msgctxt "grid monday" msgid "M" msgstr "Δε" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:69 msgctxt "grid tuesday" msgid "T" msgstr "Τρ" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:71 msgctxt "grid wednesday" msgid "W" msgstr "Τε" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:73 msgctxt "grid thursday" msgid "T" msgstr "Πε" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:75 msgctxt "grid friday" msgid "F" msgstr "Πα" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:77 msgctxt "grid saturday" msgid "S" msgstr "Σα" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:428 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:438 msgid "%OB %Y" msgstr "%OB %Y" #: js/ui/calendar.js:500 msgid "Previous month" msgstr "Προηγούμενος μήνας" #: js/ui/calendar.js:518 msgid "Next month" msgstr "Επόμενος μήνας" #: js/ui/calendar.js:669 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:728 msgid "Week %V" msgstr "Εβδομάδα %V" #: js/ui/calendar.js:920 msgid "No Notifications" msgstr "Καμία ειδοποίηση" #: js/ui/calendar.js:976 msgid "Do Not Disturb" msgstr "Μην ενοχλείτε" #: js/ui/calendar.js:997 msgid "Clear" msgstr "Εκκαθάριση" #: js/ui/calendar.js:1001 msgctxt "action" msgid "Clear all notifications" msgstr "Εκκαθάριση όλων των ειδοποιήσεων" #. Translators: %s is an application name #: js/ui/closeDialog.js:44 #, javascript-format msgid "“%s” is not responding." msgstr "Το «%s» δεν ανταποκρίνεται." #: js/ui/closeDialog.js:45 msgid "" "You may choose to wait a short while for it to continue or force the app to " "quit entirely." msgstr "" "Μπορείτε να επιλέξετε να περιμένετε λίγο για να συνεχίσει ή να αναγκάσετε " "την εφαρμογή να τερματιστεί πλήρως." #: js/ui/closeDialog.js:73 msgid "Force Quit" msgstr "Εξαναγκασμός εξόδου" #: js/ui/closeDialog.js:78 msgid "Wait" msgstr "Αναμονή" #: js/ui/components/automountManager.js:84 msgid "External drive connected" msgstr "Συνδέθηκε εξωτερικός δίσκος" #: js/ui/components/automountManager.js:96 msgid "External drive disconnected" msgstr "Αποσυνδέθηκε εξωτερικός δίσκος" #: js/ui/components/automountManager.js:210 msgid "Unable to unlock volume" msgstr "Αδυναμία ξεκλειδώματος τόμου" #: js/ui/components/automountManager.js:211 msgid "The installed udisks version does not support the PIM setting" msgstr "Η εγκατεστημένη έκδοση udisks δεν υποστηρίζει τη ρύθμιση PIM" #: js/ui/components/autorunManager.js:200 #, javascript-format msgid "Open with %s" msgstr "Άνοιγμα με %s" #: js/ui/components/networkAgent.js:97 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router." msgstr "" "Εναλλακτικά, μπορείτε να συνδεθείτε πιέζοντας το κουμπί «WPS» στο " "δρομολογητή σας." #: js/ui/components/networkAgent.js:109 js/ui/status/bluetooth.js:246 #: js/ui/status/network.js:360 js/ui/status/network.js:444 msgid "Connect" msgstr "Σύνδεση" #: js/ui/components/networkAgent.js:224 msgid "Key" msgstr "Κλειδί" #: js/ui/components/networkAgent.js:275 js/ui/components/networkAgent.js:314 msgid "Private key password" msgstr "Συνθηματικό ιδιωτικού κλειδιού" #: js/ui/components/networkAgent.js:308 msgid "Identity" msgstr "Ταυτότητα" #: js/ui/components/networkAgent.js:334 msgid "Service" msgstr "Υπηρεσία" #: js/ui/components/networkAgent.js:372 js/ui/components/networkAgent.js:408 #: js/ui/components/networkAgent.js:745 js/ui/components/networkAgent.js:766 msgid "Authentication required" msgstr "Απαιτείται πιστοποίηση" #: js/ui/components/networkAgent.js:373 js/ui/components/networkAgent.js:746 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network " "“%s”." msgstr "" "Απαιτούνται κωδικοί πρόσβασης ή κλειδιά κρυπτογράφησης για πρόσβαση στο " "ασύρματο δίκτυο “%s”." #: js/ui/components/networkAgent.js:377 js/ui/components/networkAgent.js:750 msgid "Wired 802.1X authentication" msgstr "Πιστοποίηση ενσύρματου 802.1X" #: js/ui/components/networkAgent.js:380 msgid "Network name" msgstr "Όνομα δικτύου" #: js/ui/components/networkAgent.js:388 js/ui/components/networkAgent.js:754 msgid "DSL authentication" msgstr "Πιστοποίηση DSL" #: js/ui/components/networkAgent.js:395 js/ui/components/networkAgent.js:759 msgid "PIN code required" msgstr "Απαιτείται κωδικός PIN" #: js/ui/components/networkAgent.js:396 js/ui/components/networkAgent.js:760 msgid "PIN code is needed for the mobile broadband device" msgstr "Ο κωδικός PIN απαιτείται για τη συσκευή κινητής ευρυζωνικής σύνδεσης" #: js/ui/components/networkAgent.js:398 msgid "PIN" msgstr "PIN" #: js/ui/components/networkAgent.js:409 js/ui/components/networkAgent.js:751 #: js/ui/components/networkAgent.js:755 js/ui/components/networkAgent.js:767 #: js/ui/components/networkAgent.js:771 #, javascript-format msgid "A password is required to connect to “%s”." msgstr "Απαιτείται κωδικός πρόσβασης για σύνδεση στο «%s»." #: js/ui/components/networkAgent.js:770 msgid "VPN password" msgstr "Συνθηματικό VPN" #: js/ui/components/polkitAgent.js:46 msgid "Authentication Required" msgstr "Απαιτείται πιστοποίηση" #: js/ui/components/polkitAgent.js:86 msgid "Administrator" msgstr "Διαχειριστής" #: js/ui/components/polkitAgent.js:151 msgid "Authenticate" msgstr "Πιστοποίηση" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:265 js/ui/shellMountOperation.js:417 msgid "Sorry, that didn’t work. Please try again." msgstr "Συγγνώμη, αυτό δεν λειτούργησε. Παρακαλούμε προσπαθήστε ξανά." #: js/ui/ctrlAltTab.js:25 js/ui/overviewControls.js:418 msgid "Windows" msgstr "Παράθυρα" #: js/ui/dash.js:206 js/ui/dash.js:252 msgid "Show Apps" msgstr "Εμφάνιση εφαρμογών" #. Translators: this is the name of the dock/favorites area on #. the bottom of the overview #: js/ui/dash.js:410 msgid "Dash" msgstr "Ταμπλό" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:101 msgid "%B %-d %Y" msgstr "%B %-d %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:108 msgid "%A %B %e %Y" msgstr "%A %e %B %Y" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:174 msgctxt "calendar heading" msgid "%B %-d" msgstr "%B %-d" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:177 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%B %-d %Y" #: js/ui/dateMenu.js:183 msgid "Today" msgstr "Σήμερα" #: js/ui/dateMenu.js:187 msgid "Tomorrow" msgstr "Αύριο" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:218 msgctxt "event list time" msgid "All Day" msgstr "Όλη μέρα" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:240 msgid "%m/%d" msgstr "%d/%m" #: js/ui/dateMenu.js:291 msgid "No Events" msgstr "Κανένα συμβάν" #: js/ui/dateMenu.js:413 msgid "Add world clocks…" msgstr "Προσθήκη παγκόσμιων ρολογιών…" #: js/ui/dateMenu.js:414 msgid "World Clocks" msgstr "Παγκόσμια ρολόγια" #: js/ui/dateMenu.js:704 msgid "Loading…" msgstr "Φορτώνεται…" #: js/ui/dateMenu.js:714 msgid "Go online for weather information" msgstr "Συνδεθείτεγια πληροφορίες καιρού" #: js/ui/dateMenu.js:716 msgid "Weather information is currently unavailable" msgstr "Οι πληροφορίες καιρού είναι προσωρινά μη διαθέσιμες" #: js/ui/dateMenu.js:726 msgid "Weather" msgstr "Καιρός" #: js/ui/dateMenu.js:728 msgid "Select weather location…" msgstr "Επιλέξτε τοποθεσία καιρού…" #: js/ui/endSessionDialog.js:48 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "Αποσύνδεση %s" #: js/ui/endSessionDialog.js:49 msgctxt "title" msgid "Log Out" msgstr "Αποσύνδεση" #: js/ui/endSessionDialog.js:52 #, javascript-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "Ο %s θα αποσυνδεθεί αυτόματα σε %d δευτερόλεπτο." msgstr[1] "Ο %s θα αποσυνδεθεί αυτόματα σε %d δευτερόλεπτα." #: js/ui/endSessionDialog.js:58 #, javascript-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "Θα αποσυνδεθείτε αυτόματα σε %d δευτερόλεπτο." msgstr[1] "Θα αποσυνδεθείτε αυτόματα σε %d δευτερόλεπτα." #: js/ui/endSessionDialog.js:65 msgctxt "button" msgid "Log Out" msgstr "Αποσύνδεση" #: js/ui/endSessionDialog.js:71 js/ui/status/system.js:176 msgctxt "title" msgid "Power Off" msgstr "Τερματισμός" #: js/ui/endSessionDialog.js:72 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Εγκατάσταση ενημερώσεων & τερματισμός" #: js/ui/endSessionDialog.js:75 #, javascript-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "Το σύστημα θα τερματισθεί αυτόματα σε %d δευτερόλεπτο." msgstr[1] "Το σύστημα θα τερματισθεί αυτόματα σε %d δευτερόλεπτα." #: js/ui/endSessionDialog.js:79 js/ui/endSessionDialog.js:98 msgctxt "checkbox" msgid "Install pending software updates" msgstr "Εγκατάσταση εκκρεμών ενημερώσεων λογισμικού" #: js/ui/endSessionDialog.js:83 msgctxt "button" msgid "Power Off" msgstr "Τερματισμός" #: js/ui/endSessionDialog.js:90 msgctxt "title" msgid "Restart" msgstr "Επανεκκίνηση" #: js/ui/endSessionDialog.js:91 msgctxt "title" msgid "Install Updates & Restart" msgstr "Εγκατάσταση ενημερώσεων & επανεκκίνηση" #: js/ui/endSessionDialog.js:94 #, javascript-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "Το σύστημα θα επανεκκινήσει αυτόματα σε %d δευτερόλεπτο." msgstr[1] "Το σύστημα θα επανεκκινήσει αυτόματα σε %d δευτερόλεπτα." #: js/ui/endSessionDialog.js:102 msgctxt "button" msgid "Restart" msgstr "Επανεκκίνηση" #: js/ui/endSessionDialog.js:110 msgctxt "title" msgid "Restart & Install Updates" msgstr "Επανεκκίνηση & εγκατάσταση ενημερώσεων" #: js/ui/endSessionDialog.js:113 #, javascript-format msgid "The system will automatically restart and install updates in %d second." msgid_plural "" "The system will automatically restart and install updates in %d seconds." msgstr[0] "" "Το σύστημα θα επανεκκινήσει αυτόματα και θα εγκαταστήσει ενημερώσεις σε %d " "δευτερόλεπτο." msgstr[1] "" "Το σύστημα θα επανεκκινήσει αυτόματα και θα εγκαταστήσει ενημερώσεις σε %d " "δευτερόλεπτα." #: js/ui/endSessionDialog.js:120 js/ui/endSessionDialog.js:141 msgctxt "button" msgid "Restart & Install" msgstr "Επανεκκίνηση & εγκατάσταση" #: js/ui/endSessionDialog.js:122 msgctxt "button" msgid "Install & Power Off" msgstr "Εγκατάσταση & τερματισμός" #: js/ui/endSessionDialog.js:123 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Τερματισμός μετά την εγκατάσταση ενημερώσεων" #: js/ui/endSessionDialog.js:130 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "Επανεκκίνηση & εγκατάσταση ενημερώσεων" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:135 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "Το %s %s θα εγκατασταθεί μετά την επανεκκίνηση. Η διαδικασία αναβάθμισης " "μπορεί να πάρει αρκετή ώρα: σιγουρευτείτε ότι έχετε αντίγραφα ασφαλείας και " "πως ο υπολογιστής σας είναι συνδεδεμένος στην παροχή ρεύματος." #: js/ui/endSessionDialog.js:284 msgid "Low battery power: please plug in before installing updates." msgstr "" "Χαμηλό επίπεδο μπαταρίας: Παρακαλούμε συνδεθείτε στην πρίζα πριν την " "εγκατάσταση των ενημερώσεων." #: js/ui/endSessionDialog.js:293 msgid "Some applications are busy or have unsaved work" msgstr "" "Κάποιες εφαρμογές είναι απασχολημένες ή έχουν δεδομένα που δεν αποθηκεύτηκαν" #: js/ui/endSessionDialog.js:298 msgid "Other users are logged in" msgstr "Είναι συνδεδεμένοι άλλοι χρήστες" #: js/ui/endSessionDialog.js:468 msgctxt "button" msgid "Boot Options" msgstr "Ρυθμήσεις Εκκίνησης" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:673 #, javascript-format msgid "%s (remote)" msgstr "%s (απομακρυσμένο)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:676 #, javascript-format msgid "%s (console)" msgstr "%s (κονσόλα)" #: js/ui/extensionDownloader.js:282 msgid "Install" msgstr "Εγκατάσταση" #: js/ui/extensionDownloader.js:288 msgid "Install Extension" msgstr "Εγκατάσταση επέκτασης" #: js/ui/extensionDownloader.js:289 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "Λήψη και εγκατάσταση του «%s» από το extensions.gnome.org;" #: js/ui/extensionSystem.js:354 msgid "Extension Updates Available" msgstr "Διαθέσιμες ενημερώσεις επεκτάσεων" #: js/ui/extensionSystem.js:355 msgid "Extension updates are ready to be installed." msgstr "Οι ενημερώσεις των επεκτάσεων είναι έτοιμες προς εγκατάσταση." #: js/ui/inhibitShortcutsDialog.js:70 msgid "Allow inhibiting shortcuts" msgstr "Να επιτρέπεται η αναστολή των συντομεύσεων" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:73 #, javascript-format msgid "The app %s wants to inhibit shortcuts" msgstr "Η εφαρμογή %s θέλει να αναστείλει τις συντομεύσεις" #: js/ui/inhibitShortcutsDialog.js:74 msgid "An app wants to inhibit shortcuts" msgstr "Μια εφαρμογή θέλει να αναστείλει τις συντομεύσεις" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:81 #, javascript-format msgid "You can restore shortcuts by pressing %s." msgstr "Μπορείτε να επαναφέρετε τις συντομεύσεις πιέζοντας το %s." #: js/ui/kbdA11yDialog.js:34 msgid "Slow Keys Turned On" msgstr "Τα Αργά Πλήκτρα ενεργοποιήθηκαν" #: js/ui/kbdA11yDialog.js:35 msgid "Slow Keys Turned Off" msgstr "Τα Αργά Πλήκτρα απενεργοποιήθηκαν" #: js/ui/kbdA11yDialog.js:36 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "Μόλις πατήσατε το πλήκτρο Shift για 8 δευτερόλεπτα. Αυτή είναι η συντόμευση " "για τη λειτουργία Αργά Πλήκτρα, που επηρεάζει τον τρόπο λειτουργίας του " "πληκτρολογίου σας." #: js/ui/kbdA11yDialog.js:42 msgid "Sticky Keys Turned On" msgstr "Κολλώδη πλήκτρα ενεργοποιήθηκαν" #: js/ui/kbdA11yDialog.js:43 msgid "Sticky Keys Turned Off" msgstr "Κολλώδη πλήκτρα απενεργοποιήθηκαν" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "Πατήσατε το πλήκτρο Shift 5 φορές στη σειρά. Αυτή είναι η συντόμευση για τη " "λειτουργία Κολλώδη πλήκτρα, που επηρεάζει τον τρόπο λειτουργίας του " "πληκτρολογίου σας." #: js/ui/kbdA11yDialog.js:47 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" "Πατήσατε 2 πλήκτρα μονομιάς, ή πατήσατε το πλήκτρο Shift 5 φορές στη σειρά . " "Αυτό απενεργοποιεί τη λειτουργία Κολλώδη πλήκτρα, που επηρεάζει τον τρόπο " "λειτουργίας του πληκτρολογίου σας." #: js/ui/kbdA11yDialog.js:57 msgid "Leave On" msgstr "Άφησε ενεργό" #: js/ui/kbdA11yDialog.js:57 msgid "Turn On" msgstr "Ενεργοποίηση" #: js/ui/kbdA11yDialog.js:67 js/ui/status/network.js:455 msgid "Turn Off" msgstr "Απενεργοποίηση" #: js/ui/kbdA11yDialog.js:67 msgid "Leave Off" msgstr "Άφησε ανενεργό" #: js/ui/keyboard.js:181 js/ui/status/keyboard.js:899 msgid "Keyboard Settings" msgstr "Ρυθμίσεις πληκτρολογίου" #: js/ui/lookingGlass.js:724 msgid "No extensions installed" msgstr "Δεν υπάρχουν εγκατεστημένες επεκτάσεις" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:785 #, javascript-format msgid "%s has not emitted any errors." msgstr "Το %s δεν έδωσε σφάλματα." #: js/ui/lookingGlass.js:791 msgid "Hide Errors" msgstr "Απόκρυψη σφαλμάτων" #: js/ui/lookingGlass.js:795 js/ui/lookingGlass.js:872 msgid "Show Errors" msgstr "Εμφάνιση σφαλμάτων" #: js/ui/lookingGlass.js:804 msgid "Active" msgstr "Ενεργό" #: js/ui/lookingGlass.js:807 msgid "Inactive" msgstr "Ανενεργό" #: js/ui/lookingGlass.js:809 msgid "Error" msgstr "Σφάλμα" #: js/ui/lookingGlass.js:811 msgid "Out of date" msgstr "Μη ενημερωμένο" #: js/ui/lookingGlass.js:813 msgid "Downloading" msgstr "Γίνεται λήψη" #: js/ui/lookingGlass.js:815 msgid "Deactivating" msgstr "Γίνεται απενεργοποίηση" #: js/ui/lookingGlass.js:817 msgid "Activating" msgstr "Γίνεται ενεργοποίηση" #: js/ui/lookingGlass.js:850 msgid "View Source" msgstr "Προβολή πηγής" #: js/ui/lookingGlass.js:861 msgid "Web Page" msgstr "Ιστοσελίδα" #: js/ui/main.js:279 msgid "System was put in unsafe mode" msgstr "Το σύστημα τέθηκε σε ανασφαλή λειτουργία" #: js/ui/main.js:280 msgid "Apps now have unrestricted access" msgstr "Οι εφαρμογές πλέον έχουν απεριόριστη πρόσβαση" #: js/ui/main.js:283 js/ui/overview.js:54 msgid "Undo" msgstr "Αναίρεση" #: js/ui/main.js:340 msgid "Logged in as a privileged user" msgstr "Συνδεθήκατε ως προνομιούχος χρήστης" #: js/ui/main.js:341 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" "Η εκτέλεση μιας περιόδου σύνδεσης ως προνομιούχου χρήστη θα πρέπει να " "αποφεύγεται για λόγους ασφαλείας. Εάν είναι δυνατόν, θα πρέπει να συνδεθείτε " "ως κανονικός χρήστης." #: js/ui/main.js:389 msgid "Screen Lock disabled" msgstr "Το κλείδωμα οθόνης απενεργοποιήθηκε" #: js/ui/main.js:390 msgid "Screen Locking requires the GNOME display manager." msgstr "Το κλείδωμα οθόνης απαιτεί τον διαχειριστή οθόνης του GNOME." #. Translators: this is the string displayed in the header when a message #. source doesn't have a name #: js/ui/messageList.js:400 msgid "Unknown App" msgstr "Άγνωστη εφαρμογή" #: js/ui/messageTray.js:328 js/ui/messageTray.js:330 #, fuzzy #| msgid "Notifications" msgid "Notification sound" msgstr "Ειδοποιήσεις" #: js/ui/mpris.js:198 msgid "Unknown artist" msgstr "Άγνωστος καλλιτέχνης" #: js/ui/mpris.js:208 msgid "Unknown title" msgstr "Άγνωστος τίτλος" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:342 msgid "Type to search" msgstr "Πληκτρολογήστε για αναζήτηση" #: js/ui/overviewControls.js:406 msgid "Apps" msgstr "Εφαρμογές" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:67 msgid "Overview" msgstr "Επισκόπηση" #: js/ui/padOsd.js:100 msgid "New shortcut…" msgstr "Νέα συντόμευση…" #: js/ui/padOsd.js:153 msgid "App defined" msgstr "Ορίστηκε η εφαρμογή" #: js/ui/padOsd.js:154 msgid "Show on-screen help" msgstr "Εμφάνιση βοήθειας στην οθόνη" #: js/ui/padOsd.js:155 msgid "Switch monitor" msgstr "Εναλλαγή οθόνης" #: js/ui/padOsd.js:156 msgid "Assign keystroke" msgstr "Αντιστοίχη πλήκτρων" #: js/ui/padOsd.js:225 msgid "Done" msgstr "Έτοιμο" #: js/ui/padOsd.js:728 msgid "Edit…" msgstr "Επεξεργασία…" #: js/ui/padOsd.js:775 msgid "None" msgstr "Κανένα" #: js/ui/padOsd.js:846 msgid "Press a button to configure" msgstr "Πατήστε ένα κουμπί για ρύθμιση" #: js/ui/padOsd.js:847 msgid "Press Esc to exit" msgstr "Πατήστε Esc για έξοδο" #: js/ui/padOsd.js:850 msgid "Press any key to exit" msgstr "Πατήστε οποιοδήποτε πλήκτρο για έξοδο" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:425 msgid "Activities" msgstr "Δραστηριότητες" #: js/ui/panel.js:506 msgctxt "System menu in the top bar" msgid "System" msgstr "Σύστημα" #: js/ui/panel.js:680 msgid "Top Bar" msgstr "Πάνω μπάρα" #: js/ui/quickSettings.js:187 msgid "Open menu" msgstr "Άνοιγμα μενού" #: js/ui/runDialog.js:63 msgid "Run a Command" msgstr "Εκτέλεση εντολής" #: js/ui/runDialog.js:78 msgid "Press ESC to close" msgstr "Πατήστε Esc για κλείσιμο" #: js/ui/runDialog.js:243 msgid "Restart is not available on Wayland" msgstr "Η επανεκκίνηση δεν είναι διαθέσιμη στο Wayland" #: js/ui/runDialog.js:248 msgid "Restarting…" msgstr "Επανεκκίνηση…" #: js/ui/screenShield.js:235 msgid "GNOME needs to lock the screen" msgstr "Το GNOME χρειάζεται να κλειδώσει την οθόνη" #: js/ui/screenShield.js:276 js/ui/screenShield.js:669 msgid "Unable to lock" msgstr "Αδυναμία κλειδώματος" #: js/ui/screenShield.js:277 js/ui/screenShield.js:670 msgid "Lock was blocked by an app" msgstr "Το κλείδωμα εμποδίσθηκε από μια εφαρμογή" #: js/ui/screenshot.js:1254 msgid "Selection" msgstr "Επιλογή" #: js/ui/screenshot.js:1264 msgid "Area Selection" msgstr "Επιλογή περιοχής" #: js/ui/screenshot.js:1269 msgid "Screen" msgstr "Οθόνη" #: js/ui/screenshot.js:1279 msgid "Screen Selection" msgstr "Επιλογή οθόνης" #: js/ui/screenshot.js:1284 msgid "Window" msgstr "Παράθυρο" #: js/ui/screenshot.js:1294 msgid "Window Selection" msgstr "Επιλογή παραθύρου" #. Translators: entry in the window right click menu. #: js/ui/screenshot.js:1319 js/ui/status/system.js:113 js/ui/windowMenu.js:30 msgid "Take Screenshot" msgstr "Λήψη στιγμιότυπου οθόνης" #: js/ui/screenshot.js:1335 msgid "Record Screen" msgstr "Εγγραφή οθόνης" #. Translators: since this string refers to an action, #. it needs to be phrased as a verb. #: js/ui/screenshot.js:1352 msgid "Capture" msgstr "Αποτύπωση" #: js/ui/screenshot.js:1374 msgid "Show Pointer" msgstr "Εμφάνιση δρομέα" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1998 msgid "Screencasts" msgstr "Βίντεο οθόνης" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast from 07-17-2013 10:00:46 PM" #: js/ui/screenshot.js:2003 #, fuzzy, no-c-format #| msgid "Screencast from %d %t.webm" msgid "Screencast from %d %t" msgstr "Βίντεο οθόνης από %d %t.webm" #. Translators: notification title. #: js/ui/screenshot.js:2049 msgid "Screencast recorded" msgstr "Καταγράφηκε βίντεο οθόνης" #. Translators: notification title. #: js/ui/screenshot.js:2062 #, fuzzy #| msgid "Screencast recorded" msgid "Screencast failed to start" msgstr "Καταγράφηκε βίντεο οθόνης" #. Translators: notification title. #: js/ui/screenshot.js:2068 #, fuzzy #| msgid "Screencast ended unexpectedly" msgid "Screencast ended: Out of disk space" msgstr "Η εγγραφή οθόνης τερματίστηκε απροσδόκητα" #. We can encourage user to try again on service crashes since the #. recorder will auto-blocklist the pipeline that crashed. #. Translators: notification title. #: js/ui/screenshot.js:2074 #, fuzzy #| msgid "Screencast ended unexpectedly" msgid "Screencast ended unexpectedly, please try again" msgstr "Η εγγραφή οθόνης τερματίστηκε απροσδόκητα" #. Translators: notification title. #: js/ui/screenshot.js:2077 msgid "Screencast ended unexpectedly" msgstr "Η εγγραφή οθόνης τερματίστηκε απροσδόκητα" #. Translators: notification source name. #: js/ui/screenshot.js:2087 js/ui/screenshot.js:2329 msgid "Screenshot" msgstr "Στιγμιότυπο οθόνης" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:2094 msgid "Click here to view the video." msgstr "Κάνετε κλικ εδώ για προβολή του βίντεο." #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:2102 js/ui/screenshot.js:2345 msgid "Show in Files" msgstr "Εμφάνιση στα Αρχεία" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2289 #, javascript-format msgid "Screenshot from %s" msgstr "Στιγμιότυπο οθόνης από %s" #. Translators: notification title. #: js/ui/screenshot.js:2335 msgid "Screenshot captured" msgstr "Καταγράφηκε στιγμιότυπο οθόνης" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2337 msgid "You can paste the image from the clipboard." msgstr "Μπορείτε να επικολλήσετε την εικόνα από το πρόχειρο." #: js/ui/screenshot.js:2393 js/ui/screenshot.js:2557 msgid "Screenshot taken" msgstr "Ελήφθη στιγμιότυπο οθόνης" #: js/ui/search.js:831 msgid "Searching…" msgstr "Αναζήτηση…" #: js/ui/search.js:833 msgid "No results." msgstr "Δε βρέθηκαν αποτελέσματα." #: js/ui/search.js:964 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "%d περισσότερο" msgstr[1] "%d περισσότερες" #: js/ui/searchController.js:89 #: subprojects/extensions-app/data/ui/extensions-window.ui:73 msgid "Search" msgstr "Αναζήτηση" #: js/ui/shellEntry.js:23 msgid "Copy" msgstr "Αντιγραφή" #: js/ui/shellEntry.js:28 msgid "Paste" msgstr "Επικόλληση" #: js/ui/shellEntry.js:80 msgid "Show Text" msgstr "Εμφάνιση κειμένου" #: js/ui/shellEntry.js:82 msgid "Hide Text" msgstr "Απόκρυψη κειμένου" #: js/ui/shellEntry.js:176 msgid "Caps lock is on." msgstr "Τα κεφαλαία είναι ενεργοποιημένα." #: js/ui/shellMountOperation.js:288 msgid "Hidden Volume" msgstr "Κρυφός τόμος" #: js/ui/shellMountOperation.js:291 msgid "Windows System Volume" msgstr "Τομέας συστήματος Windows" #: js/ui/shellMountOperation.js:294 msgid "Uses Keyfiles" msgstr "Χρησιμοποιεί αρχεία κλειδιά" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:302 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead." msgstr "" "Για να ξεκλειδώσετε έναν τόμο που χρησιμοποιεί κλειδιά, χρησιμοποιήστε το " "βοηθητικό εργαλείο %s." #: js/ui/shellMountOperation.js:306 msgid "" "You need an external utility like Disks to unlock a volume that uses " "keyfiles." msgstr "" "Χρειάζεστε ένα εξωτερικό βοηθητικό πρόγραμμα όπως το Δίσκοι για να " "ξεκλειδώσετε έναν τόμο που χρησιμοποιεί αρχεία κλειδιών." #: js/ui/shellMountOperation.js:314 msgid "PIM Number" msgstr "Αριθμός PIM" #: js/ui/shellMountOperation.js:373 msgid "Remember Password" msgstr "Απομνημόνευση συνθηματικού" #: js/ui/shellMountOperation.js:388 msgid "Unlock" msgstr "Ξεκλείδωμα" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:402 #, javascript-format msgid "Open %s" msgstr "Άνοιγμα %s" #: js/ui/shellMountOperation.js:438 msgid "The PIM must be a number or empty." msgstr "Το PIM πρέπει να είναι νούμερο ή κενό." #: js/ui/status/accessibility.js:36 msgid "Accessibility" msgstr "Προσιτότητα" #: js/ui/status/accessibility.js:46 msgid "High Contrast" msgstr "Υψηλή αντίθεση" #: js/ui/status/accessibility.js:49 msgid "Zoom" msgstr "Εστίαση" #: js/ui/status/accessibility.js:56 msgid "Screen Reader" msgstr "Αναγνώστης οθόνης" #: js/ui/status/accessibility.js:60 msgid "Screen Keyboard" msgstr "Πληκτρολόγιο οθόνης" #: js/ui/status/accessibility.js:64 msgid "Visual Alerts" msgstr "Οπτικές ειδοποιήσεις" #: js/ui/status/accessibility.js:68 msgid "Sticky Keys" msgstr "Κολλώδη πλήκτρα" #: js/ui/status/accessibility.js:72 msgid "Slow Keys" msgstr "Αργά πλήκτρα" #: js/ui/status/accessibility.js:76 msgid "Bounce Keys" msgstr "Πλήκτρα αναπήδησης" #: js/ui/status/accessibility.js:80 msgid "Mouse Keys" msgstr "Πλήκτρα ποντικιού" #: js/ui/status/accessibility.js:85 msgid "Accessibility Settings" msgstr "Ρυθμίσεις προσιτότητας" #: js/ui/status/accessibility.js:142 msgid "Large Text" msgstr "Μεγάλο κείμενο" #: js/ui/status/autoRotate.js:14 msgid "Auto Rotate" msgstr "Αυτόματη περιστροφή" #: js/ui/status/backgroundApps.js:156 msgctxt "title" msgid "Background Apps" msgstr "Εφαρμογές φόντου" #: js/ui/status/backgroundApps.js:171 msgid "Apps known to be running without a window" msgstr "Εφαρμογές που είναι γνωστό ότι εκτελούνται χωρίς παράθυρο" #: js/ui/status/backgroundApps.js:182 msgid "App Settings" msgstr "Ρυθμίσεις εφαρμογής" #: js/ui/status/backgroundApps.js:239 msgid "No Background Apps" msgstr "Καμία εφαρμογή στο παρασκήνιο" #: js/ui/status/backgroundApps.js:241 #, javascript-format msgid "%d Background App" msgid_plural "%d Background Apps" msgstr[0] "%d εφαρμογή στο παρασκήνιο" msgstr[1] "%d εφαρμογές στο παρασκήνιο" #: js/ui/status/backlight.js:40 msgid "Keyboard Brightness" msgstr "Φωτεινότητα πληκτρολογίου" #: js/ui/status/backlight.js:80 msgid "Off" msgstr "Εκτός σύνδεσης" #: js/ui/status/backlight.js:81 msgid "Low" msgstr "Χαμηλό" #: js/ui/status/backlight.js:82 msgid "High" msgstr "Υψηλό" #: js/ui/status/backlight.js:148 js/ui/status/keyboard.js:881 msgid "Keyboard" msgstr "Πληκτρολόγιο" #: js/ui/status/bluetooth.js:246 js/ui/status/network.js:360 msgid "Disconnect" msgstr "Αποσύνδεση" #: js/ui/status/bluetooth.js:263 js/ui/status/bluetooth.js:265 msgid "Bluetooth" msgstr "Bluetooth" #: js/ui/status/bluetooth.js:288 js/ui/status/network.js:1900 msgid "Bluetooth Settings" msgstr "Ρυθμίσεις Bluetooth" #: js/ui/status/bluetooth.js:335 msgid "No available or connected devices" msgstr "Δεν υπάρχουν διαθέσιμες ή συνδεδεμένες συσκευές" #: js/ui/status/bluetooth.js:336 msgid "Turn on Bluetooth to connect to devices" msgstr "Ενεργοποιήστε το Bluetooth για να συνδεθείτε σε συσκευές" #. Translators: This is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:390 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "Συνδέθηκε %d" msgstr[1] "Συνδέθηκαν %d" #: js/ui/status/brightness.js:34 msgid "Brightness" msgstr "Φωτεινότητα" #: js/ui/status/darkMode.js:12 msgid "Dark Style" msgstr "Σκούρο θέμα" #: js/ui/status/dwellClick.js:15 msgid "Single Click" msgstr "Μονό κλικ" #: js/ui/status/dwellClick.js:20 msgid "Double Click" msgstr "Διπλό κλικ" #: js/ui/status/dwellClick.js:25 msgid "Drag" msgstr "Σύρσιμο" #: js/ui/status/dwellClick.js:30 msgid "Secondary Click" msgstr "Δευτερεύον κλικ" #: js/ui/status/dwellClick.js:39 msgid "Dwell Click" msgstr "Κράτημα κλικ" #: js/ui/status/keyboard.js:898 msgid "Show Keyboard Layout" msgstr "Εμφάνιση διάταξης πληκτρολογίου" #: js/ui/status/location.js:339 msgid "Allow location access" msgstr "Να επιτρέπεται η πρόσβαση τοποθεσίας" #. Translators: %s is an application name #: js/ui/status/location.js:341 #, javascript-format msgid "The app %s wants to access your location" msgstr "Η εφαρμογή %s θέλει να έχει πρόσβαση στην τοποθεσία σας" #: js/ui/status/location.js:351 msgid "Location access can be changed at any time from the privacy settings." msgstr "" "Η πρόσβαση τοποθεσίες μπορεί να αλλαχτεί οποιαδήποτε στιγμή από τις " "ρυθμίσεις ιδιωτικότητας." #: js/ui/status/location.js:359 msgid "Deny Access" msgstr "Άρνηση πρόσβασης" #: js/ui/status/location.js:364 msgid "Grant Access" msgstr "Παραχώρηση πρόσβασης" #: js/ui/status/network.js:62 msgid "" msgstr "<άγνωστο>" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:354 #, javascript-format msgid "Disconnect %s" msgstr "Αποσύνδεση %s" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:356 #, javascript-format msgid "Connect to %s" msgstr "Σύνδεση %s" #: js/ui/status/network.js:1050 msgid "Secure" msgstr "Ασφαλές" #: js/ui/status/network.js:1050 msgid "Not secure" msgstr "Μη ασφαλές" #: js/ui/status/network.js:1051 #, javascript-format msgid "Signal strength %s%%" msgstr "Ένταση σήματος %s%%" #. translators: The first placeholder is the network name, the second and indication whether it is secure, and the last the signal strength indication #: js/ui/status/network.js:1053 #, javascript-format msgid "%s, %s, %s" msgstr "%s, %s, %s" #. Translators: %s is a network identifier #: js/ui/status/network.js:1155 #, javascript-format msgid "%s Hotspot" msgstr "Σημείο πρόσβασης %s" #: js/ui/status/network.js:1426 #, javascript-format msgid "%d connected" msgid_plural "%d connected" msgstr[0] "Συνδέθηκε %d" msgstr[1] "Συνδέθηκαν %d" #: js/ui/status/network.js:1524 js/ui/status/network.js:1540 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1525 msgid "VPN Settings" msgstr "Ρυθμίσεις VPN" #: js/ui/status/network.js:1785 msgid "Wi–Fi" msgstr "Wi-Fi" #: js/ui/status/network.js:1787 msgid "All Networks" msgstr "Όλα τα δίκτυα" #: js/ui/status/network.js:1884 msgid "Wired Connections" msgstr "Ενσύρματες συνδέσεις" #: js/ui/status/network.js:1885 msgid "Wired Settings" msgstr "Ρυθμίσεις ενσύρματης σύνδεσης" #: js/ui/status/network.js:1899 msgid "Bluetooth Tethers" msgstr "Σύνδεση με Bluetooth" #. Translators: "Tether" from "Bluetooth Tether" #: js/ui/status/network.js:1906 msgid "Tether" msgstr "Σύνδεση" #: js/ui/status/network.js:1919 msgid "Mobile Connections" msgstr "Κινητές συνδέσεις" #: js/ui/status/network.js:1921 msgid "Mobile Broadband Settings" msgstr "Ρυθμίσεις κινητής ευρυζωνικής σύνδεσης" #. Translators: "Mobile" from "Mobile Broadband" #: js/ui/status/network.js:1930 msgid "Mobile" msgstr "Κινητό" #: js/ui/status/network.js:2035 msgid "Connection failed" msgstr "Αποτυχία σύνδεσης" #: js/ui/status/network.js:2036 msgid "Activation of network connection failed" msgstr "Απέτυχε η ενεργοποίηση της σύνδεσης δικτύου" #: js/ui/status/nightLight.js:21 msgid "Night Light" msgstr "Λειτουργία νυχτός" #: js/ui/status/powerProfiles.js:21 msgctxt "Power profile" msgid "Performance" msgstr "Απόδοση" #: js/ui/status/powerProfiles.js:26 msgctxt "Power profile" msgid "Balanced" msgstr "Ισοσταθμισμένα" #: js/ui/status/powerProfiles.js:31 msgctxt "Power profile" msgid "Power Saver" msgstr "Εξοικονόμηση ενέργειας" #: js/ui/status/powerProfiles.js:41 js/ui/status/powerProfiles.js:71 msgid "Power Mode" msgstr "Προφίλ ισχύος" #: js/ui/status/powerProfiles.js:73 msgid "Power Settings" msgstr "Ρυθμίσεις τροφοδοσίας" #: js/ui/status/remoteAccess.js:76 msgid "Stop Screencast" msgstr "Διακοπή καταγραφής βίντεο οθόνης" #: js/ui/status/remoteAccess.js:146 msgid "Stop Screen Sharing" msgstr "Διακοπή κοινής χρήσης οθόνης" #: js/ui/status/rfkill.js:101 msgid "Airplane Mode" msgstr "Λειτουργία πτήσης" #: js/ui/status/system.js:170 msgid "Power Off Menu" msgstr "Μενού τερματισμού" #: js/ui/status/system.js:178 msgid "Suspend" msgstr "Αναστολή" #: js/ui/status/system.js:183 msgid "Restart…" msgstr "Επανεκκίνηση…" #: js/ui/status/system.js:188 msgid "Power Off…" msgstr "Τερματισμός…" #: js/ui/status/system.js:195 #: subprojects/extensions-app/data/ui/extensions-window.ui:124 msgid "Log Out…" msgstr "Αποσύνδεση…" #: js/ui/status/system.js:200 msgid "Switch User…" msgstr "Εναλλαγή χρήστη…" #: js/ui/status/system.js:244 msgctxt "action" msgid "Lock Screen" msgstr "Κλείδωμα οθόνης" #: js/ui/status/thunderbolt.js:310 msgid "Unknown Thunderbolt device" msgstr "Άγνωστη συσκευή Thunderbolt" #: js/ui/status/thunderbolt.js:311 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" "Έχει εντοπιστεί νέα συσκευή ενώ λείπατε. Παρακαλούμε αποσυνδέστε και " "επανασυνδέστε τη συσκευή για να την χρησιμοποιήσετε." #: js/ui/status/thunderbolt.js:314 msgid "Unauthorized Thunderbolt device" msgstr "Μη εξουσιοδοτημένη συσκευή Thunderbolt" #: js/ui/status/thunderbolt.js:315 msgid "" "New device has been detected and needs to be authorized by an administrator." msgstr "Έχει εντοπιστεί νέα συσκευή και πρέπει να εγκριθεί από διαχειριστή." #: js/ui/status/thunderbolt.js:321 msgid "Thunderbolt authorization error" msgstr "Σφάλμα πιστοποίησης Thunderbolt" #: js/ui/status/thunderbolt.js:322 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "Αδυναμία πιστοποίησης της συσκευής Thunderbolt: %s" #: js/ui/status/volume.js:220 msgid "Volume changed" msgstr "Άλλαξε η ένταση" #: js/ui/status/volume.js:233 msgid "Unmute" msgstr "Άρση σίγασης" #: js/ui/status/volume.js:233 msgid "Mute" msgstr "Σίγαση" #: js/ui/status/volume.js:288 msgid "Volume" msgstr "Ένταση" #: js/ui/status/volume.js:304 msgid "Sound Output" msgstr "Έξοδος ήχου" #: js/ui/status/volume.js:376 msgid "Sound Input" msgstr "Είσοδος ήχου" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:22 msgid "Mirror" msgstr "Κατοπτρισμός" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:31 msgid "Join Displays" msgstr "Ένωση οθονών" #. Translators: this is for using only external displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:41 msgid "External Only" msgstr "Μόνο εξωτερικό" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:49 msgid "Built-in Only" msgstr "Μόνο ενσωματωμένο" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:380 msgid "%A %B %-d" msgstr "%A %B %-d" #: js/ui/unlockDialog.js:386 msgid "Swipe up to unlock" msgstr "Σύρετε για ξεκλείδωμα" #: js/ui/unlockDialog.js:387 msgid "Click or press a key to unlock" msgstr "Κάντε κλικ ή πατήστε ένα πλήκτρο για ξεκλείδωμα" #: js/ui/unlockDialog.js:570 msgid "Unlock Window" msgstr "Ξεκλείδωμα παραθύρου" #: js/ui/unlockDialog.js:579 msgid "Log in as another user" msgstr "Σύνδεση ως άλλος χρήστης" #: js/ui/welcomeDialog.js:49 #, javascript-format #| msgid "GNOME Shell" msgid "GNOME %s" msgstr "GNOME %s" #: js/ui/welcomeDialog.js:53 #, javascript-format msgid "Welcome to %s" msgstr "Καλώς ήλθατε στο %s" #: js/ui/welcomeDialog.js:54 msgid "If you want to learn your way around, check out the tour." msgstr "Εάν θέλετε να μάθετε να μάθετε περισσότερα, δοκιμάστε την περιήγηση." #: js/ui/welcomeDialog.js:63 msgid "Skip" msgstr "Παράλειψη" #: js/ui/welcomeDialog.js:68 msgid "Take Tour" msgstr "Κάντε περιήγηση" #: js/ui/windowAttentionHandler.js:20 #, javascript-format msgid "“%s” is ready" msgstr "Το «%s» είναι έτοιμο" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:69 msgid "Keep these display settings?" msgstr "Διατήρηση ρυθμίσεων οθόνης;" #: js/ui/windowManager.js:79 msgid "Revert Settings" msgstr "Επαναφορά ρυθμίσεων" #: js/ui/windowManager.js:84 msgid "Keep Changes" msgstr "Διατήρηση αλλαγών" #: js/ui/windowManager.js:104 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "Οι αλλαγές ρυθμίσεων θα επανέλθουν σε %d δευτερόλεπτο" msgstr[1] "Οι αλλαγές ρυθμίσεων θα επανέλθουν σε %d δευτερόλεπτα" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:496 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:42 msgid "Hide" msgstr "Απόκρυψη" #: js/ui/windowMenu.js:49 msgid "Restore" msgstr "Επαναφορά" #: js/ui/windowMenu.js:53 msgid "Maximize" msgstr "Μεγιστοποίηση" #: js/ui/windowMenu.js:60 msgid "Move" msgstr "Μετακίνηση" #: js/ui/windowMenu.js:80 msgid "Resize" msgstr "Αλλαγή μεγέθους" #: js/ui/windowMenu.js:101 msgid "Move Titlebar Onscreen" msgstr "Μετακίνηση μπάρας τίτλου στην οθόνη" #: js/ui/windowMenu.js:106 msgid "Always on Top" msgstr "Πάντα στην κορυφή" #: js/ui/windowMenu.js:125 msgid "Always on Visible Workspace" msgstr "Πάντα σε ορατό χώρο εργασίας" #: js/ui/windowMenu.js:139 msgid "Move to Workspace Left" msgstr "Μετακίνηση στο χώρο εργασίας αριστερά" #: js/ui/windowMenu.js:145 msgid "Move to Workspace Right" msgstr "Μετακίνηση στο χώρο εργασίας δεξιά" #: js/ui/windowMenu.js:151 msgid "Move to Workspace Up" msgstr "Μετακίνηση στο χώρο εργασίας πάνω" #: js/ui/windowMenu.js:157 msgid "Move to Workspace Down" msgstr "Μετακίνηση στο χώρο εργασίας κάτω" #: js/ui/windowMenu.js:175 msgid "Move to Monitor Up" msgstr "Μετακίνηση στην πάνω οθόνη" #: js/ui/windowMenu.js:184 msgid "Move to Monitor Down" msgstr "Μετακίνηση στην κάτω οθόνη" #: js/ui/windowMenu.js:193 msgid "Move to Monitor Left" msgstr "Μετακίνηση στην αριστερή οθόνη" #: js/ui/windowMenu.js:202 msgid "Move to Monitor Right" msgstr "Μετακίνηση στη δεξιά οθόνη" #: js/ui/windowMenu.js:210 msgid "Close" msgstr "Κλείσιμο" #: src/main.c:529 subprojects/extensions-tool/src/main.c:336 msgid "Print version" msgstr "Εμφάνιση έκδοσης" #: src/main.c:535 msgid "Mode used by GDM for login screen" msgstr "Λειτουργία που χρησιμοποιείται από το GDM για την οθόνη σύνδεσης" #: src/main.c:541 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "" "Χρήση μιας συγκεκριμένης λειτουργίας, π.χ. «gdm» για την οθόνη σύνδεσης" #: src/main.c:547 msgid "List possible modes" msgstr "Λίστα πιθανών λειτουργιών" #: src/main.c:553 msgid "Force animations to be enabled" msgstr "Αναγκαστική ενεργοποίηση κίνησης" #: src/shell-app.c:252 msgctxt "program" msgid "Unknown" msgstr "Άγνωστο" #: src/shell-app.c:503 #, c-format msgid "Failed to launch “%s”" msgstr "Αποτυχία εκκίνησης του «%s»" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match." msgstr "Οι κωδικοί πρόσβασης δεν ταιριάζουν." #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "Ο κωδικός πρόσβασης δεν μπορεί να είναι κενός" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "Το παράθυρο πιστοποίησης έκλεισε από τον χρήστη" #: src/st/st-icon-theme.c:1865 #, c-format msgid "Icon '%s' not present in theme %s" msgstr "Το εικονίδιο '%s' δεν υπάρχει στο θέμα %s" #: src/st/st-icon-theme.c:3454 src/st/st-icon-theme.c:3757 msgid "Failed to load icon" msgstr "Αδυναμία φόρτωσης εικονιδίου" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 msgid "Manage your GNOME Extensions" msgstr "Διαχείριση επεκτάσεων GNOME" #. developer_name tag deprecated with Appstream 1.0 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:19 msgid "The GNOME Project" msgstr "Το έργο GNOME" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:51 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" "Το πρόγραμμα Επεκτάσεις GNOME χειρίζεται την ενημέρωση επεκτάσεων, τη " "ρύθμιση προτιμήσεων και την αφαίρεση ή απενεργοποίηση ανεπιθύμητων " "επεκτάσεων." #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:80 msgid "Main Window" msgstr "Κυρίως παράθυρο" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:84 msgid "Available Updates" msgstr "Διαθέσιμες ενημερώσεις" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:88 #, fuzzy #| msgid "Search" msgid "Search View" msgstr "Αναζήτηση" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "Ρύθμιση επεκτάσεων του GNOME Shell" #: subprojects/extensions-app/js/extensionManager.js:237 #, fuzzy, javascript-format #| msgid "The extension is incompatible with the current GNOME version" msgid "" "The installed version of this extension (%s) is incompatible with the " "current version of GNOME (%s). The extension has been disabled." msgstr "Η επέκταση δεν είναι συμβατή με την τρέχουσα έκδοση GNOME" #: subprojects/extensions-app/js/extensionManager.js:238 #, fuzzy, javascript-format #| msgid "The extension is incompatible with the current GNOME version" msgid "" "The installed version of this extension is incompatible with the current " "version of GNOME (%s). The extension has been disabled." msgstr "Η επέκταση δεν είναι συμβατή με την τρέχουσα έκδοση GNOME" #: subprojects/extensions-app/js/extensionManager.js:242 msgid "" "An error has occurred in this extension. This could cause issues elsewhere " "in the system. It is recommended to turn the extension off until the error " "is resolved." msgstr "" "Ένα σφάλμα συνέβη με αυτή την επέκταση. Αυτό θα μπορούσε να δημιουργήσει " "προβλήματα αλλού στο σύστημα. Συνιστάται να απενεργοποιήσετε την επέκταση " "ωσότου το σφάλμα να επιλυθεί." #. translators: Details for an extension error #: subprojects/extensions-app/js/extensionManager.js:248 msgid "Error details:" msgstr "Λεπτομέρειες σφάλματος:" #: subprojects/extensions-app/js/extensionRow.js:82 #, javascript-format msgid "Version %s" msgstr "Έκδοση %s" #: subprojects/extensions-app/js/extensionsWindow.js:113 #, javascript-format msgid "Remove “%s”?" msgstr "Αφαίρεση «%s»;" #: subprojects/extensions-app/js/extensionsWindow.js:114 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "" "Εάν αφαιρέσετε την επέκταση και θέλετε να την ενεργοποιήσετε ξανά, " "χρειάζεται να πραγματοποιηθεί λήψη εκ νέου" #: subprojects/extensions-app/js/extensionsWindow.js:117 msgid "_Cancel" msgstr "_Ακύρωση" #: subprojects/extensions-app/js/extensionsWindow.js:118 msgid "_Remove" msgstr "_Αφαίρεση" #: subprojects/extensions-app/js/extensionsWindow.js:158 msgid "translator-credits" msgstr "" "Ελληνική μεταφραστική ομάδα GNOME\n" " Ευστάθιος Ιωσηφίδης \n" "\n" "\n" "Για περισσότερες πληροφορίες, επισκεφθείτε τη σελίδα\n" "http://gnome.gr/" #: subprojects/extensions-app/js/extensionsWindow.js:203 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "Η %d επέκταση θα ενημερωθεί στην επόμενη είσοδο." msgstr[1] "Οι %d επεκτάσεις θα ενημερωθούν στην επόμενη είσοδο." #: subprojects/extensions-app/data/ui/extension-row.ui:22 msgid "Error Details" msgstr "Λεπτομέρειες σφάλματος" #: subprojects/extensions-app/data/ui/extension-row.ui:62 msgid "Updates Details" msgstr "Λεπτομέρειες ενημερώσεων" #: subprojects/extensions-app/data/ui/extension-row.ui:72 #, fuzzy #| msgid "%d extension will be updated on next login." #| msgid_plural "%d extensions will be updated on next login." msgid "" "A new version of this extension is ready and will be loaded on next login." msgstr "Η %d επέκταση θα ενημερωθεί στην επόμενη είσοδο." #: subprojects/extensions-app/data/ui/extension-row.ui:104 msgid "Extension Details" msgstr "Λεπτομέρειες επέκτασης" #: subprojects/extensions-app/data/ui/extension-row.ui:192 msgid "_Website" msgstr "_Ιστότοπος" #: subprojects/extensions-app/data/ui/extension-row.ui:219 msgid "_Settings" msgstr "_Ρυθμίσεις" #: subprojects/extensions-app/data/ui/extension-row.ui:246 msgid "_Remove…" msgstr "_Αφαίρεση…" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Keyboard Shortcuts" msgstr "Συντομεύσεις πληκτρολογίου" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "Περί επεκτάσεων" #: subprojects/extensions-app/data/ui/extensions-window.ui:64 msgid "Main Menu" msgstr "Κυρίως μενού" #: subprojects/extensions-app/data/ui/extensions-window.ui:106 msgid "Search extensions" msgstr "Αναζήτηση επεκτάσεων" #: subprojects/extensions-app/data/ui/extensions-window.ui:134 msgid "_Extensions" msgstr "_Επεκτάσεις" #: subprojects/extensions-app/data/ui/extensions-window.ui:139 msgid "More Information" msgstr "Περισσότερες πληροφορίες" #: subprojects/extensions-app/data/ui/extensions-window.ui:151 #, fuzzy #| msgid "" #| "Extensions can cause performance and stability issues. Disable extensions " #| "if you encounter problems with your system." msgid "" "Extensions can cause performance and stability issues. It is recommended to " "disable all extensions if you experience problems with your system." msgstr "" "Οι επεκτάσεις ενδέχεται να προκαλέσουν θέματα απόδοσης και σταθερότητας. " "Απενεργοποιήστε τις επεκτάσεις αν αντιμετωπίσετε προβλήματα με το σύστημά " "σας." #: subprojects/extensions-app/data/ui/extensions-window.ui:178 msgid "User Extensions" msgstr "Επεκτάσεις χρήστη" #: subprojects/extensions-app/data/ui/extensions-window.ui:198 msgid "System Extensions" msgstr "Επεκτάσεις συστήματος" #: subprojects/extensions-app/data/ui/extensions-window.ui:233 msgid "Search Results" msgstr "Αποτελέσματα αναζήτησης" #: subprojects/extensions-app/data/ui/extensions-window.ui:252 msgid "No Results Found" msgstr "Δεν βρέθηκαν αποτελέσματα" #: subprojects/extensions-app/data/ui/extensions-window.ui:253 msgid "Try a different search." msgstr "Επιχειρήστε μια διαφορετική αναζήτηση." #: subprojects/extensions-app/data/ui/extensions-window.ui:264 msgid "No Installed Extensions" msgstr "Καμία εγκατεστημένη επέκταση" #: subprojects/extensions-app/data/ui/extensions-window.ui:265 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" "Για να βρείτε και να εγκαταστήσετε επεκτάσεις, επισκεφθείτε την ιστοσελίδα " "extensions.gnome.org." #: subprojects/extensions-app/data/ui/extensions-window.ui:276 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" "Λυπούμαστε πολύ, αλλά δεν ήταν δυνατή η λήψη της λίστας εγκατεστημένων " "επεκτάσεων. Βεβαιωθείτε ότι έχετε συνδεθεί στο GNOME και προσπαθήστε ξανά." #: subprojects/extensions-app/data/ui/help-overlay.ui:9 msgctxt "shortcut window" msgid "General" msgstr "Γενικά" #: subprojects/extensions-app/data/ui/help-overlay.ui:12 msgctxt "shortcut window" msgid "Open Menu" msgstr "Άνοιγμα μενού" #: subprojects/extensions-app/data/ui/help-overlay.ui:18 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Εναλλαγή αναζήτησης" #: subprojects/extensions-app/data/ui/help-overlay.ui:24 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Εμφάνιση συντομεύσεων" #: subprojects/extensions-app/data/ui/help-overlay.ui:30 msgctxt "shortcut window" msgid "Quit" msgstr "'Εξοδος" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:284 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "Η νέα επέκταση δημιουργήθηκε επιτυχώς την %s.\n" #: subprojects/extensions-tool/src/command-create.c:376 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" "Το όνομα πρέπει να είναι μια πολύ σύντομη (ιδανικά περιγραφική) " "συμβολοσειρά.\n" "Παραδείγματα είναι: %s" #: subprojects/extensions-tool/src/command-create.c:382 #: subprojects/extensions-tool/src/main.c:243 msgid "Name" msgstr "Όνομα" #: subprojects/extensions-tool/src/command-create.c:396 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" "Η περιγραφή είναι μια εξήγηση μιας μόνο φράσης για το τι κάνει η επέκτασή " "σας.\n" "Παραδείγματα είναι: %s" #: subprojects/extensions-tool/src/command-create.c:402 #: subprojects/extensions-tool/src/main.c:246 msgid "Description" msgstr "Περιγραφή" #: subprojects/extensions-tool/src/command-create.c:416 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" "Το UUID είναι ένα παγκόσμιο μοναδικό αναγνωριστικό για την επέκτασή σας.\n" "Αυτό θα πρέπει να έχει τη μορφή μιας διεύθυνσης ηλεκτρονικού ταχυδρομείου " "(clicktofocus@janedoe.example.com)\n" #: subprojects/extensions-tool/src/command-create.c:443 msgid "Choose one of the available templates:\n" msgstr "Επιλέξτε ένα από τα διαθέσιμα πρότυπα:\n" #: subprojects/extensions-tool/src/command-create.c:457 msgid "Template" msgstr "Πρότυπο" #: subprojects/extensions-tool/src/command-create.c:515 msgid "The unique identifier of the new extension" msgstr "Το μοναδικό αναγνωριστικό της νέας επέκτασης" #: subprojects/extensions-tool/src/command-create.c:518 msgid "NAME" msgstr "ΟΝΟΜΑ" #: subprojects/extensions-tool/src/command-create.c:519 msgid "The user-visible name of the new extension" msgstr "Το ορατό από το χρήστη όνομα της νέας επέκτασης" #: subprojects/extensions-tool/src/command-create.c:521 msgid "DESCRIPTION" msgstr "ΠΕΡΙΓΡΑΦΗ" #: subprojects/extensions-tool/src/command-create.c:523 msgid "A short description of what the extension does" msgstr "Μια σύντομη περιγραφή του τι κάνει η επέκταση" #: subprojects/extensions-tool/src/command-create.c:525 #: subprojects/extensions-tool/src/command-pack.c:455 msgid "DOMAIN" msgstr "ΤΟΜΕΑΣ" #: subprojects/extensions-tool/src/command-create.c:527 msgid "The gettext domain used by the extension" msgstr "Ο τομέας gettext που χρησιμοποιείται από την επέκταση" #: subprojects/extensions-tool/src/command-create.c:529 #: subprojects/extensions-tool/src/command-pack.c:448 msgid "SCHEMA" msgstr "ΔΙΑΤΑΞΗ" #: subprojects/extensions-tool/src/command-create.c:531 msgid "The GSettings schema used by the extension" msgstr "Η διάταξη GSettings που χρησιμοποιείται από την επέκταση" #: subprojects/extensions-tool/src/command-create.c:534 msgid "TEMPLATE" msgstr "ΠΡΟΤΥΠΟ" #: subprojects/extensions-tool/src/command-create.c:535 msgid "The template to use for the new extension" msgstr "Το πρότυπο που θα χρησιμοποιηθεί για τη νέα επέκταση" #: subprojects/extensions-tool/src/command-create.c:538 msgid "Include prefs.js template" msgstr "Συμπερίληψη προτύπου prefs.js" #: subprojects/extensions-tool/src/command-create.c:544 msgid "Enter extension information interactively" msgstr "Εισαγάγετε τις πληροφορίες επέκτασης διαδραστικά" #: subprojects/extensions-tool/src/command-create.c:552 msgid "Create a new extension" msgstr "Δημιουργία νέας επέκτασης" #: subprojects/extensions-tool/src/command-create.c:570 #: subprojects/extensions-tool/src/command-list.c:190 msgid "Unknown arguments" msgstr "Άγνωστα ορίσματα" #: subprojects/extensions-tool/src/command-create.c:595 msgid "UUID, name and description are required" msgstr "Απαιτούνται UUID, όνομα και περιγραφή" #: subprojects/extensions-tool/src/command-disable.c:62 #: subprojects/extensions-tool/src/command-enable.c:62 #, c-format msgid "Extension “%s” does not exist\n" msgstr "Η επέκταση «%s» δεν υπάρχει\n" #: subprojects/extensions-tool/src/command-disable.c:98 msgid "Disable an extension" msgstr "Απενεργοποίηση επέκτασης" #: subprojects/extensions-tool/src/command-disable.c:116 #: subprojects/extensions-tool/src/command-enable.c:116 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "Δεν δόθηκε UUID" #: subprojects/extensions-tool/src/command-disable.c:121 #: subprojects/extensions-tool/src/command-enable.c:121 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "Έχουν δοθεί περισσότερα από ένα UUID" #: subprojects/extensions-tool/src/command-enable.c:98 msgid "Enable an extension" msgstr "Ενεργοποίηση επέκτασης" #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:66 #: subprojects/extensions-tool/src/main.c:150 msgid "Failed to connect to GNOME Shell\n" msgstr "Αποτυχία σύνδεσης στο κέλυφος GNOME\n" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:159 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "Η επέκταση «%s» δεν υπάρχει\n" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "Εμφάνιση πληροφοριών επεκτάσεων" #: subprojects/extensions-tool/src/command-install.c:190 msgid "Overwrite an existing extension" msgstr "Αντικατάσταση μιας υπάρχουσας επέκτασης" #: subprojects/extensions-tool/src/command-install.c:192 msgid "EXTENSION_BUNDLE" msgstr "ΔΕΣΜΗ_ΕΠΕΚΤΑΣΗΣ" #: subprojects/extensions-tool/src/command-install.c:201 msgid "Install an extension bundle" msgstr "Εγκατάσταση μιας δέσμης επεκτάσεων" #: subprojects/extensions-tool/src/command-install.c:219 msgid "No extension bundle specified" msgstr "Δεν έχει οριστεί δέσμη επέκτασεων" #: subprojects/extensions-tool/src/command-install.c:225 msgid "More than one extension bundle specified" msgstr "Έχουν καθοριστεί περισσότερες από μία δέσμες επέκτασης" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show user-installed extensions" msgstr "Εμφάνιση εγκατεστημένων επεκτάσεων χρήστη" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show system-installed extensions" msgstr "Εμφάνιση εγκατεστημένων επεκτάσεων συστήματος" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Show enabled extensions" msgstr "Εμφάνιση ενεργοποιημένων επεκτάσεων" #: subprojects/extensions-tool/src/command-list.c:149 msgid "Show disabled extensions" msgstr "Εμφάνιση απενεργοποιημένων επεκτάσεων" #: subprojects/extensions-tool/src/command-list.c:152 #, fuzzy #| msgid "Show extensions with updates" msgid "Show extensions in active state" msgstr "Εμφάνιση επεκτάσεων με ενημερώσεις" #: subprojects/extensions-tool/src/command-list.c:155 #, fuzzy #| msgid "Show extensions with updates" msgid "Show extensions in inactive state" msgstr "Εμφάνιση επεκτάσεων με ενημερώσεις" #: subprojects/extensions-tool/src/command-list.c:158 msgid "Show extensions with preferences" msgstr "Εμφάνιση επεκτάσεων με προτιμήσεις" #: subprojects/extensions-tool/src/command-list.c:161 msgid "Show extensions with updates" msgstr "Εμφάνιση επεκτάσεων με ενημερώσεις" #: subprojects/extensions-tool/src/command-list.c:164 msgid "Print extension details" msgstr "Εμφάνιση λεπτομερειών επέκτασης" #: subprojects/extensions-tool/src/command-list.c:172 msgid "List installed extensions" msgstr "Λίστα εγκατεστημένων επεκτάσεων" #: subprojects/extensions-tool/src/command-pack.c:444 msgid "FILE" msgstr "ΑΡΧΕΙΟ" #: subprojects/extensions-tool/src/command-pack.c:445 msgid "Additional source to include in the bundle" msgstr "Πρόσθετη πηγή για να συμπεριληφθεί στη δέσμη" #: subprojects/extensions-tool/src/command-pack.c:449 msgid "A GSettings schema that should be included" msgstr "Μια διάταξη GSettings που πρέπει να συμπεριληφθεί" #: subprojects/extensions-tool/src/command-pack.c:451 #: subprojects/extensions-tool/src/command-pack.c:462 msgid "DIRECTORY" msgstr "ΚΑΤΑΛΟΓΟΣ" #: subprojects/extensions-tool/src/command-pack.c:453 msgid "The directory where translations are found" msgstr "Ο κατάλογος όπου βρίσκονται οι μεταφράσεις" #: subprojects/extensions-tool/src/command-pack.c:457 msgid "The gettext domain to use for translations" msgstr "Ο τομέας gettext που χρησιμοποιείται για μεταφράσεις" #: subprojects/extensions-tool/src/command-pack.c:460 msgid "Overwrite an existing pack" msgstr "Αντικαταστήστε ενός υπάρχοντος πακέτου" #: subprojects/extensions-tool/src/command-pack.c:464 msgid "The directory where the pack should be created" msgstr "Ο κατάλογος όπου πρέπει να δημιουργηθεί το πακέτο" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "SOURCE_DIRECTORY" msgstr "ΠΗΓΑΙΟΣ_ΚΑΤΑΛΟΓΟΣ" #: subprojects/extensions-tool/src/command-pack.c:475 msgid "Create an extension bundle" msgstr "Δημιουργία μια δέσμης επέκτασης" #: subprojects/extensions-tool/src/command-pack.c:495 msgid "More than one source directory specified" msgstr "Έχουν καθοριστεί περισσότεροι από ένας κατάλογος πηγών" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "Η επέκταση «%s» δεν έχει προτιμήσεις\n" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "Αποτυχία ανοίγματος των προτιμήσεων της επέκτασης “%s”: %s\n" #: subprojects/extensions-tool/src/command-prefs.c:87 msgid "Opens extension preferences" msgstr "Άνοιγμα προτιμήσεων επέκτασης" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "Επαναφορά επέκτασης" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "Αδυναμία απεγκατάστασης επεκτάσεων συστήματος\n" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "Αποτυχία απεγκατάστασης του «%s»\n" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "Απεγκατάσταση επέκτασης" #: subprojects/extensions-tool/src/main.c:76 msgid "Do not print error messages" msgstr "Να μην εμφανίζονται μηνύματα σφαλμάτων" #: subprojects/extensions-tool/src/main.c:249 msgid "Path" msgstr "Διαδρομή" #: subprojects/extensions-tool/src/main.c:252 msgid "URL" msgstr "URL" #: subprojects/extensions-tool/src/main.c:255 msgid "Original author" msgstr "Αρχικός δημιουργός" #: subprojects/extensions-tool/src/main.c:261 #: subprojects/extensions-tool/src/main.c:263 #: subprojects/extensions-tool/src/main.c:265 msgid "Version" msgstr "Έκδοση" #: subprojects/extensions-tool/src/main.c:268 msgid "Enabled" msgstr "Ενεργοποιημένο" #: subprojects/extensions-tool/src/main.c:268 msgid "Yes" msgstr "Ναι" #: subprojects/extensions-tool/src/main.c:268 #, fuzzy #| msgid "None" msgid "No" msgstr "Κανένα" #: subprojects/extensions-tool/src/main.c:271 msgid "State" msgstr "Κατάσταση" #: subprojects/extensions-tool/src/main.c:309 msgid "“version” takes no arguments" msgstr "Η \"έκδοση\" δεν λαμβάνει παραμέτρους" #: subprojects/extensions-tool/src/main.c:311 #: subprojects/extensions-tool/src/main.c:331 msgid "Usage:" msgstr "Χρήση:" #: subprojects/extensions-tool/src/main.c:314 msgid "Print version information and exit." msgstr "Προβολή πληροφοριών έκδοσης και έξοδος." #: subprojects/extensions-tool/src/main.c:329 #: subprojects/extensions-tool/src/main.c:332 msgid "COMMAND" msgstr "ΕΝΤΟΛΗ" #: subprojects/extensions-tool/src/main.c:332 msgid "[ARGS…]" msgstr "[ARGS…]" #: subprojects/extensions-tool/src/main.c:334 msgid "Commands:" msgstr "Εντολές:" #: subprojects/extensions-tool/src/main.c:335 msgid "Print help" msgstr "Εμφάνιση βοήθειας" #: subprojects/extensions-tool/src/main.c:337 msgid "Enable extension" msgstr "Ενεργοποίηση επέκτασης" #: subprojects/extensions-tool/src/main.c:338 msgid "Disable extension" msgstr "Απενεργοποίηση επέκτασης" #: subprojects/extensions-tool/src/main.c:339 msgid "Reset extension" msgstr "Επαναφορά επέκτασης" #: subprojects/extensions-tool/src/main.c:340 msgid "Uninstall extension" msgstr "Απεγκατάσταση επέκτασης" #: subprojects/extensions-tool/src/main.c:341 msgid "List extensions" msgstr "Λίστα επεκτάσεων" #: subprojects/extensions-tool/src/main.c:342 #: subprojects/extensions-tool/src/main.c:343 msgid "Show extension info" msgstr "Εμφάνιση πληροφοριών επέκτασης" #: subprojects/extensions-tool/src/main.c:344 msgid "Open extension preferences" msgstr "Άνοιγμα προτιμήσεων επέκτασης" #: subprojects/extensions-tool/src/main.c:345 msgid "Create extension" msgstr "Δημιουργία επέκτασης" #: subprojects/extensions-tool/src/main.c:346 msgid "Package extension" msgstr "Επέκταση πακέτου" #: subprojects/extensions-tool/src/main.c:347 msgid "Install extension bundle" msgstr "Εγκατάσταση δέσμης επεκτάσεων" #: subprojects/extensions-tool/src/main.c:349 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "Χρήση του «%s» για να λάβετε λεπτομερή βοήθεια.\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "Απλό" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "Μια κενή επέκταση" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "Δείκτης" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "Προσθήκη εικονιδίου στην επάνω γραμμή" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:4 msgid "Quick Settings Item" msgstr "Στοιχείο γρήγορων ρυθμίσεων" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:5 msgid "Add an item to quick settings" msgstr "Προσθήκη στοιχείου στις γρήγορες ρυθμίσεις" #. translators: #. * The device has been disabled #: subprojects/gvc/gvc-mixer-control.c:1872 msgid "Disabled" msgstr "Απενεργοποιημένο" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1879 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u έξοδος" msgstr[1] "%u έξοδοι" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1889 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u είσοδος" msgstr[1] "%u είσοδοι" #: subprojects/gvc/gvc-mixer-control.c:2872 msgid "System Sounds" msgstr "Ήχοι συστήματος" #~ msgid "Network Manager" #~ msgstr "Διαχειριστής δικτύου" #, javascript-format #~ msgid "%s is now known as %s" #~ msgstr "Ο %s είναι τώρα γνωστός ως %s" #~| msgid "Disable" #~ msgid "Disabling" #~ msgstr "Απενεργοποίηση" #~| msgid "Enable" #~ msgid "Enabling" #~ msgstr "Ενεργοποίηση" #~ msgid "Thunderbolt" #~ msgstr "Thunderbolt" #~ msgid "No Thanks" #~ msgstr "Όχι, ευχαριστώ" #~ msgid "No Matches" #~ msgstr "Καμιά αντιστοιχία" #~ msgid "The extension had an error" #~ msgstr "Η επέκταση παρουσίασε σφάλμα" #~ msgid "The extension can be updated" #~ msgstr "Η επέκταση μπορεί να ενημερωθεί" #~ msgid "Help" #~ msgstr "Βοήθεια" #~ msgid "Manually Installed" #~ msgstr "Εγκατεστημένες χειροκίνητα" #~ msgid "Built-In" #~ msgstr "Ενσωματωμένο" #~ msgid "Extension Updates Ready" #~ msgstr "Έτοιμες οι ενημερώσεις επεκτάσεων" #~ msgid "Attach modal dialog to the parent window" #~ msgstr "Προσάρτηση αποκλειστικού διαλόγου στο γονικό παράθυρο" #~ msgid "" #~ "This key overrides the key in org.gnome.mutter when running GNOME Shell." #~ msgstr "" #~ "Αυτό το κλειδί υπερισχύει του κλειδιού που υπάρχει στο org.gnome.mutter " #~ "όταν εκτελείται το GNOME Shell." #~ msgid "Enable edge tiling when dropping windows on screen edges" #~ msgstr "" #~ "Ενεργοποίηση της προσάρτησης άκρων, όταν αφήνετε παράθυρα στις άκρες της " #~ "οθόνης" #~ msgid "Workspaces are managed dynamically" #~ msgstr "Η διαχείριση των χώρων γίνεται δυναμικά" #~ msgid "Workspaces only on primary monitor" #~ msgstr "Χώροι εργασίας μόνο στην κύρια οθόνη" #~ msgid "Delay focus changes in mouse mode until the pointer stops moving" #~ msgstr "" #~ "Καθυστέρηση εστίασης αλλαγών στην λειτουργία ποντικιού μέχρι να " #~ "σταματήσει να κινείται ο δείκτης" #~ msgid "Region & Language Settings" #~ msgstr "Ρυθμίσεις περιοχής και γλώσσας" #~ msgid "Applications" #~ msgstr "Εφαρμογές" #~ msgid "Screenshot / Screencast" #~ msgstr "Στιγμιότυπο/βίντεο οθόνης" #, javascript-format #~ msgid "Unable to start %s" #~ msgstr "Αδυναμία εκκίνησης %s" #, javascript-format #~ msgid "Couldn’t find the %s application" #~ msgstr "Αδύνατη η εύρεση της εφαρμογής %s" #, javascript-format #~ msgid "%d %%" #~ msgstr "%d %%" #~ msgid "Evolution Calendar" #~ msgstr "Ημερολόγιο Evolution" #~ msgid "" #~ "Whether the default Bluetooth adapter had set up devices associated to it" #~ msgstr "" #~ "Αν ο προεπιλεγμένος προσαρμογέας Bluetooth έχει ρυθμιστεί με " #~ "συσχετισμένες συσκευές" #~ msgid "" #~ "The shell will only show a Bluetooth menu item if a Bluetooth adapter is " #~ "powered, or if there were devices set up associated with the default " #~ "adapter. This will be reset if the default adapter is ever seen not to " #~ "have devices associated to it." #~ msgstr "" #~ "Το κέλυφος θα εμφανίσει ένα μενού Bluetooth αν είναι ενεργός ο " #~ "προσαρμογέας, ή αν υπάρχουν συσχετισμένες συσκευές με αυτόν. Αυτό θα " #~ "επαναφερθεί αν δεν υπάρχουν συσχετισμένες συσκευές με τον προσαρμογέα." #~ msgid "Remove from Favorites" #~ msgstr "Αφαίρεση από τα αγαπημένα" #~ msgid "Add to Favorites" #~ msgstr "Προσθήκη στα αγαπημένα" #~ msgid "Bluetooth Off" #~ msgstr "Bluetooth ανενεργό" #~ msgid "Bluetooth On" #~ msgstr "Bluetooth ενεργό" #~ msgid "Location In Use" #~ msgstr "Τοποθεσία σε χρήση" #~ msgid "Location Disabled" #~ msgstr "Απενεργοποιήθηκε η τοποθεσία" #, javascript-format #~ msgid "%s Off" #~ msgstr "Απενεργοποιημένο %s" #, javascript-format #~ msgid "%s Connected" #~ msgstr "%s συνδεδεμένο" #, javascript-format #~ msgid "%s Unmanaged" #~ msgstr "Χωρίς διαχείριση %s" #, javascript-format #~ msgid "%s Connecting" #~ msgstr "Γίνεται σύνδεση %s" #, javascript-format #~ msgid "%s Requires Authentication" #~ msgstr "Το %s απαιτεί πιστοποίηση" #, javascript-format #~ msgid "Firmware Missing For %s" #~ msgstr "Λείπει υλικολογισμικό για το %s" #, javascript-format #~ msgid "%s Unavailable" #~ msgstr "Το %s δεν είναι διαθέσιμο" #, javascript-format #~ msgid "%s Connection Failed" #~ msgstr "Αποτυχία σύνδεσης του %s" #, javascript-format #~ msgid "%s Hardware Disabled" #~ msgstr "Το υλικό απενεργοποιήθηκε για το %s" #, javascript-format #~ msgid "%s Disabled" #~ msgstr "Απενεργοποιήθηκε το %s" #~ msgid "Connect to Internet" #~ msgstr "Σύνδεση στο διαδίκτυο" #~ msgid "Airplane Mode is On" #~ msgstr "Η λειτουργία πτήσης είναι ενεργή" #~ msgid "Wi-Fi is disabled when airplane mode is on." #~ msgstr "" #~ "Η ασύρματη σύνδεση είναι ανενεργή όταν η λειτουργία πτήσηςα είναι ενεργή." #~ msgid "Turn Off Airplane Mode" #~ msgstr "Απενεργοποίηση της λειτουργίας πτήσης" #~ msgid "Wi-Fi is Off" #~ msgstr "Το Wi-Fi είναι ανενεργό" #~ msgid "Wi-Fi needs to be turned on in order to connect to a network." #~ msgstr "" #~ "Το Wi-Fi χρειάζεται να ενεργοποιηθεί για να συνδεθείτε σε ένα δίκτυο." #~ msgid "Turn On Wi-Fi" #~ msgstr "Ενεργοποίηση Wi-Fi" #~ msgid "Wi-Fi Networks" #~ msgstr "Ασύρματα δίκτυα" #~ msgid "Select a network" #~ msgstr "Επιλογή δικτύου" #~ msgid "Use hardware switch to turn off" #~ msgstr "Χρήση διακόπτη υλικού για απενεργοποίηση" #~ msgid "Select Network" #~ msgstr "Επιλογή δικτύου" #~ msgid "Wi-Fi Settings" #~ msgstr "Ρυθμίσεις Wi-Fi" #, javascript-format #~ msgid "%s Not Connected" #~ msgstr "Χωρίς σύνδεση το %s" #~ msgid "connecting…" #~ msgstr "γίνεται σύνδεση…" #~ msgid "authentication required" #~ msgstr "απαιτείται πιστοποίηση" #~ msgid "connection failed" #~ msgstr "αποτυχία σύνδεσης" #~ msgid "VPN Off" #~ msgstr "Απενεργοποιημένο VPN" #~ msgid "Network Settings" #~ msgstr "Ρυθμίσεις δικτύου" #, javascript-format #~ msgid "%s Wi-Fi Connection" #~ msgid_plural "%s Wi-Fi Connections" #~ msgstr[0] "%s Wi-Fi σύνδεση" #~ msgstr[1] "%s Wi-Fi συνδέσεις" #~ msgid "Night Light Disabled" #~ msgstr "Λειτουργία νυχτός ανενεργή" #~ msgid "Resume" #~ msgstr "Συνέχιση" #~ msgid "Disable Until Tomorrow" #~ msgstr "Απενεργοποίηση έως αύριο" #~ msgid "Fully Charged" #~ msgstr "Πλήρως φορτισμένη" #~ msgid "Not Charging" #~ msgstr "Δεν φορτίζεται" #~ msgid "Estimating…" #~ msgstr "Εκτίμηση…" #, javascript-format #~ msgid "%d∶%02d Remaining (%d %%)" #~ msgstr "%d∶%02d Απομένει (%d %%)" #, javascript-format #~ msgid "%d∶%02d Until Full (%d %%)" #~ msgstr "%d∶%02d Πλήρης μέχρι (%d %%)" #~ msgid "Screen is Being Shared" #~ msgstr "Οθόνη σε κοινή χρήση" #~ msgid "Turn off" #~ msgstr "Απενεργοποίηση" #~ msgid "Airplane Mode On" #~ msgstr "Λειτουργία πτήσης ενεργή" #~ msgid "Lock" #~ msgstr "Κλείδωμα" #~ msgid "Power Off / Log Out" #~ msgstr "Τερματισμός / Αποσύνδεση" #~ msgid "Log Out" #~ msgstr "Αποσύνδεση" #~ msgid "Author" #~ msgstr "Συγγραφέας" #~ msgid "Warning" #~ msgstr "Προειδοποίηση" #~ msgid "" #~ "Extensions can cause system issues, including performance problems. If " #~ "you encounter problems with your system, it is recommended to disable all " #~ "extensions." #~ msgstr "" #~ "Οι επεκτάσεις μπορεί να προκαλέσουν προβλήματα στο σύστημα, " #~ "συμπεριλαμβανομένων προβλημάτων απόδοσης. Εάν αντιμετωπίσετε προβλήματα " #~ "με το σύστημά σας, συνίσταται να απενεργοποιήσετε όλες τις επεκτάσεις." #~ msgid "Failed to connect to GNOME Shell" #~ msgstr "Αποτυχία σύνδεσης στο κέλυφος GNOME" #~ msgid "Enable introspection API" #~ msgstr "Ενεργοποίηση ενδοσκόπησης API" #~ msgid "" #~ "Enables a D-Bus API that allows to introspect the application state of " #~ "the shell." #~ msgstr "" #~ "Ενεργοποιεί ένα API D-Bus που επιτρέπει την εισαγωγή της κατάστασης " #~ "εφαρμογής του κελύφους." #~ msgid "Minimize" #~ msgstr "Ελαχιστοποίηση" #~ msgid "Unmaximize" #~ msgstr "Απομεγιστοποίηση" #~ msgid "App Picker View" #~ msgstr "Προβολή επιλογέα εφαρμογών" #~ msgid "Index of the currently selected view in the application picker." #~ msgstr "" #~ "Ευρετήριο της τρέχουσας επιλεγμένης προβολής του επιλογέα εφαρμογών." #~ msgid "Copy Error" #~ msgstr "Αντιγραφή σφάλματος" #~ msgid "Frequently used applications will appear here" #~ msgstr "Οι πιο συχνά χρησιμοποιούμενες εφαρμογές θα εμφανιστούν εδώ" #~ msgid "Frequent" #~ msgstr "Συχνά" #~ msgid "All" #~ msgstr "Όλα" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d" #~ msgstr "%A, %B %-d" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d, %Y" #~ msgstr "%A, %B %-d, %Y" #~ msgid "On" #~ msgstr "Ενεργοποίηση" #~ msgid "Browse in Software" #~ msgstr "Εξερεύνηση στο Λογισμικό" #~ msgid "Next" #~ msgstr "Επόμενο" #~ msgctxt "button" #~ msgid "Sign In" #~ msgstr "Σύνδεση" #, fuzzy #~| msgctxt "search-result" #~| msgid "Lock orientation" #~ msgctxt "search-result" #~ msgid "Lock Orientation" #~ msgstr "Κλείδωμα προσανατολισμού" #~ msgid "Rename" #~ msgstr "Μετονομασία" #~ msgid "Password:" #~ msgstr "Συνθηματικό:" #~ msgid "Type again:" #~ msgstr "Πληκτρολογήστε ξανά:" #~ msgid "Password: " #~ msgstr "Κωδικός πρόσβασης: " #~ msgid "Authentication required by wireless network" #~ msgstr "Απαιτείται πιστοποίηση από το ασύρματο δίκτυο" #~ msgid "Mobile broadband network password" #~ msgstr "Κωδικός πρόσβασης δικτύου κινητής ευρυζωνικής σύνδεσης" #~ msgid "%A, %B %d" #~ msgstr "%A, %B %d" #~ msgid "%d new message" #~ msgid_plural "%d new messages" #~ msgstr[0] "%d νέο μήνυμα" #~ msgstr[1] "%d νέα μηνύματα" #~ msgid "Account Settings" #~ msgstr "Ρυθμίσεις λογαριασμού" #~ msgid "Orientation Lock" #~ msgstr "Κλείδωμα προσανατολισμού" #~ msgid "" #~ "Keybinding that pauses and resumes all running tweens, for debugging " #~ "purposes" #~ msgstr "" #~ "Συνδυασμός πλήκτρων που κάνει παύση και συνέχιση όλων των tween που " #~ "εκτελούνται, για σκοπούς αποσφαλμάτωσης" #~ msgid "Which keyboard to use" #~ msgstr "Ποιο πληκτρολόγιο θα χρησιμοποιηθεί" #~ msgid "The type of keyboard to use." #~ msgstr "Ο τύπος του πληκτρολογίου που θα χρησιμοποιηθεί." #~ msgid "network-workgroup" #~ msgstr "network-workgroup" #~ msgid "There was an error loading the preferences dialog for %s:" #~ msgstr "" #~ "Προέκυψε ένα σφάλμα κατά τη φόρτωση του παραθύρου διαλόγου των " #~ "προτιμήσεων για %s:" #~ msgid "%s all day." #~ msgstr "Όλη μέρα %s." #~ msgid "%s, then %s later." #~ msgstr "%s, αργότερα %s." #~ msgid "%s, then %s, followed by %s later." #~ msgstr "%s, αργότερα %s, στη συνέχεια %s." #~ msgid "Feels like %s." #~ msgstr "Αισθητή θερμοκρασία %s." #~ msgid "toggle-switch-us" #~ msgstr "toggle-switch-intl" #~| msgid "Log Out" #~ msgctxt "search-result" #~ msgid "Log out" #~ msgstr "Αποσύνδεση" #~| msgid "Switch User" #~ msgctxt "search-result" #~ msgid "Switch user" #~ msgstr "Αλλαγή χρήστη" #~ msgid "Hide tray" #~ msgstr "Απόκρυψη περιοχής ειδοποιήσεων" #~ msgid "Status Icons" #~ msgstr "Εικονίδια κατάστασης" #~ msgid "Web Authentication Redirect" #~ msgstr "Ανακατεύθυνση πιστοποίησης ιστού" #~ msgid "Events" #~ msgstr "Συμβάντα" #~ msgid "Media" #~ msgstr "Πολυμέσα" #~ msgid "%d x %d" #~ msgstr "%d x %d" #~ msgid "Show the week date in the calendar" #~ msgstr "Εμφάνιση του αριθμού εβδομάδας στο ημερολόγιο" #~ msgid "If true, display the ISO week date in the calendar." #~ msgstr "" #~ "Αν είναι αληθές, εμφανίζει τον αριθμό εβδομάδας κατά ISO στο ημερολόγιο." #~ msgid "Use as Internet connection" #~ msgstr "Χρήση ως σύνδεση διαδικτύου" #~ msgid "%s is requesting access to your location." #~ msgstr "Το %s ζητά πρόσβαση στην τοποθεσία σας." #~ msgid "GNOME Shell (wayland compositor)" #~ msgstr "GNOME Shell (συνθετητής wayland)" #~ msgid "%d Connected Device" #~ msgid_plural "%d Connected Devices" #~ msgstr[0] "%d συνδεδεμένη συσκευή" #~ msgstr[1] "%d συνδεδεμένες συσκευές" #~ msgid "UPS" #~ msgstr "UPS" #~ msgid "Battery" #~ msgstr "Μπαταρία" #~ msgctxt "event list time" #~ msgid "%H∶%M" #~ msgstr "%H∶%M" #~ msgctxt "event list time" #~ msgid "%l∶%M %p" #~ msgstr "%l∶%M %p" #~ msgid "Invitation" #~ msgstr "Πρόσκληση" #~ msgid "Call" #~ msgstr "Κλήση" #~ msgid "File Transfer" #~ msgstr "Μεταφορά αρχείου" #~ msgid "Chat" #~ msgstr "Συνομιλία" #~ msgid "Invitation to %s" #~ msgstr "Πρόσκληση στο %s" #~ msgid "%s is inviting you to join %s" #~ msgstr "Ο %s σας προσκαλεί να μπείτε στο %s" #~ msgid "Decline" #~ msgstr "Απόρριψη" #~ msgid "Accept" #~ msgstr "Αποδοχή" #~ msgid "Video call from %s" #~ msgstr "Βιντεοκλήση από %s" #~ msgid "Call from %s" #~ msgstr "Κλήση από %s" #~ msgid "Answer" #~ msgstr "Απάντηση" #~ msgid "%s is sending you %s" #~ msgstr "Ο %s σας στέλνει το %s" #~ msgid "%s would like permission to see when you are online" #~ msgstr "Ο %s ζητάει άδεια για να βλέπει πότε είστε συνδεδεμένος" #~ msgid "Authentication failed" #~ msgstr "Απέτυχε η πιστοποίηση" #~ msgid "Encryption error" #~ msgstr "Σφάλμα κρυπτογράφησης" #~ msgid "Certificate not provided" #~ msgstr "Δεν υπάρχει πιστοποιητικό" #~ msgid "Certificate untrusted" #~ msgstr "Μη έμπιστο πιστοποιητικό" #~ msgid "Certificate expired" #~ msgstr "Ληγμένο πιστοποιητικό" #~ msgid "Certificate not activated" #~ msgstr "Το πιστοποιητικό δεν ενεργοποιήθηκε" #~ msgid "Certificate hostname mismatch" #~ msgstr "Αναντιστοιχία ονόματος κεντρικού υπολογιστή στο πιστοποιητικό" #~ msgid "Certificate fingerprint mismatch" #~ msgstr "Αναντιστοιχία αποτυπώματος πιστοποιητικού" #~ msgid "Certificate self-signed" #~ msgstr "Αυτο-υπογεγραμμένο πιστοποιητικό" #~ msgid "Status is set to offline" #~ msgstr "Η κατάσταση έχει ορισθεί σε εκτός σύνδεσης" #~ msgid "Certificate is invalid" #~ msgstr "Μη έγκυρο πιστοποιητικό" #~ msgid "Connection has been refused" #~ msgstr "Άρνηση σύνδεσης" #~ msgid "Connection can't be established" #~ msgstr "Δεν είναι δυνατή η σύνδεση" #~ msgid "Connection has been lost" #~ msgstr "Χάθηκε η σύνδεση" #~ msgid "This account is already connected to the server" #~ msgstr "Αυτός ο λογαριασμός είναι ήδη συνδεδεμένος στον διακομιστή" #~ msgid "" #~ "Connection has been replaced by a new connection using the same resource" #~ msgstr "" #~ "Η σύνδεση έχει αντικατασταθεί από μια νέα σύνδεση που χρησιμοποιεί τον " #~ "ίδιο πόρο" #~ msgid "The account already exists on the server" #~ msgstr "Ο λογαριασμός υπάρχει ήδη στον διακομιστή" #~ msgid "Server is currently too busy to handle the connection" #~ msgstr "Ο διακομιστής είναι πολύ απασχολημένος ώστε να χειριστεί τη σύνδεση" #~ msgid "Certificate has been revoked" #~ msgstr "Το πιστοποιητικό έχει ανακληθεί" #~ msgid "" #~ "Certificate uses an insecure cipher algorithm or is cryptographically weak" #~ msgstr "" #~ "Το πιστοποιητικό χρησιμοποιεί έναν μη ασφαλή αλγόριθμο αποκρυπτογράφησης " #~ "αποτυπώματος ή είναι κρυπτογραφικά ασθενές" #~ msgid "" #~ "The length of the server certificate, or the depth of the server " #~ "certificate chain, exceed the limits imposed by the cryptography library" #~ msgstr "" #~ "Το μέγεθος πιστοποιητικού του διακομιστή, ή το βάθος της αλυσίδας " #~ "πιστοποιητικού του διακομιστή υπερβαίνει τα όρια που επιτρέπει η " #~ "βιβλιοθήκη κρυπτογραφίας" #~ msgid "Internal error" #~ msgstr "Εσωτερικό σφάλμα" #~ msgid "View account" #~ msgstr "Προβολή λογαριασμού" #~ msgid "Unknown reason" #~ msgstr "Άγνωστος λόγος" #~ msgid "Show the message list" #~ msgstr "Εμφάνιση της λίστας μηνυμάτων" #~ msgid "Captive Portal" #~ msgstr "Πύλη υποδοχής" #~ msgctxt "list sunday" #~ msgid "Su" #~ msgstr "Κυ" #~ msgctxt "list monday" #~ msgid "M" #~ msgstr "Δε" #~ msgctxt "list tuesday" #~ msgid "T" #~ msgstr "Τρ" #~ msgctxt "list wednesday" #~ msgid "W" #~ msgstr "Τε" #~ msgctxt "list thursday" #~ msgid "Th" #~ msgstr "Πε" #~ msgctxt "list friday" #~ msgid "F" #~ msgstr "Πα" #~ msgctxt "list saturday" #~ msgid "S" #~ msgstr "Σα" #~ msgid "Nothing Scheduled" #~ msgstr "Τίποτα προγραμματισμένο" #~ msgid "This week" #~ msgstr "Αυτή η εβδομάδα" #~ msgid "Next week" #~ msgstr "Επόμενη εβδομάδα" #~ msgid "Removable Devices" #~ msgstr "Αφαιρούμενες συσκευές" #~ msgid "Eject" #~ msgstr "Εξαγωγή" #~ msgid "Date & Time Settings" #~ msgstr "Ρυθμίσεις ημερομηνίας & ώρας" #~ msgid "Open" #~ msgstr "Άνοιγμα" #~ msgid "Clear Messages" #~ msgstr "Εκκαθάριση μηνυμάτων" #~ msgid "Notification Settings" #~ msgstr "Ρυθμίσεις ειδοποιήσεων" #~ msgid "No Messages" #~ msgstr "Χωρίς μηνύματα" #~ msgid "Message Tray" #~ msgstr "Περιοχή ειδοποιήσεων μηνυμάτων" #~ msgid "The maximum accuracy level of location." #~ msgstr "Το μέγιστο επίπεδο ακρίβειας της θέσης." #~ msgid "" #~ "Configures the maximum level of location accuracy applications are " #~ "allowed to see. Valid options are 'off' (disable location tracking), " #~ "'country', 'city', 'neighborhood', 'street', and 'exact' (typically " #~ "requires GPS receiver). Please keep in mind that this only controls what " #~ "GeoClue will allow applications to see and they can find user's location " #~ "on their own using network resources (albeit with street-level accuracy " #~ "at best)." #~ msgstr "" #~ "Ρυθμίζει το μέγιστο επίπεδο ακρίβειας στην εντόπιση θέσης το οποίο " #~ "επιτρέπεται να βλέπουν οι εφαρμογές. Οι έγκυρες επιλογές είναι 'όχι' " #~ "(απενεργοποίηση εντοπισμού θέσης), 'χώρα', 'πόλη', 'γειτονιά', 'οδός' και " #~ "'ακριβώς' (τυπικά, απαιτεί δέκτη GPS). Παρακαλούμε να θυμάστε ότι αυτό " #~ "ελέγχει μόνο τι θα επιτρέπει το Geoclue να βλέπουν οι εφαρμογές, ενώ " #~ "αυτές μπορούν να βρουν τη θέση του χρήστη και από μόνες τους, " #~ "χρησιμοποιώντας πόρους δικτύου (αν και, στην καλύτερη περίπτωση, με " #~ "ακρίβεια επιπέδου οδού)." #~ msgid "Arrangement of buttons on the titlebar" #~ msgstr "Διάταξη των κουμπιών στη γραμμή τίτλου" #~ msgid "" #~ "This key overrides the key in org.gnome.desktop.wm.preferences when " #~ "running GNOME Shell." #~ msgstr "" #~ "Αυτό το κλειδί υπερισχύει του κλειδιού που υπάρχει στο org.gnome.desktop." #~ "wm.preferences όταν εκτελείται το GNOME Shell." #~ msgid "Select an extension to configure using the combobox above." #~ msgstr "" #~ "Επιλέξτε μια επέκταση για να την ρυθμίσετε χρησιμοποιώντας το σύνθετο " #~ "πλαίσιο παραπάνω." #~ msgid "calendar:MY" #~ msgstr "ημερολόγιο:MY" #~ msgid "unavailable" #~ msgstr "μη διαθέσιμο" #~ msgid "%A, %H:%M" #~ msgstr "%ΗΗΗΗ, %Ω:%Λ" #~ msgid "%B %d, %H:%M" #~ msgstr " %ΜΜΜΜ, %Ω:%Λ" #~ msgid "%B %d %Y, %H:%M " #~ msgstr " %ΜΜΜΜ %ΕΕΕΕ, %Ω:%Λ " #~ msgid "List of categories that should be displayed as folders" #~ msgstr "Η λίστα των κατηγοριών που πρέπει να εμφανίζονται ως φάκελοι" #~ msgid "" #~ "Each category name in this list will be represented as folder in the " #~ "application view, rather than being displayed inline in the main view." #~ msgstr "" #~ "Το όνομα κάθε κατηγορίας σε αυτή τη λίστα θα αναπαριστάται ως φάκελος " #~ "στην προβολή εφαρμογής, αντί να εμφανίζεται ενσωματωμένο στην κύρια " #~ "προβολή." #~ msgid "Authorization request from %s" #~ msgstr "Αίτηση εξουσιοδότησης από %s" #~ msgid "Device %s wants to pair with this computer" #~ msgstr "Η συσκευή %s επιθυμεί να συζευχθεί με αυτόν τον υπολογιστή" #~ msgid "Device %s wants access to the service '%s'" #~ msgstr "Η συσκευή %s επιθυμεί πρόσβαση στην υπηρεσία '%s'" #~ msgid "Grant this time only" #~ msgstr "Μόνο για αυτή τη φορά" #~ msgid "Reject" #~ msgstr "Απόρριψη" #~ msgid "Pairing confirmation for %s" #~ msgstr "Επιβεβαίωση σύζευξης για %s" #~ msgid "" #~ "Please confirm whether the Passkey '%06d' matches the one on the device." #~ msgstr "" #~ "Παρακαλώ επιβεβαιώστε αν το κλειδί πρόσβασης '%06d' ταιριάζει με αυτό της " #~ "συσκευής." #~ msgid "Does not match" #~ msgstr "Δεν ταιριάζει" #~ msgid "Pairing request for %s" #~ msgstr "Αίτηση σύζευξης για %s" #~ msgid "Please enter the PIN mentioned on the device." #~ msgstr "Παρακαλώ εισάγετε το PIN που αναφέρεται στη συσκευή." #~ msgid "OK" #~ msgstr "Εντάξει" #~ msgid "" #~ "Sorry, no wisdom for you today:\n" #~ "%s" #~ msgstr "" #~ "Συγγνώμη, κανένα απόφθεγμα για εσάς σήμερα:\n" #~ "%s" #~ msgid "%s the Oracle says" #~ msgstr "%s ο Προφήτης λέει" #~ msgctxt "event list time" #~ msgid "%H\\u2236%M" #~ msgstr "%Ω\\u2236%Λ" #~ msgctxt "event list time" #~ msgid "%l\\u2236%M\\u2009%p" #~ msgstr "%l\\u2236%M\\u2009%p" #~ msgid "Whether to collect stats about applications usage" #~ msgstr "Εάν θα συλλέγονται στατιστικά χρήσης των εφαρμογών" #~ msgid "" #~ "The shell normally monitors active applications in order to present the " #~ "most used ones (e.g. in launchers). While this data will be kept private, " #~ "you may want to disable this for privacy reasons. Please note that doing " #~ "so won't remove already saved data." #~ msgstr "" #~ "Το κέλυφος κανονικά παρακολουθεί τις ενεργές εφαρμογές για να παρουσιάσει " #~ "τις πιο συχνά χρησιμοποιούμενες (π.χ. στους εκκινητές). Παρόλο που αυτά " #~ "τα δεδομένα θα παραμείνουν ιδιωτικά, μπορεί να επιθυμείτε να " #~ "απενεργοποιήσετε αυτή τη λειτουργία για λόγους απορρήτου. Παρακαλούμε " #~ "έχετε υπ' όψιν ότι η απενεργοποίηση δεν θα αφαιρέσει τα ήδη αποθηκευμένα " #~ "δεδομένα." #~ msgid "" #~ "Internally used to store the last IM presence explicitly set by the user. " #~ "The value here is from the TpConnectionPresenceType enumeration." #~ msgstr "" #~ "Χρησιμοποιείται εσωτερικά για την αποθήκευση της συνομιλίας που έχει " #~ "ορισθεί από τον χρήστη. Η τιμή εδώ είναι από την απαρίθμηση του " #~ "TpConnectionPresenceType." #~ msgid "" #~ "Internally used to store the last session presence status for the user. " #~ "The value here is from the GsmPresenceStatus enumeration." #~ msgstr "" #~ "Χρησιμοποιείται εσωτερικά για την αποθήκευση της κατάστασης παρουσίας της " #~ "τελευταίας συνόδου του χρήστη. Η τιμή εδώ είναι από την απαρίθμηση του " #~ "GsmPresenceStatus." #~ msgid "Keybinding to toggle the screen recorder" #~ msgstr "Συνδυασμός πλήκτρων για την εναλλαγή της μαγνητοσκόπησης οθόνης" #~ msgid "Keybinding to start/stop the builtin screen recorder." #~ msgstr "" #~ "Συνδυασμός πλήκτρων για το άνοιγμα/κλείσιμο της ενσωματωμένης " #~ "μαγνητοσκόπησης οθόνης." #~ msgid "Framerate used for recording screencasts." #~ msgstr "" #~ "Ο ρυθμός καρέ που θα χρησιμοποιηθεί για την καταγραφή του βίντεο οθόνης." #~ msgid "" #~ "The framerate of the resulting screencast recordered by GNOME Shell's " #~ "screencast recorder in frames-per-second." #~ msgstr "" #~ "Ο ρυθμός καρέ του στιγμιότυπου που παράγεται από τον εγγραφέα βίντεο " #~ "οθόνης του GNOME Shell σε καρέ ανά δευτερόλεπτο." #~ msgid "The gstreamer pipeline used to encode the screencast" #~ msgstr "" #~ "Ο δίαυλος του gstreamer που χρησιμοποιήθηκε για την κωδικοποίηση του " #~ "βίντεο οθόνης" #~ msgid "" #~ "Sets the GStreamer pipeline used to encode recordings. It follows the " #~ "syntax used for gst-launch. The pipeline should have an unconnected sink " #~ "pad where the recorded video is recorded. It will normally have a " #~ "unconnected source pad; output from that pad will be written into the " #~ "output file. However the pipeline can also take care of its own output - " #~ "this might be used to send the output to an icecast server via shout2send " #~ "or similar. When unset or set to an empty value, the default pipeline " #~ "will be used. This is currently 'vp8enc min_quantizer=13 max_quantizer=13 " #~ "cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux' and records to " #~ "WEBM using the VP8 codec. %T is used as a placeholder for a guess at the " #~ "optimal thread count on the system." #~ msgstr "" #~ "Ορίζει το δίαυλο του GStreamer που θα χρησιμοποιηθεί για την κωδικοποίηση " #~ "των εγγραφών. Ακολουθεί το συντακτικό που χρησιμοποιείται για το gst-" #~ "launch. Ο δίαυλος θα πρέπει να έχει έναν μη συνδεδεμένο απαγωγέα όπου θα " #~ "εγγράφεται το καταγραφέα βίντεο. Φυσιολογικά θα έχει μια μη συνδεδεμένη " #~ "πηγή· η έξοδος της πηγής θα εγγράφεται στο αρχείο εξόδου. Όμως, ο δίαυλος " #~ "μπορεί να επιληφθεί της δικής του εξόδου - αυτό μπορεί να χρησιμοποιηθεί " #~ "για την αποστολή της εξόδου σε έναν διακομιστή icecast μέσω του " #~ "shout2send ή κάποιου παρόμοιου. Όταν δεν έχει ορισθεί ή έχει ορισθεί σε " #~ "κενή τιμή, θα χρησιμοποιηθεί ο προεπιλεγμένος δίαυλος. Αυτός είναι αυτή " #~ "τη στιγμή ο 'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 " #~ "deadline=1000000 threads=%T ! queue ! webmmux' και γράφει σε WEBM με " #~ "κωδικοποίηση VP8. Το %T χρησιμοποιείται ως παράδειγμα για το πιθανό " #~ "βέλτιστο αριθμό πυρήνων του συστήματος." #~ msgid "File extension used for storing the screencast" #~ msgstr "" #~ "Επέκταση αρχείου που θα χρησιμοποιηθεί για την αποθήκευση του βίντεο " #~ "οθόνης" #~ msgid "" #~ "The filename for recorded screencasts will be a unique filename based on " #~ "the current date, and use this extension. It should be changed when " #~ "recording to a different container format." #~ msgstr "" #~ "Το όνομα αρχείου για τα καταγεγραμμένα βίντεο οθόνης θα είναι μοναδικό, " #~ "βασισμένο στην τρέχουσα ημερομηνία και θα χρησιμοποιεί αυτή την επέκταση. " #~ "Θα πρέπει να αλλάζει όταν γίνεται εγγραφή σε διαφορετικό πρότυπο περιέκτη." #~ msgid "Session…" #~ msgstr "Συνεδρία…" #~ msgid "Power" #~ msgstr "Ενέργεια" #~ msgid "Click Log Out to quit these applications and log out of the system." #~ msgstr "" #~ "Πατήστε Αποσύνδεση για να κλείσετε αυτές τις εφαρμογές και να " #~ "αποσυνδεθείτε από το σύστημα." #~ msgid "Logging out of the system." #~ msgstr "Αποσύνδεση από το σύστημα." #~ msgid "Click Power Off to quit these applications and power off the system." #~ msgstr "" #~ "Πατήστε Απενεργοποίηση για να κλείσετε αυτές τις εφαρμογές και να " #~ "τερματίσετε το σύστημα." #~ msgid "Powering off the system." #~ msgstr "Απενεργοποίηση του συστήματος." #~ msgid "Click Restart to quit these applications and restart the system." #~ msgstr "" #~ "Πατήστε Επανεκκίνηση για να κλείσετε αυτές τις εφαρμογές και να " #~ "επανεκκινήσετε το σύστημα." #~ msgid "Restarting the system." #~ msgstr "Επανεκκινείται το σύστημα." #~ msgid "Universal Access Settings" #~ msgstr "Ρυθμίσεις καθολικής πρόσβασης" #~ msgid "Visibility" #~ msgstr "Ορατότητα" #~ msgid "Send Files to Device…" #~ msgstr "Αποστολή αρχείων σε συσκευή…" #~ msgid "Set Up a New Device…" #~ msgstr "Ρύθμιση νέας συσκευής…" #~ msgid "Send Files…" #~ msgstr "Αποστολή αρχείων…" #~ msgid "Mouse Settings" #~ msgstr "Ρυθμίσεις ποντικιού" #~ msgid "Volume, network, battery" #~ msgstr "Ένταση, δίκτυο, μπαταρία" #~ msgid "disabled" #~ msgstr "απενεργοποιημένο" #~ msgid "cable unplugged" #~ msgstr "το καλώδιο αποσυνδέθηκε" #~ msgid "More…" #~ msgstr "Περισσότερα…" #~ msgid "Wired" #~ msgstr "Ενσύρματο" #~ msgid "Auto Ethernet" #~ msgstr "Αυτόματα Ethernet" #~ msgid "Auto broadband" #~ msgstr "Αυτόματα ευρυζωνική" #~ msgid "Auto dial-up" #~ msgstr "Αυτόματα dial-up" #~ msgid "Auto %s" #~ msgstr "Αυτόματα %s" #~ msgid "Auto bluetooth" #~ msgstr "Αυτόματα bluetooth" #~ msgid "Auto wireless" #~ msgstr "Αυτόματα ασύρματο" #~ msgid "Wi-Fi" #~ msgstr "Ασύρματη πιστότητα" #~ msgid "%d hour remaining" #~ msgid_plural "%d hours remaining" #~ msgstr[0] "%d ώρα απομένει" #~ msgstr[1] "%d ώρες απομένουν" #~ msgid "%d %s %d %s remaining" #~ msgstr "Απομένουν %d %s %d %s" #~ msgid "hour" #~ msgid_plural "hours" #~ msgstr[0] "ώρα" #~ msgstr[1] "ώρες" #~ msgid "minute" #~ msgid_plural "minutes" #~ msgstr[0] "λεπτό" #~ msgstr[1] "λεπτά" #~ msgid "%d minute remaining" #~ msgid_plural "%d minutes remaining" #~ msgstr[0] "%d λεπτό απομένει" #~ msgstr[1] "%d λεπτά απομένουν" #~ msgid "AC Adapter" #~ msgstr "Μετασχηματιστής εναλλασσόμενου" #~ msgid "Laptop Battery" #~ msgstr "Μπαταρία φορητού" #~ msgid "Monitor" #~ msgstr "Οθόνη" #~ msgid "Mouse" #~ msgstr "Ποντίκι" #~ msgid "PDA" #~ msgstr "PDA" #~ msgid "Cell Phone" #~ msgstr "Κινητό τηλέφωνο" #~ msgid "Media Player" #~ msgstr "Αναπαραγωγή πολυμέσων" #~ msgid "Tablet" #~ msgstr "Ταμπλέτα" #~ msgid "Computer" #~ msgstr "Υπολογιστής" #~ msgctxt "device" #~ msgid "Unknown" #~ msgstr "Άγνωστο" #~ msgid "Busy" #~ msgstr "Απασχολημένος-η" #~ msgid "Invisible" #~ msgstr "Αόρατος-η" #~ msgid "Away" #~ msgstr "Απουσιάζει" #~ msgid "Idle" #~ msgstr "Αδρανής" #~ msgid "Your chat status will be set to busy" #~ msgstr "Η κατάσταση συνομιλίας σας θα ορισθεί σε απασχολημένος" #~ msgid "" #~ "Notifications are now disabled, including chat messages. Your online " #~ "status has been adjusted to let others know that you might not see their " #~ "messages." #~ msgstr "" #~ "Οι ειδοποιήσεις είναι απενεργοποιημένες, όπως και τα μηνύματα συζητήσεων. " #~ "Η κατάσταση σας έχει ορισθεί έτσι ώστε να γίνεται γνωστό ότι πιθανόν να " #~ "μην δείτε τα μηνύματα τους." #~ msgid "Shutting down might cause them to lose unsaved work." #~ msgstr "" #~ "Κλείνοντας μπορεί να τους προκαλέσετε την απώλεια αναποθήκευτης εργασίας." #~ msgctxt "title" #~ msgid "Sign In" #~ msgstr "Σύνδεση" #~ msgid "tray" #~ msgstr "περιοχή" #~ msgid "More..." #~ msgstr "Περισσότερα..." #~ msgid "APPLICATIONS" #~ msgstr "ΕΦΑΡΜΟΓΕΣ" #~ msgid "SETTINGS" #~ msgstr "ΡΥΘΜΙΣΕΙΣ" #~ msgctxt "event list time" #~ msgid "%H:%M" #~ msgstr "%H:%M" #~ msgctxt "event list time" #~ msgid "%l:%M %p" #~ msgstr "%l:%M %p" #~ msgid "Subscription request" #~ msgstr "Αίτηση συνδρομής" #~ msgid "Sent at %X on %A" #~ msgstr "Στάλθηκε στις %A και ώρα %X" #~ msgid "Sent on %A, %B %d, %Y" #~ msgstr "Στάλθηκε την %A, %d %B, %Y" #~ msgid "Connection to %s failed" #~ msgstr "Απέτυχε η σύνδεση στο %s" #~ msgid "Reconnect" #~ msgstr "Επανασύνδεση" #~ msgid "Browse Files..." #~ msgstr "Περιήγηση αρχείων..." #~ msgid "Error browsing device" #~ msgstr "Σφάλμα περιήγησης συσκευής" #~ msgid "The requested device cannot be browsed, error is '%s'" #~ msgstr "" #~ "Δεν είναι δυνατή η περιήγηση στην αιτούμενη συσκευή, το σφάλμα είναι '%s'" #~ msgid "Wireless" #~ msgstr "Ασύρματο" #~ msgid "VPN Connections" #~ msgstr "Συνδέσεις VPN" #~ msgid "System Settings" #~ msgstr "Ρυθμίσεις συστήματος" #~ msgid "Your favorite Easter Egg" #~ msgstr "Το αγαπημένο σας Πασχαλινό Αυγό" #~ msgid "United Kingdom" #~ msgstr "Ηνωμένο Βασίλειο" #~ msgid "Default" #~ msgstr "Προεπιλογή" #~ msgid "disabled OpenSearch providers" #~ msgstr "απενεργοποιημένοι πάροχοι OpenSearch" #~ msgid "Failed to unmount '%s'" #~ msgstr "Αποτυχία αποπροσάρτησης '%s'" #~ msgid "Retry" #~ msgstr "Προσπάθεια ξανά" #~ msgid "PLACES & DEVICES" #~ msgstr "ΤΟΠΟΘΕΣΙΕΣ & ΣΥΣΚΕΥΕΣ" #~ msgid "%1$s: %2$s" #~ msgstr "%1$s: %2$s" #~ msgid "Passphrase" #~ msgstr "Συνθηματική φράση" #~ msgctxt "contact" #~ msgid "Unknown" #~ msgstr "Άγνωστο" #~ msgid "CONTACTS" #~ msgstr "ΕΠΑΦΕΣ" #~ msgid "%s is online." #~ msgstr "Ο/η %s είναι συνδεδεμένος" #~ msgid "%s is offline." #~ msgstr "Ο/η %s είναι αποσυνδεδεμένος" #~ msgid "%s is away." #~ msgstr "Ο/η '%s' είναι εκτός. " #~ msgid "%s is busy." #~ msgstr "%s είναι απασχολημένος/η" #~ msgid "Show time with seconds" #~ msgstr "Εμφάνιση ώρας με δευτερόλεπτα" #~ msgid "If true, display seconds in time." #~ msgstr "Αν αληθές, εμφανίζει δευτερόλεπτα στην ώρα." #~ msgid "Show date in clock" #~ msgstr "Εμφάνιση ημερομηνίας στο ρολόι" #~ msgid "If true, display date in the clock, in addition to time." #~ msgstr "Αν αληθές, εμφανίζει την ημερομηνία στο ρολόι επιπλέον της ώρας." #~ msgid "%a %b %e, %R:%S" #~ msgstr "%a %e %b, %R:%S" #~ msgid "%a %b %e, %R" #~ msgstr "%a %e %b, %R" #~ msgid "%a %R:%S" #~ msgstr "%a %R%a %R:%S" #~ msgid "%a %R" #~ msgstr "%a %R" #~ msgid "%a %b %e, %l:%M:%S %p" #~ msgstr "%a %e %b, %l:%M:%S %p" #~ msgid "%a %l:%M:%S %p" #~ msgstr "%a %l:%M:%S %p" #~ msgid "Hidden" #~ msgstr "Αόρατος" #~ msgid "Power Off..." #~ msgstr "Απενεργοποίηση..." #~ msgid "Online Accounts" #~ msgstr "Διαδικτυακοί λογαριασμοί" #~ msgid "Log Out..." #~ msgstr "Αποσύνδεση..." #~ msgid "RECENT ITEMS" #~ msgstr "ΠΡΟΣΦΑΤΑ ΑΝΤΙΚΕΙΜΕΝΑ" #~ msgid "" #~ "GNOME Shell extensions have a uuid property; this key lists extensions " #~ "which should not be loaded." #~ msgstr "" #~ "Οι επεκτάσεις του GNOME Shell έχουν μια ιδιότητα uuid. Αυτό το κλειδί " #~ "απαριθμεί ποιες επεκτάσεις δεν θα πρέπει να φορτωθούν." #~ msgid "Localization Settings" #~ msgstr "Ρυθμίσεις γλώσσας" #~ msgid "You're now connected to mobile broadband connection '%s'" #~ msgstr "Είστε συνδεμένοι στο δίκτυο κινητής ευρυζωνικής '%s'" #~ msgid "You're now connected to wireless network '%s'" #~ msgstr "Είστε συνδεμένοι στο ασύρματο δίκτυο '%s'" #~ msgid "You're now connected to wired network '%s'" #~ msgstr "Είστε συνδεμένοι στο ενσύρματο δίκτυο '%s'" #~ msgid "You're now connected to VPN network '%s'" #~ msgstr "Είστε συνδεμένοι στο VPN δίκτυο '%s'" #~ msgid "%s has finished starting" #~ msgstr "Το %s ολοκλήρωσε την εκκίνηση " #~ msgid "Less than a minute ago" #~ msgstr "Λιγότερο από ένα λεπτό πριν" #, fuzzy #~ msgid "Shut Down" #~ msgstr "Τερματισμός..." #~ msgid "Clip the crosshairs at the center" #~ msgstr "Περικοπή του σκοπεύτρου στο κέντρο" #~ msgid "Color of the crosshairs" #~ msgstr "Χρώμα του σκόπευτρου" #~ msgid "" #~ "Determines the length of the vertical and horizontal lines that make up " #~ "the crosshairs." #~ msgstr "" #~ "Καθορίζει το μήκος των κάθετων και οριζόντιων γραμμών που απαρτίζουν το " #~ "σκόπευτρο" #~ msgid "Enable lens mode" #~ msgstr "Ενεργοποίηση λειτουργίας φακού" #~ msgid "" #~ "Enables/disables display of crosshairs centered on the magnified mouse " #~ "sprite." #~ msgstr "" #~ "Ενεργοποιεί/απενεργοποιεί την εμφάνιση σκοπεύτρου στο δείκτη μεγέθυνσης " #~ "του ποντικιού" #~ msgid "Length of the crosshairs" #~ msgstr "Μήκος του σκοπεύτρου" #~ msgid "Magnification factor" #~ msgstr "Παράγοντας μεγέθυνσης" #~ msgid "Mouse Tracking Mode" #~ msgstr "Λειτουργία Mouse Tracking " #~ msgid "Opacity of the crosshairs" #~ msgstr "Αδιαφάνεια του σκοπεύτρου" #~ msgid "Scroll magnified contents beyond the edges of the desktop" #~ msgstr "" #~ "Κύλιση σε μεγεθυμένα περιεχόμενα που βρίσκονται έξω από την επιφάνεια" #~ msgid "Show or hide crosshairs" #~ msgstr "Προβολή ή απόκρυψη του σκοπεύτρου" #~ msgid "Show or hide the magnifier" #~ msgstr "Προβολή ή απόκρυψη του μεγεθυντή" #~ msgid "Show or hide the magnifier and all of its zoom regions." #~ msgstr "Προβολή ή απόκρυψη του μεγεθυντή και όλων των περιοχών μεγέθυνσης" #~ msgid "" #~ "The color of the the vertical and horizontal lines that make up the " #~ "crosshairs." #~ msgstr "" #~ "Το χρώμα των κάθετων και οριζόντιων γραμμών που απαρτίζουν το σκόπευτρο" #~ msgid "Thickness of the crosshairs" #~ msgstr "Πάχος των γραμμών σκοπεύτρου" #~ msgid "" #~ "Width of the vertical and horizontal lines that make up the crosshairs." #~ msgstr "" #~ " Το πάχος των κάθετων και οριζόντιων γραμμών που απαρτίζουν το σκόπευτρο" #~ msgid "PREFERENCES" #~ msgstr "ΠΡΟΤΙΜΗΣΕΙΣ" #~ msgid "Shut Down..." #~ msgstr "Τερματισμός..." #~ msgid "Search your computer" #~ msgstr "Αναζήτηση στον υπολογιστή σας" #~ msgid "" #~ "Can't add a new workspace because maximum workspaces limit has been " #~ "reached." #~ msgstr "" #~ "Αδυναμία προσθήκης νέου χώρου εργασίας επειδή έχετε φτάσει το μέγιστο " #~ "αριθμό χώρων εργασίας." #~ msgid "Can't remove the first workspace." #~ msgstr "Δεν είναι δυνατή η αφαίρεση του πρώτου χώρου εργασίας." 07070100000229000081A40000000000000000000000016712993F000205B2000000000000000000000000000000000000001D00000000gnome-shell-47.1/po/en_GB.po# British English translation for gnome-shell. # Copyright (C) 2009 gnome-shell's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-shell package. # Philip Withnall , 2009, 2010, 2014. # Chris Leonard , 2012. # Zander Brown , 2019-2021. # Andi Chandler , 2024. # Bruce Cowan , 2010-2024. # msgid "" msgstr "" "Project-Id-Version: gnome-shell master\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues/\n" "POT-Creation-Date: 2024-08-22 18:24+0000\n" "PO-Revision-Date: 2024-08-31 11:37+0100\n" "Last-Translator: Bruce Cowan \n" "Language-Team: English - United Kingdom \n" "Language: en_GB\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 3.4.4\n" "X-Project-Style: gnome\n" "X-DL-Team: en_GB\n" "X-DL-Module: gnome-shell\n" "X-DL-Branch: main\n" "X-DL-Domain: po\n" "X-DL-State: Translating\n" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "Launchers" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate pinned app 1" msgstr "Activate pinned app 1" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate pinned app 2" msgstr "Activate pinned app 2" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate pinned app 3" msgstr "Activate pinned app 3" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate pinned app 4" msgstr "Activate pinned app 4" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate pinned app 5" msgstr "Activate pinned app 5" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate pinned app 6" msgstr "Activate pinned app 6" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate pinned app 7" msgstr "Activate pinned app 7" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate pinned app 8" msgstr "Activate pinned app 8" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate pinned app 9" msgstr "Activate pinned app 9" #: data/50-gnome-shell-launchers.xml:46 msgid "Open new window of pinned app 1" msgstr "Open new window of pinned app 1" #: data/50-gnome-shell-launchers.xml:50 msgid "Open new window of pinned app 2" msgstr "Open new window of pinned app 2" #: data/50-gnome-shell-launchers.xml:54 msgid "Open new window of pinned app 3" msgstr "Open new window of pinned app 3" #: data/50-gnome-shell-launchers.xml:58 msgid "Open new window of pinned app 4" msgstr "Open new window of pinned app 4" #: data/50-gnome-shell-launchers.xml:62 msgid "Open new window of pinned app 5" msgstr "Open new window of pinned app 5" #: data/50-gnome-shell-launchers.xml:66 msgid "Open new window of pinned app 6" msgstr "Open new window of pinned app 6" #: data/50-gnome-shell-launchers.xml:70 msgid "Open new window of pinned app 7" msgstr "Open new window of pinned app 7" #: data/50-gnome-shell-launchers.xml:74 msgid "Open new window of pinned app 8" msgstr "Open new window of pinned app 8" #: data/50-gnome-shell-launchers.xml:78 msgid "Open new window of pinned app 9" msgstr "Open new window of pinned app 9" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2274 msgid "Screenshots" msgstr "Screenshots" #: data/50-gnome-shell-screenshots.xml:9 #: data/org.gnome.shell.gschema.xml.in:287 msgid "Take a screenshot interactively" msgstr "Take a screenshot interactively" #: data/50-gnome-shell-screenshots.xml:12 #: data/org.gnome.shell.gschema.xml.in:299 msgid "Take a screenshot" msgstr "Take a screenshot" #: data/50-gnome-shell-screenshots.xml:15 #: data/org.gnome.shell.gschema.xml.in:295 msgid "Take a screenshot of a window" msgstr "Take a screenshot of a window" #: data/50-gnome-shell-screenshots.xml:18 #: data/org.gnome.shell.gschema.xml.in:291 msgid "Record a screencast interactively" msgstr "Record a screencast interactively" #: data/50-gnome-shell-system.xml:6 js/ui/messageTray.js:1298 msgid "System" msgstr "System" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "Show the notification list" #: data/50-gnome-shell-system.xml:12 msgid "Open the quick settings menu" msgstr "Open the quick settings menu" #: data/50-gnome-shell-system.xml:15 msgid "Focus the active notification" msgstr "Focus the active notification" #: data/50-gnome-shell-system.xml:18 msgid "Show the overview" msgstr "Show the overview" #: data/50-gnome-shell-system.xml:21 msgid "Show all apps" msgstr "Show all apps" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "GNOME Shell" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "Window management and application launching" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "Enable internal tools useful for developers and testers from Alt+F2" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Allows access to internal debugging and monitoring tools using the Alt+F2 " "dialogue." #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "UUIDs of extensions to enable" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "UUIDs of extensions to force disabling" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "Disable user extensions" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." #: data/org.gnome.shell.gschema.xml.in:45 msgid "Allow extension installation" msgstr "Allow extension installation" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "Allow users to install extensions in their home folder. If disabled, the " "InstallRemoteExtension D-Bus method will fail, and extensions are only " "loaded from system directories on startup. It does not affect extensions " "that are already loaded, so a change only takes full effect on the next " "login." msgstr "" "Allow users to install extensions in their home folder. If disabled, the " "InstallRemoteExtension D-Bus method will fail, and extensions are only " "loaded from system directories on startup. It does not affect extensions " "that are already loaded, so a change only takes full effect on the next " "login." #: data/org.gnome.shell.gschema.xml.in:56 msgid "Disables the validation of extension version compatibility" msgstr "Disables the validation of extension version compatibility" #: data/org.gnome.shell.gschema.xml.in:57 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." #: data/org.gnome.shell.gschema.xml.in:65 msgid "List of desktop file IDs for favorite applications" msgstr "List of desktop file IDs for favourite applications" #: data/org.gnome.shell.gschema.xml.in:66 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" "The applications corresponding to these identifiers will be displayed in the " "favourites area." #: data/org.gnome.shell.gschema.xml.in:73 msgid "History for command (Alt-F2) dialog" msgstr "History for command (Alt+F2) dialogue" #. Translators: looking glass is a debugger and inspector tool, see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/docs/looking-glass.md #: data/org.gnome.shell.gschema.xml.in:78 msgid "History for the looking glass dialog" msgstr "History for the looking glass dialogue" #: data/org.gnome.shell.gschema.xml.in:82 msgid "Always show the “Log Out” action in the system menu" msgstr "Always show the “Log Out” action in the system menu" #: data/org.gnome.shell.gschema.xml.in:83 msgid "" "This key overrides the automatic hiding of the “Log out” action in the " "system menu for logged-in situations where there is a single, local, non-" "system user and only a single available session type (e.g. GNOME on Wayland)." msgstr "" "This key overrides the automatic hiding of the “Log out” action in the " "system menu for logged-in situations where there is a single, local, non-" "system user and only a single available session type (e.g. GNOME on Wayland)." #: data/org.gnome.shell.gschema.xml.in:92 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "Whether to remember password for mounting encrypted or remote filesystems" #: data/org.gnome.shell.gschema.xml.in:93 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” tickbox will be present. This key sets the default state " "of the tickbox." #: data/org.gnome.shell.gschema.xml.in:102 msgid "The last selected non-default power profile" msgstr "The last selected non-default power profile" #: data/org.gnome.shell.gschema.xml.in:103 msgid "" "Some systems support more than two power profiles. In order to still support " "toggling between two profiles, this key records the last selected non-" "default profile." msgstr "" "Some systems support more than two power profiles. In order to still support " "toggling between two profiles, this key records the last selected non-" "default profile." #: data/org.gnome.shell.gschema.xml.in:111 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "The last version the “Welcome to GNOME” dialogue was shown for" #: data/org.gnome.shell.gschema.xml.in:112 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can " "be used to effectively disable the dialog." msgstr "" "This key determines for which version the “Welcome to GNOME” dialogue was " "last shown. An empty string represents the oldest possible version, and a " "huge number will represent versions that do not exist yet. This huge number " "can be used to effectively disable the dialogue." #: data/org.gnome.shell.gschema.xml.in:145 msgid "Layout of the app picker" msgstr "Layout of the app picker" #: data/org.gnome.shell.gschema.xml.in:146 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" msgstr "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" #: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:172 msgid "Keybinding to shift between overview states" msgstr "Keybinding to shift between overview states" #: data/org.gnome.shell.gschema.xml.in:166 msgid "Keybinding to shift between session, window picker and app grid" msgstr "Keybinding to shift between session, window picker and app grid" #: data/org.gnome.shell.gschema.xml.in:173 msgid "Keybinding to shift between app grid, window picker and session" msgstr "Keybinding to shift between app grid, window picker and session" #: data/org.gnome.shell.gschema.xml.in:179 msgid "Keybinding to open the “Show Applications” view" msgstr "Keybinding to open the “Show Applications” view" #: data/org.gnome.shell.gschema.xml.in:180 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "" "Keybinding to open the “Show Applications” view of the Activities Overview." #: data/org.gnome.shell.gschema.xml.in:187 msgid "Keybinding to open the overview" msgstr "Keybinding to open the overview" #: data/org.gnome.shell.gschema.xml.in:188 msgid "Keybinding to open the Activities Overview." msgstr "Keybinding to open the Activities Overview." #: data/org.gnome.shell.gschema.xml.in:194 msgid "Keybinding to toggle the visibility of the notification list" msgstr "Keybinding to toggle the visibility of the notification list" #: data/org.gnome.shell.gschema.xml.in:195 msgid "Keybinding to toggle the visibility of the notification list." msgstr "Keybinding to toggle the visibility of the notification list." #: data/org.gnome.shell.gschema.xml.in:201 msgid "Keybinding to toggle the quick settings menu" msgstr "Keybinding to toggle the quick settings menu" #: data/org.gnome.shell.gschema.xml.in:202 msgid "Keybinding to toggle the quick settings menu." msgstr "Keybinding to toggle the quick settings menu." #: data/org.gnome.shell.gschema.xml.in:208 msgid "Keybinding to focus the active notification" msgstr "Keybinding to focus the active notification" #: data/org.gnome.shell.gschema.xml.in:209 msgid "Keybinding to focus the active notification." msgstr "Keybinding to focus the active notification." #: data/org.gnome.shell.gschema.xml.in:215 msgid "Switch to application 1" msgstr "Switch to application 1" #: data/org.gnome.shell.gschema.xml.in:219 msgid "Switch to application 2" msgstr "Switch to application 2" #: data/org.gnome.shell.gschema.xml.in:223 msgid "Switch to application 3" msgstr "Switch to application 3" #: data/org.gnome.shell.gschema.xml.in:227 msgid "Switch to application 4" msgstr "Switch to application 4" #: data/org.gnome.shell.gschema.xml.in:231 msgid "Switch to application 5" msgstr "Switch to application 5" #: data/org.gnome.shell.gschema.xml.in:235 msgid "Switch to application 6" msgstr "Switch to application 6" #: data/org.gnome.shell.gschema.xml.in:239 msgid "Switch to application 7" msgstr "Switch to application 7" #: data/org.gnome.shell.gschema.xml.in:243 msgid "Switch to application 8" msgstr "Switch to application 8" #: data/org.gnome.shell.gschema.xml.in:247 msgid "Switch to application 9" msgstr "Switch to application 9" #: data/org.gnome.shell.gschema.xml.in:251 msgid "Open a new instance of application 1" msgstr "Open a new instance of application 1" #: data/org.gnome.shell.gschema.xml.in:255 msgid "Open a new instance of application 2" msgstr "Open a new instance of application 2" #: data/org.gnome.shell.gschema.xml.in:259 msgid "Open a new instance of application 3" msgstr "Open a new instance of application 3" #: data/org.gnome.shell.gschema.xml.in:263 msgid "Open a new instance of application 4" msgstr "Open a new instance of application 4" #: data/org.gnome.shell.gschema.xml.in:267 msgid "Open a new instance of application 5" msgstr "Open a new instance of application 5" #: data/org.gnome.shell.gschema.xml.in:271 msgid "Open a new instance of application 6" msgstr "Open a new instance of application 6" #: data/org.gnome.shell.gschema.xml.in:275 msgid "Open a new instance of application 7" msgstr "Open a new instance of application 7" #: data/org.gnome.shell.gschema.xml.in:279 msgid "Open a new instance of application 8" msgstr "Open a new instance of application 8" #: data/org.gnome.shell.gschema.xml.in:283 msgid "Open a new instance of application 9" msgstr "Open a new instance of application 9" #: data/org.gnome.shell.gschema.xml.in:308 #: data/org.gnome.shell.gschema.xml.in:335 msgid "Limit switcher to current workspace." msgstr "Limit switcher to current workspace." #: data/org.gnome.shell.gschema.xml.in:309 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." #: data/org.gnome.shell.gschema.xml.in:326 msgid "The application icon mode." msgstr "The application icon mode." #: data/org.gnome.shell.gschema.xml.in:327 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-only” " "(shows only the application icon) or “both”." msgstr "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-only” " "(shows only the application icon) or “both”." #: data/org.gnome.shell.gschema.xml.in:336 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." #: data/org.gnome.shell.gschema.xml.in:346 msgid "Locations" msgstr "Locations" #: data/org.gnome.shell.gschema.xml.in:347 msgid "The locations to show in world clocks" msgstr "The locations to show in world clocks" #: data/org.gnome.shell.gschema.xml.in:357 msgid "Automatic location" msgstr "Automatic location" #: data/org.gnome.shell.gschema.xml.in:358 msgid "Whether to fetch the current location or not" msgstr "Whether to fetch the current location or not" #: data/org.gnome.shell.gschema.xml.in:365 msgid "Location" msgstr "Location" #: data/org.gnome.shell.gschema.xml.in:366 msgid "The location for which to show a forecast" msgstr "The location for which to show a forecast" #. Keep in sync with subprojects/extensions-app #: data/org.gnome.Shell.Extensions.desktop.in.in:5 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/data/ui/extensions-window.ui:57 msgid "Extensions" msgstr "Extensions" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "Network Login" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:275 msgid "Something’s gone wrong" msgstr "Something’s gone wrong" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "Technical Details" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "Homepage" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 msgid "Visit extension homepage" msgstr "Visit extension homepage" #: js/gdm/authPrompt.js:151 js/gdm/loginDialog.js:466 #: js/ui/audioDeviceSelection.js:66 js/ui/components/networkAgent.js:113 #: js/ui/components/polkitAgent.js:144 js/ui/endSessionDialog.js:437 #: js/ui/extensionDownloader.js:276 js/ui/shellMountOperation.js:382 #: js/ui/shellMountOperation.js:392 msgid "Cancel" msgstr "Cancel" #: js/gdm/authPrompt.js:317 js/ui/components/networkAgent.js:213 #: js/ui/components/networkAgent.js:233 js/ui/components/networkAgent.js:265 #: js/ui/components/networkAgent.js:298 js/ui/components/networkAgent.js:337 #: js/ui/components/networkAgent.js:350 js/ui/components/polkitAgent.js:286 #: js/ui/shellMountOperation.js:332 msgid "Password" msgstr "Password" #: js/gdm/loginDialog.js:326 msgid "Choose Session" msgstr "Choose Session" #. Translators: is running for #: js/gdm/loginDialog.js:424 #, javascript-format msgid "" "Remote login is not possible because a remote session is already running for " "%s. To login remotely, you must log out from the remote session or force " "stop it." msgstr "" "Remote login is not possible because a remote session is already running for " "%s. To login remotely, you must log out from the remote session or force " "stop it." #. Translators: is running for #: js/gdm/loginDialog.js:427 #, javascript-format msgid "" "Login is not possible because a remote session is already running for %s. To " "login, you must log out from the remote session or force stop it." msgstr "" "Login is not possible because a remote session is already running for %s. To " "login, you must log out from the remote session or force stop it." #. Translators: is running for #: js/gdm/loginDialog.js:430 #, javascript-format msgid "" "Remote login is not possible because a local session is already running for " "%s. To login remotely, you must log out from the local session or force stop " "it." msgstr "" "Remote login is not possible because a local session is already running for " "%s. To login remotely, you must log out from the local session or force stop " "it." #. Translators: is running for #: js/gdm/loginDialog.js:433 #, javascript-format msgid "" "Login is not possible because a session is already running for %s. To login, " "you must log out from the session or force stop it." msgstr "" "Login is not possible because a session is already running for %s. To login, " "you must log out from the session or force stop it." #: js/gdm/loginDialog.js:442 msgid "Session Already Running" msgstr "Session Already Running" #: js/gdm/loginDialog.js:454 msgid "" "Force stopping will quit any running apps and processes, and could result in " "data loss" msgstr "" "Force stopping will quit any running apps and processes, and could result in " "data loss" #: js/gdm/loginDialog.js:474 msgid "Force Stop" msgstr "Force Stop" #: js/gdm/loginDialog.js:542 msgid "Not listed?" msgstr "Not listed?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:1010 #, javascript-format msgid "(e.g., user or %s)" msgstr "(e.g., user or %s)" #: js/gdm/loginDialog.js:1015 js/ui/components/networkAgent.js:257 #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:326 msgid "Username" msgstr "Username" #: js/gdm/loginDialog.js:1081 msgid "Login Attempt Timed Out" msgstr "Login Attempt Timed Out" #: js/gdm/loginDialog.js:1082 msgid "Login took too long, please try again" msgstr "Login took too long, please try again" #: js/gdm/loginDialog.js:1431 msgid "Login Window" msgstr "Login Window" #: js/gdm/util.js:496 msgid "Authentication error" msgstr "Authentication error" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:727 msgid "(or swipe finger across reader)" msgstr "(or swipe finger across reader)" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:732 msgid "(or place finger on reader)" msgstr "(or place finger on reader)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:91 msgctxt "search-result" msgid "Power Off" msgstr "Power Off" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:94 msgid "power off;poweroff;shutdown;halt;stop" msgstr "power off;poweroff;shutdown;halt;stop" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:99 msgctxt "search-result" msgid "Restart" msgstr "Restart" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:102 msgid "reboot;restart;" msgstr "reboot;restart;" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:107 msgctxt "search-result" msgid "Lock Screen" msgstr "Lock Screen" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:110 msgid "lock screen" msgstr "lock screen" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:115 msgctxt "search-result" msgid "Log Out" msgstr "Log Out" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:118 msgid "logout;log out;sign off" msgstr "logout;log out;sign off" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:123 msgctxt "search-result" msgid "Suspend" msgstr "Suspend" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:126 msgid "suspend;sleep" msgstr "suspend;sleep" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:131 msgctxt "search-result" msgid "Switch User" msgstr "Switch User" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:134 msgid "switch user" msgstr "switch user" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:141 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "lock orientation;unlock orientation;screen;rotation" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:146 msgctxt "search-result" msgid "Take a Screenshot" msgstr "Take a Screenshot" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:149 msgid "screenshot;screencast;snip;capture;record" msgstr "screenshot;screencast;snip;capture;record" #: js/misc/systemActions.js:249 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "Unlock Screen Rotation" #: js/misc/systemActions.js:250 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "Lock Screen Rotation" #: js/misc/util.js:130 msgid "Command not found" msgstr "Command not found" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:170 msgid "Could not parse command:" msgstr "Could not parse command:" #: js/misc/util.js:178 #, javascript-format msgid "Execution of “%s” failed:" msgstr "Execution of “%s” failed:" #: js/misc/dateUtils.js:69 msgid "Just now" msgstr "Just now" #: js/misc/dateUtils.js:72 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d minute ago" msgstr[1] "%d minutes ago" #: js/misc/dateUtils.js:79 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d hour ago" msgstr[1] "%d hours ago" #: js/misc/dateUtils.js:85 js/ui/dateMenu.js:183 msgid "Yesterday" msgstr "Yesterday" #: js/misc/dateUtils.js:88 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d day ago" msgstr[1] "%d days ago" #: js/misc/dateUtils.js:95 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d week ago" msgstr[1] "%d weeks ago" #: js/misc/dateUtils.js:102 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%d month ago" msgstr[1] "%d months ago" #: js/misc/dateUtils.js:108 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "%d year ago" msgstr[1] "%d years ago" #. Translators: Time in 24h format #: js/misc/dateUtils.js:155 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/dateUtils.js:161 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "Yesterday, %H∶%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/dateUtils.js:167 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/dateUtils.js:173 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%-d %B, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/dateUtils.js:179 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%-d %B %Y, %H∶%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/dateUtils.js:184 msgid "%l∶%M %p" msgstr "%l:%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/dateUtils.js:190 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "Yesterday, %l∶%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/dateUtils.js:196 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %l:%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/dateUtils.js:202 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%-d %B, %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/dateUtils.js:208 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%-d %B %Y, %l∶%M %p" #: js/portalHelper/main.js:98 msgid "Your connection seems to be secure" msgstr "Your connection seems to be secure" #: js/portalHelper/main.js:104 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." #: js/portalHelper/main.js:115 msgid "Hotspot Login" msgstr "Hotspot Login" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:51 js/ui/inhibitShortcutsDialog.js:92 msgid "Deny" msgstr "Deny" #: js/ui/accessDialog.js:52 js/ui/inhibitShortcutsDialog.js:101 msgid "Allow" msgstr "Allow" #: js/ui/appDisplay.js:1769 msgid "Unnamed Folder" msgstr "Unnamed Folder" #: js/ui/appFavorites.js:163 #, javascript-format msgid "%s has been pinned to the dash." msgstr "%s has been pinned to the dash." #: js/ui/appFavorites.js:194 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "%s has been unpinned from the dash." #: js/ui/appFavorites.js:208 js/ui/main.js:281 msgid "Undo" msgstr "Undo" #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:49 msgid "Open Windows" msgstr "Open Windows" #: js/ui/appMenu.js:57 msgid "New Window" msgstr "New Window" #: js/ui/appMenu.js:84 msgid "App Details" msgstr "App Details" #: js/ui/appMenu.js:100 msgid "Quit" msgstr "Quit" #: js/ui/appMenu.js:160 js/ui/dash.js:248 msgid "Unpin" msgstr "Unpin" #: js/ui/appMenu.js:161 msgid "Pin to Dash" msgstr "Pin to Dash" #: js/ui/appMenu.js:178 msgid "Launch using Integrated Graphics Card" msgstr "Launch using Integrated Graphics Card" #: js/ui/appMenu.js:179 msgid "Launch using Discrete Graphics Card" msgstr "Launch using Discrete Graphics Card" #: js/ui/audioDeviceSelection.js:46 msgid "Select Audio Device" msgstr "Select Audio Device" #: js/ui/audioDeviceSelection.js:61 js/ui/status/volume.js:81 msgid "Sound Settings" msgstr "Sound Settings" #: js/ui/audioDeviceSelection.js:74 msgid "Headphones" msgstr "Headphones" #: js/ui/audioDeviceSelection.js:76 msgid "Headset" msgstr "Headset" #: js/ui/audioDeviceSelection.js:78 js/ui/status/volume.js:356 msgid "Microphone" msgstr "Microphone" #: js/ui/backgroundMenu.js:13 msgid "Change Background…" msgstr "Change Background…" #: js/ui/backgroundMenu.js:15 msgid "Display Settings" msgstr "Display Settings" #: js/ui/backgroundMenu.js:16 msgid "Settings" msgstr "Settings" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:37 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:63 msgctxt "grid sunday" msgid "S" msgstr "S" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:65 msgctxt "grid monday" msgid "M" msgstr "M" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:67 msgctxt "grid tuesday" msgid "T" msgstr "T" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:69 msgctxt "grid wednesday" msgid "W" msgstr "W" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:71 msgctxt "grid thursday" msgid "T" msgstr "T" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:73 msgctxt "grid friday" msgid "F" msgstr "F" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:75 msgctxt "grid saturday" msgid "S" msgstr "S" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:426 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:436 msgid "%OB %Y" msgstr "%OB %Y" #: js/ui/calendar.js:498 msgid "Previous month" msgstr "Previous month" #: js/ui/calendar.js:516 msgid "Next month" msgstr "Next month" #: js/ui/calendar.js:667 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:726 msgid "Week %V" msgstr "Week %V" #: js/ui/calendar.js:918 msgid "No Notifications" msgstr "No Notifications" #: js/ui/calendar.js:974 msgid "Do Not Disturb" msgstr "Do Not Disturb" #: js/ui/calendar.js:995 msgid "Clear" msgstr "Clear" #: js/ui/calendar.js:999 msgctxt "action" msgid "Clear all notifications" msgstr "Clear all notifications" #. Translators: %s is an application name #: js/ui/closeDialog.js:42 #, javascript-format msgid "“%s” Is Not Responding" msgstr "“%s” Is Not Responding" #: js/ui/closeDialog.js:43 msgid "" "You may choose to wait a short while for it to continue or force the app to " "quit entirely" msgstr "" "You may choose to wait a short while for it to continue or force the app to " "quit entirely" #: js/ui/closeDialog.js:71 msgid "Force Quit" msgstr "Force Quit" #: js/ui/closeDialog.js:76 msgid "Wait" msgstr "Wait" #: js/ui/components/automountManager.js:82 msgid "External drive connected" msgstr "External drive connected" #: js/ui/components/automountManager.js:94 msgid "External drive disconnected" msgstr "External drive disconnected" #: js/ui/components/automountManager.js:208 msgid "Unable to unlock volume" msgstr "Unable to unlock volume" #: js/ui/components/automountManager.js:209 msgid "The installed udisks version does not support the PIM setting" msgstr "The installed udisks version does not support the PIM setting" #. Translators: %s is the name of a partition on a external drive #: js/ui/components/autorunManager.js:189 #, javascript-format msgid "“%s” connected" msgstr "“%s” connected" #: js/ui/components/autorunManager.js:190 msgid "Disk can now be used" msgstr "Disk can now be used" #: js/ui/components/autorunManager.js:202 #, javascript-format msgid "Open with %s" msgstr "Open with %s" #: js/ui/components/networkAgent.js:95 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router" msgstr "" "Alternatively you can connect by pushing the “WPS” button on your router" #: js/ui/components/networkAgent.js:107 js/ui/status/bluetooth.js:245 #: js/ui/status/network.js:360 js/ui/status/network.js:444 msgid "Connect" msgstr "Connect" #: js/ui/components/networkAgent.js:222 msgid "Key" msgstr "Key" #: js/ui/components/networkAgent.js:273 js/ui/components/networkAgent.js:312 msgid "Private key password" msgstr "Private key password" #: js/ui/components/networkAgent.js:306 msgid "Identity" msgstr "Identity" #: js/ui/components/networkAgent.js:332 msgid "Service" msgstr "Service" #: js/ui/components/networkAgent.js:370 js/ui/components/networkAgent.js:406 #: js/ui/components/networkAgent.js:743 js/ui/components/networkAgent.js:764 msgid "Authentication required" msgstr "Authentication required" #: js/ui/components/networkAgent.js:371 js/ui/components/networkAgent.js:744 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network “%s”" msgstr "" "Passwords or encryption keys are required to access the wireless network “%s”" #: js/ui/components/networkAgent.js:375 js/ui/components/networkAgent.js:748 msgid "Wired 802.1X authentication" msgstr "Wired 802.1X authentication" #: js/ui/components/networkAgent.js:378 msgid "Network name" msgstr "Network name" #: js/ui/components/networkAgent.js:386 js/ui/components/networkAgent.js:752 msgid "DSL authentication" msgstr "DSL authentication" #: js/ui/components/networkAgent.js:393 js/ui/components/networkAgent.js:757 msgid "PIN code required" msgstr "PIN code required" #: js/ui/components/networkAgent.js:394 js/ui/components/networkAgent.js:758 msgid "PIN code is needed for the mobile broadband device" msgstr "PIN code is needed for the mobile broadband device" #: js/ui/components/networkAgent.js:396 msgid "PIN" msgstr "PIN" #: js/ui/components/networkAgent.js:407 js/ui/components/networkAgent.js:749 #: js/ui/components/networkAgent.js:753 js/ui/components/networkAgent.js:765 #: js/ui/components/networkAgent.js:769 #, javascript-format msgid "A password is required to connect to “%s”" msgstr "A password is required to connect to “%s”" #: js/ui/components/networkAgent.js:768 msgid "VPN password" msgstr "VPN password" #: js/ui/components/polkitAgent.js:44 msgid "Authentication Required" msgstr "Authentication Required" #: js/ui/components/polkitAgent.js:84 msgid "Administrator" msgstr "Administrator" #: js/ui/components/polkitAgent.js:149 msgid "Authenticate" msgstr "Authenticate" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:263 js/ui/shellMountOperation.js:415 msgid "Sorry, that didn’t work. Please try again." msgstr "Sorry, that didn’t work. Please try again." #: js/ui/ctrlAltTab.js:23 js/ui/overviewControls.js:404 msgid "Windows" msgstr "Windows" #: js/ui/dash.js:204 js/ui/dash.js:250 msgid "Show Apps" msgstr "Show Apps" #. Translators: this is the name of the dock/favorites area on #. the bottom of the overview #: js/ui/dash.js:408 msgid "Dash" msgstr "Dash" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:99 msgid "%B %-d %Y" msgstr "%-d %B %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:106 msgid "%A %B %e %Y" msgstr "%A %e %B %Y" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:172 msgctxt "calendar heading" msgid "%B %-d" msgstr "%-d %B" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:175 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%-d %B %Y" #: js/ui/dateMenu.js:181 msgid "Today" msgstr "Today" #: js/ui/dateMenu.js:185 msgid "Tomorrow" msgstr "Tomorrow" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:216 msgctxt "event list time" msgid "All Day" msgstr "All Day" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:238 msgid "%m/%d" msgstr "%d/%m" #: js/ui/dateMenu.js:289 msgid "No Events" msgstr "No Events" #: js/ui/dateMenu.js:411 msgid "Add World Clocks…" msgstr "Add World Clocks…" #: js/ui/dateMenu.js:412 msgid "World Clocks" msgstr "World Clocks" #: js/ui/dateMenu.js:702 msgid "Loading…" msgstr "Loading…" #: js/ui/dateMenu.js:712 msgid "Go Online for Weather Information" msgstr "Go Online for Weather Information" #: js/ui/dateMenu.js:714 msgid "Weather Information Unavailable" msgstr "Weather Information Unavailable" #: js/ui/dateMenu.js:724 msgid "Weather" msgstr "Weather" #: js/ui/dateMenu.js:726 msgid "Select Weather Location…" msgstr "Select Weather Location…" #: js/ui/endSessionDialog.js:47 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "Log Out %s" #: js/ui/endSessionDialog.js:48 msgctxt "title" msgid "Log Out" msgstr "Log Out" #: js/ui/endSessionDialog.js:51 #, javascript-format msgid "%s will be logged out automatically in %d second" msgid_plural "%s will be logged out automatically in %d seconds" msgstr[0] "%s will be logged out automatically in %d second" msgstr[1] "%s will be logged out automatically in %d seconds" #: js/ui/endSessionDialog.js:57 #, javascript-format msgid "You will be logged out automatically in %d second" msgid_plural "You will be logged out automatically in %d seconds" msgstr[0] "You will be logged out automatically in %d second" msgstr[1] "You will be logged out automatically in %d seconds" #: js/ui/endSessionDialog.js:64 msgctxt "button" msgid "Log Out" msgstr "Log Out" #: js/ui/endSessionDialog.js:70 js/ui/status/system.js:174 msgctxt "title" msgid "Power Off" msgstr "Power Off" #: js/ui/endSessionDialog.js:71 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Install Updates & Power Off" #: js/ui/endSessionDialog.js:74 #, javascript-format msgid "The system will power off automatically in %d second" msgid_plural "The system will power off automatically in %d seconds" msgstr[0] "The system will power off automatically in %d second" msgstr[1] "The system will power off automatically in %d seconds" #: js/ui/endSessionDialog.js:78 js/ui/endSessionDialog.js:97 msgctxt "checkbox" msgid "Install pending software updates" msgstr "Install pending software updates" #: js/ui/endSessionDialog.js:82 msgctxt "button" msgid "Power Off" msgstr "Power Off" #: js/ui/endSessionDialog.js:89 msgctxt "title" msgid "Restart" msgstr "Restart" #: js/ui/endSessionDialog.js:90 msgctxt "title" msgid "Install Updates & Restart" msgstr "Install Updates & Restart" #: js/ui/endSessionDialog.js:93 #, javascript-format msgid "The system will restart automatically in %d second" msgid_plural "The system will restart automatically in %d seconds" msgstr[0] "The system will restart automatically in %d second" msgstr[1] "The system will restart automatically in %d seconds" #: js/ui/endSessionDialog.js:101 msgctxt "button" msgid "Restart" msgstr "Restart" #: js/ui/endSessionDialog.js:109 msgctxt "title" msgid "Restart & Install Updates" msgstr "Restart & Install Updates" #: js/ui/endSessionDialog.js:112 #, javascript-format msgid "The system will automatically restart and install updates in %d second" msgid_plural "" "The system will automatically restart and install updates in %d seconds" msgstr[0] "" "The system will automatically restart and install updates in %d second" msgstr[1] "" "The system will automatically restart and install updates in %d seconds" #: js/ui/endSessionDialog.js:119 js/ui/endSessionDialog.js:140 msgctxt "button" msgid "Restart & Install" msgstr "Restart & Install" #: js/ui/endSessionDialog.js:121 msgctxt "button" msgid "Install & Power Off" msgstr "Install & Power Off" #: js/ui/endSessionDialog.js:122 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Power off after updates are installed" #: js/ui/endSessionDialog.js:129 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "Restart & Install Upgrade" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:134 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." #: js/ui/endSessionDialog.js:283 msgid "Low battery power: please plug in before installing updates" msgstr "Low battery power: please plug in before installing updates" #: js/ui/endSessionDialog.js:292 msgid "Some applications are busy or have unsaved work" msgstr "Some applications are busy or have unsaved work" #: js/ui/endSessionDialog.js:297 msgid "Other users are logged in" msgstr "Other users are logged in" #: js/ui/endSessionDialog.js:467 msgctxt "button" msgid "Boot Options" msgstr "Boot Options" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:672 #, javascript-format msgid "%s (remote)" msgstr "%s (remote)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:675 #, javascript-format msgid "%s (console)" msgstr "%s (console)" #: js/ui/extensionDownloader.js:280 msgid "Install" msgstr "Install" #: js/ui/extensionDownloader.js:286 msgid "Install Extension" msgstr "Install Extension" #: js/ui/extensionDownloader.js:287 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "Download and install “%s” from extensions.gnome.org?" #: js/ui/extensionSystem.js:352 msgid "Extension Updates Available" msgstr "Extension Updates Available" #: js/ui/extensionSystem.js:353 msgid "Extension updates are ready to be installed" msgstr "Extension updates are ready to be installed" #: js/ui/inhibitShortcutsDialog.js:70 msgid "Allow inhibiting shortcuts" msgstr "Allow inhibiting shortcuts" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:73 #, javascript-format msgid "The app %s wants to inhibit shortcuts" msgstr "The app %s wants to inhibit shortcuts" #: js/ui/inhibitShortcutsDialog.js:74 msgid "An app wants to inhibit shortcuts" msgstr "An app wants to inhibit shortcuts" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:81 #, javascript-format msgid "You can restore shortcuts by pressing %s" msgstr "You can restore shortcuts by pressing %s" #: js/ui/kbdA11yDialog.js:34 msgid "Slow Keys Turned On" msgstr "Slow Keys Turned On" #: js/ui/kbdA11yDialog.js:35 msgid "Slow Keys Turned Off" msgstr "Slow Keys Turned Off" #: js/ui/kbdA11yDialog.js:36 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." #: js/ui/kbdA11yDialog.js:42 msgid "Sticky Keys Turned On" msgstr "Sticky Keys Turned On" #: js/ui/kbdA11yDialog.js:43 msgid "Sticky Keys Turned Off" msgstr "Sticky Keys Turned Off" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." #: js/ui/kbdA11yDialog.js:47 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." #: js/ui/kbdA11yDialog.js:57 msgid "Leave On" msgstr "Leave On" #: js/ui/kbdA11yDialog.js:57 msgid "Turn On" msgstr "Turn On" #: js/ui/kbdA11yDialog.js:67 js/ui/status/network.js:455 msgid "Turn Off" msgstr "Turn Off" #: js/ui/kbdA11yDialog.js:67 msgid "Leave Off" msgstr "Leave Off" #: js/ui/keyboard.js:180 js/ui/status/keyboard.js:897 msgid "Keyboard Settings" msgstr "Keyboard Settings" #: js/ui/lookingGlass.js:727 msgid "No extensions installed" msgstr "No extensions installed" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:788 #, javascript-format msgid "%s has not emitted any errors" msgstr "%s has not emitted any errors" #: js/ui/lookingGlass.js:794 msgid "Hide Errors" msgstr "Hide Errors" #: js/ui/lookingGlass.js:798 js/ui/lookingGlass.js:875 msgid "Show Errors" msgstr "Show Errors" #: js/ui/lookingGlass.js:807 msgid "Active" msgstr "Active" #: js/ui/lookingGlass.js:810 msgid "Inactive" msgstr "Inactive" #: js/ui/lookingGlass.js:812 msgid "Error" msgstr "Error" #: js/ui/lookingGlass.js:814 msgid "Out of date" msgstr "Out of date" #: js/ui/lookingGlass.js:816 msgid "Downloading" msgstr "Downloading" #: js/ui/lookingGlass.js:818 msgid "Deactivating" msgstr "Deactivating" #: js/ui/lookingGlass.js:820 msgid "Activating" msgstr "Activating" #: js/ui/lookingGlass.js:853 msgid "View Source" msgstr "View Source" #: js/ui/lookingGlass.js:864 msgid "Web Page" msgstr "Web Page" #: js/ui/main.js:277 msgid "System was put in unsafe mode" msgstr "System was put in unsafe mode" #: js/ui/main.js:278 msgid "Apps now have unrestricted access" msgstr "Apps now have unrestricted access" #: js/ui/main.js:338 msgid "Logged in as a privileged user" msgstr "Logged in as a privileged user" #: js/ui/main.js:339 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." #: js/ui/main.js:387 msgid "Screen Lock disabled" msgstr "Screen Lock disabled" #: js/ui/main.js:388 msgid "Screen Locking requires the GNOME display manager" msgstr "Screen Locking requires the GNOME display manager" #. Translators: this is the string displayed in the header when a message #. source doesn't have a name #: js/ui/messageList.js:374 msgid "Unknown App" msgstr "Unknown App" #: js/ui/messageTray.js:326 js/ui/messageTray.js:328 msgid "Notification sound" msgstr "Notification sound" #: js/ui/mpris.js:198 msgid "Unknown artist" msgstr "Unknown artist" #: js/ui/mpris.js:208 msgid "Unknown title" msgstr "Unknown title" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:328 msgid "Type to search" msgstr "Type to search" #: js/ui/overviewControls.js:392 msgid "Apps" msgstr "Apps" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:33 msgid "Overview" msgstr "Overview" #: js/ui/padOsd.js:98 msgid "New shortcut…" msgstr "New shortcut…" #: js/ui/padOsd.js:151 msgid "App defined" msgstr "App defined" #: js/ui/padOsd.js:152 msgid "Show on-screen help" msgstr "Show on-screen help" #: js/ui/padOsd.js:153 msgid "Switch monitor" msgstr "Switch monitor" #: js/ui/padOsd.js:154 msgid "Assign keystroke" msgstr "Assign keystroke" #: js/ui/padOsd.js:223 msgid "Done" msgstr "Done" #: js/ui/padOsd.js:726 msgid "Edit…" msgstr "Edit…" #: js/ui/padOsd.js:773 msgid "None" msgstr "None" #: js/ui/padOsd.js:844 msgid "Press a button to configure" msgstr "Press a button to configure" #: js/ui/padOsd.js:845 msgid "Press Esc to exit" msgstr "Press Esc to exit" #: js/ui/padOsd.js:848 msgid "Press any key to exit" msgstr "Press any key to exit" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:423 msgid "Activities" msgstr "Activities" #: js/ui/panel.js:504 msgctxt "System menu in the top bar" msgid "System" msgstr "System" #: js/ui/panel.js:678 msgid "Top Bar" msgstr "Top Bar" #: js/ui/quickSettings.js:188 msgid "Open menu" msgstr "Open menu" #: js/ui/runDialog.js:61 msgid "Run a Command" msgstr "Run a Command" #: js/ui/runDialog.js:76 msgid "Press ESC to close" msgstr "Press ESC to close" #: js/ui/runDialog.js:241 msgid "Restart is not available on Wayland" msgstr "Restart is not available on Wayland" #: js/ui/runDialog.js:246 msgid "Restarting…" msgstr "Restarting…" #: js/ui/screenShield.js:233 msgid "GNOME needs to lock the screen" msgstr "GNOME needs to lock the screen" #: js/ui/screenShield.js:274 js/ui/screenShield.js:667 msgid "Unable to lock" msgstr "Unable to lock" #: js/ui/screenShield.js:275 js/ui/screenShield.js:668 msgid "Lock was blocked by an app" msgstr "Lock was blocked by an app" #: js/ui/screenshot.js:1252 msgid "Selection" msgstr "Selection" #: js/ui/screenshot.js:1262 msgid "Area Selection" msgstr "Area Selection" #: js/ui/screenshot.js:1267 msgid "Screen" msgstr "Screen" #: js/ui/screenshot.js:1277 msgid "Screen Selection" msgstr "Screen Selection" #: js/ui/screenshot.js:1282 msgid "Window" msgstr "Window" #: js/ui/screenshot.js:1292 msgid "Window Selection" msgstr "Window Selection" #. Translators: entry in the window right click menu. #: js/ui/screenshot.js:1317 js/ui/status/system.js:111 js/ui/windowMenu.js:28 msgid "Take Screenshot" msgstr "Take Screenshot" #: js/ui/screenshot.js:1333 msgid "Record Screen" msgstr "Record Screen" #. Translators: since this string refers to an action, #. it needs to be phrased as a verb. #: js/ui/screenshot.js:1350 msgid "Capture" msgstr "Capture" #: js/ui/screenshot.js:1372 msgid "Show Pointer" msgstr "Show Pointer" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1996 msgid "Screencasts" msgstr "Screencasts" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast From 07-17-2013 10:00:46 PM" #: js/ui/screenshot.js:2001 #, no-c-format msgid "Screencast From %d %t" msgstr "Screencast From %d %t" #. Translators: notification title. #: js/ui/screenshot.js:2047 msgid "Screencast recorded" msgstr "Screencast recorded" #. Translators: notification title. #: js/ui/screenshot.js:2060 msgid "Screencast failed to start" msgstr "Screencast failed to start" #. Translators: notification title. #: js/ui/screenshot.js:2066 msgid "Screencast ended: Out of disk space" msgstr "Screencast ended: Out of disk space" #. We can encourage user to try again on service crashes since the #. recorder will auto-blocklist the pipeline that crashed. #. Translators: notification title. #: js/ui/screenshot.js:2072 msgid "Screencast ended unexpectedly, please try again" msgstr "Screencast ended unexpectedly, please try again" #. Translators: notification title. #: js/ui/screenshot.js:2075 msgid "Screencast ended unexpectedly" msgstr "Screencast ended unexpectedly" #. Translators: notification source name. #: js/ui/screenshot.js:2085 js/ui/screenshot.js:2327 msgid "Screenshot" msgstr "Screenshot" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:2092 msgid "Click here to view the video." msgstr "Click here to view the video." #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:2100 js/ui/screenshot.js:2343 msgid "Show in Files" msgstr "Show in Files" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2287 #, javascript-format msgid "Screenshot From %s" msgstr "Screenshot From %s" #. Translators: notification title. #: js/ui/screenshot.js:2333 msgid "Screenshot captured" msgstr "Screenshot captured" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2335 msgid "You can paste the image from the clipboard." msgstr "You can paste the image from the clipboard." #: js/ui/screenshot.js:2391 js/ui/screenshot.js:2555 msgid "Screenshot taken" msgstr "Screenshot taken" #: js/ui/search.js:829 msgid "Searching…" msgstr "Searching…" #: js/ui/search.js:831 msgid "No results" msgstr "No results" #: js/ui/search.js:962 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "%d more" msgstr[1] "%d more" #: js/ui/searchController.js:87 #: subprojects/extensions-app/data/ui/extensions-window.ui:73 msgid "Search" msgstr "Search" #: js/ui/shellEntry.js:21 msgid "Copy" msgstr "Copy" #: js/ui/shellEntry.js:26 msgid "Paste" msgstr "Paste" #: js/ui/shellEntry.js:78 msgid "Show Text" msgstr "Show Text" #: js/ui/shellEntry.js:80 msgid "Hide Text" msgstr "Hide Text" #: js/ui/shellEntry.js:174 msgid "Caps lock is on" msgstr "Caps lock is on" #: js/ui/shellMountOperation.js:286 msgid "Hidden Volume" msgstr "Hidden Volume" #: js/ui/shellMountOperation.js:289 msgid "Windows System Volume" msgstr "Windows System Volume" #: js/ui/shellMountOperation.js:292 msgid "Uses Keyfiles" msgstr "Uses Keyfiles" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:300 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead" msgstr "" "To unlock a volume that uses keyfiles, use the %s utility instead" #: js/ui/shellMountOperation.js:304 msgid "" "You need an external utility like Disks to unlock a volume that uses " "keyfiles" msgstr "" "You need an external utility like Disks to unlock a volume that uses " "keyfiles" #: js/ui/shellMountOperation.js:312 msgid "PIM Number" msgstr "PIM Number" #: js/ui/shellMountOperation.js:371 msgid "Remember Password" msgstr "Remember Password" #: js/ui/shellMountOperation.js:386 msgid "Unlock" msgstr "Unlock" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:400 #, javascript-format msgid "Open %s" msgstr "Open %s" #: js/ui/shellMountOperation.js:436 msgid "The PIM must be a number or empty" msgstr "The PIM must be a number or empty" #: js/ui/status/accessibility.js:34 msgid "Accessibility" msgstr "Accessibility" #: js/ui/status/accessibility.js:44 msgid "High Contrast" msgstr "High Contrast" #: js/ui/status/accessibility.js:47 msgid "Zoom" msgstr "Zoom" #: js/ui/status/accessibility.js:54 msgid "Screen Reader" msgstr "Screen Reader" #: js/ui/status/accessibility.js:58 msgid "Screen Keyboard" msgstr "Screen Keyboard" #: js/ui/status/accessibility.js:62 msgid "Visual Alerts" msgstr "Visual Alerts" #: js/ui/status/accessibility.js:66 msgid "Sticky Keys" msgstr "Sticky Keys" #: js/ui/status/accessibility.js:70 msgid "Slow Keys" msgstr "Slow Keys" #: js/ui/status/accessibility.js:74 msgid "Bounce Keys" msgstr "Bounce Keys" #: js/ui/status/accessibility.js:78 msgid "Mouse Keys" msgstr "Mouse Keys" #: js/ui/status/accessibility.js:83 msgid "Accessibility Settings" msgstr "Accessibility Settings" #: js/ui/status/accessibility.js:140 msgid "Large Text" msgstr "Large Text" #: js/ui/status/autoRotate.js:14 msgid "Auto Rotate" msgstr "Auto Rotate" #: js/ui/status/backgroundApps.js:156 msgctxt "title" msgid "Background Apps" msgstr "Background Apps" #: js/ui/status/backgroundApps.js:171 msgid "Apps known to be running without a window" msgstr "Apps known to be running without a window" #: js/ui/status/backgroundApps.js:182 msgid "App Settings" msgstr "App Settings" #: js/ui/status/backgroundApps.js:239 msgid "No Background Apps" msgstr "No Background Apps" #: js/ui/status/backgroundApps.js:241 #, javascript-format msgid "%d Background App" msgid_plural "%d Background Apps" msgstr[0] "%d Background App" msgstr[1] "%d Background Apps" #: js/ui/status/backlight.js:39 msgid "Keyboard Brightness" msgstr "Keyboard Brightness" #: js/ui/status/backlight.js:79 msgid "Off" msgstr "Off" #: js/ui/status/backlight.js:80 msgid "Low" msgstr "Low" #: js/ui/status/backlight.js:81 msgid "High" msgstr "High" #: js/ui/status/backlight.js:147 js/ui/status/keyboard.js:879 msgid "Keyboard" msgstr "Keyboard" #: js/ui/status/bluetooth.js:245 js/ui/status/network.js:360 msgid "Disconnect" msgstr "Disconnect" #: js/ui/status/bluetooth.js:262 js/ui/status/bluetooth.js:264 msgid "Bluetooth" msgstr "Bluetooth" #: js/ui/status/bluetooth.js:287 js/ui/status/network.js:1900 msgid "Bluetooth Settings" msgstr "Bluetooth Settings" #: js/ui/status/bluetooth.js:334 msgid "No available or connected devices" msgstr "No available or connected devices" #: js/ui/status/bluetooth.js:335 msgid "Turn on Bluetooth to connect to devices" msgstr "Turn on Bluetooth to connect to devices" #. Translators: This is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:389 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d Connected" msgstr[1] "%d Connected" #: js/ui/status/brightness.js:32 msgid "Brightness" msgstr "Brightness" #: js/ui/status/darkMode.js:12 msgid "Dark Style" msgstr "Dark Style" #: js/ui/status/dwellClick.js:15 msgid "Single Click" msgstr "Single Click" #: js/ui/status/dwellClick.js:20 msgid "Double Click" msgstr "Double Click" #: js/ui/status/dwellClick.js:25 msgid "Drag" msgstr "Drag" #: js/ui/status/dwellClick.js:30 msgid "Secondary Click" msgstr "Secondary Click" #: js/ui/status/dwellClick.js:39 msgid "Dwell Click" msgstr "Dwell Click" #: js/ui/status/keyboard.js:896 msgid "Show Keyboard Layout" msgstr "Show Keyboard Layout" #: js/ui/status/location.js:337 msgid "Allow location access" msgstr "Allow location access" #. Translators: %s is an application name #: js/ui/status/location.js:339 #, javascript-format msgid "The app %s wants to access your location" msgstr "The app %s wants to access your location" #: js/ui/status/location.js:349 msgid "Location access can be changed at any time from the privacy settings" msgstr "Location access can be changed at any time from the privacy settings" #: js/ui/status/location.js:357 msgid "Deny Access" msgstr "Deny Access" #: js/ui/status/location.js:362 msgid "Grant Access" msgstr "Grant Access" #: js/ui/status/network.js:62 msgid "" msgstr "" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:354 #, javascript-format msgid "Disconnect %s" msgstr "Disconnect %s" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:356 #, javascript-format msgid "Connect to %s" msgstr "Connect to %s" #: js/ui/status/network.js:1050 msgid "Secure" msgstr "Secure" #: js/ui/status/network.js:1050 msgid "Not secure" msgstr "Not secure" #: js/ui/status/network.js:1051 #, javascript-format msgid "Signal strength %s%%" msgstr "Signal strength %s%%" #. translators: The first placeholder is the network name, the second and indication whether it is secure, and the last the signal strength indication #: js/ui/status/network.js:1053 #, javascript-format msgid "%s, %s, %s" msgstr "%s, %s, %s" #. Translators: %s is a network identifier #: js/ui/status/network.js:1155 #, javascript-format msgid "%s Hotspot" msgstr "%s Hotspot" #: js/ui/status/network.js:1426 #, javascript-format msgid "%d connected" msgid_plural "%d connected" msgstr[0] "%d connected" msgstr[1] "%d connected" #: js/ui/status/network.js:1524 js/ui/status/network.js:1540 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1525 msgid "VPN Settings" msgstr "VPN Settings" #: js/ui/status/network.js:1785 msgid "Wi–Fi" msgstr "Wi–Fi" #: js/ui/status/network.js:1787 msgid "All Networks" msgstr "All Networks" #: js/ui/status/network.js:1884 msgid "Wired Connections" msgstr "Wired Connections" #: js/ui/status/network.js:1885 msgid "Wired Settings" msgstr "Wired Settings" #: js/ui/status/network.js:1899 msgid "Bluetooth Tethers" msgstr "Bluetooth Tethers" #. Translators: "Tether" from "Bluetooth Tether" #: js/ui/status/network.js:1906 msgid "Tether" msgstr "Tether" #: js/ui/status/network.js:1919 msgid "Mobile Connections" msgstr "Mobile Connections" #: js/ui/status/network.js:1921 msgid "Mobile Broadband Settings" msgstr "Mobile Broadband Settings" #. Translators: "Mobile" from "Mobile Broadband" #: js/ui/status/network.js:1930 msgid "Mobile" msgstr "Mobile" #: js/ui/status/network.js:1964 msgid "Sign Into Wi–Fi Network" msgstr "Sign Into Wi–Fi Network" #: js/ui/status/network.js:2151 msgid "Connection failed" msgstr "Connection failed" #: js/ui/status/network.js:2152 msgid "Activation of network connection failed" msgstr "Activation of network connection failed" #: js/ui/status/nightLight.js:19 msgid "Night Light" msgstr "Night Light" #: js/ui/status/powerProfiles.js:19 msgctxt "Power profile" msgid "Performance" msgstr "Performance" #: js/ui/status/powerProfiles.js:24 msgctxt "Power profile" msgid "Balanced" msgstr "Balanced" #: js/ui/status/powerProfiles.js:29 msgctxt "Power profile" msgid "Power Saver" msgstr "Power Saver" #: js/ui/status/powerProfiles.js:39 js/ui/status/powerProfiles.js:69 msgid "Power Mode" msgstr "Power Mode" #: js/ui/status/powerProfiles.js:71 msgid "Power Settings" msgstr "Power Settings" #: js/ui/status/remoteAccess.js:74 msgid "Stop Screencast" msgstr "Stop Screencast" #: js/ui/status/remoteAccess.js:144 msgid "Stop Screen Sharing" msgstr "Stop Screen Sharing" #: js/ui/status/rfkill.js:99 msgid "Airplane Mode" msgstr "Aeroplane Mode" #: js/ui/status/system.js:168 msgid "Power Off Menu" msgstr "Power Off Menu" #: js/ui/status/system.js:176 msgid "Suspend" msgstr "Suspend" #: js/ui/status/system.js:181 msgid "Restart…" msgstr "Restart…" #: js/ui/status/system.js:186 msgid "Power Off…" msgstr "Power Off…" #: js/ui/status/system.js:193 #: subprojects/extensions-app/data/ui/extensions-window.ui:124 msgid "Log Out…" msgstr "Log Out…" #: js/ui/status/system.js:198 msgid "Switch User…" msgstr "Switch User…" #: js/ui/status/system.js:242 msgctxt "action" msgid "Lock Screen" msgstr "Lock Screen" #: js/ui/status/thunderbolt.js:308 msgid "Unknown Thunderbolt device" msgstr "Unknown Thunderbolt device" #: js/ui/status/thunderbolt.js:309 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." #: js/ui/status/thunderbolt.js:312 msgid "Unauthorized Thunderbolt device" msgstr "Unauthorised Thunderbolt device" #: js/ui/status/thunderbolt.js:313 msgid "" "New device has been detected and needs to be authorized by an administrator" msgstr "" "New device has been detected and needs to be authorised by an administrator" #: js/ui/status/thunderbolt.js:319 msgid "Thunderbolt authorization error" msgstr "Thunderbolt authorisation error" #: js/ui/status/thunderbolt.js:320 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "Could not authorise the Thunderbolt device: %s" #: js/ui/status/volume.js:218 msgid "Volume changed" msgstr "Volume changed" #: js/ui/status/volume.js:231 msgid "Unmute" msgstr "Unmute" #: js/ui/status/volume.js:231 msgid "Mute" msgstr "Mute" #: js/ui/status/volume.js:286 msgid "Volume" msgstr "Volume" #: js/ui/status/volume.js:302 msgid "Sound Output" msgstr "Sound Output" #: js/ui/status/volume.js:374 msgid "Sound Input" msgstr "Sound Input" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:20 msgid "Mirror" msgstr "Mirror" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:29 msgid "Join Displays" msgstr "Join Displays" #. Translators: this is for using only external displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:39 msgid "External Only" msgstr "External Only" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:47 msgid "Built-in Only" msgstr "Built-in Only" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:378 msgid "%A %B %-d" msgstr "%A %-d %B" #: js/ui/unlockDialog.js:384 msgid "Swipe up to unlock" msgstr "Swipe up to unlock" #: js/ui/unlockDialog.js:385 msgid "Click or press a key to unlock" msgstr "Click or press a key to unlock" #: js/ui/unlockDialog.js:568 msgid "Unlock Window" msgstr "Unlock Window" #: js/ui/unlockDialog.js:577 msgid "Log in as another user" msgstr "Log in as another user" #: js/ui/welcomeDialog.js:47 #, javascript-format msgid "GNOME %s" msgstr "GNOME %s" #: js/ui/welcomeDialog.js:51 #, javascript-format msgid "Welcome to %s" msgstr "Welcome to %s" #: js/ui/welcomeDialog.js:52 msgid "If you want to learn your way around, check out the tour" msgstr "If you want to learn your way around, check out the tour" #: js/ui/welcomeDialog.js:61 msgid "Skip" msgstr "Skip" #: js/ui/welcomeDialog.js:66 msgid "Take Tour" msgstr "Take Tour" #: js/ui/windowAttentionHandler.js:18 #, javascript-format msgid "“%s” is ready" msgstr "“%s” is ready" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:68 msgid "Keep these display settings?" msgstr "Keep these display settings?" #: js/ui/windowManager.js:78 msgid "Revert Settings" msgstr "Revert Settings" #: js/ui/windowManager.js:83 msgid "Keep Changes" msgstr "Keep Changes" #: js/ui/windowManager.js:103 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "Settings changes will revert in %d second" msgstr[1] "Settings changes will revert in %d seconds" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:500 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:40 msgid "Hide" msgstr "Hide" #: js/ui/windowMenu.js:47 msgid "Restore" msgstr "Restore" #: js/ui/windowMenu.js:51 msgid "Maximize" msgstr "Maximise" #: js/ui/windowMenu.js:58 msgid "Move" msgstr "Move" #: js/ui/windowMenu.js:78 msgid "Resize" msgstr "Resize" #: js/ui/windowMenu.js:98 msgid "Always on Top" msgstr "Always on Top" #: js/ui/windowMenu.js:117 msgid "Always on Visible Workspace" msgstr "Always on Visible Workspace" #: js/ui/windowMenu.js:131 msgid "Move to Workspace Left" msgstr "Move to Workspace Left" #: js/ui/windowMenu.js:137 msgid "Move to Workspace Right" msgstr "Move to Workspace Right" #: js/ui/windowMenu.js:143 msgid "Move to Workspace Up" msgstr "Move to Workspace Up" #: js/ui/windowMenu.js:149 msgid "Move to Workspace Down" msgstr "Move to Workspace Down" #: js/ui/windowMenu.js:167 msgid "Move to Monitor Up" msgstr "Move to Monitor Up" #: js/ui/windowMenu.js:176 msgid "Move to Monitor Down" msgstr "Move to Monitor Down" #: js/ui/windowMenu.js:185 msgid "Move to Monitor Left" msgstr "Move to Monitor Left" #: js/ui/windowMenu.js:194 msgid "Move to Monitor Right" msgstr "Move to Monitor Right" #: js/ui/windowMenu.js:202 msgid "Close" msgstr "Close" #: src/main.c:512 subprojects/extensions-tool/src/main.c:336 msgid "Print version" msgstr "Print version" #: src/main.c:518 msgid "Mode used by GDM for login screen" msgstr "Mode used by GDM for login screen" #: src/main.c:524 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "Use a specific mode, e.g. “gdm” for login screen" #: src/main.c:530 msgid "List possible modes" msgstr "List possible modes" #: src/main.c:536 msgid "Force animations to be enabled" msgstr "Force animations to be enabled" #: src/shell-app.c:252 msgctxt "program" msgid "Unknown" msgstr "Unknown" #: src/shell-app.c:503 #, c-format msgid "Failed to launch “%s”" msgstr "Failed to launch “%s”" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match" msgstr "Passwords do not match" #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "Password cannot be blank" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "Authentication dialogue was dismissed by the user" #: src/st/st-icon-theme.c:1865 #, c-format msgid "Icon '%s' not present in theme %s" msgstr "Icon '%s' not present in theme %s" #: src/st/st-icon-theme.c:3454 src/st/st-icon-theme.c:3757 msgid "Failed to load icon" msgstr "Failed to load icon" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 msgid "Manage your GNOME Extensions" msgstr "Manage your GNOME Extensions" #. developer_name tag deprecated with Appstream 1.0 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:19 msgid "The GNOME Project" msgstr "The GNOME Project" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:51 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:64 msgid "Main Window" msgstr "Main Window" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:68 msgid "Available Updates" msgstr "Available Updates" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:72 msgid "Search View" msgstr "Search View" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "Configure GNOME Shell Extensions" #: subprojects/extensions-app/js/extensionManager.js:237 #, javascript-format msgid "" "The installed version of this extension (%s) is incompatible with the " "current version of GNOME (%s). The extension has been disabled." msgstr "" "The installed version of this extension (%s) is incompatible with the " "current version of GNOME (%s). The extension has been disabled." #: subprojects/extensions-app/js/extensionManager.js:238 #, javascript-format msgid "" "The installed version of this extension is incompatible with the current " "version of GNOME (%s). The extension has been disabled." msgstr "" "The installed version of this extension is incompatible with the current " "version of GNOME (%s). The extension has been disabled." #: subprojects/extensions-app/js/extensionManager.js:242 msgid "" "An error has occurred in this extension. This could cause issues elsewhere " "in the system. It is recommended to turn the extension off until the error " "is resolved." msgstr "" "An error has occurred in this extension. This could cause issues elsewhere " "in the system. It is recommended to turn the extension off until the error " "is resolved." #. translators: Details for an extension error #: subprojects/extensions-app/js/extensionManager.js:248 msgid "Error details:" msgstr "Error details:" #: subprojects/extensions-app/js/extensionRow.js:82 #, javascript-format msgid "Version %s" msgstr "Version %s" #: subprojects/extensions-app/js/extensionsWindow.js:113 #, javascript-format msgid "Remove “%s”?" msgstr "Remove “%s”?" #: subprojects/extensions-app/js/extensionsWindow.js:114 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "" "If you remove the extension, you need to return to download it if you want " "to enable it again" #: subprojects/extensions-app/js/extensionsWindow.js:117 msgid "_Cancel" msgstr "_Cancel" #: subprojects/extensions-app/js/extensionsWindow.js:118 msgid "_Remove" msgstr "_Remove" #: subprojects/extensions-app/js/extensionsWindow.js:158 msgid "translator-credits" msgstr "" "Philip Withnall \n" "Bruce Cowan \n" "Chris Leonard \n" "David King \n" "Zander Brown \n" "Andi Chandler " #: subprojects/extensions-app/js/extensionsWindow.js:203 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "%d extension will be updated on next login." msgstr[1] "%d extensions will be updated on next login." #: subprojects/extensions-app/data/ui/extension-row.ui:22 msgid "Error Details" msgstr "Error Details" #: subprojects/extensions-app/data/ui/extension-row.ui:62 msgid "Updates Details" msgstr "Updates Details" #: subprojects/extensions-app/data/ui/extension-row.ui:72 msgid "" "A new version of this extension is ready and will be loaded on next login." msgstr "" "A new version of this extension is ready and will be loaded on next login." #: subprojects/extensions-app/data/ui/extension-row.ui:104 msgid "Extension Details" msgstr "Extension Details" #: subprojects/extensions-app/data/ui/extension-row.ui:192 msgid "_Website" msgstr "_Website" #: subprojects/extensions-app/data/ui/extension-row.ui:219 msgid "_Settings" msgstr "_Settings" #: subprojects/extensions-app/data/ui/extension-row.ui:246 msgid "_Remove…" msgstr "_Remove…" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Keyboard Shortcuts" msgstr "Keyboard Shortcuts" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "About Extensions" #: subprojects/extensions-app/data/ui/extensions-window.ui:64 msgid "Main Menu" msgstr "Main Menu" #: subprojects/extensions-app/data/ui/extensions-window.ui:106 msgid "Search extensions" msgstr "Search extensions" #: subprojects/extensions-app/data/ui/extensions-window.ui:134 msgid "_Extensions" msgstr "_Extensions" #: subprojects/extensions-app/data/ui/extensions-window.ui:139 msgid "More Information" msgstr "More Information" #: subprojects/extensions-app/data/ui/extensions-window.ui:151 msgid "" "Extensions can cause performance and stability issues. It is recommended to " "disable all extensions if you experience problems with your system." msgstr "" "Extensions can cause performance and stability issues. It is recommended to " "disable all extensions if you experience problems with your system." #: subprojects/extensions-app/data/ui/extensions-window.ui:178 msgid "User Extensions" msgstr "User Extensions" #: subprojects/extensions-app/data/ui/extensions-window.ui:198 msgid "System Extensions" msgstr "System Extensions" #: subprojects/extensions-app/data/ui/extensions-window.ui:233 msgid "Search Results" msgstr "Search Results" #: subprojects/extensions-app/data/ui/extensions-window.ui:252 msgid "No Results Found" msgstr "No Results Found" #: subprojects/extensions-app/data/ui/extensions-window.ui:253 msgid "Try a different search" msgstr "Try a different search" #: subprojects/extensions-app/data/ui/extensions-window.ui:264 msgid "No Installed Extensions" msgstr "No Installed Extensions" #: subprojects/extensions-app/data/ui/extensions-window.ui:265 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" "To find and add extensions, visit extensions.gnome.org." #: subprojects/extensions-app/data/ui/extensions-window.ui:276 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." #: subprojects/extensions-app/data/ui/help-overlay.ui:9 msgctxt "shortcut window" msgid "General" msgstr "General" #: subprojects/extensions-app/data/ui/help-overlay.ui:12 msgctxt "shortcut window" msgid "Open Menu" msgstr "Open Menu" #: subprojects/extensions-app/data/ui/help-overlay.ui:18 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Toggle Search" #: subprojects/extensions-app/data/ui/help-overlay.ui:24 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Show Shortcuts" #: subprojects/extensions-app/data/ui/help-overlay.ui:30 msgctxt "shortcut window" msgid "Quit" msgstr "Quit" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:284 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "The new extension was successfully created in %s.\n" #: subprojects/extensions-tool/src/command-create.c:376 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" #: subprojects/extensions-tool/src/command-create.c:382 #: subprojects/extensions-tool/src/main.c:243 msgid "Name" msgstr "Name" #: subprojects/extensions-tool/src/command-create.c:396 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" #: subprojects/extensions-tool/src/command-create.c:402 #: subprojects/extensions-tool/src/main.c:246 msgid "Description" msgstr "Description" #: subprojects/extensions-tool/src/command-create.c:416 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" #: subprojects/extensions-tool/src/command-create.c:443 msgid "Choose one of the available templates:\n" msgstr "Choose one of the available templates:\n" #: subprojects/extensions-tool/src/command-create.c:457 msgid "Template" msgstr "Template" #: subprojects/extensions-tool/src/command-create.c:515 msgid "The unique identifier of the new extension" msgstr "The unique identifier of the new extension" #: subprojects/extensions-tool/src/command-create.c:518 msgid "NAME" msgstr "NAME" #: subprojects/extensions-tool/src/command-create.c:519 msgid "The user-visible name of the new extension" msgstr "The user-visible name of the new extension" #: subprojects/extensions-tool/src/command-create.c:521 msgid "DESCRIPTION" msgstr "DESCRIPTION" #: subprojects/extensions-tool/src/command-create.c:523 msgid "A short description of what the extension does" msgstr "A short description of what the extension does" #: subprojects/extensions-tool/src/command-create.c:525 #: subprojects/extensions-tool/src/command-pack.c:455 msgid "DOMAIN" msgstr "DOMAIN" #: subprojects/extensions-tool/src/command-create.c:527 msgid "The gettext domain used by the extension" msgstr "The gettext domain used by the extension" #: subprojects/extensions-tool/src/command-create.c:529 #: subprojects/extensions-tool/src/command-pack.c:448 msgid "SCHEMA" msgstr "SCHEMA" #: subprojects/extensions-tool/src/command-create.c:531 msgid "The GSettings schema used by the extension" msgstr "The GSettings schema used by the extension" #: subprojects/extensions-tool/src/command-create.c:534 msgid "TEMPLATE" msgstr "TEMPLATE" #: subprojects/extensions-tool/src/command-create.c:535 msgid "The template to use for the new extension" msgstr "The template to use for the new extension" #: subprojects/extensions-tool/src/command-create.c:538 msgid "Include prefs.js template" msgstr "Include prefs.js template" #: subprojects/extensions-tool/src/command-create.c:544 msgid "Enter extension information interactively" msgstr "Enter extension information interactively" #: subprojects/extensions-tool/src/command-create.c:552 msgid "Create a new extension" msgstr "Create a new extension" #: subprojects/extensions-tool/src/command-create.c:570 #: subprojects/extensions-tool/src/command-list.c:190 msgid "Unknown arguments" msgstr "Unknown arguments" #: subprojects/extensions-tool/src/command-create.c:595 msgid "UUID, name and description are required" msgstr "UUID, name and description are required" #: subprojects/extensions-tool/src/command-disable.c:62 #: subprojects/extensions-tool/src/command-enable.c:62 #, c-format msgid "Extension “%s” does not exist\n" msgstr "Extension “%s” does not exist\n" #: subprojects/extensions-tool/src/command-disable.c:98 msgid "Disable an extension" msgstr "Disable an extension" #: subprojects/extensions-tool/src/command-disable.c:116 #: subprojects/extensions-tool/src/command-enable.c:116 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "No UUID given" #: subprojects/extensions-tool/src/command-disable.c:121 #: subprojects/extensions-tool/src/command-enable.c:121 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "More than one UUID given" #: subprojects/extensions-tool/src/command-enable.c:98 msgid "Enable an extension" msgstr "Enable an extension" #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:66 #: subprojects/extensions-tool/src/main.c:150 msgid "Failed to connect to GNOME Shell\n" msgstr "Failed to connect to GNOME Shell\n" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:159 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "Extension “%s” doesn’t exist\n" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "Show extensions info" #: subprojects/extensions-tool/src/command-install.c:190 msgid "Overwrite an existing extension" msgstr "Overwrite an existing extension" #: subprojects/extensions-tool/src/command-install.c:192 msgid "EXTENSION_BUNDLE" msgstr "EXTENSION_BUNDLE" #: subprojects/extensions-tool/src/command-install.c:201 msgid "Install an extension bundle" msgstr "Install an extension bundle" #: subprojects/extensions-tool/src/command-install.c:219 msgid "No extension bundle specified" msgstr "No extension bundle specified" #: subprojects/extensions-tool/src/command-install.c:225 msgid "More than one extension bundle specified" msgstr "More than one extension bundle specified" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show user-installed extensions" msgstr "Show user-installed extensions" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show system-installed extensions" msgstr "Show system-installed extensions" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Show enabled extensions" msgstr "Show enabled extensions" #: subprojects/extensions-tool/src/command-list.c:149 msgid "Show disabled extensions" msgstr "Show disabled extensions" #: subprojects/extensions-tool/src/command-list.c:152 msgid "Show extensions in active state" msgstr "Show extensions in active state" #: subprojects/extensions-tool/src/command-list.c:155 msgid "Show extensions in inactive state" msgstr "Show extensions in inactive state" #: subprojects/extensions-tool/src/command-list.c:158 msgid "Show extensions with preferences" msgstr "Show extensions with preferences" #: subprojects/extensions-tool/src/command-list.c:161 msgid "Show extensions with updates" msgstr "Show extensions with updates" #: subprojects/extensions-tool/src/command-list.c:164 msgid "Print extension details" msgstr "Print extension details" #: subprojects/extensions-tool/src/command-list.c:172 msgid "List installed extensions" msgstr "List installed extensions" #: subprojects/extensions-tool/src/command-pack.c:444 msgid "FILE" msgstr "FILE" #: subprojects/extensions-tool/src/command-pack.c:445 msgid "Additional source to include in the bundle" msgstr "Additional source to include in the bundle" #: subprojects/extensions-tool/src/command-pack.c:449 msgid "A GSettings schema that should be included" msgstr "A GSettings schema that should be included" #: subprojects/extensions-tool/src/command-pack.c:451 #: subprojects/extensions-tool/src/command-pack.c:462 msgid "DIRECTORY" msgstr "DIRECTORY" #: subprojects/extensions-tool/src/command-pack.c:453 msgid "The directory where translations are found" msgstr "The directory where translations are found" #: subprojects/extensions-tool/src/command-pack.c:457 msgid "The gettext domain to use for translations" msgstr "The gettext domain to use for translations" #: subprojects/extensions-tool/src/command-pack.c:460 msgid "Overwrite an existing pack" msgstr "Overwrite an existing pack" #: subprojects/extensions-tool/src/command-pack.c:464 msgid "The directory where the pack should be created" msgstr "The directory where the pack should be created" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "SOURCE_DIRECTORY" msgstr "SOURCE_DIRECTORY" #: subprojects/extensions-tool/src/command-pack.c:475 msgid "Create an extension bundle" msgstr "Create an extension bundle" #: subprojects/extensions-tool/src/command-pack.c:495 msgid "More than one source directory specified" msgstr "More than one source directory specified" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "Extension “%s” doesn’t have preferences\n" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "Failed to open prefs for extension “%s”: %s\n" #: subprojects/extensions-tool/src/command-prefs.c:87 msgid "Opens extension preferences" msgstr "Opens extension preferences" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "Reset an extension" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "Cannot uninstall system extensions\n" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "Failed to uninstall “%s”\n" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "Uninstall an extension" #: subprojects/extensions-tool/src/main.c:76 msgid "Do not print error messages" msgstr "Do not print error messages" #: subprojects/extensions-tool/src/main.c:249 msgid "Path" msgstr "Path" #: subprojects/extensions-tool/src/main.c:252 msgid "URL" msgstr "URL" #: subprojects/extensions-tool/src/main.c:255 msgid "Original author" msgstr "Original author" #: subprojects/extensions-tool/src/main.c:261 #: subprojects/extensions-tool/src/main.c:263 #: subprojects/extensions-tool/src/main.c:265 msgid "Version" msgstr "Version" #: subprojects/extensions-tool/src/main.c:268 msgid "Enabled" msgstr "Enabled" #: subprojects/extensions-tool/src/main.c:268 msgid "Yes" msgstr "Yes" #: subprojects/extensions-tool/src/main.c:268 msgid "No" msgstr "No" #: subprojects/extensions-tool/src/main.c:271 msgid "State" msgstr "State" #: subprojects/extensions-tool/src/main.c:309 msgid "“version” takes no arguments" msgstr "“version” takes no arguments" #: subprojects/extensions-tool/src/main.c:311 #: subprojects/extensions-tool/src/main.c:331 msgid "Usage:" msgstr "Usage:" #: subprojects/extensions-tool/src/main.c:314 msgid "Print version information and exit." msgstr "Print version information and exit." #: subprojects/extensions-tool/src/main.c:329 #: subprojects/extensions-tool/src/main.c:332 msgid "COMMAND" msgstr "COMMAND" #: subprojects/extensions-tool/src/main.c:332 msgid "[ARGS…]" msgstr "[ARGS…]" #: subprojects/extensions-tool/src/main.c:334 msgid "Commands:" msgstr "Commands:" #: subprojects/extensions-tool/src/main.c:335 msgid "Print help" msgstr "Print help" #: subprojects/extensions-tool/src/main.c:337 msgid "Enable extension" msgstr "Enable extension" #: subprojects/extensions-tool/src/main.c:338 msgid "Disable extension" msgstr "Disable extension" #: subprojects/extensions-tool/src/main.c:339 msgid "Reset extension" msgstr "Reset extension" #: subprojects/extensions-tool/src/main.c:340 msgid "Uninstall extension" msgstr "Uninstall extension" #: subprojects/extensions-tool/src/main.c:341 msgid "List extensions" msgstr "List extensions" #: subprojects/extensions-tool/src/main.c:342 #: subprojects/extensions-tool/src/main.c:343 msgid "Show extension info" msgstr "Show extension info" #: subprojects/extensions-tool/src/main.c:344 msgid "Open extension preferences" msgstr "Open extension preferences" #: subprojects/extensions-tool/src/main.c:345 msgid "Create extension" msgstr "Create extension" #: subprojects/extensions-tool/src/main.c:346 msgid "Package extension" msgstr "Package extension" #: subprojects/extensions-tool/src/main.c:347 msgid "Install extension bundle" msgstr "Install extension bundle" #: subprojects/extensions-tool/src/main.c:349 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "Use “%s” to get detailed help.\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "Plain" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "An empty extension" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "Indicator" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "Add an icon to the top bar" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:4 msgid "Quick Settings Item" msgstr "Quick Settings Item" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:5 msgid "Add an item to quick settings" msgstr "Add an item to quick settings" #. translators: #. * The device has been disabled #: subprojects/gvc/gvc-mixer-control.c:1872 msgid "Disabled" msgstr "Disabled" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1879 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u Output" msgstr[1] "%u Outputs" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1889 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u Input" msgstr[1] "%u Inputs" #: subprojects/gvc/gvc-mixer-control.c:2872 msgid "System Sounds" msgstr "System Sounds" #~ msgid "Move Titlebar Onscreen" #~ msgstr "Move Titlebar Onscreen" #~ msgid "Stop conflicting session dialog closed" #~ msgstr "Stop conflicting session dialog closed" #, javascript-format #~ msgid "Try to login again to start a session for user %s." #~ msgstr "Try to login again to start a session for user %s." #, javascript-format #~ msgid "%s is now known as %s" #~ msgstr "%s is now known as %s" #~ msgid "Network Manager" #~ msgstr "Network Manager" #~ msgid "Disabling" #~ msgstr "Disabling" #~ msgid "Enabling" #~ msgstr "Enabling" #, javascript-format #~ msgid "%d %%" #~ msgstr "%d %%" #~ msgid "Thunderbolt" #~ msgstr "Thunderbolt" #~ msgid "No Thanks" #~ msgstr "No Thanks" #~ msgid "No Matches" #~ msgstr "No Matches" #~ msgid "The extension had an error" #~ msgstr "The extension had an error" #~ msgid "The extension can be updated" #~ msgstr "The extension can be updated" #~ msgid "Help" #~ msgstr "Help" #~ msgid "Manually Installed" #~ msgstr "Manually Installed" #~ msgid "Built-In" #~ msgstr "Built-In" #~ msgid "Extension Updates Ready" #~ msgstr "Extension Updates Ready" #~ msgid "Screenshot / Screencast" #~ msgstr "Screenshot / Screencast" #~ msgid "Power Profiles" #~ msgstr "Power Profiles" #~ msgid "Attach modal dialog to the parent window" #~ msgstr "Attach modal dialogue to the parent window" #~ msgid "" #~ "This key overrides the key in org.gnome.mutter when running GNOME Shell." #~ msgstr "" #~ "This key overrides the key in org.gnome.mutter when running GNOME Shell." #~ msgid "Enable edge tiling when dropping windows on screen edges" #~ msgstr "Enable edge tiling when dropping windows on screen edges" #~ msgid "Workspaces are managed dynamically" #~ msgstr "Workspaces are managed dynamically" #~ msgid "Workspaces only on primary monitor" #~ msgstr "Workspaces only on primary monitor" #~ msgid "Delay focus changes in mouse mode until the pointer stops moving" #~ msgstr "Delay focus changes in mouse mode until the pointer stops moving" #~ msgid "Region & Language Settings" #~ msgstr "Region & Language Settings" #~ msgid "Applications" #~ msgstr "Applications" #, javascript-format #~ msgid "Unable to start %s" #~ msgstr "Unable to start %s" #, javascript-format #~ msgid "Couldn’t find the %s application" #~ msgstr "Couldn’t find the %s application" #~ msgid "Evolution Calendar" #~ msgstr "Evolution Calendar" #~ msgid "" #~ "Whether the default Bluetooth adapter had set up devices associated to it" #~ msgstr "" #~ "Whether the default Bluetooth adapter had set up devices associated to it" #~ msgid "" #~ "The shell will only show a Bluetooth menu item if a Bluetooth adapter is " #~ "powered, or if there were devices set up associated with the default " #~ "adapter. This will be reset if the default adapter is ever seen not to " #~ "have devices associated to it." #~ msgstr "" #~ "The shell will only show a Bluetooth menu item if a Bluetooth adapter is " #~ "powered, or if there were devices set up associated with the default " #~ "adapter. This will be reset if the default adapter is ever seen not to " #~ "have devices associated to it." #~ msgid "Bluetooth On" #~ msgstr "Bluetooth On" #~ msgid "Bluetooth Off" #~ msgstr "Bluetooth Off" #~ msgid "Location In Use" #~ msgstr "Location In Use" #~ msgid "Location Disabled" #~ msgstr "Location Disabled" #, javascript-format #~ msgid "%s Off" #~ msgstr "%s Off" #, javascript-format #~ msgid "%s Connected" #~ msgstr "%s Connected" #, javascript-format #~ msgid "%s Unmanaged" #~ msgstr "%s Unmanaged" #, javascript-format #~ msgid "%s Connecting" #~ msgstr "%s Connecting" #, javascript-format #~ msgid "%s Requires Authentication" #~ msgstr "%s Requires Authentication" #, javascript-format #~ msgid "Firmware Missing For %s" #~ msgstr "Firmware Missing For %s" #, javascript-format #~ msgid "%s Unavailable" #~ msgstr "%s Unavailable" #, javascript-format #~ msgid "%s Connection Failed" #~ msgstr "%s Connection Failed" #, javascript-format #~ msgid "%s Hardware Disabled" #~ msgstr "%s Hardware Disabled" #, javascript-format #~ msgid "%s Disabled" #~ msgstr "%s Disabled" #~ msgid "Connect to Internet" #~ msgstr "Connect to Internet" #~ msgid "Airplane Mode is On" #~ msgstr "Aeroplane Mode is On" #~ msgid "Wi-Fi is disabled when airplane mode is on." #~ msgstr "Wi-Fi is disabled when aeroplane mode is on." #~ msgid "Turn Off Airplane Mode" #~ msgstr "Turn Off Aeroplane Mode" #~ msgid "Wi-Fi is Off" #~ msgstr "Wi-Fi is Off" #~ msgid "Wi-Fi needs to be turned on in order to connect to a network." #~ msgstr "Wi-Fi needs to be turned on in order to connect to a network." #~ msgid "Turn On Wi-Fi" #~ msgstr "Turn On Wi-Fi" #~ msgid "Select a network" #~ msgstr "Select a network" #~ msgid "Use hardware switch to turn off" #~ msgstr "Use hardware switch to turn off" #~ msgid "Select Network" #~ msgstr "Select Network" #~ msgid "Wi-Fi Settings" #~ msgstr "Wi-Fi Settings" #, javascript-format #~ msgid "%s Not Connected" #~ msgstr "%s Not Connected" #~ msgid "connecting…" #~ msgstr "connecting…" #~ msgid "authentication required" #~ msgstr "authentication required" #~ msgid "connection failed" #~ msgstr "connection failed" #~ msgid "VPN Off" #~ msgstr "VPN Off" #~ msgid "Network Settings" #~ msgstr "Network Settings" #, javascript-format #~ msgid "%s Wi-Fi Connection" #~ msgid_plural "%s Wi-Fi Connections" #~ msgstr[0] "%s Wi-Fi Connection" #~ msgstr[1] "%s Wi-Fi Connections" #~ msgid "Night Light Disabled" #~ msgstr "Night Light Disabled" #~ msgid "Resume" #~ msgstr "Resume" #~ msgid "Disable Until Tomorrow" #~ msgstr "Disable Until Tomorrow" #~ msgid "Fully Charged" #~ msgstr "Fully Charged" #~ msgid "Not Charging" #~ msgstr "Not Charging" #~ msgid "Estimating…" #~ msgstr "Estimating…" #, javascript-format #~ msgid "%d∶%02d Remaining (%d %%)" #~ msgstr "%d∶%02d Remaining (%d %%)" #, javascript-format #~ msgid "%d∶%02d Until Full (%d %%)" #~ msgstr "%d∶%02d Until Full (%d %%)" #~ msgid "Screen is Being Shared" #~ msgstr "Screen is Being Shared" #~ msgid "Turn off" #~ msgstr "Turn off" #~ msgid "Airplane Mode On" #~ msgstr "Aeroplane Mode On" #~ msgid "Lock" #~ msgstr "Lock" #~ msgid "Power Off / Log Out" #~ msgstr "Power Off / Log Out" #~ msgid "Log Out" #~ msgstr "Log Out" #~ msgid "Enable introspection API" #~ msgstr "Enable introspection API" #~ msgid "" #~ "Enables a D-Bus API that allows to introspect the application state of " #~ "the shell." #~ msgstr "" #~ "Enables a D-Bus API that allows to introspect the application state of " #~ "the shell." #~ msgid "Remove from Favorites" #~ msgstr "Remove from Favourites" #~ msgid "Add to Favorites" #~ msgstr "Add to Favourites" #~ msgid "Author" #~ msgstr "Author" #~ msgid "Warning" #~ msgstr "Warning" #~ msgid "" #~ "Extensions can cause system issues, including performance problems. If " #~ "you encounter problems with your system, it is recommended to disable all " #~ "extensions." #~ msgstr "" #~ "Extensions can cause system issues, including performance problems. If " #~ "you encounter problems with your system, it is recommended to disable all " #~ "extensions." #~ msgid "Failed to connect to GNOME Shell" #~ msgstr "Failed to connect to GNOME Shell" #~ msgid "Minimize" #~ msgstr "Minimise" #~ msgid "Unmaximize" #~ msgstr "Unmaximise" #~ msgid "App Picker View" #~ msgstr "App Picker View" #~ msgid "Index of the currently selected view in the application picker." #~ msgstr "Index of the currently selected view in the application picker." #~ msgid "Frequently used applications will appear here" #~ msgstr "Frequently used applications will appear here" #~ msgid "Frequent" #~ msgstr "Frequent" #~ msgid "All" #~ msgstr "All" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d" #~ msgstr "%A, %-d %B" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d, %Y" #~ msgstr "%A, %-d %B, %Y" #~ msgid "On" #~ msgstr "On" #~ msgid "Copy Error" #~ msgstr "Copy Error" #~ msgid "Next" #~ msgstr "Next" #~ msgctxt "button" #~ msgid "Sign In" #~ msgstr "Sign In" #~ msgid "Password: " #~ msgstr "Password: " #~ msgid "Enter Password…" #~ msgstr "Enter Password…" #~ msgid "%A, %B %d" #~ msgstr "%A, %d %B" #~ msgid "%d new message" #~ msgid_plural "%d new messages" #~ msgstr[0] "%d new message" #~ msgstr[1] "%d new messages" #~| msgid "Shell Extensions" #~ msgid "org.gnome.Extensions" #~ msgstr "org.gnome.Extensions" #~ msgid "Browse in Software" #~ msgstr "Browse in Software" #~ msgctxt "search-result" #~ msgid "Lock Orientation" #~ msgstr "Lock Orientation" #~| msgid "Username: " #~ msgid "Rename" #~ msgstr "Rename" #~ msgid "Type again:" #~ msgstr "Type again:" #~ msgid "Authentication required by wireless network" #~ msgstr "Authentication required by wireless network" #~ msgid "Mobile broadband network password" #~ msgstr "Mobile broadband network password" #~ msgid "Account Settings" #~ msgstr "Account Settings" #~ msgid "Orientation Lock" #~ msgstr "Orientation Lock" #~ msgid "" #~ "Keybinding that pauses and resumes all running tweens, for debugging " #~ "purposes" #~ msgstr "" #~ "Keybinding that pauses and resumes all running tweens, for debugging " #~ "purposes" #~ msgid "Which keyboard to use" #~ msgstr "Which keyboard to use" #~ msgid "The type of keyboard to use." #~ msgstr "The type of keyboard to use." #~ msgid "network-workgroup" #~ msgstr "network-workgroup" #~ msgid "toggle-switch-us" #~ msgstr "toggle-switch-us" #~ msgid "There was an error loading the preferences dialog for %s:" #~ msgstr "There was an error loading the preferences dialogue for %s:" #~ msgid "%s all day." #~ msgstr "%s all day." #~ msgid "%s, then %s later." #~ msgstr "%s, then %s later." #~ msgid "%s, then %s, followed by %s later." #~ msgstr "%s, then %s, followed by %s later." #~ msgid "Feels like %s." #~ msgstr "Feels like %s." #~ msgid "Web Authentication Redirect" #~ msgstr "Web Authentication Redirect" #~ msgid "Events" #~ msgstr "Events" #~ msgid "Hide tray" #~ msgstr "Hide tray" #~ msgid "Status Icons" #~ msgstr "Status Icons" #~ msgid "Media" #~ msgstr "Media" #~ msgid "%d x %d" #~ msgstr "%d x %d" #~ msgid "Show the week date in the calendar" #~ msgstr "Show the week date in the calendar" #~ msgid "If true, display the ISO week date in the calendar." #~ msgstr "If true, display the ISO week date in the calendar." #~ msgid "Use as Internet connection" #~ msgstr "Use as Internet connection" #~ msgid "Show the message tray" #~ msgstr "Show the message tray" #~ msgid "GNOME Shell (wayland compositor)" #~ msgstr "GNOME Shell (Wayland compositor)" #~ msgid "The maximum accuracy level of location." #~ msgstr "The maximum accuracy level of location." #~ msgid "" #~ "Configures the maximum level of location accuracy applications are " #~ "allowed to see. Valid options are 'off' (disable location tracking), " #~ "'country', 'city', 'neighborhood', 'street', and 'exact' (typically " #~ "requires GPS receiver). Please keep in mind that this only controls what " #~ "GeoClue will allow applications to see and they can find user's location " #~ "on their own using network resources (albeit with street-level accuracy " #~ "at best)." #~ msgstr "" #~ "Configures the maximum level of location accuracy applications are " #~ "allowed to see. Valid options are 'off' (disable location tracking), " #~ "'country', 'city', 'neighborhood', 'street', and 'exact' (typically " #~ "requires GPS receiver). Please keep in mind that this only controls what " #~ "GeoClue will allow applications to see and they can find user's location " #~ "on their own using network resources (albeit with street-level accuracy " #~ "at best)." #~ msgctxt "event list time" #~ msgid "%H∶%M" #~ msgstr "%H∶%M" #~ msgctxt "event list time" #~ msgid "%l∶%M %p" #~ msgstr "%l∶%M %p" #~ msgctxt "list sunday" #~ msgid "Su" #~ msgstr "Su" #~ msgctxt "list monday" #~ msgid "M" #~ msgstr "M" #~ msgctxt "list tuesday" #~ msgid "T" #~ msgstr "Tu" #~ msgctxt "list wednesday" #~ msgid "W" #~ msgstr "W" #~ msgctxt "list thursday" #~ msgid "Th" #~ msgstr "Th" #~ msgctxt "list friday" #~ msgid "F" #~ msgstr "F" #~ msgctxt "list saturday" #~ msgid "S" #~ msgstr "Sa" #~ msgid "Nothing Scheduled" #~ msgstr "Nothing Scheduled" #~ msgid "This week" #~ msgstr "This week" #~ msgid "Next week" #~ msgstr "Next week" #~ msgid "Removable Devices" #~ msgstr "Removable Devices" #~ msgid "Eject" #~ msgstr "Eject" #~ msgid "Invitation" #~ msgstr "Invitation" #~ msgid "Call" #~ msgstr "Call" #~ msgid "File Transfer" #~ msgstr "File Transfer" #~ msgid "Chat" #~ msgstr "Chat" #~ msgid "Invitation to %s" #~ msgstr "Invitation to %s" #~ msgid "%s is inviting you to join %s" #~ msgstr "%s is inviting you to join %s" #~ msgid "Decline" #~ msgstr "Decline" #~ msgid "Accept" #~ msgstr "Accept" #~ msgid "Video call from %s" #~ msgstr "Video call from %s" #~ msgid "Call from %s" #~ msgstr "Call from %s" #~ msgid "Answer" #~ msgstr "Answer" #~ msgid "%s is sending you %s" #~ msgstr "%s is sending you %s" #~ msgid "%s would like permission to see when you are online" #~ msgstr "%s would like permission to see when you are online" #~ msgid "Authentication failed" #~ msgstr "Authentication failed" #~ msgid "Encryption error" #~ msgstr "Encryption error" #~ msgid "Certificate not provided" #~ msgstr "Certificate not provided" #~ msgid "Certificate untrusted" #~ msgstr "Certificate untrusted" #~ msgid "Certificate expired" #~ msgstr "Certificate expired" #~ msgid "Certificate not activated" #~ msgstr "Certificate not activated" #~ msgid "Certificate hostname mismatch" #~ msgstr "Certificate hostname mismatch" #~ msgid "Certificate fingerprint mismatch" #~ msgstr "Certificate fingerprint mismatch" #~ msgid "Certificate self-signed" #~ msgstr "Certificate self-signed" #~ msgid "Status is set to offline" #~ msgstr "Status is set to offline" #~ msgid "Certificate is invalid" #~ msgstr "Certificate is invalid" #~ msgid "Connection has been refused" #~ msgstr "Connection has been refused" #~ msgid "Connection can't be established" #~ msgstr "Connection can't be established" #~ msgid "Connection has been lost" #~ msgstr "Connection has been lost" #~ msgid "This account is already connected to the server" #~ msgstr "This account is already connected to the server" #~ msgid "" #~ "Connection has been replaced by a new connection using the same resource" #~ msgstr "" #~ "Connection has been replaced by a new connection using the same resource" #~ msgid "The account already exists on the server" #~ msgstr "The account already exists on the server" #~ msgid "Server is currently too busy to handle the connection" #~ msgstr "Server is currently too busy to handle the connection" #~ msgid "Certificate has been revoked" #~ msgstr "Certificate has been revoked" #~ msgid "" #~ "Certificate uses an insecure cipher algorithm or is cryptographically weak" #~ msgstr "" #~ "Certificate uses an insecure cypher algorithm or is cryptographically weak" #~ msgid "" #~ "The length of the server certificate, or the depth of the server " #~ "certificate chain, exceed the limits imposed by the cryptography library" #~ msgstr "" #~ "The length of the server certificate, or the depth of the server " #~ "certificate chain, exceed the limits imposed by the cryptography library" #~ msgid "Internal error" #~ msgstr "Internal error" #~ msgid "View account" #~ msgstr "View account" #~ msgid "Date & Time Settings" #~ msgstr "Date & Time Settings" #~ msgid "Open" #~ msgstr "Open" #~ msgid "Clear Messages" #~ msgstr "Clear Messages" #~ msgid "Notification Settings" #~ msgstr "Notification Settings" #~ msgid "No Messages" #~ msgstr "No Messages" #~ msgid "Message Tray" #~ msgstr "Message Tray" #~ msgid "%d Connected Device" #~ msgid_plural "%d Connected Devices" #~ msgstr[0] "%d Connected Device" #~ msgstr[1] "%d Connected Devices" #~ msgid "UPS" #~ msgstr "UPS" #~ msgid "Battery" #~ msgstr "Battery" #~ msgid "List of categories that should be displayed as folders" #~ msgstr "List of categories that should be displayed as folders" #~ msgid "" #~ "Each category name in this list will be represented as folder in the " #~ "application view, rather than being displayed inline in the main view." #~ msgstr "" #~ "Each category name in this list will be represented as folder in the " #~ "application view, rather than being displayed inline in the main view." #~ msgid "Arrangement of buttons on the titlebar" #~ msgstr "Arrangement of buttons on the titlebar" #~ msgid "" #~ "This key overrides the key in org.gnome.desktop.wm.preferences when " #~ "running GNOME Shell." #~ msgstr "" #~ "This key overrides the key in org.gnome.desktop.wm.preferences when " #~ "running GNOME Shell." #~ msgid "Select an extension to configure using the combobox above." #~ msgstr "Select an extension to configure using the combobox above." #~ msgctxt "event list time" #~ msgid "%H\\u2236%M" #~ msgstr "%H\\u2236%M" #~ msgctxt "event list time" #~ msgid "%l\\u2236%M\\u2009%p" #~ msgstr "%l\\u2236%M\\u2009%p" #~ msgid "%A, %H:%M" #~ msgstr "%A, %H:%M" #~ msgid "%B %d, %H:%M" #~ msgstr "%d %B, %H:%M" #~ msgid "%B %d %Y, %H:%M " #~ msgstr "%d %B %Y, %H:%M " #~| msgid "Settings" #~ msgid "Settings Menu" #~ msgstr "Settings Menu" #~ msgid "Authorization request from %s" #~ msgstr "Authorisation request from %s" #~ msgid "Device %s wants to pair with this computer" #~ msgstr "Device %s wants to pair with this computer" #~ msgid "Device %s wants access to the service '%s'" #~ msgstr "Device %s wants access to the service '%s'" #~ msgid "Grant this time only" #~ msgstr "Grant this time only" #~ msgid "Reject" #~ msgstr "Reject" #~ msgid "Pairing confirmation for %s" #~ msgstr "Pairing confirmation for %s" #~| msgid "" #~| "Please confirm whether the PIN '%06d' matches the one on the device." #~ msgid "" #~ "Please confirm whether the Passkey '%06d' matches the one on the device." #~ msgstr "" #~ "Please confirm whether the Passkey '%06d' matches the one on the device." #~ msgid "Does not match" #~ msgstr "Does not match" #~ msgid "Pairing request for %s" #~ msgstr "Pairing request for %s" #~ msgid "Please enter the PIN mentioned on the device." #~ msgstr "Please enter the PIN mentioned on the device." #~ msgid "OK" #~ msgstr "OK" #~ msgid "unavailable" #~ msgstr "unavailable" #~ msgid "" #~ "Sorry, no wisdom for you today:\n" #~ "%s" #~ msgstr "" #~ "Sorry, no wisdom for you today:\n" #~ "%s" #~ msgid "%s the Oracle says" #~ msgstr "%s the Oracle says" #~ msgid "Whether to collect stats about applications usage" #~ msgstr "Whether to collect statistics about application usage" #~ msgid "" #~ "The shell normally monitors active applications in order to present the " #~ "most used ones (e.g. in launchers). While this data will be kept private, " #~ "you may want to disable this for privacy reasons. Please note that doing " #~ "so won't remove already saved data." #~ msgstr "" #~ "The shell normally monitors active applications in order to present the " #~ "most used ones (e.g. in launchers). While this data will be kept private, " #~ "you may want to disable this for privacy reasons. Please note that doing " #~ "so won't remove existing data." #~ msgid "" #~ "Internally used to store the last IM presence explicitly set by the user. " #~ "The value here is from the TpConnectionPresenceType enumeration." #~ msgstr "" #~ "Internally used to store the last IM presence explicitly set by the user. " #~ "The value here is from the TpConnectionPresenceType enumeration." #~ msgid "" #~ "Internally used to store the last session presence status for the user. " #~ "The value here is from the GsmPresenceStatus enumeration." #~ msgstr "" #~ "Internally used to store the last session presence status for the user. " #~ "The value here is from the GsmPresenceStatus enumeration." #~ msgid "Keybinding to toggle the screen recorder" #~ msgstr "Keybinding to toggle the screen recorder" #~ msgid "Keybinding to start/stop the builtin screen recorder." #~ msgstr "Keybinding to start/stop the builtin screen recorder." #~ msgid "Framerate used for recording screencasts." #~ msgstr "Framerate used for recording screencasts." #~ msgid "" #~ "The framerate of the resulting screencast recordered by GNOME Shell's " #~ "screencast recorder in frames-per-second." #~ msgstr "" #~ "The framerate of the resulting screencast recordered by GNOME Shell's " #~ "screencast recorder in frames per second." #~ msgid "The gstreamer pipeline used to encode the screencast" #~ msgstr "The GStreamer pipeline used to encode the screencast" #~ msgid "" #~ "Sets the GStreamer pipeline used to encode recordings. It follows the " #~ "syntax used for gst-launch. The pipeline should have an unconnected sink " #~ "pad where the recorded video is recorded. It will normally have a " #~ "unconnected source pad; output from that pad will be written into the " #~ "output file. However the pipeline can also take care of its own output - " #~ "this might be used to send the output to an icecast server via shout2send " #~ "or similar. When unset or set to an empty value, the default pipeline " #~ "will be used. This is currently 'vp8enc min_quantizer=13 max_quantizer=13 " #~ "cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux' and records to " #~ "WEBM using the VP8 codec. %T is used as a placeholder for a guess at the " #~ "optimal thread count on the system." #~ msgstr "" #~ "Sets the GStreamer pipeline used to encode recordings. It follows the " #~ "syntax used for gst-launch. The pipeline should have an unconnected sink " #~ "pad where the recorded video is recorded. It will normally have a " #~ "unconnected source pad; output from that pad will be written into the " #~ "output file. However the pipeline can also take care of its own output - " #~ "this might be used to send the output to an icecast server via shout2send " #~ "or similar. When unset or set to an empty value, the default pipeline " #~ "will be used. This is currently 'vp8enc min_quantizer=13 max_quantizer=13 " #~ "cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux' and records to " #~ "WEBM using the VP8 codec. %T is used as a placeholder for a guess at the " #~ "optimal thread count on the system." #~ msgid "File extension used for storing the screencast" #~ msgstr "File extension used for storing the screencast" #~ msgid "" #~ "The filename for recorded screencasts will be a unique filename based on " #~ "the current date, and use this extension. It should be changed when " #~ "recording to a different container format." #~ msgstr "" #~ "The filename for recorded screencasts will be a unique filename based on " #~ "the current date, and use this extension. It should be changed when " #~ "recording to a different container format." #~| msgid "Session..." #~ msgid "Session…" #~ msgstr "Session…" #~ msgid "Power" #~ msgstr "Power" #~ msgid "Click Log Out to quit these applications and log out of the system." #~ msgstr "Click Log Out to quit these applications and log out of the system." #~ msgid "Logging out of the system." #~ msgstr "Logging out of the system." #~ msgid "Click Power Off to quit these applications and power off the system." #~ msgstr "" #~ "Click Power Off to quit these applications and power off the system." #~ msgid "Powering off the system." #~ msgstr "Powering off the system." #~ msgid "Click Restart to quit these applications and restart the system." #~ msgstr "Click Restart to quit these applications and restart the system." #~ msgid "Restarting the system." #~ msgstr "Restarting the system." #~ msgid "Universal Access Settings" #~ msgstr "Universal Access Settings" #~ msgid "Visibility" #~ msgstr "Visibility" #~| msgid "Set up a New Device..." #~ msgid "Set Up a New Device…" #~ msgstr "Set Up a New Device…" #~| msgid "Send Files..." #~ msgid "Send Files…" #~ msgstr "Send Files…" #~ msgid "Mouse Settings" #~ msgstr "Mouse Settings" #~ msgid "Volume, network, battery" #~ msgstr "Volume, network, battery" #~ msgid "disabled" #~ msgstr "disabled" #~ msgid "cable unplugged" #~ msgstr "cable unplugged" #~ msgid "More…" #~ msgstr "More…" #~ msgid "Wired" #~ msgstr "Wired" #~ msgid "Auto Ethernet" #~ msgstr "Auto Ethernet" #~ msgid "Auto broadband" #~ msgstr "Auto broadband" #~ msgid "Auto dial-up" #~ msgstr "Auto dial-up" #~ msgid "Auto %s" #~ msgstr "Auto %s" #~ msgid "Auto bluetooth" #~ msgstr "Auto bluetooth" #~ msgid "Auto wireless" #~ msgstr "Auto wireless" #~ msgid "Wi-Fi" #~ msgstr "Wi-Fi" #~ msgid "%d hour remaining" #~ msgid_plural "%d hours remaining" #~ msgstr[0] "%d hour remaining" #~ msgstr[1] "%d hours remaining" #~ msgid "%d %s %d %s remaining" #~ msgstr "%d %s %d %s remaining" #~ msgid "hour" #~ msgid_plural "hours" #~ msgstr[0] "hour" #~ msgstr[1] "hours" #~ msgid "minute" #~ msgid_plural "minutes" #~ msgstr[0] "minute" #~ msgstr[1] "minutes" #~ msgid "%d minute remaining" #~ msgid_plural "%d minutes remaining" #~ msgstr[0] "%d minute remaining" #~ msgstr[1] "%d minutes remaining" #~| msgid "AC adapter" #~ msgid "AC Adapter" #~ msgstr "AC Adapter" #~| msgid "Laptop battery" #~ msgid "Laptop Battery" #~ msgstr "Laptop Battery" #~ msgid "Monitor" #~ msgstr "Monitor" #~ msgid "Mouse" #~ msgstr "Mouse" #~ msgid "PDA" #~ msgstr "PDA" #~| msgid "Cell phone" #~ msgid "Cell Phone" #~ msgstr "Mobile Phone" #~| msgid "Media player" #~ msgid "Media Player" #~ msgstr "Media Player" #~ msgid "Tablet" #~ msgstr "Tablet" #~ msgid "Computer" #~ msgstr "Computer" #~ msgctxt "device" #~ msgid "Unknown" #~ msgstr "Unknown" #~ msgid "Busy" #~ msgstr "Busy" #~ msgid "Invisible" #~ msgstr "Invisible" #~ msgid "Away" #~ msgstr "Away" #~ msgid "Idle" #~ msgstr "Idle" #~ msgid "Your chat status will be set to busy" #~ msgstr "Your chat status will be set to busy" #~ msgid "" #~ "Notifications are now disabled, including chat messages. Your online " #~ "status has been adjusted to let others know that you might not see their " #~ "messages." #~ msgstr "" #~ "Notifications are now disabled, including chat messages. Your online " #~ "status has been adjusted to let others know that you might not see their " #~ "messages." #~ msgid "Shutting down might cause them to lose unsaved work." #~ msgstr "Shutting down might cause them to lose unsaved work." #~ msgctxt "title" #~ msgid "Sign In" #~ msgstr "Sign In" #~ msgid "APPLICATIONS" #~ msgstr "APPLICATIONS" #~ msgid "SETTINGS" #~ msgstr "SETTINGS" #~ msgctxt "event list time" #~ msgid "%H:%M" #~ msgstr "%H:%M" #~ msgid "Subscription request" #~ msgstr "Subscription request" #~ msgid "Sent at %X on %A" #~ msgstr "Sent at %X on %A" #~ msgid "Sent on %A, %B %d, %Y" #~ msgstr "Sent on %A, %d %B, %Y" #~ msgid "Connection to %s failed" #~ msgstr "Connection to %s failed" #~ msgid "Reconnect" #~ msgstr "Reconnect" #~ msgid "tray" #~ msgstr "tray" #~ msgid "Browse Files..." #~ msgstr "Browse Files…" #~ msgid "Error browsing device" #~ msgstr "Error browsing device" #~ msgid "The requested device cannot be browsed, error is '%s'" #~ msgstr "The requested device cannot be browsed, error is '%s'" #~ msgid "More..." #~ msgstr "More…" #~ msgid "Wireless" #~ msgstr "Wireless" #~ msgid "VPN Connections" #~ msgstr "VPN Connections" #~ msgid "System Settings" #~ msgstr "System Settings" #~ msgid "Your favorite Easter Egg" #~ msgstr "Your favourite Easter Egg" #~ msgid "United Kingdom" #~ msgstr "United Kingdom" #~ msgid "Default" #~ msgstr "Default" #~ msgid "disabled OpenSearch providers" #~ msgstr "disabled OpenSearch providers" #~ msgid "Failed to unmount '%s'" #~ msgstr "Failed to unmount '%s'" #~ msgid "Retry" #~ msgstr "Retry" #~ msgid "PLACES & DEVICES" #~ msgstr "PLACES & DEVICES" #~ msgid "%1$s: %2$s" #~ msgstr "%1$s: %2$s" #~ msgid "Show time with seconds" #~ msgstr "Show time with seconds" #~ msgid "If true, display seconds in time." #~ msgstr "If true, display seconds in time." #~ msgid "Show date in clock" #~ msgstr "Show date in clock" #~ msgid "If true, display date in the clock, in addition to time." #~ msgstr "If true, display date in the clock, in addition to time." #~ msgid "CONTACTS" #~ msgstr "CONTACTS" #~ msgid "%a %b %e, %R:%S" #~ msgstr "%a %e %b, %R:%S" #~ msgid "%a %b %e, %R" #~ msgstr "%a %e %b, %R" #~ msgid "%a %R:%S" #~ msgstr "%a %R:%S" #~ msgid "%a %R" #~ msgstr "%a %R" #~ msgid "%a %b %e, %l:%M:%S %p" #~ msgstr "%a %e %b, %l:%M:%S %p" #~ msgid "%a %l:%M:%S %p" #~ msgstr "%a %l:%M:%S %p" #~ msgid "%s is online." #~ msgstr "%s is online." #~ msgid "%s is offline." #~ msgstr "%s is offline." #~ msgid "%s is away." #~ msgstr "%s is away." #~ msgid "%s is busy." #~ msgstr "%s is busy." #~ msgid "Hidden" #~ msgstr "Hidden" #~ msgid "Power Off..." #~ msgstr "Power Off…" #~ msgid "Online Accounts" #~ msgstr "Online Accounts" #~ msgid "Log Out..." #~ msgstr "Log Out…" #~ msgid "RECENT ITEMS" #~ msgstr "RECENT ITEMS" #~ msgid "Show password" #~ msgstr "Show password" #~ msgid "If true, display onscreen keyboard." #~ msgstr "If true, display on-screen keyboard." #~ msgid "Connectivity lost" #~ msgstr "Connectivity lost" #~ msgid "You're no longer connected to the network" #~ msgstr "You're no longer connected to the network" #~ msgid "%s has finished starting" #~ msgstr "%s has finished starting" #~ msgid "Localization Settings" #~ msgstr "Localisation Settings" #~ msgid "You're now connected to mobile broadband connection '%s'" #~ msgstr "You're now connected to mobile broadband connection '%s'" #~ msgid "You're now connected to wireless network '%s'" #~ msgstr "You're now connected to wireless network '%s'" #~ msgid "You're now connected to VPN network '%s'" #~ msgstr "You're now connected to VPN network '%s'" #~ msgid "Less than a minute ago" #~ msgstr "Less than a minute ago" #~ msgid "Shut Down" #~ msgstr "Shut Down" #~ msgid "Click Shut Down to quit these applications and shut down the system." #~ msgstr "" #~ "Click Shut Down to quit these applications and shut down the system." #~ msgid "The system will shut down automatically in %d seconds." #~ msgstr "The system will shut down automatically in %d seconds." #~ msgid "Shutting down the system." #~ msgstr "Shutting down the system." #~ msgid "Confirm" #~ msgstr "Confirm" #~ msgid "Panel" #~ msgstr "Panel" #~ msgid "Customize the panel clock" #~ msgstr "Customise the panel clock" #~ msgid "Custom format of the clock" #~ msgstr "Custom format of the clock" #~ msgid "Hour format" #~ msgstr "Hour format" #~ msgid "" #~ "If true and format is either \"12-hour\" or \"24-hour\", display seconds " #~ "in time." #~ msgstr "" #~ "If true and format is either \"12-hour\" or \"24-hour\", display seconds " #~ "in time." #~ msgid "Overview workspace view mode" #~ msgstr "Overview workspace view mode" #~ msgid "" #~ "The selected workspace view mode in the overview. Supported values are " #~ "\"single\" and \"grid\"." #~ msgstr "" #~ "The selected workspace view mode in the overview. Supported values are " #~ "\"single\" and \"grid\"." #~ msgid "" #~ "This key specifies the format used by the panel clock when the format key " #~ "is set to \"custom\". You can use conversion specifiers understood by " #~ "strftime() to obtain a specific format. See the strftime() manual for " #~ "more information." #~ msgstr "" #~ "This key specifies the format used by the panel clock when the format key " #~ "is set to \"custom\". You can use conversion specifiers understood by " #~ "strftime() to obtain a specific format. See the strftime() manual for " #~ "more information." #~ msgid "" #~ "This key specifies the hour format used by the panel clock. Possible " #~ "values are \"12-hour\", \"24-hour\", \"unix\" and \"custom\". If set to " #~ "\"unix\", the clock will display time in seconds since Epoch, i.e. " #~ "1970-01-01. If set to \"custom\", the clock will display time according " #~ "to the format specified in the custom_format key. Note that if set to " #~ "either \"unix\" or \"custom\", the show_date and show_seconds keys are " #~ "ignored." #~ msgstr "" #~ "This key specifies the hour format used by the panel clock. Possible " #~ "values are \"12-hour\", \"24-hour\", \"unix\" and \"custom\". If set to " #~ "\"unix\", the clock will display time in seconds since Epoch, i.e. " #~ "1970-01-01. If set to \"custom\", the clock will display time according " #~ "to the format specified in the custom_format key. Note that if set to " #~ "either \"unix\" or \"custom\", the show_date and show_seconds keys are " #~ "ignored." #~ msgid "Clock Format" #~ msgstr "Clock Format" #~ msgid "Clock Preferences" #~ msgstr "Clock Preferences" #~ msgid "Show seco_nds" #~ msgstr "Show seco_nds" #~ msgid "_12 hour format" #~ msgstr "_12 hour format" #~ msgid "_24 hour format" #~ msgstr "_24 hour format" #~ msgid "PREFERENCES" #~ msgstr "PREFERENCES" #~ msgid "Drag here to add favorites" #~ msgstr "Drag here to add favourites" #~ msgid "Find" #~ msgstr "Find" #~ msgid "Preferences" #~ msgstr "Preferences" #~ msgid "ON" #~ msgstr "ON" #~ msgid "OFF" #~ msgstr "OFF" #~ msgid "System Preferences..." #~ msgstr "System Preferences…" #~ msgid "" #~ "Can't add a new workspace because maximum workspaces limit has been " #~ "reached." #~ msgstr "" #~ "Can't add a new workspace because maximum workspaces limit has been " #~ "reached." #~ msgid "Can't remove the first workspace." #~ msgstr "Can't remove the first workspace." #~ msgid "Sidebar" #~ msgstr "Sidebar" #~ msgid "Recent Documents" #~ msgstr "Recent Documents" #~ msgid "Browse" #~ msgstr "Browse" #~ msgid "(see all)" #~ msgstr "(see all)" #~ msgid "PLACES" #~ msgstr "PLACES" #~ msgid "SEARCH RESULTS" #~ msgstr "SEARCH RESULTS" #~ msgid "Can't lock screen: %s" #~ msgstr "Can't lock screen: %s" #~ msgid "Can't temporarily set screensaver to blank screen: %s" #~ msgstr "Can't temporarily set screensaver to blank screen: %s" #~ msgid "Can't logout: %s" #~ msgstr "Can't logout: %s" 0707010000022A000081A40000000000000000000000016712993F000197F4000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/eo.po# Esperanto translation for gnome-shell. # Copyright (C) 2011 Free Software Foundation, Inc. # This file is distributed under the same license as the gnome-shell package. # Tiffany ANTOPOLSKI , 2011, 2012. # Ryan LORTIE , 2013. # Daniel PUENTES , 2015. # Nicolas MAIA < >, 2015. # Carmen Bianca BAKKER , 2018-2023. # Kristjan SCHMIDT , 2011-2023. # msgid "" msgstr "" "Project-Id-Version: gnome-shell master\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" "POT-Creation-Date: 2023-09-14 15:17+0000\n" "PO-Revision-Date: 2023-09-14 22:56+0200\n" "Last-Translator: Kristjan SCHMIDT \n" "Language-Team: Esperanto \n" "Language: eo\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: Gtranslator 42.0\n" "X-DamnedLies-Scope: partial\n" "X-Project-Style: gnome\n" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "Lanĉiloj" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate favorite app 1" msgstr "Aktivigi ŝatatan aplikaĵon 1" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate favorite app 2" msgstr "Aktivigi ŝatatan aplikaĵon 2" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate favorite app 3" msgstr "Aktivigi ŝatatan aplikaĵon 3" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate favorite app 4" msgstr "Aktivigi ŝatatan aplikaĵon 4" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate favorite app 5" msgstr "Aktivigi ŝatatan aplikaĵon 5" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate favorite app 6" msgstr "Aktivigi ŝatatan aplikaĵon 6" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate favorite app 7" msgstr "Aktivigi ŝatatan aplikaĵon 7" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate favorite app 8" msgstr "Aktivigi ŝatatan aplikaĵon 8" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate favorite app 9" msgstr "Aktivigi ŝatatan aplikaĵon 9" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2148 msgid "Screenshots" msgstr "Ekrankopioj" #: data/50-gnome-shell-screenshots.xml:9 #: data/org.gnome.shell.gschema.xml.in:238 msgid "Take a screenshot interactively" msgstr "Fari ekrankopion interage" #: data/50-gnome-shell-screenshots.xml:12 #: data/org.gnome.shell.gschema.xml.in:250 msgid "Take a screenshot" msgstr "Fari ekrankopion" #: data/50-gnome-shell-screenshots.xml:15 #: data/org.gnome.shell.gschema.xml.in:246 msgid "Take a screenshot of a window" msgstr "Fari ekrankopion de fenestro" #: data/50-gnome-shell-screenshots.xml:18 #: data/org.gnome.shell.gschema.xml.in:242 msgid "Record a screencast interactively" msgstr "Registri ekranregistraĵon interage" #: data/50-gnome-shell-system.xml:6 msgid "System" msgstr "Sistemo" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "Montri la sciig-liston" #: data/50-gnome-shell-system.xml:12 msgid "Open the quick settings menu" msgstr "Malfermi la menuon de rapidaj agordoj" #: data/50-gnome-shell-system.xml:15 msgid "Focus the active notification" msgstr "Fokusi la aktivan sciigon" #: data/50-gnome-shell-system.xml:18 msgid "Show the overview" msgstr "Montri la superrigardon" #: data/50-gnome-shell-system.xml:21 msgid "Show all apps" msgstr "Montri ĉiujn aplikaĵojn" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "GNOME-ŝelo" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "Fenestroadministrado kaj aplikaĵo-lanĉado" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "Ŝalti internajn ilojn por programistoj kaj testantoj per Alt+F2" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Permesas aliron al interna sencimigaj kaj kontroladaj iloj uzante la Alt+F2-" "dialogon." #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "UUID-oj de ŝaltendaj kromprogramoj" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "GNOME-ŝelaj kromprogramoj havas UUID-atributon; ĉi tiu ŝlosilo listigas " "kromprogramojn kiuj devus ŝargitiĝi. Iu ajn kromprogramo kiu volas esti " "ŝargita devas esti en ĉi tiu listo. Vi povas ankaŭ ŝanĝi ĉi tiun liston per " "la ‘EnableExtension’- kaj ‘DisableExtension’ D-Bus-metodoj sur org.gnome." "Shell." #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "UUID-oj de la etendaĵoj kiuj estu tuje ĉesigitaj" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" "GNOME-ŝelaj kromprogramoj havas UUID-atributon; ĉi tiu ŝlosilo listigas " "etendaĵojn kiuj estu malŝaltitaj, eĉ se ili estas ŝargita de la nuna reĝimo. " "Vi povas ankaŭ ŝanĝi ĉi tiun liston per la ‘EnableExtension’- kaj " "‘DisableExtension’ D-Bus-metodoj sur org.gnome.Shell. Ĉi tiu ŝlosilo superas " "la “enabled-extensions”-agordon." #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "Malŝalti uzanto-etendaĵon" #: data/org.gnome.shell.gschema.xml.in:45 msgid "Disables the validation of extension version compatibility" msgstr "Malŝaltas la validigadon de kromprogramversia kongrueco" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "GNOME-ŝelo nur ŝargos kromprogramojn, kiuj asertas subteni la aktualan " "rulantan version. Ŝaltante tiun ĉi opcion, oni malŝaltas tiun kontrolon kaj " "ŝargos ĉiujn kromprogramojn, sendepende de la versioj, ke tiuj kromprogramoj " "asertas subteni." #: data/org.gnome.shell.gschema.xml.in:54 msgid "List of desktop file IDs for favorite applications" msgstr "" "Listo de la identiloj de la labortablaj dosieroj por preferataj aplikaĵoj" #: data/org.gnome.shell.gschema.xml.in:55 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" "La aplikaĵoj kiuj korespondas al tiuj identigiloj estos montrita en la areo " "de la preferataj aplikaĵoj." #: data/org.gnome.shell.gschema.xml.in:62 msgid "History for command (Alt-F2) dialog" msgstr "Historio de la komando-dialogo (Alt+F2)" #. Translators: looking glass is a debugger and inspector tool, see https://wiki.gnome.org/Projects/GnomeShell/LookingGlass #: data/org.gnome.shell.gschema.xml.in:67 msgid "History for the looking glass dialog" msgstr "Historio de la dialogo de ‘looking glass’" #: data/org.gnome.shell.gschema.xml.in:71 msgid "Always show the “Log out” menu item in the user menu." msgstr "Ĉiam montri la menueron “Adiaŭi” en la uzanto-menuo." #: data/org.gnome.shell.gschema.xml.in:72 msgid "" "This key overrides the automatic hiding of the “Log out” menu item in single-" "user, single-session situations." msgstr "" "Ĉi tiu ŝlosilo transpasas la aŭtomatan kaŝon de la menuero “Adiaŭi” por unu-" "uzantulaj, unu-seancaj situacioj." #: data/org.gnome.shell.gschema.xml.in:79 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "Ĉu memorigi pasvorton por surmeti ĉifritajn aŭ forajn dosiersistemojn" #: data/org.gnome.shell.gschema.xml.in:80 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "La ŝelo petos pasvorton kiam ĉifrita aparato aŭ defora dosiersistemo estas " "surmetata. Se la pasvorto konserveblas por estonta uzo, “Memorigi pasvorton” " "markobutono montritos. Ĉi ŝlosilo agordas la implicitan staton de la " "markobutono." #: data/org.gnome.shell.gschema.xml.in:152 #: data/org.gnome.shell.gschema.xml.in:159 msgid "Keybinding to shift between overview states" msgstr "Klavkombino por ŝanĝi inter superrigardaj ŝtatoj" #: data/org.gnome.shell.gschema.xml.in:153 msgid "Keybinding to shift between session, window picker and app grid" msgstr "Klavkombino por ŝanĝi inter sesio, fenestro-elektilo kaj aplika krado" #: data/org.gnome.shell.gschema.xml.in:160 msgid "Keybinding to shift between app grid, window picker and session" msgstr "Klavkombino por ŝanĝi inter aplika krado, fenestra elekto kaj sesio" #: data/org.gnome.shell.gschema.xml.in:166 msgid "Keybinding to open the “Show Applications” view" msgstr "Klavkombino por malfermi la vidon “Montri aplikaĵojn”" #: data/org.gnome.shell.gschema.xml.in:167 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "" "Klavkombino por malfermi la vidon “Montri aplikaĵojn” de la Agoj-" "Superrigardo." #: data/org.gnome.shell.gschema.xml.in:174 msgid "Keybinding to open the overview" msgstr "Klavkombino por malfermi la superrigardon" #: data/org.gnome.shell.gschema.xml.in:175 msgid "Keybinding to open the Activities Overview." msgstr "Klavkombino por malfermi la Agoj-Superrigardon." #: data/org.gnome.shell.gschema.xml.in:181 msgid "Keybinding to toggle the visibility of the notification list" msgstr "Klavkombino por baskuligi la videblecon de la sciigolisto" #: data/org.gnome.shell.gschema.xml.in:182 msgid "Keybinding to toggle the visibility of the notification list." msgstr "Klavkombino por baskuligi la videblecon de la sciigolisto." #: data/org.gnome.shell.gschema.xml.in:188 msgid "Keybinding to toggle the quick settings menu" msgstr "Klavkombino por ŝanĝi la menuon de rapidaj agordoj" #: data/org.gnome.shell.gschema.xml.in:189 msgid "Keybinding to toggle the quick settings menu." msgstr "Klavkombino por ŝanĝi la menuon de rapidaj agordoj." #: data/org.gnome.shell.gschema.xml.in:195 msgid "Keybinding to focus the active notification" msgstr "Klavkombino por fokusi la aktivan sciigon" #: data/org.gnome.shell.gschema.xml.in:196 msgid "Keybinding to focus the active notification." msgstr "Klavkombino por fokusi la aktivan sciigon." #: data/org.gnome.shell.gschema.xml.in:202 msgid "Switch to application 1" msgstr "Ŝanĝi al aplikaĵo 1" #: data/org.gnome.shell.gschema.xml.in:206 msgid "Switch to application 2" msgstr "Ŝanĝi al aplikaĵo 2" #: data/org.gnome.shell.gschema.xml.in:210 msgid "Switch to application 3" msgstr "Ŝanĝi al aplikaĵo 3" #: data/org.gnome.shell.gschema.xml.in:214 msgid "Switch to application 4" msgstr "Ŝanĝi al aplikaĵo 4" #: data/org.gnome.shell.gschema.xml.in:218 msgid "Switch to application 5" msgstr "Ŝanĝi al aplikaĵo 5" #: data/org.gnome.shell.gschema.xml.in:222 msgid "Switch to application 6" msgstr "Ŝanĝi al aplikaĵo 6" #: data/org.gnome.shell.gschema.xml.in:226 msgid "Switch to application 7" msgstr "Ŝanĝi al aplikaĵo 7" #: data/org.gnome.shell.gschema.xml.in:230 msgid "Switch to application 8" msgstr "Ŝanĝi al aplikaĵo 8" #: data/org.gnome.shell.gschema.xml.in:234 msgid "Switch to application 9" msgstr "Ŝanĝi al aplikaĵo 9" #: data/org.gnome.shell.gschema.xml.in:259 #: data/org.gnome.shell.gschema.xml.in:286 msgid "Limit switcher to current workspace." msgstr "Limigi ŝaltilon al aktuala laborspaco." #: data/org.gnome.shell.gschema.xml.in:260 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "Se vera, nur aplikaĵoj, kiuj havas fenestrojn en la aktuala laborspaco, " "estas montritaj en la ŝaltilo. Alimaniere, ĉiuj aplikaĵoj estas inkluzivitaj." #: data/org.gnome.shell.gschema.xml.in:277 msgid "The application icon mode." msgstr "La aplikaĵo bildsimbola reĝimo." #: data/org.gnome.shell.gschema.xml.in:278 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-" "only” (shows only the application icon) or “both”." msgstr "" "Agordas kiel la fenestro montritas en la ŝaltilo. Eblaj valoroj estas " "“thumbnail-only” (nur bildeto), “app-icon-only” (nur aplikaĵa bildsimbolo) " "aŭ “both” (ambaŭ)." #: data/org.gnome.shell.gschema.xml.in:287 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "Se vera, nur fenestroj de la nuna laborspaco estas montrataj en la ŝaltilo. " "Alimaniere, ĉiuj fenestroj estas inkluzivitaj." #: data/org.gnome.shell.gschema.xml.in:297 msgid "Locations" msgstr "Lokoj" #: data/org.gnome.shell.gschema.xml.in:298 msgid "The locations to show in world clocks" msgstr "La montrendaj lokoj en mondohorloĝoj" #: data/org.gnome.shell.gschema.xml.in:308 msgid "Automatic location" msgstr "Aŭtomata loko" #: data/org.gnome.shell.gschema.xml.in:316 msgid "Location" msgstr "Loko" #. Keep in sync with subprojects/extensions-app #: data/org.gnome.Shell.Extensions.desktop.in.in:5 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/js/main.js:218 #: subprojects/extensions-app/data/ui/extensions-window.ui:18 #: subprojects/extensions-app/data/ui/extensions-window.ui:82 msgid "Extensions" msgstr "Etendaĵoj" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "Reta saluto" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:143 msgid "Something’s gone wrong" msgstr "Io fiaskis" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" "Ni pardonpetas, sed estis problemo: la agordoj de ĉi tiu etendaĵo ne " "montreblas. Ni rekomendas, ke vi raportu la problemon al la aŭtoroj de la " "etendaĵo." #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "Teĥnikaj detaloj" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "Hejmpaĝo" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 msgid "Visit extension homepage" msgstr "Viziti hejmpaĝon de etendaĵo" #: js/gdm/authPrompt.js:151 js/ui/audioDeviceSelection.js:66 #: js/ui/components/networkAgent.js:115 js/ui/components/polkitAgent.js:146 #: js/ui/endSessionDialog.js:443 js/ui/extensionDownloader.js:256 #: js/ui/shellMountOperation.js:387 js/ui/shellMountOperation.js:397 #: subprojects/extensions-app/js/main.js:179 msgid "Cancel" msgstr "Nuligi" #: js/gdm/authPrompt.js:317 js/ui/components/networkAgent.js:215 #: js/ui/components/networkAgent.js:235 js/ui/components/networkAgent.js:267 #: js/ui/components/networkAgent.js:300 js/ui/components/networkAgent.js:339 #: js/ui/components/networkAgent.js:352 js/ui/components/polkitAgent.js:288 #: js/ui/shellMountOperation.js:337 msgid "Password" msgstr "Pasvorto" #: js/gdm/loginDialog.js:326 msgid "Choose Session" msgstr "Elekti seancon" #: js/gdm/loginDialog.js:471 msgid "Not listed?" msgstr "Ĉu ne en listo?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:941 #, javascript-format msgid "(e.g., user or %s)" msgstr "(ekzemple, uzanto aŭ %s)" #: js/gdm/loginDialog.js:946 js/ui/components/networkAgent.js:259 #: js/ui/components/networkAgent.js:294 js/ui/components/networkAgent.js:328 msgid "Username" msgstr "Uzantonomo" #: js/gdm/loginDialog.js:1270 msgid "Login Window" msgstr "Salutfenestro" #: js/gdm/util.js:402 msgid "Authentication error" msgstr "Aŭtentigo-eraro" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:584 msgid "(or swipe finger across reader)" msgstr "(aŭ pasu fingron trans legilo)" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:589 msgid "(or place finger on reader)" msgstr "(aŭ metu fingron sur legilo)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:91 msgctxt "search-result" msgid "Power Off" msgstr "Malŝalti" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:94 msgid "power off;poweroff;shutdown;halt;stop" msgstr "malŝalti;sistemfermo;paŭzigi;haltigi" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:99 msgctxt "search-result" msgid "Restart" msgstr "Restartigi" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:102 msgid "reboot;restart;" msgstr "restartigi;" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:107 msgctxt "search-result" msgid "Lock Screen" msgstr "Ŝlosi ekranon" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:110 msgid "lock screen" msgstr "ŝlosa ekrano" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:115 msgctxt "search-result" msgid "Log Out" msgstr "Adiaŭi" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:118 msgid "logout;log out;sign off" msgstr "adiaŭi;elsaluti" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:123 msgctxt "search-result" msgid "Suspend" msgstr "Halteti" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:126 msgid "suspend;sleep" msgstr "halteti;dormi;dormeti" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:131 msgctxt "search-result" msgid "Switch User" msgstr "Ŝanĝi uzanton" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:134 msgid "switch user" msgstr "ŝanĝi uzanton" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:141 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "ŝlosekrana orientiĝo;malŝlosekrana orientiĝo;ekrano;rotacio" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:146 msgctxt "search-result" msgid "Take a Screenshot" msgstr "Fari ekrankopion" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:149 msgid "screenshot;screencast;snip;capture;record" msgstr "ekrankopio;ekranregistraĵo;kapti;registri" #: js/misc/systemActions.js:249 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "Malŝlosi ekranan orientiĝon" #: js/misc/systemActions.js:250 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "Ŝlosi ekranan orientiĝon" #: js/misc/util.js:138 msgid "Command not found" msgstr "Komando ne trovita" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:178 msgid "Could not parse command:" msgstr "Ne eblis analizi komandon:" #: js/misc/util.js:186 #, javascript-format msgid "Execution of “%s” failed:" msgstr "Plenumo de “%s” malsukcesis:" #: js/misc/dateUtils.js:69 msgid "Just now" msgstr "Ĵus" #: js/misc/dateUtils.js:72 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "Antaŭ %d minuto" msgstr[1] "Antaŭ %d minutoj" #: js/misc/dateUtils.js:79 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "Antaŭ %d horo" msgstr[1] "Antaŭ %d horoj" #: js/misc/dateUtils.js:85 js/ui/dateMenu.js:182 msgid "Yesterday" msgstr "Hieraŭ" #: js/misc/dateUtils.js:88 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "Antaŭ %d tago" msgstr[1] "Antaŭ %d tagoj" #: js/misc/dateUtils.js:95 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "Antau %d semajno" msgstr[1] "Antau %d semajnoj" #: js/misc/dateUtils.js:102 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "Antaŭ %d monato" msgstr[1] "Antaŭ %d monatoj" #: js/misc/dateUtils.js:108 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "Antaŭ %d jaro" msgstr[1] "Antaŭ %d jaroj" #. Translators: Time in 24h format #: js/misc/dateUtils.js:155 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/dateUtils.js:161 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "Hieraŭ, %H∶%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/dateUtils.js:167 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/dateUtils.js:173 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%-d-a de %B, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/dateUtils.js:179 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%-d-a de %B %Y, %H∶%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/dateUtils.js:184 msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/dateUtils.js:190 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "Hieraŭ, %l:%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/dateUtils.js:196 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/dateUtils.js:202 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%-d-a de %B, %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/dateUtils.js:208 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%-d-a de %B %Y, %l∶%M %p" #: js/portalHelper/main.js:98 msgid "Your connection seems to be secure" msgstr "Via konekto ŝajnas sekure" #: js/portalHelper/main.js:104 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "Via konekto al ĉi tiu retkapetja salutado ne estas sekura. Pasvortojn kaj " "aliajn informojn, kiujn vi enigas en ĉi tiu paĝo, apudaj aliuloj povas vidi." #: js/portalHelper/main.js:115 msgid "Hotspot Login" msgstr "Retkapteja salutado" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:45 js/ui/inhibitShortcutsDialog.js:92 msgid "Deny" msgstr "Rifuzi" #: js/ui/accessDialog.js:46 js/ui/inhibitShortcutsDialog.js:101 msgid "Allow" msgstr "Akcepti" #: js/ui/appDisplay.js:1777 msgid "Unnamed Folder" msgstr "Sennoma dosierujo" #: js/ui/appFavorites.js:166 #, javascript-format msgid "%s has been pinned to the dash." msgstr "%s fiksiĝis al la doko." #: js/ui/appFavorites.js:199 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "%s malfiksiĝis de la doko." #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:51 msgid "Open Windows" msgstr "Malfermaj fenestroj" #: js/ui/appMenu.js:59 msgid "New Window" msgstr "Nova fenestro" #: js/ui/appMenu.js:86 msgid "App Details" msgstr "Detaloj de aplikaĵo" #: js/ui/appMenu.js:102 msgid "Quit" msgstr "Ĉesi" #: js/ui/appMenu.js:162 js/ui/dash.js:250 msgid "Unpin" msgstr "Malfiksi" #: js/ui/appMenu.js:163 msgid "Pin to Dash" msgstr "Fiksi al doko" #: js/ui/appMenu.js:180 msgid "Launch using Integrated Graphics Card" msgstr "Lanĉi uzante integritan vidkarton" #: js/ui/appMenu.js:181 msgid "Launch using Discrete Graphics Card" msgstr "Lanĉi uzante dediĉitan vidkarton" #: js/ui/audioDeviceSelection.js:46 msgid "Select Audio Device" msgstr "Elekti sonaparaton" #: js/ui/audioDeviceSelection.js:61 js/ui/status/volume.js:83 msgid "Sound Settings" msgstr "Sonagordoj" #: js/ui/audioDeviceSelection.js:74 msgid "Headphones" msgstr "Kapaŭskultilo" #: js/ui/audioDeviceSelection.js:76 msgid "Headset" msgstr "Kaptelefono" #: js/ui/audioDeviceSelection.js:78 js/ui/status/volume.js:352 msgid "Microphone" msgstr "Mikrofono" #: js/ui/backgroundMenu.js:15 msgid "Change Background…" msgstr "Ŝanĝi ekranfonon…" #: js/ui/backgroundMenu.js:17 msgid "Display Settings" msgstr "Ekran-agordoj" #: js/ui/backgroundMenu.js:18 #: subprojects/extensions-app/data/ui/extension-row.ui:122 msgid "Settings" msgstr "Agordoj" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:40 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:66 msgctxt "grid sunday" msgid "S" msgstr "D" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:68 msgctxt "grid monday" msgid "M" msgstr "L" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:70 msgctxt "grid tuesday" msgid "T" msgstr "M" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:72 msgctxt "grid wednesday" msgid "W" msgstr "M" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:74 msgctxt "grid thursday" msgid "T" msgstr "Ĵ" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:76 msgctxt "grid friday" msgid "F" msgstr "V" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:78 msgctxt "grid saturday" msgid "S" msgstr "S" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:429 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:439 msgid "%OB %Y" msgstr "%OB %Y" #: js/ui/calendar.js:500 msgid "Previous month" msgstr "Antaŭa monato" #: js/ui/calendar.js:518 msgid "Next month" msgstr "Sekva monato" #: js/ui/calendar.js:669 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%-d" #: js/ui/calendar.js:728 msgid "Week %V" msgstr "Semajno %V" #: js/ui/calendar.js:907 msgid "No Notifications" msgstr "Neniu sciigo" #: js/ui/calendar.js:964 msgid "Do Not Disturb" msgstr "Ne interrompu" #: js/ui/calendar.js:985 msgid "Clear" msgstr "Vakigi" #. Translators: %s is an application name #: js/ui/closeDialog.js:44 #, javascript-format msgid "“%s” is not responding." msgstr "“%s” ne respondas." #: js/ui/closeDialog.js:45 msgid "" "You may choose to wait a short while for it to continue or force the app to " "quit entirely." msgstr "" "Vi povas atendi kelkajn momentojn por ke ĝi daŭrigu aŭ devigi ke la aplikaĵo " "ĉesu." #: js/ui/closeDialog.js:73 msgid "Force Quit" msgstr "Devige ĉesigi" #: js/ui/closeDialog.js:78 msgid "Wait" msgstr "Atendi" #: js/ui/components/automountManager.js:84 msgid "External drive connected" msgstr "Ekstera disko konektitas" #: js/ui/components/automountManager.js:96 msgid "External drive disconnected" msgstr "Ekstera disko malkonektitas" #: js/ui/components/automountManager.js:207 msgid "Unable to unlock volume" msgstr "Ne eblas malŝlosi datumportilon" #: js/ui/components/automountManager.js:208 msgid "The installed udisks version does not support the PIM setting" msgstr "La instalita versio de udisks ne subtenas la PIM-agordon" #: js/ui/components/autorunManager.js:319 #, javascript-format msgid "Open with %s" msgstr "Malfermi per %s" #: js/ui/components/networkAgent.js:97 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router." msgstr "" "Alternative vi povas konekti per premi la “WPS”-butonon de via enkursigilo." #: js/ui/components/networkAgent.js:109 js/ui/status/bluetooth.js:246 #: js/ui/status/network.js:371 js/ui/status/network.js:455 msgid "Connect" msgstr "Konekti" #: js/ui/components/networkAgent.js:224 msgid "Key" msgstr "Ŝlosilo" #: js/ui/components/networkAgent.js:275 js/ui/components/networkAgent.js:314 msgid "Private key password" msgstr "Pasvorto por privata ŝlosilo" #: js/ui/components/networkAgent.js:308 msgid "Identity" msgstr "Identeco" #: js/ui/components/networkAgent.js:334 msgid "Service" msgstr "Servo" #: js/ui/components/networkAgent.js:372 js/ui/components/networkAgent.js:408 #: js/ui/components/networkAgent.js:753 js/ui/components/networkAgent.js:774 msgid "Authentication required" msgstr "Aŭtentokontrolo estas bezonata" #: js/ui/components/networkAgent.js:373 js/ui/components/networkAgent.js:754 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network " "“%s”." msgstr "" "Pasvortoj aŭ ĉifro-ŝlosiloj estas necesaj por aliro al sendrata reto “%s”." #: js/ui/components/networkAgent.js:377 js/ui/components/networkAgent.js:758 msgid "Wired 802.1X authentication" msgstr "Dratita 802.1X aŭtentokontrolo" #: js/ui/components/networkAgent.js:380 msgid "Network name" msgstr "Reta nomo" #: js/ui/components/networkAgent.js:388 js/ui/components/networkAgent.js:762 msgid "DSL authentication" msgstr "DSL-a aŭtentokontrolo" #: js/ui/components/networkAgent.js:395 js/ui/components/networkAgent.js:767 msgid "PIN code required" msgstr "PIN-kodo bezonata" #: js/ui/components/networkAgent.js:396 js/ui/components/networkAgent.js:768 msgid "PIN code is needed for the mobile broadband device" msgstr "PIN-kodo necesas por la portebla larĝkapacita aparato" #: js/ui/components/networkAgent.js:398 msgid "PIN" msgstr "PIN" #: js/ui/components/networkAgent.js:409 js/ui/components/networkAgent.js:759 #: js/ui/components/networkAgent.js:763 js/ui/components/networkAgent.js:775 #: js/ui/components/networkAgent.js:779 #, javascript-format msgid "A password is required to connect to “%s”." msgstr "Pasvorto necesas por konekti al “%s”." #: js/ui/components/networkAgent.js:742 js/ui/status/network.js:2040 msgid "Network Manager" msgstr "Retadministrilo" #: js/ui/components/networkAgent.js:778 msgid "VPN password" msgstr "VPR-Pasvorto" #: js/ui/components/polkitAgent.js:46 msgid "Authentication Required" msgstr "Aŭtentigo bezonata" #: js/ui/components/polkitAgent.js:86 msgid "Administrator" msgstr "Administranto" #: js/ui/components/polkitAgent.js:151 msgid "Authenticate" msgstr "Aŭtentigi" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:265 js/ui/shellMountOperation.js:420 msgid "Sorry, that didn’t work. Please try again." msgstr "Pardonon, tio ne funkciis. Bonvolu provi denove." #: js/ui/components/telepathyClient.js:831 #, javascript-format msgid "%s is now known as %s" msgstr "%s estas nun konata kiel %s" #: js/ui/ctrlAltTab.js:25 js/ui/overviewControls.js:412 msgid "Windows" msgstr "Fenestroj" #: js/ui/dash.js:206 js/ui/dash.js:252 msgid "Show Apps" msgstr "Montri aplikaĵojn" # Kiel macOS «dock”. --Carmen #. Translators: this is the name of the dock/favorites area on #. the left of the overview #: js/ui/dash.js:410 msgid "Dash" msgstr "Doko" # Komento por tradukantoj estas neĝusta? --Carmen #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:98 msgid "%B %-d %Y" msgstr "%-d-a de %B %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:105 msgid "%A %B %e %Y" msgstr "%A, %-d-a de %B %Y" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:171 msgctxt "calendar heading" msgid "%B %-d" msgstr "%-d-a de %B" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:174 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%-d-a de %B %Y" #: js/ui/dateMenu.js:180 msgid "Today" msgstr "Hodiaŭ" #: js/ui/dateMenu.js:184 msgid "Tomorrow" msgstr "Morgaŭ" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:215 msgctxt "event list time" msgid "All Day" msgstr "Tuttaga" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:237 msgid "%m/%d" msgstr "%d/%m" #: js/ui/dateMenu.js:288 msgid "No Events" msgstr "Neniu evento" #: js/ui/dateMenu.js:410 msgid "Add world clocks…" msgstr "Aldoni mondajn horloĝojn…" #: js/ui/dateMenu.js:411 msgid "World Clocks" msgstr "Mondaj horloĝoj" #: js/ui/dateMenu.js:695 msgid "Loading…" msgstr "Ŝargante…" #: js/ui/dateMenu.js:705 msgid "Go online for weather information" msgstr "Enretigi por veterinformoj" #: js/ui/dateMenu.js:707 msgid "Weather information is currently unavailable" msgstr "Veterinformoj ĉimomente nehaveblas" #: js/ui/dateMenu.js:717 msgid "Weather" msgstr "Vetero" #: js/ui/dateMenu.js:719 msgid "Select weather location…" msgstr "Elekti veteran lokon…" #: js/ui/endSessionDialog.js:46 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "Adiaŭi %s" #: js/ui/endSessionDialog.js:47 msgctxt "title" msgid "Log Out" msgstr "Adiaŭi" #: js/ui/endSessionDialog.js:50 #, javascript-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "%s aŭtomate adiaŭos post %d sekundo." msgstr[1] "%s aŭtomate adiaŭos post %d sekundoj." #: js/ui/endSessionDialog.js:56 #, javascript-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "Vi aŭtomate adiaŭos post %d sekundo." msgstr[1] "Vi aŭtomate adiaŭos post %d sekundoj." #: js/ui/endSessionDialog.js:63 msgctxt "button" msgid "Log Out" msgstr "Adiaŭi" #: js/ui/endSessionDialog.js:69 js/ui/status/system.js:175 msgctxt "title" msgid "Power Off" msgstr "Malŝalti" #: js/ui/endSessionDialog.js:70 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Instali ĝisdatigojn & malŝalti" #: js/ui/endSessionDialog.js:73 #, javascript-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "La sistemo aŭtomate malŝaltiĝos post %d sekundo." msgstr[1] "La sistemo aŭtomate malŝaltiĝos post %d sekundoj." #: js/ui/endSessionDialog.js:77 js/ui/endSessionDialog.js:96 msgctxt "checkbox" msgid "Install pending software updates" msgstr "Instali okazontajn ĝisdatigojn" #: js/ui/endSessionDialog.js:81 msgctxt "button" msgid "Power Off" msgstr "Malŝalti" #: js/ui/endSessionDialog.js:88 msgctxt "title" msgid "Restart" msgstr "Restartigi" #: js/ui/endSessionDialog.js:89 msgctxt "title" msgid "Install Updates & Restart" msgstr "Instali ĝisdatigojn & restartigi" #: js/ui/endSessionDialog.js:92 #, javascript-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "La sistemo aŭtomate restartiĝos post %d sekundo." msgstr[1] "La sistemo aŭtomate restartiĝos post %d sekundoj." #: js/ui/endSessionDialog.js:100 msgctxt "button" msgid "Restart" msgstr "Restartigi" #: js/ui/endSessionDialog.js:108 msgctxt "title" msgid "Restart & Install Updates" msgstr "Restartigi & instali ĝisdatigojn" #: js/ui/endSessionDialog.js:111 #, javascript-format msgid "The system will automatically restart and install updates in %d second." msgid_plural "" "The system will automatically restart and install updates in %d seconds." msgstr[0] "" "La sistemo aŭtomate restartiĝos kaj instalos ĝisdatigojn post %d sekundo." msgstr[1] "" "La sistemo aŭtomate restartiĝos kaj instalos ĝisdatigojn post %d sekundoj." #: js/ui/endSessionDialog.js:118 js/ui/endSessionDialog.js:139 msgctxt "button" msgid "Restart & Install" msgstr "Restartigi & instali" #: js/ui/endSessionDialog.js:120 msgctxt "button" msgid "Install & Power Off" msgstr "Instali & malŝalti" #: js/ui/endSessionDialog.js:121 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Malŝalti post instalado de ĝisdatigoj" #: js/ui/endSessionDialog.js:128 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "Restarti & instali ĝisdatigon" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:133 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "%s %s instaliĝos post restarto. Instalado de tiu ĝisdatigo povas daŭri " "longe: certigu, ke viaj datumoj sekurkopiiĝis kaj via komputilo konektiĝis." #: js/ui/endSessionDialog.js:289 msgid "Low battery power: please plug in before installing updates." msgstr "Uzante baterielektron: bonvolu konekti antaŭ ol instali ĝisdatigojn." #: js/ui/endSessionDialog.js:298 msgid "Some applications are busy or have unsaved work" msgstr "Iuj aplikaĵoj okupitas aŭ havas nekonservitan laboron" #: js/ui/endSessionDialog.js:303 msgid "Other users are logged in" msgstr "Aliaj uzantoj estas salutitaj" #: js/ui/endSessionDialog.js:473 msgctxt "button" msgid "Boot Options" msgstr "Startigaj opcioj" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:678 #, javascript-format msgid "%s (remote)" msgstr "%s (defora)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:681 #, javascript-format msgid "%s (console)" msgstr "%s (konzolo)" #: js/ui/extensionDownloader.js:260 msgid "Install" msgstr "Instali" #: js/ui/extensionDownloader.js:266 msgid "Install Extension" msgstr "Instali etendaĵon" #: js/ui/extensionDownloader.js:267 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "Ĉu elŝuti kaj instali “%s” de extensions.gnome.org?" #: js/ui/extensionSystem.js:333 msgid "Extension Updates Available" msgstr "Ĝisdatigoj de etendaĵoj disponeblas" #: js/ui/extensionSystem.js:334 msgid "Extension updates are ready to be installed." msgstr "Ĝisdatigoj de etendaĵoj pretas por instalado." #: js/ui/inhibitShortcutsDialog.js:70 msgid "Allow inhibiting shortcuts" msgstr "Permesi malebligadon de klavkombinoj" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:73 #, javascript-format msgid "The app %s wants to inhibit shortcuts" msgstr "La aplikaĵo %s volas malebligi klavkombinojn" #: js/ui/inhibitShortcutsDialog.js:74 msgid "An app wants to inhibit shortcuts" msgstr "Aplikaĵo volas malebligi klavkombinojn" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:81 #, javascript-format msgid "You can restore shortcuts by pressing %s." msgstr "Vi povas restaŭri klavkombinojn per premi %s." #: js/ui/kbdA11yDialog.js:34 msgid "Slow Keys Turned On" msgstr "Malrapidaj klavoj ŝaltitaj" #: js/ui/kbdA11yDialog.js:35 msgid "Slow Keys Turned Off" msgstr "Malrapidaj klavoj malŝaltitaj" #: js/ui/kbdA11yDialog.js:36 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "Vi premis la majuskligan klavon por 8 sekundoj. Ĉi tiu estas la klavkombino " "por la malrapidaj klavoj funkcio, kiu ŝanĝas la konduton de via klavaro." #: js/ui/kbdA11yDialog.js:42 msgid "Sticky Keys Turned On" msgstr "Fiksaj klavoj ŝaltitaj" #: js/ui/kbdA11yDialog.js:43 msgid "Sticky Keys Turned Off" msgstr "Fiksaj klavoj malŝaltitaj" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "Vi premis la majuskligan klavon kvinfoje. Ĉi tiu estas la klavkombino por la " "fiksaj klavoj funkcio, kiu ŝanĝas la konduton de via klavaro." #: js/ui/kbdA11yDialog.js:47 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" "Vi premis du klavojn samtempe, aŭ premis la majuskligan klavon kvinfoje. Ĉi " "tiu malŝaltas la fiksaj klavoj funkcion, kiu ŝanĝas la konduton de via " "klavaro." #: js/ui/kbdA11yDialog.js:57 msgid "Leave On" msgstr "Lasi ŝaltita" #: js/ui/kbdA11yDialog.js:57 msgid "Turn On" msgstr "Ŝalti" #: js/ui/kbdA11yDialog.js:67 js/ui/status/network.js:466 msgid "Turn Off" msgstr "Malŝalti" #: js/ui/kbdA11yDialog.js:67 msgid "Leave Off" msgstr "Lasi malŝaltita" #: js/ui/keyboard.js:225 js/ui/status/keyboard.js:871 msgid "Keyboard Settings" msgstr "Agordoj de klavaro" #: js/ui/lookingGlass.js:725 msgid "No extensions installed" msgstr "Neniu kromprogramo instalita" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:786 #, javascript-format msgid "%s has not emitted any errors." msgstr "%s ne eligintaj ajnaj eraroj." #: js/ui/lookingGlass.js:792 msgid "Hide Errors" msgstr "Kaŝi erarojn" #: js/ui/lookingGlass.js:796 js/ui/lookingGlass.js:873 msgid "Show Errors" msgstr "Montri erarojn" #: js/ui/lookingGlass.js:805 msgid "Enabled" msgstr "Enŝaltita" #. translators: #. * The device has been disabled #: js/ui/lookingGlass.js:808 subprojects/gvc/gvc-mixer-control.c:1908 msgid "Disabled" msgstr "Elŝaltita" #: js/ui/lookingGlass.js:810 msgid "Error" msgstr "Eraro" #: js/ui/lookingGlass.js:812 msgid "Out of date" msgstr "Neaktuala" #: js/ui/lookingGlass.js:814 msgid "Downloading" msgstr "Elŝutante" #: js/ui/lookingGlass.js:816 msgid "Disabling" msgstr "Malŝaltante" #: js/ui/lookingGlass.js:818 msgid "Enabling" msgstr "Ŝaltante" #: js/ui/lookingGlass.js:851 msgid "View Source" msgstr "Montri fonton" #: js/ui/lookingGlass.js:862 msgid "Web Page" msgstr "Retpaĝo" #: js/ui/main.js:268 msgid "System was put in unsafe mode" msgstr "Sistemo estis metita en nesekuran reĝimon" #: js/ui/main.js:269 msgid "Apps now have unrestricted access" msgstr "Aplikaĵoj nun havas senliman aliron" #: js/ui/main.js:270 js/ui/overview.js:63 msgid "Undo" msgstr "Malfari" #: js/ui/main.js:328 msgid "Logged in as a privileged user" msgstr "Saluti kiel privilegiulo" #: js/ui/main.js:329 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" "Oni devus eviti ruli seancon kiel privilegiulo pro sekureco. Se eble, vi " "devus saluti kiel norma uzanto." #: js/ui/main.js:377 msgid "Screen Lock disabled" msgstr "Ekranŝlosado malŝaltita" #: js/ui/main.js:378 msgid "Screen Locking requires the GNOME display manager." msgstr "Ekranŝlosado bezonas la GNOME-ekranadministrilon." #: js/ui/messageTray.js:1423 msgid "System Information" msgstr "Sisteminformoj" #: js/ui/mpris.js:205 msgid "Unknown artist" msgstr "Nekonata artisto" #: js/ui/mpris.js:215 msgid "Unknown title" msgstr "Nekonata titolo" # Imperativo #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:336 msgid "Type to search" msgstr "Tajpu por serĉi" #: js/ui/overviewControls.js:400 msgid "Apps" msgstr "Aplikaĵoj" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:76 msgid "Overview" msgstr "Superrigardo" #: js/ui/padOsd.js:100 msgid "New shortcut…" msgstr "Nova klavkombino…" #: js/ui/padOsd.js:153 msgid "App defined" msgstr "Aplikaĵo difinita" #: js/ui/padOsd.js:154 msgid "Show on-screen help" msgstr "Montri surekranan helpon" #: js/ui/padOsd.js:155 msgid "Switch monitor" msgstr "Ŝanĝi ekranon" #: js/ui/padOsd.js:156 msgid "Assign keystroke" msgstr "Asigni klavpremon" #: js/ui/padOsd.js:225 msgid "Done" msgstr "Plenumita" #: js/ui/padOsd.js:728 msgid "Edit…" msgstr "Redakti…" #: js/ui/padOsd.js:775 msgid "None" msgstr "Neniu" #: js/ui/padOsd.js:846 msgid "Press a button to configure" msgstr "Premu klavon por agordi" #: js/ui/padOsd.js:847 msgid "Press Esc to exit" msgstr "Premu Esk-klavon por ĉesi" #: js/ui/padOsd.js:850 msgid "Press any key to exit" msgstr "Premu iun ajn klavon por ĉesi" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:425 msgid "Activities" msgstr "Agoj" #: js/ui/panel.js:508 msgctxt "System menu in the top bar" msgid "System" msgstr "Sistemo" #: js/ui/panel.js:682 msgid "Top Bar" msgstr "Supra breto" #: js/ui/quickSettings.js:187 msgid "Open menu" msgstr "Malfermi menuon" #: js/ui/runDialog.js:63 msgid "Run a Command" msgstr "Ruli komandon" #: js/ui/runDialog.js:78 msgid "Press ESC to close" msgstr "Premu Esk-klavon por fermi" #: js/ui/runDialog.js:243 msgid "Restart is not available on Wayland" msgstr "Restartigado ne disponeblas sur Wayland" #: js/ui/runDialog.js:248 msgid "Restarting…" msgstr "Restartante…" #: js/ui/screenShield.js:235 msgid "GNOME needs to lock the screen" msgstr "GNOME bezonas ŝlosi la ekranon" #: js/ui/screenShield.js:276 js/ui/screenShield.js:674 msgid "Unable to lock" msgstr "Ne eblas ŝlosi" #: js/ui/screenShield.js:277 js/ui/screenShield.js:675 msgid "Lock was blocked by an app" msgstr "Ŝloso estis blokita de aplikaĵo" #: js/ui/screenshot.js:1192 msgid "Selection" msgstr "Elekto" #: js/ui/screenshot.js:1202 msgid "Area Selection" msgstr "Elekto de areo" #: js/ui/screenshot.js:1207 msgid "Screen" msgstr "Ekrano" #: js/ui/screenshot.js:1217 msgid "Screen Selection" msgstr "Elekto de ekrano" #: js/ui/screenshot.js:1222 msgid "Window" msgstr "Fenestro" #: js/ui/screenshot.js:1232 msgid "Window Selection" msgstr "Elekto de fenestro" #. Translators: entry in the window right click menu. #: js/ui/screenshot.js:1257 js/ui/status/system.js:112 js/ui/windowMenu.js:30 msgid "Take Screenshot" msgstr "Fari ekrankopion" #: js/ui/screenshot.js:1273 msgid "Record Screen" msgstr "Registri ekranon" #. Translators: since this string refers to an action, #. it needs to be phrased as a verb. #: js/ui/screenshot.js:1288 msgid "Capture" msgstr "Registri" #: js/ui/screenshot.js:1310 msgid "Show Pointer" msgstr "Montri musmontrilon" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1906 msgid "Screencasts" msgstr "Ekranregistraĵoj" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast from 07-17-2013 10:00:46 PM.webm" #: js/ui/screenshot.js:1911 #, no-c-format msgid "Screencast from %d %t.webm" msgstr "Ekranregistraĵo de %d %t.webm" #. Translators: notification title. #: js/ui/screenshot.js:1949 msgid "Screencast recorded" msgstr "Faris ekranregistraĵon" #. Translators: notification title. #: js/ui/screenshot.js:1956 msgid "Screencast ended unexpectedly" msgstr "Ekranregistraĵo ĉesis malatendite" #. Translators: notification source name. #: js/ui/screenshot.js:1965 js/ui/screenshot.js:2201 msgid "Screenshot" msgstr "Ekrankopio" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:1972 msgid "Click here to view the video." msgstr "Alklaku ĉi tie por vidi la videaĵon." #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:1975 js/ui/screenshot.js:2215 msgid "Show in Files" msgstr "Montri en Dosieroj" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2161 #, javascript-format msgid "Screenshot from %s" msgstr "Ekrankopio de %s" #. Translators: notification title. #: js/ui/screenshot.js:2207 msgid "Screenshot captured" msgstr "Faris ekrankopion" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2209 msgid "You can paste the image from the clipboard." msgstr "Vi povas alglui la bildon el la tondujo." #: js/ui/screenshot.js:2262 js/ui/screenshot.js:2426 msgid "Screenshot taken" msgstr "Faris ekrankopion" #: js/ui/search.js:818 msgid "Searching…" msgstr "Serĉante…" #: js/ui/search.js:820 msgid "No results." msgstr "Neniu rezulto." #: js/ui/search.js:951 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "%d pli" msgstr[1] "%d pli" #: js/ui/searchController.js:89 msgid "Search" msgstr "Serĉi" #: js/ui/shellEntry.js:23 msgid "Copy" msgstr "Kopii" #: js/ui/shellEntry.js:28 msgid "Paste" msgstr "Alglui" #: js/ui/shellEntry.js:80 msgid "Show Text" msgstr "Montri tekston" #: js/ui/shellEntry.js:82 msgid "Hide Text" msgstr "Kaŝi tekston" #: js/ui/shellEntry.js:174 msgid "Caps lock is on." msgstr "Majuskla baskulo estas ŝaltita." #: js/ui/shellMountOperation.js:291 msgid "Hidden Volume" msgstr "Kaŝita datumportilo" #: js/ui/shellMountOperation.js:294 msgid "Windows System Volume" msgstr "Datumportilo sistema de Vindozo" #: js/ui/shellMountOperation.js:297 msgid "Uses Keyfiles" msgstr "Uzas ŝlosildosierojn" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:305 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead." msgstr "" "Por malŝlosi datumportilon kiu uzas ŝlosildosierojn, anstataŭe uzu la %s programon." #: js/ui/shellMountOperation.js:309 msgid "" "You need an external utility like Disks to unlock a volume that uses " "keyfiles." msgstr "" "Vi bezonas eksteran ilon kiel Diskoj por malŝlosi volumon kiu uzas " "ŝlosildosierojn." #: js/ui/shellMountOperation.js:317 msgid "PIM Number" msgstr "PIM-numero" #: js/ui/shellMountOperation.js:376 msgid "Remember Password" msgstr "Memorigi pasvorton" #: js/ui/shellMountOperation.js:391 msgid "Unlock" msgstr "Malŝlosi" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:405 #, javascript-format msgid "Open %s" msgstr "Malfermi aplikaĵon %s" #: js/ui/shellMountOperation.js:441 msgid "The PIM must be a number or empty." msgstr "La PIM devas esti aŭ numero aŭ malplena." #: js/ui/status/accessibility.js:36 msgid "Accessibility" msgstr "Atingeblo" #: js/ui/status/accessibility.js:46 msgid "High Contrast" msgstr "Alta kontrasto" #: js/ui/status/accessibility.js:49 msgid "Zoom" msgstr "Zomi" #: js/ui/status/accessibility.js:56 msgid "Screen Reader" msgstr "Ekrana legilo" #: js/ui/status/accessibility.js:60 msgid "Screen Keyboard" msgstr "Ekrana klavaro" #: js/ui/status/accessibility.js:64 msgid "Visual Alerts" msgstr "Vidaj avertoj" #: js/ui/status/accessibility.js:68 msgid "Sticky Keys" msgstr "Fiksaj klavoj" #: js/ui/status/accessibility.js:72 msgid "Slow Keys" msgstr "Malrapidaj klavoj" #: js/ui/status/accessibility.js:76 msgid "Bounce Keys" msgstr "Saltaj klavoj" #: js/ui/status/accessibility.js:80 msgid "Mouse Keys" msgstr "Musklavoj" #: js/ui/status/accessibility.js:85 msgid "Accessibility Settings" msgstr "Alireblecaj agordoj" #: js/ui/status/accessibility.js:142 msgid "Large Text" msgstr "Granda teksto" #: js/ui/status/autoRotate.js:14 msgid "Auto Rotate" msgstr "Turni aŭtomate" #: js/ui/status/backgroundApps.js:166 msgctxt "title" msgid "Background Apps" msgstr "Fonaj aplikaĵoj" #: js/ui/status/backgroundApps.js:181 msgid "Apps known to be running without a window" msgstr "Aplikaĵoj konataj funkcii sen fenestro" #: js/ui/status/backgroundApps.js:192 msgid "App Settings" msgstr "Aplikaĵaj agordoj" #: js/ui/status/backgroundApps.js:249 msgid "No Background Apps" msgstr "Neniu fona aplikaĵo" #: js/ui/status/backgroundApps.js:251 #, javascript-format msgid "%d Background App" msgid_plural "%d Background Apps" msgstr[0] "%d fona aplikaĵo" msgstr[1] "%d fonaj aplikaĵoj" #: js/ui/status/backlight.js:40 msgid "Keyboard Brightness" msgstr "Heleco de klavaro" #: js/ui/status/backlight.js:80 msgid "Off" msgstr "Malŝaltita" #: js/ui/status/backlight.js:81 msgid "Low" msgstr "Malalta" #: js/ui/status/backlight.js:82 msgid "High" msgstr "Alta" #: js/ui/status/backlight.js:148 js/ui/status/keyboard.js:853 msgid "Keyboard" msgstr "Klavaro" #: js/ui/status/bluetooth.js:246 js/ui/status/network.js:371 msgid "Disconnect" msgstr "Malkonekti" #: js/ui/status/bluetooth.js:263 js/ui/status/bluetooth.js:265 msgid "Bluetooth" msgstr "Bludento" #: js/ui/status/bluetooth.js:288 js/ui/status/network.js:1907 msgid "Bluetooth Settings" msgstr "Bludento-agordoj" #: js/ui/status/bluetooth.js:335 msgid "No available or connected devices" msgstr "Neniu disponebla aŭ konektita aparato" #: js/ui/status/bluetooth.js:336 msgid "Turn on Bluetooth to connect to devices" msgstr "Ŝalti Bludenton por konekti al aparatoj" #. Translators: This is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:390 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d Konektita" msgstr[1] "%d Konektitaj" #: js/ui/status/brightness.js:34 msgid "Brightness" msgstr "Brileco" #: js/ui/status/darkMode.js:12 msgid "Dark Style" msgstr "Malhela stilo" #: js/ui/status/dwellClick.js:15 msgid "Single Click" msgstr "Unuklako" #: js/ui/status/dwellClick.js:20 msgid "Double Click" msgstr "Duklako" #: js/ui/status/dwellClick.js:25 msgid "Drag" msgstr "Tiro" #: js/ui/status/dwellClick.js:30 msgid "Secondary Click" msgstr "Duaranga klako" #: js/ui/status/dwellClick.js:39 msgid "Dwell Click" msgstr "Daŭra klako" #: js/ui/status/keyboard.js:870 msgid "Show Keyboard Layout" msgstr "Montri klavararanĝon" #: js/ui/status/location.js:339 msgid "Allow location access" msgstr "Permesi atingon al via loko" #. Translators: %s is an application name #: js/ui/status/location.js:341 #, javascript-format msgid "The app %s wants to access your location" msgstr "La aplikaĵo %s volas atingon al via loko" #: js/ui/status/location.js:351 msgid "Location access can be changed at any time from the privacy settings." msgstr "Vi povas ŝangi atingon al via loko iam ajn en la privateco-agordoj." #: js/ui/status/location.js:359 msgid "Deny Access" msgstr "Rifuzi aliron" #: js/ui/status/location.js:364 msgid "Grant Access" msgstr "Konsenti aliron" #: js/ui/status/network.js:61 msgid "" msgstr "" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:365 #, javascript-format msgid "Disconnect %s" msgstr "Malkonekti %s" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:367 #, javascript-format msgid "Connect to %s" msgstr "Konekti al %s" #: js/ui/status/network.js:1061 msgid "Secure" msgstr "Sekura" #: js/ui/status/network.js:1061 msgid "Not secure" msgstr "Ne sekura" #: js/ui/status/network.js:1062 #, javascript-format msgid "Signal strength %s%%" msgstr "Forteco de signalo %s%%" #. translators: The first placeholder is the network name, the second and indication whether it is secure, and the last the signal strength indication #: js/ui/status/network.js:1064 #, javascript-format msgid "%s, %s, %s" msgstr "%s, %s, %s" #. Translators: %s is a network identifier #: js/ui/status/network.js:1166 #, javascript-format msgid "%s Hotspot" msgstr "%s retkaptejo" #: js/ui/status/network.js:1437 #, javascript-format msgid "%d connected" msgid_plural "%d connected" msgstr[0] "%d konektita" msgstr[1] "%d konektitaj" #: js/ui/status/network.js:1535 js/ui/status/network.js:1551 msgid "VPN" msgstr "VPR" #: js/ui/status/network.js:1536 msgid "VPN Settings" msgstr "VPR-agordoj" #: js/ui/status/network.js:1792 msgid "Wi–Fi" msgstr "Vifio" #: js/ui/status/network.js:1794 msgid "All Networks" msgstr "Ĉiuj retoj" #: js/ui/status/network.js:1891 msgid "Wired Connections" msgstr "Drataj konektoj" #: js/ui/status/network.js:1892 msgid "Wired Settings" msgstr "Drataj agordoj" #: js/ui/status/network.js:1906 msgid "Bluetooth Tethers" msgstr "Konektoj kunhavigitaj per Bludento" #. Translators: "Tether" from "Bluetooth Tether" #: js/ui/status/network.js:1913 msgid "Tether" msgstr "Kunhavigi konekton" #: js/ui/status/network.js:1926 msgid "Mobile Connections" msgstr "Porteblaj konektoj" #: js/ui/status/network.js:1928 msgid "Mobile Broadband Settings" msgstr "Porteblaj larĝkapacitaj agordoj" #. Translators: "Mobile" from "Mobile Broadband" #: js/ui/status/network.js:1937 msgid "Mobile" msgstr "Portebla" #: js/ui/status/network.js:2045 msgid "Connection failed" msgstr "Konekto malsukcesis" #: js/ui/status/network.js:2046 msgid "Activation of network connection failed" msgstr "Aktivigo de reto-konekto malsukcesis" #: js/ui/status/nightLight.js:21 msgid "Night Light" msgstr "Noktlumo" #: js/ui/status/powerProfiles.js:21 msgctxt "Power profile" msgid "Performance" msgstr "Rendimenta" #: js/ui/status/powerProfiles.js:26 msgctxt "Power profile" msgid "Balanced" msgstr "Ekvilibra" #: js/ui/status/powerProfiles.js:31 msgctxt "Power profile" msgid "Power Saver" msgstr "Energiŝpara" #: js/ui/status/powerProfiles.js:41 js/ui/status/powerProfiles.js:71 msgid "Power Mode" msgstr "Energia reĝimo" #: js/ui/status/powerProfiles.js:73 msgid "Power Settings" msgstr "Elektro-agordoj" #: js/ui/status/remoteAccess.js:76 msgid "Stop Screencast" msgstr "Ĉesigi ekranregistraĵon" #: js/ui/status/remoteAccess.js:146 msgid "Stop Screen Sharing" msgstr "Ĉesigi ekrankunhavigon" #: js/ui/status/rfkill.js:101 msgid "Airplane Mode" msgstr "Aviadila reĝimo" #: js/ui/status/system.js:97 #, javascript-format msgid "%d %%" msgstr "%d %%" #: js/ui/status/system.js:169 msgid "Power Off Menu" msgstr "Malŝalta menuo" #: js/ui/status/system.js:177 msgid "Suspend" msgstr "Halteti" #: js/ui/status/system.js:182 msgid "Restart…" msgstr "Restartigi…" #: js/ui/status/system.js:187 msgid "Power Off…" msgstr "Malŝalti…" #: js/ui/status/system.js:194 #: subprojects/extensions-app/data/ui/extensions-window.ui:189 msgid "Log Out…" msgstr "Adiaŭi…" #: js/ui/status/system.js:199 msgid "Switch User…" msgstr "Ŝanĝi uzanton…" #: js/ui/status/system.js:243 msgctxt "action" msgid "Lock Screen" msgstr "Ŝlosa ekrano" #: js/ui/status/thunderbolt.js:259 msgid "Thunderbolt" msgstr "Thunderbolt" #: js/ui/status/thunderbolt.js:320 msgid "Unknown Thunderbolt device" msgstr "Nekonata Thunderbolt aparato" #: js/ui/status/thunderbolt.js:321 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" "Nova aparato detektiĝis kiam vi estis for. Bonvolu malkonekti kaj rekonekti " "vian aparaton por uzi ĝin." #: js/ui/status/thunderbolt.js:324 msgid "Unauthorized Thunderbolt device" msgstr "Ne-aŭtentigita Thunderbolt aparato" #: js/ui/status/thunderbolt.js:325 msgid "" "New device has been detected and needs to be authorized by an administrator." msgstr "Detektis novan aparaton kiu bezonas aŭtentigon de administranto." #: js/ui/status/thunderbolt.js:331 msgid "Thunderbolt authorization error" msgstr "Thunderbolt aŭtentiga eraro" #: js/ui/status/thunderbolt.js:332 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "Ne povis aŭtentigi la Thunderbolt aparaton: %s" #: js/ui/status/volume.js:214 msgid "Volume changed" msgstr "Laŭteco ŝanĝita" #: js/ui/status/volume.js:227 msgid "Unmute" msgstr "Malsilentigi" #: js/ui/status/volume.js:227 msgid "Mute" msgstr "Silentigi" #: js/ui/status/volume.js:282 msgid "Volume" msgstr "Laŭteco" #: js/ui/status/volume.js:298 msgid "Sound Output" msgstr "Sona eligo" #: js/ui/status/volume.js:370 msgid "Sound Input" msgstr "Sona enigo" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:22 msgid "Mirror" msgstr "Speguli" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:31 msgid "Join Displays" msgstr "Kunigi ekranojn" #. Translators: this is for using only an external display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:41 msgid "External Only" msgstr "Nur ekstera" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:49 msgid "Built-in Only" msgstr "Nur integrita" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:368 msgid "%A %B %-d" msgstr "%A, %-d-a de %B" #: js/ui/unlockDialog.js:374 msgid "Swipe up to unlock" msgstr "Movi supren por malŝlosi" #: js/ui/unlockDialog.js:375 msgid "Click or press a key to unlock" msgstr "Klaku aŭ premi klavon por malŝlosi" #: js/ui/unlockDialog.js:558 msgid "Unlock Window" msgstr "Malŝlosi fenestron" #: js/ui/unlockDialog.js:567 msgid "Log in as another user" msgstr "Saluti kiel alia uzanto" #: js/ui/welcomeDialog.js:39 #, javascript-format msgid "Welcome to GNOME %s" msgstr "Bonvenon al GNOME %s" #: js/ui/welcomeDialog.js:40 msgid "If you want to learn your way around, check out the tour." msgstr "Se vi volas kutimiĝi, prenu la rondvojaĝon." #: js/ui/welcomeDialog.js:49 msgid "No Thanks" msgstr "Ne, dankon" #: js/ui/welcomeDialog.js:54 msgid "Take Tour" msgstr "Prenu la rondvojaĝon" #: js/ui/windowAttentionHandler.js:20 #, javascript-format msgid "“%s” is ready" msgstr "“%s” pretas" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:69 msgid "Keep these display settings?" msgstr "Ĉu konservi ĉi tiujn ekranajn agordojn?" #: js/ui/windowManager.js:79 msgid "Revert Settings" msgstr "Malfari ŝanĝojn" #: js/ui/windowManager.js:84 msgid "Keep Changes" msgstr "Konservi ŝanĝojn" #: js/ui/windowManager.js:104 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "Agordaj ŝanĝoj malfaritos post %d sekundo" msgstr[1] "Agordaj ŝanĝoj malfaritos post %d sekundoj" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:496 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:42 msgid "Hide" msgstr "Kaŝi" #: js/ui/windowMenu.js:49 msgid "Restore" msgstr "Restaŭri" #: js/ui/windowMenu.js:53 msgid "Maximize" msgstr "Maksimumigi" #: js/ui/windowMenu.js:60 msgid "Move" msgstr "Movi" #: js/ui/windowMenu.js:79 msgid "Resize" msgstr "Regrandigi" #: js/ui/windowMenu.js:99 msgid "Move Titlebar Onscreen" msgstr "Movi titolbreton surekranen" #: js/ui/windowMenu.js:104 msgid "Always on Top" msgstr "Ĉiam supre" #: js/ui/windowMenu.js:123 msgid "Always on Visible Workspace" msgstr "Ĉiam je videbla laborspaco" #: js/ui/windowMenu.js:137 msgid "Move to Workspace Left" msgstr "Movi al maldekstra laborspaco" #: js/ui/windowMenu.js:143 msgid "Move to Workspace Right" msgstr "Movi al dekstra laborspaco" #: js/ui/windowMenu.js:149 msgid "Move to Workspace Up" msgstr "Movi al supra laborspaco" #: js/ui/windowMenu.js:155 msgid "Move to Workspace Down" msgstr "Movi al suba laborspaco" #: js/ui/windowMenu.js:173 msgid "Move to Monitor Up" msgstr "Movi al supra ekrano" #: js/ui/windowMenu.js:182 msgid "Move to Monitor Down" msgstr "Movi al suba ekrano" #: js/ui/windowMenu.js:191 msgid "Move to Monitor Left" msgstr "Movi al maldekstra ekrano" #: js/ui/windowMenu.js:200 msgid "Move to Monitor Right" msgstr "Movi al dekstra ekrano" #: js/ui/windowMenu.js:208 msgid "Close" msgstr "Fermi" #: src/main.c:529 subprojects/extensions-tool/src/main.c:325 msgid "Print version" msgstr "Presi version" #: src/main.c:535 msgid "Mode used by GDM for login screen" msgstr "Reĝimo uzata de GDM por la salut-ekrano" #: src/main.c:541 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "Uzi specifan reĝimon, ekz. “gdm” por la salut-ekrano" #: src/main.c:547 msgid "List possible modes" msgstr "Listigi eblajn reĝimojn" #: src/main.c:553 #, fuzzy msgid "Force animations to be enabled" msgstr "Devigi animaciojn esti ebligita" #: src/shell-app.c:305 msgctxt "program" msgid "Unknown" msgstr "Nekonata" #: src/shell-app.c:556 #, c-format msgid "Failed to launch “%s”" msgstr "Malsukcesis lanĉi “%s”" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match." msgstr "Pasvortoj ne kongruas." #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "Pasvorto ne povas esti malplena" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "La uzanto malakceptis la aŭtentigan dialogon" #: src/st/st-icon-theme.c:1865 #, c-format msgid "Icon '%s' not present in theme %s" msgstr "Bildsimbolo '%s' ne estas en etoso %s" #: src/st/st-icon-theme.c:3454 src/st/st-icon-theme.c:3757 msgid "Failed to load icon" msgstr "Malsukcesis ŝargi bildsimbolon" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 msgid "Manage your GNOME Extensions" msgstr "Agordi viajn GNOME etendaĵojn" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:17 #: subprojects/extensions-app/js/main.js:222 msgid "The GNOME Project" msgstr "La GNOME-projekto" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:36 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" "GNOME-etendaĵoj administras ĝisdatigon de etendaĵoj, adoptadon de etendaĵaj " "agordoj kaj forigo aŭ malŝaltigo de nebezonataj etendaĵoj." #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "Agordi GNOME-ŝelajn kromprogramojn" #: subprojects/extensions-app/js/main.js:136 #: subprojects/extensions-app/js/main.js:147 msgid "No Matches" msgstr "Neniu kongruo" #: subprojects/extensions-app/js/main.js:175 #, javascript-format msgid "Remove “%s”?" msgstr "Ĉu forigi “%s“?" #: subprojects/extensions-app/js/main.js:176 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "" "Se vi forigas la etendaĵon, nepras ke vi reelŝutu ĝin se vi ŝatus reŝalti ĝin" #: subprojects/extensions-app/js/main.js:180 msgid "Remove" msgstr "Forigi" #: subprojects/extensions-app/js/main.js:217 msgid "translator-credits" msgstr "" "Carmen Bianca BAKKER \n" "Kristjan SCHMIDT" #: subprojects/extensions-app/js/main.js:345 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "%d etendaĵo ĝisdatiĝos je via sekva saluto." msgstr[1] "%d etendaĵoj ĝisdatiĝos je via sekva saluto." #: subprojects/extensions-app/js/main.js:487 msgid "The extension is incompatible with the current GNOME version" msgstr "La etandaĵo ne kongruas je la aktuala GNOME-versio" #: subprojects/extensions-app/js/main.js:490 #: subprojects/extensions-app/data/ui/extension-row.ui:52 msgid "The extension had an error" msgstr "La etendaĵo eraris" #: subprojects/extensions-app/data/ui/extension-row.ui:62 msgid "The extension can be updated" msgstr "La etendaĵo povas esti ĝisdatigita" #: subprojects/extensions-app/data/ui/extension-row.ui:112 msgid "Website" msgstr "Retejo" #: subprojects/extensions-app/data/ui/extension-row.ui:134 msgid "Remove…" msgstr "Forigi…" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Help" msgstr "Helpo" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "Pri etendaĵoj" #: subprojects/extensions-app/data/ui/extensions-window.ui:83 msgid "" "Extensions can cause performance and stability issues. Disable extensions if " "you encounter problems with your system." msgstr "" "Etendaĵoj povas kaŭzi problemojn pri rendimento kaj stabileco. Malebligu " "etendaĵojn se vi havas problemojn kun via sistemo." #: subprojects/extensions-app/data/ui/extensions-window.ui:97 msgid "Manually Installed" msgstr "Instalita permane" #: subprojects/extensions-app/data/ui/extensions-window.ui:98 #: subprojects/extensions-app/data/ui/extensions-window.ui:133 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" "Por trovi kaj aldoni etendaĵojn, vizitu extensions.gnome.org." #: subprojects/extensions-app/data/ui/extensions-window.ui:111 msgid "Built-In" msgstr "Integrita" #: subprojects/extensions-app/data/ui/extensions-window.ui:132 msgid "No Installed Extensions" msgstr "Neniu instalita etendaĵo" #: subprojects/extensions-app/data/ui/extensions-window.ui:144 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" "Ni pardonpetas. Ŝajnas ke ne eblas akiri liston de instalitaj etendaĵoj. " "Certigu ke vi salutis al GNOME kaj reprovu." #: subprojects/extensions-app/data/ui/extensions-window.ui:174 msgid "Extension Updates Ready" msgstr "Ĝisdatigoj de etendaĵoj disponeblas" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:284 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "La nova etandaĵo estis sukcese kreita en %s.\n" #: subprojects/extensions-tool/src/command-create.c:376 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" "Nomo devus esti tre mallonga ĉeno.\n" "Ekzemple: %s" #: subprojects/extensions-tool/src/command-create.c:382 #: subprojects/extensions-tool/src/main.c:242 msgid "Name" msgstr "Nomo" #: subprojects/extensions-tool/src/command-create.c:396 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" "Priskribo estas unuopa frazo kiu klarigas la utilon de via etendaĵo.\n" "Ekzemple: %s" #: subprojects/extensions-tool/src/command-create.c:402 #: subprojects/extensions-tool/src/main.c:245 msgid "Description" msgstr "Priskribo" #: subprojects/extensions-tool/src/command-create.c:416 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" "UUID estas malloke unika identigilo por via etendaĵo.\n" "Tiu devus esti retpoŝtadreso (clicktofocus@janedoe.example.com)\n" #: subprojects/extensions-tool/src/command-create.c:443 msgid "Choose one of the available templates:\n" msgstr "Elektu unu de la disponeblaj ŝablonoj:\n" #: subprojects/extensions-tool/src/command-create.c:457 msgid "Template" msgstr "Ŝablono" #: subprojects/extensions-tool/src/command-create.c:515 msgid "The unique identifier of the new extension" msgstr "La unika identigilo de la nova etendaĵo" #: subprojects/extensions-tool/src/command-create.c:518 msgid "NAME" msgstr "NOMO" #: subprojects/extensions-tool/src/command-create.c:519 msgid "The user-visible name of the new extension" msgstr "La videbla nomo de la nova etendaĵo" #: subprojects/extensions-tool/src/command-create.c:521 msgid "DESCRIPTION" msgstr "PRISKRIBO" #: subprojects/extensions-tool/src/command-create.c:523 msgid "A short description of what the extension does" msgstr "Mallonga priskribo de la utilo de la etendaĵo" #: subprojects/extensions-tool/src/command-create.c:525 #: subprojects/extensions-tool/src/command-pack.c:467 msgid "DOMAIN" msgstr "DOMAJNO" #: subprojects/extensions-tool/src/command-create.c:527 msgid "The gettext domain used by the extension" msgstr "La gettext-domajno uzata de la etendaĵo" #: subprojects/extensions-tool/src/command-create.c:529 #: subprojects/extensions-tool/src/command-pack.c:460 msgid "SCHEMA" msgstr "SKEMO" #: subprojects/extensions-tool/src/command-create.c:531 msgid "The GSettings schema used by the extension" msgstr "La GSettings-skemo uzata de la etendaĵo" #: subprojects/extensions-tool/src/command-create.c:534 msgid "TEMPLATE" msgstr "ŜABLONO" #: subprojects/extensions-tool/src/command-create.c:535 msgid "The template to use for the new extension" msgstr "La uzota ŝablono por la nova etendaĵo" #: subprojects/extensions-tool/src/command-create.c:538 msgid "Include prefs.js template" msgstr "Inkluzivi ŝablonon prefs.js" #: subprojects/extensions-tool/src/command-create.c:544 msgid "Enter extension information interactively" msgstr "Enigu etendaĵajn informojn interage" #: subprojects/extensions-tool/src/command-create.c:552 msgid "Create a new extension" msgstr "Krei novan etendaĵon" #: subprojects/extensions-tool/src/command-create.c:570 #: subprojects/extensions-tool/src/command-list.c:172 msgid "Unknown arguments" msgstr "Nekonataj argumentoj" #: subprojects/extensions-tool/src/command-create.c:595 msgid "UUID, name and description are required" msgstr "UUID, nomo, kaj priskribo necesas" #: subprojects/extensions-tool/src/command-disable.c:62 #: subprojects/extensions-tool/src/command-enable.c:62 #, c-format msgid "Extension “%s” does not exist\n" msgstr "La etendaĵo “%s” ne ekzistas\n" #: subprojects/extensions-tool/src/command-disable.c:98 msgid "Disable an extension" msgstr "Malŝalti etendaĵon" #: subprojects/extensions-tool/src/command-disable.c:116 #: subprojects/extensions-tool/src/command-enable.c:116 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "Ricevis neniun UUID" #: subprojects/extensions-tool/src/command-disable.c:121 #: subprojects/extensions-tool/src/command-enable.c:121 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "Ricevis pli ol unu UUID" #: subprojects/extensions-tool/src/command-enable.c:98 msgid "Enable an extension" msgstr "Ŝalti etendaĵon" #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:64 #: subprojects/extensions-tool/src/main.c:150 msgid "Failed to connect to GNOME Shell\n" msgstr "Malsukcesis konekti kun GNOME-ŝelo\n" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:159 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "La etendaĵo “%s” ne ekzistas\n" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "Montri informojn de etendaĵoj" #: subprojects/extensions-tool/src/command-install.c:190 msgid "Overwrite an existing extension" msgstr "Superskribi ekzistantan etendaĵon" #: subprojects/extensions-tool/src/command-install.c:192 msgid "EXTENSION_BUNDLE" msgstr "ETENDAĴA_PAKAĴO" #: subprojects/extensions-tool/src/command-install.c:201 msgid "Install an extension bundle" msgstr "Instali entendaĵan pakaĵon" #: subprojects/extensions-tool/src/command-install.c:219 msgid "No extension bundle specified" msgstr "Neniu etendaĵa pakaĵo estas specifita" #: subprojects/extensions-tool/src/command-install.c:225 msgid "More than one extension bundle specified" msgstr "Pli ol unu etendaĵa pakaĵo estas specifita" #: subprojects/extensions-tool/src/command-list.c:128 msgid "Show user-installed extensions" msgstr "Montri etendaĵojn de la uzanto" #: subprojects/extensions-tool/src/command-list.c:131 msgid "Show system-installed extensions" msgstr "Montri etendaĵojn de la sistemo" #: subprojects/extensions-tool/src/command-list.c:134 msgid "Show enabled extensions" msgstr "Montri ŝaltitajn etendaĵojn" #: subprojects/extensions-tool/src/command-list.c:137 msgid "Show disabled extensions" msgstr "Montri malŝaltitajn etendaĵojn" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show extensions with preferences" msgstr "Montri etendaĵojn kun agordoj" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show extensions with updates" msgstr "Montri etendaĵojn kun ĝisdatigoj" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Print extension details" msgstr "Presi detalojn de etendaĵo" #: subprojects/extensions-tool/src/command-list.c:154 msgid "List installed extensions" msgstr "Listigi instalitajn etendaĵojn" #: subprojects/extensions-tool/src/command-pack.c:456 msgid "FILE" msgstr "DOSIERO" #: subprojects/extensions-tool/src/command-pack.c:457 msgid "Additional source to include in the bundle" msgstr "Aldona fonto por aldoni al la pakaĵo" #: subprojects/extensions-tool/src/command-pack.c:461 msgid "A GSettings schema that should be included" msgstr "GSettings-skemo kiun oni devus inkluzivi" #: subprojects/extensions-tool/src/command-pack.c:463 #: subprojects/extensions-tool/src/command-pack.c:474 msgid "DIRECTORY" msgstr "DOSIERUJO" #: subprojects/extensions-tool/src/command-pack.c:465 msgid "The directory where translations are found" msgstr "La dosierujo kiu enhavas tradukojn" #: subprojects/extensions-tool/src/command-pack.c:469 msgid "The gettext domain to use for translations" msgstr "La uzenda gettext-domajno" #: subprojects/extensions-tool/src/command-pack.c:472 msgid "Overwrite an existing pack" msgstr "Superskribi ekzistantan pakaĵon" #: subprojects/extensions-tool/src/command-pack.c:476 msgid "The directory where the pack should be created" msgstr "La dosierujo kie la pakajoj estu kreita" #: subprojects/extensions-tool/src/command-pack.c:478 msgid "SOURCE_DIRECTORY" msgstr "FONT_DOSIERUJO" #: subprojects/extensions-tool/src/command-pack.c:487 msgid "Create an extension bundle" msgstr "Krei entendaĵan pakaĵon" #: subprojects/extensions-tool/src/command-pack.c:507 msgid "More than one source directory specified" msgstr "Pli ol unu fontdosierujo specifita" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "La etendaĵo “%s” ne havas agordojn\n" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "Malsukcesis malfermi agordojn por etendaĵo “%s”: %s\n" #: subprojects/extensions-tool/src/command-prefs.c:87 msgid "Opens extension preferences" msgstr "Malfermi agordojn de la etendaĵo" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "Reagordi etendaĵon" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "Ne eblas malinstali sistemajn etendaĵojn\n" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "Malsukcesis malinstali na “%s”\n" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "Malinstali etendaĵon" #: subprojects/extensions-tool/src/main.c:76 msgid "Do not print error messages" msgstr "Ne eldoni erar-mesaĝojn" #: subprojects/extensions-tool/src/main.c:248 msgid "Path" msgstr "Vojo" #: subprojects/extensions-tool/src/main.c:251 msgid "URL" msgstr "URL" #: subprojects/extensions-tool/src/main.c:254 msgid "Original author" msgstr "Origina aŭtoro" #: subprojects/extensions-tool/src/main.c:257 msgid "Version" msgstr "Versio" #: subprojects/extensions-tool/src/main.c:260 msgid "State" msgstr "Stato" #: subprojects/extensions-tool/src/main.c:298 msgid "“version” takes no arguments" msgstr "“version” anticipas neniun argumenton" #: subprojects/extensions-tool/src/main.c:300 #: subprojects/extensions-tool/src/main.c:320 msgid "Usage:" msgstr "Uzo:" #: subprojects/extensions-tool/src/main.c:303 msgid "Print version information and exit." msgstr "Presi versian informon kaj ĉesi." #: subprojects/extensions-tool/src/main.c:318 #: subprojects/extensions-tool/src/main.c:321 msgid "COMMAND" msgstr "KOMANDO" #: subprojects/extensions-tool/src/main.c:321 msgid "[ARGS…]" msgstr "[ARG-oj…]" #: subprojects/extensions-tool/src/main.c:323 msgid "Commands:" msgstr "Komandoj:" #: subprojects/extensions-tool/src/main.c:324 msgid "Print help" msgstr "Presi helpon" #: subprojects/extensions-tool/src/main.c:326 msgid "Enable extension" msgstr "Ŝalti etendaĵon" #: subprojects/extensions-tool/src/main.c:327 msgid "Disable extension" msgstr "Malŝalti etendaĵon" #: subprojects/extensions-tool/src/main.c:328 msgid "Reset extension" msgstr "Reagordi etendaĵon" #: subprojects/extensions-tool/src/main.c:329 msgid "Uninstall extension" msgstr "Malinstali etendaĵon" #: subprojects/extensions-tool/src/main.c:330 msgid "List extensions" msgstr "Listigi etendaĵojn" #: subprojects/extensions-tool/src/main.c:331 #: subprojects/extensions-tool/src/main.c:332 msgid "Show extension info" msgstr "Montri informojn de etendaĵo" #: subprojects/extensions-tool/src/main.c:333 msgid "Open extension preferences" msgstr "Malfermi agordojn de etendaĵo" #: subprojects/extensions-tool/src/main.c:334 msgid "Create extension" msgstr "Krei etendaĵo" #: subprojects/extensions-tool/src/main.c:335 msgid "Package extension" msgstr "Pakaĵa etendaĵo" #: subprojects/extensions-tool/src/main.c:336 msgid "Install extension bundle" msgstr "Instali entendaĵan pakaĵon" #: subprojects/extensions-tool/src/main.c:338 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "Uzu “%s” por detala helpo.\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "Simpla" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "Malplena etendaĵo" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "Indikilo" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "Aldoni piktogramon al la supra breto" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:4 #, fuzzy msgid "Quick Settings Item" msgstr "Ero de rapidaj agordoj" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:5 #, fuzzy msgid "Add an item to quick settings" msgstr "Aldoni eron al rapidaj agordoj" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1915 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u eligo" msgstr[1] "%u eligoj" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1925 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u enigo" msgstr[1] "%u enigoj" #: subprojects/gvc/gvc-mixer-control.c:2876 msgid "System Sounds" msgstr "Sistemsonoj" #~ msgid "Enable introspection API" #~ msgstr "Ŝalti introspektan API-on" #~ msgid "Attach modal dialog to the parent window" #~ msgstr "Kunligi modalan dialogon al la patra fenestro" #~ msgid "" #~ "This key overrides the key in org.gnome.mutter when running GNOME Shell." #~ msgstr "" #~ "Ĉi ŝlosilo transpasas la ŝlosilon en org.gnome.mutter kiam uzanta GNOME-" #~ "ŝelon." #~ msgid "Enable edge tiling when dropping windows on screen edges" #~ msgstr "" #~ "Aktivigi kahelan aranĝon kiam demetante fenestrojn sur ekranaj borderoj" #~ msgid "Workspaces are managed dynamically" #~ msgstr "Laborspacoj administratas dinamike" #~ msgid "Workspaces only on primary monitor" #~ msgstr "Laborspacoj nur sur la ĉefa ekrano" #~ msgid "Delay focus changes in mouse mode until the pointer stops moving" #~ msgstr "En musa reĝimo, prokrasti ŝanĝi fokuson ĝis la musmontrilo haltas" #~ msgid "Remove from Favorites" #~ msgstr "Forigi el preferataj" #~ msgid "Add to Favorites" #~ msgstr "Aldoni al preferataj" #~ msgid "Region & Language Settings" #~ msgstr "Regiono & lingvo agordoj" #~ msgid "Applications" #~ msgstr "Aplikaĵoj" #, javascript-format #~ msgid "Unable to start %s" #~ msgstr "Ne povas ruli aplikaĵon %s" #, javascript-format #~ msgid "Couldn’t find the %s application" #~ msgstr "Ne povis trovi aplikaĵon %s" #~ msgid "Bluetooth Off" #~ msgstr "Bludento malŝaltita" #~ msgid "Bluetooth On" #~ msgstr "Bludento ŝaltita" #~ msgid "Location In Use" #~ msgstr "Loko uzata" #~ msgid "Location Disabled" #~ msgstr "Loko malŝaltita" #, javascript-format #~ msgid "%s Off" #~ msgstr "%s malŝaltita" #, javascript-format #~ msgid "%s Connected" #~ msgstr "%s konektita" #, javascript-format #~ msgid "%s Unmanaged" #~ msgstr "%s nemastrumita" #, javascript-format #~ msgid "%s Connecting" #~ msgstr "%s konektante" #, javascript-format #~ msgid "%s Requires Authentication" #~ msgstr "%s postulas aŭtentigon" #, javascript-format #~ msgid "Firmware Missing For %s" #~ msgstr "Mikroprogramo mankas por %s" #, javascript-format #~ msgid "%s Unavailable" #~ msgstr "%s nedisponebla" #, javascript-format #~ msgid "%s Connection Failed" #~ msgstr "%s konekto malsukcesis" #, javascript-format #~ msgid "%s Hardware Disabled" #~ msgstr "%s aparataro malŝaltita" #, javascript-format #~ msgid "%s Disabled" #~ msgstr "%s malŝaltita" #~ msgid "Connect to Internet" #~ msgstr "Konekti al interreto" #~ msgid "Airplane Mode is On" #~ msgstr "Aviadila reĝimo ŝaltita" #~ msgid "Wi-Fi is disabled when airplane mode is on." #~ msgstr "Vifio malebliĝas se aviadila reĝimo estas ŝaltita." #~ msgid "Turn Off Airplane Mode" #~ msgstr "Malŝalti aviadilan reĝimon" #~ msgid "Wi-Fi is Off" #~ msgstr "Vifio malŝaltita" #~ msgid "Wi-Fi needs to be turned on in order to connect to a network." #~ msgstr "Necesas ŝalti vifion por konekti al reto." #~ msgid "Turn On Wi-Fi" #~ msgstr "Ŝalti vifion" #~ msgid "Wi-Fi Networks" #~ msgstr "Vifiaj retoj" #~ msgid "Select a network" #~ msgstr "Elekti reton" #~ msgid "Use hardware switch to turn off" #~ msgstr "Uzi aparataran ŝaltilon por malŝalti" #~ msgid "Select Network" #~ msgstr "Elekti reton" #~ msgid "Wi-Fi Settings" #~ msgstr "Vifio-agordoj" #, javascript-format #~ msgid "%s Not Connected" #~ msgstr "%s ne konektita" #~ msgid "connecting…" #~ msgstr "konektante…" #~ msgid "authentication required" #~ msgstr "aŭtentigo necesas" #~ msgid "connection failed" #~ msgstr "konekto malsukcesis" #~ msgid "VPN Off" #~ msgstr "VPR malŝaltita" #, javascript-format #~ msgid "%s Wi-Fi Connection" #~ msgid_plural "%s Wi-Fi Connections" #~ msgstr[0] "%s vifia konekto" #~ msgstr[1] "%s vifiaj konektoj" #~ msgid "Night Light Disabled" #~ msgstr "Noktlumo malŝaltita" #~ msgid "Resume" #~ msgstr "Daŭrigi" #~ msgid "Disable Until Tomorrow" #~ msgstr "Malŝalti ĝis morgaŭ" #~ msgid "Fully Charged" #~ msgstr "Plene ŝargita" #~ msgid "Not Charging" #~ msgstr "Ne ŝargante" #~ msgid "Estimating…" #~ msgstr "Taksante…" #, javascript-format #~ msgid "%d∶%02d Remaining (%d %%)" #~ msgstr "Restas %d:%02d (%d %%)" #, javascript-format #~ msgid "%d∶%02d Until Full (%d %%)" #~ msgstr "%d:%02d ĝis plena (%d %%)" #~ msgid "Screen is Being Shared" #~ msgstr "Ekrano estas kunhavigita" #~ msgid "Turn off" #~ msgstr "Malŝalti" #~ msgid "Airplane Mode On" #~ msgstr "Aviadila reĝimo ŝaltita" #~ msgid "Lock" #~ msgstr "Ŝlosi" #~ msgid "Power Off / Log Out" #~ msgstr "Malŝalti / Adiaŭi" #~ msgid "Minimize" #~ msgstr "Minimumigi" #~ msgid "Unmaximize" #~ msgstr "Malmaksimumigi" #~ msgid "Evolution Calendar" #~ msgstr "Evolucio-kalendaro" #~ msgid "Author" #~ msgstr "Aŭtoro" #~ msgid "Warning" #~ msgstr "Averto" #~ msgid "" #~ "Extensions can cause system issues, including performance problems. If " #~ "you encounter problems with your system, it is recommended to disable all " #~ "extensions." #~ msgstr "" #~ "Etendaĵoj povas kaŭzi sistemproblemojn, inkluzive rendimentajn " #~ "problemojn. Se via sistemo spertas problemojn, ni rekomendas ke vi " #~ "malŝaltu ĉiujn etendaĵojn." #~ msgid "Failed to connect to GNOME Shell" #~ msgstr "Malsukcesis konekti kun GNOME-ŝelo" #~ msgid "App Picker View" #~ msgstr "Aplikaĵa elektila vido" #~ msgid "Index of the currently selected view in the application picker." #~ msgstr "Indekso de aktuala elektita vido ĉe la aplikaĵa elektilo." #~ msgid "Frequently used applications will appear here" #~ msgstr "Ofte uzataj aplikaĵoj aperos ĉi tie" # Oftaj aplikaĵoj --Carmen #~ msgid "Frequent" #~ msgstr "Oftaj" #~ msgid "All" #~ msgstr "Ĉiuj" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d" #~ msgstr "%A, %-d-a de %B" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d, %Y" #~ msgstr "%A, %-d-a de %B %Y" #~ msgid "Copy Error" #~ msgstr "Kopii eraron" #~ msgid "On" #~ msgstr "Ŝaltita" #~ msgid "Browse in Software" #~ msgstr "Foliumi en Programaro" #~ msgid "Next" #~ msgstr "Sekva" #~ msgctxt "button" #~ msgid "Sign In" #~ msgstr "Saluti" #~ msgctxt "search-result" #~ msgid "Lock Orientation" #~ msgstr "Ŝlosa orientiĝo" #~ msgid "Rename" #~ msgstr "Alinomi" #~ msgid "Password:" #~ msgstr "Pasvorto:" #~ msgid "Type again:" #~ msgstr "Tajpu denove:" #~ msgid "Password: " #~ msgstr "Pasvorto: " #~ msgid "Authentication required by wireless network" #~ msgstr "Sendrata reto bezonas aŭtentigon" #~ msgid "Mobile broadband network password" #~ msgstr "Portebla larĝkapacita retopasvorto" #~ msgid "%A, %B %d" #~ msgstr "%A, %-d-a de %B" #~ msgid "%d new message" #~ msgid_plural "%d new messages" #~ msgstr[0] "%d nova mesaĝo" #~ msgstr[1] "%d novaj mesaĝoj" #~ msgid "%d new notification" #~ msgid_plural "%d new notifications" #~ msgstr[0] "%d nova sciigo" #~ msgstr[1] "%d novaj sciigoj" #~ msgid "Account Settings" #~ msgstr "Kontoagordoj" #~ msgid "Orientation Lock" #~ msgstr "Orientiĝa ŝloso" #~ msgid "" #~ "Keybinding that pauses and resumes all running tweens, for debugging " #~ "purposes" #~ msgstr "" #~ "Klavkombino, kiu paŭzigas kaj malpaŭzigas ĉiujn rulantajn “tween”-ojn, " #~ "por sencimigaj aferoj" #~ msgid "Which keyboard to use" #~ msgstr "Uzenda klavaro" #~ msgid "The type of keyboard to use." #~ msgstr "La uzenda klavarspeco." #~ msgid "toggle-switch-us" #~ msgstr "toggle-switch-intl" #~ msgid "network-workgroup" #~ msgstr "network-workgroup" #~ msgid "There was an error loading the preferences dialog for %s:" #~ msgstr "Eraro okazis dum ŝarĝado de la agorda dialogo de %s:" #~ msgid "%s all day." #~ msgstr "%s tuttage." #~ msgid "%s, then %s later." #~ msgstr "%s, tiam %s." #~ msgid "%s, then %s, followed by %s later." #~ msgstr "%s, tiam %s, sekve %s." #~ msgid "Feels like %s." #~ msgstr "Sentas kiel %s." #~ msgid "Show the week date in the calendar" #~ msgstr "Montri la semajnajntagon en la kalendaro" #~ msgid "If true, display the ISO week date in the calendar." #~ msgstr "Montri la semajndaton laŭ ISO en la kalendaro." #~ msgid "Web Authentication Redirect" #~ msgstr "Reta aŭtentokontrola alidirekto" #~ msgid "Events" #~ msgstr "Eventoj" #~ msgid "Notifications" #~ msgstr "Sciigoj" #~ msgid "Hide tray" #~ msgstr "Kaŝi pleton" #~ msgid "Status Icons" #~ msgstr "Stato-piktogramoj" #~ msgid "Use as Internet connection" #~ msgstr "Uzi kiel interreta konekto" #~ msgid "%d x %d" #~ msgstr "%d x %d" #~ msgid "GNOME Shell (wayland compositor)" #~ msgstr "GNOME-ŝelo (wayland kunmetilo)" #~ msgid "Show the message tray" #~ msgstr "Montri la mesaĝo-pleton" #~ msgctxt "event list time" #~ msgid "%H∶%M" #~ msgstr "%H∶%M" #~ msgctxt "event list time" #~ msgid "%l∶%M %p" #~ msgstr "%l∶%M %p" #~ msgctxt "list sunday" #~ msgid "Su" #~ msgstr "di" #~ msgctxt "list monday" #~ msgid "M" #~ msgstr "lu" #~ msgctxt "list tuesday" #~ msgid "T" #~ msgstr "ma" #~ msgctxt "list wednesday" #~ msgid "W" #~ msgstr "me" #~ msgctxt "list thursday" #~ msgid "Th" #~ msgstr "ĵa" #~ msgctxt "list friday" #~ msgid "F" #~ msgstr "ve" #~ msgctxt "list saturday" #~ msgid "S" #~ msgstr "sa" #~ msgid "Nothing Scheduled" #~ msgstr "Nenio estas planita" #~ msgid "This week" #~ msgstr "Ĉi tiu semajno" #~ msgid "Next week" #~ msgstr "Sekva semajno" #~ msgid "Removable Devices" #~ msgstr "Demeteblaj aparatoj" #~ msgid "Eject" #~ msgstr "Elĵeti" #~ msgid "Invitation" #~ msgstr "Invito" #~ msgid "Call" #~ msgstr "Voki" #~ msgid "File Transfer" #~ msgstr "Dosiertransigo" #~ msgid "Chat" #~ msgstr "Babili" #~ msgid "Invitation to %s" #~ msgstr "Invito al %s" #~ msgid "%s is inviting you to join %s" #~ msgstr "%s invitas vin aliĝi al %s" #~ msgid "Decline" #~ msgstr "Refuzi" #~ msgid "Accept" #~ msgstr "Akcepti" #~ msgid "Video call from %s" #~ msgstr "Videa voko de %s" #~ msgid "Call from %s" #~ msgstr "Voko de %s" #~ msgid "Answer" #~ msgstr "Repondo" #~ msgid "%s is sending you %s" #~ msgstr "%s sendas %s al vi" #~ msgid "%s would like permission to see when you are online" #~ msgstr "%s volus permiso por vidi kiam vi estas konektita" #~ msgid "Authentication failed" #~ msgstr "Aŭtentigo malsukcesis" #~ msgid "Encryption error" #~ msgstr "Ĉifrado-eraro" #~ msgid "Certificate not provided" #~ msgstr "Atestilo ne donita" #~ msgid "Certificate untrusted" #~ msgstr "Malfidita atestilo" #~ msgid "Certificate expired" #~ msgstr "Posttempa atestilo" #~ msgid "Certificate not activated" #~ msgstr "Atestilo ne aktivigita" #~ msgid "Certificate hostname mismatch" #~ msgstr "Atestilo-nomo de gastiga komputilo miskongruas" #~ msgid "Certificate fingerprint mismatch" #~ msgstr "Atestilo-fingropremo miskongruas" #~ msgid "Certificate self-signed" #~ msgstr "Memsubskribita atestilo" #~ msgid "Status is set to offline" #~ msgstr "Stato agordas kiam nekonektita." #~ msgid "Certificate is invalid" #~ msgstr "Nevalida atestilo" #~ msgid "Connection has been refused" #~ msgstr "Refuzinta konekto" #~ msgid "Connection can't be established" #~ msgstr "Ne povas establi konekton" #~ msgid "Connection has been lost" #~ msgstr "Konekto perdiĝis" #~ msgid "This account is already connected to the server" #~ msgstr "Ĉi tio konto estas jam konektata al servilo" #~ msgid "" #~ "Connection has been replaced by a new connection using the same resource" #~ msgstr "Konekto anstataŭigis per nova konekto uzanta la saman risurcon" #~ msgid "The account already exists on the server" #~ msgstr "La konto jam ekzistas sur la servilo" #~ msgid "Server is currently too busy to handle the connection" #~ msgstr "Servilo estas nun tro okupata por akcepti la konekton" #~ msgid "Certificate has been revoked" #~ msgstr "Atestilo senvalidigita" #~ msgid "" #~ "Certificate uses an insecure cipher algorithm or is cryptographically weak" #~ msgstr "" #~ "Atestilo uzas malsekuran ĉifrigan algoritmon aŭ estas kriptografie " #~ "malforta." #~ msgid "" #~ "The length of the server certificate, or the depth of the server " #~ "certificate chain, exceed the limits imposed by the cryptography library" #~ msgstr "" #~ "La longeco de la servilo-atestilo, aŭ la profundeco de la servilo-" #~ "atestilo ĉeno, transpasita la maksimumo altrudis per la biblioteko de " #~ "kriptografia." #~ msgid "Internal error" #~ msgstr "Interna eraro" #~ msgid "View account" #~ msgstr "Vidi konton" #~ msgid "Open" #~ msgstr "Malfermi" #~ msgid "Clear Messages" #~ msgstr "Vakigi mesaĝojn" #~ msgid "Notification Settings" #~ msgstr "Sciigaj agordoj" #~ msgid "Tray Menu" #~ msgstr "Pleto-menuo" #~ msgid "No Messages" #~ msgstr "Neniuj mesaĝoj" #~ msgid "Message Tray" #~ msgstr "Mesaĝa pleto" #~ msgid "%d Connected Device" #~ msgid_plural "%d Connected Devices" #~ msgstr[0] "%d konektita aparato" #~ msgstr[1] "%d konektitaj aparatoj" #~ msgid "UPS" #~ msgstr "vicnutrilo" #~ msgid "Battery" #~ msgstr "Baterio" #~ msgid "List of categories that should be displayed as folders" #~ msgstr "Listo de kategorioj kiu devus montriĝi kiel dosierujoj" #~ msgid "" #~ "Each category name in this list will be represented as folder in the " #~ "application view, rather than being displayed inline in the main view." #~ msgstr "" #~ "Ĉiu kategoria nomo en ĉi listo prezentitos kiel dosierujoj en la aplikaĵa " #~ "vido anstantaŭ montriĝi entekste en la ĉefa vido." #~ msgid "Arrangement of buttons on the titlebar" #~ msgstr "Aranĝo de butonoj sur la titola breto" #~ msgid "" #~ "This key overrides the key in org.gnome.desktop.wm.preferences when " #~ "running GNOME Shell." #~ msgstr "" #~ "Ĉi ŝlosilo atutas la ŝlosilon en 'org.gnome.desktop.wm.preferences' kiam " #~ "uzanta GNOME-ŝelon." #~ msgid "Select an extension to configure using the combobox above." #~ msgstr "" #~ "Elekti kromprogramon por agordi uzanta la redaktebla falmenuo supre." #~ msgid "calendar:MY" #~ msgstr "calendar:MY" #~ msgid "%A, %H:%M" #~ msgstr "%A, %H:%M" #~ msgid "%B %d, %H:%M" #~ msgstr "%B %d, %H:%M" #~ msgid "%B %d %Y, %H:%M " #~ msgstr "%B %d %Y, %H:%M " #~ msgid "Authorization request from %s" #~ msgstr "Rajtigpeto de %s" #~ msgid "Device %s wants to pair with this computer" #~ msgstr "Aparato %s volas pariĝi kun tiu ĉi komputilo" #~ msgid "Device %s wants access to the service '%s'" #~ msgstr "Aparato '%s' volas aliron al servo '%s'" #~ msgid "Grant this time only" #~ msgstr "Konsenti nur ĉi tiun fojon" #~ msgid "Reject" #~ msgstr "Rifuzi" #~ msgid "Pairing confirmation for %s" #~ msgstr "Pariĝ-konfirmo por %s" #~ msgid "" #~ "Please confirm whether the Passkey '%06d' matches the one on the device." #~ msgstr "" #~ "Bonvole konfirmu ĉu la PIN-kodo '%06d' kongruas kun tiu sur la aparato." #~ msgid "Does not match" #~ msgstr "Ne kongruas" #~ msgid "Pairing request for %s" #~ msgstr "Pariĝ-peto por '%s'" #~ msgid "Please enter the PIN mentioned on the device." #~ msgstr "Bonvole enigu la PIN-kodon montranta de la aparato." #~ msgid "OK" #~ msgstr "Akcepti" #~ msgid "unavailable" #~ msgstr "nedisponebla" #~ msgid "" #~ "Sorry, no wisdom for you today:\n" #~ "%s" #~ msgstr "" #~ "Pardonu, neniu saĝo por vi hodiaŭ:\n" #~ "%s" #~ msgid "%s the Oracle says" #~ msgstr "%s la Orakolo diras" #~ msgctxt "event list time" #~ msgid "%H\\u2236%M" #~ msgstr "%H\\u2236%M" #~ msgctxt "event list time" #~ msgid "%l\\u2236%M\\u2009%p" #~ msgstr "%l\\u2236%M\\u2009%p" #~ msgid "Framerate used for recording screencasts." #~ msgstr "Bildrapido uzata por ekranregistraĵoj." #~ msgid "The gstreamer pipeline used to encode the screencast" #~ msgstr "La ĉenstablo de Gstreamer uzata por kodi la ekranregistraĵon" #~ msgid "File extension used for storing the screencast" #~ msgstr "La dosiersufikso uzata por konservi la ekranregistraĵon" #~ msgid "Click Log Out to quit these applications and log out of the system." #~ msgstr "" #~ "Alklaku \"Elsaluti\" por ĉesi tiujn aplikaĵojn kaj elsaluti de la sistemo." #~ msgid "Logging out of the system." #~ msgstr "Elsalutanta de la sistemo." #~ msgid "Click Power Off to quit these applications and power off the system." #~ msgstr "" #~ "Alklaku \"Elŝalti\" por ĉesi tiujn aplikaĵojn kaj elŝalti la sistemon." #~ msgid "Powering off the system." #~ msgstr "Elŝaltanta la sistemon." #~ msgid "Click Restart to quit these applications and restart the system." #~ msgstr "" #~ "Alklaku \"Restartigi\" por ĉesi tiujn aplikaĵojn kaj restartigi la " #~ "sistemon." #~ msgid "Restarting the system." #~ msgstr "Restartiganta la sistemon." #~ msgid "disabled" #~ msgstr "elŝaltita" #~ msgid "Connected (private)" #~ msgstr "Konektita (private)" #~ msgid "Wired" #~ msgstr "Drata" #~ msgid "Whether to collect stats about applications usage" #~ msgstr "Ĉu kolekti statistikojn pri uzo de aplikaĵoj?" #~ msgid "" #~ "The shell normally monitors active applications in order to present the " #~ "most used ones (e.g. in launchers). While this data will be kept private, " #~ "you may want to disable this for privacy reasons. Please note that doing " #~ "so won't remove already saved data." #~ msgstr "" #~ "La ŝelo kutime kontrolas la ruliĝajn aplikaĵojn por montri la plej " #~ "uzitajn aplikaĵojn (ekz. en lanĉiloj). Kvankam ĉi tiu datumoj estos " #~ "tenata privata, vi eble volas elŝalti ĉi tion pro privateca kialo. " #~ "Bonvole atentu ke faranta ĉi tion ne forigos jam konservitajn datumojn." #~ msgid "disabled OpenSearch providers" #~ msgstr "elŝaltitaj OpenSearch-provizantoj" #~ msgid "Show time with seconds" #~ msgstr "Montri horon kun sekundoj" #~ msgid "If true, display seconds in time." #~ msgstr "Se vera, montri sekundojn en horo." #~ msgid "Show date in clock" #~ msgstr "Montri daton en horloĝo" #~ msgid "If true, display date in the clock, in addition to time." #~ msgstr "Se vera, montri daton en la horloĝo, krom la horo." #~ msgctxt "title" #~ msgid "Sign In" #~ msgstr "Ensaluti" #~ msgid "APPLICATIONS" #~ msgstr "APLIKAĴOJ" #~ msgid "SETTINGS" #~ msgstr "AGORDOJ" #~ msgctxt "event list time" #~ msgid "%H:%M" #~ msgstr "%H:%M" 0707010000022B000081A40000000000000000000000016712993F00023BEA000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/es.po# Spanish translation of gnome-shell. # Copyright (C) 2009 gnome-shell's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-shell package. # Jorge González , 2009, 2010, 2011. # Benjamín Valero Espinosa , 2011. # Óscar Fernández Díaz , 2023. # Daniel Mustieles , 2022-2024. # Daniel Mustieles García , 2024. # msgid "" msgstr "" "Project-Id-Version: gnome-shell.master\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues/\n" "POT-Creation-Date: 2024-09-17 18:40+0000\n" "PO-Revision-Date: 2024-09-02 11:42+0200\n" "Last-Translator: Daniel Mustieles García \n" "Language-Team: Spanish - Spain \n" "Language: es_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: Gtranslator 46.1\n" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "Lanzadores" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate pinned app 1" msgstr "Activar la aplicación favorita 1" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate pinned app 2" msgstr "Activar la aplicación favorita 2" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate pinned app 3" msgstr "Activar la aplicación favorita 3" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate pinned app 4" msgstr "Activar la aplicación favorita 4" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate pinned app 5" msgstr "Activar la aplicación favorita 5" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate pinned app 6" msgstr "Activar la aplicación favorita 6" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate pinned app 7" msgstr "Activar la aplicación favorita 7" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate pinned app 8" msgstr "Activar la aplicación favorita 8" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate pinned app 9" msgstr "Activar la aplicación favorita 9" #: data/50-gnome-shell-launchers.xml:46 msgid "Open new window of pinned app 1" msgstr "Abrir una ventana nueva para la aplicación favorita 1" #: data/50-gnome-shell-launchers.xml:50 msgid "Open new window of pinned app 2" msgstr "Abrir una ventana nueva para la aplicación favorita 2" #: data/50-gnome-shell-launchers.xml:54 msgid "Open new window of pinned app 3" msgstr "Abrir una ventana nueva para la aplicación favorita 3" #: data/50-gnome-shell-launchers.xml:58 msgid "Open new window of pinned app 4" msgstr "Abrir una ventana nueva para la aplicación favorita 4" #: data/50-gnome-shell-launchers.xml:62 msgid "Open new window of pinned app 5" msgstr "Abrir una ventana nueva para la aplicación favorita 5" #: data/50-gnome-shell-launchers.xml:66 msgid "Open new window of pinned app 6" msgstr "Abrir una ventana nueva para la aplicación favorita 6" #: data/50-gnome-shell-launchers.xml:70 msgid "Open new window of pinned app 7" msgstr "Abrir una ventana nueva para la aplicación favorita 7" #: data/50-gnome-shell-launchers.xml:74 msgid "Open new window of pinned app 8" msgstr "Abrir una ventana nueva para la aplicación favorita 8" #: data/50-gnome-shell-launchers.xml:78 msgid "Open new window of pinned app 9" msgstr "Abrir una ventana nueva para la aplicación favorita 9" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2274 msgid "Screenshots" msgstr "Capturas de pantalla" #: data/50-gnome-shell-screenshots.xml:9 #: data/org.gnome.shell.gschema.xml.in:287 msgid "Take a screenshot interactively" msgstr "Hacer una captura de pantalla de manera interactiva" #: data/50-gnome-shell-screenshots.xml:12 #: data/org.gnome.shell.gschema.xml.in:299 msgid "Take a screenshot" msgstr "Hacer una captura de pantalla" #: data/50-gnome-shell-screenshots.xml:15 #: data/org.gnome.shell.gschema.xml.in:295 msgid "Take a screenshot of a window" msgstr "Capturar una ventana" #: data/50-gnome-shell-screenshots.xml:18 #: data/org.gnome.shell.gschema.xml.in:291 msgid "Record a screencast interactively" msgstr "Grabar la pantalla de manera interactiva" #: data/50-gnome-shell-system.xml:6 js/ui/messageTray.js:1298 msgid "System" msgstr "Sistema" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "Mostrar la lista de notificaciones" #: data/50-gnome-shell-system.xml:12 msgid "Open the quick settings menu" msgstr "Abrir el menú de configuración rápida" #: data/50-gnome-shell-system.xml:15 msgid "Focus the active notification" msgstr "Dar el foco a la notificación activa" #: data/50-gnome-shell-system.xml:18 msgid "Show the overview" msgstr "Mostrar la vista general" #: data/50-gnome-shell-system.xml:21 msgid "Show all apps" msgstr "Mostrar todas las aplicaciones" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "GNOME Shell" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "Gestión de ventanas e inicio de aplicaciones" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" "Activar las herramientas internas, útiles para desarrolladores y probadores, " "desde Alt+F2" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Permitir acceder a las herramientas internas de depuración monitorización " "usando el diálogo Alt+F2." #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "UUID de las extensiones que activar" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "Las extensiones de GNOME Shell tienen una propiedad UUID; esta clave lista " "las extensiones que se deben cargar. Cualquier extensión que se quiere " "cargar debe estar en la lista. También puede manipular esta lista con los " "métodos de DBus «EnableExtension» y «DisableExtension» en org.gnome.Shell." #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "UUID de las extensiones que desactivar forzosamente" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" "Las extensiones de GNOME Shell tienen una propiedad UUID; esta clave lista " "las extensiones que se deben desactivar incluso si están cargadas como parte " "del modo actual. También puede manipular esta lista con los métodos de DBus " "«EnableExtension» y «DisableExtension» en org.gnome.Shell. Esta clave " "prevalece sobre la opción “enabled-extensions”. " #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "Desactivar extensiones de usuario" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" "Desactivar todas las extensiones que ha activado el usuario sin afectar a la " "configuración «enabled-extension»." #: data/org.gnome.shell.gschema.xml.in:45 msgid "Allow extension installation" msgstr "Permitir instalar extensiones" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "Allow users to install extensions in their home folder. If disabled, the " "InstallRemoteExtension D-Bus method will fail, and extensions are only " "loaded from system directories on startup. It does not affect extensions " "that are already loaded, so a change only takes full effect on the next " "login." msgstr "" "Permitir a los usuarios instalar extensiones en su carpeta de inicio. Si " "está desactivado, el método InstallRemoteExtension D-Bus fallará y las " "extensiones solo se cargan desde los directorios del sistema al inicio. No " "afecta a las extensiones que ya están cargadas, por lo que un cambio sólo " "entra en vigor en el siguiente inicio de sesión." #: data/org.gnome.shell.gschema.xml.in:56 msgid "Disables the validation of extension version compatibility" msgstr "" "Desactiva la validación de la compatibilidad de la versión de la extensión" #: data/org.gnome.shell.gschema.xml.in:57 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "GNOME Shell sólo cargará las extensiones que indiquen que soportan la " "versión actual en ejecución. Activar esta opción desactivará esta " "comprobación e intentará cargar todas las extensiones, independientemente de " "las versiones que indiquen que soportan." #: data/org.gnome.shell.gschema.xml.in:65 msgid "List of desktop file IDs for favorite applications" msgstr "Lista de ID de archivos de escritorio para las aplicaciones favoritas" #: data/org.gnome.shell.gschema.xml.in:66 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" "Las aplicaciones correspondientes con esos identificadores se mostrarán en " "el área de favoritos." #: data/org.gnome.shell.gschema.xml.in:73 msgid "History for command (Alt-F2) dialog" msgstr "Histórico del diálogo de comandos (Alt+F2)" #. Translators: looking glass is a debugger and inspector tool, see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/docs/looking-glass.md #: data/org.gnome.shell.gschema.xml.in:78 msgid "History for the looking glass dialog" msgstr "Histórico del diálogo de «looking glass»" #: data/org.gnome.shell.gschema.xml.in:82 msgid "Always show the “Log Out” action in the system menu" msgstr "" "Mostrar siempre el elemento de menú «Cerrar sesión» en el menú del sistema" #: data/org.gnome.shell.gschema.xml.in:83 msgid "" "This key overrides the automatic hiding of the “Log out” action in the " "system menu for logged-in situations where there is a single, local, non-" "system user and only a single available session type (e.g. GNOME on Wayland)." msgstr "" "Esta clave sobrescribe la ocultación automática del elemento de menú «Cerrar " "sesión» en situaciones de un único usuario, de una única sesión o un usuario " "que no sea del sistema y sólo un tipo de sesión disponible (ej. GNOME en " "Wayland)" #: data/org.gnome.shell.gschema.xml.in:92 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "Indica si se debe recordar la contraseña para montar sistemas de archivos " "remotos o cifrados" #: data/org.gnome.shell.gschema.xml.in:93 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "La shell solicitará una contraseña cuando se monte un dispositivo cifrado o " "un sistema de archivos remoto. Si la contraseña se puede guardar para usarla " "en un futuro, se mostrará la casilla «Recordar contraseña». Esta clave " "establece el valor predeterminado de la casilla." #: data/org.gnome.shell.gschema.xml.in:102 msgid "The last selected non-default power profile" msgstr "El último perfil de energía no predeterminado seleccionado" #: data/org.gnome.shell.gschema.xml.in:103 msgid "" "Some systems support more than two power profiles. In order to still support " "toggling between two profiles, this key records the last selected non-" "default profile." msgstr "" "Algunos sistemas soportan más de dos perfiles de energía. Para seguir " "soportando cambiar entre dos perfiles esta clave guarda el último perfil no " "predeterminado seleccionado." #: data/org.gnome.shell.gschema.xml.in:111 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "" "La última versión para la que se mostró el diálogo «Bienvenido a GNOME»" #: data/org.gnome.shell.gschema.xml.in:112 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can " "be used to effectively disable the dialog." msgstr "" "Esta clave determina para qué versión se mostró por última vez el diálogo " "«Bienvenido a GNOME». Una cadena vacía representa la versión más antigua " "posible y un número muy grande representará una versión que todavía no " "existe. Este número muy grande se puede usar para desactivar el diálogo." #: data/org.gnome.shell.gschema.xml.in:145 msgid "Layout of the app picker" msgstr "Distribución del selector de aplicaciones" #: data/org.gnome.shell.gschema.xml.in:146 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" msgstr "" "Distribución del selector de aplicaciones Cada entrada en el vector es una " "página. Las páginas se guardan en el orden en que aparecen en GNOME Shell. " "Cada página contiene una pareja “application id” → 'data'. Actualmente se " "guardan los siguientes valores como 'data': • “position”:la posición del " "icono de la aplicación en la página" #: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:172 msgid "Keybinding to shift between overview states" msgstr "Asociación de teclas para cambiar entre estados de la vista general" #: data/org.gnome.shell.gschema.xml.in:166 msgid "Keybinding to shift between session, window picker and app grid" msgstr "" "Asociación de teclas para cambiar entre sesión, selector de ventanas y " "cuadrícula de aplicaciones" #: data/org.gnome.shell.gschema.xml.in:173 msgid "Keybinding to shift between app grid, window picker and session" msgstr "" "Asociación de teclas para cambiar entre cuadrícula de aplicaciones, selector " "de ventanas y sesión" #: data/org.gnome.shell.gschema.xml.in:179 msgid "Keybinding to open the “Show Applications” view" msgstr "Asociación de teclas para la vista «Mostrar aplicaciones»" #: data/org.gnome.shell.gschema.xml.in:180 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "" "Asociación de teclas para abrir la vista «Mostrar aplicaciones» de la vista " "de actividades." #: data/org.gnome.shell.gschema.xml.in:187 msgid "Keybinding to open the overview" msgstr "Asociación de teclas para la vista general" #: data/org.gnome.shell.gschema.xml.in:188 msgid "Keybinding to open the Activities Overview." msgstr "Asociación de teclas para abrir la Vista de actividades." #: data/org.gnome.shell.gschema.xml.in:194 msgid "Keybinding to toggle the visibility of the notification list" msgstr "" "Asociación de teclas para cambiar la visibilidad de la lista de " "notificaciones" #: data/org.gnome.shell.gschema.xml.in:195 msgid "Keybinding to toggle the visibility of the notification list." msgstr "" "Asociación de teclas para cambiar la visibilidad de la lista de " "notificaciones." #: data/org.gnome.shell.gschema.xml.in:201 msgid "Keybinding to toggle the quick settings menu" msgstr "Asociación de teclas para abrir el menú de configuración rápida" #: data/org.gnome.shell.gschema.xml.in:202 msgid "Keybinding to toggle the quick settings menu." msgstr "Asociación de teclas para abrir el menú de configuración rápida." #: data/org.gnome.shell.gschema.xml.in:208 msgid "Keybinding to focus the active notification" msgstr "Asociación de teclas para dar el foco a la notificación activa" #: data/org.gnome.shell.gschema.xml.in:209 msgid "Keybinding to focus the active notification." msgstr "Asociación de teclas para dar el foco a la notificación activa." #: data/org.gnome.shell.gschema.xml.in:215 msgid "Switch to application 1" msgstr "Cambiar a la aplicación 1" #: data/org.gnome.shell.gschema.xml.in:219 msgid "Switch to application 2" msgstr "Cambiar a la aplicación 2" #: data/org.gnome.shell.gschema.xml.in:223 msgid "Switch to application 3" msgstr "Cambiar a la aplicación 3" #: data/org.gnome.shell.gschema.xml.in:227 msgid "Switch to application 4" msgstr "Cambiar a la aplicación 4" #: data/org.gnome.shell.gschema.xml.in:231 msgid "Switch to application 5" msgstr "Cambiar a la aplicación 5" #: data/org.gnome.shell.gschema.xml.in:235 msgid "Switch to application 6" msgstr "Cambiar a la aplicación 6" #: data/org.gnome.shell.gschema.xml.in:239 msgid "Switch to application 7" msgstr "Cambiar a la aplicación 7" #: data/org.gnome.shell.gschema.xml.in:243 msgid "Switch to application 8" msgstr "Cambiar a la aplicación 8" #: data/org.gnome.shell.gschema.xml.in:247 msgid "Switch to application 9" msgstr "Cambiar a la aplicación 9" #: data/org.gnome.shell.gschema.xml.in:251 msgid "Open a new instance of application 1" msgstr "Abrir una nueva instancia de la aplicación 1" #: data/org.gnome.shell.gschema.xml.in:255 msgid "Open a new instance of application 2" msgstr "Abrir una nueva instancia de la aplicación 2" #: data/org.gnome.shell.gschema.xml.in:259 msgid "Open a new instance of application 3" msgstr "Abrir una nueva instancia de la aplicación 3" #: data/org.gnome.shell.gschema.xml.in:263 msgid "Open a new instance of application 4" msgstr "Abrir una nueva instancia de la aplicación 4" #: data/org.gnome.shell.gschema.xml.in:267 msgid "Open a new instance of application 5" msgstr "Abrir una nueva instancia de la aplicación 5" #: data/org.gnome.shell.gschema.xml.in:271 msgid "Open a new instance of application 6" msgstr "Abrir una nueva instancia de la aplicación 6" #: data/org.gnome.shell.gschema.xml.in:275 msgid "Open a new instance of application 7" msgstr "Abrir una nueva instancia de la aplicación 7" #: data/org.gnome.shell.gschema.xml.in:279 msgid "Open a new instance of application 8" msgstr "Abrir una nueva instancia de la aplicación 8" #: data/org.gnome.shell.gschema.xml.in:283 msgid "Open a new instance of application 9" msgstr "Abrir una nueva instancia de la aplicación 9" #: data/org.gnome.shell.gschema.xml.in:308 #: data/org.gnome.shell.gschema.xml.in:335 msgid "Limit switcher to current workspace." msgstr "Limitar el intercambiador al área de trabajo actual." #: data/org.gnome.shell.gschema.xml.in:309 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "Si es cierto, sólo las aplicaciones que tengan ventanas en el área de " "trabajo actual se muestran en el selector. Si no, se incluyen todas las " "aplicaciones." #: data/org.gnome.shell.gschema.xml.in:326 msgid "The application icon mode." msgstr "El modo de icono de la aplicación." #: data/org.gnome.shell.gschema.xml.in:327 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-only” " "(shows only the application icon) or “both”." msgstr "" "Configura cómo se muestran las ventanas en el selector. Los valore posibles " "son «thumbnail-only» (muestra una miniatura de la ventana), «app-icon-only» " "(sólo muestra el icono de la aplicación) «both»." #: data/org.gnome.shell.gschema.xml.in:336 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "Si es cierto, sólo se muestran en el selector las ventanas del área de " "trabajo actual. Si no, se incluyen todas las ventanas." #: data/org.gnome.shell.gschema.xml.in:346 msgid "Locations" msgstr "Ubicaciones" #: data/org.gnome.shell.gschema.xml.in:347 msgid "The locations to show in world clocks" msgstr "Las ubicaciones que mostrar en los relojes del mundo" #: data/org.gnome.shell.gschema.xml.in:357 msgid "Automatic location" msgstr "Ubicación automática" #: data/org.gnome.shell.gschema.xml.in:358 msgid "Whether to fetch the current location or not" msgstr "Indica si se debe o no obtener la ubicación actual" #: data/org.gnome.shell.gschema.xml.in:365 msgid "Location" msgstr "Ubicación" #: data/org.gnome.shell.gschema.xml.in:366 msgid "The location for which to show a forecast" msgstr "La ubicación para la que mostrar la predicción" #. Keep in sync with subprojects/extensions-app #: data/org.gnome.Shell.Extensions.desktop.in.in:5 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/data/ui/extensions-window.ui:57 msgid "Extensions" msgstr "Extensiones" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "Inicio de sesión de la red" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:275 msgid "Something’s gone wrong" msgstr "Algo ha fallado" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" "Ha habido un problema: no se puede mostrar la configuración para esta " "extensión. Se recomienda que informe del error a los autores de la extensión." #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "Detalles técnicos" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "Página web" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 msgid "Visit extension homepage" msgstr "Visitar la página web de la extensión" #: js/gdm/authPrompt.js:155 js/gdm/loginDialog.js:466 #: js/ui/audioDeviceSelection.js:66 js/ui/components/networkAgent.js:113 #: js/ui/components/polkitAgent.js:144 js/ui/endSessionDialog.js:437 #: js/ui/extensionDownloader.js:276 js/ui/shellMountOperation.js:382 #: js/ui/shellMountOperation.js:392 msgid "Cancel" msgstr "Cancelar" #: js/gdm/authPrompt.js:321 js/ui/components/networkAgent.js:213 #: js/ui/components/networkAgent.js:233 js/ui/components/networkAgent.js:265 #: js/ui/components/networkAgent.js:298 js/ui/components/networkAgent.js:337 #: js/ui/components/networkAgent.js:350 js/ui/components/polkitAgent.js:286 #: js/ui/shellMountOperation.js:332 msgid "Password" msgstr "Contraseña" #: js/gdm/loginDialog.js:326 msgid "Choose Session" msgstr "Elegir sesión" #. Translators: is running for #: js/gdm/loginDialog.js:424 #, javascript-format msgid "" "Remote login is not possible because a remote session is already running for " "%s. To login remotely, you must log out from the remote session or force " "stop it." msgstr "" "El inicio remoto de sesión no es posible porque ya hay una sesión remota el " "ejecución para %s. Para iniciar sesión remotamente debe cerrar primero la " "sesión remota o forzar el cierre." #. Translators: is running for #: js/gdm/loginDialog.js:427 #, javascript-format msgid "" "Login is not possible because a remote session is already running for %s. To " "login, you must log out from the remote session or force stop it." msgstr "" "El inicio de sesión no es posible porque ya hay una sesión remota el " "ejecución para %s. Para iniciar sesión debe cerrar primero la sesión remota " "o forzar el cierre." #. Translators: is running for #: js/gdm/loginDialog.js:430 #, javascript-format msgid "" "Remote login is not possible because a local session is already running for " "%s. To login remotely, you must log out from the local session or force stop " "it." msgstr "" "El inicio remoto de sesión no es posible porque ya hay una sesión local el " "ejecución para %s. Para iniciar sesión remotamente debe cerrar primero la " "sesión local o forzar el cierre." #. Translators: is running for #: js/gdm/loginDialog.js:433 #, javascript-format msgid "" "Login is not possible because a session is already running for %s. To login, " "you must log out from the session or force stop it." msgstr "" "El inicio de sesión no es posible porque ya hay una sesión el ejecución para " "%s. Para iniciar sesión debe cerrar primero la sesión o forzar el cierre." #: js/gdm/loginDialog.js:442 msgid "Session Already Running" msgstr "Sesión en ejecución actualmente" #: js/gdm/loginDialog.js:454 msgid "" "Force stopping will quit any running apps and processes, and could result in " "data loss" msgstr "" "Forzar la detención saldrá de cualquier aplicación o proceso en ejecución y " "puede provocar pérdida de datos" #: js/gdm/loginDialog.js:474 msgid "Force Stop" msgstr "Forzar detención" #: js/gdm/loginDialog.js:542 msgid "Not listed?" msgstr "¿No está en la lista?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:1010 #, javascript-format msgid "(e.g., user or %s)" msgstr "(ej., usuario o %s)" #: js/gdm/loginDialog.js:1015 js/ui/components/networkAgent.js:257 #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:326 msgid "Username" msgstr "Nombre de usuario" #: js/gdm/loginDialog.js:1081 msgid "Login Attempt Timed Out" msgstr "Ha expirado el intento de inicio de sesión" #: js/gdm/loginDialog.js:1082 msgid "Login took too long, please try again" msgstr "El inicio de sesión ha tardado demasiado, inténtelo de nuevo" #: js/gdm/loginDialog.js:1431 msgid "Login Window" msgstr "Ventana de inicio de sesión" #: js/gdm/util.js:496 msgid "Authentication error" msgstr "Error de autenticación" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:727 msgid "(or swipe finger across reader)" msgstr "(o pase el dedo por el lector)" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:732 msgid "(or place finger on reader)" msgstr "(o coloque el dedo en el lector)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:91 msgctxt "search-result" msgid "Power Off" msgstr "Apagar" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:94 msgid "power off;poweroff;shutdown;halt;stop" msgstr "apagar;apagado;reinicio;reiniciar;detener;parar" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:99 msgctxt "search-result" msgid "Restart" msgstr "Reiniciar" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:102 msgid "reboot;restart;" msgstr "reiniciar;rebotar;" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:107 msgctxt "search-result" msgid "Lock Screen" msgstr "Bloquear la pantalla" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:110 msgid "lock screen" msgstr "bloquear;pantalla" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:115 msgctxt "search-result" msgid "Log Out" msgstr "Cerrar la sesión" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:118 msgid "logout;log out;sign off" msgstr "cerrar;sesión;salir" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:123 msgctxt "search-result" msgid "Suspend" msgstr "Suspender" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:126 msgid "suspend;sleep" msgstr "suspender;dormir" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:131 msgctxt "search-result" msgid "Switch User" msgstr "Cambiar de usuario" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:134 msgid "switch user" msgstr "cambiar;usuario" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:141 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "bloquear orientación;desbloquear orientación;pantalla;rotación" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:146 msgctxt "search-result" msgid "Take a Screenshot" msgstr "Hacer una captura de pantalla" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:149 msgid "screenshot;screencast;snip;capture;record" msgstr "captura;pantalla;grabación;recorte;grabación" #: js/misc/systemActions.js:249 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "Desbloquear la rotación de la pantalla" #: js/misc/systemActions.js:250 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "Bloquear la rotación de la pantalla" #: js/misc/util.js:130 msgid "Command not found" msgstr "Comando no encontrado" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:170 msgid "Could not parse command:" msgstr "No se pudo analizar el comando:" #: js/misc/util.js:178 #, javascript-format msgid "Execution of “%s” failed:" msgstr "Falló la ejecución de «%s»:" #: js/misc/dateUtils.js:69 msgid "Just now" msgstr "Ahora mismo" #: js/misc/dateUtils.js:72 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "Hace %d minuto" msgstr[1] "Hace %d minutos" #: js/misc/dateUtils.js:79 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "Hace %d hora" msgstr[1] "Hace %d horas" #: js/misc/dateUtils.js:85 js/ui/dateMenu.js:183 msgid "Yesterday" msgstr "Ayer" #: js/misc/dateUtils.js:88 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "Hace %d día" msgstr[1] "Hace %d días" #: js/misc/dateUtils.js:95 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "Hace %d semana" msgstr[1] "Hace %d semanas" #: js/misc/dateUtils.js:102 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "Hace %d mes" msgstr[1] "Hace %d meses" #: js/misc/dateUtils.js:108 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "Hace %d año" msgstr[1] "Hace %d años" #. Translators: Time in 24h format #: js/misc/dateUtils.js:155 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/dateUtils.js:161 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "Ayer, %H∶%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/dateUtils.js:167 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/dateUtils.js:173 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%-d de %B, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/dateUtils.js:179 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%-d de %B de %Y, %H∶%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/dateUtils.js:184 msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/dateUtils.js:190 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "Ayer a las %l∶%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/dateUtils.js:196 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/dateUtils.js:202 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%-d de %B, %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/dateUtils.js:208 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%-d de %B de %Y, %l∶%M %p" #: js/portalHelper/main.js:98 msgid "Your connection seems to be secure" msgstr "Su conexión parece ser segura" #: js/portalHelper/main.js:104 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "Su conexión a este punto de acceso no es segura. Las contraseñas y otra " "información que introduzca en esta página la podrían ver personas cercanas." #: js/portalHelper/main.js:115 msgid "Hotspot Login" msgstr "Inicio de sesión en el punto de acceso" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:51 js/ui/inhibitShortcutsDialog.js:92 msgid "Deny" msgstr "Denegar" #: js/ui/accessDialog.js:52 js/ui/inhibitShortcutsDialog.js:101 msgid "Allow" msgstr "Permitir" #: js/ui/appDisplay.js:1769 msgid "Unnamed Folder" msgstr "Carpeta sin nombre" #: js/ui/appFavorites.js:163 #, javascript-format msgid "%s has been pinned to the dash." msgstr "%s se ha fijado al tablero." #: js/ui/appFavorites.js:194 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "Se ha quitado %s del tablero." #: js/ui/appFavorites.js:208 js/ui/main.js:281 msgid "Undo" msgstr "Deshacer" #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:49 msgid "Open Windows" msgstr "Ventanas abiertas" #: js/ui/appMenu.js:57 msgid "New Window" msgstr "Ventana nueva" #: js/ui/appMenu.js:84 msgid "App Details" msgstr "Detalles de la aplicación" #: js/ui/appMenu.js:100 msgid "Quit" msgstr "Salir" #: js/ui/appMenu.js:160 js/ui/dash.js:248 msgid "Unpin" msgstr "Quitar" #: js/ui/appMenu.js:161 msgid "Pin to Dash" msgstr "Fijar al tablero" #: js/ui/appMenu.js:178 msgid "Launch using Integrated Graphics Card" msgstr "Lanzar usando la tarjeta gráfica integrada" #: js/ui/appMenu.js:179 msgid "Launch using Discrete Graphics Card" msgstr "Lanzar usando la tarjeta gráfica discreta" #: js/ui/audioDeviceSelection.js:46 msgid "Select Audio Device" msgstr "Seleccionar dispositivo de sonido" #: js/ui/audioDeviceSelection.js:61 js/ui/status/volume.js:81 msgid "Sound Settings" msgstr "Configuración de sonido" #: js/ui/audioDeviceSelection.js:74 msgid "Headphones" msgstr "Auriculares" #: js/ui/audioDeviceSelection.js:76 msgid "Headset" msgstr "Manos libres" #: js/ui/audioDeviceSelection.js:78 js/ui/status/volume.js:356 msgid "Microphone" msgstr "Micrófono" #: js/ui/backgroundMenu.js:13 msgid "Change Background…" msgstr "Cambiar el fondo…" #: js/ui/backgroundMenu.js:15 msgid "Display Settings" msgstr "Configuración de pantalla" #: js/ui/backgroundMenu.js:16 msgid "Settings" msgstr "Configuración" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:37 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:63 msgctxt "grid sunday" msgid "S" msgstr "D" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:65 msgctxt "grid monday" msgid "M" msgstr "L" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:67 msgctxt "grid tuesday" msgid "T" msgstr "M" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:69 msgctxt "grid wednesday" msgid "W" msgstr "X" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:71 msgctxt "grid thursday" msgid "T" msgstr "J" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:73 msgctxt "grid friday" msgid "F" msgstr "V" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:75 msgctxt "grid saturday" msgid "S" msgstr "S" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:426 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:436 msgid "%OB %Y" msgstr "%OB de %Y" #: js/ui/calendar.js:498 msgid "Previous month" msgstr "Mes anterior" #: js/ui/calendar.js:516 msgid "Next month" msgstr "Siguiente mes" #: js/ui/calendar.js:667 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:726 msgid "Week %V" msgstr "Semana %V" #: js/ui/calendar.js:918 msgid "No Notifications" msgstr "No hay notificaciones" #: js/ui/calendar.js:974 msgid "Do Not Disturb" msgstr "No molestar" #: js/ui/calendar.js:995 msgid "Clear" msgstr "Limpiar" #: js/ui/calendar.js:999 msgctxt "action" msgid "Clear all notifications" msgstr "Limpiar todas las notificaciones" #. Translators: %s is an application name #: js/ui/closeDialog.js:42 #, javascript-format msgid "“%s” Is Not Responding" msgstr "«%s» no responde" #: js/ui/closeDialog.js:43 msgid "" "You may choose to wait a short while for it to continue or force the app to " "quit entirely" msgstr "" "Puede elegir esperar un momento para que continúe o forzar a la aplicación a " "terminar" #: js/ui/closeDialog.js:71 msgid "Force Quit" msgstr "Forzar la salida" #: js/ui/closeDialog.js:76 msgid "Wait" msgstr "Esperar" #: js/ui/components/automountManager.js:82 msgid "External drive connected" msgstr "Dispositivo externo conectado" #: js/ui/components/automountManager.js:94 msgid "External drive disconnected" msgstr "Dispositivo externo desconectado" #: js/ui/components/automountManager.js:208 msgid "Unable to unlock volume" msgstr "No se puede desbloquear el volumen" #: js/ui/components/automountManager.js:209 msgid "The installed udisks version does not support the PIM setting" msgstr "La versión de udisks instalada no soporta la configuración PIM" #. Translators: %s is the name of a partition on a external drive #: js/ui/components/autorunManager.js:189 #, javascript-format msgid "“%s” connected" msgstr "«%s» conectado" #: js/ui/components/autorunManager.js:190 msgid "Disk can now be used" msgstr "Ya se puede usar el disco" #: js/ui/components/autorunManager.js:202 #, javascript-format msgid "Open with %s" msgstr "Abrir con %s" #: js/ui/components/networkAgent.js:95 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router" msgstr "Alternativamente puede conectarse pulsando el botón «WPS» de su router" #: js/ui/components/networkAgent.js:107 js/ui/status/bluetooth.js:245 #: js/ui/status/network.js:360 js/ui/status/network.js:444 msgid "Connect" msgstr "Conectar" #: js/ui/components/networkAgent.js:222 msgid "Key" msgstr "Clave" #: js/ui/components/networkAgent.js:273 js/ui/components/networkAgent.js:312 msgid "Private key password" msgstr "Contraseña de la clave privada" #: js/ui/components/networkAgent.js:306 msgid "Identity" msgstr "Identidad" #: js/ui/components/networkAgent.js:332 msgid "Service" msgstr "Servicio" #: js/ui/components/networkAgent.js:370 js/ui/components/networkAgent.js:406 #: js/ui/components/networkAgent.js:743 js/ui/components/networkAgent.js:764 msgid "Authentication required" msgstr "Autenticación requerida" #: js/ui/components/networkAgent.js:371 js/ui/components/networkAgent.js:744 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network “%s”" msgstr "" "Se necesitan contraseñas o claves de cifrado para acceder a la red " "inalámbrica «%s»" #: js/ui/components/networkAgent.js:375 js/ui/components/networkAgent.js:748 msgid "Wired 802.1X authentication" msgstr "Autenticación 802.1X cableada" #: js/ui/components/networkAgent.js:378 msgid "Network name" msgstr "Nombre de la red" #: js/ui/components/networkAgent.js:386 js/ui/components/networkAgent.js:752 msgid "DSL authentication" msgstr "Autenticación DSL" #: js/ui/components/networkAgent.js:393 js/ui/components/networkAgent.js:757 msgid "PIN code required" msgstr "Código PIN requerido" #: js/ui/components/networkAgent.js:394 js/ui/components/networkAgent.js:758 msgid "PIN code is needed for the mobile broadband device" msgstr "Se necesita un código PIN para el dispositivo de banda ancha móvil" #: js/ui/components/networkAgent.js:396 msgid "PIN" msgstr "PIN" #: js/ui/components/networkAgent.js:407 js/ui/components/networkAgent.js:749 #: js/ui/components/networkAgent.js:753 js/ui/components/networkAgent.js:765 #: js/ui/components/networkAgent.js:769 #, javascript-format msgid "A password is required to connect to “%s”" msgstr "Se requiere una contraseña para conectarse a «%s»" #: js/ui/components/networkAgent.js:768 msgid "VPN password" msgstr "Contraseña de la VPN" #: js/ui/components/polkitAgent.js:44 msgid "Authentication Required" msgstr "Se necesita autenticación" #: js/ui/components/polkitAgent.js:84 msgid "Administrator" msgstr "Administrador" #: js/ui/components/polkitAgent.js:149 msgid "Authenticate" msgstr "Autenticar" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:263 js/ui/shellMountOperation.js:415 msgid "Sorry, that didn’t work. Please try again." msgstr "Eso no ha funcionado. Inténtelo de nuevo." #: js/ui/ctrlAltTab.js:23 js/ui/overviewControls.js:404 msgid "Windows" msgstr "Ventanas" #: js/ui/dash.js:204 js/ui/dash.js:250 msgid "Show Apps" msgstr "Mostrar aplicaciones" #. Translators: this is the name of the dock/favorites area on #. the bottom of the overview #: js/ui/dash.js:408 msgid "Dash" msgstr "Tablero" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:99 msgid "%B %-d %Y" msgstr "%-d de %B de %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:106 msgid "%A %B %e %Y" msgstr "%A %-d de %B de %Y" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:172 msgctxt "calendar heading" msgid "%B %-d" msgstr "%-d de %B" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:175 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%-d de %B de %Y" #: js/ui/dateMenu.js:181 msgid "Today" msgstr "Hoy" #: js/ui/dateMenu.js:185 msgid "Tomorrow" msgstr "Mañana" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:216 msgctxt "event list time" msgid "All Day" msgstr "Todo el día" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:238 msgid "%m/%d" msgstr "%m/%d" #: js/ui/dateMenu.js:289 msgid "No Events" msgstr "No hay eventos" #: js/ui/dateMenu.js:411 msgid "Add World Clocks…" msgstr "Añadir relojes del mundo…" #: js/ui/dateMenu.js:412 msgid "World Clocks" msgstr "Relojes del mundo" #: js/ui/dateMenu.js:702 msgid "Loading…" msgstr "Cargando…" #: js/ui/dateMenu.js:712 msgid "Go Online for Weather Information" msgstr "Conectarse para obtener la información meteorológica" #: js/ui/dateMenu.js:714 msgid "Weather Information Unavailable" msgstr "La información meteorológica no está disponible" #: js/ui/dateMenu.js:724 msgid "Weather" msgstr "Meteorología" #: js/ui/dateMenu.js:726 msgid "Select Weather Location…" msgstr "Seleccionar ubicación meteorológica…" #: js/ui/endSessionDialog.js:47 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "Cerrar la sesión %s" #: js/ui/endSessionDialog.js:48 msgctxt "title" msgid "Log Out" msgstr "Cerrar la sesión" #: js/ui/endSessionDialog.js:51 #, javascript-format msgid "%s will be logged out automatically in %d second" msgid_plural "%s will be logged out automatically in %d seconds" msgstr[0] "Se cerrará automáticamente la sesión de %s en %d segundo" msgstr[1] "Se cerrará automáticamente la sesión de %s en %d segundos" #: js/ui/endSessionDialog.js:57 #, javascript-format msgid "You will be logged out automatically in %d second" msgid_plural "You will be logged out automatically in %d seconds" msgstr[0] "Su sesión se cerrará automáticamente en %d segundo" msgstr[1] "Su sesión se cerrará automáticamente en %d segundos" #: js/ui/endSessionDialog.js:64 msgctxt "button" msgid "Log Out" msgstr "Cerrar la sesión" #: js/ui/endSessionDialog.js:70 js/ui/status/system.js:174 msgctxt "title" msgid "Power Off" msgstr "Apagar" #: js/ui/endSessionDialog.js:71 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Instalar actualizaciones y apagar" #: js/ui/endSessionDialog.js:74 #, javascript-format msgid "The system will power off automatically in %d second" msgid_plural "The system will power off automatically in %d seconds" msgstr[0] "El sistema se apagará automáticamente en %d segundo" msgstr[1] "El sistema se apagará automáticamente en %d segundos" #: js/ui/endSessionDialog.js:78 js/ui/endSessionDialog.js:97 msgctxt "checkbox" msgid "Install pending software updates" msgstr "Instalar las actualizaciones de software pendientes" #: js/ui/endSessionDialog.js:82 msgctxt "button" msgid "Power Off" msgstr "Apagar" #: js/ui/endSessionDialog.js:89 msgctxt "title" msgid "Restart" msgstr "Reiniciar" #: js/ui/endSessionDialog.js:90 msgctxt "title" msgid "Install Updates & Restart" msgstr "Instalar actualizaciones y reiniciar" #: js/ui/endSessionDialog.js:93 #, javascript-format msgid "The system will restart automatically in %d second" msgid_plural "The system will restart automatically in %d seconds" msgstr[0] "El sistema se reiniciará automáticamente en %d segundo" msgstr[1] "El sistema se reiniciará automáticamente en %d segundos" #: js/ui/endSessionDialog.js:101 msgctxt "button" msgid "Restart" msgstr "Reiniciar" #: js/ui/endSessionDialog.js:109 msgctxt "title" msgid "Restart & Install Updates" msgstr "Reiniciar e instalar actualizaciones" #: js/ui/endSessionDialog.js:112 #, javascript-format msgid "The system will automatically restart and install updates in %d second" msgid_plural "" "The system will automatically restart and install updates in %d seconds" msgstr[0] "" "El sistema se reiniciará automáticamente e instalará las actualizaciones en " "%d segundo" msgstr[1] "" "El sistema se reiniciará automáticamente e instalará las actualizaciones en " "%d segundos" #: js/ui/endSessionDialog.js:119 js/ui/endSessionDialog.js:140 msgctxt "button" msgid "Restart & Install" msgstr "Reiniciar e instalar" #: js/ui/endSessionDialog.js:121 msgctxt "button" msgid "Install & Power Off" msgstr "Instalar y apagar" #: js/ui/endSessionDialog.js:122 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Apagar después de instalar las actualizaciones" #: js/ui/endSessionDialog.js:129 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "Reiniciar e instalar actualizaciones" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:134 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "%s %s se instalará después de reiniciar. La instalación de la actualización " "puede tardar mucho tiempo: asegúrese de que tiene una copia de respaldo y de " "que el equipo está enchufado." #: js/ui/endSessionDialog.js:283 msgid "Low battery power: please plug in before installing updates" msgstr "" "Queda poca batería: enchufe el equipo antes de instalar las actualizaciones" #: js/ui/endSessionDialog.js:292 msgid "Some applications are busy or have unsaved work" msgstr "Algunas aplicaciones están ocupadas o tienen trabajo sin guardar" #: js/ui/endSessionDialog.js:297 msgid "Other users are logged in" msgstr "Hay otros usuarios con la sesión iniciada" #: js/ui/endSessionDialog.js:467 msgctxt "button" msgid "Boot Options" msgstr "Opciones de arranque" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:672 #, javascript-format msgid "%s (remote)" msgstr "%s (remoto)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:675 #, javascript-format msgid "%s (console)" msgstr "%s (consola)" #: js/ui/extensionDownloader.js:280 msgid "Install" msgstr "Instalar" #: js/ui/extensionDownloader.js:286 msgid "Install Extension" msgstr "Instalar extensión" #: js/ui/extensionDownloader.js:287 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "¿Descargar e instalar «%s» desde extensions.gnome.org?" #: js/ui/extensionSystem.js:352 msgid "Extension Updates Available" msgstr "Actualizaciones de extensiones disponibles" #: js/ui/extensionSystem.js:353 msgid "Extension updates are ready to be installed" msgstr "Las actualizaciones de las extensiones están listas para instalarse" #: js/ui/inhibitShortcutsDialog.js:70 msgid "Allow inhibiting shortcuts" msgstr "Permitir inhibir los atajos" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:73 #, javascript-format msgid "The app %s wants to inhibit shortcuts" msgstr "La aplicación %s quiere inhibir los atajos" #: js/ui/inhibitShortcutsDialog.js:74 msgid "An app wants to inhibit shortcuts" msgstr "Una aplicación quiere inhibir los atajos" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:81 #, javascript-format msgid "You can restore shortcuts by pressing %s" msgstr "Puede restaurar los atajos pulsando %s" #: js/ui/kbdA11yDialog.js:34 msgid "Slow Keys Turned On" msgstr "Teclas lentas activadas" #: js/ui/kbdA11yDialog.js:35 msgid "Slow Keys Turned Off" msgstr "Teclas lentas desactivadas" #: js/ui/kbdA11yDialog.js:36 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "Acaba de pulsar la tecla «Mayúsculas» durante 8 segundos. Ésto es el atajo " "del teclado para la característica «Teclas lentas», que afecta la forma en " "que funciona el teclado." #: js/ui/kbdA11yDialog.js:42 msgid "Sticky Keys Turned On" msgstr "Teclas persistentes activadas" #: js/ui/kbdA11yDialog.js:43 msgid "Sticky Keys Turned Off" msgstr "Teclas persistentes desactivadas" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "Acaba de pulsar la tecla «Mayúsculas» 5 veces. Este es el acceso rápido para " "la característica «Teclas persistentes», que afecta la manera en que " "funciona el teclado." #: js/ui/kbdA11yDialog.js:47 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" "Acaba de pulsar dos teclas a la vez, o ha pulsado la tecla «Mayúsculas» 5 " "veces seguidas. Esto desactiva la característica de «Teclas persistentes», " "lo cual afecta a la forma en que funciona su teclado." #: js/ui/kbdA11yDialog.js:57 msgid "Leave On" msgstr "Dejar activada" #: js/ui/kbdA11yDialog.js:57 msgid "Turn On" msgstr "Encender" #: js/ui/kbdA11yDialog.js:67 js/ui/status/network.js:455 msgid "Turn Off" msgstr "Apagar" #: js/ui/kbdA11yDialog.js:67 msgid "Leave Off" msgstr "Dejar apagado" #: js/ui/keyboard.js:180 js/ui/status/keyboard.js:897 msgid "Keyboard Settings" msgstr "Configuración del teclado" #: js/ui/lookingGlass.js:727 msgid "No extensions installed" msgstr "No hay extensiones instaladas" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:788 #, javascript-format msgid "%s has not emitted any errors" msgstr "%s no ha generado ningún error" #: js/ui/lookingGlass.js:794 msgid "Hide Errors" msgstr "Ocultar errores" #: js/ui/lookingGlass.js:798 js/ui/lookingGlass.js:875 msgid "Show Errors" msgstr "Mostrar errores" #: js/ui/lookingGlass.js:807 msgid "Active" msgstr "Activa" #: js/ui/lookingGlass.js:810 msgid "Inactive" msgstr "Inactiva" #: js/ui/lookingGlass.js:812 msgid "Error" msgstr "Error" #: js/ui/lookingGlass.js:814 msgid "Out of date" msgstr "Caducada" #: js/ui/lookingGlass.js:816 msgid "Downloading" msgstr "Descargando" #: js/ui/lookingGlass.js:818 msgid "Deactivating" msgstr "Desactivando" #: js/ui/lookingGlass.js:820 msgid "Activating" msgstr "Activando" #: js/ui/lookingGlass.js:853 msgid "View Source" msgstr "Ver fuente" #: js/ui/lookingGlass.js:864 msgid "Web Page" msgstr "Página web" #: js/ui/main.js:277 msgid "System was put in unsafe mode" msgstr "El sistema se puso en modo no seguro" #: js/ui/main.js:278 msgid "Apps now have unrestricted access" msgstr "Las aplicaciones tienen ahora acceso sin restricciones" #: js/ui/main.js:338 msgid "Logged in as a privileged user" msgstr "Sesión iniciada como usuario con privilegios" #: js/ui/main.js:339 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" "Se debe evitar ejecutar una sesión como usuario con privilegios por motivos " "de seguridad. Si es posible, inicie sesión como un usuario normal." #: js/ui/main.js:387 msgid "Screen Lock disabled" msgstr "Pantalla de bloqueo desactivada" #: js/ui/main.js:388 msgid "Screen Locking requires the GNOME display manager" msgstr "La pantalla de bloqueo necesita el gestor de pantallas de GNOME" #. Translators: this is the string displayed in the header when a message #. source doesn't have a name #: js/ui/messageList.js:374 msgid "Unknown App" msgstr "Aplicación desconocida" #: js/ui/messageTray.js:326 js/ui/messageTray.js:328 msgid "Notification sound" msgstr "Sonido de notificación" #: js/ui/mpris.js:198 msgid "Unknown artist" msgstr "Artista desconocido" #: js/ui/mpris.js:208 msgid "Unknown title" msgstr "Título desconocido" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:328 msgid "Type to search" msgstr "Escribir para buscar" #: js/ui/overviewControls.js:392 msgid "Apps" msgstr "Aplicaciones" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:33 msgid "Overview" msgstr "Vista general" #: js/ui/padOsd.js:98 msgid "New shortcut…" msgstr "Atajo nuevo…" #: js/ui/padOsd.js:151 msgid "App defined" msgstr "Aplicación definida" #: js/ui/padOsd.js:152 msgid "Show on-screen help" msgstr "Mostrar la ayuda en pantalla" #: js/ui/padOsd.js:153 msgid "Switch monitor" msgstr "Cambiar monitor" #: js/ui/padOsd.js:154 msgid "Assign keystroke" msgstr "Asignar pulsación" #: js/ui/padOsd.js:223 msgid "Done" msgstr "Hecho" #: js/ui/padOsd.js:726 msgid "Edit…" msgstr "Editar…" #: js/ui/padOsd.js:773 msgid "None" msgstr "Nada" #: js/ui/padOsd.js:844 msgid "Press a button to configure" msgstr "Pulse un botón para configurar" #: js/ui/padOsd.js:845 msgid "Press Esc to exit" msgstr "Pulse Esc para salir" #: js/ui/padOsd.js:848 msgid "Press any key to exit" msgstr "Pulse cualquier tecla para salir" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:423 msgid "Activities" msgstr "Actividades" #: js/ui/panel.js:504 msgctxt "System menu in the top bar" msgid "System" msgstr "Sistema" #: js/ui/panel.js:678 msgid "Top Bar" msgstr "Barra superior" #: js/ui/quickSettings.js:188 msgid "Open menu" msgstr "Abrir menú" #: js/ui/runDialog.js:61 msgid "Run a Command" msgstr "Ejecutar un comando" #: js/ui/runDialog.js:76 msgid "Press ESC to close" msgstr "Pulse Esc para cerrar" #: js/ui/runDialog.js:241 msgid "Restart is not available on Wayland" msgstr "Reiniciar no está disponible en Wayland" #: js/ui/runDialog.js:246 msgid "Restarting…" msgstr "Reiniciando…" #: js/ui/screenShield.js:233 msgid "GNOME needs to lock the screen" msgstr "GNOME necesita bloquear la pantalla" #: js/ui/screenShield.js:274 js/ui/screenShield.js:667 msgid "Unable to lock" msgstr "No se pudo bloquear" #: js/ui/screenShield.js:275 js/ui/screenShield.js:668 msgid "Lock was blocked by an app" msgstr "Una aplicación impidió el bloqueo" #: js/ui/screenshot.js:1252 msgid "Selection" msgstr "Selección" #: js/ui/screenshot.js:1262 msgid "Area Selection" msgstr "Selección de área" #: js/ui/screenshot.js:1267 msgid "Screen" msgstr "Pantalla" #: js/ui/screenshot.js:1277 msgid "Screen Selection" msgstr "Selección de pantalla" #: js/ui/screenshot.js:1282 msgid "Window" msgstr "Ventana" #: js/ui/screenshot.js:1292 msgid "Window Selection" msgstr "Selección de ventana" #. Translators: entry in the window right click menu. #: js/ui/screenshot.js:1317 js/ui/status/system.js:111 js/ui/windowMenu.js:28 msgid "Take Screenshot" msgstr "Capturar la pantalla" #: js/ui/screenshot.js:1333 msgid "Record Screen" msgstr "Grabar la pantalla" #. Translators: since this string refers to an action, #. it needs to be phrased as a verb. #: js/ui/screenshot.js:1350 msgid "Capture" msgstr "Capturar" #: js/ui/screenshot.js:1372 msgid "Show Pointer" msgstr "Mostrar puntero" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1996 msgid "Screencasts" msgstr "Grabaciones de la pantalla" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast From 07-17-2013 10:00:46 PM" #: js/ui/screenshot.js:2001 #, no-c-format msgid "Screencast From %d %t" msgstr "Grabación de pantalla desde %d %t" #. Translators: notification title. #: js/ui/screenshot.js:2047 msgid "Screencast recorded" msgstr "Grabación de pantalla realizada" #. Translators: notification title. #: js/ui/screenshot.js:2060 msgid "Screencast failed to start" msgstr "La emisión de la pantalla ha fallado al empezar" #. Translators: notification title. #: js/ui/screenshot.js:2066 msgid "Screencast ended: Out of disk space" msgstr "La emisión de la pantalla ha terminado: no hay espacio en el disco" #. We can encourage user to try again on service crashes since the #. recorder will auto-blocklist the pipeline that crashed. #. Translators: notification title. #: js/ui/screenshot.js:2072 msgid "Screencast ended unexpectedly, please try again" msgstr "" "La emisión de la pantalla ha terminado de manera inesperada, inténtelo de " "nuevo" #. Translators: notification title. #: js/ui/screenshot.js:2075 msgid "Screencast ended unexpectedly" msgstr "La emisión de la pantalla ha terminado de manera inesperada" #. Translators: notification source name. #: js/ui/screenshot.js:2085 js/ui/screenshot.js:2327 msgid "Screenshot" msgstr "Captura de pantalla" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:2092 msgid "Click here to view the video." msgstr "Pulse aquí para ver el vídeo." #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:2100 js/ui/screenshot.js:2343 msgid "Show in Files" msgstr "Mostrar en Archivos" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2287 #, javascript-format msgid "Screenshot From %s" msgstr "Captura desde %s" #. Translators: notification title. #: js/ui/screenshot.js:2333 msgid "Screenshot captured" msgstr "Captura de pantalla realizada" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2335 msgid "You can paste the image from the clipboard." msgstr "Puede pegar la imagen desde el portapapeles." #: js/ui/screenshot.js:2391 js/ui/screenshot.js:2555 msgid "Screenshot taken" msgstr "Captura de pantalla realizada" #: js/ui/search.js:829 msgid "Searching…" msgstr "Buscando…" #: js/ui/search.js:831 msgid "No results" msgstr "No hay resultados" #: js/ui/search.js:962 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "%d más" msgstr[1] "%d más" #: js/ui/searchController.js:87 #: subprojects/extensions-app/data/ui/extensions-window.ui:73 msgid "Search" msgstr "Buscar" #: js/ui/shellEntry.js:21 msgid "Copy" msgstr "Copiar" #: js/ui/shellEntry.js:26 msgid "Paste" msgstr "Pegar" #: js/ui/shellEntry.js:78 msgid "Show Text" msgstr "Mostrar texto" #: js/ui/shellEntry.js:80 msgid "Hide Text" msgstr "Ocultar texto" #: js/ui/shellEntry.js:174 msgid "Caps lock is on" msgstr "Bloq. Mayús. está activ" #: js/ui/shellMountOperation.js:286 msgid "Hidden Volume" msgstr "Ocultar volumen" #: js/ui/shellMountOperation.js:289 msgid "Windows System Volume" msgstr "Volumen de sistema Windows" #: js/ui/shellMountOperation.js:292 msgid "Uses Keyfiles" msgstr "Usa archivos de claves" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:300 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead" msgstr "" "Para desbloquear un volumen que usa archivos de claves use la herramienta " "%s en su lugar" #: js/ui/shellMountOperation.js:304 msgid "" "You need an external utility like Disks to unlock a volume that uses " "keyfiles" msgstr "" "Necesita una utilidad externa como Discos para desbloquear un volumen " "que utiliza archivos clave" #: js/ui/shellMountOperation.js:312 msgid "PIM Number" msgstr "Número PIM" #: js/ui/shellMountOperation.js:371 msgid "Remember Password" msgstr "Recordar contraseña" #: js/ui/shellMountOperation.js:386 msgid "Unlock" msgstr "Desbloquear" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:400 #, javascript-format msgid "Open %s" msgstr "Abrir %s" #: js/ui/shellMountOperation.js:436 msgid "The PIM must be a number or empty" msgstr "El PIM debe ser un número o estar vacío" #: js/ui/status/accessibility.js:34 msgid "Accessibility" msgstr "Accesibilidad" #: js/ui/status/accessibility.js:44 msgid "High Contrast" msgstr "Contraste alto" #: js/ui/status/accessibility.js:47 msgid "Zoom" msgstr "Ampliación" #: js/ui/status/accessibility.js:54 msgid "Screen Reader" msgstr "Lector de pantalla" #: js/ui/status/accessibility.js:58 msgid "Screen Keyboard" msgstr "Teclado en pantalla" #: js/ui/status/accessibility.js:62 msgid "Visual Alerts" msgstr "Alertas visuales" #: js/ui/status/accessibility.js:66 msgid "Sticky Keys" msgstr "Teclas persistentes" #: js/ui/status/accessibility.js:70 msgid "Slow Keys" msgstr "Teclas lentas" #: js/ui/status/accessibility.js:74 msgid "Bounce Keys" msgstr "Rechazo de teclas" #: js/ui/status/accessibility.js:78 msgid "Mouse Keys" msgstr "Teclas del ratón" #: js/ui/status/accessibility.js:83 msgid "Accessibility Settings" msgstr "Configuración de accesibilidad" #: js/ui/status/accessibility.js:140 msgid "Large Text" msgstr "Texto grande" #: js/ui/status/autoRotate.js:14 msgid "Auto Rotate" msgstr "Rotar automáticamente" #: js/ui/status/backgroundApps.js:156 msgctxt "title" msgid "Background Apps" msgstr "Aplicaciones en segundo plano" #: js/ui/status/backgroundApps.js:171 msgid "Apps known to be running without a window" msgstr "Aplicaciones conocidas que se ejecutan sin ventana" #: js/ui/status/backgroundApps.js:182 msgid "App Settings" msgstr "Configuración de la aplicación" #: js/ui/status/backgroundApps.js:239 msgid "No Background Apps" msgstr "No hay aplicaciones en segundo plano" #: js/ui/status/backgroundApps.js:241 #, javascript-format msgid "%d Background App" msgid_plural "%d Background Apps" msgstr[0] "%d aplicación en segundo plano" msgstr[1] "%d aplicaciones en segundo plano" #: js/ui/status/backlight.js:39 msgid "Keyboard Brightness" msgstr "Brillo del teclado" #: js/ui/status/backlight.js:79 msgid "Off" msgstr "Desconectado" #: js/ui/status/backlight.js:80 msgid "Low" msgstr "Bajo" #: js/ui/status/backlight.js:81 msgid "High" msgstr "Alto" #: js/ui/status/backlight.js:147 js/ui/status/keyboard.js:879 msgid "Keyboard" msgstr "Teclado" #: js/ui/status/bluetooth.js:245 js/ui/status/network.js:360 msgid "Disconnect" msgstr "Desconectar" #: js/ui/status/bluetooth.js:262 js/ui/status/bluetooth.js:264 msgid "Bluetooth" msgstr "Bluetooth" #: js/ui/status/bluetooth.js:287 js/ui/status/network.js:1909 msgid "Bluetooth Settings" msgstr "Configuración de Bluetooth" #: js/ui/status/bluetooth.js:334 msgid "No available or connected devices" msgstr "No hay dispositivos disponibles o conectados" #: js/ui/status/bluetooth.js:335 msgid "Turn on Bluetooth to connect to devices" msgstr "Active el Bluetooth para conectarse a otros dispositivos" #. Translators: This is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:389 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d conectado" msgstr[1] "%d conectados" #: js/ui/status/brightness.js:32 msgid "Brightness" msgstr "Brillo" #: js/ui/status/darkMode.js:12 msgid "Dark Style" msgstr "Estilo oscuro" #: js/ui/status/dwellClick.js:15 msgid "Single Click" msgstr "Una sola pulsación" #: js/ui/status/dwellClick.js:20 msgid "Double Click" msgstr "Doble pulsación" #: js/ui/status/dwellClick.js:25 msgid "Drag" msgstr "Arrastrar" #: js/ui/status/dwellClick.js:30 msgid "Secondary Click" msgstr "Pulsación secundaria" #: js/ui/status/dwellClick.js:39 msgid "Dwell Click" msgstr "Pulsación al posarse" #: js/ui/status/keyboard.js:896 msgid "Show Keyboard Layout" msgstr "Mostrar la distribución del teclado" #: js/ui/status/location.js:337 msgid "Allow location access" msgstr "Permitir acceso a la ubicación" #. Translators: %s is an application name #: js/ui/status/location.js:339 #, javascript-format msgid "The app %s wants to access your location" msgstr "La aplicación %s quiere acceder a su ubicación" #: js/ui/status/location.js:349 msgid "Location access can be changed at any time from the privacy settings" msgstr "" "Los servicios de ubicación se pueden cambiar en cualquier momento desde la " "configuración de privacidads" #: js/ui/status/location.js:357 msgid "Deny Access" msgstr "Denegar acceso" #: js/ui/status/location.js:362 msgid "Grant Access" msgstr "Conceder acceso" #: js/ui/status/network.js:62 msgid "" msgstr "" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:354 #, javascript-format msgid "Disconnect %s" msgstr "Desconectar %s" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:356 #, javascript-format msgid "Connect to %s" msgstr "Conectar a %s" #: js/ui/status/network.js:1059 msgid "Secure" msgstr "Segura" #: js/ui/status/network.js:1059 msgid "Not secure" msgstr "No segura" #: js/ui/status/network.js:1060 #, javascript-format msgid "Signal strength %s%%" msgstr "Fuerza de la señal %s%%" #. translators: The first placeholder is the network name, the second and indication whether it is secure, and the last the signal strength indication #: js/ui/status/network.js:1062 #, javascript-format msgid "%s, %s, %s" msgstr "%s, %s, %s" #. Translators: %s is a network identifier #: js/ui/status/network.js:1164 #, javascript-format msgid "%s Hotspot" msgstr "Punto de acceso %s" #: js/ui/status/network.js:1435 #, javascript-format msgid "%d connected" msgid_plural "%d connected" msgstr[0] "%d conectado" msgstr[1] "%d conectados" #: js/ui/status/network.js:1533 js/ui/status/network.js:1549 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1534 msgid "VPN Settings" msgstr "Configuración de VPN" #: js/ui/status/network.js:1794 msgid "Wi–Fi" msgstr "Inalámbrica" #: js/ui/status/network.js:1796 msgid "All Networks" msgstr "Todas las redes" #: js/ui/status/network.js:1893 msgid "Wired Connections" msgstr "Conexiones cableadas" #: js/ui/status/network.js:1894 msgid "Wired Settings" msgstr "Configuración de red cableada" #: js/ui/status/network.js:1908 msgid "Bluetooth Tethers" msgstr "Conexiones Bluetooth compartidas" #. Translators: "Tether" from "Bluetooth Tether" #: js/ui/status/network.js:1915 msgid "Tether" msgstr "Compartir conexión" #: js/ui/status/network.js:1928 msgid "Mobile Connections" msgstr "Conexiones móviles" #: js/ui/status/network.js:1930 msgid "Mobile Broadband Settings" msgstr "Configuración de banda ancha móvil" #. Translators: "Mobile" from "Mobile Broadband" #: js/ui/status/network.js:1939 msgid "Mobile" msgstr "Móvil" #: js/ui/status/network.js:1973 msgid "Sign Into Wi–Fi Network" msgstr "Iniciar sesión en la red Wi-Fi" #: js/ui/status/network.js:2160 msgid "Connection failed" msgstr "Falló la conexión" #: js/ui/status/network.js:2161 msgid "Activation of network connection failed" msgstr "Falló la activación de la conexión de red" #: js/ui/status/nightLight.js:19 msgid "Night Light" msgstr "Luz nocturna" #: js/ui/status/powerProfiles.js:19 msgctxt "Power profile" msgid "Performance" msgstr "Rendimiento" #: js/ui/status/powerProfiles.js:24 msgctxt "Power profile" msgid "Balanced" msgstr "Balanceado" #: js/ui/status/powerProfiles.js:29 msgctxt "Power profile" msgid "Power Saver" msgstr "Ahorro de energía" #: js/ui/status/powerProfiles.js:39 js/ui/status/powerProfiles.js:69 msgid "Power Mode" msgstr "Modo de energía" #: js/ui/status/powerProfiles.js:71 msgid "Power Settings" msgstr "Configuración de energía" #: js/ui/status/remoteAccess.js:74 msgid "Stop Screencast" msgstr "Detener la grabación de la pantalla" #: js/ui/status/remoteAccess.js:144 msgid "Stop Screen Sharing" msgstr "Detener la compartición de la pantalla" #: js/ui/status/rfkill.js:99 msgid "Airplane Mode" msgstr "Modo avión" #: js/ui/status/system.js:168 msgid "Power Off Menu" msgstr "Menú Apagar" #: js/ui/status/system.js:176 msgid "Suspend" msgstr "Suspender" #: js/ui/status/system.js:181 msgid "Restart…" msgstr "Reiniciar…" #: js/ui/status/system.js:186 msgid "Power Off…" msgstr "Apagar…" #: js/ui/status/system.js:193 #: subprojects/extensions-app/data/ui/extensions-window.ui:124 msgid "Log Out…" msgstr "Cerrar la sesión…" #: js/ui/status/system.js:198 msgid "Switch User…" msgstr "Cambiar de usuario…" #: js/ui/status/system.js:242 msgctxt "action" msgid "Lock Screen" msgstr "Bloquear la pantalla" #: js/ui/status/thunderbolt.js:308 msgid "Unknown Thunderbolt device" msgstr "Dispositivo Thunderbolt desconocido" #: js/ui/status/thunderbolt.js:309 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" "Se ha detectado un dispositivo nuevo mientras estaba fuera. Desconéctelo y " "vuélvalo a conectar para empezar a usarlo." #: js/ui/status/thunderbolt.js:312 msgid "Unauthorized Thunderbolt device" msgstr "Dispositivo Thunderbolt no autorizado" #: js/ui/status/thunderbolt.js:313 msgid "" "New device has been detected and needs to be authorized by an administrator" msgstr "" "Se ha detectado un dispositivo nuevo y un administrador debe autorizarlo" #: js/ui/status/thunderbolt.js:319 msgid "Thunderbolt authorization error" msgstr "Error de autorización de Thunderbolt" #: js/ui/status/thunderbolt.js:320 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "No se pudo autorizar el dispositivo Thunderbolt: %s" #: js/ui/status/volume.js:218 msgid "Volume changed" msgstr "Volumen modificado" #: js/ui/status/volume.js:231 msgid "Unmute" msgstr "Dar voz" #: js/ui/status/volume.js:231 msgid "Mute" msgstr "Silenciar" #: js/ui/status/volume.js:286 msgid "Volume" msgstr "Volumen" #: js/ui/status/volume.js:302 msgid "Sound Output" msgstr "Salida de sonido" #: js/ui/status/volume.js:374 msgid "Sound Input" msgstr "Entrada de sonido" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:20 msgid "Mirror" msgstr "Espejo" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:29 msgid "Join Displays" msgstr "Unir pantallas" #. Translators: this is for using only external displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:39 msgid "External Only" msgstr "Sólo la externa" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:47 msgid "Built-in Only" msgstr "Sólo la integrada" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:378 msgid "%A %B %-d" msgstr "%A, %d de %B" #: js/ui/unlockDialog.js:384 msgid "Swipe up to unlock" msgstr "Deslizar para desbloquear" #: js/ui/unlockDialog.js:385 msgid "Click or press a key to unlock" msgstr "Pulse con el ratón o una tecla para desbloquear" #: js/ui/unlockDialog.js:568 msgid "Unlock Window" msgstr "Desbloquear ventana" #: js/ui/unlockDialog.js:577 msgid "Log in as another user" msgstr "Iniciar sesión como otro usuario" #: js/ui/welcomeDialog.js:47 #, javascript-format msgid "GNOME %s" msgstr "GNOME %s" #: js/ui/welcomeDialog.js:51 #, javascript-format msgid "Welcome to %s" msgstr "Bienvenido/a a %s" #: js/ui/welcomeDialog.js:52 msgid "If you want to learn your way around, check out the tour" msgstr "Si quiere aprender a moverse realice el tour" #: js/ui/welcomeDialog.js:61 msgid "Skip" msgstr "Omitir" #: js/ui/welcomeDialog.js:66 msgid "Take Tour" msgstr "Hacer el tour" #: js/ui/windowAttentionHandler.js:18 #, javascript-format msgid "“%s” is ready" msgstr "«%s» está preparado" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:68 msgid "Keep these display settings?" msgstr "¿Quiere mantener esta configuración de la pantalla?" #: js/ui/windowManager.js:78 msgid "Revert Settings" msgstr "Revertir configuración" #: js/ui/windowManager.js:83 msgid "Keep Changes" msgstr "Mantener cambios" #: js/ui/windowManager.js:103 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "La configuración se revertirá en %d segundo" msgstr[1] "La configuración se revertirá en %d segundos" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:500 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:40 msgid "Hide" msgstr "Ocultar" #: js/ui/windowMenu.js:47 msgid "Restore" msgstr "Restaurar" #: js/ui/windowMenu.js:51 msgid "Maximize" msgstr "Maximizar" #: js/ui/windowMenu.js:58 msgid "Move" msgstr "Mover" #: js/ui/windowMenu.js:78 msgid "Resize" msgstr "Redimensionar" #: js/ui/windowMenu.js:98 msgid "Always on Top" msgstr "Siempre encima" #: js/ui/windowMenu.js:117 msgid "Always on Visible Workspace" msgstr "Siempre en el área de trabajo visible" #: js/ui/windowMenu.js:131 msgid "Move to Workspace Left" msgstr "Mover al área de trabajo de la izquierda" #: js/ui/windowMenu.js:137 msgid "Move to Workspace Right" msgstr "Mover al área de trabajo de la derecha" #: js/ui/windowMenu.js:143 msgid "Move to Workspace Up" msgstr "Subir a un área de trabajo" #: js/ui/windowMenu.js:149 msgid "Move to Workspace Down" msgstr "Bajar a un área de trabajo" #: js/ui/windowMenu.js:167 msgid "Move to Monitor Up" msgstr "Mover a la pantalla de arriba" #: js/ui/windowMenu.js:176 msgid "Move to Monitor Down" msgstr "Mover a la pantalla de abajo" #: js/ui/windowMenu.js:185 msgid "Move to Monitor Left" msgstr "Mover a la pantalla de la izquierda" #: js/ui/windowMenu.js:194 msgid "Move to Monitor Right" msgstr "Mover a la pantalla de la derecha" #: js/ui/windowMenu.js:202 msgid "Close" msgstr "Cerrar" #: src/main.c:512 subprojects/extensions-tool/src/main.c:336 msgid "Print version" msgstr "Imprimir versión" #: src/main.c:518 msgid "Mode used by GDM for login screen" msgstr "Modo usado por GDM para la pantalla de inicio" #: src/main.c:524 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "" "Usar un modo específico, por ejemplo, «gdm» para la pantalla de inicio de " "sesión" #: src/main.c:530 msgid "List possible modes" msgstr "Listar los modos posibles" #: src/main.c:536 msgid "Force animations to be enabled" msgstr "Forzar animaciones para activar" #: src/shell-app.c:252 msgctxt "program" msgid "Unknown" msgstr "Desconocido" #: src/shell-app.c:503 #, c-format msgid "Failed to launch “%s”" msgstr "Falló al lanzar «%s»" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match" msgstr "Las contraseñas no coinciden" #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "La contraseña no puede estar vacía" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "El usuario rechazó el diálogo de autenticación" #: src/st/st-icon-theme.c:1865 #, c-format msgid "Icon '%s' not present in theme %s" msgstr "El icono «%s» no está en el tema %s" #: src/st/st-icon-theme.c:3454 src/st/st-icon-theme.c:3757 msgid "Failed to load icon" msgstr "Falló al cargar el icono" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 msgid "Manage your GNOME Extensions" msgstr "Gestionar sus extensiones de GNOME Shell" #. developer_name tag deprecated with Appstream 1.0 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:20 msgid "The GNOME Project" msgstr "El Proyecto GNOME" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:52 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" "Extensiones de GNOME gestiona las actualizaciones de las extensiones, " "configurando sus preferencias y quitando o desactivando las que no quiera." #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:64 msgid "Main Window" msgstr "Ventana principal" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:68 msgid "Available Updates" msgstr "Actualizaciones disponibles" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:72 msgid "Search View" msgstr "Vista de búsqueda" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "Configurar las extensiones de GNOME Shell" #: subprojects/extensions-app/js/extensionManager.js:237 #, javascript-format msgid "" "The installed version of this extension (%s) is incompatible with the " "current version of GNOME (%s). The extension has been disabled." msgstr "" "La versión instalada de esta extensión (%s) no es compatible con la versión " "de GNOME actual (%s). La extensión se ha desactivado." #: subprojects/extensions-app/js/extensionManager.js:238 #, javascript-format msgid "" "The installed version of this extension is incompatible with the current " "version of GNOME (%s). The extension has been disabled." msgstr "" "La versión instalada de esta extensión no es compatible con la versión de " "GNOME actual (%s). La extensión se ha desactivado." #: subprojects/extensions-app/js/extensionManager.js:242 msgid "" "An error has occurred in this extension. This could cause issues elsewhere " "in the system. It is recommended to turn the extension off until the error " "is resolved." msgstr "" "Ha ocurrido un error en esta extensión. Esto podría causar problemas en " "otras partes del sistema. Se recomienda desactivar la extensión hasta que se " "resuelva el error." #. translators: Details for an extension error #: subprojects/extensions-app/js/extensionManager.js:248 msgid "Error details:" msgstr "Detalles del error:" #: subprojects/extensions-app/js/extensionRow.js:82 #, javascript-format msgid "Version %s" msgstr "Versión %s" #: subprojects/extensions-app/js/extensionsWindow.js:113 #, javascript-format msgid "Remove “%s”?" msgstr "¿Quitar «%s»?" #: subprojects/extensions-app/js/extensionsWindow.js:114 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "" "Si quita la extensión necesitará volver a descargarla si quiere activarla de " "nuevo" #: subprojects/extensions-app/js/extensionsWindow.js:117 msgid "_Cancel" msgstr "C_ancelar" #: subprojects/extensions-app/js/extensionsWindow.js:118 msgid "_Remove" msgstr "Quita_r" #: subprojects/extensions-app/js/extensionsWindow.js:158 msgid "translator-credits" msgstr "" "Daniel Mustieles , 2010-2024\n" "Benjamín Valero Espinosa , 2011\n" "Jorge González , 2009, 2010, 2011" #: subprojects/extensions-app/js/extensionsWindow.js:203 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "la próxima vez que inicie sesión se actualizará %d extensión" msgstr[1] "la próxima vez que inicie sesión se actualizarán %d extensiones" #: subprojects/extensions-app/data/ui/extension-row.ui:22 msgid "Error Details" msgstr "Detalles del error" #: subprojects/extensions-app/data/ui/extension-row.ui:62 msgid "Updates Details" msgstr "Detalles de la actualización" #: subprojects/extensions-app/data/ui/extension-row.ui:72 msgid "" "A new version of this extension is ready and will be loaded on next login." msgstr "" "Hay una nueva versión de esta extensión y se cargará en el próximo inicio de " "sesión." #: subprojects/extensions-app/data/ui/extension-row.ui:104 msgid "Extension Details" msgstr "Detalles de la extensión" #: subprojects/extensions-app/data/ui/extension-row.ui:192 msgid "_Website" msgstr "Página _Web" #: subprojects/extensions-app/data/ui/extension-row.ui:219 msgid "_Settings" msgstr "C_onfiguración" #: subprojects/extensions-app/data/ui/extension-row.ui:246 msgid "_Remove…" msgstr "Quita_r…" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Keyboard Shortcuts" msgstr "Atajos del teclado" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "Acerca de extensiones" #: subprojects/extensions-app/data/ui/extensions-window.ui:64 msgid "Main Menu" msgstr "Menú principal" #: subprojects/extensions-app/data/ui/extensions-window.ui:106 msgid "Search extensions" msgstr "Buscar extensiones" #: subprojects/extensions-app/data/ui/extensions-window.ui:134 msgid "_Extensions" msgstr "_Extensiones" #: subprojects/extensions-app/data/ui/extensions-window.ui:139 msgid "More Information" msgstr "Más información" #: subprojects/extensions-app/data/ui/extensions-window.ui:151 msgid "" "Extensions can cause performance and stability issues. It is recommended to " "disable all extensions if you experience problems with your system." msgstr "" "Las extensiones pueden provocar problemas de rendimiento y estabilidad. Se " "recomienda que las desactive si tiene problemas con su sistema." #: subprojects/extensions-app/data/ui/extensions-window.ui:178 msgid "User Extensions" msgstr "Extensiones del usuario" #: subprojects/extensions-app/data/ui/extensions-window.ui:198 msgid "System Extensions" msgstr "Extensiones del sistema" #: subprojects/extensions-app/data/ui/extensions-window.ui:233 msgid "Search Results" msgstr "Resultados de búsqueda" #: subprojects/extensions-app/data/ui/extensions-window.ui:252 msgid "No Results Found" msgstr "No se encontraron resultados" #: subprojects/extensions-app/data/ui/extensions-window.ui:253 msgid "Try a different search" msgstr "Pruebe a hacer una búsqueda diferente" #: subprojects/extensions-app/data/ui/extensions-window.ui:264 msgid "No Installed Extensions" msgstr "No hay extensiones instaladas" #: subprojects/extensions-app/data/ui/extensions-window.ui:265 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" "Para buscar y añadir extensiones visite extensions.gnome.org." #: subprojects/extensions-app/data/ui/extensions-window.ui:276 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." #: subprojects/extensions-app/data/ui/help-overlay.ui:9 msgctxt "shortcut window" msgid "General" msgstr "General" #: subprojects/extensions-app/data/ui/help-overlay.ui:12 msgctxt "shortcut window" msgid "Open Menu" msgstr "Abrir menú" #: subprojects/extensions-app/data/ui/help-overlay.ui:18 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Conmutar la búsqueda" #: subprojects/extensions-app/data/ui/help-overlay.ui:24 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Mostrar atajos" #: subprojects/extensions-app/data/ui/help-overlay.ui:30 msgctxt "shortcut window" msgid "Quit" msgstr "Salir" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:284 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "Se ha creado correctamente la nueva extensión en %s.\n" #: subprojects/extensions-tool/src/command-create.c:376 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" "El nombre debe ser una cadena (descriptiva) muy corta.\n" "Algunos ejemplos: %s" #: subprojects/extensions-tool/src/command-create.c:382 #: subprojects/extensions-tool/src/main.c:243 msgid "Name" msgstr "Nombre" #: subprojects/extensions-tool/src/command-create.c:396 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" "La descripción es una única frase para explicar qué hace su extensión.\n" "Algunos ejemplos: %s" #: subprojects/extensions-tool/src/command-create.c:402 #: subprojects/extensions-tool/src/main.c:246 msgid "Description" msgstr "Descripción" #: subprojects/extensions-tool/src/command-create.c:416 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" "El UUID es un identificador único global para su extensión.\n" "Normalmente debe estar en formato de dirección de correo electrónico " "(pulsarparaenfocar@usuario.ejemplo.com)\n" #: subprojects/extensions-tool/src/command-create.c:443 msgid "Choose one of the available templates:\n" msgstr "Elija una de las plantillas disponibles:\n" #: subprojects/extensions-tool/src/command-create.c:457 msgid "Template" msgstr "Plantilla" #: subprojects/extensions-tool/src/command-create.c:515 msgid "The unique identifier of the new extension" msgstr "El identificador único de la nueva extensión" #: subprojects/extensions-tool/src/command-create.c:518 msgid "NAME" msgstr "NOMBRE" #: subprojects/extensions-tool/src/command-create.c:519 msgid "The user-visible name of the new extension" msgstr "El nombre visible por el usuario de esta extensión" #: subprojects/extensions-tool/src/command-create.c:521 msgid "DESCRIPTION" msgstr "DESCRIPCIÓN" #: subprojects/extensions-tool/src/command-create.c:523 msgid "A short description of what the extension does" msgstr "Una breve descripción de qué hace la extensión" #: subprojects/extensions-tool/src/command-create.c:525 #: subprojects/extensions-tool/src/command-pack.c:455 msgid "DOMAIN" msgstr "DOMINIO" #: subprojects/extensions-tool/src/command-create.c:527 msgid "The gettext domain used by the extension" msgstr "El dominio de gettext que usar por la extensión" #: subprojects/extensions-tool/src/command-create.c:529 #: subprojects/extensions-tool/src/command-pack.c:448 msgid "SCHEMA" msgstr "ESQUEMA" #: subprojects/extensions-tool/src/command-create.c:531 msgid "The GSettings schema used by the extension" msgstr "El esquema de GSettings usado por la extensión" #: subprojects/extensions-tool/src/command-create.c:534 msgid "TEMPLATE" msgstr "PLANTILLA" #: subprojects/extensions-tool/src/command-create.c:535 msgid "The template to use for the new extension" msgstr "La plantilla que usar para la nueva extensión" #: subprojects/extensions-tool/src/command-create.c:538 msgid "Include prefs.js template" msgstr "Incluir la plantilla prefs.js" #: subprojects/extensions-tool/src/command-create.c:544 msgid "Enter extension information interactively" msgstr "Introduzca la información de la extensión interactivamente" #: subprojects/extensions-tool/src/command-create.c:552 msgid "Create a new extension" msgstr "Crear una extensión nueva" #: subprojects/extensions-tool/src/command-create.c:570 #: subprojects/extensions-tool/src/command-list.c:190 msgid "Unknown arguments" msgstr "Argumentos desconocidos" #: subprojects/extensions-tool/src/command-create.c:595 msgid "UUID, name and description are required" msgstr "Se necesita el UUID, el nombre y la descripción" #: subprojects/extensions-tool/src/command-disable.c:62 #: subprojects/extensions-tool/src/command-enable.c:62 #, c-format msgid "Extension “%s” does not exist\n" msgstr "La extensión «%s» no existe\n" #: subprojects/extensions-tool/src/command-disable.c:98 msgid "Disable an extension" msgstr "Desactivar una extensión" #: subprojects/extensions-tool/src/command-disable.c:116 #: subprojects/extensions-tool/src/command-enable.c:116 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "No se ha especificado el UUID" #: subprojects/extensions-tool/src/command-disable.c:121 #: subprojects/extensions-tool/src/command-enable.c:121 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "Se ha proporcionado más de un UUID" #: subprojects/extensions-tool/src/command-enable.c:98 msgid "Enable an extension" msgstr "Activar una extensión" #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:66 #: subprojects/extensions-tool/src/main.c:150 msgid "Failed to connect to GNOME Shell\n" msgstr "Falló al conectar a GNOME Shell\n" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:159 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "La extensión «%s» no existe\n" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "Mostrar información de las extensiones" #: subprojects/extensions-tool/src/command-install.c:190 msgid "Overwrite an existing extension" msgstr "Sobrescribir una extensión que ya exista" #: subprojects/extensions-tool/src/command-install.c:192 msgid "EXTENSION_BUNDLE" msgstr "EXTENSION_BUNDLE" #: subprojects/extensions-tool/src/command-install.c:201 msgid "Install an extension bundle" msgstr "Instalar un conjunto de extensiones" #: subprojects/extensions-tool/src/command-install.c:219 msgid "No extension bundle specified" msgstr "No se ha especificado un conjunto de extensiones" #: subprojects/extensions-tool/src/command-install.c:225 msgid "More than one extension bundle specified" msgstr "Se ha especificado más de un conjunto de extensiones" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show user-installed extensions" msgstr "Mostrar las extensiones de usuario instaladas" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show system-installed extensions" msgstr "Mostrar las extensiones del sistema instaladas" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Show enabled extensions" msgstr "Mostrar extensiones activadas" #: subprojects/extensions-tool/src/command-list.c:149 msgid "Show disabled extensions" msgstr "Mostrar extensiones desactivadas" #: subprojects/extensions-tool/src/command-list.c:152 msgid "Show extensions in active state" msgstr "Mostrar extensiones activadas" #: subprojects/extensions-tool/src/command-list.c:155 msgid "Show extensions in inactive state" msgstr "Mostrar extensiones desactivadas" #: subprojects/extensions-tool/src/command-list.c:158 msgid "Show extensions with preferences" msgstr "Mostrar extensiones con preferencias" #: subprojects/extensions-tool/src/command-list.c:161 msgid "Show extensions with updates" msgstr "Mostrar extensiones con actualizaciones" #: subprojects/extensions-tool/src/command-list.c:164 msgid "Print extension details" msgstr "Mostrar detalles de la extensión" #: subprojects/extensions-tool/src/command-list.c:172 msgid "List installed extensions" msgstr "Listar las extensiones instaladas" #: subprojects/extensions-tool/src/command-pack.c:444 msgid "FILE" msgstr "ARCHIVO" #: subprojects/extensions-tool/src/command-pack.c:445 msgid "Additional source to include in the bundle" msgstr "Fuente adicional que incluir en el conjunto" #: subprojects/extensions-tool/src/command-pack.c:449 msgid "A GSettings schema that should be included" msgstr "Se debe incluir un esquema de GSettings" #: subprojects/extensions-tool/src/command-pack.c:451 #: subprojects/extensions-tool/src/command-pack.c:462 msgid "DIRECTORY" msgstr "CARPETA" #: subprojects/extensions-tool/src/command-pack.c:453 msgid "The directory where translations are found" msgstr "La carpeta donde están las traducciones" #: subprojects/extensions-tool/src/command-pack.c:457 msgid "The gettext domain to use for translations" msgstr "El dominio de gettext que usar para las traducciones" #: subprojects/extensions-tool/src/command-pack.c:460 msgid "Overwrite an existing pack" msgstr "Sobrescribir un paquete existente" #: subprojects/extensions-tool/src/command-pack.c:464 msgid "The directory where the pack should be created" msgstr "La carpeta donde se debe crear el paquete" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "SOURCE_DIRECTORY" msgstr "CARPETA_FUENTE" #: subprojects/extensions-tool/src/command-pack.c:475 msgid "Create an extension bundle" msgstr "Crear un conjunto de extensiones" #: subprojects/extensions-tool/src/command-pack.c:495 msgid "More than one source directory specified" msgstr "Se ha especificado más de una carpeta fuente" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "La extensión «%s» no tiene opciones\n" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "Falló al abrir las preferencias para la extensión «%s»: %s\n" #: subprojects/extensions-tool/src/command-prefs.c:87 msgid "Opens extension preferences" msgstr "abre las preferencias de la extensión" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "Restablecer una extensión" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "No se pueden desinstalar extensiones del sistema\n" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "Falló al desinstalar «%s»\n" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "Desinstalar una extensión" #: subprojects/extensions-tool/src/main.c:76 msgid "Do not print error messages" msgstr "No mostrar mensajes de errores" #: subprojects/extensions-tool/src/main.c:249 msgid "Path" msgstr "Ruta" #: subprojects/extensions-tool/src/main.c:252 msgid "URL" msgstr "URL" #: subprojects/extensions-tool/src/main.c:255 msgid "Original author" msgstr "Autor original" #: subprojects/extensions-tool/src/main.c:261 #: subprojects/extensions-tool/src/main.c:263 #: subprojects/extensions-tool/src/main.c:265 msgid "Version" msgstr "Versión" #: subprojects/extensions-tool/src/main.c:268 msgid "Enabled" msgstr "Activado" #: subprojects/extensions-tool/src/main.c:268 msgid "Yes" msgstr "Sí" #: subprojects/extensions-tool/src/main.c:268 msgid "No" msgstr "No" #: subprojects/extensions-tool/src/main.c:271 msgid "State" msgstr "Estado" #: subprojects/extensions-tool/src/main.c:309 msgid "“version” takes no arguments" msgstr "«version» no lleva argumentos" #: subprojects/extensions-tool/src/main.c:311 #: subprojects/extensions-tool/src/main.c:331 msgid "Usage:" msgstr "Uso:" #: subprojects/extensions-tool/src/main.c:314 msgid "Print version information and exit." msgstr "Mostrar información de la versión y salir." #: subprojects/extensions-tool/src/main.c:329 #: subprojects/extensions-tool/src/main.c:332 msgid "COMMAND" msgstr "COMANDO" #: subprojects/extensions-tool/src/main.c:332 msgid "[ARGS…]" msgstr "[ARGS…]" #: subprojects/extensions-tool/src/main.c:334 msgid "Commands:" msgstr "Comandos:" #: subprojects/extensions-tool/src/main.c:335 msgid "Print help" msgstr "Mostrar ayuda" #: subprojects/extensions-tool/src/main.c:337 msgid "Enable extension" msgstr "Activar extensión" #: subprojects/extensions-tool/src/main.c:338 msgid "Disable extension" msgstr "Desactivar extensión" #: subprojects/extensions-tool/src/main.c:339 msgid "Reset extension" msgstr "Restablecer extensión" #: subprojects/extensions-tool/src/main.c:340 msgid "Uninstall extension" msgstr "Desinstalar extensión" #: subprojects/extensions-tool/src/main.c:341 msgid "List extensions" msgstr "Listar extensiones" #: subprojects/extensions-tool/src/main.c:342 #: subprojects/extensions-tool/src/main.c:343 msgid "Show extension info" msgstr "Mostrar información de la extensión" #: subprojects/extensions-tool/src/main.c:344 msgid "Open extension preferences" msgstr "Abrir las preferencias de la extensión" #: subprojects/extensions-tool/src/main.c:345 msgid "Create extension" msgstr "Crear extensión" #: subprojects/extensions-tool/src/main.c:346 msgid "Package extension" msgstr "Extensión del paquete" #: subprojects/extensions-tool/src/main.c:347 msgid "Install extension bundle" msgstr "Instalar conjunto de extensiones" #: subprojects/extensions-tool/src/main.c:349 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "Use «%s» para obtener ayuda detallada.\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "Plano" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "Una extensión vacía" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "Indicador" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "Añadir un icono a la barra superior" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:4 msgid "Quick Settings Item" msgstr "Elemento de configuración rápida" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:5 msgid "Add an item to quick settings" msgstr "Añadir un elemento de configuración rápida" #. translators: #. * The device has been disabled #: subprojects/gvc/gvc-mixer-control.c:1872 msgid "Disabled" msgstr "Desactivado" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1879 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u salida" msgstr[1] "%u salidas" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1889 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u entrada" msgstr[1] "%u entradas" #: subprojects/gvc/gvc-mixer-control.c:2872 msgid "System Sounds" msgstr "Sonidos del sistema" #~ msgid "Stop conflicting session dialog closed" #~ msgstr "Detener el diálogo de sesión conflictiva cerrado" #, javascript-format #~ msgid "Try to login again to start a session for user %s." #~ msgstr "Intente iniciar sesión de nuevo para empezar una sesión para %s" #~ msgid "Move Titlebar Onscreen" #~ msgstr "Mover la barra de título a la pantalla" #, javascript-format #~ msgid "%s is now known as %s" #~ msgstr "Ahora %s se llama %s" #~ msgid "Network Manager" #~ msgstr "Gestor de la red" #~ msgid "Disabling" #~ msgstr "Desactivando" #~ msgid "Enabling" #~ msgstr "Activando" #, javascript-format #~ msgid "%d %%" #~ msgstr "%d %%" #~ msgid "Thunderbolt" #~ msgstr "Thunderbolt" #~ msgid "No Thanks" #~ msgstr "No gracias" #~ msgid "No Matches" #~ msgstr "No hay coincidencias" #~ msgid "The extension had an error" #~ msgstr "La extensión contiene un error" #~ msgid "The extension can be updated" #~ msgstr "La extensión se puede con actualizar" #~ msgid "Help" #~ msgstr "Ayuda" #~ msgid "Manually Installed" #~ msgstr "Instalada manualmente" #~ msgid "Built-In" #~ msgstr "Integrada" #~ msgid "Extension Updates Ready" #~ msgstr "Actualizaciones de extensiones disponibles" #~ msgid "Screenshot / Screencast" #~ msgstr "Captura/grabación de pantalla" #~ msgid "Power Profiles" #~ msgstr "Perfiles de energía" #~ msgid "" #~ "Whether the default Bluetooth adapter had set up devices associated to it" #~ msgstr "" #~ "Indica si el adaptador Bluetooth predeterminado tiene dispositivos " #~ "asociados configurados" #~ msgid "" #~ "The shell will only show a Bluetooth menu item if a Bluetooth adapter is " #~ "powered, or if there were devices set up associated with the default " #~ "adapter. This will be reset if the default adapter is ever seen not to " #~ "have devices associated to it." #~ msgstr "" #~ "La shell sólo mostrará un menú de Bluetooth si hay conectado un adaptador " #~ "de Bluetooth, o si hay dispositivos asociados configurados con el " #~ "adaptador predeterminado. Esto se restablecerá si se ve que el adaptador " #~ "predeterminado no tiene dispositivos asociados." #~ msgid "Attach modal dialog to the parent window" #~ msgstr "Acoplar un diálogo modal a la ventana padre" #~ msgid "" #~ "This key overrides the key in org.gnome.mutter when running GNOME Shell." #~ msgstr "" #~ "Esta clave sobrescribe la clave en org.gnome.mutter al ejecutar GNOME " #~ "Shell." #~ msgid "Enable edge tiling when dropping windows on screen edges" #~ msgstr "" #~ "Activar el mosaico en los bordes al arrastrar ventanas a los bordes de la " #~ "ventana" #~ msgid "Workspaces are managed dynamically" #~ msgstr "Las áreas de trabajo se gestionan dinámicamente" #~ msgid "Workspaces only on primary monitor" #~ msgstr "Áreas de trabajo solo en la pantalla principal" #~ msgid "Delay focus changes in mouse mode until the pointer stops moving" #~ msgstr "" #~ "Retardo al cambiar el foco del ratón hasta que el puntero deja de moverse" #~ msgid "Region & Language Settings" #~ msgstr "Configuración de región e idioma" #~ msgid "Applications" #~ msgstr "Aplicaciones" #, javascript-format #~ msgid "Unable to start %s" #~ msgstr "No se puede iniciar %s" #, javascript-format #~ msgid "Couldn’t find the %s application" #~ msgstr "No se pudo encontrar la aplicación %s" #~ msgid "Evolution Calendar" #~ msgstr "Calendario de Evolution" #~ msgid "Log Out" #~ msgstr "Cerrar la sesión" #, javascript-format #~ msgid "%s Off" #~ msgstr "%s apagada" #, javascript-format #~ msgid "%s Connected" #~ msgstr "%s conectada" #, javascript-format #~ msgid "%s Unmanaged" #~ msgstr "%s sin gestionar" #, javascript-format #~ msgid "%s Connecting" #~ msgstr "Conectando %s" #, javascript-format #~ msgid "%s Requires Authentication" #~ msgstr "%s requiere autenticación" #, javascript-format #~ msgid "Firmware Missing For %s" #~ msgstr "Falta el «firmware» para %s" #, javascript-format #~ msgid "%s Unavailable" #~ msgstr "%s no disponible" #, javascript-format #~ msgid "%s Connection Failed" #~ msgstr "Falló la conexión %s" #, javascript-format #~ msgid "%s Hardware Disabled" #~ msgstr "Hardware %s desactivado" #, javascript-format #~ msgid "%s Disabled" #~ msgstr "%s desactivado" #~ msgid "Connect to Internet" #~ msgstr "Conectar a Internet" #~ msgid "Airplane Mode is On" #~ msgstr "El modo avión está activado" #~ msgid "Wi-Fi is disabled when airplane mode is on." #~ msgstr "La Wi-Fi se desactiva cuando se activa el modo avión." #~ msgid "Turn Off Airplane Mode" #~ msgstr "Apagar el modo avión" #~ msgid "Wi-Fi is Off" #~ msgstr "La Wi-Fi está desactivada" #~ msgid "Wi-Fi needs to be turned on in order to connect to a network." #~ msgstr "Se debe activar la Wi-Fi para poder conectarse a la red." #~ msgid "Turn On Wi-Fi" #~ msgstr "Activar la Wi-Fi" #~ msgid "Select a network" #~ msgstr "Seleccionar una red" #~ msgid "Use hardware switch to turn off" #~ msgstr "Usar el interruptor hardware para apagar" #~ msgid "Select Network" #~ msgstr "Seleccionar red" #~ msgid "Wi-Fi Settings" #~ msgstr "Configuración de Wi-Fi" #, javascript-format #~ msgid "%s Not Connected" #~ msgstr "%s no conectado" #~ msgid "unknown" #~ msgstr "desconocido" #~ msgid "connecting…" #~ msgstr "conectando…" #~ msgid "authentication required" #~ msgstr "se necesita autenticación" #~ msgid "connection failed" #~ msgstr "falló la conexión" #~ msgid "VPN Off" #~ msgstr "VPN apagada" #~ msgid "Network Settings" #~ msgstr "Configuración de la red" #, javascript-format #~ msgid "%s Wi-Fi Connection" #~ msgid_plural "%s Wi-Fi Connections" #~ msgstr[0] "%s conexión inalámbrica" #~ msgstr[1] "%s conexiones inalámbricas" #~ msgid "Lock" #~ msgstr "Bloquear" #~ msgid "Power Off / Log Out" #~ msgstr "Apagar / cerrar sesión" #~ msgid "Bluetooth On" #~ msgstr "Bluetooth encendido" #~ msgid "Bluetooth Off" #~ msgstr "Bluetooth apagado" #~ msgid "Location In Use" #~ msgstr "Ubicación en uso" #~ msgid "Location Disabled" #~ msgstr "Ubicación desactivada" #~ msgid "Night Light Disabled" #~ msgstr "Luz nocturna desactivada" #~ msgid "Resume" #~ msgstr "Reanudar" #~ msgid "Disable Until Tomorrow" #~ msgstr "Desactivar hasta mañana" #~ msgid "Fully Charged" #~ msgstr "Cargada completamente" #~ msgid "Not Charging" #~ msgstr "No está cargando" #~ msgid "Estimating…" #~ msgstr "Estimando…" #, javascript-format #~ msgid "%d∶%02d Remaining (%d %%)" #~ msgstr "%d∶%02d queda (%d %%)" #, javascript-format #~ msgid "%d∶%02d Until Full (%d %%)" #~ msgstr "%d∶%02d para la carga completa (%d %%)" #~ msgid "Screen is Being Shared" #~ msgstr "Se está compartiendo la pantalla" #~ msgid "Turn off" #~ msgstr "Apagar" #~ msgid "Airplane Mode On" #~ msgstr "Modo avión activado" #~ msgid "Show screenshot UI" #~ msgstr "Mostrar IU de captura de pantalla" #~ msgid "Remove from Favorites" #~ msgstr "Quitar de los favoritos" #~ msgid "Add to Favorites" #~ msgstr "Añadir a los favoritos" #~ msgid "Screen Recording in Progress" #~ msgstr "Grabación de pantalla en curso" #~ msgid "Stop" #~ msgstr "Parada" #~ msgid "Author" #~ msgstr "Autor" #~ msgid "Warning" #~ msgstr "Advertencia" #~ msgid "" #~ "Extensions can cause system issues, including performance problems. If " #~ "you encounter problems with your system, it is recommended to disable all " #~ "extensions." #~ msgstr "" #~ "Las extensiones pueden causar problemas en el sistema, incluso problemas " #~ "de rendimiento. Si tiene problemas con sus sistema se recomienda " #~ "desactivar todas las extensiones." #~ msgid "Enable introspection API" #~ msgstr "Activar la introspección de API" #~ msgid "" #~ "Enables a D-Bus API that allows to introspect the application state of " #~ "the shell." #~ msgstr "" #~ "Activa una API de D-Bus que permite la introspección del estado de la " #~ "aplicación de la shell." #~ msgid "Failed to connect to GNOME Shell" #~ msgstr "Falló al conectar a GNOME Shell" #~ msgid "Minimize" #~ msgstr "Minimizar" #~ msgid "Unmaximize" #~ msgstr "Desmaximizar" #~ msgid "App Picker View" #~ msgstr "Visor del selector de aplicaciones" #~ msgid "Index of the currently selected view in the application picker." #~ msgstr "" #~ "Índice de la vista seleccionada actualmente en el selector de " #~ "aplicaciones." #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d" #~ msgstr "%A, %d de %B" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d, %Y" #~ msgstr "%A, %d de %B de %Y" #~ msgid "Frequently used applications will appear here" #~ msgstr "Las aplicaciones usadas frecuentemente aparecerán aquí" #~ msgid "Frequent" #~ msgstr "Frecuentes" #~ msgid "All" #~ msgstr "Todas" #~ msgid "Copy Error" #~ msgstr "Copiar error" #~ msgid "On" #~ msgstr "Encendido" #~| msgid "Username: " #~ msgid "Username…" #~ msgstr "Nombre de usuario…" #~ msgid "Password: " #~ msgstr "Contraseña: " #~ msgid "Enter Password…" #~ msgstr "Introduzca la contraseña…" #~ msgid "Next" #~ msgstr "Siguiente" #~ msgctxt "button" #~ msgid "Sign In" #~ msgstr "Iniciar sesión" #~ msgid "%A, %B %d" #~ msgstr "%A, %d de %B" #~ msgid "%d new message" #~ msgid_plural "%d new messages" #~ msgstr[0] "%d mensaje nuevo" #~ msgstr[1] "%d mensajes nuevos" #~ msgid "Logout…" #~ msgstr "Cerrar sesión…" #~ msgid "org.gnome.Extensions" #~ msgstr "org.gnome.Extensions" #~ msgid "Browse in Software" #~ msgstr "Buscar en Software" #~ msgid "Password:" #~ msgstr "Contraseña:" #~ msgid "Type again:" #~ msgstr "Escriba de nuevo:" #~ msgid "Authentication required by wireless network" #~ msgstr "La red inalámbrica requiere autenticación" #~ msgid "Mobile broadband network password" #~ msgstr "Contraseña de la red de banda ancha móvil" #~ msgctxt "search-result" #~ msgid "Lock Orientation" #~ msgstr "Bloquear la orientación" #~ msgid "Rename" #~ msgstr "Renombrar" #~ msgid "Account Settings" #~ msgstr "Configuración de la cuenta" #~ msgid "Orientation Lock" #~ msgstr "Bloqueo de orientación" #~ msgid "" #~ "Keybinding that pauses and resumes all running tweens, for debugging " #~ "purposes" #~ msgstr "" #~ "Asociación de teclas que pausa y reanuda los «tweens» en ejecución, para " #~ "depuración." #~ msgid "Which keyboard to use" #~ msgstr "Qué teclado usar" #~ msgid "The type of keyboard to use." #~ msgstr "El tipo de teclado que usar." #~ msgid "toggle-switch-us" #~ msgstr "toggle-switch-intl" #~ msgid "network-workgroup" #~ msgstr "network-workgroup" #~ msgid "There was an error loading the preferences dialog for %s:" #~ msgstr "Hubo un error al lanzar el diálogo de preferencias para %s:" #~ msgid "%s all day." #~ msgstr "%s todo el día." #~ msgid "%s, then %s later." #~ msgstr "%s, luego %s." #~ msgid "%s, then %s, followed by %s later." #~ msgstr "%s, luego %s seguido de %s." #~ msgid "Feels like %s." #~ msgstr "Sensación térmica de %s." #~| msgid "Log Out" #~ msgctxt "search-result" #~ msgid "Log out" #~ msgstr "Cerrar la sesión" #~| msgid "Switch User" #~ msgctxt "search-result" #~ msgid "Switch user" #~ msgstr "Cambiar de usuario" #~ msgid "Hide tray" #~ msgstr "Ocultar bandeja" #~ msgid "Status Icons" #~ msgstr "Iconos de estado" #~ msgid "Events" #~ msgstr "Eventos" #~ msgid "Media" #~ msgstr "Medios" #~ msgid "%d x %d" #~ msgstr "%d x %d" #~ msgid "Web Authentication Redirect" #~ msgstr "Redirección para autenticación web" #~ msgid "Show the week date in the calendar" #~ msgstr "Mostrar la fecha de la semana en el calendario" #~ msgid "If true, display the ISO week date in the calendar." #~ msgstr "Si es cierta, muestra la fecha de semana ISO en el calendario." #~ msgid "Use as Internet connection" #~ msgstr "Usar como conexión a Internet" #~ msgid "%s is requesting access to your location." #~ msgstr "%s solicita acceso a su ubicación." #~ msgid "GNOME Shell (wayland compositor)" #~ msgstr "GNOME Shell (composición wayland)" #~ msgid "%d Connected Device" #~ msgid_plural "%d Connected Devices" #~ msgstr[0] "%d dispositivo conectado" #~ msgstr[1] "%d dispositivos conectados" #~ msgid "UPS" #~ msgstr "SAI" #~ msgid "Battery" #~ msgstr "Batería" #~ msgctxt "event list time" #~ msgid "%H∶%M" #~ msgstr "%H∶%M" #~ msgctxt "event list time" #~ msgid "%l∶%M %p" #~ msgstr "%l∶%M %p" #~ msgid "Invitation" #~ msgstr "Invitación" #~ msgid "Call" #~ msgstr "Llamar" #~ msgid "File Transfer" #~ msgstr "Transferencia de archivos" #~ msgid "Chat" #~ msgstr "Chat" #~ msgid "Invitation to %s" #~ msgstr "Invitación a %s" #~ msgid "%s is inviting you to join %s" #~ msgstr "%s le está invitando a unirse a %s" #~ msgid "Decline" #~ msgstr "Rechazar" #~ msgid "Accept" #~ msgstr "Aceptar" #~ msgid "Video call from %s" #~ msgstr "Videollamada de %s" #~ msgid "Call from %s" #~ msgstr "Llamada de %s" #~ msgid "Answer" #~ msgstr "Responder" #~ msgid "%s is sending you %s" #~ msgstr "%s le está enviando %s" #~ msgid "%s would like permission to see when you are online" #~ msgstr "%s solicita permiso para ver cuándo está en línea" #~ msgid "Authentication failed" #~ msgstr "Falló la autenticación" #~ msgid "Encryption error" #~ msgstr "Error de cifrado" #~ msgid "Certificate not provided" #~ msgstr "Certificado no proporcionado" #~ msgid "Certificate untrusted" #~ msgstr "No se confía en el certificado" #~ msgid "Certificate expired" #~ msgstr "Certificado caducado" #~ msgid "Certificate not activated" #~ msgstr "Certificado no activado" #~ msgid "Certificate hostname mismatch" #~ msgstr "El nombre del servidor dle certificado no coincide" #~ msgid "Certificate fingerprint mismatch" #~ msgstr "La huella del certificado no coincide" #~ msgid "Certificate self-signed" #~ msgstr "Certificado autofirmado" #~ msgid "Status is set to offline" #~ msgstr "El estado está establecido a «desconectado»" #~ msgid "Certificate is invalid" #~ msgstr "El certificado no es válido" #~ msgid "Connection has been refused" #~ msgstr "Se ha rechazado la conexión" #~ msgid "Connection can't be established" #~ msgstr "No se puede establecer la conexión" #~ msgid "Connection has been lost" #~ msgstr "Se ha perdido la conexión" #~ msgid "This account is already connected to the server" #~ msgstr "Esta cuenta ya está conectada al servidor" #~ msgid "" #~ "Connection has been replaced by a new connection using the same resource" #~ msgstr "" #~ "Se ha sustituido la conexión por una nueva conexión usando el mismo " #~ "recurso" #~ msgid "The account already exists on the server" #~ msgstr "La cuenta ya existe en el servidor" #~ msgid "Server is currently too busy to handle the connection" #~ msgstr "" #~ "Actualmente el servidor está muy ocupado intentando gestionar la conexión" #~ msgid "Certificate has been revoked" #~ msgstr "Se ha revocado el certificado" #~ msgid "" #~ "Certificate uses an insecure cipher algorithm or is cryptographically weak" #~ msgstr "" #~ "El certificado usa un algoritmo de cifrado inseguro o es " #~ "criptográficamente débil" #~ msgid "" #~ "The length of the server certificate, or the depth of the server " #~ "certificate chain, exceed the limits imposed by the cryptography library" #~ msgstr "" #~ "La longitud del certificado del servidor o la profundidad de la cadena " #~ "del certificado del servidor exceden los límites impuestos por la " #~ "biblioteca de criptografía" #~ msgid "Internal error" #~ msgstr "Error interno" #~ msgid "View account" #~ msgstr "Ver cuenta" #~ msgid "Show the message list" #~ msgstr "Mostrar la lista de mensajes" #~ msgctxt "list sunday" #~ msgid "Su" #~ msgstr "Dom" #~ msgctxt "list monday" #~ msgid "M" #~ msgstr "L" #~ msgctxt "list tuesday" #~ msgid "T" #~ msgstr "M" #~ msgctxt "list wednesday" #~ msgid "W" #~ msgstr "X" #~ msgctxt "list thursday" #~ msgid "Th" #~ msgstr "J" #~ msgctxt "list friday" #~ msgid "F" #~ msgstr "V" #~ msgctxt "list saturday" #~ msgid "S" #~ msgstr "S" #~ msgid "Nothing Scheduled" #~ msgstr "Nada programado" #~ msgid "This week" #~ msgstr "Esta semana" #~ msgid "Next week" #~ msgstr "La semana que viene" #~ msgid "Removable Devices" #~ msgstr "Dispositivos extraíbles" #~ msgid "Eject" #~ msgstr "Expulsar" #~ msgid "Date & Time Settings" #~ msgstr "Configuración de hora y fecha" #~ msgid "Open" #~ msgstr "Abrir" #~ msgid "Clear Messages" #~ msgstr "Limpiar mensajes" #~ msgid "Notification Settings" #~ msgstr "Configuración de las notificaciones" #~ msgid "No Messages" #~ msgstr "No hay mensajes" #~ msgid "Message Tray" #~ msgstr "Bandeja de mensajes" #~ msgid "Captive Portal" #~ msgstr "Portal captivo" #~ msgid "The maximum accuracy level of location." #~ msgstr "El nivel máximo de precisión de la ubicación." #~ msgid "" #~ "Configures the maximum level of location accuracy applications are " #~ "allowed to see. Valid options are 'off' (disable location tracking), " #~ "'country', 'city', 'neighborhood', 'street', and 'exact' (typically " #~ "requires GPS receiver). Please keep in mind that this only controls what " #~ "GeoClue will allow applications to see and they can find user's location " #~ "on their own using network resources (albeit with street-level accuracy " #~ "at best)." #~ msgstr "" #~ "Configura el nivel máximo de precisión de la ubicación que se permite ver " #~ "a las aplicaciones. Las opciones válidas son «off» (desactivar el rastreo " #~ "de la ubicación), «country», «city», «neighborhood», «street», y «exact» " #~ "(normalmente necesita un receptor GPS). Tenga en cuenta que esto sólo " #~ "controla lo que GeoClue permitirá ver a las aplicaciones y lo que pueden " #~ "encontrar sobre la ubicación de usuario usando los recursos de la red " #~ "(aunque con precisión a nivel de la calle, en el mejor de los casos)." #~ msgid "Arrangement of buttons on the titlebar" #~ msgstr "Orden de los botones en la barra de título" #~ msgid "" #~ "This key overrides the key in org.gnome.desktop.wm.preferences when " #~ "running GNOME Shell." #~ msgstr "" #~ "Esta clave sobrescribe la clave en org.gnome.desktop.wm.preferences al " #~ "ejecutar GNOME Shell." #~ msgid "Select an extension to configure using the combobox above." #~ msgstr "" #~ "Seleccione una extensión que configurar usando la caja combinada de " #~ "arriba." #~ msgid "calendar:MY" #~ msgstr "calendario:MA" #~ msgid "unavailable" #~ msgstr "no disponible" #~ msgid "%A, %H:%M" #~ msgstr "%A, %H:%M" #~ msgid "%B %d, %H:%M" #~ msgstr "%d de %B, %H:%M" #~ msgid "%B %d %Y, %H:%M " #~ msgstr "%d de %B %Y, %H:%M " #~ msgid "List of categories that should be displayed as folders" #~ msgstr "Lista de categorías que se deben mostrar como carpetas" #~ msgid "" #~ "Each category name in this list will be represented as folder in the " #~ "application view, rather than being displayed inline in the main view." #~ msgstr "" #~ "Cada nombre de categoría de esta lista se representará como una carpeta " #~ "en la vista de aplicaciones, en lugar de mostrarse en línea en la vista " #~ "principal." #~ msgctxt "event list time" #~ msgid "%H\\u2236%M" #~ msgstr "%H\\u2236%M" #~ msgctxt "event list time" #~ msgid "%l\\u2236%M\\u2009%p" #~ msgstr "%l\\u2236%M\\u2009%p" #~ msgid "Authorization request from %s" #~ msgstr "Solicitud de autorización de %s" #~ msgid "Device %s wants to pair with this computer" #~ msgstr "El dispositivo «%s» quiere emparejarse con este equipo" #~ msgid "Device %s wants access to the service '%s'" #~ msgstr "El dispositivo %s quiere acceder al servicio «%s»" #~ msgid "Grant this time only" #~ msgstr "Conceder sólo esta vez" #~ msgid "Reject" #~ msgstr "Rechazar" #~ msgid "Pairing confirmation for %s" #~ msgstr "Confirmación de emparejamiento para «%s»" #~ msgid "" #~ "Please confirm whether the Passkey '%06d' matches the one on the device." #~ msgstr "" #~ "Confirme que la clave mostrada en «%06d» coincide con la del dispositivo." #~ msgid "Does not match" #~ msgstr "No coincide" #~ msgid "Pairing request for %s" #~ msgstr "Solicitud de emparejamiento para «%s»" #~ msgid "Please enter the PIN mentioned on the device." #~ msgstr "Introduzca el PIN mencionado en el dispositivo." #~ msgid "OK" #~ msgstr "Aceptar" #~ msgid "" #~ "Sorry, no wisdom for you today:\n" #~ "%s" #~ msgstr "" #~ "Hoy no tiene ningún mensaje:\n" #~ "%s" #~ msgid "%s the Oracle says" #~ msgstr "%s el oráculo dice" #~ msgid "Settings Menu" #~ msgstr "Menú de configuración" #~ msgid "" #~ "Internally used to store the last IM presence explicitly set by the user. " #~ "The value here is from the TpConnectionPresenceType enumeration." #~ msgstr "" #~ "Usado internamente para guardar el último IM de presencia establecido " #~ "explícitamente por el usuario. El valor aquí es de la enumeración " #~ "TpConnectionPresenceType." #~ msgid "" #~ "Internally used to store the last session presence status for the user. " #~ "The value here is from the GsmPresenceStatus enumeration." #~ msgstr "" #~ "Usado internamente para guardar el último estado de presencia de la " #~ "sesión del usuario. El valor aquí es de la GsmPresenceStatus." #~ msgid "Click Log Out to quit these applications and log out of the system." #~ msgstr "" #~ "Pulse «Cerrar la sesión» para salir de esas aplicaciones y cerrar la " #~ "sesión del sistema." #~ msgid "Logging out of the system." #~ msgstr "Cerrando la sesión." #~ msgid "Click Power Off to quit these applications and power off the system." #~ msgstr "Pulse «Apagar» para salir de esas aplicaciones y apagar el sistema." #~ msgid "Powering off the system." #~ msgstr "Apagando el sistema." #~ msgid "Click Restart to quit these applications and restart the system." #~ msgstr "" #~ "Pulse «Reiniciar» para salir de esas aplicaciones y reiniciar el sistema." #~ msgid "Restarting the system." #~ msgstr "Reiniciando el sistema." #~ msgid "Shutting down might cause them to lose unsaved work." #~ msgstr "Apagar puede hacer que pierdan el trabajo que no hayan guardado." #~ msgid "Keybinding to toggle the screen recorder" #~ msgstr "Asociación de teclas cambiar el grabador de pantalla" #~ msgid "Keybinding to start/stop the builtin screen recorder." #~ msgstr "Asociación de teclas para iniciar/detener el grabador de pantalla." #~ msgid "Framerate used for recording screencasts." #~ msgstr "Tasa de fotogramas usada para grabar «screencast»." #~ msgid "" #~ "The framerate of the resulting screencast recordered by GNOME Shell's " #~ "screencast recorder in frames-per-second." #~ msgstr "" #~ "La tasa de fotogramas de la grabación resultante grabada por el grabador " #~ "de «screencast» de GNOME Shell, en fotogramas por segundo." #~ msgid "The gstreamer pipeline used to encode the screencast" #~ msgstr "La tubería de gstreamer usada para codificar el «screencast»" #~ msgid "" #~ "Sets the GStreamer pipeline used to encode recordings. It follows the " #~ "syntax used for gst-launch. The pipeline should have an unconnected sink " #~ "pad where the recorded video is recorded. It will normally have a " #~ "unconnected source pad; output from that pad will be written into the " #~ "output file. However the pipeline can also take care of its own output - " #~ "this might be used to send the output to an icecast server via shout2send " #~ "or similar. When unset or set to an empty value, the default pipeline " #~ "will be used. This is currently 'vp8enc min_quantizer=13 max_quantizer=13 " #~ "cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux' and records to " #~ "WEBM using the VP8 codec. %T is used as a placeholder for a guess at the " #~ "optimal thread count on the system." #~ msgstr "" #~ "Establece la tubería GStreamer usada para codificar grabaciones. Sigue la " #~ "sintaxis usada para gst-launch. La tubería debería tener un sumidero " #~ "(«sink») desconectado donde grabar el vídeo que se está grabando. " #~ "Generalmente tendrá un punto de origen desconectado; la salida de ese " #~ "punto se escribirá en el archivo de salida. Sin embargo, la tubería " #~ "también puede tomar parte en su propia salida; esto se puede usar para " #~ msgid "File extension used for storing the screencast" #~ msgstr "Extensión de archivo que usar para almacenar los «screencast»" #~ msgid "Power" #~ msgstr "Energía" #~ msgid "Volume, network, battery" #~ msgstr "Volumen, red, batería" #~ msgid "Visibility" #~ msgstr "Visibilidad" #~ msgid "Set Up a New Device…" #~ msgstr "Configurar un dispositivo nuevo…" #~ msgid "Send Files…" #~ msgstr "Enviar archivos…" #~ msgid "Wi-Fi" #~ msgstr "Wi-Fi" #~ msgid "disabled" #~ msgstr "desactivada" #~ msgid "More…" #~ msgstr "Más…" #~ msgid "Wired" #~ msgstr "Cableada" #~ msgid "Universal Access Settings" #~ msgstr "Configuración del acceso universal" #~ msgid "Mouse Settings" #~ msgstr "Configuración del ratón…" #~ msgid "%d hour remaining" #~ msgid_plural "%d hours remaining" #~ msgstr[0] "Queda %d hora" #~ msgstr[1] "Queda %d horas" #~ msgid "%d %s %d %s remaining" #~ msgstr "Quedan %d %s %d %s" #~ msgid "hour" #~ msgid_plural "hours" #~ msgstr[0] "hora" #~ msgstr[1] "horas" #~ msgid "minute" #~ msgid_plural "minutes" #~ msgstr[0] "minuto" #~ msgstr[1] "minutos" #~ msgid "%d minute remaining" #~ msgid_plural "%d minutes remaining" #~ msgstr[0] "Queda %d minuto" #~ msgstr[1] "Quedan %d minutos" #~ msgid "AC Adapter" #~ msgstr "Adaptador de corriente" #~ msgid "Laptop Battery" #~ msgstr "Batería del portátil" #~ msgid "Monitor" #~ msgstr "Monitor" #~ msgid "Mouse" #~ msgstr "Ratón" #~ msgid "PDA" #~ msgstr "PDA" #~ msgid "Cell Phone" #~ msgstr "Teléfono móvil" #~ msgid "Media Player" #~ msgstr "Reproductor multimedia" #~ msgid "Tablet" #~ msgstr "Tableta" #~ msgid "Computer" #~ msgstr "Equipo" #~ msgctxt "device" #~ msgid "Unknown" #~ msgstr "Desconocido" #~ msgid "Busy" #~ msgstr "Ocupado" #~ msgid "Invisible" #~ msgstr "Invisible" #~ msgid "Away" #~ msgstr "Ausente" #~ msgid "Idle" #~ msgstr "Inactivo" #~ msgid "Your chat status will be set to busy" #~ msgstr "Su estado del chat se establecerá a «ocupado»" #~ msgid "" #~ "Notifications are now disabled, including chat messages. Your online " #~ "status has been adjusted to let others know that you might not see their " #~ "messages." #~ msgstr "" #~ "Las notificaciones están ahora desactivadas, incluyendo los mensajes de " #~ "chat. Su estado en línea se ha ajustado para que otros sepan que puede no " #~ "leer sus mensajes." #~ msgid "cable unplugged" #~ msgstr "cable desconectado" #~ msgid "Whether to collect stats about applications usage" #~ msgstr "" #~ "Indica si se deben recolectar estadísticas acerca del uso de las " #~ "aplicaciones" #~ msgid "" #~ "The shell normally monitors active applications in order to present the " #~ "most used ones (e.g. in launchers). While this data will be kept private, " #~ "you may want to disable this for privacy reasons. Please note that doing " #~ "so won't remove already saved data." #~ msgstr "" #~ "La «shell» normalmente monitoriza todas las aplicaciones activas para " #~ "presentar las más usadas (ej. en los lanzadores). Aunque estos datos se " #~ "mantienen de forma privada, puede querer desactivarlo por razones de " #~ "privacidad. Note que haciéndolo no eliminará los datos ya guardados." #~ msgid "Auto Ethernet" #~ msgstr "Ethernet automática" #~ msgid "Auto broadband" #~ msgstr "Banda ancha automática" #~ msgid "Auto dial-up" #~ msgstr "Marcado automático" #~ msgid "Auto %s" #~ msgstr "%s automática" #~ msgid "Auto bluetooth" #~ msgstr "Bluetooth automático" #~ msgid "Auto wireless" #~ msgstr "Inalámbrica automática" #~ msgctxt "title" #~ msgid "Sign In" #~ msgstr "Iniciar sesión" #~ msgid "tray" #~ msgstr "bandeja" #~ msgid "More..." #~ msgstr "Más…" #~ msgctxt "event list time" #~ msgid "%H:%M" #~ msgstr "%H:%M" #~ msgctxt "event list time" #~ msgid "%l:%M %p" #~ msgstr "%l:%M %p" #~ msgid "United Kingdom" #~ msgstr "Reino Unido" #~ msgid "Default" #~ msgstr "Predeterminada" #~ msgid "Show full name in the user menu" #~ msgstr "Mostrar el nombre completo en el menú del usuario" #~ msgid "Whether the users full name is shown in the user menu or not." #~ msgstr "" #~ "Indica si se muestra el nombre del usuario en el menú del usuario o no." #~ msgid "APPLICATIONS" #~ msgstr "APLICACIONES" #~ msgid "SETTINGS" #~ msgstr "CONFIGURACIÓN" #~ msgid "Your favorite Easter Egg" #~ msgstr "Su mensaje oculto favorito" #~ msgid "Subscription request" #~ msgstr "Solicitud de suscripción" #~ msgid "Sent at %X on %A" #~ msgstr "Enviado el %A a las %H:%M" #~ msgid "Sent on %A, %B %d, %Y" #~ msgstr "Enviado el %A, %d de %B de %Y" #~ msgid "Connection to %s failed" #~ msgstr "Falló la conexión a %s" #~ msgid "Reconnect" #~ msgstr "Reconectar" #~ msgid "Browse Files..." #~ msgstr "Examinar archivos…" #~ msgid "Error browsing device" #~ msgstr "Error al examinar el dispositivo" #~ msgid "The requested device cannot be browsed, error is '%s'" #~ msgstr "No se puede examinar el dispositivo solicitado, el error es «%s»" #~ msgid "Wireless" #~ msgstr "Inalámbrica" #~ msgid "VPN Connections" #~ msgstr "Conexiones VPN" #~ msgid "System Settings" #~ msgstr "Configuración del sistema" #~ msgid "disabled OpenSearch providers" #~ msgstr "proveedores OpenSearch desactivados" #~ msgid "Failed to unmount '%s'" #~ msgstr "Falló al desmontar «%s»" #~ msgid "Retry" #~ msgstr "Reintentar" #~ msgid "PLACES & DEVICES" #~ msgstr "LUGARES Y DISPOSITIVOS" #~ msgid "%1$s: %2$s" #~ msgstr "%1$s: %2$s" #~ msgid "Passphrase" #~ msgstr "Contraseña" #~ msgid "Show time with seconds" #~ msgstr "Mostrar la hora con segundos" #~ msgid "If true, display seconds in time." #~ msgstr "Si es cierta, muestra los segundos en la hora." #~ msgid "Show date in clock" #~ msgstr "Mostrar la fecha en el reloj" #~ msgid "If true, display date in the clock, in addition to time." #~ msgstr "Si es cierta, muestra la fecha en el reloj, además de la hora." #~ msgctxt "contact" #~ msgid "Unknown" #~ msgstr "Desconocido" #~ msgid "CONTACTS" #~ msgstr "CONTACTOS" #~ msgid "%a %b %e, %R:%S" #~ msgstr "%a %e de %b, %R:%S" #~ msgid "%a %b %e, %R" #~ msgstr "%a %e de %b, %R" #~ msgid "%a %R:%S" #~ msgstr "%a %R:%S" #~ msgid "%a %R" #~ msgstr "%a %R" #~ msgid "%a %b %e, %l:%M:%S %p" #~ msgstr "%a %e de %b, %l:%M:%S %p" #~ msgid "%a %l:%M:%S %p" #~ msgstr "%a %l:%M:%S %p" #~ msgid "%s is online." #~ msgstr "%s está conectado/a." #~ msgid "%s is offline." #~ msgstr "%s está desconectado/a." #~ msgid "%s is away." #~ msgstr "%s está ausente." #~ msgid "%s is busy." #~ msgstr "%s está ocupado/a." #~ msgid "Hidden" #~ msgstr "Oculto" #~ msgid "Power Off..." #~ msgstr "Apagar…" #~ msgid "Online Accounts" #~ msgstr "Cuentas en línea" #~ msgid "Log Out..." #~ msgstr "Cerrar la sesión…" #~ msgid "RECENT ITEMS" #~ msgstr "ELEMENTOS RECIENTES" #~ msgid "" #~ "GNOME Shell extensions have a uuid property; this key lists extensions " #~ "which should be loaded. disabled-extensions overrides this setting for " #~ "extensions that appear in both lists." #~ msgstr "" #~ "Las extensiones de GNOME Shell tienen una propiedad uuid; esta clave " #~ "lista las extensiones que no se deben cargar. «disabled-extensions» " #~ "sobrescribe este ajuste para las extensiones que aparecen en ambas listas." #~ msgid "Show password" #~ msgstr "Mostrar contraseña" #~ msgid "%s has finished starting" #~ msgstr "%s finalizó su lanzamiento" #~ msgid "If true, display onscreen keyboard." #~ msgstr "Si es cierta, muestra el teclado en pantalla." #~ msgid "Connectivity lost" #~ msgstr "Conectividad perdida" #~| msgid "You're no longer connected to the network" #~ msgid "You are no longer connected to the network" #~ msgstr "Ya no está conectado a la red" #~ msgid "calendar:week_start:0" #~ msgstr "calendar:week_start:1" #, fuzzy #~ msgid "The length of the server certificate, or the depth of the " #~ msgstr "La longitud del certificado del servidor o la profundidad del" #~ msgid "You're now connected to mobile broadband connection '%s'" #~ msgstr "Ahora está conectado a la red de banda ancha móvil «%s»" #~ msgid "You're now connected to wireless network '%s'" #~ msgstr "Ahora está conectado a la red inalámbrica «%s»" #~ msgid "You're now connected to VPN network '%s'" #~ msgstr "Ahora está conectado a la VPN «%s»" #~ msgid "Uuids of extensions to disable" #~ msgstr "Uuid de las extensiones que desactivar" #~ msgid "Localization Settings" #~ msgstr "Configuración regional" #~ msgid "Less than a minute ago" #~ msgstr "Hace menos de un minuto" #~ msgid "Shut Down" #~ msgstr "Apagar" #~ msgid "Click Shut Down to quit these applications and shut down the system." #~ msgstr "Pulse «Apagar» para salir de esas aplicaciones y apagar el sistema." #~ msgid "The system will shut down automatically in %d seconds." #~ msgstr "El sistema se apagará automáticamente en %d segundos." #~ msgid "Shutting down the system." #~ msgstr "Apagando el sistema." #~ msgid "Confirm" #~ msgstr "Confirmar" #~ msgid "PREFERENCES" #~ msgstr "PREFERENCIAS" #~ msgid "Shut Down..." #~ msgstr "Apagar…" #~ msgid "Clip the crosshairs at the center" #~ msgstr "Fijar los cursores en el centro" #~ msgid "Color of the crosshairs" #~ msgstr "Color de las cruces" #~ msgid "" #~ "Determines the length of the vertical and horizontal lines that make up " #~ "the crosshairs." #~ msgstr "" #~ "Determina la longitud de las líneas verticales y horizontales que " #~ "conforman los cursores." #~ msgid "" #~ "Determines the position of the magnified mouse image within the magnified " #~ "view and how it reacts to system mouse movement. The values are - none: " #~ "no mouse tracking; - centered: the mouse image is displayed at the center " #~ "of the zoom region (which also represents the point under the system " #~ "mouse) and the magnified contents are scrolled as the system mouse moves; " #~ "- proportional: the position of the magnified mouse in the zoom region is " #~ "proportionally the same as the position of the system mouse on screen; - " #~ "push: when the magnified mouse intersects a boundary of the zoom region, " #~ "the contents are scrolled into view." #~ msgstr "" #~ "Determina la posición de la imagen magnificada del ratón dentro de la " #~ "vista magnificada y cómo reacciona al movimiento del ratón del sistema. " #~ "Los valores son «none» (ninguno): sin seguimiento del ratón; «centered» " #~ "(centrado): la imagen del ratón se muestra en el centro de la región " #~ "ampliada (que también representa el punto bajo el ratón del sistema) y el " #~ "contenido magnificado se desliza según se mueve el ratón del sistema; " #~ "«proporcional»: la posición del ratón magnificado en la región de " #~ "ampliación es proporcionalmente la misma que la posición del ratón del " #~ "sistema en el ratón; «push» (empujar): cuando el ratón magnificado cruza " #~ "un límite de la región de ampliación, el contenido se desliza en la vista." #~ msgid "" #~ "Determines the transparency of the crosshairs, from fully opaque to fully " #~ "transparent." #~ msgstr "" #~ "Determina la transparencia de los cursores, de completamente opacos a " #~ "completamente transparentes." #~ msgid "" #~ "Determines whether the crosshairs intersect the magnified mouse sprite, " #~ "or are clipped such that the ends of the horizontal and vertical lines " #~ "surround the mouse image." #~ msgstr "" #~ "Determina si las cruces cruzan el «sprite» magnificado del ratón o se " #~ "fijan de tal forma que los finales de las líneas horizontales y " #~ "verticales rodean la imagen del ratón." #~ msgid "Enable lens mode" #~ msgstr "Activar el modo lente" #~ msgid "" #~ "Enables/disables display of crosshairs centered on the magnified mouse " #~ "sprite." #~ msgstr "" #~ "Activa/desactiva el mostrado de los cursores centrados en el «sprite» " #~ "magnificado del ratón." #~ msgid "" #~ "For centered mouse tracking, when the system pointer is at or near the " #~ "edge of the screen, the magnified contents continue to scroll such that " #~ "the screen edge moves into the magnified view." #~ msgstr "" #~ "Para el seguimiento del centro del ratón, cuando el puntero del sistema " #~ "está cerca del borde de la pantalla, el contenido magnificado continúa " #~ "desplazándose de tal forma que el borde de la pantalla se mueve dentro de " #~ "la vista magnificada." #~ msgid "Length of the crosshairs" #~ msgstr "Longitud de las cruces" #~ msgid "Magnification factor" #~ msgstr "Factor de magnificación" #~ msgid "Mouse Tracking Mode" #~ msgstr "Modo de seguimiento del ratón" #~ msgid "Opacity of the crosshairs" #~ msgstr "Opacidad de las cruces" #~ msgid "Scroll magnified contents beyond the edges of the desktop" #~ msgstr "" #~ "Desplazar el contenido magnificado más allá de los bordes del escritorio" #~ msgid "Show or hide crosshairs" #~ msgstr "Mostrar u ocultar las cruces" #~ msgid "Show or hide the magnifier" #~ msgstr "Mostrar u ocultar el magnificador" #~ msgid "Show or hide the magnifier and all of its zoom regions." #~ msgstr "" #~ "Mostrar u ocultar el magnificador y todas sus regiones de ampliación." #~ msgid "" #~ "The color of the the vertical and horizontal lines that make up the " #~ "crosshairs." #~ msgstr "" #~ "El color de las líneas verticales y horizontales que conforman las cruces." #~ msgid "" #~ "The magnified view either fills the entire screen, or occupies the top-" #~ "half, bottom-half, left-half, or right-half of the screen." #~ msgstr "" #~ "La vista magnificada o llena la pantalla u ocupa la mitad superior, mitad " #~ "inferior, mitad izquierda o mitad derecha de la pantalla." #~ msgid "" #~ "The power of the magnification. A value of 1.0 means no magnification. A " #~ "value of 2.0 doubles the size." #~ msgstr "" #~ "El poder de la magnificación. Un valor de 1.0 significa sin " #~ "magnificación. Un valor de 2.0 duplica el tamaño." #~ msgid "Thickness of the crosshairs" #~ msgstr "Grosor de las cruces" #~ msgid "" #~ "Whether the magnified view should be centered over the location of the " #~ "system mouse and move with it." #~ msgstr "" #~ "Indica si la vista magnificada se debe centrar sobre la ubicación del " #~ "ratón del sistema y moverse con ella." #~ msgid "" #~ "Width of the vertical and horizontal lines that make up the crosshairs." #~ msgstr "" #~ "Anchura de las líneas verticales y horizontales que conforman las cruces." #~ msgid "Search your computer" #~ msgstr "Buscar en su equipo" #~ msgid "" #~ "Can't add a new workspace because maximum workspaces limit has been " #~ "reached." #~ msgstr "" #~ "No se puede añadir un área de trabajo nueva porque se ha llegado al " #~ "límite de áreas de trabajo." #~ msgid "Can't remove the first workspace." #~ msgstr "No se puede quitar el primer área de trabajo." #~ msgid "Customize the panel clock" #~ msgstr "Personalizar el reloj del panel" #~ msgid "Custom format of the clock" #~ msgstr "Formato personalizado del reloj" #~ msgid "Hour format" #~ msgstr "Formato de la hora" #~ msgid "" #~ "If true and format is either \"12-hour\" or \"24-hour\", display seconds " #~ "in time." #~ msgstr "" #~ "Si es cierta y el formato es «12-horas» o «24-horas», muestra los " #~ "segundos en la hora." #~ msgid "" #~ "This key specifies the format used by the panel clock when the format key " #~ "is set to \"custom\". You can use conversion specifiers understood by " #~ "strftime() to obtain a specific format. See the strftime() manual for " #~ "more information." #~ msgstr "" #~ "Esta clave especifica el formato usado por el reloj del panel cuando la " #~ "clave del formato se establece a «custom» (personalizado). Puede usar " #~ "especificadores de conversión que entienda strftime() para obtener un " #~ "formato específico. Consulte el manual de strftime() para obtener más " #~ "información." #~ msgid "" #~ "This key specifies the hour format used by the panel clock. Possible " #~ "values are \"12-hour\", \"24-hour\", \"unix\" and \"custom\". If set to " #~ "\"unix\", the clock will display time in seconds since Epoch, i.e. " #~ "1970-01-01. If set to \"custom\", the clock will display time according " #~ "to the format specified in the custom_format key. Note that if set to " #~ "either \"unix\" or \"custom\", the show_date and show_seconds keys are " #~ "ignored." #~ msgstr "" #~ "Esta clave especifica el formato de la hora especificado por el reloj del " #~ "panel. Los valores posibles son «12-hour» (12 horas), «24-hour» (24 " #~ "horas), «unix» y «custom» (personalizado).Si se establece a «unix» el " #~ "reloj mostrará la hora en segundos desde la época (1 de enero de 1970). " #~ "Si se establece a «custom» el reloj mostrará la hora según el formato " #~ "especificado en la clave «custom_format». Note que si se establece a " #~ "«unix» o «custom» se ignoran las claves «show_date» y «show_seconds»." #~ msgid "Clock Preferences" #~ msgstr "Preferencias del reloj" #~ msgid "Show seco_nds" #~ msgstr "Mostrar los segu_ndos" #~ msgid "_12 hour format" #~ msgstr "Formato _12 horas" #~ msgid "_24 hour format" #~ msgstr "Formato _24 horas" #~ msgid "Preferences" #~ msgstr "Preferencias" #~ msgid "What's using power..." #~ msgstr "Lo que está usando energía…" #~ msgid "Overview workspace view mode" #~ msgstr "Modo de visualización de la vista previa del área de trabajo" #~ msgid "" #~ "The selected workspace view mode in the overview. Supported values are " #~ "\"single\" and \"grid\"." #~ msgstr "" #~ "El modo de vista del área de trabajo seleccionada en la vista general. " #~ "Los valores soportados son «single» (sencillo) y «grid» (rejilla)." #~ msgid "Drag here to add favorites" #~ msgstr "Arrastrar aquí para añadir a los favoritos" #~ msgid "Find" #~ msgstr "Buscar" #~ msgid "ON" #~ msgstr "ENCENDIDO" #~ msgid "OFF" #~ msgstr "APAGADO" #~ msgid "Sidebar" #~ msgstr "Barra lateral" #~ msgid "Recent Documents" #~ msgstr "Documentos recientes" #~ msgid "PLACES" #~ msgstr "LUGARES" #~ msgid "(see all)" #~ msgstr "(ver todo)" #~ msgid "SEARCH RESULTS" #~ msgstr "RESULTADOS DE LA BÚSQUEDA" #~ msgid "Can't lock screen: %s" #~ msgstr "No se puede bloquear la pantalla: %s" #~ msgid "Can't temporarily set screensaver to blank screen: %s" #~ msgstr "" #~ "No se puede establecer temporalmente el salvapantallas a oscurecer " #~ "pantalla: %s" #~ msgid "Can't logout: %s" #~ msgstr "No se puede salir de la sesión: %s" #~ msgid "Browse" #~ msgstr "Examine" #~ msgid "Find apps or documents" #~ msgstr "Encuentre aplicaciones o documentos" #~| msgid "RECENT DOCUMENTS" #~ msgid "DOCUMENTS" #~ msgstr "DOCUMENTOS" #~ msgid "The user manager object this user is controlled by." #~ msgstr "El objeto de gestión de usuarios que controla a este usuario." 0707010000022C000081A40000000000000000000000016712993F000136F2000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/et.po# GNOME kesta eesti keele tõlge. # Estonian translation for gnome-shell. # # Copyright (C) 2010, 2011 The Gnome Project # # This file is distributed under the same license as the gnome-shell package. # # Ivar Smolin , 2011. # Mattias Põldaru , 2010, 2011, 2012, 2013. # msgid "" msgstr "" "Project-Id-Version: gnome-shell MASTER\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" "POT-Creation-Date: 2019-03-02 10:57+0000\n" "PO-Revision-Date: 2019-03-10 18:49+0200\n" "Last-Translator: Mart Raudsepp \n" "Language-Team: Estonian <>\n" "Language: et\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 2.2\n" "X-DamnedLies-Scope: partial\n" #: data/50-gnome-shell-system.xml:6 msgid "System" msgstr "Arvuti" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "Teadete nimekirja kuvamine" #: data/50-gnome-shell-system.xml:12 msgid "Focus the active notification" msgstr "Aktiivse teate fookustamine" #: data/50-gnome-shell-system.xml:15 msgid "Show the overview" msgstr "Ülevaate näitamine" #: data/50-gnome-shell-system.xml:18 msgid "Show all applications" msgstr "Kõigi rakenduste kuvamine" #: data/50-gnome-shell-system.xml:21 msgid "Open the application menu" msgstr "Rakenduste menüü avamine" #: data/gnome-shell-extension-prefs.desktop.in.in:4 #: js/extensionPrefs/main.js:216 msgid "Shell Extensions" msgstr "Shelli laiendused" #: data/gnome-shell-extension-prefs.desktop.in.in:5 msgid "Configure GNOME Shell Extensions" msgstr "GNOME Shelli laienduste seadistamine" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "GNOME Shell" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "Aknahaldur ja rakenduste käivitaja" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" "Arendajate ja testijate jaoks sisemiste tööriistade lubamine Alt-F2 alt" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Lubab ligipääsu sisemistele silumise ja monitoorimise tööriistadele Alt-F2 " "dialoogi kaudu." #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "Lubatavate laienduste UUID-d" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "GNOME Shelli laiendustel on UUID omadus; selles võtmes loetletud laiendused " "tuleks laadida. Seda loendit saab muuta kasutades EnableExtension ja " "DisableExtension DBus-i meetodit kohas org.gnome.Shell." #: data/org.gnome.shell.gschema.xml.in:26 msgid "Disable user extensions" msgstr "" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" #: data/org.gnome.shell.gschema.xml.in:34 msgid "Disables the validation of extension version compatibility" msgstr "" #: data/org.gnome.shell.gschema.xml.in:35 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" #: data/org.gnome.shell.gschema.xml.in:43 msgid "List of desktop file IDs for favorite applications" msgstr "Lemmikrakenduste töölauafailide ID-de loend" #: data/org.gnome.shell.gschema.xml.in:44 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "Nendele tunnustele vastavaid rakendusi kuvatakse lemmikutes." #: data/org.gnome.shell.gschema.xml.in:51 msgid "App Picker View" msgstr "" #: data/org.gnome.shell.gschema.xml.in:52 msgid "Index of the currently selected view in the application picker." msgstr "" #: data/org.gnome.shell.gschema.xml.in:58 msgid "History for command (Alt-F2) dialog" msgstr "Käsudialoogi (Alt-F2) ajalugu" # suurendusklaasidialoog? miks ka mitte :) #. Translators: looking glass is a debugger and inspector tool, see https://wiki.gnome.org/Projects/GnomeShell/LookingGlass #: data/org.gnome.shell.gschema.xml.in:63 msgid "History for the looking glass dialog" msgstr "Otsingudialoogi ajalugu" #: data/org.gnome.shell.gschema.xml.in:67 msgid "Always show the “Log out” menu item in the user menu." msgstr "Kasutajamenüüs näidatakse alati „Logi välja“ menüükirjet." #: data/org.gnome.shell.gschema.xml.in:68 msgid "" "This key overrides the automatic hiding of the “Log out” menu item in single-" "user, single-session situations." msgstr "" "See võti keelab automaatse „Logi välja“ menüükirje peitmise, kui arvutis on " "üks kasutaja ning avatud üks seanss." #: data/org.gnome.shell.gschema.xml.in:75 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "Kas pidada meeles krüpteeritud või kaugfailisüsteemide haakimise paroole" #: data/org.gnome.shell.gschema.xml.in:76 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "Shell küsib parooli, kui haagitakse krüpteeritud seade või kaugfailisüsteem. " "Kui parooli on võimalik salvestada edaspidiseks kasutuseks, näidatakse " "„Salvesta parool“ märkeruutu. See võti määrab selle märkeruudu vaikimisi " "oleku." #: data/org.gnome.shell.gschema.xml.in:85 msgid "" "Whether the default Bluetooth adapter had set up devices associated to it" msgstr "" #: data/org.gnome.shell.gschema.xml.in:86 msgid "" "The shell will only show a Bluetooth menu item if a Bluetooth adapter is " "powered, or if there were devices set up associated with the default " "adapter. This will be reset if the default adapter is ever seen not to have " "devices associated to it." msgstr "" #: data/org.gnome.shell.gschema.xml.in:95 msgid "Enable introspection API" msgstr "" #: data/org.gnome.shell.gschema.xml.in:96 msgid "" "Enables a D-Bus API that allows to introspect the application state of the " "shell." msgstr "" #: data/org.gnome.shell.gschema.xml.in:109 msgid "Keybinding to open the application menu" msgstr "Rakenduste menüü avamise kiirklahv" #: data/org.gnome.shell.gschema.xml.in:110 msgid "Keybinding to open the application menu." msgstr "Kiirklahv rakenduste menüü avamiseks." #: data/org.gnome.shell.gschema.xml.in:116 msgid "Keybinding to open the “Show Applications” view" msgstr "„Rakenduste kuvamise“ kiirklahv" #: data/org.gnome.shell.gschema.xml.in:117 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "„Rakenduste kuvamise“ kiirklahv tegevuste ülevaates." #: data/org.gnome.shell.gschema.xml.in:124 msgid "Keybinding to open the overview" msgstr "Ülevaate avamise kiirklahv" #: data/org.gnome.shell.gschema.xml.in:125 msgid "Keybinding to open the Activities Overview." msgstr "Tegevuste ülevaate avamise kiirklahv." #: data/org.gnome.shell.gschema.xml.in:131 msgid "Keybinding to toggle the visibility of the notification list" msgstr "Teadete loendi nähtavuse muutmise kiirklahv" #: data/org.gnome.shell.gschema.xml.in:132 msgid "Keybinding to toggle the visibility of the notification list." msgstr "Kiirklahv teadete loendi nähtavuse muutmiseks." #: data/org.gnome.shell.gschema.xml.in:138 msgid "Keybinding to focus the active notification" msgstr "Aktiivse teate fookustamise kiirklahv" #: data/org.gnome.shell.gschema.xml.in:139 msgid "Keybinding to focus the active notification." msgstr "Aktiivse teate fookustamise kiirklahv." #: data/org.gnome.shell.gschema.xml.in:145 msgid "" "Keybinding that pauses and resumes all running tweens, for debugging purposes" msgstr "" #: data/org.gnome.shell.gschema.xml.in:150 msgid "Switch to application 1" msgstr "Liikumine 1. rakendusele" #: data/org.gnome.shell.gschema.xml.in:154 msgid "Switch to application 2" msgstr "Liikumine 2. rakendusele" #: data/org.gnome.shell.gschema.xml.in:158 msgid "Switch to application 3" msgstr "Liikumine 3. rakendusele" #: data/org.gnome.shell.gschema.xml.in:162 msgid "Switch to application 4" msgstr "Liikumine 4. rakendusele" #: data/org.gnome.shell.gschema.xml.in:166 msgid "Switch to application 5" msgstr "Liikumine 5. rakendusele" #: data/org.gnome.shell.gschema.xml.in:170 msgid "Switch to application 6" msgstr "Liikumine 6. rakendusele" #: data/org.gnome.shell.gschema.xml.in:174 msgid "Switch to application 7" msgstr "Liikumine 7. rakendusele" #: data/org.gnome.shell.gschema.xml.in:178 msgid "Switch to application 8" msgstr "Liikumine 8. rakendusele" #: data/org.gnome.shell.gschema.xml.in:182 msgid "Switch to application 9" msgstr "Liikumine 9. rakendusele" #: data/org.gnome.shell.gschema.xml.in:190 msgid "Which keyboard to use" msgstr "Millist klaviatuuri kasutada" #: data/org.gnome.shell.gschema.xml.in:191 msgid "The type of keyboard to use." msgstr "Kasutatava klaviatuuri liik." #: data/org.gnome.shell.gschema.xml.in:202 #: data/org.gnome.shell.gschema.xml.in:229 msgid "Limit switcher to current workspace." msgstr "Piira aknavahetaja käesolevale tööalale." #: data/org.gnome.shell.gschema.xml.in:203 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" #: data/org.gnome.shell.gschema.xml.in:220 msgid "The application icon mode." msgstr "Rakenduste ikooni režiim." #: data/org.gnome.shell.gschema.xml.in:221 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-" "only” (shows only the application icon) or “both”." msgstr "" "Seadistab, kuidas aknaid aknavahetajas kuvatakse. Sobivad väärtused on " "„thumbnail-only“ (näidatakse ainult akna pisipilti), „app-icon-" "only“ (näidatakse ainult akna ikooni) või „both“ (mõlemad)." #: data/org.gnome.shell.gschema.xml.in:230 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" #: data/org.gnome.shell.gschema.xml.in:242 msgid "Attach modal dialog to the parent window" msgstr "Modaaldialoog kuulub vanemakna juurde" #: data/org.gnome.shell.gschema.xml.in:243 #: data/org.gnome.shell.gschema.xml.in:252 #: data/org.gnome.shell.gschema.xml.in:260 #: data/org.gnome.shell.gschema.xml.in:268 #: data/org.gnome.shell.gschema.xml.in:276 msgid "" "This key overrides the key in org.gnome.mutter when running GNOME Shell." msgstr "" "See võti on ülimuslik võtme org.gnome.mutter suhtes, kui kasutatakse GNOME " "Shelli." #: data/org.gnome.shell.gschema.xml.in:251 msgid "Enable edge tiling when dropping windows on screen edges" msgstr "Akende lohistamisel ekraani serva lubatakse serva paigutamine" #: data/org.gnome.shell.gschema.xml.in:259 msgid "Workspaces are managed dynamically" msgstr "Tööalasid hallatakse dünaamiliselt" #: data/org.gnome.shell.gschema.xml.in:267 msgid "Workspaces only on primary monitor" msgstr "Tööalad peamisel monitoril" #: data/org.gnome.shell.gschema.xml.in:275 msgid "Delay focus changes in mouse mode until the pointer stops moving" msgstr "Hiire all asuv aken saab fookuse alles hiire peatumisel" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "Võrku sisselogimine" #. Translators: Do NOT translate or transliterate this text (this is an icon file name)! #: data/org.gnome.Shell.PortalHelper.desktop.in.in:9 msgid "network-workgroup" msgstr "network-workgroup" #: js/extensionPrefs/main.js:116 msgid "Something’s gone wrong" msgstr "Midagi läks nihu" #: js/extensionPrefs/main.js:123 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" #: js/extensionPrefs/main.js:130 msgid "Technical Details" msgstr "Tehnilised üksikasjad" #: js/extensionPrefs/main.js:165 msgid "Copy Error" msgstr "Kopeeri veateade" #: js/extensionPrefs/main.js:185 msgid "Homepage" msgstr "Koduleht" #: js/extensionPrefs/main.js:186 msgid "Visit extension homepage" msgstr "Külasta laienduse kodulehte" #: js/extensionPrefs/main.js:449 msgid "No Extensions Installed" msgstr "Ühtegi laiendust pole paigaldatud" #: js/extensionPrefs/main.js:459 msgid "" "Extensions can be installed through Software or extensions.gnome.org." msgstr "" #: js/extensionPrefs/main.js:474 msgid "Browse in Software" msgstr "" #: js/gdm/authPrompt.js:140 js/ui/audioDeviceSelection.js:55 #: js/ui/components/networkAgent.js:117 js/ui/components/polkitAgent.js:136 #: js/ui/endSessionDialog.js:430 js/ui/extensionDownloader.js:188 #: js/ui/shellMountOperation.js:325 js/ui/status/network.js:888 msgid "Cancel" msgstr "Katkesta" #: js/gdm/authPrompt.js:159 js/gdm/authPrompt.js:202 js/gdm/authPrompt.js:434 msgid "Next" msgstr "Järgmine" #: js/gdm/authPrompt.js:198 js/ui/shellMountOperation.js:329 #: js/ui/unlockDialog.js:41 msgid "Unlock" msgstr "Võta lukust lahti" #: js/gdm/authPrompt.js:200 msgctxt "button" msgid "Sign In" msgstr "Logi sisse" #: js/gdm/loginDialog.js:302 msgid "Choose Session" msgstr "Seansi valimine" #. translators: this message is shown below the user list on the #. login screen. It can be activated to reveal an entry for #. manually entering the username. #: js/gdm/loginDialog.js:446 msgid "Not listed?" msgstr "Pole loendis?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:884 #, javascript-format msgid "(e.g., user or %s)" msgstr "(nt 'user' või %s)" #. TTLS and PEAP are actually much more complicated, but this complication #. is not visible here since we only care about phase2 authentication #. (and don't even care of which one) #: js/gdm/loginDialog.js:889 js/ui/components/networkAgent.js:243 #: js/ui/components/networkAgent.js:263 js/ui/components/networkAgent.js:281 msgid "Username: " msgstr "Kasutajanimi: " #: js/gdm/loginDialog.js:1227 msgid "Login Window" msgstr "Sisselogimisaken" #: js/gdm/util.js:337 msgid "Authentication error" msgstr "Viga autentimisel" #. We don't show fingerprint messages directly since it's #. not the main auth service. Instead we use the messages #. as a cue to display our own message. #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger instead #: js/gdm/util.js:477 msgid "(or swipe finger)" msgstr "(või libista näpp üle lugeja)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:88 msgctxt "search-result" msgid "Power Off" msgstr "Lülita välja" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:91 msgid "power off;shutdown;reboot;restart" msgstr "" "power off;shutdown;reboot;restart;lülita välja;taaskäivitamine;" "väljalülitamine" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:95 msgctxt "search-result" msgid "Lock Screen" msgstr "Lukusta ekraan" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:98 msgid "lock screen" msgstr "lock screen;lukusta ekraan;ekraanilukk;ekraani lukustamine" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:102 msgctxt "search-result" msgid "Log Out" msgstr "Logi välja" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:105 msgid "logout;sign off" msgstr "logout;sign off;logi välja;väljalogimine" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:109 msgctxt "search-result" msgid "Suspend" msgstr "Uinak" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:112 msgid "suspend;sleep" msgstr "suspend;sleep;uinak;unerežiim" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:116 msgctxt "search-result" msgid "Switch User" msgstr "Vaheta kasutajat" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:119 msgid "switch user" msgstr "switch user;vaheta kasutajat;kasutajavahetus" #. Translators: The name of the lock orientation action in search #: js/misc/systemActions.js:123 msgctxt "search-result" msgid "Lock Orientation" msgstr "Lukusta asend" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:126 msgid "lock orientation;screen;rotation" msgstr "" "lock orientation;screen;rotation;asendilukk;lukusta asend;kuvar;pööre;" "pööramine" #: js/misc/util.js:117 msgid "Command not found" msgstr "Käsku ei leitud" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:150 msgid "Could not parse command:" msgstr "Käsku pole võimalik analüüsida:" #: js/misc/util.js:158 #, javascript-format msgid "Execution of “%s” failed:" msgstr "„%s“ käivitamine nurjus:" #: js/misc/util.js:175 msgid "Just now" msgstr "Praegu" #: js/misc/util.js:177 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d minut tagasi" msgstr[1] "%d minutit tagasi" #: js/misc/util.js:180 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d tund tagasi" msgstr[1] "%d tundi tagasi" #: js/misc/util.js:183 msgid "Yesterday" msgstr "Eile" #: js/misc/util.js:185 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d päev tagasi" msgstr[1] "%d päeva tagasi" #: js/misc/util.js:188 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d nädal tagasi" msgstr[1] "%d nädalat tagasi" #: js/misc/util.js:191 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%d kuu tagasi" msgstr[1] "%d kuud tagasi" #: js/misc/util.js:193 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "%d aasta tagasi" msgstr[1] "%d aastat tagasi" #. Translators: Time in 24h format #: js/misc/util.js:223 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/util.js:229 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "Eile %H∶%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/util.js:235 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/util.js:241 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%-d. %B, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/util.js:247 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%-d. %B %Y, %H∶%M" #. Translators: Time in 12h format #: js/misc/util.js:252 msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/util.js:258 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "Eile %l∶%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/util.js:264 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/util.js:270 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%-d. %B, %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/util.js:276 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%-d. %B %Y, %l∶%M %p" #. TRANSLATORS: this is the title of the wifi captive portal login window #: js/portalHelper/main.js:40 msgid "Hotspot Login" msgstr "Kuumkoha sisselogimine" #: js/portalHelper/main.js:86 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "Sinu ühendus selle kuumkoha sisselogimisse pole turvaline. Paroolid või muu " "info, mille sisestad sellele lehele on vaadatavad lähedalasuvate inimeste " "poolt." #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:37 js/ui/status/location.js:360 msgid "Deny Access" msgstr "Keela juurdepääs" #: js/ui/accessDialog.js:38 js/ui/status/location.js:363 msgid "Grant Access" msgstr "Anna ligipääs" #: js/ui/appDisplay.js:660 msgid "Frequently used applications will appear here" msgstr "Siia ilmuvad tihti kasutatud rakendused" #: js/ui/appDisplay.js:775 msgid "Frequent" msgstr "Tihti" #: js/ui/appDisplay.js:782 msgid "All" msgstr "Kõik" #: js/ui/appDisplay.js:1737 js/ui/panel.js:83 msgid "New Window" msgstr "Uus aken" #: js/ui/appDisplay.js:1751 msgid "Launch using Dedicated Graphics Card" msgstr "Käivita eraldiseisva graafikakaardiga" #: js/ui/appDisplay.js:1778 js/ui/dash.js:239 msgid "Remove from Favorites" msgstr "Eemalda lemmikutest" #: js/ui/appDisplay.js:1784 msgid "Add to Favorites" msgstr "Lisa lemmikutesse" #: js/ui/appDisplay.js:1794 js/ui/panel.js:94 msgid "Show Details" msgstr "Kuva üksikasju" #: js/ui/appFavorites.js:141 #, javascript-format msgid "%s has been added to your favorites." msgstr "%s lisati lemmikutesse." #: js/ui/appFavorites.js:175 #, javascript-format msgid "%s has been removed from your favorites." msgstr "%s eemaldati lemmikutest." #: js/ui/audioDeviceSelection.js:42 msgid "Select Audio Device" msgstr "Vali heliseade" #: js/ui/audioDeviceSelection.js:53 msgid "Sound Settings" msgstr "Helisätted" #: js/ui/audioDeviceSelection.js:62 msgid "Headphones" msgstr "Kõrvaklapid" #: js/ui/audioDeviceSelection.js:64 msgid "Headset" msgstr "Peakomplekt" #: js/ui/audioDeviceSelection.js:66 js/ui/status/volume.js:247 msgid "Microphone" msgstr "Mikrofon" #: js/ui/backgroundMenu.js:13 msgid "Change Background…" msgstr "Muuda tausta…" #: js/ui/backgroundMenu.js:15 js/ui/status/nightLight.js:43 msgid "Display Settings" msgstr "Kuvari sätted" #: js/ui/backgroundMenu.js:16 msgid "Settings" msgstr "Sätted" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:40 msgctxt "calendar-no-work" msgid "06" msgstr "60" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:69 msgctxt "grid sunday" msgid "S" msgstr "P" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:71 msgctxt "grid monday" msgid "M" msgstr "E" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:73 msgctxt "grid tuesday" msgid "T" msgstr "T" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:75 msgctxt "grid wednesday" msgid "W" msgstr "K" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:77 msgctxt "grid thursday" msgid "T" msgstr "N" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:79 msgctxt "grid friday" msgid "F" msgstr "R" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:81 msgctxt "grid saturday" msgid "S" msgstr "L" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:332 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:342 msgid "%OB %Y" msgstr "%OB %Y" #: js/ui/calendar.js:399 msgid "Previous month" msgstr "Eelmine kuu" #: js/ui/calendar.js:410 msgid "Next month" msgstr "Järgmine kuu" #: js/ui/calendar.js:564 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:619 msgid "Week %V" msgstr "%V. nädal" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/calendar.js:687 msgctxt "event list time" msgid "All Day" msgstr "Kogu päev" #: js/ui/calendar.js:819 msgctxt "calendar heading" msgid "%A, %B %-d" msgstr "%A, %-d. %B" #: js/ui/calendar.js:823 msgctxt "calendar heading" msgid "%A, %B %-d, %Y" msgstr "%A, %-d. %B %Y" #: js/ui/calendar.js:1046 msgid "No Notifications" msgstr "Teateid pole" #: js/ui/calendar.js:1049 msgid "No Events" msgstr "Sündmusi pole" #: js/ui/calendar.js:1075 msgid "Clear" msgstr "Tühjenda" #. Translators: %s is an application name #: js/ui/closeDialog.js:42 #, javascript-format msgid "“%s” is not responding." msgstr "„%s“ ei vasta." #: js/ui/closeDialog.js:43 msgid "" "You may choose to wait a short while for it to continue or force the " "application to quit entirely." msgstr "" "Võid veidi oodata, et see jätkaks tööd, või sundida rakenduse täielikult " "sulguma." #: js/ui/closeDialog.js:59 msgid "Force Quit" msgstr "Sundsulge" #: js/ui/closeDialog.js:62 msgid "Wait" msgstr "Oota" #: js/ui/components/automountManager.js:86 msgid "External drive connected" msgstr "Väline ketas ühendati" #: js/ui/components/automountManager.js:98 msgid "External drive disconnected" msgstr "Väline ketas eemaldati" #: js/ui/components/autorunManager.js:334 #, javascript-format msgid "Open with %s" msgstr "Ava programmiga %s" #: js/ui/components/keyring.js:77 js/ui/components/polkitAgent.js:255 msgid "Password:" msgstr "Parool:" #: js/ui/components/keyring.js:108 msgid "Type again:" msgstr "Sisesta uuesti:" #: js/ui/components/networkAgent.js:102 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router." msgstr "" #: js/ui/components/networkAgent.js:112 js/ui/status/network.js:219 #: js/ui/status/network.js:309 js/ui/status/network.js:891 msgid "Connect" msgstr "Ühendu" #. Cisco LEAP #: js/ui/components/networkAgent.js:211 js/ui/components/networkAgent.js:223 #: js/ui/components/networkAgent.js:246 js/ui/components/networkAgent.js:265 #: js/ui/components/networkAgent.js:285 js/ui/components/networkAgent.js:295 msgid "Password: " msgstr "Parool: " #. static WEP #: js/ui/components/networkAgent.js:216 msgid "Key: " msgstr "Võti: " #: js/ui/components/networkAgent.js:249 js/ui/components/networkAgent.js:271 msgid "Private key password: " msgstr "Privaatvõtme parool: " #: js/ui/components/networkAgent.js:269 msgid "Identity: " msgstr "Identiteet: " #: js/ui/components/networkAgent.js:283 msgid "Service: " msgstr "Teenus: " #: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:685 msgid "Authentication required by wireless network" msgstr "Juhtmeta võrgu jaoks on vajalik autentimine" #: js/ui/components/networkAgent.js:313 js/ui/components/networkAgent.js:686 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network " "“%s”." msgstr "" "Juhtmeta võrguga „%s“ ühendumiseks on vajalik parool või krüptimisvõti." #: js/ui/components/networkAgent.js:317 js/ui/components/networkAgent.js:689 msgid "Wired 802.1X authentication" msgstr "Juhtmega ühenduse 802.1X autentimine" #: js/ui/components/networkAgent.js:319 msgid "Network name: " msgstr "Võrgu nimi: " #: js/ui/components/networkAgent.js:324 js/ui/components/networkAgent.js:693 msgid "DSL authentication" msgstr "DSL autentimine" #: js/ui/components/networkAgent.js:331 js/ui/components/networkAgent.js:699 msgid "PIN code required" msgstr "Vajalik on PIN-kood" #: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:700 msgid "PIN code is needed for the mobile broadband device" msgstr "Mobiiliühenduse loomiseks on vaja PIN-koodi" #: js/ui/components/networkAgent.js:333 msgid "PIN: " msgstr "PIN: " #: js/ui/components/networkAgent.js:340 js/ui/components/networkAgent.js:706 msgid "Mobile broadband network password" msgstr "Mobiiliühenduse võrgu parool" #: js/ui/components/networkAgent.js:341 js/ui/components/networkAgent.js:690 #: js/ui/components/networkAgent.js:694 js/ui/components/networkAgent.js:707 #, javascript-format msgid "A password is required to connect to “%s”." msgstr "„%s“-ga ühenduse loomiseks on vaja parooli." #: js/ui/components/networkAgent.js:674 js/ui/status/network.js:1665 msgid "Network Manager" msgstr "Võrguhaldur" #: js/ui/components/polkitAgent.js:34 msgid "Authentication Required" msgstr "Vajalik on autentimine" #: js/ui/components/polkitAgent.js:62 msgid "Administrator" msgstr "Administraator" #: js/ui/components/polkitAgent.js:139 msgid "Authenticate" msgstr "Autendi" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:241 js/ui/shellMountOperation.js:309 msgid "Sorry, that didn’t work. Please try again." msgstr "Kahjuks see ei sobinud. Palun proovi uuesti." #. Translators: this is the other person changing their old IM name to their new #. IM name. #: js/ui/components/telepathyClient.js:778 #, javascript-format msgid "%s is now known as %s" msgstr "%s nimi on nüüd %s" #: js/ui/ctrlAltTab.js:21 js/ui/viewSelector.js:169 msgid "Windows" msgstr "Aknad" #: js/ui/dash.js:200 js/ui/dash.js:241 msgid "Show Applications" msgstr "Rakenduste kuvamine" #. Translators: this is the name of the dock/favorites area on #. the left of the overview #: js/ui/dash.js:390 msgid "Dash" msgstr "Dokk" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:62 msgid "%B %-d %Y" msgstr "%-d. %B %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:69 msgid "%A %B %e %Y" msgstr "%A, %e. %B %Y" #: js/ui/dateMenu.js:131 msgid "Add world clocks…" msgstr "Lisa maailmakellasid…" #: js/ui/dateMenu.js:132 msgid "World Clocks" msgstr "Maailmakellad" #: js/ui/dateMenu.js:222 msgid "Weather" msgstr "Ilm" #: js/ui/dateMenu.js:305 msgid "Select a location…" msgstr "Vali asukoht…" #: js/ui/dateMenu.js:313 msgid "Loading…" msgstr "Laadimine…" #: js/ui/dateMenu.js:323 msgid "Go online for weather information" msgstr "Ilmateate nägemiseks ühendu võrku" #: js/ui/dateMenu.js:325 msgid "Weather information is currently unavailable" msgstr "Ilmateade pole hetkel saadaval" #: js/ui/endSessionDialog.js:42 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "%s väljalogimine" #: js/ui/endSessionDialog.js:43 msgctxt "title" msgid "Log Out" msgstr "Väljalogimine" #: js/ui/endSessionDialog.js:45 #, javascript-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "%s logitakse %d sekundi pärast automaatselt välja." msgstr[1] "%s logitakse %d sekundi pärast automaatselt välja." #: js/ui/endSessionDialog.js:50 #, javascript-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "Sind logitakse %d sekundi pärast automaatselt välja." msgstr[1] "Sind logitakse %d sekundi pärast automaatselt välja." #: js/ui/endSessionDialog.js:56 msgctxt "button" msgid "Log Out" msgstr "Logi välja" #: js/ui/endSessionDialog.js:62 msgctxt "title" msgid "Power Off" msgstr "Väljalülitamine" #: js/ui/endSessionDialog.js:63 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Paigalda uuendused ja lülita välja" #: js/ui/endSessionDialog.js:65 #, javascript-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "%d sekundi pärast lülitub süsteem automaatselt välja." msgstr[1] "%d sekundi pärast lülitub süsteem automaatselt välja." #: js/ui/endSessionDialog.js:69 msgctxt "checkbox" msgid "Install pending software updates" msgstr "Paigalda ootel tarkvarauuendused" #: js/ui/endSessionDialog.js:72 js/ui/endSessionDialog.js:89 msgctxt "button" msgid "Restart" msgstr "Taaskäivita" #: js/ui/endSessionDialog.js:74 msgctxt "button" msgid "Power Off" msgstr "Lülita välja" #: js/ui/endSessionDialog.js:81 msgctxt "title" msgid "Restart" msgstr "Taaskäivitamine" #: js/ui/endSessionDialog.js:83 #, javascript-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "Süsteem taaskäivitub automaatselt %d sekundi pärast." msgstr[1] "Süsteem taaskäivitub automaatselt %d sekundi pärast." #: js/ui/endSessionDialog.js:97 msgctxt "title" msgid "Restart & Install Updates" msgstr "Taaskäivitamine ja uuenduste paigaldamine" #: js/ui/endSessionDialog.js:99 #, javascript-format msgid "The system will automatically restart and install updates in %d second." msgid_plural "" "The system will automatically restart and install updates in %d seconds." msgstr[0] "Süsteem taaskäivitub ja paigaldab uuendused %d sekundi pärast." msgstr[1] "Süsteem taaskäivitub ja paigaldab uuendused %d sekundi pärast." #: js/ui/endSessionDialog.js:105 js/ui/endSessionDialog.js:125 msgctxt "button" msgid "Restart & Install" msgstr "Taaskäivita ja paigalda" #: js/ui/endSessionDialog.js:106 msgctxt "button" msgid "Install & Power Off" msgstr "Paigalda ja lülita välja" #: js/ui/endSessionDialog.js:107 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Lülita välja pärast uuenduste paigaldamist" #: js/ui/endSessionDialog.js:115 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "Taaskäivita ja paigalda täiendus" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:120 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "%s %s paigaldatakse pärast taaskäivitust. Täienduse paigaldamine võib võtta " "kaua aega: veendu, et su andmed on varundatud ning arvuti on vooluvõrku " "ühendatud." #: js/ui/endSessionDialog.js:309 msgid "Running on battery power: please plug in before installing updates." msgstr "" "Töötad aku peal: palun ühenda arvuti vooluvõrku enne uuenduste paigaldamist." #: js/ui/endSessionDialog.js:326 msgid "Some applications are busy or have unsaved work." msgstr "Mõned rakendused on tegevuses või on neis salvestamata asju." #: js/ui/endSessionDialog.js:333 msgid "Other users are logged in." msgstr "Teised kasutajad on sisse logitud." #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:614 #, javascript-format msgid "%s (remote)" msgstr "%s (kaugühendus)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:617 #, javascript-format msgid "%s (console)" msgstr "%s (konsool)" #: js/ui/extensionDownloader.js:192 msgid "Install" msgstr "Paigalda" #: js/ui/extensionDownloader.js:197 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "Kas laadida alla ja paigaldada „%s“ aadressilt extensions.gnome.org?" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:50 #, javascript-format msgid "%s wants to inhibit shortcuts" msgstr "%s soovib kiirklahve üle võtta" #: js/ui/inhibitShortcutsDialog.js:51 msgid "Application wants to inhibit shortcuts" msgstr "Rakendus soovib kiirklahve üle võtta" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:60 #, javascript-format msgid "You can restore shortcuts by pressing %s." msgstr "Kiirklahve saad taastada, vajutades %s." #: js/ui/inhibitShortcutsDialog.js:65 msgid "Deny" msgstr "Keela" #: js/ui/inhibitShortcutsDialog.js:71 msgid "Allow" msgstr "Luba" #: js/ui/kbdA11yDialog.js:31 msgid "Slow Keys Turned On" msgstr "Aeglased klahvid sisselülitatud" #: js/ui/kbdA11yDialog.js:32 msgid "Slow Keys Turned Off" msgstr "Aeglased klahvid väljalülitatud" #: js/ui/kbdA11yDialog.js:33 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "Sa hoidsid tõstuklahvi all 8 sekundit. See on otsetee aeglaste klahvide " "funktsioonile, mis muudab sinu klaviatuuri tööviisi." #: js/ui/kbdA11yDialog.js:40 msgid "Sticky Keys Turned On" msgstr "Kleepuvad klahvid sisselülitatud" #: js/ui/kbdA11yDialog.js:41 msgid "Sticky Keys Turned Off" msgstr "Kleepuvad klahvid väljalülitatud" #: js/ui/kbdA11yDialog.js:43 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "Sa vajutasid tõstuklahvi 5 korda järjest. See on otsetee kleepuvate klahvide " "funktsioonile, mis muudab sinu klaviatuuri tööviisi." #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" "Sa vajutasid kahte klahvi korraga või vajutasid tõstuklahvi 5 korda järjest. " "See lülitab välja kleepuvate klahvide funktsiooni, mis muudab sinu " "klaviatuuri tööviisi." #: js/ui/kbdA11yDialog.js:57 msgid "Leave On" msgstr "Jäta sisse" #: js/ui/kbdA11yDialog.js:57 js/ui/status/bluetooth.js:133 #: js/ui/status/network.js:1264 msgid "Turn On" msgstr "Lülita sisse" #: js/ui/kbdA11yDialog.js:65 js/ui/status/bluetooth.js:133 #: js/ui/status/network.js:128 js/ui/status/network.js:310 #: js/ui/status/network.js:1264 js/ui/status/network.js:1376 #: js/ui/status/nightLight.js:39 js/ui/status/rfkill.js:79 #: js/ui/status/rfkill.js:106 msgid "Turn Off" msgstr "Lülita välja" #: js/ui/kbdA11yDialog.js:65 msgid "Leave Off" msgstr "Jäta välja" #: js/ui/keyboard.js:203 msgid "Region & Language Settings" msgstr "Asukoha ja keele sätted" #: js/ui/lookingGlass.js:615 msgid "No extensions installed" msgstr "Ühtegi laiendust pole paigaldatud" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:669 #, javascript-format msgid "%s has not emitted any errors." msgstr "%s ei ole väljastanud ühtegi veateadet." #: js/ui/lookingGlass.js:675 msgid "Hide Errors" msgstr "Peida vead" #: js/ui/lookingGlass.js:679 js/ui/lookingGlass.js:739 msgid "Show Errors" msgstr "Näita vigu" #: js/ui/lookingGlass.js:688 msgid "Enabled" msgstr "Lubatud" #. translators: #. * The device has been disabled #: js/ui/lookingGlass.js:691 subprojects/gvc/gvc-mixer-control.c:1864 msgid "Disabled" msgstr "Keelatud" #: js/ui/lookingGlass.js:693 msgid "Error" msgstr "Viga" #: js/ui/lookingGlass.js:695 msgid "Out of date" msgstr "Pole värske" #: js/ui/lookingGlass.js:697 msgid "Downloading" msgstr "Allalaadimine" #: js/ui/lookingGlass.js:721 msgid "View Source" msgstr "Kuva lähtekoodi" #: js/ui/lookingGlass.js:730 msgid "Web Page" msgstr "Veebileht" #: js/ui/messageTray.js:1474 msgid "System Information" msgstr "Süsteemi andmed" #: js/ui/mpris.js:177 msgid "Unknown artist" msgstr "Tundmatu esitaja" #: js/ui/mpris.js:178 msgid "Unknown title" msgstr "Tundmatu pealkiri" #: js/ui/osdWindow.js:22 js/ui/status/volume.js:199 msgid "Volume" msgstr "Helivaljus" #: js/ui/overview.js:73 msgid "Undo" msgstr "Võta tagasi" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:100 msgid "Overview" msgstr "Ülevaade" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overview.js:226 msgid "Type to search…" msgstr "Otsing…" #: js/ui/padOsd.js:92 msgid "New shortcut…" msgstr "Uus kiirklahv…" #: js/ui/padOsd.js:141 msgid "Application defined" msgstr "Rakenduse määratud" #: js/ui/padOsd.js:142 msgid "Show on-screen help" msgstr "Kuva ekraaniabi" #: js/ui/padOsd.js:143 msgid "Switch monitor" msgstr "Vaheta ekraani" #: js/ui/padOsd.js:144 msgid "Assign keystroke" msgstr "Omista klahvivajutus" #: js/ui/padOsd.js:209 msgid "Done" msgstr "Valmis" #: js/ui/padOsd.js:721 msgid "Edit…" msgstr "Muuda…" #: js/ui/padOsd.js:763 js/ui/padOsd.js:868 msgid "None" msgstr "Puudub" #: js/ui/padOsd.js:822 msgid "Press a button to configure" msgstr "Vajuta seadistamiseks klahvi" #: js/ui/padOsd.js:823 msgid "Press Esc to exit" msgstr "Väljumiseks vajuta Esc" #: js/ui/padOsd.js:826 msgid "Press any key to exit" msgstr "Väljumiseks vajuta mistahes klahvi" #: js/ui/panel.js:108 msgid "Quit" msgstr "Sulge" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:466 msgid "Activities" msgstr "Tegevused" #: js/ui/panel.js:741 msgctxt "System menu in the top bar" msgid "System" msgstr "Süsteem" #: js/ui/panel.js:861 msgid "Top Bar" msgstr "Ülemine riba" #. Translators: this MUST be either "toggle-switch-us" #. (for toggle switches containing the English words #. "ON" and "OFF") or "toggle-switch-intl" (for toggle #. switches containing "◯" and "|"). Other values will #. simply result in invisible toggle switches. #: js/ui/popupMenu.js:285 msgid "toggle-switch-us" msgstr "toggle-switch-intl" #: js/ui/runDialog.js:64 msgid "Enter a Command" msgstr "Palun sisesta käsk" #: js/ui/runDialog.js:104 js/ui/windowMenu.js:166 msgid "Close" msgstr "Sulge" #: js/ui/runDialog.js:266 msgid "Restart is not available on Wayland" msgstr "Taaskäivitus ei ole Waylandis saadaval" #: js/ui/runDialog.js:271 msgid "Restarting…" msgstr "Taaskäivitamine…" #. Translators: This is a time format for a date in #. long format #: js/ui/screenShield.js:77 msgid "%A, %B %d" msgstr "%A, %d. %B" #: js/ui/screenShield.js:133 #, javascript-format msgid "%d new message" msgid_plural "%d new messages" msgstr[0] "%d uus sõnum" msgstr[1] "%d uut sõnumit" #: js/ui/screenShield.js:135 #, javascript-format msgid "%d new notification" msgid_plural "%d new notifications" msgstr[0] "%d uus teade" msgstr[1] "%d uut teadet" #: js/ui/screenShield.js:449 js/ui/status/system.js:270 msgid "Lock" msgstr "Lukusta" #: js/ui/screenShield.js:713 msgid "GNOME needs to lock the screen" msgstr "GNOME peab ekraani lukustama" #. We could not become modal, so we can't activate the #. screenshield. The user is probably very upset at this #. point, but any application using global grabs is broken #. Just tell him to stop using this app #. #. XXX: another option is to kick the user into the gdm login #. screen, where we're not affected by grabs #: js/ui/screenShield.js:834 js/ui/screenShield.js:1307 msgid "Unable to lock" msgstr "Pole võimalik lukustada" #: js/ui/screenShield.js:835 js/ui/screenShield.js:1308 msgid "Lock was blocked by an application" msgstr "Rakendus blokeeris lukustamise" #: js/ui/search.js:635 msgid "Searching…" msgstr "Otsing…" #: js/ui/search.js:637 msgid "No results." msgstr "Tulemused puuduvad." #: js/ui/search.js:761 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "%d veel" msgstr[1] "%d veel" #: js/ui/shellEntry.js:19 msgid "Copy" msgstr "Kopeeri" #: js/ui/shellEntry.js:24 msgid "Paste" msgstr "Aseta" #: js/ui/shellEntry.js:90 msgid "Show Text" msgstr "Teksti näidatakse" #: js/ui/shellEntry.js:92 msgid "Hide Text" msgstr "Tekst on peidetud" #: js/ui/shellMountOperation.js:296 msgid "Password" msgstr "Parool" #: js/ui/shellMountOperation.js:317 msgid "Remember Password" msgstr "Parooli meelespidamine" #: js/ui/status/accessibility.js:35 msgid "Accessibility" msgstr "Kasutaja abivahendid" #: js/ui/status/accessibility.js:50 msgid "Zoom" msgstr "Suurendus" #: js/ui/status/accessibility.js:57 msgid "Screen Reader" msgstr "Ekraanilugeja" #: js/ui/status/accessibility.js:61 msgid "Screen Keyboard" msgstr "Ekraaniklaviatuur" #: js/ui/status/accessibility.js:65 msgid "Visual Alerts" msgstr "Visuaalsed märguanded" #: js/ui/status/accessibility.js:68 msgid "Sticky Keys" msgstr "Kleepuvad klahvid" #: js/ui/status/accessibility.js:71 msgid "Slow Keys" msgstr "Aeglased klahvid" #: js/ui/status/accessibility.js:74 msgid "Bounce Keys" msgstr "Põrkeklahvid" #: js/ui/status/accessibility.js:77 msgid "Mouse Keys" msgstr "Hiireklahvid" #: js/ui/status/accessibility.js:151 msgid "High Contrast" msgstr "Kõrgkontrastne" #: js/ui/status/accessibility.js:182 msgid "Large Text" msgstr "Suur tekst" #: js/ui/status/bluetooth.js:38 msgid "Bluetooth" msgstr "Bluetooth" #: js/ui/status/bluetooth.js:47 js/ui/status/network.js:585 msgid "Bluetooth Settings" msgstr "Bluetoothi sätted" #. Translators: this is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:127 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d ühendatud" msgstr[1] "%d ühendatud" #: js/ui/status/bluetooth.js:129 msgid "Off" msgstr "Väljas" #: js/ui/status/bluetooth.js:131 msgid "On" msgstr "Sees" #: js/ui/status/brightness.js:36 msgid "Brightness" msgstr "Heledus" #: js/ui/status/keyboard.js:812 msgid "Keyboard" msgstr "Klaviatuur" #: js/ui/status/keyboard.js:834 msgid "Show Keyboard Layout" msgstr "Klaviatuuripaigutuse kuvamine" #: js/ui/status/location.js:64 js/ui/status/location.js:172 msgid "Location Enabled" msgstr "Asukoha jagamine lubatud" #: js/ui/status/location.js:65 js/ui/status/location.js:173 msgid "Disable" msgstr "Keela" #: js/ui/status/location.js:66 msgid "Privacy Settings" msgstr "Privaatsussätted" #: js/ui/status/location.js:171 msgid "Location In Use" msgstr "Asukoha jagamine sees" #: js/ui/status/location.js:175 msgid "Location Disabled" msgstr "Asukoha jagamine väljas" #: js/ui/status/location.js:176 msgid "Enable" msgstr "Luba" #. Translators: %s is an application name #: js/ui/status/location.js:353 #, javascript-format msgid "Give %s access to your location?" msgstr "Kas jagad rakendusele %s juurdepääsu oma asukohale?" #: js/ui/status/location.js:354 msgid "Location access can be changed at any time from the privacy settings." msgstr "Asukoha ligipääse saab igal ajal privaatsussätetest muuta." #: js/ui/status/network.js:66 msgid "" msgstr "" #. Translators: %s is a network identifier #: js/ui/status/network.js:416 js/ui/status/network.js:1293 #, javascript-format msgid "%s Off" msgstr "%s väljas" #. Translators: %s is a network identifier #: js/ui/status/network.js:419 #, javascript-format msgid "%s Connected" msgstr "%s ühendatud" #. Translators: this is for network devices that are physically present but are not #. under NetworkManager's control (and thus cannot be used in the menu); #. %s is a network identifier #: js/ui/status/network.js:424 #, javascript-format msgid "%s Unmanaged" msgstr "%s pole hallatud" #. Translators: %s is a network identifier #: js/ui/status/network.js:427 #, javascript-format msgid "%s Disconnecting" msgstr "%s ühenduse katkestamine" #. Translators: %s is a network identifier #: js/ui/status/network.js:434 js/ui/status/network.js:1285 #, javascript-format msgid "%s Connecting" msgstr "%s ühendamine" #. Translators: this is for network connections that require some kind of key or password; %s is a network identifier #: js/ui/status/network.js:437 #, javascript-format msgid "%s Requires Authentication" msgstr "%s vajab autentimist" #. Translators: this is for devices that require some kind of firmware or kernel #. module, which is missing; %s is a network identifier #: js/ui/status/network.js:445 #, javascript-format msgid "Firmware Missing For %s" msgstr "%s püsivara puudub" #. Translators: this is for a network device that cannot be activated (for example it #. is disabled by rfkill, or it has no coverage; %s is a network identifier #: js/ui/status/network.js:449 #, javascript-format msgid "%s Unavailable" msgstr "%s pole saadaval" #. Translators: %s is a network identifier #: js/ui/status/network.js:452 #, javascript-format msgid "%s Connection Failed" msgstr "%s ühendus nurjus" #: js/ui/status/network.js:464 msgid "Wired Settings" msgstr "Juhtmeühenduse sätted" #: js/ui/status/network.js:506 msgid "Mobile Broadband Settings" msgstr "Mobiiliühenduse sätted" #. Translators: %s is a network identifier #: js/ui/status/network.js:553 js/ui/status/network.js:1290 #, javascript-format msgid "%s Hardware Disabled" msgstr "%s riistvaraliselt keelatud" #. Translators: this is for a network device that cannot be activated #. because it's disabled by rfkill (airplane mode); %s is a network identifier #: js/ui/status/network.js:557 #, javascript-format msgid "%s Disabled" msgstr "%s keelatud" #: js/ui/status/network.js:597 msgid "Connect to Internet" msgstr "Ühendu Internetiga" #: js/ui/status/network.js:786 msgid "Airplane Mode is On" msgstr "Lennurežiim sees" #: js/ui/status/network.js:787 msgid "Wi-Fi is disabled when airplane mode is on." msgstr "Wi-Fi on keelatud, kui lennurežiim on sees." #: js/ui/status/network.js:788 msgid "Turn Off Airplane Mode" msgstr "Lülita lennurežiim välja" #: js/ui/status/network.js:797 msgid "Wi-Fi is Off" msgstr "Wi-Fi väljas" #: js/ui/status/network.js:798 msgid "Wi-Fi needs to be turned on in order to connect to a network." msgstr "Wi-Fi tuleb sisse lülitada, et võrku ühenduda." #: js/ui/status/network.js:799 msgid "Turn On Wi-Fi" msgstr "Lülita Wi-Fi sisse" #: js/ui/status/network.js:824 msgid "Wi-Fi Networks" msgstr "Wi-Fi võrgud" #: js/ui/status/network.js:826 msgid "Select a network" msgstr "Vali võrk" #: js/ui/status/network.js:855 msgid "No Networks" msgstr "Võrke pole" #: js/ui/status/network.js:876 js/ui/status/rfkill.js:104 msgid "Use hardware switch to turn off" msgstr "Kasuta riistvaralist lülitit väljalülitamiseks" #: js/ui/status/network.js:1152 msgid "Select Network" msgstr "Võrgu valimine" #: js/ui/status/network.js:1158 msgid "Wi-Fi Settings" msgstr "Wi-Fi sätted" #. Translators: %s is a network identifier #: js/ui/status/network.js:1281 #, javascript-format msgid "%s Hotspot Active" msgstr "%s kuumkoht sees" #. Translators: %s is a network identifier #: js/ui/status/network.js:1296 #, javascript-format msgid "%s Not Connected" msgstr "%s pole ühendatud" #: js/ui/status/network.js:1393 msgid "connecting…" msgstr "ühendumine…" #. Translators: this is for network connections that require some kind of key or password #: js/ui/status/network.js:1396 msgid "authentication required" msgstr "vajalik on autentimine" #: js/ui/status/network.js:1398 msgid "connection failed" msgstr "ühendumine nurjus" #: js/ui/status/network.js:1448 msgid "VPN Settings" msgstr "VPN-i sätted" #: js/ui/status/network.js:1465 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1475 msgid "VPN Off" msgstr "VPN väljas" #: js/ui/status/network.js:1536 js/ui/status/rfkill.js:82 msgid "Network Settings" msgstr "Võrgusätted" #: js/ui/status/network.js:1565 #, javascript-format msgid "%s Wired Connection" msgid_plural "%s Wired Connections" msgstr[0] "%s juhtmega ühendus" msgstr[1] "%s juhtmega ühendust" #: js/ui/status/network.js:1569 #, javascript-format msgid "%s Wi-Fi Connection" msgid_plural "%s Wi-Fi Connections" msgstr[0] "%s Wi-Fi ühendus" msgstr[1] "%s Wi-Fi ühendust" #: js/ui/status/network.js:1573 #, javascript-format msgid "%s Modem Connection" msgid_plural "%s Modem Connections" msgstr[0] "%s modemi ühendus" msgstr[1] "%s modemi ühendust" #: js/ui/status/network.js:1702 msgid "Connection failed" msgstr "Ühendus nurjus" #: js/ui/status/network.js:1703 msgid "Activation of network connection failed" msgstr "Võrguühenduse aktiveerimine nurjus" #: js/ui/status/nightLight.js:60 msgid "Night Light Disabled" msgstr "Öövalgustus keelatud" #: js/ui/status/nightLight.js:61 msgid "Night Light On" msgstr "Öövalgustus sees" #: js/ui/status/nightLight.js:62 msgid "Resume" msgstr "Jätka" #: js/ui/status/nightLight.js:63 msgid "Disable Until Tomorrow" msgstr "Keela homseni" #: js/ui/status/power.js:45 msgid "Power Settings" msgstr "Toitesätted" #: js/ui/status/power.js:61 msgid "Fully Charged" msgstr "Täiesti täis" #: js/ui/status/power.js:67 msgid "Not Charging" msgstr "Ei lae" #. 0 is reported when UPower does not have enough data #. to estimate battery life #: js/ui/status/power.js:70 js/ui/status/power.js:76 msgid "Estimating…" msgstr "Andmete kogumine…" #. Translators: this is : Remaining () #: js/ui/status/power.js:84 #, javascript-format msgid "%d∶%02d Remaining (%d %%)" msgstr "Jäänud %d∶%02d (%d %%)" #. Translators: this is : Until Full () #: js/ui/status/power.js:89 #, javascript-format msgid "%d∶%02d Until Full (%d %%)" msgstr "Täitumiseni %d∶%02d (%d %%)" #: js/ui/status/power.js:117 js/ui/status/power.js:119 #, javascript-format msgid "%d %%" msgstr "%d %%" #: js/ui/status/remoteAccess.js:42 msgid "Screen is Being Shared" msgstr "Ekraani jagatakse" #: js/ui/status/remoteAccess.js:44 msgid "Turn off" msgstr "Lülita välja" #. The menu only appears when airplane mode is on, so just #. statically build it as if it was on, rather than dynamically #. changing the menu contents. #: js/ui/status/rfkill.js:77 msgid "Airplane Mode On" msgstr "Lennurežiim" #: js/ui/status/system.js:203 msgid "Switch User" msgstr "Vaheta kasutajat" #: js/ui/status/system.js:215 msgid "Log Out" msgstr "Logi välja" #: js/ui/status/system.js:227 msgid "Account Settings" msgstr "Kasutaja sätted" #: js/ui/status/system.js:255 msgid "Orientation Lock" msgstr "Asendilukk" #: js/ui/status/system.js:281 msgid "Suspend" msgstr "Uinak" #: js/ui/status/system.js:291 msgid "Power Off" msgstr "Lülita välja" #: js/ui/status/thunderbolt.js:261 msgid "Thunderbolt" msgstr "Thunderbolt" #: js/ui/status/thunderbolt.js:322 msgid "Unknown Thunderbolt device" msgstr "Tundmatu Thunderbolt-seade" #: js/ui/status/thunderbolt.js:323 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" "Sinu äraolekul tuvastati uus seade. Palun ühenda see seade lahti ja tagasi, " "et selle kasutamist alustada." #: js/ui/status/thunderbolt.js:326 msgid "Unauthorized Thunderbolt device" msgstr "Autoriseerimata Thunderbolt-seade" #: js/ui/status/thunderbolt.js:327 msgid "" "New device has been detected and needs to be authorized by an administrator." msgstr "" #: js/ui/status/thunderbolt.js:333 msgid "Thunderbolt authorization error" msgstr "Thunderbolti autoriseerimise viga" #: js/ui/status/thunderbolt.js:334 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "Thunderbolti seadet ei saanud autoriseerida: %s" #: js/ui/status/volume.js:133 msgid "Volume changed" msgstr "Helivaljus muutus" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:16 msgid "Mirror" msgstr "Peegelda" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:21 msgid "Join Displays" msgstr "Ühenda kuvarid" #. Translators: this is for using only an external display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:26 msgid "External Only" msgstr "Ainult väline" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:31 msgid "Built-in Only" msgstr "Ainult sisemine" #: js/ui/unlockDialog.js:49 msgid "Log in as another user" msgstr "Logi sisse teise kasutajana" #: js/ui/unlockDialog.js:66 msgid "Unlock Window" msgstr "Võta aken lukust lahti" #: js/ui/viewSelector.js:173 msgid "Applications" msgstr "Rakendused" #: js/ui/viewSelector.js:177 msgid "Search" msgstr "Otsing" #: js/ui/windowAttentionHandler.js:19 #, javascript-format msgid "“%s” is ready" msgstr "„%s“ on valmis" #: js/ui/windowManager.js:53 msgid "Do you want to keep these display settings?" msgstr "Kas tahad säilitada need kuvasätted?" #. Translators: this and the following message should be limited in lenght, #. to avoid ellipsizing the labels. #. #: js/ui/windowManager.js:65 msgid "Revert Settings" msgstr "Taasta sätted" #: js/ui/windowManager.js:68 msgid "Keep Changes" msgstr "Säilita muudatused" #: js/ui/windowManager.js:86 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "Sätete muudatused ennistatakse %d sekundi pärast" msgstr[1] "Sätete muudatused ennistatakse %d sekundi pärast" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:662 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:26 msgid "Minimize" msgstr "Minimeeri" #: js/ui/windowMenu.js:33 msgid "Unmaximize" msgstr "Tühista maksimeerimine" #: js/ui/windowMenu.js:37 msgid "Maximize" msgstr "Maksimeeri" #: js/ui/windowMenu.js:44 msgid "Move" msgstr "Liiguta" #: js/ui/windowMenu.js:50 msgid "Resize" msgstr "Muuda suurust" #: js/ui/windowMenu.js:57 msgid "Move Titlebar Onscreen" msgstr "Liiguta tiitliriba ekraanile" #: js/ui/windowMenu.js:62 msgid "Always on Top" msgstr "Alati pealmine" #: js/ui/windowMenu.js:81 msgid "Always on Visible Workspace" msgstr "Alati kuvataval töölaual" #: js/ui/windowMenu.js:95 msgid "Move to Workspace Left" msgstr "Liiguta vasakpoolsele töölauale" #: js/ui/windowMenu.js:101 msgid "Move to Workspace Right" msgstr "Liiguta parempoolsele töölauale" #: js/ui/windowMenu.js:107 msgid "Move to Workspace Up" msgstr "Liiguta ülemisele töölauale" #: js/ui/windowMenu.js:113 msgid "Move to Workspace Down" msgstr "Liiguta alumisele töölauale" #: js/ui/windowMenu.js:131 msgid "Move to Monitor Up" msgstr "Liiguta ülemisele kuvarile" #: js/ui/windowMenu.js:140 msgid "Move to Monitor Down" msgstr "Liiguta alumisele kuvarile" #: js/ui/windowMenu.js:149 msgid "Move to Monitor Left" msgstr "Liiguta vasakpoolsele kuvarile" #: js/ui/windowMenu.js:158 msgid "Move to Monitor Right" msgstr "Liiguta parempoolsele kuvarile" #: src/calendar-server/evolution-calendar.desktop.in:3 msgid "Evolution Calendar" msgstr "Evolutioni kalender" #. Translators: Do NOT translate or transliterate this text (this is an icon file name)! #: src/calendar-server/evolution-calendar.desktop.in:6 msgid "evolution" msgstr "evolution" #: src/main.c:408 msgid "Print version" msgstr "Versiooniteabe kuvamine" #: src/main.c:414 msgid "Mode used by GDM for login screen" msgstr "Sisselogimise kuval kasutatav GDM-i režiim" #: src/main.c:420 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "Erirežiimi kasutamine, nt sisselogimisakna jaoks „gdm“" #: src/main.c:426 msgid "List possible modes" msgstr "Võimalike režiimide loetelu" #: src/shell-app.c:260 msgctxt "program" msgid "Unknown" msgstr "Tundmatu" #: src/shell-app.c:511 #, c-format msgid "Failed to launch “%s”" msgstr "„%s“ käivitamine nurjus" #: src/shell-keyring-prompt.c:730 msgid "Passwords do not match." msgstr "Paroolid ei kattu." #: src/shell-keyring-prompt.c:738 msgid "Password cannot be blank" msgstr "Parool ei saa olla tühi" #: src/shell-polkit-authentication-agent.c:348 msgid "Authentication dialog was dismissed by the user" msgstr "Kasutaja katkestas autentimisdialoogi" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1871 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u väljund" msgstr[1] "%u väljundit" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1881 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u sisend" msgstr[1] "%u sisendit" #: subprojects/gvc/gvc-mixer-control.c:2736 msgid "System Sounds" msgstr "Süsteemi helid" #~ msgid "There was an error loading the preferences dialog for %s:" #~ msgstr "%s jaoks eelistuste dialoogi laadimisel esines viga:" #~ msgid "%s all day." #~ msgstr "%s terve päeva." #~ msgid "%s, then %s later." #~ msgstr "%s, hiljem %s." #~ msgid "%s, then %s, followed by %s later." #~ msgstr "%s, siis %s, hiljem %s." #~ msgid "Feels like %s." #~ msgstr "Tundub nagu %s." #~ msgid "Show the message tray" #~ msgstr "Teateala näitamine" #~ msgid "GNOME Shell Extension Preferences" #~ msgstr "GNOME Shelli laienduste eelistused" #~ msgid "GNOME Shell (wayland compositor)" #~ msgstr "GNOME Shell (waylandi komposiitor)" #~ msgid "List of categories that should be displayed as folders" #~ msgstr "Kategooriad, mida tuleb kuvada kaustadena" #~ msgid "" #~ "Each category name in this list will be represented as folder in the " #~ "application view, rather than being displayed inline in the main view." #~ msgstr "" #~ "Kõiki selles loetelus olevaid kategooriaid kuvatakse rakenduste vaates " #~ "kaustadena, mitte peavaates teistega koos." #~ msgid "Show the week date in the calendar" #~ msgstr "Kalendris näidatakse kuupäeva nädalavormingus" #~ msgid "If true, display the ISO week date in the calendar." #~ msgstr "Kui määratud, kuvatakse kalendris kuupäeva ISO nädalavormingus." #~ msgid "Arrangement of buttons on the titlebar" #~ msgstr "Nuppude järjekord tiitliribal" #~ msgid "" #~ "This key overrides the key in org.gnome.desktop.wm.preferences when " #~ "running GNOME Shell." #~ msgstr "" #~ "See võti on ülimuslik võtme org.gnome.desktop.wm.preferences suhtes, kui " #~ "kasutatakse GNOME Shelli." #~ msgid "Select an extension to configure using the combobox above." #~ msgstr "Vali seadistatav laiendus kasutades ülemist valikukasti." #~ msgid "Nothing Scheduled" #~ msgstr "Ühtegi sündmust pole plaanitud" #~ msgid "Today" #~ msgstr "Täna" #~ msgid "Tomorrow" #~ msgstr "Homme" #~ msgid "This week" #~ msgstr "Käesolev nädal" #~ msgid "Next week" #~ msgstr "Järgmine nädal" #~ msgid "Removable Devices" #~ msgstr "Eemaldatavad seadmed" #~ msgid "Eject" #~ msgstr "Väljasta" #~ msgid "Invitation" #~ msgstr "Kutse" #~ msgid "Call" #~ msgstr "Helista" #~ msgid "File Transfer" #~ msgstr "Failiülekanne" #~ msgid "Chat" #~ msgstr "Vestlus" #~ msgid "Unmute" #~ msgstr "Heli peale" #~ msgid "Mute" #~ msgstr "Heli maha" #~ msgid "%A, %H:%M" #~ msgstr "%A, %H:%M" #~ msgid "%B %d, %H:%M" #~ msgstr "%d. %B, %H:%M" #~ msgid "%B %d %Y, %H:%M " #~ msgstr "%d. %B %Y, %H:%M" #~ msgid "Invitation to %s" #~ msgstr "Kutse: %s" #~ msgid "%s is inviting you to join %s" #~ msgstr "%s kutsub sind liituma: %s" #~ msgid "Decline" #~ msgstr "Keeldu" #~ msgid "Accept" #~ msgstr "Nõustu" #~ msgid "Video call from %s" #~ msgstr "%s tahab alustada videokõnet" #~ msgid "Call from %s" #~ msgstr "%s helistab" #~ msgid "Answer" #~ msgstr "Vasta" #~ msgid "%s is sending you %s" #~ msgstr "%s saadab sulle %s" #~ msgid "%s would like permission to see when you are online" #~ msgstr "%s palub sinu luba, et näha, kui sa oled võrgus" #~ msgid "Authentication failed" #~ msgstr "Autentimine nurjus" #~ msgid "Encryption error" #~ msgstr "Krüptimise viga" #~ msgid "Certificate not provided" #~ msgstr "Sertifikaati pole" #~ msgid "Certificate untrusted" #~ msgstr "Sertifikaat pole usaldusväärne" #~ msgid "Certificate expired" #~ msgstr "Sertifikaat on aegunud" #~ msgid "Certificate not activated" #~ msgstr "Sertifikaat pole aktiivne" #~ msgid "Certificate hostname mismatch" #~ msgstr "Sertifikaadi hostinimi ei klapi" #~ msgid "Certificate fingerprint mismatch" #~ msgstr "Sertifikaadi sõrmejälg ei klapi" #~ msgid "Certificate self-signed" #~ msgstr "Sertifikaat on ise-allkirjastatud" #~ msgid "Status is set to offline" #~ msgstr "Oled nüüd ühenduseta olekus" #~ msgid "Certificate is invalid" #~ msgstr "Sertifikaat on vigane" #~ msgid "Connection has been refused" #~ msgstr "Ühendusest keelduti" #~ msgid "Connection can't be established" #~ msgstr "Ühendust pole võimalik luua" #~ msgid "Connection has been lost" #~ msgstr "Ühendus katkes" #~ msgid "This account is already connected to the server" #~ msgstr "Selle kontoga on juba serverisse ühendutud" #~ msgid "" #~ "Connection has been replaced by a new connection using the same resource" #~ msgstr "Ühendus on asendatud sama kontot kasutades uue ühendusega" #~ msgid "The account already exists on the server" #~ msgstr "See konto on serveris juba olemas" #~ msgid "Server is currently too busy to handle the connection" #~ msgstr "Server on praegu ühendusega toimetulekuks liiga hõivatud" #~ msgid "Certificate has been revoked" #~ msgstr "Sertifikaat on tühistatud" #~ msgid "" #~ "Certificate uses an insecure cipher algorithm or is cryptographically weak" #~ msgstr "" #~ "Sertifikaat kasutab ebaturvalist šifrialgoritmini ning on nõrgalt " #~ "krüptitud" #~ msgid "" #~ "The length of the server certificate, or the depth of the server " #~ "certificate chain, exceed the limits imposed by the cryptography library" #~ msgstr "" #~ "Serveri sertifikaadi pikkus ehk sertifikaatide keti sügavus ületab " #~ "krüptograafiateegi määratud piiri" #~ msgid "Internal error" #~ msgstr "Sisemine viga" #~ msgid "Unable to connect to %s" #~ msgstr "Pole võimalik ühenduda võrguga %s" #~ msgid "View account" #~ msgstr "Konto kuvamine" #~ msgid "Open Calendar" #~ msgstr "Ava kalender" #~ msgid "Date & Time Settings" #~ msgstr "Kuupäeva ja kella sätted" #~ msgid "Open" #~ msgstr "Ava" #~ msgid "Remove" #~ msgstr "Eemalda" #~ msgid "Clear Messages" #~ msgstr "Kustuta teated" #~ msgid "Notification Settings" #~ msgstr "Märguannete sätted" #~ msgid "Tray Menu" #~ msgstr "Paneelimenüü" #~ msgid "No Messages" #~ msgstr "Teateid pole" #~ msgid "Message Tray" #~ msgstr "Teateala" #~ msgid "%d Connected Device" #~ msgid_plural "%d Connected Devices" #~ msgstr[0] "%d ühendatud seade" #~ msgstr[1] "%d ühendatud seadet" #~ msgid "UPS" #~ msgstr "UPS" #~ msgid "Battery" #~ msgstr "Aku" #~ msgid "Authorization request from %s" #~ msgstr "Autoriseerimise päring seadmelt %s" #~ msgid "Device %s wants to pair with this computer" #~ msgstr "Seade '%s' tahab selle arvutiga paarduda" #~ msgid "Device %s wants access to the service '%s'" #~ msgstr "Seade %s soovib ligipääsu teenusele '%s'" #~ msgid "Grant this time only" #~ msgstr "Luba ainult seekord" #~ msgid "Reject" #~ msgstr "Lükka tagasi" #~ msgid "Pairing confirmation for %s" #~ msgstr "Paardumise kinnitus seadmele %s" #~ msgid "" #~ "Please confirm whether the Passkey '%06d' matches the one on the device." #~ msgstr "Palun kontrolli, kas parool '%06d' kattub seadme parooliga." #~ msgid "Matches" #~ msgstr "Kattub" #~ msgid "Does not match" #~ msgstr "Ei kattu" #~ msgid "Pairing request for %s" #~ msgstr "Seadmega %s paardumise päring" #~ msgid "Please enter the PIN mentioned on the device." #~ msgstr "Palun sisesta seadme poolt öeldav PIN-kood." #~ msgid "OK" #~ msgstr "Olgu" #~ msgid "" #~ "Sorry, no wisdom for you today:\n" #~ "%s" #~ msgstr "" #~ "Vabandust, tänaseks tarkuseteri pole:\n" #~ "%s" #~ msgid "%s the Oracle says" #~ msgstr "Oraakel %s ütleb" #~ msgctxt "event list time" #~ msgid "%H\\u2236%M" #~ msgstr "%H\\u2236%M" #~ msgctxt "event list time" #~ msgid "%l\\u2236%M\\u2009%p" #~ msgstr "%l\\u2236%M\\u2009%p" #~ msgid "Settings Menu" #~ msgstr "Sätete menüü" #~ msgid "Screenshots" #~ msgstr "Ekraanipildid" #~ msgid "Record a screencast" #~ msgstr "Ekraanivideo salvestamine" #~ msgid "Whether to collect stats about applications usage" #~ msgstr "Kas rakenduste kasutuse kohta kogutakse andmeid" #~ msgid "" #~ "The shell normally monitors active applications in order to present the " #~ "most used ones (e.g. in launchers). While this data will be kept private, " #~ "you may want to disable this for privacy reasons. Please note that doing " #~ "so won't remove already saved data." #~ msgstr "" #~ "Shell tavaliselt seirab aktiivseid rakendusi, et näidata enamkasutatavaid " #~ "(näiteks käivitajaid). Kuigi neid andmeid hoitakse privaatselt, võid " #~ "privaatsuse suurendamiseks selle keelata. Selle keelamine siiski ei " #~ "eemalda juba salvestatud andmeid." #~ msgid "" #~ "Internally used to store the last IM presence explicitly set by the user. " #~ "The value here is from the TpConnectionPresenceType enumeration." #~ msgstr "" #~ "Kasutatakse kasutaja poolt viimati vahetult määratud kiirsuhtluse oleku " #~ "salvestamiseks. See väärtus pärineb TpConnectionPresenceType nummerdusest." #~ msgid "" #~ "Internally used to store the last session presence status for the user. " #~ "The value here is from the GsmPresenceStatus enumeration." #~ msgstr "" #~ "Kasutatakse kasutaja poolt viimati vahetult määratud kiirsuhtluse oleku " #~ "salvestamiseks. See väärtus pärineb GsmPresenceStatus nummerdusest." #~ msgid "Keybinding to toggle the screen recorder" #~ msgstr "Erkaanilindistaja lülitamise kiirklahv" #~ msgid "Keybinding to start/stop the builtin screen recorder." #~ msgstr "Kiirklahv erkaanilindistaja käivitamiseks/peatamiseks." #~ msgid "Framerate used for recording screencasts." #~ msgstr "Ekraanivideo lindistamisel kasutatav kaadrikiirus." #~ msgid "" #~ "The framerate of the resulting screencast recordered by GNOME Shell's " #~ "screencast recorder in frames-per-second." #~ msgstr "" #~ "GNOME Shelli lindistatava ekraanivideo kaadrisagedus (kaadrit sekundis)." #~ msgid "The gstreamer pipeline used to encode the screencast" #~ msgstr "GStreameri toru, mida ekraanivideo kodeerimiseks kasutatakse" #~ msgid "" #~ "Sets the GStreamer pipeline used to encode recordings. It follows the " #~ "syntax used for gst-launch. The pipeline should have an unconnected sink " #~ "pad where the recorded video is recorded. It will normally have a " #~ "unconnected source pad; output from that pad will be written into the " #~ "output file. However the pipeline can also take care of its own output - " #~ "this might be used to send the output to an icecast server via shout2send " #~ "or similar. When unset or set to an empty value, the default pipeline " #~ "will be used. This is currently 'vp8enc min_quantizer=13 max_quantizer=13 " #~ "cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux' and records to " #~ "WEBM using the VP8 codec. %T is used as a placeholder for a guess at the " #~ "optimal thread count on the system." #~ msgstr "" #~ "Määrab GStreameri toru, mida kasutatakse lindistuste kodeerimiseks. See " #~ "peab vastama gst-launch'i süntaksile. Torul peaks olema vaba plokk (sink " #~ "pad), kuhu lindistatav video salvestatakse. Tavaliselt on vaba plokk " #~ "olemas; selle ploki väljund kirjutatakse väljundfaili. Toru võib " #~ "hoolitseda ka enda väljundi eest - seda võib kasutada väljundi saatmiseks " #~ "icecast serverisse shout2send või sarnase tehnoloogia abil. Kui see on " #~ "määramata või väärtus on tühi, kasutatakse vaikimisi toru. See on praegu " #~ "'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 " #~ "threads=%T ! queue ! webmmux' ning lindistab WEBM vormingusse VP8 " #~ "koodekiga. %T asendatakse süsteemi oletatava optimaalseima lõimede " #~ "(thread) arvuga." #~ msgid "File extension used for storing the screencast" #~ msgstr "Ekraanivideo salvestamisel kasutatav faililaiend" #~ msgid "" #~ "The filename for recorded screencasts will be a unique filename based on " #~ "the current date, and use this extension. It should be changed when " #~ "recording to a different container format." #~ msgstr "" #~ "Ekraanivideo jaoks kasutatav failinimi on unikaalne, see sisaldab " #~ "salvestamise kuupäeva ja ka käesoleva võtmega määratud laiendit. Mõnda " #~ "teise konteinervormingusse salvestades tuleks ka sellele vormingule " #~ "vastav laiend määrata." #~ msgid "Session…" #~ msgstr "Seanss…" #~ msgid "Power" #~ msgstr "Vool" #~ msgid "Restart" #~ msgstr "Taaskäivita" #~ msgid "Screencast from %d %t" #~ msgstr "Ekraanivideo %d %t" #~ msgid "Click Log Out to quit these applications and log out of the system." #~ msgstr "" #~ "Nende rakenduste sulgemiseks ja süsteemist väljalogimiseks klõpsa nupule " #~ "Logi välja." #~ msgid "Logging out of the system." #~ msgstr "Süsteemist väljalogimine" #~ msgid "Click Power Off to quit these applications and power off the system." #~ msgstr "" #~ "Nende rakenduste sulgemiseks ja süsteemi väljalülitamiseks klõpsa nupule " #~ "Lülita välja." #~ msgid "Powering off the system." #~ msgstr "Süsteemi väljalülitamine." #~ msgid "Click Restart to quit these applications and restart the system." #~ msgstr "" #~ "Nende rakenduste sulgemiseks ja süsteemi taaskäivitamiseks klõpsa " #~ "\"Taaskäivita\"." #~ msgid "Restarting the system." #~ msgstr "Süsteemi taaskäivitamine." #~ msgid "Universal Access Settings" #~ msgstr "Universaalse ligipääsu sätted" #~ msgid "Visibility" #~ msgstr "Nähtavus" #~ msgid "Set Up a New Device…" #~ msgstr "Uue seadme häälestamine…" #~ msgid "Send Files…" #~ msgstr "Failide saatmine…" #~ msgid "Keyboard Settings" #~ msgstr "Klaviatuurisätted" #~ msgid "Mouse Settings" #~ msgstr "Hiiresätted" #~ msgid "Volume, network, battery" #~ msgstr "Helivaljus, võrk, aku" #~ msgid "disabled" #~ msgstr "keelatud" #~ msgid "cable unplugged" #~ msgstr "juhe eemaldatud" #~ msgid "More…" #~ msgstr "Veel…" #~ msgid "Wired" #~ msgstr "Juhtmega" #~ msgid "Auto Ethernet" #~ msgstr "Automaatne ethernet" #~ msgid "Auto broadband" #~ msgstr "Automaatne lairibaühendus" #~ msgid "Auto dial-up" #~ msgstr "Automaatne sissehelistamine" #~ msgid "Auto %s" #~ msgstr "Automaatne %s" #~ msgid "Auto bluetooth" #~ msgstr "Automaatne bluetooth" #~ msgid "Auto wireless" #~ msgstr "Automaatne juhtmeta ühendus" #~ msgid "%d %s %d %s remaining" #~ msgstr "jäänud %d %s ja %d %s" #~ msgid "AC Adapter" #~ msgstr "Laadija" #~ msgid "Laptop Battery" #~ msgstr "Sülearvuti aku" #~ msgid "Mouse" #~ msgstr "Hiir" #~ msgid "PDA" #~ msgstr "Elektronmärkmik" #~ msgid "Cell Phone" #~ msgstr "Mobiiltelefon" #~ msgid "Media Player" #~ msgstr "Meediaesitaja" #~ msgid "Tablet" #~ msgstr "Graafikalaud" #~ msgid "Computer" #~ msgstr "Arvuti" #~ msgctxt "device" #~ msgid "Unknown" #~ msgstr "Tundmatu" #~ msgid "Available" #~ msgstr "Saadaval" #~ msgid "Busy" #~ msgstr "Hõivatud" #~ msgid "Invisible" #~ msgstr "Nähtamatu" #~ msgid "Away" #~ msgstr "Eemal" #~ msgid "Idle" #~ msgstr "Jõude" #~ msgid "Your chat status will be set to busy" #~ msgstr "Sinu vestluse olekuks määratakse hõivatud" #~ msgid "" #~ "Notifications are now disabled, including chat messages. Your online " #~ "status has been adjusted to let others know that you might not see their " #~ "messages." #~ msgstr "" #~ "Märguanded on nüüd keelatud, sealhulgas vestlusteated. Sinu netiolekut " #~ "muudeti, et teised teaksid, et sa ei pruugi nende teateid näha." #~ msgid "Shutting down might cause them to lose unsaved work." #~ msgstr "Väljalülitamine võib põhjustada salvestamata töö kaotsimineku." #~ msgid "Show full name in the user menu" #~ msgstr "Kasutajamenüüs näidatakse kasutaja tervet nime" #~ msgid "Whether the users full name is shown in the user menu or not." #~ msgstr "Kas kasutajamenüüs näidatakse kasutaja kogu nime või mitte." #~ msgctxt "title" #~ msgid "Sign In" #~ msgstr "Sisselogimine" #~ msgid "APPLICATIONS" #~ msgstr "RAKENDUSED" #~ msgid "SETTINGS" #~ msgstr "SEADED" #~ msgid "tray" #~ msgstr "salv" #~ msgid "Your favorite Easter Egg" #~ msgstr "Sinu lemmiküllatusmuna" #~ msgid "United Kingdom" #~ msgstr "Suurbritannia" #~ msgid "Default" #~ msgstr "Vaikimisi" #~ msgid "Subscription request" #~ msgstr "Tellimuse päring" #~ msgid "%H:%M on Yesterday" #~ msgstr "Eile %H:%M" #~ msgid "Connection to %s failed" #~ msgstr "Ühendus %s nurjus" #~ msgid "Reconnect" #~ msgstr "Ühendu uuesti" #~ msgid "Wireless" #~ msgstr "Juhtmeta" #~ msgid "disabled OpenSearch providers" #~ msgstr "keelatud OpenSearch pakkujad" #~ msgid "Show time with seconds" #~ msgstr "Kellaaega näidatakse sekunditega" #~ msgid "If true, display seconds in time." #~ msgstr "Kui määratud, siis kuvatakse aja juures ka sekundeid." #~ msgid "Show date in clock" #~ msgstr "Kell näitab kuupäeva" #~ msgid "If true, display date in the clock, in addition to time." #~ msgstr "Kui määratud, siis kuvatakse kellaaja kõrval ka kuupäeva." #~ msgid "CONTACTS" #~ msgstr "KONTAKTID" #~ msgid "Failed to unmount '%s'" #~ msgstr "'%s' lahtihaakimine nurjus" #~ msgid "Retry" #~ msgstr "Proovi uuesti" #~ msgid "Connect to..." #~ msgstr "Ühendumine..." #~ msgid "PLACES & DEVICES" #~ msgstr "ASUKOHAD JA SEADMED" #~ msgid "Wrong password, please try again" #~ msgstr "Vale parool, palun proovi uuesti" #~ msgid "%s is busy." #~ msgstr "%s on hõivatud." #~ msgid "Hidden" #~ msgstr "Nähtamatu" #~ msgid "Power Off..." #~ msgstr "Lülita välja..." #~ msgid "Online Accounts" #~ msgstr "Netikontod" 0707010000022D000081A40000000000000000000000016712993F0001B221000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/eu.po# Basque translation for gnome-shell. # Copyright (C) 2011 gnome-shell's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-shell package. # # Julen Ruiz Aizpuru , 2011. # Iñaki Larrañaga Murgoitio , 2011, 2012, 2013, 2014, 2015, 2016, 2017. # Ibai Oihanguren Sala , 2020. # Asier Sarasua Garmendia , 2013, 2019, 2020, 2021, 2022, 2023, 2024. # msgid "" msgstr "Project-Id-Version: gnome-shell master\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues/\n" "POT-Creation-Date: 2024-08-06 15:18+0000\n" "PO-Revision-Date: 2024-08-18 12:15+0100\n" "Last-Translator: Asier Sarasua Garmendia \n" "Language-Team: Basque \n" "Language: eu\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-Project-Style: gnome\n" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "Abiarazleak" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate pinned app 1" msgstr "Aktibatu ainguratutako 1. aplikazioa" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate pinned app 2" msgstr "Aktibatu ainguratutako 2. aplikazioa" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate pinned app 3" msgstr "Aktibatu ainguratutako 3. aplikazioa" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate pinned app 4" msgstr "Aktibatu ainguratutako 4. aplikazioa" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate pinned app 5" msgstr "Aktibatu ainguratutako 5. aplikazioa" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate pinned app 6" msgstr "Aktibatu ainguratutako 6. aplikazioa" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate pinned app 7" msgstr "Aktibatu ainguratutako 7. aplikazioa" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate pinned app 8" msgstr "Aktibatu ainguratutako 8. aplikazioa" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate pinned app 9" msgstr "Aktibatu ainguratutako 9. aplikazioa" #: data/50-gnome-shell-launchers.xml:46 msgid "Open new window of pinned app 1" msgstr "Ireki leiho berria ainguratutako 1. aplikaziorako" #: data/50-gnome-shell-launchers.xml:50 msgid "Open new window of pinned app 2" msgstr "Ireki leiho berria ainguratutako 2. aplikaziorako" #: data/50-gnome-shell-launchers.xml:54 msgid "Open new window of pinned app 3" msgstr "Ireki leiho berria ainguratutako 3. aplikaziorako" #: data/50-gnome-shell-launchers.xml:58 msgid "Open new window of pinned app 4" msgstr "Ireki leiho berria ainguratutako 4. aplikaziorako" #: data/50-gnome-shell-launchers.xml:62 msgid "Open new window of pinned app 5" msgstr "Ireki leiho berria ainguratutako 5. aplikaziorako" #: data/50-gnome-shell-launchers.xml:66 msgid "Open new window of pinned app 6" msgstr "Ireki leiho berria ainguratutako 6. aplikaziorako" #: data/50-gnome-shell-launchers.xml:70 msgid "Open new window of pinned app 7" msgstr "Ireki leiho berria ainguratutako 7. aplikaziorako" #: data/50-gnome-shell-launchers.xml:74 msgid "Open new window of pinned app 8" msgstr "Ireki leiho berria ainguratutako 8. aplikaziorako" #: data/50-gnome-shell-launchers.xml:78 msgid "Open new window of pinned app 9" msgstr "Ireki leiho berria ainguratutako 9. aplikaziorako" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2274 msgid "Screenshots" msgstr "Pantaila-argazkiak" #: data/50-gnome-shell-screenshots.xml:9 #: data/org.gnome.shell.gschema.xml.in:287 msgid "Take a screenshot interactively" msgstr "Atera pantaila-argazki bat modu dinamikoan" #: data/50-gnome-shell-screenshots.xml:12 #: data/org.gnome.shell.gschema.xml.in:299 msgid "Take a screenshot" msgstr "Atera pantaila-argazki bat" #: data/50-gnome-shell-screenshots.xml:15 #: data/org.gnome.shell.gschema.xml.in:295 msgid "Take a screenshot of a window" msgstr "Atera leiho baten pantaila-argazkia" #: data/50-gnome-shell-screenshots.xml:18 #: data/org.gnome.shell.gschema.xml.in:291 msgid "Record a screencast interactively" msgstr "Grabatu pantailaren bideo labur bat modu dinamikoan" #: data/50-gnome-shell-system.xml:6 js/ui/messageTray.js:1298 msgid "System" msgstr "Sistema" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "Erakutsi jakinarazpen-zerrenda" #: data/50-gnome-shell-system.xml:12 msgid "Open the quick settings menu" msgstr "Ireki ezarpen azkarren menua" #: data/50-gnome-shell-system.xml:15 msgid "Focus the active notification" msgstr "Fokuratu jakinarazpen aktiboa" #: data/50-gnome-shell-system.xml:18 msgid "Show the overview" msgstr "Erakutsi ikuspegi orokorra" #: data/50-gnome-shell-system.xml:21 msgid "Show all apps" msgstr "Erakutsi aplikazio guztiak" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "GNOME Shell" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "Leiho-kudeaketa eta aplikazioak abiaraztea" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "Gaitu garatzaile eta probatzaileentzako barne-tresnak Alt-F2 bitartez" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "Barneko arazte- eta gainbegiraketa-tresnen atzipena onartzen du Alt-F2 elkarrizketa-koadroa erabiliz." #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "Gaituko diren hedapenen UUIDak" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "GNOME Shell gehigarriek UUID propietatea dute; kargatu beharko liratekeen gehigarriak zerrendatzen ditu gako honek. Kargatzea nahi diren gehigarri guztiak zerrenda honetan agertu behar dute. Zerrenda hau alda dezakezu DBus-eko 'EnableExtension' (gaitu hedapena) eta 'DisableExtension' (desgaitu hedapena) metodoekin 'org.gnome.Shell'-en." #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "Desgaitzea behartuko den hedapenen UUIDak" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "GNOME Shell gehigarriek UUID propietatea dute; nahiz eta uneko moduan kargatuak izan, desgaitu egin beharko liratekeen gehigarriak zerrendatzen ditu gako honek. Zerrenda hau alda dezakezu DBus-eko 'EnableExtension' (gaitu hedapena) eta 'DisableExtension' (desgaitu hedapena) metodoekin 'org.gnome.Shell'-en. Gako honek lehentasuna du “enabled-extensions” ezarpenaren gainetik." #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "Desgaitu erabiltzailearen gehigarriak" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "“enabled-extension” ezarpenari eragin gabe erabiltzaileak gaitutako gehigarri guztiak desgaitu." #: data/org.gnome.shell.gschema.xml.in:45 msgid "Allow extension installation" msgstr "Baimendu hedapenak instalatzea" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "Allow users to install extensions in their home folder. If disabled, the " "InstallRemoteExtension D-Bus method will fail, and extensions are only " "loaded from system directories on startup. It does not affect extensions " "that are already loaded, so a change only takes full effect on the next " "login." msgstr "Baimendu erabiltzaileek hedapenak beren karpeta nagusian instalatu ditzaten. Desgaituta badago, InstallRemoteExtension D-Bus metodoak huts egingo da eta hedapenak sistemaren direktorioetatik soilik kargatuko dira abioan. Ez du eraginik jadanik kargatuta dauden hedapenetan; beraz, ez hurrengo saioa hasten denean soilik sartzen da indarrean." #: data/org.gnome.shell.gschema.xml.in:56 msgid "Disables the validation of extension version compatibility" msgstr "Hedapenaren bertsioaren bateragarritasunaren balidazioa desgaitzen du" #: data/org.gnome.shell.gschema.xml.in:57 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "GNOME Shell-ek unean exekutatzen ari den bertsioarekin bat datozen hedapenak soilik kargatzen ditu. Aukera hau gaitzean egiaztapen hau desgaitzen da eta hedapen guztiak kargatzen saiatzen da, onartzen duten bertsioari ez ikusi eginez." #: data/org.gnome.shell.gschema.xml.in:65 msgid "List of desktop file IDs for favorite applications" msgstr "Gogoko aplikazioen mahaigaineko fitxategien IDen zerrenda" #: data/org.gnome.shell.gschema.xml.in:66 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "Identifikadore horiei dagozkien aplikazioak bistaratuko dira gogokoen arean." #: data/org.gnome.shell.gschema.xml.in:73 msgid "History for command (Alt-F2) dialog" msgstr "Komandoen (Alt-F2) elkarrizketa-koadroaren historia" #. Translators: looking glass is a debugger and inspector tool, see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/docs/looking-glass.md #: data/org.gnome.shell.gschema.xml.in:78 msgid "History for the looking glass dialog" msgstr "Ikuskatzailearen elkarrizketa-koadroaren historia" #: data/org.gnome.shell.gschema.xml.in:82 msgid "Always show the “Log Out” action in the system menu" msgstr "Erakutsi beti “Amaitu saioa” ekintza sistema-menuan" #: data/org.gnome.shell.gschema.xml.in:83 msgid "" "This key overrides the automatic hiding of the “Log out” action in the " "system menu for logged-in situations where there is a single, local, non-" "system user and only a single available session type (e.g. GNOME on Wayland)." msgstr "Gako honek sistema-menuko “Amaitu saioa” ekintza automatikoki ezkutatzea indargabetzen du saioa hasitako egoeratan, sistemarena ez den erabiltzaile lokal bakarra eta saio mota erabilgarri bakarra (adibidez, GNOME Wayland gainean) dagoenean." #: data/org.gnome.shell.gschema.xml.in:92 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "Zifratutako edo urruneko fitxategi-sistemak muntatzeko pasahitza gogoratuko den ala ez" #: data/org.gnome.shell.gschema.xml.in:93 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "Shell-ak pasahitza eskatuko du zifratutako gailu bat edo urruneko fitxategi-sistema bat muntatzen denean. Pasahitza geroago erabiltzeko gorde badaiteke, “Gogoratu pasahitza” kontrol-laukia agertuko da. Gako honek kontrol-laukiaren egoera lehenetsia ezartzen du." #: data/org.gnome.shell.gschema.xml.in:102 msgid "The last selected non-default power profile" msgstr "Hautatutako azken energia-profil ez lehenetsia" #: data/org.gnome.shell.gschema.xml.in:103 msgid "" "Some systems support more than two power profiles. In order to still support " "toggling between two profiles, this key records the last selected non-" "default profile." msgstr "Zenbait sistemak bi energia-profil baino gehiago onartzen dituzte. Bi profilen artean txandakatzea ahalbidetzeko, gako honek hautatutako azken profil ez lehenetsia erregistratzen du." #: data/org.gnome.shell.gschema.xml.in:111 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "“Ongi etorri GNOMEra“ elkarrizketa-koadroa zein bertsioarekin erakutsi zen azken aldian" #: data/org.gnome.shell.gschema.xml.in:112 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can " "be used to effectively disable the dialog." msgstr "Gako honek zehazten du “Ongi etorri GNOMEra“ elkarrizketa-koadroa zein bertsiorekin erakutsi zen azken aldian. Kate hutsak adierazten du bertsio zaharrena, eta zenbaki handi batek adierazten du oraindik exisititzen ez den bertsio bat. Zenbaki handi hori elkarrizketa-koadroa desgaitzeko erabili daiteke." #: data/org.gnome.shell.gschema.xml.in:145 msgid "Layout of the app picker" msgstr "Aplikazio-hautatzailearen diseinua" #: data/org.gnome.shell.gschema.xml.in:146 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" msgstr "Aplikazio-hautatzailearen diseinua. Matrizeko sarrera bakoitza orri bat da. Orriak GNOME Shell-en agertzen diren ordenan biltegiratzen dira. Orri bakoizak “aplikazioaren ida” → 'datuak' bikote bat du. Une honetan, honako balioak gordetzen dira 'datuak': • “posizioa” moduan: aplikazio-ikonoak orrian duen posizioa." #: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:172 msgid "Keybinding to shift between overview states" msgstr "Ikuspegi orokorraren egoeren artean aldatzeko laster-tekla" #: data/org.gnome.shell.gschema.xml.in:166 msgid "Keybinding to shift between session, window picker and app grid" msgstr "Saioaren, leiho-aukeratzailearen eta aplikazio-saretaren artean aldatzeko laster-tekla" #: data/org.gnome.shell.gschema.xml.in:173 msgid "Keybinding to shift between app grid, window picker and session" msgstr "Aplikazio-saretaren, leiho-aukeratzailearen eta saioaren artean aldatzeko laster-tekla" #: data/org.gnome.shell.gschema.xml.in:179 msgid "Keybinding to open the “Show Applications” view" msgstr "“Erakutsi aplikazioak” bista irekitzeko laster-tekla" #: data/org.gnome.shell.gschema.xml.in:180 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "Jarduerak ikuspegi orokorraren “Erakutsi aplikazioak” ikuspegia irekitzeko laster-tekla." #: data/org.gnome.shell.gschema.xml.in:187 msgid "Keybinding to open the overview" msgstr "Ikuspegi orokorra bista irekitzeko laster-tekla" #: data/org.gnome.shell.gschema.xml.in:188 msgid "Keybinding to open the Activities Overview." msgstr "Jardueren ikuspegi orokorra irekitzeko laster-tekla" #: data/org.gnome.shell.gschema.xml.in:194 msgid "Keybinding to toggle the visibility of the notification list" msgstr "Jakinarazpenen zerrendaren ikusgaitasuna txandakatzeko laster-tekla" #: data/org.gnome.shell.gschema.xml.in:195 msgid "Keybinding to toggle the visibility of the notification list." msgstr "Jakinarazpenen zerrendaren ikusgaitasuna txandakatzeko laster-tekla." #: data/org.gnome.shell.gschema.xml.in:201 msgid "Keybinding to toggle the quick settings menu" msgstr "Ezarpen azkarren menua txandakatzeko laster-tekla" #: data/org.gnome.shell.gschema.xml.in:202 msgid "Keybinding to toggle the quick settings menu." msgstr "Ezarpen azkarren menua txandakatzeko laster-tekla." #: data/org.gnome.shell.gschema.xml.in:208 msgid "Keybinding to focus the active notification" msgstr "Jakinarazpen aktiboa fokuratzeko laster-tekla" #: data/org.gnome.shell.gschema.xml.in:209 msgid "Keybinding to focus the active notification." msgstr "Jakinarazpen aktiboa fokuratzeko laster-tekla." #: data/org.gnome.shell.gschema.xml.in:215 msgid "Switch to application 1" msgstr "Aldatu 1 aplikaziora" #: data/org.gnome.shell.gschema.xml.in:219 msgid "Switch to application 2" msgstr "Aldatu 2 aplikaziora" #: data/org.gnome.shell.gschema.xml.in:223 msgid "Switch to application 3" msgstr "Aldatu 3 aplikaziora" #: data/org.gnome.shell.gschema.xml.in:227 msgid "Switch to application 4" msgstr "Aldatu 4 aplikaziora" #: data/org.gnome.shell.gschema.xml.in:231 msgid "Switch to application 5" msgstr "Aldatu 5 aplikaziora" #: data/org.gnome.shell.gschema.xml.in:235 msgid "Switch to application 6" msgstr "Aldatu 6 aplikaziora" #: data/org.gnome.shell.gschema.xml.in:239 msgid "Switch to application 7" msgstr "Aldatu 7 aplikaziora" #: data/org.gnome.shell.gschema.xml.in:243 msgid "Switch to application 8" msgstr "Aldatu 8 aplikaziora" #: data/org.gnome.shell.gschema.xml.in:247 msgid "Switch to application 9" msgstr "Aldatu 9 aplikaziora" #: data/org.gnome.shell.gschema.xml.in:251 msgid "Open a new instance of application 1" msgstr "Ireki 1. aplikazioaren instantzia berria" #: data/org.gnome.shell.gschema.xml.in:255 msgid "Open a new instance of application 2" msgstr "Ireki 2. aplikazioaren instantzia berria" #: data/org.gnome.shell.gschema.xml.in:259 msgid "Open a new instance of application 3" msgstr "Ireki 3. aplikazioaren instantzia berria" #: data/org.gnome.shell.gschema.xml.in:263 msgid "Open a new instance of application 4" msgstr "Ireki 4. aplikazioaren instantzia berria" #: data/org.gnome.shell.gschema.xml.in:267 msgid "Open a new instance of application 5" msgstr "Ireki 5. aplikazioaren instantzia berria" #: data/org.gnome.shell.gschema.xml.in:271 msgid "Open a new instance of application 6" msgstr "Ireki 6. aplikazioaren instantzia berria" #: data/org.gnome.shell.gschema.xml.in:275 msgid "Open a new instance of application 7" msgstr "Ireki 7. aplikazioaren instantzia berria" #: data/org.gnome.shell.gschema.xml.in:279 msgid "Open a new instance of application 8" msgstr "Ireki 8. aplikazioaren instantzia berria" #: data/org.gnome.shell.gschema.xml.in:283 msgid "Open a new instance of application 9" msgstr "Ireki 9. aplikazioaren instantzia berria" #: data/org.gnome.shell.gschema.xml.in:308 #: data/org.gnome.shell.gschema.xml.in:335 msgid "Limit switcher to current workspace." msgstr "Mugatu aldatzailea uneko laneko areara." #: data/org.gnome.shell.gschema.xml.in:309 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "TRUE (egia) bada, uneko laneko arean leihoak dituzten aplikazioak soilik erakutsiko dira aldatzailean. Bestela, aplikazio guztiak egongo dira." #: data/org.gnome.shell.gschema.xml.in:326 msgid "The application icon mode." msgstr "Aplikazio-ikonoaren modua." #: data/org.gnome.shell.gschema.xml.in:327 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-only” " "(shows only the application icon) or “both”." msgstr "Leihoak aldatzaileak nola erakusten diren konfiguratzen du. Aukera posibleak “thumbnail-only” (leihoaren miniatura erakustea), “app-icon-only” (aplikazio-ikonoa erakustea soilik) edo “both” (biak)." #: data/org.gnome.shell.gschema.xml.in:336 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "TRUE (egia) bada, uneko laneko arean leihoak soilik erakutsiko dira aldatzailean. Bestela, leiho guztiak egongo dira." #: data/org.gnome.shell.gschema.xml.in:346 msgid "Locations" msgstr "Kokalekuak" #: data/org.gnome.shell.gschema.xml.in:347 msgid "The locations to show in world clocks" msgstr "Munduko ordularietan erakutsiko diren kokalekuak" #: data/org.gnome.shell.gschema.xml.in:357 msgid "Automatic location" msgstr "Kokaleku automatikoa" #: data/org.gnome.shell.gschema.xml.in:358 msgid "Whether to fetch the current location or not" msgstr "Uneko kokalekua atzituko den ala ez" #: data/org.gnome.shell.gschema.xml.in:365 msgid "Location" msgstr "Kokalekua" #: data/org.gnome.shell.gschema.xml.in:366 msgid "The location for which to show a forecast" msgstr "Iragarpena erakutsiko zaion kokalekua" #. Keep in sync with subprojects/extensions-app #: data/org.gnome.Shell.Extensions.desktop.in.in:5 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/data/ui/extensions-window.ui:57 msgid "Extensions" msgstr "Hedapenak" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "Sareko saio-hasiera" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:275 msgid "Something’s gone wrong" msgstr "Zerbait gaizki joan da" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "Barkatu, arazo bat gertatu da: hedapen honen ezarpenak ezin dira erakutsi. Arazoa hedapenaren egileei jakinarazi diezaiezun gomendatzen dizugu." #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "Xehetasun teknikoak" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "Webgune nagusia" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 msgid "Visit extension homepage" msgstr "Bisitatu hedapenaren webgunea" #: js/gdm/authPrompt.js:151 js/gdm/loginDialog.js:465 #: js/ui/audioDeviceSelection.js:66 js/ui/components/networkAgent.js:113 #: js/ui/components/polkitAgent.js:144 js/ui/endSessionDialog.js:437 #: js/ui/extensionDownloader.js:276 js/ui/shellMountOperation.js:382 #: js/ui/shellMountOperation.js:392 msgid "Cancel" msgstr "Utzi" #: js/gdm/authPrompt.js:317 js/ui/components/networkAgent.js:213 #: js/ui/components/networkAgent.js:233 js/ui/components/networkAgent.js:265 #: js/ui/components/networkAgent.js:298 js/ui/components/networkAgent.js:337 #: js/ui/components/networkAgent.js:350 js/ui/components/polkitAgent.js:286 #: js/ui/shellMountOperation.js:332 msgid "Password" msgstr "Pasahitza" #: js/gdm/loginDialog.js:326 msgid "Choose Session" msgstr "Aukeratu saioa" #. Translators: is running for #: js/gdm/loginDialog.js:423 #, javascript-format msgid "" "Remote login is not possible because a remote session is already running for " "%s. To login remotely, you must log out from the remote session or force " "stop it." msgstr "Ezin da urrunetik saioa hasi urruneko saio bat jadanik exekutatzen ari delako %s erabiltzailearentzako. Urruneko saio-hasiera ahalbidetzeko, lehenago abian dagoen urruneko saioa amaitu behar da edo hura geldiarazi behar da." #. Translators: is running for #: js/gdm/loginDialog.js:426 #, javascript-format msgid "" "Login is not possible because a remote session is already running for %s. To " "login, you must log out from the remote session or force stop it." msgstr "Ezin da saioa hasi urruneko saio bat jadanik exekutatzen ari delako %s erabiltzailearentzako. Saio-hasiera ahalbidetzeko, lehenago abian dagoen urruneko saioa amaitu behar da edo hura geldiarazi behar da." #. Translators: is running for #: js/gdm/loginDialog.js:429 #, javascript-format msgid "" "Remote login is not possible because a local session is already running for " "%s. To login remotely, you must log out from the local session or force stop " "it." msgstr "Ezin da urrunetik saioa hasi saio lokal bat jadanik exekutatzen ari delako %s erabiltzailearentzako. Urruneko saio-hasiera ahalbidetzeko, lehenago abian dagoen saio lokala amaitu behar da edo hura geldiarazi behar da." #. Translators: is running for #: js/gdm/loginDialog.js:432 #, javascript-format msgid "" "Login is not possible because a session is already running for %s. To login, " "you must log out from the session or force stop it." msgstr "Ezin da saioa hasi beste saio bat jadanik exekutatzen ari delako %s erabiltzailearentzako. Saio-hasiera ahalbidetzeko, lehenago abian dagoen saioa amaitu behar da edo hura geldiarazi behar da." #: js/gdm/loginDialog.js:441 msgid "Session Already Running" msgstr "Saio bat jadanik abian dago" #: js/gdm/loginDialog.js:453 msgid "" "Force stopping will quit any running apps and processes, and could result in " "data loss" msgstr "Gelditzea behartzen bada, exekutatzen ari diren aplikazio eta prozesu guztiak amaituko dira eta datuak galdu daitezke" #: js/gdm/loginDialog.js:473 msgid "Force Stop" msgstr "Behartu gelditzea" #: js/gdm/loginDialog.js:541 msgid "Not listed?" msgstr "Ez zaude zerrendan?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:1009 #, javascript-format msgid "(e.g., user or %s)" msgstr "(adib., erabiltzailea edo %s)" #: js/gdm/loginDialog.js:1014 js/ui/components/networkAgent.js:257 #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:326 msgid "Username" msgstr "Erabiltzaile-izena" #: js/gdm/loginDialog.js:1080 msgid "Login Attempt Timed Out" msgstr "Saio-hasieraren denbora agortu da" #: js/gdm/loginDialog.js:1081 msgid "Login took too long, please try again" msgstr "Saio-hasierak denbora gehiegi hartu du, saiatu berriro" #: js/gdm/loginDialog.js:1426 msgid "Login Window" msgstr "Saio-hasierako leihoa" #: js/gdm/util.js:496 msgid "Authentication error" msgstr "Autentifikazio-errorea" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:727 msgid "(or swipe finger across reader)" msgstr "(edo lerratu hatza irakurlean zehar)" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:732 msgid "(or place finger on reader)" msgstr "(edo kokatu hatza irakurlean)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:91 msgctxt "search-result" msgid "Power Off" msgstr "Itzali" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:94 msgid "power off;poweroff;shutdown;halt;stop" msgstr "itzali;amatatu;gelditu;geratu;utzi" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:99 msgctxt "search-result" msgid "Restart" msgstr "Berrabiarazi" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:102 msgid "reboot;restart;" msgstr "berrabiarazi;berrekin;" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:107 msgctxt "search-result" msgid "Lock Screen" msgstr "Blokeatu pantaila" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:110 msgid "lock screen" msgstr "blokeatu pantaila" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:115 msgctxt "search-result" msgid "Log Out" msgstr "Amaitu saioa" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:118 msgid "logout;log out;sign off" msgstr "amaitu saioa;saioa amaitu;deskonektatu" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:123 msgctxt "search-result" msgid "Suspend" msgstr "Eseki" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:126 msgid "suspend;sleep" msgstr "eseki;lo" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:131 msgctxt "search-result" msgid "Switch User" msgstr "Aldatu erabiltzailea" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:134 msgid "switch user" msgstr "aldatu erabiltzailea" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:141 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "blokeatu orientazioa;desblokeatu orientazioa;pantaila;biraketa" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:146 msgctxt "search-result" msgid "Take a Screenshot" msgstr "Atera pantaila-argazki bat" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:149 msgid "screenshot;screencast;snip;capture;record" msgstr "pantaila-argazkia;pantaila-bideoa;mozketa;kaptura;grabazioa" #: js/misc/systemActions.js:249 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "Desblokeatu pantailaren biraketa" #: js/misc/systemActions.js:250 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "Pantailaren blokeoaren biraketa" #: js/misc/util.js:130 msgid "Command not found" msgstr "Ez da komandoa aurkitu" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:170 msgid "Could not parse command:" msgstr "Ezin izan da komandoa analizatu:" #: js/misc/util.js:178 #, javascript-format msgid "Execution of “%s” failed:" msgstr "Huts egin du '%s' exekutatzean:" #: js/misc/dateUtils.js:69 msgid "Just now" msgstr "Orain" #: js/misc/dateUtils.js:72 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "duela minutu %d" msgstr[1] "duela %d minutu" #: js/misc/dateUtils.js:79 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "duela ordu %d" msgstr[1] "duela %d ordu" #: js/misc/dateUtils.js:85 js/ui/dateMenu.js:183 msgid "Yesterday" msgstr "Atzo" #: js/misc/dateUtils.js:88 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "duela egun %d" msgstr[1] "duela %d egun" #: js/misc/dateUtils.js:95 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "duela aste %d" msgstr[1] "duela %d aste" #: js/misc/dateUtils.js:102 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "duela hilabete %d" msgstr[1] "duela %d hilabete" #: js/misc/dateUtils.js:108 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "duela urte %d" msgstr[1] "duela %d urte" #. Translators: Time in 24h format #: js/misc/dateUtils.js:155 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/dateUtils.js:161 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "Atzo, %H:%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/dateUtils.js:167 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/dateUtils.js:173 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%B %-d, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/dateUtils.js:179 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%Y %B %-d, %H∶%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/dateUtils.js:184 msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/dateUtils.js:190 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "Atzo, %I:%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/dateUtils.js:196 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/dateUtils.js:202 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%B %-d, %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/dateUtils.js:208 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%Y %B %-d, %l∶%M %p" #: js/portalHelper/main.js:98 msgid "Your connection seems to be secure" msgstr "Zure konexioa segurua dela dirudi" #: js/portalHelper/main.js:104 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "Wifigune honetarako saio-hasierako zure konexioa ez da segurua. Orri honetan sartzen dituzun pasahitzak edo bestelako informazioak inguruko beste jendeek ikus ditzakete." #: js/portalHelper/main.js:115 msgid "Hotspot Login" msgstr "Wifigunearen saio-hasiera" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:51 js/ui/inhibitShortcutsDialog.js:92 msgid "Deny" msgstr "Ukatu" #: js/ui/accessDialog.js:52 js/ui/inhibitShortcutsDialog.js:101 msgid "Allow" msgstr "Baimendu" #: js/ui/appDisplay.js:1769 msgid "Unnamed Folder" msgstr "Izenik gabeko karpeta" #: js/ui/appFavorites.js:163 #, javascript-format msgid "%s has been pinned to the dash." msgstr "%s panelean ainguratu da." #: js/ui/appFavorites.js:194 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "%s paneletik askatu da." #: js/ui/appFavorites.js:208 js/ui/main.js:281 msgid "Undo" msgstr "Desegin" #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:49 msgid "Open Windows" msgstr "Leiho irekiak" #: js/ui/appMenu.js:57 msgid "New Window" msgstr "Leiho berria" #: js/ui/appMenu.js:84 msgid "App Details" msgstr "Aplikazioaren xehetasunak" #: js/ui/appMenu.js:100 msgid "Quit" msgstr "Irten" #: js/ui/appMenu.js:160 js/ui/dash.js:248 msgid "Unpin" msgstr "Askatu" #: js/ui/appMenu.js:161 msgid "Pin to Dash" msgstr "Ainguratu panelean" #: js/ui/appMenu.js:178 msgid "Launch using Integrated Graphics Card" msgstr "Abiarazi txartel grafiko integratua erabiliz" #: js/ui/appMenu.js:179 msgid "Launch using Discrete Graphics Card" msgstr "Abiarazi txartel grafiko diskretua erabiliz" #: js/ui/audioDeviceSelection.js:46 msgid "Select Audio Device" msgstr "Hautatu audioaren gailua" #: js/ui/audioDeviceSelection.js:61 js/ui/status/volume.js:81 msgid "Sound Settings" msgstr "Soinu-ezarpenak" #: js/ui/audioDeviceSelection.js:74 msgid "Headphones" msgstr "Entzungailua" #: js/ui/audioDeviceSelection.js:76 msgid "Headset" msgstr "Entzungailua+mikrofonoa" #: js/ui/audioDeviceSelection.js:78 js/ui/status/volume.js:356 msgid "Microphone" msgstr "Mikrofonoa" #: js/ui/backgroundMenu.js:13 msgid "Change Background…" msgstr "Aldatu atzeko planoa…" #: js/ui/backgroundMenu.js:15 msgid "Display Settings" msgstr "Pantailaren ezarpenak" #: js/ui/backgroundMenu.js:16 msgid "Settings" msgstr "Ezarpenak" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:37 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:63 msgctxt "grid sunday" msgid "S" msgstr "I" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:65 msgctxt "grid monday" msgid "M" msgstr "A" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:67 msgctxt "grid tuesday" msgid "T" msgstr "A" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:69 msgctxt "grid wednesday" msgid "W" msgstr "A" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:71 msgctxt "grid thursday" msgid "T" msgstr "O" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:73 msgctxt "grid friday" msgid "F" msgstr "O" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:75 msgctxt "grid saturday" msgid "S" msgstr "L" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:426 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:436 msgid "%OB %Y" msgstr "%OB %Y" #: js/ui/calendar.js:498 msgid "Previous month" msgstr "Aurreko hila" #: js/ui/calendar.js:516 msgid "Next month" msgstr "Hurrengo hila" #: js/ui/calendar.js:667 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:726 msgid "Week %V" msgstr "%V. astea" #: js/ui/calendar.js:918 msgid "No Notifications" msgstr "Jakinarazpenik ez" #: js/ui/calendar.js:974 msgid "Do Not Disturb" msgstr "Ez gogaitu" #: js/ui/calendar.js:995 msgid "Clear" msgstr "Garbitu" #: js/ui/calendar.js:999 msgctxt "action" msgid "Clear all notifications" msgstr "Garbitu jakinarazpen guztiak" #. Translators: %s is an application name #: js/ui/closeDialog.js:42 #, javascript-format msgid "“%s” Is Not Responding" msgstr "“%s” aplikazioak ez du erantzuten" #: js/ui/closeDialog.js:43 msgid "" "You may choose to wait a short while for it to continue or force the app to " "quit entirely" msgstr "Pixka bat itxaron dezakezu ea jarraitzen duen edo aplikazioaren amaiera behartu dezakezu" #: js/ui/closeDialog.js:71 msgid "Force Quit" msgstr "Behartu irtetera" #: js/ui/closeDialog.js:76 msgid "Wait" msgstr "Itxaron" #: js/ui/components/automountManager.js:82 msgid "External drive connected" msgstr "Kanpoko unitatea konektatuta" #: js/ui/components/automountManager.js:94 msgid "External drive disconnected" msgstr "Kanpoko unitatea deskonektatuta" #: js/ui/components/automountManager.js:208 msgid "Unable to unlock volume" msgstr "Ezin da bolumena desblokeatu" #: js/ui/components/automountManager.js:209 msgid "The installed udisks version does not support the PIM setting" msgstr "Instalatutako udisks bertsioak ez du onartzen PIM ezarpena" #. Translators: %s is the name of a partition on a external drive #: js/ui/components/autorunManager.js:189 #, javascript-format msgid "“%s” connected" msgstr "“%s” konektatu da" #: js/ui/components/autorunManager.js:190 msgid "Disk can now be used" msgstr "Diskoa erabili daiteke" #: js/ui/components/autorunManager.js:202 #, javascript-format msgid "Open with %s" msgstr "Ireki honekin: %s" #: js/ui/components/networkAgent.js:95 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router" msgstr "Bestela, zure routerreko \"WPS\" botoia sakatuta konektatu zaitezke" #: js/ui/components/networkAgent.js:107 js/ui/status/bluetooth.js:245 #: js/ui/status/network.js:360 js/ui/status/network.js:444 msgid "Connect" msgstr "Konektatu" #: js/ui/components/networkAgent.js:222 msgid "Key" msgstr "Gakoa" #: js/ui/components/networkAgent.js:273 js/ui/components/networkAgent.js:312 msgid "Private key password" msgstr "Gako pribatuaren pasahitza" #: js/ui/components/networkAgent.js:306 msgid "Identity" msgstr "Identitatea" #: js/ui/components/networkAgent.js:332 msgid "Service" msgstr "Zerbitzua" #: js/ui/components/networkAgent.js:370 js/ui/components/networkAgent.js:406 #: js/ui/components/networkAgent.js:743 js/ui/components/networkAgent.js:764 msgid "Authentication required" msgstr "Autentifikazioa behar da" #: js/ui/components/networkAgent.js:371 js/ui/components/networkAgent.js:744 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network “%s”" msgstr "Pasahitzak edo zifratze-gakoak behar dira haririk gabeko “%s” sarera sartzeko" #: js/ui/components/networkAgent.js:375 js/ui/components/networkAgent.js:748 msgid "Wired 802.1X authentication" msgstr "Haridun 802.1X autentifikazioa" #: js/ui/components/networkAgent.js:378 msgid "Network name" msgstr "Sarearen izena" #: js/ui/components/networkAgent.js:386 js/ui/components/networkAgent.js:752 msgid "DSL authentication" msgstr "DSL autentifikazioa" #: js/ui/components/networkAgent.js:393 js/ui/components/networkAgent.js:757 msgid "PIN code required" msgstr "PIN kodea behar da" #: js/ui/components/networkAgent.js:394 js/ui/components/networkAgent.js:758 msgid "PIN code is needed for the mobile broadband device" msgstr "PIN kodea behar da banda zabal mugikorreko gailuarentzako" #: js/ui/components/networkAgent.js:396 msgid "PIN" msgstr "PINa" #: js/ui/components/networkAgent.js:407 js/ui/components/networkAgent.js:749 #: js/ui/components/networkAgent.js:753 js/ui/components/networkAgent.js:765 #: js/ui/components/networkAgent.js:769 #, javascript-format msgid "A password is required to connect to “%s”" msgstr "Pasahitza behar da '%s' sarearekin konektatzeko" #: js/ui/components/networkAgent.js:768 msgid "VPN password" msgstr "VPN pasahitza" #: js/ui/components/polkitAgent.js:44 msgid "Authentication Required" msgstr "Autentifikazioa behar da" #: js/ui/components/polkitAgent.js:84 msgid "Administrator" msgstr "Administratzailea" #: js/ui/components/polkitAgent.js:149 msgid "Authenticate" msgstr "Autentifikatu" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:263 js/ui/shellMountOperation.js:415 msgid "Sorry, that didn’t work. Please try again." msgstr "Huts egin du. Saiatu berriro." #: js/ui/ctrlAltTab.js:23 js/ui/overviewControls.js:404 msgid "Windows" msgstr "Leihoak" #: js/ui/dash.js:204 js/ui/dash.js:250 msgid "Show Apps" msgstr "Erakutsi aplikazioak" #. Translators: this is the name of the dock/favorites area on #. the bottom of the overview #: js/ui/dash.js:408 msgid "Dash" msgstr "Atrakagarria" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:99 msgid "%B %-d %Y" msgstr "%Y %B %-d" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:106 msgid "%A %B %e %Y" msgstr "%A, %Y %B %e" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:172 msgctxt "calendar heading" msgid "%B %-d" msgstr "%B %-d" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:175 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%Y %B %-d" #: js/ui/dateMenu.js:181 msgid "Today" msgstr "Gaur" #: js/ui/dateMenu.js:185 msgid "Tomorrow" msgstr "Bihar" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:216 msgctxt "event list time" msgid "All Day" msgstr "Egun osoa" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:238 msgid "%m/%d" msgstr "%m/%d" #: js/ui/dateMenu.js:289 msgid "No Events" msgstr "Gertaerarik ez" #: js/ui/dateMenu.js:411 msgid "Add World Clocks…" msgstr "Gehitu munduko ordulariak…" #: js/ui/dateMenu.js:412 msgid "World Clocks" msgstr "Munduko ordulariak" #: js/ui/dateMenu.js:702 msgid "Loading…" msgstr "Kargatzen…" #: js/ui/dateMenu.js:712 msgid "Go Online for Weather Information" msgstr "Konektatu eguraldiaren informazioa lortzeko" #: js/ui/dateMenu.js:714 msgid "Weather Information Unavailable" msgstr "Eguraldiaren informazioa ez dago eskuragarri" #: js/ui/dateMenu.js:724 msgid "Weather" msgstr "Eguraldia" #: js/ui/dateMenu.js:726 msgid "Select Weather Location…" msgstr "Hautatu eguraldiaren kokalekua…" #: js/ui/endSessionDialog.js:47 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "Amaitu %s(r)en saioa" #: js/ui/endSessionDialog.js:48 msgctxt "title" msgid "Log Out" msgstr "Amaitu saioa" #: js/ui/endSessionDialog.js:51 #, javascript-format msgid "%s will be logged out automatically in %d second" msgid_plural "%s will be logged out automatically in %d seconds" msgstr[0] "%s erabiltzailearen saioa automatikoki %d segundotan amaituko da" msgstr[1] "%s erabiltzailearen saioa automatikoki %d segundotan amaituko da." #: js/ui/endSessionDialog.js:57 #, javascript-format msgid "You will be logged out automatically in %d second" msgid_plural "You will be logged out automatically in %d seconds" msgstr[0] "Zure saioa automatikoki %d segundotan amaituko da" msgstr[1] "Zure saioa automatikoki %d segundotan amaituko da." #: js/ui/endSessionDialog.js:64 msgctxt "button" msgid "Log Out" msgstr "Amaitu saioa" #: js/ui/endSessionDialog.js:70 js/ui/status/system.js:174 msgctxt "title" msgid "Power Off" msgstr "Itzali" #: js/ui/endSessionDialog.js:71 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Instalatu eguneratzeak eta itzali" #: js/ui/endSessionDialog.js:74 #, javascript-format msgid "The system will power off automatically in %d second" msgid_plural "The system will power off automatically in %d seconds" msgstr[0] "Sistema automatikoki segundo %dean itzaliko da" msgstr[1] "Sistema automatikoki %d segundotan itzaliko da." #: js/ui/endSessionDialog.js:78 js/ui/endSessionDialog.js:97 msgctxt "checkbox" msgid "Install pending software updates" msgstr "Instalatu falta diren softwareen eguneratzeak" #: js/ui/endSessionDialog.js:82 msgctxt "button" msgid "Power Off" msgstr "Itzali" #: js/ui/endSessionDialog.js:89 msgctxt "title" msgid "Restart" msgstr "Berrabiarazi" #: js/ui/endSessionDialog.js:90 msgctxt "title" msgid "Install Updates & Restart" msgstr "Instalatu eguneratzeak eta berrabiarazi" #: js/ui/endSessionDialog.js:93 #, javascript-format msgid "The system will restart automatically in %d second" msgid_plural "The system will restart automatically in %d seconds" msgstr[0] "Sistema automatikoki segundo %dean berrabiaraziko da" msgstr[1] "Sistema automatikoki %d segundotan berrabiaraziko da." #: js/ui/endSessionDialog.js:101 msgctxt "button" msgid "Restart" msgstr "Berrabiarazi" #: js/ui/endSessionDialog.js:109 msgctxt "title" msgid "Restart & Install Updates" msgstr "Berrabiarazi eta instalatu eguneratzeak" #: js/ui/endSessionDialog.js:112 #, javascript-format msgid "The system will automatically restart and install updates in %d second" msgid_plural "" "The system will automatically restart and install updates in %d seconds" msgstr[0] "Sistema automatikoki berrabiaraziko da eta eguneratzeak instalatuko ditu segundo %dean" msgstr[1] "Sistema automatikoki berrabiaraziko da eta eguneratzeak instalatuko ditu %d segundotan" #: js/ui/endSessionDialog.js:119 js/ui/endSessionDialog.js:140 msgctxt "button" msgid "Restart & Install" msgstr "Berrabiarazi eta instalatu" #: js/ui/endSessionDialog.js:121 msgctxt "button" msgid "Install & Power Off" msgstr "Instalatu eta itzali" #: js/ui/endSessionDialog.js:122 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Itzali eguneratze guztiak instalatu ondoren" #: js/ui/endSessionDialog.js:129 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "Berrabiarazi eta instalatu bertsio-berritzea" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:134 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "%s %s instalatuko da berrabiarazi ondoren. Bertsio-berritzearen instalazioak denbora luzea beharko du, ziurtatu zaitez babeskopia eginda daukazula eta ordenagailua entxufatuta dagoela." #: js/ui/endSessionDialog.js:283 msgid "Low battery power: please plug in before installing updates" msgstr "Energia gutxi baterian: entxufatu eguneratzeak instalatu aurretik" #: js/ui/endSessionDialog.js:292 msgid "Some applications are busy or have unsaved work" msgstr "Aplikazio batzuk lanpetuta daude edo gorde gabeko lanak dituzte" #: js/ui/endSessionDialog.js:297 msgid "Other users are logged in" msgstr "Beste erabiltzaile batzuek saioa hasita dute" #: js/ui/endSessionDialog.js:467 msgctxt "button" msgid "Boot Options" msgstr "Abioko aukerak" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:672 #, javascript-format msgid "%s (remote)" msgstr "%s (urrunekoa)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:675 #, javascript-format msgid "%s (console)" msgstr "%s (kontsola)" #: js/ui/extensionDownloader.js:280 msgid "Install" msgstr "Instalatu" #: js/ui/extensionDownloader.js:286 msgid "Install Extension" msgstr "Instalatu hedapena" #: js/ui/extensionDownloader.js:287 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "Deskargatu eta instalatu “%s” extensions.gnome.org gunetik?" #: js/ui/extensionSystem.js:352 msgid "Extension Updates Available" msgstr "Hedapenen eguneratzeak eskuragarri" #: js/ui/extensionSystem.js:353 msgid "Extension updates are ready to be installed" msgstr "Hedapenen eguneratzeak instalatzeko prest daude" #: js/ui/inhibitShortcutsDialog.js:70 msgid "Allow inhibiting shortcuts" msgstr "Onartu lasterbideak galaraztea" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:73 #, javascript-format msgid "The app %s wants to inhibit shortcuts" msgstr "%s aplikazioak lasterbideak galarazi nahi ditu" #: js/ui/inhibitShortcutsDialog.js:74 msgid "An app wants to inhibit shortcuts" msgstr "Aplikazio batek lasterbideak galarazi nahi ditu" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:81 #, javascript-format msgid "You can restore shortcuts by pressing %s" msgstr "Lasterbideak leheneratzeko, sakatu %s" #: js/ui/kbdA11yDialog.js:34 msgid "Slow Keys Turned On" msgstr "Tekla motelak aktibatuta" #: js/ui/kbdA11yDialog.js:35 msgid "Slow Keys Turned Off" msgstr "Tekla motelak desaktibatuta" #: js/ui/kbdA11yDialog.js:36 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "Shift teklari 8 segundo baino denbora gehiago eutsi diozu sakatuta. Hori tekla motelen eginbidea aktibatzeko lasterbidea da, eta zure teklatuaren funtzionamendua aldatzen du." #: js/ui/kbdA11yDialog.js:42 msgid "Sticky Keys Turned On" msgstr "Tekla itsaskorrak aktibatuta" #: js/ui/kbdA11yDialog.js:43 msgid "Sticky Keys Turned Off" msgstr "Tekla itsaskorrak desaktibatuta" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "Shift teklari 5 aldiz jarraian sakatu diozu. Hori tekla itsaskorren eginbidea aktibatzeko lasterbidea da, eta zure teklatuaren funtzionamendua aldatzen du." #: js/ui/kbdA11yDialog.js:47 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "Bi tekla aldi berean sakatu dituzu, edo Shift teklari 5 aldiz jarraian sakatu diozu. Hori tekla itsaskorren eginbidea desaktibatzeko lasterbidea da, eta zure teklatuaren funtzionamendua aldatzen du." #: js/ui/kbdA11yDialog.js:57 msgid "Leave On" msgstr "Utzi piztuta" #: js/ui/kbdA11yDialog.js:57 msgid "Turn On" msgstr "Piztu" #: js/ui/kbdA11yDialog.js:67 js/ui/status/network.js:455 msgid "Turn Off" msgstr "Itzali" #: js/ui/kbdA11yDialog.js:67 msgid "Leave Off" msgstr "Utzi itzalita" #: js/ui/keyboard.js:180 js/ui/status/keyboard.js:897 msgid "Keyboard Settings" msgstr "Teklatuaren ezarpenak" #: js/ui/lookingGlass.js:727 msgid "No extensions installed" msgstr "Hedapenik ez dago instalatuta" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:788 #, javascript-format msgid "%s has not emitted any errors" msgstr "%s hedapenak ez du inolako errorerik igorri" #: js/ui/lookingGlass.js:794 msgid "Hide Errors" msgstr "Ezkutatu erroreak" #: js/ui/lookingGlass.js:798 js/ui/lookingGlass.js:875 msgid "Show Errors" msgstr "Erakutsi erroreak" #: js/ui/lookingGlass.js:807 msgid "Active" msgstr "Aktibo" #: js/ui/lookingGlass.js:810 msgid "Inactive" msgstr "Inaktibo" #: js/ui/lookingGlass.js:812 msgid "Error" msgstr "Errorea" #: js/ui/lookingGlass.js:814 msgid "Out of date" msgstr "Zaharkituta" #: js/ui/lookingGlass.js:816 msgid "Downloading" msgstr "Deskargatzen" #: js/ui/lookingGlass.js:818 msgid "Deactivating" msgstr "Desaktibatzen" #: js/ui/lookingGlass.js:820 msgid "Activating" msgstr "Aktibatzen" #: js/ui/lookingGlass.js:853 msgid "View Source" msgstr "Ikusi iturburua" #: js/ui/lookingGlass.js:864 msgid "Web Page" msgstr "Web orria" #: js/ui/main.js:277 msgid "System was put in unsafe mode" msgstr "Sistema segurua ez den moduan jarri da" #: js/ui/main.js:278 msgid "Apps now have unrestricted access" msgstr "Orain aplikazioek mugarik gabeko sarbidea dute" #: js/ui/main.js:338 msgid "Logged in as a privileged user" msgstr "Erabiltzaile pribilegiatu gisa saioa hasita" #: js/ui/main.js:339 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "Erabiltzaile pribilegiatu gisa saio bat exekutatzea saihestu beharko litzateke segurtasuneko arrazoiak direla eta. Posible bada, erabiltzaile arrunt gisa hasi beharko zenuke saioa." #: js/ui/main.js:387 msgid "Screen Lock disabled" msgstr "Pantailaren blokeoa desgaituta dago" #: js/ui/main.js:388 msgid "Screen Locking requires the GNOME display manager" msgstr "Pantaila blokeatzeko GNOMEren pantaila-kudeatzailea behar da" #. Translators: this is the string displayed in the header when a message #. source doesn't have a name #: js/ui/messageList.js:374 msgid "Unknown App" msgstr "Aplikazio ezezaguna" #: js/ui/messageTray.js:326 js/ui/messageTray.js:328 msgid "Notification sound" msgstr "Jakinarazpen-soinua" #: js/ui/mpris.js:198 msgid "Unknown artist" msgstr "Artista ezezaguna" #: js/ui/mpris.js:208 msgid "Unknown title" msgstr "Titulu ezezaguna" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:328 msgid "Type to search" msgstr "Idatzi bilatzeko" #: js/ui/overviewControls.js:392 msgid "Apps" msgstr "Aplikazioak" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:33 msgid "Overview" msgstr "Aurkezpen orokorra" #: js/ui/padOsd.js:98 msgid "New shortcut…" msgstr "Laster-tekla berria…" #: js/ui/padOsd.js:151 msgid "App defined" msgstr "Aplikazioan definituta" #: js/ui/padOsd.js:152 msgid "Show on-screen help" msgstr "Erakutsi pantailako laguntzan" #: js/ui/padOsd.js:153 msgid "Switch monitor" msgstr "Aldatu monitorea" #: js/ui/padOsd.js:154 msgid "Assign keystroke" msgstr "Esleitu tekla-sakatzea" #: js/ui/padOsd.js:223 msgid "Done" msgstr "Eginda" #: js/ui/padOsd.js:726 msgid "Edit…" msgstr "Editatu…" #: js/ui/padOsd.js:773 msgid "None" msgstr "Bat ere ez" #: js/ui/padOsd.js:844 msgid "Press a button to configure" msgstr "Sakatu botoi bat konfiguratzeko" #: js/ui/padOsd.js:845 msgid "Press Esc to exit" msgstr "Sakatu Esc irteteko" #: js/ui/padOsd.js:848 msgid "Press any key to exit" msgstr "Sakatu edozer tekla irteteko" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:423 msgid "Activities" msgstr "Jarduerak" #: js/ui/panel.js:504 msgctxt "System menu in the top bar" msgid "System" msgstr "Sistema" #: js/ui/panel.js:678 msgid "Top Bar" msgstr "Goiko barra" #: js/ui/quickSettings.js:188 msgid "Open menu" msgstr "Ireki menua" #: js/ui/runDialog.js:61 msgid "Run a Command" msgstr "Exekutatu komando bat" #: js/ui/runDialog.js:76 msgid "Press ESC to close" msgstr "Sakatu Esc ixteko" #: js/ui/runDialog.js:241 msgid "Restart is not available on Wayland" msgstr "Berrabiaraztea ez dago erabilgarri Wayland-en" #: js/ui/runDialog.js:246 msgid "Restarting…" msgstr "Berrabiarazten…" #: js/ui/screenShield.js:233 msgid "GNOME needs to lock the screen" msgstr "GNOMEk pantaila blokeatzea behar du" #: js/ui/screenShield.js:274 js/ui/screenShield.js:667 msgid "Unable to lock" msgstr "Ezin da blokeatu" #: js/ui/screenShield.js:275 js/ui/screenShield.js:668 msgid "Lock was blocked by an app" msgstr "Aplikazio batek blokeatu du" #: js/ui/screenshot.js:1252 msgid "Selection" msgstr "Hautapena" #: js/ui/screenshot.js:1262 msgid "Area Selection" msgstr "Area-hautapena" #: js/ui/screenshot.js:1267 msgid "Screen" msgstr "Pantaila" #: js/ui/screenshot.js:1277 msgid "Screen Selection" msgstr "Pantaila-hautapena" #: js/ui/screenshot.js:1282 msgid "Window" msgstr "Leihoa" #: js/ui/screenshot.js:1292 msgid "Window Selection" msgstr "Leiho-hautapena" #. Translators: entry in the window right click menu. #: js/ui/screenshot.js:1317 js/ui/status/system.js:111 js/ui/windowMenu.js:28 msgid "Take Screenshot" msgstr "Atera pantaila-argazkia" #: js/ui/screenshot.js:1333 msgid "Record Screen" msgstr "Grabatu pantaila" #. Translators: since this string refers to an action, #. it needs to be phrased as a verb. #: js/ui/screenshot.js:1350 msgid "Capture" msgstr "Kapturatu" #: js/ui/screenshot.js:1372 msgid "Show Pointer" msgstr "Erakutsi erakuslea" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1996 msgid "Screencasts" msgstr "Pantaila-bideoak" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast From 07-17-2013 10:00:46 PM" #: js/ui/screenshot.js:2001 #, no-c-format msgid "Screencast From %d %t" msgstr "Pantaila-bideoa %d %t" #. Translators: notification title. #: js/ui/screenshot.js:2047 msgid "Screencast recorded" msgstr "Pantaila-bideoa grabatu da" #. Translators: notification title. #: js/ui/screenshot.js:2060 msgid "Screencast failed to start" msgstr "Pantaila-bideoaren abioak huts egin du" #. Translators: notification title. #: js/ui/screenshot.js:2066 msgid "Screencast ended: Out of disk space" msgstr "Pantaila-bideoa amaitu da: Disko-espaziorik ez" #. We can encourage user to try again on service crashes since the #. recorder will auto-blocklist the pipeline that crashed. #. Translators: notification title. #: js/ui/screenshot.js:2072 msgid "Screencast ended unexpectedly, please try again" msgstr "Pantaila-bideoa ustekabean amaitu da, saiatu berriro" #. Translators: notification title. #: js/ui/screenshot.js:2075 msgid "Screencast ended unexpectedly" msgstr "Pantaila-bideoa ustekabean amaitu da" #. Translators: notification source name. #: js/ui/screenshot.js:2085 js/ui/screenshot.js:2327 msgid "Screenshot" msgstr "Pantaila-argazkia" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:2092 msgid "Click here to view the video." msgstr "Klik hemen bideoa ikusteko." #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:2100 js/ui/screenshot.js:2343 msgid "Show in Files" msgstr "Erakutsi Fitxategiak aplikazioan" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2287 #, javascript-format msgid "Screenshot From %s" msgstr "Pantaila-argazkia %s" #. Translators: notification title. #: js/ui/screenshot.js:2333 msgid "Screenshot captured" msgstr "Pantaila-argazkia hartu da" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2335 msgid "You can paste the image from the clipboard." msgstr "Irudia arbeletik itsatsi daiteke." #: js/ui/screenshot.js:2391 js/ui/screenshot.js:2555 msgid "Screenshot taken" msgstr "Pantaila-argazkia hartu da" #: js/ui/search.js:829 msgid "Searching…" msgstr "Bilatzen…" #: js/ui/search.js:831 msgid "No results" msgstr "Ez dago emaitzarik" #: js/ui/search.js:962 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "%d gehiago" msgstr[1] "%d gehiago" #: js/ui/searchController.js:87 #: subprojects/extensions-app/data/ui/extensions-window.ui:73 msgid "Search" msgstr "Bilatu" #: js/ui/shellEntry.js:21 msgid "Copy" msgstr "Kopiatu" #: js/ui/shellEntry.js:26 msgid "Paste" msgstr "Itsatsi" #: js/ui/shellEntry.js:78 msgid "Show Text" msgstr "Erakutsi testua" #: js/ui/shellEntry.js:80 msgid "Hide Text" msgstr "Ezkutatu testua" #: js/ui/shellEntry.js:174 msgid "Caps lock is on" msgstr "Maiuskulen blokeoa aktibatuta dago" #: js/ui/shellMountOperation.js:286 msgid "Hidden Volume" msgstr "Ezkutuko bolumena" #: js/ui/shellMountOperation.js:289 msgid "Windows System Volume" msgstr "Windows sistema-bolumena" #: js/ui/shellMountOperation.js:292 msgid "Uses Keyfiles" msgstr "Gako-fitxategiak erabiltzen ditu" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:300 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead" msgstr "Gako-fitxategiak erabiltzen dituen bolumen bat desmuntatzeko, erabili %s utilitatea" #: js/ui/shellMountOperation.js:304 msgid "" "You need an external utility like Disks to unlock a volume that uses " "keyfiles" msgstr "Kanpoko utilitate bat behar da, adibidez Diskoal, gako-fitxategiak erabiltzen dituen bolumen bat desblokeatzeko" #: js/ui/shellMountOperation.js:312 msgid "PIM Number" msgstr "PIM zenbakia" #: js/ui/shellMountOperation.js:371 msgid "Remember Password" msgstr "Gogoratu pasahitza" #: js/ui/shellMountOperation.js:386 msgid "Unlock" msgstr "Desblokeatu" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:400 #, javascript-format msgid "Open %s" msgstr "Ireki %s" #: js/ui/shellMountOperation.js:436 msgid "The PIM must be a number or empty" msgstr "PIM balioak zenbaki bat izan behar du edo hutsik egon behar du" #: js/ui/status/accessibility.js:34 msgid "Accessibility" msgstr "Erabilerraztasuna" #: js/ui/status/accessibility.js:44 msgid "High Contrast" msgstr "Kontraste handia" #: js/ui/status/accessibility.js:47 msgid "Zoom" msgstr "Zooma" #: js/ui/status/accessibility.js:54 msgid "Screen Reader" msgstr "Pantaila irakurlea" #: js/ui/status/accessibility.js:58 msgid "Screen Keyboard" msgstr "Pantailako teklatua" #: js/ui/status/accessibility.js:62 msgid "Visual Alerts" msgstr "Abisu bisualak" #: js/ui/status/accessibility.js:66 msgid "Sticky Keys" msgstr "Tekla itsaskorrak" #: js/ui/status/accessibility.js:70 msgid "Slow Keys" msgstr "Tekla motelak" #: js/ui/status/accessibility.js:74 msgid "Bounce Keys" msgstr "Errebote-teklak" #: js/ui/status/accessibility.js:78 msgid "Mouse Keys" msgstr "Sagu-teklak" #: js/ui/status/accessibility.js:83 msgid "Accessibility Settings" msgstr "Erabilerraztasun-ezarpenak" #: js/ui/status/accessibility.js:140 msgid "Large Text" msgstr "Testu handia" #: js/ui/status/autoRotate.js:14 msgid "Auto Rotate" msgstr "Automatikoki biratu" #: js/ui/status/backgroundApps.js:156 msgctxt "title" msgid "Background Apps" msgstr "Atzeko planoko aplikazioak" #: js/ui/status/backgroundApps.js:171 msgid "Apps known to be running without a window" msgstr "Leihorik gabe exekutatzen direla ezagutzen diren aplikazioak" #: js/ui/status/backgroundApps.js:182 msgid "App Settings" msgstr "Aplikazio-ezarpenak" #: js/ui/status/backgroundApps.js:239 msgid "No Background Apps" msgstr "Ez dago atzeko planoko aplikaziorik" #: js/ui/status/backgroundApps.js:241 #, javascript-format msgid "%d Background App" msgid_plural "%d Background Apps" msgstr[0] "Atzeko planoko aplikazio %d" msgstr[1] "Atzeko planoko %d aplikazio" #: js/ui/status/backlight.js:39 msgid "Keyboard Brightness" msgstr "Teklatuaren distira" #: js/ui/status/backlight.js:79 msgid "Off" msgstr "Desaktibatuta" #: js/ui/status/backlight.js:80 msgid "Low" msgstr "Baxua" #: js/ui/status/backlight.js:81 msgid "High" msgstr "Altua" #: js/ui/status/backlight.js:147 js/ui/status/keyboard.js:879 msgid "Keyboard" msgstr "Teklatua" #: js/ui/status/bluetooth.js:245 js/ui/status/network.js:360 msgid "Disconnect" msgstr "Deskonektatu" #: js/ui/status/bluetooth.js:262 js/ui/status/bluetooth.js:264 msgid "Bluetooth" msgstr "Bluetooth" #: js/ui/status/bluetooth.js:287 js/ui/status/network.js:1900 msgid "Bluetooth Settings" msgstr "Bluetooth ezarpenak" #: js/ui/status/bluetooth.js:334 msgid "No available or connected devices" msgstr "Ez dago eskuragarri edo konektatuta dagoen gailurik" #: js/ui/status/bluetooth.js:335 msgid "Turn on Bluetooth to connect to devices" msgstr "Aktibatu Bluetooth-a gailuak konektatzeko" #. Translators: This is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:389 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d konektatuta" msgstr[1] "%d konektatuta" #: js/ui/status/brightness.js:32 msgid "Brightness" msgstr "Distira" #: js/ui/status/darkMode.js:12 msgid "Dark Style" msgstr "Estilo iluna" #: js/ui/status/dwellClick.js:15 msgid "Single Click" msgstr "Klik bakuna" #: js/ui/status/dwellClick.js:20 msgid "Double Click" msgstr "Klik bikoitza" #: js/ui/status/dwellClick.js:25 msgid "Drag" msgstr "Arrastatu" #: js/ui/status/dwellClick.js:30 msgid "Secondary Click" msgstr "2. mailako klik egitea" #: js/ui/status/dwellClick.js:39 msgid "Dwell Click" msgstr "Ordezko klika" #: js/ui/status/keyboard.js:896 msgid "Show Keyboard Layout" msgstr "Erakutsi teklatuaren diseinua" #: js/ui/status/location.js:337 msgid "Allow location access" msgstr "Onartu kokalekua atzitzea" #. Translators: %s is an application name #: js/ui/status/location.js:339 #, javascript-format msgid "The app %s wants to access your location" msgstr "%s aplikazioak zure kokalekua atzitu nahi du" #: js/ui/status/location.js:349 msgid "Location access can be changed at any time from the privacy settings" msgstr "Kokalekuaren sarbidea edozein unetan alda daiteke pribatutasun-ezarpenetan" #: js/ui/status/location.js:357 msgid "Deny Access" msgstr "Ukatu sarbidea" #: js/ui/status/location.js:362 msgid "Grant Access" msgstr "Baimendu sarbidea" #: js/ui/status/network.js:62 msgid "" msgstr "" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:354 #, javascript-format msgid "Disconnect %s" msgstr "Deskonektatu %s" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:356 #, javascript-format msgid "Connect to %s" msgstr "Konektatu honekin: %s" #: js/ui/status/network.js:1050 msgid "Secure" msgstr "Segurua" #: js/ui/status/network.js:1050 msgid "Not secure" msgstr "Ez segurua" #: js/ui/status/network.js:1051 #, javascript-format msgid "Signal strength %s%%" msgstr "Seinalearen sendotasuna: %%%s" #. translators: The first placeholder is the network name, the second and indication whether it is secure, and the last the signal strength indication #: js/ui/status/network.js:1053 #, javascript-format msgid "%s, %s, %s" msgstr "%s, %s, %s" #. Translators: %s is a network identifier #: js/ui/status/network.js:1155 #, javascript-format msgid "%s Hotspot" msgstr "%s wifigunea" #: js/ui/status/network.js:1426 #, javascript-format msgid "%d connected" msgid_plural "%d connected" msgstr[0] "%d konektatuta" msgstr[1] "%d konektatuta" #: js/ui/status/network.js:1524 js/ui/status/network.js:1540 msgid "VPN" msgstr "VPNa" #: js/ui/status/network.js:1525 msgid "VPN Settings" msgstr "VPNaren ezarpenak" #: js/ui/status/network.js:1785 msgid "Wi–Fi" msgstr "Wifia" #: js/ui/status/network.js:1787 msgid "All Networks" msgstr "Sare guztiak" #: js/ui/status/network.js:1884 msgid "Wired Connections" msgstr "Haridun konexioak" #: js/ui/status/network.js:1885 msgid "Wired Settings" msgstr "Haridunaren ezarpenak" #: js/ui/status/network.js:1899 msgid "Bluetooth Tethers" msgstr "Bluetooth aingurak" #. Translators: "Tether" from "Bluetooth Tether" #: js/ui/status/network.js:1906 msgid "Tether" msgstr "Ainguratu" #: js/ui/status/network.js:1919 msgid "Mobile Connections" msgstr "Konexio mugikorrak" #: js/ui/status/network.js:1921 msgid "Mobile Broadband Settings" msgstr "Banda zabal mugikorraren ezarpenak" #. Translators: "Mobile" from "Mobile Broadband" #: js/ui/status/network.js:1930 msgid "Mobile" msgstr "Mugikorra" #: js/ui/status/network.js:1964 msgid "Sign Into Wi–Fi Network" msgstr "Hasi saioa wifi sarean" #: js/ui/status/network.js:2151 msgid "Connection failed" msgstr "Konexioak huts egin du" #: js/ui/status/network.js:2152 msgid "Activation of network connection failed" msgstr "Sareko konexioa aktibatzeak huts egin du" #: js/ui/status/nightLight.js:19 msgid "Night Light" msgstr "Gaueko argia" #: js/ui/status/powerProfiles.js:19 msgctxt "Power profile" msgid "Performance" msgstr "Errendimendua" #: js/ui/status/powerProfiles.js:24 msgctxt "Power profile" msgid "Balanced" msgstr "Orekatua" #: js/ui/status/powerProfiles.js:29 msgctxt "Power profile" msgid "Power Saver" msgstr "Energiaren aurrezpena" #: js/ui/status/powerProfiles.js:39 js/ui/status/powerProfiles.js:69 msgid "Power Mode" msgstr "Energiaren modua" #: js/ui/status/powerProfiles.js:71 msgid "Power Settings" msgstr "Energiaren ezarpenak" #: js/ui/status/remoteAccess.js:74 msgid "Stop Screencast" msgstr "Gelditu pantaila-bideoa" #: js/ui/status/remoteAccess.js:144 msgid "Stop Screen Sharing" msgstr "Gelditu pantaila partekatzea" #: js/ui/status/rfkill.js:99 msgid "Airplane Mode" msgstr "Hegazkin modua" #: js/ui/status/system.js:168 msgid "Power Off Menu" msgstr "Itzali menua" #: js/ui/status/system.js:176 msgid "Suspend" msgstr "Eseki" #: js/ui/status/system.js:181 msgid "Restart…" msgstr "Berrabiarazi…" #: js/ui/status/system.js:186 msgid "Power Off…" msgstr "Itzali…" #: js/ui/status/system.js:193 #: subprojects/extensions-app/data/ui/extensions-window.ui:124 msgid "Log Out…" msgstr "Amaitu saioa…" #: js/ui/status/system.js:198 msgid "Switch User…" msgstr "Aldatu erabiltzailea…" #: js/ui/status/system.js:242 msgctxt "action" msgid "Lock Screen" msgstr "Blokeatu pantaila" #: js/ui/status/thunderbolt.js:308 msgid "Unknown Thunderbolt device" msgstr "Thunderbolt gailu ezezaguna" #: js/ui/status/thunderbolt.js:309 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "Gailu berria detektatu da ez zeunden bitartean. Deskonektatu eta berriro konektatu gailua hura erabiltzen hasi ahal izateko." #: js/ui/status/thunderbolt.js:312 msgid "Unauthorized Thunderbolt device" msgstr "Baimenik gabeko Thunderbolt gailua" #: js/ui/status/thunderbolt.js:313 msgid "" "New device has been detected and needs to be authorized by an administrator" msgstr "Gailu berria detektatu da eta administratzaile batek baimena eman behar dio" #: js/ui/status/thunderbolt.js:319 msgid "Thunderbolt authorization error" msgstr "Thunderbolt baimen-errorea" #: js/ui/status/thunderbolt.js:320 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "Ezin izan da Thunderbolt gailua baimendu: %s" #: js/ui/status/volume.js:218 msgid "Volume changed" msgstr "Bolumena aldatuta" #: js/ui/status/volume.js:231 msgid "Unmute" msgstr "Eten mututasuna" #: js/ui/status/volume.js:231 msgid "Mute" msgstr "Mututu" #: js/ui/status/volume.js:286 msgid "Volume" msgstr "Bolumena" #: js/ui/status/volume.js:302 msgid "Sound Output" msgstr "Soinu-irteera" #: js/ui/status/volume.js:374 msgid "Sound Input" msgstr "Soinu-sarrera" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:20 msgid "Mirror" msgstr "Ispilua" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:29 msgid "Join Displays" msgstr "Batu pantailak" #. Translators: this is for using only external displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:39 msgid "External Only" msgstr "Kanpokoa soilik" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:47 msgid "Built-in Only" msgstr "Barnekoa soilik" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:378 msgid "%A %B %-d" msgstr "%A %B %-d" #: js/ui/unlockDialog.js:384 msgid "Swipe up to unlock" msgstr "Igaro hatza desblokeatzeko" #: js/ui/unlockDialog.js:385 msgid "Click or press a key to unlock" msgstr "Egin klik edo sakatu tekla bat desblokeatzeko" #: js/ui/unlockDialog.js:568 msgid "Unlock Window" msgstr "Desblokeatu leihoa" #: js/ui/unlockDialog.js:577 msgid "Log in as another user" msgstr "Hasi saioa beste erabiltzaile baten gisan" #: js/ui/welcomeDialog.js:47 #, javascript-format msgid "GNOME %s" msgstr "GNOME %s" #: js/ui/welcomeDialog.js:51 #, javascript-format msgid "Welcome to %s" msgstr "Ongi etorri %s sistemara" #: js/ui/welcomeDialog.js:52 msgid "If you want to learn your way around, check out the tour" msgstr "GNOME erabiltzen ikasi nahi baduzu, jarraitu bisita" #: js/ui/welcomeDialog.js:61 msgid "Skip" msgstr "Saltatu" #: js/ui/welcomeDialog.js:66 msgid "Take Tour" msgstr "Egin bisita" #: js/ui/windowAttentionHandler.js:18 #, javascript-format msgid "“%s” is ready" msgstr "'%s' prest dago" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:68 msgid "Keep these display settings?" msgstr "Mantendu bistaratze-ezarpen hauek?" #: js/ui/windowManager.js:78 msgid "Revert Settings" msgstr "Alderantzikatu ezarpenak" #: js/ui/windowManager.js:83 msgid "Keep Changes" msgstr "Mantendu aldaketak" #: js/ui/windowManager.js:103 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "Ezarpenen aldaketak segundo %dean alderantzikatuko dira" msgstr[1] "Ezarpenen aldaketak %d segundotan alderantzikatuko dira" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:500 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:40 msgid "Hide" msgstr "Ezkutatu" #: js/ui/windowMenu.js:47 msgid "Restore" msgstr "Leheneratu" #: js/ui/windowMenu.js:51 msgid "Maximize" msgstr "Maximizatu" #: js/ui/windowMenu.js:58 msgid "Move" msgstr "Mugitu" #: js/ui/windowMenu.js:78 msgid "Resize" msgstr "Aldatu tamaina" #: js/ui/windowMenu.js:98 msgid "Always on Top" msgstr "Beti gainean" #: js/ui/windowMenu.js:117 msgid "Always on Visible Workspace" msgstr "Beti laneko area ikusgaian" #: js/ui/windowMenu.js:131 msgid "Move to Workspace Left" msgstr "Eraman ezkerreko laneko areara" #: js/ui/windowMenu.js:137 msgid "Move to Workspace Right" msgstr "Eraman eskuineko laneko areara" #: js/ui/windowMenu.js:143 msgid "Move to Workspace Up" msgstr "Eraman gaineko laneko areara" #: js/ui/windowMenu.js:149 msgid "Move to Workspace Down" msgstr "Eraman azpiko laneko areara" #: js/ui/windowMenu.js:167 msgid "Move to Monitor Up" msgstr "Eraman gaineko pantailara" #: js/ui/windowMenu.js:176 msgid "Move to Monitor Down" msgstr "Eraman azpiko pantailara" #: js/ui/windowMenu.js:185 msgid "Move to Monitor Left" msgstr "Eraman ezkerreko pantailara" #: js/ui/windowMenu.js:194 msgid "Move to Monitor Right" msgstr "Eraman eskuineko pantailara" #: js/ui/windowMenu.js:202 msgid "Close" msgstr "Itxi" #: src/main.c:529 subprojects/extensions-tool/src/main.c:336 msgid "Print version" msgstr "Bistaratu bertsioa" #: src/main.c:535 msgid "Mode used by GDM for login screen" msgstr "GDMk erabiltzen duen modua saio-hasierako pantailarako" #: src/main.c:541 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "Erabili modu jakin bat, adib. “gdm“, saioa hasteko pantailarako" #: src/main.c:547 msgid "List possible modes" msgstr "Zerrendatu modu posibleak" #: src/main.c:553 msgid "Force animations to be enabled" msgstr "Behartu animazioa gaitzea" #: src/shell-app.c:252 msgctxt "program" msgid "Unknown" msgstr "Ezezaguna" #: src/shell-app.c:503 #, c-format msgid "Failed to launch “%s”" msgstr "Huts egin du '%s' abiarazteak" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match" msgstr "Pasahitzak ez datoz bat" #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "Pasahitza ezin da hutsa izan" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "Erabiltzaileak autentifikatzeko elkarrizketa-koadroa itxi du" #: src/st/st-icon-theme.c:1865 #, c-format msgid "Icon '%s' not present in theme %s" msgstr "'%s' ikonoa ez dago '%s' gaian" #: src/st/st-icon-theme.c:3454 src/st/st-icon-theme.c:3757 msgid "Failed to load icon" msgstr "Huts egin du ikonoa kargatzeak" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 msgid "Manage your GNOME Extensions" msgstr "Kudeatu zure GNOME hedapenak" #. developer_name tag deprecated with Appstream 1.0 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:19 msgid "The GNOME Project" msgstr "GNOME proiektua" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:51 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "GNOME Hedapenak aplikazioak hedapenak eguneratzea, hedapenen hobespenak konfiguratzea eta gehiago nahi ez diren hedapenak kentzea edo desgaitzea ahalbidetzen du." #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:64 msgid "Main Window" msgstr "Leiho nagusia" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:68 msgid "Available Updates" msgstr "Eguneratze eskuragarriak" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:72 msgid "Search View" msgstr "Bilaketa-ikuspegia" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "Konfiguratu GNOME Shell-eko gehigarriak" #: subprojects/extensions-app/js/extensionManager.js:237 #, javascript-format msgid "" "The installed version of this extension (%s) is incompatible with the " "current version of GNOME (%s). The extension has been disabled." msgstr "Hedapen honetatik instalatutako bertsioa (%s) ez da bateragarria GNOMEren uneko bertsioarekin (%s). Hedapena desgaitu da." #: subprojects/extensions-app/js/extensionManager.js:238 #, javascript-format msgid "" "The installed version of this extension is incompatible with the current " "version of GNOME (%s). The extension has been disabled." msgstr "Hedapen honetatik instalatutako bertsioa ez da bateragarria GNOMEren uneko bertsioarekin (%s). Hedapena desgaitu da." #: subprojects/extensions-app/js/extensionManager.js:242 msgid "" "An error has occurred in this extension. This could cause issues elsewhere " "in the system. It is recommended to turn the extension off until the error " "is resolved." msgstr "Errorea gertatu da hedapen honekin. Horrek arazoak sortu ditzake sisteman. Hobe da hedapena desaktibatzen baduzu errorea konpondu arte." #. translators: Details for an extension error #: subprojects/extensions-app/js/extensionManager.js:248 msgid "Error details:" msgstr "Errorearen xehetasunak:" #: subprojects/extensions-app/js/extensionRow.js:82 #, javascript-format msgid "Version %s" msgstr "%s bertsioa" #: subprojects/extensions-app/js/extensionsWindow.js:113 #, javascript-format msgid "Remove “%s”?" msgstr "Kendu “%s”?" #: subprojects/extensions-app/js/extensionsWindow.js:114 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "Hedapena kentzen bada, berriro deskargatu beharko da atzera gaitu nahi bada." #: subprojects/extensions-app/js/extensionsWindow.js:117 msgid "_Cancel" msgstr "_Utzi" #: subprojects/extensions-app/js/extensionsWindow.js:118 msgid "_Remove" msgstr "_Kendu" #: subprojects/extensions-app/js/extensionsWindow.js:158 msgid "translator-credits" msgstr "translator-credits" #: subprojects/extensions-app/js/extensionsWindow.js:203 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "Hedapen %d eguneratuko da hurrengo saio-hasieran." msgstr[1] "%d hedapen eguneratuko dira hurrengo saio-hasieran." #: subprojects/extensions-app/data/ui/extension-row.ui:22 msgid "Error Details" msgstr "Errorearen xehetasunak" #: subprojects/extensions-app/data/ui/extension-row.ui:62 msgid "Updates Details" msgstr "Eguneratzearen xehetasunak" #: subprojects/extensions-app/data/ui/extension-row.ui:72 msgid "" "A new version of this extension is ready and will be loaded on next login." msgstr "Hedapen honen bertsio berria dago eta hurrengo saio-hasieran kargatuko da." #: subprojects/extensions-app/data/ui/extension-row.ui:104 msgid "Extension Details" msgstr "Hedapenaren xehetasunak" #: subprojects/extensions-app/data/ui/extension-row.ui:192 msgid "_Website" msgstr "_Webgunea" #: subprojects/extensions-app/data/ui/extension-row.ui:219 msgid "_Settings" msgstr "_Ezarpenak" #: subprojects/extensions-app/data/ui/extension-row.ui:246 msgid "_Remove…" msgstr "_Kendu…" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Keyboard Shortcuts" msgstr "Laster-teklak" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "Hedapenei buruz" #: subprojects/extensions-app/data/ui/extensions-window.ui:64 msgid "Main Menu" msgstr "Menu nagusia" #: subprojects/extensions-app/data/ui/extensions-window.ui:106 msgid "Search extensions" msgstr "Bilatu hedapenak" #: subprojects/extensions-app/data/ui/extensions-window.ui:134 msgid "_Extensions" msgstr "_Hedapenak" #: subprojects/extensions-app/data/ui/extensions-window.ui:139 msgid "More Information" msgstr "Informazio gehiago" #: subprojects/extensions-app/data/ui/extensions-window.ui:151 msgid "" "Extensions can cause performance and stability issues. It is recommended to " "disable all extensions if you experience problems with your system." msgstr "Hedapenek errendimendu- eta egonkortasun-arazoak sortu ditzakete. Gomendagarria hedapenak desgaitzea sistemak arazoak baditu." #: subprojects/extensions-app/data/ui/extensions-window.ui:178 msgid "User Extensions" msgstr "Erabiltzaile-hedapenak" #: subprojects/extensions-app/data/ui/extensions-window.ui:198 msgid "System Extensions" msgstr "Sistema-hedapenak" #: subprojects/extensions-app/data/ui/extensions-window.ui:233 msgid "Search Results" msgstr "Bilaketaren emaitzak" #: subprojects/extensions-app/data/ui/extensions-window.ui:252 msgid "No Results Found" msgstr "Ez da emaitzarik aurkitu" #: subprojects/extensions-app/data/ui/extensions-window.ui:253 msgid "Try a different search" msgstr "Saiatu bestelako bilaketa bat" #: subprojects/extensions-app/data/ui/extensions-window.ui:264 msgid "No Installed Extensions" msgstr "Instalatu gabeko luzapenak" #: subprojects/extensions-app/data/ui/extensions-window.ui:265 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "Hedapenak aurkitu eta gehitzeko, bisitatu extensions.gnome.org." #: subprojects/extensions-app/data/ui/extensions-window.ui:276 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "Barkatu, ezin izan da instalatutako hedapenen zerrenda eskuratu. Ziurtatu GNOMEn saioa hasi duzula eta saiatu berriro." #: subprojects/extensions-app/data/ui/help-overlay.ui:9 msgctxt "shortcut window" msgid "General" msgstr "Orokorra" #: subprojects/extensions-app/data/ui/help-overlay.ui:12 msgctxt "shortcut window" msgid "Open Menu" msgstr "Ireki menua" #: subprojects/extensions-app/data/ui/help-overlay.ui:18 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Txandakatu bilaketa" #: subprojects/extensions-app/data/ui/help-overlay.ui:24 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Erakutsi lasterbideak" #: subprojects/extensions-app/data/ui/help-overlay.ui:30 msgctxt "shortcut window" msgid "Quit" msgstr "Irten" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:284 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "Hedapen berria ongi sortu da %s kokalekuan.\n" #: subprojects/extensions-tool/src/command-create.c:376 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "Izenak kate laburra izan behar du (hobe deskribatzailea bada).\n" "Adibideak: %s" #: subprojects/extensions-tool/src/command-create.c:382 #: subprojects/extensions-tool/src/main.c:243 msgid "Name" msgstr "Izena" #: subprojects/extensions-tool/src/command-create.c:396 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "Deskribapena zure hedapenak egiten duena azaltzen duen esaldi bakarra da.\n" "Adibideak: %s" #: subprojects/extensions-tool/src/command-create.c:402 #: subprojects/extensions-tool/src/main.c:246 msgid "Description" msgstr "Azalpena" #: subprojects/extensions-tool/src/command-create.c:416 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "UUIDa zure hedapenaren identifikatzaile esklusiboa da.\n" "Posta elektronikoko helbide baten formatukoa izan behar du (klikirekitzeko@asier.adibidea.com)\n" #: subprojects/extensions-tool/src/command-create.c:443 msgid "Choose one of the available templates:\n" msgstr "Aukeratu erabilgarri dauden txantiloietako bat:\n" #: subprojects/extensions-tool/src/command-create.c:457 msgid "Template" msgstr "Txantiloia" #: subprojects/extensions-tool/src/command-create.c:515 msgid "The unique identifier of the new extension" msgstr "Hedapen berriaren identifikatzaile bakarra" #: subprojects/extensions-tool/src/command-create.c:518 msgid "NAME" msgstr "IZENA" #: subprojects/extensions-tool/src/command-create.c:519 msgid "The user-visible name of the new extension" msgstr "Hedapen berriaren izena, erabiltzaileak ikusiko duena" #: subprojects/extensions-tool/src/command-create.c:521 msgid "DESCRIPTION" msgstr "DESKRIBAPENA" #: subprojects/extensions-tool/src/command-create.c:523 msgid "A short description of what the extension does" msgstr "Hedapenak egiten duenaren deskribapen laburra" #: subprojects/extensions-tool/src/command-create.c:525 #: subprojects/extensions-tool/src/command-pack.c:455 msgid "DOMAIN" msgstr "DOMEINUA" #: subprojects/extensions-tool/src/command-create.c:527 msgid "The gettext domain used by the extension" msgstr "Hedapenak erabiltzen duen gettext domeinua" #: subprojects/extensions-tool/src/command-create.c:529 #: subprojects/extensions-tool/src/command-pack.c:448 msgid "SCHEMA" msgstr "ESKEMA" #: subprojects/extensions-tool/src/command-create.c:531 msgid "The GSettings schema used by the extension" msgstr "Hedapenak erabiltzen duen GSettings eskema" #: subprojects/extensions-tool/src/command-create.c:534 msgid "TEMPLATE" msgstr "TXANTILOIA" #: subprojects/extensions-tool/src/command-create.c:535 msgid "The template to use for the new extension" msgstr "Hedapen berrirako erabiliko den txantiloia" #: subprojects/extensions-tool/src/command-create.c:538 msgid "Include prefs.js template" msgstr "Sartu prefs.js txantiloia" #: subprojects/extensions-tool/src/command-create.c:544 msgid "Enter extension information interactively" msgstr "Sartu hedapenaren informazioa dinamikoki" #: subprojects/extensions-tool/src/command-create.c:552 msgid "Create a new extension" msgstr "Sortu hedapen berria" #: subprojects/extensions-tool/src/command-create.c:570 #: subprojects/extensions-tool/src/command-list.c:190 msgid "Unknown arguments" msgstr "Argumentu ezezagunak" #: subprojects/extensions-tool/src/command-create.c:595 msgid "UUID, name and description are required" msgstr "UUIDa, izena eta deskribapena derrigorrezkoak dira" #: subprojects/extensions-tool/src/command-disable.c:62 #: subprojects/extensions-tool/src/command-enable.c:62 #, c-format msgid "Extension “%s” does not exist\n" msgstr "Ez dago “%s” hedapenik\n" #: subprojects/extensions-tool/src/command-disable.c:98 msgid "Disable an extension" msgstr "Desgaitu hedapen bat" #: subprojects/extensions-tool/src/command-disable.c:116 #: subprojects/extensions-tool/src/command-enable.c:116 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "Ez da UUIDrik eman" #: subprojects/extensions-tool/src/command-disable.c:121 #: subprojects/extensions-tool/src/command-enable.c:121 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "UUID bat baino gehiago eman da" #: subprojects/extensions-tool/src/command-enable.c:98 msgid "Enable an extension" msgstr "Gaitu hedapen bat" #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:66 #: subprojects/extensions-tool/src/main.c:150 msgid "Failed to connect to GNOME Shell\n" msgstr "Huts egin du GNOME Shell-ekin konektatzeak\n" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:159 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "Ez dago “%s” hedapenik.\n" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "Hedapenen informazioa erakusten du" #: subprojects/extensions-tool/src/command-install.c:190 msgid "Overwrite an existing extension" msgstr "Gainidatzi lehendik dagoen hedapena" #: subprojects/extensions-tool/src/command-install.c:192 msgid "EXTENSION_BUNDLE" msgstr "HEDAPEN_BILDUMA" #: subprojects/extensions-tool/src/command-install.c:201 msgid "Install an extension bundle" msgstr "Instalatu hedapen-bilduma" #: subprojects/extensions-tool/src/command-install.c:219 msgid "No extension bundle specified" msgstr "Ez da hedapen-bildumarik zehaztu" #: subprojects/extensions-tool/src/command-install.c:225 msgid "More than one extension bundle specified" msgstr "Hedapen-bilduma bat baino gehiago zehaztu da" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show user-installed extensions" msgstr "Erakutsi erabiltzaileak instalatutako hedapenak" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show system-installed extensions" msgstr "Erakutsi sistemak instalatutako hedapenak" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Show enabled extensions" msgstr "Erakutsi gaitutako hedapenak" #: subprojects/extensions-tool/src/command-list.c:149 msgid "Show disabled extensions" msgstr "Erakutsi desgaitutako hedapenak" #: subprojects/extensions-tool/src/command-list.c:152 msgid "Show extensions in active state" msgstr "Erakutsi egoera aktiboan dauden hedapenak" #: subprojects/extensions-tool/src/command-list.c:155 msgid "Show extensions in inactive state" msgstr "Erakutsi egoera inaktiboan dauden hedapenak" #: subprojects/extensions-tool/src/command-list.c:158 msgid "Show extensions with preferences" msgstr "Erakutsi hobespenak dituzten hedapenak" #: subprojects/extensions-tool/src/command-list.c:161 msgid "Show extensions with updates" msgstr "Erakutsi eguneratzeak dituzten hedapenak" #: subprojects/extensions-tool/src/command-list.c:164 msgid "Print extension details" msgstr "Inprimatu hedapenaren xehetasunak" #: subprojects/extensions-tool/src/command-list.c:172 msgid "List installed extensions" msgstr "Zerrendatu instalatutako hedapenak" #: subprojects/extensions-tool/src/command-pack.c:444 msgid "FILE" msgstr "FITXATEGIA" #: subprojects/extensions-tool/src/command-pack.c:445 msgid "Additional source to include in the bundle" msgstr "Bilduman sartuko zen iturburu gehigarria" #: subprojects/extensions-tool/src/command-pack.c:449 msgid "A GSettings schema that should be included" msgstr "Sartu behar den GSettings eskema" #: subprojects/extensions-tool/src/command-pack.c:451 #: subprojects/extensions-tool/src/command-pack.c:462 msgid "DIRECTORY" msgstr "DIREKTORIOA" #: subprojects/extensions-tool/src/command-pack.c:453 msgid "The directory where translations are found" msgstr "Itzulpenak dituen direktorioa" #: subprojects/extensions-tool/src/command-pack.c:457 msgid "The gettext domain to use for translations" msgstr "Itzulpenetarako erabiliko den gettext domeinua" #: subprojects/extensions-tool/src/command-pack.c:460 msgid "Overwrite an existing pack" msgstr "Gainidatzi lehendik dagoen pakete bat" #: subprojects/extensions-tool/src/command-pack.c:464 msgid "The directory where the pack should be created" msgstr "Paketea sortzeko direktorioa" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "SOURCE_DIRECTORY" msgstr "ITURBURU_DIREKTORIOA" #: subprojects/extensions-tool/src/command-pack.c:475 msgid "Create an extension bundle" msgstr "Sortu hedapen-bilduma bat" #: subprojects/extensions-tool/src/command-pack.c:495 msgid "More than one source directory specified" msgstr "Iturburu-direktorio bat baino gehiago zehaztu da" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "“%s” hedapenak ez dauka hobespenik\n" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "Ezin izan dira hobespenak ireki “%s” hedapenerako: %s\n" #: subprojects/extensions-tool/src/command-prefs.c:87 msgid "Opens extension preferences" msgstr "Hedapenaren hobespenak irekitzen ditu" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "Berrezarri hedapen bat" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "Ezin dira sistemaren hedapenak desinstalatu\n" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "Huts egin du “%s” instalatzeak\n" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "Desinstalatu hedapen bat" #: subprojects/extensions-tool/src/main.c:76 msgid "Do not print error messages" msgstr "Ez inprimatu errore-mezuak" #: subprojects/extensions-tool/src/main.c:249 msgid "Path" msgstr "Bide-izena" #: subprojects/extensions-tool/src/main.c:252 msgid "URL" msgstr "URLa" #: subprojects/extensions-tool/src/main.c:255 msgid "Original author" msgstr "Jatorrizko egilea" #: subprojects/extensions-tool/src/main.c:261 #: subprojects/extensions-tool/src/main.c:263 #: subprojects/extensions-tool/src/main.c:265 msgid "Version" msgstr "Bertsioa" #: subprojects/extensions-tool/src/main.c:268 msgid "Enabled" msgstr "Gaituta" #: subprojects/extensions-tool/src/main.c:268 msgid "Yes" msgstr "Bai" #: subprojects/extensions-tool/src/main.c:268 msgid "No" msgstr "Ez" #: subprojects/extensions-tool/src/main.c:271 msgid "State" msgstr "Egoera" #: subprojects/extensions-tool/src/main.c:309 msgid "“version” takes no arguments" msgstr "“version” ez du argumenturik hartzen" #: subprojects/extensions-tool/src/main.c:311 #: subprojects/extensions-tool/src/main.c:331 msgid "Usage:" msgstr "Erabilera:" #: subprojects/extensions-tool/src/main.c:314 msgid "Print version information and exit." msgstr "Erakutsi bertsioaren informazioa eta irten" #: subprojects/extensions-tool/src/main.c:329 #: subprojects/extensions-tool/src/main.c:332 msgid "COMMAND" msgstr "KOMANDOA" #: subprojects/extensions-tool/src/main.c:332 msgid "[ARGS…]" msgstr "[ARGUMENTUAK…]" #: subprojects/extensions-tool/src/main.c:334 msgid "Commands:" msgstr "Komandoak:" #: subprojects/extensions-tool/src/main.c:335 msgid "Print help" msgstr "Erakutsi laguntza" #: subprojects/extensions-tool/src/main.c:337 msgid "Enable extension" msgstr "Gaitu hedapena" #: subprojects/extensions-tool/src/main.c:338 msgid "Disable extension" msgstr "Desgaitu hedapena" #: subprojects/extensions-tool/src/main.c:339 msgid "Reset extension" msgstr "Berrezarri hedapena" #: subprojects/extensions-tool/src/main.c:340 msgid "Uninstall extension" msgstr "Desinstalatu hedapena" #: subprojects/extensions-tool/src/main.c:341 msgid "List extensions" msgstr "Zerrendatu hedapenak" #: subprojects/extensions-tool/src/main.c:342 #: subprojects/extensions-tool/src/main.c:343 msgid "Show extension info" msgstr "Erakutsi hedapenaren informazioa" #: subprojects/extensions-tool/src/main.c:344 msgid "Open extension preferences" msgstr "Ireki hedapenaren hobespenak" #: subprojects/extensions-tool/src/main.c:345 msgid "Create extension" msgstr "Sortu hedapena" #: subprojects/extensions-tool/src/main.c:346 msgid "Package extension" msgstr "Paketatu hedapena" #: subprojects/extensions-tool/src/main.c:347 msgid "Install extension bundle" msgstr "Instalatu hedapen-bilduma" #: subprojects/extensions-tool/src/main.c:349 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "Erabili “%s” laguntza xehea lortzeko.\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "Soila" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "Hedapen huts bat" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "Adierazlea" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "Gehitu ikono bat goiko barrari" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:4 msgid "Quick Settings Item" msgstr "Ezarpen azkarren elementua" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:5 msgid "Add an item to quick settings" msgstr "Gehitu elementu bat ezarpen azkarrei" #. translators: #. * The device has been disabled #: subprojects/gvc/gvc-mixer-control.c:1872 msgid "Disabled" msgstr "Desgaituta" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1879 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "Irteera %u" msgstr[1] "%u irteera" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1889 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "Sarrera %u" msgstr[1] "%u sarrera" #: subprojects/gvc/gvc-mixer-control.c:2872 msgid "System Sounds" msgstr "Sistemaren soinuak" #~ msgid "Move Titlebar Onscreen" #~ msgstr "Mugitu titulu-barra pantailan" #~ msgid "Stop conflicting session dialog closed" #~ msgstr "Gatazkan dauden saioak gelditzeko elkarrizketa-koadroa itxi da" #, javascript-format #~ msgid "Try to login again to start a session for user %s." #~ msgstr "Saiatu saioa berriro hasten %s erabiltzailearentzako." #, javascript-format #~ msgid "%s is now known as %s" #~ msgstr "%s orain %s izenarekin ezagutzen da" #~ msgid "Network Manager" #~ msgstr "Sarearen kudeatzailea" #~ msgid "Disabling" #~ msgstr "Desgaitzen" #~ msgid "Enabling" #~ msgstr "Gaitzen" #, javascript-format #~ msgid "%d %%" #~ msgstr "%% %d" #~ msgid "Thunderbolt" #~ msgstr "Thunderbolt" #~ msgid "No Thanks" #~ msgstr "Ez, eskerrik asko" #~ msgid "No Matches" #~ msgstr "Bat etortzerik ez" #~ msgid "The extension had an error" #~ msgstr "Hedapenak errore bat izan du" #~ msgid "The extension can be updated" #~ msgstr "Hedapena eguneratu egin daiteke" #~ msgid "Help" #~ msgstr "Laguntza" #~ msgid "Manually Installed" #~ msgstr "Eskuz instalatua" #~ msgid "Built-In" #~ msgstr "Integratua" #~ msgid "Extension Updates Ready" #~ msgstr "Hedapenen eguneratzeak prest" #~ msgid "Screenshot / Screencast" #~ msgstr "Pantaila-argazkia/bideoa" #~ msgid "Power Profiles" #~ msgstr "Energia-profilak" #~ msgid "Evolution Calendar" #~ msgstr "Evolution egutegia" #~ msgid "" #~ "Whether the default Bluetooth adapter had set up devices associated to it" #~ msgstr "" #~ "Bluetooth lehenetsiaren moldatzaileak berarekin esleitutako gailurik duen " #~ "ala ez" #~ msgid "" #~ "The shell will only show a Bluetooth menu item if a Bluetooth adapter is " #~ "powered, or if there were devices set up associated with the default " #~ "adapter. This will be reset if the default adapter is ever seen not to " #~ "have devices associated to it." #~ msgstr "" #~ "Shell-ak Bluetooth moldagailu bat entxufatuta dagoenean soilik Bluetooth-" #~ "aren menua erakutsiko duen, edo moldagailu lehenetsiarekin esleitutako " #~ "gailuak konfiguratuta daudenean. Hau leheneratu egingo da moldagailu " #~ "lehenetsiak berarekin esleitutako gailurik ez daukanean." #~ msgid "Attach modal dialog to the parent window" #~ msgstr "Erantsi elkarrizketa-leiho modala leiho gurasoari" #~ msgid "" #~ "This key overrides the key in org.gnome.mutter when running GNOME Shell." #~ msgstr "" #~ "Gako honek org.gnome.mutter gakoa gainidazten du GNOME Shell exekutatzean." #~ msgid "Enable edge tiling when dropping windows on screen edges" #~ msgstr "Gaitu lauzatzea leihoak pantailaren ertzetan jaregitean" #~ msgid "Workspaces are managed dynamically" #~ msgstr "Laneko areak dinamikoki kudeatzen dira" #~ msgid "Workspaces only on primary monitor" #~ msgstr "Laneko areak monitore nagusian soilik" #~ msgid "Delay focus changes in mouse mode until the pointer stops moving" #~ msgstr "" #~ "Fokuaren aldaketaren atzerapena saguaren moduan erakusleak mugitzeari " #~ "utzi arte" #~ msgid "Region & Language Settings" #~ msgstr "Eskualdearen eta hizkuntzaren ezarpenak" #~ msgid "Applications" #~ msgstr "Aplikazioak" #, javascript-format #~ msgid "Unable to start %s" #~ msgstr "Ezin da %s abiarazi" #, javascript-format #~ msgid "Couldn’t find the %s application" #~ msgstr "Ez da %s aplikazioa aurkitu" #~ msgid "Log Out" #~ msgstr "Amaitu saioa" #, javascript-format #~ msgid "%s Off" #~ msgstr "'%s' itzalita" #, javascript-format #~ msgid "%s Connected" #~ msgstr "'%s' konektatuta" #, javascript-format #~ msgid "%s Unmanaged" #~ msgstr "'%s' kudeatu gabea" #, javascript-format #~ msgid "%s Connecting" #~ msgstr "'%s' konektatzen" #, javascript-format #~ msgid "%s Requires Authentication" #~ msgstr "'%s'(e)k autentifikazioa eskatzen du" #, javascript-format #~ msgid "Firmware Missing For %s" #~ msgstr "'%s'(r)en firmwarea falta da" #, javascript-format #~ msgid "%s Unavailable" #~ msgstr "'%s' ez dago erabilgarri" #, javascript-format #~ msgid "%s Connection Failed" #~ msgstr "'%s'(r)en konexioak huts egin du" #, javascript-format #~ msgid "%s Hardware Disabled" #~ msgstr "'%s' hardwarea desgaituta" #, javascript-format #~ msgid "%s Disabled" #~ msgstr "'%s' desgaituta" #~ msgid "Connect to Internet" #~ msgstr "Konektatu Internetera" #~ msgid "Airplane Mode is On" #~ msgstr "Hegazkin modua piztuta" #~ msgid "Wi-Fi is disabled when airplane mode is on." #~ msgstr "Haririk gabekoa desgaitu egiten da hegazkin modua piztean." #~ msgid "Turn Off Airplane Mode" #~ msgstr "Itzali hegazkin modua" #~ msgid "Wi-Fi is Off" #~ msgstr "Haririk gabekoa itzalita" #~ msgid "Wi-Fi needs to be turned on in order to connect to a network." #~ msgstr "Haririk gabekoa piztu egin behar da sare batera konektatzeko." #~ msgid "Turn On Wi-Fi" #~ msgstr "Piztu haririk gabekoa" #~ msgid "Select a network" #~ msgstr "Hautatu sare bat" #~ msgid "Use hardware switch to turn off" #~ msgstr "Erabili hardwarearen aldatzailea itzaltzeko" #~ msgid "Select Network" #~ msgstr "Hautatu sarea" #~ msgid "Wi-Fi Settings" #~ msgstr "Haririk gabekoaren ezarpenak" #, javascript-format #~ msgid "%s Not Connected" #~ msgstr "'%s' konektatu gabe" #~ msgid "unknown" #~ msgstr "ezezaguna" #~ msgid "connecting…" #~ msgstr "konektatzen…" #~ msgid "authentication required" #~ msgstr "autentifikazioa behar da" #~ msgid "connection failed" #~ msgstr "konexioak huts egin du" #~ msgid "VPN Off" #~ msgstr "VPNa itzalita" #, javascript-format #~ msgid "%s Wi-Fi Connection" #~ msgid_plural "%s Wi-Fi Connections" #~ msgstr[0] "%s haririk gabeko konexioa" #~ msgstr[1] "%s haririk gabeko konexioak" #~ msgid "Lock" #~ msgstr "Blokeatu" #~ msgid "Power Off / Log Out" #~ msgstr "Itzaltzea / saioa amaitzea" #~ msgid "Bluetooth On" #~ msgstr "Bluetooth-a aktibatuta" #~ msgid "Bluetooth Off" #~ msgstr "Bluetooth-a desaktibatuta" #~ msgid "Location In Use" #~ msgstr "Kokalekua erabilita" #~ msgid "Location Disabled" #~ msgstr "Kokalekua desgaituta" #~ msgid "Night Light Disabled" #~ msgstr "“Gaueko argia” desgaituta" #~ msgid "Resume" #~ msgstr "Berrekin" #~ msgid "Disable Until Tomorrow" #~ msgstr "Desgaitu bihar arte" #~ msgid "Fully Charged" #~ msgstr "Erabat kargatuta" #~ msgid "Not Charging" #~ msgstr "Kargarik ez" #~ msgid "Estimating…" #~ msgstr "Kalkulatzen…" #, javascript-format #~ msgid "%d∶%02d Remaining (%d %%)" #~ msgstr "%d∶%02d falta da (%% %d)" #, javascript-format #~ msgid "%d∶%02d Until Full (%d %%)" #~ msgstr "%d∶%02d bete arte (%% %d)" #~ msgid "Screen is Being Shared" #~ msgstr "Pantaila partekatzen ari da" #~ msgid "Turn off" #~ msgstr "Desaktibatu" #~ msgid "Show screenshot UI" #~ msgstr "Erakutsi pantaila-argazkiaren interfazea" #~ msgid "Remove from Favorites" #~ msgstr "Kendu gogokoetatik" #~ msgid "Add to Favorites" #~ msgstr "Gehitu gogokoei" #~ msgid "Screen Recording in Progress" #~ msgstr "Pantailaren grabazioa abian" #~ msgid "Stop" #~ msgstr "Gelditu" #~ msgid "Author" #~ msgstr "Egilea" #~ msgid "Warning" #~ msgstr "Abisua" #~ msgid "" #~ "Extensions can cause system issues, including performance problems. If " #~ "you encounter problems with your system, it is recommended to disable all " #~ "extensions." #~ msgstr "" #~ "Hedapenek arazoak sor ditzakete sisteman, errendimendu-arazoak barne. " #~ "Sisteman arazoak aurkitzen badituzu, desgaitu hedapen guztiak." #~ msgid "Enable introspection API" #~ msgstr "Gaitu introspekzio APIa" #~ msgid "" #~ "Enables a D-Bus API that allows to introspect the application state of " #~ "the shell." #~ msgstr "" #~ "Shell-en aplikazio-egoeraren introspekzioa ahalbidetzen duen D-Bus API " #~ "bat gaitzen du." #~ msgid "Failed to connect to GNOME Shell" #~ msgstr "Huts egin du GNOME Shell-ekin konektatzeak" #~ msgid "Minimize" #~ msgstr "Minimizatu" #~ msgid "Unmaximize" #~ msgstr "Desmaximizatu" #~ msgid "App Picker View" #~ msgstr "Aplikazio-hautatzailearen ikuspegia" #~ msgid "Index of the currently selected view in the application picker." #~ msgstr "Unean hautatutako ikuspegiaren indizea aplikazio-hautatzailean." #~ msgid "Frequently used applications will appear here" #~ msgstr "Maiztasunez erabilitako aplikazioak hemen agertuko dira" #~ msgid "Frequent" #~ msgstr "Erabilienak" #~ msgid "All" #~ msgstr "Denak" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d" #~ msgstr "%A, %B %-d" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d, %Y" #~ msgstr "%A, %B %-d, %Y" #~ msgid "On" #~ msgstr "Aktibatuta" #~ msgid "Copy Error" #~ msgstr "Kopiatze-errorea" #~ msgid "Next" #~ msgstr "Hurrengoa" #~ msgctxt "button" #~ msgid "Sign In" #~ msgstr "Hasi saioa" #~ msgid "Password: " #~ msgstr "Pasahitza: " #~ msgid "Enter Password…" #~ msgstr "Sartu pasahitza…" #~ msgid "%A, %B %d" #~ msgstr "%A, %B %d" #~ msgid "%d new message" #~ msgid_plural "%d new messages" #~ msgstr[0] "Mezu berri %d" #~ msgstr[1] "%d mezu berri" #~ msgid "Browse in Software" #~ msgstr "Arakatu softwarean" #~ msgctxt "search-result" #~ msgid "Lock Orientation" #~ msgstr "Blokeatu orientazioa" #~ msgid "Rename" #~ msgstr "Aldatu izena" #~ msgid "Type again:" #~ msgstr "Idatzi berriro:" #~ msgid "Authentication required by wireless network" #~ msgstr "Haririk gabeko sareak autentifikazioa eskatzen du" #~ msgid "Mobile broadband network password" #~ msgstr "Bandazabal mugikorreko sarearen pasahitza" #~ msgid "Account Settings" #~ msgstr "Kontuaren ezarpenak" #~ msgid "Orientation Lock" #~ msgstr "Orientazioaren blokeoa" #~ msgid "" #~ "Keybinding that pauses and resumes all running tweens, for debugging " #~ "purposes" #~ msgstr "" #~ "Laster-teklak exekutatzen ari diren 'tween' guztiak pausarazi eta " #~ "jarraitzen ditu arazketa lantzeko" #~ msgid "Which keyboard to use" #~ msgstr "Erabili beharreko teklatua" #~ msgid "The type of keyboard to use." #~ msgstr "Erabili beharreko teklatu mota." #~ msgid "network-workgroup" #~ msgstr "network-workgroup" #~ msgid "toggle-switch-us" #~ msgstr "toggle-switch-us" 0707010000022E000081A40000000000000000000000016712993F00024B0F000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/fa.po# Persian translation for gnome-shell. # Copyright (C) 2010-2011 Iranian Free Software Users Group (IFSUG.org)translation team. # This file is distributed under the same license as the gnome-shell package. # Mahyar Moghimi , 2010. # Arash Mousavi , 2010-2017. # Danial behzadi , 2018-2024. # msgid "" msgstr "" "Project-Id-Version: gnome-shell master\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues/\n" "POT-Creation-Date: 2024-08-06 15:18+0000\n" "PO-Revision-Date: 2024-08-26 12:02+0330\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-DamnedLies-Scope: partial\n" "X-Generator: Poedit 3.4.4\n" "X-Poedit-SourceCharset: UTF-8\n" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "اجراگرها" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate pinned app 1" msgstr "فعّال‌سازی کارهٔ سنجاق شدهٔ ۱" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate pinned app 2" msgstr "فعّال‌سازی کارهٔ سنجاق شدهٔ ۲" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate pinned app 3" msgstr "فعّال‌سازی کارهٔ سنجاق شدهٔ ۳" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate pinned app 4" msgstr "فعّال‌سازی کارهٔ سنجاق شدهٔ ۴" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate pinned app 5" msgstr "فعّال‌سازی کارهٔ سنجاق شدهٔ ۵" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate pinned app 6" msgstr "فعّال‌سازی کارهٔ سنجاق شدهٔ ۶" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate pinned app 7" msgstr "فعّال‌سازی کارهٔ سنجاق شدهٔ ۷" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate pinned app 8" msgstr "فعّال‌سازی کارهٔ سنجاق شدهٔ ۸" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate pinned app 9" msgstr "فعّال‌سازی کارهٔ سنجاق شدهٔ ۹" #: data/50-gnome-shell-launchers.xml:46 msgid "Open new window of pinned app 1" msgstr "گشودن پنجره‌ای جدید از کارهٔ سنجاق شدهٔ ۱" #: data/50-gnome-shell-launchers.xml:50 msgid "Open new window of pinned app 2" msgstr "گشودن پنجره‌ای جدید از کارهٔ سنجاق شدهٔ ۲" #: data/50-gnome-shell-launchers.xml:54 msgid "Open new window of pinned app 3" msgstr "گشودن پنجره‌ای جدید از کارهٔ سنجاق شدهٔ ۳" #: data/50-gnome-shell-launchers.xml:58 msgid "Open new window of pinned app 4" msgstr "گشودن پنجره‌ای جدید از کارهٔ سنجاق شدهٔ ۴" #: data/50-gnome-shell-launchers.xml:62 msgid "Open new window of pinned app 5" msgstr "گشودن پنجره‌ای جدید از کارهٔ سنجاق شدهٔ ۵" #: data/50-gnome-shell-launchers.xml:66 msgid "Open new window of pinned app 6" msgstr "گشودن پنجره‌ای جدید از کارهٔ سنجاق شدهٔ ۶" #: data/50-gnome-shell-launchers.xml:70 msgid "Open new window of pinned app 7" msgstr "گشودن پنجره‌ای جدید از کارهٔ سنجاق شدهٔ ۷" #: data/50-gnome-shell-launchers.xml:74 msgid "Open new window of pinned app 8" msgstr "گشودن پنجره‌ای جدید از کارهٔ سنجاق شدهٔ ۸" #: data/50-gnome-shell-launchers.xml:78 msgid "Open new window of pinned app 9" msgstr "گشودن پنجره‌ای جدید از کارهٔ سنجاق شدهٔ ۹" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2274 msgid "Screenshots" msgstr "نماگرفت‌ها" #: data/50-gnome-shell-screenshots.xml:9 data/org.gnome.shell.gschema.xml.in:287 msgid "Take a screenshot interactively" msgstr "گرفتن کنش‌پذیر یم نماگرفت" #: data/50-gnome-shell-screenshots.xml:12 data/org.gnome.shell.gschema.xml.in:299 msgid "Take a screenshot" msgstr "گرفتن یک نماگرفت" #: data/50-gnome-shell-screenshots.xml:15 data/org.gnome.shell.gschema.xml.in:295 msgid "Take a screenshot of a window" msgstr "گرفتن نماگرفتی از یک پنچره" #: data/50-gnome-shell-screenshots.xml:18 data/org.gnome.shell.gschema.xml.in:291 msgid "Record a screencast interactively" msgstr "ضبط کنش‌پذیر صفحه" #: data/50-gnome-shell-system.xml:6 js/ui/messageTray.js:1298 msgid "System" msgstr "سامانه" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "نمایش فهرست آگاهی‌ها" #: data/50-gnome-shell-system.xml:12 msgid "Open the quick settings menu" msgstr "گشودن فهرست تنظیمات سریع" #: data/50-gnome-shell-system.xml:15 msgid "Focus the active notification" msgstr "تمرکز روی آگاهی فعّال" #: data/50-gnome-shell-system.xml:18 msgid "Show the overview" msgstr "نمایش نمای کلّی" #: data/50-gnome-shell-system.xml:21 msgid "Show all apps" msgstr "نمایش همهٔ کارهٔ" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "پوستهٔ گنوم" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "مدیریت پنجره‌ها و اجرا کنندهٔ برنامه‌ها" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "به کار انداختن ابزارهای داخلی مفید برای توسعه‌دهندگان و آزمونگران از Alt-F2" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 dialog." msgstr "اجازه دسترسی به ابزارهای اشکال‌زدا و پایشگر داخلی با استفاده از محاورهٔ Alt-F2." #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "شناسه‌های یکتای افزونه‌ها برای به کار اندازی" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which should " "be loaded. Any extension that wants to be loaded needs to be in this list. You can " "also manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell." msgstr "" "افزونه‌های گنوم‌شل مشخصهٔ UUID دارند؛ این کلید، افزونه‌هایی که باید بار شوند را فهرست " "می‌کند. هر افزونه‌ای که می‌خواهد بار شود، باید در این فهرست باشد. شما همچنین می‌توانید " "این فهرست را از طریق EnableExtension و DisableExtension (روش‌های D-Bus) در org.gnome." "Shell نیز بسازید." #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "شناسه‌های یکتای افزونه‌ها برای از کار اندازی اجباری" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which should " "be disabled, even if loaded as part of the current mode. You can also manipulate " "this list with the EnableExtension and DisableExtension D-Bus methods on org.gnome." "Shell. This key takes precedence over the “enabled-extensions” setting." msgstr "" "افزونه‌های پوستهٔ گنوم شل شناسه‌ای یکتا دارند؛ این کلید، افزونه‌هایی که باید غیرفعّال " "شوند را فهرست می‌کند، حتا اگر به عنوان بخشی از حالت فعلی بار شده باشند. می‌توانید این " "فهرست را از طریق روش‌های دی‌باس EnableExtension و DisableExtension در org.gnome.Shell " "نیز تغییر دهید." #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "از کار انداختن افزونه‌های کاربر" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" "از کار انداختن تمام افزونه‌هایی که کاربر به کار انداخته، بدون اثر روی تنظیمات " "«افزونهٔ فعّال»." #: data/org.gnome.shell.gschema.xml.in:45 msgid "Allow extension installation" msgstr "اجازهٔ نصب افزونه" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "Allow users to install extensions in their home folder. If disabled, the " "InstallRemoteExtension D-Bus method will fail, and extensions are only loaded from " "system directories on startup. It does not affect extensions that are already " "loaded, so a change only takes full effect on the next login." msgstr "" "اجازه به کاربران برای نصب افزونه‌ها در شاخهٔ خانگیشان. اگر از کار افتاده باشد روش " "دی‌باس InstallRemoteExtension شکست خواهد خورد و افزونه‌ها تنها هنگام شروع از شاخه‌های " "سامانه بار می‌شوند. روی افزونه‌هایی که از پیش بار شده‌اند اثر ندارد، پس تغییرات در ورد " "بعدی تأثیر کامل می‌گذارند." #: data/org.gnome.shell.gschema.xml.in:56 msgid "Disables the validation of extension version compatibility" msgstr "از کار انداختن بررسی سازگاری نسخهٔ افزونه" #: data/org.gnome.shell.gschema.xml.in:57 msgid "" "GNOME Shell will only load extensions that claim to support the current running " "version. Enabling this option will disable this check and try to load all " "extensions regardless of the versions they claim to support." msgstr "" "پوستهٔ گنوم تنها نگارش‌هایی از افزونه‌ها را که ادّعا می‌کنند از نگارش درحال اجرا " "پشتیبانی می‌کند، بار می‌کند. به کار اندازی این گزینه، بررسی این مورد را از کار " "انداخته و سعی می‌کند تمام افزونه‌ها، بدون درنظر گرفتن سازگاری آنها بار شوند." #: data/org.gnome.shell.gschema.xml.in:65 msgid "List of desktop file IDs for favorite applications" msgstr "فهرست شناسه‌های پروندهٔ میزکار برای برنامه‌های مورد علاقه" #: data/org.gnome.shell.gschema.xml.in:66 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "برنامه‌های مشابه این شناسه‌ها در قسمت مورد علاقه‌ها نمایش داده می‌شود." #: data/org.gnome.shell.gschema.xml.in:73 msgid "History for command (Alt-F2) dialog" msgstr "تاریخچهٔ فرمان برای محاورهٔ (Alt-F2)" #. Translators: looking glass is a debugger and inspector tool, see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/docs/looking-glass.md #: data/org.gnome.shell.gschema.xml.in:78 msgid "History for the looking glass dialog" msgstr "تاریخچه برای محاورهٔ آینه" #: data/org.gnome.shell.gschema.xml.in:82 msgid "Always show the “Log Out” action in the system menu" msgstr "نمایش همیشگی کنش «خروج» در فهرست سامانه" #: data/org.gnome.shell.gschema.xml.in:83 msgid "" "This key overrides the automatic hiding of the “Log out” action in the system menu " "for logged-in situations where there is a single, local, non-system user and only a " "single available session type (e.g. GNOME on Wayland)." msgstr "" "این کلید، نهفتن خودکار کنش «خروج» در فهرست سامانه را در مواقعی که یک کاربر محلّی " "غیرسامانه‌ای وارد شده و تنها یک گونه نشست موجود است (چون گنوم روی وی‌لند) پایمال " "می‌کند." #: data/org.gnome.shell.gschema.xml.in:92 msgid "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "اینکه آیا گذرواژه برای سوارکردن سامانه‌های پروندهٔ رمزنگاری شده و یا دوردست به‌خاطر " "سپرده شود یا خیر" #: data/org.gnome.shell.gschema.xml.in:93 msgid "" "The shell will request a password when an encrypted device or a remote filesystem " "is mounted. If the password can be saved for future use a “Remember Password” " "checkbox will be present. This key sets the default state of the checkbox." msgstr "" "هنگامی که دستگاهی رمزنگاری شده یا سامانه‌پرونده‌ای دوردست سوار می‌شود، پوسته درخواست " "گذرواژه می‌کند. اگر گذرواژه را بتوان برای استفادهٔ آینده ذخیره کرد، گزینهٔ «به‌خاطر " "سپردن گذرواژه» موجود خواهد بود. این کلید، حالت پیش‌گزیدهٔ این گزینه را تنظیم می‌کند." #: data/org.gnome.shell.gschema.xml.in:102 msgid "The last selected non-default power profile" msgstr "آخرین نمایهٔ نیروی گزیدهٔ غیر پیش فرض" #: data/org.gnome.shell.gschema.xml.in:103 msgid "" "Some systems support more than two power profiles. In order to still support " "toggling between two profiles, this key records the last selected non-default " "profile." msgstr "" "برخی سامانه‌ها بیش از دو نمایهٔ نیرو را پشتیبانی می‌کنند. به منظور ادامهٔ پشتیبانی از " "تغییر وضعیت بین دو نمایه، این ملید آخرین نمایهٔ نیروی گزیدهٔ غیر پیش‌فرض را ضبط می‌کند." #: data/org.gnome.shell.gschema.xml.in:111 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "آخرین نگارش گفت‌وگوی «به گنوم خوش آمدید» نشان‌داده شده برای" #: data/org.gnome.shell.gschema.xml.in:112 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last shown. " "An empty string represents the oldest possible version, and a huge number will " "represent versions that do not exist yet. This huge number can be used to " "effectively disable the dialog." msgstr "" "این کلید مشخّص می‌کند گفت‌وگوی «به گنوم خوش آمدید»، برای کدام نگارش نشان داده شده. یک " "رشتهٔ خالی، نمایانگر قدیمی‌ترین نگارش ممکن بوده و یه عدد بزرگ، نمایانگر نگارش‌هاییست " "که هنوز وجود ندارند. این عدد بزرگ می‌تواند برای از کار انداختن مؤثّر گفت‌وگو استفاده " "شود." #: data/org.gnome.shell.gschema.xml.in:145 msgid "Layout of the app picker" msgstr "چینش گزینشگر کاره" #: data/org.gnome.shell.gschema.xml.in:146 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are stored in " "the order they appear in GNOME Shell. Each page contains an “application id” → " "'data' pair. Currently, the following values are stored as 'data': • “position”: " "the position of the application icon in the page" msgstr "" "چینش گزینشگر کاره. هر ورودی در آرایه، یک صفحه است. صفحه‌ها به ترتیبی که در پوستهٔ " "گنوم ظاهر می‌شوند، ذخیره می‌شوند. هر صفحه دارای یک جفت «شناسهٔ برنامه» ← «داده» است. " "درحال حاضر، مقدارهای زیر به عنوان «داده»: • «موقعیت»: موقعیت نقشک برنامه در صفحه " "ذخیره شده‌اند" #: data/org.gnome.shell.gschema.xml.in:165 data/org.gnome.shell.gschema.xml.in:172 msgid "Keybinding to shift between overview states" msgstr "ترکیب کلید برای تعویض بین حالت‌های نمای کلّی" #: data/org.gnome.shell.gschema.xml.in:166 msgid "Keybinding to shift between session, window picker and app grid" msgstr "ترکیب کلید برای تبدیل بین نشست، پنجره‌گزین و شبکهٔ کاره" #: data/org.gnome.shell.gschema.xml.in:173 msgid "Keybinding to shift between app grid, window picker and session" msgstr "ترکیب کلید برای تبدیل بین شبکهٔ کاره، پنجره‌گزین و نشست" #: data/org.gnome.shell.gschema.xml.in:179 msgid "Keybinding to open the “Show Applications” view" msgstr "ترکیب کلید برای گشودن نمای «نمایش برنامه‌ها»" #: data/org.gnome.shell.gschema.xml.in:180 msgid "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "ترکیب کلید برای گشودن نمای «نمایش برنامه‌ها» در نمای کلّی فعّالیت‌ها." #: data/org.gnome.shell.gschema.xml.in:187 msgid "Keybinding to open the overview" msgstr "ترکیب کلید برای گشودن نمای کلّی" #: data/org.gnome.shell.gschema.xml.in:188 msgid "Keybinding to open the Activities Overview." msgstr "ترکیب کلید برای گشودن نمای کلّی فعّالیت‌ها." #: data/org.gnome.shell.gschema.xml.in:194 msgid "Keybinding to toggle the visibility of the notification list" msgstr "ترکیب کلید برای تغییر وضعیت نمایش فهرست پیام‌ها" #: data/org.gnome.shell.gschema.xml.in:195 msgid "Keybinding to toggle the visibility of the notification list." msgstr "ترکیب کلید برای تغییر وضعیت نمایش فهرست پیام‌ها." #: data/org.gnome.shell.gschema.xml.in:201 msgid "Keybinding to toggle the quick settings menu" msgstr "ترکیب کلید برای تغییر وضعیت فهرست تنظیمات سریع" #: data/org.gnome.shell.gschema.xml.in:202 msgid "Keybinding to toggle the quick settings menu." msgstr "ترکیب کلید برای تغییر وضعیت فهرست تنظیمات سریع." #: data/org.gnome.shell.gschema.xml.in:208 msgid "Keybinding to focus the active notification" msgstr "ترکیب کلید برای متمرکز کردن آگاهی فعّال" #: data/org.gnome.shell.gschema.xml.in:209 msgid "Keybinding to focus the active notification." msgstr "ترکیب کلید برای متمرکز کردن آگاهی فعّال." #: data/org.gnome.shell.gschema.xml.in:215 msgid "Switch to application 1" msgstr "گشودن نمونه‌ای جدید از برنامهٔ ۱" #: data/org.gnome.shell.gschema.xml.in:219 msgid "Switch to application 2" msgstr "گشودن نمونه‌ای جدید از برنامهٔ ۲" #: data/org.gnome.shell.gschema.xml.in:223 msgid "Switch to application 3" msgstr "گشودن نمونه‌ای جدید از برنامهٔ ۳" #: data/org.gnome.shell.gschema.xml.in:227 msgid "Switch to application 4" msgstr "گشودن نمونه‌ای جدید از برنامهٔ ۴" #: data/org.gnome.shell.gschema.xml.in:231 msgid "Switch to application 5" msgstr "گشودن نمونه‌ای جدید از برنامهٔ ۵" #: data/org.gnome.shell.gschema.xml.in:235 msgid "Switch to application 6" msgstr "گشودن نمونه‌ای جدید از برنامهٔ ۶" #: data/org.gnome.shell.gschema.xml.in:239 msgid "Switch to application 7" msgstr "گشودن نمونه‌ای جدید از برنامهٔ ۷" #: data/org.gnome.shell.gschema.xml.in:243 msgid "Switch to application 8" msgstr "گشودن نمونه‌ای جدید از برنامهٔ ۸" #: data/org.gnome.shell.gschema.xml.in:247 msgid "Switch to application 9" msgstr "گشودن نمونه‌ای جدید از برنامهٔ ۹" #: data/org.gnome.shell.gschema.xml.in:251 msgid "Open a new instance of application 1" msgstr "گشودن نمونه‌ای جدید از برنامهٔ ۱" #: data/org.gnome.shell.gschema.xml.in:255 msgid "Open a new instance of application 2" msgstr "گشودن نمونه‌ای جدید از برنامهٔ ۲" #: data/org.gnome.shell.gschema.xml.in:259 msgid "Open a new instance of application 3" msgstr "گشودن نمونه‌ای جدید از برنامهٔ ۳" #: data/org.gnome.shell.gschema.xml.in:263 msgid "Open a new instance of application 4" msgstr "گشودن نمونه‌ای جدید از برنامهٔ ۴" #: data/org.gnome.shell.gschema.xml.in:267 msgid "Open a new instance of application 5" msgstr "گشودن نمونه‌ای جدید از برنامهٔ ۵" #: data/org.gnome.shell.gschema.xml.in:271 msgid "Open a new instance of application 6" msgstr "گشودن نمونه‌ای جدید از برنامهٔ ۶" #: data/org.gnome.shell.gschema.xml.in:275 msgid "Open a new instance of application 7" msgstr "گشودن نمونه‌ای جدید از برنامهٔ ۷" #: data/org.gnome.shell.gschema.xml.in:279 msgid "Open a new instance of application 8" msgstr "گشودن نمونه‌ای جدید از برنامهٔ ۸" #: data/org.gnome.shell.gschema.xml.in:283 msgid "Open a new instance of application 9" msgstr "گشودن نمونه‌ای جدید از برنامهٔ ۹" #: data/org.gnome.shell.gschema.xml.in:308 data/org.gnome.shell.gschema.xml.in:335 msgid "Limit switcher to current workspace." msgstr "محدود کردن تعویض‌گر به فضای‌کاری فعلی." #: data/org.gnome.shell.gschema.xml.in:309 msgid "" "If true, only applications that have windows on the current workspace are shown in " "the switcher. Otherwise, all applications are included." msgstr "" "اگر درست باشد، تنها برنامه‌هایی که در فضای‌کاری فعلی پنجره دارند در تعویض‌گر نشان داده " "می‌شوند. در غیر این صورت، تمام برنامه‌ها نشان داده می‌شوند." #: data/org.gnome.shell.gschema.xml.in:326 msgid "The application icon mode." msgstr "حالت شمایلی برنامه." #: data/org.gnome.shell.gschema.xml.in:327 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities are " "“thumbnail-only” (shows a thumbnail of the window), “app-icon-only” (shows only the " "application icon) or “both”." msgstr "" "نحوه نمایش پنجره‌ها را در تعویضگر پیکربندی می‌کند. مقدارهای ممکن عبارتند از " "«thumbnail-only» (نمایش تصویر بندانگشتی از پنجره)، «app-icon-only» (نمایش تنها " "شمایل برنامه) یا «both» (هر دو)." #: data/org.gnome.shell.gschema.xml.in:336 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "اگر درست باشد، تنها پنجره‌های فضای‌کاری فعلی در تعویض‌گر نمایش داده می‌شود. در غیر این " "صورت، تمام پنجره‌ها اضافه می‌شوند." #: data/org.gnome.shell.gschema.xml.in:346 msgid "Locations" msgstr "مکان‌ها" #: data/org.gnome.shell.gschema.xml.in:347 msgid "The locations to show in world clocks" msgstr "مکان‌ها برای نمایش در ساعت‌های جهانی" #: data/org.gnome.shell.gschema.xml.in:357 msgid "Automatic location" msgstr "مکان خودکار" #: data/org.gnome.shell.gschema.xml.in:358 msgid "Whether to fetch the current location or not" msgstr "این که مکان فعلی گرفته شود یا نه" #: data/org.gnome.shell.gschema.xml.in:365 msgid "Location" msgstr "مکان" #: data/org.gnome.shell.gschema.xml.in:366 msgid "The location for which to show a forecast" msgstr "مکان برای نمایش پیش‌بینی" #. Keep in sync with subprojects/extensions-app #: data/org.gnome.Shell.Extensions.desktop.in.in:5 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/data/ui/extensions-window.ui:57 msgid "Extensions" msgstr "افزونه‌ها" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "ورود شبکه‌ای" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:275 msgid "Something’s gone wrong" msgstr "اشتباهی صورت گرفت" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this extension can’t " "be displayed. We recommend that you report the issue to the extension authors." msgstr "" "متأسفیم، ولی مشکلی وجود داشت: تنظیمات این افزونه نمی‌تواند نشان داده شوند. توصیه " "می‌کنیم مشکل را به نگارندهٔ افزونه گزارش دهید." #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "جزییات فنّی" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "صفحهٔ خانگی" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 msgid "Visit extension homepage" msgstr "مشاهدهٔ صفحهٔ خانگی افزونه" #: js/gdm/authPrompt.js:151 js/gdm/loginDialog.js:465 js/ui/audioDeviceSelection.js:66 #: js/ui/components/networkAgent.js:113 js/ui/components/polkitAgent.js:144 #: js/ui/endSessionDialog.js:437 js/ui/extensionDownloader.js:276 #: js/ui/shellMountOperation.js:382 js/ui/shellMountOperation.js:392 msgid "Cancel" msgstr "لغو" #: js/gdm/authPrompt.js:317 js/ui/components/networkAgent.js:213 #: js/ui/components/networkAgent.js:233 js/ui/components/networkAgent.js:265 #: js/ui/components/networkAgent.js:298 js/ui/components/networkAgent.js:337 #: js/ui/components/networkAgent.js:350 js/ui/components/polkitAgent.js:286 #: js/ui/shellMountOperation.js:332 msgid "Password" msgstr "گذرواژه" #: js/gdm/loginDialog.js:326 msgid "Choose Session" msgstr "گزینش نشست" #. Translators: is running for #: js/gdm/loginDialog.js:423 #, javascript-format msgid "" "Remote login is not possible because a remote session is already running for %s. To " "login remotely, you must log out from the remote session or force stop it." msgstr "" "ورود دوردست ممکن نیست، چرا که نشستی دوردست برای %s در حال اجراست. برای ورود دوردست " "باید از نشست دوردست خارج شده یا به اجبار متوقّفش کنید." #. Translators: is running for #: js/gdm/loginDialog.js:426 #, javascript-format msgid "" "Login is not possible because a remote session is already running for %s. To login, " "you must log out from the remote session or force stop it." msgstr "" "ورود ممکن نیست، چرا که نشستی دوردست برای %s در حال اجراست. برای ورود باید از نشست " "دوردست خارج شده یا به اجبار متوقّفش کنید." #. Translators: is running for #: js/gdm/loginDialog.js:429 #, javascript-format msgid "" "Remote login is not possible because a local session is already running for %s. To " "login remotely, you must log out from the local session or force stop it." msgstr "" "ورود دوردست ممکن نیست، چرا که نشستی محلی برای %s در حال اجراست. برای ورود دوردست " "باید از نشست محلی خارج شده یا به اجبار متوقّفش کنید." #. Translators: is running for #: js/gdm/loginDialog.js:432 #, javascript-format msgid "" "Login is not possible because a session is already running for %s. To login, you " "must log out from the session or force stop it." msgstr "" "ورود ممکن نیست، چرا که نشستی برای %s در حال اجراست. برای ورود باید از نشست خارج شده " "یا به اجبار متوقّفش کنید." #: js/gdm/loginDialog.js:441 msgid "Session Already Running" msgstr "نشست در حال اجراست" #: js/gdm/loginDialog.js:453 msgid "" "Force stopping will quit any running apps and processes, and could result in data " "loss" msgstr "" "اجبار به توقّف هر کاره و فرایند در حال اجرایی را خواهد بست و ممکن است منجر به از دست " "رفتن داده شود" #: js/gdm/loginDialog.js:473 msgid "Force Stop" msgstr "توقّف اجباری" #: js/gdm/loginDialog.js:541 msgid "Not listed?" msgstr "فهرست نشده؟" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:1009 #, javascript-format msgid "(e.g., user or %s)" msgstr "(برای مثال، کاربر یا %s)" #: js/gdm/loginDialog.js:1014 js/ui/components/networkAgent.js:257 #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:326 msgid "Username" msgstr "نام‌کاربری" #: js/gdm/loginDialog.js:1080 msgid "Login Attempt Timed Out" msgstr "پایان مهلت زمانی تلاش برای ورود" #: js/gdm/loginDialog.js:1081 msgid "Login took too long, please try again" msgstr "ورود بیش از حد طول کشید. لطفاً دوباره تلاش کنید" #: js/gdm/loginDialog.js:1426 msgid "Login Window" msgstr "پنجرهٔ ورود به سامانه" #: js/gdm/util.js:496 msgid "Authentication error" msgstr "خطا تأیید هویت" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:727 msgid "(or swipe finger across reader)" msgstr "(یا انگشتتان را روی خواننده بکشید)" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:732 msgid "(or place finger on reader)" msgstr "(یا انگشتتان را روی خواننده بگذارید)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:91 msgctxt "search-result" msgid "Power Off" msgstr "خاموش کردن" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:94 msgid "power off;poweroff;shutdown;halt;stop" msgstr "power off;poweroff;shutdown;halt;stop;خاموش;توقف" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:99 msgctxt "search-result" msgid "Restart" msgstr "راه‌اندازی دوباره" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:102 msgid "reboot;restart;" msgstr "reboot;restart;شروع دوباره;خاموش و روشن;راه‌اندازی دوباره;" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:107 msgctxt "search-result" msgid "Lock Screen" msgstr "صفحهٔ قفل" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:110 msgid "lock screen" msgstr "قفل کردن صفحه" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:115 msgctxt "search-result" msgid "Log Out" msgstr "خروج" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:118 msgid "logout;log out;sign off" msgstr "logout;log out;sign off;خروج;خارج" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:123 msgctxt "search-result" msgid "Suspend" msgstr "تعلیق" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:126 msgid "suspend;sleep" msgstr "suspend;sleep;تعلیق;خواب" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:131 msgctxt "search-result" msgid "Switch User" msgstr "تعویض کاربر" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:134 msgid "switch user" msgstr "تعویض کاربر" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:141 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "lock orientation;unlock orientation;screen;rotation;قفل;جهت;چرخش;صفحه" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:146 msgctxt "search-result" msgid "Take a Screenshot" msgstr "گرفتن یک نماگرفت" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:149 msgid "screenshot;screencast;snip;capture;record" msgstr "" "screenshot;screencast;snip;capture;record;نماگرفت;اسکرین‌شات;اسکرین‌کست;ضبط صفحه" #: js/misc/systemActions.js:249 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "قفل‌گشایی چرخش صفحه" #: js/misc/systemActions.js:250 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "قفل چرخش صفحه" #: js/misc/util.js:130 msgid "Command not found" msgstr "فرمان پیدا نشد" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:170 msgid "Could not parse command:" msgstr "عدم توانایی در تجزیه فرمان:" #: js/misc/util.js:178 #, javascript-format msgid "Execution of “%s” failed:" msgstr "اجرای «%s» شکست خورد:" #: js/misc/dateUtils.js:69 msgid "Just now" msgstr "همین الآن" #: js/misc/dateUtils.js:72 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%Id دقیقه پیش" msgstr[1] "%Id دقیقه پیش" #: js/misc/dateUtils.js:79 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%Id ساعت پیش" msgstr[1] "%Id ساعت پیش" #: js/misc/dateUtils.js:85 js/ui/dateMenu.js:183 msgid "Yesterday" msgstr "دیروز" #: js/misc/dateUtils.js:88 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%Id روز پیش" msgstr[1] "%Id روز پیش" #: js/misc/dateUtils.js:95 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%Id هفته پیش" msgstr[1] "%Id هفته پیش" #: js/misc/dateUtils.js:102 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%Id ماه پیش" msgstr[1] "%Id ماه پیش" #: js/misc/dateUtils.js:108 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "%Id سال پیش" msgstr[1] "%Id سال پیش" # در این رشته از نویسه‌های ایزوله چپ‌به‌راست استفاده شده است #. Translators: Time in 24h format #: js/misc/dateUtils.js:155 msgid "%H∶%M" msgstr "⁦%OH∶%OM⁩" # در این رشته از نویسه‌های ایزوله چپ‌به‌راست استفاده شده است #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/dateUtils.js:161 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "دیروز، ⁦%OH∶%OM⁩" # در این رشته از نویسه‌های ایزوله چپ‌به‌راست استفاده شده است #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/dateUtils.js:167 #, no-c-format msgid "%A, %H∶%M" msgstr "%A، ⁦%OH∶%OM⁩" # در این رشته از نویسه‌های ایزوله چپ‌به‌راست استفاده شده است #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/dateUtils.js:173 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%-Od %OB، ⁦%OH∶%OM⁩" # در این رشته از نویسه‌های ایزوله چپ‌به‌راست استفاده شده است #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/dateUtils.js:179 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%-Od %OB %OY، ⁦%OH∶%OM⁩" # در این رشته از نویسه‌های ایزوله چپ‌به‌راست استفاده شده است #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/dateUtils.js:184 msgid "%l∶%M %p" msgstr "⁦%Ol∶%OM⁩ %Op" # در این رشته از نویسه‌های ایزوله چپ‌به‌راست استفاده شده است #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/dateUtils.js:190 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "دیروز، ⁦%Ol∶%OM⁩ %p" # در این رشته از نویسه‌های ایزوله چپ‌به‌راست استفاده شده است #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/dateUtils.js:196 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A، ⁦%Ol∶%OM⁩ %Op" # در این رشته از نویسه‌های ایزوله چپ‌به‌راست استفاده شده است #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/dateUtils.js:202 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%-Od %OB، ⁦%Ol∶%OM⁩ %Op" # در این رشته از نویسه‌های ایزوله چپ‌به‌راست استفاده شده است #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/dateUtils.js:208 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%-Od %OB %OY، ⁦%Ol∶%OM⁩ %Op" #: js/portalHelper/main.js:98 msgid "Your connection seems to be secure" msgstr "اتّصالتان امن به نظر می‌رسد" #: js/portalHelper/main.js:104 msgid "" "Your connection to this hotspot login is not secure. Passwords or other information " "you enter on this page can be viewed by people nearby." msgstr "" "اتّصال شما به این ورود نقطهٔ داغ امن نیست. گذرواژه‌ها یا دیگر اطّلاعاتی که در این صفحه " "وارد می‌کنید، می‌تواند توسّط افراد اطراف دیده شود." #: js/portalHelper/main.js:115 msgid "Hotspot Login" msgstr "ورود به نقطهٔ داغ" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:51 js/ui/inhibitShortcutsDialog.js:92 msgid "Deny" msgstr "رد کردن" #: js/ui/accessDialog.js:52 js/ui/inhibitShortcutsDialog.js:101 msgid "Allow" msgstr "اجازه دادن" #: js/ui/appDisplay.js:1769 msgid "Unnamed Folder" msgstr "پوشهٔ بی‌نام" #: js/ui/appFavorites.js:163 #, javascript-format msgid "%s has been pinned to the dash." msgstr "%s به دش سنحاق شد." #: js/ui/appFavorites.js:194 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "سنجاق %s از دش برداشته شد." #: js/ui/appFavorites.js:208 js/ui/main.js:281 msgid "Undo" msgstr "برگردان" #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:49 msgid "Open Windows" msgstr "پنجره‌های باز" #: js/ui/appMenu.js:57 msgid "New Window" msgstr "پنجرهٔ جدید" #: js/ui/appMenu.js:84 msgid "App Details" msgstr "جزییات کاره" #: js/ui/appMenu.js:100 msgid "Quit" msgstr "خروج" #: js/ui/appMenu.js:160 js/ui/dash.js:248 msgid "Unpin" msgstr "سنجاق نکردن" #: js/ui/appMenu.js:161 msgid "Pin to Dash" msgstr "سنجاق به دش" #: js/ui/appMenu.js:178 msgid "Launch using Integrated Graphics Card" msgstr "اجرا با کارت گرافیک یکپارچه" #: js/ui/appMenu.js:179 msgid "Launch using Discrete Graphics Card" msgstr "اجرا با کارت گرافیک جداگانه" #: js/ui/audioDeviceSelection.js:46 msgid "Select Audio Device" msgstr "گزینش افزارهٔ صوتی" #: js/ui/audioDeviceSelection.js:61 js/ui/status/volume.js:81 msgid "Sound Settings" msgstr "تنظیمات صدا" #: js/ui/audioDeviceSelection.js:74 msgid "Headphones" msgstr "هدفون‌ها" #: js/ui/audioDeviceSelection.js:76 msgid "Headset" msgstr "هدست" #: js/ui/audioDeviceSelection.js:78 js/ui/status/volume.js:356 msgid "Microphone" msgstr "صدابَر" #: js/ui/backgroundMenu.js:13 msgid "Change Background…" msgstr "تغییر پس‌زمینه…" #: js/ui/backgroundMenu.js:15 msgid "Display Settings" msgstr "تنظیمات نمایشگر" #: js/ui/backgroundMenu.js:16 msgid "Settings" msgstr "تنظیمات" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:37 msgctxt "calendar-no-work" msgid "06" msgstr "45" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:63 msgctxt "grid sunday" msgid "S" msgstr "ی" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:65 msgctxt "grid monday" msgid "M" msgstr "د" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:67 msgctxt "grid tuesday" msgid "T" msgstr "س" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:69 msgctxt "grid wednesday" msgid "W" msgstr "چ" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:71 msgctxt "grid thursday" msgid "T" msgstr "پ" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:73 msgctxt "grid friday" msgid "F" msgstr "آ" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:75 msgctxt "grid saturday" msgid "S" msgstr "ش" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:426 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:436 msgid "%OB %Y" msgstr "%OB %OY" #: js/ui/calendar.js:498 msgid "Previous month" msgstr "ماه پیش" #: js/ui/calendar.js:516 msgid "Next month" msgstr "ماه بعد" #: js/ui/calendar.js:667 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%Od" #: js/ui/calendar.js:726 msgid "Week %V" msgstr "هفته %OV" #: js/ui/calendar.js:918 msgid "No Notifications" msgstr "بدون آگاهی" #: js/ui/calendar.js:974 msgid "Do Not Disturb" msgstr "مزاحم نشوید" #: js/ui/calendar.js:995 msgid "Clear" msgstr "پاک‌سازی" #: js/ui/calendar.js:999 msgctxt "action" msgid "Clear all notifications" msgstr "پاک‌سازی همهٔ آگاهی‌ها" #. Translators: %s is an application name #: js/ui/closeDialog.js:42 #, javascript-format msgid "“%s” Is Not Responding" msgstr "«%s» پاسخگو نیست" #: js/ui/closeDialog.js:43 msgid "" "You may choose to wait a short while for it to continue or force the app to quit " "entirely" msgstr "" "ممکن است بخواهید مدت کوتاهی منتظر مانده تا ادامه دهد یا کاره را مجبور به خروج کامل " "کنید" #: js/ui/closeDialog.js:71 msgid "Force Quit" msgstr "خروج اجباری" #: js/ui/closeDialog.js:76 msgid "Wait" msgstr "انتظار" #: js/ui/components/automountManager.js:82 msgid "External drive connected" msgstr "گردانندهٔ خارجی وصل شد" #: js/ui/components/automountManager.js:94 msgid "External drive disconnected" msgstr "اتّصال گردانندهٔ خارجی قطع شد" #: js/ui/components/automountManager.js:208 msgid "Unable to unlock volume" msgstr "ناتوانی در قفل‌گشایی حجم" #: js/ui/components/automountManager.js:209 msgid "The installed udisks version does not support the PIM setting" msgstr "نگارش نصب‌شدهٔ udisk از تنظیمات PIM پشتیبانی نمی‌کند" #. Translators: %s is the name of a partition on a external drive #: js/ui/components/autorunManager.js:189 #, javascript-format msgid "“%s” connected" msgstr "«%s» وصل‌شد" #: js/ui/components/autorunManager.js:190 msgid "Disk can now be used" msgstr "اکنون دیسک می‌تواند استفاده شود" #: js/ui/components/autorunManager.js:202 #, javascript-format msgid "Open with %s" msgstr "گشودن با %s" #: js/ui/components/networkAgent.js:95 msgid "Alternatively you can connect by pushing the “WPS” button on your router" msgstr "همچنین می‌توانید با فشردن دکمهٔ WPS روی مسیریابتان وصل شوید" #: js/ui/components/networkAgent.js:107 js/ui/status/bluetooth.js:245 #: js/ui/status/network.js:360 js/ui/status/network.js:444 msgid "Connect" msgstr "اتّصال" #: js/ui/components/networkAgent.js:222 msgid "Key" msgstr "کلید" #: js/ui/components/networkAgent.js:273 js/ui/components/networkAgent.js:312 msgid "Private key password" msgstr "گذرواژهٔ کلید خصوصی" #: js/ui/components/networkAgent.js:306 msgid "Identity" msgstr "شناسه" #: js/ui/components/networkAgent.js:332 msgid "Service" msgstr "خدمت" #: js/ui/components/networkAgent.js:370 js/ui/components/networkAgent.js:406 #: js/ui/components/networkAgent.js:743 js/ui/components/networkAgent.js:764 msgid "Authentication required" msgstr "نیاز به تأیید هویت است" #: js/ui/components/networkAgent.js:371 js/ui/components/networkAgent.js:744 #, javascript-format msgid "Passwords or encryption keys are required to access the wireless network “%s”" msgstr "برای دسترسی به شبکهٔ بی‌سیم «%s» نیاز به گذرواژه یا کلیدهای رمزنگاری است" #: js/ui/components/networkAgent.js:375 js/ui/components/networkAgent.js:748 msgid "Wired 802.1X authentication" msgstr "تأیید هویت 802.1X سیمی" #: js/ui/components/networkAgent.js:378 msgid "Network name" msgstr "نام شبکه" #: js/ui/components/networkAgent.js:386 js/ui/components/networkAgent.js:752 msgid "DSL authentication" msgstr "تأیید هویت DSL" #: js/ui/components/networkAgent.js:393 js/ui/components/networkAgent.js:757 msgid "PIN code required" msgstr "رمز پین لازم است" #: js/ui/components/networkAgent.js:394 js/ui/components/networkAgent.js:758 msgid "PIN code is needed for the mobile broadband device" msgstr "رمز پین برای دستگاه پهن‌باند همراه لازم است" #: js/ui/components/networkAgent.js:396 msgid "PIN" msgstr "پین" #: js/ui/components/networkAgent.js:407 js/ui/components/networkAgent.js:749 #: js/ui/components/networkAgent.js:753 js/ui/components/networkAgent.js:765 #: js/ui/components/networkAgent.js:769 #, javascript-format msgid "A password is required to connect to “%s”" msgstr "برای وصل شدن به «%s» نیاز به گذرواژه است" #: js/ui/components/networkAgent.js:768 msgid "VPN password" msgstr "گذرواژهٔ وی‌پی‌ان" #: js/ui/components/polkitAgent.js:44 msgid "Authentication Required" msgstr "تأیید هویت لازم است" #: js/ui/components/polkitAgent.js:84 msgid "Administrator" msgstr "مدیر" #: js/ui/components/polkitAgent.js:149 msgid "Authenticate" msgstr "تأیید هویت" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:263 js/ui/shellMountOperation.js:415 msgid "Sorry, that didn’t work. Please try again." msgstr "متاسفانه اثری نداشت! لطفاً دوباره تلاش کنید." #: js/ui/ctrlAltTab.js:23 js/ui/overviewControls.js:404 msgid "Windows" msgstr "پنجره‌‌ها" #: js/ui/dash.js:204 js/ui/dash.js:250 msgid "Show Apps" msgstr "نمایش کاره‌ها" #. Translators: this is the name of the dock/favorites area on #. the bottom of the overview #: js/ui/dash.js:408 msgid "Dash" msgstr "دَش" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:99 msgid "%B %-d %Y" msgstr "%-Od %OB %OY" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:106 msgid "%A %B %e %Y" msgstr "%A %Od %OB %OY" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:172 msgctxt "calendar heading" msgid "%B %-d" msgstr "%-Od %OB" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:175 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%-Od %OB %OY" #: js/ui/dateMenu.js:181 msgid "Today" msgstr "امروز" #: js/ui/dateMenu.js:185 msgid "Tomorrow" msgstr "فردا" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:216 msgctxt "event list time" msgid "All Day" msgstr "تمام روز" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:238 msgid "%m/%d" msgstr "%m/%d" #: js/ui/dateMenu.js:289 msgid "No Events" msgstr "بدون رویداد" #: js/ui/dateMenu.js:411 msgid "Add World Clocks…" msgstr "افزودن ساعت‌های جهانی…" #: js/ui/dateMenu.js:412 msgid "World Clocks" msgstr "ساعت‌های جهانی" #: js/ui/dateMenu.js:702 msgid "Loading…" msgstr "درحال بار کردن…" #: js/ui/dateMenu.js:712 msgid "Go Online for Weather Information" msgstr "برای اطّلاعات آب‌وهوا برخط شوید" #: js/ui/dateMenu.js:714 msgid "Weather Information Unavailable" msgstr "اطّلاعات آب‌وهوا ناموجود" #: js/ui/dateMenu.js:724 msgid "Weather" msgstr "آب‌وهوا" #: js/ui/dateMenu.js:726 msgid "Select Weather Location…" msgstr "گزینش مکان آب‌وهوا…" #: js/ui/endSessionDialog.js:47 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "خروج از %s" #: js/ui/endSessionDialog.js:48 msgctxt "title" msgid "Log Out" msgstr "خروج" #: js/ui/endSessionDialog.js:51 #, javascript-format msgid "%s will be logged out automatically in %d second" msgid_plural "%s will be logged out automatically in %d seconds" msgstr[0] "%s پس از %Id ثانیه به طور خودکار از سامانه خارج خواهد شد" msgstr[1] "%s پس از %Id ثانیه به طور خودکار از سامانه خارج خواهد شد" #: js/ui/endSessionDialog.js:57 #, javascript-format msgid "You will be logged out automatically in %d second" msgid_plural "You will be logged out automatically in %d seconds" msgstr[0] "پس از %Id ثانیه به طور خودکار از سامانه خارج می‌شوید" msgstr[1] "پس از %Id ثانیه به طور خودکار از سامانه خارج می‌شوید" #: js/ui/endSessionDialog.js:64 msgctxt "button" msgid "Log Out" msgstr "خروج" #: js/ui/endSessionDialog.js:70 js/ui/status/system.js:174 msgctxt "title" msgid "Power Off" msgstr "خاموش کردن" #: js/ui/endSessionDialog.js:71 msgctxt "title" msgid "Install Updates & Power Off" msgstr "نصب به‌روز رسانی‌ها و خاموش کردن" #: js/ui/endSessionDialog.js:74 #, javascript-format msgid "The system will power off automatically in %d second" msgid_plural "The system will power off automatically in %d seconds" msgstr[0] "سامانه پس از %Id ثانیه به طور خودکار خاموش می‌شود" msgstr[1] "سامانه پس از %Id ثانیه به طور خودکار خاموش می‌شود" #: js/ui/endSessionDialog.js:78 js/ui/endSessionDialog.js:97 msgctxt "checkbox" msgid "Install pending software updates" msgstr "نصب به‌روز رسانی‌های منتظر" #: js/ui/endSessionDialog.js:82 msgctxt "button" msgid "Power Off" msgstr "خاموش کردن" #: js/ui/endSessionDialog.js:89 msgctxt "title" msgid "Restart" msgstr "راه‌اندازی دوباره" #: js/ui/endSessionDialog.js:90 msgctxt "title" msgid "Install Updates & Restart" msgstr "نصب به‌روز رسانی‌ها و راه‌اندازی دوباره" #: js/ui/endSessionDialog.js:93 #, javascript-format msgid "The system will restart automatically in %d second" msgid_plural "The system will restart automatically in %d seconds" msgstr[0] "سامانه پس از %Id ثانیه به طور خودکار دوباره راه‌اندازی می‌شود" msgstr[1] "سامانه پس از %Id ثانیه به طور خودکار دوباره راه‌اندازی می‌شود" #: js/ui/endSessionDialog.js:101 msgctxt "button" msgid "Restart" msgstr "راه‌اندازی دوباره" #: js/ui/endSessionDialog.js:109 msgctxt "title" msgid "Restart & Install Updates" msgstr "راه‌اندازی دوباره و نصب به‌روز رسانی‌ها" #: js/ui/endSessionDialog.js:112 #, javascript-format msgid "The system will automatically restart and install updates in %d second" msgid_plural "The system will automatically restart and install updates in %d seconds" msgstr[0] "" "سامانه پس از %Id ثانیه به طور خودکار دوباره راه‌اندازی شده و به‌روز رسانی‌ها را نصب " "می‌کند" msgstr[1] "" "سامانه پس از %Id ثانیه به طور خودکار دوباره راه‌اندازی شده و به‌روز رسانی‌ها را نصب " "می‌کند" #: js/ui/endSessionDialog.js:119 js/ui/endSessionDialog.js:140 msgctxt "button" msgid "Restart & Install" msgstr "راه‌اندازی دوباره و نصب" #: js/ui/endSessionDialog.js:121 msgctxt "button" msgid "Install & Power Off" msgstr "نصب و خاموش کردن" #: js/ui/endSessionDialog.js:122 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "خاموش کردن پس از نصب به‌روز رسانی‌ها" #: js/ui/endSessionDialog.js:129 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "راه‌اندازی دوباره و نصب ارتقا" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:134 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long time: " "ensure that you have backed up and that the computer is plugged in." msgstr "" "پس از راه‌اندازی دوباره %s %s نصب خواهد شد. نصب ارتقا ممکن است زمان زیادی طول بکشد: " "مطمئن شوید که پشتیبان دارید و رایانه به برق وصل است." #: js/ui/endSessionDialog.js:283 msgid "Low battery power: please plug in before installing updates" msgstr "باتری کم است: لطفاً پیش از نصب به‌روز رسانی‌ها به برق بزنید" #: js/ui/endSessionDialog.js:292 msgid "Some applications are busy or have unsaved work" msgstr "برخی برنامه‌ها مشغول بوده یا کار ذخیره نشده دارند" #: js/ui/endSessionDialog.js:297 msgid "Other users are logged in" msgstr "کاربران دیگری وارد شده هستند" #: js/ui/endSessionDialog.js:467 msgctxt "button" msgid "Boot Options" msgstr "گزینه‌های راه‌اندازی" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:672 #, javascript-format msgid "%s (remote)" msgstr "%s (دوردست)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:675 #, javascript-format msgid "%s (console)" msgstr "%s (پایانه)" #: js/ui/extensionDownloader.js:280 msgid "Install" msgstr "نصب" #: js/ui/extensionDownloader.js:286 msgid "Install Extension" msgstr "نصب افزونه" #: js/ui/extensionDownloader.js:287 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "بارگیری و نصب «%s» از extensions.gnome.org؟" #: js/ui/extensionSystem.js:352 msgid "Extension Updates Available" msgstr "به‌روز رسانی‌های افزونه موجودند" #: js/ui/extensionSystem.js:353 msgid "Extension updates are ready to be installed" msgstr "به‌روز رسانی‌های افزونه‌ها آمادهٔ نصبند" #: js/ui/inhibitShortcutsDialog.js:70 msgid "Allow inhibiting shortcuts" msgstr "اجازه به جلوگیری از میان‌بر ها" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:73 #, javascript-format msgid "The app %s wants to inhibit shortcuts" msgstr "کارهٔ %s می‌خواهد جلوی میان‌برها را بگیرد" #: js/ui/inhibitShortcutsDialog.js:74 msgid "An app wants to inhibit shortcuts" msgstr "کاره‌ای می‌خواهد جلوی میان‌برها را بگیرد" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:81 #, javascript-format msgid "You can restore shortcuts by pressing %s" msgstr "می‌توانید با زدن %s میان‌برها را برگردانید" #: js/ui/kbdA11yDialog.js:34 msgid "Slow Keys Turned On" msgstr "کلیدهای آهسته روشن شدند" #: js/ui/kbdA11yDialog.js:35 msgid "Slow Keys Turned Off" msgstr "کلیدهای آهسته خاموش شدند" #: js/ui/kbdA11yDialog.js:36 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the Slow " "Keys feature, which affects the way your keyboard works." msgstr "" "دکمهٔ تبدیل را ۸ ثانیه نگه داشتید. این میان‌بری برای ویژگی دکمه‌های آهسته است که بر " "نحوهٔ کار صفحه‌کلیدتان اثر می‌گذارد." #: js/ui/kbdA11yDialog.js:42 msgid "Sticky Keys Turned On" msgstr "کلیدهای چسبان روشن شدند" #: js/ui/kbdA11yDialog.js:43 msgid "Sticky Keys Turned Off" msgstr "کلیدهای چسبان خاموش شدند" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for the " "Sticky Keys feature, which affects the way your keyboard works." msgstr "" "کلید تبدیل را ۵ بار پشت سر هم زدید. این میان‌بری برای ویژگی کلید‌های چسبان است که بر " "نحوهٔ کار صفحه‌کلیدتان اثر می‌گذارد." #: js/ui/kbdA11yDialog.js:47 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a row. This " "turns off the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "دو کلید را هم‌زمان فشرده یا کلید تبدیل را ۵ بار پشت سر هم زدید. این میان‌بری برای " "ویژگی کلید‌های چسبان است که بر نحوهٔ کار صفحه‌کلیدتان اثر می‌گذارد." #: js/ui/kbdA11yDialog.js:57 msgid "Leave On" msgstr "روشن گذاشتن" #: js/ui/kbdA11yDialog.js:57 msgid "Turn On" msgstr "روشن کردن" #: js/ui/kbdA11yDialog.js:67 js/ui/status/network.js:455 msgid "Turn Off" msgstr "خاموش کردن" #: js/ui/kbdA11yDialog.js:67 msgid "Leave Off" msgstr "خاموش گذاشتن" #: js/ui/keyboard.js:180 js/ui/status/keyboard.js:897 msgid "Keyboard Settings" msgstr "تنظیمات صفحه‌کلید" #: js/ui/lookingGlass.js:727 msgid "No extensions installed" msgstr "هیچ افزونه‌ای نصب نشده است" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:788 #, javascript-format msgid "%s has not emitted any errors" msgstr "افزونهٔ %s هیچ خطایی منتشر نکرده" #: js/ui/lookingGlass.js:794 msgid "Hide Errors" msgstr "نهفتن خطاها" #: js/ui/lookingGlass.js:798 js/ui/lookingGlass.js:875 msgid "Show Errors" msgstr "نمایش خطاها" #: js/ui/lookingGlass.js:807 msgid "Active" msgstr "فعّال" #: js/ui/lookingGlass.js:810 msgid "Inactive" msgstr "غیرفعال" #: js/ui/lookingGlass.js:812 msgid "Error" msgstr "خطا" #: js/ui/lookingGlass.js:814 msgid "Out of date" msgstr "قدیمی" #: js/ui/lookingGlass.js:816 msgid "Downloading" msgstr "درحال بارگیری" #: js/ui/lookingGlass.js:818 msgid "Deactivating" msgstr "غیرفعّال کردن" #: js/ui/lookingGlass.js:820 msgid "Activating" msgstr "فعّال کردن" #: js/ui/lookingGlass.js:853 msgid "View Source" msgstr "نمایش منبع" #: js/ui/lookingGlass.js:864 msgid "Web Page" msgstr "صفحهٔ وب" #: js/ui/main.js:277 msgid "System was put in unsafe mode" msgstr "سامانه در حالت ناامن گذاشته شده بود" #: js/ui/main.js:278 msgid "Apps now have unrestricted access" msgstr "کاره اکنون دسترسی نامحدود دارد" #: js/ui/main.js:338 msgid "Logged in as a privileged user" msgstr "واردشده به عنوان کاربری ممتاز" #: js/ui/main.js:339 msgid "" "Running a session as a privileged user should be avoided for security reasons. If " "possible, you should log in as a normal user." msgstr "" "به دلایل امنیتی باید از اجرای یک نشست به عنوان کاربری ممتاز خودداری کرد. در صورت " "امکان، با کاربری عادی وارد شوید." #: js/ui/main.js:387 msgid "Screen Lock disabled" msgstr "قفل صفحه از کار افتاده" #: js/ui/main.js:388 msgid "Screen Locking requires the GNOME display manager" msgstr "قفل کردن صفحه نیاز به مدیر نمایش گنوم دارد" #. Translators: this is the string displayed in the header when a message #. source doesn't have a name #: js/ui/messageList.js:374 msgid "Unknown App" msgstr "کارهٔ ناشناخته" #: js/ui/messageTray.js:326 js/ui/messageTray.js:328 msgid "Notification sound" msgstr "صدای آگاهی" #: js/ui/mpris.js:198 msgid "Unknown artist" msgstr "هنرمند ناشناس" #: js/ui/mpris.js:208 msgid "Unknown title" msgstr "عنوان ناشناس" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:328 msgid "Type to search" msgstr "نوشتن برای جست‌وجو" #: js/ui/overviewControls.js:392 msgid "Apps" msgstr "کاره‌ها" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:33 msgid "Overview" msgstr "نمای کلّی" #: js/ui/padOsd.js:98 msgid "New shortcut…" msgstr "میان‌بر جدید…" #: js/ui/padOsd.js:151 msgid "App defined" msgstr "تعریف شده در کاره" #: js/ui/padOsd.js:152 msgid "Show on-screen help" msgstr "نمایش راهنمای روی صفحه" #: js/ui/padOsd.js:153 msgid "Switch monitor" msgstr "تعویض نمایشگر" #: js/ui/padOsd.js:154 msgid "Assign keystroke" msgstr "تخصیص دنبالهٔ کلید" #: js/ui/padOsd.js:223 msgid "Done" msgstr "انجام شد" #: js/ui/padOsd.js:726 msgid "Edit…" msgstr "ویرایش…" #: js/ui/padOsd.js:773 msgid "None" msgstr "هیچ‌کدام" #: js/ui/padOsd.js:844 msgid "Press a button to configure" msgstr "برای پیکربندی، کلیدی را بزنید" #: js/ui/padOsd.js:845 msgid "Press Esc to exit" msgstr "برای خروج، گریز را بزنید" #: js/ui/padOsd.js:848 msgid "Press any key to exit" msgstr "برای خروج، هر کلیدی را بزنید" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:423 msgid "Activities" msgstr "فعّالیت‌ها" #: js/ui/panel.js:504 msgctxt "System menu in the top bar" msgid "System" msgstr "سامانه" #: js/ui/panel.js:678 msgid "Top Bar" msgstr "نوار بالا" #: js/ui/quickSettings.js:188 msgid "Open menu" msgstr "گشودن فهرست" #: js/ui/runDialog.js:61 msgid "Run a Command" msgstr "اجرای یک فرمان" #: js/ui/runDialog.js:76 msgid "Press ESC to close" msgstr "برای بستن، گریز را بزنید" #: js/ui/runDialog.js:241 msgid "Restart is not available on Wayland" msgstr "راه‌اندازی دوباره در وی‌لند موجود نیست" #: js/ui/runDialog.js:246 msgid "Restarting…" msgstr "درحال راه‌اندازی دوباره…" #: js/ui/screenShield.js:233 msgid "GNOME needs to lock the screen" msgstr "لازم است گنوم صفحه را قفل کند" #: js/ui/screenShield.js:274 js/ui/screenShield.js:667 msgid "Unable to lock" msgstr "نمی‌توان قفل کرد" #: js/ui/screenShield.js:275 js/ui/screenShield.js:668 msgid "Lock was blocked by an app" msgstr "قفل به دست کاره‌ای مسدود شده بود" #: js/ui/screenshot.js:1252 msgid "Selection" msgstr "گزینش" #: js/ui/screenshot.js:1262 msgid "Area Selection" msgstr "گزینش ناحیه" #: js/ui/screenshot.js:1267 msgid "Screen" msgstr "صفحه" #: js/ui/screenshot.js:1277 msgid "Screen Selection" msgstr "گزینش صفحه" #: js/ui/screenshot.js:1282 msgid "Window" msgstr "پنجره‌" #: js/ui/screenshot.js:1292 msgid "Window Selection" msgstr "گزینش پنجره" #. Translators: entry in the window right click menu. #: js/ui/screenshot.js:1317 js/ui/status/system.js:111 js/ui/windowMenu.js:28 msgid "Take Screenshot" msgstr "گرفتن نماگرفت" #: js/ui/screenshot.js:1333 msgid "Record Screen" msgstr "ضبط صفحه" #. Translators: since this string refers to an action, #. it needs to be phrased as a verb. #: js/ui/screenshot.js:1350 msgid "Capture" msgstr "ضبط" #: js/ui/screenshot.js:1372 msgid "Show Pointer" msgstr "نمایش اشاره‌گر" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1996 msgid "Screencasts" msgstr "ضبط‌های صفحه" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast From 07-17-2013 10:00:46 PM" #: js/ui/screenshot.js:2001 #, no-c-format msgid "Screencast From %d %t" msgstr "ضبط صفحه از %Id %t" #. Translators: notification title. #: js/ui/screenshot.js:2047 msgid "Screencast recorded" msgstr "صفحه ضبط شد" #. Translators: notification title. #: js/ui/screenshot.js:2060 msgid "Screencast failed to start" msgstr "آغاز ضبط صفحه شکست خورد" #. Translators: notification title. #: js/ui/screenshot.js:2066 msgid "Screencast ended: Out of disk space" msgstr "صفحه ضبط پایان یافت: بدون فضای دیسک" #. We can encourage user to try again on service crashes since the #. recorder will auto-blocklist the pipeline that crashed. #. Translators: notification title. #: js/ui/screenshot.js:2072 msgid "Screencast ended unexpectedly, please try again" msgstr "صفحه ضبط به طور غیرمنتظره‌ای پایان یافت. لطفاً دوباره تلاش کنید" #. Translators: notification title. #: js/ui/screenshot.js:2075 msgid "Screencast ended unexpectedly" msgstr "صفحه ضبط به طور غیرمنتظره‌ای پایان یافت" #. Translators: notification source name. #: js/ui/screenshot.js:2085 js/ui/screenshot.js:2327 msgid "Screenshot" msgstr "نماگرفت" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:2092 msgid "Click here to view the video." msgstr "برای دیدن ویدیو این‌جا بزنید." #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:2100 js/ui/screenshot.js:2343 msgid "Show in Files" msgstr "نمایش در پرونده‌ها" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2287 #, javascript-format msgid "Screenshot From %s" msgstr "نماگرفت از %s" #. Translators: notification title. #: js/ui/screenshot.js:2333 msgid "Screenshot captured" msgstr "نماگرفت ضبط شد" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2335 msgid "You can paste the image from the clipboard." msgstr "می‌توانید تصویر را از تخته‌گیره بچسبانید." #: js/ui/screenshot.js:2391 js/ui/screenshot.js:2555 msgid "Screenshot taken" msgstr "نماگرفت انجام شد" #: js/ui/search.js:829 msgid "Searching…" msgstr "درحال جست‌وجو…" #: js/ui/search.js:831 msgid "No results" msgstr "بدون نتیجه" #: js/ui/search.js:962 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "%Id بیش‌تر" msgstr[1] "%Id بیش‌تر" #: js/ui/searchController.js:87 #: subprojects/extensions-app/data/ui/extensions-window.ui:73 msgid "Search" msgstr "جست‌وجو" #: js/ui/shellEntry.js:21 msgid "Copy" msgstr "رونوشت" #: js/ui/shellEntry.js:26 msgid "Paste" msgstr "جای‌گذاری" #: js/ui/shellEntry.js:78 msgid "Show Text" msgstr "نمایش متن" #: js/ui/shellEntry.js:80 msgid "Hide Text" msgstr "نهفتن متن" #: js/ui/shellEntry.js:174 msgid "Caps lock is on" msgstr "قفل تبدیل روشن است" #: js/ui/shellMountOperation.js:286 msgid "Hidden Volume" msgstr "حجم مخفی" #: js/ui/shellMountOperation.js:289 msgid "Windows System Volume" msgstr "حجم سامانه‌ای ویندوز" #: js/ui/shellMountOperation.js:292 msgid "Uses Keyfiles" msgstr "از پرونده‌های کلید استفاده می‌کند" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:300 #, javascript-format msgid "To unlock a volume that uses keyfiles, use the %s utility instead" msgstr "" "استفاده از ابزار %s برای قفل‌گشایی حجمی که از پرونده‌های کلید استفاده می‌کند" #: js/ui/shellMountOperation.js:304 msgid "" "You need an external utility like Disks to unlock a volume that uses keyfiles" msgstr "" "برای قفل‌گشایی از حجمی که از پرونده‌های کلید استفاده می‌کند نیاز به ابزاری خارجی چون " "دیسک‌ها دارید" #: js/ui/shellMountOperation.js:312 msgid "PIM Number" msgstr "شمارهٔ PIM" #: js/ui/shellMountOperation.js:371 msgid "Remember Password" msgstr "به‌خاطر سپردن گذرواژه" #: js/ui/shellMountOperation.js:386 msgid "Unlock" msgstr "قفل‌گشایی" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:400 #, javascript-format msgid "Open %s" msgstr "گشودن %s" #: js/ui/shellMountOperation.js:436 msgid "The PIM must be a number or empty" msgstr "PIM باید یک شماره یا خالی باشد" #: js/ui/status/accessibility.js:34 msgid "Accessibility" msgstr "دسترسی‌پذیری" #: js/ui/status/accessibility.js:44 msgid "High Contrast" msgstr "کنتراست بالا" #: js/ui/status/accessibility.js:47 msgid "Zoom" msgstr "بزرگنمایی" #: js/ui/status/accessibility.js:54 msgid "Screen Reader" msgstr "صفحه‌نمایش خوان" #: js/ui/status/accessibility.js:58 msgid "Screen Keyboard" msgstr "صفحه‌کلید مجازی" #: js/ui/status/accessibility.js:62 msgid "Visual Alerts" msgstr "هشدارهای نمایشی" #: js/ui/status/accessibility.js:66 msgid "Sticky Keys" msgstr "کلیدهای چسبان" #: js/ui/status/accessibility.js:70 msgid "Slow Keys" msgstr "کلیدهای آهسته" #: js/ui/status/accessibility.js:74 msgid "Bounce Keys" msgstr "کلیدهای پرشی" #: js/ui/status/accessibility.js:78 msgid "Mouse Keys" msgstr "کلیدهای موشی" #: js/ui/status/accessibility.js:83 msgid "Accessibility Settings" msgstr "تنظیمات دسترسی‌پذیری" #: js/ui/status/accessibility.js:140 msgid "Large Text" msgstr "متن درشت" #: js/ui/status/autoRotate.js:14 msgid "Auto Rotate" msgstr "چرخاندن خودکار" #: js/ui/status/backgroundApps.js:156 msgctxt "title" msgid "Background Apps" msgstr "کاره‌های پس‌زمینه" #: js/ui/status/backgroundApps.js:171 msgid "Apps known to be running without a window" msgstr "کاره‌های شناخته برای اجرای بدون پنجره" #: js/ui/status/backgroundApps.js:182 msgid "App Settings" msgstr "تنظیمات کاره" #: js/ui/status/backgroundApps.js:239 msgid "No Background Apps" msgstr "بدون کارهٔ پس‌زمینه" #: js/ui/status/backgroundApps.js:241 #, javascript-format msgid "%d Background App" msgid_plural "%d Background Apps" msgstr[0] "%Id کارهٔ پس‌زمینه" msgstr[1] "%Id کارهٔ پس‌زمینه" #: js/ui/status/backlight.js:39 msgid "Keyboard Brightness" msgstr "روشنایی صفحه‌کلید" #: js/ui/status/backlight.js:79 msgid "Off" msgstr "خاموش" #: js/ui/status/backlight.js:80 msgid "Low" msgstr "کم" #: js/ui/status/backlight.js:81 msgid "High" msgstr "زیاد" #: js/ui/status/backlight.js:147 js/ui/status/keyboard.js:879 msgid "Keyboard" msgstr "صفحه‌کلید" #: js/ui/status/bluetooth.js:245 js/ui/status/network.js:360 msgid "Disconnect" msgstr "قطع ارتباط" #: js/ui/status/bluetooth.js:262 js/ui/status/bluetooth.js:264 msgid "Bluetooth" msgstr "بلوتوث" #: js/ui/status/bluetooth.js:287 js/ui/status/network.js:1900 msgid "Bluetooth Settings" msgstr "تنظیمات بلوتوث" #: js/ui/status/bluetooth.js:334 msgid "No available or connected devices" msgstr "بدون افزارهٔ وصل شده یا موجود" #: js/ui/status/bluetooth.js:335 msgid "Turn on Bluetooth to connect to devices" msgstr "برای وصل شدن به افزاره‌ها بلوتوث را روشن کنید" #. Translators: This is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:389 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%Id وصل‌شده" msgstr[1] "%Id وصل‌شده" #: js/ui/status/brightness.js:32 msgid "Brightness" msgstr "روشنایی" #: js/ui/status/darkMode.js:12 msgid "Dark Style" msgstr "سبک تیره" #: js/ui/status/dwellClick.js:15 msgid "Single Click" msgstr "تک کلیک" #: js/ui/status/dwellClick.js:20 msgid "Double Click" msgstr "دوبار کلیک" #: js/ui/status/dwellClick.js:25 msgid "Drag" msgstr "کشیدن" #: js/ui/status/dwellClick.js:30 msgid "Secondary Click" msgstr "کلیک دوم" #: js/ui/status/dwellClick.js:39 msgid "Dwell Click" msgstr "کلیک طولانی" #: js/ui/status/keyboard.js:896 msgid "Show Keyboard Layout" msgstr "نمایش چیدمان صفحه‌کلید" #: js/ui/status/location.js:337 msgid "Allow location access" msgstr "اجازهٔ دسترسی به مکان" #. Translators: %s is an application name #: js/ui/status/location.js:339 #, javascript-format msgid "The app %s wants to access your location" msgstr "برنامهٔ %s می‌خواهد به مکانتان دسترسی داشته باشد" #: js/ui/status/location.js:349 msgid "Location access can be changed at any time from the privacy settings" msgstr "دسترسی به مکان در هر زمانی می‌تواند از طریق تنظیمات حریم‌خصوصی تغییر کند" #: js/ui/status/location.js:357 msgid "Deny Access" msgstr "رد دسترسی" #: js/ui/status/location.js:362 msgid "Grant Access" msgstr "پذیرفتن دسترسی" #: js/ui/status/network.js:62 msgid "" msgstr "<ناشناخته>" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:354 #, javascript-format msgid "Disconnect %s" msgstr "قطع شدن از %s" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:356 #, javascript-format msgid "Connect to %s" msgstr "وصل شدن به %s" #: js/ui/status/network.js:1050 msgid "Secure" msgstr "امن" #: js/ui/status/network.js:1050 msgid "Not secure" msgstr "ناامن" #: js/ui/status/network.js:1051 #, javascript-format msgid "Signal strength %s%%" msgstr "قدرت سیگنال %s٪" #. translators: The first placeholder is the network name, the second and indication whether it is secure, and the last the signal strength indication #: js/ui/status/network.js:1053 #, javascript-format msgid "%s, %s, %s" msgstr "%s، %s، %s" #. Translators: %s is a network identifier #: js/ui/status/network.js:1155 #, javascript-format msgid "%s Hotspot" msgstr "نقطهٔ داغ %s" #: js/ui/status/network.js:1426 #, javascript-format msgid "%d connected" msgid_plural "%d connected" msgstr[0] "%Id وصل‌شده" msgstr[1] "%Id وصل‌شده" #: js/ui/status/network.js:1524 js/ui/status/network.js:1540 msgid "VPN" msgstr "وی‌پی‌ان" #: js/ui/status/network.js:1525 msgid "VPN Settings" msgstr "تنظیمات وی‌پی‌ان" #: js/ui/status/network.js:1785 msgid "Wi–Fi" msgstr "وای‌فای" #: js/ui/status/network.js:1787 msgid "All Networks" msgstr "تمامی شبکه‌ها" #: js/ui/status/network.js:1884 msgid "Wired Connections" msgstr "اتّصال‌های سیمی" #: js/ui/status/network.js:1885 msgid "Wired Settings" msgstr "تنظیمات اتّصال سیمی" #: js/ui/status/network.js:1899 msgid "Bluetooth Tethers" msgstr "چتر‌های بلوتوثی" #. Translators: "Tether" from "Bluetooth Tether" #: js/ui/status/network.js:1906 msgid "Tether" msgstr "چتر" #: js/ui/status/network.js:1919 msgid "Mobile Connections" msgstr "اتّصال‌های همراه" #: js/ui/status/network.js:1921 msgid "Mobile Broadband Settings" msgstr "تنظیمات پهن‌باند همراه" #. Translators: "Mobile" from "Mobile Broadband" #: js/ui/status/network.js:1930 msgid "Mobile" msgstr "تلفن همراه" #: js/ui/status/network.js:1964 msgid "Sign Into Wi–Fi Network" msgstr "ورود به شبکه‌های وای‌فای" #: js/ui/status/network.js:2151 msgid "Connection failed" msgstr "اتّصال شکست خورد" #: js/ui/status/network.js:2152 msgid "Activation of network connection failed" msgstr "فعّال‌سازی اتّصال شبکه شکست خورد" #: js/ui/status/nightLight.js:19 msgid "Night Light" msgstr "نور شب" #: js/ui/status/powerProfiles.js:19 msgctxt "Power profile" msgid "Performance" msgstr "کارایی" #: js/ui/status/powerProfiles.js:24 msgctxt "Power profile" msgid "Balanced" msgstr "تعادل" #: js/ui/status/powerProfiles.js:29 msgctxt "Power profile" msgid "Power Saver" msgstr "ذخیرهٔ نیرو" #: js/ui/status/powerProfiles.js:39 js/ui/status/powerProfiles.js:69 msgid "Power Mode" msgstr "حالت نیرو" #: js/ui/status/powerProfiles.js:71 msgid "Power Settings" msgstr "تنظیمات انرژی" #: js/ui/status/remoteAccess.js:74 msgid "Stop Screencast" msgstr "توقّف ضبط صفحه" #: js/ui/status/remoteAccess.js:144 msgid "Stop Screen Sharing" msgstr "توقّف هم‌رسانی صفحه" #: js/ui/status/rfkill.js:99 msgid "Airplane Mode" msgstr "حالت هواپیمایی" #: js/ui/status/system.js:168 msgid "Power Off Menu" msgstr "فهرست خاموشی" #: js/ui/status/system.js:176 msgid "Suspend" msgstr "تعلیق" #: js/ui/status/system.js:181 msgid "Restart…" msgstr "راه‌اندازی دوباره…" #: js/ui/status/system.js:186 msgid "Power Off…" msgstr "خاموش کردن…" #: js/ui/status/system.js:193 #: subprojects/extensions-app/data/ui/extensions-window.ui:124 msgid "Log Out…" msgstr "خروج…" #: js/ui/status/system.js:198 msgid "Switch User…" msgstr "تعویض کاربر…" #: js/ui/status/system.js:242 msgctxt "action" msgid "Lock Screen" msgstr "قفل صفحه" #: js/ui/status/thunderbolt.js:308 msgid "Unknown Thunderbolt device" msgstr "افزارهٔ تاندربولت ناشناخته" #: js/ui/status/thunderbolt.js:309 msgid "" "New device has been detected while you were away. Please disconnect and reconnect " "the device to start using it." msgstr "" "هنگام نبودنتان، افزارهٔ جدید شناسایی شد. لطفاً برای شروع به استفاده از آن، قطعش کرده " "و دوباره وصل کنید." #: js/ui/status/thunderbolt.js:312 msgid "Unauthorized Thunderbolt device" msgstr "افزارهٔ تاندربولت تأییدنشده" #: js/ui/status/thunderbolt.js:313 msgid "New device has been detected and needs to be authorized by an administrator" msgstr "افزارهٔ جدیدی شناسایی شده و نیازه به تأیید هویت به دست یک مدیر دارد" #: js/ui/status/thunderbolt.js:319 msgid "Thunderbolt authorization error" msgstr "خطای تأیید هویت تاندربولت" #: js/ui/status/thunderbolt.js:320 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "نمی‌توان افزارهٔ تاندربولت را تأیید هویت کرد: %s" #: js/ui/status/volume.js:218 msgid "Volume changed" msgstr "حجم صدا تغییر کرد" #: js/ui/status/volume.js:231 msgid "Unmute" msgstr "باصدا" #: js/ui/status/volume.js:231 msgid "Mute" msgstr "بی‌صدا" #: js/ui/status/volume.js:286 msgid "Volume" msgstr "حجم صدا" #: js/ui/status/volume.js:302 msgid "Sound Output" msgstr "خروجی صدا" #: js/ui/status/volume.js:374 msgid "Sound Input" msgstr "ورودی صدا" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:20 msgid "Mirror" msgstr "آینه" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:29 msgid "Join Displays" msgstr "پیوند نمایشگرها" #. Translators: this is for using only external displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:39 msgid "External Only" msgstr "فقط خارجی" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:47 msgid "Built-in Only" msgstr "فقط داخلی" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:378 msgid "%A %B %-d" msgstr "%A %-Od %OB" #: js/ui/unlockDialog.js:384 msgid "Swipe up to unlock" msgstr "برای قفل‌گشایی، بالا بکشید" #: js/ui/unlockDialog.js:385 msgid "Click or press a key to unlock" msgstr "برای قفل‌گشایی، کلیک کرده یا دکمه‌ای را بزنید" #: js/ui/unlockDialog.js:568 msgid "Unlock Window" msgstr "گشودن قفل پنجره" #: js/ui/unlockDialog.js:577 msgid "Log in as another user" msgstr "ورود به عنوان کاربری دیگر" #: js/ui/welcomeDialog.js:47 #, javascript-format msgid "GNOME %s" msgstr "گنوم %s" #: js/ui/welcomeDialog.js:51 #, javascript-format msgid "Welcome to %s" msgstr "به %s خوش آمدید" #: js/ui/welcomeDialog.js:52 msgid "If you want to learn your way around, check out the tour" msgstr "دیدن گشت برای آموختن راهتان در اطراف" #: js/ui/welcomeDialog.js:61 msgid "Skip" msgstr "پرش" #: js/ui/welcomeDialog.js:66 msgid "Take Tour" msgstr "گردش کردن" #: js/ui/windowAttentionHandler.js:18 #, javascript-format msgid "“%s” is ready" msgstr "«%s» آماده است" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:68 msgid "Keep these display settings?" msgstr "تنظیمات نمایشگر نگه‌داشته شود؟" #: js/ui/windowManager.js:78 msgid "Revert Settings" msgstr "بازنشانی تنظیمات" #: js/ui/windowManager.js:83 msgid "Keep Changes" msgstr "نگه‌داری تغییرات" #: js/ui/windowManager.js:103 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "تغییرات تنظیمات در %Id ثانیه بازنشانی می‌شود" msgstr[1] "تغییرات تنظیمات در %Id ثانیه بازنشانی می‌شود" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:500 #, javascript-format msgid "%d × %d" msgstr "%Id × %Id" #: js/ui/windowMenu.js:40 msgid "Hide" msgstr "نهفتن" #: js/ui/windowMenu.js:47 msgid "Restore" msgstr "بازآوری" #: js/ui/windowMenu.js:51 msgid "Maximize" msgstr "بیشینه کردن" #: js/ui/windowMenu.js:58 msgid "Move" msgstr "جابه‌جایی" #: js/ui/windowMenu.js:78 msgid "Resize" msgstr "تغییر اندازه" #: js/ui/windowMenu.js:98 msgid "Always on Top" msgstr "همیشه در بالا" #: js/ui/windowMenu.js:117 msgid "Always on Visible Workspace" msgstr "همیشه روی فضای کاری قابل دیدن" #: js/ui/windowMenu.js:131 msgid "Move to Workspace Left" msgstr "انتقال به فضای کاری چپ" #: js/ui/windowMenu.js:137 msgid "Move to Workspace Right" msgstr "انتقال به فضای کاری راست" #: js/ui/windowMenu.js:143 msgid "Move to Workspace Up" msgstr "انتقال به فضای کاری بالا" #: js/ui/windowMenu.js:149 msgid "Move to Workspace Down" msgstr "انتقال به فضای کاری پایین" #: js/ui/windowMenu.js:167 msgid "Move to Monitor Up" msgstr "انتقال به نمایشگر بالا" #: js/ui/windowMenu.js:176 msgid "Move to Monitor Down" msgstr "انتقال به نمایشگر پایین" #: js/ui/windowMenu.js:185 msgid "Move to Monitor Left" msgstr "انتقال به نمایشگر چپ" #: js/ui/windowMenu.js:194 msgid "Move to Monitor Right" msgstr "انتقال به نمایشگر راست" #: js/ui/windowMenu.js:202 msgid "Close" msgstr "بستن" #: src/main.c:529 subprojects/extensions-tool/src/main.c:336 msgid "Print version" msgstr "چاپ نگارش" #: src/main.c:535 msgid "Mode used by GDM for login screen" msgstr "حالت استفاده شده توسط GDM برای صفحهٔ ورود" #: src/main.c:541 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "استفاده از یک حالت مشخص، مثلاً «gdm» برای صفحهٔ ورود" #: src/main.c:547 msgid "List possible modes" msgstr "فهرست کردن حالت‌های ممکن" #: src/main.c:553 msgid "Force animations to be enabled" msgstr "اجبار به کار افتادن پویانمایی‌ها" #: src/shell-app.c:252 msgctxt "program" msgid "Unknown" msgstr "ناشناس" #: src/shell-app.c:503 #, c-format msgid "Failed to launch “%s”" msgstr "راه‌اندازی «%s» شکست خورد" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match" msgstr "گذرواژه‌ها مطابق نیستند" #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "گذرواژه نمی‌تواند خالی باشد" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "محاوره تأیید هویت از طرف کاربر رد شد" #: src/st/st-icon-theme.c:1865 #, c-format msgid "Icon '%s' not present in theme %s" msgstr "نقشک «%s» در زمینهٔ %s موجود نیست" #: src/st/st-icon-theme.c:3454 src/st/st-icon-theme.c:3757 msgid "Failed to load icon" msgstr "شکست در بار کردن نقشک" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 msgid "Manage your GNOME Extensions" msgstr "مدیریت افزونه‌های پوستهٔ گنوم" #. developer_name tag deprecated with Appstream 1.0 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:19 msgid "The GNOME Project" msgstr "پروژهٔ گنوم" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:51 msgid "" "GNOME Extensions handles updating extensions, configuring extension preferences and " "removing or disabling unwanted extensions." msgstr "" "افزونه‌های گنوم؛ به‌روز رسانی، پیکربندی، برداشتن یا از کار انداختن افزونه‌ها را مدیریت " "می‌کند." #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:64 msgid "Main Window" msgstr "پنجرهٔ اصلی" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:68 msgid "Available Updates" msgstr "به‌روز رسانی‌های موجود" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:72 msgid "Search View" msgstr "نمای جست‌وجو" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "پیکربندی افزونه‌های پوستهٔ گنوم" #: subprojects/extensions-app/js/extensionManager.js:237 #, javascript-format msgid "" "The installed version of this extension (%s) is incompatible with the current " "version of GNOME (%s). The extension has been disabled." msgstr "" "نگارش نصب شدهٔ این افزونه (%s) با نگارش کنونی گنوم (%s) ناسازگار است. افزونه از کار " "افتاد." #: subprojects/extensions-app/js/extensionManager.js:238 #, javascript-format msgid "" "The installed version of this extension is incompatible with the current version of " "GNOME (%s). The extension has been disabled." msgstr "" "نگارش نصب شدهٔ این افزونه با نگارش کنونی گنوم (%s) ناسازگار است. افزونه از کار افتاد." #: subprojects/extensions-app/js/extensionManager.js:242 msgid "" "An error has occurred in this extension. This could cause issues elsewhere in the " "system. It is recommended to turn the extension off until the error is resolved." msgstr "" "خطایی در این افزونه رخ داد. این خطا می‌توانست موحب مشکلاتی در جاهای دیگر سامانه شود. " "توصیه می‌شود تا رفع خطا، افزونه را خاموش کنید." #. translators: Details for an extension error #: subprojects/extensions-app/js/extensionManager.js:248 msgid "Error details:" msgstr "جزییات خطا:" #: subprojects/extensions-app/js/extensionRow.js:82 #, javascript-format msgid "Version %s" msgstr "نگارش %s" #: subprojects/extensions-app/js/extensionsWindow.js:113 #, javascript-format msgid "Remove “%s”?" msgstr "برداشتن «%s»؟" #: subprojects/extensions-app/js/extensionsWindow.js:114 msgid "" "If you remove the extension, you need to return to download it if you want to " "enable it again" msgstr "اگر افزونه را بردارید، باید برای به کار انداختن دوباره‌اش، بارگیریش کنید" #: subprojects/extensions-app/js/extensionsWindow.js:117 msgid "_Cancel" msgstr "_لغو" #: subprojects/extensions-app/js/extensionsWindow.js:118 msgid "_Remove" msgstr "_برداشتن" #: subprojects/extensions-app/js/extensionsWindow.js:158 msgid "translator-credits" msgstr "" "دانیال بهزادی \n" "سید اسحاق مقیم شهیدانی " #: subprojects/extensions-app/js/extensionsWindow.js:203 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "تعداد %Id افزونه در ورود بعدی به‌روز خواهد شد." msgstr[1] "تعداد %Id افزونه در ورود بعدی به‌روز خواهند شد." #: subprojects/extensions-app/data/ui/extension-row.ui:22 msgid "Error Details" msgstr "جزییات خطا" #: subprojects/extensions-app/data/ui/extension-row.ui:62 msgid "Updates Details" msgstr "جزییات به‌روز رسانی‌ها" #: subprojects/extensions-app/data/ui/extension-row.ui:72 msgid "A new version of this extension is ready and will be loaded on next login." msgstr "نگارشی جدید از این افزونه آماده است و در ورود بعدی بار خواهد شد." #: subprojects/extensions-app/data/ui/extension-row.ui:104 msgid "Extension Details" msgstr "جزییات افزونه" #: subprojects/extensions-app/data/ui/extension-row.ui:192 msgid "_Website" msgstr "_پایگاه وب" #: subprojects/extensions-app/data/ui/extension-row.ui:219 msgid "_Settings" msgstr "_تنظیمات" #: subprojects/extensions-app/data/ui/extension-row.ui:246 msgid "_Remove…" msgstr "_برداشتن…" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Keyboard Shortcuts" msgstr "میان‌برهای صفحه‌کلید" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "دربارهٔ افزونه‌ها" #: subprojects/extensions-app/data/ui/extensions-window.ui:64 msgid "Main Menu" msgstr "فهرست اصلی" #: subprojects/extensions-app/data/ui/extensions-window.ui:106 msgid "Search extensions" msgstr "جست‌وجوی افزونه‌ها" #: subprojects/extensions-app/data/ui/extensions-window.ui:134 msgid "_Extensions" msgstr "_افزونه‌ها" #: subprojects/extensions-app/data/ui/extensions-window.ui:139 msgid "More Information" msgstr "اطّلاعات بیش‌تر" #: subprojects/extensions-app/data/ui/extensions-window.ui:151 msgid "" "Extensions can cause performance and stability issues. It is recommended to disable " "all extensions if you experience problems with your system." msgstr "" "افزونه‌ها می‌توانند مشکلات پایداری و کارایی ایجاد کنند. توصیه می‌شود اگر مشکلاتی با " "سامانه‌تان یافتید، همهٔ افزونه‌ها را از کار بیندازید." #: subprojects/extensions-app/data/ui/extensions-window.ui:178 msgid "User Extensions" msgstr "افزونه‌های کاربر" #: subprojects/extensions-app/data/ui/extensions-window.ui:198 msgid "System Extensions" msgstr "افزونه‌های سامانه" #: subprojects/extensions-app/data/ui/extensions-window.ui:233 msgid "Search Results" msgstr "نتایج جست‌وجو" #: subprojects/extensions-app/data/ui/extensions-window.ui:252 msgid "No Results Found" msgstr "هیچ نتیجه‌ای پیدا نشد" #: subprojects/extensions-app/data/ui/extensions-window.ui:253 msgid "Try a different search" msgstr "آزمودن جست‌وجویی متفاوت" #: subprojects/extensions-app/data/ui/extensions-window.ui:264 msgid "No Installed Extensions" msgstr "هیچ افزونه‌ای نصب نشده" #: subprojects/extensions-app/data/ui/extensions-window.ui:265 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" "برای یافتن و افزودن افزونه‌ها، پایگاه " "افزونه‌های گنوم را ببینید." #: subprojects/extensions-app/data/ui/extensions-window.ui:276 msgid "" "We’re very sorry, but it was not possible to get the list of installed extensions. " "Make sure you are logged into GNOME and try again." msgstr "" "متأسفیم، ولی امکان گرفتن فهرست افزونه‌های نصب‌شده نبود. مطمئن شوید که به گنوم وارد " "شده‌اید و دوباره تلاش کنید." #: subprojects/extensions-app/data/ui/help-overlay.ui:9 msgctxt "shortcut window" msgid "General" msgstr "عمومی" #: subprojects/extensions-app/data/ui/help-overlay.ui:12 msgctxt "shortcut window" msgid "Open Menu" msgstr "گشودن فهرست" #: subprojects/extensions-app/data/ui/help-overlay.ui:18 msgctxt "shortcut window" msgid "Toggle Search" msgstr "تغییر وضعیت جست‌وجو" #: subprojects/extensions-app/data/ui/help-overlay.ui:24 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "نمایش میان‌برها" #: subprojects/extensions-app/data/ui/help-overlay.ui:30 msgctxt "shortcut window" msgid "Quit" msgstr "خروج" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:284 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "افزونهٔ جدید با موفقبت در %s ایجاد شد.\n" #: subprojects/extensions-tool/src/command-create.c:376 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" "نام باید رشته‌ای بسیار کوتاه و توصیفی باشد.\n" "مانند: %s" #: subprojects/extensions-tool/src/command-create.c:382 #: subprojects/extensions-tool/src/main.c:243 msgid "Name" msgstr "نام" #: subprojects/extensions-tool/src/command-create.c:396 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" "شرح تک‌جمله‌ای است که توضیح می‌دهد افزونه‌تان چه می‌کند.\n" "مانند: %s" #: subprojects/extensions-tool/src/command-create.c:402 #: subprojects/extensions-tool/src/main.c:246 msgid "Description" msgstr "شرح" #: subprojects/extensions-tool/src/command-create.c:416 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe.example." "com)\n" msgstr "" "شناسهٔ یکتا، شناسهٔ بی‌تکراری برای افزونه‌تان است.\n" "این شناسه باید در قالب یک نشانی رایانامه باشد (clicktofocus@janedoe.example.com)\n" #: subprojects/extensions-tool/src/command-create.c:443 msgid "Choose one of the available templates:\n" msgstr "گزینش یکی از الگوهای موجود:\n" #: subprojects/extensions-tool/src/command-create.c:457 msgid "Template" msgstr "الگو" #: subprojects/extensions-tool/src/command-create.c:515 msgid "The unique identifier of the new extension" msgstr "شناسهٔ یکتای افزونهٔ جدید" #: subprojects/extensions-tool/src/command-create.c:518 msgid "NAME" msgstr "NAME" #: subprojects/extensions-tool/src/command-create.c:519 msgid "The user-visible name of the new extension" msgstr "نام قابل مشاهده توسّط کاربر برای افزونهٔ جدید" #: subprojects/extensions-tool/src/command-create.c:521 msgid "DESCRIPTION" msgstr "DESCRIPTION" #: subprojects/extensions-tool/src/command-create.c:523 msgid "A short description of what the extension does" msgstr "شرح کوتاهی از کارکرد افزونه" #: subprojects/extensions-tool/src/command-create.c:525 #: subprojects/extensions-tool/src/command-pack.c:455 msgid "DOMAIN" msgstr "DOMAIN" #: subprojects/extensions-tool/src/command-create.c:527 msgid "The gettext domain used by the extension" msgstr "دامنهٔ gettext استفاده شده به دست افزونه" #: subprojects/extensions-tool/src/command-create.c:529 #: subprojects/extensions-tool/src/command-pack.c:448 msgid "SCHEMA" msgstr "SCHEMA" #: subprojects/extensions-tool/src/command-create.c:531 msgid "The GSettings schema used by the extension" msgstr "طرحوارهٔ GSettings استفاده شده به دست افزونه" #: subprojects/extensions-tool/src/command-create.c:534 msgid "TEMPLATE" msgstr "TEMPLATE" #: subprojects/extensions-tool/src/command-create.c:535 msgid "The template to use for the new extension" msgstr "الگوی استفاده شده برای افزونهٔ جدید" #: subprojects/extensions-tool/src/command-create.c:538 msgid "Include prefs.js template" msgstr "شامل قالب prefs.js" #: subprojects/extensions-tool/src/command-create.c:544 msgid "Enter extension information interactively" msgstr "اطّلاعات افزونه را به صورت تعاملی وارد کنید" #: subprojects/extensions-tool/src/command-create.c:552 msgid "Create a new extension" msgstr "ایجاد افزونه‌ای جدید" #: subprojects/extensions-tool/src/command-create.c:570 #: subprojects/extensions-tool/src/command-list.c:190 msgid "Unknown arguments" msgstr "آرگومان ناشناخته" #: subprojects/extensions-tool/src/command-create.c:595 msgid "UUID, name and description are required" msgstr "شناسهٔ یکتا، نام و شرح مورد نیازند" #: subprojects/extensions-tool/src/command-disable.c:62 #: subprojects/extensions-tool/src/command-enable.c:62 #, c-format msgid "Extension “%s” does not exist\n" msgstr "افزونهٔ «%s» وجود ندارد\n" #: subprojects/extensions-tool/src/command-disable.c:98 msgid "Disable an extension" msgstr "از کار انداختن یک افزونه" #: subprojects/extensions-tool/src/command-disable.c:116 #: subprojects/extensions-tool/src/command-enable.c:116 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "هیچ شناسهٔ یکتایی داده نشده" #: subprojects/extensions-tool/src/command-disable.c:121 #: subprojects/extensions-tool/src/command-enable.c:121 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "بیش از یک شناسهٔ یکتا داده شده" #: subprojects/extensions-tool/src/command-enable.c:98 msgid "Enable an extension" msgstr "به کار انداختن یک افزونه" #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:66 #: subprojects/extensions-tool/src/main.c:150 msgid "Failed to connect to GNOME Shell\n" msgstr "شکست در وصل شدن به پوستهٔ گنوم\n" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:159 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "افزونهٔ «%s» وجود ندارد\n" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "نمایش اطّلاعات افزونه" #: subprojects/extensions-tool/src/command-install.c:190 msgid "Overwrite an existing extension" msgstr "بازنویسی روی افزونهٔ موجود" #: subprojects/extensions-tool/src/command-install.c:192 msgid "EXTENSION_BUNDLE" msgstr "EXTENSION_BUNDLE" #: subprojects/extensions-tool/src/command-install.c:201 msgid "Install an extension bundle" msgstr "نصب یک دستهٔ افزونه" #: subprojects/extensions-tool/src/command-install.c:219 msgid "No extension bundle specified" msgstr "هیچ دستهٔ افزونه‌ای مشخّص نشده است" #: subprojects/extensions-tool/src/command-install.c:225 msgid "More than one extension bundle specified" msgstr "بیش از یک دسته افزونه مشخّص شده است" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show user-installed extensions" msgstr "نمایش افزونه‌های نصب شده توسّط کاربر" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show system-installed extensions" msgstr "نمایش افزونه‌های نصب شده توسّط سامانه" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Show enabled extensions" msgstr "نمایش افزونه‌های به کار افتاده" #: subprojects/extensions-tool/src/command-list.c:149 msgid "Show disabled extensions" msgstr "نمایش افزونه‌های از کار افتاده" #: subprojects/extensions-tool/src/command-list.c:152 msgid "Show extensions in active state" msgstr "نمایش افزونه‌های فعّال" #: subprojects/extensions-tool/src/command-list.c:155 msgid "Show extensions in inactive state" msgstr "نمایش افزونه‌های غیرفعّال" #: subprojects/extensions-tool/src/command-list.c:158 msgid "Show extensions with preferences" msgstr "نمایش افزونه‌های با ترجیحات" #: subprojects/extensions-tool/src/command-list.c:161 msgid "Show extensions with updates" msgstr "نمایش افزونه‌های با به‌روز رسانی" #: subprojects/extensions-tool/src/command-list.c:164 msgid "Print extension details" msgstr "چاپ جزییات افزونه" #: subprojects/extensions-tool/src/command-list.c:172 msgid "List installed extensions" msgstr "فهرست افزونه‌های نصب‌شده" #: subprojects/extensions-tool/src/command-pack.c:444 msgid "FILE" msgstr "FILE" #: subprojects/extensions-tool/src/command-pack.c:445 msgid "Additional source to include in the bundle" msgstr "منبع اضافی برای قرار گرفتن در دسته" #: subprojects/extensions-tool/src/command-pack.c:449 msgid "A GSettings schema that should be included" msgstr "یک شمای Gsettings که باید شامل شود" #: subprojects/extensions-tool/src/command-pack.c:451 #: subprojects/extensions-tool/src/command-pack.c:462 msgid "DIRECTORY" msgstr "DIRECTORY" #: subprojects/extensions-tool/src/command-pack.c:453 msgid "The directory where translations are found" msgstr "شاخه‌ای که ترجمه‌ها پیدا می‌شوند" #: subprojects/extensions-tool/src/command-pack.c:457 msgid "The gettext domain to use for translations" msgstr "دامنهٔ gettext برای استفاده توسّط ترجمه‌ها" #: subprojects/extensions-tool/src/command-pack.c:460 msgid "Overwrite an existing pack" msgstr "بازنویسی روی یک بستهٔ موجود" #: subprojects/extensions-tool/src/command-pack.c:464 msgid "The directory where the pack should be created" msgstr "شاخه‌ای که بسته باید ایجاد شود" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "SOURCE_DIRECTORY" msgstr "SOURCE_DIRECTORY" #: subprojects/extensions-tool/src/command-pack.c:475 msgid "Create an extension bundle" msgstr "ایجاد یک دستهٔ افزونه" #: subprojects/extensions-tool/src/command-pack.c:495 msgid "More than one source directory specified" msgstr "بیش از یک شاخهٔ منبع مشخّص شده است" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "افزونهٔ «%s» ترجیحات ندارد\n" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "شکست در گشودن ترجیحات برای افزونهٔ «%s»: %s\n" #: subprojects/extensions-tool/src/command-prefs.c:87 msgid "Opens extension preferences" msgstr "ترجیحات افزونه را می‌گشاید" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "بازنشانی یک افزونه" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "نمی‌توان افزونه‌های سامانه‌ای را حذف نصب کرد\n" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "شکست در حذف نصب «%s»\n" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "حذف نصب یک افزونه" #: subprojects/extensions-tool/src/main.c:76 msgid "Do not print error messages" msgstr "چاپ نکردن پیام‌های خطا" #: subprojects/extensions-tool/src/main.c:249 msgid "Path" msgstr "مسیر" #: subprojects/extensions-tool/src/main.c:252 msgid "URL" msgstr "نشانی" #: subprojects/extensions-tool/src/main.c:255 msgid "Original author" msgstr "نگارندهٔ اصلی" #: subprojects/extensions-tool/src/main.c:261 #: subprojects/extensions-tool/src/main.c:263 #: subprojects/extensions-tool/src/main.c:265 msgid "Version" msgstr "نگارش" #: subprojects/extensions-tool/src/main.c:268 msgid "Enabled" msgstr "به کار افتاده" #: subprojects/extensions-tool/src/main.c:268 msgid "Yes" msgstr "بله" #: subprojects/extensions-tool/src/main.c:268 msgid "No" msgstr "نه" #: subprojects/extensions-tool/src/main.c:271 msgid "State" msgstr "وضعیت" #: subprojects/extensions-tool/src/main.c:309 msgid "“version” takes no arguments" msgstr "«version» آرگومانی نمی‌گیرد" #: subprojects/extensions-tool/src/main.c:311 #: subprojects/extensions-tool/src/main.c:331 msgid "Usage:" msgstr "استفاده:" #: subprojects/extensions-tool/src/main.c:314 msgid "Print version information and exit." msgstr "چاپ اطّلاعات نگارش و خروج." #: subprojects/extensions-tool/src/main.c:329 #: subprojects/extensions-tool/src/main.c:332 msgid "COMMAND" msgstr "COMMAND" #: subprojects/extensions-tool/src/main.c:332 msgid "[ARGS…]" msgstr "[ARGS…]" #: subprojects/extensions-tool/src/main.c:334 msgid "Commands:" msgstr "دستورات:" #: subprojects/extensions-tool/src/main.c:335 msgid "Print help" msgstr "چاپ راهنما" #: subprojects/extensions-tool/src/main.c:337 msgid "Enable extension" msgstr "به کار انداختن افزونه" #: subprojects/extensions-tool/src/main.c:338 msgid "Disable extension" msgstr "از کار انداختن افزونه" #: subprojects/extensions-tool/src/main.c:339 msgid "Reset extension" msgstr "بازنشانی افزونه" #: subprojects/extensions-tool/src/main.c:340 msgid "Uninstall extension" msgstr "حذف نصب افزونه" #: subprojects/extensions-tool/src/main.c:341 msgid "List extensions" msgstr "فهرست افزونه‌ها" #: subprojects/extensions-tool/src/main.c:342 #: subprojects/extensions-tool/src/main.c:343 msgid "Show extension info" msgstr "نمایش اطّلاعات افزونه" #: subprojects/extensions-tool/src/main.c:344 msgid "Open extension preferences" msgstr "گشودن ترجیحات افزونه" #: subprojects/extensions-tool/src/main.c:345 msgid "Create extension" msgstr "ایجاد افزونه" #: subprojects/extensions-tool/src/main.c:346 msgid "Package extension" msgstr "بسته‌بندی افزونه" #: subprojects/extensions-tool/src/main.c:347 msgid "Install extension bundle" msgstr "نصب دستهٔ افزونه" #: subprojects/extensions-tool/src/main.c:349 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "برای گرفتن راهنمای با جزییات از «%s» استفاده کنید.\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "خام" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "افزونه‌ای خالی" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "نشانگر" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "افزودن نقشکی به نوار بالا" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:4 msgid "Quick Settings Item" msgstr "مورد تنظیمات سریع" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:5 msgid "Add an item to quick settings" msgstr "افزودن موردی به تنظیمات سریع" #. translators: #. * The device has been disabled #: subprojects/gvc/gvc-mixer-control.c:1872 msgid "Disabled" msgstr "از کار افتاده" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1879 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%Iu خروجی" msgstr[1] "%Iu خروجی" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1889 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%Iu ورودی" msgstr[1] "%Iu ورودی" #: subprojects/gvc/gvc-mixer-control.c:2872 msgid "System Sounds" msgstr "صداهای سامانه" #~ msgid "Move Titlebar Onscreen" #~ msgstr "جابه‌جایی نوار عنوان روی صفحه" #~ msgid "Stop conflicting session dialog closed" #~ msgstr "گفت‌وگوی توقّف نشست متداخل بسته شد" #, javascript-format #~ msgid "Try to login again to start a session for user %s." #~ msgstr "آزمودن ورود دوباره برای آغاز نشست کاربر %s." # در این رشته از نویسه RLM استفاده شده است #, javascript-format #~ msgid "%s is now known as %s" #~ msgstr "‏%s با عنوان %s شناخته می‌شود" #~ msgid "Network Manager" #~ msgstr "مدیر شبکه" #~ msgid "System Information" #~ msgstr "اطّلاعات سامانه" #~ msgid "Thunderbolt" #~ msgstr "تاندربولت" #~ msgid "Disabling" #~ msgstr "از کار انداختن" #~ msgid "Enabling" #~ msgstr "به کار انداختن" # در این ترجمه از نویسه‌های ایزوله چپ‌به‌راست استفاده شده است #, javascript-format #~ msgid "%d %%" #~ msgstr "⁦%Id٪⁩" #~ msgid "No Thanks" #~ msgstr "نه، ممنون" #~ msgid "No Matches" #~ msgstr "بدون مطابقت" #~ msgid "The extension had an error" #~ msgstr "افزونه خطایی داشت" #~ msgid "The extension can be updated" #~ msgstr "افزونه می‌تواند به‌روز شود" #~ msgid "Help" #~ msgstr "راهنما" #~ msgid "Manually Installed" #~ msgstr "نصب‌شده به صورت دستی" #~ msgid "Built-In" #~ msgstr "توکار" #~ msgid "Extension Updates Ready" #~ msgstr "به‌روز رسانی‌های افزونه آماده‌اند" #~ msgid "Screenshot / Screencast" #~ msgstr "نماگرفت / ضبط صفحه" #~ msgid "Power Profiles" #~ msgstr "نمایه‌های نیرو" #~ msgid "Evolution Calendar" #~ msgstr "تقویم اوولوشن" #~ msgid "Attach modal dialog to the parent window" #~ msgstr "چسباندن محاورهٔ مقید به پنجره والد" #~ msgid "This key overrides the key in org.gnome.mutter when running GNOME Shell." #~ msgstr "این کلید، کلید org.gnome.mutter را در زمان اجرای گنوم‌شل بازنویسی می‌کند." #~ msgid "Enable edge tiling when dropping windows on screen edges" #~ msgstr "به کار انداختن کاشی‌کاری گوشته‌ها هنگام رها کردن پنجره‌ها در گوشه‌های صفحه" #~ msgid "Workspaces are managed dynamically" #~ msgstr "فضاهای کاری به‌صورت پویا مدیریت می‌شوند" #~ msgid "Workspaces only on primary monitor" #~ msgstr "فضاهای کاری تنها در صفحه‌نمایش اصلی" #~ msgid "Delay focus changes in mouse mode until the pointer stops moving" #~ msgstr "" #~ "به تأخیر انداختن تغییر تمرکز در حالت موشی تا زمانی که نشانگر از حرکت باز ایستد" #~ msgid "Region & Language Settings" #~ msgstr "تنظیمات ناحیه و زبان" #~ msgid "Applications" #~ msgstr "برنامه‌ها" #, javascript-format #~ msgid "Unable to start %s" #~ msgstr "نمی‌توان %s را آغاز کرد" #, javascript-format #~ msgid "Couldn’t find the %s application" #~ msgstr "نمی‌توان برنامهٔ %s را یافت" #~ msgid "Whether the default Bluetooth adapter had set up devices associated to it" #~ msgstr "اینکه آداپتور بلوتوث پیش‌گزیده دستگاه‌هایی متّصل به خود دارد یا خیر" #~ msgid "" #~ "The shell will only show a Bluetooth menu item if a Bluetooth adapter is " #~ "powered, or if there were devices set up associated with the default adapter. " #~ "This will be reset if the default adapter is ever seen not to have devices " #~ "associated to it." #~ msgstr "" #~ "پوسته تنها زمانی فهرست بلوتوث را نمایش می‌دهد که آداپتور بلوتوث روشن باشد، یا " #~ "دستگاه‌هایی به گونه‌ای تنظیم شده باشند که به آداپتور پیش‌گزیده متّصل شوند." #~ msgid "Log Out" #~ msgstr "خروج" #~ msgid "Connect to Internet" #~ msgstr "وصل شدن به اینترنت" #~ msgid "Airplane Mode is On" #~ msgstr "حالت هواپیمایی روشن است" #~ msgid "Wi-Fi is disabled when airplane mode is on." #~ msgstr "در زمان روشن بودن حالت هواپیمایی، وای‌فای از کار می‌افتد." #~ msgid "Turn Off Airplane Mode" #~ msgstr "خاموش کردن حالت هواپیمایی" #~ msgid "Wi-Fi is Off" #~ msgstr "وای‌فای خاموش است" #~ msgid "Wi-Fi needs to be turned on in order to connect to a network." #~ msgstr "برای وصل شدن به شبکه باید وای‌فای روشن شود." #~ msgid "Turn On Wi-Fi" #~ msgstr "روشن کردن وای‌فای" #~ msgid "Select a network" #~ msgstr "شبکه‌ای برگزینید" #~ msgid "Use hardware switch to turn off" #~ msgstr "برای خاموش کردن از کلید سخت‌افزاری استفاده کنید" #~ msgid "Select Network" #~ msgstr "گزینش شبکه" #~ msgid "Wi-Fi Settings" #~ msgstr "تنظیمات وای‌فای" #~ msgid "VPN Off" #~ msgstr "وی‌پی‌ان خاموش است" #~ msgid "Network Settings" #~ msgstr "تنظیمات شبکه" #, javascript-format #~ msgid "%s Wi-Fi Connection" #~ msgid_plural "%s Wi-Fi Connections" #~ msgstr[0] "اتّصال وای‌فای %s" #~ msgstr[1] "اتّصال وای‌فای %s" #, javascript-format #~ msgid "%s Bluetooth Connection" #~ msgid_plural "%s Bluetooth Connections" #~ msgstr[0] "اتّصال بلوتوثی %s" #~ msgstr[1] "اتّصال‌های بلوتوثی %s" #, javascript-format #~ msgid "%s Off" #~ msgstr "%s خاموش است" #, javascript-format #~ msgid "%s Unmanaged" #~ msgstr "%s مدیریت نشده" #, javascript-format #~ msgid "%s Connecting" #~ msgstr "درحال اتّصال %s" #, javascript-format #~ msgid "%s Requires Authentication" #~ msgstr "%s نیاز به تأیید هویت دارد" #, javascript-format #~ msgid "Firmware Missing For %s" #~ msgstr "میان‌افزار برای %s موجود نیست" #, javascript-format #~ msgid "%s Unavailable" #~ msgstr "%s در دسترس نیست" #, javascript-format #~ msgid "%s Connection Failed" #~ msgstr "اتّصال %s شکست خورد" #, javascript-format #~ msgid "%s Hardware Disabled" #~ msgstr "سخت‌افزار %s از کار افتاده" #, javascript-format #~ msgid "%s Disabled" #~ msgstr "%s از کار افتاده" #, javascript-format #~ msgid "%s Not Connected" #~ msgstr "%s متّصل نشد" #~ msgid "unknown" #~ msgstr "ناشناخته" #~ msgid "connecting…" #~ msgstr "درحال اتّصال…" #~ msgid "authentication required" #~ msgstr "تأیید هویت لازم است" #~ msgid "connection failed" #~ msgstr "اتّصال شکست خورد" #~ msgid "Lock" #~ msgstr "قفل کردن" #~ msgid "Power Off / Log Out" #~ msgstr "خاموش کردن / خروج" #~ msgid "Bluetooth On" #~ msgstr "بلوتوث روشن" #~ msgid "Bluetooth Off" #~ msgstr "بلوتوث خاموش" #~ msgid "Location In Use" #~ msgstr "مکان درحال استفاده است" #~ msgid "Location Disabled" #~ msgstr "مکان از کار افتاده" #~ msgid "Night Light Disabled" #~ msgstr "نور شب از کار افتاده است" #~ msgid "Resume" #~ msgstr "از سرگیری" #~ msgid "Disable Until Tomorrow" #~ msgstr "از کار انداختن تا فردا" #~ msgid "Fully Charged" #~ msgstr "کاملاً شارژ شده" #~ msgid "Not Charging" #~ msgstr "درحال شارژ نیست" #~ msgid "Estimating…" #~ msgstr "درحال برآورد…" # در این رشته از نویسه‌های ایزوله چپ‌به‌راست استفاده شده است # پدینگ برداشته شده. زیرا با صفر انگلیسی پر می‌شد #, javascript-format #~ msgid "%d∶%02d Remaining (%d %%)" #~ msgstr "⁦%Id∶%Id⁩ باقی‌مانده (⁦%Id٪⁩)" # در این رشته از نویسه‌های ایزوله چپ‌به‌راست استفاده شده است # پدینگ برداشته شده. زیرا با صفر انگلیسی پر می‌شد #, javascript-format #~ msgid "%d∶%02d Until Full (%d %%)" #~ msgstr "⁦%Id∶%Id⁩ تا شارژ کامل (⁦%Id٪⁩)" #~ msgid "Screen is Being Shared" #~ msgstr "صفحه هم‌رسانی می‌شود" #~ msgid "Turn off" #~ msgstr "خاموش کردن" #~ msgid "Remove from Favorites" #~ msgstr "برداشتن از مورد علاقه‌ها" #~ msgid "Add to Favorites" #~ msgstr "افزودن به مورد علاقه‌ها" #~ msgid "Author" #~ msgstr "نگارنده" #~ msgid "Warning" #~ msgstr "هشدار" #~ msgid "" #~ "Extensions can cause system issues, including performance problems. If you " #~ "encounter problems with your system, it is recommended to disable all extensions." #~ msgstr "" #~ "افزونه‌ها می‌توانند موجب اشکال‌های سامانه‌ای مانند مشکلات اجرایی شوند. اگر با " #~ "مشکلاتی روی سامانه‌تان مواجه شدید، پیشنهاد می‌شود تمام افزونه‌ها را از کار بندازید." #~ msgid "Failed to connect to GNOME Shell" #~ msgstr "شکست در وصل شدن به پوستهٔ گنوم" #~ msgid "Enable introspection API" #~ msgstr "به کار انداختن رابط برنامه‌نویسی درون‌نگر" #~ msgid "" #~ "Enables a D-Bus API that allows to introspect the application state of the shell." #~ msgstr "" #~ "رابط برنامه‌‌نویسی دی‌باسی را به کار می‌اندازد که اجازهٔ درون‌نگری وضعیت برنامهٔ پوسته " #~ "را می‌دهد." #~ msgid "Minimize" #~ msgstr "کمینه کردن" #~ msgid "Unmaximize" #~ msgstr "نابیشینه کردن" #~ msgid "App Picker View" #~ msgstr "نمای گزینش برنامه" #~ msgid "Index of the currently selected view in the application picker." #~ msgstr "اندیس نمای گزیده در گزینشگر برنامه." #~ msgid "Frequently used applications will appear here" #~ msgstr "برنامه‌های بیشتر استفاده شده در اینجا نمایش داده می‌شود" #~ msgid "Frequent" #~ msgstr "پُر استفاده" #~ msgid "All" #~ msgstr "همه" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d" #~ msgstr "%A %-Od %OB" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d, %Y" #~ msgstr "%A %-Od %OB %Y" #~ msgid "On" #~ msgstr "روشن" #~ msgid "Copy Error" #~ msgstr "رونوشت از خطا" #~ msgid "Username…" #~ msgstr "نام‌کاربری…" #~ msgid "Password: " #~ msgstr "گذرواژه: " #~ msgid "Enter Password…" #~ msgstr "ورود گذرواژه…" #~ msgid "Next" #~ msgstr "بعدی" #~ msgctxt "button" #~ msgid "Sign In" #~ msgstr "ورود" #~ msgid "%A, %B %d" #~ msgstr "%A، %Od %B" #~ msgid "%d new message" #~ msgid_plural "%d new messages" #~ msgstr[0] "%Id پیام جدید" #~ msgstr[1] "%Id پیام جدید" #~ msgid "Browse in Software" #~ msgstr "مرور در نرم‌افزارها" #~ msgid "Rename" #~ msgstr "تغییر نام" #~ msgid "Type again:" #~ msgstr "تلاش دوباره:" #~ msgid "Authentication required by wireless network" #~ msgstr "تایید هویت برای شبکه بی‌سیم لازم است" #~ msgid "Mobile broadband network password" #~ msgstr "گذرواژه شبکه پهن‌باند تلفن همراه" #~ msgid "Account Settings" #~ msgstr "تنظیمات حساب" #~ msgid "Orientation Lock" #~ msgstr "قفل جهت" #~ msgid "" #~ "Keybinding that pauses and resumes all running tweens, for debugging purposes" #~ msgstr "" #~ "کلیدهای مقید برای مکث کردن و اجرا کردن تمام دوغلوهای در حال اجرا، برای مصارف رفع " #~ "اشکال" #~ msgid "Which keyboard to use" #~ msgstr "استفاده از کدام صفحه‌کلید" #~ msgid "The type of keyboard to use." #~ msgstr "نوع صفحه‌کلید برای استفاده." #~ msgid "network-workgroup" #~ msgstr "network-workgroup" #~ msgid "There was an error loading the preferences dialog for %s:" #~ msgstr "خطایی هنگام باز کردن محاوره‌ی ترجیحات برای %s رُخ داد:" #~ msgctxt "search-result" #~ msgid "Log out" #~ msgstr "خروج" #~ msgctxt "search-result" #~ msgid "Switch user" #~ msgstr "تعویض کاربر" #~ msgid "%s all day." #~ msgstr "کل روز %s." #~ msgid "%s, then %s later." #~ msgstr "%s سپس %s بعد." #~ msgid "%s, then %s, followed by %s later." #~ msgstr "%s، بعد %s، در ادامه %s بعد." #~ msgid "Feels like %s." #~ msgstr "حسی شبیه به %s." #~ msgid "toggle-switch-us" #~ msgstr "toggle-switch-intl" #~ msgid "Web Authentication Redirect" #~ msgstr "تغییر مسیر برای تایید هویت وب" #~ msgid "Events" #~ msgstr "رویدادها" #~ msgid "Hide tray" #~ msgstr "مخفی‌کردن سینی" #~ msgid "Status Icons" #~ msgstr "شمایل‌های وضعیت" #~ msgid "Media" #~ msgstr "رسانه" #~ msgid "%d x %d" #~ msgstr "%Id x %Id" #~ msgid "Show the week date in the calendar" #~ msgstr "نمایش هفته در تقویم" #~ msgid "If true, display the ISO week date in the calendar." #~ msgstr "در صورت تنظیم بر روی «درست»، تاریخ هفتگی ایزو را در تقویم نشان می‌دهد." #~ msgid "Use as Internet connection" #~ msgstr "استفاده به عنوان اتصال اینترنت" #~ msgid "GNOME Shell (wayland compositor)" #~ msgstr "گنوم‌شل (چینشگر wayland)" #~ msgid "Show the message tray" #~ msgstr "نمایش سینی پیام" #~ msgid "Captive Portal" #~ msgstr "پرتال درگیر" #~ msgctxt "event list time" #~ msgid "%H∶%M" #~ msgstr "%OH∶%OM" #~ msgctxt "event list time" #~ msgid "%l∶%M %p" #~ msgstr "%Ol∶%OM %p" #~ msgctxt "list sunday" #~ msgid "Su" #~ msgstr "۱ش" #~ msgctxt "list monday" #~ msgid "M" #~ msgstr "۲ش" #~ msgctxt "list tuesday" #~ msgid "T" #~ msgstr "۳ش" #~ msgctxt "list wednesday" #~ msgid "W" #~ msgstr "۴ش" #~ msgctxt "list thursday" #~ msgid "Th" #~ msgstr "۵ش" #~ msgctxt "list friday" #~ msgid "F" #~ msgstr "ج" #~ msgctxt "list saturday" #~ msgid "S" #~ msgstr "ش" #~ msgid "Nothing Scheduled" #~ msgstr "بدون برنامه‌ریزی" #~ msgid "This week" #~ msgstr "این هفته" #~ msgid "Next week" #~ msgstr "هفته آینده" #~ msgid "Removable Devices" #~ msgstr "دستگاه‌های جدا شدنی" #~ msgid "Eject" #~ msgstr "بیرون دادن" #~ msgid "Invitation" #~ msgstr "دعوتنامه" #~ msgid "Call" #~ msgstr "تماس" #~ msgid "File Transfer" #~ msgstr "انتقال پرونده" #~ msgid "Chat" #~ msgstr "گپ" #~ msgid "Invitation to %s" #~ msgstr "دعوتنامه به %s" #~ msgid "%s is inviting you to join %s" #~ msgstr "‏%s از شما دعوت می‌کند که به %s بپیوندید" #~ msgid "Decline" #~ msgstr "رد کردن" #~ msgid "Accept" #~ msgstr "پذیرفتن" #~ msgid "Video call from %s" #~ msgstr "تماس ویدئویی از طریق %s" #~ msgid "Call from %s" #~ msgstr "تماس از طرف %s" #~ msgid "Answer" #~ msgstr "پاسخگویی" #~ msgid "%s is sending you %s" #~ msgstr "‏%s در حال ارسال %s به شما است" #~ msgid "%s would like permission to see when you are online" #~ msgstr "‏%s اجازه دسترسی برای دیدن زمان‌هایی که شما برخط هستید را دارد" #~ msgid "Authentication failed" #~ msgstr "تایید هویت شکست خورد" #~ msgid "Encryption error" #~ msgstr "خطا رمزنگاری" #~ msgid "Certificate not provided" #~ msgstr "گواهینامه ارائه نشده" #~ msgid "Certificate untrusted" #~ msgstr "گواهینامه نامعتبر است" #~ msgid "Certificate expired" #~ msgstr "گواهینامه منقضی شده" #~ msgid "Certificate not activated" #~ msgstr "گواهینامه فعال نشده" #~ msgid "Certificate hostname mismatch" #~ msgstr "نام کارگزار گواهینامه نامنطبق است" #~ msgid "Certificate fingerprint mismatch" #~ msgstr "اثرانگشت گواهینامه نامنطبق است" #~ msgid "Certificate self-signed" #~ msgstr "گواهینامه خود-امضا شده" #~ msgid "Status is set to offline" #~ msgstr "وضعیت بر روی برون خط تنظیم شده" #~ msgid "Certificate is invalid" #~ msgstr "گواهینامه نامعتبر است" #~ msgid "Connection has been refused" #~ msgstr "اتصال رد شده است" #~ msgid "Connection can't be established" #~ msgstr "اتصال نمی‌تواند برقرار شود" #~ msgid "Connection has been lost" #~ msgstr "اتصال از دست رفته است" #~ msgid "This account is already connected to the server" #~ msgstr "این حساب قبلا به کارگزار متصل شده است" #~ msgid "Connection has been replaced by a new connection using the same resource" #~ msgstr "اتصال توسط یک اتصال جدید که از منبع مشابه استفاده می‌کند، جایگزین شده است" #~ msgid "The account already exists on the server" #~ msgstr "حساب از قبل بر روی کارگزار وجود دارد" #~ msgid "Server is currently too busy to handle the connection" #~ msgstr "کارگزار در حال حاضر برای دست گرفتن اتصال بسیار مشغول است" #~ msgid "Certificate has been revoked" #~ msgstr "گواهینامه لغو شده است" #~ msgid "Certificate uses an insecure cipher algorithm or is cryptographically weak" #~ msgstr "" #~ "گواهینامه از الگوریتم رمزی نامطمئنی استفاده می‌کند یا از نظر cryptography ضعیف است" #~ msgid "" #~ "The length of the server certificate, or the depth of the server certificate " #~ "chain, exceed the limits imposed by the cryptography library" #~ msgstr "" #~ "اندازه گواهینامه کارگزار، یا عمق حلقه‌ی گواهینامه کارگزار، از محدودیت اعمال شده " #~ "توسط کتابخانه cryptography تجاوز کرد" #~ msgid "Internal error" #~ msgstr "خطای داخلی" #~ msgid "View account" #~ msgstr "نمایش حساب" #~ msgid "Date & Time Settings" #~ msgstr "تنظیمات تاریخ و ساعت" #~ msgid "Open" #~ msgstr "بازکردن" #~ msgid "Clear Messages" #~ msgstr "پاک کردن پیام‌ها" #~ msgid "Notification Settings" #~ msgstr "تنظیمات اعلان‌ها" #~ msgid "No Messages" #~ msgstr "پیامی وجود ندارد" #~ msgid "Message Tray" #~ msgstr "سینی پیام" #~ msgid "%d Connected Device" #~ msgid_plural "%d Connected Devices" #~ msgstr[0] "%Id دستگاه متصل شد" #~ msgstr[1] "%Id دستگاه متصل شد" #~ msgid "UPS" #~ msgstr "UPS" #~ msgid "Battery" #~ msgstr "باتری" #~ msgid "List of categories that should be displayed as folders" #~ msgstr "فهرست دسته‌هایی که باید به شکل پوشه نمایش داده شوند" #~ msgid "" #~ "Each category name in this list will be represented as folder in the application " #~ "view, rather than being displayed inline in the main view." #~ msgstr "" #~ "هر نام دسته در این فهرست، بجای اینکه پشت سر هم در نمای اصلی نمایش داده شود، " #~ "به‌عنوان پوشه در نمای برنامه‌ها نشان داده می‌شود." #~ msgid "Arrangement of buttons on the titlebar" #~ msgstr "چیدمان دکمه‌ها در نوار عنوان" #~ msgid "" #~ "This key overrides the key in org.gnome.desktop.wm.preferences when running " #~ "GNOME Shell." #~ msgstr "" #~ "این کلید، کلید org.gnome.desktop.wm.preferences را در زمان اجرای گنوم‌شل بازنویسی " #~ "می‌کند." #~ msgid "Select an extension to configure using the combobox above." #~ msgstr "با استفاده از جعبه‌ی بالا یک افزونه برای پیکربندی انتخاب کنید." #~ msgid "calendar:MY" #~ msgstr "تقویم:من" #~ msgid "%A, %H:%M" #~ msgstr "%A، %OH:%OM" #~ msgid "%B %d, %H:%M" #~ msgstr "%B %Od، %OH:%OM" #~ msgid "%B %d %Y, %H:%M " #~ msgstr "%B %Od %y, %OH:%OM " #~ msgid "Authorization request from %s" #~ msgstr "درخواست تایید هویت از %s" #~ msgid "Device %s wants to pair with this computer" #~ msgstr "دستگاه %s می‌خواهد با این رایانه جفت شود" #~ msgid "Device %s wants access to the service '%s'" #~ msgstr "دستگاه %s می‌خواهد به سرویس «%s» دسترسی داشته باشد" #~ msgid "Grant this time only" #~ msgstr "موافقت تنها در همین زمان" #~ msgid "Reject" #~ msgstr "رد کردن" #~ msgid "Pairing confirmation for %s" #~ msgstr "تایید جهت جفت‌شدن با %s" #~ msgid "Please confirm whether the Passkey '%06d' matches the one on the device." #~ msgstr "" #~ "لطفا تایید کنید که آیا کلید عبور مربوط به «%I06d» با همتای آن در دستگاه مطابقت " #~ "دارد یا خیر." #~ msgid "Does not match" #~ msgstr "منطبق نیست" #~ msgid "Pairing request for %s" #~ msgstr "درخواست جفت‌شدن برای %s" #~ msgid "Please enter the PIN mentioned on the device." #~ msgstr "لطفا PIN ذکر شده در دستگاه را وارد کنید." #~ msgid "OK" #~ msgstr "تایید" #~ msgid "unavailable" #~ msgstr "خارج از دسترس" #~ msgid "" #~ "Sorry, no wisdom for you today:\n" #~ "%s" #~ msgstr "" #~ "شرمنده، هیچ تعبیری امروز برای شما وجود ندارد:\n" #~ "%s" #~ msgid "%s the Oracle says" #~ msgstr "‏%s پیشگو می‌گوید" #~ msgid "Whether to collect stats about applications usage" #~ msgstr "اینکه اطلاعات برنامه‌ها درباره‌ی میزان استفاده از منابع جمع‌آوری شود یا خیر" #~ msgid "" #~ "The shell normally monitors active applications in order to present the most " #~ "used ones (e.g. in launchers). While this data will be kept private, you may " #~ "want to disable this for privacy reasons. Please note that doing so won't remove " #~ "already saved data." #~ msgstr "" #~ "پوسته گنوم در حالت عادی برنامه‌های فعال را جهت ارائه برنامه‌های بیشتر استفاده شده " #~ "پایش می کند. (برای مثال در اجرا کننده‌ها). با اینکه که این اطلاعات به صورت خصوصی " #~ "نگاه‌داری می‌شود، ممکن است شما بخواهید این امکان را به دلایل امنیتی غیرفعال کنید. " #~ "لطفا توجه کنید این کار باعث پاک شدن اطلاعاتی که تاکنون ذخیره شده‌اند نمی‌شود." #~ msgid "" #~ "Internally used to store the last IM presence explicitly set by the user. The " #~ "value here is from the TpConnectionPresenceType enumeration." #~ msgstr "" #~ "به‌طور داخلی جهت ذخیره‌ی آخرین وضعیتِ حاضرِ ثبت شده‌ی توسط کاربر استفاده می‌شود. مقدار " #~ "اینجا از محل محاسبه‌ی TpConnectionPresenceType است." #~ msgid "" #~ "Internally used to store the last session presence status for the user. The " #~ "value here is from the GsmPresenceStatus enumeration." #~ msgstr "" #~ "به‌طور داخلی برای ذخیره آخرین نشستی که کاربر در آن وضعیت حاضر داشته است استفاده " #~ "می‌شود. مقدار اینجا از محاسبه GsmPresenceStatus است." #~ msgid "Keybinding to toggle the screen recorder" #~ msgstr "کلید مقید برای تغییر وضعیت ضبط کننده‌ی صفحه" #~ msgid "Keybinding to start/stop the builtin screen recorder." #~ msgstr "کلید مقید برای شروع/توقف ضبط کننده‌ی صفحه پیش ساخته." #~ msgid "Framerate used for recording screencasts." #~ msgstr "سرعت فریم استفاده شده در تصویربرداری از صفحه‌نمایش." #~ msgid "" #~ "The framerate of the resulting screencast recordered by GNOME Shell's screencast " #~ "recorder in frames-per-second." #~ msgstr "" #~ "سرعت فریم حاصل از تصویربرداری از صفحه نمایش با استفاده از ضبط کننده نمایشگر " #~ "پوسته‌ی گنوم بر اساس فریم بر ثانیه" #~ msgid "The gstreamer pipeline used to encode the screencast" #~ msgstr "مجرای ارتباطی gstreamer برای کدگذاری تصویربرداری از صفحه نمایش" #~ msgid "" #~ "Sets the GStreamer pipeline used to encode recordings. It follows the syntax " #~ "used for gst-launch. The pipeline should have an unconnected sink pad where the " #~ "recorded video is recorded. It will normally have a unconnected source pad; " #~ "output from that pad will be written into the output file. However the pipeline " #~ "can also take care of its own output - this might be used to send the output to " #~ "an icecast server via shout2send or similar. When unset or set to an empty " #~ "value, the default pipeline will be used. This is currently 'vp8enc " #~ "min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! " #~ "queue ! webmmux' and records to WEBM using the VP8 codec. %T is used as a " #~ "placeholder for a guess at the optimal thread count on the system." #~ msgstr "" #~ "Sets the GStreamer pipeline used to encode recordings. It follows the syntax " #~ "used for gst-launch. The pipeline should have an unconnected sink pad where the " #~ "recorded video is recorded. It will normally have a unconnected source pad; " #~ "output from that pad will be written into the output file. However the pipeline " #~ "can also take care of its own output - this might be used to send the output to " #~ "an icecast server via shout2send or similar. When unset or set to an empty " #~ "value, the default pipeline will be used. This is currently 'vp8enc " #~ "min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! " #~ "queue ! webmmux' and records to WEBM using the VP8 codec. %T is used as a " #~ "placeholder for a guess at the optimal thread count on the system." #~ msgid "File extension used for storing the screencast" #~ msgstr "پسوند پرونده‌ی قابل استفاده برای ذخیره تصویربرداری از صفحه‌نمایش" #~ msgid "" #~ "The filename for recorded screencasts will be a unique filename based on the " #~ "current date, and use this extension. It should be changed when recording to a " #~ "different container format." #~ msgstr "" #~ "نام پرونده‌ی ضبط شده برای تصویربرداری از صفحه‌نمایش یکتا و براساس تاریخ جاری خواهد " #~ "بود و از این افزونه استفاده خواهد کرد. اگر در زمان ضبط از قالب دیگری استفاده " #~ "کنید باید تغییر کند." #~| msgid "Session..." #~ msgid "Session…" #~ msgstr "نشست..." #~ msgid "Power" #~ msgstr "انرژی" #~ msgctxt "event list time" #~ msgid "%H\\u2236%M" #~ msgstr "%OH\\u2236%OM" #~ msgctxt "event list time" #~ msgid "%l\\u2236%M\\u2009%p" #~ msgstr "%Ol\\u2236%OM\\u2009%p" #~ msgid "Click Log Out to quit these applications and log out of the system." #~ msgstr "" #~ "بر روی خروج از سیستم کلیک کنید تا از این برنامه‌ها خارج و از سیستم خارج شوید." #~ msgid "Logging out of the system." #~ msgstr "درحال خروج از سیستم." #~ msgid "Click Power Off to quit these applications and power off the system." #~ msgstr "بر روی خاموش کردن کلیک کنید تا از این برنامه‌ها خارج و سیستم خاموش شود." #~ msgid "Powering off the system." #~ msgstr "درحال خاموش کردن سیستم." #~ msgid "Click Restart to quit these applications and restart the system." #~ msgstr "" #~ "بر روی راه‌اندازی مجدد کلیک کنید تا از این برنامه‌ها خارج و سیستم مجددا راه‌اندازی " #~ "گردد." #~ msgid "Restarting the system." #~ msgstr "درحال راه‌اندازی مجدد سیستم." #~ msgid "Universal Access Settings" #~ msgstr "تنظیمات دسترسی جامع" #~ msgid "Visibility" #~ msgstr "قابلیت دیدن" #~| msgid "Set up a New Device..." #~ msgid "Set Up a New Device…" #~ msgstr "برپاسازی یک دستگاه جدید..." #~| msgid "Send Files..." #~ msgid "Send Files…" #~ msgstr "ارسال پرونده‌ها..." #~ msgid "Mouse Settings" #~ msgstr "تنظیمات موشی" #~ msgid "Volume, network, battery" #~ msgstr "جلد، شبکه، باتری" #~ msgid "disabled" #~ msgstr "از کار افتاد" #~ msgid "cable unplugged" #~ msgstr "کابل قطع شد" #~ msgid "More…" #~ msgstr "بیشتر..." #~ msgid "Wired" #~ msgstr "سیمی" #~ msgid "Auto Ethernet" #~ msgstr "اترنت خودکار" #~ msgid "Auto broadband" #~ msgstr "پهن‌باند خودکار" #~ msgid "Auto dial-up" #~ msgstr "دایال‌آپ خودکار" #~ msgid "Auto %s" #~ msgstr "اتصال بیسیم %s خودکار" #~ msgid "Auto bluetooth" #~ msgstr "بلوتوث خودکار" #~ msgid "Auto wireless" #~ msgstr "بیسیم خودکار" #~ msgid "Wi-Fi" #~ msgstr "وای-فای" #~ msgid "%d %s %d %s remaining" #~ msgstr "%Id %s %Id %s باقی‌مانده" #~ msgid "hour" #~ msgid_plural "hours" #~ msgstr[0] "ساعت" #~ msgstr[1] "ساعت" #~ msgid "minute" #~ msgid_plural "minutes" #~ msgstr[0] "%Id دقیقه‌" #~ msgstr[1] "%Id دقیقه‌" #~| msgid "AC adapter" #~ msgid "AC Adapter" #~ msgstr "آداپتور برق مستقیم" #~| msgid "Laptop battery" #~ msgid "Laptop Battery" #~ msgstr "باتری لپ‌تاپ" #~ msgid "Monitor" #~ msgstr "صفحه نمایش" #~ msgid "Mouse" #~ msgstr "موشی" #~ msgid "PDA" #~ msgstr "دستیار دیجیتال شخصی" #~| msgid "Cell phone" #~ msgid "Cell Phone" #~ msgstr "تلفن سلولی" #~| msgid "Media player" #~ msgid "Media Player" #~ msgstr "پخش‌کننده‌ی رسانه" #~ msgid "Tablet" #~ msgstr "لوح‌رایانه" #~ msgid "Computer" #~ msgstr "رایانه" #~ msgctxt "device" #~ msgid "Unknown" #~ msgstr "ناشناس" #~ msgid "Busy" #~ msgstr "مشغول" #~ msgid "Invisible" #~ msgstr "نامرئی" #~ msgid "Away" #~ msgstr "غائب" #~ msgid "Idle" #~ msgstr "بی‌کار" #~ msgid "Your chat status will be set to busy" #~ msgstr "وضعیت گپ شما «مشغول» تنظیم می‌شود" #~ msgid "" #~ "Notifications are now disabled, including chat messages. Your online status has " #~ "been adjusted to let others know that you might not see their messages." #~ msgstr "" #~ "هم‌اکنون اعلان‌ها، از جمله پیام‌های گپ، غیرفعال هستند. وضعیتِ برخطِ شما به گونه‌ای " #~ "تنظیم شده است که به دیگران نشان دهد ممکن است شما پیام‌هایشان را نبینید." #~ msgid "Shutting down might cause them to lose unsaved work." #~ msgstr "خاموش‌کردن ممکن است باعث شود که کارهای ذخیره نشده خود را از دست بدهند." #~ msgctxt "title" #~ msgid "Sign In" #~ msgstr "ورود" #~ msgid "APPLICATIONS" #~ msgstr "برنامه‌ها" #~ msgid "SETTINGS" #~ msgstr "تنظیمات" #~ msgctxt "event list time" #~ msgid "%H:%M" #~ msgstr "%OH:%OM" #~ msgctxt "event list time" #~ msgid "%l:%M %p" #~ msgstr "%OI:%OM" #~ msgid "Subscription request" #~ msgstr "درخواست اشتراک" #~ msgid "Sent at %X on %A" #~ msgstr "ارسال در %OH:%OM در %A" #~ msgid "Sent on %A, %B %d, %Y" #~ msgstr "ارسال در %A, %B %d, %Y" #~ msgid "Connection to %s failed" #~ msgstr "اتصال به %s شکست خورد" #~ msgid "Reconnect" #~ msgstr "اتصال مجدد" #~ msgid "tray" #~ msgstr "سینی" #~ msgid "Browse Files..." #~ msgstr "مرور پرونده‌ها..." #~ msgid "Error browsing device" #~ msgstr "خطا در مرور دستگاه" #~ msgid "The requested device cannot be browsed, error is '%s'" #~ msgstr "دستگاه درخواست شده قابلیت مرور ندارد، خطا: «%s»" #~ msgid "More..." #~ msgstr "بیشتر..." #~ msgid "Wireless" #~ msgstr "بیسیم" #~ msgid "VPN Connections" #~ msgstr "اتصال‌های وی‌پی‌ان" #~ msgid "System Settings" #~ msgstr "تنظیمات سیستم" #~ msgid "Your favorite Easter Egg" #~ msgstr "تخم‌مرغ شانسی مورد علاقه شما" #~ msgid "United Kingdom" #~ msgstr "بریتانیا" #~ msgid "Default" #~ msgstr "پیش‌فرض" #~ msgid "disabled OpenSearch providers" #~ msgstr "غیرفعال کردنِ تامین‌کننده‌گان OpenSearch" #~ msgid "Failed to unmount '%s'" #~ msgstr "عدم توانایی در پیاده کردن «%s»" #~ msgid "Retry" #~ msgstr "سعی مجدد" #~ msgid "PLACES & DEVICES" #~ msgstr "محل‌ها و ابزارها" #~ msgid "%1$s: %2$s" #~ msgstr "%1$s: %2$s" #~ msgid "Passphrase" #~ msgstr "عبارت‌عبور" #~ msgid "Show time with seconds" #~ msgstr "نمایش ساعت همراه با ثانیه" #~ msgid "If true, display seconds in time." #~ msgstr "در صورت تنظیم بر روی «درست»، ثانیه‌ها را در ساعت نشان می‌دهد." #~ msgid "Show date in clock" #~ msgstr "نمایش تاریخ در ساعت" #~ msgid "If true, display date in the clock, in addition to time." #~ msgstr "اگر روی «درست» تنظیم شود، تاریخ را در کنار ساعت نشان می‌دهد." #~ msgid "CONTACTS" #~ msgstr "CONTACTS" #~ msgid "%a %b %e, %R:%S" #~ msgstr "%a %Od %b %OH:%OM:%OS" #~ msgid "%a %b %e, %R" #~ msgstr "%a %Od %b %OH:%OM" #~ msgid "%a %R:%S" #~ msgstr "%a %OH:%OM:%OS" #~ msgid "%a %R" #~ msgstr "%a %OH:%OM" #~ msgid "%a %b %e, %l:%M:%S %p" #~ msgstr "%a Od% %b %OH:%OM:%OS" #~ msgid "%a %l:%M:%S %p" #~ msgstr "%a %OH:%OM:%OS" #~ msgid "%s is online." #~ msgstr "‏%s بر خط است." #~ msgid "%s is offline." #~ msgstr "‏%s برون خط است." #~ msgid "%s is away." #~ msgstr "‏%s غایب است." #~ msgid "%s is busy." #~ msgstr "‏%s مشغول است." #~ msgid "Hidden" #~ msgstr "نامرئی" #~ msgid "Power Off..." #~ msgstr "خاموش کردن..." #~ msgid "Online Accounts" #~ msgstr "حساب‌های برخط" #~ msgid "Log Out..." #~ msgstr "خروج از سیستم..." #~ msgid "RECENT ITEMS" #~ msgstr "موارد اخیر" #~ msgid "Show password" #~ msgstr "نمایش گذرواژه" #~ msgid "If true, display onscreen keyboard." #~ msgstr "در صورت تنظیم بر روی «درست»، صفحه‌کلید مجازی نمایش داده می‌شود." #~ msgid "%s has finished starting" #~ msgstr "راه‌اندازی %s پایان یافته است" 0707010000022F000081A40000000000000000000000016712993F0001F7CE000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/fi.po# gnome-shell Finnish translation # Copyright (C) 2009-2011 Timo Jyrinki # This file is distributed under the same license as the gnome-shell package. # # IMPORTANT NOTICE! # # Some date / time strings are currently non-optimal. The optimal CLDR # compliant versions are included as comments in the respective strings. # # CLDR: http://kotoistus.fi/suositukset/vahv_kalenterit_cldr1_4.htm # # They should be taken into use as soon as the related bugs are fixed: # https://bugzilla.gnome.org/show_bug.cgi?id=647320 # https://bugzilla.gnome.org/show_bug.cgi?id=648678 # # Gnome 2012-03 Finnish translation sprint participants: # Helsingforce # Niklas Laxström # Timo Jyrinki , 2009-2011. # Marko Myllynen , 2011. # Ville-Pekka Vainio , 2011. # Jiri Grönroos , 2012, 2013, 2014, 2015, 2016, 2017. # msgid "" msgstr "" "Project-Id-Version: gnome-shell\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues/\n" "POT-Creation-Date: 2024-08-06 15:18+0000\n" "PO-Revision-Date: 2024-08-24 16:12+0300\n" "Last-Translator: Jiri Grönroos \n" "Language-Team: suomi \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: Poedit 3.4.4\n" "X-DamnedLies-Scope: partial\n" "X-Project-Style: gnome\n" "X-POT-Import-Date: 2012-03-05 15:06:10+0000\n" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "Käynnistimet" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate pinned app 1" msgstr "Aktivoi kiinnitetty sovellus 1" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate pinned app 2" msgstr "Aktivoi kiinnitetty sovellus 2" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate pinned app 3" msgstr "Aktivoi kiinnitetty sovellus 3" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate pinned app 4" msgstr "Aktivoi kiinnitetty sovellus 4" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate pinned app 5" msgstr "Aktivoi kiinnitetty sovellus 5" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate pinned app 6" msgstr "Aktivoi kiinnitetty sovellus 6" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate pinned app 7" msgstr "Aktivoi kiinnitetty sovellus 7" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate pinned app 8" msgstr "Aktivoi kiinnitetty sovellus 8" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate pinned app 9" msgstr "Aktivoi kiinnitetty sovellus 9" #: data/50-gnome-shell-launchers.xml:46 msgid "Open new window of pinned app 1" msgstr "Avaa uusi ikkuna kiinnitetystä sovelluksesta 1" #: data/50-gnome-shell-launchers.xml:50 msgid "Open new window of pinned app 2" msgstr "Avaa uusi ikkuna kiinnitetystä sovelluksesta 2" #: data/50-gnome-shell-launchers.xml:54 msgid "Open new window of pinned app 3" msgstr "Avaa uusi ikkuna kiinnitetystä sovelluksesta 3" #: data/50-gnome-shell-launchers.xml:58 msgid "Open new window of pinned app 4" msgstr "Avaa uusi ikkuna kiinnitetystä sovelluksesta 4" #: data/50-gnome-shell-launchers.xml:62 msgid "Open new window of pinned app 5" msgstr "Avaa uusi ikkuna kiinnitetystä sovelluksesta 5" #: data/50-gnome-shell-launchers.xml:66 msgid "Open new window of pinned app 6" msgstr "Avaa uusi ikkuna kiinnitetystä sovelluksesta 6" #: data/50-gnome-shell-launchers.xml:70 msgid "Open new window of pinned app 7" msgstr "Avaa uusi ikkuna kiinnitetystä sovelluksesta 7" #: data/50-gnome-shell-launchers.xml:74 msgid "Open new window of pinned app 8" msgstr "Avaa uusi ikkuna kiinnitetystä sovelluksesta 8" #: data/50-gnome-shell-launchers.xml:78 msgid "Open new window of pinned app 9" msgstr "Avaa uusi ikkuna kiinnitetystä sovelluksesta 9" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2274 msgid "Screenshots" msgstr "Kuvakaappaukset" #: data/50-gnome-shell-screenshots.xml:9 #: data/org.gnome.shell.gschema.xml.in:287 msgid "Take a screenshot interactively" msgstr "Ota kuvakaappaus vuorovaikutteisesti" #: data/50-gnome-shell-screenshots.xml:12 #: data/org.gnome.shell.gschema.xml.in:299 msgid "Take a screenshot" msgstr "Ota kuvakaappaus" #: data/50-gnome-shell-screenshots.xml:15 #: data/org.gnome.shell.gschema.xml.in:295 msgid "Take a screenshot of a window" msgstr "Ota kuvakaappaus ikkunasta" #: data/50-gnome-shell-screenshots.xml:18 #: data/org.gnome.shell.gschema.xml.in:291 msgid "Record a screencast interactively" msgstr "Nauhoita näyttötallennevideo vuorovaikutteisesti" #: data/50-gnome-shell-system.xml:6 js/ui/messageTray.js:1298 msgid "System" msgstr "Järjestelmä" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "Näytä ilmoitusluettelo" #: data/50-gnome-shell-system.xml:12 msgid "Open the quick settings menu" msgstr "Avaa pika-asetusten valikko" #: data/50-gnome-shell-system.xml:15 msgid "Focus the active notification" msgstr "Kohdista aktiiviseen ilmoitukseen" #: data/50-gnome-shell-system.xml:18 msgid "Show the overview" msgstr "Näytä yleisnäkymä" #: data/50-gnome-shell-system.xml:21 msgid "Show all apps" msgstr "Näytä kaikki sovellukset" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "Gnome Shell" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "Ikkunanhallinta ja sovelluksien käynnistäminen" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" "Ota käyttöön sisäiset kehittäjiä ja testaajia hyödyttävät työkalut Alt-F2:sta" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Salli pääsy sisäiseen vianselvitys- ja monitorointityökaluun Alt-F2-ikkunan " "kautta." #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "Käyttöön otettavien laajennusten UUID:t" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "GNOMEn ikkunanhallinnan laajennuksilla on uuid-tunnisteominaisuus, ja tämä " "avain luettelee laajennukset, jotka ladataan. Niiden laajennosten, jotka " "halutaan ladata, on oltava tässä luettelossa. Tätä luetteloa voi muokata " "myös org.gnome.Shell-DBus-metodeilla EnableExtension ja DisableExtension." #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "Käytöstä pakotetusti estettyjen laajennusten UUID:t" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" "GNOMEn ikkunanhallinnan laajennuksilla on uuid-tunnisteominaisuus, ja tämä " "avain luettelee laajennukset, joiden ei pitäisi olla käytössä, vaikka ne " "ladattaisiin osana nykyistä tilaa. Tätä luetteloa voi muokata myös org.gnome." "Shell-DBus-metodeilla EnableExtension ja DisableExtension. Tämä avain on " "etusijalla liitännäisten käyttöönoton asetukseen nähden." #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "Poista käytöstä käyttäjälaajennukset" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" "Poista käytöstä kaikki käyttäjän käyttöönottamat laajennukset vaikuttamatta " "“enabled-extension”-asetukseen." #: data/org.gnome.shell.gschema.xml.in:45 msgid "Allow extension installation" msgstr "Salli laajennuksen asennus" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "Allow users to install extensions in their home folder. If disabled, the " "InstallRemoteExtension D-Bus method will fail, and extensions are only " "loaded from system directories on startup. It does not affect extensions " "that are already loaded, so a change only takes full effect on the next " "login." msgstr "" #: data/org.gnome.shell.gschema.xml.in:56 msgid "Disables the validation of extension version compatibility" msgstr "Poistaa käytöstä laajennusten versioyhteensopivuuden tarkistuksen" #: data/org.gnome.shell.gschema.xml.in:57 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "Gnome Shell lataa vain ne laajennukset, jotka väittävät tukevan käytössä " "olevaa Shell-versiota. Tämä valinta poistaa tarkistuksen käytöstä ja yrittää " "ladata kaikki laajennukset siitä huolimatta, mitä versiota laajennukset " "väittävät tukevansa." #: data/org.gnome.shell.gschema.xml.in:65 msgid "List of desktop file IDs for favorite applications" msgstr "Luettelo työpöytätiedostojen tunnisteista lempisovelluksille" #: data/org.gnome.shell.gschema.xml.in:66 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "Näitä tunnisteita vastaavat sovellukset näytetään suosikkien alueella." #: data/org.gnome.shell.gschema.xml.in:73 msgid "History for command (Alt-F2) dialog" msgstr "Historia komentoikkunalle (Alt-F2)" #. Translators: looking glass is a debugger and inspector tool, see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/docs/looking-glass.md #: data/org.gnome.shell.gschema.xml.in:78 msgid "History for the looking glass dialog" msgstr "Historia näyttölasi-ikkunalle" #: data/org.gnome.shell.gschema.xml.in:82 msgid "Always show the “Log Out” action in the system menu" msgstr "Näytä aina “Kirjaudu ulos”-toiminto järjestelmävalikossa" #: data/org.gnome.shell.gschema.xml.in:83 #, fuzzy #| msgid "" #| "This key overrides the automatic hiding of the “Log out” menu item in " #| "single-user, single-session situations." msgid "" "This key overrides the automatic hiding of the “Log out” action in the " "system menu for logged-in situations where there is a single, local, non-" "system user and only a single available session type (e.g. GNOME on Wayland)." msgstr "" "Tämä avain ohittaa “Kirjaudu ulos”-valikkokohdan automaattisen piilotuksen " "\"yksi käyttäjä, yksi istunto\"-tilanteissa." #: data/org.gnome.shell.gschema.xml.in:92 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "Muistetaanko salattujen tai etätiedostojärjestelmien liittämiseen tarvittava " "salasana" #: data/org.gnome.shell.gschema.xml.in:93 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "Shell pyytää salasanaa, kun salattu laite tai etätiedostojärjestelmä " "liitetään. Jos salasana voidaan tallentaa tulevaa käyttöä varten, “Muista " "salasana”-valintaruutu näytetään. Tämä avain asettaa valintaruudun " "oletustilan." #: data/org.gnome.shell.gschema.xml.in:102 msgid "The last selected non-default power profile" msgstr "Viimeksi valittu muu kuin oletusarvoinen tehoprofiili" #: data/org.gnome.shell.gschema.xml.in:103 msgid "" "Some systems support more than two power profiles. In order to still support " "toggling between two profiles, this key records the last selected non-" "default profile." msgstr "" #: data/org.gnome.shell.gschema.xml.in:111 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "" #: data/org.gnome.shell.gschema.xml.in:112 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can " "be used to effectively disable the dialog." msgstr "" #: data/org.gnome.shell.gschema.xml.in:145 msgid "Layout of the app picker" msgstr "Sovellusvalitsimen asettelu" #: data/org.gnome.shell.gschema.xml.in:146 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" msgstr "" #: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:172 msgid "Keybinding to shift between overview states" msgstr "Yleisnäkymän avaukseen käytettävä pikanäppäin" #: data/org.gnome.shell.gschema.xml.in:166 msgid "Keybinding to shift between session, window picker and app grid" msgstr "" "Istunnon, ikkunavalitsimen ja sovellusruudukon välillä vaihtoon käytettävä " "pikanäppäin" #: data/org.gnome.shell.gschema.xml.in:173 msgid "Keybinding to shift between app grid, window picker and session" msgstr "" "Sovellusruudukon, ikkunavalitsimen ja istunnon välillä vaihtoon käytettävä " "pikanäppäin" #: data/org.gnome.shell.gschema.xml.in:179 msgid "Keybinding to open the “Show Applications” view" msgstr "Näytä sovellukset -näkymän avaukseen käytettävä pikanäppäin" #: data/org.gnome.shell.gschema.xml.in:180 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "" "Yleisnäkymän Näytä sovellukset -näkymän avaukseen käytettävä pikanäppäin." #: data/org.gnome.shell.gschema.xml.in:187 msgid "Keybinding to open the overview" msgstr "Yleisnäkymän avaukseen käytettävä pikanäppäin" #: data/org.gnome.shell.gschema.xml.in:188 msgid "Keybinding to open the Activities Overview." msgstr "Yleisnäkymän avaukseen käytettävä pikanäppäin." #: data/org.gnome.shell.gschema.xml.in:194 msgid "Keybinding to toggle the visibility of the notification list" msgstr "Ilmoitusalueen näyttämiseen/piilottamiseen tarkoitettu pikanäppäin" #: data/org.gnome.shell.gschema.xml.in:195 msgid "Keybinding to toggle the visibility of the notification list." msgstr "Ilmoitusluettelon näyttämiseen/piilottamiseen tarkoitettu pikanäppäin." #: data/org.gnome.shell.gschema.xml.in:201 msgid "Keybinding to toggle the quick settings menu" msgstr "Pika-asetusvalikon avaukseen käytettävä pikanäppäin" #: data/org.gnome.shell.gschema.xml.in:202 msgid "Keybinding to toggle the quick settings menu." msgstr "Pika-asetusvalikon avaukseen käytettävä pikanäppäin." #: data/org.gnome.shell.gschema.xml.in:208 msgid "Keybinding to focus the active notification" msgstr "Aktiiviseen ilmoitukseen kohdistava pikanäppäin" #: data/org.gnome.shell.gschema.xml.in:209 msgid "Keybinding to focus the active notification." msgstr "Aktiiviseen ilmoitukseen kohdistava pikanäppäin." #: data/org.gnome.shell.gschema.xml.in:215 msgid "Switch to application 1" msgstr "Vaihda sovellukseen 1" #: data/org.gnome.shell.gschema.xml.in:219 msgid "Switch to application 2" msgstr "Vaihda sovellukseen 2" #: data/org.gnome.shell.gschema.xml.in:223 msgid "Switch to application 3" msgstr "Vaihda sovellukseen 3" #: data/org.gnome.shell.gschema.xml.in:227 msgid "Switch to application 4" msgstr "Vaihda sovellukseen 4" #: data/org.gnome.shell.gschema.xml.in:231 msgid "Switch to application 5" msgstr "Vaihda sovellukseen 5" #: data/org.gnome.shell.gschema.xml.in:235 msgid "Switch to application 6" msgstr "Vaihda sovellukseen 6" #: data/org.gnome.shell.gschema.xml.in:239 msgid "Switch to application 7" msgstr "Vaihda sovellukseen 7" #: data/org.gnome.shell.gschema.xml.in:243 msgid "Switch to application 8" msgstr "Vaihda sovellukseen 8" #: data/org.gnome.shell.gschema.xml.in:247 msgid "Switch to application 9" msgstr "Vaihda sovellukseen 9" #: data/org.gnome.shell.gschema.xml.in:251 msgid "Open a new instance of application 1" msgstr "Avaa uusi instanssi sovelluksesta 1" #: data/org.gnome.shell.gschema.xml.in:255 msgid "Open a new instance of application 2" msgstr "Avaa uusi instanssi sovelluksesta 2" #: data/org.gnome.shell.gschema.xml.in:259 msgid "Open a new instance of application 3" msgstr "Avaa uusi instanssi sovelluksesta 3" #: data/org.gnome.shell.gschema.xml.in:263 msgid "Open a new instance of application 4" msgstr "Avaa uusi instanssi sovelluksesta 4" #: data/org.gnome.shell.gschema.xml.in:267 msgid "Open a new instance of application 5" msgstr "Avaa uusi instanssi sovelluksesta 5" #: data/org.gnome.shell.gschema.xml.in:271 msgid "Open a new instance of application 6" msgstr "Avaa uusi instanssi sovelluksesta 6" #: data/org.gnome.shell.gschema.xml.in:275 msgid "Open a new instance of application 7" msgstr "Avaa uusi instanssi sovelluksesta 7" #: data/org.gnome.shell.gschema.xml.in:279 msgid "Open a new instance of application 8" msgstr "Avaa uusi instanssi sovelluksesta 8" #: data/org.gnome.shell.gschema.xml.in:283 msgid "Open a new instance of application 9" msgstr "Avaa uusi instanssi sovelluksesta 9" #: data/org.gnome.shell.gschema.xml.in:308 #: data/org.gnome.shell.gschema.xml.in:335 msgid "Limit switcher to current workspace." msgstr "Rajoita vaihtaja nykyiseen työtilaan." #: data/org.gnome.shell.gschema.xml.in:309 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "Jos tosi, näytetään vaihtajassa vain niiden sovellusten ikkunat, jotka " "sijaitsevat nykyisessä työtilassa. Muussa tapauksessa kaikki sovellukset " "sisällytetään." #: data/org.gnome.shell.gschema.xml.in:326 msgid "The application icon mode." msgstr "Sovelluskuvakkeen tila." #: data/org.gnome.shell.gschema.xml.in:327 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-only” " "(shows only the application icon) or “both”." msgstr "" "Määrittää kuinka ikkunat näytetään ikkunavaihtimessa. Mahdolliset arvot ovat " "'thumbnail-only' (näyttää ikkunan pienoiskuvan), 'app-icon-only' (näyttää " "vain sovelluksen kuvakkeen) tai 'both'(molemmat)." #: data/org.gnome.shell.gschema.xml.in:336 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "Jos tosi,vain nykyisessä työtilassa olevat ikkunat näytetään vaihtajassa. " "Muussa tapauksessa kaikki ikkunat näytetään." #: data/org.gnome.shell.gschema.xml.in:346 msgid "Locations" msgstr "Sijainnit" #: data/org.gnome.shell.gschema.xml.in:347 msgid "The locations to show in world clocks" msgstr "Maailmankellossa näytettävät sijainnit" #: data/org.gnome.shell.gschema.xml.in:357 msgid "Automatic location" msgstr "Automaattinen sijainti" #: data/org.gnome.shell.gschema.xml.in:358 msgid "Whether to fetch the current location or not" msgstr "Noudetaanko sijainti vai ei" #: data/org.gnome.shell.gschema.xml.in:365 msgid "Location" msgstr "Sijainti" #: data/org.gnome.shell.gschema.xml.in:366 msgid "The location for which to show a forecast" msgstr "Sijainti jonka ennuste näytetään" #. Keep in sync with subprojects/extensions-app #: data/org.gnome.Shell.Extensions.desktop.in.in:5 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/data/ui/extensions-window.ui:57 msgid "Extensions" msgstr "Laajennukset" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "Verkkokirjautuminen" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:275 msgid "Something’s gone wrong" msgstr "Jokin meni pieleen" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" "Ongelma havaittu: tämän laajennuksen asetuksia ei voi näyttää. Suosittelemme " "ilmoittamaan ongelmasta laajennuksen tekijälle." #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "Tekniset tiedot" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "Verkkosivu" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 msgid "Visit extension homepage" msgstr "Käy laajennuksen verkkosivulla" #: js/gdm/authPrompt.js:151 js/gdm/loginDialog.js:465 #: js/ui/audioDeviceSelection.js:66 js/ui/components/networkAgent.js:113 #: js/ui/components/polkitAgent.js:144 js/ui/endSessionDialog.js:437 #: js/ui/extensionDownloader.js:276 js/ui/shellMountOperation.js:382 #: js/ui/shellMountOperation.js:392 msgid "Cancel" msgstr "Peru" #: js/gdm/authPrompt.js:317 js/ui/components/networkAgent.js:213 #: js/ui/components/networkAgent.js:233 js/ui/components/networkAgent.js:265 #: js/ui/components/networkAgent.js:298 js/ui/components/networkAgent.js:337 #: js/ui/components/networkAgent.js:350 js/ui/components/polkitAgent.js:286 #: js/ui/shellMountOperation.js:332 msgid "Password" msgstr "Salasana" #: js/gdm/loginDialog.js:326 msgid "Choose Session" msgstr "Valitse istunto" #. Translators: is running for #: js/gdm/loginDialog.js:423 #, javascript-format msgid "" "Remote login is not possible because a remote session is already running for " "%s. To login remotely, you must log out from the remote session or force " "stop it." msgstr "" "Etäkirjautuminen ei ole mahdollista, koska käyttäjällä %s on jo etäistunto. " "Kirjautuaksesi etäältä sinun tulee ensin kirjautua ulos etäistunnosta tai " "pakottaa istunnon lopettaminen." #. Translators: is running for #: js/gdm/loginDialog.js:426 #, javascript-format msgid "" "Login is not possible because a remote session is already running for %s. To " "login, you must log out from the remote session or force stop it." msgstr "" "Kirjautuminen ei ole mahdollista, koska käyttäjällä %s on jo etäistunto. " "Kirjautuaksesi sinun tulee ensin kirjautua ulos etäistunnosta tai pakottaa " "istunnon lopettaminen." #. Translators: is running for #: js/gdm/loginDialog.js:429 #, javascript-format msgid "" "Remote login is not possible because a local session is already running for " "%s. To login remotely, you must log out from the local session or force stop " "it." msgstr "" "Etäkirjautuminen ei ole mahdollista, koska käyttäjällä %s on jo paikallinen " "istunto. Kirjautuaksesi etäältä sinun tulee ensin kirjautua ulos " "paikallisesta istunnosta tai pakottaa istunnon lopettaminen." #. Translators: is running for #: js/gdm/loginDialog.js:432 #, javascript-format msgid "" "Login is not possible because a session is already running for %s. To login, " "you must log out from the session or force stop it." msgstr "" "Kirjautuminen ei ole mahdollista, koska käyttäjällä %s on jo istunto. " "Kirjautuaksesi sinun tulee ensin kirjautua ulos istunnosta tai pakottaa " "istunnon lopettaminen." #: js/gdm/loginDialog.js:441 msgid "Session Already Running" msgstr "Istunto on jo käynnissä" #: js/gdm/loginDialog.js:453 msgid "" "Force stopping will quit any running apps and processes, and could result in " "data loss" msgstr "" "Pakolla lopettaminen lopettaa kaikki käynnissä olevat sovellukset ja " "prosessit, ja se saattaa johtaa tietojen katoamiseen" #: js/gdm/loginDialog.js:473 msgid "Force Stop" msgstr "Pakota lopetus" #: js/gdm/loginDialog.js:541 msgid "Not listed?" msgstr "Ei luettelossa?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:1009 #, javascript-format msgid "(e.g., user or %s)" msgstr "(esim. käyttäjä tai %s)" #: js/gdm/loginDialog.js:1014 js/ui/components/networkAgent.js:257 #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:326 msgid "Username" msgstr "Käyttäjätunnus" #: js/gdm/loginDialog.js:1080 msgid "Login Attempt Timed Out" msgstr "Kirjautumisyritys aikakatkaistiin" #: js/gdm/loginDialog.js:1081 msgid "Login took too long, please try again" msgstr "Kirjautuminen kesti liian kauan, yritä uudelleen" #: js/gdm/loginDialog.js:1426 msgid "Login Window" msgstr "Kirjautumisikkuna" #: js/gdm/util.js:496 msgid "Authentication error" msgstr "Tunnistautumisvirhe" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:727 msgid "(or swipe finger across reader)" msgstr "(tai pyyhkäise sormella sormenjälkilukijaa)" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:732 msgid "(or place finger on reader)" msgstr "(tai aseta sormi sormenjälkilukijaan)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:91 msgctxt "search-result" msgid "Power Off" msgstr "Sammuta" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:94 msgid "power off;poweroff;shutdown;halt;stop" msgstr "power off;poweroff;shutdown;halt;stop;sammuta" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:99 msgctxt "search-result" msgid "Restart" msgstr "Käynnistä uudelleen" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:102 msgid "reboot;restart;" msgstr "reboot;restart;uudelleenkäynnistys;käynnistä uudelleen;boottaa;" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:107 msgctxt "search-result" msgid "Lock Screen" msgstr "Lukitse näyttö" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:110 msgid "lock screen" msgstr "lock screen" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:115 msgctxt "search-result" msgid "Log Out" msgstr "Kirjaudu ulos" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:118 msgid "logout;log out;sign off" msgstr "logout;log out;sign off;kirjaudu ulos;uloskirjautuminen;poistu" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:123 msgctxt "search-result" msgid "Suspend" msgstr "Valmiustila" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:126 msgid "suspend;sleep" msgstr "suspend;sleep" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:131 msgctxt "search-result" msgid "Switch User" msgstr "Vaihda käyttäjää" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:134 msgid "switch user" msgstr "switch user" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:141 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "" "lock orientation;unlock orientation;screen;rotation;lukitse kierto;lukitse " "suunta;suunta;kääntö" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:146 msgctxt "search-result" msgid "Take a Screenshot" msgstr "Ota kuvakaappaus" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:149 msgid "screenshot;screencast;snip;capture;record" msgstr "" "screenshot;screencast;snip;capture;record;kuvakaappaus;näyttökaappaus;" "näyttövideo;nauhoita" #: js/misc/systemActions.js:249 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "Vapauta näytön kierto" #: js/misc/systemActions.js:250 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "Lukitse näytön kierto" #: js/misc/util.js:130 msgid "Command not found" msgstr "Komentoa ei löydy" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:170 msgid "Could not parse command:" msgstr "Komentoa ei voi jäsentää:" #: js/misc/util.js:178 #, javascript-format msgid "Execution of “%s” failed:" msgstr "Kohteen ”%s” suorittaminen epäonnistui:" #: js/misc/dateUtils.js:69 msgid "Just now" msgstr "Juuri nyt" #: js/misc/dateUtils.js:72 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d minuutti sitten" msgstr[1] "%d minuuttia sitten" #: js/misc/dateUtils.js:79 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d tunti sitten" msgstr[1] "%d tuntia sitten" #: js/misc/dateUtils.js:85 js/ui/dateMenu.js:183 msgid "Yesterday" msgstr "Eilen" #: js/misc/dateUtils.js:88 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d päivä sitten" msgstr[1] "%d päivää sitten" #: js/misc/dateUtils.js:95 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d viikko sitten" msgstr[1] "%d viikkoa sitten" #: js/misc/dateUtils.js:102 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%d kuukausi sitten" msgstr[1] "%d kuukautta sitten" #: js/misc/dateUtils.js:108 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "%d vuosi sitten" msgstr[1] "%d vuotta sitten" #. Translators: Time in 24h format #: js/misc/dateUtils.js:155 msgid "%H∶%M" msgstr "%H.%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/dateUtils.js:161 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "Eilen, %H.%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/dateUtils.js:167 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, %H.%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/dateUtils.js:173 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%-d. %Bta, %H.%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/dateUtils.js:179 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%-d. %Bta %Y, %H.%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/dateUtils.js:184 msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/dateUtils.js:190 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "Eilen, %l∶%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/dateUtils.js:196 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/dateUtils.js:202 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%B %-d, %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/dateUtils.js:208 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%B %-d %Y, %l∶%M %p" #: js/portalHelper/main.js:98 msgid "Your connection seems to be secure" msgstr "Yhteys vaikuttaa turvalliselta" #: js/portalHelper/main.js:104 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "Yhteytesi tukiaseman kirjautumissivuun ei ole salattu. Salasanat ja muut " "välittämäsi tiedot voivat olla muiden ihmisten nähtävissä." #: js/portalHelper/main.js:115 msgid "Hotspot Login" msgstr "Tukiasemaan kirjautuminen" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:51 js/ui/inhibitShortcutsDialog.js:92 msgid "Deny" msgstr "Kiellä" #: js/ui/accessDialog.js:52 js/ui/inhibitShortcutsDialog.js:101 msgid "Allow" msgstr "Salli" #: js/ui/appDisplay.js:1769 msgid "Unnamed Folder" msgstr "Nimetön kansio" #: js/ui/appFavorites.js:163 #, javascript-format msgid "%s has been pinned to the dash." msgstr "%s on kiinnitetty telakkaan." #: js/ui/appFavorites.js:194 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "%s ei ole enää kiinnitetty telakkaan." #: js/ui/appFavorites.js:208 js/ui/main.js:281 msgid "Undo" msgstr "Kumoa" #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:49 msgid "Open Windows" msgstr "Avoimet ikkunat" #: js/ui/appMenu.js:57 msgid "New Window" msgstr "Uusi ikkuna" #: js/ui/appMenu.js:84 msgid "App Details" msgstr "Sovelluksen tiedot" #: js/ui/appMenu.js:100 msgid "Quit" msgstr "Lopeta" #: js/ui/appMenu.js:160 js/ui/dash.js:248 msgid "Unpin" msgstr "Poista kiinnitys" #: js/ui/appMenu.js:161 msgid "Pin to Dash" msgstr "Kiinnitä telakkaan" #: js/ui/appMenu.js:178 msgid "Launch using Integrated Graphics Card" msgstr "Käynnistä integroitua näytönohjainta käyttäen" #: js/ui/appMenu.js:179 msgid "Launch using Discrete Graphics Card" msgstr "Käynnistä erillistä näytönohjainta käyttäen" #: js/ui/audioDeviceSelection.js:46 msgid "Select Audio Device" msgstr "Valitse äänilaite" #: js/ui/audioDeviceSelection.js:61 js/ui/status/volume.js:81 msgid "Sound Settings" msgstr "Ääniasetukset" #: js/ui/audioDeviceSelection.js:74 msgid "Headphones" msgstr "Kuulokkeet" #: js/ui/audioDeviceSelection.js:76 msgid "Headset" msgstr "Headset-kuulokkeet" #: js/ui/audioDeviceSelection.js:78 js/ui/status/volume.js:356 msgid "Microphone" msgstr "Mikrofoni" #: js/ui/backgroundMenu.js:13 msgid "Change Background…" msgstr "Muuta työpöydän taustaa…" #: js/ui/backgroundMenu.js:15 msgid "Display Settings" msgstr "Näytön asetukset" #: js/ui/backgroundMenu.js:16 msgid "Settings" msgstr "Asetukset" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:37 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:63 msgctxt "grid sunday" msgid "S" msgstr "S" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:65 msgctxt "grid monday" msgid "M" msgstr "M" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:67 msgctxt "grid tuesday" msgid "T" msgstr "T" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:69 msgctxt "grid wednesday" msgid "W" msgstr "K" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:71 msgctxt "grid thursday" msgid "T" msgstr "T" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:73 msgctxt "grid friday" msgid "F" msgstr "P" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:75 msgctxt "grid saturday" msgid "S" msgstr "L" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:426 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:436 msgid "%OB %Y" msgstr "%OB %Y" #: js/ui/calendar.js:498 msgid "Previous month" msgstr "Edellinen kuukausi" #: js/ui/calendar.js:516 msgid "Next month" msgstr "Seuraava kuukausi" #: js/ui/calendar.js:667 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:726 msgid "Week %V" msgstr "Viikko %V" #: js/ui/calendar.js:918 msgid "No Notifications" msgstr "Ei ilmoituksia" #: js/ui/calendar.js:974 msgid "Do Not Disturb" msgstr "Älä häiritse" #: js/ui/calendar.js:995 msgid "Clear" msgstr "Tyhjennä" #: js/ui/calendar.js:999 msgctxt "action" msgid "Clear all notifications" msgstr "Tyhjennä kaikki ilmoitukset" #. Translators: %s is an application name #: js/ui/closeDialog.js:42 #, javascript-format #| msgid "“%s” is not responding." msgid "“%s” Is Not Responding" msgstr "“%s” ei vastaa" #: js/ui/closeDialog.js:43 msgid "" "You may choose to wait a short while for it to continue or force the app to " "quit entirely" msgstr "" "Voit odottaa hetken sovelluksen jatkamista tai pakottaa sovelluksen " "lopetuksen" #: js/ui/closeDialog.js:71 msgid "Force Quit" msgstr "Pakota lopetus" #: js/ui/closeDialog.js:76 msgid "Wait" msgstr "Odota" #: js/ui/components/automountManager.js:82 msgid "External drive connected" msgstr "Erillinen asema yhdistetty" #: js/ui/components/automountManager.js:94 msgid "External drive disconnected" msgstr "Erillinen asema irrotettu" #: js/ui/components/automountManager.js:208 msgid "Unable to unlock volume" msgstr "Taltion lukituksen avaaminen epäonnistui" #: js/ui/components/automountManager.js:209 msgid "The installed udisks version does not support the PIM setting" msgstr "Asennettu udisks-versio ei tue PIM-asetusta" #. Translators: %s is the name of a partition on a external drive #: js/ui/components/autorunManager.js:189 #, javascript-format #| msgid "%d connected" #| msgid_plural "%d connected" msgid "“%s” connected" msgstr "“%s” yhdistetty" #: js/ui/components/autorunManager.js:190 msgid "Disk can now be used" msgstr "Levyä voi käyttää nyt" #: js/ui/components/autorunManager.js:202 #, javascript-format msgid "Open with %s" msgstr "Avaa käyttäen sovellusta %s" #: js/ui/components/networkAgent.js:95 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router" msgstr "" "Vaihtoehtoisesti voit yhdistää painamalla reitittimesi “WPS”-painiketta" #: js/ui/components/networkAgent.js:107 js/ui/status/bluetooth.js:245 #: js/ui/status/network.js:360 js/ui/status/network.js:444 msgid "Connect" msgstr "Yhdistä" #: js/ui/components/networkAgent.js:222 msgid "Key" msgstr "Avain" #: js/ui/components/networkAgent.js:273 js/ui/components/networkAgent.js:312 msgid "Private key password" msgstr "Yksityisen avaimen salasana" #: js/ui/components/networkAgent.js:306 msgid "Identity" msgstr "Identiteetti" #: js/ui/components/networkAgent.js:332 msgid "Service" msgstr "Palvelu" #: js/ui/components/networkAgent.js:370 js/ui/components/networkAgent.js:406 #: js/ui/components/networkAgent.js:743 js/ui/components/networkAgent.js:764 msgid "Authentication required" msgstr "Tunnistautuminen vaaditaan" #: js/ui/components/networkAgent.js:371 js/ui/components/networkAgent.js:744 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network “%s”" msgstr "Langaton verkko “%s” vaatii salasanan tai salausavaimia" #: js/ui/components/networkAgent.js:375 js/ui/components/networkAgent.js:748 msgid "Wired 802.1X authentication" msgstr "Kiinteän 802.1X-yhteyden tunnistautuminen" #: js/ui/components/networkAgent.js:378 msgid "Network name" msgstr "Verkon nimi" #: js/ui/components/networkAgent.js:386 js/ui/components/networkAgent.js:752 msgid "DSL authentication" msgstr "DSL-tunnistautuminen" #: js/ui/components/networkAgent.js:393 js/ui/components/networkAgent.js:757 msgid "PIN code required" msgstr "PIN-koodi vaaditaan" #: js/ui/components/networkAgent.js:394 js/ui/components/networkAgent.js:758 msgid "PIN code is needed for the mobile broadband device" msgstr "Mobiililaajakaista vaatii PIN-koodin" #: js/ui/components/networkAgent.js:396 msgid "PIN" msgstr "PIN" #: js/ui/components/networkAgent.js:407 js/ui/components/networkAgent.js:749 #: js/ui/components/networkAgent.js:753 js/ui/components/networkAgent.js:765 #: js/ui/components/networkAgent.js:769 #, javascript-format msgid "A password is required to connect to “%s”" msgstr "Salasana vaaditaan kohteeseen “%s” yhdistämiseksi" #: js/ui/components/networkAgent.js:768 msgid "VPN password" msgstr "VPN-salasana" #: js/ui/components/polkitAgent.js:44 msgid "Authentication Required" msgstr "Tunnistautuminen vaaditaan" #: js/ui/components/polkitAgent.js:84 msgid "Administrator" msgstr "Ylläpitäjä" #: js/ui/components/polkitAgent.js:149 msgid "Authenticate" msgstr "Tunnistaudu" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:263 js/ui/shellMountOperation.js:415 msgid "Sorry, that didn’t work. Please try again." msgstr "Kirjautuminen epäonnistui. Yritä uudelleen." #: js/ui/ctrlAltTab.js:23 js/ui/overviewControls.js:404 msgid "Windows" msgstr "Ikkunat" #: js/ui/dash.js:204 js/ui/dash.js:250 msgid "Show Apps" msgstr "Näytä sovellukset" #. Translators: this is the name of the dock/favorites area on #. the bottom of the overview #: js/ui/dash.js:408 msgid "Dash" msgstr "Pikavalikko" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:99 msgid "%B %-d %Y" msgstr "%-d. %Bta %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:106 msgid "%A %B %e %Y" msgstr "%A, %e. %Bta %Y" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:172 msgctxt "calendar heading" msgid "%B %-d" msgstr "%e. %Bta" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:175 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%e. %Bta %Y" #: js/ui/dateMenu.js:181 msgid "Today" msgstr "Tänään" #: js/ui/dateMenu.js:185 msgid "Tomorrow" msgstr "Huomenna" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:216 msgctxt "event list time" msgid "All Day" msgstr "Koko päivä" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:238 msgid "%m/%d" msgstr "" #: js/ui/dateMenu.js:289 msgid "No Events" msgstr "Ei tapahtumia" #: js/ui/dateMenu.js:411 msgid "Add World Clocks…" msgstr "Lisää maailmankelloja…" #: js/ui/dateMenu.js:412 msgid "World Clocks" msgstr "Maailmankellot" #: js/ui/dateMenu.js:702 msgid "Loading…" msgstr "Ladataan…" #: js/ui/dateMenu.js:712 msgid "Go Online for Weather Information" msgstr "Yhdistä verkkoon saadaksesi säätietoja" #: js/ui/dateMenu.js:714 msgid "Weather Information Unavailable" msgstr "Säätiedot eivät ole juuri nyt saatavilla" #: js/ui/dateMenu.js:724 msgid "Weather" msgstr "Sää" #: js/ui/dateMenu.js:726 msgid "Select Weather Location…" msgstr "Valitse sään sijainti…" #: js/ui/endSessionDialog.js:47 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "Kirjaa %s ulos" #: js/ui/endSessionDialog.js:48 msgctxt "title" msgid "Log Out" msgstr "Kirjaudu ulos" #: js/ui/endSessionDialog.js:51 #, javascript-format msgid "%s will be logged out automatically in %d second" msgid_plural "%s will be logged out automatically in %d seconds" msgstr[0] "%s kirjataan ulos automaattisesti %d sekunnin kuluttua" msgstr[1] "%s kirjataan ulos automaattisesti %d sekunnin kuluttua" #: js/ui/endSessionDialog.js:57 #, javascript-format msgid "You will be logged out automatically in %d second" msgid_plural "You will be logged out automatically in %d seconds" msgstr[0] "Sinut kirjataan ulos automaattisesti %d sekunnin kuluttua" msgstr[1] "Sinut kirjataan ulos automaattisesti %d sekunnin kuluttua" #: js/ui/endSessionDialog.js:64 msgctxt "button" msgid "Log Out" msgstr "Kirjaudu ulos" #: js/ui/endSessionDialog.js:70 js/ui/status/system.js:174 msgctxt "title" msgid "Power Off" msgstr "Sammuta" #: js/ui/endSessionDialog.js:71 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Asenna päivitykset ja sammuta" #: js/ui/endSessionDialog.js:74 #, javascript-format msgid "The system will power off automatically in %d second" msgid_plural "The system will power off automatically in %d seconds" msgstr[0] "Järjestelmä sammuu automaattisesti %d sekunnin kuluttua" msgstr[1] "Järjestelmä sammuu automaattisesti %d sekunnin kuluttua" #: js/ui/endSessionDialog.js:78 js/ui/endSessionDialog.js:97 msgctxt "checkbox" msgid "Install pending software updates" msgstr "Asenna odottavat ohjelmistopäivitykset" #: js/ui/endSessionDialog.js:82 msgctxt "button" msgid "Power Off" msgstr "Sammuta" #: js/ui/endSessionDialog.js:89 msgctxt "title" msgid "Restart" msgstr "Käynnistä uudelleen" #: js/ui/endSessionDialog.js:90 msgctxt "title" msgid "Install Updates & Restart" msgstr "Asenna päivitykset ja käynnistä uudelleen" #: js/ui/endSessionDialog.js:93 #, javascript-format msgid "The system will restart automatically in %d second" msgid_plural "The system will restart automatically in %d seconds" msgstr[0] "" "Järjestelmä käynnistyy automaattisesti uudelleen %d sekunnin kuluttua" msgstr[1] "" "Järjestelmä käynnistyy automaattisesti uudelleen %d sekunnin kuluttua" #: js/ui/endSessionDialog.js:101 msgctxt "button" msgid "Restart" msgstr "Käynnistä uudelleen" #: js/ui/endSessionDialog.js:109 msgctxt "title" msgid "Restart & Install Updates" msgstr "Käynnistä uudelleen ja asenna päivitykset" #: js/ui/endSessionDialog.js:112 #, javascript-format msgid "The system will automatically restart and install updates in %d second" msgid_plural "" "The system will automatically restart and install updates in %d seconds" msgstr[0] "" "Järjestelmä käynnistyy automaattisesti uudelleen ja asentaa päivitykset %d " "sekunnin kuluttua" msgstr[1] "" "Järjestelmä käynnistyy automaattisesti uudelleen ja asentaa päivitykset %d " "sekunnin kuluttua" #: js/ui/endSessionDialog.js:119 js/ui/endSessionDialog.js:140 msgctxt "button" msgid "Restart & Install" msgstr "Käynnistä uudelleen ja asenna" #: js/ui/endSessionDialog.js:121 msgctxt "button" msgid "Install & Power Off" msgstr "Asenna ja sammuta" #: js/ui/endSessionDialog.js:122 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Sammuta päivitysten asennuksen jälkeen" #: js/ui/endSessionDialog.js:129 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "Käynnistä uudelleen ja asenna päivitys" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:134 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "%s %s asennetaan uudelleenkäynnistyksen jälkeen. Versiopäivityksen asennus " "voi kestää kauan: varmista varmuuskopioidesi ajantasaisuus ja toimivuus. " "Kiinnitä kone myös verkkovirtaan." #: js/ui/endSessionDialog.js:283 msgid "Low battery power: please plug in before installing updates" msgstr "" "Laitteen akkuvirta vähissä: kiinnitä verkkovirtaan ennen päivitysten " "asennusta" #: js/ui/endSessionDialog.js:292 msgid "Some applications are busy or have unsaved work" msgstr "Jotkin sovellukset ovat kiireisiä tai sisältävät tallentamatonta työtä" #: js/ui/endSessionDialog.js:297 msgid "Other users are logged in" msgstr "Muita käyttäjiä on kirjautuneena" #: js/ui/endSessionDialog.js:467 msgctxt "button" msgid "Boot Options" msgstr "Käynnistysvalinnat" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:672 #, javascript-format msgid "%s (remote)" msgstr "%s (etä)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:675 #, javascript-format msgid "%s (console)" msgstr "%s (konsoli)" #: js/ui/extensionDownloader.js:280 msgid "Install" msgstr "Asenna" #: js/ui/extensionDownloader.js:286 msgid "Install Extension" msgstr "Asenna laajennus" #: js/ui/extensionDownloader.js:287 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "Ladataanko ja asennetaanko ”%s” sivustolta extensions.gnome.org?" #: js/ui/extensionSystem.js:352 msgid "Extension Updates Available" msgstr "Laajennusten päivityksiä saatavilla" #: js/ui/extensionSystem.js:353 msgid "Extension updates are ready to be installed" msgstr "Laajennusten päivitykset ovat valmiina asennettavaksi" #: js/ui/inhibitShortcutsDialog.js:70 msgid "Allow inhibiting shortcuts" msgstr "Salli pikanäppäimien rajoittaminen" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:73 #, javascript-format msgid "The app %s wants to inhibit shortcuts" msgstr "Sovellus %s haluaa rajoittaa pikanäppäinten toimintaa" #: js/ui/inhibitShortcutsDialog.js:74 msgid "An app wants to inhibit shortcuts" msgstr "Sovellus haluaa rajoittaa pikanäppäinten toimintaa" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:81 #, javascript-format msgid "You can restore shortcuts by pressing %s" msgstr "Voit palauttaa pikanäppäinten toiminnan painamalla %s" #: js/ui/kbdA11yDialog.js:34 msgid "Slow Keys Turned On" msgstr "Hitaat näppäimet otettu käyttöön" #: js/ui/kbdA11yDialog.js:35 msgid "Slow Keys Turned Off" msgstr "Hitaat näppäimet poistettu käytöstä" #: js/ui/kbdA11yDialog.js:36 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "Pidit juuri Shift-näppäintä pohjassa kahdeksan sekuntia. Se toimii " "pikanäppäimenä hitaiden näppäinten ominaisuudelle, joka taasen vaikuttaa " "näppäimistön toimintatapaan." #: js/ui/kbdA11yDialog.js:42 msgid "Sticky Keys Turned On" msgstr "Pohjaan jäävät näppäimet otettu käyttöön" #: js/ui/kbdA11yDialog.js:43 msgid "Sticky Keys Turned Off" msgstr "Pohjaan jäävät näppäimet poistettu käytöstä" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "Painoit juuri Shift-näppäintä viisi kertaa peräkkäin. Se toimii " "pikanäppäimenä pohjaan jäävien näppäinten ominaisuudelle, joka taasen " "vaikuttaa näppäimistön toimintatapaan." #: js/ui/kbdA11yDialog.js:47 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" "Painoit juuri kahta näppäintä samanaikaisesti, tai painoit Shift-näppäintä " "viisi kertaa peräkkäin. Tämä kytkee pohjaan jäävien näppäinten ominaisuuden " "pois käytöstä, joka taasen vaikuttaa näppäimistön toimintatapaan." #: js/ui/kbdA11yDialog.js:57 msgid "Leave On" msgstr "Jätä käyttöön" #: js/ui/kbdA11yDialog.js:57 msgid "Turn On" msgstr "Ota käyttöön" #: js/ui/kbdA11yDialog.js:67 js/ui/status/network.js:455 msgid "Turn Off" msgstr "Sammuta" #: js/ui/kbdA11yDialog.js:67 msgid "Leave Off" msgstr "Poista käytöstä" #: js/ui/keyboard.js:180 js/ui/status/keyboard.js:897 msgid "Keyboard Settings" msgstr "Näppäimistön asetukset" #: js/ui/lookingGlass.js:727 msgid "No extensions installed" msgstr "Laajennuksia ei asennettu" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:788 #, javascript-format msgid "%s has not emitted any errors" msgstr "%s ei ole lähettänyt virheitä" #: js/ui/lookingGlass.js:794 msgid "Hide Errors" msgstr "Piilota virheet" #: js/ui/lookingGlass.js:798 js/ui/lookingGlass.js:875 msgid "Show Errors" msgstr "Näytä virheet" #: js/ui/lookingGlass.js:807 msgid "Active" msgstr "Aktiivinen" #: js/ui/lookingGlass.js:810 msgid "Inactive" msgstr "Passiivinen" #: js/ui/lookingGlass.js:812 msgid "Error" msgstr "Virhe" #: js/ui/lookingGlass.js:814 msgid "Out of date" msgstr "Ei ajan tasalla" #: js/ui/lookingGlass.js:816 msgid "Downloading" msgstr "Noudetaan" #: js/ui/lookingGlass.js:818 msgid "Deactivating" msgstr "Deaktivoidaan" #: js/ui/lookingGlass.js:820 msgid "Activating" msgstr "Aktivoidaan" #: js/ui/lookingGlass.js:853 msgid "View Source" msgstr "Näytä lähde" #: js/ui/lookingGlass.js:864 msgid "Web Page" msgstr "Verkkosivusto" #: js/ui/main.js:277 msgid "System was put in unsafe mode" msgstr "Järjestelmä asetettiin turvattomaan tilaan" #: js/ui/main.js:278 msgid "Apps now have unrestricted access" msgstr "Sovelluksilla on nyt rajoittamaton pääsy" #: js/ui/main.js:338 msgid "Logged in as a privileged user" msgstr "Kirjautuneena etuoikeutettuna käyttäjänä" #: js/ui/main.js:339 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" "Istunnon suorittamista etuoikeutettuna käyttäjänä tulisi välttää " "tietoturvasyistä. Jos mahdollista, kirjaudu tavallisena käyttäjänä." #: js/ui/main.js:387 msgid "Screen Lock disabled" msgstr "Näytön lukitus pois käytöstä" #: js/ui/main.js:388 msgid "Screen Locking requires the GNOME display manager" msgstr "Näytön lukitus vaatii Gnomen kirjautumishallinnan" #. Translators: this is the string displayed in the header when a message #. source doesn't have a name #: js/ui/messageList.js:374 msgid "Unknown App" msgstr "Tuntematon sovellus" #: js/ui/messageTray.js:326 js/ui/messageTray.js:328 msgid "Notification sound" msgstr "Ilmoitusääni" #: js/ui/mpris.js:198 msgid "Unknown artist" msgstr "Tuntematon esittäjä" #: js/ui/mpris.js:208 msgid "Unknown title" msgstr "Tuntematon kappale" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:328 msgid "Type to search" msgstr "Kirjoita hakeaksesi" #: js/ui/overviewControls.js:392 msgid "Apps" msgstr "Sovellukset" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:33 msgid "Overview" msgstr "Yleisnäkymä" #: js/ui/padOsd.js:98 msgid "New shortcut…" msgstr "Uusi pikanäppäin…" #: js/ui/padOsd.js:151 msgid "App defined" msgstr "Sovelluksen määrittämä" #: js/ui/padOsd.js:152 msgid "Show on-screen help" msgstr "Näytä ohje" #: js/ui/padOsd.js:153 msgid "Switch monitor" msgstr "Vaihda näyttöä" #: js/ui/padOsd.js:154 msgid "Assign keystroke" msgstr "Määritä painallus" #: js/ui/padOsd.js:223 msgid "Done" msgstr "Valmis" #: js/ui/padOsd.js:726 msgid "Edit…" msgstr "Muokkaa…" #: js/ui/padOsd.js:773 msgid "None" msgstr "Ei mitään" #: js/ui/padOsd.js:844 msgid "Press a button to configure" msgstr "Paina näppäintä määrittääksesi asetukset" #: js/ui/padOsd.js:845 msgid "Press Esc to exit" msgstr "Paina Esc poistuaksesi" #: js/ui/padOsd.js:848 msgid "Press any key to exit" msgstr "Paina mitä tahansa näppäintä poistuaksesi" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:423 msgid "Activities" msgstr "Toiminnot" #: js/ui/panel.js:504 msgctxt "System menu in the top bar" msgid "System" msgstr "Järjestelmä" #: js/ui/panel.js:678 msgid "Top Bar" msgstr "Yläpalkki" #: js/ui/quickSettings.js:188 msgid "Open menu" msgstr "Avaa valikko" #: js/ui/runDialog.js:61 msgid "Run a Command" msgstr "Suorita komento" #: js/ui/runDialog.js:76 msgid "Press ESC to close" msgstr "Paina ESC poistuaksesi" #: js/ui/runDialog.js:241 msgid "Restart is not available on Wayland" msgstr "Uudelleenkäynnistys ei ole käytettävissä Waylandilla" #: js/ui/runDialog.js:246 msgid "Restarting…" msgstr "Käynnistetään uudelleen…" #: js/ui/screenShield.js:233 msgid "GNOME needs to lock the screen" msgstr "Gnomen täytyy lukita näyttö" #: js/ui/screenShield.js:274 js/ui/screenShield.js:667 msgid "Unable to lock" msgstr "Lukitus epäonnistui" #: js/ui/screenShield.js:275 js/ui/screenShield.js:668 msgid "Lock was blocked by an app" msgstr "Lukitus estettiin sovelluksen toimesta" #: js/ui/screenshot.js:1252 msgid "Selection" msgstr "Valinta" #: js/ui/screenshot.js:1262 msgid "Area Selection" msgstr "Aluevalinta" #: js/ui/screenshot.js:1267 msgid "Screen" msgstr "Näyttö" #: js/ui/screenshot.js:1277 msgid "Screen Selection" msgstr "Näytön valinta" #: js/ui/screenshot.js:1282 msgid "Window" msgstr "Ikkuna" #: js/ui/screenshot.js:1292 msgid "Window Selection" msgstr "Ikkunan valinta" #. Translators: entry in the window right click menu. #: js/ui/screenshot.js:1317 js/ui/status/system.js:111 js/ui/windowMenu.js:28 msgid "Take Screenshot" msgstr "Ota kuvakaappaus" #: js/ui/screenshot.js:1333 msgid "Record Screen" msgstr "Ota näyttötallennevideo" #. Translators: since this string refers to an action, #. it needs to be phrased as a verb. #: js/ui/screenshot.js:1350 msgid "Capture" msgstr "Ota kuvakaappaus" #: js/ui/screenshot.js:1372 msgid "Show Pointer" msgstr "Näytä osoitin" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1996 msgid "Screencasts" msgstr "Näyttötallennevideot" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast From 07-17-2013 10:00:46 PM" #: js/ui/screenshot.js:2001 #, no-c-format msgid "Screencast From %d %t" msgstr "Näyttötallennevideo - %d %t" #. Translators: notification title. #: js/ui/screenshot.js:2047 msgid "Screencast recorded" msgstr "Näyttötallennevideo otettu" #. Translators: notification title. #: js/ui/screenshot.js:2060 msgid "Screencast failed to start" msgstr "Näyttötallennevideon käynnistäminen epäonnistui" #. Translators: notification title. #: js/ui/screenshot.js:2066 msgid "Screencast ended: Out of disk space" msgstr "Näyttötallennevideo päättyi: levytila loppui" #. We can encourage user to try again on service crashes since the #. recorder will auto-blocklist the pipeline that crashed. #. Translators: notification title. #: js/ui/screenshot.js:2072 msgid "Screencast ended unexpectedly, please try again" msgstr "Näyttötallennevideo päättyi odottamatta, yritä uudelleen" #. Translators: notification title. #: js/ui/screenshot.js:2075 msgid "Screencast ended unexpectedly" msgstr "Näyttötallennevideo päättyi odottamatta" #. Translators: notification source name. #: js/ui/screenshot.js:2085 js/ui/screenshot.js:2327 msgid "Screenshot" msgstr "Kuvakaappaus" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:2092 msgid "Click here to view the video." msgstr "Napsauta tästä katsoaksesi videon." #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:2100 js/ui/screenshot.js:2343 msgid "Show in Files" msgstr "Näytä tiedostohallinnassa" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2287 #, javascript-format msgid "Screenshot From %s" msgstr "Kuvakaappaus - %s" #. Translators: notification title. #: js/ui/screenshot.js:2333 msgid "Screenshot captured" msgstr "Kuvakaappaus otettu" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2335 msgid "You can paste the image from the clipboard." msgstr "Voit liittää kuvan leikepöydältä." #: js/ui/screenshot.js:2391 js/ui/screenshot.js:2555 msgid "Screenshot taken" msgstr "Kuvakaappaus otettu" #: js/ui/search.js:829 msgid "Searching…" msgstr "Etsitään…" #: js/ui/search.js:831 msgid "No results" msgstr "Ei tuloksia" #: js/ui/search.js:962 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "%d lisää" msgstr[1] "%d lisää" #: js/ui/searchController.js:87 #: subprojects/extensions-app/data/ui/extensions-window.ui:73 msgid "Search" msgstr "Haku" #: js/ui/shellEntry.js:21 msgid "Copy" msgstr "Kopioi" #: js/ui/shellEntry.js:26 msgid "Paste" msgstr "Liitä" #: js/ui/shellEntry.js:78 msgid "Show Text" msgstr "Näytä teksti" #: js/ui/shellEntry.js:80 msgid "Hide Text" msgstr "Piilota teksti" #: js/ui/shellEntry.js:174 msgid "Caps lock is on" msgstr "Caps Lock on päällä" #: js/ui/shellMountOperation.js:286 msgid "Hidden Volume" msgstr "Piilotettu taltio" #: js/ui/shellMountOperation.js:289 msgid "Windows System Volume" msgstr "Windows-järjestelmätaltio" #: js/ui/shellMountOperation.js:292 msgid "Uses Keyfiles" msgstr "Käyttää avaintiedostoja" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:300 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead" msgstr "Avataksesi avaintiedostoja käyttävän taltion, käytä %s" #: js/ui/shellMountOperation.js:304 msgid "" "You need an external utility like Disks to unlock a volume that uses " "keyfiles" msgstr "" "Tarvitset erillisen sovelluksen, kuten Levyt, avataksesi " "avaintiedostoja käyttävän taltion" #: js/ui/shellMountOperation.js:312 msgid "PIM Number" msgstr "PIM-numero" #: js/ui/shellMountOperation.js:371 msgid "Remember Password" msgstr "Muista salasana" #: js/ui/shellMountOperation.js:386 msgid "Unlock" msgstr "Avaa lukitus" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:400 #, javascript-format msgid "Open %s" msgstr "Avaa %s" #: js/ui/shellMountOperation.js:436 msgid "The PIM must be a number or empty" msgstr "PIM tulee olla numeerinen tai tyhjä" #: js/ui/status/accessibility.js:34 msgid "Accessibility" msgstr "Esteettömyys" #: js/ui/status/accessibility.js:44 msgid "High Contrast" msgstr "Korkea kontrasti" #: js/ui/status/accessibility.js:47 msgid "Zoom" msgstr "Lähennys" #: js/ui/status/accessibility.js:54 msgid "Screen Reader" msgstr "Näytönlukija" #: js/ui/status/accessibility.js:58 msgid "Screen Keyboard" msgstr "Näyttönäppäimistö" #: js/ui/status/accessibility.js:62 msgid "Visual Alerts" msgstr "Visuaaliset hälytykset" #: js/ui/status/accessibility.js:66 msgid "Sticky Keys" msgstr "Pohjaan jäävät näppäimet" #: js/ui/status/accessibility.js:70 msgid "Slow Keys" msgstr "Hitaat näppäimet" #: js/ui/status/accessibility.js:74 msgid "Bounce Keys" msgstr "Kimmonäppäimet" #: js/ui/status/accessibility.js:78 msgid "Mouse Keys" msgstr "Hiirinäppäimet" #: js/ui/status/accessibility.js:83 msgid "Accessibility Settings" msgstr "Esteettömyyden asetukset" #: js/ui/status/accessibility.js:140 msgid "Large Text" msgstr "Suuri tekstin koko" #: js/ui/status/autoRotate.js:14 msgid "Auto Rotate" msgstr "Automaattinen kääntö" #: js/ui/status/backgroundApps.js:156 msgctxt "title" msgid "Background Apps" msgstr "Taustasovellukset" #: js/ui/status/backgroundApps.js:171 msgid "Apps known to be running without a window" msgstr "Sovellukset, joiden tiedetään olevan käynnissä ilman ikkunaa" #: js/ui/status/backgroundApps.js:182 msgid "App Settings" msgstr "Sovelluksen asetukset" #: js/ui/status/backgroundApps.js:239 msgid "No Background Apps" msgstr "Ei taustasovelluksia" #: js/ui/status/backgroundApps.js:241 #, javascript-format msgid "%d Background App" msgid_plural "%d Background Apps" msgstr[0] "%d taustasovellus" msgstr[1] "%d taustasovellusta" #: js/ui/status/backlight.js:39 msgid "Keyboard Brightness" msgstr "Näppäimistön kirkkaus" #: js/ui/status/backlight.js:79 msgid "Off" msgstr "Pois" #: js/ui/status/backlight.js:80 msgid "Low" msgstr "Matala" #: js/ui/status/backlight.js:81 msgid "High" msgstr "Korkea" #: js/ui/status/backlight.js:147 js/ui/status/keyboard.js:879 msgid "Keyboard" msgstr "Näppäimistö" #: js/ui/status/bluetooth.js:245 js/ui/status/network.js:360 msgid "Disconnect" msgstr "Katkaise yhteys" #: js/ui/status/bluetooth.js:262 js/ui/status/bluetooth.js:264 msgid "Bluetooth" msgstr "Bluetooth" #: js/ui/status/bluetooth.js:287 js/ui/status/network.js:1900 msgid "Bluetooth Settings" msgstr "Bluetooth-asetukset" #: js/ui/status/bluetooth.js:334 msgid "No available or connected devices" msgstr "Ei käytettävissä olevia tai yhdistettyjä laitteita" #: js/ui/status/bluetooth.js:335 msgid "Turn on Bluetooth to connect to devices" msgstr "Kytke Bluetooth päälle yhdistääksesi laitteisiin" #. Translators: This is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:389 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d yhdistetty" msgstr[1] "%d yhdistetty" #: js/ui/status/brightness.js:32 msgid "Brightness" msgstr "Kirkkaus" #: js/ui/status/darkMode.js:12 msgid "Dark Style" msgstr "Tumma tyyli" #: js/ui/status/dwellClick.js:15 msgid "Single Click" msgstr "Kertanapsautus" #: js/ui/status/dwellClick.js:20 msgid "Double Click" msgstr "Kaksoisnapsautus" #: js/ui/status/dwellClick.js:25 msgid "Drag" msgstr "Vedä" #: js/ui/status/dwellClick.js:30 msgid "Secondary Click" msgstr "Toissijainen napsautus" #: js/ui/status/dwellClick.js:39 msgid "Dwell Click" msgstr "Napsautus kohdistamalla" #: js/ui/status/keyboard.js:896 msgid "Show Keyboard Layout" msgstr "Näytä näppäimistön asettelu" #: js/ui/status/location.js:337 msgid "Allow location access" msgstr "Salli sijainnin käyttö" #. Translators: %s is an application name #: js/ui/status/location.js:339 #, javascript-format msgid "The app %s wants to access your location" msgstr "%s haluaa käyttää sijaintitietoasi" #: js/ui/status/location.js:349 msgid "Location access can be changed at any time from the privacy settings" msgstr "" "Sijaintitiedon käyttöoikeuksia voi muuttaa milloin tahansa " "yksityisyysasetuksista" #: js/ui/status/location.js:357 msgid "Deny Access" msgstr "Estä pääsy" #: js/ui/status/location.js:362 msgid "Grant Access" msgstr "Salli pääsy" #: js/ui/status/network.js:62 msgid "" msgstr "" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:354 #, javascript-format msgid "Disconnect %s" msgstr "Katkaise yhteys kohteeseen %s" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:356 #, javascript-format msgid "Connect to %s" msgstr "Yhdistä kohteeseen %s" #: js/ui/status/network.js:1050 msgid "Secure" msgstr "Turvallinen" #: js/ui/status/network.js:1050 msgid "Not secure" msgstr "Ei turvallinen" #: js/ui/status/network.js:1051 #, javascript-format msgid "Signal strength %s%%" msgstr "Signaalin vahvuus %s%%" #. translators: The first placeholder is the network name, the second and indication whether it is secure, and the last the signal strength indication #: js/ui/status/network.js:1053 #, javascript-format msgid "%s, %s, %s" msgstr "%s, %s, %s" #. Translators: %s is a network identifier #: js/ui/status/network.js:1155 #, javascript-format msgid "%s Hotspot" msgstr "%s - Yhteyspiste" #: js/ui/status/network.js:1426 #, javascript-format msgid "%d connected" msgid_plural "%d connected" msgstr[0] "%d yhdistetty" msgstr[1] "%d yhdistetty" #: js/ui/status/network.js:1524 js/ui/status/network.js:1540 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1525 msgid "VPN Settings" msgstr "VPN-asetukset" #: js/ui/status/network.js:1785 msgid "Wi–Fi" msgstr "Wi-Fi" #: js/ui/status/network.js:1787 msgid "All Networks" msgstr "Kaikki verkot" #: js/ui/status/network.js:1884 msgid "Wired Connections" msgstr "Kiinteät yhteydet" #: js/ui/status/network.js:1885 msgid "Wired Settings" msgstr "Kiinteän yhteyden asetukset" #: js/ui/status/network.js:1899 msgid "Bluetooth Tethers" msgstr "Bluetoothilla jaetut yhteydet" #. Translators: "Tether" from "Bluetooth Tether" #: js/ui/status/network.js:1906 msgid "Tether" msgstr "Tether" #: js/ui/status/network.js:1919 msgid "Mobile Connections" msgstr "Mobiiliyhteydet" #: js/ui/status/network.js:1921 msgid "Mobile Broadband Settings" msgstr "Mobiililaajakaistan asetukset" #. Translators: "Mobile" from "Mobile Broadband" #: js/ui/status/network.js:1930 msgid "Mobile" msgstr "Mobiili" #: js/ui/status/network.js:1964 #| msgid "Wi-Fi Networks" msgid "Sign Into Wi–Fi Network" msgstr "Kirjaudu Wi–Fi-verkkoon" #: js/ui/status/network.js:2151 msgid "Connection failed" msgstr "Yhteys epäonnistui" #: js/ui/status/network.js:2152 msgid "Activation of network connection failed" msgstr "Verkkoyhteyden aktivointi epäonnistui" #: js/ui/status/nightLight.js:19 msgid "Night Light" msgstr "Yövalo" #: js/ui/status/powerProfiles.js:19 msgctxt "Power profile" msgid "Performance" msgstr "Suorituskyky" #: js/ui/status/powerProfiles.js:24 msgctxt "Power profile" msgid "Balanced" msgstr "Tasapainotettu" #: js/ui/status/powerProfiles.js:29 msgctxt "Power profile" msgid "Power Saver" msgstr "Virransäästö" #: js/ui/status/powerProfiles.js:39 js/ui/status/powerProfiles.js:69 msgid "Power Mode" msgstr "Tehotila" #: js/ui/status/powerProfiles.js:71 msgid "Power Settings" msgstr "Virranhallinta" #: js/ui/status/remoteAccess.js:74 msgid "Stop Screencast" msgstr "Pysäytä näyttötallennevideo" #: js/ui/status/remoteAccess.js:144 msgid "Stop Screen Sharing" msgstr "Lopeta näytön jakaminen" #: js/ui/status/rfkill.js:99 msgid "Airplane Mode" msgstr "Lentokonetila" #: js/ui/status/system.js:168 msgid "Power Off Menu" msgstr "Sammutusvalikko" #: js/ui/status/system.js:176 msgid "Suspend" msgstr "Valmiustila" #: js/ui/status/system.js:181 msgid "Restart…" msgstr "Käynnistä uudelleen…" #: js/ui/status/system.js:186 msgid "Power Off…" msgstr "Sammuta…" #: js/ui/status/system.js:193 #: subprojects/extensions-app/data/ui/extensions-window.ui:124 msgid "Log Out…" msgstr "Kirjaudu ulos…" #: js/ui/status/system.js:198 msgid "Switch User…" msgstr "Vaihda käyttäjää…" #: js/ui/status/system.js:242 msgctxt "action" msgid "Lock Screen" msgstr "Lukitse näyttö" #: js/ui/status/thunderbolt.js:308 msgid "Unknown Thunderbolt device" msgstr "Tuntematon Thunderbolt-laite" #: js/ui/status/thunderbolt.js:309 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" "Uusi laite havaittiin, kun olit pois. Katkaise laitteen yhteys ja yhdistä se " "uudelleen, jotta voit aloittaa sen käyttämisen." #: js/ui/status/thunderbolt.js:312 msgid "Unauthorized Thunderbolt device" msgstr "Thunderbolt-laite ilman valtuutusta" #: js/ui/status/thunderbolt.js:313 msgid "" "New device has been detected and needs to be authorized by an administrator" msgstr "Uusi laite on havaittu. Se tulee valtuuttaa ylläpitäjän toimesta" #: js/ui/status/thunderbolt.js:319 msgid "Thunderbolt authorization error" msgstr "Thunderbolt-valtuutusvirhe" #: js/ui/status/thunderbolt.js:320 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "Thunderbolt-laitetta ei voitu valtuuttaa: %s" #: js/ui/status/volume.js:218 msgid "Volume changed" msgstr "Äänenvoimakkuutta muutettu" #: js/ui/status/volume.js:231 msgid "Unmute" msgstr "Palauta ääni" #: js/ui/status/volume.js:231 msgid "Mute" msgstr "Vaimenna" #: js/ui/status/volume.js:286 msgid "Volume" msgstr "Äänenvoimakkuus" #: js/ui/status/volume.js:302 msgid "Sound Output" msgstr "Äänen ulostulo" #: js/ui/status/volume.js:374 msgid "Sound Input" msgstr "Äänen sisääntulo" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:20 msgid "Mirror" msgstr "Peili" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:29 msgid "Join Displays" msgstr "Liitä näytöt" #. Translators: this is for using only external displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:39 msgid "External Only" msgstr "Vain ulkoinen" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:47 msgid "Built-in Only" msgstr "Vain sisäinen" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:378 msgid "%A %B %-d" msgstr "%A, %-e. %Bta" #: js/ui/unlockDialog.js:384 msgid "Swipe up to unlock" msgstr "Vedä ylös avataksesi lukituksen" #: js/ui/unlockDialog.js:385 msgid "Click or press a key to unlock" msgstr "Napsauta tai paina näppäintä avataksesi lukituksen" #: js/ui/unlockDialog.js:568 msgid "Unlock Window" msgstr "Lukituksen avausikkuna" #: js/ui/unlockDialog.js:577 msgid "Log in as another user" msgstr "Kirjaudu toisena käyttäjänä" #: js/ui/welcomeDialog.js:47 #, javascript-format msgid "GNOME %s" msgstr "Gnome %s" #: js/ui/welcomeDialog.js:51 #, javascript-format msgid "Welcome to %s" msgstr "Tervetuloa, tämä on %s" #: js/ui/welcomeDialog.js:52 msgid "If you want to learn your way around, check out the tour" msgstr "Lähde tutustumiskierrokselle oppiaksesi oleelliset asiat" #: js/ui/welcomeDialog.js:61 msgid "Skip" msgstr "Ohita" #: js/ui/welcomeDialog.js:66 msgid "Take Tour" msgstr "Aloita tutustumiskierros" #: js/ui/windowAttentionHandler.js:18 #, javascript-format msgid "“%s” is ready" msgstr "“%s” on valmis" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:68 msgid "Keep these display settings?" msgstr "Haluatko säilyttää nämä näyttöasetukset?" #: js/ui/windowManager.js:78 msgid "Revert Settings" msgstr "Palauta asetukset" #: js/ui/windowManager.js:83 msgid "Keep Changes" msgstr "Säilytä muutokset" #: js/ui/windowManager.js:103 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "Asetusmuutokset palautetaan %d sekunnissa" msgstr[1] "Asetusmuutokset palautetaan %d sekunnissa" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:500 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:40 msgid "Hide" msgstr "Piilota" #: js/ui/windowMenu.js:47 msgid "Restore" msgstr "Palauta" #: js/ui/windowMenu.js:51 msgid "Maximize" msgstr "Suurenna" #: js/ui/windowMenu.js:58 msgid "Move" msgstr "Siirrä" #: js/ui/windowMenu.js:78 msgid "Resize" msgstr "Muuta kokoa" #: js/ui/windowMenu.js:98 msgid "Always on Top" msgstr "Aina päällimmäisenä" #: js/ui/windowMenu.js:117 msgid "Always on Visible Workspace" msgstr "Aina näkyvissä olevassa työtilassa" #: js/ui/windowMenu.js:131 msgid "Move to Workspace Left" msgstr "Siirrä vasemmalla olevaan työtilaan" #: js/ui/windowMenu.js:137 msgid "Move to Workspace Right" msgstr "Siirrä oikealla olevaan työtilaan" #: js/ui/windowMenu.js:143 msgid "Move to Workspace Up" msgstr "Siirrä ylempänä olevaan työtilaan" #: js/ui/windowMenu.js:149 msgid "Move to Workspace Down" msgstr "Siirrä alempana olevaan työtilaan" #: js/ui/windowMenu.js:167 msgid "Move to Monitor Up" msgstr "Siirrä ylempänä olevaan näyttöön" #: js/ui/windowMenu.js:176 msgid "Move to Monitor Down" msgstr "Siirrä alempana olevaan näyttöön" #: js/ui/windowMenu.js:185 msgid "Move to Monitor Left" msgstr "Siirrä vasemmalla olevaan näyttöön" #: js/ui/windowMenu.js:194 msgid "Move to Monitor Right" msgstr "Siirrä oikealla olevaan näyttöön" #: js/ui/windowMenu.js:202 msgid "Close" msgstr "Sulje" #: src/main.c:529 subprojects/extensions-tool/src/main.c:336 msgid "Print version" msgstr "Tulosta versio" #: src/main.c:535 msgid "Mode used by GDM for login screen" msgstr "GDM:n kirjautumisruudussa käyttämä tila" #: src/main.c:541 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "Käytä tiettyä tilaa (esim. “gdm”) kirjautumisnäkymää varten" #: src/main.c:547 msgid "List possible modes" msgstr "Listaa mahdolliset tilat" #: src/main.c:553 msgid "Force animations to be enabled" msgstr "Pakota animaatiot käyttöön" #: src/shell-app.c:252 msgctxt "program" msgid "Unknown" msgstr "Tuntematon" #: src/shell-app.c:503 #, c-format msgid "Failed to launch “%s”" msgstr "Sovelluksen “%s” käynnistäminen epäonnistui" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match" msgstr "Salasanat eivät täsmää" #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "Salasana ei voi olla tyhjä" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "Käyttäjä poistui tunnistautumisvalintaikkunasta" #: src/st/st-icon-theme.c:1865 #, c-format msgid "Icon '%s' not present in theme %s" msgstr "Kuvaketta '%s' ei ole teemassa %s" #: src/st/st-icon-theme.c:3454 src/st/st-icon-theme.c:3757 msgid "Failed to load icon" msgstr "Kuvakkeen lataaminen epäonnistui" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 msgid "Manage your GNOME Extensions" msgstr "Hallitse Gnome-laajennuksia" #. developer_name tag deprecated with Appstream 1.0 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:19 msgid "The GNOME Project" msgstr "Gnome-projekti" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:51 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" "Gnomen laajennussovellus Laajennukset käsittelee laajennusten päivitykset, " "niiden asetukset ja sen avulla voi poistaa laajennuksia käytöstä tai " "kokonaan järjestelmästä." #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:64 msgid "Main Window" msgstr "Pääikkuna" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:68 msgid "Available Updates" msgstr "Saatavilla olevat päivitykset" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:72 msgid "Search View" msgstr "Hakunäkymä" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "Hallitse Gnome Shell -laajennuksia" #: subprojects/extensions-app/js/extensionManager.js:237 #, javascript-format msgid "" "The installed version of this extension (%s) is incompatible with the " "current version of GNOME (%s). The extension has been disabled." msgstr "" "Asennettu versio laajennuksesta (%s) ei ole yhteensopiva nykyisen Gnome-" "version (%s) kanssa. Tämä laajennus on poistettu käytöstä." #: subprojects/extensions-app/js/extensionManager.js:238 #, javascript-format msgid "" "The installed version of this extension is incompatible with the current " "version of GNOME (%s). The extension has been disabled." msgstr "" "Tämän laajennuksen asennettu versio ei ole yhteensopiva nykyisen Gnome-" "version (%s) kanssa. Tämä laajennus on poistettu käytöstä." #: subprojects/extensions-app/js/extensionManager.js:242 msgid "" "An error has occurred in this extension. This could cause issues elsewhere " "in the system. It is recommended to turn the extension off until the error " "is resolved." msgstr "" "Tässä laajennuksessa tapahtui virhe. Tämä saattaa aiheuttaa ongelmia muualla " "järjestelmässä. On suositeltavaa poistaa tämä laajennus käytöstä, kunnes " "virhe on selvitetty." #. translators: Details for an extension error #: subprojects/extensions-app/js/extensionManager.js:248 msgid "Error details:" msgstr "Virheen tiedot:" #: subprojects/extensions-app/js/extensionRow.js:82 #, javascript-format msgid "Version %s" msgstr "Versio %s" #: subprojects/extensions-app/js/extensionsWindow.js:113 #, javascript-format msgid "Remove “%s”?" msgstr "Poista “%s”?" #: subprojects/extensions-app/js/extensionsWindow.js:114 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "" "Ota huomioon jos poistat laajennuksen; sinun tulee palata ja ladata se " "uudelleen, jos haluat sen uudelleen käyttöön" #: subprojects/extensions-app/js/extensionsWindow.js:117 msgid "_Cancel" msgstr "_Peru" #: subprojects/extensions-app/js/extensionsWindow.js:118 msgid "_Remove" msgstr "P_oista" #: subprojects/extensions-app/js/extensionsWindow.js:158 msgid "translator-credits" msgstr "Jiri Grönroos" #: subprojects/extensions-app/js/extensionsWindow.js:203 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "%d laajennus päivitetään seuraavan kerran, kun kirjaudut sisään." msgstr[1] "%d laajennusta päivitetään seuraavan kerran, kun kirjaudut sisään." #: subprojects/extensions-app/data/ui/extension-row.ui:22 msgid "Error Details" msgstr "Virheen tiedot" #: subprojects/extensions-app/data/ui/extension-row.ui:62 msgid "Updates Details" msgstr "Päivityksen tiedot" #: subprojects/extensions-app/data/ui/extension-row.ui:72 msgid "" "A new version of this extension is ready and will be loaded on next login." msgstr "" "Uusi versio tästä laajennuksessa on valmis ja se ladataan seuraavan kerran, " "kun kirjaudut sisään." #: subprojects/extensions-app/data/ui/extension-row.ui:104 msgid "Extension Details" msgstr "Laajennuksen tiedot" #: subprojects/extensions-app/data/ui/extension-row.ui:192 msgid "_Website" msgstr "_Verkkosivusto" #: subprojects/extensions-app/data/ui/extension-row.ui:219 msgid "_Settings" msgstr "_Asetukset" #: subprojects/extensions-app/data/ui/extension-row.ui:246 msgid "_Remove…" msgstr "_Poista…" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Keyboard Shortcuts" msgstr "Pikanäppäimet" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "Tietoja - Laajennukset" #: subprojects/extensions-app/data/ui/extensions-window.ui:64 msgid "Main Menu" msgstr "Päävalikko" #: subprojects/extensions-app/data/ui/extensions-window.ui:106 msgid "Search extensions" msgstr "Etsi laajennuksia" #: subprojects/extensions-app/data/ui/extensions-window.ui:134 msgid "_Extensions" msgstr "_Laajennukset" #: subprojects/extensions-app/data/ui/extensions-window.ui:139 msgid "More Information" msgstr "Lisätietoja" #: subprojects/extensions-app/data/ui/extensions-window.ui:151 msgid "" "Extensions can cause performance and stability issues. It is recommended to " "disable all extensions if you experience problems with your system." msgstr "" "Laajennukset voivat aiheuttaa suorituskyky- tai vakausongelmia. Poista " "kaikki laajennukset käytöstä, jos kohtaat ongelmia järjestelmän kanssa." #: subprojects/extensions-app/data/ui/extensions-window.ui:178 msgid "User Extensions" msgstr "Käyttäjälaajennukset" #: subprojects/extensions-app/data/ui/extensions-window.ui:198 msgid "System Extensions" msgstr "Järjestelmälaajennukset" #: subprojects/extensions-app/data/ui/extensions-window.ui:233 msgid "Search Results" msgstr "Hakutulokset" #: subprojects/extensions-app/data/ui/extensions-window.ui:252 msgid "No Results Found" msgstr "Tuloksia ei löytynyt" #: subprojects/extensions-app/data/ui/extensions-window.ui:253 msgid "Try a different search" msgstr "Kokeile eri hakuehtoja" #: subprojects/extensions-app/data/ui/extensions-window.ui:264 msgid "No Installed Extensions" msgstr "Ei asennettuja laajennuksia" #: subprojects/extensions-app/data/ui/extensions-window.ui:265 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" "Etsi ja asenna laajennuksia osoitteessa extensions.gnome.org." #: subprojects/extensions-app/data/ui/extensions-window.ui:276 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" "Valitettavasti asennettujen laajennusten listaa ei voitu muodostaa. Varmista " "että olet kirjautunut Gnomeen ja yritä uudelleen." #: subprojects/extensions-app/data/ui/help-overlay.ui:9 msgctxt "shortcut window" msgid "General" msgstr "Yleiset" #: subprojects/extensions-app/data/ui/help-overlay.ui:12 msgctxt "shortcut window" msgid "Open Menu" msgstr "Avaa valikko" #: subprojects/extensions-app/data/ui/help-overlay.ui:18 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Haku päälle/pois" #: subprojects/extensions-app/data/ui/help-overlay.ui:24 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Näytä pikanäppäimet" #: subprojects/extensions-app/data/ui/help-overlay.ui:30 msgctxt "shortcut window" msgid "Quit" msgstr "Lopeta" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:284 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "Uusi laajennus luotiin polkuun %s.\n" #: subprojects/extensions-tool/src/command-create.c:376 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" "Nimen tulisi olla erittäin lyhyt, mieluiten kuvaava, merkkijono.\n" "Esimerkkejä: %s" #: subprojects/extensions-tool/src/command-create.c:382 #: subprojects/extensions-tool/src/main.c:243 msgid "Name" msgstr "Nimi" #: subprojects/extensions-tool/src/command-create.c:396 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" "Kuvaus on yhden lauseen selvitys laajennuksen käyttötarkoituksesta.\n" "Esimerkkejä: %s" #: subprojects/extensions-tool/src/command-create.c:402 #: subprojects/extensions-tool/src/main.c:246 msgid "Description" msgstr "Kuvaus" #: subprojects/extensions-tool/src/command-create.c:416 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" "UUID on yksilöllinen tunniste laajennukselle.\n" "Tämän tulee olla sähköpostiosoitteen muodossa (clicktofocus@janedoe.example." "com)\n" #: subprojects/extensions-tool/src/command-create.c:443 msgid "Choose one of the available templates:\n" msgstr "Valitse yksi mallipohjista:\n" #: subprojects/extensions-tool/src/command-create.c:457 msgid "Template" msgstr "Mallipohja" #: subprojects/extensions-tool/src/command-create.c:515 msgid "The unique identifier of the new extension" msgstr "Yksilöllinen tunniste uudelle laajennukselle" #: subprojects/extensions-tool/src/command-create.c:518 msgid "NAME" msgstr "NIMI" #: subprojects/extensions-tool/src/command-create.c:519 msgid "The user-visible name of the new extension" msgstr "Uuden laajennuksen käyttäjälle näkyvä nimi" #: subprojects/extensions-tool/src/command-create.c:521 msgid "DESCRIPTION" msgstr "KUVAUS" #: subprojects/extensions-tool/src/command-create.c:523 msgid "A short description of what the extension does" msgstr "Lyhyt kuvaus siitä, mitä laajennus tekee" #: subprojects/extensions-tool/src/command-create.c:525 #: subprojects/extensions-tool/src/command-pack.c:455 msgid "DOMAIN" msgstr "DOMAIN" #: subprojects/extensions-tool/src/command-create.c:527 msgid "The gettext domain used by the extension" msgstr "Laajennuksen käyttämä gettext-domain" #: subprojects/extensions-tool/src/command-create.c:529 #: subprojects/extensions-tool/src/command-pack.c:448 msgid "SCHEMA" msgstr "SKEEMA" #: subprojects/extensions-tool/src/command-create.c:531 msgid "The GSettings schema used by the extension" msgstr "Laajennuksen käyttämä GSettings-skeema" #: subprojects/extensions-tool/src/command-create.c:534 msgid "TEMPLATE" msgstr "MALLIPOHJA" #: subprojects/extensions-tool/src/command-create.c:535 msgid "The template to use for the new extension" msgstr "Mallipohja uudelle laajennukselle" #: subprojects/extensions-tool/src/command-create.c:538 msgid "Include prefs.js template" msgstr "Sisällytä prefs.js-mallipohja" #: subprojects/extensions-tool/src/command-create.c:544 msgid "Enter extension information interactively" msgstr "Kirjoita laajennuksen tiedot vuorovaikutteisesti" #: subprojects/extensions-tool/src/command-create.c:552 msgid "Create a new extension" msgstr "Luo uusi laajennus" #: subprojects/extensions-tool/src/command-create.c:570 #: subprojects/extensions-tool/src/command-list.c:190 msgid "Unknown arguments" msgstr "Tuntemattomat argumentit" #: subprojects/extensions-tool/src/command-create.c:595 msgid "UUID, name and description are required" msgstr "UUID, nimi ja kuvaus ovat pakollisia tietoja" #: subprojects/extensions-tool/src/command-disable.c:62 #: subprojects/extensions-tool/src/command-enable.c:62 #, c-format msgid "Extension “%s” does not exist\n" msgstr "Laajennusta “%s” ei ole olemassa\n" #: subprojects/extensions-tool/src/command-disable.c:98 msgid "Disable an extension" msgstr "Poista laajennus käytöstä" #: subprojects/extensions-tool/src/command-disable.c:116 #: subprojects/extensions-tool/src/command-enable.c:116 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "UUID:tä ei annettu" #: subprojects/extensions-tool/src/command-disable.c:121 #: subprojects/extensions-tool/src/command-enable.c:121 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "Enemmän kuin yksi UUID annettu" #: subprojects/extensions-tool/src/command-enable.c:98 msgid "Enable an extension" msgstr "Ota laajennus käyttöön" #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:66 #: subprojects/extensions-tool/src/main.c:150 msgid "Failed to connect to GNOME Shell\n" msgstr "Gnome Shelliin yhdistäminen epäonnistui\n" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:159 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "Laajennusta “%s” ei ole olemassa\n" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "Näytä laajennuksen tiedot" #: subprojects/extensions-tool/src/command-install.c:190 msgid "Overwrite an existing extension" msgstr "Korvaa olemassa oleva laajennus" #: subprojects/extensions-tool/src/command-install.c:192 msgid "EXTENSION_BUNDLE" msgstr "EXTENSION_BUNDLE" #: subprojects/extensions-tool/src/command-install.c:201 msgid "Install an extension bundle" msgstr "Asenna laajennuspaketti" #: subprojects/extensions-tool/src/command-install.c:219 msgid "No extension bundle specified" msgstr "Laajennuspakettia ei määritetty" #: subprojects/extensions-tool/src/command-install.c:225 msgid "More than one extension bundle specified" msgstr "Enemmän kuin yksi laajennuspaketti määritetty" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show user-installed extensions" msgstr "Näytä käyttäjän asentamat laajennukset" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show system-installed extensions" msgstr "Näytä järjestelmän asentamat laajennukset" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Show enabled extensions" msgstr "Näytä käytössä olevat laajennukset" #: subprojects/extensions-tool/src/command-list.c:149 msgid "Show disabled extensions" msgstr "Näytä käytöstä poistetut laajennukset" #: subprojects/extensions-tool/src/command-list.c:152 msgid "Show extensions in active state" msgstr "Näytä aktiivisessa tilassa olevat laajennukset" #: subprojects/extensions-tool/src/command-list.c:155 msgid "Show extensions in inactive state" msgstr "Näytä passiivisessa tilassa olevat laajennukset" #: subprojects/extensions-tool/src/command-list.c:158 msgid "Show extensions with preferences" msgstr "Näytä laajennukset, joilla on asetuksia" #: subprojects/extensions-tool/src/command-list.c:161 msgid "Show extensions with updates" msgstr "Näytä laajennukset, joihin on päivityksiä" #: subprojects/extensions-tool/src/command-list.c:164 msgid "Print extension details" msgstr "Tulosta laajennuksen tiedot" #: subprojects/extensions-tool/src/command-list.c:172 msgid "List installed extensions" msgstr "Listaa asennetut laajennukset" #: subprojects/extensions-tool/src/command-pack.c:444 msgid "FILE" msgstr "TIEDOSTO" #: subprojects/extensions-tool/src/command-pack.c:445 msgid "Additional source to include in the bundle" msgstr "Lisälähde pakettiin sisällytettäväksi" #: subprojects/extensions-tool/src/command-pack.c:449 msgid "A GSettings schema that should be included" msgstr "Sisällytettävä GSettings-skeema" #: subprojects/extensions-tool/src/command-pack.c:451 #: subprojects/extensions-tool/src/command-pack.c:462 msgid "DIRECTORY" msgstr "KANSIO" #: subprojects/extensions-tool/src/command-pack.c:453 msgid "The directory where translations are found" msgstr "Kansio, jossa kielikäännökset ovat" #: subprojects/extensions-tool/src/command-pack.c:457 msgid "The gettext domain to use for translations" msgstr "Kielikäännöksiin käytettävä gettext-domain" #: subprojects/extensions-tool/src/command-pack.c:460 msgid "Overwrite an existing pack" msgstr "Korvaa olemassa oleva paketti" #: subprojects/extensions-tool/src/command-pack.c:464 msgid "The directory where the pack should be created" msgstr "Kansio, johon paketti luodaan" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "SOURCE_DIRECTORY" msgstr "SOURCE_DIRECTORY" #: subprojects/extensions-tool/src/command-pack.c:475 msgid "Create an extension bundle" msgstr "Luo laajennuspaketti" #: subprojects/extensions-tool/src/command-pack.c:495 msgid "More than one source directory specified" msgstr "Enemmän kuin yksi lähdekansio määritetty" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "Laajennuksella “%s” ei ole asetuksia\n" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "Laajennuksen “%s” asetusten avaaminen epäonnistui: %s\n" #: subprojects/extensions-tool/src/command-prefs.c:87 msgid "Opens extension preferences" msgstr "Avaa laajennuksen asetukset" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "Nollaa laajennus" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "Järjestelmän laajennuksia ei voi poistaa\n" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "Ei voitu poistaa “%s”\n" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "Poista laajennus" #: subprojects/extensions-tool/src/main.c:76 msgid "Do not print error messages" msgstr "Älä tulosta virheviestejä" #: subprojects/extensions-tool/src/main.c:249 msgid "Path" msgstr "Polku" #: subprojects/extensions-tool/src/main.c:252 msgid "URL" msgstr "URL-osoite" #: subprojects/extensions-tool/src/main.c:255 msgid "Original author" msgstr "Alkuperäinen tekijä" #: subprojects/extensions-tool/src/main.c:261 #: subprojects/extensions-tool/src/main.c:263 #: subprojects/extensions-tool/src/main.c:265 msgid "Version" msgstr "Versio" #: subprojects/extensions-tool/src/main.c:268 msgid "Enabled" msgstr "Käytössä" #: subprojects/extensions-tool/src/main.c:268 msgid "Yes" msgstr "Kyllä" #: subprojects/extensions-tool/src/main.c:268 msgid "No" msgstr "Ei" #: subprojects/extensions-tool/src/main.c:271 msgid "State" msgstr "Tila" #: subprojects/extensions-tool/src/main.c:309 msgid "“version” takes no arguments" msgstr "“version” ei kelpuuta argumentteja" #: subprojects/extensions-tool/src/main.c:311 #: subprojects/extensions-tool/src/main.c:331 msgid "Usage:" msgstr "Käyttö:" #: subprojects/extensions-tool/src/main.c:314 msgid "Print version information and exit." msgstr "Tulosta versiotiedot ja poistu." #: subprojects/extensions-tool/src/main.c:329 #: subprojects/extensions-tool/src/main.c:332 msgid "COMMAND" msgstr "KOMENTO" #: subprojects/extensions-tool/src/main.c:332 msgid "[ARGS…]" msgstr "[ARGS…]" #: subprojects/extensions-tool/src/main.c:334 msgid "Commands:" msgstr "Komennot:" #: subprojects/extensions-tool/src/main.c:335 msgid "Print help" msgstr "Tulosta ohje" #: subprojects/extensions-tool/src/main.c:337 msgid "Enable extension" msgstr "Ota laajennus käyttöön" #: subprojects/extensions-tool/src/main.c:338 msgid "Disable extension" msgstr "Poista laajennus käytöstä" #: subprojects/extensions-tool/src/main.c:339 msgid "Reset extension" msgstr "Nollaa laajennus" #: subprojects/extensions-tool/src/main.c:340 msgid "Uninstall extension" msgstr "Poista laajennus" #: subprojects/extensions-tool/src/main.c:341 msgid "List extensions" msgstr "Listaa laajennukset" #: subprojects/extensions-tool/src/main.c:342 #: subprojects/extensions-tool/src/main.c:343 msgid "Show extension info" msgstr "Näytä laajennuksen tiedot" #: subprojects/extensions-tool/src/main.c:344 msgid "Open extension preferences" msgstr "Avaa laajennuksen asetukset" #: subprojects/extensions-tool/src/main.c:345 msgid "Create extension" msgstr "Luo laajennus" #: subprojects/extensions-tool/src/main.c:346 msgid "Package extension" msgstr "Paketoi laajennus" #: subprojects/extensions-tool/src/main.c:347 msgid "Install extension bundle" msgstr "Asenna laajennuspaketti" #: subprojects/extensions-tool/src/main.c:349 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "Suorita “%s” nähdäksesi yksityiskohtaisia ohjeita.\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "Yksinkertainen" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "Tyhjä laajennus" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "Ilmaisin" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "Lisää kuvake yläpalkkiin" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:4 msgid "Quick Settings Item" msgstr "Pika-asetusten kohde" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:5 msgid "Add an item to quick settings" msgstr "Lisää kohde pika-asetuksiin" #. translators: #. * The device has been disabled #: subprojects/gvc/gvc-mixer-control.c:1872 msgid "Disabled" msgstr "Ei käytössä" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1879 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u ulostulo" msgstr[1] "%u ulostuloa" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1889 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u sisääntulo" msgstr[1] "%u sisääntuloa" #: subprojects/gvc/gvc-mixer-control.c:2872 msgid "System Sounds" msgstr "Järjestelmän äänet" #~ msgid "Move Titlebar Onscreen" #~ msgstr "Siirrä ikkunapalkki näytölle" #, javascript-format #~ msgid "Try to login again to start a session for user %s." #~ msgstr "" #~ "Yritä kirjautua uudelleen aloittaaksesi uuden istunnon käyttäjänä %s." #, javascript-format #~ msgid "%s is now known as %s" #~ msgstr "%s on nyt nimeltään %s" #~ msgid "Network Manager" #~ msgstr "Verkon hallinta" #~ msgid "Disabling" #~ msgstr "Poistetaan käytöstä" #~ msgid "Enabling" #~ msgstr "Otetaan käyttöön" #, javascript-format #~ msgid "%d %%" #~ msgstr "%d %%" #~ msgid "Thunderbolt" #~ msgstr "Thunderbolt" #~ msgid "No Thanks" #~ msgstr "Ei kiitos" #~ msgid "No Matches" #~ msgstr "Ei tuloksia" #~ msgid "The extension had an error" #~ msgstr "Laajennuksessa ilmeni virhe" #~ msgid "The extension can be updated" #~ msgstr "Laajennus on päivitettävissä" #~ msgid "Help" #~ msgstr "Tuki" #~ msgid "Manually Installed" #~ msgstr "Manuaalisesti asennettu" #~ msgid "Built-In" #~ msgstr "Sisäänrakennettu" #~ msgid "Extension Updates Ready" #~ msgstr "Laajennuspäivitykset valmiina" #~ msgid "Screenshot / Screencast" #~ msgstr "Kuvakaappaus / näyttötallennevideo" #~ msgid "Power Profiles" #~ msgstr "Virtaprofiilit" #~ msgid "Attach modal dialog to the parent window" #~ msgstr "Kiinnitä modaali-ikkuna isäntäikkunaan" #~ msgid "" #~ "This key overrides the key in org.gnome.mutter when running GNOME Shell." #~ msgstr "" #~ "Tämä avain syrjäyttää avaimen org.gnome.mutter Gnome Shelliä käyttäessä." #~ msgid "Enable edge tiling when dropping windows on screen edges" #~ msgstr "Käytä reunakiinnitystä tiputtaessa ikkunoita näytön reunoille" #~ msgid "Workspaces are managed dynamically" #~ msgstr "Työtilojen hallinta on dynaamista" #~ msgid "Workspaces only on primary monitor" #~ msgstr "Työtilat ainoastaan ensisijaisella näytöllä" #~ msgid "Delay focus changes in mouse mode until the pointer stops moving" #~ msgstr "" #~ "Viivästytä kohdistuksen vaihtumista hiiritilassa, kunnes osoitin lopettaa " #~ "liikkumisen" #~ msgid "Region & Language Settings" #~ msgstr "Kielen & alueen asetukset" #~ msgid "Applications" #~ msgstr "Sovellukset" #, javascript-format #~ msgid "Unable to start %s" #~ msgstr "Sovelluksen %s käynnistäminen ei onnistunut" #, javascript-format #~ msgid "Couldn’t find the %s application" #~ msgstr "Sovellusta %s ei löytynyt" #~ msgid "Evolution Calendar" #~ msgstr "Evolution-kalenteri" #~ msgid "Log Out" #~ msgstr "Kirjaudu ulos" #~ msgid "Bluetooth On" #~ msgstr "Bluetooth päällä" #~ msgid "Bluetooth Off" #~ msgstr "Bluetooth pois" #~ msgid "Location In Use" #~ msgstr "Sijainti käytössä" #~ msgid "Location Disabled" #~ msgstr "Sijainti pois käytöstä" #, javascript-format #~ msgid "%s Off" #~ msgstr "%s pois" #, javascript-format #~ msgid "%s Connected" #~ msgstr "%s - Yhdistetty" #, javascript-format #~ msgid "%s Unmanaged" #~ msgstr "%s - Ei hallinnassa" #, javascript-format #~ msgid "%s Connecting" #~ msgstr "%s - Yhdistetään" #, javascript-format #~ msgid "%s Requires Authentication" #~ msgstr "%s vaatii tunnistautumisen" #, javascript-format #~ msgid "Firmware Missing For %s" #~ msgstr "%s - Laiteohjelmisto puuttuu" #, javascript-format #~ msgid "%s Unavailable" #~ msgstr "%s - Ei saatavilla" #, javascript-format #~ msgid "%s Connection Failed" #~ msgstr "%s - Yhteys epäonnistui" #, javascript-format #~ msgid "%s Hardware Disabled" #~ msgstr "%s - Laite poistettu käytöstä" #, javascript-format #~ msgid "%s Disabled" #~ msgstr "%s - Poistettu käytöstä" #~ msgid "Connect to Internet" #~ msgstr "Yhdistä internetiin" #~ msgid "Airplane Mode is On" #~ msgstr "Lentokonetila on päällä" #~ msgid "Wi-Fi is disabled when airplane mode is on." #~ msgstr "Wifi on pois päältä lentokonetilan ollessa päällä." #~ msgid "Turn Off Airplane Mode" #~ msgstr "Käytä lentokonetilaa" #~ msgid "Wi-Fi is Off" #~ msgstr "Wifi on pois" #~ msgid "Wi-Fi needs to be turned on in order to connect to a network." #~ msgstr "Wifin tulee olla päällä, jotta yhteys verkkoon on mahdollinen." #~ msgid "Turn On Wi-Fi" #~ msgstr "Ota wifi käyttöön" #~ msgid "Select a network" #~ msgstr "Valitse verkko" #~ msgid "Use hardware switch to turn off" #~ msgstr "Käytä laitepainiketta sammuttaaksesi" #~ msgid "Select Network" #~ msgstr "Valitse verkko" #~ msgid "Wi-Fi Settings" #~ msgstr "Wifin asetukset" #, javascript-format #~ msgid "%s Not Connected" #~ msgstr "%s - Ei yhdistetty" #~ msgid "connecting…" #~ msgstr "yhdistetään…" #~ msgid "authentication required" #~ msgstr "tunnistautuminen vaaditaan" #~ msgid "connection failed" #~ msgstr "yhteys katkesi" #~ msgid "VPN Off" #~ msgstr "VPN pois" #~ msgid "Network Settings" #~ msgstr "Verkkoasetukset" #, javascript-format #~ msgid "%s Wi-Fi Connection" #~ msgid_plural "%s Wi-Fi Connections" #~ msgstr[0] "%s wifi-yhteys" #~ msgstr[1] "%s wifi-yhteyttä" #~ msgid "Night Light Disabled" #~ msgstr "Yövalo pois käytöstä" #~ msgid "Resume" #~ msgstr "Palauta" #~ msgid "Disable Until Tomorrow" #~ msgstr "Poista käytöstä huomiseen asti" #~ msgid "Fully Charged" #~ msgstr "Ladattu täyteen" #~ msgid "Not Charging" #~ msgstr "Ei lataudu" #~ msgid "Estimating…" #~ msgstr "Arvioidaan…" #, javascript-format #~ msgid "%d∶%02d Remaining (%d %%)" #~ msgstr "%d∶%02d jäljellä (%d %%)" #, javascript-format #~ msgid "%d∶%02d Until Full (%d %%)" #~ msgstr "%d∶%02d kunnes täynnä (%d %%)" #~ msgid "Screen is Being Shared" #~ msgstr "Näyttö jaetaan" #~ msgid "Turn off" #~ msgstr "Sammuta" #~ msgid "Airplane Mode On" #~ msgstr "Lentokonetila on päällä" #~ msgid "Lock" #~ msgstr "Lukitse" #~ msgid "Power Off / Log Out" #~ msgstr "Sammuta / Kirjaudu ulos" #~ msgid "Remove from Favorites" #~ msgstr "Poista suosikeista" #~ msgid "Add to Favorites" #~ msgstr "Lisää suosikkeihin" #~ msgid "Author" #~ msgstr "Tekijä" #~ msgid "Warning" #~ msgstr "Varoitus" #~ msgid "" #~ "Extensions can cause system issues, including performance problems. If " #~ "you encounter problems with your system, it is recommended to disable all " #~ "extensions." #~ msgstr "" #~ "Laajennukset voivat aiheuttaa ongelmia järjestelmässä, myös " #~ "suorituskykyyn. Jos kohtaat ongelmia järjestelmän kanssa, on " #~ "suositeltavaa poistaa kaikki laajennukset käytöstä." #~ msgid "Failed to connect to GNOME Shell" #~ msgstr "Gnome Shelliin yhdistäminen epäonnistui" #~ msgid "Enable introspection API" #~ msgstr "Käytä introspektiivistä API:a" #~ msgid "" #~ "Enables a D-Bus API that allows to introspect the application state of " #~ "the shell." #~ msgstr "" #~ "Ottaa käyttöön D-Bus-rajapinnan, joka mahdollistaa shellin sovellustilan " #~ "itsetutkiskelun." #~ msgid "Minimize" #~ msgstr "Pienennä" #~ msgid "Unmaximize" #~ msgstr "Palauta koko" #~ msgid "App Picker View" #~ msgstr "Sovellusvalitsimen näkymä" #~ msgid "Index of the currently selected view in the application picker." #~ msgstr "Parhaillaan valitun näkymän indeksi sovellusvalitsimessa." #~ msgid "Frequently used applications will appear here" #~ msgstr "Usein käytetyt sovellukset ilmestyvät tänne" #~ msgid "Frequent" #~ msgstr "Käytetyimmät" #~ msgid "All" #~ msgstr "Kaikki" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d" #~ msgstr "%A, %-d. %Bta" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d, %Y" #~ msgstr "%A, %-d. %Bta %Y" #~ msgid "On" #~ msgstr "Päällä" #~ msgid "Copy Error" #~ msgstr "Kopiointivirhe" #~ msgid "Username…" #~ msgstr "Käyttäjänimi…" #~ msgid "Password: " #~ msgstr "Salasana: " #~ msgid "Enter Password…" #~ msgstr "Kirjoita salasana…" #~ msgid "Next" #~ msgstr "Seuraava" #~ msgctxt "button" #~ msgid "Sign In" #~ msgstr "Kirjaudu sisään" #~ msgid "%A, %B %d" #~ msgstr "%A, %e. %Bta" #~ msgid "%d new message" #~ msgid_plural "%d new messages" #~ msgstr[0] "%d uusi viesti" #~ msgstr[1] "%d uutta viestiä" #~ msgid "Browse in Software" #~ msgstr "Selaa ohjelmistokeskuksessa" #~ msgctxt "search-result" #~ msgid "Lock Orientation" #~ msgstr "Lukitse näytön kierto" #~ msgid "Password:" #~ msgstr "Salasana:" #~ msgid "Type again:" #~ msgstr "Uudelleen:" #~ msgid "Authentication required by wireless network" #~ msgstr "Langaton verkko vaatii tunnistautumisen" #~ msgid "Mobile broadband network password" #~ msgstr "Mobiililaajakaistan verkkosalasana" #~ msgid "Rename" #~ msgstr "Nimeä uudelleen" #~ msgid "Account Settings" #~ msgstr "Tilin asetukset" #~ msgid "Orientation Lock" #~ msgstr "Kiertolukitus" #~ msgid "Which keyboard to use" #~ msgstr "Mitä näppäimistöä käytetään" #~ msgid "The type of keyboard to use." #~ msgstr "Käytettävän näppäimistön tyyppi." #~ msgid "network-workgroup" #~ msgstr "network-workgroup" #~ msgid "toggle-switch-us" #~ msgstr "toggle-switch-intl" #~ msgid "There was an error loading the preferences dialog for %s:" #~ msgstr "Kohteen %s asetusikkunaa ladataessa tapahtui virhe:" #~ msgid "%s all day." #~ msgstr "%s koko päivän." #~ msgid "%s, then %s later." #~ msgstr "%s. %s myöhemmin." #~ msgid "%s, then %s, followed by %s later." #~ msgstr "%s. Sen jälkeen %s. Myöhemmin %s." #~ msgid "Feels like %s." #~ msgstr "Tuntuu kuin %s." #~| msgid "Log Out" #~ msgctxt "search-result" #~ msgid "Log out" #~ msgstr "Kirjaudu ulos" #~| msgid "Switch User" #~ msgctxt "search-result" #~ msgid "Switch user" #~ msgstr "Vaihda käyttäjää" #~ msgid "Hide tray" #~ msgstr "Piilota palkki" #~ msgid "Status Icons" #~ msgstr "Tilakuvakkeet" #~ msgid "Events" #~ msgstr "Tapahtumat" #~ msgid "Media" #~ msgstr "Media" #~ msgid "%d x %d" #~ msgstr "%d x %d" #~ msgid "Web Authentication Redirect" #~ msgstr "Verkkotunnistautumisen uudelleenohjaus" #~ msgid "Show the week date in the calendar" #~ msgstr "Näytä viikonpäivä kalenterissa" #~ msgid "If true, display the ISO week date in the calendar." #~ msgstr "Jos tosi, näytä ISO-viikonpäivät kalenterissa." #~ msgid "Use as Internet connection" #~ msgstr "Käytä internetyhteytenä" #~ msgid "GNOME Shell (wayland compositor)" #~ msgstr "Gnome Shell (Wayland-komposiointi)" #~ msgid "%d Connected Device" #~ msgid_plural "%d Connected Devices" #~ msgstr[0] "%d yhdistetty laite" #~ msgstr[1] "%d yhdistettyä laitetta" #~ msgid "UPS" #~ msgstr "UPS" #~ msgid "Battery" #~ msgstr "Akku" #~ msgid "Show the message tray" #~ msgstr "Näytä viestialue" #~ msgctxt "event list time" #~ msgid "%H∶%M" #~ msgstr "%H∶%M" #~ msgctxt "event list time" #~ msgid "%l∶%M %p" #~ msgstr "%l∶%M %p" #~ msgctxt "list sunday" #~ msgid "Su" #~ msgstr "su" #~ msgctxt "list monday" #~ msgid "M" #~ msgstr "ma" #~ msgctxt "list tuesday" #~ msgid "T" #~ msgstr "ti" #~ msgctxt "list wednesday" #~ msgid "W" #~ msgstr "ke" #~ msgctxt "list thursday" #~ msgid "Th" #~ msgstr "to" #~ msgctxt "list friday" #~ msgid "F" #~ msgstr "pe" #~ msgctxt "list saturday" #~ msgid "S" #~ msgstr "la" #~ msgid "Nothing Scheduled" #~ msgstr "Ei merkintöjä" #~ msgid "This week" #~ msgstr "Tällä viikolla" #~ msgid "Next week" #~ msgstr "Ensi viikolla" #~ msgid "Removable Devices" #~ msgstr "Irrotettavat laitteet" #~ msgid "Eject" #~ msgstr "Poista asemasta" #~ msgid "Invitation" #~ msgstr "Kutsu" #~ msgid "Call" #~ msgstr "Soita" #~ msgid "File Transfer" #~ msgstr "Tiedostonsiirto" #~ msgid "Chat" #~ msgstr "Keskustelu" #~ msgid "Invitation to %s" #~ msgstr "Kutsu huoneeseen %s" #~ msgid "%s is inviting you to join %s" #~ msgstr "%s kutsuu sinut huoneeseen %s" #~ msgid "Decline" #~ msgstr "Kieltäydy" #~ msgid "Accept" #~ msgstr "Hyväksy" #~ msgid "Video call from %s" #~ msgstr "Videopuhelu käyttäjältä %s" #~ msgid "Call from %s" #~ msgstr "Puhelu käyttäjältä %s" #~ msgid "Answer" #~ msgstr "Vastaa" #~ msgid "%s is sending you %s" #~ msgstr "%s on lähettämässä sinulle tiedostoa %s" #~ msgid "%s would like permission to see when you are online" #~ msgstr "%s haluaisi saada luvan nähdä, milloin olet linjoilla" #~ msgid "Authentication failed" #~ msgstr "Tunnistautuminen epäonnistui" #~ msgid "Encryption error" #~ msgstr "Salausvirhe" #~ msgid "Certificate not provided" #~ msgstr "Varmennetta ei annettu" #~ msgid "Certificate untrusted" #~ msgstr "Varmenteeseen ei luoteta" #~ msgid "Certificate expired" #~ msgstr "Varmenne on vanhentunut" #~ msgid "Certificate not activated" #~ msgstr "Varmennetta ei ole aktivoitu" #~ msgid "Certificate hostname mismatch" #~ msgstr "Varmenteen konenimiristiriita" #~ msgid "Certificate fingerprint mismatch" #~ msgstr "Varmenteen sormenjälkiristiriita" #~ msgid "Certificate self-signed" #~ msgstr "Varmenne on itseallekirjoitettu" #~ msgid "Status is set to offline" #~ msgstr "Tilaksi on asetettu ”poissa linjoilta”" #~ msgid "Certificate is invalid" #~ msgstr "Varmenne ei kelpaa" #~ msgid "Connection has been refused" #~ msgstr "Yhteys on evätty" #~ msgid "Connection can't be established" #~ msgstr "Yhteyttä ei voida muodostaa" #~ msgid "Connection has been lost" #~ msgstr "Yhteys on katkennut" #~ msgid "This account is already connected to the server" #~ msgstr "Tämä tili on jo yhteydessä palvelimeen" #~ msgid "" #~ "Connection has been replaced by a new connection using the same resource" #~ msgstr "Yhteys on korvattu uudella samaa resurssia käyttävällä yhteydellä" #~ msgid "The account already exists on the server" #~ msgstr "Tili on jo olemassa palvelimella" #~ msgid "Server is currently too busy to handle the connection" #~ msgstr "Palvelin on tällä hetkellä liian kiireinen käsittelemään yhteyttä" #~ msgid "Certificate has been revoked" #~ msgstr "Varmenne on kumottu" #~ msgid "" #~ "Certificate uses an insecure cipher algorithm or is cryptographically weak" #~ msgstr "Varmenne käyttää turvatonta salausmenetelmää" #~ msgid "" #~ "The length of the server certificate, or the depth of the server " #~ "certificate chain, exceed the limits imposed by the cryptography library" #~ msgstr "" #~ "Palvelinvarmenne tai palvelinvarmenneketju on liian pitkä " #~ "salauskirjastolle" #~ msgid "Internal error" #~ msgstr "Sisäinen virhe" #~ msgid "View account" #~ msgstr "Näytä tili" #~ msgid "Date & Time Settings" #~ msgstr "Ajan & päiväyksen asetukset" #~ msgid "Open" #~ msgstr "Avaa" #~ msgid "Clear Messages" #~ msgstr "Tyhjennä viestit" #~ msgid "Notification Settings" #~ msgstr "Ilmoitusasetukset" #~ msgid "No Messages" #~ msgstr "Ei viestejä" #~ msgid "Message Tray" #~ msgstr "Viestialue" #~ msgid "The maximum accuracy level of location." #~ msgstr "Sijainnin suurin tarkkuustaso." #~ msgid "Arrangement of buttons on the titlebar" #~ msgstr "Painikkeiden järjestys otsikkopalkissa" #~ msgid "" #~ "This key overrides the key in org.gnome.desktop.wm.preferences when " #~ "running GNOME Shell." #~ msgstr "" #~ "Tämä avain syrjäyttää avaimen org.gnome.desktop.wm.preferences Gnome " #~ "Shelliä käyttäessä." #~ msgid "Select an extension to configure using the combobox above." #~ msgstr "Valitse muokattava laajennus alta." #~ msgid "unavailable" #~ msgstr "ei käytettävissä" #~ msgid "List of categories that should be displayed as folders" #~ msgstr "Luettelo luokista, jotka tulee esittää kansioina" #~ msgid "%A, %H:%M" #~ msgstr "%A, %H:%M" #~ msgid "%B %d, %H:%M" #~ msgstr "%e. %Bta, %H:%M" #~ msgid "%B %d %Y, %H:%M " #~ msgstr "%e. %Bta %Y, %H:%M " #~ msgid "Authorization request from %s" #~ msgstr "Valtuutuspyyntö kohteesta %s" #~ msgid "Device %s wants to pair with this computer" #~ msgstr "Laite %s haluaa muodostaa parituksen tämän tietokoneen kanssa" #~ msgid "Device %s wants access to the service '%s'" #~ msgstr "Laite %s pyytää pääsyä palveluun %s" #~ msgid "Grant this time only" #~ msgstr "Salli vain tällä kerralla" #~ msgid "Reject" #~ msgstr "Hylkää" #~ msgid "Pairing confirmation for %s" #~ msgstr "Paritusvahvistus kohteelle %s" #~ msgid "" #~ "Please confirm whether the Passkey '%06d' matches the one on the device." #~ msgstr "Vahvista, täsmääkö koodi \"%06d\" laitteen koodin kanssa." #~ msgid "Does not match" #~ msgstr "Ei täsmää" #~ msgid "Pairing request for %s" #~ msgstr "Parituspyyntö kohteelle %s" #~ msgid "Please enter the PIN mentioned on the device." #~ msgstr "Kirjoita laitteella mainittu PIN-koodi." #~ msgid "OK" #~ msgstr "OK" #~ msgid "" #~ "Sorry, no wisdom for you today:\n" #~ "%s" #~ msgstr "" #~ "Ei viisauksia tälle päivälle:\n" #~ "%s" #~ msgid "%s the Oracle says" #~ msgstr "%s, sanoo oraakkeli" #~ msgctxt "event list time" #~ msgid "%H\\u2236%M" #~ msgstr "%H\\u2236%M" #~ msgctxt "event list time" #~ msgid "%l\\u2236%M\\u2009%p" #~ msgstr "%l\\u2236%M\\u2009%p" #~ msgid "Settings Menu" #~ msgstr "Asetusvalikko" #~ msgid "Whether to collect stats about applications usage" #~ msgstr "Kerätäänkö sovellusten käytöstä tilastoja" #~ msgid "" #~ "The shell normally monitors active applications in order to present the " #~ "most used ones (e.g. in launchers). While this data will be kept private, " #~ "you may want to disable this for privacy reasons. Please note that doing " #~ "so won't remove already saved data." #~ msgstr "" #~ "Ikkunanhallinta seuraa normaalisti aktiivisia sovelluksia, jotta eniten " #~ "käytetyt voidaan esittää (esim. käynnistimissä). Vaikka nämä tiedot " #~ "pysyvät yksityisinä, voit silti haluta ottaa ominaisuuden pois käytöstä " #~ "yksityisyyden vuoksi. Huomaa että pois kytkeminen ei poista aiemmin " #~ "tallennettuja tietoja." #~ msgid "Keybinding to toggle the screen recorder" #~ msgstr "" #~ "Kuvakaappausvideon nauhoitukseen/lopetukseen tarkoitettu pikanäppäin" #~ msgid "Keybinding to start/stop the builtin screen recorder." #~ msgstr "" #~ "Kuvakaappausvideon nauhoitukseen/lopetukseen tarkoitettu pikanäppäin." #~ msgid "Framerate used for recording screencasts." #~ msgstr "Kuvakaappausvideoiden kuvataajuus." #~ msgid "" #~ "The framerate of the resulting screencast recordered by GNOME Shell's " #~ "screencast recorder in frames-per-second." #~ msgstr "" #~ "Nauhoituksesta tuloksena saatavan kuvakaappausvideon kuvataajuus kun " #~ "käytössä on GNOMEn ikkunanhallinnan nauhoitin, kuvaa per sekunti." #~ msgid "The gstreamer pipeline used to encode the screencast" #~ msgstr "Gstreamer-liukuhihna jolla kuvakaappausvideot pakataan" #, fuzzy #~ msgid "" #~ "Sets the GStreamer pipeline used to encode recordings. It follows the " #~ "syntax used for gst-launch. The pipeline should have an unconnected sink " #~ "pad where the recorded video is recorded. It will normally have a " #~ "unconnected source pad; output from that pad will be written into the " #~ "output file. However the pipeline can also take care of its own output - " #~ "this might be used to send the output to an icecast server via shout2send " #~ "or similar. When unset or set to an empty value, the default pipeline " #~ "will be used. This is currently 'vp8enc min_quantizer=13 max_quantizer=13 " #~ "cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux' and records to " #~ "WEBM using the VP8 codec. %T is used as a placeholder for a guess at the " #~ "optimal thread count on the system." #~ msgstr "" #~ "Asettaa GStreamer-liukuhihnan, jota käytetään nauhoitusten pakkaamiseen. " #~ "Asetus noudattaa gst-launch-komennon syntaksia. Liukuhihnalla tulee olla " #~ "yhdistämätön viemärialusta, jonne nauhoitettu video syötetään. " #~ "Normaalisti sillä on yhdistämätön lähde, jonka tuloste kirjoitetaan " #~ "tulostetiedostoon. Liukuhihna voi kuitenkin huolehtia itse tulosteesta - " #~ "tätä voidaan käyttää vaikkapa lähettämään tuloste Icecast-palvelimelle " #~ "shout2send- tai vastaavalla komponentilla. Jos tätä ei aseteta tai arvona " #~ "on tyhjää, käytetään oletusliukuhihnaa. Oletusliukuhihna on tällä " #~ "hetkellä ”videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! " #~ "webmmux” ja nauhoittaa WEBM-muotoon VP8-koodekilla. %T korvautuu " #~ "arvauksella parhaan suorituskyvyn antavasta säiemäärästä järjestelmässä." #~ msgid "File extension used for storing the screencast" #~ msgstr "Tiedostopääte kuvakaappausvideoiden tallentamiseen" #~ msgid "" #~ "The filename for recorded screencasts will be a unique filename based on " #~ "the current date, and use this extension. It should be changed when " #~ "recording to a different container format." #~ msgstr "" #~ "Nauhoitetuille kuvakaappausvideoille valitaan yksikäsitteinen " #~ "tiedostonimi nykyisen päivämäärän ja tämän tiedostopäätteen mukaisesti. " #~ "Tiedostopääte tulisi vaihtaa mikäli nauhoitetaan eri tallennusmuotoon." #~| msgid "Session..." #~ msgid "Session…" #~ msgstr "Istunto…" #~| msgid "Power Off" #~ msgid "Power" #~ msgstr "Virta" #~ msgid "Click Log Out to quit these applications and log out of the system." #~ msgstr "" #~ "Napsauta Kirjaudu ulos poistuaksesi näistä sovelluksista ja " #~ "kirjautuaksesi ulos järjestelmästä." #~ msgid "Logging out of the system." #~ msgstr "Kirjaudutaan ulos järjestelmästä." #~ msgid "Click Power Off to quit these applications and power off the system." #~ msgstr "" #~ "Napsauta Sammuta poistuaksesi näistä sovelluksista ja sammuttaaksesi " #~ "järjestelmän." #~ msgid "Powering off the system." #~ msgstr "Sammutetaan järjestelmää" #~ msgid "Click Restart to quit these applications and restart the system." #~ msgstr "" #~ "Napsauta Käynnistä uudelleen poistuaksesi näistä sovelluksista ja " #~ "käynnistääksesi järjestelmän uudelleen." #~ msgid "Restarting the system." #~ msgstr "Käynnistetään järjestelmää uudelleen." #~ msgid "Universal Access Settings" #~ msgstr "Esteettömyysasetukset" #~ msgid "Visibility" #~ msgstr "Näkyvyys" #~| msgid "Set up a New Device..." #~ msgid "Set Up a New Device…" #~ msgstr "Asenna uusi laite…" #~| msgid "Send Files..." #~ msgid "Send Files…" #~ msgstr "Lähetä tiedostoja…" #~ msgid "Mouse Settings" #~ msgstr "Hiiren asetukset" #~ msgid "Volume, network, battery" #~ msgstr "Äänenvoimakkuus, verkko, akku" #~ msgid "disabled" #~ msgstr "ei käytössä" #~ msgid "cable unplugged" #~ msgstr "kaapeli ei kytketty" #~ msgid "More…" #~ msgstr "Lisää…" #~ msgid "Wired" #~ msgstr "Kiinteä" #~ msgid "Auto Ethernet" #~ msgstr "Automaattinen, kiinteä" #~ msgid "Auto broadband" #~ msgstr "Automaattinen, mobiililaajakaista" #~ msgid "Auto dial-up" #~ msgstr "Automaattinen, puhelinverkko" #~ msgid "Auto %s" #~ msgstr "Automaattinen: %s" #~ msgid "Auto bluetooth" #~ msgstr "Automaattinen: Bluetooth" #~ msgid "Auto wireless" #~ msgstr "Automaattinen: langaton" #~ msgid "Wi-Fi" #~ msgstr "Wi-Fi" #~ msgid "%d %s %d %s remaining" #~ msgstr "%d %s %d %s jäljellä" #~ msgid "hour" #~ msgid_plural "hours" #~ msgstr[0] "tunti" #~ msgstr[1] "tuntia" #~ msgid "minute" #~ msgid_plural "minutes" #~ msgstr[0] "minuutti" #~ msgstr[1] "minuuttia" #~| msgid "AC adapter" #~ msgid "AC Adapter" #~ msgstr "Virtalähde" #~| msgid "Laptop battery" #~ msgid "Laptop Battery" #~ msgstr "Kannettavan akku" #~ msgid "Monitor" #~ msgstr "Näyttö" #~ msgid "Mouse" #~ msgstr "Hiiri" #~ msgid "PDA" #~ msgstr "Kämmentietokone" #~| msgid "Cell phone" #~ msgid "Cell Phone" #~ msgstr "Matkapuhelin" #~| msgid "Media player" #~ msgid "Media Player" #~ msgstr "Mediasoitin" #~ msgid "Tablet" #~ msgstr "Taulutietokone" #~ msgid "Computer" #~ msgstr "Tietokone" #~ msgctxt "device" #~ msgid "Unknown" #~ msgstr "Tuntematon" #~ msgid "Busy" #~ msgstr "Kiireinen" #~ msgid "Invisible" #~ msgstr "Näkymätön" #~ msgid "Away" #~ msgstr "Poissa" #~ msgid "Idle" #~ msgstr "Jouten" #~ msgid "Your chat status will be set to busy" #~ msgstr "Pikaviestitilaksi asetetaan ”kiireinen”" #~ msgid "" #~ "Notifications are now disabled, including chat messages. Your online " #~ "status has been adjusted to let others know that you might not see their " #~ "messages." #~ msgstr "" #~ "Ilmoitukset, kuten keskusteluviestit, ovat nyt poissa käytöstä. " #~ "Pikaviestitilaasi on muutettu, jotta muut tietävät, että et ehkä näe " #~ "heidän viestejään." #~ msgid "Shutting down might cause them to lose unsaved work." #~ msgstr "" #~ "Sammuttaminen saattaa aiheuttaa muiden käyttäjien menettävän " #~ "tallentamattomia tietoja." #~ msgctxt "title" #~ msgid "Sign In" #~ msgstr "Kirjaudu sisään" #~ msgid "APPLICATIONS" #~ msgstr "SOVELLUKSET" #~ msgid "SETTINGS" #~ msgstr "ASETUKSET" #~ msgctxt "event list time" #~ msgid "%H:%M" #~ msgstr "%H.%M" #~ msgctxt "event list time" #~ msgid "%l:%M %p" #~ msgstr "%l.%M %p" #~ msgid "Subscription request" #~ msgstr "Tilauspyyntö" #~ msgid "Sent at %X on %A" #~ msgstr "Lähetetty %Ana kello %H.%M" #~ msgid "Sent on %A, %B %d, %Y" #~ msgstr "Lähetetty %Ana %d. %Bta %Y" #~ msgid "Connection to %s failed" #~ msgstr "Yhteys kohteeseen %s katkesi" #~ msgid "Reconnect" #~ msgstr "Yhdistä uudelleen" #~ msgid "tray" #~ msgstr "ilmoitusalue" #~ msgid "Browse Files..." #~ msgstr "Selaa tiedostoja…" #~ msgid "Error browsing device" #~ msgstr "Virhe selattaessa laitetta" #~ msgid "The requested device cannot be browsed, error is '%s'" #~ msgstr "Pyydettyä laitetta ei voida selata, virhe on ”%s”" #~ msgid "More..." #~ msgstr "Lisää…" #~ msgid "Wireless" #~ msgstr "Langaton" #~ msgid "VPN Connections" #~ msgstr "VPN-yhteydet" #~ msgid "System Settings" #~ msgstr "Järjestelmän asetukset" #~ msgid "Your favorite Easter Egg" #~ msgstr "Suosikkiyllätyksesi" #~ msgid "United Kingdom" #~ msgstr "Yhdistynyt kuningaskunta" #~ msgid "Default" #~ msgstr "Oletus" #~ msgid "disabled OpenSearch providers" #~ msgstr "käytöstä poistetut OpenSearch-tarjoajat" #~ msgid "Failed to unmount '%s'" #~ msgstr "Laitteen ”%s” irrottaminen epäonnistui" #~ msgid "Retry" #~ msgstr "Yritä uudelleen" #~ msgid "PLACES & DEVICES" #~ msgstr "SIJAINNIT JA LAITTEET" #~ msgid "%1$s: %2$s" #~ msgstr "%1$s: %2$s" #~ msgid "Show time with seconds" #~ msgstr "Näytä aika sekuntien kera" #~ msgid "If true, display seconds in time." #~ msgstr "Jos tosi, näytä sekunnit ajassa." #~ msgid "Show date in clock" #~ msgstr "Näytä päivämäärä kellossa" #~ msgid "If true, display date in the clock, in addition to time." #~ msgstr "Jos tosi, näytä päivämäärä kellossa ajan lisäksi." #~ msgid "CONTACTS" #~ msgstr "YHTEYSTIEDOT" #~ msgid "%a %b %e, %R:%S" #~ msgstr "%a %d.%m., %H.%M.%S" #~ msgid "%a %b %e, %R" #~ msgstr "%a %d.%m., %H.%M" #~ msgid "%a %R:%S" #~ msgstr "%a %H.%M.%S" #~ msgid "%a %R" #~ msgstr "%a %H.%M" #~ msgid "%a %b %e, %l:%M:%S %p" #~ msgstr "%a %d.%m., %I.%M.%S %p" #~ msgid "%a %l:%M:%S %p" #~ msgstr "%a %I.%M.%S %p" #~ msgid "%s is online." #~ msgstr "%s on linjoilla." #~ msgid "%s is offline." #~ msgstr "%s on poissa linjoilta." #~ msgid "%s is away." #~ msgstr "%s on poissa." #~ msgid "%s is busy." #~ msgstr "%s on kiireinen." #~ msgid "Hidden" #~ msgstr "Piilotettu" #~ msgid "Power Off..." #~ msgstr "Sammuta…" #~ msgid "Online Accounts" #~ msgstr "Verkkotilit" #~ msgid "Log Out..." #~ msgstr "Kirjaudu ulos…" 07070100000230000081A40000000000000000000000016712993F0001CC09000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/fr.po# French translations for gnome-shell package. # Copyright (C) 2009-2020 Listed translators # This file is distributed under the same license as the gnome-shell package. # # Mathieu Bridon , 2009. # Pablo Martin-Gomez , 2010. # Bruno Brouard , 2011-2012. # Cyril Arnaud , 2011. # Luc Guillemin , 2011. # Luc Pionchon , 2011. # Pierre Henry , 2012. # Mathieu Stumpf , 2013. # Alain Lojewski , 2014-2018. # Erwan Georget , 2016. # Julien Humbert , 2019. # Claude Paroz , 2010-2020. # Thibault Martin , 2020. # Guillaume Bernard , 2021-2024 # Charles Monzat , 2016-2022. # Alexandre Franke , 2012-2022. # Jean-Marc Tissières , 2023. # Irénée THIRION , 2022-2023. # Vincent Chatelain , 2024. # msgid "" msgstr "" "Project-Id-Version: gnome-shell master fr\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues/\n" "POT-Creation-Date: 2024-08-06 15:18+0000\n" "PO-Revision-Date: 2024-09-02 09:09+0200\n" "Last-Translator: Irénée Thirion \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: Poedit 3.4.4\n" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "Lanceurs" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate pinned app 1" msgstr "Activer l’application épinglée 1" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate pinned app 2" msgstr "Activer l’application épinglée 2" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate pinned app 3" msgstr "Activer l’application épinglée 3" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate pinned app 4" msgstr "Activer l’application épinglée 4" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate pinned app 5" msgstr "Activer l’application épinglée 5" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate pinned app 6" msgstr "Activer l’application épinglée 6" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate pinned app 7" msgstr "Activer l’application épinglée 7" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate pinned app 8" msgstr "Activer l’application épinglée 8" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate pinned app 9" msgstr "Activer l’application épinglée 9" #: data/50-gnome-shell-launchers.xml:46 msgid "Open new window of pinned app 1" msgstr "Ouvrir une nouvelle fenêtre de l’application épinglée 1" #: data/50-gnome-shell-launchers.xml:50 msgid "Open new window of pinned app 2" msgstr "Ouvrir une nouvelle fenêtre de l’application épinglée 2" #: data/50-gnome-shell-launchers.xml:54 msgid "Open new window of pinned app 3" msgstr "Ouvrir une nouvelle fenêtre de l’application épinglée 3" #: data/50-gnome-shell-launchers.xml:58 msgid "Open new window of pinned app 4" msgstr "Ouvrir une nouvelle fenêtre de l’application épinglée 4" #: data/50-gnome-shell-launchers.xml:62 msgid "Open new window of pinned app 5" msgstr "Ouvrir une nouvelle fenêtre de l’application épinglée 5" #: data/50-gnome-shell-launchers.xml:66 msgid "Open new window of pinned app 6" msgstr "Ouvrir une nouvelle fenêtre de l’application épinglée 6" #: data/50-gnome-shell-launchers.xml:70 msgid "Open new window of pinned app 7" msgstr "Ouvrir une nouvelle fenêtre de l’application épinglée 7" #: data/50-gnome-shell-launchers.xml:74 msgid "Open new window of pinned app 8" msgstr "Ouvrir une nouvelle fenêtre de l’application épinglée 8" #: data/50-gnome-shell-launchers.xml:78 msgid "Open new window of pinned app 9" msgstr "Ouvrir une nouvelle fenêtre de l’application épinglée 9" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2274 msgid "Screenshots" msgstr "Captures d’écran" #: data/50-gnome-shell-screenshots.xml:9 #: data/org.gnome.shell.gschema.xml.in:287 msgid "Take a screenshot interactively" msgstr "Effectuer une capture d’écran interactivement" #: data/50-gnome-shell-screenshots.xml:12 #: data/org.gnome.shell.gschema.xml.in:299 msgid "Take a screenshot" msgstr "Effectuer une capture d’écran" #: data/50-gnome-shell-screenshots.xml:15 #: data/org.gnome.shell.gschema.xml.in:295 msgid "Take a screenshot of a window" msgstr "Effectuer la capture d’écran d’une fenêtre" #: data/50-gnome-shell-screenshots.xml:18 #: data/org.gnome.shell.gschema.xml.in:291 msgid "Record a screencast interactively" msgstr "Enregistrer une capture vidéo interactivement" #: data/50-gnome-shell-system.xml:6 js/ui/messageTray.js:1298 msgid "System" msgstr "Système" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "Afficher la liste des notifications" #: data/50-gnome-shell-system.xml:12 msgid "Open the quick settings menu" msgstr "Ouvrir le menu des paramètres rapides" #: data/50-gnome-shell-system.xml:15 msgid "Focus the active notification" msgstr "Donner le focus à la notification active" #: data/50-gnome-shell-system.xml:18 msgid "Show the overview" msgstr "Afficher la vue d’ensemble" #: data/50-gnome-shell-system.xml:21 msgid "Show all apps" msgstr "Afficher toutes les applications" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "Shell de GNOME" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "Gestion des fenêtres et lancement des applications" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" "Activer les outils internes pour les développeurs et les testeurs depuis Alt-" "F2" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Autoriser l’accès aux outils internes de débogage et de surveillance grâce à " "la boîte de dialogue de lancement d’applications (Alt-F2)." #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "Identifiants UUID des extensions à activer" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "Les extensions Shell de GNOME ont une propriété UUID. Cette clé énumère les " "extensions qui doivent être chargées. Toute extension qui voudrait être " "chargée doit être ajoutée dans cette liste. Vous pouvez aussi manipuler " "cette liste avec les méthodes DBus EnableExtension et DisableExtension de " "org.gnome.Shell." #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "Identifiants UUID des extensions à désactiver de force" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" "Les extensions Shell de GNOME ont une propriété UUID. Cette clé énumère les " "extensions qui doivent être désactivées, même si elles sont chargées dans le " "mode actuel. Vous pouvez aussi manipuler cette liste avec les méthodes DBus " "EnableExtension et DisableExtension de org.gnome.Shell. Cette clé est " "prioritaire sur la clé « enabled-extensions »." #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "Désactiver les extensions utilisateur" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" "Désactiver l’ensemble des extensions activées par l’utilisateur sans " "affecter la propriété « enabled-extension »." #: data/org.gnome.shell.gschema.xml.in:45 msgid "Allow extension installation" msgstr "Autoriser l’installation d’extensions" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "Allow users to install extensions in their home folder. If disabled, the " "InstallRemoteExtension D-Bus method will fail, and extensions are only " "loaded from system directories on startup. It does not affect extensions " "that are already loaded, so a change only takes full effect on the next " "login." msgstr "" "Autoriser les utilisateurs à installer des extensions dans leur dossier " "personnel. Si désactivé, la méthode D-Bus InstallRemoteExtension échouera et " "les extensions seront uniquement chargées depuis les répertoires systèmes au " "démarrage. Cela n’affecte pas les extensions déjà chargées, alors changer ce " "paramètre ne prendra totalement effet qu’à la prochaine connexion." #: data/org.gnome.shell.gschema.xml.in:56 msgid "Disables the validation of extension version compatibility" msgstr "Désactive la vérification de compatibilité de version" #: data/org.gnome.shell.gschema.xml.in:57 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "Shell de GNOME charge uniquement les extensions annonçant leur gestion de la " "version en cours. Activer cette option désactive cette vérification et " "essaie de charger toutes les extensions, sans considérer les versions " "qu’elles annoncent prendre en charge." #: data/org.gnome.shell.gschema.xml.in:65 msgid "List of desktop file IDs for favorite applications" msgstr "" "Liste d’identifiants de fichiers desktop pour les applications favorites" #: data/org.gnome.shell.gschema.xml.in:66 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" "Les applications correspondant à ces identifiants sont affichées dans la " "zone des favoris." #: data/org.gnome.shell.gschema.xml.in:73 msgid "History for command (Alt-F2) dialog" msgstr "Historique de la boîte de dialogue des commandes (Alt-F2)" #. Translators: looking glass is a debugger and inspector tool, see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/docs/looking-glass.md #: data/org.gnome.shell.gschema.xml.in:78 msgid "History for the looking glass dialog" msgstr "Historique de la boîte de dialogue d’inspection" #: data/org.gnome.shell.gschema.xml.in:82 msgid "Always show the “Log Out” action in the system menu" msgstr "Toujours afficher l’action « Se déconnecter » dans le menu utilisateur" #: data/org.gnome.shell.gschema.xml.in:83 msgid "" "This key overrides the automatic hiding of the “Log out” action in the " "system menu for logged-in situations where there is a single, local, non-" "system user and only a single available session type (e.g. GNOME on Wayland)." msgstr "" "Cette clé affiche l’action « Se déconnecter » du menu utilisateur " "normalement cachée automatiquement dans le cas d’un utilisateur local non-" "système unique avec une seule session disponible (par ex. GNOME sur Wayland)." #: data/org.gnome.shell.gschema.xml.in:92 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "Se souvenir des mots de passe pour les montages des systèmes de fichiers " "chiffrés ou distants" #: data/org.gnome.shell.gschema.xml.in:93 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "Le shell demandera un mot de passe au montage d’un périphérique chiffré ou " "d’un système de fichiers distant. Si le mot de passe peut être enregistré " "pour une utilisation ultérieure, une case à cocher « Se souvenir du mot de " "passe » sera présente. Cette clé détermine l’état par défaut de cette case à " "cocher." #: data/org.gnome.shell.gschema.xml.in:102 msgid "The last selected non-default power profile" msgstr "Le dernier profil d’énergie hors défaut sélectionné" #: data/org.gnome.shell.gschema.xml.in:103 msgid "" "Some systems support more than two power profiles. In order to still support " "toggling between two profiles, this key records the last selected non-" "default profile." msgstr "" "Certains systèmes prennent en charge plus de deux profils d’énergie. Afin de " "continuer à prendre en charge la bascule entre deux profils, cette clé " "enregistre le dernier sélectionné en dehors de celui par défaut." #: data/org.gnome.shell.gschema.xml.in:111 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "" "La dernière version pour laquelle le dialogue « Bienvenue dans GNOME » s’est " "affichée" #: data/org.gnome.shell.gschema.xml.in:112 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can " "be used to effectively disable the dialog." msgstr "" "Cette clé détermine la version affichée dans le dialogue « Bienvenue dans " "GNOME ». Une chaîne vide représente la dernière version possible de GNOME et " "un nombre très élevé représentera des versions qui n’existent pas encore. Ce " "nombre très élevé peut être utilisé pour désactiver le dialogue." #: data/org.gnome.shell.gschema.xml.in:145 msgid "Layout of the app picker" msgstr "Disposition du sélecteur d’applications" #: data/org.gnome.shell.gschema.xml.in:146 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" msgstr "" "Disposition du sélecteur d’applications. Chaque entrée du tableau est une " "page. Les pages sont stockées dans l’ordre dans lequel elles apparaissent " "dans Shell de GNOME. Chaque page contient une paire « identifiant " "d’application » → « données ». Actuellement, les valeurs suivantes sont " "stockées comme « données » : • « position » : la position de l’icône de " "l’application sur la page" #: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:172 msgid "Keybinding to shift between overview states" msgstr "" "Combinaison de touches pour basculer entre les états de la vue d’ensemble" #: data/org.gnome.shell.gschema.xml.in:166 msgid "Keybinding to shift between session, window picker and app grid" msgstr "" "Combinaison de touches pour basculer entre la session, le sélecteur de " "fenêtre et la grille des applications" #: data/org.gnome.shell.gschema.xml.in:173 msgid "Keybinding to shift between app grid, window picker and session" msgstr "" "Combinaison de touches pour basculer entre la grille des applications, le " "sélecteur de fenêtre et la session" #: data/org.gnome.shell.gschema.xml.in:179 msgid "Keybinding to open the “Show Applications” view" msgstr "" "Combinaison de touches pour ouvrir la vue « Afficher les applications »" #: data/org.gnome.shell.gschema.xml.in:180 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "" "Combinaison de touches pour ouvrir la vue « Afficher les applications » de " "la vue d’ensemble des activités." #: data/org.gnome.shell.gschema.xml.in:187 msgid "Keybinding to open the overview" msgstr "Combinaison de touches pour ouvrir la vue d’ensemble" #: data/org.gnome.shell.gschema.xml.in:188 msgid "Keybinding to open the Activities Overview." msgstr "Combinaison de touches pour ouvrir la vue d’ensemble des activités." #: data/org.gnome.shell.gschema.xml.in:194 msgid "Keybinding to toggle the visibility of the notification list" msgstr "" "Combinaison de touches pour inverser la visibilité de la liste des " "notifications" #: data/org.gnome.shell.gschema.xml.in:195 msgid "Keybinding to toggle the visibility of the notification list." msgstr "" "Combinaison de touches pour inverser la visibilité de la liste des " "notifications." #: data/org.gnome.shell.gschema.xml.in:201 msgid "Keybinding to toggle the quick settings menu" msgstr "Combinaison de touches pour ouvrir le menu des paramètres rapides" #: data/org.gnome.shell.gschema.xml.in:202 msgid "Keybinding to toggle the quick settings menu." msgstr "Combinaison de touches pour ouvrir le menu des paramètres rapides." #: data/org.gnome.shell.gschema.xml.in:208 msgid "Keybinding to focus the active notification" msgstr "Combinaison de touches pour donner le focus à la notification active" #: data/org.gnome.shell.gschema.xml.in:209 msgid "Keybinding to focus the active notification." msgstr "Combinaison de touches pour donner le focus à la notification active." #: data/org.gnome.shell.gschema.xml.in:215 msgid "Switch to application 1" msgstr "Passer à l’application 1" #: data/org.gnome.shell.gschema.xml.in:219 msgid "Switch to application 2" msgstr "Passer à l’application 2" #: data/org.gnome.shell.gschema.xml.in:223 msgid "Switch to application 3" msgstr "Passer à l’application 3" #: data/org.gnome.shell.gschema.xml.in:227 msgid "Switch to application 4" msgstr "Passer à l’application 4" #: data/org.gnome.shell.gschema.xml.in:231 msgid "Switch to application 5" msgstr "Passer à l’application 5" #: data/org.gnome.shell.gschema.xml.in:235 msgid "Switch to application 6" msgstr "Passer à l’application 6" #: data/org.gnome.shell.gschema.xml.in:239 msgid "Switch to application 7" msgstr "Passer à l’application 7" #: data/org.gnome.shell.gschema.xml.in:243 msgid "Switch to application 8" msgstr "Passer à l’application 8" #: data/org.gnome.shell.gschema.xml.in:247 msgid "Switch to application 9" msgstr "Passer à l’application 9" #: data/org.gnome.shell.gschema.xml.in:251 msgid "Open a new instance of application 1" msgstr "Ouvrir une nouvelle instance de l’application 1" #: data/org.gnome.shell.gschema.xml.in:255 msgid "Open a new instance of application 2" msgstr "Ouvrir une nouvelle instance de l’application 2" #: data/org.gnome.shell.gschema.xml.in:259 msgid "Open a new instance of application 3" msgstr "Ouvrir une nouvelle instance de l’application 3" #: data/org.gnome.shell.gschema.xml.in:263 msgid "Open a new instance of application 4" msgstr "Ouvrir une nouvelle instance de l’application 4" #: data/org.gnome.shell.gschema.xml.in:267 msgid "Open a new instance of application 5" msgstr "Ouvrir une nouvelle instance de l’application 5" #: data/org.gnome.shell.gschema.xml.in:271 msgid "Open a new instance of application 6" msgstr "Ouvrir une nouvelle instance de l’application 6" #: data/org.gnome.shell.gschema.xml.in:275 msgid "Open a new instance of application 7" msgstr "Ouvrir une nouvelle instance de l’application 7" #: data/org.gnome.shell.gschema.xml.in:279 msgid "Open a new instance of application 8" msgstr "Ouvrir une nouvelle instance de l’application 8" #: data/org.gnome.shell.gschema.xml.in:283 msgid "Open a new instance of application 9" msgstr "Ouvrir une nouvelle instance de l’application 9" #: data/org.gnome.shell.gschema.xml.in:308 #: data/org.gnome.shell.gschema.xml.in:335 msgid "Limit switcher to current workspace." msgstr "Limite le sélecteur de fenêtres à l’espace de travail actuel." #: data/org.gnome.shell.gschema.xml.in:309 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "Si vrai, seules les applications ayant des fenêtres ouvertes sur l’espace de " "travail actuel sont affichées dans le sélecteur. Sinon, toutes les " "applications y sont incluses." #: data/org.gnome.shell.gschema.xml.in:326 msgid "The application icon mode." msgstr "Le type d’icône des applications." #: data/org.gnome.shell.gschema.xml.in:327 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-only” " "(shows only the application icon) or “both”." msgstr "" "Configure la façon dont les fenêtres sont affichées dans le sélecteur. Les " "choix possibles sont « thumbnail-only » (affiche une miniature de la " "fenêtre), « app-icon-only » (affiche uniquement l’icône de l’application), " "ou « both » (affiche les deux)." #: data/org.gnome.shell.gschema.xml.in:336 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "Si vrai, seules les fenêtres de l’espace de travail actuel sont affichées " "dans le sélecteur. Sinon, toutes les fenêtres y sont incluses." #: data/org.gnome.shell.gschema.xml.in:346 msgid "Locations" msgstr "Emplacements" #: data/org.gnome.shell.gschema.xml.in:347 msgid "The locations to show in world clocks" msgstr "Les emplacements à afficher dans les horloges mondiales" #: data/org.gnome.shell.gschema.xml.in:357 msgid "Automatic location" msgstr "Emplacement automatique" #: data/org.gnome.shell.gschema.xml.in:358 msgid "Whether to fetch the current location or not" msgstr "Indique s’il faut récupérer l’emplacement actuel ou non" #: data/org.gnome.shell.gschema.xml.in:365 msgid "Location" msgstr "Emplacement" #: data/org.gnome.shell.gschema.xml.in:366 msgid "The location for which to show a forecast" msgstr "L’emplacement pour lequel afficher les prévisions" #. Keep in sync with subprojects/extensions-app #: data/org.gnome.Shell.Extensions.desktop.in.in:5 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/data/ui/extensions-window.ui:57 msgid "Extensions" msgstr "Extensions" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "Identification réseau" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:275 msgid "Something’s gone wrong" msgstr "Quelque chose s’est mal passé" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" "Nous sommes désolés, mais il y a eu un problème : les paramètres de cette " "extension ne peuvent être affichés. Nous vous recommandons de signaler ce " "problème aux auteurs de l’extension." #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "Détails techniques" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "Site web" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 msgid "Visit extension homepage" msgstr "Visiter le site web de l’extension" #: js/gdm/authPrompt.js:151 js/gdm/loginDialog.js:465 #: js/ui/audioDeviceSelection.js:66 js/ui/components/networkAgent.js:113 #: js/ui/components/polkitAgent.js:144 js/ui/endSessionDialog.js:437 #: js/ui/extensionDownloader.js:276 js/ui/shellMountOperation.js:382 #: js/ui/shellMountOperation.js:392 msgid "Cancel" msgstr "Annuler" #: js/gdm/authPrompt.js:317 js/ui/components/networkAgent.js:213 #: js/ui/components/networkAgent.js:233 js/ui/components/networkAgent.js:265 #: js/ui/components/networkAgent.js:298 js/ui/components/networkAgent.js:337 #: js/ui/components/networkAgent.js:350 js/ui/components/polkitAgent.js:286 #: js/ui/shellMountOperation.js:332 msgid "Password" msgstr "Mot de passe" #: js/gdm/loginDialog.js:326 msgid "Choose Session" msgstr "Choisir une session" #. Translators: is running for #: js/gdm/loginDialog.js:423 #, javascript-format msgid "" "Remote login is not possible because a remote session is already running for " "%s. To login remotely, you must log out from the remote session or force " "stop it." msgstr "" "La connexion à distance est impossible, car une session à distance est déjà " "en cours pour %s. Pour vous connecter à distance, vous devez vous " "déconnecter de la session à distance ou forcer son arrêt." #. Translators: is running for #: js/gdm/loginDialog.js:426 #, javascript-format msgid "" "Login is not possible because a remote session is already running for %s. To " "login, you must log out from the remote session or force stop it." msgstr "" "La connexion est impossible, car une session à distance est déjà en cours " "pour %s. Pour vous connecter, vous devez vous déconnecter de la session à " "distance ou forcer son arrêt." #. Translators: is running for #: js/gdm/loginDialog.js:429 #, javascript-format msgid "" "Remote login is not possible because a local session is already running for " "%s. To login remotely, you must log out from the local session or force stop " "it." msgstr "" "La connexion à distance est impossible, car une session locale est déjà en " "cours pour %s. Pour vous connecter à distance, vous devez vous déconnecter " "de la session locale ou forcer son arrêt." #. Translators: is running for #: js/gdm/loginDialog.js:432 #, javascript-format msgid "" "Login is not possible because a session is already running for %s. To login, " "you must log out from the session or force stop it." msgstr "" "La connexion est impossible, car une session est déjà en cours pour %s. Pour " "vous connecter, vous devez vous déconnecter ou forcer son arrêt." #: js/gdm/loginDialog.js:441 msgid "Session Already Running" msgstr "Session déjà en cours d’utilisation" #: js/gdm/loginDialog.js:453 msgid "" "Force stopping will quit any running apps and processes, and could result in " "data loss" msgstr "" "Forcer l’arrêt terminera toutes les applications et processus en cours et " "pourrait mener à une perte de données" #: js/gdm/loginDialog.js:473 msgid "Force Stop" msgstr "Forcer l’arrêt" #: js/gdm/loginDialog.js:541 msgid "Not listed?" msgstr "Absent de la liste ?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:1009 #, javascript-format msgid "(e.g., user or %s)" msgstr "(par ex. utilisateur ou %s)" #: js/gdm/loginDialog.js:1014 js/ui/components/networkAgent.js:257 #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:326 msgid "Username" msgstr "Nom d’utilisateur" #: js/gdm/loginDialog.js:1080 msgid "Login Attempt Timed Out" msgstr "La tentative de connexion a expiré" #: js/gdm/loginDialog.js:1081 msgid "Login took too long, please try again" msgstr "La connexion a pris trop de temps, veuillez réessayer" #: js/gdm/loginDialog.js:1426 msgid "Login Window" msgstr "Fenêtre de connexion" #: js/gdm/util.js:496 msgid "Authentication error" msgstr "Erreur d’authentification" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:727 msgid "(or swipe finger across reader)" msgstr "(ou faites glisser le doigt à travers le lecteur)" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:732 msgid "(or place finger on reader)" msgstr "(ou placez le doigt sur le lecteur)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:91 msgctxt "search-result" msgid "Power Off" msgstr "Éteindre" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:94 msgid "power off;poweroff;shutdown;halt;stop" msgstr "éteindre;fermer;débrancher;arrêter;stop" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:99 msgctxt "search-result" msgid "Restart" msgstr "Redémarrer" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:102 msgid "reboot;restart;" msgstr "redémarrer;rallumer;reboot;" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:107 msgctxt "search-result" msgid "Lock Screen" msgstr "Verrouiller l’écran" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:110 msgid "lock screen" msgstr "verrouillage;verrouiller;écran;" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:115 msgctxt "search-result" msgid "Log Out" msgstr "Fermer la session" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:118 msgid "logout;log out;sign off" msgstr "fermer;session;déconnecter;" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:123 msgctxt "search-result" msgid "Suspend" msgstr "Mettre en veille" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:126 msgid "suspend;sleep" msgstr "mettre en veille;sommeil;" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:131 msgctxt "search-result" msgid "Switch User" msgstr "Changer d’utilisateur" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:134 msgid "switch user" msgstr "changer;utilisateur;" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:141 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "verrouillage;déverrouillage;orientation;écran;rotation" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:146 msgctxt "search-result" msgid "Take a Screenshot" msgstr "Effectuer une capture d’écran" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:149 msgid "screenshot;screencast;snip;capture;record" msgstr "capture d’écran;capture vidéo;couper;capturer;enregistrer" #: js/misc/systemActions.js:249 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "Déverrouiller la rotation de l’écran" #: js/misc/systemActions.js:250 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "Verrouiller la rotation de l’écran" #: js/misc/util.js:130 msgid "Command not found" msgstr "Commande non trouvée" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:170 msgid "Could not parse command:" msgstr "Impossible d’analyser la commande :" #: js/misc/util.js:178 #, javascript-format msgid "Execution of “%s” failed:" msgstr "Exécution de « %s » impossible :" #: js/misc/dateUtils.js:69 msgid "Just now" msgstr "À l’instant" #: js/misc/dateUtils.js:72 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "Il y a %d minute" msgstr[1] "Il y a %d minutes" #: js/misc/dateUtils.js:79 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "Il y a %d heure" msgstr[1] "Il y a %d heures" #: js/misc/dateUtils.js:85 js/ui/dateMenu.js:183 msgid "Yesterday" msgstr "Hier" #: js/misc/dateUtils.js:88 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "Il y a %d jour" msgstr[1] "Il y a %d jours" #: js/misc/dateUtils.js:95 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "Il y a %d semaine" msgstr[1] "Il y a %d semaines" #: js/misc/dateUtils.js:102 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "Il y a %d mois" msgstr[1] "Il y a %d mois" #: js/misc/dateUtils.js:108 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "Il y a %d an" msgstr[1] "Il y a %d ans" #. Translators: Time in 24h format #: js/misc/dateUtils.js:155 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/dateUtils.js:161 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "Hier, %H∶%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/dateUtils.js:167 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/dateUtils.js:173 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%-d %B, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/dateUtils.js:179 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%-d %B %Y, %H∶%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/dateUtils.js:184 msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/dateUtils.js:190 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "Hier, %l∶%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/dateUtils.js:196 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/dateUtils.js:202 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%-d %B, %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/dateUtils.js:208 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%-d %B %Y, %l∶%M %p" #: js/portalHelper/main.js:98 msgid "Your connection seems to be secure" msgstr "Votre connexion semble sécurisée" #: js/portalHelper/main.js:104 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "La connexion à ce point d’accès n’est pas sécurisée. Les mots de passe et " "les autres informations que vous saisissez sur cette page peuvent être " "interceptés par des personnes autour de vous." #: js/portalHelper/main.js:115 msgid "Hotspot Login" msgstr "Identification du point d’accès" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:51 js/ui/inhibitShortcutsDialog.js:92 msgid "Deny" msgstr "Refuser" #: js/ui/accessDialog.js:52 js/ui/inhibitShortcutsDialog.js:101 msgid "Allow" msgstr "Autoriser" #: js/ui/appDisplay.js:1769 msgid "Unnamed Folder" msgstr "Dossier sans nom" #: js/ui/appFavorites.js:163 #, javascript-format msgid "%s has been pinned to the dash." msgstr "%s a été épinglé au dash." #: js/ui/appFavorites.js:194 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "%s a été désépinglé du dash." #: js/ui/appFavorites.js:208 js/ui/main.js:281 msgid "Undo" msgstr "Annuler" #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:49 msgid "Open Windows" msgstr "Fenêtres ouvertes" #: js/ui/appMenu.js:57 msgid "New Window" msgstr "Nouvelle fenêtre" #: js/ui/appMenu.js:84 msgid "App Details" msgstr "Détails de l’application" #: js/ui/appMenu.js:100 msgid "Quit" msgstr "Quitter" #: js/ui/appMenu.js:160 js/ui/dash.js:248 msgid "Unpin" msgstr "Désépingler" #: js/ui/appMenu.js:161 msgid "Pin to Dash" msgstr "Épingler au Dash" #: js/ui/appMenu.js:178 msgid "Launch using Integrated Graphics Card" msgstr "Démarrer en utilisant la carte graphique intégrée" #: js/ui/appMenu.js:179 msgid "Launch using Discrete Graphics Card" msgstr "Démarrer en utilisant la carte graphique dédiée" #: js/ui/audioDeviceSelection.js:46 msgid "Select Audio Device" msgstr "Sélectionner le périphérique audio" #: js/ui/audioDeviceSelection.js:61 js/ui/status/volume.js:81 msgid "Sound Settings" msgstr "Paramètres de son" #: js/ui/audioDeviceSelection.js:74 msgid "Headphones" msgstr "Casque audio" #: js/ui/audioDeviceSelection.js:76 msgid "Headset" msgstr "Micro-casque" #: js/ui/audioDeviceSelection.js:78 js/ui/status/volume.js:356 msgid "Microphone" msgstr "Microphone" #: js/ui/backgroundMenu.js:13 msgid "Change Background…" msgstr "Modifier l’arrière-plan…" #: js/ui/backgroundMenu.js:15 msgid "Display Settings" msgstr "Paramètres d’affichage" #: js/ui/backgroundMenu.js:16 msgid "Settings" msgstr "Paramètres" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:37 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:63 msgctxt "grid sunday" msgid "S" msgstr "D" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:65 msgctxt "grid monday" msgid "M" msgstr "L" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:67 msgctxt "grid tuesday" msgid "T" msgstr "M" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:69 msgctxt "grid wednesday" msgid "W" msgstr "M" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:71 msgctxt "grid thursday" msgid "T" msgstr "J" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:73 msgctxt "grid friday" msgid "F" msgstr "V" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:75 msgctxt "grid saturday" msgid "S" msgstr "S" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:426 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:436 msgid "%OB %Y" msgstr "%OB %Y" #: js/ui/calendar.js:498 msgid "Previous month" msgstr "Mois précédent" #: js/ui/calendar.js:516 msgid "Next month" msgstr "Mois suivant" #: js/ui/calendar.js:667 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:726 msgid "Week %V" msgstr "Semaine %V" #: js/ui/calendar.js:918 msgid "No Notifications" msgstr "Aucune notification" #: js/ui/calendar.js:974 msgid "Do Not Disturb" msgstr "Ne pas déranger" #: js/ui/calendar.js:995 msgid "Clear" msgstr "Effacer" #: js/ui/calendar.js:999 msgctxt "action" msgid "Clear all notifications" msgstr "Effacer toutes les notifications" #. Translators: %s is an application name #: js/ui/closeDialog.js:42 #, javascript-format msgid "“%s” Is Not Responding" msgstr "« %s » ne répond pas" #: js/ui/closeDialog.js:43 msgid "" "You may choose to wait a short while for it to continue or force the app to " "quit entirely" msgstr "" "Vous pouvez soit attendre un peu pour continuer, soit forcer l’application à " "quitter" #: js/ui/closeDialog.js:71 msgid "Force Quit" msgstr "Forcer à quitter" #: js/ui/closeDialog.js:76 msgid "Wait" msgstr "Attendre" #: js/ui/components/automountManager.js:82 msgid "External drive connected" msgstr "Disque externe connecté" #: js/ui/components/automountManager.js:94 msgid "External drive disconnected" msgstr "Disque externe déconnecté" #: js/ui/components/automountManager.js:208 msgid "Unable to unlock volume" msgstr "Impossible de déverrouiller le volume" #: js/ui/components/automountManager.js:209 msgid "The installed udisks version does not support the PIM setting" msgstr "La version installée de udisks ne gère pas le réglage PIM" #. Translators: %s is the name of a partition on a external drive #: js/ui/components/autorunManager.js:189 #, javascript-format msgid "“%s” connected" msgstr "« %s » connecté" #: js/ui/components/autorunManager.js:190 msgid "Disk can now be used" msgstr "Le disque peut désormais être utilisé" #: js/ui/components/autorunManager.js:202 #, javascript-format msgid "Open with %s" msgstr "Ouvrir avec %s" #: js/ui/components/networkAgent.js:95 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router" msgstr "" "Vous pouvez également vous connecter en appuyant sur le bouton « WPS » sur " "votre routeur" #: js/ui/components/networkAgent.js:107 js/ui/status/bluetooth.js:245 #: js/ui/status/network.js:360 js/ui/status/network.js:444 msgid "Connect" msgstr "Se connecter" #: js/ui/components/networkAgent.js:222 msgid "Key" msgstr "Clé" #: js/ui/components/networkAgent.js:273 js/ui/components/networkAgent.js:312 msgid "Private key password" msgstr "Mot de passe de la clé privée" #: js/ui/components/networkAgent.js:306 msgid "Identity" msgstr "Identité" #: js/ui/components/networkAgent.js:332 msgid "Service" msgstr "Service" #: js/ui/components/networkAgent.js:370 js/ui/components/networkAgent.js:406 #: js/ui/components/networkAgent.js:743 js/ui/components/networkAgent.js:764 msgid "Authentication required" msgstr "Authentification nécessaire" #: js/ui/components/networkAgent.js:371 js/ui/components/networkAgent.js:744 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network “%s”" msgstr "" "Il faut un mot de passe ou une clé de chiffrement pour accéder au réseau " "sans fil « %s »" #: js/ui/components/networkAgent.js:375 js/ui/components/networkAgent.js:748 msgid "Wired 802.1X authentication" msgstr "Authentification filaire 802.1X" #: js/ui/components/networkAgent.js:378 msgid "Network name" msgstr "Nom du réseau" #: js/ui/components/networkAgent.js:386 js/ui/components/networkAgent.js:752 msgid "DSL authentication" msgstr "Authentification DSL" #: js/ui/components/networkAgent.js:393 js/ui/components/networkAgent.js:757 msgid "PIN code required" msgstr "Code PIN requis" #: js/ui/components/networkAgent.js:394 js/ui/components/networkAgent.js:758 msgid "PIN code is needed for the mobile broadband device" msgstr "Un code PIN est nécessaire pour les connexions mobiles" #: js/ui/components/networkAgent.js:396 msgid "PIN" msgstr "PIN" #: js/ui/components/networkAgent.js:407 js/ui/components/networkAgent.js:749 #: js/ui/components/networkAgent.js:753 js/ui/components/networkAgent.js:765 #: js/ui/components/networkAgent.js:769 #, javascript-format msgid "A password is required to connect to “%s”" msgstr "Un mot de passe est requis pour se connecter à « %s »" #: js/ui/components/networkAgent.js:768 msgid "VPN password" msgstr "Mot de passe VPN" #: js/ui/components/polkitAgent.js:44 msgid "Authentication Required" msgstr "Authentification nécessaire" #: js/ui/components/polkitAgent.js:84 msgid "Administrator" msgstr "Administrateur" #: js/ui/components/polkitAgent.js:149 msgid "Authenticate" msgstr "S’authentifier" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:263 js/ui/shellMountOperation.js:415 msgid "Sorry, that didn’t work. Please try again." msgstr "Échec de l’authentification. Essayez à nouveau." #: js/ui/ctrlAltTab.js:23 js/ui/overviewControls.js:404 msgid "Windows" msgstr "Fenêtres" #: js/ui/dash.js:204 js/ui/dash.js:250 msgid "Show Apps" msgstr "Afficher les applications" #. Translators: this is the name of the dock/favorites area on #. the bottom of the overview #: js/ui/dash.js:408 msgid "Dash" msgstr "Dash" # luc: FIXME: how to have a capitalized weekday (start of sentence)? # %a (abbreviated) %A (full weekday) %^A (full weekday all uppercase) # https://bugzilla.gnome.org/show_bug.cgi?id=658686 # # luc: TODO: to test, this possibly explodes on dimanche 25 septembre 2011 # L M M J V S D #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:99 msgid "%B %-d %Y" msgstr "%-d %B %Y" # luc: FIXME: how to have a capitalized weekday (start of sentence)? # %a (abbreviated) %A (full weekday) %^A (full weekday all uppercase) # https://bugzilla.gnome.org/show_bug.cgi?id=658686 # # luc: TODO: to test, this possibly explodes on dimanche 25 septembre 2011 # L M M J V S D #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:106 msgid "%A %B %e %Y" msgstr "%A %e %B %Y" # luc: FIXME: how to have a capitalized weekday (start of sentence)? # %a (abbreviated) %A (full weekday) %^A (full weekday all uppercase) # https://bugzilla.gnome.org/show_bug.cgi?id=658686 # # luc: TODO: to test, this possibly explodes on dimanche 25 septembre 2011 # L M M J V S D #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:172 msgctxt "calendar heading" msgid "%B %-d" msgstr "%-d %B" # luc: FIXME: how to have a capitalized weekday (start of sentence)? # %a (abbreviated) %A (full weekday) %^A (full weekday all uppercase) # https://bugzilla.gnome.org/show_bug.cgi?id=658686 # # luc: TODO: to test, this possibly explodes on dimanche 25 septembre 2011 # L M M J V S D #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:175 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%-d %B %Y" #: js/ui/dateMenu.js:181 msgid "Today" msgstr "Aujourd’hui" #: js/ui/dateMenu.js:185 msgid "Tomorrow" msgstr "Demain" # luc: Trying alternatives: # 123456789|123456789| # Toute la journée bad # Journée entière bad # Jour entier # La journée # Journée # # All Day # # le calendrier (mal) francisé : # http://blog.arkezis.com/wp-content/uploads/2011/04/Capture.png # # See also https://bugzilla.gnome.org/show_bug.cgi?id=658679 # #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:216 msgctxt "event list time" msgid "All Day" msgstr "Journée" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:238 msgid "%m/%d" msgstr "%d/%m" #: js/ui/dateMenu.js:289 msgid "No Events" msgstr "Aucun évènement" #: js/ui/dateMenu.js:411 msgid "Add World Clocks…" msgstr "Ajouter des horloges mondiales…" #: js/ui/dateMenu.js:412 msgid "World Clocks" msgstr "Horloges mondiales" #: js/ui/dateMenu.js:702 msgid "Loading…" msgstr "Chargement…" #: js/ui/dateMenu.js:712 msgid "Go Online for Weather Information" msgstr "Chercher les informations météorologiques en ligne" #: js/ui/dateMenu.js:714 msgid "Weather Information Unavailable" msgstr "Les informations météorologiques ne sont pas disponibles" #: js/ui/dateMenu.js:724 msgid "Weather" msgstr "Météo" #: js/ui/dateMenu.js:726 msgid "Select Weather Location…" msgstr "Choisir un emplacement pour la météo…" #: js/ui/endSessionDialog.js:47 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "Fermer la session de %s" #: js/ui/endSessionDialog.js:48 msgctxt "title" msgid "Log Out" msgstr "Fermer la session" #: js/ui/endSessionDialog.js:51 #, javascript-format msgid "%s will be logged out automatically in %d second" msgid_plural "%s will be logged out automatically in %d seconds" msgstr[0] "%s sera déconnecté automatiquement dans %d seconde" msgstr[1] "%s sera déconnecté automatiquement dans %d secondes" #: js/ui/endSessionDialog.js:57 #, javascript-format msgid "You will be logged out automatically in %d second" msgid_plural "You will be logged out automatically in %d seconds" msgstr[0] "Vous allez être déconnecté automatiquement dans %d seconde" msgstr[1] "Vous allez être déconnecté automatiquement dans %d secondes" #: js/ui/endSessionDialog.js:64 msgctxt "button" msgid "Log Out" msgstr "Fermer la session" #: js/ui/endSessionDialog.js:70 js/ui/status/system.js:174 msgctxt "title" msgid "Power Off" msgstr "Éteindre" #: js/ui/endSessionDialog.js:71 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Installer les mises à jour et éteindre" #: js/ui/endSessionDialog.js:74 #, javascript-format msgid "The system will power off automatically in %d second" msgid_plural "The system will power off automatically in %d seconds" msgstr[0] "Cet ordinateur s’éteindra automatiquement dans %d seconde" msgstr[1] "Cet ordinateur s’éteindra automatiquement dans %d secondes" #: js/ui/endSessionDialog.js:78 js/ui/endSessionDialog.js:97 msgctxt "checkbox" msgid "Install pending software updates" msgstr "Installer les mises à jour logicielles en attente" #: js/ui/endSessionDialog.js:82 msgctxt "button" msgid "Power Off" msgstr "Éteindre" #: js/ui/endSessionDialog.js:89 msgctxt "title" msgid "Restart" msgstr "Redémarrer" #: js/ui/endSessionDialog.js:90 msgctxt "title" msgid "Install Updates & Restart" msgstr "Installer les mises à jour et redémarrer" #: js/ui/endSessionDialog.js:93 #, javascript-format msgid "The system will restart automatically in %d second" msgid_plural "The system will restart automatically in %d seconds" msgstr[0] "Cet ordinateur redémarrera automatiquement dans %d seconde" msgstr[1] "Cet ordinateur redémarrera automatiquement dans %d secondes" #: js/ui/endSessionDialog.js:101 msgctxt "button" msgid "Restart" msgstr "Redémarrer" #: js/ui/endSessionDialog.js:109 msgctxt "title" msgid "Restart & Install Updates" msgstr "Redémarrer et installer les mises à jour" #: js/ui/endSessionDialog.js:112 #, javascript-format msgid "The system will automatically restart and install updates in %d second" msgid_plural "" "The system will automatically restart and install updates in %d seconds" msgstr[0] "" "Le système redémarrera automatiquement et installera les mises à jour dans " "%d seconde" msgstr[1] "" "Le système redémarrera automatiquement et installera les mises à jour dans " "%d secondes" #: js/ui/endSessionDialog.js:119 js/ui/endSessionDialog.js:140 msgctxt "button" msgid "Restart & Install" msgstr "Redémarrer et installer" #: js/ui/endSessionDialog.js:121 msgctxt "button" msgid "Install & Power Off" msgstr "Installer et éteindre" #: js/ui/endSessionDialog.js:122 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Éteindre après l’installation des mises à jour" #: js/ui/endSessionDialog.js:129 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "Redémarrer et installer la mise à niveau" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:134 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "%s %s sera installé après le redémarrage. L’installation d’une mise à niveau " "peut prendre beaucoup de temps : vérifiez que vous disposez de sauvegardes " "et que l’ordinateur est branché sur le secteur." #: js/ui/endSessionDialog.js:283 msgid "Low battery power: please plug in before installing updates" msgstr "" "Batterie faible : veuillez vous brancher avant d’installer les mises à jour" #: js/ui/endSessionDialog.js:292 msgid "Some applications are busy or have unsaved work" msgstr "" "Certaines applications sont occupées ou des documents ne sont pas enregistrés" #: js/ui/endSessionDialog.js:297 msgid "Other users are logged in" msgstr "D’autres utilisateurs sont connectés" #: js/ui/endSessionDialog.js:467 msgctxt "button" msgid "Boot Options" msgstr "Options de démarrage" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:672 #, javascript-format msgid "%s (remote)" msgstr "%s (distant)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:675 #, javascript-format msgid "%s (console)" msgstr "%s (console)" #: js/ui/extensionDownloader.js:280 msgid "Install" msgstr "Installer" #: js/ui/extensionDownloader.js:286 msgid "Install Extension" msgstr "Installer l’extension" #: js/ui/extensionDownloader.js:287 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "Télécharger et installer « %s » à partir de extensions.gnome.org ?" #: js/ui/extensionSystem.js:352 msgid "Extension Updates Available" msgstr "Mises à jour d’extensions disponibles" #: js/ui/extensionSystem.js:353 msgid "Extension updates are ready to be installed" msgstr "Des mises à jour d’extensions sont prêtes à être installées" #: js/ui/inhibitShortcutsDialog.js:70 msgid "Allow inhibiting shortcuts" msgstr "Permettre de neutraliser les raccourcis" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:73 #, javascript-format msgid "The app %s wants to inhibit shortcuts" msgstr "L’application %s veut neutraliser les raccourcis" #: js/ui/inhibitShortcutsDialog.js:74 msgid "An app wants to inhibit shortcuts" msgstr "Une application veut neutraliser les raccourcis" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:81 #, javascript-format msgid "You can restore shortcuts by pressing %s" msgstr "Pour restaurer les raccourcis, appuyez sur %s" #: js/ui/kbdA11yDialog.js:34 msgid "Slow Keys Turned On" msgstr "Touches lentes activées" #: js/ui/kbdA11yDialog.js:35 msgid "Slow Keys Turned Off" msgstr "Touches lentes désactivées" #: js/ui/kbdA11yDialog.js:36 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "Vous venez d’appuyer pendant 8 secondes sur la touche Maj. Ceci est le " "raccourci d’activation des touches lentes et affecte la façon dont votre " "clavier réagit." #: js/ui/kbdA11yDialog.js:42 msgid "Sticky Keys Turned On" msgstr "Touches rémanentes activées" #: js/ui/kbdA11yDialog.js:43 msgid "Sticky Keys Turned Off" msgstr "Touches rémanentes désactivées" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "Vous venez d’appuyer 5 fois de suite sur la touche Maj. Ceci est le " "raccourci d’activation des touches rémanentes et affecte la façon dont votre " "clavier réagit." #: js/ui/kbdA11yDialog.js:47 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" "Vous venez d’appuyer sur deux touches en même temps, ou 5 fois de suite sur " "la touche Maj. Ceci désactive la fonction touches rémanentes et affecte la " "façon dont votre clavier réagit." #: js/ui/kbdA11yDialog.js:57 msgid "Leave On" msgstr "Laisser activé" #: js/ui/kbdA11yDialog.js:57 msgid "Turn On" msgstr "Activer" #: js/ui/kbdA11yDialog.js:67 js/ui/status/network.js:455 msgid "Turn Off" msgstr "Éteindre" #: js/ui/kbdA11yDialog.js:67 msgid "Leave Off" msgstr "Laisser éteint" #: js/ui/keyboard.js:180 js/ui/status/keyboard.js:897 msgid "Keyboard Settings" msgstr "Paramètres du clavier" #: js/ui/lookingGlass.js:727 msgid "No extensions installed" msgstr "Aucune extension installée" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:788 #, javascript-format msgid "%s has not emitted any errors" msgstr "%s n’a émis aucune erreur" #: js/ui/lookingGlass.js:794 msgid "Hide Errors" msgstr "Masquer les erreurs" #: js/ui/lookingGlass.js:798 js/ui/lookingGlass.js:875 msgid "Show Errors" msgstr "Afficher les erreurs" #: js/ui/lookingGlass.js:807 msgid "Active" msgstr "Activée" #: js/ui/lookingGlass.js:810 msgid "Inactive" msgstr "Désactivée" #: js/ui/lookingGlass.js:812 msgid "Error" msgstr "Erreur" #: js/ui/lookingGlass.js:814 msgid "Out of date" msgstr "Périmée" #: js/ui/lookingGlass.js:816 msgid "Downloading" msgstr "Téléchargement" #: js/ui/lookingGlass.js:818 msgid "Deactivating" msgstr "Désactivation" #: js/ui/lookingGlass.js:820 msgid "Activating" msgstr "Activation" #: js/ui/lookingGlass.js:853 msgid "View Source" msgstr "Afficher la source" #: js/ui/lookingGlass.js:864 msgid "Web Page" msgstr "Page web" #: js/ui/main.js:277 msgid "System was put in unsafe mode" msgstr "Le système a été mis en mode non sécurisé" #: js/ui/main.js:278 msgid "Apps now have unrestricted access" msgstr "Les applications ont maintenant un accès illimité" #: js/ui/main.js:338 msgid "Logged in as a privileged user" msgstr "Connecté en tant qu’utilisateur privilégié" #: js/ui/main.js:339 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" "Ouvrir une session en tant qu’utilisateur privilégié devrait être évité pour " "des raisons de sécurité. Si possible, connectez-vous comme utilisateur " "normal." #: js/ui/main.js:387 msgid "Screen Lock disabled" msgstr "Verrouillage d’écran désactivé" #: js/ui/main.js:388 msgid "Screen Locking requires the GNOME display manager" msgstr "Le verrouillage de l’écran nécessite le gestionnaire d’affichage GNOME" #. Translators: this is the string displayed in the header when a message #. source doesn't have a name #: js/ui/messageList.js:374 msgid "Unknown App" msgstr "Application inconnue" #: js/ui/messageTray.js:326 js/ui/messageTray.js:328 msgid "Notification sound" msgstr "Son de notification" #: js/ui/mpris.js:198 msgid "Unknown artist" msgstr "Artiste inconnu" #: js/ui/mpris.js:208 msgid "Unknown title" msgstr "Titre inconnu" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:328 msgid "Type to search" msgstr "Saisissez votre recherche" #: js/ui/overviewControls.js:392 msgid "Apps" msgstr "Applications" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:33 msgid "Overview" msgstr "Vue d’ensemble" #: js/ui/padOsd.js:98 msgid "New shortcut…" msgstr "Nouveau raccourci…" #: js/ui/padOsd.js:151 msgid "App defined" msgstr "Applications définies" #: js/ui/padOsd.js:152 msgid "Show on-screen help" msgstr "Afficher l’aide à l’écran" #: js/ui/padOsd.js:153 msgid "Switch monitor" msgstr "Changer d’écran" #: js/ui/padOsd.js:154 msgid "Assign keystroke" msgstr "Associer une touche" #: js/ui/padOsd.js:223 msgid "Done" msgstr "Terminé" #: js/ui/padOsd.js:726 msgid "Edit…" msgstr "Édition…" #: js/ui/padOsd.js:773 msgid "None" msgstr "Aucun" #: js/ui/padOsd.js:844 msgid "Press a button to configure" msgstr "Appuyez sur un bouton pour le configurer" #: js/ui/padOsd.js:845 msgid "Press Esc to exit" msgstr "Appuyez sur Échap pour quitter" #: js/ui/padOsd.js:848 msgid "Press any key to exit" msgstr "Appuyez sur une touche pour quitter" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:423 msgid "Activities" msgstr "Activités" #: js/ui/panel.js:504 msgctxt "System menu in the top bar" msgid "System" msgstr "Système" #: js/ui/panel.js:678 msgid "Top Bar" msgstr "Barre supérieure" #: js/ui/quickSettings.js:188 msgid "Open menu" msgstr "Ouvrir le menu" #: js/ui/runDialog.js:61 msgid "Run a Command" msgstr "Lancer une commande" #: js/ui/runDialog.js:76 msgid "Press ESC to close" msgstr "Appuyez sur Échap pour fermer" #: js/ui/runDialog.js:241 msgid "Restart is not available on Wayland" msgstr "Le redémarrage n’est pas disponible sur Wayland" #: js/ui/runDialog.js:246 msgid "Restarting…" msgstr "Redémarrage…" #: js/ui/screenShield.js:233 msgid "GNOME needs to lock the screen" msgstr "GNOME a besoin de verrouiller l’écran" #: js/ui/screenShield.js:274 js/ui/screenShield.js:667 msgid "Unable to lock" msgstr "Impossible de verrouiller" #: js/ui/screenShield.js:275 js/ui/screenShield.js:668 msgid "Lock was blocked by an app" msgstr "Le verrouillage a été bloqué par une application" #: js/ui/screenshot.js:1252 msgid "Selection" msgstr "Sélection" #: js/ui/screenshot.js:1262 msgid "Area Selection" msgstr "Sélection de zone" #: js/ui/screenshot.js:1267 msgid "Screen" msgstr "Écran" #: js/ui/screenshot.js:1277 msgid "Screen Selection" msgstr "Sélection d’écran" #: js/ui/screenshot.js:1282 msgid "Window" msgstr "Fenêtre" #: js/ui/screenshot.js:1292 msgid "Window Selection" msgstr "Sélection de fenêtre" #. Translators: entry in the window right click menu. #: js/ui/screenshot.js:1317 js/ui/status/system.js:111 js/ui/windowMenu.js:28 msgid "Take Screenshot" msgstr "Effectuer une capture d’écran" #: js/ui/screenshot.js:1333 msgid "Record Screen" msgstr "Enregistrer l’écran" #. Translators: since this string refers to an action, #. it needs to be phrased as a verb. #: js/ui/screenshot.js:1350 msgid "Capture" msgstr "Capturer" #: js/ui/screenshot.js:1372 msgid "Show Pointer" msgstr "Afficher le pointeur" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1996 msgid "Screencasts" msgstr "Captures vidéo" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast From 07-17-2013 10:00:46 PM" #: js/ui/screenshot.js:2001 #, no-c-format msgid "Screencast From %d %t" msgstr "Capture vidéo du %d %t" #. Translators: notification title. #: js/ui/screenshot.js:2047 msgid "Screencast recorded" msgstr "Capture vidéo enregistrée" #. Translators: notification title. #: js/ui/screenshot.js:2060 msgid "Screencast failed to start" msgstr "La capture vidéo n’a pas pu démarrer" #. Translators: notification title. #: js/ui/screenshot.js:2066 msgid "Screencast ended: Out of disk space" msgstr "La capture vidéo s’est arrêtée : plus assez d’espace disque" #. We can encourage user to try again on service crashes since the #. recorder will auto-blocklist the pipeline that crashed. #. Translators: notification title. #: js/ui/screenshot.js:2072 msgid "Screencast ended unexpectedly, please try again" msgstr "La capture vidéo s’est arrêtée de manière inattendue, réessayez" #. Translators: notification title. #: js/ui/screenshot.js:2075 msgid "Screencast ended unexpectedly" msgstr "La capture vidéo s’est arrêtée de manière inattendue" #. Translators: notification source name. #: js/ui/screenshot.js:2085 js/ui/screenshot.js:2327 msgid "Screenshot" msgstr "Capture d’écran" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:2092 msgid "Click here to view the video." msgstr "Cliquez ici pour visionner la vidéo." #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:2100 js/ui/screenshot.js:2343 msgid "Show in Files" msgstr "Afficher dans Fichiers" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2287 #, javascript-format msgid "Screenshot From %s" msgstr "Capture d’écran du %s" #. Translators: notification title. #: js/ui/screenshot.js:2333 msgid "Screenshot captured" msgstr "Capture d’écran effectuée" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2335 msgid "You can paste the image from the clipboard." msgstr "Vous pouvez coller l’image depuis le presse-papiers." #: js/ui/screenshot.js:2391 js/ui/screenshot.js:2555 msgid "Screenshot taken" msgstr "Capture d’écran effectuée" #: js/ui/search.js:829 msgid "Searching…" msgstr "Recherche…" #: js/ui/search.js:831 msgid "No results" msgstr "Aucun résultat" #: js/ui/search.js:962 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "%d de plus" msgstr[1] "%d de plus" #: js/ui/searchController.js:87 #: subprojects/extensions-app/data/ui/extensions-window.ui:73 msgid "Search" msgstr "Recherche" #: js/ui/shellEntry.js:21 msgid "Copy" msgstr "Copier" #: js/ui/shellEntry.js:26 msgid "Paste" msgstr "Coller" #: js/ui/shellEntry.js:78 msgid "Show Text" msgstr "Afficher le texte" #: js/ui/shellEntry.js:80 msgid "Hide Text" msgstr "Masquer le texte" #: js/ui/shellEntry.js:174 msgid "Caps lock is on" msgstr "La touche Verr. Maj. est enfoncée" #: js/ui/shellMountOperation.js:286 msgid "Hidden Volume" msgstr "Volume masqué" #: js/ui/shellMountOperation.js:289 msgid "Windows System Volume" msgstr "Volume système Windows" #: js/ui/shellMountOperation.js:292 msgid "Uses Keyfiles" msgstr "Utilise des fichiers de clés" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:300 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead" msgstr "" "Pour déverrouiller un volume qui utilise des fichiers de clés, utilisez " "plutôt l’utilitaire %s" #: js/ui/shellMountOperation.js:304 msgid "" "You need an external utility like Disks to unlock a volume that uses " "keyfiles" msgstr "" "Un utilitaire externe tel que Disques est nécessaire pour " "déverrouiller un volume qui utilise des fichiers de clés" #: js/ui/shellMountOperation.js:312 msgid "PIM Number" msgstr "Numéro PIM" #: js/ui/shellMountOperation.js:371 msgid "Remember Password" msgstr "Se souvenir du mot de passe" #: js/ui/shellMountOperation.js:386 msgid "Unlock" msgstr "Déverrouiller" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:400 #, javascript-format msgid "Open %s" msgstr "Ouvrir %s" #: js/ui/shellMountOperation.js:436 msgid "The PIM must be a number or empty" msgstr "Le numéro PIM doit être un nombre ou être vide" #: js/ui/status/accessibility.js:34 msgid "Accessibility" msgstr "Accessibilité" #: js/ui/status/accessibility.js:44 msgid "High Contrast" msgstr "Contraste élevé" #: js/ui/status/accessibility.js:47 msgid "Zoom" msgstr "Zoom" #: js/ui/status/accessibility.js:54 msgid "Screen Reader" msgstr "Lecteur d’écran" #: js/ui/status/accessibility.js:58 msgid "Screen Keyboard" msgstr "Clavier visuel" #: js/ui/status/accessibility.js:62 msgid "Visual Alerts" msgstr "Alertes visuelles" #: js/ui/status/accessibility.js:66 msgid "Sticky Keys" msgstr "Touches rémanentes" #: js/ui/status/accessibility.js:70 msgid "Slow Keys" msgstr "Touches lentes" #: js/ui/status/accessibility.js:74 msgid "Bounce Keys" msgstr "Touches rebond" #: js/ui/status/accessibility.js:78 msgid "Mouse Keys" msgstr "Touches de la souris" #: js/ui/status/accessibility.js:83 msgid "Accessibility Settings" msgstr "Paramètres d’accessibilité" #: js/ui/status/accessibility.js:140 msgid "Large Text" msgstr "Grand texte" #: js/ui/status/autoRotate.js:14 msgid "Auto Rotate" msgstr "Rotation automatique" #: js/ui/status/backgroundApps.js:156 msgctxt "title" msgid "Background Apps" msgstr "Applis en arrière-plan" #: js/ui/status/backgroundApps.js:171 msgid "Apps known to be running without a window" msgstr "Applications réputées s’exécuter sans fenêtre" #: js/ui/status/backgroundApps.js:182 msgid "App Settings" msgstr "Paramètres des applications" #: js/ui/status/backgroundApps.js:239 msgid "No Background Apps" msgstr "Aucune application fonctionnant en arrière-plan" #: js/ui/status/backgroundApps.js:241 #, javascript-format msgid "%d Background App" msgid_plural "%d Background Apps" msgstr[0] "%d application fonctionnant en arrière-plan" msgstr[1] "%d applications fonctionnant en arrière-plan" #: js/ui/status/backlight.js:39 msgid "Keyboard Brightness" msgstr "Luminosité du clavier" #: js/ui/status/backlight.js:79 msgid "Off" msgstr "Éteint" #: js/ui/status/backlight.js:80 msgid "Low" msgstr "Basse" #: js/ui/status/backlight.js:81 msgid "High" msgstr "Élevée" #: js/ui/status/backlight.js:147 js/ui/status/keyboard.js:879 msgid "Keyboard" msgstr "Clavier" #: js/ui/status/bluetooth.js:245 js/ui/status/network.js:360 msgid "Disconnect" msgstr "Déconnecter" #: js/ui/status/bluetooth.js:262 js/ui/status/bluetooth.js:264 msgid "Bluetooth" msgstr "Bluetooth" #: js/ui/status/bluetooth.js:287 js/ui/status/network.js:1900 msgid "Bluetooth Settings" msgstr "Paramètres Bluetooth" #: js/ui/status/bluetooth.js:334 msgid "No available or connected devices" msgstr "Aucun périphérique disponible ou connecté" #: js/ui/status/bluetooth.js:335 msgid "Turn on Bluetooth to connect to devices" msgstr "Activer le Bluetooth pour se connecter aux périphériques" #. Translators: This is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:389 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d connecté" msgstr[1] "%d connectés" #: js/ui/status/brightness.js:32 msgid "Brightness" msgstr "Luminosité" #: js/ui/status/darkMode.js:12 msgid "Dark Style" msgstr "Style sombre" #: js/ui/status/dwellClick.js:15 msgid "Single Click" msgstr "Clic simple" #: js/ui/status/dwellClick.js:20 msgid "Double Click" msgstr "Double-clic" #: js/ui/status/dwellClick.js:25 msgid "Drag" msgstr "Glisser" #: js/ui/status/dwellClick.js:30 msgid "Secondary Click" msgstr "Clic secondaire" #: js/ui/status/dwellClick.js:39 msgid "Dwell Click" msgstr "Clic prolongé" #: js/ui/status/keyboard.js:896 msgid "Show Keyboard Layout" msgstr "Afficher la disposition du clavier" #: js/ui/status/location.js:337 msgid "Allow location access" msgstr "Permettre l’accès à l’emplacement" #. Translators: %s is an application name #: js/ui/status/location.js:339 #, javascript-format msgid "The app %s wants to access your location" msgstr "L’application %s souhaite accéder à votre emplacement géographique" #: js/ui/status/location.js:349 msgid "Location access can be changed at any time from the privacy settings" msgstr "" "Les règles d’accès à la localisation peuvent à tout moment être modifiées " "dans les paramètres de confidentialité" #: js/ui/status/location.js:357 msgid "Deny Access" msgstr "Refuser l’accès" #: js/ui/status/location.js:362 msgid "Grant Access" msgstr "Accorder l’accès" #: js/ui/status/network.js:62 msgid "" msgstr "" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:354 #, javascript-format msgid "Disconnect %s" msgstr "Se déconnecter de %s" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:356 #, javascript-format msgid "Connect to %s" msgstr "Se connecter à %s" #: js/ui/status/network.js:1050 msgid "Secure" msgstr "Sécurisé" #: js/ui/status/network.js:1050 msgid "Not secure" msgstr "Non sécurisé" #: js/ui/status/network.js:1051 #, javascript-format msgid "Signal strength %s%%" msgstr "Force du signal %s%%" #. translators: The first placeholder is the network name, the second and indication whether it is secure, and the last the signal strength indication #: js/ui/status/network.js:1053 #, javascript-format msgid "%s, %s, %s" msgstr "%s, %s, %s" #. Translators: %s is a network identifier #: js/ui/status/network.js:1155 #, javascript-format msgid "%s Hotspot" msgstr "Point d’accès %s" #: js/ui/status/network.js:1426 #, javascript-format msgid "%d connected" msgid_plural "%d connected" msgstr[0] "%d connecté" msgstr[1] "%d connectés" #: js/ui/status/network.js:1524 js/ui/status/network.js:1540 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1525 msgid "VPN Settings" msgstr "Paramètres VPN" #: js/ui/status/network.js:1785 msgid "Wi–Fi" msgstr "Wi-Fi" #: js/ui/status/network.js:1787 msgid "All Networks" msgstr "Tous les réseaux" #: js/ui/status/network.js:1884 msgid "Wired Connections" msgstr "Connexions filaires" #: js/ui/status/network.js:1885 msgid "Wired Settings" msgstr "Paramètres filaire" #: js/ui/status/network.js:1899 msgid "Bluetooth Tethers" msgstr "Partages de connexion via Bluetooth" #. Translators: "Tether" from "Bluetooth Tether" #: js/ui/status/network.js:1906 msgid "Tether" msgstr "Partage de connexion" #: js/ui/status/network.js:1919 msgid "Mobile Connections" msgstr "Connexion à des appareils mobiles" #: js/ui/status/network.js:1921 msgid "Mobile Broadband Settings" msgstr "Paramètres connexion mobile" #. Translators: "Mobile" from "Mobile Broadband" #: js/ui/status/network.js:1930 msgid "Mobile" msgstr "Mobile" #: js/ui/status/network.js:1964 msgid "Sign Into Wi–Fi Network" msgstr "Se connecter à un réseau Wi-Fi" #: js/ui/status/network.js:2151 msgid "Connection failed" msgstr "Échec de connexion" #: js/ui/status/network.js:2152 msgid "Activation of network connection failed" msgstr "L’activation de la connexion réseau a échoué" #: js/ui/status/nightLight.js:19 msgid "Night Light" msgstr "Mode nuit" #: js/ui/status/powerProfiles.js:19 msgctxt "Power profile" msgid "Performance" msgstr "Performance" #: js/ui/status/powerProfiles.js:24 msgctxt "Power profile" msgid "Balanced" msgstr "Équilibré" #: js/ui/status/powerProfiles.js:29 msgctxt "Power profile" msgid "Power Saver" msgstr "Économie d’énergie" #: js/ui/status/powerProfiles.js:39 js/ui/status/powerProfiles.js:69 msgid "Power Mode" msgstr "Mode puissance" #: js/ui/status/powerProfiles.js:71 msgid "Power Settings" msgstr "Paramètres de gestion de l’énergie" #: js/ui/status/remoteAccess.js:74 msgid "Stop Screencast" msgstr "Arrêter la capture vidéo" #: js/ui/status/remoteAccess.js:144 msgid "Stop Screen Sharing" msgstr "Arrêter le partage d’écran" #: js/ui/status/rfkill.js:99 msgid "Airplane Mode" msgstr "Mode avion" #: js/ui/status/system.js:168 msgid "Power Off Menu" msgstr "Menu d’extinction" #: js/ui/status/system.js:176 msgid "Suspend" msgstr "Mettre en veille" #: js/ui/status/system.js:181 msgid "Restart…" msgstr "Redémarrer…" #: js/ui/status/system.js:186 msgid "Power Off…" msgstr "Éteindre…" #: js/ui/status/system.js:193 #: subprojects/extensions-app/data/ui/extensions-window.ui:124 msgid "Log Out…" msgstr "Fermer la session…" #: js/ui/status/system.js:198 msgid "Switch User…" msgstr "Changer d’utilisateur…" #: js/ui/status/system.js:242 msgctxt "action" msgid "Lock Screen" msgstr "Verrouiller l’écran" #: js/ui/status/thunderbolt.js:308 msgid "Unknown Thunderbolt device" msgstr "Périphérique Thunderbolt inconnu" #: js/ui/status/thunderbolt.js:309 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" "Un nouveau périphérique a été détecté pendant votre absence. Veuillez le " "débrancher et rebrancher avant de commencer à l’utiliser." #: js/ui/status/thunderbolt.js:312 msgid "Unauthorized Thunderbolt device" msgstr "Périphérique Thunderbolt non autorisé" #: js/ui/status/thunderbolt.js:313 msgid "" "New device has been detected and needs to be authorized by an administrator" msgstr "" "Un nouvel appareil a été détecté et a besoin d’être autorisé par un " "administrateur" #: js/ui/status/thunderbolt.js:319 msgid "Thunderbolt authorization error" msgstr "Erreur d’autorisation Thunderbolt" #: js/ui/status/thunderbolt.js:320 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "Impossible d’autoriser le périphérique Thunderbolt : %s" #: js/ui/status/volume.js:218 msgid "Volume changed" msgstr "Volume modifié" #: js/ui/status/volume.js:231 msgid "Unmute" msgstr "Remettre le son" #: js/ui/status/volume.js:231 msgid "Mute" msgstr "Couper le son" #: js/ui/status/volume.js:286 msgid "Volume" msgstr "Volume" #: js/ui/status/volume.js:302 msgid "Sound Output" msgstr "Sortie son" #: js/ui/status/volume.js:374 msgid "Sound Input" msgstr "Entrée son" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:20 msgid "Mirror" msgstr "Cloner" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:29 msgid "Join Displays" msgstr "Joindre écrans" #. Translators: this is for using only external displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:39 msgid "External Only" msgstr "Externe seulement" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:47 msgid "Built-in Only" msgstr "Intégré seulement" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:378 msgid "%A %B %-d" msgstr "%A %-d %B" #: js/ui/unlockDialog.js:384 msgid "Swipe up to unlock" msgstr "Faire glisser vers le haut pour déverrouiller" #: js/ui/unlockDialog.js:385 msgid "Click or press a key to unlock" msgstr "Cliquer ou appuyer sur une touche pour déverrouiller" #: js/ui/unlockDialog.js:568 msgid "Unlock Window" msgstr "Fenêtre de déverrouillage" #: js/ui/unlockDialog.js:577 msgid "Log in as another user" msgstr "Se connecter en tant qu’autre utilisateur" #: js/ui/welcomeDialog.js:47 #, javascript-format msgid "GNOME %s" msgstr "GNOME %s" #: js/ui/welcomeDialog.js:51 #, javascript-format msgid "Welcome to %s" msgstr "Bienvenue dans %s" #: js/ui/welcomeDialog.js:52 msgid "If you want to learn your way around, check out the tour" msgstr "Si vous désirez en apprendre davantage, consultez la visite guidée" #: js/ui/welcomeDialog.js:61 msgid "Skip" msgstr "Passer" #: js/ui/welcomeDialog.js:66 msgid "Take Tour" msgstr "Effectuer la visite guidée" #: js/ui/windowAttentionHandler.js:18 #, javascript-format msgid "“%s” is ready" msgstr "« %s » est prêt" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:68 msgid "Keep these display settings?" msgstr "Garder ces paramètres d’affichage ?" #: js/ui/windowManager.js:78 msgid "Revert Settings" msgstr "Restaurer les paramètres" #: js/ui/windowManager.js:83 msgid "Keep Changes" msgstr "Conserver les modifications" #: js/ui/windowManager.js:103 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "Les paramètres seront restaurés dans %d seconde" msgstr[1] "Les paramètres seront restaurés dans %d secondes" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:500 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:40 msgid "Hide" msgstr "Masquer" #: js/ui/windowMenu.js:47 msgid "Restore" msgstr "Restaurer" #: js/ui/windowMenu.js:51 msgid "Maximize" msgstr "Maximiser" #: js/ui/windowMenu.js:58 msgid "Move" msgstr "Déplacer" #: js/ui/windowMenu.js:78 msgid "Resize" msgstr "Redimensionner" #: js/ui/windowMenu.js:98 msgid "Always on Top" msgstr "Toujours au premier plan" #: js/ui/windowMenu.js:117 msgid "Always on Visible Workspace" msgstr "Toujours sur l’espace de travail visible" #: js/ui/windowMenu.js:131 msgid "Move to Workspace Left" msgstr "Déplacer vers l’espace de travail de gauche" #: js/ui/windowMenu.js:137 msgid "Move to Workspace Right" msgstr "Déplacer vers l’espace de travail de droite" #: js/ui/windowMenu.js:143 msgid "Move to Workspace Up" msgstr "Déplacer vers l’espace de travail supérieur" #: js/ui/windowMenu.js:149 msgid "Move to Workspace Down" msgstr "Déplacer vers l’espace de travail inférieur" #: js/ui/windowMenu.js:167 msgid "Move to Monitor Up" msgstr "Déplacer vers l’écran du haut" #: js/ui/windowMenu.js:176 msgid "Move to Monitor Down" msgstr "Déplacer vers l’écran du bas" #: js/ui/windowMenu.js:185 msgid "Move to Monitor Left" msgstr "Déplacer vers l’écran de gauche" #: js/ui/windowMenu.js:194 msgid "Move to Monitor Right" msgstr "Déplacer vers l’écran de droite" #: js/ui/windowMenu.js:202 msgid "Close" msgstr "Fermer" #: src/main.c:529 subprojects/extensions-tool/src/main.c:336 msgid "Print version" msgstr "Afficher la version" #: src/main.c:535 msgid "Mode used by GDM for login screen" msgstr "Mode utilisé par GDM pour l’écran de connexion" #: src/main.c:541 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "" "Utiliser un mode particulier, par ex. « gdm » pour l’écran de connexion" #: src/main.c:547 msgid "List possible modes" msgstr "Lister les modes possibles" #: src/main.c:553 msgid "Force animations to be enabled" msgstr "Forcer l’activation des animations" #: src/shell-app.c:252 msgctxt "program" msgid "Unknown" msgstr "Inconnu" #: src/shell-app.c:503 #, c-format msgid "Failed to launch “%s”" msgstr "Impossible de lancer « %s »" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match" msgstr "Les mots de passe ne correspondent pas" #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "Le mot de passe ne peut pas être vide" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "La fenêtre d’authentification a été écartée par l’utilisateur" #: src/st/st-icon-theme.c:1865 #, c-format msgid "Icon '%s' not present in theme %s" msgstr "L’icône « %s » n’est pas incluse dans le thème %s" #: src/st/st-icon-theme.c:3454 src/st/st-icon-theme.c:3757 msgid "Failed to load icon" msgstr "Impossible de charger l’icône" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 msgid "Manage your GNOME Extensions" msgstr "Gérer vos extensions GNOME" #. developer_name tag deprecated with Appstream 1.0 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:19 msgid "The GNOME Project" msgstr "Le projet GNOME" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:51 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" "Extensions de GNOME gère la mise à jour des extensions, la configuration des " "préférences des extensions et la suppression ou la désactivation des " "extensions non désirées." #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:64 msgid "Main Window" msgstr "Fenêtre principale" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:68 msgid "Available Updates" msgstr "Mises à jour disponibles" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:72 msgid "Search View" msgstr "Vue de la recherche" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "Configurer les extensions Shell de GNOME" #: subprojects/extensions-app/js/extensionManager.js:237 #, javascript-format msgid "" "The installed version of this extension (%s) is incompatible with the " "current version of GNOME (%s). The extension has been disabled." msgstr "" "La version installée de cette extension (%s) est incompatible avec la " "version actuelle de GNOME (%s). L’extension a été désactivée." #: subprojects/extensions-app/js/extensionManager.js:238 #, javascript-format msgid "" "The installed version of this extension is incompatible with the current " "version of GNOME (%s). The extension has been disabled." msgstr "" "La version installée de cette extension est incompatible avec la version " "actuelle de GNOME (%s). L’extension a été désactivée." #: subprojects/extensions-app/js/extensionManager.js:242 msgid "" "An error has occurred in this extension. This could cause issues elsewhere " "in the system. It is recommended to turn the extension off until the error " "is resolved." msgstr "" "Une erreur est survenue avec cette extension. Cela pourrait causer des " "problèmes ailleurs sur le système. Il est recommandé de désactiver cette " "extension jusqu’à ce que l’erreur soit résolue." #. translators: Details for an extension error #: subprojects/extensions-app/js/extensionManager.js:248 msgid "Error details:" msgstr "Détails de l’erreur :" #: subprojects/extensions-app/js/extensionRow.js:82 #, javascript-format msgid "Version %s" msgstr "Version %s" #: subprojects/extensions-app/js/extensionsWindow.js:113 #, javascript-format msgid "Remove “%s”?" msgstr "Enlever « %s » ?" #: subprojects/extensions-app/js/extensionsWindow.js:114 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "" "Si vous enlevez cette extension, vous devrez recommencer son téléchargement " "si vous souhaitez la réactiver plus tard" #: subprojects/extensions-app/js/extensionsWindow.js:117 msgid "_Cancel" msgstr "A_nnuler" #: subprojects/extensions-app/js/extensionsWindow.js:118 msgid "_Remove" msgstr "En_lever" #: subprojects/extensions-app/js/extensionsWindow.js:158 msgid "translator-credits" msgstr "" "Mathieu Bridon \n" "Pablo Martin-Gomez \n" "Bruno Brouard \n" "Cyril Arnaud \n" "Luc Guillemin \n" "Luc Pionchon \n" "Pierre Henry \n" "Alexandre Franke \n" "Mathieu Stumpf \n" "Alain Lojewski \n" "Erwan Georget \n" "Julien Humbert \n" "Claude Paroz \n" "Charles Monzat \n" "Thibault Martin \n" "Guillaume Bernard \n" "Jean-Marc Tissières \n" "Irénée Thirion " #: subprojects/extensions-app/js/extensionsWindow.js:203 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "%d extension sera mise à jour à la prochaine connexion." msgstr[1] "%d extensions seront mises à jour à la prochaine connexion." #: subprojects/extensions-app/data/ui/extension-row.ui:22 msgid "Error Details" msgstr "Détails de l’erreur" #: subprojects/extensions-app/data/ui/extension-row.ui:62 msgid "Updates Details" msgstr "Détails des mises à jour" #: subprojects/extensions-app/data/ui/extension-row.ui:72 msgid "" "A new version of this extension is ready and will be loaded on next login." msgstr "" "Une nouvelle version de cette extension est prête et sera chargée à la " "prochaine connexion." #: subprojects/extensions-app/data/ui/extension-row.ui:104 msgid "Extension Details" msgstr "Détails de l’extension" #: subprojects/extensions-app/data/ui/extension-row.ui:192 msgid "_Website" msgstr "Site _web" #: subprojects/extensions-app/data/ui/extension-row.ui:219 msgid "_Settings" msgstr "_Paramètres" #: subprojects/extensions-app/data/ui/extension-row.ui:246 msgid "_Remove…" msgstr "En_lever…" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Keyboard Shortcuts" msgstr "Raccourcis clavier" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "À propos des extensions" #: subprojects/extensions-app/data/ui/extensions-window.ui:64 msgid "Main Menu" msgstr "Menu principal" #: subprojects/extensions-app/data/ui/extensions-window.ui:106 msgid "Search extensions" msgstr "Rechercher une extension" #: subprojects/extensions-app/data/ui/extensions-window.ui:134 msgid "_Extensions" msgstr "_Extensions" #: subprojects/extensions-app/data/ui/extensions-window.ui:139 msgid "More Information" msgstr "Davantage d’informations" #: subprojects/extensions-app/data/ui/extensions-window.ui:151 msgid "" "Extensions can cause performance and stability issues. It is recommended to " "disable all extensions if you experience problems with your system." msgstr "" "Les extensions peuvent entraîner des problèmes de performances et de " "stabilité. Il est recommandé de désactiver les extensions si vous rencontrez " "des problèmes avec votre système." #: subprojects/extensions-app/data/ui/extensions-window.ui:178 msgid "User Extensions" msgstr "Extensions de l’utilisateur" #: subprojects/extensions-app/data/ui/extensions-window.ui:198 msgid "System Extensions" msgstr "Extensions du système" #: subprojects/extensions-app/data/ui/extensions-window.ui:233 msgid "Search Results" msgstr "Résultats de la recherche" #: subprojects/extensions-app/data/ui/extensions-window.ui:252 msgid "No Results Found" msgstr "Aucun résultat trouvé" #: subprojects/extensions-app/data/ui/extensions-window.ui:253 msgid "Try a different search" msgstr "Essayez une recherche différente" #: subprojects/extensions-app/data/ui/extensions-window.ui:264 msgid "No Installed Extensions" msgstr "Aucune extension installée" #: subprojects/extensions-app/data/ui/extensions-window.ui:265 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" "Pour trouver et ajouter des extensions, visitez extensions.gnome.org." #: subprojects/extensions-app/data/ui/extensions-window.ui:276 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" "Nous sommes désolés, mais il n’est pas possible d’obtenir la liste des " "extensions installées. Vérifiez que vous êtes bien connecté à GNOME et " "essayez encore une fois." #: subprojects/extensions-app/data/ui/help-overlay.ui:9 msgctxt "shortcut window" msgid "General" msgstr "Général" #: subprojects/extensions-app/data/ui/help-overlay.ui:12 msgctxt "shortcut window" msgid "Open Menu" msgstr "Ouvrir le menu" #: subprojects/extensions-app/data/ui/help-overlay.ui:18 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Basculer la recherche" #: subprojects/extensions-app/data/ui/help-overlay.ui:24 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Afficher les raccourcis" #: subprojects/extensions-app/data/ui/help-overlay.ui:30 msgctxt "shortcut window" msgid "Quit" msgstr "Quitter" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:284 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "La nouvelle extension a bien été créée dans %s.\n" #: subprojects/extensions-tool/src/command-create.c:376 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" "Le nom doit être une chaîne très courte (idéalement descriptive).\n" "Exemples : %s" #: subprojects/extensions-tool/src/command-create.c:382 #: subprojects/extensions-tool/src/main.c:243 msgid "Name" msgstr "Nom" #: subprojects/extensions-tool/src/command-create.c:396 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" "La description est composée d’une seule phrase expliquant ce que fait votre " "extension.\n" "Exemples : %s" #: subprojects/extensions-tool/src/command-create.c:402 #: subprojects/extensions-tool/src/main.c:246 msgid "Description" msgstr "Description" #: subprojects/extensions-tool/src/command-create.c:416 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" "L’UUID est un identifiant globalement unique pour votre extension.\n" "Son format doit correspondre à celui d’une adresse électronique " "(clicpourfocus@toto.exemple.com)\n" #: subprojects/extensions-tool/src/command-create.c:443 msgid "Choose one of the available templates:\n" msgstr "Sélectionnez un des modèles disponibles :\n" #: subprojects/extensions-tool/src/command-create.c:457 msgid "Template" msgstr "Modèle" #: subprojects/extensions-tool/src/command-create.c:515 msgid "The unique identifier of the new extension" msgstr "L’identifiant unique de la nouvelle extension" #: subprojects/extensions-tool/src/command-create.c:518 msgid "NAME" msgstr "NOM" #: subprojects/extensions-tool/src/command-create.c:519 msgid "The user-visible name of the new extension" msgstr "Le nom d’extension visible par l’utilisateur" #: subprojects/extensions-tool/src/command-create.c:521 msgid "DESCRIPTION" msgstr "DESCRIPTION" #: subprojects/extensions-tool/src/command-create.c:523 msgid "A short description of what the extension does" msgstr "Une description courte de ce que fait l’extension" #: subprojects/extensions-tool/src/command-create.c:525 #: subprojects/extensions-tool/src/command-pack.c:455 msgid "DOMAIN" msgstr "DOMAINE" #: subprojects/extensions-tool/src/command-create.c:527 msgid "The gettext domain used by the extension" msgstr "Le domaine gettext utilisé par l’extension" #: subprojects/extensions-tool/src/command-create.c:529 #: subprojects/extensions-tool/src/command-pack.c:448 msgid "SCHEMA" msgstr "SCHÉMA" #: subprojects/extensions-tool/src/command-create.c:531 msgid "The GSettings schema used by the extension" msgstr "Le schéma GSettings utilisé par l’extension" #: subprojects/extensions-tool/src/command-create.c:534 msgid "TEMPLATE" msgstr "MODÈLE" #: subprojects/extensions-tool/src/command-create.c:535 msgid "The template to use for the new extension" msgstr "Le modèle à utiliser pour la nouvelle extension" #: subprojects/extensions-tool/src/command-create.c:538 msgid "Include prefs.js template" msgstr "Inclure le modèle prefs.js" #: subprojects/extensions-tool/src/command-create.c:544 msgid "Enter extension information interactively" msgstr "Saisissez interactivement les informations de l’extension" #: subprojects/extensions-tool/src/command-create.c:552 msgid "Create a new extension" msgstr "Créer une nouvelle extension" #: subprojects/extensions-tool/src/command-create.c:570 #: subprojects/extensions-tool/src/command-list.c:190 msgid "Unknown arguments" msgstr "Paramètres inconnus" #: subprojects/extensions-tool/src/command-create.c:595 msgid "UUID, name and description are required" msgstr "Les champs UUID, nom et description sont obligatoires" #: subprojects/extensions-tool/src/command-disable.c:62 #: subprojects/extensions-tool/src/command-enable.c:62 #, c-format msgid "Extension “%s” does not exist\n" msgstr "L’extension « %s » n’existe pas\n" #: subprojects/extensions-tool/src/command-disable.c:98 msgid "Disable an extension" msgstr "Désactiver une extension" #: subprojects/extensions-tool/src/command-disable.c:116 #: subprojects/extensions-tool/src/command-enable.c:116 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "Aucun UUID indiqué" #: subprojects/extensions-tool/src/command-disable.c:121 #: subprojects/extensions-tool/src/command-enable.c:121 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "Plus d’un UUID indiqué" #: subprojects/extensions-tool/src/command-enable.c:98 msgid "Enable an extension" msgstr "Activer une extension" #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:66 #: subprojects/extensions-tool/src/main.c:150 msgid "Failed to connect to GNOME Shell\n" msgstr "Erreur lors de la connexion à Shell de GNOME\n" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:159 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "L’extension « %s » n’existe pas\n" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "Afficher les infos des extensions" #: subprojects/extensions-tool/src/command-install.c:190 msgid "Overwrite an existing extension" msgstr "Écraser une extension existante" #: subprojects/extensions-tool/src/command-install.c:192 msgid "EXTENSION_BUNDLE" msgstr "EXTENSION_EMPAQUETÉE" #: subprojects/extensions-tool/src/command-install.c:201 msgid "Install an extension bundle" msgstr "Installer une extension empaquetée" #: subprojects/extensions-tool/src/command-install.c:219 msgid "No extension bundle specified" msgstr "Aucune extension empaquetée indiquée" #: subprojects/extensions-tool/src/command-install.c:225 msgid "More than one extension bundle specified" msgstr "Plus d’une extension empaquetée indiquée" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show user-installed extensions" msgstr "Afficher les extensions installées par l’utilisateur" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show system-installed extensions" msgstr "Afficher les extensions installées par le système" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Show enabled extensions" msgstr "Afficher les extensions actives" #: subprojects/extensions-tool/src/command-list.c:149 msgid "Show disabled extensions" msgstr "Afficher les extensions inactives" #: subprojects/extensions-tool/src/command-list.c:152 msgid "Show extensions in active state" msgstr "Afficher les extensions activées" #: subprojects/extensions-tool/src/command-list.c:155 msgid "Show extensions in inactive state" msgstr "Afficher les extensions désactivées" #: subprojects/extensions-tool/src/command-list.c:158 msgid "Show extensions with preferences" msgstr "Afficher les extensions avec des préférences" #: subprojects/extensions-tool/src/command-list.c:161 msgid "Show extensions with updates" msgstr "Afficher les extensions avec des mises à jour" #: subprojects/extensions-tool/src/command-list.c:164 msgid "Print extension details" msgstr "Afficher les détails de l’extension" #: subprojects/extensions-tool/src/command-list.c:172 msgid "List installed extensions" msgstr "Afficher la liste des extensions installées" #: subprojects/extensions-tool/src/command-pack.c:444 msgid "FILE" msgstr "FICHIER" #: subprojects/extensions-tool/src/command-pack.c:445 msgid "Additional source to include in the bundle" msgstr "Source supplémentaire à inclure dans le paquet" #: subprojects/extensions-tool/src/command-pack.c:449 msgid "A GSettings schema that should be included" msgstr "Un schéma GSettings qui doit être inclus" #: subprojects/extensions-tool/src/command-pack.c:451 #: subprojects/extensions-tool/src/command-pack.c:462 msgid "DIRECTORY" msgstr "RÉPERTOIRE" #: subprojects/extensions-tool/src/command-pack.c:453 msgid "The directory where translations are found" msgstr "Le répertoire où se trouvent les traductions" #: subprojects/extensions-tool/src/command-pack.c:457 msgid "The gettext domain to use for translations" msgstr "Le domaine gettext à utiliser pour les traductions" #: subprojects/extensions-tool/src/command-pack.c:460 msgid "Overwrite an existing pack" msgstr "Écraser un paquet existant" #: subprojects/extensions-tool/src/command-pack.c:464 msgid "The directory where the pack should be created" msgstr "Le répertoire dans lequel le paquet doit être créé" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "SOURCE_DIRECTORY" msgstr "RÉPERTOIRE_SOURCE" #: subprojects/extensions-tool/src/command-pack.c:475 msgid "Create an extension bundle" msgstr "Créer une extension empaquetée" #: subprojects/extensions-tool/src/command-pack.c:495 msgid "More than one source directory specified" msgstr "Plus d’un répertoire source indiqué" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "L’extension « %s » n’a pas de préférences\n" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "Impossible d’ouvrir les préférences de l’extension « %s » : %s\n" #: subprojects/extensions-tool/src/command-prefs.c:87 msgid "Opens extension preferences" msgstr "Ouvre les préférences de l’extension" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "Réinitialiser une extension" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "Impossible de désinstaller les extensions système\n" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "Impossible de désinstaller « %s »\n" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "Désinstaller une extension" #: subprojects/extensions-tool/src/main.c:76 msgid "Do not print error messages" msgstr "Ne pas afficher les messages d’erreur" #: subprojects/extensions-tool/src/main.c:249 msgid "Path" msgstr "Chemin" #: subprojects/extensions-tool/src/main.c:252 msgid "URL" msgstr "URL" #: subprojects/extensions-tool/src/main.c:255 msgid "Original author" msgstr "Auteur d’origine" #: subprojects/extensions-tool/src/main.c:261 #: subprojects/extensions-tool/src/main.c:263 #: subprojects/extensions-tool/src/main.c:265 msgid "Version" msgstr "Version" #: subprojects/extensions-tool/src/main.c:268 msgid "Enabled" msgstr "Activé" #: subprojects/extensions-tool/src/main.c:268 msgid "Yes" msgstr "Oui" #: subprojects/extensions-tool/src/main.c:268 msgid "No" msgstr "Non" #: subprojects/extensions-tool/src/main.c:271 msgid "State" msgstr "État" #: subprojects/extensions-tool/src/main.c:309 msgid "“version” takes no arguments" msgstr "« version » ne prend pas de paramètre" #: subprojects/extensions-tool/src/main.c:311 #: subprojects/extensions-tool/src/main.c:331 msgid "Usage:" msgstr "Utilisation :" #: subprojects/extensions-tool/src/main.c:314 msgid "Print version information and exit." msgstr "Afficher les informations de version et quitter." #: subprojects/extensions-tool/src/main.c:329 #: subprojects/extensions-tool/src/main.c:332 msgid "COMMAND" msgstr "COMMANDE" #: subprojects/extensions-tool/src/main.c:332 msgid "[ARGS…]" msgstr "[PARAMÈTRES…]" #: subprojects/extensions-tool/src/main.c:334 msgid "Commands:" msgstr "Commandes :" #: subprojects/extensions-tool/src/main.c:335 msgid "Print help" msgstr "Afficher l’aide" #: subprojects/extensions-tool/src/main.c:337 msgid "Enable extension" msgstr "Activer l’extension" #: subprojects/extensions-tool/src/main.c:338 msgid "Disable extension" msgstr "Désactiver l’extension" #: subprojects/extensions-tool/src/main.c:339 msgid "Reset extension" msgstr "Réinitialiser l’extension" #: subprojects/extensions-tool/src/main.c:340 msgid "Uninstall extension" msgstr "Désinstaller l’extension" #: subprojects/extensions-tool/src/main.c:341 msgid "List extensions" msgstr "Afficher la liste des extensions" #: subprojects/extensions-tool/src/main.c:342 #: subprojects/extensions-tool/src/main.c:343 msgid "Show extension info" msgstr "Afficher les infos de l’extension" #: subprojects/extensions-tool/src/main.c:344 msgid "Open extension preferences" msgstr "Ouvrir les préférences de l’extension" #: subprojects/extensions-tool/src/main.c:345 msgid "Create extension" msgstr "Créer une extension" #: subprojects/extensions-tool/src/main.c:346 msgid "Package extension" msgstr "Mettre en paquet l’extension" #: subprojects/extensions-tool/src/main.c:347 msgid "Install extension bundle" msgstr "Installer l’extension empaquetée" #: subprojects/extensions-tool/src/main.c:349 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "Utilisez « %s » pour obtenir une aide détaillée.\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "Basique" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "Une extension vide" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "Indicateur" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "Ajouter une icône dans la barre supérieure" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:4 msgid "Quick Settings Item" msgstr "Élément des paramètres rapides" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:5 msgid "Add an item to quick settings" msgstr "Ajouter un élément aux paramètres rapides" #. translators: #. * The device has been disabled #: subprojects/gvc/gvc-mixer-control.c:1872 msgid "Disabled" msgstr "Désactivé" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1879 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u sortie" msgstr[1] "%u sorties" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1889 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u entrée" msgstr[1] "%u entrées" #: subprojects/gvc/gvc-mixer-control.c:2872 msgid "System Sounds" msgstr "Sons système" #~ msgid "Move Titlebar Onscreen" #~ msgstr "Déplacer la barre de titre sur l’écran" #~ msgid "Stop conflicting session dialog closed" #~ msgstr "Fenêtre d’arrêt de sessions conflictuelles fermée" #, javascript-format #~ msgid "Try to login again to start a session for user %s." #~ msgstr "" #~ "Essayez de vous reconnecter et de démarrer une session pour l’utilisateur " #~ "%s." #, javascript-format #~ msgid "%s is now known as %s" #~ msgstr "%s est maintenant connu sous le nom de %s" #~ msgid "Network Manager" #~ msgstr "Gestionnaire de réseau" #~ msgid "Disabling" #~ msgstr "Désactivation" #~ msgid "Enabling" #~ msgstr "Activation" #~ msgid "Thunderbolt" #~ msgstr "Interface Thunderbolt" #~ msgid "No Matches" #~ msgstr "Aucune correspondance" #~ msgid "The extension had an error" #~ msgstr "L’extension a rencontré un problème" #~ msgid "The extension can be updated" #~ msgstr "L’extension peut être mise à jour" #~ msgid "Help" #~ msgstr "Aide" #~ msgid "Manually Installed" #~ msgstr "Installée manuellement" #~ msgid "Built-In" #~ msgstr "Intégrée" #~ msgid "Extension Updates Ready" #~ msgstr "Mises à jour d’extensions prêtes" #, javascript-format #~ msgid "%d %%" #~ msgstr "%d %%" #~ msgid "No Thanks" #~ msgstr "Non merci" #~ msgid "Screenshot / Screencast" #~ msgstr "Capture d’écran / capture vidéo" #~ msgid "Power Profiles" #~ msgstr "Profils d’énergie" #~ msgid "" #~ "Whether the default Bluetooth adapter had set up devices associated to it" #~ msgstr "Indique si l’adaptateur Bluetooth a des périphériques associés" #~ msgid "" #~ "The shell will only show a Bluetooth menu item if a Bluetooth adapter is " #~ "powered, or if there were devices set up associated with the default " #~ "adapter. This will be reset if the default adapter is ever seen not to " #~ "have devices associated to it." #~ msgstr "" #~ "Le shell n’affichera d’élément de menu Bluetooth que si un adaptateur " #~ "Bluetooth est allumé ou s’il y a des périphériques associés avec " #~ "l’adaptateur par défaut. Cela sera réinitialisé si l’adaptateur par " #~ "défaut se retrouve sans aucun périphérique associé." #~ msgid "Attach modal dialog to the parent window" #~ msgstr "Attacher les dialogues modaux à leur fenêtre parente" #~ msgid "" #~ "This key overrides the key in org.gnome.mutter when running GNOME Shell." #~ msgstr "" #~ "Cette clé prend le pas sur la clé dans org.gnome.mutter lorsque Shell de " #~ "GNOME est lancé." #~ msgid "Enable edge tiling when dropping windows on screen edges" #~ msgstr "Activer l’empilage des fenêtres déposées sur les bords de l’écran" #~ msgid "Workspaces are managed dynamically" #~ msgstr "Les espaces de travail sont gérés dynamiquement" #~ msgid "Workspaces only on primary monitor" #~ msgstr "Les espaces de travail sont uniquement sur l’écran principal" #~ msgid "Delay focus changes in mouse mode until the pointer stops moving" #~ msgstr "" #~ "Retarder les changements de focus en mode souris jusqu’à ce que le " #~ "pointeur arrête de bouger" #~ msgid "Region & Language Settings" #~ msgstr "Paramètres de langue et région" #~ msgid "Applications" #~ msgstr "Applications" #, javascript-format #~ msgid "Unable to start %s" #~ msgstr "Impossible de démarrer %s" #, javascript-format #~ msgid "Couldn’t find the %s application" #~ msgstr "Impossible de trouver l’application %s" #~ msgid "Evolution Calendar" #~ msgstr "Agenda d’Evolution" #~ msgid "Bluetooth On" #~ msgstr "Bluetooth activé" #~ msgid "Bluetooth Off" #~ msgstr "Bluetooth désactivé" #~ msgid "Location In Use" #~ msgstr "Localisation en cours d’utilisation" #~ msgid "Location Disabled" #~ msgstr "Localisation désactivée" #, javascript-format #~ msgid "%s Off" #~ msgstr "%s éteint" #, javascript-format #~ msgid "%s Connected" #~ msgstr "%s connecté" #, javascript-format #~ msgid "%s Unmanaged" #~ msgstr "%s non géré" #, javascript-format #~ msgid "%s Connecting" #~ msgstr "Connexion de %s en cours" #, javascript-format #~ msgid "%s Requires Authentication" #~ msgstr "Authentification nécessaire pour %s" #, javascript-format #~ msgid "Firmware Missing For %s" #~ msgstr "Micrologiciel manquant pour %s" #, javascript-format #~ msgid "%s Unavailable" #~ msgstr "%s non disponible" #, javascript-format #~ msgid "%s Connection Failed" #~ msgstr "Échec de connexion à %s" #, javascript-format #~ msgid "%s Hardware Disabled" #~ msgstr "Équipement %s désactivé" #, javascript-format #~ msgid "%s Disabled" #~ msgstr "%s désactivé" #~ msgid "Connect to Internet" #~ msgstr "Se connecter à Internet" #~ msgid "Airplane Mode is On" #~ msgstr "Le mode avion est activé" #~ msgid "Wi-Fi is disabled when airplane mode is on." #~ msgstr "Le Wi-Fi est désactivé quand le mode avion est activé." #~ msgid "Turn Off Airplane Mode" #~ msgstr "Désactiver le mode avion" #~ msgid "Wi-Fi is Off" #~ msgstr "Le Wi-Fi est désactivé" #~ msgid "Wi-Fi needs to be turned on in order to connect to a network." #~ msgstr "Le Wi-Fi a besoin d’être activé pour se connecter à un réseau." #~ msgid "Turn On Wi-Fi" #~ msgstr "Activer le Wi-Fi" #~ msgid "Select a network" #~ msgstr "Choisir un réseau" #~ msgid "Use hardware switch to turn off" #~ msgstr "Utiliser l’interrupteur matériel pour éteindre" #~ msgid "Select Network" #~ msgstr "Sélectionner un réseau" #~ msgid "Wi-Fi Settings" #~ msgstr "Paramètres Wi-Fi" #, javascript-format #~ msgid "%s Not Connected" #~ msgstr "%s non connecté" #~ msgid "unknown" #~ msgstr "inconnu" #~ msgid "connecting…" #~ msgstr "connexion…" #~ msgid "authentication required" #~ msgstr "authentification nécessaire" #~ msgid "connection failed" #~ msgstr "échec de connexion" #~ msgid "VPN Off" #~ msgstr "VPN désactivé" #, javascript-format #~ msgid "%s Wi-Fi Connection" #~ msgid_plural "%s Wi-Fi Connections" #~ msgstr[0] "%s connexion Wi-Fi." #~ msgstr[1] "%s connexions Wi-Fi." #~ msgid "Night Light Disabled" #~ msgstr "Mode nuit désactivé" #~ msgid "Resume" #~ msgstr "Reprendre" #~ msgid "Disable Until Tomorrow" #~ msgstr "Désactiver jusqu’à demain" #~ msgid "Fully Charged" #~ msgstr "Charge complète" #~ msgid "Not Charging" #~ msgstr "Pas en charge" #~ msgid "Estimating…" #~ msgstr "Estimation en cours…" #, javascript-format #~ msgid "%d∶%02d Remaining (%d %%)" #~ msgstr "%d∶%02d restant (%d %%)" #, javascript-format #~ msgid "%d∶%02d Until Full (%d %%)" #~ msgstr "%d∶%02d avant chargement complet (%d %%)" #~ msgid "Screen is Being Shared" #~ msgstr "L’écran est partagé" #~ msgid "Turn off" #~ msgstr "Éteindre" #~ msgid "Lock" #~ msgstr "Verrouiller" #~ msgid "Power Off / Log Out" #~ msgstr "Éteindre / Fermer la session" #~ msgid "Log Out" #~ msgstr "Fermer la session" #~ msgid "" #~ "Extensions can cause system issues, including performance problems. If " #~ "you encounter problems with your system, it is recommended to disable all " #~ "extensions." #~ msgstr "" #~ "Les extensions peuvent poser des problèmes au système, y compris au " #~ "niveau des performances. Si vous pensez être dans ce cas, il est " #~ "recommandé de désactiver toutes les extensions." #~ msgid "Enable introspection API" #~ msgstr "Activer l’API d’introspection" #~ msgid "" #~ "Enables a D-Bus API that allows to introspect the application state of " #~ "the shell." #~ msgstr "" #~ "Active l’API D-Bus, qui permet d’introspecter l’état d’application du " #~ "shell." #~ msgid "Failed to connect to GNOME Shell" #~ msgstr "Impossible de se connecter à Shell de GNOME" #~ msgid "Minimize" #~ msgstr "Minimiser" #~ msgid "Unmaximize" #~ msgstr "Réduire" #~ msgid "App Picker View" #~ msgstr "Vue du sélecteur d’applications" #~ msgid "Index of the currently selected view in the application picker." #~ msgstr "" #~ "Index de la vue actuellement sélectionnée dans le sélecteur " #~ "d’applications." #~ msgid "Frequently used applications will appear here" #~ msgstr "Les applications fréquemment utilisées apparaîtront ici" #~ msgid "Frequent" #~ msgstr "Fréquemment utilisées" #~ msgid "All" #~ msgstr "Toutes" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d" #~ msgstr "%A %-d %B" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d, %Y" #~ msgstr "%A %-d %B, %Y" #~ msgid "On" #~ msgstr "Actif" #~ msgid "Copy Error" #~ msgstr "Copier l’erreur" #~ msgid "Username…" #~ msgstr "Nom d’utilisateur…" #~ msgid "Password: " #~ msgstr "Mot de passe : " #~ msgid "Enter Password…" #~ msgstr "Saisissez un mot de passe…" #~ msgid "Next" #~ msgstr "Suivant" #~ msgctxt "button" #~ msgid "Sign In" #~ msgstr "Se connecter" #~ msgid "%A, %B %d" #~ msgstr "%A %d %B" #~ msgid "%d new message" #~ msgid_plural "%d new messages" #~ msgstr[0] "%d nouveau message" #~ msgstr[1] "%d nouveaux messages" #~ msgid "Rename" #~ msgstr "Renommer" #~ msgid "Type again:" #~ msgstr "Saisissez à nouveau :" #~ msgid "Authentication required by wireless network" #~ msgstr "L’authentification est requise par le réseau sans fil" #~ msgid "Mobile broadband network password" #~ msgstr "Mot de passe de la connexion mobile" #~ msgid "Account Settings" #~ msgstr "Paramètres du compte" #~ msgid "Orientation Lock" #~ msgstr "Verrouillage de l’orientation" 07070100000231000081A40000000000000000000000016712993F0001C7C0000000000000000000000000000000000000001B00000000gnome-shell-47.1/po/fur.po# Friulian translation for video-subtitles. # Copyright (C) 2016 video-subtitles's COPYRIGHT HOLDER # This file is distributed under the same license as the video-subtitles package. # Fabio Tomat , 2016. # msgid "" msgstr "" "Project-Id-Version: video-subtitles master\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues/\n" "POT-Creation-Date: 2024-03-16 16:54+0000\n" "PO-Revision-Date: 2024-04-16 20:57+0200\n" "Last-Translator: Fabio Tomat \n" "Language-Team: Friulian \n" "Language: fur\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-Editor: HaiPO 1.4 beta\n" "X-Generator: Poedit 3.4.2\n" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "Inviadôrs" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate pinned app 1" msgstr "Ative aplicazion fissade 1" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate pinned app 2" msgstr "Ative aplicazion fissade 2" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate pinned app 3" msgstr "Ative aplicazion fissade 3" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate pinned app 4" msgstr "Ative aplicazion fissade 4" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate pinned app 5" msgstr "Ative aplicazion fissade 5" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate pinned app 6" msgstr "Ative aplicazion fissade 6" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate pinned app 7" msgstr "Ative aplicazion fissade 7" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate pinned app 8" msgstr "Ative aplicazion fissade 8" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate pinned app 9" msgstr "Ative aplicazion fissade 9" #: data/50-gnome-shell-launchers.xml:46 msgid "Open new window of pinned app 1" msgstr "Vierç un gnûf barcon de aplicazion fissade 1" #: data/50-gnome-shell-launchers.xml:50 msgid "Open new window of pinned app 2" msgstr "Vierç un gnûf barcon de aplicazion fissade 2" #: data/50-gnome-shell-launchers.xml:54 msgid "Open new window of pinned app 3" msgstr "Vierç un gnûf barcon de aplicazion fissade 3" #: data/50-gnome-shell-launchers.xml:58 msgid "Open new window of pinned app 4" msgstr "Vierç un gnûf barcon de aplicazion fissade 4" #: data/50-gnome-shell-launchers.xml:62 msgid "Open new window of pinned app 5" msgstr "Vierç un gnûf barcon de aplicazion fissade 5" #: data/50-gnome-shell-launchers.xml:66 msgid "Open new window of pinned app 6" msgstr "Vierç un gnûf barcon de aplicazion fissade 6" #: data/50-gnome-shell-launchers.xml:70 msgid "Open new window of pinned app 7" msgstr "Vierç un gnûf barcon de aplicazion fissade 7" #: data/50-gnome-shell-launchers.xml:74 msgid "Open new window of pinned app 8" msgstr "Vierç un gnûf barcon de aplicazion fissade 8" #: data/50-gnome-shell-launchers.xml:78 msgid "Open new window of pinned app 9" msgstr "Vierç un gnûf barcon de aplicazion fissade 9" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2276 msgid "Screenshots" msgstr "Videadis" #: data/50-gnome-shell-screenshots.xml:9 #: data/org.gnome.shell.gschema.xml.in:287 msgid "Take a screenshot interactively" msgstr "Cature une videade in maniere interative" #: data/50-gnome-shell-screenshots.xml:12 #: data/org.gnome.shell.gschema.xml.in:299 msgid "Take a screenshot" msgstr "Cature une videade" #: data/50-gnome-shell-screenshots.xml:15 #: data/org.gnome.shell.gschema.xml.in:295 msgid "Take a screenshot of a window" msgstr "Cature une videade di un barcon" #: data/50-gnome-shell-screenshots.xml:18 #: data/org.gnome.shell.gschema.xml.in:291 msgid "Record a screencast interactively" msgstr "Regjistre un filmât dal schermi in maniere interative" #: data/50-gnome-shell-system.xml:6 js/ui/messageTray.js:1293 msgid "System" msgstr "Sisteme" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "Mostre la liste des notifichis" #: data/50-gnome-shell-system.xml:12 msgid "Open the quick settings menu" msgstr "Vierç il menù impostazions rapidis" #: data/50-gnome-shell-system.xml:15 msgid "Focus the active notification" msgstr "Met il focus ae notifiche ative" #: data/50-gnome-shell-system.xml:18 msgid "Show the overview" msgstr "Mostre la panoramiche" #: data/50-gnome-shell-system.xml:21 msgid "Show all apps" msgstr "Mostre dutis lis aplicazions" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "GNOME Shell" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "Gjestion barcons e inviament aplicazions" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" "Abilite i struments internis utii pai svilupadôrs e beta-tester vie Alt-F2" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Permet l'acès ai struments internis di debug e di analisi doprant il dialic " "ALT-F2." #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "UUID des estensions di abilitâ" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "Lis estensions par GNOME Shell a àn une proprietât UUID: cheste clâf a met " "in liste lis estensions di cjamâ. Si scugne meti in cheste liste dutis lis " "estensions che si vûl di cjariâ. Al è pussibil ancje modificâ cheste liste " "cun la modalitât DBus EnableExtension e DisableExtension su org.gnome.Shell." #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "UUID des estensions di sfuarçâ ae disabilitazion" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" "Lis estensions par GNOME Shell a àn une proprietât UUID: cheste clâf e liste " "lis estensions che si à di disabilitâ, ancje se cjariadis come part di une " "modalitât atuâl. Al è pussibil ancje modificâ cheste liste cun la modalitât " "DBus EnableExtension e DisableExtension su org.gnome.Shell. Cheste clâf e à " "precedence su la impostazion “enabled-extensions”." #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "Disabilite lis estensions dal utent" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" "Disabilite dutis lis estensions che l'utent al à abilitât cence vê " "interessât la impostazion “enabled-extension”." #: data/org.gnome.shell.gschema.xml.in:45 msgid "Allow extension installation" msgstr "Permet instalazion estensions" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "Allow users to install extensions in their home folder. If disabled, the " "InstallRemoteExtension D-Bus method will fail, and extensions are only " "loaded from system directories on startup. It does not affect extensions " "that are already loaded, so a change only takes full effect on the next " "login." msgstr "" "Permet ai utents di instalâ estensions tes lôrs cartelis home. Se " "disabilitât, il metodi D-Bus InstallRemoteExtension al falarà e al inviament " "lis estensions a vignaran cjariadis nome da lis cartelis di sisteme. Nol " "larà a tocjâ lis estensions che a son za cjariadis, duncje une modifiche e " "varà un efiet complet nome al acès sucessîf." #: data/org.gnome.shell.gschema.xml.in:56 msgid "Disables the validation of extension version compatibility" msgstr "Disabilite la convalide de compatibilitât di version des estensions" #: data/org.gnome.shell.gschema.xml.in:57 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "GNOME Shell al cjarie nome lis estensions che a disin di supuartâ la version " "di GNOME Shell atualmentri in esecuzion. Abilitant cheste opzion il control " "nol vignarà plui fat e al cirarà di cjariâ dutis lis estensions ignorant la " "version che a disin di supuartâ." #: data/org.gnome.shell.gschema.xml.in:65 msgid "List of desktop file IDs for favorite applications" msgstr "Liste di ID di file dal scritori par lis aplicazions preferidis" #: data/org.gnome.shell.gschema.xml.in:66 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" "Lis aplicazions che a corispuindin a chescj identificadôrs a vignaran " "mostrâts te aree dai preferîts." #: data/org.gnome.shell.gschema.xml.in:73 msgid "History for command (Alt-F2) dialog" msgstr "Storic comants pal dialic dai comants (Alt-F2)" #. Translators: looking glass is a debugger and inspector tool, see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/docs/looking-glass.md #: data/org.gnome.shell.gschema.xml.in:78 msgid "History for the looking glass dialog" msgstr "Storic pal dialic looking glass" #: data/org.gnome.shell.gschema.xml.in:82 msgid "Always show the “Log Out” action in the system menu" msgstr "Mostre simpri la azion “Jes” tal menu di sisteme" #: data/org.gnome.shell.gschema.xml.in:83 msgid "" "This key overrides the automatic hiding of the “Log out” action in the " "system menu for logged-in situations where there is a single, local, non-" "system user and only a single available session type (e.g. GNOME on Wayland)." msgstr "" "Cheste clâf e anule il platâ automatic de azion “Jes” tal menù di sisteme " "pes situazions di acès là che si à un singul utent, locâl, no di sisteme e " "dome un singul gjenar di session disponibil (p.e. GNOME su Wayland)." #: data/org.gnome.shell.gschema.xml.in:92 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "Specifiche se visâsi la password par montâ i filesystem lontans o cifrâts" #: data/org.gnome.shell.gschema.xml.in:93 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "La shell e domandarà une password cuant che un dispositîf cifrât o un " "filesystem lontan al vignarà montât. Se tu desideris salvâ la password par " "un ûs futûr, e sarà presinte une casele di selezion “Visasi Password”. " "Cheste clâf e stabilìs il valôr predefinît di cheste casele di selezion." #: data/org.gnome.shell.gschema.xml.in:102 msgid "The last selected non-default power profile" msgstr "L'ultin profîl energjetic no-predefinît che al è stât selezionât" #: data/org.gnome.shell.gschema.xml.in:103 msgid "" "Some systems support more than two power profiles. In order to still support " "toggling between two profiles, this key records the last selected non-" "default profile." msgstr "" "Cualchi sisteme al supuarte plui di doi profîi energjetics. Par podê " "supuartâ ancjemò il passaç tra doi profîi, cheste clâf e regjistre l'ultin " "profîl no-predefinît selezionât." #: data/org.gnome.shell.gschema.xml.in:111 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "" "La ultime version che par chê il dialic “Welcome to GNOME” al è stât mostrât" #: data/org.gnome.shell.gschema.xml.in:112 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can " "be used to effectively disable the dialog." msgstr "" "Cheste clâf e determine par cualis version il dialic “Benvignûts su GNOME” " "al è stât mostrât la ultime volte. Une stringhe vueide e rapresente la " "version plui vecje pussibile e un numar enormi al rapresentarà lis versions " "che ancjemò no esistin. Si pues doprâ il numar enormi par disabilitâ a ducj " "i efiets il dialic." #: data/org.gnome.shell.gschema.xml.in:145 msgid "Layout of the app picker" msgstr "Disposizion dal seletôr aplicazions" #: data/org.gnome.shell.gschema.xml.in:146 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" msgstr "" "Disposizion dal seletôr des aplicazions. Ogni vôs intal array e je une " "pagjine. Lis pagjinis a son archiviadis tal ordin che a vegnin fûr in GNOME " "Shell. Ogni pagjine e conten une cubie “application id” → 'data'. Pal " "moment, chescj valôrs a vegnin archiviâts come 'data': • “position”: la " "posizion de icone de aplicazion inte pagjine" #: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:172 msgid "Keybinding to shift between overview states" msgstr "La associazion i tascj par passâ tra i stâts de panoramiche" #: data/org.gnome.shell.gschema.xml.in:166 msgid "Keybinding to shift between session, window picker and app grid" msgstr "" "La associazion di tascj par passâ tra lis sessions, il seletôr di barcons e " "la gridele des aplicazions" #: data/org.gnome.shell.gschema.xml.in:173 msgid "Keybinding to shift between app grid, window picker and session" msgstr "" "La associazion di tascj par passâ tra la gridele des aplicazions, il seletôr " "dai barcons e lis sessions" #: data/org.gnome.shell.gschema.xml.in:179 msgid "Keybinding to open the “Show Applications” view" msgstr "Cumbinazion di tascj par vierzi la visuâl “Mostre Aplicazions”" #: data/org.gnome.shell.gschema.xml.in:180 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "" "Cumbinazion di tascj par vierzi la visuâl “Mostre Aplicazions” inte " "Panoramiche Ativitâts." #: data/org.gnome.shell.gschema.xml.in:187 msgid "Keybinding to open the overview" msgstr "Tast rapit associât par vierzi la panoramiche" #: data/org.gnome.shell.gschema.xml.in:188 msgid "Keybinding to open the Activities Overview." msgstr "Tast rapit associât par vierzi la visuâl Panoramiche Ativitâts." #: data/org.gnome.shell.gschema.xml.in:194 msgid "Keybinding to toggle the visibility of the notification list" msgstr "Associazion tascj par cambiâ la visibilitât de liste des notifichis" #: data/org.gnome.shell.gschema.xml.in:195 msgid "Keybinding to toggle the visibility of the notification list." msgstr "Associazion tascj par cambiâ la visibilitât de liste des notifichis." #: data/org.gnome.shell.gschema.xml.in:201 msgid "Keybinding to toggle the quick settings menu" msgstr "Tast rapit associât par comutâ il menù des impostazions rapidis" #: data/org.gnome.shell.gschema.xml.in:202 msgid "Keybinding to toggle the quick settings menu." msgstr "Tast rapit associât par comutâ il menù des impostazions rapidis." #: data/org.gnome.shell.gschema.xml.in:208 msgid "Keybinding to focus the active notification" msgstr "Tast rapit associât par meti a fûc la notifiche ative" #: data/org.gnome.shell.gschema.xml.in:209 msgid "Keybinding to focus the active notification." msgstr "Tast rapit associât par meti a fûc la notifiche ative." #: data/org.gnome.shell.gschema.xml.in:215 msgid "Switch to application 1" msgstr "Passe ae aplicazion 1" #: data/org.gnome.shell.gschema.xml.in:219 msgid "Switch to application 2" msgstr "Passe ae aplicazion 2" #: data/org.gnome.shell.gschema.xml.in:223 msgid "Switch to application 3" msgstr "Passe ae aplicazion 3" #: data/org.gnome.shell.gschema.xml.in:227 msgid "Switch to application 4" msgstr "Passe ae aplicazion 4" #: data/org.gnome.shell.gschema.xml.in:231 msgid "Switch to application 5" msgstr "Passe ae aplicazion 5" #: data/org.gnome.shell.gschema.xml.in:235 msgid "Switch to application 6" msgstr "Passe ae aplicazion 6" #: data/org.gnome.shell.gschema.xml.in:239 msgid "Switch to application 7" msgstr "Passe ae aplicazion 7" #: data/org.gnome.shell.gschema.xml.in:243 msgid "Switch to application 8" msgstr "Passe ae aplicazion 8" #: data/org.gnome.shell.gschema.xml.in:247 msgid "Switch to application 9" msgstr "Passe ae aplicazion 9" #: data/org.gnome.shell.gschema.xml.in:251 msgid "Open a new instance of application 1" msgstr "Vierç une gnove istance de aplicazion 1" #: data/org.gnome.shell.gschema.xml.in:255 msgid "Open a new instance of application 2" msgstr "Vierç une gnove istance de aplicazion 2" #: data/org.gnome.shell.gschema.xml.in:259 msgid "Open a new instance of application 3" msgstr "Vierç une gnove istance de aplicazion 3" #: data/org.gnome.shell.gschema.xml.in:263 msgid "Open a new instance of application 4" msgstr "Vierç une gnove istance de aplicazion 4" #: data/org.gnome.shell.gschema.xml.in:267 msgid "Open a new instance of application 5" msgstr "Vierç une gnove istance de aplicazion 5" #: data/org.gnome.shell.gschema.xml.in:271 msgid "Open a new instance of application 6" msgstr "Vierç une gnove istance de aplicazion 6" #: data/org.gnome.shell.gschema.xml.in:275 msgid "Open a new instance of application 7" msgstr "Vierç une gnove istance de aplicazion 7" #: data/org.gnome.shell.gschema.xml.in:279 msgid "Open a new instance of application 8" msgstr "Vierç une gnove istance de aplicazion 8" #: data/org.gnome.shell.gschema.xml.in:283 msgid "Open a new instance of application 9" msgstr "Vierç une gnove istance de aplicazion 9" #: data/org.gnome.shell.gschema.xml.in:308 #: data/org.gnome.shell.gschema.xml.in:335 msgid "Limit switcher to current workspace." msgstr "Limite il seletôr al spazi di lavôr in ûs." #: data/org.gnome.shell.gschema.xml.in:309 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "Se vêr, nome lis aplicazions che a àn barcons tal spazi di lavôr curint a " "son mostrâts tal seletôr. Se no, dutis lis aplicazions a vegnin includudis." #: data/org.gnome.shell.gschema.xml.in:326 msgid "The application icon mode." msgstr "La modalitât de icone de aplicazion." #: data/org.gnome.shell.gschema.xml.in:327 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-" "only” (shows only the application icon) or “both”." msgstr "" "Configure cemût che i barcons a saran viodûts intal scambiadôr. Lis " "pussibilitâts validis a son “thumbnail-only” (al mostre une anteprime dal " "barcon), “app-icon-only” (al mostre nome la icone de aplicazion) o " "“both” (al mostre ducj e doi)." #: data/org.gnome.shell.gschema.xml.in:336 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "Se vêr, nome i barcons dal spazi di lavôr curint a vegnin mostrâts intal " "seletôr. Se no, ducj i barcons a vegnin includûts." #: data/org.gnome.shell.gschema.xml.in:346 msgid "Locations" msgstr "Posizions" #: data/org.gnome.shell.gschema.xml.in:347 msgid "The locations to show in world clocks" msgstr "I lûcs di mostrâ tai orlois mondiâi" #: data/org.gnome.shell.gschema.xml.in:357 msgid "Automatic location" msgstr "Ubicazion automatiche" #: data/org.gnome.shell.gschema.xml.in:358 msgid "Whether to fetch the current location or not" msgstr "Indiche se recuperâ la posizion atuâl o mancul" #: data/org.gnome.shell.gschema.xml.in:365 msgid "Location" msgstr "Posizion" #: data/org.gnome.shell.gschema.xml.in:366 msgid "The location for which to show a forecast" msgstr "Il lûc che di chel mostrâ lis previsions" #. Keep in sync with subprojects/extensions-app #: data/org.gnome.Shell.Extensions.desktop.in.in:5 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/data/ui/extensions-window.ui:57 msgid "Extensions" msgstr "Estensions" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "Acès di rêt" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:277 msgid "Something’s gone wrong" msgstr "Alc al è lât stuart" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" "Si scusin, ma si à vût un probleme: lis impostazions par cheste estension no " "puedin jessi mostradis. Si consee di segnalâ il probleme ai autôrs de " "estension." #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "Detais tecnics" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "Pagjine principâl" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 msgid "Visit extension homepage" msgstr "Visite la pagjine principâl de estension" #: js/gdm/authPrompt.js:151 js/gdm/loginDialog.js:466 #: js/ui/audioDeviceSelection.js:66 js/ui/components/networkAgent.js:114 #: js/ui/components/polkitAgent.js:146 js/ui/endSessionDialog.js:438 #: js/ui/extensionDownloader.js:278 js/ui/shellMountOperation.js:384 #: js/ui/shellMountOperation.js:394 msgid "Cancel" msgstr "Anule" #: js/gdm/authPrompt.js:317 js/ui/components/networkAgent.js:214 #: js/ui/components/networkAgent.js:234 js/ui/components/networkAgent.js:266 #: js/ui/components/networkAgent.js:299 js/ui/components/networkAgent.js:338 #: js/ui/components/networkAgent.js:351 js/ui/components/polkitAgent.js:288 #: js/ui/shellMountOperation.js:334 msgid "Password" msgstr "Password" #: js/gdm/loginDialog.js:327 msgid "Choose Session" msgstr "Selezione Session" #. Translators: is running for #: js/gdm/loginDialog.js:424 #, javascript-format msgid "" "Remote login is not possible because a remote session is already running for " "%s. To login remotely, you must log out from the remote session or force " "stop it." msgstr "" "No tu puedis jentrâ di lontan parcè che une session lontane e je za in " "esecuzion par %s. Par jentrâ di lontan, tu scugnis disconetiti de session " "lontane o sfuarçâ la sô interuzion." #. Translators: is running for #: js/gdm/loginDialog.js:427 #, javascript-format msgid "" "Login is not possible because a remote session is already running for %s. To " "login, you must log out from the remote session or force stop it." msgstr "" "Nol è pussibil jentrâ parcè che une session lontane e je za in esecuzion par " "%s. Par jentrâ, tu scugnis disconetiti de session lontane e sfuarçâ la sô " "interuzion." #. Translators: is running for #: js/gdm/loginDialog.js:430 #, javascript-format msgid "" "Remote login is not possible because a local session is already running for " "%s. To login remotely, you must log out from the local session or force stop " "it." msgstr "" "No tu puedis jentrâ di lontan parcè che une session locâl e je za in " "esecuzion par %s. Par jetrnâ di lontan, tu scugnis disconetiti de session " "locâl o sfuarçâ la sô interuzion." #. Translators: is running for #: js/gdm/loginDialog.js:433 #, javascript-format msgid "" "Login is not possible because a session is already running for %s. To login, " "you must log out from the session or force stop it." msgstr "" "Nol è pussibil jentrâ parcè che e je za in esecuzion une session par %s. Par " "jentrâ, tu scugnis disconetiti de session o sfuarçâ la sô interuzion." #: js/gdm/loginDialog.js:442 msgid "Session Already Running" msgstr "Session za in esecuzion" #: js/gdm/loginDialog.js:454 msgid "" "Force stopping will quit any running apps and processes, and could result in " "data loss." msgstr "" "La interuzion sfuarçade e fasarà sierâ dutis lis aplicazions in esecuzion e " "i procès. Al è pussibil che chest al puarti a une pierdite di dâts." #: js/gdm/loginDialog.js:474 msgid "Force Stop" msgstr "Sfuarce interuzion" #: js/gdm/loginDialog.js:542 msgid "Not listed?" msgstr "No in liste?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:1010 #, javascript-format msgid "(e.g., user or %s)" msgstr "(p.e., utent o %s)" #: js/gdm/loginDialog.js:1015 js/ui/components/networkAgent.js:258 #: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:327 msgid "Username" msgstr "Non utent" #: js/gdm/loginDialog.js:1081 msgid "Login Attempt Timed Out" msgstr "Tentatîf di acès scjadût" #: js/gdm/loginDialog.js:1082 msgid "Login took too long, please try again" msgstr "L'acès al sta puartant vie masse timp, torne prove" #: js/gdm/loginDialog.js:1427 msgid "Login Window" msgstr "Barcon di acès" #: js/gdm/util.js:497 msgid "Authentication error" msgstr "Erôr di autenticazion" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:728 msgid "(or swipe finger across reader)" msgstr "(o passe cul dêt sul letôr)" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:733 msgid "(or place finger on reader)" msgstr "(o place il dêt sul letôr)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:91 msgctxt "search-result" msgid "Power Off" msgstr "Distudâ" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:94 msgid "power off;poweroff;shutdown;halt;stop" msgstr "distudâ;studâ;fermâ" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:99 msgctxt "search-result" msgid "Restart" msgstr "Torne invie" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:102 msgid "reboot;restart;" msgstr "torne invie;torne fâs partî;" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:107 msgctxt "search-result" msgid "Lock Screen" msgstr "Bloc schermi" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:110 msgid "lock screen" msgstr "bloc schermi" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:115 msgctxt "search-result" msgid "Log Out" msgstr "Jessî" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:118 msgid "logout;log out;sign off" msgstr "jessî;sierâ session;disconeti" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:123 msgctxt "search-result" msgid "Suspend" msgstr "Sospindi" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:126 msgid "suspend;sleep" msgstr "sospindi;polse" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:131 msgctxt "search-result" msgid "Switch User" msgstr "Cambi Utent" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:134 msgid "switch user" msgstr "cambiâ utent" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:141 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "bloc orientament;sbloc orientament;schermi;rotazion" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:146 msgctxt "search-result" msgid "Take a Screenshot" msgstr "Cature une videade" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:149 msgid "screenshot;screencast;snip;capture;record" msgstr "videade;screenshot;filmât;screencast;taie;cature;regjistre" #: js/misc/systemActions.js:249 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "Sbloche rotazion schermi" #: js/misc/systemActions.js:250 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "Bloche rotazion schermi" #: js/misc/util.js:139 msgid "Command not found" msgstr "Comant no cjatât" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:179 msgid "Could not parse command:" msgstr "Impussibil analizâ il comant:" #: js/misc/util.js:187 #, javascript-format msgid "Execution of “%s” failed:" msgstr "Esecuzion di '%s' falide:" #: js/misc/dateUtils.js:69 msgid "Just now" msgstr "Propite cumò" #: js/misc/dateUtils.js:72 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d minût indaûr" msgstr[1] "%d minûts indaûr" #: js/misc/dateUtils.js:79 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d ore indaûr" msgstr[1] "%d oris indaûr" #: js/misc/dateUtils.js:85 js/ui/dateMenu.js:185 msgid "Yesterday" msgstr "Îr" #: js/misc/dateUtils.js:88 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d zornade indaûr" msgstr[1] "%d zornadis indaûr" #: js/misc/dateUtils.js:95 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d setemane indaûr" msgstr[1] "%d setemanis indaûr" #: js/misc/dateUtils.js:102 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%d mês indaûr" msgstr[1] "%d mês indaûr" #: js/misc/dateUtils.js:108 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "%d an indaûr" msgstr[1] "%d agns indaûr" #. Translators: Time in 24h format #: js/misc/dateUtils.js:155 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/dateUtils.js:161 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "Îr, %H∶%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/dateUtils.js:167 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/dateUtils.js:173 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%-d di %B, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/dateUtils.js:179 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%-d di %B dal %Y, %H∶%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/dateUtils.js:184 msgid "%l∶%M %p" msgstr "%I∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/dateUtils.js:190 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "Îr, %I∶%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/dateUtils.js:196 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %I∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/dateUtils.js:202 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%-d di %B, %I∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/dateUtils.js:208 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%-d di %B dal %Y, %I∶%M %p" #: js/portalHelper/main.js:98 msgid "Your connection seems to be secure" msgstr "La tô conession e somee jessi sigure" #: js/portalHelper/main.js:104 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "La tô conession a chest acès hotspot no je sigure. Lis password o altris " "informazions che tu inserirâs su cheste pagjine e podaran jessi viodudis des " "personis chi ator." #: js/portalHelper/main.js:115 msgid "Hotspot Login" msgstr "Acès Hotspot" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:45 js/ui/inhibitShortcutsDialog.js:92 msgid "Deny" msgstr "Dinee" #: js/ui/accessDialog.js:46 js/ui/inhibitShortcutsDialog.js:101 msgid "Allow" msgstr "Pemet" #: js/ui/appDisplay.js:1775 msgid "Unnamed Folder" msgstr "Cartele cence non" #: js/ui/appFavorites.js:166 #, javascript-format msgid "%s has been pinned to the dash." msgstr "%s al è stât fissât tal slanç." #: js/ui/appFavorites.js:199 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "%s al è stât molât dal slanç." #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:51 msgid "Open Windows" msgstr "Barcons vierts" #: js/ui/appMenu.js:59 msgid "New Window" msgstr "Gnûf barcon" #: js/ui/appMenu.js:86 msgid "App Details" msgstr "Detais de aplicazion" #: js/ui/appMenu.js:102 msgid "Quit" msgstr "Jes" #: js/ui/appMenu.js:162 js/ui/dash.js:250 msgid "Unpin" msgstr "Mole" #: js/ui/appMenu.js:163 msgid "Pin to Dash" msgstr "Fisse sul Slanç" #: js/ui/appMenu.js:180 msgid "Launch using Integrated Graphics Card" msgstr "Invie doprant la schede grafiche integrade" #: js/ui/appMenu.js:181 msgid "Launch using Discrete Graphics Card" msgstr "Invie doprant une schede grafiche discrete" #: js/ui/audioDeviceSelection.js:46 msgid "Select Audio Device" msgstr "Selezione dispositîf sonôr" #: js/ui/audioDeviceSelection.js:61 js/ui/status/volume.js:83 msgid "Sound Settings" msgstr "Impostazions suns" #: js/ui/audioDeviceSelection.js:74 msgid "Headphones" msgstr "Cufis" #: js/ui/audioDeviceSelection.js:76 msgid "Headset" msgstr "Cufis cun microfon" #: js/ui/audioDeviceSelection.js:78 js/ui/status/volume.js:358 msgid "Microphone" msgstr "Microfon" #: js/ui/backgroundMenu.js:15 msgid "Change Background…" msgstr "Cambie fonts…" #: js/ui/backgroundMenu.js:17 msgid "Display Settings" msgstr "Impostazions visôr" #: js/ui/backgroundMenu.js:18 msgid "Settings" msgstr "Impostazions" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:39 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:65 msgctxt "grid sunday" msgid "S" msgstr "D" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:67 msgctxt "grid monday" msgid "M" msgstr "L" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:69 msgctxt "grid tuesday" msgid "T" msgstr "M" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:71 msgctxt "grid wednesday" msgid "W" msgstr "M" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:73 msgctxt "grid thursday" msgid "T" msgstr "J" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:75 msgctxt "grid friday" msgid "F" msgstr "V" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:77 msgctxt "grid saturday" msgid "S" msgstr "S" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:428 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:438 msgid "%OB %Y" msgstr "%OB dal %Y" #: js/ui/calendar.js:500 msgid "Previous month" msgstr "Mês indaûr" #: js/ui/calendar.js:518 msgid "Next month" msgstr "Prossim mês" #: js/ui/calendar.js:669 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:728 msgid "Week %V" msgstr "Setemane %V" #: js/ui/calendar.js:920 msgid "No Notifications" msgstr "Nissune notifiche" #: js/ui/calendar.js:976 msgid "Do Not Disturb" msgstr "No sta disturbâ" #: js/ui/calendar.js:997 msgid "Clear" msgstr "Nete" #: js/ui/calendar.js:1001 msgctxt "action" msgid "Clear all notifications" msgstr "Nete dutis lis notifichis" #. Translators: %s is an application name #: js/ui/closeDialog.js:44 #, javascript-format msgid "“%s” is not responding." msgstr "“%s” nol rispuint." #: js/ui/closeDialog.js:45 msgid "" "You may choose to wait a short while for it to continue or force the app to " "quit entirely." msgstr "" "Tu puedis sielzi di spietâ un pôc che al continui o sfuarçâ la jessude de " "aplicazion." #: js/ui/closeDialog.js:73 msgid "Force Quit" msgstr "Sfuarce jessude" #: js/ui/closeDialog.js:78 msgid "Wait" msgstr "Spiete" #: js/ui/components/automountManager.js:84 msgid "External drive connected" msgstr "Dispositîf esterni tacât" #: js/ui/components/automountManager.js:96 msgid "External drive disconnected" msgstr "Dispositîf esterni distacât" #: js/ui/components/automountManager.js:207 msgid "Unable to unlock volume" msgstr "Impussibil sblocâ il volum" #: js/ui/components/automountManager.js:208 msgid "The installed udisks version does not support the PIM setting" msgstr "La version di udisks instalade no supuarte la impostazion PIM" #: js/ui/components/autorunManager.js:200 #, javascript-format msgid "Open with %s" msgstr "Vierç cun %s" #: js/ui/components/networkAgent.js:96 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router." msgstr "" "In alternative al è pussibil conetisi fracant il boton “WPS” sul router." #: js/ui/components/networkAgent.js:108 js/ui/status/bluetooth.js:246 #: js/ui/status/network.js:360 js/ui/status/network.js:444 msgid "Connect" msgstr "Conet" #: js/ui/components/networkAgent.js:223 msgid "Key" msgstr "Clâf" #: js/ui/components/networkAgent.js:274 js/ui/components/networkAgent.js:313 msgid "Private key password" msgstr "Password clâf privade" #: js/ui/components/networkAgent.js:307 msgid "Identity" msgstr "Identitât" #: js/ui/components/networkAgent.js:333 msgid "Service" msgstr "Servizi" #: js/ui/components/networkAgent.js:371 js/ui/components/networkAgent.js:407 #: js/ui/components/networkAgent.js:750 js/ui/components/networkAgent.js:771 msgid "Authentication required" msgstr "Autenticazion necessarie" #: js/ui/components/networkAgent.js:372 js/ui/components/networkAgent.js:751 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network " "“%s”." msgstr "" "Si scugne meti une password o une clâf di cifradure par jentrâ te rêt cence " "fîl \"%s\"." #: js/ui/components/networkAgent.js:376 js/ui/components/networkAgent.js:755 msgid "Wired 802.1X authentication" msgstr "Autenticazion vie fîl 802.1X" #: js/ui/components/networkAgent.js:379 msgid "Network name" msgstr "Non rêt" #: js/ui/components/networkAgent.js:387 js/ui/components/networkAgent.js:759 msgid "DSL authentication" msgstr "Autenticazion DSL" #: js/ui/components/networkAgent.js:394 js/ui/components/networkAgent.js:764 msgid "PIN code required" msgstr "Si pretint un codiç PIN" #: js/ui/components/networkAgent.js:395 js/ui/components/networkAgent.js:765 msgid "PIN code is needed for the mobile broadband device" msgstr "Si scugne meti un codiç PIN pal dispositîf a bande largje mobil" #: js/ui/components/networkAgent.js:397 msgid "PIN" msgstr "PIN" #: js/ui/components/networkAgent.js:408 js/ui/components/networkAgent.js:756 #: js/ui/components/networkAgent.js:760 js/ui/components/networkAgent.js:772 #: js/ui/components/networkAgent.js:776 #, javascript-format msgid "A password is required to connect to “%s”." msgstr "E covente une password par tacâsi a '%s'." #: js/ui/components/networkAgent.js:775 msgid "VPN password" msgstr "Password VPN" #: js/ui/components/polkitAgent.js:46 msgid "Authentication Required" msgstr "Autenticazion Necessarie" #: js/ui/components/polkitAgent.js:86 msgid "Administrator" msgstr "Aministradôr" #: js/ui/components/polkitAgent.js:151 msgid "Authenticate" msgstr "Autentiche" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:265 js/ui/shellMountOperation.js:417 msgid "Sorry, that didn’t work. Please try again." msgstr "Mi displâs, no je lade drete. Prove di gnûf." #: js/ui/ctrlAltTab.js:25 js/ui/overviewControls.js:418 msgid "Windows" msgstr "Barcons" #: js/ui/dash.js:206 js/ui/dash.js:252 msgid "Show Apps" msgstr "Mostre Aplicazions" #. Translators: this is the name of the dock/favorites area on #. the bottom of the overview #: js/ui/dash.js:410 msgid "Dash" msgstr "Slanç" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:101 msgid "%B %-d %Y" msgstr "%-d di %B dal %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:108 msgid "%A %B %e %Y" msgstr "%A %e di %B dal %Y" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:174 msgctxt "calendar heading" msgid "%B %-d" msgstr "%-d di %B" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:177 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%-d di %B dal %Y" #: js/ui/dateMenu.js:183 msgid "Today" msgstr "Vuê" #: js/ui/dateMenu.js:187 msgid "Tomorrow" msgstr "Doman" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:218 msgctxt "event list time" msgid "All Day" msgstr "Dut il dì" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:240 msgid "%m/%d" msgstr "%d/%m" #: js/ui/dateMenu.js:291 msgid "No Events" msgstr "Nissun event" #: js/ui/dateMenu.js:413 msgid "Add world clocks…" msgstr "Zonte orlois mondiâi…" #: js/ui/dateMenu.js:414 msgid "World Clocks" msgstr "Orlois mondiâi" #: js/ui/dateMenu.js:704 msgid "Loading…" msgstr "Daûr a cjariâ…" #: js/ui/dateMenu.js:714 msgid "Go online for weather information" msgstr "Va in rêt pes informazions sul timp" #: js/ui/dateMenu.js:716 msgid "Weather information is currently unavailable" msgstr "Lis informazions sul timp al moment no son disponibilis" #: js/ui/dateMenu.js:726 msgid "Weather" msgstr "Timp" #: js/ui/dateMenu.js:728 msgid "Select weather location…" msgstr "Selezione posizion meteo…" #: js/ui/endSessionDialog.js:48 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "Termine session di %s" #: js/ui/endSessionDialog.js:49 msgctxt "title" msgid "Log Out" msgstr "Termine session" #: js/ui/endSessionDialog.js:52 #, javascript-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "%s al jessarà in automatic chi di %d secont." msgstr[1] "%s al jessarà in automatic chi di %d seconts." #: js/ui/endSessionDialog.js:58 #, javascript-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "Tu jessarâs in automatic chi di %d secont." msgstr[1] "Tu jessarâs in automatic chi di %d seconts." #: js/ui/endSessionDialog.js:65 msgctxt "button" msgid "Log Out" msgstr "Jes" #: js/ui/endSessionDialog.js:71 js/ui/status/system.js:176 msgctxt "title" msgid "Power Off" msgstr "Distude" #: js/ui/endSessionDialog.js:72 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Instale inzornaments e distude" #: js/ui/endSessionDialog.js:75 #, javascript-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "Il sisteme si distudarà in automatic chi di %d secont." msgstr[1] "Il sisteme si distudarà in automatic chi di %d seconts." #: js/ui/endSessionDialog.js:79 js/ui/endSessionDialog.js:98 msgctxt "checkbox" msgid "Install pending software updates" msgstr "Instale i inzornaments software in spiete" #: js/ui/endSessionDialog.js:83 msgctxt "button" msgid "Power Off" msgstr "Distude" #: js/ui/endSessionDialog.js:90 msgctxt "title" msgid "Restart" msgstr "Torne invie" #: js/ui/endSessionDialog.js:91 msgctxt "title" msgid "Install Updates & Restart" msgstr "Instale inzornaments e torne invie" #: js/ui/endSessionDialog.js:94 #, javascript-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "Il sisteme si tornarà a inviâ in automatic chi di %d secont." msgstr[1] "Il sisteme si tornarà a inviâ in automatic chi di %d secont." #: js/ui/endSessionDialog.js:102 msgctxt "button" msgid "Restart" msgstr "Torne invie" #: js/ui/endSessionDialog.js:110 msgctxt "title" msgid "Restart & Install Updates" msgstr "Torne a inviâ e instale inzornaments" #: js/ui/endSessionDialog.js:113 #, javascript-format msgid "The system will automatically restart and install updates in %d second." msgid_plural "" "The system will automatically restart and install updates in %d seconds." msgstr[0] "" "Il sisteme al tornarà a inviâsi in automatic instalant i inzornaments chi di " "%d secont." msgstr[1] "" "Il sisteme al tornarà a inviâsi in automatic instalant i inzornaments chi di " "%d seconts." #: js/ui/endSessionDialog.js:120 js/ui/endSessionDialog.js:141 msgctxt "button" msgid "Restart & Install" msgstr "Torne invie e instale" #: js/ui/endSessionDialog.js:122 msgctxt "button" msgid "Install & Power Off" msgstr "Instale e distude" #: js/ui/endSessionDialog.js:123 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Distude dopo vê instalât i inzornaments" #: js/ui/endSessionDialog.js:130 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "Torne invie e instale avanzament" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:135 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "%s %s al vignarà instalât dopo vê tornât a inviâ il computer. La instalazion " "dal avanzament e pues tirâ a dilunc: siguriti di vê fat i backup e che il to " "computer al sedi tacât." #: js/ui/endSessionDialog.js:284 msgid "Low battery power: please plug in before installing updates." msgstr "" "Cjare de batarie basse: par plasê tache la spine prime di instalâ i " "inzornaments." #: js/ui/endSessionDialog.js:293 msgid "Some applications are busy or have unsaved work" msgstr "Cualchi aplicazion e je impegnade opûr e à lavôrs no salvâts" #: js/ui/endSessionDialog.js:298 msgid "Other users are logged in" msgstr "Altris utents a son jentrâts" #: js/ui/endSessionDialog.js:468 msgctxt "button" msgid "Boot Options" msgstr "Opzions di inviament" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:673 #, javascript-format msgid "%s (remote)" msgstr "%s (esterni)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:676 #, javascript-format msgid "%s (console)" msgstr "%s (locâl vie tastiere)" #: js/ui/extensionDownloader.js:282 msgid "Install" msgstr "Instale" #: js/ui/extensionDownloader.js:288 msgid "Install Extension" msgstr "Instale estension" #: js/ui/extensionDownloader.js:289 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "Scjariâ e instalâ '%s' da extensions.gnome.org?" #: js/ui/extensionSystem.js:354 msgid "Extension Updates Available" msgstr "Inzonraments di estensions disponibii" #: js/ui/extensionSystem.js:355 msgid "Extension updates are ready to be installed." msgstr "I inzornaments des estensions a son pronts par jessi instalâts." #: js/ui/inhibitShortcutsDialog.js:70 msgid "Allow inhibiting shortcuts" msgstr "Permet inibizion scurtis" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:73 #, javascript-format msgid "The app %s wants to inhibit shortcuts" msgstr "La aplicazion %s e vûl inibî lis scurtis" #: js/ui/inhibitShortcutsDialog.js:74 msgid "An app wants to inhibit shortcuts" msgstr "Une aplicazion e vûl inibî lis scurtis" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:81 #, javascript-format msgid "You can restore shortcuts by pressing %s." msgstr "Si pues ripristinâ lis scurtis fracant %s." #: js/ui/kbdA11yDialog.js:34 msgid "Slow Keys Turned On" msgstr "Tascj lents ativâts" #: js/ui/kbdA11yDialog.js:35 msgid "Slow Keys Turned Off" msgstr "Tascj lents disativâts" #: js/ui/kbdA11yDialog.js:36 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "Si à apene tignût fracât par 8 seconts il tast Maiusc. Chê e je la scurte pe " "funzion tascj lents, che e determine il mût di lavorâ de tastiere." #: js/ui/kbdA11yDialog.js:42 msgid "Sticky Keys Turned On" msgstr "Tascj tacadiçs ativâts" #: js/ui/kbdA11yDialog.js:43 msgid "Sticky Keys Turned Off" msgstr "Tascj tacadiçs disativâts" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "Si à apene fracât par 5 voltis, une daûr di chê altre, il tast Maiusc. Chê e " "je la scurte pe funzion Tascj singui/tacadiçs, che e determine il mût di " "lavorâ de tastiere." #: js/ui/kbdA11yDialog.js:47 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" "A son stâts fracâts doi tascj adun o cinc voltis in file il tast Maiusc. " "Chest al disative la funzion tascj singui/tacadiçs, che al determine il mût " "di lavorâ de tastiere." #: js/ui/kbdA11yDialog.js:57 msgid "Leave On" msgstr "Lasse ativât" #: js/ui/kbdA11yDialog.js:57 msgid "Turn On" msgstr "Impie" #: js/ui/kbdA11yDialog.js:67 js/ui/status/network.js:455 msgid "Turn Off" msgstr "Distude" #: js/ui/kbdA11yDialog.js:67 msgid "Leave Off" msgstr "Lasse disativât" #: js/ui/keyboard.js:181 js/ui/status/keyboard.js:899 msgid "Keyboard Settings" msgstr "Impostazions tastiere" #: js/ui/lookingGlass.js:724 msgid "No extensions installed" msgstr "Nissune estension instalade" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:785 #, javascript-format msgid "%s has not emitted any errors." msgstr "%s nol a dât fûr nissun erôr." #: js/ui/lookingGlass.js:791 msgid "Hide Errors" msgstr "Tapone Erôrs" #: js/ui/lookingGlass.js:795 js/ui/lookingGlass.js:872 msgid "Show Errors" msgstr "Mostre Erôrs" #: js/ui/lookingGlass.js:804 msgid "Active" msgstr "Ative" #: js/ui/lookingGlass.js:807 msgid "Inactive" msgstr "Disativade" #: js/ui/lookingGlass.js:809 msgid "Error" msgstr "Erôr" #: js/ui/lookingGlass.js:811 msgid "Out of date" msgstr "No inzornât" #: js/ui/lookingGlass.js:813 msgid "Downloading" msgstr "Daur a scjamâ" #: js/ui/lookingGlass.js:815 msgid "Deactivating" msgstr "Disativazion" #: js/ui/lookingGlass.js:817 msgid "Activating" msgstr "In ativazion" #: js/ui/lookingGlass.js:850 msgid "View Source" msgstr "Viôt sorzint" #: js/ui/lookingGlass.js:861 msgid "Web Page" msgstr "Pagjine Web" #: js/ui/main.js:279 msgid "System was put in unsafe mode" msgstr "Il sisteme al è stât metût in modalitât no sigure" #: js/ui/main.js:280 msgid "Apps now have unrestricted access" msgstr "Cumò lis aplicazions a àn acès ilimitât" #: js/ui/main.js:283 js/ui/overview.js:54 msgid "Undo" msgstr "Anule" #: js/ui/main.js:340 msgid "Logged in as a privileged user" msgstr "Jentre come utent privilegjât" #: js/ui/main.js:341 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" "Si varès di evitâ di eseguî une session come utent privilegjât par resons di " "sigurece. Se pussibil, tu varessis di jentrâ come utent normâl." #: js/ui/main.js:389 msgid "Screen Lock disabled" msgstr "Bloc dal schermi disabilitât" #: js/ui/main.js:390 msgid "Screen Locking requires the GNOME display manager." msgstr "Il bloc dal schermi al à bisugne dal gjestôr dai visôrs di GNOME." #. Translators: this is the string displayed in the header when a message #. source doesn't have a name #: js/ui/messageList.js:400 msgid "Unknown App" msgstr "Aplicazion no cognossude" #: js/ui/messageTray.js:328 js/ui/messageTray.js:330 msgid "Notification sound" msgstr "Sun de notifiche" #: js/ui/mpris.js:198 msgid "Unknown artist" msgstr "Artist no cognossût" #: js/ui/mpris.js:208 msgid "Unknown title" msgstr "Titul no cognossût" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:342 msgid "Type to search" msgstr "Scrîf par cirî" #: js/ui/overviewControls.js:406 msgid "Apps" msgstr "Aplicazions" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:67 msgid "Overview" msgstr "Panoramiche" #: js/ui/padOsd.js:100 msgid "New shortcut…" msgstr "Gnove scurte…" #: js/ui/padOsd.js:153 msgid "App defined" msgstr "Aplicazion definide" #: js/ui/padOsd.js:154 msgid "Show on-screen help" msgstr "Mostre jutori a schermi" #: js/ui/padOsd.js:155 msgid "Switch monitor" msgstr "Cambie visôr" #: js/ui/padOsd.js:156 msgid "Assign keystroke" msgstr "Assegne batidure" #: js/ui/padOsd.js:225 msgid "Done" msgstr "Fat" #: js/ui/padOsd.js:728 msgid "Edit…" msgstr "Modifiche…" # masculin o feminin #: js/ui/padOsd.js:775 msgid "None" msgstr "Nissune" #: js/ui/padOsd.js:846 msgid "Press a button to configure" msgstr "Frache un boton par configurâ" #: js/ui/padOsd.js:847 msgid "Press Esc to exit" msgstr "Frache Esc par jessî" #: js/ui/padOsd.js:850 msgid "Press any key to exit" msgstr "Frache un tast par jessî" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:425 msgid "Activities" msgstr "Ativitâts" #: js/ui/panel.js:506 msgctxt "System menu in the top bar" msgid "System" msgstr "Sisteme" #: js/ui/panel.js:680 msgid "Top Bar" msgstr "Sbare parsore" #: js/ui/quickSettings.js:187 msgid "Open menu" msgstr "Vierç il menù" #: js/ui/runDialog.js:63 msgid "Run a Command" msgstr "Eseguìs un comant" #: js/ui/runDialog.js:78 msgid "Press ESC to close" msgstr "Frache Esc par sierâ" # torne invie o torne tache #: js/ui/runDialog.js:243 msgid "Restart is not available on Wayland" msgstr "Il tornâ a inviâ nol è disponibil in Wayland" #: js/ui/runDialog.js:248 msgid "Restarting…" msgstr "Daûr a tornâ a inviâ…" #: js/ui/screenShield.js:235 msgid "GNOME needs to lock the screen" msgstr "GNOME al à di blocâ il visôr" #: js/ui/screenShield.js:276 js/ui/screenShield.js:669 msgid "Unable to lock" msgstr "Impussibil blocâ" #: js/ui/screenShield.js:277 js/ui/screenShield.js:670 msgid "Lock was blocked by an app" msgstr "Il bloc al è stât dineât di une aplicazion" #: js/ui/screenshot.js:1254 msgid "Selection" msgstr "Selezion" #: js/ui/screenshot.js:1264 msgid "Area Selection" msgstr "Selezion de aree" #: js/ui/screenshot.js:1269 msgid "Screen" msgstr "Schermi" #: js/ui/screenshot.js:1279 msgid "Screen Selection" msgstr "Selezion dal schermi" #: js/ui/screenshot.js:1284 msgid "Window" msgstr "Barcon" #: js/ui/screenshot.js:1294 msgid "Window Selection" msgstr "Selezion dal barcon" #. Translators: entry in the window right click menu. #: js/ui/screenshot.js:1319 js/ui/status/system.js:113 js/ui/windowMenu.js:30 msgid "Take Screenshot" msgstr "Cature Videade" #: js/ui/screenshot.js:1335 msgid "Record Screen" msgstr "Regjistre il schermi" #. Translators: since this string refers to an action, #. it needs to be phrased as a verb. #: js/ui/screenshot.js:1352 msgid "Capture" msgstr "Acuisìs" #: js/ui/screenshot.js:1374 msgid "Show Pointer" msgstr "Mostre pontadôr" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1998 msgid "Screencasts" msgstr "Filmâts di schermi" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast from 07-17-2013 10:00:46 PM" #: js/ui/screenshot.js:2003 #, no-c-format msgid "Screencast from %d %t" msgstr "Trasmission dal schermi di %d %t" #. Translators: notification title. #: js/ui/screenshot.js:2049 msgid "Screencast recorded" msgstr "Filmât dal schermi regjistrât" #. Translators: notification title. #: js/ui/screenshot.js:2062 msgid "Screencast failed to start" msgstr "La trasmission dal schermi no je rivade a inviâsi" #. Translators: notification title. #: js/ui/screenshot.js:2068 msgid "Screencast ended: Out of disk space" msgstr "La trasmission dal schermi e je stade terminade: spazi su disc esaurît" #. We can encourage user to try again on service crashes since the #. recorder will auto-blocklist the pipeline that crashed. #. Translators: notification title. #: js/ui/screenshot.js:2074 msgid "Screencast ended unexpectedly, please try again" msgstr "" "La trasmission dal schermi e je stade terminade in maniere inspietade, torne " "prove" #. Translators: notification title. #: js/ui/screenshot.js:2077 msgid "Screencast ended unexpectedly" msgstr "Filmât dal schermi terminât in maniere inspietade" #. Translators: notification source name. #: js/ui/screenshot.js:2087 js/ui/screenshot.js:2329 msgid "Screenshot" msgstr "Videade" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:2094 msgid "Click here to view the video." msgstr "Fâs clic achì par viodi il video." #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:2102 js/ui/screenshot.js:2345 msgid "Show in Files" msgstr "Mostre in Files" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2289 #, javascript-format msgid "Screenshot from %s" msgstr "Videade di %s" #. Translators: notification title. #: js/ui/screenshot.js:2335 msgid "Screenshot captured" msgstr "Videade caturade" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2337 msgid "You can paste the image from the clipboard." msgstr "Tu puedis tacâ la imagjin da lis notis." #: js/ui/screenshot.js:2393 js/ui/screenshot.js:2557 msgid "Screenshot taken" msgstr "Videade caturade" #: js/ui/search.js:831 msgid "Searching…" msgstr "Daûr a cirî…" #: js/ui/search.js:833 msgid "No results." msgstr "Nissun risultât." # o ancjemò %d #: js/ui/search.js:964 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "%d altri" msgstr[1] "%d altris" #: js/ui/searchController.js:89 #: subprojects/extensions-app/data/ui/extensions-window.ui:73 msgid "Search" msgstr "Cîr" #: js/ui/shellEntry.js:23 msgid "Copy" msgstr "Copie" #: js/ui/shellEntry.js:28 msgid "Paste" msgstr "Tache" #: js/ui/shellEntry.js:80 msgid "Show Text" msgstr "Mostre Test" #: js/ui/shellEntry.js:82 msgid "Hide Text" msgstr "Plate Test" #: js/ui/shellEntry.js:176 msgid "Caps lock is on." msgstr "BlocMaiusc al è atîf." #: js/ui/shellMountOperation.js:288 msgid "Hidden Volume" msgstr "Volum platât" #: js/ui/shellMountOperation.js:291 msgid "Windows System Volume" msgstr "Volum di sisteme Windows" #: js/ui/shellMountOperation.js:294 msgid "Uses Keyfiles" msgstr "Al dopre i File-clâf" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:302 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead." msgstr "" "Par sblocâ un volum che al dopre i file-clâf dopre invezit il program di " "utilitât %s." #: js/ui/shellMountOperation.js:306 msgid "" "You need an external utility like Disks to unlock a volume that uses " "keyfiles." msgstr "" "Ti covente une utilitât esterne come Discs par sblocâ un volum che al " "dopre i keyfiles (files clâf)." #: js/ui/shellMountOperation.js:314 msgid "PIM Number" msgstr "Numar PIM" #: js/ui/shellMountOperation.js:373 msgid "Remember Password" msgstr "Visâsi Password" #: js/ui/shellMountOperation.js:388 msgid "Unlock" msgstr "Sbloche" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:402 #, javascript-format msgid "Open %s" msgstr "Vierç %s" #: js/ui/shellMountOperation.js:438 msgid "The PIM must be a number or empty." msgstr "Il PIM al scugne jessi un numar o vueit." #: js/ui/status/accessibility.js:36 msgid "Accessibility" msgstr "Acès facilitât" #: js/ui/status/accessibility.js:46 msgid "High Contrast" msgstr "Contrast elevât" #: js/ui/status/accessibility.js:49 msgid "Zoom" msgstr "Ingrandiment" #: js/ui/status/accessibility.js:56 msgid "Screen Reader" msgstr "Letôr schermi" #: js/ui/status/accessibility.js:60 msgid "Screen Keyboard" msgstr "Tastiere a Visôr" #: js/ui/status/accessibility.js:64 msgid "Visual Alerts" msgstr "Avertencis visuâls" #: js/ui/status/accessibility.js:68 msgid "Sticky Keys" msgstr "Tascj tacadiçs" #: js/ui/status/accessibility.js:72 msgid "Slow Keys" msgstr "Tascj Lents" #: js/ui/status/accessibility.js:76 msgid "Bounce Keys" msgstr "Tascj che si sbalcin" #: js/ui/status/accessibility.js:80 msgid "Mouse Keys" msgstr "Mouse di tastiere" #: js/ui/status/accessibility.js:85 msgid "Accessibility Settings" msgstr "Impostazions di acès facilitât" #: js/ui/status/accessibility.js:142 msgid "Large Text" msgstr "Test Larc" #: js/ui/status/autoRotate.js:14 msgid "Auto Rotate" msgstr "Ribalte in automatic" #: js/ui/status/backgroundApps.js:156 msgctxt "title" msgid "Background Apps" msgstr "Aplicazions in sotfont" #: js/ui/status/backgroundApps.js:171 msgid "Apps known to be running without a window" msgstr "Aplicazions cognossudis che a zirin cence un barcon" #: js/ui/status/backgroundApps.js:182 msgid "App Settings" msgstr "Impostazions aplicazion" #: js/ui/status/backgroundApps.js:239 msgid "No Background Apps" msgstr "Nissune aplicazion in sotfont" #: js/ui/status/backgroundApps.js:241 #, javascript-format msgid "%d Background App" msgid_plural "%d Background Apps" msgstr[0] "%d aplicazion in sotfont" msgstr[1] "%d aplicazions in sotfont" #: js/ui/status/backlight.js:40 msgid "Keyboard Brightness" msgstr "Luminositât tastiere" #: js/ui/status/backlight.js:80 msgid "Off" msgstr "Distudât" #: js/ui/status/backlight.js:81 msgid "Low" msgstr "Basse" #: js/ui/status/backlight.js:82 msgid "High" msgstr "Elevade" #: js/ui/status/backlight.js:148 js/ui/status/keyboard.js:881 msgid "Keyboard" msgstr "Tastiere" #: js/ui/status/bluetooth.js:246 js/ui/status/network.js:360 msgid "Disconnect" msgstr "Disconet" #: js/ui/status/bluetooth.js:263 js/ui/status/bluetooth.js:265 msgid "Bluetooth" msgstr "Bluetooth" #: js/ui/status/bluetooth.js:288 js/ui/status/network.js:1900 msgid "Bluetooth Settings" msgstr "Impostazions Bluetooth" #: js/ui/status/bluetooth.js:335 msgid "No available or connected devices" msgstr "Nissun dispositîf disponibil o colegât" #: js/ui/status/bluetooth.js:336 msgid "Turn on Bluetooth to connect to devices" msgstr "Ative il Bluetooth par colegâti ai dispositîfs" #. Translators: This is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:390 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d tacât" msgstr[1] "%d tacâts" #: js/ui/status/brightness.js:34 msgid "Brightness" msgstr "Luminositât" #: js/ui/status/darkMode.js:12 msgid "Dark Style" msgstr "Stîl scûr" #: js/ui/status/dwellClick.js:15 msgid "Single Click" msgstr "Clic singul" #: js/ui/status/dwellClick.js:20 msgid "Double Click" msgstr "Dopli clic" #: js/ui/status/dwellClick.js:25 msgid "Drag" msgstr "Strissinâ" #: js/ui/status/dwellClick.js:30 msgid "Secondary Click" msgstr "Clic secondari" #: js/ui/status/dwellClick.js:39 msgid "Dwell Click" msgstr "Clic in polse" #: js/ui/status/keyboard.js:898 msgid "Show Keyboard Layout" msgstr "Mostre la disposizion de tastiere" #: js/ui/status/location.js:339 msgid "Allow location access" msgstr "Permet acès ae posizion" #. Translators: %s is an application name #: js/ui/status/location.js:341 #, javascript-format msgid "The app %s wants to access your location" msgstr "La aplicazion %s e vûl acedi ae to posizion" #: js/ui/status/location.js:351 msgid "Location access can be changed at any time from the privacy settings." msgstr "" "Al è pussibil cambiâ l'acès ae posizion cuant che tu vuelis su lis " "impostazions de riservatece." #: js/ui/status/location.js:359 msgid "Deny Access" msgstr "Dinee acès" #: js/ui/status/location.js:364 msgid "Grant Access" msgstr "Garantìs l'acès" #: js/ui/status/network.js:62 msgid "" msgstr "" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:354 #, javascript-format msgid "Disconnect %s" msgstr "Disconet %s" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:356 #, javascript-format msgid "Connect to %s" msgstr "Conet a %s" #: js/ui/status/network.js:1050 msgid "Secure" msgstr "Sigure" #: js/ui/status/network.js:1050 msgid "Not secure" msgstr "No sigure" #: js/ui/status/network.js:1051 #, javascript-format msgid "Signal strength %s%%" msgstr "Fuarce dal segnâl %s%%" #. translators: The first placeholder is the network name, the second and indication whether it is secure, and the last the signal strength indication #: js/ui/status/network.js:1053 #, javascript-format msgid "%s, %s, %s" msgstr "%s, %s, %s" #. Translators: %s is a network identifier #: js/ui/status/network.js:1155 #, javascript-format msgid "%s Hotspot" msgstr "Hotspot %s" #: js/ui/status/network.js:1426 #, javascript-format msgid "%d connected" msgid_plural "%d connected" msgstr[0] "%d colegât" msgstr[1] "%d colegâts" #: js/ui/status/network.js:1524 js/ui/status/network.js:1540 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1525 msgid "VPN Settings" msgstr "Impostazions VPN" #: js/ui/status/network.js:1785 msgid "Wi–Fi" msgstr "Wi–Fi" #: js/ui/status/network.js:1787 msgid "All Networks" msgstr "Dutis lis rêts" #: js/ui/status/network.js:1884 msgid "Wired Connections" msgstr "Conessions cabladis" #: js/ui/status/network.js:1885 msgid "Wired Settings" msgstr "Impostazions rêt vie fîl" #: js/ui/status/network.js:1899 msgid "Bluetooth Tethers" msgstr "Tethers Bluetooth" #. Translators: "Tether" from "Bluetooth Tether" #: js/ui/status/network.js:1906 msgid "Tether" msgstr "Tether" #: js/ui/status/network.js:1919 msgid "Mobile Connections" msgstr "Conessions mobilis" #: js/ui/status/network.js:1921 msgid "Mobile Broadband Settings" msgstr "Impostazions bande largje mobil" #. Translators: "Mobile" from "Mobile Broadband" #: js/ui/status/network.js:1930 msgid "Mobile" msgstr "Mobile" #: js/ui/status/network.js:2035 msgid "Connection failed" msgstr "Conession falide" #: js/ui/status/network.js:2036 msgid "Activation of network connection failed" msgstr "Ativazion de conession di rêt falide" #: js/ui/status/nightLight.js:21 msgid "Night Light" msgstr "Lûs noturne" #: js/ui/status/powerProfiles.js:21 msgctxt "Power profile" msgid "Performance" msgstr "Prestazions" #: js/ui/status/powerProfiles.js:26 msgctxt "Power profile" msgid "Balanced" msgstr "Belançât" #: js/ui/status/powerProfiles.js:31 msgctxt "Power profile" msgid "Power Saver" msgstr "Sparagn energjetic" #: js/ui/status/powerProfiles.js:41 js/ui/status/powerProfiles.js:71 msgid "Power Mode" msgstr "Modalitât energjetiche" #: js/ui/status/powerProfiles.js:73 msgid "Power Settings" msgstr "Impostazions di alimentazion" #: js/ui/status/remoteAccess.js:76 msgid "Stop Screencast" msgstr "Ferme filmât dal schermi" #: js/ui/status/remoteAccess.js:146 msgid "Stop Screen Sharing" msgstr "Ferme condivision schermi" #: js/ui/status/rfkill.js:101 msgid "Airplane Mode" msgstr "Modalitât avion" #: js/ui/status/system.js:170 msgid "Power Off Menu" msgstr "Menù par distudâ" #: js/ui/status/system.js:178 msgid "Suspend" msgstr "Sospint" #: js/ui/status/system.js:183 msgid "Restart…" msgstr "Torne invie…" #: js/ui/status/system.js:188 msgid "Power Off…" msgstr "Distude…" #: js/ui/status/system.js:195 #: subprojects/extensions-app/data/ui/extensions-window.ui:124 msgid "Log Out…" msgstr "Jes…" #: js/ui/status/system.js:200 msgid "Switch User…" msgstr "Cambie Utent…" #: js/ui/status/system.js:244 msgctxt "action" msgid "Lock Screen" msgstr "Bloc schermi" #: js/ui/status/thunderbolt.js:310 msgid "Unknown Thunderbolt device" msgstr "Dispositîf Thunderbolt no cognossût" #: js/ui/status/thunderbolt.js:311 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" "Un gnûf dispositîf al è stât rilevât intant che tu jeris vie. Par plasê " "disconet e torne conet il dispositîf par tacâ a doprâlu." #: js/ui/status/thunderbolt.js:314 msgid "Unauthorized Thunderbolt device" msgstr "Dispositîf Thunderbolt cence autorizazion" #: js/ui/status/thunderbolt.js:315 msgid "" "New device has been detected and needs to be authorized by an administrator." msgstr "" "Al è stât cjatât un gnûf dispositîf e al covente jessi autorizâts di un " "aministradôr." #: js/ui/status/thunderbolt.js:321 msgid "Thunderbolt authorization error" msgstr "Erôr di autorizazion di Thunderbolt" #: js/ui/status/thunderbolt.js:322 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "Impussibil autorizâ il dispositîf Thunderbolt: %s" #: js/ui/status/volume.js:220 msgid "Volume changed" msgstr "Volum modificât" #: js/ui/status/volume.js:233 msgid "Unmute" msgstr "Gjave cidin" #: js/ui/status/volume.js:233 msgid "Mute" msgstr "Cidin" #: js/ui/status/volume.js:288 msgid "Volume" msgstr "Volum" #: js/ui/status/volume.js:304 msgid "Sound Output" msgstr "Jessude sonore" #: js/ui/status/volume.js:376 msgid "Sound Input" msgstr "Jentrade sonore" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:22 msgid "Mirror" msgstr "Sdopleâ" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:31 msgid "Join Displays" msgstr "Unìs schermis" #. Translators: this is for using only external displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:41 msgid "External Only" msgstr "Dome esterni" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:49 msgid "Built-in Only" msgstr "Dome incorporât" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:374 msgid "%A %B %-d" msgstr "%A %-d di %B" #: js/ui/unlockDialog.js:380 msgid "Swipe up to unlock" msgstr "Scor in sù par sblocâ" #: js/ui/unlockDialog.js:381 msgid "Click or press a key to unlock" msgstr "Fâs clic o frache un tast par sblocâ" #: js/ui/unlockDialog.js:564 msgid "Unlock Window" msgstr "Sbloche barcon" #: js/ui/unlockDialog.js:573 msgid "Log in as another user" msgstr "Jentre come altri utent" #: js/ui/welcomeDialog.js:49 #, javascript-format msgid "GNOME %s" msgstr "GNOME %s" #: js/ui/welcomeDialog.js:53 #, javascript-format msgid "Welcome to %s" msgstr "Benvignûts su %s" #: js/ui/welcomeDialog.js:54 msgid "If you want to learn your way around, check out the tour." msgstr "Se tu desideris imparâ cemût moviti, bute un voli ae visite vuidade." #: js/ui/welcomeDialog.js:63 msgid "Skip" msgstr "Salte" #: js/ui/welcomeDialog.js:68 msgid "Take Tour" msgstr "Partecipe ae visite vuidade" #: js/ui/windowAttentionHandler.js:20 #, javascript-format msgid "“%s” is ready" msgstr "“%s” al è pront" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:69 msgid "Keep these display settings?" msgstr "Tignî chescj valôrs pal visôr?" #: js/ui/windowManager.js:79 msgid "Revert Settings" msgstr "Ripristine impostazions" #: js/ui/windowManager.js:84 msgid "Keep Changes" msgstr "Ten lis modifichis" #: js/ui/windowManager.js:104 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "" "Lis modifichis as impostazions a vignaran ripristinadis chi di %d secont" msgstr[1] "" "Lis modifichis as impostazions a vignaran ripristinadis chi di %d seconts" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:496 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:42 msgid "Hide" msgstr "Plate" #: js/ui/windowMenu.js:49 msgid "Restore" msgstr "Ripristine" #: js/ui/windowMenu.js:53 msgid "Maximize" msgstr "Slargje" #: js/ui/windowMenu.js:60 msgid "Move" msgstr "Sposte" #: js/ui/windowMenu.js:80 msgid "Resize" msgstr "Ridimensione" #: js/ui/windowMenu.js:101 msgid "Move Titlebar Onscreen" msgstr "Môf la sbare dal titul a schermi" #: js/ui/windowMenu.js:106 msgid "Always on Top" msgstr "Simpri Denant" #: js/ui/windowMenu.js:125 msgid "Always on Visible Workspace" msgstr "Simpri sul spazi di lavôr visibil" #: js/ui/windowMenu.js:139 msgid "Move to Workspace Left" msgstr "Sposte tal spazi di lavôr a çampe" #: js/ui/windowMenu.js:145 msgid "Move to Workspace Right" msgstr "Sposte tal spazi di lavôr a drete" #: js/ui/windowMenu.js:151 msgid "Move to Workspace Up" msgstr "Sposte tal spazi di lavôr Parsore" #: js/ui/windowMenu.js:157 msgid "Move to Workspace Down" msgstr "Sposte tal spazi di lavôr Disot" #: js/ui/windowMenu.js:175 msgid "Move to Monitor Up" msgstr "Sposte tal visôr parsore" #: js/ui/windowMenu.js:184 msgid "Move to Monitor Down" msgstr "Sposte tal visôr disot" #: js/ui/windowMenu.js:193 msgid "Move to Monitor Left" msgstr "Sposte tal visôr a çampe" #: js/ui/windowMenu.js:202 msgid "Move to Monitor Right" msgstr "Sposte tal visôr a drete" #: js/ui/windowMenu.js:210 msgid "Close" msgstr "Siere" #: src/main.c:529 subprojects/extensions-tool/src/main.c:336 msgid "Print version" msgstr "Stampe version" #: src/main.c:535 msgid "Mode used by GDM for login screen" msgstr "Modalitât doprade da GDM pe videade di acès" #: src/main.c:541 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "Dopre une modalitât specifiche, par esempli “gdm” pe videade di acès" #: src/main.c:547 msgid "List possible modes" msgstr "Liste modalitâts pussibilis" #: src/main.c:553 msgid "Force animations to be enabled" msgstr "Sfuarce la abilitazion des animazions" #: src/shell-app.c:253 msgctxt "program" msgid "Unknown" msgstr "No cognossût" #: src/shell-app.c:504 #, c-format msgid "Failed to launch “%s”" msgstr "No soi rivât a eseguî '%s'" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match." msgstr "Lis password no corispuindin." #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "La password no pues jessi vueide" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "Dialic di autenticazion anulât dal utent" #: src/st/st-icon-theme.c:1865 #, c-format msgid "Icon '%s' not present in theme %s" msgstr "La icone '%s' no je presinte tal teme %s" #: src/st/st-icon-theme.c:3454 src/st/st-icon-theme.c:3757 msgid "Failed to load icon" msgstr "Nol è stât pussibil cjariâ la icone" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 msgid "Manage your GNOME Extensions" msgstr "Gjestìs lis tôs Estensions di GNOME" #. developer_name tag deprecated with Appstream 1.0 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:19 msgid "The GNOME Project" msgstr "Il progjet GNOME" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:51 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" "Estensions di GNOME al gjestìs l'inzornament des estensions, la " "configurazion des preferencis des estensions e la rimozion o la " "disabilitazion des estensions che no son desideradis." #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:70 msgid "Main Window" msgstr "Barcon principâl" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:74 msgid "Available Updates" msgstr "Inzornaments disponibii" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:78 msgid "Search View" msgstr "Viodude ricercje" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "Configure lis estensions di GNOME Shell" #: subprojects/extensions-app/js/extensionManager.js:237 #, javascript-format msgid "" "The installed version of this extension (%s) is incompatible with the " "current version of GNOME (%s). The extension has been disabled." msgstr "" "La version instalade di cheste estension (%s) no je compatibile cu la " "version atuâl di GNOME (%s). La estension e je stade disativade." #: subprojects/extensions-app/js/extensionManager.js:238 #, javascript-format msgid "" "The installed version of this extension is incompatible with the current " "version of GNOME (%s). The extension has been disabled." msgstr "" "La version instalade di cheste estension no je compatibile cu la version " "atuâl di GNOME (%s). La estension e je stade disativade." #: subprojects/extensions-app/js/extensionManager.js:242 msgid "" "An error has occurred in this extension. This could cause issues elsewhere " "in the system. It is recommended to turn the extension off until the error " "is resolved." msgstr "" "Al è capitât un erôr in cheste estension. Chest al podarès causâ problemis " "in cualchi altre part dal sisteme. Al è conseât disativâ la estension " "fintremai che l'erôr nol sedi risolt." #. translators: Details for an extension error #: subprojects/extensions-app/js/extensionManager.js:248 msgid "Error details:" msgstr "Detais erôr:" #: subprojects/extensions-app/js/extensionRow.js:82 #, javascript-format msgid "Version %s" msgstr "Version %s" #: subprojects/extensions-app/js/extensionsWindow.js:113 #, javascript-format msgid "Remove “%s”?" msgstr "Gjavâ “%s”?" #: subprojects/extensions-app/js/extensionsWindow.js:114 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "" "Se tu gjavis la estension tu scugnarâs tornâ a discjariâle se tu desideris " "abilitâle di gnûf" #: subprojects/extensions-app/js/extensionsWindow.js:117 msgid "_Cancel" msgstr "_Anule" #: subprojects/extensions-app/js/extensionsWindow.js:118 msgid "_Remove" msgstr "_Gjave" #: subprojects/extensions-app/js/extensionsWindow.js:158 msgid "translator-credits" msgstr "Fabio Tomat , 2024" #: subprojects/extensions-app/js/extensionsWindow.js:203 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "%d estension e vignarà inzornade al prossim acès." msgstr[1] "%d estensions a vignaran inzornadis al prossim acès." #: subprojects/extensions-app/data/ui/extension-row.ui:21 msgid "Error Details" msgstr "Detais dal erôr" #: subprojects/extensions-app/data/ui/extension-row.ui:61 msgid "Updates Details" msgstr "Detais dai inzornaments" #: subprojects/extensions-app/data/ui/extension-row.ui:71 msgid "" "A new version of this extension is ready and will be loaded on next login." msgstr "" "Une gnove version di cheste estension e je pronte e e vignarà cjariade al " "prossim acès." #: subprojects/extensions-app/data/ui/extension-row.ui:107 msgid "Extension Details" msgstr "Detais de estension" #: subprojects/extensions-app/data/ui/extension-row.ui:193 msgid "_Website" msgstr "Sît _web" #: subprojects/extensions-app/data/ui/extension-row.ui:220 msgid "_Settings" msgstr "_Impostazions" #: subprojects/extensions-app/data/ui/extension-row.ui:247 msgid "_Remove…" msgstr "_Gjave…" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Keyboard Shortcuts" msgstr "Scurtis di tastiere" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "Informazions su Estensions" #: subprojects/extensions-app/data/ui/extensions-window.ui:64 msgid "Main Menu" msgstr "Menù principâl" #: subprojects/extensions-app/data/ui/extensions-window.ui:106 msgid "Search extensions" msgstr "Cîr estensions" #: subprojects/extensions-app/data/ui/extensions-window.ui:134 msgid "_Extensions" msgstr "_Estensions" #: subprojects/extensions-app/data/ui/extensions-window.ui:143 msgid "More Information" msgstr "Plui informazions" #: subprojects/extensions-app/data/ui/extensions-window.ui:153 msgid "" "Extensions can cause performance and stability issues. It is recommended to " "disable all extensions if you experience problems with your system." msgstr "" "Estensions al pues causâ problemis di prestazions e stabilitât. Al è conseât " "disabilitâ dutis lis estensions se ti capitin problemis cul sisteme." #: subprojects/extensions-app/data/ui/extensions-window.ui:180 msgid "User Extensions" msgstr "Estensions utent" #: subprojects/extensions-app/data/ui/extensions-window.ui:200 msgid "System Extensions" msgstr "Estensions di sisteme" #: subprojects/extensions-app/data/ui/extensions-window.ui:235 msgid "Search Results" msgstr "Risultâts de ricercje" #: subprojects/extensions-app/data/ui/extensions-window.ui:254 msgid "No Results Found" msgstr "Nissun risultât cjatât" #: subprojects/extensions-app/data/ui/extensions-window.ui:255 msgid "Try a different search." msgstr "Prove cuntune ricercje diferente." #: subprojects/extensions-app/data/ui/extensions-window.ui:266 msgid "No Installed Extensions" msgstr "Nissune estension instalade" #: subprojects/extensions-app/data/ui/extensions-window.ui:267 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" "Par cirî e zontâ estensions, visite extensions.gnome.org." #: subprojects/extensions-app/data/ui/extensions-window.ui:278 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" "Nus displâs, ma nol è stât pussibil otignî la liste des estensions " "instaladis. Controle di jessi jentrât in GNOME e torne prove." #: subprojects/extensions-app/data/ui/help-overlay.ui:9 msgctxt "shortcut window" msgid "General" msgstr "Gjenerâl" #: subprojects/extensions-app/data/ui/help-overlay.ui:12 msgctxt "shortcut window" msgid "Open Menu" msgstr "Vierç menù" #: subprojects/extensions-app/data/ui/help-overlay.ui:18 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Comute ricercje" #: subprojects/extensions-app/data/ui/help-overlay.ui:24 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Mostre scurtis" #: subprojects/extensions-app/data/ui/help-overlay.ui:30 msgctxt "shortcut window" msgid "Quit" msgstr "Jes" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:284 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "La gnove estension e je stade creade cun sucès in %s.\n" #: subprojects/extensions-tool/src/command-create.c:376 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" "Il non al à di jessi une stringhe (descritive in mût ideâl) une vore curte.\n" "Esemplis a son: %s" #: subprojects/extensions-tool/src/command-create.c:382 #: subprojects/extensions-tool/src/main.c:243 msgid "Name" msgstr "Non" #: subprojects/extensions-tool/src/command-create.c:396 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" "La descrizion e je une spiegazion fate di une frase singule su ce che la " "estension e fâs.\n" "Esemplis a son: %s" #: subprojects/extensions-tool/src/command-create.c:402 #: subprojects/extensions-tool/src/main.c:246 msgid "Description" msgstr "Descrizion" #: subprojects/extensions-tool/src/command-create.c:416 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" "Il UUID al è un identificadôr unic e globâl pe tô estension.\n" "Chest al à di jessi tal formât di une direzion e-mail " "(clicparfocalizâ@titedalfari.esempli.com)\n" #: subprojects/extensions-tool/src/command-create.c:443 msgid "Choose one of the available templates:\n" msgstr "Sielç un dai modei disponibii:\n" #: subprojects/extensions-tool/src/command-create.c:457 msgid "Template" msgstr "Model" #: subprojects/extensions-tool/src/command-create.c:515 msgid "The unique identifier of the new extension" msgstr "L'identificadôr univoc de gnove estension" #: subprojects/extensions-tool/src/command-create.c:518 msgid "NAME" msgstr "NON" #: subprojects/extensions-tool/src/command-create.c:519 msgid "The user-visible name of the new extension" msgstr "Il non visibil dal utent de gnove estension" #: subprojects/extensions-tool/src/command-create.c:521 msgid "DESCRIPTION" msgstr "DESCRIZION" #: subprojects/extensions-tool/src/command-create.c:523 msgid "A short description of what the extension does" msgstr "Une curte descrizion di ce che la estension e fâs" #: subprojects/extensions-tool/src/command-create.c:525 #: subprojects/extensions-tool/src/command-pack.c:455 msgid "DOMAIN" msgstr "DOMINI" #: subprojects/extensions-tool/src/command-create.c:527 msgid "The gettext domain used by the extension" msgstr "Il domini di gettext doprât de estension" #: subprojects/extensions-tool/src/command-create.c:529 #: subprojects/extensions-tool/src/command-pack.c:448 msgid "SCHEMA" msgstr "SCHEME" #: subprojects/extensions-tool/src/command-create.c:531 msgid "The GSettings schema used by the extension" msgstr "Il scheme GSettings doprât de estension" #: subprojects/extensions-tool/src/command-create.c:534 msgid "TEMPLATE" msgstr "MODEL" #: subprojects/extensions-tool/src/command-create.c:535 msgid "The template to use for the new extension" msgstr "Il model di doprâ pe gnove estension" #: subprojects/extensions-tool/src/command-create.c:538 msgid "Include prefs.js template" msgstr "Inclût model prefs.js" #: subprojects/extensions-tool/src/command-create.c:544 msgid "Enter extension information interactively" msgstr "Inserìs lis informazions de estension in maniere interative" #: subprojects/extensions-tool/src/command-create.c:552 msgid "Create a new extension" msgstr "Cree une gnove estension" #: subprojects/extensions-tool/src/command-create.c:570 #: subprojects/extensions-tool/src/command-list.c:190 msgid "Unknown arguments" msgstr "Argoments no cognossûts" #: subprojects/extensions-tool/src/command-create.c:595 msgid "UUID, name and description are required" msgstr "A coventin UUID, non e descrizion" #: subprojects/extensions-tool/src/command-disable.c:62 #: subprojects/extensions-tool/src/command-enable.c:62 #, c-format msgid "Extension “%s” does not exist\n" msgstr "La estension “%s” no esist\n" #: subprojects/extensions-tool/src/command-disable.c:98 msgid "Disable an extension" msgstr "Disabilite une estension" #: subprojects/extensions-tool/src/command-disable.c:116 #: subprojects/extensions-tool/src/command-enable.c:116 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "Nissun UUID indicât" #: subprojects/extensions-tool/src/command-disable.c:121 #: subprojects/extensions-tool/src/command-enable.c:121 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "Plui di un UUID indicât" #: subprojects/extensions-tool/src/command-enable.c:98 msgid "Enable an extension" msgstr "Abilite une estension" #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:66 #: subprojects/extensions-tool/src/main.c:150 msgid "Failed to connect to GNOME Shell\n" msgstr "No si è rivâts a conetisi a GNOME Shell\n" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:159 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "La estension “%s” no esist\n" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "Mostre informazions de estension" #: subprojects/extensions-tool/src/command-install.c:190 msgid "Overwrite an existing extension" msgstr "Sorescrîf une estension esistente" #: subprojects/extensions-tool/src/command-install.c:192 msgid "EXTENSION_BUNDLE" msgstr "EXTENSION_BUNDLE" #: subprojects/extensions-tool/src/command-install.c:201 msgid "Install an extension bundle" msgstr "Instale un complès di estensions" #: subprojects/extensions-tool/src/command-install.c:219 msgid "No extension bundle specified" msgstr "Nissun complès di estensions specificât" #: subprojects/extensions-tool/src/command-install.c:225 msgid "More than one extension bundle specified" msgstr "Plui di un complès di estensions specificât" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show user-installed extensions" msgstr "Mostre estensions instaladis dal utent" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show system-installed extensions" msgstr "Mostre estensions instaladis dal sisteme" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Show enabled extensions" msgstr "Mostre estensions abilitadis" #: subprojects/extensions-tool/src/command-list.c:149 msgid "Show disabled extensions" msgstr "Mostre estensions disabilitadis" #: subprojects/extensions-tool/src/command-list.c:152 msgid "Show extensions in active state" msgstr "Mostre lis estensions in stât atîf" #: subprojects/extensions-tool/src/command-list.c:155 msgid "Show extensions in inactive state" msgstr "Mostre lis estensions in stât inatîf" #: subprojects/extensions-tool/src/command-list.c:158 msgid "Show extensions with preferences" msgstr "Mostre lis estensions cu lis preferencis" #: subprojects/extensions-tool/src/command-list.c:161 msgid "Show extensions with updates" msgstr "Mostre lis estensions cui inzornaments" #: subprojects/extensions-tool/src/command-list.c:164 msgid "Print extension details" msgstr "Stampe detais de estension" #: subprojects/extensions-tool/src/command-list.c:172 msgid "List installed extensions" msgstr "Liste lis estensions instaladis" #: subprojects/extensions-tool/src/command-pack.c:444 msgid "FILE" msgstr "FILE" #: subprojects/extensions-tool/src/command-pack.c:445 msgid "Additional source to include in the bundle" msgstr "Sorzint adizionâl di includi tal complès" #: subprojects/extensions-tool/src/command-pack.c:449 msgid "A GSettings schema that should be included" msgstr "Un scheme di GSettings che al à di jessi includût" #: subprojects/extensions-tool/src/command-pack.c:451 #: subprojects/extensions-tool/src/command-pack.c:462 msgid "DIRECTORY" msgstr "CARTELE" #: subprojects/extensions-tool/src/command-pack.c:453 msgid "The directory where translations are found" msgstr "La cartele dulà cjatâ lis traduzions" #: subprojects/extensions-tool/src/command-pack.c:457 msgid "The gettext domain to use for translations" msgstr "Il domini di gettext di doprâ pes traduzions" #: subprojects/extensions-tool/src/command-pack.c:460 msgid "Overwrite an existing pack" msgstr "Sorescrîf un pachet esistent" #: subprojects/extensions-tool/src/command-pack.c:464 msgid "The directory where the pack should be created" msgstr "La cartele dulà che il pachet al à die jessi creât" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "SOURCE_DIRECTORY" msgstr "CARTELE_SORZINT" #: subprojects/extensions-tool/src/command-pack.c:475 msgid "Create an extension bundle" msgstr "Cree un complès di estensions" #: subprojects/extensions-tool/src/command-pack.c:495 msgid "More than one source directory specified" msgstr "Plui di une cartele sorzint specificade" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "La estension “%s” no à preferencis\n" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "Nol è stât pussibil vierzi lis preferencis pe estension “%s”: %s\n" #: subprojects/extensions-tool/src/command-prefs.c:87 msgid "Opens extension preferences" msgstr "Al vierç lis preferencis de estension" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "Azere une estension" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "Impussibil disinstalâ lis estensions di sisteme\n" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "No si è rivâts a disinstalâ “%s”\n" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "Disinstale une estension" #: subprojects/extensions-tool/src/main.c:76 msgid "Do not print error messages" msgstr "No sta stampâ i messaçs di erôr" #: subprojects/extensions-tool/src/main.c:249 msgid "Path" msgstr "Percors" #: subprojects/extensions-tool/src/main.c:252 msgid "URL" msgstr "URL" #: subprojects/extensions-tool/src/main.c:255 msgid "Original author" msgstr "Autôr origjinâl" #: subprojects/extensions-tool/src/main.c:261 #: subprojects/extensions-tool/src/main.c:263 #: subprojects/extensions-tool/src/main.c:265 msgid "Version" msgstr "Version" #: subprojects/extensions-tool/src/main.c:268 msgid "Enabled" msgstr "Abilitât" #: subprojects/extensions-tool/src/main.c:268 msgid "Yes" msgstr "Sì" #: subprojects/extensions-tool/src/main.c:268 msgid "No" msgstr "No" #: subprojects/extensions-tool/src/main.c:271 msgid "State" msgstr "Stât" #: subprojects/extensions-tool/src/main.c:309 msgid "“version” takes no arguments" msgstr "“version” no vûl nissun argoment" #: subprojects/extensions-tool/src/main.c:311 #: subprojects/extensions-tool/src/main.c:331 msgid "Usage:" msgstr "Ûs:" #: subprojects/extensions-tool/src/main.c:314 msgid "Print version information and exit." msgstr "Stampe informazions su la version e jes." #: subprojects/extensions-tool/src/main.c:329 #: subprojects/extensions-tool/src/main.c:332 msgid "COMMAND" msgstr "COMANT" #: subprojects/extensions-tool/src/main.c:332 msgid "[ARGS…]" msgstr "[ARGS…]" #: subprojects/extensions-tool/src/main.c:334 msgid "Commands:" msgstr "Comants:" #: subprojects/extensions-tool/src/main.c:335 msgid "Print help" msgstr "Stampe jutori" #: subprojects/extensions-tool/src/main.c:337 msgid "Enable extension" msgstr "Abilite estension" #: subprojects/extensions-tool/src/main.c:338 msgid "Disable extension" msgstr "Disabilite estension" #: subprojects/extensions-tool/src/main.c:339 msgid "Reset extension" msgstr "Azere estension" #: subprojects/extensions-tool/src/main.c:340 msgid "Uninstall extension" msgstr "Disinstale estension" #: subprojects/extensions-tool/src/main.c:341 msgid "List extensions" msgstr "Liste lis estensions" #: subprojects/extensions-tool/src/main.c:342 #: subprojects/extensions-tool/src/main.c:343 msgid "Show extension info" msgstr "Mostre informazions de estension" #: subprojects/extensions-tool/src/main.c:344 msgid "Open extension preferences" msgstr "Vierç preferencis de estension" #: subprojects/extensions-tool/src/main.c:345 msgid "Create extension" msgstr "Cree estension" #: subprojects/extensions-tool/src/main.c:346 msgid "Package extension" msgstr "Estension dal pachet" #: subprojects/extensions-tool/src/main.c:347 msgid "Install extension bundle" msgstr "Instale complès di estensions" #: subprojects/extensions-tool/src/main.c:349 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "Dopre “%s” par vê un jutori detaiât.\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "Sempliç" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "Une estension vueide" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "Indicadôr" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "Zonte une icone te sbare superiôr" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:4 msgid "Quick Settings Item" msgstr "Element di Impostazions rapidis" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:5 msgid "Add an item to quick settings" msgstr "Zonte un element tes impostazions rapidis" #. translators: #. * The device has been disabled #: subprojects/gvc/gvc-mixer-control.c:1872 msgid "Disabled" msgstr "Disabilitât" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1879 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u jessude" msgstr[1] "%u jessudis" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1889 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u jentrade" msgstr[1] "%u jentradis" #: subprojects/gvc/gvc-mixer-control.c:2872 msgid "System Sounds" msgstr "Suns di sisteme" #~ msgid "Network Manager" #~ msgstr "Ministradôr di rêt" #, javascript-format #~ msgid "%s is now known as %s" #~ msgstr "L'utent %s al è cognossût cumò come %s" #~ msgid "Disabling" #~ msgstr "Daûr a disabilitâ" #~ msgid "Enabling" #~ msgstr "Daûr a abilitâ" #~ msgid "Thunderbolt" #~ msgstr "Thunderbolt" #~ msgid "No Thanks" #~ msgstr "No gracie" #~ msgid "No Matches" #~ msgstr "Nissune corispondence" #~ msgid "The extension had an error" #~ msgstr "La estension e à vût un erôr" #~ msgid "The extension can be updated" #~ msgstr "Al è pussibil inzornâ la estension" #~ msgid "Help" #~ msgstr "Jutori" #~ msgid "Manually Installed" #~ msgstr "Instalât a man" #~ msgid "Built-In" #~ msgstr "Integrade" #~ msgid "Extension Updates Ready" #~ msgstr "Inzornaments di estensions pronts" #, javascript-format #~ msgid "%d %%" #~ msgstr "%d %%" #~ msgid "Screenshot / Screencast" #~ msgstr "Videade / Filmât" #~ msgid "Power Profiles" #~ msgstr "Profîi energjetics" #~ msgid "Applications" #~ msgstr "Aplicazions" #, javascript-format #~ msgid "Unable to start %s" #~ msgstr "Impussibil inviâ %s" #, javascript-format #~ msgid "Couldn’t find the %s application" #~ msgstr "Impussibil cjatâ la aplicazion %s" #~ msgid "Evolution Calendar" #~ msgstr "Calendari di Evolution" #~ msgid "Attach modal dialog to the parent window" #~ msgstr "Lee il barcon modâl al barcon gjenitôr" #~ msgid "" #~ "This key overrides the key in org.gnome.mutter when running GNOME Shell." #~ msgstr "" #~ "Cheste clâf e sorplante chê in org.gnome.mutter cuant che al è in " #~ "esecuzion GNOME Shell." #~ msgid "Enable edge tiling when dropping windows on screen edges" #~ msgstr "" #~ "Abilite la tasseladure sul ôr cuant che si strissine i barcons tal ôr dal " #~ "visôr" #~ msgid "Workspaces are managed dynamically" #~ msgstr "I spazis di vore a son ministrât in maniere dinamiche" #~ msgid "Workspaces only on primary monitor" #~ msgstr "Spazis di lavôr dome sul visôr principâl" #~ msgid "Delay focus changes in mouse mode until the pointer stops moving" #~ msgstr "" #~ "Tardâ il cambiament dal focus te modalitât mouse fintant che il pontadôr " #~ "no si ferme" #~ msgid "Region & Language Settings" #~ msgstr "Impostazions regjon e lenghe" #~ msgid "" #~ "Whether the default Bluetooth adapter had set up devices associated to it" #~ msgstr "" #~ "Indiche se il dispositîf Bluetooth predefinît al à vût dispositîfs " #~ "associâts" #~ msgid "" #~ "The shell will only show a Bluetooth menu item if a Bluetooth adapter is " #~ "powered, or if there were devices set up associated with the default " #~ "adapter. This will be reset if the default adapter is ever seen not to " #~ "have devices associated to it." #~ msgstr "" #~ "La shell e mostrarà un menù Bluetooth nome se un adatatôr Bluetooth al è " #~ "alimentât, o se a son dispositîfs configurâts e associâts cul adatatôr " #~ "predefinît. Chest al vignarà azerât se l'adatatôr predefinît nol à mai " #~ "vût dispositîfs associâts." #~ msgid "Bluetooth On" #~ msgstr "Bluetooth On" #~ msgid "Bluetooth Off" #~ msgstr "Bluetooth Off" #~ msgid "Location In Use" #~ msgstr "Posizion in ûs" #~ msgid "Location Disabled" #~ msgstr "Posizion no abilitade" #, javascript-format #~ msgid "%s Off" #~ msgstr "%s distudât" #, javascript-format #~ msgid "%s Connected" #~ msgstr "%s tacât" #, javascript-format #~ msgid "%s Unmanaged" #~ msgstr "%s no ministrât" #, javascript-format #~ msgid "%s Connecting" #~ msgstr "%s in conession" #, javascript-format #~ msgid "%s Requires Authentication" #~ msgstr "%s al à dibisugne di autenticazion" #, javascript-format #~ msgid "Firmware Missing For %s" #~ msgstr "Al mancje il firmware par %s" #, javascript-format #~ msgid "%s Unavailable" #~ msgstr "%s no disponibil" #, javascript-format #~ msgid "%s Connection Failed" #~ msgstr "Conession falide su %s" #, javascript-format #~ msgid "%s Hardware Disabled" #~ msgstr "%s disabilitât vie hardware" #, javascript-format #~ msgid "%s Disabled" #~ msgstr "%s disabilitât" #~ msgid "Connect to Internet" #~ msgstr "Conet a internet" #~ msgid "Airplane Mode is On" #~ msgstr "Modalitât avion piade" #~ msgid "Wi-Fi is disabled when airplane mode is on." #~ msgstr "" #~ "Il Wi-Fi al è disabilitât cuant che la modalitât avion e je impiade." #~ msgid "Turn Off Airplane Mode" #~ msgstr "Distude modalitât avion" #~ msgid "Wi-Fi is Off" #~ msgstr "Il Wi-Fi al è distudât" #~ msgid "Wi-Fi needs to be turned on in order to connect to a network." #~ msgstr "Il Wi-Fi al scugne jessi impiât par podêsi tacâ a une rêt." #~ msgid "Turn On Wi-Fi" #~ msgstr "Impie il Wi-Fi" #~ msgid "Wi-Fi Networks" #~ msgstr "Rêts Wi-Fi" #~ msgid "Select a network" #~ msgstr "Selezione une rêt" #~ msgid "Use hardware switch to turn off" #~ msgstr "Dopre interutôr fisic par distudâ" #~ msgid "Select Network" #~ msgstr "Selezione rêt" #~ msgid "Wi-Fi Settings" #~ msgstr "Impostazions Wi-Fi" #, javascript-format #~ msgid "%s Not Connected" #~ msgstr "%s distacât" #~ msgid "unknown" #~ msgstr "no cognossût" #~ msgid "connecting…" #~ msgstr "daûr a coneti…" #~ msgid "authentication required" #~ msgstr "autenticazion necessarie" #~ msgid "connection failed" #~ msgstr "conession falide" #~ msgid "VPN Off" #~ msgstr "VPN distudât" #, javascript-format #~ msgid "%s Wi-Fi Connection" #~ msgid_plural "%s Wi-Fi Connections" #~ msgstr[0] "%s conession cence fîi" #~ msgstr[1] "%s conessions cence fîi" #~ msgid "Night Light Disabled" #~ msgstr "Lûs noturne disabilitade" #~ msgid "Resume" #~ msgstr "Ripie" #~ msgid "Disable Until Tomorrow" #~ msgstr "Disabilite fintremai doman" #~ msgid "Fully Charged" #~ msgstr "Cjarie" #~ msgid "Not Charging" #~ msgstr "Nol sta cjariant" #~ msgid "Estimating…" #~ msgstr "In stime…" #, javascript-format #~ msgid "%d∶%02d Remaining (%d %%)" #~ msgstr "A restin %d∶%02d (%d%%)" #, javascript-format #~ msgid "%d∶%02d Until Full (%d %%)" #~ msgstr "%d∶%02d par jessi plene (%d%%)" #~ msgid "Screen is Being Shared" #~ msgstr "Il schermi al è condividût" #~ msgid "Turn off" #~ msgstr "Distude" #~ msgid "Lock" #~ msgstr "Bloche" #~ msgid "Power Off / Log Out" #~ msgstr "Distude / Jes de session" #~ msgid "Log Out" #~ msgstr "Jes" #~ msgid "Remove from Favorites" #~ msgstr "Gjave dai preferîts" #~ msgid "Add to Favorites" #~ msgstr "Zonte tai preferîts" #~ msgid "Author" #~ msgstr "Autôr" #~ msgid "Warning" #~ msgstr "Avertiment" #~ msgid "" #~ "Extensions can cause system issues, including performance problems. If " #~ "you encounter problems with your system, it is recommended to disable all " #~ "extensions." #~ msgstr "" #~ "Lis estensions a puedin causâ problemis al sisteme, includûts problemis " #~ "di prestazion. Se si verifichin problemis cul vuestri sisteme, si consee " #~ "di disabilitâ dutis lis estensions." #~ msgid "Enable introspection API" #~ msgstr "Abilite la API di introspezion" #~ msgid "" #~ "Enables a D-Bus API that allows to introspect the application state of " #~ "the shell." #~ msgstr "" #~ "Al abilite une API di D-Bus che e permet la introspezion dal stât de " #~ "aplicazion de shell." #~ msgid "Minimize" #~ msgstr "Minimize" #~ msgid "Unmaximize" #~ msgstr "Gjave slargjament" #~ msgid "Failed to connect to GNOME Shell" #~ msgstr "No si è rivâts a conetisi a GNOME Shell" #~ msgid "App Picker View" #~ msgstr "Viodude seletôr app" #~ msgid "Index of the currently selected view in the application picker." #~ msgstr "Indiç de viodude cumò selezionade tal seletôr di aplicazions." #~ msgid "Frequently used applications will appear here" #~ msgstr "Lis aplicazions dopradis dispès a vignaran mostradis culì" #~ msgid "Frequent" #~ msgstr "Dispès" #~ msgid "All" #~ msgstr "Dutis" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d" #~ msgstr "%A, %-d di %B" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d, %Y" #~ msgstr "%A, %-d di %B dal %Y" #~ msgid "On" #~ msgstr "Impiât" #~ msgid "Copy Error" #~ msgstr "Copie erôr" #~ msgid "Browse in Software" #~ msgstr "Esplore in Software" #~ msgid "Next" #~ msgstr "Indenant" #~ msgctxt "button" #~ msgid "Sign In" #~ msgstr "Jentre" #~ msgctxt "search-result" #~ msgid "Lock Orientation" #~ msgstr "Bloc orientament" #~ msgid "Password:" #~ msgstr "Password:" #~ msgid "Type again:" #~ msgstr "Scîf di gnûf:" #~ msgid "Password: " #~ msgstr "Password: " #~ msgid "Authentication required by wireless network" #~ msgstr "La rêt cence fîl e domande autenticazion" #~ msgid "Mobile broadband network password" #~ msgstr "Passowrd rêt mobil a bande largje" #~ msgid "%A, %B %d" #~ msgstr "%A, %d di %B" #~ msgid "%d new message" #~ msgid_plural "%d new messages" #~ msgstr[0] "%d gnûf messaç" #~ msgstr[1] "%d gnûfs messaçs" #~ msgid "Rename" #~ msgstr "Cambie non" #~ msgid "Account Settings" #~ msgstr "Impostazions account" #~ msgid "Orientation Lock" #~ msgstr "Bloc Orientament" #~ msgid "" #~ "Keybinding that pauses and resumes all running tweens, for debugging " #~ "purposes" #~ msgstr "" #~ "Associazion di tascj par meti in pause e ripiâ ducj i tween in esecuzion, " #~ "par motîfs di debug" #~ msgid "Which keyboard to use" #~ msgstr "Cuale tastiere doprâ" #~ msgid "The type of keyboard to use." #~ msgstr "Il stamp di tastiere di doprâ." #~ msgid "network-workgroup" #~ msgstr "network-workgroup" #~ msgid "toggle-switch-us" #~ msgstr "toggle-switch-intl" #~ msgid "%s all day." #~ msgstr "%s dut il dì." #~ msgid "%s, then %s later." #~ msgstr "%s, plui tart %s." #~ msgid "%s, then %s, followed by %s later." #~ msgstr "%s, chi di un pôc %s, e plui tart %s." #~ msgid "Feels like %s." #~ msgstr "Si sintin %s." #~ msgid "There was an error loading the preferences dialog for %s:" #~ msgstr "" #~ "Al è vignût fûr un erôr cuant che si cjamave il dialic des preferencis " #~ "par %s:" #~ msgctxt "search-result" #~ msgid "Log out" #~ msgstr "Jessî" #~ msgctxt "search-result" #~ msgid "Switch user" #~ msgstr "Cambiâ utent" #~ msgid "Hide tray" #~ msgstr "Plate casset" #~ msgid "Status Icons" #~ msgstr "Iconis di stât" #~ msgid "Events" #~ msgstr "Events" #~ msgid "Media" #~ msgstr "Supuart" #~ msgid "Web Authentication Redirect" #~ msgstr "Indreçament pe autenticazion web" #~ msgid "%d x %d" #~ msgstr "%d x %d" #~ msgid "Show the week date in the calendar" #~ msgstr "Mostre il dì de setemane tal calendari" #~ msgid "If true, display the ISO week date in the calendar." #~ msgstr "Se VÊR, al mostre la date ISO de setemane tal calendari." #~ msgid "Use as Internet connection" #~ msgstr "Dopre come conession internet" #~ msgid "GNOME Delivers a full desktop experience" #~ msgstr "GNOME al da fûr une esperience di scritori complete " #~ msgid "Part of this means making it easy for users.." #~ msgstr "Part di chest al significhe rindi facil pai utents.." #~ msgid "..to explore new features and workflows." #~ msgstr "..esplorâ gnovis carateristichis e flus di lavôr." #~ msgid "This is where GNOME Help comes into the picture." #~ msgstr "Chest al è dulà che Jutori di GNOME al jentre in sene." #~ msgid "Need to know the keyboard shortcuts of gedit?" #~ msgstr "Covential savê lis scurtis de tastiere di gedit?" #~ msgid "GNOME Help lets you explore them easily through its interface." #~ msgstr "" #~ "Il Jutori di GNOME ti permet di esplorâju in mût facil cun la sô " #~ "interface." #~ msgid "Want to know what documents have to offer?" #~ msgstr "Vûstu cognossi ce che documents al à di ufrî?" #~ msgid "Press F1 and you can get an overview of.." #~ msgstr "Frache F1 e tu puedis vê une panoramiche des.." #~ msgid "..Documents' features at a glance." #~ msgstr "..carateristichis di Documents cuntune cucade." #~ msgid "GNOME Help is your offline assistant.." #~ msgstr "Jutori di GNOME al è il to assistent fûr linie.." #~ msgid "..ready to lend a hand with any application adventure you may take." #~ msgstr "..pront par dâti une man cun cualsisei aplicazion che ti covente." #~ msgid "The documentation is there to help you speed up.." #~ msgstr "La documentazion e je lì par judâ a niçâti.." #~ msgid "..and get work done." #~ msgstr "..e finî il lavôr." #~ msgid "Similarly, the GNOME project aims to provide good documentation.." #~ msgstr "" #~ "Te stesse maniere, il progjet GNOME al smire a furnî une buine " #~ "documentazion.." #~ msgid "..for developers and administrators." #~ msgstr "..par svilupadôrs e aministradôrs." #~ msgid "For developers, help is provided through Devhelp.." #~ msgstr "Pai svilupadôrs, il jutori al è furnît vie Devhelp.." #~ msgid "..and online at the GNOME Developer Center." #~ msgstr "..e in rêt tal Centri dal Svilupadôr GNOME." #~ msgid "Combined you have a library of knowledge and tools.." #~ msgstr "Cumbinâts tu âs une librarie di cognossince e struments.." #~ msgid "..to get you up to date with the latest happenings.." #~ msgstr "..par vêti inzornât cun lis ultimis novitâts.." #~ msgid "..in everything from glib to gnome-shell.." #~ msgstr "..su dut a partî di glib fin a gnome-shell.." #~ msgid "..in terms of source code, API and plug-in development." #~ msgstr "..in tiermins di codiç sorzint, API e plug-in di svilup." #~ msgid "For system administrators and tinkerers.." #~ msgstr "Pai aministradôrs di sisteme e traficons.." #~ msgid "..we provide the System Administration Guide online.." #~ msgstr "..o furnin la Guide par Aministradôrs di Sisteme in linie.." #~ msgid "at help.gnome.org." #~ msgstr "su help.gnome.org." #~ msgid "This guide aims at addressing your needs.." #~ msgstr "Cheste guide a ponte a indreçâ lis tôs dibisugnis.." #~ msgid "" #~ "..whether it be managing the configuration of several computers from one " #~ "place.." #~ msgstr "" #~ "..che a sedin ministrâ la configurazion di diviers computer da un puest " #~ "sôl.." #~ msgid "..or playing with the logo on the login screen." #~ msgstr "..o zuiâ cul logo de schermade di acès." #~ msgid "Together, Help, Developer Center and the Sysadmin Guide.." #~ msgstr "" #~ "Adun, Jutori, Centri dal Svilupadôr e la Guide dal Aministradôr di " #~ "sisteme.." #~ msgid "..makes up GNOMEs documentation." #~ msgstr "..a fasin la documentazion di GNOME." #~ msgid "Of course, we are always looking to make the documentation better." #~ msgstr "Sigûr, nô o cirin simpri di miorâ la documentazion." #~ msgid "Got an idea, found a typo.." #~ msgstr "Vût une idee, cjatât un erôr di scriture.." #~ msgid "..or just want to find a way to help?" #~ msgstr "..o nome vê gole di cjatâ une maniere par judâ?" #~ msgid "File a bug at bugzilla.gnome.org.." #~ msgstr "Invie un erôr a bugzilla.gnome.org.." #~ msgid "..against \"gnome-user-docs\"." #~ msgstr "..su \"gnome-user-docs\"." #~ msgid "Or come hangout at in the #docs channel.." #~ msgstr "O vent te cunvigne al canâl #docs.." #~ msgid "..at irc.gnome.org" #~ msgstr "..su irc.gnome.org" #~ msgid "This is Karen Sandler, thank you for using GNOME." #~ msgstr "O soi Karen Sandler, gracie di doprâ GNOME." 07070100000232000081A40000000000000000000000016712993F00013DF3000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/fy.po# Frisian translation for gnome-shell. # Copyright (C) 2021 gnome-shell's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-shell package. # FIRST AUTHOR , YEAR. # vancha , 2021. # Tjipke van der Heide , 2021. # msgid "" msgstr "" "Project-Id-Version: gnome-shell main\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" "POT-Creation-Date: 2021-07-27 20:34+0000\n" "PO-Revision-Date: 2021-08-05 14:34+0200\n" "Last-Translator: Tjipke van der Heide \n" "Language-Team: Western Frisian \n" "Language: fy\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-DL-Team: fy\n" "X-DL-Module: gnome-shell\n" "X-DL-Branch: main\n" "X-DL-Domain: po\n" "X-DL-State: None\n" "X-Generator: Gtranslator 40.0\n" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate favorite application 1" msgstr "Aktivearje favorite applikaasje 1" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate favorite application 2" msgstr "Aktivearje favorite applikaasje 2" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate favorite application 3" msgstr "Aktivearje favorite applikaasje 3" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate favorite application 4" msgstr "Aktivearje favorite applikaasje 4" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate favorite application 5" msgstr "Aktivearje favorite applikaasje 5" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate favorite application 6" msgstr "Aktivearje favorite applikaasje 6" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate favorite application 7" msgstr "Aktivearje favorite applikaasje 7" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate favorite application 8" msgstr "Aktivearje favorite applikaasje 8" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate favorite application 9" msgstr "Aktivearje favorite applikaasje 9" #: data/50-gnome-shell-system.xml:6 msgid "System" msgstr "Systeem" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "Lit de notifikaasje list sjen" #: data/50-gnome-shell-system.xml:12 msgid "Focus the active notification" msgstr "Fokus op de aktive notifikaasje" #: data/50-gnome-shell-system.xml:15 msgid "Show the overview" msgstr "Lit it oersjoch sjen" #: data/50-gnome-shell-system.xml:18 msgid "Show all applications" msgstr "Alle applikaasjes sjen litte" #: data/50-gnome-shell-system.xml:21 msgid "Open the application menu" msgstr "It applikaasje menu iepenje" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "GNOME Shell" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "Finster behear en applikaasjes útfiere" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" "Intern ark brûkber is foar ûntwikkelders en testers ynskeakelje mei Alt-F2" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "UUIDs fan it yn te skeakeljen taheaksel" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "UUIDs fan it forseart út te skeakeljen taheaksel" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "Brûkersútwreidingen útskeakelje" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" #: data/org.gnome.shell.gschema.xml.in:45 msgid "Disables the validation of extension version compatibility" msgstr "" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" #: data/org.gnome.shell.gschema.xml.in:54 msgid "List of desktop file IDs for favorite applications" msgstr "" #: data/org.gnome.shell.gschema.xml.in:55 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" #: data/org.gnome.shell.gschema.xml.in:62 msgid "History for command (Alt-F2) dialog" msgstr "" #. Translators: looking glass is a debugger and inspector tool, see https://wiki.gnome.org/Projects/GnomeShell/LookingGlass #: data/org.gnome.shell.gschema.xml.in:67 msgid "History for the looking glass dialog" msgstr "" #: data/org.gnome.shell.gschema.xml.in:71 msgid "Always show the “Log out” menu item in the user menu." msgstr "" #: data/org.gnome.shell.gschema.xml.in:72 msgid "" "This key overrides the automatic hiding of the “Log out” menu item in single-" "user, single-session situations." msgstr "" #: data/org.gnome.shell.gschema.xml.in:79 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" #: data/org.gnome.shell.gschema.xml.in:80 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" #: data/org.gnome.shell.gschema.xml.in:89 msgid "" "Whether the default Bluetooth adapter had set up devices associated to it" msgstr "" #: data/org.gnome.shell.gschema.xml.in:90 msgid "" "The shell will only show a Bluetooth menu item if a Bluetooth adapter is " "powered, or if there were devices set up associated with the default " "adapter. This will be reset if the default adapter is ever seen not to have " "devices associated to it." msgstr "" #: data/org.gnome.shell.gschema.xml.in:99 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "" #: data/org.gnome.shell.gschema.xml.in:100 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can " "be used to effectively disable the dialog." msgstr "" #: data/org.gnome.shell.gschema.xml.in:109 msgid "Enable introspection API" msgstr "Yntrospeksje API ynskeakelje" #: data/org.gnome.shell.gschema.xml.in:110 msgid "" "Enables a D-Bus API that allows to introspect the application state of the " "shell." msgstr "" #: data/org.gnome.shell.gschema.xml.in:141 msgid "Layout of the app picker" msgstr "" #: data/org.gnome.shell.gschema.xml.in:142 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" msgstr "" #: data/org.gnome.shell.gschema.xml.in:157 msgid "Keybinding to open the application menu" msgstr "" #: data/org.gnome.shell.gschema.xml.in:158 msgid "Keybinding to open the application menu." msgstr "" #: data/org.gnome.shell.gschema.xml.in:164 #: data/org.gnome.shell.gschema.xml.in:171 msgid "Keybinding to shift between overview states" msgstr "" #: data/org.gnome.shell.gschema.xml.in:165 msgid "Keybinding to shift between session, window picker and app grid" msgstr "" #: data/org.gnome.shell.gschema.xml.in:172 msgid "Keybinding to shift between app grid, window picker and session" msgstr "" #: data/org.gnome.shell.gschema.xml.in:178 msgid "Keybinding to open the “Show Applications” view" msgstr "" #: data/org.gnome.shell.gschema.xml.in:179 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "" #: data/org.gnome.shell.gschema.xml.in:186 msgid "Keybinding to open the overview" msgstr "" #: data/org.gnome.shell.gschema.xml.in:187 msgid "Keybinding to open the Activities Overview." msgstr "" #: data/org.gnome.shell.gschema.xml.in:193 msgid "Keybinding to toggle the visibility of the notification list" msgstr "" #: data/org.gnome.shell.gschema.xml.in:194 msgid "Keybinding to toggle the visibility of the notification list." msgstr "" #: data/org.gnome.shell.gschema.xml.in:200 msgid "Keybinding to focus the active notification" msgstr "" #: data/org.gnome.shell.gschema.xml.in:201 msgid "Keybinding to focus the active notification." msgstr "" #: data/org.gnome.shell.gschema.xml.in:207 msgid "Switch to application 1" msgstr "Wikselje nei applikaasje 1" #: data/org.gnome.shell.gschema.xml.in:211 msgid "Switch to application 2" msgstr "Wikselje nei applikaasje 2" #: data/org.gnome.shell.gschema.xml.in:215 msgid "Switch to application 3" msgstr "Wikselje nei applikaasje 3" #: data/org.gnome.shell.gschema.xml.in:219 msgid "Switch to application 4" msgstr "Wikselje nei applikaasje 4" #: data/org.gnome.shell.gschema.xml.in:223 msgid "Switch to application 5" msgstr "Wikselje nei applikaasje 5" #: data/org.gnome.shell.gschema.xml.in:227 msgid "Switch to application 6" msgstr "Wikselje nei applikaasje 6" #: data/org.gnome.shell.gschema.xml.in:231 msgid "Switch to application 7" msgstr "Wikselje nei applikaasje 7" #: data/org.gnome.shell.gschema.xml.in:235 msgid "Switch to application 8" msgstr "Wikselje nei applikaasje 8" #: data/org.gnome.shell.gschema.xml.in:239 msgid "Switch to application 9" msgstr "Wikselje nei applikaasje 9" #: data/org.gnome.shell.gschema.xml.in:248 #: data/org.gnome.shell.gschema.xml.in:275 msgid "Limit switcher to current workspace." msgstr "Skeakelder ta de aktyve wurkromte limitearje" #: data/org.gnome.shell.gschema.xml.in:249 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "As dit wier is, wurde allinich applikaasjes mei finsters op de aktive " "wurkromte sjen litten yn de skeakelder. Sa net, dan wurde alle applikaasjes " "sjen litten." #: data/org.gnome.shell.gschema.xml.in:266 msgid "The application icon mode." msgstr "De ikoan modus fan de applikaasje" #: data/org.gnome.shell.gschema.xml.in:267 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-" "only” (shows only the application icon) or “both”." msgstr "" #: data/org.gnome.shell.gschema.xml.in:276 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" #: data/org.gnome.shell.gschema.xml.in:286 msgid "Locations" msgstr "Lokaasjes" #: data/org.gnome.shell.gschema.xml.in:287 msgid "The locations to show in world clocks" msgstr "De lokaasje om wrâldklokken sjen te litten" #: data/org.gnome.shell.gschema.xml.in:297 msgid "Automatic location" msgstr "Automatyske lokaasje" #: data/org.gnome.shell.gschema.xml.in:298 msgid "Whether to fetch the current location or not" msgstr "Oft de aktuele lokaasje ophele wurde moat of net." #: data/org.gnome.shell.gschema.xml.in:305 msgid "Location" msgstr "Lokaasje" #: data/org.gnome.shell.gschema.xml.in:306 msgid "The location for which to show a forecast" msgstr "De lokaasje wer in waarsfoarsizzing for sjen litte wurde moat" #: data/org.gnome.shell.gschema.xml.in:318 msgid "Attach modal dialog to the parent window" msgstr "" #: data/org.gnome.shell.gschema.xml.in:319 #: data/org.gnome.shell.gschema.xml.in:328 #: data/org.gnome.shell.gschema.xml.in:336 #: data/org.gnome.shell.gschema.xml.in:344 #: data/org.gnome.shell.gschema.xml.in:352 msgid "" "This key overrides the key in org.gnome.mutter when running GNOME Shell." msgstr "" #: data/org.gnome.shell.gschema.xml.in:327 msgid "Enable edge tiling when dropping windows on screen edges" msgstr "" #: data/org.gnome.shell.gschema.xml.in:335 msgid "Workspaces are managed dynamically" msgstr "" #: data/org.gnome.shell.gschema.xml.in:343 msgid "Workspaces only on primary monitor" msgstr "" #: data/org.gnome.shell.gschema.xml.in:351 msgid "Delay focus changes in mouse mode until the pointer stops moving" msgstr "" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "Netwurk Ynlog" #: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:28 #: subprojects/extensions-app/data/ui/extensions-window.ui:241 msgid "Something’s gone wrong" msgstr "Der is wat ferkeard gien" #: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:39 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" "It spiit ús hiel bot, mar der hat harren in flater foar dien: de ynstellings " "foar dit taheaksel kinne net sjen litten wurde. We riede jo oan it probleem " "te rapportearjen by de skriuwers fan it taheaksel." #: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:64 msgid "Technical Details" msgstr "Technyske Details" #: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:106 msgid "Homepage" msgstr "Thússide" #: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:107 msgid "Visit extension homepage" msgstr "Thússide fan taheaksel besykje" #: js/gdm/authPrompt.js:141 js/ui/audioDeviceSelection.js:61 #: js/ui/components/networkAgent.js:111 js/ui/components/polkitAgent.js:138 #: js/ui/endSessionDialog.js:438 js/ui/extensionDownloader.js:190 #: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386 #: js/ui/status/network.js:963 subprojects/extensions-app/js/main.js:183 msgid "Cancel" msgstr "Ôfbrekke" #. Cisco LEAP #: js/gdm/authPrompt.js:285 js/ui/components/networkAgent.js:210 #: js/ui/components/networkAgent.js:226 js/ui/components/networkAgent.js:250 #: js/ui/components/networkAgent.js:271 js/ui/components/networkAgent.js:291 #: js/ui/components/networkAgent.js:301 js/ui/components/polkitAgent.js:275 #: js/ui/shellMountOperation.js:326 msgid "Password" msgstr "Wachtwurd" #: js/gdm/loginDialog.js:317 msgid "Choose Session" msgstr "Sesje kieze" #: js/gdm/loginDialog.js:456 msgid "Not listed?" msgstr "Net yn de list?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:921 #, javascript-format msgid "(e.g., user or %s)" msgstr "" #. TTLS and PEAP are actually much more complicated, but this complication #. is not visible here since we only care about phase2 authentication #. (and don't even care of which one) #: js/gdm/loginDialog.js:926 js/ui/components/networkAgent.js:246 #: js/ui/components/networkAgent.js:269 js/ui/components/networkAgent.js:287 msgid "Username" msgstr "Brûkersnamme" #: js/gdm/loginDialog.js:1279 msgid "Login Window" msgstr "Ynlog Finster" #: js/gdm/util.js:430 msgid "Authentication error" msgstr "" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:589 msgid "(or swipe finger across reader)" msgstr "" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:594 msgid "(or place finger on reader)" msgstr "" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:82 msgctxt "search-result" msgid "Power Off" msgstr "Útskeakelje" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:85 msgid "power off;shutdown;halt;stop" msgstr "" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:90 msgctxt "search-result" msgid "Restart" msgstr "Opnij starte" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:93 msgid "reboot;restart;" msgstr "reboot;restart;" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:98 msgctxt "search-result" msgid "Lock Screen" msgstr "" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:101 msgid "lock screen" msgstr "" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:106 msgctxt "search-result" msgid "Log Out" msgstr "Útlogge" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:109 msgid "logout;log out;sign off" msgstr "" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:114 msgctxt "search-result" msgid "Suspend" msgstr "" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:117 msgid "suspend;sleep" msgstr "" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:122 msgctxt "search-result" msgid "Switch User" msgstr "" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:125 msgid "switch user" msgstr "" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:132 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "" #: js/misc/systemActions.js:232 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "" #: js/misc/systemActions.js:233 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "" #: js/misc/util.js:120 msgid "Command not found" msgstr "Kommando net fûn" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:156 msgid "Could not parse command:" msgstr "Koe kommando net ferwurkje:" #: js/misc/util.js:164 #, javascript-format msgid "Execution of “%s” failed:" msgstr "Útfieren fan “%s” mislearre:" #: js/misc/util.js:181 msgid "Just now" msgstr "No krekt" #: js/misc/util.js:183 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d minút lyn" msgstr[1] "%d minúten lyn" #: js/misc/util.js:187 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d oere lyn" msgstr[1] "%d oeren lyn" #: js/misc/util.js:191 js/ui/dateMenu.js:162 msgid "Yesterday" msgstr "Juster" #: js/misc/util.js:193 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d dei lyn" msgstr[1] "%d dagen lien" #: js/misc/util.js:197 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d wike lyn" msgstr[1] "%d wiken lien" #: js/misc/util.js:201 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%d moanne lyn" msgstr[1] "%d moannen lyn" #: js/misc/util.js:204 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "%d jier lyn" msgstr[1] "%d jieren lyn" #. Translators: Time in 24h format #: js/misc/util.js:237 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/util.js:243 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "Juster, %H∶%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/util.js:249 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/util.js:255 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%B %-d, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/util.js:261 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%B %-d %Y, %H∶%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/util.js:266 msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/util.js:272 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "Juster, %l∶%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/util.js:278 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/util.js:284 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%B %-d, %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/util.js:290 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%B %-d %Y, %l∶%M %p" #. TRANSLATORS: this is the title of the wifi captive portal login window #: js/portalHelper/main.js:42 msgid "Hotspot Login" msgstr "Hotspot Ynlog" #: js/portalHelper/main.js:88 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "Jo ferbining mei dit hotspot is net feilig. Wachtwurden as oare ynformaasje " "dy jo op dizze side ynfiere kin troch minsken ticht by jo sjûn wurde." #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:39 js/ui/status/location.js:417 msgid "Deny Access" msgstr "Tagong Ûntsizze" #: js/ui/accessDialog.js:40 js/ui/status/location.js:420 msgid "Grant Access" msgstr "Tagong Tastean" #: js/ui/appDisplay.js:1860 msgid "Unnamed Folder" msgstr "Namleaze Folder" #. Translators: This is the heading of a list of open windows #: js/ui/appDisplay.js:3453 js/ui/panel.js:33 msgid "Open Windows" msgstr "Iepen Finsters" #: js/ui/appDisplay.js:3472 js/ui/panel.js:41 msgid "New Window" msgstr "Nij Finster" #: js/ui/appDisplay.js:3488 msgid "Launch using Integrated Graphics Card" msgstr "Útfiere mei Yntegrearre Grafyske Kaart" #: js/ui/appDisplay.js:3489 msgid "Launch using Discrete Graphics Card" msgstr "Útfiere mei Losse Grafyske Kaart" #: js/ui/appDisplay.js:3518 js/ui/dash.js:245 msgid "Remove from Favorites" msgstr "Út Favoriten wei smite" #: js/ui/appDisplay.js:3524 msgid "Add to Favorites" msgstr "Oan Favoriten tafoegje" #: js/ui/appDisplay.js:3534 js/ui/panel.js:52 msgid "Show Details" msgstr "Details sjen litte" #: js/ui/appFavorites.js:164 #, javascript-format msgid "%s has been added to your favorites." msgstr "%s is oan jo favoriten tafoegt." #: js/ui/appFavorites.js:197 #, javascript-format msgid "%s has been removed from your favorites." msgstr "%s is út jo favoriten wei helle." #: js/ui/audioDeviceSelection.js:41 msgid "Select Audio Device" msgstr "Audio Apparaat Selektearje" #: js/ui/audioDeviceSelection.js:56 msgid "Sound Settings" msgstr "Ynstellingen foar lûd" #: js/ui/audioDeviceSelection.js:69 msgid "Headphones" msgstr "" #: js/ui/audioDeviceSelection.js:71 msgid "Headset" msgstr "Koptelefoan" #: js/ui/audioDeviceSelection.js:73 js/ui/status/volume.js:277 msgid "Microphone" msgstr "Mikrofoan" #: js/ui/backgroundMenu.js:14 msgid "Change Background…" msgstr "Êftergrûn feroarje" #: js/ui/backgroundMenu.js:16 js/ui/status/nightLight.js:45 msgid "Display Settings" msgstr "Skerm Ynstellingen" #: js/ui/backgroundMenu.js:17 msgid "Settings" msgstr "Ynstellingen" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:36 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:65 msgctxt "grid sunday" msgid "S" msgstr "S" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:67 msgctxt "grid monday" msgid "M" msgstr "M" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:69 msgctxt "grid tuesday" msgid "T" msgstr "T" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:71 msgctxt "grid wednesday" msgid "W" msgstr "W" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:73 msgctxt "grid thursday" msgid "T" msgstr "T" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:75 msgctxt "grid friday" msgid "F" msgstr "F" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:77 msgctxt "grid saturday" msgid "S" msgstr "S" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:392 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:402 msgid "%OB %Y" msgstr "%OB %Y" #: js/ui/calendar.js:461 msgid "Previous month" msgstr "Ferline moanne" #: js/ui/calendar.js:476 msgid "Next month" msgstr "Oankommende moanne" #: js/ui/calendar.js:626 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:682 msgid "Week %V" msgstr "Wike %V" #: js/ui/calendar.js:896 msgid "No Notifications" msgstr "Gjin Notifikaasjes" #: js/ui/calendar.js:950 msgid "Do Not Disturb" msgstr "Net Steure" #: js/ui/calendar.js:971 msgid "Clear" msgstr "Wiskje" #. Translators: %s is an application name #: js/ui/closeDialog.js:42 #, javascript-format msgid "“%s” is not responding." msgstr "“%s” reagearet net." #: js/ui/closeDialog.js:43 msgid "" "You may choose to wait a short while for it to continue or force the " "application to quit entirely." msgstr "" "Jo kinne der foar kieze om in koart skotsje te wachtsjen tot de applikaasje " "wer reageart of de applikaasje forseart ôf te slúten." #: js/ui/closeDialog.js:70 msgid "Force Quit" msgstr "Ôfsluten forsearje" #: js/ui/closeDialog.js:73 msgid "Wait" msgstr "Wachtsje" #: js/ui/components/automountManager.js:85 msgid "External drive connected" msgstr "Ekstern stasjon oankeppele" #: js/ui/components/automountManager.js:97 msgid "External drive disconnected" msgstr "Ekstern stasjon ôfkeppele" #: js/ui/components/automountManager.js:206 msgid "Unable to unlock volume" msgstr "" #: js/ui/components/automountManager.js:207 msgid "The installed udisks version does not support the PIM setting" msgstr "" #: js/ui/components/autorunManager.js:332 #, javascript-format msgid "Open with %s" msgstr "Iepenje mei %s" #: js/ui/components/networkAgent.js:93 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router." msgstr "" #: js/ui/components/networkAgent.js:105 js/ui/status/network.js:258 #: js/ui/status/network.js:349 js/ui/status/network.js:966 msgid "Connect" msgstr "Ferbine" #: js/ui/components/networkAgent.js:216 msgid "Key" msgstr "Kaai" #: js/ui/components/networkAgent.js:254 js/ui/components/networkAgent.js:277 msgid "Private key password" msgstr "" #: js/ui/components/networkAgent.js:275 msgid "Identity" msgstr "Identiteit" #: js/ui/components/networkAgent.js:289 msgid "Service" msgstr "Tsjinst" #: js/ui/components/networkAgent.js:318 js/ui/components/networkAgent.js:346 #: js/ui/components/networkAgent.js:679 js/ui/components/networkAgent.js:700 msgid "Authentication required" msgstr "Ferifikaasje nedich" #: js/ui/components/networkAgent.js:319 js/ui/components/networkAgent.js:680 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network " "“%s”." msgstr "" #: js/ui/components/networkAgent.js:323 js/ui/components/networkAgent.js:684 msgid "Wired 802.1X authentication" msgstr "" #: js/ui/components/networkAgent.js:325 msgid "Network name" msgstr "Netwurk namme" #: js/ui/components/networkAgent.js:330 js/ui/components/networkAgent.js:688 msgid "DSL authentication" msgstr "DSL ferifikaasje" #: js/ui/components/networkAgent.js:337 js/ui/components/networkAgent.js:693 msgid "PIN code required" msgstr "PIN koade nedich" #: js/ui/components/networkAgent.js:338 js/ui/components/networkAgent.js:694 msgid "PIN code is needed for the mobile broadband device" msgstr "" #: js/ui/components/networkAgent.js:339 msgid "PIN" msgstr "PIN" #: js/ui/components/networkAgent.js:347 js/ui/components/networkAgent.js:685 #: js/ui/components/networkAgent.js:689 js/ui/components/networkAgent.js:701 #: js/ui/components/networkAgent.js:705 #, javascript-format msgid "A password is required to connect to “%s”." msgstr "Der is in wachtwurd nedich om te ferbinen mei “%s”." #: js/ui/components/networkAgent.js:668 js/ui/status/network.js:1774 msgid "Network Manager" msgstr "Netwurk Behearder" #: js/ui/components/networkAgent.js:704 msgid "VPN password" msgstr "VPN wachtwurd" #: js/ui/components/polkitAgent.js:39 msgid "Authentication Required" msgstr "Ferifikaasje Nedich" #: js/ui/components/polkitAgent.js:79 msgid "Administrator" msgstr "Administrator" #: js/ui/components/polkitAgent.js:141 msgid "Authenticate" msgstr "Ferifiearje" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:252 js/ui/shellMountOperation.js:402 msgid "Sorry, that didn’t work. Please try again." msgstr "Sorry, dat wurke net. Probearje it noch ris." #. Translators: this is the other person changing their old IM name to their new #. IM name. #: js/ui/components/telepathyClient.js:822 #, javascript-format msgid "%s is now known as %s" msgstr "%s stiet no bekend as %s" #: js/ui/ctrlAltTab.js:21 js/ui/overviewControls.js:404 msgid "Windows" msgstr "Finsters" #: js/ui/dash.js:204 js/ui/dash.js:247 msgid "Show Applications" msgstr "Applikaasjes sjen litte" #. Translators: this is the name of the dock/favorites area on #. the left of the overview #: js/ui/dash.js:394 msgid "Dash" msgstr "" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:79 msgid "%B %-d %Y" msgstr "%B %-d %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:86 msgid "%A %B %e %Y" msgstr "%A %B %e %Y" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:151 msgctxt "calendar heading" msgid "%B %-d" msgstr "%B %-d" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:154 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%B %-d %Y" #: js/ui/dateMenu.js:160 msgid "Today" msgstr "Hjoed" #: js/ui/dateMenu.js:164 msgid "Tomorrow" msgstr "Moarn" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:180 msgctxt "event list time" msgid "All Day" msgstr "De Folsleine Dei" #: js/ui/dateMenu.js:231 msgid "No Events" msgstr "Gjin Eveneminten" #: js/ui/dateMenu.js:348 msgid "Add world clocks…" msgstr "Wrâld klokken tafoegje…" #: js/ui/dateMenu.js:349 msgid "World Clocks" msgstr "Wrâld Klokken" #: js/ui/dateMenu.js:629 msgid "Loading…" msgstr "Lade…" #: js/ui/dateMenu.js:639 msgid "Go online for weather information" msgstr "Gean online foar ynformaasje oer it waar" #: js/ui/dateMenu.js:641 msgid "Weather information is currently unavailable" msgstr "Ynformaasje oer it waar is no net beskikber" #: js/ui/dateMenu.js:651 msgid "Weather" msgstr "Waar" #: js/ui/dateMenu.js:653 msgid "Select weather location…" msgstr "Lokaasje foar it waar selektearje…" #: js/ui/endSessionDialog.js:39 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "Log %s út" #: js/ui/endSessionDialog.js:40 msgctxt "title" msgid "Log Out" msgstr "Útlogge" #: js/ui/endSessionDialog.js:43 #, javascript-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "%s wurd oer %d sekonde automatysk útlogd." msgstr[1] "%s wurd oer %d sekonden automatysk útlogd. " #: js/ui/endSessionDialog.js:49 #, javascript-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "Jo wurde oer %d sekonde automatysk útlogd. " msgstr[1] "Jo wurde oer %d sekonden automatysk útlogd. " #: js/ui/endSessionDialog.js:56 msgctxt "button" msgid "Log Out" msgstr "Útlogge" #: js/ui/endSessionDialog.js:62 msgctxt "title" msgid "Power Off" msgstr "Útskeakelje" #: js/ui/endSessionDialog.js:63 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Fernijingen Ynstallearre & Útskeakelje" #: js/ui/endSessionDialog.js:66 #, javascript-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "It systeem sil automatysk ôfslute oer %d sekonde." msgstr[1] "It systeem sil automatysk ôfslute oer %d sekonden." #: js/ui/endSessionDialog.js:70 js/ui/endSessionDialog.js:89 msgctxt "checkbox" msgid "Install pending software updates" msgstr "Fernijingen yn ôfwachting ynstallearje" #: js/ui/endSessionDialog.js:74 msgctxt "button" msgid "Power Off" msgstr "Ôfslute" #: js/ui/endSessionDialog.js:81 msgctxt "title" msgid "Restart" msgstr "Opnij Starte" #: js/ui/endSessionDialog.js:82 msgctxt "title" msgid "Install Updates & Restart" msgstr "Fernijingen Ynstallearre & Opnij Starte" #: js/ui/endSessionDialog.js:85 #, javascript-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "It systeem sil opnij starte oer %d sekonde." msgstr[1] "It systeem sil opnij starte oer %d sekonden." #: js/ui/endSessionDialog.js:93 msgctxt "button" msgid "Restart" msgstr "Opnij Starte" #: js/ui/endSessionDialog.js:101 msgctxt "title" msgid "Restart & Install Updates" msgstr "Opnij Starte & Fernijingen Ynsteallearre" #: js/ui/endSessionDialog.js:104 #, javascript-format msgid "The system will automatically restart and install updates in %d second." msgid_plural "" "The system will automatically restart and install updates in %d seconds." msgstr[0] "" "It systeem sil automatysk opnij starte en fernijingen ynstallearje oer %d " "sekonde." msgstr[1] "" "It systeem sil automatysk opnij starte en fernijingen ynstallearje oer %d " "sekonden." #: js/ui/endSessionDialog.js:111 js/ui/endSessionDialog.js:132 msgctxt "button" msgid "Restart & Install" msgstr "Opnij Starte & Ynstallearre" #: js/ui/endSessionDialog.js:113 msgctxt "button" msgid "Install & Power Off" msgstr "Ynstallearre & Útskeakelje" #: js/ui/endSessionDialog.js:114 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Útskeakelje nei dat de fernijingen ynstallearre binne" #: js/ui/endSessionDialog.js:121 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:126 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "%s %s sil ynstallearre wurde nei it opnij opstarten. In ynstallaasje " "opwurdearje kin lang duorje: wês der wis fan dat jo in backup hawwe en dat " "jo kompûter oan de netstroom stiet." #: js/ui/endSessionDialog.js:284 msgid "Low battery power: please plug in before installing updates." msgstr "" #: js/ui/endSessionDialog.js:293 msgid "Some applications are busy or have unsaved work" msgstr "" "Guon applikaasjes binne dwaande of hawwe wiizigingen dy nog net opslein binne" #: js/ui/endSessionDialog.js:298 msgid "Other users are logged in" msgstr "Oare brûkers binne ynlogd" #: js/ui/endSessionDialog.js:467 msgctxt "button" msgid "Boot Options" msgstr "Opstart Opsjes" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:686 #, javascript-format msgid "%s (remote)" msgstr "%s (op ôfstân)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:689 #, javascript-format msgid "%s (console)" msgstr "" #: js/ui/extensionDownloader.js:194 msgid "Install" msgstr "Ynstallearje" #: js/ui/extensionDownloader.js:200 msgid "Install Extension" msgstr "Ynstallearre Útwreidingen" #: js/ui/extensionDownloader.js:201 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "" #: js/ui/extensionSystem.js:253 msgid "Extension Updates Available" msgstr "Útwreidings Fernijingen Beskikber" #: js/ui/extensionSystem.js:254 msgid "Extension updates are ready to be installed." msgstr "Útwreidings fernijingen binne klear om ynstallearre te wurden." #: js/ui/inhibitShortcutsDialog.js:79 msgid "Allow inhibiting shortcuts" msgstr "" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:82 #, javascript-format msgid "The application %s wants to inhibit shortcuts" msgstr "De applikaasje %s wol fluchtoetsen tsjinhâlde" #: js/ui/inhibitShortcutsDialog.js:83 msgid "An application wants to inhibit shortcuts" msgstr "" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:90 #, javascript-format msgid "You can restore shortcuts by pressing %s." msgstr "" #: js/ui/inhibitShortcutsDialog.js:100 msgid "Deny" msgstr "Net tastean" #: js/ui/inhibitShortcutsDialog.js:107 msgid "Allow" msgstr "Tastean" #: js/ui/kbdA11yDialog.js:32 msgid "Slow Keys Turned On" msgstr "Drêge Toetsen Oan set" #: js/ui/kbdA11yDialog.js:33 msgid "Slow Keys Turned Off" msgstr "Drêge Toetsen Út set" #: js/ui/kbdA11yDialog.js:34 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "Jo hawwe de shift toets foar 8 sekonden ynhâlden. Dit is de fluchtoets foar " "de funksje \"drêge toetsen\", dy fan ynfloed is op hoe as jo toetseboerd " "wurket." #: js/ui/kbdA11yDialog.js:40 msgid "Sticky Keys Turned On" msgstr "Plakkeriche Toetsen Oan set" #: js/ui/kbdA11yDialog.js:41 msgid "Sticky Keys Turned Off" msgstr "Plakkeriche Toetsen Út set" #: js/ui/kbdA11yDialog.js:43 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "Jo hawwe de shift toets 5 keer achter inoar yndrukt. Dit is de fluchtoets " "foar de funksje \"plakkeriche toetsen\", dy fan ynfloed is op hoe as jo " "toetseboerd wurket." #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" #: js/ui/kbdA11yDialog.js:54 msgid "Leave On" msgstr "Oan litte" #: js/ui/kbdA11yDialog.js:54 js/ui/status/bluetooth.js:156 #: js/ui/status/network.js:1362 msgid "Turn On" msgstr "Oan sette" #: js/ui/kbdA11yDialog.js:62 js/ui/status/bluetooth.js:156 #: js/ui/status/network.js:166 js/ui/status/network.js:350 #: js/ui/status/network.js:1362 js/ui/status/network.js:1474 #: js/ui/status/nightLight.js:41 js/ui/status/rfkill.js:81 #: js/ui/status/rfkill.js:110 msgid "Turn Off" msgstr "Út sette" #: js/ui/kbdA11yDialog.js:62 msgid "Leave Off" msgstr "Út litte" #: js/ui/keyboard.js:227 msgid "Region & Language Settings" msgstr "Regio & Taal Ynstellingen" #: js/ui/lookingGlass.js:676 msgid "No extensions installed" msgstr "Gjin útwreidingen ynstallearre" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:734 #, javascript-format msgid "%s has not emitted any errors." msgstr "" #: js/ui/lookingGlass.js:740 msgid "Hide Errors" msgstr "Flaters ferbergje" #: js/ui/lookingGlass.js:744 js/ui/lookingGlass.js:810 msgid "Show Errors" msgstr "Flaters sjen litte" #: js/ui/lookingGlass.js:753 msgid "Enabled" msgstr "Ynskeakele" #. translators: #. * The device has been disabled #: js/ui/lookingGlass.js:756 subprojects/gvc/gvc-mixer-control.c:1900 msgid "Disabled" msgstr "Útskeakele" #: js/ui/lookingGlass.js:758 #: subprojects/extensions-app/data/ui/extension-row.ui:158 msgid "Error" msgstr "Flater" #: js/ui/lookingGlass.js:760 msgid "Out of date" msgstr "Ferâldere" #: js/ui/lookingGlass.js:762 msgid "Downloading" msgstr "Delhelje" #: js/ui/lookingGlass.js:792 msgid "View Source" msgstr "Boarne besjen" #: js/ui/lookingGlass.js:801 msgid "Web Page" msgstr "Web Side" #: js/ui/main.js:294 msgid "Logged in as a privileged user" msgstr "As befoarrjochte brûker ynlogd" #: js/ui/main.js:295 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" #: js/ui/main.js:344 msgid "Screen Lock disabled" msgstr "" #: js/ui/main.js:345 msgid "Screen Locking requires the GNOME display manager." msgstr "" #: js/ui/messageTray.js:1440 msgid "System Information" msgstr "Systeem ynformaasje" #: js/ui/mpris.js:207 msgid "Unknown artist" msgstr "Ûnbekende artyst" #: js/ui/mpris.js:217 msgid "Unknown title" msgstr "Ûnbekende titel" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:313 msgid "Type to search" msgstr "Tikje om te sykjen" #: js/ui/overviewControls.js:392 msgid "Applications" msgstr "Aplikaasjes" #: js/ui/overview.js:58 msgid "Undo" msgstr "Ûngedien meitsje" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:71 msgid "Overview" msgstr "Oersjoch" #: js/ui/padOsd.js:96 msgid "New shortcut…" msgstr "Nije fluchtoets…" #: js/ui/padOsd.js:143 msgid "Application defined" msgstr "Applikaasje definiearre" #: js/ui/padOsd.js:144 msgid "Show on-screen help" msgstr "" #: js/ui/padOsd.js:145 msgid "Switch monitor" msgstr "Fan skerm wikselje" #: js/ui/padOsd.js:146 msgid "Assign keystroke" msgstr "" #: js/ui/padOsd.js:212 msgid "Done" msgstr "Klear" #: js/ui/padOsd.js:718 msgid "Edit…" msgstr "Feroarje…" #: js/ui/padOsd.js:760 js/ui/padOsd.js:877 msgid "None" msgstr "Gjin" #: js/ui/padOsd.js:831 msgid "Press a button to configure" msgstr "Druk op in toets om yn te stellen" #: js/ui/padOsd.js:832 msgid "Press Esc to exit" msgstr "Druk op Esc om te sluten" #: js/ui/padOsd.js:835 msgid "Press any key to exit" msgstr "Druk op in toets om ôf te sluten" #: js/ui/panel.js:66 msgid "Quit" msgstr "Ôfslute" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:395 msgid "Activities" msgstr "Aktiviteiten" #: js/ui/panel.js:666 msgctxt "System menu in the top bar" msgid "System" msgstr "Systeem" #: js/ui/panel.js:778 msgid "Top Bar" msgstr "Boppeste Balke" #: js/ui/runDialog.js:58 msgid "Run a Command" msgstr "In Kommando útfiere" #: js/ui/runDialog.js:73 msgid "Press ESC to close" msgstr "Druk op ESC om te sluten" #: js/ui/runDialog.js:238 msgid "Restart is not available on Wayland" msgstr "Kin net opnij starte ûnder Wayland" #: js/ui/runDialog.js:243 msgid "Restarting…" msgstr "Opnij oan it starten…" #: js/ui/screenShield.js:211 msgid "GNOME needs to lock the screen" msgstr "GNOME moat it skerm op slot sette" #. We could not become modal, so we can't activate the #. screenshield. The user is probably very upset at this #. point, but any application using global grabs is broken #. Just tell him to stop using this app #. #. XXX: another option is to kick the user into the gdm login #. screen, where we're not affected by grabs #: js/ui/screenShield.js:252 js/ui/screenShield.js:622 msgid "Unable to lock" msgstr "Kin net op slot sette" #: js/ui/screenShield.js:253 js/ui/screenShield.js:623 msgid "Lock was blocked by an application" msgstr "" #: js/ui/screenshot.js:141 msgid "Screenshot taken" msgstr "Skermôfbylding makke" #: js/ui/search.js:825 msgid "Searching…" msgstr "Oan it sykjen…" #: js/ui/search.js:827 msgid "No results." msgstr "Gjin resultaten." #: js/ui/search.js:953 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "%d mear" msgstr[1] "%d mear" #: js/ui/searchController.js:87 msgid "Search" msgstr "Sykje" #: js/ui/shellEntry.js:20 msgid "Copy" msgstr "Kopiearje" #: js/ui/shellEntry.js:25 msgid "Paste" msgstr "Plakke" #: js/ui/shellEntry.js:73 msgid "Show Text" msgstr "Tekst sjen litte" #: js/ui/shellEntry.js:75 msgid "Hide Text" msgstr "Tekst Ferbergje" #: js/ui/shellEntry.js:162 msgid "Caps lock is on." msgstr "Caps lock stiet oan" #: js/ui/shellMountOperation.js:285 msgid "Hidden Volume" msgstr "" #: js/ui/shellMountOperation.js:288 msgid "Windows System Volume" msgstr "" #: js/ui/shellMountOperation.js:291 msgid "Uses Keyfiles" msgstr "Brûkt Kaaibestannen" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:298 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead." msgstr "" #: js/ui/shellMountOperation.js:306 msgid "PIM Number" msgstr "PIM Nûmer" #: js/ui/shellMountOperation.js:365 msgid "Remember Password" msgstr "Wachtwurd Ûnthâlde" #: js/ui/shellMountOperation.js:380 msgid "Unlock" msgstr "" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:391 #, javascript-format msgid "Open %s" msgstr "Iepenje %s" #: js/ui/shellMountOperation.js:423 msgid "The PIM must be a number or empty." msgstr "De PIM moat in nûmer wêze, of leech." #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:465 #, javascript-format msgid "Unable to start %s" msgstr "Koe %s net starte" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:467 #, javascript-format msgid "Couldn’t find the %s application" msgstr "Koe de %s applikaasje net fine" #: js/ui/status/accessibility.js:35 msgid "Accessibility" msgstr "Tagonklikheid" #: js/ui/status/accessibility.js:48 msgid "Zoom" msgstr "Grutter meitsje" #: js/ui/status/accessibility.js:55 msgid "Screen Reader" msgstr "Skerm lêzer" #: js/ui/status/accessibility.js:59 msgid "Screen Keyboard" msgstr "Skerm Toetseboerd" #: js/ui/status/accessibility.js:63 msgid "Visual Alerts" msgstr "" #: js/ui/status/accessibility.js:66 msgid "Sticky Keys" msgstr "Plakkeriche Toetsen" #: js/ui/status/accessibility.js:69 msgid "Slow Keys" msgstr "Drêge Toetsen" #: js/ui/status/accessibility.js:72 msgid "Bounce Keys" msgstr "" #: js/ui/status/accessibility.js:75 msgid "Mouse Keys" msgstr "" #: js/ui/status/accessibility.js:134 msgid "High Contrast" msgstr "Heech Kontrast" #: js/ui/status/accessibility.js:176 msgid "Large Text" msgstr "Grutte Tekst" #: js/ui/status/bluetooth.js:40 msgid "Bluetooth" msgstr "Bluetooth" #: js/ui/status/bluetooth.js:49 js/ui/status/network.js:637 msgid "Bluetooth Settings" msgstr "Bluetooth Ynstellingen" #. Translators: this is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:148 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d Connected" msgstr[1] "%d Connected" #: js/ui/status/bluetooth.js:152 msgid "Bluetooth Off" msgstr "Bluetooth Út" #: js/ui/status/bluetooth.js:154 msgid "Bluetooth On" msgstr "Bluetooth Oan" #: js/ui/status/brightness.js:39 msgid "Brightness" msgstr "Helderheid" #: js/ui/status/dwellClick.js:12 msgid "Single Click" msgstr "Inkelde Klik" #: js/ui/status/dwellClick.js:17 msgid "Double Click" msgstr "Dûbelde Klik" #: js/ui/status/dwellClick.js:22 msgid "Drag" msgstr "Slepe" #: js/ui/status/dwellClick.js:27 msgid "Secondary Click" msgstr "Twadde Klik" #: js/ui/status/dwellClick.js:36 msgid "Dwell Click" msgstr "" #: js/ui/status/keyboard.js:829 msgid "Keyboard" msgstr "Toetseboerd" #: js/ui/status/keyboard.js:846 msgid "Show Keyboard Layout" msgstr "Toetseboerd Yndieling Besjen" #: js/ui/status/location.js:234 js/ui/status/location.js:267 msgid "Location Enabled" msgstr "Lokaasje Ynskeakele" #: js/ui/status/location.js:235 js/ui/status/location.js:268 msgid "Disable" msgstr "Útskeakelje" #: js/ui/status/location.js:236 msgid "Privacy Settings" msgstr "Privacy Ynstellingen" #: js/ui/status/location.js:266 msgid "Location In Use" msgstr "Lokaasje Yn Gebrûkt" #: js/ui/status/location.js:270 msgid "Location Disabled" msgstr "Lokaasje Útskeakele" #: js/ui/status/location.js:271 msgid "Enable" msgstr "Ynskeakelje" #: js/ui/status/location.js:398 msgid "Allow location access" msgstr "Tagong ta lokaasje tastean" #. Translators: %s is an application name #: js/ui/status/location.js:400 #, javascript-format msgid "The app %s wants to access your location" msgstr "De applikaasje %s wol tagong ta jo lokaasje" #: js/ui/status/location.js:410 msgid "Location access can be changed at any time from the privacy settings." msgstr "Lokaasje tagong kin altyd feroare wurde yn de privacy ynstellingen." #: js/ui/status/network.js:72 msgid "" msgstr "<ûnbekend>" #. Translators: %s is a network identifier #: js/ui/status/network.js:455 js/ui/status/network.js:1391 #, javascript-format msgid "%s Off" msgstr "%s Út" #. Translators: %s is a network identifier #: js/ui/status/network.js:458 #, javascript-format msgid "%s Connected" msgstr "%s Ferbûn" #. Translators: this is for network devices that are physically present but are not #. under NetworkManager's control (and thus cannot be used in the menu); #. %s is a network identifier #: js/ui/status/network.js:463 #, javascript-format msgid "%s Unmanaged" msgstr "%s Unbehearre" #. Translators: %s is a network identifier #: js/ui/status/network.js:466 #, javascript-format msgid "%s Disconnecting" msgstr "%s Ferbining oan it ferbrekken" #. Translators: %s is a network identifier #: js/ui/status/network.js:473 js/ui/status/network.js:1383 #, javascript-format msgid "%s Connecting" msgstr "%s Oan it ferbinen" #. Translators: this is for network connections that require some kind of key or password; %s is a network identifier #: js/ui/status/network.js:476 #, javascript-format msgid "%s Requires Authentication" msgstr "%s Ferifikaasje Nedich" #. Translators: this is for devices that require some kind of firmware or kernel #. module, which is missing; %s is a network identifier #: js/ui/status/network.js:484 #, javascript-format msgid "Firmware Missing For %s" msgstr "" #. Translators: this is for a network device that cannot be activated (for example it #. is disabled by rfkill, or it has no coverage; %s is a network identifier #: js/ui/status/network.js:488 #, javascript-format msgid "%s Unavailable" msgstr "%s Net beskikber" #. Translators: %s is a network identifier #: js/ui/status/network.js:491 #, javascript-format msgid "%s Connection Failed" msgstr "%s Ferbining Mislearre" #: js/ui/status/network.js:503 msgid "Wired Settings" msgstr "Betriede Ynstellingen" #: js/ui/status/network.js:546 msgid "Mobile Broadband Settings" msgstr "" #. Translators: %s is a network identifier #: js/ui/status/network.js:604 js/ui/status/network.js:1388 #, javascript-format msgid "%s Hardware Disabled" msgstr "" #. Translators: this is for a network device that cannot be activated #. because it's disabled by rfkill (airplane mode); %s is a network identifier #: js/ui/status/network.js:608 #, javascript-format msgid "%s Disabled" msgstr "%s Útskeakele" #: js/ui/status/network.js:649 msgid "Connect to Internet" msgstr "Mei it ynternet ferbine" #: js/ui/status/network.js:858 msgid "Airplane Mode is On" msgstr "Fleantúch Stân stiet Oan" #: js/ui/status/network.js:859 msgid "Wi-Fi is disabled when airplane mode is on." msgstr "Wi-Fi is útskeakele as fleantúch stân oan stiet." #: js/ui/status/network.js:860 msgid "Turn Off Airplane Mode" msgstr "Fleantúch Stân Út Sette" #: js/ui/status/network.js:869 msgid "Wi-Fi is Off" msgstr "Wi-Fi stiet Út" #: js/ui/status/network.js:870 msgid "Wi-Fi needs to be turned on in order to connect to a network." msgstr "Wi-Fi moat ynskeakele wêze om mei in netwurk te ferbinen." #: js/ui/status/network.js:871 msgid "Turn On Wi-Fi" msgstr "Wi-Fi Ynskeakelje" #: js/ui/status/network.js:896 msgid "Wi-Fi Networks" msgstr "Wi-Fi Netwurken" #: js/ui/status/network.js:898 msgid "Select a network" msgstr "Netwurk selektearje" #: js/ui/status/network.js:930 msgid "No Networks" msgstr "Gjin Netwurken" #: js/ui/status/network.js:951 js/ui/status/rfkill.js:108 msgid "Use hardware switch to turn off" msgstr "Brûk de hardware knop om út te skeakeljen" #: js/ui/status/network.js:1252 msgid "Select Network" msgstr "Netwurk Selektearje" #: js/ui/status/network.js:1258 msgid "Wi-Fi Settings" msgstr "Wi-Fi Ynstellingen" #. Translators: %s is a network identifier #: js/ui/status/network.js:1379 #, javascript-format msgid "%s Hotspot Active" msgstr "%s Hotspot Aktyf" #. Translators: %s is a network identifier #: js/ui/status/network.js:1394 #, javascript-format msgid "%s Not Connected" msgstr "%s Net Ferbûn" #: js/ui/status/network.js:1491 msgid "connecting…" msgstr "oan it ferbinen…" #. Translators: this is for network connections that require some kind of key or password #: js/ui/status/network.js:1494 msgid "authentication required" msgstr "ferifikaasje nedich" #: js/ui/status/network.js:1496 msgid "connection failed" msgstr "ferbining mislearre" #: js/ui/status/network.js:1547 msgid "VPN Settings" msgstr "VPN Ynstellingen" #: js/ui/status/network.js:1564 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1574 msgid "VPN Off" msgstr "VPN Út" #: js/ui/status/network.js:1635 js/ui/status/rfkill.js:84 msgid "Network Settings" msgstr "Netwurk Ynstellingen" #: js/ui/status/network.js:1663 #, javascript-format msgid "%s Wired Connection" msgid_plural "%s Wired Connections" msgstr[0] "%s Bekabelde Ferbining" msgstr[1] "%s Bekabelde Ferbiningen" #: js/ui/status/network.js:1667 #, javascript-format msgid "%s Wi-Fi Connection" msgid_plural "%s Wi-Fi Connections" msgstr[0] "%s Wi-Fi Ferbining" msgstr[1] "%s Wi-Fi Ferbiningen" #: js/ui/status/network.js:1671 #, javascript-format msgid "%s Modem Connection" msgid_plural "%s Modem Connections" msgstr[0] "" msgstr[1] "" #: js/ui/status/network.js:1815 msgid "Connection failed" msgstr "Ferbining mislearre" #: js/ui/status/network.js:1816 msgid "Activation of network connection failed" msgstr "Aktifaasje fan netwurk ferbining mislearre" #: js/ui/status/nightLight.js:63 msgid "Night Light Disabled" msgstr "Nachtlampe útskeakele" #: js/ui/status/nightLight.js:64 msgid "Night Light On" msgstr "Nachtlampe oan" #: js/ui/status/nightLight.js:66 msgid "Resume" msgstr "Troch gean" #: js/ui/status/nightLight.js:67 msgid "Disable Until Tomorrow" msgstr "Útskeakelje Oant Moarn" #: js/ui/status/power.js:51 msgid "Power Settings" msgstr "Energy Ynstellingen" #: js/ui/status/power.js:68 msgid "Fully Charged" msgstr "Folslein Opladen" #: js/ui/status/power.js:74 msgid "Not Charging" msgstr "Net oan it Opladen" #. 0 is reported when UPower does not have enough data #. to estimate battery life #: js/ui/status/power.js:77 js/ui/status/power.js:83 msgid "Estimating…" msgstr "Skatting oan it meitsjen…" #. Translators: this is : Remaining () #: js/ui/status/power.js:91 #, javascript-format msgid "%d∶%02d Remaining (%d %%)" msgstr "%d∶%02d Oerbleaun (%d %%)" #. Translators: this is : Until Full () #: js/ui/status/power.js:97 #, javascript-format msgid "%d∶%02d Until Full (%d %%)" msgstr "%d∶%02d Oant Fol (%d %%)" #. The icon label #: js/ui/status/power.js:145 #, javascript-format msgid "%d %%" msgstr "%d %%" #: js/ui/status/remoteAccess.js:38 msgid "Screen is Being Shared" msgstr "Skerm wurd Dield" #: js/ui/status/remoteAccess.js:40 msgid "Turn off" msgstr "Út sette" #. The menu only appears when airplane mode is on, so just #. statically build it as if it was on, rather than dynamically #. changing the menu contents. #: js/ui/status/rfkill.js:79 msgid "Airplane Mode On" msgstr "Fleanmasine Modus Oan" #: js/ui/status/system.js:104 msgid "Lock" msgstr "" #: js/ui/status/system.js:116 msgid "Power Off / Log Out" msgstr "Útskeakelje / Útlogge" #: js/ui/status/system.js:119 msgid "Suspend" msgstr "" #: js/ui/status/system.js:130 msgid "Restart…" msgstr "Opnij Starte…" #: js/ui/status/system.js:141 msgid "Power Off…" msgstr "Útskeakelje…" #: js/ui/status/system.js:154 msgid "Log Out" msgstr "Útlogge" #: js/ui/status/system.js:165 msgid "Switch User…" msgstr "Fan brûker wikselje…" #: js/ui/status/thunderbolt.js:262 msgid "Thunderbolt" msgstr "Thunderbolt" #: js/ui/status/thunderbolt.js:324 msgid "Unknown Thunderbolt device" msgstr "Ûnbekend Thunderbolt apperaat" #: js/ui/status/thunderbolt.js:325 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" "Der is in nij apparaat detektearre wylst jo fuort wienen. Keppelje dit " "apparaat ôf en wer oan om it te brûken." #: js/ui/status/thunderbolt.js:328 msgid "Unauthorized Thunderbolt device" msgstr "" #: js/ui/status/thunderbolt.js:329 msgid "" "New device has been detected and needs to be authorized by an administrator." msgstr "" #: js/ui/status/thunderbolt.js:335 msgid "Thunderbolt authorization error" msgstr "" #: js/ui/status/thunderbolt.js:336 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "" #: js/ui/status/volume.js:160 msgid "Volume changed" msgstr "Stasjon feroare" #: js/ui/status/volume.js:222 msgid "Volume" msgstr "Stasjon" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:17 msgid "Mirror" msgstr "" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:22 msgid "Join Displays" msgstr "Skermen Gearfoegje" #. Translators: this is for using only an external display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:27 msgid "External Only" msgstr "Allinnich Ekstern" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:32 msgid "Built-in Only" msgstr "Allinnich Ynboud" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:371 msgid "%A %B %-d" msgstr "%A %B %-d" #: js/ui/unlockDialog.js:377 msgid "Swipe up to unlock" msgstr "" #: js/ui/unlockDialog.js:378 msgid "Click or press a key to unlock" msgstr "Klik of druk op in toets of fan't slot te heljen" #: js/ui/unlockDialog.js:556 msgid "Unlock Window" msgstr "Finster fan't slot helje" #: js/ui/unlockDialog.js:565 msgid "Log in as another user" msgstr "Ynlogge as in oare brûker" #: js/ui/welcomeDialog.js:36 #, javascript-format msgid "Welcome to GNOME %s" msgstr "Wolkom by GNOME %s" #: js/ui/welcomeDialog.js:37 msgid "If you want to learn your way around, check out the tour." msgstr "" "As jo graach witte wolle hoe oft dit ollegearre wurket, besykje dan de " "rûnlieding ris." #: js/ui/welcomeDialog.js:45 msgid "No Thanks" msgstr "Nee Tanke" #: js/ui/welcomeDialog.js:50 msgid "Take Tour" msgstr "Nim de Rûnlieding" #: js/ui/windowAttentionHandler.js:20 #, javascript-format msgid "“%s” is ready" msgstr "“%s” is klear" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:63 msgid "Keep these display settings?" msgstr "Disse skerm ynstellingen bewarje?" #. Translators: this and the following message should be limited in length, #. to avoid ellipsizing the labels. #. #: js/ui/windowManager.js:72 msgid "Revert Settings" msgstr "Ynstellingen Weromsette" #: js/ui/windowManager.js:75 msgid "Keep Changes" msgstr "Feroaringen Bewarje" #: js/ui/windowManager.js:94 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "" msgstr[1] "" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:550 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:27 msgid "Minimize" msgstr "Minimalisearje" #: js/ui/windowMenu.js:34 msgid "Unmaximize" msgstr "Net mear maximalisearje" #: js/ui/windowMenu.js:38 msgid "Maximize" msgstr "Maksimalisearje" #: js/ui/windowMenu.js:45 msgid "Move" msgstr "Ferpleatse" #: js/ui/windowMenu.js:51 msgid "Resize" msgstr "Grutte feroarje" #: js/ui/windowMenu.js:58 msgid "Move Titlebar Onscreen" msgstr "Titelbalke op it skerm pleatse" #: js/ui/windowMenu.js:63 msgid "Always on Top" msgstr "Altyd Boppe oan" #: js/ui/windowMenu.js:82 msgid "Always on Visible Workspace" msgstr "Altyd op de Sichtbere Wurkrome" #: js/ui/windowMenu.js:96 msgid "Move to Workspace Left" msgstr "In Wurkromte nei Links ferplaetse" #: js/ui/windowMenu.js:102 msgid "Move to Workspace Right" msgstr "In Wurkromte nei Rjochts ferplaetse" #: js/ui/windowMenu.js:108 msgid "Move to Workspace Up" msgstr "In Wurkromte nei Omheech ferplaetse" #: js/ui/windowMenu.js:114 msgid "Move to Workspace Down" msgstr "Nei Wurkromte nei Ûnderen ferplaetse" #: js/ui/windowMenu.js:132 msgid "Move to Monitor Up" msgstr "In Skerm Omheech ferplaetse" #: js/ui/windowMenu.js:141 msgid "Move to Monitor Down" msgstr "In Skerm nei Ûnderen ferplaetse" #: js/ui/windowMenu.js:150 msgid "Move to Monitor Left" msgstr "In Skerm nei Links ferplaetse" #: js/ui/windowMenu.js:159 msgid "Move to Monitor Right" msgstr "In Skerm nei Rjochts ferplaetse" #: js/ui/windowMenu.js:167 msgid "Close" msgstr "Slute" #: src/calendar-server/evolution-calendar.desktop.in:3 msgid "Evolution Calendar" msgstr "Evolution Kalinder" #: src/main.c:419 subprojects/extensions-tool/src/main.c:317 msgid "Print version" msgstr "Ferzje útprinte" #: src/main.c:425 msgid "Mode used by GDM for login screen" msgstr "Modus dy brûkt wurd troch GDM foar it ynlogskerm" #: src/main.c:431 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "" #: src/main.c:437 msgid "List possible modes" msgstr "" #: src/shell-app.c:298 msgctxt "program" msgid "Unknown" msgstr "Ûnbekend" #: src/shell-app.c:549 #, c-format msgid "Failed to launch “%s”" msgstr "Koe “%s” net iepenje" #: src/shell-keyring-prompt.c:731 msgid "Passwords do not match." msgstr "Wachtwurden komme net oerien." #: src/shell-keyring-prompt.c:739 msgid "Password cannot be blank" msgstr "Wachtwurd mei net leech wêze" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/js/main.js:217 #: subprojects/extensions-app/data/ui/extensions-window.ui:56 msgid "Extensions" msgstr "Útwreidingen" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 #: subprojects/extensions-app/js/main.js:218 msgid "Manage your GNOME Extensions" msgstr "Jo GNOME Útwreidingen behearre" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:17 msgid "The GNOME Project" msgstr "It GNOME Projekt" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:36 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "GNOME shell Útwreidingen Konfigurearje" #: subprojects/extensions-app/js/main.js:142 #: subprojects/extensions-app/js/main.js:152 msgid "No Matches" msgstr "Gjin Oerienkomsten" #: subprojects/extensions-app/js/main.js:179 #, javascript-format msgid "Remove “%s”?" msgstr "Wolle jo “%s” fuortsmite?" #: subprojects/extensions-app/js/main.js:180 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "" #: subprojects/extensions-app/js/main.js:184 msgid "Remove" msgstr "Fuortsmite" #: subprojects/extensions-app/js/main.js:216 msgid "translator-credits" msgstr "Tjipke van der Heide" #: subprojects/extensions-app/js/main.js:344 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "%d útwreiding sil mij de oankommende kear ynloggen fernijd wurde." msgstr[1] "" "%d útwreidingen sille mij de oankommende kear ynloggen fernijd wurde." #: subprojects/extensions-app/js/main.js:494 msgid "The extension is incompatible with the current GNOME version" msgstr "De útwreiding is net kompatibel mei de lêste GNOME ferzje" #: subprojects/extensions-app/js/main.js:497 msgid "The extension had an error" msgstr "De útwreiding hat in flater" #: subprojects/extensions-app/data/ui/extension-row.ui:83 #: subprojects/extensions-tool/src/command-create.c:322 #: subprojects/extensions-tool/src/main.c:241 msgid "Description" msgstr "Beskriuwing" #: subprojects/extensions-app/data/ui/extension-row.ui:104 #: subprojects/extensions-tool/src/main.c:253 msgid "Version" msgstr "Ferzje" #: subprojects/extensions-app/data/ui/extension-row.ui:131 msgid "Author" msgstr "Auteur" #: subprojects/extensions-app/data/ui/extension-row.ui:185 msgid "Website" msgstr "Webside" #: subprojects/extensions-app/data/ui/extension-row.ui:201 msgid "Remove…" msgstr "Fuortsmite…" #: subprojects/extensions-app/data/ui/extensions-window.ui:7 msgid "Help" msgstr "Help" #: subprojects/extensions-app/data/ui/extensions-window.ui:11 msgid "About Extensions" msgstr "Oer Útwreidingen" #: subprojects/extensions-app/data/ui/extensions-window.ui:27 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" "Om útwreidingen te finen en ta te foegjen, sjoch op extensions.gnome.org." #: subprojects/extensions-app/data/ui/extensions-window.ui:34 msgid "Warning" msgstr "Warskôging" #: subprojects/extensions-app/data/ui/extensions-window.ui:44 msgid "" "Extensions can cause system issues, including performance problems. If you " "encounter problems with your system, it is recommended to disable all " "extensions." msgstr "Útwreidingen kinne foar systeemproblemen soargje, lykas " #: subprojects/extensions-app/data/ui/extensions-window.ui:150 msgid "Manually Installed" msgstr "Hânmjittich Ynstallearre" #: subprojects/extensions-app/data/ui/extensions-window.ui:174 msgid "Built-In" msgstr "Ynboud" #: subprojects/extensions-app/data/ui/extensions-window.ui:217 msgid "No Installed Extensions" msgstr "Gjin Ynstallearre Útwreidingen" #: subprojects/extensions-app/data/ui/extensions-window.ui:252 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" #: subprojects/extensions-app/data/ui/extensions-window.ui:288 msgid "Extension Updates Ready" msgstr "Útwreidings Fernijingen Beskikber" #: subprojects/extensions-app/data/ui/extensions-window.ui:303 msgid "Log Out…" msgstr "Útlogge…" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:222 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "De nije útwreiding is mei sukses oanmakke yn %s.\n" #: subprojects/extensions-tool/src/command-create.c:296 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" "Namme moat in hiel koart (it leafst beskriuwend) stikje tekst wêze.\n" "Foarbylden binne: %s" #: subprojects/extensions-tool/src/command-create.c:302 #: subprojects/extensions-tool/src/main.c:238 msgid "Name" msgstr "Namme" #: subprojects/extensions-tool/src/command-create.c:316 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" "Beskriuwing is in inkelde rigel oan ferheldering fan wat de útwreiding " "docht.\n" "Foarbylden binne: %s" #: subprojects/extensions-tool/src/command-create.c:336 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" #: subprojects/extensions-tool/src/command-create.c:363 msgid "Choose one of the available templates:\n" msgstr "Kies út ien fan de beskikbere foarbylden:\n" #: subprojects/extensions-tool/src/command-create.c:377 msgid "Template" msgstr "Foarbyld" #: subprojects/extensions-tool/src/command-create.c:432 msgid "The unique identifier of the new extension" msgstr "" #: subprojects/extensions-tool/src/command-create.c:435 msgid "NAME" msgstr "NAME" #: subprojects/extensions-tool/src/command-create.c:436 msgid "The user-visible name of the new extension" msgstr "" #: subprojects/extensions-tool/src/command-create.c:438 msgid "DESCRIPTION" msgstr "DESCRIPTION" #: subprojects/extensions-tool/src/command-create.c:440 msgid "A short description of what the extension does" msgstr "" #: subprojects/extensions-tool/src/command-create.c:443 msgid "TEMPLATE" msgstr "TEMPLATE" #: subprojects/extensions-tool/src/command-create.c:444 msgid "The template to use for the new extension" msgstr "" #: subprojects/extensions-tool/src/command-create.c:450 msgid "Enter extension information interactively" msgstr "Útwreidings ynformaasje interaktyf ynfiere" #: subprojects/extensions-tool/src/command-create.c:458 msgid "Create a new extension" msgstr "In nije útwreiding oanmeitsje" #: subprojects/extensions-tool/src/command-create.c:476 #: subprojects/extensions-tool/src/command-list.c:172 msgid "Unknown arguments" msgstr "Ûnbekende arguminten" #: subprojects/extensions-tool/src/command-create.c:501 msgid "UUID, name and description are required" msgstr "" #: subprojects/extensions-tool/src/command-disable.c:46 #: subprojects/extensions-tool/src/command-enable.c:46 #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:64 msgid "Failed to connect to GNOME Shell\n" msgstr "" #: subprojects/extensions-tool/src/command-disable.c:53 #: subprojects/extensions-tool/src/command-enable.c:53 #, c-format msgid "Extension “%s” does not exist\n" msgstr "Útwreiding “%s” bestiet net\n" #: subprojects/extensions-tool/src/command-disable.c:101 msgid "Disable an extension" msgstr "In útwreiding útskeakelje" #: subprojects/extensions-tool/src/command-disable.c:119 #: subprojects/extensions-tool/src/command-enable.c:119 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:97 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "Gjin UUID opjûn" #: subprojects/extensions-tool/src/command-disable.c:124 #: subprojects/extensions-tool/src/command-enable.c:124 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:102 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "Mear as ien UUID opjûn" #: subprojects/extensions-tool/src/command-enable.c:101 msgid "Enable an extension" msgstr "In útwreiding ynskeakelje" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:155 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "Útwreiding “%s” bestiet net\n" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "Útwreidings ynformaasje sjen litte" #: subprojects/extensions-tool/src/command-install.c:173 msgid "Overwrite an existing extension" msgstr "In besteande útwreiding oerskriuwe" #: subprojects/extensions-tool/src/command-install.c:175 msgid "EXTENSION_BUNDLE" msgstr "EXTENSION_BUNDLE" #: subprojects/extensions-tool/src/command-install.c:184 msgid "Install an extension bundle" msgstr "" #: subprojects/extensions-tool/src/command-install.c:202 msgid "No extension bundle specified" msgstr "" #: subprojects/extensions-tool/src/command-install.c:208 msgid "More than one extension bundle specified" msgstr "" #: subprojects/extensions-tool/src/command-list.c:128 msgid "Show user-installed extensions" msgstr "Troch de brûker ynstallearre útwreidingen sjen litte" #: subprojects/extensions-tool/src/command-list.c:131 msgid "Show system-installed extensions" msgstr "Troch it systeem ynstallearre útwreidingen sjen litte" #: subprojects/extensions-tool/src/command-list.c:134 msgid "Show enabled extensions" msgstr "Ynskeakele útwreidingen sjen litte" #: subprojects/extensions-tool/src/command-list.c:137 msgid "Show disabled extensions" msgstr "Únskeakele útwreidingen sjen litte" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show extensions with preferences" msgstr "" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show extensions with updates" msgstr "Útwreidingen mei fernijingen sjen litte" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Print extension details" msgstr "" #: subprojects/extensions-tool/src/command-list.c:154 msgid "List installed extensions" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:450 msgid "FILE" msgstr "BESTÂN" #: subprojects/extensions-tool/src/command-pack.c:451 msgid "Additional source to include in the bundle" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:454 msgid "SCHEMA" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:455 msgid "A GSettings schema that should be included" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:457 #: subprojects/extensions-tool/src/command-pack.c:468 msgid "DIRECTORY" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:459 msgid "The directory where translations are found" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:461 msgid "DOMAIN" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:463 msgid "The gettext domain to use for translations" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "Overwrite an existing pack" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:470 msgid "The directory where the pack should be created" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:472 msgid "SOURCE_DIRECTORY" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:481 msgid "Create an extension bundle" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:501 msgid "More than one source directory specified" msgstr "" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "Útwreiding “%s” hat gjin foarkarren\n" #: subprojects/extensions-tool/src/command-prefs.c:79 msgid "Opens extension preferences" msgstr "Iepent de útwreidings foarkarren" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "" #: subprojects/extensions-tool/src/main.c:72 msgid "Do not print error messages" msgstr "" #: subprojects/extensions-tool/src/main.c:146 msgid "Failed to connect to GNOME Shell" msgstr "" #: subprojects/extensions-tool/src/main.c:244 msgid "Path" msgstr "" #: subprojects/extensions-tool/src/main.c:247 msgid "URL" msgstr "URL" #: subprojects/extensions-tool/src/main.c:250 msgid "Original author" msgstr "Oarspronklike auteur" #: subprojects/extensions-tool/src/main.c:256 msgid "State" msgstr "Steat" #: subprojects/extensions-tool/src/main.c:290 msgid "“version” takes no arguments" msgstr "" #: subprojects/extensions-tool/src/main.c:292 #: subprojects/extensions-tool/src/main.c:312 msgid "Usage:" msgstr "" #: subprojects/extensions-tool/src/main.c:295 msgid "Print version information and exit." msgstr "" #: subprojects/extensions-tool/src/main.c:310 #: subprojects/extensions-tool/src/main.c:313 msgid "COMMAND" msgstr "" #: subprojects/extensions-tool/src/main.c:313 msgid "[ARGS…]" msgstr "" #: subprojects/extensions-tool/src/main.c:315 msgid "Commands:" msgstr "" #: subprojects/extensions-tool/src/main.c:316 msgid "Print help" msgstr "" #: subprojects/extensions-tool/src/main.c:318 msgid "Enable extension" msgstr "Útwreiding ynskeakelje" #: subprojects/extensions-tool/src/main.c:319 msgid "Disable extension" msgstr "Útwreiding útskeakelje" #: subprojects/extensions-tool/src/main.c:320 msgid "Reset extension" msgstr "" #: subprojects/extensions-tool/src/main.c:321 msgid "Uninstall extension" msgstr "Útwreiding fuortsmite" #: subprojects/extensions-tool/src/main.c:322 msgid "List extensions" msgstr "" #: subprojects/extensions-tool/src/main.c:323 #: subprojects/extensions-tool/src/main.c:324 msgid "Show extension info" msgstr "" #: subprojects/extensions-tool/src/main.c:325 msgid "Open extension preferences" msgstr "Útwreidings foarkarren iepenje" #: subprojects/extensions-tool/src/main.c:326 msgid "Create extension" msgstr "Útwreiding oanmeitsje" #: subprojects/extensions-tool/src/main.c:327 msgid "Package extension" msgstr "" #: subprojects/extensions-tool/src/main.c:328 msgid "Install extension bundle" msgstr "" #: subprojects/extensions-tool/src/main.c:330 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "In lege útwreiding" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1907 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "" msgstr[1] "" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1917 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "" msgstr[1] "" #: subprojects/gvc/gvc-mixer-control.c:2867 msgid "System Sounds" msgstr "Systeem Lûd" 07070100000233000081A40000000000000000000000016712993F0000B0C0000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/ga.po# Irish translations for gnome-shell package. # Copyright (C) 2009-2015 Free Software Foundation, Inc. # This file is distributed under the same license as the gnome-shell package. # Seán de Búrca , 2009-2015. # msgid "" msgstr "" "Project-Id-Version: gnome-shell.master\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-09-30 22:09-0600\n" "PO-Revision-Date: 2015-09-30 22:29-0600\n" "Last-Translator: Seán de Búrca \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<7 ? 2 : n<11 ? 3 : " "4;\n" #: ../data/50-gnome-shell-system.xml.in.h:1 msgid "System" msgstr "Córas" #: ../data/50-gnome-shell-system.xml.in.h:2 msgid "Show the notification list" msgstr "Taispeáin an liosta fógraí" #: ../data/50-gnome-shell-system.xml.in.h:3 msgid "Focus the active notification" msgstr "Cuir an fócas san fhógra gníomhach" #: ../data/50-gnome-shell-system.xml.in.h:4 msgid "Show the overview" msgstr "Taispeáin an foramharc" #: ../data/50-gnome-shell-system.xml.in.h:5 msgid "Show all applications" msgstr "Taispeáin gach feidhmchlár" #: ../data/50-gnome-shell-system.xml.in.h:6 msgid "Open the application menu" msgstr "Oscail roghchlár an fheidhmchláir" #: ../data/gnome-shell.desktop.in.in.h:1 msgid "GNOME Shell" msgstr "GNOME Shell" #: ../data/gnome-shell.desktop.in.in.h:2 #: ../data/gnome-shell-wayland.desktop.in.in.h:2 msgid "Window management and application launching" msgstr "" #: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1 msgid "GNOME Shell Extension Preferences" msgstr "Airíonna Eisínteachtaí GNOME Shell" #: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2 msgid "Configure GNOME Shell Extensions" msgstr "Cumraigh Eisínteachtaí GNOME Shell" #: ../data/gnome-shell-wayland.desktop.in.in.h:1 msgid "GNOME Shell (wayland compositor)" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:1 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:2 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:3 #, fuzzy msgid "UUIDs of extensions to enable" msgstr "Eisínteacht gan suiteáil" #: ../data/org.gnome.shell.gschema.xml.in.in.h:4 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:5 msgid "Disables the validation of extension version compatibility" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:6 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:7 msgid "List of desktop file IDs for favorite applications" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:8 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:9 msgid "App Picker View" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:10 msgid "Index of the currently selected view in the application picker." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:11 msgid "History for command (Alt-F2) dialog" msgstr "" #. Translators: looking glass is a debugger and inspector tool, see https://live.gnome.org/GnomeShell/LookingGlass #: ../data/org.gnome.shell.gschema.xml.in.in.h:13 msgid "History for the looking glass dialog" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:14 msgid "Always show the 'Log out' menu item in the user menu." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:15 msgid "" "This key overrides the automatic hiding of the 'Log out' menu item in single-" "user, single-session situations." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:16 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:17 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "'Remember Password' checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:18 msgid "Show the week date in the calendar" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:19 msgid "If true, display the ISO week date in the calendar." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:20 msgid "Keybinding to open the application menu" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:21 msgid "Keybinding to open the application menu." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:22 msgid "Keybinding to open the \"Show Applications\" view" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:23 msgid "" "Keybinding to open the \"Show Applications\" view of the Activities Overview." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:24 msgid "Keybinding to open the overview" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:25 msgid "Keybinding to open the Activities Overview." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:26 msgid "Keybinding to toggle the visibility of the notification list" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:27 msgid "Keybinding to toggle the visibility of the notification list." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:28 msgid "Keybinding to focus the active notification" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:29 msgid "Keybinding to focus the active notification." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:30 msgid "" "Keybinding that pauses and resumes all running tweens, for debugging purposes" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:31 msgid "Which keyboard to use" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:32 msgid "The type of keyboard to use." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:33 msgid "Limit switcher to current workspace." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:34 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:35 msgid "The application icon mode." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:36 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-" "only' (shows only the application icon) or 'both'." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:37 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:38 msgid "Attach modal dialog to the parent window" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:39 msgid "" "This key overrides the key in org.gnome.mutter when running GNOME Shell." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:40 msgid "Enable edge tiling when dropping windows on screen edges" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:41 msgid "Workspaces are managed dynamically" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:42 msgid "Workspaces only on primary monitor" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:43 msgid "Delay focus changes in mouse mode until the pointer stops moving" msgstr "" #: ../data/org.gnome.Shell.PortalHelper.desktop.in.h:1 msgid "Network Login" msgstr "Logáil Isteach Líonra" #: ../js/extensionPrefs/main.js:122 #, javascript-format msgid "There was an error loading the preferences dialog for %s:" msgstr "Tharla earráid agus luchtú na dialóige sainroghanna do %s:" #: ../js/extensionPrefs/main.js:154 msgid "GNOME Shell Extensions" msgstr "Eisínteachtaí GNOME Shell" #: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:145 #: ../js/ui/components/polkitAgent.js:179 ../js/ui/endSessionDialog.js:452 #: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399 #: ../js/ui/status/network.js:916 msgid "Cancel" msgstr "Cealaigh" #: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:215 #: ../js/gdm/authPrompt.js:447 msgid "Next" msgstr "Ar Aghaidh" #: ../js/gdm/authPrompt.js:211 ../js/ui/shellMountOperation.js:403 #: ../js/ui/unlockDialog.js:59 msgid "Unlock" msgstr "Díghlasáil" #: ../js/gdm/authPrompt.js:213 msgctxt "button" msgid "Sign In" msgstr "Logáil Isteach" #: ../js/gdm/loginDialog.js:281 msgid "Choose Session" msgstr "Roghnaigh Seisiún" #. translators: this message is shown below the user list on the #. login screen. It can be activated to reveal an entry for #. manually entering the username. #: ../js/gdm/loginDialog.js:431 msgid "Not listed?" msgstr "Gan liostáil?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: ../js/gdm/loginDialog.js:850 #, javascript-format msgid "(e.g., user or %s)" msgstr "(m.s., úsáideoir nó %s)" #. TTLS and PEAP are actually much more complicated, but this complication #. is not visible here since we only care about phase2 authentication #. (and don't even care of which one) #: ../js/gdm/loginDialog.js:855 ../js/ui/components/networkAgent.js:271 #: ../js/ui/components/networkAgent.js:289 msgid "Username: " msgstr "Ainm úsáideora: " #: ../js/gdm/loginDialog.js:1184 msgid "Login Window" msgstr "Fuinneog Logála Isteach" #: ../js/gdm/util.js:341 msgid "Authentication error" msgstr "Earráid fhíordheimhnithe" #. We don't show fingerprint messages directly since it's #. not the main auth service. Instead we use the messages #. as a cue to display our own message. #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger instead #: ../js/gdm/util.js:473 msgid "(or swipe finger)" msgstr "(nó faidhpeáil méar)" #: ../js/misc/util.js:119 msgid "Command not found" msgstr "Ordú gan aimsiú" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: ../js/misc/util.js:152 msgid "Could not parse command:" msgstr "Níorbh fhéidir ordú a pharsáil:" #: ../js/misc/util.js:160 #, javascript-format msgid "Execution of “%s” failed:" msgstr "Theip ar rith “%s”:" #. Translators: Time in 24h format #: ../js/misc/util.js:191 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: ../js/misc/util.js:197 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "Inné, %H∶%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: ../js/misc/util.js:203 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: ../js/misc/util.js:209 #, no-c-format msgid "%B %d, %H∶%M" msgstr "%d %B, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: ../js/misc/util.js:215 #, no-c-format msgid "%B %d %Y, %H∶%M" msgstr "%d %B %Y, %H∶%M" #. Translators: Time in 12h format #: ../js/misc/util.js:220 msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: ../js/misc/util.js:226 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "Inné, %l∶%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: ../js/misc/util.js:232 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: ../js/misc/util.js:238 #, no-c-format msgid "%B %d, %l∶%M %p" msgstr "%d %B, %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: ../js/misc/util.js:244 #, no-c-format msgid "%B %d %Y, %l∶%M %p" msgstr "%d %B %Y, %l∶%M %p" #. TRANSLATORS: this is the title of the wifi captive portal login #. * window, until we know the title of the actual login page #: ../js/portalHelper/main.js:85 msgid "Web Authentication Redirect" msgstr "" #: ../js/ui/appDisplay.js:794 msgid "Frequently used applications will appear here" msgstr "" #: ../js/ui/appDisplay.js:914 msgid "Frequent" msgstr "Feidhmchláir Is Minice" #: ../js/ui/appDisplay.js:921 msgid "All" msgstr "Gach Feidhmchlár" #: ../js/ui/appDisplay.js:1853 msgid "New Window" msgstr "Fuinneog Nua" #: ../js/ui/appDisplay.js:1881 ../js/ui/dash.js:289 msgid "Remove from Favorites" msgstr "Bain ó na Ceanáin" #: ../js/ui/appDisplay.js:1887 msgid "Add to Favorites" msgstr "Cuir Leis na Ceanáin" #: ../js/ui/appDisplay.js:1897 msgid "Show Details" msgstr "Taispeáin Mionsonraí" #: ../js/ui/appFavorites.js:132 #, javascript-format msgid "%s has been added to your favorites." msgstr "Cuireadh %s leis na ceanáin." #: ../js/ui/appFavorites.js:166 #, javascript-format msgid "%s has been removed from your favorites." msgstr "Baineadh %s ó na ceanáin." #: ../js/ui/backgroundMenu.js:19 msgid "Change Background…" msgstr "Athraigh Cúlra…" #: ../js/ui/backgroundMenu.js:21 msgid "Display Settings" msgstr "Socruithe Taispeána" #: ../js/ui/backgroundMenu.js:22 ../js/ui/status/system.js:366 msgid "Settings" msgstr "Socruithe" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: ../js/ui/calendar.js:55 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: ../js/ui/calendar.js:84 msgctxt "grid sunday" msgid "S" msgstr "D" #. Translators: Calendar grid abbreviation for Monday #: ../js/ui/calendar.js:86 msgctxt "grid monday" msgid "M" msgstr "L" #. Translators: Calendar grid abbreviation for Tuesday #: ../js/ui/calendar.js:88 msgctxt "grid tuesday" msgid "T" msgstr "M" #. Translators: Calendar grid abbreviation for Wednesday #: ../js/ui/calendar.js:90 msgctxt "grid wednesday" msgid "W" msgstr "C" #. Translators: Calendar grid abbreviation for Thursday #: ../js/ui/calendar.js:92 msgctxt "grid thursday" msgid "T" msgstr "D" #. Translators: Calendar grid abbreviation for Friday #: ../js/ui/calendar.js:94 msgctxt "grid friday" msgid "F" msgstr "A" #. Translators: Calendar grid abbreviation for Saturday #: ../js/ui/calendar.js:96 msgctxt "grid saturday" msgid "S" msgstr "S" #: ../js/ui/calendar.js:566 msgid "Previous month" msgstr "An mhí roimhe seo" #: ../js/ui/calendar.js:576 msgid "Next month" msgstr "An chéad mhí eile" #: ../js/ui/calendar.js:783 msgid "Week %V" msgstr "Seachtain %V" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: ../js/ui/calendar.js:1188 msgctxt "event list time" msgid "All Day" msgstr "An Lá ar Fad" #: ../js/ui/calendar.js:1295 msgid "Clear section" msgstr "" #: ../js/ui/calendar.js:1522 msgid "Events" msgstr "Imeachtaí" #: ../js/ui/calendar.js:1531 msgctxt "calendar heading" msgid "%A, %B %d" msgstr "%A, %d %B" #: ../js/ui/calendar.js:1535 msgctxt "calendar heading" msgid "%A, %B %d, %Y" msgstr "%A, %d %B, %Y" #: ../js/ui/calendar.js:1620 msgid "Notifications" msgstr "Fógraí" #: ../js/ui/calendar.js:1771 msgid "No Notifications" msgstr "Gan Fhógra" #: ../js/ui/calendar.js:1774 msgid "No Events" msgstr "Gan Imeacht" #: ../js/ui/components/automountManager.js:91 msgid "External drive connected" msgstr "Ceanglaíodh tiomántán seachtrach" #: ../js/ui/components/automountManager.js:102 msgid "External drive disconnected" msgstr "Dícheanglaíodh tiomántán seachtrach" #: ../js/ui/components/autorunManager.js:354 #, javascript-format msgid "Open with %s" msgstr "Oscail le %s" #: ../js/ui/components/keyring.js:120 ../js/ui/components/polkitAgent.js:315 msgid "Password:" msgstr "Focal faire:" #: ../js/ui/components/keyring.js:153 msgid "Type again:" msgstr "Clóscríobh arís:" #: ../js/ui/components/networkAgent.js:140 ../js/ui/status/network.js:269 #: ../js/ui/status/network.js:352 ../js/ui/status/network.js:919 msgid "Connect" msgstr "Ceangal" #. Cisco LEAP #: ../js/ui/components/networkAgent.js:233 #: ../js/ui/components/networkAgent.js:245 #: ../js/ui/components/networkAgent.js:273 #: ../js/ui/components/networkAgent.js:293 #: ../js/ui/components/networkAgent.js:303 msgid "Password: " msgstr "Focal faire: " #. static WEP #: ../js/ui/components/networkAgent.js:238 msgid "Key: " msgstr "Eochair:" #: ../js/ui/components/networkAgent.js:277 msgid "Identity: " msgstr "Aitheantas:" #: ../js/ui/components/networkAgent.js:279 msgid "Private key password: " msgstr "" #: ../js/ui/components/networkAgent.js:291 msgid "Service: " msgstr "Seirbhís:" #: ../js/ui/components/networkAgent.js:320 #: ../js/ui/components/networkAgent.js:658 msgid "Authentication required by wireless network" msgstr "" #: ../js/ui/components/networkAgent.js:321 #: ../js/ui/components/networkAgent.js:659 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network " "“%s”." msgstr "" #: ../js/ui/components/networkAgent.js:325 #: ../js/ui/components/networkAgent.js:662 msgid "Wired 802.1X authentication" msgstr "" #: ../js/ui/components/networkAgent.js:327 msgid "Network name: " msgstr "Ainm líonra: " #: ../js/ui/components/networkAgent.js:332 #: ../js/ui/components/networkAgent.js:666 msgid "DSL authentication" msgstr "Fíordheimhniú DSL" #: ../js/ui/components/networkAgent.js:339 #: ../js/ui/components/networkAgent.js:672 msgid "PIN code required" msgstr "UAP de dhíth" #: ../js/ui/components/networkAgent.js:340 #: ../js/ui/components/networkAgent.js:673 msgid "PIN code is needed for the mobile broadband device" msgstr "" #: ../js/ui/components/networkAgent.js:341 msgid "PIN: " msgstr "UAP: " #: ../js/ui/components/networkAgent.js:348 #: ../js/ui/components/networkAgent.js:679 msgid "Mobile broadband network password" msgstr "" #: ../js/ui/components/networkAgent.js:349 #: ../js/ui/components/networkAgent.js:663 #: ../js/ui/components/networkAgent.js:667 #: ../js/ui/components/networkAgent.js:680 #, javascript-format msgid "A password is required to connect to “%s”." msgstr "Tá focal faire de dhíth chun ceangal le “%s”." #: ../js/ui/components/networkAgent.js:647 ../js/ui/status/network.js:1658 msgid "Network Manager" msgstr "Bainisteoir Líonra" #: ../js/ui/components/polkitAgent.js:60 msgid "Authentication Required" msgstr "Fíordheimhniú de Dhíth" #: ../js/ui/components/polkitAgent.js:102 msgid "Administrator" msgstr "Riarthóir" #: ../js/ui/components/polkitAgent.js:182 msgid "Authenticate" msgstr "Fíordheimhnigh" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: ../js/ui/components/polkitAgent.js:301 ../js/ui/shellMountOperation.js:383 msgid "Sorry, that didn't work. Please try again." msgstr "Tá brón orm, theip sé sin. Bain triail eile as, le do thoil." #. Translators: this is the other person changing their old IM name to their new #. IM name. #: ../js/ui/components/telepathyClient.js:759 #, fuzzy, javascript-format msgid "%s is now known as %s" msgstr "Tugtar %2$s ar %1$s anois" #: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:155 msgid "Windows" msgstr "Fuinneoga" #: ../js/ui/dash.js:250 ../js/ui/dash.js:291 msgid "Show Applications" msgstr "Taispeáin Feidhmchláir" #. Translators: this is the name of the dock/favorites area on #. the left of the overview #: ../js/ui/dash.js:449 msgid "Dash" msgstr "Deais" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM"). #. #: ../js/ui/dateMenu.js:73 msgid "%B %e %Y" msgstr "%e %B %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: ../js/ui/dateMenu.js:80 msgid "%A %B %e %Y" msgstr "%A %e %B %Y" #: ../js/ui/dateMenu.js:160 msgid "Add world clocks…" msgstr "Cuir cloig an domhain leis…" #: ../js/ui/dateMenu.js:161 msgid "World Clocks" msgstr "Cloig an Domhain" #: ../js/ui/endSessionDialog.js:64 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "Logáil %s Amach" #: ../js/ui/endSessionDialog.js:65 msgctxt "title" msgid "Log Out" msgstr "Logáil Amach" #: ../js/ui/endSessionDialog.js:67 #, javascript-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "Logálfar %s amach go huathoibríoch i gceann %d soicind." msgstr[1] "Logálfar %s amach go huathoibríoch i gceann %d shoicind." msgstr[2] "Logálfar %s amach go huathoibríoch i gceann %d shoicind." msgstr[3] "Logálfar %s amach go huathoibríoch i gceann %d soicind." msgstr[4] "Logálfar %s amach go huathoibríoch i gceann %d soicind." #: ../js/ui/endSessionDialog.js:72 #, javascript-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "Logálfar thú amach go huathoibríoch i gceann %d soicind." msgstr[1] "Logálfar thú amach go huathoibríoch i gceann %d shoicind." msgstr[2] "Logálfar thú amach go huathoibríoch i gceann %d shoicind." msgstr[3] "Logálfar thú amach go huathoibríoch i gceann %d soicind." msgstr[4] "Logálfar thú amach go huathoibríoch i gceann %d soicind." #: ../js/ui/endSessionDialog.js:78 msgctxt "button" msgid "Log Out" msgstr "Logáil Amach" #: ../js/ui/endSessionDialog.js:84 msgctxt "title" msgid "Power Off" msgstr "Múch" #: ../js/ui/endSessionDialog.js:85 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Suiteáil Nuashonruithe & Múch" #: ../js/ui/endSessionDialog.js:87 #, javascript-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "Múchfar an córas go huathoibríoch i gceann %d soicind." msgstr[1] "Múchfar an córas go huathoibríoch i gceann %d shoicind." msgstr[2] "Múchfar an córas go huathoibríoch i gceann %d shoicind." msgstr[3] "Múchfar an córas go huathoibríoch i gceann %d soicind." msgstr[4] "Múchfar an córas go huathoibríoch i gceann %d soicind." #: ../js/ui/endSessionDialog.js:91 msgctxt "checkbox" msgid "Install pending software updates" msgstr "Suiteáil nuashonruithe bogearraí ar feitheamh" #: ../js/ui/endSessionDialog.js:94 ../js/ui/endSessionDialog.js:111 msgctxt "button" msgid "Restart" msgstr "Atosaigh" #: ../js/ui/endSessionDialog.js:96 msgctxt "button" msgid "Power Off" msgstr "Múch" #: ../js/ui/endSessionDialog.js:103 msgctxt "title" msgid "Restart" msgstr "Atosaigh" #: ../js/ui/endSessionDialog.js:105 #, javascript-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "Atosófar an córas go huathoibríoch i gceann %d soicind." msgstr[1] "Atosófar an córas go huathoibríoch i gceann %d shoicind." msgstr[2] "Atosófar an córas go huathoibríoch i gceann %d shoicind." msgstr[3] "Atosófar an córas go huathoibríoch i gceann %d soicind." msgstr[4] "Atosófar an córas go huathoibríoch i gceann %d soicind." #: ../js/ui/endSessionDialog.js:119 msgctxt "title" msgid "Restart & Install Updates" msgstr "Atosaigh & Suiteáil Nuashonruithe" #: ../js/ui/endSessionDialog.js:121 #, javascript-format msgid "The system will automatically restart and install updates in %d second." msgid_plural "" "The system will automatically restart and install updates in %d seconds." msgstr[0] "" "Atosófar an córas agus suiteálfar nuashonruithe go huathoibríoch i gceann %d " "soicind." msgstr[1] "" "Atosófar an córas agus suiteálfar nuashonruithe go huathoibríoch i gceann %d " "shoicind." msgstr[2] "" "Atosófar an córas agus suiteálfar nuashonruithe go huathoibríoch i gceann %d " "shoicind." msgstr[3] "" "Atosófar an córas agus suiteálfar nuashonruithe go huathoibríoch i gceann %d " "soicind." msgstr[4] "" "Atosófar an córas agus suiteálfar nuashonruithe go huathoibríoch i gceann %d " "soicind." #: ../js/ui/endSessionDialog.js:127 msgctxt "button" msgid "Restart & Install" msgstr "Atosaigh & Suiteáil" #: ../js/ui/endSessionDialog.js:128 msgctxt "button" msgid "Install & Power Off" msgstr "Suiteáil & Múch" #: ../js/ui/endSessionDialog.js:129 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Múch tar éis suiteáil nuashonruithe" #: ../js/ui/endSessionDialog.js:338 msgid "Running on battery power: please plug in before installing updates." msgstr "" #: ../js/ui/endSessionDialog.js:355 msgid "Some applications are busy or have unsaved work." msgstr "Tá cúpla feidhmchlár gnóthach nó tá obair gan sábháil acu." #: ../js/ui/endSessionDialog.js:362 msgid "Other users are logged in." msgstr "Tá úsáideoirí eile logáilte isteach." #. Translators: Remote here refers to a remote session, like a ssh login #: ../js/ui/endSessionDialog.js:640 #, javascript-format msgid "%s (remote)" msgstr "%s (cianda)" #. Translators: Console here refers to a tty like a VT console #: ../js/ui/endSessionDialog.js:643 #, javascript-format msgid "%s (console)" msgstr "%s (consól)" #: ../js/ui/extensionDownloader.js:199 msgid "Install" msgstr "Suiteáil" #: ../js/ui/extensionDownloader.js:204 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "Íosluchtaigh agus suiteáil “%s” ó extensions.gnome.org?" #: ../js/ui/keyboard.js:741 ../js/ui/status/keyboard.js:713 msgid "Keyboard" msgstr "Méarchlár" #. translators: 'Hide' is a verb #: ../js/ui/legacyTray.js:66 msgid "Hide tray" msgstr "Folaigh tráidire" #: ../js/ui/legacyTray.js:107 msgid "Status Icons" msgstr "Deilbhíní Stádais" #: ../js/ui/lookingGlass.js:643 msgid "No extensions installed" msgstr "Eisínteacht gan suiteáil" #. Translators: argument is an extension UUID. #: ../js/ui/lookingGlass.js:697 #, javascript-format msgid "%s has not emitted any errors." msgstr "" #: ../js/ui/lookingGlass.js:703 msgid "Hide Errors" msgstr "Folaigh Earráidí" #: ../js/ui/lookingGlass.js:707 ../js/ui/lookingGlass.js:767 msgid "Show Errors" msgstr "Taispeáin Earráidí" #: ../js/ui/lookingGlass.js:716 msgid "Enabled" msgstr "Cumasaithe" #. translators: #. * The device has been disabled #: ../js/ui/lookingGlass.js:719 ../src/gvc/gvc-mixer-control.c:1828 msgid "Disabled" msgstr "Díchumasaithe" #: ../js/ui/lookingGlass.js:721 msgid "Error" msgstr "Earráid" #: ../js/ui/lookingGlass.js:723 msgid "Out of date" msgstr "As dáta" #: ../js/ui/lookingGlass.js:725 msgid "Downloading" msgstr "Á íosluchtú" #: ../js/ui/lookingGlass.js:749 msgid "View Source" msgstr "Féach Foinse" #: ../js/ui/lookingGlass.js:758 msgid "Web Page" msgstr "Suíomh Gréasáin" #: ../js/ui/messageTray.js:1486 msgid "System Information" msgstr "Eolas an Chórais" #: ../js/ui/overview.js:84 msgid "Undo" msgstr "Cealaigh" #: ../js/ui/overview.js:117 msgid "Overview" msgstr "Foramharc" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: ../js/ui/overview.js:244 msgid "Type to search…" msgstr "Clóscríobh chun chuardach…" #: ../js/ui/panel.js:352 msgid "Quit" msgstr "Scoir" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: ../js/ui/panel.js:404 msgid "Activities" msgstr "Gníomhartha" #: ../js/ui/panel.js:650 msgctxt "System menu in the top bar" msgid "System" msgstr "Córas" #: ../js/ui/panel.js:754 msgid "Top Bar" msgstr "Barra ag an mBarr" #. Translators: this MUST be either "toggle-switch-us" #. (for toggle switches containing the English words #. "ON" and "OFF") or "toggle-switch-intl" (for toggle #. switches containing "◯" and "|"). Other values will #. simply result in invisible toggle switches. #: ../js/ui/popupMenu.js:289 msgid "toggle-switch-us" msgstr "toggle-switch-intl" #: ../js/ui/runDialog.js:70 msgid "Enter a Command" msgstr "Iontráil Ordú" #: ../js/ui/runDialog.js:110 ../js/ui/windowMenu.js:162 msgid "Close" msgstr "Dún" #: ../js/ui/runDialog.js:281 msgid "Restarting…" msgstr "Á atosú…" #. Translators: This is a time format for a date in #. long format #: ../js/ui/screenShield.js:85 msgid "%A, %B %d" msgstr "%A, %d %B" #: ../js/ui/screenShield.js:144 #, javascript-format msgid "%d new message" msgid_plural "%d new messages" msgstr[0] "%d teachtaireacht nua" msgstr[1] "%d theachtaireacht nua" msgstr[2] "%d theachtaireacht nua" msgstr[3] "%d dteachtaireacht nua" msgstr[4] "%d teachtaireacht nua" #: ../js/ui/screenShield.js:146 #, javascript-format msgid "%d new notification" msgid_plural "%d new notifications" msgstr[0] "%d fhógra nua" msgstr[1] "%d fhógra nua" msgstr[2] "%d fhógra nua" msgstr[3] "%d bhfógra nua" msgstr[4] "%d fógra nua" #: ../js/ui/screenShield.js:432 ../js/ui/status/system.js:374 msgid "Lock" msgstr "Cuir Faoi Ghlas" #: ../js/ui/screenShield.js:684 msgid "GNOME needs to lock the screen" msgstr "Teastaíonn ó GNOME an scáileán a chur faoi ghlas" #. We could not become modal, so we can't activate the #. screenshield. The user is probably very upset at this #. point, but any application using global grabs is broken #. Just tell him to stop using this app #. #. XXX: another option is to kick the user into the gdm login #. screen, where we're not affected by grabs #: ../js/ui/screenShield.js:805 ../js/ui/screenShield.js:1271 msgid "Unable to lock" msgstr "Ní féidir cur faoi ghlas" #: ../js/ui/screenShield.js:806 ../js/ui/screenShield.js:1272 msgid "Lock was blocked by an application" msgstr "Cuireadh cosc ar chur faoi ghlas ag feidmhchlár" #: ../js/ui/search.js:617 msgid "Searching…" msgstr "Á chuardach…" #: ../js/ui/search.js:619 msgid "No results." msgstr "Gan torthaí." #: ../js/ui/shellEntry.js:25 msgid "Copy" msgstr "Cóipeáil" #: ../js/ui/shellEntry.js:30 msgid "Paste" msgstr "Greamaigh" #: ../js/ui/shellEntry.js:97 msgid "Show Text" msgstr "Taispeáin Téacs" #: ../js/ui/shellEntry.js:99 msgid "Hide Text" msgstr "Folaigh Téacs" #: ../js/ui/shellMountOperation.js:370 msgid "Password" msgstr "Focal Faire" #: ../js/ui/shellMountOperation.js:391 msgid "Remember Password" msgstr "Meabhraigh Focal Faire" #: ../js/ui/status/accessibility.js:42 msgid "Accessibility" msgstr "Inrochtaineacht" #: ../js/ui/status/accessibility.js:57 msgid "Zoom" msgstr "Súmáil" #: ../js/ui/status/accessibility.js:64 msgid "Screen Reader" msgstr "Léitheoir Scáileáin" #: ../js/ui/status/accessibility.js:68 msgid "Screen Keyboard" msgstr "Méarchlár Scáileáin" #: ../js/ui/status/accessibility.js:72 msgid "Visual Alerts" msgstr "Foláirimh Amhairc" #: ../js/ui/status/accessibility.js:75 msgid "Sticky Keys" msgstr "Eochracha Greamaitheacha" #: ../js/ui/status/accessibility.js:78 msgid "Slow Keys" msgstr "Eochracha Malla" #: ../js/ui/status/accessibility.js:81 msgid "Bounce Keys" msgstr "Eochracha Preabtha" #: ../js/ui/status/accessibility.js:84 msgid "Mouse Keys" msgstr "Eochracha Luiche" #: ../js/ui/status/accessibility.js:167 msgid "High Contrast" msgstr "Ardchodarsnacht" #: ../js/ui/status/accessibility.js:202 msgid "Large Text" msgstr "Téacs Mór" #: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:178 #: ../js/ui/status/network.js:353 ../js/ui/status/network.js:1279 #: ../js/ui/status/network.js:1394 ../js/ui/status/rfkill.js:90 #: ../js/ui/status/rfkill.js:117 msgid "Turn Off" msgstr "Díchumasaigh" #: ../js/ui/status/bluetooth.js:54 msgid "Bluetooth Settings" msgstr "Socruithe Bluetooth" #. Translators: this is the number of connected bluetooth devices #: ../js/ui/status/bluetooth.js:105 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d Ceangailte" msgstr[1] "%d Ceangailte" msgstr[2] "%d Ceangailte" msgstr[3] "%d Ceangailte" msgstr[4] "%d Ceangailte" #: ../js/ui/status/bluetooth.js:107 msgid "Not In Use" msgstr "Níl in Úsáid" #: ../js/ui/status/brightness.js:44 msgid "Brightness" msgstr "Gile" #: ../js/ui/status/keyboard.js:736 msgid "Show Keyboard Layout" msgstr "Taispeáin Leagan Amach an Mhéarchláir" #: ../js/ui/status/location.js:71 ../js/ui/status/location.js:177 msgid "Location Enabled" msgstr "Suíomh Cumasaithe" #: ../js/ui/status/location.js:72 ../js/ui/status/location.js:178 msgid "Disable" msgstr "Díchumasaigh" #: ../js/ui/status/location.js:73 msgid "Privacy Settings" msgstr "Socruithe Príobháideachais" #: ../js/ui/status/location.js:176 msgid "Location In Use" msgstr "Suíomh in Úsáid" #: ../js/ui/status/location.js:180 msgid "Location Disabled" msgstr "Suíomh Díchumasaithe" #: ../js/ui/status/location.js:181 msgid "Enable" msgstr "Cumasaigh" #: ../js/ui/status/network.js:101 msgid "" msgstr "" #. Translators: %s is a network identifier #: ../js/ui/status/network.js:451 ../js/ui/status/network.js:1308 #, javascript-format msgid "%s Off" msgstr "%s Múchta" #. Translators: %s is a network identifier #: ../js/ui/status/network.js:454 #, javascript-format msgid "%s Connected" msgstr "%s Ceangailte" #. Translators: this is for network devices that are physically present but are not #. under NetworkManager's control (and thus cannot be used in the menu); #. %s is a network identifier #: ../js/ui/status/network.js:459 #, javascript-format msgid "%s Unmanaged" msgstr "%s Gan Bhainistiú" #. Translators: %s is a network identifier #: ../js/ui/status/network.js:462 #, javascript-format msgid "%s Disconnecting" msgstr "%s ag Dícheangal" #. Translators: %s is a network identifier #: ../js/ui/status/network.js:469 ../js/ui/status/network.js:1300 #, javascript-format msgid "%s Connecting" msgstr "%s ag Ceangal" #. Translators: this is for network connections that require some kind of key or password; %s is a network identifier #: ../js/ui/status/network.js:472 #, javascript-format msgid "%s Requires Authentication" msgstr "Fíordheimhniú de Dhíth ar %s" #. Translators: this is for devices that require some kind of firmware or kernel #. module, which is missing; %s is a network identifier #: ../js/ui/status/network.js:480 #, javascript-format msgid "Firmware Missing For %s" msgstr "Dochtearraí do %s ar Iarraidh" #. Translators: this is for a network device that cannot be activated (for example it #. is disabled by rfkill, or it has no coverage; %s is a network identifier #: ../js/ui/status/network.js:484 #, javascript-format msgid "%s Unavailable" msgstr "Níl %s ar Fáil" #. Translators: %s is a network identifier #: ../js/ui/status/network.js:487 #, javascript-format msgid "%s Connection Failed" msgstr "Theip Ceangal %s" #: ../js/ui/status/network.js:503 msgid "Wired Settings" msgstr "Socruithe Sreangaithe" #: ../js/ui/status/network.js:545 ../js/ui/status/network.js:624 #, fuzzy msgid "Mobile Broadband Settings" msgstr "Socruithe Cumhachta" #. Translators: %s is a network identifier #: ../js/ui/status/network.js:588 ../js/ui/status/network.js:1305 #, javascript-format msgid "%s Hardware Disabled" msgstr "" #. Translators: this is for a network device that cannot be activated #. because it's disabled by rfkill (airplane mode); %s is a network identifier #: ../js/ui/status/network.js:592 #, javascript-format msgid "%s Disabled" msgstr "%s Díchumasaithe" #: ../js/ui/status/network.js:632 msgid "Use as Internet connection" msgstr "" #: ../js/ui/status/network.js:813 #, fuzzy msgid "Airplane Mode is On" msgstr "Mód Eitleáin" #: ../js/ui/status/network.js:814 msgid "Wi-Fi is disabled when airplane mode is on." msgstr "" #: ../js/ui/status/network.js:815 #, fuzzy msgid "Turn Off Airplane Mode" msgstr "Mód Eitleáin" #: ../js/ui/status/network.js:824 msgid "Wi-Fi is Off" msgstr "Tá Wi-Fi Múchta" #: ../js/ui/status/network.js:825 msgid "Wi-Fi needs to be turned on in order to connect to a network." msgstr "" #: ../js/ui/status/network.js:826 msgid "Turn On Wi-Fi" msgstr "Cuir Wi-Fi ar Siúl" #: ../js/ui/status/network.js:851 msgid "Wi-Fi Networks" msgstr "Líonraí Wi-Fi" #: ../js/ui/status/network.js:853 msgid "Select a network" msgstr "Roghnaigh líonra" #: ../js/ui/status/network.js:883 msgid "No Networks" msgstr "Gan Líonra" #: ../js/ui/status/network.js:904 ../js/ui/status/rfkill.js:115 msgid "Use hardware switch to turn off" msgstr "" #: ../js/ui/status/network.js:1171 msgid "Select Network" msgstr "Roghnaigh Líonra" #: ../js/ui/status/network.js:1177 msgid "Wi-Fi Settings" msgstr "Socruithe Wi-Fi" #: ../js/ui/status/network.js:1279 msgid "Turn On" msgstr "Cumasaigh" #. Translators: %s is a network identifier #: ../js/ui/status/network.js:1296 #, javascript-format msgid "%s Hotspot Active" msgstr "" #. Translators: %s is a network identifier #: ../js/ui/status/network.js:1311 #, javascript-format msgid "%s Not Connected" msgstr "%s Gan Cheangal" #: ../js/ui/status/network.js:1411 msgid "connecting..." msgstr "á cheangal..." #. Translators: this is for network connections that require some kind of key or password #: ../js/ui/status/network.js:1414 msgid "authentication required" msgstr "fíordheimhniú de dhíth" #: ../js/ui/status/network.js:1416 msgid "connection failed" msgstr "theip an ceangal" #: ../js/ui/status/network.js:1482 ../js/ui/status/rfkill.js:93 msgid "Network Settings" msgstr "Socruithe Líonra" #: ../js/ui/status/network.js:1484 msgid "VPN Settings" msgstr "Socruithe VPN" #: ../js/ui/status/network.js:1503 msgid "VPN" msgstr "VPN" #: ../js/ui/status/network.js:1513 msgid "VPN Off" msgstr "VPN Múchta" #: ../js/ui/status/network.js:1697 msgid "Connection failed" msgstr "Theip an ceangal" #: ../js/ui/status/network.js:1698 msgid "Activation of network connection failed" msgstr "" #: ../js/ui/status/power.js:49 msgid "Power Settings" msgstr "Socruithe Cumhachta" #: ../js/ui/status/power.js:65 msgid "Fully Charged" msgstr "Luchtaithe go hIomlán" #. 0 is reported when UPower does not have enough data #. to estimate battery life #: ../js/ui/status/power.js:72 ../js/ui/status/power.js:78 msgid "Estimating…" msgstr "Á mheasúnú…" #. Translators: this is : Remaining () #: ../js/ui/status/power.js:86 #, javascript-format msgid "%d∶%02d Remaining (%d%%)" msgstr "%d∶%02d Fágtha (%d%%)" #. Translators: this is : Until Full () #: ../js/ui/status/power.js:91 #, javascript-format msgid "%d∶%02d Until Full (%d%%)" msgstr "%d∶%02d go dTí Lán (%d%%)" #. The menu only appears when airplane mode is on, so just #. statically build it as if it was on, rather than dynamically #. changing the menu contents. #: ../js/ui/status/rfkill.js:88 msgid "Airplane Mode On" msgstr "Mód Eitleáin ar Siúl" #: ../js/ui/status/system.js:343 msgid "Switch User" msgstr "Athraigh Úsáideoir" #: ../js/ui/status/system.js:348 msgid "Log Out" msgstr "Logáil Amach" #: ../js/ui/status/system.js:353 msgid "Account Settings" msgstr "Socruithe Cuntais" #: ../js/ui/status/system.js:370 msgid "Orientation Lock" msgstr "Glas Treoshuímh" #: ../js/ui/status/system.js:378 msgid "Suspend" msgstr "Cuir ar Fionraí" #: ../js/ui/status/system.js:381 msgid "Power Off" msgstr "Múch" #: ../js/ui/status/volume.js:127 msgid "Volume changed" msgstr "Athraíodh an airde" #: ../js/ui/status/volume.js:162 msgid "Volume" msgstr "Airde" #: ../js/ui/status/volume.js:213 msgid "Microphone" msgstr "Micreafón" #: ../js/ui/unlockDialog.js:67 msgid "Log in as another user" msgstr "Logáil isteach mar úsáideoir eile" #: ../js/ui/unlockDialog.js:84 msgid "Unlock Window" msgstr "Fuinneog Dhíghlasála" #: ../js/ui/viewSelector.js:159 msgid "Applications" msgstr "Feidhmchláir" #: ../js/ui/viewSelector.js:163 msgid "Search" msgstr "Cuardaigh" #: ../js/ui/windowAttentionHandler.js:20 #, javascript-format msgid "“%s” is ready" msgstr "Tá “%s” réidh" #: ../js/ui/windowManager.js:63 msgid "Do you want to keep these display settings?" msgstr "Ar mhaith leat socruithe na taispeána seo a choimeád?" #. Translators: this and the following message should be limited in lenght, #. to avoid ellipsizing the labels. #. #: ../js/ui/windowManager.js:82 msgid "Revert Settings" msgstr "Fill Socruithe" #: ../js/ui/windowManager.js:85 msgid "Keep Changes" msgstr "Coimeád Athruithe" #: ../js/ui/windowManager.js:103 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "Fillfear athruithe socruithe i gceann %d soicind" msgstr[1] "Fillfear athruithe socruithe i gceann %d shoicind" msgstr[2] "Fillfear athruithe socruithe i gceann %d shoicind" msgstr[3] "Fillfear athruithe socruithe i gceann %d soicind" msgstr[4] "Fillfear athruithe socruithe i gceann %d soicind" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: ../js/ui/windowManager.js:658 #, javascript-format msgid "%d x %d" msgstr "%d x %d" #: ../js/ui/windowMenu.js:34 msgid "Minimize" msgstr "Íoslaghdaigh" #: ../js/ui/windowMenu.js:41 msgid "Unmaximize" msgstr "" #: ../js/ui/windowMenu.js:45 msgid "Maximize" msgstr "Uasmhéadaigh" #: ../js/ui/windowMenu.js:52 msgid "Move" msgstr "Bog" #: ../js/ui/windowMenu.js:58 msgid "Resize" msgstr "" #: ../js/ui/windowMenu.js:65 msgid "Move Titlebar Onscreen" msgstr "" #: ../js/ui/windowMenu.js:70 msgid "Always on Top" msgstr "Ar Barr i gCónaí" #: ../js/ui/windowMenu.js:89 msgid "Always on Visible Workspace" msgstr "" #: ../js/ui/windowMenu.js:105 msgid "Move to Workspace Left" msgstr "" #: ../js/ui/windowMenu.js:110 msgid "Move to Workspace Right" msgstr "" #: ../js/ui/windowMenu.js:115 msgid "Move to Workspace Up" msgstr "" #: ../js/ui/windowMenu.js:120 msgid "Move to Workspace Down" msgstr "" #: ../js/ui/windowMenu.js:136 msgid "Move to Monitor Up" msgstr "" #: ../js/ui/windowMenu.js:142 msgid "Move to Monitor Down" msgstr "" #: ../js/ui/windowMenu.js:148 msgid "Move to Monitor Left" msgstr "" #: ../js/ui/windowMenu.js:154 msgid "Move to Monitor Right" msgstr "" #: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1 msgid "Evolution Calendar" msgstr "Féilire Evolution" #. translators: #. * The number of sound outputs on a particular device #: ../src/gvc/gvc-mixer-control.c:1835 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u Aschur" msgstr[1] "%u Aschur" msgstr[2] "%u Aschur" msgstr[3] "%u nAschur" msgstr[4] "%u Aschur" #. translators: #. * The number of sound inputs on a particular device #: ../src/gvc/gvc-mixer-control.c:1845 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u Ionchur" msgstr[1] "%u Ionchur" msgstr[2] "%u Ionchur" msgstr[3] "%u nIonchur" msgstr[4] "%u Ionchur" #: ../src/gvc/gvc-mixer-control.c:2371 msgid "System Sounds" msgstr "Fuaimeanna Córais" #: ../src/main.c:381 msgid "Print version" msgstr "Taispeáin leagan" #: ../src/main.c:387 msgid "Mode used by GDM for login screen" msgstr "" #: ../src/main.c:393 msgid "Use a specific mode, e.g. \"gdm\" for login screen" msgstr "" #: ../src/main.c:399 msgid "List possible modes" msgstr "" #: ../src/shell-app.c:239 msgctxt "program" msgid "Unknown" msgstr "Anaithnid" #: ../src/shell-app.c:480 #, c-format msgid "Failed to launch “%s”" msgstr "Theip ar luchtú “%s”" #: ../src/shell-keyring-prompt.c:742 msgid "Passwords do not match." msgstr "Ní ionann na focail fhaire." #: ../src/shell-keyring-prompt.c:750 msgid "Password cannot be blank" msgstr "Ní féidir an focal faire a bheith bán" #: ../src/shell-polkit-authentication-agent.c:346 msgid "Authentication dialog was dismissed by the user" msgstr "" 07070100000234000081A40000000000000000000000016712993F00018FBA000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/gd.po# Scottish Gaelic translation for gnome-shell. # Copyright (C) 2015 gnome-shell's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-shell package. # GunChleoc , 2015, 2016, 2017, 2018. msgid "" msgstr "" "Project-Id-Version: gnome-shell master\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" "POT-Creation-Date: 2022-03-20 22:19+0000\n" "PO-Revision-Date: 2018-02-26 12:55+0100\n" "Last-Translator: GunChleoc \n" "Language-Team: Fòram na Gàidhlig\n" "Language: gd\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : " "(n > 2 && n < 20) ? 2 : 3;\n" "X-Generator: Virtaal 0.7.1\n" "X-DamnedLies-Scope: partial\n" "X-Project-Style: gnome\n" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "" #: data/50-gnome-shell-launchers.xml:10 #, fuzzy #| msgid "Open the application menu" msgid "Activate favorite application 1" msgstr "Fosgail clàr-taice nan aplacaidean" #: data/50-gnome-shell-launchers.xml:14 #, fuzzy #| msgid "Open the application menu" msgid "Activate favorite application 2" msgstr "Fosgail clàr-taice nan aplacaidean" #: data/50-gnome-shell-launchers.xml:18 #, fuzzy #| msgid "Open the application menu" msgid "Activate favorite application 3" msgstr "Fosgail clàr-taice nan aplacaidean" #: data/50-gnome-shell-launchers.xml:22 #, fuzzy #| msgid "Open the application menu" msgid "Activate favorite application 4" msgstr "Fosgail clàr-taice nan aplacaidean" #: data/50-gnome-shell-launchers.xml:26 #, fuzzy #| msgid "Open the application menu" msgid "Activate favorite application 5" msgstr "Fosgail clàr-taice nan aplacaidean" #: data/50-gnome-shell-launchers.xml:30 #, fuzzy #| msgid "Open the application menu" msgid "Activate favorite application 6" msgstr "Fosgail clàr-taice nan aplacaidean" #: data/50-gnome-shell-launchers.xml:34 #, fuzzy #| msgid "Open the application menu" msgid "Activate favorite application 7" msgstr "Fosgail clàr-taice nan aplacaidean" #: data/50-gnome-shell-launchers.xml:38 #, fuzzy #| msgid "Open the application menu" msgid "Activate favorite application 8" msgstr "Fosgail clàr-taice nan aplacaidean" #: data/50-gnome-shell-launchers.xml:42 #, fuzzy #| msgid "Open the application menu" msgid "Activate favorite application 9" msgstr "Fosgail clàr-taice nan aplacaidean" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2062 msgid "Screenshots" msgstr "" #: data/50-gnome-shell-screenshots.xml:9 #: data/org.gnome.shell.gschema.xml.in:235 msgid "Take a screenshot interactively" msgstr "" #: data/50-gnome-shell-screenshots.xml:12 #: data/org.gnome.shell.gschema.xml.in:247 msgid "Take a screenshot" msgstr "" #: data/50-gnome-shell-screenshots.xml:15 #: data/org.gnome.shell.gschema.xml.in:243 msgid "Take a screenshot of a window" msgstr "" #: data/50-gnome-shell-screenshots.xml:18 #: data/org.gnome.shell.gschema.xml.in:239 msgid "Record a screencast interactively" msgstr "" #: data/50-gnome-shell-system.xml:6 msgid "System" msgstr "An siostam" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "Seall liosta nam brathan" #: data/50-gnome-shell-system.xml:12 msgid "Focus the active notification" msgstr "Cuir am fòcas air a’ bhrath ghnìomhach" #: data/50-gnome-shell-system.xml:15 msgid "Show the overview" msgstr "Seall am foir-shealladh" #: data/50-gnome-shell-system.xml:18 msgid "Show all applications" msgstr "Seall a h-uile aplacaid" #: data/50-gnome-shell-system.xml:21 msgid "Open the application menu" msgstr "Fosgail clàr-taice nan aplacaidean" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "Slige GNOME" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "Stiùireadh uinneagan is cur gu dol aplacaidean" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "Cuir an comas innealan an luchd-leasachaidh ’s deuchainne o Alt-F2" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Ceadaich inntrigeadh dha na h-innealan a chum dì-bhugachaidh ’s sgrùdaidh le " "còmhradh Alt-F2." #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "UUIDs nan leudachan ri an cur an comas" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "Tha buadh UUID aig leudachain Slige GNOME; seallaidh an iuchair sin na " "leudachain a bu chòir luchdadh. Feumaidh gach leudachan a tha ag iarraidh " "luchdadh a bhith air an liosta seo. ’S urrainn dhut an liosta seo " "atharrachadh cuideachd leis na modhan D-Bus EnableExtension agus " "DisableExtension air org.gnome.Shell." #: data/org.gnome.shell.gschema.xml.in:26 #, fuzzy #| msgid "UUIDs of extensions to enable" msgid "UUIDs of extensions to force disabling" msgstr "UUIDs nan leudachan ri an cur an comas" #: data/org.gnome.shell.gschema.xml.in:27 #, fuzzy #| msgid "" #| "GNOME Shell extensions have a UUID property; this key lists extensions " #| "which should be loaded. Any extension that wants to be loaded needs to be " #| "in this list. You can also manipulate this list with the EnableExtension " #| "and DisableExtension D-Bus methods on org.gnome.Shell." msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" "Tha buadh UUID aig leudachain Slige GNOME; seallaidh an iuchair sin na " "leudachain a bu chòir luchdadh. Feumaidh gach leudachan a tha ag iarraidh " "luchdadh a bhith air an liosta seo. ’S urrainn dhut an liosta seo " "atharrachadh cuideachd leis na modhan D-Bus EnableExtension agus " "DisableExtension air org.gnome.Shell." #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "Cuir à comas leudachain a’ chleachdaiche" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" "Cuir à comas gach leudachan a chuir an cleachdaiche an comas gun bhuaidh air " "an roghainn “enabled-extension”." #: data/org.gnome.shell.gschema.xml.in:45 msgid "Disables the validation of extension version compatibility" msgstr "" "Cuiridh seo à comas dearbhadh na co-chòrdalachd airson tionndadh nan " "leudachan" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "Cha luchdaich Slige GNOME ach leudachain a dh’innseas gu bheil iad co-" "chòrdail leis an tionndadh a tha ’ga ruith. Ma chuireas tu an roghainn seo " "an comas, thèid an dearbhadh a chur à comas agus feuchaidh sinn ris a h-uile " "leudachan a luchdadh ge b’ e dè na tionndaidhean ris an cuir iad taic dhan " "rèir-san." #: data/org.gnome.shell.gschema.xml.in:54 msgid "List of desktop file IDs for favorite applications" msgstr "" "Liosta dhe IDan nam faidhlichean desktop airson nan aplacaidean as annsa leat" #: data/org.gnome.shell.gschema.xml.in:55 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" "Thèid na h-aplacaidean a fhreagras ris na h-aithnichearan seo a shealltainn " "air raon nan annsachdan." #: data/org.gnome.shell.gschema.xml.in:62 msgid "History for command (Alt-F2) dialog" msgstr "Eachdraidh a’ chòmhraidh-àithne (Alt-F2)" #. Translators: looking glass is a debugger and inspector tool, see https://wiki.gnome.org/Projects/GnomeShell/LookingGlass #: data/org.gnome.shell.gschema.xml.in:67 msgid "History for the looking glass dialog" msgstr "Eachdraidh a’ chòmhraidh aig looking glass" #: data/org.gnome.shell.gschema.xml.in:71 msgid "Always show the “Log out” menu item in the user menu." msgstr "" "Seall nì “Clàraich a-mach” air clàr-taice a’ chleachdaiche an-còmhnaidh." #: data/org.gnome.shell.gschema.xml.in:72 msgid "" "This key overrides the automatic hiding of the “Log out” menu item in single-" "user, single-session situations." msgstr "" "Tar-àithnidh an iuchair seo am falach fèin-obrachail aig “Clàraich a-mach” " "air a’ chlàr-taice ann an suidheachaidhean le aon chleachdaiche ’s aon " "seisean a-mhàin." #: data/org.gnome.shell.gschema.xml.in:79 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "Co-dhiù an dèid am facal-faire a chuimhneachadh airson munntachadh " "shiostaman-fhaidhlichean crioptaichte no cèine" #: data/org.gnome.shell.gschema.xml.in:80 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "Iarraidh an t-slige facal-faire ort nuair a thèid siostam-fhaidhlichean " "crioptaichte no cèin a mhunntachadh. Ma ghabhas am facal-faire sàbhaladh " "airson na h-ama ri teachd, bidh bogsa-cromaige “Cuimhnich am facal-faire” " "ann. Suidhichidh an iuchair seo staid thùsail na bogsa-cromaige ud." #: data/org.gnome.shell.gschema.xml.in:89 msgid "" "Whether the default Bluetooth adapter had set up devices associated to it" msgstr "" "Co-dhiù an robh uidheaman co-cheangailte ris an adaptar Bluetooth gus nach " "robh" #: data/org.gnome.shell.gschema.xml.in:90 msgid "" "The shell will only show a Bluetooth menu item if a Bluetooth adapter is " "powered, or if there were devices set up associated with the default " "adapter. This will be reset if the default adapter is ever seen not to have " "devices associated to it." msgstr "" "Cha seall an t-slige nì clàir-thaice “Bluetooth” ach ma tha cumhachd aig " "adaptar Bluetooth no ma chaidh uidheaman co-cheangailte ris an adaptar " "tùsail roimhe. Thèid seo ath-shuidheachadh ma chithear an t-adaptar tùsail " "gun uidheam co-cheangailte ris." #: data/org.gnome.shell.gschema.xml.in:99 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "" #: data/org.gnome.shell.gschema.xml.in:100 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can " "be used to effectively disable the dialog." msgstr "" #: data/org.gnome.shell.gschema.xml.in:133 msgid "Layout of the app picker" msgstr "" #: data/org.gnome.shell.gschema.xml.in:134 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" msgstr "" #: data/org.gnome.shell.gschema.xml.in:149 msgid "Keybinding to open the application menu" msgstr "Nasgadh iuchrach gus clàr-taice nan aplacaidean fhosgladh" #: data/org.gnome.shell.gschema.xml.in:150 msgid "Keybinding to open the application menu." msgstr "Nasgadh iuchrach gus clàr-taice nan aplacaidean fhosgladh." #: data/org.gnome.shell.gschema.xml.in:156 #: data/org.gnome.shell.gschema.xml.in:163 #, fuzzy #| msgid "Keybinding to open the overview" msgid "Keybinding to shift between overview states" msgstr "Nasgadh iuchrach gus am foir-shealladh fhosgladh" #: data/org.gnome.shell.gschema.xml.in:157 msgid "Keybinding to shift between session, window picker and app grid" msgstr "" #: data/org.gnome.shell.gschema.xml.in:164 msgid "Keybinding to shift between app grid, window picker and session" msgstr "" #: data/org.gnome.shell.gschema.xml.in:170 msgid "Keybinding to open the “Show Applications” view" msgstr "Nasgadh iuchrach gus an sealladh “Seall na h-aplacaidean” fhosgladh" #: data/org.gnome.shell.gschema.xml.in:171 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "" "Nasgadh iuchrach gus an sealladh “Seall na h-aplacaidean” aig foir-shealladh " "nan gnìomhachdan fhosgladh." #: data/org.gnome.shell.gschema.xml.in:178 msgid "Keybinding to open the overview" msgstr "Nasgadh iuchrach gus am foir-shealladh fhosgladh" #: data/org.gnome.shell.gschema.xml.in:179 msgid "Keybinding to open the Activities Overview." msgstr "Nasgadh iuchrach gus foir-shealladh nan gnìomhachdan fhosgladh." #: data/org.gnome.shell.gschema.xml.in:185 msgid "Keybinding to toggle the visibility of the notification list" msgstr "Nasgadh iuchrach gus liosta nam brathan a shealltainn no fhalach" #: data/org.gnome.shell.gschema.xml.in:186 msgid "Keybinding to toggle the visibility of the notification list." msgstr "Nasgadh iuchrach gus liosta nam brathan a shealltainn no fhalach." #: data/org.gnome.shell.gschema.xml.in:192 msgid "Keybinding to focus the active notification" msgstr "Nasgadh iuchrach gus am fòcas a chur air a’ bhrath ghnìomhach" #: data/org.gnome.shell.gschema.xml.in:193 msgid "Keybinding to focus the active notification." msgstr "Nasgadh iuchrach gus am fòcas a chur air a’ bhrath ghnìomhach." #: data/org.gnome.shell.gschema.xml.in:199 #, fuzzy #| msgid "Show Applications" msgid "Switch to application 1" msgstr "Seall na h-aplacaidean" #: data/org.gnome.shell.gschema.xml.in:203 #, fuzzy #| msgid "Show Applications" msgid "Switch to application 2" msgstr "Seall na h-aplacaidean" #: data/org.gnome.shell.gschema.xml.in:207 #, fuzzy #| msgid "Show Applications" msgid "Switch to application 3" msgstr "Seall na h-aplacaidean" #: data/org.gnome.shell.gschema.xml.in:211 #, fuzzy #| msgid "Show Applications" msgid "Switch to application 4" msgstr "Seall na h-aplacaidean" #: data/org.gnome.shell.gschema.xml.in:215 #, fuzzy #| msgid "Show Applications" msgid "Switch to application 5" msgstr "Seall na h-aplacaidean" #: data/org.gnome.shell.gschema.xml.in:219 #, fuzzy #| msgid "Show Applications" msgid "Switch to application 6" msgstr "Seall na h-aplacaidean" #: data/org.gnome.shell.gschema.xml.in:223 #, fuzzy #| msgid "Show Applications" msgid "Switch to application 7" msgstr "Seall na h-aplacaidean" #: data/org.gnome.shell.gschema.xml.in:227 #, fuzzy #| msgid "Show Applications" msgid "Switch to application 8" msgstr "Seall na h-aplacaidean" #: data/org.gnome.shell.gschema.xml.in:231 #, fuzzy #| msgid "Show Applications" msgid "Switch to application 9" msgstr "Seall na h-aplacaidean" #: data/org.gnome.shell.gschema.xml.in:256 #: data/org.gnome.shell.gschema.xml.in:283 msgid "Limit switcher to current workspace." msgstr "Cuingich an t-suidsear air an rùm-obrach làithreach." #: data/org.gnome.shell.gschema.xml.in:257 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "Mas e true a th’ ann, cha dèid a shealltainn san t-suidsear ach na h-" "aplacaidean aig a bheil uinneag san rùm-obrach làithreach. Mur e, thèid a h-" "uile aplacaid a ghabhail a-staigh." #: data/org.gnome.shell.gschema.xml.in:274 msgid "The application icon mode." msgstr "Modh ìomhaigheagan nan aplacaid." #: data/org.gnome.shell.gschema.xml.in:275 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-" "only” (shows only the application icon) or “both”." msgstr "" "Rèitichidh seo an dòigh sa thèid na h-uinneagan a shealltainn san t-" "suidsear. ’S e “thumbnail-only” (seallaidh seo dealbhag na h-uinneige), “app-" "icon-only” (seallaidh seo ìomhaigheag na h-aplacaid) no “both” (seallaidh " "seo an dà chuid dhiubh) a tha sna luachan dligheach." #: data/org.gnome.shell.gschema.xml.in:284 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "Mas e true a th’ ann, cha dèid a shealltainn san t-suidsear ach na h-" "uinneagan a tha san rùm-obrach làithreach. Mur e, thèid a h-uile uinneag a " "ghabhail a-staigh." #: data/org.gnome.shell.gschema.xml.in:294 #, fuzzy #| msgid "Location In Use" msgid "Locations" msgstr "Tha an t-ionad ’ga chleachdadh" #: data/org.gnome.shell.gschema.xml.in:295 msgid "The locations to show in world clocks" msgstr "" #: data/org.gnome.shell.gschema.xml.in:305 msgid "Automatic location" msgstr "" #: data/org.gnome.shell.gschema.xml.in:306 msgid "Whether to fetch the current location or not" msgstr "" #: data/org.gnome.shell.gschema.xml.in:313 #, fuzzy #| msgid "Location In Use" msgid "Location" msgstr "Tha an t-ionad ’ga chleachdadh" #: data/org.gnome.shell.gschema.xml.in:314 msgid "The location for which to show a forecast" msgstr "" #: data/org.gnome.shell.gschema.xml.in:326 msgid "Attach modal dialog to the parent window" msgstr "Ceangail còmhradh mòdach ris an uinneag-pàrant" #: data/org.gnome.shell.gschema.xml.in:327 #: data/org.gnome.shell.gschema.xml.in:336 #: data/org.gnome.shell.gschema.xml.in:344 #: data/org.gnome.shell.gschema.xml.in:352 #: data/org.gnome.shell.gschema.xml.in:360 msgid "" "This key overrides the key in org.gnome.mutter when running GNOME Shell." msgstr "" "Tar-àithnidh an iuchair seo an iuchair ann an org.gnome.mutter nuair a thèid " "Slige GNOME a ruith." #: data/org.gnome.shell.gschema.xml.in:335 msgid "Enable edge tiling when dropping windows on screen edges" msgstr "" "Cuir leacadh nan oirean an comas nuair a thèid uinneagan a leigeil às aig " "oir na sgrìn" #: data/org.gnome.shell.gschema.xml.in:343 msgid "Workspaces are managed dynamically" msgstr "Thèid na rumannan-obrach a stiùireadh gu h-innsgineach" #: data/org.gnome.shell.gschema.xml.in:351 msgid "Workspaces only on primary monitor" msgstr "Rumannan-obrach air a’ phrìomh-mhonatair a-mhàin" #: data/org.gnome.shell.gschema.xml.in:359 msgid "Delay focus changes in mouse mode until the pointer stops moving" msgstr "" "Cuir dàil air atharraichean an fòcais ann am modh luchaige gus an sguir an " "tomhaire air gluasad" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "Clàradh a-steach lìonraidh" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:144 msgid "Something’s gone wrong" msgstr "" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" #: js/dbusServices/extensions/ui/extension-error-page.ui:48 #, fuzzy #| msgid "Show Details" msgid "Technical Details" msgstr "Seall am mion-fhiosrachadh" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 #, fuzzy #| msgid "UUIDs of extensions to enable" msgid "Visit extension homepage" msgstr "UUIDs nan leudachan ri an cur an comas" #: js/gdm/authPrompt.js:144 js/ui/audioDeviceSelection.js:61 #: js/ui/components/networkAgent.js:109 js/ui/components/polkitAgent.js:141 #: js/ui/endSessionDialog.js:437 js/ui/extensionDownloader.js:223 #: js/ui/shellMountOperation.js:377 js/ui/shellMountOperation.js:387 #: js/ui/status/network.js:956 subprojects/extensions-app/js/main.js:174 msgid "Cancel" msgstr "Sguir dheth" #: js/gdm/authPrompt.js:307 js/ui/components/networkAgent.js:209 #: js/ui/components/networkAgent.js:229 js/ui/components/networkAgent.js:261 #: js/ui/components/networkAgent.js:294 js/ui/components/networkAgent.js:333 #: js/ui/components/networkAgent.js:346 js/ui/components/polkitAgent.js:283 #: js/ui/shellMountOperation.js:327 msgid "Password" msgstr "Facal-faire " #: js/gdm/loginDialog.js:317 msgid "Choose Session" msgstr "Tagh seisean" #: js/gdm/loginDialog.js:463 msgid "Not listed?" msgstr "Nach eil d’ ainm air an liosta?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:931 #, javascript-format msgid "(e.g., user or %s)" msgstr "(m.e., cleachdaiche no %s)" #: js/gdm/loginDialog.js:936 js/ui/components/networkAgent.js:253 #: js/ui/components/networkAgent.js:288 js/ui/components/networkAgent.js:322 #, fuzzy #| msgid "Username: " msgid "Username" msgstr "Ainm-cleachdaiche:" #: js/gdm/loginDialog.js:1257 msgid "Login Window" msgstr "Uinneag a’ chlàraidh a-steach" #: js/gdm/util.js:434 msgid "Authentication error" msgstr "Mearachd leis an dearbhadh" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:606 #, fuzzy #| msgid "(or swipe finger)" msgid "(or swipe finger across reader)" msgstr "(no grad-shlaighd le do mheur)" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:611 #, fuzzy #| msgid "(or swipe finger)" msgid "(or place finger on reader)" msgstr "(no grad-shlaighd le do mheur)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:84 msgctxt "search-result" msgid "Power Off" msgstr "Cuir dheth" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:87 #, fuzzy #| msgid "power off;shutdown;reboot;restart" msgid "power off;shutdown;halt;stop" msgstr "" "power off;shutdown;reboot;restart;cumhachd;dheth;cur sìos;cuir sìos;cuir " "dheth;cur dheth;dùin;dùin sìos;ath-thòisich;ath-thòiseachadh;tòisich" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:92 #, fuzzy #| msgctxt "button" #| msgid "Restart" msgctxt "search-result" msgid "Restart" msgstr "Ath-thòisich" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:95 msgid "reboot;restart;" msgstr "" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:100 msgctxt "search-result" msgid "Lock Screen" msgstr "Glais an sgrìn" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:103 msgid "lock screen" msgstr "sgrìn-ghlasaidh;glais;glas;sgrìn" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:108 msgctxt "search-result" msgid "Log Out" msgstr "Clàraich a-mach" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:111 #, fuzzy #| msgid "logout;sign off" msgid "logout;log out;sign off" msgstr "logout;sign off;clàraidh a-mach;clàradh a-mach;logadh a-mach;" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:116 msgctxt "search-result" msgid "Suspend" msgstr "Cuir ’na dhàil" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:119 msgid "suspend;sleep" msgstr "suspend;sleep;cuir 'na dhàil;cur 'na dhàil;cuir na dhàil;cur na dhàil;" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:124 msgctxt "search-result" msgid "Switch User" msgstr "Leum gu cleachdaiche eile" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:127 msgid "switch user" msgstr "switch user;suids;cleachdaiche" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:134 #, fuzzy #| msgid "lock orientation;screen;rotation" msgid "lock orientation;unlock orientation;screen;rotation" msgstr "" "lock orientation;screen;rotation;glais;comhair;glais a' chomhair;sgrìn;" "cuairteachadh;cuairtich" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:139 msgctxt "search-result" msgid "Take a Screenshot" msgstr "" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:142 msgid "screenshot;screencast;snip;capture;record" msgstr "" #: js/misc/systemActions.js:242 #, fuzzy #| msgctxt "search-result" #| msgid "Lock Orientation" msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "Glais a’ chomhair" #: js/misc/systemActions.js:243 #, fuzzy #| msgctxt "search-result" #| msgid "Lock Orientation" msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "Glais a’ chomhair" #: js/misc/util.js:129 msgid "Command not found" msgstr "Cha deach an àithne a lorg" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:166 msgid "Could not parse command:" msgstr "Cha b’ urrainn dhuinn an àithne a pharsadh:" #: js/misc/util.js:174 #, javascript-format msgid "Execution of “%s” failed:" msgstr "Cha b’ urrainn dhuinn “%s” a ruith:" #: js/misc/util.js:191 msgid "Just now" msgstr "An-dràsta fhèin" #: js/misc/util.js:193 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d mhionaid air ais" msgstr[1] "%d mhionaid air ais" msgstr[2] "%d mionaidean air ais" msgstr[3] "%d mionaid air ais" #: js/misc/util.js:197 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d uair a thìde air ais" msgstr[1] "%d uair a thìde air ais" msgstr[2] "%d uairean a thìde air ais" msgstr[3] "%d uair a thìde air ais" #: js/misc/util.js:201 js/ui/dateMenu.js:167 msgid "Yesterday" msgstr "An-dè" #: js/misc/util.js:203 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d latha air ais" msgstr[1] "%d latha air ais" msgstr[2] "%d làithean air ais" msgstr[3] "%d latha air ais" #: js/misc/util.js:207 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d seachdain air ais" msgstr[1] "%d sheachdain air ais" msgstr[2] "%d seachdainean air ais" msgstr[3] "%d seachdain air ais" #: js/misc/util.js:211 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%d mhìos air ais" msgstr[1] "%d mhìos air ais" msgstr[2] "%d mìosan air ais" msgstr[3] "%d mìos air ais" #: js/misc/util.js:214 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "%d bhliadhna air ais" msgstr[1] "%d bhliadhna air ais" msgstr[2] "%d bliadhnaichean air ais" msgstr[3] "%d bliadhna air ais" #. Translators: Time in 24h format #: js/misc/util.js:247 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/util.js:253 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "An-dè aig %H:%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/util.js:259 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/util.js:265 #, fuzzy, no-c-format #| msgid "%B %d, %H∶%M" msgid "%B %-d, %H∶%M" msgstr "%d %B, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/util.js:271 #, fuzzy, no-c-format #| msgid "%B %d %Y, %H∶%M" msgid "%B %-d %Y, %H∶%M" msgstr "%d %B %Y, %H∶%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/util.js:276 msgid "%l∶%M %p" msgstr "%l∶%M%p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/util.js:282 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "An-dè aig %l:%M%p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/util.js:288 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %l∶%M%p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/util.js:294 #, fuzzy, no-c-format #| msgid "%B %d, %l∶%M %p" msgid "%B %-d, %l∶%M %p" msgstr "%d %B, %l∶%M%p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/util.js:300 #, fuzzy, no-c-format #| msgid "%B %d %Y, %l∶%M %p" msgid "%B %-d %Y, %l∶%M %p" msgstr "%d %B %Y, %l∶%M%p" #: js/portalHelper/main.js:53 msgid "Hotspot Login" msgstr "Clàradh a-steach Hotspot" #: js/portalHelper/main.js:106 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "Chan eil an ceangal agad gu clàradh a-steach a’ hotspot seo tèarainte. Chì " "daoine a tha faisg ort na faclan-faire agus fiosrachadh sam bith eile a " "chuireas tu a-steach air an duilleag seo." #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:39 js/ui/status/location.js:406 msgid "Deny Access" msgstr "Diùlt an t-inntrigeadh" #: js/ui/accessDialog.js:40 js/ui/status/location.js:411 msgid "Grant Access" msgstr "Ceadaich an t-inntrigeadh" #: js/ui/appFavorites.js:164 #, fuzzy, javascript-format #| msgid "%s has been added to your favorites." msgid "%s has been pinned to the dash." msgstr "Chaidh %s a chur ris na h-annsachdan agad." #: js/ui/appFavorites.js:197 #, fuzzy, javascript-format #| msgid "%s has been removed from your favorites." msgid "%s has been unpinned from the dash." msgstr "Chaidh %s a toirt air falbh o na h-annsachdan agad." #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:46 #, fuzzy #| msgid "Windows" msgid "Open Windows" msgstr "Uinneagan" #: js/ui/appMenu.js:54 msgid "New Window" msgstr "Uinneag ùr" #: js/ui/appMenu.js:81 msgid "Show Details" msgstr "Seall am mion-fhiosrachadh" #: js/ui/appMenu.js:96 msgid "Quit" msgstr "Fàg an-seo" #: js/ui/appMenu.js:156 js/ui/dash.js:249 msgid "Unpin" msgstr "" #: js/ui/appMenu.js:157 msgid "Pin to Dash" msgstr "" #: js/ui/appMenu.js:174 #, fuzzy #| msgid "Launch using Dedicated Graphics Card" msgid "Launch using Integrated Graphics Card" msgstr "Cuir gu dol le cairt-ghrafaigeachd shònraichte" #: js/ui/appMenu.js:175 #, fuzzy #| msgid "Launch using Dedicated Graphics Card" msgid "Launch using Discrete Graphics Card" msgstr "Cuir gu dol le cairt-ghrafaigeachd shònraichte" #: js/ui/audioDeviceSelection.js:41 msgid "Select Audio Device" msgstr "Tagh uidheam fuaime" #: js/ui/audioDeviceSelection.js:56 msgid "Sound Settings" msgstr "Roghainnean na fuaime" #: js/ui/audioDeviceSelection.js:69 msgid "Headphones" msgstr "Headphones" #: js/ui/audioDeviceSelection.js:71 msgid "Headset" msgstr "Headset" #: js/ui/audioDeviceSelection.js:73 js/ui/status/volume.js:270 msgid "Microphone" msgstr "Micreofon" #: js/ui/backgroundMenu.js:14 msgid "Change Background…" msgstr "Atharraich an cùlaibh…" #: js/ui/backgroundMenu.js:16 js/ui/status/nightLight.js:45 msgid "Display Settings" msgstr "Roghainnean an t-seallaidh" #: js/ui/backgroundMenu.js:17 #: subprojects/extensions-app/data/ui/extension-row.ui:122 msgid "Settings" msgstr "Roghainnean" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:35 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:61 msgctxt "grid sunday" msgid "S" msgstr "Dò" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:63 msgctxt "grid monday" msgid "M" msgstr "Lu" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:65 msgctxt "grid tuesday" msgid "T" msgstr "Mà" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:67 msgctxt "grid wednesday" msgid "W" msgstr "Ci" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:69 msgctxt "grid thursday" msgid "T" msgstr "Da" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:71 msgctxt "grid friday" msgid "F" msgstr "hA" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:73 msgctxt "grid saturday" msgid "S" msgstr "Dò" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:402 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:412 msgid "%OB %Y" msgstr "%OB %Y" #: js/ui/calendar.js:472 msgid "Previous month" msgstr "Am mìos roimhe" #: js/ui/calendar.js:490 msgid "Next month" msgstr "An ath mhìos" #: js/ui/calendar.js:642 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:701 msgid "Week %V" msgstr "Seachdain %V" #: js/ui/calendar.js:880 msgid "No Notifications" msgstr "Chan eil brath ann" #: js/ui/calendar.js:937 msgid "Do Not Disturb" msgstr "" #: js/ui/calendar.js:958 #, fuzzy #| msgid "Clear All" msgid "Clear" msgstr "Falamhaich na h-uile" #. Translators: %s is an application name #: js/ui/closeDialog.js:40 #, javascript-format msgid "“%s” is not responding." msgstr "Chan eil “%s” a’ freagairt." #: js/ui/closeDialog.js:41 msgid "" "You may choose to wait a short while for it to continue or force the " "application to quit entirely." msgstr "" "Faodaidh tu feitheamh greis gus an lean seo air adhart no sparradh air an " "aplacaid gum fàg i gu lèir." #: js/ui/closeDialog.js:69 msgid "Force Quit" msgstr "Spàrr fàgail air" #: js/ui/closeDialog.js:74 msgid "Wait" msgstr "Fuirich air" #: js/ui/components/automountManager.js:84 msgid "External drive connected" msgstr "Chaidh draibh on taobh a-muigh a cheangal" #: js/ui/components/automountManager.js:96 msgid "External drive disconnected" msgstr "Chaidh draibh on taobh a-muigh a dhì-cheangal" #: js/ui/components/automountManager.js:207 #, fuzzy #| msgid "Unable to lock" msgid "Unable to unlock volume" msgstr "Cha ghabh a ghlasadh" #: js/ui/components/automountManager.js:208 msgid "The installed udisks version does not support the PIM setting" msgstr "" #: js/ui/components/autorunManager.js:334 #, javascript-format msgid "Open with %s" msgstr "Fosgail le %s" #: js/ui/components/networkAgent.js:91 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router." msgstr "" #: js/ui/components/networkAgent.js:103 js/ui/status/network.js:244 #: js/ui/status/network.js:335 js/ui/status/network.js:961 msgid "Connect" msgstr "Ceangail" #: js/ui/components/networkAgent.js:218 #, fuzzy #| msgid "Key: " msgid "Key" msgstr "Iuchair: " #: js/ui/components/networkAgent.js:269 js/ui/components/networkAgent.js:308 #, fuzzy #| msgid "Private key password: " msgid "Private key password" msgstr "Facal-faire na h-iuchrach prìobhaidich: " #: js/ui/components/networkAgent.js:302 #, fuzzy #| msgid "Identity: " msgid "Identity" msgstr "Dearbh-aithne: " #: js/ui/components/networkAgent.js:328 #, fuzzy #| msgid "Service: " msgid "Service" msgstr "Seirbheis: " #: js/ui/components/networkAgent.js:366 js/ui/components/networkAgent.js:402 #: js/ui/components/networkAgent.js:746 js/ui/components/networkAgent.js:767 #, fuzzy #| msgid "authentication required" msgid "Authentication required" msgstr "tha feum air dearbhadh" #: js/ui/components/networkAgent.js:367 js/ui/components/networkAgent.js:747 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network " "“%s”." msgstr "" "Tha feum air faclan-faire no iuchraichean crioptachaidh gus an lìonra " "uèirleas “%s” inntrigeadh." #: js/ui/components/networkAgent.js:371 js/ui/components/networkAgent.js:751 msgid "Wired 802.1X authentication" msgstr "Dearbhadh Wired 802.1X" #: js/ui/components/networkAgent.js:374 #, fuzzy #| msgid "Network name: " msgid "Network name" msgstr "Ainm an lìonraidh: " #: js/ui/components/networkAgent.js:382 js/ui/components/networkAgent.js:755 msgid "DSL authentication" msgstr "Dearbhadh DSL" #: js/ui/components/networkAgent.js:389 js/ui/components/networkAgent.js:760 msgid "PIN code required" msgstr "Tha feum air còd PIN" #: js/ui/components/networkAgent.js:390 js/ui/components/networkAgent.js:761 msgid "PIN code is needed for the mobile broadband device" msgstr "Tha feum air còd PIN airson an uidheim mobile banna-leathainn" #: js/ui/components/networkAgent.js:392 #, fuzzy #| msgid "PIN: " msgid "PIN" msgstr "PIN: " #: js/ui/components/networkAgent.js:403 js/ui/components/networkAgent.js:752 #: js/ui/components/networkAgent.js:756 js/ui/components/networkAgent.js:768 #: js/ui/components/networkAgent.js:772 #, javascript-format msgid "A password is required to connect to “%s”." msgstr "Tha feum air facal-faire airson ceangal ri “%s”." #: js/ui/components/networkAgent.js:735 js/ui/status/network.js:1751 msgid "Network Manager" msgstr "Manaidsear nan lìonra" #: js/ui/components/networkAgent.js:771 #, fuzzy #| msgid "Password" msgid "VPN password" msgstr "Facal-faire " #: js/ui/components/polkitAgent.js:41 msgid "Authentication Required" msgstr "Tha feum air dearbhadh" #: js/ui/components/polkitAgent.js:81 msgid "Administrator" msgstr "Rianaire" #: js/ui/components/polkitAgent.js:146 msgid "Authenticate" msgstr "Dearbhaich" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:260 js/ui/shellMountOperation.js:403 msgid "Sorry, that didn’t work. Please try again." msgstr "" "Tha sinn duilich ach cha do dh’obraich sin. Am feuch thu ris a-rithist?" #: js/ui/components/telepathyClient.js:828 #, javascript-format msgid "%s is now known as %s" msgstr "Thug %s %s air" #: js/ui/ctrlAltTab.js:22 js/ui/overviewControls.js:405 msgid "Windows" msgstr "Uinneagan" #: js/ui/dash.js:205 js/ui/dash.js:251 msgid "Show Applications" msgstr "Seall na h-aplacaidean" #. Translators: this is the name of the dock/favorites area on #. the left of the overview #: js/ui/dash.js:398 msgid "Dash" msgstr "Deas-bhòrd" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:83 #, fuzzy #| msgid "%B %e %Y" msgid "%B %-d %Y" msgstr "%e %B %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:90 msgid "%A %B %e %Y" msgstr "%A %e %B %Y" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:156 #, fuzzy #| msgctxt "calendar heading" #| msgid "%A, %B %d" msgctxt "calendar heading" msgid "%B %-d" msgstr "%A, %d %B" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:159 #, fuzzy #| msgid "%B %e %Y" msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%e %B %Y" #: js/ui/dateMenu.js:165 msgid "Today" msgstr "" #: js/ui/dateMenu.js:169 msgid "Tomorrow" msgstr "" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:200 msgctxt "event list time" msgid "All Day" msgstr "Fad an latha" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:222 msgid "%m/%d" msgstr "" #: js/ui/dateMenu.js:273 msgid "No Events" msgstr "Chan eil tachartas ann" #: js/ui/dateMenu.js:396 msgid "Add world clocks…" msgstr "Cuir uaireadairean an t-saoghail ris…" #: js/ui/dateMenu.js:397 msgid "World Clocks" msgstr "Uaireadairean an t-saoghail" #: js/ui/dateMenu.js:677 msgid "Loading…" msgstr "’Ga luchdadh…" #: js/ui/dateMenu.js:687 msgid "Go online for weather information" msgstr "Rach air loidhne airson fiosrachadh mun aimsir" #: js/ui/dateMenu.js:689 msgid "Weather information is currently unavailable" msgstr "Chan eil fiosrachadh mun aimsir ri fhaighinn an-dràsta" #: js/ui/dateMenu.js:699 msgid "Weather" msgstr "An aimsir" #: js/ui/dateMenu.js:701 #, fuzzy #| msgid "Select a location…" msgid "Select weather location…" msgstr "Tagh ionad…" #: js/ui/endSessionDialog.js:41 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "Clàraich a-mach %s" #: js/ui/endSessionDialog.js:42 msgctxt "title" msgid "Log Out" msgstr "Clàraich a-mach" #: js/ui/endSessionDialog.js:45 #, javascript-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "Thèid %s a chlàradh a-mach gu fèin-obrachail an ceann %d diog." msgstr[1] "Thèid %s a chlàradh a-mach gu fèin-obrachail an ceann %d dhiog." msgstr[2] "Thèid %s a chlàradh a-mach gu fèin-obrachail an ceann %d diogan." msgstr[3] "Thèid %s a chlàradh a-mach gu fèin-obrachail an ceann %d diog." #: js/ui/endSessionDialog.js:51 #, javascript-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "Thèid thu a chlàradh a-mach gu fèin-obrachail an ceann %d diog." msgstr[1] "Thèid thu a chlàradh a-mach gu fèin-obrachail an ceann %d dhiog." msgstr[2] "Thèid thu a chlàradh a-mach gu fèin-obrachail an ceann %d diogan." msgstr[3] "Thèid thu a chlàradh a-mach gu fèin-obrachail an ceann %d diog." #: js/ui/endSessionDialog.js:58 msgctxt "button" msgid "Log Out" msgstr "Clàraich a-mach" #: js/ui/endSessionDialog.js:64 msgctxt "title" msgid "Power Off" msgstr "Cuir dheth" #: js/ui/endSessionDialog.js:65 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Stàlaich na h-ùrachaidhean ⁊ cuir dheth" #: js/ui/endSessionDialog.js:68 #, javascript-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "Thèid an siostam a chur dheth gu fèin-obrachail an ceann %d diog." msgstr[1] "Thèid an siostam a chur dheth gu fèin-obrachail an ceann %d dhiog." msgstr[2] "Thèid an siostam a chur dheth gu fèin-obrachail an ceann %d diogan." msgstr[3] "Thèid an siostam a chur dheth gu fèin-obrachail an ceann %d diog." #: js/ui/endSessionDialog.js:72 js/ui/endSessionDialog.js:91 msgctxt "checkbox" msgid "Install pending software updates" msgstr "Stàlaich na h-ùrachaidhean bathair-bhog a tha a’ feitheamh" #: js/ui/endSessionDialog.js:76 msgctxt "button" msgid "Power Off" msgstr "Cuir dheth" #: js/ui/endSessionDialog.js:83 msgctxt "title" msgid "Restart" msgstr "Ath-thòisich" #: js/ui/endSessionDialog.js:84 #, fuzzy #| msgctxt "title" #| msgid "Install Updates & Power Off" msgctxt "title" msgid "Install Updates & Restart" msgstr "Stàlaich na h-ùrachaidhean ⁊ cuir dheth" #: js/ui/endSessionDialog.js:87 #, javascript-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "" "Thèid an siostam a thòiseachadh às ùr gu fèin-obrachail an ceann %d diog." msgstr[1] "" "Thèid an siostam a thòiseachadh às ùr gu fèin-obrachail an ceann %d dhiog." msgstr[2] "" "Thèid an siostam a thòiseachadh às ùr gu fèin-obrachail an ceann %d diogan." msgstr[3] "" "Thèid an siostam a thòiseachadh às ùr gu fèin-obrachail an ceann %d diog." #: js/ui/endSessionDialog.js:95 msgctxt "button" msgid "Restart" msgstr "Ath-thòisich" #: js/ui/endSessionDialog.js:103 msgctxt "title" msgid "Restart & Install Updates" msgstr "Ath-thòisich ⁊ stàlaich na h-ùrachaidhean" #: js/ui/endSessionDialog.js:106 #, javascript-format msgid "The system will automatically restart and install updates in %d second." msgid_plural "" "The system will automatically restart and install updates in %d seconds." msgstr[0] "" "Tòisichidh an siostam às ùr is stàlaichidh e ùrachaidhean gu fèin-obrachail " "an ceann %d diog." msgstr[1] "" "Tòisichidh an siostam às ùr is stàlaichidh e ùrachaidhean gu fèin-obrachail " "an ceann %d dhiog." msgstr[2] "" "Tòisichidh an siostam às ùr is stàlaichidh e ùrachaidhean gu fèin-obrachail " "an ceann %d diogan." msgstr[3] "" "Tòisichidh an siostam às ùr is stàlaichidh e ùrachaidhean gu fèin-obrachail " "an ceann %d diog." #: js/ui/endSessionDialog.js:113 js/ui/endSessionDialog.js:134 msgctxt "button" msgid "Restart & Install" msgstr "Ath-thòisich ⁊ stàlaich" #: js/ui/endSessionDialog.js:115 msgctxt "button" msgid "Install & Power Off" msgstr "Stàlaich ⁊ cuir dheth" #: js/ui/endSessionDialog.js:116 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Dùin sìos nuair a bhios na h-ùrachaidhean air an stàladh" #: js/ui/endSessionDialog.js:123 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "Ath-thòisich ⁊ stàlaich an t-àrdachadh" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:128 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "Thèid %s %s a stàladh às dèidh an ath-thòiseachaidh. Dh’fhaoidte gun doir e " "fada an t-àrdachadh a stàladh: dèan cinnteach gun do rinn thu lethbhreac-" "glèidhidh agus gu bheil an coimpiutair ceangailte ri bun-dealain." #: js/ui/endSessionDialog.js:287 #, fuzzy #| msgid "Running on battery power: please plug in before installing updates." msgid "Low battery power: please plug in before installing updates." msgstr "" "A’ ruith air cumhachd a’ bhataraidh: ceangail gu bun-dealain mus stàlaich " "thu ùrachaidhean." #: js/ui/endSessionDialog.js:296 #, fuzzy #| msgid "Some applications are busy or have unsaved work." msgid "Some applications are busy or have unsaved work" msgstr "" "Tha cuid a dh’aplacaidean trang no tha obair aca nach deach a shàbhaladh." #: js/ui/endSessionDialog.js:301 #, fuzzy #| msgid "Other users are logged in." msgid "Other users are logged in" msgstr "Tha daoine eile air an clàradh a-steach." #: js/ui/endSessionDialog.js:467 msgctxt "button" msgid "Boot Options" msgstr "" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:688 #, javascript-format msgid "%s (remote)" msgstr "%s (cèin)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:691 #, javascript-format msgid "%s (console)" msgstr "%s (consoil)" #: js/ui/extensionDownloader.js:227 msgid "Install" msgstr "Stàlaich" #: js/ui/extensionDownloader.js:233 #, fuzzy #| msgid "Shell Extensions" msgid "Install Extension" msgstr "Leudachain na slige" #: js/ui/extensionDownloader.js:234 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "" "A bheil thu airson “%s” a luchdadh a-nuas is a stàladh o extensions.gnome." "org?" #: js/ui/extensionSystem.js:267 msgid "Extension Updates Available" msgstr "" #: js/ui/extensionSystem.js:268 msgid "Extension updates are ready to be installed." msgstr "" #: js/ui/inhibitShortcutsDialog.js:79 #, fuzzy #| msgid "%s wants to inhibit shortcuts" msgid "Allow inhibiting shortcuts" msgstr "Tha %s airson ath-ghoiridean a bhacadh" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:82 #, fuzzy, javascript-format #| msgid "Application wants to inhibit shortcuts" msgid "The application %s wants to inhibit shortcuts" msgstr "Tha aplacaid airson ath-ghoiridean a bhacadh" #: js/ui/inhibitShortcutsDialog.js:83 #, fuzzy #| msgid "Application wants to inhibit shortcuts" msgid "An application wants to inhibit shortcuts" msgstr "Tha aplacaid airson ath-ghoiridean a bhacadh" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:90 #, javascript-format msgid "You can restore shortcuts by pressing %s." msgstr "’S urrainn dut na h-ath-ghoiridean aiseag ’s tu a’ brùthadh air %s." #: js/ui/inhibitShortcutsDialog.js:101 msgid "Deny" msgstr "Diùlt" #: js/ui/inhibitShortcutsDialog.js:110 msgid "Allow" msgstr "Ceadaich" #: js/ui/kbdA11yDialog.js:32 msgid "Slow Keys Turned On" msgstr "Tha na h-iuchraichean slaodach air" #: js/ui/kbdA11yDialog.js:33 msgid "Slow Keys Turned Off" msgstr "Tha na h-iuchraichean slaodach dheth" #: js/ui/kbdA11yDialog.js:34 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "Chum thu sìos an iuchair Shift fad 8 diogan. Seo an ath-ghoirid airson gleus " "nan iuchraichean slaodach agus tha buaidh aige air an dòigh air a " "dh’obraicheas am meur-chlàr agad." #: js/ui/kbdA11yDialog.js:40 msgid "Sticky Keys Turned On" msgstr "Tha na h-iuchraichean steigeach air" #: js/ui/kbdA11yDialog.js:41 msgid "Sticky Keys Turned Off" msgstr "Tha na h-iuchraichean steigeach dheth" #: js/ui/kbdA11yDialog.js:43 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "Bhrùth thu an iuchair Shift 5 tursan às dèidh a chèile. Seo an ath-ghoirid " "airson gleus nan iuchraichean steigeach agus tha buaidh aige air an dòigh " "air a dh’obraicheas am meur-chlàr agad." #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" "Bhrùth thu dà iuchair aig an aon àm no bhrùth thu an iuchair Shift 5 tursan " "às dèidh a chèile. Cuiridh seo dheth gleus nan iuchraichean steigeach agus " "tha buaidh aige air an dòigh air a dh’obraicheas am meur-chlàr agad." #: js/ui/kbdA11yDialog.js:55 msgid "Leave On" msgstr "Fàg air" #: js/ui/kbdA11yDialog.js:55 js/ui/status/bluetooth.js:174 #: js/ui/status/network.js:1341 msgid "Turn On" msgstr "Cuir air" #: js/ui/kbdA11yDialog.js:65 js/ui/status/bluetooth.js:174 #: js/ui/status/network.js:160 js/ui/status/network.js:336 #: js/ui/status/network.js:1341 js/ui/status/network.js:1456 #: js/ui/status/nightLight.js:41 js/ui/status/rfkill.js:81 #: js/ui/status/rfkill.js:110 msgid "Turn Off" msgstr "Cuir dheth" #: js/ui/kbdA11yDialog.js:65 msgid "Leave Off" msgstr "Fàg dheth" #: js/ui/keyboard.js:250 msgid "Region & Language Settings" msgstr "Roghainnean roinn-dùthcha ⁊ cànain" #: js/ui/lookingGlass.js:701 msgid "No extensions installed" msgstr "Cha deach leudachan a stàladh" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:762 #, javascript-format msgid "%s has not emitted any errors." msgstr "Cha robh mearachd sam bith aig %s." #: js/ui/lookingGlass.js:768 msgid "Hide Errors" msgstr "Falaich na mearachdan" #: js/ui/lookingGlass.js:772 js/ui/lookingGlass.js:845 msgid "Show Errors" msgstr "Seall na mearachdan" #: js/ui/lookingGlass.js:781 msgid "Enabled" msgstr "An comas" #. translators: #. * The device has been disabled #: js/ui/lookingGlass.js:784 subprojects/gvc/gvc-mixer-control.c:1900 msgid "Disabled" msgstr "À comas" #: js/ui/lookingGlass.js:786 msgid "Error" msgstr "Mearachd" #: js/ui/lookingGlass.js:788 msgid "Out of date" msgstr "Ro shean" #: js/ui/lookingGlass.js:790 msgid "Downloading" msgstr "’Ga luchdadh a-nuas" #: js/ui/lookingGlass.js:823 msgid "View Source" msgstr "Seall am bun-tùs" #: js/ui/lookingGlass.js:834 msgid "Web Page" msgstr "Duilleag-lìn" #: js/ui/main.js:265 msgid "System was put in unsafe mode" msgstr "" #: js/ui/main.js:266 msgid "Applications now have unrestricted access" msgstr "" #: js/ui/main.js:267 js/ui/overview.js:58 msgid "Undo" msgstr "Neo-dhèan" #: js/ui/main.js:313 #, fuzzy #| msgid "Log in as another user" msgid "Logged in as a privileged user" msgstr "Clàraich a-steach mar chleachdaiche eile" #: js/ui/main.js:314 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" #: js/ui/messageTray.js:1418 msgid "System Information" msgstr "Fiosrachadh an t-siostaim" #: js/ui/mpris.js:200 msgid "Unknown artist" msgstr "Chan eil fhios cò an neach-ciùil" #: js/ui/mpris.js:210 msgid "Unknown title" msgstr "Chan eil fhios dè an tiotal" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:315 #, fuzzy #| msgid "Type to search…" msgid "Type to search" msgstr "Sgrìobh airson lorg…" #: js/ui/overviewControls.js:393 msgid "Applications" msgstr "Aplacaidean" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:71 msgid "Overview" msgstr "Foir-shealladh" #: js/ui/padOsd.js:97 msgid "New shortcut…" msgstr "Ath-ghoirid ùr…" #: js/ui/padOsd.js:148 msgid "Application defined" msgstr "A-rèir na h-aplacaid" #: js/ui/padOsd.js:149 msgid "Show on-screen help" msgstr "Seall a’ chobhair air an sgrìn" #: js/ui/padOsd.js:150 msgid "Switch monitor" msgstr "Gearr leum gu monatair eile" #: js/ui/padOsd.js:151 msgid "Assign keystroke" msgstr "Sònraich buille-iuchrach dha" #: js/ui/padOsd.js:220 msgid "Done" msgstr "Deiseil" #: js/ui/padOsd.js:737 msgid "Edit…" msgstr "Deasaich…" #: js/ui/padOsd.js:779 js/ui/padOsd.js:896 msgid "None" msgstr "Chan eil gin" #: js/ui/padOsd.js:850 msgid "Press a button to configure" msgstr "Brùth air putan gus a rèiteachadh" #: js/ui/padOsd.js:851 msgid "Press Esc to exit" msgstr "Brùth air Esc airson fàgail" #: js/ui/padOsd.js:854 msgid "Press any key to exit" msgstr "Brùth air iuchair sam bith airson fàgail" #: js/ui/panel.js:241 msgid "Activities" msgstr "Gnìomhachdan" #: js/ui/panel.js:364 msgctxt "System menu in the top bar" msgid "System" msgstr "An siostam" #: js/ui/panel.js:480 msgid "Top Bar" msgstr "Bàr a’ bharra" #: js/ui/runDialog.js:58 #, fuzzy #| msgid "Enter a Command" msgid "Run a Command" msgstr "Cuir a-steach àithne" #: js/ui/runDialog.js:73 #, fuzzy #| msgid "Press Esc to exit" msgid "Press ESC to close" msgstr "Brùth air Esc airson fàgail" #: js/ui/runDialog.js:238 msgid "Restart is not available on Wayland" msgstr "Chan eil ath-thòiseachadh ri làimh air Wayland" #: js/ui/runDialog.js:243 msgid "Restarting…" msgstr "’Ga ath-thòiseachadh…" #: js/ui/screenShield.js:229 msgid "GNOME needs to lock the screen" msgstr "Feumaidh GNOME an sgrìn a ghlasadh" #. We could not become modal, so we can't activate the #. screenshield. The user is probably very upset at this #. point, but any application using global grabs is broken #. Just tell them to stop using this app #. #. XXX: another option is to kick the user into the gdm login #. screen, where we're not affected by grabs #: js/ui/screenShield.js:269 js/ui/screenShield.js:644 msgid "Unable to lock" msgstr "Cha ghabh a ghlasadh" #: js/ui/screenShield.js:270 js/ui/screenShield.js:645 msgid "Lock was blocked by an application" msgstr "Chaidh a’ ghlas a bhacadh le aplacaid" #: js/ui/screenshot.js:1148 #, fuzzy #| msgid "evolution" msgid "Selection" msgstr "evolution" #: js/ui/screenshot.js:1158 #, fuzzy #| msgid "Clear section" msgid "Area Selection" msgstr "Falamhaich an earrann" #: js/ui/screenshot.js:1163 #, fuzzy #| msgctxt "search-result" #| msgid "Lock Screen" msgid "Screen" msgstr "Glais an sgrìn" #: js/ui/screenshot.js:1173 #, fuzzy #| msgid "Screen Reader" msgid "Screen Selection" msgstr "Leughadair sgrìn" #: js/ui/screenshot.js:1178 #, fuzzy #| msgid "Windows" msgid "Window" msgstr "Uinneagan" #: js/ui/screenshot.js:1188 msgid "Window Selection" msgstr "" #: js/ui/screenshot.js:1225 msgid "Screenshot / Screencast" msgstr "" #: js/ui/screenshot.js:1261 #, fuzzy #| msgid "Show Errors" msgid "Show Pointer" msgstr "Seall na mearachdan" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1828 msgid "Screencasts" msgstr "" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast from 07-17-2013 10:00:46 PM.webm" #: js/ui/screenshot.js:1833 #, no-c-format msgid "Screencast from %d %t.webm" msgstr "" #. Translators: notification source name. #: js/ui/screenshot.js:1902 js/ui/screenshot.js:2115 msgid "Screenshot" msgstr "" #. Translators: notification title. #: js/ui/screenshot.js:1908 #, fuzzy #| msgid "Screen Keyboard" msgid "Screencast recorded" msgstr "Meur-chlàr air an sgrìn" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:1910 msgid "Click here to view the video." msgstr "" #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:1913 js/ui/screenshot.js:2129 #, fuzzy #| msgid "Show Details" msgid "Show in Files" msgstr "Seall am mion-fhiosrachadh" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2075 #, javascript-format msgid "Screenshot from %s" msgstr "" #. Translators: notification title. #: js/ui/screenshot.js:2121 msgid "Screenshot captured" msgstr "" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2123 msgid "You can paste the image from the clipboard." msgstr "" #: js/ui/screenshot.js:2176 js/ui/screenshot.js:2341 #, fuzzy #| msgid "Screen Reader" msgid "Screenshot taken" msgstr "Leughadair sgrìn" #: js/ui/search.js:815 msgid "Searching…" msgstr "’Ga lorg…" #: js/ui/search.js:817 msgid "No results." msgstr "Chan eil toradh ann." #: js/ui/search.js:948 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "%d a bharrachd" msgstr[1] "%d a bharrachd" msgstr[2] "%d a bharrachd" msgstr[3] "%d a bharrachd" #: js/ui/searchController.js:87 msgid "Search" msgstr "Lorg" #: js/ui/shellEntry.js:20 msgid "Copy" msgstr "Dèan lethbhreac" #: js/ui/shellEntry.js:25 msgid "Paste" msgstr "Cuir ann" #: js/ui/shellEntry.js:77 msgid "Show Text" msgstr "Seall an teacsa" #: js/ui/shellEntry.js:79 msgid "Hide Text" msgstr "Falaich an teacsa" #: js/ui/shellEntry.js:166 msgid "Caps lock is on." msgstr "" #: js/ui/shellMountOperation.js:286 #, fuzzy #| msgid "Volume" msgid "Hidden Volume" msgstr "Àirde na fuaime" #: js/ui/shellMountOperation.js:289 msgid "Windows System Volume" msgstr "" #: js/ui/shellMountOperation.js:292 #, fuzzy #| msgid "Mouse Keys" msgid "Uses Keyfiles" msgstr "Iuchraichean luchaige" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:299 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead." msgstr "" #: js/ui/shellMountOperation.js:307 msgid "PIM Number" msgstr "" #: js/ui/shellMountOperation.js:366 msgid "Remember Password" msgstr "Cuimhnich am facal-faire" #: js/ui/shellMountOperation.js:381 msgid "Unlock" msgstr "Neo-ghlais" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:392 #, fuzzy, javascript-format #| msgid "Open with %s" msgid "Open %s" msgstr "Fosgail le %s" #: js/ui/shellMountOperation.js:424 msgid "The PIM must be a number or empty." msgstr "" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:466 #, fuzzy, javascript-format #| msgid "Unable to lock" msgid "Unable to start %s" msgstr "Cha ghabh a ghlasadh" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:468 #, javascript-format msgid "Couldn’t find the %s application" msgstr "" #: js/ui/status/accessibility.js:34 msgid "Accessibility" msgstr "So-ruigsinneachd" #: js/ui/status/accessibility.js:44 msgid "High Contrast" msgstr "Iomsgaradh àrd" #: js/ui/status/accessibility.js:47 msgid "Zoom" msgstr "Sùm" #: js/ui/status/accessibility.js:54 msgid "Screen Reader" msgstr "Leughadair sgrìn" #: js/ui/status/accessibility.js:58 msgid "Screen Keyboard" msgstr "Meur-chlàr air an sgrìn" #: js/ui/status/accessibility.js:62 msgid "Visual Alerts" msgstr "Rabhaidhean lèirsinneach" #: js/ui/status/accessibility.js:65 msgid "Sticky Keys" msgstr "Iuchraichean steigeach" #: js/ui/status/accessibility.js:68 msgid "Slow Keys" msgstr "Iuchraichean slaodach" #: js/ui/status/accessibility.js:71 msgid "Bounce Keys" msgstr "Iuchraichean bocaidh" #: js/ui/status/accessibility.js:74 msgid "Mouse Keys" msgstr "Iuchraichean an luch-chlàir" #: js/ui/status/accessibility.js:131 msgid "Large Text" msgstr "Teacsa mòr" #: js/ui/status/bluetooth.js:54 msgid "Bluetooth" msgstr "Bluetooth" #: js/ui/status/bluetooth.js:67 js/ui/status/network.js:626 msgid "Bluetooth Settings" msgstr "Roghainnean Bluetooth" #. Translators: this is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:166 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d uidheam ceangailte" msgstr[1] "%d uidheam ceangailte" msgstr[2] "%d uidheaman ceangailte" msgstr[3] "%d uidheam ceangailte" #: js/ui/status/bluetooth.js:170 #, fuzzy #| msgid "Bluetooth" msgid "Bluetooth On" msgstr "Bluetooth" #: js/ui/status/bluetooth.js:172 #, fuzzy #| msgid "Bluetooth" msgid "Bluetooth Off" msgstr "Bluetooth" #: js/ui/status/brightness.js:39 msgid "Brightness" msgstr "Soilleireachd" #: js/ui/status/dwellClick.js:12 msgid "Single Click" msgstr "" #: js/ui/status/dwellClick.js:17 msgid "Double Click" msgstr "" #: js/ui/status/dwellClick.js:22 msgid "Drag" msgstr "" #: js/ui/status/dwellClick.js:27 msgid "Secondary Click" msgstr "" #: js/ui/status/dwellClick.js:36 msgid "Dwell Click" msgstr "" #: js/ui/status/keyboard.js:827 msgid "Keyboard" msgstr "Meur-chlàr" #: js/ui/status/keyboard.js:844 msgid "Show Keyboard Layout" msgstr "Seall co-dhealbhachd a’ mheur-chlàir" #: js/ui/status/location.js:231 js/ui/status/location.js:255 msgid "Location Enabled" msgstr "Tha an t-ionad an comas" #: js/ui/status/location.js:232 js/ui/status/location.js:256 msgid "Disable" msgstr "Cuir à comas" #: js/ui/status/location.js:234 msgid "Privacy Settings" msgstr "Roghainnean na prìobhaideachd" #: js/ui/status/location.js:254 msgid "Location In Use" msgstr "Tha an t-ionad ’ga chleachdadh" #: js/ui/status/location.js:258 msgid "Location Disabled" msgstr "Tha an t-ionad à comas" #: js/ui/status/location.js:259 msgid "Enable" msgstr "Cuir an comas" #: js/ui/status/location.js:386 msgid "Allow location access" msgstr "" #. Translators: %s is an application name #: js/ui/status/location.js:388 #, fuzzy, javascript-format #| msgid "Give %s access to your location?" msgid "The app %s wants to access your location" msgstr "A bheil thu airson inntrigeadh dhan ionad agad a thoirt dha %s?" #: js/ui/status/location.js:398 msgid "Location access can be changed at any time from the privacy settings." msgstr "" "’S urrainn dhut inntrigeadh an ionaid atharrachadh uair sam bith ann an " "roghainnean na prìobhaideachd." #: js/ui/status/network.js:71 msgid "" msgstr "" #. Translators: %s is a network identifier #: js/ui/status/network.js:436 js/ui/status/network.js:1370 #, javascript-format msgid "%s Off" msgstr "Tha %s dheth" #. Translators: %s is a network identifier #: js/ui/status/network.js:439 #, javascript-format msgid "%s Connected" msgstr "Ceangailte ri %s" #. Translators: this is for network devices that are physically present but are not #. under NetworkManager's control (and thus cannot be used in the menu); #. %s is a network identifier #: js/ui/status/network.js:444 #, javascript-format msgid "%s Unmanaged" msgstr "Chan eil %s ‘ga stiùireadh" #. Translators: %s is a network identifier #: js/ui/status/network.js:447 #, javascript-format msgid "%s Disconnecting" msgstr "A’ dì-cheangal o %s" #. Translators: %s is a network identifier #: js/ui/status/network.js:454 js/ui/status/network.js:1362 #, javascript-format msgid "%s Connecting" msgstr "A’ ceangal ri %s" #. Translators: this is for network connections that require some kind of key or password; %s is a network identifier #: js/ui/status/network.js:457 #, javascript-format msgid "%s Requires Authentication" msgstr "Tha %s ag iarraidh dearbhadh" #. Translators: this is for devices that require some kind of firmware or kernel #. module, which is missing; %s is a network identifier #: js/ui/status/network.js:465 #, javascript-format msgid "Firmware Missing For %s" msgstr "Tha bathar-an-sàs a dhìth air %s" #. Translators: this is for a network device that cannot be activated (for example it #. is disabled by rfkill, or it has no coverage; %s is a network identifier #: js/ui/status/network.js:469 #, javascript-format msgid "%s Unavailable" msgstr "Chan eil %s ri fhaighinn" #. Translators: %s is a network identifier #: js/ui/status/network.js:472 #, javascript-format msgid "%s Connection Failed" msgstr "Cha deach leinn ceangal ri %s" #: js/ui/status/network.js:484 msgid "Wired Settings" msgstr "Roghainnean le uèir" #: js/ui/status/network.js:531 msgid "Mobile Broadband Settings" msgstr "Roghainnean banna-leathainn mobile" #. Translators: %s is a network identifier #: js/ui/status/network.js:587 js/ui/status/network.js:1367 #, javascript-format msgid "%s Hardware Disabled" msgstr "Tha bathar-cruaidh %s à comas" #. Translators: this is for a network device that cannot be activated #. because it's disabled by rfkill (airplane mode); %s is a network identifier #: js/ui/status/network.js:591 #, javascript-format msgid "%s Disabled" msgstr "Tha %s à comas" #: js/ui/status/network.js:638 msgid "Connect to Internet" msgstr "Ceangail ris an eadar-lìon" #: js/ui/status/network.js:836 msgid "Airplane Mode is On" msgstr "Tha am modh itealain air" #: js/ui/status/network.js:837 msgid "Wi-Fi is disabled when airplane mode is on." msgstr "Tha WiFi à comas fhad ’s a tha am modh itealain air." #: js/ui/status/network.js:838 msgid "Turn Off Airplane Mode" msgstr "Cuir am modh itealain dheth" #: js/ui/status/network.js:847 msgid "Wi-Fi is Off" msgstr "Tha WiFi dheth" #: js/ui/status/network.js:848 msgid "Wi-Fi needs to be turned on in order to connect to a network." msgstr "Feumaidh tu WiFi a chur air gus ceangal ri lìonra." #: js/ui/status/network.js:849 msgid "Turn On Wi-Fi" msgstr "Cuir WiFi air" #: js/ui/status/network.js:877 msgid "Wi-Fi Networks" msgstr "Lìonraidhean WiFi" #: js/ui/status/network.js:881 msgid "Select a network" msgstr "Tagh lìonra" #: js/ui/status/network.js:917 msgid "No Networks" msgstr "Chan eil lìonra ann" #: js/ui/status/network.js:942 js/ui/status/rfkill.js:108 msgid "Use hardware switch to turn off" msgstr "Cleachd suidse bathair-chruaidh gus a chur dheth" #: js/ui/status/network.js:1253 msgid "Select Network" msgstr "Tagh lìonra" #: js/ui/status/network.js:1259 msgid "Wi-Fi Settings" msgstr "Roghainnean WiFi" #. Translators: %s is a network identifier #: js/ui/status/network.js:1358 #, javascript-format msgid "%s Hotspot Active" msgstr "Tha hotspot %s gnìomhach" #. Translators: %s is a network identifier #: js/ui/status/network.js:1373 #, javascript-format msgid "%s Not Connected" msgstr "Chan eil %s ceangailte" #: js/ui/status/network.js:1473 msgid "connecting…" msgstr "a’ dèanamh ceangal…" #. Translators: this is for network connections that require some kind of key or password #: js/ui/status/network.js:1476 msgid "authentication required" msgstr "tha feum air dearbhadh" #: js/ui/status/network.js:1478 msgid "connection failed" msgstr "dh’fhàillig leis a’ cheangal" #: js/ui/status/network.js:1524 msgid "VPN Settings" msgstr "Roghainnean VPN" #: js/ui/status/network.js:1541 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1551 msgid "VPN Off" msgstr "Tha VPN dheth" #: js/ui/status/network.js:1612 js/ui/status/rfkill.js:84 msgid "Network Settings" msgstr "Roghainnean an lìonraidh" #: js/ui/status/network.js:1640 #, javascript-format msgid "%s Wired Connection" msgid_plural "%s Wired Connections" msgstr[0] "%s cheangal uèirichte" msgstr[1] "%s cheangal uèirichte" msgstr[2] "%s ceanglaichean uèirichte" msgstr[3] "%s ceangal uèirichte" #: js/ui/status/network.js:1644 #, javascript-format msgid "%s Wi-Fi Connection" msgid_plural "%s Wi-Fi Connections" msgstr[0] "%s cheangal WiFi" msgstr[1] "%s cheangal WiFi" msgstr[2] "%s ceanglaichean WiFi" msgstr[3] "%s ceangal WiFi" #: js/ui/status/network.js:1648 #, javascript-format msgid "%s Modem Connection" msgid_plural "%s Modem Connections" msgstr[0] "%s cheangal mòdaim" msgstr[1] "%s cheangal mòdaim" msgstr[2] "%s ceanglaichean mòdaim" msgstr[3] "%s ceangal mòdaim" #: js/ui/status/network.js:1792 msgid "Connection failed" msgstr "Dh’fhàillig leis a’ cheangal" #: js/ui/status/network.js:1793 msgid "Activation of network connection failed" msgstr "Dh’fhàillig gnìomhachadh a’ cheangail ris an lìonra" #: js/ui/status/nightLight.js:63 msgid "Night Light Disabled" msgstr "Tha an solas-oidhche à comas" #: js/ui/status/nightLight.js:64 msgid "Night Light On" msgstr "Tha an solas-oidhche air" #: js/ui/status/nightLight.js:66 msgid "Resume" msgstr "Lean air" #: js/ui/status/nightLight.js:67 msgid "Disable Until Tomorrow" msgstr "Cuir à comas gus a-màireach" #: js/ui/status/power.js:51 js/ui/status/powerProfiles.js:57 msgid "Power Settings" msgstr "Roghainnean na cumhachd" #: js/ui/status/power.js:68 msgid "Fully Charged" msgstr "Air a làn-teàirrdseadh" #: js/ui/status/power.js:74 msgid "Not Charging" msgstr "" #. 0 is reported when UPower does not have enough data #. to estimate battery life #: js/ui/status/power.js:77 js/ui/status/power.js:83 msgid "Estimating…" msgstr "’Ga thuairmeas…" #. Translators: this is : Remaining () #: js/ui/status/power.js:91 #, javascript-format msgid "%d∶%02d Remaining (%d %%)" msgstr "%d∶%02d air fhàgail (%d%%)" #. Translators: this is : Until Full () #: js/ui/status/power.js:97 #, javascript-format msgid "%d∶%02d Until Full (%d %%)" msgstr "%d∶%02d gus am bi e làn (%d%%)" #. The icon label #: js/ui/status/power.js:145 #, javascript-format msgid "%d %%" msgstr "%d%%" #: js/ui/status/powerProfiles.js:19 msgctxt "Power profile" msgid "Performance" msgstr "" #: js/ui/status/powerProfiles.js:20 msgctxt "Power profile" msgid "Balanced" msgstr "" #: js/ui/status/powerProfiles.js:21 #, fuzzy #| msgid "Power Settings" msgctxt "Power profile" msgid "Power Saver" msgstr "Roghainnean na cumhachd" #: js/ui/status/remoteAccess.js:43 msgid "Screen is Being Shared" msgstr "Tha an sgrìn ’ga cho-roinneadh" #: js/ui/status/remoteAccess.js:45 msgid "Turn off" msgstr "Cuir dheth" #: js/ui/status/remoteAccess.js:149 #, fuzzy #| msgctxt "search-result" #| msgid "Lock Screen" msgid "Stop Screencast" msgstr "Glais an sgrìn" #. The menu only appears when airplane mode is on, so just #. statically build it as if it was on, rather than dynamically #. changing the menu contents. #: js/ui/status/rfkill.js:79 msgid "Airplane Mode On" msgstr "Tha am modh itealain air" #: js/ui/status/system.js:104 msgid "Lock" msgstr "Glais" #: js/ui/status/system.js:116 #, fuzzy #| msgid "Power Off" msgid "Power Off / Log Out" msgstr "Cuir dheth" #: js/ui/status/system.js:119 msgid "Suspend" msgstr "Cuir ’na dhàil" #: js/ui/status/system.js:130 #, fuzzy #| msgid "Restarting…" msgid "Restart…" msgstr "’Ga ath-thòiseachadh…" #: js/ui/status/system.js:141 #, fuzzy #| msgid "Power Off" msgid "Power Off…" msgstr "Cuir dheth" #: js/ui/status/system.js:154 msgid "Log Out" msgstr "Clàraich a-mach" #: js/ui/status/system.js:165 #, fuzzy #| msgid "Switch User" msgid "Switch User…" msgstr "Leum gu cleachdaiche eile" #: js/ui/status/thunderbolt.js:263 msgid "Thunderbolt" msgstr "Thunderbolt" #: js/ui/status/thunderbolt.js:324 msgid "Unknown Thunderbolt device" msgstr "Uidheam Thunderbolt nach aithne dhuinn" #: js/ui/status/thunderbolt.js:325 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" "Mhothaich sinn do dh’uidheam ùr fhad ’s an robh thu air falbh. Bris an " "ceangal is ceangail an uidheam a-rithist gus a chleachdadh." #: js/ui/status/thunderbolt.js:328 #, fuzzy #| msgid "Unknown Thunderbolt device" msgid "Unauthorized Thunderbolt device" msgstr "Uidheam Thunderbolt nach aithne dhuinn" #: js/ui/status/thunderbolt.js:329 msgid "" "New device has been detected and needs to be authorized by an administrator." msgstr "" #: js/ui/status/thunderbolt.js:335 msgid "Thunderbolt authorization error" msgstr "Mearachd dearbhadh Thunderbolt" #: js/ui/status/thunderbolt.js:336 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "Cha b’ urrainn dhuinn an t-uidheam Thunderbolt ùghdarrachadh: %s" #: js/ui/status/volume.js:158 msgid "Volume changed" msgstr "Dh’atharraich àirde na fuaime" #: js/ui/status/volume.js:220 msgid "Volume" msgstr "Àirde na fuaime" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:20 msgid "Mirror" msgstr "Sgàthanaich" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:29 msgid "Join Displays" msgstr "Cuir iad còmhla" #. Translators: this is for using only an external display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:39 msgid "External Only" msgstr "Taobh a-muigh a-mhàin" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:47 msgid "Built-in Only" msgstr "’Na bhroinn a-mhàin" #: js/ui/unlockDialog.js:554 msgid "Unlock Window" msgstr "Thoir a’ ghlas far na h-uinneige" #: js/ui/unlockDialog.js:563 msgid "Log in as another user" msgstr "Clàraich a-steach mar chleachdaiche eile" #: js/ui/welcomeDialog.js:36 #, javascript-format msgid "Welcome to GNOME %s" msgstr "" #: js/ui/welcomeDialog.js:37 msgid "If you want to learn your way around, check out the tour." msgstr "" #: js/ui/welcomeDialog.js:46 msgid "No Thanks" msgstr "" #: js/ui/welcomeDialog.js:51 msgid "Take Tour" msgstr "" #: js/ui/windowAttentionHandler.js:20 #, javascript-format msgid "“%s” is ready" msgstr "Tha “%s” deiseil" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:62 #, fuzzy #| msgid "Do you want to keep these display settings?" msgid "Keep these display settings?" msgstr "A bheil thu airson na roghainnean seallaidh seo a chumail?" #: js/ui/windowManager.js:72 msgid "Revert Settings" msgstr "Till na roghainnean" #: js/ui/windowManager.js:77 msgid "Keep Changes" msgstr "Cùm na h-atharraichean" #: js/ui/windowManager.js:97 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "" "Thèid na h-atharraichean air na roghainnean a thilleadh an ceann %d diog" msgstr[1] "" "Thèid na h-atharraichean air na roghainnean a thilleadh an ceann %d dhiog" msgstr[2] "" "Thèid na h-atharraichean air na roghainnean a thilleadh an ceann %d diogan" msgstr[3] "" "Thèid na h-atharraichean air na roghainnean a thilleadh an ceann %d diog" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:553 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #. Translators: entry in the window right click menu. #: js/ui/windowMenu.js:29 #, fuzzy #| msgctxt "search-result" #| msgid "Lock Screen" msgid "Take Screenshot" msgstr "Glais an sgrìn" #: js/ui/windowMenu.js:41 #, fuzzy #| msgid "Hide Text" msgid "Hide" msgstr "Falaich an teacsa" #: js/ui/windowMenu.js:48 #, fuzzy #| msgctxt "button" #| msgid "Restart" msgid "Restore" msgstr "Ath-thòisich" #: js/ui/windowMenu.js:52 msgid "Maximize" msgstr "Làn-mheudaich" #: js/ui/windowMenu.js:59 msgid "Move" msgstr "Gluais" #: js/ui/windowMenu.js:65 msgid "Resize" msgstr "Ath-mheudaich" #: js/ui/windowMenu.js:72 msgid "Move Titlebar Onscreen" msgstr "Gluais am bàr-tiotail air an sgrìn" #: js/ui/windowMenu.js:77 msgid "Always on Top" msgstr "Air a’ bhàrr an-còmhnaidh" #: js/ui/windowMenu.js:96 msgid "Always on Visible Workspace" msgstr "Air rùm-obrach a tha ri fhaicinn an-còmhnaidh" #: js/ui/windowMenu.js:110 msgid "Move to Workspace Left" msgstr "Gluais dhan rùm-obrach air an taobh chlì" #: js/ui/windowMenu.js:116 msgid "Move to Workspace Right" msgstr "Gluais dhan rùm-obrach air an taobh deas" #: js/ui/windowMenu.js:122 msgid "Move to Workspace Up" msgstr "Gluais dhan rùm-obrach aig a’ bhàrr" #: js/ui/windowMenu.js:128 msgid "Move to Workspace Down" msgstr "Gluais dhan rùm-obrach aig a’ bhonn" #: js/ui/windowMenu.js:146 msgid "Move to Monitor Up" msgstr "Gluais dhan mhonatair aig a’ bhàrr" #: js/ui/windowMenu.js:155 msgid "Move to Monitor Down" msgstr "Gluais dhan mhonatair aig a’ bhonn" #: js/ui/windowMenu.js:164 msgid "Move to Monitor Left" msgstr "Gluais dhan mhonatair air an taobh chlì" #: js/ui/windowMenu.js:173 msgid "Move to Monitor Right" msgstr "Gluais dhan mhonatair air an taobh deas" #: js/ui/windowMenu.js:181 msgid "Close" msgstr "Dùin" #: src/calendar-server/evolution-calendar.desktop.in:3 msgid "Evolution Calendar" msgstr "Mìosachan Evolution" #: src/main.c:419 subprojects/extensions-tool/src/main.c:321 msgid "Print version" msgstr "Seall an tionndadh" #: src/main.c:425 msgid "Mode used by GDM for login screen" msgstr "Am modh a chleachdas GDM airson na sgrìn clàraidh a-steach" #: src/main.c:431 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "Cleachd modh sònraichte airson na sgrìn clàraidh a-steach, can “gdm”" #: src/main.c:437 msgid "List possible modes" msgstr "Seall na modhan a tha ann" #: src/shell-app.c:305 msgctxt "program" msgid "Unknown" msgstr "Chan eil fhios" #: src/shell-app.c:569 #, c-format msgid "Failed to launch “%s”" msgstr "Cha b’ urrainn dhuinn “%s” a chur gu dol" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match." msgstr "Chan eil an dà fhacal-faire co-ionann." #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "Chan fhaod am facal-faire a bhith bàn" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "Leig an cleachdaiche an dearbhadh seachad" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/js/main.js:209 #: subprojects/extensions-app/data/ui/extensions-window.ui:18 #: subprojects/extensions-app/data/ui/extensions-window.ui:83 #, fuzzy #| msgid "Shell Extensions" msgid "Extensions" msgstr "Leudachain na slige" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 #: subprojects/extensions-app/js/main.js:210 #, fuzzy #| msgid "Configure GNOME Shell Extensions" msgid "Manage your GNOME Extensions" msgstr "Rèitich leudachain Slige GNOME" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:17 msgid "The GNOME Project" msgstr "" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:36 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "Rèitich leudachain Slige GNOME" #: subprojects/extensions-app/js/main.js:131 #: subprojects/extensions-app/js/main.js:142 msgid "No Matches" msgstr "" #: subprojects/extensions-app/js/main.js:170 #, javascript-format msgid "Remove “%s”?" msgstr "" #: subprojects/extensions-app/js/main.js:171 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "" #: subprojects/extensions-app/js/main.js:175 msgid "Remove" msgstr "" #: subprojects/extensions-app/js/main.js:208 msgid "translator-credits" msgstr "" #: subprojects/extensions-app/js/main.js:336 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" #: subprojects/extensions-app/js/main.js:478 msgid "The extension is incompatible with the current GNOME version" msgstr "" #: subprojects/extensions-app/js/main.js:481 #: subprojects/extensions-app/data/ui/extension-row.ui:52 msgid "The extension had an error" msgstr "" #: subprojects/extensions-app/data/ui/extension-row.ui:62 msgid "The extension can be updated" msgstr "" #: subprojects/extensions-app/data/ui/extension-row.ui:112 msgid "Website" msgstr "" #: subprojects/extensions-app/data/ui/extension-row.ui:134 msgid "Remove…" msgstr "" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Help" msgstr "" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 #, fuzzy #| msgid "Shell Extensions" msgid "About Extensions" msgstr "Leudachain na slige" #: subprojects/extensions-app/data/ui/extensions-window.ui:84 msgid "" "Extensions can cause performance and stability issues. Disable extensions if " "you encounter problems with your system." msgstr "" #: subprojects/extensions-app/data/ui/extensions-window.ui:98 msgid "Manually Installed" msgstr "" #: subprojects/extensions-app/data/ui/extensions-window.ui:99 #: subprojects/extensions-app/data/ui/extensions-window.ui:134 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" #: subprojects/extensions-app/data/ui/extensions-window.ui:112 #, fuzzy #| msgid "Built-in Only" msgid "Built-In" msgstr "’Na bhroinn a-mhàin" #: subprojects/extensions-app/data/ui/extensions-window.ui:133 #, fuzzy #| msgid "Shell Extensions" msgid "No Installed Extensions" msgstr "Leudachain na slige" #: subprojects/extensions-app/data/ui/extensions-window.ui:145 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" #: subprojects/extensions-app/data/ui/extensions-window.ui:175 msgid "Extension Updates Ready" msgstr "" #: subprojects/extensions-app/data/ui/extensions-window.ui:190 #, fuzzy #| msgid "Log Out" msgid "Log Out…" msgstr "Clàraich a-mach" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:222 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "" #: subprojects/extensions-tool/src/command-create.c:296 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" #: subprojects/extensions-tool/src/command-create.c:302 #: subprojects/extensions-tool/src/main.c:238 msgid "Name" msgstr "" #: subprojects/extensions-tool/src/command-create.c:316 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" #: subprojects/extensions-tool/src/command-create.c:322 #: subprojects/extensions-tool/src/main.c:241 msgid "Description" msgstr "" #: subprojects/extensions-tool/src/command-create.c:336 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" #: subprojects/extensions-tool/src/command-create.c:363 msgid "Choose one of the available templates:\n" msgstr "" #: subprojects/extensions-tool/src/command-create.c:377 msgid "Template" msgstr "" #: subprojects/extensions-tool/src/command-create.c:432 msgid "The unique identifier of the new extension" msgstr "" #: subprojects/extensions-tool/src/command-create.c:435 msgid "NAME" msgstr "" #: subprojects/extensions-tool/src/command-create.c:436 msgid "The user-visible name of the new extension" msgstr "" #: subprojects/extensions-tool/src/command-create.c:438 msgid "DESCRIPTION" msgstr "" #: subprojects/extensions-tool/src/command-create.c:440 msgid "A short description of what the extension does" msgstr "" #: subprojects/extensions-tool/src/command-create.c:443 msgid "TEMPLATE" msgstr "" #: subprojects/extensions-tool/src/command-create.c:444 msgid "The template to use for the new extension" msgstr "" #: subprojects/extensions-tool/src/command-create.c:450 msgid "Enter extension information interactively" msgstr "" #: subprojects/extensions-tool/src/command-create.c:458 #, fuzzy #| msgid "Disable user extensions" msgid "Create a new extension" msgstr "Cuir à comas leudachain a’ chleachdaiche" #: subprojects/extensions-tool/src/command-create.c:476 #: subprojects/extensions-tool/src/command-list.c:172 #, fuzzy #| msgid "Unknown artist" msgid "Unknown arguments" msgstr "Chan eil fhios cò an neach-ciùil" #: subprojects/extensions-tool/src/command-create.c:501 msgid "UUID, name and description are required" msgstr "" #: subprojects/extensions-tool/src/command-disable.c:46 #: subprojects/extensions-tool/src/command-enable.c:46 #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:64 #: subprojects/extensions-tool/src/main.c:146 msgid "Failed to connect to GNOME Shell\n" msgstr "" #: subprojects/extensions-tool/src/command-disable.c:53 #: subprojects/extensions-tool/src/command-enable.c:53 #, c-format msgid "Extension “%s” does not exist\n" msgstr "" #: subprojects/extensions-tool/src/command-disable.c:101 #, fuzzy #| msgid "Disable user extensions" msgid "Disable an extension" msgstr "Cuir à comas leudachain a’ chleachdaiche" #: subprojects/extensions-tool/src/command-disable.c:119 #: subprojects/extensions-tool/src/command-enable.c:119 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "" #: subprojects/extensions-tool/src/command-disable.c:124 #: subprojects/extensions-tool/src/command-enable.c:124 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "" #: subprojects/extensions-tool/src/command-enable.c:101 #, fuzzy #| msgid "Disable user extensions" msgid "Enable an extension" msgstr "Cuir à comas leudachain a’ chleachdaiche" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:155 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "" #: subprojects/extensions-tool/src/command-info.c:85 #, fuzzy #| msgid "No extensions installed" msgid "Show extensions info" msgstr "Cha deach leudachan a stàladh" #: subprojects/extensions-tool/src/command-install.c:173 msgid "Overwrite an existing extension" msgstr "" #: subprojects/extensions-tool/src/command-install.c:175 msgid "EXTENSION_BUNDLE" msgstr "" #: subprojects/extensions-tool/src/command-install.c:184 #, fuzzy #| msgid "UUIDs of extensions to enable" msgid "Install an extension bundle" msgstr "UUIDs nan leudachan ri an cur an comas" #: subprojects/extensions-tool/src/command-install.c:202 #, fuzzy #| msgid "No extensions installed" msgid "No extension bundle specified" msgstr "Cha deach leudachan a stàladh" #: subprojects/extensions-tool/src/command-install.c:208 msgid "More than one extension bundle specified" msgstr "" #: subprojects/extensions-tool/src/command-list.c:128 #, fuzzy #| msgid "Shell Extensions" msgid "Show user-installed extensions" msgstr "Leudachain na slige" #: subprojects/extensions-tool/src/command-list.c:131 #, fuzzy #| msgid "Shell Extensions" msgid "Show system-installed extensions" msgstr "Leudachain na slige" #: subprojects/extensions-tool/src/command-list.c:134 #, fuzzy #| msgid "Shell Extensions" msgid "Show enabled extensions" msgstr "Leudachain na slige" #: subprojects/extensions-tool/src/command-list.c:137 #, fuzzy #| msgid "Disable user extensions" msgid "Show disabled extensions" msgstr "Cuir à comas leudachain a’ chleachdaiche" #: subprojects/extensions-tool/src/command-list.c:140 #, fuzzy #| msgid "GNOME Shell Extension Preferences" msgid "Show extensions with preferences" msgstr "Roghainnean airson leudachain na Slige GNOME" #: subprojects/extensions-tool/src/command-list.c:143 #, fuzzy #| msgid "No extensions installed" msgid "Show extensions with updates" msgstr "Cha deach leudachan a stàladh" #: subprojects/extensions-tool/src/command-list.c:146 #, fuzzy #| msgid "Print version" msgid "Print extension details" msgstr "Seall an tionndadh" #: subprojects/extensions-tool/src/command-list.c:154 #, fuzzy #| msgid "Disable user extensions" msgid "List installed extensions" msgstr "Cuir à comas leudachain a’ chleachdaiche" #: subprojects/extensions-tool/src/command-pack.c:450 msgid "FILE" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:451 msgid "Additional source to include in the bundle" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:454 msgid "SCHEMA" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:455 msgid "A GSettings schema that should be included" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:457 #: subprojects/extensions-tool/src/command-pack.c:468 msgid "DIRECTORY" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:459 msgid "The directory where translations are found" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:461 msgid "DOMAIN" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:463 msgid "The gettext domain to use for translations" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "Overwrite an existing pack" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:470 msgid "The directory where the pack should be created" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:472 msgid "SOURCE_DIRECTORY" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:481 msgid "Create an extension bundle" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:501 msgid "More than one source directory specified" msgstr "" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "" #: subprojects/extensions-tool/src/command-prefs.c:87 #, fuzzy #| msgid "GNOME Shell Extension Preferences" msgid "Opens extension preferences" msgstr "Roghainnean airson leudachain na Slige GNOME" #: subprojects/extensions-tool/src/command-reset.c:58 #, fuzzy #| msgid "Disable user extensions" msgid "Reset an extension" msgstr "Cuir à comas leudachain a’ chleachdaiche" #: subprojects/extensions-tool/src/command-uninstall.c:49 #, fuzzy #| msgid "Disable user extensions" msgid "Cannot uninstall system extensions\n" msgstr "Cuir à comas leudachain a’ chleachdaiche" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, fuzzy, c-format #| msgid "Failed to launch “%s”" msgid "Failed to uninstall “%s”\n" msgstr "Cha b’ urrainn dhuinn “%s” a chur gu dol" #: subprojects/extensions-tool/src/command-uninstall.c:86 #, fuzzy #| msgid "Disable user extensions" msgid "Uninstall an extension" msgstr "Cuir à comas leudachain a’ chleachdaiche" #: subprojects/extensions-tool/src/main.c:72 msgid "Do not print error messages" msgstr "" #: subprojects/extensions-tool/src/main.c:244 msgid "Path" msgstr "" #: subprojects/extensions-tool/src/main.c:247 msgid "URL" msgstr "" #: subprojects/extensions-tool/src/main.c:250 msgid "Original author" msgstr "" #: subprojects/extensions-tool/src/main.c:253 #, fuzzy #| msgid "Print version" msgid "Version" msgstr "Seall an tionndadh" #: subprojects/extensions-tool/src/main.c:256 msgid "State" msgstr "" #: subprojects/extensions-tool/src/main.c:294 msgid "“version” takes no arguments" msgstr "" #: subprojects/extensions-tool/src/main.c:296 #: subprojects/extensions-tool/src/main.c:316 msgid "Usage:" msgstr "" #: subprojects/extensions-tool/src/main.c:299 msgid "Print version information and exit." msgstr "" #: subprojects/extensions-tool/src/main.c:314 #: subprojects/extensions-tool/src/main.c:317 msgid "COMMAND" msgstr "" #: subprojects/extensions-tool/src/main.c:317 msgid "[ARGS…]" msgstr "" #: subprojects/extensions-tool/src/main.c:319 msgid "Commands:" msgstr "" #: subprojects/extensions-tool/src/main.c:320 #, fuzzy #| msgid "Print version" msgid "Print help" msgstr "Seall an tionndadh" #: subprojects/extensions-tool/src/main.c:322 #, fuzzy #| msgid "Disable user extensions" msgid "Enable extension" msgstr "Cuir à comas leudachain a’ chleachdaiche" #: subprojects/extensions-tool/src/main.c:323 #, fuzzy #| msgid "Disable user extensions" msgid "Disable extension" msgstr "Cuir à comas leudachain a’ chleachdaiche" #: subprojects/extensions-tool/src/main.c:324 #, fuzzy #| msgid "Disable user extensions" msgid "Reset extension" msgstr "Cuir à comas leudachain a’ chleachdaiche" #: subprojects/extensions-tool/src/main.c:325 #, fuzzy #| msgid "Disable user extensions" msgid "Uninstall extension" msgstr "Cuir à comas leudachain a’ chleachdaiche" #: subprojects/extensions-tool/src/main.c:326 #, fuzzy #| msgid "Disable user extensions" msgid "List extensions" msgstr "Cuir à comas leudachain a’ chleachdaiche" #: subprojects/extensions-tool/src/main.c:327 #: subprojects/extensions-tool/src/main.c:328 #, fuzzy #| msgid "No extensions installed" msgid "Show extension info" msgstr "Cha deach leudachan a stàladh" #: subprojects/extensions-tool/src/main.c:329 #, fuzzy #| msgid "GNOME Shell Extension Preferences" msgid "Open extension preferences" msgstr "Roghainnean airson leudachain na Slige GNOME" #: subprojects/extensions-tool/src/main.c:330 #, fuzzy #| msgid "Shell Extensions" msgid "Create extension" msgstr "Leudachain na slige" #: subprojects/extensions-tool/src/main.c:331 #, fuzzy #| msgid "Shell Extensions" msgid "Package extension" msgstr "Leudachain na slige" #: subprojects/extensions-tool/src/main.c:332 #, fuzzy #| msgid "UUIDs of extensions to enable" msgid "Install extension bundle" msgstr "UUIDs nan leudachan ri an cur an comas" #: subprojects/extensions-tool/src/main.c:334 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1907 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u às-chur" msgstr[1] "%u às-chur" msgstr[2] "%u às-chuir" msgstr[3] "%u às-chur" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1917 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u ion-chur" msgstr[1] "%u ion-chur" msgstr[2] "%u ion-chuir" msgstr[3] "%u ion-chur" #: subprojects/gvc/gvc-mixer-control.c:2867 msgid "System Sounds" msgstr "Fuaimean an t-siostaim" #~ msgid "App Picker View" #~ msgstr "Sealladh roghnaichear nan aplacaid" #~ msgid "Index of the currently selected view in the application picker." #~ msgstr "Inneacs an t-seallaidh làithrich ann an roghnaichear nan aplacaid." #~ msgid "" #~ "Keybinding that pauses and resumes all running tweens, for debugging " #~ "purposes" #~ msgstr "" #~ "Nasgadh iuchrach a chuireas gach tween a tha ’ga ruith ’na stad ’s a " #~ "thòisicheas orra a-rithist a chum dì-bhugachaidh" #~ msgid "Which keyboard to use" #~ msgstr "Am meur-chlàr ri chleachdadh" #~ msgid "The type of keyboard to use." #~ msgstr "An seòrsa de mheur-chlàr a thèid a chleachdadh." #~ msgid "network-workgroup" #~ msgstr "network-workgroup" #~ msgid "There was an error loading the preferences dialog for %s:" #~ msgstr "Thachair mearachd le luchdadh còmhradh nan roghainnean airson %s:" #~ msgid "Next" #~ msgstr "Air adhart" #~ msgctxt "button" #~ msgid "Sign In" #~ msgstr "Clàraich a-steach" #~ msgid "Frequently used applications will appear here" #~ msgstr "Nochdaidh aplacaidean a chleachdas tu gu tric an-seo" #~ msgid "Frequent" #~ msgstr "An fheadhainn thric" #~ msgid "All" #~ msgstr "Na h-uile" #~ msgid "Remove from Favorites" #~ msgstr "Thoir air falbh o na h-annsachdan" #~ msgid "Add to Favorites" #~ msgstr "Cuir ris na h-annsachdan" #~ msgctxt "calendar heading" #~ msgid "%A, %B %d, %Y" #~ msgstr "%A, %d %B, %Y" #~ msgid "Password:" #~ msgstr "Facal-faire:" #~ msgid "Type again:" #~ msgstr "Am facal-faire a-rithist:" #~ msgid "Password: " #~ msgstr "Facal-faire: " #~ msgid "Authentication required by wireless network" #~ msgstr "Tha an lìonra uèirleas ag iarraidh dearbhadh" #~ msgid "Mobile broadband network password" #~ msgstr "Facal-faire an lìonraidh banna-leathainn mobile" #~ msgid "%s all day." #~ msgstr "%s fad an latha." #~ msgid "%s, then %s later." #~ msgstr "%s ’s %s an uairsin." #~ msgid "%s, then %s, followed by %s later." #~ msgstr "%s ’s %s an uairsin ’s %s an uairsin." #~ msgid "Feels like %s." #~ msgstr "A’ faireachdainn mar %s." #~ msgid "toggle-switch-us" #~ msgstr "toggle-switch-intl" #~ msgid "%A, %B %d" #~ msgstr "%A, %d %B" #~ msgid "%d new message" #~ msgid_plural "%d new messages" #~ msgstr[0] "%d teachdaireachd ùr" #~ msgstr[1] "%d theachdaireachd ùr" #~ msgstr[2] "%d teachdaireachdan ùra" #~ msgstr[3] "%d teachdaireachd ùr" #~ msgid "%d new notification" #~ msgid_plural "%d new notifications" #~ msgstr[0] "%d bhrath ùr" #~ msgstr[1] "%d bhrath ùr" #~ msgstr[2] "%d brathan ùra" #~ msgstr[3] "%d brath ùr" #~ msgid "Off" #~ msgstr "Dheth" #~ msgid "On" #~ msgstr "Air" #~ msgid "Account Settings" #~ msgstr "Roghainnean a’ chunntais" #~ msgid "Orientation Lock" #~ msgstr "Glais na comhair" #~ msgid "Minimize" #~ msgstr "Fìor-lùghdaich" #~ msgid "Unmaximize" #~ msgstr "Neo-làn-mheudaich" #~ msgctxt "search-result" #~ msgid "Power off" #~ msgstr "Cuir a’ chumhachd dheth" #~ msgctxt "search-result" #~ msgid "Log out" #~ msgstr "Clàraich a-mach" #~ msgctxt "search-result" #~ msgid "Switch user" #~ msgstr "Dèan suids eadar cleachdaichean" #~ msgid "Web Authentication Redirect" #~ msgstr "Ath-stiùireadh an dearbhaidh-lìn" #~ msgid "Events" #~ msgstr "Tachartasan" #~ msgid "Notifications" #~ msgstr "Brathan" #~ msgid "Hide tray" #~ msgstr "Falaich an treidhe" #~ msgid "Status Icons" #~ msgstr "Ìomhaigheagan staide" #~ msgid "Media" #~ msgstr "Meadhanan" #~ msgid "Not In Use" #~ msgstr "Chan eil e 'ga chleachdadh" #~ msgid "%d x %d" #~ msgstr "%d x %d" #~ msgid "Use as Internet connection" #~ msgstr "Cleachd e mar cheangal ris an eadar-lìon" #~ msgid "GNOME Shell (wayland compositor)" #~ msgstr "Slige GNOME (co-dhèanadair wayland)" 07070100000235000081A40000000000000000000000016712993F0001953D000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/gl.po# Galician translation for gnome-shell. # Copyright (C) 2012 Leandro Regueiro # This file is distributed under the same license as the gnome-shell package. # Proxecto Trasno - Adaptación do software libre á lingua galega: Se desexas # colaborar connosco, podes atopar máis información en http://www.trasno.net # # # Antón Méixome , 2009. # Leandro Regueiro , 2012. # Fran Diéguez , 2009-2022. # Fran Dieguez , 2012-2023. # msgid "" msgstr "" "Project-Id-Version: gnome-shell master\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues/\n" "POT-Creation-Date: 2024-08-06 15:18+0000\n" "PO-Revision-Date: 2024-09-02 23:25+0200\n" "Last-Translator: Fran Dieguez \n" "Language-Team: Galician \n" "Language: gl\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-DL-Branch: main\n" "X-DL-Domain: po\n" "X-DL-Module: gnome-shell\n" "X-DL-State: None\n" "X-DL-Team: gl\n" "X-Generator: Poedit 3.5\n" "X-Project-Style: gnome\n" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "Iniciadores" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate pinned app 1" msgstr "Activar aplicación fixada 1" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate pinned app 2" msgstr "Activar aplicación fixada 2" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate pinned app 3" msgstr "Activar aplicación fixada 3" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate pinned app 4" msgstr "Activar aplicación fixada 4" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate pinned app 5" msgstr "Activar aplicación fixada 5" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate pinned app 6" msgstr "Activar aplicación fixada 6" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate pinned app 7" msgstr "Activar aplicación fixada 7" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate pinned app 8" msgstr "Activar aplicación fixada 8" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate pinned app 9" msgstr "Activar aplicación fixada 9" #: data/50-gnome-shell-launchers.xml:46 msgid "Open new window of pinned app 1" msgstr "Abrir unha nova xanela da aplicación fixada 1" #: data/50-gnome-shell-launchers.xml:50 msgid "Open new window of pinned app 2" msgstr "Abrir unha nova xanela da aplicación fixada 2" #: data/50-gnome-shell-launchers.xml:54 msgid "Open new window of pinned app 3" msgstr "Abrir unha nova xanela da aplicación fixada 3" #: data/50-gnome-shell-launchers.xml:58 msgid "Open new window of pinned app 4" msgstr "Abrir unha nova xanela da aplicación fixada 4" #: data/50-gnome-shell-launchers.xml:62 msgid "Open new window of pinned app 5" msgstr "Abrir unha nova xanela da aplicación fixada 5" #: data/50-gnome-shell-launchers.xml:66 msgid "Open new window of pinned app 6" msgstr "Abrir unha nova xanela da aplicación fixada 6" #: data/50-gnome-shell-launchers.xml:70 msgid "Open new window of pinned app 7" msgstr "Abrir unha nova xanela da aplicación fixada 7" #: data/50-gnome-shell-launchers.xml:74 msgid "Open new window of pinned app 8" msgstr "Abrir unha nova xanela da aplicación fixada 8" #: data/50-gnome-shell-launchers.xml:78 msgid "Open new window of pinned app 9" msgstr "Abrir unha nova xanela da aplicación fixada 9" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2274 msgid "Screenshots" msgstr "Capturas de pantalla" #: data/50-gnome-shell-screenshots.xml:9 data/org.gnome.shell.gschema.xml.in:287 msgid "Take a screenshot interactively" msgstr "Tomar unha captura de forma interactiva" #: data/50-gnome-shell-screenshots.xml:12 data/org.gnome.shell.gschema.xml.in:299 msgid "Take a screenshot" msgstr "Tomar unha captura" #: data/50-gnome-shell-screenshots.xml:15 data/org.gnome.shell.gschema.xml.in:295 msgid "Take a screenshot of a window" msgstr "Tomar unha captura dunha xanela" #: data/50-gnome-shell-screenshots.xml:18 data/org.gnome.shell.gschema.xml.in:291 msgid "Record a screencast interactively" msgstr "Gravar un vídeo da pantalla de forma interactiva" #: data/50-gnome-shell-system.xml:6 js/ui/messageTray.js:1298 msgid "System" msgstr "Sistema" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "Mostrar a lista de notificacións" #: data/50-gnome-shell-system.xml:12 msgid "Open the quick settings menu" msgstr "Abrir o menú rápido de preferencias" #: data/50-gnome-shell-system.xml:15 msgid "Focus the active notification" msgstr "Enfocar a notificación activa" #: data/50-gnome-shell-system.xml:18 msgid "Show the overview" msgstr "Mostrar a vista xeral" #: data/50-gnome-shell-system.xml:21 msgid "Show all apps" msgstr "Mostrar todas as aplicacións" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "GNOME Shell" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "Xestor de xanelas e inicio de aplicacións" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" "Activar as ferramentas internas útiles para os desenvolvedores e probadores " "usando Alt-F2" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Permite o acceso ás ferramentas de depuración e monitorización internas usando " "o diálogo Alt-F2." #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "UUIDs das extensións a activar" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "As extensións do GNOME Shell teñen unha propiedade UUID; esta chave lista as " "extensións que deberían cargarse. Calquera extensión que queira ser cargada " "debe estar nesta lista. Pode modificar esta lista cos métodos EnableExtension " "e DisableExtension de D-Bus en org.gnome.Shell." #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "UUIDs das extensións para forzar a súa desactivación" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" "As extensións do GNOME Shell teñen unha propiedade UUID; esta chave lista as " "extensións que deberían cargarse, incluso se se cargan como parte do modo " "actual. Tamén pode manipular esta lista cos métodos de D-Bus EnableExtension e " "DisableExtension en org.gnome.Shell. Esta chave toma precedencia sobre a " "configuración «enabled-extensions»." #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "Desactivar as extensións do usuario" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" "Desactiva todas as extensións que o usuario activou sen cambiar á preferencia " "«enabled-extensions»." #: data/org.gnome.shell.gschema.xml.in:45 msgid "Allow extension installation" msgstr "Permitir a instalación de extensións" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "Allow users to install extensions in their home folder. If disabled, the " "InstallRemoteExtension D-Bus method will fail, and extensions are only loaded " "from system directories on startup. It does not affect extensions that are " "already loaded, so a change only takes full effect on the next login." msgstr "" "Permitir aos usuarios instalar extensións no seu cartafol persoal. Se está " "desactivado, o método D-Bus InstallRemoteExtension fallará e as extensións só " "se poderán cargar en directorios do sistema ao arrincar. Isto non afecta ás " "extensións que xa foron cargadas, polo que o cambio só terá efecto no seguinte " "inicio de sesión." #: data/org.gnome.shell.gschema.xml.in:56 msgid "Disables the validation of extension version compatibility" msgstr "Desactiva a validación da compatibilidade de versión das extensións" #: data/org.gnome.shell.gschema.xml.in:57 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to load " "all extensions regardless of the versions they claim to support." msgstr "" "GNOME Shell só cargará extensións que reclamen compatibilidade coa versión " "executándose actualmente. Ao activar esta opción desactivarase esta " "comprobación e probarase a cagar todas as extensións sen importar que versión " "reclaman." #: data/org.gnome.shell.gschema.xml.in:65 msgid "List of desktop file IDs for favorite applications" msgstr "Lista de ID de ficheiros de escritorio para as aplicacións preferidas" #: data/org.gnome.shell.gschema.xml.in:66 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" "As aplicacións que corresponden a estes identificadores mostraranse na área de " "preferidos." #: data/org.gnome.shell.gschema.xml.in:73 msgid "History for command (Alt-F2) dialog" msgstr "Historial do diálogo de ordes (Alt-F2)" #. Translators: looking glass is a debugger and inspector tool, see #. https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/docs/looking- #. glass.md #: data/org.gnome.shell.gschema.xml.in:78 msgid "History for the looking glass dialog" msgstr "Historial do diálogo de «looking glass»" #: data/org.gnome.shell.gschema.xml.in:82 msgid "Always show the “Log Out” action in the system menu" msgstr "Mostrar sempre o elemento de menú «Saír da sesión» no menú de usuario" #: data/org.gnome.shell.gschema.xml.in:83 msgid "" "This key overrides the automatic hiding of the “Log out” action in the system " "menu for logged-in situations where there is a single, local, non-system user " "and only a single available session type (e.g. GNOME on Wayland)." msgstr "" "Esta chave sobrescribe a ocultación automática do elemento de menú da acción " "«Saír da sesión» en situacións con un usuario único, local e non do sistema ou " "un único tipo de sesión dispoñíbel (p.ex. GNOME en Wayland)" #: data/org.gnome.shell.gschema.xml.in:92 msgid "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "Indica se se debe lembrar o contrasinal para montar os sistemas de ficheiros " "cifrados ou remotos" #: data/org.gnome.shell.gschema.xml.in:93 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a “Remember " "Password” checkbox will be present. This key sets the default state of the " "checkbox." msgstr "" "O shell non solicitará o contrasinal cando un dispositivo cifrado ou un " "sistema de ficheiros remoto se monta. Se o contrasinal se pode gardar para o " "futuro aparecerá a opción «Lembrar contrasinal» Esta chave estabelece o estado " "por omisión da opción." #: data/org.gnome.shell.gschema.xml.in:102 msgid "The last selected non-default power profile" msgstr "O último perfil de enerxía seleccionado non predeterminado" #: data/org.gnome.shell.gschema.xml.in:103 msgid "" "Some systems support more than two power profiles. In order to still support " "toggling between two profiles, this key records the last selected non-default " "profile." msgstr "" "Algúns sistemas admiten máis dun perfil de enerxía. Para continuar a " "compatibilidade de trocar entre os dous perfiles esta chave rexistra o último " "perfil non predeterminado seleccionado." #: data/org.gnome.shell.gschema.xml.in:111 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "A última versión do diálogo de «Benvida a GNOME» mostrouse para" #: data/org.gnome.shell.gschema.xml.in:112 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can be " "used to effectively disable the dialog." msgstr "" "Esta chave determina para que versión do diálogo de «Benvida de GNOME» se " "mostrou por última vez. Unha cadea baleira representa unha versión antiga " "posíbel, e un número moi grande significa versións que non existen aínda. Este " "número enorme pode usarse para desactivar efectivamente o diálogo." #: data/org.gnome.shell.gschema.xml.in:145 msgid "Layout of the app picker" msgstr "Disposición do selector de aplicacións" #: data/org.gnome.shell.gschema.xml.in:146 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are stored " "in the order they appear in GNOME Shell. Each page contains an “application " "id” → 'data' pair. Currently, the following values are stored as 'data': • " "“position”: the position of the application icon in the page" msgstr "" "Disposición do selector de aplicacións. Cada entrada no array é unha páxina. " "As páxinas están almacenadas na orde na que aparecen no Shell de GNOME. Cada " "páxina contén un par «id de aplicación» → «datos». Actualmente, gárdanse os " "seguintes valores: • «position»: A posición da icona da aplicación na páxina" #: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:172 msgid "Keybinding to shift between overview states" msgstr "Combinación de teclas para cambiar entre os estados da vista" #: data/org.gnome.shell.gschema.xml.in:166 msgid "Keybinding to shift between session, window picker and app grid" msgstr "" "Combinación de teclas para cambiar entre a sesión, o selector de xanelas e a " "grade de aplicacións" #: data/org.gnome.shell.gschema.xml.in:173 msgid "Keybinding to shift between app grid, window picker and session" msgstr "" "Combinación de teclas para cambiar entre a grade de aplicacións, o selector de " "xanelas e a sesión" #: data/org.gnome.shell.gschema.xml.in:179 msgid "Keybinding to open the “Show Applications” view" msgstr "Combinación de teclas para abrir a vista «Mostrar aplicacións»" #: data/org.gnome.shell.gschema.xml.in:180 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "" "Combinación de teclas para abrir a vista \"Mostrar aplicacións\" da Vista xera " "de Actividades." #: data/org.gnome.shell.gschema.xml.in:187 msgid "Keybinding to open the overview" msgstr "Combinación de teclas para abrir a Vista xeral" #: data/org.gnome.shell.gschema.xml.in:188 msgid "Keybinding to open the Activities Overview." msgstr "Combinación de teclas para abrir a Vista de actividades." #: data/org.gnome.shell.gschema.xml.in:194 msgid "Keybinding to toggle the visibility of the notification list" msgstr "" "Combinación de teclas para trocar a visibilidade da área de notificacións" #: data/org.gnome.shell.gschema.xml.in:195 msgid "Keybinding to toggle the visibility of the notification list." msgstr "" "Combinación de teclas para trocar a visibilidade da lista de notificacións." #: data/org.gnome.shell.gschema.xml.in:201 msgid "Keybinding to toggle the quick settings menu" msgstr "Combinación de teclas para trocar o menú rápido de preferencias" #: data/org.gnome.shell.gschema.xml.in:202 msgid "Keybinding to toggle the quick settings menu." msgstr "Combinación de teclas para trocar o menú rápido de preferencias." #: data/org.gnome.shell.gschema.xml.in:208 msgid "Keybinding to focus the active notification" msgstr "Combinación de teclas para enfocar a notificación activa" #: data/org.gnome.shell.gschema.xml.in:209 msgid "Keybinding to focus the active notification." msgstr "Combinación de teclas para enfocar a notificación activa." #: data/org.gnome.shell.gschema.xml.in:215 msgid "Switch to application 1" msgstr "Trocar á aplicación 1" #: data/org.gnome.shell.gschema.xml.in:219 msgid "Switch to application 2" msgstr "Trocar á aplicación 2" #: data/org.gnome.shell.gschema.xml.in:223 msgid "Switch to application 3" msgstr "Trocar á aplicación 3" #: data/org.gnome.shell.gschema.xml.in:227 msgid "Switch to application 4" msgstr "Trocar á aplicación 4" #: data/org.gnome.shell.gschema.xml.in:231 msgid "Switch to application 5" msgstr "Trocar á aplicación 5" #: data/org.gnome.shell.gschema.xml.in:235 msgid "Switch to application 6" msgstr "Trocar á aplicación 6" #: data/org.gnome.shell.gschema.xml.in:239 msgid "Switch to application 7" msgstr "Trocar á aplicación 7" #: data/org.gnome.shell.gschema.xml.in:243 msgid "Switch to application 8" msgstr "Trocar á aplicación 8" #: data/org.gnome.shell.gschema.xml.in:247 msgid "Switch to application 9" msgstr "Trocar á aplicación 9" #: data/org.gnome.shell.gschema.xml.in:251 msgid "Open a new instance of application 1" msgstr "Abrir unha nova instancia da aplicación 1" #: data/org.gnome.shell.gschema.xml.in:255 msgid "Open a new instance of application 2" msgstr "Abrir unha nova instancia da aplicación 2" #: data/org.gnome.shell.gschema.xml.in:259 msgid "Open a new instance of application 3" msgstr "Abrir unha nova instancia da aplicación 3" #: data/org.gnome.shell.gschema.xml.in:263 msgid "Open a new instance of application 4" msgstr "Abrir unha nova instancia da aplicación 4" #: data/org.gnome.shell.gschema.xml.in:267 msgid "Open a new instance of application 5" msgstr "Abrir unha nova instancia da aplicación 5" #: data/org.gnome.shell.gschema.xml.in:271 msgid "Open a new instance of application 6" msgstr "Abrir unha nova instancia da aplicación 6" #: data/org.gnome.shell.gschema.xml.in:275 msgid "Open a new instance of application 7" msgstr "Abrir unha nova instancia da aplicación 7" #: data/org.gnome.shell.gschema.xml.in:279 msgid "Open a new instance of application 8" msgstr "Abrir unha nova instancia da aplicación 8" #: data/org.gnome.shell.gschema.xml.in:283 msgid "Open a new instance of application 9" msgstr "Abrir unha nova instancia da aplicación 9" #: data/org.gnome.shell.gschema.xml.in:308 #: data/org.gnome.shell.gschema.xml.in:335 msgid "Limit switcher to current workspace." msgstr "Restrinxir o trocador ao espazo de traballo actual." #: data/org.gnome.shell.gschema.xml.in:309 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "Se é verdadeiro, só se mostran no trocador as aplicacións que teñen xanelas no " "espazo de traballo actual. No outro caso, incluiranse todas as aplicacións." #: data/org.gnome.shell.gschema.xml.in:326 msgid "The application icon mode." msgstr "O modo da icona da aplicación." #: data/org.gnome.shell.gschema.xml.in:327 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities are " "“thumbnail-only” (shows a thumbnail of the window), “app-icon-only” (shows " "only the application icon) or “both”." msgstr "" "Configura como se mostran as xanelas no intercambiador. As opcións posíbeis " "son «thumbnail-only» (mostra unha miniatura da xanela, «app-icon-only» (só " "mostra a icona da aplicación) ou «both» (móstranse ambas cosas)." #: data/org.gnome.shell.gschema.xml.in:336 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "Se é verdadeiro, só se mostrarán no trocador as xanelas do espazo de traballo " "actual. Doutra maneira inclúense todos as aplicacións." #: data/org.gnome.shell.gschema.xml.in:346 msgid "Locations" msgstr "Localizacións" #: data/org.gnome.shell.gschema.xml.in:347 msgid "The locations to show in world clocks" msgstr "As localizacións a mostrar nos reloxos do mundo" #: data/org.gnome.shell.gschema.xml.in:357 msgid "Automatic location" msgstr "Localización automática" #: data/org.gnome.shell.gschema.xml.in:358 msgid "Whether to fetch the current location or not" msgstr "Indica se obter a localización actual ou non" #: data/org.gnome.shell.gschema.xml.in:365 msgid "Location" msgstr "Localización" #: data/org.gnome.shell.gschema.xml.in:366 msgid "The location for which to show a forecast" msgstr "A localización para cal obter a predición meteorolóxica" #. Keep in sync with subprojects/extensions-app #: data/org.gnome.Shell.Extensions.desktop.in.in:5 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/data/ui/extensions-window.ui:57 msgid "Extensions" msgstr "Extensións" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "Inicio de sesión de rede" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:275 msgid "Something’s gone wrong" msgstr "Algo foi mal" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this extension " "can’t be displayed. We recommend that you report the issue to the extension " "authors." msgstr "" "Sentímolo, pero houbo un problema: a configuración para esta extensión non " "pode mostrarse. Recomendámoslle que informe do problema aos autores da " "extensión." #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "Detalles técnicos" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "Sitio web" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 msgid "Visit extension homepage" msgstr "Visitar o sitio web da extensión" #: js/gdm/authPrompt.js:151 js/gdm/loginDialog.js:465 #: js/ui/audioDeviceSelection.js:66 js/ui/components/networkAgent.js:113 #: js/ui/components/polkitAgent.js:144 js/ui/endSessionDialog.js:437 #: js/ui/extensionDownloader.js:276 js/ui/shellMountOperation.js:382 #: js/ui/shellMountOperation.js:392 msgid "Cancel" msgstr "Cancelar" #: js/gdm/authPrompt.js:317 js/ui/components/networkAgent.js:213 #: js/ui/components/networkAgent.js:233 js/ui/components/networkAgent.js:265 #: js/ui/components/networkAgent.js:298 js/ui/components/networkAgent.js:337 #: js/ui/components/networkAgent.js:350 js/ui/components/polkitAgent.js:286 #: js/ui/shellMountOperation.js:332 msgid "Password" msgstr "Contrasinal" #: js/gdm/loginDialog.js:326 msgid "Choose Session" msgstr "Escolla unha sesión" #. Translators: is running for #: js/gdm/loginDialog.js:423 #, javascript-format msgid "" "Remote login is not possible because a remote session is already running for " "%s. To login remotely, you must log out from the remote session or force stop " "it." msgstr "" "O inicio de sesión remoto non é posíbel porque xa hai unha sesión remota " "executándose para %s. Para iniciar sesión de forma remota debe pechar a sesión " "remota ou pechala de forma forzada." #. Translators: is running for #: js/gdm/loginDialog.js:426 #, javascript-format msgid "" "Login is not possible because a remote session is already running for %s. To " "login, you must log out from the remote session or force stop it." msgstr "" "O inicio de sesión non é posíbel porque a sesión remota xa está executándose " "para %s. Para iniciar sesión debe pechar a sesión da sesión remota ou pechala " "de forma forzada." #. Translators: is running for #: js/gdm/loginDialog.js:429 #, javascript-format msgid "" "Remote login is not possible because a local session is already running for " "%s. To login remotely, you must log out from the local session or force stop " "it." msgstr "" "O inicio de sesión remoto non é posíbel porque xa hai unha sesión local en " "execución para %s. Para iniciar sesión de forma remota debe pechar a sesión " "local primeiro ou detela de forma forzada." #. Translators: is running for #: js/gdm/loginDialog.js:432 #, javascript-format msgid "" "Login is not possible because a session is already running for %s. To login, " "you must log out from the session or force stop it." msgstr "" "Non é posíbel iniciar sesión porque a sesión xa está en execución para %s. " "Para iniciar sesión debe pechala antes ou detela de forma forzada." #: js/gdm/loginDialog.js:441 msgid "Session Already Running" msgstr "A sesión xa está en execución" #: js/gdm/loginDialog.js:453 msgid "" "Force stopping will quit any running apps and processes, and could result in " "data loss" msgstr "" "Deter forzosamente pechará as aplicacións e procesos en execución e podería " "resultar en perda de datos" #: js/gdm/loginDialog.js:473 msgid "Force Stop" msgstr "Forzar peche" #: js/gdm/loginDialog.js:541 msgid "Not listed?" msgstr "Non está na lista?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:1009 #, javascript-format msgid "(e.g., user or %s)" msgstr "(p.ex., usuario ou %s)" #: js/gdm/loginDialog.js:1014 js/ui/components/networkAgent.js:257 #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:326 msgid "Username" msgstr "Nome de usuario" #: js/gdm/loginDialog.js:1080 msgid "Login Attempt Timed Out" msgstr "Esgotouse o tempo de espera do intento de inicio de sesión" #: js/gdm/loginDialog.js:1081 msgid "Login took too long, please try again" msgstr "O inicio de sesión tardou demasiado, ténteo de novo" #: js/gdm/loginDialog.js:1426 msgid "Login Window" msgstr "Xanela de inicio de sesión" #: js/gdm/util.js:496 msgid "Authentication error" msgstr "Erro de autenticación" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:727 msgid "(or swipe finger across reader)" msgstr "(ou pase o dedo sobre o lector)" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader #. instead #: js/gdm/util.js:732 msgid "(or place finger on reader)" msgstr "(ou pouse o dedo sobre o lector)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:91 msgctxt "search-result" msgid "Power Off" msgstr "Apagar" #. Translators: A list of keywords that match the power-off action, separated #. by semicolons #: js/misc/systemActions.js:94 msgid "power off;poweroff;shutdown;halt;stop" msgstr "apagar;reiniciar;deter;parar" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:99 msgctxt "search-result" msgid "Restart" msgstr "Reiniciar" #. Translators: A list of keywords that match the restart action, separated by #. semicolons #: js/misc/systemActions.js:102 msgid "reboot;restart;" msgstr "reiniciar;" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:107 msgctxt "search-result" msgid "Lock Screen" msgstr "Bloquear a pantalla" #. Translators: A list of keywords that match the lock screen action, #. separated by semicolons #: js/misc/systemActions.js:110 msgid "lock screen" msgstr "bloquear pantalla;bloquear" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:115 msgctxt "search-result" msgid "Log Out" msgstr "Saír da sesión" #. Translators: A list of keywords that match the logout action, separated by #. semicolons #: js/misc/systemActions.js:118 msgid "logout;log out;sign off" msgstr "pechar a sesión;desloguearse;saír da sesión" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:123 msgctxt "search-result" msgid "Suspend" msgstr "Suspender" #. Translators: A list of keywords that match the suspend action, separated by #. semicolons #: js/misc/systemActions.js:126 msgid "suspend;sleep" msgstr "suspender;durmir" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:131 msgctxt "search-result" msgid "Switch User" msgstr "Cambiar de usuario" #. Translators: A list of keywords that match the switch user action, #. separated by semicolons #: js/misc/systemActions.js:134 msgid "switch user" msgstr "cambiar de usuario" #. Translators: A list of keywords that match the lock orientation action, #. separated by semicolons #: js/misc/systemActions.js:141 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "bloquear orientación;desbloquear orientación;pantalla;rotación" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:146 msgctxt "search-result" msgid "Take a Screenshot" msgstr "Tomar unha captura" #. Translators: A list of keywords that match the screenshot UI action, #. separated by semicolons #: js/misc/systemActions.js:149 msgid "screenshot;screencast;snip;capture;record" msgstr "captura;gravación de pantalla;recorte;capturar;gravar" #: js/misc/systemActions.js:249 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "Desbloquear a rotación de pantalla" #: js/misc/systemActions.js:250 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "Bloquear a rotación de pantalla" #: js/misc/util.js:130 msgid "Command not found" msgstr "Orde non atopada" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:170 msgid "Could not parse command:" msgstr "Non foi posíbel analizar a orde:" #: js/misc/util.js:178 #, javascript-format msgid "Execution of “%s” failed:" msgstr "Produciuse un fallo na execución de «%s»:" #: js/misc/dateUtils.js:69 msgid "Just now" msgstr "Xusto agora" #: js/misc/dateUtils.js:72 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "hai %d minuto" msgstr[1] "hai %d minutos" #: js/misc/dateUtils.js:79 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "hai %d hora" msgstr[1] "hai %d horas" #: js/misc/dateUtils.js:85 js/ui/dateMenu.js:183 msgid "Yesterday" msgstr "Onte" #: js/misc/dateUtils.js:88 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "hai %d día" msgstr[1] "hai %d días" #: js/misc/dateUtils.js:95 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "hai %d semana" msgstr[1] "hai %d semanas" #: js/misc/dateUtils.js:102 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "hai %d mes" msgstr[1] "hai %d meses" #: js/misc/dateUtils.js:108 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "hai %d ano" msgstr[1] "hai %d anos" #. Translators: Time in 24h format #: js/misc/dateUtils.js:155 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/dateUtils.js:161 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "Onte, %H:%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/dateUtils.js:167 #, no-c-format msgid "%A, %H∶%M" msgstr "%A ás %H:%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/dateUtils.js:173 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%d de %B ás %H:%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/dateUtils.js:179 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%d de %B de %Y ás %H:%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/dateUtils.js:184 msgid "%l∶%M %p" msgstr "%l:%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/dateUtils.js:190 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "Onte, %H:%M" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/dateUtils.js:196 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/dateUtils.js:202 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%d de %B, %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/dateUtils.js:208 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%d de %B de %Y, %l∶%M %p" #: js/portalHelper/main.js:98 msgid "Your connection seems to be secure" msgstr "A súa conexión semella ser segura" #: js/portalHelper/main.js:104 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "A súa conexión a este inicio de sesión de hotspot non é segura. Os " "contrasinais e outra información que escriba nesta páxina pode ser vista " "porque persoas próximas." #: js/portalHelper/main.js:115 msgid "Hotspot Login" msgstr "Inicio de sesión do Hotspot" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:51 js/ui/inhibitShortcutsDialog.js:92 msgid "Deny" msgstr "Denegar" #: js/ui/accessDialog.js:52 js/ui/inhibitShortcutsDialog.js:101 msgid "Allow" msgstr "Permitir" #: js/ui/appDisplay.js:1769 msgid "Unnamed Folder" msgstr "Cartafol sen nome" #: js/ui/appFavorites.js:163 #, javascript-format msgid "%s has been pinned to the dash." msgstr "%s fixouse no taboleiro." #: js/ui/appFavorites.js:194 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "%s desfixouse do taboleiro." #: js/ui/appFavorites.js:208 js/ui/main.js:281 msgid "Undo" msgstr "Desfacer" #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:49 msgid "Open Windows" msgstr "Abrir Xanelas" #: js/ui/appMenu.js:57 msgid "New Window" msgstr "Xanela nova" #: js/ui/appMenu.js:84 msgid "App Details" msgstr "Detalles da aplicación" #: js/ui/appMenu.js:100 msgid "Quit" msgstr "Saír" #: js/ui/appMenu.js:160 js/ui/dash.js:248 msgid "Unpin" msgstr "Desfixar" #: js/ui/appMenu.js:161 msgid "Pin to Dash" msgstr "Fixar no taboleiro" #: js/ui/appMenu.js:178 msgid "Launch using Integrated Graphics Card" msgstr "Iniciar usando a Tarxeta Gráfica Integrada" #: js/ui/appMenu.js:179 msgid "Launch using Discrete Graphics Card" msgstr "Iniciar usando a Tarxeta Gráfica Dedicada" #: js/ui/audioDeviceSelection.js:46 msgid "Select Audio Device" msgstr "Seleccionar dispositivo de son" #: js/ui/audioDeviceSelection.js:61 js/ui/status/volume.js:81 msgid "Sound Settings" msgstr "Preferencias de son" #: js/ui/audioDeviceSelection.js:74 msgid "Headphones" msgstr "Cascos auriculares" #: js/ui/audioDeviceSelection.js:76 msgid "Headset" msgstr "Auriculares" #: js/ui/audioDeviceSelection.js:78 js/ui/status/volume.js:356 msgid "Microphone" msgstr "Micrófono" #: js/ui/backgroundMenu.js:13 msgid "Change Background…" msgstr "Cambiar fondo de escritorio…" #: js/ui/backgroundMenu.js:15 msgid "Display Settings" msgstr "Preferencias da pantalla" #: js/ui/backgroundMenu.js:16 msgid "Settings" msgstr "Preferencias" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" #. (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:37 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #: js/ui/calendar.js:63 msgctxt "grid sunday" msgid "S" msgstr "D" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:65 msgctxt "grid monday" msgid "M" msgstr "L" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:67 msgctxt "grid tuesday" msgid "T" msgstr "M" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:69 msgctxt "grid wednesday" msgid "W" msgstr "W" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:71 msgctxt "grid thursday" msgid "T" msgstr "X" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:73 msgctxt "grid friday" msgid "F" msgstr "V" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:75 msgctxt "grid saturday" msgid "S" msgstr "S" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #: js/ui/calendar.js:426 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #: js/ui/calendar.js:436 msgid "%OB %Y" msgstr "%B de %Y" #: js/ui/calendar.js:498 msgid "Previous month" msgstr "Anterior mes" #: js/ui/calendar.js:516 msgid "Next month" msgstr "Seguinte mes" #: js/ui/calendar.js:667 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:726 msgid "Week %V" msgstr "Semana %V" #: js/ui/calendar.js:918 msgid "No Notifications" msgstr "Non hai notificacións" #: js/ui/calendar.js:974 msgid "Do Not Disturb" msgstr "Non molestar" #: js/ui/calendar.js:995 msgid "Clear" msgstr "Limpar" #: js/ui/calendar.js:999 msgctxt "action" msgid "Clear all notifications" msgstr "Limpar todas as notificacións" #. Translators: %s is an application name #: js/ui/closeDialog.js:42 #, javascript-format msgid "“%s” Is Not Responding" msgstr "«%s» non está respondendo" #: js/ui/closeDialog.js:43 msgid "" "You may choose to wait a short while for it to continue or force the app to " "quit entirely" msgstr "" "Pode escoller se quere agardar un anaco que continúe ou forzar o peche da " "aplicación por completo" #: js/ui/closeDialog.js:71 msgid "Force Quit" msgstr "Forzar peche" #: js/ui/closeDialog.js:76 msgid "Wait" msgstr "Agardar" #: js/ui/components/automountManager.js:82 msgid "External drive connected" msgstr "Unidade externa conectada" #: js/ui/components/automountManager.js:94 msgid "External drive disconnected" msgstr "Unidade externa desconectada" #: js/ui/components/automountManager.js:208 msgid "Unable to unlock volume" msgstr "Non foi posíbel bloquear o volume" #: js/ui/components/automountManager.js:209 msgid "The installed udisks version does not support the PIM setting" msgstr "A versión de udisks instalada non admite a configuración PIM" #. Translators: %s is the name of a partition on a external drive #: js/ui/components/autorunManager.js:189 #, javascript-format msgid "“%s” connected" msgstr "«%s» conectado" #: js/ui/components/autorunManager.js:190 msgid "Disk can now be used" msgstr "Agora pode usar o disco" #: js/ui/components/autorunManager.js:202 #, javascript-format msgid "Open with %s" msgstr "Abrir con %s" #: js/ui/components/networkAgent.js:95 msgid "Alternatively you can connect by pushing the “WPS” button on your router" msgstr "" "De forma alternativa pode conectarse premendo o botón «WPS» do seu enrutador" #: js/ui/components/networkAgent.js:107 js/ui/status/bluetooth.js:245 #: js/ui/status/network.js:360 js/ui/status/network.js:444 msgid "Connect" msgstr "Conectar" #: js/ui/components/networkAgent.js:222 msgid "Key" msgstr "Chave" #: js/ui/components/networkAgent.js:273 js/ui/components/networkAgent.js:312 msgid "Private key password" msgstr "Contrasinal da chave privada" #: js/ui/components/networkAgent.js:306 msgid "Identity" msgstr "Identidade" #: js/ui/components/networkAgent.js:332 msgid "Service" msgstr "Servizo" #: js/ui/components/networkAgent.js:370 js/ui/components/networkAgent.js:406 #: js/ui/components/networkAgent.js:743 js/ui/components/networkAgent.js:764 msgid "Authentication required" msgstr "Requírese autenticación" #: js/ui/components/networkAgent.js:371 js/ui/components/networkAgent.js:744 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network “%s”" msgstr "" "Requírense contrasinais ou chaves de cifrado para acceder á rede sen fíos «%s»" #: js/ui/components/networkAgent.js:375 js/ui/components/networkAgent.js:748 msgid "Wired 802.1X authentication" msgstr "Autenticación con fíos 802.1X" #: js/ui/components/networkAgent.js:378 msgid "Network name" msgstr "Nome da rede" #: js/ui/components/networkAgent.js:386 js/ui/components/networkAgent.js:752 msgid "DSL authentication" msgstr "Autenticación DSL" #: js/ui/components/networkAgent.js:393 js/ui/components/networkAgent.js:757 msgid "PIN code required" msgstr "Requírese un código PIN" #: js/ui/components/networkAgent.js:394 js/ui/components/networkAgent.js:758 msgid "PIN code is needed for the mobile broadband device" msgstr "É necesario un código PIN para o dispositivo de banda larga móbil" #: js/ui/components/networkAgent.js:396 msgid "PIN" msgstr "PIN" #: js/ui/components/networkAgent.js:407 js/ui/components/networkAgent.js:749 #: js/ui/components/networkAgent.js:753 js/ui/components/networkAgent.js:765 #: js/ui/components/networkAgent.js:769 #, javascript-format msgid "A password is required to connect to “%s”" msgstr "Requírese un contrasinal para conectarse a «%s»" #: js/ui/components/networkAgent.js:768 msgid "VPN password" msgstr "Contrasinal da VPN" #: js/ui/components/polkitAgent.js:44 msgid "Authentication Required" msgstr "Requírese autenticación" #: js/ui/components/polkitAgent.js:84 msgid "Administrator" msgstr "Administrador" #: js/ui/components/polkitAgent.js:149 msgid "Authenticate" msgstr "Autenticar" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:263 js/ui/shellMountOperation.js:415 msgid "Sorry, that didn’t work. Please try again." msgstr "Desculpe, iso non funcionou. Ténteo de novo." #: js/ui/ctrlAltTab.js:23 js/ui/overviewControls.js:404 msgid "Windows" msgstr "Xanelas" #: js/ui/dash.js:204 js/ui/dash.js:250 msgid "Show Apps" msgstr "Mostrar aplicacións" #. Translators: this is the name of the dock/favorites area on #. the bottom of the overview #: js/ui/dash.js:408 msgid "Dash" msgstr "Taboleiro" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #: js/ui/dateMenu.js:99 msgid "%B %-d %Y" msgstr "%e de %B de %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #: js/ui/dateMenu.js:106 msgid "%A %B %e %Y" msgstr "%A, %e de %B de %Y" #. Translators: Shown on calendar heading when selected day occurs on current #. year #: js/ui/dateMenu.js:172 msgctxt "calendar heading" msgid "%B %-d" msgstr "%e de %B de %Y" #. Translators: Shown on calendar heading when selected day occurs on #. different year #: js/ui/dateMenu.js:175 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%e de %B de %Y" #: js/ui/dateMenu.js:181 msgid "Today" msgstr "Hoxe" #: js/ui/dateMenu.js:185 msgid "Tomorrow" msgstr "Mañá" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #: js/ui/dateMenu.js:216 msgctxt "event list time" msgid "All Day" msgstr "Todo o día" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #: js/ui/dateMenu.js:238 msgid "%m/%d" msgstr "%d/%m" #: js/ui/dateMenu.js:289 msgid "No Events" msgstr "Non hai eventos" #: js/ui/dateMenu.js:411 msgid "Add World Clocks…" msgstr "Engadir reloxos do mundo…" #: js/ui/dateMenu.js:412 msgid "World Clocks" msgstr "Reloxos do mundo" #: js/ui/dateMenu.js:702 msgid "Loading…" msgstr "Cargando…" #: js/ui/dateMenu.js:712 msgid "Go Online for Weather Information" msgstr "Conéctese para obter a información do tempo" #: js/ui/dateMenu.js:714 msgid "Weather Information Unavailable" msgstr "A información do tempo non está dispoñíbel actualmente" #: js/ui/dateMenu.js:724 msgid "Weather" msgstr "Tempo" #: js/ui/dateMenu.js:726 msgid "Select Weather Location…" msgstr "Seleccione unha localización meteorolóxica…" #: js/ui/endSessionDialog.js:47 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "Saír da sesión de %s" #: js/ui/endSessionDialog.js:48 msgctxt "title" msgid "Log Out" msgstr "Saír da sesión" #: js/ui/endSessionDialog.js:51 #, javascript-format msgid "%s will be logged out automatically in %d second" msgid_plural "%s will be logged out automatically in %d seconds" msgstr[0] "%s pechará a sesión automaticamente en %d segundo" msgstr[1] "%s pechará a sesión automaticamente en %d segundos" #: js/ui/endSessionDialog.js:57 #, javascript-format msgid "You will be logged out automatically in %d second" msgid_plural "You will be logged out automatically in %d seconds" msgstr[0] "A súa sesión pecharase automaticamente en %d segundo" msgstr[1] "A súa sesión pecharase automaticamente en %d segundos" #: js/ui/endSessionDialog.js:64 msgctxt "button" msgid "Log Out" msgstr "Saír da sesión" #: js/ui/endSessionDialog.js:70 js/ui/status/system.js:174 msgctxt "title" msgid "Power Off" msgstr "Apagar" #: js/ui/endSessionDialog.js:71 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Instalar actualizacións e apagar" #: js/ui/endSessionDialog.js:74 #, javascript-format msgid "The system will power off automatically in %d second" msgid_plural "The system will power off automatically in %d seconds" msgstr[0] "O sistema apagarase automaticamente en %d segundo" msgstr[1] "O sistema apagarase automaticamente en %d segundos" #: js/ui/endSessionDialog.js:78 js/ui/endSessionDialog.js:97 msgctxt "checkbox" msgid "Install pending software updates" msgstr "Instalar actualizacións de software pendentes" #: js/ui/endSessionDialog.js:82 msgctxt "button" msgid "Power Off" msgstr "Apagar" #: js/ui/endSessionDialog.js:89 msgctxt "title" msgid "Restart" msgstr "Reiniciar" #: js/ui/endSessionDialog.js:90 msgctxt "title" msgid "Install Updates & Restart" msgstr "Instalar actualizacións e reiniciar" #: js/ui/endSessionDialog.js:93 #, javascript-format msgid "The system will restart automatically in %d second" msgid_plural "The system will restart automatically in %d seconds" msgstr[0] "O sistema reiniciarase automaticamente en %d segundo" msgstr[1] "O sistema reiniciarase automaticamente en %d segundos" #: js/ui/endSessionDialog.js:101 msgctxt "button" msgid "Restart" msgstr "Reiniciar" #: js/ui/endSessionDialog.js:109 msgctxt "title" msgid "Restart & Install Updates" msgstr "Reiniciar e instalar actualizacións" #: js/ui/endSessionDialog.js:112 #, javascript-format msgid "The system will automatically restart and install updates in %d second" msgid_plural "" "The system will automatically restart and install updates in %d seconds" msgstr[0] "" "O sistema reiniciarase automaticamente e instalará as actualizacións en %d " "segundo" msgstr[1] "" "O sistema reiniciarase automaticamente e instalará as actualizacións en %d " "segundos" #: js/ui/endSessionDialog.js:119 js/ui/endSessionDialog.js:140 msgctxt "button" msgid "Restart & Install" msgstr "Reiniciar e instalar" #: js/ui/endSessionDialog.js:121 msgctxt "button" msgid "Install & Power Off" msgstr "Instalar e apagar" #: js/ui/endSessionDialog.js:122 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Apagar despois de instalar as actualizacións" #: js/ui/endSessionDialog.js:129 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "Reiniciar e instalar anovación" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:134 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "%s %s instalarase despois do reinicio. A instalación de anovacións pode levar " "algún tempo: asegúrese que ten unha copia de respaldo dos seus datos e que o " "seu computador está enchufado." #: js/ui/endSessionDialog.js:283 msgid "Low battery power: please plug in before installing updates" msgstr "" "Enerxía da batería baixa: por favor conecte a corrente antes de instalar " "actualizacións" #: js/ui/endSessionDialog.js:292 msgid "Some applications are busy or have unsaved work" msgstr "Algunhas aplicacións están ocupadas ou teñen traballo sen gardar" #: js/ui/endSessionDialog.js:297 msgid "Other users are logged in" msgstr "Hai outros usuarios conectados" #: js/ui/endSessionDialog.js:467 msgctxt "button" msgid "Boot Options" msgstr "Opcións de arrinque" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:672 #, javascript-format msgid "%s (remote)" msgstr "%s (remoto)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:675 #, javascript-format msgid "%s (console)" msgstr "%s (consola)" #: js/ui/extensionDownloader.js:280 msgid "Install" msgstr "Instalar" #: js/ui/extensionDownloader.js:286 msgid "Install Extension" msgstr "Instalar extensión" #: js/ui/extensionDownloader.js:287 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "Desexa descargar e instalar «%s» desde extensions.gnome.org?" #: js/ui/extensionSystem.js:352 msgid "Extension Updates Available" msgstr "Hai actualizacións de extensións dispoñíbeis" #: js/ui/extensionSystem.js:353 msgid "Extension updates are ready to be installed" msgstr "As actualizacións das extensións están listas para instalarse" #: js/ui/inhibitShortcutsDialog.js:70 msgid "Allow inhibiting shortcuts" msgstr "Permitir atallos de inhibición" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:73 #, javascript-format msgid "The app %s wants to inhibit shortcuts" msgstr "A aplicación %s quere inhibir os atallos de teclado" #: js/ui/inhibitShortcutsDialog.js:74 msgid "An app wants to inhibit shortcuts" msgstr "A aplicación quere inhibir os atallos de teclado" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:81 #, javascript-format msgid "You can restore shortcuts by pressing %s" msgstr "Pode restaurar os atallos de teclado premendo %s" #: js/ui/kbdA11yDialog.js:34 msgid "Slow Keys Turned On" msgstr "Teclas lentas activadas" #: js/ui/kbdA11yDialog.js:35 msgid "Slow Keys Turned Off" msgstr "Teclas lentas desactivadas" #: js/ui/kbdA11yDialog.js:36 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "Acabas de manter a tecla Maiús durante 8 segundos. Isto é un atallo para a " "característica de Teclas lentas, o cal afecta á forma na que funciona o " "teclado." #: js/ui/kbdA11yDialog.js:42 msgid "Sticky Keys Turned On" msgstr "Teclas persistentes activadas" #: js/ui/kbdA11yDialog.js:43 msgid "Sticky Keys Turned Off" msgstr "Teclas persistentes desactivadas" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for the " "Sticky Keys feature, which affects the way your keyboard works." msgstr "" "Acabas de manter a tecla Maiús durante 5 segundos. Isto é un atallo para a " "característica de Teclas persistentes, o cal afecta á forma na que funciona o " "teclado." #: js/ui/kbdA11yDialog.js:47 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a row. " "This turns off the Sticky Keys feature, which affects the way your keyboard " "works." msgstr "" "Acabas de premer dúas teclas á vez, ou premendo a tecla Maiús 5 veces " "seguidas. Isto é un atallo para a característica de Teclas persistentes, o cal " "afecta á forma na que funciona o teclado." #: js/ui/kbdA11yDialog.js:57 msgid "Leave On" msgstr "Deixar activado" #: js/ui/kbdA11yDialog.js:57 msgid "Turn On" msgstr "Activar" #: js/ui/kbdA11yDialog.js:67 js/ui/status/network.js:455 msgid "Turn Off" msgstr "Apagar" #: js/ui/kbdA11yDialog.js:67 msgid "Leave Off" msgstr "Deixar desactivado" #: js/ui/keyboard.js:180 js/ui/status/keyboard.js:897 msgid "Keyboard Settings" msgstr "Preferencias do teclado" #: js/ui/lookingGlass.js:727 msgid "No extensions installed" msgstr "Non hai ningunha extensión instalada" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:788 #, javascript-format msgid "%s has not emitted any errors" msgstr "%s non emitiu ningún erro" #: js/ui/lookingGlass.js:794 msgid "Hide Errors" msgstr "Ocultar erros" #: js/ui/lookingGlass.js:798 js/ui/lookingGlass.js:875 msgid "Show Errors" msgstr "Mostrar erros" #: js/ui/lookingGlass.js:807 msgid "Active" msgstr "Activa" #: js/ui/lookingGlass.js:810 msgid "Inactive" msgstr "Inactiva" #: js/ui/lookingGlass.js:812 msgid "Error" msgstr "Erro" #: js/ui/lookingGlass.js:814 msgid "Out of date" msgstr "Obsoleto" #: js/ui/lookingGlass.js:816 msgid "Downloading" msgstr "Descargando" #: js/ui/lookingGlass.js:818 msgid "Deactivating" msgstr "Desactivando" #: js/ui/lookingGlass.js:820 msgid "Activating" msgstr "Activando" #: js/ui/lookingGlass.js:853 msgid "View Source" msgstr "Ver fonte" #: js/ui/lookingGlass.js:864 msgid "Web Page" msgstr "Páxina web" #: js/ui/main.js:277 msgid "System was put in unsafe mode" msgstr "O sistema púxose en modo non seguro" #: js/ui/main.js:278 msgid "Apps now have unrestricted access" msgstr "As aplicacións agora teñen acceso sen restricións" #: js/ui/main.js:338 msgid "Logged in as a privileged user" msgstr "Sesión iniciada como un usuario privilexiado" #: js/ui/main.js:339 msgid "" "Running a session as a privileged user should be avoided for security reasons. " "If possible, you should log in as a normal user." msgstr "" "Por razóns de seguranza debe evitar executar unha sesión como un usuario " "privilexiado. Se é posíbel, debería iniciar sesión como un usuario normal." #: js/ui/main.js:387 msgid "Screen Lock disabled" msgstr "Bloqueo de pantalla desactivado" #: js/ui/main.js:388 msgid "Screen Locking requires the GNOME display manager" msgstr "O bloqueo de pantalla require o xestor de pantalla de GNOME" #. Translators: this is the string displayed in the header when a message #. source doesn't have a name #: js/ui/messageList.js:374 msgid "Unknown App" msgstr "Aplicación descoñecida" #: js/ui/messageTray.js:326 js/ui/messageTray.js:328 msgid "Notification sound" msgstr "Son de notificación" #: js/ui/mpris.js:198 msgid "Unknown artist" msgstr "Artista descoñecido" #: js/ui/mpris.js:208 msgid "Unknown title" msgstr "Título descoñecido" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:328 msgid "Type to search" msgstr "Escriba para buscar" #: js/ui/overviewControls.js:392 msgid "Apps" msgstr "Aplicacións" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:33 msgid "Overview" msgstr "Vista xeral" #: js/ui/padOsd.js:98 msgid "New shortcut…" msgstr "Novo atallo…" #: js/ui/padOsd.js:151 msgid "App defined" msgstr "Aplicación definida" #: js/ui/padOsd.js:152 msgid "Show on-screen help" msgstr "Mostrar a axuda en pantalla" #: js/ui/padOsd.js:153 msgid "Switch monitor" msgstr "Cambiar monitor" #: js/ui/padOsd.js:154 msgid "Assign keystroke" msgstr "Asignar combinación de teclas" #: js/ui/padOsd.js:223 msgid "Done" msgstr "Feito" #: js/ui/padOsd.js:726 msgid "Edit…" msgstr "Editar…" #: js/ui/padOsd.js:773 msgid "None" msgstr "Ningún" #: js/ui/padOsd.js:844 msgid "Press a button to configure" msgstr "Prema un botón para continuar" #: js/ui/padOsd.js:845 msgid "Press Esc to exit" msgstr "Prema Esc para saír" #: js/ui/padOsd.js:848 msgid "Press any key to exit" msgstr "Prema calquera tecla para saír" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:423 msgid "Activities" msgstr "Actividades" #: js/ui/panel.js:504 msgctxt "System menu in the top bar" msgid "System" msgstr "Sistema" #: js/ui/panel.js:678 msgid "Top Bar" msgstr "Barra superior" #: js/ui/quickSettings.js:188 msgid "Open menu" msgstr "Abrir menú" #: js/ui/runDialog.js:61 msgid "Run a Command" msgstr "Executar unha orde" #: js/ui/runDialog.js:76 msgid "Press ESC to close" msgstr "Prema ESC para saír" #: js/ui/runDialog.js:241 msgid "Restart is not available on Wayland" msgstr "Reiniciar non está dispoñíbel en Wayland" #: js/ui/runDialog.js:246 msgid "Restarting…" msgstr "Reiniciando…" #: js/ui/screenShield.js:233 msgid "GNOME needs to lock the screen" msgstr "GNOME precisa bloquear a pantalla" #: js/ui/screenShield.js:274 js/ui/screenShield.js:667 msgid "Unable to lock" msgstr "Non foi posíbel bloquear" #: js/ui/screenShield.js:275 js/ui/screenShield.js:668 msgid "Lock was blocked by an app" msgstr "Unha aplicación impediu o bloqueo" #: js/ui/screenshot.js:1252 msgid "Selection" msgstr "Selección" #: js/ui/screenshot.js:1262 msgid "Area Selection" msgstr "Seleccionar área" #: js/ui/screenshot.js:1267 msgid "Screen" msgstr "Pantalla" #: js/ui/screenshot.js:1277 msgid "Screen Selection" msgstr "Seleccionar pantalla" #: js/ui/screenshot.js:1282 msgid "Window" msgstr "Xanela" #: js/ui/screenshot.js:1292 msgid "Window Selection" msgstr "Seleccionar xanela" #. Translators: entry in the window right click menu. #: js/ui/screenshot.js:1317 js/ui/status/system.js:111 js/ui/windowMenu.js:28 msgid "Take Screenshot" msgstr "Tomar unha captura" #: js/ui/screenshot.js:1333 msgid "Record Screen" msgstr "Gravar a pantalla" #. Translators: since this string refers to an action, #. it needs to be phrased as a verb. #: js/ui/screenshot.js:1350 msgid "Capture" msgstr "Capturar" #: js/ui/screenshot.js:1372 msgid "Show Pointer" msgstr "Mostrar punteiro" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1996 msgid "Screencasts" msgstr "Capturas en vídeo da pantalla" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast From 07-17-2013 10:00:46 PM" #: js/ui/screenshot.js:2001 #, no-c-format msgid "Screencast From %d %t" msgstr "Captura de pantalla do %d %t" #. Translators: notification title. #: js/ui/screenshot.js:2047 msgid "Screencast recorded" msgstr "Captura en vídeo da pantalla realizada" #. Translators: notification title. #: js/ui/screenshot.js:2060 msgid "Screencast failed to start" msgstr "A captura en vídeo da pantalla fallou ao comezar" #. Translators: notification title. #: js/ui/screenshot.js:2066 msgid "Screencast ended: Out of disk space" msgstr "A captura en vídeo da pantalla finalizou: non hai espazo dispoñíbel" #. We can encourage user to try again on service crashes since the #. recorder will auto-blocklist the pipeline that crashed. #. Translators: notification title. #: js/ui/screenshot.js:2072 msgid "Screencast ended unexpectedly, please try again" msgstr "" "A captura en vídeo da pantalla finalizou de forma non esperada, ténteo de novo" #. Translators: notification title. #: js/ui/screenshot.js:2075 msgid "Screencast ended unexpectedly" msgstr "A captura en vídeo da pantalla finalizou de forma non esperada" #. Translators: notification source name. #: js/ui/screenshot.js:2085 js/ui/screenshot.js:2327 msgid "Screenshot" msgstr "Captura de pantalla" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:2092 msgid "Click here to view the video." msgstr "Prema aquí para ver o vídeo." #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:2100 js/ui/screenshot.js:2343 msgid "Show in Files" msgstr "Mostrar en Ficheiros" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2287 #, javascript-format msgid "Screenshot From %s" msgstr "Captura de pantalla do %s" #. Translators: notification title. #: js/ui/screenshot.js:2333 msgid "Screenshot captured" msgstr "Captura de pantalla realizada" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2335 msgid "You can paste the image from the clipboard." msgstr "Pode pegar a imaxe desde o portapapeis." #: js/ui/screenshot.js:2391 js/ui/screenshot.js:2555 msgid "Screenshot taken" msgstr "Captura de pantalla realizada" #: js/ui/search.js:829 msgid "Searching…" msgstr "Buscando…" #: js/ui/search.js:831 msgid "No results" msgstr "Sen resultados" #: js/ui/search.js:962 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "%d máis" msgstr[1] "%d máis" #: js/ui/searchController.js:87 #: subprojects/extensions-app/data/ui/extensions-window.ui:73 msgid "Search" msgstr "Buscar" #: js/ui/shellEntry.js:21 msgid "Copy" msgstr "Copiar" #: js/ui/shellEntry.js:26 msgid "Paste" msgstr "Pegar" #: js/ui/shellEntry.js:78 msgid "Show Text" msgstr "Mostrar texto" #: js/ui/shellEntry.js:80 msgid "Hide Text" msgstr "Ocultar texto" #: js/ui/shellEntry.js:174 msgid "Caps lock is on" msgstr "O bloqueo de maiúsculas está activado" #: js/ui/shellMountOperation.js:286 msgid "Hidden Volume" msgstr "Volume agochado" #: js/ui/shellMountOperation.js:289 msgid "Windows System Volume" msgstr "Volume de sistema de Windows" #: js/ui/shellMountOperation.js:292 msgid "Uses Keyfiles" msgstr "Usa ficheiros de chaves" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:300 #, javascript-format msgid "To unlock a volume that uses keyfiles, use the %s utility instead" msgstr "" "Para desbloquear un volume que usa ficheiros de chave, use no lugar a " "utilidade %s" #: js/ui/shellMountOperation.js:304 msgid "" "You need an external utility like Disks to unlock a volume that uses " "keyfiles" msgstr "" "Precisa dunha utilidade externa como Discos para desbloquear o volume " "que usa ficheiros de chave" #: js/ui/shellMountOperation.js:312 msgid "PIM Number" msgstr "Número PIM" #: js/ui/shellMountOperation.js:371 msgid "Remember Password" msgstr "Lembrar contrasinal" #: js/ui/shellMountOperation.js:386 msgid "Unlock" msgstr "Desbloquear" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:400 #, javascript-format msgid "Open %s" msgstr "Abrir %s" #: js/ui/shellMountOperation.js:436 msgid "The PIM must be a number or empty" msgstr "O PIM debe ser un número ou baleiro" #: js/ui/status/accessibility.js:34 msgid "Accessibility" msgstr "Accesibilidade" #: js/ui/status/accessibility.js:44 msgid "High Contrast" msgstr "Contraste alto" #: js/ui/status/accessibility.js:47 msgid "Zoom" msgstr "Ampliación" #: js/ui/status/accessibility.js:54 msgid "Screen Reader" msgstr "Lector da pantalla" #: js/ui/status/accessibility.js:58 msgid "Screen Keyboard" msgstr "Teclado en pantalla" #: js/ui/status/accessibility.js:62 msgid "Visual Alerts" msgstr "Alertas visuais" #: js/ui/status/accessibility.js:66 msgid "Sticky Keys" msgstr "Teclas persistentes" #: js/ui/status/accessibility.js:70 msgid "Slow Keys" msgstr "Teclas lentas" #: js/ui/status/accessibility.js:74 msgid "Bounce Keys" msgstr "Rexeite de teclas" #: js/ui/status/accessibility.js:78 msgid "Mouse Keys" msgstr "Teclas do rato" #: js/ui/status/accessibility.js:83 msgid "Accessibility Settings" msgstr "Preferencias de accesibilidade" #: js/ui/status/accessibility.js:140 msgid "Large Text" msgstr "Texto grande" #: js/ui/status/autoRotate.js:14 msgid "Auto Rotate" msgstr "Autorotar" #: js/ui/status/backgroundApps.js:156 msgctxt "title" msgid "Background Apps" msgstr "Aplicacións en segundo plano" #: js/ui/status/backgroundApps.js:171 msgid "Apps known to be running without a window" msgstr "Aplicacións coñecidas por executarse sen unha xanela" #: js/ui/status/backgroundApps.js:182 msgid "App Settings" msgstr "Preferencias de aplicación" #: js/ui/status/backgroundApps.js:239 msgid "No Background Apps" msgstr "Non hai aplicacións en segundo plano" #: js/ui/status/backgroundApps.js:241 #, javascript-format msgid "%d Background App" msgid_plural "%d Background Apps" msgstr[0] "%d aplicación en segundo plano" msgstr[1] "%d aplicacións en segundo plano" #: js/ui/status/backlight.js:39 msgid "Keyboard Brightness" msgstr "Brillo do teclado" #: js/ui/status/backlight.js:79 msgid "Off" msgstr "Desactivado" #: js/ui/status/backlight.js:80 msgid "Low" msgstr "Baixo" #: js/ui/status/backlight.js:81 msgid "High" msgstr "Alto" #: js/ui/status/backlight.js:147 js/ui/status/keyboard.js:879 msgid "Keyboard" msgstr "Teclado" #: js/ui/status/bluetooth.js:245 js/ui/status/network.js:360 msgid "Disconnect" msgstr "Desconectar" #: js/ui/status/bluetooth.js:262 js/ui/status/bluetooth.js:264 msgid "Bluetooth" msgstr "Bluetooth" #: js/ui/status/bluetooth.js:287 js/ui/status/network.js:1900 msgid "Bluetooth Settings" msgstr "Preferencias do Bluetooth" #: js/ui/status/bluetooth.js:334 msgid "No available or connected devices" msgstr "Non hai dispositivos dispoñíbeis ou conectados" #: js/ui/status/bluetooth.js:335 msgid "Turn on Bluetooth to connect to devices" msgstr "Active o Bluetooth para conectar dispositivos" #. Translators: This is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:389 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d conectado" msgstr[1] "%d conectados" #: js/ui/status/brightness.js:32 msgid "Brightness" msgstr "Brillo" #: js/ui/status/darkMode.js:12 msgid "Dark Style" msgstr "Estilo escuro" #: js/ui/status/dwellClick.js:15 msgid "Single Click" msgstr "Clic único" #: js/ui/status/dwellClick.js:20 msgid "Double Click" msgstr "Clic dobre" #: js/ui/status/dwellClick.js:25 msgid "Drag" msgstr "Arrastrar" #: js/ui/status/dwellClick.js:30 msgid "Secondary Click" msgstr "Clic secundario" #: js/ui/status/dwellClick.js:39 msgid "Dwell Click" msgstr "Clic atrasado" #: js/ui/status/keyboard.js:896 msgid "Show Keyboard Layout" msgstr "Mostrar a distribución do teclado" #: js/ui/status/location.js:337 msgid "Allow location access" msgstr "Permitir acceso á localización" #. Translators: %s is an application name #: js/ui/status/location.js:339 #, javascript-format msgid "The app %s wants to access your location" msgstr "A aplicación %s solicita acceso á súa localización" #: js/ui/status/location.js:349 msgid "Location access can be changed at any time from the privacy settings" msgstr "" "Pode cambiar o acceso á localización en calquera momento desde as preferencias " "de privacidade" #: js/ui/status/location.js:357 msgid "Deny Access" msgstr "Denegar acceso" #: js/ui/status/location.js:362 msgid "Grant Access" msgstr "Conceder acceso" #: js/ui/status/network.js:62 msgid "" msgstr "" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:354 #, javascript-format msgid "Disconnect %s" msgstr "Desconectarse de %s" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:356 #, javascript-format msgid "Connect to %s" msgstr "Conectarse a %s" #: js/ui/status/network.js:1050 msgid "Secure" msgstr "Segura" #: js/ui/status/network.js:1050 msgid "Not secure" msgstr "Non segura" #: js/ui/status/network.js:1051 #, javascript-format msgid "Signal strength %s%%" msgstr "Intensidade de sinal %s%%" #. translators: The first placeholder is the network name, the second and #. indication whether it is secure, and the last the signal strength #. indication #: js/ui/status/network.js:1053 #, javascript-format msgid "%s, %s, %s" msgstr "%s, %s, %s" #. Translators: %s is a network identifier #: js/ui/status/network.js:1155 #, javascript-format msgid "%s Hotspot" msgstr "%s punto wifi" #: js/ui/status/network.js:1426 #, javascript-format msgid "%d connected" msgid_plural "%d connected" msgstr[0] "%d conectado" msgstr[1] "%d conectados" #: js/ui/status/network.js:1524 js/ui/status/network.js:1540 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1525 msgid "VPN Settings" msgstr "Preferencias de VPN" #: js/ui/status/network.js:1785 msgid "Wi–Fi" msgstr "Wifi" #: js/ui/status/network.js:1787 msgid "All Networks" msgstr "Todas as redes" #: js/ui/status/network.js:1884 msgid "Wired Connections" msgstr "Conexións con fíos" #: js/ui/status/network.js:1885 msgid "Wired Settings" msgstr "Preferencias da rede con fíos" #: js/ui/status/network.js:1899 msgid "Bluetooth Tethers" msgstr "Comparticións de datos por Bluetooth" #. Translators: "Tether" from "Bluetooth Tether" #: js/ui/status/network.js:1906 msgid "Tether" msgstr "Compartir datos" #: js/ui/status/network.js:1919 msgid "Mobile Connections" msgstr "Conexións de banda larga" #: js/ui/status/network.js:1921 msgid "Mobile Broadband Settings" msgstr "Preferencias da banda larga móbil" #. Translators: "Mobile" from "Mobile Broadband" #: js/ui/status/network.js:1930 msgid "Mobile" msgstr "Móbil" #: js/ui/status/network.js:1964 msgid "Sign Into Wi–Fi Network" msgstr "Iniciar sesión na rede Wifi" #: js/ui/status/network.js:2151 msgid "Connection failed" msgstr "Produciuse un fallo na conexión" #: js/ui/status/network.js:2152 msgid "Activation of network connection failed" msgstr "Produciuse un fallo na activación da conexión de rede" #: js/ui/status/nightLight.js:19 msgid "Night Light" msgstr "Luz nocturna" #: js/ui/status/powerProfiles.js:19 msgctxt "Power profile" msgid "Performance" msgstr "Rendemento" #: js/ui/status/powerProfiles.js:24 msgctxt "Power profile" msgid "Balanced" msgstr "Balanceado" #: js/ui/status/powerProfiles.js:29 msgctxt "Power profile" msgid "Power Saver" msgstr "Aforro de enerxía" #: js/ui/status/powerProfiles.js:39 js/ui/status/powerProfiles.js:69 msgid "Power Mode" msgstr "Modo de enerxía" #: js/ui/status/powerProfiles.js:71 msgid "Power Settings" msgstr "Preferencias de enerxía" #: js/ui/status/remoteAccess.js:74 msgid "Stop Screencast" msgstr "Deter captura de vídeo" #: js/ui/status/remoteAccess.js:144 msgid "Stop Screen Sharing" msgstr "Deter compartición de pantalla" #: js/ui/status/rfkill.js:99 msgid "Airplane Mode" msgstr "Modo avión" #: js/ui/status/system.js:168 msgid "Power Off Menu" msgstr "Menú apagar" #: js/ui/status/system.js:176 msgid "Suspend" msgstr "Suspender" #: js/ui/status/system.js:181 msgid "Restart…" msgstr "Reiniciar…" #: js/ui/status/system.js:186 msgid "Power Off…" msgstr "Apagar…" #: js/ui/status/system.js:193 #: subprojects/extensions-app/data/ui/extensions-window.ui:124 msgid "Log Out…" msgstr "Saír da sesión…" #: js/ui/status/system.js:198 msgid "Switch User…" msgstr "Cambiar de usuario…" #: js/ui/status/system.js:242 msgctxt "action" msgid "Lock Screen" msgstr "Bloquear pantalla" #: js/ui/status/thunderbolt.js:308 msgid "Unknown Thunderbolt device" msgstr "Dispositivo Thunderbolt descoñecido" #: js/ui/status/thunderbolt.js:309 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" "Detectouse un novo dispositivo mentres non estabas. Por favor desconecte e " "reconecte o dispositivo para comezar a usalo." #: js/ui/status/thunderbolt.js:312 msgid "Unauthorized Thunderbolt device" msgstr "Dispositivo Thunderbolt non autorizado" #: js/ui/status/thunderbolt.js:313 msgid "" "New device has been detected and needs to be authorized by an administrator" msgstr "" "Detectouse un novo dispositivo e precisa ser autorizado por un administrador" #: js/ui/status/thunderbolt.js:319 msgid "Thunderbolt authorization error" msgstr "Erro de autorización de Thunderbolt" #: js/ui/status/thunderbolt.js:320 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "Non foi posíbel autorizar o dispositivo Thunderbolt: %s" #: js/ui/status/volume.js:218 msgid "Volume changed" msgstr "Volume cambiado" #: js/ui/status/volume.js:231 msgid "Unmute" msgstr "Desilenciar" #: js/ui/status/volume.js:231 msgid "Mute" msgstr "Silenciar" #: js/ui/status/volume.js:286 msgid "Volume" msgstr "Volume" #: js/ui/status/volume.js:302 msgid "Sound Output" msgstr "Saída de son" #: js/ui/status/volume.js:374 msgid "Sound Input" msgstr "Entrada de son" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #: js/ui/switchMonitor.js:20 msgid "Mirror" msgstr "Espello" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #: js/ui/switchMonitor.js:29 msgid "Join Displays" msgstr "Unir pantallas" #. Translators: this is for using only external displays. #. * Try to keep it under around 15 characters. #: js/ui/switchMonitor.js:39 msgid "External Only" msgstr "Só a externa" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #: js/ui/switchMonitor.js:47 msgid "Built-in Only" msgstr "Só a interna" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:378 msgid "%A %B %-d" msgstr "%A, %d de %B" #: js/ui/unlockDialog.js:384 msgid "Swipe up to unlock" msgstr "Deslizar para desbloquear" #: js/ui/unlockDialog.js:385 msgid "Click or press a key to unlock" msgstr "Prema o rato ou unha tecla para desbloquear" #: js/ui/unlockDialog.js:568 msgid "Unlock Window" msgstr "Desbloquear xanela" #: js/ui/unlockDialog.js:577 msgid "Log in as another user" msgstr "Iniciar sesión como outro usuario" #: js/ui/welcomeDialog.js:47 #, javascript-format msgid "GNOME %s" msgstr "GNOME %s" #: js/ui/welcomeDialog.js:51 #, javascript-format msgid "Welcome to %s" msgstr "Benvida a %s" #: js/ui/welcomeDialog.js:52 msgid "If you want to learn your way around, check out the tour" msgstr "Se desexa votar unha ollada, realice o percorrido" #: js/ui/welcomeDialog.js:61 msgid "Skip" msgstr "Omitir" #: js/ui/welcomeDialog.js:66 msgid "Take Tour" msgstr "Facer o percorrido" #: js/ui/windowAttentionHandler.js:18 #, javascript-format msgid "“%s” is ready" msgstr "«%s» está preparado" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:68 msgid "Keep these display settings?" msgstr "Desexa manter estas preferencias de pantalla?" #: js/ui/windowManager.js:78 msgid "Revert Settings" msgstr "Reverter preferencias" #: js/ui/windowManager.js:83 msgid "Keep Changes" msgstr "Manter cambios" #: js/ui/windowManager.js:103 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "Os cambios das preferencias revertiranse en %d segundo" msgstr[1] "Os cambios das preferencias revertiranse en %d segundos" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:500 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:40 msgid "Hide" msgstr "Ocultar" #: js/ui/windowMenu.js:47 msgid "Restore" msgstr "Restaurar" #: js/ui/windowMenu.js:51 msgid "Maximize" msgstr "Maximizar" #: js/ui/windowMenu.js:58 msgid "Move" msgstr "Mover" #: js/ui/windowMenu.js:78 msgid "Resize" msgstr "Redimensionar" #: js/ui/windowMenu.js:98 msgid "Always on Top" msgstr "Sempre enriba" #: js/ui/windowMenu.js:117 msgid "Always on Visible Workspace" msgstr "Sempre no espazo de traballo visible" #: js/ui/windowMenu.js:131 msgid "Move to Workspace Left" msgstr "Mover ao espazo da esquerda" #: js/ui/windowMenu.js:137 msgid "Move to Workspace Right" msgstr "Mover ao espazo da dereita" #: js/ui/windowMenu.js:143 msgid "Move to Workspace Up" msgstr "Mover ao espazo de arriba" #: js/ui/windowMenu.js:149 msgid "Move to Workspace Down" msgstr "Mover ao espazo de abaixo" #: js/ui/windowMenu.js:167 msgid "Move to Monitor Up" msgstr "Mover ao monitor de arriba" #: js/ui/windowMenu.js:176 msgid "Move to Monitor Down" msgstr "Mover ao monitor de abaixo" #: js/ui/windowMenu.js:185 msgid "Move to Monitor Left" msgstr "Mover ao monitor da esquerda" #: js/ui/windowMenu.js:194 msgid "Move to Monitor Right" msgstr "Mover ao monitor da dereita" #: js/ui/windowMenu.js:202 msgid "Close" msgstr "Pechar" #: src/main.c:529 subprojects/extensions-tool/src/main.c:336 msgid "Print version" msgstr "Imprimir versión" #: src/main.c:535 msgid "Mode used by GDM for login screen" msgstr "Modo usado por GDM para a pantalla de inicio" #: src/main.c:541 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "" "Usar un modo específico, por exemplo, «gdm» para a pantalla de inicio de sesión" #: src/main.c:547 msgid "List possible modes" msgstr "Listar os modos posíbeis" #: src/main.c:553 msgid "Force animations to be enabled" msgstr "Forzar animacións activas" #: src/shell-app.c:252 msgctxt "program" msgid "Unknown" msgstr "Descoñecido" #: src/shell-app.c:503 #, c-format msgid "Failed to launch “%s”" msgstr "Produciuse un erro ao iniciar «%s»" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match" msgstr "Os contrasinais non coinciden" #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "O contrasinal non pode estar baleiro" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "O usuario rexeitou o diálogo de autenticación" #: src/st/st-icon-theme.c:1865 #, c-format msgid "Icon '%s' not present in theme %s" msgstr "A icona «%s» non está presente no tema %s" #: src/st/st-icon-theme.c:3454 src/st/st-icon-theme.c:3757 msgid "Failed to load icon" msgstr "Produciuse un fallo ao cargar a icona" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 msgid "Manage your GNOME Extensions" msgstr "Xestione as súas extensións de GNOME" #. developer_name tag deprecated with Appstream 1.0 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:19 msgid "The GNOME Project" msgstr "O Proxecto GNOME" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:51 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" "Extensións de GNOME xestiona a actualización de extensions, a súa " "configuración, eliminación e a desactivación das extensións que non quere." #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:64 msgid "Main Window" msgstr "Xanela principal" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:68 msgid "Available Updates" msgstr "Actualizacións dispoñíbeis" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:72 msgid "Search View" msgstr "Vista de buscar" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "Configure as extensións de GNOME Shell" #: subprojects/extensions-app/js/extensionManager.js:237 #, javascript-format msgid "" "The installed version of this extension (%s) is incompatible with the current " "version of GNOME (%s). The extension has been disabled." msgstr "" "A versión instalada desta extensión (%s) non é compatíbel coa versión actual " "de GNOME (%s). A extensión desactivouse." #: subprojects/extensions-app/js/extensionManager.js:238 #, javascript-format msgid "" "The installed version of this extension is incompatible with the current " "version of GNOME (%s). The extension has been disabled." msgstr "" "A versión instalada desta extensión non é compatíbel coa versión actual de " "GNOME (%s). A extensión foi desactivada." #: subprojects/extensions-app/js/extensionManager.js:242 msgid "" "An error has occurred in this extension. This could cause issues elsewhere in " "the system. It is recommended to turn the extension off until the error is " "resolved." msgstr "" "Produciuse un erro con esta extensión. Isto pode causar problemas en calquera " "outra parte do sistema. Recoméndase desactivar a extensión ate que o erro se " "solucione." #. translators: Details for an extension error #: subprojects/extensions-app/js/extensionManager.js:248 msgid "Error details:" msgstr "Detalles do erro:" #: subprojects/extensions-app/js/extensionRow.js:82 #, javascript-format msgid "Version %s" msgstr "Versión %s" #: subprojects/extensions-app/js/extensionsWindow.js:113 #, javascript-format msgid "Remove “%s”?" msgstr "Quitar «%s»?" #: subprojects/extensions-app/js/extensionsWindow.js:114 msgid "" "If you remove the extension, you need to return to download it if you want to " "enable it again" msgstr "Se quita a extensión debe descargala se quere activala de novo" #: subprojects/extensions-app/js/extensionsWindow.js:117 msgid "_Cancel" msgstr "_Cancelar" #: subprojects/extensions-app/js/extensionsWindow.js:118 msgid "_Remove" msgstr "_Quitar" #: subprojects/extensions-app/js/extensionsWindow.js:158 msgid "translator-credits" msgstr "Fran Diéguez , 2012-2024" #: subprojects/extensions-app/js/extensionsWindow.js:203 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "Vaise actualizar %d extensión no seguinte inicio de sesión." msgstr[1] "Vanse actualizar %d extensións no seguinte inicio de sesión." #: subprojects/extensions-app/data/ui/extension-row.ui:22 msgid "Error Details" msgstr "Detalles do erro" #: subprojects/extensions-app/data/ui/extension-row.ui:62 msgid "Updates Details" msgstr "Detalles da actualización" #: subprojects/extensions-app/data/ui/extension-row.ui:72 msgid "" "A new version of this extension is ready and will be loaded on next login." msgstr "" "Hai unha nova versión desta extensión está lista e cargarase no seguinte " "inicio de sesión." #: subprojects/extensions-app/data/ui/extension-row.ui:104 msgid "Extension Details" msgstr "Detalles da extensión" #: subprojects/extensions-app/data/ui/extension-row.ui:192 msgid "_Website" msgstr "_Sitio web" #: subprojects/extensions-app/data/ui/extension-row.ui:219 msgid "_Settings" msgstr "_Preferencias" #: subprojects/extensions-app/data/ui/extension-row.ui:246 msgid "_Remove…" msgstr "_Quitar…" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Keyboard Shortcuts" msgstr "Atallos do teclado" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "Sobre Extensións" #: subprojects/extensions-app/data/ui/extensions-window.ui:64 msgid "Main Menu" msgstr "Menú principal" #: subprojects/extensions-app/data/ui/extensions-window.ui:106 msgid "Search extensions" msgstr "Buscar extensión" #: subprojects/extensions-app/data/ui/extensions-window.ui:134 msgid "_Extensions" msgstr "_Extensións" #: subprojects/extensions-app/data/ui/extensions-window.ui:139 msgid "More Information" msgstr "Máis información" #: subprojects/extensions-app/data/ui/extensions-window.ui:151 msgid "" "Extensions can cause performance and stability issues. It is recommended to " "disable all extensions if you experience problems with your system." msgstr "" "As extensións poden causar problemas de rendemento e estabilidade. Recoméndase " "desactivar todas as extensións se atopa problemas no seu sistema." #: subprojects/extensions-app/data/ui/extensions-window.ui:178 msgid "User Extensions" msgstr "Extensións do usuario" #: subprojects/extensions-app/data/ui/extensions-window.ui:198 msgid "System Extensions" msgstr "Extensións do sistema" #: subprojects/extensions-app/data/ui/extensions-window.ui:233 msgid "Search Results" msgstr "Resultados da busca" #: subprojects/extensions-app/data/ui/extensions-window.ui:252 msgid "No Results Found" msgstr "Sen resultados" #: subprojects/extensions-app/data/ui/extensions-window.ui:253 msgid "Try a different search" msgstr "Tente con unha busca distinta" #: subprojects/extensions-app/data/ui/extensions-window.ui:264 msgid "No Installed Extensions" msgstr "Non hai extensións instaladas" #: subprojects/extensions-app/data/ui/extensions-window.ui:265 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" "Para atopar e engadir extensións visite extensions.gnome.org." #: subprojects/extensions-app/data/ui/extensions-window.ui:276 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" "Desculpe, non foi posíbel obter a lista das extensións instaladas. Asegúrese " "que está nunha sesión en GNOME e ténteo de novo." #: subprojects/extensions-app/data/ui/help-overlay.ui:9 msgctxt "shortcut window" msgid "General" msgstr "Xeral" #: subprojects/extensions-app/data/ui/help-overlay.ui:12 msgctxt "shortcut window" msgid "Open Menu" msgstr "Abrir menú" #: subprojects/extensions-app/data/ui/help-overlay.ui:18 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Trocar buscar" #: subprojects/extensions-app/data/ui/help-overlay.ui:24 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Mostrar atallos de teclado" #: subprojects/extensions-app/data/ui/help-overlay.ui:30 msgctxt "shortcut window" msgid "Quit" msgstr "Saír" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:284 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "Creouse con éxito a nova extensión en %s.\n" #: subprojects/extensions-tool/src/command-create.c:376 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" "O nome debe ser unha cadea moi curta (idealmente descritiva).\n" "Exemplos son: %s" #: subprojects/extensions-tool/src/command-create.c:382 #: subprojects/extensions-tool/src/main.c:243 msgid "Name" msgstr "Nome" #: subprojects/extensions-tool/src/command-create.c:396 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" "A descrición debe ser unha explicación dunha única frase do que fai a " "extensión.\n" "Exemplos son: %s" #: subprojects/extensions-tool/src/command-create.c:402 #: subprojects/extensions-tool/src/main.c:246 msgid "Description" msgstr "Descrición" #: subprojects/extensions-tool/src/command-create.c:416 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe.example." "com)\n" msgstr "" "UUID é un identificador único global para a súa extensión.\n" "Isto debería estar no formato de enderezo de correo (clicktofocus@pepiño.souto." "com)\n" #: subprojects/extensions-tool/src/command-create.c:443 msgid "Choose one of the available templates:\n" msgstr "Seleccione entre unha dos modelos:\n" #: subprojects/extensions-tool/src/command-create.c:457 msgid "Template" msgstr "Modelo" #: subprojects/extensions-tool/src/command-create.c:515 msgid "The unique identifier of the new extension" msgstr "O identificador único da nova extensión" #: subprojects/extensions-tool/src/command-create.c:518 msgid "NAME" msgstr "NOME" #: subprojects/extensions-tool/src/command-create.c:519 msgid "The user-visible name of the new extension" msgstr "O nome visíbel polo usuario da nova extensión" #: subprojects/extensions-tool/src/command-create.c:521 msgid "DESCRIPTION" msgstr "DESCRICIÓN" #: subprojects/extensions-tool/src/command-create.c:523 msgid "A short description of what the extension does" msgstr "Unha descrición curta do que a súa extensión fai" #: subprojects/extensions-tool/src/command-create.c:525 #: subprojects/extensions-tool/src/command-pack.c:455 msgid "DOMAIN" msgstr "DOMINIO" #: subprojects/extensions-tool/src/command-create.c:527 msgid "The gettext domain used by the extension" msgstr "O dominio de gettext a usar pola extensión" #: subprojects/extensions-tool/src/command-create.c:529 #: subprojects/extensions-tool/src/command-pack.c:448 msgid "SCHEMA" msgstr "ESQUEMA" #: subprojects/extensions-tool/src/command-create.c:531 msgid "The GSettings schema used by the extension" msgstr "O esquema de GSettings a usar pola extensión" #: subprojects/extensions-tool/src/command-create.c:534 msgid "TEMPLATE" msgstr "MODELO" #: subprojects/extensions-tool/src/command-create.c:535 msgid "The template to use for the new extension" msgstr "O modelo a usar para a nova extensión" #: subprojects/extensions-tool/src/command-create.c:538 msgid "Include prefs.js template" msgstr "Incluír modelo de prefs.js" #: subprojects/extensions-tool/src/command-create.c:544 msgid "Enter extension information interactively" msgstr "Escriba a información da extensión de forma interactiva" #: subprojects/extensions-tool/src/command-create.c:552 msgid "Create a new extension" msgstr "Crear unha nova extensión" #: subprojects/extensions-tool/src/command-create.c:570 #: subprojects/extensions-tool/src/command-list.c:190 msgid "Unknown arguments" msgstr "Argumentos descoñecidos" #: subprojects/extensions-tool/src/command-create.c:595 msgid "UUID, name and description are required" msgstr "Requírese o UUID, o nome e a descrición" #: subprojects/extensions-tool/src/command-disable.c:62 #: subprojects/extensions-tool/src/command-enable.c:62 #, c-format msgid "Extension “%s” does not exist\n" msgstr "A extensión «%s» non existe\n" #: subprojects/extensions-tool/src/command-disable.c:98 msgid "Disable an extension" msgstr "Desactivar unha extensión" #: subprojects/extensions-tool/src/command-disable.c:116 #: subprojects/extensions-tool/src/command-enable.c:116 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "Non se forneceu un UUID" #: subprojects/extensions-tool/src/command-disable.c:121 #: subprojects/extensions-tool/src/command-enable.c:121 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "Forneceuse máis dun UUID" #: subprojects/extensions-tool/src/command-enable.c:98 msgid "Enable an extension" msgstr "Activar unha extensión" #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:66 #: subprojects/extensions-tool/src/main.c:150 msgid "Failed to connect to GNOME Shell\n" msgstr "Produciuse un fallo ao conectarse á Shell de GNOME\n" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:159 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "A extensión «%s» non existe\n" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "Mostrar a información das extensións" #: subprojects/extensions-tool/src/command-install.c:190 msgid "Overwrite an existing extension" msgstr "Sobrescribir unha extensión existente" #: subprojects/extensions-tool/src/command-install.c:192 msgid "EXTENSION_BUNDLE" msgstr "EXTENSION_BUNDLE" #: subprojects/extensions-tool/src/command-install.c:201 msgid "Install an extension bundle" msgstr "Instala un paquete de extensión" #: subprojects/extensions-tool/src/command-install.c:219 msgid "No extension bundle specified" msgstr "Non se especificou ningún paquete" #: subprojects/extensions-tool/src/command-install.c:225 msgid "More than one extension bundle specified" msgstr "Especificouse máis dun paquete de extensión" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show user-installed extensions" msgstr "Mostra as extensións instaladas polo usuario" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show system-installed extensions" msgstr "Mostra as extensións instaladas no sistema" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Show enabled extensions" msgstr "Mostra as extensións activadas" #: subprojects/extensions-tool/src/command-list.c:149 msgid "Show disabled extensions" msgstr "Mostra as extensións desactivadas" #: subprojects/extensions-tool/src/command-list.c:152 msgid "Show extensions in active state" msgstr "Mostra as extensións con estado activo" #: subprojects/extensions-tool/src/command-list.c:155 msgid "Show extensions in inactive state" msgstr "Mostra as extensións con estado inactivo" #: subprojects/extensions-tool/src/command-list.c:158 msgid "Show extensions with preferences" msgstr "Mostra as extensións con preferencias" #: subprojects/extensions-tool/src/command-list.c:161 msgid "Show extensions with updates" msgstr "Mostra as extensións con actualizacións" #: subprojects/extensions-tool/src/command-list.c:164 msgid "Print extension details" msgstr "Imprime os detalles da extensión" #: subprojects/extensions-tool/src/command-list.c:172 msgid "List installed extensions" msgstr "Mostra as extensións instaladas" #: subprojects/extensions-tool/src/command-pack.c:444 msgid "FILE" msgstr "FICHEIRO" #: subprojects/extensions-tool/src/command-pack.c:445 msgid "Additional source to include in the bundle" msgstr "Orixe adicional a incluír no paquete" #: subprojects/extensions-tool/src/command-pack.c:449 msgid "A GSettings schema that should be included" msgstr "Un esquema de GSettings que debería incluírse" #: subprojects/extensions-tool/src/command-pack.c:451 #: subprojects/extensions-tool/src/command-pack.c:462 msgid "DIRECTORY" msgstr "DIRECTORIO" #: subprojects/extensions-tool/src/command-pack.c:453 msgid "The directory where translations are found" msgstr "O directorio onde se atopan as traducións" #: subprojects/extensions-tool/src/command-pack.c:457 msgid "The gettext domain to use for translations" msgstr "O dominio de gettext a usar nas traducións" #: subprojects/extensions-tool/src/command-pack.c:460 msgid "Overwrite an existing pack" msgstr "Sobrescribir un pack existente" #: subprojects/extensions-tool/src/command-pack.c:464 msgid "The directory where the pack should be created" msgstr "O directorio onde debería crearse o paquete" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "SOURCE_DIRECTORY" msgstr "DIRECTORIO_ORIXE" #: subprojects/extensions-tool/src/command-pack.c:475 msgid "Create an extension bundle" msgstr "Crear un paquete de extensión" #: subprojects/extensions-tool/src/command-pack.c:495 msgid "More than one source directory specified" msgstr "Especificouse máis dun directorio de orixe" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "A extensión «%s» non ten preferencias\n" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "Produciuse un erro ao abrir as preferencias para a extensión «%s»: %s\n" #: subprojects/extensions-tool/src/command-prefs.c:87 msgid "Opens extension preferences" msgstr "Abre as preferencias da extensión" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "Restabelece unha extensión" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "Non é posíbel desinstalar as extensións do sistema\n" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "Produciuse un erro ao desinstalar «%s»\n" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "Desinstala unha extensión" #: subprojects/extensions-tool/src/main.c:76 msgid "Do not print error messages" msgstr "Non imprimir os mensaxes de erro" #: subprojects/extensions-tool/src/main.c:249 msgid "Path" msgstr "Ruta" #: subprojects/extensions-tool/src/main.c:252 msgid "URL" msgstr "URL" #: subprojects/extensions-tool/src/main.c:255 msgid "Original author" msgstr "Autor orixinal" #: subprojects/extensions-tool/src/main.c:261 #: subprojects/extensions-tool/src/main.c:263 #: subprojects/extensions-tool/src/main.c:265 msgid "Version" msgstr "Versión" #: subprojects/extensions-tool/src/main.c:268 msgid "Enabled" msgstr "Activado" #: subprojects/extensions-tool/src/main.c:268 msgid "Yes" msgstr "Si" #: subprojects/extensions-tool/src/main.c:268 msgid "No" msgstr "Non" #: subprojects/extensions-tool/src/main.c:271 msgid "State" msgstr "Estado" #: subprojects/extensions-tool/src/main.c:309 msgid "“version” takes no arguments" msgstr "«version» non ten argumentos" #: subprojects/extensions-tool/src/main.c:311 #: subprojects/extensions-tool/src/main.c:331 msgid "Usage:" msgstr "Uso:" #: subprojects/extensions-tool/src/main.c:314 msgid "Print version information and exit." msgstr "Imprimir a información da versión e saír." #: subprojects/extensions-tool/src/main.c:329 #: subprojects/extensions-tool/src/main.c:332 msgid "COMMAND" msgstr "ORDE" #: subprojects/extensions-tool/src/main.c:332 msgid "[ARGS…]" msgstr "[ARGS…]" #: subprojects/extensions-tool/src/main.c:334 msgid "Commands:" msgstr "Ordes:" #: subprojects/extensions-tool/src/main.c:335 msgid "Print help" msgstr "Imprime a axuda" #: subprojects/extensions-tool/src/main.c:337 msgid "Enable extension" msgstr "Activar extensión" #: subprojects/extensions-tool/src/main.c:338 msgid "Disable extension" msgstr "Desactivar extensión" #: subprojects/extensions-tool/src/main.c:339 msgid "Reset extension" msgstr "Restabelecer extensión" #: subprojects/extensions-tool/src/main.c:340 msgid "Uninstall extension" msgstr "Desinstalar extensión" #: subprojects/extensions-tool/src/main.c:341 msgid "List extensions" msgstr "Listar as extensións" #: subprojects/extensions-tool/src/main.c:342 #: subprojects/extensions-tool/src/main.c:343 msgid "Show extension info" msgstr "Mostrar a información da extensión" #: subprojects/extensions-tool/src/main.c:344 msgid "Open extension preferences" msgstr "Abrir as preferencias da extensión" #: subprojects/extensions-tool/src/main.c:345 msgid "Create extension" msgstr "Crear extensión" #: subprojects/extensions-tool/src/main.c:346 msgid "Package extension" msgstr "Empaquetar extensión" #: subprojects/extensions-tool/src/main.c:347 msgid "Install extension bundle" msgstr "Instalar paquete de extensión" #: subprojects/extensions-tool/src/main.c:349 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "Use «%s» obter axuda detallada.\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "Plana" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "Unha extensión baleira" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "Indicador" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "Engade unha icona á barra superior" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:4 msgid "Quick Settings Item" msgstr "Elemento de preferencias rápidas" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:5 msgid "Add an item to quick settings" msgstr "Engadir un elemento ás preferencias rápidas" #. translators: #. * The device has been disabled #: subprojects/gvc/gvc-mixer-control.c:1872 msgid "Disabled" msgstr "Desactivado" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1879 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u saída" msgstr[1] "%u saídas" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1889 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u entrada" msgstr[1] "%u entradas" #: subprojects/gvc/gvc-mixer-control.c:2872 msgid "System Sounds" msgstr "Sons do sistema" #~ msgid "Move Titlebar Onscreen" #~ msgstr "Mover a barra de título na pantalla" #~ msgid "Stop conflicting session dialog closed" #~ msgstr "Deter o diálogo de sesión conflitiva pechado" #, javascript-format #~ msgid "Try to login again to start a session for user %s." #~ msgstr "" #~ "Tente iniciar sesión de novo para comezar unha sesión para o usuario %s." #, javascript-format #~ msgid "%s is now known as %s" #~ msgstr "Agora %s chámase %s" #~ msgid "Network Manager" #~ msgstr "Xestor da rede" #~ msgid "System Information" #~ msgstr "Información do sistema" #~ msgid "Thunderbolt" #~ msgstr "Thunderbolt" #~ msgid "Disabling" #~ msgstr "Desactivando" #~ msgid "Enabling" #~ msgstr "Activando" #, javascript-format #~ msgid "%d %%" #~ msgstr "%d %%" #~ msgid "No Thanks" #~ msgstr "Non grazas" #~ msgid "No Matches" #~ msgstr "Non hai coincidencias" #~ msgid "The extension had an error" #~ msgstr "A extensión tivo un erro" #~ msgid "The extension can be updated" #~ msgstr "A extensións pode actualizarse" #~ msgid "Help" #~ msgstr "Axuda" #~ msgid "Manually Installed" #~ msgstr "Instaladas manualmente" #~ msgid "Built-In" #~ msgstr "Internas" #~ msgid "Extension Updates Ready" #~ msgstr "Actualizacións de extensión dispoñíbeis" 07070100000236000081A40000000000000000000000016712993F00015BD4000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/gu.po# translation of gu.po to Gujarati # Gujarati translation for gnome-shell. # Copyright (C) 2011 gnome-shell's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-shell package. # # Sweta Kothari , 2011, 2012, 2013, 2014. msgid "" msgstr "" "Project-Id-Version: gu\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug." "cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2014-10-01 07:39+0000\n" "PO-Revision-Date: 2014-10-01 15:51+0530\n" "Last-Translator: \n" "Language-Team: American English \n" "Language: gu\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: Lokalize 1.0\n" #: ../data/50-gnome-shell-system.xml.in.h:1 msgid "System" msgstr "સિસ્ટમ" #: ../data/50-gnome-shell-system.xml.in.h:2 msgid "Show the message tray" msgstr "સંદેશો ટ્રેને બતાવો" #: ../data/50-gnome-shell-system.xml.in.h:3 msgid "Focus the active notification" msgstr "સક્રિય સૂચના પર પ્રકાશ નાંખો" #: ../data/50-gnome-shell-system.xml.in.h:4 msgid "Show the overview" msgstr "ઝાંખી બતાવો" #: ../data/50-gnome-shell-system.xml.in.h:5 msgid "Show all applications" msgstr "બધા કાર્યક્રમો બતાવો" #: ../data/50-gnome-shell-system.xml.in.h:6 msgid "Open the application menu" msgstr "કાર્યક્રમ મેનુને ખોલો" #: ../data/gnome-shell.desktop.in.in.h:1 msgid "GNOME Shell" msgstr "GNOME શેલ" #: ../data/gnome-shell.desktop.in.in.h:2 #: ../data/gnome-shell-wayland.desktop.in.in.h:2 msgid "Window management and application launching" msgstr "વિન્ડો સંચાલન અને કાર્યક્રમ શરૂઆત" #: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1 msgid "GNOME Shell Extension Preferences" msgstr "GNOME Shell ઍક્સટેન્શન પસંદગીઓ" #: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2 msgid "Configure GNOME Shell Extensions" msgstr "GNOME Shell ઍક્સટેન્શનને રૂપરેખાંકિત કરો" #: ../data/gnome-shell-wayland.desktop.in.in.h:1 msgid "GNOME Shell (wayland compositor)" msgstr "GNOME Shell (વેલૅન્ડ કંપોઝીટર)" #: ../data/org.gnome.shell.gschema.xml.in.in.h:1 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "Alt-F2 માંથી ડેવલપર અને ટેસ્ટર માટે ઉપયોગી આંતરિક સાધનોને સક્રિય કરો" #: ../data/org.gnome.shell.gschema.xml.in.in.h:2 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "Alt-F2 સંવાદની મદદથી આંતરિક ડિબગીંગ અને મોનિટરીંગ સાધનોને વાપરવા પરવાનગી આપે છે." #: ../data/org.gnome.shell.gschema.xml.in.in.h:3 msgid "UUIDs of extensions to enable" msgstr "સક્રિય કરવા માટે એક્સટેન્શનનું UUIDs" #: ../data/org.gnome.shell.gschema.xml.in.in.h:4 #| msgid "" #| "GNOME Shell extensions have a uuid property; this key lists extensions " #| "which should be loaded. Any extension that wants to be loaded needs to be " #| "in this list. You can also manipulate this list with the EnableExtension " #| "and DisableExtension DBus methods on org.gnome.Shell." msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "GNOME Shell ઍક્સટેન્શન પાસે UUID ગુણધર્મ છે; આ કી ઍક્સટેન્શનની યાદી કરે છે કે જેને લાવેલ હોવુ " "જોઇએ. કોઇપણ ઍક્સટેન્શન કે જેને આ યાદીમાં લાવવાની જરૂર છે. તમે પણ org.gnome.Shell પર " "EnableExtension અને DisableExtension DBus પદ્દતિઓ સાથે આ યાદીને કુશળતાપૂર્વક વાપરી " "શકો છો." #: ../data/org.gnome.shell.gschema.xml.in.in.h:5 msgid "Disables the validation of extension version compatibility" msgstr "ઍક્સટેન્શન આવૃત્તિ સુસંગતતાની માન્યતાને નિષ્ક્રિય કરે છે" #: ../data/org.gnome.shell.gschema.xml.in.in.h:6 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "GNOME Shell એ ફક્ત ઍક્સટેન્શનને લાવશે કે જે હાલની ચાલતી આવૃત્તિને આધાર આપવા માટે દાવો કરે છે. " "આ વિકલ્પને સક્રિય કરવાનું આ ચકાસણીને નિષ્ક્રિય કરશે અને આવૃત્તિને બાદ કરતા બધા ઍક્સટેન્શનને " "લાવવાનો પ્રયત્ન કરે છે જે તેઓ આધાર આપવા માટે દાવો કરે છે." #: ../data/org.gnome.shell.gschema.xml.in.in.h:7 msgid "List of desktop file IDs for favorite applications" msgstr "પસંદીદા કાર્યક્રમો માટે ડેસ્કટોપ ફાઇલ IDs ની યાદી કરો" #: ../data/org.gnome.shell.gschema.xml.in.in.h:8 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "કાર્યક્રમો આ ઓળખકર્તાઓ સાથે સંકળાયેલ છે તે પસંદીદા વિસ્તારમાં દેખાશે." #: ../data/org.gnome.shell.gschema.xml.in.in.h:9 msgid "App Picker View" msgstr "કાર્યક્રમ પસંદકર્તા દૃશ્ય" #: ../data/org.gnome.shell.gschema.xml.in.in.h:10 msgid "Index of the currently selected view in the application picker." msgstr "કાર્યક્રમ પસંદકર્તામાં હાલમાં પસંદ થયેલ દૃશ્યની અનુક્રમણિકા." #: ../data/org.gnome.shell.gschema.xml.in.in.h:11 msgid "History for command (Alt-F2) dialog" msgstr "આદેશ (Alt-F2) સંવાદ માટે ઇતિહાસ" #: ../data/org.gnome.shell.gschema.xml.in.in.h:12 msgid "History for the looking glass dialog" msgstr "ગ્લાસ સંવાદને જોવા માટે ઇતિહાસ" #: ../data/org.gnome.shell.gschema.xml.in.in.h:13 msgid "Always show the 'Log out' menu item in the user menu." msgstr "વપરાશકર્તા મેનુમાં હંમેશા 'બહાર નીકળો' મેનુ વસ્તુને બતાવો." #: ../data/org.gnome.shell.gschema.xml.in.in.h:14 #| msgid "" #| "This key overrides the automatic hiding of the 'Log out' menuitem in " #| "single-user, single-session situations." msgid "" "This key overrides the automatic hiding of the 'Log out' menu item in single-" "user, single-session situations." msgstr "" "આ કી એકજ વપરાશકર્તા, એકજ-સત્ર પરિસ્થિતિઓમાં 'બહાર નીકળો' મેનુવસ્તુને આપમેળે છુપાવવા આ કીને " "ઓવરરાઇડ કરવામાં " "આવી છે." #: ../data/org.gnome.shell.gschema.xml.in.in.h:15 msgid "Whether to remember password for mounting encrypted or remote filesystems" msgstr "એનક્રિપ્ટ થયેલ અથવા દૂરસ્થ ફાઇલ સિસ્ટમોને માઉન્ટ કરવા માટે ક્યાંતો પાસવર્ડ યાદ રાખો" #: ../data/org.gnome.shell.gschema.xml.in.in.h:16 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "'Remember Password' checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "શેલ પાસવર્ડને સૂચિત કરશે જ્યારે એનક્રિપ્ટ થયેલ ઉપકરણ અથવા દૂસ્થ ફાઇલસિસ્ટમ માઉન્ટ થયેલ હોય. " "જો પાસવર્ડ ભવિષ્યનાં વપરાશ માટે સંગ્રહી શકાય છે 'પાસવર્ડ યાદ રાખો' ચેકબોક્સ હાજર રહેશે. " "આ કી ચેકબોક્સની મૂળભૂત સ્થિતિને સુયોજિત કરે છે." #: ../data/org.gnome.shell.gschema.xml.in.in.h:17 msgid "Show the week date in the calendar" msgstr "કૅલેન્ડરમાં અઠવાડિયા તારીખને બતાવો" #: ../data/org.gnome.shell.gschema.xml.in.in.h:18 msgid "If true, display the ISO week date in the calendar." msgstr "જો true હોય તો, કૅલેન્ડરમાં ISO અઠવાડિયાની તારીખને દર્શાવો." #: ../data/org.gnome.shell.gschema.xml.in.in.h:19 msgid "Keybinding to open the application menu" msgstr "કાર્યક્રમ મેનુને ખોલવા માટે કિબાઇન્ડીંગ" #: ../data/org.gnome.shell.gschema.xml.in.in.h:20 msgid "Keybinding to open the application menu." msgstr "કાર્યક્રમ મેનુને ખોલવા માટે કિબાઇન્ડીંગ." #: ../data/org.gnome.shell.gschema.xml.in.in.h:21 msgid "Keybinding to open the \"Show Applications\" view" msgstr "\"કાર્યક્રમો બતાવો\" દૃશ્યને ખોલવા માટે કિબાઇન્ડીંગ" #: ../data/org.gnome.shell.gschema.xml.in.in.h:22 msgid "Keybinding to open the \"Show Applications\" view of the Activities Overview." msgstr "પ્રવૃત્તિ ઝાંખીનાં \"કાર્યક્રમો બતાવો\" દૃશ્યને ખોલવા માટે કિબાઇન્ડીંગ." #: ../data/org.gnome.shell.gschema.xml.in.in.h:23 msgid "Keybinding to open the overview" msgstr "ઝાંખીને ખોલવા માટે કિબાઇન્ડીંગ" #: ../data/org.gnome.shell.gschema.xml.in.in.h:24 msgid "Keybinding to open the Activities Overview." msgstr "પ્રવૃત્તિ ઝાંખીને ખોલવા માટે કિબાઇન્ડીંગ" #: ../data/org.gnome.shell.gschema.xml.in.in.h:25 msgid "Keybinding to toggle the visibility of the message tray" msgstr "કાર્યક્રમ મેનુને ખોલવા માટે કિબાઇન્ડીંગ" #: ../data/org.gnome.shell.gschema.xml.in.in.h:26 msgid "Keybinding to toggle the visibility of the message tray." msgstr "કાર્યક્રમ મેનુને ખોલવા માટે કિબાઇન્ડીંગ" #: ../data/org.gnome.shell.gschema.xml.in.in.h:27 msgid "Keybinding to focus the active notification" msgstr "સક્રિય સૂચના પર પ્રકાશ નાંખવા માટે કિબાઇન્ડીંગ" #: ../data/org.gnome.shell.gschema.xml.in.in.h:28 msgid "Keybinding to focus the active notification." msgstr "સક્રિય સૂચના પર પ્રકાશ નાંખવા માટે કિબાઇન્ડીંગ" #: ../data/org.gnome.shell.gschema.xml.in.in.h:29 msgid "Keybinding that pauses and resumes all running tweens, for debugging purposes" msgstr "કીબાઇન્ડીંગ કે જે બધી ચાલતી ટ્વીનને અટકાવે છે અને પાછુ લાવે છે, ડિબગીંગ હેતુઓ માટે" #: ../data/org.gnome.shell.gschema.xml.in.in.h:30 msgid "Which keyboard to use" msgstr "ક્યુ કિબોર્ડ વાપરવુ છે" #: ../data/org.gnome.shell.gschema.xml.in.in.h:31 msgid "The type of keyboard to use." msgstr "વાપરવા માટે કિબોર્ડનો પ્રકાર." #: ../data/org.gnome.shell.gschema.xml.in.in.h:32 msgid "Limit switcher to current workspace." msgstr "વર્તમાન કામ કરવાની જગ્યા માટે સ્વિચર મર્યાદિત કરી છે." #: ../data/org.gnome.shell.gschema.xml.in.in.h:33 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "જો true હોય તો, ફક્ત કાર્યક્રમો કે જેની પાસે હાલની કાર્ય કરવાની જગ્યા પર વિન્ડો છે તે " "સ્વીચરમાં બતાવેલ છે. નહિંતો, બધા કાર્યક્રમનો સમાવેલ છે." #: ../data/org.gnome.shell.gschema.xml.in.in.h:34 msgid "The application icon mode." msgstr "કાર્યક્રમ સંકેત સ્થિતિ." #: ../data/org.gnome.shell.gschema.xml.in.in.h:35 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-" "only' (shows only the application icon) or 'both'." msgstr "" "રૂપરેખાંકિત કરે છે કે સ્વીચરમાં કેવી રીતે વિન્ડો બતાવેલ છે. યોગ્ય શક્યતાઓ 'થમ્ભનેઇલ-" "ફક્ત' (વિન્ડોનાં થમ્ભનેઇલને બતાવે છે), 'કાર્યક્રમ-ચિહ્ન-ફક્ત' (ફક્ત કાર્યક્રમ ચિહ્ન બતાવે છે) " "અથવા 'બંને' છે. " #: ../data/org.gnome.shell.gschema.xml.in.in.h:36 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "જો true હોય તો, હાલની કાર્ય કરવાની જગ્યામાંથી વિન્ડો સ્વીચરમાં બતાવેલ છે. નહિં તો, બધી " "વિન્ડોને સમાવેલ છે." #: ../data/org.gnome.shell.gschema.xml.in.in.h:37 msgid "Attach modal dialog to the parent window" msgstr "મુખ્ય વિન્ડોમાં મોડલ સંવાદને જોડો" #: ../data/org.gnome.shell.gschema.xml.in.in.h:38 msgid "This key overrides the key in org.gnome.mutter when running GNOME Shell." msgstr "આ કી org.gnome.mutter માં કી ઉપર લખાઇ જશે જ્યારે GNOME Shell ચાલી રહ્યુ હોય." #: ../data/org.gnome.shell.gschema.xml.in.in.h:39 msgid "Enable edge tiling when dropping windows on screen edges" msgstr "જ્યારે સ્ક્રીન બાજુ પર વિન્ડોને પડતી મૂકી રહ્યા હોય ત્યારે ટાઇલીંગ સક્રિય કરો" #: ../data/org.gnome.shell.gschema.xml.in.in.h:40 msgid "Workspaces are managed dynamically" msgstr "કામ કરવાની જગ્યા ગતિશીલ રીતે સંચાલિત થયેલ છે" #: ../data/org.gnome.shell.gschema.xml.in.in.h:41 msgid "Workspaces only on primary monitor" msgstr "ફક્ત પ્રાથમિક મોનિટર પર કામ કરવાની જગ્યા" #: ../data/org.gnome.shell.gschema.xml.in.in.h:42 msgid "Delay focus changes in mouse mode until the pointer stops moving" msgstr "માઉસ સ્થિતિમાં ફેરફારો કરવામાં વિલંબ જ્યાં સુધી પોઇંટર ખસેડવાનું બંધ થાય" #: ../data/org.gnome.Shell.PortalHelper.desktop.in.h:1 msgid "Captive Portal" msgstr "કૅપ્ટીવ પોર્ટલ" #: ../js/extensionPrefs/main.js:123 #, javascript-format msgid "There was an error loading the preferences dialog for %s:" msgstr "ત્યાં %s માટે પસંદગી સંવાદને લાવવામાં ભૂલ હતી:" #: ../js/extensionPrefs/main.js:155 msgid "GNOME Shell Extensions" msgstr "GNOME Shell ઍક્સટેન્શન" #: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143 #: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:452 #: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399 #: ../js/ui/status/network.js:915 msgid "Cancel" msgstr "રદ કરો" #: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:217 msgid "Next" msgstr "આગળ" #: ../js/gdm/authPrompt.js:213 ../js/ui/shellMountOperation.js:403 #: ../js/ui/unlockDialog.js:59 msgid "Unlock" msgstr "તાળું ખોલો" #: ../js/gdm/authPrompt.js:215 msgctxt "button" msgid "Sign In" msgstr "પ્રવેશો" #: ../js/gdm/loginDialog.js:269 msgid "Choose Session" msgstr "સત્ર પસંદ કરો" #: ../js/gdm/loginDialog.js:429 msgid "Not listed?" msgstr "શું યાદી થયેલ નથી?" #: ../js/gdm/loginDialog.js:614 #, javascript-format msgid "(e.g., user or %s)" msgstr "(દા.ત., વપરાશકર્તા અથવા %s)" #: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:269 #: ../js/ui/components/networkAgent.js:287 msgid "Username: " msgstr "વપરાશકર્તાનામ:" #: ../js/gdm/loginDialog.js:922 msgid "Login Window" msgstr "પ્રવેશ વિન્ડો" #: ../js/gdm/util.js:323 msgid "Authentication error" msgstr "સત્તાધિકરણ ભૂલ" #: ../js/gdm/util.js:453 msgid "(or swipe finger)" msgstr "(અથવા સ્વાઇપ આંગળી)" #: ../js/misc/util.js:115 msgid "Command not found" msgstr "આદેશ મળ્યો નથી" #: ../js/misc/util.js:148 msgid "Could not parse command:" msgstr "આદેશનું પદચ્છેદન કરી શક્યા નથી:" #: ../js/misc/util.js:156 #, javascript-format msgid "Execution of “%s” failed:" msgstr "“%s” ને અમલમાં મૂકવાનુ નિષ્ફળ:" #: ../js/portalHelper/main.js:85 msgid "Web Authentication Redirect" msgstr "વેબ સત્તાધિકરણ દિશામાન" #: ../js/ui/appDisplay.js:772 msgid "Frequently used applications will appear here" msgstr "વારંવાર વપરાતા કાર્યક્રમો અહિંયા દેખાશે" #: ../js/ui/appDisplay.js:883 msgid "Frequent" msgstr "સામાન્ય" #: ../js/ui/appDisplay.js:890 msgid "All" msgstr "બધા" #: ../js/ui/appDisplay.js:1790 msgid "New Window" msgstr "નવી વિન્ડો" #: ../js/ui/appDisplay.js:1816 ../js/ui/dash.js:285 msgid "Remove from Favorites" msgstr "પસંદીદાઓ માંથી દૂર કરો" #: ../js/ui/appDisplay.js:1822 msgid "Add to Favorites" msgstr "પસંદીદાને ઉમેરો" #: ../js/ui/appDisplay.js:1831 msgid "Show Details" msgstr "વિગતો બતાવો" #: ../js/ui/appFavorites.js:132 #, javascript-format msgid "%s has been added to your favorites." msgstr "%s ને તમારી પસંદીદામાં ઉમેરી દેવામાં આવ્યુ છે." #: ../js/ui/appFavorites.js:166 #, javascript-format msgid "%s has been removed from your favorites." msgstr "%s ને તમારી પસંદીદામાંથી દૂર કરી દેવામાં આવ્યુ છે." #: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:813 #: ../js/ui/status/system.js:337 msgid "Settings" msgstr "સુયોજનો" #: ../js/ui/backgroundMenu.js:21 msgid "Change Background…" msgstr "પાશ્ર્વભાગને બદલો..." #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. */ #: ../js/ui/calendar.js:67 msgctxt "event list time" msgid "All Day" msgstr "બધા દિવસ" #. Translators: Shown in calendar event list, if 24h format, #. \u2236 is a ratio character, similar to : */ #: ../js/ui/calendar.js:73 msgctxt "event list time" msgid "%H∶%M" msgstr "%H∶%M" #. Translators: Shown in calendar event list, if 12h format, #. \u2236 is a ratio character, similar to : and \u2009 is #. a thin space */ #: ../js/ui/calendar.js:82 msgctxt "event list time" msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. */ #: ../js/ui/calendar.js:113 msgctxt "grid sunday" msgid "S" msgstr "S" #. Translators: Calendar grid abbreviation for Monday */ #: ../js/ui/calendar.js:115 msgctxt "grid monday" msgid "M" msgstr "M" #. Translators: Calendar grid abbreviation for Tuesday */ #: ../js/ui/calendar.js:117 msgctxt "grid tuesday" msgid "T" msgstr "T" #. Translators: Calendar grid abbreviation for Wednesday */ #: ../js/ui/calendar.js:119 msgctxt "grid wednesday" msgid "W" msgstr "W" #. Translators: Calendar grid abbreviation for Thursday */ #: ../js/ui/calendar.js:121 msgctxt "grid thursday" msgid "T" msgstr "T" #. Translators: Calendar grid abbreviation for Friday */ #: ../js/ui/calendar.js:123 msgctxt "grid friday" msgid "F" msgstr "F" #. Translators: Calendar grid abbreviation for Saturday */ #: ../js/ui/calendar.js:125 msgctxt "grid saturday" msgid "S" msgstr "S" #. Translators: Event list abbreviation for Sunday. #. * #. * NOTE: These list abbreviations are normally not shown together #. * so they need to be unique (e.g. Tuesday and Thursday cannot #. * both be 'T'). #. */ #: ../js/ui/calendar.js:138 msgctxt "list sunday" msgid "Su" msgstr "Su" #. Translators: Event list abbreviation for Monday */ #: ../js/ui/calendar.js:140 msgctxt "list monday" msgid "M" msgstr "M" #. Translators: Event list abbreviation for Tuesday */ #: ../js/ui/calendar.js:142 msgctxt "list tuesday" msgid "T" msgstr "T" #. Translators: Event list abbreviation for Wednesday */ #: ../js/ui/calendar.js:144 msgctxt "list wednesday" msgid "W" msgstr "W" #. Translators: Event list abbreviation for Thursday */ #: ../js/ui/calendar.js:146 msgctxt "list thursday" msgid "Th" msgstr "Th" #. Translators: Event list abbreviation for Friday */ #: ../js/ui/calendar.js:148 msgctxt "list friday" msgid "F" msgstr "F" #. Translators: Event list abbreviation for Saturday */ #: ../js/ui/calendar.js:150 msgctxt "list saturday" msgid "S" msgstr "S" #: ../js/ui/calendar.js:453 msgid "Previous month" msgstr "પહેલાંનો મહિનો" #: ../js/ui/calendar.js:463 msgid "Next month" msgstr "આગળનો મહિનો" #. Translators: Text to show if there are no events */ #: ../js/ui/calendar.js:781 msgid "Nothing Scheduled" msgstr "અનુસૂચિત કંઇ નથી" #. Translators: Shown on calendar heading when selected day occurs on current year */ #: ../js/ui/calendar.js:799 msgctxt "calendar heading" msgid "%A, %B %d" msgstr "%A, %B %d" #. Translators: Shown on calendar heading when selected day occurs on different year */ #: ../js/ui/calendar.js:802 msgctxt "calendar heading" msgid "%A, %B %d, %Y" msgstr "%A, %B %d, %Y" #: ../js/ui/calendar.js:813 msgid "Today" msgstr "આજે" #: ../js/ui/calendar.js:817 msgid "Tomorrow" msgstr "આવતી કાલે" #: ../js/ui/calendar.js:828 msgid "This week" msgstr "આ અઠવાડિયે" #: ../js/ui/calendar.js:836 msgid "Next week" msgstr "આગળનું અઠવાડિયું" #: ../js/ui/components/automountManager.js:91 msgid "External drive connected" msgstr "બહારની ડ્રાઇવ જોડાયેલ છે" #: ../js/ui/components/automountManager.js:102 msgid "External drive disconnected" msgstr "બહારની ડ્રાઇવનું જોડાણ તૂટી ગયુ" #: ../js/ui/components/autorunManager.js:296 msgid "Removable Devices" msgstr "દૂર કરી શકાય તેવા ઉપકરણો" #: ../js/ui/components/autorunManager.js:596 #, javascript-format msgid "Open with %s" msgstr "%s સાથે ખોલો" #: ../js/ui/components/autorunManager.js:622 msgid "Eject" msgstr "રદ કરો" #: ../js/ui/components/keyring.js:94 ../js/ui/components/polkitAgent.js:285 msgid "Password:" msgstr "પાસવર્ડ:" #: ../js/ui/components/keyring.js:120 msgid "Type again:" msgstr "ફરીથી પ્રયત્ન કરો:" #: ../js/ui/components/networkAgent.js:138 ../js/ui/status/network.js:277 #: ../js/ui/status/network.js:359 ../js/ui/status/network.js:918 msgid "Connect" msgstr "જોડાવો" #: ../js/ui/components/networkAgent.js:231 #: ../js/ui/components/networkAgent.js:243 #: ../js/ui/components/networkAgent.js:271 #: ../js/ui/components/networkAgent.js:291 #: ../js/ui/components/networkAgent.js:301 msgid "Password: " msgstr "પાસવર્ડ:" #: ../js/ui/components/networkAgent.js:236 msgid "Key: " msgstr "કી:" #: ../js/ui/components/networkAgent.js:275 msgid "Identity: " msgstr "ઓળખાણ: " #: ../js/ui/components/networkAgent.js:277 msgid "Private key password: " msgstr "ખાનગી કી પાસવર્ડ:" #: ../js/ui/components/networkAgent.js:289 msgid "Service: " msgstr "સેવા:" #: ../js/ui/components/networkAgent.js:318 msgid "Authentication required by wireless network" msgstr "વાયરલેસ નેટવર્ક દ્દારાસત્તાધિકરણ જરૂરી" #: ../js/ui/components/networkAgent.js:319 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network " "“%s”." msgstr "પાસવર્ડ અથવા એનક્રિપ્શન કીઓને વાયરલેસ નેટવર્ક “%s” માં પ્રવેશની જરૂર છે." #: ../js/ui/components/networkAgent.js:323 msgid "Wired 802.1X authentication" msgstr "વાયર થયેલ 802.1X સત્તાધિકરણ" #: ../js/ui/components/networkAgent.js:325 msgid "Network name: " msgstr "નેટવર્ક નામ:" #: ../js/ui/components/networkAgent.js:330 msgid "DSL authentication" msgstr "DSL સત્તાધિકરણ" #: ../js/ui/components/networkAgent.js:337 msgid "PIN code required" msgstr "PIN કોડ જરૂરી" #: ../js/ui/components/networkAgent.js:338 msgid "PIN code is needed for the mobile broadband device" msgstr "મોબાઇલ બ્રોડબેન્ડ ઉપકરણ માટે PIN કોડ જરૂરી છે" #: ../js/ui/components/networkAgent.js:339 msgid "PIN: " msgstr "PIN: " #: ../js/ui/components/networkAgent.js:345 msgid "Mobile broadband network password" msgstr "મોબાઇલ બ્રોડબેન્ડ નેટવર્ક પાસવર્ડ" #: ../js/ui/components/networkAgent.js:346 #, javascript-format msgid "A password is required to connect to “%s”." msgstr "પાસવર્ડ “%s” સાથે જોડાવા માટે જરૂરી છે." #: ../js/ui/components/polkitAgent.js:54 msgid "Authentication Required" msgstr "સત્તાધિકરણ જરૂરી" #: ../js/ui/components/polkitAgent.js:96 msgid "Administrator" msgstr "વહીવટકર્તા" #: ../js/ui/components/polkitAgent.js:175 msgid "Authenticate" msgstr "સત્તાધિકરણ" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. */ #: ../js/ui/components/polkitAgent.js:271 ../js/ui/shellMountOperation.js:383 msgid "Sorry, that didn't work. Please try again." msgstr "દિલગીર છું, કામ કરતુ નથી. મહેરબાની કરીને ફરીથી પ્રયત્ન કરો." #: ../js/ui/components/telepathyClient.js:240 msgid "Invitation" msgstr "આમંત્રણ" #: ../js/ui/components/telepathyClient.js:300 msgid "Call" msgstr "કોલ" #: ../js/ui/components/telepathyClient.js:316 msgid "File Transfer" msgstr "ફાઇલ પરિવહન" #: ../js/ui/components/telepathyClient.js:420 msgid "Chat" msgstr "વાતચીત" #: ../js/ui/components/telepathyClient.js:483 msgid "Unmute" msgstr "અવાજ ચાલુ રાખો" #: ../js/ui/components/telepathyClient.js:483 msgid "Mute" msgstr "મૂંગુ" #. Translators: Time in 24h format */ #: ../js/ui/components/telepathyClient.js:953 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" */ #: ../js/ui/components/telepathyClient.js:960 msgid "Yesterday, %H∶%M" msgstr "ગઇ કાલે, %H:%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" */ #: ../js/ui/components/telepathyClient.js:967 msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" */ #: ../js/ui/components/telepathyClient.js:974 msgid "%B %d, %H∶%M" msgstr "%B %d, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" */ #: ../js/ui/components/telepathyClient.js:980 msgid "%B %d %Y, %H∶%M" msgstr "%B %d %Y, %H∶%M" #. Translators: Time in 24h format */ #: ../js/ui/components/telepathyClient.js:986 msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" */ #: ../js/ui/components/telepathyClient.js:993 msgid "Yesterday, %l∶%M %p" msgstr "ગઈકાલે ∶%l:%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" */ #: ../js/ui/components/telepathyClient.js:1000 msgid "%A, %l∶%M %p" msgstr "%A, %l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" */ #: ../js/ui/components/telepathyClient.js:1007 msgid "%B %d, %l∶%M %p" msgstr "%B %d, %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm"*/ #: ../js/ui/components/telepathyClient.js:1013 msgid "%B %d %Y, %l∶%M %p" msgstr "%B %d %Y, %l∶%M %p" #. Translators: this is the other person changing their old IM name to their new #. IM name. */ #: ../js/ui/components/telepathyClient.js:1045 #, javascript-format msgid "%s is now known as %s" msgstr "%s એ હવે %s તરીકે જાણીતુ છે" #. translators: argument is a room name like #. * room@jabber.org for example. */ #: ../js/ui/components/telepathyClient.js:1149 #, javascript-format msgid "Invitation to %s" msgstr "%s માં આમંત્રણ" #. translators: first argument is the name of a contact and the second #. * one the name of a room. "Alice is inviting you to join room@jabber.org #. * for example. */ #: ../js/ui/components/telepathyClient.js:1157 #, javascript-format msgid "%s is inviting you to join %s" msgstr "%s એ તમને %s માં જોડાવા માટે આમંત્રણ આપી રહ્યા છે" #: ../js/ui/components/telepathyClient.js:1159 #: ../js/ui/components/telepathyClient.js:1194 #: ../js/ui/components/telepathyClient.js:1228 #: ../js/ui/components/telepathyClient.js:1286 msgid "Decline" msgstr "ના પાડવી" #: ../js/ui/components/telepathyClient.js:1165 #: ../js/ui/components/telepathyClient.js:1234 #: ../js/ui/components/telepathyClient.js:1291 msgid "Accept" msgstr "સ્વીકારો" #. translators: argument is a contact name like Alice for example. */ #: ../js/ui/components/telepathyClient.js:1184 #, javascript-format msgid "Video call from %s" msgstr "%s માંથી વિડીયો કોલ" #. translators: argument is a contact name like Alice for example. */ #: ../js/ui/components/telepathyClient.js:1187 #, javascript-format msgid "Call from %s" msgstr "%s માંથી કોલ" #. translators: this is a button label (verb), not a noun */ #: ../js/ui/components/telepathyClient.js:1201 msgid "Answer" msgstr "જવાબ" #. To translators: The first parameter is #. * the contact's alias and the second one is the #. * file name. The string will be something #. * like: "Alice is sending you test.ogg" #. */ #: ../js/ui/components/telepathyClient.js:1222 #, javascript-format msgid "%s is sending you %s" msgstr "%s એ %s માં મોકલી રહ્યા છે" #. To translators: The parameter is the contact's alias */ #: ../js/ui/components/telepathyClient.js:1251 #, javascript-format msgid "%s would like permission to see when you are online" msgstr "%s ને જોવા માટે પરવાનગી આપવાનું ગમે થે જ્યારે તમે ઓનલાઇન હોય" #: ../js/ui/components/telepathyClient.js:1337 msgid "Network error" msgstr "નેટવર્ક ભૂલ" #: ../js/ui/components/telepathyClient.js:1339 msgid "Authentication failed" msgstr "સત્તાધિકરણ નિષ્ક્રિય" #: ../js/ui/components/telepathyClient.js:1341 msgid "Encryption error" msgstr "એનક્રિપ્શન ભૂલ" #: ../js/ui/components/telepathyClient.js:1343 msgid "Certificate not provided" msgstr "પ્રમાણપત્ર પૂરુ પાડેલ નથી" #: ../js/ui/components/telepathyClient.js:1345 msgid "Certificate untrusted" msgstr "પ્રમાણપત્ર વિશ્ર્વાસપાત્ર નથી" #: ../js/ui/components/telepathyClient.js:1347 msgid "Certificate expired" msgstr "પ્રમાણપત્ર નિવૃત્ત થયેલ છે" #: ../js/ui/components/telepathyClient.js:1349 msgid "Certificate not activated" msgstr "પ્રમાણપત્ર સક્રિય થયેલ નથી" #: ../js/ui/components/telepathyClient.js:1351 msgid "Certificate hostname mismatch" msgstr "પ્રમાણપત્ર યજમાનનામ બંધબેસતુ નથી" #: ../js/ui/components/telepathyClient.js:1353 msgid "Certificate fingerprint mismatch" msgstr "પ્રમાણપજ્ઞ ફિંગરપ્રિન્ટ બંધબેસતુ નથી" #: ../js/ui/components/telepathyClient.js:1355 msgid "Certificate self-signed" msgstr "જાતે હસ્તાક્ષર થયેલ પ્રમાણપત્ર" #: ../js/ui/components/telepathyClient.js:1357 msgid "Status is set to offline" msgstr "સ્થિતિ ઓફલાઇન તરીકે સુયોજિત છે" #: ../js/ui/components/telepathyClient.js:1359 msgid "Encryption is not available" msgstr "એનક્રિપ્શન ઉપલબ્ધ નથી" #: ../js/ui/components/telepathyClient.js:1361 msgid "Certificate is invalid" msgstr "પ્રમાણપત્ર અમાન્ય છે" #: ../js/ui/components/telepathyClient.js:1363 msgid "Connection has been refused" msgstr "જોડાણને નામંજૂર કરી દેવામાં આવ્યુ છે" #: ../js/ui/components/telepathyClient.js:1365 msgid "Connection can't be established" msgstr "જોડાણ સ્થાપિત કરી શકાતુ નથી" #: ../js/ui/components/telepathyClient.js:1367 msgid "Connection has been lost" msgstr "જોડાણ ખોવાઈ ગયેલ છે" #: ../js/ui/components/telepathyClient.js:1369 msgid "This account is already connected to the server" msgstr "આ ખાતુ પહેલેથી જ સર્વર સાથે જોડાયેલ છે" #: ../js/ui/components/telepathyClient.js:1371 msgid "Connection has been replaced by a new connection using the same resource" msgstr "સરખા સ્ત્રોતની મદદથી જોડાણને નવાં જોડાણ દ્દારા બદલી દેવામાં આવ્યુ છે" #: ../js/ui/components/telepathyClient.js:1373 msgid "The account already exists on the server" msgstr "ખાતુ પહેલેથી સર્વર પર અસ્તિત્વ ધરાવે છે" #: ../js/ui/components/telepathyClient.js:1375 msgid "Server is currently too busy to handle the connection" msgstr "સર્વર એ જોડાણને સંચાલિત કરવા માટે હાલમાં વ્યસ્ત છે" #: ../js/ui/components/telepathyClient.js:1377 msgid "Certificate has been revoked" msgstr "પ્રમાણપત્રને રદ કરી દેવામાં આવ્યુ છે" #: ../js/ui/components/telepathyClient.js:1379 msgid "Certificate uses an insecure cipher algorithm or is cryptographically weak" msgstr "પ્રમાણપત્ર અસુરક્ષિત સાઇફર અલ્ગોરિધમને વાપરે છે અથવા ક્રિપ્ટોગ્રાફિકલી નબળુ છે" #: ../js/ui/components/telepathyClient.js:1381 msgid "" "The length of the server certificate, or the depth of the server certificate " "chain, exceed the limits imposed by the cryptography library" msgstr "" "સર્વર પ્રમાણપત્રની લંબાઇ, સર્વર પ્રમાણપત્ર કતારની ઊંચાઇ, ક્રિપ્ટોગ્રાફી લાઇબ્રેરી દ્દારા " "બનાવેલ મર્યાદાને વધારે છે" #: ../js/ui/components/telepathyClient.js:1383 msgid "Internal error" msgstr "આંતરિક ભૂલ" #. translators: argument is the account name, like #. * name@jabber.org for example. */ #: ../js/ui/components/telepathyClient.js:1393 #, javascript-format msgid "Unable to connect to %s" msgstr "%s સાથે જોડાવાનું અસમર્થ" #: ../js/ui/components/telepathyClient.js:1398 msgid "View account" msgstr "ખાતામાં જુઓ" #: ../js/ui/components/telepathyClient.js:1435 msgid "Unknown reason" msgstr "અજ્ઞાત કારણ" #: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:154 msgid "Windows" msgstr "વિન્ડો" #: ../js/ui/dash.js:249 ../js/ui/dash.js:287 msgid "Show Applications" msgstr "કાર્યક્રમો બતાવો" #: ../js/ui/dash.js:445 msgid "Dash" msgstr "ડૅશ" #: ../js/ui/dateMenu.js:96 msgid "Open Calendar" msgstr "કૅલેન્ડરને ખોલો" #: ../js/ui/dateMenu.js:100 msgid "Open Clocks" msgstr "ઘડિયાળ ખોલો" #: ../js/ui/dateMenu.js:107 msgid "Date & Time Settings" msgstr "તારીખ અને સમય સુયોજનો" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM"). #. */ #: ../js/ui/dateMenu.js:204 msgid "%A %B %e, %Y" msgstr "%A %B %e, %Y" #: ../js/ui/endSessionDialog.js:64 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "%s માંથી બહાર નીકળો" #: ../js/ui/endSessionDialog.js:65 msgctxt "title" msgid "Log Out" msgstr "બહાર નીકળો" #: ../js/ui/endSessionDialog.js:67 #, javascript-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "%s એ %d સેકંડમાં આપમેળે બહાર નીકળી જશે." msgstr[1] "%s એ %d સેકંડોમાં આપમેળે બહાર નીકળી જશે." #: ../js/ui/endSessionDialog.js:72 #, javascript-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "તમે %d સેકંડમાં આપમેળે બહાર નીકળી જશે." msgstr[1] "તમે %d સેકંડોમાં આપમેળે બહાર નીકળી જશે." #: ../js/ui/endSessionDialog.js:78 msgctxt "button" msgid "Log Out" msgstr "બહાર નીકળો" #: ../js/ui/endSessionDialog.js:84 msgctxt "title" msgid "Power Off" msgstr "પાવર બંધ" #: ../js/ui/endSessionDialog.js:85 msgctxt "title" msgid "Install Updates & Power Off" msgstr "સુધારા સ્થાપિત કરો અને પાવર બંધ કરો" #: ../js/ui/endSessionDialog.js:87 #, javascript-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "સિસ્ટમ %d સેકંડમાં આપમેળે પાવર બંધ થઇ જશે." msgstr[1] "સિસ્ટમ %d સેકંડમાં આપમેળે પાવર બંધ થઇ જશે." #: ../js/ui/endSessionDialog.js:91 msgctxt "checkbox" msgid "Install pending software updates" msgstr "બાકી રહેલા સોફ્ટવેર સુધારાને સ્થાપિત કરો" #: ../js/ui/endSessionDialog.js:94 ../js/ui/endSessionDialog.js:111 msgctxt "button" msgid "Restart" msgstr "પુન:શરૂ કરો" #: ../js/ui/endSessionDialog.js:96 msgctxt "button" msgid "Power Off" msgstr "પાવર બંધ" #: ../js/ui/endSessionDialog.js:103 msgctxt "title" msgid "Restart" msgstr "પુન:શરૂ કરો" #: ../js/ui/endSessionDialog.js:105 #, javascript-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "સિસ્ટમ %d સેકંડમાં આપમેળે પુન:શરૂ થઇ જશે." msgstr[1] "સિસ્ટમ %d સેકંડોમાં આપમેળે પુન:શરૂ થઇ જશે." #: ../js/ui/endSessionDialog.js:119 msgctxt "title" msgid "Restart & Install Updates" msgstr "સુધારા સ્થાપિત કરો અને પુન:શરૂ કરો" #: ../js/ui/endSessionDialog.js:121 #, javascript-format #| msgid "The system will restart automatically in %d second." #| msgid_plural "The system will restart automatically in %d seconds." msgid "The system will automatically restart and install updates in %d second." msgid_plural "The system will automatically restart and install updates in %d seconds." msgstr[0] "સિસ્ટમ %d સેકંડમાં આપમેળે સુધારાઓને પુન:શરૂ અને સ્થાપિત કરશે." msgstr[1] "સિસ્ટમ %d સેકંડોમાં આપમેળે સુધારાઓને પુન:શરૂ અને સ્થાપિત કરશે." #: ../js/ui/endSessionDialog.js:127 msgctxt "button" msgid "Restart & Install" msgstr "પુન:શરૂ કરો અને સ્થાપિત કરો" #: ../js/ui/endSessionDialog.js:128 msgctxt "button" msgid "Install & Power Off" msgstr "સ્થાપિત કરો અને પાવર બંધ " #: ../js/ui/endSessionDialog.js:129 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "સુધારા સ્થાપિત થાય પછી પાવર બંધ કરો" #: ../js/ui/endSessionDialog.js:338 msgid "Running on battery power: please plug in before installing updates." msgstr "બેટરી પાવર પર ચાલી રહ્યુ છે: મહેરબાની કરીને સુધારા સ્થાપિત કરતા પહેલાં પ્લગઇન કરો." #: ../js/ui/endSessionDialog.js:355 msgid "Some applications are busy or have unsaved work." msgstr "અમુક કાર્યક્રમો વ્યસ્ત છે અથવા તેની પાસે અસંગ્રહેલ કામ છે." #: ../js/ui/endSessionDialog.js:362 msgid "Other users are logged in." msgstr "બીજા વપરાશકર્તાઓ પ્રવેશેલ છે." #. Translators: Remote here refers to a remote session, like a ssh login */ #: ../js/ui/endSessionDialog.js:640 #, javascript-format msgid "%s (remote)" msgstr "%s (દૂરસ્થ)" #. Translators: Console here refers to a tty like a VT console */ #: ../js/ui/endSessionDialog.js:643 #, javascript-format msgid "%s (console)" msgstr "%s (કન્સોલ)" #: ../js/ui/extensionDownloader.js:199 msgid "Install" msgstr "સ્થાપિત કરો" #: ../js/ui/extensionDownloader.js:204 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "extensions.gnome.org માંથી “%s” ને સ્થાપિત અને ડાઉનલોડ કરો?" #: ../js/ui/keyboard.js:700 ../js/ui/status/keyboard.js:523 msgid "Keyboard" msgstr "કિબોર્ડ" #: ../js/ui/lookingGlass.js:643 msgid "No extensions installed" msgstr "એક્સટેન્શનો સ્થાપિત થયેલ નથી" #. Translators: argument is an extension UUID. */ #: ../js/ui/lookingGlass.js:697 #, javascript-format msgid "%s has not emitted any errors." msgstr "%s એ કોઇપણ ભૂલોને બહાર કાઢતા નથી." #: ../js/ui/lookingGlass.js:703 msgid "Hide Errors" msgstr "ભૂલો છુપાડો" #: ../js/ui/lookingGlass.js:707 ../js/ui/lookingGlass.js:767 msgid "Show Errors" msgstr "ભૂલો બતાવો" #: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:71 #: ../js/ui/status/location.js:176 msgid "Enabled" msgstr "સક્રિય" #. Translators: this is for a network device that cannot be activated #. because it's disabled by rfkill (airplane mode) */ #. translators: #. * The device has been disabled #: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:179 #: ../js/ui/status/network.js:592 ../src/gvc/gvc-mixer-control.c:1830 msgid "Disabled" msgstr "નિષ્ક્રિય" #: ../js/ui/lookingGlass.js:721 msgid "Error" msgstr "ભૂલ" #: ../js/ui/lookingGlass.js:723 msgid "Out of date" msgstr "અપ્રચલિત" #: ../js/ui/lookingGlass.js:725 msgid "Downloading" msgstr "ડાઉનલોડ કરી રહ્યા છે" #: ../js/ui/lookingGlass.js:749 msgid "View Source" msgstr "સ્ત્રોત દર્શાવો" #: ../js/ui/lookingGlass.js:758 msgid "Web Page" msgstr "વેબ પાનું" #: ../js/ui/messageTray.js:1327 msgid "Open" msgstr "ખોલો" #: ../js/ui/messageTray.js:1334 msgid "Remove" msgstr "દૂર કરો" #: ../js/ui/messageTray.js:1631 msgid "Notifications" msgstr "સૂચનાઓ" #: ../js/ui/messageTray.js:1638 msgid "Clear Messages" msgstr "સંદેશા સાફ કરો" #: ../js/ui/messageTray.js:1657 msgid "Notification Settings" msgstr "સૂચના સુયોજનો" #: ../js/ui/messageTray.js:1710 msgid "Tray Menu" msgstr "ટ્રે મેનુ" #: ../js/ui/messageTray.js:1934 msgid "No Messages" msgstr "સંદેશા નથી" #: ../js/ui/messageTray.js:1979 msgid "Message Tray" msgstr "સંદેશો ટ્રે" #: ../js/ui/messageTray.js:2992 msgid "System Information" msgstr "સિસ્ટમ જાણકારી" #: ../js/ui/notificationDaemon.js:513 ../src/shell-app.c:425 msgctxt "program" msgid "Unknown" msgstr "અજ્ઞાત" #: ../js/ui/overviewControls.js:482 ../js/ui/screenShield.js:151 #, javascript-format msgid "%d new message" msgid_plural "%d new messages" msgstr[0] "%d નવો સંદેશો" msgstr[1] "%d નવા સંદેશા" #: ../js/ui/overview.js:84 msgid "Undo" msgstr "રદ કરો" #: ../js/ui/overview.js:124 msgid "Overview" msgstr "ઝાંખી" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. */ #: ../js/ui/overview.js:246 msgid "Type to search…" msgstr "શોધવા માટે ટાઇપ કરો..." #: ../js/ui/panel.js:515 msgid "Quit" msgstr "બહાર નીકળો" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". */ #: ../js/ui/panel.js:567 msgid "Activities" msgstr "પ્રવૃત્તિઓ" #: ../js/ui/panel.js:918 msgid "Top Bar" msgstr "ટોચની પટ્ટી" #: ../js/ui/popupMenu.js:269 msgid "toggle-switch-us" msgstr "toggle-switch-us" #: ../js/ui/runDialog.js:70 msgid "Enter a Command" msgstr "આદેશને દાખલ કરો" #: ../js/ui/runDialog.js:110 ../js/ui/windowMenu.js:120 msgid "Close" msgstr "બંધ કરો" #: ../js/ui/runDialog.js:277 msgid "Restarting…" msgstr "પુન:શરૂ કરી રહ્યા છે…" #. Translators: This is a time format for a date in #. long format */ #: ../js/ui/screenShield.js:88 msgid "%A, %B %d" msgstr "%A, %B %d" #: ../js/ui/screenShield.js:153 #, javascript-format msgid "%d new notification" msgid_plural "%d new notifications" msgstr[0] "%d નવી સૂચના" msgstr[1] "%d નવી સૂચનાઓ" #: ../js/ui/screenShield.js:472 ../js/ui/status/system.js:345 msgid "Lock" msgstr "તાળુ" #: ../js/ui/screenShield.js:706 msgid "GNOME needs to lock the screen" msgstr "GNOME ને સ્ક્રીનને તાલુ મારવાની જરૂર છે" #: ../js/ui/screenShield.js:833 ../js/ui/screenShield.js:1304 msgid "Unable to lock" msgstr "તાળુ મારવામાં અસમર્થ" #: ../js/ui/screenShield.js:834 ../js/ui/screenShield.js:1305 msgid "Lock was blocked by an application" msgstr "તાળુ કાર્યક્રમ દ્દારા બ્લોક થયેલ છે" #: ../js/ui/search.js:607 msgid "Searching…" msgstr "શોધી રહ્યા છે..." #: ../js/ui/search.js:609 msgid "No results." msgstr "પરિણામો નથી." #: ../js/ui/shellEntry.js:25 msgid "Copy" msgstr "નકલ કરો" #: ../js/ui/shellEntry.js:30 msgid "Paste" msgstr "ચોંટાડો" #: ../js/ui/shellEntry.js:97 msgid "Show Text" msgstr "લખાણ બતાવો" #: ../js/ui/shellEntry.js:99 msgid "Hide Text" msgstr "લખાણ છુપાડો" #: ../js/ui/shellMountOperation.js:370 msgid "Password" msgstr "પાસવર્ડ" #: ../js/ui/shellMountOperation.js:391 msgid "Remember Password" msgstr "પાસવર્ડને યાદ રાખો" #: ../js/ui/status/accessibility.js:42 msgid "Accessibility" msgstr "ઉપલબ્ધતા" #: ../js/ui/status/accessibility.js:57 msgid "Zoom" msgstr "નાનુ મોટુ કરો" #: ../js/ui/status/accessibility.js:64 msgid "Screen Reader" msgstr "સ્ક્રીન રીડર" #: ../js/ui/status/accessibility.js:68 msgid "Screen Keyboard" msgstr "સ્ક્રીન કિબોર્ડ" #: ../js/ui/status/accessibility.js:72 msgid "Visual Alerts" msgstr "દેખાતી ચેતવણીઓ" #: ../js/ui/status/accessibility.js:75 msgid "Sticky Keys" msgstr "સ્ટીકી કી" #: ../js/ui/status/accessibility.js:78 msgid "Slow Keys" msgstr "ધીમી કી" #: ../js/ui/status/accessibility.js:81 msgid "Bounce Keys" msgstr "બાઉન્સ કી" #: ../js/ui/status/accessibility.js:84 msgid "Mouse Keys" msgstr "માઉસ કીઓ" #: ../js/ui/status/accessibility.js:144 msgid "High Contrast" msgstr "ઉચ્ચ વિરોધાભાસ" #: ../js/ui/status/accessibility.js:193 msgid "Large Text" msgstr "લાંબુ લખાણ" #: ../js/ui/status/bluetooth.js:49 msgid "Bluetooth" msgstr "બ્લુટુથ" #: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:178 #: ../js/ui/status/network.js:360 ../js/ui/status/network.js:1281 #: ../js/ui/status/network.js:1392 ../js/ui/status/rfkill.js:86 #: ../js/ui/status/rfkill.js:114 msgid "Turn Off" msgstr "બંધ કરો" #: ../js/ui/status/bluetooth.js:54 msgid "Bluetooth Settings" msgstr "બ્લુટુથ સુયોજનો" #: ../js/ui/status/bluetooth.js:104 #, javascript-format msgid "%d Connected Device" msgid_plural "%d Connected Devices" msgstr[0] "%d જોડાયેલ ઉપકરણ" msgstr[1] "%d જોડાયેલ ઉપકરણો" #: ../js/ui/status/bluetooth.js:106 ../js/ui/status/network.js:1309 msgid "Not Connected" msgstr "જોડાયેલ નથી" #: ../js/ui/status/brightness.js:44 msgid "Brightness" msgstr "તેજસ્વિતા" #: ../js/ui/status/keyboard.js:547 msgid "Show Keyboard Layout" msgstr "કીબોર્ડ લેઆઉટને બતાવો" #: ../js/ui/status/location.js:65 msgid "Location" msgstr "સ્થાન" #: ../js/ui/status/location.js:72 ../js/ui/status/location.js:177 msgid "Disable" msgstr "નિષ્ક્રિય" #: ../js/ui/status/location.js:73 #| msgid "Power Settings" msgid "Privacy Settings" msgstr "ખાનગી સુયોજનો" #: ../js/ui/status/location.js:176 msgid "In Use" msgstr "વપરાશમાં" #: ../js/ui/status/location.js:180 msgid "Enable" msgstr "સક્રિય" #: ../js/ui/status/network.js:101 msgid "" msgstr "<અજ્ઞાત>" #: ../js/ui/status/network.js:457 ../js/ui/status/network.js:1307 #: ../js/ui/status/network.js:1511 msgid "Off" msgstr "બંધ" #: ../js/ui/status/network.js:459 msgid "Connected" msgstr "જોડાયેલ" #. Translators: this is for network devices that are physically present but are not #. under NetworkManager's control (and thus cannot be used in the menu) */ #: ../js/ui/status/network.js:463 msgid "Unmanaged" msgstr "સંચાલિત થયેલ નથી" #: ../js/ui/status/network.js:465 msgid "Disconnecting" msgstr "જોડાઇ તૂટી રહ્યુ છે" #: ../js/ui/status/network.js:471 ../js/ui/status/network.js:1301 msgid "Connecting" msgstr "જોડાઇ રહ્યા છે" #. Translators: this is for network connections that require some kind of key or password */ #: ../js/ui/status/network.js:474 msgid "Authentication required" msgstr "સત્તાધિકરણ જરૂરી" #. Translators: this is for devices that require some kind of firmware or kernel #. module, which is missing */ #: ../js/ui/status/network.js:482 msgid "Firmware missing" msgstr "ફર્મવેર ગેરહાજર" #. Translators: this is for a network device that cannot be activated (for example it #. is disabled by rfkill, or it has no coverage */ #: ../js/ui/status/network.js:486 msgid "Unavailable" msgstr "બિનઉપલબ્ધ" #: ../js/ui/status/network.js:488 ../js/ui/status/network.js:1695 msgid "Connection failed" msgstr "જોડાણ નિષ્ફળ" #: ../js/ui/status/network.js:504 msgid "Wired Settings" msgstr "વાયર થયેલ સુયોજનો" #: ../js/ui/status/network.js:546 ../js/ui/status/network.js:624 msgid "Mobile Broadband Settings" msgstr "મોબાઇલ બ્રોડબેન્ડ સુયોજનો" #: ../js/ui/status/network.js:588 ../js/ui/status/network.js:1305 msgid "Hardware Disabled" msgstr "હાર્ડવેર નિષ્ક્રિય" #: ../js/ui/status/network.js:632 msgid "Use as Internet connection" msgstr "ઇન્ટરનેટ જોડાણ તરીકે વાપરો" #: ../js/ui/status/network.js:813 msgid "Airplane Mode is On" msgstr "ઍરપ્લેન સ્થિતિ ચાલુ છે" #: ../js/ui/status/network.js:814 msgid "Wi-Fi is disabled when airplane mode is on." msgstr "Wi-Fi નિષ્ક્રિય થયેલ છે જ્યારે ઍરપ્લેન સ્થિતિ ચાલુ હોય." #: ../js/ui/status/network.js:815 msgid "Turn Off Airplane Mode" msgstr "ઍરપ્લેન સ્થિતિને બંધ કરો" #: ../js/ui/status/network.js:824 msgid "Wi-Fi is Off" msgstr "Wi-Fi બંધ છે" #: ../js/ui/status/network.js:825 msgid "Wi-Fi needs to be turned on in order to connect to a network." msgstr "નેટવર્કમાં જોડાવા માટે ક્રમમાં Wi-Fi ને ચાલુ કરવાની જરૂર છે." #: ../js/ui/status/network.js:826 msgid "Turn On Wi-Fi" msgstr "Wi-Fi ચાલુ કરો" #: ../js/ui/status/network.js:851 msgid "Wi-Fi Networks" msgstr "Wi-Fi નેટવર્ક" #: ../js/ui/status/network.js:853 msgid "Select a network" msgstr "નેટવર્ક પસંદ કરો" #: ../js/ui/status/network.js:882 msgid "No Networks" msgstr "નેટવર્ક નથી" #: ../js/ui/status/network.js:903 ../js/ui/status/rfkill.js:112 msgid "Use hardware switch to turn off" msgstr "બંધ કરવા માટે હાર્ડવેર સ્વીચને વાપરો" #: ../js/ui/status/network.js:1173 msgid "Select Network" msgstr "નેટવર્ક પસંદ કરો" #: ../js/ui/status/network.js:1179 msgid "Wi-Fi Settings" msgstr "Wi-Fi સુયોજનો" #: ../js/ui/status/network.js:1281 msgid "Turn On" msgstr "ચાલુ કરો" #: ../js/ui/status/network.js:1298 msgid "Hotspot Active" msgstr "હૉટસ્પોટ સક્રિય" #: ../js/ui/status/network.js:1409 msgid "connecting..." msgstr "જોડાઇ રહ્યા છે..." #. Translators: this is for network connections that require some kind of key or password */ #: ../js/ui/status/network.js:1412 msgid "authentication required" msgstr "સત્તાધિકરણ જરૂરી" #: ../js/ui/status/network.js:1414 msgid "connection failed" msgstr "જોડાણ નિષ્ફળ" #: ../js/ui/status/network.js:1480 ../js/ui/status/rfkill.js:89 msgid "Network Settings" msgstr "નેટવર્ક સુયોજનો" #: ../js/ui/status/network.js:1482 msgid "VPN Settings" msgstr "VPN સુયોજનો" #: ../js/ui/status/network.js:1501 msgid "VPN" msgstr "VPN" #: ../js/ui/status/network.js:1656 msgid "Network Manager" msgstr "નેટવર્ક સંચાલક" #: ../js/ui/status/network.js:1696 msgid "Activation of network connection failed" msgstr "નેટવર્ક જોડાણનું સક્રિયકરણ નિષ્ફળ થયેલ છે" #: ../js/ui/status/power.js:49 msgid "Power Settings" msgstr "પાવર સુયોજનો" #: ../js/ui/status/power.js:65 msgid "Fully Charged" msgstr "સંપૂર્ણપણે ચાર્જ થયેલ છે" #: ../js/ui/status/power.js:72 ../js/ui/status/power.js:78 msgid "Estimating…" msgstr "અંદાજ કરી રહ્યા છે..." #: ../js/ui/status/power.js:86 #, javascript-format msgid "%d∶%02d Remaining (%d%%)" msgstr "%d∶%02d બાકી રહેલ છે (%d%%)" #: ../js/ui/status/power.js:91 #, javascript-format msgid "%d∶%02d Until Full (%d%%)" msgstr "%d∶%02d જ્યાં સુધી સંપૂર્ણ થાય (%d%%)" #: ../js/ui/status/power.js:119 msgid "UPS" msgstr "UPS" #: ../js/ui/status/power.js:121 msgid "Battery" msgstr "બેટરી" #: ../js/ui/status/rfkill.js:83 msgid "Airplane Mode" msgstr "ઍરપ્લેન સ્થિતિ" #: ../js/ui/status/rfkill.js:85 msgid "On" msgstr "ચાલુ" #: ../js/ui/status/system.js:317 msgid "Switch User" msgstr "વપરાશકર્તાને બદલો" #: ../js/ui/status/system.js:322 msgid "Log Out" msgstr "બહાર નીકળો" #: ../js/ui/status/system.js:341 msgid "Orientation Lock" msgstr "દિશા તાળુ" #: ../js/ui/status/system.js:349 msgid "Suspend" msgstr "અટકાવો" #: ../js/ui/status/system.js:352 msgid "Power Off" msgstr "પાવર બંધ" #: ../js/ui/status/volume.js:127 msgid "Volume changed" msgstr "બદલાયેલ વોલ્યુમ" #: ../js/ui/status/volume.js:162 msgid "Volume" msgstr "વોલ્યુમ" #: ../js/ui/status/volume.js:213 msgid "Microphone" msgstr "માઇક્રોફોન" #: ../js/ui/unlockDialog.js:67 msgid "Log in as another user" msgstr "બીજા વપરાશકર્તા તરીકે પ્રવેશો" #: ../js/ui/unlockDialog.js:84 msgid "Unlock Window" msgstr "વિન્ડોનું તાળુ ખોલો" #: ../js/ui/viewSelector.js:158 msgid "Applications" msgstr "કાર્યક્રમો" #: ../js/ui/viewSelector.js:162 msgid "Search" msgstr "શોધો" #: ../js/ui/windowAttentionHandler.js:19 #, javascript-format msgid "“%s” is ready" msgstr "“%s” તૈયાર છે" #: ../js/ui/windowManager.js:65 msgid "Do you want to keep these display settings?" msgstr "શું તમને આ દર્શાવ સુયોજનોને રાખવા માંગો છો?ે" #. Translators: this and the following message should be limited in lenght, #. to avoid ellipsizing the labels. #. */ #: ../js/ui/windowManager.js:84 msgid "Revert Settings" msgstr "સુયોજનોને પાછા લાવો" #: ../js/ui/windowManager.js:88 msgid "Keep Changes" msgstr "ફેરફારો કરો" #: ../js/ui/windowManager.js:107 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "સુયોજન ફેરફારો એ %d સેકંડમાં પાછા આવશે" msgstr[1] "સુયોજન ફેરફારો એ %d સેકંડોમાં પાછા આવશે" #: ../js/ui/windowMenu.js:34 msgid "Minimize" msgstr "ન્યુનતમ કરો" #: ../js/ui/windowMenu.js:41 msgid "Unmaximize" msgstr "મહત્તમમાંથી પાછુ લાવો" #: ../js/ui/windowMenu.js:45 msgid "Maximize" msgstr "મહત્તમ કરો" #: ../js/ui/windowMenu.js:52 msgid "Move" msgstr "ખસેડો" #: ../js/ui/windowMenu.js:58 msgid "Resize" msgstr "માપ બદલો" #: ../js/ui/windowMenu.js:65 msgid "Move Titlebar Onscreen" msgstr "શીર્ષકપટ્ટી ઓનસ્ક્રીનને ખસેડો" #: ../js/ui/windowMenu.js:70 msgid "Always on Top" msgstr "હંમેશા ટોચ ઉપર" #: ../js/ui/windowMenu.js:89 msgid "Always on Visible Workspace" msgstr "હંમેશા દૃશ્ય કામ કરવાની જગ્યા પર" #: ../js/ui/windowMenu.js:106 msgid "Move to Workspace Up" msgstr "ઉપર કામ કરવાની જગ્યા પર ખસેડો" #: ../js/ui/windowMenu.js:111 msgid "Move to Workspace Down" msgstr "નીચે કામ કરવાની જગ્યાએ ખસેડો" #: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1 msgid "Evolution Calendar" msgstr "Evolution કૅલેન્ડર" #. translators: #. * The number of sound outputs on a particular device #: ../src/gvc/gvc-mixer-control.c:1837 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u આઉટપુટ" msgstr[1] "%u આઉટપુટો" #. translators: #. * The number of sound inputs on a particular device #: ../src/gvc/gvc-mixer-control.c:1847 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u ઇનપુટ" msgstr[1] "%u ઇનપુટો" #: ../src/gvc/gvc-mixer-control.c:2373 msgid "System Sounds" msgstr "સિસ્ટમ અવાજો" #: ../src/main.c:373 msgid "Print version" msgstr "ા" #: ../src/main.c:379 msgid "Mode used by GDM for login screen" msgstr "લૉગિન સ્ક્રીન માટે GDM દ્દારા વાપરેલ સ્થિતિ" #: ../src/main.c:385 msgid "Use a specific mode, e.g. \"gdm\" for login screen" msgstr "ખાસ સ્થિતિને વાપરો, દા.ત. પ્રવેશ સ્ક્રીન માટે \"gdm\"" #: ../src/main.c:391 msgid "List possible modes" msgstr "શક્ય સ્થિતિઓની યાદી કરો" #: ../src/shell-app.c:666 #, c-format msgid "Failed to launch “%s”" msgstr "“%s” ને શરૂ કરવામાં નિષ્ફળતા" #: ../src/shell-keyring-prompt.c:714 msgid "Passwords do not match." msgstr "પાસવર્ડ બંધબેસતો નથી" #: ../src/shell-keyring-prompt.c:722 msgid "Password cannot be blank" msgstr "પાસવર્ડને ખાલી રાખી શકાતો નથી" #: ../src/shell-polkit-authentication-agent.c:346 msgid "Authentication dialog was dismissed by the user" msgstr "સત્તાધિકરણ વપરાશકર્તા દ્દારા અસ્વીકાર થયેલ છે" #~ msgid "Screenshots" #~ msgstr "સ્ક્રીનશોટ" #~ msgid "Record a screencast" #~ msgstr "સ્ક્રીનકાસ્ટ રેકોર્ડ કરો" #~ msgid "Whether to collect stats about applications usage" #~ msgstr "શું કાર્યક્રમ વપરાશ વિશે આંકડા એકત્ર કરવા જોઇએ" #~ msgid "" #~ "The shell normally monitors active applications in order to present the " #~ "most used ones (e.g. in launchers). While this data will be kept private, " #~ "you may want to disable this for privacy reasons. Please note that doing " #~ "so won't remove already saved data." #~ msgstr "" #~ "શેલ સામાન્ય રીતે મોટાભાગનાં એકને હાજર રાખવા માટે ક્રમમાં સક્રિય કાર્યક્રમોને મોનિટર " #~ "કરવામાં આવે છે (દા.ત. લૉન્ચર). જ્યારે આ માહિતીને ખાનગી રાખવામાં આવશે, તમે ખાનગી " #~ "કારણો માટે આને નિષ્ક્રિય કરવા માંગી શકો છો. મહેરબાની કરીને આવુ કરવાનું નોંધો તેથી " #~ "પહેલેથી સંગ્રહેલ માહિતીને દૂર કરાતુ નથી." #~ msgid "List of categories that should be displayed as folders" #~ msgstr "વર્ગોની યાદી કે જે ફોલ્ડરો તરીકે દર્શાવેલ હોવા જોઇએ" #~ msgid "" #~ "Each category name in this list will be represented as folder in the " #~ "application view, rather than being displayed inline in the main view." #~ msgstr "" #~ "આ યાદીમાં દરેક વર્ગનામ કાર્યક્રમ દૃશ્યમાં ફોલ્ડર તરીકે રજૂ થયેલ છે, મુખ્ય વિન્ડોમાં ઇનલાઇન " #~ "દર્શાવવા કરતા." #~ msgid "" #~ "Internally used to store the last IM presence explicitly set by the user. " #~ "The value here is from the TpConnectionPresenceType enumeration." #~ msgstr "" #~ "વપરાશકર્તા દ્દારા છેલ્લુ IM સુયોજનને સંગ્રહવા આંતરિક રીતે વાપરેલ છે. અહિંયા કિંમત " #~ "TpConnectionPresenceType ઍન્યુમરેશનમાંથી છે." #~ msgid "" #~ "Internally used to store the last session presence status for the user. " #~ "The value here is from the GsmPresenceStatus enumeration." #~ msgstr "" #~ "વપરાશકર્તા માટે છેલ્લી સત્રની હાજર પરિસ્થિતિને સંગ્રહવા આંતરિક રીતે વાપરેલ છે. કિંમત " #~ "અહિંયા GsmPresenceStatus ઍન્યુમરેશનમાંથી છે." #~ msgid "Keybinding to toggle the screen recorder" #~ msgstr "કાર્યક્રમ મેનુને ખોલવા માટે કિબાઇન્ડીંગ" #~ msgid "Keybinding to start/stop the builtin screen recorder." #~ msgstr "બિલ્ટઇન સ્ક્રીન રેકોર્ડરને શરૂ/બંધ કરવા માટે કfબાઇન્ડીંગ." #~ msgid "Framerate used for recording screencasts." #~ msgstr "રેકોર્ડીંગ સ્ક્રીનકાસ્ટ માટે વાપરેલ ફ્રેમરેટ." #~ msgid "" #~ "The framerate of the resulting screencast recordered by GNOME Shell's " #~ "screencast recorder in frames-per-second." #~ msgstr "" #~ "પરિણામી સ્ક્રીનકાસ્ટની framerate એ દરેક સેકંડે ફ્રેમમાં GNOME Shell નાં સ્ક્રીનકાસ્ટ " #~ "રેકોર્ડર દ્દારા અહેવાલ થયેલ છે." #~ msgid "The gstreamer pipeline used to encode the screencast" #~ msgstr "સ્ક્રીનકાસ્ટને એનકોડ કરવા માટે વાપરેલ gstreamer પાઇપલાઇન" #~ msgid "" #~ "Sets the GStreamer pipeline used to encode recordings. It follows the " #~ "syntax used for gst-launch. The pipeline should have an unconnected sink " #~ "pad where the recorded video is recorded. It will normally have a " #~ "unconnected source pad; output from that pad will be written into the " #~ "output file. However the pipeline can also take care of its own output - " #~ "this might be used to send the output to an icecast server via shout2send " #~ "or similar. When unset or set to an empty value, the default pipeline " #~ "will be used. This is currently 'vp8enc min_quantizer=13 max_quantizer=13 " #~ "cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux' and records to " #~ "WEBM using the VP8 codec. %T is used as a placeholder for a guess at the " #~ "optimal thread count on the system." #~ msgstr "" #~ "રેકોર્ડીંગ ને એનકોડ કરવા માટે વાપરેલ GStreamer પાઇપલાઇનને સુયોજિત કરે છે. તે gst-" #~ "launch માટે વાપરેલ બંધારણને અનુસરે છે. પાઇપલાઇન પાસે બિનજોડાયેલ સીંક પેડ હોય છે જ્યાં " #~ "રેકોર્ડ થયેલ વિડિયો રેકોર્ડ થયેલ છે. સામાન્ય રીતે તેમની પાસે બિનજોડાયેલ સ્ત્રોત પેડ હશે; " #~ "તે પેડમાંથી આઉટપુટ એ આઉટપુટ ફાઇલમાં લખાયેલ હશે. છતાંપણ પાઇપલાઇન પણ તેનાં પોતાના " #~ "આઉટપુટની સંભાળ લઇ શકે છે - આ shout2send મારફતે અથવા તેનાં જેવા મારફતે icecast " #~ "સર્વરમાં આઉટપુટને મોકલવા વાપરી શકાય છે. જ્યારે ખાલી ફાઇલને સુયોજિત અથવા અસુયોજિત " #~ "કરો, મૂળભૂત પાઇપલાઇન વાપરેલ હે. આ હાલમાં 'vp8enc min_quantizer=13 " #~ "max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! " #~ "webmmux' છે અને VP8 કોડેકની મદદતી WEBM માં રેકોર્ડ થાય છે. %T એ સિસ્ટમ પર ઓપ્ટીમલ " #~ "થ્રેડ ગણતરી પર ધારવા માટે પ્લેસહોલ્ડરને વાપરેલ છે." #~ msgid "File extension used for storing the screencast" #~ msgstr "સ્ક્રીનકાસ્ટને સંગ્રહ કરવા માટે વાપરેલ ફાઇલ ઍક્સટેન્શન" #~ msgid "" #~ "The filename for recorded screencasts will be a unique filename based on " #~ "the current date, and use this extension. It should be changed when " #~ "recording to a different container format." #~ msgstr "" #~ "રેકોર્ડ થયેલ સ્ક્રીનકાસ્ટ માટે ફાઇલનામ વર્તમાન તારીખ પર આધારિત અનન્ય ફાઇલનામ હશે, " #~ "અને આ ઍક્સટેન્શનને વાપરો. તેને બદલેલ હોવુ જોઇએ જ્યારે વિવિધ પાત્ર બંધારણમાં રેકોર્ડ કરી " #~ "રહ્યા છે." #~ msgid "Arrangement of buttons on the titlebar" #~ msgstr "શીર્ષકપટ્ટી પર બટનોની ગોઠવણ" #~ msgid "" #~ "This key overrides the key in org.gnome.desktop.wm.preferences when " #~ "running GNOME Shell." #~ msgstr "" #~ "આ કી org.gnome.desktop.wm.preferences માં કી ઉપર લખાઇ જશે જ્યારે GNOME શેલ " #~ "ચાલી રહ્યુ હોય." #~ msgid "Extension" #~ msgstr "ઍક્સટેન્શન" #~ msgid "Select an extension to configure using the combobox above." #~ msgstr "ઉપર કોમ્બોબોક્સની મદદથી રૂપરેખાંકિત કરવા માટે ઍક્સટેન્શનને પસંદ કરો." #~| msgid "Session..." #~ msgid "Session…" #~ msgstr "સત્ર..." #~| msgid "Power Off" #~ msgid "Power" #~ msgstr "પાવર" #~ msgid "Restart" #~ msgstr "પુન:શરૂ કરો" #~ msgctxt "event list time" #~ msgid "%H\\u2236%M" #~ msgstr "%H\\u2236%M" #~ msgctxt "event list time" #~ msgid "%l\\u2236%M\\u2009%p" #~ msgstr "%l\\u2236%M\\u2009%p" #~ msgid "Screencast from %d %t" #~ msgstr "%d %t માંથી સ્ક્રીનકાસ્ટ" #~ msgid "%A, %H:%M" #~ msgstr "%A, %H:%M" #~ msgid "%B %d, %H:%M" #~ msgstr "%B %d, %H:%M" #~ msgid "%B %d %Y, %H:%M " #~ msgstr "%B %d %Y, %H:%M " #~ msgid "Click Log Out to quit these applications and log out of the system." #~ msgstr "" #~ "આ કાર્યક્રમોને બહાર નીકળવા માટે બહાર નીકળો પર ક્લિક કરો અને સિસ્ટમમાંથી બહાર " #~ "નીકળો." #~ msgid "Logging out of the system." #~ msgstr "સિસ્ટમની બહાર નીકળી રહ્યા છે." #~ msgid "Click Power Off to quit these applications and power off the system." #~ msgstr "" #~ "આ કાર્યક્રમોને બહાર નીકાળવા માટે પાવર બંધ કરો પર ક્લિક કરો અને સિસ્ટમનો પાવર બંધ " #~ "કરો" #~ msgid "Powering off the system." #~ msgstr "સિસ્ટમનો પાવર બંધ કરી રહ્યા છે." #~ msgid "Click Restart to quit these applications and restart the system." #~ msgstr "" #~ "આ કાર્યક્રમોમાંથી બહાર નીકળવા માટે પુન:શરૂ કરો પર ક્લિક કરો અને સિસ્ટમને પુન:શરૂ કરો." #~ msgid "Restarting the system." #~ msgstr "સિસ્ટમને પુન:શરૂ કરી રહ્યા છે." #~ msgid "Universal Access Settings" #~ msgstr "યુનિવર્સલ વપરાશ સુયોજનો" #~ msgid "Visibility" #~ msgstr "દૃશ્યતા" #~| msgid "Send Files to Device..." #~ msgid "Send Files to Device…" #~ msgstr "ઉપકરણમાં ફાઇલોને મોકલો..." #~| msgid "Set Up a New Device..." #~ msgid "Set Up a New Device…" #~ msgstr "નવા ઉપકરણને સુયોજિત કરો..." #~| msgid "Send Files..." #~ msgid "Send Files…" #~ msgstr "ફાઇલોને મોકલો..." #~ msgid "Keyboard Settings" #~ msgstr "કીબોર્ડ સુયોજનો" #~ msgid "Mouse Settings" #~ msgstr "માઉસ સુયોજનો" #~ msgid "Sound Settings" #~ msgstr "સાઇન્ડ સુયોજનો" #~ msgid "Authorization request from %s" #~ msgstr "%s માંથી સત્તાધિકરણ માંગણી" #~ msgid "Device %s wants access to the service '%s'" #~ msgstr "ઉપકરણ %s એ સેવા %s' માટે પ્રવેશ ઇચ્છે છે" #~ msgid "Always grant access" #~ msgstr "હંમેશા વપરાશ મંજૂર કરો" #~ msgid "Grant this time only" #~ msgstr "ફક્ત આ સમયે સંમતિ આપો" #~ msgid "Reject" #~ msgstr "રદ કરો" #~ msgid "Pairing confirmation for %s" #~ msgstr "%s માટો જોડીની ખાતરી" #~ msgid "Device %s wants to pair with this computer" #~ msgstr "ઉપકરણ %s આ કમ્પ્યૂટર સાથે જોડી કરવા માંગે છે" #~ msgid "Please confirm whether the PIN '%06d' matches the one on the device." #~ msgstr "મહેરબાની કરીને ખાતરી કરો કે શું PIN '%06d' એ ઉપકરણ પર એક સાથે બંધબેસે છે." #~ msgid "Matches" #~ msgstr "બંધબેસે છે" #~ msgid "Does not match" #~ msgstr "બંધબેસતુ નથી" #~ msgid "Pairing request for %s" #~ msgstr "%s માટે જોડી માંગણી" #~ msgid "Please enter the PIN mentioned on the device." #~ msgstr "મહેરબાની કરીને ઉપકરણ પર દર્શાવેલ PIN દાખલ કરો." #~ msgid "OK" #~ msgstr "બરાબર" #~ msgid "Region & Language Settings" #~ msgstr "વિસ્તાર અને ભાષા સુયોજનો" #~ msgid "Volume, network, battery" #~ msgstr "વોલ્યુમ, નેટવર્ક, બેટરી" #~ msgid "disabled" #~ msgstr "નિષ્ક્રિય" #~ msgid "cable unplugged" #~ msgstr "કેબલ પ્લગ થયેલ નથી" #~ msgid "unavailable" #~ msgstr "બિનઉપલબ્ધ" #~ msgid "More…" #~ msgstr "વધારે…" #~ msgid "Wired" #~ msgstr "વાયરવાળું" #~ msgid "Auto Ethernet" #~ msgstr "આપમેળે ઇથરનેટ" #~ msgid "Auto broadband" #~ msgstr "આપમેળે બ્રોડબેન્ડ" #~ msgid "Auto dial-up" #~ msgstr "આપમેળે ડાયલ અપ" #~ msgid "Auto %s" #~ msgstr "આપમેળે %s" #~ msgid "Auto bluetooth" #~ msgstr "આપમેળે બ્લુટુથ" #~ msgid "Auto wireless" #~ msgstr "આપમેળે વાયરલેસ" #~ msgid "Wi-Fi" #~ msgstr "Wi-Fi" #~ msgid "Networking is disabled" #~ msgstr "નેટવર્કીંગ નિષ્ક્રિય થયેલ છે" #~ msgid "%d hour remaining" #~ msgid_plural "%d hours remaining" #~ msgstr[0] "%d કલાક બાકી રહેલ છે" #~ msgstr[1] "%d કલાક બાકી રહેલ છે" #~ msgid "%d %s %d %s remaining" #~ msgstr "%d %s %d %s બાકી રહેલ છે" #~ msgid "hour" #~ msgid_plural "hours" #~ msgstr[0] "કલાક" #~ msgstr[1] "કલાકો" #~ msgid "minute" #~ msgid_plural "minutes" #~ msgstr[0] "મિનિટ" #~ msgstr[1] "મિનિટો" #~ msgid "%d minute remaining" #~ msgid_plural "%d minutes remaining" #~ msgstr[0] "%d મિનિટ બાકી રહી છે" #~ msgstr[1] "%d મિનિટ બાકી રહી છે" #~ msgctxt "percent of battery remaining" #~ msgid "%d%%" #~ msgstr "%d%%" #~ msgid "AC Adapter" #~ msgstr "AC ઍડપ્ટર" #~ msgid "Laptop Battery" #~ msgstr "લેપટોપ બેટરી" #~ msgid "Monitor" #~ msgstr "મોનિટર" #~ msgid "Mouse" #~ msgstr "માઉસ" #~ msgid "PDA" #~ msgstr "PDA" #~ msgid "Cell Phone" #~ msgstr "સેલ ફોન" #~ msgid "Media Player" #~ msgstr "મીડિયા પ્લેયર" #~ msgid "Tablet" #~ msgstr "ટૅબલેટ" #~ msgid "Computer" #~ msgstr "કમ્પ્યૂટર" #~ msgctxt "device" #~ msgid "Unknown" #~ msgstr "અજ્ઞાત" #~ msgid "Available" #~ msgstr "ઉપલબ્ધ" #~ msgid "Busy" #~ msgstr "વ્યસ્ત" #~ msgid "Invisible" #~ msgstr "અદૃશ્ય" #~ msgid "Away" #~ msgstr "દૂર" #~ msgid "Idle" #~ msgstr "નિષ્ક્રિય" #~ msgid "Your chat status will be set to busy" #~ msgstr "તમારી વાર્તાલાપ પરિસ્થિતિ વ્યસ્ત તરીકે સુયોજિત હશે" #~ msgid "" #~ "Notifications are now disabled, including chat messages. Your online " #~ "status has been adjusted to let others know that you might not see their " #~ "messages." #~ msgstr "" #~ "સૂચનાઓ હવે નિષ્ક્રિય થયેલ છે, વાર્તાલાપ સંદેશાને સમાવી રહ્યા છે, બીજાને જણાવવા માટે " #~ "તમારી ઓનલાઇન સ્થિતિને ગોઠવી દેવામાં આવી છે કે જે તમે તેનાં સંદેશાને જોઇ શકશો નહિં." #~ msgid "Shutting down might cause them to lose unsaved work." #~ msgstr "બંધ કરવાથી તેઓ અસંગ્રહેલ કામને ગુમાવી શકે છે." #~ msgid "" #~ "Sorry, no wisdom for you today:\n" #~ "%s" #~ msgstr "" #~ "માફ કરો, આજે તમારા માટે શાણપણ નથી:\n" #~ "%s" #~ msgid "%s the Oracle says" #~ msgstr "%s એ એવી કિંમત છે જે Oracle કહે છે" #~ msgctxt "title" #~ msgid "Sign In" #~ msgstr "પ્રવેશો" #~ msgid "tray" #~ msgstr "ટ્રે" #~ msgid "Clear" #~ msgstr "સાફ કરો" #~ msgid "More..." #~ msgstr "વધારે..." #~ msgid "APPLICATIONS" #~ msgstr "APPLICATIONS" #~ msgid "SETTINGS" #~ msgstr "SETTINGS" #~ msgctxt "event list time" #~ msgid "%H:%M" #~ msgstr "%H:%M" #~ msgid "Subscription request" #~ msgstr "ઉમેદવારી માંગણી" #~ msgid "Connection error" #~ msgstr "જોડાણ ભૂલ" #~ msgid "Sent at %X on %A" #~ msgstr "%A પર %X અહિંયા મોકલેલ છે" #~ msgid "Sent on %A, %B %d, %Y" #~ msgstr "%A પર મોકલેલ છે, %B %d, %Y" #~ msgid "Connection to %s failed" #~ msgstr "%s માટે જોડાણ નિષ્ફળ" #~ msgid "Reconnect" #~ msgstr "પુન:જોડાવો" #~ msgid "Browse Files..." #~ msgstr "ફાઇલોને બ્રાઉઝ કરો..." #~ msgid "Error browsing device" #~ msgstr "ઉપકરણને બ્રાઉઝ કરતી વખતે ભૂલ" #~ msgid "The requested device cannot be browsed, error is '%s'" #~ msgstr "સુચિત ઉપકરણને બ્રાઉઝ કરી શકાતુ નથી, ભૂલ '%s' છે" #~ msgid "Wireless" #~ msgstr "વાયરલેસ" #~ msgid "VPN Connections" #~ msgstr "VPN જોડાણો" #~ msgid "System Settings" #~ msgstr "સિસ્ટમ સુયોજનો" #~ msgid "Your favorite Easter Egg" #~ msgstr "તમારા મનગમતા ઇસ્ટર ઇંડા" #~ msgid "United Kingdom" #~ msgstr "United Kingdom" #~ msgid "Default" #~ msgstr "મૂળભૂત" #~ msgid "disabled OpenSearch providers" #~ msgstr "નિષ્ક્રિય થયેલ OpenSearch પ્રબંધક" #~ msgid "Failed to unmount '%s'" #~ msgstr "'%s' ને અનમાઉન્ટ કરવામાં નિષ્ફળતા" #~ msgid "Retry" #~ msgstr "પુન:પ્રયત્ન કરો" #~ msgid "Connect to..." #~ msgstr "ની સાથે જોડાવો..." #~ msgid "PLACES & DEVICES" #~ msgstr "સ્થાનો અને ઉપકરણો" #~ msgid "Passphrase" #~ msgstr "પાસફ્રેજ" #~ msgid "Home" #~ msgstr "ઘર" #~ msgid "%1$s: %2$s" #~ msgstr "%1$s: %2$s" #~ msgid "Show time with seconds" #~ msgstr "સેકંડોમાં સમયને બતાવો" #~ msgid "If true, display seconds in time." #~ msgstr "જો true હોય તો, સમયમાં સેકંડ બતાવો." #~ msgid "Show date in clock" #~ msgstr "ઘડિયાળમાં તારીખને બતાવો" #~ msgid "If true, display date in the clock, in addition to time." #~ msgstr "જો true હોય તો, ઘડિયાળમાં તારીખ બતાવો, સમય સાથે વધુમાં." #~ msgid "CONTACTS" #~ msgstr "સંપર્કો" #~ msgid "%a %b %e, %R:%S" #~ msgstr "%a %b %e, %R:%S" #~ msgid "%a %b %e, %R" #~ msgstr "%a %b %e, %R" #~ msgid "%a %R:%S" #~ msgstr "%a %R:%S" #~ msgid "%a %R" #~ msgstr "%a %R" #~ msgid "%a %b %e, %l:%M:%S %p" #~ msgstr "%a %b %e, %l:%M:%S %p" #~ msgid "%a %l:%M:%S %p" #~ msgstr "%a %l:%M:%S %p" #~ msgid "Wrong password, please try again" #~ msgstr "ખોટો પાસવર્ડ, મહેરબાની કરીને ફરીથી પ્રયત્ન કરો" #~ msgid "%s is online." #~ msgstr "%s ઓનલાઇન છે." #~ msgid "%s is offline." #~ msgstr "%s ઓફલાઇન છે." #~ msgid "%s is away." #~ msgstr "%s એ દૂર છે." #~ msgid "%s is busy." #~ msgstr "%s વ્યસ્ત છે." #~ msgid "Hidden" #~ msgstr "છુપાયેલ" #~ msgid "Power Off..." #~ msgstr "પાવર બંધ..." #~ msgid "Online Accounts" #~ msgstr "ઓનલાઇન ખાતુ" #~ msgid "Lock Screen" #~ msgstr "સ્ક્રીનને તાળુ મારો" #~ msgid "Log Out..." #~ msgstr "બહાર નીકળો..." #~| msgid "Password:" #~ msgid "Show password" #~ msgstr "પાસવર્ડ બતાવો:" #~ msgid "Home Folder" #~ msgstr "ઘર ફોલ્ડર" #~ msgid "You're now connected to mobile broadband connection '%s'" #~ msgstr "તમે હવે મોબાઇલ બ્રોડબેન્ડ જોડાણ '%s' સાથે જોડાયેલ છો" #~ msgid "You're now connected to wireless network '%s'" #~ msgstr "તમે હવે વાયરલેસ નેટવર્ક '%s' સાથે જોડાયેલ છો" #~ msgid "You're now connected to wired network '%s'" #~ msgstr "તમે હવે વાયરવાળું નેટવર્ક '%s' સાથે જોડાયેલ છો" #~ msgid "You're now connected to VPN network '%s'" #~ msgstr "તમે હવે VPN નેટવર્ક '%s' સાથે જોડાયેલ છો" #~ msgid "%d minute ago" #~ msgid_plural "%d minutes ago" #~ msgstr[0] "%d મિનિટ પહેલાં" #~ msgstr[1] "%d મિનિટો પહેલાં" #~ msgid "%d hour ago" #~ msgid_plural "%d hours ago" #~ msgstr[0] "%d કલાક પહેલાં" #~ msgstr[1] "%d કલાકો પહેલાં" #~ msgid "%d day ago" #~ msgid_plural "%d days ago" #~ msgstr[0] "%d દિવસ પહેલાં" #~ msgstr[1] "%d દિવસો પહેલાં" #~ msgid "%d week ago" #~ msgid_plural "%d weeks ago" #~ msgstr[0] "%d અઠવાડિયુ પહેલાં" #~ msgstr[1] "%d અઠવાડિયાઓ પહેલાં" 07070100000237000081A40000000000000000000000016712993F00024D08000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/he.po# Hebrew translation for gnome-shell. # Copyright (C) 2009 gnome-shell's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-shell package. # liel , 2009. # Yaron Shahrabani , 2010. # Yosef Or Boczko , 2013-2024. # msgid "" msgstr "" "Project-Id-Version: gnome-shell master\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues/\n" "POT-Creation-Date: 2024-08-06 15:18+0000\n" "PO-Revision-Date: 2024-08-09 15:26+0300\n" "Last-Translator: Yosef Or Boczko \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=4; plural=(n==1 ? 0 : n==2 ? 1 : n>10 && n%10==0 ? " "2 : 3)\n" "X-Poedit-SourceCharset: UTF-8\n" "X-Generator: Gtranslator 46.1\n" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "משגרים" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate pinned app 1" msgstr "הפעלת היישום המוצמד 1" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate pinned app 2" msgstr "הפעלת היישום המוצמד 2" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate pinned app 3" msgstr "הפעלת היישום המוצמד 3" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate pinned app 4" msgstr "הפעלת היישום המוצמד 4" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate pinned app 5" msgstr "הפעלת היישום המוצמד 5" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate pinned app 6" msgstr "הפעלת היישום המוצמד 6" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate pinned app 7" msgstr "הפעלת היישום המוצמד 7" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate pinned app 8" msgstr "הפעלת היישום המוצמד 8" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate pinned app 9" msgstr "הפעלת היישום המוצמד 9" #: data/50-gnome-shell-launchers.xml:46 msgid "Open new window of pinned app 1" msgstr "פתיחת חלון חדש ביישום המוצמד 1" #: data/50-gnome-shell-launchers.xml:50 msgid "Open new window of pinned app 2" msgstr "פתיחת חלון חדש ביישום המוצמד 2" #: data/50-gnome-shell-launchers.xml:54 msgid "Open new window of pinned app 3" msgstr "פתיחת חלון חדש ביישום המוצמד 3" #: data/50-gnome-shell-launchers.xml:58 msgid "Open new window of pinned app 4" msgstr "פתיחת חלון חדש ביישום המוצמד 4" #: data/50-gnome-shell-launchers.xml:62 msgid "Open new window of pinned app 5" msgstr "פתיחת חלון חדש ביישום המוצמד 5" #: data/50-gnome-shell-launchers.xml:66 msgid "Open new window of pinned app 6" msgstr "פתיחת חלון חדש ביישום המוצמד 6" #: data/50-gnome-shell-launchers.xml:70 msgid "Open new window of pinned app 7" msgstr "פתיחת חלון חדש ביישום המוצמד 7" #: data/50-gnome-shell-launchers.xml:74 msgid "Open new window of pinned app 8" msgstr "פתיחת חלון חדש ביישום המוצמד 8" #: data/50-gnome-shell-launchers.xml:78 msgid "Open new window of pinned app 9" msgstr "פתיחת חלון חדש ביישום המוצמד 9" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2274 msgid "Screenshots" msgstr "צילומי מסך" #: data/50-gnome-shell-screenshots.xml:9 #: data/org.gnome.shell.gschema.xml.in:287 msgid "Take a screenshot interactively" msgstr "צילום מסך באופן הידודי" #: data/50-gnome-shell-screenshots.xml:12 #: data/org.gnome.shell.gschema.xml.in:299 msgid "Take a screenshot" msgstr "צילום המסך" #: data/50-gnome-shell-screenshots.xml:15 #: data/org.gnome.shell.gschema.xml.in:295 msgid "Take a screenshot of a window" msgstr "צילום של חלון" #: data/50-gnome-shell-screenshots.xml:18 #: data/org.gnome.shell.gschema.xml.in:291 msgid "Record a screencast interactively" msgstr "הסרטת המסך באופן הידודי" #: data/50-gnome-shell-system.xml:6 js/ui/messageTray.js:1298 msgid "System" msgstr "מערכת" # javascript-format #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "הצגת רשימת ההתרעות" #: data/50-gnome-shell-system.xml:12 msgid "Open the quick settings menu" msgstr "פתיחת תפריט ההגדרות המהירות" #: data/50-gnome-shell-system.xml:15 msgid "Focus the active notification" msgstr "התמקדות על ההתרעה הפעילה" #: data/50-gnome-shell-system.xml:18 msgid "Show the overview" msgstr "הצגת הסקירה" #: data/50-gnome-shell-system.xml:21 msgid "Show all apps" msgstr "הצגת כל היישומים" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "מעטפת GNOME" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "ניהול חלונות והרצת יישומים" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "Enable internal tools useful for developers and testers from Alt-F2" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "UUIDs of extensions to enable" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "UUIDs of extensions to force disabling" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "Disable user extensions" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." #: data/org.gnome.shell.gschema.xml.in:45 msgid "Allow extension installation" msgstr "לאפשר התקנת הרחבות" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "Allow users to install extensions in their home folder. If disabled, the " "InstallRemoteExtension D-Bus method will fail, and extensions are only " "loaded from system directories on startup. It does not affect extensions " "that are already loaded, so a change only takes full effect on the next " "login." msgstr "" "לאפשר למשתמשים להתקין הרחבות בתיקיית הבית שלהם. אם האפשרות מושבתת, השיטה " "InstallRemoteExtension של D-Bus תיכשל והרחבות תיטענה רק מתיקיות המערכת עם " "ההפעלה. זה לא משפיע על ההרחבות שכבר נטענו, לכן שינוי שכזה משפיע רק החל " "מהכניסה הבאה למערכת." #: data/org.gnome.shell.gschema.xml.in:56 msgid "Disables the validation of extension version compatibility" msgstr "Disables the validation of extension version compatibility" #: data/org.gnome.shell.gschema.xml.in:57 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." #: data/org.gnome.shell.gschema.xml.in:65 msgid "List of desktop file IDs for favorite applications" msgstr "List of desktop file IDs for favorite applications" #: data/org.gnome.shell.gschema.xml.in:66 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." #: data/org.gnome.shell.gschema.xml.in:73 msgid "History for command (Alt-F2) dialog" msgstr "History for command (Alt-F2) dialog" #. Translators: looking glass is a debugger and inspector tool, see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/docs/looking-glass.md #: data/org.gnome.shell.gschema.xml.in:78 msgid "History for the looking glass dialog" msgstr "History for the looking glass dialog" #: data/org.gnome.shell.gschema.xml.in:82 msgid "Always show the “Log Out” action in the system menu" msgstr "Always show the “Log Out” action in the system menu" #: data/org.gnome.shell.gschema.xml.in:83 msgid "" "This key overrides the automatic hiding of the “Log out” action in the " "system menu for logged-in situations where there is a single, local, non-" "system user and only a single available session type (e.g. GNOME on Wayland)." msgstr "" "This key overrides the automatic hiding of the “Log out” action in the " "system menu for logged-in situations where there is a single, local, non-" "system user and only a single available session type (e.g. GNOME on Wayland)." #: data/org.gnome.shell.gschema.xml.in:92 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "Whether to remember password for mounting encrypted or remote filesystems" #: data/org.gnome.shell.gschema.xml.in:93 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." #: data/org.gnome.shell.gschema.xml.in:102 msgid "The last selected non-default power profile" msgstr "The last selected non-default power profile" #: data/org.gnome.shell.gschema.xml.in:103 msgid "" "Some systems support more than two power profiles. In order to still support " "toggling between two profiles, this key records the last selected non-" "default profile." msgstr "" "Some systems support more than two power profiles. In order to still support " "toggling between two profiles, this key records the last selected non-" "default profile." #: data/org.gnome.shell.gschema.xml.in:111 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "The last version the “Welcome to GNOME” dialog was shown for" #: data/org.gnome.shell.gschema.xml.in:112 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can " "be used to effectively disable the dialog." msgstr "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can " "be used to effectively disable the dialog." #: data/org.gnome.shell.gschema.xml.in:145 msgid "Layout of the app picker" msgstr "פריסת בורר היישומים" #: data/org.gnome.shell.gschema.xml.in:146 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" msgstr "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" #: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:172 msgid "Keybinding to shift between overview states" msgstr "Keybinding to shift between overview states" #: data/org.gnome.shell.gschema.xml.in:166 msgid "Keybinding to shift between session, window picker and app grid" msgstr "Keybinding to shift between session, window picker and app grid" #: data/org.gnome.shell.gschema.xml.in:173 msgid "Keybinding to shift between app grid, window picker and session" msgstr "Keybinding to shift between app grid, window picker and session" #: data/org.gnome.shell.gschema.xml.in:179 msgid "Keybinding to open the “Show Applications” view" msgstr "Keybinding to open the “Show Applications” view" #: data/org.gnome.shell.gschema.xml.in:180 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "" "Keybinding to open the “Show Applications” view of the Activities Overview." #: data/org.gnome.shell.gschema.xml.in:187 msgid "Keybinding to open the overview" msgstr "Keybinding to open the overview" #: data/org.gnome.shell.gschema.xml.in:188 msgid "Keybinding to open the Activities Overview." msgstr "Keybinding to open the Activities Overview." #: data/org.gnome.shell.gschema.xml.in:194 msgid "Keybinding to toggle the visibility of the notification list" msgstr "Keybinding to toggle the visibility of the notification list" #: data/org.gnome.shell.gschema.xml.in:195 msgid "Keybinding to toggle the visibility of the notification list." msgstr "Keybinding to toggle the visibility of the notification list." #: data/org.gnome.shell.gschema.xml.in:201 msgid "Keybinding to toggle the quick settings menu" msgstr "Keybinding to toggle the quick settings menu" #: data/org.gnome.shell.gschema.xml.in:202 msgid "Keybinding to toggle the quick settings menu." msgstr "Keybinding to toggle the quick settings menu." #: data/org.gnome.shell.gschema.xml.in:208 msgid "Keybinding to focus the active notification" msgstr "Keybinding to focus the active notification" #: data/org.gnome.shell.gschema.xml.in:209 msgid "Keybinding to focus the active notification." msgstr "Keybinding to focus the active notification." #: data/org.gnome.shell.gschema.xml.in:215 msgid "Switch to application 1" msgstr "מעבר ליישום 1" #: data/org.gnome.shell.gschema.xml.in:219 msgid "Switch to application 2" msgstr "מעבר ליישום 2" #: data/org.gnome.shell.gschema.xml.in:223 msgid "Switch to application 3" msgstr "מעבר ליישום 3" #: data/org.gnome.shell.gschema.xml.in:227 msgid "Switch to application 4" msgstr "מעבר ליישום 4" #: data/org.gnome.shell.gschema.xml.in:231 msgid "Switch to application 5" msgstr "מעבר ליישום 5" #: data/org.gnome.shell.gschema.xml.in:235 msgid "Switch to application 6" msgstr "מעבר ליישום 6" #: data/org.gnome.shell.gschema.xml.in:239 msgid "Switch to application 7" msgstr "מעבר ליישום 7" #: data/org.gnome.shell.gschema.xml.in:243 msgid "Switch to application 8" msgstr "מעבר ליישום 8" #: data/org.gnome.shell.gschema.xml.in:247 msgid "Switch to application 9" msgstr "מעבר ליישום 9" #: data/org.gnome.shell.gschema.xml.in:251 msgid "Open a new instance of application 1" msgstr "פתיחת מופע חדש של יישום 1" #: data/org.gnome.shell.gschema.xml.in:255 msgid "Open a new instance of application 2" msgstr "פתיחת מופע חדש של יישום 2" #: data/org.gnome.shell.gschema.xml.in:259 msgid "Open a new instance of application 3" msgstr "פתיחת מופע חדש של יישום 3" #: data/org.gnome.shell.gschema.xml.in:263 msgid "Open a new instance of application 4" msgstr "פתיחת מופע חדש של יישום 4" #: data/org.gnome.shell.gschema.xml.in:267 msgid "Open a new instance of application 5" msgstr "פתיחת מופע חדש של יישום 5" #: data/org.gnome.shell.gschema.xml.in:271 msgid "Open a new instance of application 6" msgstr "פתיחת מופע חדש של יישום 6" #: data/org.gnome.shell.gschema.xml.in:275 msgid "Open a new instance of application 7" msgstr "פתיחת מופע חדש של יישום 7" #: data/org.gnome.shell.gschema.xml.in:279 msgid "Open a new instance of application 8" msgstr "פתיחת מופע חדש של יישום 8" #: data/org.gnome.shell.gschema.xml.in:283 msgid "Open a new instance of application 9" msgstr "פתיחת מופע חדש של יישום 9" #: data/org.gnome.shell.gschema.xml.in:308 #: data/org.gnome.shell.gschema.xml.in:335 msgid "Limit switcher to current workspace." msgstr "הגבלת המחליף למרחב העבודה הנוכחי." #: data/org.gnome.shell.gschema.xml.in:309 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." #: data/org.gnome.shell.gschema.xml.in:326 msgid "The application icon mode." msgstr "היישום במצב סמל." #: data/org.gnome.shell.gschema.xml.in:327 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-only” " "(shows only the application icon) or “both”." msgstr "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-only” " "(shows only the application icon) or “both”." #: data/org.gnome.shell.gschema.xml.in:336 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." #: data/org.gnome.shell.gschema.xml.in:346 msgid "Locations" msgstr "מקומות" #: data/org.gnome.shell.gschema.xml.in:347 msgid "The locations to show in world clocks" msgstr "המקומות להצגה בשעוני העולם" #: data/org.gnome.shell.gschema.xml.in:357 msgid "Automatic location" msgstr "מיקום אוטומטית" #: data/org.gnome.shell.gschema.xml.in:358 msgid "Whether to fetch the current location or not" msgstr "האם למשוך את המקום הנוכחי או לא" #: data/org.gnome.shell.gschema.xml.in:365 msgid "Location" msgstr "מקום" #: data/org.gnome.shell.gschema.xml.in:366 msgid "The location for which to show a forecast" msgstr "המקום להצגת תחזית עבורו" #. Keep in sync with subprojects/extensions-app #: data/org.gnome.Shell.Extensions.desktop.in.in:5 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/data/ui/extensions-window.ui:57 msgid "Extensions" msgstr "הרחבות" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "חיבורי רשת" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:275 msgid "Something’s gone wrong" msgstr "משהו השתבת" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" "אנו מצטערים, אבל ישנה בעיה: לא ניתן להציג את הגדרות ההרחבה. אנו ממליצים " "לדווח על בעיה ליוצרי ההרחבה." #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "פרטים טכניים" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "עמוד הבית" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 msgid "Visit extension homepage" msgstr "לבקר באתר ההרחבה" #: js/gdm/authPrompt.js:151 js/gdm/loginDialog.js:465 #: js/ui/audioDeviceSelection.js:66 js/ui/components/networkAgent.js:113 #: js/ui/components/polkitAgent.js:144 js/ui/endSessionDialog.js:437 #: js/ui/extensionDownloader.js:276 js/ui/shellMountOperation.js:382 #: js/ui/shellMountOperation.js:392 msgid "Cancel" msgstr "ביטול" #: js/gdm/authPrompt.js:317 js/ui/components/networkAgent.js:213 #: js/ui/components/networkAgent.js:233 js/ui/components/networkAgent.js:265 #: js/ui/components/networkAgent.js:298 js/ui/components/networkAgent.js:337 #: js/ui/components/networkAgent.js:350 js/ui/components/polkitAgent.js:286 #: js/ui/shellMountOperation.js:332 msgid "Password" msgstr "ססמה" #: js/gdm/loginDialog.js:326 msgid "Choose Session" msgstr "בחירת הפעלה" #. Translators: is running for #: js/gdm/loginDialog.js:423 #, javascript-format msgid "" "Remote login is not possible because a remote session is already running for " "%s. To login remotely, you must log out from the remote session or force " "stop it." msgstr "" "כניסה מרחוק אינה אפשרית כיוון שכבר יש הפעלה מרוחקת עבור %s. כדי להיכנס " "מרחוק, יש לצאת מההפעלה המרוחקת או לכפות את עצירתה." #. Translators: is running for #: js/gdm/loginDialog.js:426 #, javascript-format msgid "" "Login is not possible because a remote session is already running for %s. To " "login, you must log out from the remote session or force stop it." msgstr "" "כניסה אינה אפשרית כיוון שכבר יש הפעלה מרוחקת עבור %s. כדי להיכנס, יש לצאת " "מההפעלה המרוחקת או לכפות את עצירתה." #. Translators: is running for #: js/gdm/loginDialog.js:429 #, javascript-format msgid "" "Remote login is not possible because a local session is already running for " "%s. To login remotely, you must log out from the local session or force stop " "it." msgstr "" "כניסה מרחוק אינה אפשרית כיוון שכבר יש הפעלה מקומית עבור %s. כדי להיכנס " "מרחוק, יש לצאת מההפעלה המקומית או לכפות את עצירתה." #. Translators: is running for #: js/gdm/loginDialog.js:432 #, javascript-format msgid "" "Login is not possible because a session is already running for %s. To login, " "you must log out from the session or force stop it." msgstr "" "כניסה אינה אפשרית כיוון שכבר יש הפעלה עבור %s. כדי להיכנס, יש לצאת מההפעלה " "או לכפות את עצירתה." #: js/gdm/loginDialog.js:441 msgid "Session Already Running" msgstr "ההפעלה כבר רצה" #: js/gdm/loginDialog.js:453 msgid "" "Force stopping will quit any running apps and processes, and could result in " "data loss" msgstr "אילוץ העצירה יסגור יישומים ותהליכים פעילים ויכול להוביל לאבדן נתונים" #: js/gdm/loginDialog.js:473 msgid "Force Stop" msgstr "אילוץ עצירה" #: js/gdm/loginDialog.js:541 msgid "Not listed?" msgstr "לא רשום?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:1009 #, javascript-format msgid "(e.g., user or %s)" msgstr "(משתמש או %s לדוגמה)" #: js/gdm/loginDialog.js:1014 js/ui/components/networkAgent.js:257 #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:326 msgid "Username" msgstr "שם משתמש" #: js/gdm/loginDialog.js:1080 msgid "Login Attempt Timed Out" msgstr "הזמן שהוקצב לניסיון הכניסה תם" #: js/gdm/loginDialog.js:1081 msgid "Login took too long, please try again" msgstr "הכניסה למערכת ארכה זמן רב מדי, נא לנסות שוב" #: js/gdm/loginDialog.js:1426 msgid "Login Window" msgstr "חלון כניסה" #: js/gdm/util.js:496 msgid "Authentication error" msgstr "שגיאת אימות" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:727 msgid "(or swipe finger across reader)" msgstr "(או להחליק אצבע על הקורא)" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:732 msgid "(or place finger on reader)" msgstr "(או לשים אצבע על הקורא)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:91 msgctxt "search-result" msgid "Power Off" msgstr "כיבוי" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:94 msgid "power off;poweroff;shutdown;halt;stop" msgstr "כיבוי;סגירה;יציאה;הפעלה מחדש;עצירה;הפסקה" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:99 msgctxt "search-result" msgid "Restart" msgstr "הפעלה מחדש" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:102 msgid "reboot;restart;" msgstr "הפעלה מחדש; כיבוי והדלקה;הדלקה מחדש;" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:107 msgctxt "search-result" msgid "Lock Screen" msgstr "נעילת המסך" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:110 msgid "lock screen" msgstr "נעילת המסך" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:115 msgctxt "search-result" msgid "Log Out" msgstr "יציאה" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:118 msgid "logout;log out;sign off" msgstr "יציאה;התנתקות;התנתק;ניתוק;הינתקות;הנתקות" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:123 msgctxt "search-result" msgid "Suspend" msgstr "השהיה" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:126 msgid "suspend;sleep" msgstr "השהיה;שינה;תרדמת" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:131 msgctxt "search-result" msgid "Switch User" msgstr "החלפת משתמש" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:134 msgid "switch user" msgstr "החלפת משתמש" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:141 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "נעילת כיוון;שחרור נעילת כיוון;מסך;סיבוב;כיוון;הטיה;היפוך" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:146 msgctxt "search-result" msgid "Take a Screenshot" msgstr "צילום המסך" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:149 msgid "screenshot;screencast;snip;capture;record" msgstr "צילום מסך;תפיסה;הקלטה;סקרין שוט;סקרינשוט;לכידה;חיתוך;תמונה" #: js/misc/systemActions.js:249 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "שחרור נעילת סיבוב מסך" #: js/misc/systemActions.js:250 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "נעילת סיבוב מסך" #: js/misc/util.js:130 msgid "Command not found" msgstr "הפקודה לא נמצאה" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:170 msgid "Could not parse command:" msgstr "לא ניתן לפענח את הפקודה:" #: js/misc/util.js:178 #, javascript-format msgid "Execution of “%s” failed:" msgstr "ההרצה של „%s” נכשלה:" #: js/misc/dateUtils.js:69 msgid "Just now" msgstr "לפני רגע" #: js/misc/dateUtils.js:72 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "לפני דקה" msgstr[1] "לפני שתי דקות" msgstr[2] "לפני %d דקות" msgstr[3] "‫לפני %d דקות" #: js/misc/dateUtils.js:79 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "לפני שעה" msgstr[1] "לפני שעתיים" msgstr[2] "‫לפני %d שעות" msgstr[3] "‫לפני %d שעות" #: js/misc/dateUtils.js:85 js/ui/dateMenu.js:183 msgid "Yesterday" msgstr "אתמול" #: js/misc/dateUtils.js:88 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "אתמול" msgstr[1] "שלשום" msgstr[2] "‫לפני %d ימים" msgstr[3] "‫לפני %d ימים" #: js/misc/dateUtils.js:95 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "לפני שבוע" msgstr[1] "לפני שבועיים" msgstr[2] "‫לפני %d שבועות" msgstr[3] "‫לפני %d שבועות" #: js/misc/dateUtils.js:102 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "לפני חודש" msgstr[1] "לפני חודשיים" msgstr[2] "‫לפני %d חודשים" msgstr[3] "‫לפני %d חודשים" #: js/misc/dateUtils.js:108 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "לפני שנה" msgstr[1] "לפני שנתיים" msgstr[2] "‫לפני %d שנים" msgstr[3] "‫לפני %d שנים" #. Translators: Time in 24h format #: js/misc/dateUtils.js:155 msgid "%H∶%M" msgstr "‎%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/dateUtils.js:161 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "אתמול, %H∶%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/dateUtils.js:167 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, %H:%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/dateUtils.js:173 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%d ב%B, %H:%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/dateUtils.js:179 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%d ב%B %Y, %H:%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/dateUtils.js:184 msgid "%l∶%M %p" msgstr "%l:%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/dateUtils.js:190 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "אתמול, %l∶%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/dateUtils.js:196 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %l:%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/dateUtils.js:202 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%-d ב%B, %l:%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/dateUtils.js:208 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%-d ב%B %Y, %l:%M %p" #: js/portalHelper/main.js:98 msgid "Your connection seems to be secure" msgstr "נראה כי ההתחברות שלך בטוחה" #: js/portalHelper/main.js:104 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "ההתחברות שלך לנקודה חמה זו אינה בטוחה. ססמאות ומידע אחר שהזנת עשויים להיות " "גלויים לאנשים בקרבת מקום." #: js/portalHelper/main.js:115 msgid "Hotspot Login" msgstr "התחברות לנקודה חמה" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:51 js/ui/inhibitShortcutsDialog.js:92 msgid "Deny" msgstr "לדחות" #: js/ui/accessDialog.js:52 js/ui/inhibitShortcutsDialog.js:101 msgid "Allow" msgstr "לאפשר" #: js/ui/appDisplay.js:1769 msgid "Unnamed Folder" msgstr "תיקייה ללא שם" #: js/ui/appFavorites.js:163 #, javascript-format msgid "%s has been pinned to the dash." msgstr "‏%s הוצמד לחלונית היישומים." #: js/ui/appFavorites.js:194 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "‏%s הוסר מחלונית היישומים." #: js/ui/appFavorites.js:208 js/ui/main.js:281 msgid "Undo" msgstr "ביטול" #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:49 msgid "Open Windows" msgstr "חלונות פתוחים" #: js/ui/appMenu.js:57 msgid "New Window" msgstr "חלון חדש" #: js/ui/appMenu.js:84 msgid "App Details" msgstr "פרטי יישום" #: js/ui/appMenu.js:100 msgid "Quit" msgstr "יציאה" #: js/ui/appMenu.js:160 js/ui/dash.js:248 msgid "Unpin" msgstr "ביטול הצמדה" #: js/ui/appMenu.js:161 msgid "Pin to Dash" msgstr "הצמדה לחלונית היישומים" #: js/ui/appMenu.js:178 msgid "Launch using Integrated Graphics Card" msgstr "הפעלה בשימוש כרטיס מסך משולב" #: js/ui/appMenu.js:179 msgid "Launch using Discrete Graphics Card" msgstr "הפעלה בשימוש כרטיס מסך נפרד" #: js/ui/audioDeviceSelection.js:46 msgid "Select Audio Device" msgstr "בחירת התקן שמע" #: js/ui/audioDeviceSelection.js:61 js/ui/status/volume.js:81 msgid "Sound Settings" msgstr "הגדרות שמע" #: js/ui/audioDeviceSelection.js:74 msgid "Headphones" msgstr "אזניות" #: js/ui/audioDeviceSelection.js:76 msgid "Headset" msgstr "אזניות עם מיקרופון" #: js/ui/audioDeviceSelection.js:78 js/ui/status/volume.js:356 msgid "Microphone" msgstr "מיקרופון" #: js/ui/backgroundMenu.js:13 msgid "Change Background…" msgstr "החלפת הרקע…" #: js/ui/backgroundMenu.js:15 msgid "Display Settings" msgstr "הגדרות תצוגה" #: js/ui/backgroundMenu.js:16 msgid "Settings" msgstr "הגדרות" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:37 msgctxt "calendar-no-work" msgid "06" msgstr "65" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:63 msgctxt "grid sunday" msgid "S" msgstr "א" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:65 msgctxt "grid monday" msgid "M" msgstr "ב" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:67 msgctxt "grid tuesday" msgid "T" msgstr "ג" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:69 msgctxt "grid wednesday" msgid "W" msgstr "ד" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:71 msgctxt "grid thursday" msgid "T" msgstr "ה" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:73 msgctxt "grid friday" msgid "F" msgstr "ו" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:75 msgctxt "grid saturday" msgid "S" msgstr "ש" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:426 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:436 msgid "%OB %Y" msgstr "%OB %Y" #: js/ui/calendar.js:498 msgid "Previous month" msgstr "חודש קודם" #: js/ui/calendar.js:516 msgid "Next month" msgstr "חודש הבא" #: js/ui/calendar.js:667 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:726 msgid "Week %V" msgstr "שבוע %V" #: js/ui/calendar.js:918 msgid "No Notifications" msgstr "אין התרעות" #: js/ui/calendar.js:974 msgid "Do Not Disturb" msgstr "נא לא להפריע" #: js/ui/calendar.js:995 msgid "Clear" msgstr "ניקוי" # javascript-format #: js/ui/calendar.js:999 msgctxt "action" msgid "Clear all notifications" msgstr "לפנות את כל ההתראות" #. Translators: %s is an application name #: js/ui/closeDialog.js:42 #, javascript-format msgid "“%s” Is Not Responding" msgstr "‏„%s” לא מגיב" #: js/ui/closeDialog.js:43 msgid "" "You may choose to wait a short while for it to continue or force the app to " "quit entirely" msgstr "באפשרותך להמתין זמן קצר או לכפות על היישום להיסגר לחלוטין" #: js/ui/closeDialog.js:71 msgid "Force Quit" msgstr "לכפות סגירה" #: js/ui/closeDialog.js:76 msgid "Wait" msgstr "המתנה" #: js/ui/components/automountManager.js:82 msgid "External drive connected" msgstr "חובר כונן חיצוני" #: js/ui/components/automountManager.js:94 msgid "External drive disconnected" msgstr "נותק כונן חיצוני" #: js/ui/components/automountManager.js:208 msgid "Unable to unlock volume" msgstr "לא ניתן לנעול את העצמה" #: js/ui/components/automountManager.js:209 msgid "The installed udisks version does not support the PIM setting" msgstr "גרסת udisks המותקנת לא תומכת בהגדרת PIM" # msgid_plural "%d Connected" #. Translators: %s is the name of a partition on a external drive #: js/ui/components/autorunManager.js:189 #, javascript-format # msgid_plural "%d connected" msgid "“%s” connected" msgstr "‏„%s” מחובר" #: js/ui/components/autorunManager.js:190 msgid "Disk can now be used" msgstr "כעת ניתן להשתמש בכונן" #: js/ui/components/autorunManager.js:202 #, javascript-format msgid "Open with %s" msgstr "פתיחה באמצעות %s" #: js/ui/components/networkAgent.js:95 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router" msgstr "לחלופין ניתן להתחבר על ידי לחיצה על כפתור ה־„WPS” בנתב שלך" #: js/ui/components/networkAgent.js:107 js/ui/status/bluetooth.js:245 #: js/ui/status/network.js:360 js/ui/status/network.js:444 msgid "Connect" msgstr "התחברות" #: js/ui/components/networkAgent.js:222 msgid "Key" msgstr "מפתח" #: js/ui/components/networkAgent.js:273 js/ui/components/networkAgent.js:312 msgid "Private key password" msgstr "ססמת מפתח פרטי" #: js/ui/components/networkAgent.js:306 msgid "Identity" msgstr "זהות" #: js/ui/components/networkAgent.js:332 msgid "Service" msgstr "שירות" #: js/ui/components/networkAgent.js:370 js/ui/components/networkAgent.js:406 #: js/ui/components/networkAgent.js:743 js/ui/components/networkAgent.js:764 msgid "Authentication required" msgstr "נדרש אימות" #: js/ui/components/networkAgent.js:371 js/ui/components/networkAgent.js:744 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network “%s”" msgstr "ססמאות או מפתחות הצפנה נדרשים כדי לגשת לרשת האלחוטית „%s”" #: js/ui/components/networkAgent.js:375 js/ui/components/networkAgent.js:748 msgid "Wired 802.1X authentication" msgstr "אימות Wired 802.1X" #: js/ui/components/networkAgent.js:378 msgid "Network name" msgstr "שם הרשת" #: js/ui/components/networkAgent.js:386 js/ui/components/networkAgent.js:752 msgid "DSL authentication" msgstr "אימות DSL" #: js/ui/components/networkAgent.js:393 js/ui/components/networkAgent.js:757 msgid "PIN code required" msgstr "נדרש קוד PIN" #: js/ui/components/networkAgent.js:394 js/ui/components/networkAgent.js:758 msgid "PIN code is needed for the mobile broadband device" msgstr "נדרש קוד PIN עבור התקן החיבור האלחוטי בפס רחב" #: js/ui/components/networkAgent.js:396 msgid "PIN" msgstr "PIN" #: js/ui/components/networkAgent.js:407 js/ui/components/networkAgent.js:749 #: js/ui/components/networkAgent.js:753 js/ui/components/networkAgent.js:765 #: js/ui/components/networkAgent.js:769 #, javascript-format msgid "A password is required to connect to “%s”" msgstr "נדרשת ססמה כדי להתחבר אל „%s”" #: js/ui/components/networkAgent.js:768 msgid "VPN password" msgstr "ססמת VPN" #: js/ui/components/polkitAgent.js:44 msgid "Authentication Required" msgstr "נדרש אימות" #: js/ui/components/polkitAgent.js:84 msgid "Administrator" msgstr "מנהל" #: js/ui/components/polkitAgent.js:149 msgid "Authenticate" msgstr "אימות" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:263 js/ui/shellMountOperation.js:415 msgid "Sorry, that didn’t work. Please try again." msgstr "פעולה זו לא הצליחה, נא לנסות שוב. עמך הסליחה." #: js/ui/ctrlAltTab.js:23 js/ui/overviewControls.js:404 msgid "Windows" msgstr "חלונות" #: js/ui/dash.js:204 js/ui/dash.js:250 msgid "Show Apps" msgstr "הצגת יישומים" #. Translators: this is the name of the dock/favorites area on #. the bottom of the overview #: js/ui/dash.js:408 msgid "Dash" msgstr "חלונית" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:99 msgid "%B %-d %Y" msgstr "%-d ב%B %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:106 msgid "%A %B %e %Y" msgstr "%A %e ב%B %Y" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:172 msgctxt "calendar heading" msgid "%B %-d" msgstr "%-d ב%B" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:175 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%-d ב%B %Y" #: js/ui/dateMenu.js:181 msgid "Today" msgstr "היום" #: js/ui/dateMenu.js:185 msgid "Tomorrow" msgstr "מחר" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:216 msgctxt "event list time" msgid "All Day" msgstr "יום שלם" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:238 msgid "%m/%d" msgstr "%d/%m" #: js/ui/dateMenu.js:289 msgid "No Events" msgstr "אין אירועים" #: js/ui/dateMenu.js:411 msgid "Add World Clocks…" msgstr "הוספת שעונים מהעולם…" #: js/ui/dateMenu.js:412 msgid "World Clocks" msgstr "שעוני העולם" #: js/ui/dateMenu.js:702 msgid "Loading…" msgstr "בטעינה…" #: js/ui/dateMenu.js:712 msgid "Go Online for Weather Information" msgstr "יש להתחבר בשביל מידע על מזג האוויר" #: js/ui/dateMenu.js:714 msgid "Weather Information Unavailable" msgstr "מידע על מזג האוויר לא זמין כרגע" #: js/ui/dateMenu.js:724 msgid "Weather" msgstr "מזג אוויר" #: js/ui/dateMenu.js:726 msgid "Select Weather Location…" msgstr "בחירת מיקום למזג אוויר…" #: js/ui/endSessionDialog.js:47 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "הוצאת %s" #: js/ui/endSessionDialog.js:48 msgctxt "title" msgid "Log Out" msgstr "יציאה" # msgid_plural "%s will be logged out automatically in %d seconds." #: js/ui/endSessionDialog.js:51 #, javascript-format msgid "%s will be logged out automatically in %d second" msgid_plural "%s will be logged out automatically in %d seconds" msgstr[0] "המשתמש %s יצא אוטומטית בעוד שנייה" msgstr[1] "המשתמש %s יצא אוטומטית בעוד שתי שניות" msgstr[2] "המשתמש %s יצא אוטומטית בעוד %d שניות" msgstr[3] "‫המשתמש %s יצא אוטומטית בעוד %d שניות" # msgid_plural "You will be logged out automatically in %d seconds." #: js/ui/endSessionDialog.js:57 #, javascript-format msgid "You will be logged out automatically in %d second" msgid_plural "You will be logged out automatically in %d seconds" msgstr[0] "המשתמש שלך יצא אוטומטית מהמערכת בעוד שנייה" msgstr[1] "‫המשתמש שלך יצא אוטומטית מהמערכת בעוד שתי שניות" msgstr[2] "‫‫המשתמש שלך יצא אוטומטית מהמערכת בעוד %d שניות" msgstr[3] "‫‫‫המשתמש שלך יצא אוטומטית מהמערכת בעוד %d שניות" #: js/ui/endSessionDialog.js:64 msgctxt "button" msgid "Log Out" msgstr "יציאה" #: js/ui/endSessionDialog.js:70 js/ui/status/system.js:174 msgctxt "title" msgid "Power Off" msgstr "כיבוי" #: js/ui/endSessionDialog.js:71 msgctxt "title" msgid "Install Updates & Power Off" msgstr "התקנת עדכונים וכיבוי" # msgid_plural "The system will power off automatically in %d seconds." #: js/ui/endSessionDialog.js:74 #, javascript-format msgid "The system will power off automatically in %d second" msgid_plural "The system will power off automatically in %d seconds" msgstr[0] "המערכת תכבה אוטומטית בעוד שנייה" msgstr[1] "המערכת תכבה אוטומטית בעוד שתי שניות" msgstr[2] "המערכת תכבה אוטומטית בעוד %d שניות" msgstr[3] "‫המערכת תכבה אוטומטית בעוד %d שניות" #: js/ui/endSessionDialog.js:78 js/ui/endSessionDialog.js:97 msgctxt "checkbox" msgid "Install pending software updates" msgstr "התקנת עדכוני תכנה בהמתנה" #: js/ui/endSessionDialog.js:82 msgctxt "button" msgid "Power Off" msgstr "כיבוי" #: js/ui/endSessionDialog.js:89 msgctxt "title" msgid "Restart" msgstr "הפעלה מחדש" #: js/ui/endSessionDialog.js:90 msgctxt "title" msgid "Install Updates & Restart" msgstr "התקנת עדכונים והפעלה מחדש" # msgid_plural "The system will restart automatically in %d seconds." #: js/ui/endSessionDialog.js:93 #, javascript-format msgid "The system will restart automatically in %d second" msgid_plural "The system will restart automatically in %d seconds" msgstr[0] "המערכת תופעל אוטומטית מחדש בעוד שנייה" msgstr[1] "‫המערכת תופעל אוטומטית מחדש בעוד שתי שניות" msgstr[2] "המערכת תופעל אוטומטית מחדש בעוד %d שניות" msgstr[3] "‫המערכת תופעל אוטומטית מחדש בעוד %d שניות" #: js/ui/endSessionDialog.js:101 msgctxt "button" msgid "Restart" msgstr "הפעלה מחדש" #: js/ui/endSessionDialog.js:109 msgctxt "title" msgid "Restart & Install Updates" msgstr "הפעלה מחדש והתקנת עדכונים" # msgid_plural "" # "The system will automatically restart and install updates in %d seconds." #: js/ui/endSessionDialog.js:112 #, javascript-format msgid "The system will automatically restart and install updates in %d second" msgid_plural "" "The system will automatically restart and install updates in %d seconds" msgstr[0] "המערכת תופעל מחדש ותתקין עדכונים בעוד שנייה" msgstr[1] "המערכת תופעל מחדש ותתקין עדכונים בעוד שתי שניות" msgstr[2] "המערכת תופעל מחדש ותתקין עדכונים בעוד %d שניות" msgstr[3] "‫המערכת תופעל מחדש ותתקין עדכונים בעוד %d שניות" # msgctxt "button" #: js/ui/endSessionDialog.js:119 js/ui/endSessionDialog.js:140 msgctxt "button" msgid "Restart & Install" msgstr "הפעלה מחדש והתקנה" # msgctxt "button" #: js/ui/endSessionDialog.js:121 msgctxt "button" msgid "Install & Power Off" msgstr "התקנה וכיבוי" #: js/ui/endSessionDialog.js:122 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "כיבוי לאחר התקנת עדכונים" #: js/ui/endSessionDialog.js:129 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "הפעלה מחדש ושדרוג התקנה" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:134 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "%s %s יותקן לאחר הפעלה מחדש. שדרוג ההתקנה עשוי לקחת זמר רב: יש לוודאשגִבית " "ושהמחשב מחובר למקור חשמל." #: js/ui/endSessionDialog.js:283 msgid "Low battery power: please plug in before installing updates" msgstr "פועל על סוללה נמוכה: יש לחבר לחשמל לפני התקנת עדכונים" #: js/ui/endSessionDialog.js:292 msgid "Some applications are busy or have unsaved work" msgstr "כמה יישומים עסוקים או שיש עבודה שלא נשמרה" #: js/ui/endSessionDialog.js:297 msgid "Other users are logged in" msgstr "משתמשים נוספים מחוברים" #: js/ui/endSessionDialog.js:467 msgctxt "button" msgid "Boot Options" msgstr "אפשרויות אתחול" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:672 #, javascript-format msgid "%s (remote)" msgstr "%s (מרוחק)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:675 #, javascript-format msgid "%s (console)" msgstr "%s (מסוף)" #: js/ui/extensionDownloader.js:280 msgid "Install" msgstr "התקנה" #: js/ui/extensionDownloader.js:286 msgid "Install Extension" msgstr "התקנת הרחבות" #: js/ui/extensionDownloader.js:287 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "הורדה והתקנה של „%s” מ־extensions.gnome.org?" #: js/ui/extensionSystem.js:352 msgid "Extension Updates Available" msgstr "עדכוני הרחבות זמינים" #: js/ui/extensionSystem.js:353 msgid "Extension updates are ready to be installed" msgstr "עדכוני הרחבות מוכנים להתקנה" #: js/ui/inhibitShortcutsDialog.js:70 msgid "Allow inhibiting shortcuts" msgstr "לאפשר השבתת צירופי מקשים" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:73 #, javascript-format msgid "The app %s wants to inhibit shortcuts" msgstr "היישום %s רוצה למנוע צירופי מקשים" #: js/ui/inhibitShortcutsDialog.js:74 msgid "An app wants to inhibit shortcuts" msgstr "יישום רוצה למנוע צירופי מקשים" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:81 #, javascript-format msgid "You can restore shortcuts by pressing %s" msgstr "נתן לשחזר צירופי מקשים בהקשה על %s" #: js/ui/kbdA11yDialog.js:34 msgid "Slow Keys Turned On" msgstr "מצב מקשים אטיים פועל" #: js/ui/kbdA11yDialog.js:35 msgid "Slow Keys Turned Off" msgstr "מצב מקשים אטיים כבוי" #: js/ui/kbdA11yDialog.js:36 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "יש ללחוץ על מקש ה־Shift במשך 8 שניות. זה הקיצור לתכונת המקשים האטיים, " "המשפיעה על המקלדת שלך." #: js/ui/kbdA11yDialog.js:42 msgid "Sticky Keys Turned On" msgstr "מצב מקשים דביקים פועל" #: js/ui/kbdA11yDialog.js:43 msgid "Sticky Keys Turned Off" msgstr "מצב מקשים דביקים כבוי" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "יש ללחוץ 5 פעמים ברציפות על מקש ה־Shift. זה הקיצור לתכונת המקשים הדביקים, " "המשפיעה על המקלדת שלך." #: js/ui/kbdA11yDialog.js:47 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" "יש ללחוץ על שני מקשים בו־זמנית, או ללחוץ 5 פעמים ברציפות על מקש ה־Shift. זה " "יכבה את תכונת המקשים הדביקים, המשפיעה על המקלדת שלך." #: js/ui/kbdA11yDialog.js:57 msgid "Leave On" msgstr "להשאיר פועל" #: js/ui/kbdA11yDialog.js:57 msgid "Turn On" msgstr "הפעלה" #: js/ui/kbdA11yDialog.js:67 js/ui/status/network.js:455 msgid "Turn Off" msgstr "כיבוי" #: js/ui/kbdA11yDialog.js:67 msgid "Leave Off" msgstr "להשאיר כבוי" #: js/ui/keyboard.js:180 js/ui/status/keyboard.js:897 msgid "Keyboard Settings" msgstr "הגדרות מקלדת" #: js/ui/lookingGlass.js:727 msgid "No extensions installed" msgstr "לא מותקנות הרחבות" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:788 #, javascript-format msgid "%s has not emitted any errors" msgstr "‏%s לא העלה שגיאות כלשהן" #: js/ui/lookingGlass.js:794 msgid "Hide Errors" msgstr "הסתרת השגיאות" #: js/ui/lookingGlass.js:798 js/ui/lookingGlass.js:875 msgid "Show Errors" msgstr "הצגת השגיאות" #: js/ui/lookingGlass.js:807 msgid "Active" msgstr "פעיל" #: js/ui/lookingGlass.js:810 msgid "Inactive" msgstr "מושבת" #: js/ui/lookingGlass.js:812 msgid "Error" msgstr "שגיאה" #: js/ui/lookingGlass.js:814 msgid "Out of date" msgstr "לא בתוקף" #: js/ui/lookingGlass.js:816 msgid "Downloading" msgstr "בהורדה" #: js/ui/lookingGlass.js:818 msgid "Deactivating" msgstr "משבית" #: js/ui/lookingGlass.js:820 msgid "Activating" msgstr "מפעיל" #: js/ui/lookingGlass.js:853 msgid "View Source" msgstr "צפייה במקור" #: js/ui/lookingGlass.js:864 msgid "Web Page" msgstr "דף אינטרנט" #: js/ui/main.js:277 msgid "System was put in unsafe mode" msgstr "המערכת הועברה למצב בלתי בטוח" #: js/ui/main.js:278 msgid "Apps now have unrestricted access" msgstr "ליישומים יש עכשיו גישה בלתי מוגבלת" #: js/ui/main.js:338 msgid "Logged in as a privileged user" msgstr "מחובר כמשתמש בעל הרשאות מיוחדות" #: js/ui/main.js:339 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" "יש להימנע מהרצת הפעלה כמשתמש בעל הרשאות מיוחדות מסיבות אבטחה. אם אפשרי, יש " "להתחבר כמשתמש רגיל." #: js/ui/main.js:387 msgid "Screen Lock disabled" msgstr "מסך נעילה מושבת" #: js/ui/main.js:388 msgid "Screen Locking requires the GNOME display manager" msgstr "מסך נעילה דורש הרצת מנהל תצוגה של GNOME" # msgctxt "program" #. Translators: this is the string displayed in the header when a message #. source doesn't have a name #: js/ui/messageList.js:374 msgid "Unknown App" msgstr "יישום לא ידוע" #: js/ui/messageTray.js:326 js/ui/messageTray.js:328 msgid "Notification sound" msgstr "צליל התראות" #: js/ui/mpris.js:198 msgid "Unknown artist" msgstr "אמן לא ידוע" #: js/ui/mpris.js:208 msgid "Unknown title" msgstr "כותרת לא ידועה" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:328 msgid "Type to search" msgstr "יש להקליד כדי לחפש" #: js/ui/overviewControls.js:392 msgid "Apps" msgstr "יישומים" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:33 msgid "Overview" msgstr "סקירה" #: js/ui/padOsd.js:98 msgid "New shortcut…" msgstr "צירוף מקשים חדש…" #: js/ui/padOsd.js:151 msgid "App defined" msgstr "הגדרת יישום" #: js/ui/padOsd.js:152 msgid "Show on-screen help" msgstr "הצגת עזרה על המסך" #: js/ui/padOsd.js:153 msgid "Switch monitor" msgstr "החלפת צגים" #: js/ui/padOsd.js:154 msgid "Assign keystroke" msgstr "הקצאת מקש" #: js/ui/padOsd.js:223 msgid "Done" msgstr "בוצע" #: js/ui/padOsd.js:726 msgid "Edit…" msgstr "עריכה…" #: js/ui/padOsd.js:773 msgid "None" msgstr "לא כלום" #: js/ui/padOsd.js:844 msgid "Press a button to configure" msgstr "יש ללחוץ על כפתור להגדרה" #: js/ui/padOsd.js:845 msgid "Press Esc to exit" msgstr "יש להקיש Esc ליציאה" #: js/ui/padOsd.js:848 msgid "Press any key to exit" msgstr "יש להקיש על מנת לצאת" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:423 msgid "Activities" msgstr "פעילויות" #: js/ui/panel.js:504 msgctxt "System menu in the top bar" msgid "System" msgstr "מערכת" #: js/ui/panel.js:678 msgid "Top Bar" msgstr "הסרגל העליון" #: js/ui/quickSettings.js:188 msgid "Open menu" msgstr "פתיחת תפריט" #: js/ui/runDialog.js:61 msgid "Run a Command" msgstr "הרצת פקודה" #: js/ui/runDialog.js:76 msgid "Press ESC to close" msgstr "יש להקיש Esc לסגירה" #: js/ui/runDialog.js:241 msgid "Restart is not available on Wayland" msgstr "הפעלה מחדש אינה זמינה תחת Wayland" #: js/ui/runDialog.js:246 msgid "Restarting…" msgstr "מופעל מחדש…" #: js/ui/screenShield.js:233 msgid "GNOME needs to lock the screen" msgstr "על GNOME לנעול את המסך" #: js/ui/screenShield.js:274 js/ui/screenShield.js:667 msgid "Unable to lock" msgstr "לא ניתן לנעול" #: js/ui/screenShield.js:275 js/ui/screenShield.js:668 msgid "Lock was blocked by an app" msgstr "הנעילה נחסמה ע״י יישום" #: js/ui/screenshot.js:1252 msgid "Selection" msgstr "בחירה" #: js/ui/screenshot.js:1262 msgid "Area Selection" msgstr "בחירת אזור" #: js/ui/screenshot.js:1267 msgid "Screen" msgstr "מסך" #: js/ui/screenshot.js:1277 msgid "Screen Selection" msgstr "בחירת מסך" #: js/ui/screenshot.js:1282 msgid "Window" msgstr "חלון" #: js/ui/screenshot.js:1292 msgid "Window Selection" msgstr "בחירת חלון" #. Translators: entry in the window right click menu. #: js/ui/screenshot.js:1317 js/ui/status/system.js:111 js/ui/windowMenu.js:28 msgid "Take Screenshot" msgstr "צילום המסך" # msgctxt "search-result" #: js/ui/screenshot.js:1333 msgid "Record Screen" msgstr "הקלטת מסך" #. Translators: since this string refers to an action, #. it needs to be phrased as a verb. #: js/ui/screenshot.js:1350 msgid "Capture" msgstr "לכידה" #: js/ui/screenshot.js:1372 msgid "Show Pointer" msgstr "הצגת הסמן" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1996 msgid "Screencasts" msgstr "הקלטות מסך" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast From 07-17-2013 10:00:46 PM" #: js/ui/screenshot.js:2001 #, no-c-format msgid "Screencast From %d %t" msgstr "הקלטת מסך מתאריך %d %t" #. Translators: notification title. #: js/ui/screenshot.js:2047 msgid "Screencast recorded" msgstr "המסך הוקלט" #. Translators: notification title. #: js/ui/screenshot.js:2060 msgid "Screencast failed to start" msgstr "הפעלת הקלטת המסך נכשלה" #. Translators: notification title. #: js/ui/screenshot.js:2066 msgid "Screencast ended: Out of disk space" msgstr "הקלטת המסך הסתיימה: נגמר המקום בכונן" #. We can encourage user to try again on service crashes since the #. recorder will auto-blocklist the pipeline that crashed. #. Translators: notification title. #: js/ui/screenshot.js:2072 msgid "Screencast ended unexpectedly, please try again" msgstr "הקלטת המסך הסתיימה במפתיע, נא לנסות שוב" #. Translators: notification title. #: js/ui/screenshot.js:2075 msgid "Screencast ended unexpectedly" msgstr "הקלטת המסך הסתיימה באופן בלתי צפוי" #. Translators: notification source name. #: js/ui/screenshot.js:2085 js/ui/screenshot.js:2327 msgid "Screenshot" msgstr "צילום מסך" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:2092 msgid "Click here to view the video." msgstr "לחיצה כאן מנגנת את הווידאו." #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:2100 js/ui/screenshot.js:2343 msgid "Show in Files" msgstr "הצגה בקבצים" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2287 #, javascript-format msgid "Screenshot From %s" msgstr "צילום מסך מתאריך %s" #. Translators: notification title. #: js/ui/screenshot.js:2333 msgid "Screenshot captured" msgstr "המסך צולם" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2335 msgid "You can paste the image from the clipboard." msgstr "אפשר להדביק את התמונה מלוח הגזירים." #: js/ui/screenshot.js:2391 js/ui/screenshot.js:2555 msgid "Screenshot taken" msgstr "המסך צולם" #: js/ui/search.js:829 msgid "Searching…" msgstr "בחיפוש…" #: js/ui/search.js:831 msgid "No results" msgstr "אין תוצאות" #: js/ui/search.js:962 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "עוד אחד" msgstr[1] "עוד שניים" msgstr[2] "עוד %d" msgstr[3] "‫עוד %d" #: js/ui/searchController.js:87 #: subprojects/extensions-app/data/ui/extensions-window.ui:73 msgid "Search" msgstr "חיפוש" #: js/ui/shellEntry.js:21 msgid "Copy" msgstr "העתקה" #: js/ui/shellEntry.js:26 msgid "Paste" msgstr "הדבקה" #: js/ui/shellEntry.js:78 msgid "Show Text" msgstr "הצגת טקסט" #: js/ui/shellEntry.js:80 msgid "Hide Text" msgstr "הסתרת טקסט" #: js/ui/shellEntry.js:174 msgid "Caps lock is on" msgstr "מקש Caps Lock פועל" #: js/ui/shellMountOperation.js:286 msgid "Hidden Volume" msgstr "כרך מוסתר" #: js/ui/shellMountOperation.js:289 msgid "Windows System Volume" msgstr "מחיצת המערכת" #: js/ui/shellMountOperation.js:292 msgid "Uses Keyfiles" msgstr "משתמש בקובצי מפתחות" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:300 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead" msgstr "כדי לשחרר נעילה שמשתמשת בקובצי מפתחות יש להשתמש בכלי %s במקום" #: js/ui/shellMountOperation.js:304 msgid "" "You need an external utility like Disks to unlock a volume that uses " "keyfiles" msgstr "" "עליך להשתמש בכלים חיצוניים כמו כוננים כדי לשחרר נעילה שמשתמשת בקובצי " "מפתחות" #: js/ui/shellMountOperation.js:312 msgid "PIM Number" msgstr "מספר PIM" #: js/ui/shellMountOperation.js:371 msgid "Remember Password" msgstr "שמירת הססמה" #: js/ui/shellMountOperation.js:386 msgid "Unlock" msgstr "שחרור" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:400 #, javascript-format msgid "Open %s" msgstr "פתיחה באמצעות %s" #: js/ui/shellMountOperation.js:436 msgid "The PIM must be a number or empty" msgstr "ה־PIM חייב להיות ריק או מספר" #: js/ui/status/accessibility.js:34 msgid "Accessibility" msgstr "נגישות" #: js/ui/status/accessibility.js:44 msgid "High Contrast" msgstr "ניגודיות גבוהה" #: js/ui/status/accessibility.js:47 msgid "Zoom" msgstr "תקריב" #: js/ui/status/accessibility.js:54 msgid "Screen Reader" msgstr "מקריא מסך" #: js/ui/status/accessibility.js:58 msgid "Screen Keyboard" msgstr "מקלדת מסך" #: js/ui/status/accessibility.js:62 msgid "Visual Alerts" msgstr "התראות חזותיות" #: js/ui/status/accessibility.js:66 msgid "Sticky Keys" msgstr "מקשים דביקים" #: js/ui/status/accessibility.js:70 msgid "Slow Keys" msgstr "מקשים אטיים" #: js/ui/status/accessibility.js:74 msgid "Bounce Keys" msgstr "מקשים קופצים" #: js/ui/status/accessibility.js:78 msgid "Mouse Keys" msgstr "מקשי עכבר" #: js/ui/status/accessibility.js:83 msgid "Accessibility Settings" msgstr "הגדרות נגישות" #: js/ui/status/accessibility.js:140 msgid "Large Text" msgstr "טקסט גדול" #: js/ui/status/autoRotate.js:14 msgid "Auto Rotate" msgstr "סיבוב אוטומטי" #: js/ui/status/backgroundApps.js:156 msgctxt "title" msgid "Background Apps" msgstr "יישומים פועלים ברקע" #: js/ui/status/backgroundApps.js:171 msgid "Apps known to be running without a window" msgstr "יישומים שפועלים ללא חלון" #: js/ui/status/backgroundApps.js:182 msgid "App Settings" msgstr "הגדרות יישום" #: js/ui/status/backgroundApps.js:239 msgid "No Background Apps" msgstr "אף יישום לא פועל ברקע" #: js/ui/status/backgroundApps.js:241 #, javascript-format msgid "%d Background App" msgid_plural "%d Background Apps" msgstr[0] "יישום אחד פועל ברקע" msgstr[1] "שני יישומים פועלים ברקע" msgstr[2] "‏%d יישומים פועלים ברקע" msgstr[3] "‏%d יישומים פועלים ברקע" #: js/ui/status/backlight.js:39 msgid "Keyboard Brightness" msgstr "בהירות מקלדת" #: js/ui/status/backlight.js:79 msgid "Off" msgstr "כבוי" #: js/ui/status/backlight.js:80 msgid "Low" msgstr "נמוכה" #: js/ui/status/backlight.js:81 msgid "High" msgstr "גבוהה" #: js/ui/status/backlight.js:147 js/ui/status/keyboard.js:879 msgid "Keyboard" msgstr "מקלדת" #: js/ui/status/bluetooth.js:245 js/ui/status/network.js:360 msgid "Disconnect" msgstr "ניתוק" #: js/ui/status/bluetooth.js:262 js/ui/status/bluetooth.js:264 msgid "Bluetooth" msgstr "בלוטות'" #: js/ui/status/bluetooth.js:287 js/ui/status/network.js:1900 msgid "Bluetooth Settings" msgstr "הגדרות בלוטות׳" #: js/ui/status/bluetooth.js:334 msgid "No available or connected devices" msgstr "אין התקנים זמינים או מחוברים" #: js/ui/status/bluetooth.js:335 msgid "Turn on Bluetooth to connect to devices" msgstr "יש להפעיל בלוטות׳ כדי להתחבר להתקנים" #. Translators: This is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:389 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "אחד מחובר" msgstr[1] "שניים מחוברים" msgstr[2] "%d מחוברים" msgstr[3] "%d מחוברים" #: js/ui/status/brightness.js:32 msgid "Brightness" msgstr "בהירות" #: js/ui/status/darkMode.js:12 msgid "Dark Style" msgstr "מצב כהה" #: js/ui/status/dwellClick.js:15 msgid "Single Click" msgstr "לחיצה בודדת" #: js/ui/status/dwellClick.js:20 msgid "Double Click" msgstr "לחיצה כפולה" #: js/ui/status/dwellClick.js:25 msgid "Drag" msgstr "גרירה" #: js/ui/status/dwellClick.js:30 msgid "Secondary Click" msgstr "לחיצה משנית" #: js/ui/status/dwellClick.js:39 msgid "Dwell Click" msgstr "לחיצה בהשהיה" #: js/ui/status/keyboard.js:896 msgid "Show Keyboard Layout" msgstr "הצגת פריסת המקלדת" #: js/ui/status/location.js:337 msgid "Allow location access" msgstr "לאפשר גישה למיקום שלך" #. Translators: %s is an application name #: js/ui/status/location.js:339 #, javascript-format msgid "The app %s wants to access your location" msgstr "היישום %s רוצה גישה למיקום שלך" #: js/ui/status/location.js:349 msgid "Location access can be changed at any time from the privacy settings" msgstr "ניתן לשנות בכל עת את הרשאות הגישה למיקום שלך מהגדרות הפרטיות" #: js/ui/status/location.js:357 msgid "Deny Access" msgstr "מניעת גישה" #: js/ui/status/location.js:362 msgid "Grant Access" msgstr "אפשור גישה" #: js/ui/status/network.js:62 msgid "" msgstr "<לא ידוע>" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:354 #, javascript-format msgid "Disconnect %s" msgstr "ניתוק %s" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:356 #, javascript-format msgid "Connect to %s" msgstr "התחברות אל %s" #: js/ui/status/network.js:1050 msgid "Secure" msgstr "מאובטחת" #: js/ui/status/network.js:1050 msgid "Not secure" msgstr "לא מאובטחת" #: js/ui/status/network.js:1051 #, javascript-format msgid "Signal strength %s%%" msgstr "עוצמת קליטה %s%%" #. translators: The first placeholder is the network name, the second and indication whether it is secure, and the last the signal strength indication #: js/ui/status/network.js:1053 #, javascript-format msgid "%s, %s, %s" msgstr "%s, %s, %s" #. Translators: %s is a network identifier #: js/ui/status/network.js:1155 #, javascript-format msgid "%s Hotspot" msgstr "נקודה חמה %s" # msgid_plural "%d Connected" #: js/ui/status/network.js:1426 #, javascript-format msgid "%d connected" msgid_plural "%d connected" msgstr[0] "אחד התחבר" msgstr[1] "‫שניים התחברו" msgstr[2] "‫%d התחברו" msgstr[3] "‫‫%d התחברו" #: js/ui/status/network.js:1524 js/ui/status/network.js:1540 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1525 msgid "VPN Settings" msgstr "הגדרות VPN" #: js/ui/status/network.js:1785 msgid "Wi–Fi" msgstr "רשת אלחוטית" #: js/ui/status/network.js:1787 msgid "All Networks" msgstr "כל הרשתות" #: js/ui/status/network.js:1884 msgid "Wired Connections" msgstr "התחברויות קוויות" #: js/ui/status/network.js:1885 msgid "Wired Settings" msgstr "הגדרות רשת קווית" #: js/ui/status/network.js:1899 msgid "Bluetooth Tethers" msgstr "קישרת בלוטות׳" #. Translators: "Tether" from "Bluetooth Tether" #: js/ui/status/network.js:1906 msgid "Tether" msgstr "קישרת" #: js/ui/status/network.js:1919 msgid "Mobile Connections" msgstr "התחברויות ניידות" #: js/ui/status/network.js:1921 msgid "Mobile Broadband Settings" msgstr "הגדרות פס־רחב נייד" #. Translators: "Mobile" from "Mobile Broadband" #: js/ui/status/network.js:1930 msgid "Mobile" msgstr "נייד" #: js/ui/status/network.js:1964 msgid "Sign Into Wi–Fi Network" msgstr "התחברות לרשת אלחוטית" #: js/ui/status/network.js:2151 msgid "Connection failed" msgstr "ההתחברות נכשלה" #: js/ui/status/network.js:2152 msgid "Activation of network connection failed" msgstr "הפעלת חיבור הרשת נכשלה" #: js/ui/status/nightLight.js:19 msgid "Night Light" msgstr "תאורת לילה" #: js/ui/status/powerProfiles.js:19 msgctxt "Power profile" msgid "Performance" msgstr "ביצועים" #: js/ui/status/powerProfiles.js:24 msgctxt "Power profile" msgid "Balanced" msgstr "מאוזן" #: js/ui/status/powerProfiles.js:29 msgctxt "Power profile" msgid "Power Saver" msgstr "חיסכון בחשמל" #: js/ui/status/powerProfiles.js:39 js/ui/status/powerProfiles.js:69 msgid "Power Mode" msgstr "מצב חשמל" #: js/ui/status/powerProfiles.js:71 msgid "Power Settings" msgstr "הגדרות צריכת החשמל" #: js/ui/status/remoteAccess.js:74 msgid "Stop Screencast" msgstr "עצירת הקלטת המסך" #: js/ui/status/remoteAccess.js:144 msgid "Stop Screen Sharing" msgstr "עצירת שיתוף מסך" #: js/ui/status/rfkill.js:99 msgid "Airplane Mode" msgstr "מצב טיסה" #: js/ui/status/system.js:168 msgid "Power Off Menu" msgstr "תפריט כיבוי" #: js/ui/status/system.js:176 msgid "Suspend" msgstr "השהיה" #: js/ui/status/system.js:181 msgid "Restart…" msgstr "הפעלה מחדש…" #: js/ui/status/system.js:186 msgid "Power Off…" msgstr "כיבוי…" #: js/ui/status/system.js:193 #: subprojects/extensions-app/data/ui/extensions-window.ui:124 msgid "Log Out…" msgstr "יציאה…" #: js/ui/status/system.js:198 msgid "Switch User…" msgstr "החלפת משתמש…" #: js/ui/status/system.js:242 msgctxt "action" msgid "Lock Screen" msgstr "נעילת מסך" #: js/ui/status/thunderbolt.js:308 msgid "Unknown Thunderbolt device" msgstr "התקן Thunderbolt לא ידוע" #: js/ui/status/thunderbolt.js:309 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" "התקן חדש זוהה כאשר לא היית בנמצא. נא לנתק ולחבר מחדש את ההתקן על מנת להתחיל " "להשתמש בו." #: js/ui/status/thunderbolt.js:312 msgid "Unauthorized Thunderbolt device" msgstr "התקן Thunderbolt לא מאומת" #: js/ui/status/thunderbolt.js:313 msgid "" "New device has been detected and needs to be authorized by an administrator" msgstr "התקן חדש זוהה וצריך לעבור אימות על ידי מנהל" #: js/ui/status/thunderbolt.js:319 msgid "Thunderbolt authorization error" msgstr "שיגאת אימות Thunderbolt" #: js/ui/status/thunderbolt.js:320 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "לא ניתן לאמת את התקן ה־Thunderbolt: ‏%s" #: js/ui/status/volume.js:218 msgid "Volume changed" msgstr "עצמת השמע השתנתה" #: js/ui/status/volume.js:231 msgid "Unmute" msgstr "ביטול ההשתקה" #: js/ui/status/volume.js:231 msgid "Mute" msgstr "השתקה" #: js/ui/status/volume.js:286 msgid "Volume" msgstr "עצמה" #: js/ui/status/volume.js:302 msgid "Sound Output" msgstr "פלט שמע" #: js/ui/status/volume.js:374 msgid "Sound Input" msgstr "קלט שמע" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:20 msgid "Mirror" msgstr "מראה" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:29 msgid "Join Displays" msgstr "צירוף תצוגות" #. Translators: this is for using only external displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:39 msgid "External Only" msgstr "חיצוני בלבד" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:47 msgid "Built-in Only" msgstr "מובנה בלבד" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:378 msgid "%A %B %-d" msgstr "%A, %d ב%B" #: js/ui/unlockDialog.js:384 msgid "Swipe up to unlock" msgstr "יש להחליק למעלה כדי לשחרר" #: js/ui/unlockDialog.js:385 msgid "Click or press a key to unlock" msgstr "יש ללחוץ או להקיש כדי לשחרר" #: js/ui/unlockDialog.js:568 msgid "Unlock Window" msgstr "שחרור החלון" #: js/ui/unlockDialog.js:577 msgid "Log in as another user" msgstr "כניסה בתור משתמש אחר" #: js/ui/welcomeDialog.js:47 #, javascript-format msgid "GNOME %s" msgstr "‏GNOME %s" #: js/ui/welcomeDialog.js:51 #, javascript-format msgid "Welcome to %s" msgstr "ברוכים הבאים אל ‏‎%s‎‎" #: js/ui/welcomeDialog.js:52 msgid "If you want to learn your way around, check out the tour" msgstr "אם ברצונך ללמוד ולהכיר את הסביבה שלך, כדאי להעיף מבט בסיור" #: js/ui/welcomeDialog.js:61 msgid "Skip" msgstr "דילוג" #: js/ui/welcomeDialog.js:66 msgid "Take Tour" msgstr "אקח את הסיור" #: js/ui/windowAttentionHandler.js:18 #, javascript-format msgid "“%s” is ready" msgstr "‏„%s” מוכן" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:68 msgid "Keep these display settings?" msgstr "האם ברצונך לשמור הגדרות תצוגה אלה?" #: js/ui/windowManager.js:78 msgid "Revert Settings" msgstr "שחזור הגדרות" #: js/ui/windowManager.js:83 msgid "Keep Changes" msgstr "שמירת שינויים" # javascript-format #: js/ui/windowManager.js:103 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "‫שינויי הגדרות ישוחזרו בעוד שנייה" msgstr[1] "שינויי הגדרות ישוחזרו בעוד שתי שניות" msgstr[2] "שינויי הגדרות ישוחזרו בעוד %d שניות" msgstr[3] "‫שינויי הגדרות ישוחזרו בעוד %d שניות" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:500 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:40 msgid "Hide" msgstr "הסתרה" #: js/ui/windowMenu.js:47 msgid "Restore" msgstr "שחזור" #: js/ui/windowMenu.js:51 msgid "Maximize" msgstr "הגדלה" #: js/ui/windowMenu.js:58 msgid "Move" msgstr "הזזה" #: js/ui/windowMenu.js:78 msgid "Resize" msgstr "שינוי גודל" #: js/ui/windowMenu.js:98 msgid "Always on Top" msgstr "תמיד עליון" #: js/ui/windowMenu.js:117 msgid "Always on Visible Workspace" msgstr "הצגה בכל מרחבי העבודה" #: js/ui/windowMenu.js:131 msgid "Move to Workspace Left" msgstr "הזזה למרחב העבודה שמשמאל" #: js/ui/windowMenu.js:137 msgid "Move to Workspace Right" msgstr "הזזה למרחב העבודה שמימין" #: js/ui/windowMenu.js:143 msgid "Move to Workspace Up" msgstr "הזזה למרחב העבודה שמלמעלה" #: js/ui/windowMenu.js:149 msgid "Move to Workspace Down" msgstr "הזזה למרחב העבודה שמלמטה" #: js/ui/windowMenu.js:167 msgid "Move to Monitor Up" msgstr "הזה לצג שמלמעלה" #: js/ui/windowMenu.js:176 msgid "Move to Monitor Down" msgstr "הזזה לצג שמלמטה" #: js/ui/windowMenu.js:185 msgid "Move to Monitor Left" msgstr "הזזה לצג שמשמאל" #: js/ui/windowMenu.js:194 msgid "Move to Monitor Right" msgstr "הזזה לצג שמימין" #: js/ui/windowMenu.js:202 msgid "Close" msgstr "סגירה" #: src/main.c:529 subprojects/extensions-tool/src/main.c:336 msgid "Print version" msgstr "Print version" #: src/main.c:535 msgid "Mode used by GDM for login screen" msgstr "המצב בו GDM יעשה שימוש לצורך מסך הכניסה" #: src/main.c:541 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "שימוש במצב מסוים, לדוגמה: „gdm“ למסך הכניסה" #: src/main.c:547 msgid "List possible modes" msgstr "הצגת המצבים האפשריים" #: src/main.c:553 msgid "Force animations to be enabled" msgstr "לכפות הפעלת הנפשות" #: src/shell-app.c:252 msgctxt "program" msgid "Unknown" msgstr "לא ידוע" #: src/shell-app.c:503 #, c-format msgid "Failed to launch “%s”" msgstr "אירע כשל בטעינת „%s”" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match" msgstr "הססמאות אינן תואמות" #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "הססמה אינה יכולה להישאר ריקה" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "המשתמש בחר להתעלם מתיבת דו־שיח האימות" #: src/st/st-icon-theme.c:1865 #, c-format msgid "Icon '%s' not present in theme %s" msgstr "Icon '%s' not present in theme %s" #: src/st/st-icon-theme.c:3454 src/st/st-icon-theme.c:3757 msgid "Failed to load icon" msgstr "טעינת הסמל נכשלה" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 msgid "Manage your GNOME Extensions" msgstr "ניהול הרחבות GNOME שלך" #. developer_name tag deprecated with Appstream 1.0 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:19 msgid "The GNOME Project" msgstr "מיזם GNOME" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:51 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" "הרחבות GNOME מטפל בעדכון הרחבות, הגדרת אפשרויות של כל הרחבה, הסרה והשבתת " "הרחבות לא רצויות." #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:64 msgid "Main Window" msgstr "חלון ראשי" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:68 msgid "Available Updates" msgstr "עדכונים זמינים" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:72 msgid "Search View" msgstr "תצוגת חיפוש" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "הגדרת הרחבות GNOME Shell" #: subprojects/extensions-app/js/extensionManager.js:237 #, javascript-format msgid "" "The installed version of this extension (%s) is incompatible with the " "current version of GNOME (%s). The extension has been disabled." msgstr "" "הגרסה המותקנת של הרחבה זו (%s) אינה תואמת לגרסת GNOME הנוכחית (%s). ההרחבה " "הושבתה." #: subprojects/extensions-app/js/extensionManager.js:238 #, javascript-format msgid "" "The installed version of this extension is incompatible with the current " "version of GNOME (%s). The extension has been disabled." msgstr "" "הגרסה המותקנת של הרחבה זו אינה תואמת לגרסת GNOME הנוכחית (%s). ההרחבה הושבתה." #: subprojects/extensions-app/js/extensionManager.js:242 msgid "" "An error has occurred in this extension. This could cause issues elsewhere " "in the system. It is recommended to turn the extension off until the error " "is resolved." msgstr "" "אירעה שגיאה בהרחבה זה. זה עלול לגרום לבעיות במקומות אחרים במערכת. מומלץ " "להשבית את ההרחבה עד שהבעיה תיפתר." #. translators: Details for an extension error #: subprojects/extensions-app/js/extensionManager.js:248 msgid "Error details:" msgstr "פרטי שגיאה:" #: subprojects/extensions-app/js/extensionRow.js:82 #, javascript-format msgid "Version %s" msgstr "גרסה %s" #: subprojects/extensions-app/js/extensionsWindow.js:113 #, javascript-format msgid "Remove “%s”?" msgstr "להסיר את „%s”?" #: subprojects/extensions-app/js/extensionsWindow.js:114 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "אם ההרחבה תוסר, על מנת להפעיל אותה שוב עליך יהיה להוריד אותה שוב" #: subprojects/extensions-app/js/extensionsWindow.js:117 msgid "_Cancel" msgstr "_ביטול" #: subprojects/extensions-app/js/extensionsWindow.js:118 msgid "_Remove" msgstr "_הסרה" #: subprojects/extensions-app/js/extensionsWindow.js:158 msgid "translator-credits" msgstr "יוסף אור בוצ׳קו " #: subprojects/extensions-app/js/extensionsWindow.js:203 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "הרחבה אחת תעודכן בכניסה הבאה למערכת." msgstr[1] "שתי הרחבות תעודכנה בכניסה הבאה למערכת." msgstr[2] "‏%d הרחבות תעודכנה בכניסה הבאה למערכת." msgstr[3] "‫‏%d הרחבות תעודכנה בכניסה הבאה למערכת." #: subprojects/extensions-app/data/ui/extension-row.ui:22 msgid "Error Details" msgstr "פרטי שגיאה" #: subprojects/extensions-app/data/ui/extension-row.ui:62 msgid "Updates Details" msgstr "פרטי עדכון" # msgid_plural "%d extensions will be updated on next login." #: subprojects/extensions-app/data/ui/extension-row.ui:72 msgid "" "A new version of this extension is ready and will be loaded on next login." msgstr "גרסה חדשה של הרחבה זו מוכנה ותיטען בכניסה הבאה למערכת." #: subprojects/extensions-app/data/ui/extension-row.ui:104 msgid "Extension Details" msgstr "פרטי הרחבה" #: subprojects/extensions-app/data/ui/extension-row.ui:192 msgid "_Website" msgstr "_אתר אינטרנט" #: subprojects/extensions-app/data/ui/extension-row.ui:219 msgid "_Settings" msgstr "ה_גדרות" #: subprojects/extensions-app/data/ui/extension-row.ui:246 msgid "_Remove…" msgstr "_הסרה…" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Keyboard Shortcuts" msgstr "צירופי מקשים" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "על אודות הרחבות" #: subprojects/extensions-app/data/ui/extensions-window.ui:64 msgid "Main Menu" msgstr "תפריט ראשי" #: subprojects/extensions-app/data/ui/extensions-window.ui:106 msgid "Search extensions" msgstr "חיפוש הרחבות" #: subprojects/extensions-app/data/ui/extensions-window.ui:134 msgid "_Extensions" msgstr "ה_רחבות" #: subprojects/extensions-app/data/ui/extensions-window.ui:139 msgid "More Information" msgstr "מידע נוסף" #: subprojects/extensions-app/data/ui/extensions-window.ui:151 msgid "" "Extensions can cause performance and stability issues. It is recommended to " "disable all extensions if you experience problems with your system." msgstr "" "הרחבות עשויות לגרום לבעיות ביצועים ויציבות. מומלץ להשבית את כל ההרחבות במידה " "ונתקלת בבעיות במערכת שלך." #: subprojects/extensions-app/data/ui/extensions-window.ui:178 msgid "User Extensions" msgstr "הרחבות משתמש" #: subprojects/extensions-app/data/ui/extensions-window.ui:198 msgid "System Extensions" msgstr "הרחבות מערכת" #: subprojects/extensions-app/data/ui/extensions-window.ui:233 msgid "Search Results" msgstr "תוצאות חיפוש" #: subprojects/extensions-app/data/ui/extensions-window.ui:252 msgid "No Results Found" msgstr "לא נמצאו תוצאות" #: subprojects/extensions-app/data/ui/extensions-window.ui:253 msgid "Try a different search" msgstr "יש לנסות חיפוש שונה" #: subprojects/extensions-app/data/ui/extensions-window.ui:264 msgid "No Installed Extensions" msgstr "אין אף הרחבה מותקנת" #: subprojects/extensions-app/data/ui/extensions-window.ui:265 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" "על מנת למצוא ולהוסיף הרחבות, יש לבקר באתר extensions.gnome.org." #: subprojects/extensions-app/data/ui/extensions-window.ui:276 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" "אנו מצטערים, אך לא ניתן לקבל את רשימת ההרחבות המותקנות. יש לוודא שהתחברת " "לתוך GNOME ולנסות שוב." #: subprojects/extensions-app/data/ui/help-overlay.ui:9 msgctxt "shortcut window" msgid "General" msgstr "כללי" #: subprojects/extensions-app/data/ui/help-overlay.ui:12 msgctxt "shortcut window" msgid "Open Menu" msgstr "פתיחת תפריט" #: subprojects/extensions-app/data/ui/help-overlay.ui:18 msgctxt "shortcut window" msgid "Toggle Search" msgstr "הצגת החיפוש" #: subprojects/extensions-app/data/ui/help-overlay.ui:24 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "הצגת צירופי מקשים" #: subprojects/extensions-app/data/ui/help-overlay.ui:30 msgctxt "shortcut window" msgid "Quit" msgstr "יציאה" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:284 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "The new extension was successfully created in %s.\n" #: subprojects/extensions-tool/src/command-create.c:376 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" #: subprojects/extensions-tool/src/command-create.c:382 #: subprojects/extensions-tool/src/main.c:243 msgid "Name" msgstr "Name" #: subprojects/extensions-tool/src/command-create.c:396 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" #: subprojects/extensions-tool/src/command-create.c:402 #: subprojects/extensions-tool/src/main.c:246 msgid "Description" msgstr "תיאור" #: subprojects/extensions-tool/src/command-create.c:416 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" #: subprojects/extensions-tool/src/command-create.c:443 msgid "Choose one of the available templates:\n" msgstr "Choose one of the available templates:\n" #: subprojects/extensions-tool/src/command-create.c:457 msgid "Template" msgstr "Template" #: subprojects/extensions-tool/src/command-create.c:515 msgid "The unique identifier of the new extension" msgstr "The unique identifier of the new extension" #: subprojects/extensions-tool/src/command-create.c:518 msgid "NAME" msgstr "NAME" #: subprojects/extensions-tool/src/command-create.c:519 msgid "The user-visible name of the new extension" msgstr "The user-visible name of the new extension" #: subprojects/extensions-tool/src/command-create.c:521 msgid "DESCRIPTION" msgstr "DESCRIPTION" #: subprojects/extensions-tool/src/command-create.c:523 msgid "A short description of what the extension does" msgstr "A short description of what the extension does" #: subprojects/extensions-tool/src/command-create.c:525 #: subprojects/extensions-tool/src/command-pack.c:455 msgid "DOMAIN" msgstr "DOMAIN" #: subprojects/extensions-tool/src/command-create.c:527 msgid "The gettext domain used by the extension" msgstr "The gettext domain used by the extension" #: subprojects/extensions-tool/src/command-create.c:529 #: subprojects/extensions-tool/src/command-pack.c:448 msgid "SCHEMA" msgstr "SCHEMA" #: subprojects/extensions-tool/src/command-create.c:531 msgid "The GSettings schema used by the extension" msgstr "The GSettings schema used by the extension" #: subprojects/extensions-tool/src/command-create.c:534 msgid "TEMPLATE" msgstr "TEMPLATE" #: subprojects/extensions-tool/src/command-create.c:535 msgid "The template to use for the new extension" msgstr "The template to use for the new extension" #: subprojects/extensions-tool/src/command-create.c:538 msgid "Include prefs.js template" msgstr "Include prefs.js template" #: subprojects/extensions-tool/src/command-create.c:544 msgid "Enter extension information interactively" msgstr "Enter extension information interactively" #: subprojects/extensions-tool/src/command-create.c:552 msgid "Create a new extension" msgstr "Create a new extension" #: subprojects/extensions-tool/src/command-create.c:570 #: subprojects/extensions-tool/src/command-list.c:190 msgid "Unknown arguments" msgstr "Unknown arguments" #: subprojects/extensions-tool/src/command-create.c:595 msgid "UUID, name and description are required" msgstr "UUID, name and description are required" #: subprojects/extensions-tool/src/command-disable.c:62 #: subprojects/extensions-tool/src/command-enable.c:62 #, c-format msgid "Extension “%s” does not exist\n" msgstr "Extension “%s” does not exist\n" #: subprojects/extensions-tool/src/command-disable.c:98 msgid "Disable an extension" msgstr "Disable an extension" #: subprojects/extensions-tool/src/command-disable.c:116 #: subprojects/extensions-tool/src/command-enable.c:116 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "No UUID given" #: subprojects/extensions-tool/src/command-disable.c:121 #: subprojects/extensions-tool/src/command-enable.c:121 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "More than one UUID given" #: subprojects/extensions-tool/src/command-enable.c:98 msgid "Enable an extension" msgstr "Enable an extension" #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:66 #: subprojects/extensions-tool/src/main.c:150 msgid "Failed to connect to GNOME Shell\n" msgstr "Failed to connect to GNOME Shell\n" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:159 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "Extension “%s” doesn't exist\n" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "Show extensions info" #: subprojects/extensions-tool/src/command-install.c:190 msgid "Overwrite an existing extension" msgstr "Overwrite an existing extension" #: subprojects/extensions-tool/src/command-install.c:192 msgid "EXTENSION_BUNDLE" msgstr "EXTENSION_BUNDLE" #: subprojects/extensions-tool/src/command-install.c:201 msgid "Install an extension bundle" msgstr "Install an extension bundle" #: subprojects/extensions-tool/src/command-install.c:219 msgid "No extension bundle specified" msgstr "No extension bundle specified" #: subprojects/extensions-tool/src/command-install.c:225 msgid "More than one extension bundle specified" msgstr "More than one extension bundle specified" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show user-installed extensions" msgstr "Show user-installed extensions" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show system-installed extensions" msgstr "Show system-installed extensions" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Show enabled extensions" msgstr "Show enabled extensions" #: subprojects/extensions-tool/src/command-list.c:149 msgid "Show disabled extensions" msgstr "Show disabled extensions" #: subprojects/extensions-tool/src/command-list.c:152 msgid "Show extensions in active state" msgstr "Show extensions in active state" #: subprojects/extensions-tool/src/command-list.c:155 msgid "Show extensions in inactive state" msgstr "Show extensions in inactive state" #: subprojects/extensions-tool/src/command-list.c:158 msgid "Show extensions with preferences" msgstr "Show extensions with preferences" #: subprojects/extensions-tool/src/command-list.c:161 msgid "Show extensions with updates" msgstr "Show extensions with updates" #: subprojects/extensions-tool/src/command-list.c:164 msgid "Print extension details" msgstr "Print extension details" #: subprojects/extensions-tool/src/command-list.c:172 msgid "List installed extensions" msgstr "הצגת ההרחבות המותקנות" #: subprojects/extensions-tool/src/command-pack.c:444 msgid "FILE" msgstr "FILE" #: subprojects/extensions-tool/src/command-pack.c:445 msgid "Additional source to include in the bundle" msgstr "Additional source to include in the bundle" #: subprojects/extensions-tool/src/command-pack.c:449 msgid "A GSettings schema that should be included" msgstr "A GSettings schema that should be included" #: subprojects/extensions-tool/src/command-pack.c:451 #: subprojects/extensions-tool/src/command-pack.c:462 msgid "DIRECTORY" msgstr "DIRECTORY" #: subprojects/extensions-tool/src/command-pack.c:453 msgid "The directory where translations are found" msgstr "The directory where translations are found" #: subprojects/extensions-tool/src/command-pack.c:457 msgid "The gettext domain to use for translations" msgstr "The gettext domain to use for translations" #: subprojects/extensions-tool/src/command-pack.c:460 msgid "Overwrite an existing pack" msgstr "Overwrite an existing pack" #: subprojects/extensions-tool/src/command-pack.c:464 msgid "The directory where the pack should be created" msgstr "The directory where the pack should be created" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "SOURCE_DIRECTORY" msgstr "SOURCE_DIRECTORY" #: subprojects/extensions-tool/src/command-pack.c:475 msgid "Create an extension bundle" msgstr "Create an extension bundle" #: subprojects/extensions-tool/src/command-pack.c:495 msgid "More than one source directory specified" msgstr "צוינה יותר מתיקיית מקור אחת" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "להרחבה „%s” אין העדפות\n" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "פתיחת ההעדפות של ההרחבה „%s” נכשלה: %s\n" #: subprojects/extensions-tool/src/command-prefs.c:87 msgid "Opens extension preferences" msgstr "Opens extension preferences" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "Reset an extension" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "Cannot uninstall system extensions\n" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "Failed to uninstall “%s”\n" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "Uninstall an extension" #: subprojects/extensions-tool/src/main.c:76 msgid "Do not print error messages" msgstr "Do not print error messages" #: subprojects/extensions-tool/src/main.c:249 msgid "Path" msgstr "Path" #: subprojects/extensions-tool/src/main.c:252 msgid "URL" msgstr "URL" #: subprojects/extensions-tool/src/main.c:255 msgid "Original author" msgstr "Original author" #: subprojects/extensions-tool/src/main.c:261 #: subprojects/extensions-tool/src/main.c:263 #: subprojects/extensions-tool/src/main.c:265 msgid "Version" msgstr "גרסה" #: subprojects/extensions-tool/src/main.c:268 msgid "Enabled" msgstr "פעיל" #: subprojects/extensions-tool/src/main.c:268 msgid "Yes" msgstr "כן" #: subprojects/extensions-tool/src/main.c:268 msgid "No" msgstr "לא" #: subprojects/extensions-tool/src/main.c:271 msgid "State" msgstr "מצב" #: subprojects/extensions-tool/src/main.c:309 msgid "“version” takes no arguments" msgstr "“version” takes no arguments" #: subprojects/extensions-tool/src/main.c:311 #: subprojects/extensions-tool/src/main.c:331 msgid "Usage:" msgstr "Usage:" #: subprojects/extensions-tool/src/main.c:314 msgid "Print version information and exit." msgstr "Print version information and exit." #: subprojects/extensions-tool/src/main.c:329 #: subprojects/extensions-tool/src/main.c:332 msgid "COMMAND" msgstr "COMMAND" #: subprojects/extensions-tool/src/main.c:332 msgid "[ARGS…]" msgstr "[ARGS…]" #: subprojects/extensions-tool/src/main.c:334 msgid "Commands:" msgstr "Commands:" #: subprojects/extensions-tool/src/main.c:335 msgid "Print help" msgstr "Print help" #: subprojects/extensions-tool/src/main.c:337 msgid "Enable extension" msgstr "Enable extension" #: subprojects/extensions-tool/src/main.c:338 msgid "Disable extension" msgstr "Disable extension" #: subprojects/extensions-tool/src/main.c:339 msgid "Reset extension" msgstr "Reset extension" #: subprojects/extensions-tool/src/main.c:340 msgid "Uninstall extension" msgstr "Uninstall extension" #: subprojects/extensions-tool/src/main.c:341 msgid "List extensions" msgstr "List extensions" #: subprojects/extensions-tool/src/main.c:342 #: subprojects/extensions-tool/src/main.c:343 msgid "Show extension info" msgstr "Show extension info" #: subprojects/extensions-tool/src/main.c:344 msgid "Open extension preferences" msgstr "Open extension preferences" #: subprojects/extensions-tool/src/main.c:345 msgid "Create extension" msgstr "Create extension" #: subprojects/extensions-tool/src/main.c:346 msgid "Package extension" msgstr "Package extension" #: subprojects/extensions-tool/src/main.c:347 msgid "Install extension bundle" msgstr "Install extension bundle" #: subprojects/extensions-tool/src/main.c:349 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "Use “%s” to get detailed help.\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "תבנית" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "הרחבה ריקה" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "מכוון" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "הוספת סמליל לסרגל העליון" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:4 msgid "Quick Settings Item" msgstr "פריט בהגדרות מהירות" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:5 msgid "Add an item to quick settings" msgstr "הוספת פריט להגדרות מהירות" #. translators: #. * The device has been disabled #: subprojects/gvc/gvc-mixer-control.c:1872 msgid "Disabled" msgstr "מנוטרל" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1879 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "ערוץ פלט אחד" msgstr[1] "שני ערוצי פלט" msgstr[2] "‫%u ערוצי פלט" msgstr[3] "‏‫%u ערוצי פלט" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1889 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "ערוץ קלט אחד" msgstr[1] "שני ערוצי קלט" msgstr[2] "‫%u ערוצי קלט" msgstr[3] "‏‫%u ערוצי קלט" #: subprojects/gvc/gvc-mixer-control.c:2872 msgid "System Sounds" msgstr "צלילי מערכת" #~ msgid "Move Titlebar Onscreen" #~ msgstr "הזזת שורת הכותרת על המסך" #~ msgid "Stop conflicting session dialog closed" #~ msgstr "חלונית עצירת הפעלה סותרת נסגרה" #, javascript-format #~ msgid "Try to login again to start a session for user %s." #~ msgstr "כדאי לנסות להיכנס שוב כדי להתחיל הפעלה למשתמש %s." #, javascript-format #~ msgid "%s is now known as %s" #~ msgstr "השם של %s הוחלף ל־%s" #~ msgid "Network Manager" #~ msgstr "מנהל הרשתות" #~ msgid "System Information" #~ msgstr "פרטי המערכת" #~ msgid "Thunderbolt" #~ msgstr "Thunderbolt" #~ msgid "Disabling" #~ msgstr "השבתה" #~ msgid "Enabling" #~ msgstr "אפשור" #, javascript-format #~ msgid "%d %%" #~ msgstr "%d %%" #~ msgid "No Thanks" #~ msgstr "לא תודה" #~ msgid "No Matches" #~ msgstr "אין התאמות" #~ msgid "The extension had an error" #~ msgstr "ארעה שגיאה להרחבה" #~ msgid "The extension can be updated" #~ msgstr "ההרחבה ניתנת לעדכון" #~ msgid "Help" #~ msgstr "עזרה" #~ msgid "Manually Installed" #~ msgstr "הותקן ידנית" #~ msgid "Built-In" #~ msgstr "מובנה" #~ msgid "Extension Updates Ready" #~ msgstr "עדכוני הרחבות מוכנים" #~ msgid "Screenshot / Screencast" #~ msgstr "צילום / הקלטת מסך" #~ msgid "Power Profiles" #~ msgstr "פרופילי חשמל" #~ msgid "Evolution Calendar" #~ msgstr "יומן אבולושן" #~ msgid "Applications" #~ msgstr "יישומים" #, javascript-format #~ msgid "Unable to start %s" #~ msgstr "לא ניתן להפעיל את %s" #, javascript-format #~ msgid "Couldn’t find the %s application" #~ msgstr "לא ניתן למצוא את היישום %s" #~ msgid "Attach modal dialog to the parent window" #~ msgstr "Attach modal dialog to the parent window" #~ msgid "" #~ "This key overrides the key in org.gnome.mutter when running GNOME Shell." #~ msgstr "" #~ "This key overrides the key in org.gnome.mutter when running GNOME Shell." #~ msgid "Enable edge tiling when dropping windows on screen edges" #~ msgstr "Enable edge tiling when dropping windows on screen edges" #~ msgid "Workspaces are managed dynamically" #~ msgstr "Workspaces are managed dynamically" #~ msgid "Workspaces only on primary monitor" #~ msgstr "Workspaces only on primary monitor" #~ msgid "Delay focus changes in mouse mode until the pointer stops moving" #~ msgstr "Delay focus changes in mouse mode until the pointer stops moving" #~ msgid "Region & Language Settings" #~ msgstr "הגדרות אזור ושפה" #~ msgid "" #~ "Whether the default Bluetooth adapter had set up devices associated to it" #~ msgstr "" #~ "Whether the default Bluetooth adapter had set up devices associated to it" #~ msgid "" #~ "The shell will only show a Bluetooth menu item if a Bluetooth adapter is " #~ "powered, or if there were devices set up associated with the default " #~ "adapter. This will be reset if the default adapter is ever seen not to " #~ "have devices associated to it." #~ msgstr "" #~ "The shell will only show a Bluetooth menu item if a Bluetooth adapter is " #~ "powered, or if there were devices set up associated with the default " #~ "adapter. This will be reset if the default adapter is ever seen not to " #~ "have devices associated to it." #~ msgid "Log Out" #~ msgstr "יציאה" #~ msgid "Connect to Internet" #~ msgstr "התחברות לאינטרנט" #~ msgid "Airplane Mode is On" #~ msgstr "מצב טיסה מופעל" #~ msgid "Wi-Fi is disabled when airplane mode is on." #~ msgstr "רשת אלחוטית מושבתת כאשר מצב טיסה מופעל." #~ msgid "Turn Off Airplane Mode" #~ msgstr "כיבוי מצב טיסה" #~ msgid "Wi-Fi is Off" #~ msgstr "רשת אלחוטית כבויה" #~ msgid "Wi-Fi needs to be turned on in order to connect to a network." #~ msgstr "רשת אלחוטית צריכה להיות מופעלת על מנת להתחבר לרשת." #~ msgid "Turn On Wi-Fi" #~ msgstr "הפעלת רשת אלחוטית" #~ msgid "Select a network" #~ msgstr "בחירת רשת" #~ msgid "No Networks" #~ msgstr "אין רשתות" #~ msgid "Use hardware switch to turn off" #~ msgstr "שימוש במתג של החומרה לכיבוי" #~ msgid "Select Network" #~ msgstr "בחירת רשת" #~ msgid "Wi-Fi Settings" #~ msgstr "הגדרות רשת אלחוטית" #~ msgid "VPN Off" #~ msgstr "VPN כבוי" #~ msgid "Network Settings" #~ msgstr "הגדרות הרשת" #, javascript-format #~ msgid "%s Wi-Fi Connection" #~ msgid_plural "%s Wi-Fi Connections" #~ msgstr[0] "‏%s התחברות אלחוטית" #~ msgstr[1] "שתי התחברויות אלחוטיות" #~ msgstr[2] "‏%s התחברויות אלחוטיות" #~ msgstr[3] "‫‏%s התחברויות אלחוטיות" #, javascript-format #~ msgid "%s Wired Connection" #~ msgid_plural "%s Wired Connections" #~ msgstr[0] "התחברות קווית %s" #~ msgstr[1] "התחברויות קוויות %s" #~ msgstr[2] "התחברויות קוויות %s" #~ msgstr[3] "התחברויות קויות %s" #, javascript-format #~| msgid "%s Wired Connection" #~| msgid_plural "%s Wired Connections" #~ msgid "%s Bluetooth Connection" #~ msgid_plural "%s Bluetooth Connections" #~ msgstr[0] "התחברות קווית %s" #~ msgstr[1] "התחברויות קוויות %s" #~ msgstr[2] "התחברויות קוויות %s" #~ msgstr[3] "התחברויות קוויות %s" #, javascript-format #~ msgid "%s Modem Connection" #~ msgid_plural "%s Modem Connections" #~ msgstr[0] "התחברות מודם %s" #~ msgstr[1] "התחברויות מודם %s" #~ msgstr[2] "‫התחברויות מודם %s" #~ msgstr[3] "‫התחברויות מודם %s" #, javascript-format #~ msgid "%s Off" #~ msgstr "‏%s כבוי" #, javascript-format #~ msgid "%s Unmanaged" #~ msgstr "‏%s לא מנוהל" #, javascript-format #~ msgid "%s Connecting" #~ msgstr "‏%s בהתחברות" #, javascript-format #~ msgid "%s Requires Authentication" #~ msgstr "‏%s דורש אימות" #, javascript-format #~ msgid "Firmware Missing For %s" #~ msgstr "חסרה קושחה עבור %s" #, javascript-format #~ msgid "%s Unavailable" #~ msgstr "‏%s לא זמין" #, javascript-format #~ msgid "%s Connection Failed" #~ msgstr "נכשלה ההתחברות אל %s" #, javascript-format #~ msgid "%s Hardware Disabled" #~ msgstr "‏%s מושבת חומרתית" #, javascript-format #~ msgid "%s Disabled" #~ msgstr "‏%s מושבת" #, javascript-format #~ msgid "%s Not Connected" #~ msgstr "%s לא מחובר" #~ msgid "unknown" #~ msgstr "לא ידוע" #~ msgid "connecting…" #~ msgstr "בהתחברות…" #~ msgid "authentication required" #~ msgstr "נדרש אימות" #~ msgid "connection failed" #~ msgstr "ההתחברות נכשלה" #~ msgid "Lock" #~ msgstr "נעילה" #~ msgid "Power Off / Log Out" #~ msgstr "כיבוי / יציאה" #~ msgid "Bluetooth On" #~ msgstr "בלוטות' פועל" #~ msgid "Bluetooth Off" #~ msgstr "בלוטות' כבוי" #~ msgid "Location In Use" #~ msgstr "איכון בשימוש" #~ msgid "Location Disabled" #~ msgstr "איכון מושבת" #~ msgid "Night Light Disabled" #~ msgstr "תאורת לילה מושבתת" #~ msgid "Resume" #~ msgstr "המשך" #~ msgid "Disable Until Tomorrow" #~ msgstr "להשבית עד מחר" #~ msgid "Fully Charged" #~ msgstr "בטעינה מלאה" #~ msgid "Not Charging" #~ msgstr "לא בטעינה" #~ msgid "Estimating…" #~ msgstr "מתבצע שערוך…" #, javascript-format #~ msgid "%d∶%02d Remaining (%d %%)" #~ msgstr "‏‎‎%d∶%02d נותרו (%d%%)" #, javascript-format #~ msgid "%d∶%02d Until Full (%d %%)" #~ msgstr "%d:%02d עד לטעינה מלאה (%d%%)" #~ msgid "Screen is Being Shared" #~ msgstr "המסך משותף" #~ msgid "Turn off" #~ msgstr "כיבוי" #~ msgid "Show screenshot UI" #~ msgstr "הצגת מנשק לכידת מסך" #~ msgid "Remove from Favorites" #~ msgstr "הסרה מהמועדפים" #~ msgid "Add to Favorites" #~ msgstr "הוספה למועדפים" #~ msgid "Screen Recording in Progress" #~ msgstr "המסך מוקלט" #~ msgid "Stop" #~ msgstr "עצירה" #~ msgid "Author" #~ msgstr "מחבר" #~ msgid "Warning" #~ msgstr "אזהרה" #~ msgid "" #~ "Extensions can cause system issues, including performance problems. If " #~ "you encounter problems with your system, it is recommended to disable all " #~ "extensions." #~ msgstr "" #~ "הרחבות עשויות לגרום לבעיות במערכת, לרבות בעיות ביצועים. אם מצאת בעיות " #~ "במערכת שלך, מומלץ להשבית את כל ההרחבות." #~ msgid "Failed to connect to GNOME Shell" #~ msgstr "Failed to connect to GNOME Shell" #~ msgid "Enable introspection API" #~ msgstr "Enable introspection API" #~ msgid "" #~ "Enables a D-Bus API that allows to introspect the application state of " #~ "the shell." #~ msgstr "" #~ "Enables a D-Bus API that allows to introspect the application state of " #~ "the shell." #~ msgid "Minimize" #~ msgstr "מזעור" #~ msgid "Unmaximize" #~ msgstr "ביטול הגדלה" #~ msgid "App Picker View" #~ msgstr "App Picker View" #~ msgid "Index of the currently selected view in the application picker." #~ msgstr "Index of the currently selected view in the application picker." #~ msgid "Frequently used applications will appear here" #~ msgstr "יישומים בשימוש תדיר יופיעו כאן" #~ msgid "Frequent" #~ msgstr "תדיר" #~ msgid "All" #~ msgstr "הכול" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d" #~ msgstr "%A, ה־%-d ב%B" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d, %Y" #~ msgstr "%A, ה־%-d ב%B, %Y" #~ msgid "On" #~ msgstr "פועל" #~| msgid "Show Errors" #~ msgid "Copy Error" #~ msgstr "שגיאת העתקה" #~ msgid "There was an error loading the preferences dialog for %s:" #~ msgstr "אירעה שגיאה בעת טעינת דו־שיח ההעדפות עבור %s:" #~ msgid "Next" #~ msgstr "הבא" #~ msgctxt "button" #~ msgid "Sign In" #~ msgstr "כניסה" #~ msgid "Password:" #~ msgstr "ססמה:" #~ msgid "Type again:" #~ msgstr "נא להקליד שוב:" #~ msgid "Password: " #~ msgstr "ססמה:" #~ msgid "Authentication required by wireless network" #~ msgstr "הרשת האלחוטית דורשת אימות" #~ msgid "Mobile broadband network password" #~ msgstr "ססמת רשת הפס הרחב הניידת" #~ msgid "%s all day." #~ msgstr "%s לאורך היום" #~ msgid "%s, then %s later." #~ msgstr "%s, ומאוחר יותר %s" #~ msgid "%s, then %s, followed by %s later." #~ msgstr "%s, לאחר מכן %s וממשיך אל %s מאוחר יותר." #~ msgid "Feels like %s." #~ msgstr "מרגיש כמו %s." #~ msgid "toggle-switch-us" #~ msgstr "toggle-switch-intl" # javascript-format #~ msgid "%d new message" #~ msgid_plural "%d new messages" #~ msgstr[0] "הודעה חדשה אחת" #~ msgstr[1] "%d הודעות חדשות" #~ msgstr[2] "שתי הודעות חדשות" #~ msgid "Account Settings" #~ msgstr "הגדרות חשבון" #~ msgid "Orientation Lock" #~ msgstr "נעילת כיוון" #~ msgid "" #~ "Keybinding that pauses and resumes all running tweens, for debugging " #~ "purposes" #~ msgstr "" #~ "Keybinding that pauses and resumes all running tweens, for debugging " #~ "purposes" #~ msgid "Which keyboard to use" #~ msgstr "Which keyboard to use" #~ msgid "The type of keyboard to use." #~ msgstr "The type of keyboard to use." #~| msgid "Network error" #~ msgid "network-workgroup" #~ msgstr "network-workgroup" #~ msgid "Web Authentication Redirect" #~ msgstr "אימות ניתוב הרשת" #~ msgid "Events" #~ msgstr "אירועים" #~ msgid "Hide tray" #~ msgstr "הסתרת המגש" #~ msgid "Status Icons" #~ msgstr "סמלי מצב" #~ msgid "Media" #~ msgstr "מדיה" #~ msgid "%d x %d" #~ msgstr "%d x %d" #~ msgid "Show the week date in the calendar" #~ msgstr "Show the week date in the calendar" #~ msgid "If true, display the ISO week date in the calendar." #~ msgstr "If true, display the ISO week date in the calendar." #~ msgid "Use as Internet connection" #~ msgstr "שימוש כחיבור לאינטרנט" #~ msgid "%s is requesting access to your location." #~ msgstr "‏%s דורש גישה למיקום שלך." #~ msgid "GNOME Shell (wayland compositor)" #~ msgstr "‏GNOME Shell (מסדר wayland)" # javascript-format #~ msgid "%d Connected Device" #~ msgid_plural "%d Connected Devices" #~ msgstr[0] "התקן אחד מחובר" #~ msgstr[1] "%d התקנים מחוברים" #~ msgid "UPS" #~ msgstr "אל־פסק" #~ msgid "Battery" #~ msgstr "סוללה" #~ msgctxt "event list time" #~ msgid "%H∶%M" #~ msgstr "‎%H:%M" #~ msgctxt "event list time" #~ msgid "%l∶%M %p" #~ msgstr "%l:%M %p" #~ msgid "Invitation" #~ msgstr "הזמנה" #~ msgid "Call" #~ msgstr "התקשרות" #~ msgid "File Transfer" #~ msgstr "העברת קבצים" #~ msgid "Chat" #~ msgstr "שיחה" #~ msgid "Invitation to %s" #~ msgstr "הזמנה ל־%s" #~ msgid "%s is inviting you to join %s" #~ msgstr "הוזמנת על ידי %s להצטרף אל %s" #~ msgid "Decline" #~ msgstr "דחייה" #~ msgid "Accept" #~ msgstr "אישור" #~ msgid "Video call from %s" #~ msgstr "שיחת וידאו מאת %s" #~ msgid "Call from %s" #~ msgstr "שיחה מאת %s" #~ msgid "Answer" #~ msgstr "מענה" #~ msgid "%s is sending you %s" #~ msgstr "‏%s שולח/ת אליך %s" #~ msgid "%s would like permission to see when you are online" #~ msgstr "‏%s רוצה לקבל הרשאות כדי לראות מתי מצבך הוא מקוון" #~ msgid "Authentication failed" #~ msgstr "האימות נכשל" #~ msgid "Encryption error" #~ msgstr "שגיאת הצפנה" #~ msgid "Certificate not provided" #~ msgstr "לא סופק אישור" #~ msgid "Certificate untrusted" #~ msgstr "האישור אינו מהימן" #~ msgid "Certificate expired" #~ msgstr "האישור פג" #~ msgid "Certificate not activated" #~ msgstr "האישור לא מופעל" #~ msgid "Certificate hostname mismatch" #~ msgstr "שם המארח באישור אינו תואם" #~ msgid "Certificate fingerprint mismatch" #~ msgstr "חוסר התאמה בטביעת האצבע של האישור" #~ msgid "Certificate self-signed" #~ msgstr "אישור בחתימה עצמית" #~ msgid "Status is set to offline" #~ msgstr "המצב הוגדר ל'מנותק'" #~ msgid "Certificate is invalid" #~ msgstr "האישור אינו תקף" #~ msgid "Connection has been refused" #~ msgstr "ההתחברות נשללה" #~ msgid "Connection can't be established" #~ msgstr "לא ניתן להפעיל את החיבור" #~ msgid "Connection has been lost" #~ msgstr "החיבור אבד" #~ msgid "This account is already connected to the server" #~ msgstr "חשבון זה כבר מחובר לשרת" #~ msgid "" #~ "Connection has been replaced by a new connection using the same resource" #~ msgstr "החיבור הוחלף בחיבור חדש באמצעות אותו המשאב" #~ msgid "The account already exists on the server" #~ msgstr "החשבון כבר קיים בשרת" #~ msgid "Server is currently too busy to handle the connection" #~ msgstr "השרת עסוק ברגע זה מכדי לטפל בחיבור" #~ msgid "Certificate has been revoked" #~ msgstr "האישור נשלל" #~ msgid "" #~ "Certificate uses an insecure cipher algorithm or is cryptographically weak" #~ msgstr "האישור משתמש באלגוריתם הצפנה שאינו בטוח או חלש מבחינת הצפנה" #~ msgid "" #~ "The length of the server certificate, or the depth of the server " #~ "certificate chain, exceed the limits imposed by the cryptography library" #~ msgstr "" #~ "אורך אישור השרת, או עומק שרשרת אישור השרת, חורגים מהמגבלות שנכפו על ידי " #~ "ספריית ההצפנה" #~ msgid "Internal error" #~ msgstr "שגיאה פנימית" #~ msgid "View account" #~ msgstr "צפייה בחשבון" #~ msgid "Show the message list" #~ msgstr "הצגת רשימת הודעות" #~ msgctxt "list sunday" #~ msgid "Su" #~ msgstr "א׳" #~ msgctxt "list monday" #~ msgid "M" #~ msgstr "ב׳" #~ msgctxt "list tuesday" #~ msgid "T" #~ msgstr "ג׳" #~ msgctxt "list wednesday" #~ msgid "W" #~ msgstr "ד׳" #~ msgctxt "list thursday" #~ msgid "Th" #~ msgstr "ה" #~ msgctxt "list friday" #~ msgid "F" #~ msgstr "ו׳" #~ msgctxt "list saturday" #~ msgid "S" #~ msgstr "ש׳" #~ msgid "Nothing Scheduled" #~ msgstr "היומן ריק" #~ msgid "This week" #~ msgstr "השבוע" #~ msgid "Next week" #~ msgstr "בשבוע הבא" #~ msgid "Removable Devices" #~ msgstr "התקנים נשלפים" #~ msgid "Eject" #~ msgstr "שליפה" #~ msgid "Open Calendar" #~ msgstr "פתיחת היומן" #~ msgid "Date & Time Settings" #~ msgstr "הגדרות תאריך ושעה" #~ msgid "Open" #~ msgstr "פתיחה" #~ msgid "Clear Messages" #~ msgstr "פינוי ההודעות" #~ msgid "Notification Settings" #~ msgstr "הגדרות התרעה" #~ msgid "No Messages" #~ msgstr "אין הודעות" #~ msgid "Message Tray" #~ msgstr "אזור דיווח ההודעות" #~ msgid "Captive Portal" #~ msgstr "Captive Portal" #~ msgid "The maximum accuracy level of location." #~ msgstr "The maximum accuracy level of location." #~ msgid "" #~ "Configures the maximum level of location accuracy applications are " #~ "allowed to see. Valid options are 'off' (disable location tracking), " #~ "'country', 'city', 'neighborhood', 'street', and 'exact' (typically " #~ "requires GPS receiver). Please keep in mind that this only controls what " #~ "GeoClue will allow applications to see and they can find user's location " #~ "on their own using network resources (albeit with street-level accuracy " #~ "at best)." #~ msgstr "" #~ "Configures the maximum level of location accuracy applications are " #~ "allowed to see. Valid options are 'off' (disable location tracking), " #~ "'country', 'city', 'neighborhood', 'street', and 'exact' (typically " #~ "requires GPS receiver). Please keep in mind that this only controls what " #~ "GeoClue will allow applications to see and they can find user's location " #~ "on their own using network resources (albeit with street-level accuracy " #~ "at best)." #~ msgid "Arrangement of buttons on the titlebar" #~ msgstr "Arrangement of buttons on the titlebar" #~ msgid "" #~ "This key overrides the key in org.gnome.desktop.wm.preferences when " #~ "running GNOME Shell." #~ msgstr "" #~ "This key overrides the key in org.gnome.desktop.wm.preferences when " #~ "running GNOME Shell." #~ msgid "Select an extension to configure using the combobox above." #~ msgstr "יש לבחור את ההרחבה להגדרה באמצעות תיבת הבחירה המשולבת שלהלן." #~ msgid "calendar:MY" #~ msgstr "calendar:YM" #~ msgid "unavailable" #~ msgstr "לא זמין" #~ msgctxt "event list time" #~ msgid "%H\\u2236%M" #~ msgstr "%H\\u2236%M" #~ msgctxt "event list time" #~ msgid "%l\\u2236%M\\u2009%p" #~ msgstr "%l\\u2236%M\\u2009%p" #~ msgid "%H\\u2236%M" #~ msgstr "%H\\u2236%M" #~ msgid "%A, %H\\u2236%M" #~ msgstr "%A, %H\\u2236%M" #~ msgid "%B %d, %H\\u2236%M" #~ msgstr "%d ב%B, %H\\u2236%M" #~ msgid "%B %d %Y, %H\\u2236%M" #~ msgstr "%d ב%B %Y, %H\\u2236%M" #~ msgid "%l\\u2236%M %p" #~ msgstr "%l\\u2236%M %p" #~ msgid "%A, %l\\u2236%M %p" #~ msgstr "%A, %l\\u2236%M %p" #~ msgid "%B %d, %l\\u2236%M %p" #~ msgstr "%d ב%B, %l\\u2236%M %p" #~ msgid "%A, %H:%M" #~ msgstr "%A ב־%H:%M" #~ msgid "%B %d, %H:%M" #~ msgstr "ה־%d ב%B ב־%H:%M" #~ msgid "%B %d %Y, %H:%M " #~ msgstr "ה־%d ב%B %Y ב־%H:%M" #~ msgid "List of categories that should be displayed as folders" #~ msgstr "List of categories that should be displayed as folders" #~ msgid "" #~ "Each category name in this list will be represented as folder in the " #~ "application view, rather than being displayed inline in the main view." #~ msgstr "" #~ "Each category name in this list will be represented as folder in the " #~ "application view, rather than being displayed inline in the main view." #~ msgid "Authorization request from %s" #~ msgstr "בקשת אישור מאת %s" #~ msgid "Device %s wants to pair with this computer" #~ msgstr "ההתקן %s מעוניין בצימוד עם מחשב זה" #~ msgid "Device %s wants access to the service '%s'" #~ msgstr "ההתקן %s מעוניין לגשת אל השירות '%s'" #~ msgid "Grant this time only" #~ msgstr "הענקת גישה הפעם בלבד" #~ msgid "Reject" #~ msgstr "סירוב" #~ msgid "Pairing confirmation for %s" #~ msgstr "אישור צימוד עבור %s" #~ msgid "" #~ "Please confirm whether the Passkey '%06d' matches the one on the device." #~ msgstr "נא לאשר האם מילת הצופן '%06d' תואמת את זו שמופיעה בהתקן." #~ msgid "Does not match" #~ msgstr "אינו תואם" #~ msgid "Pairing request for %s" #~ msgstr "בקשת צימוד עבור %s" #~ msgid "Please enter the PIN mentioned on the device." #~ msgstr "נא להזין את קוד ה־PIN המוזכר בהתקן." #~ msgid "OK" #~ msgstr "אישור" #~ msgid "" #~ "Sorry, no wisdom for you today:\n" #~ "%s" #~ msgstr "" #~ "אין משפטי חכמה עבורך להיום, צר לי:\n" #~ "%s" #~ msgid "%s the Oracle says" #~ msgstr "‏%s, כה אמרה האוראקל" #~ msgid "" #~ "Internally used to store the last IM presence explicitly set by the user. " #~ "The value here is from the TpConnectionPresenceType enumeration." #~ msgstr "" #~ "Internally used to store the last IM presence explicitly set by the user. " #~ "The value here is from the TpConnectionPresenceType enumeration." #~ msgid "" #~ "Internally used to store the last session presence status for the user. " #~ "The value here is from the GsmPresenceStatus enumeration." #~ msgstr "" #~ "Internally used to store the last session presence status for the user. " #~ "The value here is from the GsmPresenceStatus enumeration." #~ msgid "Keybinding to toggle the screen recorder" #~ msgstr "Keybinding to toggle the screen recorder" #~ msgid "Keybinding to start/stop the builtin screen recorder." #~ msgstr "Keybinding to start/stop the builtin screen recorder." #~ msgid "Framerate used for recording screencasts." #~ msgstr "Framerate used for recording screencasts." #~ msgid "" #~ "The framerate of the resulting screencast recordered by GNOME Shell's " #~ "screencast recorder in frames-per-second." #~ msgstr "" #~ "The framerate of the resulting screencast recordered by GNOME Shell's " #~ "screencast recorder in frames-per-second." #~ msgid "The gstreamer pipeline used to encode the screencast" #~ msgstr "The gstreamer pipeline used to encode the screencast" #~ msgid "" #~ "Sets the GStreamer pipeline used to encode recordings. It follows the " #~ "syntax used for gst-launch. The pipeline should have an unconnected sink " #~ "pad where the recorded video is recorded. It will normally have a " #~ "unconnected source pad; output from that pad will be written into the " #~ "output file. However the pipeline can also take care of its own output - " #~ "this might be used to send the output to an icecast server via shout2send " #~ "or similar. When unset or set to an empty value, the default pipeline " #~ "will be used. This is currently 'vp8enc min_quantizer=13 max_quantizer=13 " #~ "cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux' and records to " #~ "WEBM using the VP8 codec. %T is used as a placeholder for a guess at the " #~ "optimal thread count on the system." #~ msgstr "" #~ "Sets the GStreamer pipeline used to encode recordings. It follows the " #~ "syntax used for gst-launch. The pipeline should have an unconnected sink " #~ "pad where the recorded video is recorded. It will normally have a " #~ "unconnected source pad; output from that pad will be written into the " #~ "output file. However the pipeline can also take care of its own output - " #~ "this might be used to send the output to an icecast server via shout2send " #~ "or similar. When unset or set to an empty value, the default pipeline " #~ "will be used. This is currently 'vp8enc min_quantizer=13 max_quantizer=13 " #~ "cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux' and records to " #~ "WEBM using the VP8 codec. %T is used as a placeholder for a guess at the " #~ "optimal thread count on the system." #~ msgid "File extension used for storing the screencast" #~ msgstr "File extension used for storing the screencast" #~ msgid "" #~ "The filename for recorded screencasts will be a unique filename based on " #~ "the current date, and use this extension. It should be changed when " #~ "recording to a different container format." #~ msgstr "" #~ "The filename for recorded screencasts will be a unique filename based on " #~ "the current date, and use this extension. It should be changed when " #~ "recording to a different container format." #~ msgid "Power" #~ msgstr "צריכת חשמל" #~ msgid "Click Log Out to quit these applications and log out of the system." #~ msgstr "יש ללחוץ על יציאה כדי לסגור יישומים אלה ולצאת מהמערכת." #~ msgid "Logging out of the system." #~ msgstr "מתבצעת יציאה מהמערכת." #~ msgid "Click Power Off to quit these applications and power off the system." #~ msgstr "יש ללחוץ על כיבוי כדי לסגור יישומים אלה ולכבות את המערכת." #~ msgid "Powering off the system." #~ msgstr "המערכת נכבית." #~ msgid "Click Restart to quit these applications and restart the system." #~ msgstr "יש ללחוץ על יציאה כדי לסגור יישומים אלה ולהפעיל את המערכת מחדש." #~ msgid "Restarting the system." #~ msgstr "המערכת מופעלת מחדש" #~ msgid "Volume, network, battery" #~ msgstr "עצמת שמע, רשת, סוללה" #~ msgid "Shutting down might cause them to lose unsaved work." #~ msgstr "כיבוי המערכת עלול לגרום להם לאיבוד עבודה שלא נשמרה." #~ msgid "Whether to collect stats about applications usage" #~ msgstr "Whether to collect stats about applications usage" #~ msgid "" #~ "The shell normally monitors active applications in order to present the " #~ "most used ones (e.g. in launchers). While this data will be kept private, " #~ "you may want to disable this for privacy reasons. Please note that doing " #~ "so won't remove already saved data." #~ msgstr "" #~ "The shell normally monitors active applications in order to present the " #~ "most used ones (e.g. in launchers). While this data will be kept private, " #~ "you may want to disable this for privacy reasons. Please note that doing " #~ "so won't remove already saved data." #~ msgid "Universal Access Settings" #~ msgstr "הגדרות גישה אוניברסלית" #~ msgid "Visibility" #~ msgstr "הצגה" #~ msgid "Set Up a New Device…" #~ msgstr "הגדרת התקן חדש…" #~ msgid "Send Files…" #~ msgstr "שליחת קבצים…" #~ msgid "Mouse Settings" #~ msgstr "הגדרות עכבר" #~ msgid "disabled" #~ msgstr "מנוטרל" #~ msgid "cable unplugged" #~ msgstr "הכבל מנותק" #~ msgid "More…" #~ msgstr "עוד…" #~ msgid "Wired" #~ msgstr "קווי" #~ msgid "Auto Ethernet" #~ msgstr "אתרנט אוטומטי" #~ msgid "Auto broadband" #~ msgstr "פס רחב אוטומטי" #~ msgid "Auto dial-up" #~ msgstr "חיוג אוטומטי" #~ msgid "Auto %s" #~ msgstr "‏%s אוטומטי" #~ msgid "Auto bluetooth" #~ msgstr "Bluetooth אוטומטי" #~ msgid "Auto wireless" #~ msgstr "אלחוטי אוטומטי" #~ msgid "Wi-Fi" #~ msgstr "רשת אלחוטית" #~ msgid "%d %s %d %s remaining" #~ msgstr "%d %s %d %s נותרו" #~ msgid "AC Adapter" #~ msgstr "מתאם חשמל" #~ msgid "Laptop Battery" #~ msgstr "סוללת מחשב נייד" #~ msgid "Monitor" #~ msgstr "צג" #~ msgid "Mouse" #~ msgstr "עכבר" #~ msgid "PDA" #~ msgstr "מחשב כף יד" #~ msgid "Cell Phone" #~ msgstr "טלפון סלולרי" #~ msgid "Media Player" #~ msgstr "נגן מדיה" #~ msgid "Tablet" #~ msgstr "טבלת שליטה" #~ msgid "Computer" #~ msgstr "מחשב" #~ msgctxt "device" #~ msgid "Unknown" #~ msgstr "לא ידוע" #~ msgid "Busy" #~ msgstr "עסוק" #~ msgid "Invisible" #~ msgstr "בלתי נראה" #~ msgid "Away" #~ msgstr "מרוחק" #~ msgid "Idle" #~ msgstr "בהמתנה" #~ msgid "Your chat status will be set to busy" #~ msgstr "מצב הצ׳אט שלך יוגדר ל'עסוק'" #~ msgid "" #~ "Notifications are now disabled, including chat messages. Your online " #~ "status has been adjusted to let others know that you might not see their " #~ "messages." #~ msgstr "" #~ "ההתרעות כבויות כעת, לרבות הודעות צ׳אט. המצב המקוון שלך הותאם כדי לבשר " #~ "לאחרים שיתכן שהודעותיהם לא יתקבלו באופן מיידי." #~ msgctxt "title" #~ msgid "Sign In" #~ msgstr "כניסה" #~ msgctxt "event list time" #~ msgid "%H:%M" #~ msgstr "%H:%M" #~ msgctxt "event list time" #~ msgid "%l:%M %p" #~ msgstr "%l:%M %p" #~ msgid "tray" #~ msgstr "מגש מערכת" #~ msgid "More..." #~ msgstr "עוד..." #~ msgid "United Kingdom" #~ msgstr "בריטניה" #~ msgid "Default" #~ msgstr "בררת מחדל" #~ msgid "Show full name in the user menu" #~ msgstr "Show full name in the user menu" #~ msgid "Whether the users full name is shown in the user menu or not." #~ msgstr "Whether the users full name is shown in the user menu or not." #~ msgid "APPLICATIONS" #~ msgstr "יישומים" #~ msgid "SETTINGS" #~ msgstr "הגדרות" #~ msgid "Subscription request" #~ msgstr "בקשת הרשמה" #~ msgid "%H:%M on Yesterday" #~ msgstr "אתמול ב־%H:%M" #~ msgid "%H:%M on %A, %B %d, %Y" #~ msgstr "%A, ה־%d ב%B, %Y בשעה %H:%M" #~ msgid "Connection to %s failed" #~ msgstr "החיבור אל %s נכשל" #~ msgid "Reconnect" #~ msgstr "התחברות מחדש" #~ msgid "Your favorite Easter Egg" #~ msgstr "ביצת הפסחא האהובה עליך" #~ msgid "Browse Files..." #~ msgstr "עיון בקבצים..." #~ msgid "Error browsing device" #~ msgstr "שגיאה בעיון בהתקן" #~ msgid "The requested device cannot be browsed, error is '%s'" #~ msgstr "לא ניתן לעיין בהתקן הנבחר, השגיאה היא '%s'" #~ msgid "Wireless" #~ msgstr "אלחוטי" #~ msgid "VPN Connections" #~ msgstr "חיבורי VPN" #~ msgid "System Settings" #~ msgstr "הגדרות המערכת" #~ msgid "disabled OpenSearch providers" #~ msgstr "disabled OpenSearch providers" #~ msgid "Failed to unmount '%s'" #~ msgstr "אירע כשל בניתוק '%s'" #~ msgid "Retry" #~ msgstr "ניסיון חוזר" #~ msgid "PLACES & DEVICES" #~ msgstr "מקומות והתקנים" #~ msgid "%1$s: %2$s" #~ msgstr "%1$s: %2$s" #~ msgid "Passphrase" #~ msgstr "מילת צופן" #~ msgid "Show time with seconds" #~ msgstr "Show time with seconds" #~ msgid "If true, display seconds in time." #~ msgstr "If true, display seconds in time." #~ msgid "Show date in clock" #~ msgstr "Show date in clock" #~ msgid "If true, display date in the clock, in addition to time." #~ msgstr "If true, display date in the clock, in addition to time." #~ msgctxt "contact" #~ msgid "Unknown" #~ msgstr "לא ידוע" #~ msgid "CONTACTS" #~ msgstr "אנשי קשר" #~ msgid "%a %b %e, %R:%S" #~ msgstr "%a %b %e, %R:%S" #~ msgid "%a %b %e, %R" #~ msgstr "%a %b %e, %R" #~ msgid "%a %R:%S" #~ msgstr "%a %R:%S" #~ msgid "%a %R" #~ msgstr "%a %R" #~ msgid "%a %b %e, %l:%M:%S %p" #~ msgstr "%a %b %e, %l:%M:%S %p" #~ msgid "%a %l:%M:%S %p" #~ msgstr "%a %l:%M:%S %p" #~ msgid "%s is online." #~ msgstr "‏%s התחבר/ה." #~ msgid "%s is offline." #~ msgstr "‏%s התנתק/ה." #~ msgid "%s is away." #~ msgstr "‏'%s' מרוחק/ת." #~ msgid "%s is busy." #~ msgstr "‏%s עסוק/ה." #~ msgid "Hidden" #~ msgstr "מוסתר" #~ msgid "Power Off..." #~ msgstr "כיבוי..." #~ msgid "Online Accounts" #~ msgstr "חשבונות מקוונים" #~ msgid "Log Out..." #~ msgstr "ניתוק..." #~ msgid "RECENT ITEMS" #~ msgstr "פריטים אחרונים" #~ msgid "" #~ "GNOME Shell extensions have a uuid property; this key lists extensions " #~ "which should be loaded. disabled-extensions overrides this setting for " #~ "extensions that appear in both lists." #~ msgstr "" #~ "GNOME Shell extensions have a uuid property; this key lists extensions " #~ "which should be loaded. disabled-extensions overrides this setting for " #~ "extensions that appear in both lists." #~ msgid "Show password" #~ msgstr "הצגת ססמה" #~ msgid "%s has finished starting" #~ msgstr "‏%s סיים את תהליך ההתחלה" #~ msgid "Uuids of extensions to disable" #~ msgstr "Uuids of extensions to disable" #~ msgid "You're now connected to mobile broadband connection '%s'" #~ msgstr "כרגע ישנו חיבור בינך ובין רשת הפס הרחב הניידת '%s'" #~ msgid "You're now connected to wireless network '%s'" #~ msgstr "כרגע ישנו חיבור בינך ובין הרשת האלחוטית '%s'" #~ msgid "You're now connected to wired network '%s'" #~ msgstr "כרגע ישנו חיבור בינך ובין הרשת הקווית '%s'" #~ msgid "You're now connected to VPN network '%s'" #~ msgstr "כרגע ישנו חיבור בינך ובין רשת ה־VPN‏ '%s'" #~ msgid "calendar:week_start:0" #~ msgstr "calendar:week_start:0" #~ msgid "Localization Settings" #~ msgstr "הגדרות אזוריות" #~ msgid "Shut Down" #~ msgstr "כיבוי" #~ msgid "Click Shut Down to quit these applications and shut down the system." #~ msgstr "יש ללחוץ על יציאה כדי לסגור יישומים אלה ולכבות את המערכת." #~ msgid "The system will shut down automatically in %d seconds." #~ msgstr "המערכת תכבה אוטומטית בעוד %d שניות." #~ msgid "Shutting down the system." #~ msgstr "המערכת נכבית." #~ msgid "Confirm" #~ msgstr "אישור" #~ msgid "Panel" #~ msgstr "לוח" #~ msgid "PREFERENCES" #~ msgstr "העדפות" #~ msgid "Shut Down..." #~ msgstr "כיבוי..." #~ msgid "Clip the crosshairs at the center" #~ msgstr "Clip the crosshairs at the center" #~ msgid "Color of the crosshairs" #~ msgstr "Color of the crosshairs" #~ msgid "" #~ "Determines the length of the vertical and horizontal lines that make up " #~ "the crosshairs." #~ msgstr "" #~ "Determines the length of the vertical and horizontal lines that make up " #~ "the crosshairs." #~ msgid "" #~ "Determines the position of the magnified mouse image within the magnified " #~ "view and how it reacts to system mouse movement. The values are - none: " #~ "no mouse tracking; - centered: the mouse image is displayed at the center " #~ "of the zoom region (which also represents the point under the system " #~ "mouse) and the magnified contents are scrolled as the system mouse moves; " #~ "- proportional: the position of the magnified mouse in the zoom region is " #~ "proportionally the same as the position of the system mouse on screen; - " #~ "push: when the magnified mouse intersects a boundary of the zoom region, " #~ "the contents are scrolled into view." #~ msgstr "" #~ "Determines the position of the magnified mouse image within the magnified " #~ "view and how it reacts to system mouse movement. The values are - none: " #~ "no mouse tracking; - centered: the mouse image is displayed at the center " #~ "of the zoom region (which also represents the point under the system " #~ "mouse) and the magnified contents are scrolled as the system mouse moves; " #~ "- proportional: the position of the magnified mouse in the zoom region is " #~ "proportionally the same as the position of the system mouse on screen; - " #~ "push: when the magnified mouse intersects a boundary of the zoom region, " #~ "the contents are scrolled into view." #~ msgid "" #~ "Determines the transparency of the crosshairs, from fully opaque to fully " #~ "transparent." #~ msgstr "" #~ "Determines the transparency of the crosshairs, from fully opaque to fully " #~ "transparent." #~ msgid "" #~ "Determines whether the crosshairs intersect the magnified mouse sprite, " #~ "or are clipped such that the ends of the horizontal and vertical lines " #~ "surround the mouse image." #~ msgstr "" #~ "Determines whether the crosshairs intersect the magnified mouse sprite, " #~ "or are clipped such that the ends of the horizontal and vertical lines " #~ "surround the mouse image." #~ msgid "Enable lens mode" #~ msgstr "Enable lens mode" #~ msgid "" #~ "Enables/disables display of crosshairs centered on the magnified mouse " #~ "sprite." #~ msgstr "" #~ "Enables/disables display of crosshairs centered on the magnified mouse " #~ "sprite." #~ msgid "" #~ "For centered mouse tracking, when the system pointer is at or near the " #~ "edge of the screen, the magnified contents continue to scroll such that " #~ "the screen edge moves into the magnified view." #~ msgstr "" #~ "For centered mouse tracking, when the system pointer is at or near the " #~ "edge of the screen, the magnified contents continue to scroll such that " #~ "the screen edge moves into the magnified view." #~ msgid "Length of the crosshairs" #~ msgstr "Length of the crosshairs" #~ msgid "Magnification factor" #~ msgstr "Magnification factor" #~ msgid "Mouse Tracking Mode" #~ msgstr "Mouse Tracking Mode" #~ msgid "Opacity of the crosshairs" #~ msgstr "Opacity of the crosshairs" #~ msgid "Scroll magnified contents beyond the edges of the desktop" #~ msgstr "Scroll magnified contents beyond the edges of the desktop" #~ msgid "Show or hide crosshairs" #~ msgstr "Show or hide crosshairs" #~ msgid "Show or hide the magnifier" #~ msgstr "Show or hide the magnifier" #~ msgid "Show or hide the magnifier and all of its zoom regions." #~ msgstr "Show or hide the magnifier and all of its zoom regions." #~ msgid "" #~ "The color of the the vertical and horizontal lines that make up the " #~ "crosshairs." #~ msgstr "" #~ "The color of the the vertical and horizontal lines that make up the " #~ "crosshairs." #~ msgid "" #~ "The magnified view either fills the entire screen, or occupies the top-" #~ "half, bottom-half, left-half, or right-half of the screen." #~ msgstr "" #~ "The magnified view either fills the entire screen, or occupies the top-" #~ "half, bottom-half, left-half, or right-half of the screen." #~ msgid "" #~ "The power of the magnification. A value of 1.0 means no magnification. A " #~ "value of 2.0 doubles the size." #~ msgstr "" #~ "The power of the magnification. A value of 1.0 means no magnification. A " #~ "value of 2.0 doubles the size." #~ msgid "Thickness of the crosshairs" #~ msgstr "Thickness of the crosshairs" #~ msgid "" #~ "Whether the magnified view should be centered over the location of the " #~ "system mouse and move with it." #~ msgstr "" #~ "Whether the magnified view should be centered over the location of the " #~ "system mouse and move with it." #~ msgid "" #~ "Width of the vertical and horizontal lines that make up the crosshairs." #~ msgstr "" #~ "Width of the vertical and horizontal lines that make up the crosshairs." #~ msgid "Bluetooth Agent" #~ msgstr "סוכן Bluetooth" #~ msgid "Search your computer" #~ msgstr "חיפוש במחשב שלך" #~ msgid "" #~ "Can't add a new workspace because maximum workspaces limit has been " #~ "reached." #~ msgstr "לא ניתן להוסיף מרחבי עבודה כיוון שהם ממלאים את המכסה המרבית." #~ msgid "Can't remove the first workspace." #~ msgstr "לא ניתן להסיר את מרחב העבודה הראשון." #~ msgid "Customize the panel clock" #~ msgstr "התאמת לוח השעון" #~ msgid "Custom format of the clock" #~ msgstr "Custom format of the clock" #~ msgid "Hour format" #~ msgstr "Hour format" #~ msgid "" #~ "If true and format is either \"12-hour\" or \"24-hour\", display seconds " #~ "in time." #~ msgstr "" #~ "If true and format is either \"12-hour\" or \"24-hour\", display seconds " #~ "in time." #~ msgid "" #~ "This key specifies the format used by the panel clock when the format key " #~ "is set to \"custom\". You can use conversion specifiers understood by " #~ "strftime() to obtain a specific format. See the strftime() manual for " #~ "more information." #~ msgstr "" #~ "This key specifies the format used by the panel clock when the format key " #~ "is set to \"custom\". You can use conversion specifiers understood by " #~ "strftime() to obtain a specific format. See the strftime() manual for " #~ "more information." #~ msgid "" #~ "This key specifies the hour format used by the panel clock. Possible " #~ "values are \"12-hour\", \"24-hour\", \"unix\" and \"custom\". If set to " #~ "\"unix\", the clock will display time in seconds since Epoch, i.e. " #~ "1970-01-01. If set to \"custom\", the clock will display time according " #~ "to the format specified in the custom_format key. Note that if set to " #~ "either \"unix\" or \"custom\", the show_date and show_seconds keys are " #~ "ignored." #~ msgstr "" #~ "This key specifies the hour format used by the panel clock. Possible " #~ "values are \"12-hour\", \"24-hour\", \"unix\" and \"custom\". If set to " #~ "\"unix\", the clock will display time in seconds since Epoch, i.e. " #~ "1970-01-01. If set to \"custom\", the clock will display time according " #~ "to the format specified in the custom_format key. Note that if set to " #~ "either \"unix\" or \"custom\", the show_date and show_seconds keys are " #~ "ignored." #~ msgid "Clock Format" #~ msgstr "מבנה השעון" #~ msgid "Clock Preferences" #~ msgstr "העדפות השעון" #~ msgid "Show seco_nds" #~ msgstr "הצגת ש_ניות" #~ msgid "_12 hour format" #~ msgstr "מבנה _12 שעות" #~ msgid "_24 hour format" #~ msgstr "מבנה _24 שעות" #~ msgid "Preferences" #~ msgstr "העדפות" #~ msgid "What's using power..." #~ msgstr "מה צורך חשמל..." #~ msgid "Overview workspace view mode" #~ msgstr "Overview workspace view mode" #~ msgid "" #~ "The selected workspace view mode in the overview. Supported values are " #~ "\"single\" and \"grid\"." #~ msgstr "" #~ "The selected workspace view mode in the overview. Supported values are " #~ "\"single\" and \"grid\"." #~ msgid "Drag here to add favorites" #~ msgstr "יש לגרור פריטים לכאן כדי להוסיף מועדפים" #~ msgid "Find" #~ msgstr "חיפוש" #~ msgid "ON" #~ msgstr "1" #~ msgid "OFF" #~ msgstr "0" #~ msgid "PLACES" #~ msgstr "מקומות" #~ msgid "SEARCH RESULTS" #~ msgstr "תוצאות חיפוש" #~ msgid "Recent Documents" #~ msgstr "מסמכים אחרונים" #~ msgid "Can't lock screen: %s" #~ msgstr "לא ניתן לנעול את המסך: %s" #~ msgid "Can't temporarily set screensaver to blank screen: %s" #~ msgstr "לא ניתן זמנית לקבוע שומר מסך כמסך שחור: %s" #~ msgid "Can't logout: %s" #~ msgstr "לא ניתן להתנתק: %s" #~ msgid "Sidebar" #~ msgstr "סרגל צד" 07070100000238000081A40000000000000000000000016712993F0002090C000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/hi.po# translation of gnome-shell.master.hi.po to Hindi # Hindi translation for gnome-shell. # Copyright (C) 2011 gnome-shell's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-shell package. # Translators: # Rajesh , 2011. # rajesh , 2012, 2013, 2014. # chandankumar , 2012. # Hemish , 2022-2023. # Scrambled777 , 2024. # msgid "" msgstr "" "Project-Id-Version: gnome-shell.master.hi\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues/\n" "POT-Creation-Date: 2024-07-26 11:36+0000\n" "PO-Revision-Date: 2024-07-27 13:49+0530\n" "Last-Translator: Scrambled777 \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: Gtranslator 46.1\n" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "लांचर" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate pinned app 1" msgstr "पिन किया गया ऐप 1 को सक्रिय करें" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate pinned app 2" msgstr "पिन किया गया ऐप 2 को सक्रिय करें" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate pinned app 3" msgstr "पिन किया गया ऐप 3 को सक्रिय करें" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate pinned app 4" msgstr "पिन किया गया ऐप 4 को सक्रिय करें" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate pinned app 5" msgstr "पिन किया गया ऐप 5 को सक्रिय करें" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate pinned app 6" msgstr "पिन किया गया ऐप 6 को सक्रिय करें" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate pinned app 7" msgstr "पिन किया गया ऐप 7 को सक्रिय करें" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate pinned app 8" msgstr "पिन किया गया ऐप 8 को सक्रिय करें" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate pinned app 9" msgstr "पिन किया गया ऐप 9 को सक्रिय करें" #: data/50-gnome-shell-launchers.xml:46 msgid "Open new window of pinned app 1" msgstr "पिन किए गए ऐप 1 की नई विंडो खोलें" #: data/50-gnome-shell-launchers.xml:50 msgid "Open new window of pinned app 2" msgstr "पिन किए गए ऐप 2 की नई विंडो खोलें" #: data/50-gnome-shell-launchers.xml:54 msgid "Open new window of pinned app 3" msgstr "पिन किए गए ऐप 3 की नई विंडो खोलें" #: data/50-gnome-shell-launchers.xml:58 msgid "Open new window of pinned app 4" msgstr "पिन किए गए ऐप 4 की नई विंडो खोलें" #: data/50-gnome-shell-launchers.xml:62 msgid "Open new window of pinned app 5" msgstr "पिन किए गए ऐप 5 की नई विंडो खोलें" #: data/50-gnome-shell-launchers.xml:66 msgid "Open new window of pinned app 6" msgstr "पिन किए गए ऐप 6 की नई विंडो खोलें" #: data/50-gnome-shell-launchers.xml:70 msgid "Open new window of pinned app 7" msgstr "पिन किए गए ऐप 7 की नई विंडो खोलें" #: data/50-gnome-shell-launchers.xml:74 msgid "Open new window of pinned app 8" msgstr "पिन किए गए ऐप 8 की नई विंडो खोलें" #: data/50-gnome-shell-launchers.xml:78 msgid "Open new window of pinned app 9" msgstr "पिन किए गए ऐप 9 की नई विंडो खोलें" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2276 msgid "Screenshots" msgstr "स्क्रीनशॉट" #: data/50-gnome-shell-screenshots.xml:9 #: data/org.gnome.shell.gschema.xml.in:287 msgid "Take a screenshot interactively" msgstr "परस्पर रूप से स्क्रीनशॉट लें" #: data/50-gnome-shell-screenshots.xml:12 #: data/org.gnome.shell.gschema.xml.in:299 msgid "Take a screenshot" msgstr "स्क्रीनशॉट लें" #: data/50-gnome-shell-screenshots.xml:15 #: data/org.gnome.shell.gschema.xml.in:295 msgid "Take a screenshot of a window" msgstr "एक विंडो का स्क्रीनशॉट लें" #: data/50-gnome-shell-screenshots.xml:18 #: data/org.gnome.shell.gschema.xml.in:291 msgid "Record a screencast interactively" msgstr "परस्पर रूप से स्क्रीनकास्ट रिकॉर्ड करें" #: data/50-gnome-shell-system.xml:6 js/ui/messageTray.js:1300 msgid "System" msgstr "सिस्टम" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "अधिसूचना सूची दिखाएं" #: data/50-gnome-shell-system.xml:12 msgid "Open the quick settings menu" msgstr "त्वरित सेटिंग मेनू खोलें" #: data/50-gnome-shell-system.xml:15 msgid "Focus the active notification" msgstr "सक्रिय अधिसूचना को फोकस करें" #: data/50-gnome-shell-system.xml:18 msgid "Show the overview" msgstr "अवलोकन दिखाएं" #: data/50-gnome-shell-system.xml:21 msgid "Show all apps" msgstr "सभी ऐप्स दिखाएं" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "गनोम शैल" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "विंडो प्रबंधन और अनुप्रयोग लॉन्चिंग" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "Alt-F2 से डेवलपर्स और परीक्षकों के लिए उपयोगी आंतरिक उपकरण को सक्षम करें" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Alt-F2 डायलॉग का उपयोग करके आंतरिक डिबगिंग और निगरानी उपकरण तक पहुंच प्रदान करें।" #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "सक्षम करने के लिए एक्सटेंशन के UUID" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "गनोम शैल एक्सटेंशन में एक UUID विशेषता होती है; यह कुंजी उन एक्सटेंशनों को सूचीबद्ध करती है " "जिन्हें लोड किया जाना है। कोई भी एक्सटेंशन जो लोड किया जाना चाहिए, उसे इस सूची में होना " "होगा। आप org.gnome.Shell पर EnableExtension और DisableExtension D-Bus विधियों " "से इस सूची में हेरफेर भी कर सकते हैं।" #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "एक्सटेंशनों के UUIDs जिनको बलपूर्वक असक्रिय किया जाना है" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" "गनोम शैल एक्सटेंशन में एक UUID विशेषता होती है; यह कुंजी उन एक्सटेंशनों को सूचीबद्ध करती है " "जिन्हें बलपूर्वक असक्रिय किया जाना है, भले ही वह वर्तमान स्थिति में ही लोड की गई हो। कोई " "भी एक्सटेंशन जो लोड किया जाना चाहिए, उसे इस सूची में होना होगा। आप org.gnome.Shell " "पर EnableExtension और DisableExtension D-Bus विधियों से इस सूची में हेरफेर भी कर " "सकते हैं। यह कुंजी “सक्षम-एक्सटेंशन” सेटिंग से पूर्वता लेती है।" #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "उपयोक्ता एक्सटेंशन अक्षम करें" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" "“सक्षम-एक्सटेंशन” सेटिंग को प्रभावित किए बिना उपयोक्ता द्वारा सक्षम किए गए सभी एक्सटेंशन " "अक्षम करें।" #: data/org.gnome.shell.gschema.xml.in:45 msgid "Allow extension installation" msgstr "एक्सटेंशन स्थापना की अनुमति दें" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "Allow users to install extensions in their home folder. If disabled, the " "InstallRemoteExtension D-Bus method will fail, and extensions are only " "loaded from system directories on startup. It does not affect extensions " "that are already loaded, so a change only takes full effect on the next " "login." msgstr "" "उपयोक्ताओं को अपने होम फोल्डर में एक्सटेंशन स्थापित करने की अनुमति दें। यदि अक्षम किया गया " "है, तो InstallRemoteExtension D-Bus विधि विफल हो जाएगी, और एक्सटेंशन केवल स्टार्टअप " "पर सिस्टम निर्देशिकाओं से लोड किए जाते हैं। यह पहले से लोड किए गए एक्सटेंशन को प्रभावित " "नहीं करता है, इसलिए कोई भी परिवर्तन केवल अगले लॉगिन पर ही पूर्ण रूप से प्रभावी होता है।" #: data/org.gnome.shell.gschema.xml.in:56 msgid "Disables the validation of extension version compatibility" msgstr "एक्सटेंशन संस्करण अनुकूलता के वैधीकरण को निष्क्रिय करता है" #: data/org.gnome.shell.gschema.xml.in:57 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "गनोम शैल केवल वही एक्सटेंशन लोड करेगा जो मौजूदा कार्यशील संस्करण के समर्थन का दावा करता " "है। इस विकल्प का सक्रिय करना इस वैधीकरण को निष्क्रिय करेगा और उन संस्करणों जिनके समर्थन " "का एक्स्टेंशन दावा करती हैं पर ध्यान दिए बिना सभी एक्सटेंशन को लोड करने की कोशिश करेगा।" #: data/org.gnome.shell.gschema.xml.in:65 msgid "List of desktop file IDs for favorite applications" msgstr "पसंदीदा अनुप्रयोगों की डेस्कटॉप फाइल ID की सूची" #: data/org.gnome.shell.gschema.xml.in:66 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "इन पहचानकर्ताओं से संबंधित अनुप्रयोगों को पसंदीदा क्षेत्र में प्रदर्शित किया जाएगा।" #: data/org.gnome.shell.gschema.xml.in:73 msgid "History for command (Alt-F2) dialog" msgstr "कमांड (Alt-F2) डायलॉग के लिए इतिहास" #. Translators: looking glass is a debugger and inspector tool, see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/docs/looking-glass.md #: data/org.gnome.shell.gschema.xml.in:78 msgid "History for the looking glass dialog" msgstr "'लुकिंग ग्लास' डायलॉग के लिए इतिहास" #: data/org.gnome.shell.gschema.xml.in:82 msgid "Always show the “Log Out” action in the system menu" msgstr "सिस्टम मेनू में हमेशा “लॉग आउट” कार्रवाई दिखाएं" #: data/org.gnome.shell.gschema.xml.in:83 msgid "" "This key overrides the automatic hiding of the “Log out” action in the " "system menu for logged-in situations where there is a single, local, non-" "system user and only a single available session type (e.g. GNOME on Wayland)." msgstr "" "यह कुंजी लॉग-इन स्थितियों के लिए सिस्टम मेनू में “लॉग आउट” कार्रवाई के स्वचालित छिपाने को " "ओवरराइड करती है जहां एकल, स्थानीय, गैर-सिस्टम उपयोक्ता और केवल एक ही उपलब्ध सत्र " "प्रकार होता है (उदाहरणार्थ वायलैंड पर गनोम)।" #: data/org.gnome.shell.gschema.xml.in:92 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "यदि कूटलेखित या दूरस्थ फाइलतंत्र के लिए पासवर्ड याद रखें जाएं या नहीं" #: data/org.gnome.shell.gschema.xml.in:93 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "जब कोई एन्क्रिप्टेड डिवाइस या रिमोट फ़ाइल सिस्टम माउंट किया जाता है, तो शैल पासवर्ड का " "अनुरोध करेगा। यदि पासवर्ड को भविष्य के उपयोग के लिए सहेजा जा सकता है, तो “पासवर्ड याद " "रखें\"” चेकबॉक्स मौजूद होगा। यह कुंजी चेकबॉक्स की तयशुदा स्थिति निर्धारित करती है।" #: data/org.gnome.shell.gschema.xml.in:102 msgid "The last selected non-default power profile" msgstr "अंतिम चुना गया गैर-तयशुदा पावर रूपरेखा" #: data/org.gnome.shell.gschema.xml.in:103 msgid "" "Some systems support more than two power profiles. In order to still support " "toggling between two profiles, this key records the last selected non-" "default profile." msgstr "" "कुछ सिस्टम दो से अधिक पावर रूपरेखाओं का समर्थन करते हैं। अभी भी दो रुपरेखाओं के बीच टॉगलिंग " "का समर्थन करने के लिए, यह कुंजी अंतिम चुने गैर-तयशुदा रूपरेखा को याद रखती है।" #: data/org.gnome.shell.gschema.xml.in:111 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "अंतिम संस्करण जिसमें “गनोम में आपका स्वागत है” डायलॉग दिखाया गया था" #: data/org.gnome.shell.gschema.xml.in:112 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can " "be used to effectively disable the dialog." msgstr "" "यह कुंजी निर्धारित करती है कि किस संस्करण के लिए “गनोम में आपका स्वागत है” डायलॉग आखिरी " "बार दिखाया गया था। एक खाली स्ट्रिंग सबसे पुराने संभावित संस्करण का प्रतिनिधित्व करती है, " "और एक बड़ी संख्या उन संस्करणों का प्रतिनिधित्व करेगी जो अभी तक मौजूद नहीं हैं। डायलॉग को " "प्रभावी ढंग से अक्षम करने के लिए इसमें बड़ी संख्या का उपयोग किया जा सकता है।" #: data/org.gnome.shell.gschema.xml.in:145 msgid "Layout of the app picker" msgstr "ऐप चयनकर्ता का अभिन्यास" #: data/org.gnome.shell.gschema.xml.in:146 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" msgstr "" "ऐप चयनकर्ता का अभिन्यास। इस array में प्रत्येक अंश एक पृष्ठ है। पृष्ठों को उस क्रम में सहेजा " "जाता है जिस क्रम में वे गनोम शैल में प्रकट होते हैं। प्रत्येक पृष्ठ में एक “application id” → " "'data' जोड़ी होती है। वर्तमान में, यह 'data': • “position”: पृष्ठ में अनुप्रयोग आइकन का " "स्थान" #: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:172 msgid "Keybinding to shift between overview states" msgstr "सारांश की स्थितियों के बीच बदलने के लिए कीबाइंडिंग" #: data/org.gnome.shell.gschema.xml.in:166 msgid "Keybinding to shift between session, window picker and app grid" msgstr "सत्र, विंडो चयनकर्ता और ऐप ग्रिड के बीच बदलने के लिए कीबाइंडिंग" #: data/org.gnome.shell.gschema.xml.in:173 msgid "Keybinding to shift between app grid, window picker and session" msgstr "ऐप ग्रिड, विंडो चयनकर्ता और सत्र के बीच बदलने के लिए कीबाइंडिंग" #: data/org.gnome.shell.gschema.xml.in:179 msgid "Keybinding to open the “Show Applications” view" msgstr "“अनुप्रयोग दिखाएं” दृश्य को खोलने के लिए कीबाइंडिंग" #: data/org.gnome.shell.gschema.xml.in:180 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "गतिविधि सारांश के “अनुप्रयोग दिखाएं” दृश्य को खोलने के लिए कीबाइंडिंग।" #: data/org.gnome.shell.gschema.xml.in:187 msgid "Keybinding to open the overview" msgstr "सारांश खोलने के लिए कीबाइंडिंग" #: data/org.gnome.shell.gschema.xml.in:188 msgid "Keybinding to open the Activities Overview." msgstr "गतिविधि सारांश खोलने के लिए कीबाइंडिंग।" #: data/org.gnome.shell.gschema.xml.in:194 msgid "Keybinding to toggle the visibility of the notification list" msgstr "अधिसूचना सूची की दृश्यता को टॉगल करने के लिए कीबाइंडिंग" #: data/org.gnome.shell.gschema.xml.in:195 msgid "Keybinding to toggle the visibility of the notification list." msgstr "अधिसूचना सूची की दृश्यता को टॉगल करने के लिए कीबाइंडिंग।" #: data/org.gnome.shell.gschema.xml.in:201 msgid "Keybinding to toggle the quick settings menu" msgstr "त्वरित सेटिंग्स मेनू को टॉगल करने के लिए कीबाइंडिंग" #: data/org.gnome.shell.gschema.xml.in:202 msgid "Keybinding to toggle the quick settings menu." msgstr "त्वरित सेटिंग्स मेनू को टॉगल करने के लिए कीबाइंडिंग।" #: data/org.gnome.shell.gschema.xml.in:208 msgid "Keybinding to focus the active notification" msgstr "सक्रिय अधिसूचना को फोकस करने के लिए कीबाइंडिंग" #: data/org.gnome.shell.gschema.xml.in:209 msgid "Keybinding to focus the active notification." msgstr "सक्रिय अधिसूचना को फोकस करने के लिए कीबाइंडिंग।" #: data/org.gnome.shell.gschema.xml.in:215 msgid "Switch to application 1" msgstr "अनुप्रयोग 1 पर जाएं" #: data/org.gnome.shell.gschema.xml.in:219 msgid "Switch to application 2" msgstr "अनुप्रयोग 2 पर जाएं" #: data/org.gnome.shell.gschema.xml.in:223 msgid "Switch to application 3" msgstr "अनुप्रयोग 3 पर जाएं" #: data/org.gnome.shell.gschema.xml.in:227 msgid "Switch to application 4" msgstr "अनुप्रयोग 4 पर जाएं" #: data/org.gnome.shell.gschema.xml.in:231 msgid "Switch to application 5" msgstr "अनुप्रयोग 5 पर जाएं" #: data/org.gnome.shell.gschema.xml.in:235 msgid "Switch to application 6" msgstr "अनुप्रयोग 6 पर जाएं" #: data/org.gnome.shell.gschema.xml.in:239 msgid "Switch to application 7" msgstr "अनुप्रयोग 7 पर जाएं" #: data/org.gnome.shell.gschema.xml.in:243 msgid "Switch to application 8" msgstr "अनुप्रयोग 8 पर जाएं" #: data/org.gnome.shell.gschema.xml.in:247 msgid "Switch to application 9" msgstr "अनुप्रयोग 9 पर जाएं" #: data/org.gnome.shell.gschema.xml.in:251 msgid "Open a new instance of application 1" msgstr "अनुप्रयोग 1 का एक नया इंस्टैंस खोलें" #: data/org.gnome.shell.gschema.xml.in:255 msgid "Open a new instance of application 2" msgstr "अनुप्रयोग 2 का एक नया इंस्टैंस खोलें" #: data/org.gnome.shell.gschema.xml.in:259 msgid "Open a new instance of application 3" msgstr "अनुप्रयोग 3 का एक नया इंस्टैंस खोलें" #: data/org.gnome.shell.gschema.xml.in:263 msgid "Open a new instance of application 4" msgstr "अनुप्रयोग 4 का एक नया इंस्टैंस खोलें" #: data/org.gnome.shell.gschema.xml.in:267 msgid "Open a new instance of application 5" msgstr "अनुप्रयोग 5 का एक नया इंस्टैंस खोलें" #: data/org.gnome.shell.gschema.xml.in:271 msgid "Open a new instance of application 6" msgstr "अनुप्रयोग 6 का एक नया इंस्टैंस खोलें" #: data/org.gnome.shell.gschema.xml.in:275 msgid "Open a new instance of application 7" msgstr "अनुप्रयोग 7 का एक नया इंस्टैंस खोलें" #: data/org.gnome.shell.gschema.xml.in:279 msgid "Open a new instance of application 8" msgstr "अनुप्रयोग 8 का एक नया इंस्टैंस खोलें" #: data/org.gnome.shell.gschema.xml.in:283 msgid "Open a new instance of application 9" msgstr "अनुप्रयोग 9 का एक नया इंस्टैंस खोलें" #: data/org.gnome.shell.gschema.xml.in:308 #: data/org.gnome.shell.gschema.xml.in:335 msgid "Limit switcher to current workspace." msgstr "स्विचर को वर्तमान कार्यस्थान तक सीमित करें।" #: data/org.gnome.shell.gschema.xml.in:309 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "यदि सही है, तो जिन अनुप्रयोग की सक्रिय कार्यस्थान पर विंडो है, वे स्विचर में दिखेंगी। " "अन्यथा, सभी अनुप्रयोग शामिल किए जाएंगे।" #: data/org.gnome.shell.gschema.xml.in:326 msgid "The application icon mode." msgstr "अनुप्रयोग चिह्न अवस्था।" #: data/org.gnome.shell.gschema.xml.in:327 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-" "only” (shows only the application icon) or “both”." msgstr "" "तय करता है कि कैसे विंडो स्विचर में दिखाए जाएंगे। मान्य संभावनाएं हैं: “thumbnail-" "only” (विंडो का लघुचित्र दिखाता है), “app-icon-only” (केवल अनुप्रयोग चिह्न दिखाता है) " "या '“both” (दोनों दिखाता है)।" #: data/org.gnome.shell.gschema.xml.in:336 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "यदि सही है, तो मौजूदा कार्यस्थान में उपस्थित विंडो इस स्विचर में दिखेगीं। अन्यथा, सभी विंडो " "शामिल की जाएंगी।" #: data/org.gnome.shell.gschema.xml.in:346 msgid "Locations" msgstr "स्थान" #: data/org.gnome.shell.gschema.xml.in:347 msgid "The locations to show in world clocks" msgstr "विश्व घड़ियों में दिखने वाले स्थान" #: data/org.gnome.shell.gschema.xml.in:357 msgid "Automatic location" msgstr "स्वचालित स्थान सेवा" #: data/org.gnome.shell.gschema.xml.in:358 msgid "Whether to fetch the current location or not" msgstr "वर्तमान स्थान प्राप्त किया जाएगा या नहीं" #: data/org.gnome.shell.gschema.xml.in:365 msgid "Location" msgstr "स्थान" #: data/org.gnome.shell.gschema.xml.in:366 msgid "The location for which to show a forecast" msgstr "स्थान, जिसके लिए पूर्वानुमान दिखाता जाएगा" #. Keep in sync with subprojects/extensions-app #: data/org.gnome.Shell.Extensions.desktop.in.in:5 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/data/ui/extensions-window.ui:57 msgid "Extensions" msgstr "एक्सटेंशन्स" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "नेटवर्क लॉगइन" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:275 msgid "Something’s gone wrong" msgstr "कुछ गलत हो गया है" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" "हमें बहुत खेद है, लेकिन एक समस्या है: इस एक्सटेंशन की सेटिंग्स प्रदर्शित नहीं की जा सकतीं। हम " "सलाह देते हैं कि आप इस एक्सटेंशन के लेखकों को इस समस्या का संदेश दें।" #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "तकनीकी जानकारी" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "गृहपृष्ट" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 msgid "Visit extension homepage" msgstr "एक्सटेंशन के गृहपृष्ट पर जाएं" #: js/gdm/authPrompt.js:153 js/gdm/loginDialog.js:466 #: js/ui/audioDeviceSelection.js:66 js/ui/components/networkAgent.js:115 #: js/ui/components/polkitAgent.js:146 js/ui/endSessionDialog.js:438 #: js/ui/extensionDownloader.js:278 js/ui/shellMountOperation.js:384 #: js/ui/shellMountOperation.js:394 msgid "Cancel" msgstr "रद्द करें" #: js/gdm/authPrompt.js:319 js/ui/components/networkAgent.js:215 #: js/ui/components/networkAgent.js:235 js/ui/components/networkAgent.js:267 #: js/ui/components/networkAgent.js:300 js/ui/components/networkAgent.js:339 #: js/ui/components/networkAgent.js:352 js/ui/components/polkitAgent.js:288 #: js/ui/shellMountOperation.js:334 msgid "Password" msgstr "पासवर्ड" #: js/gdm/loginDialog.js:327 msgid "Choose Session" msgstr "सत्र चुनें" #. Translators: is running for #: js/gdm/loginDialog.js:424 #, javascript-format msgid "" "Remote login is not possible because a remote session is already running for " "%s. To login remotely, you must log out from the remote session or force " "stop it." msgstr "" "दूरस्थ लॉगिन संभव नहीं है क्योंकि %s के लिए दूरस्थ सत्र पहले से ही चल रहा है। दूरस्थ रूप से " "लॉगिन करने के लिए, आपको दूरस्थ सत्र से लॉग आउट करना होगा या इसे बलपूर्वक रोकना होगा।" #. Translators: is running for #: js/gdm/loginDialog.js:427 #, javascript-format msgid "" "Login is not possible because a remote session is already running for %s. To " "login, you must log out from the remote session or force stop it." msgstr "" "लॉगिन संभव नहीं है क्योंकि %s के लिए एक दूरस्थ सत्र पहले से ही चल रहा है। लॉगिन करने के " "लिए, आपको दूरस्थ सत्र से लॉग आउट करना होगा या इसे बलपूर्वक रोकना होगा।" #. Translators: is running for #: js/gdm/loginDialog.js:430 #, javascript-format msgid "" "Remote login is not possible because a local session is already running for " "%s. To login remotely, you must log out from the local session or force stop " "it." msgstr "" "दूरस्थ लॉगिन संभव नहीं है क्योंकि %s के लिए स्थानीय सत्र पहले से ही चल रहा है। दूरस्थ रूप से " "लॉगिन करने के लिए, आपको स्थानीय सत्र से लॉग आउट करना होगा या इसे बलपूर्वक रोकना होगा।" #. Translators: is running for #: js/gdm/loginDialog.js:433 #, javascript-format msgid "" "Login is not possible because a session is already running for %s. To login, " "you must log out from the session or force stop it." msgstr "" "लॉगिन संभव नहीं है क्योंकि %s के लिए एक सत्र पहले से ही चल रहा है। लॉगिन करने के लिए, " "आपको सत्र से लॉग आउट करना होगा या इसे बलपूर्वक रोकना होगा।" #: js/gdm/loginDialog.js:442 msgid "Session Already Running" msgstr "सत्र पहले से चल रहा है" #: js/gdm/loginDialog.js:454 msgid "" "Force stopping will quit any running apps and processes, and could result in " "data loss" msgstr "" "बलपूर्वक रोकने से सभी चल रहे ऐप्स और प्रक्रियाएं बंद हो जाएंगी और इसके परिणामस्वरूप डेटा " "हानि हो सकती है" #: js/gdm/loginDialog.js:474 msgid "Force Stop" msgstr "बलपूर्वक रोकें" #: js/gdm/loginDialog.js:542 msgid "Not listed?" msgstr "सूचीबद्ध नहीं?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:1010 #, javascript-format msgid "(e.g., user or %s)" msgstr "(उउदाहरणार्थ, उपयोक्ता या %s)" #: js/gdm/loginDialog.js:1015 js/ui/components/networkAgent.js:259 #: js/ui/components/networkAgent.js:294 js/ui/components/networkAgent.js:328 msgid "Username" msgstr "उपयोक्तानाम" #: js/gdm/loginDialog.js:1081 msgid "Login Attempt Timed Out" msgstr "लॉगिन प्रयास का समय समाप्त" #: js/gdm/loginDialog.js:1082 msgid "Login took too long, please try again" msgstr "लॉगिन करने में बहुत अधिक समय लगा, कृपया पुनः प्रयास करें" #: js/gdm/loginDialog.js:1427 msgid "Login Window" msgstr "लॉगिन विंडो" #: js/gdm/util.js:498 msgid "Authentication error" msgstr "प्रमाणीकरण त्रुटि" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:729 msgid "(or swipe finger across reader)" msgstr "(या सेंसर पर उंगली स्वाइप करें)" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:734 msgid "(or place finger on reader)" msgstr "(या सेंसर पर उंगली रखें)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:91 msgctxt "search-result" msgid "Power Off" msgstr "बंद करें" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:94 msgid "power off;poweroff;shutdown;halt;stop" msgstr "बंद;शटडाउन;रोकें;बंद करें;विराम;" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:99 msgctxt "search-result" msgid "Restart" msgstr "पुनर्प्रारंभ करें" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:102 msgid "reboot;restart;" msgstr "रिबूट;पुनर्प्रारंभ;रिस्टार्ट;रीस्टार्ट;रीबूट;फिर चालू;" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:107 msgctxt "search-result" msgid "Lock Screen" msgstr "स्क्रीन पर ताला लगाएं" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:110 msgid "lock screen" msgstr "लॉक स्क्रीन" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:115 msgctxt "search-result" msgid "Log Out" msgstr "लॉग आउट" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:118 msgid "logout;log out;sign off" msgstr "लॉगआउट;साइनऑफ;" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:123 msgctxt "search-result" msgid "Suspend" msgstr "निलंबित करें" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:126 msgid "suspend;sleep" msgstr "निलंबित;सो जाओ" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:131 msgctxt "search-result" msgid "Switch User" msgstr "उपयोक्ता बदलें" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:134 msgid "switch user" msgstr "उपयोक्ता बदलें" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:141 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "स्क्रीन रोटेशन मुक्त;स्क्रीन रोटेशन प्रतिबंधित;लोक ओरिएंटेशन;लोक ऑरिएंटेशन;स्क्रीन;" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:146 msgctxt "search-result" msgid "Take a Screenshot" msgstr "स्क्रीनशॉट लें" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:149 msgid "screenshot;screencast;snip;capture;record" msgstr "स्क्रीनशॉट;चित्र;रिकोर्ड,रिकॉर्ड,कैप्चर;स्निप;रेकार्ड;" #: js/misc/systemActions.js:249 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "स्क्रीन घुमाव अनलॉक करें" #: js/misc/systemActions.js:250 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "स्क्रीन घुमाव लॉक करें" #: js/misc/util.js:132 msgid "Command not found" msgstr "कमांड नहीं मिला" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:172 msgid "Could not parse command:" msgstr "कमांड का विश्लेषण नहीं किया जा सका:" #: js/misc/util.js:180 #, javascript-format msgid "Execution of “%s” failed:" msgstr "“%s” का निष्पादन विफल:" #: js/misc/dateUtils.js:69 msgid "Just now" msgstr "अभी" #: js/misc/dateUtils.js:72 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d मिनट पहले" msgstr[1] "%d मिनट पहले" #: js/misc/dateUtils.js:79 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d घंटा पहले" msgstr[1] "%d घंटे पहले" #: js/misc/dateUtils.js:85 js/ui/dateMenu.js:185 msgid "Yesterday" msgstr "बिता कल" #: js/misc/dateUtils.js:88 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d दिन पहले" msgstr[1] "%d दिन पहले" #: js/misc/dateUtils.js:95 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d सप्ताह पहले" msgstr[1] "%d सप्ताह पहले" #: js/misc/dateUtils.js:102 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%d महीने पहले" msgstr[1] "%d महीने पहले" #: js/misc/dateUtils.js:108 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "%d साल पहले" msgstr[1] "%d साल पहले" #. Translators: Time in 24h format #: js/misc/dateUtils.js:155 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/dateUtils.js:161 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "बीते कल, %H∶%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/dateUtils.js:167 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/dateUtils.js:173 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%-d %B, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/dateUtils.js:179 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%-d %B %Y, %H∶%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/dateUtils.js:184 msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/dateUtils.js:190 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "बीते कल, %l∶%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/dateUtils.js:196 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/dateUtils.js:202 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%-d %B, %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/dateUtils.js:208 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%-d %B %Y, %l∶%M %p" #: js/portalHelper/main.js:98 msgid "Your connection seems to be secure" msgstr "आपका कनेक्शन सुरक्षित प्रतीत होता है" #: js/portalHelper/main.js:104 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "इस हॉटस्पॉट लॉगिन से आपका संबंध सुरक्षित नहीं है। पासवर्ड या अन्य जानकारी जो आप इस पृष्ठ " "पर दर्ज करते हैं, आस-पास के लोगों द्वारा देखी जा सकती है।" #: js/portalHelper/main.js:115 msgid "Hotspot Login" msgstr "हॉटस्पॉट लॉगिन" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:51 js/ui/inhibitShortcutsDialog.js:92 msgid "Deny" msgstr "नकारें" #: js/ui/accessDialog.js:52 js/ui/inhibitShortcutsDialog.js:101 msgid "Allow" msgstr "स्वीकारें" #: js/ui/appDisplay.js:1771 msgid "Unnamed Folder" msgstr "अनाम फोल्डर" #: js/ui/appFavorites.js:166 #, javascript-format msgid "%s has been pinned to the dash." msgstr "%s को डेश में पसंदीदा क्षेत्र में जोड़ दिया गया है।" #: js/ui/appFavorites.js:199 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "%s को डेश में पसंदीदा क्षेत्र से हटा दिया गया है।" #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:51 msgid "Open Windows" msgstr "खुली खिड़कियां" #: js/ui/appMenu.js:59 msgid "New Window" msgstr "नई विंडो" #: js/ui/appMenu.js:86 msgid "App Details" msgstr "एप का विवरण" #: js/ui/appMenu.js:102 msgid "Quit" msgstr "बंद करें" #: js/ui/appMenu.js:162 js/ui/dash.js:250 msgid "Unpin" msgstr "डैश से हटाएं" # चिपकाएँ was the the closest I could find to 'pin' #: js/ui/appMenu.js:163 msgid "Pin to Dash" msgstr "डैश पर चिपकाएं" #: js/ui/appMenu.js:180 msgid "Launch using Integrated Graphics Card" msgstr "एकीकृत ग्राफिक्स कार्ड का उपयोग कर खोलें" #: js/ui/appMenu.js:181 msgid "Launch using Discrete Graphics Card" msgstr "पृथक ग्राफ़िक्स कार्ड का उपयोग करके शुरू करें" #: js/ui/audioDeviceSelection.js:46 msgid "Select Audio Device" msgstr "ऑडियो डिवाइस चुनें" #: js/ui/audioDeviceSelection.js:61 js/ui/status/volume.js:83 msgid "Sound Settings" msgstr "ध्वनि सेटिंग्स" #: js/ui/audioDeviceSelection.js:74 msgid "Headphones" msgstr "हेडफोन" #: js/ui/audioDeviceSelection.js:76 msgid "Headset" msgstr "हेडसेट" #: js/ui/audioDeviceSelection.js:78 js/ui/status/volume.js:358 msgid "Microphone" msgstr "माइक्रोफोन" #: js/ui/backgroundMenu.js:15 msgid "Change Background…" msgstr "पृष्ठभूमि बदलें…" #: js/ui/backgroundMenu.js:17 msgid "Display Settings" msgstr "डिस्प्ले सेटिंग" #: js/ui/backgroundMenu.js:18 msgid "Settings" msgstr "सेटिंग" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:39 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:65 msgctxt "grid sunday" msgid "S" msgstr "र" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:67 msgctxt "grid monday" msgid "M" msgstr "सो" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:69 msgctxt "grid tuesday" msgid "T" msgstr "मं" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:71 msgctxt "grid wednesday" msgid "W" msgstr "बु" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:73 msgctxt "grid thursday" msgid "T" msgstr "गु" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:75 msgctxt "grid friday" msgid "F" msgstr "शु" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:77 msgctxt "grid saturday" msgid "S" msgstr "श" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:428 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:438 msgid "%OB %Y" msgstr "%OB %Y" #: js/ui/calendar.js:500 msgid "Previous month" msgstr "पिछला महीना" #: js/ui/calendar.js:518 msgid "Next month" msgstr "अगला महीना" #: js/ui/calendar.js:669 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:728 msgid "Week %V" msgstr "सप्ताह %V" #: js/ui/calendar.js:920 msgid "No Notifications" msgstr "कोई अधिसूचना नहीं" #: js/ui/calendar.js:976 msgid "Do Not Disturb" msgstr "आकुल न करें" #: js/ui/calendar.js:997 msgid "Clear" msgstr "साफ़ करें" #: js/ui/calendar.js:1001 msgctxt "action" msgid "Clear all notifications" msgstr "सभी अधिसूचनाएं साफ़ करें" #. Translators: %s is an application name #: js/ui/closeDialog.js:44 #, javascript-format msgid "“%s” Is Not Responding" msgstr "“%s” कोई प्रतिक्रिया नहीं दे रहा है" #: js/ui/closeDialog.js:45 msgid "" "You may choose to wait a short while for it to continue or force the app to " "quit entirely" msgstr "" "आप इसे जारी रखने के लिए थोड़ी देर प्रतीक्षा कर सकते हैं या ऐप को बलपूर्वक पूरी तरह से बंद " "कर सकते हैं" #: js/ui/closeDialog.js:73 msgid "Force Quit" msgstr "बलपूर्वक बंद करें" #: js/ui/closeDialog.js:78 msgid "Wait" msgstr "प्रतीक्षा करें" #: js/ui/components/automountManager.js:84 msgid "External drive connected" msgstr "बाहरी ड्राइव जोड़ा गया" #: js/ui/components/automountManager.js:96 msgid "External drive disconnected" msgstr "बाहरी ड्राइव निकला गया" # Here, volume does not refer to sound, rather refers to volumes of a disk. Comment left by Hemish #: js/ui/components/automountManager.js:210 msgid "Unable to unlock volume" msgstr "वॉल्यूम को खोलने में अक्षम" #: js/ui/components/automountManager.js:211 msgid "The installed udisks version does not support the PIM setting" msgstr "संस्थापित udisks संस्करण PIM सेटिंग का समर्थन नहीं करता है" #. Translators: %s is the name of a partition on a external drive #: js/ui/components/autorunManager.js:191 #, javascript-format msgid "“%s” connected" msgstr "“%s” जुड़ा" #: js/ui/components/autorunManager.js:192 msgid "Disk can now be used" msgstr "डिस्क का अब उपयोग किया जा सकता है" #: js/ui/components/autorunManager.js:204 #, javascript-format msgid "Open with %s" msgstr "%s के साथ खोलें" #: js/ui/components/networkAgent.js:97 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router" msgstr "वैकल्पिक रूप से आप अपने राउटर पर \"WPS\" बटन दबाकर जुड़ सकते हैं" #: js/ui/components/networkAgent.js:109 js/ui/status/bluetooth.js:246 #: js/ui/status/network.js:362 js/ui/status/network.js:446 msgid "Connect" msgstr "जुड़ें" #: js/ui/components/networkAgent.js:224 msgid "Key" msgstr "कुंजी" #: js/ui/components/networkAgent.js:275 js/ui/components/networkAgent.js:314 msgid "Private key password" msgstr "निजी कुंजी पासवर्ड" #: js/ui/components/networkAgent.js:308 msgid "Identity" msgstr "पहचान" #: js/ui/components/networkAgent.js:334 msgid "Service" msgstr "सेवा" #: js/ui/components/networkAgent.js:372 js/ui/components/networkAgent.js:408 #: js/ui/components/networkAgent.js:745 js/ui/components/networkAgent.js:766 msgid "Authentication required" msgstr "प्रमाणीकरण आवश्यक" #: js/ui/components/networkAgent.js:373 js/ui/components/networkAgent.js:746 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network “%s”" msgstr "वायरलेस नेटवर्क “%s” तक पहुंचने के लिए पासवर्ड या कूटलेखन कुंजी की आवश्यकता होती है" #: js/ui/components/networkAgent.js:377 js/ui/components/networkAgent.js:750 msgid "Wired 802.1X authentication" msgstr "तारयुक्त 802.1X प्रमानीकरण" #: js/ui/components/networkAgent.js:380 msgid "Network name" msgstr "नेटवर्क नाम" #: js/ui/components/networkAgent.js:388 js/ui/components/networkAgent.js:754 msgid "DSL authentication" msgstr "DSL सत्यापन" #: js/ui/components/networkAgent.js:395 js/ui/components/networkAgent.js:759 msgid "PIN code required" msgstr "पिन कोड आवश्यक" #: js/ui/components/networkAgent.js:396 js/ui/components/networkAgent.js:760 msgid "PIN code is needed for the mobile broadband device" msgstr "मोबाइल ब्रॉडबैंड डिवाइस के लिए पिन कोड आवश्यक है" #: js/ui/components/networkAgent.js:398 msgid "PIN" msgstr "पिन" #: js/ui/components/networkAgent.js:409 js/ui/components/networkAgent.js:751 #: js/ui/components/networkAgent.js:755 js/ui/components/networkAgent.js:767 #: js/ui/components/networkAgent.js:771 #, javascript-format msgid "A password is required to connect to “%s”" msgstr "“%s” से जुड़ने के लिए पासवर्ड की आवश्यकता है" #: js/ui/components/networkAgent.js:770 msgid "VPN password" msgstr "VPN पासवर्ड" #: js/ui/components/polkitAgent.js:46 msgid "Authentication Required" msgstr "सत्यापन आवश्यक" #: js/ui/components/polkitAgent.js:86 msgid "Administrator" msgstr "प्रशासक" #: js/ui/components/polkitAgent.js:151 msgid "Authenticate" msgstr "प्रमाणित करें" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:265 js/ui/shellMountOperation.js:417 msgid "Sorry, that didn’t work. Please try again." msgstr "माफ करें, वह काम नहीं किया। कृपया फिर कोशिश करें।" #: js/ui/ctrlAltTab.js:25 js/ui/overviewControls.js:406 msgid "Windows" msgstr "खिड़कियां" #: js/ui/dash.js:206 js/ui/dash.js:252 msgid "Show Apps" msgstr "ऐप्स दिखाएं" #. Translators: this is the name of the dock/favorites area on #. the bottom of the overview #: js/ui/dash.js:410 msgid "Dash" msgstr "डैश" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:101 msgid "%B %-d %Y" msgstr "%-d %B %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:108 msgid "%A %B %e %Y" msgstr "%A %e %B, %Y" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:174 msgctxt "calendar heading" msgid "%B %-d" msgstr "%-d %B" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:177 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%-d %B %Y" #: js/ui/dateMenu.js:183 msgid "Today" msgstr "आज" #: js/ui/dateMenu.js:187 msgid "Tomorrow" msgstr "कल" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:218 msgctxt "event list time" msgid "All Day" msgstr "पूरा दिन" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:240 msgid "%m/%d" msgstr "%m %d" #: js/ui/dateMenu.js:291 msgid "No Events" msgstr "कोई कार्यक्रम नहीं" #: js/ui/dateMenu.js:413 msgid "Add World Clocks…" msgstr "विश्व घड़ियां जोड़ें…" #: js/ui/dateMenu.js:414 msgid "World Clocks" msgstr "विश्व घड़ियां" #: js/ui/dateMenu.js:704 msgid "Loading…" msgstr "लोड हो रहा है…" #: js/ui/dateMenu.js:714 msgid "Go Online for Weather Information" msgstr "मौसम की जानकारी के लिए ऑनलाइन जाएं" #: js/ui/dateMenu.js:716 msgid "Weather Information Unavailable" msgstr "मौसम संबंधी जानकारी उपलब्ध नहीं" #: js/ui/dateMenu.js:726 msgid "Weather" msgstr "मौसम" #: js/ui/dateMenu.js:728 msgid "Select Weather Location…" msgstr "मौसम स्थान चुनें…" #: js/ui/endSessionDialog.js:48 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "लॉग आउट %s" #: js/ui/endSessionDialog.js:49 msgctxt "title" msgid "Log Out" msgstr "लॉग आउट" #: js/ui/endSessionDialog.js:52 #, javascript-format msgid "%s will be logged out automatically in %d second" msgid_plural "%s will be logged out automatically in %d seconds" msgstr[0] "%s को %d सेकेंड में स्वतः लॉग आउट कर दिया जाएगा" msgstr[1] "%s को %d सेकेंडों में स्वतः लॉग आउट कर दिया जाएगा" #: js/ui/endSessionDialog.js:58 #, javascript-format msgid "You will be logged out automatically in %d second" msgid_plural "You will be logged out automatically in %d seconds" msgstr[0] "आपको %d सेकेंड में स्वतः लॉग आउट कर दिया जाएगा" msgstr[1] "आपको %d सेकेंडों में स्वतः लॉग आउट कर दिया जाएगा" #: js/ui/endSessionDialog.js:65 msgctxt "button" msgid "Log Out" msgstr "लॉग आउट" #: js/ui/endSessionDialog.js:71 js/ui/status/system.js:176 msgctxt "title" msgid "Power Off" msgstr "बंद करें" #: js/ui/endSessionDialog.js:72 msgctxt "title" msgid "Install Updates & Power Off" msgstr "अद्यतन संस्थापित करें और बंद करें" #: js/ui/endSessionDialog.js:75 #, javascript-format msgid "The system will power off automatically in %d second" msgid_plural "The system will power off automatically in %d seconds" msgstr[0] "यह सिस्टम %d सेकेंड में स्वतः बंद हो जाएगा" msgstr[1] "यह सिस्टम %d सेकेंडों में स्वतः बंद हो जाएगा" #: js/ui/endSessionDialog.js:79 js/ui/endSessionDialog.js:98 msgctxt "checkbox" msgid "Install pending software updates" msgstr "अपूर्ण सॉफ्टवेयर अद्यतन संस्थापित करें" #: js/ui/endSessionDialog.js:83 msgctxt "button" msgid "Power Off" msgstr "बंद करें" #: js/ui/endSessionDialog.js:90 msgctxt "title" msgid "Restart" msgstr "फिर आरंभ करें" #: js/ui/endSessionDialog.js:91 msgctxt "title" msgid "Install Updates & Restart" msgstr "अद्यतन संस्थापित करें और बंद करें" #: js/ui/endSessionDialog.js:94 #, javascript-format msgid "The system will restart automatically in %d second" msgid_plural "The system will restart automatically in %d seconds" msgstr[0] "यह सिस्टम %d सेकेंड में स्वतः फिर आरंभ हो जाएगा" msgstr[1] "यह सिस्टम %d सेकेंडों में स्वतः फिर आरंभ हो जाएगा" #: js/ui/endSessionDialog.js:102 msgctxt "button" msgid "Restart" msgstr "पुनः प्रारंभ करें" #: js/ui/endSessionDialog.js:110 msgctxt "title" msgid "Restart & Install Updates" msgstr "पुनः आरंभ करें और अद्यतन स्थापित करें" #: js/ui/endSessionDialog.js:113 #, javascript-format msgid "The system will automatically restart and install updates in %d second" msgid_plural "" "The system will automatically restart and install updates in %d seconds" msgstr[0] "यह सिस्टम %d सेकेंड में स्वतः फिर आरंभ हो जाएगा और अद्यतन संस्थापित करेगा" msgstr[1] "यह सिस्टम %d सेकेंड में स्वतः फिर आरंभ हो जाएगा और अद्यतन संस्थापित करेगा" #: js/ui/endSessionDialog.js:120 js/ui/endSessionDialog.js:141 msgctxt "button" msgid "Restart & Install" msgstr "फिर आरंभ करें और संस्थापित करें" #: js/ui/endSessionDialog.js:122 msgctxt "button" msgid "Install & Power Off" msgstr "संस्थापित करें और बंद करें" #: js/ui/endSessionDialog.js:123 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "अद्यतन संस्थापित होने के बाद बंद करें" #: js/ui/endSessionDialog.js:130 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "पुनः आरंभ करें और उन्नयन स्थापित करें" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:135 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "%s %s पुनः आरंभ करने के बाद स्थापित किया जाएगा। अपग्रेड संस्थापन में लंबा समय लग सकता है: " "सुनिश्चित करें कि आपने बैकअप ले लिया है और कंप्यूटर बिजली से जुङा हुआ है।" #: js/ui/endSessionDialog.js:284 msgid "Low battery power: please plug in before installing updates" msgstr "कम बैटरी पावर: अद्यतन संस्थापित करने से पहले कृपया प्लग इन करें" #: js/ui/endSessionDialog.js:293 msgid "Some applications are busy or have unsaved work" msgstr "कुछ अनुप्रयोग व्यस्त हैं या उनमें न सहेजा गया कार्य है" #: js/ui/endSessionDialog.js:298 msgid "Other users are logged in" msgstr "अन्य उपयोक्ता लॉगिन हैं" #: js/ui/endSessionDialog.js:468 msgctxt "button" msgid "Boot Options" msgstr "बूट विकल्प" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:673 #, javascript-format msgid "%s (remote)" msgstr "%s (दूरस्थ)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:676 #, javascript-format msgid "%s (console)" msgstr "%s (कंसोल)" #: js/ui/extensionDownloader.js:282 msgid "Install" msgstr "संस्थापित करें" #: js/ui/extensionDownloader.js:288 msgid "Install Extension" msgstr "एक्सटेंशन संस्थापित करें" #: js/ui/extensionDownloader.js:289 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "“%s” को extensions.gnome.org से डाउनलोड कर संस्थापित करें?" #: js/ui/extensionSystem.js:354 msgid "Extension Updates Available" msgstr "एक्सटेंशन अद्यतन उपलब्ध हैं" #: js/ui/extensionSystem.js:355 msgid "Extension updates are ready to be installed" msgstr "एक्सटेंशन अद्यतन संस्थापित करने के लिए तैयार हैं" #: js/ui/inhibitShortcutsDialog.js:70 msgid "Allow inhibiting shortcuts" msgstr "शॉर्टकट निषेध करने की अनुमति दें" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:73 #, javascript-format msgid "The app %s wants to inhibit shortcuts" msgstr "एप %s शॉर्टकट का निषेध करना चाहता है" #: js/ui/inhibitShortcutsDialog.js:74 msgid "An app wants to inhibit shortcuts" msgstr "एक एप शॉर्टकट का निषेध करना चाहता है" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:81 #, javascript-format msgid "You can restore shortcuts by pressing %s" msgstr "आप %s दबाकर शॉर्टकट पहले जैसे कर सकते हैं" #: js/ui/kbdA11yDialog.js:34 msgid "Slow Keys Turned On" msgstr "धीमी कुंजियां सक्षम है" #: js/ui/kbdA11yDialog.js:35 msgid "Slow Keys Turned Off" msgstr "धीमी कुंजियां अक्षम है" #: js/ui/kbdA11yDialog.js:36 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "आपने अभी Shift कुंजी को 8 सेकेंड के लिए दबाए रखा। यह 'धीमी कुंजियां' का शॉर्टकट है, जो " "आपके कीबोर्ड के काम करने के तरीके को प्रभावित करता है।" #: js/ui/kbdA11yDialog.js:42 msgid "Sticky Keys Turned On" msgstr "स्टिकी कीज़ सक्षम" #: js/ui/kbdA11yDialog.js:43 msgid "Sticky Keys Turned Off" msgstr "स्टिकी कीज़ अक्षम" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "आपने अभी-अभी Shift कुंजी को लगातार 5 बार दबाया है। यह 'स्टिकी कुंजियां' का शॉर्टकट है, " "जो आपके कुंजीपट के काम करने के तरीके को प्रभावित करता है।" #: js/ui/kbdA11yDialog.js:47 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" "आपने एक बार में दो कुंजियां दबाईं, या Shift कुंजी को लगातार 5 बार दबाया। यह 'स्टिकी " "कुंजियां' को बंद कर देता है, जो आपके कुंजीपट के काम करने के तरीके को प्रभावित करता है।" #: js/ui/kbdA11yDialog.js:57 msgid "Leave On" msgstr "चालू रखें" #: js/ui/kbdA11yDialog.js:57 msgid "Turn On" msgstr "चालू करें" #: js/ui/kbdA11yDialog.js:67 js/ui/status/network.js:457 msgid "Turn Off" msgstr "बन्द करें" #: js/ui/kbdA11yDialog.js:67 msgid "Leave Off" msgstr "बंद रखें" #: js/ui/keyboard.js:181 js/ui/status/keyboard.js:899 msgid "Keyboard Settings" msgstr "कुंजीपट सेंटिग्स" #: js/ui/lookingGlass.js:729 msgid "No extensions installed" msgstr "कोई एक्सटेंशन संस्थापित नहीं" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:790 #, javascript-format msgid "%s has not emitted any errors" msgstr "%s ने कोई त्रुटि नहीं दी है" #: js/ui/lookingGlass.js:796 msgid "Hide Errors" msgstr "त्रुटियां छुपाएं" #: js/ui/lookingGlass.js:800 js/ui/lookingGlass.js:877 msgid "Show Errors" msgstr "त्रुटियां दिखाएं" #: js/ui/lookingGlass.js:809 msgid "Active" msgstr "सक्रिय" #: js/ui/lookingGlass.js:812 msgid "Inactive" msgstr "निष्क्रिय" #: js/ui/lookingGlass.js:814 msgid "Error" msgstr "त्रुटि" #: js/ui/lookingGlass.js:816 msgid "Out of date" msgstr "अप्रचलित" #: js/ui/lookingGlass.js:818 msgid "Downloading" msgstr "डाउनलोड हो रहा है" #: js/ui/lookingGlass.js:820 msgid "Deactivating" msgstr "निष्क्रिय किया जा रहा है" #: js/ui/lookingGlass.js:822 msgid "Activating" msgstr "सक्रिय किया जा रहा है" #: js/ui/lookingGlass.js:855 msgid "View Source" msgstr "स्त्रोत दिखाएं" #: js/ui/lookingGlass.js:866 msgid "Web Page" msgstr "वेब पृष्ठ" #: js/ui/main.js:279 msgid "System was put in unsafe mode" msgstr "सिस्टम को असुरक्षित मोड में डाला गया था" #: js/ui/main.js:280 msgid "Apps now have unrestricted access" msgstr "ऐप्स के पास अब अप्रतिबंधित पहुंच है" #: js/ui/main.js:283 js/ui/overview.js:54 msgid "Undo" msgstr "पूर्ववत करें" #: js/ui/main.js:340 msgid "Logged in as a privileged user" msgstr "एक विशेषाधिकार प्राप्त उपयोक्ता के रूप में लॉग इन किया गया है" #: js/ui/main.js:341 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" "सुरक्षा कारणों से विशेषाधिकार प्राप्त उपयोक्ता के रूप में सत्र चलाने से बचना चाहिए। यदि संभव " "हो, तो आपको सामान्य उपयोक्ता के रूप में लॉग इन करना चाहिए।" #: js/ui/main.js:389 msgid "Screen Lock disabled" msgstr "स्क्रीन लॉक अक्षम" #: js/ui/main.js:390 msgid "Screen Locking requires the GNOME display manager" msgstr "स्क्रीन लॉकिंग के लिए गनोम डिस्प्ले प्रबंधक की आवश्यकता है" #. Translators: this is the string displayed in the header when a message #. source doesn't have a name #: js/ui/messageList.js:374 msgid "Unknown App" msgstr "अज्ञात ऐप" #: js/ui/messageTray.js:328 js/ui/messageTray.js:330 msgid "Notification sound" msgstr "अधिसूचना ध्वनि" #: js/ui/mpris.js:198 msgid "Unknown artist" msgstr "अज्ञात कलाकार" #: js/ui/mpris.js:208 msgid "Unknown title" msgstr "अज्ञात शीर्षक" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:330 msgid "Type to search" msgstr "खोजने के लिए टाइप करें" #: js/ui/overviewControls.js:394 msgid "Apps" msgstr "ऐप्स" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:67 msgid "Overview" msgstr "अवलोकन" #: js/ui/padOsd.js:100 msgid "New shortcut…" msgstr "नया शार्टकट…" #: js/ui/padOsd.js:153 msgid "App defined" msgstr "ऐप परिभाषित" #: js/ui/padOsd.js:154 msgid "Show on-screen help" msgstr "ऑन-स्क्रीन सहायता दिखाएं" #: js/ui/padOsd.js:155 msgid "Switch monitor" msgstr "मॉनिटर बदलें" #: js/ui/padOsd.js:156 msgid "Assign keystroke" msgstr "कीस्ट्रोक निर्दिष्ट करें" #: js/ui/padOsd.js:225 msgid "Done" msgstr "सम्पन्न" #: js/ui/padOsd.js:728 msgid "Edit…" msgstr "संपादित करें…" #: js/ui/padOsd.js:775 msgid "None" msgstr "कोई नहीं" #: js/ui/padOsd.js:846 msgid "Press a button to configure" msgstr "विन्यस्त करने के लिए एक बटन दबाएं" #: js/ui/padOsd.js:847 msgid "Press Esc to exit" msgstr "बाहर निकलने के लिए Esc दबाएं" #: js/ui/padOsd.js:850 msgid "Press any key to exit" msgstr "बाहर निकलने के लिए कोई भी कुंजी दबाएं" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:425 msgid "Activities" msgstr "गतिविधियां" #: js/ui/panel.js:506 msgctxt "System menu in the top bar" msgid "System" msgstr "सिस्टम" #: js/ui/panel.js:680 msgid "Top Bar" msgstr "शीर्ष पट्टी" #: js/ui/quickSettings.js:188 msgid "Open menu" msgstr "मेनू खोलें" #: js/ui/runDialog.js:63 msgid "Run a Command" msgstr "कोई कमांड चलाएं" #: js/ui/runDialog.js:78 msgid "Press ESC to close" msgstr "बंद करने के लिए ESC दबाएं" #: js/ui/runDialog.js:243 msgid "Restart is not available on Wayland" msgstr "पुनारंभ वेलैंड पर उपलब्ध नहीं है" #: js/ui/runDialog.js:248 msgid "Restarting…" msgstr "पुनारंभ किया जा रहा है…" #: js/ui/screenShield.js:235 msgid "GNOME needs to lock the screen" msgstr "गनोम को स्क्रीन लॉक करने की आवश्यकता है" #: js/ui/screenShield.js:276 js/ui/screenShield.js:669 msgid "Unable to lock" msgstr "ताला लगाने में अक्षम" #: js/ui/screenShield.js:277 js/ui/screenShield.js:670 msgid "Lock was blocked by an app" msgstr "लॉक को किसी एप द्वारा अवरोधित किया गया" #: js/ui/screenshot.js:1254 msgid "Selection" msgstr "चयन" #: js/ui/screenshot.js:1264 msgid "Area Selection" msgstr "क्षेत्र चयन" #: js/ui/screenshot.js:1269 msgid "Screen" msgstr "स्क्रीन" #: js/ui/screenshot.js:1279 msgid "Screen Selection" msgstr "स्क्रीन चयन" #: js/ui/screenshot.js:1284 msgid "Window" msgstr "विंडो" #: js/ui/screenshot.js:1294 msgid "Window Selection" msgstr "विंडो चयन" #. Translators: entry in the window right click menu. #: js/ui/screenshot.js:1319 js/ui/status/system.js:113 js/ui/windowMenu.js:30 msgid "Take Screenshot" msgstr "स्क्रीनशॉट लें" #: js/ui/screenshot.js:1335 msgid "Record Screen" msgstr "स्क्रीन रिकॉर्ड करें" #. Translators: since this string refers to an action, #. it needs to be phrased as a verb. #: js/ui/screenshot.js:1352 msgid "Capture" msgstr "कैप्चर" #: js/ui/screenshot.js:1374 msgid "Show Pointer" msgstr "सूचक दिखाएं" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1998 msgid "Screencasts" msgstr "स्क्रीनकॉस्ट" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast From 07-17-2013 10:00:46 PM" #: js/ui/screenshot.js:2003 #, no-c-format msgid "Screencast From %d %t" msgstr "%d %t से स्क्रीनकास्ट" #. Translators: notification title. #: js/ui/screenshot.js:2049 msgid "Screencast recorded" msgstr "स्क्रीनकॉस्ट रिकॉर्ड किया गया" #. Translators: notification title. #: js/ui/screenshot.js:2062 msgid "Screencast failed to start" msgstr "स्क्रीनकास्ट प्रारंभ होने में विफल रहा" #. Translators: notification title. #: js/ui/screenshot.js:2068 msgid "Screencast ended: Out of disk space" msgstr "स्क्रीनकास्ट समाप्त: डिस्क स्थान से बाहर" #. We can encourage user to try again on service crashes since the #. recorder will auto-blocklist the pipeline that crashed. #. Translators: notification title. #: js/ui/screenshot.js:2074 msgid "Screencast ended unexpectedly, please try again" msgstr "स्क्रीनकास्ट अप्रत्याशित रूप से समाप्त हुआ, कृपया पुनः प्रयास करें" #. Translators: notification title. #: js/ui/screenshot.js:2077 msgid "Screencast ended unexpectedly" msgstr "स्क्रीनकास्ट अप्रत्याशित रूप से समाप्त हुआ" #. Translators: notification source name. #: js/ui/screenshot.js:2087 js/ui/screenshot.js:2329 msgid "Screenshot" msgstr "स्क्रीनशॉट" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:2094 msgid "Click here to view the video." msgstr "वीडियो देखने के लिए यहाँ क्लिक करें।" #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:2102 js/ui/screenshot.js:2345 msgid "Show in Files" msgstr "फाइल्स में दिखाएं" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2289 #, javascript-format msgid "Screenshot From %s" msgstr "%s से स्क्रीनशॉट" #. Translators: notification title. #: js/ui/screenshot.js:2335 msgid "Screenshot captured" msgstr "स्क्रीनशॉट लिया गया" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2337 msgid "You can paste the image from the clipboard." msgstr "आप क्लिपबोर्ड से छवि चिपका सकते हैं।" #: js/ui/screenshot.js:2393 js/ui/screenshot.js:2557 msgid "Screenshot taken" msgstr "स्क्रीनशॉट लिया गया" #: js/ui/search.js:831 msgid "Searching…" msgstr "खोजा जा रहा है…" #: js/ui/search.js:833 msgid "No results" msgstr "कोई परिणाम नहीं" #: js/ui/search.js:964 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "%d और" msgstr[1] "%d और" #: js/ui/searchController.js:89 #: subprojects/extensions-app/data/ui/extensions-window.ui:73 msgid "Search" msgstr "खोजें" #: js/ui/shellEntry.js:23 msgid "Copy" msgstr "कॉपी करें" #: js/ui/shellEntry.js:28 msgid "Paste" msgstr "चिपकाएं" #: js/ui/shellEntry.js:80 msgid "Show Text" msgstr "पाठ दिखाएं" #: js/ui/shellEntry.js:82 msgid "Hide Text" msgstr "पाठ छिपाएं" #: js/ui/shellEntry.js:176 msgid "Caps lock is on" msgstr "कैप्स लॉक ऑन है" #: js/ui/shellMountOperation.js:288 msgid "Hidden Volume" msgstr "छिपी वॉल्यूम" #: js/ui/shellMountOperation.js:291 msgid "Windows System Volume" msgstr "विंडोज़ सिस्टम वॉल्यूम" #: js/ui/shellMountOperation.js:294 msgid "Uses Keyfiles" msgstr "कीफाइल्स का उपयोग करती है" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:302 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead" msgstr "" "कीफाइल्स का उपयोग करने वाले वॉल्यूम को खोलने के लिए, %s यूटिलिटी का उपयोग करें" #: js/ui/shellMountOperation.js:306 msgid "" "You need an external utility like Disks to unlock a volume that uses " "keyfiles" msgstr "" "कीफाइल्स का उपयोग करने वाले वॉल्यूम को अनलॉक करने के लिए आपको डिस्क जैसी बाहरी " "एप की आवश्यकता होगी" #: js/ui/shellMountOperation.js:314 msgid "PIM Number" msgstr "PIM नंबर" #: js/ui/shellMountOperation.js:373 msgid "Remember Password" msgstr "पासवर्ड याद रखें" #: js/ui/shellMountOperation.js:388 msgid "Unlock" msgstr "खोलें" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:402 #, javascript-format msgid "Open %s" msgstr "%s खोलें" #: js/ui/shellMountOperation.js:438 msgid "The PIM must be a number or empty" msgstr "PIM एक नंबर या खाली होना चाहिए" #: js/ui/status/accessibility.js:36 msgid "Accessibility" msgstr "अभिगम्यता" #: js/ui/status/accessibility.js:46 msgid "High Contrast" msgstr "उच्च विषमता" #: js/ui/status/accessibility.js:49 msgid "Zoom" msgstr "छोटा-बड़ा करें" #: js/ui/status/accessibility.js:56 msgid "Screen Reader" msgstr "स्क्रीन वाचक" #: js/ui/status/accessibility.js:60 msgid "Screen Keyboard" msgstr "स्क्रीन कुंजीपट" #: js/ui/status/accessibility.js:64 msgid "Visual Alerts" msgstr "दृश्यमान चेतावनियां" #: js/ui/status/accessibility.js:68 msgid "Sticky Keys" msgstr "स्टिकी कुंजियां" #: js/ui/status/accessibility.js:72 msgid "Slow Keys" msgstr "धीमी कुंजियां" #: js/ui/status/accessibility.js:76 msgid "Bounce Keys" msgstr "उछलती कुंजियां" #: js/ui/status/accessibility.js:80 msgid "Mouse Keys" msgstr "माउस कुंजियां" #: js/ui/status/accessibility.js:85 msgid "Accessibility Settings" msgstr "अभिगम्यता सेटिंग्स" #: js/ui/status/accessibility.js:142 msgid "Large Text" msgstr "बड़ा पाठ" #: js/ui/status/autoRotate.js:14 msgid "Auto Rotate" msgstr "स्वतः घुमाएं" #: js/ui/status/backgroundApps.js:156 msgctxt "title" msgid "Background Apps" msgstr "पृष्ठभूमि ऐप्स" #: js/ui/status/backgroundApps.js:171 msgid "Apps known to be running without a window" msgstr "ज्ञात ऐप्स बिना विंडो के चल रहे हैं" #: js/ui/status/backgroundApps.js:182 msgid "App Settings" msgstr "ऐप सेटिंग्स" #: js/ui/status/backgroundApps.js:239 msgid "No Background Apps" msgstr "कोई पृष्ठभूमि ऐप्स नहीं" #: js/ui/status/backgroundApps.js:241 #, javascript-format msgid "%d Background App" msgid_plural "%d Background Apps" msgstr[0] "%d पृष्ठभूमि ऐप" msgstr[1] "%d पृष्ठभूमि ऐप्स" #: js/ui/status/backlight.js:40 msgid "Keyboard Brightness" msgstr "कुंजीपटल चमक" #: js/ui/status/backlight.js:80 msgid "Off" msgstr "अक्षम" #: js/ui/status/backlight.js:81 msgid "Low" msgstr "कम" #: js/ui/status/backlight.js:82 msgid "High" msgstr "उच्च" #: js/ui/status/backlight.js:148 js/ui/status/keyboard.js:881 msgid "Keyboard" msgstr "कुंजीपट" #: js/ui/status/bluetooth.js:246 js/ui/status/network.js:362 msgid "Disconnect" msgstr "संबंध हटाएं" #: js/ui/status/bluetooth.js:263 js/ui/status/bluetooth.js:265 msgid "Bluetooth" msgstr "ब्लूटूथ" #: js/ui/status/bluetooth.js:288 js/ui/status/network.js:1902 msgid "Bluetooth Settings" msgstr "ब्लूटूथ सेटिंग्स" #: js/ui/status/bluetooth.js:335 msgid "No available or connected devices" msgstr "कोई उपलब्ध या संबंधित उपकरण नहीं" #: js/ui/status/bluetooth.js:336 msgid "Turn on Bluetooth to connect to devices" msgstr "उपकरणों से संबंध बनाने के लिए ब्लूटूथ चालू करें" #. Translators: This is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:390 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d संबंधित" msgstr[1] "%d संबंधित" #: js/ui/status/brightness.js:34 msgid "Brightness" msgstr "चमकीलापन" #: js/ui/status/darkMode.js:12 msgid "Dark Style" msgstr "गहरी शैली" #: js/ui/status/dwellClick.js:15 msgid "Single Click" msgstr "एकल क्लिक" #: js/ui/status/dwellClick.js:20 msgid "Double Click" msgstr "दोहरा क्लिक" #: js/ui/status/dwellClick.js:25 msgid "Drag" msgstr "खींचें" #: js/ui/status/dwellClick.js:30 msgid "Secondary Click" msgstr "द्वितीयक क्लिक" # Dwell click is clearly a foreign word and is a new concept, and no exact translation exists in Hindi, comment left by hemish04082005@gmail.com #: js/ui/status/dwellClick.js:39 msgid "Dwell Click" msgstr "ड्वैल क्लिक" #: js/ui/status/keyboard.js:898 msgid "Show Keyboard Layout" msgstr "कुंजीपट अभिन्यास दिखाएं" #: js/ui/status/location.js:339 msgid "Allow location access" msgstr "स्थान पता करने का अधिकार प्रदान करें" #. Translators: %s is an application name #: js/ui/status/location.js:341 #, javascript-format msgid "The app %s wants to access your location" msgstr "ऐप %s आपके स्थान पता करना चाहता है" #: js/ui/status/location.js:351 msgid "Location access can be changed at any time from the privacy settings" msgstr "गोपनीयता सेटिंग्स से किसी भी समय स्थान पता करने के अधिकारों को बदला जा सकता है" #: js/ui/status/location.js:359 msgid "Deny Access" msgstr "अधिकार देना अस्वीकारें" #: js/ui/status/location.js:364 msgid "Grant Access" msgstr "अधिकार प्रदान करें" #: js/ui/status/network.js:64 msgid "" msgstr "" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:356 #, javascript-format msgid "Disconnect %s" msgstr "%s को निकालें" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:358 #, javascript-format msgid "Connect to %s" msgstr "%s से जुड़ें" #: js/ui/status/network.js:1052 msgid "Secure" msgstr "सुरक्षित" #: js/ui/status/network.js:1052 msgid "Not secure" msgstr "सुरक्षित नहीं है" #: js/ui/status/network.js:1053 #, javascript-format msgid "Signal strength %s%%" msgstr "सिग्नल शक्ति %s%%" #. translators: The first placeholder is the network name, the second and indication whether it is secure, and the last the signal strength indication #: js/ui/status/network.js:1055 #, javascript-format msgid "%s, %s, %s" msgstr "%s, %s, %s" #. Translators: %s is a network identifier #: js/ui/status/network.js:1157 #, javascript-format msgid "%s Hotspot" msgstr "%s हॉटस्पॉट" #: js/ui/status/network.js:1428 #, javascript-format msgid "%d connected" msgid_plural "%d connected" msgstr[0] "%d जुड़ा" msgstr[1] "%d जुड़ा" #: js/ui/status/network.js:1526 js/ui/status/network.js:1542 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1527 msgid "VPN Settings" msgstr "VPN सेटिंग्स" #: js/ui/status/network.js:1787 msgid "Wi–Fi" msgstr "वाई-फाई" #: js/ui/status/network.js:1789 msgid "All Networks" msgstr "सभी नेटवर्क" #: js/ui/status/network.js:1886 msgid "Wired Connections" msgstr "तारयुक्त कनेक्शन" #: js/ui/status/network.js:1887 msgid "Wired Settings" msgstr "तारयुक्त सेटिंग्स" #: js/ui/status/network.js:1901 msgid "Bluetooth Tethers" msgstr "ब्लूटूथ टेथर्स" #. Translators: "Tether" from "Bluetooth Tether" #: js/ui/status/network.js:1908 msgid "Tether" msgstr "टीथर" #: js/ui/status/network.js:1921 msgid "Mobile Connections" msgstr "मोबाइल कनेक्शन" #: js/ui/status/network.js:1923 msgid "Mobile Broadband Settings" msgstr "मोबाइल ब्रॉडबैंड सेटिंग्स" #. Translators: "Mobile" from "Mobile Broadband" #: js/ui/status/network.js:1932 msgid "Mobile" msgstr "मोबाइल" #: js/ui/status/network.js:1966 msgid "Sign Into Wi–Fi Network" msgstr "वाई-फाई नेटवर्क में साइन इन करें" #: js/ui/status/network.js:2153 msgid "Connection failed" msgstr "कनेक्शन विफल" #: js/ui/status/network.js:2154 msgid "Activation of network connection failed" msgstr "नेटवर्क कनेक्शन को सक्रिय करना विफल" #: js/ui/status/nightLight.js:21 msgid "Night Light" msgstr "रात्रि प्रकाश" # I could not find an exact translation of 'performance' that would fit in this scenario #: js/ui/status/powerProfiles.js:21 msgctxt "Power profile" msgid "Performance" msgstr "प्रदर्शन" #: js/ui/status/powerProfiles.js:26 msgctxt "Power profile" msgid "Balanced" msgstr "संतुलित" #: js/ui/status/powerProfiles.js:31 msgctxt "Power profile" msgid "Power Saver" msgstr "ऊर्जा बचत" #: js/ui/status/powerProfiles.js:41 js/ui/status/powerProfiles.js:71 msgid "Power Mode" msgstr "ऊर्जा मोड" #: js/ui/status/powerProfiles.js:73 msgid "Power Settings" msgstr "पावर सेटिंग्स" #: js/ui/status/remoteAccess.js:76 msgid "Stop Screencast" msgstr "स्क्रीनकास्ट रोकें" #: js/ui/status/remoteAccess.js:146 msgid "Stop Screen Sharing" msgstr "स्क्रीन शेयरिंग रोकें" #: js/ui/status/rfkill.js:101 msgid "Airplane Mode" msgstr "विमान मोड" #: js/ui/status/system.js:170 msgid "Power Off Menu" msgstr "पावर ऑफ मेनू" #: js/ui/status/system.js:178 msgid "Suspend" msgstr "निलंबित करें" #: js/ui/status/system.js:183 msgid "Restart…" msgstr "फिर आरंभ करें…" #: js/ui/status/system.js:188 msgid "Power Off…" msgstr "बंद करें…" #: js/ui/status/system.js:195 #: subprojects/extensions-app/data/ui/extensions-window.ui:124 msgid "Log Out…" msgstr "लॉग आउट…" #: js/ui/status/system.js:200 msgid "Switch User…" msgstr "उपयोक्ता बदलें…" #: js/ui/status/system.js:244 msgctxt "action" msgid "Lock Screen" msgstr "स्क्रीन पर ताला लगाएं" #: js/ui/status/thunderbolt.js:310 msgid "Unknown Thunderbolt device" msgstr "अज्ञात थंडरबोल्ट उपकरण" #: js/ui/status/thunderbolt.js:311 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" "आपके अनुपस्थिति के दौरान एक नया उपकरण पाया गया। इसका उपयोग शुरू करने के लिए कृपया " "डिस्कनेक्ट करें और पुनः जुड़ें।" #: js/ui/status/thunderbolt.js:314 msgid "Unauthorized Thunderbolt device" msgstr "अनधिकृत थंडरबोल्ट उपकरण" #: js/ui/status/thunderbolt.js:315 msgid "" "New device has been detected and needs to be authorized by an administrator" msgstr "नया उपकरण पाया गया है और इसे व्यवस्थापक द्वारा अधिकृत करने की आवश्यकता है" #: js/ui/status/thunderbolt.js:321 msgid "Thunderbolt authorization error" msgstr "थंडरबोल्ट प्राधिकरण त्रुटि" #: js/ui/status/thunderbolt.js:322 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "थंडरबोल्ट उपकरण को प्रमाणित नहीं किया जा सका: %s" #: js/ui/status/volume.js:220 msgid "Volume changed" msgstr "आवाज़ बदली गई" #: js/ui/status/volume.js:233 msgid "Unmute" msgstr "अमूक" #: js/ui/status/volume.js:233 msgid "Mute" msgstr "मूक" #: js/ui/status/volume.js:288 msgid "Volume" msgstr "आवाज़" #: js/ui/status/volume.js:304 msgid "Sound Output" msgstr "ध्वनि आउटपुट" #: js/ui/status/volume.js:376 msgid "Sound Input" msgstr "ध्वनि इनपुट" # I could not find a Hindi word which would exactly match this secnario: Comment left by hemish04082005@gmail.com #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:22 msgid "Mirror" msgstr "मिरर" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:31 msgid "Join Displays" msgstr "डिस्प्ले जोड़ें" #. Translators: this is for using only external displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:41 msgid "External Only" msgstr "केवल बाहरी" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:49 msgid "Built-in Only" msgstr "केवल अंतर्निर्मित" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:380 msgid "%A %B %-d" msgstr "%A %-d %B" #: js/ui/unlockDialog.js:386 msgid "Swipe up to unlock" msgstr "खोलने के लिए ऊपर स्वाइप करें" #: js/ui/unlockDialog.js:387 msgid "Click or press a key to unlock" msgstr "खोलने के लिए एक कुंजी दबाएं या क्लिक करें" #: js/ui/unlockDialog.js:570 msgid "Unlock Window" msgstr "विंडो खोलें" #: js/ui/unlockDialog.js:579 msgid "Log in as another user" msgstr "अन्य उपयोक्ता के रूप में लॉगिन करें" #: js/ui/welcomeDialog.js:49 #, javascript-format msgid "GNOME %s" msgstr "गनोम %s" #: js/ui/welcomeDialog.js:53 #, javascript-format msgid "Welcome to %s" msgstr "%s में आपका स्वागत है" # GNOME Tour has been translated as 'दौरा' in its translation, hence the same name here. #: js/ui/welcomeDialog.js:54 msgid "If you want to learn your way around, check out the tour" msgstr "यदि आप सीखना चाहते हैं, तो 'दौरा' देखें" #: js/ui/welcomeDialog.js:63 msgid "Skip" msgstr "छोड़ें" #: js/ui/welcomeDialog.js:68 msgid "Take Tour" msgstr "दौरा करें" #: js/ui/windowAttentionHandler.js:20 #, javascript-format msgid "“%s” is ready" msgstr "“%s” तैयार है" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:70 msgid "Keep these display settings?" msgstr "इन प्रदर्शन सेटिंग को रखें?" #: js/ui/windowManager.js:80 msgid "Revert Settings" msgstr "सेटिंग्स पूर्ववत करें" #: js/ui/windowManager.js:85 msgid "Keep Changes" msgstr "परिवर्तन बनाए रखें" #: js/ui/windowManager.js:105 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "सेटिंग बदलाव %d सेकेंड में पहले जैसा कर दिया जाएगा" msgstr[1] "सेटिंग बदलाव %d सेकेंडों में पहले जैसा कर दिया जाएगा" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:502 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:42 msgid "Hide" msgstr "छुपाएं" #: js/ui/windowMenu.js:49 msgid "Restore" msgstr "पुनर्स्थापित करें" #: js/ui/windowMenu.js:53 msgid "Maximize" msgstr "अधिकतम करें" #: js/ui/windowMenu.js:60 msgid "Move" msgstr "स्थानान्तर" #: js/ui/windowMenu.js:80 msgid "Resize" msgstr "आकार बदलें" #: js/ui/windowMenu.js:100 msgid "Always on Top" msgstr "हमेशा ऊपर" #: js/ui/windowMenu.js:119 msgid "Always on Visible Workspace" msgstr "हमेशा दृश्यमान कार्यस्थान पर" #: js/ui/windowMenu.js:133 msgid "Move to Workspace Left" msgstr "बाएं कार्यस्थान में ले जाएं" #: js/ui/windowMenu.js:139 msgid "Move to Workspace Right" msgstr "दाएं कार्यस्थान में ले जाएं" #: js/ui/windowMenu.js:145 msgid "Move to Workspace Up" msgstr "ऊपरी कार्यस्थान में ले जाएं" #: js/ui/windowMenu.js:151 msgid "Move to Workspace Down" msgstr "निचले कार्यस्थान में ले जाएं" #: js/ui/windowMenu.js:169 msgid "Move to Monitor Up" msgstr "ऊपरी मॉनीटर में ले जाएं" #: js/ui/windowMenu.js:178 msgid "Move to Monitor Down" msgstr "निचले मॉनीटर में ले जाएं" #: js/ui/windowMenu.js:187 msgid "Move to Monitor Left" msgstr "बाएं मॉनीटर में ले जाएं" #: js/ui/windowMenu.js:196 msgid "Move to Monitor Right" msgstr "दाएं मॉनीटर में ले जाएं" #: js/ui/windowMenu.js:204 msgid "Close" msgstr "बंद करें" #: src/main.c:529 subprojects/extensions-tool/src/main.c:336 msgid "Print version" msgstr "संस्करण मुद्रित करें" #: src/main.c:535 msgid "Mode used by GDM for login screen" msgstr "लॉगिन स्क्रीन के लिए GDM द्वारा प्रयुक्त अवस्था" #: src/main.c:541 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "विशेष अवस्था का उपयोग करें, उदाहरण के लिए लॉगिन स्क्रीन के लिए “gdm”" #: src/main.c:547 msgid "List possible modes" msgstr "संभव अवस्थाएं सूचीबद्ध करें" #: src/main.c:553 msgid "Force animations to be enabled" msgstr "एनिमेशन को सक्षम होने के लिए बाध्य करें" #: src/shell-app.c:252 msgctxt "program" msgid "Unknown" msgstr "अज्ञात" #: src/shell-app.c:503 #, c-format msgid "Failed to launch “%s”" msgstr "“%s” शुरू करने में विफल" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match" msgstr "पासवर्ड मेल नहीं खाते" #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "पासवर्ड खाली नहीं हो सकता" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "सत्यापन संवाद को उपयोक्ता के द्वारा खारिज़ कर दिया गया" #: src/st/st-icon-theme.c:1865 #, c-format msgid "Icon '%s' not present in theme %s" msgstr "चिह्न '%s' थीम %s में मौजूद नहीं है" #: src/st/st-icon-theme.c:3454 src/st/st-icon-theme.c:3757 msgid "Failed to load icon" msgstr "आइकन लोड करने में विफल" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 msgid "Manage your GNOME Extensions" msgstr "अपने गनोम एक्सटेंशन प्रबंधित करें" #. developer_name tag deprecated with Appstream 1.0 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:19 msgid "The GNOME Project" msgstr "गनोम परियोजना" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:51 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" "'गनोम एक्सटेंशन्स' एक्सटेंशन को अद्यतन करने, एक्सटेंशन वरीयताओं को विन्यस्त करने और अवांछित " "एक्सटेंशन को हटाने या अक्षम करने का काम संभालता है।" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:63 msgid "Main Window" msgstr "मुख्य विंडो" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:67 msgid "Available Updates" msgstr "उपलब्ध अद्यतन" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:71 msgid "Search View" msgstr "खोज दृश्य" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "गनोम शैल एक्सटेंशन विन्यस्त करें" #: subprojects/extensions-app/js/extensionManager.js:237 #, javascript-format msgid "" "The installed version of this extension (%s) is incompatible with the " "current version of GNOME (%s). The extension has been disabled." msgstr "" "इस एक्सटेंशन (%s) का स्थापित संस्करण गनोम (%s) के वर्तमान संस्करण के साथ असंगत है। एक्सटेंशन " "को अक्षम कर दिया गया है।" #: subprojects/extensions-app/js/extensionManager.js:238 #, javascript-format msgid "" "The installed version of this extension is incompatible with the current " "version of GNOME (%s). The extension has been disabled." msgstr "" "इस एक्सटेंशन का स्थापित संस्करण गनोम (%s) के वर्तमान संस्करण के साथ असंगत है। एक्सटेंशन अक्षम " "कर दिया गया है।" #: subprojects/extensions-app/js/extensionManager.js:242 msgid "" "An error has occurred in this extension. This could cause issues elsewhere " "in the system. It is recommended to turn the extension off until the error " "is resolved." msgstr "" "इस एक्सटेंशन में एक त्रुटि उत्पन्न हुई है। इससे सिस्टम में अन्यत्र समस्याएं उत्पन्न हो सकती हैं। " "त्रुटि का समाधान होने तक एक्सटेंशन को बंद रखने की अनुशंसा की जाती है।" #. translators: Details for an extension error #: subprojects/extensions-app/js/extensionManager.js:248 msgid "Error details:" msgstr "त्रुटि विवरण:" #: subprojects/extensions-app/js/extensionRow.js:82 #, javascript-format msgid "Version %s" msgstr "संस्करण %s" #: subprojects/extensions-app/js/extensionsWindow.js:113 #, javascript-format msgid "Remove “%s”?" msgstr "“%s” को हटाएं?" #: subprojects/extensions-app/js/extensionsWindow.js:114 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "" "यदि आप एक्सटेंशन को हटाते हैं, तो आपको इसे डाउनलोड करने के लिए वापस लौटना होगा यदि आप " "इसे फिर से सक्षम करना चाहते हैं" #: subprojects/extensions-app/js/extensionsWindow.js:117 msgid "_Cancel" msgstr "रद्द करें (_C)" #: subprojects/extensions-app/js/extensionsWindow.js:118 msgid "_Remove" msgstr "हटाएं (_R)" #: subprojects/extensions-app/js/extensionsWindow.js:158 msgid "translator-credits" msgstr "" "Hemish (हेमिश) \n" "Scrambled777 " #: subprojects/extensions-app/js/extensionsWindow.js:203 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "अगले लॉगिन पर %d एक्सटेंशन अद्यतित किया जाएगा।" msgstr[1] "अगले लॉगिन पर %d एक्सटेंशन्स अद्यतित किए जाएंगे।" #: subprojects/extensions-app/data/ui/extension-row.ui:22 msgid "Error Details" msgstr "त्रुटि विवरण" #: subprojects/extensions-app/data/ui/extension-row.ui:62 msgid "Updates Details" msgstr "अद्यतन विवरण" #: subprojects/extensions-app/data/ui/extension-row.ui:72 msgid "" "A new version of this extension is ready and will be loaded on next login." msgstr "इस एक्सटेंशन का नया संस्करण तैयार है और अगले लॉगिन पर लोड किया जाएगा।" #: subprojects/extensions-app/data/ui/extension-row.ui:104 msgid "Extension Details" msgstr "एक्सटेंशन विवरण" #: subprojects/extensions-app/data/ui/extension-row.ui:192 msgid "_Website" msgstr "वेबसाइट (_W)" #: subprojects/extensions-app/data/ui/extension-row.ui:219 msgid "_Settings" msgstr "सेटिंग्स (_S)" #: subprojects/extensions-app/data/ui/extension-row.ui:246 msgid "_Remove…" msgstr "हटाएं (_R)…" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Keyboard Shortcuts" msgstr "कुंजीपट शॉर्टकट" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "'एक्सटेंशन्स' का परिचय" #: subprojects/extensions-app/data/ui/extensions-window.ui:64 msgid "Main Menu" msgstr "मुख्य मेनू" #: subprojects/extensions-app/data/ui/extensions-window.ui:106 msgid "Search extensions" msgstr "एक्सटेंशन खोजें" #: subprojects/extensions-app/data/ui/extensions-window.ui:134 msgid "_Extensions" msgstr "एक्सटेंशन (_E)" #: subprojects/extensions-app/data/ui/extensions-window.ui:139 msgid "More Information" msgstr "अधिक जानकारी" #: subprojects/extensions-app/data/ui/extensions-window.ui:151 msgid "" "Extensions can cause performance and stability issues. It is recommended to " "disable all extensions if you experience problems with your system." msgstr "" "एक्सटेंशन के कारण प्रदर्शन और स्थिरता संबंधी समस्याएं हो सकती हैं। यदि आप अपने सिस्टम में " "समस्याओं का अनुभव करते हैं तो सभी एक्सटेंशन को अक्षम करने की अनुशंसा की जाती है।" #: subprojects/extensions-app/data/ui/extensions-window.ui:178 msgid "User Extensions" msgstr "उपयोक्ता एक्सटेंशन" #: subprojects/extensions-app/data/ui/extensions-window.ui:198 msgid "System Extensions" msgstr "सिस्टम एक्सटेंशन" #: subprojects/extensions-app/data/ui/extensions-window.ui:233 msgid "Search Results" msgstr "खोज के परिणाम" #: subprojects/extensions-app/data/ui/extensions-window.ui:252 msgid "No Results Found" msgstr "कोई परिणाम नहीं मिला" #: subprojects/extensions-app/data/ui/extensions-window.ui:253 msgid "Try a different search" msgstr "भिन्न खोज का प्रयास करें" #: subprojects/extensions-app/data/ui/extensions-window.ui:264 msgid "No Installed Extensions" msgstr "कोई स्थापित एक्सटेंशन नहीं" #: subprojects/extensions-app/data/ui/extensions-window.ui:265 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" "एक्सटेंशन खोजने और जोड़ने के लिए, extensions.gnome.org पर जाएं।" #: subprojects/extensions-app/data/ui/extensions-window.ui:276 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" "हमें बहुत खेद है, लेकिन संस्थापित एक्सटेंशन की सूची प्राप्त करना संभव नहीं है। सुनिश्चित करें कि " "आप गनोम में लॉग इन हैं और पुन: प्रयास करें।" #: subprojects/extensions-app/data/ui/help-overlay.ui:9 msgctxt "shortcut window" msgid "General" msgstr "सामान्य" #: subprojects/extensions-app/data/ui/help-overlay.ui:12 msgctxt "shortcut window" msgid "Open Menu" msgstr "मेनू खोलें" #: subprojects/extensions-app/data/ui/help-overlay.ui:18 msgctxt "shortcut window" msgid "Toggle Search" msgstr "खोज टॉगल करें" #: subprojects/extensions-app/data/ui/help-overlay.ui:24 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "शॉर्टकट दिखाएं" #: subprojects/extensions-app/data/ui/help-overlay.ui:30 msgctxt "shortcut window" msgid "Quit" msgstr "बंद करें" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:284 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "नया एक्सटेंशन %s में सफलतापूर्वक बनाया गया।\n" #: subprojects/extensions-tool/src/command-create.c:376 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" "नाम बहुत छोटा (आदर्श रूप से वर्णनात्मक) स्ट्रिंग होना चाहिए।\n" "उदाहरण हैं: %s" #: subprojects/extensions-tool/src/command-create.c:382 #: subprojects/extensions-tool/src/main.c:243 msgid "Name" msgstr "नाम" #: subprojects/extensions-tool/src/command-create.c:396 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" "विवरण एक वाक्य की व्याख्या है कि आपका एक्सटेंशन क्या करता है।\n" "उदाहरण हैं: %s" #: subprojects/extensions-tool/src/command-create.c:402 #: subprojects/extensions-tool/src/main.c:246 msgid "Description" msgstr "विवरण" #: subprojects/extensions-tool/src/command-create.c:416 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" "UUID आपके एक्सटेंशन के लिए विश्व स्तर पर अद्वितीय पहचानकर्ता है।\n" "यह एक ईमेल पते के प्रारूप में होना चाहिए (clicktofocus@janedoe.example.com)\n" #: subprojects/extensions-tool/src/command-create.c:443 msgid "Choose one of the available templates:\n" msgstr "उपलब्ध खाके में से एक चुनें:\n" #: subprojects/extensions-tool/src/command-create.c:457 msgid "Template" msgstr "खाका" #: subprojects/extensions-tool/src/command-create.c:515 msgid "The unique identifier of the new extension" msgstr "नए एक्सटेंशन का विशिष्ट पहचानकर्ता" #: subprojects/extensions-tool/src/command-create.c:518 msgid "NAME" msgstr "नाम" #: subprojects/extensions-tool/src/command-create.c:519 msgid "The user-visible name of the new extension" msgstr "नए एक्सटेंशन का उपयोक्ता-दृश्यमान नाम" #: subprojects/extensions-tool/src/command-create.c:521 msgid "DESCRIPTION" msgstr "विवरण" #: subprojects/extensions-tool/src/command-create.c:523 msgid "A short description of what the extension does" msgstr "एक्सटेंशन क्या करता है इसका संक्षिप्त विवरण" #: subprojects/extensions-tool/src/command-create.c:525 #: subprojects/extensions-tool/src/command-pack.c:455 msgid "DOMAIN" msgstr "डोमेन" #: subprojects/extensions-tool/src/command-create.c:527 msgid "The gettext domain used by the extension" msgstr "एक्सटेंशन द्वारा प्रयुक्त gettext डोमेन" #: subprojects/extensions-tool/src/command-create.c:529 #: subprojects/extensions-tool/src/command-pack.c:448 msgid "SCHEMA" msgstr "स्कीमा" #: subprojects/extensions-tool/src/command-create.c:531 msgid "The GSettings schema used by the extension" msgstr "एक्सटेंशन द्वारा प्रयुक्त GSettings स्कीमा" #: subprojects/extensions-tool/src/command-create.c:534 msgid "TEMPLATE" msgstr "खाका" #: subprojects/extensions-tool/src/command-create.c:535 msgid "The template to use for the new extension" msgstr "नए एक्सटेंशन के लिए उपयोग किया जाने वाला खाका" #: subprojects/extensions-tool/src/command-create.c:538 msgid "Include prefs.js template" msgstr "prefs.js खाका शामिल करें" #: subprojects/extensions-tool/src/command-create.c:544 msgid "Enter extension information interactively" msgstr "एक्सटेंशन जानकारी अंतर्क्रियात्मक ढंग से दर्ज करें" #: subprojects/extensions-tool/src/command-create.c:552 msgid "Create a new extension" msgstr "एक नया एक्सटेंशन बनाएं" #: subprojects/extensions-tool/src/command-create.c:570 #: subprojects/extensions-tool/src/command-list.c:190 msgid "Unknown arguments" msgstr "अज्ञात तर्क" #: subprojects/extensions-tool/src/command-create.c:595 msgid "UUID, name and description are required" msgstr "UUID, नाम और विवरण आवश्यक हैं" #: subprojects/extensions-tool/src/command-disable.c:62 #: subprojects/extensions-tool/src/command-enable.c:62 #, c-format msgid "Extension “%s” does not exist\n" msgstr "एक्‍सटेंशन “%s” मौजूद नहीं है\n" #: subprojects/extensions-tool/src/command-disable.c:98 msgid "Disable an extension" msgstr "एक एक्सटेंशन अक्षम करें" #: subprojects/extensions-tool/src/command-disable.c:116 #: subprojects/extensions-tool/src/command-enable.c:116 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "कोई UUID नहीं दी गई" #: subprojects/extensions-tool/src/command-disable.c:121 #: subprojects/extensions-tool/src/command-enable.c:121 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "एक से अधिक UUID दी गई" #: subprojects/extensions-tool/src/command-enable.c:98 msgid "Enable an extension" msgstr "एक एक्सटेंशन सक्षम करें" #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:66 #: subprojects/extensions-tool/src/main.c:150 msgid "Failed to connect to GNOME Shell\n" msgstr "गनोम शैल से जुड़ने में विफल\n" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:159 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "एक्सटेंशन “%s” मौजूद नहीं है\n" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "एक्स्टेंशन्स की जानकारी दिखाएं" #: subprojects/extensions-tool/src/command-install.c:190 msgid "Overwrite an existing extension" msgstr "किसी मौजूदा एक्सटेंशन को अधिलेखित करें" #: subprojects/extensions-tool/src/command-install.c:192 msgid "EXTENSION_BUNDLE" msgstr "एक्सटेंशन_बंडल" #: subprojects/extensions-tool/src/command-install.c:201 msgid "Install an extension bundle" msgstr "एक एक्सटेंशन बंडल संस्थापित करें" #: subprojects/extensions-tool/src/command-install.c:219 msgid "No extension bundle specified" msgstr "कोई एक्सटेंशन बंडल निर्दिष्ट नहीं है" #: subprojects/extensions-tool/src/command-install.c:225 msgid "More than one extension bundle specified" msgstr "एक से अधिक एक्सटेंशन बंडल निर्दिष्ट हैं" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show user-installed extensions" msgstr "उपयोक्ता द्वारा संस्थापित एक्सटेंशन्स दिखाएं" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show system-installed extensions" msgstr "सिस्टम-स्थापित एक्सटेंशन दिखाएं" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Show enabled extensions" msgstr "सक्षम एक्सटेंशन दिखाएं" #: subprojects/extensions-tool/src/command-list.c:149 msgid "Show disabled extensions" msgstr "अक्षम एक्सटेंशन दिखाएं" #: subprojects/extensions-tool/src/command-list.c:152 msgid "Show extensions in active state" msgstr "सक्रिय क्सटेंशन दिखाएं" #: subprojects/extensions-tool/src/command-list.c:155 msgid "Show extensions in inactive state" msgstr "निष्क्रिय अएक्सटेंशन दिखाएं" #: subprojects/extensions-tool/src/command-list.c:158 msgid "Show extensions with preferences" msgstr "प्राथमिकताओं के साथ एक्सटेंशन दिखाएं" #: subprojects/extensions-tool/src/command-list.c:161 msgid "Show extensions with updates" msgstr "अद्यतनों के साथ एक्सटेंशन दिखाएं" #: subprojects/extensions-tool/src/command-list.c:164 msgid "Print extension details" msgstr "एक्सटेंशन विवरण मुद्रित करें" #: subprojects/extensions-tool/src/command-list.c:172 msgid "List installed extensions" msgstr "स्थापित एक्सटेंशन सूचीबद्ध करें" #: subprojects/extensions-tool/src/command-pack.c:444 msgid "FILE" msgstr "फाइल" #: subprojects/extensions-tool/src/command-pack.c:445 msgid "Additional source to include in the bundle" msgstr "बंडल में शामिल करने के लिए अतिरिक्त स्रोत" #: subprojects/extensions-tool/src/command-pack.c:449 msgid "A GSettings schema that should be included" msgstr "एक GSettings स्कीमा जिसे शामिल किया जाना चाहिए" #: subprojects/extensions-tool/src/command-pack.c:451 #: subprojects/extensions-tool/src/command-pack.c:462 msgid "DIRECTORY" msgstr "निर्देशिका" #: subprojects/extensions-tool/src/command-pack.c:453 msgid "The directory where translations are found" msgstr "वह निर्देशिका जहां अनुवाद पाए जाते हैं" #: subprojects/extensions-tool/src/command-pack.c:457 msgid "The gettext domain to use for translations" msgstr "अनुवाद के लिए उपयोग करने के लिए gettext डोमेन" #: subprojects/extensions-tool/src/command-pack.c:460 msgid "Overwrite an existing pack" msgstr "किसी मौजूदा पैक को अधिलेखित करें" #: subprojects/extensions-tool/src/command-pack.c:464 msgid "The directory where the pack should be created" msgstr "वह निर्देशिका जहां पैक बनाया जाना चाहिए" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "SOURCE_DIRECTORY" msgstr "स्रोत_निर्देशिका" #: subprojects/extensions-tool/src/command-pack.c:475 msgid "Create an extension bundle" msgstr "एक्सटेंशन बंडल बनाएं" #: subprojects/extensions-tool/src/command-pack.c:495 msgid "More than one source directory specified" msgstr "एक से अधिक स्रोत डॉयरेक्ट्री प्रदान की गईं" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "एक्‍सटेंशन “%s” में कोई वरीयताएं नहीं हैं।\n" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "एक्सटेंशन “%s” के लिए वरीयताएं खोलने में विफल: %s\n" #: subprojects/extensions-tool/src/command-prefs.c:87 msgid "Opens extension preferences" msgstr "एक्सटेंशन वरीयताएं खोलें" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "एक एक्सटेंशन रीसेट करें" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "अन्तर्निर्मित एक्सटेंशन नहीं हटाईं जा सकतीं\n" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "“%s” को हटाने में विफल\n" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "एक एक्सटेंशन हटाएं" #: subprojects/extensions-tool/src/main.c:76 msgid "Do not print error messages" msgstr "त्रुटि संदेश न दिखाएं" #: subprojects/extensions-tool/src/main.c:249 msgid "Path" msgstr "पथ" #: subprojects/extensions-tool/src/main.c:252 msgid "URL" msgstr "URL" #: subprojects/extensions-tool/src/main.c:255 msgid "Original author" msgstr "मूल लेखक" #: subprojects/extensions-tool/src/main.c:261 #: subprojects/extensions-tool/src/main.c:263 #: subprojects/extensions-tool/src/main.c:265 msgid "Version" msgstr "संस्करण" #: subprojects/extensions-tool/src/main.c:268 msgid "Enabled" msgstr "सक्षम" #: subprojects/extensions-tool/src/main.c:268 msgid "Yes" msgstr "हाँ" #: subprojects/extensions-tool/src/main.c:268 msgid "No" msgstr "नहीं" #: subprojects/extensions-tool/src/main.c:271 msgid "State" msgstr "स्थिति" #: subprojects/extensions-tool/src/main.c:309 msgid "“version” takes no arguments" msgstr "“version” कोई तर्क नहीं लेता है" #: subprojects/extensions-tool/src/main.c:311 #: subprojects/extensions-tool/src/main.c:331 msgid "Usage:" msgstr "प्रयोग:" #: subprojects/extensions-tool/src/main.c:314 msgid "Print version information and exit." msgstr "संस्करण जानकारी मुद्रित करें और निकास करें।" #: subprojects/extensions-tool/src/main.c:329 #: subprojects/extensions-tool/src/main.c:332 msgid "COMMAND" msgstr "कमांड" #: subprojects/extensions-tool/src/main.c:332 msgid "[ARGS…]" msgstr "[तर्क…]" #: subprojects/extensions-tool/src/main.c:334 msgid "Commands:" msgstr "कमांड:" #: subprojects/extensions-tool/src/main.c:335 msgid "Print help" msgstr "सहायता छापें" #: subprojects/extensions-tool/src/main.c:337 msgid "Enable extension" msgstr "एक्सटेंशन सक्षम करें" #: subprojects/extensions-tool/src/main.c:338 msgid "Disable extension" msgstr "एक्सटेंशन अक्षम करें" #: subprojects/extensions-tool/src/main.c:339 msgid "Reset extension" msgstr "एक्सटेंशन रीसेट करें" #: subprojects/extensions-tool/src/main.c:340 msgid "Uninstall extension" msgstr "एक्सटेंशन को अस्थापित करें" #: subprojects/extensions-tool/src/main.c:341 msgid "List extensions" msgstr "एक्सटेंशन सूचीबद्ध करें" #: subprojects/extensions-tool/src/main.c:342 #: subprojects/extensions-tool/src/main.c:343 msgid "Show extension info" msgstr "एक्सटेंशन की जानकारी दिखाएं" #: subprojects/extensions-tool/src/main.c:344 msgid "Open extension preferences" msgstr "एक्सटेंशन वरीयताएं खोलें" #: subprojects/extensions-tool/src/main.c:345 msgid "Create extension" msgstr "एक्सटेंशन बनाएं" #: subprojects/extensions-tool/src/main.c:346 msgid "Package extension" msgstr "पैकेज एक्सटेंशन" #: subprojects/extensions-tool/src/main.c:347 msgid "Install extension bundle" msgstr "एक्सटेंशन बंडल संस्थापित करें" #: subprojects/extensions-tool/src/main.c:349 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "विस्तृत सहायता प्राप्त करने के लिए “%s” का उपयोग करें।\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "सादा" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "एक खाली एक्सटेंशन" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "सूचक" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "शीर्ष बार में एक आइकन जोड़ें" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:4 msgid "Quick Settings Item" msgstr "त्वरित सेटिंग्स वस्तु" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:5 msgid "Add an item to quick settings" msgstr "त्वरित सेटिंग में कोई वस्तु जोड़ें" #. translators: #. * The device has been disabled #: subprojects/gvc/gvc-mixer-control.c:1872 msgid "Disabled" msgstr "अक्षम" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1879 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u आउटपुट" msgstr[1] "%u आउटपुट" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1889 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u इनपुट" msgstr[1] "%u इनपुट" #: subprojects/gvc/gvc-mixer-control.c:2872 msgid "System Sounds" msgstr "सिस्टम ध्वनियां" 07070100000239000081A40000000000000000000000016712993F00017A45000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/hr.po# Croatian translation for gnome-shell. # Copyright (C) 2016 gnome-shell's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-shell package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: gnome-shell master\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" "POT-Creation-Date: 2022-09-14 22:12+0000\n" "PO-Revision-Date: 2022-09-15 00:29+0200\n" "Last-Translator: gogo \n" "Language-Team: Croatian \n" "Language: hr\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: Poedit 3.1.1\n" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "Pokretači" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate favorite application 1" msgstr "Aktiviraj omiljenu aplikaciju 1" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate favorite application 2" msgstr "Aktiviraj omiljenu aplikaciju 2" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate favorite application 3" msgstr "Aktiviraj omiljenu aplikaciju 3" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate favorite application 4" msgstr "Aktiviraj omiljenu aplikaciju 4" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate favorite application 5" msgstr "Aktiviraj omiljenu aplikaciju 5" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate favorite application 6" msgstr "Aktiviraj omiljenu aplikaciju 6" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate favorite application 7" msgstr "Aktiviraj omiljenu aplikaciju 7" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate favorite application 8" msgstr "Aktiviraj omiljenu aplikaciju 8" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate favorite application 9" msgstr "Aktiviraj omiljenu aplikaciju 9" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2079 msgid "Screenshots" msgstr "Slike zaslona" #: data/50-gnome-shell-screenshots.xml:9 #: data/org.gnome.shell.gschema.xml.in:244 msgid "Take a screenshot interactively" msgstr "Uslikaj zaslon interaktivno" #: data/50-gnome-shell-screenshots.xml:12 #: data/org.gnome.shell.gschema.xml.in:256 msgid "Take a screenshot" msgstr "Uslikaj zaslon" #: data/50-gnome-shell-screenshots.xml:15 #: data/org.gnome.shell.gschema.xml.in:252 msgid "Take a screenshot of a window" msgstr "Uslikaj prozor" #: data/50-gnome-shell-screenshots.xml:18 #: data/org.gnome.shell.gschema.xml.in:248 msgid "Record a screencast interactively" msgstr "Snimaj zaslon interaktivno" #: data/50-gnome-shell-system.xml:6 msgid "System" msgstr "Sustav" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "Prikaži popis poruka obavijesti" #: data/50-gnome-shell-system.xml:12 msgid "Focus the active notification" msgstr "Fokusiraj aktivnu obavijest" #: data/50-gnome-shell-system.xml:15 msgid "Show the overview" msgstr "Prikaži pregled" #: data/50-gnome-shell-system.xml:18 msgid "Show all applications" msgstr "Prikaži sve aplikacije" #: data/50-gnome-shell-system.xml:21 msgid "Open the application menu" msgstr "Otvori izbornik aplikacija" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "GNOME ljuska" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "Pokretanje upravljanja prozorima i aplikacijama" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" "Omogući unutrašnji alat koristan za razvijatelje i testiratelje koristeći " "Alt-F2 dijalog" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Dopusti pristup alat nadziranja i unutrašnjeg otklanjanja grešaka koristeći " "Alt-F2 dijalog." #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "UUID-ovi proširenja za omogućavanje" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "Proširenja GNOME ljuske imaju UUID svojstvo; taj ključ prikazuje proširenja " "koja treba učitati. Svako proširenje koje se želi učitati treba biti na tom " "popisu. Možete isto tako manipulirati tim popisom sa EnableExtension i " "DisableExtension D-Bus načinima na org.gnome.Shell." #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "UUID-ovi proširenja za prisilno onemogućavanje" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" "Proširenja GNOME ljuske imaju UUID svojstvo; taj ključ prikazuje proširenja " "koja treba onemogućiti, čak iako je učitano kao dio trenutnog načina rada. " "Možete isto tako manipulirati tim popisom sa EnableExtension i " "DisableExtension D-Bus načinima na org.gnome.Shell. Ovaj ključ ima prednost " "nad “enabled-extensions” postavkom." #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "Onemogući korisnikova proširenja" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" "Onemogući sva proširenja koja je korisnik omogućio bez utjecaja na postavku " "“omogućeno-proširenje”." #: data/org.gnome.shell.gschema.xml.in:45 msgid "Disables the validation of extension version compatibility" msgstr "Onemogućuje provjeru kompatibilnosti inačice proširenja" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "GNOME ljuska će samo učitati proširenja koje podržavaju trenutno pokrenutu " "inačicu. Omogućavanje te mogućnosti će onemogućiti tu provjeru i pokušati " "učitati sva proširenja bez obzira koju inačicu podržavaju." #: data/org.gnome.shell.gschema.xml.in:54 msgid "List of desktop file IDs for favorite applications" msgstr "Popis ID-ova datoteka radne površine omiljenih aplikacija" #: data/org.gnome.shell.gschema.xml.in:55 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" "Aplikacije koje odgovaraju tim identifikatorima će biti prikazane u području " "omiljenih." #: data/org.gnome.shell.gschema.xml.in:62 msgid "History for command (Alt-F2) dialog" msgstr "Povijest naredbi (Alt-F2) dijalog" #. Translators: looking glass is a debugger and inspector tool, see https://wiki.gnome.org/Projects/GnomeShell/LookingGlass #: data/org.gnome.shell.gschema.xml.in:67 msgid "History for the looking glass dialog" msgstr "Povijest dijaloga naprednih kontrola i upravljanja" #: data/org.gnome.shell.gschema.xml.in:71 msgid "Always show the “Log out” menu item in the user menu." msgstr "Uvijek prikaži ”Odjava” stavku u korisničkom izborniku." #: data/org.gnome.shell.gschema.xml.in:72 msgid "" "This key overrides the automatic hiding of the “Log out” menu item in single-" "user, single-session situations." msgstr "" "Ova tipka zaobilazi automatsko sakrivanje ”Odjava” stavke izbornika u " "situaciji jednog-korisnika, jedne-sesije." #: data/org.gnome.shell.gschema.xml.in:79 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "Treba li zapamtiti lozinku za montiranje šifriranih ili udaljenih datotečnih " "sustava" #: data/org.gnome.shell.gschema.xml.in:80 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "Ova ljuska će zatražiti lozinku kada šifrirani uređaj ili udaljeni datotečni " "sustav je montiran. Ako se lozinka može spremiti za buduću upotrebu ”Zapamti " "lozinku” mogućnost odabira će biti prisutna. Ta mogućnost postavlja zadano " "stanje odabira." #: data/org.gnome.shell.gschema.xml.in:89 msgid "" "Whether the default Bluetooth adapter had set up devices associated to it" msgstr "" "Treba li zadani Bluetooth adapter postaviti uređaj s kojim je pridružen" #: data/org.gnome.shell.gschema.xml.in:90 msgid "" "The shell will only show a Bluetooth menu item if a Bluetooth adapter is " "powered, or if there were devices set up associated with the default " "adapter. This will be reset if the default adapter is ever seen not to have " "devices associated to it." msgstr "" "Ova ljuska će samo prikazati Bluetooth izbornik ako je Bluetooth adapter " "uključen, ili kao su dostupni uređaji pridruženi sa zadanim adapterom. Ovo " "će biti poništeno ako zadani adapter nije imao nikada pridruženog uređaja." #: data/org.gnome.shell.gschema.xml.in:99 msgid "The last selected non-default power profile" msgstr "Posljednji odabrani nezadani profil energije" #: data/org.gnome.shell.gschema.xml.in:100 msgid "" "Some systems support more than two power profiles. In order to still support " "toggling between two profiles, this key records the last selected non-" "default profile." msgstr "" "Pojedini sustavi podržavaju više od dva profila energije. Kako bi se dalje " "podržavalo prebacivanje između dva profila, ovaj ključ bilježi zadnji " "odabrani nezadani profil." #: data/org.gnome.shell.gschema.xml.in:108 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "Posljednja inačica dijaloga \"Dobrodošli u GNOME\" je prikazana za" #: data/org.gnome.shell.gschema.xml.in:109 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can " "be used to effectively disable the dialog." msgstr "" "Ovaj ključ određuje koja inačica dijaloga \"Dobrodošli u GNOME\" je " "posljednja prikazana. Prazan izraz predstavlja najstariju moguću inačicu a " "najveći broj će prikazati inačicu koja još ne postoji. Taj najviši broj može " "se koristiti za onemogućavanje ovog dijaloga." #: data/org.gnome.shell.gschema.xml.in:142 msgid "Layout of the app picker" msgstr "Raspored odabira aplikacije" #: data/org.gnome.shell.gschema.xml.in:143 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" msgstr "" "Raspored odabira aplikacije. Svaki unos u nizu je stranica. Stranice su " "spremljene po poretku kao što se pojavljuju u GNOME ljusci. Svaka stranica " "sadrži “application id” → 'data' par. Trenutno, sljedeće vrijednosti su " "spremljene kao 'data': • “position”: položaj ikone aplikacije na stranici" #: data/org.gnome.shell.gschema.xml.in:158 msgid "Keybinding to open the application menu" msgstr "Prečac tipkovnice za otvaranje izbornika aplikacije" #: data/org.gnome.shell.gschema.xml.in:159 msgid "Keybinding to open the application menu." msgstr "Prečac tipkovnice za otvaranje izbornika aplikacije." #: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:172 msgid "Keybinding to shift between overview states" msgstr "Prečac tipkovnice za promjenu stanja pogleda" #: data/org.gnome.shell.gschema.xml.in:166 msgid "Keybinding to shift between session, window picker and app grid" msgstr "" "Prečac tipkovnice za promjenu sesija, odabiratelja prozora i mreže aplikacija" #: data/org.gnome.shell.gschema.xml.in:173 msgid "Keybinding to shift between app grid, window picker and session" msgstr "" "Prečac tipkovnice za promjenu između mreže aplikacija, odabiratelja prozora " "i sesija" #: data/org.gnome.shell.gschema.xml.in:179 msgid "Keybinding to open the “Show Applications” view" msgstr "Prečac tipkovnice za otvaranje prikaza \"Prikaži aplikacije\"" #: data/org.gnome.shell.gschema.xml.in:180 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "" "Prečac tipkovnice za otvaranje prikaza \"Prikaži aplikacije\" u pogledu " "Aktivnosti." #: data/org.gnome.shell.gschema.xml.in:187 msgid "Keybinding to open the overview" msgstr "Prečac tipkovnice za otvaranje pogleda" #: data/org.gnome.shell.gschema.xml.in:188 msgid "Keybinding to open the Activities Overview." msgstr "Prečac tipkovnice za otvaranje pogleda Aktivnosti." #: data/org.gnome.shell.gschema.xml.in:194 msgid "Keybinding to toggle the visibility of the notification list" msgstr "" "Prečac tipkovnice za uključivanje/isključivanje vidljivosti popisa obavijesti" #: data/org.gnome.shell.gschema.xml.in:195 msgid "Keybinding to toggle the visibility of the notification list." msgstr "" "Prečac tipkovnice za uključivanje/isključivanje vidljivosti popisa " "obavijesti." #: data/org.gnome.shell.gschema.xml.in:201 msgid "Keybinding to focus the active notification" msgstr "Prečac tipkovnice za fokusiranje aktivne obavijesti" #: data/org.gnome.shell.gschema.xml.in:202 msgid "Keybinding to focus the active notification." msgstr "Prečac tipkovnice za fokusiranje aktivne obavijesti." #: data/org.gnome.shell.gschema.xml.in:208 msgid "Switch to application 1" msgstr "Prebaci na aplikaciju 1" #: data/org.gnome.shell.gschema.xml.in:212 msgid "Switch to application 2" msgstr "Prebaci na aplikaciju 2" #: data/org.gnome.shell.gschema.xml.in:216 msgid "Switch to application 3" msgstr "Prebaci na aplikaciju 3" #: data/org.gnome.shell.gschema.xml.in:220 msgid "Switch to application 4" msgstr "Prebaci na aplikaciju 4" #: data/org.gnome.shell.gschema.xml.in:224 msgid "Switch to application 5" msgstr "Prebaci na aplikaciju 5" #: data/org.gnome.shell.gschema.xml.in:228 msgid "Switch to application 6" msgstr "Prebaci na aplikaciju 6" #: data/org.gnome.shell.gschema.xml.in:232 msgid "Switch to application 7" msgstr "Prebaci na aplikaciju 7" #: data/org.gnome.shell.gschema.xml.in:236 msgid "Switch to application 8" msgstr "Prebaci na aplikaciju 8" #: data/org.gnome.shell.gschema.xml.in:240 msgid "Switch to application 9" msgstr "Prebaci na aplikaciju 9" #: data/org.gnome.shell.gschema.xml.in:265 #: data/org.gnome.shell.gschema.xml.in:292 msgid "Limit switcher to current workspace." msgstr "Ograniči premještanje na trenutni radni prostor." #: data/org.gnome.shell.gschema.xml.in:266 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "Ako je odabrano, samo aplikacije koje imaju prozor na trenutnom radnom " "prostoru su prikazane na prebacivaču. U suprotnom, sve aplikacije su " "uključene." #: data/org.gnome.shell.gschema.xml.in:283 msgid "The application icon mode." msgstr "Način ikone aplikacije." #: data/org.gnome.shell.gschema.xml.in:284 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-" "only” (shows only the application icon) or “both”." msgstr "" "Podešava kako su prozori prikazani u prebacivaču. Valjane mogućnosti su " "”thumbnail-only” (prikazuje minijaturu prozora), ”app-icon-only” (prikazuje " "samo ikonu aplikacije) ili ”both”." #: data/org.gnome.shell.gschema.xml.in:293 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "Ako je odabrano, samo prozori s trenutnog radnog prostora su prikazani u " "prebacivaču, U suprotnom, svi prozori su uključeni." #: data/org.gnome.shell.gschema.xml.in:303 msgid "Locations" msgstr "Lokacije" #: data/org.gnome.shell.gschema.xml.in:304 msgid "The locations to show in world clocks" msgstr "Lokacije prikazane u svjetskim satovima" #: data/org.gnome.shell.gschema.xml.in:314 msgid "Automatic location" msgstr "Automatska lokacija" #: data/org.gnome.shell.gschema.xml.in:315 msgid "Whether to fetch the current location or not" msgstr "Treba li ili ne treba preuzeti trenutnu lokaciju" #: data/org.gnome.shell.gschema.xml.in:322 msgid "Location" msgstr "Lokacija" #: data/org.gnome.shell.gschema.xml.in:323 msgid "The location for which to show a forecast" msgstr "Lokacija za koju treba prikazati prognozu" #: data/org.gnome.shell.gschema.xml.in:335 msgid "Attach modal dialog to the parent window" msgstr "Pričvrsti prozore dijaloga na nadređeni prozor" #: data/org.gnome.shell.gschema.xml.in:336 #: data/org.gnome.shell.gschema.xml.in:345 #: data/org.gnome.shell.gschema.xml.in:353 #: data/org.gnome.shell.gschema.xml.in:361 #: data/org.gnome.shell.gschema.xml.in:369 msgid "" "This key overrides the key in org.gnome.mutter when running GNOME Shell." msgstr "" "Ova vrijednost zaobilazi org.gnome.mutter kada je pokrenuta GNOME ljuska." #: data/org.gnome.shell.gschema.xml.in:344 msgid "Enable edge tiling when dropping windows on screen edges" msgstr "Omogući rubno popločavanje pri ispuštanju prozora na rubovima zaslona" #: data/org.gnome.shell.gschema.xml.in:352 msgid "Workspaces are managed dynamically" msgstr "Radni prostori su upravljani promjenjivo" #: data/org.gnome.shell.gschema.xml.in:360 msgid "Workspaces only on primary monitor" msgstr "Radni prostori samo na glavnom zaslonu" #: data/org.gnome.shell.gschema.xml.in:368 msgid "Delay focus changes in mouse mode until the pointer stops moving" msgstr "" "Odgodi promjenu fokusa u načinu rada s mišem dok se pokazivač ne prestane " "pomicati" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "Mrežna prijava" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:144 msgid "Something’s gone wrong" msgstr "Nešto je pošlo po krivu" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" "Nažalost došlo je do problema: postavke za ovo proširenje se ne mogu " "prikazati. Preporučljivo je da problem prijavite autoru proširenja." #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "Tehničke pojedinosti" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "Naslovnica" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 msgid "Visit extension homepage" msgstr "Posjetite naslovnicu proširenja" #: js/gdm/authPrompt.js:144 js/ui/audioDeviceSelection.js:61 #: js/ui/components/networkAgent.js:109 js/ui/components/polkitAgent.js:141 #: js/ui/endSessionDialog.js:440 js/ui/extensionDownloader.js:223 #: js/ui/shellMountOperation.js:377 js/ui/shellMountOperation.js:387 #: subprojects/extensions-app/js/main.js:173 msgid "Cancel" msgstr "Odustani" #: js/gdm/authPrompt.js:307 js/ui/components/networkAgent.js:209 #: js/ui/components/networkAgent.js:229 js/ui/components/networkAgent.js:261 #: js/ui/components/networkAgent.js:294 js/ui/components/networkAgent.js:333 #: js/ui/components/networkAgent.js:346 js/ui/components/polkitAgent.js:283 #: js/ui/shellMountOperation.js:327 msgid "Password" msgstr "Lozinka" #: js/gdm/loginDialog.js:317 msgid "Choose Session" msgstr "Odaberi sesiju" #: js/gdm/loginDialog.js:462 msgid "Not listed?" msgstr "Niste na popisu?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:930 #, javascript-format msgid "(e.g., user or %s)" msgstr "(npr., korisnik ili %s)" #: js/gdm/loginDialog.js:935 js/ui/components/networkAgent.js:253 #: js/ui/components/networkAgent.js:288 js/ui/components/networkAgent.js:322 msgid "Username" msgstr "Korisničko ime" #: js/gdm/loginDialog.js:1258 msgid "Login Window" msgstr "Prozor prijave" #: js/gdm/util.js:431 msgid "Authentication error" msgstr "Greška ovjere" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:603 msgid "(or swipe finger across reader)" msgstr "(ili pomakni prst preko čitača)" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:608 msgid "(or place finger on reader)" msgstr "(ili stavite prst na čitač)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:84 msgctxt "search-result" msgid "Power Off" msgstr "Isključivanje" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:87 msgid "power off;shutdown;halt;stop" msgstr "isključi;isključivanje;zaustavi;zaustavljanje" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:92 msgctxt "search-result" msgid "Restart" msgstr "Ponovno pokreni" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:95 msgid "reboot;restart;" msgstr "ponovno pokreni;ponovno pokretanje;" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:100 msgctxt "search-result" msgid "Lock Screen" msgstr "Zaključavanje zaslona" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:103 msgid "lock screen" msgstr "zaključavanje zaslona" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:108 msgctxt "search-result" msgid "Log Out" msgstr "Odjava" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:111 msgid "logout;log out;sign off" msgstr "odjava;odjavljivanje" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:116 msgctxt "search-result" msgid "Suspend" msgstr "Suspenzija" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:119 msgid "suspend;sleep" msgstr "suspendiraj;spavaj" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:124 msgctxt "search-result" msgid "Switch User" msgstr "Zamijeni korisnika" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:127 msgid "switch user" msgstr "zamjena korisnika" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:134 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "zaključavanje orjentacije;otključaj orjentaciju;zaslon;zakretanje" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:139 msgctxt "search-result" msgid "Take a Screenshot" msgstr "Uslikaj zaslon" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:142 msgid "screenshot;screencast;snip;capture;record" msgstr "uslikaj zaslon;snimaj zaslon;isječak;snimaj;snimi" #: js/misc/systemActions.js:242 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "Zakretanje otključanog zaslona" #: js/misc/systemActions.js:243 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "Zakretanje zaključanog zaslona" #: js/misc/util.js:129 msgid "Command not found" msgstr "Naredba nije pronađena" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:166 msgid "Could not parse command:" msgstr "Nemoguća obrada naredbe:" #: js/misc/util.js:174 #, javascript-format msgid "Execution of “%s” failed:" msgstr "Izvršavanje '%s' neuspjelo:" #: js/misc/util.js:191 msgid "Just now" msgstr "Upravo sada" #: js/misc/util.js:193 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "Prije %d minute" msgstr[1] "Prije %d minute" msgstr[2] "Prije %d minuta" #: js/misc/util.js:197 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "Prije %d sata" msgstr[1] "Prije %d sata" msgstr[2] "Prije %d sati" #: js/misc/util.js:201 js/ui/dateMenu.js:167 msgid "Yesterday" msgstr "Jučer" #: js/misc/util.js:203 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "Prije %d dana" msgstr[1] "Prije %d dana" msgstr[2] "Prije %d dana" #: js/misc/util.js:207 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "Prije %d tjedna" msgstr[1] "Prije %d tjedna" msgstr[2] "Prije %d tjedana" #: js/misc/util.js:211 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "Prije %d mjeseca" msgstr[1] "Prije %d mjeseca" msgstr[2] "Prije %d mjeseci" #: js/misc/util.js:214 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "Prije %d godine" msgstr[1] "Prije %d godine" msgstr[2] "Prije %d godina" #. Translators: Time in 24h format #: js/misc/util.js:247 msgid "%H∶%M" msgstr "%H:%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/util.js:253 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "Jučer, %H∶%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/util.js:259 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/util.js:265 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%-d. %B, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/util.js:271 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%-d. %B, %H∶%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/util.js:276 msgid "%l∶%M %p" msgstr "%l:%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/util.js:282 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "Jučer, %l∶%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/util.js:288 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/util.js:294 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%-d. %B, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/util.js:300 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%-d. %B %Y, %H∶%M" #: js/portalHelper/main.js:55 msgid "Hotspot Login" msgstr "Prijava pristupne točke" #: js/portalHelper/main.js:108 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "Vaše povezivanje s ovom prijavom pristupne točke nije sigurno. Lozinke i " "ostale informacije koje ste upisali na ovoj stranici mogu vidjeti ljudi u " "vašoj blizini." #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:39 js/ui/status/location.js:350 msgid "Deny Access" msgstr "Zabrani pristup" #: js/ui/accessDialog.js:40 js/ui/status/location.js:355 msgid "Grant Access" msgstr "Dopusti pristup" #: js/ui/appDisplay.js:1728 msgid "Unnamed Folder" msgstr "Neimenovana mapa" #: js/ui/appFavorites.js:166 #, javascript-format msgid "%s has been pinned to the dash." msgstr "%s je dodan na pokretač." #: js/ui/appFavorites.js:199 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "%s je uklonjen iz pokretača." #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:46 msgid "Open Windows" msgstr "Otvoreni prozori" #: js/ui/appMenu.js:54 msgid "New Window" msgstr "Novi prozor" #: js/ui/appMenu.js:81 msgid "Show Details" msgstr "Prikaži pojedinosti" #: js/ui/appMenu.js:97 msgid "Quit" msgstr "Zatvori" #: js/ui/appMenu.js:157 js/ui/dash.js:249 msgid "Unpin" msgstr "Ukloni iz pokretača" #: js/ui/appMenu.js:158 msgid "Pin to Dash" msgstr "Dodaj na pokretač" #: js/ui/appMenu.js:175 msgid "Launch using Integrated Graphics Card" msgstr "Pokreni pomoću integrirane grafičke kartice" #: js/ui/appMenu.js:176 msgid "Launch using Discrete Graphics Card" msgstr "Pokreni pomoću diskretne grafičke kartice" #: js/ui/audioDeviceSelection.js:41 msgid "Select Audio Device" msgstr "Odaberi zvučni uređaj" #: js/ui/audioDeviceSelection.js:56 js/ui/status/volume.js:63 msgid "Sound Settings" msgstr "Postavke zvuka" #: js/ui/audioDeviceSelection.js:69 msgid "Headphones" msgstr "Slušalice" #: js/ui/audioDeviceSelection.js:71 msgid "Headset" msgstr "Slušalice s mikrofonom" #: js/ui/audioDeviceSelection.js:73 js/ui/status/volume.js:319 msgid "Microphone" msgstr "Mikrofon" #: js/ui/backgroundMenu.js:14 msgid "Change Background…" msgstr "Promijeni pozadinu…" #: js/ui/backgroundMenu.js:16 msgid "Display Settings" msgstr "Postavke prikaza" #: js/ui/backgroundMenu.js:17 #: subprojects/extensions-app/data/ui/extension-row.ui:122 msgid "Settings" msgstr "Postavke" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:35 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:61 msgctxt "grid sunday" msgid "S" msgstr "N" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:63 msgctxt "grid monday" msgid "M" msgstr "P" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:65 msgctxt "grid tuesday" msgid "T" msgstr "U" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:67 msgctxt "grid wednesday" msgid "W" msgstr "S" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:69 msgctxt "grid thursday" msgid "T" msgstr "Č" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:71 msgctxt "grid friday" msgid "F" msgstr "P" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:73 msgctxt "grid saturday" msgid "S" msgstr "S" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:414 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:424 msgid "%OB %Y" msgstr "%OB %Y" #: js/ui/calendar.js:485 msgid "Previous month" msgstr "Prijašnji mjesec" #: js/ui/calendar.js:503 msgid "Next month" msgstr "Sljedeći mjesec" #: js/ui/calendar.js:654 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:713 msgid "Week %V" msgstr "Tjedan %V" #: js/ui/calendar.js:892 msgid "No Notifications" msgstr "Nema obavijesti" #: js/ui/calendar.js:949 msgid "Do Not Disturb" msgstr "Ne ometaj" #: js/ui/calendar.js:970 msgid "Clear" msgstr "Obriši" #. Translators: %s is an application name #: js/ui/closeDialog.js:40 #, javascript-format msgid "“%s” is not responding." msgstr "“%s” ne reagira." #: js/ui/closeDialog.js:41 msgid "" "You may choose to wait a short while for it to continue or force the " "application to quit entirely." msgstr "" "Možda ste odabrali kratko čekanje do nastavka izvođenja ili prisile " "aplikacije da se u potpunosti zatvori." #: js/ui/closeDialog.js:69 msgid "Force Quit" msgstr "Prisilno zatvori" #: js/ui/closeDialog.js:74 msgid "Wait" msgstr "Čekaj" #: js/ui/components/automountManager.js:84 msgid "External drive connected" msgstr "Vanjski uređaj povezan" #: js/ui/components/automountManager.js:96 msgid "External drive disconnected" msgstr "Vanjski uređaj odspojen" #: js/ui/components/automountManager.js:207 msgid "Unable to unlock volume" msgstr "Nemoguće otključavanje uređaja" #: js/ui/components/automountManager.js:208 msgid "The installed udisks version does not support the PIM setting" msgstr "Instalirana udisks inačica ne podržava PIM postavku" #: js/ui/components/autorunManager.js:316 #, javascript-format msgid "Open with %s" msgstr "Otvori s(a) %s" #: js/ui/components/networkAgent.js:91 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router." msgstr "" "Alternativno se možete povezati pritiskom na “WPS” tipku vašeg usmjernika." #: js/ui/components/networkAgent.js:103 js/ui/status/network.js:436 msgid "Connect" msgstr "Povezivanje" #: js/ui/components/networkAgent.js:218 msgid "Key" msgstr "Ključ" #: js/ui/components/networkAgent.js:269 js/ui/components/networkAgent.js:308 msgid "Private key password" msgstr "Lozinka privatnog ključa" #: js/ui/components/networkAgent.js:302 msgid "Identity" msgstr "Identitet" #: js/ui/components/networkAgent.js:328 msgid "Service" msgstr "Usluga" #: js/ui/components/networkAgent.js:366 js/ui/components/networkAgent.js:402 #: js/ui/components/networkAgent.js:747 js/ui/components/networkAgent.js:768 msgid "Authentication required" msgstr "Potrebna je ovjera" #: js/ui/components/networkAgent.js:367 js/ui/components/networkAgent.js:748 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network " "“%s”." msgstr "" "Lozinka ili ključevi šifriranja su potrebni za pristup bežičnoj mreži “%s”." #: js/ui/components/networkAgent.js:371 js/ui/components/networkAgent.js:752 msgid "Wired 802.1X authentication" msgstr "Wired 802.1X ovjera" #: js/ui/components/networkAgent.js:374 msgid "Network name" msgstr "Naziv mreže" #: js/ui/components/networkAgent.js:382 js/ui/components/networkAgent.js:756 msgid "DSL authentication" msgstr "DSL ovjera" #: js/ui/components/networkAgent.js:389 js/ui/components/networkAgent.js:761 msgid "PIN code required" msgstr "PIN kôd je potreban" #: js/ui/components/networkAgent.js:390 js/ui/components/networkAgent.js:762 msgid "PIN code is needed for the mobile broadband device" msgstr "PIN kôd je potreban za uređaj mobilnog interneta" #: js/ui/components/networkAgent.js:392 msgid "PIN" msgstr "PIN" #: js/ui/components/networkAgent.js:403 js/ui/components/networkAgent.js:753 #: js/ui/components/networkAgent.js:757 js/ui/components/networkAgent.js:769 #: js/ui/components/networkAgent.js:773 #, javascript-format msgid "A password is required to connect to “%s”." msgstr "Potrebna je lozinka za povezivanje s “%s”." #: js/ui/components/networkAgent.js:736 msgid "Network Manager" msgstr "Mrežni upravitelj" #: js/ui/components/networkAgent.js:772 msgid "VPN password" msgstr "VPN lozinka" #: js/ui/components/polkitAgent.js:41 msgid "Authentication Required" msgstr "Potrebna je ovjera" #: js/ui/components/polkitAgent.js:81 msgid "Administrator" msgstr "Administrator" #: js/ui/components/polkitAgent.js:146 msgid "Authenticate" msgstr "Ovjeri" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:260 js/ui/shellMountOperation.js:403 msgid "Sorry, that didn’t work. Please try again." msgstr "Nažalost, to ne radi. Pokušajte ponovno." #: js/ui/components/telepathyClient.js:828 #, javascript-format msgid "%s is now known as %s" msgstr "%s je poznat kao %s" #: js/ui/ctrlAltTab.js:22 js/ui/overviewControls.js:414 msgid "Windows" msgstr "Prozori" #: js/ui/dash.js:205 js/ui/dash.js:251 msgid "Show Applications" msgstr "Prikaži aplikacije" #. Translators: this is the name of the dock/favorites area on #. the left of the overview #: js/ui/dash.js:398 msgid "Dash" msgstr "Pokretač" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:83 msgid "%B %-d %Y" msgstr "%-e %b, %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:90 msgid "%A %B %e %Y" msgstr "%A %e %B %Y" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:156 msgctxt "calendar heading" msgid "%B %-d" msgstr "%-e %b" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:159 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%-e %b, %Y" #: js/ui/dateMenu.js:165 msgid "Today" msgstr "Danas" #: js/ui/dateMenu.js:169 msgid "Tomorrow" msgstr "Sutra" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:200 msgctxt "event list time" msgid "All Day" msgstr "Cijeli dan" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:222 msgid "%m/%d" msgstr "%m/%d" #: js/ui/dateMenu.js:273 msgid "No Events" msgstr "Nema događaja" #: js/ui/dateMenu.js:396 msgid "Add world clocks…" msgstr "Dodaj satove iz svijeta…" #: js/ui/dateMenu.js:397 msgid "World Clocks" msgstr "Svjetski satovi" #: js/ui/dateMenu.js:681 msgid "Loading…" msgstr "Pretraživanje…" #: js/ui/dateMenu.js:691 msgid "Go online for weather information" msgstr "Posjetite za opširnije vremenske informacije" #: js/ui/dateMenu.js:693 msgid "Weather information is currently unavailable" msgstr "Vremenske informacije su trenutno nedostupne" #: js/ui/dateMenu.js:703 msgid "Weather" msgstr "Vrijeme" #: js/ui/dateMenu.js:705 msgid "Select weather location…" msgstr "Odaberi lokaciju vremena…" #: js/ui/endSessionDialog.js:41 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "Odjavi se %s" #: js/ui/endSessionDialog.js:42 msgctxt "title" msgid "Log Out" msgstr "Odjava" #: js/ui/endSessionDialog.js:45 #, javascript-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "%s će se automatski odjaviti za %d sekundu." msgstr[1] "%s će se automatski odjaviti za %d sekunde." msgstr[2] "%s će se automatski odjaviti za %d sekundi." #: js/ui/endSessionDialog.js:51 #, javascript-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "Odjavit ćete se automatski za %d sekundu." msgstr[1] "Odjavit ćete se automatski za %d sekunde." msgstr[2] "Odjavit ćete se automatski za %d sekundi." #: js/ui/endSessionDialog.js:58 msgctxt "button" msgid "Log Out" msgstr "Odjava" #: js/ui/endSessionDialog.js:64 js/ui/status/system.js:167 msgctxt "title" msgid "Power Off" msgstr "Isključivanje" #: js/ui/endSessionDialog.js:65 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Instaliraj nadopune i isključi" #: js/ui/endSessionDialog.js:68 #, javascript-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "Sustav će se automatski isključiti za %d sekundu." msgstr[1] "Sustav će se automatski isključiti za %d sekunde." msgstr[2] "Sustav će se automatski isključiti za %d sekundi." #: js/ui/endSessionDialog.js:72 js/ui/endSessionDialog.js:91 msgctxt "checkbox" msgid "Install pending software updates" msgstr "Instaliraj dostupne nadopune softvera" #: js/ui/endSessionDialog.js:76 msgctxt "button" msgid "Power Off" msgstr "Isključi" #: js/ui/endSessionDialog.js:83 msgctxt "title" msgid "Restart" msgstr "Ponovno pokreni" #: js/ui/endSessionDialog.js:84 msgctxt "title" msgid "Install Updates & Restart" msgstr "Instaliraj nadopune i ponovno pokreni" #: js/ui/endSessionDialog.js:87 #, javascript-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "Sustav će se automatski ponovno pokrenuti za %d sekundu." msgstr[1] "Sustav će se automatski ponovno pokrenuti za %d sekunde." msgstr[2] "Sustav će se automatski ponovno pokrenuti za %d sekundi." #: js/ui/endSessionDialog.js:95 msgctxt "button" msgid "Restart" msgstr "Ponovno pokreni" #: js/ui/endSessionDialog.js:103 msgctxt "title" msgid "Restart & Install Updates" msgstr "Ponovno pokreni i instaliraj nadopune" #: js/ui/endSessionDialog.js:106 #, javascript-format msgid "The system will automatically restart and install updates in %d second." msgid_plural "" "The system will automatically restart and install updates in %d seconds." msgstr[0] "" "Sustav će se automatski ponovno pokrenuti i instalirati nadopune za %d " "sekundu." msgstr[1] "" "Sustav će se automatski ponovno pokrenuti i instalirati nadopune za %d " "sekunde." msgstr[2] "" "Sustav će se automatski ponovno pokrenuti i instalirati nadopune za %d " "sekundi." #: js/ui/endSessionDialog.js:113 js/ui/endSessionDialog.js:134 msgctxt "button" msgid "Restart & Install" msgstr "Ponovno pokreni i instaliraj" #: js/ui/endSessionDialog.js:115 msgctxt "button" msgid "Install & Power Off" msgstr "Instaliraj i isključi" #: js/ui/endSessionDialog.js:116 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Isključi nakon što se nadopune instaliraju" #: js/ui/endSessionDialog.js:123 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "Ponovno pokreni i instaliraj nadogradnju" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:128 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "%s %s će se instalirati nakon ponovnog pokretanja. Instalacija nadogradnji " "može potrajati duže vrijeme: pobrinite se da ste spremili svoj rad i " "računalo je priključeno na izvor napajanja." #: js/ui/endSessionDialog.js:285 msgid "Low battery power: please plug in before installing updates." msgstr "" "Slaba energija baterije: računalo priključite na izvor napajanja prije " "instalacije nadopuna." #: js/ui/endSessionDialog.js:294 msgid "Some applications are busy or have unsaved work" msgstr "Neke aplikacije su zauzete ili imaju nespremljeni rad" #: js/ui/endSessionDialog.js:299 msgid "Other users are logged in" msgstr "Drugi korisnici su prijavljeni" #: js/ui/endSessionDialog.js:470 msgctxt "button" msgid "Boot Options" msgstr "Mogućnosti pokretanja" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:675 #, javascript-format msgid "%s (remote)" msgstr "%s (udaljeno)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:678 #, javascript-format msgid "%s (console)" msgstr "%s (konzola)" #: js/ui/extensionDownloader.js:227 msgid "Install" msgstr "Instaliraj" #: js/ui/extensionDownloader.js:233 msgid "Install Extension" msgstr "Instaliraj proširenje" #: js/ui/extensionDownloader.js:234 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "Preuzmi i instaliraj “%s” sa extensions.gnome.org?" #: js/ui/extensionSystem.js:270 msgid "Extension Updates Available" msgstr "Nadopuna proširenja je dostupna" #: js/ui/extensionSystem.js:271 msgid "Extension updates are ready to be installed." msgstr "Nadopune proširenja su spremne za instalaciju." #: js/ui/inhibitShortcutsDialog.js:79 msgid "Allow inhibiting shortcuts" msgstr "Dopusti sprječavanje prečaca" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:82 #, javascript-format msgid "The application %s wants to inhibit shortcuts" msgstr "Aplikacija %s želi spriječiti prečac" #: js/ui/inhibitShortcutsDialog.js:83 msgid "An application wants to inhibit shortcuts" msgstr "Aplikacija želi spriječiti prečac" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:90 #, javascript-format msgid "You can restore shortcuts by pressing %s." msgstr "Možete obnoviti prečac pritiskom na %s." #: js/ui/inhibitShortcutsDialog.js:101 msgid "Deny" msgstr "Spriječi" #: js/ui/inhibitShortcutsDialog.js:110 msgid "Allow" msgstr "Dopusti" #: js/ui/kbdA11yDialog.js:32 msgid "Slow Keys Turned On" msgstr "Spore tipke uključene" #: js/ui/kbdA11yDialog.js:33 msgid "Slow Keys Turned Off" msgstr "Spore tipke isključene" #: js/ui/kbdA11yDialog.js:34 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "Držali ste pritisnutu tipku Shift 8 sekundi. To je prečac za značajku sporih " "tipka, koja utječe na način rada vaše tipkovnice." #: js/ui/kbdA11yDialog.js:40 msgid "Sticky Keys Turned On" msgstr "Pričvrstive tipke uključene" #: js/ui/kbdA11yDialog.js:41 msgid "Sticky Keys Turned Off" msgstr "Pričvrstive tipke isključene" #: js/ui/kbdA11yDialog.js:43 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "Upravo ste pritisnuli tipku Shift 5 puta uzastopno. To je prečac za značajku " "pričvrstivih tipka, koja utječe na način rada vaše tipkovnice." #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" "Upravo ste pritisnuli dvije tipke odjednom, ili ste pritisnuli tipku Shift 5 " "puta uzastopno. To isključuje značajku pričvrstivih tipka, koja utječe na " "način rada vaše tipkovnice." #: js/ui/kbdA11yDialog.js:55 msgid "Leave On" msgstr "Ostavi" #: js/ui/kbdA11yDialog.js:55 msgid "Turn On" msgstr "Uključi" #: js/ui/kbdA11yDialog.js:65 js/ui/status/network.js:447 msgid "Turn Off" msgstr "Isključi" #: js/ui/kbdA11yDialog.js:65 msgid "Leave Off" msgstr "Ukloni" #: js/ui/keyboard.js:219 msgid "Region & Language Settings" msgstr "Postavke jezika i regije" #: js/ui/lookingGlass.js:713 msgid "No extensions installed" msgstr "Nema instaliranih proširenja" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:774 #, javascript-format msgid "%s has not emitted any errors." msgstr "%s nije dao ni jednu grešku." #: js/ui/lookingGlass.js:780 msgid "Hide Errors" msgstr "Sakrij greške" #: js/ui/lookingGlass.js:784 js/ui/lookingGlass.js:857 msgid "Show Errors" msgstr "Prikaži greške" #: js/ui/lookingGlass.js:793 msgid "Enabled" msgstr "Omogućeno" #. translators: #. * The device has been disabled #: js/ui/lookingGlass.js:796 subprojects/gvc/gvc-mixer-control.c:1900 msgid "Disabled" msgstr "Onemogućen" #: js/ui/lookingGlass.js:798 msgid "Error" msgstr "Greška" #: js/ui/lookingGlass.js:800 msgid "Out of date" msgstr "Zastarjelo" #: js/ui/lookingGlass.js:802 msgid "Downloading" msgstr "Preuzimanje" #: js/ui/lookingGlass.js:835 msgid "View Source" msgstr "Pogledaj izvor" #: js/ui/lookingGlass.js:846 msgid "Web Page" msgstr "Web stranica" #: js/ui/main.js:286 msgid "System was put in unsafe mode" msgstr "Sustav je stavljen u nesiguran način rada" #: js/ui/main.js:287 msgid "Applications now have unrestricted access" msgstr "Aplikacije sada imaju neograničen pristup" #: js/ui/main.js:288 js/ui/overview.js:58 msgid "Undo" msgstr "Poništi" #: js/ui/main.js:334 msgid "Logged in as a privileged user" msgstr "Prijavljeni ste kao administratorski korisnik" #: js/ui/main.js:335 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" "Pokretanje sesije s ovlastima administratorskog korisnika treba se " "izbjegavati iz sigurnosnih razloga. Ako je moguće, trebate se prijaviti kao " "normalan korisnik." #: js/ui/main.js:384 msgid "Screen Lock disabled" msgstr "Zaključavanje zaslona je onemogućeno" #: js/ui/main.js:385 msgid "Screen Locking requires the GNOME display manager." msgstr "Zaključavanje zaslona zahtijeva GNOME upravitelja zaslona." #: js/ui/messageTray.js:1418 msgid "System Information" msgstr "Informacije sustava" #: js/ui/mpris.js:202 msgid "Unknown artist" msgstr "Nepoznat izvođač" #: js/ui/mpris.js:212 msgid "Unknown title" msgstr "Nepoznat naslov" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:324 msgid "Type to search" msgstr "Upišite za pretragu" #: js/ui/overviewControls.js:402 msgid "Applications" msgstr "Aplikacije" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:71 msgid "Overview" msgstr "Pregled" #: js/ui/padOsd.js:100 msgid "New shortcut…" msgstr "Novi prečac…" #: js/ui/padOsd.js:154 msgid "Application defined" msgstr "Određeno aplikacijom" #: js/ui/padOsd.js:155 msgid "Show on-screen help" msgstr "Prikaži zaslonsku pomoć" #: js/ui/padOsd.js:156 msgid "Switch monitor" msgstr "Prebaci zaslon" #: js/ui/padOsd.js:157 msgid "Assign keystroke" msgstr "Pošalji pritisak tipke" #: js/ui/padOsd.js:226 msgid "Done" msgstr "Završeno" #: js/ui/padOsd.js:743 msgid "Edit…" msgstr "Uredi…" #: js/ui/padOsd.js:785 js/ui/padOsd.js:902 msgid "None" msgstr "Nedodjeljeno" #: js/ui/padOsd.js:856 msgid "Press a button to configure" msgstr "Pritisni tipku za podešavanje" #: js/ui/padOsd.js:857 msgid "Press Esc to exit" msgstr "Pritisni Esc za zatvaranje" #: js/ui/padOsd.js:860 msgid "Press any key to exit" msgstr "Pritisni bilo koju tipku za prekidanje" #: js/ui/panel.js:244 msgid "Activities" msgstr "Aktivnosti" #: js/ui/panel.js:338 msgctxt "System menu in the top bar" msgid "System" msgstr "Sustav" #: js/ui/panel.js:457 msgid "Top Bar" msgstr "Gornja traka" #: js/ui/runDialog.js:58 msgid "Run a Command" msgstr "Pokreni naredbu" #: js/ui/runDialog.js:73 msgid "Press ESC to close" msgstr "Pritisni ESC za zatvaranje" #: js/ui/runDialog.js:238 msgid "Restart is not available on Wayland" msgstr "Ponovno pokretanje nije dostupno na Waylandu" #: js/ui/runDialog.js:243 msgid "Restarting…" msgstr "Ponovno pokretanje…" #: js/ui/screenShield.js:235 msgid "GNOME needs to lock the screen" msgstr "GNOME treba zaključati zaslon" #. We could not become modal, so we can't activate the #. screenshield. The user is probably very upset at this #. point, but any application using global grabs is broken #. Just tell them to stop using this app #. #. XXX: another option is to kick the user into the gdm login #. screen, where we're not affected by grabs #: js/ui/screenShield.js:275 js/ui/screenShield.js:652 msgid "Unable to lock" msgstr "Nemoguće zaključavanje" #: js/ui/screenShield.js:276 js/ui/screenShield.js:653 msgid "Lock was blocked by an application" msgstr "Zaključavanje je blokirala aplikacija" #: js/ui/screenshot.js:1147 msgid "Selection" msgstr "Odabir" #: js/ui/screenshot.js:1157 msgid "Area Selection" msgstr "Područje odabira" #: js/ui/screenshot.js:1162 msgid "Screen" msgstr "Zaslon" #: js/ui/screenshot.js:1172 msgid "Screen Selection" msgstr "Odabir zaslona" #: js/ui/screenshot.js:1177 msgid "Window" msgstr "Prozor" #: js/ui/screenshot.js:1187 msgid "Window Selection" msgstr "Odabir prozora" #: js/ui/screenshot.js:1225 msgid "Screenshot / Screencast" msgstr "Slikanje zaslona / Snimanje zaslona" #: js/ui/screenshot.js:1261 msgid "Show Pointer" msgstr "Prikaži pokazivač" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1849 msgid "Screencasts" msgstr "Snimanje zaslona" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast from 07-17-2013 10:00:46 PM.webm" #: js/ui/screenshot.js:1854 #, no-c-format msgid "Screencast from %d %t.webm" msgstr "Snimka zaslona %d %t.webm" #. Translators: notification source name. #: js/ui/screenshot.js:1920 js/ui/screenshot.js:2132 msgid "Screenshot" msgstr "Slika zaslona" #. Translators: notification title. #: js/ui/screenshot.js:1926 msgid "Screencast recorded" msgstr "Snimka zaslona je snimljena" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:1928 msgid "Click here to view the video." msgstr "Kliknite ovdje kako bi vidjeli snimku." #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:1931 js/ui/screenshot.js:2146 msgid "Show in Files" msgstr "Prikaži u Datotekama" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2092 #, javascript-format msgid "Screenshot from %s" msgstr "Slika zaslona %s" #. Translators: notification title. #: js/ui/screenshot.js:2138 msgid "Screenshot captured" msgstr "Slika zaslona je uslikana" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2140 msgid "You can paste the image from the clipboard." msgstr "Možete zalijepiti sliku iz međuspremnika." #: js/ui/screenshot.js:2193 js/ui/screenshot.js:2358 msgid "Screenshot taken" msgstr "Zaslon uslikan" #: js/ui/search.js:804 msgid "Searching…" msgstr "Pretraživanje…" #: js/ui/search.js:806 msgid "No results." msgstr "Nema rezultata." #: js/ui/search.js:937 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "Još %d" msgstr[1] "Još %d" msgstr[2] "Još %d" #: js/ui/searchController.js:87 msgid "Search" msgstr "Pretraži" #: js/ui/shellEntry.js:20 msgid "Copy" msgstr "Kopiraj" #: js/ui/shellEntry.js:25 msgid "Paste" msgstr "Zalijepi" #: js/ui/shellEntry.js:77 msgid "Show Text" msgstr "Prikaži tekst" #: js/ui/shellEntry.js:79 msgid "Hide Text" msgstr "Sakrij tekst" #: js/ui/shellEntry.js:166 msgid "Caps lock is on." msgstr "Velika slova su uključena." #: js/ui/shellMountOperation.js:286 msgid "Hidden Volume" msgstr "Skriveni uređaj" #: js/ui/shellMountOperation.js:289 msgid "Windows System Volume" msgstr "Uređaj Windows sustava" #: js/ui/shellMountOperation.js:292 msgid "Uses Keyfiles" msgstr "Koristi datoteke ključa" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:299 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead." msgstr "" "Za otključavanje uređaja koji koristi datoteke ključa, koristite %s " "pomagalo." #: js/ui/shellMountOperation.js:307 msgid "PIM Number" msgstr "PIM broj" #: js/ui/shellMountOperation.js:366 msgid "Remember Password" msgstr "Zapamti lozinku" #: js/ui/shellMountOperation.js:381 msgid "Unlock" msgstr "Otključaj" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:392 #, javascript-format msgid "Open %s" msgstr "Otvori %s" #: js/ui/shellMountOperation.js:424 msgid "The PIM must be a number or empty." msgstr "PIM mora biti broj ili prazan." #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:466 #, javascript-format msgid "Unable to start %s" msgstr "Nemoguće pokretanje %s" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:468 #, javascript-format msgid "Couldn’t find the %s application" msgstr "Nemoguć pronalazak %s aplikacije" #: js/ui/status/accessibility.js:34 msgid "Accessibility" msgstr "Pristupačnost" #: js/ui/status/accessibility.js:44 msgid "High Contrast" msgstr "Visok kontrast" #: js/ui/status/accessibility.js:47 msgid "Zoom" msgstr "Uvećano" #: js/ui/status/accessibility.js:54 msgid "Screen Reader" msgstr "Čitač zaslona" #: js/ui/status/accessibility.js:58 msgid "Screen Keyboard" msgstr "Zaslonska tipkovnica" #: js/ui/status/accessibility.js:62 msgid "Visual Alerts" msgstr "Vizualna upozorenja" #: js/ui/status/accessibility.js:65 msgid "Sticky Keys" msgstr "Ljepljive tipke" #: js/ui/status/accessibility.js:68 msgid "Slow Keys" msgstr "Spore tipke" #: js/ui/status/accessibility.js:71 msgid "Bounce Keys" msgstr "Odbijanje tipki" #: js/ui/status/accessibility.js:74 msgid "Mouse Keys" msgstr "Tipke miša" #: js/ui/status/accessibility.js:131 msgid "Large Text" msgstr "Velik tekst" #: js/ui/status/autoRotate.js:14 msgid "Auto Rotate" msgstr "Automatsko zakretanje" #: js/ui/status/bluetooth.js:171 msgid "Bluetooth" msgstr "Bluetooth" #: js/ui/status/brightness.js:34 msgid "Brightness" msgstr "Svjetlina" #: js/ui/status/darkMode.js:11 msgid "Dark Mode" msgstr "Tamna tema" #: js/ui/status/dwellClick.js:12 msgid "Single Click" msgstr "Jednostruki klik" #: js/ui/status/dwellClick.js:17 msgid "Double Click" msgstr "Dvostruki klik" #: js/ui/status/dwellClick.js:22 msgid "Drag" msgstr "Povlačenje" #: js/ui/status/dwellClick.js:27 msgid "Secondary Click" msgstr "Pomoćni klik" #: js/ui/status/dwellClick.js:36 msgid "Dwell Click" msgstr "Zadržani klik" #: js/ui/status/keyboard.js:830 msgid "Keyboard" msgstr "Tipkovnica" #: js/ui/status/keyboard.js:847 msgid "Show Keyboard Layout" msgstr "Prikaži raspored tipkovnice" #: js/ui/status/location.js:330 msgid "Allow location access" msgstr "Dopusti pristup lokaciji" #. Translators: %s is an application name #: js/ui/status/location.js:332 #, javascript-format msgid "The app %s wants to access your location" msgstr "Aplikacija %s želi pristupiti vašoj lokaciji" #: js/ui/status/location.js:342 msgid "Location access can be changed at any time from the privacy settings." msgstr "" "Pristup lokaciji može se promijeniti u svako vrijeme iz postavka privatnosti." #: js/ui/status/network.js:53 msgid "" msgstr "" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:356 #, javascript-format msgid "Disconnect %s" msgstr "Prekini povezivanje s %s" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:358 #, javascript-format msgid "Connect to %s" msgstr "Povežite se s %s" #. Translators: %s is a network identifier #: js/ui/status/network.js:1107 #, javascript-format msgid "%s Hotspot" msgstr "%s pristupna točka" #: js/ui/status/nightLight.js:20 msgid "Night Light" msgstr "Noćno osvjetljenje" #: js/ui/status/powerProfiles.js:20 msgctxt "Power profile" msgid "Performance" msgstr "Performanse" #: js/ui/status/powerProfiles.js:25 msgctxt "Power profile" msgid "Balanced" msgstr "Uravnoteženo" #: js/ui/status/powerProfiles.js:30 msgctxt "Power profile" msgid "Power Saver" msgstr "Štednja energije" #: js/ui/status/powerProfiles.js:68 msgid "Power Profiles" msgstr "Profili energije" #: js/ui/status/remoteAccess.js:74 msgid "Stop Screencast" msgstr "Zaustavi snimanje zaslona" #: js/ui/status/remoteAccess.js:144 msgid "Stop Screen Sharing" msgstr "Zaustavi dijeljenje zaslona" #: js/ui/status/rfkill.js:96 msgid "Airplane Mode" msgstr "Zrakoplovni način rada" #: js/ui/status/system.js:90 #, javascript-format msgid "%d %%" msgstr "%d %%" #. Translators: entry in the window right click menu. #: js/ui/status/system.js:105 js/ui/windowMenu.js:29 msgid "Take Screenshot" msgstr "Uslikaj sliku zaslona" #: js/ui/status/system.js:161 msgid "Power Off Menu" msgstr "Izbornik isključivanja" #: js/ui/status/system.js:169 msgid "Suspend" msgstr "Suspendiraj" #: js/ui/status/system.js:174 msgid "Restart…" msgstr "Ponovno pokreni…" #: js/ui/status/system.js:179 msgid "Power Off…" msgstr "Isključivanje…" #: js/ui/status/system.js:186 #: subprojects/extensions-app/data/ui/extensions-window.ui:190 msgid "Log Out…" msgstr "Odjava…" #: js/ui/status/system.js:191 msgid "Switch User…" msgstr "Zamijeni korisnika…" #: js/ui/status/system.js:235 msgctxt "action" msgid "Lock Screen" msgstr "Zaključavanje zaslona" #: js/ui/status/thunderbolt.js:256 msgid "Thunderbolt" msgstr "Thunderbolt" #: js/ui/status/thunderbolt.js:317 msgid "Unknown Thunderbolt device" msgstr "Nepoznati Thunderbolt uređaj" #: js/ui/status/thunderbolt.js:318 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" "Otkriven je novi uređaj dok ste bili odsutni. Odspojite i ponovno spojite " "uređaj kako bi ga mogli koristiti." #: js/ui/status/thunderbolt.js:321 msgid "Unauthorized Thunderbolt device" msgstr "Neovlašteni Thunderbolt uređaj" #: js/ui/status/thunderbolt.js:322 msgid "" "New device has been detected and needs to be authorized by an administrator." msgstr "Novi uređaj je otkriven i mora biti ovjeren od strane administratora." #: js/ui/status/thunderbolt.js:328 msgid "Thunderbolt authorization error" msgstr "Greška Thunderbolt odobravanja" #: js/ui/status/thunderbolt.js:329 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "Nemoguće odobravanje Thunderbolt uređaja: %s" #: js/ui/status/volume.js:191 msgid "Volume changed" msgstr "Glasnoća zvuka promijenjena" #: js/ui/status/volume.js:253 msgid "Volume" msgstr "Glasnoća zvuka" #: js/ui/status/volume.js:269 msgid "Sound Output" msgstr "Zvučni izlaz" #: js/ui/status/volume.js:337 msgid "Sound Input" msgstr "Zvučni ulaz" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:20 msgid "Mirror" msgstr "Zrcaljenje" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:29 msgid "Join Displays" msgstr "Spoji zaslone" #. Translators: this is for using only an external display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:39 msgid "External Only" msgstr "Samo vanjski" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:47 msgid "Built-in Only" msgstr "Samo ugrađeni" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:364 msgid "%A %B %-d" msgstr "%A, %-d. %B" #: js/ui/unlockDialog.js:370 msgid "Swipe up to unlock" msgstr "Povuci za otključavanje" #: js/ui/unlockDialog.js:371 msgid "Click or press a key to unlock" msgstr "Klikni ili pritisni tipku za otključavanje" #: js/ui/unlockDialog.js:554 msgid "Unlock Window" msgstr "Otključaj prozor" #: js/ui/unlockDialog.js:563 msgid "Log in as another user" msgstr "Prijavi se kao drugi korisnik" #: js/ui/welcomeDialog.js:36 #, javascript-format msgid "Welcome to GNOME %s" msgstr "Dobrodošli u GNOME %s" #: js/ui/welcomeDialog.js:37 msgid "If you want to learn your way around, check out the tour." msgstr "Ako se želite lakše snaći, pogledajte vodič." #: js/ui/welcomeDialog.js:46 msgid "No Thanks" msgstr "Ne hvala" #: js/ui/welcomeDialog.js:51 msgid "Take Tour" msgstr "Pokreni vodič" #: js/ui/windowAttentionHandler.js:20 #, javascript-format msgid "“%s” is ready" msgstr "“%s” je spreman" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:62 msgid "Keep these display settings?" msgstr "Želite li zadržati ove postavke zaslona?" #: js/ui/windowManager.js:72 msgid "Revert Settings" msgstr "Vrati postavke" #: js/ui/windowManager.js:77 msgid "Keep Changes" msgstr "Zadrži promjene" #: js/ui/windowManager.js:97 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "Promjene postavka će se vratiti za %d sekundu" msgstr[1] "Promjene postavka će se vratiti za %d sekunde" msgstr[2] "Promjene postavka će se vratiti za %d sekundi" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:544 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:41 msgid "Hide" msgstr "Sakrij" #: js/ui/windowMenu.js:48 msgid "Restore" msgstr "Prikaži u prozoru" #: js/ui/windowMenu.js:52 msgid "Maximize" msgstr "Uvećaj" #: js/ui/windowMenu.js:59 msgid "Move" msgstr "Pomakni" #: js/ui/windowMenu.js:65 msgid "Resize" msgstr "Promjena veličine" #: js/ui/windowMenu.js:72 msgid "Move Titlebar Onscreen" msgstr "Premjesti naslovnu traku na zaslom" #: js/ui/windowMenu.js:77 msgid "Always on Top" msgstr "Uvijek na vrhu" #: js/ui/windowMenu.js:96 msgid "Always on Visible Workspace" msgstr "Uvijek na vidljivom radnom prostoru" #: js/ui/windowMenu.js:110 msgid "Move to Workspace Left" msgstr "Premjesti na lijevi radni prostor" #: js/ui/windowMenu.js:116 msgid "Move to Workspace Right" msgstr "Premjesti na desni radni prostor" #: js/ui/windowMenu.js:122 msgid "Move to Workspace Up" msgstr "Premjesti na gornji radni prostor" #: js/ui/windowMenu.js:128 msgid "Move to Workspace Down" msgstr "Premjesti na donji radni prostor" #: js/ui/windowMenu.js:146 msgid "Move to Monitor Up" msgstr "Premjesti na gornji zaslon" #: js/ui/windowMenu.js:155 msgid "Move to Monitor Down" msgstr "Premjesti na donji zaslon" #: js/ui/windowMenu.js:164 msgid "Move to Monitor Left" msgstr "Premjesti na lijevi zaslon" #: js/ui/windowMenu.js:173 msgid "Move to Monitor Right" msgstr "Premjesti na desni zaslon" #: js/ui/windowMenu.js:181 msgid "Close" msgstr "Zatvori" #: src/calendar-server/evolution-calendar.desktop.in:3 msgid "Evolution Calendar" msgstr "Evolution kalendar" #: src/main.c:435 subprojects/extensions-tool/src/main.c:321 msgid "Print version" msgstr "Prikaži inačicu" #: src/main.c:441 msgid "Mode used by GDM for login screen" msgstr "Način koji koristi GDM za zaslon prijave" #: src/main.c:447 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "Koristi određen način, npr. \"gdm\" za zaslon prijave" #: src/main.c:453 msgid "List possible modes" msgstr "Popis mogućih načina" #: src/shell-app.c:305 msgctxt "program" msgid "Unknown" msgstr "Nepoznat" #: src/shell-app.c:556 #, c-format msgid "Failed to launch “%s”" msgstr "Neuspješno pokretanje “%s”" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match." msgstr "Lozinke se ne podudaraju." #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "Lozinka ne može biti prazna" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "Dijalog ovjere je prekinut od strane korisnika" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/js/main.js:212 #: subprojects/extensions-app/data/ui/extensions-window.ui:18 #: subprojects/extensions-app/data/ui/extensions-window.ui:83 msgid "Extensions" msgstr "Proširenja" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 msgid "Manage your GNOME Extensions" msgstr "Upravljajte svojim GNOME proširenjima" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:17 #: subprojects/extensions-app/js/main.js:216 msgid "The GNOME Project" msgstr "GNOME projekt" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:36 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" "GNOME Proširenja rukuje nadopunama proširenja, podešavanjem osobitostima " "proširenja i uklanjanjem ili onemogućavanjem neželjenih proširenja." #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "Podesi proširenja GNOME ljuske" #: subprojects/extensions-app/js/main.js:130 #: subprojects/extensions-app/js/main.js:141 msgid "No Matches" msgstr "Nema podudaranja" #: subprojects/extensions-app/js/main.js:169 #, javascript-format msgid "Remove “%s”?" msgstr "Ukloni “%s”?" #: subprojects/extensions-app/js/main.js:170 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "" "Ako uklonite ovo proširenje, morate se vratiti kako bi ga preuzeli i ponovno " "omogućili" #: subprojects/extensions-app/js/main.js:174 msgid "Remove" msgstr "Ukloni" #: subprojects/extensions-app/js/main.js:211 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " ACT Hacklab https://launchpad.net/~stjepan-amajk\n" " Ante Karamatić https://launchpad.net/~ivoks\n" " Dražen Odobašić https://launchpad.net/~dodobas\n" " Frane https://launchpad.net/~kob4lt\n" " Miro Glavić https://launchpad.net/~klek\n" " Miroslav Matejaš https://launchpad.net/~silverspace+amd64\n" " Saša Teković https://launchpad.net/~hseagle2015\n" " Senko Rasic https://launchpad.net/~senko\n" " Tomislav Krznar https://launchpad.net/~tomislav-krznar\n" " gogo https://launchpad.net/~trebelnik-stefina" #: subprojects/extensions-app/js/main.js:339 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "%d proširenje će se nadopuniti pri sljedećoj prijavi." msgstr[1] "%d proširenja će se nadopuniti pri sljedećoj prijavi." msgstr[2] "%d proširenja će se nadopuniti pri sljedećoj prijavi." #: subprojects/extensions-app/js/main.js:481 msgid "The extension is incompatible with the current GNOME version" msgstr "Proširenje je nekompatibilno s trenutnom GNOME inačicom" #: subprojects/extensions-app/js/main.js:484 #: subprojects/extensions-app/data/ui/extension-row.ui:52 msgid "The extension had an error" msgstr "Proširenje sadrži grešku" #: subprojects/extensions-app/data/ui/extension-row.ui:62 msgid "The extension can be updated" msgstr "Proširenje se može nadopuniti" #: subprojects/extensions-app/data/ui/extension-row.ui:112 msgid "Website" msgstr "Web stranica" #: subprojects/extensions-app/data/ui/extension-row.ui:134 msgid "Remove…" msgstr "Ukloni…" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Help" msgstr "Pomoć" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "O proširenju" #: subprojects/extensions-app/data/ui/extensions-window.ui:84 msgid "" "Extensions can cause performance and stability issues. Disable extensions if " "you encounter problems with your system." msgstr "" "Proširenja mogu uzrokovati probleme s performansama i stabilnošću. " "Onemogućite proširenja ako naiđete na probleme u svojem sustavu." #: subprojects/extensions-app/data/ui/extensions-window.ui:98 msgid "Manually Installed" msgstr "Ručno instalirana" #: subprojects/extensions-app/data/ui/extensions-window.ui:99 #: subprojects/extensions-app/data/ui/extensions-window.ui:134 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" "Kako bi pronašli i dodali proširenja, posjetite extensions.gnome.org." #: subprojects/extensions-app/data/ui/extensions-window.ui:112 msgid "Built-In" msgstr "Ugrađena" #: subprojects/extensions-app/data/ui/extensions-window.ui:133 msgid "No Installed Extensions" msgstr "Nema instaliranih proširenja" #: subprojects/extensions-app/data/ui/extensions-window.ui:145 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" "Nažalost, nije moguće dobiti popis instaliranih proširenja. Pobrinite se da " "ste prijavljeni u GNOME i pokušajte ponovno." #: subprojects/extensions-app/data/ui/extensions-window.ui:175 msgid "Extension Updates Ready" msgstr "Nadopune proširenja su spremne" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:222 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "Novo proširenje je uspješno stvoreno u %s.\n" #: subprojects/extensions-tool/src/command-create.c:296 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" "Naziv treba biti vrlo kratak (idealno opisni) izraz.\n" "Primjeri su: %s" #: subprojects/extensions-tool/src/command-create.c:302 #: subprojects/extensions-tool/src/main.c:238 msgid "Name" msgstr "Naziv" #: subprojects/extensions-tool/src/command-create.c:316 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" "Opis je objašnjenje namjene proširenja u jednoj rečenici.\n" "Primjeri su: %s" #: subprojects/extensions-tool/src/command-create.c:322 #: subprojects/extensions-tool/src/main.c:241 msgid "Description" msgstr "Opis" #: subprojects/extensions-tool/src/command-create.c:336 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" "UUID je globalno jedinstveni identifikator vašeg proširenja.\n" "Trebao bi biti u formatu adrese e-pošte (clicktofocus@janedoe.primjer.com)\n" #: subprojects/extensions-tool/src/command-create.c:363 msgid "Choose one of the available templates:\n" msgstr "Odaberite jedan od dostupnih predložaka:\n" #: subprojects/extensions-tool/src/command-create.c:377 msgid "Template" msgstr "Predložak" #: subprojects/extensions-tool/src/command-create.c:432 msgid "The unique identifier of the new extension" msgstr "Jedinstveni identifikator novog proširenja" #: subprojects/extensions-tool/src/command-create.c:435 msgid "NAME" msgstr "NAZIV" #: subprojects/extensions-tool/src/command-create.c:436 msgid "The user-visible name of the new extension" msgstr "Korisniku vidljiv naziv novog proširenja" #: subprojects/extensions-tool/src/command-create.c:438 msgid "DESCRIPTION" msgstr "OPIS" #: subprojects/extensions-tool/src/command-create.c:440 msgid "A short description of what the extension does" msgstr "Kratak opis namjene proširenja" #: subprojects/extensions-tool/src/command-create.c:443 msgid "TEMPLATE" msgstr "PREDLOŽAK" #: subprojects/extensions-tool/src/command-create.c:444 msgid "The template to use for the new extension" msgstr "Predložak za korištenje s novim proširenjem" #: subprojects/extensions-tool/src/command-create.c:450 msgid "Enter extension information interactively" msgstr "Upišite interaktivno informacije proširenja" #: subprojects/extensions-tool/src/command-create.c:458 msgid "Create a new extension" msgstr "Stvori novo proširenje" #: subprojects/extensions-tool/src/command-create.c:476 #: subprojects/extensions-tool/src/command-list.c:172 msgid "Unknown arguments" msgstr "Nepoznati argumenti" #: subprojects/extensions-tool/src/command-create.c:501 msgid "UUID, name and description are required" msgstr "UUID, naziv i opis su potrebni" #: subprojects/extensions-tool/src/command-disable.c:46 #: subprojects/extensions-tool/src/command-enable.c:46 #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:64 #: subprojects/extensions-tool/src/main.c:146 msgid "Failed to connect to GNOME Shell\n" msgstr "Neuspjelo povezivanje s GNOME ljuskom\n" #: subprojects/extensions-tool/src/command-disable.c:53 #: subprojects/extensions-tool/src/command-enable.c:53 #, c-format msgid "Extension “%s” does not exist\n" msgstr "Proširenje “%s” ne postoji\n" #: subprojects/extensions-tool/src/command-disable.c:101 msgid "Disable an extension" msgstr "Onemogući proširenje" #: subprojects/extensions-tool/src/command-disable.c:119 #: subprojects/extensions-tool/src/command-enable.c:119 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "UUID nije naveden" #: subprojects/extensions-tool/src/command-disable.c:124 #: subprojects/extensions-tool/src/command-enable.c:124 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "Naveden je više od jednog UUID-a" #: subprojects/extensions-tool/src/command-enable.c:101 msgid "Enable an extension" msgstr "Omogući proširenje" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:155 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "Proširenje “%s” ne postoji\n" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "Prikaži informacije proširenja" #: subprojects/extensions-tool/src/command-install.c:173 msgid "Overwrite an existing extension" msgstr "Prebriši postojeće proširenje" #: subprojects/extensions-tool/src/command-install.c:175 msgid "EXTENSION_BUNDLE" msgstr "PAKET_PROŠIRENJA" #: subprojects/extensions-tool/src/command-install.c:184 msgid "Install an extension bundle" msgstr "Instaliraj paket proširenja" #: subprojects/extensions-tool/src/command-install.c:202 msgid "No extension bundle specified" msgstr "Nema odabranih paketa proširenja" #: subprojects/extensions-tool/src/command-install.c:208 msgid "More than one extension bundle specified" msgstr "Odabrano je više od jednog paketa proširenja" #: subprojects/extensions-tool/src/command-list.c:128 msgid "Show user-installed extensions" msgstr "Prikaži proširenja instalirana od strane korisnika" #: subprojects/extensions-tool/src/command-list.c:131 msgid "Show system-installed extensions" msgstr "Prikaži proširenja instalirana od strane sustava" #: subprojects/extensions-tool/src/command-list.c:134 msgid "Show enabled extensions" msgstr "Prikaži omogućena proširenja" #: subprojects/extensions-tool/src/command-list.c:137 msgid "Show disabled extensions" msgstr "Prikaži onemogućena proširenja" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show extensions with preferences" msgstr "Prikaži proširenja s postavkama" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show extensions with updates" msgstr "Prikaži proširenja s nadopunama" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Print extension details" msgstr "Prikaži pojedinosti proširenja" #: subprojects/extensions-tool/src/command-list.c:154 msgid "List installed extensions" msgstr "Prikaži instalirana proširenja" #: subprojects/extensions-tool/src/command-pack.c:450 msgid "FILE" msgstr "DATOTEKA" #: subprojects/extensions-tool/src/command-pack.c:451 msgid "Additional source to include in the bundle" msgstr "Dodatni izvor za uključiti u paket" #: subprojects/extensions-tool/src/command-pack.c:454 msgid "SCHEMA" msgstr "SHEMA" #: subprojects/extensions-tool/src/command-pack.c:455 msgid "A GSettings schema that should be included" msgstr "GSettings shema koja treba biti uključena" #: subprojects/extensions-tool/src/command-pack.c:457 #: subprojects/extensions-tool/src/command-pack.c:468 msgid "DIRECTORY" msgstr "MAPA" #: subprojects/extensions-tool/src/command-pack.c:459 msgid "The directory where translations are found" msgstr "Mapa gdje su prijevodi pronađeni" #: subprojects/extensions-tool/src/command-pack.c:461 msgid "DOMAIN" msgstr "DOMENA" #: subprojects/extensions-tool/src/command-pack.c:463 msgid "The gettext domain to use for translations" msgstr "gettext domena za korištenje s prijevodima" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "Overwrite an existing pack" msgstr "Prebriši postojeći paket" #: subprojects/extensions-tool/src/command-pack.c:470 msgid "The directory where the pack should be created" msgstr "Mapa gdje će se paket stvoriti" #: subprojects/extensions-tool/src/command-pack.c:472 msgid "SOURCE_DIRECTORY" msgstr "IZVORNA_MAPA" #: subprojects/extensions-tool/src/command-pack.c:481 msgid "Create an extension bundle" msgstr "Stvori paket proširenja" #: subprojects/extensions-tool/src/command-pack.c:501 msgid "More than one source directory specified" msgstr "Određeno je više od jedne izvorne mape" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "Proširenje “%s” ne sadrži osobitosti\n" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "Neuspjelo otvaranje osobitosti za proširenje “%s”: %s\n" #: subprojects/extensions-tool/src/command-prefs.c:87 msgid "Opens extension preferences" msgstr "Otvara osobitosti proširenja" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "Vrati proširenje na izvorno" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "Nemoguće je uklanjanje proširenja sustava\n" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "Nemoguće je ukloniti “%s”\n" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "Ukloni proširenje" #: subprojects/extensions-tool/src/main.c:72 msgid "Do not print error messages" msgstr "Ne ispisuj poruke greške" #: subprojects/extensions-tool/src/main.c:244 msgid "Path" msgstr "Putanja" #: subprojects/extensions-tool/src/main.c:247 msgid "URL" msgstr "URL" #: subprojects/extensions-tool/src/main.c:250 msgid "Original author" msgstr "Izvorni autor" #: subprojects/extensions-tool/src/main.c:253 msgid "Version" msgstr "Inačica" #: subprojects/extensions-tool/src/main.c:256 msgid "State" msgstr "Stanje" #: subprojects/extensions-tool/src/main.c:294 msgid "“version” takes no arguments" msgstr "“version” ne sadrži argumente" #: subprojects/extensions-tool/src/main.c:296 #: subprojects/extensions-tool/src/main.c:316 msgid "Usage:" msgstr "Upotreba:" #: subprojects/extensions-tool/src/main.c:299 msgid "Print version information and exit." msgstr "Prikaži informaciju inačice i izađi." #: subprojects/extensions-tool/src/main.c:314 #: subprojects/extensions-tool/src/main.c:317 msgid "COMMAND" msgstr "NAREDBA" #: subprojects/extensions-tool/src/main.c:317 msgid "[ARGS…]" msgstr "[ARGUMENTI…]" #: subprojects/extensions-tool/src/main.c:319 msgid "Commands:" msgstr "Naredbe:" #: subprojects/extensions-tool/src/main.c:320 msgid "Print help" msgstr "Prikaži inačicu" #: subprojects/extensions-tool/src/main.c:322 msgid "Enable extension" msgstr "Omogući proširenje" #: subprojects/extensions-tool/src/main.c:323 msgid "Disable extension" msgstr "Onemogući proširenje" #: subprojects/extensions-tool/src/main.c:324 msgid "Reset extension" msgstr "Vrati proširenje na izvorno" #: subprojects/extensions-tool/src/main.c:325 msgid "Uninstall extension" msgstr "Ukloni proširenje" #: subprojects/extensions-tool/src/main.c:326 msgid "List extensions" msgstr "Prikaži proširenja" #: subprojects/extensions-tool/src/main.c:327 #: subprojects/extensions-tool/src/main.c:328 msgid "Show extension info" msgstr "Prikaži informacije proširenja" #: subprojects/extensions-tool/src/main.c:329 msgid "Open extension preferences" msgstr "Otvori osobitosti proširenja" #: subprojects/extensions-tool/src/main.c:330 msgid "Create extension" msgstr "Stvori proširenje" #: subprojects/extensions-tool/src/main.c:331 msgid "Package extension" msgstr "Paket proširenja" #: subprojects/extensions-tool/src/main.c:332 msgid "Install extension bundle" msgstr "Instaliraj paket proširenja" #: subprojects/extensions-tool/src/main.c:334 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "Koristi “%s” za dobivanje opširnije pomoći.\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "Obično" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "Prazno proširenje" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "Indikator" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "Dodaj ikonu na gornju traku" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1907 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u izlaz" msgstr[1] "%u izlaza" msgstr[2] "%u izlaza" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1917 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u ulaz" msgstr[1] "%u ulaza" msgstr[2] "%u ulaza" #: subprojects/gvc/gvc-mixer-control.c:2867 msgid "System Sounds" msgstr "Zvukovi sustava" #~ msgid "Log Out" #~ msgstr "Odjava" #~ msgid "Bluetooth Settings" #~ msgstr "Bluetooth postavke" #, javascript-format #~ msgid "%d Connected" #~ msgid_plural "%d Connected" #~ msgstr[0] "%d povezan" #~ msgstr[1] "%d povezana" #~ msgstr[2] "%d povezanih" #~ msgid "Bluetooth On" #~ msgstr "Bluetooth je uključen" #~ msgid "Bluetooth Off" #~ msgstr "Bluetooth je isključen" #~ msgid "Location Enabled" #~ msgstr "Lokacija omogućena" #~ msgid "Disable" #~ msgstr "Onemogući" #~ msgid "Privacy Settings" #~ msgstr "Postavke privatnost" #~ msgid "Location In Use" #~ msgstr "Lokacija se već koristi" #~ msgid "Location Disabled" #~ msgstr "Lokacija onemogućena" #~ msgid "Enable" #~ msgstr "Omogući" #, javascript-format #~ msgid "%s Off" #~ msgstr "%s isključena" #, javascript-format #~ msgid "%s Connected" #~ msgstr "%s povezana" #, javascript-format #~ msgid "%s Unmanaged" #~ msgstr "%s neupravljana" #, javascript-format #~ msgid "%s Connecting" #~ msgstr "%s povezivanje" #, javascript-format #~ msgid "%s Requires Authentication" #~ msgstr "%s zahtijeva ovjeru" #, javascript-format #~ msgid "Firmware Missing For %s" #~ msgstr "Nedostaje firmver za %s" #, javascript-format #~ msgid "%s Unavailable" #~ msgstr "%s nedostupna" #, javascript-format #~ msgid "%s Connection Failed" #~ msgstr "%s neuspješno povezivanje" #~ msgid "Wired Settings" #~ msgstr "Postavke žične mreže" #~ msgid "Mobile Broadband Settings" #~ msgstr "Mobilni internet" #, javascript-format #~ msgid "%s Hardware Disabled" #~ msgstr "%s hardverski onemogućena" #, javascript-format #~ msgid "%s Disabled" #~ msgstr "%s onemogućeno" #~ msgid "Connect to Internet" #~ msgstr "Povežite se na internet" #~ msgid "Airplane Mode is On" #~ msgstr "Zrakoplovni način rada je omogućen" #~ msgid "Wi-Fi is disabled when airplane mode is on." #~ msgstr "Bežična mreža je onemogućena u zrakoplovnom načinu rada." #~ msgid "Turn Off Airplane Mode" #~ msgstr "Isključi zrakoplovni način rada" #~ msgid "Wi-Fi is Off" #~ msgstr "Bežična mreža isključena" #~ msgid "Wi-Fi needs to be turned on in order to connect to a network." #~ msgstr "Bežična mreža se mora uključiti kako bi se povezala s internetom." #~ msgid "Turn On Wi-Fi" #~ msgstr "Uključi bežičnu mrežu" #~ msgid "Wi-Fi Networks" #~ msgstr "Bežične mreže" #~ msgid "Select a network" #~ msgstr "Odaberi mrežu" #~ msgid "No Networks" #~ msgstr "Nema mreža" #~ msgid "Use hardware switch to turn off" #~ msgstr "Koristi hardverski prekidač za isključivanje" #~ msgid "Select Network" #~ msgstr "Odaberi mrežu" #~ msgid "Wi-Fi Settings" #~ msgstr "Postavke bežične mreže" #, javascript-format #~ msgid "%s Not Connected" #~ msgstr "%s nije povezana" #~ msgid "connecting…" #~ msgstr "povezivanje…" #~ msgid "authentication required" #~ msgstr "potrebna je ovjera" #~ msgid "connection failed" #~ msgstr "neuspješno povezivanje" #~ msgid "VPN Settings" #~ msgstr "VPN postavke" #~ msgid "VPN" #~ msgstr "VPN" #~ msgid "VPN Off" #~ msgstr "VPN isključen" #~ msgid "Network Settings" #~ msgstr "Mrežne postavke" #, javascript-format #~ msgid "%s Wired Connection" #~ msgid_plural "%s Wired Connections" #~ msgstr[0] "%s žično povezivanje" #~ msgstr[1] "%s žična povezivanja" #~ msgstr[2] "%s žičnih povezivanja" #, javascript-format #~ msgid "%s Wi-Fi Connection" #~ msgid_plural "%s Wi-Fi Connections" #~ msgstr[0] "%s bežično povezivanje" #~ msgstr[1] "%s bežična povezivanja" #~ msgstr[2] "%s bežičnih povezivanja" #, javascript-format #~ msgid "%s Modem Connection" #~ msgid_plural "%s Modem Connections" #~ msgstr[0] "%s modemsko povezivanje" #~ msgstr[1] "%s modemska povezivanja" #~ msgstr[2] "%s modemskih povezivanja" #~ msgid "Connection failed" #~ msgstr "Neuspješno povezivanje" #~ msgid "Activation of network connection failed" #~ msgstr "Aktiviranje mrežnog povezivanja je neuspjelo" #~ msgid "Night Light Disabled" #~ msgstr "Noćno osvjetljenje onemogućeno" #~ msgid "Resume" #~ msgstr "Nastavi" #~ msgid "Disable Until Tomorrow" #~ msgstr "Onemogući do sutra" #~ msgid "Power Settings" #~ msgstr "Postavke energije" #~ msgid "Fully Charged" #~ msgstr "Potpuno napunjeno" #~ msgid "Not Charging" #~ msgstr "Ne puni se" #~ msgid "Estimating…" #~ msgstr "Procjenjivanje…" #, javascript-format #~ msgid "%d∶%02d Remaining (%d %%)" #~ msgstr "%d∶%02d preostalo (%d %%)" #, javascript-format #~ msgid "%d∶%02d Until Full (%d %%)" #~ msgstr "%d∶%02d preostalo do napunjenosti (%d %%)" #~ msgid "Screen is Being Shared" #~ msgstr "Zaslon se trenutno dijeli" #~ msgid "Turn off" #~ msgstr "Isključi" #~ msgid "Lock" #~ msgstr "Zaključaj" #~ msgid "Power Off / Log Out" #~ msgstr "Isključivanje / Odjavljivanje" #~ msgid "Remove from Favorites" #~ msgstr "Ukloni iz omiljenih" #~ msgid "Add to Favorites" #~ msgstr "Dodaj u omiljene" #~ msgid "Author" #~ msgstr "Autor" #~ msgid "Warning" #~ msgstr "Upozorenje" #~ msgid "" #~ "Extensions can cause system issues, including performance problems. If " #~ "you encounter problems with your system, it is recommended to disable all " #~ "extensions." #~ msgstr "" #~ "Proširenja mogu prouzrokovati probleme u radu sustava, uključujući " #~ "probleme s performansama. Ako se pojave problemi sa sustavom, " #~ "preporučljivo je onemogućavanje svih proširenja." #~ msgid "Failed to connect to GNOME Shell" #~ msgstr "Neuspjelo povezivanje s GNOME ljuskom" #~ msgid "Enable introspection API" #~ msgstr "Omogući API samoispitivanja" #~ msgid "" #~ "Enables a D-Bus API that allows to introspect the application state of " #~ "the shell." #~ msgstr "" #~ "Omogućuje D-Bus API koji omogućuje samoispitivanje stanja aplikacije " #~ "ljuske." #~ msgid "Minimize" #~ msgstr "Smanji" #~ msgid "Unmaximize" #~ msgstr "Prikaži u prozoru" #~ msgid "App Picker View" #~ msgstr "Prikaz odabira aplikacije" #~ msgid "Index of the currently selected view in the application picker." #~ msgstr "Sadržaj trenutno odabranog prikaza u odabiru aplikacija." #~ msgid "Copy Error" #~ msgstr "Kopiraj grešku" #~ msgid "Frequently used applications will appear here" #~ msgstr "Najčešće korištene aplikacije će se pojaviti ovdje" #~ msgid "Frequent" #~ msgstr "Najčešće" #~ msgid "All" #~ msgstr "Sve" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d" #~ msgstr "%A, %-d. %B" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d, %Y" #~ msgstr "%A, %-d. %B, %Y" #~ msgid "Off" #~ msgstr "Isključeno" #~ msgid "On" #~ msgstr "Uključeno" #~ msgid "Browse in Software" #~ msgstr "Pregledaj u Softveru" #~ msgid "Next" #~ msgstr "Sljedeće" #~ msgctxt "button" #~ msgid "Sign In" #~ msgstr "Prijava" #~ msgid "Password: " #~ msgstr "Lozinka: " #~ msgid "Enter Password…" #~ msgstr "Upišite lozinku…" #~ msgid "%A, %B %d" #~ msgstr "%A, %d %B" #~ msgid "%d new message" #~ msgid_plural "%d new messages" #~ msgstr[0] "%d nova poruka" #~ msgstr[1] "%d nove poruke" #~ msgstr[2] "%d novih poruka" #~ msgid "%d new notification" #~ msgid_plural "%d new notifications" #~ msgstr[0] "%d nova obavijest" #~ msgstr[1] "%d nove obavijesti" #~ msgstr[2] "%d novih obavijesti" #~ msgctxt "search-result" #~ msgid "Lock Orientation" #~ msgstr "Zaključavanje orjentacije" #~ msgid "Rename" #~ msgstr "Preimenuj" #~ msgid "Password:" #~ msgstr "Lozinka:" #~ msgid "Type again:" #~ msgstr "Pokušaj ponovno:" #~ msgid "Authentication required by wireless network" #~ msgstr "Potrebna je ovjera za bežičnu mrežu" #~ msgid "Mobile broadband network password" #~ msgstr "Lozinka mreže mobilnog interneta" #~ msgid "Account Settings" #~ msgstr "Postavke računa" #~ msgid "Orientation Lock" #~ msgstr "Zaključavanje orjentacije" #~ msgid "" #~ "Keybinding that pauses and resumes all running tweens, for debugging " #~ "purposes" #~ msgstr "" #~ "Prečac tipkovnice za pauziranje i nastavljanje svih pokrenutih duplikata, " #~ "u svrhu otklanjanja grešaka" #~ msgid "Which keyboard to use" #~ msgstr "Koju tipkovnicu koristiti" #~ msgid "The type of keyboard to use." #~ msgstr "Vrsta tipkovnice koja se koristi." #~ msgid "toggle-switch-us" #~ msgstr "toggle-switch-us" #~ msgid "network-workgroup" #~ msgstr "network-workgroup" #~ msgid "There was an error loading the preferences dialog for %s:" #~ msgstr "Dogodila se greška učitavanja dijaloga osobitosti za %s:" #~ msgid "%s all day." #~ msgstr "%s cijeli dan." #~ msgid "%s, then %s later." #~ msgstr "%s, zatim %s kasnije." #~ msgid "%s, then %s, followed by %s later." #~ msgstr "%s, zatim %s, praćena s %s kasnije." #~ msgid "Feels like %s." #~ msgstr "Kao da je %s." #~ msgctxt "search-result" #~ msgid "Log out" #~ msgstr "Odjava" #~ msgctxt "search-result" #~ msgid "Switch user" #~ msgstr "Zamjena korisnika" #~ msgid "Hide tray" #~ msgstr "Sakrij traku stanja" #~ msgid "Status Icons" #~ msgstr "Ikona stanja" #~ msgid "Web Authentication Redirect" #~ msgstr "Web ovjera je preusmjerena" #~ msgid "Events" #~ msgstr "Događaji" #~ msgid "Notifications" #~ msgstr "Obavijesti" #~ msgid "Media" #~ msgstr "Medij" #~ msgid "Not In Use" #~ msgstr "Ne koristi se" #~ msgid "%d x %d" #~ msgstr "%d x %d" 0707010000023A000081A40000000000000000000000016712993F00019A1B000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/hu.po# Hungarian translation for gnome-shell. # Copyright 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024 Free Software Foundation, Inc. # This file is distributed under the same license as the gnome-shell package. # # Gabor Kelemen , 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016. # Lukács Bence , 2012. # Balázs Meskó , 2014, 2019, 2020, 2021, 2024. # Balázs Úr , 2012, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024. msgid "" msgstr "" "Project-Id-Version: gnome-shell master\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues/\n" "POT-Creation-Date: 2024-09-02 08:28+0000\n" "PO-Revision-Date: 2024-09-10 22:52+0200\n" "Last-Translator: Balázs Úr \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: Lokalize 23.08.4\n" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "Indítók" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate pinned app 1" msgstr "1. kitűzött alkalmazás aktiválása" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate pinned app 2" msgstr "2. kitűzött alkalmazás aktiválása" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate pinned app 3" msgstr "3. kitűzött alkalmazás aktiválása" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate pinned app 4" msgstr "4. kitűzött alkalmazás aktiválása" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate pinned app 5" msgstr "5. kitűzött alkalmazás aktiválása" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate pinned app 6" msgstr "6. kitűzött alkalmazás aktiválása" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate pinned app 7" msgstr "7. kitűzött alkalmazás aktiválása" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate pinned app 8" msgstr "8. kitűzött alkalmazás aktiválása" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate pinned app 9" msgstr "9. kitűzött alkalmazás aktiválása" #: data/50-gnome-shell-launchers.xml:46 msgid "Open new window of pinned app 1" msgstr "1. kitűzött alkalmazás új ablakának megnyitása" #: data/50-gnome-shell-launchers.xml:50 msgid "Open new window of pinned app 2" msgstr "2. kitűzött alkalmazás új ablakának megnyitása" #: data/50-gnome-shell-launchers.xml:54 msgid "Open new window of pinned app 3" msgstr "3. kitűzött alkalmazás új ablakának megnyitása" #: data/50-gnome-shell-launchers.xml:58 msgid "Open new window of pinned app 4" msgstr "4. kitűzött alkalmazás új ablakának megnyitása" #: data/50-gnome-shell-launchers.xml:62 msgid "Open new window of pinned app 5" msgstr "5. kitűzött alkalmazás új ablakának megnyitása" #: data/50-gnome-shell-launchers.xml:66 msgid "Open new window of pinned app 6" msgstr "6. kitűzött alkalmazás új ablakának megnyitása" #: data/50-gnome-shell-launchers.xml:70 msgid "Open new window of pinned app 7" msgstr "7. kitűzött alkalmazás új ablakának megnyitása" #: data/50-gnome-shell-launchers.xml:74 msgid "Open new window of pinned app 8" msgstr "8. kitűzött alkalmazás új ablakának megnyitása" #: data/50-gnome-shell-launchers.xml:78 msgid "Open new window of pinned app 9" msgstr "9. kitűzött alkalmazás új ablakának megnyitása" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2274 msgid "Screenshots" msgstr "Képernyőképek" #: data/50-gnome-shell-screenshots.xml:9 #: data/org.gnome.shell.gschema.xml.in:287 msgid "Take a screenshot interactively" msgstr "Képernyőkép készítése interaktívan" #: data/50-gnome-shell-screenshots.xml:12 #: data/org.gnome.shell.gschema.xml.in:299 msgid "Take a screenshot" msgstr "Képernyőkép készítése" #: data/50-gnome-shell-screenshots.xml:15 #: data/org.gnome.shell.gschema.xml.in:295 msgid "Take a screenshot of a window" msgstr "Képernyőkép készítése egy ablakról" #: data/50-gnome-shell-screenshots.xml:18 #: data/org.gnome.shell.gschema.xml.in:291 msgid "Record a screencast interactively" msgstr "Képernyőfelvétel rögzítése interaktívan" #: data/50-gnome-shell-system.xml:6 js/ui/messageTray.js:1298 msgid "System" msgstr "Rendszer" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "Az értesítési lista megjelenítése" #: data/50-gnome-shell-system.xml:12 msgid "Open the quick settings menu" msgstr "A gyors beállítások menü megnyitása" #: data/50-gnome-shell-system.xml:15 msgid "Focus the active notification" msgstr "Az aktív értesítés fókuszba" #: data/50-gnome-shell-system.xml:18 msgid "Show the overview" msgstr "Áttekintés megjelenítése" #: data/50-gnome-shell-system.xml:21 msgid "Show all apps" msgstr "Összes alkalmazás megjelenítése" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "GNOME Shell" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "Ablakkezelés és alkalmazásindítás" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" "Fejlesztők és tesztelők számára hasznos belső eszközök engedélyezése az Alt-" "F2 ablakból" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Belső hibakereső és megfigyelő eszközök elérésének engedélyezése az Alt-F2 " "ablak használatával." #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "Engedélyezendő kiterjesztések UUID azonosítói" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "A GNOME Shell kiterjesztések rendelkeznek egy UUID tulajdonsággal; ez a " "kulcs felsorolja a betöltendő kiterjesztéseket. Minden betöltendő " "kiterjesztésnek szerepelnie kell a listában. A listát az org.gnome.Shell " "EnableExtension és DisableExtension D-Bus metódusaival is manipulálhatja." #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "A kényszerítetten letiltandó kiterjesztések UUID azonosítói" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" "A GNOME Shell kiterjesztések rendelkeznek egy UUID tulajdonsággal; ez a " "kulcs felsorolja a letiltandó kiterjesztéseket. Ezek akkor is le lesznek " "tiltva, ha a jelenlegi mód részeként betöltésre kerültek. A listát az org." "gnome.Shell EnableExtension és DisableExtension D-Bus metódusaival is " "manipulálhatja. Ez a kulcs elsőbbséget élvez az „enabled-extensions” " "beállítással szemben." #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "Felhasználói kiterjesztések letiltása" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" "Minden olyan kiterjesztés letiltása, amelyet a felhasználó az „enabled-" "extension” beállítást nem érintve engedélyezett." #: data/org.gnome.shell.gschema.xml.in:45 msgid "Allow extension installation" msgstr "Kiterjesztések telepítésének engedélyezése" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "Allow users to install extensions in their home folder. If disabled, the " "InstallRemoteExtension D-Bus method will fail, and extensions are only " "loaded from system directories on startup. It does not affect extensions " "that are already loaded, so a change only takes full effect on the next " "login." msgstr "" "Lehetővé teszi a felhasználók számára, hogy kiterjesztéseket telepítsenek a " "saját könyvtárukban. Ha le van tiltva, akkor az InstallRemoteExtension D-Bus " "metódus sikertelen lesz, és a kiterjesztések csak a rendszerkönyvtárakból " "lesznek betöltve indításkor. Nincs hatással a már betöltött " "kiterjesztésekre, így a változtatás csak a következő bejelentkezéskor " "érvényesül." #: data/org.gnome.shell.gschema.xml.in:56 msgid "Disables the validation of extension version compatibility" msgstr "Letiltja a kiterjesztésverzió kompatibilitási ellenőrzését" #: data/org.gnome.shell.gschema.xml.in:57 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "A GNOME Shell csak azon kiterjesztéseket tölti be, amelyek állítják, hogy " "támogatják az éppen futó verziót. Ezt a lehetőséget bekapcsolva ez az " "ellenőrzés kikapcsolható, és az összes kiterjesztés betöltésére kísérletet " "tesz, függetlenül attól, hogy melyik verziót támogatják." #: data/org.gnome.shell.gschema.xml.in:65 msgid "List of desktop file IDs for favorite applications" msgstr "A kedvenc alkalmazások asztalifájl-azonosítóinak listája" #: data/org.gnome.shell.gschema.xml.in:66 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" "Az itt felsorolt azonosítóknak megfelelő alkalmazások jelennek meg a " "kedvencek területen." #: data/org.gnome.shell.gschema.xml.in:73 msgid "History for command (Alt-F2) dialog" msgstr "A parancsablak (Alt-F2) előzményei" #. Translators: looking glass is a debugger and inspector tool, see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/docs/looking-glass.md #: data/org.gnome.shell.gschema.xml.in:78 msgid "History for the looking glass dialog" msgstr "A távcső ablak előzményei" #: data/org.gnome.shell.gschema.xml.in:82 msgid "Always show the “Log Out” action in the system menu" msgstr "Mindig jelenjen meg a „Kijelentkezés” művelet a rendszermenüben" #: data/org.gnome.shell.gschema.xml.in:83 msgid "" "This key overrides the automatic hiding of the “Log out” action in the " "system menu for logged-in situations where there is a single, local, non-" "system user and only a single available session type (e.g. GNOME on Wayland)." msgstr "" "Ez a kulcs felülbírálja a rendszermenüben lévő „Kijelentkezés” művelet " "automatikus elrejtését azokban a bejelentkezési esetekben, ha egyetlen " "helyi, nem rendszerfelhasználó van, és csak egyetlen munkamenettípus érhető " "el (például GNOME Waylanden)." #: data/org.gnome.shell.gschema.xml.in:92 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "Megjegyezze-e a jelszót a titkosított vagy távoli fájlrendszerek csatolásához" #: data/org.gnome.shell.gschema.xml.in:93 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "A shell jelszót fog kérni titkosított eszköz vagy távoli fájlrendszer " "csatolásakor. Ha a jelszó elmenthető későbbi használatra, akkor megjelenik " "egy „Jelszó megjegyzése” jelölőmező. Ez a kulcs a jelölőnégyzet " "alapértelmezett állapotát állítja be." #: data/org.gnome.shell.gschema.xml.in:102 msgid "The last selected non-default power profile" msgstr "Az utoljára kiválasztott nem alapértelmezett teljesítményprofil" #: data/org.gnome.shell.gschema.xml.in:103 msgid "" "Some systems support more than two power profiles. In order to still support " "toggling between two profiles, this key records the last selected non-" "default profile." msgstr "" "Egyes rendszerek kettőnél több teljesítményprofilt támogatnak. Annak " "érdekében, hogy továbbra is támogassa a két profil közötti váltást, ez a " "kulcs rögzíti az utoljára kiválasztott nem alapértelmezett profilt." #: data/org.gnome.shell.gschema.xml.in:111 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "" "A legutóbbi verzió, amelynél az „Üdvözli a GNOME” párbeszédablak megjelent" #: data/org.gnome.shell.gschema.xml.in:112 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can " "be used to effectively disable the dialog." msgstr "" "A kulcs azt határozza meg, hogy melyik verziónál jelent meg utoljára az " "„Üdvözli a GNOME” párbeszédablak. Az üres karakterlánc a lehető legrégebbi " "verziót jelenti, egy nagy szám pedig egy még meg sem jelent verziót. Ez a " "nagy szám gyakorlatilag letilthatja a párbeszédablakot." #: data/org.gnome.shell.gschema.xml.in:145 msgid "Layout of the app picker" msgstr "Az alkalmazásválasztó elrendezése" #: data/org.gnome.shell.gschema.xml.in:146 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" msgstr "" "Az alkalmazásválasztó elrendezése. A tömbben minden bejegyzés egy oldal. Az " "oldalak olyan sorrendben vannak tárolva, ahogy megjelennek a GNOME Shellben. " "Minden egyes oldal tartalmaz egy „alkalmazás-azonosító” → „adat” párt. " "Jelenleg a következő értékek vannak tárolva „adatként”: • „pozíció”: az " "oldalon lévő alkalmazásikon pozíciója" #: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:172 msgid "Keybinding to shift between overview states" msgstr "Billentyűtársítás az áttekintés állapotai közti váltáshoz" #: data/org.gnome.shell.gschema.xml.in:166 msgid "Keybinding to shift between session, window picker and app grid" msgstr "" "Billentyűtársítás a munkamenet, az ablakválasztó és az alkalmazásrács közti " "váltáshoz" #: data/org.gnome.shell.gschema.xml.in:173 msgid "Keybinding to shift between app grid, window picker and session" msgstr "" "Billentyűtársítás az alkalmazásrács, az ablakválasztó és a munkamenet közti " "váltáshoz" #: data/org.gnome.shell.gschema.xml.in:179 msgid "Keybinding to open the “Show Applications” view" msgstr "Billentyűtársítás az „Alkalmazások megjelenítése” nézet megnyitásához" #: data/org.gnome.shell.gschema.xml.in:180 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "" "Billentyűtársítás a Tevékenységek áttekintés „Alkalmazások megjelenítése” " "nézetének megnyitásához." #: data/org.gnome.shell.gschema.xml.in:187 msgid "Keybinding to open the overview" msgstr "Billentyűtársítás az áttekintés megnyitásához" #: data/org.gnome.shell.gschema.xml.in:188 msgid "Keybinding to open the Activities Overview." msgstr "Billentyűtársítás a Tevékenységek áttekintés megnyitásához." #: data/org.gnome.shell.gschema.xml.in:194 msgid "Keybinding to toggle the visibility of the notification list" msgstr "" "Billentyűtársítás az értesítési lista láthatóságának be- és kikapcsolásához" #: data/org.gnome.shell.gschema.xml.in:195 msgid "Keybinding to toggle the visibility of the notification list." msgstr "" "Billentyűtársítás az értesítési lista láthatóságának be- és kikapcsolásához." #: data/org.gnome.shell.gschema.xml.in:201 msgid "Keybinding to toggle the quick settings menu" msgstr "Billentyűtársítás a gyors beállítások menü be- és kikapcsolásához" #: data/org.gnome.shell.gschema.xml.in:202 msgid "Keybinding to toggle the quick settings menu." msgstr "Billentyűtársítás a gyors beállítások menü be- és kikapcsolásához." #: data/org.gnome.shell.gschema.xml.in:208 msgid "Keybinding to focus the active notification" msgstr "Billentyűtársítás az aktív értesítés fókuszálásához" #: data/org.gnome.shell.gschema.xml.in:209 msgid "Keybinding to focus the active notification." msgstr "Billentyűtársítás az aktív értesítés fókuszálásához." #: data/org.gnome.shell.gschema.xml.in:215 msgid "Switch to application 1" msgstr "Váltás az 1. alkalmazásra" #: data/org.gnome.shell.gschema.xml.in:219 msgid "Switch to application 2" msgstr "Váltás a 2. alkalmazásra" #: data/org.gnome.shell.gschema.xml.in:223 msgid "Switch to application 3" msgstr "Váltás a 3. alkalmazásra" #: data/org.gnome.shell.gschema.xml.in:227 msgid "Switch to application 4" msgstr "Váltás a 4. alkalmazásra" #: data/org.gnome.shell.gschema.xml.in:231 msgid "Switch to application 5" msgstr "Váltás az 5. alkalmazásra" #: data/org.gnome.shell.gschema.xml.in:235 msgid "Switch to application 6" msgstr "Váltás a 6. alkalmazásra" #: data/org.gnome.shell.gschema.xml.in:239 msgid "Switch to application 7" msgstr "Váltás a 7. alkalmazásra" #: data/org.gnome.shell.gschema.xml.in:243 msgid "Switch to application 8" msgstr "Váltás a 8. alkalmazásra" #: data/org.gnome.shell.gschema.xml.in:247 msgid "Switch to application 9" msgstr "Váltás a 9. alkalmazásra" #: data/org.gnome.shell.gschema.xml.in:251 msgid "Open a new instance of application 1" msgstr "1. alkalmazás új példányának megnyitása" #: data/org.gnome.shell.gschema.xml.in:255 msgid "Open a new instance of application 2" msgstr "2. alkalmazás új példányának megnyitása" #: data/org.gnome.shell.gschema.xml.in:259 msgid "Open a new instance of application 3" msgstr "3. alkalmazás új példányának megnyitása" #: data/org.gnome.shell.gschema.xml.in:263 msgid "Open a new instance of application 4" msgstr "4. alkalmazás új példányának megnyitása" #: data/org.gnome.shell.gschema.xml.in:267 msgid "Open a new instance of application 5" msgstr "5. alkalmazás új példányának megnyitása" #: data/org.gnome.shell.gschema.xml.in:271 msgid "Open a new instance of application 6" msgstr "6. alkalmazás új példányának megnyitása" #: data/org.gnome.shell.gschema.xml.in:275 msgid "Open a new instance of application 7" msgstr "7. alkalmazás új példányának megnyitása" #: data/org.gnome.shell.gschema.xml.in:279 msgid "Open a new instance of application 8" msgstr "8. alkalmazás új példányának megnyitása" #: data/org.gnome.shell.gschema.xml.in:283 msgid "Open a new instance of application 9" msgstr "9. alkalmazás új példányának megnyitása" #: data/org.gnome.shell.gschema.xml.in:308 #: data/org.gnome.shell.gschema.xml.in:335 msgid "Limit switcher to current workspace." msgstr "Váltó korlátozása a jelenlegi munkaterületre." #: data/org.gnome.shell.gschema.xml.in:309 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "Ha igaz, akkor csak azok az alkalmazások lesznek megjelenítve a váltón, " "amelyek ablakokkal rendelkeznek az aktuális munkaterületen. Egyébként minden " "alkalmazás fel lesz véve." #: data/org.gnome.shell.gschema.xml.in:326 msgid "The application icon mode." msgstr "Az alkalmazás ikon mód." #: data/org.gnome.shell.gschema.xml.in:327 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-only” " "(shows only the application icon) or “both”." msgstr "" "Az ablakok megjelenésének beállítása a váltóban. Lehetséges értékek: " "„thumbnail-only” (az ablak bélyegképének megjelenítése), „app-icon-only” (az " "alkalmazás ikonjának megjelenítése) vagy „both” (mindkettő)." #: data/org.gnome.shell.gschema.xml.in:336 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "Ha igaz, akkor csak az aktuális munkaterületről származó ablakok lesznek " "megjelenítve a váltón. Egyébként minden ablak fel lesz véve." #: data/org.gnome.shell.gschema.xml.in:346 msgid "Locations" msgstr "Helyek" #: data/org.gnome.shell.gschema.xml.in:347 msgid "The locations to show in world clocks" msgstr "A világórában megjelenítendő helyek" #: data/org.gnome.shell.gschema.xml.in:357 msgid "Automatic location" msgstr "Automatikus hely" #: data/org.gnome.shell.gschema.xml.in:358 msgid "Whether to fetch the current location or not" msgstr "Lekérje-e a jelenlegi helyet" #: data/org.gnome.shell.gschema.xml.in:365 msgid "Location" msgstr "Hely" #: data/org.gnome.shell.gschema.xml.in:366 msgid "The location for which to show a forecast" msgstr "A hely, amelyhez meg kell jeleníteni az előrejelzést" #. Keep in sync with subprojects/extensions-app #: data/org.gnome.Shell.Extensions.desktop.in.in:5 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/data/ui/extensions-window.ui:57 msgid "Extensions" msgstr "Kiterjesztések" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "Hálózati bejelentkezés" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:275 msgid "Something’s gone wrong" msgstr "Valami elromlott" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" "Nagyon sajnáljuk, de probléma történt: a kiterjesztés beállításait nem lehet " "megjeleníteni. Azt ajánljuk, hogy jelentse a hibát a kiterjesztés szerzőinek." #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "Technikai részletek" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "Honlap" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 msgid "Visit extension homepage" msgstr "A kiterjesztés honlapjának megtekintése" #: js/gdm/authPrompt.js:151 js/gdm/loginDialog.js:466 #: js/ui/audioDeviceSelection.js:66 js/ui/components/networkAgent.js:113 #: js/ui/components/polkitAgent.js:144 js/ui/endSessionDialog.js:437 #: js/ui/extensionDownloader.js:276 js/ui/shellMountOperation.js:382 #: js/ui/shellMountOperation.js:392 msgid "Cancel" msgstr "Mégse" #: js/gdm/authPrompt.js:317 js/ui/components/networkAgent.js:213 #: js/ui/components/networkAgent.js:233 js/ui/components/networkAgent.js:265 #: js/ui/components/networkAgent.js:298 js/ui/components/networkAgent.js:337 #: js/ui/components/networkAgent.js:350 js/ui/components/polkitAgent.js:286 #: js/ui/shellMountOperation.js:332 msgid "Password" msgstr "Jelszó" #: js/gdm/loginDialog.js:326 msgid "Choose Session" msgstr "Válasszon munkamenetet" #. Translators: is running for #: js/gdm/loginDialog.js:424 #, javascript-format msgid "" "Remote login is not possible because a remote session is already running for " "%s. To login remotely, you must log out from the remote session or force " "stop it." msgstr "" "A távoli bejelentkezés nem lehetséges, mert egy távoli munkamenet már fut " "„%s” felhasználónál. A távoli bejelentkezéshez előbb ki kell lépnie a távoli " "munkamenetből, vagy kényszerítetten le kell állítania." #. Translators: is running for #: js/gdm/loginDialog.js:427 #, javascript-format msgid "" "Login is not possible because a remote session is already running for %s. To " "login, you must log out from the remote session or force stop it." msgstr "" "A bejelentkezés nem lehetséges, mert egy távoli munkamenet már fut „%s” " "felhasználónál. A bejelentkezéshez előbb ki kell lépnie a távoli " "munkamenetből, vagy kényszerítetten le kell állítania." #. Translators: is running for #: js/gdm/loginDialog.js:430 #, javascript-format msgid "" "Remote login is not possible because a local session is already running for " "%s. To login remotely, you must log out from the local session or force stop " "it." msgstr "" "A távoli bejelentkezés nem lehetséges, mert egy helyi munkamenet már fut " "„%s” felhasználónál. A távoli bejelentkezéshez előbb ki kell lépnie a helyi " "munkamenetből, vagy kényszerítetten le kell állítania." #. Translators: is running for #: js/gdm/loginDialog.js:433 #, javascript-format msgid "" "Login is not possible because a session is already running for %s. To login, " "you must log out from the session or force stop it." msgstr "" "A bejelentkezés nem lehetséges, mert egy munkamenet már fut „%s” " "felhasználónál. A bejelentkezéshez ki kell lépnie a munkamenetből, vagy " "kényszerítetten le kell állítania." #: js/gdm/loginDialog.js:442 msgid "Session Already Running" msgstr "Egy munkamenet már fut" #: js/gdm/loginDialog.js:454 msgid "" "Force stopping will quit any running apps and processes, and could result in " "data loss" msgstr "" "A kényszerített leállítás kilépteti az összes futó alkalmazást és " "folyamatot, és adatvesztést eredményezhet" #: js/gdm/loginDialog.js:474 msgid "Force Stop" msgstr "Kényszerített leállítás" #: js/gdm/loginDialog.js:542 msgid "Not listed?" msgstr "Nincs a listán?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:1010 #, javascript-format msgid "(e.g., user or %s)" msgstr "(például: felhasználó vagy %s)" #: js/gdm/loginDialog.js:1015 js/ui/components/networkAgent.js:257 #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:326 msgid "Username" msgstr "Felhasználónév" #: js/gdm/loginDialog.js:1081 msgid "Login Attempt Timed Out" msgstr "A bejelentkezési kísérlet túllépte az időkorlátot" #: js/gdm/loginDialog.js:1082 msgid "Login took too long, please try again" msgstr "A bejelentkezés túl sokáig tartott, próbálja újra" #: js/gdm/loginDialog.js:1431 msgid "Login Window" msgstr "Bejelentkezési ablak" #: js/gdm/util.js:496 msgid "Authentication error" msgstr "Hitelesítési hiba" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:727 msgid "(or swipe finger across reader)" msgstr "(vagy húzza le az ujját az olvasón)" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:732 msgid "(or place finger on reader)" msgstr "(vagy húzza le az ujját az olvasón)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:91 msgctxt "search-result" msgid "Power Off" msgstr "Kikapcsolás" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:94 msgid "power off;poweroff;shutdown;halt;stop" msgstr "kikapcsolás;leállítás;megállítás;stop" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:99 msgctxt "search-result" msgid "Restart" msgstr "Újraindítás" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:102 msgid "reboot;restart;" msgstr "újraindítás;" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:107 msgctxt "search-result" msgid "Lock Screen" msgstr "Zárolási képernyő" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:110 msgid "lock screen" msgstr "képernyő zárolása;képernyő;zárolás" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:115 msgctxt "search-result" msgid "Log Out" msgstr "Kijelentkezés" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:118 msgid "logout;log out;sign off" msgstr "kijelentkezés;kilépés" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:123 msgctxt "search-result" msgid "Suspend" msgstr "Felfüggesztés" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:126 msgid "suspend;sleep" msgstr "felfüggesztés;alvás" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:131 msgctxt "search-result" msgid "Switch User" msgstr "Felhasználóváltás" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:134 msgid "switch user" msgstr "felhasználóváltás" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:141 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "tájolás zárolása;tájolás feloldása;képernyő;tájolás;forgatás" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:146 msgctxt "search-result" msgid "Take a Screenshot" msgstr "Képernyőkép készítése" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:149 msgid "screenshot;screencast;snip;capture;record" msgstr "képernyőkép;képernyőfelvétel;metszet;felvétel;rögzítés;" #: js/misc/systemActions.js:249 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "Képernyőforgatás feloldása" #: js/misc/systemActions.js:250 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "Képernyőforgatás zárolása" #: js/misc/util.js:130 msgid "Command not found" msgstr "A parancs nem található" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:170 msgid "Could not parse command:" msgstr "A parancs nem dolgozható fel:" #: js/misc/util.js:178 #, javascript-format msgid "Execution of “%s” failed:" msgstr "„%s” végrehajtása meghiúsult:" #: js/misc/dateUtils.js:69 msgid "Just now" msgstr "Épp most" #: js/misc/dateUtils.js:72 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d perce" msgstr[1] "%d perce" #: js/misc/dateUtils.js:79 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d órája" msgstr[1] "%d órája" #: js/misc/dateUtils.js:85 js/ui/dateMenu.js:183 msgid "Yesterday" msgstr "Tegnap" #: js/misc/dateUtils.js:88 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d napja" msgstr[1] "%d napja" #: js/misc/dateUtils.js:95 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d hete" msgstr[1] "%d hete" #: js/misc/dateUtils.js:102 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%d hónapja" msgstr[1] "%d hónapja" #: js/misc/dateUtils.js:108 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "%d éve" msgstr[1] "%d éve" #. Translators: Time in 24h format #: js/misc/dateUtils.js:155 msgid "%H∶%M" msgstr "%H:%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/dateUtils.js:161 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "Tegnap %H:%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/dateUtils.js:167 #, no-c-format msgid "%A, %H∶%M" msgstr "%A %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/dateUtils.js:173 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%B %-d. %H:%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/dateUtils.js:179 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%Y. %B %-d. %H:%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/dateUtils.js:184 msgid "%l∶%M %p" msgstr "%H:%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/dateUtils.js:190 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "Tegnap %H:%M" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/dateUtils.js:196 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A %H:%M" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/dateUtils.js:202 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%B %-d. %H:%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/dateUtils.js:208 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%Y. %B %-d. %H:%M" #: js/portalHelper/main.js:98 msgid "Your connection seems to be secure" msgstr "A kapcsolata biztonságosnak látszik" #: js/portalHelper/main.js:104 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "A kapcsolata ehhez a hotspot bejelentkezéshez nem biztonságos. Az ezen az " "oldalon megadott jelszavakat és más információkat a közelben lévő emberek is " "láthatják." #: js/portalHelper/main.js:115 msgid "Hotspot Login" msgstr "Hotspot bejelentkezés" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:51 js/ui/inhibitShortcutsDialog.js:92 msgid "Deny" msgstr "Tiltás" #: js/ui/accessDialog.js:52 js/ui/inhibitShortcutsDialog.js:101 msgid "Allow" msgstr "Engedélyezés" #: js/ui/appDisplay.js:1769 msgid "Unnamed Folder" msgstr "Névtelen mappa" #: js/ui/appFavorites.js:163 #, javascript-format msgid "%s has been pinned to the dash." msgstr "A(z) %s ki lett tűzve a Dashre." #: js/ui/appFavorites.js:194 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "A(z) %s el lett távolítva a Dashről." #: js/ui/appFavorites.js:208 js/ui/main.js:281 msgid "Undo" msgstr "Visszavonás" #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:49 msgid "Open Windows" msgstr "Ablakok megnyitása" #: js/ui/appMenu.js:57 msgid "New Window" msgstr "Új ablak" #: js/ui/appMenu.js:84 msgid "App Details" msgstr "Alkalmazás részletei" #: js/ui/appMenu.js:100 msgid "Quit" msgstr "Kilépés" #: js/ui/appMenu.js:160 js/ui/dash.js:248 msgid "Unpin" msgstr "Kitűzés megszüntetése" #: js/ui/appMenu.js:161 msgid "Pin to Dash" msgstr "Kitűzés a Dashre" #: js/ui/appMenu.js:178 msgid "Launch using Integrated Graphics Card" msgstr "Futtatás integrált videokártya használatával" #: js/ui/appMenu.js:179 msgid "Launch using Discrete Graphics Card" msgstr "Futtatás diszkrét videokártya használatával" #: js/ui/audioDeviceSelection.js:46 msgid "Select Audio Device" msgstr "Válasszon hangeszközt" #: js/ui/audioDeviceSelection.js:61 js/ui/status/volume.js:81 msgid "Sound Settings" msgstr "Hangbeállítások" #: js/ui/audioDeviceSelection.js:74 msgid "Headphones" msgstr "Fejhallgató" #: js/ui/audioDeviceSelection.js:76 msgid "Headset" msgstr "Mikrofonos fejhallgató" #: js/ui/audioDeviceSelection.js:78 js/ui/status/volume.js:356 msgid "Microphone" msgstr "Mikrofon" #: js/ui/backgroundMenu.js:13 msgid "Change Background…" msgstr "Háttér megváltoztatása…" #: js/ui/backgroundMenu.js:15 msgid "Display Settings" msgstr "Kijelző beállításai" #: js/ui/backgroundMenu.js:16 msgid "Settings" msgstr "Beállítások" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:37 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:63 msgctxt "grid sunday" msgid "S" msgstr "V" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:65 msgctxt "grid monday" msgid "M" msgstr "H" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:67 msgctxt "grid tuesday" msgid "T" msgstr "K" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:69 msgctxt "grid wednesday" msgid "W" msgstr "Sz" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:71 msgctxt "grid thursday" msgid "T" msgstr "Cs" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:73 msgctxt "grid friday" msgid "F" msgstr "P" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:75 msgctxt "grid saturday" msgid "S" msgstr "Sz" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:426 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:436 msgid "%OB %Y" msgstr "%Y. %OB" #: js/ui/calendar.js:498 msgid "Previous month" msgstr "Előző hónap" #: js/ui/calendar.js:516 msgid "Next month" msgstr "Következő hónap" #: js/ui/calendar.js:667 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:726 msgid "Week %V" msgstr "%V. hét" #: js/ui/calendar.js:918 msgid "No Notifications" msgstr "Nincsenek értesítések" #: js/ui/calendar.js:974 msgid "Do Not Disturb" msgstr "Ne zavarjanak" #: js/ui/calendar.js:995 msgid "Clear" msgstr "Törlés" #: js/ui/calendar.js:999 msgctxt "action" msgid "Clear all notifications" msgstr "Összes értesítés törlése" #. Translators: %s is an application name #: js/ui/closeDialog.js:42 #, javascript-format msgid "“%s” Is Not Responding" msgstr "A(z) „%s” nem válaszol" #: js/ui/closeDialog.js:43 msgid "" "You may choose to wait a short while for it to continue or force the app to " "quit entirely" msgstr "" "Várhat egy kicsit a folytatódására, vagy kikényszerítheti az alkalmazás " "teljes kilépését" #: js/ui/closeDialog.js:71 msgid "Force Quit" msgstr "Erőltetett kilépés" #: js/ui/closeDialog.js:76 msgid "Wait" msgstr "Várakozás" #: js/ui/components/automountManager.js:82 msgid "External drive connected" msgstr "Külső meghajtó csatlakoztatva" #: js/ui/components/automountManager.js:94 msgid "External drive disconnected" msgstr "Külső meghajtó leválasztva" #: js/ui/components/automountManager.js:208 msgid "Unable to unlock volume" msgstr "Nem lehet feloldani a kötetet" #: js/ui/components/automountManager.js:209 msgid "The installed udisks version does not support the PIM setting" msgstr "A telepített udisks verzió nem támogatja a PIM beállítást" #. Translators: %s is the name of a partition on a external drive #: js/ui/components/autorunManager.js:189 #, javascript-format msgid "“%s” connected" msgstr "„%s” kapcsolódva" #: js/ui/components/autorunManager.js:190 msgid "Disk can now be used" msgstr "A lemez most már használható" #: js/ui/components/autorunManager.js:202 #, javascript-format msgid "Open with %s" msgstr "Megnyitás ezzel: %s" #: js/ui/components/networkAgent.js:95 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router" msgstr "" "Alternatívaként kapcsolódhat az útválasztón lévő „WPS” gomb megnyomásával" #: js/ui/components/networkAgent.js:107 js/ui/status/bluetooth.js:245 #: js/ui/status/network.js:360 js/ui/status/network.js:444 msgid "Connect" msgstr "Kapcsolódás" #: js/ui/components/networkAgent.js:222 msgid "Key" msgstr "Kulcs" #: js/ui/components/networkAgent.js:273 js/ui/components/networkAgent.js:312 msgid "Private key password" msgstr "Személyes kulcs jelszava" #: js/ui/components/networkAgent.js:306 msgid "Identity" msgstr "Személyazonosság" #: js/ui/components/networkAgent.js:332 msgid "Service" msgstr "Szolgáltatás" #: js/ui/components/networkAgent.js:370 js/ui/components/networkAgent.js:406 #: js/ui/components/networkAgent.js:743 js/ui/components/networkAgent.js:764 msgid "Authentication required" msgstr "Hitelesítés szükséges" #: js/ui/components/networkAgent.js:371 js/ui/components/networkAgent.js:744 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network “%s”" msgstr "" "Jelszavak vagy titkosítási kulcsok szükségesek a(z) „%s” vezeték nélküli " "hálózat eléréséhez" #: js/ui/components/networkAgent.js:375 js/ui/components/networkAgent.js:748 msgid "Wired 802.1X authentication" msgstr "Vezetékes 802.1X hitelesítés" #: js/ui/components/networkAgent.js:378 msgid "Network name" msgstr "Hálózat neve" #: js/ui/components/networkAgent.js:386 js/ui/components/networkAgent.js:752 msgid "DSL authentication" msgstr "DSL hitelesítés" #: js/ui/components/networkAgent.js:393 js/ui/components/networkAgent.js:757 msgid "PIN code required" msgstr "PIN kód szükséges" #: js/ui/components/networkAgent.js:394 js/ui/components/networkAgent.js:758 msgid "PIN code is needed for the mobile broadband device" msgstr "PIN kód szükséges a mobil széles sávú eszközhöz" #: js/ui/components/networkAgent.js:396 msgid "PIN" msgstr "PIN" #: js/ui/components/networkAgent.js:407 js/ui/components/networkAgent.js:749 #: js/ui/components/networkAgent.js:753 js/ui/components/networkAgent.js:765 #: js/ui/components/networkAgent.js:769 #, javascript-format msgid "A password is required to connect to “%s”" msgstr "Jelszó szükséges a következőhöz történő kapcsolódáshoz: „%s”" #: js/ui/components/networkAgent.js:768 msgid "VPN password" msgstr "VPN jelszó" #: js/ui/components/polkitAgent.js:44 msgid "Authentication Required" msgstr "Hitelesítés szükséges" #: js/ui/components/polkitAgent.js:84 msgid "Administrator" msgstr "Rendszergazda" #: js/ui/components/polkitAgent.js:149 msgid "Authenticate" msgstr "Hitelesítés" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:263 js/ui/shellMountOperation.js:415 msgid "Sorry, that didn’t work. Please try again." msgstr "Elnézést, ez nem sikerült. Próbálja újra." #: js/ui/ctrlAltTab.js:23 js/ui/overviewControls.js:404 msgid "Windows" msgstr "Ablakok" #: js/ui/dash.js:204 js/ui/dash.js:250 msgid "Show Apps" msgstr "Alkalmazások megjelenítése" # FIXME - valami jobbat #. Translators: this is the name of the dock/favorites area on #. the bottom of the overview #: js/ui/dash.js:408 msgid "Dash" msgstr "Dash" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:99 msgid "%B %-d %Y" msgstr "%Y. %B %-d." #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:106 msgid "%A %B %e %Y" msgstr "%Y. %B %-e. %A" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:172 msgctxt "calendar heading" msgid "%B %-d" msgstr "%B %-d." #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:175 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%Y. %B %-d." #: js/ui/dateMenu.js:181 msgid "Today" msgstr "Ma" #: js/ui/dateMenu.js:185 msgid "Tomorrow" msgstr "Holnap" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:216 msgctxt "event list time" msgid "All Day" msgstr "Egész nap" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:238 msgid "%m/%d" msgstr "%m. %d." #: js/ui/dateMenu.js:289 msgid "No Events" msgstr "Nincsenek események" #: js/ui/dateMenu.js:411 msgid "Add World Clocks…" msgstr "Világórák hozzáadása…" #: js/ui/dateMenu.js:412 msgid "World Clocks" msgstr "Világórák" #: js/ui/dateMenu.js:702 msgid "Loading…" msgstr "Betöltés…" #: js/ui/dateMenu.js:712 msgid "Go Online for Weather Information" msgstr "Időjárás-információkért kapcsolódjon az internetre" #: js/ui/dateMenu.js:714 msgid "Weather Information Unavailable" msgstr "Az időjárás-információk nem érhetőek el" #: js/ui/dateMenu.js:724 msgid "Weather" msgstr "Időjárás" #: js/ui/dateMenu.js:726 msgid "Select Weather Location…" msgstr "Válasszon időjárási helyet…" #: js/ui/endSessionDialog.js:47 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "%s kijelentkeztetése" #: js/ui/endSessionDialog.js:48 msgctxt "title" msgid "Log Out" msgstr "Kijelentkezés" #: js/ui/endSessionDialog.js:51 #, javascript-format msgid "%s will be logged out automatically in %d second" msgid_plural "%s will be logged out automatically in %d seconds" msgstr[0] "%s automatikusan ki fog jelentkezni %d másodperc múlva" msgstr[1] "%s automatikusan ki fog jelentkezni %d másodperc múlva" #: js/ui/endSessionDialog.js:57 #, javascript-format msgid "You will be logged out automatically in %d second" msgid_plural "You will be logged out automatically in %d seconds" msgstr[0] "Automatikusan ki fog jelentkezni %d másodperc múlva" msgstr[1] "Automatikusan ki fog jelentkezni %d másodperc múlva" #: js/ui/endSessionDialog.js:64 msgctxt "button" msgid "Log Out" msgstr "Kijelentkezés" #: js/ui/endSessionDialog.js:70 js/ui/status/system.js:174 msgctxt "title" msgid "Power Off" msgstr "Kikapcsolás" #: js/ui/endSessionDialog.js:71 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Frissítések telepítése és kikapcsolás" #: js/ui/endSessionDialog.js:74 #, javascript-format msgid "The system will power off automatically in %d second" msgid_plural "The system will power off automatically in %d seconds" msgstr[0] "A rendszer automatikusan kikapcsol %d másodperc múlva" msgstr[1] "A rendszer automatikusan kikapcsol %d másodperc múlva" #: js/ui/endSessionDialog.js:78 js/ui/endSessionDialog.js:97 msgctxt "checkbox" msgid "Install pending software updates" msgstr "Függő szoftverfrissítések telepítése" #: js/ui/endSessionDialog.js:82 msgctxt "button" msgid "Power Off" msgstr "Kikapcsolás" #: js/ui/endSessionDialog.js:89 msgctxt "title" msgid "Restart" msgstr "Újraindítás" #: js/ui/endSessionDialog.js:90 msgctxt "title" msgid "Install Updates & Restart" msgstr "Frissítések telepítése és újraindítás" #: js/ui/endSessionDialog.js:93 #, javascript-format msgid "The system will restart automatically in %d second" msgid_plural "The system will restart automatically in %d seconds" msgstr[0] "A rendszer automatikusan újraindul %d másodperc múlva" msgstr[1] "A rendszer automatikusan újraindul %d másodperc múlva" #: js/ui/endSessionDialog.js:101 msgctxt "button" msgid "Restart" msgstr "Újraindítás" #: js/ui/endSessionDialog.js:109 msgctxt "title" msgid "Restart & Install Updates" msgstr "Újraindítás és frissítések telepítése" #: js/ui/endSessionDialog.js:112 #, javascript-format msgid "The system will automatically restart and install updates in %d second" msgid_plural "" "The system will automatically restart and install updates in %d seconds" msgstr[0] "" "A rendszer %d másodperc múlva automatikusan újraindul és telepíti a " "frissítéseket" msgstr[1] "" "A rendszer %d másodperc múlva automatikusan újraindul és telepíti a " "frissítéseket" #: js/ui/endSessionDialog.js:119 js/ui/endSessionDialog.js:140 msgctxt "button" msgid "Restart & Install" msgstr "Újraindítás és telepítés" #: js/ui/endSessionDialog.js:121 msgctxt "button" msgid "Install & Power Off" msgstr "Telepítés és kikapcsolás" #: js/ui/endSessionDialog.js:122 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Kikapcsolás a frissítések telepítése után" #: js/ui/endSessionDialog.js:129 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "Újraindítás és frissítések telepítése" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:134 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "A(z) %s %s újraindítás után lesz telepítve. A frissítések telepítése " "eltarthat egy ideig: győződjön meg arról, hogy készített-e biztonsági " "mentést, valamint a számítógép be van-e dugva." #: js/ui/endSessionDialog.js:283 msgid "Low battery power: please plug in before installing updates" msgstr "" "Alacsony telepfeszültség: a frissítések telepítése előtt dugja be eszközét a " "konnektorba" #: js/ui/endSessionDialog.js:292 msgid "Some applications are busy or have unsaved work" msgstr "Egyes alkalmazások elfoglaltak, vagy mentetlen munkát tartalmaznak" #: js/ui/endSessionDialog.js:297 msgid "Other users are logged in" msgstr "Más felhasználók vannak bejelentkezve" #: js/ui/endSessionDialog.js:467 msgctxt "button" msgid "Boot Options" msgstr "Indítási beállítások" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:672 #, javascript-format msgid "%s (remote)" msgstr "%s (távoli)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:675 #, javascript-format msgid "%s (console)" msgstr "%s (konzol)" #: js/ui/extensionDownloader.js:280 msgid "Install" msgstr "Telepítés" #: js/ui/extensionDownloader.js:286 msgid "Install Extension" msgstr "Kiterjesztés telepítése" #: js/ui/extensionDownloader.js:287 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "" "Letölti és telepíti a következőt az extensions.gnome.org webhelyről: „%s”?" #: js/ui/extensionSystem.js:352 msgid "Extension Updates Available" msgstr "Kiterjesztés-frissítések érhetők el" #: js/ui/extensionSystem.js:353 msgid "Extension updates are ready to be installed" msgstr "A kiterjesztés-frissítések telepítésre készek" #: js/ui/inhibitShortcutsDialog.js:70 msgid "Allow inhibiting shortcuts" msgstr "Gyorsbillentyűk megakadályozásának engedélyezése" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:73 #, javascript-format msgid "The app %s wants to inhibit shortcuts" msgstr "A(z) %s alkalmazás meg akarja gátolni a gyorsbillentyűk használatát" #: js/ui/inhibitShortcutsDialog.js:74 msgid "An app wants to inhibit shortcuts" msgstr "Egy alkalmazás meg akarja gátolni a gyorsbillentyűk használatát" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:81 #, javascript-format msgid "You can restore shortcuts by pressing %s" msgstr "A(z) %s megnyomásával visszaállíthatja a gyorsbillentyűket" #: js/ui/kbdA11yDialog.js:34 msgid "Slow Keys Turned On" msgstr "Lassú billentyűk be" #: js/ui/kbdA11yDialog.js:35 msgid "Slow Keys Turned Off" msgstr "Lassú billentyűk ki" #: js/ui/kbdA11yDialog.js:36 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "Lenyomva tartotta a Shift billentyűt 8 másodpercig. Ez a Lassú billentyűk " "szolgáltatás gyorsbillentyűje, ami a billentyűzet működését befolyásolja." #: js/ui/kbdA11yDialog.js:42 msgid "Sticky Keys Turned On" msgstr "Ragadós billentyűk be" #: js/ui/kbdA11yDialog.js:43 msgid "Sticky Keys Turned Off" msgstr "Ragadós billentyűk ki" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "Egymás után ötször nyomta meg a Shift billentyűt. Ez a Ragadós billentyűk " "szolgáltatás gyorsbillentyűje, ami a billentyűzet viselkedését befolyásolja." #: js/ui/kbdA11yDialog.js:47 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" "Egyszerre két billentyűt nyomott meg, vagy a Shift billentyűt egymás után " "ötször. Ez kikapcsolja a Ragadós billentyűk szolgáltatást, ami a " "billentyűzet viselkedését befolyásolja." #: js/ui/kbdA11yDialog.js:57 msgid "Leave On" msgstr "Bekapcsolva hagyás" #: js/ui/kbdA11yDialog.js:57 msgid "Turn On" msgstr "Bekapcsolás" #: js/ui/kbdA11yDialog.js:67 js/ui/status/network.js:455 msgid "Turn Off" msgstr "Kikapcsolás" #: js/ui/kbdA11yDialog.js:67 msgid "Leave Off" msgstr "Kikapcsolva hagyás" #: js/ui/keyboard.js:180 js/ui/status/keyboard.js:897 msgid "Keyboard Settings" msgstr "Billentyűzetbeállítások" #: js/ui/lookingGlass.js:727 msgid "No extensions installed" msgstr "Nincsenek kiterjesztések telepítve" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:788 #, javascript-format msgid "%s has not emitted any errors" msgstr "%s nem adott hibát" #: js/ui/lookingGlass.js:794 msgid "Hide Errors" msgstr "Hibák elrejtése" #: js/ui/lookingGlass.js:798 js/ui/lookingGlass.js:875 msgid "Show Errors" msgstr "Hibák megjelenítése" #: js/ui/lookingGlass.js:807 msgid "Active" msgstr "Aktív" #: js/ui/lookingGlass.js:810 msgid "Inactive" msgstr "Inaktív" #: js/ui/lookingGlass.js:812 msgid "Error" msgstr "Hiba" #: js/ui/lookingGlass.js:814 msgid "Out of date" msgstr "Elavult" #: js/ui/lookingGlass.js:816 msgid "Downloading" msgstr "Letöltés" #: js/ui/lookingGlass.js:818 msgid "Deactivating" msgstr "Deaktiválás" #: js/ui/lookingGlass.js:820 msgid "Activating" msgstr "Aktiválás" #: js/ui/lookingGlass.js:853 msgid "View Source" msgstr "Forrás megtekintése" #: js/ui/lookingGlass.js:864 msgid "Web Page" msgstr "Weblap" #: js/ui/main.js:277 msgid "System was put in unsafe mode" msgstr "A rendszer nem biztonságos módba lett állítva" #: js/ui/main.js:278 msgid "Apps now have unrestricted access" msgstr "Az alkalmazásoknak most már korlátlan hozzáférésük van" #: js/ui/main.js:338 msgid "Logged in as a privileged user" msgstr "Bejelentkezés privilegizált felhasználóként" #: js/ui/main.js:339 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" "A privilegizált felhasználóként futtatott munkameneteket biztonsági okokból " "érdemes kerülni. Ha lehetséges, jelentkezzen be normál felhasználóként." #: js/ui/main.js:387 msgid "Screen Lock disabled" msgstr "Képernyőzárolás letiltva" #: js/ui/main.js:388 msgid "Screen Locking requires the GNOME display manager" msgstr "A képernyőzároláshoz a GNOME kijelzőkezelő szükséges" #. Translators: this is the string displayed in the header when a message #. source doesn't have a name #: js/ui/messageList.js:374 msgid "Unknown App" msgstr "Ismeretlen alkalmazás" #: js/ui/messageTray.js:326 js/ui/messageTray.js:328 msgid "Notification sound" msgstr "Értesítési hang" #: js/ui/mpris.js:198 msgid "Unknown artist" msgstr "Ismeretlen előadó" #: js/ui/mpris.js:208 msgid "Unknown title" msgstr "Ismeretlen cím" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:328 msgid "Type to search" msgstr "Gépeljen a kereséshez" #: js/ui/overviewControls.js:392 msgid "Apps" msgstr "Alkalmazások" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:33 msgid "Overview" msgstr "Áttekintés" #: js/ui/padOsd.js:98 msgid "New shortcut…" msgstr "Új gyorsbillentyű…" #: js/ui/padOsd.js:151 msgid "App defined" msgstr "Alkalmazás által meghatározott" #: js/ui/padOsd.js:152 msgid "Show on-screen help" msgstr "Súgó megjelenítése" #: js/ui/padOsd.js:153 msgid "Switch monitor" msgstr "Kijelzőváltás" #: js/ui/padOsd.js:154 msgid "Assign keystroke" msgstr "Billentyűleütés hozzárendelése" #: js/ui/padOsd.js:223 msgid "Done" msgstr "Kész" #: js/ui/padOsd.js:726 msgid "Edit…" msgstr "Szerkesztés…" #: js/ui/padOsd.js:773 msgid "None" msgstr "Nincs" #: js/ui/padOsd.js:844 msgid "Press a button to configure" msgstr "Válasszon egy beállítandó gombot" #: js/ui/padOsd.js:845 msgid "Press Esc to exit" msgstr "Nyomja meg az Esc gombot a kilépéshez" #: js/ui/padOsd.js:848 msgid "Press any key to exit" msgstr "Nyomjon meg egy gombot a kilépéshez" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:423 msgid "Activities" msgstr "Tevékenységek" #: js/ui/panel.js:504 msgctxt "System menu in the top bar" msgid "System" msgstr "Rendszer" #: js/ui/panel.js:678 msgid "Top Bar" msgstr "Felső sáv" #: js/ui/quickSettings.js:188 msgid "Open menu" msgstr "Menü megnyitása" #: js/ui/runDialog.js:61 msgid "Run a Command" msgstr "Egy parancs futtatása" #: js/ui/runDialog.js:76 msgid "Press ESC to close" msgstr "Nyomja meg az Esc gombot a bezáráshoz" #: js/ui/runDialog.js:241 msgid "Restart is not available on Wayland" msgstr "Az újraindítás nem érhető el Wayland alatt" #: js/ui/runDialog.js:246 msgid "Restarting…" msgstr "Újraindítás…" #: js/ui/screenShield.js:233 msgid "GNOME needs to lock the screen" msgstr "A GNOME-nak zárolnia kell a képernyőt" #: js/ui/screenShield.js:274 js/ui/screenShield.js:667 msgid "Unable to lock" msgstr "Nem lehet zárolni" #: js/ui/screenShield.js:275 js/ui/screenShield.js:668 msgid "Lock was blocked by an app" msgstr "A zárolást egy alkalmazás blokkolta" #: js/ui/screenshot.js:1252 msgid "Selection" msgstr "Kijelölés" #: js/ui/screenshot.js:1262 msgid "Area Selection" msgstr "Terület kijelölése" #: js/ui/screenshot.js:1267 msgid "Screen" msgstr "Képernyő" #: js/ui/screenshot.js:1277 msgid "Screen Selection" msgstr "Képernyő kijelölése" #: js/ui/screenshot.js:1282 msgid "Window" msgstr "Ablak" #: js/ui/screenshot.js:1292 msgid "Window Selection" msgstr "Ablak kijelölése" #. Translators: entry in the window right click menu. #: js/ui/screenshot.js:1317 js/ui/status/system.js:111 js/ui/windowMenu.js:28 msgid "Take Screenshot" msgstr "Képernyőkép készítése" #: js/ui/screenshot.js:1333 msgid "Record Screen" msgstr "Képernyő rögzítése" #. Translators: since this string refers to an action, #. it needs to be phrased as a verb. #: js/ui/screenshot.js:1350 msgid "Capture" msgstr "Rögzítés" #: js/ui/screenshot.js:1372 msgid "Show Pointer" msgstr "Mutató megjelenítése" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1996 msgid "Screencasts" msgstr "Képernyőfelvételek" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast From 07-17-2013 10:00:46 PM" #: js/ui/screenshot.js:2001 #, no-c-format msgid "Screencast From %d %t" msgstr "Képernyőfelvétel %d %t" #. Translators: notification title. #: js/ui/screenshot.js:2047 msgid "Screencast recorded" msgstr "Képernyőfelvétel rögzítve" #. Translators: notification title. #: js/ui/screenshot.js:2060 msgid "Screencast failed to start" msgstr "Nem sikerült a képernyőfelvétel elindítása" #. Translators: notification title. #: js/ui/screenshot.js:2066 msgid "Screencast ended: Out of disk space" msgstr "A képernyőfelvétel véget ért: elfogyott a szabad hely" #. We can encourage user to try again on service crashes since the #. recorder will auto-blocklist the pipeline that crashed. #. Translators: notification title. #: js/ui/screenshot.js:2072 msgid "Screencast ended unexpectedly, please try again" msgstr "A képernyőfelvétel váratlanul véget ért, próbálja újra" #. Translators: notification title. #: js/ui/screenshot.js:2075 msgid "Screencast ended unexpectedly" msgstr "A képernyőfelvétel váratlanul véget ért" #. Translators: notification source name. #: js/ui/screenshot.js:2085 js/ui/screenshot.js:2327 msgid "Screenshot" msgstr "Képernyőkép" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:2092 msgid "Click here to view the video." msgstr "Kattintson ide a videó megtekintéséhez." #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:2100 js/ui/screenshot.js:2343 msgid "Show in Files" msgstr "Megjelenítés a fájlokban" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2287 #, javascript-format msgid "Screenshot From %s" msgstr "Képernyőkép %s" #. Translators: notification title. #: js/ui/screenshot.js:2333 msgid "Screenshot captured" msgstr "Képernyőkép rögzítve" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2335 msgid "You can paste the image from the clipboard." msgstr "Beillesztheti a képet a vágólapról." #: js/ui/screenshot.js:2391 js/ui/screenshot.js:2555 msgid "Screenshot taken" msgstr "Képernyőkép elkészült" #: js/ui/search.js:829 msgid "Searching…" msgstr "Keresés…" #: js/ui/search.js:831 msgid "No results" msgstr "Nincs találat" #: js/ui/search.js:962 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "még %d további" msgstr[1] "még %d további" #: js/ui/searchController.js:87 #: subprojects/extensions-app/data/ui/extensions-window.ui:73 msgid "Search" msgstr "Oldalsáv" #: js/ui/shellEntry.js:21 msgid "Copy" msgstr "Másolás" #: js/ui/shellEntry.js:26 msgid "Paste" msgstr "Beillesztés" #: js/ui/shellEntry.js:78 msgid "Show Text" msgstr "Szöveg megjelenítése" #: js/ui/shellEntry.js:80 msgid "Hide Text" msgstr "Szöveg elrejtése" #: js/ui/shellEntry.js:174 msgid "Caps lock is on" msgstr "A Caps Lock be van kapcsolva" #: js/ui/shellMountOperation.js:286 msgid "Hidden Volume" msgstr "Rejtett kötet" #: js/ui/shellMountOperation.js:289 msgid "Windows System Volume" msgstr "Windows rendszerkötet" #: js/ui/shellMountOperation.js:292 msgid "Uses Keyfiles" msgstr "Kulcsfájlokat használ" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:300 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead" msgstr "" "A kulcsfájlokat használó kötetek feloldásához használja inkább a(z) %s segédprogramot" #: js/ui/shellMountOperation.js:304 msgid "" "You need an external utility like Disks to unlock a volume that uses " "keyfiles" msgstr "" "Külső segédprogramra, például a Lemezekre van szüksége egy " "kulcsfájlokat használó kötet feloldásához" #: js/ui/shellMountOperation.js:312 msgid "PIM Number" msgstr "PIM-szám" #: js/ui/shellMountOperation.js:371 msgid "Remember Password" msgstr "Jelszó megjegyzése" #: js/ui/shellMountOperation.js:386 msgid "Unlock" msgstr "Feloldás" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:400 #, javascript-format msgid "Open %s" msgstr "%s megnyitása" #: js/ui/shellMountOperation.js:436 msgid "The PIM must be a number or empty" msgstr "A PIM-nek számnak vagy üresnek kell lennie" #: js/ui/status/accessibility.js:34 msgid "Accessibility" msgstr "Akadálymentesítés" #: js/ui/status/accessibility.js:44 msgid "High Contrast" msgstr "Nagy kontraszt" #: js/ui/status/accessibility.js:47 msgid "Zoom" msgstr "Nagyítás" #: js/ui/status/accessibility.js:54 msgid "Screen Reader" msgstr "Képernyőolvasó" #: js/ui/status/accessibility.js:58 msgid "Screen Keyboard" msgstr "Képernyő-billentyűzet" #: js/ui/status/accessibility.js:62 msgid "Visual Alerts" msgstr "Vizuális figyelmeztetések" #: js/ui/status/accessibility.js:66 msgid "Sticky Keys" msgstr "Ragadós billentyűk" #: js/ui/status/accessibility.js:70 msgid "Slow Keys" msgstr "Lassú billentyűk" #: js/ui/status/accessibility.js:74 msgid "Bounce Keys" msgstr "Billentyűszűrés" #: js/ui/status/accessibility.js:78 msgid "Mouse Keys" msgstr "Egérbillentyűk" #: js/ui/status/accessibility.js:83 msgid "Accessibility Settings" msgstr "Akadálymentesítési beállítások" #: js/ui/status/accessibility.js:140 msgid "Large Text" msgstr "Nagy szöveg" #: js/ui/status/autoRotate.js:14 msgid "Auto Rotate" msgstr "Automatikus forgatás" #: js/ui/status/backgroundApps.js:156 msgctxt "title" msgid "Background Apps" msgstr "Háttéralkalmazások" #: js/ui/status/backgroundApps.js:171 msgid "Apps known to be running without a window" msgstr "Köztudottan ablak nélkül futó alkalmazások" #: js/ui/status/backgroundApps.js:182 msgid "App Settings" msgstr "Alkalmazás beállításai" #: js/ui/status/backgroundApps.js:239 msgid "No Background Apps" msgstr "Nincsenek háttéralkalmazások" #: js/ui/status/backgroundApps.js:241 #, javascript-format msgid "%d Background App" msgid_plural "%d Background Apps" msgstr[0] "%d háttéralkalmazás" msgstr[1] "%d háttéralkalmazás" #: js/ui/status/backlight.js:39 msgid "Keyboard Brightness" msgstr "Billentyűzet fényereje" #: js/ui/status/backlight.js:79 msgid "Off" msgstr "Ki" #: js/ui/status/backlight.js:80 msgid "Low" msgstr "Alacsony" #: js/ui/status/backlight.js:81 msgid "High" msgstr "Magas" #: js/ui/status/backlight.js:147 js/ui/status/keyboard.js:879 msgid "Keyboard" msgstr "Billentyűzet" #: js/ui/status/bluetooth.js:245 js/ui/status/network.js:360 msgid "Disconnect" msgstr "Leválasztás" #: js/ui/status/bluetooth.js:262 js/ui/status/bluetooth.js:264 msgid "Bluetooth" msgstr "Bluetooth" #: js/ui/status/bluetooth.js:287 js/ui/status/network.js:1900 msgid "Bluetooth Settings" msgstr "Bluetooth beállítások" #: js/ui/status/bluetooth.js:334 msgid "No available or connected devices" msgstr "Nincsenek elérhető vagy csatlakoztatott eszközök" #: js/ui/status/bluetooth.js:335 msgid "Turn on Bluetooth to connect to devices" msgstr "Kapcsolja be a Bluetooth-t az eszközökhöz való kapcsolódáshoz" #. Translators: This is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:389 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d kapcsolódva" msgstr[1] "%d kapcsolódva" #: js/ui/status/brightness.js:32 msgid "Brightness" msgstr "Fényerő" #: js/ui/status/darkMode.js:12 msgid "Dark Style" msgstr "Sötét stílus" #: js/ui/status/dwellClick.js:15 msgid "Single Click" msgstr "Egy kattintás" #: js/ui/status/dwellClick.js:20 msgid "Double Click" msgstr "Dupla kattintás" #: js/ui/status/dwellClick.js:25 msgid "Drag" msgstr "Húzás" #: js/ui/status/dwellClick.js:30 msgid "Secondary Click" msgstr "Másodlagos kattintás" #: js/ui/status/dwellClick.js:39 msgid "Dwell Click" msgstr "Rámutatási kattintás" #: js/ui/status/keyboard.js:896 msgid "Show Keyboard Layout" msgstr "Billentyűzetkiosztás megjelenítése" #: js/ui/status/location.js:337 msgid "Allow location access" msgstr "Helyadatok elérésének engedélyezése" #. Translators: %s is an application name #: js/ui/status/location.js:339 #, javascript-format msgid "The app %s wants to access your location" msgstr "A(z) %s alkalmazás el szeretné érni a helyadatait" #: js/ui/status/location.js:349 msgid "Location access can be changed at any time from the privacy settings" msgstr "" "A helyadatok elérése bármikor megváltoztatható az adatvédelmi beállításokban" #: js/ui/status/location.js:357 msgid "Deny Access" msgstr "Hozzáférés tiltása" #: js/ui/status/location.js:362 msgid "Grant Access" msgstr "Hozzáférés megadása" #: js/ui/status/network.js:62 msgid "" msgstr "" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:354 #, javascript-format msgid "Disconnect %s" msgstr "%s leválasztása" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:356 #, javascript-format msgid "Connect to %s" msgstr "Kapcsolódás ehhez: %s" #: js/ui/status/network.js:1050 msgid "Secure" msgstr "biztonságos" #: js/ui/status/network.js:1050 msgid "Not secure" msgstr "nem biztonságos" #: js/ui/status/network.js:1051 #, javascript-format msgid "Signal strength %s%%" msgstr "%s%%-os jelerősség" #. translators: The first placeholder is the network name, the second and indication whether it is secure, and the last the signal strength indication #: js/ui/status/network.js:1053 #, javascript-format msgid "%s, %s, %s" msgstr "%s, %s, %s" #. Translators: %s is a network identifier #: js/ui/status/network.js:1155 #, javascript-format msgid "%s Hotspot" msgstr "%s hotspot" #: js/ui/status/network.js:1426 #, javascript-format msgid "%d connected" msgid_plural "%d connected" msgstr[0] "%d kapcsolódva" msgstr[1] "%d kapcsolódva" #: js/ui/status/network.js:1524 js/ui/status/network.js:1540 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1525 msgid "VPN Settings" msgstr "VPN beállítások" #: js/ui/status/network.js:1785 msgid "Wi–Fi" msgstr "Wi–Fi" #: js/ui/status/network.js:1787 msgid "All Networks" msgstr "Összes hálózat" #: js/ui/status/network.js:1884 msgid "Wired Connections" msgstr "Vezetékes kapcsolatok" #: js/ui/status/network.js:1885 msgid "Wired Settings" msgstr "Vezetékes beállítások" #: js/ui/status/network.js:1899 msgid "Bluetooth Tethers" msgstr "Bluetooth alapú internetmegosztók" #. Translators: "Tether" from "Bluetooth Tether" #: js/ui/status/network.js:1906 msgid "Tether" msgstr "Internetmegosztás" #: js/ui/status/network.js:1919 msgid "Mobile Connections" msgstr "Mobil kapcsolatok" #: js/ui/status/network.js:1921 msgid "Mobile Broadband Settings" msgstr "Mobil széles sáv beállítások" #. Translators: "Mobile" from "Mobile Broadband" #: js/ui/status/network.js:1930 msgid "Mobile" msgstr "Mobil" #: js/ui/status/network.js:1964 msgid "Sign Into Wi–Fi Network" msgstr "Bejelentkezés Wi-Fi-hálózatba" #: js/ui/status/network.js:2151 msgid "Connection failed" msgstr "A kapcsolódás sikertelen" #: js/ui/status/network.js:2152 msgid "Activation of network connection failed" msgstr "A hálózati kapcsolat aktiválása sikertelen" #: js/ui/status/nightLight.js:19 msgid "Night Light" msgstr "Éjszakai fény" #: js/ui/status/powerProfiles.js:19 msgctxt "Power profile" msgid "Performance" msgstr "Teljesítmény" #: js/ui/status/powerProfiles.js:24 msgctxt "Power profile" msgid "Balanced" msgstr "Kiegyensúlyozott" #: js/ui/status/powerProfiles.js:29 msgctxt "Power profile" msgid "Power Saver" msgstr "Energiatakarékos" #: js/ui/status/powerProfiles.js:39 js/ui/status/powerProfiles.js:69 msgid "Power Mode" msgstr "Energiagazdálkodási mód" #: js/ui/status/powerProfiles.js:71 msgid "Power Settings" msgstr "Energiagazdálkodási beállítások" #: js/ui/status/remoteAccess.js:74 msgid "Stop Screencast" msgstr "Képernyőfelvétel leállítása" #: js/ui/status/remoteAccess.js:144 msgid "Stop Screen Sharing" msgstr "Képernyőmegosztás leállítása" #: js/ui/status/rfkill.js:99 msgid "Airplane Mode" msgstr "Repülőgép mód" #: js/ui/status/system.js:168 msgid "Power Off Menu" msgstr "Kikapcsolás menü" #: js/ui/status/system.js:176 msgid "Suspend" msgstr "Felfüggesztés" #: js/ui/status/system.js:181 msgid "Restart…" msgstr "Újraindítás…" #: js/ui/status/system.js:186 msgid "Power Off…" msgstr "Kikapcsolás…" #: js/ui/status/system.js:193 #: subprojects/extensions-app/data/ui/extensions-window.ui:124 msgid "Log Out…" msgstr "Kijelentkezés…" #: js/ui/status/system.js:198 msgid "Switch User…" msgstr "Felhasználóváltás…" #: js/ui/status/system.js:242 msgctxt "action" msgid "Lock Screen" msgstr "Zárolási képernyő" #: js/ui/status/thunderbolt.js:308 msgid "Unknown Thunderbolt device" msgstr "Ismeretlen thunderbolt eszköz" #: js/ui/status/thunderbolt.js:309 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" "Új eszköz lett felismerve, amíg távol volt. Válassza le, és csatlakoztassa " "újra az eszközt, hogy megkezdhesse a használatát." #: js/ui/status/thunderbolt.js:312 msgid "Unauthorized Thunderbolt device" msgstr "Jogosulatlan Thunderbolt eszköz" #: js/ui/status/thunderbolt.js:313 msgid "" "New device has been detected and needs to be authorized by an administrator" msgstr "" "Új eszköz lett észlelve, de egy rendszergazdának hitelesítenie szükséges" #: js/ui/status/thunderbolt.js:319 msgid "Thunderbolt authorization error" msgstr "Thunderbolt engedélyezési hiba" #: js/ui/status/thunderbolt.js:320 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "Nem sikerült a Thunderbolt eszköz engedélyezése: %s" #: js/ui/status/volume.js:218 msgid "Volume changed" msgstr "Hangerő megváltozott" #: js/ui/status/volume.js:231 msgid "Unmute" msgstr "Visszahangosítás" #: js/ui/status/volume.js:231 msgid "Mute" msgstr "Némítás" #: js/ui/status/volume.js:286 msgid "Volume" msgstr "Hangerő" #: js/ui/status/volume.js:302 msgid "Sound Output" msgstr "Hangkimenet" #: js/ui/status/volume.js:374 msgid "Sound Input" msgstr "Hangbemenet" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:20 msgid "Mirror" msgstr "Tükrözés" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:29 msgid "Join Displays" msgstr "Kijelzők egyesítése" #. Translators: this is for using only external displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:39 msgid "External Only" msgstr "Csak a külső" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:47 msgid "Built-in Only" msgstr "Csak a beépített" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:378 msgid "%A %B %-d" msgstr "%B %-d. %A" #: js/ui/unlockDialog.js:384 msgid "Swipe up to unlock" msgstr "Húzza felfelé a feloldáshoz" #: js/ui/unlockDialog.js:385 msgid "Click or press a key to unlock" msgstr "Kattintson vagy nyomjon meg egy billentyűt a feloldáshoz" #: js/ui/unlockDialog.js:568 msgid "Unlock Window" msgstr "Ablak feloldása" #: js/ui/unlockDialog.js:577 msgid "Log in as another user" msgstr "Bejelentkezés más felhasználóként" #: js/ui/welcomeDialog.js:47 #, javascript-format msgid "GNOME %s" msgstr "GNOME %s" #: js/ui/welcomeDialog.js:51 #, javascript-format msgid "Welcome to %s" msgstr "Üdvözli a %s" #: js/ui/welcomeDialog.js:52 msgid "If you want to learn your way around, check out the tour" msgstr "Ha szeretné kiismerni, hogy mi merre van, nézze meg a bemutatót" #: js/ui/welcomeDialog.js:61 msgid "Skip" msgstr "Kihagyás" #: js/ui/welcomeDialog.js:66 msgid "Take Tour" msgstr "Bemutató megtekintése" #: js/ui/windowAttentionHandler.js:18 #, javascript-format msgid "“%s” is ready" msgstr "„%s” kész" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:68 msgid "Keep these display settings?" msgstr "Megtartja ezen beállításokat?" #: js/ui/windowManager.js:78 msgid "Revert Settings" msgstr "Beállítások visszavonása" #: js/ui/windowManager.js:83 msgid "Keep Changes" msgstr "Módosítások megtartása" #: js/ui/windowManager.js:103 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "A beállítások módosításai %d másodperc múlva visszavonásra kerülnek" msgstr[1] "A beállítások módosításai %d másodperc múlva visszavonásra kerülnek" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:500 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:40 msgid "Hide" msgstr "Elrejtés" #: js/ui/windowMenu.js:47 msgid "Restore" msgstr "Visszaállítás" #: js/ui/windowMenu.js:51 msgid "Maximize" msgstr "Maximalizálás" #: js/ui/windowMenu.js:58 msgid "Move" msgstr "Áthelyezés" #: js/ui/windowMenu.js:78 msgid "Resize" msgstr "Átméretezés" #: js/ui/windowMenu.js:98 msgid "Always on Top" msgstr "Mindig felül" #: js/ui/windowMenu.js:117 msgid "Always on Visible Workspace" msgstr "Mindig a látható munkaterületen" #: js/ui/windowMenu.js:131 msgid "Move to Workspace Left" msgstr "Áthelyezés a bal oldali munkaterületre" #: js/ui/windowMenu.js:137 msgid "Move to Workspace Right" msgstr "Áthelyezés a jobb oldali munkaterületre" #: js/ui/windowMenu.js:143 msgid "Move to Workspace Up" msgstr "Áthelyezés a felső munkaterületre" #: js/ui/windowMenu.js:149 msgid "Move to Workspace Down" msgstr "Áthelyezés az alsó munkaterületre" #: js/ui/windowMenu.js:167 msgid "Move to Monitor Up" msgstr "Áthelyezés a felső kijelzőre" #: js/ui/windowMenu.js:176 msgid "Move to Monitor Down" msgstr "Áthelyezés az alsó kijelzőre" #: js/ui/windowMenu.js:185 msgid "Move to Monitor Left" msgstr "Áthelyezés a bal oldali kijelzőre" #: js/ui/windowMenu.js:194 msgid "Move to Monitor Right" msgstr "Áthelyezés a jobb oldali kijelzőre" #: js/ui/windowMenu.js:202 msgid "Close" msgstr "Bezárás" #: src/main.c:512 subprojects/extensions-tool/src/main.c:336 msgid "Print version" msgstr "Verzió kiírása" #: src/main.c:518 msgid "Mode used by GDM for login screen" msgstr "A GDM által a bejelentkezési képernyőhöz használt mód" #: src/main.c:524 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "" "Használjon egy adott módot, például a „gdm”-et a bejelentkező képernyőn" #: src/main.c:530 msgid "List possible modes" msgstr "Lehetséges módok listázása" #: src/main.c:536 msgid "Force animations to be enabled" msgstr "Animációk engedélyezésének kényszerítése" #: src/shell-app.c:252 msgctxt "program" msgid "Unknown" msgstr "Ismeretlen" #: src/shell-app.c:503 #, c-format msgid "Failed to launch “%s”" msgstr "„%s” indítása meghiúsult" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match" msgstr "A jelszavak nem egyeznek" #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "A jelszó nem lehet üres" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "A hitelesítési ablakot a felhasználó bezárta" #: src/st/st-icon-theme.c:1865 #, c-format msgid "Icon '%s' not present in theme %s" msgstr "A(z) „%s” ikon nincs benne a(z) %s témában" #: src/st/st-icon-theme.c:3454 src/st/st-icon-theme.c:3757 msgid "Failed to load icon" msgstr "Nem sikerült betölteni az ikont" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 msgid "Manage your GNOME Extensions" msgstr "Saját GNOME kiterjesztések kezelése" #. developer_name tag deprecated with Appstream 1.0 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:19 msgid "The GNOME Project" msgstr "A GNOME projekt" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:51 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" "A GNOME kiterjesztések kezeli a kiterjesztések frissítését, a " "kiterjesztésbeállítások konfigurálást és a nem kívánatos kiterjesztések " "eltávolítását vagy letiltását." #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:65 msgid "Main Window" msgstr "Főablak" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:69 msgid "Available Updates" msgstr "Elérhető frissítések" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:73 msgid "Search View" msgstr "Keresési nézet" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "GNOME Shell kiterjesztések beállítása" #: subprojects/extensions-app/js/extensionManager.js:237 #, javascript-format msgid "" "The installed version of this extension (%s) is incompatible with the " "current version of GNOME (%s). The extension has been disabled." msgstr "" "A kiterjesztés telepített verziója (%s) nem kompatibilis a jelenlegi GNOME " "verzióval (%s). A kiterjesztés le lett tiltva." #: subprojects/extensions-app/js/extensionManager.js:238 #, javascript-format msgid "" "The installed version of this extension is incompatible with the current " "version of GNOME (%s). The extension has been disabled." msgstr "" "A kiterjesztés telepített verziója nem kompatibilis a jelenlegi GNOME " "verzióval (%s). A kiterjesztés le lett tiltva." #: subprojects/extensions-app/js/extensionManager.js:242 msgid "" "An error has occurred in this extension. This could cause issues elsewhere " "in the system. It is recommended to turn the extension off until the error " "is resolved." msgstr "" "Hiba történt ebben a kiterjesztésben. Ez problémákat okozhat máshol a " "rendszeren. Ajánlott addig kikapcsolni a kiterjesztést, amíg a hiba " "megoldódik." #. translators: Details for an extension error #: subprojects/extensions-app/js/extensionManager.js:248 msgid "Error details:" msgstr "Hiba részletei:" #: subprojects/extensions-app/js/extensionRow.js:82 #, javascript-format msgid "Version %s" msgstr "Verzió: %s" #: subprojects/extensions-app/js/extensionsWindow.js:113 #, javascript-format msgid "Remove “%s”?" msgstr "Eltávolítja ezt: „%s”?" #: subprojects/extensions-app/js/extensionsWindow.js:114 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "" "Ha eltávolítja a kiterjesztést, akkor vissza kell térnie a letöltéshez, ha " "újra engedélyezni akarja." #: subprojects/extensions-app/js/extensionsWindow.js:117 msgid "_Cancel" msgstr "_Mégse" #: subprojects/extensions-app/js/extensionsWindow.js:118 msgid "_Remove" msgstr "_Eltávolítás" #: subprojects/extensions-app/js/extensionsWindow.js:158 msgid "translator-credits" msgstr "" "Meskó Balázs \n" "Úr Balázs " #: subprojects/extensions-app/js/extensionsWindow.js:203 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "%d kiterjesztés lesz frissítve a következő bejelentkezéskor." msgstr[1] "%d kiterjesztés lesz frissítve a következő bejelentkezéskor." #: subprojects/extensions-app/data/ui/extension-row.ui:22 msgid "Error Details" msgstr "Hiba részletei" #: subprojects/extensions-app/data/ui/extension-row.ui:62 msgid "Updates Details" msgstr "Frissítés részletei" #: subprojects/extensions-app/data/ui/extension-row.ui:72 msgid "" "A new version of this extension is ready and will be loaded on next login." msgstr "" "A kiterjesztés új verziója készen áll, és be lesz töltve a következő " "bejelentkezéskor." #: subprojects/extensions-app/data/ui/extension-row.ui:104 msgid "Extension Details" msgstr "Kiterjesztés részletei" #: subprojects/extensions-app/data/ui/extension-row.ui:192 msgid "_Website" msgstr "_Webhely" #: subprojects/extensions-app/data/ui/extension-row.ui:219 msgid "_Settings" msgstr "_Beállítások" #: subprojects/extensions-app/data/ui/extension-row.ui:246 msgid "_Remove…" msgstr "_Eltávolítás…" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Keyboard Shortcuts" msgstr "Gyorsbillentyűk" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "A kiterjesztések névjegye" #: subprojects/extensions-app/data/ui/extensions-window.ui:64 msgid "Main Menu" msgstr "Főmenü" #: subprojects/extensions-app/data/ui/extensions-window.ui:106 msgid "Search extensions" msgstr "Kiterjesztések keresése" #: subprojects/extensions-app/data/ui/extensions-window.ui:134 msgid "_Extensions" msgstr "_Kiterjesztések" #: subprojects/extensions-app/data/ui/extensions-window.ui:139 msgid "More Information" msgstr "További információk" #: subprojects/extensions-app/data/ui/extensions-window.ui:151 msgid "" "Extensions can cause performance and stability issues. It is recommended to " "disable all extensions if you experience problems with your system." msgstr "" "A kiterjesztések teljesítménybeli és stabilitási problémákat okozhatnak. " "Ajánlott letiltani az összes kiterjesztést, ha problémákat tapasztal a " "rendszerével kapcsolatban." #: subprojects/extensions-app/data/ui/extensions-window.ui:178 msgid "User Extensions" msgstr "Felhasználói kiterjesztések" #: subprojects/extensions-app/data/ui/extensions-window.ui:198 msgid "System Extensions" msgstr "Rendszerkiterjesztések" #: subprojects/extensions-app/data/ui/extensions-window.ui:233 msgid "Search Results" msgstr "Keresési találatok" #: subprojects/extensions-app/data/ui/extensions-window.ui:252 msgid "No Results Found" msgstr "Nincs találat" #: subprojects/extensions-app/data/ui/extensions-window.ui:253 msgid "Try a different search" msgstr "Próbáljon egy másik keresést" #: subprojects/extensions-app/data/ui/extensions-window.ui:264 msgid "No Installed Extensions" msgstr "Nincsenek telepített kiterjesztések" #: subprojects/extensions-app/data/ui/extensions-window.ui:265 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" "A kiterjesztések megtalálásához és hozzáadásához keresse fel az extensions.gnome.org oldalt." #: subprojects/extensions-app/data/ui/extensions-window.ui:276 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" "Sajnáljuk, de nem volt lehetséges lekérni a telepített kiterjesztések " "listáját. Győződjön meg róla, hogy bejelentkezett a GNOME-ba, és próbálja " "meg újra." #: subprojects/extensions-app/data/ui/help-overlay.ui:9 msgctxt "shortcut window" msgid "General" msgstr "Általános" #: subprojects/extensions-app/data/ui/help-overlay.ui:12 msgctxt "shortcut window" msgid "Open Menu" msgstr "Menü megnyitása" #: subprojects/extensions-app/data/ui/help-overlay.ui:18 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Keresés be- és kikapcsolása" #: subprojects/extensions-app/data/ui/help-overlay.ui:24 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Gyorsbillentyűk megjelenítése" #: subprojects/extensions-app/data/ui/help-overlay.ui:30 msgctxt "shortcut window" msgid "Quit" msgstr "Kilépés" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:284 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "Az új kiterjesztés sikeresen létrehozva itt: %s.\n" #: subprojects/extensions-tool/src/command-create.c:376 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" "A névnek egy rövid (ideális esetben kifejező) karakterláncnak kell lennie.\n" "Példák: %s" #: subprojects/extensions-tool/src/command-create.c:382 #: subprojects/extensions-tool/src/main.c:243 msgid "Name" msgstr "Név" #: subprojects/extensions-tool/src/command-create.c:396 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" "A leírás egy egymondatos magyarázat a kiterjesztés működéséről.\n" "Példák: %s" #: subprojects/extensions-tool/src/command-create.c:402 #: subprojects/extensions-tool/src/main.c:246 msgid "Description" msgstr "Leírás" #: subprojects/extensions-tool/src/command-create.c:416 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" "A UUID a kiegészítő globálisan egyedi azonosítója.\n" "E-mail cím formátumúnak kell lennie (clicktofocus@janedoe.example.com)\n" #: subprojects/extensions-tool/src/command-create.c:443 msgid "Choose one of the available templates:\n" msgstr "Válassza ki az elérhető sablonok egyikét:\n" #: subprojects/extensions-tool/src/command-create.c:457 msgid "Template" msgstr "Sablon" #: subprojects/extensions-tool/src/command-create.c:515 msgid "The unique identifier of the new extension" msgstr "Az új kiterjesztés egyedi azonosítója" #: subprojects/extensions-tool/src/command-create.c:518 msgid "NAME" msgstr "NÉV" #: subprojects/extensions-tool/src/command-create.c:519 msgid "The user-visible name of the new extension" msgstr "Az új kiterjesztés felhasználók számára látható neve" #: subprojects/extensions-tool/src/command-create.c:521 msgid "DESCRIPTION" msgstr "LEÍRÁS" #: subprojects/extensions-tool/src/command-create.c:523 msgid "A short description of what the extension does" msgstr "Rövid leírás arról, hogy a kiterjesztés mit csinál" #: subprojects/extensions-tool/src/command-create.c:525 #: subprojects/extensions-tool/src/command-pack.c:455 msgid "DOMAIN" msgstr "TARTOMÁNY" #: subprojects/extensions-tool/src/command-create.c:527 msgid "The gettext domain used by the extension" msgstr "A kiterjesztés által használt gettext tartomány" #: subprojects/extensions-tool/src/command-create.c:529 #: subprojects/extensions-tool/src/command-pack.c:448 msgid "SCHEMA" msgstr "SÉMA" #: subprojects/extensions-tool/src/command-create.c:531 msgid "The GSettings schema used by the extension" msgstr "A kiterjesztés által használt GSettings séma" #: subprojects/extensions-tool/src/command-create.c:534 msgid "TEMPLATE" msgstr "SABLON" #: subprojects/extensions-tool/src/command-create.c:535 msgid "The template to use for the new extension" msgstr "Az új kiterjesztéshez használandó sablon" #: subprojects/extensions-tool/src/command-create.c:538 msgid "Include prefs.js template" msgstr "A prefs.js sablon felvétele" #: subprojects/extensions-tool/src/command-create.c:544 msgid "Enter extension information interactively" msgstr "Adja meg a kiterjesztés információit interaktív módon" #: subprojects/extensions-tool/src/command-create.c:552 msgid "Create a new extension" msgstr "Új kiterjesztés létrehozása" #: subprojects/extensions-tool/src/command-create.c:570 #: subprojects/extensions-tool/src/command-list.c:190 msgid "Unknown arguments" msgstr "Ismeretlen argumentumok" #: subprojects/extensions-tool/src/command-create.c:595 msgid "UUID, name and description are required" msgstr "A UUID, név és leírás kötelező" #: subprojects/extensions-tool/src/command-disable.c:62 #: subprojects/extensions-tool/src/command-enable.c:62 #, c-format msgid "Extension “%s” does not exist\n" msgstr "A(z) „%s” kiterjesztés nem létezik\n" #: subprojects/extensions-tool/src/command-disable.c:98 msgid "Disable an extension" msgstr "Kiterjesztés letiltása" #: subprojects/extensions-tool/src/command-disable.c:116 #: subprojects/extensions-tool/src/command-enable.c:116 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "Nincs UUID megadva" #: subprojects/extensions-tool/src/command-disable.c:121 #: subprojects/extensions-tool/src/command-enable.c:121 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "Több mint egy UUID lett megadva" #: subprojects/extensions-tool/src/command-enable.c:98 msgid "Enable an extension" msgstr "Kiterjesztés engedélyezése" #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:66 #: subprojects/extensions-tool/src/main.c:150 msgid "Failed to connect to GNOME Shell\n" msgstr "Nem sikerült kapcsolódni a GNOME Shellhez\n" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:159 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "A(z) „%s” kiterjesztés nem létezik\n" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "Kiterjesztésinformációk megjelenítése" #: subprojects/extensions-tool/src/command-install.c:190 msgid "Overwrite an existing extension" msgstr "Meglévő kiterjesztés felülírása" #: subprojects/extensions-tool/src/command-install.c:192 msgid "EXTENSION_BUNDLE" msgstr "KITERJESZTÉSCSOMAG" #: subprojects/extensions-tool/src/command-install.c:201 msgid "Install an extension bundle" msgstr "Kiterjesztéscsomag telepítése" #: subprojects/extensions-tool/src/command-install.c:219 msgid "No extension bundle specified" msgstr "Nincs megadva kiterjesztéscsomag" #: subprojects/extensions-tool/src/command-install.c:225 msgid "More than one extension bundle specified" msgstr "Több mint egy kiterjesztéscsomag lett megadva" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show user-installed extensions" msgstr "Felhasználó által telepített kiterjesztések megjelenítése" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show system-installed extensions" msgstr "Rendszer által telepített kiterjesztések megjelenítése" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Show enabled extensions" msgstr "Engedélyezett kiterjesztések megjelenítése" #: subprojects/extensions-tool/src/command-list.c:149 msgid "Show disabled extensions" msgstr "Letiltott kiterjesztések megjelenítése" #: subprojects/extensions-tool/src/command-list.c:152 msgid "Show extensions in active state" msgstr "Aktív állapotú kiterjesztések megjelenítése" #: subprojects/extensions-tool/src/command-list.c:155 msgid "Show extensions in inactive state" msgstr "Inaktív állapotú kiterjesztések megjelenítése" #: subprojects/extensions-tool/src/command-list.c:158 msgid "Show extensions with preferences" msgstr "Beállításokkal rendelkező kiterjesztések megjelenítése" #: subprojects/extensions-tool/src/command-list.c:161 msgid "Show extensions with updates" msgstr "Frissítésekkel rendelkező kiterjesztések megjelenítése" #: subprojects/extensions-tool/src/command-list.c:164 msgid "Print extension details" msgstr "Kiterjesztés részleteinek kiírása" #: subprojects/extensions-tool/src/command-list.c:172 msgid "List installed extensions" msgstr "Telepített kiterjesztések felsorolása" #: subprojects/extensions-tool/src/command-pack.c:444 msgid "FILE" msgstr "FÁJL" #: subprojects/extensions-tool/src/command-pack.c:445 msgid "Additional source to include in the bundle" msgstr "További hozzáadandó források a csomaghoz" #: subprojects/extensions-tool/src/command-pack.c:449 msgid "A GSettings schema that should be included" msgstr "Csomaghoz adandó GSettings séma" #: subprojects/extensions-tool/src/command-pack.c:451 #: subprojects/extensions-tool/src/command-pack.c:462 msgid "DIRECTORY" msgstr "KÖNYVTÁR" #: subprojects/extensions-tool/src/command-pack.c:453 msgid "The directory where translations are found" msgstr "A könyvtár, amely a fordításokat tartalmazza" #: subprojects/extensions-tool/src/command-pack.c:457 msgid "The gettext domain to use for translations" msgstr "A fordításokhoz használandó gettext tartomány" #: subprojects/extensions-tool/src/command-pack.c:460 msgid "Overwrite an existing pack" msgstr "Létező csomag felülírása" #: subprojects/extensions-tool/src/command-pack.c:464 msgid "The directory where the pack should be created" msgstr "A könyvtár, ahol a csomagot létre kell hozni" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "SOURCE_DIRECTORY" msgstr "FORRÁS_KÖNYVTÁR" #: subprojects/extensions-tool/src/command-pack.c:475 msgid "Create an extension bundle" msgstr "Kiterjesztéscsomag létrehozása" #: subprojects/extensions-tool/src/command-pack.c:495 msgid "More than one source directory specified" msgstr "Több mint egy forráskönyvtár lett megadva" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "A(z) „%s” kiterjesztésnek nincsenek beállításai\n" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "A(z) „%s” kiterjesztés beállításainak megnyitása sikertelen: %s\n" #: subprojects/extensions-tool/src/command-prefs.c:87 msgid "Opens extension preferences" msgstr "Megnyitja a kiterjesztés beállításait" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "Kiterjesztés visszaállítása" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "Nem lehet eltávolítani a rendszerkiterjesztéseket\n" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "A(z) „%s” eltávolítása sikertelen\n" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "Kiterjesztés eltávolítása" #: subprojects/extensions-tool/src/main.c:76 msgid "Do not print error messages" msgstr "Ne írjon ki hibaüzeneteket" #: subprojects/extensions-tool/src/main.c:249 msgid "Path" msgstr "Útvonal" #: subprojects/extensions-tool/src/main.c:252 msgid "URL" msgstr "URL" #: subprojects/extensions-tool/src/main.c:255 msgid "Original author" msgstr "Eredeti szerző" #: subprojects/extensions-tool/src/main.c:261 #: subprojects/extensions-tool/src/main.c:263 #: subprojects/extensions-tool/src/main.c:265 msgid "Version" msgstr "Verzió" #: subprojects/extensions-tool/src/main.c:268 msgid "Enabled" msgstr "Engedélyezve" #: subprojects/extensions-tool/src/main.c:268 msgid "Yes" msgstr "Igen" #: subprojects/extensions-tool/src/main.c:268 msgid "No" msgstr "Nem" #: subprojects/extensions-tool/src/main.c:271 msgid "State" msgstr "Állapot" #: subprojects/extensions-tool/src/main.c:309 msgid "“version” takes no arguments" msgstr "a „version” nem fogad argumentumokat" #: subprojects/extensions-tool/src/main.c:311 #: subprojects/extensions-tool/src/main.c:331 msgid "Usage:" msgstr "Használat:" #: subprojects/extensions-tool/src/main.c:314 msgid "Print version information and exit." msgstr "Verzióinformációk kiírása és kilépés." #: subprojects/extensions-tool/src/main.c:329 #: subprojects/extensions-tool/src/main.c:332 msgid "COMMAND" msgstr "PARANCS" #: subprojects/extensions-tool/src/main.c:332 msgid "[ARGS…]" msgstr "[ARGUMENTUMOK…]" #: subprojects/extensions-tool/src/main.c:334 msgid "Commands:" msgstr "Parancsok:" #: subprojects/extensions-tool/src/main.c:335 msgid "Print help" msgstr "Súgó kiírása" #: subprojects/extensions-tool/src/main.c:337 msgid "Enable extension" msgstr "Kiterjesztés engedélyezése" #: subprojects/extensions-tool/src/main.c:338 msgid "Disable extension" msgstr "Kiterjesztés letiltása" #: subprojects/extensions-tool/src/main.c:339 msgid "Reset extension" msgstr "Kiterjesztés visszaállítása" #: subprojects/extensions-tool/src/main.c:340 msgid "Uninstall extension" msgstr "Kiterjesztés eltávolítása" #: subprojects/extensions-tool/src/main.c:341 msgid "List extensions" msgstr "Kiterjesztések felsorolása" #: subprojects/extensions-tool/src/main.c:342 #: subprojects/extensions-tool/src/main.c:343 msgid "Show extension info" msgstr "Kiterjesztésinformációk megjelenítése" #: subprojects/extensions-tool/src/main.c:344 msgid "Open extension preferences" msgstr "Kiterjesztésbeállítások megnyitása" #: subprojects/extensions-tool/src/main.c:345 msgid "Create extension" msgstr "Kiterjesztés létrehozása" #: subprojects/extensions-tool/src/main.c:346 msgid "Package extension" msgstr "Kiterjesztés csomagolása" #: subprojects/extensions-tool/src/main.c:347 msgid "Install extension bundle" msgstr "Kiterjesztéscsomag telepítése" #: subprojects/extensions-tool/src/main.c:349 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "Részletes súgóhoz használja ezt: „%s”.\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "Egyszerű" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "Egy üres kiterjesztés" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "Jelző" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "Ikon hozzáadása a felső sávhoz" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:4 msgid "Quick Settings Item" msgstr "Gyors beállítások elem" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:5 msgid "Add an item to quick settings" msgstr "Elem hozzáadása a gyors beállításokhoz" #. translators: #. * The device has been disabled #: subprojects/gvc/gvc-mixer-control.c:1872 msgid "Disabled" msgstr "Tiltva" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1879 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u kimenet" msgstr[1] "%u kimenet" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1889 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u bemenet" msgstr[1] "%u bemenet" #: subprojects/gvc/gvc-mixer-control.c:2872 msgid "System Sounds" msgstr "Rendszerhangok" 0707010000023B000081A40000000000000000000000016712993F0000E0D4000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/ia.po# Interlingua translations for gnome-shell package. # Copyright (C) 2013 Free Software Foundation, Inc. # This file is distributed under the same license as the gnome-shell package. # Nik Kalach , 2013. # msgid "" msgstr "" "Project-Id-Version: gnome-shell master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "shell&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2013-04-23 19:57+0000\n" "PO-Revision-Date: 2013-04-23 08:00+0400\n" "Last-Translator: Nik Kalach \n" "Language-Team: Interlingua \n" "Language: ia\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" #: ../data/50-gnome-shell-screenshot.xml.in.h:1 msgid "Screenshots" msgstr "Capturas de schermo" #: ../data/50-gnome-shell-screenshot.xml.in.h:2 msgid "Record a screencast" msgstr "Registrar un video de schermo" #: ../data/50-gnome-shell-system.xml.in.h:1 msgid "System" msgstr "Systema" #: ../data/50-gnome-shell-system.xml.in.h:2 msgid "Show the message tray" msgstr "Monstrar le tiratorio de messages" #: ../data/50-gnome-shell-system.xml.in.h:3 msgid "Focus the active notification" msgstr "Mitter foco al notificationes active" #: ../data/50-gnome-shell-system.xml.in.h:4 msgid "Show the overview" msgstr "Monstrar le panorama" #: ../data/50-gnome-shell-system.xml.in.h:5 msgid "Show all applications" msgstr "Monstrar tote le applicationes" #: ../data/50-gnome-shell-system.xml.in.h:6 msgid "Open the application menu" msgstr "Aperir le menu de applicationes" #: ../data/gnome-shell.desktop.in.in.h:1 msgid "GNOME Shell" msgstr "GNOME Shell" #: ../data/gnome-shell.desktop.in.in.h:2 msgid "Window management and application launching" msgstr "Gestion de fenestras e lanceamento de applicationes" #: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1 #: ../js/extensionPrefs/main.js:153 msgid "GNOME Shell Extension Preferences" msgstr "Preferentias pro le extensiones GNOME Shell" #: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2 msgid "Configure GNOME Shell Extensions" msgstr "Configurar le extensiones GNOME Shell" #: ../data/org.gnome.shell.gschema.xml.in.in.h:1 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" "Permitter le accesso via Alt-F2 al instrumentos interne que es utile pro " "disveloppatores e probatores" #: ../data/org.gnome.shell.gschema.xml.in.in.h:2 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Permitter le accesso via le dialog de lanceamento de applicationes (Alt-F2) " "al instrumentos interne que es utile pro eliminar defectos de software e " "facer le surveliantia" #: ../data/org.gnome.shell.gschema.xml.in.in.h:3 msgid "Uuids of extensions to enable" msgstr "Identificatores UUID del extensiones a activar" #: ../data/org.gnome.shell.gschema.xml.in.in.h:4 msgid "" "GNOME Shell extensions have a uuid property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension DBus methods on org.gnome.Shell." msgstr "" "Le extensiones GNOME Shell ha un proprietate UUID. Iste clave enumera le " "extensiones que debe ser cargate. Tote le extensiones que vole ser cargate " "debe adjungar se a iste lista. Il pote anque manipular iste lista con le " "methodos DBus EnableExtension e DisableExtension de org.gnome.Shell." #: ../data/org.gnome.shell.gschema.xml.in.in.h:5 msgid "Whether to collect stats about applications usage" msgstr "Colliger statisticas super le utilisation de applicationes" #: ../data/org.gnome.shell.gschema.xml.in.in.h:6 msgid "" "The shell normally monitors active applications in order to present the most " "used ones (e.g. in launchers). While this data will be kept private, you may " "want to disable this for privacy reasons. Please note that doing so won't " "remove already saved data." msgstr "" "Normalmente GNOME Shell survelia le applicationes active a fin de presentar " "le plus utilisate (per ex. in le lanceatores). Ben que le datos se guarda in " "privato, on pote disactivar iste functionalitate per le ration de " "confidentialitate. Remarca que iste disactivation non removera le datos jam " "registrate." #: ../data/org.gnome.shell.gschema.xml.in.in.h:7 msgid "List of desktop file IDs for favorite applications" msgstr "" "Lista de identificatores de files desktop pro le applicationes favorite" #: ../data/org.gnome.shell.gschema.xml.in.in.h:8 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" "Le applicationes que corresponde a iste identificatores essera monstrate in " "le area de favoritos." #: ../data/org.gnome.shell.gschema.xml.in.in.h:9 msgid "List of categories that should be displayed as folders" msgstr "Lista de categorias que deberea ser monstrate como dossiers" #: ../data/org.gnome.shell.gschema.xml.in.in.h:10 msgid "" "Each category name in this list will be represented as folder in the " "application view, rather than being displayed inline in the main view." msgstr "" "Cata nomine de categoria in iste lista sera representate como un dossier in " "le vista de applicationes, plus tosto que de esser alineate in le vista " "principal." #: ../data/org.gnome.shell.gschema.xml.in.in.h:11 msgid "History for command (Alt-F2) dialog" msgstr "Historia del dialogo de commandos (Alt-F2)" #: ../data/org.gnome.shell.gschema.xml.in.in.h:12 msgid "History for the looking glass dialog" msgstr "Historia del dialogo de inspection" #: ../data/org.gnome.shell.gschema.xml.in.in.h:13 msgid "" "Internally used to store the last IM presence explicitly set by the user. " "The value here is from the TpConnectionPresenceType enumeration." msgstr "" "Illo se utilisa internemente pro registrar le ultime stato de presentia que " "es definite explicitemente per le usator in le systema de messages instante. " "Le valor hic es del enumeration TpConnectionPresenceType." #: ../data/org.gnome.shell.gschema.xml.in.in.h:14 msgid "" "Internally used to store the last session presence status for the user. The " "value here is from the GsmPresenceStatus enumeration." msgstr "" "Illo se utilisa internemente pro registrar le ultime stato de session del " "usator. Le valor hic es del enumeration GsmPresenceStatus." #: ../data/org.gnome.shell.gschema.xml.in.in.h:15 msgid "Always show the 'Log out' menuitem in the user menu." msgstr "" "Sempre monstrar le elemento de menu 'Clauder le session' in le menu de " "usator." #: ../data/org.gnome.shell.gschema.xml.in.in.h:16 msgid "" "This key overrides the automatic hiding of the 'Log out' menuitem in single-" "user, single-session situations." msgstr "" "Iste clave supplanta le celamento automatic del elemento de menu 'Clauder le " "session' in situationes con singule usator o singule session." #: ../data/org.gnome.shell.gschema.xml.in.in.h:17 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "Si memorar le contrasigno pro montar le systemas de files cifrate o remote" #: ../data/org.gnome.shell.gschema.xml.in.in.h:18 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "'Remember Password' checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "Le shell demandara un contrasigno pro montar un dispositivo cifrate o un " "systema de files remote. Si le contrasigno pote ser retenite pro uso futur " "un quadrato de selection 'Memorar le contrasigno' sera monstrate. Iste clave " "defini le stato predefinite del quadrato de selection." #: ../data/org.gnome.shell.gschema.xml.in.in.h:19 msgid "Show the week date in the calendar" msgstr "Monstrar le numeration de septimanas in le calendario" #: ../data/org.gnome.shell.gschema.xml.in.in.h:20 msgid "If true, display the ISO week date in the calendar." msgstr "Si ver, monstrar le numero de septimana ISO in le calendario." #: ../data/org.gnome.shell.gschema.xml.in.in.h:21 msgid "Keybinding to open the application menu" msgstr "Association de claves pro aperir le menu de applicationes" #: ../data/org.gnome.shell.gschema.xml.in.in.h:22 msgid "Keybinding to open the application menu." msgstr "Association de claves pro aperir le menu de applicationes." #: ../data/org.gnome.shell.gschema.xml.in.in.h:23 msgid "Keybinding to open the \"Show Applications\" view" msgstr "Association de claves pro aperir le vista \"Monstrar applicationes\"" #: ../data/org.gnome.shell.gschema.xml.in.in.h:24 msgid "" "Keybinding to open the \"Show Applications\" view of the Activities Overview." msgstr "" "Association de claves pro aperir le vista \"Monstrar applicationes\" del " "panorama de activitates." #: ../data/org.gnome.shell.gschema.xml.in.in.h:25 msgid "Keybinding to open the overview" msgstr "Association de claves pro aperir le panorama" #: ../data/org.gnome.shell.gschema.xml.in.in.h:26 msgid "Keybinding to open the Activities Overview." msgstr "Association de claves pro aperir le panorama de activitates" #: ../data/org.gnome.shell.gschema.xml.in.in.h:27 msgid "Keybinding to toggle the visibility of the message tray" msgstr "" "Association de claves pro commutar le visibilitate del tiratorio de messages" #: ../data/org.gnome.shell.gschema.xml.in.in.h:28 msgid "Keybinding to toggle the visibility of the message tray." msgstr "" "Association de claves pro commutar le visibilitate del tiratorio de messages." #: ../data/org.gnome.shell.gschema.xml.in.in.h:29 msgid "Keybinding to focus the active notification" msgstr "Association de claves pro mitter foco al notificationes active" #: ../data/org.gnome.shell.gschema.xml.in.in.h:30 msgid "Keybinding to focus the active notification." msgstr "Association de claves pro mitter foco al notificationes active." #: ../data/org.gnome.shell.gschema.xml.in.in.h:31 msgid "Keybinding to toggle the screen recorder" msgstr "Association de claves pro commutar le registrator de schermo" #: ../data/org.gnome.shell.gschema.xml.in.in.h:32 msgid "Keybinding to start/stop the builtin screen recorder." msgstr "Association de claves pro initiar/arrestar le registration de schermo." #: ../data/org.gnome.shell.gschema.xml.in.in.h:33 msgid "Which keyboard to use" msgstr "Que claviero usar" #: ../data/org.gnome.shell.gschema.xml.in.in.h:34 msgid "The type of keyboard to use." msgstr "Le typo de claviero a usar." #: ../data/org.gnome.shell.gschema.xml.in.in.h:35 msgid "Framerate used for recording screencasts." msgstr "Rata de quadros usate pro registrar le video de schermo." #: ../data/org.gnome.shell.gschema.xml.in.in.h:36 msgid "" "The framerate of the resulting screencast recordered by GNOME Shell's " "screencast recorder in frames-per-second." msgstr "" "Le numero de imagines per secunda in le video de schermo registrate per le " "registrator incorporate in GNOME Shell." #: ../data/org.gnome.shell.gschema.xml.in.in.h:37 msgid "The gstreamer pipeline used to encode the screencast" msgstr "Le catena usante per gstreamer pro codificar video de schermo" #: ../data/org.gnome.shell.gschema.xml.in.in.h:39 #, no-c-format msgid "" "Sets the GStreamer pipeline used to encode recordings. It follows the syntax " "used for gst-launch. The pipeline should have an unconnected sink pad where " "the recorded video is recorded. It will normally have a unconnected source " "pad; output from that pad will be written into the output file. However the " "pipeline can also take care of its own output - this might be used to send " "the output to an icecast server via shout2send or similar. When unset or set " "to an empty value, the default pipeline will be used. This is currently " "'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 " "threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is " "used as a placeholder for a guess at the optimal thread count on the system." msgstr "" "Le definition del catena usante per GStreamer pro codificar videos. Le " "syntaxe es identic al syntaxe usate per gst-launch. Le catena deberea haber " "un puncto de egresso disconnectite a ubi le video se scribe. Generalmente " "illo va haber un puncto de origine disconnectite; le egresso de iste puncto " "se scribera in le file de resultato. Totevia, le catena anque pote custodiar " "su proprie egresso - isto pote ser usate pro inviar le resultato a un " "servitor icecast via shout2send o simile. Quando le valor non es definite o " "vacue, le catena predefinite se usa. Isto es actualmente 'vp8enc " "min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! " "queue ! webmmux' e registra in WEBM usante le codec VP8. %T designa le " "numero de filos optimal pro le systema." #: ../data/org.gnome.shell.gschema.xml.in.in.h:40 msgid "File extension used for storing the screencast" msgstr "Extension de file a usar pro slaveguardar le video de schermo" #: ../data/org.gnome.shell.gschema.xml.in.in.h:41 msgid "" "The filename for recorded screencasts will be a unique filename based on the " "current date, and use this extension. It should be changed when recording to " "a different container format." msgstr "" "Le nomine de file del video registrate es unic. Illo se basa super le data " "currente e iste extension. Illo deberea esser modificate si le formato de " "container usate pro registar le video es differente." #: ../data/org.gnome.shell.gschema.xml.in.in.h:42 msgid "The application icon mode." msgstr "Le modo de icone in le selector de applicationes." #: ../data/org.gnome.shell.gschema.xml.in.in.h:43 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-" "only' (shows only the application icon) or 'both'." msgstr "" "Le configuration del maniera como le fenestras es monstrate in le selector. " "Le possibilitates valide es 'thumbnail-only' (monstrar un miniatura del " "fenestra), 'app-icon-only' (monstrar solmente un icone del application) o " "'both' (monstrar tote le duo)." #: ../data/org.gnome.shell.gschema.xml.in.in.h:44 msgid "Attach modal dialog to the parent window" msgstr "Attaccar le dialogo modal al fenestra parental" #: ../data/org.gnome.shell.gschema.xml.in.in.h:45 msgid "" "This key overrides the key in org.gnome.mutter when running GNOME Shell." msgstr "" "Iste clave supplanta le clave in org.gnome.mutter quando GNOME Shell es " "lanceate." #: ../data/org.gnome.shell.gschema.xml.in.in.h:46 msgid "Arrangement of buttons on the titlebar" msgstr "Arrangiamento de buttones sur le barra de titulo" #: ../data/org.gnome.shell.gschema.xml.in.in.h:47 msgid "" "This key overrides the key in org.gnome.desktop.wm.preferences when running " "GNOME Shell." msgstr "" "Iste clave supplanta le clave in org.gnome.desktop.wm.preferences quando " "GNOME Shell es lanceate." #: ../data/org.gnome.shell.gschema.xml.in.in.h:48 msgid "Enable edge tiling when dropping windows on screen edges" msgstr "Activar le tegulage de fenestras depositate sur le bordos del schermo" #: ../data/org.gnome.shell.gschema.xml.in.in.h:49 msgid "Workspaces are managed dynamically" msgstr "Le spatios de travalio se gere dynamicamente" #: ../data/org.gnome.shell.gschema.xml.in.in.h:50 msgid "Workspaces only on primary monitor" msgstr "Le spatios de travalio es solmente sur le schermo principal" #: ../js/extensionPrefs/main.js:125 #, c-format msgid "There was an error loading the preferences dialog for %s:" msgstr "Il ha un error al cargamento del dialogo de preferentias pro %s:" #: ../js/extensionPrefs/main.js:165 msgid "Extension" msgstr "Extension" #: ../js/extensionPrefs/main.js:189 msgid "Select an extension to configure using the combobox above." msgstr "Selige un extension que configurar usante le lista combinate in alto." #: ../js/gdm/loginDialog.js:405 msgid "Session…" msgstr "Session…" #. translators: this message is shown below the user list on the #. login screen. It can be activated to reveal an entry for #. manually entering the username. #: ../js/gdm/loginDialog.js:630 msgid "Not listed?" msgstr "Esque le nomine non es in le lista?" #: ../js/gdm/loginDialog.js:787 ../js/ui/components/networkAgent.js:137 #: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:376 #: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399 #: ../js/ui/status/bluetooth.js:415 ../js/ui/unlockDialog.js:100 #: ../js/ui/userMenu.js:938 msgid "Cancel" msgstr "Annullar" #: ../js/gdm/loginDialog.js:803 msgctxt "button" msgid "Sign In" msgstr "Connecter se" #: ../js/gdm/loginDialog.js:803 msgid "Next" msgstr "Sequente" #. TTLS and PEAP are actually much more complicated, but this complication #. is not visible here since we only care about phase2 authentication #. (and don't even care of which one) #: ../js/gdm/loginDialog.js:918 ../js/ui/components/networkAgent.js:260 #: ../js/ui/components/networkAgent.js:278 msgid "Username: " msgstr "Nomine de usator:" #: ../js/gdm/loginDialog.js:1174 msgid "Login Window" msgstr "Fenestra de connexion" #. Translators: accessible name of the power menu in the login screen #: ../js/gdm/powerMenu.js:36 msgid "Power" msgstr "Energia" #: ../js/gdm/powerMenu.js:93 ../js/ui/userMenu.js:696 ../js/ui/userMenu.js:700 #: ../js/ui/userMenu.js:816 msgid "Suspend" msgstr "Suspender" #: ../js/gdm/powerMenu.js:98 msgid "Restart" msgstr "Reinitiar" #: ../js/gdm/powerMenu.js:103 ../js/ui/userMenu.js:698 #: ../js/ui/userMenu.js:700 ../js/ui/userMenu.js:815 ../js/ui/userMenu.js:942 msgid "Power Off" msgstr "Extinguer" #: ../js/gdm/util.js:249 msgid "Authentication error" msgstr "Error de authentication" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger instead #: ../js/gdm/util.js:366 msgid "(or swipe finger)" msgstr "(o passa le digito trans le lector de impressiones)" #: ../js/gdm/util.js:391 #, c-format msgid "(e.g., user or %s)" msgstr "(per ex., usator o %s)" #: ../js/misc/util.js:97 msgid "Command not found" msgstr "Commando non trovate" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: ../js/misc/util.js:130 msgid "Could not parse command:" msgstr "Impossibile de analysar le commando:" #: ../js/misc/util.js:138 #, c-format msgid "Execution of '%s' failed:" msgstr "Falta al execution de '%s':" #: ../js/ui/appDisplay.js:351 msgid "Frequent" msgstr "Frequente" #: ../js/ui/appDisplay.js:358 msgid "All" msgstr "Tote" #: ../js/ui/appDisplay.js:916 msgid "New Window" msgstr "Nove fenestra" #: ../js/ui/appDisplay.js:919 ../js/ui/dash.js:284 msgid "Remove from Favorites" msgstr "Remover del favoritos" #: ../js/ui/appDisplay.js:920 msgid "Add to Favorites" msgstr "Adder al favoritos" #: ../js/ui/appFavorites.js:87 #, c-format msgid "%s has been added to your favorites." msgstr "%s ha essite addite al favoritos." #: ../js/ui/appFavorites.js:121 #, c-format msgid "%s has been removed from your favorites." msgstr "%s ha essite removite del favoritos." #: ../js/ui/backgroundMenu.js:19 ../js/ui/userMenu.js:789 msgid "Settings" msgstr "Parametros" #: ../js/ui/backgroundMenu.js:21 msgid "Change Background…" msgstr "Cambiar le fundo…" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: ../js/ui/calendar.js:62 msgctxt "event list time" msgid "All Day" msgstr "Jornata" #. Translators: Shown in calendar event list, if 24h format, #. \u2236 is a ratio character, similar to : #: ../js/ui/calendar.js:68 msgctxt "event list time" msgid "%H\\u2236%M" msgstr "%H\\u2236%M" #. Translators: Shown in calendar event list, if 12h format, #. \u2236 is a ratio character, similar to : and \u2009 is #. a thin space #: ../js/ui/calendar.js:77 msgctxt "event list time" msgid "%l\\u2236%M\\u2009%p" msgstr "%l\\u2236%M\\u2009%p" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: ../js/ui/calendar.js:108 msgctxt "grid sunday" msgid "S" msgstr "D" #. Translators: Calendar grid abbreviation for Monday #: ../js/ui/calendar.js:110 msgctxt "grid monday" msgid "M" msgstr "L" #. Translators: Calendar grid abbreviation for Tuesday #: ../js/ui/calendar.js:112 msgctxt "grid tuesday" msgid "T" msgstr "M" #. Translators: Calendar grid abbreviation for Wednesday #: ../js/ui/calendar.js:114 msgctxt "grid wednesday" msgid "W" msgstr "M" #. Translators: Calendar grid abbreviation for Thursday #: ../js/ui/calendar.js:116 msgctxt "grid thursday" msgid "T" msgstr "J" #. Translators: Calendar grid abbreviation for Friday #: ../js/ui/calendar.js:118 msgctxt "grid friday" msgid "F" msgstr "V" #. Translators: Calendar grid abbreviation for Saturday #: ../js/ui/calendar.js:120 msgctxt "grid saturday" msgid "S" msgstr "S" #. Translators: Event list abbreviation for Sunday. #. * #. * NOTE: These list abbreviations are normally not shown together #. * so they need to be unique (e.g. Tuesday and Thursday cannot #. * both be 'T'). #. #: ../js/ui/calendar.js:133 msgctxt "list sunday" msgid "Su" msgstr "Do" #. Translators: Event list abbreviation for Monday #: ../js/ui/calendar.js:135 msgctxt "list monday" msgid "M" msgstr "Lu" #. Translators: Event list abbreviation for Tuesday #: ../js/ui/calendar.js:137 msgctxt "list tuesday" msgid "T" msgstr "Ma" #. Translators: Event list abbreviation for Wednesday #: ../js/ui/calendar.js:139 msgctxt "list wednesday" msgid "W" msgstr "Me" #. Translators: Event list abbreviation for Thursday #: ../js/ui/calendar.js:141 msgctxt "list thursday" msgid "Th" msgstr "Jo" #. Translators: Event list abbreviation for Friday #: ../js/ui/calendar.js:143 msgctxt "list friday" msgid "F" msgstr "Ve" #. Translators: Event list abbreviation for Saturday #: ../js/ui/calendar.js:145 msgctxt "list saturday" msgid "S" msgstr "Sa" #. Translators: Text to show if there are no events #: ../js/ui/calendar.js:720 msgid "Nothing Scheduled" msgstr "Nihil planate" #. Translators: Shown on calendar heading when selected day occurs on current year #: ../js/ui/calendar.js:736 msgctxt "calendar heading" msgid "%A, %B %d" msgstr "%A, le %d de %B" #. Translators: Shown on calendar heading when selected day occurs on different year #: ../js/ui/calendar.js:739 msgctxt "calendar heading" msgid "%A, %B %d, %Y" msgstr "%A, le %d de %B %Y" #: ../js/ui/calendar.js:749 msgid "Today" msgstr "Hodie" #: ../js/ui/calendar.js:753 msgid "Tomorrow" msgstr "Deman" #: ../js/ui/calendar.js:764 msgid "This week" msgstr "Iste septimana" #: ../js/ui/calendar.js:772 msgid "Next week" msgstr "Le septimana proxime" #: ../js/ui/components/automountManager.js:90 msgid "External drive connected" msgstr "Disco externe connectite" #: ../js/ui/components/automountManager.js:101 msgid "External drive disconnected" msgstr "Disco externe disconnectite" #: ../js/ui/components/autorunManager.js:294 msgid "Removable Devices" msgstr "Dispositivo removibile" #: ../js/ui/components/autorunManager.js:594 #, c-format msgid "Open with %s" msgstr "Aperir con %s" #: ../js/ui/components/autorunManager.js:620 msgid "Eject" msgstr "Ejacular" #: ../js/ui/components/keyring.js:82 ../js/ui/components/polkitAgent.js:268 msgid "Password:" msgstr "Contrasigno:" #: ../js/ui/components/keyring.js:101 msgid "Type again:" msgstr "Introduce de novo:" #: ../js/ui/components/networkAgent.js:132 msgid "Connect" msgstr "Connecter" #. Cisco LEAP #: ../js/ui/components/networkAgent.js:223 #: ../js/ui/components/networkAgent.js:235 #: ../js/ui/components/networkAgent.js:262 #: ../js/ui/components/networkAgent.js:282 #: ../js/ui/components/networkAgent.js:292 msgid "Password: " msgstr "Contrasigno: " #. static WEP #: ../js/ui/components/networkAgent.js:228 msgid "Key: " msgstr "Clave: " #: ../js/ui/components/networkAgent.js:266 msgid "Identity: " msgstr "Identitate: " #: ../js/ui/components/networkAgent.js:268 msgid "Private key password: " msgstr "Contrasigno del clave private: " #: ../js/ui/components/networkAgent.js:280 msgid "Service: " msgstr "Servicio: " #: ../js/ui/components/networkAgent.js:309 msgid "Authentication required by wireless network" msgstr "Le authentication es requirite per le rete sin filo" #: ../js/ui/components/networkAgent.js:310 #, c-format msgid "" "Passwords or encryption keys are required to access the wireless network " "'%s'." msgstr "" "Contrasignos o claves de ciframento es necessari pro acceder al rete sin " "filo '%s'." #: ../js/ui/components/networkAgent.js:314 msgid "Wired 802.1X authentication" msgstr "Authentication 802.1X pro rete con filo" #: ../js/ui/components/networkAgent.js:316 msgid "Network name: " msgstr "Nomine de rete: " #: ../js/ui/components/networkAgent.js:321 msgid "DSL authentication" msgstr "Authentication DSL" #: ../js/ui/components/networkAgent.js:328 msgid "PIN code required" msgstr "Codice PIN es necessari" #: ../js/ui/components/networkAgent.js:329 msgid "PIN code is needed for the mobile broadband device" msgstr "Un codice PIN es necessari pro le dispositivo mobile" #: ../js/ui/components/networkAgent.js:330 msgid "PIN: " msgstr "PIN: " #: ../js/ui/components/networkAgent.js:336 msgid "Mobile broadband network password" msgstr "Contrasigno del rete mobile" #: ../js/ui/components/networkAgent.js:337 #, c-format msgid "A password is required to connect to '%s'." msgstr "Un contrasigno es necessari pro connecter a '%s'." #: ../js/ui/components/polkitAgent.js:55 msgid "Authentication Required" msgstr "Authentication necessari" #: ../js/ui/components/polkitAgent.js:93 msgid "Administrator" msgstr "Administrator" #: ../js/ui/components/polkitAgent.js:165 msgid "Authenticate" msgstr "Authenticar se" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: ../js/ui/components/polkitAgent.js:256 ../js/ui/shellMountOperation.js:383 msgid "Sorry, that didn't work. Please try again." msgstr "Error de authentication. Tenta de novo." #. Translators: this is a filename used for screencast recording #: ../js/ui/components/recorder.js:47 #, no-c-format msgid "Screencast from %d %t" msgstr "Video de schermo %d %t" #. FIXME: We don't have a 'chat room' icon (bgo #653737) use #. system-users for now as Empathy does. #: ../js/ui/components/telepathyClient.js:238 msgid "Invitation" msgstr "Invitation" #. We got the TpContact #: ../js/ui/components/telepathyClient.js:298 msgid "Call" msgstr "Appello" #. We got the TpContact #: ../js/ui/components/telepathyClient.js:314 msgid "File Transfer" msgstr "Transferentia de files" #: ../js/ui/components/telepathyClient.js:418 msgid "Chat" msgstr "Discussion" #: ../js/ui/components/telepathyClient.js:480 msgid "Unmute" msgstr "Facer non silente" #: ../js/ui/components/telepathyClient.js:480 msgid "Mute" msgstr "Silentiar" #. Translators: this is the word "Yesterday" followed by a time string. i.e. "Yesterday, 14:30" #: ../js/ui/components/telepathyClient.js:942 #, no-c-format msgid "Yesterday, %H:%M" msgstr "Heri, %H:%M" #. Translators: this is the week day name followed by a time string. i.e. "Monday, 14:30 #: ../js/ui/components/telepathyClient.js:948 #, no-c-format msgid "%A, %H:%M" msgstr "%A, %H:%M" #. Translators: this is the month name and day number followed by a time string. i.e. "May 25, 14:30" #: ../js/ui/components/telepathyClient.js:953 #, no-c-format msgid "%B %d, %H:%M" msgstr "%d de %B, %H:%M" #. Translators: this is the month name, day number, year number followed by a time string. i.e. "May 25 2012, 14:30" #: ../js/ui/components/telepathyClient.js:957 #, no-c-format msgid "%B %d %Y, %H:%M " msgstr "%d de %B %Y, %H:%M " #. Translators: this is the other person changing their old IM name to their new #. IM name. #: ../js/ui/components/telepathyClient.js:985 #, c-format msgid "%s is now known as %s" msgstr "%s es ora cognite como %s" #. translators: argument is a room name like #. * room@jabber.org for example. #: ../js/ui/components/telepathyClient.js:1088 #, c-format msgid "Invitation to %s" msgstr "Invitation a %s" #. translators: first argument is the name of a contact and the second #. * one the name of a room. "Alice is inviting you to join room@jabber.org #. * for example. #: ../js/ui/components/telepathyClient.js:1096 #, c-format msgid "%s is inviting you to join %s" msgstr "%s te es inviante a %s" #: ../js/ui/components/telepathyClient.js:1098 #: ../js/ui/components/telepathyClient.js:1137 #: ../js/ui/components/telepathyClient.js:1177 #: ../js/ui/components/telepathyClient.js:1240 msgid "Decline" msgstr "Declinar" #: ../js/ui/components/telepathyClient.js:1099 #: ../js/ui/components/telepathyClient.js:1178 #: ../js/ui/components/telepathyClient.js:1241 msgid "Accept" msgstr "Acceptar" #. translators: argument is a contact name like Alice for example. #: ../js/ui/components/telepathyClient.js:1129 #, c-format msgid "Video call from %s" msgstr "Appello video de %s" #. translators: argument is a contact name like Alice for example. #: ../js/ui/components/telepathyClient.js:1132 #, c-format msgid "Call from %s" msgstr "Appello de %s" #. translators: this is a button label (verb), not a noun #: ../js/ui/components/telepathyClient.js:1139 msgid "Answer" msgstr "Responder" #. To translators: The first parameter is #. * the contact's alias and the second one is the #. * file name. The string will be something #. * like: "Alice is sending you test.ogg" #. #: ../js/ui/components/telepathyClient.js:1171 #, c-format msgid "%s is sending you %s" msgstr "%s te es inviante %s" #. To translators: The parameter is the contact's alias #: ../js/ui/components/telepathyClient.js:1206 #, c-format msgid "%s would like permission to see when you are online" msgstr "%s sollicita le permission de vider quando tu es in linea" #: ../js/ui/components/telepathyClient.js:1298 msgid "Network error" msgstr "Error de rete" #: ../js/ui/components/telepathyClient.js:1300 msgid "Authentication failed" msgstr "Falta de authentication" #: ../js/ui/components/telepathyClient.js:1302 msgid "Encryption error" msgstr "Error de ciframento" #: ../js/ui/components/telepathyClient.js:1304 msgid "Certificate not provided" msgstr "Certificato non fornite" #: ../js/ui/components/telepathyClient.js:1306 msgid "Certificate untrusted" msgstr "Certificato indigne de fide" #: ../js/ui/components/telepathyClient.js:1308 msgid "Certificate expired" msgstr "Certificato perimite" #: ../js/ui/components/telepathyClient.js:1310 msgid "Certificate not activated" msgstr "Certificato non activate" #: ../js/ui/components/telepathyClient.js:1312 msgid "Certificate hostname mismatch" msgstr "Discordantia de nomine de host del certificato" #: ../js/ui/components/telepathyClient.js:1314 msgid "Certificate fingerprint mismatch" msgstr "Discordantia de impression digital del certificato" #: ../js/ui/components/telepathyClient.js:1316 msgid "Certificate self-signed" msgstr "Certificato autofirmate" #: ../js/ui/components/telepathyClient.js:1318 msgid "Status is set to offline" msgstr "Le stato es disconnexe" #: ../js/ui/components/telepathyClient.js:1320 msgid "Encryption is not available" msgstr "Le ciframento non es disponibile" #: ../js/ui/components/telepathyClient.js:1322 msgid "Certificate is invalid" msgstr "Le certificato non es valide" #: ../js/ui/components/telepathyClient.js:1324 msgid "Connection has been refused" msgstr "Le connexion ha essite refusate" #: ../js/ui/components/telepathyClient.js:1326 msgid "Connection can't be established" msgstr "Le connexion non pote ser establite" #: ../js/ui/components/telepathyClient.js:1328 msgid "Connection has been lost" msgstr "Le connexion se ha perdite" #: ../js/ui/components/telepathyClient.js:1330 msgid "This account is already connected to the server" msgstr "Iste conto jam es connectite al servitor" #: ../js/ui/components/telepathyClient.js:1332 msgid "" "Connection has been replaced by a new connection using the same resource" msgstr "" "Le connexion ha essite substituite per un nove connexion usante le mesme " "ressource" #: ../js/ui/components/telepathyClient.js:1334 msgid "The account already exists on the server" msgstr "Le conto jam existe sur le servitor" #: ../js/ui/components/telepathyClient.js:1336 msgid "Server is currently too busy to handle the connection" msgstr "Actualmente le servitor es troppo occupate pro tractar le connexion" #: ../js/ui/components/telepathyClient.js:1338 msgid "Certificate has been revoked" msgstr "Le certificato ha essite revocate" #: ../js/ui/components/telepathyClient.js:1340 msgid "" "Certificate uses an insecure cipher algorithm or is cryptographically weak" msgstr "" "Le certificato usa un algorithmo de ciframento insecur o es " "cryptographicamente debile" #: ../js/ui/components/telepathyClient.js:1342 msgid "" "The length of the server certificate, or the depth of the server certificate " "chain, exceed the limits imposed by the cryptography library" msgstr "" "Le longitude del certificato de servitor o le profunditate del catena de " "certificatos de servitor excede le limites imponite per le bibliotheca de " "cryptographia" #: ../js/ui/components/telepathyClient.js:1344 msgid "Internal error" msgstr "Error interne" #. translators: argument is the account name, like #. * name@jabber.org for example. #: ../js/ui/components/telepathyClient.js:1354 #, c-format msgid "Unable to connect to %s" msgstr "Impossibile de connecter a %s" #: ../js/ui/components/telepathyClient.js:1359 msgid "View account" msgstr "Examinar le conto" #: ../js/ui/components/telepathyClient.js:1398 msgid "Unknown reason" msgstr "Causa incognite" #: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96 msgid "Windows" msgstr "Fenestras" #: ../js/ui/dash.js:248 ../js/ui/dash.js:286 msgid "Show Applications" msgstr "Monstrar applicationes" #. Translators: this is the name of the dock/favorites area on #. the left of the overview #: ../js/ui/dash.js:435 msgid "Dash" msgstr "Pannello" #: ../js/ui/dateMenu.js:91 msgid "Open Calendar" msgstr "Aperir calendario" #: ../js/ui/dateMenu.js:96 msgid "Open Clocks" msgstr "Aperir horologios" #: ../js/ui/dateMenu.js:105 msgid "Date & Time Settings" msgstr "Parametros de data e hora" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM"). #. #: ../js/ui/dateMenu.js:215 msgid "%A %B %e, %Y" msgstr "%A, %e de %B %Y" #: ../js/ui/endSessionDialog.js:63 #, c-format msgctxt "title" msgid "Log Out %s" msgstr "Clauder le session de %s" #: ../js/ui/endSessionDialog.js:64 msgctxt "title" msgid "Log Out" msgstr "Clauder le session" #: ../js/ui/endSessionDialog.js:65 msgid "Click Log Out to quit these applications and log out of the system." msgstr "" "Clicca sur 'Clauder le session' pro quitar iste applicationes e sortir del " "systema." #: ../js/ui/endSessionDialog.js:67 #, c-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "Le session de %s sera terminate automaticamente in %d secunda." msgstr[1] "Le session de %s sera terminate automaticamente in %d secundas." #: ../js/ui/endSessionDialog.js:72 #, c-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "Le session sera terminate automaticamente in %d secunda." msgstr[1] "Le session sera terminate automaticamente in %d secundas." #: ../js/ui/endSessionDialog.js:76 msgid "Logging out of the system." msgstr "Clausura del session." #: ../js/ui/endSessionDialog.js:78 msgctxt "button" msgid "Log Out" msgstr "Clauder le session" #: ../js/ui/endSessionDialog.js:83 msgctxt "title" msgid "Power Off" msgstr "Extinguer" #: ../js/ui/endSessionDialog.js:84 msgid "Click Power Off to quit these applications and power off the system." msgstr "" "Clicca sur 'Extinguer' pro quitar iste applicationes e extinguer le systema." #: ../js/ui/endSessionDialog.js:86 #, c-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "Le systema se extinguera automaticamente in %d secunda." msgstr[1] "Le systema se extinguera automaticamente in %d secundas." #: ../js/ui/endSessionDialog.js:90 msgid "Powering off the system." msgstr "Extinction del systema." #: ../js/ui/endSessionDialog.js:92 ../js/ui/endSessionDialog.js:109 msgctxt "button" msgid "Restart" msgstr "Reinitiar" #: ../js/ui/endSessionDialog.js:94 msgctxt "button" msgid "Power Off" msgstr "Extinguer" #: ../js/ui/endSessionDialog.js:100 msgctxt "title" msgid "Restart" msgstr "Reinitiar" #: ../js/ui/endSessionDialog.js:101 msgid "Click Restart to quit these applications and restart the system." msgstr "" "Clicca sur 'Reinitiar' pro quitar iste applicationes e reinitiar le systema." #: ../js/ui/endSessionDialog.js:103 #, c-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "Le systema se reinitiara automaticamente in %d secunda." msgstr[1] "Le systema se reinitiara automaticamente in %d secundas." #: ../js/ui/endSessionDialog.js:107 msgid "Restarting the system." msgstr "Reinitio del systema." #: ../js/ui/extensionDownloader.js:199 msgid "Install" msgstr "Installar" #: ../js/ui/extensionDownloader.js:204 #, c-format msgid "Download and install '%s' from extensions.gnome.org?" msgstr "Discargar e installar '%s' de extensions.gnome.org?" #: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:314 #: ../js/ui/status/power.js:211 msgid "Keyboard" msgstr "Claviero" #: ../js/ui/lookingGlass.js:693 msgid "No extensions installed" msgstr "Necun extensiones installate" #. Translators: argument is an extension UUID. #: ../js/ui/lookingGlass.js:747 #, c-format msgid "%s has not emitted any errors." msgstr "%s non ha emittite alicun errores." #: ../js/ui/lookingGlass.js:753 msgid "Hide Errors" msgstr "Occultar errores" #: ../js/ui/lookingGlass.js:757 ../js/ui/lookingGlass.js:817 msgid "Show Errors" msgstr "Monstrar errores" #: ../js/ui/lookingGlass.js:766 msgid "Enabled" msgstr "Activate" #. translators: #. * The device has been disabled #: ../js/ui/lookingGlass.js:769 ../src/gvc/gvc-mixer-control.c:1830 msgid "Disabled" msgstr "Disactivate" #: ../js/ui/lookingGlass.js:771 msgid "Error" msgstr "Error" #: ../js/ui/lookingGlass.js:773 msgid "Out of date" msgstr "Perempte" #: ../js/ui/lookingGlass.js:775 msgid "Downloading" msgstr "Discargamento" #: ../js/ui/lookingGlass.js:799 msgid "View Source" msgstr "Monstrar le fonte" #: ../js/ui/lookingGlass.js:808 msgid "Web Page" msgstr "Pagina web" #: ../js/ui/messageTray.js:1182 msgid "Open" msgstr "Aperir" #: ../js/ui/messageTray.js:1189 msgid "Remove" msgstr "Remover" #: ../js/ui/messageTray.js:1501 msgid "Clear Messages" msgstr "Expunger messages" #: ../js/ui/messageTray.js:1528 msgid "Notification Settings" msgstr "Parametros de notificationes" #: ../js/ui/messageTray.js:1710 msgid "No Messages" msgstr "Necun message" #: ../js/ui/messageTray.js:1783 msgid "Message Tray" msgstr "Tiratorio de messages" #: ../js/ui/messageTray.js:2801 msgid "System Information" msgstr "Information de systema" #: ../js/ui/notificationDaemon.js:629 ../src/shell-app.c:378 msgctxt "program" msgid "Unknown" msgstr "Incognite" #: ../js/ui/overviewControls.js:472 ../js/ui/screenShield.js:149 #, c-format msgid "%d new message" msgid_plural "%d new messages" msgstr[0] "%d nove message" msgstr[1] "%d nove messages" #: ../js/ui/overview.js:82 msgid "Undo" msgstr "Disfacer" #: ../js/ui/overview.js:127 msgid "Overview" msgstr "Panorama" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: ../js/ui/overview.js:260 msgid "Type to search…" msgstr "Scribe pro cercar…" #: ../js/ui/panel.js:641 msgid "Quit" msgstr "Quitar" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: ../js/ui/panel.js:692 msgid "Activities" msgstr "Activitates" #: ../js/ui/panel.js:989 msgid "Top Bar" msgstr "Barra superior" #. Translators: this MUST be either "toggle-switch-us" #. (for toggle switches containing the English words #. "ON" and "OFF") or "toggle-switch-intl" (for toggle #. switches containing "◯" and "|"). Other values will #. simply result in invisible toggle switches. #: ../js/ui/popupMenu.js:718 msgid "toggle-switch-us" msgstr "toggle-switch-intl" #: ../js/ui/runDialog.js:74 msgid "Enter a Command" msgstr "Introduce un commando" #: ../js/ui/runDialog.js:110 msgid "Close" msgstr "Clauder" #. Translators: This is a time format for a date in #. long format #: ../js/ui/screenShield.js:86 msgid "%A, %B %d" msgstr "%A, %d de %B" #: ../js/ui/screenShield.js:151 #, c-format msgid "%d new notification" msgid_plural "%d new notifications" msgstr[0] "%d nove notification" msgstr[1] "%d nove notificationes" #: ../js/ui/screenShield.js:438 ../js/ui/userMenu.js:807 msgid "Lock" msgstr "Serrar" #: ../js/ui/screenShield.js:641 msgid "GNOME needs to lock the screen" msgstr "GNOME ha besonio de serrar le schermo" #. We could not become modal, so we can't activate the #. screenshield. The user is probably very upset at this #. point, but any application using global grabs is broken #. Just tell him to stop using this app #. #. XXX: another option is to kick the user into the gdm login #. screen, where we're not affected by grabs #: ../js/ui/screenShield.js:762 ../js/ui/screenShield.js:1198 msgid "Unable to lock" msgstr "Impossibile de serrar" #: ../js/ui/screenShield.js:763 ../js/ui/screenShield.js:1199 msgid "Lock was blocked by an application" msgstr "Le serramento ha essite impedite per un application" #: ../js/ui/searchDisplay.js:453 msgid "Searching…" msgstr "Cerca…" #: ../js/ui/searchDisplay.js:497 msgid "No results." msgstr "Necun resultato." #: ../js/ui/shellEntry.js:29 msgid "Copy" msgstr "Copiar" #: ../js/ui/shellEntry.js:34 msgid "Paste" msgstr "Collar" #: ../js/ui/shellEntry.js:101 msgid "Show Text" msgstr "Monstrar texto" #: ../js/ui/shellEntry.js:103 msgid "Hide Text" msgstr "Occultar texto" #: ../js/ui/shellMountOperation.js:370 msgid "Password" msgstr "Contrasigno" #: ../js/ui/shellMountOperation.js:391 msgid "Remember Password" msgstr "Recordar contrasigno" #: ../js/ui/shellMountOperation.js:403 ../js/ui/unlockDialog.js:114 msgid "Unlock" msgstr "Disserrar" #: ../js/ui/status/accessibility.js:36 msgid "Accessibility" msgstr "Accessibilitate" #: ../js/ui/status/accessibility.js:41 msgid "Zoom" msgstr "Aggrandimento" #: ../js/ui/status/accessibility.js:48 msgid "Screen Reader" msgstr "Lector de schermo" #: ../js/ui/status/accessibility.js:52 msgid "Screen Keyboard" msgstr "Claviero visual" #: ../js/ui/status/accessibility.js:56 msgid "Visual Alerts" msgstr "Allerta visual" #: ../js/ui/status/accessibility.js:59 msgid "Sticky Keys" msgstr "Claves remanente" #: ../js/ui/status/accessibility.js:62 msgid "Slow Keys" msgstr "Claves lente" #: ../js/ui/status/accessibility.js:65 msgid "Bounce Keys" msgstr "Claves saltante" #: ../js/ui/status/accessibility.js:68 msgid "Mouse Keys" msgstr "Claves del mus imitate" #: ../js/ui/status/accessibility.js:72 msgid "Universal Access Settings" msgstr "Parametros del accesso universal" #: ../js/ui/status/accessibility.js:129 msgid "High Contrast" msgstr "Contrasto elevate" #: ../js/ui/status/accessibility.js:178 msgid "Large Text" msgstr "Texto grande" #: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:32 #: ../js/ui/status/bluetooth.js:289 ../js/ui/status/bluetooth.js:321 #: ../js/ui/status/bluetooth.js:357 ../js/ui/status/bluetooth.js:388 #: ../js/ui/status/network.js:826 msgid "Bluetooth" msgstr "Bluetooth" #: ../js/ui/status/bluetooth.js:45 msgid "Visibility" msgstr "Visibile" #: ../js/ui/status/bluetooth.js:59 msgid "Send Files to Device…" msgstr "Inviar files al dispositivo…" #: ../js/ui/status/bluetooth.js:60 msgid "Set Up a New Device…" msgstr "Configurar un nove dispositivo…" #: ../js/ui/status/bluetooth.js:84 msgid "Bluetooth Settings" msgstr "Parametros Bluetooth" #. TRANSLATORS: this means that bluetooth was disabled by hardware rfkill #: ../js/ui/status/bluetooth.js:104 ../js/ui/status/network.js:178 msgid "hardware disabled" msgstr "disactivate physicamente" #: ../js/ui/status/bluetooth.js:197 msgid "Connection" msgstr "Connexion" #: ../js/ui/status/bluetooth.js:208 ../js/ui/status/network.js:460 msgid "disconnecting..." msgstr "disconnexion…" #: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:466 #: ../js/ui/status/network.js:1546 msgid "connecting..." msgstr "connexion…" #: ../js/ui/status/bluetooth.js:239 msgid "Send Files…" msgstr "Inviar files…" #: ../js/ui/status/bluetooth.js:246 msgid "Keyboard Settings" msgstr "Parametros de claviero" #: ../js/ui/status/bluetooth.js:249 msgid "Mouse Settings" msgstr "Parametros de mus" #: ../js/ui/status/bluetooth.js:254 ../js/ui/status/volume.js:316 msgid "Sound Settings" msgstr "Parametros de sono" #: ../js/ui/status/bluetooth.js:322 #, c-format msgid "Authorization request from %s" msgstr "Requesta de authorisation de %s" #: ../js/ui/status/bluetooth.js:328 #, c-format msgid "Device %s wants access to the service '%s'" msgstr "Le dispositivo %s vole acceder al servicio '%s'" #: ../js/ui/status/bluetooth.js:330 msgid "Always grant access" msgstr "Conceder accesso sempre" #: ../js/ui/status/bluetooth.js:331 msgid "Grant this time only" msgstr "Conceder accesso solmente in iste vice" #: ../js/ui/status/bluetooth.js:332 msgid "Reject" msgstr "Rejectar" #. Translators: argument is the device short name #: ../js/ui/status/bluetooth.js:359 #, c-format msgid "Pairing confirmation for %s" msgstr "Confirmation del association con %s" #: ../js/ui/status/bluetooth.js:365 ../js/ui/status/bluetooth.js:396 #, c-format msgid "Device %s wants to pair with this computer" msgstr "Le dispositivo %s vole associar se con iste computator" #: ../js/ui/status/bluetooth.js:366 #, c-format msgid "Please confirm whether the PIN '%06d' matches the one on the device." msgstr "Confirma que le PIN '%06d' corresponde a illo sur le dispositivo." #. Translators: this is the verb, not the noun #: ../js/ui/status/bluetooth.js:369 msgid "Matches" msgstr "Corresponde" #: ../js/ui/status/bluetooth.js:370 msgid "Does not match" msgstr "Non corresponde" #: ../js/ui/status/bluetooth.js:389 #, c-format msgid "Pairing request for %s" msgstr "Requesta del association con %s" #: ../js/ui/status/bluetooth.js:397 msgid "Please enter the PIN mentioned on the device." msgstr "Introduce le PIN mentionate sur le dispositivo." #: ../js/ui/status/bluetooth.js:414 msgid "OK" msgstr "Validar" #: ../js/ui/status/keyboard.js:368 msgid "Show Keyboard Layout" msgstr "Monstrar le disposition de claviero" #: ../js/ui/status/keyboard.js:373 msgid "Region & Language Settings" msgstr "Parametros de region e de lingua" #: ../js/ui/status/lockScreenMenu.js:43 msgid "Volume, network, battery" msgstr "Volumine, rete, accumulator" #: ../js/ui/status/network.js:104 msgid "" msgstr "" #. Translators: this indicates that wireless or wwan is disabled by hardware killswitch #: ../js/ui/status/network.js:200 msgid "disabled" msgstr "disactivate" #. Translators: this is for network devices that are physically present but are not #. under NetworkManager's control (and thus cannot be used in the menu) #: ../js/ui/status/network.js:458 msgid "unmanaged" msgstr "foras de gestion" #. Translators: this is for network connections that require some kind of key or password #: ../js/ui/status/network.js:469 ../js/ui/status/network.js:1549 msgid "authentication required" msgstr "necessita authentication" #. Translators: this is for devices that require some kind of firmware or kernel #. module, which is missing #: ../js/ui/status/network.js:479 msgid "firmware missing" msgstr "firmware mancante" #. Translators: this is for wired network devices that are physically disconnected #: ../js/ui/status/network.js:486 msgid "cable unplugged" msgstr "cablo disconnectite" #. Translators: this is for a network device that cannot be activated (for example it #. is disabled by rfkill, or it has no coverage #: ../js/ui/status/network.js:491 msgid "unavailable" msgstr "non disponibile" #: ../js/ui/status/network.js:493 ../js/ui/status/network.js:1551 msgid "connection failed" msgstr "falta de connexion" #: ../js/ui/status/network.js:552 ../js/ui/status/network.js:1435 #: ../js/ui/status/network.js:1627 msgid "More…" msgstr "Plus…" #. TRANSLATORS: this is the indication that a connection for another logged in user is active, #. and we cannot access its settings (including the name) #: ../js/ui/status/network.js:588 ../js/ui/status/network.js:1365 msgid "Connected (private)" msgstr "Connectite (private)" #: ../js/ui/status/network.js:667 msgid "Wired" msgstr "Via filo" #: ../js/ui/status/network.js:668 msgid "Auto Ethernet" msgstr "Ethernet automatic" #: ../js/ui/status/network.js:695 msgid "Mobile broadband" msgstr "Banda large mobile" #: ../js/ui/status/network.js:728 msgid "Auto broadband" msgstr "Banda large automatic" #: ../js/ui/status/network.js:731 msgid "Auto dial-up" msgstr "Telephonic automatic" #. TRANSLATORS: this the automatic wireless connection name (including the network name) #: ../js/ui/status/network.js:861 ../js/ui/status/network.js:1382 #, c-format msgid "Auto %s" msgstr "%s automatic" #: ../js/ui/status/network.js:863 msgid "Auto bluetooth" msgstr "Bluetooth automatic" #: ../js/ui/status/network.js:1384 msgid "Auto wireless" msgstr "Sin filo automatic" #: ../js/ui/status/network.js:1729 msgid "Enable networking" msgstr "Activar le rete" #: ../js/ui/status/network.js:1771 msgid "Wi-Fi" msgstr "Wi-Fi" #: ../js/ui/status/network.js:1790 msgid "Network Settings" msgstr "Parametros de rete" #: ../js/ui/status/network.js:1807 msgid "Network Manager" msgstr "Gerente de rete" #: ../js/ui/status/network.js:1897 msgid "Connection failed" msgstr "Falta de connexion" #: ../js/ui/status/network.js:1898 msgid "Activation of network connection failed" msgstr "Falta de activation del connexion de rete" #: ../js/ui/status/network.js:2276 msgid "Networking is disabled" msgstr "Le rete es disactivate" #: ../js/ui/status/power.js:55 msgid "Battery" msgstr "Accumulator" #: ../js/ui/status/power.js:81 msgid "Power Settings" msgstr "Preferentias del gestion de energia" #. 0 is reported when UPower does not have enough data #. to estimate battery life #: ../js/ui/status/power.js:99 msgid "Estimating…" msgstr "Estimation…" #: ../js/ui/status/power.js:106 #, c-format msgid "%d hour remaining" msgid_plural "%d hours remaining" msgstr[0] "%d hora restante" msgstr[1] "%d horas restante" #. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining" #: ../js/ui/status/power.js:109 #, c-format msgid "%d %s %d %s remaining" msgstr "%d %s %d %s restante" #: ../js/ui/status/power.js:111 msgid "hour" msgid_plural "hours" msgstr[0] "hora" msgstr[1] "horas" #: ../js/ui/status/power.js:111 msgid "minute" msgid_plural "minutes" msgstr[0] "minuta" msgstr[1] "minutas" #: ../js/ui/status/power.js:114 #, c-format msgid "%d minute remaining" msgid_plural "%d minutes remaining" msgstr[0] "%d minuta restante" msgstr[1] "%d minutas restante" #: ../js/ui/status/power.js:117 ../js/ui/status/power.js:191 #, c-format msgctxt "percent of battery remaining" msgid "%d%%" msgstr "%d%%" #: ../js/ui/status/power.js:201 msgid "AC Adapter" msgstr "Adaptor de currente" #: ../js/ui/status/power.js:203 msgid "Laptop Battery" msgstr "Accumulator del computator" #: ../js/ui/status/power.js:205 msgid "UPS" msgstr "UPS" #: ../js/ui/status/power.js:207 msgid "Monitor" msgstr "Monitor" #: ../js/ui/status/power.js:209 msgid "Mouse" msgstr "Mouse" #: ../js/ui/status/power.js:213 msgid "PDA" msgstr "PDA" #: ../js/ui/status/power.js:215 msgid "Cell Phone" msgstr "Telephono cellular" #: ../js/ui/status/power.js:217 msgid "Media Player" msgstr "Lector de multimedia" #: ../js/ui/status/power.js:219 msgid "Tablet" msgstr "Tabletta" #: ../js/ui/status/power.js:221 msgid "Computer" msgstr "Computator" #: ../js/ui/status/power.js:223 msgctxt "device" msgid "Unknown" msgstr "Incognite" #: ../js/ui/status/volume.js:124 msgid "Volume changed" msgstr "Volumine modificate" #. Translators: This is the label for audio volume #: ../js/ui/status/volume.js:249 ../js/ui/status/volume.js:297 msgid "Volume" msgstr "Volumine" #: ../js/ui/status/volume.js:258 msgid "Microphone" msgstr "Microphono" #: ../js/ui/unlockDialog.js:125 msgid "Log in as another user" msgstr "Initiar session como altere usator" #: ../js/ui/unlockDialog.js:146 msgid "Unlock Window" msgstr "Fenestra de disserramento" #: ../js/ui/userMenu.js:193 msgid "Available" msgstr "Disponibile" #: ../js/ui/userMenu.js:196 msgid "Busy" msgstr "Occupate" #: ../js/ui/userMenu.js:199 msgid "Invisible" msgstr "Invisibile" #: ../js/ui/userMenu.js:202 msgid "Away" msgstr "Absente" #: ../js/ui/userMenu.js:205 msgid "Idle" msgstr "Inactive" #: ../js/ui/userMenu.js:208 msgid "Offline" msgstr "Disconnexe" #: ../js/ui/userMenu.js:781 msgid "Notifications" msgstr "Notificationes" #: ../js/ui/userMenu.js:797 msgid "Switch User" msgstr "Cambiar de usator" #: ../js/ui/userMenu.js:802 msgid "Log Out" msgstr "Clauder le session" #: ../js/ui/userMenu.js:822 msgid "Install Updates & Restart" msgstr "Installar actualisationes e reinitiar" #: ../js/ui/userMenu.js:840 msgid "Your chat status will be set to busy" msgstr "Le stato de chat sera definite como 'occupate'" #: ../js/ui/userMenu.js:841 msgid "" "Notifications are now disabled, including chat messages. Your online status " "has been adjusted to let others know that you might not see their messages." msgstr "" "Le notificationes es ora disactivate, includente le messages de chat. Le " "stato in linea se ha adjustate pro facer saper al alteres que lor messages " "pote non esser notate." #: ../js/ui/userMenu.js:888 msgid "Other users are logged in." msgstr "Altere usatores son connexe." #: ../js/ui/userMenu.js:893 msgid "Shutting down might cause them to lose unsaved work." msgstr "Le extinction poterea causar le perdita de obras non salveguardate." #. Translators: Remote here refers to a remote session, like a ssh login #: ../js/ui/userMenu.js:921 #, c-format msgid "%s (remote)" msgstr "%s (remote)" #. Translators: Console here refers to a tty like a VT console #: ../js/ui/userMenu.js:924 #, c-format msgid "%s (console)" msgstr "%s (consola)" #: ../js/ui/viewSelector.js:100 msgid "Applications" msgstr "Applicationes" #: ../js/ui/viewSelector.js:104 msgid "Search" msgstr "Cerca" #: ../js/ui/wanda.js:77 #, c-format msgid "" "Sorry, no wisdom for you today:\n" "%s" msgstr "" "Il ha necun sagessa hodie:\n" "%s" #: ../js/ui/wanda.js:81 #, c-format msgid "%s the Oracle says" msgstr "%s le oraculo dice" #: ../js/ui/windowAttentionHandler.js:19 #, c-format msgid "'%s' is ready" msgstr "'%s' es preste" #: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1 msgid "Evolution Calendar" msgstr "Calendario de Evolution" #. translators: #. * The number of sound outputs on a particular device #: ../src/gvc/gvc-mixer-control.c:1837 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u egresso" msgstr[1] "%u egressos" #. translators: #. * The number of sound inputs on a particular device #: ../src/gvc/gvc-mixer-control.c:1847 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u ingresso" msgstr[1] "%u ingressos" #: ../src/gvc/gvc-mixer-control.c:2371 msgid "System Sounds" msgstr "Sonos de systema" #: ../src/main.c:347 msgid "Print version" msgstr "Monstrar le version" #: ../src/main.c:353 msgid "Mode used by GDM for login screen" msgstr "Modo usate per GDM pro le schermo de accesso" #: ../src/main.c:359 msgid "Use a specific mode, e.g. \"gdm\" for login screen" msgstr "Usar un modo specific, per ex. \"gdm\" pro le schermo de accesso" #: ../src/main.c:365 msgid "List possible modes" msgstr "Monstrar le lista del modos possibile" #: ../src/shell-app.c:626 #, c-format msgid "Failed to launch '%s'" msgstr "Impossibile de lancear '%s'" #: ../src/shell-keyring-prompt.c:708 msgid "Passwords do not match." msgstr "Le contrasignos non corresponde." #: ../src/shell-keyring-prompt.c:716 msgid "Password cannot be blank" msgstr "Le contrasigno non pote esser vacue" #: ../src/shell-polkit-authentication-agent.c:343 msgid "Authentication dialog was dismissed by the user" msgstr "Le dialogo de authentication era dimittite per le usator" 0707010000023C000081A40000000000000000000000016712993F000182A6000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/id.po# Copyright (C) 2010 THE gnome-shell'S COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-shell package. # # Andika Triwidada , 2010-2014, 2017, 2022-2024. # Dirgita , 2011, 2012, 2014. # Wibiharto , 2011. # Kukuh Syafaat , 2017-2024. # Sucipto , 2020. # msgid "" msgstr "" "Project-Id-Version: gnome-shell main\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues/\n" "POT-Creation-Date: 2024-08-21 13:15+0000\n" "PO-Revision-Date: 2024-09-01 15:14+0700\n" "Last-Translator: Andika Triwidada \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: Poedit 3.5\n" "X-DamnedLies-Scope: partial\n" "X-Poedit-SourceCharset: UTF-8\n" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "Peluncur" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate pinned app 1" msgstr "Aktifkan aplikasi yang disematkan 1" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate pinned app 2" msgstr "Aktifkan aplikasi yang disematkan 2" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate pinned app 3" msgstr "Aktifkan aplikasi yang disematkan 3" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate pinned app 4" msgstr "Aktifkan aplikasi yang disematkan 4" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate pinned app 5" msgstr "Aktifkan aplikasi yang disematkan 5" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate pinned app 6" msgstr "Aktifkan aplikasi yang disematkan 6" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate pinned app 7" msgstr "Aktifkan aplikasi yang disematkan 7" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate pinned app 8" msgstr "Aktifkan aplikasi yang disematkan 8" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate pinned app 9" msgstr "Aktifkan aplikasi yang disematkan 9" #: data/50-gnome-shell-launchers.xml:46 msgid "Open new window of pinned app 1" msgstr "Buka jendela baru aplikasi yang disematkan 1" #: data/50-gnome-shell-launchers.xml:50 msgid "Open new window of pinned app 2" msgstr "Buka jendela baru aplikasi yang disematkan 2" #: data/50-gnome-shell-launchers.xml:54 msgid "Open new window of pinned app 3" msgstr "Buka jendela baru aplikasi yang disematkan 3" #: data/50-gnome-shell-launchers.xml:58 msgid "Open new window of pinned app 4" msgstr "Buka jendela baru aplikasi yang disematkan 4" #: data/50-gnome-shell-launchers.xml:62 msgid "Open new window of pinned app 5" msgstr "Buka jendela baru aplikasi yang disematkan 5" #: data/50-gnome-shell-launchers.xml:66 msgid "Open new window of pinned app 6" msgstr "Buka jendela baru aplikasi yang disematkan 6" #: data/50-gnome-shell-launchers.xml:70 msgid "Open new window of pinned app 7" msgstr "Buka jendela baru aplikasi yang disematkan 7" #: data/50-gnome-shell-launchers.xml:74 msgid "Open new window of pinned app 8" msgstr "Buka jendela baru aplikasi yang disematkan 8" #: data/50-gnome-shell-launchers.xml:78 msgid "Open new window of pinned app 9" msgstr "Buka jendela baru aplikasi yang disematkan 9" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2274 msgid "Screenshots" msgstr "Cuplikan Layar" #: data/50-gnome-shell-screenshots.xml:9 #: data/org.gnome.shell.gschema.xml.in:287 msgid "Take a screenshot interactively" msgstr "Ambil cuplikan layar secara interaktif" #: data/50-gnome-shell-screenshots.xml:12 #: data/org.gnome.shell.gschema.xml.in:299 msgid "Take a screenshot" msgstr "Ambil cuplikan layar" #: data/50-gnome-shell-screenshots.xml:15 #: data/org.gnome.shell.gschema.xml.in:295 msgid "Take a screenshot of a window" msgstr "Ambil cuplikan layar dari suatu jendela" #: data/50-gnome-shell-screenshots.xml:18 #: data/org.gnome.shell.gschema.xml.in:291 msgid "Record a screencast interactively" msgstr "Rekam screencast secara interaktif" #: data/50-gnome-shell-system.xml:6 js/ui/messageTray.js:1298 msgid "System" msgstr "Sistem" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "Tampilkan daftar pemberitahuan" #: data/50-gnome-shell-system.xml:12 msgid "Open the quick settings menu" msgstr "Buka menu pengaturan cepat" #: data/50-gnome-shell-system.xml:15 msgid "Focus the active notification" msgstr "Fokuskan pemberitahuan yang aktif" #: data/50-gnome-shell-system.xml:18 msgid "Show the overview" msgstr "Tampilkan ikhtisar" #: data/50-gnome-shell-system.xml:21 msgid "Show all apps" msgstr "Tampilkan semua aplikasi" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "GNOME Shell" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "Manajemen jendela dan peluncuran aplikasi" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" "Mengaktifkan perkakas internal yang berguna bagi pengembang dan penguji " "dengan Alt-F2" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Izinkan askes ke perkakas pemantauan dan pengawakutuan internal memakai " "dialog Alt-F2." #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "UUID ekstensi yang akan difungsikan" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "Ekstensi GNOME Shell memiliki properti UUID; kunci ini memuat daftar " "ekstensi yang mesti dimuat. Sebarang ekstensi yang ingin dimuat perlu berada " "dalam daftar ini. Anda juga dapat memanipulasi daftar ini dengan metoda D-" "Bus EnableExtension dan DisableExtension pada org.gnome.Shell." #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "UUID ekstensi untuk memaksa penonaktifan" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" "Ekstensi GNOME Shell memiliki properti UUID; kunci ini memuat daftar " "ekstensi yang harus dinonaktifkan, meskipun dimuat sebagai bagian dari mode " "saat ini. Anda juga dapat memanipulasi daftar ini dengan metode D-Bus " "EnableExtension dan DisableExtension pada org.gnome.Shell." #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "Nonaktifkan ekstensi pengguna" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" "Nonaktifkan semua ekstensi pengguna yang telah diaktifkan tanpa mempengaruhi " "pengaturan \"ekstensi-diaktifkan\"." #: data/org.gnome.shell.gschema.xml.in:45 msgid "Allow extension installation" msgstr "Izinkan pemasangan ekstensi" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "Allow users to install extensions in their home folder. If disabled, the " "InstallRemoteExtension D-Bus method will fail, and extensions are only " "loaded from system directories on startup. It does not affect extensions " "that are already loaded, so a change only takes full effect on the next " "login." msgstr "" "Izinkan pengguna memasang ekstensi di folder utama mereka. Jika " "dinonaktifkan, metode D-Bus InstallRemoteExtension akan gagal, dan ekstensi " "hanya dimuat dari direktori sistem saat awal mula. Ini tidak mempengaruhi " "ekstensi yang sudah dimuat, jadi perubahan hanya berlaku penuh pada log " "masuk berikutnya." #: data/org.gnome.shell.gschema.xml.in:56 msgid "Disables the validation of extension version compatibility" msgstr "Menonaktifkan validasi kompatibilitas versi ekstensi" #: data/org.gnome.shell.gschema.xml.in:57 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "GNOME Shell hanya akan memuat ekstensi yang mengklaim mendukung versi " "berjalan saat ini. Memfungsikan opsi ini akan menonaktifkan pemeriksaan ini " "dan mencoba memuat semua ekstensi tanpa peduli versi yang mereka klaim " "didukung." #: data/org.gnome.shell.gschema.xml.in:65 msgid "List of desktop file IDs for favorite applications" msgstr "Daftar ID berkas desktop untuk aplikasi favorit" #: data/org.gnome.shell.gschema.xml.in:66 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" "Aplikasi yang terkait dengan identifier-identifier ini akan ditampilkan pada " "area favorit." #: data/org.gnome.shell.gschema.xml.in:73 msgid "History for command (Alt-F2) dialog" msgstr "Riwayat dialog perintah (Alt-F2)" #. Translators: looking glass is a debugger and inspector tool, see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/docs/looking-glass.md #: data/org.gnome.shell.gschema.xml.in:78 msgid "History for the looking glass dialog" msgstr "Riwayat untuk dialog yang berpenampilan gelas kaca" #: data/org.gnome.shell.gschema.xml.in:82 msgid "Always show the “Log Out” action in the system menu" msgstr "Selalu tampilkan aksi \"Log Keluar\" dalam menu sistem" #: data/org.gnome.shell.gschema.xml.in:83 msgid "" "This key overrides the automatic hiding of the “Log out” action in the " "system menu for logged-in situations where there is a single, local, non-" "system user and only a single available session type (e.g. GNOME on Wayland)." msgstr "" "Kunci ini menimpa penyembunyian otomatis tindakan \"Log Keluar\" dalam menu " "sistem untuk situasi masuk di mana terdapat satu pengguna lokal, non-sistem " "dan hanya satu jenis sesi yang tersedia (misalnya GNOME di Wayland)." #: data/org.gnome.shell.gschema.xml.in:92 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "Apakah mengingat kata sandi untuk mengait sistem berkas terenkripsi atau " "jarak jauh" #: data/org.gnome.shell.gschema.xml.in:93 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "Shell akan meminta suatu kata sandi ketika suatu perangkat terenkripsi atau " "sistem berkas jarak jauh dikaitkan. Bila sandi dapat disimpan untuk dipakai " "dimasa depan, suatu kotak contreng 'Ingat Sandi' akan tampil. Kunci ini " "menata keadaan baku dari kotak contreng." #: data/org.gnome.shell.gschema.xml.in:102 msgid "The last selected non-default power profile" msgstr "Profil daya non-bawaan terakhir yang dipilih" #: data/org.gnome.shell.gschema.xml.in:103 msgid "" "Some systems support more than two power profiles. In order to still support " "toggling between two profiles, this key records the last selected non-" "default profile." msgstr "" "Beberapa sistem mendukung lebih dari dua profil daya. Agar tetap mendukung " "pengalihan antara dua profil, kunci ini merekam profil non-bawaan yang " "terakhir dipilih." #: data/org.gnome.shell.gschema.xml.in:111 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "Versi terakhir dialog \"Selamat Datang di GNOME\" ditampilkan untuk" #: data/org.gnome.shell.gschema.xml.in:112 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can " "be used to effectively disable the dialog." msgstr "" "Kunci ini menentukan versi mana dialog \"Selamat Datang di GNOME\" terakhir " "kali ditampilkan. String kosong mewakili versi tertua yang mungkin, dan " "sejumlah besar akan mewakili versi yang belum ada. Jumlah besar ini dapat " "digunakan untuk secara efektif menonaktifkan dialog." #: data/org.gnome.shell.gschema.xml.in:145 msgid "Layout of the app picker" msgstr "Tata letak pemilih aplikasi" #: data/org.gnome.shell.gschema.xml.in:146 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" msgstr "" "Tata letak pemilih aplikasi. Setiap entri dalam array adalah halaman. " "Halaman disimpan dalam urutan yang muncul di GNOME Shell. Setiap halaman " "berisi pasangan “application id” → 'data'. Saat ini, nilai berikut disimpan " "sebagai 'data': • \"position\": posisi ikon aplikasi di halaman" #: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:172 msgid "Keybinding to shift between overview states" msgstr "Kombinasi tombol untuk beralih antara status ringkasan" #: data/org.gnome.shell.gschema.xml.in:166 msgid "Keybinding to shift between session, window picker and app grid" msgstr "" "Kombinasi tombol untuk beralih antara sesi, pemilih jendela, dan kisi " "aplikasi" #: data/org.gnome.shell.gschema.xml.in:173 msgid "Keybinding to shift between app grid, window picker and session" msgstr "" "Kombinasi tombol untuk beralih antara kisi aplikasi, pemilih jendela, dan " "sesi" #: data/org.gnome.shell.gschema.xml.in:179 msgid "Keybinding to open the “Show Applications” view" msgstr "Kombinasi tombol untuk membuka tilikan \"Tampilkan Aplikasi\"" #: data/org.gnome.shell.gschema.xml.in:180 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "" "Kombinasi tombol untuk membuka tilikan Ringkasan Aktivitas \"Tampilkan " "Aplikasi\"." #: data/org.gnome.shell.gschema.xml.in:187 msgid "Keybinding to open the overview" msgstr "Kombinasi tombol untuk membuka ringkasan" #: data/org.gnome.shell.gschema.xml.in:188 msgid "Keybinding to open the Activities Overview." msgstr "Kombinasi tombol untuk membuka Ringkasan Aktivitas." #: data/org.gnome.shell.gschema.xml.in:194 msgid "Keybinding to toggle the visibility of the notification list" msgstr "Kombinasi tombol untuk kenampakan daftar pemberitahuan" #: data/org.gnome.shell.gschema.xml.in:195 msgid "Keybinding to toggle the visibility of the notification list." msgstr "Kombinasi tombol untuk kenampakan daftar pemberitahuan." #: data/org.gnome.shell.gschema.xml.in:201 msgid "Keybinding to toggle the quick settings menu" msgstr "Kombinasi tombol untuk mengaktifkan menu pengaturan cepat" #: data/org.gnome.shell.gschema.xml.in:202 msgid "Keybinding to toggle the quick settings menu." msgstr "Kombinasi tombol untuk mengaktifkan menu pengaturan cepat." #: data/org.gnome.shell.gschema.xml.in:208 msgid "Keybinding to focus the active notification" msgstr "Kombinasi tombol untuk fokus pada pemberitahuan yang aktif" #: data/org.gnome.shell.gschema.xml.in:209 msgid "Keybinding to focus the active notification." msgstr "Kombinasi tombol untuk fokus pada pemberitahuan yang aktif." #: data/org.gnome.shell.gschema.xml.in:215 msgid "Switch to application 1" msgstr "Beralih ke aplikasi 1" #: data/org.gnome.shell.gschema.xml.in:219 msgid "Switch to application 2" msgstr "Beralih ke aplikasi 2" #: data/org.gnome.shell.gschema.xml.in:223 msgid "Switch to application 3" msgstr "Beralih ke aplikasi 3" #: data/org.gnome.shell.gschema.xml.in:227 msgid "Switch to application 4" msgstr "Beralih ke aplikasi 4" #: data/org.gnome.shell.gschema.xml.in:231 msgid "Switch to application 5" msgstr "Beralih ke aplikasi 5" #: data/org.gnome.shell.gschema.xml.in:235 msgid "Switch to application 6" msgstr "Beralih ke aplikasi 6" #: data/org.gnome.shell.gschema.xml.in:239 msgid "Switch to application 7" msgstr "Beralih ke aplikasi 7" #: data/org.gnome.shell.gschema.xml.in:243 msgid "Switch to application 8" msgstr "Beralih ke aplikasi 8" #: data/org.gnome.shell.gschema.xml.in:247 msgid "Switch to application 9" msgstr "Beralih ke aplikasi 9" #: data/org.gnome.shell.gschema.xml.in:251 msgid "Open a new instance of application 1" msgstr "Buka instansi baru aplikasi 1" #: data/org.gnome.shell.gschema.xml.in:255 msgid "Open a new instance of application 2" msgstr "Buka instansi baru aplikasi 2" #: data/org.gnome.shell.gschema.xml.in:259 msgid "Open a new instance of application 3" msgstr "Buka instansi baru aplikasi 3" #: data/org.gnome.shell.gschema.xml.in:263 msgid "Open a new instance of application 4" msgstr "Buka instansi baru aplikasi 4" #: data/org.gnome.shell.gschema.xml.in:267 msgid "Open a new instance of application 5" msgstr "Buka instansi baru aplikasi 5" #: data/org.gnome.shell.gschema.xml.in:271 msgid "Open a new instance of application 6" msgstr "Buka instansi baru aplikasi 6" #: data/org.gnome.shell.gschema.xml.in:275 msgid "Open a new instance of application 7" msgstr "Buka instansi baru aplikasi 7" #: data/org.gnome.shell.gschema.xml.in:279 msgid "Open a new instance of application 8" msgstr "Buka instansi baru aplikasi 8" #: data/org.gnome.shell.gschema.xml.in:283 msgid "Open a new instance of application 9" msgstr "Buka instansi baru aplikasi 9" #: data/org.gnome.shell.gschema.xml.in:308 #: data/org.gnome.shell.gschema.xml.in:335 msgid "Limit switcher to current workspace." msgstr "Batasi pengalih ke ruang kerja saat ini." #: data/org.gnome.shell.gschema.xml.in:309 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "Bila berisi true, hanya aplikasi yang punya jendela pada ruang kerja saat " "ini ditampilkan pada penukar. Bila tidak, semua aplikasi disertakan." #: data/org.gnome.shell.gschema.xml.in:326 msgid "The application icon mode." msgstr "Mode ikon aplikasi." #: data/org.gnome.shell.gschema.xml.in:327 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-only” " "(shows only the application icon) or “both”." msgstr "" "Mengatur bagaimana jendela ditampilkan dalam penukar. Kemungkinan yang valid " "adalah \"thumbnail-only\" (menampilkan gambar mini dari jendela), \"app-icon-" "only\" (hanya menampilkan ikon aplikasi), atau \"both\" (keduanya)." #: data/org.gnome.shell.gschema.xml.in:336 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "Bila berisi true, hanya jendela dari ruang kerja saat ini ditampilkan pada " "penukar. Bila tidak, semua jendela disertakan." #: data/org.gnome.shell.gschema.xml.in:346 msgid "Locations" msgstr "Lokasi" #: data/org.gnome.shell.gschema.xml.in:347 msgid "The locations to show in world clocks" msgstr "Lokasi untuk ditampilkan di jam dunia" #: data/org.gnome.shell.gschema.xml.in:357 msgid "Automatic location" msgstr "Lokasi otomatis" #: data/org.gnome.shell.gschema.xml.in:358 msgid "Whether to fetch the current location or not" msgstr "Apakah akan mengambil lokasi saat ini atau tidak" #: data/org.gnome.shell.gschema.xml.in:365 msgid "Location" msgstr "Lokasi" #: data/org.gnome.shell.gschema.xml.in:366 msgid "The location for which to show a forecast" msgstr "Lokasi yang menunjukkan perkiraan" #. Keep in sync with subprojects/extensions-app #: data/org.gnome.Shell.Extensions.desktop.in.in:5 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/data/ui/extensions-window.ui:57 msgid "Extensions" msgstr "Ekstensi" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "Log Masuk Jaringan" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:275 msgid "Something’s gone wrong" msgstr "Ada yang tidak beres" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" "Kami sangat menyesal, tetapi ada masalah: pengaturan untuk ekstensi ini " "tidak dapat ditampilkan. Kami menyarankan Anda melaporkan masalah ini kepada " "penulis ekstensi." #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "Detail Teknis" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "Halaman Web" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 msgid "Visit extension homepage" msgstr "Kunjungi halaman web ekstensi" #: js/gdm/authPrompt.js:151 js/gdm/loginDialog.js:466 #: js/ui/audioDeviceSelection.js:66 js/ui/components/networkAgent.js:113 #: js/ui/components/polkitAgent.js:144 js/ui/endSessionDialog.js:437 #: js/ui/extensionDownloader.js:276 js/ui/shellMountOperation.js:382 #: js/ui/shellMountOperation.js:392 msgid "Cancel" msgstr "Batal" #: js/gdm/authPrompt.js:317 js/ui/components/networkAgent.js:213 #: js/ui/components/networkAgent.js:233 js/ui/components/networkAgent.js:265 #: js/ui/components/networkAgent.js:298 js/ui/components/networkAgent.js:337 #: js/ui/components/networkAgent.js:350 js/ui/components/polkitAgent.js:286 #: js/ui/shellMountOperation.js:332 msgid "Password" msgstr "Kata Sandi" #: js/gdm/loginDialog.js:326 msgid "Choose Session" msgstr "Pilih Sesi" #. Translators: is running for #: js/gdm/loginDialog.js:424 #, javascript-format msgid "" "Remote login is not possible because a remote session is already running for " "%s. To login remotely, you must log out from the remote session or force " "stop it." msgstr "" "Log masuk jarak jauh tidak dimungkinkan karena sesi jarak jauh sudah " "berjalan bagi %s. Untuk masuk dari jarak jauh, Anda harus keluar dari sesi " "jarak jauh atau memaksa menghentikannya." #. Translators: is running for #: js/gdm/loginDialog.js:427 #, javascript-format msgid "" "Login is not possible because a remote session is already running for %s. To " "login, you must log out from the remote session or force stop it." msgstr "" "Log masuk tidak dimungkinkan karena sesi jarak jauh sudah berjalan bagi %s. " "Untuk masuk, Anda harus keluar dari sesi jarak jauh atau memaksa " "menghentikannya." #. Translators: is running for #: js/gdm/loginDialog.js:430 #, javascript-format msgid "" "Remote login is not possible because a local session is already running for " "%s. To login remotely, you must log out from the local session or force stop " "it." msgstr "" "Log masuk jarak jauh tidak dimungkinkan karena sesi lokal sudah berjalan " "bagi %s. Untuk masuk dari jarak jauh, Anda harus keluar dari sesi lokal atau " "memaksa menghentikannya." #. Translators: is running for #: js/gdm/loginDialog.js:433 #, javascript-format msgid "" "Login is not possible because a session is already running for %s. To login, " "you must log out from the session or force stop it." msgstr "" "Log masuk tidak dimungkinkan karena sesi sudah berjalan bagi %s. Untuk " "masuk, Anda harus keluar dari sesi atau memaksa menghentikannya." #: js/gdm/loginDialog.js:442 msgid "Session Already Running" msgstr "Sesi Sudah Berjalan" #: js/gdm/loginDialog.js:454 msgid "" "Force stopping will quit any running apps and processes, and could result in " "data loss" msgstr "" "Penghentian paksa akan menghentikan aplikasi dan proses yang sedang " "berjalan, dan dapat mengakibatkan hilangnya data" #: js/gdm/loginDialog.js:474 msgid "Force Stop" msgstr "Paksa Berhenti" #: js/gdm/loginDialog.js:542 msgid "Not listed?" msgstr "Tak masuk daftar?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:1010 #, javascript-format msgid "(e.g., user or %s)" msgstr "(cth., pengguna dari %s)" #: js/gdm/loginDialog.js:1015 js/ui/components/networkAgent.js:257 #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:326 msgid "Username" msgstr "Nama pengguna" #: js/gdm/loginDialog.js:1081 msgid "Login Attempt Timed Out" msgstr "Upaya Log Masuk Habis Waktu" #: js/gdm/loginDialog.js:1082 msgid "Login took too long, please try again" msgstr "Log masuk terlalu lama, silakan coba lagi" #: js/gdm/loginDialog.js:1431 msgid "Login Window" msgstr "Jendela Log Masuk" #: js/gdm/util.js:496 msgid "Authentication error" msgstr "Galat autentikasi" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:727 msgid "(or swipe finger across reader)" msgstr "(atau usap jari melintasi pembaca)" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:732 msgid "(or place finger on reader)" msgstr "(atau letakkan jari pada pembaca)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:91 msgctxt "search-result" msgid "Power Off" msgstr "Matikan" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:94 msgid "power off;poweroff;shutdown;halt;stop" msgstr "matikan;halt;berhenti;matikan;hentikan;berhenti" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:99 msgctxt "search-result" msgid "Restart" msgstr "Mulai Ulang" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:102 msgid "reboot;restart;" msgstr "mulai ulang;" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:107 msgctxt "search-result" msgid "Lock Screen" msgstr "Kunci Layar" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:110 msgid "lock screen" msgstr "kunci layar" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:115 msgctxt "search-result" msgid "Log Out" msgstr "Keluar" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:118 msgid "logout;log out;sign off" msgstr "keluar;logout;log out;sign off" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:123 msgctxt "search-result" msgid "Suspend" msgstr "Suspensi" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:126 msgid "suspend;sleep" msgstr "suspensi;tidur" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:131 msgctxt "search-result" msgid "Switch User" msgstr "Ganti Pengguna" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:134 msgid "switch user" msgstr "ganti pengguna" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:141 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "kunci orientasi;buka kunci orientasi;layar;rotasi" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:146 msgctxt "search-result" msgid "Take a Screenshot" msgstr "Ambil Cuplikan Layar" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:149 msgid "screenshot;screencast;snip;capture;record" msgstr "cuplikan layar;screencast;snip;tangkap;rekam" #: js/misc/systemActions.js:249 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "Buka Kunci Rotasi Layar" #: js/misc/systemActions.js:250 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "Kunci Rotasi Layar" #: js/misc/util.js:130 msgid "Command not found" msgstr "Perintah tidak ditemukan" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:170 msgid "Could not parse command:" msgstr "Tak dapat mengurai perintah:" #: js/misc/util.js:178 #, javascript-format msgid "Execution of “%s” failed:" msgstr "Eksekusi \"%s\" gagal:" #: js/misc/dateUtils.js:69 msgid "Just now" msgstr "Baru saja" #: js/misc/dateUtils.js:72 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d menit yang lalu" #: js/misc/dateUtils.js:79 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d jam yang lalu" #: js/misc/dateUtils.js:85 js/ui/dateMenu.js:183 msgid "Yesterday" msgstr "Kemarin" #: js/misc/dateUtils.js:88 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d hari yang lalu" #: js/misc/dateUtils.js:95 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d minggu yang lalu" #: js/misc/dateUtils.js:102 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%d bulan yang lalu" #: js/misc/dateUtils.js:108 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "%d tahun yang lalu" #. Translators: Time in 24h format #: js/misc/dateUtils.js:155 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/dateUtils.js:161 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "Kemarin, %H:%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/dateUtils.js:167 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/dateUtils.js:173 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%d %B, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/dateUtils.js:179 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%d %B %Y, %H∶%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/dateUtils.js:184 msgid "%l∶%M %p" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/dateUtils.js:190 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "Kemarin, %l∶%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/dateUtils.js:196 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/dateUtils.js:202 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%d %B, %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/dateUtils.js:208 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%d %B %Y, %l∶%M %p" #: js/portalHelper/main.js:98 msgid "Your connection seems to be secure" msgstr "Sambungan Anda tampaknya aman" #: js/portalHelper/main.js:104 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "Koneksi Anda ke log masuk area bersinyal (hotspot) ini tidak aman. Kata kata " "sandi atau informasi lain yang Anda masukkan pada halaman ini dapat dilihat " "oleh orang-orang di sekitar." #: js/portalHelper/main.js:115 msgid "Hotspot Login" msgstr "Log Masuk Area Bersinyal (hotspot)" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:51 js/ui/inhibitShortcutsDialog.js:92 msgid "Deny" msgstr "Tolak" #: js/ui/accessDialog.js:52 js/ui/inhibitShortcutsDialog.js:101 msgid "Allow" msgstr "Izinkan" #: js/ui/appDisplay.js:1769 msgid "Unnamed Folder" msgstr "Folder Tanpa Nama" #: js/ui/appFavorites.js:163 #, javascript-format msgid "%s has been pinned to the dash." msgstr "%s telah disematkan ke dash." #: js/ui/appFavorites.js:194 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "%s telah lepas sematkan dari dash." #: js/ui/appFavorites.js:208 js/ui/main.js:281 msgid "Undo" msgstr "Batal" #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:49 msgid "Open Windows" msgstr "Buka Jendela" #: js/ui/appMenu.js:57 msgid "New Window" msgstr "Jendela Baru" #: js/ui/appMenu.js:84 msgid "App Details" msgstr "Detail Aplikasi" #: js/ui/appMenu.js:100 msgid "Quit" msgstr "Keluar" #: js/ui/appMenu.js:160 js/ui/dash.js:248 msgid "Unpin" msgstr "Lepas sematkan" #: js/ui/appMenu.js:161 msgid "Pin to Dash" msgstr "Sematkan ke Dash" #: js/ui/appMenu.js:178 msgid "Launch using Integrated Graphics Card" msgstr "Luncurkan menggunakan Kartu Grafis Terintegrasi" #: js/ui/appMenu.js:179 msgid "Launch using Discrete Graphics Card" msgstr "Luncurkan menggunakan Kartu Grafis Diskrit" #: js/ui/audioDeviceSelection.js:46 msgid "Select Audio Device" msgstr "Pilih Perangkat Audio" #: js/ui/audioDeviceSelection.js:61 js/ui/status/volume.js:81 msgid "Sound Settings" msgstr "Pengaturan Suara" #: js/ui/audioDeviceSelection.js:74 msgid "Headphones" msgstr "Headphone" #: js/ui/audioDeviceSelection.js:76 msgid "Headset" msgstr "Headset" #: js/ui/audioDeviceSelection.js:78 js/ui/status/volume.js:356 msgid "Microphone" msgstr "Mikrofon" #: js/ui/backgroundMenu.js:13 msgid "Change Background…" msgstr "Ubah Latar…" #: js/ui/backgroundMenu.js:15 msgid "Display Settings" msgstr "Pengaturan Tampilan" #: js/ui/backgroundMenu.js:16 msgid "Settings" msgstr "Pengaturan" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:37 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:63 msgctxt "grid sunday" msgid "S" msgstr "M" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:65 msgctxt "grid monday" msgid "M" msgstr "S" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:67 msgctxt "grid tuesday" msgid "T" msgstr "S" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:69 msgctxt "grid wednesday" msgid "W" msgstr "R" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:71 msgctxt "grid thursday" msgid "T" msgstr "K" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:73 msgctxt "grid friday" msgid "F" msgstr "J" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:75 msgctxt "grid saturday" msgid "S" msgstr "S" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:426 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:436 msgid "%OB %Y" msgstr "%OB %Y" #: js/ui/calendar.js:498 msgid "Previous month" msgstr "Bulan sebelumnya" #: js/ui/calendar.js:516 msgid "Next month" msgstr "Bulan selanjutnya" #: js/ui/calendar.js:667 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:726 msgid "Week %V" msgstr "Minggu %V" #: js/ui/calendar.js:918 msgid "No Notifications" msgstr "Tak Ada Pemberitahuan" #: js/ui/calendar.js:974 msgid "Do Not Disturb" msgstr "Jangan Ganggu" #: js/ui/calendar.js:995 msgid "Clear" msgstr "Bersihkan" #: js/ui/calendar.js:999 msgctxt "action" msgid "Clear all notifications" msgstr "Bersihkan semua notifikasi" #. Translators: %s is an application name #: js/ui/closeDialog.js:42 #, javascript-format msgid "“%s” Is Not Responding" msgstr "\"%s\" Tidak Merespon" #: js/ui/closeDialog.js:43 msgid "" "You may choose to wait a short while for it to continue or force the app to " "quit entirely" msgstr "" "Anda dapat memilih untuk menunggu sebentar untuk melanjutkan atau memaksa " "aplikasi keluar" #: js/ui/closeDialog.js:71 msgid "Force Quit" msgstr "Tutup Paksa" #: js/ui/closeDialog.js:76 msgid "Wait" msgstr "Tunggu" #: js/ui/components/automountManager.js:82 msgid "External drive connected" msgstr "Drive eksternal tersambung" #: js/ui/components/automountManager.js:94 msgid "External drive disconnected" msgstr "Drive eksternal terputus" #: js/ui/components/automountManager.js:208 msgid "Unable to unlock volume" msgstr "Tak bisa membuka kunci volume" #: js/ui/components/automountManager.js:209 msgid "The installed udisks version does not support the PIM setting" msgstr "Versi udisks yang dipasang tidak mendukung pengaturan PIM" #. Translators: %s is the name of a partition on a external drive #: js/ui/components/autorunManager.js:189 #, javascript-format msgid "“%s” connected" msgstr "\"%s\" tersambung" #: js/ui/components/autorunManager.js:190 msgid "Disk can now be used" msgstr "Diska sekarang dapat dipakai" #: js/ui/components/autorunManager.js:202 #, javascript-format msgid "Open with %s" msgstr "Buka dengan %s" #: js/ui/components/networkAgent.js:95 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router" msgstr "" "Atau Anda dapat menyambung dengan menekan tombol \"WPS\" pada router Anda" #: js/ui/components/networkAgent.js:107 js/ui/status/bluetooth.js:245 #: js/ui/status/network.js:360 js/ui/status/network.js:444 msgid "Connect" msgstr "Sambung" #: js/ui/components/networkAgent.js:222 msgid "Key" msgstr "Kunci" #: js/ui/components/networkAgent.js:273 js/ui/components/networkAgent.js:312 msgid "Private key password" msgstr "Kata sandi kunci privat" #: js/ui/components/networkAgent.js:306 msgid "Identity" msgstr "Identitas" #: js/ui/components/networkAgent.js:332 msgid "Service" msgstr "Layanan" #: js/ui/components/networkAgent.js:370 js/ui/components/networkAgent.js:406 #: js/ui/components/networkAgent.js:743 js/ui/components/networkAgent.js:764 msgid "Authentication required" msgstr "Diperlukan autentikasi" #: js/ui/components/networkAgent.js:371 js/ui/components/networkAgent.js:744 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network “%s”" msgstr "" "Kata sandi atau kunci enkripsi diperlukan untuk mengakses jaringan nirkabel " "\"%s\"" #: js/ui/components/networkAgent.js:375 js/ui/components/networkAgent.js:748 msgid "Wired 802.1X authentication" msgstr "Autentikasi 802.1X kabel" #: js/ui/components/networkAgent.js:378 msgid "Network name" msgstr "Nama jaringan" #: js/ui/components/networkAgent.js:386 js/ui/components/networkAgent.js:752 msgid "DSL authentication" msgstr "Autentikasi DSL" #: js/ui/components/networkAgent.js:393 js/ui/components/networkAgent.js:757 msgid "PIN code required" msgstr "Perlu kode PIN" #: js/ui/components/networkAgent.js:394 js/ui/components/networkAgent.js:758 msgid "PIN code is needed for the mobile broadband device" msgstr "Kode PIN diperlukan untuk perangkat data seluler" #: js/ui/components/networkAgent.js:396 msgid "PIN" msgstr "PIN" #: js/ui/components/networkAgent.js:407 js/ui/components/networkAgent.js:749 #: js/ui/components/networkAgent.js:753 js/ui/components/networkAgent.js:765 #: js/ui/components/networkAgent.js:769 #, javascript-format msgid "A password is required to connect to “%s”" msgstr "Perlu suatu kata sandi untuk menyambung ke \"%s\"" #: js/ui/components/networkAgent.js:768 msgid "VPN password" msgstr "Kata Sandi VPN" #: js/ui/components/polkitAgent.js:44 msgid "Authentication Required" msgstr "Diperlukan Autentikasi" #: js/ui/components/polkitAgent.js:84 msgid "Administrator" msgstr "Administrator" #: js/ui/components/polkitAgent.js:149 msgid "Authenticate" msgstr "Autentikasi" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:263 js/ui/shellMountOperation.js:415 msgid "Sorry, that didn’t work. Please try again." msgstr "Maaf, tidak berhasil. Silakan coba lagi." #: js/ui/ctrlAltTab.js:23 js/ui/overviewControls.js:404 msgid "Windows" msgstr "Jendela" #: js/ui/dash.js:204 js/ui/dash.js:250 msgid "Show Apps" msgstr "Tampilkan Aplikasi" #. Translators: this is the name of the dock/favorites area on #. the bottom of the overview #: js/ui/dash.js:408 msgid "Dash" msgstr "Dash" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:99 msgid "%B %-d %Y" msgstr "%e %B %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:106 msgid "%A %B %e %Y" msgstr "%A %e %B %Y" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:172 msgctxt "calendar heading" msgid "%B %-d" msgstr "%e %B" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:175 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%e %B" #: js/ui/dateMenu.js:181 msgid "Today" msgstr "Hari Ini" #: js/ui/dateMenu.js:185 msgid "Tomorrow" msgstr "Besok" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:216 msgctxt "event list time" msgid "All Day" msgstr "Sepanjang Hari" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:238 msgid "%m/%d" msgstr "%d/%m" #: js/ui/dateMenu.js:289 msgid "No Events" msgstr "Tak Ada Acara" #: js/ui/dateMenu.js:411 msgid "Add World Clocks…" msgstr "Tambahkan Jam Dunia…" #: js/ui/dateMenu.js:412 msgid "World Clocks" msgstr "Jam Dunia" #: js/ui/dateMenu.js:702 msgid "Loading…" msgstr "Memuat…" #: js/ui/dateMenu.js:712 msgid "Go Online for Weather Information" msgstr "Pergi Daring untuk Informasi Cuaca" #: js/ui/dateMenu.js:714 msgid "Weather Information Unavailable" msgstr "Informasi Cuaca Tidak Tersedia" #: js/ui/dateMenu.js:724 msgid "Weather" msgstr "Cuaca" #: js/ui/dateMenu.js:726 msgid "Select Weather Location…" msgstr "Pilih Lokasi Cuaca…" #: js/ui/endSessionDialog.js:47 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "Keluar %s" #: js/ui/endSessionDialog.js:48 msgctxt "title" msgid "Log Out" msgstr "Keluar" #: js/ui/endSessionDialog.js:51 #, javascript-format msgid "%s will be logged out automatically in %d second" msgid_plural "%s will be logged out automatically in %d seconds" msgstr[0] "%s akan log keluar otomatis dalam %d detik" #: js/ui/endSessionDialog.js:57 #, javascript-format msgid "You will be logged out automatically in %d second" msgid_plural "You will be logged out automatically in %d seconds" msgstr[0] "Anda akan log keluar otomatis dalam %d detik" #: js/ui/endSessionDialog.js:64 msgctxt "button" msgid "Log Out" msgstr "Keluar" #: js/ui/endSessionDialog.js:70 js/ui/status/system.js:174 msgctxt "title" msgid "Power Off" msgstr "Matikan" #: js/ui/endSessionDialog.js:71 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Pasang Pemutakhiran & Matikan" #: js/ui/endSessionDialog.js:74 #, javascript-format msgid "The system will power off automatically in %d second" msgid_plural "The system will power off automatically in %d seconds" msgstr[0] "Sistem ini akan otomatis dimatikan dalam %d detik" #: js/ui/endSessionDialog.js:78 js/ui/endSessionDialog.js:97 msgctxt "checkbox" msgid "Install pending software updates" msgstr "Pasang pemutakhiran perangkat lunak yang tertunda" #: js/ui/endSessionDialog.js:82 msgctxt "button" msgid "Power Off" msgstr "Matikan" #: js/ui/endSessionDialog.js:89 msgctxt "title" msgid "Restart" msgstr "Mulai Ulang" #: js/ui/endSessionDialog.js:90 msgctxt "title" msgid "Install Updates & Restart" msgstr "Pasang Pemutakhiran & Mulai Ulang" #: js/ui/endSessionDialog.js:93 #, javascript-format msgid "The system will restart automatically in %d second" msgid_plural "The system will restart automatically in %d seconds" msgstr[0] "Sistem ini akan otomatis dimulai ulang dalam %d detik" #: js/ui/endSessionDialog.js:101 msgctxt "button" msgid "Restart" msgstr "Mulai Ulang" #: js/ui/endSessionDialog.js:109 msgctxt "title" msgid "Restart & Install Updates" msgstr "Mulai Ulang & Pasang Pemutakhiran" #: js/ui/endSessionDialog.js:112 #, javascript-format msgid "The system will automatically restart and install updates in %d second" msgid_plural "" "The system will automatically restart and install updates in %d seconds" msgstr[0] "" "Sistem ini akan otomatis dimulai ulang dan memasang pemutakhiran dalam %d " "detik" #: js/ui/endSessionDialog.js:119 js/ui/endSessionDialog.js:140 msgctxt "button" msgid "Restart & Install" msgstr "Mulai Ulang & Pasang" #: js/ui/endSessionDialog.js:121 msgctxt "button" msgid "Install & Power Off" msgstr "Pasang & Matikan" #: js/ui/endSessionDialog.js:122 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Matikan daya setelah pemutakhiran dipasang" #: js/ui/endSessionDialog.js:129 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "Mulai Ulang & Pasang Peningkatan" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:134 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "%s %s akan dipasang setelah mulai ulang. Instalasi peningkatan bisa makan " "waktu lama: pastikan bahwa Anda telah melakukan back up dan komputer " "tersambung ke listrik." #: js/ui/endSessionDialog.js:283 msgid "Low battery power: please plug in before installing updates" msgstr "Daya baterai rendah: harap tancapkan sebelum memasang pemutakhiran" #: js/ui/endSessionDialog.js:292 msgid "Some applications are busy or have unsaved work" msgstr "Beberapa aplikasi sedang sibuk atau belum disimpan perubahannya" #: js/ui/endSessionDialog.js:297 msgid "Other users are logged in" msgstr "Pengguna lain sedang log masuk" #: js/ui/endSessionDialog.js:467 msgctxt "button" msgid "Boot Options" msgstr "Opsi Boot" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:672 #, javascript-format msgid "%s (remote)" msgstr "%s (jarak jauh)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:675 #, javascript-format msgid "%s (console)" msgstr "%s (konsol)" #: js/ui/extensionDownloader.js:280 msgid "Install" msgstr "Pasang" #: js/ui/extensionDownloader.js:286 msgid "Install Extension" msgstr "Pasang Ekstensi" #: js/ui/extensionDownloader.js:287 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "Unduh dan pasang \"%s\" dari extensions.gnome.org?" #: js/ui/extensionSystem.js:352 msgid "Extension Updates Available" msgstr "Pemutakhiran Ekstensi Tersedia" #: js/ui/extensionSystem.js:353 msgid "Extension updates are ready to be installed" msgstr "Pemutakhiran ekstensi siap dipasang" #: js/ui/inhibitShortcutsDialog.js:70 msgid "Allow inhibiting shortcuts" msgstr "Izinkan menghalangi pintasan" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:73 #, javascript-format msgid "The app %s wants to inhibit shortcuts" msgstr "Aplikasi %s ingin menghalangi pintasan" #: js/ui/inhibitShortcutsDialog.js:74 msgid "An app wants to inhibit shortcuts" msgstr "Aplikasi ingin menghalangi pintasan" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:81 #, javascript-format msgid "You can restore shortcuts by pressing %s" msgstr "Anda dapat memulihkan pintasan dengan menekan %s" #: js/ui/kbdA11yDialog.js:34 msgid "Slow Keys Turned On" msgstr "Tombol Lambat Dinyalakan" #: js/ui/kbdA11yDialog.js:35 msgid "Slow Keys Turned Off" msgstr "Tombol Lambat Dimatikan" #: js/ui/kbdA11yDialog.js:36 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "Anda hanya menahan tombol Shift selama 8 detik. Ini adalah pintasan untuk " "fitur Tombol Lambat, yang mempengaruhi cara kerja papan tik Anda." #: js/ui/kbdA11yDialog.js:42 msgid "Sticky Keys Turned On" msgstr "Tombol Lengket Dinyalakan" #: js/ui/kbdA11yDialog.js:43 msgid "Sticky Keys Turned Off" msgstr "Tombol Lengket Dimatikan" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "Anda hanya menekan tombol Shift 5 kali berturut-turut. Ini adalah pintasan " "untuk fitur Tombol Lengket, yang mempengaruhi cara kerja papan tik Anda." #: js/ui/kbdA11yDialog.js:47 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" "Anda hanya menekan dua tombol sekaligus, atau menekan tombol Shift 5 kali " "berturut-turut. Ini mematikan fitur Tombol Lengket, yang mempengaruhi cara " "kerja papan tik Anda." #: js/ui/kbdA11yDialog.js:57 msgid "Leave On" msgstr "Biarkan Menyala" #: js/ui/kbdA11yDialog.js:57 msgid "Turn On" msgstr "Nyalakan" #: js/ui/kbdA11yDialog.js:67 js/ui/status/network.js:455 msgid "Turn Off" msgstr "Matikan" #: js/ui/kbdA11yDialog.js:67 msgid "Leave Off" msgstr "Biarkan Mati" #: js/ui/keyboard.js:180 js/ui/status/keyboard.js:897 msgid "Keyboard Settings" msgstr "Pengaturan Papan Tik" #: js/ui/lookingGlass.js:727 msgid "No extensions installed" msgstr "Tak ada ekstensi terpasang" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:788 #, javascript-format msgid "%s has not emitted any errors" msgstr "%s tidak menghasilkan galat apa pun" #: js/ui/lookingGlass.js:794 msgid "Hide Errors" msgstr "Sembunyikan Galat" #: js/ui/lookingGlass.js:798 js/ui/lookingGlass.js:875 msgid "Show Errors" msgstr "Tampilkan Galat" #: js/ui/lookingGlass.js:807 msgid "Active" msgstr "Aktif" #: js/ui/lookingGlass.js:810 msgid "Inactive" msgstr "Tak Aktif" #: js/ui/lookingGlass.js:812 msgid "Error" msgstr "Galat" #: js/ui/lookingGlass.js:814 msgid "Out of date" msgstr "Kadaluarsa" #: js/ui/lookingGlass.js:816 msgid "Downloading" msgstr "Mengunduh" #: js/ui/lookingGlass.js:818 msgid "Deactivating" msgstr "Menonaktifkan" #: js/ui/lookingGlass.js:820 msgid "Activating" msgstr "Mengaktifkan" #: js/ui/lookingGlass.js:853 msgid "View Source" msgstr "Tilik Sumber" #: js/ui/lookingGlass.js:864 msgid "Web Page" msgstr "Halaman Web" #: js/ui/main.js:277 msgid "System was put in unsafe mode" msgstr "Sistem dimasukkan ke dalam mode yang tidak aman" #: js/ui/main.js:278 msgid "Apps now have unrestricted access" msgstr "Aplikasi sekarang memiliki akses tak terbatas" #: js/ui/main.js:338 msgid "Logged in as a privileged user" msgstr "Masuk sebagai pengguna istimewa" #: js/ui/main.js:339 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" "Menjalankan sesi sebagai pengguna istimewa harus dihindari untuk alasan " "keamanan. Jika memungkinkan, Anda harus masuk sebagai pengguna biasa." #: js/ui/main.js:387 msgid "Screen Lock disabled" msgstr "Kunci Layar dinonaktifkan" #: js/ui/main.js:388 msgid "Screen Locking requires the GNOME display manager" msgstr "Penguncian Layar memerlukan manajer tampilan GNOME" #. Translators: this is the string displayed in the header when a message #. source doesn't have a name #: js/ui/messageList.js:374 msgid "Unknown App" msgstr "Aplikasi Tak Dikenal" #: js/ui/messageTray.js:326 js/ui/messageTray.js:328 msgid "Notification sound" msgstr "Suara Pemberitahuan" #: js/ui/mpris.js:198 msgid "Unknown artist" msgstr "Artis tak dikenal" #: js/ui/mpris.js:208 msgid "Unknown title" msgstr "Judul tak dikenal" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:328 msgid "Type to search" msgstr "Ketik untuk mencari" #: js/ui/overviewControls.js:392 msgid "Apps" msgstr "Aplikasi" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:33 msgid "Overview" msgstr "Gambaran" #: js/ui/padOsd.js:98 msgid "New shortcut…" msgstr "Pintasan baru…" #: js/ui/padOsd.js:151 msgid "App defined" msgstr "Aplikasi yang didefinisikan" #: js/ui/padOsd.js:152 msgid "Show on-screen help" msgstr "Tampilkan bantuan di layar" #: js/ui/padOsd.js:153 msgid "Switch monitor" msgstr "Ganti monitor" #: js/ui/padOsd.js:154 msgid "Assign keystroke" msgstr "Tetapkan keystroke" #: js/ui/padOsd.js:223 msgid "Done" msgstr "Selesai" #: js/ui/padOsd.js:726 msgid "Edit…" msgstr "Sunting…" #: js/ui/padOsd.js:773 msgid "None" msgstr "Nihil" #: js/ui/padOsd.js:844 msgid "Press a button to configure" msgstr "Tekan tombol untuk mengkonfigurasi" #: js/ui/padOsd.js:845 msgid "Press Esc to exit" msgstr "Tekan Esc untuk keluar" #: js/ui/padOsd.js:848 msgid "Press any key to exit" msgstr "Tekan tombol apa saja untuk keluar" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:423 msgid "Activities" msgstr "Aktivitas" #: js/ui/panel.js:504 msgctxt "System menu in the top bar" msgid "System" msgstr "Sistem" #: js/ui/panel.js:678 msgid "Top Bar" msgstr "Bar Atas" #: js/ui/quickSettings.js:188 msgid "Open menu" msgstr "Buka menu" #: js/ui/runDialog.js:61 msgid "Run a Command" msgstr "Jalankan Perintah" #: js/ui/runDialog.js:76 msgid "Press ESC to close" msgstr "Tekan Esc untuk menutup" #: js/ui/runDialog.js:241 msgid "Restart is not available on Wayland" msgstr "Memulai ulang tidak tersedia di Wayland" #: js/ui/runDialog.js:246 msgid "Restarting…" msgstr "Memulai ulang…" #: js/ui/screenShield.js:233 msgid "GNOME needs to lock the screen" msgstr "GNOME perlu mengunci layar" #: js/ui/screenShield.js:274 js/ui/screenShield.js:667 msgid "Unable to lock" msgstr "Tak bisa mengunci" #: js/ui/screenShield.js:275 js/ui/screenShield.js:668 msgid "Lock was blocked by an app" msgstr "Kunci diblokir oleh suatu aplikasi" #: js/ui/screenshot.js:1252 msgid "Selection" msgstr "Pilihan" #: js/ui/screenshot.js:1262 msgid "Area Selection" msgstr "Pemilihan Area" #: js/ui/screenshot.js:1267 msgid "Screen" msgstr "Layar" #: js/ui/screenshot.js:1277 msgid "Screen Selection" msgstr "Pemilihan Layar" #: js/ui/screenshot.js:1282 msgid "Window" msgstr "Jendela" #: js/ui/screenshot.js:1292 msgid "Window Selection" msgstr "Pemilihan Jendela" #. Translators: entry in the window right click menu. #: js/ui/screenshot.js:1317 js/ui/status/system.js:111 js/ui/windowMenu.js:28 msgid "Take Screenshot" msgstr "Ambil Cuplikan" #: js/ui/screenshot.js:1333 msgid "Record Screen" msgstr "Rekam Layar" #. Translators: since this string refers to an action, #. it needs to be phrased as a verb. #: js/ui/screenshot.js:1350 msgid "Capture" msgstr "Tangkap" #: js/ui/screenshot.js:1372 msgid "Show Pointer" msgstr "Tampilkan Penunjuk" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1996 msgid "Screencasts" msgstr "Screencast" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast From 07-17-2013 10:00:46 PM" #: js/ui/screenshot.js:2001 #, no-c-format msgid "Screencast From %d %t" msgstr "Screencast Dari %d %t" #. Translators: notification title. #: js/ui/screenshot.js:2047 msgid "Screencast recorded" msgstr "Screencast direkam" #. Translators: notification title. #: js/ui/screenshot.js:2060 msgid "Screencast failed to start" msgstr "Screencast gagal dimulai" #. Translators: notification title. #: js/ui/screenshot.js:2066 msgid "Screencast ended: Out of disk space" msgstr "Screencast berakhir: Ruang diska habis" #. We can encourage user to try again on service crashes since the #. recorder will auto-blocklist the pipeline that crashed. #. Translators: notification title. #: js/ui/screenshot.js:2072 msgid "Screencast ended unexpectedly, please try again" msgstr "Screencast berakhir secara tak terduga, mohon coba lagi" #. Translators: notification title. #: js/ui/screenshot.js:2075 msgid "Screencast ended unexpectedly" msgstr "Screencast berakhir secara tak terduga" #. Translators: notification source name. #: js/ui/screenshot.js:2085 js/ui/screenshot.js:2327 msgid "Screenshot" msgstr "Cuplikan layar" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:2092 msgid "Click here to view the video." msgstr "Klik di sini untuk melihat video." #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:2100 js/ui/screenshot.js:2343 msgid "Show in Files" msgstr "Tampilkan pada Berkas" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2287 #, javascript-format msgid "Screenshot From %s" msgstr "Cuplikan Layar Dari %s" #. Translators: notification title. #: js/ui/screenshot.js:2333 msgid "Screenshot captured" msgstr "Cuplikan layar yang diambil" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2335 msgid "You can paste the image from the clipboard." msgstr "Anda dapat menempelkan gambar dari papan klip." #: js/ui/screenshot.js:2391 js/ui/screenshot.js:2555 msgid "Screenshot taken" msgstr "Cuplikan layar telah diambil" #: js/ui/search.js:829 msgid "Searching…" msgstr "Mencari…" #: js/ui/search.js:831 msgid "No results" msgstr "Tidak ada hasil" #: js/ui/search.js:962 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "%d lagi" #: js/ui/searchController.js:87 #: subprojects/extensions-app/data/ui/extensions-window.ui:73 msgid "Search" msgstr "Cari" #: js/ui/shellEntry.js:21 msgid "Copy" msgstr "Salin" #: js/ui/shellEntry.js:26 msgid "Paste" msgstr "Tempel" #: js/ui/shellEntry.js:78 msgid "Show Text" msgstr "Tampilkan Teks" #: js/ui/shellEntry.js:80 msgid "Hide Text" msgstr "Sembunyikan Teks" #: js/ui/shellEntry.js:174 msgid "Caps lock is on" msgstr "Caps lock menyala" #: js/ui/shellMountOperation.js:286 msgid "Hidden Volume" msgstr "Volume Tersembunyi" #: js/ui/shellMountOperation.js:289 msgid "Windows System Volume" msgstr "Volume Sistem Windows" #: js/ui/shellMountOperation.js:292 msgid "Uses Keyfiles" msgstr "Gunakan Berkas Kunci" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:300 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead" msgstr "" "Untuk membuka kunci volume yang menggunakan berkas kunci, pakai utilitas " "%s sebagai pengganti" #: js/ui/shellMountOperation.js:304 msgid "" "You need an external utility like Disks to unlock a volume that uses " "keyfiles" msgstr "" "Anda memerlukan utilitas eksternal seperti Diska untuk membuka kunci " "volume yang menggunakan berkas kunci" #: js/ui/shellMountOperation.js:312 msgid "PIM Number" msgstr "Nomor PIM" #: js/ui/shellMountOperation.js:371 msgid "Remember Password" msgstr "Ingat Kata Sandi" #: js/ui/shellMountOperation.js:386 msgid "Unlock" msgstr "Buka Kunci" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:400 #, javascript-format msgid "Open %s" msgstr "Buka %s" #: js/ui/shellMountOperation.js:436 msgid "The PIM must be a number or empty" msgstr "PIM harus berupa angka atau kosong" #: js/ui/status/accessibility.js:34 msgid "Accessibility" msgstr "Aksesibilitas" #: js/ui/status/accessibility.js:44 msgid "High Contrast" msgstr "Kontras Tinggi" #: js/ui/status/accessibility.js:47 msgid "Zoom" msgstr "Zum" #: js/ui/status/accessibility.js:54 msgid "Screen Reader" msgstr "Pembaca Layar" #: js/ui/status/accessibility.js:58 msgid "Screen Keyboard" msgstr "Papan Tik di Layar" #: js/ui/status/accessibility.js:62 msgid "Visual Alerts" msgstr "Peringatan Visual" #: js/ui/status/accessibility.js:66 msgid "Sticky Keys" msgstr "Tombol Lengket" #: js/ui/status/accessibility.js:70 msgid "Slow Keys" msgstr "Tombol Lambat" #: js/ui/status/accessibility.js:74 msgid "Bounce Keys" msgstr "Tombol Pantul" #: js/ui/status/accessibility.js:78 msgid "Mouse Keys" msgstr "Tombol Tetikus" #: js/ui/status/accessibility.js:83 msgid "Accessibility Settings" msgstr "Pengaturan Aksesibilitas" #: js/ui/status/accessibility.js:140 msgid "Large Text" msgstr "Teks Besar" #: js/ui/status/autoRotate.js:14 msgid "Auto Rotate" msgstr "Putar Otomatis" #: js/ui/status/backgroundApps.js:156 msgctxt "title" msgid "Background Apps" msgstr "Aplikasi Latar Belakang" #: js/ui/status/backgroundApps.js:171 msgid "Apps known to be running without a window" msgstr "Aplikasi yang diketahui berjalan tanpa suatu jendela" #: js/ui/status/backgroundApps.js:182 msgid "App Settings" msgstr "Pengaturan Aplikasi" #: js/ui/status/backgroundApps.js:239 msgid "No Background Apps" msgstr "Tidak Ada Aplikasi Latar Belakang" #: js/ui/status/backgroundApps.js:241 #, javascript-format msgid "%d Background App" msgid_plural "%d Background Apps" msgstr[0] "%d Aplikasi Latar Belakang" #: js/ui/status/backlight.js:39 msgid "Keyboard Brightness" msgstr "Kecerahan Papan Tik" #: js/ui/status/backlight.js:79 msgid "Off" msgstr "Mati" #: js/ui/status/backlight.js:80 msgid "Low" msgstr "Rendah" #: js/ui/status/backlight.js:81 msgid "High" msgstr "Tinggi" #: js/ui/status/backlight.js:147 js/ui/status/keyboard.js:879 msgid "Keyboard" msgstr "Papan Ketik" #: js/ui/status/bluetooth.js:245 js/ui/status/network.js:360 msgid "Disconnect" msgstr "Putuskan" #: js/ui/status/bluetooth.js:262 js/ui/status/bluetooth.js:264 msgid "Bluetooth" msgstr "Bluetooth" #: js/ui/status/bluetooth.js:287 js/ui/status/network.js:1900 msgid "Bluetooth Settings" msgstr "Pengaturan Bluetooth" #: js/ui/status/bluetooth.js:334 msgid "No available or connected devices" msgstr "Tidak ada perangkat yang tersedia atau tersambung" #: js/ui/status/bluetooth.js:335 msgid "Turn on Bluetooth to connect to devices" msgstr "Nyalakan Bluetooth untuk tersambung ke perangkat" #. Translators: This is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:389 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d Tersambung" #: js/ui/status/brightness.js:32 msgid "Brightness" msgstr "Kecerahan" #: js/ui/status/darkMode.js:12 msgid "Dark Style" msgstr "Gaya Gelap" #: js/ui/status/dwellClick.js:15 msgid "Single Click" msgstr "Klik Tunggal" #: js/ui/status/dwellClick.js:20 msgid "Double Click" msgstr "Klik Ganda" #: js/ui/status/dwellClick.js:25 msgid "Drag" msgstr "Seret" #: js/ui/status/dwellClick.js:30 msgid "Secondary Click" msgstr "Klik Sekunder" #: js/ui/status/dwellClick.js:39 msgid "Dwell Click" msgstr "Klik Menetap" #: js/ui/status/keyboard.js:896 msgid "Show Keyboard Layout" msgstr "Tampilkan Tata Letak Papan Tik" #: js/ui/status/location.js:337 msgid "Allow location access" msgstr "Izinkan akses lokasi" #. Translators: %s is an application name #: js/ui/status/location.js:339 #, javascript-format msgid "The app %s wants to access your location" msgstr "Aplikasi %s ingin mengakses lokasi Anda" #: js/ui/status/location.js:349 msgid "Location access can be changed at any time from the privacy settings" msgstr "Akses lokasi dapat diubah setiap saat dari pengaturan privasi" #: js/ui/status/location.js:357 msgid "Deny Access" msgstr "Tolak Akses" #: js/ui/status/location.js:362 msgid "Grant Access" msgstr "Beri Akses" #: js/ui/status/network.js:62 msgid "" msgstr "" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:354 #, javascript-format msgid "Disconnect %s" msgstr "Memutus %s" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:356 #, javascript-format msgid "Connect to %s" msgstr "Sambung ke %s" #: js/ui/status/network.js:1050 msgid "Secure" msgstr "Aman" #: js/ui/status/network.js:1050 msgid "Not secure" msgstr "Tidak aman" #: js/ui/status/network.js:1051 #, javascript-format msgid "Signal strength %s%%" msgstr "Kekuatan sinyal %s%%" #. translators: The first placeholder is the network name, the second and indication whether it is secure, and the last the signal strength indication #: js/ui/status/network.js:1053 #, javascript-format msgid "%s, %s, %s" msgstr "%s, %s, %s" #. Translators: %s is a network identifier #: js/ui/status/network.js:1155 #, javascript-format msgid "%s Hotspot" msgstr "%s Hotspot" #: js/ui/status/network.js:1426 #, javascript-format msgid "%d connected" msgid_plural "%d connected" msgstr[0] "%d tersambung" #: js/ui/status/network.js:1524 js/ui/status/network.js:1540 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1525 msgid "VPN Settings" msgstr "Pengaturan VPN" #: js/ui/status/network.js:1785 msgid "Wi–Fi" msgstr "Wi-Fi" #: js/ui/status/network.js:1787 msgid "All Networks" msgstr "Semua Jaringan" #: js/ui/status/network.js:1884 msgid "Wired Connections" msgstr "Koneksi Kabel" #: js/ui/status/network.js:1885 msgid "Wired Settings" msgstr "Pengaturan Kabel" #: js/ui/status/network.js:1899 msgid "Bluetooth Tethers" msgstr "Tether Bluetooth" #. Translators: "Tether" from "Bluetooth Tether" #: js/ui/status/network.js:1906 msgid "Tether" msgstr "Tambatkan" #: js/ui/status/network.js:1919 msgid "Mobile Connections" msgstr "Koneksi Seluler" #: js/ui/status/network.js:1921 msgid "Mobile Broadband Settings" msgstr "Pengaturan Data Seluler" #. Translators: "Mobile" from "Mobile Broadband" #: js/ui/status/network.js:1930 msgid "Mobile" msgstr "Seluler" #: js/ui/status/network.js:1964 msgid "Sign Into Wi–Fi Network" msgstr "Masuk Ke Jaringan Wi-Fi" #: js/ui/status/network.js:2151 msgid "Connection failed" msgstr "Koneksi gagal" #: js/ui/status/network.js:2152 msgid "Activation of network connection failed" msgstr "Aktivasi koneksi jaringan gagal" #: js/ui/status/nightLight.js:19 msgid "Night Light" msgstr "Cahaya Malam" #: js/ui/status/powerProfiles.js:19 msgctxt "Power profile" msgid "Performance" msgstr "Performa" #: js/ui/status/powerProfiles.js:24 msgctxt "Power profile" msgid "Balanced" msgstr "Seimbang" #: js/ui/status/powerProfiles.js:29 msgctxt "Power profile" msgid "Power Saver" msgstr "Penghemat Daya" #: js/ui/status/powerProfiles.js:39 js/ui/status/powerProfiles.js:69 msgid "Power Mode" msgstr "Mode Daya" #: js/ui/status/powerProfiles.js:71 msgid "Power Settings" msgstr "Pengaturan Daya" #: js/ui/status/remoteAccess.js:74 msgid "Stop Screencast" msgstr "Hentikan Screencast" #: js/ui/status/remoteAccess.js:144 msgid "Stop Screen Sharing" msgstr "Hentikan Berbagi Layar" #: js/ui/status/rfkill.js:99 msgid "Airplane Mode" msgstr "Mode Pesawat Terbang" #: js/ui/status/system.js:168 msgid "Power Off Menu" msgstr "Menu Matikan" #: js/ui/status/system.js:176 msgid "Suspend" msgstr "Suspensi" #: js/ui/status/system.js:181 msgid "Restart…" msgstr "Mulai ulang…" #: js/ui/status/system.js:186 msgid "Power Off…" msgstr "Matikan…" #: js/ui/status/system.js:193 #: subprojects/extensions-app/data/ui/extensions-window.ui:124 msgid "Log Out…" msgstr "Keluar…" #: js/ui/status/system.js:198 msgid "Switch User…" msgstr "Beralih Pengguna…" #: js/ui/status/system.js:242 msgctxt "action" msgid "Lock Screen" msgstr "Kunci Layar" #: js/ui/status/thunderbolt.js:308 msgid "Unknown Thunderbolt device" msgstr "Perangkat Thunderbolt tak dikenal" #: js/ui/status/thunderbolt.js:309 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" "Perangkat baru telah terdeteksi saat Anda pergi. Harap lepaskan dan " "sambungkan kembali perangkat untuk mulai menggunakannya." #: js/ui/status/thunderbolt.js:312 msgid "Unauthorized Thunderbolt device" msgstr "Perangkat Thunderbolt tak dikenal" #: js/ui/status/thunderbolt.js:313 msgid "" "New device has been detected and needs to be authorized by an administrator" msgstr "" "Perangkat baru telah terdeteksi dan perlu diotorisasi oleh administrator" #: js/ui/status/thunderbolt.js:319 msgid "Thunderbolt authorization error" msgstr "Autorisasi Thunderbolt galat" #: js/ui/status/thunderbolt.js:320 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "Tidak dapat mengotorisasi perangkat Thunderbolt: %s" #: js/ui/status/volume.js:218 msgid "Volume changed" msgstr "Volume diubah" #: js/ui/status/volume.js:231 msgid "Unmute" msgstr "Bunyikan" #: js/ui/status/volume.js:231 msgid "Mute" msgstr "Senyapkan" #: js/ui/status/volume.js:286 msgid "Volume" msgstr "Volume" #: js/ui/status/volume.js:302 msgid "Sound Output" msgstr "Keluaran Suara" #: js/ui/status/volume.js:374 msgid "Sound Input" msgstr "Masukan Suara" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:20 msgid "Mirror" msgstr "Kembar" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:29 msgid "Join Displays" msgstr "Gabung Layar" #. Translators: this is for using only external displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:39 msgid "External Only" msgstr "Hanya Eksternal" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:47 msgid "Built-in Only" msgstr "Hanya Bawaan" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:378 msgid "%A %B %-d" msgstr "%A, %d %B" #: js/ui/unlockDialog.js:384 msgid "Swipe up to unlock" msgstr "Gesek ke atas untuk membuka kunci" #: js/ui/unlockDialog.js:385 msgid "Click or press a key to unlock" msgstr "Klik atau tekan tombol untuk membuka kunci" #: js/ui/unlockDialog.js:568 msgid "Unlock Window" msgstr "Buka Kunci Jendela" #: js/ui/unlockDialog.js:577 msgid "Log in as another user" msgstr "Masuk sebagai pengguna lain" #: js/ui/welcomeDialog.js:47 #, javascript-format msgid "GNOME %s" msgstr "GNOME %s" #: js/ui/welcomeDialog.js:51 #, javascript-format msgid "Welcome to %s" msgstr "Selamat datang di %s" #: js/ui/welcomeDialog.js:52 msgid "If you want to learn your way around, check out the tour" msgstr "Jika Anda ingin mempelajarinya, lihat turnya" #: js/ui/welcomeDialog.js:61 msgid "Skip" msgstr "Lewati" #: js/ui/welcomeDialog.js:66 msgid "Take Tour" msgstr "Ikuti Tur" #: js/ui/windowAttentionHandler.js:18 #, javascript-format msgid "“%s” is ready" msgstr "“%s” siap" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:68 msgid "Keep these display settings?" msgstr "Simpan pengaturan tampilan ini?" #: js/ui/windowManager.js:78 msgid "Revert Settings" msgstr "Balikkan Tatanan" #: js/ui/windowManager.js:83 msgid "Keep Changes" msgstr "Simpan Perubahan" #: js/ui/windowManager.js:103 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "Perubahan tatanan akan dikembalikan dalam %d detik" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:500 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:40 msgid "Hide" msgstr "Sembunyikan" #: js/ui/windowMenu.js:47 msgid "Restore" msgstr "Pulihkan" #: js/ui/windowMenu.js:51 msgid "Maximize" msgstr "Maksimalkan" #: js/ui/windowMenu.js:58 msgid "Move" msgstr "Pindah" #: js/ui/windowMenu.js:78 msgid "Resize" msgstr "Ubah Ukuran" #: js/ui/windowMenu.js:98 msgid "Always on Top" msgstr "Selalu di Puncak" #: js/ui/windowMenu.js:117 msgid "Always on Visible Workspace" msgstr "Selalu pada Ruang Kerja yang Tampak" #: js/ui/windowMenu.js:131 msgid "Move to Workspace Left" msgstr "Pindah ke Ruang Kerja Kiri" #: js/ui/windowMenu.js:137 msgid "Move to Workspace Right" msgstr "Pindah ke Ruang Kerja Kanan" #: js/ui/windowMenu.js:143 msgid "Move to Workspace Up" msgstr "Pindah ke Ruang Kerja Atas" #: js/ui/windowMenu.js:149 msgid "Move to Workspace Down" msgstr "Pindah ke Ruang Kerja Bawah" #: js/ui/windowMenu.js:167 msgid "Move to Monitor Up" msgstr "Pindah ke Ruang Kerja Atas" #: js/ui/windowMenu.js:176 msgid "Move to Monitor Down" msgstr "Pindah ke Ruang Kerja Bawah" #: js/ui/windowMenu.js:185 msgid "Move to Monitor Left" msgstr "Pindahkan ke Monitor Kiri" #: js/ui/windowMenu.js:194 msgid "Move to Monitor Right" msgstr "Pindahkan ke Monitor Kanan" #: js/ui/windowMenu.js:202 msgid "Close" msgstr "Tutup" #: src/main.c:527 subprojects/extensions-tool/src/main.c:336 msgid "Print version" msgstr "Versi Cetak" #: src/main.c:533 msgid "Mode used by GDM for login screen" msgstr "Mode yang dipakai oleh layar log masuk GDM" #: src/main.c:539 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "Menggunakan mode tertentu, mis. \"gdm\" untuk layar masuk" #: src/main.c:545 msgid "List possible modes" msgstr "Menampilkan mode yang mungkin" #: src/main.c:551 msgid "Force animations to be enabled" msgstr "Memaksa animasi untuk diaktifkan" #: src/shell-app.c:252 msgctxt "program" msgid "Unknown" msgstr "Tak dikenal" #: src/shell-app.c:503 #, c-format msgid "Failed to launch “%s”" msgstr "Gagal meluncurkan \"%s\"" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match" msgstr "Kata sandi tidak cocok" #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "Kata sandi tidak boleh kosong" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "Dialog autentikasi ditolak oleh pengguna" #: src/st/st-icon-theme.c:1865 #, c-format msgid "Icon '%s' not present in theme %s" msgstr "Ikon '%s' tidak ada pada tema %s" #: src/st/st-icon-theme.c:3454 src/st/st-icon-theme.c:3757 msgid "Failed to load icon" msgstr "Gagal memuat ikon" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 msgid "Manage your GNOME Extensions" msgstr "Kelola Ekstensi GNOME Anda" #. developer_name tag deprecated with Appstream 1.0 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:19 msgid "The GNOME Project" msgstr "Proyek GNOME" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:51 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" "Ekstensi GNOME menangani pemutakhiran ekstensi, mengkonfigurasi preferensi " "ekstensi, dan menghapus atau menonaktifkan ekstensi yang tidak diinginkan." #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:64 msgid "Main Window" msgstr "Jendela Utama" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:68 msgid "Available Updates" msgstr "Pemutakhiran yang Tersedia" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:72 msgid "Search View" msgstr "Tampilan Pencarian" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "Konfigurasi Ekstensi GNOME Shell" #: subprojects/extensions-app/js/extensionManager.js:237 #, javascript-format msgid "" "The installed version of this extension (%s) is incompatible with the " "current version of GNOME (%s). The extension has been disabled." msgstr "" "Versi terpasang ekstensi ini (%s) tidak kompatibel dengan versi GNOME (%s) " "saat ini. Ekstensi telah dinonaktifkan." #: subprojects/extensions-app/js/extensionManager.js:238 #, javascript-format msgid "" "The installed version of this extension is incompatible with the current " "version of GNOME (%s). The extension has been disabled." msgstr "" "Versi terpasang ekstensi ini tidak kompatibel dengan versi GNOME (%s) saat " "ini. Ekstensi telah dinonaktifkan." #: subprojects/extensions-app/js/extensionManager.js:242 msgid "" "An error has occurred in this extension. This could cause issues elsewhere " "in the system. It is recommended to turn the extension off until the error " "is resolved." msgstr "" "Terjadi kesalahan pada ekstensi ini. Hal ini dapat menyebabkan masalah di " "bagian lain sistem. Disarankan untuk mematikan ekstensi hingga galat " "teratasi." #. translators: Details for an extension error #: subprojects/extensions-app/js/extensionManager.js:248 msgid "Error details:" msgstr "Detail galat:" #: subprojects/extensions-app/js/extensionRow.js:82 #, javascript-format msgid "Version %s" msgstr "Versi %s" #: subprojects/extensions-app/js/extensionsWindow.js:113 #, javascript-format msgid "Remove “%s”?" msgstr "Hapus \"%s\"?" #: subprojects/extensions-app/js/extensionsWindow.js:114 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "" "Jika Anda menghapus ekstensi, Anda harus kembali untuk mengunduhnya jika " "Anda ingin mengaktifkannya lagi" #: subprojects/extensions-app/js/extensionsWindow.js:117 msgid "_Cancel" msgstr "Bata_l" #: subprojects/extensions-app/js/extensionsWindow.js:118 msgid "_Remove" msgstr "_Hapus" #: subprojects/extensions-app/js/extensionsWindow.js:158 msgid "translator-credits" msgstr "" "Andika Triwidada , 2010-2014, 2017, 2022-2024.\n" "Dirgita , 2011, 2012, 2014.\n" "Wibiharto , 2011.\n" "Kukuh Syafaat , 2017-2024.\n" "Sucipto , 2020" #: subprojects/extensions-app/js/extensionsWindow.js:203 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "%d ekstensi akan diperbarui pada log masuk berikutnya." #: subprojects/extensions-app/data/ui/extension-row.ui:22 msgid "Error Details" msgstr "Detail Galat" #: subprojects/extensions-app/data/ui/extension-row.ui:62 msgid "Updates Details" msgstr "Detail Pemutakhiran" #: subprojects/extensions-app/data/ui/extension-row.ui:72 msgid "" "A new version of this extension is ready and will be loaded on next login." msgstr "" "Versi baru dari ekstensi ini telah siap dan akan dimuat pada log masuk " "berikutnya." #: subprojects/extensions-app/data/ui/extension-row.ui:104 msgid "Extension Details" msgstr "Detail Ekstensi" #: subprojects/extensions-app/data/ui/extension-row.ui:192 msgid "_Website" msgstr "Situs _Web" #: subprojects/extensions-app/data/ui/extension-row.ui:219 msgid "_Settings" msgstr "_Pengaturan" #: subprojects/extensions-app/data/ui/extension-row.ui:246 msgid "_Remove…" msgstr "_Hapus…" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Keyboard Shortcuts" msgstr "Pintasan Papan Tik" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "Tentang Ekstensi" #: subprojects/extensions-app/data/ui/extensions-window.ui:64 msgid "Main Menu" msgstr "Menu Utama" #: subprojects/extensions-app/data/ui/extensions-window.ui:106 msgid "Search extensions" msgstr "Cari ekstensi" #: subprojects/extensions-app/data/ui/extensions-window.ui:134 msgid "_Extensions" msgstr "_Ekstensi" #: subprojects/extensions-app/data/ui/extensions-window.ui:139 msgid "More Information" msgstr "Informasi Lebih Lanjut" #: subprojects/extensions-app/data/ui/extensions-window.ui:151 msgid "" "Extensions can cause performance and stability issues. It is recommended to " "disable all extensions if you experience problems with your system." msgstr "" "Ekstensi dapat menyebabkan masalah kinerja dan stabilitas. Disarankan untuk " "menonaktifkan semua ekstensi jika Anda mengalami masalah dengan sistem Anda." #: subprojects/extensions-app/data/ui/extensions-window.ui:178 msgid "User Extensions" msgstr "Ekstensi Pengguna" #: subprojects/extensions-app/data/ui/extensions-window.ui:198 msgid "System Extensions" msgstr "Ekstensi Sistem" #: subprojects/extensions-app/data/ui/extensions-window.ui:233 msgid "Search Results" msgstr "Hasil Pencarian" #: subprojects/extensions-app/data/ui/extensions-window.ui:252 msgid "No Results Found" msgstr "Tak Ada Hasil yang Ditemukan" #: subprojects/extensions-app/data/ui/extensions-window.ui:253 msgid "Try a different search" msgstr "Cobalah pencarian lain" #: subprojects/extensions-app/data/ui/extensions-window.ui:264 msgid "No Installed Extensions" msgstr "Tidak Ada Ekstensi Terpasang" #: subprojects/extensions-app/data/ui/extensions-window.ui:265 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" "Untuk menemukan dan menambahkan ekstensi, kunjungi extensions.gnome.org." #: subprojects/extensions-app/data/ui/extensions-window.ui:276 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" "Kami sangat menyesal, tetapi tidak mungkin mendapatkan daftar ekstensi yang " "dipasang. Pastikan Anda masuk ke GNOME dan coba lagi." #: subprojects/extensions-app/data/ui/help-overlay.ui:9 msgctxt "shortcut window" msgid "General" msgstr "Umum" #: subprojects/extensions-app/data/ui/help-overlay.ui:12 msgctxt "shortcut window" msgid "Open Menu" msgstr "Buka Menu" #: subprojects/extensions-app/data/ui/help-overlay.ui:18 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Jungkitkan Pencarian" #: subprojects/extensions-app/data/ui/help-overlay.ui:24 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Tampilkan Pintasan" #: subprojects/extensions-app/data/ui/help-overlay.ui:30 msgctxt "shortcut window" msgid "Quit" msgstr "Keluar" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:284 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "Ekstensi baru berhasil dibuat di %s.\n" #: subprojects/extensions-tool/src/command-create.c:376 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" "Nama harus berupa string yang sangat pendek (idealnya deskriptif).\n" "Contohnya adalah: %s" #: subprojects/extensions-tool/src/command-create.c:382 #: subprojects/extensions-tool/src/main.c:243 msgid "Name" msgstr "Nama" #: subprojects/extensions-tool/src/command-create.c:396 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" "Deskripsi adalah penjelasan satu kalimat tentang apa yang dilakukan ekstensi " "Anda.\n" "Contohnya adalah: %s" #: subprojects/extensions-tool/src/command-create.c:402 #: subprojects/extensions-tool/src/main.c:246 msgid "Description" msgstr "Deskripsi" #: subprojects/extensions-tool/src/command-create.c:416 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" "UUID adalah pengidentifikasi unik secara global untuk ekstensi Anda.\n" "Ini harus dalam format alamat surel (clicktofocus@janedoe.example.com)\n" #: subprojects/extensions-tool/src/command-create.c:443 msgid "Choose one of the available templates:\n" msgstr "Pilih salah satu templat yang tersedia:\n" #: subprojects/extensions-tool/src/command-create.c:457 msgid "Template" msgstr "Templat" #: subprojects/extensions-tool/src/command-create.c:515 msgid "The unique identifier of the new extension" msgstr "Pengidentifikasi unik ekstensi baru" #: subprojects/extensions-tool/src/command-create.c:518 msgid "NAME" msgstr "NAMA" #: subprojects/extensions-tool/src/command-create.c:519 msgid "The user-visible name of the new extension" msgstr "Nama ekstensi baru yang dapat dilihat pengguna" #: subprojects/extensions-tool/src/command-create.c:521 msgid "DESCRIPTION" msgstr "DESKRIPSI" #: subprojects/extensions-tool/src/command-create.c:523 msgid "A short description of what the extension does" msgstr "Deskripsi singkat tentang apa yang dilakukan ekstensi" #: subprojects/extensions-tool/src/command-create.c:525 #: subprojects/extensions-tool/src/command-pack.c:455 msgid "DOMAIN" msgstr "DOMAIN" #: subprojects/extensions-tool/src/command-create.c:527 msgid "The gettext domain used by the extension" msgstr "Domain gettext yang digunakan oleh ekstensi" #: subprojects/extensions-tool/src/command-create.c:529 #: subprojects/extensions-tool/src/command-pack.c:448 msgid "SCHEMA" msgstr "SKEMA" #: subprojects/extensions-tool/src/command-create.c:531 msgid "The GSettings schema used by the extension" msgstr "Skema GSettings yang digunakan oleh ekstensi" #: subprojects/extensions-tool/src/command-create.c:534 msgid "TEMPLATE" msgstr "TEMPLAT" #: subprojects/extensions-tool/src/command-create.c:535 msgid "The template to use for the new extension" msgstr "Templat yang akan digunakan untuk ekstensi baru" #: subprojects/extensions-tool/src/command-create.c:538 msgid "Include prefs.js template" msgstr "Sertakan templat prefs.js" #: subprojects/extensions-tool/src/command-create.c:544 msgid "Enter extension information interactively" msgstr "Masukkan informasi ekstensi secara interaktif" #: subprojects/extensions-tool/src/command-create.c:552 msgid "Create a new extension" msgstr "Buat ekstensi baru" #: subprojects/extensions-tool/src/command-create.c:570 #: subprojects/extensions-tool/src/command-list.c:190 msgid "Unknown arguments" msgstr "Argumen tak dikenal" #: subprojects/extensions-tool/src/command-create.c:595 msgid "UUID, name and description are required" msgstr "Diperlukan UUID, nama, dan deskripsi" #: subprojects/extensions-tool/src/command-disable.c:62 #: subprojects/extensions-tool/src/command-enable.c:62 #, c-format msgid "Extension “%s” does not exist\n" msgstr "Ekstensi \"%s\" tidak ada\n" #: subprojects/extensions-tool/src/command-disable.c:98 msgid "Disable an extension" msgstr "Nonaktifkan ekstensi" #: subprojects/extensions-tool/src/command-disable.c:116 #: subprojects/extensions-tool/src/command-enable.c:116 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "Tidak ada UUID yang diberikan" #: subprojects/extensions-tool/src/command-disable.c:121 #: subprojects/extensions-tool/src/command-enable.c:121 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "Lebih dari satu UUID diberikan" #: subprojects/extensions-tool/src/command-enable.c:98 msgid "Enable an extension" msgstr "Aktifkan ekstensi" #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:66 #: subprojects/extensions-tool/src/main.c:150 msgid "Failed to connect to GNOME Shell\n" msgstr "Gagal tersambung ke GNOME Shell\n" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:159 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "Ekstensi \"%s\" tidak ada\n" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "Tampilkan info ekstensi" #: subprojects/extensions-tool/src/command-install.c:190 msgid "Overwrite an existing extension" msgstr "Timpa ekstensi yang ada" #: subprojects/extensions-tool/src/command-install.c:192 msgid "EXTENSION_BUNDLE" msgstr "BUNDEL_EKSTENSI" #: subprojects/extensions-tool/src/command-install.c:201 msgid "Install an extension bundle" msgstr "Pasang bundel ekstensi" #: subprojects/extensions-tool/src/command-install.c:219 msgid "No extension bundle specified" msgstr "Tidak ada bundel ekstensi yang ditentukan" #: subprojects/extensions-tool/src/command-install.c:225 msgid "More than one extension bundle specified" msgstr "Lebih dari satu bundel ekstensi ditentukan" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show user-installed extensions" msgstr "Tampilkan ekstensi yang dipasang pengguna" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show system-installed extensions" msgstr "Tampilkan ekstensi yang dipasang sistem" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Show enabled extensions" msgstr "Tampilkan ekstensi yang diaktifkan" #: subprojects/extensions-tool/src/command-list.c:149 msgid "Show disabled extensions" msgstr "Tampilkan ekstensi yang dinonaktifkan" #: subprojects/extensions-tool/src/command-list.c:152 msgid "Show extensions in active state" msgstr "Tampilkan ekstensi dalam keadaan aktif" #: subprojects/extensions-tool/src/command-list.c:155 msgid "Show extensions in inactive state" msgstr "Tampilkan ekstensi dalam keadaan tidak aktif" #: subprojects/extensions-tool/src/command-list.c:158 msgid "Show extensions with preferences" msgstr "Tampilkan ekstensi dengan preferensi" #: subprojects/extensions-tool/src/command-list.c:161 msgid "Show extensions with updates" msgstr "Tampilkan ekstensi dengan pemutakhiran" #: subprojects/extensions-tool/src/command-list.c:164 msgid "Print extension details" msgstr "Cetak detail ekstensi" #: subprojects/extensions-tool/src/command-list.c:172 msgid "List installed extensions" msgstr "Daftar ekstensi yang dipasang" #: subprojects/extensions-tool/src/command-pack.c:444 msgid "FILE" msgstr "BERKAS" #: subprojects/extensions-tool/src/command-pack.c:445 msgid "Additional source to include in the bundle" msgstr "Sumber tambahan untuk disertakan dalam bundel" #: subprojects/extensions-tool/src/command-pack.c:449 msgid "A GSettings schema that should be included" msgstr "Skema GSettings yang harus dimasukkan" #: subprojects/extensions-tool/src/command-pack.c:451 #: subprojects/extensions-tool/src/command-pack.c:462 msgid "DIRECTORY" msgstr "DIREKTORI" #: subprojects/extensions-tool/src/command-pack.c:453 msgid "The directory where translations are found" msgstr "Direktori tempat terjemahan ditemukan" #: subprojects/extensions-tool/src/command-pack.c:457 msgid "The gettext domain to use for translations" msgstr "Domain gettext yang digunakan untuk terjemahan" #: subprojects/extensions-tool/src/command-pack.c:460 msgid "Overwrite an existing pack" msgstr "Timpa paket yang ada" #: subprojects/extensions-tool/src/command-pack.c:464 msgid "The directory where the pack should be created" msgstr "Direktori tempat paket harus dibuat" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "SOURCE_DIRECTORY" msgstr "DIREKTORI_SUMBER" #: subprojects/extensions-tool/src/command-pack.c:475 msgid "Create an extension bundle" msgstr "Buat bundel ekstensi" #: subprojects/extensions-tool/src/command-pack.c:495 msgid "More than one source directory specified" msgstr "Lebih dari satu direktori sumber ditentukan" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "Ekstensi \"%s\" tidak memiliki preferensi\n" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "Gagal membuka preferensi untuk ekstensi \"%s\": %s\n" #: subprojects/extensions-tool/src/command-prefs.c:87 msgid "Opens extension preferences" msgstr "Buka preferensi ekstensi" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "Atur ulang ekstensi" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "Tidak dapat menghapus pemasangan ekstensi sistem\n" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "Gagal menghapus pemasangan \"%s\"\n" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "Hapus ekstensi" #: subprojects/extensions-tool/src/main.c:76 msgid "Do not print error messages" msgstr "Jangan cetak pesan kesalahan" #: subprojects/extensions-tool/src/main.c:249 msgid "Path" msgstr "Path" #: subprojects/extensions-tool/src/main.c:252 msgid "URL" msgstr "URL" #: subprojects/extensions-tool/src/main.c:255 msgid "Original author" msgstr "Penulis asli" #: subprojects/extensions-tool/src/main.c:261 #: subprojects/extensions-tool/src/main.c:263 #: subprojects/extensions-tool/src/main.c:265 msgid "Version" msgstr "Versi" #: subprojects/extensions-tool/src/main.c:268 msgid "Enabled" msgstr "Diaktifkan" #: subprojects/extensions-tool/src/main.c:268 msgid "Yes" msgstr "Ya" #: subprojects/extensions-tool/src/main.c:268 msgid "No" msgstr "Tidak" #: subprojects/extensions-tool/src/main.c:271 msgid "State" msgstr "Kondisi" #: subprojects/extensions-tool/src/main.c:309 msgid "“version” takes no arguments" msgstr "\"version\" tak menerima argumen" #: subprojects/extensions-tool/src/main.c:311 #: subprojects/extensions-tool/src/main.c:331 msgid "Usage:" msgstr "Pemakaian:" #: subprojects/extensions-tool/src/main.c:314 msgid "Print version information and exit." msgstr "Cetak informasi versi dan keluar." #: subprojects/extensions-tool/src/main.c:329 #: subprojects/extensions-tool/src/main.c:332 msgid "COMMAND" msgstr "PERINTAH" #: subprojects/extensions-tool/src/main.c:332 msgid "[ARGS…]" msgstr "[ARG...]" #: subprojects/extensions-tool/src/main.c:334 msgid "Commands:" msgstr "Perintah:" #: subprojects/extensions-tool/src/main.c:335 msgid "Print help" msgstr "Cetak bantuan" #: subprojects/extensions-tool/src/main.c:337 msgid "Enable extension" msgstr "Aktifkan ekstensi" #: subprojects/extensions-tool/src/main.c:338 msgid "Disable extension" msgstr "Nonaktifkan ekstensi" #: subprojects/extensions-tool/src/main.c:339 msgid "Reset extension" msgstr "Atur ulang ekstensi" #: subprojects/extensions-tool/src/main.c:340 msgid "Uninstall extension" msgstr "Hapus ekstensi" #: subprojects/extensions-tool/src/main.c:341 msgid "List extensions" msgstr "Daftar ekstensi" #: subprojects/extensions-tool/src/main.c:342 #: subprojects/extensions-tool/src/main.c:343 msgid "Show extension info" msgstr "Tampilkan info ekstensi" #: subprojects/extensions-tool/src/main.c:344 msgid "Open extension preferences" msgstr "Buka preferensi ekstensi" #: subprojects/extensions-tool/src/main.c:345 msgid "Create extension" msgstr "Buat ekstensi" #: subprojects/extensions-tool/src/main.c:346 msgid "Package extension" msgstr "Ekstensi Paket" #: subprojects/extensions-tool/src/main.c:347 msgid "Install extension bundle" msgstr "Pasang bundel ekstensi" #: subprojects/extensions-tool/src/main.c:349 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "Gunakan \"%s\" untuk mendapatkan bantuan terperinci.\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "Polos" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "Ekstensi kosong" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "Indikator" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "Tambahkan ikon ke bilah atas" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:4 msgid "Quick Settings Item" msgstr "Butir Pengaturan Cepat" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:5 msgid "Add an item to quick settings" msgstr "Tambah butir ke pengaturan cepat" #. translators: #. * The device has been disabled #: subprojects/gvc/gvc-mixer-control.c:1872 msgid "Disabled" msgstr "Dinonaktifkan" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1879 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u Keluaran" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1889 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u Masukan" #: subprojects/gvc/gvc-mixer-control.c:2872 msgid "System Sounds" msgstr "Suara Sistem" 0707010000023D000081A40000000000000000000000016712993F0001302A000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/ie.po# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: gnome-shell\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" "POT-Creation-Date: 2022-12-12 06:33+0700\n" "PO-Revision-Date: 2022-12-12 06:49+0700\n" "Last-Translator: OIS \n" "Language-Team: IE\n" "Language: ie\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 1.8.12\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "Lansatores" #: data/50-gnome-shell-launchers.xml:10 #, fuzzy msgid "Activate favorite application 1" msgstr "Ear al carte %1" #: data/50-gnome-shell-launchers.xml:14 #, fuzzy msgid "Activate favorite application 2" msgstr "Rapid-taste «%1» in li application «%2» por li action «%3»\n" #: data/50-gnome-shell-launchers.xml:18 #, fuzzy msgid "Activate favorite application 3" msgstr "Rapid-taste «%1» in li application «%2» por li action «%3»\n" #: data/50-gnome-shell-launchers.xml:22 #, fuzzy msgid "Activate favorite application 4" msgstr "Parametres del Calendare de Xfce 4 (Orage)" #: data/50-gnome-shell-launchers.xml:26 #, fuzzy msgid "Activate favorite application 5" msgstr "Monstra icones de _applicationes in menú" #: data/50-gnome-shell-launchers.xml:30 #, fuzzy msgid "Activate favorite application 6" msgstr "Monstra icones de _applicationes in menú" #: data/50-gnome-shell-launchers.xml:34 #, fuzzy msgid "Activate favorite application 7" msgstr "Monstra icones de _applicationes in menú" #: data/50-gnome-shell-launchers.xml:38 #, fuzzy msgid "Activate favorite application 8" msgstr "Monstra icones de _applicationes in menú" #: data/50-gnome-shell-launchers.xml:42 #, fuzzy msgid "Activate favorite application 9" msgstr "Monstra icones de _applicationes in menú" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2072 msgid "Screenshots" msgstr "Capturas de ecran" #: data/50-gnome-shell-screenshots.xml:9 #: data/org.gnome.shell.gschema.xml.in:234 #, fuzzy msgid "Take a screenshot interactively" msgstr "Capter li tot ecran" #: data/50-gnome-shell-screenshots.xml:12 #: data/org.gnome.shell.gschema.xml.in:246 msgid "Take a screenshot" msgstr "Capter li ecran" #: data/50-gnome-shell-screenshots.xml:15 #: data/org.gnome.shell.gschema.xml.in:242 msgid "Take a screenshot of a window" msgstr "Capter un fenestre" #: data/50-gnome-shell-screenshots.xml:18 #: data/org.gnome.shell.gschema.xml.in:238 #, fuzzy msgid "Record a screencast interactively" msgstr "Serchar por dominias e hostes" #: data/50-gnome-shell-system.xml:6 msgid "System" msgstr "Sistema" #: data/50-gnome-shell-system.xml:9 #, fuzzy msgid "Show the notification list" msgstr "Monstrar un notification" #: data/50-gnome-shell-system.xml:12 #, fuzzy msgid "Focus the active notification" msgstr "Monstrar li notification sur li activ monitor." #: data/50-gnome-shell-system.xml:15 #, fuzzy msgid "Show the overview" msgstr "Compendie" #: data/50-gnome-shell-system.xml:18 #, fuzzy msgid "Show all applications" msgstr "Monstrar omni applicationes" #: data/50-gnome-shell-system.xml:21 #, fuzzy msgid "Open the application menu" msgstr "Aperter li menú de application" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "Shell GNOME" #: data/org.gnome.Shell.desktop.in.in:5 #, fuzzy msgid "Window management and application launching" msgstr "Control de fenestres" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" #: data/org.gnome.shell.gschema.xml.in:16 #, fuzzy msgid "UUIDs of extensions to enable" msgstr "_Extensiones:" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" #: data/org.gnome.shell.gschema.xml.in:26 #, fuzzy msgid "UUIDs of extensions to force disabling" msgstr "Extensiones" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" #: data/org.gnome.shell.gschema.xml.in:37 #, fuzzy msgid "Disable user extensions" msgstr "Desactivar omni _extensiones" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" #: data/org.gnome.shell.gschema.xml.in:45 msgid "Disables the validation of extension version compatibility" msgstr "" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" #: data/org.gnome.shell.gschema.xml.in:54 msgid "List of desktop file IDs for favorite applications" msgstr "" #: data/org.gnome.shell.gschema.xml.in:55 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" #: data/org.gnome.shell.gschema.xml.in:62 #, fuzzy msgid "History for command (Alt-F2) dialog" msgstr "_Gardar correspondenties in li diarium" #. Translators: looking glass is a debugger and inspector tool, see https://wiki.gnome.org/Projects/GnomeShell/LookingGlass #: data/org.gnome.shell.gschema.xml.in:67 msgid "History for the looking glass dialog" msgstr "" #: data/org.gnome.shell.gschema.xml.in:71 msgid "Always show the “Log out” menu item in the user menu." msgstr "" #: data/org.gnome.shell.gschema.xml.in:72 msgid "" "This key overrides the automatic hiding of the “Log out” menu item in single-" "user, single-session situations." msgstr "" #: data/org.gnome.shell.gschema.xml.in:79 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" #: data/org.gnome.shell.gschema.xml.in:80 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" #: data/org.gnome.shell.gschema.xml.in:89 msgid "The last selected non-default power profile" msgstr "" #: data/org.gnome.shell.gschema.xml.in:90 msgid "" "Some systems support more than two power profiles. In order to still support " "toggling between two profiles, this key records the last selected non-" "default profile." msgstr "" #: data/org.gnome.shell.gschema.xml.in:98 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "" #: data/org.gnome.shell.gschema.xml.in:99 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can " "be used to effectively disable the dialog." msgstr "" #: data/org.gnome.shell.gschema.xml.in:132 #, fuzzy msgid "Layout of the app picker" msgstr "_Arangeament" #: data/org.gnome.shell.gschema.xml.in:133 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" msgstr "" #: data/org.gnome.shell.gschema.xml.in:148 #, fuzzy msgid "Keybinding to open the application menu" msgstr "Aperter li menú" #: data/org.gnome.shell.gschema.xml.in:149 #, fuzzy msgid "Keybinding to open the application menu." msgstr "Aperter li menú" #: data/org.gnome.shell.gschema.xml.in:155 #: data/org.gnome.shell.gschema.xml.in:162 #, fuzzy msgid "Keybinding to shift between overview states" msgstr "Aperter _per..." #: data/org.gnome.shell.gschema.xml.in:156 msgid "Keybinding to shift between session, window picker and app grid" msgstr "" #: data/org.gnome.shell.gschema.xml.in:163 msgid "Keybinding to shift between app grid, window picker and session" msgstr "" #: data/org.gnome.shell.gschema.xml.in:169 #, fuzzy msgid "Keybinding to open the “Show Applications” view" msgstr "Monstra icones de _applicationes in menú" #: data/org.gnome.shell.gschema.xml.in:170 #, fuzzy msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "Monstra icones de _applicationes in menú" #: data/org.gnome.shell.gschema.xml.in:177 #, fuzzy msgid "Keybinding to open the overview" msgstr "Compendie" #: data/org.gnome.shell.gschema.xml.in:178 msgid "Keybinding to open the Activities Overview." msgstr "" #: data/org.gnome.shell.gschema.xml.in:184 msgid "Keybinding to toggle the visibility of the notification list" msgstr "" #: data/org.gnome.shell.gschema.xml.in:185 msgid "Keybinding to toggle the visibility of the notification list." msgstr "" #: data/org.gnome.shell.gschema.xml.in:191 #, fuzzy msgid "Keybinding to focus the active notification" msgstr "Monstrar li notification sur li activ monitor." #: data/org.gnome.shell.gschema.xml.in:192 #, fuzzy msgid "Keybinding to focus the active notification." msgstr "Monstrar li notification sur li activ monitor." #: data/org.gnome.shell.gschema.xml.in:198 #, fuzzy #| msgid "Show Applications" msgid "Switch to application 1" msgstr "Cambiar un application" #: data/org.gnome.shell.gschema.xml.in:202 #, fuzzy #| msgid "Show Applications" msgid "Switch to application 2" msgstr "Cambiar un application" #: data/org.gnome.shell.gschema.xml.in:206 #, fuzzy #| msgid "Show Applications" msgid "Switch to application 3" msgstr "Ear al playlist 3" #: data/org.gnome.shell.gschema.xml.in:210 #, fuzzy #| msgid "Show Applications" msgid "Switch to application 4" msgstr "Ear al playlist 4" #: data/org.gnome.shell.gschema.xml.in:214 #, fuzzy #| msgid "Show Applications" msgid "Switch to application 5" msgstr "Cambiar un application" #: data/org.gnome.shell.gschema.xml.in:218 #, fuzzy #| msgid "Show Applications" msgid "Switch to application 6" msgstr "Activar labor-spacie 6" #: data/org.gnome.shell.gschema.xml.in:222 #, fuzzy #| msgid "Show Applications" msgid "Switch to application 7" msgstr "Activar labor-spacie 7" #: data/org.gnome.shell.gschema.xml.in:226 #, fuzzy #| msgid "Show Applications" msgid "Switch to application 8" msgstr "Activar labor-spacie 8" #: data/org.gnome.shell.gschema.xml.in:230 #, fuzzy #| msgid "Show Applications" msgid "Switch to application 9" msgstr "Activar labor-spacie 9" #: data/org.gnome.shell.gschema.xml.in:255 #: data/org.gnome.shell.gschema.xml.in:282 #, fuzzy msgid "Limit switcher to current workspace." msgstr "Monstra _nómines de labor-spacies" #: data/org.gnome.shell.gschema.xml.in:256 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" #: data/org.gnome.shell.gschema.xml.in:273 #, fuzzy msgid "The application icon mode." msgstr "Null icone" #: data/org.gnome.shell.gschema.xml.in:274 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-" "only” (shows only the application icon) or “both”." msgstr "" #: data/org.gnome.shell.gschema.xml.in:283 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" #: data/org.gnome.shell.gschema.xml.in:293 msgid "Locations" msgstr "Localisationes" #: data/org.gnome.shell.gschema.xml.in:294 #, fuzzy msgid "The locations to show in world clocks" msgstr "Monstrar altri localisationes" #: data/org.gnome.shell.gschema.xml.in:304 #, fuzzy msgid "Automatic location" msgstr "Ne automaticmen: " #: data/org.gnome.shell.gschema.xml.in:305 #, fuzzy msgid "Whether to fetch the current location or not" msgstr "Si it es activ, li images va esser obtenet de un lontan localisation" #: data/org.gnome.shell.gschema.xml.in:312 msgid "Location" msgstr "Localisation" #: data/org.gnome.shell.gschema.xml.in:313 #, fuzzy msgid "The location for which to show a forecast" msgstr "Monstrar li localisation del apuntator pos un presse de taste" #: data/org.gnome.shell.gschema.xml.in:325 #, fuzzy msgid "Attach modal dialog to the parent window" msgstr "Fenestre superior del dialog" #: data/org.gnome.shell.gschema.xml.in:326 #: data/org.gnome.shell.gschema.xml.in:335 #: data/org.gnome.shell.gschema.xml.in:343 #: data/org.gnome.shell.gschema.xml.in:351 #: data/org.gnome.shell.gschema.xml.in:359 msgid "" "This key overrides the key in org.gnome.mutter when running GNOME Shell." msgstr "" #: data/org.gnome.shell.gschema.xml.in:334 msgid "Enable edge tiling when dropping windows on screen edges" msgstr "" #: data/org.gnome.shell.gschema.xml.in:342 #, fuzzy msgid "Workspaces are managed dynamically" msgstr "Dina_mic titul:" #: data/org.gnome.shell.gschema.xml.in:350 #, fuzzy msgid "Workspaces only on primary monitor" msgstr "Primari monitor" #: data/org.gnome.shell.gschema.xml.in:358 msgid "Delay focus changes in mouse mode until the pointer stops moving" msgstr "" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 #, fuzzy msgid "Network Login" msgstr "Inregistration" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:144 #, fuzzy msgid "Something’s gone wrong" msgstr "Un errore evenit" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "Detallies technic" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "Hem-págine" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 #, fuzzy msgid "Visit extension homepage" msgstr "Visitar li hem-págine del componente" #: js/gdm/authPrompt.js:144 js/ui/audioDeviceSelection.js:61 #: js/ui/components/networkAgent.js:109 js/ui/components/polkitAgent.js:141 #: js/ui/endSessionDialog.js:440 js/ui/extensionDownloader.js:223 #: js/ui/shellMountOperation.js:377 js/ui/shellMountOperation.js:387 #: subprojects/extensions-app/js/main.js:173 msgid "Cancel" msgstr "Anullar" #: js/gdm/authPrompt.js:307 js/ui/components/networkAgent.js:209 #: js/ui/components/networkAgent.js:229 js/ui/components/networkAgent.js:261 #: js/ui/components/networkAgent.js:294 js/ui/components/networkAgent.js:333 #: js/ui/components/networkAgent.js:346 js/ui/components/polkitAgent.js:283 #: js/ui/shellMountOperation.js:327 msgid "Password" msgstr "Contrasigne" #: js/gdm/loginDialog.js:317 #, fuzzy msgid "Choose Session" msgstr "Selecter un session" #: js/gdm/loginDialog.js:462 msgid "Not listed?" msgstr "Ne es in li liste?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:930 #, javascript-format msgid "(e.g., user or %s)" msgstr "(p.ex. usator o %s)" #: js/gdm/loginDialog.js:935 js/ui/components/networkAgent.js:253 #: js/ui/components/networkAgent.js:288 js/ui/components/networkAgent.js:322 msgid "Username" msgstr "Nómine de usator" #: js/gdm/loginDialog.js:1258 #, fuzzy msgid "Login Window" msgstr "Fenestre de inicie" #: js/gdm/util.js:431 msgid "Authentication error" msgstr "Errore de autentication" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:603 #, fuzzy msgid "(or swipe finger across reader)" msgstr "Trena un fingre trans li letor" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:608 #, fuzzy msgid "(or place finger on reader)" msgstr "Posi un fingre sur li letor" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:84 msgctxt "search-result" msgid "Power Off" msgstr "Extinter" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:87 msgid "power off;shutdown;halt;stop" msgstr "" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:92 msgctxt "search-result" msgid "Restart" msgstr "Restartar" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:95 #, fuzzy msgid "reboot;restart;" msgstr "_Reiniciar" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:100 msgctxt "search-result" msgid "Lock Screen" msgstr "Serrar li ecran" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:103 #, fuzzy msgid "lock screen" msgstr "Serrar li ecran" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:108 msgctxt "search-result" msgid "Log Out" msgstr "Cluder li session" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:111 #, fuzzy msgid "logout;log out;sign off" msgstr "Cluder li session sin monstrar li dialog de clusion" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:116 msgctxt "search-result" msgid "Suspend" msgstr "Suspender" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:119 #, fuzzy #| msgid "Suspend" msgid "suspend;sleep" msgstr "Suspender" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:124 msgctxt "search-result" msgid "Switch User" msgstr "Cambiar li usator" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:127 #, fuzzy #| msgid "Switch User" msgid "switch user" msgstr "Cambiar li usator" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:134 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:139 #, fuzzy msgctxt "search-result" msgid "Take a Screenshot" msgstr "Capter li ecran" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:142 msgid "screenshot;screencast;snip;capture;record" msgstr "" #: js/misc/systemActions.js:242 #, fuzzy msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "Rotation" #: js/misc/systemActions.js:243 #, fuzzy msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "Serrar li ecran" #: js/misc/util.js:129 msgid "Command not found" msgstr "Comande ne esset trovat" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:166 #, fuzzy msgid "Could not parse command:" msgstr "Ne successat analisar parametres de linea de comandes: %s\n" #: js/misc/util.js:174 #, fuzzy, javascript-format msgid "Execution of “%s” failed:" msgstr "Execution de «%s» ne successat:" #: js/misc/util.js:191 msgid "Just now" msgstr "Nu" #: js/misc/util.js:193 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "ante %d minute" msgstr[1] "ante %d minutes" #: js/misc/util.js:197 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "ante %d hor" msgstr[1] "ante %d hores" #: js/misc/util.js:201 js/ui/dateMenu.js:167 msgid "Yesterday" msgstr "Yer" #: js/misc/util.js:203 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d die" msgstr[1] "%d dies" #: js/misc/util.js:207 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "ante %d semane" msgstr[1] "ante %d semanes" #: js/misc/util.js:211 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "ante %d mensu" msgstr[1] "ante %d mensus" #: js/misc/util.js:214 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "ante %d annu" msgstr[1] "ante %d annus" #. Translators: Time in 24h format #: js/misc/util.js:247 msgid "%H∶%M" msgstr "%H:%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/util.js:253 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "Yer a %H:%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/util.js:259 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/util.js:265 #, fuzzy, no-c-format msgid "%B %-d, %H∶%M" msgstr "%e %b, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/util.js:271 #, fuzzy, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%d %b %y, %H:%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/util.js:276 #, fuzzy msgid "%l∶%M %p" msgstr "%l:%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/util.js:282 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "Yer, %l:%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/util.js:288 #, fuzzy, no-c-format msgid "%A, %l∶%M %p" msgstr "%x, %l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/util.js:294 #, fuzzy, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%e %b, %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/util.js:300 #, fuzzy, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%-e %b %Y %l:%M %p" #: js/portalHelper/main.js:55 #, fuzzy msgid "Hotspot Login" msgstr "Hotspot" #: js/portalHelper/main.js:108 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:39 js/ui/status/location.js:350 #, fuzzy msgid "Deny Access" msgstr "Refusar:" #: js/ui/accessDialog.js:40 js/ui/status/location.js:355 #, fuzzy msgid "Grant Access" msgstr "Sin accesse" #: js/ui/appDisplay.js:1728 msgid "Unnamed Folder" msgstr "Fólder sin nómine" #: js/ui/appFavorites.js:166 #, fuzzy, javascript-format msgid "%s has been pinned to the dash." msgstr "Li bux «%s» sta removet" #: js/ui/appFavorites.js:199 #, fuzzy, javascript-format msgid "%s has been unpinned from the dash." msgstr "Li aparate «%s» ha esset securmen removet ex li sistema. " #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:46 msgid "Open Windows" msgstr "Apertet fenestres" #: js/ui/appMenu.js:54 msgid "New Window" msgstr "Nov fenestre" #: js/ui/appMenu.js:81 msgid "Show Details" msgstr "Monstrar detallies" #: js/ui/appMenu.js:97 msgid "Quit" msgstr "Salir" #: js/ui/appMenu.js:157 js/ui/dash.js:249 msgid "Unpin" msgstr "Defixar" #: js/ui/appMenu.js:158 #, fuzzy msgid "Pin to Dash" msgstr "PIN:" #: js/ui/appMenu.js:175 #, fuzzy msgid "Launch using Integrated Graphics Card" msgstr "Lansar usante li separat grafic carte" #: js/ui/appMenu.js:176 #, fuzzy msgid "Launch using Discrete Graphics Card" msgstr "Lansar usante li separat grafic carte" #: js/ui/audioDeviceSelection.js:41 msgid "Select Audio Device" msgstr "Selecter un audioaparate" #: js/ui/audioDeviceSelection.js:56 js/ui/status/volume.js:63 msgid "Sound Settings" msgstr "Parametres de son" #: js/ui/audioDeviceSelection.js:69 msgid "Headphones" msgstr "Escutatores" #: js/ui/audioDeviceSelection.js:71 #, fuzzy msgid "Headset" msgstr "Garnitura" #: js/ui/audioDeviceSelection.js:73 js/ui/status/volume.js:322 msgid "Microphone" msgstr "Microfon" #: js/ui/backgroundMenu.js:14 #, fuzzy msgid "Change Background…" msgstr "Alterar li _funde" #: js/ui/backgroundMenu.js:16 msgid "Display Settings" msgstr "Parametres de monitor" #: js/ui/backgroundMenu.js:17 #: subprojects/extensions-app/data/ui/extension-row.ui:122 msgid "Settings" msgstr "Parametres" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:35 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:61 msgctxt "grid sunday" msgid "S" msgstr "So" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:63 msgctxt "grid monday" msgid "M" msgstr "Lu" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:65 msgctxt "grid tuesday" msgid "T" msgstr "Ma" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:67 msgctxt "grid wednesday" msgid "W" msgstr "Me" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:69 msgctxt "grid thursday" msgid "T" msgstr "Jo" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:71 msgctxt "grid friday" msgid "F" msgstr "Ve" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:73 msgctxt "grid saturday" msgid "S" msgstr "Sa" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:414 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:424 msgid "%OB %Y" msgstr "%B %Y" #: js/ui/calendar.js:485 msgid "Previous month" msgstr "Li precedent mensu" #: js/ui/calendar.js:503 msgid "Next month" msgstr "Li sequent mensu" #: js/ui/calendar.js:654 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:713 msgid "Week %V" msgstr "Semane %V" #: js/ui/calendar.js:892 msgid "No Notifications" msgstr "Null notificationes" #: js/ui/calendar.js:949 msgid "Do Not Disturb" msgstr "Ne disturbar" #: js/ui/calendar.js:970 msgid "Clear" msgstr "Vacuar" #. Translators: %s is an application name #: js/ui/closeDialog.js:40 #, fuzzy, javascript-format msgid "“%s” is not responding." msgstr "%s ne responde." #: js/ui/closeDialog.js:41 #, fuzzy msgid "" "You may choose to wait a short while for it to continue or force the " "application to quit entirely." msgstr "" "Vu posse atender un moment por permisser it continuar, o terminar li " "application completmen." #: js/ui/closeDialog.js:69 msgid "Force Quit" msgstr "Terminar" #: js/ui/closeDialog.js:74 msgid "Wait" msgstr "Atender" #: js/ui/components/automountManager.js:84 #, fuzzy msgid "External drive connected" msgstr "Conexet" #: js/ui/components/automountManager.js:96 #, fuzzy msgid "External drive disconnected" msgstr "Extern" #: js/ui/components/automountManager.js:207 #, fuzzy msgid "Unable to unlock volume" msgstr "Ne posset desmonter li volume" #: js/ui/components/automountManager.js:208 msgid "The installed udisks version does not support the PIM setting" msgstr "" #: js/ui/components/autorunManager.js:316 #, javascript-format msgid "Open with %s" msgstr "Aperter per %s" #: js/ui/components/networkAgent.js:91 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router." msgstr "" #: js/ui/components/networkAgent.js:103 js/ui/status/network.js:436 msgid "Connect" msgstr "Connexer" #: js/ui/components/networkAgent.js:218 msgid "Key" msgstr "Clave" #: js/ui/components/networkAgent.js:269 js/ui/components/networkAgent.js:308 msgid "Private key password" msgstr "Contrasigne del clave privat" #: js/ui/components/networkAgent.js:302 msgid "Identity" msgstr "Identitá" #: js/ui/components/networkAgent.js:328 msgid "Service" msgstr "Servicie" #: js/ui/components/networkAgent.js:366 js/ui/components/networkAgent.js:402 #: js/ui/components/networkAgent.js:747 js/ui/components/networkAgent.js:768 msgid "Authentication required" msgstr "Autentication es besonat" #: js/ui/components/networkAgent.js:367 js/ui/components/networkAgent.js:748 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network " "“%s”." msgstr "" #: js/ui/components/networkAgent.js:371 js/ui/components/networkAgent.js:752 #, fuzzy msgid "Wired 802.1X authentication" msgstr "Autentication" #: js/ui/components/networkAgent.js:374 msgid "Network name" msgstr "Nómine de rete" #: js/ui/components/networkAgent.js:382 js/ui/components/networkAgent.js:756 msgid "DSL authentication" msgstr "Autentication DSL" #: js/ui/components/networkAgent.js:389 js/ui/components/networkAgent.js:761 #, fuzzy msgid "PIN code required" msgstr "Intra un code PIN" #: js/ui/components/networkAgent.js:390 js/ui/components/networkAgent.js:762 msgid "PIN code is needed for the mobile broadband device" msgstr "" #: js/ui/components/networkAgent.js:392 msgid "PIN" msgstr "PIN" #: js/ui/components/networkAgent.js:403 js/ui/components/networkAgent.js:753 #: js/ui/components/networkAgent.js:757 js/ui/components/networkAgent.js:769 #: js/ui/components/networkAgent.js:773 #, fuzzy, javascript-format msgid "A password is required to connect to “%s”." msgstr "Un nómine e contrasigne es besonat por li accesse a «%s»" #: js/ui/components/networkAgent.js:736 msgid "Network Manager" msgstr "Gerente de rete" #: js/ui/components/networkAgent.js:772 msgid "VPN password" msgstr "Contrasigne de VPN" #: js/ui/components/polkitAgent.js:41 msgid "Authentication Required" msgstr "Autentication es postulat" #: js/ui/components/polkitAgent.js:81 msgid "Administrator" msgstr "Administrator" #: js/ui/components/polkitAgent.js:146 msgid "Authenticate" msgstr "Autenticar" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:260 js/ui/shellMountOperation.js:403 msgid "Sorry, that didn’t work. Please try again." msgstr "" #: js/ui/components/telepathyClient.js:828 #, fuzzy, javascript-format msgid "%s is now known as %s" msgstr "%s %s es disponibil nu" #: js/ui/ctrlAltTab.js:22 js/ui/overviewControls.js:417 msgid "Windows" msgstr "Fenestres" #: js/ui/dash.js:205 js/ui/dash.js:251 msgid "Show Applications" msgstr "Monstrar applicationes" #. Translators: this is the name of the dock/favorites area on #. the left of the overview #: js/ui/dash.js:398 #, fuzzy msgid "Dash" msgstr "Simbol en-dash --" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:83 msgid "%B %-d %Y" msgstr "%d %B %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:90 msgid "%A %B %e %Y" msgstr "%A, %-e %b %Y" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:156 msgctxt "calendar heading" msgid "%B %-d" msgstr "%e %b" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:159 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%d %B %Y" #: js/ui/dateMenu.js:165 msgid "Today" msgstr "Hodie" #: js/ui/dateMenu.js:169 msgid "Tomorrow" msgstr "Deman" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:200 msgctxt "event list time" msgid "All Day" msgstr "Li tot die" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:222 msgid "%m/%d" msgstr "%d.%m" #: js/ui/dateMenu.js:273 msgid "No Events" msgstr "Null evenimentes" #: js/ui/dateMenu.js:396 #, fuzzy msgid "Add world clocks…" msgstr "Horloges" #: js/ui/dateMenu.js:397 #, fuzzy msgid "World Clocks" msgstr "Horloges" #: js/ui/dateMenu.js:681 #, fuzzy #| msgid "Searching…" msgid "Loading…" msgstr "Cargante..." #: js/ui/dateMenu.js:691 #, fuzzy msgid "Go online for weather information" msgstr "Te_mpe" #: js/ui/dateMenu.js:693 #, fuzzy msgid "Weather information is currently unavailable" msgstr "Te_mpe" #: js/ui/dateMenu.js:703 msgid "Weather" msgstr "Tempe" #: js/ui/dateMenu.js:705 #, fuzzy msgid "Select weather location…" msgstr "Tempe" #: js/ui/endSessionDialog.js:41 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "Cluder li session de %s" #: js/ui/endSessionDialog.js:42 msgctxt "title" msgid "Log Out" msgstr "Cluder li session" #: js/ui/endSessionDialog.js:45 #, javascript-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "" msgstr[1] "" #: js/ui/endSessionDialog.js:51 #, javascript-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "" msgstr[1] "" #: js/ui/endSessionDialog.js:58 msgctxt "button" msgid "Log Out" msgstr "Cluder li session" #: js/ui/endSessionDialog.js:64 js/ui/status/system.js:167 msgctxt "title" msgid "Power Off" msgstr "Extintion" #: js/ui/endSessionDialog.js:65 #, fuzzy msgctxt "title" msgid "Install Updates & Power Off" msgstr "Installar actualisamentes" #: js/ui/endSessionDialog.js:68 #, javascript-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "" msgstr[1] "" #: js/ui/endSessionDialog.js:72 js/ui/endSessionDialog.js:91 #, fuzzy msgctxt "checkbox" msgid "Install pending software updates" msgstr "Installar actualisamentes" #: js/ui/endSessionDialog.js:76 msgctxt "button" msgid "Power Off" msgstr "Extinter" #: js/ui/endSessionDialog.js:83 msgctxt "title" msgid "Restart" msgstr "Restarta" #: js/ui/endSessionDialog.js:84 #, fuzzy msgctxt "title" msgid "Install Updates & Restart" msgstr "Installar actualisamentes" #: js/ui/endSessionDialog.js:87 #, javascript-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "" msgstr[1] "" #: js/ui/endSessionDialog.js:95 msgctxt "button" msgid "Restart" msgstr "Restartar" #: js/ui/endSessionDialog.js:103 #, fuzzy msgctxt "title" msgid "Restart & Install Updates" msgstr "Installar actualisamentes" #: js/ui/endSessionDialog.js:106 #, javascript-format msgid "The system will automatically restart and install updates in %d second." msgid_plural "" "The system will automatically restart and install updates in %d seconds." msgstr[0] "" msgstr[1] "" #: js/ui/endSessionDialog.js:113 js/ui/endSessionDialog.js:134 msgctxt "button" msgid "Restart & Install" msgstr "Restartar e installar" #: js/ui/endSessionDialog.js:115 #, fuzzy msgctxt "button" msgid "Install & Power Off" msgstr "Restartar e installar" #: js/ui/endSessionDialog.js:116 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "" #: js/ui/endSessionDialog.js:123 #, fuzzy msgctxt "title" msgid "Restart & Install Upgrade" msgstr "Restartar e _installar" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:128 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" #: js/ui/endSessionDialog.js:285 msgid "Low battery power: please plug in before installing updates." msgstr "" #: js/ui/endSessionDialog.js:294 msgid "Some applications are busy or have unsaved work" msgstr "" #: js/ui/endSessionDialog.js:299 #, fuzzy msgid "Other users are logged in" msgstr "" "Altri usatores have sessiones apert, extintion nu va terminar anc ti " "sessiones." #: js/ui/endSessionDialog.js:470 #, fuzzy msgctxt "button" msgid "Boot Options" msgstr "Inicialisation:" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:675 #, javascript-format msgid "%s (remote)" msgstr "%s (lontan)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:678 #, javascript-format msgid "%s (console)" msgstr "%s (console)" #: js/ui/extensionDownloader.js:227 msgid "Install" msgstr "Installar" #: js/ui/extensionDownloader.js:233 msgid "Install Extension" msgstr "Installar un extension" #: js/ui/extensionDownloader.js:234 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "" #: js/ui/extensionSystem.js:270 #, fuzzy msgid "Extension Updates Available" msgstr "Actualisamentes es disponibil" #: js/ui/extensionSystem.js:271 #, fuzzy msgid "Extension updates are ready to be installed." msgstr "Li bux «%s» ha esset installat e es pret a usa" #: js/ui/inhibitShortcutsDialog.js:75 #, fuzzy msgid "Allow inhibiting shortcuts" msgstr "Rapid-tastes" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:78 #, javascript-format msgid "The application %s wants to inhibit shortcuts" msgstr "" #: js/ui/inhibitShortcutsDialog.js:79 #, fuzzy msgid "An application wants to inhibit shortcuts" msgstr "Modificar parametres de tastatura a rapid-tastes de applicationes" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:86 #, javascript-format msgid "You can restore shortcuts by pressing %s." msgstr "" #: js/ui/inhibitShortcutsDialog.js:97 msgid "Deny" msgstr "Refusar" #: js/ui/inhibitShortcutsDialog.js:106 msgid "Allow" msgstr "Permisser" #: js/ui/kbdA11yDialog.js:32 #, fuzzy msgid "Slow Keys Turned On" msgstr "Avise de lent tastes" #: js/ui/kbdA11yDialog.js:33 #, fuzzy msgid "Slow Keys Turned Off" msgstr "Bluetooth desactivat" #: js/ui/kbdA11yDialog.js:34 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" #: js/ui/kbdA11yDialog.js:40 #, fuzzy msgid "Sticky Keys Turned On" msgstr "Avise de restant tastes" #: js/ui/kbdA11yDialog.js:41 #, fuzzy msgid "Sticky Keys Turned Off" msgstr "Bluetooth desactivat" #: js/ui/kbdA11yDialog.js:43 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" #: js/ui/kbdA11yDialog.js:55 #, fuzzy msgid "Leave On" msgstr "Lassar it" #: js/ui/kbdA11yDialog.js:55 msgid "Turn On" msgstr "Activar" #: js/ui/kbdA11yDialog.js:65 js/ui/status/network.js:447 msgid "Turn Off" msgstr "Desactivar" #: js/ui/kbdA11yDialog.js:65 #, fuzzy msgid "Leave Off" msgstr "Lassar it" #: js/ui/keyboard.js:219 msgid "Region & Language Settings" msgstr "Parametres de lingue e region" #: js/ui/lookingGlass.js:713 msgid "No extensions installed" msgstr "Null extensiones installat" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:774 #, javascript-format msgid "%s has not emitted any errors." msgstr "" #: js/ui/lookingGlass.js:780 msgid "Hide Errors" msgstr "Celar errores" #: js/ui/lookingGlass.js:784 js/ui/lookingGlass.js:857 msgid "Show Errors" msgstr "Monstrar errores" #: js/ui/lookingGlass.js:793 msgid "Enabled" msgstr "Permisset" #. translators: #. * The device has been disabled #: js/ui/lookingGlass.js:796 subprojects/gvc/gvc-mixer-control.c:1900 msgid "Disabled" msgstr "Despermisset" #: js/ui/lookingGlass.js:798 msgid "Error" msgstr "Errore" #: js/ui/lookingGlass.js:800 msgid "Out of date" msgstr "Obsolet" #: js/ui/lookingGlass.js:802 msgid "Downloading" msgstr "Descarga" #: js/ui/lookingGlass.js:835 msgid "View Source" msgstr "Vider li fonte" #: js/ui/lookingGlass.js:846 msgid "Web Page" msgstr "Págine Web" #: js/ui/main.js:286 #, fuzzy msgid "System was put in unsafe mode" msgstr "Mode de somnie del sistema:" #: js/ui/main.js:287 msgid "Applications now have unrestricted access" msgstr "" #: js/ui/main.js:288 js/ui/overview.js:58 msgid "Undo" msgstr "Defar" #: js/ui/main.js:334 #, fuzzy msgid "Logged in as a privileged user" msgstr "Avise: %d usator have un session ancor apert." #: js/ui/main.js:335 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" #: js/ui/main.js:384 #, fuzzy msgid "Screen Lock disabled" msgstr "Serrar li ecran" #: js/ui/main.js:385 msgid "Screen Locking requires the GNOME display manager." msgstr "" #: js/ui/messageTray.js:1418 msgid "System Information" msgstr "Information del sistema" #: js/ui/mpris.js:202 msgid "Unknown artist" msgstr "Ínconosset artist" #: js/ui/mpris.js:212 msgid "Unknown title" msgstr "Ínconosset titul" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:327 msgid "Type to search" msgstr "Tippa por serchar" #: js/ui/overviewControls.js:405 msgid "Applications" msgstr "Applicationes" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:71 msgid "Overview" msgstr "Compendie" #: js/ui/padOsd.js:100 msgid "New shortcut…" msgstr "Nov rapid-taste…" #: js/ui/padOsd.js:154 #, fuzzy #| msgid "Applications" msgid "Application defined" msgstr "Null marca-págines definit" #: js/ui/padOsd.js:155 #, fuzzy msgid "Show on-screen help" msgstr "Monstrar un baniere de inicie" #: js/ui/padOsd.js:156 msgid "Switch monitor" msgstr "Cambiar li monitor" #: js/ui/padOsd.js:157 #, fuzzy msgid "Assign keystroke" msgstr "Assignar" #: js/ui/padOsd.js:226 msgid "Done" msgstr "Finit" #: js/ui/padOsd.js:743 msgid "Edit…" msgstr "Modificar…" #: js/ui/padOsd.js:785 js/ui/padOsd.js:902 msgid "None" msgstr "Null" #: js/ui/padOsd.js:856 #, fuzzy msgid "Press a button to configure" msgstr "Presse un buton de mus " #: js/ui/padOsd.js:857 #, fuzzy msgid "Press Esc to exit" msgstr "Esc" #: js/ui/padOsd.js:860 #, fuzzy msgid "Press any key to exit" msgstr "Li taste de captura del ecran:" #: js/ui/panel.js:244 msgid "Activities" msgstr "Activitás" #: js/ui/panel.js:338 msgctxt "System menu in the top bar" msgid "System" msgstr "Sistema" #: js/ui/panel.js:457 #, fuzzy msgid "Top Bar" msgstr "\\bar{}" #: js/ui/runDialog.js:58 msgid "Run a Command" msgstr "Lansar un comande" #: js/ui/runDialog.js:73 msgid "Press ESC to close" msgstr "Tippa Esc por cluder" #: js/ui/runDialog.js:238 #, fuzzy msgid "Restart is not available on Wayland" msgstr "Wayland" #: js/ui/runDialog.js:243 msgid "Restarting…" msgstr "Restartante..." #: js/ui/screenShield.js:235 #, fuzzy msgid "GNOME needs to lock the screen" msgstr "Serrar li ecran _ante que somniar" #. We could not become modal, so we can't activate the #. screenshield. The user is probably very upset at this #. point, but any application using global grabs is broken #. Just tell them to stop using this app #. #. XXX: another option is to kick the user into the gdm login #. screen, where we're not affected by grabs #: js/ui/screenShield.js:275 js/ui/screenShield.js:652 #, fuzzy msgid "Unable to lock" msgstr "S_errar" #: js/ui/screenShield.js:276 js/ui/screenShield.js:653 #, fuzzy msgid "Lock was blocked by an application" msgstr "S_errar" #: js/ui/screenshot.js:1161 msgid "Selection" msgstr "Selection" #: js/ui/screenshot.js:1171 msgid "Area Selection" msgstr "Selection de un area" #: js/ui/screenshot.js:1176 msgid "Screen" msgstr "Ecran" #: js/ui/screenshot.js:1186 msgid "Screen Selection" msgstr "Selection de un ecran" #: js/ui/screenshot.js:1191 msgid "Window" msgstr "Fenestre" #: js/ui/screenshot.js:1201 msgid "Window Selection" msgstr "Selection de fenestres" #: js/ui/screenshot.js:1239 #, fuzzy msgid "Screenshot / Screencast" msgstr "Captura del ecran" #: js/ui/screenshot.js:1275 msgid "Show Pointer" msgstr "Monstrar li apuntator" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1866 msgid "Screencasts" msgstr "" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast from 07-17-2013 10:00:46 PM.webm" #: js/ui/screenshot.js:1871 #, fuzzy, no-c-format msgid "Screencast from %d %t.webm" msgstr "Restituer %d elementes ex li Paper-corb" #. Translators: notification source name. #: js/ui/screenshot.js:1913 js/ui/screenshot.js:2125 msgid "Screenshot" msgstr "Captura del ecran" #. Translators: notification title. #: js/ui/screenshot.js:1919 #, fuzzy msgid "Screencast recorded" msgstr "Gardar li registrat canzone" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:1921 msgid "Click here to view the video." msgstr "" #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:1924 js/ui/screenshot.js:2139 msgid "Show in Files" msgstr "Monstrar in Files" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2085 #, javascript-format msgid "Screenshot from %s" msgstr "Captura de %s" #. Translators: notification title. #: js/ui/screenshot.js:2131 #, fuzzy msgid "Screenshot captured" msgstr "Un rectangulari region esset capturat" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2133 msgid "You can paste the image from the clipboard." msgstr "" #: js/ui/screenshot.js:2186 js/ui/screenshot.js:2351 msgid "Screenshot taken" msgstr "Ecran ha esset capturat" #: js/ui/search.js:804 msgid "Searching…" msgstr "Serchante..." #: js/ui/search.js:806 msgid "No results." msgstr "Null resultates." #: js/ui/search.js:937 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "%d plu" msgstr[1] "%d plu" #: js/ui/searchController.js:87 msgid "Search" msgstr "Serchar" #: js/ui/shellEntry.js:20 msgid "Copy" msgstr "Copiar" #: js/ui/shellEntry.js:25 msgid "Paste" msgstr "Collar" #: js/ui/shellEntry.js:77 msgid "Show Text" msgstr "Monstrar textu" #: js/ui/shellEntry.js:79 msgid "Hide Text" msgstr "Celar textu" #: js/ui/shellEntry.js:166 msgid "Caps lock is on." msgstr "Caps Lock es activ." #: js/ui/shellMountOperation.js:286 msgid "Hidden Volume" msgstr "Celat volume" #: js/ui/shellMountOperation.js:289 #, fuzzy msgid "Windows System Volume" msgstr "_Sistema Windows" #: js/ui/shellMountOperation.js:292 #, fuzzy msgid "Uses Keyfiles" msgstr "_Clav-files" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:299 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead." msgstr "" #: js/ui/shellMountOperation.js:307 #, fuzzy msgid "PIM Number" msgstr "Secun li _númere" #: js/ui/shellMountOperation.js:366 msgid "Remember Password" msgstr "Memorar li contrasigne" #: js/ui/shellMountOperation.js:381 msgid "Unlock" msgstr "Desserrar" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:392 #, javascript-format msgid "Open %s" msgstr "Aperter %s" #: js/ui/shellMountOperation.js:424 #, fuzzy msgid "The PIM must be a number or empty." msgstr "ID deve esser present e unic.\n" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:466 #, javascript-format msgid "Unable to start %s" msgstr "Ne successat startar %s" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:468 #, javascript-format msgid "Couldn’t find the %s application" msgstr "" #: js/ui/status/accessibility.js:34 msgid "Accessibility" msgstr "Accessibilitá" #: js/ui/status/accessibility.js:44 msgid "High Contrast" msgstr "Alt contraste" #: js/ui/status/accessibility.js:47 msgid "Zoom" msgstr "Scalar" #: js/ui/status/accessibility.js:54 msgid "Screen Reader" msgstr "Letor del ecran" #: js/ui/status/accessibility.js:58 msgid "Screen Keyboard" msgstr "Tastatura visual" #: js/ui/status/accessibility.js:62 #, fuzzy msgid "Visual Alerts" msgstr "Visual" #: js/ui/status/accessibility.js:65 msgid "Sticky Keys" msgstr "Restant tastes" #: js/ui/status/accessibility.js:68 msgid "Slow Keys" msgstr "Lent tastes" #: js/ui/status/accessibility.js:71 msgid "Bounce Keys" msgstr "Restant tastes" #: js/ui/status/accessibility.js:74 msgid "Mouse Keys" msgstr "Tastes del mus" #: js/ui/status/accessibility.js:131 msgid "Large Text" msgstr "Grand textu" #: js/ui/status/autoRotate.js:14 #, fuzzy msgid "Auto Rotate" msgstr "Autorotar e -centrar" #: js/ui/status/bluetooth.js:151 msgid "Bluetooth" msgstr "Bluetooth" #: js/ui/status/brightness.js:34 msgid "Brightness" msgstr "Luciditá" #: js/ui/status/darkMode.js:11 msgid "Dark Mode" msgstr "Mode obscur" #: js/ui/status/dwellClick.js:12 msgid "Single Click" msgstr "Singul clic" #: js/ui/status/dwellClick.js:17 msgid "Double Click" msgstr "Duplic clic" #: js/ui/status/dwellClick.js:22 msgid "Drag" msgstr "Tirar" #: js/ui/status/dwellClick.js:27 #, fuzzy msgid "Secondary Click" msgstr "Secundari" #: js/ui/status/dwellClick.js:36 #, fuzzy msgid "Dwell Click" msgstr "o clicca li icone " #: js/ui/status/keyboard.js:833 msgid "Keyboard" msgstr "Tastatura" #: js/ui/status/keyboard.js:850 msgid "Show Keyboard Layout" msgstr "Monstrar li arangeament del tastatura" #: js/ui/status/location.js:330 #, fuzzy msgid "Allow location access" msgstr "Pe_rmisser lontan accesse" #. Translators: %s is an application name #: js/ui/status/location.js:332 #, javascript-format msgid "The app %s wants to access your location" msgstr "" #: js/ui/status/location.js:342 msgid "Location access can be changed at any time from the privacy settings." msgstr "" #: js/ui/status/network.js:53 msgid "" msgstr "<ínconosset>" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:356 #, fuzzy, javascript-format msgid "Disconnect %s" msgstr "_Desconexer" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:358 #, fuzzy, javascript-format msgid "Connect to %s" msgstr "Ne successat conexer a %s" #. Translators: %s is a network identifier #: js/ui/status/network.js:1107 #, fuzzy, javascript-format msgid "%s Hotspot" msgstr "Hotspot" #: js/ui/status/nightLight.js:20 #, fuzzy msgid "Night Light" msgstr "Nocte" #: js/ui/status/powerProfiles.js:20 msgctxt "Power profile" msgid "Performance" msgstr "Productivitá" #: js/ui/status/powerProfiles.js:25 msgctxt "Power profile" msgid "Balanced" msgstr "" #: js/ui/status/powerProfiles.js:30 #, fuzzy msgctxt "Power profile" msgid "Power Saver" msgstr "Garda-ecran" #: js/ui/status/powerProfiles.js:70 #, fuzzy msgid "Power Profiles" msgstr "_Accender" #: js/ui/status/remoteAccess.js:74 #, fuzzy msgid "Stop Screencast" msgstr " --stop Stoppar li reproduction\n" #: js/ui/status/remoteAccess.js:144 #, fuzzy msgid "Stop Screen Sharing" msgstr "_Stoppar" #: js/ui/status/rfkill.js:96 msgid "Airplane Mode" msgstr "Mode de avion" #: js/ui/status/system.js:90 #, javascript-format msgid "%d %%" msgstr "%d %%" #. Translators: entry in the window right click menu. #: js/ui/status/system.js:105 js/ui/windowMenu.js:29 msgid "Take Screenshot" msgstr "Capturar li ecran" #: js/ui/status/system.js:161 msgid "Power Off Menu" msgstr "Menú de extintion" #: js/ui/status/system.js:169 msgid "Suspend" msgstr "Suspender" #: js/ui/status/system.js:174 msgid "Restart…" msgstr "Restartar…" #: js/ui/status/system.js:179 msgid "Power Off…" msgstr "Extinter…" #: js/ui/status/system.js:186 #: subprojects/extensions-app/data/ui/extensions-window.ui:190 msgid "Log Out…" msgstr "Cluder li session…" #: js/ui/status/system.js:191 msgid "Switch User…" msgstr "Cambiar li usator…" #: js/ui/status/system.js:235 msgctxt "action" msgid "Lock Screen" msgstr "Serrar li ecran" #: js/ui/status/thunderbolt.js:256 msgid "Thunderbolt" msgstr "Thunderbolt" #: js/ui/status/thunderbolt.js:317 msgid "Unknown Thunderbolt device" msgstr "Ínconosset aparate Thunderbolt" #: js/ui/status/thunderbolt.js:318 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" #: js/ui/status/thunderbolt.js:321 #, fuzzy msgid "Unauthorized Thunderbolt device" msgstr "aparate" #: js/ui/status/thunderbolt.js:322 msgid "" "New device has been detected and needs to be authorized by an administrator." msgstr "" #: js/ui/status/thunderbolt.js:328 #, fuzzy msgid "Thunderbolt authorization error" msgstr "Autorisation" #: js/ui/status/thunderbolt.js:329 #, fuzzy, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "Ne posset accessar li aparate «%s»" #: js/ui/status/volume.js:194 #, fuzzy msgid "Volume changed" msgstr "Modificat:" #: js/ui/status/volume.js:256 msgid "Volume" msgstr "Volúmine" #: js/ui/status/volume.js:272 #, fuzzy #| msgid "Sound Settings" msgid "Sound Output" msgstr "Sele_cte un aparate por li exeada de son:" #: js/ui/status/volume.js:340 #, fuzzy msgid "Sound Input" msgstr "Sele_cte un aparate por li intrada de son:" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:20 msgid "Mirror" msgstr "Duplicar" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:29 #, fuzzy msgid "Join Displays" msgstr "Adherer" #. Translators: this is for using only an external display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:39 msgid "External Only" msgstr "Solmen extern" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:47 #, fuzzy msgid "Built-in Only" msgstr "Standard" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:364 msgid "%A %B %-d" msgstr "%a, %d %b" #: js/ui/unlockDialog.js:370 #, fuzzy msgid "Swipe up to unlock" msgstr "Trenar a levul" #: js/ui/unlockDialog.js:371 #, fuzzy msgid "Click or press a key to unlock" msgstr "Li taste de captura del ecran:" #: js/ui/unlockDialog.js:554 #, fuzzy msgid "Unlock Window" msgstr "D_esserrar" #: js/ui/unlockDialog.js:563 #, fuzzy msgid "Log in as another user" msgstr "Cluder li session o cambiar li usator" #: js/ui/welcomeDialog.js:36 #, javascript-format msgid "Welcome to GNOME %s" msgstr "Benevenit a GNOME %s" #: js/ui/welcomeDialog.js:37 msgid "If you want to learn your way around, check out the tour." msgstr "" #: js/ui/welcomeDialog.js:46 msgid "No Thanks" msgstr "Ne, mersí" #: js/ui/welcomeDialog.js:51 #, fuzzy msgid "Take Tour" msgstr "Far un pause" #: js/ui/windowAttentionHandler.js:20 #, fuzzy, javascript-format msgid "“%s” is ready" msgstr "Li bux «%s» ha esset installat e es pret a usa" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:62 #, fuzzy msgid "Keep these display settings?" msgstr "_Configurar parametres de monitor..." #: js/ui/windowManager.js:72 msgid "Revert Settings" msgstr "Reverter" #: js/ui/windowManager.js:77 msgid "Keep Changes" msgstr "Retener" #: js/ui/windowManager.js:97 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "" msgstr[1] "" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:544 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:41 msgid "Hide" msgstr "Celar" #: js/ui/windowMenu.js:48 msgid "Restore" msgstr "Restituer" #: js/ui/windowMenu.js:52 msgid "Maximize" msgstr "Maximisar" #: js/ui/windowMenu.js:59 msgid "Move" msgstr "Mover" #: js/ui/windowMenu.js:65 msgid "Resize" msgstr "Redimensionar" #: js/ui/windowMenu.js:72 #, fuzzy msgid "Move Titlebar Onscreen" msgstr "Tastatura sur ecran" #: js/ui/windowMenu.js:77 msgid "Always on Top" msgstr "Sempre in avan" #: js/ui/windowMenu.js:96 msgid "Always on Visible Workspace" msgstr "Sempre in li visibil labor-spacie" #: js/ui/windowMenu.js:110 #, fuzzy msgid "Move to Workspace Left" msgstr "Mover al labor-spacie a _levul" #: js/ui/windowMenu.js:116 #, fuzzy msgid "Move to Workspace Right" msgstr "Mover al labor-spacie a dextri" #: js/ui/windowMenu.js:122 #, fuzzy msgid "Move to Workspace Up" msgstr "Mover al labor-spacie ad _up" #: js/ui/windowMenu.js:128 #, fuzzy msgid "Move to Workspace Down" msgstr "Mover al labor-spacie a _bass" #: js/ui/windowMenu.js:146 #, fuzzy msgid "Move to Monitor Up" msgstr "Mover al monitor " #: js/ui/windowMenu.js:155 #, fuzzy msgid "Move to Monitor Down" msgstr "Mover un fenestre al monitor a-bass" #: js/ui/windowMenu.js:164 #, fuzzy msgid "Move to Monitor Left" msgstr "Mover un fenestre al west (levul) monitor" #: js/ui/windowMenu.js:173 #, fuzzy msgid "Move to Monitor Right" msgstr "Mover un fenestre al ost (dextri) monitor" #: js/ui/windowMenu.js:181 msgid "Close" msgstr "Clúder" #: src/calendar-server/evolution-calendar.desktop.in:3 #, fuzzy msgid "Evolution Calendar" msgstr "Un tache in un calendare de Evolution" #: src/main.c:435 subprojects/extensions-tool/src/main.c:321 msgid "Print version" msgstr "Printar li version" #: src/main.c:441 msgid "Mode used by GDM for login screen" msgstr "" #: src/main.c:447 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "" #: src/main.c:453 #, fuzzy msgid "List possible modes" msgstr "Modes" #: src/shell-app.c:305 msgctxt "program" msgid "Unknown" msgstr "Ínconosset" #: src/shell-app.c:556 #, fuzzy, c-format msgid "Failed to launch “%s”" msgstr "Ne successat lansar «%s»" #: src/shell-keyring-prompt.c:764 #, fuzzy msgid "Passwords do not match." msgstr "Contrasignes" #: src/shell-keyring-prompt.c:772 #, fuzzy msgid "Password cannot be blank" msgstr "_Eraser" #: src/shell-polkit-authentication-agent.c:344 #, fuzzy msgid "Authentication dialog was dismissed by the user" msgstr "Dialog de autentication esset anullat per li usator" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/js/main.js:212 #: subprojects/extensions-app/data/ui/extensions-window.ui:18 #: subprojects/extensions-app/data/ui/extensions-window.ui:83 msgid "Extensions" msgstr "Extensiones" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 #, fuzzy msgid "Manage your GNOME Extensions" msgstr "Escutar e gerer vor musica" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:17 #: subprojects/extensions-app/js/main.js:216 msgid "The GNOME Project" msgstr "Li projecte GNOME" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:36 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 #, fuzzy msgid "Configure GNOME Shell Extensions" msgstr "Shell GNOME" #: subprojects/extensions-app/js/main.js:130 #: subprojects/extensions-app/js/main.js:141 msgid "No Matches" msgstr "Null corespondenties" #: subprojects/extensions-app/js/main.js:169 #, javascript-format msgid "Remove “%s”?" msgstr "Remover «%s»?" #: subprojects/extensions-app/js/main.js:170 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "" #: subprojects/extensions-app/js/main.js:174 msgid "Remove" msgstr "Remover" #: subprojects/extensions-app/js/main.js:211 msgid "translator-credits" msgstr "OIS , 2016-22" #: subprojects/extensions-app/js/main.js:339 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "" msgstr[1] "" #: subprojects/extensions-app/js/main.js:481 msgid "The extension is incompatible with the current GNOME version" msgstr "" #: subprojects/extensions-app/js/main.js:484 #: subprojects/extensions-app/data/ui/extension-row.ui:52 #, fuzzy msgid "The extension had an error" msgstr "errore de EXTENSION" #: subprojects/extensions-app/data/ui/extension-row.ui:62 #, fuzzy msgid "The extension can be updated" msgstr "Extension:" #: subprojects/extensions-app/data/ui/extension-row.ui:112 msgid "Website" msgstr "Website" #: subprojects/extensions-app/data/ui/extension-row.ui:134 msgid "Remove…" msgstr "Remover…" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Help" msgstr "Auxilie" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "Pri Extensiones" #: subprojects/extensions-app/data/ui/extensions-window.ui:84 msgid "" "Extensions can cause performance and stability issues. Disable extensions if " "you encounter problems with your system." msgstr "" #: subprojects/extensions-app/data/ui/extensions-window.ui:98 #, fuzzy msgid "Manually Installed" msgstr "Continuar usar li driver installat manualmen" #: subprojects/extensions-app/data/ui/extensions-window.ui:99 #: subprojects/extensions-app/data/ui/extensions-window.ui:134 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" #: subprojects/extensions-app/data/ui/extensions-window.ui:112 #, fuzzy msgid "Built-In" msgstr "Standard" #: subprojects/extensions-app/data/ui/extensions-window.ui:133 msgid "No Installed Extensions" msgstr "Null installat extensiones" #: subprojects/extensions-app/data/ui/extensions-window.ui:145 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" #: subprojects/extensions-app/data/ui/extensions-window.ui:175 #, fuzzy msgid "Extension Updates Ready" msgstr "Extension:" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:222 #, fuzzy, c-format msgid "The new extension was successfully created in %s.\n" msgstr "«%s» har esset creat con success" #: subprojects/extensions-tool/src/command-create.c:296 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" #: subprojects/extensions-tool/src/command-create.c:302 #: subprojects/extensions-tool/src/main.c:238 msgid "Name" msgstr "Nómine" #: subprojects/extensions-tool/src/command-create.c:316 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" #: subprojects/extensions-tool/src/command-create.c:322 #: subprojects/extensions-tool/src/main.c:241 msgid "Description" msgstr "Descrition" #: subprojects/extensions-tool/src/command-create.c:336 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" #: subprojects/extensions-tool/src/command-create.c:363 #, fuzzy msgid "Choose one of the available templates:\n" msgstr "Null claves disponibil. Crea ún!" #: subprojects/extensions-tool/src/command-create.c:377 msgid "Template" msgstr "Modelle" #: subprojects/extensions-tool/src/command-create.c:432 msgid "The unique identifier of the new extension" msgstr "" #: subprojects/extensions-tool/src/command-create.c:435 msgid "NAME" msgstr "NÓMINE" #: subprojects/extensions-tool/src/command-create.c:436 #, fuzzy msgid "The user-visible name of the new extension" msgstr "Li visibil nómine del renominator" #: subprojects/extensions-tool/src/command-create.c:438 msgid "DESCRIPTION" msgstr "DESCRITION" #: subprojects/extensions-tool/src/command-create.c:440 msgid "A short description of what the extension does" msgstr "" #: subprojects/extensions-tool/src/command-create.c:443 msgid "TEMPLATE" msgstr "MODELLE" #: subprojects/extensions-tool/src/command-create.c:444 #, fuzzy msgid "The template to use for the new extension" msgstr "Usar un modelle quam on composi nov missages" #: subprojects/extensions-tool/src/command-create.c:450 #, fuzzy msgid "Enter extension information interactively" msgstr "Ples intrar li information pri vor equip" #: subprojects/extensions-tool/src/command-create.c:458 #, fuzzy msgid "Create a new extension" msgstr "Crear un nov" #: subprojects/extensions-tool/src/command-create.c:476 #: subprojects/extensions-tool/src/command-list.c:172 #, fuzzy msgid "Unknown arguments" msgstr "[ARGUMENTES...]" #: subprojects/extensions-tool/src/command-create.c:501 #, fuzzy msgid "UUID, name and description are required" msgstr "{description} ({name})" #: subprojects/extensions-tool/src/command-disable.c:46 #: subprojects/extensions-tool/src/command-enable.c:46 #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:64 #: subprojects/extensions-tool/src/main.c:146 #, fuzzy msgid "Failed to connect to GNOME Shell\n" msgstr "Shell GNOME" #: subprojects/extensions-tool/src/command-disable.c:53 #: subprojects/extensions-tool/src/command-enable.c:53 #, fuzzy, c-format msgid "Extension “%s” does not exist\n" msgstr "%s: %s existiert nicht, muss es jedoch." #: subprojects/extensions-tool/src/command-disable.c:101 #, fuzzy msgid "Disable an extension" msgstr "Depermisser" #: subprojects/extensions-tool/src/command-disable.c:119 #: subprojects/extensions-tool/src/command-enable.c:119 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 #, fuzzy msgid "No UUID given" msgstr "" "\n" "UUID: " #: subprojects/extensions-tool/src/command-disable.c:124 #: subprojects/extensions-tool/src/command-enable.c:124 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 #, fuzzy msgid "More than one UUID given" msgstr "Plu quam ún file es providet" #: subprojects/extensions-tool/src/command-enable.c:101 #, fuzzy msgid "Enable an extension" msgstr "Secun _extension" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:155 #, fuzzy, c-format msgid "Extension “%s” doesn't exist\n" msgstr "Li file ne existe o es vacui." #: subprojects/extensions-tool/src/command-info.c:85 #, fuzzy msgid "Show extensions info" msgstr "Monstrar panel de information" #: subprojects/extensions-tool/src/command-install.c:173 #, fuzzy msgid "Overwrite an existing extension" msgstr "Superscrir li existent data con zeros" #: subprojects/extensions-tool/src/command-install.c:175 #, fuzzy msgid "EXTENSION_BUNDLE" msgstr "Null files de fonte o files traductibil in li bundle" #: subprojects/extensions-tool/src/command-install.c:184 #, fuzzy msgid "Install an extension bundle" msgstr "Installar un extension" #: subprojects/extensions-tool/src/command-install.c:202 #, fuzzy msgid "No extension bundle specified" msgstr "Ínspecificat" #: subprojects/extensions-tool/src/command-install.c:208 msgid "More than one extension bundle specified" msgstr "" #: subprojects/extensions-tool/src/command-list.c:128 #, fuzzy msgid "Show user-installed extensions" msgstr "Null extensiones installat" #: subprojects/extensions-tool/src/command-list.c:131 #, fuzzy msgid "Show system-installed extensions" msgstr "Null extensiones installat" #: subprojects/extensions-tool/src/command-list.c:134 #, fuzzy msgid "Show enabled extensions" msgstr "Permisset" #: subprojects/extensions-tool/src/command-list.c:137 #, fuzzy msgid "Show disabled extensions" msgstr "Ínactiv" #: subprojects/extensions-tool/src/command-list.c:140 #, fuzzy msgid "Show extensions with preferences" msgstr "Monstrar li dialog «Preferenties del panel»" #: subprojects/extensions-tool/src/command-list.c:143 #, fuzzy msgid "Show extensions with updates" msgstr "Monstrar actualisamentes" #: subprojects/extensions-tool/src/command-list.c:146 #, fuzzy msgid "Print extension details" msgstr "&Detallies" #: subprojects/extensions-tool/src/command-list.c:154 #, fuzzy msgid "List installed extensions" msgstr "Null extensiones installat" #: subprojects/extensions-tool/src/command-pack.c:450 msgid "FILE" msgstr "FILE" #: subprojects/extensions-tool/src/command-pack.c:451 #, fuzzy msgid "Additional source to include in the bundle" msgstr "Null files de fonte o files traductibil in li bundle" #: subprojects/extensions-tool/src/command-pack.c:454 msgid "SCHEMA" msgstr "SCHEMA" #: subprojects/extensions-tool/src/command-pack.c:455 msgid "A GSettings schema that should be included" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:457 #: subprojects/extensions-tool/src/command-pack.c:468 msgid "DIRECTORY" msgstr "DIRECTORIA" #: subprojects/extensions-tool/src/command-pack.c:459 #, fuzzy msgid "The directory where translations are found" msgstr "Fólder ne esset trovat" #: subprojects/extensions-tool/src/command-pack.c:461 msgid "DOMAIN" msgstr "DOMINIA" #: subprojects/extensions-tool/src/command-pack.c:463 #, fuzzy msgid "The gettext domain to use for translations" msgstr "Gettext retrodat un vacui liste de dominias." #: subprojects/extensions-tool/src/command-pack.c:466 #, fuzzy msgid "Overwrite an existing pack" msgstr "superscrir existent files" #: subprojects/extensions-tool/src/command-pack.c:470 msgid "The directory where the pack should be created" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:472 #, fuzzy msgid "SOURCE_DIRECTORY" msgstr "directoria" #: subprojects/extensions-tool/src/command-pack.c:481 #, fuzzy msgid "Create an extension bundle" msgstr "Null files de fonte o files traductibil in li bundle" #: subprojects/extensions-tool/src/command-pack.c:501 msgid "More than one source directory specified" msgstr "" #: subprojects/extensions-tool/src/command-prefs.c:47 #, fuzzy, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "File %s ne have un extension .wav" #: subprojects/extensions-tool/src/command-prefs.c:62 #, fuzzy, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "Ne successat aperter li file «%s»" #: subprojects/extensions-tool/src/command-prefs.c:87 #, fuzzy msgid "Opens extension preferences" msgstr "Preferenties…" #: subprojects/extensions-tool/src/command-reset.c:58 #, fuzzy msgid "Reset an extension" msgstr "Extension:" #: subprojects/extensions-tool/src/command-uninstall.c:49 #, fuzzy msgid "Cannot uninstall system extensions\n" msgstr "T-ci es un applette de sistema. It es impossibil remover it." #: subprojects/extensions-tool/src/command-uninstall.c:64 #, fuzzy, c-format msgid "Failed to uninstall “%s”\n" msgstr "_Desinstallar..." #: subprojects/extensions-tool/src/command-uninstall.c:86 #, fuzzy msgid "Uninstall an extension" msgstr "_Desinstallar..." #: subprojects/extensions-tool/src/main.c:72 #, fuzzy msgid "Do not print error messages" msgstr "Monstrar errores de auto-conexion" #: subprojects/extensions-tool/src/main.c:244 msgid "Path" msgstr "Rute" #: subprojects/extensions-tool/src/main.c:247 msgid "URL" msgstr "URL" #: subprojects/extensions-tool/src/main.c:250 msgid "Original author" msgstr "Original autor" #: subprojects/extensions-tool/src/main.c:253 msgid "Version" msgstr "Version" #: subprojects/extensions-tool/src/main.c:256 msgid "State" msgstr "Statu" #: subprojects/extensions-tool/src/main.c:294 #, fuzzy msgid "“version” takes no arguments" msgstr "[ARGUMENTES...]" #: subprojects/extensions-tool/src/main.c:296 #: subprojects/extensions-tool/src/main.c:316 msgid "Usage:" msgstr "Usage:" #: subprojects/extensions-tool/src/main.c:299 #, fuzzy msgid "Print version information and exit." msgstr "Monstra li information del version, poy salir" #: subprojects/extensions-tool/src/main.c:314 #: subprojects/extensions-tool/src/main.c:317 msgid "COMMAND" msgstr "COMANDE" #: subprojects/extensions-tool/src/main.c:317 msgid "[ARGS…]" msgstr "" #: subprojects/extensions-tool/src/main.c:319 msgid "Commands:" msgstr "Comandes:" #: subprojects/extensions-tool/src/main.c:320 #, fuzzy msgid "Print help" msgstr " -h, --help Monstra ti-ci textu e surtir\n" #: subprojects/extensions-tool/src/main.c:322 #, fuzzy msgid "Enable extension" msgstr "Secun _extension" #: subprojects/extensions-tool/src/main.c:323 #, fuzzy msgid "Disable extension" msgstr "Depermisser" #: subprojects/extensions-tool/src/main.c:324 #, fuzzy msgid "Reset extension" msgstr "Extension:" #: subprojects/extensions-tool/src/main.c:325 #, fuzzy msgid "Uninstall extension" msgstr "_Desinstallar..." #: subprojects/extensions-tool/src/main.c:326 #, fuzzy msgid "List extensions" msgstr "_Extensiones:" #: subprojects/extensions-tool/src/main.c:327 #: subprojects/extensions-tool/src/main.c:328 #, fuzzy msgid "Show extension info" msgstr "Monstrar panel de information" #: subprojects/extensions-tool/src/main.c:329 #, fuzzy msgid "Open extension preferences" msgstr "Aperter _preferenties del funde" #: subprojects/extensions-tool/src/main.c:330 #, fuzzy msgid "Create extension" msgstr "Secun _extension" #: subprojects/extensions-tool/src/main.c:331 #, fuzzy msgid "Package extension" msgstr "Paccage" #: subprojects/extensions-tool/src/main.c:332 #, fuzzy msgid "Install extension bundle" msgstr "Installar un extension" #: subprojects/extensions-tool/src/main.c:334 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "Simplic" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 #, fuzzy msgid "An empty extension" msgstr "Secun _extension" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "Indicator" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 #, fuzzy msgid "Add an icon to the top bar" msgstr "Adjunter un icone" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1907 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "" msgstr[1] "" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1917 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "" msgstr[1] "" #: subprojects/gvc/gvc-mixer-control.c:2867 msgid "System Sounds" msgstr "Sones de sistema" 0707010000023E000081A40000000000000000000000016712993F000170D6000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/is.po# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Sveinn í Felli , 2015, 2016, 2017, 2019, 2021, 2022. msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" "POT-Creation-Date: 2022-11-04 14:57+0000\n" "PO-Revision-Date: 2022-11-30 09:47+0000\n" "Last-Translator: Sveinn í Felli \n" "Language-Team: Icelandic\n" "Language: is\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: Lokalize 21.12.3\n" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "Forritaræsar" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate favorite application 1" msgstr "Virkja eftirlætisforrit 1" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate favorite application 2" msgstr "Virkja eftirlætisforrit 2" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate favorite application 3" msgstr "Virkja eftirlætisforrit 3" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate favorite application 4" msgstr "Virkja eftirlætisforrit 4" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate favorite application 5" msgstr "Virkja eftirlætisforrit 5" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate favorite application 6" msgstr "Virkja eftirlætisforrit 6" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate favorite application 7" msgstr "Virkja eftirlætisforrit 7" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate favorite application 8" msgstr "Virkja eftirlætisforrit 8" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate favorite application 9" msgstr "Virkja eftirlætisforrit 9" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2070 msgid "Screenshots" msgstr "Skjámyndir" #: data/50-gnome-shell-screenshots.xml:9 #: data/org.gnome.shell.gschema.xml.in:234 msgid "Take a screenshot interactively" msgstr "Taka skjámynd gagnvirkt" #: data/50-gnome-shell-screenshots.xml:12 #: data/org.gnome.shell.gschema.xml.in:246 msgid "Take a screenshot" msgstr "Taka skjámynd" #: data/50-gnome-shell-screenshots.xml:15 #: data/org.gnome.shell.gschema.xml.in:242 msgid "Take a screenshot of a window" msgstr "Taka skjámynd af glugga" #: data/50-gnome-shell-screenshots.xml:18 #: data/org.gnome.shell.gschema.xml.in:238 msgid "Record a screencast interactively" msgstr "Taka upp skjámyndskeið gagnvirkt" #: data/50-gnome-shell-system.xml:6 msgid "System" msgstr "Kerfið" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "Birta tilkynningalistann" #: data/50-gnome-shell-system.xml:12 msgid "Focus the active notification" msgstr "Áhersla á virka tilkynningu" #: data/50-gnome-shell-system.xml:15 msgid "Show the overview" msgstr "Birta yfirlit" #: data/50-gnome-shell-system.xml:18 msgid "Show all applications" msgstr "Birta öll forrit" #: data/50-gnome-shell-system.xml:21 msgid "Open the application menu" msgstr "Birta forritavalmynd" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "GNOME skel" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "Gluggastjórnun og forritaræsing" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "UUID-auðkenni forritsviðauka sem á að gera virka" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "UUID-auðkenni viðbóta sem á að þvinga til að gera óvirkar" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "Gera forritsviðauka notanda óvirka" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" #: data/org.gnome.shell.gschema.xml.in:45 msgid "Disables the validation of extension version compatibility" msgstr "" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" #: data/org.gnome.shell.gschema.xml.in:54 msgid "List of desktop file IDs for favorite applications" msgstr "Listi yfir auðkenni skjáborðsskráa fyrir uppáhaldsforrit" #: data/org.gnome.shell.gschema.xml.in:55 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" #: data/org.gnome.shell.gschema.xml.in:62 msgid "History for command (Alt-F2) dialog" msgstr "Ferill skipanalínuglugga (Alt+F2)" #. Translators: looking glass is a debugger and inspector tool, see https://wiki.gnome.org/Projects/GnomeShell/LookingGlass #: data/org.gnome.shell.gschema.xml.in:67 msgid "History for the looking glass dialog" msgstr "Ferill looking-glass skipanalínuglugga (Alt+F)" #: data/org.gnome.shell.gschema.xml.in:71 msgid "Always show the “Log out” menu item in the user menu." msgstr "Alltaf sýna \"Skrá út\" atriðið í notandavalmyndinni." #: data/org.gnome.shell.gschema.xml.in:72 msgid "" "This key overrides the automatic hiding of the “Log out” menu item in single-" "user, single-session situations." msgstr "" #: data/org.gnome.shell.gschema.xml.in:79 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "Hvort muna eigi lykilorð þegar tengd eru fjartengd eða dulrituð skráakerfi" #: data/org.gnome.shell.gschema.xml.in:80 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" #: data/org.gnome.shell.gschema.xml.in:89 msgid "The last selected non-default power profile" msgstr "Síðast valið en ekki sjálfgefið orkustýringarsnið" #: data/org.gnome.shell.gschema.xml.in:90 msgid "" "Some systems support more than two power profiles. In order to still support " "toggling between two profiles, this key records the last selected non-" "default profile." msgstr "" #: data/org.gnome.shell.gschema.xml.in:98 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "" #: data/org.gnome.shell.gschema.xml.in:99 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can " "be used to effectively disable the dialog." msgstr "" #: data/org.gnome.shell.gschema.xml.in:132 msgid "Layout of the app picker" msgstr "Framsetning forritaveljara" #: data/org.gnome.shell.gschema.xml.in:133 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" msgstr "" #: data/org.gnome.shell.gschema.xml.in:148 msgid "Keybinding to open the application menu" msgstr "Lyklasamsetning til að opna forritavalmyndina" #: data/org.gnome.shell.gschema.xml.in:149 msgid "Keybinding to open the application menu." msgstr "Lyklasamsetning til að opna forritavalmyndina." #: data/org.gnome.shell.gschema.xml.in:155 #: data/org.gnome.shell.gschema.xml.in:162 msgid "Keybinding to shift between overview states" msgstr "Lyklasamsetning til að skipta á milli yfirlitsstöðu" #: data/org.gnome.shell.gschema.xml.in:156 msgid "Keybinding to shift between session, window picker and app grid" msgstr "" "Lyklasamsetning til að skipta á milli setu, gluggaveljara og forritareita" #: data/org.gnome.shell.gschema.xml.in:163 msgid "Keybinding to shift between app grid, window picker and session" msgstr "" "Lyklasamsetning til að skipta á milli forritareita, gluggaveljara og setu" #: data/org.gnome.shell.gschema.xml.in:169 msgid "Keybinding to open the “Show Applications” view" msgstr "Lyklasamsetning til að opna \"Birta forrit\" sýnina" #: data/org.gnome.shell.gschema.xml.in:170 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "" "Lyklasamsetning til að opna \"Birta forrit\" sýnina í virkniyfirlitinu." #: data/org.gnome.shell.gschema.xml.in:177 msgid "Keybinding to open the overview" msgstr "Lyklasamsetning til að opna yfirlitið" #: data/org.gnome.shell.gschema.xml.in:178 msgid "Keybinding to open the Activities Overview." msgstr "Lyklasamsetning til að opna virkniyfirlitið." #: data/org.gnome.shell.gschema.xml.in:184 msgid "Keybinding to toggle the visibility of the notification list" msgstr "Lyklasamsetning til að víxla sýnileika tilkynningalistans" #: data/org.gnome.shell.gschema.xml.in:185 msgid "Keybinding to toggle the visibility of the notification list." msgstr "Lyklasamsetning til að víxla sýnileika tilkynningalistans." #: data/org.gnome.shell.gschema.xml.in:191 msgid "Keybinding to focus the active notification" msgstr "Lyklasamsetning til að setja virkni á virka tilkynningu" #: data/org.gnome.shell.gschema.xml.in:192 msgid "Keybinding to focus the active notification." msgstr "Lyklasamsetning til að setja virkni á virka tilkynningu." #: data/org.gnome.shell.gschema.xml.in:198 msgid "Switch to application 1" msgstr "Skipta í forrit 1" #: data/org.gnome.shell.gschema.xml.in:202 msgid "Switch to application 2" msgstr "Skipta í forrit 2" #: data/org.gnome.shell.gschema.xml.in:206 msgid "Switch to application 3" msgstr "Skipta í forrit 3" #: data/org.gnome.shell.gschema.xml.in:210 msgid "Switch to application 4" msgstr "Skipta í forrit 4" #: data/org.gnome.shell.gschema.xml.in:214 msgid "Switch to application 5" msgstr "Skipta í forrit 5" #: data/org.gnome.shell.gschema.xml.in:218 msgid "Switch to application 6" msgstr "Skipta í forrit 6" #: data/org.gnome.shell.gschema.xml.in:222 msgid "Switch to application 7" msgstr "Skipta í forrit 7" #: data/org.gnome.shell.gschema.xml.in:226 msgid "Switch to application 8" msgstr "Skipta í forrit 8" #: data/org.gnome.shell.gschema.xml.in:230 msgid "Switch to application 9" msgstr "Skipta í forrit 9" #: data/org.gnome.shell.gschema.xml.in:255 #: data/org.gnome.shell.gschema.xml.in:282 msgid "Limit switcher to current workspace." msgstr "Takmarka fletti við núverandi vinnusvæði." #: data/org.gnome.shell.gschema.xml.in:256 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "Ef þetta er satt, verða eingöngu birt forrit sem eru með glugga á núverandi " "vinnusvæði í flettinum.Annars eru öll forrit höfð með." #: data/org.gnome.shell.gschema.xml.in:273 msgid "The application icon mode." msgstr "Táknmyndinahamur forrits." #: data/org.gnome.shell.gschema.xml.in:274 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-" "only” (shows only the application icon) or “both”." msgstr "" "Stillir hvernig gluggar birtast í skiptinum. Möguleg gildi eru 'einungis-" "smámynd' (birtir smámynd gluggans), 'einungis-forritstákn' (birtir aðeins " "táknmynd forritsins) eða 'bæði'." #: data/org.gnome.shell.gschema.xml.in:283 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "Ef þetta er satt, verða eingöngu birtir gluggar frá núverandi vinnusvæði í " "flettinum.Annars eru allir gluggar hafðir með." #: data/org.gnome.shell.gschema.xml.in:293 msgid "Locations" msgstr "Staðsetningar" #: data/org.gnome.shell.gschema.xml.in:294 msgid "The locations to show in world clocks" msgstr "Staðsetningar sem á að birta í heimsklukkum" #: data/org.gnome.shell.gschema.xml.in:304 msgid "Automatic location" msgstr "Sjálfvirk staðsetning" #: data/org.gnome.shell.gschema.xml.in:305 msgid "Whether to fetch the current location or not" msgstr "Hvort eigi að sækja núverandi staðsetningu eða ekki" #: data/org.gnome.shell.gschema.xml.in:312 msgid "Location" msgstr "Staðsetning" #: data/org.gnome.shell.gschema.xml.in:313 msgid "The location for which to show a forecast" msgstr "Staðsetningin sem á að birta veðurspá fyrir" #: data/org.gnome.shell.gschema.xml.in:325 msgid "Attach modal dialog to the parent window" msgstr "Festa kvaðningarglugga við yfirglugga" #: data/org.gnome.shell.gschema.xml.in:326 #: data/org.gnome.shell.gschema.xml.in:335 #: data/org.gnome.shell.gschema.xml.in:343 #: data/org.gnome.shell.gschema.xml.in:351 #: data/org.gnome.shell.gschema.xml.in:359 msgid "" "This key overrides the key in org.gnome.mutter when running GNOME Shell." msgstr "" "Þetta hefur forgang fram yfir lykilinn í kjörstillingum org.gnome.mutter " "þegar GNOME-skelin er keyrð." #: data/org.gnome.shell.gschema.xml.in:334 msgid "Enable edge tiling when dropping windows on screen edges" msgstr "Virkja flísalögn við jaðra þegar gluggum er sleppt á skjájaðra" #: data/org.gnome.shell.gschema.xml.in:342 msgid "Workspaces are managed dynamically" msgstr "Vinnusvæðum er stýrt eftir þörfum" #: data/org.gnome.shell.gschema.xml.in:350 msgid "Workspaces only on primary monitor" msgstr "Vinnusvæði einungis á aðalskjá" #: data/org.gnome.shell.gschema.xml.in:358 msgid "Delay focus changes in mouse mode until the pointer stops moving" msgstr "" "Fresta breytingum á virkni í músarham þar til bendillinn hefur stöðvast" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "Innskráning á neti" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:144 msgid "Something’s gone wrong" msgstr "Eitthvað hefur farið úrskeiðis" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" "Því miður kom upp vandamál: ekki er hægt að birta stillingarnar fyrir þennan " "forritsviðauka. Við mælum með því að þú tilkynnir þetta vandamál til höfunda " "forritsviðaukans." #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "Tæknilegar upplýsingar" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "Heimasíða" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 msgid "Visit extension homepage" msgstr "Heimsækja vefsvæði forritsviðauka" #: js/gdm/authPrompt.js:144 js/ui/audioDeviceSelection.js:61 #: js/ui/components/networkAgent.js:109 js/ui/components/polkitAgent.js:141 #: js/ui/endSessionDialog.js:440 js/ui/extensionDownloader.js:223 #: js/ui/shellMountOperation.js:377 js/ui/shellMountOperation.js:387 #: subprojects/extensions-app/js/main.js:173 msgid "Cancel" msgstr "Hætta við" #: js/gdm/authPrompt.js:307 js/ui/components/networkAgent.js:209 #: js/ui/components/networkAgent.js:229 js/ui/components/networkAgent.js:261 #: js/ui/components/networkAgent.js:294 js/ui/components/networkAgent.js:333 #: js/ui/components/networkAgent.js:346 js/ui/components/polkitAgent.js:283 #: js/ui/shellMountOperation.js:327 msgid "Password" msgstr "Lykilorð" #: js/gdm/loginDialog.js:317 msgid "Choose Session" msgstr "Veldu setu" #: js/gdm/loginDialog.js:462 msgid "Not listed?" msgstr "Ekki á listanum?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:930 #, javascript-format msgid "(e.g., user or %s)" msgstr "(t.d., notandi eða %s)" #: js/gdm/loginDialog.js:935 js/ui/components/networkAgent.js:253 #: js/ui/components/networkAgent.js:288 js/ui/components/networkAgent.js:322 msgid "Username" msgstr "Notandanafn" #: js/gdm/loginDialog.js:1258 msgid "Login Window" msgstr "Innskráningargluggi" #: js/gdm/util.js:431 msgid "Authentication error" msgstr "Auðkenningarvilla" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:603 msgid "(or swipe finger across reader)" msgstr "(eða strjúka fingri yfir lesara)" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:608 msgid "(or place finger on reader)" msgstr "(eða setja fingur á lesara)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:84 msgctxt "search-result" msgid "Power Off" msgstr "Slökkva" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:87 msgid "power off;shutdown;halt;stop" msgstr "slökkva;hætta;endurræsa;stöðva" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:92 msgctxt "search-result" msgid "Restart" msgstr "Endurræsa" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:95 msgid "reboot;restart;" msgstr "endurræsa;" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:100 msgctxt "search-result" msgid "Lock Screen" msgstr "Læsa skjá" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:103 msgid "lock screen" msgstr "læsa skjá" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:108 msgctxt "search-result" msgid "Log Out" msgstr "Skrá út" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:111 msgid "logout;log out;sign off" msgstr "Útskráning;skrá út" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:116 msgctxt "search-result" msgid "Suspend" msgstr "Setja í bið" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:119 msgid "suspend;sleep" msgstr "hvíla;svæfa" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:124 msgctxt "search-result" msgid "Switch User" msgstr "Skipta um notanda" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:127 msgid "switch user" msgstr "skipta um notanda" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:134 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "læsa stefnu;aflæsa;stefnulás;skjár;snúningur" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:139 msgctxt "search-result" msgid "Take a Screenshot" msgstr "Taka skjámynd" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:142 msgid "screenshot;screencast;snip;capture;record" msgstr "skjámynd;skjámyndskeið;skjáupptaka;myndataka;upptaka" #: js/misc/systemActions.js:242 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "Aflæsa stefnu skjás" #: js/misc/systemActions.js:243 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "Læsa stefnu skjás" #: js/misc/util.js:129 msgid "Command not found" msgstr "Skipun fannst ekki" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:166 msgid "Could not parse command:" msgstr "Gat ekki þáttað skipun:" #: js/misc/util.js:174 #, javascript-format msgid "Execution of “%s” failed:" msgstr "Keyrsla '“%s' mistókst:" #: js/misc/util.js:191 msgid "Just now" msgstr "Í þessum töluðu orðum" #: js/misc/util.js:193 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "fyrir %d mínútu síðan" msgstr[1] "fyrir %d mínútu síðan" #: js/misc/util.js:197 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "fyrir %d klukkustund síðan" msgstr[1] "fyrir %d klukkustundum síðan" #: js/misc/util.js:201 js/ui/dateMenu.js:167 msgid "Yesterday" msgstr "Í gær" #: js/misc/util.js:203 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "fyrir %d degi" msgstr[1] "fyrir %d dögum síðan" #: js/misc/util.js:207 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "fyrir %d viku" msgstr[1] "fyrir %d vikum síðan" #: js/misc/util.js:211 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "fyrir %d mánuði" msgstr[1] "fyrir %d mánuðum" #: js/misc/util.js:214 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "fyrir %d ári" msgstr[1] "fyrir %d árum" #. Translators: Time in 24h format #: js/misc/util.js:247 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/util.js:253 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "Í gær klukkan H:∶%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/util.js:259 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, klukkan %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/util.js:265 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%d. %B, kl. %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/util.js:271 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%d. %B %Y, kl. %H∶%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/util.js:276 msgid "%l∶%M %p" msgstr "%l:%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/util.js:282 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "í gær, kl. %I:%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/util.js:288 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/util.js:294 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%d. %B, kl. %H∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/util.js:300 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%d. %B %Y, kl. %H∶%M %p" #: js/portalHelper/main.js:55 msgid "Hotspot Login" msgstr "Innskráning á tengipunkt (hotspot)" #: js/portalHelper/main.js:108 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "Tenging þín við þennan aðgangsstað er ekki örugg. Aðilar í næsta nágrenni " "geta séð lykilorð og aðrar upplýsingar sem þú setur inn á þessari síðu." #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:39 js/ui/status/location.js:350 msgid "Deny Access" msgstr "Hafna aðgangi" #: js/ui/accessDialog.js:40 js/ui/status/location.js:355 msgid "Grant Access" msgstr "Veita aðgang" #: js/ui/appDisplay.js:1728 msgid "Unnamed Folder" msgstr "Nafnlaus mappa" #: js/ui/appFavorites.js:166 #, javascript-format msgid "%s has been pinned to the dash." msgstr "%s var bætt við á stjórnborð." #: js/ui/appFavorites.js:199 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "%s var fjarlægt af stjórnborði." #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:46 msgid "Open Windows" msgstr "Opna glugga" #: js/ui/appMenu.js:54 msgid "New Window" msgstr "Nýr gluggi" #: js/ui/appMenu.js:81 msgid "Show Details" msgstr "Sýna ítarlegri upplýsingar" #: js/ui/appMenu.js:97 msgid "Quit" msgstr "Hætta" #: js/ui/appMenu.js:157 js/ui/dash.js:249 msgid "Unpin" msgstr "Losa" #: js/ui/appMenu.js:158 msgid "Pin to Dash" msgstr "Festa á stjórnborð" #: js/ui/appMenu.js:175 msgid "Launch using Integrated Graphics Card" msgstr "Ræsa með innbyggðu skjákorti" #: js/ui/appMenu.js:176 msgid "Launch using Discrete Graphics Card" msgstr "Ræsa með stakstæðu skjákorti" #: js/ui/audioDeviceSelection.js:41 msgid "Select Audio Device" msgstr "Veldu hljóðtæki" #: js/ui/audioDeviceSelection.js:56 js/ui/status/volume.js:63 msgid "Sound Settings" msgstr "Hljóðstillingar" #: js/ui/audioDeviceSelection.js:69 msgid "Headphones" msgstr "Heyrnartól" #: js/ui/audioDeviceSelection.js:71 msgid "Headset" msgstr "Heyrnartól með hljóðnema" #: js/ui/audioDeviceSelection.js:73 js/ui/status/volume.js:322 msgid "Microphone" msgstr "Hljóðnemi" #: js/ui/backgroundMenu.js:14 msgid "Change Background…" msgstr "Breyta _bakgrunni skjáborðs…" #: js/ui/backgroundMenu.js:16 msgid "Display Settings" msgstr "Birtingarstillingar" #: js/ui/backgroundMenu.js:17 #: subprojects/extensions-app/data/ui/extension-row.ui:122 msgid "Settings" msgstr "Stillingar" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:35 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:61 msgctxt "grid sunday" msgid "S" msgstr "Su" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:63 msgctxt "grid monday" msgid "M" msgstr "Má" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:65 msgctxt "grid tuesday" msgid "T" msgstr "Þr" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:67 msgctxt "grid wednesday" msgid "W" msgstr "Mi" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:69 msgctxt "grid thursday" msgid "T" msgstr "Fi" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:71 msgctxt "grid friday" msgid "F" msgstr "Fö" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:73 msgctxt "grid saturday" msgid "S" msgstr "La" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:414 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:424 msgid "%OB %Y" msgstr "%OB %Y" #: js/ui/calendar.js:485 msgid "Previous month" msgstr "Fyrri mánuður" #: js/ui/calendar.js:503 msgid "Next month" msgstr "Næsti mánuður" #: js/ui/calendar.js:654 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:713 msgid "Week %V" msgstr "Vika %V" #: js/ui/calendar.js:892 msgid "No Notifications" msgstr "Engar tilkynningar" #: js/ui/calendar.js:949 msgid "Do Not Disturb" msgstr "Ekki trufla" #: js/ui/calendar.js:970 msgid "Clear" msgstr "Hreinsa" #. Translators: %s is an application name #: js/ui/closeDialog.js:40 #, javascript-format msgid "“%s” is not responding." msgstr "“%s” svarar ekki." #: js/ui/closeDialog.js:41 msgid "" "You may choose to wait a short while for it to continue or force the " "application to quit entirely." msgstr "" "Þú getur annað hvort hinkrað augnablik og leyft forritinu að halda áfram eða " "þú getur þvingað forritið til að slökkva algjörlega á sér." #: js/ui/closeDialog.js:69 msgid "Force Quit" msgstr "Þvinga til að hætta" #: js/ui/closeDialog.js:74 msgid "Wait" msgstr "Bíða" #: js/ui/components/automountManager.js:84 msgid "External drive connected" msgstr "Utanáliggjandi drif tengt" #: js/ui/components/automountManager.js:96 msgid "External drive disconnected" msgstr "Utanáliggjandi drif aftengt" #: js/ui/components/automountManager.js:207 msgid "Unable to unlock volume" msgstr "Gat ekki aflæst gagnageymslu" #: js/ui/components/automountManager.js:208 msgid "The installed udisks version does not support the PIM setting" msgstr "" #: js/ui/components/autorunManager.js:316 #, javascript-format msgid "Open with %s" msgstr "Opna með %s" #: js/ui/components/networkAgent.js:91 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router." msgstr "" "Einnig gætirðu tengst með því að ýta á “WPS”-hnappinn á netbeininum þínum." #: js/ui/components/networkAgent.js:103 js/ui/status/network.js:436 msgid "Connect" msgstr "Tengjast" #: js/ui/components/networkAgent.js:218 msgid "Key" msgstr "Lykill" #: js/ui/components/networkAgent.js:269 js/ui/components/networkAgent.js:308 msgid "Private key password" msgstr "Leyniorð einkalykils" #: js/ui/components/networkAgent.js:302 msgid "Identity" msgstr "Auðkenni" #: js/ui/components/networkAgent.js:328 msgid "Service" msgstr "Þjónusta" #: js/ui/components/networkAgent.js:366 js/ui/components/networkAgent.js:402 #: js/ui/components/networkAgent.js:747 js/ui/components/networkAgent.js:768 msgid "Authentication required" msgstr "Auðkenningar krafist" #: js/ui/components/networkAgent.js:367 js/ui/components/networkAgent.js:748 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network " "“%s”." msgstr "" "Lykilorða eða dulritunarlykla er krafist til að fá aðgang að þráðlausa " "netinu “%s”." #: js/ui/components/networkAgent.js:371 js/ui/components/networkAgent.js:752 msgid "Wired 802.1X authentication" msgstr "Kapaltengd 802.1X auðkenning" #: js/ui/components/networkAgent.js:374 msgid "Network name" msgstr "Heiti netkerfis" #: js/ui/components/networkAgent.js:382 js/ui/components/networkAgent.js:756 msgid "DSL authentication" msgstr "DSL auðkenning" #: js/ui/components/networkAgent.js:389 js/ui/components/networkAgent.js:761 msgid "PIN code required" msgstr "Krafist er PIN-númers" #: js/ui/components/networkAgent.js:390 js/ui/components/networkAgent.js:762 msgid "PIN code is needed for the mobile broadband device" msgstr "" "Þú þarft að slá inn PIN númer til að þess að tengjast við símaþjónustuna" #: js/ui/components/networkAgent.js:392 msgid "PIN" msgstr "PIN-númer" #: js/ui/components/networkAgent.js:403 js/ui/components/networkAgent.js:753 #: js/ui/components/networkAgent.js:757 js/ui/components/networkAgent.js:769 #: js/ui/components/networkAgent.js:773 #, javascript-format msgid "A password is required to connect to “%s”." msgstr "Það er nauðsynlegt að gefa upp lykilorð til að tengjast við “%s”." #: js/ui/components/networkAgent.js:736 msgid "Network Manager" msgstr "Netstjórnun" #: js/ui/components/networkAgent.js:772 msgid "VPN password" msgstr "VPN-lykilorð" #: js/ui/components/polkitAgent.js:41 msgid "Authentication Required" msgstr "Auðkenningar krafist" #: js/ui/components/polkitAgent.js:81 msgid "Administrator" msgstr "Kerfisstjóri" #: js/ui/components/polkitAgent.js:146 msgid "Authenticate" msgstr "Auðkenna" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:260 js/ui/shellMountOperation.js:403 msgid "Sorry, that didn’t work. Please try again." msgstr "Æ, þetta virkaði ekki. Endilega reyndu aftur." #: js/ui/components/telepathyClient.js:828 #, javascript-format msgid "%s is now known as %s" msgstr "%s er nú þekkt(ur) sem %s" #: js/ui/ctrlAltTab.js:22 js/ui/overviewControls.js:417 msgid "Windows" msgstr "Gluggar" #: js/ui/dash.js:205 js/ui/dash.js:251 msgid "Show Applications" msgstr "Sýna forrit" #. Translators: this is the name of the dock/favorites area on #. the left of the overview #: js/ui/dash.js:398 msgid "Dash" msgstr "Stjórnborð" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:83 msgid "%B %-d %Y" msgstr "%-d. %B, %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:90 msgid "%A %B %e %Y" msgstr "%A %e. %B, %Y" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:156 msgctxt "calendar heading" msgid "%B %-d" msgstr "%B %-d" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:159 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%B %-d %Y" #: js/ui/dateMenu.js:165 msgid "Today" msgstr "Í dag" #: js/ui/dateMenu.js:169 msgid "Tomorrow" msgstr "Á morgun" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:200 msgctxt "event list time" msgid "All Day" msgstr "Allan daginn" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:222 msgid "%m/%d" msgstr "%m/%d" #: js/ui/dateMenu.js:273 msgid "No Events" msgstr "Engir atburðir" #: js/ui/dateMenu.js:396 msgid "Add world clocks…" msgstr "Bæta við heimsklukkum…" #: js/ui/dateMenu.js:397 msgid "World Clocks" msgstr "Heimsklukkur" #: js/ui/dateMenu.js:681 msgid "Loading…" msgstr "Hleð inn..." #: js/ui/dateMenu.js:691 msgid "Go online for weather information" msgstr "Fara á netið eftir veðurupplýsingum" #: js/ui/dateMenu.js:693 msgid "Weather information is currently unavailable" msgstr "Veðurupplýsingar eru ekki tiltækar í augnablikinu" #: js/ui/dateMenu.js:703 msgid "Weather" msgstr "Veður" #: js/ui/dateMenu.js:705 msgid "Select weather location…" msgstr "Veldu staðsetningu fyrir veðurspár…" #: js/ui/endSessionDialog.js:41 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "Skrá út %s" #: js/ui/endSessionDialog.js:42 msgctxt "title" msgid "Log Out" msgstr "Skrá út" #: js/ui/endSessionDialog.js:45 #, javascript-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "%s verður skráður út sjálfkrafa eftir %d sekúndu." msgstr[1] "%s verður skráður út sjálfkrafa eftir %d sekúndur." #: js/ui/endSessionDialog.js:51 #, javascript-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "Þú verður skráður út sjálfkrafa eftir %d sekúndu." msgstr[1] "Þú verður skráður út sjálfkrafa eftir %d sekúndur." #: js/ui/endSessionDialog.js:58 msgctxt "button" msgid "Log Out" msgstr "Skrá út" #: js/ui/endSessionDialog.js:64 js/ui/status/system.js:167 msgctxt "title" msgid "Power Off" msgstr "Slökkva" #: js/ui/endSessionDialog.js:65 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Setja inn uppfærslur og slökkva" #: js/ui/endSessionDialog.js:68 #, javascript-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "Kerfið mun slökkva á sér sjálfkrafa eftir %d sekúndu." msgstr[1] "Kerfið mun slökkva á sér sjálfkrafa eftir %d sekúndur." #: js/ui/endSessionDialog.js:72 js/ui/endSessionDialog.js:91 msgctxt "checkbox" msgid "Install pending software updates" msgstr "Setja inn tiltækar hugbúnaðaruppfærslur" #: js/ui/endSessionDialog.js:76 msgctxt "button" msgid "Power Off" msgstr "Slökkva" #: js/ui/endSessionDialog.js:83 msgctxt "title" msgid "Restart" msgstr "Endurræsa" #: js/ui/endSessionDialog.js:84 msgctxt "title" msgid "Install Updates & Restart" msgstr "Setja inn uppfærslur og endurræsa" #: js/ui/endSessionDialog.js:87 #, javascript-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "Kerfið mun endurræsast sjálfkrafa eftir %d sekúndu." msgstr[1] "Kerfið mun endurræsast sjálfkrafa eftir %d sekúndur." #: js/ui/endSessionDialog.js:95 msgctxt "button" msgid "Restart" msgstr "Endurræsa" #: js/ui/endSessionDialog.js:103 msgctxt "title" msgid "Restart & Install Updates" msgstr "Endurræsa og setja inn uppfærslur" #: js/ui/endSessionDialog.js:106 #, javascript-format msgid "The system will automatically restart and install updates in %d second." msgid_plural "" "The system will automatically restart and install updates in %d seconds." msgstr[0] "" "Kerfið mun endurræsast sjálfkrafa og setja inn uppfærslur eftir %d sekúndu." msgstr[1] "" "Kerfið mun endurræsast sjálfkrafa og setja inn uppfærslur eftir %d sekúndur." #: js/ui/endSessionDialog.js:113 js/ui/endSessionDialog.js:134 msgctxt "button" msgid "Restart & Install" msgstr "Endurræsa & setja inn uppfærslur" #: js/ui/endSessionDialog.js:115 msgctxt "button" msgid "Install & Power Off" msgstr "Setja inn & slökkva" #: js/ui/endSessionDialog.js:116 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Slökkva á vélinni eftir að uppfærslur hafa verið settar inn" #: js/ui/endSessionDialog.js:123 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "Endurræsa og setja inn uppfærslur" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:128 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "%s %s verður sett upp eftir endurræsingu. Uppfærsla uppsetningar getur tekið " "langan tíma: gakktu úr skugga um að þú hafir tekið öryggisafrit og að tölvan " "sé tengd við rafmagn." #: js/ui/endSessionDialog.js:285 msgid "Low battery power: please plug in before installing updates." msgstr "" "Lítil hleðsla rafhlöðu: stingdu í samband við rafmagn áður en uppfærslur eru " "settar inn." #: js/ui/endSessionDialog.js:294 msgid "Some applications are busy or have unsaved work" msgstr "Sum forrit eru upptekin eða eru með óvistuð gögn" #: js/ui/endSessionDialog.js:299 msgid "Other users are logged in" msgstr "Aðrir notendur eru skráðir inn" #: js/ui/endSessionDialog.js:470 msgctxt "button" msgid "Boot Options" msgstr "Ræsivalkostir" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:675 #, javascript-format msgid "%s (remote)" msgstr "%s (fjartengt)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:678 #, javascript-format msgid "%s (console)" msgstr "%s (villuskjár)" #: js/ui/extensionDownloader.js:227 msgid "Install" msgstr "Setja inn" #: js/ui/extensionDownloader.js:233 msgid "Install Extension" msgstr "Setja inn forritsviðauka" #: js/ui/extensionDownloader.js:234 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "Sækja og setja upp '%s' frá extensions.gnome.org?" #: js/ui/extensionSystem.js:270 msgid "Extension Updates Available" msgstr "Uppfærslur forritsviðauka tiltækar" #: js/ui/extensionSystem.js:271 msgid "Extension updates are ready to be installed." msgstr "Uppfærslur fyrir forritsviðauka eru tilbúnar til uppsetningar." #: js/ui/inhibitShortcutsDialog.js:75 msgid "Allow inhibiting shortcuts" msgstr "Leyfa hindrun flýtilykla" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:78 #, javascript-format msgid "The application %s wants to inhibit shortcuts" msgstr "Forritið %s vill koma í veg fyrir notkun flýtilykla" #: js/ui/inhibitShortcutsDialog.js:79 msgid "An application wants to inhibit shortcuts" msgstr "Forrit vill koma í veg fyrir notkun flýtilykla" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:86 #, javascript-format msgid "You can restore shortcuts by pressing %s." msgstr "Þú getur endurheimt flýtilykla með því að ýta á %s." #: js/ui/inhibitShortcutsDialog.js:97 msgid "Deny" msgstr "Hafna" #: js/ui/inhibitShortcutsDialog.js:106 msgid "Allow" msgstr "Leyfa" #: js/ui/kbdA11yDialog.js:32 msgid "Slow Keys Turned On" msgstr "Kveikt á hægum lyklum" #: js/ui/kbdA11yDialog.js:33 msgid "Slow Keys Turned Off" msgstr "Slökkt á hægum lyklum" #: js/ui/kbdA11yDialog.js:34 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "Þú hefur haldið niðri Shift-lyklinum í 8 sekúndur. Þetta er flýtileiðin " "fyrir hæga lykla, sem hefur áhrif á hvernig lyklaborðið þitt virkar." #: js/ui/kbdA11yDialog.js:40 msgid "Sticky Keys Turned On" msgstr "Kveikt á klístruðum lyklum" #: js/ui/kbdA11yDialog.js:41 msgid "Sticky Keys Turned Off" msgstr "Slökkt á klístruðum lyklum" #: js/ui/kbdA11yDialog.js:43 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "Þú hefur ýtt á Shift-lykilinn 5 sinnum í röð. Þetta er flýtileiðin fyrir " "klístraða lykla, sem hefur áhrif á hvernig lyklaborðið þitt virkar." #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" "Þú hefur ýtt á tvo lykla í einu eða á Shift-lykilinn 5 sinnum í röð. Þetta " "slekkur á klístruðum lyklum, sem hefur áhrif á hvernig lyklaborðið þitt " "virkar." #: js/ui/kbdA11yDialog.js:55 msgid "Leave On" msgstr "Halda kveiktu" #: js/ui/kbdA11yDialog.js:55 msgid "Turn On" msgstr "Kveikja á" #: js/ui/kbdA11yDialog.js:65 js/ui/status/network.js:447 msgid "Turn Off" msgstr "Slökkva" #: js/ui/kbdA11yDialog.js:65 msgid "Leave Off" msgstr "Halda slökktu" #: js/ui/keyboard.js:219 msgid "Region & Language Settings" msgstr "Lands- & tungumálastillingar" #: js/ui/lookingGlass.js:713 msgid "No extensions installed" msgstr "Engir forritsviðaukar uppsettir" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:774 #, javascript-format msgid "%s has not emitted any errors." msgstr "%s gaf ekki frá sér neinar villur." #: js/ui/lookingGlass.js:780 msgid "Hide Errors" msgstr "Fela villur" #: js/ui/lookingGlass.js:784 js/ui/lookingGlass.js:857 msgid "Show Errors" msgstr "Birta villur" #: js/ui/lookingGlass.js:793 msgid "Enabled" msgstr "Virkt" #. translators: #. * The device has been disabled #: js/ui/lookingGlass.js:796 subprojects/gvc/gvc-mixer-control.c:1900 msgid "Disabled" msgstr "Óvirkt" #: js/ui/lookingGlass.js:798 msgid "Error" msgstr "Villa" #: js/ui/lookingGlass.js:800 msgid "Out of date" msgstr "Útrunnið" #: js/ui/lookingGlass.js:802 msgid "Downloading" msgstr "Hala inn" #: js/ui/lookingGlass.js:835 msgid "View Source" msgstr "Skoða frumtexta" #: js/ui/lookingGlass.js:846 msgid "Web Page" msgstr "Vefsíða" #: js/ui/main.js:286 msgid "System was put in unsafe mode" msgstr "Kerfið var sett í óöruggan ham" #: js/ui/main.js:287 msgid "Applications now have unrestricted access" msgstr "Forrit hafa núna óheftan aðgang" #: js/ui/main.js:288 js/ui/overview.js:58 msgid "Undo" msgstr "Afturkalla" #: js/ui/main.js:334 msgid "Logged in as a privileged user" msgstr "Skráð inn sem notandi með auknum heimildum" #: js/ui/main.js:335 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" "Forðast ætti af öryggisástæðum að keyra setu með auknum notandaheimildum. " "Skráðu þig inn sem venjulegan notanda, ef mögulegt er." #: js/ui/main.js:384 msgid "Screen Lock disabled" msgstr "Skjálæsing er óvirk" #: js/ui/main.js:385 msgid "Screen Locking requires the GNOME display manager." msgstr "" #: js/ui/messageTray.js:1418 msgid "System Information" msgstr "Kerfisupplýsingar" #: js/ui/mpris.js:202 msgid "Unknown artist" msgstr "Óþekktur flytjandi" #: js/ui/mpris.js:212 msgid "Unknown title" msgstr "Óþekktur titill" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:327 msgid "Type to search" msgstr "Skrifaðu hér til að leita" #: js/ui/overviewControls.js:405 msgid "Applications" msgstr "Forrit" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:71 msgid "Overview" msgstr "Yfirlit" #: js/ui/padOsd.js:100 msgid "New shortcut…" msgstr "Nýr flýtilykill..." #: js/ui/padOsd.js:154 msgid "Application defined" msgstr "Forrit skilgreint" #: js/ui/padOsd.js:155 msgid "Show on-screen help" msgstr "Birta upplýsingar á skjá" #: js/ui/padOsd.js:156 msgid "Switch monitor" msgstr "Skipta um skjá" #: js/ui/padOsd.js:157 msgid "Assign keystroke" msgstr "Úthluta lyklaslætti" #: js/ui/padOsd.js:226 msgid "Done" msgstr "Lokið" #: js/ui/padOsd.js:743 msgid "Edit…" msgstr "Breyta…" #: js/ui/padOsd.js:785 js/ui/padOsd.js:902 msgid "None" msgstr "Ekkert" #: js/ui/padOsd.js:856 msgid "Press a button to configure" msgstr "Ýttu á hnapp til að stilla" #: js/ui/padOsd.js:857 msgid "Press Esc to exit" msgstr "Ýttu á ESC til að hætta" #: js/ui/padOsd.js:860 msgid "Press any key to exit" msgstr "Ýttu á einhvern lykil til að hætta" #: js/ui/panel.js:244 msgid "Activities" msgstr "Virkni" #: js/ui/panel.js:338 msgctxt "System menu in the top bar" msgid "System" msgstr "Kerfið" #: js/ui/panel.js:457 msgid "Top Bar" msgstr "Toppstika" #: js/ui/runDialog.js:58 msgid "Run a Command" msgstr "Keyra skipun" #: js/ui/runDialog.js:73 msgid "Press ESC to close" msgstr "Ýttu á ESC til að loka" #: js/ui/runDialog.js:238 msgid "Restart is not available on Wayland" msgstr "Endurræsing er ekki tiltæk á Wayland" #: js/ui/runDialog.js:243 msgid "Restarting…" msgstr "Endurræsi…" #: js/ui/screenShield.js:235 msgid "GNOME needs to lock the screen" msgstr "GNOME þarf að læsa skjánum" #. We could not become modal, so we can't activate the #. screenshield. The user is probably very upset at this #. point, but any application using global grabs is broken #. Just tell them to stop using this app #. #. XXX: another option is to kick the user into the gdm login #. screen, where we're not affected by grabs #: js/ui/screenShield.js:275 js/ui/screenShield.js:652 msgid "Unable to lock" msgstr "Gat ekki læst skjá" #: js/ui/screenShield.js:276 js/ui/screenShield.js:653 msgid "Lock was blocked by an application" msgstr "Læsing var hindruð af öðru forriti" #: js/ui/screenshot.js:1159 msgid "Selection" msgstr "Val" #: js/ui/screenshot.js:1169 msgid "Area Selection" msgstr "Val svæðis" #: js/ui/screenshot.js:1174 msgid "Screen" msgstr "Skjár" #: js/ui/screenshot.js:1184 msgid "Screen Selection" msgstr "Val skjás" #: js/ui/screenshot.js:1189 msgid "Window" msgstr "Gluggi" #: js/ui/screenshot.js:1199 msgid "Window Selection" msgstr "Val glugga" #: js/ui/screenshot.js:1237 msgid "Screenshot / Screencast" msgstr "Skjámynd / Skjámyndskeið" #: js/ui/screenshot.js:1273 msgid "Show Pointer" msgstr "Sýna bendil" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1864 msgid "Screencasts" msgstr "Skjámyndskeið" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast from 07-17-2013 10:00:46 PM.webm" #: js/ui/screenshot.js:1869 #, no-c-format msgid "Screencast from %d %t.webm" msgstr "Skjámyndskeið frá %d %t.webm" #. Translators: notification source name. #: js/ui/screenshot.js:1911 js/ui/screenshot.js:2123 msgid "Screenshot" msgstr "Skjámynd" #. Translators: notification title. #: js/ui/screenshot.js:1917 msgid "Screencast recorded" msgstr "Skjámyndskeið tekið upp" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:1919 msgid "Click here to view the video." msgstr "Smelltu hér til að skoða myndskeiðið." #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:1922 js/ui/screenshot.js:2137 msgid "Show in Files" msgstr "Sýna í skrám" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2083 #, javascript-format msgid "Screenshot from %s" msgstr "Skjámynd frá %s" #. Translators: notification title. #: js/ui/screenshot.js:2129 msgid "Screenshot captured" msgstr "Skjámynd tekin" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2131 msgid "You can paste the image from the clipboard." msgstr "Þú getur límt myndina af klippispjaldinu." #: js/ui/screenshot.js:2184 js/ui/screenshot.js:2349 msgid "Screenshot taken" msgstr "Skjámynd tekin" #: js/ui/search.js:804 msgid "Searching…" msgstr "Leita..." #: js/ui/search.js:806 msgid "No results." msgstr "Engar niðurstöður." #: js/ui/search.js:937 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "%d til viðbótar" msgstr[1] "%d til viðbótar" #: js/ui/searchController.js:87 msgid "Search" msgstr "Leita" #: js/ui/shellEntry.js:20 msgid "Copy" msgstr "Afrita" #: js/ui/shellEntry.js:25 msgid "Paste" msgstr "Líma" #: js/ui/shellEntry.js:77 msgid "Show Text" msgstr "Sýna texta" #: js/ui/shellEntry.js:79 msgid "Hide Text" msgstr "Fela texta" #: js/ui/shellEntry.js:166 msgid "Caps lock is on." msgstr "Caps Lock er á." #: js/ui/shellMountOperation.js:286 msgid "Hidden Volume" msgstr "Falinn hljóðstyrkur" #: js/ui/shellMountOperation.js:289 msgid "Windows System Volume" msgstr "Geymslueining á Windows-stýrikerfi" #: js/ui/shellMountOperation.js:292 msgid "Uses Keyfiles" msgstr "Notar lyklaskrár" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:299 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead." msgstr "" "Til að aflæsa gagnageymslu sem notar lyklaskrár skaltu nota %s " "nytjatólið í staðinn." #: js/ui/shellMountOperation.js:307 msgid "PIM Number" msgstr "PIM-númer" #: js/ui/shellMountOperation.js:366 msgid "Remember Password" msgstr "Muna lykilorð" #: js/ui/shellMountOperation.js:381 msgid "Unlock" msgstr "Aflæsa" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:392 #, javascript-format msgid "Open %s" msgstr "Opna %s" #: js/ui/shellMountOperation.js:424 msgid "The PIM must be a number or empty." msgstr "PIM-númerið verður að vera tala eða tómt." #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:466 #, javascript-format msgid "Unable to start %s" msgstr "Ekki tekst að ræsa %s" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:468 #, javascript-format msgid "Couldn’t find the %s application" msgstr "Tókst ekki að finna %s forritið" #: js/ui/status/accessibility.js:34 msgid "Accessibility" msgstr "Aukið aðgengi" #: js/ui/status/accessibility.js:44 msgid "High Contrast" msgstr "Mikil birtuskil" #: js/ui/status/accessibility.js:47 msgid "Zoom" msgstr "Aðdráttur" #: js/ui/status/accessibility.js:54 msgid "Screen Reader" msgstr "Skjálesari" #: js/ui/status/accessibility.js:58 msgid "Screen Keyboard" msgstr "Skjályklaborð" #: js/ui/status/accessibility.js:62 msgid "Visual Alerts" msgstr "Sjónrænar viðvaranir" #: js/ui/status/accessibility.js:65 msgid "Sticky Keys" msgstr "Klístraðir lyklar" #: js/ui/status/accessibility.js:68 msgid "Slow Keys" msgstr "Hægir lyklar" #: js/ui/status/accessibility.js:71 msgid "Bounce Keys" msgstr "Lyklaendurvarp" #: js/ui/status/accessibility.js:74 msgid "Mouse Keys" msgstr "Músarlyklar" #: js/ui/status/accessibility.js:131 msgid "Large Text" msgstr "Stór texti" #: js/ui/status/autoRotate.js:14 msgid "Auto Rotate" msgstr "" #: js/ui/status/bluetooth.js:151 msgid "Bluetooth" msgstr "Bluetooth" #: js/ui/status/brightness.js:34 msgid "Brightness" msgstr "Birtustig" #: js/ui/status/darkMode.js:11 msgid "Dark Mode" msgstr "" #: js/ui/status/dwellClick.js:12 msgid "Single Click" msgstr "Einsmella" #: js/ui/status/dwellClick.js:17 msgid "Double Click" msgstr "Tvísmella" #: js/ui/status/dwellClick.js:22 msgid "Drag" msgstr "Draga" #: js/ui/status/dwellClick.js:27 msgid "Secondary Click" msgstr "Aukasmellur" #: js/ui/status/dwellClick.js:36 msgid "Dwell Click" msgstr "Tímamörk tvísmellingar" #: js/ui/status/keyboard.js:833 msgid "Keyboard" msgstr "Lyklaborð" #: js/ui/status/keyboard.js:850 msgid "Show Keyboard Layout" msgstr "Birta lyklaborðsuppsetningu" #: js/ui/status/location.js:330 msgid "Allow location access" msgstr "Leyfa aðgang að staðsetningu" #. Translators: %s is an application name #: js/ui/status/location.js:332 #, javascript-format msgid "The app %s wants to access your location" msgstr "Forritið %s vill fáaðgang að staðsetningunni þinni" #: js/ui/status/location.js:342 msgid "Location access can be changed at any time from the privacy settings." msgstr "" "Hægt er að breyta aðgangi að staðsetningu hvenær sem er með því að fara í " "stillingaforritið fyrir gagnaleynd." #: js/ui/status/network.js:53 msgid "" msgstr "<óþekkt>" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:356 #, javascript-format #| msgid "%s Disconnecting" msgid "Disconnect %s" msgstr "Aftengja %s" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:358 #, javascript-format #| msgid "Connect" msgid "Connect to %s" msgstr "Tengjast við %s" #. Translators: %s is a network identifier #: js/ui/status/network.js:1107 #, javascript-format #| msgid "%s Hotspot Active" msgid "%s Hotspot" msgstr "%s tengipunktur" #: js/ui/status/nightLight.js:20 #| msgid "Night Light On" msgid "Night Light" msgstr "Næturlýsing" #: js/ui/status/powerProfiles.js:20 msgctxt "Power profile" msgid "Performance" msgstr "Afköst" #: js/ui/status/powerProfiles.js:25 msgctxt "Power profile" msgid "Balanced" msgstr "Jafnvægi" #: js/ui/status/powerProfiles.js:30 msgctxt "Power profile" msgid "Power Saver" msgstr "Orkusparnaður" #: js/ui/status/powerProfiles.js:70 #| msgctxt "search-result" #| msgid "Power off" msgid "Power Profiles" msgstr "Orkustýringarsnið" #: js/ui/status/remoteAccess.js:74 msgid "Stop Screencast" msgstr "Stöðva skjámyndskeið" #: js/ui/status/remoteAccess.js:144 #| msgid "Stop Screencast" msgid "Stop Screen Sharing" msgstr "Stöðva skjádeilingu" #: js/ui/status/rfkill.js:96 msgid "Airplane Mode" msgstr "Flugvélahamur" #: js/ui/status/system.js:90 #, javascript-format msgid "%d %%" msgstr "%d %%" #. Translators: entry in the window right click menu. #: js/ui/status/system.js:105 js/ui/windowMenu.js:29 msgid "Take Screenshot" msgstr "Taka skjámynd" #: js/ui/status/system.js:161 #| msgctxt "search-result" #| msgid "Power Off" msgid "Power Off Menu" msgstr "Slökkva-valmynd" #: js/ui/status/system.js:169 msgid "Suspend" msgstr "Hvíla" #: js/ui/status/system.js:174 msgid "Restart…" msgstr "Endurræsa…" #: js/ui/status/system.js:179 msgid "Power Off…" msgstr "Slökkva..." #: js/ui/status/system.js:186 #: subprojects/extensions-app/data/ui/extensions-window.ui:190 msgid "Log Out…" msgstr "Skrá út..." #: js/ui/status/system.js:191 msgid "Switch User…" msgstr "Skipta um notanda…" #: js/ui/status/system.js:235 #| msgctxt "search-result" #| msgid "Lock Screen" msgctxt "action" msgid "Lock Screen" msgstr "Læsa skjá" #: js/ui/status/thunderbolt.js:256 msgid "Thunderbolt" msgstr "Thunderbolt" #: js/ui/status/thunderbolt.js:317 msgid "Unknown Thunderbolt device" msgstr "Óþekkt Thunderbolt-tæki" #: js/ui/status/thunderbolt.js:318 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" "Nýtt tæki fannst á meðan þú varst í burtu. Aftengdu og tengdu svo tækið " "aftur til að byrja að nota það." #: js/ui/status/thunderbolt.js:321 msgid "Unauthorized Thunderbolt device" msgstr "Óauðkennt Thunderbolt-tæki" #: js/ui/status/thunderbolt.js:322 msgid "" "New device has been detected and needs to be authorized by an administrator." msgstr "Nýtt tæki hefur fundist og þarf það að fá heimild frá kerfisstjóra." #: js/ui/status/thunderbolt.js:328 msgid "Thunderbolt authorization error" msgstr "Villa í auðkenningu á Thunderbolt" #: js/ui/status/thunderbolt.js:329 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "Gat ekki auðkennt Thunderbolt-tæki: %s" #: js/ui/status/volume.js:194 msgid "Volume changed" msgstr "Hljóðstyrkur breyttist" #: js/ui/status/volume.js:256 msgid "Volume" msgstr "Hljóðstyrkur" #: js/ui/status/volume.js:272 #| msgid "%u Output" #| msgid_plural "%u Outputs" msgid "Sound Output" msgstr "Hljóðúttak" #: js/ui/status/volume.js:340 #| msgid "%u Input" #| msgid_plural "%u Inputs" msgid "Sound Input" msgstr "Hljóðinntak" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:20 msgid "Mirror" msgstr "Spegla" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:29 msgid "Join Displays" msgstr "Tengja skjái" #. Translators: this is for using only an external display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:39 msgid "External Only" msgstr "Einungis utanáliggjandi" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:47 msgid "Built-in Only" msgstr "Einungis innbyggt" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:364 msgid "%A %B %-d" msgstr "%A, %-d. %B" #: js/ui/unlockDialog.js:370 msgid "Swipe up to unlock" msgstr "Strjúka upp til að aflæsa" #: js/ui/unlockDialog.js:371 msgid "Click or press a key to unlock" msgstr "Smelltu eða ýttu á lykil til að aflæsa" #: js/ui/unlockDialog.js:554 msgid "Unlock Window" msgstr "Aflæsa glugga" #: js/ui/unlockDialog.js:563 msgid "Log in as another user" msgstr "Skrá inn sem annar notandi" #: js/ui/welcomeDialog.js:36 #, javascript-format msgid "Welcome to GNOME %s" msgstr "Velkomin í GNOME %s" #: js/ui/welcomeDialog.js:37 msgid "If you want to learn your way around, check out the tour." msgstr "" #: js/ui/welcomeDialog.js:46 msgid "No Thanks" msgstr "Nei, takk" #: js/ui/welcomeDialog.js:51 msgid "Take Tour" msgstr "Skoðaðu kynninguna" #: js/ui/windowAttentionHandler.js:20 #, javascript-format msgid "“%s” is ready" msgstr "“%s' er tilbúið" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:62 msgid "Keep these display settings?" msgstr "Halda þessum skjástillingum?" #: js/ui/windowManager.js:72 msgid "Revert Settings" msgstr "Afturkalla stillingar" #: js/ui/windowManager.js:77 msgid "Keep Changes" msgstr "Halda breytingum" #: js/ui/windowManager.js:97 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "Breytingar á stillingum verða afturkallaðar eftir %d sekúndu" msgstr[1] "Breytingar á stillingum verða afturkallaðar eftir %d sekúndur" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:544 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:41 msgid "Hide" msgstr "Fela" #: js/ui/windowMenu.js:48 msgid "Restore" msgstr "Endurheimta" #: js/ui/windowMenu.js:52 msgid "Maximize" msgstr "Hámarka" #: js/ui/windowMenu.js:59 msgid "Move" msgstr "Færa" #: js/ui/windowMenu.js:65 msgid "Resize" msgstr "Breyta stærð" #: js/ui/windowMenu.js:72 msgid "Move Titlebar Onscreen" msgstr "Flytja titilslá á skjáinn" #: js/ui/windowMenu.js:77 msgid "Always on Top" msgstr "Alltaf efst" #: js/ui/windowMenu.js:96 msgid "Always on Visible Workspace" msgstr "Alltaf á sjáanlegu vinnusvæði" #: js/ui/windowMenu.js:110 msgid "Move to Workspace Left" msgstr "Flytja á vinnusvæðið til vinstri" #: js/ui/windowMenu.js:116 msgid "Move to Workspace Right" msgstr "Flytja á vinnusvæðið til hægri" #: js/ui/windowMenu.js:122 msgid "Move to Workspace Up" msgstr "Færa yfir á vinnusvæði fyrir ofan" #: js/ui/windowMenu.js:128 msgid "Move to Workspace Down" msgstr "Færa yfir á vinnusvæði fyrir neðan" #: js/ui/windowMenu.js:146 msgid "Move to Monitor Up" msgstr "Færa á skjá fyrir ofan" #: js/ui/windowMenu.js:155 msgid "Move to Monitor Down" msgstr "Færa á skjá fyrir neðan" #: js/ui/windowMenu.js:164 msgid "Move to Monitor Left" msgstr "Færa á skjá til vinstri" #: js/ui/windowMenu.js:173 msgid "Move to Monitor Right" msgstr "Færa á skjá til hægri" #: js/ui/windowMenu.js:181 msgid "Close" msgstr "Loka" #: src/calendar-server/evolution-calendar.desktop.in:3 msgid "Evolution Calendar" msgstr "Evolution dagatal" #: src/main.c:435 subprojects/extensions-tool/src/main.c:321 msgid "Print version" msgstr "Prenta útgáfunúmer" #: src/main.c:441 msgid "Mode used by GDM for login screen" msgstr "Hamur sem GDM notar fyrir innskráningarglugga" #: src/main.c:447 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "Nota sérstakan ham, t.d. \"gdm\" fyrir innskráningarskjá" #: src/main.c:453 msgid "List possible modes" msgstr "Sýna alla mögulega hami" #: src/shell-app.c:305 msgctxt "program" msgid "Unknown" msgstr "Óþekkt" #: src/shell-app.c:556 #, c-format msgid "Failed to launch “%s”" msgstr "Mistókst að ræsa \"“%s”" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match." msgstr "Lykilorðin stemma ekki" #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "Lykilorðið getur ekki verið autt" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "Notandi hafnaði auðkenningarglugga" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/js/main.js:212 #: subprojects/extensions-app/data/ui/extensions-window.ui:18 #: subprojects/extensions-app/data/ui/extensions-window.ui:83 msgid "Extensions" msgstr "Forritsviðaukar" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 msgid "Manage your GNOME Extensions" msgstr "Sýsla með GNOME Shell Extension forritsviðauka" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:17 #: subprojects/extensions-app/js/main.js:216 msgid "The GNOME Project" msgstr "GNOME verkefnið" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:36 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "Stilla GNOME Shell Extension forritsviðauka" #: subprojects/extensions-app/js/main.js:130 #: subprojects/extensions-app/js/main.js:141 msgid "No Matches" msgstr "Engar samsvaranir" #: subprojects/extensions-app/js/main.js:169 #, javascript-format msgid "Remove “%s”?" msgstr "Fjarlægja „%s“?" #: subprojects/extensions-app/js/main.js:170 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "" #: subprojects/extensions-app/js/main.js:174 msgid "Remove" msgstr "Fjarlægja" #: subprojects/extensions-app/js/main.js:211 msgid "translator-credits" msgstr "Sveinn í Felli, sv1@fellsnet.is" #: subprojects/extensions-app/js/main.js:339 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "" msgstr[1] "" #: subprojects/extensions-app/js/main.js:481 msgid "The extension is incompatible with the current GNOME version" msgstr "Þessi forritsviðauki er ósamrýmanlegur við þessa útgáfu af GNOME" #: subprojects/extensions-app/js/main.js:484 #: subprojects/extensions-app/data/ui/extension-row.ui:52 msgid "The extension had an error" msgstr "Villa fannst í forritsviðaukanum" #: subprojects/extensions-app/data/ui/extension-row.ui:62 msgid "The extension can be updated" msgstr "Þennan forritsviðauka er hægt að uppfæra" #: subprojects/extensions-app/data/ui/extension-row.ui:112 msgid "Website" msgstr "Vefsvæði" #: subprojects/extensions-app/data/ui/extension-row.ui:134 msgid "Remove…" msgstr "Fjarlægja…" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Help" msgstr "Hjálp" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "Um forritsviðauka" #: subprojects/extensions-app/data/ui/extensions-window.ui:84 msgid "" "Extensions can cause performance and stability issues. Disable extensions if " "you encounter problems with your system." msgstr "" #: subprojects/extensions-app/data/ui/extensions-window.ui:98 msgid "Manually Installed" msgstr "Uppsett handvirkt" #: subprojects/extensions-app/data/ui/extensions-window.ui:99 #: subprojects/extensions-app/data/ui/extensions-window.ui:134 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" "Til að finna og setja upp forritsviðauka, ættirðu að heimsækja extensions.gnome.org." #: subprojects/extensions-app/data/ui/extensions-window.ui:112 msgid "Built-In" msgstr "Innbyggt" #: subprojects/extensions-app/data/ui/extensions-window.ui:133 msgid "No Installed Extensions" msgstr "Engir uppsettir forritsviðaukar" #: subprojects/extensions-app/data/ui/extensions-window.ui:145 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" #: subprojects/extensions-app/data/ui/extensions-window.ui:175 msgid "Extension Updates Ready" msgstr "Uppfærslur fyrir forritsviðauka eru tilbúnar" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:222 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "" #: subprojects/extensions-tool/src/command-create.c:296 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" #: subprojects/extensions-tool/src/command-create.c:302 #: subprojects/extensions-tool/src/main.c:238 msgid "Name" msgstr "Nafn" #: subprojects/extensions-tool/src/command-create.c:316 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" #: subprojects/extensions-tool/src/command-create.c:322 #: subprojects/extensions-tool/src/main.c:241 msgid "Description" msgstr "Lýsing" #: subprojects/extensions-tool/src/command-create.c:336 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" #: subprojects/extensions-tool/src/command-create.c:363 msgid "Choose one of the available templates:\n" msgstr "" #: subprojects/extensions-tool/src/command-create.c:377 msgid "Template" msgstr "Sniðmát" #: subprojects/extensions-tool/src/command-create.c:432 msgid "The unique identifier of the new extension" msgstr "" #: subprojects/extensions-tool/src/command-create.c:435 msgid "NAME" msgstr "NAFN" #: subprojects/extensions-tool/src/command-create.c:436 msgid "The user-visible name of the new extension" msgstr "" #: subprojects/extensions-tool/src/command-create.c:438 msgid "DESCRIPTION" msgstr "LÝSING" #: subprojects/extensions-tool/src/command-create.c:440 msgid "A short description of what the extension does" msgstr "" #: subprojects/extensions-tool/src/command-create.c:443 msgid "TEMPLATE" msgstr "SNIÐMÁT" #: subprojects/extensions-tool/src/command-create.c:444 msgid "The template to use for the new extension" msgstr "" #: subprojects/extensions-tool/src/command-create.c:450 msgid "Enter extension information interactively" msgstr "" #: subprojects/extensions-tool/src/command-create.c:458 msgid "Create a new extension" msgstr "Búa til nýjan forritviðauka" #: subprojects/extensions-tool/src/command-create.c:476 #: subprojects/extensions-tool/src/command-list.c:172 msgid "Unknown arguments" msgstr "Óþekkt viðföng" #: subprojects/extensions-tool/src/command-create.c:501 msgid "UUID, name and description are required" msgstr "UUID, nafn og lýsing eru nauðsynleg" #: subprojects/extensions-tool/src/command-disable.c:46 #: subprojects/extensions-tool/src/command-enable.c:46 #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:64 #: subprojects/extensions-tool/src/main.c:146 msgid "Failed to connect to GNOME Shell\n" msgstr "Ekki tókst að tengjast GNOME Shell\n" #: subprojects/extensions-tool/src/command-disable.c:53 #: subprojects/extensions-tool/src/command-enable.c:53 #, c-format msgid "Extension “%s” does not exist\n" msgstr "Forritsviðaukinn “%s” er ekki til\n" #: subprojects/extensions-tool/src/command-disable.c:101 msgid "Disable an extension" msgstr "Gera forritsviðauka óvirkan" #: subprojects/extensions-tool/src/command-disable.c:119 #: subprojects/extensions-tool/src/command-enable.c:119 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "Ekkert UUID-auðkenni uppgefið" #: subprojects/extensions-tool/src/command-disable.c:124 #: subprojects/extensions-tool/src/command-enable.c:124 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "Fleiri en eitt UUID-auðkenni uppgefið" #: subprojects/extensions-tool/src/command-enable.c:101 msgid "Enable an extension" msgstr "Virkja forritsviðauka" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:155 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "Forritsviðaukinn “%s” er ekki til\n" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "Birta upplýsingar um forritsviðauka" #: subprojects/extensions-tool/src/command-install.c:173 msgid "Overwrite an existing extension" msgstr "Skrifa yfir fyrirliggjandi forritsviðauka" #: subprojects/extensions-tool/src/command-install.c:175 msgid "EXTENSION_BUNDLE" msgstr "FORRITSVIÐAUKAVÖNDULL" #: subprojects/extensions-tool/src/command-install.c:184 msgid "Install an extension bundle" msgstr "Setja inn forritsviðaukavöndul" #: subprojects/extensions-tool/src/command-install.c:202 msgid "No extension bundle specified" msgstr "Enginn forritsviðaukavöndull tilgreindur" #: subprojects/extensions-tool/src/command-install.c:208 msgid "More than one extension bundle specified" msgstr "Fleiri en einn forritsviðaukavöndull tilgreindur" #: subprojects/extensions-tool/src/command-list.c:128 msgid "Show user-installed extensions" msgstr "Birta forritsviðauka uppsetta af notanda" #: subprojects/extensions-tool/src/command-list.c:131 msgid "Show system-installed extensions" msgstr "Birta forritsviðauka uppsetta af kerfinu" #: subprojects/extensions-tool/src/command-list.c:134 msgid "Show enabled extensions" msgstr "Birta virka forritsviðauka" #: subprojects/extensions-tool/src/command-list.c:137 msgid "Show disabled extensions" msgstr "Birta óvirka forritsviðauka" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show extensions with preferences" msgstr "Birta forritsviðauka með kjörstillingum" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show extensions with updates" msgstr "Birta forritsviðauka með uppfærslum" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Print extension details" msgstr "Birta nánari upplýsingar um forritsviðauka" #: subprojects/extensions-tool/src/command-list.c:154 msgid "List installed extensions" msgstr "Gera lista yfir uppsetta forritsviðauka" #: subprojects/extensions-tool/src/command-pack.c:450 msgid "FILE" msgstr "SKRÁ" #: subprojects/extensions-tool/src/command-pack.c:451 msgid "Additional source to include in the bundle" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:454 msgid "SCHEMA" msgstr "SKEMA" #: subprojects/extensions-tool/src/command-pack.c:455 msgid "A GSettings schema that should be included" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:457 #: subprojects/extensions-tool/src/command-pack.c:468 msgid "DIRECTORY" msgstr "MAPPA" #: subprojects/extensions-tool/src/command-pack.c:459 msgid "The directory where translations are found" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:461 msgid "DOMAIN" msgstr "LÉN" #: subprojects/extensions-tool/src/command-pack.c:463 msgid "The gettext domain to use for translations" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "Overwrite an existing pack" msgstr "Skrifa yfir fyrirliggjandi pakka" #: subprojects/extensions-tool/src/command-pack.c:470 msgid "The directory where the pack should be created" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:472 msgid "SOURCE_DIRECTORY" msgstr "UPPRUNAMAPPA" #: subprojects/extensions-tool/src/command-pack.c:481 msgid "Create an extension bundle" msgstr "Búa til forritsviðaukavöndul" #: subprojects/extensions-tool/src/command-pack.c:501 msgid "More than one source directory specified" msgstr "Meira en ein grunnmappa skilgreind" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "Forritsviðaukinn “%s” er ekki með kjörstillingar\n" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "Gat ekki opnað kjörstillingar fyrir forritsviðaukann “%s”: %s\n" #: subprojects/extensions-tool/src/command-prefs.c:87 msgid "Opens extension preferences" msgstr "Opnar kjörstillingar forritsviðauka" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "Frumstilla forritviðauka" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "Get ekki fjarlægt forritsviðauka kerfisins\n" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "Mistókst að fjarlægja “%s”\n" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "Fjarlægja forritsviðauka" #: subprojects/extensions-tool/src/main.c:72 msgid "Do not print error messages" msgstr "Ekki birta villuskilaboð" #: subprojects/extensions-tool/src/main.c:244 msgid "Path" msgstr "Slóð" #: subprojects/extensions-tool/src/main.c:247 msgid "URL" msgstr "URL-slóð" #: subprojects/extensions-tool/src/main.c:250 msgid "Original author" msgstr "Upprunalegur höfundur" #: subprojects/extensions-tool/src/main.c:253 msgid "Version" msgstr "Útgáfa" #: subprojects/extensions-tool/src/main.c:256 msgid "State" msgstr "Staða" #: subprojects/extensions-tool/src/main.c:294 msgid "“version” takes no arguments" msgstr "“version” tekur engin viðföng" #: subprojects/extensions-tool/src/main.c:296 #: subprojects/extensions-tool/src/main.c:316 msgid "Usage:" msgstr "Notkun:" #: subprojects/extensions-tool/src/main.c:299 msgid "Print version information and exit." msgstr "Birta upplýsingar um útgáfu og hætta." #: subprojects/extensions-tool/src/main.c:314 #: subprojects/extensions-tool/src/main.c:317 msgid "COMMAND" msgstr "SKIPUN" #: subprojects/extensions-tool/src/main.c:317 msgid "[ARGS…]" msgstr "[VIÐFÖNG…]" #: subprojects/extensions-tool/src/main.c:319 msgid "Commands:" msgstr "Skipanir:" #: subprojects/extensions-tool/src/main.c:320 msgid "Print help" msgstr "Birta hjálp" #: subprojects/extensions-tool/src/main.c:322 msgid "Enable extension" msgstr "Virkja forritsviðauka" #: subprojects/extensions-tool/src/main.c:323 msgid "Disable extension" msgstr "Gera forritsviðauka óvirkan" #: subprojects/extensions-tool/src/main.c:324 msgid "Reset extension" msgstr "Frumstilla forritviðauka" #: subprojects/extensions-tool/src/main.c:325 msgid "Uninstall extension" msgstr "Fjarlægja forritsviðauka" #: subprojects/extensions-tool/src/main.c:326 msgid "List extensions" msgstr "Gera lista yfir forritsviðauka" #: subprojects/extensions-tool/src/main.c:327 #: subprojects/extensions-tool/src/main.c:328 msgid "Show extension info" msgstr "Birta upplýsingar um forritsviðauka" #: subprojects/extensions-tool/src/main.c:329 msgid "Open extension preferences" msgstr "Opna kjörstillingar forritsviðauka" #: subprojects/extensions-tool/src/main.c:330 msgid "Create extension" msgstr "Búa til forritviðauka" #: subprojects/extensions-tool/src/main.c:331 msgid "Package extension" msgstr "Pakka forritsviðauka" #: subprojects/extensions-tool/src/main.c:332 msgid "Install extension bundle" msgstr "Setja inn forritsviðaukavöndul" #: subprojects/extensions-tool/src/main.c:334 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "Notaðu “%s” til að fá ítarlega hjálp.\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "Einfalt" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "Tómur forritsviðauki" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "Vísir" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "Bæta táknmynd við efstu stikuna" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1907 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u úttak" msgstr[1] "%u úttök" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1917 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u inntak" msgstr[1] "%u inntök" #: subprojects/gvc/gvc-mixer-control.c:2867 msgid "System Sounds" msgstr "Kerfishljóð" #~ msgid "Bluetooth Settings" #~ msgstr "Stillingar Bluetooth" #, javascript-format #~ msgid "%d Connected" #~ msgid_plural "%d Connected" #~ msgstr[0] "%d tengt" #~ msgstr[1] "%d tengt" #~ msgid "Bluetooth On" #~ msgstr "Bluetooth kveikt" #~ msgid "Bluetooth Off" #~ msgstr "Bluetooth slökkt" #~ msgid "Location Enabled" #~ msgstr "Staðsetning virk" #~ msgid "Disable" #~ msgstr "Gera óvirkt" #~ msgid "Privacy Settings" #~ msgstr "Stillingar á friðhelgi" #~ msgid "Location In Use" #~ msgstr "Staðsetning í notkun" #~ msgid "Location Disabled" #~ msgstr "Staðsetning óvirk" #~ msgid "Enable" #~ msgstr "Virkja" #, javascript-format #~ msgid "%s Off" #~ msgstr "%s slökkt" #, javascript-format #~ msgid "%s Connected" #~ msgstr "%s tengt" #, javascript-format #~ msgid "%s Unmanaged" #~ msgstr "%s óstýrt" #, javascript-format #~ msgid "%s Connecting" #~ msgstr "%s tengist" #, javascript-format #~ msgid "%s Requires Authentication" #~ msgstr "%s krefst auðkenningar" #, javascript-format #~ msgid "Firmware Missing For %s" #~ msgstr "Grunnhugbúnað (firmware) vantar fyrir %s" #, javascript-format #~ msgid "%s Unavailable" #~ msgstr "%s er ekki tiltækt" #, javascript-format #~ msgid "%s Connection Failed" #~ msgstr "%s tenging mistókst" #~ msgid "Wired Settings" #~ msgstr "Stillingar nets um kapal" #~ msgid "Mobile Broadband Settings" #~ msgstr "Stillingar ferðabreiðbands" #, javascript-format #~ msgid "%s Hardware Disabled" #~ msgstr "%s vélbúnaður óvirkur" #, javascript-format #~ msgid "%s Disabled" #~ msgstr "%s óvirkt" #~ msgid "Connect to Internet" #~ msgstr "Tengjast internetinu" #~ msgid "Airplane Mode is On" #~ msgstr "Flugvélahamur virkur" #~ msgid "Wi-Fi is disabled when airplane mode is on." #~ msgstr "Þráðlaust Wi-Fi net er óvirkt þegar flugvélahamur er virkur." #~ msgid "Turn Off Airplane Mode" #~ msgstr "Slökkva á flugvélaham" #~ msgid "Wi-Fi is Off" #~ msgstr "Slökkt á þráðlausu neti" #~ msgid "Wi-Fi needs to be turned on in order to connect to a network." #~ msgstr "Kveikja verður á þráðlausu Wi-Fi neti til að tengjast netkerfi." #~ msgid "Turn On Wi-Fi" #~ msgstr "Kveikja á þráðlausu neti" #~ msgid "Wi-Fi Networks" #~ msgstr "Þráðlaus Wi-Fi netkerfi" #~ msgid "Select a network" #~ msgstr "Veldu netkerfi" #~ msgid "No Networks" #~ msgstr "Engin netkerfi" #~ msgid "Use hardware switch to turn off" #~ msgstr "Nota vélbúnaðarrofa til að slökkva." #~ msgid "Select Network" #~ msgstr "Veldu netkerfi" #~ msgid "Wi-Fi Settings" #~ msgstr "Stillingar þráðlauss netkerfis" #, javascript-format #~ msgid "%s Not Connected" #~ msgstr "%s ekki tengdur" #~ msgid "connecting…" #~ msgstr "tengist..." #~ msgid "authentication required" #~ msgstr "auðkenningar krafist" #~ msgid "connection failed" #~ msgstr "tenging mistókst" #~ msgid "VPN Settings" #~ msgstr "VPN stillingar" #~ msgid "VPN" #~ msgstr "VPN" #~ msgid "VPN Off" #~ msgstr "Slökkt á VPN" #~ msgid "Network Settings" #~ msgstr "Stillingar nets" #, javascript-format #~ msgid "%s Wired Connection" #~ msgid_plural "%s Wired Connections" #~ msgstr[0] "%s þráðlaus tenging" #~ msgstr[1] "%s þráðlausar tengingar" #, javascript-format #~ msgid "%s Wi-Fi Connection" #~ msgid_plural "%s Wi-Fi Connections" #~ msgstr[0] "%s Wi-Fi tenging" #~ msgstr[1] "%s Wi-Fi tengingar" #, javascript-format #~ msgid "%s Modem Connection" #~ msgid_plural "%s Modem Connections" #~ msgstr[0] "%s mótaldstenging" #~ msgstr[1] "%s mótaldstengingar" #~ msgid "Connection failed" #~ msgstr "Tenging mistókst" #~ msgid "Activation of network connection failed" #~ msgstr "Mistókst að virkja nettengingu" #~ msgid "Night Light Disabled" #~ msgstr "Næturlýsing óvirk" #~ msgid "Resume" #~ msgstr "Halda áfram" #~ msgid "Disable Until Tomorrow" #~ msgstr "Óvirkt þar til á morgun" #~ msgid "Power Settings" #~ msgstr "Orkustillingar" #~ msgid "Fully Charged" #~ msgstr "Full hleðsla" #~ msgid "Not Charging" #~ msgstr "Ekki í hleðslu" #~ msgid "Estimating…" #~ msgstr "Reikna…" #, javascript-format #~ msgid "%d∶%02d Remaining (%d %%)" #~ msgstr "%d∶%02d eftir (%d%%)" #, javascript-format #~ msgid "%d∶%02d Until Full (%d %%)" #~ msgstr "%d∶%02d þar til fullhlaðið (%d%%)" #~ msgid "Screen is Being Shared" #~ msgstr "Skjánum er deilt með e-n" #~ msgid "Turn off" #~ msgstr "Slökkva" #~ msgid "Airplane Mode On" #~ msgstr "Flugvélahamur virkur" #~ msgid "Lock" #~ msgstr "Læsa" #~ msgid "Power Off / Log Out" #~ msgstr "Slökkva / Skrá út" #~ msgid "Log Out" #~ msgstr "Skrá út" #~ msgid "Remove from Favorites" #~ msgstr "Fjarlægja úr Eftirlæti" #~ msgid "Add to Favorites" #~ msgstr "Bæta í Eftirlæti" #~ msgid "Author" #~ msgstr "Höfundur" #~ msgid "Warning" #~ msgstr "Aðvörun" #, fuzzy #~| msgid "Unable to connect to %s" #~ msgid "Failed to connect to GNOME Shell" #~ msgstr "Ekki tókst að tengjast %s" #~ msgid "App Picker View" #~ msgstr "Forritavalssýn" #~ msgid "Which keyboard to use" #~ msgstr "Hvaða lyklaborð á að nota" #~ msgid "The type of keyboard to use." #~ msgstr "Tegund lyklaborðs sem á að nota." #~| msgid "Show Errors" #~ msgid "Copy Error" #~ msgstr "Afrita villu" #~ msgid "Browse in Software" #~ msgstr "Skoða í hugbúnaði" #~ msgid "Next" #~ msgstr "Næsta" #~ msgctxt "button" #~ msgid "Sign In" #~ msgstr "Skrá inn" #~ msgid "Frequently used applications will appear here" #~ msgstr "Oftast notuð forrit munu birtast hér" #~ msgid "Frequent" #~ msgstr "Algengt" #~ msgid "All" #~ msgstr "Allt" #~| msgctxt "calendar heading" #~| msgid "%A, %B %d, %Y" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d, %Y" #~ msgstr "%A, %d. %B, %Y" #~ msgid "Password:" #~ msgstr "Lykilorð:" #~ msgid "Type again:" #~ msgstr "Skrifaðu aftur:" #~ msgid "Password: " #~ msgstr "Lykilorð:" #~ msgid "Authentication required by wireless network" #~ msgstr "Auðkenningar er krafist af þráðlausu neti" #~ msgid "Mobile broadband network password" #~ msgstr "Lykilorð fyrir þráðlaust breiðbandsnet" #~ msgid "%A, %B %d" #~ msgstr "%A, %d. %B" #~ msgid "%d new message" #~ msgid_plural "%d new messages" #~ msgstr[0] "%d nýtt skilaboð" #~ msgstr[1] "%d ný skilaboð" #~ msgid "%d new notification" #~ msgid_plural "%d new notifications" #~ msgstr[0] "%d ný skilaboð" #~ msgstr[1] "%d ný skilaboð" #~ msgid "Off" #~ msgstr "Slökkt" #~ msgid "On" #~ msgstr "Á" #~ msgid "Account Settings" #~ msgstr "Stillingar aðgangs" #~ msgid "Orientation Lock" #~ msgstr "Stefnulás" #~ msgid "Minimize" #~ msgstr "Lágmarka" #~ msgid "Unmaximize" #~ msgstr "Minnka glugga" #~ msgid "network-workgroup" #~ msgstr "network-workgroup" #~ msgid "There was an error loading the preferences dialog for %s:" #~ msgstr "Villa kom upp við ræsingu kjörstillingaglugga fyrir %s:" #~ msgid "%s all day." #~ msgstr "%s allan daginn." #~ msgid "%s, then %s later." #~ msgstr "%s, síðan %s." #~ msgid "%s, then %s, followed by %s later." #~ msgstr "%s, síðan %s, en snýst svo upp í %s síðar." #~ msgid "Feels like %s." #~ msgstr "Með vindkælingu %s." #~ msgid "toggle-switch-us" #~ msgstr "toggle-switch-intl" #~ msgctxt "search-result" #~ msgid "Log out" #~ msgstr "Skrá út" #~ msgctxt "search-result" #~ msgid "Switch user" #~ msgstr "Skipta um notanda" #~ msgid "Web Authentication Redirect" #~ msgstr "Endurbeining á vefauðkenningu" #~ msgid "Events" #~ msgstr "Atburðir" #~ msgid "Notifications" #~ msgstr "Tilkynningar" #~ msgid "Hide tray" #~ msgstr "Fela kerfisbakka" #~ msgid "Status Icons" #~ msgstr "Táknmyndir fyrir stöðu" #~ msgid "Media" #~ msgstr "Gagnamiðill" #~ msgid "Not In Use" #~ msgstr "Ekki í notkun" #~ msgid "%d x %d" #~ msgstr "%d x %d" #~ msgid "Show the week date in the calendar" #~ msgstr "Sýna vikudag í dagatali" #~ msgid "If true, display the ISO week date in the calendar." #~ msgstr "" #~ "Ef merkt er við þetta sem satt þá mun ISO-vikunúmer vera sýnt í " #~ "dagatalinu." #~ msgid "Use as Internet connection" #~ msgstr "Nota sem internettengingu" #~ msgid "GNOME Shell (wayland compositor)" #~ msgstr "GNOME skel (wayland skjásamsetning)" #~ msgid "%d Connected Device" #~ msgid_plural "%d Connected Devices" #~ msgstr[0] "%d tengt tæki" #~ msgstr[1] "%d tengd tæki" #~ msgid "UPS" #~ msgstr "UPS" #~ msgid "Battery" #~ msgstr "Rafhlaða" #~ msgid "Show the message tray" #~ msgstr "Birta skilaboðabakka" #~ msgctxt "event list time" #~ msgid "%H∶%M" #~ msgstr "%H∶%M" #~ msgctxt "event list time" #~ msgid "%l∶%M %p" #~ msgstr "%l∶%M %p" #~ msgctxt "list sunday" #~ msgid "Su" #~ msgstr "Su" #~ msgctxt "list monday" #~ msgid "M" #~ msgstr "Má" #~ msgctxt "list tuesday" #~ msgid "T" #~ msgstr "Þr" #~ msgctxt "list wednesday" #~ msgid "W" #~ msgstr "Mi" #~ msgctxt "list thursday" #~ msgid "Th" #~ msgstr "Fi" #~ msgctxt "list friday" #~ msgid "F" #~ msgstr "Fö" #~ msgctxt "list saturday" #~ msgid "S" #~ msgstr "La" #~ msgid "Nothing Scheduled" #~ msgstr "Ekkert á dagskrá" #~ msgid "This week" #~ msgstr "Í þessari viku" #~ msgid "Next week" #~ msgstr "Í næstu viku" #~ msgid "Removable Devices" #~ msgstr "Útskiptanleg tæki" #~ msgid "Eject" #~ msgstr "Spýta út" #~ msgid "Invitation" #~ msgstr "Boð" #~ msgid "Call" #~ msgstr "Símtal" #~ msgid "File Transfer" #~ msgstr "Skráaflutningur" #~ msgid "Chat" #~ msgstr "Spjall" #~ msgid "Unmute" #~ msgstr "Kveikja á hljóði" #~ msgid "Mute" #~ msgstr "Þagga niður" #~ msgid "Invitation to %s" #~ msgstr "Boð til %s" #~ msgid "%s is inviting you to join %s" #~ msgstr "%s er að bjóða þér að taka þátt í %s" #~ msgid "Decline" #~ msgstr "Hafna" #~ msgid "Accept" #~ msgstr "Samþykkja" #~ msgid "Video call from %s" #~ msgstr "Myndsímtal frá %s" #~ msgid "Call from %s" #~ msgstr "Símtal frá %s" #~ msgid "Answer" #~ msgstr "Svara" #~ msgid "%s is sending you %s" #~ msgstr "%s er að senda þér %s" #~ msgid "%s would like permission to see when you are online" #~ msgstr "%s vill fá heimild til að sjá hvenær þú ert tengd/ur" #~ msgid "Authentication failed" #~ msgstr "Auðkenning mistókst" #~ msgid "Encryption error" #~ msgstr "Dulritunarvilla" #~ msgid "Certificate not provided" #~ msgstr "Skilríki fylgir ekki" #~ msgid "Certificate untrusted" #~ msgstr "Skilríki ekki treyst" #~ msgid "Certificate expired" #~ msgstr "Skilríki er útrunnið" #~ msgid "Certificate not activated" #~ msgstr "Skilríki ekki virkjað" #~ msgid "Certificate hostname mismatch" #~ msgstr "Vélarheiti skilríkis samsvara ekki" #~ msgid "Certificate fingerprint mismatch" #~ msgstr "Fingraför skilríkis samsvara ekki" #~ msgid "Certificate self-signed" #~ msgstr "Skilríki aðeins undirritað af handhafa" #~ msgid "Status is set to offline" #~ msgstr "Staða er sett á ótengda" #~ msgid "Certificate is invalid" #~ msgstr "Skilríkið er ekki gilt" #~ msgid "Connection has been refused" #~ msgstr "Tengingu hefur verið hafnað" #~ msgid "Connection can't be established" #~ msgstr "Ekki er hægt að koma á tengingu" #~ msgid "Connection has been lost" #~ msgstr "Tenging hefur slitnað" #~ msgid "This account is already connected to the server" #~ msgstr "Þessi aðgangur er þegar tengdur miðlaranum" #~ msgid "The account already exists on the server" #~ msgstr "Aðgangurinn er þegar til á miðlaranum" #~ msgid "Server is currently too busy to handle the connection" #~ msgstr "" #~ "Miðlarinn er of upptekinn í augnablikinu til að meðhöndla tenginguna" #~ msgid "Certificate has been revoked" #~ msgstr "Skilríkið hefur veriið afturkallað" #~ msgid "Internal error" #~ msgstr "Innvær villa" #~ msgid "View account" #~ msgstr "Skoða aðgang" #~ msgid "Open Calendar" #~ msgstr "Opna dagatal" #~ msgid "Open" #~ msgstr "Opna" #~ msgid "Clear Messages" #~ msgstr "Hreinsa skilaboð" #~ msgid "Notification Settings" #~ msgstr "Stillingar á tilkynningum" #~ msgid "Tray Menu" #~ msgstr "Valmynd í kerfisbakka" #~ msgid "Message Tray" #~ msgstr "Skilaboðabakki" 0707010000023F000081A40000000000000000000000016712993F00018FAF000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/it.po# Italian translations for gnome-shell package. # Copyright (C) 2009, 2010, the gnome-shell copyright holder # Copyright (C) 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 the Free Software Foundation # Copyright (C) 2019, 2020, 2021, 2022, 2023, 2024 the Free Software Foundation # This file is distributed under the same license as the gnome-shell package. # # Milo Casagrande , 2009, 2010, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024. # Luca Ferretti , 2010, 2011, 2012, 2013, 2014. # Gianvito Cavasoli , 2016-2023. # msgid "" msgstr "" "Project-Id-Version: gnome-shell\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues/\n" "POT-Creation-Date: 2024-03-16 16:54+0000\n" "PO-Revision-Date: 2024-03-19 12:02+0100\n" "Last-Translator: Milo Casagrande \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: Poedit 3.4.1\n" "X-DamnedLies-Scope: partial\n" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "Lanciatori" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate pinned app 1" msgstr "Attiva l'applicazione bloccata 1" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate pinned app 2" msgstr "Attiva l'applicazione bloccata 2" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate pinned app 3" msgstr "Attiva l'applicazione bloccata 3" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate pinned app 4" msgstr "Attiva l'applicazione bloccata 4" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate pinned app 5" msgstr "Attiva l'applicazione bloccata 5" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate pinned app 6" msgstr "Attiva l'applicazione bloccata 6" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate pinned app 7" msgstr "Attiva l'applicazione bloccata 7" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate pinned app 8" msgstr "Attiva l'applicazione bloccata 8" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate pinned app 9" msgstr "Attiva l'applicazione bloccata 9" #: data/50-gnome-shell-launchers.xml:46 msgid "Open new window of pinned app 1" msgstr "Apri nuova finestra dell'applicazione bloccata 1" #: data/50-gnome-shell-launchers.xml:50 msgid "Open new window of pinned app 2" msgstr "Apri nuova finestra dell'applicazione bloccata 2" #: data/50-gnome-shell-launchers.xml:54 msgid "Open new window of pinned app 3" msgstr "Apri nuova finestra dell'applicazione bloccata 3" #: data/50-gnome-shell-launchers.xml:58 msgid "Open new window of pinned app 4" msgstr "Apri nuova finestra dell'applicazione bloccata 4" #: data/50-gnome-shell-launchers.xml:62 msgid "Open new window of pinned app 5" msgstr "Apri nuova finestra dell'applicazione bloccata 5" #: data/50-gnome-shell-launchers.xml:66 msgid "Open new window of pinned app 6" msgstr "Apri nuova finestra dell'applicazione bloccata 6" #: data/50-gnome-shell-launchers.xml:70 msgid "Open new window of pinned app 7" msgstr "Apri nuova finestra dell'applicazione bloccata 7" #: data/50-gnome-shell-launchers.xml:74 msgid "Open new window of pinned app 8" msgstr "Apri nuova finestra dell'applicazione bloccata 8" #: data/50-gnome-shell-launchers.xml:78 msgid "Open new window of pinned app 9" msgstr "Apri nuova finestra dell'applicazione bloccata 9" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2276 msgid "Screenshots" msgstr "Schermate" #: data/50-gnome-shell-screenshots.xml:9 #: data/org.gnome.shell.gschema.xml.in:287 msgid "Take a screenshot interactively" msgstr "Cattura una schermata in modo interattivo" #: data/50-gnome-shell-screenshots.xml:12 #: data/org.gnome.shell.gschema.xml.in:299 msgid "Take a screenshot" msgstr "Cattura una schermata" #: data/50-gnome-shell-screenshots.xml:15 #: data/org.gnome.shell.gschema.xml.in:295 msgid "Take a screenshot of a window" msgstr "Cattura una schermata di una finestra" #: data/50-gnome-shell-screenshots.xml:18 #: data/org.gnome.shell.gschema.xml.in:291 msgid "Record a screencast interactively" msgstr "Registra un breve video dello schermo" #: data/50-gnome-shell-system.xml:6 js/ui/messageTray.js:1293 msgid "System" msgstr "Sistema" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "Mostra l'elenco delle notifiche" #: data/50-gnome-shell-system.xml:12 msgid "Open the quick settings menu" msgstr "Apre il menù impostazioni rapide" #: data/50-gnome-shell-system.xml:15 msgid "Focus the active notification" msgstr "Dà il focus alla notifica attiva" #: data/50-gnome-shell-system.xml:18 msgid "Show the overview" msgstr "Mostra la panoramica" #: data/50-gnome-shell-system.xml:21 msgid "Show all apps" msgstr "Mostra tutte le applicazioni" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "GNOME Shell" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "Gestione finestre e avvio applicazioni" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" "Abilita gli strumenti interni utili a sviluppatori e collaudatori attraverso " "Alt-F2" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Consente l'accesso agli strumenti interni di debug e monitoraggio " "utilizzando la finestra di dialogo Alt-F2." #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "UUID delle estensioni da abilitare" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "Le estensioni per la GNOME Shell dispongono di una proprietà UUID: questa " "chiave elenca le estensioni da caricare. È necessario inserire in questo " "elenco ogni estensione che si vuole caricare. È anche possibile modificare " "questo elenco con i metodi DBus EnableExtension e DisableExtension su org." "gnome.Shell." #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "UUID delle estensioni da disabilitare in maniera forzata" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" "Le estensioni per la GNOME Shell dispongono di una proprietà UUID: questa " "chiave elenca le estensioni da disabilitare, anche se caricate dalla " "modalità attuale. È anche possibile modificare questo elenco con i metodi " "DBus EnableExtension e DisableExtension su org.gnome.Shell. Questa chiave ha " "precedenza rispetto all'impostazione \"enabled-extensions\"." #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "Disabilita le estensioni utente" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" "Disabilita tutte le estensioni abilitate dall'utente senza influire " "sull'impostazione \"enabled-extension\"." #: data/org.gnome.shell.gschema.xml.in:45 msgid "Allow extension installation" msgstr "Consenti installazione dell'estensione" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "Allow users to install extensions in their home folder. If disabled, the " "InstallRemoteExtension D-Bus method will fail, and extensions are only " "loaded from system directories on startup. It does not affect extensions " "that are already loaded, so a change only takes full effect on the next " "login." msgstr "" "Consente agli utenti di installare estensione nella proprio cartella utente. " "Se disabilitata, il metodo D-Bus InstallRemoteExtension fallirà e le " "estensioni verranno caricate dalle directory di sistema all'avvio. Non " "influisce sulle estensioni già caricate: le modifiche hanno effetto " "solamente all'accesso successivo." #: data/org.gnome.shell.gschema.xml.in:56 msgid "Disables the validation of extension version compatibility" msgstr "" "Disabilita la convalida della compatibilità con le versioni delle estensioni" #: data/org.gnome.shell.gschema.xml.in:57 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "GNOME Shell carica solo le estensioni che dichiarano di supportare la " "versione di GNOME Shell attualmente in esecuzione. Abilitando questa opzione " "verrà disabilitato tale controllo e verrà tentato il caricamento di tutte le " "estensioni, senza distinzione sulla versione supportata dichiarata." #: data/org.gnome.shell.gschema.xml.in:65 msgid "List of desktop file IDs for favorite applications" msgstr "Elenco di ID di file desktop per le applicazioni preferite" #: data/org.gnome.shell.gschema.xml.in:66 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" "Le applicazioni che corrispondono a questi identificatori vengono " "visualizzate nell'area dei preferiti." #: data/org.gnome.shell.gschema.xml.in:73 msgid "History for command (Alt-F2) dialog" msgstr "Cronologia per la finestra di dialogo dei comandi (Alt-F2)" #. Translators: looking glass is a debugger and inspector tool, see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/docs/looking-glass.md #: data/org.gnome.shell.gschema.xml.in:78 msgid "History for the looking glass dialog" msgstr "Cronologia per la finestra di dialogo \"looking glass\"" #: data/org.gnome.shell.gschema.xml.in:82 msgid "Always show the “Log Out” action in the system menu" msgstr "Mostra sempre la voce \"Termina sessione\" nel menù di sistema." #: data/org.gnome.shell.gschema.xml.in:83 msgid "" "This key overrides the automatic hiding of the “Log out” action in the " "system menu for logged-in situations where there is a single, local, non-" "system user and only a single available session type (e.g. GNOME on Wayland)." msgstr "" "Questa chiave sovrascrive la scomparsa automatica della voce di menù " "\"Termina sessione\" nelle situazioni di accesso dove vi è un utente " "singolo, locale e non di sistema e un solo tipo di sessione è disponibile " "(come GNOME su Wayland)." #: data/org.gnome.shell.gschema.xml.in:92 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "Indica se ricordare la password per montare file system remoti o cifrati" #: data/org.gnome.shell.gschema.xml.in:93 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "La shell richiederà una password quando un dispositivo cifrato o un file " "system remoto viene montato. Se la password può essere salvata, viene " "aggiunta la corrispettiva casella di selezione. Questa chiave imposta lo " "stato predefinito di tale casella." #: data/org.gnome.shell.gschema.xml.in:102 msgid "The last selected non-default power profile" msgstr "L'ultimo profilo energetico selezionato non predefinito" #: data/org.gnome.shell.gschema.xml.in:103 msgid "" "Some systems support more than two power profiles. In order to still support " "toggling between two profiles, this key records the last selected non-" "default profile." msgstr "" "Alcuni sistemi supportano più di due profili energetici. Per poter " "supportare il cambio fra i due profili, questa chiave registra l'ultimo " "profilo selezionato non predefinito." #: data/org.gnome.shell.gschema.xml.in:111 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "" "L'ultima versione per la quale la finestra di dialogo \"Benvenuti in GNOME\" " "è stata visualizzata" #: data/org.gnome.shell.gschema.xml.in:112 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can " "be used to effectively disable the dialog." msgstr "" "Questa chiave determina per quale versione è stata visualizzata per l'ultima " "volta la finestra di dialogo \"Benvenuti in GNOME\". Una stringa vuota " "rappresenta la versione più vecchia possibile e un numero enorme rappresenta " "versioni che non esistono ancora. Questo numero enorme può essere utilizzato " "per disabilitare la finestra di dialogo." #: data/org.gnome.shell.gschema.xml.in:145 msgid "Layout of the app picker" msgstr "Disposizione del selettore app" #: data/org.gnome.shell.gschema.xml.in:146 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" msgstr "" "Disposizione del selettore app. Le voci nell'array sono delle pagine, ogni " "pagina è archiviata nell'ordine con cui appare nella GNOME Shell. Ogni " "pagina contiene coppie \"application id\" → \"data\". Attualmente, i " "seguenti valori sono archiviati come \"data\": • \"position\": la posizione " "dell'icona applicazione nella pagina" #: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:172 msgid "Keybinding to shift between overview states" msgstr "Associazione di tasti per spostarsi tra gli stati della panoramica" #: data/org.gnome.shell.gschema.xml.in:166 msgid "Keybinding to shift between session, window picker and app grid" msgstr "" "Associazione di tasti per spostarsi tra sessione, selezione finestre e " "griglia app" #: data/org.gnome.shell.gschema.xml.in:173 msgid "Keybinding to shift between app grid, window picker and session" msgstr "" "Associazione di tasti per spostarsi tra griglia app, selezione finestre e " "sessione" #: data/org.gnome.shell.gschema.xml.in:179 msgid "Keybinding to open the “Show Applications” view" msgstr "Associazione di tasti per aprire la vista \"Mostra applicazioni\"" #: data/org.gnome.shell.gschema.xml.in:180 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "" "Associazione di tasti per aprire la vista \"Mostra applicazioni\" della " "panoramica Attività." #: data/org.gnome.shell.gschema.xml.in:187 msgid "Keybinding to open the overview" msgstr "Associazione di tasti per aprire la panoramica" #: data/org.gnome.shell.gschema.xml.in:188 msgid "Keybinding to open the Activities Overview." msgstr "Associazione di tasti per aprire la panoramica delle attività." #: data/org.gnome.shell.gschema.xml.in:194 msgid "Keybinding to toggle the visibility of the notification list" msgstr "" "Associazione di tasti per commutare la visibilità dell'elenco delle notifiche" #: data/org.gnome.shell.gschema.xml.in:195 msgid "Keybinding to toggle the visibility of the notification list." msgstr "" "Associazione di tasti per commutare la visibilità dell'elenco delle " "notifiche." #: data/org.gnome.shell.gschema.xml.in:201 msgid "Keybinding to toggle the quick settings menu" msgstr "Associazione di tasti per aprire il menù delle impostazioni rapide" #: data/org.gnome.shell.gschema.xml.in:202 msgid "Keybinding to toggle the quick settings menu." msgstr "Associazione di tasti per aprire il menù delle impostazioni rapide." #: data/org.gnome.shell.gschema.xml.in:208 msgid "Keybinding to focus the active notification" msgstr "Associazione di tasti per dare il focus alla notifica attiva" #: data/org.gnome.shell.gschema.xml.in:209 msgid "Keybinding to focus the active notification." msgstr "Associazione di tasti per dare il focus alla notifica attiva." #: data/org.gnome.shell.gschema.xml.in:215 msgid "Switch to application 1" msgstr "Passa all'applicazione 1" #: data/org.gnome.shell.gschema.xml.in:219 msgid "Switch to application 2" msgstr "Passa all'applicazione 2" #: data/org.gnome.shell.gschema.xml.in:223 msgid "Switch to application 3" msgstr "Passa all'applicazione 3" #: data/org.gnome.shell.gschema.xml.in:227 msgid "Switch to application 4" msgstr "Passa all'applicazione 4" #: data/org.gnome.shell.gschema.xml.in:231 msgid "Switch to application 5" msgstr "Passa all'applicazione 5" #: data/org.gnome.shell.gschema.xml.in:235 msgid "Switch to application 6" msgstr "Passa all'applicazione 6" #: data/org.gnome.shell.gschema.xml.in:239 msgid "Switch to application 7" msgstr "Passa all'applicazione 7" #: data/org.gnome.shell.gschema.xml.in:243 msgid "Switch to application 8" msgstr "Passa all'applicazione 8" #: data/org.gnome.shell.gschema.xml.in:247 msgid "Switch to application 9" msgstr "Passa all'applicazione 9" #: data/org.gnome.shell.gschema.xml.in:251 msgid "Open a new instance of application 1" msgstr "Apri una nuova istanza dell'applicazione 1" #: data/org.gnome.shell.gschema.xml.in:255 msgid "Open a new instance of application 2" msgstr "Apri una nuova istanza dell'applicazione 2" #: data/org.gnome.shell.gschema.xml.in:259 msgid "Open a new instance of application 3" msgstr "Apri una nuova istanza dell'applicazione 3" #: data/org.gnome.shell.gschema.xml.in:263 msgid "Open a new instance of application 4" msgstr "Apri una nuova istanza dell'applicazione 4" #: data/org.gnome.shell.gschema.xml.in:267 msgid "Open a new instance of application 5" msgstr "Apri una nuova istanza dell'applicazione 5" #: data/org.gnome.shell.gschema.xml.in:271 msgid "Open a new instance of application 6" msgstr "Apri una nuova istanza dell'applicazione 6" #: data/org.gnome.shell.gschema.xml.in:275 msgid "Open a new instance of application 7" msgstr "Apri una nuova istanza dell'applicazione 7" #: data/org.gnome.shell.gschema.xml.in:279 msgid "Open a new instance of application 8" msgstr "Apri una nuova istanza dell'applicazione 8" #: data/org.gnome.shell.gschema.xml.in:283 msgid "Open a new instance of application 9" msgstr "Apri una nuova istanza dell'applicazione 9" #: data/org.gnome.shell.gschema.xml.in:308 #: data/org.gnome.shell.gschema.xml.in:335 msgid "Limit switcher to current workspace." msgstr "Limita il selettore allo spazio di lavoro in uso." #: data/org.gnome.shell.gschema.xml.in:309 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "Se impostata a VERO, nel selettore sono mostrate solo le applicazioni che " "hanno finestre nello spazio di lavoro attualmente in uso. In caso contrario " "sono incluse tutte le applicazioni." #: data/org.gnome.shell.gschema.xml.in:326 msgid "The application icon mode." msgstr "La modalità dell'icona dell'applicazione." #: data/org.gnome.shell.gschema.xml.in:327 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-" "only” (shows only the application icon) or “both”." msgstr "" "Configura come le finestre vengono mostrate nel selettore. Valori consentiti " "sono: \"thumbnail-only\" (mostra una miniatura della finestra), \"app-icon-" "only\" (mostra solo l'icona dell'applicazione) oppure \"both\"." #: data/org.gnome.shell.gschema.xml.in:336 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "Se impostata a VERO, nel selettore sono mostrate solo le finestre dello " "spazio di lavoro attualmente in uso. In caso contrario sono incluse tutte le " "finestre." #: data/org.gnome.shell.gschema.xml.in:346 msgid "Locations" msgstr "Posizioni" #: data/org.gnome.shell.gschema.xml.in:347 msgid "The locations to show in world clocks" msgstr "Le posizione da mostrare negli orologi mondiali" #: data/org.gnome.shell.gschema.xml.in:357 msgid "Automatic location" msgstr "Posizione automatica" #: data/org.gnome.shell.gschema.xml.in:358 msgid "Whether to fetch the current location or not" msgstr "Indica se trovare la posizione attuale o meno" #: data/org.gnome.shell.gschema.xml.in:365 msgid "Location" msgstr "Posizione" #: data/org.gnome.shell.gschema.xml.in:366 msgid "The location for which to show a forecast" msgstr "La posizione per cui mostrare le previsioni meteorologiche" #. Keep in sync with subprojects/extensions-app #: data/org.gnome.Shell.Extensions.desktop.in.in:5 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/data/ui/extensions-window.ui:57 msgid "Extensions" msgstr "Estensioni" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "Accesso di rete" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:277 msgid "Something’s gone wrong" msgstr "Qualcosa è andato storto" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" "Si è verificato un problema: non è possibile visualizzare le impostazioni di " "questa estensione. È consigliato segnalare il problema agli autori " "dell'estensione." #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "Dettagli tecnici" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "Sito web" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 msgid "Visit extension homepage" msgstr "Sito web dell'estensione" #: js/gdm/authPrompt.js:151 js/gdm/loginDialog.js:466 #: js/ui/audioDeviceSelection.js:66 js/ui/components/networkAgent.js:114 #: js/ui/components/polkitAgent.js:146 js/ui/endSessionDialog.js:438 #: js/ui/extensionDownloader.js:278 js/ui/shellMountOperation.js:384 #: js/ui/shellMountOperation.js:394 msgid "Cancel" msgstr "Annulla" #: js/gdm/authPrompt.js:317 js/ui/components/networkAgent.js:214 #: js/ui/components/networkAgent.js:234 js/ui/components/networkAgent.js:266 #: js/ui/components/networkAgent.js:299 js/ui/components/networkAgent.js:338 #: js/ui/components/networkAgent.js:351 js/ui/components/polkitAgent.js:288 #: js/ui/shellMountOperation.js:334 msgid "Password" msgstr "Password" #: js/gdm/loginDialog.js:327 msgid "Choose Session" msgstr "Scegli sessione" #. Translators: is running for #: js/gdm/loginDialog.js:424 #, javascript-format msgid "" "Remote login is not possible because a remote session is already running for " "%s. To login remotely, you must log out from the remote session or force " "stop it." msgstr "" "L'accesso remoto non è possibile poiché è in esecuzione una sessione remota " "per %s. Per accedere da remoto, uscire dalla sessione remota o terminarla " "forzatamente." #. Translators: is running for #: js/gdm/loginDialog.js:427 #, javascript-format msgid "" "Login is not possible because a remote session is already running for %s. To " "login, you must log out from the remote session or force stop it." msgstr "" "L'accesso non è possibile poiché è in esecuzione una sessione remota per %s. " "Per accedere, uscire dalla sessione remoto o terminarla forzatamente." #. Translators: is running for #: js/gdm/loginDialog.js:430 #, javascript-format msgid "" "Remote login is not possible because a local session is already running for " "%s. To login remotely, you must log out from the local session or force stop " "it." msgstr "" "L'accesso remoto non è possibile poiché è in esecuzione una sessione locale " "per %s. Per accedere da remoto, uscire dalla sessione locale o terminarla " "forzatamente." #. Translators: is running for #: js/gdm/loginDialog.js:433 #, javascript-format msgid "" "Login is not possible because a session is already running for %s. To login, " "you must log out from the session or force stop it." msgstr "" "L'accesso non è possibile poiché è in esecuzione una sessione per %s. Per " "accedere, uscire dalla sessione o terminarla forzatamente." #: js/gdm/loginDialog.js:442 msgid "Session Already Running" msgstr "Sessione già in esecuzione" #: js/gdm/loginDialog.js:454 msgid "" "Force stopping will quit any running apps and processes, and could result in " "data loss." msgstr "" "L'uscita forzata terminerà tutte le applicazioni in esecuzione e potrebbe " "causare la perdita di dati." #: js/gdm/loginDialog.js:474 msgid "Force Stop" msgstr "Uscita forzata" #: js/gdm/loginDialog.js:542 msgid "Not listed?" msgstr "Non elencato?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:1010 #, javascript-format msgid "(e.g., user or %s)" msgstr "(per es. utente o %s)" #: js/gdm/loginDialog.js:1015 js/ui/components/networkAgent.js:258 #: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:327 msgid "Username" msgstr "Nome utente" #: js/gdm/loginDialog.js:1081 msgid "Login Attempt Timed Out" msgstr "Tentativo di accesso scaduto" #: js/gdm/loginDialog.js:1082 msgid "Login took too long, please try again" msgstr "L'accesso ha richiesto troppo tempo, provare nuovamente" #: js/gdm/loginDialog.js:1427 msgid "Login Window" msgstr "Finestra di accesso" #: js/gdm/util.js:497 msgid "Authentication error" msgstr "Errore di autenticazione" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:728 msgid "(or swipe finger across reader)" msgstr "(o scorrere il dito sul lettore)" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:733 msgid "(or place finger on reader)" msgstr "(o posizionare il dito sul lettore)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:91 msgctxt "search-result" msgid "Power Off" msgstr "Spegni" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:94 msgid "power off;poweroff;shutdown;halt;stop" msgstr "spegni;arresta;ferma;stop;" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:99 msgctxt "search-result" msgid "Restart" msgstr "Riavvia" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:102 msgid "reboot;restart;" msgstr "riavvia;" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:107 msgctxt "search-result" msgid "Lock Screen" msgstr "Blocca schermo" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:110 msgid "lock screen" msgstr "blocca schermo" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:115 msgctxt "search-result" msgid "Log Out" msgstr "Termina sessione" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:118 msgid "logout;log out;sign off" msgstr "esci;logout;termina sessione" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:123 msgctxt "search-result" msgid "Suspend" msgstr "Sospendi" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:126 msgid "suspend;sleep" msgstr "sospendi;riposo" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:131 msgctxt "search-result" msgid "Switch User" msgstr "Cambia utente" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:134 msgid "switch user" msgstr "cambia utente" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:141 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "blocca orientazione;sblocca orientazione;schermo;rotazione" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:146 msgctxt "search-result" msgid "Take a Screenshot" msgstr "Cattura una schermata" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:149 msgid "screenshot;screencast;snip;capture;record" msgstr "schermata;screencast;video;snip;clip;cattura;registra;" #: js/misc/systemActions.js:249 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "Sblocca rotazione schermo" #: js/misc/systemActions.js:250 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "Blocca rotazione schermo" #: js/misc/util.js:139 msgid "Command not found" msgstr "Comando non trovato" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:179 msgid "Could not parse command:" msgstr "Impossibile riconoscere il comando:" #: js/misc/util.js:187 #, javascript-format msgid "Execution of “%s” failed:" msgstr "Esecuzione di «%s» non riuscita:" #: js/misc/dateUtils.js:69 msgid "Just now" msgstr "Adesso" #: js/misc/dateUtils.js:72 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d minuto fa" msgstr[1] "%d minuti fa" #: js/misc/dateUtils.js:79 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d ora fa" msgstr[1] "%d ore fa" #: js/misc/dateUtils.js:85 js/ui/dateMenu.js:185 msgid "Yesterday" msgstr "Ieri" #: js/misc/dateUtils.js:88 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d giorno fa" msgstr[1] "%d giorni fa" #: js/misc/dateUtils.js:95 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d settimana fa" msgstr[1] "%d settimane fa" #: js/misc/dateUtils.js:102 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%d mese fa" msgstr[1] "%d mesi fa" #: js/misc/dateUtils.js:108 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "%d anno fa" msgstr[1] "%d anni fa" #. Translators: Time in 24h format #: js/misc/dateUtils.js:155 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/dateUtils.js:161 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "Ieri, %H∶%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/dateUtils.js:167 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/dateUtils.js:173 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%e %B, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/dateUtils.js:179 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%e %B %Y, %H∶%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/dateUtils.js:184 msgid "%l∶%M %p" msgstr "%I∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/dateUtils.js:190 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "Ieri, %I∶%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/dateUtils.js:196 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %I∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/dateUtils.js:202 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%e %B, %I∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/dateUtils.js:208 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%e %B %Y, %I∶%M %p" #: js/portalHelper/main.js:98 msgid "Your connection seems to be secure" msgstr "La connessione sembra essere sicura" #: js/portalHelper/main.js:104 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "La connessione per l'accesso a questo hotspot non è sicura. Le password e le " "altre informazioni inviate possono essere lette da altri." #: js/portalHelper/main.js:115 msgid "Hotspot Login" msgstr "Accesso hotspot" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:45 js/ui/inhibitShortcutsDialog.js:92 msgid "Deny" msgstr "Nega" #: js/ui/accessDialog.js:46 js/ui/inhibitShortcutsDialog.js:101 msgid "Allow" msgstr "Consenti" #: js/ui/appDisplay.js:1775 msgid "Unnamed Folder" msgstr "Cartella senza nome" # (ndt) e usare: # L'elemento %s è stato rimosso... ? #: js/ui/appFavorites.js:166 #, javascript-format msgid "%s has been pinned to the dash." msgstr "%s è stato bloccato sulla dash." #: js/ui/appFavorites.js:199 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "%s è stato sbloccato dalla dash." #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:51 msgid "Open Windows" msgstr "Finestre aperte" #: js/ui/appMenu.js:59 msgid "New Window" msgstr "Nuova finestra" #: js/ui/appMenu.js:86 msgid "App Details" msgstr "Dettagli applicazione" #: js/ui/appMenu.js:102 msgid "Quit" msgstr "Esci" #: js/ui/appMenu.js:162 js/ui/dash.js:250 msgid "Unpin" msgstr "Sblocca" #: js/ui/appMenu.js:163 msgid "Pin to Dash" msgstr "Blocca sulla dash" #: js/ui/appMenu.js:180 msgid "Launch using Integrated Graphics Card" msgstr "Lancia utilizzando scheda grafica integrata" #: js/ui/appMenu.js:181 msgid "Launch using Discrete Graphics Card" msgstr "Lancia utilizzando scheda grafica discreta" #: js/ui/audioDeviceSelection.js:46 msgid "Select Audio Device" msgstr "Seleziona dispositivo audio" #: js/ui/audioDeviceSelection.js:61 js/ui/status/volume.js:83 msgid "Sound Settings" msgstr "Impostazioni audio" #: js/ui/audioDeviceSelection.js:74 msgid "Headphones" msgstr "Cuffie" #: js/ui/audioDeviceSelection.js:76 msgid "Headset" msgstr "Cuffie con microfono" #: js/ui/audioDeviceSelection.js:78 js/ui/status/volume.js:358 msgid "Microphone" msgstr "Microfono" #: js/ui/backgroundMenu.js:15 msgid "Change Background…" msgstr "Cambia sfondo…" #: js/ui/backgroundMenu.js:17 msgid "Display Settings" msgstr "Impostazioni monitor" #: js/ui/backgroundMenu.js:18 msgid "Settings" msgstr "Impostazioni" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:39 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:65 msgctxt "grid sunday" msgid "S" msgstr "D" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:67 msgctxt "grid monday" msgid "M" msgstr "L" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:69 msgctxt "grid tuesday" msgid "T" msgstr "M" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:71 msgctxt "grid wednesday" msgid "W" msgstr "M" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:73 msgctxt "grid thursday" msgid "T" msgstr "G" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:75 msgctxt "grid friday" msgid "F" msgstr "V" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:77 msgctxt "grid saturday" msgid "S" msgstr "S" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:428 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:438 msgid "%OB %Y" msgstr "%OB %Y" #: js/ui/calendar.js:500 msgid "Previous month" msgstr "Mese precedente" #: js/ui/calendar.js:518 msgid "Next month" msgstr "Mese successivo" #: js/ui/calendar.js:669 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:728 msgid "Week %V" msgstr "Settimana %V" #: js/ui/calendar.js:920 msgid "No Notifications" msgstr "Nessuna notifica" #: js/ui/calendar.js:976 msgid "Do Not Disturb" msgstr "Non disturbare" #: js/ui/calendar.js:997 msgid "Clear" msgstr "Pulisci" #: js/ui/calendar.js:1001 msgctxt "action" msgid "Clear all notifications" msgstr "Cancella notifiche" #. Translators: %s is an application name #: js/ui/closeDialog.js:44 #, javascript-format msgid "“%s” is not responding." msgstr "«%s» non risponde." #: js/ui/closeDialog.js:45 msgid "" "You may choose to wait a short while for it to continue or force the app to " "quit entirely." msgstr "" "È possibile scegliere se attendere, lasciando che l'applicazione continui, " "oppure forzare la sua chiusura." #: js/ui/closeDialog.js:73 msgid "Force Quit" msgstr "Uscita forzata" #: js/ui/closeDialog.js:78 msgid "Wait" msgstr "Attendi" #: js/ui/components/automountManager.js:84 msgid "External drive connected" msgstr "Unità esterna collegata" #: js/ui/components/automountManager.js:96 msgid "External drive disconnected" msgstr "Unità esterna scollegata" #: js/ui/components/automountManager.js:207 msgid "Unable to unlock volume" msgstr "Impossibile sbloccare il volume" #: js/ui/components/automountManager.js:208 msgid "The installed udisks version does not support the PIM setting" msgstr "La versione installata di udisks non supporta l'impostazione PIM" #: js/ui/components/autorunManager.js:200 #, javascript-format msgid "Open with %s" msgstr "Apri con %s" #: js/ui/components/networkAgent.js:96 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router." msgstr "" "In alternativa è possibile collegarsi premendo il pulsante «WPS» del router." #: js/ui/components/networkAgent.js:108 js/ui/status/bluetooth.js:246 #: js/ui/status/network.js:360 js/ui/status/network.js:444 msgid "Connect" msgstr "Connetti" #: js/ui/components/networkAgent.js:223 msgid "Key" msgstr "Chiave" #: js/ui/components/networkAgent.js:274 js/ui/components/networkAgent.js:313 msgid "Private key password" msgstr "Password chiave privata" #: js/ui/components/networkAgent.js:307 msgid "Identity" msgstr "Identità" #: js/ui/components/networkAgent.js:333 msgid "Service" msgstr "Servizio" #: js/ui/components/networkAgent.js:371 js/ui/components/networkAgent.js:407 #: js/ui/components/networkAgent.js:750 js/ui/components/networkAgent.js:771 msgid "Authentication required" msgstr "Richiesta autenticazione" #: js/ui/components/networkAgent.js:372 js/ui/components/networkAgent.js:751 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network " "“%s”." msgstr "" "È richiesta una password o una chiave di cifratura per accedere alla rete " "wireless «%s»." #: js/ui/components/networkAgent.js:376 js/ui/components/networkAgent.js:755 msgid "Wired 802.1X authentication" msgstr "Autenticazione via cavo 802.1X" #: js/ui/components/networkAgent.js:379 msgid "Network name" msgstr "Nome rete" #: js/ui/components/networkAgent.js:387 js/ui/components/networkAgent.js:759 msgid "DSL authentication" msgstr "Autenticazione DSL" #: js/ui/components/networkAgent.js:394 js/ui/components/networkAgent.js:764 msgid "PIN code required" msgstr "Richiesto codice PIN" #: js/ui/components/networkAgent.js:395 js/ui/components/networkAgent.js:765 msgid "PIN code is needed for the mobile broadband device" msgstr "È necessario il codice PIN per il dispositivo a banda larga mobile" #: js/ui/components/networkAgent.js:397 msgid "PIN" msgstr "PIN" #: js/ui/components/networkAgent.js:408 js/ui/components/networkAgent.js:756 #: js/ui/components/networkAgent.js:760 js/ui/components/networkAgent.js:772 #: js/ui/components/networkAgent.js:776 #, javascript-format msgid "A password is required to connect to “%s”." msgstr "È richiesta una password per connettersi a «%s»." #: js/ui/components/networkAgent.js:775 msgid "VPN password" msgstr "Password VPN" #: js/ui/components/polkitAgent.js:46 msgid "Authentication Required" msgstr "Richiesta autenticazione" #: js/ui/components/polkitAgent.js:86 msgid "Administrator" msgstr "Amministratore" #: js/ui/components/polkitAgent.js:151 msgid "Authenticate" msgstr "Autentica" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:265 js/ui/shellMountOperation.js:417 msgid "Sorry, that didn’t work. Please try again." msgstr "Errore nell'autenticazione. Provare di nuovo." #: js/ui/ctrlAltTab.js:25 js/ui/overviewControls.js:418 msgid "Windows" msgstr "Finestre" #: js/ui/dash.js:206 js/ui/dash.js:252 msgid "Show Apps" msgstr "Mostra applicazioni" # cruscotto?!?!?!?!?!?!? #. Translators: this is the name of the dock/favorites area on #. the bottom of the overview #: js/ui/dash.js:410 msgid "Dash" msgstr "Dash" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:101 msgid "%B %-d %Y" msgstr "%-e %B %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:108 msgid "%A %B %e %Y" msgstr "%A %e %B %Y" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:174 msgctxt "calendar heading" msgid "%B %-d" msgstr "%-e %B" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:177 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%-e %B %Y" #: js/ui/dateMenu.js:183 msgid "Today" msgstr "Oggi" #: js/ui/dateMenu.js:187 msgid "Tomorrow" msgstr "Domani" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:218 msgctxt "event list time" msgid "All Day" msgstr "Giornata" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:240 msgid "%m/%d" msgstr "%m/%d" #: js/ui/dateMenu.js:291 msgid "No Events" msgstr "Nessun evento" #: js/ui/dateMenu.js:413 msgid "Add world clocks…" msgstr "Aggiungi orologi mondiali…" #: js/ui/dateMenu.js:414 msgid "World Clocks" msgstr "Orologi mondiali" #: js/ui/dateMenu.js:704 msgid "Loading…" msgstr "Caricamento…" #: js/ui/dateMenu.js:714 msgid "Go online for weather information" msgstr "Collegarsi a Internet per le informazioni meteo" #: js/ui/dateMenu.js:716 msgid "Weather information is currently unavailable" msgstr "Le informazioni meteo non sono disponibili" #: js/ui/dateMenu.js:726 msgid "Weather" msgstr "Meteo" #: js/ui/dateMenu.js:728 msgid "Select weather location…" msgstr "Seleziona una posizione…" #: js/ui/endSessionDialog.js:48 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "Termina sessione di %s" #: js/ui/endSessionDialog.js:49 msgctxt "title" msgid "Log Out" msgstr "Termina sessione" #: js/ui/endSessionDialog.js:52 #, javascript-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "La sessione di %s verrà terminata automaticamente tra %d secondo." msgstr[1] "La sessione di %s verrà terminata automaticamente tra %d secondi." #: js/ui/endSessionDialog.js:58 #, javascript-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "La sessione verrà terminata automaticamente tra %d secondo." msgstr[1] "La sessione verrà terminata automaticamente tra %d secondi." #: js/ui/endSessionDialog.js:65 msgctxt "button" msgid "Log Out" msgstr "Termina sessione" #: js/ui/endSessionDialog.js:71 js/ui/status/system.js:176 msgctxt "title" msgid "Power Off" msgstr "Spegni" #: js/ui/endSessionDialog.js:72 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Installa aggiornamenti e spegni" #: js/ui/endSessionDialog.js:75 #, javascript-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "Il sistema verrà spento automaticamente tra %d secondo." msgstr[1] "Il sistema verrà spento automaticamente tra %d secondi." #: js/ui/endSessionDialog.js:79 js/ui/endSessionDialog.js:98 msgctxt "checkbox" msgid "Install pending software updates" msgstr "Installare gli aggiornamenti software in sospeso" #: js/ui/endSessionDialog.js:83 msgctxt "button" msgid "Power Off" msgstr "Spegni" #: js/ui/endSessionDialog.js:90 msgctxt "title" msgid "Restart" msgstr "Riavvia" #: js/ui/endSessionDialog.js:91 msgctxt "title" msgid "Install Updates & Restart" msgstr "Installa aggiornamenti e riavvia" #: js/ui/endSessionDialog.js:94 #, javascript-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "Il sistema verrà riavviato automaticamente tra %d secondo." msgstr[1] "Il sistema verrà riavviato automaticamente tra %d secondi." #: js/ui/endSessionDialog.js:102 msgctxt "button" msgid "Restart" msgstr "Riavvia" #: js/ui/endSessionDialog.js:110 msgctxt "title" msgid "Restart & Install Updates" msgstr "Riavvia e installa aggiornamenti" #: js/ui/endSessionDialog.js:113 #, javascript-format msgid "The system will automatically restart and install updates in %d second." msgid_plural "" "The system will automatically restart and install updates in %d seconds." msgstr[0] "" "Il sistema verrà riavviato automaticamente per installare gli aggiornamenti " "tra %d secondo." msgstr[1] "" "Il sistema verrà riavviato automaticamente per installare gli aggiornamenti " "tra %d secondi." #: js/ui/endSessionDialog.js:120 js/ui/endSessionDialog.js:141 msgctxt "button" msgid "Restart & Install" msgstr "Riavvia e installa" #: js/ui/endSessionDialog.js:122 msgctxt "button" msgid "Install & Power Off" msgstr "Installa e spegni" #: js/ui/endSessionDialog.js:123 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Spegnere dopo aver installato gli aggiornamenti" #: js/ui/endSessionDialog.js:130 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "Riavvia e installa aggiornamenti" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:135 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "%s %s verrà installato dopo il riavvio. L'installazione potrebbe richiedere " "tempo: assicurarsi di aver eseguito una copia di sicurezza dei dati e che il " "computer sia collegato all'alimentazione elettrica." #: js/ui/endSessionDialog.js:284 msgid "Low battery power: please plug in before installing updates." msgstr "" "Batteria quasi scarica: collegare alla rete elettrica prima di installare " "gli aggiornamenti." #: js/ui/endSessionDialog.js:293 msgid "Some applications are busy or have unsaved work" msgstr "Alcune applicazioni risultano in esecuzione o con lavoro non salvato" #: js/ui/endSessionDialog.js:298 msgid "Other users are logged in" msgstr "Altri utenti sono collegati" #: js/ui/endSessionDialog.js:468 msgctxt "button" msgid "Boot Options" msgstr "Opzioni di avvio" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:673 #, javascript-format msgid "%s (remote)" msgstr "%s (remoto)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:676 #, javascript-format msgid "%s (console)" msgstr "%s (console)" #: js/ui/extensionDownloader.js:282 msgid "Install" msgstr "Installa" #: js/ui/extensionDownloader.js:288 msgid "Install Extension" msgstr "Installa estensione" #: js/ui/extensionDownloader.js:289 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "Scaricare e installare «%s» da extensions.gnome.org?" #: js/ui/extensionSystem.js:354 msgid "Extension Updates Available" msgstr "Disponibili aggiornamenti estensioni" #: js/ui/extensionSystem.js:355 msgid "Extension updates are ready to be installed." msgstr "È possibile installare gli aggiornamenti delle estensioni." #: js/ui/inhibitShortcutsDialog.js:70 msgid "Allow inhibiting shortcuts" msgstr "Consenti blocco delle scorciatoie" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:73 #, javascript-format msgid "The app %s wants to inhibit shortcuts" msgstr "L'applicazione %s vuole bloccare le scorciatoie" #: js/ui/inhibitShortcutsDialog.js:74 msgid "An app wants to inhibit shortcuts" msgstr "Un'applicazione vuole bloccare le scorciatoie" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:81 #, javascript-format msgid "You can restore shortcuts by pressing %s." msgstr "Per riabilitare le scorciatoie, premere %s." #: js/ui/kbdA11yDialog.js:34 msgid "Slow Keys Turned On" msgstr "Tasti lenti attivati" #: js/ui/kbdA11yDialog.js:35 msgid "Slow Keys Turned Off" msgstr "Tasti lenti disattivati" #: js/ui/kbdA11yDialog.js:36 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "È stato premuto il tasto «Maiusc» per otto secondi. Questa è la scorciatoia " "per la funzione «Tasti lenti», che determina il modo in cui opera la " "tastiera." #: js/ui/kbdA11yDialog.js:42 msgid "Sticky Keys Turned On" msgstr "Tasti singoli attivati" #: js/ui/kbdA11yDialog.js:43 msgid "Sticky Keys Turned Off" msgstr "Tasti singoli disattivati" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "È stato premuto per cinque volte consecutive il tasto «Maiusc». Questa è la " "scorciatoia per la funzione «Tasti singoli», che determina il modo in cui " "opera la tastiera." #: js/ui/kbdA11yDialog.js:47 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" "Sono stati premuti due tasti contemporaneamente o cinque volte consecutive " "il tasto «Maiusc». Questo disabilita la funzione «Tasti singoli», che " "determina il modo in cui opera la tastiera." #: js/ui/kbdA11yDialog.js:57 msgid "Leave On" msgstr "Lascia attivata" #: js/ui/kbdA11yDialog.js:57 msgid "Turn On" msgstr "Accendi" #: js/ui/kbdA11yDialog.js:67 js/ui/status/network.js:455 msgid "Turn Off" msgstr "Spegni" #: js/ui/kbdA11yDialog.js:67 msgid "Leave Off" msgstr "Lascia disattivata" #: js/ui/keyboard.js:181 js/ui/status/keyboard.js:899 msgid "Keyboard Settings" msgstr "Impostazioni tastiera" #: js/ui/lookingGlass.js:724 msgid "No extensions installed" msgstr "Nessuna estensione installata" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:785 #, javascript-format msgid "%s has not emitted any errors." msgstr "%s non ha emesso alcun errore." #: js/ui/lookingGlass.js:791 msgid "Hide Errors" msgstr "Nascondi errori" #: js/ui/lookingGlass.js:795 js/ui/lookingGlass.js:872 msgid "Show Errors" msgstr "Mostra errori" #: js/ui/lookingGlass.js:804 msgid "Active" msgstr "Attiva" #: js/ui/lookingGlass.js:807 msgid "Inactive" msgstr "Inattiva" #: js/ui/lookingGlass.js:809 msgid "Error" msgstr "Errore" #: js/ui/lookingGlass.js:811 msgid "Out of date" msgstr "Non aggiornato" #: js/ui/lookingGlass.js:813 msgid "Downloading" msgstr "Scaricamento" #: js/ui/lookingGlass.js:815 msgid "Deactivating" msgstr "Disattivazione" #: js/ui/lookingGlass.js:817 msgid "Activating" msgstr "Attivazione" #: js/ui/lookingGlass.js:850 msgid "View Source" msgstr "Visualizza sorgente" #: js/ui/lookingGlass.js:861 msgid "Web Page" msgstr "Pagina web" #: js/ui/main.js:279 msgid "System was put in unsafe mode" msgstr "Il sistema è stato messo in modalità non sicura" #: js/ui/main.js:280 msgid "Apps now have unrestricted access" msgstr "Le applicazioni ora hanno accesso illimitato" #: js/ui/main.js:283 js/ui/overview.js:54 msgid "Undo" msgstr "Annulla" #: js/ui/main.js:340 msgid "Logged in as a privileged user" msgstr "Accesso eseguito come utente con privilegi" #: js/ui/main.js:341 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" "Per motivi di sicurezza, non è consigliato avviare una sessione con un " "utente con privilegi. Se possibile, accedere come utente normale." #: js/ui/main.js:389 msgid "Screen Lock disabled" msgstr "Blocca schermo disabilitato" #: js/ui/main.js:390 msgid "Screen Locking requires the GNOME display manager." msgstr "Il blocco dello schermo richiede il gestore schermi di GNOME." #. Translators: this is the string displayed in the header when a message #. source doesn't have a name #: js/ui/messageList.js:400 msgid "Unknown App" msgstr "App sconosciuta" #: js/ui/messageTray.js:328 js/ui/messageTray.js:330 msgid "Notification sound" msgstr "Suono notifica" #: js/ui/mpris.js:198 msgid "Unknown artist" msgstr "Artista sconosciuto" #: js/ui/mpris.js:208 msgid "Unknown title" msgstr "Titolo sconosciuto" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:342 msgid "Type to search" msgstr "Digita per cercare" #: js/ui/overviewControls.js:406 msgid "Apps" msgstr "Applicazioni" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:67 msgid "Overview" msgstr "Panoramica" #: js/ui/padOsd.js:100 msgid "New shortcut…" msgstr "Nuova scorciatoia…" #: js/ui/padOsd.js:153 msgid "App defined" msgstr "Definita dall'applicazione" #: js/ui/padOsd.js:154 msgid "Show on-screen help" msgstr "Mostra aiuto sullo schermo" #: js/ui/padOsd.js:155 msgid "Switch monitor" msgstr "Cambia monitor" #: js/ui/padOsd.js:156 msgid "Assign keystroke" msgstr "Assegna tasti" #: js/ui/padOsd.js:225 msgid "Done" msgstr "Fatto" #: js/ui/padOsd.js:728 msgid "Edit…" msgstr "Modifica…" #: js/ui/padOsd.js:775 msgid "None" msgstr "Nessuno" #: js/ui/padOsd.js:846 msgid "Press a button to configure" msgstr "Premere un pulsante per configurare" #: js/ui/padOsd.js:847 msgid "Press Esc to exit" msgstr "Premere Esc per uscire" #: js/ui/padOsd.js:850 msgid "Press any key to exit" msgstr "Premere un tasto per uscire" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:425 msgid "Activities" msgstr "Attività" #: js/ui/panel.js:506 msgctxt "System menu in the top bar" msgid "System" msgstr "Sistema" #: js/ui/panel.js:680 msgid "Top Bar" msgstr "Barra superiore" #: js/ui/quickSettings.js:187 msgid "Open menu" msgstr "Apre il menù" #: js/ui/runDialog.js:63 msgid "Run a Command" msgstr "Eseguire un comando" #: js/ui/runDialog.js:78 msgid "Press ESC to close" msgstr "Premere Esc per chiudere" #: js/ui/runDialog.js:243 msgid "Restart is not available on Wayland" msgstr "Il riavvio non è disponibile su Wayland" #: js/ui/runDialog.js:248 msgid "Restarting…" msgstr "Riavvio…" #: js/ui/screenShield.js:235 msgid "GNOME needs to lock the screen" msgstr "GNOME deve bloccare lo schermo" #: js/ui/screenShield.js:276 js/ui/screenShield.js:669 msgid "Unable to lock" msgstr "Impossibile bloccare" #: js/ui/screenShield.js:277 js/ui/screenShield.js:670 msgid "Lock was blocked by an app" msgstr "Il blocco è stato impedito da un'applicazione" #: js/ui/screenshot.js:1254 msgid "Selection" msgstr "Selezione" #: js/ui/screenshot.js:1264 msgid "Area Selection" msgstr "Selezione area" #: js/ui/screenshot.js:1269 msgid "Screen" msgstr "Schermo" #: js/ui/screenshot.js:1279 msgid "Screen Selection" msgstr "Selezione schermo" #: js/ui/screenshot.js:1284 msgid "Window" msgstr "Finestra" #: js/ui/screenshot.js:1294 msgid "Window Selection" msgstr "Selezione finestra" #. Translators: entry in the window right click menu. #: js/ui/screenshot.js:1319 js/ui/status/system.js:113 js/ui/windowMenu.js:30 msgid "Take Screenshot" msgstr "Cattura schermata" #: js/ui/screenshot.js:1335 msgid "Record Screen" msgstr "Registra schermo" #. Translators: since this string refers to an action, #. it needs to be phrased as a verb. #: js/ui/screenshot.js:1352 msgid "Capture" msgstr "Cattura" #: js/ui/screenshot.js:1374 msgid "Show Pointer" msgstr "Mostra puntatore" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1998 msgid "Screencasts" msgstr "Video" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast from 07-17-2013 10:00:46 PM" #: js/ui/screenshot.js:2003 #, no-c-format msgid "Screencast from %d %t" msgstr "Video del %d %t" #. Translators: notification title. #: js/ui/screenshot.js:2049 msgid "Screencast recorded" msgstr "Video registrato" #. Translators: notification title. #: js/ui/screenshot.js:2062 msgid "Screencast failed to start" msgstr "Impossibile avviare la registrazione video" #. Translators: notification title. #: js/ui/screenshot.js:2068 msgid "Screencast ended: Out of disk space" msgstr "La registrazione vide è terminata: spazio su disco esaurito" #. We can encourage user to try again on service crashes since the #. recorder will auto-blocklist the pipeline that crashed. #. Translators: notification title. #: js/ui/screenshot.js:2074 msgid "Screencast ended unexpectedly, please try again" msgstr "La registrazione video è terminata all'improvviso, riprovare" #. Translators: notification title. #: js/ui/screenshot.js:2077 msgid "Screencast ended unexpectedly" msgstr "Il video è terminato all'improvviso" #. Translators: notification source name. #: js/ui/screenshot.js:2087 js/ui/screenshot.js:2329 msgid "Screenshot" msgstr "Schermata" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:2094 msgid "Click here to view the video." msgstr "Fare clic per visualizzare il video." #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:2102 js/ui/screenshot.js:2345 msgid "Show in Files" msgstr "Mostra in File" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2289 #, javascript-format msgid "Screenshot from %s" msgstr "Schermata del %s" #. Translators: notification title. #: js/ui/screenshot.js:2335 msgid "Screenshot captured" msgstr "Schermata catturata" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2337 msgid "You can paste the image from the clipboard." msgstr "È possibile incollare l'immagine dagli appunti." #: js/ui/screenshot.js:2393 js/ui/screenshot.js:2557 msgid "Screenshot taken" msgstr "Schermata catturata" #: js/ui/search.js:831 msgid "Searching…" msgstr "Ricerca…" #: js/ui/search.js:833 msgid "No results." msgstr "Nessun risultato." #: js/ui/search.js:964 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "%d altro" msgstr[1] "%d altri" #: js/ui/searchController.js:89 #: subprojects/extensions-app/data/ui/extensions-window.ui:73 msgid "Search" msgstr "Cerca" #: js/ui/shellEntry.js:23 msgid "Copy" msgstr "Copia" #: js/ui/shellEntry.js:28 msgid "Paste" msgstr "Incolla" #: js/ui/shellEntry.js:80 msgid "Show Text" msgstr "Mostra testo" #: js/ui/shellEntry.js:82 msgid "Hide Text" msgstr "Nascondi testo" #: js/ui/shellEntry.js:176 msgid "Caps lock is on." msgstr "Blocco maiuscolo attivo" #: js/ui/shellMountOperation.js:288 msgid "Hidden Volume" msgstr "Volume nascosto" #: js/ui/shellMountOperation.js:291 msgid "Windows System Volume" msgstr "Volume di sistema Windows" #: js/ui/shellMountOperation.js:294 msgid "Uses Keyfiles" msgstr "Utilizza file di chiave" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:302 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead." msgstr "" "Per sbloccare un volume che utilizza file di chiave, usare lo strumento " "%s." #: js/ui/shellMountOperation.js:306 msgid "" "You need an external utility like Disks to unlock a volume that uses " "keyfiles." msgstr "" "È necessaria un'utilità esterna come Dischi per sbloccare un volume " "che usa file di chiave." #: js/ui/shellMountOperation.js:314 msgid "PIM Number" msgstr "Numero PIM" #: js/ui/shellMountOperation.js:373 msgid "Remember Password" msgstr "Ricorda password" #: js/ui/shellMountOperation.js:388 msgid "Unlock" msgstr "Sblocca" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:402 #, javascript-format msgid "Open %s" msgstr "Apri %s" #: js/ui/shellMountOperation.js:438 msgid "The PIM must be a number or empty." msgstr "PIM deve essere un numero o vuoto." # su Android è Rilevabile :P #: js/ui/status/accessibility.js:36 msgid "Accessibility" msgstr "Accessibilità" #: js/ui/status/accessibility.js:46 msgid "High Contrast" msgstr "Contrasto elevato" #: js/ui/status/accessibility.js:49 msgid "Zoom" msgstr "Ingrandimento" #: js/ui/status/accessibility.js:56 msgid "Screen Reader" msgstr "Lettore schermo" #: js/ui/status/accessibility.js:60 msgid "Screen Keyboard" msgstr "Tastiera a schermo" #: js/ui/status/accessibility.js:64 msgid "Visual Alerts" msgstr "Avvisi visibili" #: js/ui/status/accessibility.js:68 msgid "Sticky Keys" msgstr "Tasti singoli" #: js/ui/status/accessibility.js:72 msgid "Slow Keys" msgstr "Tasti lenti" #: js/ui/status/accessibility.js:76 msgid "Bounce Keys" msgstr "Tasti rimbalzati" #: js/ui/status/accessibility.js:80 msgid "Mouse Keys" msgstr "Mouse da tastiera" # su Android è Rilevabile :P #: js/ui/status/accessibility.js:85 msgid "Accessibility Settings" msgstr "Impostazioni accessibilità" #: js/ui/status/accessibility.js:142 msgid "Large Text" msgstr "Caratteri grandi" #: js/ui/status/autoRotate.js:14 msgid "Auto Rotate" msgstr "Rotazione automatica" #: js/ui/status/backgroundApps.js:156 msgctxt "title" msgid "Background Apps" msgstr "Applicazioni in background" #: js/ui/status/backgroundApps.js:171 msgid "Apps known to be running without a window" msgstr "Applicazioni note che possono essere eseguite senza una finestra" #: js/ui/status/backgroundApps.js:182 msgid "App Settings" msgstr "Impostazioni applicazioni" #: js/ui/status/backgroundApps.js:239 msgid "No Background Apps" msgstr "Nessuna applicazione in background" #: js/ui/status/backgroundApps.js:241 #, javascript-format msgid "%d Background App" msgid_plural "%d Background Apps" msgstr[0] "%d applicazione in background" msgstr[1] "%d applicazioni in background" #: js/ui/status/backlight.js:40 msgid "Keyboard Brightness" msgstr "Luminosità tastiera" #: js/ui/status/backlight.js:80 msgid "Off" msgstr "Off" #: js/ui/status/backlight.js:81 msgid "Low" msgstr "Bassa" #: js/ui/status/backlight.js:82 msgid "High" msgstr "Alta" #: js/ui/status/backlight.js:148 js/ui/status/keyboard.js:881 msgid "Keyboard" msgstr "Tastiera" #: js/ui/status/bluetooth.js:246 js/ui/status/network.js:360 msgid "Disconnect" msgstr "Disconnetti" #: js/ui/status/bluetooth.js:263 js/ui/status/bluetooth.js:265 msgid "Bluetooth" msgstr "Bluetooth" #: js/ui/status/bluetooth.js:288 js/ui/status/network.js:1900 msgid "Bluetooth Settings" msgstr "Impostazioni Bluetooth" #: js/ui/status/bluetooth.js:335 msgid "No available or connected devices" msgstr "Nessun dispositivo disponibile o connesso" #: js/ui/status/bluetooth.js:336 msgid "Turn on Bluetooth to connect to devices" msgstr "Attivare il Bluetooth per connettersi ai dispositivi" #. Translators: This is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:390 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d collegato" msgstr[1] "%d collegati" #: js/ui/status/brightness.js:34 msgid "Brightness" msgstr "Luminosità" #: js/ui/status/darkMode.js:12 msgid "Dark Style" msgstr "Stile scuro" #: js/ui/status/dwellClick.js:15 msgid "Single Click" msgstr "Clic singolo" #: js/ui/status/dwellClick.js:20 msgid "Double Click" msgstr "Doppio-clic" #: js/ui/status/dwellClick.js:25 msgid "Drag" msgstr "Trascina" #: js/ui/status/dwellClick.js:30 msgid "Secondary Click" msgstr "Clic secondario" #: js/ui/status/dwellClick.js:39 msgid "Dwell Click" msgstr "Clic automatico" #: js/ui/status/keyboard.js:898 msgid "Show Keyboard Layout" msgstr "Mostra disposizione tastiera" #: js/ui/status/location.js:339 msgid "Allow location access" msgstr "Consenti accesso alla posizione" #. Translators: %s is an application name #: js/ui/status/location.js:341 #, javascript-format msgid "The app %s wants to access your location" msgstr "L'applicazione %s vuole accedere alla propria posizione geografica" #: js/ui/status/location.js:351 msgid "Location access can be changed at any time from the privacy settings." msgstr "" "L'accesso alla posizione geografica può essere modificato in qualsiasi " "momento attraverso le impostazioni della privacy." #: js/ui/status/location.js:359 msgid "Deny Access" msgstr "Nega accesso" #: js/ui/status/location.js:364 msgid "Grant Access" msgstr "Consenti accesso" #: js/ui/status/network.js:62 msgid "" msgstr "" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:354 #, javascript-format msgid "Disconnect %s" msgstr "Disconnetti %s" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:356 #, javascript-format msgid "Connect to %s" msgstr "Connetti a %s" #: js/ui/status/network.js:1050 msgid "Secure" msgstr "Sicura" #: js/ui/status/network.js:1050 msgid "Not secure" msgstr "Non sicura" #: js/ui/status/network.js:1051 #, javascript-format msgid "Signal strength %s%%" msgstr "Potenza segnale %s%%" #. translators: The first placeholder is the network name, the second and indication whether it is secure, and the last the signal strength indication #: js/ui/status/network.js:1053 #, javascript-format msgid "%s, %s, %s" msgstr "%s, %s, %s" #. Translators: %s is a network identifier #: js/ui/status/network.js:1155 #, javascript-format msgid "%s Hotspot" msgstr "Hotspot %s" #: js/ui/status/network.js:1426 #, javascript-format msgid "%d connected" msgid_plural "%d connected" msgstr[0] "%d connesso" msgstr[1] "%d connessi" #: js/ui/status/network.js:1524 js/ui/status/network.js:1540 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1525 msgid "VPN Settings" msgstr "Impostazioni VPN" #: js/ui/status/network.js:1785 msgid "Wi–Fi" msgstr "Wi–Fi" #: js/ui/status/network.js:1787 msgid "All Networks" msgstr "Tutte le reti" #: js/ui/status/network.js:1884 msgid "Wired Connections" msgstr "Connessioni via cavo" #: js/ui/status/network.js:1885 msgid "Wired Settings" msgstr "Impostazioni rete via cavo" #: js/ui/status/network.js:1899 msgid "Bluetooth Tethers" msgstr "Tethering Bluetooth" #. Translators: "Tether" from "Bluetooth Tether" #: js/ui/status/network.js:1906 msgid "Tether" msgstr "Tethering" #: js/ui/status/network.js:1919 msgid "Mobile Connections" msgstr "Connessioni mobili" #: js/ui/status/network.js:1921 msgid "Mobile Broadband Settings" msgstr "Impostazioni banda larga mobile" #. Translators: "Mobile" from "Mobile Broadband" #: js/ui/status/network.js:1930 msgid "Mobile" msgstr "Mobile" #: js/ui/status/network.js:2035 msgid "Connection failed" msgstr "Connessione non riuscita" #: js/ui/status/network.js:2036 msgid "Activation of network connection failed" msgstr "Attivazione della connessione di rete non riuscita" #: js/ui/status/nightLight.js:21 msgid "Night Light" msgstr "Luce notturna" #: js/ui/status/powerProfiles.js:21 msgctxt "Power profile" msgid "Performance" msgstr "Prestazioni" #: js/ui/status/powerProfiles.js:26 msgctxt "Power profile" msgid "Balanced" msgstr "Bilanciata" #: js/ui/status/powerProfiles.js:31 msgctxt "Power profile" msgid "Power Saver" msgstr "Risparmio energia" #: js/ui/status/powerProfiles.js:41 js/ui/status/powerProfiles.js:71 msgid "Power Mode" msgstr "Modalità energia" #: js/ui/status/powerProfiles.js:73 msgid "Power Settings" msgstr "Impostazioni alimentazione" #: js/ui/status/remoteAccess.js:76 msgid "Stop Screencast" msgstr "Ferma video" #: js/ui/status/remoteAccess.js:146 msgid "Stop Screen Sharing" msgstr "Ferma condivisione schermo" #: js/ui/status/rfkill.js:101 msgid "Airplane Mode" msgstr "Modalità aereo" #: js/ui/status/system.js:170 msgid "Power Off Menu" msgstr "Menù spegnimento" #: js/ui/status/system.js:178 msgid "Suspend" msgstr "Sospendi" #: js/ui/status/system.js:183 msgid "Restart…" msgstr "Riavvia…" #: js/ui/status/system.js:188 msgid "Power Off…" msgstr "Spegni…" #: js/ui/status/system.js:195 #: subprojects/extensions-app/data/ui/extensions-window.ui:124 msgid "Log Out…" msgstr "Termina sessione…" #: js/ui/status/system.js:200 msgid "Switch User…" msgstr "Cambia utente…" #: js/ui/status/system.js:244 msgctxt "action" msgid "Lock Screen" msgstr "Blocca schermo" #: js/ui/status/thunderbolt.js:310 msgid "Unknown Thunderbolt device" msgstr "Dispositivo Thunderbolt sconosciuto" #: js/ui/status/thunderbolt.js:311 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" "È stato rilevato un nuovo dispositivo: scollegarlo e ricollegarlo per " "poterlo utilizzare." #: js/ui/status/thunderbolt.js:314 msgid "Unauthorized Thunderbolt device" msgstr "Dispositivo Thunderbolt non autorizzato" #: js/ui/status/thunderbolt.js:315 msgid "" "New device has been detected and needs to be authorized by an administrator." msgstr "" "È stato rilevato un nuovo dispositivo e l'amministratore di sistema deve " "autorizzarlo." #: js/ui/status/thunderbolt.js:321 msgid "Thunderbolt authorization error" msgstr "Errore autenticazione Thunderbolt" #: js/ui/status/thunderbolt.js:322 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "Impossibile autorizzare il dispositivo Thunderbolt: %s" #: js/ui/status/volume.js:220 msgid "Volume changed" msgstr "Volume modificato" #: js/ui/status/volume.js:233 msgid "Unmute" msgstr "Attiva audio" #: js/ui/status/volume.js:233 msgid "Mute" msgstr "Disattiva audio" #: js/ui/status/volume.js:288 msgid "Volume" msgstr "Volume" #: js/ui/status/volume.js:304 msgid "Sound Output" msgstr "Audio in uscita" #: js/ui/status/volume.js:376 msgid "Sound Input" msgstr "Audio in ingresso" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:22 msgid "Mirror" msgstr "Duplica" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:31 msgid "Join Displays" msgstr "Unisci schermi" #. Translators: this is for using only external displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:41 msgid "External Only" msgstr "Solo esterno" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:49 msgid "Built-in Only" msgstr "Solo integrato" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:374 msgid "%A %B %-d" msgstr "%A %-d %B" #: js/ui/unlockDialog.js:380 msgid "Swipe up to unlock" msgstr "Scorrere verso l'alto per sbloccare" #: js/ui/unlockDialog.js:381 msgid "Click or press a key to unlock" msgstr "Fare clic o premere un tasto per sbloccare" #: js/ui/unlockDialog.js:564 msgid "Unlock Window" msgstr "Sblocca finestra" #: js/ui/unlockDialog.js:573 msgid "Log in as another user" msgstr "Accedi come altro utente" #: js/ui/welcomeDialog.js:49 #, javascript-format msgid "GNOME %s" msgstr "GNOME %s" #: js/ui/welcomeDialog.js:53 #, javascript-format msgid "Welcome to %s" msgstr "Benvenuti in %s" #: js/ui/welcomeDialog.js:54 msgid "If you want to learn your way around, check out the tour." msgstr "Per imparare a usare il sistema, dai un'occhiata al tour." #: js/ui/welcomeDialog.js:63 msgid "Skip" msgstr "Ignora" #: js/ui/welcomeDialog.js:68 msgid "Take Tour" msgstr "Fai il tour" # (ndt) dovrebbe essere il nome dell'applicazione #: js/ui/windowAttentionHandler.js:20 #, javascript-format msgid "“%s” is ready" msgstr "«%s» è pronto" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:69 msgid "Keep these display settings?" msgstr "Mantenere queste impostazioni per il monitor?" #: js/ui/windowManager.js:79 msgid "Revert Settings" msgstr "Ripristina impostazioni" #: js/ui/windowManager.js:84 msgid "Keep Changes" msgstr "Mantieni modifiche" #: js/ui/windowManager.js:104 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "Le modifiche alle impostazioni saranno ripristinate tra %d secondo" msgstr[1] "Le modifiche alle impostazioni saranno ripristinate tra %d secondi" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:496 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:42 msgid "Hide" msgstr "Nascondi" #: js/ui/windowMenu.js:49 msgid "Restore" msgstr "Ripristina" #: js/ui/windowMenu.js:53 msgid "Maximize" msgstr "Massimizza" #: js/ui/windowMenu.js:60 msgid "Move" msgstr "Muovi" #: js/ui/windowMenu.js:80 msgid "Resize" msgstr "Ridimensiona" #: js/ui/windowMenu.js:101 msgid "Move Titlebar Onscreen" msgstr "Muovi barra del titolo a schermo" #: js/ui/windowMenu.js:106 msgid "Always on Top" msgstr "Sempre in primo piano" #: js/ui/windowMenu.js:125 msgid "Always on Visible Workspace" msgstr "Sempre sullo spazio di lavoro visibile" #: js/ui/windowMenu.js:139 msgid "Move to Workspace Left" msgstr "Sposta su spazio di lavoro a sinistra" #: js/ui/windowMenu.js:145 msgid "Move to Workspace Right" msgstr "Sposta su spazio di lavoro a destra" #: js/ui/windowMenu.js:151 msgid "Move to Workspace Up" msgstr "Sposta su spazio di lavoro in alto" #: js/ui/windowMenu.js:157 msgid "Move to Workspace Down" msgstr "Sposta su spazio di lavoro in basso" #: js/ui/windowMenu.js:175 msgid "Move to Monitor Up" msgstr "Sposta su schermo in alto" #: js/ui/windowMenu.js:184 msgid "Move to Monitor Down" msgstr "Sposta su schermo in basso" #: js/ui/windowMenu.js:193 msgid "Move to Monitor Left" msgstr "Sposta su schermo a sinistra" #: js/ui/windowMenu.js:202 msgid "Move to Monitor Right" msgstr "Sposta su schermo a destra" #: js/ui/windowMenu.js:210 msgid "Close" msgstr "Chiudi" #: src/main.c:529 subprojects/extensions-tool/src/main.c:336 msgid "Print version" msgstr "Stampa la versione" #: src/main.c:535 msgid "Mode used by GDM for login screen" msgstr "Modalità usata da GDM per la schermata d'accesso" #: src/main.c:541 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "Usa una modalità specifica, per es. «gdm» per la schermata d'accesso" #: src/main.c:547 msgid "List possible modes" msgstr "Elenca le modalità possibili" #: src/main.c:553 msgid "Force animations to be enabled" msgstr "Forza le animazioni ad essere abilitate" #: src/shell-app.c:253 msgctxt "program" msgid "Unknown" msgstr "Sconosciuto" #: src/shell-app.c:504 #, c-format msgid "Failed to launch “%s”" msgstr "Avvio di «%s» non riuscito" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match." msgstr "Le password non corrispondono." #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "La password non può essere vuota" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "La finestra di dialogo di autenticazione è stata annullata dall'utente" #: src/st/st-icon-theme.c:1865 #, c-format msgid "Icon '%s' not present in theme %s" msgstr "L'icona «%s» non è presente nel tema %s" #: src/st/st-icon-theme.c:3454 src/st/st-icon-theme.c:3757 msgid "Failed to load icon" msgstr "Caricamento dell'icona non riuscito" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 msgid "Manage your GNOME Extensions" msgstr "Gestione delle Estensioni GNOME" #. developer_name tag deprecated with Appstream 1.0 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:19 msgid "The GNOME Project" msgstr "Il progetto GNOME" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:51 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" "Estensioni GNOME gestisce l'aggiornamento e la configurazione delle " "preferenze delle estensioni e la rimozione o la disabilitazione di " "estensioni indesiderate." #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:70 msgid "Main Window" msgstr "Finestra principale" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:74 msgid "Available Updates" msgstr "Aggiornamenti disponibili" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:78 msgid "Search View" msgstr "Vista di ricerca" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "Configura le estensioni di GNOME Shell" #: subprojects/extensions-app/js/extensionManager.js:237 #, javascript-format msgid "" "The installed version of this extension (%s) is incompatible with the " "current version of GNOME (%s). The extension has been disabled." msgstr "" "La versione installata di questa estensione (%s) non è compatibile con la " "versione attuale di GNOME (%s). Questa estensione è stata disabilitata." #: subprojects/extensions-app/js/extensionManager.js:238 #, javascript-format msgid "" "The installed version of this extension is incompatible with the current " "version of GNOME (%s). The extension has been disabled." msgstr "" "La versione installata di questa estensione non è compatibile con la " "versione attuale di GNOME (%s). Questa estensione è stata disabilitata." #: subprojects/extensions-app/js/extensionManager.js:242 msgid "" "An error has occurred in this extension. This could cause issues elsewhere " "in the system. It is recommended to turn the extension off until the error " "is resolved." msgstr "" "Si è verificato un errore con questa estensione. Ciò potrebbe causare dei " "problemi nel sistema: è consigliato disattivare l'estensione finché l'errore " "non è risolto." #. translators: Details for an extension error #: subprojects/extensions-app/js/extensionManager.js:248 msgid "Error details:" msgstr "Dettagli errore:" #: subprojects/extensions-app/js/extensionRow.js:82 #, javascript-format msgid "Version %s" msgstr "Versione %s" #: subprojects/extensions-app/js/extensionsWindow.js:113 #, javascript-format msgid "Remove “%s”?" msgstr "Rimuovere «%s»?" #: subprojects/extensions-app/js/extensionsWindow.js:114 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "" "Una volta rimossa l'estensione sarà necessario scaricarla nuovamente per " "abilitarla" #: subprojects/extensions-app/js/extensionsWindow.js:117 msgid "_Cancel" msgstr "A_nnulla" #: subprojects/extensions-app/js/extensionsWindow.js:118 msgid "_Remove" msgstr "_Rimuovi" #: subprojects/extensions-app/js/extensionsWindow.js:158 msgid "translator-credits" msgstr "Milo Casagrande " #: subprojects/extensions-app/js/extensionsWindow.js:203 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "%d estensione verrà aggiornata al prossimo accesso." msgstr[1] "%d estensioni verranno aggiornate al prossimo accesso." #: subprojects/extensions-app/data/ui/extension-row.ui:21 msgid "Error Details" msgstr "Dettagli errore" #: subprojects/extensions-app/data/ui/extension-row.ui:61 msgid "Updates Details" msgstr "Dettagli aggiornamenti" #: subprojects/extensions-app/data/ui/extension-row.ui:71 msgid "" "A new version of this extension is ready and will be loaded on next login." msgstr "" "Una nuova versione di questa estensione è pronta e verrà caricata al " "prossimo accesso." #: subprojects/extensions-app/data/ui/extension-row.ui:107 msgid "Extension Details" msgstr "Dettagli estensione" #: subprojects/extensions-app/data/ui/extension-row.ui:193 msgid "_Website" msgstr "Sito _web" #: subprojects/extensions-app/data/ui/extension-row.ui:220 msgid "_Settings" msgstr "Impostazio_ni" #: subprojects/extensions-app/data/ui/extension-row.ui:247 msgid "_Remove…" msgstr "_Rimuovi…" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Keyboard Shortcuts" msgstr "Scorciatoie da tastiera" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "Informazioni su Estensioni" #: subprojects/extensions-app/data/ui/extensions-window.ui:64 msgid "Main Menu" msgstr "Menù principale" #: subprojects/extensions-app/data/ui/extensions-window.ui:106 msgid "Search extensions" msgstr "Crea estensioni" #: subprojects/extensions-app/data/ui/extensions-window.ui:134 msgid "_Extensions" msgstr "_Estensioni" #: subprojects/extensions-app/data/ui/extensions-window.ui:143 msgid "More Information" msgstr "Maggiori informazioni" #: subprojects/extensions-app/data/ui/extensions-window.ui:153 msgid "" "Extensions can cause performance and stability issues. It is recommended to " "disable all extensions if you experience problems with your system." msgstr "" "Le estensioni possono causare problemi di prestazioni e stabilità. " "Disabilitare le estensioni se si riscontrano problemi con il proprio sistema." #: subprojects/extensions-app/data/ui/extensions-window.ui:180 msgid "User Extensions" msgstr "Estensioni utente" #: subprojects/extensions-app/data/ui/extensions-window.ui:200 msgid "System Extensions" msgstr "Estensioni di sistema" #: subprojects/extensions-app/data/ui/extensions-window.ui:235 msgid "Search Results" msgstr "Risultati ricerca" #: subprojects/extensions-app/data/ui/extensions-window.ui:254 msgid "No Results Found" msgstr "Nessun risultato trovato" #: subprojects/extensions-app/data/ui/extensions-window.ui:255 msgid "Try a different search." msgstr "Provare un altro criterio di ricerca." #: subprojects/extensions-app/data/ui/extensions-window.ui:266 msgid "No Installed Extensions" msgstr "Nessuna estensione installata" #: subprojects/extensions-app/data/ui/extensions-window.ui:267 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" "Per trovare e installare estensioni, visitare il sito web extensions.gnome.org." #: subprojects/extensions-app/data/ui/extensions-window.ui:278 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" "Impossibile recuperare l'elenco delle estensioni installate. Assicurarsi di " "aver eseguire l'accesso a GNOME e riprovare." #: subprojects/extensions-app/data/ui/help-overlay.ui:9 msgctxt "shortcut window" msgid "General" msgstr "Generali" #: subprojects/extensions-app/data/ui/help-overlay.ui:12 msgctxt "shortcut window" msgid "Open Menu" msgstr "Apre il menù" #: subprojects/extensions-app/data/ui/help-overlay.ui:18 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Attiva/Disattiva ricerca" #: subprojects/extensions-app/data/ui/help-overlay.ui:24 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Mostra scorciatoie" #: subprojects/extensions-app/data/ui/help-overlay.ui:30 msgctxt "shortcut window" msgid "Quit" msgstr "Esce" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:284 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "La nuova estensione è stata creata in %s.\n" #: subprojects/extensions-tool/src/command-create.c:376 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" "Il nome dovrebbe essere una stringa descrittiva molto corta.\n" "Esempi: %s" #: subprojects/extensions-tool/src/command-create.c:382 #: subprojects/extensions-tool/src/main.c:243 msgid "Name" msgstr "Nome" #: subprojects/extensions-tool/src/command-create.c:396 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" "La descrizione è una frase singola che spiega lo scopo dell'estensione.\n" "Esempi: %s" #: subprojects/extensions-tool/src/command-create.c:402 #: subprojects/extensions-tool/src/main.c:246 msgid "Description" msgstr "Descrizione" #: subprojects/extensions-tool/src/command-create.c:416 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" "Uno UUID è un identificativo globale univoco per l'estensione.\n" "Dovrebbe essere espresso sotto forma di indirizzo email " "(clicktofocus@janedoe.example.com)\n" "\n" #: subprojects/extensions-tool/src/command-create.c:443 msgid "Choose one of the available templates:\n" msgstr "Scegliere uno dei modelli disponibili:\n" #: subprojects/extensions-tool/src/command-create.c:457 msgid "Template" msgstr "Modello" #: subprojects/extensions-tool/src/command-create.c:515 msgid "The unique identifier of the new extension" msgstr "L'identificatore univoco della nuova estensione" #: subprojects/extensions-tool/src/command-create.c:518 msgid "NAME" msgstr "NOME" #: subprojects/extensions-tool/src/command-create.c:519 msgid "The user-visible name of the new extension" msgstr "Il nome visibile dagli utenti della nuova estensione" #: subprojects/extensions-tool/src/command-create.c:521 msgid "DESCRIPTION" msgstr "DESCRIZIONE" #: subprojects/extensions-tool/src/command-create.c:523 msgid "A short description of what the extension does" msgstr "Una breve descrizione di cosa fa l'estensione" #: subprojects/extensions-tool/src/command-create.c:525 #: subprojects/extensions-tool/src/command-pack.c:455 msgid "DOMAIN" msgstr "DOMINIO" #: subprojects/extensions-tool/src/command-create.c:527 msgid "The gettext domain used by the extension" msgstr "Il domino gettext usato dall'estensione" #: subprojects/extensions-tool/src/command-create.c:529 #: subprojects/extensions-tool/src/command-pack.c:448 msgid "SCHEMA" msgstr "SCHEMA" #: subprojects/extensions-tool/src/command-create.c:531 msgid "The GSettings schema used by the extension" msgstr "Lo schema GSettings usato dall'estensione" #: subprojects/extensions-tool/src/command-create.c:534 msgid "TEMPLATE" msgstr "MODELLO" #: subprojects/extensions-tool/src/command-create.c:535 msgid "The template to use for the new extension" msgstr "Il modello da usare per la nuova estensione" #: subprojects/extensions-tool/src/command-create.c:538 msgid "Include prefs.js template" msgstr "Includere il modello prefs.js" #: subprojects/extensions-tool/src/command-create.c:544 msgid "Enter extension information interactively" msgstr "Inserire le informazioni sull'estensione interattivamente" #: subprojects/extensions-tool/src/command-create.c:552 msgid "Create a new extension" msgstr "Crea nuova estensione" #: subprojects/extensions-tool/src/command-create.c:570 #: subprojects/extensions-tool/src/command-list.c:190 msgid "Unknown arguments" msgstr "Argomenti sconosciuti" #: subprojects/extensions-tool/src/command-create.c:595 msgid "UUID, name and description are required" msgstr "Sono richiesti UUID, nome e descrizione" #: subprojects/extensions-tool/src/command-disable.c:62 #: subprojects/extensions-tool/src/command-enable.c:62 #, c-format msgid "Extension “%s” does not exist\n" msgstr "L'estensione «%s» non esiste\n" #: subprojects/extensions-tool/src/command-disable.c:98 msgid "Disable an extension" msgstr "Disabilita un'estensione" #: subprojects/extensions-tool/src/command-disable.c:116 #: subprojects/extensions-tool/src/command-enable.c:116 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "Nessun UUID fornito" #: subprojects/extensions-tool/src/command-disable.c:121 #: subprojects/extensions-tool/src/command-enable.c:121 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "Fornito più di un UUID" #: subprojects/extensions-tool/src/command-enable.c:98 msgid "Enable an extension" msgstr "Abilita un'estensione" #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:66 #: subprojects/extensions-tool/src/main.c:150 msgid "Failed to connect to GNOME Shell\n" msgstr "Collegamento a GNOME Shell non riuscito\n" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:159 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "L'estensione «%s» non esiste\n" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "Mostra informazioni sull'estensione" #: subprojects/extensions-tool/src/command-install.c:190 msgid "Overwrite an existing extension" msgstr "Sovrascrive un'estensione esistente" #: subprojects/extensions-tool/src/command-install.c:192 msgid "EXTENSION_BUNDLE" msgstr "BUNDLE_ESTENSIONE" #: subprojects/extensions-tool/src/command-install.c:201 msgid "Install an extension bundle" msgstr "Installa un bundle di estensioni" #: subprojects/extensions-tool/src/command-install.c:219 msgid "No extension bundle specified" msgstr "Nessun bundle di estensioni specificato" #: subprojects/extensions-tool/src/command-install.c:225 msgid "More than one extension bundle specified" msgstr "È stato specificato più di un bundle di estensioni" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show user-installed extensions" msgstr "Mostra estensioni installate dall'utente" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show system-installed extensions" msgstr "Mostra estensioni di sistema" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Show enabled extensions" msgstr "Mostra estensioni abilitate" #: subprojects/extensions-tool/src/command-list.c:149 msgid "Show disabled extensions" msgstr "Mostra estensioni disabilitate" #: subprojects/extensions-tool/src/command-list.c:152 msgid "Show extensions in active state" msgstr "Mostra estensioni attive" #: subprojects/extensions-tool/src/command-list.c:155 msgid "Show extensions in inactive state" msgstr "Mostra estensioni inattive" #: subprojects/extensions-tool/src/command-list.c:158 msgid "Show extensions with preferences" msgstr "Mostra estensioni con preferenze" #: subprojects/extensions-tool/src/command-list.c:161 msgid "Show extensions with updates" msgstr "Mostra estensioni con aggiornamenti" #: subprojects/extensions-tool/src/command-list.c:164 msgid "Print extension details" msgstr "Stampa dettagli dell'estensione" #: subprojects/extensions-tool/src/command-list.c:172 msgid "List installed extensions" msgstr "Elenca estensioni installate" #: subprojects/extensions-tool/src/command-pack.c:444 msgid "FILE" msgstr "FILE" #: subprojects/extensions-tool/src/command-pack.c:445 msgid "Additional source to include in the bundle" msgstr "Sorgenti aggiuntivi da includere nel bundle" #: subprojects/extensions-tool/src/command-pack.c:449 msgid "A GSettings schema that should be included" msgstr "Uno schema GSettings da includere" #: subprojects/extensions-tool/src/command-pack.c:451 #: subprojects/extensions-tool/src/command-pack.c:462 msgid "DIRECTORY" msgstr "DIRECTORY" #: subprojects/extensions-tool/src/command-pack.c:453 msgid "The directory where translations are found" msgstr "La directory dove trovare le traduzioni" #: subprojects/extensions-tool/src/command-pack.c:457 msgid "The gettext domain to use for translations" msgstr "Il domino gettext da usare per le traduzioni" #: subprojects/extensions-tool/src/command-pack.c:460 msgid "Overwrite an existing pack" msgstr "Sovrascrive un pacchetto esistente" #: subprojects/extensions-tool/src/command-pack.c:464 msgid "The directory where the pack should be created" msgstr "La directory dove creare il pacchetto" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "SOURCE_DIRECTORY" msgstr "DIRECTORY_SORGENTE" #: subprojects/extensions-tool/src/command-pack.c:475 msgid "Create an extension bundle" msgstr "Crea un bundle di estensioni" #: subprojects/extensions-tool/src/command-pack.c:495 msgid "More than one source directory specified" msgstr "È stata specificata più di una directory di sorgenti" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "L'estensione «%s» non ha preferenze\n" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "Apertura delle preferenze per l'estensione «%s» non riuscita: %s\n" #: subprojects/extensions-tool/src/command-prefs.c:87 msgid "Opens extension preferences" msgstr "Apre preferenze estensione" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "Ripristina un'estensione" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "Impossibile rimuovere estensioni di sistema\n" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "Rimozione di «%s» non riuscita\n" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "Rimuove un'estensione" #: subprojects/extensions-tool/src/main.c:76 msgid "Do not print error messages" msgstr "Non stampa messaggi di errore" #: subprojects/extensions-tool/src/main.c:249 msgid "Path" msgstr "Percorso" #: subprojects/extensions-tool/src/main.c:252 msgid "URL" msgstr "URL" #: subprojects/extensions-tool/src/main.c:255 msgid "Original author" msgstr "Autore" #: subprojects/extensions-tool/src/main.c:261 #: subprojects/extensions-tool/src/main.c:263 #: subprojects/extensions-tool/src/main.c:265 msgid "Version" msgstr "Versione" # (ndt) o abilitata? #: subprojects/extensions-tool/src/main.c:268 msgid "Enabled" msgstr "Abilitato" #: subprojects/extensions-tool/src/main.c:268 msgid "Yes" msgstr "Sì" #: subprojects/extensions-tool/src/main.c:268 msgid "No" msgstr "No" #: subprojects/extensions-tool/src/main.c:271 msgid "State" msgstr "Stato" #: subprojects/extensions-tool/src/main.c:309 msgid "“version” takes no arguments" msgstr "«version» non accetta alcun argomento" #: subprojects/extensions-tool/src/main.c:311 #: subprojects/extensions-tool/src/main.c:331 msgid "Usage:" msgstr "Uso:" #: subprojects/extensions-tool/src/main.c:314 msgid "Print version information and exit." msgstr "Stampa informazioni sulla versione ed esce" #: subprojects/extensions-tool/src/main.c:329 #: subprojects/extensions-tool/src/main.c:332 msgid "COMMAND" msgstr "COMANDO" #: subprojects/extensions-tool/src/main.c:332 msgid "[ARGS…]" msgstr "[ARG…]" #: subprojects/extensions-tool/src/main.c:334 msgid "Commands:" msgstr "Comandi:" #: subprojects/extensions-tool/src/main.c:335 msgid "Print help" msgstr "Stampa l'aiuto" #: subprojects/extensions-tool/src/main.c:337 msgid "Enable extension" msgstr "Abilita estensione" #: subprojects/extensions-tool/src/main.c:338 msgid "Disable extension" msgstr "Disabilita estensione" #: subprojects/extensions-tool/src/main.c:339 msgid "Reset extension" msgstr "Ripristina estensione" #: subprojects/extensions-tool/src/main.c:340 msgid "Uninstall extension" msgstr "Rimuovi estensione" #: subprojects/extensions-tool/src/main.c:341 msgid "List extensions" msgstr "Elenca estensioni" #: subprojects/extensions-tool/src/main.c:342 #: subprojects/extensions-tool/src/main.c:343 msgid "Show extension info" msgstr "Mostra informazioni sull'estensione" #: subprojects/extensions-tool/src/main.c:344 msgid "Open extension preferences" msgstr "Apri preferenze estensione" #: subprojects/extensions-tool/src/main.c:345 msgid "Create extension" msgstr "Crea estensione" #: subprojects/extensions-tool/src/main.c:346 msgid "Package extension" msgstr "Crea pacchetto estensione" #: subprojects/extensions-tool/src/main.c:347 msgid "Install extension bundle" msgstr "Installa bundle estensioni" #: subprojects/extensions-tool/src/main.c:349 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "Usare «%s» per maggiori informazioni.\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "Semplice" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "Un'estensione vuota" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "Indicatore" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "Aggiunge un'icona alla barra superiore" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:4 msgid "Quick Settings Item" msgstr "Elemento impostazioni rapide" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:5 msgid "Add an item to quick settings" msgstr "Aggiunge un elemento alle impostazioni rapide" # (ndt) o disabilitata? #. translators: #. * The device has been disabled #: subprojects/gvc/gvc-mixer-control.c:1872 msgid "Disabled" msgstr "Disabilitato" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1879 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u uscita" msgstr[1] "%u uscite" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1889 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u ingresso" msgstr[1] "%u ingressi" #: subprojects/gvc/gvc-mixer-control.c:2872 msgid "System Sounds" msgstr "Audio di sistema" #~ msgid "Stop conflicting session dialog closed" #~ msgstr "Finestra terminazione sessione in conflitto chiusa." #, javascript-format #~ msgid "Try to login again to start a session for user %s." #~ msgstr "" #~ "Provare ad accedere per iniziare una nuova sessione per l'utente %s." #, javascript-format #~ msgid "%s is now known as %s" #~ msgstr "%s ha cambiato nome in %s" 07070100000240000081A40000000000000000000000016712993F000188BC000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/ja.po# Japanese translation of gnome-shell package. # Copyright (C) 2010-2017, 2019-2020, 2022 the gnome-shell copyright holder. # This file is distributed under the same license as the gnome-shell package. # Nishio Futoshi , 2010. # Kiyotaka NISHIBORI , 2011. # Hideki Yamane , 2011. # Takayuki KUSANO , 2011, 2012. # Jiro Matsuzawa , 2011-2017. # Takanori MATSUURA , 2012. # Yoji TOYODA , 2013. # Ikuya Awashiro , 2014. # IWAI, Masaharu , 2015. # sicklylife , 2019-2020, 2022. # 小山田 純 , 2022. # msgid "" msgstr "" "Project-Id-Version: gnome-shell master\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" "POT-Creation-Date: 2022-03-12 09:44+0000\n" "PO-Revision-Date: 2022-03-12 19:00+0900\n" "Last-Translator: sicklylife \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" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "ランチャー" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate favorite application 1" msgstr "お気に入りのアプリケーション 1 をアクティブにする" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate favorite application 2" msgstr "お気に入りのアプリケーション 2 をアクティブにする" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate favorite application 3" msgstr "お気に入りのアプリケーション 3 をアクティブにする" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate favorite application 4" msgstr "お気に入りのアプリケーション 4 をアクティブにする" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate favorite application 5" msgstr "お気に入りのアプリケーション 5 をアクティブにする" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate favorite application 6" msgstr "お気に入りのアプリケーション 6 をアクティブにする" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate favorite application 7" msgstr "お気に入りのアプリケーション 7 をアクティブにする" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate favorite application 8" msgstr "お気に入りのアプリケーション 8 をアクティブにする" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate favorite application 9" msgstr "お気に入りのアプリケーション 9 をアクティブにする" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2062 msgid "Screenshots" msgstr "スクリーンショット" #: data/50-gnome-shell-screenshots.xml:9 #: data/org.gnome.shell.gschema.xml.in:235 msgid "Take a screenshot interactively" msgstr "インタラクティブにスクリーンショットを撮る" #: data/50-gnome-shell-screenshots.xml:12 #: data/org.gnome.shell.gschema.xml.in:247 msgid "Take a screenshot" msgstr "スクリーンショットを撮る" #: data/50-gnome-shell-screenshots.xml:15 #: data/org.gnome.shell.gschema.xml.in:243 msgid "Take a screenshot of a window" msgstr "ウィンドウのスクリーンショットを撮る" #: data/50-gnome-shell-screenshots.xml:18 #: data/org.gnome.shell.gschema.xml.in:239 msgid "Record a screencast interactively" msgstr "インタラクティブにスクリーンキャストを撮る" #: data/50-gnome-shell-system.xml:6 msgid "System" msgstr "システム" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "通知リストを表示する" #: data/50-gnome-shell-system.xml:12 msgid "Focus the active notification" msgstr "アクティブな通知にフォーカスを当てる" #: data/50-gnome-shell-system.xml:15 msgid "Show the overview" msgstr "アクティビティ画面を表示する" #: data/50-gnome-shell-system.xml:18 msgid "Show all applications" msgstr "すべてのアプリケーションを表示する" #: data/50-gnome-shell-system.xml:21 msgid "Open the application menu" msgstr "アプリケーションメニューを開く" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "GNOME Shell" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "ウィンドウ管理とアプリケーションの起動" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "Alt-F2 から開発・テスト用の内部ツールを利用可能にする" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Alt-F2 ダイアログを利用した内部のデバッグツールとモニターツールへのアクセスを" "許可します。" #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "有効にする拡張機能の UUID" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "GNOME Shell の拡張機能には UUID プロパティがあり、このキーは、ロードしたい拡" "張機能の UUID のリストです。ロードしたい拡張機能はこのリストに含めなければな" "りません。このリストは org.gnome.Shell の EnableExtensions や " "DisableExtensions といった DBus メソッドでも操作できます。" #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "強制的に無効にする拡張機能の UUID" #: data/org.gnome.shell.gschema.xml.in:27 #, fuzzy msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" "GNOME Shell の拡張機能には UUID プロパティがあり、このキーは、現在のモードの" "一部としてロードされる場合でも無効化したい拡張機能の UUID のリストです。この" "リストは org.gnome.Shell の EnableExtensions や DisableExtensions といった " "DBus メソッドでも操作できます。このキーは“enabled-extensions”の設定より優先さ" "れます。" #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "ユーザー拡張機能を無効化" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" "ユーザーが有効にした拡張機能をすべて無効にします。“enabled-extension”の設定値" "には影響しません。" #: data/org.gnome.shell.gschema.xml.in:45 msgid "Disables the validation of extension version compatibility" msgstr "拡張機能のバージョン互換の検証を無効にする" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "通常は現在起動中の GNOME Shell のバージョンをサポートする拡張機能のみを読み込" "みます。この設定を true にした場合、バージョンチェック機能が無効になり、拡張" "機能のサポートバージョンに関係なく、すべての拡張機能を読み込みます。" #: data/org.gnome.shell.gschema.xml.in:54 msgid "List of desktop file IDs for favorite applications" msgstr "お気に入りのアプリケーションの .desktop ファイル ID の一覧" #: data/org.gnome.shell.gschema.xml.in:55 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "これらの ID で示されるアプリケーションは「お気に入り」に表示されます。" #: data/org.gnome.shell.gschema.xml.in:62 msgid "History for command (Alt-F2) dialog" msgstr "コマンド (Alt-F2) ダイアログの履歴" #. Translators: looking glass is a debugger and inspector tool, see https://wiki.gnome.org/Projects/GnomeShell/LookingGlass #: data/org.gnome.shell.gschema.xml.in:67 msgid "History for the looking glass dialog" msgstr "looking glass ダイアログの履歴" #: data/org.gnome.shell.gschema.xml.in:71 msgid "Always show the “Log out” menu item in the user menu." msgstr "ユーザーメニューに「ログアウト」を常に表示する" #: data/org.gnome.shell.gschema.xml.in:72 msgid "" "This key overrides the automatic hiding of the “Log out” menu item in single-" "user, single-session situations." msgstr "" "このキーは、単一ユーザー、単一セッション状況で「ログアウト」メニューアイテム" "を自動的に非表示にする機能よりも優先します。" #: data/org.gnome.shell.gschema.xml.in:79 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "マウント対象の暗号化されたファイルシステムやリモートファイルシステムのパス" "ワードを記憶する" #: data/org.gnome.shell.gschema.xml.in:80 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "GNOME Shell は、暗号化されたデバイスやリモートファイルシステムのマウント時に" "パスワードを要求します。パスワードを保存できる場合は、「パスワードを保存」" "チェックボックスが表示されます。このキーは、チェックボックスのデフォルト値と" "なります。" #: data/org.gnome.shell.gschema.xml.in:89 msgid "" "Whether the default Bluetooth adapter had set up devices associated to it" msgstr "" "デフォルトの Bluetooth アダプターにデバイスが関連付けられているかどうか" #: data/org.gnome.shell.gschema.xml.in:90 msgid "" "The shell will only show a Bluetooth menu item if a Bluetooth adapter is " "powered, or if there were devices set up associated with the default " "adapter. This will be reset if the default adapter is ever seen not to have " "devices associated to it." msgstr "" "Bluetooth アダプターの電源がオンになっているか、あるいはデフォルトのアダプ" "ターに関連付けられたデバイスがある場合にのみ、GNOME Shell は Bluetooth メ" "ニューを表示します。デフォルトのアダプターに関連付けられたデバイスがなくなっ" "た場合に、この値はリセットされます。" #: data/org.gnome.shell.gschema.xml.in:99 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "“GNOME へようこそ”ダイアログが表示された最新のバージョン" #: data/org.gnome.shell.gschema.xml.in:100 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can " "be used to effectively disable the dialog." msgstr "" "このキーは“GNOME へようこそ”ダイアログが最後に表示されたときの GNOME のバー" "ジョンを指定します。空の場合は識別可能な最も古いバージョンを、大きすぎる値の" "場合はまだ存在しないバージョンを意味します。大きすぎる値を使用することでダイ" "アログを意図的に無効にすることができます。" #: data/org.gnome.shell.gschema.xml.in:133 msgid "Layout of the app picker" msgstr "" #: data/org.gnome.shell.gschema.xml.in:134 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" msgstr "" #: data/org.gnome.shell.gschema.xml.in:149 msgid "Keybinding to open the application menu" msgstr "アプリケーションメニューを開くキーバインド" #: data/org.gnome.shell.gschema.xml.in:150 msgid "Keybinding to open the application menu." msgstr "アプリケーションメニューを開くキーバインドです。" #: data/org.gnome.shell.gschema.xml.in:156 #: data/org.gnome.shell.gschema.xml.in:163 msgid "Keybinding to shift between overview states" msgstr "アクティビティ画面の状態を切り替えるキーバインド" #: data/org.gnome.shell.gschema.xml.in:157 msgid "Keybinding to shift between session, window picker and app grid" msgstr "通常画面、ウィンドウ一覧、アプリ一覧の順に切り替えるキーバインドです" #: data/org.gnome.shell.gschema.xml.in:164 msgid "Keybinding to shift between app grid, window picker and session" msgstr "アプリ一覧、ウィンドウ一覧、通常画面の順に切り替えるキーバインドです" #: data/org.gnome.shell.gschema.xml.in:170 msgid "Keybinding to open the “Show Applications” view" msgstr "アプリケーション一覧を開くキーバインド" #: data/org.gnome.shell.gschema.xml.in:171 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "アプリケーション一覧を開くキーバインドです。" #: data/org.gnome.shell.gschema.xml.in:178 msgid "Keybinding to open the overview" msgstr "アクティビティ画面を開くキーバインド" #: data/org.gnome.shell.gschema.xml.in:179 msgid "Keybinding to open the Activities Overview." msgstr "アクティビティ画面を開くキーバインドです。" #: data/org.gnome.shell.gschema.xml.in:185 msgid "Keybinding to toggle the visibility of the notification list" msgstr "通知リストの表示/非表示を切り替えるキーバインド" #: data/org.gnome.shell.gschema.xml.in:186 msgid "Keybinding to toggle the visibility of the notification list." msgstr "通知リストの表示/非表示を切り替えるキーバインドです。" #: data/org.gnome.shell.gschema.xml.in:192 msgid "Keybinding to focus the active notification" msgstr "アクティブな通知にフォーカスを当てるキーバインド" #: data/org.gnome.shell.gschema.xml.in:193 msgid "Keybinding to focus the active notification." msgstr "アクティブな通知にフォーカスを当てるキーバインドです。" #: data/org.gnome.shell.gschema.xml.in:199 msgid "Switch to application 1" msgstr "アプリケーション 1 に切り替える" #: data/org.gnome.shell.gschema.xml.in:203 msgid "Switch to application 2" msgstr "アプリケーション 2 に切り替える" #: data/org.gnome.shell.gschema.xml.in:207 msgid "Switch to application 3" msgstr "アプリケーション 3 に切り替える" #: data/org.gnome.shell.gschema.xml.in:211 msgid "Switch to application 4" msgstr "アプリケーション 4 に切り替える" #: data/org.gnome.shell.gschema.xml.in:215 msgid "Switch to application 5" msgstr "アプリケーション 5 に切り替える" #: data/org.gnome.shell.gschema.xml.in:219 msgid "Switch to application 6" msgstr "アプリケーション 6 に切り替える" #: data/org.gnome.shell.gschema.xml.in:223 msgid "Switch to application 7" msgstr "アプリケーション 7 に切り替える" #: data/org.gnome.shell.gschema.xml.in:227 msgid "Switch to application 8" msgstr "アプリケーション 8 に切り替える" #: data/org.gnome.shell.gschema.xml.in:231 msgid "Switch to application 9" msgstr "アプリケーション 9 に切り替える" #: data/org.gnome.shell.gschema.xml.in:256 #: data/org.gnome.shell.gschema.xml.in:283 msgid "Limit switcher to current workspace." msgstr "スイッチャーを現在のワークスペース内に制限する" #: data/org.gnome.shell.gschema.xml.in:257 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "true に設定した場合、現在のワークスペースにウィンドウのあるアプリケーションだ" "けをスイッチャーに表示します。false に設定した場合はすべてのアプリケーション" "を表示します。" #: data/org.gnome.shell.gschema.xml.in:274 msgid "The application icon mode." msgstr "アプリケーションアイコンモード" #: data/org.gnome.shell.gschema.xml.in:275 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-" "only” (shows only the application icon) or “both”." msgstr "" "ウィンドウスイッチャーでのウィンドウの表示方法を設定します。指定可能な値" "は、“thumbnail-only”(ウィンドウのサムネイルを表示します)、“app-icon-only”(ア" "プリケーションアイコンを表示します)、あるいは“both”です。" #: data/org.gnome.shell.gschema.xml.in:284 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "true に設定した場合、現在のワークスペースのウィンドウだけをスイッチャーに表示" "します。false に設定した場合はすべてのアプリケーションを表示します。" #: data/org.gnome.shell.gschema.xml.in:294 msgid "Locations" msgstr "場所" #: data/org.gnome.shell.gschema.xml.in:295 msgid "The locations to show in world clocks" msgstr "世界時計に表示される地域です" #: data/org.gnome.shell.gschema.xml.in:305 msgid "Automatic location" msgstr "自動位置検出" #: data/org.gnome.shell.gschema.xml.in:306 msgid "Whether to fetch the current location or not" msgstr "現在の位置を取得するかどうか" #: data/org.gnome.shell.gschema.xml.in:313 msgid "Location" msgstr "場所" #: data/org.gnome.shell.gschema.xml.in:314 msgid "The location for which to show a forecast" msgstr "表示される天気予報の地域です" #: data/org.gnome.shell.gschema.xml.in:326 msgid "Attach modal dialog to the parent window" msgstr "モーダルダイアログを親ウィンドウに結び付ける" #: data/org.gnome.shell.gschema.xml.in:327 #: data/org.gnome.shell.gschema.xml.in:336 #: data/org.gnome.shell.gschema.xml.in:344 #: data/org.gnome.shell.gschema.xml.in:352 #: data/org.gnome.shell.gschema.xml.in:360 msgid "" "This key overrides the key in org.gnome.mutter when running GNOME Shell." msgstr "" "GNOME Shell 使用時は、 このキーが、org.gnome.mutter の同じキーよりも優先しま" "す。" #: data/org.gnome.shell.gschema.xml.in:335 msgid "Enable edge tiling when dropping windows on screen edges" msgstr "ウィンドウを画面の端に移動させたときにタイル状に配置する" #: data/org.gnome.shell.gschema.xml.in:343 msgid "Workspaces are managed dynamically" msgstr "ワークスペースを動的に管理する" #: data/org.gnome.shell.gschema.xml.in:351 msgid "Workspaces only on primary monitor" msgstr "プライマリモニターのみワークスペースを切り替える" #: data/org.gnome.shell.gschema.xml.in:359 msgid "Delay focus changes in mouse mode until the pointer stops moving" msgstr "マウスモードにおけるフォーカス遷移をポインターが停止するまで遅延させる" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "ネットワークログイン" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:144 msgid "Something’s gone wrong" msgstr "何か問題が起きています" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" "大変申し訳ありませんが、拡張機能の設定を表示できない問題が発生しました。拡張" "機能の作者に問題を報告することをお勧めします。" #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "技術的な詳細" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "ホームページ" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 msgid "Visit extension homepage" msgstr "拡張機能のホームページを開く" #: js/gdm/authPrompt.js:144 js/ui/audioDeviceSelection.js:61 #: js/ui/components/networkAgent.js:109 js/ui/components/polkitAgent.js:141 #: js/ui/endSessionDialog.js:437 js/ui/extensionDownloader.js:223 #: js/ui/shellMountOperation.js:377 js/ui/shellMountOperation.js:387 #: js/ui/status/network.js:956 subprojects/extensions-app/js/main.js:174 msgid "Cancel" msgstr "キャンセル" #: js/gdm/authPrompt.js:307 js/ui/components/networkAgent.js:209 #: js/ui/components/networkAgent.js:229 js/ui/components/networkAgent.js:261 #: js/ui/components/networkAgent.js:294 js/ui/components/networkAgent.js:333 #: js/ui/components/networkAgent.js:346 js/ui/components/polkitAgent.js:283 #: js/ui/shellMountOperation.js:327 msgid "Password" msgstr "パスワード" #: js/gdm/loginDialog.js:317 msgid "Choose Session" msgstr "セッションを選択する" #: js/gdm/loginDialog.js:463 msgid "Not listed?" msgstr "アカウントが見つかりませんか?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:931 #, javascript-format msgid "(e.g., user or %s)" msgstr "(たとえば、user あるいは %s)" #: js/gdm/loginDialog.js:936 js/ui/components/networkAgent.js:253 #: js/ui/components/networkAgent.js:288 js/ui/components/networkAgent.js:322 msgid "Username" msgstr "ユーザー名" #: js/gdm/loginDialog.js:1257 msgid "Login Window" msgstr "ログインウィンドウ" #: js/gdm/util.js:434 msgid "Authentication error" msgstr "認証エラー" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:606 msgid "(or swipe finger across reader)" msgstr "(または指紋リーダーで指をスワイプ)" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:611 msgid "(or place finger on reader)" msgstr "(または指紋リーダーに指を置く)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:84 msgctxt "search-result" msgid "Power Off" msgstr "電源オフ" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:87 msgid "power off;shutdown;halt;stop" msgstr "power off;shutdown;halt;stop;電源オフ;パワーオフ;シャットダウン;停止;" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:92 msgctxt "search-result" msgid "Restart" msgstr "再起動" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:95 msgid "reboot;restart;" msgstr "reboot;restart;リブート;リスタート;再起動;" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:100 msgctxt "search-result" msgid "Lock Screen" msgstr "画面ロック" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:103 msgid "lock screen" msgstr "lock screen;画面ロック" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:108 msgctxt "search-result" msgid "Log Out" msgstr "ログアウト" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:111 msgid "logout;log out;sign off" msgstr "logout;log out;sign off;ログアウト;サインオフ" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:116 msgctxt "search-result" msgid "Suspend" msgstr "サスペンド" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:119 msgid "suspend;sleep" msgstr "suspend;sleep;サスペンド;スリープ" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:124 msgctxt "search-result" msgid "Switch User" msgstr "ユーザーを切り替え" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:127 msgid "switch user" msgstr "switch user;ユーザー切り替え" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:134 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:139 msgctxt "search-result" msgid "Take a Screenshot" msgstr "スクリーンショットを撮る" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:142 msgid "screenshot;screencast;snip;capture;record" msgstr "" "screenshot;screencast;snip;capture;record;スクリーンショット;スクリーンキャスト;" "スニップ;キャプチャー;レコーディング;撮影;録画;画面;記録;" #: js/misc/systemActions.js:242 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "画面の回転をロック解除" #: js/misc/systemActions.js:243 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "画面の回転をロック" #: js/misc/util.js:129 msgid "Command not found" msgstr "コマンドが見つかりませんでした" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:166 msgid "Could not parse command:" msgstr "コマンドを解析できませんでした:" #: js/misc/util.js:174 #, javascript-format msgid "Execution of “%s” failed:" msgstr "“%s”の実行に失敗しました:" #: js/misc/util.js:191 msgid "Just now" msgstr "たった今" #: js/misc/util.js:193 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d 分前" #: js/misc/util.js:197 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d 時間前" #: js/misc/util.js:201 js/ui/dateMenu.js:167 msgid "Yesterday" msgstr "昨日" #: js/misc/util.js:203 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d 日前" #: js/misc/util.js:207 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d 週間前" #: js/misc/util.js:211 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%d ヶ月前" #: js/misc/util.js:214 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "%d 年前" #. Translators: Time in 24h format #: js/misc/util.js:247 msgid "%H∶%M" msgstr "%H:%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/util.js:253 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "昨日 %H:%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/util.js:259 #, no-c-format msgid "%A, %H∶%M" msgstr "%A %H:%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/util.js:265 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%B%-e日 %H:%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/util.js:271 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%Y年%B%-e日 %H:%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/util.js:276 msgid "%l∶%M %p" msgstr "%p %l:%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/util.js:282 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "昨日 %p %l:%M" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/util.js:288 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A %p %l:%M" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/util.js:294 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%B%-e日 %p %l:%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/util.js:300 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%Y年%B%-e日 %p %l:%M" #: js/portalHelper/main.js:53 msgid "Hotspot Login" msgstr "ホットスポットログイン" #: js/portalHelper/main.js:106 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "このホットスポットログインの接続は安全ではありません。このページであなたが入" "力したパスワードなどの情報は、近くにいる人に知られてしまう恐れがあります。" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:39 js/ui/status/location.js:406 msgid "Deny Access" msgstr "拒否" #: js/ui/accessDialog.js:40 js/ui/status/location.js:411 msgid "Grant Access" msgstr "許可" #: js/ui/appFavorites.js:164 #, javascript-format msgid "%s has been pinned to the dash." msgstr "%s をダッシュボードにピン留めしました。" #: js/ui/appFavorites.js:197 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "%s のピン留めを外しました。" #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:46 msgid "Open Windows" msgstr "開いているウィンドウ" #: js/ui/appMenu.js:54 msgid "New Window" msgstr "新しいウィンドウで開く" #: js/ui/appMenu.js:81 msgid "Show Details" msgstr "詳細を表示" #: js/ui/appMenu.js:96 msgid "Quit" msgstr "終了" #: js/ui/appMenu.js:156 js/ui/dash.js:249 msgid "Unpin" msgstr "ピン留めを外す" #: js/ui/appMenu.js:157 msgid "Pin to Dash" msgstr "ダッシュボードにピン留め" #: js/ui/appMenu.js:174 msgid "Launch using Integrated Graphics Card" msgstr "統合グラフィックカードを使用して起動" #: js/ui/appMenu.js:175 msgid "Launch using Discrete Graphics Card" msgstr "ディスクリートグラフィックカードを使用して起動" #: js/ui/audioDeviceSelection.js:41 msgid "Select Audio Device" msgstr "オーディオデバイスを選択" #: js/ui/audioDeviceSelection.js:56 msgid "Sound Settings" msgstr "サウンド設定" #: js/ui/audioDeviceSelection.js:69 msgid "Headphones" msgstr "ヘッドフォン" #: js/ui/audioDeviceSelection.js:71 msgid "Headset" msgstr "ヘッドセット" #: js/ui/audioDeviceSelection.js:73 js/ui/status/volume.js:270 msgid "Microphone" msgstr "マイク" #: js/ui/backgroundMenu.js:14 msgid "Change Background…" msgstr "背景を変更…" #: js/ui/backgroundMenu.js:16 js/ui/status/nightLight.js:45 msgid "Display Settings" msgstr "ディスプレイ設定" #: js/ui/backgroundMenu.js:17 #: subprojects/extensions-app/data/ui/extension-row.ui:122 msgid "Settings" msgstr "設定" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:35 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:61 msgctxt "grid sunday" msgid "S" msgstr "日" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:63 msgctxt "grid monday" msgid "M" msgstr "月" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:65 msgctxt "grid tuesday" msgid "T" msgstr "火" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:67 msgctxt "grid wednesday" msgid "W" msgstr "水" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:69 msgctxt "grid thursday" msgid "T" msgstr "木" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:71 msgctxt "grid friday" msgid "F" msgstr "金" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:73 msgctxt "grid saturday" msgid "S" msgstr "土" # %OB は February、%Ob は Feb のように月名が表示される # 日本語環境だと %OB は 「2月」 %Ob は 「 2月」 (半角スペース付き) のように表示される? #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:402 msgid "%OB" msgstr "%B" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:412 msgid "%OB %Y" msgstr "%Y年%B" #: js/ui/calendar.js:472 msgid "Previous month" msgstr "先月" #: js/ui/calendar.js:490 msgid "Next month" msgstr "来月" #: js/ui/calendar.js:642 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:701 msgid "Week %V" msgstr "第 %V 週" #: js/ui/calendar.js:880 msgid "No Notifications" msgstr "通知なし" #: js/ui/calendar.js:937 msgid "Do Not Disturb" msgstr "通知ポップアップを表示しない" #: js/ui/calendar.js:958 msgid "Clear" msgstr "消去" #. Translators: %s is an application name #: js/ui/closeDialog.js:40 #, javascript-format msgid "“%s” is not responding." msgstr "“%s”の応答がありません。" #: js/ui/closeDialog.js:41 msgid "" "You may choose to wait a short while for it to continue or force the " "application to quit entirely." msgstr "" "もうしばらく応答を待ちますか? それともアプリケーションを強制的に終了しますか?" #: js/ui/closeDialog.js:69 msgid "Force Quit" msgstr "強制終了" #: js/ui/closeDialog.js:74 msgid "Wait" msgstr "応答を待つ" #: js/ui/components/automountManager.js:84 msgid "External drive connected" msgstr "外付けドライブが接続されました" #: js/ui/components/automountManager.js:96 msgid "External drive disconnected" msgstr "外付けドライブが外されました" #: js/ui/components/automountManager.js:207 msgid "Unable to unlock volume" msgstr "ボリュームをロック解除できません" #: js/ui/components/automountManager.js:208 msgid "The installed udisks version does not support the PIM setting" msgstr "" "インストールされているバージョンの udisks は PIM の設定に対応していません" #: js/ui/components/autorunManager.js:334 #, javascript-format msgid "Open with %s" msgstr "%s で開く" #: js/ui/components/networkAgent.js:91 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router." msgstr "または、ルーターの“WPS”ボタンを押して接続する方法もあります。" #: js/ui/components/networkAgent.js:103 js/ui/status/network.js:244 #: js/ui/status/network.js:335 js/ui/status/network.js:961 msgid "Connect" msgstr "接続" #: js/ui/components/networkAgent.js:218 msgid "Key" msgstr "キー" #: js/ui/components/networkAgent.js:269 js/ui/components/networkAgent.js:308 msgid "Private key password" msgstr "秘密鍵のパスワード" #: js/ui/components/networkAgent.js:302 msgid "Identity" msgstr "Identity" #: js/ui/components/networkAgent.js:328 msgid "Service" msgstr "サービス" #: js/ui/components/networkAgent.js:366 js/ui/components/networkAgent.js:402 #: js/ui/components/networkAgent.js:746 js/ui/components/networkAgent.js:767 msgid "Authentication required" msgstr "認証が必要です" #: js/ui/components/networkAgent.js:367 js/ui/components/networkAgent.js:747 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network " "“%s”." msgstr "" "無線ネットワーク“%s”にアクセスするにはパスワードか暗号化キーが必要です。" #: js/ui/components/networkAgent.js:371 js/ui/components/networkAgent.js:751 msgid "Wired 802.1X authentication" msgstr "有線 802.1X の認証" #: js/ui/components/networkAgent.js:374 msgid "Network name" msgstr "ネットワーク名" #: js/ui/components/networkAgent.js:382 js/ui/components/networkAgent.js:755 msgid "DSL authentication" msgstr "DSL 認証" #: js/ui/components/networkAgent.js:389 js/ui/components/networkAgent.js:760 msgid "PIN code required" msgstr "PIN コードが必要です" #: js/ui/components/networkAgent.js:390 js/ui/components/networkAgent.js:761 msgid "PIN code is needed for the mobile broadband device" msgstr "モバイルブロードバンドデバイスには PIN コードが必要です" #: js/ui/components/networkAgent.js:392 msgid "PIN" msgstr "PIN" #: js/ui/components/networkAgent.js:403 js/ui/components/networkAgent.js:752 #: js/ui/components/networkAgent.js:756 js/ui/components/networkAgent.js:768 #: js/ui/components/networkAgent.js:772 #, javascript-format msgid "A password is required to connect to “%s”." msgstr "“%s”への接続にはパスワードが必要です。" #: js/ui/components/networkAgent.js:735 js/ui/status/network.js:1751 msgid "Network Manager" msgstr "ネットワークマネージャー" #: js/ui/components/networkAgent.js:771 msgid "VPN password" msgstr "VPN パスワード" #: js/ui/components/polkitAgent.js:41 msgid "Authentication Required" msgstr "認証が必要です" #: js/ui/components/polkitAgent.js:81 msgid "Administrator" msgstr "管理者" #: js/ui/components/polkitAgent.js:146 msgid "Authenticate" msgstr "認証" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:260 js/ui/shellMountOperation.js:403 msgid "Sorry, that didn’t work. Please try again." msgstr "申し訳ありません、認証できませんでした。再試行してください。" #: js/ui/components/telepathyClient.js:828 #, javascript-format msgid "%s is now known as %s" msgstr "%s は %s になりました" #: js/ui/ctrlAltTab.js:22 js/ui/overviewControls.js:405 msgid "Windows" msgstr "ウィンドウ" #: js/ui/dash.js:205 js/ui/dash.js:251 msgid "Show Applications" msgstr "アプリケーションを表示する" #. Translators: this is the name of the dock/favorites area on #. the left of the overview #: js/ui/dash.js:398 msgid "Dash" msgstr "ダッシュボード" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:83 msgid "%B %-d %Y" msgstr "%Y年%-m月%-e日" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:90 msgid "%A %B %e %Y" msgstr "%Y年%-m月%-e日 (%a)" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:156 msgctxt "calendar heading" msgid "%B %-d" msgstr "%-m月%-e日" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:159 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%Y年%-m月%-e日" #: js/ui/dateMenu.js:165 msgid "Today" msgstr "今日" #: js/ui/dateMenu.js:169 msgid "Tomorrow" msgstr "明日" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:200 msgctxt "event list time" msgid "All Day" msgstr "終日" #: js/ui/dateMenu.js:273 msgid "No Events" msgstr "イベントなし" #: js/ui/dateMenu.js:396 msgid "Add world clocks…" msgstr "世界時計を追加…" #: js/ui/dateMenu.js:397 msgid "World Clocks" msgstr "世界時計" #: js/ui/dateMenu.js:677 msgid "Loading…" msgstr "読み込み中…" #: js/ui/dateMenu.js:687 msgid "Go online for weather information" msgstr "気象情報取得のためにネットワークに接続してください" #: js/ui/dateMenu.js:689 msgid "Weather information is currently unavailable" msgstr "気象情報を取得できません" #: js/ui/dateMenu.js:699 msgid "Weather" msgstr "天気" #: js/ui/dateMenu.js:701 msgid "Select weather location…" msgstr "天気の場所を選択…" #: js/ui/endSessionDialog.js:41 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "%s のログアウト" #: js/ui/endSessionDialog.js:42 msgctxt "title" msgid "Log Out" msgstr "ログアウト" #: js/ui/endSessionDialog.js:45 #, javascript-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "%s は %d 秒後に自動的にログアウトします。" #: js/ui/endSessionDialog.js:51 #, javascript-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "%d 秒後に自動的にログアウトします。" #: js/ui/endSessionDialog.js:58 msgctxt "button" msgid "Log Out" msgstr "ログアウト" #: js/ui/endSessionDialog.js:64 msgctxt "title" msgid "Power Off" msgstr "電源オフ" #: js/ui/endSessionDialog.js:65 msgctxt "title" msgid "Install Updates & Power Off" msgstr "アップデートをインストールして電源オフ" #: js/ui/endSessionDialog.js:68 #, javascript-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "%d 秒後に自動的にシステムの電源を切ります。" #: js/ui/endSessionDialog.js:72 js/ui/endSessionDialog.js:91 msgctxt "checkbox" msgid "Install pending software updates" msgstr "保留中のソフトウェアアップデートをインストールする" #: js/ui/endSessionDialog.js:76 msgctxt "button" msgid "Power Off" msgstr "電源オフ" #: js/ui/endSessionDialog.js:83 msgctxt "title" msgid "Restart" msgstr "再起動" #: js/ui/endSessionDialog.js:84 msgctxt "title" msgid "Install Updates & Restart" msgstr "アップデートをインストールして再起動" #: js/ui/endSessionDialog.js:87 #, javascript-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "%d 秒後にシステムを再起動します。" #: js/ui/endSessionDialog.js:95 msgctxt "button" msgid "Restart" msgstr "再起動" #: js/ui/endSessionDialog.js:103 msgctxt "title" msgid "Restart & Install Updates" msgstr "再起動してアップデートをインストール" #: js/ui/endSessionDialog.js:106 #, javascript-format msgid "The system will automatically restart and install updates in %d second." msgid_plural "" "The system will automatically restart and install updates in %d seconds." msgstr[0] "%d 秒後にシステムを再起動してアップデートをインストールします。" #: js/ui/endSessionDialog.js:113 js/ui/endSessionDialog.js:134 msgctxt "button" msgid "Restart & Install" msgstr "再起動とインストール" #: js/ui/endSessionDialog.js:115 msgctxt "button" msgid "Install & Power Off" msgstr "インストールと電源オフ" #: js/ui/endSessionDialog.js:116 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "アップデートをインストールして電源をオフにする" #: js/ui/endSessionDialog.js:123 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "再起動してアップグレード" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:128 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "%s %s は再起動後にインストールされます。アップグレードには時間が掛かることが" "あります。重要なデータはバックアップを取っておいてください。また、コンピュー" "ター本体は電源につないでください。" #: js/ui/endSessionDialog.js:287 msgid "Low battery power: please plug in before installing updates." msgstr "" "バッテリー低下: アップデートをインストールする前に電源に接続してください。" #: js/ui/endSessionDialog.js:296 msgid "Some applications are busy or have unsaved work" msgstr "実行中または作業が未保存のアプリケーションがあります" #: js/ui/endSessionDialog.js:301 msgid "Other users are logged in" msgstr "他のユーザーがログインしています" #: js/ui/endSessionDialog.js:467 msgctxt "button" msgid "Boot Options" msgstr "起動オプション" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:688 #, javascript-format msgid "%s (remote)" msgstr "%s (リモート)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:691 #, javascript-format msgid "%s (console)" msgstr "%s (コンソール)" #: js/ui/extensionDownloader.js:227 msgid "Install" msgstr "インストール" #: js/ui/extensionDownloader.js:233 msgid "Install Extension" msgstr "拡張機能をインストール" #: js/ui/extensionDownloader.js:234 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "extensions.gnome.org から“%s”をダウンロードしてインストールしますか?" #: js/ui/extensionSystem.js:267 msgid "Extension Updates Available" msgstr "拡張機能のアップデートが利用可能です" #: js/ui/extensionSystem.js:268 msgid "Extension updates are ready to be installed." msgstr "拡張機能のアップデートをインストールする準備ができました。" #: js/ui/inhibitShortcutsDialog.js:79 msgid "Allow inhibiting shortcuts" msgstr "" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:82 #, javascript-format msgid "The application %s wants to inhibit shortcuts" msgstr "" #: js/ui/inhibitShortcutsDialog.js:83 msgid "An application wants to inhibit shortcuts" msgstr "" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:90 #, javascript-format msgid "You can restore shortcuts by pressing %s." msgstr "%s を押してショートカットを復元できます。" #: js/ui/inhibitShortcutsDialog.js:101 msgid "Deny" msgstr "拒否" #: js/ui/inhibitShortcutsDialog.js:110 msgid "Allow" msgstr "許可" #: js/ui/kbdA11yDialog.js:32 msgid "Slow Keys Turned On" msgstr "スローキーをオンにする" #: js/ui/kbdA11yDialog.js:33 msgid "Slow Keys Turned Off" msgstr "スローキーをオフにする" #: js/ui/kbdA11yDialog.js:34 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "[SHIFT] キーを 8 秒間押下しました。これはスローキー機能のショートカットとし" "て、キーボード操作に影響を与えるものです。" #: js/ui/kbdA11yDialog.js:40 msgid "Sticky Keys Turned On" msgstr "固定キーをオンにする" #: js/ui/kbdA11yDialog.js:41 msgid "Sticky Keys Turned Off" msgstr "固定キーをオフにする" #: js/ui/kbdA11yDialog.js:43 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "[SHIFT] キーを連続して 5 回押下しました。これは固定キー機能のショートカットと" "して、キーボード操作に影響を与えるものです。" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" "同時に 2 つのキーを押下したか、[SHIFT] キーを連続して 5 回押下しました。これ" "は固定キー機能を無効にし、キーボード操作に影響を与えるものです。" #: js/ui/kbdA11yDialog.js:55 msgid "Leave On" msgstr "オンのままにする" #: js/ui/kbdA11yDialog.js:55 js/ui/status/bluetooth.js:174 #: js/ui/status/network.js:1341 msgid "Turn On" msgstr "オンにする" #: js/ui/kbdA11yDialog.js:65 js/ui/status/bluetooth.js:174 #: js/ui/status/network.js:160 js/ui/status/network.js:336 #: js/ui/status/network.js:1341 js/ui/status/network.js:1456 #: js/ui/status/nightLight.js:41 js/ui/status/rfkill.js:81 #: js/ui/status/rfkill.js:110 msgid "Turn Off" msgstr "オフにする" #: js/ui/kbdA11yDialog.js:65 msgid "Leave Off" msgstr "オフのままにする" #: js/ui/keyboard.js:250 msgid "Region & Language Settings" msgstr "地域と言語の設定" #: js/ui/lookingGlass.js:701 msgid "No extensions installed" msgstr "機能拡張はインストールされていません" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:762 #, javascript-format msgid "%s has not emitted any errors." msgstr "%s は何もエラーを出力していません。" #: js/ui/lookingGlass.js:768 msgid "Hide Errors" msgstr "エラーを非表示" #: js/ui/lookingGlass.js:772 js/ui/lookingGlass.js:845 msgid "Show Errors" msgstr "エラーを表示" #: js/ui/lookingGlass.js:781 msgid "Enabled" msgstr "有効" #. translators: #. * The device has been disabled #: js/ui/lookingGlass.js:784 subprojects/gvc/gvc-mixer-control.c:1900 msgid "Disabled" msgstr "無効" #: js/ui/lookingGlass.js:786 msgid "Error" msgstr "エラー" #: js/ui/lookingGlass.js:788 msgid "Out of date" msgstr "最新ではありません" #: js/ui/lookingGlass.js:790 msgid "Downloading" msgstr "ダウンロード中" #: js/ui/lookingGlass.js:823 msgid "View Source" msgstr "ソースを表示" #: js/ui/lookingGlass.js:834 msgid "Web Page" msgstr "ウェブページ" #: js/ui/main.js:265 msgid "System was put in unsafe mode" msgstr "" #: js/ui/main.js:266 msgid "Applications now have unrestricted access" msgstr "" #: js/ui/main.js:267 js/ui/overview.js:58 msgid "Undo" msgstr "元に戻す" #: js/ui/main.js:313 msgid "Logged in as a privileged user" msgstr "特権ユーザーでログインしました" #: js/ui/main.js:314 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" "セキュリティ上の観点から、特権ユーザーでセッションを実行することはお勧めでき" "ません。可能な限り、一般ユーザーでログインしてください。" #: js/ui/messageTray.js:1418 msgid "System Information" msgstr "システム情報" #: js/ui/mpris.js:200 msgid "Unknown artist" msgstr "不明なアーティスト" #: js/ui/mpris.js:210 msgid "Unknown title" msgstr "不明なタイトル" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:315 msgid "Type to search" msgstr "検索ワードを入力" #: js/ui/overviewControls.js:393 msgid "Applications" msgstr "アプリケーション" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:71 msgid "Overview" msgstr "アクティビティ画面" #: js/ui/padOsd.js:97 msgid "New shortcut…" msgstr "新しいショートカット…" #: js/ui/padOsd.js:148 msgid "Application defined" msgstr "アプリケーション定義" #: js/ui/padOsd.js:149 msgid "Show on-screen help" msgstr "オンスクリーンヘルプを表示" #: js/ui/padOsd.js:150 msgid "Switch monitor" msgstr "モニターを切り替え" #: js/ui/padOsd.js:151 msgid "Assign keystroke" msgstr "キーストロークを割り当て" #: js/ui/padOsd.js:220 msgid "Done" msgstr "完了" #: js/ui/padOsd.js:737 msgid "Edit…" msgstr "編集…" #: js/ui/padOsd.js:779 js/ui/padOsd.js:896 msgid "None" msgstr "なし" #: js/ui/padOsd.js:850 msgid "Press a button to configure" msgstr "ボタンを押して設定してください" #: js/ui/padOsd.js:851 msgid "Press Esc to exit" msgstr "Esc を押すと終了します" #: js/ui/padOsd.js:854 msgid "Press any key to exit" msgstr "キーを押すと終了します" #: js/ui/panel.js:241 msgid "Activities" msgstr "アクティビティ" #: js/ui/panel.js:364 msgctxt "System menu in the top bar" msgid "System" msgstr "システム" #: js/ui/panel.js:480 msgid "Top Bar" msgstr "トップバー" #: js/ui/runDialog.js:58 msgid "Run a Command" msgstr "コマンドを実行" #: js/ui/runDialog.js:73 msgid "Press ESC to close" msgstr "Esc を押すと閉じます" #: js/ui/runDialog.js:238 msgid "Restart is not available on Wayland" msgstr "Wayland 上では再起動できません" #: js/ui/runDialog.js:243 msgid "Restarting…" msgstr "再起動中…" #: js/ui/screenShield.js:229 msgid "GNOME needs to lock the screen" msgstr "画面をロックする必要があります" #. We could not become modal, so we can't activate the #. screenshield. The user is probably very upset at this #. point, but any application using global grabs is broken #. Just tell them to stop using this app #. #. XXX: another option is to kick the user into the gdm login #. screen, where we're not affected by grabs #: js/ui/screenShield.js:269 js/ui/screenShield.js:644 msgid "Unable to lock" msgstr "ロックできません" #: js/ui/screenShield.js:270 js/ui/screenShield.js:645 msgid "Lock was blocked by an application" msgstr "アプリケーションによってロックがブロックされました" #: js/ui/screenshot.js:1148 msgid "Selection" msgstr "選択範囲" #: js/ui/screenshot.js:1158 msgid "Area Selection" msgstr "領域選択" #: js/ui/screenshot.js:1163 msgid "Screen" msgstr "画面" #: js/ui/screenshot.js:1173 msgid "Screen Selection" msgstr "画面選択" #: js/ui/screenshot.js:1178 msgid "Window" msgstr "ウィンドウ" #: js/ui/screenshot.js:1188 msgid "Window Selection" msgstr "ウィンドウ選択" #: js/ui/screenshot.js:1225 msgid "Screenshot / Screencast" msgstr "スクリーンショット / スクリーンキャスト" #: js/ui/screenshot.js:1261 msgid "Show Pointer" msgstr "ポインターを表示" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1828 msgid "Screencasts" msgstr "スクリーンキャスト" # ここは英語のままの方がいいようなので翻訳しません (sicklylife) #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast from 07-17-2013 10:00:46 PM.webm" #: js/ui/screenshot.js:1833 #, no-c-format msgid "Screencast from %d %t.webm" msgstr "Screencast from %d %t.webm" #. Translators: notification source name. #: js/ui/screenshot.js:1902 js/ui/screenshot.js:2115 msgid "Screenshot" msgstr "スクリーンショット" #. Translators: notification title. #: js/ui/screenshot.js:1908 msgid "Screencast recorded" msgstr "スクリーンキャストを撮影しました" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:1910 msgid "Click here to view the video." msgstr "ここをクリックすると動画を再生します。" #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:1913 js/ui/screenshot.js:2129 msgid "Show in Files" msgstr "“ファイル”で表示" # ここは英語のままの方がいいようなので翻訳しません (sicklylife) #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2075 #, javascript-format msgid "Screenshot from %s" msgstr "Screenshot from %s" #. Translators: notification title. #: js/ui/screenshot.js:2121 msgid "Screenshot captured" msgstr "スクリーンショットを撮影しました" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2123 msgid "You can paste the image from the clipboard." msgstr "クリップボードから画像を貼り付けることができます。" #: js/ui/screenshot.js:2176 js/ui/screenshot.js:2341 msgid "Screenshot taken" msgstr "スクリーンショットを撮影しました" #: js/ui/search.js:815 msgid "Searching…" msgstr "検索中…" #: js/ui/search.js:817 msgid "No results." msgstr "一致するものがありません。" #: js/ui/search.js:948 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "他 %d 件" #: js/ui/searchController.js:87 msgid "Search" msgstr "検索" #: js/ui/shellEntry.js:20 msgid "Copy" msgstr "コピー" #: js/ui/shellEntry.js:25 msgid "Paste" msgstr "貼り付け" #: js/ui/shellEntry.js:77 msgid "Show Text" msgstr "文字を表示" #: js/ui/shellEntry.js:79 msgid "Hide Text" msgstr "文字を非表示" #: js/ui/shellEntry.js:166 msgid "Caps lock is on." msgstr "Caps Lock がオンになっています。" #: js/ui/shellMountOperation.js:286 msgid "Hidden Volume" msgstr "隠しボリューム" #: js/ui/shellMountOperation.js:289 msgid "Windows System Volume" msgstr "Windows システムボリューム" #: js/ui/shellMountOperation.js:292 msgid "Uses Keyfiles" msgstr "キーファイルを使用する" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:299 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead." msgstr "" "キーファイルを使用するボリュームのロック解除には %s ユーティリティを使" "用します。" #: js/ui/shellMountOperation.js:307 msgid "PIM Number" msgstr "PIM 数値" #: js/ui/shellMountOperation.js:366 msgid "Remember Password" msgstr "パスワードを保存する" #: js/ui/shellMountOperation.js:381 msgid "Unlock" msgstr "ロック解除" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:392 #, javascript-format msgid "Open %s" msgstr "%s を開く" #: js/ui/shellMountOperation.js:424 msgid "The PIM must be a number or empty." msgstr "PIM は数字か空である必要があります。" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:466 #, javascript-format msgid "Unable to start %s" msgstr "%s を起動できません" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:468 #, javascript-format msgid "Couldn’t find the %s application" msgstr "%s アプリケーションが見つかりません" #: js/ui/status/accessibility.js:34 msgid "Accessibility" msgstr "アクセシビリティ" #: js/ui/status/accessibility.js:44 msgid "High Contrast" msgstr "ハイコントラスト" #: js/ui/status/accessibility.js:47 msgid "Zoom" msgstr "ズーム" #: js/ui/status/accessibility.js:54 msgid "Screen Reader" msgstr "スクリーンリーダー" #: js/ui/status/accessibility.js:58 msgid "Screen Keyboard" msgstr "スクリーンキーボード" #: js/ui/status/accessibility.js:62 msgid "Visual Alerts" msgstr "視覚警告" #: js/ui/status/accessibility.js:65 msgid "Sticky Keys" msgstr "固定キー" #: js/ui/status/accessibility.js:68 msgid "Slow Keys" msgstr "スローキー" #: js/ui/status/accessibility.js:71 msgid "Bounce Keys" msgstr "バウンスキー" #: js/ui/status/accessibility.js:74 msgid "Mouse Keys" msgstr "マウスキー" #: js/ui/status/accessibility.js:131 msgid "Large Text" msgstr "大きな文字" #: js/ui/status/bluetooth.js:54 msgid "Bluetooth" msgstr "Bluetooth" #: js/ui/status/bluetooth.js:67 js/ui/status/network.js:626 msgid "Bluetooth Settings" msgstr "Bluetooth の設定" #. Translators: this is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:166 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d 台接続" #: js/ui/status/bluetooth.js:170 msgid "Bluetooth On" msgstr "Bluetooth オン" #: js/ui/status/bluetooth.js:172 msgid "Bluetooth Off" msgstr "Bluetooth オフ" #: js/ui/status/brightness.js:39 msgid "Brightness" msgstr "明るさ" #: js/ui/status/dwellClick.js:12 msgid "Single Click" msgstr "シングルクリック" #: js/ui/status/dwellClick.js:17 msgid "Double Click" msgstr "ダブルクリック" #: js/ui/status/dwellClick.js:22 msgid "Drag" msgstr "ドラッグ" #: js/ui/status/dwellClick.js:27 msgid "Secondary Click" msgstr "セカンダリークリック" #: js/ui/status/dwellClick.js:36 msgid "Dwell Click" msgstr "自動クリック" #: js/ui/status/keyboard.js:827 msgid "Keyboard" msgstr "キーボード" #: js/ui/status/keyboard.js:844 msgid "Show Keyboard Layout" msgstr "キーボードレイアウトを表示" #: js/ui/status/location.js:231 js/ui/status/location.js:255 msgid "Location Enabled" msgstr "位置情報サービス有効" #: js/ui/status/location.js:232 js/ui/status/location.js:256 msgid "Disable" msgstr "無効" #: js/ui/status/location.js:234 msgid "Privacy Settings" msgstr "プライバシー設定" #: js/ui/status/location.js:254 msgid "Location In Use" msgstr "位置情報サービス使用中" #: js/ui/status/location.js:258 msgid "Location Disabled" msgstr "位置情報サービス無効" #: js/ui/status/location.js:259 msgid "Enable" msgstr "有効" #: js/ui/status/location.js:386 msgid "Allow location access" msgstr "位置情報へのアクセスの許可" #. Translators: %s is an application name #: js/ui/status/location.js:388 #, javascript-format msgid "The app %s wants to access your location" msgstr "アプリ %s が位置情報へのアクセスを要求しています" #: js/ui/status/location.js:398 msgid "Location access can be changed at any time from the privacy settings." msgstr "" "位置情報のアクセス許可設定は、プライバシー設定からいつでも変更できます。" #: js/ui/status/network.js:71 msgid "" msgstr "< 不明 >" #. Translators: %s is a network identifier #: js/ui/status/network.js:436 js/ui/status/network.js:1370 #, javascript-format msgid "%s Off" msgstr "%s オフ" #. Translators: %s is a network identifier #: js/ui/status/network.js:439 #, javascript-format msgid "%s Connected" msgstr "%s 接続済み" #. Translators: this is for network devices that are physically present but are not #. under NetworkManager's control (and thus cannot be used in the menu); #. %s is a network identifier #: js/ui/status/network.js:444 #, javascript-format msgid "%s Unmanaged" msgstr "%s 管理対象外" #. Translators: %s is a network identifier #: js/ui/status/network.js:447 #, javascript-format msgid "%s Disconnecting" msgstr "%s 切断中" #. Translators: %s is a network identifier #: js/ui/status/network.js:454 js/ui/status/network.js:1362 #, javascript-format msgid "%s Connecting" msgstr "%s 接続中" #. Translators: this is for network connections that require some kind of key or password; %s is a network identifier #: js/ui/status/network.js:457 #, javascript-format msgid "%s Requires Authentication" msgstr "%s には認証が必要" #. Translators: this is for devices that require some kind of firmware or kernel #. module, which is missing; %s is a network identifier #: js/ui/status/network.js:465 #, javascript-format msgid "Firmware Missing For %s" msgstr "%s のファームウェア未検出" #. Translators: this is for a network device that cannot be activated (for example it #. is disabled by rfkill, or it has no coverage; %s is a network identifier #: js/ui/status/network.js:469 #, javascript-format msgid "%s Unavailable" msgstr "%s 利用不可" #. Translators: %s is a network identifier #: js/ui/status/network.js:472 #, javascript-format msgid "%s Connection Failed" msgstr "%s 接続失敗" #: js/ui/status/network.js:484 msgid "Wired Settings" msgstr "有線設定" #: js/ui/status/network.js:531 msgid "Mobile Broadband Settings" msgstr "モバイルブロードバンド設定" #. Translators: %s is a network identifier #: js/ui/status/network.js:587 js/ui/status/network.js:1367 #, javascript-format msgid "%s Hardware Disabled" msgstr "%s ハードウェア無効" #. Translators: this is for a network device that cannot be activated #. because it's disabled by rfkill (airplane mode); %s is a network identifier #: js/ui/status/network.js:591 #, javascript-format msgid "%s Disabled" msgstr "%s 無効" #: js/ui/status/network.js:638 msgid "Connect to Internet" msgstr "インターネットへ接続" #: js/ui/status/network.js:836 msgid "Airplane Mode is On" msgstr "機内モードオン" #: js/ui/status/network.js:837 msgid "Wi-Fi is disabled when airplane mode is on." msgstr "機内モードがオンになっていると Wi-Fi は無効になります。" #: js/ui/status/network.js:838 msgid "Turn Off Airplane Mode" msgstr "機内モードをオフにする" #: js/ui/status/network.js:847 msgid "Wi-Fi is Off" msgstr "Wi-Fi オフ" #: js/ui/status/network.js:848 msgid "Wi-Fi needs to be turned on in order to connect to a network." msgstr "ネットワークに接続するには Wi-Fi をオンにする必要があります。" #: js/ui/status/network.js:849 msgid "Turn On Wi-Fi" msgstr "Wi-Fi をオンにする" #: js/ui/status/network.js:877 msgid "Wi-Fi Networks" msgstr "Wi-Fi ネットワーク" #: js/ui/status/network.js:881 msgid "Select a network" msgstr "ネットワークを選択してください" #: js/ui/status/network.js:917 msgid "No Networks" msgstr "ネットワークなし" #: js/ui/status/network.js:942 js/ui/status/rfkill.js:108 msgid "Use hardware switch to turn off" msgstr "オフにハードウェアスイッチを使用する" #: js/ui/status/network.js:1253 msgid "Select Network" msgstr "ネットワークを選択" #: js/ui/status/network.js:1259 msgid "Wi-Fi Settings" msgstr "Wi-Fi 設定" #. Translators: %s is a network identifier #: js/ui/status/network.js:1358 #, javascript-format msgid "%s Hotspot Active" msgstr "%s アクセスポイント使用中" #. Translators: %s is a network identifier #: js/ui/status/network.js:1373 #, javascript-format msgid "%s Not Connected" msgstr "%s 未接続" #: js/ui/status/network.js:1473 msgid "connecting…" msgstr "接続中…" #. Translators: this is for network connections that require some kind of key or password #: js/ui/status/network.js:1476 msgid "authentication required" msgstr "認証が必要" #: js/ui/status/network.js:1478 msgid "connection failed" msgstr "接続失敗" #: js/ui/status/network.js:1524 msgid "VPN Settings" msgstr "VPN 設定" #: js/ui/status/network.js:1541 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1551 msgid "VPN Off" msgstr "VPN オフ" #: js/ui/status/network.js:1612 js/ui/status/rfkill.js:84 msgid "Network Settings" msgstr "ネットワーク設定" #: js/ui/status/network.js:1640 #, javascript-format msgid "%s Wired Connection" msgid_plural "%s Wired Connections" msgstr[0] "有線接続 %s 件" #: js/ui/status/network.js:1644 #, javascript-format msgid "%s Wi-Fi Connection" msgid_plural "%s Wi-Fi Connections" msgstr[0] "Wi-Fi 接続 %s 件" #: js/ui/status/network.js:1648 #, javascript-format msgid "%s Modem Connection" msgid_plural "%s Modem Connections" msgstr[0] "モデム接続 %s 件" #: js/ui/status/network.js:1792 msgid "Connection failed" msgstr "接続失敗" #: js/ui/status/network.js:1793 msgid "Activation of network connection failed" msgstr "ネットワーク接続を有効にできません" #: js/ui/status/nightLight.js:63 msgid "Night Light Disabled" msgstr "夜間モード オフ" #: js/ui/status/nightLight.js:64 msgid "Night Light On" msgstr "夜間モード オン" #: js/ui/status/nightLight.js:66 msgid "Resume" msgstr "再開" #: js/ui/status/nightLight.js:67 msgid "Disable Until Tomorrow" msgstr "明日まで無効にする" #: js/ui/status/power.js:51 js/ui/status/powerProfiles.js:57 msgid "Power Settings" msgstr "電源設定" #: js/ui/status/power.js:68 msgid "Fully Charged" msgstr "充電完了" #: js/ui/status/power.js:74 msgid "Not Charging" msgstr "充電していません" #. 0 is reported when UPower does not have enough data #. to estimate battery life #: js/ui/status/power.js:77 js/ui/status/power.js:83 msgid "Estimating…" msgstr "残量推計中…" #. Translators: this is : Remaining () #: js/ui/status/power.js:91 #, javascript-format msgid "%d∶%02d Remaining (%d %%)" msgstr "残り %d:%02d (%d %%)" #. Translators: this is : Until Full () #: js/ui/status/power.js:97 #, javascript-format msgid "%d∶%02d Until Full (%d %%)" msgstr "充電完了まで %d:%02d (%d %%)" #. The icon label #: js/ui/status/power.js:145 #, javascript-format msgid "%d %%" msgstr "%d %%" #: js/ui/status/powerProfiles.js:19 msgctxt "Power profile" msgid "Performance" msgstr "パフォーマンス" #: js/ui/status/powerProfiles.js:20 msgctxt "Power profile" msgid "Balanced" msgstr "バランス" #: js/ui/status/powerProfiles.js:21 msgctxt "Power profile" msgid "Power Saver" msgstr "省電力" #: js/ui/status/remoteAccess.js:43 msgid "Screen is Being Shared" msgstr "画面を共有しています" #: js/ui/status/remoteAccess.js:45 msgid "Turn off" msgstr "オフにする" #: js/ui/status/remoteAccess.js:149 msgid "Stop Screencast" msgstr "スクリーンキャストを停止" #. The menu only appears when airplane mode is on, so just #. statically build it as if it was on, rather than dynamically #. changing the menu contents. #: js/ui/status/rfkill.js:79 msgid "Airplane Mode On" msgstr "機内モードオン" #: js/ui/status/system.js:104 msgid "Lock" msgstr "ロック" #: js/ui/status/system.js:116 msgid "Power Off / Log Out" msgstr "電源オフ / ログアウト" #: js/ui/status/system.js:119 msgid "Suspend" msgstr "サスペンド" #: js/ui/status/system.js:130 msgid "Restart…" msgstr "再起動…" #: js/ui/status/system.js:141 msgid "Power Off…" msgstr "電源オフ…" #: js/ui/status/system.js:154 msgid "Log Out" msgstr "ログアウト" #: js/ui/status/system.js:165 msgid "Switch User…" msgstr "ユーザーを切り替え…" #: js/ui/status/thunderbolt.js:263 msgid "Thunderbolt" msgstr "Thunderbolt" #: js/ui/status/thunderbolt.js:324 msgid "Unknown Thunderbolt device" msgstr "不明な Thunderbolt デバイス" #: js/ui/status/thunderbolt.js:325 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" "離席中に新しいデバイスを検出しました。そのデバイスを使用する場合は一度取り外" "し、再接続してください。" #: js/ui/status/thunderbolt.js:328 msgid "Unauthorized Thunderbolt device" msgstr "認証していない Thunderbolt デバイス" #: js/ui/status/thunderbolt.js:329 msgid "" "New device has been detected and needs to be authorized by an administrator." msgstr "新しいデバイスを検出しました。管理者の認証が必要です。" #: js/ui/status/thunderbolt.js:335 msgid "Thunderbolt authorization error" msgstr "Thunderbolt 認証エラー" #: js/ui/status/thunderbolt.js:336 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "Thunderbolt デバイスを認証できませんでした: %s" #: js/ui/status/volume.js:158 msgid "Volume changed" msgstr "音量変更しました" #: js/ui/status/volume.js:220 msgid "Volume" msgstr "音量" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:20 msgid "Mirror" msgstr "画面を複製" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:29 msgid "Join Displays" msgstr "画面を拡張" #. Translators: this is for using only an external display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:39 msgid "External Only" msgstr "外部のみ" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:47 msgid "Built-in Only" msgstr "組み込みのみ" #: js/ui/unlockDialog.js:554 msgid "Unlock Window" msgstr "ロック解除" #: js/ui/unlockDialog.js:563 msgid "Log in as another user" msgstr "別のユーザーでログイン" #: js/ui/welcomeDialog.js:36 #, javascript-format msgid "Welcome to GNOME %s" msgstr "GNOME %s へようこそ" #: js/ui/welcomeDialog.js:37 msgid "If you want to learn your way around, check out the tour." msgstr "“ツアー”アプリで詳しく知ることができます。" #: js/ui/welcomeDialog.js:46 msgid "No Thanks" msgstr "いいえ結構です" #: js/ui/welcomeDialog.js:51 msgid "Take Tour" msgstr "“ツアー”を始める" #: js/ui/windowAttentionHandler.js:20 #, javascript-format msgid "“%s” is ready" msgstr "“%s”の準備ができました" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:62 msgid "Keep these display settings?" msgstr "このディスプレイ設定を保存しますか?" #: js/ui/windowManager.js:72 msgid "Revert Settings" msgstr "設定を元に戻す" #: js/ui/windowManager.js:77 msgid "Keep Changes" msgstr "変更を保存" #: js/ui/windowManager.js:97 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "%d 秒後に元の設定に戻ります" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:553 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #. Translators: entry in the window right click menu. #: js/ui/windowMenu.js:29 msgid "Take Screenshot" msgstr "スクリーンショットを撮る" #: js/ui/windowMenu.js:41 msgid "Hide" msgstr "隠す" #: js/ui/windowMenu.js:48 msgid "Restore" msgstr "元に戻す" #: js/ui/windowMenu.js:52 msgid "Maximize" msgstr "最大化" #: js/ui/windowMenu.js:59 msgid "Move" msgstr "移動" #: js/ui/windowMenu.js:65 msgid "Resize" msgstr "サイズを変更" #: js/ui/windowMenu.js:72 msgid "Move Titlebar Onscreen" msgstr "画面上でタイトルバーを移動する" #: js/ui/windowMenu.js:77 msgid "Always on Top" msgstr "最前面に維持する" #: js/ui/windowMenu.js:96 msgid "Always on Visible Workspace" msgstr "すべてのワークスペースに表示する" #: js/ui/windowMenu.js:110 msgid "Move to Workspace Left" msgstr "左側のワークスペースへ移動する" #: js/ui/windowMenu.js:116 msgid "Move to Workspace Right" msgstr "右側のワークスペースへ移動する" #: js/ui/windowMenu.js:122 msgid "Move to Workspace Up" msgstr "上側のワークスペースへ移動する" #: js/ui/windowMenu.js:128 msgid "Move to Workspace Down" msgstr "下側のワークスペースへ移動する" #: js/ui/windowMenu.js:146 msgid "Move to Monitor Up" msgstr "上側のモニターへ移動する" #: js/ui/windowMenu.js:155 msgid "Move to Monitor Down" msgstr "下側のモニターへ移動する" #: js/ui/windowMenu.js:164 msgid "Move to Monitor Left" msgstr "左側のモニターへ移動する" #: js/ui/windowMenu.js:173 msgid "Move to Monitor Right" msgstr "右側のモニターへ移動する" #: js/ui/windowMenu.js:181 msgid "Close" msgstr "閉じる" #: src/calendar-server/evolution-calendar.desktop.in:3 msgid "Evolution Calendar" msgstr "Evolution カレンダー" #: src/main.c:419 subprojects/extensions-tool/src/main.c:321 msgid "Print version" msgstr "バージョンを表示する" #: src/main.c:425 msgid "Mode used by GDM for login screen" msgstr "ログイン画面で GDM が使用するモード" #: src/main.c:431 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "指定したモードを使用する (例: ログイン画面用の“gdm”)" #: src/main.c:437 msgid "List possible modes" msgstr "使用可能なモードを一覧表示する" #: src/shell-app.c:305 msgctxt "program" msgid "Unknown" msgstr "不明なプログラム" #: src/shell-app.c:569 #, c-format msgid "Failed to launch “%s”" msgstr "“%s”の起動に失敗しました" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match." msgstr "パスワードが一致しません。" #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "パスワードを空白にすることはできません。" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "認証ダイアログはユーザーに拒否されました" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/js/main.js:209 #: subprojects/extensions-app/data/ui/extensions-window.ui:18 #: subprojects/extensions-app/data/ui/extensions-window.ui:83 msgid "Extensions" msgstr "拡張機能" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 #: subprojects/extensions-app/js/main.js:210 msgid "Manage your GNOME Extensions" msgstr "GNOME 拡張機能を管理します" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:17 msgid "The GNOME Project" msgstr "The GNOME Project" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:36 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" "“拡張機能”は GNOME Shell 拡張機能の設定、更新、削除、不要な拡張機能の無効化を" "行うことができます。" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "GNOME Shell 拡張機能の設定を行います" #: subprojects/extensions-app/js/main.js:131 #: subprojects/extensions-app/js/main.js:142 msgid "No Matches" msgstr "一致なし" #: subprojects/extensions-app/js/main.js:170 #, javascript-format msgid "Remove “%s”?" msgstr "“%s”を削除しますか?" #: subprojects/extensions-app/js/main.js:171 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "" "拡張機能を削除した場合、再度有効にするにはダウンロードし直す必要があります" #: subprojects/extensions-app/js/main.js:175 msgid "Remove" msgstr "削除" #: subprojects/extensions-app/js/main.js:208 msgid "translator-credits" msgstr "" "小山田 純 \n" "Hideki Yamane \n" "Ikuya Awashiro \n" "IWAI, Masaharu \n" "Jiro Matsuzawa \n" "Kiyotaka NISHIBORI \n" "Nishio Futoshi \n" "sicklylife \n" "Takanori MATSUURA \n" "Takayuki KUSANO \n" "Yoji TOYODA " #: subprojects/extensions-app/js/main.js:336 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "%d 個の拡張機能を次回ログイン時に更新します。" #: subprojects/extensions-app/js/main.js:478 msgid "The extension is incompatible with the current GNOME version" msgstr "現在の GNOME のバージョンと互換性のない拡張機能です" #: subprojects/extensions-app/js/main.js:481 #: subprojects/extensions-app/data/ui/extension-row.ui:52 msgid "The extension had an error" msgstr "拡張機能にエラーがありました" #: subprojects/extensions-app/data/ui/extension-row.ui:62 msgid "The extension can be updated" msgstr "拡張機能をアップデートできます" #: subprojects/extensions-app/data/ui/extension-row.ui:112 msgid "Website" msgstr "ウェブサイト" #: subprojects/extensions-app/data/ui/extension-row.ui:134 msgid "Remove…" msgstr "削除…" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Help" msgstr "ヘルプ" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "“拡張機能”について" #: subprojects/extensions-app/data/ui/extensions-window.ui:84 msgid "" "Extensions can cause performance and stability issues. Disable extensions if " "you encounter problems with your system." msgstr "" #: subprojects/extensions-app/data/ui/extensions-window.ui:98 msgid "Manually Installed" msgstr "手動でインストール" #: subprojects/extensions-app/data/ui/extensions-window.ui:99 #: subprojects/extensions-app/data/ui/extensions-window.ui:134 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" "拡張機能の検索や追加は extensions." "gnome.org で行うことができます。" #: subprojects/extensions-app/data/ui/extensions-window.ui:112 msgid "Built-In" msgstr "組み込み" #: subprojects/extensions-app/data/ui/extensions-window.ui:133 msgid "No Installed Extensions" msgstr "インストールされた拡張機能はありません" #: subprojects/extensions-app/data/ui/extensions-window.ui:145 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" "大変申し訳ありませんが、インストール済み拡張機能一覧を取得できませんでした。" "GNOME にログインしていることを確認した上で再試行してください。" #: subprojects/extensions-app/data/ui/extensions-window.ui:175 msgid "Extension Updates Ready" msgstr "拡張機能の更新準備完了" #: subprojects/extensions-app/data/ui/extensions-window.ui:190 msgid "Log Out…" msgstr "ログアウト…" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:222 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "" #: subprojects/extensions-tool/src/command-create.c:296 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" #: subprojects/extensions-tool/src/command-create.c:302 #: subprojects/extensions-tool/src/main.c:238 msgid "Name" msgstr "名前" #: subprojects/extensions-tool/src/command-create.c:316 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" #: subprojects/extensions-tool/src/command-create.c:322 #: subprojects/extensions-tool/src/main.c:241 msgid "Description" msgstr "説明" #: subprojects/extensions-tool/src/command-create.c:336 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" #: subprojects/extensions-tool/src/command-create.c:363 msgid "Choose one of the available templates:\n" msgstr "" #: subprojects/extensions-tool/src/command-create.c:377 msgid "Template" msgstr "" #: subprojects/extensions-tool/src/command-create.c:432 msgid "The unique identifier of the new extension" msgstr "" #: subprojects/extensions-tool/src/command-create.c:435 msgid "NAME" msgstr "" #: subprojects/extensions-tool/src/command-create.c:436 msgid "The user-visible name of the new extension" msgstr "" #: subprojects/extensions-tool/src/command-create.c:438 msgid "DESCRIPTION" msgstr "" #: subprojects/extensions-tool/src/command-create.c:440 msgid "A short description of what the extension does" msgstr "" #: subprojects/extensions-tool/src/command-create.c:443 msgid "TEMPLATE" msgstr "" #: subprojects/extensions-tool/src/command-create.c:444 msgid "The template to use for the new extension" msgstr "" #: subprojects/extensions-tool/src/command-create.c:450 msgid "Enter extension information interactively" msgstr "" #: subprojects/extensions-tool/src/command-create.c:458 msgid "Create a new extension" msgstr "新しい拡張機能を作成します" #: subprojects/extensions-tool/src/command-create.c:476 #: subprojects/extensions-tool/src/command-list.c:172 msgid "Unknown arguments" msgstr "不明な引数です" #: subprojects/extensions-tool/src/command-create.c:501 msgid "UUID, name and description are required" msgstr "" #: subprojects/extensions-tool/src/command-disable.c:46 #: subprojects/extensions-tool/src/command-enable.c:46 #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:64 #: subprojects/extensions-tool/src/main.c:146 msgid "Failed to connect to GNOME Shell\n" msgstr "GNOME Shell への接続に失敗しました\n" #: subprojects/extensions-tool/src/command-disable.c:53 #: subprojects/extensions-tool/src/command-enable.c:53 #, c-format msgid "Extension “%s” does not exist\n" msgstr "“%s”拡張機能は存在しません\n" #: subprojects/extensions-tool/src/command-disable.c:101 msgid "Disable an extension" msgstr "拡張機能を無効にします" #: subprojects/extensions-tool/src/command-disable.c:119 #: subprojects/extensions-tool/src/command-enable.c:119 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "" #: subprojects/extensions-tool/src/command-disable.c:124 #: subprojects/extensions-tool/src/command-enable.c:124 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "" #: subprojects/extensions-tool/src/command-enable.c:101 msgid "Enable an extension" msgstr "拡張機能を有効にします" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:155 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "“%s”拡張機能は存在しません\n" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "拡張機能の情報を表示します" #: subprojects/extensions-tool/src/command-install.c:173 msgid "Overwrite an existing extension" msgstr "既存の拡張機能を上書きする" #: subprojects/extensions-tool/src/command-install.c:175 msgid "EXTENSION_BUNDLE" msgstr "" #: subprojects/extensions-tool/src/command-install.c:184 msgid "Install an extension bundle" msgstr "" #: subprojects/extensions-tool/src/command-install.c:202 msgid "No extension bundle specified" msgstr "" #: subprojects/extensions-tool/src/command-install.c:208 msgid "More than one extension bundle specified" msgstr "" #: subprojects/extensions-tool/src/command-list.c:128 msgid "Show user-installed extensions" msgstr "ユーザーがインストールした拡張機能を表示する" #: subprojects/extensions-tool/src/command-list.c:131 msgid "Show system-installed extensions" msgstr "システムにインストールされた拡張機能を表示する" #: subprojects/extensions-tool/src/command-list.c:134 msgid "Show enabled extensions" msgstr "有効化された拡張機能を表示する" #: subprojects/extensions-tool/src/command-list.c:137 msgid "Show disabled extensions" msgstr "無効化された拡張機能を表示する" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show extensions with preferences" msgstr "設定画面がある拡張機能を表示する" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show extensions with updates" msgstr "アップデートがある拡張機能を表示する" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Print extension details" msgstr "拡張機能の詳細を表示する" #: subprojects/extensions-tool/src/command-list.c:154 msgid "List installed extensions" msgstr "インストールされた拡張機能一覧を表示します" #: subprojects/extensions-tool/src/command-pack.c:450 msgid "FILE" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:451 msgid "Additional source to include in the bundle" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:454 msgid "SCHEMA" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:455 msgid "A GSettings schema that should be included" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:457 #: subprojects/extensions-tool/src/command-pack.c:468 msgid "DIRECTORY" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:459 msgid "The directory where translations are found" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:461 msgid "DOMAIN" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:463 msgid "The gettext domain to use for translations" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "Overwrite an existing pack" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:470 msgid "The directory where the pack should be created" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:472 msgid "SOURCE_DIRECTORY" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:481 msgid "Create an extension bundle" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:501 msgid "More than one source directory specified" msgstr "ソースディレクトリが複数指定されています" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "“%s”拡張機能には設定がありません\n" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "" #: subprojects/extensions-tool/src/command-prefs.c:87 msgid "Opens extension preferences" msgstr "拡張機能の設定を開きます" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "拡張機能をリセットします" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "システムの拡張機能はアンインストールできません\n" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "“%s”のアンインストールに失敗しました\n" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "拡張機能をアンインストールします" #: subprojects/extensions-tool/src/main.c:72 msgid "Do not print error messages" msgstr "" #: subprojects/extensions-tool/src/main.c:244 msgid "Path" msgstr "パス" #: subprojects/extensions-tool/src/main.c:247 msgid "URL" msgstr "URL" #: subprojects/extensions-tool/src/main.c:250 msgid "Original author" msgstr "オリジナルの作者" #: subprojects/extensions-tool/src/main.c:253 msgid "Version" msgstr "バージョン" #: subprojects/extensions-tool/src/main.c:256 msgid "State" msgstr "状態" #: subprojects/extensions-tool/src/main.c:294 msgid "“version” takes no arguments" msgstr "“version”は引数を取りません" #: subprojects/extensions-tool/src/main.c:296 #: subprojects/extensions-tool/src/main.c:316 msgid "Usage:" msgstr "使用法:" #: subprojects/extensions-tool/src/main.c:299 msgid "Print version information and exit." msgstr "バージョン情報を表示して終了します。" #: subprojects/extensions-tool/src/main.c:314 #: subprojects/extensions-tool/src/main.c:317 msgid "COMMAND" msgstr "" #: subprojects/extensions-tool/src/main.c:317 msgid "[ARGS…]" msgstr "[引数…]" #: subprojects/extensions-tool/src/main.c:319 msgid "Commands:" msgstr "コマンド:" #: subprojects/extensions-tool/src/main.c:320 msgid "Print help" msgstr "ヘルプを表示する" #: subprojects/extensions-tool/src/main.c:322 msgid "Enable extension" msgstr "拡張機能を有効にする" #: subprojects/extensions-tool/src/main.c:323 msgid "Disable extension" msgstr "拡張機能を無効にする" #: subprojects/extensions-tool/src/main.c:324 msgid "Reset extension" msgstr "拡張機能をリセットする" #: subprojects/extensions-tool/src/main.c:325 msgid "Uninstall extension" msgstr "拡張機能をアンインストールする" #: subprojects/extensions-tool/src/main.c:326 msgid "List extensions" msgstr "拡張機能一覧を表示する" #: subprojects/extensions-tool/src/main.c:327 #: subprojects/extensions-tool/src/main.c:328 msgid "Show extension info" msgstr "拡張機能の情報を表示する" #: subprojects/extensions-tool/src/main.c:329 msgid "Open extension preferences" msgstr "拡張機能の設定を開く" #: subprojects/extensions-tool/src/main.c:330 msgid "Create extension" msgstr "拡張機能を作成する" #: subprojects/extensions-tool/src/main.c:331 msgid "Package extension" msgstr "" #: subprojects/extensions-tool/src/main.c:332 msgid "Install extension bundle" msgstr "" #: subprojects/extensions-tool/src/main.c:334 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "“%s”を使用すると詳細なヘルプが表示されます。\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "インジケーター" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "トップバーにアイコンを追加します" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1907 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "出力数: %u" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1917 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "入力数: %u" #: subprojects/gvc/gvc-mixer-control.c:2867 msgid "System Sounds" msgstr "システムのサウンド" #~ msgid "Unnamed Folder" #~ msgstr "名前なしのフォルダー" #~ msgid "Remove from Favorites" #~ msgstr "お気に入りから削除" #~ msgid "Add to Favorites" #~ msgstr "お気に入りに追加" #~ msgid "Screen Lock disabled" #~ msgstr "画面ロックが無効です" #~ msgid "Screen Locking requires the GNOME display manager." #~ msgstr "画面ロックには GNOME ディスプレイマネージャーが必要です。" #~ msgid "%A %B %-d" #~ msgstr "%B%-e日 (%a)" #~ msgid "Swipe up to unlock" #~ msgstr "ロック解除は上にスワイプしてください" #~ msgid "Click or press a key to unlock" #~ msgstr "ロック解除はキーを押すかクリックしてください" #~ msgid "Author" #~ msgstr "作者" #~ msgid "Warning" #~ msgstr "警告" #~ msgid "" #~ "Extensions can cause system issues, including performance problems. If " #~ "you encounter problems with your system, it is recommended to disable all " #~ "extensions." #~ msgstr "" #~ "拡張機能は、システムに何らかの問題 (パフォーマンスへの影響を含む) を引き起" #~ "こす場合があります。システムに問題が発生した場合は、すべての拡張機能を無効" #~ "にすることをお勧めします。" #~ msgid "App Picker View" #~ msgstr "アプリ一覧画面" #~ msgid "Index of the currently selected view in the application picker." #~ msgstr "現在のアプリケーション一覧画面のインデックスです。" #~ msgid "Enable introspection API" #~ msgstr "イントロスペクション API を有効にする" #~ msgid "" #~ "Enables a D-Bus API that allows to introspect the application state of " #~ "the shell." #~ msgstr "" #~ "Shell のアプリケーション状態をイントロスペクトできる D-Bus API を有効にし" #~ "ます。" #~ msgid "Minimize" #~ msgstr "最小化" #~ msgid "Unmaximize" #~ msgstr "元のサイズに戻す" #~ msgid "Failed to connect to GNOME Shell" #~ msgstr "GNOME Shell への接続に失敗しました" #~ msgid "Frequently used applications will appear here" #~ msgstr "よく使用するアプリケーションがここに表示されます" #~ msgid "Frequent" #~ msgstr "常用" #~ msgid "All" #~ msgstr "すべて" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d" #~ msgstr "%B%-e日 (%a)" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d, %Y" #~ msgstr "%Y年%B%-e日 (%a)" #~ msgid "Copy Error" #~ msgstr "エラーをコピー" #~ msgid "Off" #~ msgstr "オフ" #~ msgid "On" #~ msgstr "オン" #~ msgid "%d new message" #~ msgid_plural "%d new messages" #~ msgstr[0] "%d 件の新しいメッセージ" #~ msgid "%d new notification" #~ msgid_plural "%d new notifications" #~ msgstr[0] "%d 件の新しい通知" #~ msgid "Authentication required by wireless network" #~ msgstr "無線ネットワークでは認証が要求されます" #~ msgid "Which keyboard to use" #~ msgstr "使いたいキーボードの種類" #~ msgid "The type of keyboard to use." #~ msgstr "使いたいキーボードの種類です。" #~ msgid "Show the week date in the calendar" #~ msgstr "暦週日付を表示" #~ msgid "If true, display the ISO week date in the calendar." #~ msgstr "ISO 8601 方式の暦週日付を表示します。" #~ msgid "Not In Use" #~ msgstr "未使用" 07070100000241000081A40000000000000000000000016712993F0002271A000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/ka.po# Georgian translation for gnome-shell. # Copyright (C) 2023 gnome-shell authors. # This file is distributed under the same license as the gnome-shell package. # Ekaterine Papava , 20232-2024. # msgid "" msgstr "" "Project-Id-Version: gnome-shell\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues/\n" "POT-Creation-Date: 2024-08-14 16:36+0000\n" "PO-Revision-Date: 2024-08-17 07:16+0200\n" "Last-Translator: Ekaterine Papava \n" "Language-Team: Georgian <(nothing)>\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=1; plural=0;\n" "X-Generator: Poedit 3.3.2\n" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "გამშვებები" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate pinned app 1" msgstr "მიმაგრებული აპი 1-ის აქტივაცია" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate pinned app 2" msgstr "მიმაგრებული აპი 2-ის აქტივაცია" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate pinned app 3" msgstr "მიმაგრებული აპი 3-ის აქტივაცია" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate pinned app 4" msgstr "მიმაგრებული აპი 4-ის აქტივაცია" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate pinned app 5" msgstr "მიმაგრებული აპი 5-ის აქტივაცია" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate pinned app 6" msgstr "მიმაგრებული აპი 6-ის აქტივაცია" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate pinned app 7" msgstr "მიმაგრებული აპი 7-ის აქტივაცია" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate pinned app 8" msgstr "მიმაგრებული აპი 8-ის აქტივაცია" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate pinned app 9" msgstr "მიმაგრებული აპი 9-ის აქტივაცია" #: data/50-gnome-shell-launchers.xml:46 msgid "Open new window of pinned app 1" msgstr "მიმაგრებული აპი 1-ის გახსნა ახალ ფანჯარაში" #: data/50-gnome-shell-launchers.xml:50 msgid "Open new window of pinned app 2" msgstr "მიმაგრებული აპი 2-ის გახსნა ახალ ფანჯარაში" #: data/50-gnome-shell-launchers.xml:54 msgid "Open new window of pinned app 3" msgstr "მიმაგრებული აპი 3-ის გახსნა ახალ ფანჯარაში" #: data/50-gnome-shell-launchers.xml:58 msgid "Open new window of pinned app 4" msgstr "მიმაგრებული აპი 4-ის გახსნა ახალ ფანჯარაში" #: data/50-gnome-shell-launchers.xml:62 msgid "Open new window of pinned app 5" msgstr "მიმაგრებული აპი 5-ის გახსნა ახალ ფანჯარაში" #: data/50-gnome-shell-launchers.xml:66 msgid "Open new window of pinned app 6" msgstr "მიმაგრებული აპი 6-ის გახსნა ახალ ფანჯარაში" #: data/50-gnome-shell-launchers.xml:70 msgid "Open new window of pinned app 7" msgstr "მიმაგრებული აპი 7-ის გახსნა ახალ ფანჯარაში" #: data/50-gnome-shell-launchers.xml:74 msgid "Open new window of pinned app 8" msgstr "მიმაგრებული აპი 8-ის გახსნა ახალ ფანჯარაში" #: data/50-gnome-shell-launchers.xml:78 msgid "Open new window of pinned app 9" msgstr "მიმაგრებული აპი 9-ის გახსნა ახალ ფანჯარაში" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2274 msgid "Screenshots" msgstr "ეკრანის ანაბეჭდები" #: data/50-gnome-shell-screenshots.xml:9 #: data/org.gnome.shell.gschema.xml.in:287 msgid "Take a screenshot interactively" msgstr "ეკრანის ანაბეჭდის ინტერაქტიული გადაღება" #: data/50-gnome-shell-screenshots.xml:12 #: data/org.gnome.shell.gschema.xml.in:299 msgid "Take a screenshot" msgstr "ეკრანის ანაბეჭდის გადაღება" #: data/50-gnome-shell-screenshots.xml:15 #: data/org.gnome.shell.gschema.xml.in:295 msgid "Take a screenshot of a window" msgstr "ფანჯრის ანაბეჭდის გადაღება" #: data/50-gnome-shell-screenshots.xml:18 #: data/org.gnome.shell.gschema.xml.in:291 msgid "Record a screencast interactively" msgstr "ეკრანიდან ვიდეოს ჩაწერა" #: data/50-gnome-shell-system.xml:6 js/ui/messageTray.js:1298 msgid "System" msgstr "სისტემა" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "გაფრთხილებების სიის ჩვენება" #: data/50-gnome-shell-system.xml:12 msgid "Open the quick settings menu" msgstr "სწრაფი მორგების მენიუს ჩვენება" #: data/50-gnome-shell-system.xml:15 msgid "Focus the active notification" msgstr "აქტიური გაფრთხილების ჩვენება" #: data/50-gnome-shell-system.xml:18 msgid "Show the overview" msgstr "გადახედვის ჩვენება" #: data/50-gnome-shell-system.xml:21 msgid "Show all apps" msgstr "ყველა აპის ჩვენება" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "GNOME-ის გარსი" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "ფანჯრების მართვა და აპლიკაციების გაშვება" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "პროგრამისტებისთვის საჭირო ხელსაწყოების გამოჩენა Alt-F2-ში" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "პროგრამისტებისთვის საჭირო ხელსაწყოების Alt-F2-ში გამოჩენის ჩართვა." #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "ჩასართავი დამატებების UUID-ები" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "GNOME-ის გარსის გაფართოებებს UUID თვისება გააჩნიათ. ეს ცვლადი აღწერს " "გაფართოებას, რომელიც უნდა ჩაიტვირთოს. ნებისმიერი გაფართოება, რომელსაც სურს, " "რომ ჩაიტვირთოს, ეს სია უნდა ჰქონდეს. ამ სიის ცვლილება შესაძლებელია D-Bus-ის " "EnableExtension და DisableExtension მეთოდებით org.gnome.shell-ზე." #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "გასათიში დამატებების UUID-ები" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" "GNOME-ის გარსის გაფართოებებს UUID ფუნქცია აქვთ. ეს გასაღები შეიცავს " "გაფართოებების სიას, რომელიც გაითიშოს მაშინაც კი, თუ ის მიმდინარე რეჟიმის " "ნაწილის სახითაა ჩატვირთულია.ამ სიის შეცვლა D-Bus-ის EnableExtension და " "DisableExtension მეთოდებით შეგიძლიათ, org.gnome.Shell-ზე. ამ პარამეტრს უფრო " "მეტი პრიორიტეტი აქვს, ვიდრე \"enabled-extensions\" პარამეტრს." #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "მომხმარებლის გაფართოებების გათიშვა" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" "მომხმარებლის მიერ ჩართული ყველა გაფართოების გამორთვა \"enabled-extensions\" " "პარამეტრის შეხების გარეშე." #: data/org.gnome.shell.gschema.xml.in:45 msgid "Allow extension installation" msgstr "გაფართოებების დაყენების დაშვება" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "Allow users to install extensions in their home folder. If disabled, the " "InstallRemoteExtension D-Bus method will fail, and extensions are only " "loaded from system directories on startup. It does not affect extensions " "that are already loaded, so a change only takes full effect on the next " "login." msgstr "" "უფლებას აძლევს მომხმარებლებს, გაფართოებები თავიანთ საწყის საქაღალდეში " "დააყენონ. თუ გათიშულია, D-Bus-ის მეთოდი InstallRemoteExtension ჩავარდება და " "გაფართოებები გაშვებისას, მხოლოდ, სისტემური საქაღალდეებიდან ჩაიტვირთება. ეს " "არ ეხება გაფართოებებს, რომლებიც უკვე ჩატვირთულია, ასე რომ, ცვლილებები, " "მხოლოდ, შემდეგი შესვლისას შევა ძალაში." #: data/org.gnome.shell.gschema.xml.in:56 msgid "Disables the validation of extension version compatibility" msgstr "გაფართოების ვერსიის თავსებადობის გადამოწმების გამორთვა" #: data/org.gnome.shell.gschema.xml.in:57 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "GNOME Shell მხოლოდ იმ გაფართოებებს ჩატვირთავს, რომლებსაც ამჟამად გაშვებული " "ვერსიის მხარდაჭერა გააჩნია. ამ პარამეტრის ჩართვა გამორთავს ამ შემოწმებას და " "ჩატვირთავს ყველა გაფართოებას იმის მიუხედავად, რომელი ვერსიის მხარდაჭერა " "გააჩნია." #: data/org.gnome.shell.gschema.xml.in:65 msgid "List of desktop file IDs for favorite applications" msgstr "რჩეული აპლიკაციების სამუშაო მაგიდის ფაილის ID-ების სია" #: data/org.gnome.shell.gschema.xml.in:66 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "ამ იდენტიფიკატორების შესაბამისი აპლიკაციები რჩეულ სიაში გამოჩნდება." #: data/org.gnome.shell.gschema.xml.in:73 msgid "History for command (Alt-F2) dialog" msgstr "ისტორია ბრძანების (Alt-F2) ფანჯრისთვის" #. Translators: looking glass is a debugger and inspector tool, see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/docs/looking-glass.md #: data/org.gnome.shell.gschema.xml.in:78 msgid "History for the looking glass dialog" msgstr "გამადიდებელი ლინზის ფანჯრის ისტორია" #: data/org.gnome.shell.gschema.xml.in:82 msgid "Always show the “Log Out” action in the system menu" msgstr "მომხმარებლის მენიუში \"გასვლის\" ყოველთვის ჩვენება" #: data/org.gnome.shell.gschema.xml.in:83 msgid "" "This key overrides the automatic hiding of the “Log out” action in the " "system menu for logged-in situations where there is a single, local, non-" "system user and only a single available session type (e.g. GNOME on Wayland)." msgstr "" "ეს პარამეტრი გადაფარავს 'გასვლის' მენიუს პუნქტის ავტომატურ დამალვას უკვე " "შესულ სიტუაციაში, ერთმომხმარებლიან, ერთ-სესიიანი, არასისტემური მომხმარებლის " "სიტუაციებისას და, მხოლოდ, ერთი ხელმისაწვდომი სესიის ტიპისას (მაგ: GNOME " "Wayland-ზე)." #: data/org.gnome.shell.gschema.xml.in:92 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "დავიმახსოვრო თუ არა დაშიფრული ან დაშორებული ფაილურ სისტემის პაროლები" #: data/org.gnome.shell.gschema.xml.in:93 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "გარსი მოგთხოვთ პაროლს, როცა დაშიფრული მოწყობილობის ან დაშორებული ფაილური " "სისტემს მიმაგრებას დააპირებთ. თუ პაროლი, შესაძლებელია, მომავლისთვის " "შეინახოთ, ასევე დაინახავთ თოლიას \"პაროლის დამახსოვრება. ეს პარამეტრი ამ " "თოლიის ნაგულისხმევ მნიშვნელობას აყენებს." #: data/org.gnome.shell.gschema.xml.in:102 msgid "The last selected non-default power profile" msgstr "ბოლოს არჩეული არა-ნაგულისხმები კვების პროფილი" #: data/org.gnome.shell.gschema.xml.in:103 msgid "" "Some systems support more than two power profiles. In order to still support " "toggling between two profiles, this key records the last selected non-" "default profile." msgstr "" "ზოგიერთ სისტემას ორზე მეტი კვების პროფილის მხარდაჭერა გააჩნია. იმისთვის, რომ " "ორ პროფილს შორის გადართვა ჯერ კიდევ მხარდაჭერილ იყოს, ეს პარამეტრი ბოლოს " "არჩეულ არანაგულისხმევ პროფილს შეიცავს." #: data/org.gnome.shell.gschema.xml.in:111 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "ბოლო ვერსია, რომლისთვისაც \"მოგესალმებათ GNOME\" ფანჯარა იყო ნაჩვენები" #: data/org.gnome.shell.gschema.xml.in:112 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can " "be used to effectively disable the dialog." msgstr "" "ეს პარამეტრი განსაზღვრავს, \"მოგესალმებით GNOME-ში\"-ის რომელი ვერსია იყო " "ბოლოს ნაჩვენები. ცარიელი სტრიქონი უძველეს შესაძლო ვერსიას წარმოადგენს, დიდი " "რიცხვი კი წარმოადგენს ვერსიას, რომლებიც ჯერ არ არსებობს. ეს დიდი რიცხვი " "შეგიძლიათ ამ დიალოგის გამოსართავად გამოიყენოთ." #: data/org.gnome.shell.gschema.xml.in:145 msgid "Layout of the app picker" msgstr "აპლიკაციის ამრჩევის განლაგება" #: data/org.gnome.shell.gschema.xml.in:146 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" msgstr "" "აპების ამრჩევის განლაგება. ამ მასივის თითოეული ელემენტი გვერდია. გვერდები იმ " "მიმდევრობითაა დამახსოვრებული, როგორც GNOME-ის გარსში ჩანან. თითოეული გვერდი " "“application id” → 'data' წყვილს შეიცავს. ამჟამად დამახსოვრებულია შემდეგი " "მნიშვნელობები, როგორც 'data': * \"მდებარეობა\": აპლიკაციის ხატულის " "მდებარეობა გვერდზე" #: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:172 msgid "Keybinding to shift between overview states" msgstr "კლავიატურის მალსახმობი მდგომარეობებს შორის გადასართავად" #: data/org.gnome.shell.gschema.xml.in:166 msgid "Keybinding to shift between session, window picker and app grid" msgstr "" "კლავიატურის მალსახმობი სესიებს, ფანჯრებსა და აპლიკაციის ბადეს შორის " "გადართავად" #: data/org.gnome.shell.gschema.xml.in:173 msgid "Keybinding to shift between app grid, window picker and session" msgstr "" "კლავიატურის მალსახმობი აპლიკაციის ბადეს, ფანჯრებსა და სესიებს შორის " "გადასართავად" #: data/org.gnome.shell.gschema.xml.in:179 msgid "Keybinding to open the “Show Applications” view" msgstr "კლავიატურის მალსახმობი \"აპლიკაციების ჩვენების\" ხედის გასახსნელად" #: data/org.gnome.shell.gschema.xml.in:180 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "" "კლავიატურის მალსახმობი \"აპლიკაციების ჩვენების\" ხედის გასახსნელად " "ქმედებების მიმოხილვით." #: data/org.gnome.shell.gschema.xml.in:187 msgid "Keybinding to open the overview" msgstr "კლავიატურის მალსახმობი მიმოხილვის გასახსნელად" #: data/org.gnome.shell.gschema.xml.in:188 msgid "Keybinding to open the Activities Overview." msgstr "კლავიატურის მალსახმობი ქმედებების გადასახედად." #: data/org.gnome.shell.gschema.xml.in:194 msgid "Keybinding to toggle the visibility of the notification list" msgstr "კლავიატურის მალსახმობი გაფრთხილებების სიის ხილვადობის ჩართ/გამორთ" #: data/org.gnome.shell.gschema.xml.in:195 msgid "Keybinding to toggle the visibility of the notification list." msgstr "კლავიატურის მალსახმობი გაფრთხილებების სიის ხილვადობის ჩართ/გამორთ." #: data/org.gnome.shell.gschema.xml.in:201 msgid "Keybinding to toggle the quick settings menu" msgstr "კლავიატურის მალსახმობი სწრაფი პარამეტრების მენიუს გადასართავად" #: data/org.gnome.shell.gschema.xml.in:202 msgid "Keybinding to toggle the quick settings menu." msgstr "კლავიატურის მალსახმობი სწრაფი პარამეტრების მენიუს გადასართავად." #: data/org.gnome.shell.gschema.xml.in:208 msgid "Keybinding to focus the active notification" msgstr "კლავიატურის მალსახმობი აქტიურ გაფრთხილებაზე გადასართავად" #: data/org.gnome.shell.gschema.xml.in:209 msgid "Keybinding to focus the active notification." msgstr "კლავიატურის მალსახმობი აქტიურ გაფრთხილებაზე გადასართავად." #: data/org.gnome.shell.gschema.xml.in:215 msgid "Switch to application 1" msgstr "#1 აპლიკაციაზე გადართვა" #: data/org.gnome.shell.gschema.xml.in:219 msgid "Switch to application 2" msgstr "აპლიკაცია 2-ზე გადართვა" #: data/org.gnome.shell.gschema.xml.in:223 msgid "Switch to application 3" msgstr "#3 აპლიკაციაზე გადართვა" #: data/org.gnome.shell.gschema.xml.in:227 msgid "Switch to application 4" msgstr "#4 აპლიკაციაზე გადართვა" #: data/org.gnome.shell.gschema.xml.in:231 msgid "Switch to application 5" msgstr "#5 აპლიკაციაზე გადართვა" #: data/org.gnome.shell.gschema.xml.in:235 msgid "Switch to application 6" msgstr "#6 აპლიკაციაზე გადართვა" #: data/org.gnome.shell.gschema.xml.in:239 msgid "Switch to application 7" msgstr "#7 აპლიკაციაზე გადართვა" #: data/org.gnome.shell.gschema.xml.in:243 msgid "Switch to application 8" msgstr "#8 აპლიკაციაზე გადართვა" #: data/org.gnome.shell.gschema.xml.in:247 msgid "Switch to application 9" msgstr "#9 აპლიკაციაზე გადართვა" #: data/org.gnome.shell.gschema.xml.in:251 msgid "Open a new instance of application 1" msgstr "აპლიკაცია 1-ის ახალი გაშვებული ასლის გახსნა" #: data/org.gnome.shell.gschema.xml.in:255 msgid "Open a new instance of application 2" msgstr "აპლიკაცია 2-ის ახალი გაშვებული ასლის გახსნა" #: data/org.gnome.shell.gschema.xml.in:259 msgid "Open a new instance of application 3" msgstr "აპლიკაცია 3-ის ახალი გაშვებული ასლის გახსნა" #: data/org.gnome.shell.gschema.xml.in:263 msgid "Open a new instance of application 4" msgstr "აპლიკაცია 4-ის ახალი გაშვებული ასლის გახსნა" #: data/org.gnome.shell.gschema.xml.in:267 msgid "Open a new instance of application 5" msgstr "აპლიკაცია 5-ის ახალი გაშვებული ასლის გახსნა" #: data/org.gnome.shell.gschema.xml.in:271 msgid "Open a new instance of application 6" msgstr "აპლიკაცია 6-ის ახალი გაშვებული ასლის გახსნა" #: data/org.gnome.shell.gschema.xml.in:275 msgid "Open a new instance of application 7" msgstr "აპლიკაცია 7-ის ახალი გაშვებული ასლის გახსნა" #: data/org.gnome.shell.gschema.xml.in:279 msgid "Open a new instance of application 8" msgstr "აპლიკაცია 8-ის ახალი გაშვებული ასლის გახსნა" #: data/org.gnome.shell.gschema.xml.in:283 msgid "Open a new instance of application 9" msgstr "აპლიკაცია 9-ის ახალი გაშვებული ასლის გახსნა" #: data/org.gnome.shell.gschema.xml.in:308 #: data/org.gnome.shell.gschema.xml.in:335 msgid "Limit switcher to current workspace." msgstr "გადამრთველის მიმდინარე სამუშაო სივრცეზე შეზღუდვა." #: data/org.gnome.shell.gschema.xml.in:309 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "თუ ჩართულია, გადამრთველში მხოლოდ მიმდინარე სამუშაო სივრცეში ფანჯრების მქონე " "აპლიკაციები გამოჩნდება. სხვა შემთხვევაში გამოჩნდება ყველა აპლიკაცია." #: data/org.gnome.shell.gschema.xml.in:326 msgid "The application icon mode." msgstr "აპლიკაციის ხატულების რეჟიმი." #: data/org.gnome.shell.gschema.xml.in:327 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-" "only” (shows only the application icon) or “both”." msgstr "" "გადამრთველში ფანჯრების გარეგნობის მორგება. შესაძლო ვარიანტების \"მხოლოდ " "მინიატურები\", \"მხოლოდ აპლიკაციის ხატულები\" ან \"ორივე\"." #: data/org.gnome.shell.gschema.xml.in:336 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "თუ ჩართულია, გადამრთველში, მხოლოდ, მიმდინარე სამუშაო სივრცეში არსებული " "ფანჯრები გამოჩნდება. სხვა შემთხვევაში გამოჩნდება ყველა ფანჯარა." #: data/org.gnome.shell.gschema.xml.in:346 msgid "Locations" msgstr "მდებარეობები" #: data/org.gnome.shell.gschema.xml.in:347 msgid "The locations to show in world clocks" msgstr "საათის ჩვენების მდებარეობა" #: data/org.gnome.shell.gschema.xml.in:357 msgid "Automatic location" msgstr "ავტომატური მდებარეობა" #: data/org.gnome.shell.gschema.xml.in:358 msgid "Whether to fetch the current location or not" msgstr "გამოვითხოვო თუ არა მდებარეობა" #: data/org.gnome.shell.gschema.xml.in:365 msgid "Location" msgstr "მდებარეობა" #: data/org.gnome.shell.gschema.xml.in:366 msgid "The location for which to show a forecast" msgstr "მდებარეობა ამინდის პროგნოზის საჩვენებლად" #. Keep in sync with subprojects/extensions-app #: data/org.gnome.Shell.Extensions.desktop.in.in:5 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/data/ui/extensions-window.ui:57 msgid "Extensions" msgstr "გაფართოებები" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "ქსელური შესვლა" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:275 msgid "Something’s gone wrong" msgstr "რაღაც გაფუჭდა" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" "სამწუხარო პრობლემა: ამ გაფართოების პარამეტრების ჩვენება შეუძლებელია. გირჩევთ " "მიმართოთ გაფართოების ავტორებს,." #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "ტექნიკური დეტალები" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "Homepage" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 msgid "Visit extension homepage" msgstr "გაფართოებების ვებგვერდის გახსნა" #: js/gdm/authPrompt.js:151 js/gdm/loginDialog.js:465 #: js/ui/audioDeviceSelection.js:66 js/ui/components/networkAgent.js:113 #: js/ui/components/polkitAgent.js:144 js/ui/endSessionDialog.js:437 #: js/ui/extensionDownloader.js:276 js/ui/shellMountOperation.js:382 #: js/ui/shellMountOperation.js:392 msgid "Cancel" msgstr "გაუქმება" #: js/gdm/authPrompt.js:317 js/ui/components/networkAgent.js:213 #: js/ui/components/networkAgent.js:233 js/ui/components/networkAgent.js:265 #: js/ui/components/networkAgent.js:298 js/ui/components/networkAgent.js:337 #: js/ui/components/networkAgent.js:350 js/ui/components/polkitAgent.js:286 #: js/ui/shellMountOperation.js:332 msgid "Password" msgstr "პაროლი" #: js/gdm/loginDialog.js:326 msgid "Choose Session" msgstr "აირჩიეთ სესია" #. Translators: is running for #: js/gdm/loginDialog.js:423 #, javascript-format msgid "" "Remote login is not possible because a remote session is already running for " "%s. To login remotely, you must log out from the remote session or force " "stop it." msgstr "" "დაშორებულად შესვლა შეუძლებელია, რადგან დაშორებული სესია უკვე გაშვებულია %s-" "სთვის. იმისათვის, რომ შეხვიდეთ, ჯერ გამოდით გაშვებული სესიიდან, ან ძალით " "დაასრულეთ ის." #. Translators: is running for #: js/gdm/loginDialog.js:426 #, javascript-format msgid "" "Login is not possible because a remote session is already running for %s. To " "login, you must log out from the remote session or force stop it." msgstr "" "შესვლა შეუძლებელია, რადგან დაშორებული სესია უკვე გაშვებულია %s-სთვის. " "იმისათვის, რომ შეხვიდეთ, ჯერ გამოდით დაშორებული სესიიდან, ან ძალით დაასრულეთ " "ის." #. Translators: is running for #: js/gdm/loginDialog.js:429 #, javascript-format msgid "" "Remote login is not possible because a local session is already running for " "%s. To login remotely, you must log out from the local session or force stop " "it." msgstr "" "დაშორებული შესვლა შეუძლებელია, რადგან ლოკალური სესია უკვე გაშვებულია %s-" "სთვის. დაშორებულად შესვლისთვის, თქვენ უნდა გამოხვიდეთ ლოკალური სესიიდან, ან " "ძალით დაასრულოთ ის." #. Translators: is running for #: js/gdm/loginDialog.js:432 #, javascript-format msgid "" "Login is not possible because a session is already running for %s. To login, " "you must log out from the session or force stop it." msgstr "" "შესვლა შეუძლებელია, რადგან სესია უკვე გაშვებულია %s-სთვის. მისათვის, რომ " "შეხვიდეთ, ჯერ უნდა გამოხვიდეთ სესიიდან, ან ძალით დაასრულოთ ის." #: js/gdm/loginDialog.js:441 msgid "Session Already Running" msgstr "სესია უკვე გაშვებულია" #: js/gdm/loginDialog.js:453 msgid "" "Force stopping will quit any running apps and processes, and could result in " "data loss" msgstr "" "ძალით დასრულება ასევე ძალით დაასრულებს ყველა გაშვებულ აპს და პროცესს და, " "შეიძლება, მონაცემების კარგვა გამოიწვიოს" #: js/gdm/loginDialog.js:473 msgid "Force Stop" msgstr "ძალით გაჩერება" #: js/gdm/loginDialog.js:541 msgid "Not listed?" msgstr "არაა სიაში?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:1009 #, javascript-format msgid "(e.g., user or %s)" msgstr "(მაგ, user ან %s)" #: js/gdm/loginDialog.js:1014 js/ui/components/networkAgent.js:257 #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:326 msgid "Username" msgstr "მომხმარებლის სახელი" #: js/gdm/loginDialog.js:1080 msgid "Login Attempt Timed Out" msgstr "შესვლის მცდელობის მოლოდინის ვადა ამოიწურა" #: js/gdm/loginDialog.js:1081 msgid "Login took too long, please try again" msgstr "შესვლას მეტისმეტად დიდხანს ცდილობდით. თავიდან სცადეთ" #: js/gdm/loginDialog.js:1426 msgid "Login Window" msgstr "შესვლის ფანჯარა" #: js/gdm/util.js:496 msgid "Authentication error" msgstr "ავთენტიკაციის შეცდომა" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:727 msgid "(or swipe finger across reader)" msgstr "(ან გადაუსვით თითი წამკითხველს)" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:732 msgid "(or place finger on reader)" msgstr "(ან მოათავსეთ თითი წამკითხველზე)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:91 msgctxt "search-result" msgid "Power Off" msgstr "გამორთვა" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:94 msgid "power off;poweroff;shutdown;halt;stop" msgstr "power off;poweroff;shutdown;halt;stop" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:99 msgctxt "search-result" msgid "Restart" msgstr "გადატვრთვა" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:102 msgid "reboot;restart;" msgstr "reboot;restart;" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:107 msgctxt "search-result" msgid "Lock Screen" msgstr "ეკრანის დაბლოკვა" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:110 msgid "lock screen" msgstr "lock screen" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:115 msgctxt "search-result" msgid "Log Out" msgstr "გასვლა" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:118 msgid "logout;log out;sign off" msgstr "logout;log out;sign off" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:123 msgctxt "search-result" msgid "Suspend" msgstr "ძილი" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:126 msgid "suspend;sleep" msgstr "suspend;sleep" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:131 msgctxt "search-result" msgid "Switch User" msgstr "მომხმარებლის გადართვა" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:134 msgid "switch user" msgstr "მომხმარებლის გადართვა" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:141 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "lock orientation;unlock orientation;screen;rotation" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:146 msgctxt "search-result" msgid "Take a Screenshot" msgstr "ეკრანის ანაბეჭდის გადაღება" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:149 msgid "screenshot;screencast;snip;capture;record" msgstr "screenshot;screencast;snip;capture;record" #: js/misc/systemActions.js:249 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "ეკრანის ტრიალის განბლოკვა" #: js/misc/systemActions.js:250 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "ეკრანის ტრიალის დაბლოკვა" #: js/misc/util.js:130 msgid "Command not found" msgstr "ბრძანება ვერ ვიპოვე" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:170 msgid "Could not parse command:" msgstr "ბრძანების ანალიზის შეცდომა:" #: js/misc/util.js:178 #, javascript-format msgid "Execution of “%s” failed:" msgstr "%s-ის გაშვების შეცდომა:" #: js/misc/dateUtils.js:69 msgid "Just now" msgstr "ახლა" #: js/misc/dateUtils.js:72 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d წუთის წინ" #: js/misc/dateUtils.js:79 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d საათის წინ" #: js/misc/dateUtils.js:85 js/ui/dateMenu.js:183 msgid "Yesterday" msgstr "გუშინ" #: js/misc/dateUtils.js:88 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d დღის წინ" #: js/misc/dateUtils.js:95 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d კვირის წინ" #: js/misc/dateUtils.js:102 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%d თვის წინ" #: js/misc/dateUtils.js:108 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "%d წლის წინ" #. Translators: Time in 24h format #: js/misc/dateUtils.js:155 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/dateUtils.js:161 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "გუშინ, %H∶%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/dateUtils.js:167 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/dateUtils.js:173 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%B %-d, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/dateUtils.js:179 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%B %-d %Y, %H∶%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/dateUtils.js:184 msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/dateUtils.js:190 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "გუშინ, %l∶%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/dateUtils.js:196 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/dateUtils.js:202 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%B %-d, %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/dateUtils.js:208 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%B %-d %Y, %l∶%M %p" #: js/portalHelper/main.js:98 msgid "Your connection seems to be secure" msgstr "როგორც ჩანს, თქვენი შეერთება დაცულია" #: js/portalHelper/main.js:104 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "თქვენი შეერთება ჰოტსპოტზე შესვლის გვერდამდე დაცული არაა. პაროლები და სხვა " "ინფორმაცია, რომელსაც შეიყვანთ, ახლომდებარე ხალხს შეუძლია, ნახოს." #: js/portalHelper/main.js:115 msgid "Hotspot Login" msgstr "ჰოტსპოტზე შესვლა" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:51 js/ui/inhibitShortcutsDialog.js:92 msgid "Deny" msgstr "უარყოფა" #: js/ui/accessDialog.js:52 js/ui/inhibitShortcutsDialog.js:101 msgid "Allow" msgstr "დაშვება" #: js/ui/appDisplay.js:1769 msgid "Unnamed Folder" msgstr "უსახელო საქაღალდე" #: js/ui/appFavorites.js:163 #, javascript-format msgid "%s has been pinned to the dash." msgstr "%s მიმაგრებულია." #: js/ui/appFavorites.js:194 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "%s ჩამოხსნილია." #: js/ui/appFavorites.js:208 js/ui/main.js:281 msgid "Undo" msgstr "ბრძანების გაუქმება" #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:49 msgid "Open Windows" msgstr "ფანჯრების გახსნა" #: js/ui/appMenu.js:57 msgid "New Window" msgstr "ახალი ფანჯარა" #: js/ui/appMenu.js:84 msgid "App Details" msgstr "აპის დეტალები" #: js/ui/appMenu.js:100 msgid "Quit" msgstr "გასვლა" #: js/ui/appMenu.js:160 js/ui/dash.js:248 msgid "Unpin" msgstr "ჩამოხსნა" #: js/ui/appMenu.js:161 msgid "Pin to Dash" msgstr "მიმაგრება" #: js/ui/appMenu.js:178 msgid "Launch using Integrated Graphics Card" msgstr "ჩაშენებული ვიდეობარათით გაშვება" #: js/ui/appMenu.js:179 msgid "Launch using Discrete Graphics Card" msgstr "დისკრეტული ვიდეობარათით გაშვება" #: js/ui/audioDeviceSelection.js:46 msgid "Select Audio Device" msgstr "აირჩიეთ აუდიომოწყობილობა" #: js/ui/audioDeviceSelection.js:61 js/ui/status/volume.js:81 msgid "Sound Settings" msgstr "ხმის მორგება" #: js/ui/audioDeviceSelection.js:74 msgid "Headphones" msgstr "ყურსაცვამები" #: js/ui/audioDeviceSelection.js:76 msgid "Headset" msgstr "ყურსაცვამები & მიკროფონი" #: js/ui/audioDeviceSelection.js:78 js/ui/status/volume.js:356 msgid "Microphone" msgstr "მიკროფონი" #: js/ui/backgroundMenu.js:13 msgid "Change Background…" msgstr "ფონის შეცვლა…" #: js/ui/backgroundMenu.js:15 msgid "Display Settings" msgstr "ეკრანის მორგება" #: js/ui/backgroundMenu.js:16 msgid "Settings" msgstr "მორგება" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:37 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:63 msgctxt "grid sunday" msgid "S" msgstr "კვ" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:65 msgctxt "grid monday" msgid "M" msgstr "ორ" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:67 msgctxt "grid tuesday" msgid "T" msgstr "სა" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:69 msgctxt "grid wednesday" msgid "W" msgstr "ოთხ" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:71 msgctxt "grid thursday" msgid "T" msgstr "ხუ" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:73 msgctxt "grid friday" msgid "F" msgstr "პარ" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:75 msgctxt "grid saturday" msgid "S" msgstr "შა" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:426 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:436 msgid "%OB %Y" msgstr "%OB %Y" #: js/ui/calendar.js:498 msgid "Previous month" msgstr "წინა თვე" #: js/ui/calendar.js:516 msgid "Next month" msgstr "შემდეგი თვე" #: js/ui/calendar.js:667 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:726 msgid "Week %V" msgstr "%V კვირა" #: js/ui/calendar.js:918 msgid "No Notifications" msgstr "შეტყობინებების გარეშე" #: js/ui/calendar.js:974 msgid "Do Not Disturb" msgstr "არ შემაწუხო" #: js/ui/calendar.js:995 msgid "Clear" msgstr "გასუფთავება" #: js/ui/calendar.js:999 msgctxt "action" msgid "Clear all notifications" msgstr "ყველა გაფრთხილების გასუფთავება" #. Translators: %s is an application name #: js/ui/closeDialog.js:42 #, javascript-format msgid "“%s” Is Not Responding" msgstr "\"%s\" არ პასუხობს" #: js/ui/closeDialog.js:43 msgid "" "You may choose to wait a short while for it to continue or force the app to " "quit entirely" msgstr "" "შეგიძლიათ აირჩიოთ გასაგრძელებლად ცოტა ხანს დაელოდოთ, ან ძალით დახუროთ ის" #: js/ui/closeDialog.js:71 msgid "Force Quit" msgstr "ძალით გასვლა" #: js/ui/closeDialog.js:76 msgid "Wait" msgstr "მოცდა" #: js/ui/components/automountManager.js:82 msgid "External drive connected" msgstr "გარე საცავი მიერთებულია" #: js/ui/components/automountManager.js:94 msgid "External drive disconnected" msgstr "გარე საცავი გათიშულია" #: js/ui/components/automountManager.js:208 msgid "Unable to unlock volume" msgstr "საცავის განბლოკვის შეცდომა" #: js/ui/components/automountManager.js:209 msgid "The installed udisks version does not support the PIM setting" msgstr "Udisks-ის დაყენებულ ვერსიას PIM პარამეტრების მხარდაჭერა არ გააჩნია" #. Translators: %s is the name of a partition on a external drive #: js/ui/components/autorunManager.js:189 #, javascript-format msgid "“%s” connected" msgstr "\"%s\" დაკავშირებულია" #: js/ui/components/autorunManager.js:190 msgid "Disk can now be used" msgstr "ახლა დისკის გამოყენება შესაძლებელია" #: js/ui/components/autorunManager.js:202 #, javascript-format msgid "Open with %s" msgstr "%s-ით გახსნა" #: js/ui/components/networkAgent.js:95 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router" msgstr "დაკავშირება ასევე შეგიძლიათ რაუტერზე \"WPS\" ღილაკზე დაწოლით" #: js/ui/components/networkAgent.js:107 js/ui/status/bluetooth.js:245 #: js/ui/status/network.js:360 js/ui/status/network.js:444 msgid "Connect" msgstr "დაკავშირება" #: js/ui/components/networkAgent.js:222 msgid "Key" msgstr "გასაღები" #: js/ui/components/networkAgent.js:273 js/ui/components/networkAgent.js:312 msgid "Private key password" msgstr "პირადი გასაღების პაროლი" #: js/ui/components/networkAgent.js:306 msgid "Identity" msgstr "იდენტიფიკაცია" #: js/ui/components/networkAgent.js:332 msgid "Service" msgstr "სერვისი" #: js/ui/components/networkAgent.js:370 js/ui/components/networkAgent.js:406 #: js/ui/components/networkAgent.js:743 js/ui/components/networkAgent.js:764 msgid "Authentication required" msgstr "საჭროა ავთენტიკაცია" #: js/ui/components/networkAgent.js:371 js/ui/components/networkAgent.js:744 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network “%s”" msgstr "" "უსადენო ქსელთან (%s) წვდომისთვის საჭიროა პაროლები ან დაშიფვრის გასაღებები" #: js/ui/components/networkAgent.js:375 js/ui/components/networkAgent.js:748 msgid "Wired 802.1X authentication" msgstr "802.1X ავთენტიკაცია მავთულზე" #: js/ui/components/networkAgent.js:378 msgid "Network name" msgstr "ქსელის სახელი" #: js/ui/components/networkAgent.js:386 js/ui/components/networkAgent.js:752 msgid "DSL authentication" msgstr "DSL ავთენტიკაცია" #: js/ui/components/networkAgent.js:393 js/ui/components/networkAgent.js:757 msgid "PIN code required" msgstr "საჭიროა PIN კოდი" #: js/ui/components/networkAgent.js:394 js/ui/components/networkAgent.js:758 msgid "PIN code is needed for the mobile broadband device" msgstr "მობილური კავშირის მოწყობილობას სჭირდება PIN კოდი" #: js/ui/components/networkAgent.js:396 msgid "PIN" msgstr "PIN კოდი" #: js/ui/components/networkAgent.js:407 js/ui/components/networkAgent.js:749 #: js/ui/components/networkAgent.js:753 js/ui/components/networkAgent.js:765 #: js/ui/components/networkAgent.js:769 #, javascript-format msgid "A password is required to connect to “%s”" msgstr "\"%s\"-თან დასაკავშირებლად საჭიროა პაროლი" #: js/ui/components/networkAgent.js:768 msgid "VPN password" msgstr "VPN-ის პაროლი" #: js/ui/components/polkitAgent.js:44 msgid "Authentication Required" msgstr "საჭროა ავთენტიკაცია" #: js/ui/components/polkitAgent.js:84 msgid "Administrator" msgstr "ადმინისტრატორი" #: js/ui/components/polkitAgent.js:149 msgid "Authenticate" msgstr "ავთენტიფიკაცია" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:263 js/ui/shellMountOperation.js:415 msgid "Sorry, that didn’t work. Please try again." msgstr "უკაცრავად, არ იმუშავა. კიდევ სცადეთ." #: js/ui/ctrlAltTab.js:23 js/ui/overviewControls.js:404 msgid "Windows" msgstr "ფანჯრები" #: js/ui/dash.js:204 js/ui/dash.js:250 msgid "Show Apps" msgstr "აპების ჩვენება" #. Translators: this is the name of the dock/favorites area on #. the bottom of the overview #: js/ui/dash.js:408 msgid "Dash" msgstr "პანელი" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:99 msgid "%B %-d %Y" msgstr "%B %-d %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:106 msgid "%A %B %e %Y" msgstr "%A %B %e %Y" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:172 msgctxt "calendar heading" msgid "%B %-d" msgstr "%B %-d" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:175 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%B %-d %Y" #: js/ui/dateMenu.js:181 msgid "Today" msgstr "დღეს" #: js/ui/dateMenu.js:185 msgid "Tomorrow" msgstr "ხვალ" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:216 msgctxt "event list time" msgid "All Day" msgstr "მთელი დღე" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:238 msgid "%m/%d" msgstr "%m/%d" #: js/ui/dateMenu.js:289 msgid "No Events" msgstr "ღონისძიებების გარეშე" #: js/ui/dateMenu.js:411 msgid "Add World Clocks…" msgstr "მსოფლიო საათების დამატება…" #: js/ui/dateMenu.js:412 msgid "World Clocks" msgstr "მსოფლიო საათები" #: js/ui/dateMenu.js:702 msgid "Loading…" msgstr "იტვირთება…" #: js/ui/dateMenu.js:712 msgid "Go Online for Weather Information" msgstr "ამინდის ინფორმაციისთვის საჭიროა ინტერნეტი" #: js/ui/dateMenu.js:714 msgid "Weather Information Unavailable" msgstr "ამინდის ინფორმაცია ხელმიუწვდომელია" #: js/ui/dateMenu.js:724 msgid "Weather" msgstr "ამინდი" #: js/ui/dateMenu.js:726 msgid "Select Weather Location…" msgstr "აირჩიეთ ამინდის მდებარეობა…" #: js/ui/endSessionDialog.js:47 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "%s-დან გასვლა" #: js/ui/endSessionDialog.js:48 msgctxt "title" msgid "Log Out" msgstr "გასვლა" #: js/ui/endSessionDialog.js:51 #, javascript-format msgid "%s will be logged out automatically in %d second" msgid_plural "%s will be logged out automatically in %d seconds" msgstr[0] "%s გავა ავტომატურად, %d წამში." #: js/ui/endSessionDialog.js:57 #, javascript-format msgid "You will be logged out automatically in %d second" msgid_plural "You will be logged out automatically in %d seconds" msgstr[0] "ავტომატური გასვლა %d წამში" #: js/ui/endSessionDialog.js:64 msgctxt "button" msgid "Log Out" msgstr "გასვლა" #: js/ui/endSessionDialog.js:70 js/ui/status/system.js:174 msgctxt "title" msgid "Power Off" msgstr "გამორთვა" #: js/ui/endSessionDialog.js:71 msgctxt "title" msgid "Install Updates & Power Off" msgstr "განახლებების დაყენება და გამორთვა" #: js/ui/endSessionDialog.js:74 #, javascript-format msgid "The system will power off automatically in %d second" msgid_plural "The system will power off automatically in %d seconds" msgstr[0] "სისტემა გამოირთვება ავტომატურად %d წამში." #: js/ui/endSessionDialog.js:78 js/ui/endSessionDialog.js:97 msgctxt "checkbox" msgid "Install pending software updates" msgstr "დარჩენილი განახლებების დაყენება" #: js/ui/endSessionDialog.js:82 msgctxt "button" msgid "Power Off" msgstr "გამორთვა" #: js/ui/endSessionDialog.js:89 msgctxt "title" msgid "Restart" msgstr "გადატვრთვა" #: js/ui/endSessionDialog.js:90 msgctxt "title" msgid "Install Updates & Restart" msgstr "განახლებების დაყენება და გადატვირთვა" #: js/ui/endSessionDialog.js:93 #, javascript-format msgid "The system will restart automatically in %d second" msgid_plural "The system will restart automatically in %d seconds" msgstr[0] "სისტემა გადაიტვირთება ავტომატურად %d წამში." #: js/ui/endSessionDialog.js:101 msgctxt "button" msgid "Restart" msgstr "გადატვრთვა" #: js/ui/endSessionDialog.js:109 msgctxt "title" msgid "Restart & Install Updates" msgstr "სისტემა გადაიტვირთება და განახლდება" #: js/ui/endSessionDialog.js:112 #, javascript-format msgid "The system will automatically restart and install updates in %d second" msgid_plural "" "The system will automatically restart and install updates in %d seconds" msgstr[0] "სისტემა გადაიტვირთება და განახლდება %d წამში." #: js/ui/endSessionDialog.js:119 js/ui/endSessionDialog.js:140 msgctxt "button" msgid "Restart & Install" msgstr "გადატვირთვა & დაყენება" #: js/ui/endSessionDialog.js:121 msgctxt "button" msgid "Install & Power Off" msgstr "დაყენება & გამორთვა" #: js/ui/endSessionDialog.js:122 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "გამორთვა განახლებების დაყენების შემდეგ" #: js/ui/endSessionDialog.js:129 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "გადატვირთვა და განახლება" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:134 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "%s %s დაყენებული იქნება გადატვირთვის შემდეგ. განახლებების დაყენებას საკმაოდ " "დიდი დრო შეიძლება დასჭირდეს. დარწმუნდით, რომ გაქვთ მონაცემების მარქაფი და " "კომპიუტერი შეერთებულია ელ-წყაროში." #: js/ui/endSessionDialog.js:283 msgid "Low battery power: please plug in before installing updates" msgstr "" "ელემენტი თითქმის დამჯდარია. განახლებების დაყენებამდე გთხოვთ შეართოთ კვების " "კაბელი" #: js/ui/endSessionDialog.js:292 msgid "Some applications are busy or have unsaved work" msgstr "ზოგიერთი აპლიკაცია დაკავებულია ან აქვს შეუნახავი ცვლილებები" #: js/ui/endSessionDialog.js:297 msgid "Other users are logged in" msgstr "სხვა მომხმარებლებიც არიან შემოსული" #: js/ui/endSessionDialog.js:467 msgctxt "button" msgid "Boot Options" msgstr "ჩატვირთვის მორგება" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:672 #, javascript-format msgid "%s (remote)" msgstr "%s (დაშორებული)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:675 #, javascript-format msgid "%s (console)" msgstr "%s (კონსოლიდან)" #: js/ui/extensionDownloader.js:280 msgid "Install" msgstr "დაყენება" #: js/ui/extensionDownloader.js:286 msgid "Install Extension" msgstr "გაფართოების დაყენება" #: js/ui/extensionDownloader.js:287 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "გადმოვწერო და დავაყენო %s extensions.gnome.org-დან?" #: js/ui/extensionSystem.js:352 msgid "Extension Updates Available" msgstr "ხელმისაწვდომია გაფართოების განახლება" #: js/ui/extensionSystem.js:353 msgid "Extension updates are ready to be installed" msgstr "გაფართოების განახლება მზადაა დასაყენებლად" #: js/ui/inhibitShortcutsDialog.js:70 msgid "Allow inhibiting shortcuts" msgstr "მალსახმობების გათიშვის ნების დართვა" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:73 #, javascript-format msgid "The app %s wants to inhibit shortcuts" msgstr "აპლიკაცია %s-ს მალსახმობების გათიშვას ითხოვს" #: js/ui/inhibitShortcutsDialog.js:74 msgid "An app wants to inhibit shortcuts" msgstr "აპლიკაციას მალსახმობების გათიშვა უნდა" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:81 #, javascript-format msgid "You can restore shortcuts by pressing %s" msgstr "მალსახმობების აღდგენა შეგიძლიათ %s-ზე დაწოლით" #: js/ui/kbdA11yDialog.js:34 msgid "Slow Keys Turned On" msgstr "ნელი ღილაკები ჩართულია" #: js/ui/kbdA11yDialog.js:35 msgid "Slow Keys Turned Off" msgstr "ნელი ღილაკები გამორთულია" #: js/ui/kbdA11yDialog.js:36 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "თქვენ Shift ღილაკს 8 წამით დააჭირეთ. ეს ნელი კლავიატურის თვისების " "მალსახმობია, რომელიც განსაზღვრავს, როგორ მუშაობს თქვენი კლავიატურა." #: js/ui/kbdA11yDialog.js:42 msgid "Sticky Keys Turned On" msgstr "წებოვანი ღილაკები ჩართულია" #: js/ui/kbdA11yDialog.js:43 msgid "Sticky Keys Turned Off" msgstr "წებოვანი ღილაკები გამორთულია" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "თქვენ Shift ღილაკს 5 წამით დააჭირეთ. ეს წებოვანი კლავიატურის თვისების " "მალსახმობია, რომელიც განსაზღვრავს, როგორ მუშაობს თქვენი კლავიატურა." #: js/ui/kbdA11yDialog.js:47 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" "თქვენ დააჭირეთ ერთდროულად ორ ღილაკს ან ზედიზედ 5-ჯერ დააჭირეთ Shift ღილაკს, " "ეს გამორთავს წებოვანი კლავიატურის თვისებას, რომელიც განსაზღვრავს, როგორ " "მუშაობს თქვენი კლავიატურა." #: js/ui/kbdA11yDialog.js:57 msgid "Leave On" msgstr "ჩართული დატოვება" #: js/ui/kbdA11yDialog.js:57 msgid "Turn On" msgstr "ჩართვა" #: js/ui/kbdA11yDialog.js:67 js/ui/status/network.js:455 msgid "Turn Off" msgstr "გამორთვა" #: js/ui/kbdA11yDialog.js:67 msgid "Leave Off" msgstr "გამორთული დატოვება" #: js/ui/keyboard.js:180 js/ui/status/keyboard.js:897 msgid "Keyboard Settings" msgstr "კლავიატურის მორგება" #: js/ui/lookingGlass.js:727 msgid "No extensions installed" msgstr "გაფართოებები დაყენებული არაა" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:788 #, javascript-format msgid "%s has not emitted any errors" msgstr "\"%s\"-მა შეცდომა არ დააბრუნა" #: js/ui/lookingGlass.js:794 msgid "Hide Errors" msgstr "შეცდომების დამალვა" #: js/ui/lookingGlass.js:798 js/ui/lookingGlass.js:875 msgid "Show Errors" msgstr "შეცდომების ჩვენება" #: js/ui/lookingGlass.js:807 msgid "Active" msgstr "აქტიური" #: js/ui/lookingGlass.js:810 msgid "Inactive" msgstr "არააქტიური" #: js/ui/lookingGlass.js:812 msgid "Error" msgstr "შეცდომა" #: js/ui/lookingGlass.js:814 msgid "Out of date" msgstr "ვადაგასული" #: js/ui/lookingGlass.js:816 msgid "Downloading" msgstr "გადმოწერა" #: js/ui/lookingGlass.js:818 msgid "Deactivating" msgstr "დეაქტივაცია" #: js/ui/lookingGlass.js:820 msgid "Activating" msgstr "აქტივაცია" #: js/ui/lookingGlass.js:853 msgid "View Source" msgstr "წყაროს ნახვა" #: js/ui/lookingGlass.js:864 msgid "Web Page" msgstr "ვებ გვერდი" #: js/ui/main.js:277 msgid "System was put in unsafe mode" msgstr "სისტემა უსაფრთხო რეჟიმზე გადაერთო" #: js/ui/main.js:278 msgid "Apps now have unrestricted access" msgstr "ახლა აპების წვდომა განუსაზღვრელია" #: js/ui/main.js:338 msgid "Logged in as a privileged user" msgstr "შეხვედით, როგორც პრივილეგირებული მომხმარებელი" #: js/ui/main.js:339 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" "სესიის პრივილეგირებული მომხმარებლით გაშვება უსაფრთხოების მიზნით თავიდან უნდა " "აირიდოთ. თუ ეს შესაძლებელია, ჩვეულებრივი მომხმარებლით შედით." #: js/ui/main.js:387 msgid "Screen Lock disabled" msgstr "ეკრანის ჩაკეტვა გათიშულია" #: js/ui/main.js:388 msgid "Screen Locking requires the GNOME display manager" msgstr "ეკრანის ჩაკეტვას GNOME-ის ეკრანის მმართველი სჭირდება" #. Translators: this is the string displayed in the header when a message #. source doesn't have a name #: js/ui/messageList.js:374 msgid "Unknown App" msgstr "უცნობი აპი" #: js/ui/messageTray.js:326 js/ui/messageTray.js:328 msgid "Notification sound" msgstr "შეტყობინების ხმა" #: js/ui/mpris.js:198 msgid "Unknown artist" msgstr "უცნობი შემსრულებელი" #: js/ui/mpris.js:208 msgid "Unknown title" msgstr "უცნობი სათაური" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:328 msgid "Type to search" msgstr "მოსაძებნად აკრიფეთ" #: js/ui/overviewControls.js:392 msgid "Apps" msgstr "აპები" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:33 msgid "Overview" msgstr "მიმოხილვა" #: js/ui/padOsd.js:98 msgid "New shortcut…" msgstr "ახალი მალსახმობი…" #: js/ui/padOsd.js:151 msgid "App defined" msgstr "აპის განსაზღვრული" #: js/ui/padOsd.js:152 msgid "Show on-screen help" msgstr "ეკრანზე ნაჩვენები დახმარება" #: js/ui/padOsd.js:153 msgid "Switch monitor" msgstr "ეკრანის შეცვლა" #: js/ui/padOsd.js:154 msgid "Assign keystroke" msgstr "ღილაკების თანამიმდევრობის მინიჭება" #: js/ui/padOsd.js:223 msgid "Done" msgstr "დასრულდა" #: js/ui/padOsd.js:726 msgid "Edit…" msgstr "ჩასწორება…" #: js/ui/padOsd.js:773 msgid "None" msgstr "არაფერი" #: js/ui/padOsd.js:844 msgid "Press a button to configure" msgstr "მოსარგებად დააწექით ღილაკს" #: js/ui/padOsd.js:845 msgid "Press Esc to exit" msgstr "დასახურად დააწექით ESC-ს" #: js/ui/padOsd.js:848 msgid "Press any key to exit" msgstr "გასასვლელად დააჭირეთ ნებისმიერ ღილაკს" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:423 msgid "Activities" msgstr "ქმედებები" #: js/ui/panel.js:504 msgctxt "System menu in the top bar" msgid "System" msgstr "სისტემა" #: js/ui/panel.js:678 msgid "Top Bar" msgstr "ზედა ზოლი" #: js/ui/quickSettings.js:188 msgid "Open menu" msgstr "მენიუს გახსნა" #: js/ui/runDialog.js:61 msgid "Run a Command" msgstr "ბრძანების გაშვება" #: js/ui/runDialog.js:76 msgid "Press ESC to close" msgstr "დასახურად დააწექით ESC-ს" #: js/ui/runDialog.js:241 msgid "Restart is not available on Wayland" msgstr "Wayland-ში გადატვირთვა მიუწვდომელია" #: js/ui/runDialog.js:246 msgid "Restarting…" msgstr "გადატვირთვა…" #: js/ui/screenShield.js:233 msgid "GNOME needs to lock the screen" msgstr "GNOME -ს სჭირდება თქვენი ეკრანის ჩაკეტვა" #: js/ui/screenShield.js:274 js/ui/screenShield.js:667 msgid "Unable to lock" msgstr "ჩაკეტვის შეცდომა" #: js/ui/screenShield.js:275 js/ui/screenShield.js:668 msgid "Lock was blocked by an app" msgstr "ჩაკეტვა დაბლოკილია აპის მიერ" #: js/ui/screenshot.js:1252 msgid "Selection" msgstr "მონიშნული" #: js/ui/screenshot.js:1262 msgid "Area Selection" msgstr "მონიშნული მონაკვეთი" #: js/ui/screenshot.js:1267 msgid "Screen" msgstr "ეკრანი" #: js/ui/screenshot.js:1277 msgid "Screen Selection" msgstr "ეკრანის არჩევანი" #: js/ui/screenshot.js:1282 msgid "Window" msgstr "ფანჯარა" #: js/ui/screenshot.js:1292 msgid "Window Selection" msgstr "ფანჯრის არჩევანი" #. Translators: entry in the window right click menu. #: js/ui/screenshot.js:1317 js/ui/status/system.js:111 js/ui/windowMenu.js:28 msgid "Take Screenshot" msgstr "ეკრანის ანაბეჭდის გადაღება" #: js/ui/screenshot.js:1333 msgid "Record Screen" msgstr "ეკრანის ჩაწერა" #. Translators: since this string refers to an action, #. it needs to be phrased as a verb. #: js/ui/screenshot.js:1350 msgid "Capture" msgstr "ჩაჭერა" #: js/ui/screenshot.js:1372 msgid "Show Pointer" msgstr "კურსორის ჩვენება" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1996 msgid "Screencasts" msgstr "ეკრანის ვიდეოჩანაწერი" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast From 07-17-2013 10:00:46 PM" #: js/ui/screenshot.js:2001 #, no-c-format msgid "Screencast From %d %t" msgstr "ეკრანის ვიდეოჩანაწერი %d %t-დან" #. Translators: notification title. #: js/ui/screenshot.js:2047 msgid "Screencast recorded" msgstr "ეკრანის ვიდეოჩანაწერი დასრულებულია" #. Translators: notification title. #: js/ui/screenshot.js:2060 msgid "Screencast failed to start" msgstr "ეკრანის ტრანსლაციის დაწყება ჩავარდა" #. Translators: notification title. #: js/ui/screenshot.js:2066 msgid "Screencast ended: Out of disk space" msgstr "Screencast დასრულდა: დისკზე ადგილი აღარაა" #. We can encourage user to try again on service crashes since the #. recorder will auto-blocklist the pipeline that crashed. #. Translators: notification title. #: js/ui/screenshot.js:2072 msgid "Screencast ended unexpectedly, please try again" msgstr "Screencast მოულოდნელად დასრულდა. თავიდან სცადეთ" #. Translators: notification title. #: js/ui/screenshot.js:2075 msgid "Screencast ended unexpectedly" msgstr "Screencast მოულოდნელად დასრულდა" #. Translators: notification source name. #: js/ui/screenshot.js:2085 js/ui/screenshot.js:2327 msgid "Screenshot" msgstr "ეკრანის ანაბეჭდი" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:2092 msgid "Click here to view the video." msgstr "ვიდეოს სანახავად დააწკაპუნეთ აქ." #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:2100 js/ui/screenshot.js:2343 msgid "Show in Files" msgstr "ფაილებში ჩვენება" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2287 #, javascript-format msgid "Screenshot From %s" msgstr "ეკრანის ანაბეჭდი %s-დან" #. Translators: notification title. #: js/ui/screenshot.js:2333 msgid "Screenshot captured" msgstr "ეკრანის ანაბეჭდი დათრეულია" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2335 msgid "You can paste the image from the clipboard." msgstr "შეგიძლიათ მიმოცვლის ბაფერიდან ჩასვათ." #: js/ui/screenshot.js:2391 js/ui/screenshot.js:2555 msgid "Screenshot taken" msgstr "ეკრანის ანაბეჭდი აღებულია" #: js/ui/search.js:829 msgid "Searching…" msgstr "ძებნა…" #: js/ui/search.js:831 msgid "No results" msgstr "შედეგების გარეშე" #: js/ui/search.js:962 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "კიდევ %d" #: js/ui/searchController.js:87 #: subprojects/extensions-app/data/ui/extensions-window.ui:73 msgid "Search" msgstr "ძებნა" #: js/ui/shellEntry.js:21 msgid "Copy" msgstr "კოპირება" #: js/ui/shellEntry.js:26 msgid "Paste" msgstr "ჩასმა" #: js/ui/shellEntry.js:78 msgid "Show Text" msgstr "ტექსტის ჩვენება" #: js/ui/shellEntry.js:80 msgid "Hide Text" msgstr "ტექსტის დამალვა" #: js/ui/shellEntry.js:174 msgid "Caps lock is on" msgstr "CapsLock ჩართულია" #: js/ui/shellMountOperation.js:286 msgid "Hidden Volume" msgstr "დამალული საცავი" #: js/ui/shellMountOperation.js:289 msgid "Windows System Volume" msgstr "Windows-ის სისტემური საცავი" #: js/ui/shellMountOperation.js:292 msgid "Uses Keyfiles" msgstr "მოხმარებლის გასაღების ფაილები" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:300 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead" msgstr "" "საცავების, რომლებიც იყენებენ გასაღებებს, განსაბლოკად გამოიყენეთ %s" #: js/ui/shellMountOperation.js:304 msgid "" "You need an external utility like Disks to unlock a volume that uses " "keyfiles" msgstr "" "ტომის, რომელიც გასაღების ფაილებს იყენებს, განბლოკვისთვის გარე პროგრამა, " "მაგალითად დისკები გჭირდებათ" #: js/ui/shellMountOperation.js:312 msgid "PIM Number" msgstr "PIM-ის ნომერი" #: js/ui/shellMountOperation.js:371 msgid "Remember Password" msgstr "პაროლის დამასოვრება" #: js/ui/shellMountOperation.js:386 msgid "Unlock" msgstr "განბლოკვა" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:400 #, javascript-format msgid "Open %s" msgstr "გახსენი %s" #: js/ui/shellMountOperation.js:436 msgid "The PIM must be a number or empty" msgstr "PIM უნდა იყოს ან რიცხვი, ან არაფერი" #: js/ui/status/accessibility.js:34 msgid "Accessibility" msgstr "წვდომადობა" #: js/ui/status/accessibility.js:44 msgid "High Contrast" msgstr "მაღალი კონტრასტი" #: js/ui/status/accessibility.js:47 msgid "Zoom" msgstr "გადიდება" #: js/ui/status/accessibility.js:54 msgid "Screen Reader" msgstr "ეკრანის მკითხველი" #: js/ui/status/accessibility.js:58 msgid "Screen Keyboard" msgstr "კლავიატურა ეკრანზე" #: js/ui/status/accessibility.js:62 msgid "Visual Alerts" msgstr "ვიზუალური გართხილებები" #: js/ui/status/accessibility.js:66 msgid "Sticky Keys" msgstr "წებოვანი ღილაკები" #: js/ui/status/accessibility.js:70 msgid "Slow Keys" msgstr "ნელი ღილაკები" #: js/ui/status/accessibility.js:74 msgid "Bounce Keys" msgstr "მხტუნავი ღილაკები" #: js/ui/status/accessibility.js:78 msgid "Mouse Keys" msgstr "თაგუნას ღილაკები" #: js/ui/status/accessibility.js:83 msgid "Accessibility Settings" msgstr "წვდომადობის მორგება" #: js/ui/status/accessibility.js:140 msgid "Large Text" msgstr "დიდი ტექსტი" #: js/ui/status/autoRotate.js:14 msgid "Auto Rotate" msgstr "ავტომატური მობრუნება" #: js/ui/status/backgroundApps.js:156 msgctxt "title" msgid "Background Apps" msgstr "ფონური აპები" #: js/ui/status/backgroundApps.js:171 msgid "Apps known to be running without a window" msgstr "ცნობილი ფანჯრის გარეშე არსებული აპები" #: js/ui/status/backgroundApps.js:182 msgid "App Settings" msgstr "აპის მორგება" #: js/ui/status/backgroundApps.js:239 msgid "No Background Apps" msgstr "ფონური აპების გარეშე" #: js/ui/status/backgroundApps.js:241 #, javascript-format msgid "%d Background App" msgid_plural "%d Background Apps" msgstr[0] "%d ფონური აპი" #: js/ui/status/backlight.js:39 msgid "Keyboard Brightness" msgstr "კლავიატურის სიკაშკაშე" #: js/ui/status/backlight.js:79 msgid "Off" msgstr "გამორთვა" #: js/ui/status/backlight.js:80 msgid "Low" msgstr "დაბალი" #: js/ui/status/backlight.js:81 msgid "High" msgstr "მაღალი" #: js/ui/status/backlight.js:147 js/ui/status/keyboard.js:879 msgid "Keyboard" msgstr "კლავიატურა" #: js/ui/status/bluetooth.js:245 js/ui/status/network.js:360 msgid "Disconnect" msgstr "გათიშვა" #: js/ui/status/bluetooth.js:262 js/ui/status/bluetooth.js:264 msgid "Bluetooth" msgstr "Bluetooth" #: js/ui/status/bluetooth.js:287 js/ui/status/network.js:1900 msgid "Bluetooth Settings" msgstr "Bluetooth-ის მორგება" #: js/ui/status/bluetooth.js:334 msgid "No available or connected devices" msgstr "ხელმისაწვდომი ან მიერთებული მოწყობილობების გარეშე" #: js/ui/status/bluetooth.js:335 msgid "Turn on Bluetooth to connect to devices" msgstr "მოწყობილობებთან მისაერთებლად ჩართეთ ბლუთუზი" #. Translators: This is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:389 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d მიერთებულია" #: js/ui/status/brightness.js:32 msgid "Brightness" msgstr "სიკაშკაშე" #: js/ui/status/darkMode.js:12 msgid "Dark Style" msgstr "მუქი სტილი" #: js/ui/status/dwellClick.js:15 msgid "Single Click" msgstr "ერთი წკაპი" #: js/ui/status/dwellClick.js:20 msgid "Double Click" msgstr "ორმაგი წკაპი" #: js/ui/status/dwellClick.js:25 msgid "Drag" msgstr "გადათრევა" #: js/ui/status/dwellClick.js:30 msgid "Secondary Click" msgstr "დამატებით წკაპი" #: js/ui/status/dwellClick.js:39 msgid "Dwell Click" msgstr "დიდხნიანია წკაპი" #: js/ui/status/keyboard.js:896 msgid "Show Keyboard Layout" msgstr "კლავიატურის განლაგების ჩვენება" #: js/ui/status/location.js:337 msgid "Allow location access" msgstr "მდებარეობის პოვნის წვდომა" #. Translators: %s is an application name #: js/ui/status/location.js:339 #, javascript-format msgid "The app %s wants to access your location" msgstr "აპლიკაციას %s უნდა თქვენი მდებარეობის გაგება" #: js/ui/status/location.js:349 msgid "Location access can be changed at any time from the privacy settings" msgstr "" "მდებარეობაზე წვდომა შეიძლება შეიცვალოს ნებისმიერ დროს კონფიდენციალობის " "პარამეტრებიდან" #: js/ui/status/location.js:357 msgid "Deny Access" msgstr "წვდომის მინიჭება" #: js/ui/status/location.js:362 msgid "Grant Access" msgstr "უარი წვდომაზე" #: js/ui/status/network.js:62 msgid "" msgstr "<უცნობი>" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:354 #, javascript-format msgid "Disconnect %s" msgstr "გათიშვა %s" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:356 #, javascript-format msgid "Connect to %s" msgstr "%s-სთან დაკავშირება" #: js/ui/status/network.js:1050 msgid "Secure" msgstr "დაცული" #: js/ui/status/network.js:1050 msgid "Not secure" msgstr "დაცული არაა" #: js/ui/status/network.js:1051 #, javascript-format msgid "Signal strength %s%%" msgstr "სიგნალის სიძლიერე %s%%" #. translators: The first placeholder is the network name, the second and indication whether it is secure, and the last the signal strength indication #: js/ui/status/network.js:1053 #, javascript-format msgid "%s, %s, %s" msgstr "%s, %s, %s" #. Translators: %s is a network identifier #: js/ui/status/network.js:1155 #, javascript-format msgid "%s Hotspot" msgstr "%s Hotspot-ი" #: js/ui/status/network.js:1426 #, javascript-format msgid "%d connected" msgid_plural "%d connected" msgstr[0] "%d მიერთებულია" #: js/ui/status/network.js:1524 js/ui/status/network.js:1540 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1525 msgid "VPN Settings" msgstr "VPN-ის მორგება" #: js/ui/status/network.js:1785 msgid "Wi–Fi" msgstr "Wi–Fi" #: js/ui/status/network.js:1787 msgid "All Networks" msgstr "ყველა ქსელი" #: js/ui/status/network.js:1884 msgid "Wired Connections" msgstr "მავთულიანი კავშირები" #: js/ui/status/network.js:1885 msgid "Wired Settings" msgstr "მავთულით მიერთების მორგება" #: js/ui/status/network.js:1899 msgid "Bluetooth Tethers" msgstr "ბლუთუზით მიბმა" #. Translators: "Tether" from "Bluetooth Tether" #: js/ui/status/network.js:1906 msgid "Tether" msgstr "მიბმა" #: js/ui/status/network.js:1919 msgid "Mobile Connections" msgstr "მობილური კავშირები" #: js/ui/status/network.js:1921 msgid "Mobile Broadband Settings" msgstr "მობილური კავშირის მორგება" #. Translators: "Mobile" from "Mobile Broadband" #: js/ui/status/network.js:1930 msgid "Mobile" msgstr "მობილური" #: js/ui/status/network.js:1964 msgid "Sign Into Wi–Fi Network" msgstr "შესვლა Wi-Fi ქსელში" #: js/ui/status/network.js:2151 msgid "Connection failed" msgstr "დაკავშირება ვერ მოხერხდა" #: js/ui/status/network.js:2152 msgid "Activation of network connection failed" msgstr "ქსელის კავშირის აქტივაციის შეცდომა" #: js/ui/status/nightLight.js:19 msgid "Night Light" msgstr "ღამის სინათლე" #: js/ui/status/powerProfiles.js:19 msgctxt "Power profile" msgid "Performance" msgstr "წარმადობა" #: js/ui/status/powerProfiles.js:24 msgctxt "Power profile" msgid "Balanced" msgstr "ბალანსირებული" #: js/ui/status/powerProfiles.js:29 msgctxt "Power profile" msgid "Power Saver" msgstr "ელემენტის შენახვის რეჟიმი" #: js/ui/status/powerProfiles.js:39 js/ui/status/powerProfiles.js:69 msgid "Power Mode" msgstr "კვების რეჟიმი" #: js/ui/status/powerProfiles.js:71 msgid "Power Settings" msgstr "კვების პარამეტრები" #: js/ui/status/remoteAccess.js:74 msgid "Stop Screencast" msgstr "ეკრანის ვიდეოჩანაწერის დასრულება" #: js/ui/status/remoteAccess.js:144 msgid "Stop Screen Sharing" msgstr "ეკრანის გაზიარების შეწყვეტა" #: js/ui/status/rfkill.js:99 msgid "Airplane Mode" msgstr "თვითმფრინავის რეჟიმი" #: js/ui/status/system.js:168 msgid "Power Off Menu" msgstr "გამორთვის მენიუ" #: js/ui/status/system.js:176 msgid "Suspend" msgstr "ძილი" #: js/ui/status/system.js:181 msgid "Restart…" msgstr "გადატვირთვა…" #: js/ui/status/system.js:186 msgid "Power Off…" msgstr "გამორთვა…" #: js/ui/status/system.js:193 #: subprojects/extensions-app/data/ui/extensions-window.ui:124 msgid "Log Out…" msgstr "გასვლა…" #: js/ui/status/system.js:198 msgid "Switch User…" msgstr "მომხმარებლის გადართვა…" #: js/ui/status/system.js:242 msgctxt "action" msgid "Lock Screen" msgstr "ეკრანის ჩაკეტვა" #: js/ui/status/thunderbolt.js:308 msgid "Unknown Thunderbolt device" msgstr "Thunderbolt-ის უცნობი მოწყობილობა" #: js/ui/status/thunderbolt.js:309 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" "სანამ გასული ბრძანდებოდით, აღმოჩენილია ახალი მოწყობილობები. გამოსაყენებლად " "ჯერ გამოაერთეთ ისინი, შემდეგ კი თავიდან მიაერთეთ." #: js/ui/status/thunderbolt.js:312 msgid "Unauthorized Thunderbolt device" msgstr "უცნობი Thunderbolt მოწყობილობა" #: js/ui/status/thunderbolt.js:313 msgid "" "New device has been detected and needs to be authorized by an administrator" msgstr "" "აღმოჩენილია ახალი მოწყობილობა და ადმინისტრატორის მიერ ავტორიზებული უნდა იყოს" #: js/ui/status/thunderbolt.js:319 msgid "Thunderbolt authorization error" msgstr "Thunderbolt მოწყობილობის ავტორიზაციის შეცდომა" #: js/ui/status/thunderbolt.js:320 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "Thunderbolt მოწყობილობასთან ავტორიზაციის შეცდომა: %s" #: js/ui/status/volume.js:218 msgid "Volume changed" msgstr "საცავი შეიცვალა" #: js/ui/status/volume.js:231 msgid "Unmute" msgstr "დადუმების გამორთვა" #: js/ui/status/volume.js:231 msgid "Mute" msgstr "დადუმება" #: js/ui/status/volume.js:286 msgid "Volume" msgstr "ტომი" #: js/ui/status/volume.js:302 msgid "Sound Output" msgstr "ხმის გამოტანა" #: js/ui/status/volume.js:374 msgid "Sound Input" msgstr "ხმის შეყვანა" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:20 msgid "Mirror" msgstr "სარკე" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:29 msgid "Join Displays" msgstr "ეკრანების შეერთება" #. Translators: this is for using only external displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:39 msgid "External Only" msgstr "მხოლოდ გარე" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:47 msgid "Built-in Only" msgstr "მხოლოდ ჩაშენებული" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:378 msgid "%A %B %-d" msgstr "%A %B %-d" #: js/ui/unlockDialog.js:384 msgid "Swipe up to unlock" msgstr "გადაუსვით ბლოკის მოსახსნელად" #: js/ui/unlockDialog.js:385 msgid "Click or press a key to unlock" msgstr "ბლოკის მოსახსნელად დააწექით ნებისმიერ ღილაკს" #: js/ui/unlockDialog.js:568 msgid "Unlock Window" msgstr "ფანჯრის განბლოკვა" #: js/ui/unlockDialog.js:577 msgid "Log in as another user" msgstr "სხვა მომხმარებლით შესვლა" #: js/ui/welcomeDialog.js:47 #, javascript-format msgid "GNOME %s" msgstr "GNOME %s" #: js/ui/welcomeDialog.js:51 #, javascript-format msgid "Welcome to %s" msgstr "მოგესალმებათ %s" #: js/ui/welcomeDialog.js:52 msgid "If you want to learn your way around, check out the tour" msgstr "თუ გნებავთ, ისწავლოთ, დაიწყეთ ჩვენი ტურით" #: js/ui/welcomeDialog.js:61 msgid "Skip" msgstr "გამოტოვება" #: js/ui/welcomeDialog.js:66 msgid "Take Tour" msgstr "ტურის აღება" #: js/ui/windowAttentionHandler.js:18 #, javascript-format msgid "“%s” is ready" msgstr "\"%s\" მზადაა" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:68 msgid "Keep these display settings?" msgstr "დაიტოვებთ ამ პარამეტრებს?" #: js/ui/windowManager.js:78 msgid "Revert Settings" msgstr "პარამეტრების დაბრუნება" #: js/ui/windowManager.js:83 msgid "Keep Changes" msgstr "ცვლილებების დატოვება" #: js/ui/windowManager.js:103 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "კონფიგურაცია დაბრუნდება %d წამში" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:500 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:40 msgid "Hide" msgstr "დამალვა" #: js/ui/windowMenu.js:47 msgid "Restore" msgstr "აღდგენა" #: js/ui/windowMenu.js:51 msgid "Maximize" msgstr "გადიდება" #: js/ui/windowMenu.js:58 msgid "Move" msgstr "გადაადგილება" #: js/ui/windowMenu.js:78 msgid "Resize" msgstr "ზომის შეცვლა" #: js/ui/windowMenu.js:98 msgid "Always on Top" msgstr "ყოველთვის ყველაზე ზემოთ" #: js/ui/windowMenu.js:117 msgid "Always on Visible Workspace" msgstr "ყოველთვის ხილულ სამუშაო სივრცეში" #: js/ui/windowMenu.js:131 msgid "Move to Workspace Left" msgstr "მარცხენა სამუშაო სივრცეში გადატანა" #: js/ui/windowMenu.js:137 msgid "Move to Workspace Right" msgstr "მარჯვენა სამუშაო სივრცეში გადატანა" #: js/ui/windowMenu.js:143 msgid "Move to Workspace Up" msgstr "ზედა სამუშაო სივრცეში გადატანა" #: js/ui/windowMenu.js:149 msgid "Move to Workspace Down" msgstr "ქვედა სამუშაო სივრცეში გადატანა" #: js/ui/windowMenu.js:167 msgid "Move to Monitor Up" msgstr "ეკრანის მაღლა ატანა" #: js/ui/windowMenu.js:176 msgid "Move to Monitor Down" msgstr "ეკრანის დაბლა ჩამოტანა" #: js/ui/windowMenu.js:185 msgid "Move to Monitor Left" msgstr "ეკრანის მარცხნივ გატანა" #: js/ui/windowMenu.js:194 msgid "Move to Monitor Right" msgstr "ეკრანის მარჯვნივ გატანა" #: js/ui/windowMenu.js:202 msgid "Close" msgstr "დახურვა" #: src/main.c:527 subprojects/extensions-tool/src/main.c:336 msgid "Print version" msgstr "მიმდინარე ვერსიის დაბეჭდვა" #: src/main.c:533 msgid "Mode used by GDM for login screen" msgstr "რეჟიმი, რომელსაც GDM შემოსვლის ეკრანისთვის იყენებს" #: src/main.c:539 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "შესვლის ეკრანის რეჟიმის მითითება. მაგ: \"gdm\"" #: src/main.c:545 msgid "List possible modes" msgstr "შესაძლო რეჟიმების სია" #: src/main.c:551 msgid "Force animations to be enabled" msgstr "ანიმაციების ნაძალადევი ჩართვა" #: src/shell-app.c:252 msgctxt "program" msgid "Unknown" msgstr "უცნობი" #: src/shell-app.c:503 #, c-format msgid "Failed to launch “%s”" msgstr "%s-ის გაშვების შეცდომა" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match" msgstr "პაროლები არ ემთხვევა" #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "პაროლები ცარიელი ვერ იქნება" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "ავთენტიკაციის ფანჯარა დახურულია მომხმარებლის მიერ" #: src/st/st-icon-theme.c:1865 #, c-format msgid "Icon '%s' not present in theme %s" msgstr "ხატულა '%s' თემაში '%s' არ არსებობს" #: src/st/st-icon-theme.c:3454 src/st/st-icon-theme.c:3757 msgid "Failed to load icon" msgstr "ხატულის ჩატვირთვის შეცდომა" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 msgid "Manage your GNOME Extensions" msgstr "GNOME-ის თქვენი გაფართოებების მართვა" #. developer_name tag deprecated with Appstream 1.0 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:19 msgid "The GNOME Project" msgstr "პროექტი \"GNOME\"" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:51 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" "GNOME-ის გაფართოებები დაკავებულია გაფართოებების განახლებით, მათი " "პარამეტრების მორგებით და არასასურველი გაფართოებების წაშლით ან გამორთვით." #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:64 msgid "Main Window" msgstr "მთავარი ფანჯარა" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:68 msgid "Available Updates" msgstr "ხელმისაწვდომი განახლებები" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:72 msgid "Search View" msgstr "ძებნის ხედი" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "GNOME-ის გარსის გაფართოებების მორგება" #: subprojects/extensions-app/js/extensionManager.js:237 #, javascript-format msgid "" "The installed version of this extension (%s) is incompatible with the " "current version of GNOME (%s). The extension has been disabled." msgstr "" "ამ გაფართოების (%s) დაყენებული ვერსია არასათავსებადია GNOME-ის მიმდინარე " "ვერსიასთან (%s). გაფართოება გათიშულია." #: subprojects/extensions-app/js/extensionManager.js:238 #, javascript-format msgid "" "The installed version of this extension is incompatible with the current " "version of GNOME (%s). The extension has been disabled." msgstr "" "ამ გაფართოების დაყენებული ვერსია არასათავსებადია GNOME-ის მიმდინარე " "ვერსიასთან (%s). გაფართოება გათიშულია." #: subprojects/extensions-app/js/extensionManager.js:242 msgid "" "An error has occurred in this extension. This could cause issues elsewhere " "in the system. It is recommended to turn the extension off until the error " "is resolved." msgstr "" "ამ გაფართოებაში აღმოჩენილია შეცდომა. ამას სისტემაში სხვა ადგილასაც შეუძლია " "შეცდომების გამოწვევა. რეკომენდებულია, გამორთოთ ეს გაფართოება, სანამ შეცდომას " "აღმოფხვრით." #. translators: Details for an extension error #: subprojects/extensions-app/js/extensionManager.js:248 msgid "Error details:" msgstr "შეცდომის დეტალები:" #: subprojects/extensions-app/js/extensionRow.js:82 #, javascript-format msgid "Version %s" msgstr "ვერისა %s" #: subprojects/extensions-app/js/extensionsWindow.js:113 #, javascript-format msgid "Remove “%s”?" msgstr "წავშალო %s?" #: subprojects/extensions-app/js/extensionsWindow.js:114 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "" "თუ ამ გაფართოებას წაშლით, მის თავიდან ჩასართავად გადმოწერებზე დაბრუნება " "მოგიწევთ" #: subprojects/extensions-app/js/extensionsWindow.js:117 msgid "_Cancel" msgstr "_გაუქმება" #: subprojects/extensions-app/js/extensionsWindow.js:118 msgid "_Remove" msgstr "_წაშლა" #: subprojects/extensions-app/js/extensionsWindow.js:158 msgid "translator-credits" msgstr "თარგმანი-შესრულებულია" #: subprojects/extensions-app/js/extensionsWindow.js:203 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "%d გაფართოება განახლდება შემდეგი შემოსვლისას." #: subprojects/extensions-app/data/ui/extension-row.ui:22 msgid "Error Details" msgstr "შეცდომის დეტალები" #: subprojects/extensions-app/data/ui/extension-row.ui:62 msgid "Updates Details" msgstr "განახლების დეტალები" #: subprojects/extensions-app/data/ui/extension-row.ui:72 msgid "" "A new version of this extension is ready and will be loaded on next login." msgstr "ამ გაფართოების ახალი ვერსია მზადაა და შემდეგი შემოსვლისას ჩაიტვირთება." #: subprojects/extensions-app/data/ui/extension-row.ui:104 msgid "Extension Details" msgstr "გაფართოების დეტალები" #: subprojects/extensions-app/data/ui/extension-row.ui:192 msgid "_Website" msgstr "_ვებსაიტი" #: subprojects/extensions-app/data/ui/extension-row.ui:219 msgid "_Settings" msgstr "_მორგება" #: subprojects/extensions-app/data/ui/extension-row.ui:246 msgid "_Remove…" msgstr "_წაშლა…" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Keyboard Shortcuts" msgstr "კლავიატურის მალსახმობები" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "გაფართოებების შესახებ" #: subprojects/extensions-app/data/ui/extensions-window.ui:64 msgid "Main Menu" msgstr "მთავარი მენიუ" #: subprojects/extensions-app/data/ui/extensions-window.ui:106 msgid "Search extensions" msgstr "გაფართოებების ძიება" #: subprojects/extensions-app/data/ui/extensions-window.ui:134 msgid "_Extensions" msgstr "_გაფართოებები" #: subprojects/extensions-app/data/ui/extensions-window.ui:139 msgid "More Information" msgstr "მეტი ინფორმაცია" #: subprojects/extensions-app/data/ui/extensions-window.ui:151 msgid "" "Extensions can cause performance and stability issues. It is recommended to " "disable all extensions if you experience problems with your system." msgstr "" "გაფართოებებს წარმადობისა და სტაბილურობის პრობლემები შეუძლიათ, გამოიწვიონ. " "რეკომენდებულია, გამორთოთ გაფართოებები, თუ სისტემასთან პრობლემები დაგეწყებათ." #: subprojects/extensions-app/data/ui/extensions-window.ui:178 msgid "User Extensions" msgstr "მომხმარებლის გაფართოებები" #: subprojects/extensions-app/data/ui/extensions-window.ui:198 msgid "System Extensions" msgstr "სისტემური გაფართოებები" #: subprojects/extensions-app/data/ui/extensions-window.ui:233 msgid "Search Results" msgstr "ძებნის შედეგები" #: subprojects/extensions-app/data/ui/extensions-window.ui:252 msgid "No Results Found" msgstr "შედეგების გარეშე" #: subprojects/extensions-app/data/ui/extensions-window.ui:253 msgid "Try a different search" msgstr "სცადეთ, სხვანაირად მოძებნოთ" #: subprojects/extensions-app/data/ui/extensions-window.ui:264 msgid "No Installed Extensions" msgstr "არცერთი გაფართოება დაყენებული არაა" #: subprojects/extensions-app/data/ui/extensions-window.ui:265 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" "გაფართოებების საპოვნელად და დასამატებლად ეწვიეთ ვებგვერდს extensions.gnome.org." #: subprojects/extensions-app/data/ui/extensions-window.ui:276 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" "სამწუხაროდ დაყენებული გაფართოებების სიის მიღება შეუძლებელია. დარწმუნდით, რომ " "შეხვედით GNOME-ში და თავიდან სცადეთ." #: subprojects/extensions-app/data/ui/help-overlay.ui:9 msgctxt "shortcut window" msgid "General" msgstr "ზოგადი" #: subprojects/extensions-app/data/ui/help-overlay.ui:12 msgctxt "shortcut window" msgid "Open Menu" msgstr "მენიუს გახსნა" #: subprojects/extensions-app/data/ui/help-overlay.ui:18 msgctxt "shortcut window" msgid "Toggle Search" msgstr "ძებნის გადართვა" #: subprojects/extensions-app/data/ui/help-overlay.ui:24 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "მალსახმობების ჩვენება" #: subprojects/extensions-app/data/ui/help-overlay.ui:30 msgctxt "shortcut window" msgid "Quit" msgstr "გასვლა" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:284 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "%s-ში ახალი გაფართოება წარმატებით შეიქმნა.\n" #: subprojects/extensions-tool/src/command-create.c:376 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" "სახელები ძალიან მოკლე უნდა იყოს (აღწერა).\n" "მაგალითები: %s" #: subprojects/extensions-tool/src/command-create.c:382 #: subprojects/extensions-tool/src/main.c:243 msgid "Name" msgstr "სახელი" #: subprojects/extensions-tool/src/command-create.c:396 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" "აღწერა ერთწინადადებიანი აღწერაა, რას აკეთებს ეს გაფართოება.\n" "მაგალითად: %s" #: subprojects/extensions-tool/src/command-create.c:402 #: subprojects/extensions-tool/src/main.c:246 msgid "Description" msgstr "აღწერა" #: subprojects/extensions-tool/src/command-create.c:416 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" "UUID გლობალურად-უნიკალური იდენტიფიკატორია თქვენი გაფართოებისთვის.\n" "უნდა იყოს ელფოსტის მისამართის ფორმატში (clicktofocus@janedoe.example.com)\n" #: subprojects/extensions-tool/src/command-create.c:443 msgid "Choose one of the available templates:\n" msgstr "აირჩიეთ ერთერთი ხელმისაწვდომის შაბლონი:\n" #: subprojects/extensions-tool/src/command-create.c:457 msgid "Template" msgstr "ნიმუში" #: subprojects/extensions-tool/src/command-create.c:515 msgid "The unique identifier of the new extension" msgstr "ახალ გაფართოებების UID" #: subprojects/extensions-tool/src/command-create.c:518 msgid "NAME" msgstr "სახელი" #: subprojects/extensions-tool/src/command-create.c:519 msgid "The user-visible name of the new extension" msgstr "ახალი გაფართოების სასიამოვნოდ დასანახი სახელი" #: subprojects/extensions-tool/src/command-create.c:521 msgid "DESCRIPTION" msgstr "აღწერა" #: subprojects/extensions-tool/src/command-create.c:523 msgid "A short description of what the extension does" msgstr "ამ გაფართოების მოკლე აღწერა" #: subprojects/extensions-tool/src/command-create.c:525 #: subprojects/extensions-tool/src/command-pack.c:455 msgid "DOMAIN" msgstr "დომენი" #: subprojects/extensions-tool/src/command-create.c:527 msgid "The gettext domain used by the extension" msgstr "გაფართოების მერ გამოყენებული gettext-ის დომენი" #: subprojects/extensions-tool/src/command-create.c:529 #: subprojects/extensions-tool/src/command-pack.c:448 msgid "SCHEMA" msgstr "სქემა" #: subprojects/extensions-tool/src/command-create.c:531 msgid "The GSettings schema used by the extension" msgstr "გაფართოების მიერ გამოყენებული GSettngs-ის სქემა" #: subprojects/extensions-tool/src/command-create.c:534 msgid "TEMPLATE" msgstr "ნიმუში" #: subprojects/extensions-tool/src/command-create.c:535 msgid "The template to use for the new extension" msgstr "ახალ გაფართოებებთან გამოსაყენებელი შაბლონი" #: subprojects/extensions-tool/src/command-create.c:538 msgid "Include prefs.js template" msgstr "ჩაისმება prefs.js შაბლონი" #: subprojects/extensions-tool/src/command-create.c:544 msgid "Enter extension information interactively" msgstr "გაფართოების ინფორმაციის ინტერაქტიურად შეყვანა" #: subprojects/extensions-tool/src/command-create.c:552 msgid "Create a new extension" msgstr "ახალი გაფართოების შექმნა" #: subprojects/extensions-tool/src/command-create.c:570 #: subprojects/extensions-tool/src/command-list.c:190 msgid "Unknown arguments" msgstr "უცნობი არგუმენტები" #: subprojects/extensions-tool/src/command-create.c:595 msgid "UUID, name and description are required" msgstr "საჭიროა UUID, სახელი და აღწერა" #: subprojects/extensions-tool/src/command-disable.c:62 #: subprojects/extensions-tool/src/command-enable.c:62 #, c-format msgid "Extension “%s” does not exist\n" msgstr "გაფართოება %s არ არსებობს\n" #: subprojects/extensions-tool/src/command-disable.c:98 msgid "Disable an extension" msgstr "გაფართოების გამორთვა" #: subprojects/extensions-tool/src/command-disable.c:116 #: subprojects/extensions-tool/src/command-enable.c:116 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "შეიყვანეთ UUID" #: subprojects/extensions-tool/src/command-disable.c:121 #: subprojects/extensions-tool/src/command-enable.c:121 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "შეყვანილია ერთზე მეტი UUID" #: subprojects/extensions-tool/src/command-enable.c:98 msgid "Enable an extension" msgstr "გაფართოების ჩართვა" #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:66 #: subprojects/extensions-tool/src/main.c:150 msgid "Failed to connect to GNOME Shell\n" msgstr "GNOME -ის გარსთან დაკავშირების შეცდომა\n" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:159 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "გაფართოება %s არ არსებობს\n" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "გაფართოების შესახებ ინფორმაციის ჩვენება" #: subprojects/extensions-tool/src/command-install.c:190 msgid "Overwrite an existing extension" msgstr "არსებულ გაფართოების გადაწერა" #: subprojects/extensions-tool/src/command-install.c:192 msgid "EXTENSION_BUNDLE" msgstr "გაფართოების პაკეტი" #: subprojects/extensions-tool/src/command-install.c:201 msgid "Install an extension bundle" msgstr "გაფართოების პაკეტის დაყენება" #: subprojects/extensions-tool/src/command-install.c:219 msgid "No extension bundle specified" msgstr "გაფართოების პაკეტი მითითებული არაა" #: subprojects/extensions-tool/src/command-install.c:225 msgid "More than one extension bundle specified" msgstr "მითითებულია ერთზე მეტი გაფართოების პაკეტი" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show user-installed extensions" msgstr "მომხმარებლის მიერ დაყენებული გაფართოებების ჩვენება" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show system-installed extensions" msgstr "სისტემის მიერ დაყენებული გაფართოებების ჩვენება" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Show enabled extensions" msgstr "ჩართული გაფართოებების ჩვენება" #: subprojects/extensions-tool/src/command-list.c:149 msgid "Show disabled extensions" msgstr "გამორთული გაფართოებების ჩვენება" #: subprojects/extensions-tool/src/command-list.c:152 msgid "Show extensions in active state" msgstr "აქტიურ მდგომარეობაში მყოფი გაფართოებების ჩვენება" #: subprojects/extensions-tool/src/command-list.c:155 msgid "Show extensions in inactive state" msgstr "არააქტიურ მდგომარეობაში მყოფი გაფართოებების ჩვენება" #: subprojects/extensions-tool/src/command-list.c:158 msgid "Show extensions with preferences" msgstr "მორგებადი გაფართოებების ჩვენება" #: subprojects/extensions-tool/src/command-list.c:161 msgid "Show extensions with updates" msgstr "განახლებადი გაფართოებების ჩვენება" #: subprojects/extensions-tool/src/command-list.c:164 msgid "Print extension details" msgstr "გაფართოების შესახებ ინფორმაციის დაბეჭდვა" #: subprojects/extensions-tool/src/command-list.c:172 msgid "List installed extensions" msgstr "დაყენებული გაფართოებების სია" #: subprojects/extensions-tool/src/command-pack.c:444 msgid "FILE" msgstr "ფაილი" #: subprojects/extensions-tool/src/command-pack.c:445 msgid "Additional source to include in the bundle" msgstr "დამატებით წყაროები ნაკრებში ჩასართავად" #: subprojects/extensions-tool/src/command-pack.c:449 msgid "A GSettings schema that should be included" msgstr "GSettings-ის თემა, რომელსაც უნდა შეიცავდეს" #: subprojects/extensions-tool/src/command-pack.c:451 #: subprojects/extensions-tool/src/command-pack.c:462 msgid "DIRECTORY" msgstr "საქაღალდე" #: subprojects/extensions-tool/src/command-pack.c:453 msgid "The directory where translations are found" msgstr "საქაღალდე, სადაც თარგმანები მოიპოვება" #: subprojects/extensions-tool/src/command-pack.c:457 msgid "The gettext domain to use for translations" msgstr "Gettext-ის დომენი თარგმანებითვის" #: subprojects/extensions-tool/src/command-pack.c:460 msgid "Overwrite an existing pack" msgstr "არსებული პაკეტის თავზე გადაწერა" #: subprojects/extensions-tool/src/command-pack.c:464 msgid "The directory where the pack should be created" msgstr "საქაღალდე, სადაც პაკეტი შეიქმნება" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "SOURCE_DIRECTORY" msgstr "საწყისი_საქაღალდე" #: subprojects/extensions-tool/src/command-pack.c:475 msgid "Create an extension bundle" msgstr "გაფართოების პაკეტის შექმნა" #: subprojects/extensions-tool/src/command-pack.c:495 msgid "More than one source directory specified" msgstr "მითითებულია ერთზე მეტი საწყისი საქაღალდე" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "გაფართოებას \"%s\" პარამეტრები არ გააჩნია\n" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "პარამეტრების გახსნის შეცდომა გაფართოებისთვი \"%s\": %s\n" #: subprojects/extensions-tool/src/command-prefs.c:87 msgid "Opens extension preferences" msgstr "გაფართოების მორგების ფანჯარა" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "გაფართოების საწყის მდგომარეობაში დაბრუნება" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "სისტემური გაფართოებების წაშლა შეუძლებელია\n" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "\"%s\"-ის წაშლის შეცდომა\n" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "გაფართოების წაშლა" #: subprojects/extensions-tool/src/main.c:76 msgid "Do not print error messages" msgstr "არ დაბეჭდო შეცდომები" #: subprojects/extensions-tool/src/main.c:249 msgid "Path" msgstr "მისამართი" #: subprojects/extensions-tool/src/main.c:252 msgid "URL" msgstr "URL" #: subprojects/extensions-tool/src/main.c:255 msgid "Original author" msgstr "საწყისი ავტორი" #: subprojects/extensions-tool/src/main.c:261 #: subprojects/extensions-tool/src/main.c:263 #: subprojects/extensions-tool/src/main.c:265 msgid "Version" msgstr "ვერსია" #: subprojects/extensions-tool/src/main.c:268 msgid "Enabled" msgstr "ჩაირთო" #: subprojects/extensions-tool/src/main.c:268 msgid "Yes" msgstr "დიახ" #: subprojects/extensions-tool/src/main.c:268 msgid "No" msgstr "არა" #: subprojects/extensions-tool/src/main.c:271 msgid "State" msgstr "მდგომარეობა" #: subprojects/extensions-tool/src/main.c:309 msgid "“version” takes no arguments" msgstr "\"version\"-ს არგუმენტები არ აქვს" #: subprojects/extensions-tool/src/main.c:311 #: subprojects/extensions-tool/src/main.c:331 msgid "Usage:" msgstr "გამოყენება:" #: subprojects/extensions-tool/src/main.c:314 msgid "Print version information and exit." msgstr "ვერსიის ინფორმაციის გამოტანა და გასვლა." #: subprojects/extensions-tool/src/main.c:329 #: subprojects/extensions-tool/src/main.c:332 msgid "COMMAND" msgstr "ბრძანება" #: subprojects/extensions-tool/src/main.c:332 msgid "[ARGS…]" msgstr "[არგუმენტები…]" #: subprojects/extensions-tool/src/main.c:334 msgid "Commands:" msgstr "ბრძანებები:" #: subprojects/extensions-tool/src/main.c:335 msgid "Print help" msgstr "დახმარების ჩვენება" #: subprojects/extensions-tool/src/main.c:337 msgid "Enable extension" msgstr "გაფართოების ჩართვა" #: subprojects/extensions-tool/src/main.c:338 msgid "Disable extension" msgstr "გაფართოების გამორთვა" #: subprojects/extensions-tool/src/main.c:339 msgid "Reset extension" msgstr "გაფართოების საწყის მდგომარეობაში დაბრუნება" #: subprojects/extensions-tool/src/main.c:340 msgid "Uninstall extension" msgstr "გაფართოების წაშლა" #: subprojects/extensions-tool/src/main.c:341 msgid "List extensions" msgstr "გაფართოებების სია" #: subprojects/extensions-tool/src/main.c:342 #: subprojects/extensions-tool/src/main.c:343 msgid "Show extension info" msgstr "გაფართოების შესახებ ინფორმაციის ჩვენება" #: subprojects/extensions-tool/src/main.c:344 msgid "Open extension preferences" msgstr "გაფართოების მორგება" #: subprojects/extensions-tool/src/main.c:345 msgid "Create extension" msgstr "გაფართოების შექმნა" #: subprojects/extensions-tool/src/main.c:346 msgid "Package extension" msgstr "გაფართოების პაკეტად გადაქცევა" #: subprojects/extensions-tool/src/main.c:347 msgid "Install extension bundle" msgstr "გაფართოების პაკეტის დაყენება" #: subprojects/extensions-tool/src/main.c:349 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "დეტალური დახმარების მისაღებად გამოიყენეთ %s\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "სუფთა" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "ცარიელი გაფართოება" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "ინდიკატორი" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "ზედა ზოლში ხატულის დამატება" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:4 msgid "Quick Settings Item" msgstr "სწრაფი მორგების ელემენტი" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:5 msgid "Add an item to quick settings" msgstr "სწრაფი მორგების მენიუში ელემენტის ჩამატება" #. translators: #. * The device has been disabled #: subprojects/gvc/gvc-mixer-control.c:1872 msgid "Disabled" msgstr "გამოირთო" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1879 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u გამოტანა" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1889 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u შეტანა" #: subprojects/gvc/gvc-mixer-control.c:2872 msgid "System Sounds" msgstr "სისტემური ხმები" #~ msgid "Move Titlebar Onscreen" #~ msgstr "სათაურის ზოლის ეკრანზე გადატანა" #~ msgid "Stop conflicting session dialog closed" #~ msgstr "კონფლიქტური სესიის გაჩერების დიალოგი დაიხურა" #, javascript-format #~ msgid "Try to login again to start a session for user %s." #~ msgstr "სცადეთ, თავიდან შეხვიდეთ, რომ დაიწყოთ სესია მომხმარებლისთვის %s." #, javascript-format #~ msgid "%s is now known as %s" #~ msgstr "%s-ს ახლა ჰქვია %s" #~ msgid "Network Manager" #~ msgstr "ქსელის მმართველი" #~ msgid "System Information" #~ msgstr "ინფორმაცის სისტემის შესახებ" #~ msgid "Thunderbolt" #~ msgstr "Thunderbolt" #~ msgid "Disabling" #~ msgstr "გათიშვა" #~ msgid "Enabling" #~ msgstr "ჩართვა" #~ msgid "No Matches" #~ msgstr "დათხვევა არ არსებობს" #~ msgid "The extension had an error" #~ msgstr "გაფართოების შეცდომა" #~ msgid "The extension can be updated" #~ msgstr "გაფართოება შეიძლება განახლდეს" #~ msgid "Help" #~ msgstr "დახმარება" #~ msgid "Manually Installed" #~ msgstr "ხელით დაყენებული" #~ msgid "Built-In" #~ msgstr "ჩაშენებული" #~ msgid "Extension Updates Ready" #~ msgstr "გაფართოების განახლება მზადაა" #~ msgid "No Thanks" #~ msgstr "არა, მადლობა" #, javascript-format #~ msgid "%d %%" #~ msgstr "%d %%" #~ msgid "Screenshot / Screencast" #~ msgstr "ეკრანის ანაბეჭდი / ჩანაწერი" #~ msgid "Power Profiles" #~ msgstr "კვების პროფილები" #~ msgid "Evolution Calendar" #~ msgstr "Evolution-ის კალენდარი" #~ msgid "Applications" #~ msgstr "აპლიკაციები" #, javascript-format #~ msgid "Unable to start %s" #~ msgstr "%s-ის გაშვების შეცდომა" #, javascript-format #~ msgid "Couldn’t find the %s application" #~ msgstr "აპლიკაცია %s ვერ ვიპოვე" #~ msgid "Attach modal dialog to the parent window" #~ msgstr "მოდალური ფანჯრის მშობელ ფანჯარაზე მიმაგრება" #~ msgid "Workspaces are managed dynamically" #~ msgstr "სამუშაო სივრცეები დინამიკურად იმართება" #~ msgid "Workspaces only on primary monitor" #~ msgstr "სამუშაო მაგიდები მხოლოდ აქტიურ ეკრანზე" #~ msgid "Region & Language Settings" #~ msgstr "ქვეყნისა და ენის მორგება" #~ msgid "" #~ "Whether the default Bluetooth adapter had set up devices associated to it" #~ msgstr "" #~ "აქვს თუ არა Bluetooth-ის ნაგულისხმევ ადაპტერს ერთი მოწყობილობა მაინც" #~ msgid "Log Out" #~ msgstr "გასვლა" #~ msgid "Bluetooth On" #~ msgstr "Bluetooth ჩართულია" #~ msgid "Bluetooth Off" #~ msgstr "Bluetooth გამორთულია" #~ msgid "Location In Use" #~ msgstr "მდებარეობის პოვნა გამოიყენება" #~ msgid "Location Disabled" #~ msgstr "მდებარეობის პოვნა გამორთულია" #, javascript-format #~ msgid "%s Unmanaged" #~ msgstr "%s უმართავი" #, javascript-format #~ msgid "%s Connecting" #~ msgstr "%s ერთდება" #, javascript-format #~ msgid "%s Requires Authentication" #~ msgstr "%s-ს სჭირდება ავთენტიკაცია" #, javascript-format #~ msgid "Firmware Missing For %s" #~ msgstr "პროგრამული ფაილები აკლია %s-თვის" #, javascript-format #~ msgid "%s Unavailable" #~ msgstr "%s ხელმიუწვდომელია" #, javascript-format #~ msgid "%s Connection Failed" #~ msgstr "%s კავშირის შეცდომა" #, javascript-format #~ msgid "%s Hardware Disabled" #~ msgstr "%s აპარატურა გათიშულია" #, javascript-format #~ msgid "%s Disabled" #~ msgstr "%s გათიშულია" #~ msgid "Connect to Internet" #~ msgstr "ინტერნეტთან მიერთება" #~ msgid "Airplane Mode is On" #~ msgstr "თვითმფრინავის რეჟიმი ჩართულია" #~ msgid "Wi-Fi is disabled when airplane mode is on." #~ msgstr "როცა თვითმფრინავის რეჟიმი ჩართულია, Wi-Fi ითიშება." #~ msgid "Turn Off Airplane Mode" #~ msgstr "თვითმფრინავის რეჟმის გამორთვა" #~ msgid "Wi-Fi is Off" #~ msgstr "Wi-Fi გამორთულია" #~ msgid "Wi-Fi needs to be turned on in order to connect to a network." #~ msgstr "ქსელთან მისაერთებლად საჭიროა ჩართოთ Wi-Fi." #~ msgid "Turn On Wi-Fi" #~ msgstr "Wi-Fi-ის ჩართვა" #~ msgid "Select a network" #~ msgstr "აირჩიეთ ქსელი" #~ msgid "Use hardware switch to turn off" #~ msgstr "გამოსართავად გამოიყენეთ აპარატურული გადამრთველი" #~ msgid "Select Network" #~ msgstr "აირჩიეთ ქსელი" #~ msgid "Wi-Fi Settings" #~ msgstr "Wi-Fi-ის მორგება" #, javascript-format #~ msgid "%s Not Connected" #~ msgstr "%s მიერთებული არაა" #~ msgid "unknown" #~ msgstr "უცნობი" #~ msgid "connecting…" #~ msgstr "დაკავშირება…" #~ msgid "authentication required" #~ msgstr "საჭიროა ავთენტიკაცია" #~ msgid "connection failed" #~ msgstr "შეერთების შეცდომა" #~ msgid "VPN Off" #~ msgstr "VPN გამორთულია" #, javascript-format #~ msgid "%s Wi-Fi Connection" #~ msgid_plural "%s Wi-Fi Connections" #~ msgstr[0] "%s Wi-Fi კავშირი" #~ msgid "Night Light Disabled" #~ msgstr "ღამის სინათლე გამორთულია" #~ msgid "Resume" #~ msgstr "გაგრძელება" #~ msgid "Disable Until Tomorrow" #~ msgstr "ხვალამდე გამორთვა" #~ msgid "Fully Charged" #~ msgstr "სრულად დატენილი" #~ msgid "Not Charging" #~ msgstr "არ იტენება" #~ msgid "Estimating…" #~ msgstr "დაახლოებით…" #, javascript-format #~ msgid "%d∶%02d Remaining (%d %%)" #~ msgstr "%d∶%02d დარჩენილია (%d %%)" #, javascript-format #~ msgid "%d∶%02d Until Full (%d %%)" #~ msgstr "%d∶%02d სრულამდე (%d %%)" #~ msgid "Screen is Being Shared" #~ msgstr "ეკრანი ზიარდება" #~ msgid "Turn off" #~ msgstr "გამორთვა" #~ msgid "Lock" #~ msgstr "ჩაკეტვა" #~ msgid "Power Off / Log Out" #~ msgstr "გამორთვა / გასვლა" 07070100000242000081A40000000000000000000000016712993F00014B8B000000000000000000000000000000000000001B00000000gnome-shell-47.1/po/kab.po# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # ButterflyOfFire , 2024. # msgid "" msgstr "" "Project-Id-Version: unnamed project\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues/\n" "POT-Creation-Date: 2024-03-23 15:09+0000\n" "PO-Revision-Date: 2024-04-13 15:27+0100\n" "Last-Translator: ButterflyOfFire \n" "Language-Team: Kabyle <>\n" "Language: kab\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: Gtranslator 41.0\n" "X-DL-Team: kab\n" "X-DL-Module: gnome-shell\n" "X-DL-Branch: main\n" "X-DL-Domain: po\n" "X-DL-State: None\n" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "Imsinḍen" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate pinned app 1" msgstr "" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate pinned app 2" msgstr "" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate pinned app 3" msgstr "" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate pinned app 4" msgstr "" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate pinned app 5" msgstr "" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate pinned app 6" msgstr "" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate pinned app 7" msgstr "" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate pinned app 8" msgstr "" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate pinned app 9" msgstr "" #: data/50-gnome-shell-launchers.xml:46 msgid "Open new window of pinned app 1" msgstr "" #: data/50-gnome-shell-launchers.xml:50 msgid "Open new window of pinned app 2" msgstr "" #: data/50-gnome-shell-launchers.xml:54 msgid "Open new window of pinned app 3" msgstr "" #: data/50-gnome-shell-launchers.xml:58 msgid "Open new window of pinned app 4" msgstr "" #: data/50-gnome-shell-launchers.xml:62 msgid "Open new window of pinned app 5" msgstr "" #: data/50-gnome-shell-launchers.xml:66 msgid "Open new window of pinned app 6" msgstr "" #: data/50-gnome-shell-launchers.xml:70 msgid "Open new window of pinned app 7" msgstr "" #: data/50-gnome-shell-launchers.xml:74 msgid "Open new window of pinned app 8" msgstr "" #: data/50-gnome-shell-launchers.xml:78 msgid "Open new window of pinned app 9" msgstr "" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2276 msgid "Screenshots" msgstr "Tuṭṭfiwin n wegdil" #: data/50-gnome-shell-screenshots.xml:9 #: data/org.gnome.shell.gschema.xml.in:287 msgid "Take a screenshot interactively" msgstr "" #: data/50-gnome-shell-screenshots.xml:12 #: data/org.gnome.shell.gschema.xml.in:299 msgid "Take a screenshot" msgstr "" #: data/50-gnome-shell-screenshots.xml:15 #: data/org.gnome.shell.gschema.xml.in:295 msgid "Take a screenshot of a window" msgstr "" #: data/50-gnome-shell-screenshots.xml:18 #: data/org.gnome.shell.gschema.xml.in:291 msgid "Record a screencast interactively" msgstr "" #: data/50-gnome-shell-system.xml:6 js/ui/messageTray.js:1293 msgid "System" msgstr "Anagraw" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "Sken tabdart n telɣut" #: data/50-gnome-shell-system.xml:12 msgid "Open the quick settings menu" msgstr "Ldi umuɣ arurad iɣewwaṛen n usnas" #: data/50-gnome-shell-system.xml:15 msgid "Focus the active notification" msgstr "Asaḍas ɣef telɣut turmidt" #: data/50-gnome-shell-system.xml:18 msgid "Show the overview" msgstr "Sken-d agzul" #: data/50-gnome-shell-system.xml:21 msgid "Show all apps" msgstr "Sken-d akk isnasen" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "GNOME Shell" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "Sens iseɣzaf n useqdac" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" #: data/org.gnome.shell.gschema.xml.in:45 msgid "Allow extension installation" msgstr "" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "Allow users to install extensions in their home folder. If disabled, the " "InstallRemoteExtension D-Bus method will fail, and extensions are only " "loaded from system directories on startup. It does not affect extensions " "that are already loaded, so a change only takes full effect on the next " "login." msgstr "" #: data/org.gnome.shell.gschema.xml.in:56 msgid "Disables the validation of extension version compatibility" msgstr "" #: data/org.gnome.shell.gschema.xml.in:57 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" #: data/org.gnome.shell.gschema.xml.in:65 msgid "List of desktop file IDs for favorite applications" msgstr "" #: data/org.gnome.shell.gschema.xml.in:66 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" #: data/org.gnome.shell.gschema.xml.in:73 msgid "History for command (Alt-F2) dialog" msgstr "" #. Translators: looking glass is a debugger and inspector tool, see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/docs/looking-glass.md #: data/org.gnome.shell.gschema.xml.in:78 msgid "History for the looking glass dialog" msgstr "" #: data/org.gnome.shell.gschema.xml.in:82 msgid "Always show the “Log Out” action in the system menu" msgstr "" #: data/org.gnome.shell.gschema.xml.in:83 msgid "" "This key overrides the automatic hiding of the “Log out” action in the " "system menu for logged-in situations where there is a single, local, non-" "system user and only a single available session type (e.g. GNOME on Wayland)." msgstr "" #: data/org.gnome.shell.gschema.xml.in:92 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" #: data/org.gnome.shell.gschema.xml.in:93 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" #: data/org.gnome.shell.gschema.xml.in:102 msgid "The last selected non-default power profile" msgstr "" #: data/org.gnome.shell.gschema.xml.in:103 msgid "" "Some systems support more than two power profiles. In order to still support " "toggling between two profiles, this key records the last selected non-" "default profile." msgstr "" #: data/org.gnome.shell.gschema.xml.in:111 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "" #: data/org.gnome.shell.gschema.xml.in:112 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can " "be used to effectively disable the dialog." msgstr "" #: data/org.gnome.shell.gschema.xml.in:145 msgid "Layout of the app picker" msgstr "" #: data/org.gnome.shell.gschema.xml.in:146 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" msgstr "" #: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:172 msgid "Keybinding to shift between overview states" msgstr "" #: data/org.gnome.shell.gschema.xml.in:166 msgid "Keybinding to shift between session, window picker and app grid" msgstr "" #: data/org.gnome.shell.gschema.xml.in:173 msgid "Keybinding to shift between app grid, window picker and session" msgstr "" #: data/org.gnome.shell.gschema.xml.in:179 msgid "Keybinding to open the “Show Applications” view" msgstr "" #: data/org.gnome.shell.gschema.xml.in:180 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "" #: data/org.gnome.shell.gschema.xml.in:187 msgid "Keybinding to open the overview" msgstr "" #: data/org.gnome.shell.gschema.xml.in:188 msgid "Keybinding to open the Activities Overview." msgstr "" #: data/org.gnome.shell.gschema.xml.in:194 msgid "Keybinding to toggle the visibility of the notification list" msgstr "" #: data/org.gnome.shell.gschema.xml.in:195 msgid "Keybinding to toggle the visibility of the notification list." msgstr "" #: data/org.gnome.shell.gschema.xml.in:201 msgid "Keybinding to toggle the quick settings menu" msgstr "" #: data/org.gnome.shell.gschema.xml.in:202 msgid "Keybinding to toggle the quick settings menu." msgstr "" #: data/org.gnome.shell.gschema.xml.in:208 msgid "Keybinding to focus the active notification" msgstr "" #: data/org.gnome.shell.gschema.xml.in:209 msgid "Keybinding to focus the active notification." msgstr "" #: data/org.gnome.shell.gschema.xml.in:215 msgid "Switch to application 1" msgstr "Senfel s asnas 1" #: data/org.gnome.shell.gschema.xml.in:219 msgid "Switch to application 2" msgstr "Senfel s asnas wis 2" #: data/org.gnome.shell.gschema.xml.in:223 msgid "Switch to application 3" msgstr "Senfel s asnas wis 3" #: data/org.gnome.shell.gschema.xml.in:227 msgid "Switch to application 4" msgstr "Senfel s asnas wis 4" #: data/org.gnome.shell.gschema.xml.in:231 msgid "Switch to application 5" msgstr "Senfel s asnas wis 5" #: data/org.gnome.shell.gschema.xml.in:235 msgid "Switch to application 6" msgstr "Senfel s asnas wis 6" #: data/org.gnome.shell.gschema.xml.in:239 msgid "Switch to application 7" msgstr "Senfel s asnas wis 7" #: data/org.gnome.shell.gschema.xml.in:243 msgid "Switch to application 8" msgstr "Senfel s asnas wis 8" #: data/org.gnome.shell.gschema.xml.in:247 msgid "Switch to application 9" msgstr "Senfel s asnas wis 9" #: data/org.gnome.shell.gschema.xml.in:251 msgid "Open a new instance of application 1" msgstr "" #: data/org.gnome.shell.gschema.xml.in:255 msgid "Open a new instance of application 2" msgstr "" #: data/org.gnome.shell.gschema.xml.in:259 msgid "Open a new instance of application 3" msgstr "" #: data/org.gnome.shell.gschema.xml.in:263 msgid "Open a new instance of application 4" msgstr "" #: data/org.gnome.shell.gschema.xml.in:267 msgid "Open a new instance of application 5" msgstr "" #: data/org.gnome.shell.gschema.xml.in:271 msgid "Open a new instance of application 6" msgstr "" #: data/org.gnome.shell.gschema.xml.in:275 msgid "Open a new instance of application 7" msgstr "" #: data/org.gnome.shell.gschema.xml.in:279 msgid "Open a new instance of application 8" msgstr "" #: data/org.gnome.shell.gschema.xml.in:283 msgid "Open a new instance of application 9" msgstr "" #: data/org.gnome.shell.gschema.xml.in:308 #: data/org.gnome.shell.gschema.xml.in:335 msgid "Limit switcher to current workspace." msgstr "" #: data/org.gnome.shell.gschema.xml.in:309 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" #: data/org.gnome.shell.gschema.xml.in:326 msgid "The application icon mode." msgstr "" #: data/org.gnome.shell.gschema.xml.in:327 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-" "only” (shows only the application icon) or “both”." msgstr "" #: data/org.gnome.shell.gschema.xml.in:336 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" #: data/org.gnome.shell.gschema.xml.in:346 msgid "Locations" msgstr "Adigen" #: data/org.gnome.shell.gschema.xml.in:347 msgid "The locations to show in world clocks" msgstr "" #: data/org.gnome.shell.gschema.xml.in:357 msgid "Automatic location" msgstr "Adeg s wudem awurman" #: data/org.gnome.shell.gschema.xml.in:358 msgid "Whether to fetch the current location or not" msgstr "" #: data/org.gnome.shell.gschema.xml.in:365 msgid "Location" msgstr "Adig" #: data/org.gnome.shell.gschema.xml.in:366 msgid "The location for which to show a forecast" msgstr "" #. Keep in sync with subprojects/extensions-app #: data/org.gnome.Shell.Extensions.desktop.in.in:5 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/data/ui/extensions-window.ui:57 msgid "Extensions" msgstr "Isiɣzaf" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "Tuqqna ɣer uẓeṭṭa" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:277 msgid "Something’s gone wrong" msgstr "Yella wacu ur neddi ara" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "Talqayt tatiknikant" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "Asebter agejdan" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 msgid "Visit extension homepage" msgstr "Rzu s asmel n useɣzef" #: js/gdm/authPrompt.js:151 js/gdm/loginDialog.js:466 #: js/ui/audioDeviceSelection.js:66 js/ui/components/networkAgent.js:114 #: js/ui/components/polkitAgent.js:146 js/ui/endSessionDialog.js:438 #: js/ui/extensionDownloader.js:278 js/ui/shellMountOperation.js:384 #: js/ui/shellMountOperation.js:394 msgid "Cancel" msgstr "Sefsex" #: js/gdm/authPrompt.js:317 js/ui/components/networkAgent.js:214 #: js/ui/components/networkAgent.js:234 js/ui/components/networkAgent.js:266 #: js/ui/components/networkAgent.js:299 js/ui/components/networkAgent.js:338 #: js/ui/components/networkAgent.js:351 js/ui/components/polkitAgent.js:288 #: js/ui/shellMountOperation.js:334 msgid "Password" msgstr "Awal n uɛeddi" #: js/gdm/loginDialog.js:327 msgid "Choose Session" msgstr "Fren tiɣimit" #. Translators: is running for #: js/gdm/loginDialog.js:424 #, javascript-format msgid "" "Remote login is not possible because a remote session is already running for " "%s. To login remotely, you must log out from the remote session or force " "stop it." msgstr "" #. Translators: is running for #: js/gdm/loginDialog.js:427 #, javascript-format msgid "" "Login is not possible because a remote session is already running for %s. To " "login, you must log out from the remote session or force stop it." msgstr "" #. Translators: is running for #: js/gdm/loginDialog.js:430 #, javascript-format msgid "" "Remote login is not possible because a local session is already running for " "%s. To login remotely, you must log out from the local session or force stop " "it." msgstr "" #. Translators: is running for #: js/gdm/loginDialog.js:433 #, javascript-format msgid "" "Login is not possible because a session is already running for %s. To login, " "you must log out from the session or force stop it." msgstr "" #: js/gdm/loginDialog.js:442 msgid "Session Already Running" msgstr "" #: js/gdm/loginDialog.js:454 msgid "" "Force stopping will quit any running apps and processes, and could result in " "data loss." msgstr "" #: js/gdm/loginDialog.js:474 msgid "Force Stop" msgstr "Ḥettem Aḥebbus" #: js/gdm/loginDialog.js:542 msgid "Not listed?" msgstr "Ur d-yettwabder ara?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:1010 #, javascript-format msgid "(e.g., user or %s)" msgstr "(amedya, aseqdac neɣ %s)" #: js/gdm/loginDialog.js:1015 js/ui/components/networkAgent.js:258 #: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:327 msgid "Username" msgstr "Isem n useqdac" #: js/gdm/loginDialog.js:1081 msgid "Login Attempt Timed Out" msgstr "" #: js/gdm/loginDialog.js:1082 msgid "Login took too long, please try again" msgstr "" #: js/gdm/loginDialog.js:1427 msgid "Login Window" msgstr "Asfaylu n usesteb" #: js/gdm/util.js:497 msgid "Authentication error" msgstr "Tuccḍa deg usesteb" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:728 msgid "(or swipe finger across reader)" msgstr "" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:733 msgid "(or place finger on reader)" msgstr "" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:91 msgctxt "search-result" msgid "Power Off" msgstr "Asnusay" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:94 msgid "power off;poweroff;shutdown;halt;stop" msgstr "asnusay;sens;ḥbes;halt;stop" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:99 msgctxt "search-result" msgid "Restart" msgstr "Ales tanekra" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:102 msgid "reboot;restart;" msgstr "ales tanekra;reboot" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:107 msgctxt "search-result" msgid "Lock Screen" msgstr "Sekkeṛ agdil" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:110 msgid "lock screen" msgstr "sekkeṛ agdil" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:115 msgctxt "search-result" msgid "Log Out" msgstr "Ffeɣ" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:118 msgid "logout;log out;sign off" msgstr "ffeɣ;tuffɣa;senser" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:123 msgctxt "search-result" msgid "Suspend" msgstr "Ḥbes di leεḍil" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:126 msgid "suspend;sleep" msgstr "" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:131 msgctxt "search-result" msgid "Switch User" msgstr "Senfel aseqdac" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:134 msgid "switch user" msgstr "senfel aseqdac" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:141 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:146 msgctxt "search-result" msgid "Take a Screenshot" msgstr "Tuṭṭfa n wegdil" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:149 msgid "screenshot;screencast;snip;capture;record" msgstr "" #: js/misc/systemActions.js:249 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "Serreḥ i tuzzya n ugdil" #: js/misc/systemActions.js:250 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "Sekkeṛ tuzzya n ugdil" #: js/misc/util.js:139 msgid "Command not found" msgstr "Ulac taladna" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:179 msgid "Could not parse command:" msgstr "" #: js/misc/util.js:187 #, javascript-format msgid "Execution of “%s” failed:" msgstr "" #: js/misc/dateUtils.js:69 msgid "Just now" msgstr "Tura kan" #: js/misc/dateUtils.js:72 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d n tsedidt aya" msgstr[1] "%d n tsedidin aya" #: js/misc/dateUtils.js:79 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d n usrag aya" msgstr[1] "%d n yisragen aya" #: js/misc/dateUtils.js:85 js/ui/dateMenu.js:185 msgid "Yesterday" msgstr "Iḍeli" #: js/misc/dateUtils.js:88 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d n wass aya" msgstr[1] "%d n wussan aya" #: js/misc/dateUtils.js:95 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d n imalas aya" msgstr[1] "%d n yimalasen" #: js/misc/dateUtils.js:102 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%d n waggur aya" msgstr[1] "%d n wagguren aya" #: js/misc/dateUtils.js:108 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "%d n useggas aya" msgstr[1] "%d n yiseggasen aya" #. Translators: Time in 24h format #: js/misc/dateUtils.js:155 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/dateUtils.js:161 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "Iḍelli, %H:%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/dateUtils.js:167 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/dateUtils.js:173 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%-d %B %Y, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/dateUtils.js:179 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%-d %B %Y, %H∶%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/dateUtils.js:184 msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/dateUtils.js:190 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "Iḍelli, %l:%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/dateUtils.js:196 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/dateUtils.js:202 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%-d %B, %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/dateUtils.js:208 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%-d %B %Y, %l∶%M %p" #: js/portalHelper/main.js:98 msgid "Your connection seems to be secure" msgstr "" #: js/portalHelper/main.js:104 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" #: js/portalHelper/main.js:115 msgid "Hotspot Login" msgstr "" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:45 js/ui/inhibitShortcutsDialog.js:92 msgid "Deny" msgstr "Aggi" #: js/ui/accessDialog.js:46 js/ui/inhibitShortcutsDialog.js:101 msgid "Allow" msgstr "Sireg" #: js/ui/appDisplay.js:1775 msgid "Unnamed Folder" msgstr "Akaram war isem" #: js/ui/appFavorites.js:166 #, javascript-format msgid "%s has been pinned to the dash." msgstr "" #: js/ui/appFavorites.js:199 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "" #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:51 msgid "Open Windows" msgstr "Ldi isfuyla" #: js/ui/appMenu.js:59 msgid "New Window" msgstr "Asfaylu amaynut" #: js/ui/appMenu.js:86 msgid "App Details" msgstr "Talqayt n wesnas" #: js/ui/appMenu.js:102 msgid "Quit" msgstr "Ffeɣ" #: js/ui/appMenu.js:162 js/ui/dash.js:250 msgid "Unpin" msgstr "" #: js/ui/appMenu.js:163 msgid "Pin to Dash" msgstr "" #: js/ui/appMenu.js:180 msgid "Launch using Integrated Graphics Card" msgstr "" #: js/ui/appMenu.js:181 msgid "Launch using Discrete Graphics Card" msgstr "" #: js/ui/audioDeviceSelection.js:46 msgid "Select Audio Device" msgstr "Fren ibenk ameslaw" #: js/ui/audioDeviceSelection.js:61 js/ui/status/volume.js:83 msgid "Sound Settings" msgstr "Iɣewwaren n yimesli" #: js/ui/audioDeviceSelection.js:74 msgid "Headphones" msgstr "Isawaḍen n uqerru" #: js/ui/audioDeviceSelection.js:76 msgid "Headset" msgstr "Kask" #: js/ui/audioDeviceSelection.js:78 js/ui/status/volume.js:358 msgid "Microphone" msgstr "Asawaḍ" #: js/ui/backgroundMenu.js:15 msgid "Change Background…" msgstr "Beddel agilal…" #: js/ui/backgroundMenu.js:17 msgid "Display Settings" msgstr "" #: js/ui/backgroundMenu.js:18 msgid "Settings" msgstr "Iɣewwaṛen" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:39 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:65 msgctxt "grid sunday" msgid "S" msgstr "Ac" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:67 msgctxt "grid monday" msgid "M" msgstr "Ar" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:69 msgctxt "grid tuesday" msgid "T" msgstr "Am" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:71 msgctxt "grid wednesday" msgid "W" msgstr "Ah" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:73 msgctxt "grid thursday" msgid "T" msgstr "Amh" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:75 msgctxt "grid friday" msgid "F" msgstr "Sm" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:77 msgctxt "grid saturday" msgid "S" msgstr "Sd" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:428 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:438 msgid "%OB %Y" msgstr "%OB %Y" #: js/ui/calendar.js:500 msgid "Previous month" msgstr "Ayyur yezrin" #: js/ui/calendar.js:518 msgid "Next month" msgstr "Ayyur d-itteddun" #: js/ui/calendar.js:669 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:728 msgid "Week %V" msgstr "Amalas wis %V" #: js/ui/calendar.js:920 msgid "No Notifications" msgstr "Ulac tilɣa" #: js/ui/calendar.js:976 msgid "Do Not Disturb" msgstr "Ur ttcewwil ara" #: js/ui/calendar.js:997 msgid "Clear" msgstr "Sfeḍ" #: js/ui/calendar.js:1001 msgctxt "action" msgid "Clear all notifications" msgstr "Sfeḍ akk ilɣa" #. Translators: %s is an application name #: js/ui/closeDialog.js:44 #, javascript-format msgid "“%s” is not responding." msgstr "“%s” ur d-yettara ara." #: js/ui/closeDialog.js:45 msgid "" "You may choose to wait a short while for it to continue or force the app to " "quit entirely." msgstr "" #: js/ui/closeDialog.js:73 msgid "Force Quit" msgstr "Ḥettem tuffɣa" #: js/ui/closeDialog.js:78 msgid "Wait" msgstr "Rǧu" #: js/ui/components/automountManager.js:84 msgid "External drive connected" msgstr "Ibenk uffiɣ yettwaqqen" #: js/ui/components/automountManager.js:96 msgid "External drive disconnected" msgstr "Ibenk uffiɣ yenser" #: js/ui/components/automountManager.js:207 msgid "Unable to unlock volume" msgstr "Ulamek aserreḥ n ubleɣ" #: js/ui/components/automountManager.js:208 msgid "The installed udisks version does not support the PIM setting" msgstr "" #: js/ui/components/autorunManager.js:200 #, javascript-format msgid "Open with %s" msgstr "Ldi s %s" #: js/ui/components/networkAgent.js:96 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router." msgstr "" #: js/ui/components/networkAgent.js:108 js/ui/status/bluetooth.js:246 #: js/ui/status/network.js:360 js/ui/status/network.js:444 msgid "Connect" msgstr "Qqen" #: js/ui/components/networkAgent.js:223 msgid "Key" msgstr "Tasarut" #: js/ui/components/networkAgent.js:274 js/ui/components/networkAgent.js:313 msgid "Private key password" msgstr "" #: js/ui/components/networkAgent.js:307 msgid "Identity" msgstr "Tamagit" #: js/ui/components/networkAgent.js:333 msgid "Service" msgstr "Ameẓlu" #: js/ui/components/networkAgent.js:371 js/ui/components/networkAgent.js:407 #: js/ui/components/networkAgent.js:750 js/ui/components/networkAgent.js:771 msgid "Authentication required" msgstr "Illaq usesteb" #: js/ui/components/networkAgent.js:372 js/ui/components/networkAgent.js:751 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network " "“%s”." msgstr "" #: js/ui/components/networkAgent.js:376 js/ui/components/networkAgent.js:755 msgid "Wired 802.1X authentication" msgstr "" #: js/ui/components/networkAgent.js:379 msgid "Network name" msgstr "Isem n uzeḍḍa" #: js/ui/components/networkAgent.js:387 js/ui/components/networkAgent.js:759 msgid "DSL authentication" msgstr "Asesteb DSL" #: js/ui/components/networkAgent.js:394 js/ui/components/networkAgent.js:764 msgid "PIN code required" msgstr "Tangalt PIN tettwasra" #: js/ui/components/networkAgent.js:395 js/ui/components/networkAgent.js:765 msgid "PIN code is needed for the mobile broadband device" msgstr "" #: js/ui/components/networkAgent.js:397 msgid "PIN" msgstr "PIN" #: js/ui/components/networkAgent.js:408 js/ui/components/networkAgent.js:756 #: js/ui/components/networkAgent.js:760 js/ui/components/networkAgent.js:772 #: js/ui/components/networkAgent.js:776 #, javascript-format msgid "A password is required to connect to “%s”." msgstr "Awal n uɛeddi yettwsra i tuqqna ɣer “%s”." #: js/ui/components/networkAgent.js:775 msgid "VPN password" msgstr "Awal n uɛeddi VPN" #: js/ui/components/polkitAgent.js:46 msgid "Authentication Required" msgstr "Illaq usesteb" #: js/ui/components/polkitAgent.js:86 msgid "Administrator" msgstr "Anedbal" #: js/ui/components/polkitAgent.js:151 msgid "Authenticate" msgstr "Asesteb" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:265 js/ui/shellMountOperation.js:417 msgid "Sorry, that didn’t work. Please try again." msgstr "Surfaɣ, aya ur yeddi ara. Ttxil-k·mm ɛreḍ tikkelt-nniḍen." #: js/ui/ctrlAltTab.js:25 js/ui/overviewControls.js:418 msgid "Windows" msgstr "Isfuyla" #: js/ui/dash.js:206 js/ui/dash.js:252 msgid "Show Apps" msgstr "Sken-d isnasen" #. Translators: this is the name of the dock/favorites area on #. the bottom of the overview #: js/ui/dash.js:410 msgid "Dash" msgstr "" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:101 msgid "%B %-d %Y" msgstr "%-d %B %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:108 msgid "%A %B %e %Y" msgstr "%A %e %B %Y" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:174 msgctxt "calendar heading" msgid "%B %-d" msgstr "%-d %B" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:177 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%-d %B %Y" #: js/ui/dateMenu.js:183 msgid "Today" msgstr "Assa" #: js/ui/dateMenu.js:187 msgid "Tomorrow" msgstr "Azekka" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:218 msgctxt "event list time" msgid "All Day" msgstr "Ass kamel" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:240 msgid "%m/%d" msgstr "%d/%m" #: js/ui/dateMenu.js:291 msgid "No Events" msgstr "Ulac ineḍruyen" #: js/ui/dateMenu.js:413 msgid "Add world clocks…" msgstr "Rnu timrilin n umaḍal…" #: js/ui/dateMenu.js:414 msgid "World Clocks" msgstr "Timrilin n umaḍal" #: js/ui/dateMenu.js:704 msgid "Loading…" msgstr "Asali…" #: js/ui/dateMenu.js:714 msgid "Go online for weather information" msgstr "" #: js/ui/dateMenu.js:716 msgid "Weather information is currently unavailable" msgstr "" #: js/ui/dateMenu.js:726 msgid "Weather" msgstr "Tignewt" #: js/ui/dateMenu.js:728 msgid "Select weather location…" msgstr "Fren adeg n tegnawt…" #: js/ui/endSessionDialog.js:48 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "Mdel tiɣimit n %s" #: js/ui/endSessionDialog.js:49 msgctxt "title" msgid "Log Out" msgstr "Mdel Tiɣimit" #: js/ui/endSessionDialog.js:52 #, javascript-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "" msgstr[1] "" #: js/ui/endSessionDialog.js:58 #, javascript-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "" msgstr[1] "" #: js/ui/endSessionDialog.js:65 msgctxt "button" msgid "Log Out" msgstr "Mdel tiɣimit" #: js/ui/endSessionDialog.js:71 js/ui/status/system.js:176 msgctxt "title" msgid "Power Off" msgstr "Asnusay" #: js/ui/endSessionDialog.js:72 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Sbedd ileqman sakin sens aselkim" #: js/ui/endSessionDialog.js:75 #, javascript-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "Anagraw ad yexsi s wudem awurman di %d n tasint." msgstr[1] "Anagraw ad yexsi s wudem awurman di %d n tasinin." #: js/ui/endSessionDialog.js:79 js/ui/endSessionDialog.js:98 msgctxt "checkbox" msgid "Install pending software updates" msgstr "" #: js/ui/endSessionDialog.js:83 msgctxt "button" msgid "Power Off" msgstr "Asnusay" #: js/ui/endSessionDialog.js:90 msgctxt "title" msgid "Restart" msgstr "Ales tanekra" #: js/ui/endSessionDialog.js:91 msgctxt "title" msgid "Install Updates & Restart" msgstr "Asbeddi n ileqman sakin talsa usekker n uselkim" #: js/ui/endSessionDialog.js:94 #, javascript-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "Anagraw ad yales tanekra s wudem awurman di %d n tasint." msgstr[1] "Anagraw ad yales tanekra s wudem awurman di %d n tasinin." #: js/ui/endSessionDialog.js:102 msgctxt "button" msgid "Restart" msgstr "Ales tanekra" #: js/ui/endSessionDialog.js:110 msgctxt "title" msgid "Restart & Install Updates" msgstr "Ales asekker sakin sbedd ileqman" #: js/ui/endSessionDialog.js:113 #, javascript-format msgid "The system will automatically restart and install updates in %d second." msgid_plural "" "The system will automatically restart and install updates in %d seconds." msgstr[0] "" msgstr[1] "" #: js/ui/endSessionDialog.js:120 js/ui/endSessionDialog.js:141 msgctxt "button" msgid "Restart & Install" msgstr "Ales asekker sakin sbedd ileqman" #: js/ui/endSessionDialog.js:122 msgctxt "button" msgid "Install & Power Off" msgstr "Sbedd ileqman sakin sens-it" #: js/ui/endSessionDialog.js:123 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Sens-it mi ara ttwasbedden yileqman" #: js/ui/endSessionDialog.js:130 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "Ales asekker sakin sbedd ileqman" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:135 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" #: js/ui/endSessionDialog.js:284 msgid "Low battery power: please plug in before installing updates." msgstr "" #: js/ui/endSessionDialog.js:293 msgid "Some applications are busy or have unsaved work" msgstr "" #: js/ui/endSessionDialog.js:298 msgid "Other users are logged in" msgstr "Iseqdacen-nniḍen ttwaqqnen" #: js/ui/endSessionDialog.js:468 msgctxt "button" msgid "Boot Options" msgstr "Iɣewwaṛen n usenker" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:673 #, javascript-format msgid "%s (remote)" msgstr "%s (anmeggag)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:676 #, javascript-format msgid "%s (console)" msgstr "%s (tadiwent)" #: js/ui/extensionDownloader.js:282 msgid "Install" msgstr "Sebded" #: js/ui/extensionDownloader.js:288 msgid "Install Extension" msgstr "Sbed aseɣzef" #: js/ui/extensionDownloader.js:289 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "" #: js/ui/extensionSystem.js:354 msgid "Extension Updates Available" msgstr "" #: js/ui/extensionSystem.js:355 msgid "Extension updates are ready to be installed." msgstr "" #: js/ui/inhibitShortcutsDialog.js:70 msgid "Allow inhibiting shortcuts" msgstr "" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:73 #, javascript-format msgid "The app %s wants to inhibit shortcuts" msgstr "" #: js/ui/inhibitShortcutsDialog.js:74 msgid "An app wants to inhibit shortcuts" msgstr "" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:81 #, javascript-format msgid "You can restore shortcuts by pressing %s." msgstr "" #: js/ui/kbdA11yDialog.js:34 msgid "Slow Keys Turned On" msgstr "Tiqeffalin tiẓẓayanin ttwaremdent" #: js/ui/kbdA11yDialog.js:35 msgid "Slow Keys Turned Off" msgstr "Tiqeffalin tiẓẓayanin ttwasensent" #: js/ui/kbdA11yDialog.js:36 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" #: js/ui/kbdA11yDialog.js:42 msgid "Sticky Keys Turned On" msgstr "Tiqeffalin timenzugin remdent" #: js/ui/kbdA11yDialog.js:43 msgid "Sticky Keys Turned Off" msgstr "Tiqeffalin timenzugin xsint" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" #: js/ui/kbdA11yDialog.js:47 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" #: js/ui/kbdA11yDialog.js:57 msgid "Leave On" msgstr "Anef-as yermed" #: js/ui/kbdA11yDialog.js:57 msgid "Turn On" msgstr "Sermed" #: js/ui/kbdA11yDialog.js:67 js/ui/status/network.js:455 msgid "Turn Off" msgstr "Sens" #: js/ui/kbdA11yDialog.js:67 msgid "Leave Off" msgstr "Anef-as yensa" #: js/ui/keyboard.js:181 js/ui/status/keyboard.js:899 msgid "Keyboard Settings" msgstr "Iɣewwaṛen n unasiw" #: js/ui/lookingGlass.js:724 msgid "No extensions installed" msgstr "Ulac iseɣzaf yettwasbedden" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:785 #, javascript-format msgid "%s has not emitted any errors." msgstr "" #: js/ui/lookingGlass.js:791 msgid "Hide Errors" msgstr "Ffer tuccḍiwin" #: js/ui/lookingGlass.js:795 js/ui/lookingGlass.js:872 msgid "Show Errors" msgstr "Sken tuccḍiwin" #: js/ui/lookingGlass.js:804 msgid "Active" msgstr "" #: js/ui/lookingGlass.js:807 msgid "Inactive" msgstr "" #: js/ui/lookingGlass.js:809 msgid "Error" msgstr "Tuccḍa" #: js/ui/lookingGlass.js:811 msgid "Out of date" msgstr "Yezri" #: js/ui/lookingGlass.js:813 msgid "Downloading" msgstr "Asider" #: js/ui/lookingGlass.js:815 msgid "Deactivating" msgstr "" #: js/ui/lookingGlass.js:817 msgid "Activating" msgstr "" #: js/ui/lookingGlass.js:850 msgid "View Source" msgstr "Wali aɣbalu" #: js/ui/lookingGlass.js:861 msgid "Web Page" msgstr "" #: js/ui/main.js:279 msgid "System was put in unsafe mode" msgstr "" #: js/ui/main.js:280 msgid "Apps now have unrestricted access" msgstr "" #: js/ui/main.js:283 js/ui/overview.js:54 msgid "Undo" msgstr "Sefsex" #: js/ui/main.js:340 msgid "Logged in as a privileged user" msgstr "" #: js/ui/main.js:341 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" #: js/ui/main.js:389 msgid "Screen Lock disabled" msgstr "Asekkeṛ n wegdil yensa" #: js/ui/main.js:390 msgid "Screen Locking requires the GNOME display manager." msgstr "Asekkeṛ n wegdil yesra amsefrak n ubeqeḍ n GNOME." #. Translators: this is the string displayed in the header when a message #. source doesn't have a name #: js/ui/messageList.js:400 msgid "Unknown App" msgstr "Asnas arusin" #: js/ui/messageTray.js:328 js/ui/messageTray.js:330 msgid "Notification sound" msgstr "Imesli n tilɣa" #: js/ui/mpris.js:198 msgid "Unknown artist" msgstr "Anaẓur arussin" #: js/ui/mpris.js:208 msgid "Unknown title" msgstr "Azwel arussin" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:342 msgid "Type to search" msgstr "Aru iwakken ad tnadiḍ" #: js/ui/overviewControls.js:406 msgid "Apps" msgstr "Isnasen" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:67 msgid "Overview" msgstr "Agzul" #: js/ui/padOsd.js:100 msgid "New shortcut…" msgstr "Anegzum amaynut…" #: js/ui/padOsd.js:153 msgid "App defined" msgstr "" #: js/ui/padOsd.js:154 msgid "Show on-screen help" msgstr "" #: js/ui/padOsd.js:155 msgid "Switch monitor" msgstr "" #: js/ui/padOsd.js:156 msgid "Assign keystroke" msgstr "" #: js/ui/padOsd.js:225 msgid "Done" msgstr "Immed" #: js/ui/padOsd.js:728 msgid "Edit…" msgstr "Ẓreg…" #: js/ui/padOsd.js:775 msgid "None" msgstr "Ulac" #: js/ui/padOsd.js:846 msgid "Press a button to configure" msgstr "Ssed taqeffalt iwakken ad tsewleḍ" #: js/ui/padOsd.js:847 msgid "Press Esc to exit" msgstr "Ssed taqeffalt ESC iwakken ad teffɣeḍ" #: js/ui/padOsd.js:850 msgid "Press any key to exit" msgstr "Ssed taqeffalt menwala iwakken ad teffɣeḍ" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:425 msgid "Activities" msgstr "Irmuden" #: js/ui/panel.js:506 msgctxt "System menu in the top bar" msgid "System" msgstr "Anagraw" #: js/ui/panel.js:680 msgid "Top Bar" msgstr "Afeggag n ufella" #: js/ui/quickSettings.js:187 msgid "Open menu" msgstr "Ldi umuɣ" #: js/ui/runDialog.js:63 msgid "Run a Command" msgstr "" #: js/ui/runDialog.js:78 msgid "Press ESC to close" msgstr "Ssed taqeffalt ESC iwakken ad tmedleḍ" #: js/ui/runDialog.js:243 msgid "Restart is not available on Wayland" msgstr "" #: js/ui/runDialog.js:248 msgid "Restarting…" msgstr "Tulsa n tnekra…" #: js/ui/screenShield.js:235 msgid "GNOME needs to lock the screen" msgstr "GNOME yesra ad isekkeṛ agdil" #: js/ui/screenShield.js:276 js/ui/screenShield.js:669 msgid "Unable to lock" msgstr "Ulamek asekkeṛ" #: js/ui/screenShield.js:277 js/ui/screenShield.js:670 msgid "Lock was blocked by an app" msgstr "" #: js/ui/screenshot.js:1254 msgid "Selection" msgstr "Afran" #: js/ui/screenshot.js:1264 msgid "Area Selection" msgstr "" #: js/ui/screenshot.js:1269 msgid "Screen" msgstr "Agdil" #: js/ui/screenshot.js:1279 msgid "Screen Selection" msgstr "Tafrant n wegdil" #: js/ui/screenshot.js:1284 msgid "Window" msgstr "Asfaylu" #: js/ui/screenshot.js:1294 msgid "Window Selection" msgstr "" #. Translators: entry in the window right click menu. #: js/ui/screenshot.js:1319 js/ui/status/system.js:113 js/ui/windowMenu.js:30 msgid "Take Screenshot" msgstr "Ṭṭef-d agdil" #: js/ui/screenshot.js:1335 msgid "Record Screen" msgstr "Kles agdil" #. Translators: since this string refers to an action, #. it needs to be phrased as a verb. #: js/ui/screenshot.js:1352 msgid "Capture" msgstr "Ṭṭef" #: js/ui/screenshot.js:1374 msgid "Show Pointer" msgstr "" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1998 msgid "Screencasts" msgstr "" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast from 07-17-2013 10:00:46 PM" #: js/ui/screenshot.js:2003 #, no-c-format msgid "Screencast from %d %t" msgstr "" #. Translators: notification title. #: js/ui/screenshot.js:2049 msgid "Screencast recorded" msgstr "" #. Translators: notification title. #: js/ui/screenshot.js:2062 msgid "Screencast failed to start" msgstr "" #. Translators: notification title. #: js/ui/screenshot.js:2068 msgid "Screencast ended: Out of disk space" msgstr "" #. We can encourage user to try again on service crashes since the #. recorder will auto-blocklist the pipeline that crashed. #. Translators: notification title. #: js/ui/screenshot.js:2074 msgid "Screencast ended unexpectedly, please try again" msgstr "" #. Translators: notification title. #: js/ui/screenshot.js:2077 msgid "Screencast ended unexpectedly" msgstr "" #. Translators: notification source name. #: js/ui/screenshot.js:2087 js/ui/screenshot.js:2329 msgid "Screenshot" msgstr "Tuṭṭfiwin n ugdil" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:2094 msgid "Click here to view the video." msgstr "" #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:2102 js/ui/screenshot.js:2345 msgid "Show in Files" msgstr "Sken-it-id deg yifuyla" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2289 #, javascript-format msgid "Screenshot from %s" msgstr "Tuṭṭfa n ugdil seg %s" #. Translators: notification title. #: js/ui/screenshot.js:2335 msgid "Screenshot captured" msgstr "" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2337 msgid "You can paste the image from the clipboard." msgstr "" #: js/ui/screenshot.js:2393 js/ui/screenshot.js:2557 msgid "Screenshot taken" msgstr "Tuṭṭfa n ugdil tedda" #: js/ui/search.js:831 msgid "Searching…" msgstr "Anadi…" #: js/ui/search.js:833 msgid "No results." msgstr "Ulac igmaḍ." #: js/ui/search.js:964 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "ugar n %d" msgstr[1] "ugar n %d" #: js/ui/searchController.js:89 #: subprojects/extensions-app/data/ui/extensions-window.ui:73 msgid "Search" msgstr "Nadi" #: js/ui/shellEntry.js:23 msgid "Copy" msgstr "Nɣel" #: js/ui/shellEntry.js:28 msgid "Paste" msgstr "Senteḍ" #: js/ui/shellEntry.js:80 msgid "Show Text" msgstr "Sken aḍris" #: js/ui/shellEntry.js:82 msgid "Hide Text" msgstr "Ffer aḍris" #: js/ui/shellEntry.js:176 msgid "Caps lock is on." msgstr "Isekkilen imeqqranen remden." #: js/ui/shellMountOperation.js:288 msgid "Hidden Volume" msgstr "" #: js/ui/shellMountOperation.js:291 msgid "Windows System Volume" msgstr "" #: js/ui/shellMountOperation.js:294 msgid "Uses Keyfiles" msgstr "" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:302 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead." msgstr "" #: js/ui/shellMountOperation.js:306 msgid "" "You need an external utility like Disks to unlock a volume that uses " "keyfiles." msgstr "" #: js/ui/shellMountOperation.js:314 msgid "PIM Number" msgstr "" #: js/ui/shellMountOperation.js:373 msgid "Remember Password" msgstr "Mekti awal-agi n uɛeddi" #: js/ui/shellMountOperation.js:388 msgid "Unlock" msgstr "Serreḥ" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:402 #, javascript-format msgid "Open %s" msgstr "Ldi %s" #: js/ui/shellMountOperation.js:438 msgid "The PIM must be a number or empty." msgstr "" #: js/ui/status/accessibility.js:36 msgid "Accessibility" msgstr "Tuffart" #: js/ui/status/accessibility.js:46 msgid "High Contrast" msgstr "Amyeẓli afellay" #: js/ui/status/accessibility.js:49 msgid "Zoom" msgstr "Simɣur" #: js/ui/status/accessibility.js:56 msgid "Screen Reader" msgstr "Ameɣri n ugdil" #: js/ui/status/accessibility.js:60 msgid "Screen Keyboard" msgstr "Tasarut unasiw" #: js/ui/status/accessibility.js:64 msgid "Visual Alerts" msgstr "" #: js/ui/status/accessibility.js:68 msgid "Sticky Keys" msgstr "Tisura ineṭṭḍen" #: js/ui/status/accessibility.js:72 msgid "Slow Keys" msgstr "Tisura ẓẓayen" #: js/ui/status/accessibility.js:76 msgid "Bounce Keys" msgstr "Tisura i d-yettuɣalen" #: js/ui/status/accessibility.js:80 msgid "Mouse Keys" msgstr "Tiqfallin n umumed" #: js/ui/status/accessibility.js:85 msgid "Accessibility Settings" msgstr "" #: js/ui/status/accessibility.js:142 msgid "Large Text" msgstr "Aḍris ahrawan" #: js/ui/status/autoRotate.js:14 msgid "Auto Rotate" msgstr "" #: js/ui/status/backgroundApps.js:156 msgctxt "title" msgid "Background Apps" msgstr "" #: js/ui/status/backgroundApps.js:171 msgid "Apps known to be running without a window" msgstr "" #: js/ui/status/backgroundApps.js:182 msgid "App Settings" msgstr "Iɣewwaṛen n wesnas" #: js/ui/status/backgroundApps.js:239 msgid "No Background Apps" msgstr "" #: js/ui/status/backgroundApps.js:241 #, javascript-format msgid "%d Background App" msgid_plural "%d Background Apps" msgstr[0] "" msgstr[1] "" #: js/ui/status/backlight.js:40 msgid "Keyboard Brightness" msgstr "Tifawit n unasiw" #: js/ui/status/backlight.js:80 msgid "Off" msgstr "Yensa" #: js/ui/status/backlight.js:81 msgid "Low" msgstr "" #: js/ui/status/backlight.js:82 msgid "High" msgstr "" #: js/ui/status/backlight.js:148 js/ui/status/keyboard.js:881 msgid "Keyboard" msgstr "Anasiw" #: js/ui/status/bluetooth.js:246 js/ui/status/network.js:360 msgid "Disconnect" msgstr "Senser tuqqna" #: js/ui/status/bluetooth.js:263 js/ui/status/bluetooth.js:265 msgid "Bluetooth" msgstr "Bluetooth" #: js/ui/status/bluetooth.js:288 js/ui/status/network.js:1900 msgid "Bluetooth Settings" msgstr "Iɣewwaṛen n Bluetooth" #: js/ui/status/bluetooth.js:335 msgid "No available or connected devices" msgstr "" #: js/ui/status/bluetooth.js:336 msgid "Turn on Bluetooth to connect to devices" msgstr "" #. Translators: This is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:390 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d yettwaqqen" msgstr[1] "%d ttwaqqnen" #: js/ui/status/brightness.js:34 msgid "Brightness" msgstr "Tifawit" #: js/ui/status/darkMode.js:12 msgid "Dark Style" msgstr "Anaw ubrik" #: js/ui/status/dwellClick.js:15 msgid "Single Click" msgstr "Asiti asuf" #: js/ui/status/dwellClick.js:20 msgid "Double Click" msgstr "Asiti uslig" #: js/ui/status/dwellClick.js:25 msgid "Drag" msgstr "Zuɣer" #: js/ui/status/dwellClick.js:30 msgid "Secondary Click" msgstr "Asiti wis sin" #: js/ui/status/dwellClick.js:39 msgid "Dwell Click" msgstr "" #: js/ui/status/keyboard.js:898 msgid "Show Keyboard Layout" msgstr "Sken taneɣruft n unasiw" #: js/ui/status/location.js:339 msgid "Allow location access" msgstr "" #. Translators: %s is an application name #: js/ui/status/location.js:341 #, javascript-format msgid "The app %s wants to access your location" msgstr "" #: js/ui/status/location.js:351 msgid "Location access can be changed at any time from the privacy settings." msgstr "" #: js/ui/status/location.js:359 msgid "Deny Access" msgstr "Agi adduf" #: js/ui/status/location.js:364 msgid "Grant Access" msgstr "Mudd tasiregt" #: js/ui/status/network.js:62 msgid "" msgstr "" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:354 #, javascript-format msgid "Disconnect %s" msgstr "Senser tuqqna %s" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:356 #, javascript-format msgid "Connect to %s" msgstr "Qqen ɣer %s" #: js/ui/status/network.js:1050 msgid "Secure" msgstr "D aɣelsan" #: js/ui/status/network.js:1050 msgid "Not secure" msgstr "Mačči d aɣelsqn" #: js/ui/status/network.js:1051 #, javascript-format msgid "Signal strength %s%%" msgstr "" #. translators: The first placeholder is the network name, the second and indication whether it is secure, and the last the signal strength indication #: js/ui/status/network.js:1053 #, javascript-format msgid "%s, %s, %s" msgstr "%s, %s, %s" #. Translators: %s is a network identifier #: js/ui/status/network.js:1155 #, javascript-format msgid "%s Hotspot" msgstr "" #: js/ui/status/network.js:1426 #, javascript-format msgid "%d connected" msgid_plural "%d connected" msgstr[0] "%d yeqqen" msgstr[1] "%d ttwaqqnen" #: js/ui/status/network.js:1524 js/ui/status/network.js:1540 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1525 msgid "VPN Settings" msgstr "Iɣewwaren n VPN" #: js/ui/status/network.js:1785 msgid "Wi–Fi" msgstr "Wi–Fi" #: js/ui/status/network.js:1787 msgid "All Networks" msgstr "Akk izeḍwan" #: js/ui/status/network.js:1884 msgid "Wired Connections" msgstr "" #: js/ui/status/network.js:1885 msgid "Wired Settings" msgstr "" #: js/ui/status/network.js:1899 msgid "Bluetooth Tethers" msgstr "" #. Translators: "Tether" from "Bluetooth Tether" #: js/ui/status/network.js:1906 msgid "Tether" msgstr "" #: js/ui/status/network.js:1919 msgid "Mobile Connections" msgstr "" #: js/ui/status/network.js:1921 msgid "Mobile Broadband Settings" msgstr "" #. Translators: "Mobile" from "Mobile Broadband" #: js/ui/status/network.js:1930 msgid "Mobile" msgstr "Aziraz" #: js/ui/status/network.js:2035 msgid "Connection failed" msgstr "Tuqqna ur teddi ara" #: js/ui/status/network.js:2036 msgid "Activation of network connection failed" msgstr "Azeṭṭa ur yessaweḍ ara ad yeqqen" #: js/ui/status/nightLight.js:21 msgid "Night Light" msgstr "Tafat n yiḍ" #: js/ui/status/powerProfiles.js:21 msgctxt "Power profile" msgid "Performance" msgstr "Atwal" #: js/ui/status/powerProfiles.js:26 msgctxt "Power profile" msgid "Balanced" msgstr "" #: js/ui/status/powerProfiles.js:31 msgctxt "Power profile" msgid "Power Saver" msgstr "" #: js/ui/status/powerProfiles.js:41 js/ui/status/powerProfiles.js:71 msgid "Power Mode" msgstr "" #: js/ui/status/powerProfiles.js:73 msgid "Power Settings" msgstr "Iɣewwaren usečči" #: js/ui/status/remoteAccess.js:76 msgid "Stop Screencast" msgstr "" #: js/ui/status/remoteAccess.js:146 msgid "Stop Screen Sharing" msgstr "" #: js/ui/status/rfkill.js:101 msgid "Airplane Mode" msgstr "Askar n temsrifegt" #: js/ui/status/system.js:170 msgid "Power Off Menu" msgstr "" #: js/ui/status/system.js:178 msgid "Suspend" msgstr "Ḥbes di leεḍil" #: js/ui/status/system.js:183 msgid "Restart…" msgstr "Ales tanekra…" #: js/ui/status/system.js:188 msgid "Power Off…" msgstr "Sens…" #: js/ui/status/system.js:195 #: subprojects/extensions-app/data/ui/extensions-window.ui:124 msgid "Log Out…" msgstr "Ffeɣ…" #: js/ui/status/system.js:200 msgid "Switch User…" msgstr "Senfel aseqdac…" #: js/ui/status/system.js:244 msgctxt "action" msgid "Lock Screen" msgstr "Sekkeṛ agdil" #: js/ui/status/thunderbolt.js:310 msgid "Unknown Thunderbolt device" msgstr "" #: js/ui/status/thunderbolt.js:311 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" #: js/ui/status/thunderbolt.js:314 msgid "Unauthorized Thunderbolt device" msgstr "" #: js/ui/status/thunderbolt.js:315 msgid "" "New device has been detected and needs to be authorized by an administrator." msgstr "" #: js/ui/status/thunderbolt.js:321 msgid "Thunderbolt authorization error" msgstr "" #: js/ui/status/thunderbolt.js:322 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "" #: js/ui/status/volume.js:220 msgid "Volume changed" msgstr "" #: js/ui/status/volume.js:233 msgid "Unmute" msgstr "" #: js/ui/status/volume.js:233 msgid "Mute" msgstr "Sgugem" #: js/ui/status/volume.js:288 msgid "Volume" msgstr "Ableɣ" #: js/ui/status/volume.js:304 msgid "Sound Output" msgstr "Imesli n tuffɣa" #: js/ui/status/volume.js:376 msgid "Sound Input" msgstr "Imesli n unekcum" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:22 msgid "Mirror" msgstr "Tamrayt" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:31 msgid "Join Displays" msgstr "" #. Translators: this is for using only external displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:41 msgid "External Only" msgstr "" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:49 msgid "Built-in Only" msgstr "" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:374 msgid "%A %B %-d" msgstr "%A %-d %B" #: js/ui/unlockDialog.js:380 msgid "Swipe up to unlock" msgstr "" #: js/ui/unlockDialog.js:381 msgid "Click or press a key to unlock" msgstr "" #: js/ui/unlockDialog.js:564 msgid "Unlock Window" msgstr "" #: js/ui/unlockDialog.js:573 msgid "Log in as another user" msgstr "" #: js/ui/welcomeDialog.js:49 #, javascript-format msgid "GNOME %s" msgstr "GNOME %s" #: js/ui/welcomeDialog.js:53 #, javascript-format msgid "Welcome to %s" msgstr "Ansuf ɣer %s" #: js/ui/welcomeDialog.js:54 msgid "If you want to learn your way around, check out the tour." msgstr "" #: js/ui/welcomeDialog.js:63 msgid "Skip" msgstr "Zgel" #: js/ui/welcomeDialog.js:68 msgid "Take Tour" msgstr "" #: js/ui/windowAttentionHandler.js:20 #, javascript-format msgid "“%s” is ready" msgstr "" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:69 msgid "Keep these display settings?" msgstr "" #: js/ui/windowManager.js:79 msgid "Revert Settings" msgstr "" #: js/ui/windowManager.js:84 msgid "Keep Changes" msgstr "" #: js/ui/windowManager.js:104 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "" msgstr[1] "" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:496 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:42 msgid "Hide" msgstr "Ffer-it" #: js/ui/windowMenu.js:49 msgid "Restore" msgstr "Err-it-id" #: js/ui/windowMenu.js:53 msgid "Maximize" msgstr "Semɣer" #: js/ui/windowMenu.js:60 msgid "Move" msgstr "Senkez" #: js/ui/windowMenu.js:80 msgid "Resize" msgstr "" #: js/ui/windowMenu.js:101 msgid "Move Titlebar Onscreen" msgstr "" #: js/ui/windowMenu.js:106 msgid "Always on Top" msgstr "" #: js/ui/windowMenu.js:125 msgid "Always on Visible Workspace" msgstr "" #: js/ui/windowMenu.js:139 msgid "Move to Workspace Left" msgstr "" #: js/ui/windowMenu.js:145 msgid "Move to Workspace Right" msgstr "" #: js/ui/windowMenu.js:151 msgid "Move to Workspace Up" msgstr "" #: js/ui/windowMenu.js:157 msgid "Move to Workspace Down" msgstr "" #: js/ui/windowMenu.js:175 msgid "Move to Monitor Up" msgstr "" #: js/ui/windowMenu.js:184 msgid "Move to Monitor Down" msgstr "" #: js/ui/windowMenu.js:193 msgid "Move to Monitor Left" msgstr "" #: js/ui/windowMenu.js:202 msgid "Move to Monitor Right" msgstr "" #: js/ui/windowMenu.js:210 msgid "Close" msgstr "Mdel" #: src/main.c:529 subprojects/extensions-tool/src/main.c:336 msgid "Print version" msgstr "Sken lqem" #: src/main.c:535 msgid "Mode used by GDM for login screen" msgstr "" #: src/main.c:541 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "" #: src/main.c:547 msgid "List possible modes" msgstr "" #: src/main.c:553 msgid "Force animations to be enabled" msgstr "" #: src/shell-app.c:253 msgctxt "program" msgid "Unknown" msgstr "Arusin" #: src/shell-app.c:504 #, c-format msgid "Failed to launch “%s”" msgstr "Ur izmir ara ad yekker “%s”" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match." msgstr "Awalen uffiren mgarraden." #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "" #: src/st/st-icon-theme.c:1865 #, c-format msgid "Icon '%s' not present in theme %s" msgstr "" #: src/st/st-icon-theme.c:3454 src/st/st-icon-theme.c:3757 msgid "Failed to load icon" msgstr "" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 msgid "Manage your GNOME Extensions" msgstr "" #. developer_name tag deprecated with Appstream 1.0 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:19 msgid "The GNOME Project" msgstr "Asenfaṛ n GNOME" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:51 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:70 msgid "Main Window" msgstr "Asfaylu agejdan" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:74 msgid "Available Updates" msgstr "Ileqman yellan" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:78 msgid "Search View" msgstr "" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "" #: subprojects/extensions-app/js/extensionManager.js:237 #, javascript-format msgid "" "The installed version of this extension (%s) is incompatible with the " "current version of GNOME (%s). The extension has been disabled." msgstr "" #: subprojects/extensions-app/js/extensionManager.js:238 #, javascript-format msgid "" "The installed version of this extension is incompatible with the current " "version of GNOME (%s). The extension has been disabled." msgstr "" #: subprojects/extensions-app/js/extensionManager.js:242 msgid "" "An error has occurred in this extension. This could cause issues elsewhere " "in the system. It is recommended to turn the extension off until the error " "is resolved." msgstr "" #. translators: Details for an extension error #: subprojects/extensions-app/js/extensionManager.js:248 msgid "Error details:" msgstr "Talqayt n tuccḍa:" #: subprojects/extensions-app/js/extensionRow.js:82 #, javascript-format msgid "Version %s" msgstr "Lqem %s" #: subprojects/extensions-app/js/extensionsWindow.js:113 #, javascript-format msgid "Remove “%s”?" msgstr "Kkes \"%s\"?" #: subprojects/extensions-app/js/extensionsWindow.js:114 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "" #: subprojects/extensions-app/js/extensionsWindow.js:117 msgid "_Cancel" msgstr "Sefsex (_C)" #: subprojects/extensions-app/js/extensionsWindow.js:118 msgid "_Remove" msgstr "Kkes (_R)" #: subprojects/extensions-app/js/extensionsWindow.js:158 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Slimane Selyan AMIRI https://launchpad.net/~slimaneamiri\n" " atlantis103 https://launchpad.net/~atlantis103-hotmail\n" " ButterflyOfFire" #: subprojects/extensions-app/js/extensionsWindow.js:203 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "" msgstr[1] "" #: subprojects/extensions-app/data/ui/extension-row.ui:21 msgid "Error Details" msgstr "" #: subprojects/extensions-app/data/ui/extension-row.ui:61 msgid "Updates Details" msgstr "" #: subprojects/extensions-app/data/ui/extension-row.ui:71 msgid "" "A new version of this extension is ready and will be loaded on next login." msgstr "" #: subprojects/extensions-app/data/ui/extension-row.ui:107 msgid "Extension Details" msgstr "Talqayt n isiɣzaf" #: subprojects/extensions-app/data/ui/extension-row.ui:193 msgid "_Website" msgstr "Asmel _Web" #: subprojects/extensions-app/data/ui/extension-row.ui:220 msgid "_Settings" msgstr "Iɣewwaṛen (_S)" #: subprojects/extensions-app/data/ui/extension-row.ui:247 msgid "_Remove…" msgstr "Kkes (_R)" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Keyboard Shortcuts" msgstr "Inegzumen n unasiw" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "" #: subprojects/extensions-app/data/ui/extensions-window.ui:64 msgid "Main Menu" msgstr "Umuɣ agejdan" #: subprojects/extensions-app/data/ui/extensions-window.ui:106 msgid "Search extensions" msgstr "Nadi ɣef isiɣzaf" #: subprojects/extensions-app/data/ui/extensions-window.ui:134 msgid "_Extensions" msgstr "Isiɣzaf (_E)" #: subprojects/extensions-app/data/ui/extensions-window.ui:143 msgid "More Information" msgstr "Ugar n yisallen" #: subprojects/extensions-app/data/ui/extensions-window.ui:153 msgid "" "Extensions can cause performance and stability issues. It is recommended to " "disable all extensions if you experience problems with your system." msgstr "" #: subprojects/extensions-app/data/ui/extensions-window.ui:180 msgid "User Extensions" msgstr "Iseɣzaf n useqdac" #: subprojects/extensions-app/data/ui/extensions-window.ui:200 msgid "System Extensions" msgstr "Iseɣzaf n unagraw" #: subprojects/extensions-app/data/ui/extensions-window.ui:235 msgid "Search Results" msgstr "Igmaḍ n unadi" #: subprojects/extensions-app/data/ui/extensions-window.ui:254 msgid "No Results Found" msgstr "Ulac igmad yettwafen" #: subprojects/extensions-app/data/ui/extensions-window.ui:255 msgid "Try a different search." msgstr "Ɛreḍ anadi-nniḍen." #: subprojects/extensions-app/data/ui/extensions-window.ui:266 msgid "No Installed Extensions" msgstr "" #: subprojects/extensions-app/data/ui/extensions-window.ui:267 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" #: subprojects/extensions-app/data/ui/extensions-window.ui:278 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" #: subprojects/extensions-app/data/ui/help-overlay.ui:9 msgctxt "shortcut window" msgid "General" msgstr "Amatu" #: subprojects/extensions-app/data/ui/help-overlay.ui:12 msgctxt "shortcut window" msgid "Open Menu" msgstr "Ldi umuɣ" #: subprojects/extensions-app/data/ui/help-overlay.ui:18 msgctxt "shortcut window" msgid "Toggle Search" msgstr "" #: subprojects/extensions-app/data/ui/help-overlay.ui:24 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Sken-d inegzumen" #: subprojects/extensions-app/data/ui/help-overlay.ui:30 msgctxt "shortcut window" msgid "Quit" msgstr "Ffeɣ" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:284 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "" #: subprojects/extensions-tool/src/command-create.c:376 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" #: subprojects/extensions-tool/src/command-create.c:382 #: subprojects/extensions-tool/src/main.c:243 msgid "Name" msgstr "Isem" #: subprojects/extensions-tool/src/command-create.c:396 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" #: subprojects/extensions-tool/src/command-create.c:402 #: subprojects/extensions-tool/src/main.c:246 msgid "Description" msgstr "Aglam" #: subprojects/extensions-tool/src/command-create.c:416 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" #: subprojects/extensions-tool/src/command-create.c:443 msgid "Choose one of the available templates:\n" msgstr "" #: subprojects/extensions-tool/src/command-create.c:457 msgid "Template" msgstr "Talɣa" #: subprojects/extensions-tool/src/command-create.c:515 msgid "The unique identifier of the new extension" msgstr "" #: subprojects/extensions-tool/src/command-create.c:518 msgid "NAME" msgstr "ISEM" #: subprojects/extensions-tool/src/command-create.c:519 msgid "The user-visible name of the new extension" msgstr "" #: subprojects/extensions-tool/src/command-create.c:521 msgid "DESCRIPTION" msgstr "AGLAM" #: subprojects/extensions-tool/src/command-create.c:523 msgid "A short description of what the extension does" msgstr "" #: subprojects/extensions-tool/src/command-create.c:525 #: subprojects/extensions-tool/src/command-pack.c:455 msgid "DOMAIN" msgstr "TAƔULT" #: subprojects/extensions-tool/src/command-create.c:527 msgid "The gettext domain used by the extension" msgstr "" #: subprojects/extensions-tool/src/command-create.c:529 #: subprojects/extensions-tool/src/command-pack.c:448 msgid "SCHEMA" msgstr "AZENZIƔ" #: subprojects/extensions-tool/src/command-create.c:531 msgid "The GSettings schema used by the extension" msgstr "" #: subprojects/extensions-tool/src/command-create.c:534 msgid "TEMPLATE" msgstr "" #: subprojects/extensions-tool/src/command-create.c:535 msgid "The template to use for the new extension" msgstr "" #: subprojects/extensions-tool/src/command-create.c:538 msgid "Include prefs.js template" msgstr "" #: subprojects/extensions-tool/src/command-create.c:544 msgid "Enter extension information interactively" msgstr "" #: subprojects/extensions-tool/src/command-create.c:552 msgid "Create a new extension" msgstr "" #: subprojects/extensions-tool/src/command-create.c:570 #: subprojects/extensions-tool/src/command-list.c:190 msgid "Unknown arguments" msgstr "" #: subprojects/extensions-tool/src/command-create.c:595 msgid "UUID, name and description are required" msgstr "" #: subprojects/extensions-tool/src/command-disable.c:62 #: subprojects/extensions-tool/src/command-enable.c:62 #, c-format msgid "Extension “%s” does not exist\n" msgstr "" #: subprojects/extensions-tool/src/command-disable.c:98 msgid "Disable an extension" msgstr "" #: subprojects/extensions-tool/src/command-disable.c:116 #: subprojects/extensions-tool/src/command-enable.c:116 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "" #: subprojects/extensions-tool/src/command-disable.c:121 #: subprojects/extensions-tool/src/command-enable.c:121 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "" #: subprojects/extensions-tool/src/command-enable.c:98 msgid "Enable an extension" msgstr "" #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:66 #: subprojects/extensions-tool/src/main.c:150 msgid "Failed to connect to GNOME Shell\n" msgstr "" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:159 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "" #: subprojects/extensions-tool/src/command-install.c:190 msgid "Overwrite an existing extension" msgstr "" #: subprojects/extensions-tool/src/command-install.c:192 msgid "EXTENSION_BUNDLE" msgstr "" #: subprojects/extensions-tool/src/command-install.c:201 msgid "Install an extension bundle" msgstr "" #: subprojects/extensions-tool/src/command-install.c:219 msgid "No extension bundle specified" msgstr "" #: subprojects/extensions-tool/src/command-install.c:225 msgid "More than one extension bundle specified" msgstr "" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show user-installed extensions" msgstr "" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show system-installed extensions" msgstr "" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Show enabled extensions" msgstr "" #: subprojects/extensions-tool/src/command-list.c:149 msgid "Show disabled extensions" msgstr "" #: subprojects/extensions-tool/src/command-list.c:152 msgid "Show extensions in active state" msgstr "" #: subprojects/extensions-tool/src/command-list.c:155 msgid "Show extensions in inactive state" msgstr "" #: subprojects/extensions-tool/src/command-list.c:158 msgid "Show extensions with preferences" msgstr "" #: subprojects/extensions-tool/src/command-list.c:161 msgid "Show extensions with updates" msgstr "" #: subprojects/extensions-tool/src/command-list.c:164 msgid "Print extension details" msgstr "" #: subprojects/extensions-tool/src/command-list.c:172 msgid "List installed extensions" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:444 msgid "FILE" msgstr "AFAYLU" #: subprojects/extensions-tool/src/command-pack.c:445 msgid "Additional source to include in the bundle" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:449 msgid "A GSettings schema that should be included" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:451 #: subprojects/extensions-tool/src/command-pack.c:462 msgid "DIRECTORY" msgstr "AKARAM" #: subprojects/extensions-tool/src/command-pack.c:453 msgid "The directory where translations are found" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:457 msgid "The gettext domain to use for translations" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:460 msgid "Overwrite an existing pack" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:464 msgid "The directory where the pack should be created" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "SOURCE_DIRECTORY" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:475 msgid "Create an extension bundle" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:495 msgid "More than one source directory specified" msgstr "" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "" #: subprojects/extensions-tool/src/command-prefs.c:87 msgid "Opens extension preferences" msgstr "" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "" #: subprojects/extensions-tool/src/main.c:76 msgid "Do not print error messages" msgstr "" #: subprojects/extensions-tool/src/main.c:249 msgid "Path" msgstr "Abrid" #: subprojects/extensions-tool/src/main.c:252 msgid "URL" msgstr "URL" #: subprojects/extensions-tool/src/main.c:255 msgid "Original author" msgstr "" #: subprojects/extensions-tool/src/main.c:261 #: subprojects/extensions-tool/src/main.c:263 #: subprojects/extensions-tool/src/main.c:265 msgid "Version" msgstr "Lqem" #: subprojects/extensions-tool/src/main.c:268 msgid "Enabled" msgstr "Yermed" #: subprojects/extensions-tool/src/main.c:268 msgid "Yes" msgstr "Ih" #: subprojects/extensions-tool/src/main.c:268 msgid "No" msgstr "Uhu" #: subprojects/extensions-tool/src/main.c:271 msgid "State" msgstr "Addad" #: subprojects/extensions-tool/src/main.c:309 msgid "“version” takes no arguments" msgstr "" #: subprojects/extensions-tool/src/main.c:311 #: subprojects/extensions-tool/src/main.c:331 msgid "Usage:" msgstr "Aseqdec:" #: subprojects/extensions-tool/src/main.c:314 msgid "Print version information and exit." msgstr "" #: subprojects/extensions-tool/src/main.c:329 #: subprojects/extensions-tool/src/main.c:332 msgid "COMMAND" msgstr "" #: subprojects/extensions-tool/src/main.c:332 msgid "[ARGS…]" msgstr "" #: subprojects/extensions-tool/src/main.c:334 msgid "Commands:" msgstr "Tiludna:" #: subprojects/extensions-tool/src/main.c:335 msgid "Print help" msgstr "Siggez tallelt" #: subprojects/extensions-tool/src/main.c:337 msgid "Enable extension" msgstr "Sermed aseɣzef" #: subprojects/extensions-tool/src/main.c:338 msgid "Disable extension" msgstr "Sens aseɣzef" #: subprojects/extensions-tool/src/main.c:339 msgid "Reset extension" msgstr "Ales awennez n useɣzef" #: subprojects/extensions-tool/src/main.c:340 msgid "Uninstall extension" msgstr "Kkes aseɣzef" #: subprojects/extensions-tool/src/main.c:341 msgid "List extensions" msgstr "Tabdart n yisiɣzaf" #: subprojects/extensions-tool/src/main.c:342 #: subprojects/extensions-tool/src/main.c:343 msgid "Show extension info" msgstr "Sken talɣut n useɣzef" #: subprojects/extensions-tool/src/main.c:344 msgid "Open extension preferences" msgstr "Ldi ismenyifen n useɣzef" #: subprojects/extensions-tool/src/main.c:345 msgid "Create extension" msgstr "Snulfu-d aseɣzef" #: subprojects/extensions-tool/src/main.c:346 msgid "Package extension" msgstr "Akemmus n usiɣzef" #: subprojects/extensions-tool/src/main.c:347 msgid "Install extension bundle" msgstr "" #: subprojects/extensions-tool/src/main.c:349 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "Seqdec “%s” iwakken ad-d-tawiḍ tallelt s telqayt.\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "Aḥerfi" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "Aseɣzef ilem" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "Anamal" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "Rnu tignit di tama n ufella n ufeggag" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:4 msgid "Quick Settings Item" msgstr "" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:5 msgid "Add an item to quick settings" msgstr "" #. translators: #. * The device has been disabled #: subprojects/gvc/gvc-mixer-control.c:1872 msgid "Disabled" msgstr "Yensa" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1879 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u n tuffɣa" msgstr[1] "%u n tuffɣiwin" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1889 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u n unekcum" msgstr[1] "%u n yinekcumen" #: subprojects/gvc/gvc-mixer-control.c:2872 msgid "System Sounds" msgstr "Imeslan n unagraw" #~ msgid "Remove from Favorites" #~ msgstr "Kkes seg yinurifen" #~ msgid "Add to Favorites" #~ msgstr "Rnu s inurifen" #~ msgid "Network Manager" #~ msgstr "Amsefrak n uzeḍḍa" #~ msgid "Region & Language Settings" #~ msgstr "Iɣewwaren n tutlayt akked tmennaḍt" #~ msgid "Applications" #~ msgstr "Isnasen" #, javascript-format #~ msgid "Unable to start %s" #~ msgstr "Ulamek asekker n %s" #, javascript-format #~ msgid "Couldn’t find the %s application" #~ msgstr "Ur d-nufi ara asnas %s" #~ msgid "Bluetooth Off" #~ msgstr "Bluetooth yensa" #~ msgid "Bluetooth On" #~ msgstr "Bluetooth yermed" #~ msgid "Disable" #~ msgstr "Assensi" #~ msgid "Enable" #~ msgstr "Rmed" #, javascript-format #~ msgid "%s Disabled" #~ msgstr "%s yensa" #~ msgid "Connect to Internet" #~ msgstr "Yeqqen ɣer internet" #~ msgid "Wi-Fi is Off" #~ msgstr "Wi-Fi yensa" #~ msgid "Turn On Wi-Fi" #~ msgstr "Sermed Wi-Fi" #~ msgid "Wi-Fi Networks" #~ msgstr "Izeḍwan n Wi-Fi" #~ msgid "Select a network" #~ msgstr "Fren azeḍḍa" #~ msgid "Wi-Fi Settings" #~ msgstr "Iɣewwaren n Wi-Fi" #, javascript-format #~ msgid "%s Not Connected" #~ msgstr "%s ur yeqqin ara" #~ msgid "connecting…" #~ msgstr "la yetteqqen…" #~ msgid "authentication required" #~ msgstr "illaq usesteb" #~ msgid "connection failed" #~ msgstr "tuqqna ur teddi ara" #~ msgid "VPN Off" #~ msgstr "VPN yensa" #~ msgid "Resume" #~ msgstr "Kemmel" #, javascript-format #~ msgid "%d %%" #~ msgstr "%d %%" #~ msgid "Turn off" #~ msgstr "Sens" #~ msgid "Lock" #~ msgstr "Sekkeṛ" #~ msgid "Log Out" #~ msgstr "Ffeɣ" #~ msgid "No Thanks" #~ msgstr "Ala tanemmirt" #~ msgid "Author" #~ msgstr "Auteur" #~ msgid "Help" #~ msgstr "Tallelt" #~ msgid "Warning" #~ msgstr "Alɣu" #~ msgid "Failed to connect to GNOME Shell" #~ msgstr "Tecceḍ tuqqna ɣer GNOME Shell" #~ msgid "Minimize" #~ msgstr "Semẓi" 07070100000243000081A40000000000000000000000016712993F00021206000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/kk.po# Kazakh translation for gnome-shell. # Copyright (C) 2015 The gnome-shell authors. # This file is distributed under the same license as the gnome-shell package. # Baurzhan Muftakhidinov , 2012-2021. # msgid "" msgstr "" "Project-Id-Version: master\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues/\n" "POT-Creation-Date: 2024-08-06 15:18+0000\n" "PO-Revision-Date: 2024-09-01 13:19+0500\n" "Last-Translator: Baurzhan Muftakhidinov \n" "Language-Team: Kazakh \n" "Language: kk\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 3.5\n" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "Жөнелткіштер" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate pinned app 1" msgstr "Бекітілген 1-ші қолданбаны белсендіру" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate pinned app 2" msgstr "Бекітілген 2-ші қолданбаны белсендіру" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate pinned app 3" msgstr "Бекітілген 3-ші қолданбаны белсендіру" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate pinned app 4" msgstr "Бекітілген 4-ші қолданбаны белсендіру" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate pinned app 5" msgstr "Бекітілген 5-ші қолданбаны белсендіру" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate pinned app 6" msgstr "Бекітілген 6-шы қолданбаны белсендіру" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate pinned app 7" msgstr "Бекітілген 7-ші қолданбаны белсендіру" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate pinned app 8" msgstr "Бекітілген 8-ші қолданбаны белсендіру" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate pinned app 9" msgstr "Бекітілген 9-шы қолданбаны белсендіру" #: data/50-gnome-shell-launchers.xml:46 msgid "Open new window of pinned app 1" msgstr "Бекітілген 1-ші қолданбаның жаңа терезесін ашу" #: data/50-gnome-shell-launchers.xml:50 msgid "Open new window of pinned app 2" msgstr "Бекітілген 2-ші қолданбаның жаңа терезесін ашу" #: data/50-gnome-shell-launchers.xml:54 msgid "Open new window of pinned app 3" msgstr "Бекітілген 3-ші қолданбаның жаңа терезесін ашу" #: data/50-gnome-shell-launchers.xml:58 msgid "Open new window of pinned app 4" msgstr "Бекітілген 4-ші қолданбаның жаңа терезесін ашу" #: data/50-gnome-shell-launchers.xml:62 msgid "Open new window of pinned app 5" msgstr "Бекітілген 5-ші қолданбаның жаңа терезесін ашу" #: data/50-gnome-shell-launchers.xml:66 msgid "Open new window of pinned app 6" msgstr "Бекітілген 6-шы қолданбаның жаңа терезесін ашу" #: data/50-gnome-shell-launchers.xml:70 msgid "Open new window of pinned app 7" msgstr "Бекітілген 7-ші қолданбаның жаңа терезесін ашу" #: data/50-gnome-shell-launchers.xml:74 msgid "Open new window of pinned app 8" msgstr "Бекітілген 8-ші қолданбаның жаңа терезесін ашу" #: data/50-gnome-shell-launchers.xml:78 msgid "Open new window of pinned app 9" msgstr "Бекітілген 9-шы қолданбаның жаңа терезесін ашу" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2274 msgid "Screenshots" msgstr "Скриншоттар" #: data/50-gnome-shell-screenshots.xml:9 #: data/org.gnome.shell.gschema.xml.in:287 msgid "Take a screenshot interactively" msgstr "Скриншотты интерактивті түрде түсіру" #: data/50-gnome-shell-screenshots.xml:12 #: data/org.gnome.shell.gschema.xml.in:299 msgid "Take a screenshot" msgstr "Скриншотты түсіру" #: data/50-gnome-shell-screenshots.xml:15 #: data/org.gnome.shell.gschema.xml.in:295 msgid "Take a screenshot of a window" msgstr "Терезе скриншотын түсіру" #: data/50-gnome-shell-screenshots.xml:18 #: data/org.gnome.shell.gschema.xml.in:291 msgid "Record a screencast interactively" msgstr "Скринкастты интерактивті түрде жазу" #: data/50-gnome-shell-system.xml:6 js/ui/messageTray.js:1298 msgid "System" msgstr "Жүйе" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "Хабарламалар тізімін көрсету" #: data/50-gnome-shell-system.xml:12 msgid "Open the quick settings menu" msgstr "Жылдам баптаулар мәзірін ашу" #: data/50-gnome-shell-system.xml:15 msgid "Focus the active notification" msgstr "Белсенді хабарламаға фокусты орнату" #: data/50-gnome-shell-system.xml:18 msgid "Show the overview" msgstr "Шолуды көрсету" #: data/50-gnome-shell-system.xml:21 msgid "Show all apps" msgstr "Барлық қолданбаларды көрсету" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "GNOME Shell" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "Терезелерді басқару мен қолданбаларды жөнелту" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" "Alt-F2 ішінен өндірушілер мен сынаушылар үшін пайдалы ішкі саймандарды іске " "қосу" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Alt-F2 сұхбат арқылы қолжетерлік болатын ішкі жөндеу мен бақылау " "саймандарына қатынауды рұқсат ету." #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "Іске қосу үшін кеңейтулердің UUID-ры" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "GNOME Shell кеңейтулерінде UUID қасиеті бар; бұл кілт жүктелетін кеңейтулер " "тізімін сақтайды. Жүйеге кірген кезде жүктелем дейтін кеңейту осы тізімде " "болуы тиіс. Бұл тізімді org.gnome.Shell ішіндегі EnableExtension және " "DisableExtension DBus тәсілдерімен де өзгертуге болады." #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "Мәжбүрлі сөндіру үшін кеңейтулер UUID-лары" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" "GNOME Shell кеңейтулерінде UUID қасиеті бар; бұл кілт сөндіру үшін " "кеңейтулер тізімін сақтайды, олар қазіргі режимде іске қосылған болса да. " "Сонымен қатар, бұл тізімді org.gnome.Shell EnableExtension және " "DisableExtension D-Bus тәсілдері арқылы түзетуге болады. Бұл кілт \"enabled-" "extensions\" баптауын үстінен басады." #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "Пайдаланушы кеңейтулерін сөндіру" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" "\"enabled-extension\" баптауын тимей-ақ, пайдаланушы іске қосқан барлық " "кеңейтулерді сөндіру." #: data/org.gnome.shell.gschema.xml.in:45 msgid "Allow extension installation" msgstr "Кеңейтуді орнатуды рұқсат ету" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "Allow users to install extensions in their home folder. If disabled, the " "InstallRemoteExtension D-Bus method will fail, and extensions are only " "loaded from system directories on startup. It does not affect extensions " "that are already loaded, so a change only takes full effect on the next " "login." msgstr "" "Пайдаланушыларға өз үй бумасына кеңейтулерді орнатуға рұқсат ету. " "Сөндірілсе, InstallRemoteExtension D-Bus әдісі сәтсіз болады, ал кеңейтулер " "жүйе іске қосылған кезде тек жүйелік бумалардан жүктелетін болады. Ол қазір " "жүктелген кеңейтулерге әсер етпейді, сондықтан өзгеріс тек келесі кіруге " "толық күшіне енеді." #: data/org.gnome.shell.gschema.xml.in:56 msgid "Disables the validation of extension version compatibility" msgstr "Кеңейту нұсқасы үйлесімділігінің расталуын сөндіреді" #: data/org.gnome.shell.gschema.xml.in:57 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "GNOME Shell тек ағымдағы орындалып жатқан нұсқаны қолдаймын деп хабарлайтын " "кеңейтулерді жүктейтін болады. Бұл опцияны іске қосу ол мүмкіндікті " "сөндіреді, және кеңейту қолдайтын нұсқасына қарамастан жүктеп көретін болады." #: data/org.gnome.shell.gschema.xml.in:65 msgid "List of desktop file IDs for favorite applications" msgstr "Таңдамалы қолданбалар үшін desktop файлдары ID-нің тізімі" #: data/org.gnome.shell.gschema.xml.in:66 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" "Осы анықтағыштарға сәйкес келетін қолданбалар таңдамалылар аймағында " "көрсетілетін болады." #: data/org.gnome.shell.gschema.xml.in:73 msgid "History for command (Alt-F2) dialog" msgstr "Командалар сұхбаты (Alt-F2) үшін тарихы" #. Translators: looking glass is a debugger and inspector tool, see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/docs/looking-glass.md #: data/org.gnome.shell.gschema.xml.in:78 msgid "History for the looking glass dialog" msgstr "Іздеу сұхбатының тарихы" #: data/org.gnome.shell.gschema.xml.in:82 msgid "Always show the “Log Out” action in the system menu" msgstr "Жүйелік мәзірде \"Жүйеден шығу\" нұсқасын әрқашан көрсету" #: data/org.gnome.shell.gschema.xml.in:83 msgid "" "This key overrides the automatic hiding of the “Log out” action in the " "system menu for logged-in situations where there is a single, local, non-" "system user and only a single available session type (e.g. GNOME on Wayland)." msgstr "" "Бұл кілт жалғыз, жергілікті, жүйелік емес пайдаланушы және тек бір ғана " "қолжетімді сеанс түрі (мысалы, Wayland-тағы GNOME) бар кірген жағдайлар үшін " "жүйе мәзірінде «Жүйеден шығу» әрекетін автоматты түрде жасыруды үстінен " "басады." #: data/org.gnome.shell.gschema.xml.in:92 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "Шифрленген немесе қашықтағы файлдық жүйелерді тіркеу парольдерін сақтау " "керек пе, соны көрсетеді" #: data/org.gnome.shell.gschema.xml.in:93 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "Қоршам шифрленген құрылғы немесе қашықтағы файлдық жүйе тіркелген кезде " "парольді сұрайды. Егер парольді болашақтағы қолданулар үшін сақтау керек " "болса, \"Парольді есте сақтау\" жалаушасын орнатыңыз. Бұл кілт жалаушаның " "бастапқы күйін орнатады." #: data/org.gnome.shell.gschema.xml.in:102 msgid "The last selected non-default power profile" msgstr "Соңғы таңдалған әдепкі емес эл. қорегі профилі" #: data/org.gnome.shell.gschema.xml.in:103 msgid "" "Some systems support more than two power profiles. In order to still support " "toggling between two profiles, this key records the last selected non-" "default profile." msgstr "" "Кейбір жүйелер екіден артық эл. корек профильдерін қолдайды. Екі профиль " "арасында ауысуды қолдау үшін бұл кілт соңғы таңдалған әдепкі емес профильді " "жазады." #: data/org.gnome.shell.gschema.xml.in:111 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "\"GNOME %s ішіне қош келдіңіз\" сұхбаты көрсетілген соңғы нұсқасы" #: data/org.gnome.shell.gschema.xml.in:112 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can " "be used to effectively disable the dialog." msgstr "" "Бұл кілт \"GNOME %s ішіне қош келдіңіз\" сұхбаты көрсетілген соңғы нұсқасын " "сипаттайды. Бос жол мүмкін болған ең ескі нұсқаны, ал үлкен сан әлі жоқ " "болып тұрған нұсқаларды сипаттайды. Бұл үлкен санды сұхбатты сөндіру үшін " "қолдануға болады." #: data/org.gnome.shell.gschema.xml.in:145 msgid "Layout of the app picker" msgstr "Қолданбалар таңдаушысының жаймасы" #: data/org.gnome.shell.gschema.xml.in:146 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" msgstr "" "Қолданбалар таңдаушысының жаймасы. Массивтегі әрбір жазба жеке бет болып " "табылады. Беттер GNOME Shell-да көрсетілетін ретімен сақталады. Әр бетте " "\"бағдарлама id\" → \"деректер\" жұбы бар. Қазіргі кезде мәндер келесідей " "сақталады 'деректер': • \"орын\": беттегі бағдарлама таңбашасының орны" #: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:172 msgid "Keybinding to shift between overview states" msgstr "Шолу күйлері арасында ауысу үшін пернелер комбинациясы" #: data/org.gnome.shell.gschema.xml.in:166 msgid "Keybinding to shift between session, window picker and app grid" msgstr "" "Сессия, терезелер таңдаушысы және қолданбалар торы арасында ауысу үшін " "пернелер комбинациясы" #: data/org.gnome.shell.gschema.xml.in:173 msgid "Keybinding to shift between app grid, window picker and session" msgstr "" "Қолданбалар торы, терезелер таңдаушысы және сессия арасында ауысу үшін " "пернелер комбинациясы" #: data/org.gnome.shell.gschema.xml.in:179 msgid "Keybinding to open the “Show Applications” view" msgstr "\"Қолданбаларды көрсету\" көрінісін ашу үшін пернелер комбинациясы" #: data/org.gnome.shell.gschema.xml.in:180 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "" "Көрініс ішінен \"Қолданбаларды көрсету\" ашу үшін пернелер комбинациясы." #: data/org.gnome.shell.gschema.xml.in:187 msgid "Keybinding to open the overview" msgstr "Шолуды ашу үшін пернелер комбинациясы" #: data/org.gnome.shell.gschema.xml.in:188 msgid "Keybinding to open the Activities Overview." msgstr "Көріністі ашу үшін пернелер комбинациясы." #: data/org.gnome.shell.gschema.xml.in:194 msgid "Keybinding to toggle the visibility of the notification list" msgstr "" "Хабарламалар тізімінің көрінуін іске қосу/сөндіру үшін пернелер комбинациясы" #: data/org.gnome.shell.gschema.xml.in:195 msgid "Keybinding to toggle the visibility of the notification list." msgstr "" "Хабарламалар тізімінің көрінуін іске қосу/сөндіру үшін пернелер комбинациясы." #: data/org.gnome.shell.gschema.xml.in:201 msgid "Keybinding to toggle the quick settings menu" msgstr "Жылдам мәзірді ашу/жабу үшін пернелер комбинациясы" #: data/org.gnome.shell.gschema.xml.in:202 msgid "Keybinding to toggle the quick settings menu." msgstr "Жылдам мәзірді ашу/жабу үшін пернелер комбинациясы." #: data/org.gnome.shell.gschema.xml.in:208 msgid "Keybinding to focus the active notification" msgstr "Белсенді ескертуге фокусты ауыстыру пернелер комбинациясы" #: data/org.gnome.shell.gschema.xml.in:209 msgid "Keybinding to focus the active notification." msgstr "Белсенді ескертуге фокусты ауыстыру пернелер комбинациясы." #: data/org.gnome.shell.gschema.xml.in:215 msgid "Switch to application 1" msgstr "1-ші қолданбаға ауысу" #: data/org.gnome.shell.gschema.xml.in:219 msgid "Switch to application 2" msgstr "2-ші қолданбаға ауысу" #: data/org.gnome.shell.gschema.xml.in:223 msgid "Switch to application 3" msgstr "3-ші қолданбаға ауысу" #: data/org.gnome.shell.gschema.xml.in:227 msgid "Switch to application 4" msgstr "4-ші қолданбаға ауысу" #: data/org.gnome.shell.gschema.xml.in:231 msgid "Switch to application 5" msgstr "5-ші қолданбаға ауысу" #: data/org.gnome.shell.gschema.xml.in:235 msgid "Switch to application 6" msgstr "6-шы қолданбаға ауысу" #: data/org.gnome.shell.gschema.xml.in:239 msgid "Switch to application 7" msgstr "7-ші қолданбаға ауысу" #: data/org.gnome.shell.gschema.xml.in:243 msgid "Switch to application 8" msgstr "8-ші қолданбаға ауысу" #: data/org.gnome.shell.gschema.xml.in:247 msgid "Switch to application 9" msgstr "9-шы қолданбаға ауысу" #: data/org.gnome.shell.gschema.xml.in:251 msgid "Open a new instance of application 1" msgstr "1-ші қолданбаның жаңа данасын ашу" #: data/org.gnome.shell.gschema.xml.in:255 msgid "Open a new instance of application 2" msgstr "2-ші қолданбаның жаңа данасын ашу" #: data/org.gnome.shell.gschema.xml.in:259 msgid "Open a new instance of application 3" msgstr "3-ші қолданбаның жаңа данасын ашу" #: data/org.gnome.shell.gschema.xml.in:263 msgid "Open a new instance of application 4" msgstr "4-ші қолданбаның жаңа данасын ашу" #: data/org.gnome.shell.gschema.xml.in:267 msgid "Open a new instance of application 5" msgstr "5-ші қолданбаның жаңа данасын ашу" #: data/org.gnome.shell.gschema.xml.in:271 msgid "Open a new instance of application 6" msgstr "6-шы қолданбаның жаңа данасын ашу" #: data/org.gnome.shell.gschema.xml.in:275 msgid "Open a new instance of application 7" msgstr "7-ші қолданбаның жаңа данасын ашу" #: data/org.gnome.shell.gschema.xml.in:279 msgid "Open a new instance of application 8" msgstr "8-ші қолданбаның жаңа данасын ашу" #: data/org.gnome.shell.gschema.xml.in:283 msgid "Open a new instance of application 9" msgstr "9-шы қолданбаның жаңа данасын ашу" #: data/org.gnome.shell.gschema.xml.in:308 #: data/org.gnome.shell.gschema.xml.in:335 msgid "Limit switcher to current workspace." msgstr "Ауыстырғышты ағымдағы жұмыс орнымен шектеу." #: data/org.gnome.shell.gschema.xml.in:309 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "Таңдалса, ауыстырғышта тек ағымдағы жұмыс орнындағы терезелері бар " "қолданбалар көрсетіледі. Болмаса, барлық қолданбалар болады." #: data/org.gnome.shell.gschema.xml.in:326 msgid "The application icon mode." msgstr "Қолданбаның таңбаша режимі." #: data/org.gnome.shell.gschema.xml.in:327 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-only” " "(shows only the application icon) or “both”." msgstr "" "Терезелер ауыстырғышта қалай көрсетілетінін сипаттайды. Мүмкін мәндері " "\"thumbnail-only\" (терезенің кіші көрінісі көрсетіледі), \"app-icon-only\" " "(тек қолданба таңбашасы көрсетіледі) немесе \"both\" (екеуі де)." #: data/org.gnome.shell.gschema.xml.in:336 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "Таңдалса, ауыстырғышта тек ағымдағы жұмыс орнындағы терезелер көрсетіледі. " "Болмаса, барлық терезелер болады." #: data/org.gnome.shell.gschema.xml.in:346 msgid "Locations" msgstr "Орналасулар" #: data/org.gnome.shell.gschema.xml.in:347 msgid "The locations to show in world clocks" msgstr "Дүниежүзілік сағаттарда көрсетілетін орналасулар" #: data/org.gnome.shell.gschema.xml.in:357 msgid "Automatic location" msgstr "Автоматты орналасу" #: data/org.gnome.shell.gschema.xml.in:358 msgid "Whether to fetch the current location or not" msgstr "Ағымдағы орналасуды алу керек пе, жоқ па" #: data/org.gnome.shell.gschema.xml.in:365 msgid "Location" msgstr "Орналасу" #: data/org.gnome.shell.gschema.xml.in:366 msgid "The location for which to show a forecast" msgstr "Ауа райы болжамын көрсету үшін орналасу" #. Keep in sync with subprojects/extensions-app #: data/org.gnome.Shell.Extensions.desktop.in.in:5 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/data/ui/extensions-window.ui:57 msgid "Extensions" msgstr "Кеңейтулер" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "Желілік кіру" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:275 msgid "Something’s gone wrong" msgstr "Бір нәрсе қате кетті" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" "Кешіріңіз, мәселе орын алды: бұл кеңейту үшін баптауларды көрсету мүмкін " "емес. Бұл мәселені кеңейту авторларына хабарлауды ұсынамыз." #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "Техникалық ақпараты" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "Үй парағы" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 msgid "Visit extension homepage" msgstr "Кеңейтудің үй парағын шолу" #: js/gdm/authPrompt.js:151 js/gdm/loginDialog.js:465 #: js/ui/audioDeviceSelection.js:66 js/ui/components/networkAgent.js:113 #: js/ui/components/polkitAgent.js:144 js/ui/endSessionDialog.js:437 #: js/ui/extensionDownloader.js:276 js/ui/shellMountOperation.js:382 #: js/ui/shellMountOperation.js:392 msgid "Cancel" msgstr "Бас тарту" #: js/gdm/authPrompt.js:317 js/ui/components/networkAgent.js:213 #: js/ui/components/networkAgent.js:233 js/ui/components/networkAgent.js:265 #: js/ui/components/networkAgent.js:298 js/ui/components/networkAgent.js:337 #: js/ui/components/networkAgent.js:350 js/ui/components/polkitAgent.js:286 #: js/ui/shellMountOperation.js:332 msgid "Password" msgstr "Пароль" #: js/gdm/loginDialog.js:326 msgid "Choose Session" msgstr "Сессияны таңдау" #. Translators: is running for #: js/gdm/loginDialog.js:423 #, javascript-format msgid "" "Remote login is not possible because a remote session is already running for " "%s. To login remotely, you must log out from the remote session or force " "stop it." msgstr "" "Қашықтан кіру мүмкін емес, себебі %s үшін қашықтағы сеанс қазір орындалып " "тұр. Қашықтан кіру үшін қашықтағы сеанстан шығу керек немесе оны мәжбүрлі " "түрде тоқтату керек." #. Translators: is running for #: js/gdm/loginDialog.js:426 #, javascript-format msgid "" "Login is not possible because a remote session is already running for %s. To " "login, you must log out from the remote session or force stop it." msgstr "" "Кіру мүмкін емес, себебі %s үшін қашықтағы сеанс қазір орындалып тұр. Кіру " "үшін қашықтағы сеанстан шығу керек немесе оны мәжбүрлі түрде тоқтату керек." #. Translators: is running for #: js/gdm/loginDialog.js:429 #, javascript-format msgid "" "Remote login is not possible because a local session is already running for " "%s. To login remotely, you must log out from the local session or force stop " "it." msgstr "" "Қашықтан кіру мүмкін емес, себебі %s үшін жергілікті сеанс қазір орындалып " "тұр. Қашықтан кіру үшін жергілікті сеанстан шығу керек немесе оны мәжбүрлі " "түрде тоқтату керек." #. Translators: is running for #: js/gdm/loginDialog.js:432 #, javascript-format msgid "" "Login is not possible because a session is already running for %s. To login, " "you must log out from the session or force stop it." msgstr "" "Кіру мүмкін емес, себебі %s үшін сеанс қазір орындалып тұр. Кіру үшін " "сеанстан шығу керек немесе оны мәжбүрлі түрде тоқтату керек." #: js/gdm/loginDialog.js:441 msgid "Session Already Running" msgstr "Сеанс іске қосулы болып тұр" #: js/gdm/loginDialog.js:453 msgid "" "Force stopping will quit any running apps and processes, and could result in " "data loss" msgstr "" "Мәжбүрлі түрде тоқтату кез келген қосылып тұрған қолданбалар мен процестерін " "аяқтайды және деректердің жоғалуына әкелуі мүмкін" #: js/gdm/loginDialog.js:473 msgid "Force Stop" msgstr "Мәжбүрлі тоқтату" #: js/gdm/loginDialog.js:541 msgid "Not listed?" msgstr "Тізімде жоқсыз ба?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:1009 #, javascript-format msgid "(e.g., user or %s)" msgstr "(мыс., пайдаланушы немесе %s)" #: js/gdm/loginDialog.js:1014 js/ui/components/networkAgent.js:257 #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:326 msgid "Username" msgstr "Пайдаланушы аты" #: js/gdm/loginDialog.js:1080 msgid "Login Attempt Timed Out" msgstr "Жүйеге кіру талабының уақыты бітті" #: js/gdm/loginDialog.js:1081 msgid "Login took too long, please try again" msgstr "Жүйеге кіру талабы тым көп уақыт алды, қайталап көріңіз" #: js/gdm/loginDialog.js:1426 msgid "Login Window" msgstr "Жүйеге кіру терезесі" #: js/gdm/util.js:496 msgid "Authentication error" msgstr "Аутентификация қатесі" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:727 msgid "(or swipe finger across reader)" msgstr "(немесе саусағыңызды оқу құралынан өткізіңіз)" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:732 msgid "(or place finger on reader)" msgstr "(немесе саусақты оқу құралына орналастырыңыз)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:91 msgctxt "search-result" msgid "Power Off" msgstr "Сөндіру" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:94 msgid "power off;poweroff;shutdown;halt;stop" msgstr "power off;poweroff;shutdown;halt;stop;сөндіру;қайта қосу;тоқтату" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:99 msgctxt "search-result" msgid "Restart" msgstr "Қайта қосу" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:102 msgid "reboot;restart;" msgstr "reboot;restart;қайта жүктеу;қайта іске қосу;" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:107 msgctxt "search-result" msgid "Lock Screen" msgstr "Экранды блоктау" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:110 msgid "lock screen" msgstr "экранды блоктау" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:115 msgctxt "search-result" msgid "Log Out" msgstr "Жүйеден шығу" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:118 msgid "logout;log out;sign off" msgstr "logout;log out;sign off;шығу;жүйеден шығу" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:123 msgctxt "search-result" msgid "Suspend" msgstr "Ұйықтату" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:126 msgid "suspend;sleep" msgstr "ұйықтату" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:131 msgctxt "search-result" msgid "Switch User" msgstr "Пайдаланушыны ауыстыру" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:134 msgid "switch user" msgstr "пайдаланушыны ауыстыру" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:141 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "" "lock orientation;unlock orientation;screen;rotation;бұрылуды құлыптау;экран " "бұрылуы" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:146 msgctxt "search-result" msgid "Take a Screenshot" msgstr "Скриншотты түсіру" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:149 msgid "screenshot;screencast;snip;capture;record" msgstr "" "screenshot;screencast;snip;capture;record;скриншот;скринкаст;жазу;ұстау" #: js/misc/systemActions.js:249 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "Экранды бұруды құлыптан босату" #: js/misc/systemActions.js:250 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "Экранды бұруды құлыптау" #: js/misc/util.js:130 msgid "Command not found" msgstr "Команда табылмады" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:170 msgid "Could not parse command:" msgstr "Команданы талдау мүмкін емес:" #: js/misc/util.js:178 #, javascript-format msgid "Execution of “%s” failed:" msgstr "\"%s\" жөнелту сәтсіз:" #: js/misc/dateUtils.js:69 msgid "Just now" msgstr "Жаңа ғана" #: js/misc/dateUtils.js:72 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d минут бұрын" #: js/misc/dateUtils.js:79 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d сағат бұрын" #: js/misc/dateUtils.js:85 js/ui/dateMenu.js:183 msgid "Yesterday" msgstr "Кеше" #: js/misc/dateUtils.js:88 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d күн бұрын" #: js/misc/dateUtils.js:95 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d апта бұрын" #: js/misc/dateUtils.js:102 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%d ай бұрын" #: js/misc/dateUtils.js:108 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "%d жыл бұрын" #. Translators: Time in 24h format #: js/misc/dateUtils.js:155 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/dateUtils.js:161 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "Кеше, %H∶%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/dateUtils.js:167 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/dateUtils.js:173 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%B %-d, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/dateUtils.js:179 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%B %-d %Y, %H∶%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/dateUtils.js:184 msgid "%l∶%M %p" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/dateUtils.js:190 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "Кеше, %H∶%M" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/dateUtils.js:196 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/dateUtils.js:202 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%B %-d, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/dateUtils.js:208 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%B %-d %Y, %H∶%M" #: js/portalHelper/main.js:98 msgid "Your connection seems to be secure" msgstr "Байланысыңыз қауіпсіз болып көрінеді" #: js/portalHelper/main.js:104 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "Бұл қатынау нүктесіне кіруге байланысыңыз қауіпсіз емес. Бұл парақта " "енгізілген парольдер немесе басқа да ақпаратыңызды сол желідегі адамдар көре " "алады." #: js/portalHelper/main.js:115 msgid "Hotspot Login" msgstr "Қатынау нүктесіне кіру" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:51 js/ui/inhibitShortcutsDialog.js:92 msgid "Deny" msgstr "Тыйым салу" #: js/ui/accessDialog.js:52 js/ui/inhibitShortcutsDialog.js:101 msgid "Allow" msgstr "Рұқсат ету" #: js/ui/appDisplay.js:1769 msgid "Unnamed Folder" msgstr "Атаусыз бума" #: js/ui/appFavorites.js:163 #, javascript-format msgid "%s has been pinned to the dash." msgstr "%s қолданбалар панеліне бекітілді." #: js/ui/appFavorites.js:194 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "%s қолданбалар панелінен босатылды." #: js/ui/appFavorites.js:208 js/ui/main.js:281 msgid "Undo" msgstr "Болдырмау" #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:49 msgid "Open Windows" msgstr "Ашық терезелер" #: js/ui/appMenu.js:57 msgid "New Window" msgstr "Жаңа терезе" #: js/ui/appMenu.js:84 msgid "App Details" msgstr "Қолданба ақпараты" #: js/ui/appMenu.js:100 msgid "Quit" msgstr "Шығу" #: js/ui/appMenu.js:160 js/ui/dash.js:248 msgid "Unpin" msgstr "Босату" #: js/ui/appMenu.js:161 msgid "Pin to Dash" msgstr "Қолданбалар панеліне бекіту" #: js/ui/appMenu.js:178 msgid "Launch using Integrated Graphics Card" msgstr "Құрамындағы графикалық картаны пайдаланып жөнелту" #: js/ui/appMenu.js:179 msgid "Launch using Discrete Graphics Card" msgstr "Бөлек графикалық картаны пайдаланып жөнелту" #: js/ui/audioDeviceSelection.js:46 msgid "Select Audio Device" msgstr "Аудио құрылғысын таңдаңыз" #: js/ui/audioDeviceSelection.js:61 js/ui/status/volume.js:81 msgid "Sound Settings" msgstr "Дыбыс баптаулары" #: js/ui/audioDeviceSelection.js:74 msgid "Headphones" msgstr "Құлаққап" #: js/ui/audioDeviceSelection.js:76 msgid "Headset" msgstr "Микрофонды құлаққап" #: js/ui/audioDeviceSelection.js:78 js/ui/status/volume.js:356 msgid "Microphone" msgstr "Микрофон" #: js/ui/backgroundMenu.js:13 msgid "Change Background…" msgstr "Фонды өзгерту…" #: js/ui/backgroundMenu.js:15 msgid "Display Settings" msgstr "Экран баптаулары" #: js/ui/backgroundMenu.js:16 msgid "Settings" msgstr "Баптаулар" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:37 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:63 msgctxt "grid sunday" msgid "S" msgstr "Жк" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:65 msgctxt "grid monday" msgid "M" msgstr "Дс" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:67 msgctxt "grid tuesday" msgid "T" msgstr "Сс" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:69 msgctxt "grid wednesday" msgid "W" msgstr "Ср" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:71 msgctxt "grid thursday" msgid "T" msgstr "Бс" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:73 msgctxt "grid friday" msgid "F" msgstr "Жм" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:75 msgctxt "grid saturday" msgid "S" msgstr "Сн" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:426 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:436 msgid "%OB %Y" msgstr "%OB %Y" #: js/ui/calendar.js:498 msgid "Previous month" msgstr "Өткен ай" #: js/ui/calendar.js:516 msgid "Next month" msgstr "Келесі ай" #: js/ui/calendar.js:667 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:726 msgid "Week %V" msgstr "Апта %V" #: js/ui/calendar.js:918 msgid "No Notifications" msgstr "Хабарламалар жоқ" #: js/ui/calendar.js:974 msgid "Do Not Disturb" msgstr "Мазаламаңыз" #: js/ui/calendar.js:995 msgid "Clear" msgstr "Тазарту" #: js/ui/calendar.js:999 msgctxt "action" msgid "Clear all notifications" msgstr "Барлық хабарламаларды тазарту" #. Translators: %s is an application name #: js/ui/closeDialog.js:42 #, javascript-format msgid "“%s” Is Not Responding" msgstr "\"%s\" жауап бермейді" #: js/ui/closeDialog.js:43 msgid "" "You may choose to wait a short while for it to continue or force the app to " "quit entirely" msgstr "" "Жалғастыруды біраз күте аласыз немесе қолданбаны толығымен жабуға мәжбүрлей " "аласыз" #: js/ui/closeDialog.js:71 msgid "Force Quit" msgstr "Мәжбүрлі тоқтату" #: js/ui/closeDialog.js:76 msgid "Wait" msgstr "Күту" #: js/ui/components/automountManager.js:82 msgid "External drive connected" msgstr "Сыртқы диск қосылды" #: js/ui/components/automountManager.js:94 msgid "External drive disconnected" msgstr "Сыртқы диск алынды" #: js/ui/components/automountManager.js:208 msgid "Unable to unlock volume" msgstr "Томды босату мүмкін емес" #: js/ui/components/automountManager.js:209 msgid "The installed udisks version does not support the PIM setting" msgstr "Орнатылған udisks нұсқасы PIM орнатуды қолдамайды" #. Translators: %s is the name of a partition on a external drive #: js/ui/components/autorunManager.js:189 #, javascript-format msgid "“%s” connected" msgstr "\"%s\" байланысқан" #: js/ui/components/autorunManager.js:190 msgid "Disk can now be used" msgstr "Диск енді пайдаланылуы мүмкін" #: js/ui/components/autorunManager.js:202 #, javascript-format msgid "Open with %s" msgstr "%s көмегімен ашу" #: js/ui/components/networkAgent.js:95 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router" msgstr "" "Қосымша түрде, сіз роутердегі \"WPS\" батырмасын басу арқылы байланыса аласыз" #: js/ui/components/networkAgent.js:107 js/ui/status/bluetooth.js:245 #: js/ui/status/network.js:360 js/ui/status/network.js:444 msgid "Connect" msgstr "Байланысу" #: js/ui/components/networkAgent.js:222 msgid "Key" msgstr "Кілт" #: js/ui/components/networkAgent.js:273 js/ui/components/networkAgent.js:312 msgid "Private key password" msgstr "Жеке кілт паролі" #: js/ui/components/networkAgent.js:306 msgid "Identity" msgstr "Идентификация" #: js/ui/components/networkAgent.js:332 msgid "Service" msgstr "Қызмет" #: js/ui/components/networkAgent.js:370 js/ui/components/networkAgent.js:406 #: js/ui/components/networkAgent.js:743 js/ui/components/networkAgent.js:764 msgid "Authentication required" msgstr "Аутентификация керек" #: js/ui/components/networkAgent.js:371 js/ui/components/networkAgent.js:744 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network “%s”" msgstr "" "\"%s\" сымсыз желісіне қатынау үшін парольдер немесе шифрлеу кілттері керек" #: js/ui/components/networkAgent.js:375 js/ui/components/networkAgent.js:748 msgid "Wired 802.1X authentication" msgstr "Сымды 802.1X аутентификациясы" #: js/ui/components/networkAgent.js:378 msgid "Network name" msgstr "Желі атауы" #: js/ui/components/networkAgent.js:386 js/ui/components/networkAgent.js:752 msgid "DSL authentication" msgstr "DSL аутентификациясы" #: js/ui/components/networkAgent.js:393 js/ui/components/networkAgent.js:757 msgid "PIN code required" msgstr "PIN коды керек" #: js/ui/components/networkAgent.js:394 js/ui/components/networkAgent.js:758 msgid "PIN code is needed for the mobile broadband device" msgstr "Сымсыз кеңжолақты құрылғы үшін PIN коды керек" #: js/ui/components/networkAgent.js:396 msgid "PIN" msgstr "PIN" #: js/ui/components/networkAgent.js:407 js/ui/components/networkAgent.js:749 #: js/ui/components/networkAgent.js:753 js/ui/components/networkAgent.js:765 #: js/ui/components/networkAgent.js:769 #, javascript-format msgid "A password is required to connect to “%s”" msgstr "\"%s\" үшін байланысты орнату үшін пароль керек" #: js/ui/components/networkAgent.js:768 msgid "VPN password" msgstr "VPN паролі" #: js/ui/components/polkitAgent.js:44 msgid "Authentication Required" msgstr "Аутентификация керек" #: js/ui/components/polkitAgent.js:84 msgid "Administrator" msgstr "Әкімші" #: js/ui/components/polkitAgent.js:149 msgid "Authenticate" msgstr "Аутентификация" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:263 js/ui/shellMountOperation.js:415 msgid "Sorry, that didn’t work. Please try again." msgstr "Кешіріңіз, талап сәтсіз. Қайтадан көріңіз." #: js/ui/ctrlAltTab.js:23 js/ui/overviewControls.js:404 msgid "Windows" msgstr "Терезелер" #: js/ui/dash.js:204 js/ui/dash.js:250 msgid "Show Apps" msgstr "Қолданбаларды көрсету" #. Translators: this is the name of the dock/favorites area on #. the bottom of the overview #: js/ui/dash.js:408 msgid "Dash" msgstr "Dash" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:99 msgid "%B %-d %Y" msgstr "%B %-d %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:106 msgid "%A %B %e %Y" msgstr "%A %B %e %Y" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:172 msgctxt "calendar heading" msgid "%B %-d" msgstr "%B %-d" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:175 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%B %-d %Y" #: js/ui/dateMenu.js:181 msgid "Today" msgstr "Бүгін" #: js/ui/dateMenu.js:185 msgid "Tomorrow" msgstr "Ертең" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:216 msgctxt "event list time" msgid "All Day" msgstr "Толық күн" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:238 msgid "%m/%d" msgstr "%m/%d" #: js/ui/dateMenu.js:289 msgid "No Events" msgstr "Оқиғалар жоқ" #: js/ui/dateMenu.js:411 msgid "Add World Clocks…" msgstr "Дүниежүзілік сағаттарды қосу…" #: js/ui/dateMenu.js:412 msgid "World Clocks" msgstr "Дүниежүзілік сағаттар" #: js/ui/dateMenu.js:702 msgid "Loading…" msgstr "Жүктеу…" #: js/ui/dateMenu.js:712 msgid "Go Online for Weather Information" msgstr "Ауа райы ақпаратын алу үшін желіге байланысыңыз" #: js/ui/dateMenu.js:714 msgid "Weather Information Unavailable" msgstr "Ауа райы ақпараты қолжетімді емес" #: js/ui/dateMenu.js:724 msgid "Weather" msgstr "Ауа райы" #: js/ui/dateMenu.js:726 msgid "Select Weather Location…" msgstr "Ауа райы орнын таңдау…" #: js/ui/endSessionDialog.js:47 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "Шығу: %s" #: js/ui/endSessionDialog.js:48 msgctxt "title" msgid "Log Out" msgstr "Шығу" #: js/ui/endSessionDialog.js:51 #, javascript-format msgid "%s will be logged out automatically in %d second" msgid_plural "%s will be logged out automatically in %d seconds" msgstr[0] "%s жүйеден автоматты түрде %d секундтан кейін шығады" #: js/ui/endSessionDialog.js:57 #, javascript-format msgid "You will be logged out automatically in %d second" msgid_plural "You will be logged out automatically in %d seconds" msgstr[0] "Сіз жүйеден автоматты түрде %d секундтан кейін шығасыз" #: js/ui/endSessionDialog.js:64 msgctxt "button" msgid "Log Out" msgstr "Шығу" #: js/ui/endSessionDialog.js:70 js/ui/status/system.js:174 msgctxt "title" msgid "Power Off" msgstr "Сөндіру" #: js/ui/endSessionDialog.js:71 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Жаңартуларды орнату және сөндіру" #: js/ui/endSessionDialog.js:74 #, javascript-format msgid "The system will power off automatically in %d second" msgid_plural "The system will power off automatically in %d seconds" msgstr[0] "Жүйе %d секундтан кейін автоматты түрде сөндіріледі" #: js/ui/endSessionDialog.js:78 js/ui/endSessionDialog.js:97 msgctxt "checkbox" msgid "Install pending software updates" msgstr "Кезекте тұрған БҚ жаңартуларын орнату" #: js/ui/endSessionDialog.js:82 msgctxt "button" msgid "Power Off" msgstr "Сөндіру" #: js/ui/endSessionDialog.js:89 msgctxt "title" msgid "Restart" msgstr "Қайта қосу" #: js/ui/endSessionDialog.js:90 msgctxt "title" msgid "Install Updates & Restart" msgstr "Жаңартуларды орнату және қайта қосу" #: js/ui/endSessionDialog.js:93 #, javascript-format msgid "The system will restart automatically in %d second" msgid_plural "The system will restart automatically in %d seconds" msgstr[0] "Жүйе %d секундтан кейін автоматты түрде қайта қосылады" #: js/ui/endSessionDialog.js:101 msgctxt "button" msgid "Restart" msgstr "Қайта қосу" #: js/ui/endSessionDialog.js:109 msgctxt "title" msgid "Restart & Install Updates" msgstr "Қайта қосу және жаңартуларды орнату" #: js/ui/endSessionDialog.js:112 #, javascript-format msgid "The system will automatically restart and install updates in %d second" msgid_plural "" "The system will automatically restart and install updates in %d seconds" msgstr[0] "" "Жүйе %d секундтан кейін автоматты түрде қайта қосылады және жаңартуларды " "орнатады" #: js/ui/endSessionDialog.js:119 js/ui/endSessionDialog.js:140 msgctxt "button" msgid "Restart & Install" msgstr "Қайта қосу және орнату" #: js/ui/endSessionDialog.js:121 msgctxt "button" msgid "Install & Power Off" msgstr "Орнату және сөндіру" #: js/ui/endSessionDialog.js:122 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Жаңартулар орнатылғаннан кейін сөндіру" #: js/ui/endSessionDialog.js:129 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "Қайта қосу және жаңартуларды орнату" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:134 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "%s %s қайта қосылғаннан кейін орнатылатын болады. Орнатуды жаңарту ұзақ " "уақытты алуы мүмкін: деректердің қор көшірмесі бар екеніне және компьютер " "эл. желісіне жалғанып тұрғанына көз жеткізіңіз." #: js/ui/endSessionDialog.js:283 msgid "Low battery power: please plug in before installing updates" msgstr "" "Батарея заряд деңгейі аз: жаңартуларды орнату алдында эл. қорегі желісіне " "жалғаңыз" #: js/ui/endSessionDialog.js:292 msgid "Some applications are busy or have unsaved work" msgstr "Кейбір қолданбалар бос емес немесе сақталмаған жұмыстары бар" #: js/ui/endSessionDialog.js:297 msgid "Other users are logged in" msgstr "Басқа пайдаланушылар жүйеге кіріп тұр" #: js/ui/endSessionDialog.js:467 msgctxt "button" msgid "Boot Options" msgstr "Жүктеу параметрлері" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:672 #, javascript-format msgid "%s (remote)" msgstr "%s (қашықтағы)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:675 #, javascript-format msgid "%s (console)" msgstr "%s (консоль)" #: js/ui/extensionDownloader.js:280 msgid "Install" msgstr "Орнату" #: js/ui/extensionDownloader.js:286 msgid "Install Extension" msgstr "Кеңейтуді орнату" #: js/ui/extensionDownloader.js:287 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "extensions.gnome.org адресінен \"%s\" жүктеп алып, орнату керек пе?" #: js/ui/extensionSystem.js:352 msgid "Extension Updates Available" msgstr "Кеңейту жаңартулары дайын" #: js/ui/extensionSystem.js:353 msgid "Extension updates are ready to be installed" msgstr "Кеңейту жаңартулары орнатылуға дайын" #: js/ui/inhibitShortcutsDialog.js:70 msgid "Allow inhibiting shortcuts" msgstr "Пернелер жарлығын алмастыруды рұқсат ету" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:73 #, javascript-format msgid "The app %s wants to inhibit shortcuts" msgstr "%s қолданбасы пернелер жарлықтарын қолдануды блоктағысы келеді" #: js/ui/inhibitShortcutsDialog.js:74 msgid "An app wants to inhibit shortcuts" msgstr "Қолданба пернелер жарлықтарын қолдануды блоктағысы келеді" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:81 #, javascript-format msgid "You can restore shortcuts by pressing %s" msgstr "Сіз жарлықтарды %s басу арқылы қалпына келтіре аласыз" #: js/ui/kbdA11yDialog.js:34 msgid "Slow Keys Turned On" msgstr "Баяу пернелер іске қосылған" #: js/ui/kbdA11yDialog.js:35 msgid "Slow Keys Turned Off" msgstr "Баяу пернелер сөндірілген" #: js/ui/kbdA11yDialog.js:36 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "Сіз Shift пернесін 8 секунд бойы басулы ұстадыңыз. Бұл Баяу пернелер " "мүмкіндігінің жарлығы, ол пернетақта жұмысына әсер етеді." #: js/ui/kbdA11yDialog.js:42 msgid "Sticky Keys Turned On" msgstr "Жабысқақ пернелер іске қосылған" #: js/ui/kbdA11yDialog.js:43 msgid "Sticky Keys Turned Off" msgstr "Жабысқақ пернелер сөндірілген" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "Сіз Shift пернесін қатарынан 5 рет бастыңыз. Бұл Жабысқақ пернелер " "мүмкіндігінің жарлығы, ол пернетақта жұмысына әсер етеді." #: js/ui/kbdA11yDialog.js:47 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" "Сіз екі пернені бірге бастыңыз, немесе Shift пернесін қатарынан 5 рет " "бастыңыз. Бұл Жабысқақ пернелер мүмкіндігін сөндіреді, ол пернетақта " "жұмысына әсер етеді." #: js/ui/kbdA11yDialog.js:57 msgid "Leave On" msgstr "Іске қосулы қалдыру" #: js/ui/kbdA11yDialog.js:57 msgid "Turn On" msgstr "Іске қосу" #: js/ui/kbdA11yDialog.js:67 js/ui/status/network.js:455 msgid "Turn Off" msgstr "Сөндіру" #: js/ui/kbdA11yDialog.js:67 msgid "Leave Off" msgstr "Сөндірулі қалдыру" #: js/ui/keyboard.js:180 js/ui/status/keyboard.js:897 msgid "Keyboard Settings" msgstr "Пернетақта баптаулары" #: js/ui/lookingGlass.js:727 msgid "No extensions installed" msgstr "Кеңейтулер орнатылмаған" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:788 #, javascript-format msgid "%s has not emitted any errors" msgstr "%s ешбір қатені шығармады" #: js/ui/lookingGlass.js:794 msgid "Hide Errors" msgstr "Қателерді жасыру" #: js/ui/lookingGlass.js:798 js/ui/lookingGlass.js:875 msgid "Show Errors" msgstr "Қателерді көрсету" #: js/ui/lookingGlass.js:807 msgid "Active" msgstr "Белсенді" #: js/ui/lookingGlass.js:810 msgid "Inactive" msgstr "Белсенді емес" #: js/ui/lookingGlass.js:812 msgid "Error" msgstr "Қате" #: js/ui/lookingGlass.js:814 msgid "Out of date" msgstr "Ескірген" #: js/ui/lookingGlass.js:816 msgid "Downloading" msgstr "Жүктелуде" #: js/ui/lookingGlass.js:818 msgid "Deactivating" msgstr "Белсенді емес қылу" #: js/ui/lookingGlass.js:820 msgid "Activating" msgstr "Белсендіру" #: js/ui/lookingGlass.js:853 msgid "View Source" msgstr "Бастапқы кодын қарау" #: js/ui/lookingGlass.js:864 msgid "Web Page" msgstr "Веб парағы" #: js/ui/main.js:277 msgid "System was put in unsafe mode" msgstr "Жүйе қауіпсіз емес режимге қойылды" #: js/ui/main.js:278 msgid "Apps now have unrestricted access" msgstr "Қолданбаларда енді шектелмеген рұқсаттар бар" #: js/ui/main.js:338 msgid "Logged in as a privileged user" msgstr "Привилегияланған пайдаланушы ретінде жүйеге кірген" #: js/ui/main.js:339 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" "Привилегияланған пайдаланушы ретінде сессияны орындаудан қауіпсіздік " "салдарынан аулақ болу керек. Мүмкін болса, қалыпты пайдаланушы ретінде " "жүйеге кіріңіз." #: js/ui/main.js:387 msgid "Screen Lock disabled" msgstr "Экранды блоктау сөндірілген" #: js/ui/main.js:388 msgid "Screen Locking requires the GNOME display manager" msgstr "Экранды блоктау GNOME дисплейлер басқарушысын талап етеді" #. Translators: this is the string displayed in the header when a message #. source doesn't have a name #: js/ui/messageList.js:374 msgid "Unknown App" msgstr "Белгісіз қолданба" #: js/ui/messageTray.js:326 js/ui/messageTray.js:328 msgid "Notification sound" msgstr "Хабарландыру дыбысы" #: js/ui/mpris.js:198 msgid "Unknown artist" msgstr "Белгісіз әртіс" #: js/ui/mpris.js:208 msgid "Unknown title" msgstr "Белгісіз атауы" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:328 msgid "Type to search" msgstr "Іздеу үшін теріңіз" #: js/ui/overviewControls.js:392 msgid "Apps" msgstr "Қолданбалар" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:33 msgid "Overview" msgstr "Шолу" #: js/ui/padOsd.js:98 msgid "New shortcut…" msgstr "Жаңа жарлық…" #: js/ui/padOsd.js:151 msgid "App defined" msgstr "Қолданбамен анықталған" #: js/ui/padOsd.js:152 msgid "Show on-screen help" msgstr "Экрандағы көмекті көрсету" #: js/ui/padOsd.js:153 msgid "Switch monitor" msgstr "Мониторды ауыстыру" #: js/ui/padOsd.js:154 msgid "Assign keystroke" msgstr "Пернелер жарлығын тағайындау" #: js/ui/padOsd.js:223 msgid "Done" msgstr "Дайын" #: js/ui/padOsd.js:726 msgid "Edit…" msgstr "Түзету…" #: js/ui/padOsd.js:773 msgid "None" msgstr "Ешнәрсе" #: js/ui/padOsd.js:844 msgid "Press a button to configure" msgstr "Баптау үшін батырманы басыңыз" #: js/ui/padOsd.js:845 msgid "Press Esc to exit" msgstr "Шығу үшін Esc басыңыз" #: js/ui/padOsd.js:848 msgid "Press any key to exit" msgstr "Шығу үшін кез-келген батырманы басыңыз" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:423 msgid "Activities" msgstr "Көрініс" #: js/ui/panel.js:504 msgctxt "System menu in the top bar" msgid "System" msgstr "Жүйелік" #: js/ui/panel.js:678 msgid "Top Bar" msgstr "Үстідегі панель" #: js/ui/quickSettings.js:188 msgid "Open menu" msgstr "Мәзірді ашу" #: js/ui/runDialog.js:61 msgid "Run a Command" msgstr "Команданы орындау" #: js/ui/runDialog.js:76 msgid "Press ESC to close" msgstr "Жабу үшін ESC пернесін басыңыз" #: js/ui/runDialog.js:241 msgid "Restart is not available on Wayland" msgstr "Қайта қосу Wayland нұсқасында қолжетерсіз" #: js/ui/runDialog.js:246 msgid "Restarting…" msgstr "Қайта қосу…" #: js/ui/screenShield.js:233 msgid "GNOME needs to lock the screen" msgstr "GNOME экранды блоктау керек" #: js/ui/screenShield.js:274 js/ui/screenShield.js:667 msgid "Unable to lock" msgstr "Блоктау мүмкін емес" #: js/ui/screenShield.js:275 js/ui/screenShield.js:668 msgid "Lock was blocked by an app" msgstr "Блоктауды басқа қолданба болдырмады" #: js/ui/screenshot.js:1252 msgid "Selection" msgstr "Таңдау" #: js/ui/screenshot.js:1262 msgid "Area Selection" msgstr "Аймақты таңдау" #: js/ui/screenshot.js:1267 msgid "Screen" msgstr "Экран" #: js/ui/screenshot.js:1277 msgid "Screen Selection" msgstr "Экранды таңдау" #: js/ui/screenshot.js:1282 msgid "Window" msgstr "Терезе" #: js/ui/screenshot.js:1292 msgid "Window Selection" msgstr "Терезені таңдау" #. Translators: entry in the window right click menu. #: js/ui/screenshot.js:1317 js/ui/status/system.js:111 js/ui/windowMenu.js:28 msgid "Take Screenshot" msgstr "Скриншотты түсіру" #: js/ui/screenshot.js:1333 msgid "Record Screen" msgstr "Экранды жазу" #. Translators: since this string refers to an action, #. it needs to be phrased as a verb. #: js/ui/screenshot.js:1350 msgid "Capture" msgstr "Түсіру" #: js/ui/screenshot.js:1372 msgid "Show Pointer" msgstr "Курсорды көрсету" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1996 msgid "Screencasts" msgstr "Скринкасттар" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast From 07-17-2013 10:00:46 PM" #: js/ui/screenshot.js:2001 #, no-c-format msgid "Screencast From %d %t" msgstr "Скринкаст, уақыты %d %t" #. Translators: notification title. #: js/ui/screenshot.js:2047 msgid "Screencast recorded" msgstr "Скринкаст жазылды" #. Translators: notification title. #: js/ui/screenshot.js:2060 msgid "Screencast failed to start" msgstr "Скринкаст іске қосыла алмады" #. Translators: notification title. #: js/ui/screenshot.js:2066 msgid "Screencast ended: Out of disk space" msgstr "Скринкаст күтпегенде үзілді: Диск орны бітті" #. We can encourage user to try again on service crashes since the #. recorder will auto-blocklist the pipeline that crashed. #. Translators: notification title. #: js/ui/screenshot.js:2072 msgid "Screencast ended unexpectedly, please try again" msgstr "Скринкаст күтпегенде үзілді, қайталап көріңіз" #. Translators: notification title. #: js/ui/screenshot.js:2075 msgid "Screencast ended unexpectedly" msgstr "Скринкаст күтпегенде үзілді" #. Translators: notification source name. #: js/ui/screenshot.js:2085 js/ui/screenshot.js:2327 msgid "Screenshot" msgstr "Скриншот" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:2092 msgid "Click here to view the video." msgstr "Видеоны қарау үшін осында шертіңіз." #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:2100 js/ui/screenshot.js:2343 msgid "Show in Files" msgstr "Файлдар қолданбасында көрсету" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2287 #, javascript-format msgid "Screenshot From %s" msgstr "Скриншот, уақыты %s" #. Translators: notification title. #: js/ui/screenshot.js:2333 msgid "Screenshot captured" msgstr "Скриншот түсірілді" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2335 msgid "You can paste the image from the clipboard." msgstr "Суретті алмасу буферінен кірістіруге болады." #: js/ui/screenshot.js:2391 js/ui/screenshot.js:2555 msgid "Screenshot taken" msgstr "Скриншот түсірілді" #: js/ui/search.js:829 msgid "Searching…" msgstr "Іздеу…" #: js/ui/search.js:831 msgid "No results" msgstr "Нәтижелер жоқ" #: js/ui/search.js:962 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "тағы %d" #: js/ui/searchController.js:87 #: subprojects/extensions-app/data/ui/extensions-window.ui:73 msgid "Search" msgstr "Іздеу" #: js/ui/shellEntry.js:21 msgid "Copy" msgstr "Көшіру" #: js/ui/shellEntry.js:26 msgid "Paste" msgstr "Кірістіру" #: js/ui/shellEntry.js:78 msgid "Show Text" msgstr "Мәтінді көрсету" #: js/ui/shellEntry.js:80 msgid "Hide Text" msgstr "Мәтінді жасыру" #: js/ui/shellEntry.js:174 msgid "Caps lock is on" msgstr "Caps lock іске қосылған" #: js/ui/shellMountOperation.js:286 msgid "Hidden Volume" msgstr "Жасырын том" #: js/ui/shellMountOperation.js:289 msgid "Windows System Volume" msgstr "Windows жүйелік томы" #: js/ui/shellMountOperation.js:292 msgid "Uses Keyfiles" msgstr "Кілт файлдарды қолданады" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:300 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead" msgstr "" "Кілт файлдарын қолданатын томды босату үшін, %s утилитасын қолданыңыз" #: js/ui/shellMountOperation.js:304 msgid "" "You need an external utility like Disks to unlock a volume that uses " "keyfiles" msgstr "" "Кілттік файлдарды қолданатын томдар блоктауын ашу үшін сізге Дисктер " "сияқты сыртқы қолданба керек" #: js/ui/shellMountOperation.js:312 msgid "PIM Number" msgstr "PIM нөмірі" #: js/ui/shellMountOperation.js:371 msgid "Remember Password" msgstr "Парольді есте сақтау" #: js/ui/shellMountOperation.js:386 msgid "Unlock" msgstr "Босату" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:400 #, javascript-format msgid "Open %s" msgstr "%s ашу" #: js/ui/shellMountOperation.js:436 msgid "The PIM must be a number or empty" msgstr "PIM тек сандардан тұруы, немесе бос болуы тиіс" #: js/ui/status/accessibility.js:34 msgid "Accessibility" msgstr "Қол жетерлілігі" #: js/ui/status/accessibility.js:44 msgid "High Contrast" msgstr "Жоғары контраст" #: js/ui/status/accessibility.js:47 msgid "Zoom" msgstr "Үлкейту" #: js/ui/status/accessibility.js:54 msgid "Screen Reader" msgstr "Экраннан оқитын қолданба" #: js/ui/status/accessibility.js:58 msgid "Screen Keyboard" msgstr "Экрандағы пернетақта" #: js/ui/status/accessibility.js:62 msgid "Visual Alerts" msgstr "Бейнелік хабарлау" #: js/ui/status/accessibility.js:66 msgid "Sticky Keys" msgstr "Жабысқақ пернелер" #: js/ui/status/accessibility.js:70 msgid "Slow Keys" msgstr "Баяу пернелер" #: js/ui/status/accessibility.js:74 msgid "Bounce Keys" msgstr "Қайталанатын пернелер" #: js/ui/status/accessibility.js:78 msgid "Mouse Keys" msgstr "Тышқан пернелері" #: js/ui/status/accessibility.js:83 msgid "Accessibility Settings" msgstr "Қолжетімділік баптаулары" #: js/ui/status/accessibility.js:140 msgid "Large Text" msgstr "Үлкен мәтін" #: js/ui/status/autoRotate.js:14 msgid "Auto Rotate" msgstr "Авто бұру" #: js/ui/status/backgroundApps.js:156 msgctxt "title" msgid "Background Apps" msgstr "Фондық қолданбалар" #: js/ui/status/backgroundApps.js:171 msgid "Apps known to be running without a window" msgstr "Терезесіз жұмыс істейтін қолданбалар" #: js/ui/status/backgroundApps.js:182 msgid "App Settings" msgstr "Қолданба баптаулары" #: js/ui/status/backgroundApps.js:239 msgid "No Background Apps" msgstr "Фондық қолданбалар жоқ" #: js/ui/status/backgroundApps.js:241 #, javascript-format msgid "%d Background App" msgid_plural "%d Background Apps" msgstr[0] "%d фондық қолданбасы" #: js/ui/status/backlight.js:39 msgid "Keyboard Brightness" msgstr "Пернетақта жарықтылы" #: js/ui/status/backlight.js:79 msgid "Off" msgstr "Сөнд" #: js/ui/status/backlight.js:80 msgid "Low" msgstr "Төмен" #: js/ui/status/backlight.js:81 msgid "High" msgstr "Жоғары" #: js/ui/status/backlight.js:147 js/ui/status/keyboard.js:879 msgid "Keyboard" msgstr "Пернетақта" #: js/ui/status/bluetooth.js:245 js/ui/status/network.js:360 msgid "Disconnect" msgstr "Байланысты үзу" #: js/ui/status/bluetooth.js:262 js/ui/status/bluetooth.js:264 msgid "Bluetooth" msgstr "Bluetooth" #: js/ui/status/bluetooth.js:287 js/ui/status/network.js:1900 msgid "Bluetooth Settings" msgstr "Bluetooth баптаулары" #: js/ui/status/bluetooth.js:334 msgid "No available or connected devices" msgstr "Қолжетімді немесе байланысқан құрылғылар жоқ" #: js/ui/status/bluetooth.js:335 msgid "Turn on Bluetooth to connect to devices" msgstr "Құрылғыларға байланысу үшін Bluetooth іске қосыңыз" #. Translators: This is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:389 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d байланысқан" #: js/ui/status/brightness.js:32 msgid "Brightness" msgstr "Жарықтылығы" #: js/ui/status/darkMode.js:12 msgid "Dark Style" msgstr "Қараңғы режим" #: js/ui/status/dwellClick.js:15 msgid "Single Click" msgstr "Дара шерту" #: js/ui/status/dwellClick.js:20 msgid "Double Click" msgstr "Қос шерту" #: js/ui/status/dwellClick.js:25 msgid "Drag" msgstr "Тартып апару" #: js/ui/status/dwellClick.js:30 msgid "Secondary Click" msgstr "Екінші шерту" #: js/ui/status/dwellClick.js:39 msgid "Dwell Click" msgstr "Пернеде кідіртуден кейінгі сол жақпен шерту" #: js/ui/status/keyboard.js:896 msgid "Show Keyboard Layout" msgstr "Пернетақта жаймасын көрсету" #: js/ui/status/location.js:337 msgid "Allow location access" msgstr "Орналасуға қатынауды рұқсат ету" #. Translators: %s is an application name #: js/ui/status/location.js:339 #, javascript-format msgid "The app %s wants to access your location" msgstr "%s қолданбасы орналасуыңызға рұқсат сұрап отыр" #: js/ui/status/location.js:349 msgid "Location access can be changed at any time from the privacy settings" msgstr "" "Орналасуыңызға қатынауды кез-кезген кезде жекелік баптауларының ішінен " "өзгертуге болады" #: js/ui/status/location.js:357 msgid "Deny Access" msgstr "Тыйым салу" #: js/ui/status/location.js:362 msgid "Grant Access" msgstr "Рұқсат ету" #: js/ui/status/network.js:62 msgid "" msgstr "<белгісіз>" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:354 #, javascript-format msgid "Disconnect %s" msgstr "%s байланысын үзу" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:356 #, javascript-format msgid "Connect to %s" msgstr "%s құрылғысымен байланысу" #: js/ui/status/network.js:1050 msgid "Secure" msgstr "Қауіпсіз" #: js/ui/status/network.js:1050 msgid "Not secure" msgstr "Қауіпсіз емес" #: js/ui/status/network.js:1051 #, javascript-format msgid "Signal strength %s%%" msgstr "Сигнал деңгейі %s%%" #. translators: The first placeholder is the network name, the second and indication whether it is secure, and the last the signal strength indication #: js/ui/status/network.js:1053 #, javascript-format msgid "%s, %s, %s" msgstr "%s, %s, %s" #. Translators: %s is a network identifier #: js/ui/status/network.js:1155 #, javascript-format msgid "%s Hotspot" msgstr "%s қатынау нүктесі" #: js/ui/status/network.js:1426 #, javascript-format msgid "%d connected" msgid_plural "%d connected" msgstr[0] "%d байланысқан" #: js/ui/status/network.js:1524 js/ui/status/network.js:1540 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1525 msgid "VPN Settings" msgstr "VPN баптаулары" #: js/ui/status/network.js:1785 msgid "Wi–Fi" msgstr "Wi–Fi" #: js/ui/status/network.js:1787 msgid "All Networks" msgstr "Барлық желілер" #: js/ui/status/network.js:1884 msgid "Wired Connections" msgstr "Сымды желі байланысы" #: js/ui/status/network.js:1885 msgid "Wired Settings" msgstr "Сымды желі баптаулары" #: js/ui/status/network.js:1899 msgid "Bluetooth Tethers" msgstr "Bluetooth модемдері" #. Translators: "Tether" from "Bluetooth Tether" #: js/ui/status/network.js:1906 msgid "Tether" msgstr "Модем" #: js/ui/status/network.js:1919 msgid "Mobile Connections" msgstr "Мобильді желі байланыстары" #: js/ui/status/network.js:1921 msgid "Mobile Broadband Settings" msgstr "Сымсыз кеңжолақты желісінің баптаулары" #. Translators: "Mobile" from "Mobile Broadband" #: js/ui/status/network.js:1930 msgid "Mobile" msgstr "Мобильді" #: js/ui/status/network.js:1964 msgid "Sign Into Wi–Fi Network" msgstr "Wi-Fi желісіне кіру" #: js/ui/status/network.js:2151 msgid "Connection failed" msgstr "Байланыс орнату сәтсіз" #: js/ui/status/network.js:2152 msgid "Activation of network connection failed" msgstr "Желілік байланысты белсендіру сәтсіз" #: js/ui/status/nightLight.js:19 msgid "Night Light" msgstr "Түнгі жарық" #: js/ui/status/powerProfiles.js:19 msgctxt "Power profile" msgid "Performance" msgstr "Өнімділік" #: js/ui/status/powerProfiles.js:24 msgctxt "Power profile" msgid "Balanced" msgstr "Баланс" #: js/ui/status/powerProfiles.js:29 msgctxt "Power profile" msgid "Power Saver" msgstr "Қорек үнемдеу" #: js/ui/status/powerProfiles.js:39 js/ui/status/powerProfiles.js:69 msgid "Power Mode" msgstr "Эл. қорегі режимі" #: js/ui/status/powerProfiles.js:71 msgid "Power Settings" msgstr "Қорек баптаулары" #: js/ui/status/remoteAccess.js:74 msgid "Stop Screencast" msgstr "Скринкастты тоқтату" #: js/ui/status/remoteAccess.js:144 msgid "Stop Screen Sharing" msgstr "Экранмен бөлісуді тоқтату" #: js/ui/status/rfkill.js:99 msgid "Airplane Mode" msgstr "Ұшақтағы режим" #: js/ui/status/system.js:168 msgid "Power Off Menu" msgstr "Сөндіру мәзірі" #: js/ui/status/system.js:176 msgid "Suspend" msgstr "Ұйықтату" #: js/ui/status/system.js:181 msgid "Restart…" msgstr "Қайта қосу…" #: js/ui/status/system.js:186 msgid "Power Off…" msgstr "Сөндіру…" #: js/ui/status/system.js:193 #: subprojects/extensions-app/data/ui/extensions-window.ui:124 msgid "Log Out…" msgstr "Жүйеден шығу…" #: js/ui/status/system.js:198 msgid "Switch User…" msgstr "Пайдаланушыны ауыстыру…" #: js/ui/status/system.js:242 msgctxt "action" msgid "Lock Screen" msgstr "Экранды блоктау" #: js/ui/status/thunderbolt.js:308 msgid "Unknown Thunderbolt device" msgstr "Белгісіз Thunderbolt құрылғысы" #: js/ui/status/thunderbolt.js:309 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" "Сіз кетіп қалған уақытта жаңа құрылғы анықталған. Оны қолдануды бастау үшін, " "оны ажыратып, қайта салыңыз." #: js/ui/status/thunderbolt.js:312 msgid "Unauthorized Thunderbolt device" msgstr "Авторизацияланбаған Thunderbolt құрылғысы" #: js/ui/status/thunderbolt.js:313 msgid "" "New device has been detected and needs to be authorized by an administrator" msgstr "Жаңа құрылғы анықталды және де оны әкімші авторизациялау керек" #: js/ui/status/thunderbolt.js:319 msgid "Thunderbolt authorization error" msgstr "Thunderbolt авторизация қатесі" #: js/ui/status/thunderbolt.js:320 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "Thunderbolt құралғысын авторизациялау мүмкін емес: %s" #: js/ui/status/volume.js:218 msgid "Volume changed" msgstr "Дыбыс өзгертілді" #: js/ui/status/volume.js:231 msgid "Unmute" msgstr "Дыбысты қайтару" #: js/ui/status/volume.js:231 msgid "Mute" msgstr "Дыбысын өшіру" #: js/ui/status/volume.js:286 msgid "Volume" msgstr "Дыбыс деңгейі" #: js/ui/status/volume.js:302 msgid "Sound Output" msgstr "Дыбыс шығысы" #: js/ui/status/volume.js:374 msgid "Sound Input" msgstr "Дыбыс кірісі" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:20 msgid "Mirror" msgstr "Айналы" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:29 msgid "Join Displays" msgstr "Экран­дарды біріктіру" #. Translators: this is for using only external displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:39 msgid "External Only" msgstr "Тек сыртқы" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:47 msgid "Built-in Only" msgstr "Тек құрамындағы" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:378 msgid "%A %B %-d" msgstr "%A %B %-d" #: js/ui/unlockDialog.js:384 msgid "Swipe up to unlock" msgstr "Босату үшін жоғары өткізіңіз" #: js/ui/unlockDialog.js:385 msgid "Click or press a key to unlock" msgstr "Босату үшін шертіңіз немесе пернені басыңыз" #: js/ui/unlockDialog.js:568 msgid "Unlock Window" msgstr "Блоктауды алу терезесі" #: js/ui/unlockDialog.js:577 msgid "Log in as another user" msgstr "Басқа пайдаланушы ретінде жүйеге кіру" #: js/ui/welcomeDialog.js:47 #, javascript-format msgid "GNOME %s" msgstr "GNOME %s" #: js/ui/welcomeDialog.js:51 #, javascript-format msgid "Welcome to %s" msgstr "%s ішіне қош келдіңіз" #: js/ui/welcomeDialog.js:52 msgid "If you want to learn your way around, check out the tour" msgstr "Егер айналаңызды үйренгіңіз келсе, турды шолыңыз" #: js/ui/welcomeDialog.js:61 msgid "Skip" msgstr "Аттап кету" #: js/ui/welcomeDialog.js:66 msgid "Take Tour" msgstr "Турды шолу" #: js/ui/windowAttentionHandler.js:18 #, javascript-format msgid "“%s” is ready" msgstr "\"%s\" дайын" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:68 msgid "Keep these display settings?" msgstr "Бұл экран баптауларын сақтауды қалайсыз ба?" #: js/ui/windowManager.js:78 msgid "Revert Settings" msgstr "Баптауларды қалпына келтіру" #: js/ui/windowManager.js:83 msgid "Keep Changes" msgstr "Өзгерістерді сақтау" #: js/ui/windowManager.js:103 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "Өзгертілген баптаулар %d секундтан кейін қалпына келтіріледі" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:500 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:40 msgid "Hide" msgstr "Жасыру" #: js/ui/windowMenu.js:47 msgid "Restore" msgstr "Қалпына келтіру" #: js/ui/windowMenu.js:51 msgid "Maximize" msgstr "Жазық қылу" #: js/ui/windowMenu.js:58 msgid "Move" msgstr "Жылжыту" #: js/ui/windowMenu.js:78 msgid "Resize" msgstr "Өлшемін өзгерту" #: js/ui/windowMenu.js:98 msgid "Always on Top" msgstr "Әрқашан алдында" #: js/ui/windowMenu.js:117 msgid "Always on Visible Workspace" msgstr "Әрқашан көрінетін жұмыс орнында" #: js/ui/windowMenu.js:131 msgid "Move to Workspace Left" msgstr "Сол жақтағы жұмыс орнына жылжыту" #: js/ui/windowMenu.js:137 msgid "Move to Workspace Right" msgstr "Оң жақтағы жұмыс орнына жылжыту" #: js/ui/windowMenu.js:143 msgid "Move to Workspace Up" msgstr "Жоғарыдағы жұмыс орнына жылжыту" #: js/ui/windowMenu.js:149 msgid "Move to Workspace Down" msgstr "Төмендегі жұмыс орнына жылжыту" #: js/ui/windowMenu.js:167 msgid "Move to Monitor Up" msgstr "Жоғарыдағы мониторға жылжыту" #: js/ui/windowMenu.js:176 msgid "Move to Monitor Down" msgstr "Төмендегі мониторға жылжыту" #: js/ui/windowMenu.js:185 msgid "Move to Monitor Left" msgstr "Сол жақ мониторға жылжыту" #: js/ui/windowMenu.js:194 msgid "Move to Monitor Right" msgstr "Оң жақ мониторға жылжыту" #: js/ui/windowMenu.js:202 msgid "Close" msgstr "Жабу" #: src/main.c:529 subprojects/extensions-tool/src/main.c:336 msgid "Print version" msgstr "Баспа нұсқасы" #: src/main.c:535 msgid "Mode used by GDM for login screen" msgstr "GDM жүйеге кіру экраны үшін қолданатын режимі" #: src/main.c:541 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "Жүйеге кіру экраны үшін арнайы режимді, мыс. \"gdm\", қолдану" #: src/main.c:547 msgid "List possible modes" msgstr "Қолжетерлік режимдерді тізіп шығу" #: src/main.c:553 msgid "Force animations to be enabled" msgstr "Анимацияны мәжбүрлі түрде іске қосу" #: src/shell-app.c:252 msgctxt "program" msgid "Unknown" msgstr "Белгісіз" #: src/shell-app.c:503 #, c-format msgid "Failed to launch “%s”" msgstr "\"%s\" жөнелту сәтсіз" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match" msgstr "Парольдер өзара сәйкес емес" #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "Пароль бос болуы мүмкін емес" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "Аутентификация терезесін пайдаланушы тайдырды" #: src/st/st-icon-theme.c:1865 #, c-format msgid "Icon '%s' not present in theme %s" msgstr "\"%s\" таңбашасы %s темасында жоқ" #: src/st/st-icon-theme.c:3454 src/st/st-icon-theme.c:3757 msgid "Failed to load icon" msgstr "Таңбашаны жүктеу сәтсіз" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 msgid "Manage your GNOME Extensions" msgstr "GNOME кеңейтулерін басқару" #. developer_name tag deprecated with Appstream 1.0 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:19 msgid "The GNOME Project" msgstr "GNOME жобасы" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:51 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" "GNOME кеңейтулері көмегімен кеңейтулерді жаңарту, баптау және оларды өшіру " "немесе сөндіруге болады." #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:64 msgid "Main Window" msgstr "Басты терезе" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:68 msgid "Available Updates" msgstr "Қолжетімді жаңартулар" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:72 msgid "Search View" msgstr "Іздеу көрінісі" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "GNOME Shell кеңейтулерін баптау" #: subprojects/extensions-app/js/extensionManager.js:237 #, javascript-format msgid "" "The installed version of this extension (%s) is incompatible with the " "current version of GNOME (%s). The extension has been disabled." msgstr "" "Бұл кеңейтудің орнатылған нұсқасы (%s) ағымдағы GNOME нұсқасымен (%s) " "үйлеспейді. Бұл кеңейту сөндірілді." #: subprojects/extensions-app/js/extensionManager.js:238 #, javascript-format msgid "" "The installed version of this extension is incompatible with the current " "version of GNOME (%s). The extension has been disabled." msgstr "" "Бұл кеңейтудің орнатылған нұсқасы ағымдағы GNOME нұсқасымен (%s) үйлеспейді. " "Бұл кеңейту сөндірілді." #: subprojects/extensions-app/js/extensionManager.js:242 msgid "" "An error has occurred in this extension. This could cause issues elsewhere " "in the system. It is recommended to turn the extension off until the error " "is resolved." msgstr "" "Бұл кеңейтуде қате орын алды. Бұл жүйенің басқа жерлерінде де мәселелер " "тудыруы мүмкін. Қате шешілгенге дейін кеңейтуді сөндіру ұсынылады." #. translators: Details for an extension error #: subprojects/extensions-app/js/extensionManager.js:248 msgid "Error details:" msgstr "Қате ақпараты:" #: subprojects/extensions-app/js/extensionRow.js:82 #, javascript-format msgid "Version %s" msgstr "Нұсқасы %s" #: subprojects/extensions-app/js/extensionsWindow.js:113 #, javascript-format msgid "Remove “%s”?" msgstr "\"%s\" өшіру керек пе?" #: subprojects/extensions-app/js/extensionsWindow.js:114 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "" "Кеңейтуді өшірсеңіз, оны қайта іске қосу үшін қайта жүктеп алу керек болады" #: subprojects/extensions-app/js/extensionsWindow.js:117 msgid "_Cancel" msgstr "_Бас тарту" #: subprojects/extensions-app/js/extensionsWindow.js:118 msgid "_Remove" msgstr "Өші_ру" #: subprojects/extensions-app/js/extensionsWindow.js:158 msgid "translator-credits" msgstr "Baurzhan Muftakhidinov " #: subprojects/extensions-app/js/extensionsWindow.js:203 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "%d кеңейту жүйеге келесі рет кірген кезде жаңартылатын болады." #: subprojects/extensions-app/data/ui/extension-row.ui:22 msgid "Error Details" msgstr "Қате ақпараты" #: subprojects/extensions-app/data/ui/extension-row.ui:62 msgid "Updates Details" msgstr "Жаңарту ақпараты" #: subprojects/extensions-app/data/ui/extension-row.ui:72 msgid "" "A new version of this extension is ready and will be loaded on next login." msgstr "" "Бұл кеңейтудің жаңа нұсқасы дайын және жүйеге келесі рет кіру кезінде " "жүктеледі." #: subprojects/extensions-app/data/ui/extension-row.ui:104 msgid "Extension Details" msgstr "Кеңейту ақпараты" #: subprojects/extensions-app/data/ui/extension-row.ui:192 msgid "_Website" msgstr "_Веб-сайт" #: subprojects/extensions-app/data/ui/extension-row.ui:219 msgid "_Settings" msgstr "_Баптаулар" #: subprojects/extensions-app/data/ui/extension-row.ui:246 msgid "_Remove…" msgstr "Өші_ру…" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Keyboard Shortcuts" msgstr "Пернетақта жарлықтары" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "Кеңейтулер туралы" #: subprojects/extensions-app/data/ui/extensions-window.ui:64 msgid "Main Menu" msgstr "Басты мәзір" #: subprojects/extensions-app/data/ui/extensions-window.ui:106 msgid "Search extensions" msgstr "Кеңейтулерді іздеу" #: subprojects/extensions-app/data/ui/extensions-window.ui:134 msgid "_Extensions" msgstr "К_еңейтулер" #: subprojects/extensions-app/data/ui/extensions-window.ui:139 msgid "More Information" msgstr "Көбірек ақпарат" #: subprojects/extensions-app/data/ui/extensions-window.ui:151 msgid "" "Extensions can cause performance and stability issues. It is recommended to " "disable all extensions if you experience problems with your system." msgstr "" "Кеңейтулер өнімділік пен тұрақтылық мәселелерін тудыруы мүмкін. Жүйеңіздегі " "ақаулықтарға тап болсаңыз, кеңейтулерді сөндіру ұсынылады." #: subprojects/extensions-app/data/ui/extensions-window.ui:178 msgid "User Extensions" msgstr "Пайдаланушы кеңейтулері" #: subprojects/extensions-app/data/ui/extensions-window.ui:198 msgid "System Extensions" msgstr "Жүйелік кеңейтулер" #: subprojects/extensions-app/data/ui/extensions-window.ui:233 msgid "Search Results" msgstr "Іздеу нәтижелері" #: subprojects/extensions-app/data/ui/extensions-window.ui:252 msgid "No Results Found" msgstr "Нәтижелер жоқ" #: subprojects/extensions-app/data/ui/extensions-window.ui:253 msgid "Try a different search" msgstr "Басқа сөздерді іздеп көріңіз" #: subprojects/extensions-app/data/ui/extensions-window.ui:264 msgid "No Installed Extensions" msgstr "Кеңейтулер орнатылмаған" #: subprojects/extensions-app/data/ui/extensions-window.ui:265 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" "Жаңа кеңейтулерді тауып, орнату үшін, extensions.gnome.org шолыңыз." #: subprojects/extensions-app/data/ui/extensions-window.ui:276 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" "Кешірім өтінеміз, барлық орнатылған кеңейтулер тізімін алу мүмкін болмады. " "GNOME ішіне кіргеніңізді тексеріп, қайталап көріңіз." #: subprojects/extensions-app/data/ui/help-overlay.ui:9 msgctxt "shortcut window" msgid "General" msgstr "Жалпы" #: subprojects/extensions-app/data/ui/help-overlay.ui:12 msgctxt "shortcut window" msgid "Open Menu" msgstr "Мәзірді ашу" #: subprojects/extensions-app/data/ui/help-overlay.ui:18 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Іздеуді іске қосу/сөндіру" #: subprojects/extensions-app/data/ui/help-overlay.ui:24 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Жарлықтарды көрсету" #: subprojects/extensions-app/data/ui/help-overlay.ui:30 msgctxt "shortcut window" msgid "Quit" msgstr "Шығу" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:284 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "Жаңа кеңейту %s ішінде сәтті жасалды.\n" #: subprojects/extensions-tool/src/command-create.c:376 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" "Атауы қысқа мәтіндік жол (сипаттайтын) болуы тиіс.\n" "Мысалы: %s" #: subprojects/extensions-tool/src/command-create.c:382 #: subprojects/extensions-tool/src/main.c:243 msgid "Name" msgstr "Аты" #: subprojects/extensions-tool/src/command-create.c:396 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" "Сипаттамасы - бұл сіздің кеңейтуіңіз жасайтын әрекеттің бір сөйлемді " "анықтамасы.\n" "Мысалы: %s" #: subprojects/extensions-tool/src/command-create.c:402 #: subprojects/extensions-tool/src/main.c:246 msgid "Description" msgstr "Сипаттамасы" #: subprojects/extensions-tool/src/command-create.c:416 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" "UUID - бұл кеңейтуңіздің глобалды деңгейдегі бірегей идентификаторы.\n" "Ол эл. пошта адресі пішімінде болуы тиіс (clicktofocus@janedoe.example.com)\n" #: subprojects/extensions-tool/src/command-create.c:443 msgid "Choose one of the available templates:\n" msgstr "Қол жетімді үлгілердің бірін таңдаңыз:\n" #: subprojects/extensions-tool/src/command-create.c:457 msgid "Template" msgstr "Үлгі" #: subprojects/extensions-tool/src/command-create.c:515 msgid "The unique identifier of the new extension" msgstr "Жаңа кеңейтудің бірегей идентификаторы" #: subprojects/extensions-tool/src/command-create.c:518 msgid "NAME" msgstr "АТАУЫ" #: subprojects/extensions-tool/src/command-create.c:519 msgid "The user-visible name of the new extension" msgstr "Жаңа кеңейтудің пайдаланушыға көрінетін атауы" #: subprojects/extensions-tool/src/command-create.c:521 msgid "DESCRIPTION" msgstr "СИПАТТАМАСЫ" #: subprojects/extensions-tool/src/command-create.c:523 msgid "A short description of what the extension does" msgstr "Кеңейтудің қысқаша сипаттамасы" #: subprojects/extensions-tool/src/command-create.c:525 #: subprojects/extensions-tool/src/command-pack.c:455 msgid "DOMAIN" msgstr "ДОМЕН" #: subprojects/extensions-tool/src/command-create.c:527 msgid "The gettext domain used by the extension" msgstr "Кеңейту қолданатын gettext домені" #: subprojects/extensions-tool/src/command-create.c:529 #: subprojects/extensions-tool/src/command-pack.c:448 msgid "SCHEMA" msgstr "СҰЛБА" #: subprojects/extensions-tool/src/command-create.c:531 msgid "The GSettings schema used by the extension" msgstr "Кеңейту қолданатын GSettings сұлбасы" #: subprojects/extensions-tool/src/command-create.c:534 msgid "TEMPLATE" msgstr "ҮЛГІ" #: subprojects/extensions-tool/src/command-create.c:535 msgid "The template to use for the new extension" msgstr "Жаңа кеңейту үшін қолданылатын үлгі" #: subprojects/extensions-tool/src/command-create.c:538 msgid "Include prefs.js template" msgstr "prefs.js үлгісін қосу" #: subprojects/extensions-tool/src/command-create.c:544 msgid "Enter extension information interactively" msgstr "Кеңейту ақпаратын интерактивті түрде енгізу" #: subprojects/extensions-tool/src/command-create.c:552 msgid "Create a new extension" msgstr "Жаңа кеңейтуді жасау" #: subprojects/extensions-tool/src/command-create.c:570 #: subprojects/extensions-tool/src/command-list.c:190 msgid "Unknown arguments" msgstr "Белгісіз аргументтер" #: subprojects/extensions-tool/src/command-create.c:595 msgid "UUID, name and description are required" msgstr "UUID, аты және сипаттамасы керек" #: subprojects/extensions-tool/src/command-disable.c:62 #: subprojects/extensions-tool/src/command-enable.c:62 #, c-format msgid "Extension “%s” does not exist\n" msgstr "\"%s\" кеңейтуі жоқ\n" #: subprojects/extensions-tool/src/command-disable.c:98 msgid "Disable an extension" msgstr "Кеңейтуді сөндіру" #: subprojects/extensions-tool/src/command-disable.c:116 #: subprojects/extensions-tool/src/command-enable.c:116 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "UUID көрсетілмеген" #: subprojects/extensions-tool/src/command-disable.c:121 #: subprojects/extensions-tool/src/command-enable.c:121 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "Бірден көп UUID көрсетілген" #: subprojects/extensions-tool/src/command-enable.c:98 msgid "Enable an extension" msgstr "Кеңейтуді іске қосу" #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:66 #: subprojects/extensions-tool/src/main.c:150 msgid "Failed to connect to GNOME Shell\n" msgstr "GNOME Shell-ға байланысты орнату сәтсіз аяқталды\n" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:159 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "\"%s\" кеңейтуі жоқ\n" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "Кеңейтулер ақпаратын көрсету" #: subprojects/extensions-tool/src/command-install.c:190 msgid "Overwrite an existing extension" msgstr "Бар болып тұрған кеңейтуді үстінен жазу" #: subprojects/extensions-tool/src/command-install.c:192 msgid "EXTENSION_BUNDLE" msgstr "КЕҢЕЙТУ_ДЕСТЕСІ" #: subprojects/extensions-tool/src/command-install.c:201 msgid "Install an extension bundle" msgstr "Кеңейту дестесін орнату" #: subprojects/extensions-tool/src/command-install.c:219 msgid "No extension bundle specified" msgstr "Кеңейту дестесі көрсетілмеген" #: subprojects/extensions-tool/src/command-install.c:225 msgid "More than one extension bundle specified" msgstr "Бірден көп кеңейту дестесі көрсетілген" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show user-installed extensions" msgstr "Пайдаланушы орнатқан кеңейтулерді көрсету" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show system-installed extensions" msgstr "Жүйелік деңгейде орнатылған кеңейтулерді көрсету" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Show enabled extensions" msgstr "Іске қосылған кеңейтулерді көрсету" #: subprojects/extensions-tool/src/command-list.c:149 msgid "Show disabled extensions" msgstr "Сөндірілген кеңейтулерді көрсету" #: subprojects/extensions-tool/src/command-list.c:152 msgid "Show extensions in active state" msgstr "Белсенді кеңейтулерді көрсету" #: subprojects/extensions-tool/src/command-list.c:155 msgid "Show extensions in inactive state" msgstr "Белсенді емес кеңейтулерді көрсету" #: subprojects/extensions-tool/src/command-list.c:158 msgid "Show extensions with preferences" msgstr "Баптаулары бар кеңейтулерді көрсету" #: subprojects/extensions-tool/src/command-list.c:161 msgid "Show extensions with updates" msgstr "Жаңартулары бар кеңейтулерді көрсету" #: subprojects/extensions-tool/src/command-list.c:164 msgid "Print extension details" msgstr "Кеңейту ақпаратын басып шығару" #: subprojects/extensions-tool/src/command-list.c:172 msgid "List installed extensions" msgstr "Орнатылған кеңейтулерді тізіп шығару" #: subprojects/extensions-tool/src/command-pack.c:444 msgid "FILE" msgstr "ФАЙЛ" #: subprojects/extensions-tool/src/command-pack.c:445 msgid "Additional source to include in the bundle" msgstr "Дестеге қосылатын қосымша қайнар көз" #: subprojects/extensions-tool/src/command-pack.c:449 msgid "A GSettings schema that should be included" msgstr "Құрамына енуі тиіс GSettings сұлбасы" #: subprojects/extensions-tool/src/command-pack.c:451 #: subprojects/extensions-tool/src/command-pack.c:462 msgid "DIRECTORY" msgstr "БУМА" #: subprojects/extensions-tool/src/command-pack.c:453 msgid "The directory where translations are found" msgstr "Аудармалар орналасқан бума" #: subprojects/extensions-tool/src/command-pack.c:457 msgid "The gettext domain to use for translations" msgstr "Аудармалар үшін қолданылуы тиіс gettext домені" #: subprojects/extensions-tool/src/command-pack.c:460 msgid "Overwrite an existing pack" msgstr "Бар болып тұрған пакетті үстінен жазу" #: subprojects/extensions-tool/src/command-pack.c:464 msgid "The directory where the pack should be created" msgstr "Десте жасалуы тиіс бума" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "SOURCE_DIRECTORY" msgstr "ҚАЙНАР_КӨЗ_БУМАСЫ" #: subprojects/extensions-tool/src/command-pack.c:475 msgid "Create an extension bundle" msgstr "Кеңейту дестесін жасау" #: subprojects/extensions-tool/src/command-pack.c:495 msgid "More than one source directory specified" msgstr "Бірден көп қайнар көз бумасы көрсетілген" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "\"%s\" кеңейтудің баптаулары жоқ\n" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "\"%s\" кеңейтуі үшін қолданбаларды ашу сәтсіз аяқталды: %s\n" #: subprojects/extensions-tool/src/command-prefs.c:87 msgid "Opens extension preferences" msgstr "Кеңейту баптауларын ашады" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "Кеңейтуді қалпына келтіру" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "Жүйелік кеңейтулерді өшіру мүмкін емес\n" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "\"%s\" өшіру сәтсіз аяқталды\n" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "Кеңейтуді өшіру" #: subprojects/extensions-tool/src/main.c:76 msgid "Do not print error messages" msgstr "Қате туралы хабарламаларды басып шығармау" #: subprojects/extensions-tool/src/main.c:249 msgid "Path" msgstr "Жол" #: subprojects/extensions-tool/src/main.c:252 msgid "URL" msgstr "URL" #: subprojects/extensions-tool/src/main.c:255 msgid "Original author" msgstr "Бастапқы авторы" #: subprojects/extensions-tool/src/main.c:261 #: subprojects/extensions-tool/src/main.c:263 #: subprojects/extensions-tool/src/main.c:265 msgid "Version" msgstr "Нұсқасы" #: subprojects/extensions-tool/src/main.c:268 msgid "Enabled" msgstr "Іске қосылған" #: subprojects/extensions-tool/src/main.c:268 msgid "Yes" msgstr "Иә" #: subprojects/extensions-tool/src/main.c:268 msgid "No" msgstr "Жоқ" #: subprojects/extensions-tool/src/main.c:271 msgid "State" msgstr "Қалып-күйі" #: subprojects/extensions-tool/src/main.c:309 msgid "“version” takes no arguments" msgstr "“version” аргументтерді қабылдамайды" #: subprojects/extensions-tool/src/main.c:311 #: subprojects/extensions-tool/src/main.c:331 msgid "Usage:" msgstr "Қолданылуы:" #: subprojects/extensions-tool/src/main.c:314 msgid "Print version information and exit." msgstr "Нұсқа ақпаратын басып шығару және шығу." #: subprojects/extensions-tool/src/main.c:329 #: subprojects/extensions-tool/src/main.c:332 msgid "COMMAND" msgstr "КОМАНДА" #: subprojects/extensions-tool/src/main.c:332 msgid "[ARGS…]" msgstr "[АРГУМЕНТТЕР…]" #: subprojects/extensions-tool/src/main.c:334 msgid "Commands:" msgstr "Командалар:" #: subprojects/extensions-tool/src/main.c:335 msgid "Print help" msgstr "Көмекті басып шығару" #: subprojects/extensions-tool/src/main.c:337 msgid "Enable extension" msgstr "Кеңейтуді іске қосу" #: subprojects/extensions-tool/src/main.c:338 msgid "Disable extension" msgstr "Кеңейтуді сөндіру" #: subprojects/extensions-tool/src/main.c:339 msgid "Reset extension" msgstr "Кеңейтуді қалпына келтіру" #: subprojects/extensions-tool/src/main.c:340 msgid "Uninstall extension" msgstr "Кеңейтуді өшіру" #: subprojects/extensions-tool/src/main.c:341 msgid "List extensions" msgstr "Кеңейтулерді тізіп шығару" #: subprojects/extensions-tool/src/main.c:342 #: subprojects/extensions-tool/src/main.c:343 msgid "Show extension info" msgstr "Кеңейту ақпаратын көрсету" #: subprojects/extensions-tool/src/main.c:344 msgid "Open extension preferences" msgstr "Кеңейту параметрлерін ашу" #: subprojects/extensions-tool/src/main.c:345 msgid "Create extension" msgstr "Кеңейтуді жасау" #: subprojects/extensions-tool/src/main.c:346 msgid "Package extension" msgstr "Кеңейтуді дестеге салу" #: subprojects/extensions-tool/src/main.c:347 msgid "Install extension bundle" msgstr "Кеңейту дестесін орнату" #: subprojects/extensions-tool/src/main.c:349 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "Толық көмекті алу үшін \"%s\" пайдаланыңыз.\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "Қалыпты" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "Бос кеңейту" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "Индикатор" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "Жоғарғы панельге таңбашаны қосу" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:4 msgid "Quick Settings Item" msgstr "Жылдам баптау элементі" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:5 msgid "Add an item to quick settings" msgstr "Жылдам баптауларға жаңа элементті қосу" #. translators: #. * The device has been disabled #: subprojects/gvc/gvc-mixer-control.c:1872 msgid "Disabled" msgstr "Сөндірулі" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1879 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u шығысы" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1889 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u кірісі" #: subprojects/gvc/gvc-mixer-control.c:2872 msgid "System Sounds" msgstr "Жүйелік дыбыстар" #~ msgid "Move Titlebar Onscreen" #~ msgstr "Атау жолағын экранға жылжыту" #~ msgid "Stop conflicting session dialog closed" #~ msgstr "Қарамы-қайшылық туғызған сеансты тоқтату сұхбаты жабылды" #, javascript-format #~ msgid "Try to login again to start a session for user %s." #~ msgstr "%s пайдаланушысы үшін сеансты бастау үшін қайта кіріп көріңіз." #, javascript-format #~ msgid "%s is now known as %s" #~ msgstr "%s енді %s ретінде белгілі" #~ msgid "Network Manager" #~ msgstr "Желілер басқарушысы" #~ msgid "Disabling" #~ msgstr "Сөндірілуде" #~ msgid "Enabling" #~ msgstr "Іске қосылуда" #, javascript-format #~ msgid "%d %%" #~ msgstr "%d %%" #~ msgid "Thunderbolt" #~ msgstr "Thunderbolt" #~ msgid "No Thanks" #~ msgstr "Жоқ рахмет" #~ msgid "No Matches" #~ msgstr "Сәйкестіктер жоқ" #~ msgid "The extension had an error" #~ msgstr "Кеңейтуде қате болды" #~ msgid "The extension can be updated" #~ msgstr "Кеңейтуді жаңартуға болады" #~ msgid "Help" #~ msgstr "Көмек" #~ msgid "Manually Installed" #~ msgstr "Қолмен орнатылған" #~ msgid "Built-In" #~ msgstr "Құрамындағы" #~ msgid "Extension Updates Ready" #~ msgstr "Кеңейту жаңартулары дайын" #~ msgid "Attach modal dialog to the parent window" #~ msgstr "Модальды сұхбатты аталық терезесіне жалғау" #~ msgid "" #~ "This key overrides the key in org.gnome.mutter when running GNOME Shell." #~ msgstr "" #~ "Бұл кілт GNOME Shell орындалған кезде org.gnome.mutter ішіндегі кілтті " #~ "үстінен жазады." #~ msgid "Enable edge tiling when dropping windows on screen edges" #~ msgstr "" #~ "Терезелерді экран шеттеріне апарған кезде олардың өлшемдерін өзгертуді " #~ "іске қосу" #~ msgid "Workspaces are managed dynamically" #~ msgstr "Жұмыс орындары динамикалы түрде басқарылады" #~ msgid "Workspaces only on primary monitor" #~ msgstr "Жұмыс орындар тек біріншілік мониторда" #~ msgid "Delay focus changes in mouse mode until the pointer stops moving" #~ msgstr "Тышқан режиміндегі фокусты ауыстыру курсор тоқтағанша дейін кідірту" #~ msgid "Region & Language Settings" #~ msgstr "Аймақ және тіл баптаулары" #~ msgid "Applications" #~ msgstr "Қолданбалар" #~ msgid "Screenshot / Screencast" #~ msgstr "Скриншот/скринкаст" #, javascript-format #~ msgid "Unable to start %s" #~ msgstr "%s іске қосу мүмкін емес" #, javascript-format #~ msgid "Couldn’t find the %s application" #~ msgstr "%s қолданбасы табылмады" #~ msgid "Evolution Calendar" #~ msgstr "Evolution күнтізбесі" #~ msgid "" #~ "Whether the default Bluetooth adapter had set up devices associated to it" #~ msgstr "" #~ "Үнсіз келісім бойынша Bluetooth адаптерінде байланысқан құрылғылар бар ма" #~ msgid "" #~ "The shell will only show a Bluetooth menu item if a Bluetooth adapter is " #~ "powered, or if there were devices set up associated with the default " #~ "adapter. This will be reset if the default adapter is ever seen not to " #~ "have devices associated to it." #~ msgstr "" #~ "Қоршам Bluetooth мәзірін тек Bluetooth адаптері іске қосылған болса және " #~ "үнсіз келісім бойынша адаптерінде байланысқан құрылғылар бар болса ғана " #~ "көрсетеді. Бұл үнсіз келісім адаптерінде байланысқан құрылғылар жоқ болса " #~ "тасталады." #~ msgid "Log Out" #~ msgstr "Жүйеден шығу" #~ msgid "Bluetooth On" #~ msgstr "Bluetooth іске қосылған" #~ msgid "Bluetooth Off" #~ msgstr "Bluetooth сөндірілген" #~ msgid "Location In Use" #~ msgstr "Орналасу қолданылуда" #~ msgid "Location Disabled" #~ msgstr "Орналасу сөндірулі тұр" #, javascript-format #~ msgid "%s Off" #~ msgstr "%s сөндірулі" #, javascript-format #~ msgid "%s Connected" #~ msgstr "%s байланысқан" #, javascript-format #~ msgid "%s Unmanaged" #~ msgstr "%s басқарылмайтын" #, javascript-format #~ msgid "%s Connecting" #~ msgstr "%s байланысуда" #, javascript-format #~ msgid "%s Requires Authentication" #~ msgstr "%s аутентификацияны талап етеді" #, javascript-format #~ msgid "Firmware Missing For %s" #~ msgstr "%s үшін бинарлы кодтары жоқ" #, javascript-format #~ msgid "%s Unavailable" #~ msgstr "%s қолжетерсіз" #, javascript-format #~ msgid "%s Connection Failed" #~ msgstr "%s байланысын орнату сәтсіз" #, javascript-format #~ msgid "%s Hardware Disabled" #~ msgstr "%s құрылғылық түрде сөндірулі тұр" #, javascript-format #~ msgid "%s Disabled" #~ msgstr "%s сөндірулі тұр" #~ msgid "Connect to Internet" #~ msgstr "Интернетке байланысу" #~ msgid "Airplane Mode is On" #~ msgstr "Ұшақтағы режим іске қосылған" #~ msgid "Wi-Fi is disabled when airplane mode is on." #~ msgstr "Wi-Fi ұшақтағы режимі кезінде сөндірілген болады." #~ msgid "Turn Off Airplane Mode" #~ msgstr "Ұшақтағы режимді сөндіру" #~ msgid "Wi-Fi is Off" #~ msgstr "Wi-Fi сөндірілген" #~ msgid "Wi-Fi needs to be turned on in order to connect to a network." #~ msgstr "Желіге байланысты орнату үшін Wi-Fi іске қосылған болуы тиіс." #~ msgid "Turn On Wi-Fi" #~ msgstr "Wi-Fi іске қосу" #~ msgid "Select a network" #~ msgstr "Желіні таңдау" #~ msgid "Use hardware switch to turn off" #~ msgstr "Сөндіру үшін құрылғылық қосқышты қолданыңыз" #~ msgid "Select Network" #~ msgstr "Желіні таңдау" #~ msgid "Wi-Fi Settings" #~ msgstr "Wi-Fi баптаулары" #, javascript-format #~ msgid "%s Not Connected" #~ msgstr "%s байланыспаған" #~ msgid "connecting…" #~ msgstr "байланысты орнату…" #~ msgid "authentication required" #~ msgstr "аутентификация керек" #~ msgid "connection failed" #~ msgstr "байланысты орнату сәтсіз" #~ msgid "VPN Off" #~ msgstr "VPN сөндірілген" #, javascript-format #~ msgid "%s Wi-Fi Connection" #~ msgid_plural "%s Wi-Fi Connections" #~ msgstr[0] "%s Wi-Fi желі байланысы" #~ msgid "Night Light Disabled" #~ msgstr "Түнгі жарық сөндірілген" #~ msgid "Resume" #~ msgstr "Жалғастыру" #~ msgid "Disable Until Tomorrow" #~ msgstr "Ертеңге дейін сөндіру" #~ msgid "Fully Charged" #~ msgstr "Толығымен зарядталған" #~ msgid "Not Charging" #~ msgstr "Зарядталуда емес" #~ msgid "Estimating…" #~ msgstr "Есептеу…" #, javascript-format #~ msgid "%d∶%02d Remaining (%d %%)" #~ msgstr "%d∶%02d қалды (%d %%)" #, javascript-format #~ msgid "%d∶%02d Until Full (%d %%)" #~ msgstr "%d∶%02d толық зарядқа дейін (%d %%)" #~ msgid "Screen is Being Shared" #~ msgstr "Экранмен бөлісудесіз" #~ msgid "Turn off" #~ msgstr "Сөндіру" #~ msgid "Airplane Mode On" #~ msgstr "Ұшақтағы режим іске қосулы" #~ msgid "Lock" #~ msgstr "Блоктау" #~ msgid "Power Off / Log Out" #~ msgstr "Сөндіру / Жүйеден шығу" #~ msgid "Enable introspection API" #~ msgstr "Интроспекция API іске қосу" #~ msgid "" #~ "Enables a D-Bus API that allows to introspect the application state of " #~ "the shell." #~ msgstr "" #~ "Қоршамның қолданба күйін интроспекциялауды мүмкін қылатын D-Bus API іске " #~ "қосу." #~ msgid "Remove from Favorites" #~ msgstr "Таңдамалылардан өшіру" #~ msgid "Add to Favorites" #~ msgstr "Таңдамалыларға қосу" #~ msgid "Author" #~ msgstr "Авторы" #~ msgid "Warning" #~ msgstr "Ескерту" #~ msgid "" #~ "Extensions can cause system issues, including performance problems. If " #~ "you encounter problems with your system, it is recommended to disable all " #~ "extensions." #~ msgstr "" #~ "Кеңейтулер жүйелік мәселелерді, соның ішінде өнімділік мәселелерін " #~ "туғызуы мүмкін. Жүйелік мәселелерге тап болсаңыз, барлық кеңейтулерді " #~ "сөндіру ұсынылады." #~ msgid "Failed to connect to GNOME Shell" #~ msgstr "GNOME Shell-ға байланысты орнату сәтсіз аяқталды" #~ msgid "Minimize" #~ msgstr "Қайыру" #~ msgid "Unmaximize" #~ msgstr "Жазық емес қылу" #~ msgid "App Picker View" #~ msgstr "Қолданбаларды таңдау көрінісі" #~ msgid "Index of the currently selected view in the application picker." #~ msgstr "" #~ "Ағымдағы таңдалған көріністің қолданбаларды таңдау режиміндегі индексі." #~ msgid "Frequently used applications will appear here" #~ msgstr "Жиі қолданылатын қолданбалар осында көрінеді" #~ msgid "Frequent" #~ msgstr "Жиі қолданылатын" #~ msgid "All" #~ msgstr "Барлығы" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d" #~ msgstr "%A, %B %-d" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d, %Y" #~ msgstr "%A, %B %-d, %Y" #~ msgid "On" #~ msgstr "Іске қос." #~ msgid "" #~ "Keybinding that pauses and resumes all running tweens, for debugging " #~ "purposes" #~ msgstr "" #~ "Барлық орындалып тұрған анимацияларды тоқтататын не жалғастыратын " #~ "пернелер жарлығы (жөндеу үшін)" #~ msgid "Which keyboard to use" #~ msgstr "Қолданылатын пернетақта" #~ msgid "The type of keyboard to use." #~ msgstr "Қолданылатын пернетақта түрі." #~ msgid "network-workgroup" #~ msgstr "network-workgroup" #~ msgid "Copy Error" #~ msgstr "Көшіріп алу қатесі" #~ msgid "Browse in Software" #~ msgstr "БҚ қолданбасында шолу" #~ msgid "Next" #~ msgstr "Келесі" #~ msgctxt "button" #~ msgid "Sign In" #~ msgstr "Кіру" #~ msgid "Password:" #~ msgstr "Пароль:" #~ msgid "Type again:" #~ msgstr "Қайтадан енгізіңіз:" #~ msgid "Password: " #~ msgstr "Пароль: " #~ msgid "Authentication required by wireless network" #~ msgstr "Сымсыз желісі аутентификацияны талап етеді" #~ msgid "Mobile broadband network password" #~ msgstr "Сымсыз кеңжолақты желісінің паролі" #~ msgid "toggle-switch-us" #~ msgstr "toggle-switch-intl" #~ msgid "%A, %B %d" #~ msgstr "%A, %B %d" #~ msgid "%d new message" #~ msgid_plural "%d new messages" #~ msgstr[0] "%d жаңа хабарлама" #~ msgid "Account Settings" #~ msgstr "Тіркелгі баптаулары" #~ msgid "Orientation Lock" #~ msgstr "Бағдарды бекіту" #~ msgid "There was an error loading the preferences dialog for %s:" #~ msgstr "%s үшін баптаулар сұхбатын жүктеу кезінде қате орын алды:" #~ msgid "%s all day." #~ msgstr "%s күні бойы." #~ msgid "%s, then %s later." #~ msgstr "%s, одан кейін %s." #~ msgid "%s, then %s, followed by %s later." #~ msgstr "%s, одан кейін %s, одан кейін %s." #~ msgid "Feels like %s." #~ msgstr "%s сияқты сезіледі." #~ msgctxt "search-result" #~ msgid "Log out" #~ msgstr "Жүйеден шығу" #~ msgctxt "search-result" #~ msgid "Switch user" #~ msgstr "Пайдаланушыны ауыстыру" #~ msgid "Hide tray" #~ msgstr "Жүйелік трейді жасыру" #~ msgid "Status Icons" #~ msgstr "Қалып-күй таңбашалары" #~ msgid "Events" #~ msgstr "Оқиғалар" #~ msgid "Media" #~ msgstr "Медиа" #~ msgid "%d x %d" #~ msgstr "%d x %d" #~ msgid "Web Authentication Redirect" #~ msgstr "Веб аутентификацияның қайта бағдарлауы" #~ msgid "Show the week date in the calendar" #~ msgstr "Күнтізбеде апта күнін көрсету" #~ msgid "If true, display the ISO week date in the calendar." #~ msgstr "Ақиқат болса, күнтізбеде ISO апта күнін көрсетеді." #~ msgid "Use as Internet connection" #~ msgstr "Интернетпен байланыс ретінде қолдану" #~ msgid "%s is requesting access to your location." #~ msgstr "%s орналасу ақпаратыңызға қатынауды сұрайды." #~ msgid "GNOME Shell (wayland compositor)" #~ msgstr "GNOME Shell (wayland үйлестіргіші)" #~ msgid "%d Connected Device" #~ msgid_plural "%d Connected Devices" #~ msgstr[0] "%d байланысқан құрылғы" #~ msgid "UPS" #~ msgstr "UPS" #~ msgid "Battery" #~ msgstr "Батарея" #~ msgctxt "event list time" #~ msgid "%H∶%M" #~ msgstr "%H∶%M" #~ msgctxt "event list time" #~ msgid "%l∶%M %p" #~ msgstr "%l∶%M %p" #~ msgid "Invitation" #~ msgstr "Шақыру" #~ msgid "Call" #~ msgstr "Қоңырау" #~ msgid "File Transfer" #~ msgstr "Файлдармен алмасу" #~ msgid "Chat" #~ msgstr "Чат" #~ msgid "Invitation to %s" #~ msgstr "%s ішіне шақыру" #~ msgid "%s is inviting you to join %s" #~ msgstr "%s сізді %s ішіне қосылуды шақырады" #~ msgid "Decline" #~ msgstr "Тайдыру" #~ msgid "Accept" #~ msgstr "Қабылдау" #~ msgid "Video call from %s" #~ msgstr "Видео қоңырау: %s" #~ msgid "Call from %s" #~ msgstr "Қоңырау: %s" #~ msgid "Answer" #~ msgstr "Жауап" #~ msgid "%s is sending you %s" #~ msgstr "%s сізге %s жіберуде" #~ msgid "%s would like permission to see when you are online" #~ msgstr "%s сіз қашан желіде болатыныңызды білу құқығын сұрап тұр" #~ msgid "Authentication failed" #~ msgstr "Аутентификация сәтсіз" #~ msgid "Encryption error" #~ msgstr "Шифрлеу қатесі" #~ msgid "Certificate not provided" #~ msgstr "Сертификат ұсынылмады" #~ msgid "Certificate untrusted" #~ msgstr "Сертификат сенімсіз" #~ msgid "Certificate expired" #~ msgstr "Сертификаттың мерзімі аяқталған" #~ msgid "Certificate not activated" #~ msgstr "Сертификат белсендірілмеген" #~ msgid "Certificate hostname mismatch" #~ msgstr "Сертификаттың хост аты сәйкес емес" #~ msgid "Certificate fingerprint mismatch" #~ msgstr "Сертификаттың баспасы сәйкес емес" #~ msgid "Certificate self-signed" #~ msgstr "Сертификат өздігінен қолтаңбаланған" #~ msgid "Status is set to offline" #~ msgstr "Қалып-күй желіде емес етіп орнатылды" #~ msgid "Certificate is invalid" #~ msgstr "Сертификат дұрыс емес" #~ msgid "Connection has been refused" #~ msgstr "Сертификат тайдырылды" #~ msgid "Connection can't be established" #~ msgstr "Байланысты орнату мүмкін емес" #~ msgid "Connection has been lost" #~ msgstr "Байланыс жоғалтылды" #~ msgid "This account is already connected to the server" #~ msgstr "Бұл тіркелгі серверге байланысқан болып тұр" #~ msgid "" #~ "Connection has been replaced by a new connection using the same resource" #~ msgstr "Байланыс дәл сол ресурсты қолданып, жаңа байланыспен алмастырылды" #~ msgid "The account already exists on the server" #~ msgstr "Бұл тіркелгі серверде бар болып тұр" #~ msgid "Server is currently too busy to handle the connection" #~ msgstr "Сервер бұл байланысты өңдеу үшін тым бос емес" #~ msgid "Certificate has been revoked" #~ msgstr "Сертификат қайта шақырылған" #~ msgid "" #~ "Certificate uses an insecure cipher algorithm or is cryptographically weak" #~ msgstr "" #~ "Сертификат қауіпсіз емес шифрлеу алгоритмін қолдануда немесе " #~ "криптографиялы әлсіз" #~ msgid "" #~ "The length of the server certificate, or the depth of the server " #~ "certificate chain, exceed the limits imposed by the cryptography library" #~ msgstr "" #~ "Сервер сертификатының ұзындығы, не ол сертификат тізбегінің ұзындығы " #~ "криптографиялық жинақ ұсына алатын шегінен асып тұр" #~ msgid "Internal error" #~ msgstr "Ішкі қате" #~ msgid "View account" #~ msgstr "Тіркелгіні қарап шығу" #~ msgid "Show the message list" #~ msgstr "Хабарламалар тізімін көрсету" #~ msgctxt "list sunday" #~ msgid "Su" #~ msgstr "Жк" #~ msgctxt "list monday" #~ msgid "M" #~ msgstr "Бс" #~ msgctxt "list tuesday" #~ msgid "T" #~ msgstr "Сс" #~ msgctxt "list wednesday" #~ msgid "W" #~ msgstr "Ср" #~ msgctxt "list thursday" #~ msgid "Th" #~ msgstr "Бс" #~ msgctxt "list friday" #~ msgid "F" #~ msgstr "Жм" #~ msgctxt "list saturday" #~ msgid "S" #~ msgstr "Сн" #~ msgid "Nothing Scheduled" #~ msgstr "Жоспар бос" #~ msgid "This week" #~ msgstr "Осы аптада" #~ msgid "Next week" #~ msgstr "Келесі аптада" #~ msgid "Removable Devices" #~ msgstr "Ауыстырмалы құрылғылар" #~ msgid "Eject" #~ msgstr "Шығару" #~ msgid "Open" #~ msgstr "Ашу" #~ msgid "Clear Messages" #~ msgstr "Хабарламаларды тазарту" #~ msgid "Notification Settings" #~ msgstr "Хабарлау баптаулары" #~ msgid "Message Tray" #~ msgstr "Жүйелік трей" #~ msgid "Captive Portal" #~ msgstr "Captive-портал" #~ msgid "The maximum accuracy level of location." #~ msgstr "Орналасудың максималды дәлдік деңгейі." 07070100000244000081A40000000000000000000000016712993F00010C66000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/km.po# Khmer translation for gnome-shell. # Copyright (C) 2014 gnome-shell's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-shell package. # Khoem Sokhem , 2014. # Sophea Sok , 2014. msgid "" msgstr "" "Project-Id-Version: gnome-shell master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "shell&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2014-04-22 07:25+0000\n" "PO-Revision-Date: 2014-04-03 10:34+0700\n" "Last-Translator: Sophea Sok \n" "Language-Team: Khmer <>\n" "Language: km\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: WordForge 0.8 RC1\n" "X-Language: km-KH\n" #: ../data/50-gnome-shell-system.xml.in.h:1 msgid "System" msgstr "ប្រព័ន្ធ" #: ../data/50-gnome-shell-system.xml.in.h:2 msgid "Show the message tray" msgstr "បង្ហាញ​ថាស​សារ" #: ../data/50-gnome-shell-system.xml.in.h:3 msgid "Focus the active notification" msgstr "ផ្ដោត​លើ​ការ​ជូនដំណឹង​សកម្ម" #: ../data/50-gnome-shell-system.xml.in.h:4 msgid "Show the overview" msgstr "បង្ហាញ​ទិដ្ឋភាព​ទូទៅ" #: ../data/50-gnome-shell-system.xml.in.h:5 msgid "Show all applications" msgstr "បង្ហាញ​កម្មវិធី​ទាំងអស់" #: ../data/50-gnome-shell-system.xml.in.h:6 msgid "Open the application menu" msgstr "បើក​ម៉ឺនុយ​កម្មវិធី" #: ../data/gnome-shell.desktop.in.in.h:1 msgid "GNOME Shell" msgstr "GNOME សែល" #: ../data/gnome-shell.desktop.in.in.h:2 #: ../data/gnome-shell-wayland.desktop.in.in.h:2 msgid "Window management and application launching" msgstr "ការ​គ្រប់គ្រង​វីនដូ និង​ការ​ចាប់ផ្ដើម​កម្មវិធី" #: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1 #: ../js/extensionPrefs/main.js:155 msgid "GNOME Shell Extension Preferences" msgstr "ចំណូលចិត្ត​ផ្នែក​បន្ថែម​របស់ GNOME សែល" #: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2 msgid "Configure GNOME Shell Extensions" msgstr "កំណត់​រចនាសម្ព័ន្ធ​ផ្នែក​បន្ថែម​របស់ GNOME សែល" #: ../data/gnome-shell-wayland.desktop.in.in.h:1 msgid "GNOME Shell (wayland compositor)" msgstr "GNOME សែល (wayland compositor)" #: ../data/org.gnome.shell.gschema.xml.in.in.h:1 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "បើក​ឧបករណ៍​ខាងក្នុង មាន​ប្រយោជន៍​សម្រាប់​អ្នក​អភិវឌ្ឍន៍ និង​អ្នក​សាកល្បង​ចេញពី Alt-F2" #: ../data/org.gnome.shell.gschema.xml.in.in.h:2 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "អនុញ្ញាត​ឲ្យ​ចូល​ដំណើរការ​ឧបករណ៍​តាមដាន និង​ឧបករណ៍​បំបាត់​កំហុស​ខាងក្នុង​ដោយ​ប្រើ​ប្រអប់ Alt-F2 ។" #: ../data/org.gnome.shell.gschema.xml.in.in.h:3 msgid "UUIDs of extensions to enable" msgstr "UUIDs នៃ​ផ្នែក​បន្ថែម​ដែល​ត្រូវ​បើក" #: ../data/org.gnome.shell.gschema.xml.in.in.h:4 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "ផ្នែក​បន្ថែម​របស់ GNOME សែល​ដែល​មាន​លក្ខណសម្បត្តិ UUID ។ ពាក្យ​គន្លឹះ​នេះ​គឺ​រាយ​ផ្នែក​បន្ថែម​ដែល​គួរ​ត្រូវ​" "បាន​ផ្ទុក។ ផ្នែក​បន្ថែម​ណា​ដែល​ត្រូវ​ផ្ទុក គឺ​ត្រូវតែ​នៅ​ក្នុង​បញ្ជី​នេះ។ អ្នក​ក៏​អាច​រៀបចំ​បញ្ជី​នេះ​ដោយ​ប្រើ​" "វិធីសាស្ត្រ EnableExtension និង DisableExtension D-Bus បាន​ផង​ដែរ​នៅ​លើ org.gnome." "Shell ។" #: ../data/org.gnome.shell.gschema.xml.in.in.h:5 msgid "Disables the validation of extension version compatibility" msgstr "បិទ​សុពលកម្ម​នៃ​ភាព​ឆបគ្នា​របស់​កំណែ​ផ្នែក​បន្ថែម" #: ../data/org.gnome.shell.gschema.xml.in.in.h:6 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "GNOME សែល​នឹង​ផ្ទុក​តែ​ផ្នែក​បន្ថែម​ដែល​ប្រកាស​ដើម្បី​គាំទ្រ​កំណែ​កំពុង​ដំណើរការ​បច្ចុប្បន្ន​ប៉ុណ្ណោះ។ ការ​បើក​" "ជម្រើស​នេះ គឺ​វា​នឹង​បិទ​ការ​ពិនិត្យមើល​នេះ ហើយ​ព្យាយាម​ផ្ទុក​ផ្នែក​បន្ថែម​ទាំងអស់​ដោយ​មិន​គិត​អំពី​កំណែ​ដែល​ពួកគេ​" "ប្រកាស​ដើម្បី​គាំទ្រ​ឡើយ។" #: ../data/org.gnome.shell.gschema.xml.in.in.h:7 msgid "List of desktop file IDs for favorite applications" msgstr "បញ្ជី​លេខ​សម្គាល់​ឯកសារ​ផ្ទៃតុ​សម្រាប់​កម្មវិធី​សំណព្វ" #: ../data/org.gnome.shell.gschema.xml.in.in.h:8 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "កម្មវិធី​ដែល​ត្រូវគ្នា​ជាមួយ​កម្មវិធី​កំណត់​អត្តសញ្ញាណ​ទាំងនេះ នឹង​ត្រូវ​បាន​បង្ហាញ​នៅ​ក្នុង​ផ្ទៃ​សំណព្វ។" #: ../data/org.gnome.shell.gschema.xml.in.in.h:9 msgid "History for command (Alt-F2) dialog" msgstr "ប្រវត្តិ​សម្រាប់​ប្រអប់​ពាក្យ​បញ្ជា (Alt-F2)" #: ../data/org.gnome.shell.gschema.xml.in.in.h:10 msgid "History for the looking glass dialog" msgstr "ប្រវត្តិ​សម្រាប់​ប្រអប់ looking glass" #: ../data/org.gnome.shell.gschema.xml.in.in.h:11 msgid "Always show the 'Log out' menu item in the user menu." msgstr "បង្ហាញ​ធាតុ​ម៉ឺនុយ 'ចេញ' ជានិច្ច​នៅ​ក្នុង​ម៉ឺនុយ​អ្នកប្រើ។" #: ../data/org.gnome.shell.gschema.xml.in.in.h:12 msgid "" "This key overrides the automatic hiding of the 'Log out' menu item in single-" "user, single-session situations." msgstr "" "ពាក្យ​គន្លឹះ​នេះ​បដិសេធ​ការ​លាក់​ធាតុ​ម៉ឺនុយ 'ចេញ' ស្វ័យប្រវត្តិ​នៅ​ក្នុង​ស្ថានភាព​អ្នកប្រើ​តែមួយ សម័យ​តែមួយ។" #: ../data/org.gnome.shell.gschema.xml.in.in.h:13 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "ថា​តើ​ត្រូវ​ចងចាំ​ពាក្យសម្ងាត់​សម្រាប់​ការ​ម៉ោន​ប្រព័ន្ធ​ឯកសារ​ពី​ចម្ងាយ ឬ​ឯកសារ​ដែល​បាន​ដាក់​លេខ​កូដ​ដែរ​ឬទេ" #: ../data/org.gnome.shell.gschema.xml.in.in.h:14 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "'Remember Password' checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "សែល​នឹង​ស្នើ​ពាក្យសម្ងាត់ នៅ​ពេល​ដែល​ឧបករណ៍​ដាក់​លេខ​កូដ ឬ​ប្រព័ន្ធ​ឯកសារ​ពី​ចម្ងាយ​ត្រូវ​បាន​ម៉ោន។ ប្រសិនបើ​" "ពាក្យសម្ងាត់​អាច​ត្រូវ​បាន​រក្សាទុក​សម្រាប់​ប្រើ​នៅ​ពេល​អនាគត ប្រអប់​ធីក 'ចងចាំ​ពាក្យសម្ងាត់' នឹង​បង្ហាញ។ " "ពាក្យ​គន្លឹះ​នេះ​កំណត់​សភាព​លំនាំដើម​នៃ​ប្រអប់​ធីក។" #: ../data/org.gnome.shell.gschema.xml.in.in.h:15 msgid "Show the week date in the calendar" msgstr "បង្ហាញ​កាលបរិច្ឆេទ​សប្ដាហ៍​នៅ​ក្នុង​ប្រតិទិន" #: ../data/org.gnome.shell.gschema.xml.in.in.h:16 msgid "If true, display the ISO week date in the calendar." msgstr "បើ​ពិត បង្ហាញ​កាលបរិច្ឆេទ​សប្ដាហ៍ ISO នៅ​ក្នុង​ប្រតិទិន។" #: ../data/org.gnome.shell.gschema.xml.in.in.h:17 msgid "Keybinding to open the application menu" msgstr "បង្គំ​គ្រាប់ចុច​ដើម្បី​បើក​ម៉ឺនុយ​កម្មវិធី" #: ../data/org.gnome.shell.gschema.xml.in.in.h:18 msgid "Keybinding to open the application menu." msgstr "បង្គំ​គ្រាប់ចុច​ដើម្បី​បើក​ម៉ឺនុយ​កម្មវិធី។" #: ../data/org.gnome.shell.gschema.xml.in.in.h:19 msgid "Keybinding to open the \"Show Applications\" view" msgstr "បង្គំ​គ្រាប់ចុច​ដើម្បី​បើក​ទិដ្ឋភាព \"កម្មវិធី​បង្ហាញ\"" #: ../data/org.gnome.shell.gschema.xml.in.in.h:20 msgid "" "Keybinding to open the \"Show Applications\" view of the Activities Overview." msgstr "បង្គំ​គ្រាប់ចុច​ដើម្បី​បើក​ទិដ្ឋភាព \"កម្មវិធី​បង្ហាញ\" របស់​ទិដ្ឋភាព​សកម្មភាព។" #: ../data/org.gnome.shell.gschema.xml.in.in.h:21 msgid "Keybinding to open the overview" msgstr "បង្គំ​គ្រាប់ចុច​ដើម្បី​បើក​ទិដ្ឋភាព​ទូទៅ" #: ../data/org.gnome.shell.gschema.xml.in.in.h:22 msgid "Keybinding to open the Activities Overview." msgstr "បង្គំ​គ្រាប់ចុច​ដើម្បី​បើក​ទិដ្ឋភាព​សកម្មភាព។" #: ../data/org.gnome.shell.gschema.xml.in.in.h:23 msgid "Keybinding to toggle the visibility of the message tray" msgstr "បង្គំ​គ្រាប់ចុច​ដើម្បី​បិទ/បើក​លទ្ធភាព​មើល​ឃើញ​របស់​ថាស​សារ" #: ../data/org.gnome.shell.gschema.xml.in.in.h:24 msgid "Keybinding to toggle the visibility of the message tray." msgstr "បង្គំ​គ្រាប់ចុច​ដើម្បី​បិទ/បើក​លទ្ធភាព​មើល​ឃើញ​របស់​ថាស​សារ។" #: ../data/org.gnome.shell.gschema.xml.in.in.h:25 msgid "Keybinding to focus the active notification" msgstr "បង្គំ​គ្រាប់ចុច​ដើម្បី​ផ្ដោត​លើ​ការ​ជូនដំណឹង​សកម្ម" #: ../data/org.gnome.shell.gschema.xml.in.in.h:26 msgid "Keybinding to focus the active notification." msgstr "បង្គំ​គ្រាប់ចុច​ដើម្បី​ផ្ដោត​លើ​ការ​ជូនដំណឹង​សកម្ម។" #: ../data/org.gnome.shell.gschema.xml.in.in.h:27 msgid "Which keyboard to use" msgstr "ក្ដារចុច​ដែល​ត្រូវ​ប្រើ" #: ../data/org.gnome.shell.gschema.xml.in.in.h:28 msgid "The type of keyboard to use." msgstr "ប្រភេទ​ក្ដារចុច​ដែល​ត្រូវ​ប្រើ។" #: ../data/org.gnome.shell.gschema.xml.in.in.h:29 msgid "The maximum accuracy level of location." msgstr "កម្រិត​សុក្រឹតភាព​អតិបរមា​នៃ​ទីតាំង។" #: ../data/org.gnome.shell.gschema.xml.in.in.h:30 msgid "" "Configures the maximum level of location accuracy applications are allowed " "to see. Valid options are 'off' (disable location tracking), 'country', " "'city', 'neighborhood', 'street', and 'exact' (typically requires GPS " "receiver). Please keep in mind that this only controls what GeoClue will " "allow applications to see and they can find user's location on their own " "using network resources (albeit with street-level accuracy at best)." msgstr "" "កំណត់​រចនាសម្ព័ន្ធ​កម្រិត​អតិបរមា​របស់​កម្មវិធី​សុក្រឹតភាព​ទីតាំង​ដែល​បាន​អនុញ្ញាត​ឲ្យ​មើល​ឃើញ។ ជម្រើស​ដែល​ត្រឹមត្រូវ​" "គឺ 'off' (បិទ​ការ​តាមដាន​ទីតាំង), 'country', 'city', 'neighborhood', 'street', និង " "'exact' (ត្រូវ​មានឧបករណ៍​ទទួល GPS) ។ សូម​ចងចាំ​ថា​វា​គ្រប់គ្រង​អ្វី​ដែល GeoClue នឹង​អនុញ្ញាត​ឲ្យ​កម្មវិធី​" "មើល​ឃើញ ហើយ​ពួកគេ​អាច​រក​ឃើញ​ទីតាំង​របស់​អ្នកប្រើ​ដោយ​ប្រើ​ធនធាន​បណ្ដាញ​ផ្ទាល់ខ្លួន (សូម្បីតែ​សុក្រឹតភាព​កម្រិត​" "ផ្លូវ​ក៏​ល្អ​ដែរ)" #: ../data/org.gnome.shell.gschema.xml.in.in.h:31 msgid "The application icon mode." msgstr "របៀប​រូបតំណាង​កម្មវិធី។" #: ../data/org.gnome.shell.gschema.xml.in.in.h:32 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-" "only' (shows only the application icon) or 'both'." msgstr "" "កំណត់​រចនាសម្ព័ន្ធ​អំពី​របៀប​បង្ហាញ​បង្អួច​នៅ​ក្នុង​កម្មវិធី​ប្ដូរ។ តម្លៃ​ត្រឹមត្រូវ​ដែល​អាច​ប្រើ​បាន​គឺ 'thumbnail-" "only' (បង្ហាញ​រូបភាព​តូច​របស់​បង្អួច), 'app-icon-only' (បង្ហាញ​តែ​រូបតំណាង​កម្មវិធី​ប៉ុណ្ណោះ) ឬ " "'both'។" #: ../data/org.gnome.shell.gschema.xml.in.in.h:33 msgid "Attach modal dialog to the parent window" msgstr "ភ្ជាប់​ប្រអប់​បែបបទ​ទៅ​បង្អួច​មេ" #: ../data/org.gnome.shell.gschema.xml.in.in.h:34 msgid "" "This key overrides the key in org.gnome.mutter when running GNOME Shell." msgstr "ពាក្យ​គន្លឹះ​នេះ​បដិសេធ​ពាក្យ​គន្លឹះ​នៅ​ក្នុង org.gnome.mutter ពេល​ដំណើរការ GNOME សែល។" #: ../data/org.gnome.shell.gschema.xml.in.in.h:35 msgid "Arrangement of buttons on the titlebar" msgstr "ការ​រៀបចំ​ប៊ូតុង​នៅ​លើ​របារ​ចំណងជើង" #: ../data/org.gnome.shell.gschema.xml.in.in.h:36 msgid "" "This key overrides the key in org.gnome.desktop.wm.preferences when running " "GNOME Shell." msgstr "" "ពាក្យ​គន្លឹះ​នេះ​បដិសេធ​ពាក្យ​គន្លឹះ​នៅ​ក្នុង org.gnome.desktop.wm.preferences ពេល​ដំណើរការ " "GNOME សែល។" #: ../data/org.gnome.shell.gschema.xml.in.in.h:37 msgid "Enable edge tiling when dropping windows on screen edges" msgstr "បើក​គម្រប​គែម​ពេល​ទម្លាក់​បង្អួច​នៅ​លើ​គែម​អេក្រង់" #: ../data/org.gnome.shell.gschema.xml.in.in.h:38 msgid "Workspaces are managed dynamically" msgstr "តំបន់​ធ្វើការ​ត្រូវ​បាន​គ្រប់គ្រង​ជា​ថាមវន្ត" #: ../data/org.gnome.shell.gschema.xml.in.in.h:39 msgid "Workspaces only on primary monitor" msgstr "តំបន់​ធ្វើការ​មានតែ​នៅ​លើ​ម៉ូនីទ័រ​មេ​ប៉ុណ្ណោះ" #: ../data/org.gnome.shell.gschema.xml.in.in.h:40 msgid "Delay focus changes in mouse mode until the pointer stops moving" msgstr "ប្ដូរ​ការ​ពន្យារពេល​ផ្ដោត​នៅ​ក្នុង​របៀប​កណ្ដុរ​រហូតដល់​ព្រួញ​កណ្ដុរ​លែង​ផ្លាស់ទី" #: ../js/extensionPrefs/main.js:127 #, javascript-format msgid "There was an error loading the preferences dialog for %s:" msgstr "មាន​កំហុស​ពេល​ផ្ទុក​ប្រអប់​ចំណូលចិត្ត​សម្រាប់ %s ៖" #: ../js/extensionPrefs/main.js:167 msgid "Extension" msgstr "ផ្នែក​បន្ថែម" #: ../js/extensionPrefs/main.js:191 msgid "Select an extension to configure using the combobox above." msgstr "ជ្រើស​ផ្នែក​បន្ថែម​ដើម្បី​កំណត់​រចនាសម្ព័ន្ធ​ដោយ​ប្រើ​​ប្រអប់​បន្សំ​ខាង​លើ។" #: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:136 #: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:429 #: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399 #: ../js/ui/status/network.js:878 msgid "Cancel" msgstr "បោះបង់" #: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:217 msgid "Next" msgstr "បន្ទាប់" #: ../js/gdm/authPrompt.js:213 ../js/ui/shellMountOperation.js:403 #: ../js/ui/unlockDialog.js:59 msgid "Unlock" msgstr "ដោះ​សោ" #: ../js/gdm/authPrompt.js:215 msgctxt "button" msgid "Sign In" msgstr "ចូល" #: ../js/gdm/loginDialog.js:271 msgid "Choose Session" msgstr "ជ្រើស​សម័យ" #: ../js/gdm/loginDialog.js:431 msgid "Not listed?" msgstr "មិន​បាន​រាយ?" #: ../js/gdm/loginDialog.js:616 #, javascript-format msgid "(e.g., user or %s)" msgstr "(ឧ., អ្នកប្រើ ឬ %s)" #: ../js/gdm/loginDialog.js:621 ../js/ui/components/networkAgent.js:262 #: ../js/ui/components/networkAgent.js:280 msgid "Username: " msgstr "ឈ្មោះ​អ្នកប្រើ៖" #: ../js/gdm/loginDialog.js:924 msgid "Login Window" msgstr "បង្អួច​ចូល" #: ../js/gdm/util.js:323 msgid "Authentication error" msgstr "កំហុស​ការ​ផ្ទៀងផ្ទាត់" #: ../js/gdm/util.js:453 msgid "(or swipe finger)" msgstr "(ឬ​អូស​ម្រាមដៃ)" #: ../js/misc/util.js:115 msgid "Command not found" msgstr "រក​មិន​ឃើញ​ពាក្យ​បញ្ជា" #: ../js/misc/util.js:148 msgid "Could not parse command:" msgstr "មិន​អាច​ញែក​ពាក្យ​បញ្ជា៖" #: ../js/misc/util.js:156 #, javascript-format msgid "Execution of “%s” failed:" msgstr "ការ​ប្រតិបត្តិ “%s” បាន​បរាជ័យ៖" #: ../js/ui/appDisplay.js:636 msgid "Frequently used applications will appear here" msgstr "កម្មវិធី​ដែល​បាន​ប្រើ​ញឹកញាប់​នឹង​បង្ហាញ​នៅ​ទីនេះ" #: ../js/ui/appDisplay.js:747 msgid "Frequent" msgstr "ញឹកញាប់" #: ../js/ui/appDisplay.js:754 msgid "All" msgstr "ទាំងអស់" #: ../js/ui/appDisplay.js:1567 msgid "New Window" msgstr "បង្អួច​ថ្មី" #: ../js/ui/appDisplay.js:1589 ../js/ui/dash.js:285 msgid "Remove from Favorites" msgstr "យកចេញ​ពី​សំណព្វ" #: ../js/ui/appDisplay.js:1595 msgid "Add to Favorites" msgstr "បន្ថែម​ទៅ​សំណព្វ" #: ../js/ui/appFavorites.js:87 #, javascript-format msgid "%s has been added to your favorites." msgstr "បាន​បន្ថែម %s ទៅកាន់​សំណព្វ​របស់​អ្នក។" #: ../js/ui/appFavorites.js:121 #, javascript-format msgid "%s has been removed from your favorites." msgstr "បាន​យក %s ចេញពី​សំណព្វ​របស់​អ្នក។" #: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:810 #: ../js/ui/status/system.js:334 msgid "Settings" msgstr "ការ​កំណត់" #: ../js/ui/backgroundMenu.js:21 msgid "Change Background…" msgstr "ប្ដូរ​ផ្ទៃ​ខាងក្រោយ..." #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. */ #: ../js/ui/calendar.js:64 msgctxt "event list time" msgid "All Day" msgstr "ពេញ​មួយ​ថ្ងៃ" #. Translators: Shown in calendar event list, if 24h format, #. \u2236 is a ratio character, similar to : */ #: ../js/ui/calendar.js:70 msgctxt "event list time" msgid "%H∶%M" msgstr "%H∶%M" #. Translators: Shown in calendar event list, if 12h format, #. \u2236 is a ratio character, similar to : and \u2009 is #. a thin space */ #: ../js/ui/calendar.js:79 msgctxt "event list time" msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. */ #: ../js/ui/calendar.js:110 msgctxt "grid sunday" msgid "S" msgstr "S" #. Translators: Calendar grid abbreviation for Monday */ #: ../js/ui/calendar.js:112 msgctxt "grid monday" msgid "M" msgstr "M" #. Translators: Calendar grid abbreviation for Tuesday */ #: ../js/ui/calendar.js:114 msgctxt "grid tuesday" msgid "T" msgstr "T" #. Translators: Calendar grid abbreviation for Wednesday */ #: ../js/ui/calendar.js:116 msgctxt "grid wednesday" msgid "W" msgstr "W" #. Translators: Calendar grid abbreviation for Thursday */ #: ../js/ui/calendar.js:118 msgctxt "grid thursday" msgid "T" msgstr "T" #. Translators: Calendar grid abbreviation for Friday */ #: ../js/ui/calendar.js:120 msgctxt "grid friday" msgid "F" msgstr "F" #. Translators: Calendar grid abbreviation for Saturday */ #: ../js/ui/calendar.js:122 msgctxt "grid saturday" msgid "S" msgstr "S" #. Translators: Event list abbreviation for Sunday. #. * #. * NOTE: These list abbreviations are normally not shown together #. * so they need to be unique (e.g. Tuesday and Thursday cannot #. * both be 'T'). #. */ #: ../js/ui/calendar.js:135 msgctxt "list sunday" msgid "Su" msgstr "Su" #. Translators: Event list abbreviation for Monday */ #: ../js/ui/calendar.js:137 msgctxt "list monday" msgid "M" msgstr "M" #. Translators: Event list abbreviation for Tuesday */ #: ../js/ui/calendar.js:139 msgctxt "list tuesday" msgid "T" msgstr "T" #. Translators: Event list abbreviation for Wednesday */ #: ../js/ui/calendar.js:141 msgctxt "list wednesday" msgid "W" msgstr "W" #. Translators: Event list abbreviation for Thursday */ #: ../js/ui/calendar.js:143 msgctxt "list thursday" msgid "Th" msgstr "Th" #. Translators: Event list abbreviation for Friday */ #: ../js/ui/calendar.js:145 msgctxt "list friday" msgid "F" msgstr "F" #. Translators: Event list abbreviation for Saturday */ #: ../js/ui/calendar.js:147 msgctxt "list saturday" msgid "S" msgstr "S" #: ../js/ui/calendar.js:390 msgid "calendar:MY" msgstr "calendar:MY" #: ../js/ui/calendar.js:450 msgid "Previous month" msgstr "ខែ​មុន" #: ../js/ui/calendar.js:460 msgid "Next month" msgstr "ខែ​បន្ទាប់" #. Translators: Text to show if there are no events */ #: ../js/ui/calendar.js:772 msgid "Nothing Scheduled" msgstr "គ្មាន​កាលវិភាគ" #. Translators: Shown on calendar heading when selected day occurs on current year */ #: ../js/ui/calendar.js:790 msgctxt "calendar heading" msgid "%A, %B %d" msgstr "%A, %B %d" #. Translators: Shown on calendar heading when selected day occurs on different year */ #: ../js/ui/calendar.js:793 msgctxt "calendar heading" msgid "%A, %B %d, %Y" msgstr "%A, %B %d, %Y" #: ../js/ui/calendar.js:804 msgid "Today" msgstr "ថ្ងៃនេះ" #: ../js/ui/calendar.js:808 msgid "Tomorrow" msgstr "ថ្ងៃស្អែក" #: ../js/ui/calendar.js:819 msgid "This week" msgstr "សប្ដាហ៍​នេះ" #: ../js/ui/calendar.js:827 msgid "Next week" msgstr "សប្ដាហ៍​បន្ទាប់" #: ../js/ui/components/automountManager.js:91 msgid "External drive connected" msgstr "បាន​ភ្ជាប់​ដ្រាយ​ខាងក្រៅ" #: ../js/ui/components/automountManager.js:102 msgid "External drive disconnected" msgstr "បាន​ផ្ដាច់​ដ្រាយ​ខាងក្រៅ" #: ../js/ui/components/autorunManager.js:296 msgid "Removable Devices" msgstr "ឧបករណ៍​ចល័ត" #: ../js/ui/components/autorunManager.js:596 #, javascript-format msgid "Open with %s" msgstr "បើក​ជាមួយ %s" #: ../js/ui/components/autorunManager.js:622 msgid "Eject" msgstr "ច្រានចេញ" #: ../js/ui/components/keyring.js:91 ../js/ui/components/polkitAgent.js:285 msgid "Password:" msgstr "ពាក្យសម្ងាត់៖" #: ../js/ui/components/keyring.js:110 msgid "Type again:" msgstr "វាយ​ម្ដងទៀត៖" #: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:240 #: ../js/ui/status/network.js:322 ../js/ui/status/network.js:881 msgid "Connect" msgstr "តភ្ជាប់" #: ../js/ui/components/networkAgent.js:224 #: ../js/ui/components/networkAgent.js:236 #: ../js/ui/components/networkAgent.js:264 #: ../js/ui/components/networkAgent.js:284 #: ../js/ui/components/networkAgent.js:294 msgid "Password: " msgstr "ពាក្យសម្ងាត់៖" #: ../js/ui/components/networkAgent.js:229 msgid "Key: " msgstr "សោ៖" #: ../js/ui/components/networkAgent.js:268 msgid "Identity: " msgstr "អត្តសញ្ញាណ៖" #: ../js/ui/components/networkAgent.js:270 msgid "Private key password: " msgstr "ពាក្យសម្ងាត់​សោ​ឯកជន៖" #: ../js/ui/components/networkAgent.js:282 msgid "Service: " msgstr "សេវាកម្ម៖" #: ../js/ui/components/networkAgent.js:311 msgid "Authentication required by wireless network" msgstr "បាន​ទាមទារ​ការ​ផ្ទៀងផ្ទាត់​តាម​បណ្ដាញ​ឥតខ្សែ" #: ../js/ui/components/networkAgent.js:312 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network " "“%s”." msgstr "បាន​ទាមទារ​ពាក្យសម្ងាត់ ឬ​សោ​លេខ​កូដ​ដើម្បី​ចូល​ដំណើរការ​បណ្ដាញ​ឥត​ខ្សែ “%s” ។" #: ../js/ui/components/networkAgent.js:316 msgid "Wired 802.1X authentication" msgstr "ការ​ផ្ទៀង​ផ្ទាត់​ខ្សែ 802.1X" #: ../js/ui/components/networkAgent.js:318 msgid "Network name: " msgstr "ឈ្មោះ​បណ្ដាញ៖" #: ../js/ui/components/networkAgent.js:323 msgid "DSL authentication" msgstr "ការ​ផ្ទៀងផ្ទាត់ DSL" #: ../js/ui/components/networkAgent.js:330 msgid "PIN code required" msgstr "បាន​ទាមទារ​លេខ​កូដ PIN" #: ../js/ui/components/networkAgent.js:331 msgid "PIN code is needed for the mobile broadband device" msgstr "បាន​ទាមទារ​លេខ​កូដ PIN សម្រាប់​ឧបករណ៍​រលក​អាកាស​ធំ​ចល័ត" #: ../js/ui/components/networkAgent.js:332 msgid "PIN: " msgstr "PIN: " #: ../js/ui/components/networkAgent.js:338 msgid "Mobile broadband network password" msgstr "ពាក្យសម្ងាត់​បណ្ដាញ​រលក​អាកាស​ធំ​ចល័ត" #: ../js/ui/components/networkAgent.js:339 #, javascript-format msgid "A password is required to connect to “%s”." msgstr "បាន​ទាមទារ​ពាក្យសម្ងាត់​ដើម្បី​តភ្ជាប់​ទៅ “%s” ។" #: ../js/ui/components/polkitAgent.js:54 msgid "Authentication Required" msgstr "បាន​ទាមទារ​ការ​ផ្ទៀងផ្ទាត់" #: ../js/ui/components/polkitAgent.js:96 msgid "Administrator" msgstr "អ្នក​គ្រប់គ្រង" #: ../js/ui/components/polkitAgent.js:175 msgid "Authenticate" msgstr "ផ្ទៀងផ្ទាត់" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. */ #: ../js/ui/components/polkitAgent.js:271 ../js/ui/shellMountOperation.js:383 msgid "Sorry, that didn't work. Please try again." msgstr "សុំទោស​ដែល​មិន​ដំណើរការ។ សូម​ព្យាយាម​ម្ដងទៀត។" #: ../js/ui/components/telepathyClient.js:240 msgid "Invitation" msgstr "ការ​អញ្ជើញ" #: ../js/ui/components/telepathyClient.js:300 msgid "Call" msgstr "ហៅ" #: ../js/ui/components/telepathyClient.js:316 msgid "File Transfer" msgstr "ផ្ទេរ​ឯកសារ" #: ../js/ui/components/telepathyClient.js:420 msgid "Chat" msgstr "ជជែក" #: ../js/ui/components/telepathyClient.js:483 msgid "Unmute" msgstr "បើក​សំឡេង" #: ../js/ui/components/telepathyClient.js:483 msgid "Mute" msgstr "បិទ​សំឡេង" #. Translators: Time in 24h format */ #: ../js/ui/components/telepathyClient.js:958 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" */ #: ../js/ui/components/telepathyClient.js:965 msgid "Yesterday, %H∶%M" msgstr "ម្សិលមិញ %H∶%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" */ #: ../js/ui/components/telepathyClient.js:972 msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" */ #: ../js/ui/components/telepathyClient.js:979 msgid "%B %d, %H∶%M" msgstr "%B %d, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" */ #: ../js/ui/components/telepathyClient.js:985 msgid "%B %d %Y, %H∶%M" msgstr "%B %d %Y, %H∶%M" #. Translators: Time in 24h format */ #: ../js/ui/components/telepathyClient.js:994 msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" */ #: ../js/ui/components/telepathyClient.js:1001 msgid "Yesterday, %l∶%M %p" msgstr "ម្សិលមិញ %l∶%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" */ #: ../js/ui/components/telepathyClient.js:1008 msgid "%A, %l∶%M %p" msgstr "%A, %l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" */ #: ../js/ui/components/telepathyClient.js:1015 msgid "%B %d, %l∶%M %p" msgstr "%B %d, %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm"*/ #: ../js/ui/components/telepathyClient.js:1021 msgid "%B %d %Y, %l∶%M %p" msgstr "%B %d %Y, %l∶%M %p" #. Translators: this is the other person changing their old IM name to their new #. IM name. */ #: ../js/ui/components/telepathyClient.js:1054 #, javascript-format msgid "%s is now known as %s" msgstr "%s បាន​ស្គាល់​ជា %s" #. translators: argument is a room name like #. * room@jabber.org for example. */ #: ../js/ui/components/telepathyClient.js:1158 #, javascript-format msgid "Invitation to %s" msgstr "ការ​អញ្ជើញ​មកកាន់ %s" #. translators: first argument is the name of a contact and the second #. * one the name of a room. "Alice is inviting you to join room@jabber.org #. * for example. */ #: ../js/ui/components/telepathyClient.js:1166 #, javascript-format msgid "%s is inviting you to join %s" msgstr "%s អញ្ជើញ​អ្នក​ឲ្យ​ចូលរួម %s" #: ../js/ui/components/telepathyClient.js:1168 #: ../js/ui/components/telepathyClient.js:1203 #: ../js/ui/components/telepathyClient.js:1237 #: ../js/ui/components/telepathyClient.js:1295 msgid "Decline" msgstr "បដិសេធ" #: ../js/ui/components/telepathyClient.js:1174 #: ../js/ui/components/telepathyClient.js:1243 #: ../js/ui/components/telepathyClient.js:1300 msgid "Accept" msgstr "ព្រម​ទទួល" #. translators: argument is a contact name like Alice for example. */ #: ../js/ui/components/telepathyClient.js:1193 #, javascript-format msgid "Video call from %s" msgstr "ហៅ​ជា​វីដេអូ​ពី %s" #. translators: argument is a contact name like Alice for example. */ #: ../js/ui/components/telepathyClient.js:1196 #, javascript-format msgid "Call from %s" msgstr "ហៅ​ពី %s" #. translators: this is a button label (verb), not a noun */ #: ../js/ui/components/telepathyClient.js:1210 msgid "Answer" msgstr "ឆ្លើយ" #. To translators: The first parameter is #. * the contact's alias and the second one is the #. * file name. The string will be something #. * like: "Alice is sending you test.ogg" #. */ #: ../js/ui/components/telepathyClient.js:1231 #, javascript-format msgid "%s is sending you %s" msgstr "%s កំពុង​ផ្ញើ %s ឲ្យ​អ្នក" #. To translators: The parameter is the contact's alias */ #: ../js/ui/components/telepathyClient.js:1260 #, javascript-format msgid "%s would like permission to see when you are online" msgstr "%s ចង់​បាន​សិទ្ធិ​ដើម្បី​មើល ពេល​អ្នក​នៅ​ក្រៅ​បណ្ដាញ" #: ../js/ui/components/telepathyClient.js:1346 msgid "Network error" msgstr "កំហុស​បណ្ដាញ" #: ../js/ui/components/telepathyClient.js:1348 msgid "Authentication failed" msgstr "ការ​ផ្ទៀងផ្ទាត់​បាន​បរាជ័យ" #: ../js/ui/components/telepathyClient.js:1350 msgid "Encryption error" msgstr "កំហុស​ការ​ដាក់​លេខ​កូដ" #: ../js/ui/components/telepathyClient.js:1352 msgid "Certificate not provided" msgstr "មិន​បាន​ផ្ដល់​វិញ្ញាបនបត្រ" #: ../js/ui/components/telepathyClient.js:1354 msgid "Certificate untrusted" msgstr "វិញ្ញាបនបត្រ​មិន​ទុកចិត្ត" #: ../js/ui/components/telepathyClient.js:1356 msgid "Certificate expired" msgstr "វិញ្ញាបនបត្រ​ផុត​កំណត់" #: ../js/ui/components/telepathyClient.js:1358 msgid "Certificate not activated" msgstr "វិញ្ញាបនបត្រ​មិន​បាន​ធ្វើឲ្យ​សកម្ម" #: ../js/ui/components/telepathyClient.js:1360 msgid "Certificate hostname mismatch" msgstr "វិញ្ញាបនបត្រ​ឈ្មោះ​ម៉ាស៊ីន​មិន​ផ្គូផ្គង" #: ../js/ui/components/telepathyClient.js:1362 msgid "Certificate fingerprint mismatch" msgstr "វិញ្ញាបនបត្រ​ស្នាម​ម្រាមដៃ​មិន​ផ្គូផ្គង" #: ../js/ui/components/telepathyClient.js:1364 msgid "Certificate self-signed" msgstr "វិញ្ញាបនបត្រ​ចុះហត្ថលេខា​ខ្លួន​ឯង" #: ../js/ui/components/telepathyClient.js:1366 msgid "Status is set to offline" msgstr "បាន​កំណត់​ស្ថានភាព​ទៅ​ក្រៅ​បណ្ដាញ" #: ../js/ui/components/telepathyClient.js:1368 msgid "Encryption is not available" msgstr "មិន​មាន​ការ​ដាក់​លេខ​កូដ" #: ../js/ui/components/telepathyClient.js:1370 msgid "Certificate is invalid" msgstr "វិញ្ញាបនបត្រ​មិន​ត្រឹមត្រូវ" #: ../js/ui/components/telepathyClient.js:1372 msgid "Connection has been refused" msgstr "បាន​បដិសេធ​ការ​តភ្ជាប់" #: ../js/ui/components/telepathyClient.js:1374 msgid "Connection can't be established" msgstr "មិន​អាច​បង្កើត​ការ​តភ្ជាប់" #: ../js/ui/components/telepathyClient.js:1376 msgid "Connection has been lost" msgstr "ការ​តភ្ជាប់​បាន​ដាច់" #: ../js/ui/components/telepathyClient.js:1378 msgid "This account is already connected to the server" msgstr "គណនី​នេះ​បាន​ភ្ជាប់​ទៅ​ម៉ាស៊ីន​មេ​រួចហើយ" #: ../js/ui/components/telepathyClient.js:1380 msgid "" "Connection has been replaced by a new connection using the same resource" msgstr "បាន​ជំនួស​ការ​តភ្ជាប់​ថ្មី​ដោយ​ប្រើ​ធនធាន​ដូចគ្នា" #: ../js/ui/components/telepathyClient.js:1382 msgid "The account already exists on the server" msgstr "គណនី​មាន​នៅ​លើ​ម៉ាស៊ីន​មេ​រួចហើយ" #: ../js/ui/components/telepathyClient.js:1384 msgid "Server is currently too busy to handle the connection" msgstr "ម៉ាស៊ីន​មេ​កំពុង​រវល់​ក្នុង​ការ​តភ្ជាប់" #: ../js/ui/components/telepathyClient.js:1386 msgid "Certificate has been revoked" msgstr "បាន​ដកហូត​វិញ្ញាបនបត្រ" #: ../js/ui/components/telepathyClient.js:1388 msgid "" "Certificate uses an insecure cipher algorithm or is cryptographically weak" msgstr "វិញ្ញាបនបត្រ​ប្រើ​ក្បួន​ដោះស្រាយ​ការ​សរសេរ​សម្ងាត់​ដែល​គ្មាន​សុវត្ថិភាព ឬ​ការ​ដាក់​លេខ​កូដ​ខ្សោយ" #: ../js/ui/components/telepathyClient.js:1390 msgid "" "The length of the server certificate, or the depth of the server certificate " "chain, exceed the limits imposed by the cryptography library" msgstr "" "ប្រវែង​វិញ្ញាបនបត្រ​ម៉ាស៊ីន​មេ ឬ​ជម្រៅ​ច្រវាក់​វិញ្ញាបនបត្រ​ម៉ាស៊ីន​មេ​បាន​លើស​ដែន​កំណត់​ដែល​បាន​បង្ខំ​ដោយ​បណ្ណាល័យ​" "ការ​ដាក់​លេខ​កូដ" #: ../js/ui/components/telepathyClient.js:1392 msgid "Internal error" msgstr "កំហុស​ខាងក្នុង" #. translators: argument is the account name, like #. * name@jabber.org for example. */ #: ../js/ui/components/telepathyClient.js:1402 #, javascript-format msgid "Unable to connect to %s" msgstr "មិន​អាច​តភ្ជាប់​ទៅ %s" #: ../js/ui/components/telepathyClient.js:1407 msgid "View account" msgstr "មើល​គណនី" #: ../js/ui/components/telepathyClient.js:1444 msgid "Unknown reason" msgstr "មិន​ស្គាល់​មូលហេតុ" #: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96 msgid "Windows" msgstr "វីនដូ" #: ../js/ui/dash.js:249 ../js/ui/dash.js:287 msgid "Show Applications" msgstr "បង្ហាញ​កម្មវិធី" #: ../js/ui/dash.js:445 msgid "Dash" msgstr "ដាច់ៗ" #: ../js/ui/dateMenu.js:91 msgid "Open Calendar" msgstr "បើក​ប្រតិទិន" #: ../js/ui/dateMenu.js:95 msgid "Open Clocks" msgstr "បើក​នាឡិកា" #: ../js/ui/dateMenu.js:102 msgid "Date & Time Settings" msgstr "ការ​កំណត់​កាលបរិច្ឆេទ និង​ពេលវេលា" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM"). #. */ #: ../js/ui/dateMenu.js:192 msgid "%A %B %e, %Y" msgstr "%A %B %e, %Y" #: ../js/ui/endSessionDialog.js:66 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "ចេញ %s" #: ../js/ui/endSessionDialog.js:67 msgctxt "title" msgid "Log Out" msgstr "ចេញ" #: ../js/ui/endSessionDialog.js:69 #, javascript-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "%s នឹង​ចេញ​ដោយ​ស្វ័យប្រវត្តិ​ក្នុង​រយៈពេល %d វិនាទី។" #: ../js/ui/endSessionDialog.js:74 #, javascript-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "អ្នក​នឹង​ចេញ​ដោយ​ស្វ័យប្រវត្តិ​ក្នុង​រយៈពេល %d វិនាទី។" #: ../js/ui/endSessionDialog.js:80 msgctxt "button" msgid "Log Out" msgstr "ចេញ" #: ../js/ui/endSessionDialog.js:86 msgctxt "title" msgid "Power Off" msgstr "បិទ" #: ../js/ui/endSessionDialog.js:87 msgctxt "title" msgid "Install Updates & Power Off" msgstr "ដំឡើង​បច្ចុប្បន្នភាព រួច​បិទ" #: ../js/ui/endSessionDialog.js:89 #, javascript-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "ប្រព័ន្ធ​នឹង​បិទ​ដោយ​ស្វ័យប្រវត្តិ​ក្នុង​រយៈពេល %d វិនាទី។" #: ../js/ui/endSessionDialog.js:93 msgctxt "checkbox" msgid "Install pending software updates" msgstr "ដំឡើង​បច្ចុប្បន្នភាព​កម្មវិធី​មិនទាន់​សម្រេច" #: ../js/ui/endSessionDialog.js:96 ../js/ui/endSessionDialog.js:113 msgctxt "button" msgid "Restart" msgstr "ចាប់ផ្ដើម​ឡើងវិញ" #: ../js/ui/endSessionDialog.js:98 msgctxt "button" msgid "Power Off" msgstr "បិទ" #: ../js/ui/endSessionDialog.js:105 msgctxt "title" msgid "Restart" msgstr "ចាប់ផ្ដើម​ឡើងវិញ" #: ../js/ui/endSessionDialog.js:107 #, javascript-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "ប្រព័ន្ធ​នឹង​ចាប់ផ្ដើម​ឡើងវិញ​ដោយ​ស្វ័យប្រវត្តិ​ក្នុង​រយៈពេល %d វិនាទី។" #: ../js/ui/endSessionDialog.js:121 msgctxt "title" msgid "Restart & Install Updates" msgstr "ចាប់ផ្ដើម​ឡើងវិញ រួច​ដំឡើង​បច្ចុប្បន្នភាព" #: ../js/ui/endSessionDialog.js:123 #, javascript-format msgid "The system will automatically restart and install updates in %d second." msgid_plural "" "The system will automatically restart and install updates in %d seconds." msgstr[0] "ប្រព័ន្ធ​នឹង​ចាប់ផ្ដើម​ឡើងវិញ រួច​ដំឡើង​បច្ចុប្បន្នភាព​ដោយ​ស្វ័យប្រវត្តិ​ក្នុង​រយៈពេល %d វិនាទី។" #: ../js/ui/endSessionDialog.js:129 msgctxt "button" msgid "Restart & Install" msgstr "ចាប់ផ្ដើម​ឡើងវិញ & ដំឡើង" #: ../js/ui/endSessionDialog.js:130 msgctxt "button" msgid "Install & Power Off" msgstr "ដំឡើង & បិទ" #: ../js/ui/endSessionDialog.js:131 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "បិទ​បន្ទាប់ពី​បាន​ដំឡើង​បច្ចុប្បន្នភាព" #: ../js/ui/endSessionDialog.js:315 msgid "Running on battery power: please plug in before installing updates." msgstr "កំពុង​ដំណើរការ​ដោយសារ​ថាមពល​ថ្ម៖ សូម​ដោត​ខ្សែ​មុន​នឹង​ដំឡើង​បច្ចុប្បន្នភាព។" #: ../js/ui/endSessionDialog.js:332 msgid "Some applications are busy or have unsaved work." msgstr "កម្មវិធី​មួយ​ចំនួន​កំពុង​រវល់ ឬ​មាន​កិច្ចការ​មិនទាន់​រក្សាទុក។" #: ../js/ui/endSessionDialog.js:339 msgid "Other users are logged in." msgstr "អ្នកប្រើ​ផ្សេង​បាន​ចូល។" #. Translators: Remote here refers to a remote session, like a ssh login */ #: ../js/ui/endSessionDialog.js:619 #, javascript-format msgid "%s (remote)" msgstr "%s (ពី​ចម្ងាយ)" #. Translators: Console here refers to a tty like a VT console */ #: ../js/ui/endSessionDialog.js:622 #, javascript-format msgid "%s (console)" msgstr "%s (កុងសូល)" #: ../js/ui/extensionDownloader.js:199 msgid "Install" msgstr "ដំឡើង" #: ../js/ui/extensionDownloader.js:204 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "ទាញ​យក និង​ដំឡើង “%s” ពី extensions.gnome.org?" #: ../js/ui/keyboard.js:645 ../js/ui/status/keyboard.js:335 msgid "Keyboard" msgstr "ក្ដារចុច" #: ../js/ui/lookingGlass.js:643 msgid "No extensions installed" msgstr "មិន​បាន​ដំឡើង​ផ្នែក​បន្ថែម" #. Translators: argument is an extension UUID. */ #: ../js/ui/lookingGlass.js:697 #, javascript-format msgid "%s has not emitted any errors." msgstr "%s មិន​បាន​បញ្ចេញ​កំហុស។" #: ../js/ui/lookingGlass.js:703 msgid "Hide Errors" msgstr "លាក់​កំហុស" #: ../js/ui/lookingGlass.js:707 ../js/ui/lookingGlass.js:767 msgid "Show Errors" msgstr "បង្ហាញ​កំហុស" #: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:59 #: ../js/ui/status/location.js:167 msgid "Enabled" msgstr "បាន​បើក" #. Translators: this is for a network device that cannot be activated #. because it's disabled by rfkill (airplane mode) */ #. translators: #. * The device has been disabled #: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:164 #: ../js/ui/status/network.js:555 ../src/gvc/gvc-mixer-control.c:1830 msgid "Disabled" msgstr "បាន​បិទ" #: ../js/ui/lookingGlass.js:721 msgid "Error" msgstr "កំហុស" #: ../js/ui/lookingGlass.js:723 msgid "Out of date" msgstr "ហួស​សម័យ" #: ../js/ui/lookingGlass.js:725 msgid "Downloading" msgstr "ការ​ទាញ​យក" #: ../js/ui/lookingGlass.js:749 msgid "View Source" msgstr "មើល​ប្រភព" #: ../js/ui/lookingGlass.js:758 msgid "Web Page" msgstr "ទំព័រ​បណ្ដាញ" #: ../js/ui/messageTray.js:1326 msgid "Open" msgstr "បើក" #: ../js/ui/messageTray.js:1333 msgid "Remove" msgstr "យកចេញ" #: ../js/ui/messageTray.js:1630 msgid "Notifications" msgstr "ការ​ជូនដំណឹង" #: ../js/ui/messageTray.js:1637 msgid "Clear Messages" msgstr "សម្អាត​សារ" #: ../js/ui/messageTray.js:1656 msgid "Notification Settings" msgstr "ការ​កំណត់​ការ​ជូនដំណឺង" #: ../js/ui/messageTray.js:1709 msgid "Tray Menu" msgstr "ម៉ឺនុយ​ថាស" #: ../js/ui/messageTray.js:1926 msgid "No Messages" msgstr "មិន​មាន​សារ" #: ../js/ui/messageTray.js:1964 msgid "Message Tray" msgstr "ថាស​សារ" #: ../js/ui/messageTray.js:2967 msgid "System Information" msgstr "ព័ត៌មាន​ប្រព័ន្ធ" #: ../js/ui/notificationDaemon.js:516 ../src/shell-app.c:425 msgctxt "program" msgid "Unknown" msgstr "មិន​ស្គាល់" #: ../js/ui/overviewControls.js:483 ../js/ui/screenShield.js:151 #, javascript-format msgid "%d new message" msgid_plural "%d new messages" msgstr[0] "សារ​ថ្មី %d" #: ../js/ui/overview.js:84 msgid "Undo" msgstr "មិនធ្វើវិញ" #: ../js/ui/overview.js:124 msgid "Overview" msgstr "ទិដ្ឋភាព​ទូទៅ" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. */ #: ../js/ui/overview.js:250 msgid "Type to search…" msgstr "វាយ​បញ្ចូល​ដើម្បី​ស្វែងរក..." #: ../js/ui/panel.js:516 msgid "Quit" msgstr "បោះបង់" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". */ #: ../js/ui/panel.js:568 msgid "Activities" msgstr "សកម្មភាព" #: ../js/ui/panel.js:915 msgid "Top Bar" msgstr "របារ​កំពូល" #: ../js/ui/popupMenu.js:271 msgid "toggle-switch-us" msgstr "toggle-switch-us" #: ../js/ui/runDialog.js:74 msgid "Enter a Command" msgstr "បញ្ចូល​ពាក្យ​បញ្ជា" #: ../js/ui/runDialog.js:114 msgid "Close" msgstr "បិទ" #. Translators: This is a time format for a date in #. long format */ #: ../js/ui/screenShield.js:88 msgid "%A, %B %d" msgstr "%A, %B %d" #: ../js/ui/screenShield.js:153 #, javascript-format msgid "%d new notification" msgid_plural "%d new notifications" msgstr[0] "ការ​ជូនដំណឺង​ថ្មី %d" #: ../js/ui/screenShield.js:474 ../js/ui/status/system.js:342 msgid "Lock" msgstr "ចាក់សោ" #: ../js/ui/screenShield.js:708 msgid "GNOME needs to lock the screen" msgstr "GNOME ត្រូវការ​ចាក់សោ​អេក្រង់" #: ../js/ui/screenShield.js:835 ../js/ui/screenShield.js:1312 msgid "Unable to lock" msgstr "មិន​អាច​ចាក់សោ" #: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1313 msgid "Lock was blocked by an application" msgstr "បាន​ទប់ស្កាត់​ការ​ចាក់សោ​ដោយ​កម្មវិធី" #: ../js/ui/search.js:606 msgid "Searching…" msgstr "កំពុង​ស្វែងរក..." #: ../js/ui/search.js:652 msgid "No results." msgstr "មិន​មាន​លទ្ធផល។" #: ../js/ui/shellEntry.js:27 msgid "Copy" msgstr "ចម្លង" #: ../js/ui/shellEntry.js:32 msgid "Paste" msgstr "បិទភ្ជាប់" #: ../js/ui/shellEntry.js:99 msgid "Show Text" msgstr "បង្ហាញ​អត្ថបទ" #: ../js/ui/shellEntry.js:101 msgid "Hide Text" msgstr "លាក់​អត្ថបទ" #: ../js/ui/shellMountOperation.js:370 msgid "Password" msgstr "ពាក្យសម្ងាត់" #: ../js/ui/shellMountOperation.js:391 msgid "Remember Password" msgstr "ចងចាំ​ពាក្យសម្ងាត់" #: ../js/ui/status/accessibility.js:42 msgid "Accessibility" msgstr "ងាយស្រួល" #: ../js/ui/status/accessibility.js:57 msgid "Zoom" msgstr "ពង្រីក" #: ../js/ui/status/accessibility.js:64 msgid "Screen Reader" msgstr "កម្មវិធី​អាន​អេក្រង់" #: ../js/ui/status/accessibility.js:68 msgid "Screen Keyboard" msgstr "ក្ដារចុច​អេក្រង់" #: ../js/ui/status/accessibility.js:72 msgid "Visual Alerts" msgstr "ការ​ជូនដំណឹង​និម្មិត" #: ../js/ui/status/accessibility.js:75 msgid "Sticky Keys" msgstr "គ្រាប់ចុចស្អិត" #: ../js/ui/status/accessibility.js:78 msgid "Slow Keys" msgstr "គ្រាប់ចុច​យឺត" #: ../js/ui/status/accessibility.js:81 msgid "Bounce Keys" msgstr "គ្រាប់ចុច​លោត" #: ../js/ui/status/accessibility.js:84 msgid "Mouse Keys" msgstr "ប៊ូតុង​កណ្ដុរ" #: ../js/ui/status/accessibility.js:144 msgid "High Contrast" msgstr "កម្រិត​ពណ៌​ខ្ពស់" #: ../js/ui/status/accessibility.js:193 msgid "Large Text" msgstr "អត្ថបទ​ធំ" #: ../js/ui/status/bluetooth.js:49 msgid "Bluetooth" msgstr "ប៊្លូធូស" #: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:151 #: ../js/ui/status/network.js:323 ../js/ui/status/network.js:1234 #: ../js/ui/status/network.js:1345 ../js/ui/status/rfkill.js:85 #: ../js/ui/status/rfkill.js:105 msgid "Turn Off" msgstr "បិទ" #: ../js/ui/status/bluetooth.js:54 msgid "Bluetooth Settings" msgstr "ការ​កំណត់​ប៊្លូធូស" #: ../js/ui/status/bluetooth.js:104 #, javascript-format msgid "%d Connected Device" msgid_plural "%d Connected Devices" msgstr[0] "បាន​តភ្ជាប់​ឧបករណ៍ %d" #: ../js/ui/status/bluetooth.js:106 ../js/ui/status/network.js:1262 msgid "Not Connected" msgstr "មិន​បាន​តភ្ជាប់" #: ../js/ui/status/brightness.js:44 msgid "Brightness" msgstr "ពន្លឺ" #: ../js/ui/status/keyboard.js:403 msgid "Show Keyboard Layout" msgstr "បង្ហាញ​ប្លង់​ក្ដារចុច" #: ../js/ui/status/location.js:53 msgid "Location" msgstr "ទីតាំង" #: ../js/ui/status/location.js:60 ../js/ui/status/location.js:168 msgid "Disable" msgstr "បិទ" #: ../js/ui/status/location.js:165 msgid "Enable" msgstr "បើក" #: ../js/ui/status/location.js:167 msgid "In Use" msgstr "កំពុង​ប្រើ" #: ../js/ui/status/network.js:74 msgid "" msgstr "<មិន​ស្គាល់>" #: ../js/ui/status/network.js:420 ../js/ui/status/network.js:1260 #: ../js/ui/status/network.js:1464 msgid "Off" msgstr "បិទ" #: ../js/ui/status/network.js:422 msgid "Connected" msgstr "បាន​តភ្ជាប់" #. Translators: this is for network devices that are physically present but are not #. under NetworkManager's control (and thus cannot be used in the menu) */ #: ../js/ui/status/network.js:426 #| msgid "unmanaged" msgid "Unmanaged" msgstr "មិន​បាន​គ្រប់គ្រង" #: ../js/ui/status/network.js:428 #| msgid "disconnecting..." msgid "Disconnecting" msgstr "​ផ្ដាច់" #: ../js/ui/status/network.js:434 ../js/ui/status/network.js:1254 msgid "Connecting" msgstr "ការ​តភ្ជាប់" #. Translators: this is for network connections that require some kind of key or password */ #: ../js/ui/status/network.js:437 #| msgid "authentication required" msgid "Authentication required" msgstr "ទាមទារ​ការ​ផ្ទៀងផ្ទាត់" #. Translators: this is for devices that require some kind of firmware or kernel #. module, which is missing */ #: ../js/ui/status/network.js:445 #| msgid "firmware missing" msgid "Firmware missing" msgstr "បាត់​កម្មវិធី​បង្កប់" #. Translators: this is for a network device that cannot be activated (for example it #. is disabled by rfkill, or it has no coverage */ #: ../js/ui/status/network.js:449 #| msgid "unavailable" msgid "Unavailable" msgstr "មិន​មាន" #: ../js/ui/status/network.js:451 ../js/ui/status/network.js:1646 msgid "Connection failed" msgstr "ការ​តភ្ជាប់​បាន​បរាជ័យ" #: ../js/ui/status/network.js:467 msgid "Wired Settings" msgstr "ការ​កំណត់​ខ្សែ" #: ../js/ui/status/network.js:509 ../js/ui/status/network.js:587 msgid "Mobile Broadband Settings" msgstr "ការ​កំណត់​រលក​អាកាស​ធំ​ចល័ត" #: ../js/ui/status/network.js:551 ../js/ui/status/network.js:1258 msgid "Hardware Disabled" msgstr "បាន​បិទ​ផ្នែក​រឹង" #: ../js/ui/status/network.js:595 msgid "Use as Internet connection" msgstr "ប្រើ​ជា​ការ​តភ្ជាប់​អ៊ីនធឺណិត" #: ../js/ui/status/network.js:776 msgid "Airplane Mode is On" msgstr "បាន​របៀប​ជិះ​យន្តហោះ" #: ../js/ui/status/network.js:777 msgid "Wi-Fi is disabled when airplane mode is on." msgstr "វ៉ាយហ្វាយ​ត្រូវ​បាន​បិទ ពេល​បើក​របៀប​ជិះ​យន្តហោះ។" #: ../js/ui/status/network.js:778 msgid "Turn Off Airplane Mode" msgstr "បិទ​របៀប​ជិះ​យន្តហោះ" #: ../js/ui/status/network.js:787 msgid "Wi-Fi is Off" msgstr "បាន​បិទ​វ៉ាយហ្វាយ" #: ../js/ui/status/network.js:788 msgid "Wi-Fi needs to be turned on in order to connect to a network." msgstr "ចាំបាច់​ត្រូវ​បើក​វ៉ាយហ្វាយ​ដើម្បី​តភ្ជាប់​បណ្ដាញ។" #: ../js/ui/status/network.js:789 msgid "Turn On Wi-Fi" msgstr "បើក​វ៉ាយហ្វាយ" #: ../js/ui/status/network.js:814 msgid "Wi-Fi Networks" msgstr "បណ្ដាញ​វ៉ាយហ្វាយ" #: ../js/ui/status/network.js:816 msgid "Select a network" msgstr "ជ្រើស​បណ្ដាញ" #: ../js/ui/status/network.js:845 msgid "No Networks" msgstr "គ្មាន​បណ្ដាញ" #: ../js/ui/status/network.js:866 ../js/ui/status/rfkill.js:103 msgid "Use hardware switch to turn off" msgstr "ប្រើ​កុងតាក់​ផ្នែក​រឹង​ដើម្បី​បិទ" #: ../js/ui/status/network.js:1136 msgid "Select Network" msgstr "ជ្រើស​បណ្ដាញ" #: ../js/ui/status/network.js:1142 msgid "Wi-Fi Settings" msgstr "ការ​កំណត់​វ៉ាយហ្វាយ" #: ../js/ui/status/network.js:1234 msgid "Turn On" msgstr "បើក" #: ../js/ui/status/network.js:1251 msgid "Hotspot Active" msgstr "ហតស្ប៉ត​សកម្ម" #: ../js/ui/status/network.js:1362 msgid "connecting..." msgstr "កំពុង​តភ្ជាប់" #. Translators: this is for network connections that require some kind of key or password */ #: ../js/ui/status/network.js:1365 msgid "authentication required" msgstr "ទាមទារ​ការ​ផ្ទៀងផ្ទាត់" #: ../js/ui/status/network.js:1367 msgid "connection failed" msgstr "ការ​តភ្ជាប់​បាន​បរាជ័យ" #: ../js/ui/status/network.js:1433 ../js/ui/status/rfkill.js:88 msgid "Network Settings" msgstr "ការ​កំណត់​បណ្ដាញ" #: ../js/ui/status/network.js:1435 msgid "VPN Settings" msgstr "ការ​កំណត់​វីភីអិន" #: ../js/ui/status/network.js:1454 msgid "VPN" msgstr "វីភីអិន" #: ../js/ui/status/network.js:1607 msgid "Network Manager" msgstr "កម្មវិធី​គ្រប់គ្រង​បណ្ដាញ" #: ../js/ui/status/network.js:1647 msgid "Activation of network connection failed" msgstr "ការ​ធ្វើឲ្យ​បណ្ដាញ​សកម្ម បាន​បរាជ័យ" #: ../js/ui/status/power.js:49 msgid "Power Settings" msgstr "ការ​កំណត់ថាមពល" #: ../js/ui/status/power.js:65 msgid "Fully Charged" msgstr "បាន​បញ្ចូល​ពេញ" #: ../js/ui/status/power.js:72 ../js/ui/status/power.js:78 msgid "Estimating…" msgstr "កំពុង​ប៉ាន់ស្មាន..." #: ../js/ui/status/power.js:86 #, javascript-format msgid "%d∶%02d Remaining (%d%%)" msgstr "%d∶%02d នៅសល់ (%d%%)" #: ../js/ui/status/power.js:91 #, javascript-format msgid "%d∶%02d Until Full (%d%%)" msgstr "%d∶%02d រហូត​ពេញ (%d%%)" #: ../js/ui/status/power.js:119 msgid "UPS" msgstr "យូភីអេស" #: ../js/ui/status/power.js:121 msgid "Battery" msgstr "ថ្ម" #: ../js/ui/status/rfkill.js:82 msgid "Airplane Mode" msgstr "របៀប​ជិះ​យន្តហោះ" #: ../js/ui/status/rfkill.js:84 msgid "On" msgstr "បើក" #: ../js/ui/status/system.js:314 msgid "Switch User" msgstr "ប្ដូរ​អ្នកប្រើ" #: ../js/ui/status/system.js:319 msgid "Log Out" msgstr "ចេញ" #: ../js/ui/status/system.js:338 msgid "Orientation Lock" msgstr "ចាក់សោ​ទិស" #: ../js/ui/status/system.js:346 msgid "Suspend" msgstr "ផ្អាក" #: ../js/ui/status/system.js:349 msgid "Power Off" msgstr "បិទ" #: ../js/ui/status/volume.js:127 msgid "Volume changed" msgstr "ប្ដូរ​កម្រិត​សំឡេង" #: ../js/ui/status/volume.js:162 msgid "Volume" msgstr "កម្រិត​សំឡេង" #: ../js/ui/status/volume.js:213 msgid "Microphone" msgstr "មីក្រូហ្វូន" #: ../js/ui/unlockDialog.js:67 msgid "Log in as another user" msgstr "ចូល​ជា​អ្នកប្រើ​ផ្សេង" #: ../js/ui/unlockDialog.js:84 msgid "Unlock Window" msgstr "ដោះ​សោ​វីនដូ" #: ../js/ui/viewSelector.js:100 msgid "Applications" msgstr "កម្មវិធី" #: ../js/ui/viewSelector.js:104 msgid "Search" msgstr "ស្វែងរក" #: ../js/ui/windowAttentionHandler.js:19 #, javascript-format msgid "“%s” is ready" msgstr "“%s” គឺ​រួចរាល់​ហើយ" #: ../js/ui/windowManager.js:56 msgid "Do you want to keep these display settings?" msgstr "អ្នក​ចង់​រក្សា​ការ​កំណត់​បង្ហាញ​ទាំងនេះ​ដែរ​ឬទេ?" #. Translators: this and the following message should be limited in lenght, #. to avoid ellipsizing the labels. #. */ #: ../js/ui/windowManager.js:75 msgid "Revert Settings" msgstr "ត្រឡប់​ការ​កំណត់​ទៅ​ដើម" #: ../js/ui/windowManager.js:79 msgid "Keep Changes" msgstr "រក្សា​ការ​ផ្លាស់ប្ដូរ" #: ../js/ui/windowManager.js:98 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "ការ​ផ្លាស់ប្ដូរ​ការ​កំណត់​នឹង​ត្រឡប់​ទៅ​ដើម​ក្នុង​រយៈពេល %d វិនាទី" #: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1 msgid "Evolution Calendar" msgstr "ប្រតិទិន​ការ​វិវត្ត" #. translators: #. * The number of sound outputs on a particular device #: ../src/gvc/gvc-mixer-control.c:1837 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "ចេញ %u" #. translators: #. * The number of sound inputs on a particular device #: ../src/gvc/gvc-mixer-control.c:1847 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "ចូល %u" #: ../src/gvc/gvc-mixer-control.c:2373 msgid "System Sounds" msgstr "សំឡេង​ប្រព័ន្ធ" #: ../src/main.c:349 msgid "Print version" msgstr "បោះពុម្ព​កំណែ" #: ../src/main.c:355 msgid "Mode used by GDM for login screen" msgstr "របៀប​ដែល​បាន​ប្រើ​ដោយ GDM សម្រាប់​អេក្រង់​ចូល" #: ../src/main.c:361 msgid "Use a specific mode, e.g. \"gdm\" for login screen" msgstr "ប្រើ​រៀប​ជាក់លាក់, ឧ. \"gdm\" សម្រាប់​អេក្រង់​ចូល" #: ../src/main.c:367 msgid "List possible modes" msgstr "រាយ​របៀប​ដែល​អាច​ធ្វើ​បាន" #: ../src/shell-app.c:666 #, c-format msgid "Failed to launch “%s”" msgstr "បាន​បរាជ័យ​ក្នុង​ការ​ចាប់ផ្ដើម “%s”" #: ../src/shell-keyring-prompt.c:714 msgid "Passwords do not match." msgstr "ពាក្យសម្ងាត់​មិន​ផ្គូរផ្គង។" #: ../src/shell-keyring-prompt.c:722 msgid "Password cannot be blank" msgstr "ពាក្យសម្ងាត់​មិន​អាចទទេ" #: ../src/shell-polkit-authentication-agent.c:346 msgid "Authentication dialog was dismissed by the user" msgstr "បាន​បដិសេធ​ប្រអប់​ផ្ទៀងផ្ទាត់​ដោយ​អ្នកប្រើ" 07070100000245000081A40000000000000000000000016712993F00015FEB000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/kn.po# Kannada translation for gnome-shell. # Copyright (C) 2011 gnome-shell's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-shell package. # # Shankar Prasad , 2011, 2012, 2013, 2014. # Shankar , 2013. #zanata. # Shankar , 2014. #zanata. msgid "" msgstr "" "Project-Id-Version: gnome-shell master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "shell&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2014-09-21 19:28+0000\n" "PO-Revision-Date: 2014-09-22 12:15+0530\n" "Last-Translator: Shankar Prasad \n" "Language-Team: Kannada \n" "Language: kn\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: Lokalize 1.5\n" #: ../data/50-gnome-shell-system.xml.in.h:1 msgid "System" msgstr "ವ್ಯವಸ್ಥೆ" #: ../data/50-gnome-shell-system.xml.in.h:2 msgid "Show the message tray" msgstr "ಸಂದೇಶ ಟ್ರೇ ಅನ್ನು ತೋರಿಸು" #: ../data/50-gnome-shell-system.xml.in.h:3 msgid "Focus the active notification" msgstr "ಸಕ್ರಿಯ ಸೂಚನೆಯತ್ತ ಗಮನಹರಿಸು" #: ../data/50-gnome-shell-system.xml.in.h:4 msgid "Show the overview" msgstr "ಅವಲೋಕನವನ್ನು ತೋರಿಸು" #: ../data/50-gnome-shell-system.xml.in.h:5 msgid "Show all applications" msgstr "ಎಲ್ಲಾ ಅನ್ವಯಗಳನ್ನು ತೋರಿಸು" #: ../data/50-gnome-shell-system.xml.in.h:6 msgid "Open the application menu" msgstr "ಅನ್ವಯಗಳ ಮೆನುವನ್ನು ತೆರೆ" #: ../data/gnome-shell.desktop.in.in.h:1 msgid "GNOME Shell" msgstr "GNOME ಶೆಲ್‌" #: ../data/gnome-shell.desktop.in.in.h:2 #: ../data/gnome-shell-wayland.desktop.in.in.h:2 msgid "Window management and application launching" msgstr "ಕಿಟಕಿ ನಿರ್ವಹಣೆ ಹಾಗು ಅನ್ವಯವನ್ನು ಆರಂಭಿಸುವಿಕೆ" #: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1 msgid "GNOME Shell Extension Preferences" msgstr "GNOME ಶೆಲ್ ಎಕ್ಸ‍ಟೆನ್ಶನ್‍ ಆದ್ಯತೆಗಳು" #: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2 msgid "Configure GNOME Shell Extensions" msgstr "GNOME ಶೆಲ್ ಎಕ್ಸ‍ಟೆನ್ಶನ್ಸ್ ಅನ್ನು ಸಂರಚಿಸಿ" #: ../data/gnome-shell-wayland.desktop.in.in.h:1 msgid "GNOME Shell (wayland compositor)" msgstr "GNOME ಶೆಲ್‌ (ವೇಲ್ಯಾಂಡ್‌ ) ಸಂಯೋಜಕ" #: ../data/org.gnome.shell.gschema.xml.in.in.h:1 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" "Alt-F2 ಇಂದ ವಿಕಸನೆಗಾರರಿಗೆ ಹಾಗು ಪರೀಕ್ಷಕರಿಗೆ ಉಪಯುಕ್ತವಾಗುವ ಆಂತರಿಕ ಉಪಕರಣಗಳನ್ನು " "ಸಕ್ರಿಯಗೊಳಿಸುತ್ತದೆ" #: ../data/org.gnome.shell.gschema.xml.in.in.h:2 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Alt-F2 ಸಂವಾದಚೌಕವನ್ನು ಬಳಸಿಕೊಂಡು ಆಂತರಿಕ ದೋಷ ನಿವಾರಣೆ ಹಾಗು ಮೇಲ್ವಿಚಾರಣೆ " "ಉಪಕರಣಗಳನ್ನು " "ನಿಲುಕಿಸಿಕೊಳ್ಳಲು ಅನುವುಮಾಡಿಕೊಡುತ್ತದೆ." #: ../data/org.gnome.shell.gschema.xml.in.in.h:3 msgid "UUIDs of extensions to enable" msgstr "ಸಕ್ರಿಯಗೊಳಿಸಬೇಕಿರುವ ವಿಸ್ತರಣೆಗಳ UUIDಗಳು" #: ../data/org.gnome.shell.gschema.xml.in.in.h:4 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "GNOME ಶೆಲ್ ವಿಸ್ತರಣೆಗಳು ಒಂದು UUID ಗುಣವನ್ನು ಹೊಂದಿರುತ್ತವೆ; ಈ ಕೀಲಿ ಪಟ್ಟಿಯು ಲೋಡ್ " "ಮಾಡಬೇಕಿರುವ ವಿಸ್ತರಣೆಗಳ ಪಟ್ಟಿಯನ್ನು ತೋರಿಸುತ್ತದೆ. ಯಾವುದೆ ವಿಸ್ತರಣೆಗಳನ್ನು ಲೋಡ್‌ " "ಮಾಡಬೇಕಿದ್ದಲ್ಲಿ ಅದು ಈ ಪಟ್ಟಿಯಲ್ಲಿ ಇರುವುದು ಅತ್ಯಗತ್ಯ. org.gnome.Shell ನಲ್ಲಿ " "EnableExtension ಮತ್ತು DisableExtension D-Bus ವಿಧಾನಗಳನ್ನು ಬಳಸಿಕೊಂಡೂ ಸಹ ಈ " "ಪಟ್ಟಿಯನ್ನು ನಿರ್ವಹಿಸಬಹುದು." #: ../data/org.gnome.shell.gschema.xml.in.in.h:5 msgid "Disables the validation of extension version compatibility" msgstr "ವಿಸ್ತರಣೆ ಆವೃತ್ತಿಯ ಹೊಂದಾಣಿಕೆಯ ಮೌಲ್ಯಮಾಪನವನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸುತ್ತದೆ" #: ../data/org.gnome.shell.gschema.xml.in.in.h:6 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "GNOME ಶೆಲ್‌ ಪ್ರಸಕ್ತ ಚಲಾಯಿಸಲಾಗುತ್ತಿರುವ ಆವೃತ್ತಿಯನ್ನು ಬೆಂಬಲಿಸಲು ಕೇವಲ " "ವಿಸ್ತರಣೆಗಳನ್ನು ಮಾತ್ರ " "ಲೋಡ್ ಮಾಡುತ್ತದೆ. ಈ ಆಯ್ಕೆಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುವುದರಿಂದ ಈ ಪರೀಕ್ಷೆಯನ್ನು " "ನಿಷ್ಕ್ರಿಯಗೊಳಿಸುತ್ತದೆ " "ಮತ್ತು ಬೆಂಬಲವಿರಲಿ ಇಲ್ಲದೆ ಇರಲಿ, ಲಭ್ಯವಿರುವ ಎಲ್ಲಾ ವಿಸ್ತರಣೆಗಳನ್ನು ಲೋಡ್ ಮಾಡಲು " "ಪ್ರಯತ್ನಿಸುತ್ತದೆ." #: ../data/org.gnome.shell.gschema.xml.in.in.h:7 msgid "List of desktop file IDs for favorite applications" msgstr "ಮೆಚ್ಚಿನ ಅನ್ವಯಗಳಿಗಾಗಿನ ಗಣಕತೆರೆ ಕಡತ IDಗಳ ಪಟ್ಟಿ" #: ../data/org.gnome.shell.gschema.xml.in.in.h:8 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" "ಈ ಐಡೆಂಟಿಫಯರುಗಳಿಗೆ ಅನುಗುಣವಾದ ಅನ್ವಯಗಳನ್ನು ಮೆಚ್ಚಿನವುಗಳ ಜಾಗದಲ್ಲಿ ತೋರಿಸಲಾಗುತ್ತದೆ." #: ../data/org.gnome.shell.gschema.xml.in.in.h:9 msgid "App Picker View" msgstr "ಆಪ್ ಆಯ್ಕೆಗಾರ ನೋಟ" #: ../data/org.gnome.shell.gschema.xml.in.in.h:10 msgid "Index of the currently selected view in the application picker." msgstr "ಅನ್ವಯ ಆಯ್ಕೆಗಾರದಲ್ಲಿನ ಪ್ರಸಕ್ತ ಆಯ್ಕೆ ಮಾಡಿದ ನೋಟದ ಸೂಚಿ." #: ../data/org.gnome.shell.gschema.xml.in.in.h:11 msgid "History for command (Alt-F2) dialog" msgstr "ಆದೇಶದ ಇತಿಹಾಸ (Alt-F2) ಸಂವಾದಚೌಕ" #: ../data/org.gnome.shell.gschema.xml.in.in.h:12 msgid "History for the looking glass dialog" msgstr "ನೋಡುವ ಗಾಜಿನ ಸಂವಾದ ಚೌಕಕ್ಕಾಗಿನ ಇತಿಹಾಸ" #: ../data/org.gnome.shell.gschema.xml.in.in.h:13 msgid "Always show the 'Log out' menu item in the user menu." msgstr "ಯಾವಾಗಲೂ 'ನಿರ್ಗಮಿಸು' ಮೆನು ಅಂಶವನ್ನು ಬಳಕೆದಾರ ಮೆನುವಿನಲ್ಲಿ ತೋರಿಸು." #: ../data/org.gnome.shell.gschema.xml.in.in.h:14 msgid "" "This key overrides the automatic hiding of the 'Log out' menu item in single-" "user, single-session situations." msgstr "" "ಈ ಕೀಲಿಯು ಏಕ-ಬಳಕೆದಾರ, ಏಕ-ಅಧಿವೇಶನ ಸಂದರ್ಭಗಳಲ್ಲಿ 'ನಿರ್ಗಮಿಸು' ಮೆನು ಅಂಶದ " "ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಅಡಗಿಸಲ್ಪಡುವ ಆಯ್ಕೆಯನ್ನು ಅತಿಕ್ರಮಿಸುತ್ತದೆ." #: ../data/org.gnome.shell.gschema.xml.in.in.h:15 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "ಗೂಢಲಿಪೀಕರಿಸಲಾದ ಅಥವ ದೂರದ ಕಡತವ್ಯವಸ್ಥೆಗಳನ್ನು ಏರಿಸುವ ಸಲುವಾಗಿನ ಗುಪ್ತಪದಗಳನ್ನು " "ನೆನಪಿಟ್ಟುಕೊಳ್ಳಬೇಕೆ" #: ../data/org.gnome.shell.gschema.xml.in.in.h:16 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "'Remember Password' checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "ಗೂಢಲಿಪೀಕರಿಸಲಾದ ಸಾಧನ ಅಥವ ದೂರದ ಕಡತವ್ಯವಸ್ಥೆಗಳನ್ನು ಏರಿಸುವ ಸಲುವಾಗಿನ ಗುಪ್ತಪದಗಳನ್ನು " "ಶೆಲ್ " "ನೆನಪಿಟ್ಟುಕೊಳ್ಳುತ್ತದೆ. ಗುಪ್ತಪದವನ್ನು ಭವಿಷ್ಯದ ಬಳಕೆಗಾಗಿ ಉಳಿಸಬಹುದಾದಲ್ಲಿ " "'ಗುಪ್ತಪದವನ್ನು " "ನೆನಪಿಟ್ಟುಕೊ' ಎಂಬ ಗುರುತು ಚೌಕವು ಕಾಣಿಸಿಕೊಳ್ಳುತ್ತದೆ. ಈ ಕೀಲಿಯು ಗುರುತುಚೌಕದ " "ಪೂರ್ವನಿಯೋಜಿತ " "ಸ್ಥಿತಿಯನ್ನು ಹೊಂದಿಸುತ್ತದೆ." #: ../data/org.gnome.shell.gschema.xml.in.in.h:17 msgid "Show the week date in the calendar" msgstr "ಕ್ಯಾಲೆಂಡರಿನಲ್ಲಿ ವಾರದ ದಿನವನ್ನು ತೋರಿಸು" #: ../data/org.gnome.shell.gschema.xml.in.in.h:18 msgid "If true, display the ISO week date in the calendar." msgstr "true ಆದಲ್ಲಿ, ಕ್ಯಾಲೆಂಡರಿನಲ್ಲಿ ISO ವಾರದ ದಿನವನ್ನು ತೋರಿಸುತ್ತದೆ." #: ../data/org.gnome.shell.gschema.xml.in.in.h:19 msgid "Keybinding to open the application menu" msgstr "ಅನ್ವಯಗಳ ಮೆನುವನ್ನು ತೆರೆಯಬೇಕಿರುವ ಕೀಲಿಬೈಂಡಿಂಗ್" #: ../data/org.gnome.shell.gschema.xml.in.in.h:20 msgid "Keybinding to open the application menu." msgstr "ಅನ್ವಯಗಳ ಮೆನುವನ್ನು ತೆರೆಯಬೇಕಿರುವ ಕೀಲಿಬೈಂಡಿಂಗ್." #: ../data/org.gnome.shell.gschema.xml.in.in.h:21 msgid "Keybinding to open the \"Show Applications\" view" msgstr "\"ಅನ್ವಯಗಳನ್ನು ತೋರಿಸು\" ನೋಟವನ್ನು ತೆರೆಯಬೇಕಿರುವ ಕೀಲಿಬೈಂಡಿಂಗ್" #: ../data/org.gnome.shell.gschema.xml.in.in.h:22 msgid "" "Keybinding to open the \"Show Applications\" view of the Activities Overview." msgstr "" "ಚಟುವಟಿಕೆ ಅವಲೋಕನದ ನೋಟದಲ್ಲಿನ \"ಅನ್ವಯಗಳನ್ನು ತೋರಿಸು\" ಅನ್ನು ತೆರೆಯಬೇಕಿರುವ " "ಕೀಲಿಬೈಂಡಿಂಗ್." #: ../data/org.gnome.shell.gschema.xml.in.in.h:23 msgid "Keybinding to open the overview" msgstr "ಅವಲೋಕನವನ್ನು ತೆರೆಯಬೇಕಿರುವ ಕೀಲಿಬೈಂಡಿಂಗ್" #: ../data/org.gnome.shell.gschema.xml.in.in.h:24 msgid "Keybinding to open the Activities Overview." msgstr "ಚಟುವಟಿಕೆಗಳ ಅವಲೋಕನವನ್ನು ತೆರೆಯಬೇಕಿರುವ ಕೀಲಿಬೈಂಡಿಂಗ್." #: ../data/org.gnome.shell.gschema.xml.in.in.h:25 msgid "Keybinding to toggle the visibility of the message tray" msgstr "ಸಂದೇಶ ಟ್ರೇಯ ಗೋಚರಿಕೆಯನ್ನು ಹೊರಳಿಸಲು ಕೀಬೈಂಡಿಂಗ್" #: ../data/org.gnome.shell.gschema.xml.in.in.h:26 msgid "Keybinding to toggle the visibility of the message tray." msgstr "ಸಂದೇಶ ಟ್ರೇಯ ಗೋಚರಿಕೆಯನ್ನು ಹೊರಳಿಸಲು ಕೀಬೈಂಡಿಂಗ್." #: ../data/org.gnome.shell.gschema.xml.in.in.h:27 msgid "Keybinding to focus the active notification" msgstr "ಸಕ್ರಿಯ ಸೂಚನೆಯತ್ತ ಗಮನ ಹರಿಸಲು ಕೀಲಿಬೈಂಡಿಂಗ್" #: ../data/org.gnome.shell.gschema.xml.in.in.h:28 msgid "Keybinding to focus the active notification." msgstr "ಸಕ್ರಿಯ ಸೂಚನೆಯತ್ತ ಗಮನ ಹರಿಸಲು ಕೀಲಿಬೈಂಡಿಂಗ್." #: ../data/org.gnome.shell.gschema.xml.in.in.h:29 msgid "" "Keybinding that pauses and resumes all running tweens, for debugging purposes" msgstr "" "ಡೀಬಗ್‌ ಉದ್ದೇಶಗಳಿಗಾಗಿ ಚಾಲನೆಯಲ್ಲಿರುವ ಎಲ್ಲಾ ಟ್ವೀನ್‌ಗಳನ್ನು ವಿರಮಿಸುತ್ತದೆ ಮತ್ತು " "ಮರಳಿ " "ಆರಂಭಿಸುತ್ತದೆ" #: ../data/org.gnome.shell.gschema.xml.in.in.h:30 msgid "Which keyboard to use" msgstr "ಯಾವ ಕೀಲಿಮಣೆಯನ್ನು ಬಳಸಬೇಕಿದೆ" #: ../data/org.gnome.shell.gschema.xml.in.in.h:31 msgid "The type of keyboard to use." msgstr "ಬಳಸಬೇಕಿರುವ ಕೀಲಿಮಣೆಯ ಬಗೆ." #: ../data/org.gnome.shell.gschema.xml.in.in.h:32 msgid "Limit switcher to current workspace." msgstr "ಸ್ವಿಚರ್ ಅನ್ನು ಪ್ರಸಕ್ತ ಕಾರ್ಯಸ್ಥಳಕ್ಕೆ ಮಿತಿಗೊಳಿಸು." #: ../data/org.gnome.shell.gschema.xml.in.in.h:33 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "ಟ್ರೂ ಆದಲ್ಲಿ, ಪ್ರಸಕ್ತ ಕಾರ್ಯಸ್ಥಳದಲ್ಲಿ ಕಿಟಕಿಗಳನ್ನು ಹೊಂದಿರುವ ಅನ್ವಯಗಳನ್ನು ಮಾತ್ರ " "ಸ್ವಿಚರ್‌ನಲ್ಲಿ " "ತೋರಿಸಲಾಗುತ್ತದೆ. ಇಲ್ಲದೆ ಹೋದಲ್ಲಿ, ಎಲ್ಲಾ ಅನ್ವಯಗಳನ್ನು ಸೇರಿಸಲಾಗುತ್ತದೆ." #: ../data/org.gnome.shell.gschema.xml.in.in.h:34 msgid "The application icon mode." msgstr "ಅನ್ವಯ ಚಿಹ್ನೆ ಕ್ರಮ." #: ../data/org.gnome.shell.gschema.xml.in.in.h:35 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-" "only' (shows only the application icon) or 'both'." msgstr "" "ಸ್ವಿಚರಿನಲ್ಲಿ ಕಿಟಕಿಗಳನ್ನು ಹೇಗೆ ತೋರಿಸಲಾಗುತ್ತದೆ ಎನ್ನುವುದನ್ನು ಸಂರಚಿಸುತ್ತದೆ. " "ಮಾನ್ಯವಾದ " "ಸಾಧ್ಯತೆಗಳೆಂದರೆ 'ತಂಬ್‌ನೈಲ್-ಮಾತ್ರ' (ಕಿಟಕಿಯ ಒಂದು ತಂಬ್‌ನೈಲ್ ಅನ್ನು ತೋರಿಸುತ್ತದೆ), " "'app-icon-" "ಮಾತ್ರ' (ಅನ್ವಯ ಚಿಹ್ನೆಯನ್ನು ಮಾತ್ರ ತೋರಿಸುತ್ತದೆ) ಅಥವ 'ಎರಡೂ'." #: ../data/org.gnome.shell.gschema.xml.in.in.h:36 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "ಟ್ರೂ ಆದಲ್ಲಿ, ಪ್ರಸಕ್ತ ಕಾರ್ಯಸ್ಥಳದಲ್ಲಿ ಕಿಟಕಿಗಳನ್ನು ಮಾತ್ರ ಸ್ವಿಚರ್‌ನಲ್ಲಿ " "ತೋರಿಸಲಾಗುತ್ತದೆ. ಇಲ್ಲದೆ " "ಹೋದಲ್ಲಿ, ಎಲ್ಲಾ ಕಿಟಕಿಗಳನ್ನು ಸೇರಿಸಲಾಗುತ್ತದೆ." #: ../data/org.gnome.shell.gschema.xml.in.in.h:37 msgid "Attach modal dialog to the parent window" msgstr "ಮೂಲ ಕಿಟಕಿಗೆ ಮೋಡಲ್ ಸಂವಾದವನ್ನು ಸೇರಿಸು" #: ../data/org.gnome.shell.gschema.xml.in.in.h:38 msgid "" "This key overrides the key in org.gnome.mutter when running GNOME Shell." msgstr "" "ಈ ಕೀಲಿಯು GNOME ಶೆಲ್‌ ಅನ್ನು ಚಲಾಯಿಸುವಾಗ org.gnome.mutter ನಲ್ಲಿನ ಕೀಲಿಯನ್ನು " "ಅತಿಕ್ರಮಿಸುತ್ತದೆ." #: ../data/org.gnome.shell.gschema.xml.in.in.h:39 msgid "Enable edge tiling when dropping windows on screen edges" msgstr "ಕಿಟಕಿಗಳನ್ನು ತೆರೆಯ ಅಂಚಿನಲ್ಲಿ ಬೀಳಿಸುವಾಗ ಅಂಚಿನ ಟೈಲಿಂಗ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸು" #: ../data/org.gnome.shell.gschema.xml.in.in.h:40 msgid "Workspaces are managed dynamically" msgstr "ಕಾರ್ಯಸ್ಥಳಗಳನ್ನು ಕ್ರಿಯಾತ್ಮಕವಾಗಿ ನಿರ್ವಹಿಸಲಾಗುತ್ತದೆ" #: ../data/org.gnome.shell.gschema.xml.in.in.h:41 msgid "Workspaces only on primary monitor" msgstr "ಪ್ರಾಥಮಿಕ ತೆರೆಯ ಮೇಲಿರುವ ಕಾರ್ಯಕ್ಷೇತ್ರಗಳು ಮಾತ್ರ" #: ../data/org.gnome.shell.gschema.xml.in.in.h:42 msgid "Delay focus changes in mouse mode until the pointer stops moving" msgstr "" "ತೆರೆಸೂಚಕವು ಚಲಿಸುವುದನ್ನು ನಿಲ್ಲಿಸುವವರೆಗೆ ಮೌಸ್‌ನ ಗಮನದಲ್ಲಿನ ಬದಲಾವಣೆಗಳನ್ನು " "ವಿಳಂಬವಾಗಿಸು" #: ../data/org.gnome.Shell.PortalHelper.desktop.in.h:1 msgid "Captive Portal" msgstr "ಕ್ಯಾಪ್ಟೀವ್ ಪೋರ್ಟಲ್" #: ../js/extensionPrefs/main.js:123 #, javascript-format msgid "There was an error loading the preferences dialog for %s:" msgstr "%s ಗಾಗಿ ಆದ್ಯತೆಗಳ ಸಂವಾದವನ್ನು ಲೋಡ್ ಮಾಡುವಲ್ಲಿ ದೋಷ ಉಂಟಾಗಿದೆ:" #: ../js/extensionPrefs/main.js:155 msgid "GNOME Shell Extensions" msgstr "GNOME ಶೆಲ್ ಎಕ್ಸ‍ಟೆನ್ಶನ್ಸ್" #: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143 #: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:452 #: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399 #: ../js/ui/status/network.js:915 msgid "Cancel" msgstr "ರದ್ದು ಮಾಡು" #: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:217 msgid "Next" msgstr "ಮುಂದಿನ" #: ../js/gdm/authPrompt.js:213 ../js/ui/shellMountOperation.js:403 #: ../js/ui/unlockDialog.js:59 msgid "Unlock" msgstr "ಅನ್‌ಲಾಕ್ ಮಾಡು" #: ../js/gdm/authPrompt.js:215 msgctxt "button" msgid "Sign In" msgstr "ಸೈನ್ ಇನ್" #: ../js/gdm/loginDialog.js:269 msgid "Choose Session" msgstr "ಅಧಿವೇಶನವನ್ನು ಆರಿಸಿ" #: ../js/gdm/loginDialog.js:429 msgid "Not listed?" msgstr "ಪಟ್ಟಿಯಲ್ಲಿಲ್ಲವೆ?" #: ../js/gdm/loginDialog.js:614 #, javascript-format msgid "(e.g., user or %s)" msgstr "(ಉದಾ., ಬಳಕೆದಾರ ಅಥವ %s)" #: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:269 #: ../js/ui/components/networkAgent.js:287 msgid "Username: " msgstr "ಬಳಕೆದಾರ ಹೆಸರು: " #: ../js/gdm/loginDialog.js:922 msgid "Login Window" msgstr "ಪ್ರವೇಶದ ಕಿಟಕಿ" #: ../js/gdm/util.js:323 msgid "Authentication error" msgstr "ದೃಢೀಕರಣ ದೋಷ" #: ../js/gdm/util.js:453 msgid "(or swipe finger)" msgstr "(ಅಥವ ನಿಮ್ಮ ಬೆರಳನ್ನು ಉಜ್ಜಿ)" #: ../js/misc/util.js:115 msgid "Command not found" msgstr "ಆದೇಶವು ಕಂಡು ಬಂದಿಲ್ಲ" #: ../js/misc/util.js:148 msgid "Could not parse command:" msgstr "ಆದೇಶವನ್ನು ಪಾರ್ಸ್ ಮಾಡಲಾಗಿಲ್ಲ:" #: ../js/misc/util.js:156 #, javascript-format msgid "Execution of “%s” failed:" msgstr "“%s” ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ:" #: ../js/portalHelper/main.js:85 msgid "Web Authentication Redirect" msgstr "ಜಾಲ ದೃಢೀಕರಣದ ಮರುನಿರ್ದೇಶನ" #: ../js/ui/appDisplay.js:772 msgid "Frequently used applications will appear here" msgstr "ಪದೆ ಪದೆ ಬಳಸಲಾಗುವ ಅನ್ವಯಗಳು ಇಲ್ಲಿ ಕಾಣಿಸಿಕೊಳ್ಳುತ್ತವೆ" #: ../js/ui/appDisplay.js:883 msgid "Frequent" msgstr "ಪುನರಾವರ್ತನೆ" #: ../js/ui/appDisplay.js:890 msgid "All" msgstr "ಎಲ್ಲಾ" #: ../js/ui/appDisplay.js:1790 msgid "New Window" msgstr "ಹೊಸ ಕಿಟಕಿ" #: ../js/ui/appDisplay.js:1816 ../js/ui/dash.js:285 msgid "Remove from Favorites" msgstr "ಎಲ್ಲಾ ಅಚ್ಚುಮೆಚ್ಚಿನವುಗಳನ್ನು ತೆಗೆದುಹಾಕು" #: ../js/ui/appDisplay.js:1822 msgid "Add to Favorites" msgstr "ಅಚ್ಚುಮೆಚ್ಚಿನವುಗಳಿಗೆ ಸೇರಿಸು" #: ../js/ui/appDisplay.js:1831 msgid "Show Details" msgstr "ವಿವರಗಳನ್ನು ತೋರಿಸು" #: ../js/ui/appFavorites.js:132 #, javascript-format msgid "%s has been added to your favorites." msgstr "%s ಅನ್ನು ನಿಮ್ಮ ಅಚ್ಚುಮೆಚ್ಚಿನವುಗಳನ್ನು ಸೇರಿಸಲಾಗಿದೆ." #: ../js/ui/appFavorites.js:166 #, javascript-format msgid "%s has been removed from your favorites." msgstr "%s ಅನ್ನು ನಿಮ್ಮ ಅಚ್ಚುಮೆಚ್ಚಿನವುಗಳಿಂದ ತೆಗೆದುಹಾಕಲಾಗಿದೆ." #: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:813 #: ../js/ui/status/system.js:337 msgid "Settings" msgstr "ಸಿದ್ಧತೆಗಳು" #: ../js/ui/backgroundMenu.js:21 msgid "Change Background…" msgstr "ಹಿನ್ನೆಲೆಯನ್ನು ಬದಲಾಯಿಸು…" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. */ #: ../js/ui/calendar.js:67 msgctxt "event list time" msgid "All Day" msgstr "ಎಲ್ಲಾ ದಿನ" #. Translators: Shown in calendar event list, if 24h format, #. \u2236 is a ratio character, similar to : */ #: ../js/ui/calendar.js:73 msgctxt "event list time" msgid "%H∶%M" msgstr "%H∶%M" #. Translators: Shown in calendar event list, if 12h format, #. \u2236 is a ratio character, similar to : and \u2009 is #. a thin space */ #: ../js/ui/calendar.js:82 msgctxt "event list time" msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. */ #: ../js/ui/calendar.js:113 msgctxt "grid sunday" msgid "S" msgstr "ಭಾ" #. Translators: Calendar grid abbreviation for Monday */ #: ../js/ui/calendar.js:115 msgctxt "grid monday" msgid "M" msgstr "ಸೋ" #. Translators: Calendar grid abbreviation for Tuesday */ #: ../js/ui/calendar.js:117 msgctxt "grid tuesday" msgid "T" msgstr "ಮಂ" #. Translators: Calendar grid abbreviation for Wednesday */ #: ../js/ui/calendar.js:119 msgctxt "grid wednesday" msgid "W" msgstr "ಬು" #. Translators: Calendar grid abbreviation for Thursday */ #: ../js/ui/calendar.js:121 msgctxt "grid thursday" msgid "T" msgstr "ಗು" #. Translators: Calendar grid abbreviation for Friday */ #: ../js/ui/calendar.js:123 msgctxt "grid friday" msgid "F" msgstr "ಶು" #. Translators: Calendar grid abbreviation for Saturday */ #: ../js/ui/calendar.js:125 msgctxt "grid saturday" msgid "S" msgstr "ಶ" #. Translators: Event list abbreviation for Sunday. #. * #. * NOTE: These list abbreviations are normally not shown together #. * so they need to be unique (e.g. Tuesday and Thursday cannot #. * both be 'T'). #. */ #: ../js/ui/calendar.js:138 msgctxt "list sunday" msgid "Su" msgstr "ಭಾ" #. Translators: Event list abbreviation for Monday */ #: ../js/ui/calendar.js:140 msgctxt "list monday" msgid "M" msgstr "ಸೋ" #. Translators: Event list abbreviation for Tuesday */ #: ../js/ui/calendar.js:142 msgctxt "list tuesday" msgid "T" msgstr "ಮಂ" #. Translators: Event list abbreviation for Wednesday */ #: ../js/ui/calendar.js:144 msgctxt "list wednesday" msgid "W" msgstr "ಬು" #. Translators: Event list abbreviation for Thursday */ #: ../js/ui/calendar.js:146 msgctxt "list thursday" msgid "Th" msgstr "ಗು" #. Translators: Event list abbreviation for Friday */ #: ../js/ui/calendar.js:148 msgctxt "list friday" msgid "F" msgstr "ಶು" #. Translators: Event list abbreviation for Saturday */ #: ../js/ui/calendar.js:150 msgctxt "list saturday" msgid "S" msgstr "ಶ" #: ../js/ui/calendar.js:453 msgid "Previous month" msgstr "ಹಿಂದಿನ ತಿಂಗಳು" #: ../js/ui/calendar.js:463 msgid "Next month" msgstr "ಮುಂದಿನ ತಿಂಗಳು" #. Translators: Text to show if there are no events */ #: ../js/ui/calendar.js:781 msgid "Nothing Scheduled" msgstr "ಯಾವುದೂ ಅನುಸೂಚಿತಗೊಂಡಿಲ್ಲ" #. Translators: Shown on calendar heading when selected day occurs on current year */ #: ../js/ui/calendar.js:799 msgctxt "calendar heading" msgid "%A, %B %d" msgstr "%A, %B %d" #. Translators: Shown on calendar heading when selected day occurs on different year */ #: ../js/ui/calendar.js:802 msgctxt "calendar heading" msgid "%A, %B %d, %Y" msgstr "%A, %B %d, %Y" #: ../js/ui/calendar.js:813 msgid "Today" msgstr "ಇಂದು" #: ../js/ui/calendar.js:817 msgid "Tomorrow" msgstr "ನಾಳೆ" #: ../js/ui/calendar.js:828 msgid "This week" msgstr "ಈ ವಾರ" #: ../js/ui/calendar.js:836 msgid "Next week" msgstr "ಮುಂದಿನ ವಾರ" #: ../js/ui/components/automountManager.js:91 msgid "External drive connected" msgstr "ಬಾಹ್ಯ ಡ್ರೈವ್‌ನಿಂದ ಸಂಪರ್ಕ ಕಡಿದಿದೆ" #: ../js/ui/components/automountManager.js:102 msgid "External drive disconnected" msgstr "ಬಾಹ್ಯ ಡ್ರೈವ್‌ನಿಂದ ಸಂಪರ್ಕ ಕಡಿದಿದೆ" #: ../js/ui/components/autorunManager.js:296 msgid "Removable Devices" msgstr "ತೆಗೆದುಹಾಕಬಹುದಾದ ಸಾಧನಗಳು" #: ../js/ui/components/autorunManager.js:596 #, javascript-format msgid "Open with %s" msgstr "%s ನೊಂದಿಗೆ ತೆರೆ" #: ../js/ui/components/autorunManager.js:622 msgid "Eject" msgstr "ಹೊರತಳ್ಳು" #: ../js/ui/components/keyring.js:94 ../js/ui/components/polkitAgent.js:285 msgid "Password:" msgstr "ಗುಪ್ತಪದ:" #: ../js/ui/components/keyring.js:120 msgid "Type again:" msgstr "ಇನ್ನೊಮ್ಮೆ ನಮೂದಿಸಿ:" #: ../js/ui/components/networkAgent.js:138 ../js/ui/status/network.js:277 #: ../js/ui/status/network.js:359 ../js/ui/status/network.js:918 msgid "Connect" msgstr "ಸಂಪರ್ಕ ಜೋಡಿಸು" #: ../js/ui/components/networkAgent.js:231 #: ../js/ui/components/networkAgent.js:243 #: ../js/ui/components/networkAgent.js:271 #: ../js/ui/components/networkAgent.js:291 #: ../js/ui/components/networkAgent.js:301 msgid "Password: " msgstr "ಗುಪ್ತಪದ: " #: ../js/ui/components/networkAgent.js:236 msgid "Key: " msgstr "ಕೀಲಿ: " #: ../js/ui/components/networkAgent.js:275 msgid "Identity: " msgstr "ಗುರುತು: " #: ../js/ui/components/networkAgent.js:277 msgid "Private key password: " msgstr "ಖಾಸಗಿ ಕೀಲಿ ಗುಪ್ತಪದ: " #: ../js/ui/components/networkAgent.js:289 msgid "Service: " msgstr "ಸೇವೆ: " #: ../js/ui/components/networkAgent.js:318 msgid "Authentication required by wireless network" msgstr "ವೈರ್ಲೆಸ್‌ ಜಾಲಬಂಧಕ್ಕಾಗಿ ದೃಢೀಕರಣದ ಅಗತ್ಯವಿದೆ" #: ../js/ui/components/networkAgent.js:319 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network " "“%s”." msgstr "" "ವೈರ್ಲೆಸ್‌ ಜಾಲಬಂಧ “%s” ಅನ್ನು ನಿಲುಕಿಸಿಕೊಳ್ಳಲು ಗುಪ್ತಪದಗಳು ಅಥವ ಗೂಢಲಿಪೀಕರಣ ಕೀಲಿಗಳ " "ಅಗತ್ಯವಿದೆ." #: ../js/ui/components/networkAgent.js:323 msgid "Wired 802.1X authentication" msgstr "ವೈರ್ಡ್ 802.1X ದೃಢೀಕರಣ" #: ../js/ui/components/networkAgent.js:325 msgid "Network name: " msgstr "ಜಾಲಬಂಧದ ಹೆಸರು: " #: ../js/ui/components/networkAgent.js:330 msgid "DSL authentication" msgstr "DSL ದೃಢೀಕರಣ" #: ../js/ui/components/networkAgent.js:337 msgid "PIN code required" msgstr "PIN ಕೋಡ್ ಅಗತ್ಯವಿದೆ" #: ../js/ui/components/networkAgent.js:338 msgid "PIN code is needed for the mobile broadband device" msgstr "ಮೊಬೈಲ್ ಬ್ರಾಡ್‌ಬ್ಯಾಂಡ್‌ ಸಾಧನಕ್ಕಾಗಿ PIN ಕೋಡ್‌ ಅಗತ್ಯವಿದೆ" #: ../js/ui/components/networkAgent.js:339 msgid "PIN: " msgstr "PIN: " #: ../js/ui/components/networkAgent.js:345 msgid "Mobile broadband network password" msgstr "ಮೊಬೈಲ್ ಬ್ರಾಡ್‌ಬ್ಯಾಂಡ್ ಜಾಲಬಂಧ ಗುಪ್ತಪದ" #: ../js/ui/components/networkAgent.js:346 #, javascript-format msgid "A password is required to connect to “%s”." msgstr "“%s” ನೊಂದಿಗೆ ಸಂಪರ್ಕಸಾಧಿಸಲು ಗುಪ್ತಪದದ ಅಗತ್ಯವಿದೆ." #: ../js/ui/components/polkitAgent.js:54 msgid "Authentication Required" msgstr "ದೃಢೀಕರಣದ ಅಗತ್ಯವಿದೆ" #: ../js/ui/components/polkitAgent.js:96 msgid "Administrator" msgstr "ವ್ಯವಸ್ಥಾಪಕ" #: ../js/ui/components/polkitAgent.js:175 msgid "Authenticate" msgstr "ದೃಢೀಕರಿಸು" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. */ #: ../js/ui/components/polkitAgent.js:271 ../js/ui/shellMountOperation.js:383 msgid "Sorry, that didn't work. Please try again." msgstr "ಕ್ಷಮಿಸು, ಅದು ಕೆಲಸ ಮಾಡಲಿಲ್ಲ. ದಯವಿಟ್ಟು ಇನ್ನೊಮ್ಮೆ ಪ್ರಯತ್ನಿಸಿ." #: ../js/ui/components/telepathyClient.js:240 msgid "Invitation" msgstr "ಆಹ್ವಾನ" #: ../js/ui/components/telepathyClient.js:300 msgid "Call" msgstr "ಕರೆ" #: ../js/ui/components/telepathyClient.js:316 msgid "File Transfer" msgstr "ಕಡತದ ವರ್ಗಾವಣೆ" #: ../js/ui/components/telepathyClient.js:420 msgid "Chat" msgstr "ಹರಟೆ" #: ../js/ui/components/telepathyClient.js:483 msgid "Unmute" msgstr "ಮಾತುಬರಿಸು" #: ../js/ui/components/telepathyClient.js:483 msgid "Mute" msgstr "ಮೂಕಗೊಳಿಸು" #. Translators: Time in 24h format */ #: ../js/ui/components/telepathyClient.js:953 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" */ #: ../js/ui/components/telepathyClient.js:960 msgid "Yesterday, %H∶%M" msgstr "ನಿನ್ನೆ, %H∶%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" */ #: ../js/ui/components/telepathyClient.js:967 msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" */ #: ../js/ui/components/telepathyClient.js:974 msgid "%B %d, %H∶%M" msgstr "%B %d, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" */ #: ../js/ui/components/telepathyClient.js:980 msgid "%B %d %Y, %H∶%M" msgstr "%B %d %Y, %H∶%M" #. Translators: Time in 24h format */ #: ../js/ui/components/telepathyClient.js:986 msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" */ #: ../js/ui/components/telepathyClient.js:993 msgid "Yesterday, %l∶%M %p" msgstr "ನಿನ್ನೆ, %l∶%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" */ #: ../js/ui/components/telepathyClient.js:1000 msgid "%A, %l∶%M %p" msgstr "%A, %l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" */ #: ../js/ui/components/telepathyClient.js:1007 msgid "%B %d, %l∶%M %p" msgstr "%B %d, %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm"*/ #: ../js/ui/components/telepathyClient.js:1013 msgid "%B %d %Y, %l∶%M %p" msgstr "%B %d %Y, %l∶%M %p" #. Translators: this is the other person changing their old IM name to their new #. IM name. */ #: ../js/ui/components/telepathyClient.js:1045 #, javascript-format msgid "%s is now known as %s" msgstr "%s ಈಗ %s ಆಗಿದ್ದಾರೆ" #. translators: argument is a room name like #. * room@jabber.org for example. */ #: ../js/ui/components/telepathyClient.js:1149 #, javascript-format msgid "Invitation to %s" msgstr "%s ಗಾಗಿನ ಆಹ್ವಾನ" #. translators: first argument is the name of a contact and the second #. * one the name of a room. "Alice is inviting you to join room@jabber.org #. * for example. */ #: ../js/ui/components/telepathyClient.js:1157 #, javascript-format msgid "%s is inviting you to join %s" msgstr "%s ನಿಮ್ಮನ್ನು %s ಗೆ ಸೇರುವಂತೆ ಆಹ್ವಾನಿಸುತ್ತಿದ್ದಾರೆ" #: ../js/ui/components/telepathyClient.js:1159 #: ../js/ui/components/telepathyClient.js:1194 #: ../js/ui/components/telepathyClient.js:1228 #: ../js/ui/components/telepathyClient.js:1286 msgid "Decline" msgstr "ತಿರಸ್ಕರಿಸು" #: ../js/ui/components/telepathyClient.js:1165 #: ../js/ui/components/telepathyClient.js:1234 #: ../js/ui/components/telepathyClient.js:1291 msgid "Accept" msgstr "ಅಂಗೀಕರಿಸು" #. translators: argument is a contact name like Alice for example. */ #: ../js/ui/components/telepathyClient.js:1184 #, javascript-format msgid "Video call from %s" msgstr "%s ಇಂದ ವೀಡಿಯೊ ಕರೆ ಬಂದಿದೆ" #. translators: argument is a contact name like Alice for example. */ #: ../js/ui/components/telepathyClient.js:1187 #, javascript-format msgid "Call from %s" msgstr "%s ಇಂದ ಕರೆ ಬಂದಿದೆ" #. translators: this is a button label (verb), not a noun */ #: ../js/ui/components/telepathyClient.js:1201 msgid "Answer" msgstr "ಉತ್ತರ" #. To translators: The first parameter is #. * the contact's alias and the second one is the #. * file name. The string will be something #. * like: "Alice is sending you test.ogg" #. */ #: ../js/ui/components/telepathyClient.js:1222 #, javascript-format msgid "%s is sending you %s" msgstr "%s ರವರು ನಿಮಗೆ %s ಅನ್ನು ಕಳುಹಿಸುತ್ತಿದ್ದಾರೆ" #. To translators: The parameter is the contact's alias */ #: ../js/ui/components/telepathyClient.js:1251 #, javascript-format msgid "%s would like permission to see when you are online" msgstr "" "ನೀವು ಯಾವಾಗ ಆನ್‌ಲೈನ್‌ನಲ್ಲಿ ಇರುತ್ತೀರಿ ಎಂದು ತಿಳಿಯಲು %s ರವರು ನಿಮ್ಮ ಅನುಮತಿಯನ್ನು " "ಕೋರಿದ್ದಾರೆ" #: ../js/ui/components/telepathyClient.js:1337 msgid "Network error" msgstr "ಜಾಲಬಂಧದ ದೋಷ" #: ../js/ui/components/telepathyClient.js:1339 msgid "Authentication failed" msgstr "ದೃಢೀಕರಣವು ವಿಫಲಗೊಂಡಿದೆ" #: ../js/ui/components/telepathyClient.js:1341 msgid "Encryption error" msgstr "ಗೂಢಲಿಪೀಕರಣ ದೋಷ" #: ../js/ui/components/telepathyClient.js:1343 msgid "Certificate not provided" msgstr "ಪ್ರಮಾಣಪತ್ರವನ್ನು ಒದಗಿಸಲಾಗಿಲ್ಲ" #: ../js/ui/components/telepathyClient.js:1345 msgid "Certificate untrusted" msgstr "ಪ್ರಮಾಣಪತ್ರವನ್ನು ನಂಬಲಾಗಿಲ್ಲ" #: ../js/ui/components/telepathyClient.js:1347 msgid "Certificate expired" msgstr "ಪ್ರಮಾಣಪತ್ರದ ಕಾಲಾವಧಿ ತೀರಿದೆ" #: ../js/ui/components/telepathyClient.js:1349 msgid "Certificate not activated" msgstr "ಪ್ರಮಾಣಪತ್ರವು ಸಕ್ರಿಯಗೊಂಡಿಲ್ಲ" #: ../js/ui/components/telepathyClient.js:1351 msgid "Certificate hostname mismatch" msgstr "ಪ್ರಮಾಣಪತ್ರದ ಅತಿಥೇಯದ ಹೆಸರು ತಾಳೆಯಾಗುತ್ತಿಲ್ಲ" #: ../js/ui/components/telepathyClient.js:1353 msgid "Certificate fingerprint mismatch" msgstr "ಪ್ರಮಾಣಪತ್ರದ ಫಿಂಗರ್‌ಪ್ರಿಂಟ್ ತಾಳೆಯಾಗುತ್ತಿಲ್ಲ" #: ../js/ui/components/telepathyClient.js:1355 msgid "Certificate self-signed" msgstr "ಪ್ರಮಾಣಪತ್ರವು ಸ್ವತಃ ಸೈನ್ ಮಾಡಲ್ಪಟ್ಟಿದೆ" #: ../js/ui/components/telepathyClient.js:1357 msgid "Status is set to offline" msgstr "ಸ್ಥಿತಿಯನ್ನು ಆಫ್‌ಲೈನ್‌ ಎಂದು ಸೂಚಿಸಿದ್ದಾರೆ." #: ../js/ui/components/telepathyClient.js:1359 msgid "Encryption is not available" msgstr "ಗೂಢಲಿಪೀಕರಣ ಲಭ್ಯವಿಲ್ಲ" #: ../js/ui/components/telepathyClient.js:1361 msgid "Certificate is invalid" msgstr "ಪ್ರಮಾಣಪತ್ರವು ಅಮಾನ್ಯವಾಗಿದೆ" #: ../js/ui/components/telepathyClient.js:1363 msgid "Connection has been refused" msgstr "ಸಂಪರ್ಕವನ್ನು ನಿರಾಕರಿಸಲಾಗಿದೆ" #: ../js/ui/components/telepathyClient.js:1365 msgid "Connection can't be established" msgstr "ಸಂಪರ್ಕವನ್ನು ಸಾಧಿಸಲಾಗಿಲ್ಲ" #: ../js/ui/components/telepathyClient.js:1367 msgid "Connection has been lost" msgstr "ಸಂಪರ್ಕವು ಕಡಿದು ಹೋಗಿದೆ" #: ../js/ui/components/telepathyClient.js:1369 msgid "This account is already connected to the server" msgstr "ಈ ಖಾತೆಯು ಈಗಾಗಲೆ ಪೂರೈಕೆಗಣಕದೊಂದಿಗೆ ಸಂಪರ್ಕ ಜೋಡಿಸಲಾಗಿದೆ" #: ../js/ui/components/telepathyClient.js:1371 msgid "" "Connection has been replaced by a new connection using the same resource" msgstr "" "ಒಂದು ಹೊಸ ಸಂಪರ್ಕದಿಂದ ಈ ಸಂಪರ್ಕವನ್ನು ಇದೇ ಸಂಪನ್ಮೂಲವನ್ನು ಬಳಸಿಕೊಂಡು ಬದಲಾಯಿಸಲಾಗಿದೆ" #: ../js/ui/components/telepathyClient.js:1373 msgid "The account already exists on the server" msgstr "ಖಾತೆಯು ಈಗಾಗಲೆ ಪೂರೈಕೆಗಣಕದಲ್ಲಿ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ" #: ../js/ui/components/telepathyClient.js:1375 msgid "Server is currently too busy to handle the connection" msgstr "ಪೂರೈಕೆಗಣಕಕ್ಕೆ ಬಿಡುವಿಲ್ಲದ ಕಾರಣ ಸಂಪರ್ಕವನ್ನು ನಿಭಾಯಿಸಲಾಗುತ್ತಿಲ್ಲ" #: ../js/ui/components/telepathyClient.js:1377 msgid "Certificate has been revoked" msgstr "ಪ್ರಮಾಣಪತ್ರವನ್ನು ಹಿಂದಕ್ಕೆ ತೆಗೆದುಕೊಳ್ಳಲಾಗಿದೆ" #: ../js/ui/components/telepathyClient.js:1379 msgid "" "Certificate uses an insecure cipher algorithm or is cryptographically weak" msgstr "" "ಪ್ರಮಾಣಪತ್ರವು ಅಸುರಕ್ಷಿತವಾದ ಸಿಫರ್ ಅಲ್ಗಾರಿತಮ್ ಅನ್ನು ಬಳಸುತ್ತದೆ ಅಥವ ದುರ್ಬಲ " "ಗೂಢಲಿಪೀಕರಣವನ್ನು " "ಹೊಂದಿದೆ" #: ../js/ui/components/telepathyClient.js:1381 msgid "" "The length of the server certificate, or the depth of the server certificate " "chain, exceed the limits imposed by the cryptography library" msgstr "" "ಪೂರೈಕೆಗಣಕ ಪ್ರಮಾಣಪತ್ರದ ಉದ್ದ ಅಥವ ಪೂರೈಕೆಗಣಕ ಪ್ರಮಾಣಪತ್ರ ಸರಣಿಯ ಆಳವು ಕ್ರಿಪ್ಟೋಗ್ರಫಿ " "ಲೈಬ್ರರಿಯಿಂದ ನಿಗದಿ ಪಡಿಸಲಾದ ಮಿತಿಗಳನ್ನು ಮೀರಿದೆ." #: ../js/ui/components/telepathyClient.js:1383 msgid "Internal error" msgstr "ಆಂತರಿಕ ತಪ್ಪು" #. translators: argument is the account name, like #. * name@jabber.org for example. */ #: ../js/ui/components/telepathyClient.js:1393 #, javascript-format msgid "Unable to connect to %s" msgstr "%s ನೊಂದಿಗೆ ಸಂಪರ್ಕ ಸಾಧಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ" #: ../js/ui/components/telepathyClient.js:1398 msgid "View account" msgstr "ಖಾತೆಯನ್ನು ನೋಡು" #: ../js/ui/components/telepathyClient.js:1435 msgid "Unknown reason" msgstr "ಅಜ್ಞಾತ ಕಾರಣ" #: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:154 msgid "Windows" msgstr "ವಿಂಡೋಸ್" #: ../js/ui/dash.js:249 ../js/ui/dash.js:287 msgid "Show Applications" msgstr "ಅನ್ವಯಗಳನ್ನು ತೋರಿಸು" #: ../js/ui/dash.js:445 msgid "Dash" msgstr "ಡ್ಯಾಶ್" #: ../js/ui/dateMenu.js:96 msgid "Open Calendar" msgstr "ಕ್ಯಾಲೆಂಡರನ್ನು ತೆರೆ" #: ../js/ui/dateMenu.js:100 msgid "Open Clocks" msgstr "ಗಡಿಯಾರವನ್ನು ತೆರೆ" #: ../js/ui/dateMenu.js:107 msgid "Date & Time Settings" msgstr "ದಿನಾಂಕ ಹಾಗು ಸಮಯದ ಸಿದ್ಧತೆಗಳು" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM"). #. */ #: ../js/ui/dateMenu.js:204 msgid "%A %B %e, %Y" msgstr "%A %B %e, %Y" #: ../js/ui/endSessionDialog.js:64 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "%s ಇಂದ ನಿರ್ಗಮಿಸು" #: ../js/ui/endSessionDialog.js:65 msgctxt "title" msgid "Log Out" msgstr "ನಿರ್ಗಮಿಸು" #: ../js/ui/endSessionDialog.js:67 #, javascript-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "%s ರವರು %d ಸೆಕೆಂಡಿನಲ್ಲಿ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ನಿರ್ಗಮಿಸುತ್ತಾರೆ." msgstr[1] "%s ರವರು %d ಸೆಕೆಂಡುಗಳಲ್ಲಿ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ನಿರ್ಗಮಿಸಲ್ಪಡುತ್ತಾರೆ." #: ../js/ui/endSessionDialog.js:72 #, javascript-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "ನೀವು %d ಸೆಕೆಂಡಿನಲ್ಲಿ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ನಿರ್ಗಮಿಸಲ್ಪಡುತ್ತೀರಿ." msgstr[1] "ನೀವು %d ಸೆಕೆಂಡುಗಳಲ್ಲಿ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ನಿರ್ಗಮಿಸಲ್ಪಡುತ್ತೀರಿ." #: ../js/ui/endSessionDialog.js:78 msgctxt "button" msgid "Log Out" msgstr "ನಿರ್ಗಮಿಸು" #: ../js/ui/endSessionDialog.js:84 msgctxt "title" msgid "Power Off" msgstr "ಸ್ಥಗಿತಗೊಳಿಸು" #: ../js/ui/endSessionDialog.js:85 msgctxt "title" msgid "Install Updates & Power Off" msgstr "ಅಪ್‌ಡೇಟ್‌ಗಳನ್ನು ಅನುಸ್ಥಾಪಿಸುತ್ತದೆ ಮತ್ತು ಮರಳಿಸ್ಥಾಪಿಸುತ್ತದೆ" #: ../js/ui/endSessionDialog.js:87 #, javascript-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "ವ್ಯವಸ್ಥೆಯು %d ಸೆಕೆಂಡಿನಲ್ಲಿ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸ್ಥಗಿತಗೊಳ್ಳುತ್ತದೆ." msgstr[1] "ವ್ಯವಸ್ಥೆಯು %d ಸೆಕೆಂಡುಗಳಲ್ಲಿ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸ್ಥಗಿತಗೊಳ್ಳುತ್ತದೆ." #: ../js/ui/endSessionDialog.js:91 msgctxt "checkbox" msgid "Install pending software updates" msgstr "ಬಾಕಿ ಇರುವ ತಂತ್ರಾಂಶ ಅಪ್‌ಡೇಟ್‌ಗಳನ್ನು ಅನುಸ್ಥಾಪಿಸು" #: ../js/ui/endSessionDialog.js:94 ../js/ui/endSessionDialog.js:111 msgctxt "button" msgid "Restart" msgstr "ಮರಳಿ ಆರಂಭಿಸು" #: ../js/ui/endSessionDialog.js:96 msgctxt "button" msgid "Power Off" msgstr "ಸ್ಥಗಿತಗೊಳಿಸು" #: ../js/ui/endSessionDialog.js:103 msgctxt "title" msgid "Restart" msgstr "ಮರಳಿ ಆರಂಭಿಸು" #: ../js/ui/endSessionDialog.js:105 #, javascript-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "ವ್ಯವಸ್ಥೆಯು %d ಸೆಕೆಂಡಿನಲ್ಲಿ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಮರಳಿ ಆರಂಭಗೊಳ್ಳುತ್ತದೆ." msgstr[1] "ವ್ಯವಸ್ಥೆಯು %d ಸೆಕೆಂಡುಗಳಲ್ಲಿ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಮರಳಿ ಆರಂಭಗೊಳ್ಳುತ್ತದೆ." #: ../js/ui/endSessionDialog.js:119 msgctxt "title" msgid "Restart & Install Updates" msgstr "ಮರಳಿ ಆರಂಭಿಸು ಮತ್ತು ಅಪ್‌ಡೇಟ್‌ಗಳನ್ನು ಅನುಸ್ಥಾಪಿಸು" #: ../js/ui/endSessionDialog.js:121 #, javascript-format msgid "The system will automatically restart and install updates in %d second." msgid_plural "" "The system will automatically restart and install updates in %d seconds." msgstr[0] "" "%d ಸೆಕೆಂಡಿನಲ್ಲಿ ವ್ಯವಸ್ಥೆಯು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಮರಳಿ ಆರಂಭಗೊಳ್ಳುತ್ತದೆ ಮತ್ತು " "ಅಪ್‌ಡೇಟ್‌ಗಳು " "ಅನುಸ್ಥಾಪನೆಗೊಳ್ಳುತ್ತದೆ." msgstr[1] "" "%d ಸೆಕೆಂಡುಗಳಲ್ಲಿ ವ್ಯವಸ್ಥೆಯು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಮರಳಿ ಆರಂಭಗೊಳ್ಳುತ್ತದೆ ಮತ್ತು " "ಅಪ್‌ಡೇಟ್‌ಗಳು " "ಅನುಸ್ಥಾಪನೆಗೊಳ್ಳುತ್ತವೆ." #: ../js/ui/endSessionDialog.js:127 msgctxt "button" msgid "Restart & Install" msgstr "ಮರಳಿ ಆರಂಭಿಸು ಮತ್ತು ಅನುಸ್ಥಾಪಿಸು" #: ../js/ui/endSessionDialog.js:128 msgctxt "button" msgid "Install & Power Off" msgstr "ಅನುಸ್ಥಾಪಿಸು ಮತ್ತು ಆಫ್ ಮಾಡು" #: ../js/ui/endSessionDialog.js:129 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "ಅಪ್‌ಡೇಟ್‌ಗಳನ್ನು ಅನುಸ್ಥಾಪಿಸಿದ ನಂತರ ಪವರ್ ಆಫ್ ಮಾಡು" #: ../js/ui/endSessionDialog.js:338 msgid "Running on battery power: please plug in before installing updates." msgstr "" "ಬ್ಯಾಟರಿಯ ವಿದ್ಯುಚ್ಛಕ್ತಿಯಲ್ಲಿ ಕೆಲಸ ಮಾಡುತ್ತಿದೆ: ಅಪ್‌ಡೇಟ್‌ಗಳನ್ನು ಅನುಸ್ಥಾಪಿಸುವ " "ಮೊದಲು ಪ್ಲಗ್ ಇನ್ " "ಮಾಡು." #: ../js/ui/endSessionDialog.js:355 msgid "Some applications are busy or have unsaved work." msgstr "" "ಕೆಲವು ಅನ್ವಯಗಳು ಕಾರ್ಯನಿರತವಾಗಿರುತ್ತವೆ ಅಥವ ಉಳಿಸದೆ ಇರುವ ಕೆಲಸವನ್ನು ಹೊಂದಿರಬಹುದು." #: ../js/ui/endSessionDialog.js:362 msgid "Other users are logged in." msgstr "ಇನ್ನೊಬ್ಬ ಬಳಕೆದಾರರು ಒಳಗೆ ಪ್ರವೇಶಿಸಿದ್ದಾರೆ." #. Translators: Remote here refers to a remote session, like a ssh login */ #: ../js/ui/endSessionDialog.js:640 #, javascript-format msgid "%s (remote)" msgstr "%s (ದೂರದ)" #. Translators: Console here refers to a tty like a VT console */ #: ../js/ui/endSessionDialog.js:643 #, javascript-format msgid "%s (console)" msgstr "%s (ಕನ್ಸೋಲ್)" #: ../js/ui/extensionDownloader.js:199 msgid "Install" msgstr "ಅನುಸ್ಥಾಪಿಸು" #: ../js/ui/extensionDownloader.js:204 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "“%s” ಅನ್ನು extensions.gnome.org ಇಂದ ಡೌನ್‌ಲೋಡ್ ಮಾಡಿ ಅನುಸ್ಥಾಪಿಸಬೇಕೆ?" #: ../js/ui/keyboard.js:692 ../js/ui/status/keyboard.js:523 msgid "Keyboard" msgstr "ಕೀಲಿಮಣೆ" #: ../js/ui/lookingGlass.js:643 msgid "No extensions installed" msgstr "ಯಾವುದು ವಿಸ್ತರಣೆಗಳನ್ನು ಅನುಸ್ಥಾಪಿಸಲಾಗಿಲ್ಲ" #. Translators: argument is an extension UUID. */ #: ../js/ui/lookingGlass.js:697 #, javascript-format msgid "%s has not emitted any errors." msgstr "%s ಯಾವುದೆ ದೋಷಗಳನ್ನು ತೋರಿಸಿಲ್ಲ." #: ../js/ui/lookingGlass.js:703 msgid "Hide Errors" msgstr "ದೋಷಗಳನ್ನು ಅಡಗಿಸು" #: ../js/ui/lookingGlass.js:707 ../js/ui/lookingGlass.js:767 msgid "Show Errors" msgstr "ದೋಷಗಳನ್ನು ತೋರಿಸು" #: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:71 #: ../js/ui/status/location.js:176 msgid "Enabled" msgstr "ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ" #. Translators: this is for a network device that cannot be activated #. because it's disabled by rfkill (airplane mode) */ #. translators: #. * The device has been disabled #: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:179 #: ../js/ui/status/network.js:592 ../src/gvc/gvc-mixer-control.c:1830 msgid "Disabled" msgstr "ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ" #: ../js/ui/lookingGlass.js:721 msgid "Error" msgstr "ದೋಷ" #: ../js/ui/lookingGlass.js:723 msgid "Out of date" msgstr "ಹಳೆಯದಾಗಿದೆ" #: ../js/ui/lookingGlass.js:725 msgid "Downloading" msgstr "ಇಳಿಸಿಕೊಳ್ಳಲಾಗುತ್ತಿದೆ" #: ../js/ui/lookingGlass.js:749 msgid "View Source" msgstr "ಆಕರವನ್ನು ನೋಡಿ" #: ../js/ui/lookingGlass.js:758 msgid "Web Page" msgstr "ಜಾಲ ಪುಟ" #: ../js/ui/messageTray.js:1327 msgid "Open" msgstr "ತೆರೆ" #: ../js/ui/messageTray.js:1334 msgid "Remove" msgstr "ತೆಗೆದು ಹಾಕು" #: ../js/ui/messageTray.js:1631 msgid "Notifications" msgstr "ಸೂಚನೆಗಳು" #: ../js/ui/messageTray.js:1638 msgid "Clear Messages" msgstr "ಸಂದೇಶಗಳನ್ನು ಅಳಿಸು" #: ../js/ui/messageTray.js:1657 msgid "Notification Settings" msgstr "ಸೂಚನೆಯ ಸಿದ್ಧತೆಗಳು" #: ../js/ui/messageTray.js:1710 msgid "Tray Menu" msgstr "ಟ್ರೇ ಮೆನು" #: ../js/ui/messageTray.js:1934 msgid "No Messages" msgstr "ಯಾವುದೆ ಸಂದೇಶವಿಲ್ಲ" #: ../js/ui/messageTray.js:1979 msgid "Message Tray" msgstr "ಸಂದೇಶ ಟ್ರೇ" #: ../js/ui/messageTray.js:2992 msgid "System Information" msgstr "ವ್ಯವಸ್ಥೆಯ ಮಾಹಿತಿ" #: ../js/ui/notificationDaemon.js:513 ../src/shell-app.c:425 msgctxt "program" msgid "Unknown" msgstr "ಗೊತ್ತಿಲ್ಲದ" #: ../js/ui/overviewControls.js:482 ../js/ui/screenShield.js:151 #, javascript-format msgid "%d new message" msgid_plural "%d new messages" msgstr[0] "%d ಹೊಸ ಸಂದೇಶ" msgstr[1] "%d ಹೊಸ ಸಂದೇಶಗಳು" #: ../js/ui/overview.js:84 msgid "Undo" msgstr "ರದ್ದುಗೊಳಿಸು" #: ../js/ui/overview.js:124 msgid "Overview" msgstr "ಅವಲೋಕನ" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. */ #: ../js/ui/overview.js:246 msgid "Type to search…" msgstr "ಹುಡುಕಲು ನಮೂದಿಸು…" #: ../js/ui/panel.js:515 msgid "Quit" msgstr "ನಿರ್ಗಮಿಸು" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". */ #: ../js/ui/panel.js:567 msgid "Activities" msgstr "ಚಟುವಟಿಕೆಗಳು" #: ../js/ui/panel.js:918 msgid "Top Bar" msgstr "ಮೇಲಿನ ಪಟ್ಟಿ" #: ../js/ui/popupMenu.js:269 msgid "toggle-switch-us" msgstr "toggle-switch-us" #: ../js/ui/runDialog.js:70 msgid "Enter a Command" msgstr "ಒಂದು ಆದೇಶವನ್ನು ನಮೂದಿಸಿ" #: ../js/ui/runDialog.js:110 ../js/ui/windowMenu.js:120 msgid "Close" msgstr "ಮುಚ್ಚು" #: ../js/ui/runDialog.js:277 msgid "Restarting…" msgstr "ಮರಳಿ ಆರಂಭಿಸಲಾಗುತ್ತಿದೆ…" #. Translators: This is a time format for a date in #. long format */ #: ../js/ui/screenShield.js:88 msgid "%A, %B %d" msgstr "%A, %B %d" #: ../js/ui/screenShield.js:153 #, javascript-format msgid "%d new notification" msgid_plural "%d new notifications" msgstr[0] "%d ಹೊಸ ಸೂಚನೆ" msgstr[1] "%d ಹೊಸ ಸೂಚನೆಗಳು" #: ../js/ui/screenShield.js:472 ../js/ui/status/system.js:345 msgid "Lock" msgstr "ಲಾಕ್ ಮಾಡು" #: ../js/ui/screenShield.js:706 msgid "GNOME needs to lock the screen" msgstr "ತೆರೆಯನ್ನು ಲಾಕ್ ಮಾಡುವಂತೆ GNOME ಬಯಸುತ್ತದೆ" #: ../js/ui/screenShield.js:833 ../js/ui/screenShield.js:1304 msgid "Unable to lock" msgstr "ಲಾಕ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ" #: ../js/ui/screenShield.js:834 ../js/ui/screenShield.js:1305 msgid "Lock was blocked by an application" msgstr "ಲಾಕ್ ಮಾಡದಂತೆ ಒಂದು ಅನ್ವಯವು ತಡೆದಿದೆ" #: ../js/ui/search.js:594 msgid "Searching…" msgstr "ಹುಡುಕಲಾಗುತ್ತಿದೆ…" #: ../js/ui/search.js:596 msgid "No results." msgstr "ಯಾವುದೆ ಫಲಿತಾಂಶಗಳಿಲ್ಲ." #: ../js/ui/shellEntry.js:25 msgid "Copy" msgstr "ಪ್ರತಿಮಾಡು" #: ../js/ui/shellEntry.js:30 msgid "Paste" msgstr "ಅಂಟಿಸು" #: ../js/ui/shellEntry.js:97 msgid "Show Text" msgstr "ಪಠ್ಯವನ್ನು ತೋರಿಸು" #: ../js/ui/shellEntry.js:99 msgid "Hide Text" msgstr "ಪಠ್ಯವನ್ನು ಅಡಗಿಸು" #: ../js/ui/shellMountOperation.js:370 msgid "Password" msgstr "ಗುಪ್ತಪದ" #: ../js/ui/shellMountOperation.js:391 msgid "Remember Password" msgstr "ಈ ಗುಪ್ತಪದವನ್ನು ನೆನಪಿನಲ್ಲಿಡು" #: ../js/ui/status/accessibility.js:42 msgid "Accessibility" msgstr "ನಿಲುಕಣೆ" #: ../js/ui/status/accessibility.js:57 msgid "Zoom" msgstr "ಗಾತ್ರ ಬದಲಾವಣೆ" #: ../js/ui/status/accessibility.js:64 msgid "Screen Reader" msgstr "ತೆರೆ ಓದುಗ" #: ../js/ui/status/accessibility.js:68 msgid "Screen Keyboard" msgstr "ತೆರೆ ಕೀಲಿಮಣೆ" #: ../js/ui/status/accessibility.js:72 msgid "Visual Alerts" msgstr "ದೃಶ್ಯರೂಪದ ಎಚ್ಚರಿಕೆಗಳು" #: ../js/ui/status/accessibility.js:75 msgid "Sticky Keys" msgstr "ಸ್ಟಿಕಿ ಕೀಲಿಗಳು" #: ../js/ui/status/accessibility.js:78 msgid "Slow Keys" msgstr "ನಿಧಾನ ಕೀಲಿಗಳು" #: ../js/ui/status/accessibility.js:81 msgid "Bounce Keys" msgstr "ಪುಟಿಯುವ ಕೀಲಿಗಳು" #: ../js/ui/status/accessibility.js:84 msgid "Mouse Keys" msgstr "ಮೌಸ್‌ ಕೀಲಿಗಳು" #: ../js/ui/status/accessibility.js:144 msgid "High Contrast" msgstr "ಅತಿ ಹೆಚ್ಚು ವೈದೃಶ್ಯ" #: ../js/ui/status/accessibility.js:193 msgid "Large Text" msgstr "ದೊಡ್ಡ ಪಠ್ಯ" #: ../js/ui/status/bluetooth.js:49 msgid "Bluetooth" msgstr "ಬ್ಲೂಟೂತ್" #: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:178 #: ../js/ui/status/network.js:360 ../js/ui/status/network.js:1281 #: ../js/ui/status/network.js:1392 ../js/ui/status/rfkill.js:86 #: ../js/ui/status/rfkill.js:114 msgid "Turn Off" msgstr "ಆಫ್ ಮಾಡು" #: ../js/ui/status/bluetooth.js:54 msgid "Bluetooth Settings" msgstr "ಬ್ಲೂಟೂತ್ ಸಿದ್ಧತೆಗಳು" #: ../js/ui/status/bluetooth.js:104 #, javascript-format msgid "%d Connected Device" msgid_plural "%d Connected Devices" msgstr[0] "%d ಸಂಪರ್ಕಿತಗೊಂಡಿರುವ ಸಾಧನ" msgstr[1] "%d ಸಂಪರ್ಕಿತಗೊಂಡಿರುವ ಸಾಧನಗಳು" #: ../js/ui/status/bluetooth.js:106 ../js/ui/status/network.js:1309 msgid "Not Connected" msgstr "ಸಂಪರ್ಕ ಜೋಡಿಸಲಾಗಿಲ್ಲ" #: ../js/ui/status/brightness.js:44 msgid "Brightness" msgstr "ಪ್ರಕಾಶ" #: ../js/ui/status/keyboard.js:547 msgid "Show Keyboard Layout" msgstr "ಕೀಲಿಮಣೆ ವಿನ್ಯಾಸವನ್ನು ತೋರಿಸು" #: ../js/ui/status/location.js:65 msgid "Location" msgstr "ಸ್ಥಳ" #: ../js/ui/status/location.js:72 ../js/ui/status/location.js:177 msgid "Disable" msgstr "ನಿಷ್ಕ್ರಿಯಗೊಳಿಸು" #: ../js/ui/status/location.js:73 #| msgid "Power Settings" msgid "Privacy Settings" msgstr "ಗೌಪ್ಯತಾ ಸಿದ್ಧತೆಗಳು" #: ../js/ui/status/location.js:176 msgid "In Use" msgstr "ಬಳಕೆಯಲ್ಲಿದೆ" #: ../js/ui/status/location.js:180 msgid "Enable" msgstr "ಸಕ್ರಿಯಗೊಳಿಸು" #: ../js/ui/status/network.js:101 msgid "" msgstr "<ಗೊತ್ತಿರದ>" #: ../js/ui/status/network.js:457 ../js/ui/status/network.js:1307 #: ../js/ui/status/network.js:1511 msgid "Off" msgstr "ಆಫ್‌" #: ../js/ui/status/network.js:459 msgid "Connected" msgstr "ಸಂಪರ್ಕಿತಗೊಂಡಿದೆ" #. Translators: this is for network devices that are physically present but are not #. under NetworkManager's control (and thus cannot be used in the menu) */ #: ../js/ui/status/network.js:463 msgid "Unmanaged" msgstr "ನಿರ್ವಹಿಸಲಾಗದಿರುವ" #: ../js/ui/status/network.js:465 msgid "Disconnecting" msgstr "ಸಂಪರ್ಕ ಕಡಿದುಹಾಕಲಾಗುತ್ತಿದೆ" #: ../js/ui/status/network.js:471 ../js/ui/status/network.js:1301 msgid "Connecting" msgstr "ಸಂಪರ್ಕಿತಗೊಳ್ಳುತ್ತಿದೆ" #. Translators: this is for network connections that require some kind of key or password */ #: ../js/ui/status/network.js:474 msgid "Authentication required" msgstr "ದೃಢೀಕರಣದ ಅಗತ್ಯವಿದೆ" #. Translators: this is for devices that require some kind of firmware or kernel #. module, which is missing */ #: ../js/ui/status/network.js:482 msgid "Firmware missing" msgstr "ಫರ್ಮ್‌ವೇರ್ ಕಾಣಿಸುತ್ತಿಲ್ಲ" #. Translators: this is for a network device that cannot be activated (for example it #. is disabled by rfkill, or it has no coverage */ #: ../js/ui/status/network.js:486 msgid "Unavailable" msgstr "ಅಲಭ್ಯ" #: ../js/ui/status/network.js:488 ../js/ui/status/network.js:1695 msgid "Connection failed" msgstr "ಸಂಪರ್ಕವು ವಿಫಲಗೊಂಡಿದೆ" #: ../js/ui/status/network.js:504 msgid "Wired Settings" msgstr "ವೈರ್ಡ್ ಸಿದ್ಧತೆಗಳು" #: ../js/ui/status/network.js:546 ../js/ui/status/network.js:624 msgid "Mobile Broadband Settings" msgstr "ಮೊಬೈಲ್ ಬ್ರಾಡ್‌ಬ್ಯಾಂಡ್ ಸಿದ್ಧತೆಗಳು" #: ../js/ui/status/network.js:588 ../js/ui/status/network.js:1305 msgid "Hardware Disabled" msgstr "ಯಂತ್ರಾಂಶ ನಿಷ್ಕ್ರಿಯಗೊಂಡಿದೆ" #: ../js/ui/status/network.js:632 msgid "Use as Internet connection" msgstr "ಜಾಲಬಂಧ ಸಂಪರ್ಕವಾಗಿ ಬಳಸು" #: ../js/ui/status/network.js:813 msgid "Airplane Mode is On" msgstr "ಏರ್‌ಪ್ಲೇನ್ ಸ್ಥಿತಿಯು ಸಕ್ರಿಯವಾಗಿದೆ" #: ../js/ui/status/network.js:814 msgid "Wi-Fi is disabled when airplane mode is on." msgstr "" "ಏರ್‌ಪ್ಲೇನ್ ಸ್ಥಿತಿಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿದಾಗ ವೈ-ಫೈ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗುತ್ತದೆ." #: ../js/ui/status/network.js:815 msgid "Turn Off Airplane Mode" msgstr "ಏರ್‌ಪ್ಲೇನ್ ಸ್ಥಿತಿಯನ್ನು ಆಫ್ ಮಾಡು" #: ../js/ui/status/network.js:824 msgid "Wi-Fi is Off" msgstr "ವೈ-ಫೈ ನಿಷ್ಕ್ರಿಯವಾಗಿದೆ" #: ../js/ui/status/network.js:825 msgid "Wi-Fi needs to be turned on in order to connect to a network." msgstr "ಜಾಲಬಂಧಕ್ಕೆ ಸಂಪರ್ಕಿತಗೊಳ್ಳುವ ಸಲುವಾಗಿ ವೈ-ಫೈ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಬೇಕು." #: ../js/ui/status/network.js:826 msgid "Turn On Wi-Fi" msgstr "ವೈ-ಫೈ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸು" #: ../js/ui/status/network.js:851 msgid "Wi-Fi Networks" msgstr "ವೈ-ಫೈ ಜಾಲಬಂಧಗಳು" #: ../js/ui/status/network.js:853 msgid "Select a network" msgstr "ಒಂದು ಜಾಲಬಂಧವನ್ನು ಆರಿಸಿ" #: ../js/ui/status/network.js:882 msgid "No Networks" msgstr "ಯಾವುದೆ ಜಾಲಬಂಧಗಳಿಲ್ಲ" #: ../js/ui/status/network.js:903 ../js/ui/status/rfkill.js:112 msgid "Use hardware switch to turn off" msgstr "ಆಫ್ ಮಾಡಲು ಯಂತ್ರಾಂಶದ ಸ್ವಿಚ್ ಅನ್ನು ಬಳಸಿ" #: ../js/ui/status/network.js:1173 msgid "Select Network" msgstr "ಜಾಲಬಂಧವನ್ನು ಆರಿಸಿ" #: ../js/ui/status/network.js:1179 msgid "Wi-Fi Settings" msgstr "ವೈ-ಫೈ ಸಿದ್ಧತೆಗಳು" #: ../js/ui/status/network.js:1281 msgid "Turn On" msgstr "ಸಕ್ರಿಯಗೊಳಿಸು" #: ../js/ui/status/network.js:1298 msgid "Hotspot Active" msgstr "ಹಾಟ್‌ಸ್ಪಾಟ್‌ ಸಕ್ರಿಯ" #: ../js/ui/status/network.js:1409 msgid "connecting..." msgstr "ಸಂಪರ್ಕ ಹೊಂದಲಾಗುತ್ತಿದೆ..." #. Translators: this is for network connections that require some kind of key or password */ #: ../js/ui/status/network.js:1412 msgid "authentication required" msgstr "ದೃಢೀಕರಣದ ಅಗತ್ಯವಿದೆ" #: ../js/ui/status/network.js:1414 msgid "connection failed" msgstr "ಸಂಪರ್ಕ ವಿಫಲಗೊಂಡಿದೆ" #: ../js/ui/status/network.js:1480 ../js/ui/status/rfkill.js:89 msgid "Network Settings" msgstr "ಜಾಲಬಂಧ ಸಿದ್ಧತೆಗಳು" #: ../js/ui/status/network.js:1482 msgid "VPN Settings" msgstr "VPN ಸಿದ್ಧತೆಗಳು" #: ../js/ui/status/network.js:1501 msgid "VPN" msgstr "VPN" #: ../js/ui/status/network.js:1656 msgid "Network Manager" msgstr "ನೆಟ್‌ವರ್ಕ್ ಮ್ಯಾನೇಜರ್" #: ../js/ui/status/network.js:1696 msgid "Activation of network connection failed" msgstr "ಜಾಲಬಂಧ ಸಂಪರ್ಕವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ" #: ../js/ui/status/power.js:49 msgid "Power Settings" msgstr "ವಿದ್ಯುಚ್ಛಕ್ತಿ ಸಿದ್ಧತೆಗಳು" #: ../js/ui/status/power.js:65 msgid "Fully Charged" msgstr "ಸಂಪೂರ್ಣ ಚಾರ್ಜ್ ಆಗಿದೆ" #: ../js/ui/status/power.js:72 ../js/ui/status/power.js:78 msgid "Estimating…" msgstr "ಊಹಿಸಲಾಗುತ್ತಿದೆ…" #: ../js/ui/status/power.js:86 #, javascript-format msgid "%d∶%02d Remaining (%d%%)" msgstr "%d∶%02d ಬಾಕಿ ಇರುವುದು (%d%%)" #: ../js/ui/status/power.js:91 #, javascript-format msgid "%d∶%02d Until Full (%d%%)" msgstr "%d∶%02d ಪೂರ್ಣಗೊಳ್ಳುವ ವರೆಗೆ (%d%%)" #: ../js/ui/status/power.js:119 msgid "UPS" msgstr "UPS" #: ../js/ui/status/power.js:121 msgid "Battery" msgstr "ಬ್ಯಾಟರಿ" #: ../js/ui/status/rfkill.js:83 msgid "Airplane Mode" msgstr "ಏರ್‌ಪ್ಲೇನ್‌ ಸ್ಥಿತಿ" #: ../js/ui/status/rfkill.js:85 msgid "On" msgstr "ಸಕ್ರಿಯ" #: ../js/ui/status/system.js:317 msgid "Switch User" msgstr "ಬಳಕೆದಾರನನ್ನು ಬದಲಿಸು" #: ../js/ui/status/system.js:322 msgid "Log Out" msgstr "ನಿರ್ಗಮಿಸು" #: ../js/ui/status/system.js:341 msgid "Orientation Lock" msgstr "ಅಭಿಮುಖದ (ಓರಿಯೆಂಟೇಶನ್) ಲಾಕ್" #: ../js/ui/status/system.js:349 msgid "Suspend" msgstr "ಅಮಾನತ್ತಿನಲ್ಲಿಡು" #: ../js/ui/status/system.js:352 msgid "Power Off" msgstr "ಸ್ಥಗಿತಗೊಳಿಸು" #: ../js/ui/status/volume.js:127 msgid "Volume changed" msgstr "ಧ್ವನಿ ಪ್ರಮಾಣವನ್ನು ಬದಲಾಯಿಸಲಾಗಿದೆ" #: ../js/ui/status/volume.js:162 msgid "Volume" msgstr "ಧ್ವನಿ ಪ್ರಮಾಣ" #: ../js/ui/status/volume.js:213 msgid "Microphone" msgstr "ಮೈಕ್ರೊಫೋನ್" #: ../js/ui/unlockDialog.js:67 msgid "Log in as another user" msgstr "ಇನ್ನೊಬ್ಬ ಬಳಕೆದಾರನಾಗಿ ಪ್ರವೇಶಿಸಿ" #: ../js/ui/unlockDialog.js:84 msgid "Unlock Window" msgstr "ಕಿಟಕಿಯನ್ನು ಅನ್‌ಲಾಕ್ ಮಾಡು" #: ../js/ui/viewSelector.js:158 msgid "Applications" msgstr "ಅನ್ವಯಗಳು" #: ../js/ui/viewSelector.js:162 msgid "Search" msgstr "ಹುಡುಕು" #: ../js/ui/windowAttentionHandler.js:19 #, javascript-format msgid "“%s” is ready" msgstr "“%s” ಸಿದ್ಧಗೊಂಡಿದೆ" #: ../js/ui/windowManager.js:65 msgid "Do you want to keep these display settings?" msgstr "ನೀವು ಈ ಸಿದ್ಧತೆಗಳನ್ನು ಉಳಿಸಿಕೊಳ್ಳಲು ಬಯಸುವಿರಾ?" #. Translators: this and the following message should be limited in lenght, #. to avoid ellipsizing the labels. #. */ #: ../js/ui/windowManager.js:84 msgid "Revert Settings" msgstr "ಸಿದ್ಧತೆಗಳನ್ನು ಹಿಮ್ಮರಳಿಸು" #: ../js/ui/windowManager.js:88 msgid "Keep Changes" msgstr "ಬದಲಾವಣೆಗಳನ್ನು ಉಳಿಸು" #: ../js/ui/windowManager.js:107 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "ಸಿದ್ಧತೆಗಳ ಬದಲಾವಣೆಗಳು %d ಸೆಕೆಂಡಿನಲ್ಲಿ ಹಿಮ್ಮರಳುತ್ತವೆ" msgstr[1] "ಸಿದ್ಧತೆಗಳ ಬದಲಾವಣೆಗಳು %d ಸೆಕೆಂಡುಗಳಲ್ಲಿ ಹಿಮ್ಮರಳುತ್ತವೆ" #: ../js/ui/windowMenu.js:34 msgid "Minimize" msgstr "ಕುಗ್ಗಿಸು" #: ../js/ui/windowMenu.js:41 msgid "Unmaximize" msgstr "ಹಿಂದಿನ ಸ್ಥಿತಿಗೆ ಮರಳಿಸು" #: ../js/ui/windowMenu.js:45 msgid "Maximize" msgstr "ಹಿಗ್ಗಿಸು" #: ../js/ui/windowMenu.js:52 msgid "Move" msgstr "ಸ್ಥಳಾಂತರಿಸು" #: ../js/ui/windowMenu.js:58 msgid "Resize" msgstr "ಮರುಗಾತ್ರಿಸು" #: ../js/ui/windowMenu.js:65 msgid "Move Titlebar Onscreen" msgstr "ಶೀರ್ಷಿಕೆಪಟ್ಟಿಯನ್ನು ತೆರೆಯ ಮೇಲೆ ಸ್ಥಳಾಂತರಿಸು" #: ../js/ui/windowMenu.js:70 msgid "Always on Top" msgstr "ಯಾವಾಗಲೂ ಮೇಲ್ಭಾಗದಲ್ಲಿ" #: ../js/ui/windowMenu.js:89 msgid "Always on Visible Workspace" msgstr "ಯಾವಾಗಲೂ ಗೋಚರಿಸುವ ಕಾರ್ಯಸ್ಥಳದಲ್ಲಿ" #: ../js/ui/windowMenu.js:106 msgid "Move to Workspace Up" msgstr "ಮೇಲಿನ ಕಾರ್ಯಸ್ಥಳಕ್ಕೆ ಸ್ಥಳಾಂತರಿಸು" #: ../js/ui/windowMenu.js:111 msgid "Move to Workspace Down" msgstr "ಕೆಳಗಿನ ಕಾರ್ಯಸ್ಥಳಕ್ಕೆ ಸ್ಥಳಾಂತರಿಸು" #: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1 msgid "Evolution Calendar" msgstr "Evolution ಕ್ಯಾಲೆಂಡರ್" #. translators: #. * The number of sound outputs on a particular device #: ../src/gvc/gvc-mixer-control.c:1837 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u ಔಟ್‌ಪುಟ್" msgstr[1] "%u ಔಟ್‌ಪುಟ್‌ಗಳು" #. translators: #. * The number of sound inputs on a particular device #: ../src/gvc/gvc-mixer-control.c:1847 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u ಇನ್‌ಪುಟ್" msgstr[1] "%u ಇನ್‌ಪುಟ್‌ಗಳು" #: ../src/gvc/gvc-mixer-control.c:2373 msgid "System Sounds" msgstr "ವ್ಯವಸ್ಥೆಯ ಧ್ವನಿಗಳು" #: ../src/main.c:373 msgid "Print version" msgstr "ಮುದ್ರಿಸಬಹುದಾದ ಆವೃತ್ತಿ" #: ../src/main.c:379 msgid "Mode used by GDM for login screen" msgstr "ಪ್ರವೇಶದ ತೆರೆಗಾಗಿ GDM ಬಳಸಿದ ಪ್ರಕಾರ" #: ../src/main.c:385 msgid "Use a specific mode, e.g. \"gdm\" for login screen" msgstr "ನಿಶ್ಚಿತ ಸ್ಥಿತಿಯನ್ನು ಬಳಸು, ಉದಾ. ಪ್ರವೇಶ ತೆರೆಗಾಗಿ \"gdm\"" #: ../src/main.c:391 msgid "List possible modes" msgstr "ಸಾಧ್ಯವಿರುವ ಸ್ಥಿತಿಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡು" #: ../src/shell-app.c:666 #, c-format msgid "Failed to launch “%s”" msgstr "“%s” ಅನ್ನು ಆರಂಭಿಸುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ" #: ../src/shell-keyring-prompt.c:714 msgid "Passwords do not match." msgstr "ಗುಪ್ತಪದಗಳು ತಾಳೆಯಾಗುವುದಿಲ್ಲ." #: ../src/shell-keyring-prompt.c:722 msgid "Password cannot be blank" msgstr "ಗುಪ್ತಪದವು ಖಾಲಿ ಇರುವಂತಿಲ್ಲ" #: ../src/shell-polkit-authentication-agent.c:346 msgid "Authentication dialog was dismissed by the user" msgstr "ದೃಢೀಕರಣದ ಸಂವಾದವನ್ನು ಬಳಕೆದಾರರಿಂದ ತಿರಸ್ಕರಿಸಲಾಗಿದೆ" #~ msgid "Screenshots" #~ msgstr "ತೆರೆಚಿತ್ರಗಳು" #~ msgid "Record a screencast" #~ msgstr "ಒಂದು ಸ್ಕ್ರೀನ್‌ಕ್ಯಾಸ್ಟನ್ನು ರೆಕಾರ್ಡು ಮಾಡಿ" #~ msgid "Whether to collect stats about applications usage" #~ msgstr "ಅನ್ವಯದ ಬಳಕೆಯ ಬಗೆಗಿನ ಅಂಕಿಅಂಶಗಳನ್ನು ಸಂಗ್ರಹಿಸಬೇಕೆ" #~ msgid "" #~ "The shell normally monitors active applications in order to present the " #~ "most used ones (e.g. in launchers). While this data will be kept private, " #~ "you may want to disable this for privacy reasons. Please note that doing " #~ "so won't remove already saved data." #~ msgstr "" #~ "ಶೆಲ್‌ ಸಾಮಾನ್ಯವಾಗಿ ಹೆಚ್ಚಾಗಿ ಬಳಸಲಾದ (ಉದಾ. ಆರಂಭಕಗಳಲ್ಲಿ) ಅನ್ವಯಗಳನ್ನು ತೋರಿಸಲು " #~ "ಸಕ್ರಿಯವಾದವುಗಳನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ನಡೆಸುತ್ತದೆ. ಈ ದತ್ತಾಂಶವನ್ನು ಗೌಪ್ಯವಾಗಿ ಇರಿಸಲಾಗುತ್ತದೆ, " #~ "ಹಾಗೂ ಗೌಪ್ಯತಾ ಕಾರಣಗಳಿದ್ದಲ್ಲಿ ನೀವು ಅದನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಬಹುದು. ಹಾಗೆ ಮಾಡುವುದರಿಂದ " #~ "ಉಳಿಸಲಾದ ಯಾವದೆ ದತ್ತಾಂಶವು ತೆಗೆದುಹಾಕಲ್ಪಡುವುದಿಲ್ಲ ಎನ್ನುವುದನ್ನು ನೆನಪಿಡಿ." #~ msgid "List of categories that should be displayed as folders" #~ msgstr "ಕಡತಕೋಶಗಳಾಗಿ ತೋರಿಸಬೇಕಿರುವ ವರ್ಗಗಳ ಪಟ್ಟಿ" #~ msgid "" #~ "Each category name in this list will be represented as folder in the " #~ "application view, rather than being displayed inline in the main view." #~ msgstr "" #~ "ಈ ಪಟ್ಟಿಯಲ್ಲಿನ ಪ್ರತಿಯೊಂದು ವರ್ಗ ಹೆಸರನ್ನೂ ಸಹ ಮುಖ್ಯ ನೋಟದಲ್ಲಿ ಸಾಲಿನ ಒಳಗೆ ತೋರಿಸುವ " #~ "ಬದಲಿಗೆ, ಅನ್ವಯ ನೋಟದಲ್ಲಿ ಕಡತಕೋಶವಾಗಿ ತೋರಿಸಲಾಗುತ್ತದೆ." #~ msgid "" #~ "Internally used to store the last IM presence explicitly set by the user. " #~ "The value here is from the TpConnectionPresenceType enumeration." #~ msgstr "" #~ "ಆಂತರಿಕವಾಗಿ ಬಳಕೆದಾರರಿಂದ ಸ್ಪಷ್ಟವಾಗಿ ಹೊಂದಿಸಲಾದ ಕೊನೆಯ IM ಅನ್ನು ಶೇಖರಿರಿಸಲು " #~ "ಬಳಸಲಾಗುತ್ತದೆ. ಇಲ್ಲಿರುವ ಮೌಲ್ಯವು TpConnectionPresenceType ಎನ್ಯೂಮರೇಶನ್‌ನಿಂದ " #~ "ಬಂದಿರುತ್ತದೆ." #~ msgid "" #~ "Internally used to store the last session presence status for the user. " #~ "The value here is from the GsmPresenceStatus enumeration." #~ msgstr "" #~ "ಆಂತರಿಕವಾಗಿ ಬಳಕೆದಾರರಿಂದ ಸ್ಪಷ್ಟವಾಗಿ ಹೊಂದಿಸಲಾದ ಕೊನೆಯ ಅಧಿವೇಶನವನ್ನು ಶೇಖರಿರಿಸಲು " #~ "ಬಳಸಲಾಗುತ್ತದೆ. ಇಲ್ಲಿರುವ ಮೌಲ್ಯವು GsmPresenceStatus ಎನ್ಯೂಮರೇಶನ್‌ನಿಂದ ಬಂದಿರುತ್ತದೆ." #~ msgid "Keybinding to toggle the screen recorder" #~ msgstr "ತೆರೆ ರೆಕಾರ್ಡರ್ ಅನ್ನು ಹೊರಳಿಸಲು ಕೀಬೈಂಡಿಂಗ್" #~ msgid "Keybinding to start/stop the builtin screen recorder." #~ msgstr "ಒಳನಿರ್ಮಿತ ತೆರೆ ರೆಕಾರ್ಡರ್ ಅನ್ನು ಆರಂಭಿಸಲು/ನಿಲ್ಲಿಸಲು ಕೀಬೈಂಡಿಂಗ್." #~ msgid "Framerate used for recording screencasts." #~ msgstr "ಸ್ಕ್ರೀನ್‌ಕ್ಯಾಸ್ಟುಗಳನ್ನು ರೆಕಾರ್ಡು ಮಾಡಲು ಬಳಸಲಾಗುವ ಫ್ರೇಮ್‌ದರಗಳು." #~ msgid "" #~ "The framerate of the resulting screencast recordered by GNOME Shell's " #~ "screencast recorder in frames-per-second." #~ msgstr "" #~ "ಪ್ರತಿ ಸೆಕೆಂಡಿನ ಫ್ರೇಮ್‌ಗಳಲ್ಲಿನ GNOME ಶೆಲ್‌ನ ಸ್ಕ್ರೀನ್‌ಕ್ಯಾಸ್ಟ್‍ ರೆಕಾರ್ಡರಿನಿಂದ ರೆಕಾರ್ಡು " #~ "ಮಾಡಲಾದ ಸ್ಕ್ರೀನ್‌ಕ್ಯಾಸ್ಟಿನ ಫ್ರೇಮ್‌ದರ. " #~ msgid "The gstreamer pipeline used to encode the screencast" #~ msgstr "ಸ್ಕ್ರೀನ್‌ಕ್ಯಾಸ್ಟ್‍ ಅನ್ನು ಎನ್ಕೋಡ್ ಮಾಡಲು ಬಳಸಲಾಗುವ gstreamer ಪೈಪ್‌ಲೈನ್" #~ msgid "" #~ "Sets the GStreamer pipeline used to encode recordings. It follows the " #~ "syntax used for gst-launch. The pipeline should have an unconnected sink " #~ "pad where the recorded video is recorded. It will normally have a " #~ "unconnected source pad; output from that pad will be written into the " #~ "output file. However the pipeline can also take care of its own output - " #~ "this might be used to send the output to an icecast server via shout2send " #~ "or similar. When unset or set to an empty value, the default pipeline " #~ "will be used. This is currently 'vp8enc min_quantizer=13 max_quantizer=13 " #~ "cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux' and records to " #~ "WEBM using the VP8 codec. %T is used as a placeholder for a guess at the " #~ "optimal thread count on the system." #~ msgstr "" #~ "ರೆಕಾರ್ಡಿಂಗ್‌ಗಳನ್ನು ಎನ್ಕೋಡ್ ಮಾಡಲು ಬಳಸಲಾದ GStreamer ಪೈಪ್‌ಲೈನ್‌ ಅನ್ನು ಹೊಂದಿಸುತ್ತದೆ. ಇದು " #~ "gst-launch ನಲ್ಲಿ ಬಳಸಲಾದ ಸಿಂಟ್ಯಾಕ್ಸನ್ನು ಅನುಸರಿಸುತ್ತದೆ. ಪೈಪ್‌ಲೈನ್ ವಿಡಿಯೊವನ್ನು " #~ "ರೆಕಾರ್ಡು ಮಾಡಲು ಒಂದು ನಿಯೋಜಿಸದೇ ಇರುವ ಸಿಂಕ್‌ಪ್ಯಾಡ್‌ಗೆ ಸಂಪರ್ಕಿತಗೊಂಡಿರಬೇಕು. ಇದು " #~ "ಸಾಮಾನ್ಯವಾಗಿ ಸಂಪರ್ಕಿತಗೊಂಡಿರದೆ ಇರುವ ಪೈಪ್‌ಲೈನ್ ಅನ್ನು ಹೊಂದಿರುತ್ತದೆ; ಆ ಪ್ಯಾಡ್‌ನಿಂದ ಔಟ್‌ಪುಟ್ " #~ "ಅನ್ನು ಔಟ್‌ಪುಟ್ ಕಡತಕ್ಕೆ ಬರೆಯಲಾಗುತ್ತದೆ. ಆದರೆ ಪೈಪ್‌ಲೈನ್ ತನ್ನದೆ ಆದ ಔಟ್‌ಪುಟ್ ಅನ್ನು " #~ "ನೋಡಿಕೊಳ್ಳಬಲ್ಲದು - shout2send ಅಥವ ಅದೇ ರೀತಿಯದರ ಮೂಲಕ icecast ಪೂರೈಕೆಗಣಕಕ್ಕೆ " #~ "ಔಟ್‌ಪುಟ್ ಅನ್ನು ಕಳುಹಿಸಲು ಇದನ್ನು ಬಳಸಬಹುದಾಗಿರುತ್ತದೆ. ಇದರ ಹೊಂದಿಕೆಯನ್ನು " #~ "ರದ್ದುಗೊಳಿಸಿದಲ್ಲಿ ಅಥವ ಒಂದು ಖಾಲಿ ಮೌಲ್ಯಕ್ಕೆ ಹೊಂದಿಸಿದಲ್ಲಿ, ಪೂರ್ವನಿಯೋಜಿತ ಪೈಪ್‌ಲೈನ್ ಅನ್ನು " #~ "ಬಳಸಲಾಗುತ್ತದೆ. ಇದು ಪ್ರಸ್ತುತ 'vp8enc min_quantizer=13 max_quantizer=13 cpu-" #~ "used=5 deadline=1000000 threads=%T ! queue ! webmmux' ಆಗಿರುತ್ತದೆ ಮತ್ತು VP8 " #~ "ಕೋಡೆಕ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು WEBM ಅನ್ನು ರೆಕಾರ್ಡು ಮಾಡುತ್ತದೆ. %T ಎನ್ನು ವ್ಯವಸ್ತೆಯಲ್ಲಿನ " #~ "ಸೂಕ್ತವಾದ ಎಳೆಯ ಎಣಿಕೆಯನ್ನು ಊಹಿಸಲು ಒಂದು ಪ್ಲೇಸ್‌ಹೋಲ್ಡರ್ ಆಗಿ ಬಳಸಲಾಗುತ್ತದೆ." #~ msgid "File extension used for storing the screencast" #~ msgstr "ಸ್ಕ್ರೀನ್‌ಕ್ಯಾಸ್ಟುಗಳನ್ನು ಶೇಖರಿಸಿಡಲು ಬಳಸಲಾಗುವ ಕಡತ ವಿಸ್ತರಣೆಗಳು" #~ msgid "" #~ "The filename for recorded screencasts will be a unique filename based on " #~ "the current date, and use this extension. It should be changed when " #~ "recording to a different container format." #~ msgstr "" #~ "ರೆಕಾರ್ಡು ಮಾಡಲಾದ ಸ್ಕ್ರೀನ್‌ಕ್ಯಾಸ್ಟುಗಳಿಗಾಗಿನ ಕಡತದ ಹೆಸರು ಪ್ರಸಕ್ತ ದಿನಾಂಕದ ಆಧರಿತವಾದ ಒಂದು " #~ "ವಿಶೇಷವಾದ ಕಡತದ ಹೆಸರಾಗಿರುತ್ತದೆ, ಹಾಗು ಈ ವಿಸ್ತರಣೆಯನ್ನು ಬಳಸುತ್ತದೆ. ಬೇರೊಂದು ಕಂಟೈನರ್ " #~ "ಶೈಲಿಗೆ ರೆಕಾರ್ಡ್ ಮಾಡುವಾಗ ಇದನ್ನು ಬದಲಾಯಿಸಬೇಕಾಗುತ್ತದೆ." #~ msgid "Arrangement of buttons on the titlebar" #~ msgstr "ಶೀರ್ಷಿಕೆಪಟ್ಟಿಯಲ್ಲಿ ಗುಂಡಿಗಳ ಜೋಡಣೆ" #~ msgid "" #~ "This key overrides the key in org.gnome.desktop.wm.preferences when " #~ "running GNOME Shell." #~ msgstr "" #~ "ಈ ಕೀಲಿಯು GNOME ಶೆಲ್‌ ಅನ್ನು ಚಲಾಯಿಸುವಾಗ org.gnome.desktop.wm.preferences ನಲ್ಲಿನ " #~ "ಕೀಲಿಯನ್ನು ಅತಿಕ್ರಮಿಸುತ್ತದೆ." #~ msgid "Extension" #~ msgstr "ವಿಸ್ತರಣೆ" #~ msgid "Select an extension to configure using the combobox above." #~ msgstr "ಮೇಲಿನ ಸಂಯೋಜನಾಚೌಕವನ್ನು ಬಳಸಿಕೊಂಡು ಸಂರಚಿಸಬೇಕಿರುವ ಒಂದು ವಿಸ್ತರಣೆಯನ್ನು ಆರಿಸಿ." #~ msgid "Session" #~ msgstr "ಅಧಿವೇಶನ" #~ msgid "Power" #~ msgstr "ವಿದ್ಯುಚ್ಛಕ್ತಿ" #~ msgid "Restart" #~ msgstr "ಮರಳಿ ಆರಂಭಿಸು" #~ msgctxt "event list time" #~ msgid "%H\\u2236%M" #~ msgstr "%H\\u2236%M" #~ msgctxt "event list time" #~ msgid "%l\\u2236%M\\u2009%p" #~ msgstr "%l\\u2236%M\\u2009%p" #~ msgid "Screencast from %d %t" #~ msgstr "%d %t ಇಂದ ತೆರೆಚಲನಚಿತ್ರ" #~ msgid "%A, %H:%M" #~ msgstr "%A, %H:%M" #~ msgid "%B %d, %H:%M" #~ msgstr "%B %d, %H:%M" #~ msgid "%B %d %Y, %H:%M " #~ msgstr "%B %d %Y, %H:%M " #~ msgid "Click Log Out to quit these applications and log out of the system." #~ msgstr "ಈ ಅನ್ವಯದಿಂದ ನಿರ್ಗಮಿಸಿ ನಂತರ ವ್ಯವಸ್ಥೆಯಿಂದ ನಿರ್ಗಮಿಸಲು ನಿರ್ಗಮಿಸು ಅನ್ನು ಒತ್ತಿ." #~ msgid "Logging out of the system." #~ msgstr "ವ್ಯವಸ್ಥೆಯಿಂದ ನಿರ್ಗಮಿಸಲಾಗುತ್ತಿದೆ." #~ msgid "Click Power Off to quit these applications and power off the system." #~ msgstr "" #~ "ಈ ಅನ್ವಯದಿಂದ ನಿರ್ಗಮಿಸಿ ನಂತರ ವ್ಯವಸ್ಥೆಯಿಂದ ನಿರ್ಗಮಿಸಲು ಸ್ಥಗಿತಗೊಳಿಸು ಅನ್ನು ಒತ್ತಿ." #~ msgid "Powering off the system." #~ msgstr "ವ್ಯವಸ್ಥೆಯನ್ನು ಸ್ಥಗಿತಗೊಳಿಸಲಾಗುತ್ತಿದೆ." #~ msgid "Click Restart to quit these applications and restart the system." #~ msgstr "" #~ "ಈ ಅನ್ವಯದಿಂದ ನಿರ್ಗಮಿಸಿ ಗಣಕವನ್ನು ಮರಳಿ ಅರಂಭಿಸಲು ಮರಳಿ ಆರಂಭಿಸು ಅನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ." #~ msgid "Restarting the system." #~ msgstr "ನಿಮ್ಮ ವ್ಯವಸ್ಥೆಯನ್ನು ಮರಳಿ ಆರಂಭಿಸಲಾಗುತ್ತಿದೆ." #~ msgid "Universal Access Settings" #~ msgstr "ಜಾಗತಿಕ ನಿಲುಕಣೆ ಸಿದ್ಧತೆಗಳು" #~ msgid "Visibility" #~ msgstr "ಗೋಚರಿಕೆ" #~ msgid "Send Files to Device…" #~ msgstr "ಸಾಧನಕ್ಕೆ ಕಡತಗಳನ್ನು ಕಳುಹಿಸಿ…" #~ msgid "Set Up a New Device…" #~ msgstr "ಒಂದು ಹೊಸ ಸಾಧನವನ್ನು ಸಿದ್ಧಗೊಳಿಸು…" #~ msgid "Send Files…" #~ msgstr "ಕಡತಗಳನ್ನು ಕಳುಹಿಸು…" #~ msgid "Keyboard Settings" #~ msgstr "ಕೀಲಿಮಣೆ ಸಿದ್ಧತೆಗಳು" #~ msgid "Mouse Settings" #~ msgstr "ಮೌಸ್‌ನ ಸಿದ್ಧತೆಗಳು" #~ msgid "Sound Settings" #~ msgstr "ಧ್ವನಿಯ ಸಿದ್ಧತೆಗಳು" #~ msgid "Authorization request from %s" #~ msgstr "%s ಇಂದ ದೃಢೀಕರಣ ದೋಷ" #~ msgid "Device %s wants access to the service '%s'" #~ msgstr "%s ಎಂಬ ಸಾಧನಕ್ಕಾಗಿ '%s' ಎಂಬ ಸೇವೆಯನ್ನು ನಿಲುಕಿಸಿಕೊಳ್ಳಲು ಬಯಸುತ್ತಿದೆ" #~ msgid "Always grant access" #~ msgstr "ಯಾವಾಗಲೂ ಅನುಮತಿಸು" #~ msgid "Grant this time only" #~ msgstr "ಈ ಬಾರಿ ಮಾತ್ರ ಅನುಮತಿಸು" #~ msgid "Reject" #~ msgstr "ತಿರಸ್ಕರಿಸು" #~ msgid "Pairing confirmation for %s" #~ msgstr "%s ಗಾಗಿ ಪೇರಿಂಗ್ ಖಚಿತಪಡಿಕೆ" #~ msgid "Device %s wants to pair with this computer" #~ msgstr "%s ಎನ್ನುವ ಸಾಧನದೊಂದಿಗೆ ಸಂಪರ್ಕ ಜೋಡಿಸಲು ಬಯಸುತ್ತಿದೆ" #~ msgid "Please confirm whether the PIN '%06d' matches the one on the device." #~ msgstr "" #~ "'%06d' ಎಂಬ PIN ಸಾಧನದಲ್ಲಿರುವುದಕ್ಕೆ ತಾಳೆಯಾಗುತ್ತದೆಯೆ ಎಂದು ದಯವಿಟ್ಟು ಖಚಿತಪಡಿಸಿ." #~ msgid "Matches" #~ msgstr "ಹೊಂದಾಣಿಕೆಗಳು" #~ msgid "Does not match" #~ msgstr "ತಾಳೆಯಾಗುತ್ತಿಲ್ಲ" #~ msgid "Pairing request for %s" #~ msgstr "%s ಗಾಗಿ ಪೇರಿಂಗ್ ಮನವಿ" #~ msgid "Please enter the PIN mentioned on the device." #~ msgstr "ದಯವಿಟ್ಟು ಸಾಧನದಲ್ಲಿ ಸೂಚಿಸಿರುವ PIN ಅನ್ನು ನಮೂದಿಸಿ." #~ msgid "OK" #~ msgstr "ಸರಿ" #~ msgid "Region & Language Settings" #~ msgstr "ಪ್ರದೇಶ ಮತ್ತು ಭಾಷೆ ಸಿದ್ಧತೆಗಳು" #~ msgid "Volume, network, battery" #~ msgstr "ಧ್ವನಿಪ್ರಮಾಣ, ಜಾಲಬಂಧ, ಬ್ಯಾಟರಿ" #~ msgid "disabled" #~ msgstr "ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ" #~ msgid "cable unplugged" #~ msgstr "ಕೇಬಲ್‌ ಅನ್ನು ತೆಗೆದುಹಾಕಲಾಗಿದೆ" #~ msgid "More…" #~ msgstr "ಇನ್ನಷ್ಟು …" #~ msgid "Wired" #~ msgstr "ತಂತಿಯುಕ್ತ" #~ msgid "Auto Ethernet" #~ msgstr "ಸ್ವಯಂ-ಎತರ್ನೆಟ್" #~ msgid "Auto broadband" #~ msgstr "ಸ್ವಯಂ-ಬ್ರಾಡ್‌ಬ್ಯಾಂಡ್" #~ msgid "Auto dial-up" #~ msgstr "ಸ್ವಯಂ ಡಯಲ್-ಅಪ್" #~ msgid "Auto %s" #~ msgstr "ಸ್ವಯಂ %s" #~ msgid "Auto bluetooth" #~ msgstr "ಸ್ವಯಂ ಬ್ಲೂಟೂತ್" #~ msgid "Auto wireless" #~ msgstr "ಸ್ವಯಂ ತಂತಿರಹಿತ" #~ msgid "Wi-Fi" #~ msgstr "ವೈ-ಫೈ" #~ msgid "Networking is disabled" #~ msgstr "ಜಾಲಬಂಧವು ವಿಫಲಗೊಂಡಿದೆ" #~ msgid "%d hour remaining" #~ msgid_plural "%d hours remaining" #~ msgstr[0] "%d ಗಂಟೆ ಬಾಕಿ ಇದೆ" #~ msgstr[1] "%d ಗಂಟೆಗಳು ಬಾಕಿ ಇವೆ" #~ msgid "%d %s %d %s remaining" #~ msgstr "%d %s %d %s ಬಾಕಿ ಇದೆ" #~ msgid "hour" #~ msgid_plural "hours" #~ msgstr[0] "ಗಂಟೆ" #~ msgstr[1] "ಗಂಟೆಗಳು" #~ msgid "minute" #~ msgid_plural "minutes" #~ msgstr[0] "ನಿಮಿಷ" #~ msgstr[1] "ನಿಮಿಷಗಳು" #~ msgid "%d minute remaining" #~ msgid_plural "%d minutes remaining" #~ msgstr[0] "%d ನಿಮಿಷ ಬಾಕಿ ಇದೆ" #~ msgstr[1] "%d ನಿಮಿಷಗಳು ಬಾಕಿ ಇವೆ" #~ msgctxt "percent of battery remaining" #~ msgid "%d%%" #~ msgstr "%d%%" #~ msgid "AC Adapter" #~ msgstr "AC ಅಡಾಪ್ಟರ್" #~ msgid "Laptop Battery" #~ msgstr "ಲ್ಯಾಪ್‌ಟಾಪ್ ಬ್ಯಾಟರಿ" #~ msgid "Monitor" #~ msgstr "ತೆರೆ" #~ msgid "Mouse" #~ msgstr "ಮೌಸ್" #~ msgid "PDA" #~ msgstr "PDA" #~ msgid "Cell Phone" #~ msgstr "ಸೆಲ್ ಫೋನ್" #~ msgid "Media Player" #~ msgstr "ಮಾಧ್ಯಮ ಚಾಲಕ" #~ msgid "Tablet" #~ msgstr "ಟ್ಯಾಬ್ಲೆಟ್" #~ msgid "Computer" #~ msgstr "ಗಣಕ" #~ msgctxt "device" #~ msgid "Unknown" #~ msgstr "ಗೊತ್ತಿಲ್ಲದ" #~ msgid "Available" #~ msgstr "ಲಭ್ಯ" #~ msgid "Busy" #~ msgstr "ಕಾರ್ಯನಿರತ" #~ msgid "Invisible" #~ msgstr "ಅಗೋಚರ" #~ msgid "Away" #~ msgstr "ಹೊರಗೆ ಹೋಗಿದ್ದೇನೆ" #~ msgid "Idle" #~ msgstr "ಜಡ" #~ msgid "Your chat status will be set to busy" #~ msgstr "ನಿಮ್ಮ ಹರಟೆಯ ಸ್ಥಿತಿಯನ್ನು ಕಾರ್ಯನಿರತರಾಗಿದ್ದಾರೆ ಎಂದು ಬದಲಾಯಿಸಲಾಗಿದೆ." #~ msgid "" #~ "Notifications are now disabled, including chat messages. Your online " #~ "status has been adjusted to let others know that you might not see their " #~ "messages." #~ msgstr "" #~ "ಸಂಭಾಷಣೆಯ ಸಂದೇಶಗಳೂ ಸಹ ಸೇರಿದಂತೆ ಸೂಚನೆಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿರುತ್ತದೆ. ನೀವು " #~ "ಬೇರೆಯವರಿಂದ ಬಂದ ಸಂದೇಶಗಳನ್ನು ನೀವು ನೋಡಿಲ್ಲ ಎಂದು ಅವರಿಗೆ ಗೊತ್ತಾಗುವಂತೆ ನಿಮ್ಮ ಆನ್‌ಲೈನ್ " #~ "ಸ್ಥಿತಿಯನ್ನು ಹೊಂದಿಸಲಾಗಿರುತ್ತದೆ." #~ msgid "Shutting down might cause them to lose unsaved work." #~ msgstr "ಸ್ಥಗಿತಗೊಳಿಸಿದಲ್ಲಿ ಉಳಿಸದೆ ಇರುವ ಕೆಲಸವು ಇಲ್ಲವಾಗಲು ಕಾರಣವಾಗಬಹುದು." #~ msgid "" #~ "Sorry, no wisdom for you today:\n" #~ "%s" #~ msgstr "" #~ "ಕ್ಷಮಿಸಿ, ನಿಮಗಾಗಿ ಯಾವುದೆ ವಿವೇಕವಾಣಿ ಇಲ್ಲ :\n" #~ "%s" #~ msgid "%s the Oracle says" #~ msgstr "%s Oracle ಹೇಳುವಂತೆ" 07070100000246000081A40000000000000000000000016712993F00019132000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/ko.po# Korean message translation for gnome-shell # # This file is distributed under the same license as the gnome-shell package. # Young-Ho Cha , 2009. # Seong-ho Cho , 2012. # Changwoo Ryu , 2011-2024. # # # 주의 사항: # - 이 프로그램의 이름인 shell은 "셸"이라고 쓰고, "쉘"이라고 하지 않음. # - 용어: # - Airplane Mode: 비행기 모드 # - Dash: 대시보드 # - instance messanger 또는 IM은 메신저라고 번역 # - VPN: 가상사설망 # - pairing (bluetooth 관련): 페어링 # - screencast: 스크린캐스트 # - Wayland: 웨일랜드로 음역 # - Night Light: 야간 모드 (gnome-control-center와 일치) # msgid "" msgstr "" "Project-Id-Version: gnome-shell\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues/\n" "POT-Creation-Date: 2024-08-06 15:18+0000\n" "PO-Revision-Date: 2024-08-29 06:35+0900\n" "Last-Translator: Changwoo Ryu \n" "Language-Team: GNOME Korea \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" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "실행" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate pinned app 1" msgstr "고정 앱 1 활성화" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate pinned app 2" msgstr "고정 앱 2 활성화" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate pinned app 3" msgstr "고정 앱 3 활성화" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate pinned app 4" msgstr "고정 앱 4 활성화" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate pinned app 5" msgstr "고정 앱 5 활성화" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate pinned app 6" msgstr "고정 앱 6 활성화" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate pinned app 7" msgstr "고정 앱 7 활성화" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate pinned app 8" msgstr "고정 앱 8 활성화" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate pinned app 9" msgstr "고정 앱 9 활성화" #: data/50-gnome-shell-launchers.xml:46 msgid "Open new window of pinned app 1" msgstr "고정 앱 1의 새 창을 엽니다" #: data/50-gnome-shell-launchers.xml:50 msgid "Open new window of pinned app 2" msgstr "고정 앱 2의 새 창을 엽니다" #: data/50-gnome-shell-launchers.xml:54 msgid "Open new window of pinned app 3" msgstr "고정 앱 3의 새 창을 엽니다" #: data/50-gnome-shell-launchers.xml:58 msgid "Open new window of pinned app 4" msgstr "고정 앱 4의 새 창을 엽니다" #: data/50-gnome-shell-launchers.xml:62 msgid "Open new window of pinned app 5" msgstr "고정 앱 5의 새 창을 엽니다" #: data/50-gnome-shell-launchers.xml:66 msgid "Open new window of pinned app 6" msgstr "고정 앱 6의 새 창을 엽니다" #: data/50-gnome-shell-launchers.xml:70 msgid "Open new window of pinned app 7" msgstr "고정 앱 7의 새 창을 엽니다" #: data/50-gnome-shell-launchers.xml:74 msgid "Open new window of pinned app 8" msgstr "고정 앱 8의 새 창을 엽니다" #: data/50-gnome-shell-launchers.xml:78 msgid "Open new window of pinned app 9" msgstr "고정 앱 9의 새 창을 엽니다" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2274 msgid "Screenshots" msgstr "스크린샷" #: data/50-gnome-shell-screenshots.xml:9 #: data/org.gnome.shell.gschema.xml.in:287 msgid "Take a screenshot interactively" msgstr "대화식으로 스크린샷 찍기" #: data/50-gnome-shell-screenshots.xml:12 #: data/org.gnome.shell.gschema.xml.in:299 msgid "Take a screenshot" msgstr "스크린샷 찍기" #: data/50-gnome-shell-screenshots.xml:15 #: data/org.gnome.shell.gschema.xml.in:295 msgid "Take a screenshot of a window" msgstr "창의 스크린샷 찍기" #: data/50-gnome-shell-screenshots.xml:18 #: data/org.gnome.shell.gschema.xml.in:291 msgid "Record a screencast interactively" msgstr "대화식으로 스크린캐스트 녹화" #: data/50-gnome-shell-system.xml:6 js/ui/messageTray.js:1298 msgid "System" msgstr "시스템" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "알림 목록 표시" #: data/50-gnome-shell-system.xml:12 msgid "Open the quick settings menu" msgstr "빠른 설정 메뉴 열기" #: data/50-gnome-shell-system.xml:15 msgid "Focus the active notification" msgstr "현재 알림에 포커스" #: data/50-gnome-shell-system.xml:18 msgid "Show the overview" msgstr "요약 보기" #: data/50-gnome-shell-system.xml:21 msgid "Show all apps" msgstr "모든 앱 표시" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "그놈 셸" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "창 관리 및 앱 실행" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "Alt-F2에서 개발 및 테스트용 내부 기능 사용 가능" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "Alt-F2 대화 상자에서 내부 디버깅 및 감시 기능에 접근을 허용합니다." #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "사용할 확장의 UUID 목록" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "그놈 셸 확장에는 UUID 속성이 있습니다. 이 키는 읽어들일 확장의 UUID를 나열합" "니다. 읽어들이려는 확장은 모두 이 목록에 들어 있어야 합니다. EnableExtension " "및 DisableExtension D-버스 메소드를 이용해 이 목록을 조작할 수도 있습니다." #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "사용하지 않도록 강제한 확장의 UUID 목록" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" "그놈 셸 확장에는 UUID 속성이 있습니다. 이 키는 사용하지 않을 확장의 UUID를 나" "열합니다. 현재 모드의 일부로 해당 확장을 읽어들이더라도 사용하지 않습니다. " "org.gnome.Shell의 EnableExtension 및 DisableExtension D-버스 메소드를 이용해 " "이 목록을 조작할 수도 있습니다. 이 키가 “enabled-extensions” 설정보다 우선합" "니다." #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "사용자 확장 기능 사용하지 않기" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" "“enabled-extension” 설정에 영향을 미치지 않고, 사용자가 켠 확장 기능을 모두 " "사용하지 않습니다." #: data/org.gnome.shell.gschema.xml.in:45 msgid "Allow extension installation" msgstr "확장 설치 허용" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "Allow users to install extensions in their home folder. If disabled, the " "InstallRemoteExtension D-Bus method will fail, and extensions are only " "loaded from system directories on startup. It does not affect extensions " "that are already loaded, so a change only takes full effect on the next " "login." msgstr "" "사용자가 홈 폴더에 확장 기능을 설치할 수 있게 허용합니다. 허용하지 않을 경" "우, InstallRemoteExtension D-Bus 메서드가 실패할 것이므로, 확장은 시작할 때 " "시스템 디렉터리에서만 읽어들입니다. 이 기능은 이미 읽어들인 확장 기능에는 적" "용되지 않으므로, 이 설정을 바꿔도 다음번 로그인할 때만 완전히 적용됩니다." #: data/org.gnome.shell.gschema.xml.in:56 msgid "Disables the validation of extension version compatibility" msgstr "확장의 버전 호환성 검사 하지 않기" #: data/org.gnome.shell.gschema.xml.in:57 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "그놈 셸에서 현재 실행 중인 버전을 지원하는 확장 기능만 읽어들입니다. 이 옵션" "을 사용하면 이 버전 검사를 하지 않고, 지원한다고 지정된 버전에 관계없이 모든 " "확장 기능을 읽어들입니다." #: data/org.gnome.shell.gschema.xml.in:65 msgid "List of desktop file IDs for favorite applications" msgstr "즐겨찾기 앱의 데스크톱 파일 ID 목록" #: data/org.gnome.shell.gschema.xml.in:66 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "여기 들어 있는 ID에 해당하는 앱은 즐겨찾기 영역에 표시됩니다." #: data/org.gnome.shell.gschema.xml.in:73 msgid "History for command (Alt-F2) dialog" msgstr "명령어 대화 상자에(Alt-F2) 기록 기능" #. Translators: looking glass is a debugger and inspector tool, see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/docs/looking-glass.md #: data/org.gnome.shell.gschema.xml.in:78 msgid "History for the looking glass dialog" msgstr "돋보기 대화 상자에 기록 기능" #: data/org.gnome.shell.gschema.xml.in:82 msgid "Always show the “Log Out” action in the system menu" msgstr "시스템 메뉴에서 항상 “로그아웃” 메뉴 항목 표시" #: data/org.gnome.shell.gschema.xml.in:83 msgid "" "This key overrides the automatic hiding of the “Log out” action in the " "system menu for logged-in situations where there is a single, local, non-" "system user and only a single available session type (e.g. GNOME on Wayland)." msgstr "" "단일 사용자, 로컬 사용자, 시스템 사용자가 아니고 단일 사용자만 가능한 세션 종" "류인 경우 (웨일랜드에서 그놈), 로그인한 상태에서 시스템 메뉴의 “로그아웃” 동" "작은 자동으로 감춰지는데, 이 키를 설정하면 이 기능을 바꿀 수 있습니다." #: data/org.gnome.shell.gschema.xml.in:92 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "암호화 볼륨을 마운트하거나 원격 파일 시스템을 마운트할 때 암호를 저장할지 여" "부" #: data/org.gnome.shell.gschema.xml.in:93 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "암호화된 저장 장치나 원격 파일 시스템을 마운트하는 경우 암호를 입력해야 합니" "다. 암호를 저장할 수 있으면 “암호 저장” 확인란이 나타납니다. 이 키에서는 이 " "확인란의 기본 상태를 지정합니다." #: data/org.gnome.shell.gschema.xml.in:102 msgid "The last selected non-default power profile" msgstr "최근 선택한 (기본값이 아닌) 전력 프로필" #: data/org.gnome.shell.gschema.xml.in:103 msgid "" "Some systems support more than two power profiles. In order to still support " "toggling between two profiles, this key records the last selected non-" "default profile." msgstr "" "일부 시스템은 여러 가지의 전력 프로필을 지원합니다. 두 개의 프로필 사이를 토" "글하는 기능을 지원하려고, 이 키는 최근 선택한 기본값이 아닌 전력 프로필을 저" "장합니다." #: data/org.gnome.shell.gschema.xml.in:111 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "“환영합니다 — 그놈” 대화 상자가 표시된 최근 버전" #: data/org.gnome.shell.gschema.xml.in:112 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can " "be used to effectively disable the dialog." msgstr "" "이 키는 “환영합니다 — 그놈” 대화 상자가 최근 표시된 버전을 지정합니다. 빈 문" "자열이면 가능한 가장 오래된 버전을 뜻하고, 매우 큰 번호는 아직 없는 버전을 뜻" "합니다. 매우 큰 번호를 써서 이 대화상자를 표시하지 않는 방법으로 사용할 수 있" "습니다." #: data/org.gnome.shell.gschema.xml.in:145 msgid "Layout of the app picker" msgstr "앱 고르기의 배치" #: data/org.gnome.shell.gschema.xml.in:146 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" msgstr "" "앱 고르기의 배치. 배열의 각 항목은 페이지입니다. 페이지는 그놈 셸에 나타나는 " "순서로 저장됩니다. 각 페이지에는 “application id” → 'data'의 쌍이 하나 들어 " "있습니다. 현재 다음 값이 'data'로 저장됩니다: • “position”: 페이지에서 앱 아" "이콘의 위치" #: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:172 msgid "Keybinding to shift between overview states" msgstr "현재 활동 요약 상태를 전환하는 키 바인딩" #: data/org.gnome.shell.gschema.xml.in:166 msgid "Keybinding to shift between session, window picker and app grid" msgstr "세션, 창 고르기, 앱 그리드 사이에서 전환하는 키바인딩" #: data/org.gnome.shell.gschema.xml.in:173 msgid "Keybinding to shift between app grid, window picker and session" msgstr "앱 그리드, 창 고르기, 세션 사이에서 전환하는 키바인딩" #: data/org.gnome.shell.gschema.xml.in:179 msgid "Keybinding to open the “Show Applications” view" msgstr "“앱 보기” 뷰를 여는 키 바인딩" #: data/org.gnome.shell.gschema.xml.in:180 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "현재 활동 요약의 “앱 보기” 뷰를 여는 키 바인딩." #: data/org.gnome.shell.gschema.xml.in:187 msgid "Keybinding to open the overview" msgstr "현재 활동 요약을 여는 키 바인딩" #: data/org.gnome.shell.gschema.xml.in:188 msgid "Keybinding to open the Activities Overview." msgstr "현재 활동 요약을 여는 키 바인딩." #: data/org.gnome.shell.gschema.xml.in:194 msgid "Keybinding to toggle the visibility of the notification list" msgstr "알림 목록 보이기를 토글하는 키 바인딩" #: data/org.gnome.shell.gschema.xml.in:195 msgid "Keybinding to toggle the visibility of the notification list." msgstr "알림 목록 보이기를 토글하는 키 바인딩." #: data/org.gnome.shell.gschema.xml.in:201 msgid "Keybinding to toggle the quick settings menu" msgstr "빠른 설정 메뉴를 토글하는 키 바인딩" #: data/org.gnome.shell.gschema.xml.in:202 msgid "Keybinding to toggle the quick settings menu." msgstr "빠른 설정 메뉴를 토글하는 키 바인딩." #: data/org.gnome.shell.gschema.xml.in:208 msgid "Keybinding to focus the active notification" msgstr "현재 알림에 포커스하는 키 바인딩" #: data/org.gnome.shell.gschema.xml.in:209 msgid "Keybinding to focus the active notification." msgstr "현재 알림에 포커스하는 키 바인딩." #: data/org.gnome.shell.gschema.xml.in:215 msgid "Switch to application 1" msgstr "앱 1로 전환" #: data/org.gnome.shell.gschema.xml.in:219 msgid "Switch to application 2" msgstr "앱 2로 전환" #: data/org.gnome.shell.gschema.xml.in:223 msgid "Switch to application 3" msgstr "앱 3로 전환" #: data/org.gnome.shell.gschema.xml.in:227 msgid "Switch to application 4" msgstr "앱 4로 전환" #: data/org.gnome.shell.gschema.xml.in:231 msgid "Switch to application 5" msgstr "앱 5로 전환" #: data/org.gnome.shell.gschema.xml.in:235 msgid "Switch to application 6" msgstr "앱 6으로 전환" #: data/org.gnome.shell.gschema.xml.in:239 msgid "Switch to application 7" msgstr "앱 7로 전환" #: data/org.gnome.shell.gschema.xml.in:243 msgid "Switch to application 8" msgstr "앱 8로 전환" #: data/org.gnome.shell.gschema.xml.in:247 msgid "Switch to application 9" msgstr "앱 9로 전환" #: data/org.gnome.shell.gschema.xml.in:251 msgid "Open a new instance of application 1" msgstr "앱 1의 새 인스턴스로 전환" #: data/org.gnome.shell.gschema.xml.in:255 msgid "Open a new instance of application 2" msgstr "앱 2의 새 인스턴스로 전환" #: data/org.gnome.shell.gschema.xml.in:259 msgid "Open a new instance of application 3" msgstr "앱 3의 새 인스턴스로 전환" #: data/org.gnome.shell.gschema.xml.in:263 msgid "Open a new instance of application 4" msgstr "앱 4의 새 인스턴스로 전환" #: data/org.gnome.shell.gschema.xml.in:267 msgid "Open a new instance of application 5" msgstr "앱 5의 새 인스턴스로 전환" #: data/org.gnome.shell.gschema.xml.in:271 msgid "Open a new instance of application 6" msgstr "앱 6의 새 인스턴스로 전환" #: data/org.gnome.shell.gschema.xml.in:275 msgid "Open a new instance of application 7" msgstr "앱 7의 새 인스턴스로 전환" #: data/org.gnome.shell.gschema.xml.in:279 msgid "Open a new instance of application 8" msgstr "앱 8의 새 인스턴스로 전환" #: data/org.gnome.shell.gschema.xml.in:283 msgid "Open a new instance of application 9" msgstr "앱 9의 새 인스턴스로 전환" #: data/org.gnome.shell.gschema.xml.in:308 #: data/org.gnome.shell.gschema.xml.in:335 msgid "Limit switcher to current workspace." msgstr "앱 전환을 현재 작업 공간에만 한정." #: data/org.gnome.shell.gschema.xml.in:309 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "참이면, 현재 작업 공간에 창이 있는 앱만 앱 전환 창에 표시합니다. 참이 아니면 " "모든 앱을 표시합니다." #: data/org.gnome.shell.gschema.xml.in:326 msgid "The application icon mode." msgstr "앱 아이콘 모드." #: data/org.gnome.shell.gschema.xml.in:327 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-only” " "(shows only the application icon) or “both”." msgstr "" "창 전환에서 창이 어떻게 표시될지 설정합니다. 가능한 값은: “thumbnail-only”(창" "의 섬네일만 표시), “app-icon-only”(앱 아이콘만 표시), “both”(모두)." #: data/org.gnome.shell.gschema.xml.in:336 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "참이면, 현재 작업 공간에 창이 있는 창만 창 전환 창에 표시합니다. 거짓이면 모" "든 창을 표시합니다." #: data/org.gnome.shell.gschema.xml.in:346 msgid "Locations" msgstr "위치 목록" #: data/org.gnome.shell.gschema.xml.in:347 msgid "The locations to show in world clocks" msgstr "세계 시계에서 표시할 위치 목록" #: data/org.gnome.shell.gschema.xml.in:357 msgid "Automatic location" msgstr "자동 위치" #: data/org.gnome.shell.gschema.xml.in:358 msgid "Whether to fetch the current location or not" msgstr "현재 위치를 가져올지 여부" #: data/org.gnome.shell.gschema.xml.in:365 msgid "Location" msgstr "위치" #: data/org.gnome.shell.gschema.xml.in:366 msgid "The location for which to show a forecast" msgstr "날씨 표시에 사용할 위치" #. Keep in sync with subprojects/extensions-app #: data/org.gnome.Shell.Extensions.desktop.in.in:5 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/data/ui/extensions-window.ui:57 msgid "Extensions" msgstr "확장" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "네트워크 로그인" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:275 msgid "Something’s gone wrong" msgstr "무언가 잘못되었습니다" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" "죄송하지만 문제가 발생했습니다. 이 확장의 설정을 표시할 수 없습니다. 확장 개" "발자에게 이 문제를 알려주시기를 추천합니다." #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "기술적 정보" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "홈페이지" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 msgid "Visit extension homepage" msgstr "확장 홈페이지 보기" #: js/gdm/authPrompt.js:151 js/gdm/loginDialog.js:465 #: js/ui/audioDeviceSelection.js:66 js/ui/components/networkAgent.js:113 #: js/ui/components/polkitAgent.js:144 js/ui/endSessionDialog.js:437 #: js/ui/extensionDownloader.js:276 js/ui/shellMountOperation.js:382 #: js/ui/shellMountOperation.js:392 msgid "Cancel" msgstr "취소" #: js/gdm/authPrompt.js:317 js/ui/components/networkAgent.js:213 #: js/ui/components/networkAgent.js:233 js/ui/components/networkAgent.js:265 #: js/ui/components/networkAgent.js:298 js/ui/components/networkAgent.js:337 #: js/ui/components/networkAgent.js:350 js/ui/components/polkitAgent.js:286 #: js/ui/shellMountOperation.js:332 msgid "Password" msgstr "암호" #: js/gdm/loginDialog.js:326 msgid "Choose Session" msgstr "세션 선택" #. Translators: is running for #: js/gdm/loginDialog.js:423 #, javascript-format msgid "" "Remote login is not possible because a remote session is already running for " "%s. To login remotely, you must log out from the remote session or force " "stop it." msgstr "" "원격 세션이 이미 %s에 대해 동작 중이므로 원격 로그인이 불가능합니다. 원격으" "로 로그인하려면 지금 원격 세션에서 로그아웃하거나 세션을 강제로 중지하십시오." #. Translators: is running for #: js/gdm/loginDialog.js:426 #, javascript-format msgid "" "Login is not possible because a remote session is already running for %s. To " "login, you must log out from the remote session or force stop it." msgstr "" "원격 세션이 이미 %s에 대해 동작 중이므로 로그인이 불가능합니다. 로그인하려면 " "지금 원격 세션에서 로그아웃하거나 세션을 강제로 중지하십시오." #. Translators: is running for #: js/gdm/loginDialog.js:429 #, javascript-format msgid "" "Remote login is not possible because a local session is already running for " "%s. To login remotely, you must log out from the local session or force stop " "it." msgstr "" "로컬 세션이 이미 %s에 대해 동작 중이므로 원격 로그인이 불가능합니다. 원격으" "로 로그인하려면 지금 로컬 세션에서 로그아웃하거나 세션을 강제로 중지하십시오." #. Translators: is running for #: js/gdm/loginDialog.js:432 #, javascript-format msgid "" "Login is not possible because a session is already running for %s. To login, " "you must log out from the session or force stop it." msgstr "" "로컬 세션이 이미 %s에 대해 동작 중이므로 로그인이 불가능합니다. 로그인하려면 " "지금 세션에서 로그아웃하거나 세션을 강제로 중지하십시오." #: js/gdm/loginDialog.js:441 msgid "Session Already Running" msgstr "이미 동작 중인 세션" #: js/gdm/loginDialog.js:453 msgid "" "Force stopping will quit any running apps and processes, and could result in " "data loss" msgstr "강제로 중지하면 실행 중인 앱과 프로세스가 중지되므로, 데이터를 잃어버릴 수 있습니다" #: js/gdm/loginDialog.js:473 msgid "Force Stop" msgstr "강제로 중지" #: js/gdm/loginDialog.js:541 msgid "Not listed?" msgstr "목록에 없습니까?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:1009 #, javascript-format msgid "(e.g., user or %s)" msgstr "(예를 들어, 사용자 또는 %s)" #: js/gdm/loginDialog.js:1014 js/ui/components/networkAgent.js:257 #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:326 msgid "Username" msgstr "사용자 이름" #: js/gdm/loginDialog.js:1080 msgid "Login Attempt Timed Out" msgstr "로그인 시도 제한시간 초과" #: js/gdm/loginDialog.js:1081 msgid "Login took too long, please try again" msgstr "로그인이 너무 오래 걸렸습니다. 다시 해 보십시오" #: js/gdm/loginDialog.js:1426 msgid "Login Window" msgstr "로그인 창" #: js/gdm/util.js:496 msgid "Authentication error" msgstr "인증 오류" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:727 msgid "(or swipe finger across reader)" msgstr "(또는 지문을 센서에 문지르십시오)" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:732 msgid "(or place finger on reader)" msgstr "(또는 손가락을 센서에 대십시오)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:91 msgctxt "search-result" msgid "Power Off" msgstr "컴퓨터 끄기" # 주의: 키워드 번역 #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:94 msgid "power off;poweroff;shutdown;halt;stop" msgstr "power off;poweroff;전원;끄기;shutdown;셧다운;halt;stop;중지" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:99 msgctxt "search-result" msgid "Restart" msgstr "다시 시작" # 주의: 키워드 번역 #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:102 msgid "reboot;restart;" msgstr "reboot;restart;재시작;다시;리부팅" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:107 msgctxt "search-result" msgid "Lock Screen" msgstr "화면 잠그기" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:110 msgid "lock screen" msgstr "화면 잠그기" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:115 msgctxt "search-result" msgid "Log Out" msgstr "로그아웃" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:118 msgid "logout;log out;sign off" msgstr "logout;로그아웃;log out;로그 아웃;sign off;나가기" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:123 msgctxt "search-result" msgid "Suspend" msgstr "절전" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:126 msgid "suspend;sleep" msgstr "suspend;sleep;절전;슬립;서스펜드" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:131 msgctxt "search-result" msgid "Switch User" msgstr "사용자 바꾸기" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:134 msgid "switch user" msgstr "사용자 바꾸기" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:141 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "" "lock orientation;방향 잠금;unlock orientation;방향 잠금 해제;screen;화면;" "rotation;회전" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:146 msgctxt "search-result" msgid "Take a Screenshot" msgstr "스크린샷 찍기" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:149 msgid "screenshot;screencast;snip;capture;record" msgstr "" "screenshot;스크린샷;screencast;스크린캐스트;snip;스닙;capture;캡쳐;record;녹" "화" #: js/misc/systemActions.js:249 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "화면 회전 잠금 해제" #: js/misc/systemActions.js:250 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "화면 회전 잠금" #: js/misc/util.js:130 msgid "Command not found" msgstr "명령이 없습니다" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:170 msgid "Could not parse command:" msgstr "명령어를 파싱할 수 없습니다:" #: js/misc/util.js:178 #, javascript-format msgid "Execution of “%s” failed:" msgstr "“%s” 실행이 실패했습니다:" #: js/misc/dateUtils.js:69 msgid "Just now" msgstr "방금" #: js/misc/dateUtils.js:72 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d분 전" #: js/misc/dateUtils.js:79 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d시간 전" #: js/misc/dateUtils.js:85 js/ui/dateMenu.js:183 msgid "Yesterday" msgstr "어제" #: js/misc/dateUtils.js:88 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d일 전" #: js/misc/dateUtils.js:95 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d주 전" #: js/misc/dateUtils.js:102 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%d달 전" #: js/misc/dateUtils.js:108 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "%d년 전" #. Translators: Time in 24h format #: js/misc/dateUtils.js:155 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/dateUtils.js:161 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "어제, %H:%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/dateUtils.js:167 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, %H:%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/dateUtils.js:173 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%B %-d일, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/dateUtils.js:179 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%Y년 %B %-d일, %H∶%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/dateUtils.js:184 msgid "%l∶%M %p" msgstr "%p %l∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/dateUtils.js:190 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "어제, %p %l∶%M" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/dateUtils.js:196 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %p %l∶%M" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/dateUtils.js:202 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%B %-d일, %p %l∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/dateUtils.js:208 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%Y년 %B %-d일, %p %l∶%M" #: js/portalHelper/main.js:98 msgid "Your connection seems to be secure" msgstr "연결이 안전해 보입니다" #: js/portalHelper/main.js:104 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "이 핫스팟 로그인에 대한 연결은 안전하지 않습니다. 암호나 기타 이 페이지에서 " "입력한 정보를 주변 사람이 볼 수 있습니다." #: js/portalHelper/main.js:115 msgid "Hotspot Login" msgstr "핫스팟 로그인" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:51 js/ui/inhibitShortcutsDialog.js:92 msgid "Deny" msgstr "거부" #: js/ui/accessDialog.js:52 js/ui/inhibitShortcutsDialog.js:101 msgid "Allow" msgstr "허용" #: js/ui/appDisplay.js:1769 msgid "Unnamed Folder" msgstr "이름 없는 폴더" #: js/ui/appFavorites.js:163 #, javascript-format msgid "%s has been pinned to the dash." msgstr "%s을(를) 대시보드에 고정했습니다." #: js/ui/appFavorites.js:194 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "%s을(를) 대시보드에서 고정 해제했습니다." #: js/ui/appFavorites.js:208 js/ui/main.js:281 msgid "Undo" msgstr "실행 취소" #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:49 msgid "Open Windows" msgstr "열린 창" #: js/ui/appMenu.js:57 msgid "New Window" msgstr "새 창" # 주의: "Show ..." 형태지만 보이기로 번역하지 않는다 #: js/ui/appMenu.js:84 msgid "App Details" msgstr "앱 자세히 보기" #: js/ui/appMenu.js:100 msgid "Quit" msgstr "끝내기" #: js/ui/appMenu.js:160 js/ui/dash.js:248 msgid "Unpin" msgstr "고정 해제" #: js/ui/appMenu.js:161 msgid "Pin to Dash" msgstr "대시보드에 고정" #: js/ui/appMenu.js:178 msgid "Launch using Integrated Graphics Card" msgstr "내장 그래픽 카드를 사용해 시작" #: js/ui/appMenu.js:179 msgid "Launch using Discrete Graphics Card" msgstr "외장 그래픽 카드를 사용해 시작" #: js/ui/audioDeviceSelection.js:46 msgid "Select Audio Device" msgstr "오디오 장치 선택" #: js/ui/audioDeviceSelection.js:61 js/ui/status/volume.js:81 msgid "Sound Settings" msgstr "소리 설정" #: js/ui/audioDeviceSelection.js:74 msgid "Headphones" msgstr "헤드폰" #: js/ui/audioDeviceSelection.js:76 msgid "Headset" msgstr "헤드셋" #: js/ui/audioDeviceSelection.js:78 js/ui/status/volume.js:356 msgid "Microphone" msgstr "마이크" #: js/ui/backgroundMenu.js:13 msgid "Change Background…" msgstr "배경 바꾸기…" #: js/ui/backgroundMenu.js:15 msgid "Display Settings" msgstr "디스플레이 설정" #: js/ui/backgroundMenu.js:16 msgid "Settings" msgstr "설정" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:37 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:63 msgctxt "grid sunday" msgid "S" msgstr "일" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:65 msgctxt "grid monday" msgid "M" msgstr "월" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:67 msgctxt "grid tuesday" msgid "T" msgstr "화" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:69 msgctxt "grid wednesday" msgid "W" msgstr "수" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:71 msgctxt "grid thursday" msgid "T" msgstr "목" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:73 msgctxt "grid friday" msgid "F" msgstr "금" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:75 msgctxt "grid saturday" msgid "S" msgstr "토" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:426 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:436 msgid "%OB %Y" msgstr "%Y년 %OB" #: js/ui/calendar.js:498 msgid "Previous month" msgstr "이전 달" #: js/ui/calendar.js:516 msgid "Next month" msgstr "다음 달" # 달력의 날짜 포맷 #: js/ui/calendar.js:667 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%e" #: js/ui/calendar.js:726 msgid "Week %V" msgstr "주 %V" #: js/ui/calendar.js:918 msgid "No Notifications" msgstr "알림 없음" #: js/ui/calendar.js:974 msgid "Do Not Disturb" msgstr "방해 금지" #: js/ui/calendar.js:995 msgid "Clear" msgstr "지우기" #: js/ui/calendar.js:999 msgctxt "action" msgid "Clear all notifications" msgstr "모든 알림 지우기" #. Translators: %s is an application name #: js/ui/closeDialog.js:42 #, javascript-format msgid "“%s” Is Not Responding" msgstr "“%s” 앱이 응답하지 않습니다" #: js/ui/closeDialog.js:43 msgid "" "You may choose to wait a short while for it to continue or force the app to " "quit entirely" msgstr "좀 더 기다려서 계속 할 수도 있고, 강제로 앱을 끝낼 수도 있습니다" #: js/ui/closeDialog.js:71 msgid "Force Quit" msgstr "강제로 끝내기" #: js/ui/closeDialog.js:76 msgid "Wait" msgstr "기다리기" #: js/ui/components/automountManager.js:82 msgid "External drive connected" msgstr "외부 드라이브 연결" #: js/ui/components/automountManager.js:94 msgid "External drive disconnected" msgstr "외부 드라이브 연결 끊김" #: js/ui/components/automountManager.js:208 msgid "Unable to unlock volume" msgstr "볼륨을 잠글 수 없습니다" #: js/ui/components/automountManager.js:209 msgid "The installed udisks version does not support the PIM setting" msgstr "설치한 버전의 udisks는 PIM 설정을 지원하지 않습니다" #. Translators: %s is the name of a partition on a external drive #: js/ui/components/autorunManager.js:189 #, javascript-format msgid "“%s” connected" msgstr "“%s” 연결됨" #: js/ui/components/autorunManager.js:190 msgid "Disk can now be used" msgstr "이제 디스크를 사용할 수 있습니다" #: js/ui/components/autorunManager.js:202 #, javascript-format msgid "Open with %s" msgstr "%s 앱으로 열기" #: js/ui/components/networkAgent.js:95 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router" msgstr "다른 방법으로 라우터의 “WPS” 단추를 눌러서 연결할 수 있습니다" #: js/ui/components/networkAgent.js:107 js/ui/status/bluetooth.js:245 #: js/ui/status/network.js:360 js/ui/status/network.js:444 msgid "Connect" msgstr "연결" #: js/ui/components/networkAgent.js:222 msgid "Key" msgstr "키" #: js/ui/components/networkAgent.js:273 js/ui/components/networkAgent.js:312 msgid "Private key password" msgstr "개인 키 암호" #: js/ui/components/networkAgent.js:306 msgid "Identity" msgstr "신원" #: js/ui/components/networkAgent.js:332 msgid "Service" msgstr "서비스" #: js/ui/components/networkAgent.js:370 js/ui/components/networkAgent.js:406 #: js/ui/components/networkAgent.js:743 js/ui/components/networkAgent.js:764 msgid "Authentication required" msgstr "인증 필요" #: js/ui/components/networkAgent.js:371 js/ui/components/networkAgent.js:744 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network “%s”" msgstr "“%s” 무선 네트워크에 연결하려면 암호 또는 암호화 키가 필요합니다" #: js/ui/components/networkAgent.js:375 js/ui/components/networkAgent.js:748 msgid "Wired 802.1X authentication" msgstr "유선 802.1X 인증" #: js/ui/components/networkAgent.js:378 msgid "Network name" msgstr "네트워크 이름" #: js/ui/components/networkAgent.js:386 js/ui/components/networkAgent.js:752 msgid "DSL authentication" msgstr "인증이 필요합니다" #: js/ui/components/networkAgent.js:393 js/ui/components/networkAgent.js:757 msgid "PIN code required" msgstr "PIN 코드가 필요합니다" #: js/ui/components/networkAgent.js:394 js/ui/components/networkAgent.js:758 msgid "PIN code is needed for the mobile broadband device" msgstr "휴대전화 네트워크 장치를 사용하려면 PIN 코드가 필요합니다" #: js/ui/components/networkAgent.js:396 msgid "PIN" msgstr "PIN" #: js/ui/components/networkAgent.js:407 js/ui/components/networkAgent.js:749 #: js/ui/components/networkAgent.js:753 js/ui/components/networkAgent.js:765 #: js/ui/components/networkAgent.js:769 #, javascript-format msgid "A password is required to connect to “%s”" msgstr "“%s”에 연결하려면 암호가 필요합니다" #: js/ui/components/networkAgent.js:768 msgid "VPN password" msgstr "VPN 암호" #: js/ui/components/polkitAgent.js:44 msgid "Authentication Required" msgstr "인증이 필요합니다" #: js/ui/components/polkitAgent.js:84 msgid "Administrator" msgstr "관리자" #: js/ui/components/polkitAgent.js:149 msgid "Authenticate" msgstr "인증" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:263 js/ui/shellMountOperation.js:415 msgid "Sorry, that didn’t work. Please try again." msgstr "죄송합니다. 동작하지 않았습니다. 다시 시도하십시오." #: js/ui/ctrlAltTab.js:23 js/ui/overviewControls.js:404 msgid "Windows" msgstr "창" #: js/ui/dash.js:204 js/ui/dash.js:250 msgid "Show Apps" msgstr "앱 표시" #. Translators: this is the name of the dock/favorites area on #. the bottom of the overview #: js/ui/dash.js:408 msgid "Dash" msgstr "대시보드" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:99 msgid "%B %-d %Y" msgstr "%Y년 %B %-d일" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:106 msgid "%A %B %e %Y" msgstr "%Y년 %B %e일 %A" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:172 msgctxt "calendar heading" msgid "%B %-d" msgstr "%B %-d일" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:175 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%Y년 %B %-d일" #: js/ui/dateMenu.js:181 msgid "Today" msgstr "오늘" #: js/ui/dateMenu.js:185 msgid "Tomorrow" msgstr "내일" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:216 msgctxt "event list time" msgid "All Day" msgstr "종일" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:238 msgid "%m/%d" msgstr "%m/%d" #: js/ui/dateMenu.js:289 msgid "No Events" msgstr "행사 없음" #: js/ui/dateMenu.js:411 msgid "Add World Clocks…" msgstr "세계 시계 추가…" #: js/ui/dateMenu.js:412 msgid "World Clocks" msgstr "세계 시계" #: js/ui/dateMenu.js:702 msgid "Loading…" msgstr "읽어들이는 중…" #: js/ui/dateMenu.js:712 msgid "Go Online for Weather Information" msgstr "날씨 정보를 온라인으로 가져옵니다" #: js/ui/dateMenu.js:714 msgid "Weather Information Unavailable" msgstr "날씨 정보를 사용할 수 없습니다" #: js/ui/dateMenu.js:724 msgid "Weather" msgstr "날씨" #: js/ui/dateMenu.js:726 msgid "Select Weather Location…" msgstr "날씨 위치를 선택하십시오…" #: js/ui/endSessionDialog.js:47 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "%s 로그아웃" #: js/ui/endSessionDialog.js:48 msgctxt "title" msgid "Log Out" msgstr "로그아웃" #: js/ui/endSessionDialog.js:51 #, javascript-format msgid "%s will be logged out automatically in %d second" msgid_plural "%s will be logged out automatically in %d seconds" msgstr[0] "%s 사용자가 %d초 뒤에 자동으로 로그아웃합니다" #: js/ui/endSessionDialog.js:57 #, javascript-format msgid "You will be logged out automatically in %d second" msgid_plural "You will be logged out automatically in %d seconds" msgstr[0] "%d초 뒤에 자동으로 로그아웃합니다" #: js/ui/endSessionDialog.js:64 msgctxt "button" msgid "Log Out" msgstr "로그아웃" #: js/ui/endSessionDialog.js:70 js/ui/status/system.js:174 msgctxt "title" msgid "Power Off" msgstr "컴퓨터 끄기" #: js/ui/endSessionDialog.js:71 msgctxt "title" msgid "Install Updates & Power Off" msgstr "업데이트 설치 및 컴퓨터 끄기" #: js/ui/endSessionDialog.js:74 #, javascript-format msgid "The system will power off automatically in %d second" msgid_plural "The system will power off automatically in %d seconds" msgstr[0] "시스템이 %d초 뒤에 자동으로 꺼집니다" #: js/ui/endSessionDialog.js:78 js/ui/endSessionDialog.js:97 msgctxt "checkbox" msgid "Install pending software updates" msgstr "대기 중인 소프트웨어 업데이트 설치" #: js/ui/endSessionDialog.js:82 msgctxt "button" msgid "Power Off" msgstr "컴퓨터 끄기" #: js/ui/endSessionDialog.js:89 msgctxt "title" msgid "Restart" msgstr "다시 시작" #: js/ui/endSessionDialog.js:90 msgctxt "title" msgid "Install Updates & Restart" msgstr "업데이트 설치 및 컴퓨터 다시 시작" #: js/ui/endSessionDialog.js:93 #, javascript-format msgid "The system will restart automatically in %d second" msgid_plural "The system will restart automatically in %d seconds" msgstr[0] "시스템이 %d초 뒤에 자동으로 다시 시작합니다" #: js/ui/endSessionDialog.js:101 msgctxt "button" msgid "Restart" msgstr "다시 시작" #: js/ui/endSessionDialog.js:109 msgctxt "title" msgid "Restart & Install Updates" msgstr "다시 시작 및 업데이트 설치" #: js/ui/endSessionDialog.js:112 #, javascript-format msgid "The system will automatically restart and install updates in %d second" msgid_plural "" "The system will automatically restart and install updates in %d seconds" msgstr[0] "시스템이 %d초 뒤에 자동으로 다시 시작하고 업데이트를 설치합니다" #: js/ui/endSessionDialog.js:119 js/ui/endSessionDialog.js:140 msgctxt "button" msgid "Restart & Install" msgstr "다시 시작 및 설치" #: js/ui/endSessionDialog.js:121 msgctxt "button" msgid "Install & Power Off" msgstr "설치 및 컴퓨터 끄기" #: js/ui/endSessionDialog.js:122 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "업데이트를 설치한 다음 컴퓨터를 끕니다" #: js/ui/endSessionDialog.js:129 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "다시 시작 및 업그레이드 설치" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:134 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "다시 시작한 뒤에 %s %s 버전을 설치합니다. 업그레이드 설치가 오래 걸릴 수도 있" "습니다: 백업을 하고 컴퓨터에 전원을 연결하십시오." #: js/ui/endSessionDialog.js:283 msgid "Low battery power: please plug in before installing updates" msgstr "배터리가 부족합니다: 업데이트를 설치하려면 전원을 연결하십시오" #: js/ui/endSessionDialog.js:292 msgid "Some applications are busy or have unsaved work" msgstr "일부 앱이 동작 중이거나 저장하지 않은 작업이 남아 있습니다" #: js/ui/endSessionDialog.js:297 msgid "Other users are logged in" msgstr "다른 사용자가 로그인 중입니다" #: js/ui/endSessionDialog.js:467 msgctxt "button" msgid "Boot Options" msgstr "부팅 옵션" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:672 #, javascript-format msgid "%s (remote)" msgstr "%s (원격)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:675 #, javascript-format msgid "%s (console)" msgstr "%s (콘솔)" #: js/ui/extensionDownloader.js:280 msgid "Install" msgstr "설치" #: js/ui/extensionDownloader.js:286 msgid "Install Extension" msgstr "확장 설치" #: js/ui/extensionDownloader.js:287 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "" "extensions.gnome.org 사이트에서 “%s” 확장을 다운로드해 설치하시겠습니까?" #: js/ui/extensionSystem.js:352 msgid "Extension Updates Available" msgstr "확장 업데이트가 있습니다" #: js/ui/extensionSystem.js:353 msgid "Extension updates are ready to be installed" msgstr "확장 업데이트 설치할 준비가 되었습니다" #: js/ui/inhibitShortcutsDialog.js:70 msgid "Allow inhibiting shortcuts" msgstr "바로 가기 금지 허용" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:73 #, javascript-format msgid "The app %s wants to inhibit shortcuts" msgstr "%s 앱이 바로 가기를 금지하려 합니다" #: js/ui/inhibitShortcutsDialog.js:74 msgid "An app wants to inhibit shortcuts" msgstr "앱이 바로 가기를 금지하려 합니다" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:81 #, javascript-format msgid "You can restore shortcuts by pressing %s" msgstr "%s 키를 누르면 바로 가기를 복구할 수 있습니다" #: js/ui/kbdA11yDialog.js:34 msgid "Slow Keys Turned On" msgstr "느린 키 켜짐" #: js/ui/kbdA11yDialog.js:35 msgid "Slow Keys Turned Off" msgstr "느린 키 꺼짐" #: js/ui/kbdA11yDialog.js:36 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "Shift 키를 8초 동안 누르고 있었습니다. 느린 키 기능의 바로 가기이고, 이렇게 " "하면 키보드 동작이 달라집니다." #: js/ui/kbdA11yDialog.js:42 msgid "Sticky Keys Turned On" msgstr "고정 키 켜짐" #: js/ui/kbdA11yDialog.js:43 msgid "Sticky Keys Turned Off" msgstr "고정 키 꺼짐" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "Shift 키를 5번 연속으로 눌렀습니다. 고정 키 기능의 바로 가기이고, 이렇게 하" "면 키보드 동작이 달라집니다." #: js/ui/kbdA11yDialog.js:47 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" "두 키를 동시에 누르거나, Shift 키를 5번 연속으로 눌렀습니다. 고정 키 기능을 " "끄는 바로 가기이고, 이렇게 하면 키보드 동작이 달라집니다." #: js/ui/kbdA11yDialog.js:57 msgid "Leave On" msgstr "계속 유지" #: js/ui/kbdA11yDialog.js:57 msgid "Turn On" msgstr "켜기" #: js/ui/kbdA11yDialog.js:67 js/ui/status/network.js:455 msgid "Turn Off" msgstr "끄기" #: js/ui/kbdA11yDialog.js:67 msgid "Leave Off" msgstr "그만두고 끄기" #: js/ui/keyboard.js:180 js/ui/status/keyboard.js:897 msgid "Keyboard Settings" msgstr "키보드 설정" #: js/ui/lookingGlass.js:727 msgid "No extensions installed" msgstr "확장을 설치하지 않았습니다" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:788 #, javascript-format msgid "%s has not emitted any errors" msgstr "%s에서 발생한 에러가 없습니다" #: js/ui/lookingGlass.js:794 msgid "Hide Errors" msgstr "오류 숨기기" #: js/ui/lookingGlass.js:798 js/ui/lookingGlass.js:875 msgid "Show Errors" msgstr "오류 보이기" #: js/ui/lookingGlass.js:807 msgid "Active" msgstr "활성화" #: js/ui/lookingGlass.js:810 msgid "Inactive" msgstr "비활성화" #: js/ui/lookingGlass.js:812 msgid "Error" msgstr "오류" #: js/ui/lookingGlass.js:814 msgid "Out of date" msgstr "오래 된 버전" #: js/ui/lookingGlass.js:816 msgid "Downloading" msgstr "다운로드 중" #: js/ui/lookingGlass.js:818 msgid "Deactivating" msgstr "활성화 해제 중" #: js/ui/lookingGlass.js:820 msgid "Activating" msgstr "활성화 중" #: js/ui/lookingGlass.js:853 msgid "View Source" msgstr "소스 보기" #: js/ui/lookingGlass.js:864 msgid "Web Page" msgstr "웹페이지" #: js/ui/main.js:277 msgid "System was put in unsafe mode" msgstr "시스템이 위험 모드에 들어가 있습니다" #: js/ui/main.js:278 msgid "Apps now have unrestricted access" msgstr "현재 앱에서 제한적인 접근만 할 수 있습니다" #: js/ui/main.js:338 msgid "Logged in as a privileged user" msgstr "관리자 권한으로 로그인" #: js/ui/main.js:339 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" "관리자 권한으로 세션을 시작하는 일은 보안 이유로 피해야 합니다. 할 수 있으면 " "일반 유저로 로그인해야 합니다." #: js/ui/main.js:387 msgid "Screen Lock disabled" msgstr "화면 잠금 사용하지 않음" #: js/ui/main.js:388 msgid "Screen Locking requires the GNOME display manager" msgstr "화면 잠금은 그놈 디스플레이 관리자가 필요합니다" #. Translators: this is the string displayed in the header when a message #. source doesn't have a name #: js/ui/messageList.js:374 msgid "Unknown App" msgstr "알 수 없는 앱" #: js/ui/messageTray.js:326 js/ui/messageTray.js:328 msgid "Notification sound" msgstr "알림 소리" #: js/ui/mpris.js:198 msgid "Unknown artist" msgstr "알 수 없는 음악가" #: js/ui/mpris.js:208 msgid "Unknown title" msgstr "알 수 없는 제목" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:328 msgid "Type to search" msgstr "검색하려면 입력하십시오" #: js/ui/overviewControls.js:392 msgid "Apps" msgstr "앱" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:33 msgid "Overview" msgstr "개요" #: js/ui/padOsd.js:98 msgid "New shortcut…" msgstr "새 바로 가기…" #: js/ui/padOsd.js:151 msgid "App defined" msgstr "정의한 앱" #: js/ui/padOsd.js:152 msgid "Show on-screen help" msgstr "화면 도움말 표시" #: js/ui/padOsd.js:153 msgid "Switch monitor" msgstr "모니터 바꾸기" #: js/ui/padOsd.js:154 msgid "Assign keystroke" msgstr "키 누르기 지정" #: js/ui/padOsd.js:223 msgid "Done" msgstr "마침" #: js/ui/padOsd.js:726 msgid "Edit…" msgstr "편집…" #: js/ui/padOsd.js:773 msgid "None" msgstr "없음" #: js/ui/padOsd.js:844 msgid "Press a button to configure" msgstr "설정하려면 단추를 누르십시오" #: js/ui/padOsd.js:845 msgid "Press Esc to exit" msgstr "나가려면 Esc를 누르십시오" #: js/ui/padOsd.js:848 msgid "Press any key to exit" msgstr "나가려면 아무 키나 누르십시오" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:423 msgid "Activities" msgstr "현재 활동" #: js/ui/panel.js:504 msgctxt "System menu in the top bar" msgid "System" msgstr "시스템" #: js/ui/panel.js:678 msgid "Top Bar" msgstr "맨 위 표시줄" #: js/ui/quickSettings.js:188 msgid "Open menu" msgstr "메뉴 열기" #: js/ui/runDialog.js:61 msgid "Run a Command" msgstr "명령 실행" #: js/ui/runDialog.js:76 msgid "Press ESC to close" msgstr "닫으려면 ESC를 누르십시오" #: js/ui/runDialog.js:241 msgid "Restart is not available on Wayland" msgstr "웨일랜드에서는 다시 시작 기능을 사용할 수 없습니다" #: js/ui/runDialog.js:246 msgid "Restarting…" msgstr "다시 시작하는 중…" #: js/ui/screenShield.js:233 msgid "GNOME needs to lock the screen" msgstr "그놈에서 화면을 잠궈야 합니다" #: js/ui/screenShield.js:274 js/ui/screenShield.js:667 msgid "Unable to lock" msgstr "잠글 수 없습니다" #: js/ui/screenShield.js:275 js/ui/screenShield.js:668 msgid "Lock was blocked by an app" msgstr "앱이 잠금을 막았습니다" #: js/ui/screenshot.js:1252 msgid "Selection" msgstr "선택" #: js/ui/screenshot.js:1262 msgid "Area Selection" msgstr "영역 선택" #: js/ui/screenshot.js:1267 msgid "Screen" msgstr "화면" #: js/ui/screenshot.js:1277 msgid "Screen Selection" msgstr "화면 선택" #: js/ui/screenshot.js:1282 msgid "Window" msgstr "창" #: js/ui/screenshot.js:1292 msgid "Window Selection" msgstr "창 선택" #. Translators: entry in the window right click menu. #: js/ui/screenshot.js:1317 js/ui/status/system.js:111 js/ui/windowMenu.js:28 msgid "Take Screenshot" msgstr "스크린샷 찍기" #: js/ui/screenshot.js:1333 msgid "Record Screen" msgstr "화면 녹화" #. Translators: since this string refers to an action, #. it needs to be phrased as a verb. #: js/ui/screenshot.js:1350 msgid "Capture" msgstr "스크린샷 찍기" #: js/ui/screenshot.js:1372 msgid "Show Pointer" msgstr "포인터 보이기" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1996 msgid "Screencasts" msgstr "스크린캐스트" # 주의: 파일 이름 #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast From 07-17-2013 10:00:46 PM" #: js/ui/screenshot.js:2001 #, no-c-format msgid "Screencast From %d %t" msgstr "스크린캐스트 %d %t" #. Translators: notification title. #: js/ui/screenshot.js:2047 msgid "Screencast recorded" msgstr "스크린캐스트 녹화함" #. Translators: notification title. #: js/ui/screenshot.js:2060 msgid "Screencast failed to start" msgstr "스크린캐스트 시작 실패함" #. Translators: notification title. #: js/ui/screenshot.js:2066 msgid "Screencast ended: Out of disk space" msgstr "스크린캐스트가 끝남: 디스크 공간 부족" #. We can encourage user to try again on service crashes since the #. recorder will auto-blocklist the pipeline that crashed. #. Translators: notification title. #: js/ui/screenshot.js:2072 msgid "Screencast ended unexpectedly, please try again" msgstr "스크린캐스트가 예상치 못하게 끝남, 다시 시도해 보십시오" #. Translators: notification title. #: js/ui/screenshot.js:2075 msgid "Screencast ended unexpectedly" msgstr "스크린캐스트가 예상치 못하게 끝남" #. Translators: notification source name. #: js/ui/screenshot.js:2085 js/ui/screenshot.js:2327 msgid "Screenshot" msgstr "스크린샷" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:2092 msgid "Click here to view the video." msgstr "여기를 눌러 비디오를 보십시오." # 주의: "Show ..." 형태지만 보이기로 번역하지 않는다 #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:2100 js/ui/screenshot.js:2343 msgid "Show in Files" msgstr "파일에서 보기" # 주의: 파일 이름 #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2287 #, javascript-format msgid "Screenshot From %s" msgstr "스크린샷 %s" #. Translators: notification title. #: js/ui/screenshot.js:2333 msgid "Screenshot captured" msgstr "스크린샷 찍음" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2335 msgid "You can paste the image from the clipboard." msgstr "클립보드에서 이미지를 붙여넣을 수 있습니다." #: js/ui/screenshot.js:2391 js/ui/screenshot.js:2555 msgid "Screenshot taken" msgstr "찍은 스크린샷" #: js/ui/search.js:829 msgid "Searching…" msgstr "검색하는 중…" #: js/ui/search.js:831 msgid "No results" msgstr "결과가 없습니다" #: js/ui/search.js:962 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "%d개 더" #: js/ui/searchController.js:87 #: subprojects/extensions-app/data/ui/extensions-window.ui:73 msgid "Search" msgstr "검색" #: js/ui/shellEntry.js:21 msgid "Copy" msgstr "복사" #: js/ui/shellEntry.js:26 msgid "Paste" msgstr "붙여넣기" #: js/ui/shellEntry.js:78 msgid "Show Text" msgstr "텍스트 보이기" #: js/ui/shellEntry.js:80 msgid "Hide Text" msgstr "텍스트 숨기기" #: js/ui/shellEntry.js:174 msgid "Caps lock is on" msgstr "Caps lock이 켜져 있습니다" # 오디오 볼륨 #: js/ui/shellMountOperation.js:286 msgid "Hidden Volume" msgstr "숨겨진 볼륨" #: js/ui/shellMountOperation.js:289 msgid "Windows System Volume" msgstr "윈도우 시스템 볼륨" #: js/ui/shellMountOperation.js:292 msgid "Uses Keyfiles" msgstr "keyfiles 사용" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:300 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead" msgstr "keyfiles를 사용하는 볼륨의 잠금을 해제하려면, 대신 %s 유틸리티를 사용하십시오" # gnome-disks #: js/ui/shellMountOperation.js:304 msgid "" "You need an external utility like Disks to unlock a volume that uses " "keyfiles" msgstr "" "키파일을 사용하는 볼륨의 잠금을 해제하려면 디스크와 같은 외부 도구가 " "필요합니다." #: js/ui/shellMountOperation.js:312 msgid "PIM Number" msgstr "PIM 번호" #: js/ui/shellMountOperation.js:371 msgid "Remember Password" msgstr "암호 저장" #: js/ui/shellMountOperation.js:386 msgid "Unlock" msgstr "잠금 풀기" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:400 #, javascript-format msgid "Open %s" msgstr "%s 앱 열기" #: js/ui/shellMountOperation.js:436 msgid "The PIM must be a number or empty" msgstr "PIM은 숫자거나 비어 있어야 합니다" #: js/ui/status/accessibility.js:34 msgid "Accessibility" msgstr "접근성" #: js/ui/status/accessibility.js:44 msgid "High Contrast" msgstr "고대비" #: js/ui/status/accessibility.js:47 msgid "Zoom" msgstr "크기 조정" #: js/ui/status/accessibility.js:54 msgid "Screen Reader" msgstr "화면 읽기" #: js/ui/status/accessibility.js:58 msgid "Screen Keyboard" msgstr "화면 키보드" #: js/ui/status/accessibility.js:62 msgid "Visual Alerts" msgstr "화면 알림" #: js/ui/status/accessibility.js:66 msgid "Sticky Keys" msgstr "고정 키" #: js/ui/status/accessibility.js:70 msgid "Slow Keys" msgstr "느린 키" #: js/ui/status/accessibility.js:74 msgid "Bounce Keys" msgstr "탄력 키" #: js/ui/status/accessibility.js:78 msgid "Mouse Keys" msgstr "마우스 키" #: js/ui/status/accessibility.js:83 msgid "Accessibility Settings" msgstr "접근성 설정" #: js/ui/status/accessibility.js:140 msgid "Large Text" msgstr "큰 글자" #: js/ui/status/autoRotate.js:14 msgid "Auto Rotate" msgstr "자동 회전" #: js/ui/status/backgroundApps.js:156 msgctxt "title" msgid "Background Apps" msgstr "백그라운드 앱" #: js/ui/status/backgroundApps.js:171 msgid "Apps known to be running without a window" msgstr "창 없이 실행한다고 알려진 앱" #: js/ui/status/backgroundApps.js:182 msgid "App Settings" msgstr "앱 설정" #: js/ui/status/backgroundApps.js:239 msgid "No Background Apps" msgstr "백그라운드 앱 없음" #: js/ui/status/backgroundApps.js:241 #, javascript-format msgid "%d Background App" msgid_plural "%d Background Apps" msgstr[0] "백그라운드 앱 %d개" #: js/ui/status/backlight.js:39 msgid "Keyboard Brightness" msgstr "키보드 밝기" #: js/ui/status/backlight.js:79 msgid "Off" msgstr "꺼짐" #: js/ui/status/backlight.js:80 msgid "Low" msgstr "낮게" #: js/ui/status/backlight.js:81 msgid "High" msgstr "높게" #: js/ui/status/backlight.js:147 js/ui/status/keyboard.js:879 msgid "Keyboard" msgstr "키보드" #: js/ui/status/bluetooth.js:245 js/ui/status/network.js:360 msgid "Disconnect" msgstr "연결 해제" #: js/ui/status/bluetooth.js:262 js/ui/status/bluetooth.js:264 msgid "Bluetooth" msgstr "블루투스" #: js/ui/status/bluetooth.js:287 js/ui/status/network.js:1900 msgid "Bluetooth Settings" msgstr "블루투스 설정" #: js/ui/status/bluetooth.js:334 msgid "No available or connected devices" msgstr "사용할 수 있거나 연결된 장치가 없습니다" #: js/ui/status/bluetooth.js:335 msgid "Turn on Bluetooth to connect to devices" msgstr "장치에 연결하려면 블루투스를 켜십시오" #. Translators: This is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:389 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d개 연결" #: js/ui/status/brightness.js:32 msgid "Brightness" msgstr "밝기" #: js/ui/status/darkMode.js:12 msgid "Dark Style" msgstr "어두운 스타일" #: js/ui/status/dwellClick.js:15 msgid "Single Click" msgstr "한번 누르기" #: js/ui/status/dwellClick.js:20 msgid "Double Click" msgstr "두번 누르기" #: js/ui/status/dwellClick.js:25 msgid "Drag" msgstr "끌기" #: js/ui/status/dwellClick.js:30 msgid "Secondary Click" msgstr "보조 누르기" #: js/ui/status/dwellClick.js:39 msgid "Dwell Click" msgstr "머무르면 누르기" #: js/ui/status/keyboard.js:896 msgid "Show Keyboard Layout" msgstr "키보드 배치 표시" #: js/ui/status/location.js:337 msgid "Allow location access" msgstr "위치 접근 허용" #. Translators: %s is an application name #: js/ui/status/location.js:339 #, javascript-format msgid "The app %s wants to access your location" msgstr "%s 앱이 현재 위치에 접근하려고 합니다" #: js/ui/status/location.js:349 msgid "Location access can be changed at any time from the privacy settings" msgstr "위치 정보 접근은 언제든지 사생활 보호 설정에서 바꿀 수 있습니다" #: js/ui/status/location.js:357 msgid "Deny Access" msgstr "접근 거부" #: js/ui/status/location.js:362 msgid "Grant Access" msgstr "접근 허용" #: js/ui/status/network.js:62 msgid "" msgstr "<알 수 없음>" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:354 #, javascript-format msgid "Disconnect %s" msgstr "%s 연결" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:356 #, javascript-format msgid "Connect to %s" msgstr "%s 연결 해제" #: js/ui/status/network.js:1050 msgid "Secure" msgstr "안전함" #: js/ui/status/network.js:1050 msgid "Not secure" msgstr "안전하지 않음" #: js/ui/status/network.js:1051 #, javascript-format msgid "Signal strength %s%%" msgstr "신호 세기 %s%%" #. translators: The first placeholder is the network name, the second and indication whether it is secure, and the last the signal strength indication #: js/ui/status/network.js:1053 #, javascript-format msgid "%s, %s, %s" msgstr "%s, %s, %s" #. Translators: %s is a network identifier #: js/ui/status/network.js:1155 #, javascript-format msgid "%s Hotspot" msgstr "%s 핫스팟" #: js/ui/status/network.js:1426 #, javascript-format msgid "%d connected" msgid_plural "%d connected" msgstr[0] "%d개 연결" #: js/ui/status/network.js:1524 js/ui/status/network.js:1540 msgid "VPN" msgstr "가상사설망" #: js/ui/status/network.js:1525 msgid "VPN Settings" msgstr "가상사설망 설정" #: js/ui/status/network.js:1785 msgid "Wi–Fi" msgstr "와이파이" #: js/ui/status/network.js:1787 msgid "All Networks" msgstr "모든 네트워크" #: js/ui/status/network.js:1884 msgid "Wired Connections" msgstr "유선 연결" #: js/ui/status/network.js:1885 msgid "Wired Settings" msgstr "유선 네트워크 설정" #: js/ui/status/network.js:1899 msgid "Bluetooth Tethers" msgstr "블루투스 테더링" #. Translators: "Tether" from "Bluetooth Tether" #: js/ui/status/network.js:1906 msgid "Tether" msgstr "테더링" #: js/ui/status/network.js:1919 msgid "Mobile Connections" msgstr "모뎀 연결" #: js/ui/status/network.js:1921 msgid "Mobile Broadband Settings" msgstr "휴대전화 네트워크 설정" #. Translators: "Mobile" from "Mobile Broadband" #: js/ui/status/network.js:1930 msgid "Mobile" msgstr "휴대전화" #: js/ui/status/network.js:1964 msgid "Sign Into Wi–Fi Network" msgstr "와이파이 네트워크에 로그인" #: js/ui/status/network.js:2151 msgid "Connection failed" msgstr "연결이 실패했습니다" #: js/ui/status/network.js:2152 msgid "Activation of network connection failed" msgstr "네트워크 연결이 실패했습니다" #: js/ui/status/nightLight.js:19 msgid "Night Light" msgstr "야간 모드" #: js/ui/status/powerProfiles.js:19 msgctxt "Power profile" msgid "Performance" msgstr "성능" #: js/ui/status/powerProfiles.js:24 msgctxt "Power profile" msgid "Balanced" msgstr "균형" #: js/ui/status/powerProfiles.js:29 msgctxt "Power profile" msgid "Power Saver" msgstr "전기 절약" #: js/ui/status/powerProfiles.js:39 js/ui/status/powerProfiles.js:69 msgid "Power Mode" msgstr "전원 모드" #: js/ui/status/powerProfiles.js:71 msgid "Power Settings" msgstr "전원 설정" #: js/ui/status/remoteAccess.js:74 msgid "Stop Screencast" msgstr "스크린캐스트 중지" #: js/ui/status/remoteAccess.js:144 msgid "Stop Screen Sharing" msgstr "화면 공유 중지" #: js/ui/status/rfkill.js:99 msgid "Airplane Mode" msgstr "비행기 모드" #: js/ui/status/system.js:168 msgid "Power Off Menu" msgstr "컴퓨터 끄기 메뉴" #: js/ui/status/system.js:176 msgid "Suspend" msgstr "절전" #: js/ui/status/system.js:181 msgid "Restart…" msgstr "다시 시작…" #: js/ui/status/system.js:186 msgid "Power Off…" msgstr "컴퓨터 끄기…" #: js/ui/status/system.js:193 #: subprojects/extensions-app/data/ui/extensions-window.ui:124 msgid "Log Out…" msgstr "로그아웃…" #: js/ui/status/system.js:198 msgid "Switch User…" msgstr "사용자 바꾸기…" #: js/ui/status/system.js:242 msgctxt "action" msgid "Lock Screen" msgstr "화면 잠그기" #: js/ui/status/thunderbolt.js:308 msgid "Unknown Thunderbolt device" msgstr "알 수 없는 썬더볼트 장치" #: js/ui/status/thunderbolt.js:309 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" "자리에 없는 동안 새 장치를 검색했습니다. 이 장치를 사용하려면 장치 연결을 끊" "었다가 다시 연결하십시오." #: js/ui/status/thunderbolt.js:312 msgid "Unauthorized Thunderbolt device" msgstr "권한 없는 썬더볼트 장치" #: js/ui/status/thunderbolt.js:313 msgid "" "New device has been detected and needs to be authorized by an administrator" msgstr "새 장치가 발견되었고 관리자가 허가해야 합니다" #: js/ui/status/thunderbolt.js:319 msgid "Thunderbolt authorization error" msgstr "썬더볼트 권한 오류" #: js/ui/status/thunderbolt.js:320 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "썬더볼트 장치에 권한을 부여할 수 없습니다: %s" # 오디오 볼륨 #: js/ui/status/volume.js:218 msgid "Volume changed" msgstr "볼륨 바꿈" #: js/ui/status/volume.js:231 msgid "Unmute" msgstr "음 소거 해제" #: js/ui/status/volume.js:231 msgid "Mute" msgstr "음 소거" # 오디오 볼륨 #: js/ui/status/volume.js:286 msgid "Volume" msgstr "볼륨" #: js/ui/status/volume.js:302 msgid "Sound Output" msgstr "소리 출력" #: js/ui/status/volume.js:374 msgid "Sound Input" msgstr "소리 입력" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:20 msgid "Mirror" msgstr "반복" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:29 msgid "Join Displays" msgstr "디스플레이 연결" #. Translators: this is for using only external displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:39 msgid "External Only" msgstr "외부만 사용" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:47 msgid "Built-in Only" msgstr "내장만 사용" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:378 msgid "%A %B %-d" msgstr "%B %-d일 %A" #: js/ui/unlockDialog.js:384 msgid "Swipe up to unlock" msgstr "위로 밀어 잠금 해제" #: js/ui/unlockDialog.js:385 msgid "Click or press a key to unlock" msgstr "잠금을 해제하려면 마우스 단추 또는 키를 누르십시오" #: js/ui/unlockDialog.js:568 msgid "Unlock Window" msgstr "창 잠금 해제" #: js/ui/unlockDialog.js:577 msgid "Log in as another user" msgstr "다른 사용자로 로그인" #: js/ui/welcomeDialog.js:47 #, javascript-format msgid "GNOME %s" msgstr "그놈 %s" #: js/ui/welcomeDialog.js:51 #, javascript-format msgid "Welcome to %s" msgstr "환영합니다 — %s" #: js/ui/welcomeDialog.js:52 msgid "If you want to learn your way around, check out the tour" msgstr "사용 방법을 배우고 싶으시면, 둘러보기를 확인해 보십시오" #: js/ui/welcomeDialog.js:61 msgid "Skip" msgstr "건너뛰기" #: js/ui/welcomeDialog.js:66 msgid "Take Tour" msgstr "둘러보기" #: js/ui/windowAttentionHandler.js:18 #, javascript-format msgid "“%s” is ready" msgstr "“%s” 앱이 준비되었습니다" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:68 msgid "Keep these display settings?" msgstr "이 디스플레이 설정을 유지하시겠습니까?" #: js/ui/windowManager.js:78 msgid "Revert Settings" msgstr "설정 되돌리기" #: js/ui/windowManager.js:83 msgid "Keep Changes" msgstr "바뀐 사항 유지" #: js/ui/windowManager.js:103 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "바뀐 설정을 %d초 후에 되돌립니다" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:500 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:40 msgid "Hide" msgstr "숨기기" #: js/ui/windowMenu.js:47 msgid "Restore" msgstr "복원" #: js/ui/windowMenu.js:51 msgid "Maximize" msgstr "최대화" #: js/ui/windowMenu.js:58 msgid "Move" msgstr "옮기기" #: js/ui/windowMenu.js:78 msgid "Resize" msgstr "크기 조정" #: js/ui/windowMenu.js:98 msgid "Always on Top" msgstr "항상 위" #: js/ui/windowMenu.js:117 msgid "Always on Visible Workspace" msgstr "항상 보이는 작업 공간에" #: js/ui/windowMenu.js:131 msgid "Move to Workspace Left" msgstr "왼쪽 작업 공간으로 옮기기" #: js/ui/windowMenu.js:137 msgid "Move to Workspace Right" msgstr "오른쪽 작업 공간으로 옮기기" #: js/ui/windowMenu.js:143 msgid "Move to Workspace Up" msgstr "위 작업 공간으로 옮기기" #: js/ui/windowMenu.js:149 msgid "Move to Workspace Down" msgstr "아래 작업 공간으로 옮기기" #: js/ui/windowMenu.js:167 msgid "Move to Monitor Up" msgstr "위 모니터로 옮기기" #: js/ui/windowMenu.js:176 msgid "Move to Monitor Down" msgstr "아래 모니터로 옮기기" #: js/ui/windowMenu.js:185 msgid "Move to Monitor Left" msgstr "왼쪽 모니터로 옮기기" #: js/ui/windowMenu.js:194 msgid "Move to Monitor Right" msgstr "오른쪽 모니터로 옮기기" #: js/ui/windowMenu.js:202 msgid "Close" msgstr "닫기" # 커맨드라인 옵션 설명 #: src/main.c:529 subprojects/extensions-tool/src/main.c:336 msgid "Print version" msgstr "버전을 표시합니다" #: src/main.c:535 msgid "Mode used by GDM for login screen" msgstr "GDM에서 로그인 화면에 사용할 모드" #: src/main.c:541 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "특정 모드 사용. 예를 들어 로그인 화면에 대해 “gdm”" #: src/main.c:547 msgid "List possible modes" msgstr "가능한 모드 목록 표시" #: src/main.c:553 msgid "Force animations to be enabled" msgstr "애니메이션 사용 강제 설정" #: src/shell-app.c:252 msgctxt "program" msgid "Unknown" msgstr "알 수 없음" #: src/shell-app.c:503 #, c-format msgid "Failed to launch “%s”" msgstr "“%s” 실행에 실패했습니다" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match" msgstr "암호가 일치하지 않습니다" #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "빈 암호를 쓸 수 없습니다" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "인증 대화 창을 사용자가 닫았습니다" #: src/st/st-icon-theme.c:1865 #, c-format msgid "Icon '%s' not present in theme %s" msgstr "'%s' 아이콘이 %s 테마에 없습니다" #: src/st/st-icon-theme.c:3454 src/st/st-icon-theme.c:3757 msgid "Failed to load icon" msgstr "아이콘 읽어들이는데 실패했습니다" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 msgid "Manage your GNOME Extensions" msgstr "그놈 확장을 관리합니다" #. developer_name tag deprecated with Appstream 1.0 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:19 msgid "The GNOME Project" msgstr "그놈 프로젝트" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:51 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" "그놈 확장 관리자에서는 확장 기능의 업데이트, 확장 기능의 설정, 원하지 않는 확" "장 기능 제거 또는 사용 중지를 처리합니다." #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:64 msgid "Main Window" msgstr "메인 창" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:68 msgid "Available Updates" msgstr "사용 가능 업데이트" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:72 msgid "Search View" msgstr "검색 보기" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "그놈 셸 확장을 설정합니다" #: subprojects/extensions-app/js/extensionManager.js:237 #, javascript-format msgid "" "The installed version of this extension (%s) is incompatible with the " "current version of GNOME (%s). The extension has been disabled." msgstr "" "이 확장 기능의 설치된 버전이 (%s) 현재 그놈 버전과 (%s) 호환되지 않습니다. 확" "장 기능을 사용하지 않습니다." #: subprojects/extensions-app/js/extensionManager.js:238 #, javascript-format msgid "" "The installed version of this extension is incompatible with the current " "version of GNOME (%s). The extension has been disabled." msgstr "" "이 확장 기능의 설치된 버전이 현재 그놈 버전과 (%s) 호환되지 않습니다. 확장 기" "능을 사용하지 않습니다." #: subprojects/extensions-app/js/extensionManager.js:242 msgid "" "An error has occurred in this extension. This could cause issues elsewhere " "in the system. It is recommended to turn the extension off until the error " "is resolved." msgstr "" "이 확장 기능에서 오류가 발생했습니다. 시스템의 다른 곳에서 문제를 일으킬 수 " "있습니다. 오류가 해결될 때까지 확장 기능을 끄기를 권장합니다." #. translators: Details for an extension error #: subprojects/extensions-app/js/extensionManager.js:248 msgid "Error details:" msgstr "오류 자세히:" # 커맨드라인 옵션 설명 #: subprojects/extensions-app/js/extensionRow.js:82 #, javascript-format msgid "Version %s" msgstr "버전 %s" #: subprojects/extensions-app/js/extensionsWindow.js:113 #, javascript-format msgid "Remove “%s”?" msgstr "“%s” 확장을 제거하시겠습니까?" #: subprojects/extensions-app/js/extensionsWindow.js:114 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "확장을 제거한 다음 다시 사용하려면 다시 다운로드해야 합니다" #: subprojects/extensions-app/js/extensionsWindow.js:117 msgid "_Cancel" msgstr "취소(_C)" #: subprojects/extensions-app/js/extensionsWindow.js:118 msgid "_Remove" msgstr "제거(_R)" #: subprojects/extensions-app/js/extensionsWindow.js:158 msgid "translator-credits" msgstr "" "차영호 \n" "조성호 \n" "류창우 " #: subprojects/extensions-app/js/extensionsWindow.js:203 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "다음 로그인에 확장 %d개를 업데이트할 예정입니다." #: subprojects/extensions-app/data/ui/extension-row.ui:22 msgid "Error Details" msgstr "오류 자세히" #: subprojects/extensions-app/data/ui/extension-row.ui:62 msgid "Updates Details" msgstr "업데이트 자세히" #: subprojects/extensions-app/data/ui/extension-row.ui:72 msgid "" "A new version of this extension is ready and will be loaded on next login." msgstr "" "이 확장 기능의 새 버전이 준비되었고, 다음 로그인에서 읽어들일 예정입니다." #: subprojects/extensions-app/data/ui/extension-row.ui:104 msgid "Extension Details" msgstr "확장 기능 자세히" #: subprojects/extensions-app/data/ui/extension-row.ui:192 msgid "_Website" msgstr "홈페이지(_W)" #: subprojects/extensions-app/data/ui/extension-row.ui:219 msgid "_Settings" msgstr "설정(_S)" #: subprojects/extensions-app/data/ui/extension-row.ui:246 msgid "_Remove…" msgstr "제거(_R)…" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Keyboard Shortcuts" msgstr "키보드 바로 가기" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "확장 정보" #: subprojects/extensions-app/data/ui/extensions-window.ui:64 msgid "Main Menu" msgstr "메인 메뉴" #: subprojects/extensions-app/data/ui/extensions-window.ui:106 msgid "Search extensions" msgstr "확장 기능 검색" #: subprojects/extensions-app/data/ui/extensions-window.ui:134 msgid "_Extensions" msgstr "확장 기능(_E)" #: subprojects/extensions-app/data/ui/extensions-window.ui:139 msgid "More Information" msgstr "추가 정보" #: subprojects/extensions-app/data/ui/extensions-window.ui:151 msgid "" "Extensions can cause performance and stability issues. It is recommended to " "disable all extensions if you experience problems with your system." msgstr "" "확장 기능은 성능 저하 또는 안정성 문제를 일으킬 수 있습니다. 시스템에 문제를 " "발견하면 확장을 사용 중지하기를 권장합니다." #: subprojects/extensions-app/data/ui/extensions-window.ui:178 msgid "User Extensions" msgstr "사용자 확장 기능" #: subprojects/extensions-app/data/ui/extensions-window.ui:198 msgid "System Extensions" msgstr "시스템 확장 기능" #: subprojects/extensions-app/data/ui/extensions-window.ui:233 msgid "Search Results" msgstr "검색 결과" #: subprojects/extensions-app/data/ui/extensions-window.ui:252 msgid "No Results Found" msgstr "찾은 결과가 없습니다" #: subprojects/extensions-app/data/ui/extensions-window.ui:253 msgid "Try a different search" msgstr "다르게 검색해 보십시오" #: subprojects/extensions-app/data/ui/extensions-window.ui:264 msgid "No Installed Extensions" msgstr "설치한 확장 없음" #: subprojects/extensions-app/data/ui/extensions-window.ui:265 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" "확장을 찾고 추가하려면, extensions." "gnome.org 사이트를 방문하십시오." #: subprojects/extensions-app/data/ui/extensions-window.ui:276 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" "대단히 죄송합니다. 설치한 확장 기능의 목록을 가져올 수 없습니다. 그놈 데스크" "톱에 로그인했는지 확인하시고 다시 시도하십시오." #: subprojects/extensions-app/data/ui/help-overlay.ui:9 msgctxt "shortcut window" msgid "General" msgstr "일반" #: subprojects/extensions-app/data/ui/help-overlay.ui:12 msgctxt "shortcut window" msgid "Open Menu" msgstr "메뉴 열기" #: subprojects/extensions-app/data/ui/help-overlay.ui:18 msgctxt "shortcut window" msgid "Toggle Search" msgstr "검색 토글" #: subprojects/extensions-app/data/ui/help-overlay.ui:24 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "바로 가기 보이기" #: subprojects/extensions-app/data/ui/help-overlay.ui:30 msgctxt "shortcut window" msgid "Quit" msgstr "끝내기" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:284 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "새 확장을 %s 안에 성공적으로 만들었습니다.\n" #: subprojects/extensions-tool/src/command-create.c:376 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" "이름은 아주 짧은 (무슨 기능인지 설명이 되면 좋은) 문자열이어야 합니다.\n" "예: %s" #: subprojects/extensions-tool/src/command-create.c:382 #: subprojects/extensions-tool/src/main.c:243 msgid "Name" msgstr "이름" #: subprojects/extensions-tool/src/command-create.c:396 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" "설명은 이 확장 기능이 무슨 일을 하는지 한 문장으로 설명합니다.\n" "예: %s" #: subprojects/extensions-tool/src/command-create.c:402 #: subprojects/extensions-tool/src/main.c:246 msgid "Description" msgstr "설명" #: subprojects/extensions-tool/src/command-create.c:416 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" "UUID는 이 확장을 나타내는 전셰계적으로 유일한 ID 값입니다.\n" "전자메일 주소의 형식이어야 합니다 (clicktofocus@janedoe.example.com)\n" #: subprojects/extensions-tool/src/command-create.c:443 msgid "Choose one of the available templates:\n" msgstr "다음 사용 가능한 서식 중 하나를 고르십시오:\n" #: subprojects/extensions-tool/src/command-create.c:457 msgid "Template" msgstr "서식" #: subprojects/extensions-tool/src/command-create.c:515 msgid "The unique identifier of the new extension" msgstr "새 확장 기능의 유일한 ID" #: subprojects/extensions-tool/src/command-create.c:518 msgid "NAME" msgstr "<이름>" #: subprojects/extensions-tool/src/command-create.c:519 msgid "The user-visible name of the new extension" msgstr "사용자에게 표시할 새 확장 기능 이름" #: subprojects/extensions-tool/src/command-create.c:521 msgid "DESCRIPTION" msgstr "<설명>" #: subprojects/extensions-tool/src/command-create.c:523 msgid "A short description of what the extension does" msgstr "확장이 하는 일에 대한 짧은 설명" #: subprojects/extensions-tool/src/command-create.c:525 #: subprojects/extensions-tool/src/command-pack.c:455 msgid "DOMAIN" msgstr "<도메인>" #: subprojects/extensions-tool/src/command-create.c:527 msgid "The gettext domain used by the extension" msgstr "확장에서 사용하는 gettext 도메인" #: subprojects/extensions-tool/src/command-create.c:529 #: subprojects/extensions-tool/src/command-pack.c:448 msgid "SCHEMA" msgstr "<스키마>" #: subprojects/extensions-tool/src/command-create.c:531 msgid "The GSettings schema used by the extension" msgstr "확장에서 사용하는 GSettings 스키마" #: subprojects/extensions-tool/src/command-create.c:534 msgid "TEMPLATE" msgstr "<서식>" #: subprojects/extensions-tool/src/command-create.c:535 msgid "The template to use for the new extension" msgstr "새 확장 기능에 사용할 서식" #: subprojects/extensions-tool/src/command-create.c:538 msgid "Include prefs.js template" msgstr "prefs.js 서식 포함" #: subprojects/extensions-tool/src/command-create.c:544 msgid "Enter extension information interactively" msgstr "확장 기능 정보 대화식으로 입력하기" #: subprojects/extensions-tool/src/command-create.c:552 msgid "Create a new extension" msgstr "새 확장 만들기" #: subprojects/extensions-tool/src/command-create.c:570 #: subprojects/extensions-tool/src/command-list.c:190 msgid "Unknown arguments" msgstr "알 수 없는 인자" #: subprojects/extensions-tool/src/command-create.c:595 msgid "UUID, name and description are required" msgstr "UUID, 이름, 설명이 필요합니다" #: subprojects/extensions-tool/src/command-disable.c:62 #: subprojects/extensions-tool/src/command-enable.c:62 #, c-format msgid "Extension “%s” does not exist\n" msgstr "“%s” 확장 기능이 없습니다\n" #: subprojects/extensions-tool/src/command-disable.c:98 msgid "Disable an extension" msgstr "확장 기능 사용하지 않기" #: subprojects/extensions-tool/src/command-disable.c:116 #: subprojects/extensions-tool/src/command-enable.c:116 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "UUID가 주어지지 않았습니다" #: subprojects/extensions-tool/src/command-disable.c:121 #: subprojects/extensions-tool/src/command-enable.c:121 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "여러 개의 UUID가 주어졌습니다" #: subprojects/extensions-tool/src/command-enable.c:98 msgid "Enable an extension" msgstr "확장 기능 사용하기" #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:66 #: subprojects/extensions-tool/src/main.c:150 msgid "Failed to connect to GNOME Shell\n" msgstr "그놈 셸 연결에 실패했습니다\n" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:159 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "“%s” 확장 기능이 없습니다\n" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "확장을 설치하지 않았습니다" #: subprojects/extensions-tool/src/command-install.c:190 msgid "Overwrite an existing extension" msgstr "기존 확장 기능 덮어쓰기" #: subprojects/extensions-tool/src/command-install.c:192 msgid "EXTENSION_BUNDLE" msgstr "<확장_번들>" #: subprojects/extensions-tool/src/command-install.c:201 msgid "Install an extension bundle" msgstr "확장 번들 설치" #: subprojects/extensions-tool/src/command-install.c:219 msgid "No extension bundle specified" msgstr "확장 번들을 지정하지 않았습니다" #: subprojects/extensions-tool/src/command-install.c:225 msgid "More than one extension bundle specified" msgstr "여러 개의 확장 번들을 지정했습니다" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show user-installed extensions" msgstr "사용자 설치 확장 기능 표시" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show system-installed extensions" msgstr "시스템 설치 확장 기능 표시" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Show enabled extensions" msgstr "사용하는 확장 기능 표시" #: subprojects/extensions-tool/src/command-list.c:149 msgid "Show disabled extensions" msgstr "사용하지 않는 확장 기능 표시" #: subprojects/extensions-tool/src/command-list.c:152 msgid "Show extensions in active state" msgstr "활성화 상태의 확장 기능 표시" #: subprojects/extensions-tool/src/command-list.c:155 msgid "Show extensions in inactive state" msgstr "비활성화 상태의 확장 기능 표시" #: subprojects/extensions-tool/src/command-list.c:158 msgid "Show extensions with preferences" msgstr "설정이 있는 확장 기능 표시" #: subprojects/extensions-tool/src/command-list.c:161 msgid "Show extensions with updates" msgstr "업데이트가 있는 확장 기능 표시" #: subprojects/extensions-tool/src/command-list.c:164 msgid "Print extension details" msgstr "확장 기능 자세히 표시" #: subprojects/extensions-tool/src/command-list.c:172 msgid "List installed extensions" msgstr "설치한 확장 기능 목록 보기" #: subprojects/extensions-tool/src/command-pack.c:444 msgid "FILE" msgstr "<파일>" #: subprojects/extensions-tool/src/command-pack.c:445 msgid "Additional source to include in the bundle" msgstr "번들에 포함할 추가 소스 파일" #: subprojects/extensions-tool/src/command-pack.c:449 msgid "A GSettings schema that should be included" msgstr "포함할 GSettings 스키마" #: subprojects/extensions-tool/src/command-pack.c:451 #: subprojects/extensions-tool/src/command-pack.c:462 msgid "DIRECTORY" msgstr "<디렉터리>" #: subprojects/extensions-tool/src/command-pack.c:453 msgid "The directory where translations are found" msgstr "번역이 들어 있는 디렉터리" #: subprojects/extensions-tool/src/command-pack.c:457 msgid "The gettext domain to use for translations" msgstr "번역에 사용할 gettext 도메인" #: subprojects/extensions-tool/src/command-pack.c:460 msgid "Overwrite an existing pack" msgstr "기존의 묶음을 덮어씁니다" #: subprojects/extensions-tool/src/command-pack.c:464 msgid "The directory where the pack should be created" msgstr "만들어진 묶음이 들어갈 디렉터리" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "SOURCE_DIRECTORY" msgstr "<소스_디렉터리>" #: subprojects/extensions-tool/src/command-pack.c:475 msgid "Create an extension bundle" msgstr "확장 번들을 만듭니다" #: subprojects/extensions-tool/src/command-pack.c:495 msgid "More than one source directory specified" msgstr "여러 개의 소스 디렉터리를 지정했습니다" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "“%s” 확장에 설정이 없습니다\n" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "확장 “%s”에 대한 기본 설정을 여는데 실패했습니다: %s\n" #: subprojects/extensions-tool/src/command-prefs.c:87 msgid "Opens extension preferences" msgstr "확장 기능 설정을 엽니다" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "확장 기능 초기화" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "시스템 확장 기능은 설치를 제거할 수 없습니다\n" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "“%s” 설치 제거에 실패했습니다\n" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "확장 기능 설치 제거" #: subprojects/extensions-tool/src/main.c:76 msgid "Do not print error messages" msgstr "오류 메시지를 인쇄하지 않습니다" #: subprojects/extensions-tool/src/main.c:249 msgid "Path" msgstr "경로" #: subprojects/extensions-tool/src/main.c:252 msgid "URL" msgstr "URL" #: subprojects/extensions-tool/src/main.c:255 msgid "Original author" msgstr "원 작성자" # 커맨드라인 옵션 설명 #: subprojects/extensions-tool/src/main.c:261 #: subprojects/extensions-tool/src/main.c:263 #: subprojects/extensions-tool/src/main.c:265 msgid "Version" msgstr "버전" #: subprojects/extensions-tool/src/main.c:268 msgid "Enabled" msgstr "사용" #: subprojects/extensions-tool/src/main.c:268 msgid "Yes" msgstr "예" #: subprojects/extensions-tool/src/main.c:268 msgid "No" msgstr "아니요" #: subprojects/extensions-tool/src/main.c:271 msgid "State" msgstr "상태" #: subprojects/extensions-tool/src/main.c:309 msgid "“version” takes no arguments" msgstr "“version” 옵션은 인수를 받지 않습니다" #: subprojects/extensions-tool/src/main.c:311 #: subprojects/extensions-tool/src/main.c:331 msgid "Usage:" msgstr "사용법:" #: subprojects/extensions-tool/src/main.c:314 msgid "Print version information and exit." msgstr "버전 정보를 표시하고 끝납니다." #: subprojects/extensions-tool/src/main.c:329 #: subprojects/extensions-tool/src/main.c:332 msgid "COMMAND" msgstr "<명령>" #: subprojects/extensions-tool/src/main.c:332 msgid "[ARGS…]" msgstr "[인자…]" #: subprojects/extensions-tool/src/main.c:334 msgid "Commands:" msgstr "명령어:" # 커맨드라인 옵션 설명 #: subprojects/extensions-tool/src/main.c:335 msgid "Print help" msgstr "도움말을 표시합니다" #: subprojects/extensions-tool/src/main.c:337 msgid "Enable extension" msgstr "확장 기능 사용" #: subprojects/extensions-tool/src/main.c:338 msgid "Disable extension" msgstr "확장 기능 사용하지 않기" #: subprojects/extensions-tool/src/main.c:339 msgid "Reset extension" msgstr "확장 기능 초기화" #: subprojects/extensions-tool/src/main.c:340 msgid "Uninstall extension" msgstr "확장 기능 설치 제거" #: subprojects/extensions-tool/src/main.c:341 msgid "List extensions" msgstr "확장 기능 목록 보기" #: subprojects/extensions-tool/src/main.c:342 #: subprojects/extensions-tool/src/main.c:343 msgid "Show extension info" msgstr "확장 기능 정보 보기" #: subprojects/extensions-tool/src/main.c:344 msgid "Open extension preferences" msgstr "확장 기능 설정 열기" #: subprojects/extensions-tool/src/main.c:345 msgid "Create extension" msgstr "확장 기능 만들기" #: subprojects/extensions-tool/src/main.c:346 msgid "Package extension" msgstr "확장 기능 패키지 만들기" #: subprojects/extensions-tool/src/main.c:347 msgid "Install extension bundle" msgstr "확장 번들 설치" # “gnome-extensions help COMMAND” #: subprojects/extensions-tool/src/main.c:349 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "자세한 도움말을 보려면 “%s” 명령을 사용하십시오.\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "있는 그대로" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "빈 확장 기능" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "알림 표시" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "아이콘을 맨 위 표시줄에 추가합니다" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:4 msgid "Quick Settings Item" msgstr "빠른 설정 항목" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:5 msgid "Add an item to quick settings" msgstr "빠른 설정에 항목을 추가합니다" #. translators: #. * The device has been disabled #: subprojects/gvc/gvc-mixer-control.c:1872 msgid "Disabled" msgstr "사용 않음" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1879 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u개 출력" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1889 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u개 입력" #: subprojects/gvc/gvc-mixer-control.c:2872 msgid "System Sounds" msgstr "시스템 소리" 07070100000247000081A40000000000000000000000016712993F00008CD8000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/ku.po# Kurdish translations for l package. # Copyright (C) 2011 THE l'S COPYRIGHT HOLDER # This file is distributed under the same license as the l package. # Erdal , 2011. # Erdal Ronahî , 2011. msgid "" msgstr "" "Project-Id-Version: l 10n-gnome\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "shell&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2011-10-17 08:32+0000\n" "PO-Revision-Date: 2011-10-17 13:36+0200\n" "Last-Translator: Erdal Ronahî \n" "Language-Team: Kurdish Team http://pckurd.net\n" "Language: ku\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: Virtaal 0.6.1\n" #: ../data/gnome-shell.desktop.in.in.h:1 msgid "GNOME Shell" msgstr "" #: ../data/gnome-shell.desktop.in.in.h:2 msgid "Window management and application launching" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:1 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:2 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:3 msgid "File extension used for storing the screencast" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:4 msgid "Framerate used for recording screencasts." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:5 msgid "" "GNOME Shell extensions have a uuid property; this key lists extensions which " "should be loaded. disabled-extensions overrides this setting for extensions " "that appear in both lists." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:6 msgid "History for command (Alt-F2) dialog" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:7 msgid "History for the looking glass dialog" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:8 msgid "If true, display date in the clock, in addition to time." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:9 msgid "If true, display seconds in time." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:10 msgid "If true, display the ISO week date in the calendar." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:11 msgid "List of desktop file IDs for favorite applications" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:13 #, no-c-format msgid "" "Sets the GStreamer pipeline used to encode recordings. It follows the syntax " "used for gst-launch. The pipeline should have an unconnected sink pad where " "the recorded video is recorded. It will normally have a unconnected source " "pad; output from that pad will be written into the output file. However the " "pipeline can also take care of its own output - this might be used to send " "the output to an icecast server via shout2send or similar. When unset or set " "to an empty value, the default pipeline will be used. This is currently " "'videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux' and " "records to WEBM using the VP8 codec. %T is used as a placeholder for a guess " "at the optimal thread count on the system." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:14 msgid "Show date in clock" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:15 msgid "Show the week date in the calendar" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:16 msgid "Show time with seconds" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:17 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:18 msgid "" "The filename for recorded screencasts will be a unique filename based on the " "current date, and use this extension. It should be changed when recording to " "a different container format." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:19 msgid "" "The framerate of the resulting screencast recordered by GNOME Shell's " "screencast recorder in frames-per-second." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:20 msgid "The gstreamer pipeline used to encode the screencast" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:21 msgid "" "The shell normally monitors active applications in order to present the most " "used ones (e.g. in launchers). While this data will be kept private, you may " "want to disable this for privacy reasons. Please note that doing so won't " "remove already saved data." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:22 msgid "The type of keyboard to use." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:23 msgid "Uuids of extensions to enable" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:24 msgid "Whether to collect stats about applications usage" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:25 msgid "Which keyboard to use" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:26 msgid "disabled OpenSearch providers" msgstr "" #: ../js/gdm/loginDialog.js:617 msgid "Session..." msgstr "Danişîn..." #: ../js/gdm/loginDialog.js:788 msgctxt "title" msgid "Sign In" msgstr "Têkeve" #. translators: this message is shown below the password entry field #. to indicate the user can swipe their finger instead #: ../js/gdm/loginDialog.js:833 msgid "(or swipe finger)" msgstr "" #: ../js/gdm/loginDialog.js:851 msgid "Not listed?" msgstr "Di listê de tune?" #: ../js/gdm/loginDialog.js:1019 ../js/ui/endSessionDialog.js:426 #: ../js/ui/extensionSystem.js:477 ../js/ui/networkAgent.js:165 #: ../js/ui/polkitAuthenticationAgent.js:171 ../js/ui/status/bluetooth.js:480 msgid "Cancel" msgstr "Betal" #: ../js/gdm/loginDialog.js:1024 msgctxt "button" msgid "Sign In" msgstr "Têkeve" #: ../js/gdm/loginDialog.js:1373 msgid "Login Window" msgstr "Paceya têketinê" #: ../js/gdm/powerMenu.js:116 ../js/ui/userMenu.js:549 #: ../js/ui/userMenu.js:551 ../js/ui/userMenu.js:620 msgid "Suspend" msgstr "Xew" #: ../js/gdm/powerMenu.js:121 ../js/ui/endSessionDialog.js:89 #: ../js/ui/endSessionDialog.js:97 ../js/ui/endSessionDialog.js:106 msgid "Restart" msgstr "Dîsdestpêkirin" #: ../js/gdm/powerMenu.js:126 ../js/ui/endSessionDialog.js:80 #: ../js/ui/endSessionDialog.js:91 msgid "Power Off" msgstr "Girtin" #: ../js/misc/util.js:92 msgid "Command not found" msgstr "Ferman nehate dîtin" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: ../js/misc/util.js:119 msgid "Could not parse command:" msgstr "" #: ../js/misc/util.js:127 #, c-format msgid "Execution of '%s' failed:" msgstr "" #. Translators: Filter to display all applications #: ../js/ui/appDisplay.js:255 msgid "All" msgstr "Hemû" #: ../js/ui/appDisplay.js:319 msgid "APPLICATIONS" msgstr "SEPAN" #: ../js/ui/appDisplay.js:377 msgid "SETTINGS" msgstr "MÎHENG" #: ../js/ui/appDisplay.js:684 msgid "New Window" msgstr "Paceya nû" #: ../js/ui/appDisplay.js:687 msgid "Remove from Favorites" msgstr "Ji bijareyan rake" #: ../js/ui/appDisplay.js:688 msgid "Add to Favorites" msgstr "Li bijareyan zêde bike" #: ../js/ui/appFavorites.js:89 #, c-format msgid "%s has been added to your favorites." msgstr "%s li bijareyên te de zêde bû." #: ../js/ui/appFavorites.js:120 #, c-format msgid "%s has been removed from your favorites." msgstr "%s li bijareyên te de hate rakirin." #: ../js/ui/autorunManager.js:280 msgid "Removable Devices" msgstr "" #: ../js/ui/autorunManager.js:590 #, c-format msgid "Open with %s" msgstr "Bi %s veke" #: ../js/ui/autorunManager.js:616 msgid "Eject" msgstr "Avêtin" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: ../js/ui/calendar.js:63 msgctxt "event list time" msgid "All Day" msgstr "Hemû roj" #. Translators: Shown in calendar event list, if 24h format #: ../js/ui/calendar.js:68 msgctxt "event list time" msgid "%H:%M" msgstr "%H:%M" #. Transators: Shown in calendar event list, if 12h format #: ../js/ui/calendar.js:75 msgctxt "event list time" msgid "%l:%M %p" msgstr "%l:%M %p" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: ../js/ui/calendar.js:115 msgctxt "grid sunday" msgid "S" msgstr "Y" #. Translators: Calendar grid abbreviation for Monday #: ../js/ui/calendar.js:117 msgctxt "grid monday" msgid "M" msgstr "D" #. Translators: Calendar grid abbreviation for Tuesday #: ../js/ui/calendar.js:119 msgctxt "grid tuesday" msgid "T" msgstr "S" #. Translators: Calendar grid abbreviation for Wednesday #: ../js/ui/calendar.js:121 msgctxt "grid wednesday" msgid "W" msgstr "Ç" #. Translators: Calendar grid abbreviation for Thursday #: ../js/ui/calendar.js:123 msgctxt "grid thursday" msgid "T" msgstr "P" #. Translators: Calendar grid abbreviation for Friday #: ../js/ui/calendar.js:125 msgctxt "grid friday" msgid "F" msgstr "Î" #. Translators: Calendar grid abbreviation for Saturday #: ../js/ui/calendar.js:127 msgctxt "grid saturday" msgid "S" msgstr "Ş" #. Translators: Event list abbreviation for Sunday. #. * #. * NOTE: These list abbreviations are normally not shown together #. * so they need to be unique (e.g. Tuesday and Thursday cannot #. * both be 'T'). #. #: ../js/ui/calendar.js:140 msgctxt "list sunday" msgid "Su" msgstr "Yş" #. Translators: Event list abbreviation for Monday #: ../js/ui/calendar.js:142 msgctxt "list monday" msgid "M" msgstr "D" #. Translators: Event list abbreviation for Tuesday #: ../js/ui/calendar.js:144 msgctxt "list tuesday" msgid "T" msgstr "S" #. Translators: Event list abbreviation for Wednesday #: ../js/ui/calendar.js:146 msgctxt "list wednesday" msgid "W" msgstr "Ç" #. Translators: Event list abbreviation for Thursday #: ../js/ui/calendar.js:148 msgctxt "list thursday" msgid "Th" msgstr "Pş" #. Translators: Event list abbreviation for Friday #: ../js/ui/calendar.js:150 msgctxt "list friday" msgid "F" msgstr "Î" #. Translators: Event list abbreviation for Saturday #: ../js/ui/calendar.js:152 msgctxt "list saturday" msgid "S" msgstr "Ş" #. Translators: Text to show if there are no events #: ../js/ui/calendar.js:687 msgid "Nothing Scheduled" msgstr "" #. Translators: Shown on calendar heading when selected day occurs on current year #: ../js/ui/calendar.js:703 msgctxt "calendar heading" msgid "%A, %B %d" msgstr "" #. Translators: Shown on calendar heading when selected day occurs on different year #: ../js/ui/calendar.js:706 msgctxt "calendar heading" msgid "%A, %B %d, %Y" msgstr "" #: ../js/ui/calendar.js:716 msgid "Today" msgstr "" #: ../js/ui/calendar.js:720 msgid "Tomorrow" msgstr "" #: ../js/ui/calendar.js:729 msgid "This week" msgstr "" #: ../js/ui/calendar.js:737 msgid "Next week" msgstr "" #: ../js/ui/contactDisplay.js:65 ../js/ui/notificationDaemon.js:444 #: ../js/ui/status/power.js:223 ../src/shell-app.c:353 msgid "Unknown" msgstr "" #: ../js/ui/contactDisplay.js:86 ../js/ui/userMenu.js:139 msgid "Available" msgstr "" #: ../js/ui/contactDisplay.js:91 ../js/ui/userMenu.js:148 msgid "Away" msgstr "" #: ../js/ui/contactDisplay.js:95 ../js/ui/userMenu.js:142 msgid "Busy" msgstr "" #: ../js/ui/contactDisplay.js:99 msgid "Offline" msgstr "" #: ../js/ui/contactDisplay.js:146 msgid "CONTACTS" msgstr "TEKILÎ" #: ../js/ui/dash.js:172 ../js/ui/messageTray.js:1204 msgid "Remove" msgstr "Rakirin" #: ../js/ui/dateMenu.js:99 msgid "Date and Time Settings" msgstr "" #: ../js/ui/dateMenu.js:125 msgid "Open Calendar" msgstr "" #. Translators: This is the time format with date used #. in 24-hour mode. #: ../js/ui/dateMenu.js:183 msgid "%a %b %e, %R:%S" msgstr "" #: ../js/ui/dateMenu.js:184 msgid "%a %b %e, %R" msgstr "" #. Translators: This is the time format without date used #. in 24-hour mode. #: ../js/ui/dateMenu.js:188 msgid "%a %R:%S" msgstr "" #: ../js/ui/dateMenu.js:189 msgid "%a %R" msgstr "" #. Translators: This is a time format with date used #. for AM/PM. #: ../js/ui/dateMenu.js:196 msgid "%a %b %e, %l:%M:%S %p" msgstr "" #: ../js/ui/dateMenu.js:197 msgid "%a %b %e, %l:%M %p" msgstr "" #. Translators: This is a time format without date used #. for AM/PM. #: ../js/ui/dateMenu.js:201 msgid "%a %l:%M:%S %p" msgstr "" #: ../js/ui/dateMenu.js:202 msgid "%a %l:%M %p" msgstr "" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM"). #. #: ../js/ui/dateMenu.js:213 msgid "%A %B %e, %Y" msgstr "" #: ../js/ui/docDisplay.js:16 msgid "RECENT ITEMS" msgstr "" #: ../js/ui/endSessionDialog.js:60 #, c-format msgid "Log Out %s" msgstr "" #: ../js/ui/endSessionDialog.js:61 ../js/ui/endSessionDialog.js:75 msgid "Log Out" msgstr "" #: ../js/ui/endSessionDialog.js:62 msgid "Click Log Out to quit these applications and log out of the system." msgstr "" #: ../js/ui/endSessionDialog.js:64 #, c-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "" msgstr[1] "" #: ../js/ui/endSessionDialog.js:69 #, c-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "" msgstr[1] "" #: ../js/ui/endSessionDialog.js:73 msgid "Logging out of the system." msgstr "" #: ../js/ui/endSessionDialog.js:81 msgid "Click Power Off to quit these applications and power off the system." msgstr "" #: ../js/ui/endSessionDialog.js:83 #, c-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "" msgstr[1] "" #: ../js/ui/endSessionDialog.js:87 msgid "Powering off the system." msgstr "" #: ../js/ui/endSessionDialog.js:98 msgid "Click Restart to quit these applications and restart the system." msgstr "" #: ../js/ui/endSessionDialog.js:100 #, c-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "" msgstr[1] "" #: ../js/ui/endSessionDialog.js:104 msgid "Restarting the system." msgstr "" #: ../js/ui/extensionSystem.js:481 msgid "Install" msgstr "" #: ../js/ui/extensionSystem.js:485 #, c-format msgid "Download and install '%s' from extensions.gnome.org?" msgstr "" #: ../js/ui/keyboard.js:309 msgid "tray" msgstr "" #: ../js/ui/keyboard.js:531 ../js/ui/status/power.js:211 msgid "Keyboard" msgstr "" #: ../js/ui/lookingGlass.js:645 msgid "No extensions installed" msgstr "" #: ../js/ui/lookingGlass.js:691 msgid "Enabled" msgstr "" #. translators: #. * The device has been disabled #: ../js/ui/lookingGlass.js:693 ../src/gvc/gvc-mixer-control.c:1093 msgid "Disabled" msgstr "" #: ../js/ui/lookingGlass.js:695 msgid "Error" msgstr "" #: ../js/ui/lookingGlass.js:697 msgid "Out of date" msgstr "" #: ../js/ui/lookingGlass.js:699 msgid "Downloading" msgstr "" #: ../js/ui/lookingGlass.js:720 msgid "View Source" msgstr "" #: ../js/ui/lookingGlass.js:726 msgid "Web Page" msgstr "" #: ../js/ui/messageTray.js:1197 msgid "Open" msgstr "" #: ../js/ui/messageTray.js:2406 msgid "System Information" msgstr "" #: ../js/ui/networkAgent.js:145 msgid "Show password" msgstr "" #: ../js/ui/networkAgent.js:160 msgid "Connect" msgstr "" #. Cisco LEAP #: ../js/ui/networkAgent.js:255 ../js/ui/networkAgent.js:267 #: ../js/ui/networkAgent.js:294 ../js/ui/networkAgent.js:314 #: ../js/ui/networkAgent.js:324 msgid "Password: " msgstr "" #. static WEP #: ../js/ui/networkAgent.js:260 msgid "Key: " msgstr "" #. TTLS and PEAP are actually much more complicated, but this complication #. is not visible here since we only care about phase2 authentication #. (and don't even care of which one) #: ../js/ui/networkAgent.js:292 ../js/ui/networkAgent.js:310 msgid "Username: " msgstr "" #: ../js/ui/networkAgent.js:298 msgid "Identity: " msgstr "" #: ../js/ui/networkAgent.js:300 msgid "Private key password: " msgstr "" #: ../js/ui/networkAgent.js:312 msgid "Service: " msgstr "" #: ../js/ui/networkAgent.js:341 msgid "Authentication required by wireless network" msgstr "" #: ../js/ui/networkAgent.js:342 #, c-format msgid "" "Passwords or encryption keys are required to access the wireless network " "'%s'." msgstr "" #: ../js/ui/networkAgent.js:346 msgid "Wired 802.1X authentication" msgstr "" #: ../js/ui/networkAgent.js:348 msgid "Network name: " msgstr "" #: ../js/ui/networkAgent.js:353 msgid "DSL authentication" msgstr "" #: ../js/ui/networkAgent.js:360 msgid "PIN code required" msgstr "" #: ../js/ui/networkAgent.js:361 msgid "PIN code is needed for the mobile broadband device" msgstr "" #: ../js/ui/networkAgent.js:362 msgid "PIN: " msgstr "" #: ../js/ui/networkAgent.js:368 msgid "Mobile broadband network password" msgstr "" #: ../js/ui/networkAgent.js:369 #, c-format msgid "A password is required to connect to '%s'." msgstr "" #: ../js/ui/overview.js:91 msgid "Undo" msgstr "" #: ../js/ui/overview.js:205 msgid "Windows" msgstr "" #: ../js/ui/overview.js:208 msgid "Applications" msgstr "" #. Translators: this is the name of the dock/favorites area on #. the left of the overview #: ../js/ui/overview.js:230 msgid "Dash" msgstr "" #. TODO - _quit() doesn't really work on apps in state STARTING yet #: ../js/ui/panel.js:539 #, c-format msgid "Quit %s" msgstr "" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: ../js/ui/panel.js:575 msgid "Activities" msgstr "" #: ../js/ui/panel.js:967 msgid "Top Bar" msgstr "" #: ../js/ui/placeDisplay.js:120 #, c-format msgid "Failed to unmount '%s'" msgstr "" #: ../js/ui/placeDisplay.js:123 msgid "Retry" msgstr "" #: ../js/ui/placeDisplay.js:163 msgid "Connect to..." msgstr "" #: ../js/ui/placeDisplay.js:375 msgid "PLACES & DEVICES" msgstr "" #: ../js/ui/polkitAuthenticationAgent.js:72 msgid "Authentication Required" msgstr "" #: ../js/ui/polkitAuthenticationAgent.js:106 msgid "Administrator" msgstr "" #: ../js/ui/polkitAuthenticationAgent.js:175 msgid "Authenticate" msgstr "" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: ../js/ui/polkitAuthenticationAgent.js:256 msgid "Sorry, that didn't work. Please try again." msgstr "" #: ../js/ui/polkitAuthenticationAgent.js:268 msgid "Password:" msgstr "" #. Translators: this MUST be either "toggle-switch-us" #. (for toggle switches containing the English words #. "ON" and "OFF") or "toggle-switch-intl" (for toggle #. switches containing "◯" and "|"). Other values will #. simply result in invisible toggle switches. #: ../js/ui/popupMenu.js:731 msgid "toggle-switch-us" msgstr "" #: ../js/ui/runDialog.js:208 msgid "Please enter a command:" msgstr "" #: ../js/ui/searchDisplay.js:340 msgid "Searching..." msgstr "" #: ../js/ui/searchDisplay.js:363 msgid "No matching results." msgstr "" #: ../js/ui/shellMountOperation.js:285 msgid "Wrong password, please try again" msgstr "" #: ../js/ui/status/accessibility.js:60 msgid "Zoom" msgstr "" #. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA, #. 'screen-reader-enabled'); #. this.menu.addMenuItem(screenReader); #: ../js/ui/status/accessibility.js:71 msgid "Screen Keyboard" msgstr "" #: ../js/ui/status/accessibility.js:75 msgid "Visual Alerts" msgstr "" #: ../js/ui/status/accessibility.js:78 msgid "Sticky Keys" msgstr "" #: ../js/ui/status/accessibility.js:81 msgid "Slow Keys" msgstr "" #: ../js/ui/status/accessibility.js:84 msgid "Bounce Keys" msgstr "" #: ../js/ui/status/accessibility.js:87 msgid "Mouse Keys" msgstr "" #: ../js/ui/status/accessibility.js:91 msgid "Universal Access Settings" msgstr "" #: ../js/ui/status/accessibility.js:141 msgid "High Contrast" msgstr "" #: ../js/ui/status/accessibility.js:178 msgid "Large Text" msgstr "" #: ../js/ui/status/bluetooth.js:39 ../js/ui/status/bluetooth.js:261 #: ../js/ui/status/bluetooth.js:347 ../js/ui/status/bluetooth.js:381 #: ../js/ui/status/bluetooth.js:421 ../js/ui/status/bluetooth.js:454 msgid "Bluetooth" msgstr "" #: ../js/ui/status/bluetooth.js:52 msgid "Visibility" msgstr "" #: ../js/ui/status/bluetooth.js:66 msgid "Send Files to Device..." msgstr "" #: ../js/ui/status/bluetooth.js:67 msgid "Set up a New Device..." msgstr "" #: ../js/ui/status/bluetooth.js:91 msgid "Bluetooth Settings" msgstr "" #. TRANSLATORS: this means that bluetooth was disabled by hardware rfkill #: ../js/ui/status/bluetooth.js:111 msgid "hardware disabled" msgstr "" #: ../js/ui/status/bluetooth.js:208 msgid "Connection" msgstr "" #: ../js/ui/status/bluetooth.js:217 ../js/ui/status/network.js:486 msgid "disconnecting..." msgstr "" #: ../js/ui/status/bluetooth.js:230 ../js/ui/status/network.js:492 msgid "connecting..." msgstr "" #: ../js/ui/status/bluetooth.js:248 msgid "Send Files..." msgstr "" #: ../js/ui/status/bluetooth.js:253 msgid "Browse Files..." msgstr "" #: ../js/ui/status/bluetooth.js:262 msgid "Error browsing device" msgstr "" #: ../js/ui/status/bluetooth.js:263 #, c-format msgid "The requested device cannot be browsed, error is '%s'" msgstr "" #: ../js/ui/status/bluetooth.js:271 msgid "Keyboard Settings" msgstr "" #: ../js/ui/status/bluetooth.js:274 msgid "Mouse Settings" msgstr "" #: ../js/ui/status/bluetooth.js:279 ../js/ui/status/volume.js:62 msgid "Sound Settings" msgstr "" #: ../js/ui/status/bluetooth.js:382 #, c-format msgid "Authorization request from %s" msgstr "" #: ../js/ui/status/bluetooth.js:388 #, c-format msgid "Device %s wants access to the service '%s'" msgstr "" #: ../js/ui/status/bluetooth.js:390 msgid "Always grant access" msgstr "" #: ../js/ui/status/bluetooth.js:391 msgid "Grant this time only" msgstr "" #: ../js/ui/status/bluetooth.js:392 ../js/ui/telepathyClient.js:1204 msgid "Reject" msgstr "" #: ../js/ui/status/bluetooth.js:422 #, c-format msgid "Pairing confirmation for %s" msgstr "" #: ../js/ui/status/bluetooth.js:428 ../js/ui/status/bluetooth.js:462 #, c-format msgid "Device %s wants to pair with this computer" msgstr "" #: ../js/ui/status/bluetooth.js:429 #, c-format msgid "Please confirm whether the PIN '%s' matches the one on the device." msgstr "" #: ../js/ui/status/bluetooth.js:431 msgid "Matches" msgstr "" #: ../js/ui/status/bluetooth.js:432 msgid "Does not match" msgstr "" #: ../js/ui/status/bluetooth.js:455 #, c-format msgid "Pairing request for %s" msgstr "" #: ../js/ui/status/bluetooth.js:463 msgid "Please enter the PIN mentioned on the device." msgstr "" #: ../js/ui/status/bluetooth.js:479 msgid "OK" msgstr "" #: ../js/ui/status/keyboard.js:73 msgid "Show Keyboard Layout" msgstr "" #: ../js/ui/status/keyboard.js:78 msgid "Region and Language Settings" msgstr "" #: ../js/ui/status/network.js:97 msgid "" msgstr "" #. Translators: this indicates that wireless or wwan is disabled by hardware killswitch #: ../js/ui/status/network.js:285 msgid "disabled" msgstr "" #. Translators: this is for network devices that are physically present but are not #. under NetworkManager's control (and thus cannot be used in the menu) #: ../js/ui/status/network.js:484 msgid "unmanaged" msgstr "" #. Translators: this is for network connections that require some kind of key or password #: ../js/ui/status/network.js:495 msgid "authentication required" msgstr "" #. Translators: this is for devices that require some kind of firmware or kernel #. module, which is missing #: ../js/ui/status/network.js:505 msgid "firmware missing" msgstr "" #. Translators: this is for wired network devices that are physically disconnected #: ../js/ui/status/network.js:512 msgid "cable unplugged" msgstr "" #. Translators: this is for a network device that cannot be activated (for example it #. is disabled by rfkill, or it has no coverage #: ../js/ui/status/network.js:517 msgid "unavailable" msgstr "" #: ../js/ui/status/network.js:519 msgid "connection failed" msgstr "" #: ../js/ui/status/network.js:575 ../js/ui/status/network.js:1523 msgid "More..." msgstr "" #. TRANSLATORS: this is the indication that a connection for another logged in user is active, #. and we cannot access its settings (including the name) #: ../js/ui/status/network.js:611 ../js/ui/status/network.js:1458 msgid "Connected (private)" msgstr "" #: ../js/ui/status/network.js:689 msgid "Auto Ethernet" msgstr "" #: ../js/ui/status/network.js:753 msgid "Auto broadband" msgstr "" #: ../js/ui/status/network.js:756 msgid "Auto dial-up" msgstr "" #. TRANSLATORS: this the automatic wireless connection name (including the network name) #: ../js/ui/status/network.js:878 ../js/ui/status/network.js:1470 #, c-format msgid "Auto %s" msgstr "" #: ../js/ui/status/network.js:880 msgid "Auto bluetooth" msgstr "" #: ../js/ui/status/network.js:1472 msgid "Auto wireless" msgstr "" #: ../js/ui/status/network.js:1566 msgid "Enable networking" msgstr "" #: ../js/ui/status/network.js:1578 msgid "Wired" msgstr "" #: ../js/ui/status/network.js:1589 msgid "Wireless" msgstr "" #: ../js/ui/status/network.js:1599 msgid "Mobile broadband" msgstr "" #: ../js/ui/status/network.js:1609 msgid "VPN Connections" msgstr "" #: ../js/ui/status/network.js:1620 msgid "Network Settings" msgstr "" #: ../js/ui/status/network.js:1757 msgid "Connection failed" msgstr "" #: ../js/ui/status/network.js:1758 msgid "Activation of network connection failed" msgstr "" #: ../js/ui/status/network.js:2008 msgid "Networking is disabled" msgstr "" #: ../js/ui/status/network.js:2133 msgid "Network Manager" msgstr "" #: ../js/ui/status/power.js:82 msgid "Power Settings" msgstr "" #. 0 is reported when UPower does not have enough data #. to estimate battery life #: ../js/ui/status/power.js:103 msgid "Estimating..." msgstr "" #: ../js/ui/status/power.js:110 #, c-format msgid "%d hour remaining" msgid_plural "%d hours remaining" msgstr[0] "" msgstr[1] "" #. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining" #: ../js/ui/status/power.js:113 #, c-format msgid "%d %s %d %s remaining" msgstr "" #: ../js/ui/status/power.js:115 msgid "hour" msgid_plural "hours" msgstr[0] "" msgstr[1] "" #: ../js/ui/status/power.js:115 msgid "minute" msgid_plural "minutes" msgstr[0] "" msgstr[1] "" #: ../js/ui/status/power.js:118 #, c-format msgid "%d minute remaining" msgid_plural "%d minutes remaining" msgstr[0] "" msgstr[1] "" #: ../js/ui/status/power.js:121 ../js/ui/status/power.js:194 #, c-format msgctxt "percent of battery remaining" msgid "%d%%" msgstr "" #: ../js/ui/status/power.js:201 msgid "AC adapter" msgstr "" #: ../js/ui/status/power.js:203 msgid "Laptop battery" msgstr "" #: ../js/ui/status/power.js:205 msgid "UPS" msgstr "" #: ../js/ui/status/power.js:207 msgid "Monitor" msgstr "" #: ../js/ui/status/power.js:209 msgid "Mouse" msgstr "" #: ../js/ui/status/power.js:213 msgid "PDA" msgstr "" #: ../js/ui/status/power.js:215 msgid "Cell phone" msgstr "" #: ../js/ui/status/power.js:217 msgid "Media player" msgstr "" #: ../js/ui/status/power.js:219 msgid "Tablet" msgstr "" #: ../js/ui/status/power.js:221 msgid "Computer" msgstr "" #: ../js/ui/status/volume.js:42 msgid "Volume" msgstr "" #: ../js/ui/status/volume.js:54 msgid "Microphone" msgstr "" #. We got the TpContact #. FIXME: We don't have a 'chat room' icon (bgo #653737) use #. system-users for now as Empathy does. #: ../js/ui/telepathyClient.js:259 msgid "Invitation" msgstr "" #. We got the TpContact #: ../js/ui/telepathyClient.js:327 msgid "Call" msgstr "" #. We got the TpContact #: ../js/ui/telepathyClient.js:357 msgid "File Transfer" msgstr "" #: ../js/ui/telepathyClient.js:438 msgid "Subscription request" msgstr "" #: ../js/ui/telepathyClient.js:474 msgid "Connection error" msgstr "" #: ../js/ui/telepathyClient.js:741 #, c-format msgid "%s is online." msgstr "" #: ../js/ui/telepathyClient.js:746 #, c-format msgid "%s is offline." msgstr "" #: ../js/ui/telepathyClient.js:749 #, c-format msgid "%s is away." msgstr "" #: ../js/ui/telepathyClient.js:752 #, c-format msgid "%s is busy." msgstr "" #. Translators: this is a time format string followed by a date. #. If applicable, replace %X with a strftime format valid for your #. locale, without seconds. #: ../js/ui/telepathyClient.js:986 #, no-c-format msgid "Sent at %X on %A" msgstr "" #. Translators: this is a time format in the style of "Wednesday, May 25", #. shown when you get a chat message in the same year. #: ../js/ui/telepathyClient.js:992 #, no-c-format msgid "Sent on %A, %B %d" msgstr "" #. Translators: this is a time format in the style of "Wednesday, May 25, 2012", #. shown when you get a chat message in a different year. #: ../js/ui/telepathyClient.js:997 #, no-c-format msgid "Sent on %A, %B %d, %Y" msgstr "" #. Translators: this is the other person changing their old IM name to their new #. IM name. #: ../js/ui/telepathyClient.js:1039 #, c-format msgid "%s is now known as %s" msgstr "" #. translators: argument is a room name like #. * room@jabber.org for example. #: ../js/ui/telepathyClient.js:1148 #, c-format msgid "Invitation to %s" msgstr "" #. translators: first argument is the name of a contact and the second #. * one the name of a room. "Alice is inviting you to join room@jabber.org #. * for example. #: ../js/ui/telepathyClient.js:1156 #, c-format msgid "%s is inviting you to join %s" msgstr "" #: ../js/ui/telepathyClient.js:1158 ../js/ui/telepathyClient.js:1248 #: ../js/ui/telepathyClient.js:1352 msgid "Decline" msgstr "" #: ../js/ui/telepathyClient.js:1159 ../js/ui/telepathyClient.js:1249 #: ../js/ui/telepathyClient.js:1353 msgid "Accept" msgstr "" #. translators: argument is a contact name like Alice for example. #: ../js/ui/telepathyClient.js:1192 #, c-format msgid "Video call from %s" msgstr "" #. translators: argument is a contact name like Alice for example. #: ../js/ui/telepathyClient.js:1195 #, c-format msgid "Call from %s" msgstr "" #. translators: this is a button label (verb), not a noun #: ../js/ui/telepathyClient.js:1206 msgid "Answer" msgstr "" #. To translators: The first parameter is #. * the contact's alias and the second one is the #. * file name. The string will be something #. * like: "Alice is sending you test.ogg" #. #: ../js/ui/telepathyClient.js:1242 #, c-format msgid "%s is sending you %s" msgstr "" #. To translators: The parameter is the contact's alias #: ../js/ui/telepathyClient.js:1317 #, c-format msgid "%s would like permission to see when you are online" msgstr "" #: ../js/ui/telepathyClient.js:1415 msgid "Network error" msgstr "" #: ../js/ui/telepathyClient.js:1417 msgid "Authentication failed" msgstr "" #: ../js/ui/telepathyClient.js:1419 msgid "Encryption error" msgstr "" #: ../js/ui/telepathyClient.js:1421 msgid "Certificate not provided" msgstr "" #: ../js/ui/telepathyClient.js:1423 msgid "Certificate untrusted" msgstr "" #: ../js/ui/telepathyClient.js:1425 msgid "Certificate expired" msgstr "" #: ../js/ui/telepathyClient.js:1427 msgid "Certificate not activated" msgstr "" #: ../js/ui/telepathyClient.js:1429 msgid "Certificate hostname mismatch" msgstr "" #: ../js/ui/telepathyClient.js:1431 msgid "Certificate fingerprint mismatch" msgstr "" #: ../js/ui/telepathyClient.js:1433 msgid "Certificate self-signed" msgstr "" #: ../js/ui/telepathyClient.js:1435 msgid "Status is set to offline" msgstr "" #: ../js/ui/telepathyClient.js:1437 msgid "Encryption is not available" msgstr "" #: ../js/ui/telepathyClient.js:1439 msgid "Certificate is invalid" msgstr "" #: ../js/ui/telepathyClient.js:1441 msgid "Connection has been refused" msgstr "" #: ../js/ui/telepathyClient.js:1443 msgid "Connection can't be established" msgstr "" #: ../js/ui/telepathyClient.js:1445 msgid "Connection has been lost" msgstr "" #: ../js/ui/telepathyClient.js:1447 msgid "This resource is already connected to the server" msgstr "" #: ../js/ui/telepathyClient.js:1449 msgid "" "Connection has been replaced by a new connection using the same resource" msgstr "" #: ../js/ui/telepathyClient.js:1451 msgid "The account already exists on the server" msgstr "" #: ../js/ui/telepathyClient.js:1453 msgid "Server is currently too busy to handle the connection" msgstr "" #: ../js/ui/telepathyClient.js:1455 msgid "Certificate has been revoked" msgstr "" #: ../js/ui/telepathyClient.js:1457 msgid "" "Certificate uses an insecure cipher algorithm or is cryptographically weak" msgstr "" #: ../js/ui/telepathyClient.js:1459 msgid "" "The length of the server certificate, or the depth of the server certificate " "chain, exceed the limits imposed by the cryptography library" msgstr "" #. translators: argument is the account name, like #. * name@jabber.org for example. #: ../js/ui/telepathyClient.js:1468 #, c-format msgid "Connection to %s failed" msgstr "" #: ../js/ui/telepathyClient.js:1477 msgid "Reconnect" msgstr "" #: ../js/ui/telepathyClient.js:1478 msgid "Edit account" msgstr "" #: ../js/ui/telepathyClient.js:1524 msgid "Unknown reason" msgstr "" #: ../js/ui/userMenu.js:145 msgid "Hidden" msgstr "" #: ../js/ui/userMenu.js:151 msgid "Idle" msgstr "" #: ../js/ui/userMenu.js:154 msgid "Unavailable" msgstr "" #: ../js/ui/userMenu.js:547 ../js/ui/userMenu.js:551 ../js/ui/userMenu.js:621 msgid "Power Off..." msgstr "" #: ../js/ui/userMenu.js:583 msgid "Notifications" msgstr "" #: ../js/ui/userMenu.js:591 msgid "Online Accounts" msgstr "" #: ../js/ui/userMenu.js:595 msgid "System Settings" msgstr "" #: ../js/ui/userMenu.js:602 msgid "Lock Screen" msgstr "" #: ../js/ui/userMenu.js:607 msgid "Switch User" msgstr "" #: ../js/ui/userMenu.js:612 msgid "Log Out..." msgstr "" #: ../js/ui/userMenu.js:640 msgid "Your chat status will be set to busy" msgstr "" #: ../js/ui/userMenu.js:641 msgid "" "Notifications are now disabled, including chat messages. Your online status " "has been adjusted to let others know that you might not see their messages." msgstr "" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: ../js/ui/viewSelector.js:120 msgid "Type to search..." msgstr "" #: ../js/ui/viewSelector.js:140 ../src/shell-util.c:261 msgid "Search" msgstr "" #: ../js/ui/windowAttentionHandler.js:35 #, c-format msgid "'%s' is ready" msgstr "" #. translators: #. * The number of sound outputs on a particular device #: ../src/gvc/gvc-mixer-control.c:1100 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "" msgstr[1] "" #. translators: #. * The number of sound inputs on a particular device #: ../src/gvc/gvc-mixer-control.c:1110 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "" msgstr[1] "" #: ../src/gvc/gvc-mixer-control.c:1408 msgid "System Sounds" msgstr "" #: ../src/main.c:480 msgid "Print version" msgstr "" #: ../src/main.c:486 msgid "Mode used by GDM for login screen" msgstr "" #: ../src/shell-app.c:579 #, c-format msgid "Failed to launch '%s'" msgstr "" #: ../src/shell-mobile-providers.c:80 msgid "United Kingdom" msgstr "" #: ../src/shell-mobile-providers.c:526 msgid "Default" msgstr "" #: ../src/shell-polkit-authentication-agent.c:334 msgid "Authentication dialog was dismissed by the user" msgstr "" #: ../src/shell-util.c:100 msgid "Home Folder" msgstr "Peldanka mal" #. Translators: this is the same string as the one found in #. * nautilus #: ../src/shell-util.c:115 msgid "File System" msgstr "Pergala pelan" #. Translators: the first string is the name of a gvfs #. * method, and the second string is a path. For #. * example, "Trash: some-directory". It means that the #. * directory called "some-directory" is in the trash. #. #: ../src/shell-util.c:311 #, c-format msgid "%1$s: %2$s" msgstr "%1$s: %2$s" 07070100000248000081A40000000000000000000000016712993F0000C89A000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/ky.po# Kirghiz translation for gnome-shell. # Copyright (C) 2012 The gnome-shell authors. # This file is distributed under the same license as the gnome-shell package. # # Chynggyz Jumaliev , 2012. # Timur Zhamakeev , 2012. # msgid "" msgstr "" "Project-Id-Version: gnome-shell-3-6\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "shell&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2012-09-22 18:40+0000\n" "PO-Revision-Date: 2012-09-24 14:29+0600\n" "Last-Translator: Timur Zhamakeev \n" "Language-Team: Kirghiz \n" "Language: ky\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-Poedit-SourceCharset: UTF-8\n" "X-Generator: Lokalize 1.4\n" #: ../data/50-gnome-shell-screenshot.xml.in.h:1 msgid "Screenshots" msgstr "" #: ../data/50-gnome-shell-screenshot.xml.in.h:2 msgid "Record a screencast" msgstr "" #: ../data/50-gnome-shell-system.xml.in.h:1 #| msgid "File System" msgid "System" msgstr "Файлдар системасы" #: ../data/50-gnome-shell-system.xml.in.h:2 msgid "Show the message tray" msgstr "Кабар сабын көрсөтүү" #: ../data/gnome-shell.desktop.in.in.h:1 msgid "GNOME Shell" msgstr "GNOME Shell" #: ../data/gnome-shell.desktop.in.in.h:2 msgid "Window management and application launching" msgstr "Терезелерди башкаруу жана тиркемелерди иштетүү" #: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1 #: ../js/extensionPrefs/main.js:152 msgid "GNOME Shell Extension Preferences" msgstr "GNOME Shell кеңейтмелеринин параметрлери" #: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2 msgid "Configure GNOME Shell Extensions" msgstr "GNOME Shell кеңейтмелерин ырастоо" #: ../data/org.gnome.shell.gschema.xml.in.in.h:1 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:2 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:3 msgid "Uuids of extensions to enable" msgstr "Күйгүзүлгөн кеңейтмелердин uuid'ри" #: ../data/org.gnome.shell.gschema.xml.in.in.h:4 msgid "" "GNOME Shell extensions have a uuid property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension DBus methods on org.gnome.Shell." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:5 msgid "Whether to collect stats about applications usage" msgstr "Тиркемелерди колдонуу жөнүндө статистиканы чогултуш керекпи" #: ../data/org.gnome.shell.gschema.xml.in.in.h:6 msgid "" "The shell normally monitors active applications in order to present the most " "used ones (e.g. in launchers). While this data will be kept private, you may " "want to disable this for privacy reasons. Please note that doing so won't " "remove already saved data." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:7 msgid "List of desktop file IDs for favorite applications" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:8 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:9 msgid "History for command (Alt-F2) dialog" msgstr "(Alt-F2) диалогунун команда тарыхы" #: ../data/org.gnome.shell.gschema.xml.in.in.h:10 msgid "History for the looking glass dialog" msgstr "Тунук диалогтун көрүү тарыхы" #: ../data/org.gnome.shell.gschema.xml.in.in.h:11 msgid "" "Internally used to store the last IM presence explicitly set by the user. " "The value here is from the TpConnectionPresenceType enumeration." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:12 msgid "" "Internally used to store the last session presence status for the user. The " "value here is from the GsmPresenceStatus enumeration." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:13 msgid "Show the week date in the calendar" msgstr "Жылнаамадан жуманын датасын көрсөтүү" #: ../data/org.gnome.shell.gschema.xml.in.in.h:14 msgid "If true, display the ISO week date in the calendar." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:15 msgid "Keybinding to open the application menu" msgstr "Тиркеме менюсун ачуу үчүн клавиштик айкалыш" #: ../data/org.gnome.shell.gschema.xml.in.in.h:16 msgid "Keybinding to open the application menu." msgstr "Тиркеме менюсун ачуу үчүн клавиштик айкалыш." #: ../data/org.gnome.shell.gschema.xml.in.in.h:17 #, fuzzy #| msgid "Keybinding to toggle the screen recorder" msgid "Keybinding to toggle the visibility of the message tray" msgstr "Экран тарткычты которуучу клавиштик айкалыш" #: ../data/org.gnome.shell.gschema.xml.in.in.h:18 #, fuzzy #| msgid "Keybinding to toggle the screen recorder" msgid "Keybinding to toggle the visibility of the message tray." msgstr "Экран тарткычты которуучу клавиштик айкалыш" #: ../data/org.gnome.shell.gschema.xml.in.in.h:19 msgid "Keybinding to toggle the screen recorder" msgstr "Экран тарткычты которуучу клавиштик айкалыш" #: ../data/org.gnome.shell.gschema.xml.in.in.h:20 msgid "Keybinding to start/stop the builtin screen recorder." msgstr "Ички экран тарткычты жүргүзүүчү/токтотуучу клавиштик айкалыш." #: ../data/org.gnome.shell.gschema.xml.in.in.h:21 msgid "Which keyboard to use" msgstr "Кайсы клавиатураны колдонуу" #: ../data/org.gnome.shell.gschema.xml.in.in.h:22 msgid "The type of keyboard to use." msgstr "Колдонгон клавиатуранын түрү." #: ../data/org.gnome.shell.gschema.xml.in.in.h:23 msgid "Framerate used for recording screencasts." msgstr "Скринкасттарды жазыш үчүн кадр жыштыгынын алмашуусу." #: ../data/org.gnome.shell.gschema.xml.in.in.h:24 msgid "" "The framerate of the resulting screencast recordered by GNOME Shell's " "screencast recorder in frames-per-second." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:25 msgid "The gstreamer pipeline used to encode the screencast" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:27 #, no-c-format msgid "" "Sets the GStreamer pipeline used to encode recordings. It follows the syntax " "used for gst-launch. The pipeline should have an unconnected sink pad where " "the recorded video is recorded. It will normally have a unconnected source " "pad; output from that pad will be written into the output file. However the " "pipeline can also take care of its own output - this might be used to send " "the output to an icecast server via shout2send or similar. When unset or set " "to an empty value, the default pipeline will be used. This is currently " "'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 " "threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is " "used as a placeholder for a guess at the optimal thread count on the system." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:28 msgid "File extension used for storing the screencast" msgstr "Скринкасттарды сактоо үчүн колдонулган файлдын кеңейтмеси" #: ../data/org.gnome.shell.gschema.xml.in.in.h:29 msgid "" "The filename for recorded screencasts will be a unique filename based on the " "current date, and use this extension. It should be changed when recording to " "a different container format." msgstr "" #: ../js/extensionPrefs/main.js:124 #, c-format msgid "There was an error loading the preferences dialog for %s:" msgstr "" #: ../js/extensionPrefs/main.js:164 #, fuzzy #| msgid "Extension" msgid "Extension" msgstr "Кеңейтме" #: ../js/extensionPrefs/main.js:188 msgid "Select an extension to configure using the combobox above." msgstr "" #: ../js/gdm/loginDialog.js:526 msgid "Session..." msgstr "Сеанс…" #: ../js/gdm/loginDialog.js:674 msgctxt "title" msgid "Sign In" msgstr "Кирүү" #. translators: this message is shown below the user list on the #. login screen. It can be activated to reveal an entry for #. manually entering the username. #: ../js/gdm/loginDialog.js:741 msgid "Not listed?" msgstr "Тизмеде жокпу?" #: ../js/gdm/loginDialog.js:894 ../js/ui/components/networkAgent.js:137 #: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373 #: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396 #: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166 msgid "Cancel" msgstr "Айнуу" #: ../js/gdm/loginDialog.js:899 msgctxt "button" msgid "Sign In" msgstr "Кирүү" #: ../js/gdm/loginDialog.js:1238 msgid "Login Window" msgstr "Кирүү терезеси" #: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:658 ../js/ui/userMenu.js:662 #: ../js/ui/userMenu.js:773 msgid "Suspend" msgstr "Күтүүчү режим" #: ../js/gdm/powerMenu.js:93 msgid "Restart" msgstr "Кайта жүргүзүү" #: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:662 #: ../js/ui/userMenu.js:772 msgid "Power Off" msgstr "Өчүрүү" #: ../js/gdm/util.js:148 #, fuzzy #| msgid "Authentication Required" msgid "Authentication error" msgstr "Аутентификация керек" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger instead #: ../js/gdm/util.js:265 msgid "(or swipe finger)" msgstr "(же эсептеген орнотмодон бармагыңызды өткөрүңүз)" #: ../js/gdm/util.js:290 #, c-format msgid "(e.g., user or %s)" msgstr "" #: ../js/misc/util.js:92 msgid "Command not found" msgstr "Команда табылбады" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: ../js/misc/util.js:125 msgid "Could not parse command:" msgstr "Команданы талдоого мүмкүн эмес:" #: ../js/misc/util.js:133 #, c-format msgid "Execution of '%s' failed:" msgstr "" #. Translators: Filter to display all applications #: ../js/ui/appDisplay.js:252 msgid "All" msgstr "Баары" #: ../js/ui/appDisplay.js:310 msgid "APPLICATIONS" msgstr "ТИРКЕМЕЛЕР" #: ../js/ui/appDisplay.js:370 msgid "SETTINGS" msgstr "ЫРАСТООЛОР" #: ../js/ui/appDisplay.js:675 msgid "New Window" msgstr "Жаңы терезе" #: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:271 msgid "Remove from Favorites" msgstr "Тандалмадан өчүрүү" #: ../js/ui/appDisplay.js:679 msgid "Add to Favorites" msgstr "Тандалмага кошуу" #: ../js/ui/appFavorites.js:87 #, c-format msgid "%s has been added to your favorites." msgstr "Cиздин тандалмаларыңызга %s кошулду." #: ../js/ui/appFavorites.js:118 #, c-format msgid "%s has been removed from your favorites." msgstr "Cиздин тандалмаларыңыздан %s алынды." #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: ../js/ui/calendar.js:62 msgctxt "event list time" msgid "All Day" msgstr "Бүт күн" #. Translators: Shown in calendar event list, if 24h format #: ../js/ui/calendar.js:67 msgctxt "event list time" msgid "%H:%M" msgstr "%H:%M" #. Transators: Shown in calendar event list, if 12h format #: ../js/ui/calendar.js:74 msgctxt "event list time" msgid "%l:%M %p" msgstr "%l:%M %p" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: ../js/ui/calendar.js:114 msgctxt "grid sunday" msgid "S" msgstr "Жк" #. Translators: Calendar grid abbreviation for Monday #: ../js/ui/calendar.js:116 msgctxt "grid monday" msgid "M" msgstr "Дш" #. Translators: Calendar grid abbreviation for Tuesday #: ../js/ui/calendar.js:118 msgctxt "grid tuesday" msgid "T" msgstr "Ше" #. Translators: Calendar grid abbreviation for Wednesday #: ../js/ui/calendar.js:120 msgctxt "grid wednesday" msgid "W" msgstr "Ша" #. Translators: Calendar grid abbreviation for Thursday #: ../js/ui/calendar.js:122 msgctxt "grid thursday" msgid "T" msgstr "Бш" #. Translators: Calendar grid abbreviation for Friday #: ../js/ui/calendar.js:124 msgctxt "grid friday" msgid "F" msgstr "Жм" #. Translators: Calendar grid abbreviation for Saturday #: ../js/ui/calendar.js:126 msgctxt "grid saturday" msgid "S" msgstr "Иш" #. Translators: Event list abbreviation for Sunday. #. * #. * NOTE: These list abbreviations are normally not shown together #. * so they need to be unique (e.g. Tuesday and Thursday cannot #. * both be 'T'). #. #: ../js/ui/calendar.js:139 msgctxt "list sunday" msgid "Su" msgstr "Жк" #. Translators: Event list abbreviation for Monday #: ../js/ui/calendar.js:141 msgctxt "list monday" msgid "M" msgstr "Дш" #. Translators: Event list abbreviation for Tuesday #: ../js/ui/calendar.js:143 msgctxt "list tuesday" msgid "T" msgstr "Ше" #. Translators: Event list abbreviation for Wednesday #: ../js/ui/calendar.js:145 msgctxt "list wednesday" msgid "W" msgstr "Ша" #. Translators: Event list abbreviation for Thursday #: ../js/ui/calendar.js:147 msgctxt "list thursday" msgid "Th" msgstr "Бш" #. Translators: Event list abbreviation for Friday #: ../js/ui/calendar.js:149 msgctxt "list friday" msgid "F" msgstr "Жм" #. Translators: Event list abbreviation for Saturday #: ../js/ui/calendar.js:151 msgctxt "list saturday" msgid "S" msgstr "Иш" #. Translators: Text to show if there are no events #: ../js/ui/calendar.js:699 msgid "Nothing Scheduled" msgstr "Окуялар жок" #. Translators: Shown on calendar heading when selected day occurs on current year #: ../js/ui/calendar.js:715 msgctxt "calendar heading" msgid "%A, %B %d" msgstr "%B айынын %e %a" #. Translators: Shown on calendar heading when selected day occurs on different year #: ../js/ui/calendar.js:718 msgctxt "calendar heading" msgid "%A, %B %d, %Y" msgstr "%Y-ж. %B айынын %e %a" #: ../js/ui/calendar.js:728 msgid "Today" msgstr "Бүгүн" #: ../js/ui/calendar.js:732 msgid "Tomorrow" msgstr "Эртең" #: ../js/ui/calendar.js:743 msgid "This week" msgstr "Ушул жума" #: ../js/ui/calendar.js:751 msgid "Next week" msgstr "Кийинки жума" #: ../js/ui/components/autorunManager.js:278 msgid "Removable Devices" msgstr "Алынуучу орнотмолор" #: ../js/ui/components/autorunManager.js:575 #, c-format msgid "Open with %s" msgstr "%s менен ачуу" #: ../js/ui/components/autorunManager.js:601 msgid "Eject" msgstr "Чыгаруу" #: ../js/ui/components/keyring.js:86 ../js/ui/components/polkitAgent.js:260 msgid "Password:" msgstr "Сырсөз:" #: ../js/ui/components/keyring.js:105 msgid "Type again:" msgstr "Дагы киргизиңиз:" #: ../js/ui/components/networkAgent.js:132 msgid "Connect" msgstr "Туташуу" #. Cisco LEAP #: ../js/ui/components/networkAgent.js:223 #: ../js/ui/components/networkAgent.js:235 #: ../js/ui/components/networkAgent.js:262 #: ../js/ui/components/networkAgent.js:282 #: ../js/ui/components/networkAgent.js:292 msgid "Password: " msgstr "Сырсөз: " #. static WEP #: ../js/ui/components/networkAgent.js:228 msgid "Key: " msgstr "Ачкыч: " #. TTLS and PEAP are actually much more complicated, but this complication #. is not visible here since we only care about phase2 authentication #. (and don't even care of which one) #: ../js/ui/components/networkAgent.js:260 #: ../js/ui/components/networkAgent.js:278 msgid "Username: " msgstr "Колдонуучу аты: " #: ../js/ui/components/networkAgent.js:266 msgid "Identity: " msgstr "Окшоштук: " #: ../js/ui/components/networkAgent.js:268 msgid "Private key password: " msgstr "Өздүк ачкычтын сырсөзү: " #: ../js/ui/components/networkAgent.js:280 msgid "Service: " msgstr "Кызмат: " #: ../js/ui/components/networkAgent.js:309 msgid "Authentication required by wireless network" msgstr "Зымсыз тармагына аутентификация керек" #: ../js/ui/components/networkAgent.js:310 #, c-format msgid "" "Passwords or encryption keys are required to access the wireless network " "'%s'." msgstr "" #: ../js/ui/components/networkAgent.js:314 msgid "Wired 802.1X authentication" msgstr "Wired 802.1X аутентификация" #: ../js/ui/components/networkAgent.js:316 msgid "Network name: " msgstr "Тармак аты: " #: ../js/ui/components/networkAgent.js:321 msgid "DSL authentication" msgstr "DSL аутентификация" #: ../js/ui/components/networkAgent.js:328 msgid "PIN code required" msgstr "PIN-код керек" #: ../js/ui/components/networkAgent.js:329 msgid "PIN code is needed for the mobile broadband device" msgstr "" #: ../js/ui/components/networkAgent.js:330 msgid "PIN: " msgstr "PIN: " #: ../js/ui/components/networkAgent.js:336 msgid "Mobile broadband network password" msgstr "Мобилдүү жазы тилкелик тармак үчүн сырсөз" #: ../js/ui/components/networkAgent.js:337 #, c-format msgid "A password is required to connect to '%s'." msgstr "«%s» жерине туташыш үчүн сырсөз керек." #: ../js/ui/components/polkitAgent.js:55 msgid "Authentication Required" msgstr "Аутентификация керек" #: ../js/ui/components/polkitAgent.js:93 msgid "Administrator" msgstr "Администратор" #: ../js/ui/components/polkitAgent.js:166 msgid "Authenticate" msgstr "Аныктоо" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: ../js/ui/components/polkitAgent.js:248 ../js/ui/shellMountOperation.js:381 msgid "Sorry, that didn't work. Please try again." msgstr "Кечириңиз, бул иштеген жок. Дагы аракет кылып көрүңүз." #. Translators: this is a filename used for screencast recording #: ../js/ui/components/recorder.js:44 #, no-c-format msgid "Screencast from %d %t" msgstr "Скринкаст %d %t" #. FIXME: We don't have a 'chat room' icon (bgo #653737) use #. system-users for now as Empathy does. #: ../js/ui/components/telepathyClient.js:237 msgid "Invitation" msgstr "Чакыруу" #. We got the TpContact #: ../js/ui/components/telepathyClient.js:297 msgid "Call" msgstr "Чакыруу" #. We got the TpContact #: ../js/ui/components/telepathyClient.js:313 msgid "File Transfer" msgstr "Файл берүү" #: ../js/ui/components/telepathyClient.js:394 msgid "Subscription request" msgstr "Жазылыш сурамы" #: ../js/ui/components/telepathyClient.js:430 msgid "Connection error" msgstr "Туташуу катасы" #: ../js/ui/components/telepathyClient.js:491 msgid "Unmute" msgstr "Катуулукту калыбына келтирүү" #: ../js/ui/components/telepathyClient.js:491 msgid "Mute" msgstr "Үндү басаңдатуу" #. Translators: this is a time format string followed by a date. #. If applicable, replace %X with a strftime format valid for your #. locale, without seconds. #: ../js/ui/components/telepathyClient.js:948 #, no-c-format msgid "Sent at %X on %A" msgstr "" #. Translators: this is a time format in the style of "Wednesday, May 25", #. shown when you get a chat message in the same year. #: ../js/ui/components/telepathyClient.js:954 #, no-c-format msgid "Sent on %A, %B %d" msgstr "" #. Translators: this is a time format in the style of "Wednesday, May 25, 2012", #. shown when you get a chat message in a different year. #: ../js/ui/components/telepathyClient.js:959 #, no-c-format msgid "Sent on %A, %B %d, %Y" msgstr "" #. Translators: this is the other person changing their old IM name to their new #. IM name. #: ../js/ui/components/telepathyClient.js:988 #, c-format msgid "%s is now known as %s" msgstr "%s эми %s болуп калды" #. translators: argument is a room name like #. * room@jabber.org for example. #: ../js/ui/components/telepathyClient.js:1088 #, c-format msgid "Invitation to %s" msgstr "%s бөлүмүнө чакыруу" #. translators: first argument is the name of a contact and the second #. * one the name of a room. "Alice is inviting you to join room@jabber.org #. * for example. #: ../js/ui/components/telepathyClient.js:1096 #, c-format msgid "%s is inviting you to join %s" msgstr "%s сизди %s бөлүмүнө чакырып жатат" #: ../js/ui/components/telepathyClient.js:1098 #: ../js/ui/components/telepathyClient.js:1177 #: ../js/ui/components/telepathyClient.js:1240 msgid "Decline" msgstr "Кабыл албоо" #: ../js/ui/components/telepathyClient.js:1099 #: ../js/ui/components/telepathyClient.js:1178 #: ../js/ui/components/telepathyClient.js:1241 msgid "Accept" msgstr "Кабыл алуу" #. translators: argument is a contact name like Alice for example. #: ../js/ui/components/telepathyClient.js:1129 #, c-format msgid "Video call from %s" msgstr "Сизди видеодон %s чыкырып жатат" #. translators: argument is a contact name like Alice for example. #: ../js/ui/components/telepathyClient.js:1132 #, c-format msgid "Call from %s" msgstr "Сизди %s чакырып жатат" #: ../js/ui/components/telepathyClient.js:1137 #: ../js/ui/status/bluetooth.js:346 msgid "Reject" msgstr "Кабыл албоо" #. translators: this is a button label (verb), not a noun #: ../js/ui/components/telepathyClient.js:1139 msgid "Answer" msgstr "Жооп берүү" #. To translators: The first parameter is #. * the contact's alias and the second one is the #. * file name. The string will be something #. * like: "Alice is sending you test.ogg" #. #: ../js/ui/components/telepathyClient.js:1171 #, c-format msgid "%s is sending you %s" msgstr "%s сизге %s жиберип жатат" #. To translators: The parameter is the contact's alias #: ../js/ui/components/telepathyClient.js:1206 #, c-format msgid "%s would like permission to see when you are online" msgstr "" #: ../js/ui/components/telepathyClient.js:1298 msgid "Network error" msgstr "Тармак катасы" #: ../js/ui/components/telepathyClient.js:1300 msgid "Authentication failed" msgstr "Аутентификация оңунан чыккан жок" #: ../js/ui/components/telepathyClient.js:1302 msgid "Encryption error" msgstr "Шифрлоо катасы" #: ../js/ui/components/telepathyClient.js:1304 msgid "Certificate not provided" msgstr "Сертификат берилбейт" #: ../js/ui/components/telepathyClient.js:1306 msgid "Certificate untrusted" msgstr "Ишеничсиз сертификат" #: ../js/ui/components/telepathyClient.js:1308 msgid "Certificate expired" msgstr "Сертификаттын күч мөөнөтү өткөн" #: ../js/ui/components/telepathyClient.js:1310 msgid "Certificate not activated" msgstr "Сертификат активацияланган жок" #: ../js/ui/components/telepathyClient.js:1312 msgid "Certificate hostname mismatch" msgstr "Сертификаттын түйүн аты дал келген жок" #: ../js/ui/components/telepathyClient.js:1314 msgid "Certificate fingerprint mismatch" msgstr "Сертификаттын бармак тагы дал келген жок" #: ../js/ui/components/telepathyClient.js:1316 msgid "Certificate self-signed" msgstr "Өз жазылган сертификат" #: ../js/ui/components/telepathyClient.js:1318 msgid "Status is set to offline" msgstr "Офлайн статусуна коюлду" #: ../js/ui/components/telepathyClient.js:1320 msgid "Encryption is not available" msgstr "Шифрлоо жеткиликсиз" #: ../js/ui/components/telepathyClient.js:1322 msgid "Certificate is invalid" msgstr "Жарабас сертификат" #: ../js/ui/components/telepathyClient.js:1324 msgid "Connection has been refused" msgstr "Туташтырууга кабыл албады" #: ../js/ui/components/telepathyClient.js:1326 msgid "Connection can't be established" msgstr "Туташтырууну коюуга мүмкүн эмес" #: ../js/ui/components/telepathyClient.js:1328 msgid "Connection has been lost" msgstr "Туташтыруу жоготулду" #: ../js/ui/components/telepathyClient.js:1330 msgid "This account is already connected to the server" msgstr "Бул эсептик жазылыш эчак эле серверге туташытырлган" #: ../js/ui/components/telepathyClient.js:1332 msgid "" "Connection has been replaced by a new connection using the same resource" msgstr "" #: ../js/ui/components/telepathyClient.js:1334 msgid "The account already exists on the server" msgstr "Эсептик жазылыш эчак эле серверде бар" #: ../js/ui/components/telepathyClient.js:1336 msgid "Server is currently too busy to handle the connection" msgstr "Учурда туташтырууну иштетип чыгаруу үчүн сервердин күчү жетпей жатат" #: ../js/ui/components/telepathyClient.js:1338 msgid "Certificate has been revoked" msgstr "Сертификат жокко чыгарылды" #: ../js/ui/components/telepathyClient.js:1340 msgid "" "Certificate uses an insecure cipher algorithm or is cryptographically weak" msgstr "" #: ../js/ui/components/telepathyClient.js:1342 msgid "" "The length of the server certificate, or the depth of the server certificate " "chain, exceed the limits imposed by the cryptography library" msgstr "" #: ../js/ui/components/telepathyClient.js:1344 msgid "Internal error" msgstr "Ички ката" #. translators: argument is the account name, like #. * name@jabber.org for example. #: ../js/ui/components/telepathyClient.js:1354 #, c-format msgid "Connection to %s failed" msgstr "%s дарегине туташтыруу оңунан чыккан жок" #: ../js/ui/components/telepathyClient.js:1363 msgid "Reconnect" msgstr "Кайта туташуу" #: ../js/ui/components/telepathyClient.js:1364 msgid "Edit account" msgstr "Эсептик жазылышты оңдоо" #: ../js/ui/components/telepathyClient.js:1409 msgid "Unknown reason" msgstr "Белгисиз себеп" #: ../js/ui/dash.js:245 ../js/ui/dash.js:273 #, fuzzy #| msgid "Applications" msgid "Show Applications" msgstr "Тиркемелер" #: ../js/ui/dateMenu.js:86 msgid "Date and Time Settings" msgstr "Дата жана убакытты ырастоо" #: ../js/ui/dateMenu.js:109 msgid "Open Calendar" msgstr "Жылнааманы ачуу" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM"). #. #: ../js/ui/dateMenu.js:175 msgid "%A %B %e, %Y" msgstr "%Y-ж. %B айынын %e %a" #: ../js/ui/endSessionDialog.js:61 #, c-format msgctxt "title" msgid "Log Out %s" msgstr "%s колдонуучусунун сеансын бүтүрүү" #: ../js/ui/endSessionDialog.js:62 msgctxt "title" msgid "Log Out" msgstr "Системадан чыгуу" #: ../js/ui/endSessionDialog.js:63 msgid "Click Log Out to quit these applications and log out of the system." msgstr "" #: ../js/ui/endSessionDialog.js:65 #, c-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "" "%s колдонуучусунун сеансы %d секундадан кийин автоматтуу түрдө бүтүрүлөт." #: ../js/ui/endSessionDialog.js:70 #, c-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "%d секундадан кийин автоматтуу түрдө сеанс бүтөт." #: ../js/ui/endSessionDialog.js:74 msgid "Logging out of the system." msgstr "Системадан чыгуу." #: ../js/ui/endSessionDialog.js:76 msgctxt "button" msgid "Log Out" msgstr "Системадан чыгуу" #: ../js/ui/endSessionDialog.js:81 msgctxt "title" msgid "Power Off" msgstr "Өчүрүү" #: ../js/ui/endSessionDialog.js:82 msgid "Click Power Off to quit these applications and power off the system." msgstr "" #: ../js/ui/endSessionDialog.js:84 #, c-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "%d секундадан кийин автоматтуу түрдө система өчүрүлөт." #: ../js/ui/endSessionDialog.js:88 msgid "Powering off the system." msgstr "Системаны өчүрүү." #: ../js/ui/endSessionDialog.js:90 ../js/ui/endSessionDialog.js:107 msgctxt "button" msgid "Restart" msgstr "Кайта жүргүзүү" #: ../js/ui/endSessionDialog.js:92 msgctxt "button" msgid "Power Off" msgstr "Өчүрүү" #: ../js/ui/endSessionDialog.js:98 msgctxt "title" msgid "Restart" msgstr "Кайта жүргүзүү" #: ../js/ui/endSessionDialog.js:99 msgid "Click Restart to quit these applications and restart the system." msgstr "" #: ../js/ui/endSessionDialog.js:101 #, c-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "%d секундадан кийин автоматтуу түрдө система кайта жүргүзүлөт." #: ../js/ui/endSessionDialog.js:105 msgid "Restarting the system." msgstr "Системаны кайта жүргүзүү." #: ../js/ui/extensionDownloader.js:199 msgid "Install" msgstr "Орнотуу" #: ../js/ui/extensionDownloader.js:204 #, c-format msgid "Download and install '%s' from extensions.gnome.org?" msgstr "extensions.gnome.org сайтынан «%s» кеңейтмесин жүктөп орнотосузбу?" #: ../js/ui/keyboard.js:327 msgid "tray" msgstr "жайма" #: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:195 #: ../js/ui/status/power.js:205 msgid "Keyboard" msgstr "Клавиатура" #: ../js/ui/lookingGlass.js:691 msgid "No extensions installed" msgstr "Кеңейтмелер орнотулган жок" #. Translators: argument is an extension UUID. #: ../js/ui/lookingGlass.js:745 #, c-format msgid "%s has not emitted any errors." msgstr "%s каталар жөнүндө эч нерсе маалымдаган жок." #: ../js/ui/lookingGlass.js:751 msgid "Hide Errors" msgstr "Каталарды катуу" #: ../js/ui/lookingGlass.js:755 ../js/ui/lookingGlass.js:815 msgid "Show Errors" msgstr "Каталарды көрсөтүү" #: ../js/ui/lookingGlass.js:764 msgid "Enabled" msgstr "Күйгүлгөн" #. translators: #. * The device has been disabled #: ../js/ui/lookingGlass.js:767 ../src/gvc/gvc-mixer-control.c:1082 msgid "Disabled" msgstr "Өчүрүлгөн" #: ../js/ui/lookingGlass.js:769 msgid "Error" msgstr "Ката" #: ../js/ui/lookingGlass.js:771 msgid "Out of date" msgstr "Эскирген" #: ../js/ui/lookingGlass.js:773 msgid "Downloading" msgstr "Жүктөө" #: ../js/ui/lookingGlass.js:797 msgid "View Source" msgstr "Кодду көрсөтүү" #: ../js/ui/lookingGlass.js:806 msgid "Web Page" msgstr "Веб-барак" #: ../js/ui/messageTray.js:1080 msgid "Open" msgstr "Ачуу" #: ../js/ui/messageTray.js:1087 msgid "Remove" msgstr "Өчүрүү" #: ../js/ui/messageTray.js:2055 msgid "Message Tray" msgstr "" #: ../js/ui/messageTray.js:2511 msgid "System Information" msgstr "Системалык информация" #: ../js/ui/notificationDaemon.js:506 ../src/shell-app.c:373 msgctxt "program" msgid "Unknown" msgstr "Белгисиз" #: ../js/ui/overview.js:82 msgid "Undo" msgstr "Жокко чыгаруу" #: ../js/ui/overview.js:127 msgid "Overview" msgstr "Сереп" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: ../js/ui/overview.js:201 msgid "Type to search..." msgstr "Табуу…" #. Translators: this is the name of the dock/favorites area on #. the left of the overview #: ../js/ui/overview.js:222 msgid "Dash" msgstr "Аспаптык панель" #: ../js/ui/panel.js:567 msgid "Quit" msgstr "Жабуу" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: ../js/ui/panel.js:599 msgid "Activities" msgstr "Сереп" #: ../js/ui/panel.js:965 msgid "Top Bar" msgstr "Үстүңкү панель" #. Translators: this MUST be either "toggle-switch-us" #. (for toggle switches containing the English words #. "ON" and "OFF") or "toggle-switch-intl" (for toggle #. switches containing "◯" and "|"). Other values will #. simply result in invisible toggle switches. #: ../js/ui/popupMenu.js:731 msgid "toggle-switch-us" msgstr "toggle-switch-intl" #: ../js/ui/runDialog.js:205 msgid "Please enter a command:" msgstr "Команданы киргизиңиз:" #. Translators: This is a time format for a date in #. long format #: ../js/ui/screenShield.js:79 #, fuzzy #| msgctxt "calendar heading" #| msgid "%A, %B %d" msgid "%A, %B %d" msgstr "%B айынын %e %a" #: ../js/ui/screenShield.js:144 #, c-format msgid "%d new message" msgid_plural "%d new messages" msgstr[0] "" #: ../js/ui/screenShield.js:146 #, fuzzy, c-format #| msgid "Notifications" msgid "%d new notification" msgid_plural "%d new notifications" msgstr[0] "Эскертүүлөр" #: ../js/ui/searchDisplay.js:275 msgid "Searching..." msgstr "Издөө…" #: ../js/ui/searchDisplay.js:323 #, fuzzy #| msgid "No matching results." msgid "No results." msgstr "Дал келген натыйжалар жок." #: ../js/ui/shellEntry.js:26 msgid "Copy" msgstr "Копиялоо" #: ../js/ui/shellEntry.js:31 msgid "Paste" msgstr "Коюу" #: ../js/ui/shellEntry.js:102 msgid "Show Text" msgstr "Текстти көрсөтүү" #: ../js/ui/shellEntry.js:104 msgid "Hide Text" msgstr "Текстти катуу" #: ../js/ui/shellMountOperation.js:368 #, fuzzy #| msgid "Password:" msgid "Password" msgstr "Сырсөз:" #: ../js/ui/shellMountOperation.js:389 #, fuzzy #| msgid "Remember Passphrase" msgid "Remember Password" msgstr "Сырсүйлөмдү эске сактоо" #: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:169 msgid "Unlock" msgstr "Ачуу" #: ../js/ui/status/accessibility.js:39 msgid "Accessibility" msgstr "Жеткиликтүүлүк" #: ../js/ui/status/accessibility.js:44 msgid "Zoom" msgstr "Масштабтоо" #: ../js/ui/status/accessibility.js:51 msgid "Screen Reader" msgstr "Экран окугуч" #: ../js/ui/status/accessibility.js:55 msgid "Screen Keyboard" msgstr "Экрандык клавиатура" #: ../js/ui/status/accessibility.js:59 msgid "Visual Alerts" msgstr "Көрүнөө эскертүүлөр" #: ../js/ui/status/accessibility.js:62 msgid "Sticky Keys" msgstr "Жабышма клавиштер" #: ../js/ui/status/accessibility.js:65 msgid "Slow Keys" msgstr "Жай клавиштер" #: ../js/ui/status/accessibility.js:68 msgid "Bounce Keys" msgstr "Секирген клавиштер" #: ../js/ui/status/accessibility.js:71 msgid "Mouse Keys" msgstr "Чычкан клавиштери" #: ../js/ui/status/accessibility.js:75 msgid "Universal Access Settings" msgstr "" "Атайы мүмкүнчүлүктөрдү\n" "ырастоо" #: ../js/ui/status/accessibility.js:109 msgid "High Contrast" msgstr "Карама-каршы тема" #: ../js/ui/status/accessibility.js:146 msgid "Large Text" msgstr "Ири текст" #: ../js/ui/status/bluetooth.js:27 ../js/ui/status/bluetooth.js:31 #: ../js/ui/status/bluetooth.js:251 ../js/ui/status/bluetooth.js:304 #: ../js/ui/status/bluetooth.js:335 ../js/ui/status/bluetooth.js:371 #: ../js/ui/status/bluetooth.js:400 ../js/ui/status/network.js:867 msgid "Bluetooth" msgstr "Bluetooth" #: ../js/ui/status/bluetooth.js:44 msgid "Visibility" msgstr "Көрүнүү" #: ../js/ui/status/bluetooth.js:58 msgid "Send Files to Device..." msgstr "Орнотмого файлдарды жөнөтүү…" #: ../js/ui/status/bluetooth.js:59 msgid "Set up a New Device..." msgstr "Жаңы орнотмону ырастоо…" #: ../js/ui/status/bluetooth.js:83 msgid "Bluetooth Settings" msgstr "Bluetooth'ту ырастоо" #. TRANSLATORS: this means that bluetooth was disabled by hardware rfkill #: ../js/ui/status/bluetooth.js:103 ../js/ui/status/network.js:208 msgid "hardware disabled" msgstr "орнотмо өчүрүлдү" #: ../js/ui/status/bluetooth.js:196 msgid "Connection" msgstr "Туташуу" #: ../js/ui/status/bluetooth.js:207 ../js/ui/status/network.js:458 msgid "disconnecting..." msgstr "өчүрүлүү…" #: ../js/ui/status/bluetooth.js:220 ../js/ui/status/network.js:464 #: ../js/ui/status/network.js:934 msgid "connecting..." msgstr "туташуу…" #: ../js/ui/status/bluetooth.js:238 msgid "Send Files..." msgstr "Файлдарды жөнөтүү…" #: ../js/ui/status/bluetooth.js:243 msgid "Browse Files..." msgstr "Файлдарды кароо…" #: ../js/ui/status/bluetooth.js:252 msgid "Error browsing device" msgstr "Орнотмону көрүү катасы" #: ../js/ui/status/bluetooth.js:253 #, c-format msgid "The requested device cannot be browsed, error is '%s'" msgstr "" #: ../js/ui/status/bluetooth.js:261 msgid "Keyboard Settings" msgstr "Клавиатураны ырастоо" #: ../js/ui/status/bluetooth.js:264 msgid "Mouse Settings" msgstr "Чычканды ырастоо" #: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236 msgid "Sound Settings" msgstr "Үндү ырастоо" #: ../js/ui/status/bluetooth.js:336 #, c-format msgid "Authorization request from %s" msgstr "%s авториязацияны сурап жатат" #: ../js/ui/status/bluetooth.js:342 #, c-format msgid "Device %s wants access to the service '%s'" msgstr "%s орнотмосу «%s» кызматына кирүү аракетин кылып жатат" #: ../js/ui/status/bluetooth.js:344 msgid "Always grant access" msgstr "Дайыма кирүүгө мүмкүндүк берүү" #: ../js/ui/status/bluetooth.js:345 msgid "Grant this time only" msgstr "Бир гана жолу берүү" #: ../js/ui/status/bluetooth.js:372 #, c-format msgid "Pairing confirmation for %s" msgstr "%s менен байланыштыруу аныктоосу" #: ../js/ui/status/bluetooth.js:378 ../js/ui/status/bluetooth.js:408 #, c-format msgid "Device %s wants to pair with this computer" msgstr "%s орнотмосу ушу компьютер менен байланышайын деп жатат" #: ../js/ui/status/bluetooth.js:379 #, c-format msgid "Please confirm whether the PIN '%06d' matches the one on the device." msgstr "" #: ../js/ui/status/bluetooth.js:381 msgid "Matches" msgstr "Дал келди" #: ../js/ui/status/bluetooth.js:382 msgid "Does not match" msgstr "Дал келбеди" #: ../js/ui/status/bluetooth.js:401 #, c-format msgid "Pairing request for %s" msgstr "%s менен байланыштырууга суроо" #: ../js/ui/status/bluetooth.js:409 msgid "Please enter the PIN mentioned on the device." msgstr "" #: ../js/ui/status/bluetooth.js:426 msgid "OK" msgstr "OK" #: ../js/ui/status/keyboard.js:228 msgid "Show Keyboard Layout" msgstr "Клавиатура жайылматүрүн көрсөтүү" #: ../js/ui/status/keyboard.js:233 msgid "Region and Language Settings" msgstr "Региондук жана тилдик ырастоолор" #: ../js/ui/status/lockScreenMenu.js:18 msgid "Volume, network, battery" msgstr "" #: ../js/ui/status/network.js:94 msgid "" msgstr "<белгисиз>" #. Translators: this indicates that wireless or wwan is disabled by hardware killswitch #: ../js/ui/status/network.js:230 msgid "disabled" msgstr "өчүрүлгөн" #. Translators: this is for network devices that are physically present but are not #. under NetworkManager's control (and thus cannot be used in the menu) #: ../js/ui/status/network.js:456 msgid "unmanaged" msgstr "башкарылган жок" #. Translators: this is for network connections that require some kind of key or password #: ../js/ui/status/network.js:467 ../js/ui/status/network.js:937 msgid "authentication required" msgstr "аутентификация керек" #. Translators: this is for devices that require some kind of firmware or kernel #. module, which is missing #: ../js/ui/status/network.js:477 msgid "firmware missing" msgstr "тигилме жок" #. Translators: this is for wired network devices that are physically disconnected #: ../js/ui/status/network.js:484 msgid "cable unplugged" msgstr "кабель кошулган жок" #. Translators: this is for a network device that cannot be activated (for example it #. is disabled by rfkill, or it has no coverage #: ../js/ui/status/network.js:489 msgid "unavailable" msgstr "жеткиликтүү эмес" #: ../js/ui/status/network.js:491 ../js/ui/status/network.js:939 msgid "connection failed" msgstr "туташтыруу оңунан чыккан жок" #: ../js/ui/status/network.js:552 ../js/ui/status/network.js:1529 msgid "More..." msgstr "Дагы…" #. TRANSLATORS: this is the indication that a connection for another logged in user is active, #. and we cannot access its settings (including the name) #: ../js/ui/status/network.js:588 ../js/ui/status/network.js:1459 msgid "Connected (private)" msgstr "Туташтырылды (жеке)" #: ../js/ui/status/network.js:663 msgid "Auto Ethernet" msgstr "Автоматтуу зымдык" #: ../js/ui/status/network.js:721 msgid "Auto broadband" msgstr "Автоматтуу жазы тилкелик" #: ../js/ui/status/network.js:724 msgid "Auto dial-up" msgstr "Автоматтуу коммутациялык" #. TRANSLATORS: this the automatic wireless connection name (including the network name) #: ../js/ui/status/network.js:853 ../js/ui/status/network.js:1476 #, c-format msgid "Auto %s" msgstr "Автоматтуу %s" #: ../js/ui/status/network.js:855 msgid "Auto bluetooth" msgstr "Автоматтуу bluetooth" #: ../js/ui/status/network.js:1478 msgid "Auto wireless" msgstr "Автоматтуу зымсыз" #: ../js/ui/status/network.js:1575 msgid "Enable networking" msgstr "Тармакты күйгүзүү" #: ../js/ui/status/network.js:1597 msgid "Wired" msgstr "Зымдык" #: ../js/ui/status/network.js:1608 msgid "Wireless" msgstr "Зымсыз" #: ../js/ui/status/network.js:1618 msgid "Mobile broadband" msgstr "Мобильдүү жазы тилкелик" #: ../js/ui/status/network.js:1628 msgid "VPN Connections" msgstr "VPN туташтыруусу" #: ../js/ui/status/network.js:1635 msgid "Network Settings" msgstr "Тармакты ырастоо" #: ../js/ui/status/network.js:1679 msgid "Network Manager" msgstr "Тармак диспетчери" #: ../js/ui/status/network.js:1769 msgid "Connection failed" msgstr "Туташтыруу оңунан чыккан жок" #: ../js/ui/status/network.js:1770 msgid "Activation of network connection failed" msgstr "Тармактык туташтыруунун активациясы оңунан чыккан жок" #: ../js/ui/status/network.js:2065 msgid "Networking is disabled" msgstr "Тармак өчүрүлгөн" #: ../js/ui/status/power.js:55 msgid "Battery" msgstr "Батарея" #: ../js/ui/status/power.js:72 msgid "Power Settings" msgstr "Азыктанууну ырастоо" #. 0 is reported when UPower does not have enough data #. to estimate battery life #: ../js/ui/status/power.js:94 msgid "Estimating..." msgstr "Эсептелип жатат…" #: ../js/ui/status/power.js:101 #, c-format msgid "%d hour remaining" msgid_plural "%d hours remaining" msgstr[0] "%d саат калды" #. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining" #: ../js/ui/status/power.js:104 #, c-format msgid "%d %s %d %s remaining" msgstr "%d %s %d %s калды" #: ../js/ui/status/power.js:106 msgid "hour" msgid_plural "hours" msgstr[0] "саат" #: ../js/ui/status/power.js:106 msgid "minute" msgid_plural "minutes" msgstr[0] "мүнөт" #: ../js/ui/status/power.js:109 #, c-format msgid "%d minute remaining" msgid_plural "%d minutes remaining" msgstr[0] "%d мүнөт калды" #: ../js/ui/status/power.js:112 ../js/ui/status/power.js:186 #, c-format msgctxt "percent of battery remaining" msgid "%d%%" msgstr "%d%%" #: ../js/ui/status/power.js:195 msgid "AC adapter" msgstr "Алмашма ток адаптери" #: ../js/ui/status/power.js:197 msgid "Laptop battery" msgstr "Ноутбук батареясы" #: ../js/ui/status/power.js:199 msgid "UPS" msgstr "ҮЖБ" #: ../js/ui/status/power.js:201 msgid "Monitor" msgstr "Монитор" #: ../js/ui/status/power.js:203 msgid "Mouse" msgstr "Чычкан" #: ../js/ui/status/power.js:207 msgid "PDA" msgstr "ЧПК" #: ../js/ui/status/power.js:209 msgid "Cell phone" msgstr "Мобильдик телефон" #: ../js/ui/status/power.js:211 msgid "Media player" msgstr "Медиаплеер" #: ../js/ui/status/power.js:213 msgid "Tablet" msgstr "Планшет" #: ../js/ui/status/power.js:215 msgid "Computer" msgstr "Компьютер" #: ../js/ui/status/power.js:217 msgctxt "device" msgid "Unknown" msgstr "Белгисиз" #. Translators: This is the label for audio volume #: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223 msgid "Volume" msgstr "Катуулук" #: ../js/ui/status/volume.js:59 msgid "Microphone" msgstr "Микрофон" #: ../js/ui/unlockDialog.js:176 #, fuzzy #| msgid "Login as another user" msgid "Log in as another user" msgstr "Башка колдонуучу катары кирүү" #: ../js/ui/userMenu.js:175 msgid "Available" msgstr "Жеткиликтүү" #: ../js/ui/userMenu.js:178 msgid "Busy" msgstr "Бош эмес" #: ../js/ui/userMenu.js:181 msgid "Invisible" msgstr "Көрүнбөс" #: ../js/ui/userMenu.js:184 msgid "Away" msgstr "Кетти" #: ../js/ui/userMenu.js:187 msgid "Idle" msgstr "Аракет кылган жок" #: ../js/ui/userMenu.js:190 msgid "Unavailable" msgstr "Жеткиликсиз" #: ../js/ui/userMenu.js:613 ../js/ui/userMenu.js:754 msgid "Switch User" msgstr "Колдонуучуну которуу" #: ../js/ui/userMenu.js:614 msgid "Switch Session" msgstr "Сеансты которуу" #: ../js/ui/userMenu.js:738 msgid "Notifications" msgstr "Эскертүүлөр" #: ../js/ui/userMenu.js:746 msgid "System Settings" msgstr "Системалык параметрлер" #: ../js/ui/userMenu.js:759 msgid "Log Out" msgstr "Системадан чыгуу" #: ../js/ui/userMenu.js:764 msgid "Lock" msgstr "Камалоо" #: ../js/ui/userMenu.js:779 msgid "Install Updates & Restart" msgstr "Жаңыртмаларды орнотуп жана кайта жүргүзүү" #: ../js/ui/userMenu.js:797 msgid "Your chat status will be set to busy" msgstr "Чат статусу «бош эмес» дегенине коюлат" #: ../js/ui/userMenu.js:798 msgid "" "Notifications are now disabled, including chat messages. Your online status " "has been adjusted to let others know that you might not see their messages." msgstr "" #: ../js/ui/viewSelector.js:85 msgid "Windows" msgstr "Терезелер" #: ../js/ui/viewSelector.js:89 msgid "Applications" msgstr "Тиркемелер" #: ../js/ui/viewSelector.js:93 msgid "Search" msgstr "Издөө" #: ../js/ui/wanda.js:119 #, c-format msgid "" "Sorry, no wisdom for you today:\n" "%s" msgstr "" "Кечириңиз, бүгүнкүгө эч кандай кеңештер жок:\n" "%s" #: ../js/ui/wanda.js:123 #, c-format msgid "%s the Oracle says" msgstr "«%s» деп оракул айтып жатат" #: ../js/ui/wanda.js:164 msgid "Your favorite Easter Egg" msgstr "Сиз жакшы көргөн «пасха жумуртасы»" #: ../js/ui/windowAttentionHandler.js:19 #, c-format msgid "'%s' is ready" msgstr "«%s» терезеси даяр" #: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1 msgid "Evolution Calendar" msgstr "Evolution жылнаамасы" #. translators: #. * The number of sound outputs on a particular device #: ../src/gvc/gvc-mixer-control.c:1089 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u чыгыш" #. translators: #. * The number of sound inputs on a particular device #: ../src/gvc/gvc-mixer-control.c:1099 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u кириш" #: ../src/gvc/gvc-mixer-control.c:1397 msgid "System Sounds" msgstr "Системалык үндөр" #: ../src/main.c:330 msgid "Print version" msgstr "Версиянын номерин көрсөтүү" #: ../src/main.c:336 msgid "Mode used by GDM for login screen" msgstr "Кирүү экранына GDM менен колдонулуучу режим" #: ../src/main.c:342 msgid "Use a specific mode, e.g. \"gdm\" for login screen" msgstr "Кирүү экраны үчүн белгилүү бир режимди колдонуу, мисалы «gdm»" #: ../src/main.c:348 msgid "List possible modes" msgstr "Мүмкүн болгон режимдеринин тизмеси" #: ../src/shell-app.c:621 #, c-format msgid "Failed to launch '%s'" msgstr "" #: ../src/shell-keyring-prompt.c:708 msgid "Passwords do not match." msgstr "Сырсөздөр дал келген жок." #: ../src/shell-keyring-prompt.c:716 msgid "Password cannot be blank" msgstr "Сырсөз бош боло албайт" #: ../src/shell-mobile-providers.c:80 msgid "United Kingdom" msgstr "Улуу Британия" #: ../src/shell-mobile-providers.c:526 msgid "Default" msgstr "Жарыяланбас" #: ../src/shell-polkit-authentication-agent.c:343 msgid "Authentication dialog was dismissed by the user" msgstr "Аутентификация диалогун колдонуучу кабыл албады" #~ msgid "disabled OpenSearch providers" #~ msgstr "өчүрүлгөн OpenSearch провайдерлери" #~ msgid "Retry" #~ msgstr "Кайталоо" #~ msgid "Connect to..." #~ msgstr "Туташуу…" #~ msgid "PLACES & DEVICES" #~ msgstr "ОРУНДАР ЖАНА ОРНОТМОЛОР" #~ msgid "Passphrase" #~ msgstr "Сырсүйлөм" #~ msgid "Home" #~ msgstr "Үйдүк папка" #~ msgid "%1$s: %2$s" #~ msgstr "%1$s: %2$s" 07070100000249000081A40000000000000000000000016712993F0001CCF1000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/lt.po# Lithuanian translation for gnome-shell. # Copyright © 2010-2012 Free Software Foundation, Inc. # This file is distributed under the same license as the gnome-shell package. # Žygimantas Beručka , 2010, 2011, 2012. # Algimantas Margevičius , 2011. # Mantas Kriaučiūnas , 2012, 2013. # Aurimas Černius , 2013-2023. # msgid "" msgstr "" "Project-Id-Version: gnome-shell master\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues/\n" "POT-Creation-Date: 2024-08-06 15:18+0000\n" "PO-Revision-Date: 2024-09-02 22:39+0300\n" "Last-Translator: Aurimas Černius \n" "Language-Team: Lietuvių \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: Poedit 3.4.4\n" "X-Project-Style: gnome\n" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "Paleidikliai" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate pinned app 1" msgstr "Aktyvinti mėgiamą programą 1" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate pinned app 2" msgstr "Aktyvinti mėgiamą programą 2" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate pinned app 3" msgstr "Aktyvinti mėgiamą programą 3" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate pinned app 4" msgstr "Aktyvinti mėgiamą programą 4" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate pinned app 5" msgstr "Aktyvinti mėgiamą programą 5" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate pinned app 6" msgstr "Aktyvinti mėgiamą programą 6" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate pinned app 7" msgstr "Aktyvinti mėgiamą programą 7" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate pinned app 8" msgstr "Aktyvinti mėgiamą programą 8" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate pinned app 9" msgstr "Aktyvinti mėgiamą programą 9" #: data/50-gnome-shell-launchers.xml:46 msgid "Open new window of pinned app 1" msgstr "Atverti naują langą prisegtai programai 1" #: data/50-gnome-shell-launchers.xml:50 msgid "Open new window of pinned app 2" msgstr "Atverti naują langą prisegtai programai 2" #: data/50-gnome-shell-launchers.xml:54 msgid "Open new window of pinned app 3" msgstr "Atverti naują langą prisegtai programai 3" #: data/50-gnome-shell-launchers.xml:58 msgid "Open new window of pinned app 4" msgstr "Atverti naują langą prisegtai programai 4" #: data/50-gnome-shell-launchers.xml:62 msgid "Open new window of pinned app 5" msgstr "Atverti naują langą prisegtai programai 5" #: data/50-gnome-shell-launchers.xml:66 msgid "Open new window of pinned app 6" msgstr "Atverti naują langą prisegtai programai 6" #: data/50-gnome-shell-launchers.xml:70 msgid "Open new window of pinned app 7" msgstr "Atverti naują langą prisegtai programai 7" #: data/50-gnome-shell-launchers.xml:74 msgid "Open new window of pinned app 8" msgstr "Atverti naują langą prisegtai programai 8" #: data/50-gnome-shell-launchers.xml:78 msgid "Open new window of pinned app 9" msgstr "Atverti naują langą prisegtai programai 9" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2274 msgid "Screenshots" msgstr "Ekrano nuotraukos" #: data/50-gnome-shell-screenshots.xml:9 #: data/org.gnome.shell.gschema.xml.in:287 msgid "Take a screenshot interactively" msgstr "Padaryti ekrano nuotrauką interaktyviai" #: data/50-gnome-shell-screenshots.xml:12 #: data/org.gnome.shell.gschema.xml.in:299 msgid "Take a screenshot" msgstr "Padaryti ekrano nuotrauką" #: data/50-gnome-shell-screenshots.xml:15 #: data/org.gnome.shell.gschema.xml.in:295 msgid "Take a screenshot of a window" msgstr "Padaryti lango nuotrauką" #: data/50-gnome-shell-screenshots.xml:18 #: data/org.gnome.shell.gschema.xml.in:291 msgid "Record a screencast interactively" msgstr "Interaktyviai įrašyti ekrano vaizdą" #: data/50-gnome-shell-system.xml:6 js/ui/messageTray.js:1298 msgid "System" msgstr "Sistema" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "Rodyti pranešimų sąrašą" #: data/50-gnome-shell-system.xml:12 msgid "Open the quick settings menu" msgstr "Atverti greitų nuostatų meniu" #: data/50-gnome-shell-system.xml:15 msgid "Focus the active notification" msgstr "Fokusuoti aktyvų pranešimą" #: data/50-gnome-shell-system.xml:18 msgid "Show the overview" msgstr "Rodyti apžvalgą" #: data/50-gnome-shell-system.xml:21 msgid "Show all apps" msgstr "Rodyti visas programas" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "GNOME Shell aplinka" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "Langų tvarkymas ir programų paleidimas" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" "Įjungti vidinius, Alt-F2 klavišų pagalba pasiekiamus įrankius, naudingus " "programuotojams ir bandytojams" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Suteikia prieigą prie vidinio derinimo ir stebėjimo įrankių, naudojant Alt-" "F2 dialogą." #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "Įjungtų plėtinių UUID" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "GNOME Shell plėtiniai turi UUID savybę; šiame rakte išvardinti plėtiniai, " "kurie turėtų būti įkelti. Bet kuris plėtinys, kuris nori būti įkeltas, turi " "būti šiame sąraše. Šį sąrašą taip pat galima keisti naudojant org.gnome." "Shell D-Bus metodus EnableExtension ir DisableExtension." #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "Privestinai išjungtų plėtinių UUID" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" "GNOME Shell plėtiniai turi UUID savybę; šiame rakte išvardinti plėtiniai, " "kurie turėtų būti išjungti net jei yra įkelti kaip dalis dabartinės " "veiksenos.Šį sąrašą taip pat galima keisti naudojant org.gnome.Shell D-Bus " "metodus EnableExtension ir DisableExtension. Šiam raktui teikiama pirmenybė " "prieš „enabled-extensions“ parametrą." #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "Išjungti naudotojo plėtinius" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" "Išjungti visus naudotojo įjungtus plėtinius nepakeičiant „enabled-extension“ " "nustatymo." #: data/org.gnome.shell.gschema.xml.in:45 msgid "Allow extension installation" msgstr "Leisti plėtinio diegimą" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "Allow users to install extensions in their home folder. If disabled, the " "InstallRemoteExtension D-Bus method will fail, and extensions are only " "loaded from system directories on startup. It does not affect extensions " "that are already loaded, so a change only takes full effect on the next " "login." msgstr "" "Leisti naudotojams įdiegti plėtinius į jų namų aplankus. Jei išjungta, D-Bus " "metodas InstallRemoteExtension nepavyks ir plėtiniai paleidimo metu įkeliami " "tik iš sisteminių katalogų. Tai nepaveikia jau įkeltų plėtinių, tad " "pakeitimas visiškai įsigalioja tik kitą kartą prisijungus." #: data/org.gnome.shell.gschema.xml.in:56 msgid "Disables the validation of extension version compatibility" msgstr "Išjungia plėtinio versijos suderinamumo tikrinimą" #: data/org.gnome.shell.gschema.xml.in:57 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "GNOME Shell leidžia įkelti tik šiuo metu veikiančios versijos plėtinius. Šio " "parametro įjungimas išjungs šį tikrinimą ir bandys įkelti visus plėtinius " "nepaisant jų nurodomos palaikomos versijos." #: data/org.gnome.shell.gschema.xml.in:65 msgid "List of desktop file IDs for favorite applications" msgstr "Mėgstamų programų darbalaukio failų ID sąrašas" #: data/org.gnome.shell.gschema.xml.in:66 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" "Programos, atitinkančios šiuos identifikatorius, bus rodomos mėgstamų " "srityje." #: data/org.gnome.shell.gschema.xml.in:73 msgid "History for command (Alt-F2) dialog" msgstr "Komandų (Alt-F2) dialogo retrospektyva" #. Translators: looking glass is a debugger and inspector tool, see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/docs/looking-glass.md #: data/org.gnome.shell.gschema.xml.in:78 msgid "History for the looking glass dialog" msgstr "Didinamojo stiklo dialogo retrospektyva" #: data/org.gnome.shell.gschema.xml.in:82 msgid "Always show the “Log Out” action in the system menu" msgstr "Visada rodyti sisteminio meniu punktą „Atsijungti“" #: data/org.gnome.shell.gschema.xml.in:83 msgid "" "This key overrides the automatic hiding of the “Log out” action in the " "system menu for logged-in situations where there is a single, local, non-" "system user and only a single available session type (e.g. GNOME on Wayland)." msgstr "" "Šis raktas perrašo automatinį sistemos meniu punkto „Atsijungti“ slėpimą " "vieno naudotojo, vietinio, ne sisteminio naudotojo ir tik vieno seanso " "situacijose (pvz. GNOME Wayland aplinkoje)." #: data/org.gnome.shell.gschema.xml.in:92 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "Ar atsiminti slaptažodį prijungiant šifruotas ar nutolusias failų sistemas" #: data/org.gnome.shell.gschema.xml.in:93 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "Apvalkalas prašys slaptažodžio, kai prijungiamas šifruotas įrenginys ar " "nutolusi failų sistema. Jei slaptažodis gali būti įrašytas ateičiai, " "žymimasis langelis „Įsiminti slaptažodį“ bus rodomas. Šis raktas nustato " "numatytąją žymimojo langelio būseną." #: data/org.gnome.shell.gschema.xml.in:102 msgid "The last selected non-default power profile" msgstr "Paskutinis pasirinktas ne numatytasis energijos profilis" #: data/org.gnome.shell.gschema.xml.in:103 msgid "" "Some systems support more than two power profiles. In order to still support " "toggling between two profiles, this key records the last selected non-" "default profile." msgstr "" "Kai kurios sistemos palaiko daugiau nei du profilius. Siekiant palaikyti " "dviejų profilių keitimą, šiame rakte įrašomas paskutinis pasirinktas ne " "numatytasis profilis." #: data/org.gnome.shell.gschema.xml.in:111 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "" "Paskutinė versija, kuriai buvo rodytas dialogas „Sveiki pradėję naudoti " "GNOME“" #: data/org.gnome.shell.gschema.xml.in:112 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can " "be used to effectively disable the dialog." msgstr "" "Šis raktas nusako, kuriai versijai paskutinį kartą buvo rodytas dialogas " "„Sveiki pradėję naudoti GNOME“. Tuščia eilutė reiškia seniausią galimą " "versiją, o milžiniški skaičiai reiškia versijas, kurių dar nėra. Todėl " "milžiniškus skaičius galima naudoti šio dialogo išjungimui." #: data/org.gnome.shell.gschema.xml.in:145 msgid "Layout of the app picker" msgstr "Programų pasirinkimo išdėstymas" #: data/org.gnome.shell.gschema.xml.in:146 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" msgstr "" "Programų pasirinkimo išdėstymas. Kiekvienas įrašas masyve yra puslapis. " "Puslapiai yra įrašomi tokia tvarka, kokia jie matomi GNOME apvalkale. " "Kiekviename puslapyje yra pora „programos id“ → „duomenys“. Šiuo metu tokios " "vertės yra įrašomos kaip „duomenys“: • “position”: programos piktogramos " "padėtis puslapyje" #: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:172 msgid "Keybinding to shift between overview states" msgstr "Klavišų susiejimas apžvalgos būsenų keitimui" #: data/org.gnome.shell.gschema.xml.in:166 msgid "Keybinding to shift between session, window picker and app grid" msgstr "" "Klavišų susiejimas perėjimui tarp seanso, langų pasirinkimo ir programų " "tinklelio" #: data/org.gnome.shell.gschema.xml.in:173 msgid "Keybinding to shift between app grid, window picker and session" msgstr "" "Klavišų susiejimas perėjimui tarp programų tinklelio, langų pasirinkimo bei " "seanso" #: data/org.gnome.shell.gschema.xml.in:179 msgid "Keybinding to open the “Show Applications” view" msgstr "Klavišų susiejimas, kuriuo atveriamas rodinys „rodyti programas“" #: data/org.gnome.shell.gschema.xml.in:180 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "" "Klavišų susiejimas, kuriuo atveriamas rodinys „rodyti programas“ veiklų " "apžvalgoje." #: data/org.gnome.shell.gschema.xml.in:187 msgid "Keybinding to open the overview" msgstr "Klavišų susiejimas, kuriuo atveriama apžvalga" #: data/org.gnome.shell.gschema.xml.in:188 msgid "Keybinding to open the Activities Overview." msgstr "Klavišų susiejimas, kuriuo atveriama veiklų apžvalga." #: data/org.gnome.shell.gschema.xml.in:194 msgid "Keybinding to toggle the visibility of the notification list" msgstr "Klavišų susiejimas pranešimų juostos matomumui perjungti" #: data/org.gnome.shell.gschema.xml.in:195 msgid "Keybinding to toggle the visibility of the notification list." msgstr "Klavišų susiejimas pranešimų juostos matomumui perjungti." #: data/org.gnome.shell.gschema.xml.in:201 msgid "Keybinding to toggle the quick settings menu" msgstr "Klavišų susiejimas, kuriuo atveriamas greitųjų nuostatų meniu" #: data/org.gnome.shell.gschema.xml.in:202 msgid "Keybinding to toggle the quick settings menu." msgstr "Klavišų susiejimas, kuriuo atveriamas greitųjų nuostatų meniu." #: data/org.gnome.shell.gschema.xml.in:208 msgid "Keybinding to focus the active notification" msgstr "Klavišų susiejimas, kuriuo fokusuojamas aktyvus pranešimas" #: data/org.gnome.shell.gschema.xml.in:209 msgid "Keybinding to focus the active notification." msgstr "Klavišų susiejimas, kuriuo fokusuojamas aktyvus pranešimas." #: data/org.gnome.shell.gschema.xml.in:215 msgid "Switch to application 1" msgstr "Pereiti į programą 1" #: data/org.gnome.shell.gschema.xml.in:219 msgid "Switch to application 2" msgstr "Pereiti į programą 2" #: data/org.gnome.shell.gschema.xml.in:223 msgid "Switch to application 3" msgstr "Pereiti į programą 3" #: data/org.gnome.shell.gschema.xml.in:227 msgid "Switch to application 4" msgstr "Pereiti į programą 4" #: data/org.gnome.shell.gschema.xml.in:231 msgid "Switch to application 5" msgstr "Pereiti į programą 5" #: data/org.gnome.shell.gschema.xml.in:235 msgid "Switch to application 6" msgstr "Pereiti į programą 6" #: data/org.gnome.shell.gschema.xml.in:239 msgid "Switch to application 7" msgstr "Pereiti į programą 7" #: data/org.gnome.shell.gschema.xml.in:243 msgid "Switch to application 8" msgstr "Pereiti į programą 8" #: data/org.gnome.shell.gschema.xml.in:247 msgid "Switch to application 9" msgstr "Pereiti į programą 9" #: data/org.gnome.shell.gschema.xml.in:251 msgid "Open a new instance of application 1" msgstr "Atverti naują vienetą programai 1" #: data/org.gnome.shell.gschema.xml.in:255 msgid "Open a new instance of application 2" msgstr "Atverti naują vienetą programai 2" #: data/org.gnome.shell.gschema.xml.in:259 msgid "Open a new instance of application 3" msgstr "Atverti naują vienetą programai 3" #: data/org.gnome.shell.gschema.xml.in:263 msgid "Open a new instance of application 4" msgstr "Atverti naują vienetą programai 4" #: data/org.gnome.shell.gschema.xml.in:267 msgid "Open a new instance of application 5" msgstr "Atverti naują vienetą programai 5" #: data/org.gnome.shell.gschema.xml.in:271 msgid "Open a new instance of application 6" msgstr "Atverti naują vienetą programai 6" #: data/org.gnome.shell.gschema.xml.in:275 msgid "Open a new instance of application 7" msgstr "Atverti naują vienetą programai 7" #: data/org.gnome.shell.gschema.xml.in:279 msgid "Open a new instance of application 8" msgstr "Atverti naują vienetą programai 8" #: data/org.gnome.shell.gschema.xml.in:283 msgid "Open a new instance of application 9" msgstr "Atverti naują vienetą programai 9" #: data/org.gnome.shell.gschema.xml.in:308 #: data/org.gnome.shell.gschema.xml.in:335 msgid "Limit switcher to current workspace." msgstr "Apriboti perjungėją dabartine darbo sritimi." #: data/org.gnome.shell.gschema.xml.in:309 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "Jei teigiama, perjungimo lange bus rodomos tik programos, turinčios langų " "dabartinėje darbo srityje. Priešingu atveju įtraukiamos visos programos." #: data/org.gnome.shell.gschema.xml.in:326 msgid "The application icon mode." msgstr "Programos piktogramos veiksena." #: data/org.gnome.shell.gschema.xml.in:327 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-only” " "(shows only the application icon) or “both”." msgstr "" "Nustato, kaip langai yra rodomi perjungimo lange. Galimi pasirinkimai yra " "„thumbnail-only“ (rodo lango miniatiūrą), „app-icon-only“ (rodo tik " "programos piktogramą) arba „both“ (abu)." #: data/org.gnome.shell.gschema.xml.in:336 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "Jei teigiama, perjungimo lange rodomi tik langai iš dabartinės darbo " "srities. Priešingu atveju įtraukiami visi langai." #: data/org.gnome.shell.gschema.xml.in:346 msgid "Locations" msgstr "Vietos" #: data/org.gnome.shell.gschema.xml.in:347 msgid "The locations to show in world clocks" msgstr "Vietos, kurias rodyti pasaulio laikrodžiuose" #: data/org.gnome.shell.gschema.xml.in:357 msgid "Automatic location" msgstr "Automatinė vieta" #: data/org.gnome.shell.gschema.xml.in:358 msgid "Whether to fetch the current location or not" msgstr "Ar gauti dabartinę vietą" #: data/org.gnome.shell.gschema.xml.in:365 msgid "Location" msgstr "Vieta" #: data/org.gnome.shell.gschema.xml.in:366 msgid "The location for which to show a forecast" msgstr "Vieta, kuriai rodyti prognozę" #. Keep in sync with subprojects/extensions-app #: data/org.gnome.Shell.Extensions.desktop.in.in:5 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/data/ui/extensions-window.ui:57 msgid "Extensions" msgstr "Plėtiniai" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "Tinklo prisijungimas" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:275 msgid "Something’s gone wrong" msgstr "Atsitiko kažkas negero" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" "Atsiprašome, bet kilo problema: šio plėtinio nustatymų parodyti nepavyksta. " "Rekomenduojame pranešti apie problemą plėtinio autoriams." #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "Techninė informacija" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "Namų tinklalapis" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 msgid "Visit extension homepage" msgstr "Aplankyti plėtinio namų tinklalapį" #: js/gdm/authPrompt.js:151 js/gdm/loginDialog.js:465 #: js/ui/audioDeviceSelection.js:66 js/ui/components/networkAgent.js:113 #: js/ui/components/polkitAgent.js:144 js/ui/endSessionDialog.js:437 #: js/ui/extensionDownloader.js:276 js/ui/shellMountOperation.js:382 #: js/ui/shellMountOperation.js:392 msgid "Cancel" msgstr "Atsisakyti" #: js/gdm/authPrompt.js:317 js/ui/components/networkAgent.js:213 #: js/ui/components/networkAgent.js:233 js/ui/components/networkAgent.js:265 #: js/ui/components/networkAgent.js:298 js/ui/components/networkAgent.js:337 #: js/ui/components/networkAgent.js:350 js/ui/components/polkitAgent.js:286 #: js/ui/shellMountOperation.js:332 msgid "Password" msgstr "Slaptažodis" #: js/gdm/loginDialog.js:326 msgid "Choose Session" msgstr "Pasirinkite seansą" #. Translators: is running for #: js/gdm/loginDialog.js:423 #, javascript-format msgid "" "Remote login is not possible because a remote session is already running for " "%s. To login remotely, you must log out from the remote session or force " "stop it." msgstr "" "Nuotolinis prisijungimas negalimas, nes %s jau veikia nuotolinis seansas. " "Norint prisijungti nuotoliu, turite atsijungti nuo nuotolinio seanso arba " "priverstinai jį stabdyti." #. Translators: is running for #: js/gdm/loginDialog.js:426 #, javascript-format msgid "" "Login is not possible because a remote session is already running for %s. To " "login, you must log out from the remote session or force stop it." msgstr "" "Prisijungimas negalimas, nes %s jau veikia nuotolinis seansas. Norint " "prisijungti, turite atsijungti nuo nuotolinio seanso arba priverstinai jį " "stabdyti." #. Translators: is running for #: js/gdm/loginDialog.js:429 #, javascript-format msgid "" "Remote login is not possible because a local session is already running for " "%s. To login remotely, you must log out from the local session or force stop " "it." msgstr "" "Nuotolinis prisijungimas negalimas, nes %s jau veikia vietinis seansas. " "Norint prisijungti nuotoliu, turite atsijungti nuo vietinio seanso arba " "priverstinai jį stabdyti." #. Translators: is running for #: js/gdm/loginDialog.js:432 #, javascript-format msgid "" "Login is not possible because a session is already running for %s. To login, " "you must log out from the session or force stop it." msgstr "" "Prisijungimas negalimas, nes %s jau veikia seansas. Norint prisijungti, " "turite atsijungti nuo seanso arba priverstinai jį stabdyti." #: js/gdm/loginDialog.js:441 msgid "Session Already Running" msgstr "Seansas jau veikia" #: js/gdm/loginDialog.js:453 msgid "" "Force stopping will quit any running apps and processes, and could result in " "data loss" msgstr "" "Priverstinis stabdymas nutrauks visas veikiančias programas bei procesus, " "todėl galite prarasti duomenis" #: js/gdm/loginDialog.js:473 msgid "Force Stop" msgstr "Priverstinai stabdyti" #: js/gdm/loginDialog.js:541 msgid "Not listed?" msgstr "Nėra sąraše?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:1009 #, javascript-format msgid "(e.g., user or %s)" msgstr "(pvz., naudotojas arba %s)" #: js/gdm/loginDialog.js:1014 js/ui/components/networkAgent.js:257 #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:326 msgid "Username" msgstr "Naudotojo vardas" #: js/gdm/loginDialog.js:1080 msgid "Login Attempt Timed Out" msgstr "Baigėsi laikas bandymui prisijungti" #: js/gdm/loginDialog.js:1081 msgid "Login took too long, please try again" msgstr "Prisijungimas užtruko per ilgai, bandykite dar kartą" #: js/gdm/loginDialog.js:1426 msgid "Login Window" msgstr "Prisijungimo langas" #: js/gdm/util.js:496 msgid "Authentication error" msgstr "Tapatybės patvirtinimo klaida" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:727 msgid "(or swipe finger across reader)" msgstr "(arba perbraukite pirštu per skaitytuvą)" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:732 msgid "(or place finger on reader)" msgstr "(arba padėkite pirštą ant skaitytuvo)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:91 msgctxt "search-result" msgid "Power Off" msgstr "Išjungti" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:94 msgid "power off;poweroff;shutdown;halt;stop" msgstr "išjungti;perleisti;perkrauti;sustabdyti" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:99 msgctxt "search-result" msgid "Restart" msgstr "Perleisti" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:102 msgid "reboot;restart;" msgstr "perleisti;paleisti iš naujo;" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:107 msgctxt "search-result" msgid "Lock Screen" msgstr "Užrakinti ekraną" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:110 msgid "lock screen" msgstr "užrakinti ekraną" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:115 msgctxt "search-result" msgid "Log Out" msgstr "Atsijungti" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:118 msgid "logout;log out;sign off" msgstr "atsijungti;išeiti" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:123 msgctxt "search-result" msgid "Suspend" msgstr "Pristabdyti" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:126 msgid "suspend;sleep" msgstr "pristabdyti;užmigdyti" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:131 msgctxt "search-result" msgid "Switch User" msgstr "Keisti naudotoją" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:134 msgid "switch user" msgstr "keisti naudotoją" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:141 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "orientacijos užrakinimas;orientacijos atrakinimas;ekranas;pasukimas" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:146 msgctxt "search-result" msgid "Take a Screenshot" msgstr "Padaryti ekrano nuotrauką" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:149 msgid "screenshot;screencast;snip;capture;record" msgstr "ekrano nuotrauka;ekrano įrašas;stebėjimas;fotografavimas;įrašymas" #: js/misc/systemActions.js:249 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "Atrakinti ekrano orientaciją" #: js/misc/systemActions.js:250 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "Užrakinti ekrano orientaciją" #: js/misc/util.js:130 msgid "Command not found" msgstr "Komanda nerasta" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:170 msgid "Could not parse command:" msgstr "Nepavyko perskaityti komandos:" #: js/misc/util.js:178 #, javascript-format msgid "Execution of “%s” failed:" msgstr "Nepavyko įvykdyti „%s“:" #: js/misc/dateUtils.js:69 msgid "Just now" msgstr "Ką tik" #: js/misc/dateUtils.js:72 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "Prieš %d minutę" msgstr[1] "Prieš %d minutes" msgstr[2] "Prieš %d minučių" #: js/misc/dateUtils.js:79 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "Prieš %d valandą" msgstr[1] "Prieš %d valandas" msgstr[2] "Prieš %d valandų" #: js/misc/dateUtils.js:85 js/ui/dateMenu.js:183 msgid "Yesterday" msgstr "Vakar" #: js/misc/dateUtils.js:88 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "Prieš %d dieną" msgstr[1] "Prieš %d dienas" msgstr[2] "Prieš %d dienų" #: js/misc/dateUtils.js:95 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "Prieš %d savaitę" msgstr[1] "Prieš %d savaites" msgstr[2] "Prieš %d savaičių" #: js/misc/dateUtils.js:102 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "Prieš %d mėnesį" msgstr[1] "Prieš %d mėnesius" msgstr[2] "Prieš %d mėnesių" #: js/misc/dateUtils.js:108 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "Prieš %d metus" msgstr[1] "Prieš %d metus" msgstr[2] "Prieš %d metų" #. Translators: Time in 24h format #: js/misc/dateUtils.js:155 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/dateUtils.js:161 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "Vakar, %H:%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/dateUtils.js:167 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/dateUtils.js:173 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%B %-d, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/dateUtils.js:179 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%Y %m %-d, %H∶%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/dateUtils.js:184 msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/dateUtils.js:190 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "Vakar, %l∶%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/dateUtils.js:196 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/dateUtils.js:202 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%B %-d, %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/dateUtils.js:208 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%Y %m %-d, %l∶%M %p" #: js/portalHelper/main.js:98 msgid "Your connection seems to be secure" msgstr "Jūsų ryšys atrodo saugus" #: js/portalHelper/main.js:104 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "Jūsų prisijungimas prie šio prieigos taško yra nesaugus. Slaptažodžius bei " "kitą šiame puslapyje jūsų įvedamą informaciją gali matyti kiti asmenys." #: js/portalHelper/main.js:115 msgid "Hotspot Login" msgstr "Prisijungimas prie prieigos taško" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:51 js/ui/inhibitShortcutsDialog.js:92 msgid "Deny" msgstr "Neleisti" #: js/ui/accessDialog.js:52 js/ui/inhibitShortcutsDialog.js:101 msgid "Allow" msgstr "Leisti" #: js/ui/appDisplay.js:1769 msgid "Unnamed Folder" msgstr "Nepavadintas aplankas" #: js/ui/appFavorites.js:163 #, javascript-format msgid "%s has been pinned to the dash." msgstr "%s pridėta prie jūsų mėgstamų." #: js/ui/appFavorites.js:194 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "%s pašalinta iš jūsų mėgstamų." #: js/ui/appFavorites.js:208 js/ui/main.js:281 msgid "Undo" msgstr "Atšaukti" #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:49 msgid "Open Windows" msgstr "Atverti langai" #: js/ui/appMenu.js:57 msgid "New Window" msgstr "Naujas langas" #: js/ui/appMenu.js:84 msgid "App Details" msgstr "Programos detali informacija" #: js/ui/appMenu.js:100 msgid "Quit" msgstr "Užverti" #: js/ui/appMenu.js:160 js/ui/dash.js:248 msgid "Unpin" msgstr "Atsegti" #: js/ui/appMenu.js:161 msgid "Pin to Dash" msgstr "Prisegti juostoje" #: js/ui/appMenu.js:178 msgid "Launch using Integrated Graphics Card" msgstr "Paleisti naudojant integruotą grafikos kortą" #: js/ui/appMenu.js:179 msgid "Launch using Discrete Graphics Card" msgstr "Paleisti naudojant konkrečią grafikos kortą" #: js/ui/audioDeviceSelection.js:46 msgid "Select Audio Device" msgstr "Pasirinkite garso įrenginį" #: js/ui/audioDeviceSelection.js:61 js/ui/status/volume.js:81 msgid "Sound Settings" msgstr "Garso nustatymai" #: js/ui/audioDeviceSelection.js:74 msgid "Headphones" msgstr "Ausinės" #: js/ui/audioDeviceSelection.js:76 msgid "Headset" msgstr "Ausinės su mikrofonu" #: js/ui/audioDeviceSelection.js:78 js/ui/status/volume.js:356 msgid "Microphone" msgstr "Mikrofonas" #: js/ui/backgroundMenu.js:13 msgid "Change Background…" msgstr "Keisti foną…" #: js/ui/backgroundMenu.js:15 msgid "Display Settings" msgstr "Ekrano nustatymai" #: js/ui/backgroundMenu.js:16 msgid "Settings" msgstr "Nustatymai" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:37 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:63 msgctxt "grid sunday" msgid "S" msgstr "S" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:65 msgctxt "grid monday" msgid "M" msgstr "P" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:67 msgctxt "grid tuesday" msgid "T" msgstr "A" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:69 msgctxt "grid wednesday" msgid "W" msgstr "T" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:71 msgctxt "grid thursday" msgid "T" msgstr "K" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:73 msgctxt "grid friday" msgid "F" msgstr "P" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:75 msgctxt "grid saturday" msgid "S" msgstr "Š" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:426 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:436 msgid "%OB %Y" msgstr "%OB %Y" #: js/ui/calendar.js:498 msgid "Previous month" msgstr "Ankstesnis mėnuo" #: js/ui/calendar.js:516 msgid "Next month" msgstr "Kitas mėnuo" #: js/ui/calendar.js:667 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:726 msgid "Week %V" msgstr "Savaitė %V" #: js/ui/calendar.js:918 msgid "No Notifications" msgstr "Nėra pranešimų" #: js/ui/calendar.js:974 msgid "Do Not Disturb" msgstr "Netrukdyti" #: js/ui/calendar.js:995 msgid "Clear" msgstr "Išvalyti" #: js/ui/calendar.js:999 msgctxt "action" msgid "Clear all notifications" msgstr "Išvalyti visus pranešimus" #. Translators: %s is an application name #: js/ui/closeDialog.js:42 #, javascript-format msgid "“%s” Is Not Responding" msgstr "„%s“ neatsiliepia" #: js/ui/closeDialog.js:43 msgid "" "You may choose to wait a short while for it to continue or force the app to " "quit entirely" msgstr "" "Galite dar palaukti ir duoti programai laiko arba galite priverstinai " "išjungti programą" #: js/ui/closeDialog.js:71 msgid "Force Quit" msgstr "Priverstinai išjungti" #: js/ui/closeDialog.js:76 msgid "Wait" msgstr "Laukti" #: js/ui/components/automountManager.js:82 msgid "External drive connected" msgstr "Prijungta išorinė laikmena" #: js/ui/components/automountManager.js:94 msgid "External drive disconnected" msgstr "Atjungta išorinė laikmena" #: js/ui/components/automountManager.js:208 msgid "Unable to unlock volume" msgstr "Nepavyksta atrakinti garso" #: js/ui/components/automountManager.js:209 msgid "The installed udisks version does not support the PIM setting" msgstr "Įdiegta udisks versija nepalaiko PIM nustatymo" #. Translators: %s is the name of a partition on a external drive #: js/ui/components/autorunManager.js:189 #, javascript-format msgid "“%s” connected" msgstr "„%s“ prijungtas" #: js/ui/components/autorunManager.js:190 msgid "Disk can now be used" msgstr "Diską dabar galima naudoti" #: js/ui/components/autorunManager.js:202 #, javascript-format msgid "Open with %s" msgstr "Atverti su %s" #: js/ui/components/networkAgent.js:95 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router" msgstr "" "Taip pat galite prisijungti paspausdami „WPS“ mygtuką savo maršrutizatoriuje" #: js/ui/components/networkAgent.js:107 js/ui/status/bluetooth.js:245 #: js/ui/status/network.js:360 js/ui/status/network.js:444 msgid "Connect" msgstr "Prisijungti" #: js/ui/components/networkAgent.js:222 msgid "Key" msgstr "Raktas" #: js/ui/components/networkAgent.js:273 js/ui/components/networkAgent.js:312 msgid "Private key password" msgstr "Privataus rakto slaptažodis" #: js/ui/components/networkAgent.js:306 msgid "Identity" msgstr "Tapatybė" #: js/ui/components/networkAgent.js:332 msgid "Service" msgstr "Tarnyba" #: js/ui/components/networkAgent.js:370 js/ui/components/networkAgent.js:406 #: js/ui/components/networkAgent.js:743 js/ui/components/networkAgent.js:764 msgid "Authentication required" msgstr "Reikia patvirtinti tapatybę" #: js/ui/components/networkAgent.js:371 js/ui/components/networkAgent.js:744 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network “%s”" msgstr "" "Slaptažodžiai arba šifravimo raktai yra būtini priėjimui prie belaidžio " "tinklo „%s“" #: js/ui/components/networkAgent.js:375 js/ui/components/networkAgent.js:748 msgid "Wired 802.1X authentication" msgstr "Laidinis 802.1X tapatybės patvirtinimas" #: js/ui/components/networkAgent.js:378 msgid "Network name" msgstr "Tinklo vardas" #: js/ui/components/networkAgent.js:386 js/ui/components/networkAgent.js:752 msgid "DSL authentication" msgstr "DSL tapatybės patvirtinimas" #: js/ui/components/networkAgent.js:393 js/ui/components/networkAgent.js:757 msgid "PIN code required" msgstr "Reikalingas PIN kodas" #: js/ui/components/networkAgent.js:394 js/ui/components/networkAgent.js:758 msgid "PIN code is needed for the mobile broadband device" msgstr "Reikalingas PIN kodas mobiliajam plačiajuosčiam įrenginiui" #: js/ui/components/networkAgent.js:396 msgid "PIN" msgstr "PIN" #: js/ui/components/networkAgent.js:407 js/ui/components/networkAgent.js:749 #: js/ui/components/networkAgent.js:753 js/ui/components/networkAgent.js:765 #: js/ui/components/networkAgent.js:769 #, javascript-format msgid "A password is required to connect to “%s”" msgstr "Būtinas slaptažodis norint prisijungti prie „%s“" #: js/ui/components/networkAgent.js:768 msgid "VPN password" msgstr "VPN slaptažodis" #: js/ui/components/polkitAgent.js:44 msgid "Authentication Required" msgstr "Reikia patvirtinti tapatybę" #: js/ui/components/polkitAgent.js:84 msgid "Administrator" msgstr "Administratorius" #: js/ui/components/polkitAgent.js:149 msgid "Authenticate" msgstr "Patvirtinti tapatybę" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:263 js/ui/shellMountOperation.js:415 msgid "Sorry, that didn’t work. Please try again." msgstr "Atsiprašome, tai nesuveikė. Bandykite dar kartą." #: js/ui/ctrlAltTab.js:23 js/ui/overviewControls.js:404 msgid "Windows" msgstr "Langai" #: js/ui/dash.js:204 js/ui/dash.js:250 msgid "Show Apps" msgstr "Rodyti programas" #. Translators: this is the name of the dock/favorites area on #. the bottom of the overview #: js/ui/dash.js:408 msgid "Dash" msgstr "Paleidimo sritis" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:99 msgid "%B %-d %Y" msgstr "%Y %B %-d" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:106 msgid "%A %B %e %Y" msgstr "%A, %Y m. %B %d" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:172 msgctxt "calendar heading" msgid "%B %-d" msgstr "%B %-d" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:175 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%Y %B %-d" #: js/ui/dateMenu.js:181 msgid "Today" msgstr "Šiandien" #: js/ui/dateMenu.js:185 msgid "Tomorrow" msgstr "Rytoj" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:216 msgctxt "event list time" msgid "All Day" msgstr "Visa diena" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:238 msgid "%m/%d" msgstr "%m-%d" #: js/ui/dateMenu.js:289 msgid "No Events" msgstr "Nėra įvykių" #: js/ui/dateMenu.js:411 msgid "Add World Clocks…" msgstr "Pridėti pasaulio laikrodžius…" #: js/ui/dateMenu.js:412 msgid "World Clocks" msgstr "Pasaulio laikrodžiai" #: js/ui/dateMenu.js:702 msgid "Loading…" msgstr "Įkeliama…" #: js/ui/dateMenu.js:712 msgid "Go Online for Weather Information" msgstr "Prisijunkite prie tinklo orų informacijai gauti" #: js/ui/dateMenu.js:714 msgid "Weather Information Unavailable" msgstr "Orų informacija šiuo metu yra neprieinama" #: js/ui/dateMenu.js:724 msgid "Weather" msgstr "Orai" #: js/ui/dateMenu.js:726 msgid "Select Weather Location…" msgstr "Pasirinkite orų vietą…" #: js/ui/endSessionDialog.js:47 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "Atjungti naudotoją %s" #: js/ui/endSessionDialog.js:48 msgctxt "title" msgid "Log Out" msgstr "Atsijungti" #: js/ui/endSessionDialog.js:51 #, javascript-format msgid "%s will be logged out automatically in %d second" msgid_plural "%s will be logged out automatically in %d seconds" msgstr[0] "%s bus automatiškai atjungta už %d sekundės" msgstr[1] "%s bus automatiškai atjungta už %d sekundžių" msgstr[2] "%s bus automatiškai atjungta už %d sekundžių" #: js/ui/endSessionDialog.js:57 #, javascript-format msgid "You will be logged out automatically in %d second" msgid_plural "You will be logged out automatically in %d seconds" msgstr[0] "Jūs būsite automatiškai atjungti už %d sekundės" msgstr[1] "Jūs būsite automatiškai atjungti už %d sekundžių" msgstr[2] "Jūs būsite automatiškai atjungti už %d sekundžių" #: js/ui/endSessionDialog.js:64 msgctxt "button" msgid "Log Out" msgstr "Atsijungti" #: js/ui/endSessionDialog.js:70 js/ui/status/system.js:174 msgctxt "title" msgid "Power Off" msgstr "Išjungti" #: js/ui/endSessionDialog.js:71 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Įdiegti atnaujinimus ir išjungti" #: js/ui/endSessionDialog.js:74 #, javascript-format msgid "The system will power off automatically in %d second" msgid_plural "The system will power off automatically in %d seconds" msgstr[0] "Sistema automatiškai išsijungs po %d sekundės" msgstr[1] "Sistema automatiškai išsijungs po %d sekundžių" msgstr[2] "Sistema automatiškai išsijungs po %d sekundžių" #: js/ui/endSessionDialog.js:78 js/ui/endSessionDialog.js:97 msgctxt "checkbox" msgid "Install pending software updates" msgstr "Įdiegti programinės įrangos atnaujinimus" #: js/ui/endSessionDialog.js:82 msgctxt "button" msgid "Power Off" msgstr "Išjungti" #: js/ui/endSessionDialog.js:89 msgctxt "title" msgid "Restart" msgstr "Paleisti iš naujo" #: js/ui/endSessionDialog.js:90 msgctxt "title" msgid "Install Updates & Restart" msgstr "Įdiegti atnaujinimus ir perleisti" #: js/ui/endSessionDialog.js:93 #, javascript-format msgid "The system will restart automatically in %d second" msgid_plural "The system will restart automatically in %d seconds" msgstr[0] "Sistema bus paleista iš naujo po %d sekundės" msgstr[1] "Sistema bus paleista iš naujo po %d sekundžių" msgstr[2] "Sistema bus paleista iš naujo po %d sekundžių" #: js/ui/endSessionDialog.js:101 msgctxt "button" msgid "Restart" msgstr "Paleisti iš naujo" #: js/ui/endSessionDialog.js:109 msgctxt "title" msgid "Restart & Install Updates" msgstr "Perleisti ir įdiegti atnaujinimus" #: js/ui/endSessionDialog.js:112 #, javascript-format msgid "The system will automatically restart and install updates in %d second" msgid_plural "" "The system will automatically restart and install updates in %d seconds" msgstr[0] "Sistema bus paleista iš naujo ir įdiegs atnaujinimus po %d sekundės" msgstr[1] "" "Sistema bus paleista iš naujo ir įdiegs atnaujinimus po %d sekundžių" msgstr[2] "" "Sistema bus paleista iš naujo ir įdiegs atnaujinimus po %d sekundžių" #: js/ui/endSessionDialog.js:119 js/ui/endSessionDialog.js:140 msgctxt "button" msgid "Restart & Install" msgstr "Perleisti ir įdiegti" #: js/ui/endSessionDialog.js:121 msgctxt "button" msgid "Install & Power Off" msgstr "Įdiegti ir išjungti" #: js/ui/endSessionDialog.js:122 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Išjungti baigus diegti atnaujinimus" #: js/ui/endSessionDialog.js:129 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "Perleisti ir įdiegti atnaujinimą" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:134 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "%s %s bus įdiegta po perleidimo. Sistemos atnaujinimas gali ilgai užtrukti: " "įsitikinkite, kad pasidarėte atsarginę duomenų kopiją, ir kad kompiuteris " "yra įjungtas į elektros tinklą." #: js/ui/endSessionDialog.js:283 msgid "Low battery power: please plug in before installing updates" msgstr "" "Senka baterijos energija: įjunkite į elektros tinklą prieš įdiegdami " "atnaujinimus" #: js/ui/endSessionDialog.js:292 msgid "Some applications are busy or have unsaved work" msgstr "Kai kurios programos dirba arba turi neįrašyto darbo" #: js/ui/endSessionDialog.js:297 msgid "Other users are logged in" msgstr "Yra prisijungusių kitų naudotojų" #: js/ui/endSessionDialog.js:467 msgctxt "button" msgid "Boot Options" msgstr "Įkėlimo parametrai" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:672 #, javascript-format msgid "%s (remote)" msgstr "%s (nutolęs)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:675 #, javascript-format msgid "%s (console)" msgstr "%s (komandų eilutė)" #: js/ui/extensionDownloader.js:280 msgid "Install" msgstr "Įdiegti" #: js/ui/extensionDownloader.js:286 msgid "Install Extension" msgstr "Išdiegti plėtinį" #: js/ui/extensionDownloader.js:287 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "Parsiųsti ir įdiegti „%s“ iš extensions.gnome.org?" #: js/ui/extensionSystem.js:352 msgid "Extension Updates Available" msgstr "Yra plėtinių atnaujinimų" #: js/ui/extensionSystem.js:353 msgid "Extension updates are ready to be installed" msgstr "Plėtinių atnaujinimai paruošti diegimui" #: js/ui/inhibitShortcutsDialog.js:70 msgid "Allow inhibiting shortcuts" msgstr "Leisti talpinti trumpinius" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:73 #, javascript-format msgid "The app %s wants to inhibit shortcuts" msgstr "Programa %s nori talpinti trumpinius" #: js/ui/inhibitShortcutsDialog.js:74 msgid "An app wants to inhibit shortcuts" msgstr "Programa nori talpinti trumpinius" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:81 #, javascript-format msgid "You can restore shortcuts by pressing %s" msgstr "Galite atstatyti trumpinius paspaudę %s" #: js/ui/kbdA11yDialog.js:34 msgid "Slow Keys Turned On" msgstr "Lėtieji klavišai įjungti" #: js/ui/kbdA11yDialog.js:35 msgid "Slow Keys Turned Off" msgstr "Lėtieji klavišai išjungti" #: js/ui/kbdA11yDialog.js:36 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "Ką tik palaikėte nuspaudę 8 sekundes Lyg2 klavišą. Tai yra lėtųjų klavišų " "trumpinus, kuris keičia klaviatūros veikseną." #: js/ui/kbdA11yDialog.js:42 msgid "Sticky Keys Turned On" msgstr "Kibieji klavišai įjungti" #: js/ui/kbdA11yDialog.js:43 msgid "Sticky Keys Turned Off" msgstr "Kibieji klavišai išjungti" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "Ką tik paspaudėte Lyg2 klavišą 5 kartus iš eilės. Tai yra kibiųjų klavišų " "trumpinys, kuris pakeičia klaviatūros veikseną." #: js/ui/kbdA11yDialog.js:47 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" "Ką tik vienu metu paspaudėte du klavišus arba paspaudėte Lyg2 klavišą 5 " "kartus iš eilės. Tai įjungia kibiuosius klavišus ir pakeičia klaviatūros " "veikseną." #: js/ui/kbdA11yDialog.js:57 msgid "Leave On" msgstr "Palikti įjungtą" #: js/ui/kbdA11yDialog.js:57 msgid "Turn On" msgstr "Įjungti" #: js/ui/kbdA11yDialog.js:67 js/ui/status/network.js:455 msgid "Turn Off" msgstr "Išjungti" #: js/ui/kbdA11yDialog.js:67 msgid "Leave Off" msgstr "Palikti išjungtą" #: js/ui/keyboard.js:180 js/ui/status/keyboard.js:897 msgid "Keyboard Settings" msgstr "Klaviatūros nustatymai" #: js/ui/lookingGlass.js:727 msgid "No extensions installed" msgstr "Nėra įdiegtų plėtinių" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:788 #, javascript-format msgid "%s has not emitted any errors" msgstr "%s nepranešė apie jokias klaidas" #: js/ui/lookingGlass.js:794 msgid "Hide Errors" msgstr "Slėpti klaidas" #: js/ui/lookingGlass.js:798 js/ui/lookingGlass.js:875 msgid "Show Errors" msgstr "Rodyti klaidas" #: js/ui/lookingGlass.js:807 msgid "Active" msgstr "Aktyvi" #: js/ui/lookingGlass.js:810 msgid "Inactive" msgstr "Indikuota" #: js/ui/lookingGlass.js:812 msgid "Error" msgstr "Klaida" #: js/ui/lookingGlass.js:814 msgid "Out of date" msgstr "Pasenęs" #: js/ui/lookingGlass.js:816 msgid "Downloading" msgstr "Atsiunčiama" #: js/ui/lookingGlass.js:818 msgid "Deactivating" msgstr "Deaktyvinama" #: js/ui/lookingGlass.js:820 msgid "Activating" msgstr "Aktyvinama" #: js/ui/lookingGlass.js:853 msgid "View Source" msgstr "Žiūrėti šaltinį" #: js/ui/lookingGlass.js:864 msgid "Web Page" msgstr "Tinklalapis" #: js/ui/main.js:277 msgid "System was put in unsafe mode" msgstr "Sistema perjungta į nesaugią veikseną" #: js/ui/main.js:278 msgid "Apps now have unrestricted access" msgstr "Programos dabar turi neribotą prieigą" #: js/ui/main.js:338 msgid "Logged in as a privileged user" msgstr "Prisijungta privilegijuotu naudotoju" #: js/ui/main.js:339 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" "Saugumo sumetimais turėtų būti vengiama vykdyti seansus privilegijuotais " "naudotojais. Jei įmanoma, turėtumėt visada prisjungti normaliu naudotoju." #: js/ui/main.js:387 msgid "Screen Lock disabled" msgstr "Ekrano užraktas išjungtas" #: js/ui/main.js:388 msgid "Screen Locking requires the GNOME display manager" msgstr "Ekrano užrakinimas reikalaujas GNOME vaizduoklio valdyklės" #. Translators: this is the string displayed in the header when a message #. source doesn't have a name #: js/ui/messageList.js:374 msgid "Unknown App" msgstr "Nežinoma programa" #: js/ui/messageTray.js:326 js/ui/messageTray.js:328 msgid "Notification sound" msgstr "Pranešimo garsas" #: js/ui/mpris.js:198 msgid "Unknown artist" msgstr "Nežinomas atlikėjas" #: js/ui/mpris.js:208 msgid "Unknown title" msgstr "Nežinomas pavadinimas" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:328 msgid "Type to search" msgstr "Rašykite, ko ieškote" #: js/ui/overviewControls.js:392 msgid "Apps" msgstr "Programos" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:33 msgid "Overview" msgstr "Apžvalga" #: js/ui/padOsd.js:98 msgid "New shortcut…" msgstr "Naujas trumpinys…" #: js/ui/padOsd.js:151 msgid "App defined" msgstr "Programos nustatytas" #: js/ui/padOsd.js:152 msgid "Show on-screen help" msgstr "Rodyti pagalbą ekrane" #: js/ui/padOsd.js:153 msgid "Switch monitor" msgstr "Keisti monitorių" #: js/ui/padOsd.js:154 msgid "Assign keystroke" msgstr "Priskirti klavišų kombinaciją" #: js/ui/padOsd.js:223 msgid "Done" msgstr "Atlikta" #: js/ui/padOsd.js:726 msgid "Edit…" msgstr "Keisti…" #: js/ui/padOsd.js:773 msgid "None" msgstr "Nėra" #: js/ui/padOsd.js:844 msgid "Press a button to configure" msgstr "Spauskite mygtuką konfigūravimui" #: js/ui/padOsd.js:845 msgid "Press Esc to exit" msgstr "Spauskit Esc išėjimui" #: js/ui/padOsd.js:848 msgid "Press any key to exit" msgstr "Išėjimui spauskite bet kurį klavišą" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:423 msgid "Activities" msgstr "Apžvalga" #: js/ui/panel.js:504 msgctxt "System menu in the top bar" msgid "System" msgstr "Sistema" #: js/ui/panel.js:678 msgid "Top Bar" msgstr "Viršutinė juosta" #: js/ui/quickSettings.js:188 msgid "Open menu" msgstr "Atverti meniu" #: js/ui/runDialog.js:61 msgid "Run a Command" msgstr "Vykdyti komandą" #: js/ui/runDialog.js:76 msgid "Press ESC to close" msgstr "Spauskit ESC užvėrimui" #: js/ui/runDialog.js:241 msgid "Restart is not available on Wayland" msgstr "Perleisti Wayland aplinkoje negalima" #: js/ui/runDialog.js:246 msgid "Restarting…" msgstr "Perleidžiama…" #: js/ui/screenShield.js:233 msgid "GNOME needs to lock the screen" msgstr "GNOME aplinkai reikia užrakinti ekraną" #: js/ui/screenShield.js:274 js/ui/screenShield.js:667 msgid "Unable to lock" msgstr "Nepavyksta užrakinti" #: js/ui/screenShield.js:275 js/ui/screenShield.js:668 msgid "Lock was blocked by an app" msgstr "Programa užblokavo užrakinimą" #: js/ui/screenshot.js:1252 msgid "Selection" msgstr "Žymėjimas" #: js/ui/screenshot.js:1262 msgid "Area Selection" msgstr "Srities žymėjimas" #: js/ui/screenshot.js:1267 msgid "Screen" msgstr "Ekranas" #: js/ui/screenshot.js:1277 msgid "Screen Selection" msgstr "Ekrano žymėjimas" #: js/ui/screenshot.js:1282 msgid "Window" msgstr "Langas" #: js/ui/screenshot.js:1292 msgid "Window Selection" msgstr "Lango žymėjimas" #. Translators: entry in the window right click menu. #: js/ui/screenshot.js:1317 js/ui/status/system.js:111 js/ui/windowMenu.js:28 msgid "Take Screenshot" msgstr "Padaryti ekrano nuotrauką" #: js/ui/screenshot.js:1333 msgid "Record Screen" msgstr "Įrašyti ekraną" #. Translators: since this string refers to an action, #. it needs to be phrased as a verb. #: js/ui/screenshot.js:1350 msgid "Capture" msgstr "Fotografuoti" #: js/ui/screenshot.js:1372 msgid "Show Pointer" msgstr "Rodyti žymeklį" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1996 msgid "Screencasts" msgstr "Ekrano įrašai" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast From 07-17-2013 10:00:46 PM" #: js/ui/screenshot.js:2001 #, no-c-format msgid "Screencast From %d %t" msgstr "Ekrano įrašas iš %d %t" #. Translators: notification title. #: js/ui/screenshot.js:2047 msgid "Screencast recorded" msgstr "Ekrano įrašas įrašytas" #. Translators: notification title. #: js/ui/screenshot.js:2060 msgid "Screencast failed to start" msgstr "Ekrano įrašo nepavyko paleisti" #. Translators: notification title. #: js/ui/screenshot.js:2066 msgid "Screencast ended: Out of disk space" msgstr "Ekrano įrašas nutrūko: trūksta vietos diske" #. We can encourage user to try again on service crashes since the #. recorder will auto-blocklist the pipeline that crashed. #. Translators: notification title. #: js/ui/screenshot.js:2072 msgid "Screencast ended unexpectedly, please try again" msgstr "Ekrano įrašas netikėtai nutrūko, bandykite dar kartą" #. Translators: notification title. #: js/ui/screenshot.js:2075 msgid "Screencast ended unexpectedly" msgstr "Ekrano įrašas netikėtai nutrūko" #. Translators: notification source name. #: js/ui/screenshot.js:2085 js/ui/screenshot.js:2327 msgid "Screenshot" msgstr "Ekrano nuotrauka" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:2092 msgid "Click here to view the video." msgstr "Spauskite čia įrašui žiūrėti." #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:2100 js/ui/screenshot.js:2343 msgid "Show in Files" msgstr "Rodyti Failuose" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2287 #, javascript-format msgid "Screenshot From %s" msgstr "Ekrano nuotrauka iš %s" #. Translators: notification title. #: js/ui/screenshot.js:2333 msgid "Screenshot captured" msgstr "Ekrano nuotrauka padaryta" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2335 msgid "You can paste the image from the clipboard." msgstr "Galite įdėti paveikslėlį iš iškarpinės." #: js/ui/screenshot.js:2391 js/ui/screenshot.js:2555 msgid "Screenshot taken" msgstr "Ekrano nuotrauka padaryta" #: js/ui/search.js:829 msgid "Searching…" msgstr "Ieškoma…" #: js/ui/search.js:831 msgid "No results" msgstr "Nerasta atitikmenų" #: js/ui/search.js:962 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "dar %d" msgstr[1] "dar %d" msgstr[2] "dar %d" #: js/ui/searchController.js:87 #: subprojects/extensions-app/data/ui/extensions-window.ui:73 msgid "Search" msgstr "Ieškoti" #: js/ui/shellEntry.js:21 msgid "Copy" msgstr "Kopijuoti" #: js/ui/shellEntry.js:26 msgid "Paste" msgstr "Įdėti" #: js/ui/shellEntry.js:78 msgid "Show Text" msgstr "Rodyti tekstą" #: js/ui/shellEntry.js:80 msgid "Hide Text" msgstr "Slėpti tekstą" #: js/ui/shellEntry.js:174 msgid "Caps lock is on" msgstr "Įjungtos didžiosios raidės" #: js/ui/shellMountOperation.js:286 msgid "Hidden Volume" msgstr "Paslėptas garsumas" #: js/ui/shellMountOperation.js:289 msgid "Windows System Volume" msgstr "Windows sisteminis tomas" #: js/ui/shellMountOperation.js:292 msgid "Uses Keyfiles" msgstr "Naudoja raktų failus" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:300 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead" msgstr "" "Norint atrakinti tomą, kuris naudoja raktų failus, naudokite %s įrankį" #: js/ui/shellMountOperation.js:304 msgid "" "You need an external utility like Disks to unlock a volume that uses " "keyfiles" msgstr "" "Reikia išorinio įrankio, tokio kaip Diskai raktų failus naudojančiam " "tomui atrakinti" #: js/ui/shellMountOperation.js:312 msgid "PIM Number" msgstr "PIM numeris" #: js/ui/shellMountOperation.js:371 msgid "Remember Password" msgstr "Atsiminti slaptažodį" #: js/ui/shellMountOperation.js:386 msgid "Unlock" msgstr "Atrakinti" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:400 #, javascript-format msgid "Open %s" msgstr "Atverti %s" #: js/ui/shellMountOperation.js:436 msgid "The PIM must be a number or empty" msgstr "PIM turi būti numeris arba tuščias" #: js/ui/status/accessibility.js:34 msgid "Accessibility" msgstr "Universali prieiga" #: js/ui/status/accessibility.js:44 msgid "High Contrast" msgstr "Didelis kontrastas" #: js/ui/status/accessibility.js:47 msgid "Zoom" msgstr "Priartinimas" #: js/ui/status/accessibility.js:54 msgid "Screen Reader" msgstr "Ekrano skaityklė" #: js/ui/status/accessibility.js:58 msgid "Screen Keyboard" msgstr "Klaviatūra ekrane" #: js/ui/status/accessibility.js:62 msgid "Visual Alerts" msgstr "Vaizdo įspėjimai" #: js/ui/status/accessibility.js:66 msgid "Sticky Keys" msgstr "Kibieji klavišai" #: js/ui/status/accessibility.js:70 msgid "Slow Keys" msgstr "Lėtieji klavišai" #: js/ui/status/accessibility.js:74 msgid "Bounce Keys" msgstr "Pasikartojantieji klavišai" #: js/ui/status/accessibility.js:78 msgid "Mouse Keys" msgstr "Pelės mygtukai" #: js/ui/status/accessibility.js:83 msgid "Accessibility Settings" msgstr "Prieigos nuostatos" #: js/ui/status/accessibility.js:140 msgid "Large Text" msgstr "Didelis tekstas" #: js/ui/status/autoRotate.js:14 msgid "Auto Rotate" msgstr "Automatiškai pasukti" #: js/ui/status/backgroundApps.js:156 msgctxt "title" msgid "Background Apps" msgstr "Fone veikiančios programos" #: js/ui/status/backgroundApps.js:171 msgid "Apps known to be running without a window" msgstr "Žinomos programos, veikiančios be lango" #: js/ui/status/backgroundApps.js:182 msgid "App Settings" msgstr "Programų nustatymai" #: js/ui/status/backgroundApps.js:239 msgid "No Background Apps" msgstr "Nėra fone veikiančių programų" #: js/ui/status/backgroundApps.js:241 #, javascript-format msgid "%d Background App" msgid_plural "%d Background Apps" msgstr[0] "%d programa fone" msgstr[1] "%d programos fone" msgstr[2] "%d programų fone" #: js/ui/status/backlight.js:39 msgid "Keyboard Brightness" msgstr "Klaviatūros šviesumas" #: js/ui/status/backlight.js:79 msgid "Off" msgstr "Išjungta" #: js/ui/status/backlight.js:80 msgid "Low" msgstr "Žemas" #: js/ui/status/backlight.js:81 msgid "High" msgstr "Aukštas" #: js/ui/status/backlight.js:147 js/ui/status/keyboard.js:879 msgid "Keyboard" msgstr "Klaviatūra" #: js/ui/status/bluetooth.js:245 js/ui/status/network.js:360 msgid "Disconnect" msgstr "Atsijungti" #: js/ui/status/bluetooth.js:262 js/ui/status/bluetooth.js:264 msgid "Bluetooth" msgstr "Bluetooth" #: js/ui/status/bluetooth.js:287 js/ui/status/network.js:1900 msgid "Bluetooth Settings" msgstr "Bluetooth nustatymai" #: js/ui/status/bluetooth.js:334 msgid "No available or connected devices" msgstr "Nėra prieinamų ar prijungtų įrenginių" #: js/ui/status/bluetooth.js:335 msgid "Turn on Bluetooth to connect to devices" msgstr "Įjunkite Bluetooth prisijungimui prie įrenginių" #. Translators: This is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:389 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d prijungtas" msgstr[1] "%d prijungti" msgstr[2] "%d prijungta" #: js/ui/status/brightness.js:32 msgid "Brightness" msgstr "Ryškumas" #: js/ui/status/darkMode.js:12 msgid "Dark Style" msgstr "Tamsus stilius" #: js/ui/status/dwellClick.js:15 msgid "Single Click" msgstr "Vienas paspaudimas" #: js/ui/status/dwellClick.js:20 msgid "Double Click" msgstr "Dvigubas paspaudimas" #: js/ui/status/dwellClick.js:25 msgid "Drag" msgstr "Tempimas" #: js/ui/status/dwellClick.js:30 msgid "Secondary Click" msgstr "Antrinis paspaudimas" #: js/ui/status/dwellClick.js:39 msgid "Dwell Click" msgstr "Uždelstas paspaudimas" #: js/ui/status/keyboard.js:896 msgid "Show Keyboard Layout" msgstr "Rodyti klaviatūros išdėstymą" #: js/ui/status/location.js:337 msgid "Allow location access" msgstr "Leisti vietos informacijos prieigą" #. Translators: %s is an application name #: js/ui/status/location.js:339 #, javascript-format msgid "The app %s wants to access your location" msgstr "Programa %s nori prieigos prie jūsų būvimo vietos" #: js/ui/status/location.js:349 msgid "Location access can be changed at any time from the privacy settings" msgstr "Prieigą prie vietos bet kada galima pakeisti privatumo nustatymuose" #: js/ui/status/location.js:357 msgid "Deny Access" msgstr "Atmesti prieigą" #: js/ui/status/location.js:362 msgid "Grant Access" msgstr "Suteikti prieigą" #: js/ui/status/network.js:62 msgid "" msgstr "" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:354 #, javascript-format msgid "Disconnect %s" msgstr "Atsijungti nuo %s" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:356 #, javascript-format msgid "Connect to %s" msgstr "Prisijungti prie %s" #: js/ui/status/network.js:1050 msgid "Secure" msgstr "Saugus" #: js/ui/status/network.js:1050 msgid "Not secure" msgstr "Nesaugus" #: js/ui/status/network.js:1051 #, javascript-format msgid "Signal strength %s%%" msgstr "Signalo stiprumas %s%%" #. translators: The first placeholder is the network name, the second and indication whether it is secure, and the last the signal strength indication #: js/ui/status/network.js:1053 #, javascript-format msgid "%s, %s, %s" msgstr "%s, %s, %s" #. Translators: %s is a network identifier #: js/ui/status/network.js:1155 #, javascript-format msgid "%s Hotspot" msgstr "Prieigos taškas %s" #: js/ui/status/network.js:1426 #, javascript-format msgid "%d connected" msgid_plural "%d connected" msgstr[0] "%d prijungtas" msgstr[1] "%d prijungti" msgstr[2] "%d prijungta" #: js/ui/status/network.js:1524 js/ui/status/network.js:1540 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1525 msgid "VPN Settings" msgstr "VPN nustatymai" #: js/ui/status/network.js:1785 msgid "Wi–Fi" msgstr "Wi–Fi" #: js/ui/status/network.js:1787 msgid "All Networks" msgstr "Visi tinklai" #: js/ui/status/network.js:1884 msgid "Wired Connections" msgstr "Laidiniai ryšiai" #: js/ui/status/network.js:1885 msgid "Wired Settings" msgstr "Laidinio ryšio nustatymai" #: js/ui/status/network.js:1899 msgid "Bluetooth Tethers" msgstr "Bluetooth ryšiai" #. Translators: "Tether" from "Bluetooth Tether" #: js/ui/status/network.js:1906 msgid "Tether" msgstr "Ryšys" #: js/ui/status/network.js:1919 msgid "Mobile Connections" msgstr "Mobilieji ryšiai" #: js/ui/status/network.js:1921 msgid "Mobile Broadband Settings" msgstr "Mobiliojo plačiajuosčio tinklo nustatymai" #. Translators: "Mobile" from "Mobile Broadband" #: js/ui/status/network.js:1930 msgid "Mobile" msgstr "Mobilusis" #: js/ui/status/network.js:1964 msgid "Sign Into Wi–Fi Network" msgstr "Prisijungti prie Wi-Fi tinklo" #: js/ui/status/network.js:2151 msgid "Connection failed" msgstr "Nepavyko prisijungti" #: js/ui/status/network.js:2152 msgid "Activation of network connection failed" msgstr "Tinklo ryšio nepavyko aktyvuoti" #: js/ui/status/nightLight.js:19 msgid "Night Light" msgstr "Naktinis apšvietimas" #: js/ui/status/powerProfiles.js:19 msgctxt "Power profile" msgid "Performance" msgstr "Našus" #: js/ui/status/powerProfiles.js:24 msgctxt "Power profile" msgid "Balanced" msgstr "Balansuotas" #: js/ui/status/powerProfiles.js:29 msgctxt "Power profile" msgid "Power Saver" msgstr "Taupantis energiją" #: js/ui/status/powerProfiles.js:39 js/ui/status/powerProfiles.js:69 msgid "Power Mode" msgstr "Energijos veiksena" #: js/ui/status/powerProfiles.js:71 msgid "Power Settings" msgstr "Energijos valdymo nustatymai" #: js/ui/status/remoteAccess.js:74 msgid "Stop Screencast" msgstr "Stabdyti ekrano įrašą" #: js/ui/status/remoteAccess.js:144 msgid "Stop Screen Sharing" msgstr "Stabdyti dalinimąsi ekranu" #: js/ui/status/rfkill.js:99 msgid "Airplane Mode" msgstr "Skrydžio veiksena" #: js/ui/status/system.js:168 msgid "Power Off Menu" msgstr "Išjungimo meniu" #: js/ui/status/system.js:176 msgid "Suspend" msgstr "Pristabdyti" #: js/ui/status/system.js:181 msgid "Restart…" msgstr "Perleisti…" #: js/ui/status/system.js:186 msgid "Power Off…" msgstr "Išjungti…" #: js/ui/status/system.js:193 #: subprojects/extensions-app/data/ui/extensions-window.ui:124 msgid "Log Out…" msgstr "Atsijungti…" #: js/ui/status/system.js:198 msgid "Switch User…" msgstr "Keisti naudotoją…" #: js/ui/status/system.js:242 msgctxt "action" msgid "Lock Screen" msgstr "Ekrano užraktas" #: js/ui/status/thunderbolt.js:308 msgid "Unknown Thunderbolt device" msgstr "Nežinoma Thunderbolt įrenginys" #: js/ui/status/thunderbolt.js:309 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" "Jums nesant aptiktas naujas įrenginys. Atjunkite ir vėl prijunkite įrenginį, " "jei norite jį naudoti." #: js/ui/status/thunderbolt.js:312 msgid "Unauthorized Thunderbolt device" msgstr "Neleidžiamas Thunderbolt įrenginys" #: js/ui/status/thunderbolt.js:313 msgid "" "New device has been detected and needs to be authorized by an administrator" msgstr "Buvo aptiktas naujas įrenginys, kurį turi leisti administratorius" #: js/ui/status/thunderbolt.js:319 msgid "Thunderbolt authorization error" msgstr "Thunderbolt autorizacijos klaida" #: js/ui/status/thunderbolt.js:320 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "Nepavyko autorizuoti Thunderbolt įrenginio: %s" #: js/ui/status/volume.js:218 msgid "Volume changed" msgstr "Garsumas pakeistas" #: js/ui/status/volume.js:231 msgid "Unmute" msgstr "Įjungti garsą" #: js/ui/status/volume.js:231 msgid "Mute" msgstr "Nutildyti" #: js/ui/status/volume.js:286 msgid "Volume" msgstr "Garsumas" #: js/ui/status/volume.js:302 msgid "Sound Output" msgstr "Garso išvestis" #: js/ui/status/volume.js:374 msgid "Sound Input" msgstr "Garso įvestis" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:20 msgid "Mirror" msgstr "Veidrodis" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:29 msgid "Join Displays" msgstr "Sujungti vaizduoklius" #. Translators: this is for using only external displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:39 msgid "External Only" msgstr "Tik išorinis" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:47 msgid "Built-in Only" msgstr "Tik vidinis" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:378 msgid "%A %B %-d" msgstr "%A %B %-d" #: js/ui/unlockDialog.js:384 msgid "Swipe up to unlock" msgstr "Atrakinkite perbraukdami" #: js/ui/unlockDialog.js:385 msgid "Click or press a key to unlock" msgstr "Atrakinkite mygtuko ar klavišo paspaudimu" #: js/ui/unlockDialog.js:568 msgid "Unlock Window" msgstr "Atrakinimo langas" #: js/ui/unlockDialog.js:577 msgid "Log in as another user" msgstr "Prisijungti kitu naudotoju" #: js/ui/welcomeDialog.js:47 #, javascript-format msgid "GNOME %s" msgstr "GNOME %s" #: js/ui/welcomeDialog.js:51 #, javascript-format msgid "Welcome to %s" msgstr "Sveiki pradėję naudoti %s" #: js/ui/welcomeDialog.js:52 msgid "If you want to learn your way around, check out the tour" msgstr "Jei norite sužinoti, kaip naudotis, išbandykite turą" #: js/ui/welcomeDialog.js:61 msgid "Skip" msgstr "Praleisti" #: js/ui/welcomeDialog.js:66 msgid "Take Tour" msgstr "Turas" #: js/ui/windowAttentionHandler.js:18 #, javascript-format msgid "“%s” is ready" msgstr "„%s“ yra pasirengusi" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:68 msgid "Keep these display settings?" msgstr "Ar norite įrašyti šiuos vaizduoklio nustatymus?" #: js/ui/windowManager.js:78 msgid "Revert Settings" msgstr "Grąžinti nustatymus" #: js/ui/windowManager.js:83 msgid "Keep Changes" msgstr "Įrašyti pakeitimus" #: js/ui/windowManager.js:103 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "Pakeitimai bus grąžinti po %d sekundės" msgstr[1] "Pakeitimai bus grąžinti po %d sekundžių" msgstr[2] "Pakeitimai bus grąžinti po %d sekundžių" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:500 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:40 msgid "Hide" msgstr "Slėpti" #: js/ui/windowMenu.js:47 msgid "Restore" msgstr "Atstatyti" #: js/ui/windowMenu.js:51 msgid "Maximize" msgstr "Išdidinti" #: js/ui/windowMenu.js:58 msgid "Move" msgstr "Perkelti" #: js/ui/windowMenu.js:78 msgid "Resize" msgstr "Keisti dydį" #: js/ui/windowMenu.js:98 msgid "Always on Top" msgstr "Visada viršuje" #: js/ui/windowMenu.js:117 msgid "Always on Visible Workspace" msgstr "Visada matomoje darbo srityje" #: js/ui/windowMenu.js:131 msgid "Move to Workspace Left" msgstr "Perkelti į kairiau esančią darbo sritį" #: js/ui/windowMenu.js:137 msgid "Move to Workspace Right" msgstr "Perkelti į dešiniau esančią darbo sritį" #: js/ui/windowMenu.js:143 msgid "Move to Workspace Up" msgstr "Perkelti į aukščiau esančią darbo sritį" #: js/ui/windowMenu.js:149 msgid "Move to Workspace Down" msgstr "Perkelti į žemiau esančią darbo sritį" #: js/ui/windowMenu.js:167 msgid "Move to Monitor Up" msgstr "Perkelti į aukščiau esantį monitorių" #: js/ui/windowMenu.js:176 msgid "Move to Monitor Down" msgstr "Perkelti į žemiau esantį monitorių" #: js/ui/windowMenu.js:185 msgid "Move to Monitor Left" msgstr "Perkelti į kairiau esantį monitorių" #: js/ui/windowMenu.js:194 msgid "Move to Monitor Right" msgstr "Perkelti į dešiniau esantį monitorių" #: js/ui/windowMenu.js:202 msgid "Close" msgstr "Užverti" #: src/main.c:529 subprojects/extensions-tool/src/main.c:336 msgid "Print version" msgstr "Išvesti versijos numerį" #: src/main.c:535 msgid "Mode used by GDM for login screen" msgstr "Veiksena, naudojama GDM prisijungimo ekrane" #: src/main.c:541 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "Naudoti konkrečią veikseną, pvz., „gdm“ prisijungimo ekranui" #: src/main.c:547 msgid "List possible modes" msgstr "Išvardinti galimas veiksenas" #: src/main.c:553 msgid "Force animations to be enabled" msgstr "Priverstinai įjungti animacijas" #: src/shell-app.c:252 msgctxt "program" msgid "Unknown" msgstr "Nežinoma" #: src/shell-app.c:503 #, c-format msgid "Failed to launch “%s”" msgstr "Nepavyko paleisti „%s“" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match" msgstr "Slaptažodžiai nesutampa" #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "Slaptažodis negali būti tuščias" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "Naudotojas užvėrė tapatybės patvirtinimo dialogą" #: src/st/st-icon-theme.c:1865 #, c-format msgid "Icon '%s' not present in theme %s" msgstr "Piktogramos „%s“ nėra temoje %s" #: src/st/st-icon-theme.c:3454 src/st/st-icon-theme.c:3757 msgid "Failed to load icon" msgstr "Nepavyko įkelti piktogramos" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 msgid "Manage your GNOME Extensions" msgstr "Tvarkyti GNOME plėtinius" #. developer_name tag deprecated with Appstream 1.0 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:19 msgid "The GNOME Project" msgstr "GNOME projektas" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:51 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" "GNOME Plėtiniai atnaujina plėtinius, konfigūruoja jų nustatymus bei šalina " "arba išjungia nepageidaujamus plėtinius." #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:64 msgid "Main Window" msgstr "Pagrindinis langas" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:68 msgid "Available Updates" msgstr "Prieinami atnaujinimai" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:72 msgid "Search View" msgstr "Paieškos rodinys" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "Konfigūruoti GNOME Shell plėtinius" #: subprojects/extensions-app/js/extensionManager.js:237 #, javascript-format msgid "" "The installed version of this extension (%s) is incompatible with the " "current version of GNOME (%s). The extension has been disabled." msgstr "" "Įdiegta šio plėtinio versija (%s) yra nesuderinama su dabartine GNOME " "versija (%s). Plėtinys buvo išjungtas." #: subprojects/extensions-app/js/extensionManager.js:238 #, javascript-format msgid "" "The installed version of this extension is incompatible with the current " "version of GNOME (%s). The extension has been disabled." msgstr "" "Įdiegta šio plėtinio versija yra nesuderinama su dabartine GNOME versija " "(%s). Plėtinys buvo išjungtas." #: subprojects/extensions-app/js/extensionManager.js:242 msgid "" "An error has occurred in this extension. This could cause issues elsewhere " "in the system. It is recommended to turn the extension off until the error " "is resolved." msgstr "" "Kilo klaida šiame plėtinyje. Tai gali sukelti problemų kitur sistemoje. " "Rekomenduojama išjungti plėtinį iki klaida bus ištaisyta." #. translators: Details for an extension error #: subprojects/extensions-app/js/extensionManager.js:248 msgid "Error details:" msgstr "Klaidos informacija:" #: subprojects/extensions-app/js/extensionRow.js:82 #, javascript-format msgid "Version %s" msgstr "Versija %s" #: subprojects/extensions-app/js/extensionsWindow.js:113 #, javascript-format msgid "Remove “%s”?" msgstr "Pašalinti „%s“?" #: subprojects/extensions-app/js/extensionsWindow.js:114 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "" "Jei pašalinsite plėtinį, reikės grįžti prie jo atsisiuntimo, jei norėsite jį " "vėl įjungti" #: subprojects/extensions-app/js/extensionsWindow.js:117 msgid "_Cancel" msgstr "_Atsisakyti" #: subprojects/extensions-app/js/extensionsWindow.js:118 msgid "_Remove" msgstr "_Pašalinti" #: subprojects/extensions-app/js/extensionsWindow.js:158 msgid "translator-credits" msgstr "" "Išvertė:\n" "Aurimas Černius " #: subprojects/extensions-app/js/extensionsWindow.js:203 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "%d plėtinys bus atnaujintas kitą kartą prisijungus." msgstr[1] "%d plėtiniai bus atnaujintas kitą kartą prisijungus." msgstr[2] "%d plėtinių bus atnaujintas kitą kartą prisijungus." #: subprojects/extensions-app/data/ui/extension-row.ui:22 msgid "Error Details" msgstr "Klaidos detali informacija" #: subprojects/extensions-app/data/ui/extension-row.ui:62 msgid "Updates Details" msgstr "Atnaujinimų detali informacija" #: subprojects/extensions-app/data/ui/extension-row.ui:72 msgid "" "A new version of this extension is ready and will be loaded on next login." msgstr "" "Nauja šio plėtinio versija yra paruošta ir bus įkelta kitą kartą prisijungus." #: subprojects/extensions-app/data/ui/extension-row.ui:104 msgid "Extension Details" msgstr "Plėtinio detali informaciją" #: subprojects/extensions-app/data/ui/extension-row.ui:192 msgid "_Website" msgstr "_Tinklalapis" #: subprojects/extensions-app/data/ui/extension-row.ui:219 msgid "_Settings" msgstr "_Nuostatos" #: subprojects/extensions-app/data/ui/extension-row.ui:246 msgid "_Remove…" msgstr "_Pašalinti…" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Keyboard Shortcuts" msgstr "Klaviatūros trumpiniai" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "Apie plėtinius" #: subprojects/extensions-app/data/ui/extensions-window.ui:64 msgid "Main Menu" msgstr "Pagrindinis meniu" #: subprojects/extensions-app/data/ui/extensions-window.ui:106 msgid "Search extensions" msgstr "Paieškos plėtiniai" #: subprojects/extensions-app/data/ui/extensions-window.ui:134 msgid "_Extensions" msgstr "_Plėtiniai" #: subprojects/extensions-app/data/ui/extensions-window.ui:139 msgid "More Information" msgstr "Daugiau informacijos" #: subprojects/extensions-app/data/ui/extensions-window.ui:151 msgid "" "Extensions can cause performance and stability issues. It is recommended to " "disable all extensions if you experience problems with your system." msgstr "" "Plėtiniai gali sukelti našumo ir stabilumo problemų. Rekomenduojama " "išjunkite plėtinius, jei turite problemų su sistema." #: subprojects/extensions-app/data/ui/extensions-window.ui:178 msgid "User Extensions" msgstr "Naudotojo plėtiniai" #: subprojects/extensions-app/data/ui/extensions-window.ui:198 msgid "System Extensions" msgstr "Sisteminiai plėtiniai" #: subprojects/extensions-app/data/ui/extensions-window.ui:233 msgid "Search Results" msgstr "Paieškos rezultatai" #: subprojects/extensions-app/data/ui/extensions-window.ui:252 msgid "No Results Found" msgstr "Nerasta atitikmenų" #: subprojects/extensions-app/data/ui/extensions-window.ui:253 msgid "Try a different search" msgstr "Bandykite kitą paiešką" #: subprojects/extensions-app/data/ui/extensions-window.ui:264 msgid "No Installed Extensions" msgstr "Nėra įdiegtų plėtinių" #: subprojects/extensions-app/data/ui/extensions-window.ui:265 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" "Plėtinius galima rasti ir įdiegti per apsilankius extensions.gnome.org." #: subprojects/extensions-app/data/ui/extensions-window.ui:276 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" "Atsiprašome, bet nepavyko gauti įdiegtų plėtinių sąrašo. Įsitikinkite, kad " "esate prisijungęs prie GNOME ir bandykite vėl." #: subprojects/extensions-app/data/ui/help-overlay.ui:9 msgctxt "shortcut window" msgid "General" msgstr "Esmė" #: subprojects/extensions-app/data/ui/help-overlay.ui:12 msgctxt "shortcut window" msgid "Open Menu" msgstr "Atverti meniu" #: subprojects/extensions-app/data/ui/help-overlay.ui:18 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Perjungti paiešką" #: subprojects/extensions-app/data/ui/help-overlay.ui:24 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Rodyti trumpinius" #: subprojects/extensions-app/data/ui/help-overlay.ui:30 msgctxt "shortcut window" msgid "Quit" msgstr "Išeiti" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:284 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "Naujas plėtinys sėkmingai sukurtas kataloge %s.\n" #: subprojects/extensions-tool/src/command-create.c:376 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" "Pavadinimas turi būti trumpa (geriausia apibūdinant) simbolių eilutė.\n" "Pavyzdžiai: %s" #: subprojects/extensions-tool/src/command-create.c:382 #: subprojects/extensions-tool/src/main.c:243 msgid "Name" msgstr "Pavadinimas" #: subprojects/extensions-tool/src/command-create.c:396 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" "Aprašymas yra vieno sakinio paaiškinimas, ką daro plėtinys.\n" "Pavyzdžiai: %s" #: subprojects/extensions-tool/src/command-create.c:402 #: subprojects/extensions-tool/src/main.c:246 msgid "Description" msgstr "Aprašymas" #: subprojects/extensions-tool/src/command-create.c:416 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" "UUID yra visuotinai unikalus identifikatorius jūsų plėtiniui.\n" "Jis turėtų būti el. pašto adreso formato (clicktofocus@janedoe.example.com)\n" #: subprojects/extensions-tool/src/command-create.c:443 msgid "Choose one of the available templates:\n" msgstr "Pasirinkite vieną iš šablonų:\n" #: subprojects/extensions-tool/src/command-create.c:457 msgid "Template" msgstr "Šablonas" #: subprojects/extensions-tool/src/command-create.c:515 msgid "The unique identifier of the new extension" msgstr "Unikalus identifikatorius naujam plėtiniui" #: subprojects/extensions-tool/src/command-create.c:518 msgid "NAME" msgstr "PAVADINIMAS" #: subprojects/extensions-tool/src/command-create.c:519 msgid "The user-visible name of the new extension" msgstr "Naudotojui matomas plėtinio pavadinimas" #: subprojects/extensions-tool/src/command-create.c:521 msgid "DESCRIPTION" msgstr "APRAŠYMAS" #: subprojects/extensions-tool/src/command-create.c:523 msgid "A short description of what the extension does" msgstr "Trumpas aprašymas, ką daro plėtinys" #: subprojects/extensions-tool/src/command-create.c:525 #: subprojects/extensions-tool/src/command-pack.c:455 msgid "DOMAIN" msgstr "DOMENAS" #: subprojects/extensions-tool/src/command-create.c:527 msgid "The gettext domain used by the extension" msgstr "Plėtinio naudojamas gettext domenas" #: subprojects/extensions-tool/src/command-create.c:529 #: subprojects/extensions-tool/src/command-pack.c:448 msgid "SCHEMA" msgstr "SCHEMA" #: subprojects/extensions-tool/src/command-create.c:531 msgid "The GSettings schema used by the extension" msgstr "GSettings schema, naudojama plėtinio" #: subprojects/extensions-tool/src/command-create.c:534 msgid "TEMPLATE" msgstr "ŠABLONAS" #: subprojects/extensions-tool/src/command-create.c:535 msgid "The template to use for the new extension" msgstr "Šablonas naujam plėtiniui" #: subprojects/extensions-tool/src/command-create.c:538 msgid "Include prefs.js template" msgstr "Įtraukti prefs.js šabloną" #: subprojects/extensions-tool/src/command-create.c:544 msgid "Enter extension information interactively" msgstr "Įveskite plėtinio informaciją interaktyviai" #: subprojects/extensions-tool/src/command-create.c:552 msgid "Create a new extension" msgstr "Sukurti naują plėtinį" #: subprojects/extensions-tool/src/command-create.c:570 #: subprojects/extensions-tool/src/command-list.c:190 msgid "Unknown arguments" msgstr "Nežinomi argumentai" #: subprojects/extensions-tool/src/command-create.c:595 msgid "UUID, name and description are required" msgstr "UUID, pavadinimas ir aprašymas yra būtini" #: subprojects/extensions-tool/src/command-disable.c:62 #: subprojects/extensions-tool/src/command-enable.c:62 #, c-format msgid "Extension “%s” does not exist\n" msgstr "Plėtinio „%s“ nėra\n" #: subprojects/extensions-tool/src/command-disable.c:98 msgid "Disable an extension" msgstr "Išjungti plėtinį" #: subprojects/extensions-tool/src/command-disable.c:116 #: subprojects/extensions-tool/src/command-enable.c:116 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "Nenurodytas UUID" #: subprojects/extensions-tool/src/command-disable.c:121 #: subprojects/extensions-tool/src/command-enable.c:121 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "Pateiktas daugiau nei vienas UUID" #: subprojects/extensions-tool/src/command-enable.c:98 msgid "Enable an extension" msgstr "Išjungti plėtinį" #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:66 #: subprojects/extensions-tool/src/main.c:150 msgid "Failed to connect to GNOME Shell\n" msgstr "Nepavyko prisijungti prie GNOME apvalkalo\n" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:159 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "Plėtinio „%s“ nėra\n" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "Rodyti plėtinio informaciją" #: subprojects/extensions-tool/src/command-install.c:190 msgid "Overwrite an existing extension" msgstr "Perrašyti esamą plėtinį" #: subprojects/extensions-tool/src/command-install.c:192 msgid "EXTENSION_BUNDLE" msgstr "PLĖTINIO_RYŠULYS" #: subprojects/extensions-tool/src/command-install.c:201 msgid "Install an extension bundle" msgstr "Įdiegti plėtinio ryšulį" #: subprojects/extensions-tool/src/command-install.c:219 msgid "No extension bundle specified" msgstr "Nenurodytas plėtinio ryšulys" #: subprojects/extensions-tool/src/command-install.c:225 msgid "More than one extension bundle specified" msgstr "Nurodytas daugiau nei vienas plėtinio ryšulys" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show user-installed extensions" msgstr "Rodyti naudotojo įdiegtus plėtinius" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show system-installed extensions" msgstr "Rodyti sistemoje įdiegtus plėtinius" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Show enabled extensions" msgstr "Rodyti įjungtus plėtinius" #: subprojects/extensions-tool/src/command-list.c:149 msgid "Show disabled extensions" msgstr "Rodyti išjungtus plėtinius" #: subprojects/extensions-tool/src/command-list.c:152 msgid "Show extensions in active state" msgstr "Rodyti aktyvius plėtinius" #: subprojects/extensions-tool/src/command-list.c:155 msgid "Show extensions in inactive state" msgstr "Rodyti išjungtus plėtinius" #: subprojects/extensions-tool/src/command-list.c:158 msgid "Show extensions with preferences" msgstr "Rodyti plėtinius su nuostatomis" #: subprojects/extensions-tool/src/command-list.c:161 msgid "Show extensions with updates" msgstr "Rodyti plėtinius su atnaujinimais" #: subprojects/extensions-tool/src/command-list.c:164 msgid "Print extension details" msgstr "Atspausdinti plėtinio informaciją" #: subprojects/extensions-tool/src/command-list.c:172 msgid "List installed extensions" msgstr "Išvardinti įdiegtus plėtinius" #: subprojects/extensions-tool/src/command-pack.c:444 msgid "FILE" msgstr "FAILAS" #: subprojects/extensions-tool/src/command-pack.c:445 msgid "Additional source to include in the bundle" msgstr "Papildomas šaltinis įdėjimui į ryšulį" #: subprojects/extensions-tool/src/command-pack.c:449 msgid "A GSettings schema that should be included" msgstr "GSettings schema, kuri turi būti įtraukta" #: subprojects/extensions-tool/src/command-pack.c:451 #: subprojects/extensions-tool/src/command-pack.c:462 msgid "DIRECTORY" msgstr "KATALOGAS" #: subprojects/extensions-tool/src/command-pack.c:453 msgid "The directory where translations are found" msgstr "Katalogas, kuriame yra vertimai" #: subprojects/extensions-tool/src/command-pack.c:457 msgid "The gettext domain to use for translations" msgstr "Vertimams naudojamas gettext domenas" #: subprojects/extensions-tool/src/command-pack.c:460 msgid "Overwrite an existing pack" msgstr "Perrašyti esamą paketą" #: subprojects/extensions-tool/src/command-pack.c:464 msgid "The directory where the pack should be created" msgstr "Katalogas, kuriame turi būti sukurtas paketas" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "SOURCE_DIRECTORY" msgstr "KODO_KATALOGAS" #: subprojects/extensions-tool/src/command-pack.c:475 msgid "Create an extension bundle" msgstr "Sukurti plėtinio ryšulį" #: subprojects/extensions-tool/src/command-pack.c:495 msgid "More than one source directory specified" msgstr "Nurodytas daugiau nei vienas kodo aplankas" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "Plėtinys „%s“ neturi nustatymų\n" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "Nepavyko atverti nuostatų plėtinio „%s“: %s\n" #: subprojects/extensions-tool/src/command-prefs.c:87 msgid "Opens extension preferences" msgstr "Atveria plėtinio nuostatas" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "Atstatyti plėtinį" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "Negalima pašalinti sisteminių plėtinių\n" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "Nepavyko pašalinti „%s“\n" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "Išdiegti plėtinį" #: subprojects/extensions-tool/src/main.c:76 msgid "Do not print error messages" msgstr "Nespausdinti klaidų pranešimų" #: subprojects/extensions-tool/src/main.c:249 msgid "Path" msgstr "Kelias" #: subprojects/extensions-tool/src/main.c:252 msgid "URL" msgstr "URL" #: subprojects/extensions-tool/src/main.c:255 msgid "Original author" msgstr "Pradinis autorius" #: subprojects/extensions-tool/src/main.c:261 #: subprojects/extensions-tool/src/main.c:263 #: subprojects/extensions-tool/src/main.c:265 msgid "Version" msgstr "Versija" #: subprojects/extensions-tool/src/main.c:268 msgid "Enabled" msgstr "Įjungta" #: subprojects/extensions-tool/src/main.c:268 msgid "Yes" msgstr "Taip" #: subprojects/extensions-tool/src/main.c:268 msgid "No" msgstr "Ne" #: subprojects/extensions-tool/src/main.c:271 msgid "State" msgstr "Būsena" #: subprojects/extensions-tool/src/main.c:309 msgid "“version” takes no arguments" msgstr "„version“ nepriima argumentų" #: subprojects/extensions-tool/src/main.c:311 #: subprojects/extensions-tool/src/main.c:331 msgid "Usage:" msgstr "Naudojimas:" #: subprojects/extensions-tool/src/main.c:314 msgid "Print version information and exit." msgstr "Atspausdinti versijos informaciją ir išeiti." #: subprojects/extensions-tool/src/main.c:329 #: subprojects/extensions-tool/src/main.c:332 msgid "COMMAND" msgstr "KOMANDA" #: subprojects/extensions-tool/src/main.c:332 msgid "[ARGS…]" msgstr "[ARG…]" #: subprojects/extensions-tool/src/main.c:334 msgid "Commands:" msgstr "Komandos:" #: subprojects/extensions-tool/src/main.c:335 msgid "Print help" msgstr "Atspausdinti žinyną" #: subprojects/extensions-tool/src/main.c:337 msgid "Enable extension" msgstr "Įjungti ]plėtinį" #: subprojects/extensions-tool/src/main.c:338 msgid "Disable extension" msgstr "Išjungti plėtinį" #: subprojects/extensions-tool/src/main.c:339 msgid "Reset extension" msgstr "Atstatyti plėtinį" #: subprojects/extensions-tool/src/main.c:340 msgid "Uninstall extension" msgstr "Išdiegti plėtinį" #: subprojects/extensions-tool/src/main.c:341 msgid "List extensions" msgstr "Išvardinti plėtinius" #: subprojects/extensions-tool/src/main.c:342 #: subprojects/extensions-tool/src/main.c:343 msgid "Show extension info" msgstr "Rodyti plėtinio informaciją" #: subprojects/extensions-tool/src/main.c:344 msgid "Open extension preferences" msgstr "Atverti plėtinio nuostatas" #: subprojects/extensions-tool/src/main.c:345 msgid "Create extension" msgstr "Sukurti plėtinį" #: subprojects/extensions-tool/src/main.c:346 msgid "Package extension" msgstr "Supakuoti plėtinį" #: subprojects/extensions-tool/src/main.c:347 msgid "Install extension bundle" msgstr "Įdiegti plėtinio ryšulį" #: subprojects/extensions-tool/src/main.c:349 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "Detalesnį žinyną gausite panaudoję „%s“.\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "Grynasis" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "Tuščias plėtinys" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "Indikatorius" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "Pridėti piktogramą prie viršutinės juostos" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:4 msgid "Quick Settings Item" msgstr "Greitųjų nuostatų elementas" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:5 msgid "Add an item to quick settings" msgstr "Pridėti elementą į greitąsias nuostatas" #. translators: #. * The device has been disabled #: subprojects/gvc/gvc-mixer-control.c:1872 msgid "Disabled" msgstr "Išjungta" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1879 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u išvestis" msgstr[1] "%u išvestys" msgstr[2] "%u išvesčių" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1889 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u įvestis" msgstr[1] "%u įvestys" msgstr[2] "%u įvesčių" #: subprojects/gvc/gvc-mixer-control.c:2872 msgid "System Sounds" msgstr "Sistemos garsai" #~ msgid "Move Titlebar Onscreen" #~ msgstr "Perkelti pavadinimo juostą į ekraną" #~ msgid "Stop conflicting session dialog closed" #~ msgstr "Priverstinio konfliktuojančio seanso dialogas uždarytas" #, javascript-format #~ msgid "Try to login again to start a session for user %s." #~ msgstr "Bandyti dar kartą paleisti seansą naudotojui %s." #, javascript-format #~ msgid "%s is now known as %s" #~ msgstr "%s nuo šiol vadinasi %s" #~ msgid "Network Manager" #~ msgstr "Tinklo tvarkymas" #~ msgid "Disabling" #~ msgstr "Išjungiama" #~ msgid "Enabling" #~ msgstr "Įjungiama" #, javascript-format #~ msgid "%d %%" #~ msgstr "%d %%" #~ msgid "Thunderbolt" #~ msgstr "Thunderbolt" #~ msgid "No Thanks" #~ msgstr "Ne, ačiū" #~ msgid "No Matches" #~ msgstr "Nėra atitikmenų" #~ msgid "The extension had an error" #~ msgstr "Plėtinyje kilo klaida" #~ msgid "The extension can be updated" #~ msgstr "Plėtiniai gali būti atnaujinti" #~ msgid "Help" #~ msgstr "Žinynas" #~ msgid "Manually Installed" #~ msgstr "Įdiegtas rankomis" #~ msgid "Built-In" #~ msgstr "Vidinis" #~ msgid "Extension Updates Ready" #~ msgstr "Plėtinių atnaujinimai paruošti" #~ msgid "Screenshot / Screencast" #~ msgstr "Ekrano nuotrauka / įrašas" #~ msgid "Power Profiles" #~ msgstr "Energijos profiliai" #~ msgid "Attach modal dialog to the parent window" #~ msgstr "Prikabinti modalinį dialogą prie tėvinio lango" #~ msgid "" #~ "This key overrides the key in org.gnome.mutter when running GNOME Shell." #~ msgstr "Šis raktas perrašo org.gnome.mutter raktą, kai vykdoma GNOME Shell." #~ msgid "Enable edge tiling when dropping windows on screen edges" #~ msgstr "Įjungti kraštų išplėtimą, kai langai numetami ekrano kraštuose" #~ msgid "Workspaces are managed dynamically" #~ msgstr "Darbo sritys yra tvarkomos dinamiškai" #~ msgid "Workspaces only on primary monitor" #~ msgstr "Darbo sritys tik pagrindiniame monitoriuje" #~ msgid "Delay focus changes in mouse mode until the pointer stops moving" #~ msgstr "Atidėti fokuso pakeitimus pelei iki žymiklis nustos judėti" #~ msgid "Region & Language Settings" #~ msgstr "Regiono ir kalbos nustatymai" #~ msgid "Applications" #~ msgstr "Programos" #, javascript-format #~ msgid "Unable to start %s" #~ msgstr "Nepavyksta paleisti %s" #, javascript-format #~ msgid "Couldn’t find the %s application" #~ msgstr "Nepavyksta rasti programos %s" #~ msgid "Evolution Calendar" #~ msgstr "Evolution kalendorius" #~ msgid "" #~ "Whether the default Bluetooth adapter had set up devices associated to it" #~ msgstr "" #~ "Ar numatytasis Bluetooth adapteris buvo nusistatęs su juo susietus " #~ "įrenginius" #~ msgid "" #~ "The shell will only show a Bluetooth menu item if a Bluetooth adapter is " #~ "powered, or if there were devices set up associated with the default " #~ "adapter. This will be reset if the default adapter is ever seen not to " #~ "have devices associated to it." #~ msgstr "" #~ "Apvalkalas rodys Bluetooth meniu elementą tik tuo atveju, jei Bluetooth " #~ "adapteris yra pajungtas arba jei buvo nustatyti įrenginiai, susieti su " #~ "numatytuoju adapteriu. Tai bus atstatyta, jeigu kada nors bus pastebėta, " #~ "kad numatytasis adapteris neturi su juo susietų įrenginių." #~ msgid "Bluetooth On" #~ msgstr "Bluetooth įjungtas" #~ msgid "Bluetooth Off" #~ msgstr "Bluetooth išjungtas" #~ msgid "Location In Use" #~ msgstr "Vietos nustatymas naudojamas" #~ msgid "Location Disabled" #~ msgstr "Vietos nustatymas išjungtas" #, javascript-format #~ msgid "%s Off" #~ msgstr "%s išjungtas" #, javascript-format #~ msgid "%s Connected" #~ msgstr "Prisijungta prie %s" #, javascript-format #~ msgid "%s Unmanaged" #~ msgstr "%s netvarkomas" #, javascript-format #~ msgid "%s Connecting" #~ msgstr "Jungiamasi prie %s" #, javascript-format #~ msgid "%s Requires Authentication" #~ msgstr "%s reikalauja patvirtinti tapatybę" #, javascript-format #~ msgid "Firmware Missing For %s" #~ msgstr "%s trūksta integruotos programinės įrangos" #, javascript-format #~ msgid "%s Unavailable" #~ msgstr "%s nepasiekiamas" #, javascript-format #~ msgid "%s Connection Failed" #~ msgstr "Nepavyko prisijungti prie %s" #, javascript-format #~ msgid "%s Hardware Disabled" #~ msgstr "%s aparatinė įranga išjungta" #, javascript-format #~ msgid "%s Disabled" #~ msgstr "%s išjungtas" #~ msgid "Connect to Internet" #~ msgstr "Prisijungti prie interneto" #~ msgid "Airplane Mode is On" #~ msgstr "Skrydžio veiksena įjungta" #~ msgid "Wi-Fi is disabled when airplane mode is on." #~ msgstr "Belaidis ryšys yra išjungta skrydžio veiksenoje." #~ msgid "Turn Off Airplane Mode" #~ msgstr "Išjungti skrydžio veikseną" #~ msgid "Wi-Fi is Off" #~ msgstr "Belaidžio ryšys išjungtas" #~ msgid "Wi-Fi needs to be turned on in order to connect to a network." #~ msgstr "Norint prisijungti prie tinklo reikia įjungti belaidį ryšį." #~ msgid "Turn On Wi-Fi" #~ msgstr "Įjungti belaidį ryšį" #~ msgid "Select a network" #~ msgstr "Pasirinkite tinklą" #~ msgid "Use hardware switch to turn off" #~ msgstr "Išjungimui naudoti aparatinį jungiklį" #~ msgid "Select Network" #~ msgstr "Pasirinkite tinklą" #~ msgid "Wi-Fi Settings" #~ msgstr "Belaidžio ryšio nustatymai" #, javascript-format #~ msgid "%s Not Connected" #~ msgstr "Neprisijungta prie %s" #~| msgid "" #~ msgid "unknown" #~ msgstr "nežinoma" #~ msgid "connecting…" #~ msgstr "jungiamasi…" #~ msgid "authentication required" #~ msgstr "reikia patvirtinti tapatybę" #~ msgid "connection failed" #~ msgstr "nepavyko prisijungti" #~ msgid "VPN Off" #~ msgstr "VPN išjungtas" #, javascript-format #~ msgid "%s Wi-Fi Connection" #~ msgid_plural "%s Wi-Fi Connections" #~ msgstr[0] "%s belaidis ryšys" #~ msgstr[1] "%s belaidžiai ryšiai" #~ msgstr[2] "%s belaidžių ryšių" #~ msgid "Night Light Disabled" #~ msgstr "Naktinis apšvietimas išjungtas" #~ msgid "Resume" #~ msgstr "Tęsti" #~ msgid "Disable Until Tomorrow" #~ msgstr "Išjungti iki rytojaus" #~ msgid "Fully Charged" #~ msgstr "Pilnai įkrauta" #~ msgid "Not Charging" #~ msgstr "Nekraunama" #~ msgid "Estimating…" #~ msgstr "Įvertinama…" #, javascript-format #~ msgid "%d∶%02d Remaining (%d %%)" #~ msgstr "Liko %d∶%02d (%d %%)" #, javascript-format #~ msgid "%d∶%02d Until Full (%d %%)" #~ msgstr "%d∶%02d iki pilno (%d %%)" #~ msgid "Screen is Being Shared" #~ msgstr "Ekranas yra bendrinamas" #~ msgid "Turn off" #~ msgstr "Išjungti" #~ msgid "Airplane Mode On" #~ msgstr "Skrydžio veiksena įjungta" #~ msgid "Lock" #~ msgstr "Užrakinti" #~ msgid "Power Off / Log Out" #~ msgstr "Išjungti / Atsijungti" #~ msgid "Log Out" #~ msgstr "Atsijungti" #~| msgid "Show on-screen help" #~ msgid "Show screenshot UI" #~ msgstr "Rodyti ekrano nuotraukos sąsają" #~ msgid "Remove from Favorites" #~ msgstr "Pašalinti iš mėgstamų" #~ msgid "Add to Favorites" #~ msgstr "Pridėti prie mėgstamų" #~ msgid "Screen Recording in Progress" #~ msgstr "Ekrano vaizdas įrašomas" #~ msgid "Stop" #~ msgstr "Stabdyti" #~ msgid "Author" #~ msgstr "Autorius" #~ msgid "Warning" #~ msgstr "Įspėjimas" #~ msgid "" #~ "Extensions can cause system issues, including performance problems. If " #~ "you encounter problems with your system, it is recommended to disable all " #~ "extensions." #~ msgstr "" #~ "Plėtiniai gali sukelti sistemai problemų, įskaitant našumo problemas. Jei " #~ "su tokiomis susidursite, rekomenduojama išjungti visus plėtinius." #~ msgid "Enable introspection API" #~ msgstr "Įjungti nagrinėjimo sąsają" #~ msgid "" #~ "Enables a D-Bus API that allows to introspect the application state of " #~ "the shell." #~ msgstr "" #~ "Įjungia D-Bus sąsają, kuri leidžia nagrinėti apvalkalo programos būseną." #~ msgid "Failed to connect to GNOME Shell" #~ msgstr "Nepavyko prisijungti prie GNOME apvalkalo" #~ msgid "Minimize" #~ msgstr "Sumažinti" #~ msgid "Unmaximize" #~ msgstr "Grąžinti iš išdidinimo" #~ msgid "App Picker View" #~ msgstr "Programos pasirinkimo vaizdas" #~ msgid "Index of the currently selected view in the application picker." #~ msgstr "Šiuo metu pasirinkto vaizdo programų vaizde indeksas." #~ msgid "Frequently used applications will appear here" #~ msgstr "Čia bus matomos dažnai naudojamos programos" #~ msgid "Frequent" #~ msgstr "Dažnai naudojamos" #~ msgid "All" #~ msgstr "Visos" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d" #~ msgstr "%A, %B %-d." #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d, %Y" #~ msgstr "%A, %Y %B %-d." #~ msgid "On" #~ msgstr "Įjungta" #~ msgid "Copy Error" #~ msgstr "Kopijuoti klaidą" #~ msgid "Next" #~ msgstr "Kitas" #~ msgctxt "button" #~ msgid "Sign In" #~ msgstr "Prisijungti" #~ msgid "Password: " #~ msgstr "Slaptažodis: " #~ msgid "Enter Password…" #~ msgstr "Įveskite slaptažodį…" #~ msgid "%A, %B %d" #~ msgstr "%A, %B %d d." #~ msgid "%d new message" #~ msgid_plural "%d new messages" #~ msgstr[0] "%d naujas pranešimas" #~ msgstr[1] "%d nauji pranešimai" #~ msgstr[2] "%d naujų pranešimų" #~ msgid "Logout…" #~ msgstr "Atsijungti…" #~ msgid "Browse in Software" #~ msgstr "Naršyti Programinėje įrangoje" #~| msgid "Username: " #~ msgid "Rename" #~ msgstr "Pervadinti" #~ msgid "Type again:" #~ msgstr "Įveskite dar kartą:" #~ msgid "Authentication required by wireless network" #~ msgstr "Belaidžiam tinklui reikia patvirtinti tapatybę" #~ msgid "Mobile broadband network password" #~ msgstr "Mobiliojo plačiajuosčio tinklo slaptažodis" #~ msgid "Account Settings" #~ msgstr "Paskyros nustatymai" #~ msgid "Orientation Lock" #~ msgstr "Padėties užrakinimas" #~ msgid "" #~ "Keybinding that pauses and resumes all running tweens, for debugging " #~ "purposes" #~ msgstr "" #~ "Klavišų susiejimas, kuris sustabdo ir pratęsia visus veikiančius " #~ "elementus, derinimui" #~ msgid "Which keyboard to use" #~ msgstr "Kurią klaviatūrą naudoti" #~ msgid "The type of keyboard to use." #~ msgstr "Naudotinas klaviatūros tipas." #~ msgid "network-workgroup" #~ msgstr "network-workgroup" #~ msgid "toggle-switch-us" #~ msgstr "toggle-switch-intl" #~ msgid "%s all day." #~ msgstr "%s visą dieną." #~ msgid "%s, then %s later." #~ msgstr "%s, o vėliau %s." #~ msgid "%s, then %s, followed by %s later." #~ msgstr "%s, tuomet %s, o po to vėliau %s." #~ msgid "Feels like %s." #~ msgstr "Jaučiama kaip %s." #~ msgid "There was an error loading the preferences dialog for %s:" #~ msgstr "Kilo klaida įkeliant %s nuostatų dialogą:" #~| msgid "Log Out" #~ msgctxt "search-result" #~ msgid "Log out" #~ msgstr "Atsijungti" #~| msgid "Switch User" #~ msgctxt "search-result" #~ msgid "Switch user" #~ msgstr "Keisti naudotoją" #~ msgid "Hide tray" #~ msgstr "Slėpti dėklą" #~ msgid "Status Icons" #~ msgstr "Būsenos piktogramos" #~ msgid "Events" #~ msgstr "Įvykiai" #~ msgid "Media" #~ msgstr "Medija" #~ msgid "Web Authentication Redirect" #~ msgstr "Reikia patvirtinti tapatybę internete" #~ msgid "%d x %d" #~ msgstr "%d x %d" #~ msgid "Show the week date in the calendar" #~ msgstr "Rodyti savaitės dienas kalendoriuje" #~ msgid "If true, display the ISO week date in the calendar." #~ msgstr "Jeigu reikšmė teigiama, kalendoriuje rodyti ISO savaičių datą." #~ msgid "Use as Internet connection" #~ msgstr "Naudoti kaip interneto ryšį" #~ msgid "%s is requesting access to your location." #~ msgstr "%s prašo prieigos prie jūsų buvimo vietos." #~ msgid "GNOME Shell (wayland compositor)" #~ msgstr "GNOME Shell (wayland kompozitorius)" #~ msgid "%d Connected Device" #~ msgid_plural "%d Connected Devices" #~ msgstr[0] "%d prijungtas įrenginys" #~ msgstr[1] "%d prijungti įrenginiai" #~ msgstr[2] "%d prijungtų įrenginių" #~ msgid "UPS" #~ msgstr "UPS" #~ msgid "Battery" #~ msgstr "Baterija" #~ msgctxt "event list time" #~ msgid "%H∶%M" #~ msgstr "%H∶%M" #~ msgctxt "event list time" #~ msgid "%l∶%M %p" #~ msgstr "%l:%M" #~ msgid "Invitation" #~ msgstr "Kvietimas" #~ msgid "Call" #~ msgstr "Skambutis" #~ msgid "File Transfer" #~ msgstr "Failo persiuntimas" #~ msgid "Chat" #~ msgstr "Pokalbiai" #~ msgid "Invitation to %s" #~ msgstr "Kvietimas į %s" #~ msgid "%s is inviting you to join %s" #~ msgstr "%s jus kviečia prisijungti prie %s" #~ msgid "Decline" #~ msgstr "Atmesti" #~ msgid "Accept" #~ msgstr "Priimti" #~ msgid "Video call from %s" #~ msgstr "Vaizdo skambutis nuo %s" #~ msgid "Call from %s" #~ msgstr "Skambutis nuo %s" #~ msgid "Answer" #~ msgstr "Atsiliepti" #~ msgid "%s is sending you %s" #~ msgstr "%s jums siunčia %s" #~ msgid "%s would like permission to see when you are online" #~ msgstr "%s pageidauja matyti, kai esate prisijungę prie interneto" #~ msgid "Authentication failed" #~ msgstr "Nepavyko patvirtinti tapatybės" #~ msgid "Encryption error" #~ msgstr "Šifravimo klaida" #~ msgid "Certificate not provided" #~ msgstr "Liudijimas nepateiktas" #~ msgid "Certificate untrusted" #~ msgstr "Liudijimas nepatikimas" #~ msgid "Certificate expired" #~ msgstr "Liudijimo galiojimas pasibaigęs" #~ msgid "Certificate not activated" #~ msgstr "Liudijimas neaktyvuotas" #~ msgid "Certificate hostname mismatch" #~ msgstr "Liudijimo serverio vardo nesutapimas" #~ msgid "Certificate fingerprint mismatch" #~ msgstr "Liudijimo piršto atspaudo nesutapimas" #~ msgid "Certificate self-signed" #~ msgstr "Liudijimas pačių pasirašytas" #~ msgid "Status is set to offline" #~ msgstr "Nustatyta atsijungimo būsena" #~ msgid "Certificate is invalid" #~ msgstr "Liudijimas netinkamas" #~ msgid "Connection has been refused" #~ msgstr "Ryšys atmestas" #~ msgid "Connection can't be established" #~ msgstr "Nepavyko užmegzti ryšio" #~ msgid "Connection has been lost" #~ msgstr "Ryšys nutrūko" #~ msgid "This account is already connected to the server" #~ msgstr "Ši paskyra jau prijungta prie serverio" #~ msgid "" #~ "Connection has been replaced by a new connection using the same resource" #~ msgstr "Ryšys pakeistas nauju ryšiu naudojant tą patį išteklių" #~ msgid "The account already exists on the server" #~ msgstr "Tokia paskyra serveryje jau yra" #~ msgid "Server is currently too busy to handle the connection" #~ msgstr "Šiuo metu serveris per daug užimtas šiai užklausai apdoroti" #~ msgid "Certificate has been revoked" #~ msgstr "Liudijimas atšauktas" #~ msgid "" #~ "Certificate uses an insecure cipher algorithm or is cryptographically weak" #~ msgstr "" #~ "Liudijimui naudojamas nesaugus šifravimo algoritmas arba jis " #~ "kriptografiškai silpnas" #~ msgid "" #~ "The length of the server certificate, or the depth of the server " #~ "certificate chain, exceed the limits imposed by the cryptography library" #~ msgstr "" #~ "Serverio liudijimo ilgis arba liudijimų eilės dydis viršija " #~ "kriptografijos bibliotekos apribojimus" #~ msgid "Internal error" #~ msgstr "Vidinė klaida" #~ msgid "View account" #~ msgstr "Rodyti paskyrą" #~| msgid "Show the message tray" #~ msgid "Show the message list" #~ msgstr "Rodyti pranešimų sąrašą" #~ msgid "Captive Portal" #~ msgstr "Pagavimo portalas" #~ msgctxt "list sunday" #~ msgid "Su" #~ msgstr "Sk" #~ msgctxt "list monday" #~ msgid "M" #~ msgstr "Pr" #~ msgctxt "list tuesday" #~ msgid "T" #~ msgstr "An" #~ msgctxt "list wednesday" #~ msgid "W" #~ msgstr "Tr" #~ msgctxt "list thursday" #~ msgid "Th" #~ msgstr "Kt" #~ msgctxt "list friday" #~ msgid "F" #~ msgstr "Pn" #~ msgctxt "list saturday" #~ msgid "S" #~ msgstr "Št" #~ msgid "Nothing Scheduled" #~ msgstr "Nieko nesuplanuota" #~ msgid "This week" #~ msgstr "Šią savaitę" #~ msgid "Next week" #~ msgstr "Kitą savaitę" #~ msgid "Removable Devices" #~ msgstr "Išimami įrenginiai" #~ msgid "Eject" #~ msgstr "Išimti" #~ msgid "Open" #~ msgstr "Atverti" #~ msgid "Clear Messages" #~ msgstr "Išvalyti pranešimus" #~ msgid "Notification Settings" #~ msgstr "Pranešimų nustatymai" #~ msgid "Message Tray" #~ msgstr "Pranešimų juosta" 0707010000024A000081A40000000000000000000000016712993F0001C1B4000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/lv.po# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # SPDX-FileCopyrightText: 2011, 2024 Rudolfs # Rūdofls Mazurs , 2011, 2012, 2013, 2014. # Pēteris Krišjānis , 2011. # Rūdolfs Mazurs , 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023. # Vika Leimane , 2020. msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues/\n" "POT-Creation-Date: 2024-08-06 15:18+0000\n" "PO-Revision-Date: 2024-09-10 22:30+0300\n" "Last-Translator: Rūdolfs Mazurs \n" "Language-Team: Latvian \n" "Language: lv\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 != 0 ? 1 :" " 2);\n" "X-Generator: Lokalize 23.08.5\n" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "Palaidēji" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate pinned app 1" msgstr "Aktivizēt piesprausto lietotni 1" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate pinned app 2" msgstr "Aktivizēt piesprausto lietotni 2" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate pinned app 3" msgstr "Aktivizēt piesprausto lietotni 3" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate pinned app 4" msgstr "Aktivizēt piesprausto lietotni 4" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate pinned app 5" msgstr "Aktivizēt piesprausto lietotni 5" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate pinned app 6" msgstr "Aktivizēt piesprausto lietotni 6" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate pinned app 7" msgstr "Aktivizēt piesprausto lietotni 7" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate pinned app 8" msgstr "Aktivizēt piesprausto lietotni 8" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate pinned app 9" msgstr "Aktivizēt piesprausto lietotni 9" #: data/50-gnome-shell-launchers.xml:46 msgid "Open new window of pinned app 1" msgstr "Atvērt jaunu logu piespraustajai lietotnei 1" #: data/50-gnome-shell-launchers.xml:50 msgid "Open new window of pinned app 2" msgstr "Atvērt jaunu logu piespraustajai lietotnei 2" #: data/50-gnome-shell-launchers.xml:54 msgid "Open new window of pinned app 3" msgstr "Atvērt jaunu logu piespraustajai lietotnei 3" #: data/50-gnome-shell-launchers.xml:58 msgid "Open new window of pinned app 4" msgstr "Atvērt jaunu logu piespraustajai lietotnei 4" #: data/50-gnome-shell-launchers.xml:62 msgid "Open new window of pinned app 5" msgstr "Atvērt jaunu logu piespraustajai lietotnei 5" #: data/50-gnome-shell-launchers.xml:66 msgid "Open new window of pinned app 6" msgstr "Atvērt jaunu logu piespraustajai lietotnei 6" #: data/50-gnome-shell-launchers.xml:70 msgid "Open new window of pinned app 7" msgstr "Atvērt jaunu logu piespraustajai lietotnei 7" #: data/50-gnome-shell-launchers.xml:74 msgid "Open new window of pinned app 8" msgstr "Atvērt jaunu logu piespraustajai lietotnei 8" #: data/50-gnome-shell-launchers.xml:78 msgid "Open new window of pinned app 9" msgstr "Atvērt jaunu logu piespraustajai lietotnei 9" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2274 msgid "Screenshots" msgstr "Ekrānattēli" #: data/50-gnome-shell-screenshots.xml:9 #: data/org.gnome.shell.gschema.xml.in:287 msgid "Take a screenshot interactively" msgstr "Interaktīvi uzņemt ekrānattēlu" #: data/50-gnome-shell-screenshots.xml:12 #: data/org.gnome.shell.gschema.xml.in:299 msgid "Take a screenshot" msgstr "Uzņemt ekrānattēlu" #: data/50-gnome-shell-screenshots.xml:15 #: data/org.gnome.shell.gschema.xml.in:295 msgid "Take a screenshot of a window" msgstr "Uzņemt loga ekrānattēlu" #: data/50-gnome-shell-screenshots.xml:18 #: data/org.gnome.shell.gschema.xml.in:291 msgid "Record a screencast interactively" msgstr "Interaktīvi ierakstīt ekrānierakstu" #: data/50-gnome-shell-system.xml:6 js/ui/messageTray.js:1298 msgid "System" msgstr "Sistēma" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "Rādīt paziņojumu sarakstu" #: data/50-gnome-shell-system.xml:12 msgid "Open the quick settings menu" msgstr "Atvērt ātro iestatījumu izvēlni" #: data/50-gnome-shell-system.xml:15 msgid "Focus the active notification" msgstr "Fokusēt aktīvo paziņojumu" #: data/50-gnome-shell-system.xml:18 msgid "Show the overview" msgstr "Rādīt pārskatu" #: data/50-gnome-shell-system.xml:21 msgid "Show all apps" msgstr "Rādīt visas lietotnes" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "GNOME čaula" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "Logu pārvaldība un lietotņu palaišana" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" "Aktivēt iekšējos rīkus, kas pieejami no Alt-F2; noder izstrādātājiem un " "testētājiem" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Ļauj piekļūt iekšējiem atkļūdošanas un pārraudzības rīkiem, izmantojot Alt-" "F2 dialoglodziņu." #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "UUID paplašinājumiem, kurus aktivēt" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "GNOME Shell paplašinājumiem ir UUID īpašība; šī atslēga uzskaita " "paplašinājumus, kurus vajadzētu ielādēt. Katram paplašinājumam, kas grib " "tikt ielādēts, jābūt šajā sarakstā. Šo sarakstu var mainīt arī ar " "EnableExtension un DisableExtension D-Bus metodēm uz org.gnome.Shell." #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "UUID paplašinājumiem, kurus forsēti izslēgt" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" "GNOME Shell paplašinājumiem ir UUID īpašība; šī atslēga uzskaita " "paplašinājumus, kurus vajadzētu izslēgt, pat ja ielādēti. Šo sarakstu var " "mainīt arī ar EnableExtension un DisableExtension D-Bus metodēm uz org.gnome." "Shell. Šai atslēga ņem virsroku pār “enabled-extensions” iestatījumu." #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "Izslēgt lietotāju paplašinājumus" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" "Izslēgt visus paplašinājumus, ko ir ieslēdzis lietotājs, neietekmējot " "iestatījumu “enabled-extension”." #: data/org.gnome.shell.gschema.xml.in:45 msgid "Allow extension installation" msgstr "Atļaut paplašinājumu instalēšanu" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "Allow users to install extensions in their home folder. If disabled, the " "InstallRemoteExtension D-Bus method will fail, and extensions are only " "loaded from system directories on startup. It does not affect extensions " "that are already loaded, so a change only takes full effect on the next " "login." msgstr "" "Ļaut lietotājiem instalēt paplašinājumus savā mājas mapē. Ja izslēgts, " "InstallRemoteExtension D-Bus metode nestrādās un, palaižot sistēmu, " "paplašinājumi tiks ielādēti tikai no sistēmas direktorijiem." #: data/org.gnome.shell.gschema.xml.in:56 msgid "Disables the validation of extension version compatibility" msgstr "Deaktivē paplašinājumu versijas savietojamības pārbaudīšanu" #: data/org.gnome.shell.gschema.xml.in:57 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "GNOME čaula ielādēs tikai tos paplašinājumus, kuri apgalvos, ka atbalsta " "pašlaik palaisto versiju. Šīs opcijas aktivēšana deaktivēs šo pārbaudi un " "mēģinās ielādēt visus paplašinājumus, neatkarīgi no tā, kādu čaulas versiju " "tie atbalsta." #: data/org.gnome.shell.gschema.xml.in:65 msgid "List of desktop file IDs for favorite applications" msgstr "Uzskaitīt iecienīto lietotņu darbvirsmas datņu ID" #: data/org.gnome.shell.gschema.xml.in:66 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" "Lietotnes, kas atbilst šiem identifikatoriem, tiks rādītas izlases laukā." #: data/org.gnome.shell.gschema.xml.in:73 msgid "History for command (Alt-F2) dialog" msgstr "Komandu (Alt-F2) dialoglodziņa vēsture" #. Translators: looking glass is a debugger and inspector tool, see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/docs/looking-glass.md #: data/org.gnome.shell.gschema.xml.in:78 msgid "History for the looking glass dialog" msgstr "Looking glass dialoglodziņa vēsture" #: data/org.gnome.shell.gschema.xml.in:82 msgid "Always show the “Log Out” action in the system menu" msgstr "Sistēmas izvēlnē vienmēr rādīt izvēlnes darbību “Izrakstīties”." #: data/org.gnome.shell.gschema.xml.in:83 msgid "" "This key overrides the automatic hiding of the “Log out” action in the " "system menu for logged-in situations where there is a single, local, non-" "system user and only a single available session type (e.g. GNOME on Wayland)." msgstr "" "Šī atslēga pārraksta automātisko “Izrakstīties” darbības slēpšanu sistēmas " "izvēlnē, ja ir tikai viens lietotājs, kurš ir ierakstījies, tas nav sistēmas " "lietotājs un ir pieejams tikai viens sesijas veids (piemēram, GNOME ar " "Wayland)." #: data/org.gnome.shell.gschema.xml.in:92 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "Vai atcerēties paroli šifrētu attālu datņu sistēmu montēšanai" #: data/org.gnome.shell.gschema.xml.in:93 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "Čaula prasīs paroli, kad tiks montēta šifrēta ierīce vai attāla datņu " "sistēma. Ja paroli var saglabāt turpmākai lietošanai, būs redzama izvēles " "rūtiņa “Atcerēties paroli”. Šī atslēga iestata šīs izvēles rūtiņas " "noklusējuma stāvokli." #: data/org.gnome.shell.gschema.xml.in:102 msgid "The last selected non-default power profile" msgstr "Pēdējais izvēlētais ne-noklusējuma jaudas profils" #: data/org.gnome.shell.gschema.xml.in:103 msgid "" "Some systems support more than two power profiles. In order to still support " "toggling between two profiles, this key records the last selected non-" "default profile." msgstr "" "Dažas sistēmas atbalsta vairāk kā divus jaudas profilus. Lai atbalstītu " "pārslēgšanos starp diviem profiliem, šī atslēga ieraksta pēdējo izvēlēto ne-" "noklusējuma profilu." #: data/org.gnome.shell.gschema.xml.in:111 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "" "Pēdējā versija dialoglodziņam “Laipni lūgti GNOME” tika rādīts versijai" #: data/org.gnome.shell.gschema.xml.in:112 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can " "be used to effectively disable the dialog." msgstr "" "Šī atslēga nosaka, kura versija tika parādīta dialoglodziņam “Laipni lūgti " "GNOME”. Tukša virkne apzīmē vecāko iespējamo versiju un milzīgs skaitlis " "apzīmē versiju, kas vēl neeksistē. Milzīgo skaitli var izmantot, lai " "praktiski izslēgtu šo dialoglodziņu." #: data/org.gnome.shell.gschema.xml.in:145 msgid "Layout of the app picker" msgstr "Lietotņu izvēlētāja izkārtojums" #: data/org.gnome.shell.gschema.xml.in:146 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" msgstr "" "Lietotņu izvēlētāja izkārtojums. Katrs ieraksts masīvā ir lapa. Lapas tiek " "glabātas tādā secībā, kā tās parādās GNOME čaulā. Katra lapa satur " "“lietotnes id” → “dati” pāri. Šobrīd lietotņu ikonu vieta lapā tiek " "saglabāta kā “dati”: • “pozīcija”" #: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:172 msgid "Keybinding to shift between overview states" msgstr "Taustiņu sasaiste, lai pārslēgtos starp pārskata stāvokļiem" #: data/org.gnome.shell.gschema.xml.in:166 msgid "Keybinding to shift between session, window picker and app grid" msgstr "" "Taustiņu sasaiste, lai pārslēgtos starp sesiju, logu izvēlētāju un lietotņu " "režģi" #: data/org.gnome.shell.gschema.xml.in:173 msgid "Keybinding to shift between app grid, window picker and session" msgstr "" "Taustiņu sasaiste, lai pārslēgtos starp lietotņu režģi, logu izvēlētāju un " "sesiju" #: data/org.gnome.shell.gschema.xml.in:179 msgid "Keybinding to open the “Show Applications” view" msgstr "Taustiņu sasaiste, kas atver “Rādīt lietotnes” skatu" #: data/org.gnome.shell.gschema.xml.in:180 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "" "Taustiņu sasaiste, kas atver “Rādīt lietotnes” aktivitāšu pārskata skatu." #: data/org.gnome.shell.gschema.xml.in:187 msgid "Keybinding to open the overview" msgstr "Taustiņu sasaiste, kas atver pārskatu" #: data/org.gnome.shell.gschema.xml.in:188 msgid "Keybinding to open the Activities Overview." msgstr "Taustiņu sasaiste, kas atver aktivitāšu pārskatu." #: data/org.gnome.shell.gschema.xml.in:194 msgid "Keybinding to toggle the visibility of the notification list" msgstr "Taustiņu sasaiste, kas pārslēdz paziņojumu saraksta redzamību" #: data/org.gnome.shell.gschema.xml.in:195 msgid "Keybinding to toggle the visibility of the notification list." msgstr "Taustiņu sasaiste, kas pārslēdz paziņojumu saraksta redzamību." #: data/org.gnome.shell.gschema.xml.in:201 msgid "Keybinding to toggle the quick settings menu" msgstr "Taustiņu sasaiste, kas pārslēdz ātro iestatījumu izvēlni" #: data/org.gnome.shell.gschema.xml.in:202 msgid "Keybinding to toggle the quick settings menu." msgstr "Taustiņu sasaiste, kas pārslēdz ātro iestatījumu izvēlni." #: data/org.gnome.shell.gschema.xml.in:208 msgid "Keybinding to focus the active notification" msgstr "Taustiņu sasaiste, kas fokusē aktīvo paziņojumu" #: data/org.gnome.shell.gschema.xml.in:209 msgid "Keybinding to focus the active notification." msgstr "Taustiņu sasaiste, kas fokusē aktīvo paziņojumu." #: data/org.gnome.shell.gschema.xml.in:215 msgid "Switch to application 1" msgstr "Pārslēgties uz lietotni 1" #: data/org.gnome.shell.gschema.xml.in:219 msgid "Switch to application 2" msgstr "Pārslēgties uz lietotni 2" #: data/org.gnome.shell.gschema.xml.in:223 msgid "Switch to application 3" msgstr "Pārslēgties uz lietotni 3" #: data/org.gnome.shell.gschema.xml.in:227 msgid "Switch to application 4" msgstr "Pārslēgties uz lietotni 4" #: data/org.gnome.shell.gschema.xml.in:231 msgid "Switch to application 5" msgstr "Pārslēgties uz lietotni 5" #: data/org.gnome.shell.gschema.xml.in:235 msgid "Switch to application 6" msgstr "Pārslēgties uz lietotni 6" #: data/org.gnome.shell.gschema.xml.in:239 msgid "Switch to application 7" msgstr "Pārslēgties uz lietotni 7" #: data/org.gnome.shell.gschema.xml.in:243 msgid "Switch to application 8" msgstr "Pārslēgties uz lietotni 8" #: data/org.gnome.shell.gschema.xml.in:247 msgid "Switch to application 9" msgstr "Pārslēgties uz lietotni 9" #: data/org.gnome.shell.gschema.xml.in:251 msgid "Open a new instance of application 1" msgstr "Atvērt jaunu instanci lietotnei 1" #: data/org.gnome.shell.gschema.xml.in:255 msgid "Open a new instance of application 2" msgstr "Atvērt jaunu instanci lietotnei 2" #: data/org.gnome.shell.gschema.xml.in:259 msgid "Open a new instance of application 3" msgstr "Atvērt jaunu instanci lietotnei 3" #: data/org.gnome.shell.gschema.xml.in:263 msgid "Open a new instance of application 4" msgstr "Atvērt jaunu instanci lietotnei 4" #: data/org.gnome.shell.gschema.xml.in:267 msgid "Open a new instance of application 5" msgstr "Atvērt jaunu instanci lietotnei 5" #: data/org.gnome.shell.gschema.xml.in:271 msgid "Open a new instance of application 6" msgstr "Atvērt jaunu instanci lietotnei 6" #: data/org.gnome.shell.gschema.xml.in:275 msgid "Open a new instance of application 7" msgstr "Atvērt jaunu instanci lietotnei 7" #: data/org.gnome.shell.gschema.xml.in:279 msgid "Open a new instance of application 8" msgstr "Atvērt jaunu instanci lietotnei 8" #: data/org.gnome.shell.gschema.xml.in:283 msgid "Open a new instance of application 9" msgstr "Atvērt jaunu instanci lietotnei 9" #: data/org.gnome.shell.gschema.xml.in:308 #: data/org.gnome.shell.gschema.xml.in:335 msgid "Limit switcher to current workspace." msgstr "Ierobežot pārslēdzēju uz pašreizējo darbvietu." #: data/org.gnome.shell.gschema.xml.in:309 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "Ja patiess, pārslēdzējā tiek rādītas tikai lietotnes, kas ir pašreizējā " "darbvietā. Citādi tiek iekļautas visas lietotnes." #: data/org.gnome.shell.gschema.xml.in:326 msgid "The application icon mode." msgstr "Lietotnes ikonas režīms." #: data/org.gnome.shell.gschema.xml.in:327 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-only” " "(shows only the application icon) or “both”." msgstr "" "Konfigurē, kā pārslēdzējā tiek parādīts logs. Derīgās iespējas ir “thumbnail-" "only” (rāda loga sīktēlu), “app-icon-only” (rāda tikai lietotnes ikonu) vai " "“both” (abi)." #: data/org.gnome.shell.gschema.xml.in:336 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "Ja patiess, pārslēdzējā tiek rādītas tikai lietotnes no pašreizējās " "darbvietas. Citādi tiek iekļautas visas lietotnes." #: data/org.gnome.shell.gschema.xml.in:346 msgid "Locations" msgstr "Vietas" #: data/org.gnome.shell.gschema.xml.in:347 msgid "The locations to show in world clocks" msgstr "Vietas, kuras rādīt pasaules pulksteņos" #: data/org.gnome.shell.gschema.xml.in:357 msgid "Automatic location" msgstr "Automātiska atrašanās vieta" #: data/org.gnome.shell.gschema.xml.in:358 msgid "Whether to fetch the current location or not" msgstr "Vai noteikt pašreizējo atrašanās vietu" #: data/org.gnome.shell.gschema.xml.in:365 msgid "Location" msgstr "Vieta" #: data/org.gnome.shell.gschema.xml.in:366 msgid "The location for which to show a forecast" msgstr "Vieta, kurai rādīt laika prognozi" #. Keep in sync with subprojects/extensions-app #: data/org.gnome.Shell.Extensions.desktop.in.in:5 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/data/ui/extensions-window.ui:57 msgid "Extensions" msgstr "Paplašinājumi" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "Tīkla ierakstīšanās" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:275 msgid "Something’s gone wrong" msgstr "Kaut kas nogāja greizi" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" "Mums ir ļoti žēl, bet gadījās problēma: nevar parādīt šī paplašinājuma " "iestatījumus. Mēs iesakām jums ziņot par šo problēmu paplašinājuma autoriem." #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "Tehniskā informācija" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "Mājaslapa" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 msgid "Visit extension homepage" msgstr "Apmeklēt paplašinājum mājaslapu" #: js/gdm/authPrompt.js:151 js/gdm/loginDialog.js:465 #: js/ui/audioDeviceSelection.js:66 js/ui/components/networkAgent.js:113 #: js/ui/components/polkitAgent.js:144 js/ui/endSessionDialog.js:437 #: js/ui/extensionDownloader.js:276 js/ui/shellMountOperation.js:382 #: js/ui/shellMountOperation.js:392 msgid "Cancel" msgstr "Atcelt" #: js/gdm/authPrompt.js:317 js/ui/components/networkAgent.js:213 #: js/ui/components/networkAgent.js:233 js/ui/components/networkAgent.js:265 #: js/ui/components/networkAgent.js:298 js/ui/components/networkAgent.js:337 #: js/ui/components/networkAgent.js:350 js/ui/components/polkitAgent.js:286 #: js/ui/shellMountOperation.js:332 msgid "Password" msgstr "Parole" #: js/gdm/loginDialog.js:326 msgid "Choose Session" msgstr "Izvēlieties sesiju" #. Translators: is running for #: js/gdm/loginDialog.js:423 #, javascript-format msgid "" "Remote login is not possible because a remote session is already running for " "%s. To login remotely, you must log out from the remote session or force " "stop it." msgstr "" "Attālā ierakstīšanās nav iespējama, jo %s attālā sesija jau darbojas. Lai " "ierakstītos attāli, ir jāizrakstās no attālās sesijas vai to pārtraukt " "piespiedu kārtā." #. Translators: is running for #: js/gdm/loginDialog.js:426 #, javascript-format msgid "" "Login is not possible because a remote session is already running for %s. To " "login, you must log out from the remote session or force stop it." msgstr "" "Ierakstīšanās nav iespējama, jo %s sesija jau darbojas. Lai ierakstītos " "attāli, ir jāizrakstās no attālās sesijas vai to pārtraukt piespiedu kārtā." #. Translators: is running for #: js/gdm/loginDialog.js:429 #, javascript-format msgid "" "Remote login is not possible because a local session is already running for " "%s. To login remotely, you must log out from the local session or force stop " "it." msgstr "" "Attālā ierakstīšanās nav iespējama, jo %s lokālā sesija jau darbojas. Lai " "ierakstītos attāli, ir jāizrakstās no lokālās sesijas vai to pārtraukt " "piespiedu kārtā." #. Translators: is running for #: js/gdm/loginDialog.js:432 #, javascript-format msgid "" "Login is not possible because a session is already running for %s. To login, " "you must log out from the session or force stop it." msgstr "" "Ierakstīšanās nav iespējama, jo %s sesija jau darbojas. Lai ierakstītos, ir " "jāizrakstās no sesijas vai to pārtraukt piespiedu kārtā." #: js/gdm/loginDialog.js:441 msgid "Session Already Running" msgstr "Sesija jau darbojas" #: js/gdm/loginDialog.js:453 #| msgid "" #| "Force stopping will quit any running apps and processes, and could result " #| "in data loss." msgid "" "Force stopping will quit any running apps and processes, and could result in " "data loss" msgstr "" "Piespiedu apturēšana aizvērs visas palaistās programmas un procesus un var " "izraisīt datu zudumu" #: js/gdm/loginDialog.js:473 msgid "Force Stop" msgstr "Piespiedu apturēšana" #: js/gdm/loginDialog.js:541 msgid "Not listed?" msgstr "Nav sarakstā?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:1009 #, javascript-format msgid "(e.g., user or %s)" msgstr "(piemēram, lietotājs vai %s)" #: js/gdm/loginDialog.js:1014 js/ui/components/networkAgent.js:257 #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:326 msgid "Username" msgstr "Lietotājvārds" #: js/gdm/loginDialog.js:1080 msgid "Login Attempt Timed Out" msgstr "Ierakstīšanās mēģinājumam iestājās noildze" #: js/gdm/loginDialog.js:1081 msgid "Login took too long, please try again" msgstr "Ierakstīšanās aizņēma pārāk daudz laika, mēģiniet vēlreiz" #: js/gdm/loginDialog.js:1426 msgid "Login Window" msgstr "Ierakstīšanās logs" #: js/gdm/util.js:496 msgid "Authentication error" msgstr "Autentifikācijas kļūda" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:727 msgid "(or swipe finger across reader)" msgstr "(vai velciet pirkstu pāri lasītājam)" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:732 msgid "(or place finger on reader)" msgstr "(vai novietojiet pirkstu uz lasītāja)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:91 msgctxt "search-result" msgid "Power Off" msgstr "Izslēgt" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:94 msgid "power off;poweroff;shutdown;halt;stop" msgstr "izslēgt;beidzēt;apturēt" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:99 msgctxt "search-result" msgid "Restart" msgstr "Pārstartēt" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:102 msgid "reboot;restart;" msgstr "pārstartēt;restartēt;" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:107 msgctxt "search-result" msgid "Lock Screen" msgstr "Bloķēt ekrānu" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:110 msgid "lock screen" msgstr "bloķēt ekrānu" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:115 msgctxt "search-result" msgid "Log Out" msgstr "Izrakstīties" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:118 msgid "logout;log out;sign off" msgstr "izrakstīties;atteikties;izsaiņoties;logautoties" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:123 msgctxt "search-result" msgid "Suspend" msgstr "Iesnaudināt" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:126 msgid "suspend;sleep" msgstr "iesnaudināt;suspendot;" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:131 msgctxt "search-result" msgid "Switch User" msgstr "Mainīt lietotāju" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:134 msgid "switch user" msgstr "mainīt lietotāju" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:141 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "noslēgt orientāciju;atslēgt orientāciju;ekrāns;rotācija;pagriešana" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:146 msgctxt "search-result" msgid "Take a Screenshot" msgstr "Uzņemt ekrānattēlu" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:149 msgid "screenshot;screencast;snip;capture;record" msgstr "ekrānattēls;ekrānieraksts;izgriezums;uzņēmums;ieraksts" #: js/misc/systemActions.js:249 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "Atslēgt ekrāna orientāciju" #: js/misc/systemActions.js:250 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "Noslēgt ekrāna orientāciju" #: js/misc/util.js:130 msgid "Command not found" msgstr "Komanda nav atrasta" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:170 msgid "Could not parse command:" msgstr "Neizdevās apstrādāt komandu:" #: js/misc/util.js:178 #, javascript-format msgid "Execution of “%s” failed:" msgstr "“%s” izpilde neizdevās:" #: js/misc/dateUtils.js:69 msgid "Just now" msgstr "Tikko" #: js/misc/dateUtils.js:72 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "Pirms %d minūtes" msgstr[1] "Pirms %d minūtēm" msgstr[2] "Pirms %d minūtēm" #: js/misc/dateUtils.js:79 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "Pirms %d stundas" msgstr[1] "Pirms %d stundām" msgstr[2] "Pirms %d stundām" #: js/misc/dateUtils.js:85 js/ui/dateMenu.js:183 msgid "Yesterday" msgstr "Vakar" #: js/misc/dateUtils.js:88 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "Pirms %d dienas" msgstr[1] "Pirms %d dienām" msgstr[2] "Pirms %d dienām" #: js/misc/dateUtils.js:95 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "Pirms %d nedēļas" msgstr[1] "Pirms %d nedēļām" msgstr[2] "Pirms %d nedēļām" #: js/misc/dateUtils.js:102 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "Pirms %d mēneša" msgstr[1] "Pirms %d mēnešiem" msgstr[2] "Pirms %d mēnešiem" #: js/misc/dateUtils.js:108 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "Pirms %d gada" msgstr[1] "Pirms %d gadiem" msgstr[2] "Pirms %d gadiem" #. Translators: Time in 24h format #: js/misc/dateUtils.js:155 msgid "%H∶%M" msgstr "%H.%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/dateUtils.js:161 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "Vakar, %H.%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/dateUtils.js:167 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, %H.%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/dateUtils.js:173 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%-d. %B, %H.%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/dateUtils.js:179 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%-d. %B, %Y., %H.%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/dateUtils.js:184 msgid "%l∶%M %p" msgstr "%l.%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/dateUtils.js:190 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "Vakar, %l:%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/dateUtils.js:196 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %l.%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/dateUtils.js:202 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%-d. %B, %l.%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/dateUtils.js:208 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%-d. %B, %Y., %l.%M %p" #: js/portalHelper/main.js:98 msgid "Your connection seems to be secure" msgstr "Jūsu savienojums šķiet drošs" #: js/portalHelper/main.js:104 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "Jūsu savienojums ar šo tīklāju nav drošs. Paroles un cita informācija, ko " "jūs ievadāt šajā lapā var būt redzama tuvumā esošiem cilvēkiem." #: js/portalHelper/main.js:115 msgid "Hotspot Login" msgstr "Tīklāja ierakstīšanās" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:51 js/ui/inhibitShortcutsDialog.js:92 msgid "Deny" msgstr "Liegt" #: js/ui/accessDialog.js:52 js/ui/inhibitShortcutsDialog.js:101 msgid "Allow" msgstr "Atļaut" #: js/ui/appDisplay.js:1769 msgid "Unnamed Folder" msgstr "Nenosaukta mape" #: js/ui/appFavorites.js:163 #, javascript-format msgid "%s has been pinned to the dash." msgstr "%s ir piesprausts panelim." #: js/ui/appFavorites.js:194 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "%s ir atsprausts no paneļa." #: js/ui/appFavorites.js:208 js/ui/main.js:281 msgid "Undo" msgstr "Atsaukt" #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:49 msgid "Open Windows" msgstr "Atvērt logus" #: js/ui/appMenu.js:57 msgid "New Window" msgstr "Jauns logs" #: js/ui/appMenu.js:84 msgid "App Details" msgstr "Informācija par lietotni" #: js/ui/appMenu.js:100 msgid "Quit" msgstr "Iziet" #: js/ui/appMenu.js:160 js/ui/dash.js:248 msgid "Unpin" msgstr "Atspraust" #: js/ui/appMenu.js:161 msgid "Pin to Dash" msgstr "Piespraust pie paneļa" #: js/ui/appMenu.js:178 msgid "Launch using Integrated Graphics Card" msgstr "Palaist, izmantojot integrēto grafikas karti" #: js/ui/appMenu.js:179 msgid "Launch using Discrete Graphics Card" msgstr "Palaist, izmantojot diskrēto grafikas karti" #: js/ui/audioDeviceSelection.js:46 msgid "Select Audio Device" msgstr "Izvēlieties audio ierīci" #: js/ui/audioDeviceSelection.js:61 js/ui/status/volume.js:81 msgid "Sound Settings" msgstr "Skaņas Iestatījumi" #: js/ui/audioDeviceSelection.js:74 msgid "Headphones" msgstr "Austiņas" #: js/ui/audioDeviceSelection.js:76 msgid "Headset" msgstr "Austiņas ar mikrofonu" #: js/ui/audioDeviceSelection.js:78 js/ui/status/volume.js:356 msgid "Microphone" msgstr "Mikrofons" #: js/ui/backgroundMenu.js:13 msgid "Change Background…" msgstr "Mainīt fonu…" #: js/ui/backgroundMenu.js:15 msgid "Display Settings" msgstr "Displeja iestatījumi" #: js/ui/backgroundMenu.js:16 msgid "Settings" msgstr "Iestatījumi" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:37 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:63 msgctxt "grid sunday" msgid "S" msgstr "Sv" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:65 msgctxt "grid monday" msgid "M" msgstr "Pr" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:67 msgctxt "grid tuesday" msgid "T" msgstr "Ot" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:69 msgctxt "grid wednesday" msgid "W" msgstr "Tr" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:71 msgctxt "grid thursday" msgid "T" msgstr "Ce" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:73 msgctxt "grid friday" msgid "F" msgstr "Pk" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:75 msgctxt "grid saturday" msgid "S" msgstr "Se" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:426 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:436 msgid "%OB %Y" msgstr "%OB %Y." #: js/ui/calendar.js:498 msgid "Previous month" msgstr "Iepriekšējais mēnesis" #: js/ui/calendar.js:516 msgid "Next month" msgstr "Nākamais mēnesis" #: js/ui/calendar.js:667 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:726 msgid "Week %V" msgstr "Nedēļa %V" #: js/ui/calendar.js:918 msgid "No Notifications" msgstr "Nav paziņojumu" #: js/ui/calendar.js:974 msgid "Do Not Disturb" msgstr "Netraucēt" #: js/ui/calendar.js:995 msgid "Clear" msgstr "Attīrīt" #: js/ui/calendar.js:999 msgctxt "action" msgid "Clear all notifications" msgstr "Attīrīt visus paziņojums" #. Translators: %s is an application name #: js/ui/closeDialog.js:42 #, javascript-format #| msgid "“%s” is not responding." msgid "“%s” Is Not Responding" msgstr "“%s” nereaģē" #: js/ui/closeDialog.js:43 #| msgid "" #| "You may choose to wait a short while for it to continue or force the app " #| "to quit entirely." msgid "" "You may choose to wait a short while for it to continue or force the app to " "quit entirely" msgstr "" "Var uzgaidīt neilgu brīdi, līdz lietotne atgūstas, vai arī aizvērt to " "piespiedu kārtā" #: js/ui/closeDialog.js:71 msgid "Force Quit" msgstr "Piespiedu apturēšana" #: js/ui/closeDialog.js:76 msgid "Wait" msgstr "Gaidīt" #: js/ui/components/automountManager.js:82 msgid "External drive connected" msgstr "Pievienots ārējs dzinis" #: js/ui/components/automountManager.js:94 msgid "External drive disconnected" msgstr "Atvienots ārējs dzinis" #: js/ui/components/automountManager.js:208 msgid "Unable to unlock volume" msgstr "Nevar atbloķēt sējumu" #: js/ui/components/automountManager.js:209 msgid "The installed udisks version does not support the PIM setting" msgstr "Instalētā udisks versija neatbalsta PIM iestatījumu" #. Translators: %s is the name of a partition on a external drive #: js/ui/components/autorunManager.js:189 #, javascript-format #| msgid "%d connected" #| msgid_plural "%d connected" msgid "“%s” connected" msgstr "“%s” savienots" #: js/ui/components/autorunManager.js:190 msgid "Disk can now be used" msgstr "Disku tagad var izmantot" #: js/ui/components/autorunManager.js:202 #, javascript-format msgid "Open with %s" msgstr "Atvērt ar %s" #: js/ui/components/networkAgent.js:95 #| msgid "" #| "Alternatively you can connect by pushing the “WPS” button on your router." msgid "" "Alternatively you can connect by pushing the “WPS” button on your router" msgstr "Varat arī savienoties, uz sava maršrutētāja spiežot pogu “WPS”" #: js/ui/components/networkAgent.js:107 js/ui/status/bluetooth.js:245 #: js/ui/status/network.js:360 js/ui/status/network.js:444 msgid "Connect" msgstr "Savienot" #: js/ui/components/networkAgent.js:222 msgid "Key" msgstr "Atslēga" #: js/ui/components/networkAgent.js:273 js/ui/components/networkAgent.js:312 msgid "Private key password" msgstr "Privātās atslēgas parole" #: js/ui/components/networkAgent.js:306 msgid "Identity" msgstr "Identitāte" #: js/ui/components/networkAgent.js:332 msgid "Service" msgstr "Serviss" #: js/ui/components/networkAgent.js:370 js/ui/components/networkAgent.js:406 #: js/ui/components/networkAgent.js:743 js/ui/components/networkAgent.js:764 msgid "Authentication required" msgstr "Nepieciešama autentifikācija" #: js/ui/components/networkAgent.js:371 js/ui/components/networkAgent.js:744 #, javascript-format #| msgid "" #| "Passwords or encryption keys are required to access the wireless network " #| "“%s”." msgid "" "Passwords or encryption keys are required to access the wireless network “%s”" msgstr "" "Lai piekļūtu bezvadu tīklam “%s”, ir nepieciešamas paroles vai šifrēšanas " "atslēgas" #: js/ui/components/networkAgent.js:375 js/ui/components/networkAgent.js:748 msgid "Wired 802.1X authentication" msgstr "Vadu 802.1X autentifikācija" #: js/ui/components/networkAgent.js:378 msgid "Network name" msgstr "Tīkla nosaukums" #: js/ui/components/networkAgent.js:386 js/ui/components/networkAgent.js:752 msgid "DSL authentication" msgstr "DSL autentifikācija" #: js/ui/components/networkAgent.js:393 js/ui/components/networkAgent.js:757 msgid "PIN code required" msgstr "Nepieciešams PIN kods" #: js/ui/components/networkAgent.js:394 js/ui/components/networkAgent.js:758 msgid "PIN code is needed for the mobile broadband device" msgstr "Mobilā platjoslas tīkla ierīcei ir vajadzīgs PIN kods" #: js/ui/components/networkAgent.js:396 msgid "PIN" msgstr "PIN" #: js/ui/components/networkAgent.js:407 js/ui/components/networkAgent.js:749 #: js/ui/components/networkAgent.js:753 js/ui/components/networkAgent.js:765 #: js/ui/components/networkAgent.js:769 #, javascript-format #| msgid "A password is required to connect to “%s”." msgid "A password is required to connect to “%s”" msgstr "Lai savienotos ar “%s”, ir nepieciešama parole" #: js/ui/components/networkAgent.js:768 msgid "VPN password" msgstr "VPN parole" #: js/ui/components/polkitAgent.js:44 msgid "Authentication Required" msgstr "Nepieciešama autentifikācija" #: js/ui/components/polkitAgent.js:84 msgid "Administrator" msgstr "Administrators" #: js/ui/components/polkitAgent.js:149 msgid "Authenticate" msgstr "Autentificēt" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:263 js/ui/shellMountOperation.js:415 msgid "Sorry, that didn’t work. Please try again." msgstr "Diemžēl tas nenostrādāja. Lūdzu, mēģiniet vēlreiz." #: js/ui/ctrlAltTab.js:23 js/ui/overviewControls.js:404 msgid "Windows" msgstr "Logi" #: js/ui/dash.js:204 js/ui/dash.js:250 msgid "Show Apps" msgstr "Rādīt lietotnes" #. Translators: this is the name of the dock/favorites area on #. the bottom of the overview #: js/ui/dash.js:408 msgid "Dash" msgstr "Panelis" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:99 msgid "%B %-d %Y" msgstr "%-d %B %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:106 msgid "%A %B %e %Y" msgstr "%A, %e. %B, %Y." #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:172 msgctxt "calendar heading" msgid "%B %-d" msgstr "%-d. %B" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:175 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%Y. gada %-d. %B" #: js/ui/dateMenu.js:181 msgid "Today" msgstr "Šodien" #: js/ui/dateMenu.js:185 msgid "Tomorrow" msgstr "Rīt" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:216 msgctxt "event list time" msgid "All Day" msgstr "Visu dienu" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:238 msgid "%m/%d" msgstr "%d.%m." #: js/ui/dateMenu.js:289 msgid "No Events" msgstr "Nav notikumu" #: js/ui/dateMenu.js:411 #| msgid "Add world clocks…" msgid "Add World Clocks…" msgstr "Pievienot pasaules pulksteņus…" #: js/ui/dateMenu.js:412 msgid "World Clocks" msgstr "Pasaules pulksteņi" #: js/ui/dateMenu.js:702 msgid "Loading…" msgstr "Ielādē…" #: js/ui/dateMenu.js:712 #| msgid "Go online for weather information" msgid "Go Online for Weather Information" msgstr "Laika ziņas skatīt tiešsaistē" #: js/ui/dateMenu.js:714 #| msgid "Weather information is currently unavailable" msgid "Weather Information Unavailable" msgstr "Laika ziņas nav pieejamas" #: js/ui/dateMenu.js:724 msgid "Weather" msgstr "Laikapstākļi" #: js/ui/dateMenu.js:726 #| msgid "Select weather location…" msgid "Select Weather Location…" msgstr "Izvēlieties laikapstākļu vietu…" #: js/ui/endSessionDialog.js:47 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "Izrakstīt %s" #: js/ui/endSessionDialog.js:48 msgctxt "title" msgid "Log Out" msgstr "Izrakstīties" #: js/ui/endSessionDialog.js:51 #, javascript-format #| msgid "%s will be logged out automatically in %d second." #| msgid_plural "%s will be logged out automatically in %d seconds." msgid "%s will be logged out automatically in %d second" msgid_plural "%s will be logged out automatically in %d seconds" msgstr[0] "%s tiks automātiski izrakstīts no sesijas pēc %d sekundes" msgstr[1] "%s tiks automātiski izrakstīts no sesijas pēc %d sekundēm" msgstr[2] "%s tiks automātiski izrakstīts no sesijas pēc %d sekundēm" #: js/ui/endSessionDialog.js:57 #, javascript-format #| msgid "You will be logged out automatically in %d second." #| msgid_plural "You will be logged out automatically in %d seconds." msgid "You will be logged out automatically in %d second" msgid_plural "You will be logged out automatically in %d seconds" msgstr[0] "Jūs tiksiet automātiski izrakstīts no sesijas pēc %d sekundes" msgstr[1] "Jūs tiksiet automātiski izrakstīts no sesijas pēc %d sekundēm" msgstr[2] "Jūs tiksiet automātiski izrakstīts no sesijas pēc %d sekundēm" #: js/ui/endSessionDialog.js:64 msgctxt "button" msgid "Log Out" msgstr "Izrakstīties" #: js/ui/endSessionDialog.js:70 js/ui/status/system.js:174 msgctxt "title" msgid "Power Off" msgstr "Izslēgt" #: js/ui/endSessionDialog.js:71 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Instalēt atjauninājumus un izslēgt" #: js/ui/endSessionDialog.js:74 #, javascript-format #| msgid "The system will power off automatically in %d second." #| msgid_plural "The system will power off automatically in %d seconds." msgid "The system will power off automatically in %d second" msgid_plural "The system will power off automatically in %d seconds" msgstr[0] "Sistēma tiks izslēgta automātiski pēc %d sekundes" msgstr[1] "Sistēma tiks izslēgta automātiski pēc %d sekundēm" msgstr[2] "Sistēma tiks izslēgta automātiski pēc %d sekundēm" #: js/ui/endSessionDialog.js:78 js/ui/endSessionDialog.js:97 msgctxt "checkbox" msgid "Install pending software updates" msgstr "Instalēt sagatavotos programmatūras atjauninājumus" #: js/ui/endSessionDialog.js:82 msgctxt "button" msgid "Power Off" msgstr "Izslēgt" #: js/ui/endSessionDialog.js:89 msgctxt "title" msgid "Restart" msgstr "Pārstartēt" #: js/ui/endSessionDialog.js:90 msgctxt "title" msgid "Install Updates & Restart" msgstr "Instalēt atjauninājumus un pārstartēt" #: js/ui/endSessionDialog.js:93 #, javascript-format #| msgid "The system will restart automatically in %d second." #| msgid_plural "The system will restart automatically in %d seconds." msgid "The system will restart automatically in %d second" msgid_plural "The system will restart automatically in %d seconds" msgstr[0] "Sistēma tiks automātiski pārstartēta pēc %d sekundes" msgstr[1] "Sistēma tiks automātiski pārstartēta pēc %d sekundēm" msgstr[2] "Sistēma tiks automātiski pārstartēta pēc %d sekundēm" #: js/ui/endSessionDialog.js:101 msgctxt "button" msgid "Restart" msgstr "Pārstartēt" #: js/ui/endSessionDialog.js:109 msgctxt "title" msgid "Restart & Install Updates" msgstr "Pārstartēt un instalēt atjauninājumus" #: js/ui/endSessionDialog.js:112 #, javascript-format #| msgid "" #| "The system will automatically restart and install updates in %d second." #| msgid_plural "" #| "The system will automatically restart and install updates in %d seconds." msgid "The system will automatically restart and install updates in %d second" msgid_plural "" "The system will automatically restart and install updates in %d seconds" msgstr[0] "" "Sistēma tiks automātiski pārstartēta un instalēs atjauninājumus pēc %d " "sekundes" msgstr[1] "" "Sistēma tiks automātiski pārstartēta un instalēs atjauninājumus pēc %d " "sekundēm" msgstr[2] "" "Sistēma tiks automātiski pārstartēta un instalēs atjauninājumus pēc %d " "sekundēm" #: js/ui/endSessionDialog.js:119 js/ui/endSessionDialog.js:140 msgctxt "button" msgid "Restart & Install" msgstr "Pārstartēt un instalēt" #: js/ui/endSessionDialog.js:121 msgctxt "button" msgid "Install & Power Off" msgstr "Instalēt un izslēgt" #: js/ui/endSessionDialog.js:122 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Izslēgt pēc atjauninājumu instalēšanas" #: js/ui/endSessionDialog.js:129 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "Pārstartēt un instalēt uzlabojumus" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:134 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "Pēc pārstartēšanas tiks instalēts %s %s. Uzlabošana var aizņemt daudz laika: " "pārliecinieties, ka esat izveidojši rezerves kopijas un ka dators ir " "pievienots strāvai." #: js/ui/endSessionDialog.js:283 #| msgid "Low battery power: please plug in before installing updates." msgid "Low battery power: please plug in before installing updates" msgstr "" "Maz baterijas enerģijas. Lūdzu, pieslēdziet elektrībai, pirms instalējat " "atjauninājumus" #: js/ui/endSessionDialog.js:292 msgid "Some applications are busy or have unsaved work" msgstr "Dažas lietotnes ir aizņemtas vai ir nesaglabāts darbs" #: js/ui/endSessionDialog.js:297 msgid "Other users are logged in" msgstr "Citi lietotāji ir ierakstījušies" #: js/ui/endSessionDialog.js:467 msgctxt "button" msgid "Boot Options" msgstr "Startēšanas opcijas" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:672 #, javascript-format msgid "%s (remote)" msgstr "%s (attāls)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:675 #, javascript-format msgid "%s (console)" msgstr "%s (konsole)" #: js/ui/extensionDownloader.js:280 msgid "Install" msgstr "Instalēt" #: js/ui/extensionDownloader.js:286 msgid "Install Extension" msgstr "Instalēt paplašinājumu" #: js/ui/extensionDownloader.js:287 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "Lejupielādēt un instalēt “%s” no extensions.gnome.org?" #: js/ui/extensionSystem.js:352 msgid "Extension Updates Available" msgstr "Ir pieejami atjauninājumi paplašinājumiem" #: js/ui/extensionSystem.js:353 #| msgid "Extension updates are ready to be installed." msgid "Extension updates are ready to be installed" msgstr "Paplašinājumu atjauninājumi ir gatavi instalēšanai" #: js/ui/inhibitShortcutsDialog.js:70 msgid "Allow inhibiting shortcuts" msgstr "Atļaut nomācošās saīsnes" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:73 #, javascript-format msgid "The app %s wants to inhibit shortcuts" msgstr "Lietotne %s vēlas nomākt saīsnes" #: js/ui/inhibitShortcutsDialog.js:74 msgid "An app wants to inhibit shortcuts" msgstr "Lietotne vēlas nomākt saīsnes" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:81 #, javascript-format #| msgid "You can restore shortcuts by pressing %s." msgid "You can restore shortcuts by pressing %s" msgstr "Varat atjaunot īsinājumtaustiņus, nospiežot %s" #: js/ui/kbdA11yDialog.js:34 msgid "Slow Keys Turned On" msgstr "Lēnie taustiņi ieslēgti" #: js/ui/kbdA11yDialog.js:35 msgid "Slow Keys Turned Off" msgstr "Lēnie taustiņi izslēgti" #: js/ui/kbdA11yDialog.js:36 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "Jūs nupat noturējāt Shift taustiņu piespiestu vairāk kā 8 sekundes. Tā ir " "tastatūras lēno taustiņu funkcijas saīsne, kas ietekmē to, kā darbojas jūsu " "tastatūra." #: js/ui/kbdA11yDialog.js:42 msgid "Sticky Keys Turned On" msgstr "Lipīgie taustiņi ieslēgti" #: js/ui/kbdA11yDialog.js:43 msgid "Sticky Keys Turned Off" msgstr "Lipīgie taustiņi izslēgti" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "Jūs tikko piespiedāt Shift taustiņu 5 reizes pēc kārtas. Tā ir tastatūras " "Lipīgo taustiņu funkcijas saīsne, kas ietekmē to kā darbojas jūsu tastatūra." #: js/ui/kbdA11yDialog.js:47 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" "Jūs tikko vienlaicīgi piespiedāt divus taustiņus vai Shift taustiņu 5 reizes " "pēc kārtas. Tas atslēdz tastatūras lipīgo taustiņu funkciju, kas ietekmē to " "kā darbojas jūsu tastatūra." #: js/ui/kbdA11yDialog.js:57 msgid "Leave On" msgstr "Atstāt ieslēgtu" #: js/ui/kbdA11yDialog.js:57 msgid "Turn On" msgstr "Ieslēgt" #: js/ui/kbdA11yDialog.js:67 js/ui/status/network.js:455 msgid "Turn Off" msgstr "Izslēgt" #: js/ui/kbdA11yDialog.js:67 msgid "Leave Off" msgstr "Atstāt izslēgtu" #: js/ui/keyboard.js:180 js/ui/status/keyboard.js:897 msgid "Keyboard Settings" msgstr "Tastatūras iestatījumi" #: js/ui/lookingGlass.js:727 msgid "No extensions installed" msgstr "Nav instalētu paplašinājumu" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:788 #, javascript-format #| msgid "%s has not emitted any errors." msgid "%s has not emitted any errors" msgstr "%s nav izdevis nevienu kļūdu" #: js/ui/lookingGlass.js:794 msgid "Hide Errors" msgstr "Slēpt kļūdas" #: js/ui/lookingGlass.js:798 js/ui/lookingGlass.js:875 msgid "Show Errors" msgstr "Rādīt kļūdas" #: js/ui/lookingGlass.js:807 msgid "Active" msgstr "Aktīvs" #: js/ui/lookingGlass.js:810 msgid "Inactive" msgstr "Neaktīvs" #: js/ui/lookingGlass.js:812 msgid "Error" msgstr "Kļūda" #: js/ui/lookingGlass.js:814 msgid "Out of date" msgstr "Nav aktuāls" #: js/ui/lookingGlass.js:816 msgid "Downloading" msgstr "Lejupielādē" #: js/ui/lookingGlass.js:818 msgid "Deactivating" msgstr "Deaktivē" #: js/ui/lookingGlass.js:820 msgid "Activating" msgstr "Aktivē" #: js/ui/lookingGlass.js:853 msgid "View Source" msgstr "Skatīt avotu" #: js/ui/lookingGlass.js:864 msgid "Web Page" msgstr "Tīmekļa lapa" #: js/ui/main.js:277 msgid "System was put in unsafe mode" msgstr "Sistēma ir ielikta nedrošajā režīmā" #: js/ui/main.js:278 msgid "Apps now have unrestricted access" msgstr "Lietotnēm tagad ir neierobežota piekļuve" #: js/ui/main.js:338 msgid "Logged in as a privileged user" msgstr "Ierakstījies kā priviliģēts lietotājs" #: js/ui/main.js:339 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" "Drošības apsvērumu dēļ nav ieteicams darbināt sesiju ar priviliģētu " "lietotāju. Ja iespējams, jums vajadzētu ierakstīties kā parastam lietotājam." #: js/ui/main.js:387 msgid "Screen Lock disabled" msgstr "Ekrāna bloķēšana ir izslēgta" #: js/ui/main.js:388 #| msgid "Screen Locking requires the GNOME display manager." msgid "Screen Locking requires the GNOME display manager" msgstr "Ekrāna bloķēšanai vajag GNOME darbvirsmas pārvaldnieku" #. Translators: this is the string displayed in the header when a message #. source doesn't have a name #: js/ui/messageList.js:374 msgid "Unknown App" msgstr "Nezināma lietotne" #: js/ui/messageTray.js:326 js/ui/messageTray.js:328 msgid "Notification sound" msgstr "Paziņojumu skaņa" #: js/ui/mpris.js:198 msgid "Unknown artist" msgstr "Nezināms izpildītājs" #: js/ui/mpris.js:208 msgid "Unknown title" msgstr "Nezināms nosaukums" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:328 msgid "Type to search" msgstr "Rakstiet, lai meklētu" #: js/ui/overviewControls.js:392 msgid "Apps" msgstr "Lietotnes" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:33 msgid "Overview" msgstr "Pārskats" #: js/ui/padOsd.js:98 msgid "New shortcut…" msgstr "Jauna saīsne…" #: js/ui/padOsd.js:151 msgid "App defined" msgstr "Definētā lietotne" #: js/ui/padOsd.js:152 msgid "Show on-screen help" msgstr "Rādīt palīdzību uz ekrāna" #: js/ui/padOsd.js:153 msgid "Switch monitor" msgstr "Pārslēgt monitoru" #: js/ui/padOsd.js:154 msgid "Assign keystroke" msgstr "Piešķirt taustiņsitienu" #: js/ui/padOsd.js:223 msgid "Done" msgstr "Gatavs" #: js/ui/padOsd.js:726 msgid "Edit…" msgstr "Rediģēt…" #: js/ui/padOsd.js:773 msgid "None" msgstr "Nekas" #: js/ui/padOsd.js:844 msgid "Press a button to configure" msgstr "Spiediet pogu, lai konfigurētu" #: js/ui/padOsd.js:845 msgid "Press Esc to exit" msgstr "Spiediet ESC, lai izietu" #: js/ui/padOsd.js:848 msgid "Press any key to exit" msgstr "Spiediet jebkuru taustiņu, lai izietu" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:423 msgid "Activities" msgstr "Aktivitātes" #: js/ui/panel.js:504 msgctxt "System menu in the top bar" msgid "System" msgstr "Sistēma" #: js/ui/panel.js:678 msgid "Top Bar" msgstr "Augšējā josla" #: js/ui/quickSettings.js:188 msgid "Open menu" msgstr "Atvērt izvēlni" #: js/ui/runDialog.js:61 msgid "Run a Command" msgstr "Izpildīt komandu" #: js/ui/runDialog.js:76 msgid "Press ESC to close" msgstr "Spiediet ESC, lai aizvērtu" #: js/ui/runDialog.js:241 msgid "Restart is not available on Wayland" msgstr "Uz Wayland pārstartēšana nav pieejama" #: js/ui/runDialog.js:246 msgid "Restarting…" msgstr "Pārstartē…" #: js/ui/screenShield.js:233 msgid "GNOME needs to lock the screen" msgstr "GNOME vajag bloķēt ekrānu" #: js/ui/screenShield.js:274 js/ui/screenShield.js:667 msgid "Unable to lock" msgstr "Nevar bloķēt" #: js/ui/screenShield.js:275 js/ui/screenShield.js:668 msgid "Lock was blocked by an app" msgstr "Lietotne neļāva bloķēt" #: js/ui/screenshot.js:1252 msgid "Selection" msgstr "Atlase" #: js/ui/screenshot.js:1262 msgid "Area Selection" msgstr "Laukuma atlase" #: js/ui/screenshot.js:1267 msgid "Screen" msgstr "Ekrāns" #: js/ui/screenshot.js:1277 msgid "Screen Selection" msgstr "Ekrāna atlase" #: js/ui/screenshot.js:1282 msgid "Window" msgstr "Logs" #: js/ui/screenshot.js:1292 msgid "Window Selection" msgstr "Loga atlase" #. Translators: entry in the window right click menu. #: js/ui/screenshot.js:1317 js/ui/status/system.js:111 js/ui/windowMenu.js:28 msgid "Take Screenshot" msgstr "Uzņemt ekrānattēlu" #: js/ui/screenshot.js:1333 msgid "Record Screen" msgstr "Ierakstīt ekrānu" #. Translators: since this string refers to an action, #. it needs to be phrased as a verb. #: js/ui/screenshot.js:1350 msgid "Capture" msgstr "Uzņemt" #: js/ui/screenshot.js:1372 msgid "Show Pointer" msgstr "Rādīt rādītāju" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1996 msgid "Screencasts" msgstr "Ekrānieraksti" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast From 07-17-2013 10:00:46 PM" #: js/ui/screenshot.js:2001 #, no-c-format #| msgid "Screencast from %d %t" msgid "Screencast From %d %t" msgstr "Ekrānieraksts %d %t" #. Translators: notification title. #: js/ui/screenshot.js:2047 msgid "Screencast recorded" msgstr "Ekrānieraksts pabeigs" #. Translators: notification title. #: js/ui/screenshot.js:2060 msgid "Screencast failed to start" msgstr "Ekrānierakstu neizdevās uzsākt" #. Translators: notification title. #: js/ui/screenshot.js:2066 msgid "Screencast ended: Out of disk space" msgstr "Ekrānieraksts beidzās: uz diska vairs nav vietas" #. We can encourage user to try again on service crashes since the #. recorder will auto-blocklist the pipeline that crashed. #. Translators: notification title. #: js/ui/screenshot.js:2072 msgid "Screencast ended unexpectedly, please try again" msgstr "Ekrānieraksts negaidīti beidzās, lūdzu, mēģiniet vēlreiz" #. Translators: notification title. #: js/ui/screenshot.js:2075 msgid "Screencast ended unexpectedly" msgstr "Ekrānieraksts negaidīti beidzās" #. Translators: notification source name. #: js/ui/screenshot.js:2085 js/ui/screenshot.js:2327 msgid "Screenshot" msgstr "Ekrānattēls" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:2092 msgid "Click here to view the video." msgstr "Spiediet šeit, lai skatītu video." #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:2100 js/ui/screenshot.js:2343 msgid "Show in Files" msgstr "Rādīt Datņu lietotnē" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2287 #, javascript-format #| msgid "Screenshot from %s" msgid "Screenshot From %s" msgstr "Ekrānattēls no %s" #. Translators: notification title. #: js/ui/screenshot.js:2333 msgid "Screenshot captured" msgstr "Ekrānattēls uzņemts" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2335 msgid "You can paste the image from the clipboard." msgstr "Jūs varat ielīmēt attēlu no starpliktuves." #: js/ui/screenshot.js:2391 js/ui/screenshot.js:2555 msgid "Screenshot taken" msgstr "Ekrānattēls uzņemts" #: js/ui/search.js:829 msgid "Searching…" msgstr "Meklē…" #: js/ui/search.js:831 #| msgid "No results." msgid "No results" msgstr "Nav rezultātu" #: js/ui/search.js:962 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "%d vairāk" msgstr[1] "%d vairāk" msgstr[2] "%d vairāk" #: js/ui/searchController.js:87 #: subprojects/extensions-app/data/ui/extensions-window.ui:73 msgid "Search" msgstr "Meklēt" #: js/ui/shellEntry.js:21 msgid "Copy" msgstr "Kopēt" #: js/ui/shellEntry.js:26 msgid "Paste" msgstr "Ielīmēt" #: js/ui/shellEntry.js:78 msgid "Show Text" msgstr "Rādīt tekstu" #: js/ui/shellEntry.js:80 msgid "Hide Text" msgstr "Slēpt tekstu" #: js/ui/shellEntry.js:174 #| msgid "Caps lock is on." msgid "Caps lock is on" msgstr "Ieslēgts Caps Lock" #: js/ui/shellMountOperation.js:286 msgid "Hidden Volume" msgstr "Slēpts sējums" #: js/ui/shellMountOperation.js:289 msgid "Windows System Volume" msgstr "Windows sistēmas sējums" #: js/ui/shellMountOperation.js:292 msgid "Uses Keyfiles" msgstr "Izmanto atslēgdatnes" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:300 #, javascript-format #| msgid "" #| "To unlock a volume that uses keyfiles, use the %s utility instead." msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead" msgstr "" "Lai atbloķētu sējumu, kas izmanto atslēgdatnes, izmantojiet %s " "utilītprogrammu" #: js/ui/shellMountOperation.js:304 #| msgid "" #| "You need an external utility like Disks to unlock a volume that " #| "uses keyfiles." msgid "" "You need an external utility like Disks to unlock a volume that uses " "keyfiles" msgstr "" "Lai atbloķētu sējumu, kas izmanto atslēgdatnes, izmantojiet ārējo rīku, " "piemēram, Diski" #: js/ui/shellMountOperation.js:312 msgid "PIM Number" msgstr "PIM numurs" #: js/ui/shellMountOperation.js:371 msgid "Remember Password" msgstr "Atcerēties paroli" #: js/ui/shellMountOperation.js:386 msgid "Unlock" msgstr "Atbloķēt" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:400 #, javascript-format msgid "Open %s" msgstr "Atvērt %s" #: js/ui/shellMountOperation.js:436 #| msgid "The PIM must be a number or empty." msgid "The PIM must be a number or empty" msgstr "PIM ir jābūt skaitlim vai ari tukšam laukam" #: js/ui/status/accessibility.js:34 msgid "Accessibility" msgstr "Pieejamība" #: js/ui/status/accessibility.js:44 msgid "High Contrast" msgstr "Augsts kontrasts" #: js/ui/status/accessibility.js:47 msgid "Zoom" msgstr "Palielinājums" #: js/ui/status/accessibility.js:54 msgid "Screen Reader" msgstr "Ekrāna lasītājs" #: js/ui/status/accessibility.js:58 msgid "Screen Keyboard" msgstr "Ekrāna tastatūra" #: js/ui/status/accessibility.js:62 msgid "Visual Alerts" msgstr "Vizuālie brīdinājumi" #: js/ui/status/accessibility.js:66 msgid "Sticky Keys" msgstr "Lipīgie taustiņi" #: js/ui/status/accessibility.js:70 msgid "Slow Keys" msgstr "Lēnie taustiņi" #: js/ui/status/accessibility.js:74 msgid "Bounce Keys" msgstr "Atlecošie taustiņi" #: js/ui/status/accessibility.js:78 msgid "Mouse Keys" msgstr "Peles taustiņi" #: js/ui/status/accessibility.js:83 msgid "Accessibility Settings" msgstr "Pieejamības iestatījumi" #: js/ui/status/accessibility.js:140 msgid "Large Text" msgstr "Liels teksts" #: js/ui/status/autoRotate.js:14 msgid "Auto Rotate" msgstr "Automātiskā pagriešana" #: js/ui/status/backgroundApps.js:156 msgctxt "title" msgid "Background Apps" msgstr "Fona lietotnes" #: js/ui/status/backgroundApps.js:171 msgid "Apps known to be running without a window" msgstr "Lietotnes, kuras darbojas bez loga" #: js/ui/status/backgroundApps.js:182 msgid "App Settings" msgstr "Lietotnes iestatījumi" #: js/ui/status/backgroundApps.js:239 msgid "No Background Apps" msgstr "Nav fona lietotņu" #: js/ui/status/backgroundApps.js:241 #, javascript-format msgid "%d Background App" msgid_plural "%d Background Apps" msgstr[0] "%d fona lietotne" msgstr[1] "%d fona lietotnes" msgstr[2] "%d fona lietotņu" #: js/ui/status/backlight.js:39 msgid "Keyboard Brightness" msgstr "Tastatūras gaišums" #: js/ui/status/backlight.js:79 msgid "Off" msgstr "Izslēgts" #: js/ui/status/backlight.js:80 msgid "Low" msgstr "Zems" #: js/ui/status/backlight.js:81 msgid "High" msgstr "Augsts" #: js/ui/status/backlight.js:147 js/ui/status/keyboard.js:879 msgid "Keyboard" msgstr "Tastatūra" #: js/ui/status/bluetooth.js:245 js/ui/status/network.js:360 msgid "Disconnect" msgstr "Atvienot" #: js/ui/status/bluetooth.js:262 js/ui/status/bluetooth.js:264 msgid "Bluetooth" msgstr "Bluetooth" #: js/ui/status/bluetooth.js:287 js/ui/status/network.js:1900 msgid "Bluetooth Settings" msgstr "Bluetooth iestatījumi" #: js/ui/status/bluetooth.js:334 msgid "No available or connected devices" msgstr "Nav pieejamu vai savienotu ierīču" #: js/ui/status/bluetooth.js:335 msgid "Turn on Bluetooth to connect to devices" msgstr "Ieslēgt Bluetooth, lai savienotos ar ierīcēm" #. Translators: This is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:389 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d savienots" msgstr[1] "%d savienoti" msgstr[2] "%d savienotu" #: js/ui/status/brightness.js:32 msgid "Brightness" msgstr "Gaišums" #: js/ui/status/darkMode.js:12 msgid "Dark Style" msgstr "Tumšais stils" #: js/ui/status/dwellClick.js:15 msgid "Single Click" msgstr "Viens klikšķis" #: js/ui/status/dwellClick.js:20 msgid "Double Click" msgstr "Dubultklikšķis" #: js/ui/status/dwellClick.js:25 msgid "Drag" msgstr "Vilkt" #: js/ui/status/dwellClick.js:30 msgid "Secondary Click" msgstr "Sekundārais klikšķis" #: js/ui/status/dwellClick.js:39 msgid "Dwell Click" msgstr "Apstājas klikšķis" #: js/ui/status/keyboard.js:896 msgid "Show Keyboard Layout" msgstr "Rādīt tastatūras izkārtojumu" #: js/ui/status/location.js:337 msgid "Allow location access" msgstr "Atļaut piekļuvi atrašanās vietai" #. Translators: %s is an application name #: js/ui/status/location.js:339 #, javascript-format msgid "The app %s wants to access your location" msgstr "Lietotne %s vēlas pieeju jūsu atrašanās vietai" #: js/ui/status/location.js:349 #| msgid "" #| "Location access can be changed at any time from the privacy settings." msgid "Location access can be changed at any time from the privacy settings" msgstr "" "Pieeju atrašanās vietai var mainīt jebkurā brīdī privātuma iestatījumos" #: js/ui/status/location.js:357 msgid "Deny Access" msgstr "Liegt pieeju" #: js/ui/status/location.js:362 msgid "Grant Access" msgstr "Piešķirt pieeju" #: js/ui/status/network.js:62 msgid "" msgstr "" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:354 #, javascript-format msgid "Disconnect %s" msgstr "Atvienot %s" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:356 #, javascript-format msgid "Connect to %s" msgstr "Savienoties ar %s" #: js/ui/status/network.js:1050 msgid "Secure" msgstr "Drošs" #: js/ui/status/network.js:1050 msgid "Not secure" msgstr "Nav drošs" #: js/ui/status/network.js:1051 #, javascript-format msgid "Signal strength %s%%" msgstr "Signāla stiprums %s%%" #. translators: The first placeholder is the network name, the second and indication whether it is secure, and the last the signal strength indication #: js/ui/status/network.js:1053 #, javascript-format msgid "%s, %s, %s" msgstr "%s, %s, %s" #. Translators: %s is a network identifier #: js/ui/status/network.js:1155 #, javascript-format msgid "%s Hotspot" msgstr "%s tīklājs" #: js/ui/status/network.js:1426 #, javascript-format msgid "%d connected" msgid_plural "%d connected" msgstr[0] "%d savienots" msgstr[1] "%d savienoti" msgstr[2] "%d savienotu" #: js/ui/status/network.js:1524 js/ui/status/network.js:1540 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1525 msgid "VPN Settings" msgstr "VPN iestatījumi" #: js/ui/status/network.js:1785 msgid "Wi–Fi" msgstr "Wi–Fi" #: js/ui/status/network.js:1787 msgid "All Networks" msgstr "Visi tīkli" #: js/ui/status/network.js:1884 msgid "Wired Connections" msgstr "Vadu savienojumi" #: js/ui/status/network.js:1885 msgid "Wired Settings" msgstr "Vadu tīkla iestatījumi" #: js/ui/status/network.js:1899 msgid "Bluetooth Tethers" msgstr "Bluetooth saites" #. Translators: "Tether" from "Bluetooth Tether" #: js/ui/status/network.js:1906 msgid "Tether" msgstr "Saite" #: js/ui/status/network.js:1919 msgid "Mobile Connections" msgstr "Mobilie savienojumi" #: js/ui/status/network.js:1921 msgid "Mobile Broadband Settings" msgstr "Mobilās platjoslas iestatījumi" #. Translators: "Mobile" from "Mobile Broadband" #: js/ui/status/network.js:1930 msgid "Mobile" msgstr "Mobilais" #: js/ui/status/network.js:1964 #| msgid "Wi-Fi Networks" msgid "Sign Into Wi–Fi Network" msgstr "Ierakstīties Wi-Fi tīklā" #: js/ui/status/network.js:2151 msgid "Connection failed" msgstr "Neizdevās savienoties" #: js/ui/status/network.js:2152 msgid "Activation of network connection failed" msgstr "Neizdevās tīkla savienojuma aktivēšana" #: js/ui/status/nightLight.js:19 msgid "Night Light" msgstr "Nakts gaisma" #: js/ui/status/powerProfiles.js:19 msgctxt "Power profile" msgid "Performance" msgstr "Veiktspēja" #: js/ui/status/powerProfiles.js:24 msgctxt "Power profile" msgid "Balanced" msgstr "Līdzsvarota" #: js/ui/status/powerProfiles.js:29 msgctxt "Power profile" msgid "Power Saver" msgstr "Taupīga" #: js/ui/status/powerProfiles.js:39 js/ui/status/powerProfiles.js:69 msgid "Power Mode" msgstr "Jaudas režīms" #: js/ui/status/powerProfiles.js:71 msgid "Power Settings" msgstr "Barošanas iestatījumi" #: js/ui/status/remoteAccess.js:74 msgid "Stop Screencast" msgstr "Apturēt ekrānierakstu" #: js/ui/status/remoteAccess.js:144 msgid "Stop Screen Sharing" msgstr "Apturēt ekrāna koplietošanu" #: js/ui/status/rfkill.js:99 msgid "Airplane Mode" msgstr "Lidmašīnas režīms" #: js/ui/status/system.js:168 msgid "Power Off Menu" msgstr "Izslēgšana izvēlne" #: js/ui/status/system.js:176 msgid "Suspend" msgstr "Iesnaudināt" #: js/ui/status/system.js:181 msgid "Restart…" msgstr "Pārstartēt…" #: js/ui/status/system.js:186 msgid "Power Off…" msgstr "Izslēgt…" #: js/ui/status/system.js:193 #: subprojects/extensions-app/data/ui/extensions-window.ui:124 msgid "Log Out…" msgstr "Izrakstīties…" #: js/ui/status/system.js:198 msgid "Switch User…" msgstr "Mainīt lietotāju…" #: js/ui/status/system.js:242 msgctxt "action" msgid "Lock Screen" msgstr "Bloķēt ekrānu" #: js/ui/status/thunderbolt.js:308 msgid "Unknown Thunderbolt device" msgstr "Nezināma Thunderbolt ierīce" #: js/ui/status/thunderbolt.js:309 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" "Kamēr nebijāt klāt, tika atklāta jauna ierīce. Lūdzu, atvienojiet un no " "jauna pievienojiet to ierīci, lai sāktu to izmantot." #: js/ui/status/thunderbolt.js:312 msgid "Unauthorized Thunderbolt device" msgstr "Nepilnvarota Thunderbolt ierīce" #: js/ui/status/thunderbolt.js:313 #| msgid "" #| "New device has been detected and needs to be authorized by an " #| "administrator." msgid "" "New device has been detected and needs to be authorized by an administrator" msgstr "Ir atklāta jauna ierīce un to administratoram tā ir jāpilnvaro" #: js/ui/status/thunderbolt.js:319 msgid "Thunderbolt authorization error" msgstr "Thunderbolt pilnvarošanas kļūda" #: js/ui/status/thunderbolt.js:320 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "Nevarēja autorizēt Thunderbolt ierīci: %s" #: js/ui/status/volume.js:218 msgid "Volume changed" msgstr "Skaļums ir mainīts" #: js/ui/status/volume.js:231 msgid "Unmute" msgstr "Atjaunot skaņu" #: js/ui/status/volume.js:231 msgid "Mute" msgstr "Apklusināt" #: js/ui/status/volume.js:286 msgid "Volume" msgstr "Skaļums" #: js/ui/status/volume.js:302 msgid "Sound Output" msgstr "Skaņas izvade" #: js/ui/status/volume.js:374 msgid "Sound Input" msgstr "Skaņas ievade" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:20 msgid "Mirror" msgstr "Dublēt" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:29 msgid "Join Displays" msgstr "Savienot displejus" #. Translators: this is for using only external displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:39 msgid "External Only" msgstr "Tikai ārējais" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:47 msgid "Built-in Only" msgstr "Tikai iebūvētais" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:378 msgid "%A %B %-d" msgstr "%A, %-d. %B" #: js/ui/unlockDialog.js:384 msgid "Swipe up to unlock" msgstr "Velciet augšup, lai atbloķētu" #: js/ui/unlockDialog.js:385 msgid "Click or press a key to unlock" msgstr "Klikšķiniet vai nospiediet kādu taustiņu, lai atbloķētu" #: js/ui/unlockDialog.js:568 msgid "Unlock Window" msgstr "Atbloķēšanas logs" #: js/ui/unlockDialog.js:577 msgid "Log in as another user" msgstr "Ierakstīties kā citam lietotājam" #: js/ui/welcomeDialog.js:47 #, javascript-format msgid "GNOME %s" msgstr "GNOME %s" #: js/ui/welcomeDialog.js:51 #, javascript-format msgid "Welcome to %s" msgstr "Laipni lūgti %s" #: js/ui/welcomeDialog.js:52 #| msgid "If you want to learn your way around, check out the tour." msgid "If you want to learn your way around, check out the tour" msgstr "Ja vēlaties uzzināt, kas kur atrodas, paņemiet ceļvedi" #: js/ui/welcomeDialog.js:61 msgid "Skip" msgstr "Izlaist" #: js/ui/welcomeDialog.js:66 msgid "Take Tour" msgstr "Ņemt ceļvedi" #: js/ui/windowAttentionHandler.js:18 #, javascript-format msgid "“%s” is ready" msgstr "“%s” ir gatavs" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:68 msgid "Keep these display settings?" msgstr "Paturēt šos displeja iestatījumus?" #: js/ui/windowManager.js:78 msgid "Revert Settings" msgstr "Atjaunot iestatījumus" #: js/ui/windowManager.js:83 msgid "Keep Changes" msgstr "Paturēt izmaiņas" #: js/ui/windowManager.js:103 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "Izmaiņas tiks atgrieztas pēc %d sekundes" msgstr[1] "Izmaiņas tiks atgrieztas pēc %d sekundēm" msgstr[2] "Izmaiņas tiks atgrieztas pēc %d sekundēm" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:500 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:40 msgid "Hide" msgstr "Slēpt" #: js/ui/windowMenu.js:47 msgid "Restore" msgstr "Atjaunot" #: js/ui/windowMenu.js:51 msgid "Maximize" msgstr "Maksimizēt" #: js/ui/windowMenu.js:58 msgid "Move" msgstr "Pārvietot" #: js/ui/windowMenu.js:78 msgid "Resize" msgstr "Mainīt izmēru" #: js/ui/windowMenu.js:98 msgid "Always on Top" msgstr "Vienmēr virspusē" #: js/ui/windowMenu.js:117 msgid "Always on Visible Workspace" msgstr "Vienmēr redzamajā darbvietā" #: js/ui/windowMenu.js:131 msgid "Move to Workspace Left" msgstr "Pārvietot uz darbvietu pa kreisi" #: js/ui/windowMenu.js:137 msgid "Move to Workspace Right" msgstr "Pārvietot uz darbvietu pa labi" #: js/ui/windowMenu.js:143 msgid "Move to Workspace Up" msgstr "Pārvietot uz augstāku darbvietu" #: js/ui/windowMenu.js:149 msgid "Move to Workspace Down" msgstr "Pārvietot uz zemāku darbvietu" #: js/ui/windowMenu.js:167 msgid "Move to Monitor Up" msgstr "Pārvietot uz augstāku monitoru" #: js/ui/windowMenu.js:176 msgid "Move to Monitor Down" msgstr "Pārvietot uz zemāku monitoru" #: js/ui/windowMenu.js:185 msgid "Move to Monitor Left" msgstr "Pārvietot uz monitoru pa kreisi" #: js/ui/windowMenu.js:194 msgid "Move to Monitor Right" msgstr "Pārvietot uz monitoru pa labi" #: js/ui/windowMenu.js:202 msgid "Close" msgstr "Aizvērt" #: src/main.c:529 subprojects/extensions-tool/src/main.c:336 msgid "Print version" msgstr "Drukāt versiju" #: src/main.c:535 msgid "Mode used by GDM for login screen" msgstr "Režīms, ko izmantot GDM ierakstīšanās ekrānam" #: src/main.c:541 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "Izmantot specifisku metodi, piemēram, “gdm” ierakstīšanās ekrānam" #: src/main.c:547 msgid "List possible modes" msgstr "Uzskaitīt iespējamos režīmus" #: src/main.c:553 msgid "Force animations to be enabled" msgstr "Piespiest ieslēgt animācijas" #: src/shell-app.c:252 msgctxt "program" msgid "Unknown" msgstr "Nezināma" #: src/shell-app.c:503 #, c-format msgid "Failed to launch “%s”" msgstr "Neizdevās palaist “%s”" #: src/shell-keyring-prompt.c:764 #| msgid "Passwords do not match." msgid "Passwords do not match" msgstr "Paroles nesakrīt" #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "Parole nevar būt tukša" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "Lietotājs noraidīja autentifikācijas dialoglodziņu" #: src/st/st-icon-theme.c:1865 #, c-format msgid "Icon '%s' not present in theme %s" msgstr "Ikona “%s” nav atrast motīvā %s" #: src/st/st-icon-theme.c:3454 src/st/st-icon-theme.c:3757 msgid "Failed to load icon" msgstr "Neizdevās ielādēt ikonu" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 msgid "Manage your GNOME Extensions" msgstr "Pārvaldiet savus GNOME paplašinājumus" #. developer_name tag deprecated with Appstream 1.0 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:19 msgid "The GNOME Project" msgstr "\"GNOME projekts\"" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:51 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" "“GNOME paplašinājumi” nodrošina paplašinājumu atjaunināšanu un " "konfigurēšanu, kā arī nevajadzīgo paplašinājumu izslēgšanu vai izņemšanu." #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:64 msgid "Main Window" msgstr "Galvenais logs" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:68 msgid "Available Updates" msgstr "Pieejami atjauninājumi" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:72 msgid "Search View" msgstr "Meklēšanas skats" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "Konfigurēt GNOME Shell paplašinājumus" #: subprojects/extensions-app/js/extensionManager.js:237 #, javascript-format msgid "" "The installed version of this extension (%s) is incompatible with the " "current version of GNOME (%s). The extension has been disabled." msgstr "" "Uzinstalētā paplašinājuma versija (%s) nav savietojama ar šo GNOME versiju " "(%s). Paplašinājums ir izslēgts." #: subprojects/extensions-app/js/extensionManager.js:238 #, javascript-format msgid "" "The installed version of this extension is incompatible with the current " "version of GNOME (%s). The extension has been disabled." msgstr "" "Uzinstalētā paplašinājuma versija nav savietojama ar šo GNOME versiju (%s). " "Paplašinājums ir izslēgts." #: subprojects/extensions-app/js/extensionManager.js:242 msgid "" "An error has occurred in this extension. This could cause issues elsewhere " "in the system. It is recommended to turn the extension off until the error " "is resolved." msgstr "" "Šajā paplašinājumā gadījās kļūda. Tas var radīt problēmas citur sistēmā. Šo " "paplašinājumu ir vēlams izslēgt līdz kļūda ir novērsta." #. translators: Details for an extension error #: subprojects/extensions-app/js/extensionManager.js:248 msgid "Error details:" msgstr "Vairāk par kļūdu:" #: subprojects/extensions-app/js/extensionRow.js:82 #, javascript-format msgid "Version %s" msgstr "Versija %s" #: subprojects/extensions-app/js/extensionsWindow.js:113 #, javascript-format msgid "Remove “%s”?" msgstr "Izņemt “%s”?" #: subprojects/extensions-app/js/extensionsWindow.js:114 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "" "Ja izņemsiet paplašinājumu, tad to uzlikt varēs tikai pēc tā lejupielādēšanas" #: subprojects/extensions-app/js/extensionsWindow.js:117 msgid "_Cancel" msgstr "At_celt" #: subprojects/extensions-app/js/extensionsWindow.js:118 msgid "_Remove" msgstr "_Izņemt" #: subprojects/extensions-app/js/extensionsWindow.js:158 msgid "translator-credits" msgstr "" "Rūdolfs Mazurs \n" "Vika Leimane " #: subprojects/extensions-app/js/extensionsWindow.js:203 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "Nākamajā ierakstīšanās reizē tiks atjaunināts %d paplašinājums." msgstr[1] "Nākamajā ierakstīšanās reizē tiks atjaunināts %d paplašinājumi." msgstr[2] "Nākamajā ierakstīšanās reizē tiks atjaunināts %d paplašinājumu." #: subprojects/extensions-app/data/ui/extension-row.ui:22 msgid "Error Details" msgstr "Vairāk par kļūdu" #: subprojects/extensions-app/data/ui/extension-row.ui:62 msgid "Updates Details" msgstr "Vairāk par atjauninājumu" #: subprojects/extensions-app/data/ui/extension-row.ui:72 msgid "" "A new version of this extension is ready and will be loaded on next login." msgstr "" "Šim paplašinājumam ir pieejama jauna versija, un tā tiks ielādēta nākamajā " "ierakstīšanās reizē." #: subprojects/extensions-app/data/ui/extension-row.ui:104 msgid "Extension Details" msgstr "Informācija par paplašinājumu" #: subprojects/extensions-app/data/ui/extension-row.ui:192 msgid "_Website" msgstr "_Tīmekļa vietne" #: subprojects/extensions-app/data/ui/extension-row.ui:219 msgid "_Settings" msgstr "Ie_statījumi" #: subprojects/extensions-app/data/ui/extension-row.ui:246 msgid "_Remove…" msgstr "_Izņemt…" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Keyboard Shortcuts" msgstr "Tastatūras īsinājumtaustiņi" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "Par paplašinājumiem" #: subprojects/extensions-app/data/ui/extensions-window.ui:64 msgid "Main Menu" msgstr "Galvenā izvēlne" #: subprojects/extensions-app/data/ui/extensions-window.ui:106 msgid "Search extensions" msgstr "Meklēšanas paplašinājumi" #: subprojects/extensions-app/data/ui/extensions-window.ui:134 msgid "_Extensions" msgstr "_Paplašinājumi" #: subprojects/extensions-app/data/ui/extensions-window.ui:139 msgid "More Information" msgstr "Vairāk informācijas" #: subprojects/extensions-app/data/ui/extensions-window.ui:151 msgid "" "Extensions can cause performance and stability issues. It is recommended to " "disable all extensions if you experience problems with your system." msgstr "" "Paplašinājumi var radīt problēmas ar veiktspēju un stabilitāti. Ja jūsu " "sistēmā rodas problēmas, ir ieteicams izslēgt visus paplašinājumus." #: subprojects/extensions-app/data/ui/extensions-window.ui:178 msgid "User Extensions" msgstr "Lietotāja paplašinājumi" #: subprojects/extensions-app/data/ui/extensions-window.ui:198 msgid "System Extensions" msgstr "Sistēmas paplašinājumi" #: subprojects/extensions-app/data/ui/extensions-window.ui:233 msgid "Search Results" msgstr "Meklēšanas rezultāti" #: subprojects/extensions-app/data/ui/extensions-window.ui:252 msgid "No Results Found" msgstr "Nav atrastu rezultātu" #: subprojects/extensions-app/data/ui/extensions-window.ui:253 #| msgid "Try a different search." msgid "Try a different search" msgstr "Mēģiniet ar citu meklējamo vārdu" #: subprojects/extensions-app/data/ui/extensions-window.ui:264 msgid "No Installed Extensions" msgstr "Nav instalētu paplašinājumu" #: subprojects/extensions-app/data/ui/extensions-window.ui:265 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" "Lai atrastu un pievienotu paplašinājumus, apmeklējiet extensions.gnome.org." #: subprojects/extensions-app/data/ui/extensions-window.ui:276 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" "Diemžēl nevar saņemt sarakstu ar instalētajiem paplašinājumiem. " "Pārliecinieties, ka esat ierakstījušies GNOME sesijā un mēģiniet vēlreiz." #: subprojects/extensions-app/data/ui/help-overlay.ui:9 msgctxt "shortcut window" msgid "General" msgstr "Vispārīgi" #: subprojects/extensions-app/data/ui/help-overlay.ui:12 msgctxt "shortcut window" msgid "Open Menu" msgstr "Atvērt izvēlni" #: subprojects/extensions-app/data/ui/help-overlay.ui:18 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Pārslēgt meklēšanu" #: subprojects/extensions-app/data/ui/help-overlay.ui:24 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Rādīt saīsnes" #: subprojects/extensions-app/data/ui/help-overlay.ui:30 msgctxt "shortcut window" msgid "Quit" msgstr "Iziet" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:284 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "Jaunais paplašinājumus tika veiksmīgi izveidots mapē %s.\n" #: subprojects/extensions-tool/src/command-create.c:376 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" "Nosaukumam ir jābūt ļoti īsam (vēlams aprakstošam).\n" "Piemēri: %s" #: subprojects/extensions-tool/src/command-create.c:382 #: subprojects/extensions-tool/src/main.c:243 msgid "Name" msgstr "Nosaukums" #: subprojects/extensions-tool/src/command-create.c:396 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" "Apraksts ir viena teikuma garš teksts, kas izskaidro, ko dara " "paplašinājums.\n" "Piemēri: %s" #: subprojects/extensions-tool/src/command-create.c:402 #: subprojects/extensions-tool/src/main.c:246 msgid "Description" msgstr "Apraksts" #: subprojects/extensions-tool/src/command-create.c:416 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" "UUID ir globāli unikāls identifikators paplašinājumam\n" "Tas var būt e-pasta adreses formā (annavanna@extensions.example.com)\n" #: subprojects/extensions-tool/src/command-create.c:443 msgid "Choose one of the available templates:\n" msgstr "Izvēlieties vienu no pieejamajām veidnēm\n" #: subprojects/extensions-tool/src/command-create.c:457 msgid "Template" msgstr "Veidne" #: subprojects/extensions-tool/src/command-create.c:515 msgid "The unique identifier of the new extension" msgstr "Jaunā paplašinājuma unikālais identifikators" #: subprojects/extensions-tool/src/command-create.c:518 msgid "NAME" msgstr "NOSAUKUMS" #: subprojects/extensions-tool/src/command-create.c:519 msgid "The user-visible name of the new extension" msgstr "Lietotājam redzamais jaunā paplašinājums nosaukums" #: subprojects/extensions-tool/src/command-create.c:521 msgid "DESCRIPTION" msgstr "APRAKSTS" #: subprojects/extensions-tool/src/command-create.c:523 msgid "A short description of what the extension does" msgstr "Īss teksts, kas apraksta, ko dara paplašinājumus" #: subprojects/extensions-tool/src/command-create.c:525 #: subprojects/extensions-tool/src/command-pack.c:455 msgid "DOMAIN" msgstr "DOMĒNS" #: subprojects/extensions-tool/src/command-create.c:527 msgid "The gettext domain used by the extension" msgstr "Paplašinājuma izmantotais gettext domēns" #: subprojects/extensions-tool/src/command-create.c:529 #: subprojects/extensions-tool/src/command-pack.c:448 msgid "SCHEMA" msgstr "SHĒMA" #: subprojects/extensions-tool/src/command-create.c:531 msgid "The GSettings schema used by the extension" msgstr "Paplašinājuma izmantotā GSettings shēma" #: subprojects/extensions-tool/src/command-create.c:534 msgid "TEMPLATE" msgstr "VEIDNE" #: subprojects/extensions-tool/src/command-create.c:535 msgid "The template to use for the new extension" msgstr "Lietotājam redzamais jaunā paplašinājuma nosaukums" #: subprojects/extensions-tool/src/command-create.c:538 msgid "Include prefs.js template" msgstr "Iekļaut prefs.js veidni" #: subprojects/extensions-tool/src/command-create.c:544 msgid "Enter extension information interactively" msgstr "Interaktīvi ievadiet informāciju par paplašinājumu" #: subprojects/extensions-tool/src/command-create.c:552 msgid "Create a new extension" msgstr "Izveidot jaunu paplašinājumu" #: subprojects/extensions-tool/src/command-create.c:570 #: subprojects/extensions-tool/src/command-list.c:190 msgid "Unknown arguments" msgstr "Nezināmi argumenti" #: subprojects/extensions-tool/src/command-create.c:595 msgid "UUID, name and description are required" msgstr "Nepieciešams UUID, nosaukums un apraksts" #: subprojects/extensions-tool/src/command-disable.c:62 #: subprojects/extensions-tool/src/command-enable.c:62 #, c-format msgid "Extension “%s” does not exist\n" msgstr "Paplašinājums \"%s\" neeksistē\n" #: subprojects/extensions-tool/src/command-disable.c:98 msgid "Disable an extension" msgstr "Izslēgt paplašinājumu" #: subprojects/extensions-tool/src/command-disable.c:116 #: subprojects/extensions-tool/src/command-enable.c:116 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "Nav norādīts UUID" #: subprojects/extensions-tool/src/command-disable.c:121 #: subprojects/extensions-tool/src/command-enable.c:121 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "Ir norādīts vairāk kā viens UUID" #: subprojects/extensions-tool/src/command-enable.c:98 msgid "Enable an extension" msgstr "Ieslēgt paplašinājumu" #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:66 #: subprojects/extensions-tool/src/main.c:150 msgid "Failed to connect to GNOME Shell\n" msgstr "Neizdevās savienoties ar GNOME čaulu\n" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:159 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "Paplašinājums \"%s\" neeksistē\n" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "Rādīt informāciju par paplašinājumu" #: subprojects/extensions-tool/src/command-install.c:190 msgid "Overwrite an existing extension" msgstr "Pārrakstīt esošo paplašinājumu" #: subprojects/extensions-tool/src/command-install.c:192 msgid "EXTENSION_BUNDLE" msgstr "PAPLAŠINĀJUMA_SAINIS" #: subprojects/extensions-tool/src/command-install.c:201 msgid "Install an extension bundle" msgstr "Instalēt paplašinājuma saini" #: subprojects/extensions-tool/src/command-install.c:219 msgid "No extension bundle specified" msgstr "Nav norādīt paplašinājuma sainis" #: subprojects/extensions-tool/src/command-install.c:225 msgid "More than one extension bundle specified" msgstr "Ir norādīts vairāk kā viens paplašinājuma sainis" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show user-installed extensions" msgstr "Rādīt lietotāja instalētus paplašinājumus" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show system-installed extensions" msgstr "Rādīt sistēmas instalētus paplašinājumus" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Show enabled extensions" msgstr "Rādīt ieslēgtos paplašinājumus" #: subprojects/extensions-tool/src/command-list.c:149 msgid "Show disabled extensions" msgstr "Rādīt izslēgtos paplašinājumus" #: subprojects/extensions-tool/src/command-list.c:152 msgid "Show extensions in active state" msgstr "Rādīt aktīvos paplašinājumus" #: subprojects/extensions-tool/src/command-list.c:155 msgid "Show extensions in inactive state" msgstr "Rādīt neaktīvos paplašinājumus" #: subprojects/extensions-tool/src/command-list.c:158 msgid "Show extensions with preferences" msgstr "Rādīt paplašinājumus ar iestatījumiem" #: subprojects/extensions-tool/src/command-list.c:161 msgid "Show extensions with updates" msgstr "Rādīt paplašinājumus ar atjauninājumiem" #: subprojects/extensions-tool/src/command-list.c:164 msgid "Print extension details" msgstr "Izdrukāt informāciju par paplašinājumu" #: subprojects/extensions-tool/src/command-list.c:172 msgid "List installed extensions" msgstr "Rādīt instalētos paplašinājumus" #: subprojects/extensions-tool/src/command-pack.c:444 msgid "FILE" msgstr "DATNE" #: subprojects/extensions-tool/src/command-pack.c:445 msgid "Additional source to include in the bundle" msgstr "Papildu avots, ko iekļaut šajā sainī" #: subprojects/extensions-tool/src/command-pack.c:449 msgid "A GSettings schema that should be included" msgstr "GSettings shēma, kas ir jāiekļauj" #: subprojects/extensions-tool/src/command-pack.c:451 #: subprojects/extensions-tool/src/command-pack.c:462 msgid "DIRECTORY" msgstr "DIREKTORIJS" #: subprojects/extensions-tool/src/command-pack.c:453 msgid "The directory where translations are found" msgstr "Direktorijs, kurā ir tulkojumi" #: subprojects/extensions-tool/src/command-pack.c:457 msgid "The gettext domain to use for translations" msgstr "Tulkošanai izmantojamais gettext domēns" #: subprojects/extensions-tool/src/command-pack.c:460 msgid "Overwrite an existing pack" msgstr "Pārrakstīt esošo paku" #: subprojects/extensions-tool/src/command-pack.c:464 msgid "The directory where the pack should be created" msgstr "Direktorijs, kurā jāizveido paka" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "SOURCE_DIRECTORY" msgstr "AVOTA_DIREKTORIJS" #: subprojects/extensions-tool/src/command-pack.c:475 msgid "Create an extension bundle" msgstr "Izveidot paplašinājuma saini" #: subprojects/extensions-tool/src/command-pack.c:495 msgid "More than one source directory specified" msgstr "Ir norādīts vairāk kā viens avota direktorijs" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "Paplašinājumam “%s” nav iestatījumi\n" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "Neizdevās atvērt paplašinājuma “%s” iestatījumus: %s\n" #: subprojects/extensions-tool/src/command-prefs.c:87 msgid "Opens extension preferences" msgstr "Atver paplašinājuma iestatījumus" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "Pārstatīt paplašinājumu" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "Nevar atinstalēt sistēmas paplašinājumus\n" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "Neizdevās atinstalēt “%s”\n" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "Atinstalēt paplašinājumu" #: subprojects/extensions-tool/src/main.c:76 msgid "Do not print error messages" msgstr "Nedrukāt kļūdu paziņojumus" #: subprojects/extensions-tool/src/main.c:249 msgid "Path" msgstr "Ceļš" #: subprojects/extensions-tool/src/main.c:252 msgid "URL" msgstr "URL" #: subprojects/extensions-tool/src/main.c:255 msgid "Original author" msgstr "Sākotnējais autors" #: subprojects/extensions-tool/src/main.c:261 #: subprojects/extensions-tool/src/main.c:263 #: subprojects/extensions-tool/src/main.c:265 msgid "Version" msgstr "Versija" #: subprojects/extensions-tool/src/main.c:268 msgid "Enabled" msgstr "Aktivēta" #: subprojects/extensions-tool/src/main.c:268 msgid "Yes" msgstr "Jā" #: subprojects/extensions-tool/src/main.c:268 msgid "No" msgstr "Nē" #: subprojects/extensions-tool/src/main.c:271 msgid "State" msgstr "Stāvoklis" #: subprojects/extensions-tool/src/main.c:309 msgid "“version” takes no arguments" msgstr "“version” nepieņem argumentus" #: subprojects/extensions-tool/src/main.c:311 #: subprojects/extensions-tool/src/main.c:331 msgid "Usage:" msgstr "Lietošana:" #: subprojects/extensions-tool/src/main.c:314 msgid "Print version information and exit." msgstr "Parādīt informāciju par versiju un iziet." #: subprojects/extensions-tool/src/main.c:329 #: subprojects/extensions-tool/src/main.c:332 msgid "COMMAND" msgstr "KOMANDA" #: subprojects/extensions-tool/src/main.c:332 msgid "[ARGS…]" msgstr "[ARG…]" #: subprojects/extensions-tool/src/main.c:334 msgid "Commands:" msgstr "Komandas:" #: subprojects/extensions-tool/src/main.c:335 msgid "Print help" msgstr "Drukāt palīdzību" #: subprojects/extensions-tool/src/main.c:337 msgid "Enable extension" msgstr "Ieslēgt paplašinājumu" #: subprojects/extensions-tool/src/main.c:338 msgid "Disable extension" msgstr "Izslēgt paplašinājumu" #: subprojects/extensions-tool/src/main.c:339 msgid "Reset extension" msgstr "Pārstatīt paplašinājumu" #: subprojects/extensions-tool/src/main.c:340 msgid "Uninstall extension" msgstr "Atinstalēt paplašinājumu" #: subprojects/extensions-tool/src/main.c:341 msgid "List extensions" msgstr "Uzskaitīt paplašinājumus" #: subprojects/extensions-tool/src/main.c:342 #: subprojects/extensions-tool/src/main.c:343 msgid "Show extension info" msgstr "Rādīt informāciju par paplašinājumu" #: subprojects/extensions-tool/src/main.c:344 msgid "Open extension preferences" msgstr "Atvērt paplašinājuma iestatījumus" #: subprojects/extensions-tool/src/main.c:345 msgid "Create extension" msgstr "Izveidot paplašinājumu" #: subprojects/extensions-tool/src/main.c:346 msgid "Package extension" msgstr "Pakot paplašinājumu" #: subprojects/extensions-tool/src/main.c:347 msgid "Install extension bundle" msgstr "Instalēt paplašinājuma saini" #: subprojects/extensions-tool/src/main.c:349 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "Lietojiet “%s”, lai iegūtu detalizētu palīdzību.\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "Vienkāršs" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "Tukšs paplašinājums" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "Indikators" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "Pievienot ikonu augšējā joslā" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:4 msgid "Quick Settings Item" msgstr "Ātro iestatījumu vienums" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:5 msgid "Add an item to quick settings" msgstr "Pievienot vienumu pie ātrajiem iestatījumiem" #. translators: #. * The device has been disabled #: subprojects/gvc/gvc-mixer-control.c:1872 msgid "Disabled" msgstr "Deaktivēta" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1879 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u izvadkanāls" msgstr[1] "%u izvadkanāli" msgstr[2] "%u izvadkanāli" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1889 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u ievadkanāls" msgstr[1] "%u ievadkanāli" msgstr[2] "%u ievadkanāli" #: subprojects/gvc/gvc-mixer-control.c:2872 msgid "System Sounds" msgstr "Sistēmas skaņas" #, javascript-format #~ msgid "Try to login again to start a session for user %s." #~ msgstr "Mēģiniet vēlreiz ierakstīties, lai sāktu sesiju lietotājam %s." #~ msgid "Move Titlebar Onscreen" #~ msgstr "Pārvietot virsraksta joslu uz ekrāna" #, javascript-format #~ msgid "%s is now known as %s" #~ msgstr "%s tagad zināms kā %s" #~ msgid "Network Manager" #~ msgstr "Tīkla pārvaldnieks" #~ msgid "Disabling" #~ msgstr "Izslēdz" #~ msgid "Enabling" #~ msgstr "Ieslēdz" #, javascript-format #~ msgid "%d %%" #~ msgstr "%d %%" #~ msgid "Thunderbolt" #~ msgstr "Thunderbolt" #~ msgid "No Thanks" #~ msgstr "Nē, paldies" #~ msgid "No Matches" #~ msgstr "Nekas neatbilst" #~ msgid "The extension had an error" #~ msgstr "Paplašinājumam gadījās kļūda" #~ msgid "The extension can be updated" #~ msgstr "Paplašinājumu var atjaunināt" #~ msgid "Help" #~ msgstr "Palīdzība" #~ msgid "Manually Installed" #~ msgstr "Pašrocīgi instalētie" #~ msgid "Built-In" #~ msgstr "Iebūvētie" #~ msgid "Extension Updates Ready" #~ msgstr "Paplašinājumu atjauninājumi ir gatavi" #~ msgid "Screenshot / Screencast" #~ msgstr "Ekrānattēls / ekrānieraksts" #~ msgid "Power Profiles" #~ msgstr "Jaudas profili" #~ msgid "" #~ "Whether the default Bluetooth adapter had set up devices associated to it" #~ msgstr "" #~ "Vai noklusējuma Bluetooth adapterim ir iestatītas ar to asociētās ierīces" #~ msgid "" #~ "The shell will only show a Bluetooth menu item if a Bluetooth adapter is " #~ "powered, or if there were devices set up associated with the default " #~ "adapter. This will be reset if the default adapter is ever seen not to " #~ "have devices associated to it." #~ msgstr "" #~ "Čaula rādīs Bluetooth izvēlnes vienumu tikai tad, ja Bluetooth adapteris " #~ "ir ieslēgts vai ja ir iestatītas ierīces, kas ir saistītas ar noklusējuma " #~ "adapteri. Tas tiks atiestatīts, ja noklusējuma adapteris jebkad tiks " #~ "redzēts bez saistītajām ierīcēm." #~ msgid "Attach modal dialog to the parent window" #~ msgstr "Pievienot modālo dialoglodziņu vecāka logam" #~ msgid "" #~ "This key overrides the key in org.gnome.mutter when running GNOME Shell." #~ msgstr "" #~ "Šī atslēga pārraksta org.gnome.mutter atslēgu, darbinot GNOME čaulu." #~ msgid "Enable edge tiling when dropping windows on screen edges" #~ msgstr "Aktivēt logu sānisko izklāšanu, kad to nomet uz ekrāna malas" #~ msgid "Workspaces are managed dynamically" #~ msgstr "Darbvietas tiek pārvaldītas dinamiski" #~ msgid "Workspaces only on primary monitor" #~ msgstr "Darbvietas tikai uz galvenā monitora" #~ msgid "Delay focus changes in mouse mode until the pointer stops moving" #~ msgstr "" #~ "Peles režīmā aizkavēt fokusa izmaiņas, līdz rādītājs pārstāj kustēties" #~ msgid "Region & Language Settings" #~ msgstr "Vietas un valodas iestatījumi" #~ msgid "Applications" #~ msgstr "Lietotnes" #, javascript-format #~ msgid "Unable to start %s" #~ msgstr "Nevar palaist %s" #, javascript-format #~ msgid "Couldn’t find the %s application" #~ msgstr "Nevarēja atrast %s lietotni" #~ msgid "Log Out" #~ msgstr "Izrakstīties" #~ msgid "Evolution Calendar" #~ msgstr "Evolution kalendārs" #~ msgid "Bluetooth On" #~ msgstr "Bluetooth ieslēgts" #~ msgid "Bluetooth Off" #~ msgstr "Bluetooth izslēgts" #~ msgid "Location In Use" #~ msgstr "Atrašanās vieta tiek izmantota" #~ msgid "Location Disabled" #~ msgstr "Atrašanās vieta ir izslēgta" #, javascript-format #~ msgid "%s Off" #~ msgstr "%s ir izslēgta" #, javascript-format #~ msgid "%s Connected" #~ msgstr "%s ir savienots" #, javascript-format #~ msgid "%s Unmanaged" #~ msgstr "%s nav pārvaldīts" #, javascript-format #~ msgid "%s Connecting" #~ msgstr "%s savienojas" #, javascript-format #~ msgid "%s Requires Authentication" #~ msgstr "%s pieprasa autentificēšanos" #, javascript-format #~ msgid "Firmware Missing For %s" #~ msgstr "%s trūkst aparātprogrammatūras" #, javascript-format #~ msgid "%s Unavailable" #~ msgstr "%s nav pieejams" #, javascript-format #~ msgid "%s Connection Failed" #~ msgstr "%s neizdevās savienoties" #, javascript-format #~ msgid "%s Hardware Disabled" #~ msgstr "%s ir izslēgts aparatūrā" #, javascript-format #~ msgid "%s Disabled" #~ msgstr "%s ir izslēgts" #~ msgid "Connect to Internet" #~ msgstr "Savienoties ar internetu" #~ msgid "Airplane Mode is On" #~ msgstr "Lidmašīnas režīms ir ieslēgts" #~ msgid "Wi-Fi is disabled when airplane mode is on." #~ msgstr "Wi-Fi tiek izslēgts, kad ir ieslēgts lidmašīnas režīms." #~ msgid "Turn Off Airplane Mode" #~ msgstr "Izslēgt lidmašīnas režīmu" #~ msgid "Wi-Fi is Off" #~ msgstr "Wi-Fi ir izslēgts" #~ msgid "Wi-Fi needs to be turned on in order to connect to a network." #~ msgstr "Lai savienotos ar tīklu, jāieslēdz Wi-Fi." #~ msgid "Turn On Wi-Fi" #~ msgstr "Ieslēgt Wi-Fi" #~ msgid "Select a network" #~ msgstr "Izvēlieties tīklu" #~ msgid "Use hardware switch to turn off" #~ msgstr "Lai izslēgtu, izmantot aparatūras slēdzi" #~ msgid "Select Network" #~ msgstr "Izvēlieties tīklu" #~ msgid "Wi-Fi Settings" #~ msgstr "Wi-Fi iestatījumi" #, javascript-format #~ msgid "%s Not Connected" #~ msgstr "%s nav savienots" #~ msgid "connecting…" #~ msgstr "savienojas…" #~ msgid "authentication required" #~ msgstr "nepieciešama autentifikācija" #~ msgid "connection failed" #~ msgstr "savienojums neizdevās" #~ msgid "VPN Off" #~ msgstr "VPN ir izslēgts" #, javascript-format #~ msgid "%s Wi-Fi Connection" #~ msgid_plural "%s Wi-Fi Connections" #~ msgstr[0] "%s Wi-Fi savienojums" #~ msgstr[1] "%s Wi-Fi savienojumi" #~ msgstr[2] "%s Wi-Fi savienojumu" #~ msgid "Night Light Disabled" #~ msgstr "Nakts gaisma ir izslēgta" #~ msgid "Resume" #~ msgstr "Turpināt" #~ msgid "Disable Until Tomorrow" #~ msgstr "Izslēgt līdz rītdienai" #~ msgid "Fully Charged" #~ msgstr "Pilnībā uzlādēta" #~ msgid "Not Charging" #~ msgstr "Nelādējas" #~ msgid "Estimating…" #~ msgstr "Novērtē…" #, javascript-format #~ msgid "%d∶%02d Remaining (%d %%)" #~ msgstr "Atlicis %d.%02d (%d %%)" #, javascript-format #~ msgid "%d∶%02d Until Full (%d %%)" #~ msgstr "Līdz pilnai %d.%02d (%d %%)" #~ msgid "Screen is Being Shared" #~ msgstr "Ekrāns tiek koplietots" #~ msgid "Turn off" #~ msgstr "Izslēgt" #~ msgid "Lock" #~ msgstr "Bloķēt" #~ msgid "Power Off / Log Out" #~ msgstr "Izslēgt / izrakstīties" #~ msgid "Remove from Favorites" #~ msgstr "Izņemt no izlases" #~ msgid "Add to Favorites" #~ msgstr "Pievienot izlasei" #~ msgid "Author" #~ msgstr "Autors" #~ msgid "Warning" #~ msgstr "Brīdinājums" #~ msgid "" #~ "Extensions can cause system issues, including performance problems. If " #~ "you encounter problems with your system, it is recommended to disable all " #~ "extensions." #~ msgstr "" #~ "Paplašinājumi var radīt problēmas, piemēram, ar veiktspēju. Ja jūsu " #~ "sistēmā rodas problēmas, vēlams izslēgt visus paplašinājumus." #~ msgid "Failed to connect to GNOME Shell" #~ msgstr "Neizdevās savienoties ar GNOME čaulu" #~ msgid "Enable introspection API" #~ msgstr "Ieslēgt introspekcijas API" #~ msgid "" #~ "Enables a D-Bus API that allows to introspect the application state of " #~ "the shell." #~ msgstr "Ieslēdz D-Bus API, kas ļauj izpētīt lietotnes stāvokli." #~ msgid "Minimize" #~ msgstr "Minimizēt" #~ msgid "Unmaximize" #~ msgstr "Atjaunot" #~ msgid "App Picker View" #~ msgstr "Lietotņu izvēles skats" #~ msgid "Index of the currently selected view in the application picker." #~ msgstr "Pašlaik izvēlētā skata rādītājs lietotņu izvēlē." #~ msgid "Frequently used applications will appear here" #~ msgstr "Šeit parādīsies biežāk izmantotās lietotnes" #~ msgid "Frequent" #~ msgstr "Biežāk izmantotās" #~ msgid "All" #~ msgstr "Visas" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d" #~ msgstr "%A, %-d. %B" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d, %Y" #~ msgstr "%A, %-d. %B, %Y." #~ msgid "On" #~ msgstr "Ieslēgts" #~ msgid "Copy Error" #~ msgstr "Kopēšanas kļūda" #~ msgid "Browse in Software" #~ msgstr "Pārlūkot “Programmatūrā”" #~ msgid "Next" #~ msgstr "Nākamais" #~ msgctxt "button" #~ msgid "Sign In" #~ msgstr "Ierakstīties" #~ msgid "Password:" #~ msgstr "Parole:" #~ msgid "Type again:" #~ msgstr "Ierakstiet vēlreiz:" #~ msgid "Password: " #~ msgstr "Parole: " #~ msgid "Authentication required by wireless network" #~ msgstr "Bezvadu tīkls pieprasa autentifikāciju" #~ msgid "Mobile broadband network password" #~ msgstr "Mobilās platjoslas tīkla parole" #~ msgid "%A, %B %d" #~ msgstr "%A, %d. %B" #~ msgid "%d new message" #~ msgid_plural "%d new messages" #~ msgstr[0] "%d jauns ziņojums" #~ msgstr[1] "%d jauni ziņojumi" #~ msgstr[2] "%d jaunu ziņojumu" #~ msgid "Account Settings" #~ msgstr "Konta iestatījumi" #~ msgid "Orientation Lock" #~ msgstr "Orientācijas slēdzis" #~ msgid "" #~ "Keybinding that pauses and resumes all running tweens, for debugging " #~ "purposes" #~ msgstr "" #~ "Taustiņu sasaiste, kas pauzē un turpina visus tvīnus (tweens) " #~ "atkļūdošanas nolūkiem" #~ msgid "Which keyboard to use" #~ msgstr "Kuru tastatūru izmantot" #~ msgid "The type of keyboard to use." #~ msgstr "Izmantojamās tastatūras tips." #~ msgid "network-workgroup" #~ msgstr "network-workgroup" #~ msgid "toggle-switch-us" #~ msgstr "toggle-switch-intl" #~ msgid "There was an error loading the preferences dialog for %s:" #~ msgstr "Ielādējot %s iestatījumu dialogu, gadījās kļūda:" #~ msgid "%s all day." #~ msgstr "%s visu dienu." #~ msgid "%s, then %s later." #~ msgstr "%s, pēc tam %s." #~ msgid "%s, then %s, followed by %s later." #~ msgstr "%s, pēc tam %s, vēl pēc tam %s." #~ msgid "Feels like %s." #~ msgstr "Komforta temperatūra %s." 0707010000024B000081A40000000000000000000000016712993F00000033000000000000000000000000000000000000002000000000gnome-shell-47.1/po/meson.buildi18n.gettext(meson.project_name(), preset: 'glib') 0707010000024C000081A40000000000000000000000016712993F0001113C000000000000000000000000000000000000001B00000000gnome-shell-47.1/po/mjw.po# Karbi translation for gnome-shell. # Copyright (C) 2019 nautilus-shell's The Gnome Foundation. # This file is distributed under the same license as the gnome-shell package. # Jor Teron , 2019-20. # msgid "" msgstr "" "Project-Id-Version: gnome-shell master\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" "POT-Creation-Date: 2020-02-22 15:36+0000\n" "PO-Revision-Date: 2020-02-22 21:44+0530\n" "Last-Translator: Jor Teron \n" "Language-Team: Karbi \n" "Language: mjw\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:Gedit \n" #: data/50-gnome-shell-system.xml:6 msgid "System" msgstr "System" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "Notification list ke paklang" #: data/50-gnome-shell-system.xml:12 msgid "Focus the active notification" msgstr "Non-het notification ke paklang" #: data/50-gnome-shell-system.xml:15 msgid "Show the overview" msgstr "Kado-kawe" #: data/50-gnome-shell-system.xml:18 msgid "Show all applications" msgstr "Kado-kawe applications ke-paklang" #: data/50-gnome-shell-system.xml:21 msgid "Open the application menu" msgstr "Application ason-amung kangpu" #: data/org.gnome.Extensions.desktop.in.in:4 js/extensionPrefs/main.js:218 #: js/extensionPrefs/ui/extensions-window.ui:61 msgid "Extensions" msgstr "Extensions" #: data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "GNOME Shell" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" #: data/org.gnome.shell.gschema.xml.in:45 msgid "Disables the validation of extension version compatibility" msgstr "" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" #: data/org.gnome.shell.gschema.xml.in:54 msgid "List of desktop file IDs for favorite applications" msgstr "" #: data/org.gnome.shell.gschema.xml.in:55 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" #: data/org.gnome.shell.gschema.xml.in:62 msgid "App Picker View" msgstr "" #: data/org.gnome.shell.gschema.xml.in:63 msgid "Index of the currently selected view in the application picker." msgstr "" #: data/org.gnome.shell.gschema.xml.in:69 msgid "History for command (Alt-F2) dialog" msgstr "" #. Translators: looking glass is a debugger and inspector tool, see https://wiki.gnome.org/Projects/GnomeShell/LookingGlass #: data/org.gnome.shell.gschema.xml.in:74 msgid "History for the looking glass dialog" msgstr "" #: data/org.gnome.shell.gschema.xml.in:78 msgid "Always show the “Log out” menu item in the user menu." msgstr "“Log out” menu user menu along do vek nangji." #: data/org.gnome.shell.gschema.xml.in:79 msgid "" "This key overrides the automatic hiding of the “Log out” menu item in single-" "user, single-session situations." msgstr "" #: data/org.gnome.shell.gschema.xml.in:86 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" #: data/org.gnome.shell.gschema.xml.in:87 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" #: data/org.gnome.shell.gschema.xml.in:96 msgid "" "Whether the default Bluetooth adapter had set up devices associated to it" msgstr "" #: data/org.gnome.shell.gschema.xml.in:97 msgid "" "The shell will only show a Bluetooth menu item if a Bluetooth adapter is " "powered, or if there were devices set up associated with the default " "adapter. This will be reset if the default adapter is ever seen not to have " "devices associated to it." msgstr "" #: data/org.gnome.shell.gschema.xml.in:106 msgid "Enable introspection API" msgstr "" #: data/org.gnome.shell.gschema.xml.in:107 msgid "" "Enables a D-Bus API that allows to introspect the application state of the " "shell." msgstr "" #: data/org.gnome.shell.gschema.xml.in:119 msgid "Keybinding to open the application menu" msgstr "" #: data/org.gnome.shell.gschema.xml.in:120 msgid "Keybinding to open the application menu." msgstr "" #: data/org.gnome.shell.gschema.xml.in:126 msgid "Keybinding to open the “Show Applications” view" msgstr "" #: data/org.gnome.shell.gschema.xml.in:127 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "" #: data/org.gnome.shell.gschema.xml.in:134 msgid "Keybinding to open the overview" msgstr "" #: data/org.gnome.shell.gschema.xml.in:135 msgid "Keybinding to open the Activities Overview." msgstr "" #: data/org.gnome.shell.gschema.xml.in:141 msgid "Keybinding to toggle the visibility of the notification list" msgstr "" #: data/org.gnome.shell.gschema.xml.in:142 msgid "Keybinding to toggle the visibility of the notification list." msgstr "" #: data/org.gnome.shell.gschema.xml.in:148 msgid "Keybinding to focus the active notification" msgstr "" #: data/org.gnome.shell.gschema.xml.in:149 msgid "Keybinding to focus the active notification." msgstr "" #: data/org.gnome.shell.gschema.xml.in:155 msgid "Switch to application 1" msgstr "" #: data/org.gnome.shell.gschema.xml.in:159 msgid "Switch to application 2" msgstr "" #: data/org.gnome.shell.gschema.xml.in:163 msgid "Switch to application 3" msgstr "" #: data/org.gnome.shell.gschema.xml.in:167 msgid "Switch to application 4" msgstr "" #: data/org.gnome.shell.gschema.xml.in:171 msgid "Switch to application 5" msgstr "" #: data/org.gnome.shell.gschema.xml.in:175 msgid "Switch to application 6" msgstr "" #: data/org.gnome.shell.gschema.xml.in:179 msgid "Switch to application 7" msgstr "" #: data/org.gnome.shell.gschema.xml.in:183 msgid "Switch to application 8" msgstr "" #: data/org.gnome.shell.gschema.xml.in:187 msgid "Switch to application 9" msgstr "" #: data/org.gnome.shell.gschema.xml.in:196 #: data/org.gnome.shell.gschema.xml.in:223 msgid "Limit switcher to current workspace." msgstr "" #: data/org.gnome.shell.gschema.xml.in:197 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" #: data/org.gnome.shell.gschema.xml.in:214 msgid "The application icon mode." msgstr "" #: data/org.gnome.shell.gschema.xml.in:215 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-" "only” (shows only the application icon) or “both”." msgstr "" #: data/org.gnome.shell.gschema.xml.in:224 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" #: data/org.gnome.shell.gschema.xml.in:234 msgid "Locations" msgstr "Dim" #: data/org.gnome.shell.gschema.xml.in:235 msgid "The locations to show in world clocks" msgstr "" #: data/org.gnome.shell.gschema.xml.in:245 msgid "Automatic location" msgstr "" #: data/org.gnome.shell.gschema.xml.in:246 msgid "Whether to fetch the current location or not" msgstr "" #: data/org.gnome.shell.gschema.xml.in:253 msgid "Location" msgstr "Dim" #: data/org.gnome.shell.gschema.xml.in:254 msgid "The location for which to show a forecast" msgstr "" #: data/org.gnome.shell.gschema.xml.in:266 msgid "Attach modal dialog to the parent window" msgstr "" #: data/org.gnome.shell.gschema.xml.in:267 #: data/org.gnome.shell.gschema.xml.in:276 #: data/org.gnome.shell.gschema.xml.in:284 #: data/org.gnome.shell.gschema.xml.in:292 #: data/org.gnome.shell.gschema.xml.in:300 msgid "" "This key overrides the key in org.gnome.mutter when running GNOME Shell." msgstr "" #: data/org.gnome.shell.gschema.xml.in:275 msgid "Enable edge tiling when dropping windows on screen edges" msgstr "" #: data/org.gnome.shell.gschema.xml.in:283 msgid "Workspaces are managed dynamically" msgstr "" #: data/org.gnome.shell.gschema.xml.in:291 msgid "Workspaces only on primary monitor" msgstr "" #: data/org.gnome.shell.gschema.xml.in:299 msgid "Delay focus changes in mouse mode until the pointer stops moving" msgstr "" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "Network Login" #: js/extensionPrefs/main.js:140 #, javascript-format msgid "Remove “%s”?" msgstr "" #: js/extensionPrefs/main.js:141 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "" #: js/extensionPrefs/main.js:144 js/ui/audioDeviceSelection.js:57 #: js/ui/components/networkAgent.js:107 js/ui/components/polkitAgent.js:139 #: js/ui/endSessionDialog.js:374 js/ui/extensionDownloader.js:165 #: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386 #: js/ui/status/network.js:913 msgid "Cancel" msgstr "Kethan" #: js/extensionPrefs/main.js:145 msgid "Remove" msgstr "" #: js/extensionPrefs/main.js:217 msgid "translator-credits" msgstr "" #: js/extensionPrefs/main.js:219 msgid "Manage your GNOME Extensions" msgstr "" #: js/extensionPrefs/main.js:261 js/extensionPrefs/ui/extensions-window.ui:222 msgid "Something’s gone wrong" msgstr "Kopine chokche det" #: js/extensionPrefs/main.js:268 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" #: js/extensionPrefs/main.js:275 msgid "Technical Details" msgstr "" #: js/extensionPrefs/main.js:310 msgid "Copy Error" msgstr "" #: js/extensionPrefs/main.js:337 msgid "Homepage" msgstr "Homepage" #: js/extensionPrefs/main.js:338 msgid "Visit extension homepage" msgstr "Extensions homepage lang rei tha" #: js/extensionPrefs/main.js:449 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "" msgstr[1] "" #: js/extensionPrefs/ui/extension-row.ui:100 #: subprojects/extensions-tool/src/command-create.c:211 #: subprojects/extensions-tool/src/main.c:173 msgid "Description" msgstr "" #: js/extensionPrefs/ui/extension-row.ui:123 #: subprojects/extensions-tool/src/main.c:185 msgid "Version" msgstr "" #: js/extensionPrefs/ui/extension-row.ui:151 msgid "Author" msgstr "" #: js/extensionPrefs/ui/extension-row.ui:175 msgid "Website" msgstr "" #: js/extensionPrefs/ui/extension-row.ui:192 msgid "Remove…" msgstr "" #: js/extensionPrefs/ui/extensions-window.ui:8 msgid "Help" msgstr "" #: js/extensionPrefs/ui/extensions-window.ui:12 msgid "About Extensions" msgstr "Extensions Aputhak" #: js/extensionPrefs/ui/extensions-window.ui:27 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" #: js/extensionPrefs/ui/extensions-window.ui:35 msgid "Warning" msgstr "" #: js/extensionPrefs/ui/extensions-window.ui:46 msgid "" "Extensions can cause system issues, including performance problems. If you " "encounter problems with your system, it is recommended to disable all " "extensions." msgstr "" #: js/extensionPrefs/ui/extensions-window.ui:133 msgid "Manually Installed" msgstr "" #: js/extensionPrefs/ui/extensions-window.ui:157 msgid "Built-In" msgstr "" #: js/extensionPrefs/ui/extensions-window.ui:198 msgid "No Installed Extensions" msgstr "Extension thapthe lang" #: js/extensionPrefs/ui/extensions-window.ui:234 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" #: js/extensionPrefs/ui/extensions-window.ui:287 msgid "Log Out…" msgstr "Hong ke-tet…" #. Cisco LEAP #: js/gdm/authPrompt.js:236 js/ui/components/networkAgent.js:202 #: js/ui/components/networkAgent.js:218 js/ui/components/networkAgent.js:242 #: js/ui/components/networkAgent.js:263 js/ui/components/networkAgent.js:283 #: js/ui/components/networkAgent.js:293 js/ui/components/polkitAgent.js:277 #: js/ui/shellMountOperation.js:326 msgid "Password" msgstr "Password" #: js/gdm/loginDialog.js:318 msgid "Choose Session" msgstr "Session ingvai nangji" #: js/gdm/loginDialog.js:457 msgid "Not listed?" msgstr "List long awe?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:912 #, javascript-format msgid "(e.g., user or %s)" msgstr "(e.g., user mate %s)" #. TTLS and PEAP are actually much more complicated, but this complication #. is not visible here since we only care about phase2 authentication #. (and don't even care of which one) #: js/gdm/loginDialog.js:917 js/ui/components/networkAgent.js:238 #: js/ui/components/networkAgent.js:261 js/ui/components/networkAgent.js:279 msgid "Username" msgstr "Username" #: js/gdm/loginDialog.js:1253 msgid "Login Window" msgstr "Login Window" #: js/gdm/util.js:338 msgid "Authentication error" msgstr "Hovang chokche" #. We don't show fingerprint messages directly since it's #. not the main auth service. Instead we use the messages #. as a cue to display our own message. #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger instead #: js/gdm/util.js:473 msgid "(or swipe finger)" msgstr "" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:89 msgctxt "search-result" msgid "Power Off" msgstr "Power Off" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:92 msgid "power off;shutdown;reboot;restart;halt;stop" msgstr "power off;shutdown;reboot;restart;halt;stop" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:97 msgctxt "search-result" msgid "Lock Screen" msgstr "Screen kanghap" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:100 msgid "lock screen" msgstr "Screen kanghap" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:105 msgctxt "search-result" msgid "Log Out" msgstr "Log Out" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:108 msgid "logout;log out;sign off" msgstr "logout;log out;sign off" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:113 msgctxt "search-result" msgid "Suspend" msgstr "Suspend" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:116 msgid "suspend;sleep" msgstr "suspend;sleep" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:121 msgctxt "search-result" msgid "Switch User" msgstr "Monit chelar" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:124 msgid "switch user" msgstr "monit chelar" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:131 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "lock orientation;unlock orientation;screen;rotation" #: js/misc/systemActions.js:251 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "Unlock Screen Rotation" #: js/misc/systemActions.js:252 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "Lock Screen Rotation" #: js/misc/util.js:120 msgid "Command not found" msgstr "Command longle" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:156 msgid "Could not parse command:" msgstr "Command chokche:" #: js/misc/util.js:164 #, javascript-format msgid "Execution of “%s” failed:" msgstr "" #: js/misc/util.js:181 msgid "Just now" msgstr "Non het" #: js/misc/util.js:183 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d minute aphrang" msgstr[1] "%d minute aphrang" #: js/misc/util.js:187 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "Porphai %d aphrang" msgstr[1] "Porphai %d aphrang" #: js/misc/util.js:191 msgid "Yesterday" msgstr "Tumi" #: js/misc/util.js:193 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "Ni %d aphrang" msgstr[1] "Ni %d aphrang" #: js/misc/util.js:197 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "Rui %d aphrang" msgstr[1] "Rui %d aphrang" #: js/misc/util.js:201 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "Cheklo %d aphrang" msgstr[1] "Cheklo %d aphrang" #: js/misc/util.js:204 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "Ningkan %d aphrang" msgstr[1] "Ningkan %d aphrang" #. Translators: Time in 24h format #: js/misc/util.js:237 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/util.js:243 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "Tumi, %H∶%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/util.js:249 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/util.js:255 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%d %B, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/util.js:261 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%d %B, %Y, %H∶%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/util.js:266 msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/util.js:272 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "Tumi, %l∶%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/util.js:278 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/util.js:284 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%d %B, %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/util.js:290 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%d %B, %Y, %l∶%M %p" #. TRANSLATORS: this is the title of the wifi captive portal login window #: js/portalHelper/main.js:41 msgid "Hotspot Login" msgstr "Hotspot Login" #: js/portalHelper/main.js:87 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:39 js/ui/status/location.js:374 msgid "Deny Access" msgstr "Hovang Longle" #: js/ui/accessDialog.js:40 js/ui/status/location.js:377 msgid "Grant Access" msgstr "Hovang Long" #: js/ui/appDisplay.js:906 msgid "Unnamed Folder" msgstr "" #: js/ui/appDisplay.js:929 msgid "Frequently used applications will appear here" msgstr "ke lang ver applications la dak klang ik po" #: js/ui/appDisplay.js:1064 msgid "Frequent" msgstr "" #: js/ui/appDisplay.js:1071 msgid "All" msgstr "Kado-kawe" #. Translators: This is the heading of a list of open windows #: js/ui/appDisplay.js:2450 js/ui/panel.js:75 msgid "Open Windows" msgstr "Windows kangpu" #: js/ui/appDisplay.js:2470 js/ui/panel.js:82 msgid "New Window" msgstr "Windows kimi" #: js/ui/appDisplay.js:2481 msgid "Launch using Dedicated Graphics Card" msgstr "Dedicated Graphics Card pen kangpu" #: js/ui/appDisplay.js:2509 js/ui/dash.js:239 msgid "Remove from Favorites" msgstr "Favourites long pen musi noi" #: js/ui/appDisplay.js:2515 msgid "Add to Favorites" msgstr "Favorites long thap noi" #: js/ui/appDisplay.js:2525 js/ui/panel.js:93 msgid "Show Details" msgstr "Details ke-lang" #: js/ui/appFavorites.js:152 #, javascript-format msgid "%s has been added to your favorites." msgstr "%s nangli favourites along thap ed lo." #: js/ui/appFavorites.js:185 #, javascript-format msgid "%s has been removed from your favorites." msgstr "%s nangli favourites pen musi ed lo." #: js/ui/audioDeviceSelection.js:41 msgid "Select Audio Device" msgstr "Audio Device ingvai tha" #: js/ui/audioDeviceSelection.js:54 msgid "Sound Settings" msgstr "Ase amokha" #: js/ui/audioDeviceSelection.js:64 msgid "Headphones" msgstr "Headphones" #: js/ui/audioDeviceSelection.js:66 msgid "Headset" msgstr "Headset" #: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:269 msgid "Microphone" msgstr "Microphone" #: js/ui/backgroundMenu.js:14 msgid "Change Background…" msgstr "Arjan kelar…" #: js/ui/backgroundMenu.js:16 js/ui/status/nightLight.js:45 msgid "Display Settings" msgstr "Display ason-amung" #: js/ui/backgroundMenu.js:17 msgid "Settings" msgstr "Settings" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:41 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:70 msgctxt "grid sunday" msgid "S" msgstr "B" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:72 msgctxt "grid monday" msgid "M" msgstr "U" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:74 msgctxt "grid tuesday" msgid "T" msgstr "D" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:76 msgctxt "grid wednesday" msgid "W" msgstr "T" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:78 msgctxt "grid thursday" msgid "T" msgstr "T" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:80 msgctxt "grid friday" msgid "F" msgstr "B" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:82 msgctxt "grid saturday" msgid "S" msgstr "B" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:371 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:381 msgid "%OB %Y" msgstr "%OB %Y" #: js/ui/calendar.js:440 msgid "Previous month" msgstr "Chu cheklo" #: js/ui/calendar.js:455 msgid "Next month" msgstr "Dunthu cheklo" #: js/ui/calendar.js:605 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:661 msgid "Week %V" msgstr "Rui %V" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/calendar.js:730 msgctxt "event list time" msgid "All Day" msgstr "Losoni" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/calendar.js:867 msgctxt "calendar heading" msgid "%A, %B %-d" msgstr "%A, %d %B" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/calendar.js:870 msgctxt "calendar heading" msgid "%A, %B %-d, %Y" msgstr "%A, %d %B, %Y" #: js/ui/calendar.js:1096 msgid "No Notifications" msgstr "Notifications Awe" #: js/ui/calendar.js:1099 msgid "No Events" msgstr "Events awe" #: js/ui/calendar.js:1153 msgid "Do Not Disturb" msgstr "" #: js/ui/calendar.js:1167 msgid "Clear" msgstr "Paprei" #. Translators: %s is an application name #: js/ui/closeDialog.js:42 #, javascript-format msgid "“%s” is not responding." msgstr "“%s” dam pame me." #: js/ui/closeDialog.js:43 msgid "" "You may choose to wait a short while for it to continue or force the " "application to quit entirely." msgstr "" "Nangli inghong chet tame, lason dam bom cheme det tahai kali te application " "bonchek noipame phan." #: js/ui/closeDialog.js:70 msgid "Force Quit" msgstr "Jakong pen ingchir noi" #: js/ui/closeDialog.js:73 msgid "Wait" msgstr "Inghong tha" #: js/ui/components/automountManager.js:86 msgid "External drive connected" msgstr "External drive chepho lo" #: js/ui/components/automountManager.js:98 msgid "External drive disconnected" msgstr "External drive chepho phe" #: js/ui/components/automountManager.js:208 msgid "Unable to unlock volume" msgstr "" #: js/ui/components/automountManager.js:209 msgid "The installed udisks version does not support the PIM setting" msgstr "" #: js/ui/components/autorunManager.js:333 #, javascript-format msgid "Open with %s" msgstr "%s pen kangpu" #: js/ui/components/networkAgent.js:89 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router." msgstr "" #: js/ui/components/networkAgent.js:101 js/ui/status/network.js:223 #: js/ui/status/network.js:314 js/ui/status/network.js:916 msgid "Connect" msgstr "Pa-chepho" #: js/ui/components/networkAgent.js:208 msgid "Key" msgstr "Key" #: js/ui/components/networkAgent.js:246 js/ui/components/networkAgent.js:269 msgid "Private key password" msgstr "Private key password" #: js/ui/components/networkAgent.js:267 msgid "Identity" msgstr "Identity" #: js/ui/components/networkAgent.js:281 msgid "Service" msgstr "Service" #: js/ui/components/networkAgent.js:310 js/ui/components/networkAgent.js:338 #: js/ui/components/networkAgent.js:685 js/ui/components/networkAgent.js:706 msgid "Authentication required" msgstr "Hovang nangji" #: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:686 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network " "“%s”." msgstr "" #: js/ui/components/networkAgent.js:315 js/ui/components/networkAgent.js:690 msgid "Wired 802.1X authentication" msgstr "" #: js/ui/components/networkAgent.js:317 msgid "Network name" msgstr "Network amen" #: js/ui/components/networkAgent.js:322 js/ui/components/networkAgent.js:694 msgid "DSL authentication" msgstr "DSL hovang" #: js/ui/components/networkAgent.js:329 js/ui/components/networkAgent.js:699 msgid "PIN code required" msgstr "PIN code nangji" #: js/ui/components/networkAgent.js:330 js/ui/components/networkAgent.js:700 msgid "PIN code is needed for the mobile broadband device" msgstr "PIN code nangji sepalar (mobile) hormu phan" #: js/ui/components/networkAgent.js:331 msgid "PIN" msgstr "PIN" #: js/ui/components/networkAgent.js:339 js/ui/components/networkAgent.js:691 #: js/ui/components/networkAgent.js:695 js/ui/components/networkAgent.js:707 #: js/ui/components/networkAgent.js:711 #, javascript-format msgid "A password is required to connect to “%s”." msgstr "“%s” pen chepho ji phan password nangji" #: js/ui/components/networkAgent.js:674 js/ui/status/network.js:1691 msgid "Network Manager" msgstr "Network Manager" #: js/ui/components/networkAgent.js:710 msgid "VPN password" msgstr "VPN Password" #: js/ui/components/polkitAgent.js:39 msgid "Authentication Required" msgstr "Hovang nangji" #: js/ui/components/polkitAgent.js:80 msgid "Administrator" msgstr "Administrator" #: js/ui/components/polkitAgent.js:142 msgid "Authenticate" msgstr "" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:254 js/ui/shellMountOperation.js:402 msgid "Sorry, that didn’t work. Please try again." msgstr "Diya tha, laso pot damde det. Ephong vi thu ik tha." #. Translators: this is the other person changing their old IM name to their new #. IM name. #: js/ui/components/telepathyClient.js:787 #, javascript-format msgid "%s is now known as %s" msgstr "%s phan nonke %s si pu" #: js/ui/ctrlAltTab.js:21 js/ui/viewSelector.js:177 msgid "Windows" msgstr "Windows" #: js/ui/dash.js:200 js/ui/dash.js:241 msgid "Show Applications" msgstr "Applications paklang" #. Translators: this is the name of the dock/favorites area on #. the left of the overview #: js/ui/dash.js:394 msgid "Dash" msgstr "Adim" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:75 msgid "%B %-d %Y" msgstr "%e %B, %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:82 msgid "%A %B %e %Y" msgstr "%e %B, %Y, %A" #: js/ui/dateMenu.js:161 msgid "Add world clocks…" msgstr "" #: js/ui/dateMenu.js:162 msgid "World Clocks" msgstr "" #: js/ui/dateMenu.js:276 msgid "Weather" msgstr "Botor" #: js/ui/dateMenu.js:391 msgid "Select a location…" msgstr "Adim chongvai nangji…" #: js/ui/dateMenu.js:404 msgid "Loading…" msgstr "Wang bom-lo…" #: js/ui/dateMenu.js:414 msgid "Go online for weather information" msgstr "Online pen botor birta kelang" #: js/ui/dateMenu.js:416 msgid "Weather information is currently unavailable" msgstr "Botor birta non ko awe" #: js/ui/endSessionDialog.js:37 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "%s phan hong ke-wan" #: js/ui/endSessionDialog.js:38 msgctxt "title" msgid "Log Out" msgstr "Hong wang" #: js/ui/endSessionDialog.js:40 #, javascript-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "%s phan hong pa-tet po non %d second lote." msgstr[1] "%s phan hong pa-tet po non %d seconds lote." #: js/ui/endSessionDialog.js:45 #, javascript-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "Nangli phan hong pa-tet po non %d second lote." msgstr[1] "Nangli phan hong pa-tet po non %d seconds lote." #: js/ui/endSessionDialog.js:51 msgctxt "button" msgid "Log Out" msgstr "" #: js/ui/endSessionDialog.js:56 msgctxt "title" msgid "Power Off" msgstr "" #: js/ui/endSessionDialog.js:57 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Updates thapdet aphi Power Off noi" #: js/ui/endSessionDialog.js:59 #, javascript-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "Computer amethang chebon po non %d second lote." msgstr[1] "Computer amethang chebon po non %d seconds lote." #: js/ui/endSessionDialog.js:63 msgctxt "checkbox" msgid "Install pending software updates" msgstr "Pending software updates thap tha" #: js/ui/endSessionDialog.js:66 js/ui/endSessionDialog.js:82 msgctxt "button" msgid "Restart" msgstr "" #: js/ui/endSessionDialog.js:68 msgctxt "button" msgid "Power Off" msgstr "" #: js/ui/endSessionDialog.js:74 msgctxt "title" msgid "Restart" msgstr "" #: js/ui/endSessionDialog.js:76 #, javascript-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "Computer amethang restart po non %d second lote." msgstr[1] "Computer amethang restart po non %d seconds lote." #: js/ui/endSessionDialog.js:89 msgctxt "title" msgid "Restart & Install Updates" msgstr "restart si Updates thap noi" #: js/ui/endSessionDialog.js:91 #, javascript-format msgid "The system will automatically restart and install updates in %d second." msgid_plural "" "The system will automatically restart and install updates in %d seconds." msgstr[0] "" msgstr[1] "" #: js/ui/endSessionDialog.js:97 js/ui/endSessionDialog.js:116 msgctxt "button" msgid "Restart & Install" msgstr "Restart si Install noi" #: js/ui/endSessionDialog.js:98 msgctxt "button" msgid "Install & Power Off" msgstr "Thap det si Power Off noi" #: js/ui/endSessionDialog.js:99 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Updates det bon-chek noi" #: js/ui/endSessionDialog.js:106 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "Restart aphi Upgrade thap noi" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:111 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" #: js/ui/endSessionDialog.js:259 msgid "Running on battery power: Please plug in before installing updates." msgstr "Battery pensi dambom: choningri updates de aprang charge ik noi." #: js/ui/endSessionDialog.js:268 msgid "Some applications are busy or have unsaved work" msgstr "" #: js/ui/endSessionDialog.js:273 msgid "Other users are logged in" msgstr "Kaprek monit logged dolang." #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:588 #, javascript-format msgid "%s (remote)" msgstr "%s (remote)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:591 #, javascript-format msgid "%s (console)" msgstr "%s (console)" #: js/ui/extensionDownloader.js:169 msgid "Install" msgstr "" #: js/ui/extensionDownloader.js:175 msgid "Install Extension" msgstr "Extension kethap" #: js/ui/extensionDownloader.js:176 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "Download si “%s” thap noi extensions.gnome.org long pen?" #: js/ui/extensionSystem.js:228 msgid "Extension Updates Available" msgstr "Extensions Updates dolo" #: js/ui/extensionSystem.js:229 msgid "Extension updates are ready to be installed." msgstr "" #: js/ui/inhibitShortcutsDialog.js:79 msgid "Allow inhibiting shortcuts" msgstr "" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:82 #, javascript-format msgid "The application %s wants to inhibit shortcuts" msgstr "" #: js/ui/inhibitShortcutsDialog.js:83 msgid "An application wants to inhibit shortcuts" msgstr "" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:90 #, javascript-format msgid "You can restore shortcuts by pressing %s." msgstr "" #: js/ui/inhibitShortcutsDialog.js:98 msgid "Deny" msgstr "Longle" #: js/ui/inhibitShortcutsDialog.js:105 msgid "Allow" msgstr "Long" #: js/ui/kbdA11yDialog.js:32 msgid "Slow Keys Turned On" msgstr "" #: js/ui/kbdA11yDialog.js:33 msgid "Slow Keys Turned Off" msgstr "" #: js/ui/kbdA11yDialog.js:34 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" #: js/ui/kbdA11yDialog.js:41 msgid "Sticky Keys Turned On" msgstr "" #: js/ui/kbdA11yDialog.js:42 msgid "Sticky Keys Turned Off" msgstr "" #: js/ui/kbdA11yDialog.js:44 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" #: js/ui/kbdA11yDialog.js:46 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" #: js/ui/kbdA11yDialog.js:55 msgid "Leave On" msgstr "" #: js/ui/kbdA11yDialog.js:55 js/ui/status/bluetooth.js:135 #: js/ui/status/network.js:1288 msgid "Turn On" msgstr "" #: js/ui/kbdA11yDialog.js:63 js/ui/status/bluetooth.js:135 #: js/ui/status/network.js:131 js/ui/status/network.js:315 #: js/ui/status/network.js:1288 js/ui/status/network.js:1400 #: js/ui/status/nightLight.js:41 js/ui/status/rfkill.js:81 #: js/ui/status/rfkill.js:108 msgid "Turn Off" msgstr "" #: js/ui/kbdA11yDialog.js:63 msgid "Leave Off" msgstr "" #: js/ui/keyboard.js:207 msgid "Region & Language Settings" msgstr "" #: js/ui/lookingGlass.js:665 msgid "No extensions installed" msgstr "" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:720 #, javascript-format msgid "%s has not emitted any errors." msgstr "" #: js/ui/lookingGlass.js:726 msgid "Hide Errors" msgstr "Errors matu" #: js/ui/lookingGlass.js:730 js/ui/lookingGlass.js:795 msgid "Show Errors" msgstr "Errors paklang" #: js/ui/lookingGlass.js:739 msgid "Enabled" msgstr "" #. translators: #. * The device has been disabled #: js/ui/lookingGlass.js:742 subprojects/gvc/gvc-mixer-control.c:1892 msgid "Disabled" msgstr "" #: js/ui/lookingGlass.js:744 msgid "Error" msgstr "Chokche" #: js/ui/lookingGlass.js:746 msgid "Out of date" msgstr "Arni chokche" #: js/ui/lookingGlass.js:748 msgid "Downloading" msgstr "San bomlo" #: js/ui/lookingGlass.js:777 msgid "View Source" msgstr "" #: js/ui/lookingGlass.js:786 msgid "Web Page" msgstr "Web aloh" #: js/ui/main.js:269 msgid "Logged in as a privileged user" msgstr "" #: js/ui/main.js:270 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" #: js/ui/main.js:276 msgid "Screen Lock disabled" msgstr "" #: js/ui/main.js:277 msgid "Screen Locking requires the GNOME display manager." msgstr "" #: js/ui/messageTray.js:1554 msgid "System Information" msgstr "" #: js/ui/mpris.js:199 msgid "Unknown artist" msgstr "" #: js/ui/mpris.js:209 msgid "Unknown title" msgstr "Amen chinine" #: js/ui/overview.js:73 msgid "Undo" msgstr "Undo" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:86 msgid "Overview" msgstr "Sai" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overview.js:107 msgid "Type to search" msgstr "Kiri phan ketok" #: js/ui/padOsd.js:95 msgid "New shortcut…" msgstr "Shortcut kimi…" #: js/ui/padOsd.js:142 msgid "Application defined" msgstr "" #: js/ui/padOsd.js:143 msgid "Show on-screen help" msgstr "" #: js/ui/padOsd.js:144 msgid "Switch monitor" msgstr "Monitor kelar" #: js/ui/padOsd.js:145 msgid "Assign keystroke" msgstr "" #: js/ui/padOsd.js:211 msgid "Done" msgstr "Tanglo" #: js/ui/padOsd.js:745 msgid "Edit…" msgstr "Edit…" #: js/ui/padOsd.js:787 js/ui/padOsd.js:910 msgid "None" msgstr "Angse" #: js/ui/padOsd.js:863 msgid "Press a button to configure" msgstr "" #: js/ui/padOsd.js:864 msgid "Press Esc to exit" msgstr "" #: js/ui/padOsd.js:867 msgid "Press any key to exit" msgstr "" #: js/ui/panel.js:109 msgid "Quit" msgstr "" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:434 msgid "Activities" msgstr "Sai (WiP)" #: js/ui/panel.js:707 msgctxt "System menu in the top bar" msgid "System" msgstr "" #: js/ui/panel.js:820 msgid "Top Bar" msgstr "" #: js/ui/runDialog.js:58 msgid "Run a Command" msgstr "Atoi (command) keber" #: js/ui/runDialog.js:73 msgid "Press ESC to close" msgstr "" #: js/ui/runDialog.js:238 msgid "Restart is not available on Wayland" msgstr "" #: js/ui/runDialog.js:243 msgid "Restarting…" msgstr "" #: js/ui/screenShield.js:203 msgid "GNOME needs to lock the screen" msgstr "GNOME screen lock nangji" #. We could not become modal, so we can't activate the #. screenshield. The user is probably very upset at this #. point, but any application using global grabs is broken #. Just tell him to stop using this app #. #. XXX: another option is to kick the user into the gdm login #. screen, where we're not affected by grabs #: js/ui/screenShield.js:244 js/ui/screenShield.js:598 msgid "Unable to lock" msgstr "Lock un-eh" #: js/ui/screenShield.js:245 js/ui/screenShield.js:599 msgid "Lock was blocked by an application" msgstr "" #: js/ui/search.js:694 msgid "Searching…" msgstr "Ri bomlo…" #: js/ui/search.js:696 msgid "No results." msgstr "Satlang klang kle." #: js/ui/search.js:822 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "%d dolang" msgstr[1] "Son %d dolang" #: js/ui/shellEntry.js:20 msgid "Copy" msgstr "Copy" #: js/ui/shellEntry.js:25 msgid "Paste" msgstr "Paste" #: js/ui/shellEntry.js:73 msgid "Show Text" msgstr "Amek paklang" #: js/ui/shellEntry.js:75 msgid "Hide Text" msgstr "Amek matu" #: js/ui/shellEntry.js:162 msgid "Caps lock is on." msgstr "" #: js/ui/shellMountOperation.js:285 msgid "Hidden Volume" msgstr "" #: js/ui/shellMountOperation.js:288 msgid "Windows System Volume" msgstr "" #: js/ui/shellMountOperation.js:291 msgid "Uses Keyfiles" msgstr "Keyfiles pen" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:298 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead." msgstr "" #: js/ui/shellMountOperation.js:306 msgid "PIM Number" msgstr "PIM Number" #: js/ui/shellMountOperation.js:365 msgid "Remember Password" msgstr "Password ning chibi nangji" #: js/ui/shellMountOperation.js:380 msgid "Unlock" msgstr "Ingpu-ji" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:391 #, javascript-format msgid "Open %s" msgstr "%s Kangpu" #: js/ui/shellMountOperation.js:423 msgid "The PIM must be a number or empty." msgstr "PIM ke lakha mate angse nangji" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:469 #, javascript-format msgid "Unable to start %s" msgstr "%s pangcheng un-eh" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:471 #, javascript-format msgid "Couldn’t find the %s application" msgstr "%s application longle" #: js/ui/status/accessibility.js:35 msgid "Accessibility" msgstr "Accessibility" #: js/ui/status/accessibility.js:50 msgid "Zoom" msgstr "Pathe-bi" #: js/ui/status/accessibility.js:57 msgid "Screen Reader" msgstr "" #: js/ui/status/accessibility.js:61 msgid "Screen Keyboard" msgstr "" #: js/ui/status/accessibility.js:65 msgid "Visual Alerts" msgstr "" #: js/ui/status/accessibility.js:68 msgid "Sticky Keys" msgstr "" #: js/ui/status/accessibility.js:71 msgid "Slow Keys" msgstr "" #: js/ui/status/accessibility.js:74 msgid "Bounce Keys" msgstr "" #: js/ui/status/accessibility.js:77 msgid "Mouse Keys" msgstr "" #: js/ui/status/accessibility.js:136 msgid "High Contrast" msgstr "" #: js/ui/status/accessibility.js:178 msgid "Large Text" msgstr "Kethe amek" #: js/ui/status/bluetooth.js:40 msgid "Bluetooth" msgstr "Bluetooth" #: js/ui/status/bluetooth.js:49 js/ui/status/network.js:591 msgid "Bluetooth Settings" msgstr "Bluwtooth amokha" #. Translators: this is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:129 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d Chepho" msgstr[1] "Son %d Chepho" #: js/ui/status/bluetooth.js:131 msgid "Off" msgstr "" #: js/ui/status/bluetooth.js:133 msgid "On" msgstr "" #: js/ui/status/brightness.js:39 msgid "Brightness" msgstr "Atur" #: js/ui/status/dwellClick.js:13 msgid "Single Click" msgstr "Ephong Click" #: js/ui/status/dwellClick.js:18 msgid "Double Click" msgstr "Phongni Click" #: js/ui/status/dwellClick.js:23 msgid "Drag" msgstr "Kesan" #: js/ui/status/dwellClick.js:28 msgid "Secondary Click" msgstr "" #: js/ui/status/dwellClick.js:37 msgid "Dwell Click" msgstr "" #: js/ui/status/keyboard.js:826 msgid "Keyboard" msgstr "Keyboard" #: js/ui/status/keyboard.js:848 msgid "Show Keyboard Layout" msgstr "Keyboard Layout paklang" #: js/ui/status/location.js:65 js/ui/status/location.js:174 msgid "Location Enabled" msgstr "" #: js/ui/status/location.js:66 js/ui/status/location.js:175 msgid "Disable" msgstr "" #: js/ui/status/location.js:67 msgid "Privacy Settings" msgstr "Privacy amokha" #: js/ui/status/location.js:173 msgid "Location In Use" msgstr "" #: js/ui/status/location.js:177 msgid "Location Disabled" msgstr "" #: js/ui/status/location.js:178 msgid "Enable" msgstr "" #: js/ui/status/location.js:355 msgid "Allow location access" msgstr "" #. Translators: %s is an application name #: js/ui/status/location.js:357 #, javascript-format msgid "The app %s wants to access your location" msgstr "%s app aphan nangli kedo adim pachini ji?" #: js/ui/status/location.js:367 msgid "Location access can be changed at any time from the privacy settings." msgstr "" #: js/ui/status/network.js:66 msgid "" msgstr "" #. Translators: %s is a network identifier #: js/ui/status/network.js:420 js/ui/status/network.js:1317 #, javascript-format msgid "%s Off" msgstr "%s Bon-chek" #. Translators: %s is a network identifier #: js/ui/status/network.js:423 #, javascript-format msgid "%s Connected" msgstr "%s Chepho" #. Translators: this is for network devices that are physically present but are not #. under NetworkManager's control (and thus cannot be used in the menu); #. %s is a network identifier #: js/ui/status/network.js:428 #, javascript-format msgid "%s Unmanaged" msgstr "" #. Translators: %s is a network identifier #: js/ui/status/network.js:431 #, javascript-format msgid "%s Disconnecting" msgstr "%s chethan bomlo" #. Translators: %s is a network identifier #: js/ui/status/network.js:438 js/ui/status/network.js:1309 #, javascript-format msgid "%s Connecting" msgstr "%s chepho bomlo" #. Translators: this is for network connections that require some kind of key or password; %s is a network identifier #: js/ui/status/network.js:441 #, javascript-format msgid "%s Requires Authentication" msgstr "%s hovang nangji" #. Translators: this is for devices that require some kind of firmware or kernel #. module, which is missing; %s is a network identifier #: js/ui/status/network.js:449 #, javascript-format msgid "Firmware Missing For %s" msgstr "Firmware awe %s aphan" #. Translators: this is for a network device that cannot be activated (for example it #. is disabled by rfkill, or it has no coverage; %s is a network identifier #: js/ui/status/network.js:453 #, javascript-format msgid "%s Unavailable" msgstr "%s nonko awe" #. Translators: %s is a network identifier #: js/ui/status/network.js:456 #, javascript-format msgid "%s Connection Failed" msgstr "%s Chepho un-eh det" #: js/ui/status/network.js:468 msgid "Wired Settings" msgstr "Wired amokha" #: js/ui/status/network.js:511 msgid "Mobile Broadband Settings" msgstr "Mobile Broadband amokha" #. Translators: %s is a network identifier #: js/ui/status/network.js:558 js/ui/status/network.js:1314 #, javascript-format msgid "%s Hardware Disabled" msgstr "" #. Translators: this is for a network device that cannot be activated #. because it's disabled by rfkill (airplane mode); %s is a network identifier #: js/ui/status/network.js:562 #, javascript-format msgid "%s Disabled" msgstr "" #: js/ui/status/network.js:603 msgid "Connect to Internet" msgstr "Internet pen chepho" #: js/ui/status/network.js:808 msgid "Airplane Mode is On" msgstr "Airplane Mode dambom" #: js/ui/status/network.js:809 msgid "Wi-Fi is disabled when airplane mode is on." msgstr "" #: js/ui/status/network.js:810 msgid "Turn Off Airplane Mode" msgstr "Airplane Mode bon-noi" #: js/ui/status/network.js:819 msgid "Wi-Fi is Off" msgstr "Wi-Fi pamek chok si do" #: js/ui/status/network.js:820 msgid "Wi-Fi needs to be turned on in order to connect to a network." msgstr "" #: js/ui/status/network.js:821 msgid "Turn On Wi-Fi" msgstr "Wi-Fi ingpu noi" #: js/ui/status/network.js:846 msgid "Wi-Fi Networks" msgstr "Wi-Fi Networks" #: js/ui/status/network.js:848 msgid "Select a network" msgstr "Network ingvai nangji" #: js/ui/status/network.js:880 msgid "No Networks" msgstr "Networks awe" #: js/ui/status/network.js:901 js/ui/status/rfkill.js:106 msgid "Use hardware switch to turn off" msgstr "" #: js/ui/status/network.js:1178 msgid "Select Network" msgstr "Network chongvai nangji" #: js/ui/status/network.js:1184 msgid "Wi-Fi Settings" msgstr "Wi-Fi amokha" #. Translators: %s is a network identifier #: js/ui/status/network.js:1305 #, javascript-format msgid "%s Hotspot Active" msgstr "%s Hotspot reng-dok" #. Translators: %s is a network identifier #: js/ui/status/network.js:1320 #, javascript-format msgid "%s Not Connected" msgstr "%s pen chepho-phe" #: js/ui/status/network.js:1417 msgid "connecting…" msgstr "chepho bomlo…" #. Translators: this is for network connections that require some kind of key or password #: js/ui/status/network.js:1420 msgid "authentication required" msgstr "Hovang nangji" #: js/ui/status/network.js:1422 msgid "connection failed" msgstr "chepho un-eh det" #: js/ui/status/network.js:1473 msgid "VPN Settings" msgstr "VPN amokha" #: js/ui/status/network.js:1490 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1500 msgid "VPN Off" msgstr "VPN bon-chek" #: js/ui/status/network.js:1561 js/ui/status/rfkill.js:84 msgid "Network Settings" msgstr "Network ason-amung" #: js/ui/status/network.js:1590 #, javascript-format msgid "%s Wired Connection" msgid_plural "%s Wired Connections" msgstr[0] "%s Wired chepho" msgstr[1] "Son %s Wired chepho" #: js/ui/status/network.js:1594 #, javascript-format msgid "%s Wi-Fi Connection" msgid_plural "%s Wi-Fi Connections" msgstr[0] "%s Wi-Fi chepho" msgstr[1] "Son %s Wi-Fi chepho" #: js/ui/status/network.js:1598 #, javascript-format msgid "%s Modem Connection" msgid_plural "%s Modem Connections" msgstr[0] "%s Modem chepho" msgstr[1] "Son %s Modem chepho" #: js/ui/status/network.js:1732 msgid "Connection failed" msgstr "Chepho un-eh det" #: js/ui/status/network.js:1733 msgid "Activation of network connection failed" msgstr "" #: js/ui/status/nightLight.js:63 msgid "Night Light Disabled" msgstr "Night Light bon-chok" #: js/ui/status/nightLight.js:64 msgid "Night Light On" msgstr "Night Light dam-bom" #: js/ui/status/nightLight.js:66 msgid "Resume" msgstr "Ingthun thu-non" #: js/ui/status/nightLight.js:67 msgid "Disable Until Tomorrow" msgstr "Pinap arni an ke-pamep" #: js/ui/status/power.js:47 msgid "Power Settings" msgstr "Power amokha" #: js/ui/status/power.js:63 msgid "Fully Charged" msgstr "Charge pleng-lo" #: js/ui/status/power.js:69 msgid "Not Charging" msgstr "Che Charge che" #. 0 is reported when UPower does not have enough data #. to estimate battery life #: js/ui/status/power.js:72 js/ui/status/power.js:78 msgid "Estimating…" msgstr "Lakha bomlo…" #. Translators: this is : Remaining () #: js/ui/status/power.js:86 #, javascript-format msgid "%d∶%02d Remaining (%d %%)" msgstr "%d∶%02d Dolang (%d %%)" #. Translators: this is : Until Full () #: js/ui/status/power.js:91 #, javascript-format msgid "%d∶%02d Until Full (%d %%)" msgstr "%d∶%02d Plengji aphan (%d %%)" #: js/ui/status/power.js:139 js/ui/status/power.js:141 #, javascript-format msgid "%d %%" msgstr "%d %%" #: js/ui/status/remoteAccess.js:44 msgid "Screen is Being Shared" msgstr "Screen kaprek pen chepi bom" #: js/ui/status/remoteAccess.js:46 msgid "Turn off" msgstr "Bon-noi" #. The menu only appears when airplane mode is on, so just #. statically build it as if it was on, rather than dynamically #. changing the menu contents. #: js/ui/status/rfkill.js:79 msgid "Airplane Mode On" msgstr "Aeroplane Mode dambom" #: js/ui/status/system.js:103 msgid "Lock" msgstr "" #: js/ui/status/system.js:116 msgid "Power Off / Log Out" msgstr "Pamep / Ketet" #: js/ui/status/system.js:119 msgid "Log Out" msgstr "Hong ke-tet" #: js/ui/status/system.js:131 msgid "Switch User…" msgstr "Monit chelar…" #: js/ui/status/system.js:145 msgid "Suspend" msgstr "Suspend" #: js/ui/status/system.js:157 msgid "Power Off…" msgstr "Pamep…" #: js/ui/status/thunderbolt.js:263 msgid "Thunderbolt" msgstr "Thunderbolt" #: js/ui/status/thunderbolt.js:325 msgid "Unknown Thunderbolt device" msgstr "Pangthek thekthe Thunderbold hormu" #: js/ui/status/thunderbolt.js:326 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" "Nangli bang awe hut akimi hormu theklong. Choningri pen hek-jok si thon-thu " "noi keklang ke-ot ji phan" #: js/ui/status/thunderbolt.js:329 msgid "Unauthorized Thunderbolt device" msgstr "Hovang kawe Thunderbold hormu" #: js/ui/status/thunderbolt.js:330 msgid "" "New device has been detected and needs to be authorized by an administrator." msgstr "Kimi hormu ke thon phan administrators hovang nangji." #: js/ui/status/thunderbolt.js:336 msgid "Thunderbolt authorization error" msgstr "" #: js/ui/status/thunderbolt.js:337 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "" #: js/ui/status/volume.js:150 msgid "Volume changed" msgstr "Ase lar det" #: js/ui/status/volume.js:221 msgid "Volume" msgstr "Aseh" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:17 msgid "Mirror" msgstr "Mirror" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:22 msgid "Join Displays" msgstr "Displays pa-chepho" #. Translators: this is for using only an external display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:27 msgid "External Only" msgstr "Hong pen anchot" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:32 msgid "Built-in Only" msgstr "Kedun bang anchot" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:370 msgid "%A %B %-d" msgstr "%A %d %B" #: js/ui/unlockDialog.js:376 msgid "Swipe up to unlock" msgstr "" #: js/ui/unlockDialog.js:377 msgid "Click or press a key to unlock" msgstr "" #: js/ui/unlockDialog.js:550 msgid "Unlock Window" msgstr "Window ingpu noi" #: js/ui/viewSelector.js:181 msgid "Applications" msgstr "Applications" #: js/ui/viewSelector.js:185 msgid "Search" msgstr "Kiri" #: js/ui/windowAttentionHandler.js:20 #, javascript-format msgid "“%s” is ready" msgstr "“%s” tang lo" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:55 msgid "Keep these display settings?" msgstr "Laso display settings pado nang?" #. Translators: this and the following message should be limited in length, #. to avoid ellipsizing the labels. #. #: js/ui/windowManager.js:64 msgid "Revert Settings" msgstr "Aphrang amokha si nangji" #: js/ui/windowManager.js:67 msgid "Keep Changes" msgstr "Ke-lar chok lo" #: js/ui/windowManager.js:85 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "Settings aphrang ateng chelar thu po %d second lote" msgstr[1] "Settings aphrang ateng chelar thu po %d seconds lote" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:544 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:27 msgid "Minimize" msgstr "Pabi" #: js/ui/windowMenu.js:34 msgid "Unmaximize" msgstr "Pathe-ri" #: js/ui/windowMenu.js:38 msgid "Maximize" msgstr "Pathe" #: js/ui/windowMenu.js:45 msgid "Move" msgstr "Te-rek" #: js/ui/windowMenu.js:51 msgid "Resize" msgstr "Pathe-bi" #: js/ui/windowMenu.js:58 msgid "Move Titlebar Onscreen" msgstr "" #: js/ui/windowMenu.js:63 msgid "Always on Top" msgstr "Angsong dover nangji" #: js/ui/windowMenu.js:82 msgid "Always on Visible Workspace" msgstr "" #: js/ui/windowMenu.js:96 msgid "Move to Workspace Left" msgstr "Ar-vi Workspace long pon noi" #: js/ui/windowMenu.js:102 msgid "Move to Workspace Right" msgstr "Ar-eh Workspace long pon noi" #: js/ui/windowMenu.js:108 msgid "Move to Workspace Up" msgstr "Athak Workspace long pon noi" #: js/ui/windowMenu.js:114 msgid "Move to Workspace Down" msgstr "Aber Workspace long pon noi" #: js/ui/windowMenu.js:132 msgid "Move to Monitor Up" msgstr "Athak Monitor long pon noi" #: js/ui/windowMenu.js:141 msgid "Move to Monitor Down" msgstr "Aber Monitor long pon noi" #: js/ui/windowMenu.js:150 msgid "Move to Monitor Left" msgstr "Ar-vi Monitor long pon noi" #: js/ui/windowMenu.js:159 msgid "Move to Monitor Right" msgstr "Ar-eh Monitor long pon noi" #: js/ui/windowMenu.js:167 msgid "Close" msgstr "Kanghap" #: src/calendar-server/evolution-calendar.desktop.in:3 msgid "Evolution Calendar" msgstr "Evolution Calendar" #: src/main.c:460 subprojects/extensions-tool/src/main.c:249 msgid "Print version" msgstr "" #: src/main.c:466 msgid "Mode used by GDM for login screen" msgstr "" #: src/main.c:472 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "" #: src/main.c:478 msgid "List possible modes" msgstr "" #: src/shell-app.c:279 msgctxt "program" msgid "Unknown" msgstr "Puthekthe" #: src/shell-app.c:530 #, c-format msgid "Failed to launch “%s”" msgstr "“%s” ingpu un-eh" #: src/shell-keyring-prompt.c:731 msgid "Passwords do not match." msgstr "Passwords homan meh" #: src/shell-keyring-prompt.c:739 msgid "Password cannot be blank" msgstr "Password angse bi un-eh" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:125 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "" #: subprojects/extensions-tool/src/command-create.c:194 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" #: subprojects/extensions-tool/src/command-create.c:197 #: subprojects/extensions-tool/src/main.c:170 msgid "Name" msgstr "" #: subprojects/extensions-tool/src/command-create.c:208 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" #: subprojects/extensions-tool/src/command-create.c:222 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" #: subprojects/extensions-tool/src/command-create.c:244 msgid "The unique identifier of the new extension" msgstr "" #: subprojects/extensions-tool/src/command-create.c:247 msgid "NAME" msgstr "" #: subprojects/extensions-tool/src/command-create.c:248 msgid "The user-visible name of the new extension" msgstr "" #: subprojects/extensions-tool/src/command-create.c:250 msgid "DESCRIPTION" msgstr "" #: subprojects/extensions-tool/src/command-create.c:252 msgid "A short description of what the extension does" msgstr "" #: subprojects/extensions-tool/src/command-create.c:255 msgid "Enter extension information interactively" msgstr "" #: subprojects/extensions-tool/src/command-create.c:263 msgid "Create a new extension" msgstr "" #: subprojects/extensions-tool/src/command-create.c:280 #: subprojects/extensions-tool/src/command-list.c:168 msgid "Unknown arguments" msgstr "Athe chinine" #: subprojects/extensions-tool/src/command-create.c:289 msgid "UUID, name and description are required" msgstr "" #: subprojects/extensions-tool/src/command-disable.c:57 msgid "Disable an extension" msgstr "" #: subprojects/extensions-tool/src/command-disable.c:74 #: subprojects/extensions-tool/src/command-enable.c:74 #: subprojects/extensions-tool/src/command-info.c:96 #: subprojects/extensions-tool/src/command-prefs.c:107 #: subprojects/extensions-tool/src/command-reset.c:74 #: subprojects/extensions-tool/src/command-uninstall.c:89 msgid "No UUID given" msgstr "" #: subprojects/extensions-tool/src/command-disable.c:79 #: subprojects/extensions-tool/src/command-enable.c:79 #: subprojects/extensions-tool/src/command-info.c:101 #: subprojects/extensions-tool/src/command-prefs.c:112 #: subprojects/extensions-tool/src/command-reset.c:79 #: subprojects/extensions-tool/src/command-uninstall.c:94 msgid "More than one UUID given" msgstr "" #: subprojects/extensions-tool/src/command-enable.c:57 msgid "Enable an extension" msgstr "" #: subprojects/extensions-tool/src/command-info.c:79 msgid "Show extensions info" msgstr "Extensions info paklang" #: subprojects/extensions-tool/src/command-install.c:173 msgid "Overwrite an existing extension" msgstr "" #: subprojects/extensions-tool/src/command-install.c:175 msgid "EXTENSION_BUNDLE" msgstr "" #: subprojects/extensions-tool/src/command-install.c:184 msgid "Install an extension bundle" msgstr "" #: subprojects/extensions-tool/src/command-install.c:201 msgid "No extension bundle specified" msgstr "" #: subprojects/extensions-tool/src/command-install.c:207 msgid "More than one extension bundle specified" msgstr "" #: subprojects/extensions-tool/src/command-list.c:125 msgid "Show user-installed extensions" msgstr "User kethap tang Extensions paklang" #: subprojects/extensions-tool/src/command-list.c:128 msgid "Show system-installed extensions" msgstr "System long Extensions paklang" #: subprojects/extensions-tool/src/command-list.c:131 msgid "Show enabled extensions" msgstr "Dambom Extensions paklang" #: subprojects/extensions-tool/src/command-list.c:134 msgid "Show disabled extensions" msgstr "" #: subprojects/extensions-tool/src/command-list.c:137 msgid "Show extensions with preferences" msgstr "" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show extensions with updates" msgstr "Extensions updates do an paklang" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Print extension details" msgstr "Extensions details print" #: subprojects/extensions-tool/src/command-list.c:151 msgid "List installed extensions" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:450 msgid "FILE" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:451 msgid "Additional source to include in the bundle" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:454 msgid "SCHEMA" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:455 msgid "A GSettings schema that should be included" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:457 #: subprojects/extensions-tool/src/command-pack.c:468 msgid "DIRECTORY" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:459 msgid "The directory where translations are found" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:461 msgid "DOMAIN" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:463 msgid "The gettext domain to use for translations" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "Overwrite an existing pack" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:470 msgid "The directory where the pack should be created" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:472 msgid "SOURCE_DIRECTORY" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:481 msgid "Create an extension bundle" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:500 msgid "More than one source directory specified" msgstr "" #: subprojects/extensions-tool/src/command-prefs.c:90 msgid "Opens extension preferences" msgstr "" #: subprojects/extensions-tool/src/command-reset.c:57 msgid "Reset an extension" msgstr "" #: subprojects/extensions-tool/src/command-uninstall.c:72 msgid "Uninstall an extension" msgstr "" #: subprojects/extensions-tool/src/main.c:176 msgid "Path" msgstr "" #: subprojects/extensions-tool/src/main.c:179 msgid "URL" msgstr "" #: subprojects/extensions-tool/src/main.c:182 msgid "Original author" msgstr "" #: subprojects/extensions-tool/src/main.c:188 msgid "State" msgstr "" #: subprojects/extensions-tool/src/main.c:222 msgid "“version” takes no arguments" msgstr "" #: subprojects/extensions-tool/src/main.c:224 #: subprojects/extensions-tool/src/main.c:244 msgid "Usage:" msgstr "" #: subprojects/extensions-tool/src/main.c:227 msgid "Print version information and exit." msgstr "" #: subprojects/extensions-tool/src/main.c:242 #: subprojects/extensions-tool/src/main.c:245 msgid "COMMAND" msgstr "" #: subprojects/extensions-tool/src/main.c:245 msgid "[ARGS…]" msgstr "" #: subprojects/extensions-tool/src/main.c:247 msgid "Commands:" msgstr "" #: subprojects/extensions-tool/src/main.c:248 msgid "Print help" msgstr "" #: subprojects/extensions-tool/src/main.c:250 msgid "Enable extension" msgstr "Extension kangpu" #: subprojects/extensions-tool/src/main.c:251 msgid "Disable extension" msgstr "" #: subprojects/extensions-tool/src/main.c:252 msgid "Reset extension" msgstr "" #: subprojects/extensions-tool/src/main.c:253 msgid "Uninstall extension" msgstr "Shell Extension kehek" #: subprojects/extensions-tool/src/main.c:254 msgid "List extensions" msgstr "Extensions paklang thai" #: subprojects/extensions-tool/src/main.c:255 #: subprojects/extensions-tool/src/main.c:256 msgid "Show extension info" msgstr "Extensions info paklang" #: subprojects/extensions-tool/src/main.c:257 msgid "Open extension preferences" msgstr "" #: subprojects/extensions-tool/src/main.c:258 msgid "Create extension" msgstr "Extension selam" #: subprojects/extensions-tool/src/main.c:259 msgid "Package extension" msgstr "" #: subprojects/extensions-tool/src/main.c:260 msgid "Install extension bundle" msgstr "" #: subprojects/extensions-tool/src/main.c:262 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1899 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u pen aseh ke-tet" msgstr[1] "%u pen aseh ke-tet" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1909 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u pen ase kethap" msgstr[1] "%u pen ase kethap" #: subprojects/gvc/gvc-mixer-control.c:2766 msgid "System Sounds" msgstr "System Aseh" #~ msgid "Browse in Software" #~ msgstr "Software long kelang" #~ msgid "Next" #~ msgstr "Dunthu" #~ msgctxt "button" #~ msgid "Sign In" #~ msgstr "Sign In" #~ msgid "Password:" #~ msgstr "Password:" #~ msgid "Type again:" #~ msgstr "Sonthot tok thu nanglang:" #~ msgid "Password: " #~ msgstr "Password: " #~ msgid "%A, %B %d" #~ msgstr "%A, %d %B" #~ msgid "%d new message" #~ msgid_plural "%d new messages" #~ msgstr[0] "%d birta kimi" #~ msgstr[1] "Son %d birta kimi" #~ msgid "%d new notification" #~ msgid_plural "%d new notifications" #~ msgstr[0] "%d notification kimi" #~ msgstr[1] "Son %d notification kimi" #~ msgid "Log in as another user" #~ msgstr "Kaprek amen pen Login ji" #~ msgid "Account Settings" #~ msgstr "Account amokha" #~ msgid "Orientation Lock" #~ msgstr "Tewar longle" 0707010000024D000081A40000000000000000000000016712993F0000CEFB000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/mk.po# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: 3.4\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2011-12-08 16:50+0000\n" "PO-Revision-Date: 2011-12-08 22:37+0100\n" "Last-Translator: Jovan N\n" "Language-Team: mk_MK \n" "Language: mk\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%10==1 ? 0 : 1;\n" #: ../data/gnome-shell.desktop.in.in.h:1 msgid "GNOME Shell" msgstr "GNOME Shell" #: ../data/gnome-shell.desktop.in.in.h:2 msgid "Window management and application launching" msgstr "Менаџмент на прозорци и пуштање на апликации" #: ../data/org.gnome.shell.gschema.xml.in.h:1 msgid "Allows access to internal debugging and monitoring tools using the Alt-F2 dialog." msgstr "Овозможува пристап до внатрешни алатки за дебагирање и мониторирање со користење на дијалогот на Alt-F2." #: ../data/org.gnome.shell.gschema.xml.in.h:2 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "Овозможи ги внатрешните алатки кои се корисни за програмерите и тестерите преку Alt-F2" #: ../data/org.gnome.shell.gschema.xml.in.h:3 msgid "File extension used for storing the screencast" msgstr "Наставка на датотека која се користи за зачувување на снимката од екран" #: ../data/org.gnome.shell.gschema.xml.in.h:4 msgid "Framerate used for recording screencasts." msgstr "Рата на рамки која се користи при снимање на снимки од екран." #: ../data/org.gnome.shell.gschema.xml.in.h:5 msgid "GNOME Shell extensions have a uuid property; this key lists extensions which should be loaded. Any extension that wants to be loaded needs to be in this list. You can also manipulate this list with the EnableExtension and DisableExtension DBus methods on org.gnome.Shell." msgstr "Додатоците за Gnome Shell имаат uuid својство; овој клуч ги листа додатоците кои ќе се вчитаат. Секој додаток кој треба да биде вчитан мора да стои во оваа листа. Можете да манипулирате со оваа листа со DBus методите EnableExtension и DisableExtension на org.gnome.Shell." #: ../data/org.gnome.shell.gschema.xml.in.h:6 msgid "History for command (Alt-F2) dialog" msgstr "Историја на дијалогот за команди (Alt-F2)" #: ../data/org.gnome.shell.gschema.xml.in.h:7 msgid "History for the looking glass dialog" msgstr "Историја на стаклениот дијалог" #: ../data/org.gnome.shell.gschema.xml.in.h:8 msgid "If true, display date in the clock, in addition to time." msgstr "Ако е точно, прикажи го датумот на часовникот, покрај времето." #: ../data/org.gnome.shell.gschema.xml.in.h:9 msgid "If true, display seconds in time." msgstr "Ако е точно, прикажи ги секундите во часовникот." #: ../data/org.gnome.shell.gschema.xml.in.h:10 msgid "If true, display the ISO week date in the calendar." msgstr "Ако е точно, прикажи го ISO датумот во календарот." #: ../data/org.gnome.shell.gschema.xml.in.h:11 msgid "List of desktop file IDs for favorite applications" msgstr "Листа на ID на desktop датотеки за омилените апликации" #: ../data/org.gnome.shell.gschema.xml.in.h:13 #, no-c-format msgid "Sets the GStreamer pipeline used to encode recordings. It follows the syntax used for gst-launch. The pipeline should have an unconnected sink pad where the recorded video is recorded. It will normally have a unconnected source pad; output from that pad will be written into the output file. However the pipeline can also take care of its own output - this might be used to send the output to an icecast server via shout2send or similar. When unset or set to an empty value, the default pipeline will be used. This is currently 'videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is used as a placeholder for a guess at the optimal thread count on the system." msgstr "Го поставува GStreamer цевководот за енкодирање на снимки. Ја следи синтаксата која се користи за gst-launch. Цевководот треба да има неповрзан одвод каде се зачувува сниманото видео. Вообичаено тој има неповрзан извор; излезните податоци ќе бидат запишани во излезната датотека. Сепак, цевководот може да се грижи за својот излез - тоа најчесто може да се користи за испраќање на излезните податоци на icecast сервер преку shout2send или слично. Кога не е поставен или пак е поставен на празна вредност, се користи стандардниот цевковод. Оваа вредност моментално е „videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux“ и снима во WEBM со користење на кодекот VP8. %T се користи за определување на оптималниот број на нишки за системот." #: ../data/org.gnome.shell.gschema.xml.in.h:14 msgid "Show date in clock" msgstr "Прикажи го датумот во часовникот" #: ../data/org.gnome.shell.gschema.xml.in.h:15 msgid "Show the week date in the calendar" msgstr "Покажи ја неделата во календарот" #: ../data/org.gnome.shell.gschema.xml.in.h:16 msgid "Show time with seconds" msgstr "Покажи го времето со секунди" #: ../data/org.gnome.shell.gschema.xml.in.h:17 msgid "The applications corresponding to these identifiers will be displayed in the favorites area." msgstr "Апликациите на кои се однесуваат овие идентификатори ќе бидат прикажани во површината за омилени." #: ../data/org.gnome.shell.gschema.xml.in.h:18 msgid "The filename for recorded screencasts will be a unique filename based on the current date, and use this extension. It should be changed when recording to a different container format." msgstr "Името на датотеката за зачуваните снимки од екранот ќе бидее уникатно според тековниот датум и ќе ја има оваа наставка. Таа треба да се промени кога снимањето се прави со различен формат на контејнерот. " #: ../data/org.gnome.shell.gschema.xml.in.h:19 msgid "The framerate of the resulting screencast recordered by GNOME Shell's screencast recorder in frames-per-second." msgstr "Ратата на рамки, во рамки/секунда, на добиената снимка на екранот снимана од алатката за правење снимки од екранот на GNOME Shell." #: ../data/org.gnome.shell.gschema.xml.in.h:20 msgid "The gstreamer pipeline used to encode the screencast" msgstr "Цевководот на gstreamer кој се користи за енкодирање на снимката од екран" #: ../data/org.gnome.shell.gschema.xml.in.h:21 msgid "The shell normally monitors active applications in order to present the most used ones (e.g. in launchers). While this data will be kept private, you may want to disable this for privacy reasons. Please note that doing so won't remove already saved data." msgstr "Школката обично ги набљудува активните апликации за да прикаже кои се најкористени (пр. во пуштачите). Иако овие податоци се се чуваат како приватни, може да го оневозможите ова за поголема приватност. Имајте во предвид дека со тоа нема да се отстранат тековно сниманите податоци." #: ../data/org.gnome.shell.gschema.xml.in.h:22 msgid "The type of keyboard to use." msgstr "Типот на тастатура кој се користи." #: ../data/org.gnome.shell.gschema.xml.in.h:23 msgid "Uuids of extensions to enable" msgstr "Uuid на екстензиите кои ќе се овозможат" #: ../data/org.gnome.shell.gschema.xml.in.h:24 msgid "Whether to collect stats about applications usage" msgstr "Дали да се собира статистика за користењето на апликациите" #: ../data/org.gnome.shell.gschema.xml.in.h:25 msgid "Which keyboard to use" msgstr "Која тастатура да се користи" #: ../data/org.gnome.shell.gschema.xml.in.h:26 msgid "disabled OpenSearch providers" msgstr "оневозможени OpenSearch провајдери" #: ../js/gdm/loginDialog.js:623 msgid "Session..." msgstr "Сесија..." #: ../js/gdm/loginDialog.js:785 msgctxt "title" msgid "Sign In" msgstr "Најави се" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger instead #: ../js/gdm/loginDialog.js:830 msgid "(or swipe finger)" msgstr "(или поминете со прстот)" #. translators: this message is shown below the user list on the #. login screen. It can be activated to reveal an entry for #. manually entering the username. #: ../js/gdm/loginDialog.js:851 msgid "Not listed?" msgstr "Не сте во листата?" #: ../js/gdm/loginDialog.js:1019 #: ../js/ui/endSessionDialog.js:418 #: ../js/ui/extensionSystem.js:516 #: ../js/ui/networkAgent.js:145 #: ../js/ui/polkitAuthenticationAgent.js:175 #: ../js/ui/status/bluetooth.js:462 msgid "Cancel" msgstr "Откажи" #: ../js/gdm/loginDialog.js:1024 msgctxt "button" msgid "Sign In" msgstr "Најави се" #: ../js/gdm/loginDialog.js:1376 msgid "Login Window" msgstr "Најавен прозорец" #: ../js/gdm/powerMenu.js:113 #: ../js/ui/userMenu.js:578 #: ../js/ui/userMenu.js:580 #: ../js/ui/userMenu.js:649 msgid "Suspend" msgstr "Суспендирај" #: ../js/gdm/powerMenu.js:118 msgid "Restart" msgstr "Рестартирај се" #: ../js/gdm/powerMenu.js:123 msgid "Power Off" msgstr "Исклучи се" #: ../js/misc/util.js:92 msgid "Command not found" msgstr "Командата не е пронајдена" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: ../js/misc/util.js:119 msgid "Could not parse command:" msgstr "Не можев да ја испарсирам командата:" #: ../js/misc/util.js:127 #, c-format msgid "Execution of '%s' failed:" msgstr "Извршувањето на „%s“ не успеа:" #. Translators: Filter to display all applications #: ../js/ui/appDisplay.js:251 msgid "All" msgstr "Сите" #: ../js/ui/appDisplay.js:310 msgid "APPLICATIONS" msgstr "АПЛИКАЦИИ" #: ../js/ui/appDisplay.js:366 msgid "SETTINGS" msgstr "ПОСТАВУВАЊА" #: ../js/ui/appDisplay.js:664 msgid "New Window" msgstr "Нов прозорец" #: ../js/ui/appDisplay.js:667 msgid "Remove from Favorites" msgstr "Отстрани од омилените" #: ../js/ui/appDisplay.js:668 msgid "Add to Favorites" msgstr "Додај во омилени" #: ../js/ui/appFavorites.js:87 #, c-format msgid "%s has been added to your favorites." msgstr "%s е веќе постои во омилените." #: ../js/ui/appFavorites.js:118 #, c-format msgid "%s has been removed from your favorites." msgstr "%s е отстранет од листата на омилени." #: ../js/ui/autorunManager.js:265 msgid "Removable Devices" msgstr "Отстранливи уреди" #: ../js/ui/autorunManager.js:560 #, c-format msgid "Open with %s" msgstr "Отвори со %s" #: ../js/ui/autorunManager.js:586 msgid "Eject" msgstr "Извади" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: ../js/ui/calendar.js:62 msgctxt "event list time" msgid "All Day" msgstr "Цел ден" #. Translators: Shown in calendar event list, if 24h format #: ../js/ui/calendar.js:67 msgctxt "event list time" msgid "%H:%M" msgstr "%H:%M" #. Transators: Shown in calendar event list, if 12h format #: ../js/ui/calendar.js:74 msgctxt "event list time" msgid "%l:%M %p" msgstr "%l:%M %p" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: ../js/ui/calendar.js:114 msgctxt "grid sunday" msgid "S" msgstr "Н" #. Translators: Calendar grid abbreviation for Monday #: ../js/ui/calendar.js:116 msgctxt "grid monday" msgid "M" msgstr "П" #. Translators: Calendar grid abbreviation for Tuesday #: ../js/ui/calendar.js:118 msgctxt "grid tuesday" msgid "T" msgstr "В" #. Translators: Calendar grid abbreviation for Wednesday #: ../js/ui/calendar.js:120 msgctxt "grid wednesday" msgid "W" msgstr "С" #. Translators: Calendar grid abbreviation for Thursday #: ../js/ui/calendar.js:122 msgctxt "grid thursday" msgid "T" msgstr "Ч" #. Translators: Calendar grid abbreviation for Friday #: ../js/ui/calendar.js:124 msgctxt "grid friday" msgid "F" msgstr "П" #. Translators: Calendar grid abbreviation for Saturday #: ../js/ui/calendar.js:126 msgctxt "grid saturday" msgid "S" msgstr "С" #. Translators: Event list abbreviation for Sunday. #. * #. * NOTE: These list abbreviations are normally not shown together #. * so they need to be unique (e.g. Tuesday and Thursday cannot #. * both be 'T'). #. #: ../js/ui/calendar.js:139 msgctxt "list sunday" msgid "Su" msgstr "Нед" #. Translators: Event list abbreviation for Monday #: ../js/ui/calendar.js:141 msgctxt "list monday" msgid "M" msgstr "Пон" #. Translators: Event list abbreviation for Tuesday #: ../js/ui/calendar.js:143 msgctxt "list tuesday" msgid "T" msgstr "Вто" #. Translators: Event list abbreviation for Wednesday #: ../js/ui/calendar.js:145 msgctxt "list wednesday" msgid "W" msgstr "Сре" #. Translators: Event list abbreviation for Thursday #: ../js/ui/calendar.js:147 msgctxt "list thursday" msgid "Th" msgstr "Чет" #. Translators: Event list abbreviation for Friday #: ../js/ui/calendar.js:149 msgctxt "list friday" msgid "F" msgstr "Пет" #. Translators: Event list abbreviation for Saturday #: ../js/ui/calendar.js:151 msgctxt "list saturday" msgid "S" msgstr "Саб" #. Translators: Text to show if there are no events #: ../js/ui/calendar.js:681 msgid "Nothing Scheduled" msgstr "Нема ништо закажано" #. Translators: Shown on calendar heading when selected day occurs on current year #: ../js/ui/calendar.js:697 msgctxt "calendar heading" msgid "%A, %B %d" msgstr "%A, %B %d" #. Translators: Shown on calendar heading when selected day occurs on different year #: ../js/ui/calendar.js:700 msgctxt "calendar heading" msgid "%A, %B %d, %Y" msgstr "%A, %B %d, %Y" #: ../js/ui/calendar.js:710 msgid "Today" msgstr "Денес" #: ../js/ui/calendar.js:714 msgid "Tomorrow" msgstr "Утре" #: ../js/ui/calendar.js:723 msgid "This week" msgstr "Оваа недела" #: ../js/ui/calendar.js:731 msgid "Next week" msgstr "Следната недела" #: ../js/ui/contactDisplay.js:63 #: ../js/ui/notificationDaemon.js:466 #: ../js/ui/status/power.js:215 #: ../src/shell-app.c:350 msgid "Unknown" msgstr "Непознато" #: ../js/ui/contactDisplay.js:84 #: ../js/ui/userMenu.js:127 msgid "Available" msgstr "Достапен" #: ../js/ui/contactDisplay.js:89 #: ../js/ui/userMenu.js:136 msgid "Away" msgstr "Отсутен" #: ../js/ui/contactDisplay.js:93 #: ../js/ui/userMenu.js:130 msgid "Busy" msgstr "Зафатен" #: ../js/ui/contactDisplay.js:97 msgid "Offline" msgstr "Офлајн" #: ../js/ui/contactDisplay.js:141 msgid "CONTACTS" msgstr "КОНТАКТИ" #: ../js/ui/dash.js:169 #: ../js/ui/messageTray.js:1204 msgid "Remove" msgstr "Отстрани" #: ../js/ui/dateMenu.js:96 msgid "Date and Time Settings" msgstr "Поставувања за датум и време" #: ../js/ui/dateMenu.js:122 msgid "Open Calendar" msgstr "Отвори го календарот" #. Translators: This is the time format with date used #. in 24-hour mode. #: ../js/ui/dateMenu.js:180 msgid "%a %b %e, %R:%S" msgstr "%a %b %e, %R:%S" #: ../js/ui/dateMenu.js:181 msgid "%a %b %e, %R" msgstr "%a %b %e, %R" #. Translators: This is the time format without date used #. in 24-hour mode. #: ../js/ui/dateMenu.js:185 msgid "%a %R:%S" msgstr "%a %R:%S" #: ../js/ui/dateMenu.js:186 msgid "%a %R" msgstr "%a %R" #. Translators: This is a time format with date used #. for AM/PM. #: ../js/ui/dateMenu.js:193 msgid "%a %b %e, %l:%M:%S %p" msgstr "%a %b %e, %l:%M:%S %p" #: ../js/ui/dateMenu.js:194 msgid "%a %b %e, %l:%M %p" msgstr "%a %b %e, %l:%M %p" #. Translators: This is a time format without date used #. for AM/PM. #: ../js/ui/dateMenu.js:198 msgid "%a %l:%M:%S %p" msgstr "%a %l:%M:%S %p" #: ../js/ui/dateMenu.js:199 msgid "%a %l:%M %p" msgstr "%a %l:%M %p" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM"). #. #: ../js/ui/dateMenu.js:210 msgid "%A %B %e, %Y" msgstr "%A %B %e, %Y" #: ../js/ui/docDisplay.js:13 msgid "RECENT ITEMS" msgstr "СКОРЕШНИ ПРЕДМЕТИ" #: ../js/ui/endSessionDialog.js:61 #, c-format msgctxt "title" msgid "Log Out %s" msgstr "Одјави го „%s“" #: ../js/ui/endSessionDialog.js:62 msgctxt "title" msgid "Log Out" msgstr "Одјави се" #: ../js/ui/endSessionDialog.js:63 msgid "Click Log Out to quit these applications and log out of the system." msgstr "Кликнете „Одјави се“ за да се исклучат овие апликации и за одјавување од системот." #: ../js/ui/endSessionDialog.js:65 #, c-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "%s ќе биде автоматски одјавен од системот за %d секунда." msgstr[1] "%s ќе биде автоматски одјавен од системот за %d секунди." #: ../js/ui/endSessionDialog.js:70 #, c-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "Ќе бидете автоматски одјавен од системот за %d секунда." msgstr[1] "Ќе бидете автоматски одјавен од системот за %d секунди." #: ../js/ui/endSessionDialog.js:74 msgid "Logging out of the system." msgstr "Одјавување од системот." #: ../js/ui/endSessionDialog.js:76 msgctxt "button" msgid "Log Out" msgstr "Одјави се" #: ../js/ui/endSessionDialog.js:81 msgctxt "title" msgid "Power Off" msgstr "Исклучи се" #: ../js/ui/endSessionDialog.js:82 msgid "Click Power Off to quit these applications and power off the system." msgstr "Кликнете „Исклучи се“ за да ги исклучите овие апликации и да го исклучите системот." #: ../js/ui/endSessionDialog.js:84 #, c-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "Системот ќе се исклучи автоматски за %d секунда." msgstr[1] "Системот ќе се исклучи автоматски за %d секунди." #: ../js/ui/endSessionDialog.js:88 msgid "Powering off the system." msgstr "Го исклучувам системот." #: ../js/ui/endSessionDialog.js:90 #: ../js/ui/endSessionDialog.js:107 msgctxt "button" msgid "Restart" msgstr "Рестартирај се" #: ../js/ui/endSessionDialog.js:92 msgctxt "button" msgid "Power Off" msgstr "Исклучи се" #: ../js/ui/endSessionDialog.js:98 msgctxt "title" msgid "Restart" msgstr "Рестартирај се" #: ../js/ui/endSessionDialog.js:99 msgid "Click Restart to quit these applications and restart the system." msgstr "Кликнете „Рестартирај се“ за да ги исклучите овие апликации и да го рестартирате системот." #: ../js/ui/endSessionDialog.js:101 #, c-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "Системот ќе се рестартира автоматски за %d секунда." msgstr[1] "Системот ќе се рестартира автоматски за %d секунди." #: ../js/ui/endSessionDialog.js:105 msgid "Restarting the system." msgstr "Го рестартирам системот." #: ../js/ui/extensionSystem.js:520 msgid "Install" msgstr "Инсталирај" #: ../js/ui/extensionSystem.js:524 #, c-format msgid "Download and install '%s' from extensions.gnome.org?" msgstr "Да го преземам и инсталирам „%s“ од extensions.gnome.org?" #: ../js/ui/keyboard.js:322 msgid "tray" msgstr "место за известување" #: ../js/ui/keyboard.js:539 #: ../js/ui/status/power.js:203 msgid "Keyboard" msgstr "Тастатура" #: ../js/ui/lookingGlass.js:724 msgid "No extensions installed" msgstr "Не е инсталиран додаток" #. Translators: argument is an extension UUID. #: ../js/ui/lookingGlass.js:779 #, c-format msgid "%s has not emitted any errors." msgstr "%s не испрати никакви грешки." #: ../js/ui/lookingGlass.js:785 msgid "Hide Errors" msgstr "Скриј ги грешките" #: ../js/ui/lookingGlass.js:789 #: ../js/ui/lookingGlass.js:840 msgid "Show Errors" msgstr "Прикажи ги грешките" #: ../js/ui/lookingGlass.js:798 msgid "Enabled" msgstr "Овозможено" #. translators: #. * The device has been disabled #: ../js/ui/lookingGlass.js:801 #: ../src/gvc/gvc-mixer-control.c:1093 msgid "Disabled" msgstr "Оневозможено" #: ../js/ui/lookingGlass.js:803 msgid "Error" msgstr "Грешка" #: ../js/ui/lookingGlass.js:805 msgid "Out of date" msgstr "Застарено" #: ../js/ui/lookingGlass.js:807 msgid "Downloading" msgstr "Преземам" #: ../js/ui/lookingGlass.js:828 msgid "View Source" msgstr "Погледни го изворот" #: ../js/ui/lookingGlass.js:834 msgid "Web Page" msgstr "Веб страница" #: ../js/ui/messageTray.js:1197 msgid "Open" msgstr "Отвори" #: ../js/ui/messageTray.js:1214 msgid "Unmute" msgstr "Пушти го гласот" #: ../js/ui/messageTray.js:1214 msgid "Mute" msgstr "Исклучи го гласот" #: ../js/ui/messageTray.js:2444 msgid "System Information" msgstr "Информации за системот" #: ../js/ui/networkAgent.js:140 msgid "Connect" msgstr "Поврзи се" #. Cisco LEAP #: ../js/ui/networkAgent.js:235 #: ../js/ui/networkAgent.js:247 #: ../js/ui/networkAgent.js:274 #: ../js/ui/networkAgent.js:294 #: ../js/ui/networkAgent.js:304 msgid "Password: " msgstr "Лозинка:" #. static WEP #: ../js/ui/networkAgent.js:240 msgid "Key: " msgstr "Клуч:" #. TTLS and PEAP are actually much more complicated, but this complication #. is not visible here since we only care about phase2 authentication #. (and don't even care of which one) #: ../js/ui/networkAgent.js:272 #: ../js/ui/networkAgent.js:290 msgid "Username: " msgstr "Корисничко име:" #: ../js/ui/networkAgent.js:278 msgid "Identity: " msgstr "Идентитет:" #: ../js/ui/networkAgent.js:280 msgid "Private key password: " msgstr "Лозинка на приватниот клуч:" #: ../js/ui/networkAgent.js:292 msgid "Service: " msgstr "Сервис:" #: ../js/ui/networkAgent.js:321 msgid "Authentication required by wireless network" msgstr "Потребна е автентикација од безжичната мрежа" #: ../js/ui/networkAgent.js:322 #, c-format msgid "Passwords or encryption keys are required to access the wireless network '%s'." msgstr "Потребни се лозинки или клучеви за енкрипција за пристап на безжичната мрежа „%s“." #: ../js/ui/networkAgent.js:326 msgid "Wired 802.1X authentication" msgstr "Жичена 802.1X автентикација" #: ../js/ui/networkAgent.js:328 msgid "Network name: " msgstr "Име на мрежа:" #: ../js/ui/networkAgent.js:333 msgid "DSL authentication" msgstr "DSL автентикација" #: ../js/ui/networkAgent.js:340 msgid "PIN code required" msgstr "Потребен е PIN код" #: ../js/ui/networkAgent.js:341 msgid "PIN code is needed for the mobile broadband device" msgstr "Потребен е PIN кодот за мобилниот уред" #: ../js/ui/networkAgent.js:342 msgid "PIN: " msgstr "PIN:" #: ../js/ui/networkAgent.js:348 msgid "Mobile broadband network password" msgstr "Лозинка за мобилна широкопојасна мрежа " #: ../js/ui/networkAgent.js:349 #, c-format msgid "A password is required to connect to '%s'." msgstr "Потребна е лозинка за поврзување со „%s“." #: ../js/ui/overview.js:89 msgid "Undo" msgstr "Врати" #: ../js/ui/overview.js:198 msgid "Windows" msgstr "Прозорци" #: ../js/ui/overview.js:201 msgid "Applications" msgstr "Апликации" #. Translators: this is the name of the dock/favorites area on #. the left of the overview #: ../js/ui/overview.js:223 msgid "Dash" msgstr "Лента" #. TODO - _quit() doesn't really work on apps in state STARTING yet #: ../js/ui/panel.js:532 #, c-format msgid "Quit %s" msgstr "Исклучи го %s" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: ../js/ui/panel.js:565 msgid "Activities" msgstr "Активности" #: ../js/ui/panel.js:953 msgid "Top Bar" msgstr "Горна лента" #: ../js/ui/placeDisplay.js:115 #, c-format msgid "Failed to unmount '%s'" msgstr "Не успеав да го одмонтирам „%s“" #: ../js/ui/placeDisplay.js:118 msgid "Retry" msgstr "Обиди се повторно" #: ../js/ui/placeDisplay.js:156 msgid "Connect to..." msgstr "Поврзи се со..." #: ../js/ui/placeDisplay.js:364 msgid "PLACES & DEVICES" msgstr "МЕСТА И УРЕДИ" #: ../js/ui/polkitAuthenticationAgent.js:71 msgid "Authentication Required" msgstr "Потребна е автентикација" #: ../js/ui/polkitAuthenticationAgent.js:109 msgid "Administrator" msgstr "Администратор" #: ../js/ui/polkitAuthenticationAgent.js:179 msgid "Authenticate" msgstr "Автентицирај се" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: ../js/ui/polkitAuthenticationAgent.js:260 msgid "Sorry, that didn't work. Please try again." msgstr "Жалам, но тоа не успеа. Пробајте пак." #: ../js/ui/polkitAuthenticationAgent.js:272 msgid "Password:" msgstr "Лозинка:" #. Translators: this MUST be either "toggle-switch-us" #. (for toggle switches containing the English words #. "ON" and "OFF") or "toggle-switch-intl" (for toggle #. switches containing "◯" and "|"). Other values will #. simply result in invisible toggle switches. #: ../js/ui/popupMenu.js:717 msgid "toggle-switch-us" msgstr "toggle-switch-intl" #: ../js/ui/runDialog.js:205 msgid "Please enter a command:" msgstr "Ве молам, внесете команда:" #: ../js/ui/searchDisplay.js:333 msgid "Searching..." msgstr "Барам..." #: ../js/ui/searchDisplay.js:356 msgid "No matching results." msgstr "Нема резултати." #: ../js/ui/shellEntry.js:26 msgid "Copy" msgstr "Копирај" #: ../js/ui/shellEntry.js:31 msgid "Paste" msgstr "Вметни" #: ../js/ui/shellEntry.js:77 msgid "Show Text" msgstr "Прикажи текст" #: ../js/ui/shellEntry.js:79 msgid "Hide Text" msgstr "Скриј го текстот" #: ../js/ui/shellMountOperation.js:269 msgid "Wrong password, please try again" msgstr "Грешна лозинка, пробајте пак" #: ../js/ui/status/accessibility.js:52 msgid "Zoom" msgstr "Зумирај" #. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA, #. 'screen-reader-enabled'); #. this.menu.addMenuItem(screenReader); #: ../js/ui/status/accessibility.js:63 msgid "Screen Keyboard" msgstr "Екранска тастатура" #: ../js/ui/status/accessibility.js:67 msgid "Visual Alerts" msgstr "Визуелни аларми" #: ../js/ui/status/accessibility.js:70 msgid "Sticky Keys" msgstr "Лепливи копчиња" #: ../js/ui/status/accessibility.js:73 msgid "Slow Keys" msgstr "Бавни копчиња" #: ../js/ui/status/accessibility.js:76 msgid "Bounce Keys" msgstr "Враќачки копчиња" #: ../js/ui/status/accessibility.js:79 msgid "Mouse Keys" msgstr "Копчиња на глушец" #: ../js/ui/status/accessibility.js:83 msgid "Universal Access Settings" msgstr "Поставувања за универзален пристап" #: ../js/ui/status/accessibility.js:117 msgid "High Contrast" msgstr "Висок контраст" #: ../js/ui/status/accessibility.js:154 msgid "Large Text" msgstr "Голем текст" #: ../js/ui/status/bluetooth.js:35 #: ../js/ui/status/bluetooth.js:258 #: ../js/ui/status/bluetooth.js:341 #: ../js/ui/status/bluetooth.js:371 #: ../js/ui/status/bluetooth.js:407 #: ../js/ui/status/bluetooth.js:436 msgid "Bluetooth" msgstr "Bluetooth" #: ../js/ui/status/bluetooth.js:48 msgid "Visibility" msgstr "Видливост" #: ../js/ui/status/bluetooth.js:62 msgid "Send Files to Device..." msgstr "Испрати датотеки до уред..." #: ../js/ui/status/bluetooth.js:63 msgid "Set up a New Device..." msgstr "Постави нов уред..." #: ../js/ui/status/bluetooth.js:87 msgid "Bluetooth Settings" msgstr "Поставувања за bluetooth" #. TRANSLATORS: this means that bluetooth was disabled by hardware rfkill #: ../js/ui/status/bluetooth.js:107 #: ../js/ui/status/network.js:255 msgid "hardware disabled" msgstr "уредот е оневозможен" #: ../js/ui/status/bluetooth.js:203 msgid "Connection" msgstr "Врска" #: ../js/ui/status/bluetooth.js:214 #: ../js/ui/status/network.js:477 msgid "disconnecting..." msgstr "ја прекинувам врската..." #: ../js/ui/status/bluetooth.js:227 #: ../js/ui/status/network.js:483 msgid "connecting..." msgstr "се поврзувам..." #: ../js/ui/status/bluetooth.js:245 msgid "Send Files..." msgstr "Испраќам датотеки..." #: ../js/ui/status/bluetooth.js:250 msgid "Browse Files..." msgstr "Прелистај низ датотеките..." #: ../js/ui/status/bluetooth.js:259 msgid "Error browsing device" msgstr "Грешка при прелистувањето низ уредот" #: ../js/ui/status/bluetooth.js:260 #, c-format msgid "The requested device cannot be browsed, error is '%s'" msgstr "Низ побараниот уред не може да се прелистува, грешката е „%s“" #: ../js/ui/status/bluetooth.js:268 msgid "Keyboard Settings" msgstr "Поставувања за тастатура" #: ../js/ui/status/bluetooth.js:271 msgid "Mouse Settings" msgstr "Поставувања за глушец" #: ../js/ui/status/bluetooth.js:276 #: ../js/ui/status/volume.js:58 msgid "Sound Settings" msgstr "Поставувања за звук" #: ../js/ui/status/bluetooth.js:372 #, c-format msgid "Authorization request from %s" msgstr "Барање за авторизација од %s" #: ../js/ui/status/bluetooth.js:378 #, c-format msgid "Device %s wants access to the service '%s'" msgstr "Уредот %s бара пристап до сервисот „%s“" #: ../js/ui/status/bluetooth.js:380 msgid "Always grant access" msgstr "Секогаш доделувај му пристап" #: ../js/ui/status/bluetooth.js:381 msgid "Grant this time only" msgstr "Додели му само овој пат" #: ../js/ui/status/bluetooth.js:382 #: ../js/ui/telepathyClient.js:1181 msgid "Reject" msgstr "Одбиј" #: ../js/ui/status/bluetooth.js:408 #, c-format msgid "Pairing confirmation for %s" msgstr "Потврда за спарување за %s" #: ../js/ui/status/bluetooth.js:414 #: ../js/ui/status/bluetooth.js:444 #, c-format msgid "Device %s wants to pair with this computer" msgstr "Уредот %s сака да се спари со компјутерот" #: ../js/ui/status/bluetooth.js:415 #, c-format msgid "Please confirm whether the PIN '%s' matches the one on the device." msgstr "Потврдете дека PIN-от „%s“ одговара со тој на уредот." #: ../js/ui/status/bluetooth.js:417 msgid "Matches" msgstr "Одговара" #: ../js/ui/status/bluetooth.js:418 msgid "Does not match" msgstr "Не одговара" #: ../js/ui/status/bluetooth.js:437 #, c-format msgid "Pairing request for %s" msgstr "Барање за спарување со %s" #: ../js/ui/status/bluetooth.js:445 msgid "Please enter the PIN mentioned on the device." msgstr "Внесете го PIN-от кој се појавува на уредот." #: ../js/ui/status/bluetooth.js:461 msgid "OK" msgstr "Во ред" #: ../js/ui/status/keyboard.js:68 msgid "Show Keyboard Layout" msgstr "Прикажи го распоредот на тастатурата" #: ../js/ui/status/keyboard.js:73 msgid "Region and Language Settings" msgstr "Поставувања за регион и јазик" #: ../js/ui/status/network.js:96 msgid "" msgstr "<непознато>" #. Translators: this indicates that wireless or wwan is disabled by hardware killswitch #: ../js/ui/status/network.js:277 msgid "disabled" msgstr "оневозможена" #. Translators: this is for network devices that are physically present but are not #. under NetworkManager's control (and thus cannot be used in the menu) #: ../js/ui/status/network.js:475 msgid "unmanaged" msgstr "неменаџирана" #. Translators: this is for network connections that require some kind of key or password #: ../js/ui/status/network.js:486 msgid "authentication required" msgstr "потребна е автентикација" #. Translators: this is for devices that require some kind of firmware or kernel #. module, which is missing #: ../js/ui/status/network.js:496 msgid "firmware missing" msgstr "недостасува firmware" #. Translators: this is for wired network devices that are physically disconnected #: ../js/ui/status/network.js:503 msgid "cable unplugged" msgstr "кабелот е откачен" #. Translators: this is for a network device that cannot be activated (for example it #. is disabled by rfkill, or it has no coverage #: ../js/ui/status/network.js:508 msgid "unavailable" msgstr "нема пристап" #: ../js/ui/status/network.js:510 msgid "connection failed" msgstr "не успеа врската" #: ../js/ui/status/network.js:566 #: ../js/ui/status/network.js:1508 msgid "More..." msgstr "Повеќе..." #. TRANSLATORS: this is the indication that a connection for another logged in user is active, #. and we cannot access its settings (including the name) #: ../js/ui/status/network.js:602 #: ../js/ui/status/network.js:1443 msgid "Connected (private)" msgstr "Поврзан (приватен)" #: ../js/ui/status/network.js:677 msgid "Auto Ethernet" msgstr "Автоматски ethernet" #: ../js/ui/status/network.js:738 msgid "Auto broadband" msgstr "Автоматски широкопојасен" #: ../js/ui/status/network.js:741 msgid "Auto dial-up" msgstr "Автоматски dial-up" #. TRANSLATORS: this the automatic wireless connection name (including the network name) #: ../js/ui/status/network.js:860 #: ../js/ui/status/network.js:1455 #, c-format msgid "Auto %s" msgstr "Aвтоматски %s" #: ../js/ui/status/network.js:862 msgid "Auto bluetooth" msgstr "Автоматски bluetooth" #: ../js/ui/status/network.js:1457 msgid "Auto wireless" msgstr "Автоматски безжично" #: ../js/ui/status/network.js:1551 msgid "Enable networking" msgstr "Овозможи мрежа" #: ../js/ui/status/network.js:1563 msgid "Wired" msgstr "Жичена" #: ../js/ui/status/network.js:1574 msgid "Wireless" msgstr "Безжична" #: ../js/ui/status/network.js:1584 msgid "Mobile broadband" msgstr "Мобилна широкопојасна мрежа" #: ../js/ui/status/network.js:1594 msgid "VPN Connections" msgstr "VPN врски" #: ../js/ui/status/network.js:1605 msgid "Network Settings" msgstr "Поставувања за мрежата" #: ../js/ui/status/network.js:1742 msgid "Connection failed" msgstr "Врската не успеа" #: ../js/ui/status/network.js:1743 msgid "Activation of network connection failed" msgstr "Активирањето на мрежата не успеа" #: ../js/ui/status/network.js:1993 msgid "Networking is disabled" msgstr "Мрежата е оневозможена" #: ../js/ui/status/network.js:2117 msgid "Network Manager" msgstr "Менаџер на мрежи" #: ../js/ui/status/power.js:77 msgid "Power Settings" msgstr "Поставувања за енергијата" #. 0 is reported when UPower does not have enough data #. to estimate battery life #: ../js/ui/status/power.js:98 msgid "Estimating..." msgstr "Проценувам..." #: ../js/ui/status/power.js:105 #, c-format msgid "%d hour remaining" msgid_plural "%d hours remaining" msgstr[0] "преостанува уште %d час" msgstr[1] "преостануваат уште %d часа" #. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining" #: ../js/ui/status/power.js:108 #, c-format msgid "%d %s %d %s remaining" msgstr "преостануваат уште %d %s %d %s" #: ../js/ui/status/power.js:110 msgid "hour" msgid_plural "hours" msgstr[0] "час" msgstr[1] "часа" #: ../js/ui/status/power.js:110 msgid "minute" msgid_plural "minutes" msgstr[0] "минута" msgstr[1] "минути" #: ../js/ui/status/power.js:113 #, c-format msgid "%d minute remaining" msgid_plural "%d minutes remaining" msgstr[0] "преостанува уште %d минута" msgstr[1] "преостануваат уште %d минути" #: ../js/ui/status/power.js:116 #: ../js/ui/status/power.js:186 #, c-format msgctxt "percent of battery remaining" msgid "%d%%" msgstr "%d%%" #: ../js/ui/status/power.js:193 msgid "AC adapter" msgstr "Адаптер" #: ../js/ui/status/power.js:195 msgid "Laptop battery" msgstr "Батерија од лаптоп" #: ../js/ui/status/power.js:197 msgid "UPS" msgstr "UPS" #: ../js/ui/status/power.js:199 msgid "Monitor" msgstr "Монитор" #: ../js/ui/status/power.js:201 msgid "Mouse" msgstr "Глушец" #: ../js/ui/status/power.js:205 msgid "PDA" msgstr "PDA" #: ../js/ui/status/power.js:207 msgid "Cell phone" msgstr "Мобилен телефон" #: ../js/ui/status/power.js:209 msgid "Media player" msgstr "Плеер" #: ../js/ui/status/power.js:211 msgid "Tablet" msgstr "Таблет" #: ../js/ui/status/power.js:213 msgid "Computer" msgstr "Компјутер" #: ../js/ui/status/volume.js:38 msgid "Volume" msgstr "Гласност" #: ../js/ui/status/volume.js:50 msgid "Microphone" msgstr "Микрофон" #. We got the TpContact #. FIXME: We don't have a 'chat room' icon (bgo #653737) use #. system-users for now as Empathy does. #: ../js/ui/telepathyClient.js:256 msgid "Invitation" msgstr "Покана" #. We got the TpContact #: ../js/ui/telepathyClient.js:324 msgid "Call" msgstr "Повик" #. We got the TpContact #: ../js/ui/telepathyClient.js:354 msgid "File Transfer" msgstr "Пренос на датотеки" #: ../js/ui/telepathyClient.js:435 msgid "Subscription request" msgstr "Барање за претплата" #: ../js/ui/telepathyClient.js:471 msgid "Connection error" msgstr "Грешка во поврзувањето" #: ../js/ui/telepathyClient.js:735 #, c-format msgid "%s is online." msgstr "%s е онлајн." #: ../js/ui/telepathyClient.js:740 #, c-format msgid "%s is offline." msgstr "%s е офлајн." #: ../js/ui/telepathyClient.js:743 #, c-format msgid "%s is away." msgstr "%s е отсутен/на." #: ../js/ui/telepathyClient.js:746 #, c-format msgid "%s is busy." msgstr "%s е зафатен(а)." #. Translators: this is a time format string followed by a date. #. If applicable, replace %X with a strftime format valid for your #. locale, without seconds. #: ../js/ui/telepathyClient.js:977 #, no-c-format msgid "Sent at %X on %A" msgstr "Испратено на %X на %A" #. Translators: this is a time format in the style of "Wednesday, May 25", #. shown when you get a chat message in the same year. #: ../js/ui/telepathyClient.js:983 #, no-c-format msgid "Sent on %A, %B %d" msgstr "Испратено на %A, %d %B" #. Translators: this is a time format in the style of "Wednesday, May 25, 2012", #. shown when you get a chat message in a different year. #: ../js/ui/telepathyClient.js:988 #, no-c-format msgid "Sent on %A, %B %d, %Y" msgstr "Испратено на %A, %B %d, %Y" #. Translators: this is the other person changing their old IM name to their new #. IM name. #: ../js/ui/telepathyClient.js:1030 #, c-format msgid "%s is now known as %s" msgstr "%s е сега познат(а) како %s" #. translators: argument is a room name like #. * room@jabber.org for example. #: ../js/ui/telepathyClient.js:1132 #, c-format msgid "Invitation to %s" msgstr "Покана до %s" #. translators: first argument is the name of a contact and the second #. * one the name of a room. "Alice is inviting you to join room@jabber.org #. * for example. #: ../js/ui/telepathyClient.js:1140 #, c-format msgid "%s is inviting you to join %s" msgstr "%s Ве поканува да се придружите во %s" #: ../js/ui/telepathyClient.js:1142 #: ../js/ui/telepathyClient.js:1222 #: ../js/ui/telepathyClient.js:1320 msgid "Decline" msgstr "Одбиј" #: ../js/ui/telepathyClient.js:1143 #: ../js/ui/telepathyClient.js:1223 #: ../js/ui/telepathyClient.js:1321 msgid "Accept" msgstr "Прифати" #. translators: argument is a contact name like Alice for example. #: ../js/ui/telepathyClient.js:1173 #, c-format msgid "Video call from %s" msgstr "Видео повик од %s" #. translators: argument is a contact name like Alice for example. #: ../js/ui/telepathyClient.js:1176 #, c-format msgid "Call from %s" msgstr "Повик од %s" #. translators: this is a button label (verb), not a noun #: ../js/ui/telepathyClient.js:1183 msgid "Answer" msgstr "Одговори" #. To translators: The first parameter is #. * the contact's alias and the second one is the #. * file name. The string will be something #. * like: "Alice is sending you test.ogg" #. #: ../js/ui/telepathyClient.js:1216 #, c-format msgid "%s is sending you %s" msgstr "%s Ви праќа %s" #. To translators: The parameter is the contact's alias #: ../js/ui/telepathyClient.js:1285 #, c-format msgid "%s would like permission to see when you are online" msgstr "%s бара дозвола да гледа кога сте онлајн" #: ../js/ui/telepathyClient.js:1378 msgid "Network error" msgstr "Грешка во мрежата" #: ../js/ui/telepathyClient.js:1380 msgid "Authentication failed" msgstr "Автентикацијата не успеа" #: ../js/ui/telepathyClient.js:1382 msgid "Encryption error" msgstr "Грешка во енкрипцијата" #: ../js/ui/telepathyClient.js:1384 msgid "Certificate not provided" msgstr "Не е обезбеден сертификат" #: ../js/ui/telepathyClient.js:1386 msgid "Certificate untrusted" msgstr "Сертификатот не е доверлив" #: ../js/ui/telepathyClient.js:1388 msgid "Certificate expired" msgstr "Сертификатот е истечен" #: ../js/ui/telepathyClient.js:1390 msgid "Certificate not activated" msgstr "Сертификатот не е активиран" #: ../js/ui/telepathyClient.js:1392 msgid "Certificate hostname mismatch" msgstr "Името на хостот на сертификатот не одговара" #: ../js/ui/telepathyClient.js:1394 msgid "Certificate fingerprint mismatch" msgstr "Отпечатокот на сертификатот не одговара" #: ../js/ui/telepathyClient.js:1396 msgid "Certificate self-signed" msgstr "Сертификатот е самопотпишан" #: ../js/ui/telepathyClient.js:1398 msgid "Status is set to offline" msgstr "Статусот е поставен на „офлајн“" #: ../js/ui/telepathyClient.js:1400 msgid "Encryption is not available" msgstr "Енкрипцијата не е достапна" #: ../js/ui/telepathyClient.js:1402 msgid "Certificate is invalid" msgstr "Сертификатот не е валиден" #: ../js/ui/telepathyClient.js:1404 msgid "Connection has been refused" msgstr "Врската беше одбиена" #: ../js/ui/telepathyClient.js:1406 msgid "Connection can't be established" msgstr "Врската не може да се воспостави" #: ../js/ui/telepathyClient.js:1408 msgid "Connection has been lost" msgstr "Врската е загубена" #: ../js/ui/telepathyClient.js:1410 msgid "This resource is already connected to the server" msgstr "Ресурсот е веќе поврзан на серверот" #: ../js/ui/telepathyClient.js:1412 msgid "Connection has been replaced by a new connection using the same resource" msgstr "Врската е заменета со нова врска со користење на истиот ресурс" #: ../js/ui/telepathyClient.js:1414 msgid "The account already exists on the server" msgstr "Сметката веќе постои на серверот" #: ../js/ui/telepathyClient.js:1416 msgid "Server is currently too busy to handle the connection" msgstr "Серверот е моментално презафатен за да се справи со врската" #: ../js/ui/telepathyClient.js:1418 msgid "Certificate has been revoked" msgstr "Сертификатот е отповикан" #: ../js/ui/telepathyClient.js:1420 msgid "Certificate uses an insecure cipher algorithm or is cryptographically weak" msgstr "Сертификатот користи небезбеден алгоритам за шифрирање или е криптографски слаб" #: ../js/ui/telepathyClient.js:1422 msgid "The length of the server certificate, or the depth of the server certificate chain, exceed the limits imposed by the cryptography library" msgstr "Должината на сертификатот од серверот или длабочината на веригата од сертификати ги надминува границите на библиотеката за криптографија" #. translators: argument is the account name, like #. * name@jabber.org for example. #: ../js/ui/telepathyClient.js:1432 #, c-format msgid "Connection to %s failed" msgstr "Врската со %s не успеа" #: ../js/ui/telepathyClient.js:1441 msgid "Reconnect" msgstr "Поврзи се пак" #: ../js/ui/telepathyClient.js:1442 msgid "Edit account" msgstr "Уреди ја сметката" #: ../js/ui/telepathyClient.js:1488 msgid "Unknown reason" msgstr "Непозната причина" #: ../js/ui/userMenu.js:133 msgid "Hidden" msgstr "Скриен" #: ../js/ui/userMenu.js:139 msgid "Idle" msgstr "Неактивен" #: ../js/ui/userMenu.js:142 msgid "Unavailable" msgstr "Недостапен" #: ../js/ui/userMenu.js:576 #: ../js/ui/userMenu.js:580 #: ../js/ui/userMenu.js:650 msgid "Power Off..." msgstr "Исклучи се..." #: ../js/ui/userMenu.js:612 msgid "Notifications" msgstr "Известувања" #: ../js/ui/userMenu.js:620 msgid "Online Accounts" msgstr "Онлајн сметки" #: ../js/ui/userMenu.js:624 msgid "System Settings" msgstr "Поставувања за системот" #: ../js/ui/userMenu.js:631 msgid "Lock Screen" msgstr "Заклучи го екранот" #: ../js/ui/userMenu.js:636 msgid "Switch User" msgstr "Смени корисник" #: ../js/ui/userMenu.js:641 msgid "Log Out..." msgstr "Одјави се..." #: ../js/ui/userMenu.js:669 msgid "Your chat status will be set to busy" msgstr "Вашиот статус на разговорите ќе биде поставен на „зафатен“" #: ../js/ui/userMenu.js:670 msgid "Notifications are now disabled, including chat messages. Your online status has been adjusted to let others know that you might not see their messages." msgstr "Известувањата сега се оневозможени, вклучувајќи ги и тие на разговорите. Вашиот онлајн статус е прилагоден за да им се каже на другите дека Вие нема да ги видите нивните пораки." #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: ../js/ui/viewSelector.js:113 msgid "Type to search..." msgstr "Внесете текст за пребарување..." #: ../js/ui/viewSelector.js:131 #: ../src/shell-util.c:244 msgid "Search" msgstr "Пребарај" #: ../js/ui/windowAttentionHandler.js:33 #, c-format msgid "'%s' is ready" msgstr "„%s“ е подготвен" #. translators: #. * The number of sound outputs on a particular device #: ../src/gvc/gvc-mixer-control.c:1100 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u излез" msgstr[1] "%u излези" #. translators: #. * The number of sound inputs on a particular device #: ../src/gvc/gvc-mixer-control.c:1110 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u излез" msgstr[1] "%u излези" #: ../src/gvc/gvc-mixer-control.c:1408 msgid "System Sounds" msgstr "Системски звуци" #: ../src/main.c:508 msgid "Print version" msgstr "Печатена верзија" #: ../src/main.c:514 msgid "Mode used by GDM for login screen" msgstr "Модулот кој се користи од GDM за најавниот екран" #: ../src/shell-app.c:567 #, c-format msgid "Failed to launch '%s'" msgstr "Не успеав да го пуштам „%s“" #: ../src/shell-mobile-providers.c:80 msgid "United Kingdom" msgstr "Обединетото Кралство" #: ../src/shell-mobile-providers.c:526 msgid "Default" msgstr "Стандардно" #: ../src/shell-polkit-authentication-agent.c:334 msgid "Authentication dialog was dismissed by the user" msgstr "Дијалогот за автентикација беше исклучен од корисникот" #. Translators: this is the same string as the one found in #. * nautilus #: ../src/shell-util.c:89 msgid "Home" msgstr "Дома" #. Translators: this is the same string as the one found in #. * nautilus #: ../src/shell-util.c:98 msgid "File System" msgstr "Датотечен систем" #. Translators: the first string is the name of a gvfs #. * method, and the second string is a path. For #. * example, "Trash: some-directory". It means that the #. * directory called "some-directory" is in the trash. #. #: ../src/shell-util.c:294 #, c-format msgid "%1$s: %2$s" msgstr "%1$s: %2$s" 0707010000024E000081A40000000000000000000000016712993F0001DC5E000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/ml.po# Malayalam translation for gnome-shell. # Copyright (C) 2010 gnome-shell's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-shell package. # Anish A , 2010, 2011, 2013. # Mohammed Sadiq , 2012. # Praveen Arimbrathodiyil , 2012. # Ani Peter , 2012, 2013. # Ranjith Siji , 2018. msgid "" msgstr "" "Project-Id-Version: gnome-shell master\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" "POT-Creation-Date: 2018-10-10 19:07+0000\n" "PO-Revision-Date: 2018-10-26 13:50+0530\n" "Last-Translator: Ranjith Siji \n" "Language-Team: American English \n" "Language: ml\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 2.2\n" "X-DamnedLies-Scope: partial\n" "X-Project-Style: gnome\n" #: data/50-gnome-shell-system.xml:6 msgid "System" msgstr "സിസ്റ്റം" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "അറിയിപ്പുകള്‍ കാണിക്കുക" #: data/50-gnome-shell-system.xml:12 msgid "Focus the active notification" msgstr "സജീവമായ അറിയിപ്പിനെ കേന്ദ്രീകരിക്കുക" #: data/50-gnome-shell-system.xml:15 msgid "Show the overview" msgstr "പൊതുവായ അവലോകനം കാണിക്കുക" #: data/50-gnome-shell-system.xml:18 msgid "Show all applications" msgstr "എല്ലാ പ്രയോഗങ്ങളും കാണിയ്ക്കുക" #: data/50-gnome-shell-system.xml:21 msgid "Open the application menu" msgstr "പ്രയോഗത്തിന്റെ മെനു തുറക്കുക" #: data/gnome-shell-extension-prefs.desktop.in.in:4 js/extensionPrefs/main.js:142 msgid "Shell Extensions" msgstr "ഷെല്‍ എക്സ്റ്റെന്‍ഷനുകള്‍" #: data/gnome-shell-extension-prefs.desktop.in.in:5 msgid "Configure GNOME Shell Extensions" msgstr "ഗ്നോം ഷെല്‍ എക്സ്റ്റെന്‍ഷനുകള്‍ ക്രമീകരിയ്ക്കുക" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "ഗ്നോം ഷെല്‍" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "വിന്‍ഡോ കൈകാര്യം ചെയ്യലും പ്രയോഗം ലഭ്യമാക്കലും" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "Alt-F2-ല്‍ ഡവലപ്പര്‍മാര്‍ക്കും ടെസ്റ്റേര്‍സിനും പ്രയോജനകരമായ ആന്തരിക പ്രയോഗങ്ങള്‍ പ്രവര്‍ത്തന സജ്ജമാക്കുന്നു" #: data/org.gnome.shell.gschema.xml.in:9 msgid "Allows access to internal debugging and monitoring tools using the Alt-F2 dialog." msgstr "Alt-F2 ഡയലോഗ് ഉപയോഗിച്ച് ആന്തരിക ഡീബഗ്ഗിലേക്കും നീരീക്ഷണ പ്രയോഗങ്ങളിലേക്കും പ്രവേശനം അനുവദിയ്ക്കുക." #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "പ്രവര്‍ത്തന സജ്ജമാക്കുന്നതിനുള്ള എക്സ്റ്റെന്‍ഷനുകളുടെ യുയുഐഡികള്‍" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which should be loaded. Any extension " "that wants to be loaded needs to be in this list. You can also manipulate this list with the EnableExtension " "and DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "ഗ്നോം ഷെല്‍ എക്സ്റ്റെന്‍ഷനുകള്‍ക്ക് ഒരു യുയുഐഡി വിശേഷതയുണ്ട്; ലഭ്യമാക്കേണ്ട എക്സ്റ്റെന്‍ഷനുകള്‍ ഈ കീ പട്ടികപ്പെടുത്തുന്നു. ലഭ്യമാക്കേണ്ട ഏതു് എക്സ്റ്റെന്‍" "ഷനും ഈ പട്ടികയിലുണ്ടാവണം. org.gnome.Shell-ല്‍ നിങ്ങള്‍ക്കു് EnableExtension, DisableExtension എന്നീ ഡീബസ് രീതികളിലൂടെ ഈ " "പട്ടിക കൈകാര്യം ചെയ്യുവാനും സാധിയ്ക്കുന്നു." #: data/org.gnome.shell.gschema.xml.in:26 msgid "Disable user extensions" msgstr "ഉപയോക്തൃ എക്സ്റ്റന്‍ഷനുകള്‍ പ്രവര്‍ത്തനരഹിതമാക്കുക" #: data/org.gnome.shell.gschema.xml.in:27 msgid "Disable all extensions the user has enabled without affecting the “enabled-extension” setting." msgstr "“enabled-extension” എന്ന ക്രമീകരണത്തിനെ ബാധിക്കാതെ യൂസര്‍ പ്രവര്‍ത്തിപ്പിച്ച എല്ലാ എക്സ്റ്റന്‍ഷനുകളും പ്രവര്‍ത്തനരഹിതമാക്കുക." #: data/org.gnome.shell.gschema.xml.in:34 msgid "Disables the validation of extension version compatibility" msgstr "എക്സ്റ്റന്‍ഷന്റെ വെര്‍ഷന്‍ പൊരുത്ത സാധുത പരിശോധന പ്രവര്‍ത്തനരഹിതമാക്കുക" #: data/org.gnome.shell.gschema.xml.in:35 msgid "" "GNOME Shell will only load extensions that claim to support the current running version. Enabling this " "option will disable this check and try to load all extensions regardless of the versions they claim to " "support." msgstr "" "ഇപ്പോള്‍ പ്രവര്‍ത്തിച്ചുകൊണ്ടിരിക്കുന്ന വെര്‍ഷനെ പിന്‍തുണയ്ക്കുന്ന എക്സ്റ്റന്‍ഷനുകളെമാത്രമേ ഗ്നോം ഷെല്‍ പ്രവര്‍ത്തിപ്പിക്കുകയുള്ളു. ഈ ഓപ്ഷന്‍ ഓണാക്കിയാല്‍ ഈ " "പരിശോധന ഇല്ലാതാവുകയും എല്ലാ എക്സ്റ്റന്‍ഷനുകളെയും പ്രവര്‍ത്തിപ്പിക്കാന്‍ ശ്രമിക്കുകയും ചെയ്യും, അതില്‍ വെര്‍ഷന്‍ പിന്‍തുണ പരിഗണിക്കുകയില്ല." #: data/org.gnome.shell.gschema.xml.in:43 msgid "List of desktop file IDs for favorite applications" msgstr "ഇഷ്ടമുള്ള പ്രയോഗങ്ങള്‍ക്കുള്ള പണിയിട ഫയല്‍ ഐഡികളുടെ പട്ടിക" #: data/org.gnome.shell.gschema.xml.in:44 msgid "The applications corresponding to these identifiers will be displayed in the favorites area." msgstr "ഈ ഐഡന്റിഫയറുകള്‍ക്കുള്ള പ്രയോഗങ്ങള്‍ ഉചിതമായ സ്ഥലങ്ങളില്‍ കാണിയ്ക്കുന്നു." #: data/org.gnome.shell.gschema.xml.in:51 msgid "App Picker View" msgstr "ആപ്പ് പിക്കര്‍ കാഴ്ച" #: data/org.gnome.shell.gschema.xml.in:52 msgid "Index of the currently selected view in the application picker." msgstr "ആപ്ലിക്കേഷന്‍ പിക്കറില്‍ ഇപ്പോള്‍ തിരഞ്ഞെടുത്ത കാഴ്ചരീതിയുടെ ഉള്ളടക്കം." #: data/org.gnome.shell.gschema.xml.in:58 msgid "History for command (Alt-F2) dialog" msgstr "കമാന്‍ഡ് (Alt-F2) ഡയലോഗിന്റെ നാള്‍വഴി" #. Translators: looking glass is a debugger and inspector tool, see https://wiki.gnome.org/Projects/GnomeShell/LookingGlass #: data/org.gnome.shell.gschema.xml.in:63 msgid "History for the looking glass dialog" msgstr "തെരച്ചില്‍ ഡയലോഗിനുള്ള നാള്‍വഴി" #: data/org.gnome.shell.gschema.xml.in:67 msgid "Always show the “Log out” menu item in the user menu." msgstr "ഉപയോക്തൃ മെനുവില്‍ 'പുറത്തിറങ്ങുക' കാണിക്കുക." #: data/org.gnome.shell.gschema.xml.in:68 msgid "" "This key overrides the automatic hiding of the “Log out” menu item in single-user, single-session situations." msgstr "സിംഗിള്‍ യൂസര്‍, സിംഗിള്‍ സെഷനില്‍ 'ലോഗൌട്ട്' മെനുവസ്തു തനിയെ അദൃശ്യമാകുന്നത് ഈ കീ മറികടക്കുന്നു." #: data/org.gnome.shell.gschema.xml.in:75 msgid "Whether to remember password for mounting encrypted or remote filesystems" msgstr "എന്‍ക്രിപ്റ്റ് ചെയ്തതോ വിദൂരമോ ആയ ഫയല്‍സിസ്റ്റങ്ങള്‍ മൌണ്ട് ചെയ്യുമ്പോഴുള്ള രഹസ്യവാക്ക് ഓര്‍മ്മിക്കണോ എന്ന്" #: data/org.gnome.shell.gschema.xml.in:76 msgid "" "The shell will request a password when an encrypted device or a remote filesystem is mounted. If the " "password can be saved for future use a “Remember Password” checkbox will be present. This key sets the " "default state of the checkbox." msgstr "" "ഒരു എന്‍ക്രിപ്റ്റ് ചെയ്ത ഡിവൈസ് അല്ലെങ്കില്‍ വിദൂര ഫയല്‍സിസ്റ്റം മൌണ്ട് ചെയ്യുമ്പോള്‍ ഷെല്‍ ഒരു രഹസ്യവാക്ക് ആവശ്യപ്പെടുന്നു. രഹസ്യവാക്ക് സൂക്ഷിയ്ക്കുവാന്‍ " "സാധ്യമെങ്കില്‍, 'രഹസ്യവാക്ക് ഓര്‍ത്തു്വയ്ക്കുക' ചെക്ക്ബോക്സ് കാണാം. ഈ കീ ചെക്ക്ബോക്സിന്റെ സ്വതവേയുള്ള അവസ്ഥ സജ്ജമാക്കുന്നു." #: data/org.gnome.shell.gschema.xml.in:85 msgid "Whether the default Bluetooth adapter had set up devices associated to it" msgstr "സ്വതേയുള്ള ബ്ലൂടൂത്ത് അഡാപ്റ്റര്‍ അതുമായി ബന്ധമുള്ള ഉപകരണങ്ങളുമായി സെറ്റപ്പ് ചെയ്തുവോ" #: data/org.gnome.shell.gschema.xml.in:86 msgid "" "The shell will only show a Bluetooth menu item if a Bluetooth adapter is powered, or if there were devices " "set up associated with the default adapter. This will be reset if the default adapter is ever seen not to " "have devices associated to it." msgstr "" "ബ്ലൂടൂത്ത് അഡാപ്റ്ററിന് വൈദ്യുതി ലഭിച്ചാല്‍ മാത്രമേ ഷെല്‍ ബ്ലൂടൂത്ത് മെനു പ്രദര്‍ശിപ്പിക്കുകയുള്ളു, അല്ലെങ്കില്‍ സ്വതേയുള്ള ബ്ലൂടൂത്ത് അഡാപ്റ്ററുമായി " "ഉപകരണങ്ങള്‍ ബന്ധപ്പെടുത്തിയിരിക്കണം. ഇത് സ്വതേയുള്ള ബ്ലൂടൂത്ത് അഡാപ്റ്റര്‍ കാണുകയും അതുമായി ഉപകരണങ്ങള്‍ ബന്ധപ്പെടുത്തിയിട്ടില്ലെങ്കിലും റീസെറ്റ് " "ചെയ്യും." #: data/org.gnome.shell.gschema.xml.in:101 msgid "Keybinding to open the application menu" msgstr "പ്രയോഗത്തിന്റെ മെനു തുറക്കുന്നതിനുള്ള കീക്കൂട്ടം" #: data/org.gnome.shell.gschema.xml.in:102 msgid "Keybinding to open the application menu." msgstr "പ്രയോഗത്തിന്റെ മെനു തുറക്കുന്നതിനുള്ള കീക്കൂട്ടം." #: data/org.gnome.shell.gschema.xml.in:108 msgid "Keybinding to open the “Show Applications” view" msgstr "\"പ്രയോഗങ്ങള്‍ കാണിയ്ക്കുക\" എന്ന കാഴ്ച തുറക്കുന്നതിനുള്ള കീബൈന്‍ഡിങ്" #: data/org.gnome.shell.gschema.xml.in:109 msgid "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "പ്രവര്‍ത്തികളുടെ അവലോകനത്തിന്റെ \"പ്രയോഗങ്ങള്‍ കാണിയ്ക്കുക\" എന്ന കാഴ്ച തുറക്കുന്നതിനുള്ള കീബൈന്‍ഡിങ്." #: data/org.gnome.shell.gschema.xml.in:116 msgid "Keybinding to open the overview" msgstr "പൊതുവായ അവലോകനം തുറക്കുന്നതിനുള്ള കീബൈന്‍ഡിങ്" #: data/org.gnome.shell.gschema.xml.in:117 msgid "Keybinding to open the Activities Overview." msgstr "പ്രയോഗങ്ങളുടെ പൊതുവായ അവലോകനം എന്ന കാഴ്ച തുറക്കുന്നതിനുള്ള കീബൈന്‍ഡിങ്." #: data/org.gnome.shell.gschema.xml.in:123 msgid "Keybinding to toggle the visibility of the notification list" msgstr "അറിയിപ്പ് പട്ടികയുടെ ദൃശ്യത ടൊഗ്ഗിള്‍ ചെയ്യുന്നതിനുള്ള കീക്കൂട്ടം" #: data/org.gnome.shell.gschema.xml.in:124 msgid "Keybinding to toggle the visibility of the notification list." msgstr "അറിയിപ്പ് പട്ടികയുടെ ദൃശ്യത ടൊഗ്ഗിള്‍ ചെയ്യുന്നതിനുള്ള കീക്കൂട്ടം." #: data/org.gnome.shell.gschema.xml.in:130 msgid "Keybinding to focus the active notification" msgstr "സജീവമായ അറിയിപ്പിനുള്ള കീബൈന്‍ഡിങ്" #: data/org.gnome.shell.gschema.xml.in:131 msgid "Keybinding to focus the active notification." msgstr "സജീവമായ അറിയിപ്പിനുള്ള കീബൈന്‍ഡിങ്." #: data/org.gnome.shell.gschema.xml.in:137 msgid "Keybinding that pauses and resumes all running tweens, for debugging purposes" msgstr "ഡീബഗ്ഗിംഗ് ആവശ്യങ്ങള്‍ക്കായി പ്രവര്‍ത്തിച്ചുകൊണ്ടിരിക്കുന്ന എല്ലാ ട്വീനുകളെയും നിറുത്തുകയോ തുടരുകയോ ചെയ്യാനുള്ള കീബന്ധനങ്ങള്‍" #: data/org.gnome.shell.gschema.xml.in:146 msgid "Which keyboard to use" msgstr "ഏതു് കീബോര്‍ഡ് ഉപയോഗിയ്ക്കണം" #: data/org.gnome.shell.gschema.xml.in:147 msgid "The type of keyboard to use." msgstr "ഏതു് തരം കീബോര്‍ഡ് ഉപയോഗിയ്ക്കണം." #: data/org.gnome.shell.gschema.xml.in:158 data/org.gnome.shell.gschema.xml.in:185 msgid "Limit switcher to current workspace." msgstr "സ്വിച്ചറിനെ ഇപ്പോഴുള്ള പ്രവര്‍ത്തനസ്ഥലത്തുമാത്രമായി തടയുക." #: data/org.gnome.shell.gschema.xml.in:159 msgid "" "If true, only applications that have windows on the current workspace are shown in the switcher. Otherwise, " "all applications are included." msgstr "" "വില true എന്നാണെങ്കില്‍, ഇപ്പോഴുള്ള പ്രവര്‍ത്തനയിടത്തില്‍ ജാലകങ്ങളുള്ള ആപ്ലിക്കേഷനുകള്‍ മാത്രം സ്വിച്ചറില്‍ കാണിക്കുക. അല്ലെങ്കില്‍ എല്ലാ " "ആപ്ലിക്കേഷനുകളും കാണിക്കും." #: data/org.gnome.shell.gschema.xml.in:176 msgid "The application icon mode." msgstr "പ്രയോഗത്തിന്റെ ഐക്കണ്‍ മോഡ്." #: data/org.gnome.shell.gschema.xml.in:177 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities are “thumbnail-only” (shows a " "thumbnail of the window), “app-icon-only” (shows only the application icon) or “both”." msgstr "" "സ്വിച്ചറില്‍ ജാലകങ്ങള്‍ എങ്ങനെ കാണിയ്ക്കുന്നു എന്നു് ക്രമീകരിയ്ക്കുന്നു. ശരിയായ സാധ്യതകള്‍: 'thumbnail-only' (ജാലകത്തിന്റെ പ്രതിരൂപം " "കാണിയ്ക്കുന്നു), 'app-icon-only' (പ്രയോഗത്തിന്റെ പ്രതിരൂപം കാണിയ്ക്കുന്നു) അല്ലെങ്കില്‍ 'both'." #: data/org.gnome.shell.gschema.xml.in:186 msgid "" "If true, only windows from the current workspace are shown in the switcher. Otherwise, all windows are " "included." msgstr "" "വില true എന്നാണെങ്കില്‍, ഇപ്പോഴുള്ള പ്രവര്‍ത്തനയിടത്തിലുള്ള ജാലകങ്ങള്‍ മാത്രം സ്വിച്ചറില്‍ കാണിക്കുക. അല്ലെങ്കില്‍ എല്ലാ ജാലകങ്ങളും കാണിക്കും." #: data/org.gnome.shell.gschema.xml.in:198 msgid "Attach modal dialog to the parent window" msgstr "പേരന്റ് ജാലകത്തിലേക്കു് ഡയലോഗ് ചേര്‍ക്കുക" #: data/org.gnome.shell.gschema.xml.in:199 data/org.gnome.shell.gschema.xml.in:208 #: data/org.gnome.shell.gschema.xml.in:216 data/org.gnome.shell.gschema.xml.in:224 #: data/org.gnome.shell.gschema.xml.in:232 msgid "This key overrides the key in org.gnome.mutter when running GNOME Shell." msgstr "ഗ്നോം ഷെല്‍ പ്രവര്‍ത്തിയ്ക്കുമ്പോള്‍ org.gnome.mutter-ലുള്ള കീ ഈ കീ തിരുത്തിയെഴുതുന്നു." #: data/org.gnome.shell.gschema.xml.in:207 msgid "Enable edge tiling when dropping windows on screen edges" msgstr "സ്ക്രീന്‍ കോണുകളില്‍ ജാലകങ്ങള്‍ എത്തിയ്ക്കുമ്പോള്‍ കോണ്‍ ചരിയ്ക്കുന്നതിനായി പ്രവര്‍ത്തന സജ്ജമാക്കുക" #: data/org.gnome.shell.gschema.xml.in:215 msgid "Workspaces are managed dynamically" msgstr "പണിയിടങ്ങള്‍ ഡയനാമിക്കായി കൈകാര്യം ചെയ്തിരിക്കുന്നു" #: data/org.gnome.shell.gschema.xml.in:223 msgid "Workspaces only on primary monitor" msgstr "പ്രധാന മോണിറ്ററില്‍ മാത്രം പണിയിടങ്ങള്‍" #: data/org.gnome.shell.gschema.xml.in:231 msgid "Delay focus changes in mouse mode until the pointer stops moving" msgstr "പോയന്ററിന്റെ ചലനം അവസാനിക്കുന്നതുവരെ മൗസ് മോഡില്‍ ഫോക്കസ് മാറുന്നത് തടയുക" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "നെറ്റ്​വര്‍ക്ക് ലോഗിന്‍" #. Translators: Do NOT translate or transliterate this text (this is an icon file name)! #: data/org.gnome.Shell.PortalHelper.desktop.in.in:9 msgid "network-workgroup" msgstr "network-workgroup" #: js/extensionPrefs/main.js:112 #, javascript-format msgid "There was an error loading the preferences dialog for %s:" msgstr "%s നുള്ള മുന്‍ഗണനാ ഡയലോഗ് ലഭ്യമാക്കുന്നതില്‍ പിശക്:" #: js/gdm/authPrompt.js:147 js/ui/audioDeviceSelection.js:62 js/ui/components/networkAgent.js:117 #: js/ui/components/polkitAgent.js:153 js/ui/endSessionDialog.js:442 js/ui/extensionDownloader.js:197 #: js/ui/shellMountOperation.js:345 js/ui/status/network.js:905 msgid "Cancel" msgstr "റദ്ദാക്കുക" #: js/gdm/authPrompt.js:166 js/gdm/authPrompt.js:209 js/gdm/authPrompt.js:441 msgid "Next" msgstr "അടുത്തത്" #: js/gdm/authPrompt.js:205 js/ui/shellMountOperation.js:349 js/ui/unlockDialog.js:59 msgid "Unlock" msgstr "പൂട്ട് തുറക്കുക" #: js/gdm/authPrompt.js:207 msgctxt "button" msgid "Sign In" msgstr "അകത്തുകയറുക" #: js/gdm/loginDialog.js:319 msgid "Choose Session" msgstr "സെഷന്‍ തെരഞ്ഞെടുക്കുക" #. translators: this message is shown below the user list on the #. login screen. It can be activated to reveal an entry for #. manually entering the username. #: js/gdm/loginDialog.js:462 msgid "Not listed?" msgstr "ലഭ്യമല്ലേ?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:891 #, javascript-format msgid "(e.g., user or %s)" msgstr "(e.g., ഉപയോക്താവു് അല്ലെങ്കില്‍ %s)" #. TTLS and PEAP are actually much more complicated, but this complication #. is not visible here since we only care about phase2 authentication #. (and don't even care of which one) #: js/gdm/loginDialog.js:896 js/ui/components/networkAgent.js:243 js/ui/components/networkAgent.js:263 #: js/ui/components/networkAgent.js:281 msgid "Username: " msgstr "ഉപയോക്തൃ നാമം: " #: js/gdm/loginDialog.js:1234 msgid "Login Window" msgstr "പ്രവേശന ജാലകം" #: js/gdm/util.js:345 msgid "Authentication error" msgstr "തിരിച്ചറിയല്‍ പിശക്" #. We don't show fingerprint messages directly since it's #. not the main auth service. Instead we use the messages #. as a cue to display our own message. #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger instead #: js/gdm/util.js:485 msgid "(or swipe finger)" msgstr "(അല്ലെങ്കില്‍ ഫിംഗര്‍ സ്വൈപ്പ് ചെയ്യുക)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:97 msgctxt "search-result" msgid "Power Off" msgstr "നിറുത്തുക" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:100 msgid "power off;shutdown;reboot;restart" msgstr "power off;shutdown;reboot;restart" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:104 msgctxt "search-result" msgid "Lock Screen" msgstr "സ്ക്രീൻ പൂട്ടുക" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:107 msgid "lock screen" msgstr "സ്ക്രീന്‍ പൂട്ടുക" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:111 msgctxt "search-result" msgid "Log Out" msgstr "പുറത്തിറങ്ങുക" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:114 msgid "logout;sign off" msgstr "logout;sign off" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:118 msgctxt "search-result" msgid "Suspend" msgstr "താത്കാലികമായി നിര്‍ത്തുക" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:121 msgid "suspend;sleep" msgstr "suspend;sleep" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:125 msgctxt "search-result" msgid "Switch User" msgstr "ഉപയോക്താവിനെ മാറ്റുക" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:128 msgid "switch user" msgstr "ഉപയോക്താവിനെ മാറ്റുക" #. Translators: The name of the lock orientation action in search #: js/misc/systemActions.js:132 msgctxt "search-result" msgid "Lock Orientation" msgstr "വിന്യാസം ബന്ധിക്കുക" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:135 msgid "lock orientation;screen;rotation" msgstr "lock orientation;screen;rotation" #: js/misc/util.js:122 msgid "Command not found" msgstr "ആജ്ഞ കണ്ടില്ല" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:155 msgid "Could not parse command:" msgstr "ആജ്ഞ പ്രാവര്‍ത്തികമാക്കാന്‍ സാധ്യമായില്ല:" #: js/misc/util.js:163 #, javascript-format msgid "Execution of “%s” failed:" msgstr "\"%s\" നടപ്പിലാക്കുന്നതില്‍ പരാജയപ്പെട്ടു :" #: js/misc/util.js:180 msgid "Just now" msgstr "ഇപ്പോള്‍ മാത്രം" #: js/misc/util.js:182 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d മിനിറ്റ് മുന്‍പ്" msgstr[1] "%d മിനിറ്റുകള്‍ക്ക് മുന്‍പ്" #: js/misc/util.js:185 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d മണിക്കൂര്‍ മുന്‍പ്" msgstr[1] "%d മണിക്കൂറുകള്‍ മുന്‍പ്" #: js/misc/util.js:188 msgid "Yesterday" msgstr "ഇന്നലെ" #: js/misc/util.js:190 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d ദിവസം മുന്‍പ്" msgstr[1] "%d ദിവസങ്ങള്‍ക്ക് മുന്‍പ്" #: js/misc/util.js:193 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d ആഴ്ച മുന്‍പ്" msgstr[1] "%d ആഴ്ചകള്‍ക്ക് മുന്‍പ്" #: js/misc/util.js:196 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%d മാസം മുമ്പ്" msgstr[1] "%d മാസങ്ങള്‍ക്ക് മുമ്പ്" #: js/misc/util.js:198 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "%d വര്‍ഷം മുമ്പ്" msgstr[1] "%d വര്‍ഷങ്ങള്‍ക്കു മുമ്പ്" #. Translators: Time in 24h format #: js/misc/util.js:228 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/util.js:234 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "ഇന്നലെ, %H∶%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/util.js:240 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/util.js:246 #, no-c-format msgid "%B %d, %H∶%M" msgstr "%B %d, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/util.js:252 #, no-c-format msgid "%B %d %Y, %H∶%M" msgstr "%B %d %Y, %H∶%M" #. Translators: Time in 12h format #: js/misc/util.js:257 msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/util.js:263 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "ഇന്നലെ, %l∶%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/util.js:269 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/util.js:275 #, no-c-format msgid "%B %d, %l∶%M %p" msgstr "%B %d, %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/util.js:281 #, no-c-format msgid "%B %d %Y, %l∶%M %p" msgstr "%B %d %Y, %l∶%M %p" #. TRANSLATORS: this is the title of the wifi captive portal login window #: js/portalHelper/main.js:49 msgid "Hotspot Login" msgstr "ഹോട്സ്പോട്ട് ലോഗിന്‍" #: js/portalHelper/main.js:95 msgid "" "Your connection to this hotspot login is not secure. Passwords or other information you enter on this page " "can be viewed by people nearby." msgstr "ഈ ഹോട്സ്പോട്ടിലേക്ക് ലോഗിന്‍ ചെയ്യുന്നത് സുരക്ഷിതമല്ല. ഈ പേജില്‍ നിങ്ങള്‍ ചേര്‍ക്കുന്ന രഹസ്യവാക്ക് ചുറ്റുമുള്ളവര്‍ക്ക് കാണാം." #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:46 js/ui/status/location.js:376 msgid "Deny Access" msgstr "അനുമതി റദ്ദാക്കുക" #: js/ui/accessDialog.js:47 js/ui/status/location.js:379 msgid "Grant Access" msgstr "അനുമതി നല്‍കുക" #: js/ui/appDisplay.js:790 msgid "Frequently used applications will appear here" msgstr "ഇടയ്ക്കിടയ്ക്ക് ഉപയോഗിക്കുന്ന പ്രയോഗങ്ങള്‍ ഇവിടെ പ്രത്യക്ഷമാകും" #: js/ui/appDisplay.js:911 msgid "Frequent" msgstr "ഇടയ്ക്കിടെ" #: js/ui/appDisplay.js:918 msgid "All" msgstr "എല്ലാം" #: js/ui/appDisplay.js:1887 msgid "New Window" msgstr "പുതിയ വിന്‍ഡോ" #: js/ui/appDisplay.js:1901 msgid "Launch using Dedicated Graphics Card" msgstr "ഇതിനായുള്ള ഗ്രാഫിക്ക്സ് കാര്‍ഡ് ഉപയോഗിച്ച് ലോഞ്ച് ചെയ്യുക" #: js/ui/appDisplay.js:1928 js/ui/dash.js:285 msgid "Remove from Favorites" msgstr "ഇഷ്ടപ്പെട്ടവയില്‍ നിന്നും നീക്കം ചെയ്യുക" #: js/ui/appDisplay.js:1934 msgid "Add to Favorites" msgstr "ഇഷ്ടപ്പെട്ടവയിലേക്ക് ചേര്‍ക്കുക" #: js/ui/appDisplay.js:1944 msgid "Show Details" msgstr "വിവരങ്ങള്‍ കാണിക്കുക" #: js/ui/appFavorites.js:140 #, javascript-format msgid "%s has been added to your favorites." msgstr "%s നിങ്ങള്‍ക്കിഷ്ടപ്പെട്ടവയിലേക്ക് ചേര്‍ത്തിട്ടുണ്ട്." #: js/ui/appFavorites.js:174 #, javascript-format msgid "%s has been removed from your favorites." msgstr "%s നിങ്ങള്‍ക്കിഷ്ടപ്പെട്ടവയില്‍ നിന്നും നീക്കം ചെയ്തിട്ടുണ്ട്." #: js/ui/audioDeviceSelection.js:50 msgid "Select Audio Device" msgstr "ഡിവൈസിലേക്കു് ഫയലുകള്‍ അയയ്ക്കുക" #: js/ui/audioDeviceSelection.js:60 msgid "Sound Settings" msgstr "ശബ്ദത്തിന്റെ ക്രമീകരണങ്ങള്‍" #: js/ui/audioDeviceSelection.js:69 msgid "Headphones" msgstr "ഹെഡ്ഫോണ്‍സ്" #: js/ui/audioDeviceSelection.js:71 msgid "Headset" msgstr "ഹെഡ്സെറ്റ്" #: js/ui/audioDeviceSelection.js:73 js/ui/status/volume.js:255 msgid "Microphone" msgstr "മൈക്രോഫോണ്‍" #: js/ui/backgroundMenu.js:19 msgid "Change Background…" msgstr "പശ്ചാത്തലം മാറ്റുക…" #: js/ui/backgroundMenu.js:21 js/ui/status/nightLight.js:47 msgid "Display Settings" msgstr "ദൃശ്യക്രമീകരണങ്ങള്‍" #: js/ui/backgroundMenu.js:22 msgid "Settings" msgstr "സജ്ജീകരണങ്ങള്‍" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:44 msgctxt "calendar-no-work" msgid "06" msgstr "[calender-no-work]06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:73 msgctxt "grid sunday" msgid "S" msgstr "ഞാ" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:75 msgctxt "grid monday" msgid "M" msgstr "തി" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:77 msgctxt "grid tuesday" msgid "T" msgstr "ചൊ" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:79 msgctxt "grid wednesday" msgid "W" msgstr "ബു" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:81 msgctxt "grid thursday" msgid "T" msgstr "വ്യാ" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:83 msgctxt "grid friday" msgid "F" msgstr "വെ" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:85 msgctxt "grid saturday" msgid "S" msgstr "ശ" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:380 msgid "%OB" msgstr "OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:390 msgid "%OB %Y" msgstr "%OB %Y" #: js/ui/calendar.js:447 msgid "Previous month" msgstr "കഴിഞ്ഞ മാസം" #: js/ui/calendar.js:457 msgid "Next month" msgstr "അടുത്ത മാസം" #: js/ui/calendar.js:610 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "[date day number format]%d" #: js/ui/calendar.js:665 msgid "Week %V" msgstr "ആഴ്ച %V" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/calendar.js:734 msgctxt "event list time" msgid "All Day" msgstr "ദിനം മുഴുവനും" #: js/ui/calendar.js:869 msgctxt "calendar heading" msgid "%A, %B %d" msgstr "%A, %B %d" #: js/ui/calendar.js:873 msgctxt "calendar heading" msgid "%A, %B %d, %Y" msgstr "%A, %B %d, %Y" #: js/ui/calendar.js:1103 msgid "No Notifications" msgstr "അറിയിപ്പുകളില്ല" #: js/ui/calendar.js:1106 msgid "No Events" msgstr "ഇവന്റുകളില്ല" #: js/ui/calendar.js:1134 msgid "Clear All" msgstr "എല്ലാം മായ്ക്കുക" #. Translators: %s is an application name #: js/ui/closeDialog.js:50 #, javascript-format msgid "“%s” is not responding." msgstr "\"%s\" പ്രതികരിക്കുന്നില്ല." #: js/ui/closeDialog.js:51 msgid "You may choose to wait a short while for it to continue or force the application to quit entirely." msgstr "" "പ്രയോഗം പ്രവര്‍ത്തിച്ചു തുടങ്ങാന്‍ കുറച്ചു സമയം കൂടി കാത്തു നില്‍ക്കുകയോ അല്ലെങ്കില്‍ പ്രവര്‍ത്തനം നിര്‍ത്താന്‍ ഫോഴ്സ് ക്വിറ്റ് ചെയ്യുകയോ ചെയ്യാം." #: js/ui/closeDialog.js:67 msgid "Force Quit" msgstr "ഫോഴ്സ് ക്വിറ്റ്" #: js/ui/closeDialog.js:70 msgid "Wait" msgstr "കാത്തുനില്‍ക്കുക" #: js/ui/components/automountManager.js:91 msgid "External drive connected" msgstr "പുറമേയുള്ള ഡ്രൈവ് ബന്ധിപ്പിച്ചു" #: js/ui/components/automountManager.js:102 msgid "External drive disconnected" msgstr "പുറമേയുള്ള ഡ്രൈവ് വിച്ഛേദിച്ചു" #: js/ui/components/autorunManager.js:348 #, javascript-format msgid "Open with %s" msgstr "%s ഉപയോഗിച്ചു തുറക്കുക" #: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:297 msgid "Password:" msgstr "രഹസ്യവാക്ക്:" #: js/ui/components/keyring.js:140 msgid "Type again:" msgstr "വീണ്ടും അമര്‍ത്തുക:" #: js/ui/components/networkAgent.js:112 js/ui/status/network.js:229 js/ui/status/network.js:320 #: js/ui/status/network.js:908 msgid "Connect" msgstr "കണക്ട് ചെയ്യുക" #. Cisco LEAP #: js/ui/components/networkAgent.js:211 js/ui/components/networkAgent.js:223 #: js/ui/components/networkAgent.js:246 js/ui/components/networkAgent.js:265 #: js/ui/components/networkAgent.js:285 js/ui/components/networkAgent.js:295 msgid "Password: " msgstr "നിശബ്ദമാക്കുക: " #. static WEP #: js/ui/components/networkAgent.js:216 msgid "Key: " msgstr "കീ: " #: js/ui/components/networkAgent.js:249 js/ui/components/networkAgent.js:271 msgid "Private key password: " msgstr "സ്വകാര്യ കീ രഹസ്യവാക്ക്: " #: js/ui/components/networkAgent.js:269 msgid "Identity: " msgstr "ഐഡന്റിറ്റി: " #: js/ui/components/networkAgent.js:283 msgid "Service: " msgstr "സേവനം: " #: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:688 msgid "Authentication required by wireless network" msgstr "വയര്‍ലെസ്സ് ശൃംഖല നിങ്ങളെ തിരിച്ചറിയണം" #: js/ui/components/networkAgent.js:313 js/ui/components/networkAgent.js:689 #, javascript-format msgid "Passwords or encryption keys are required to access the wireless network “%s”." msgstr "വയര്‍ലെസ് നെറ്റ്‌വര്‍ക്ക് \"%s\" ലേക്ക് പ്രവേശിക്കുന്നതിനായി രഹസ്യവാക്കുകള്‍ അല്ലെങ്കില്‍ എന്‍ക്രിപ്ഷന്‍ കീകള്‍ ആവശ്യമുണ്ട്." #: js/ui/components/networkAgent.js:317 js/ui/components/networkAgent.js:692 msgid "Wired 802.1X authentication" msgstr "വയര്‍ഡ് 802.1X ആധികാരികത" #: js/ui/components/networkAgent.js:319 msgid "Network name: " msgstr "നെറ്റ്​വര്‍ക്ക് പേര്: " #: js/ui/components/networkAgent.js:324 js/ui/components/networkAgent.js:696 msgid "DSL authentication" msgstr "DSL ആധികാരികത ഉറപ്പാക്കല്‍" #: js/ui/components/networkAgent.js:331 js/ui/components/networkAgent.js:702 msgid "PIN code required" msgstr "PIN കോട് ആവശ്യമാണ്" #: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:703 msgid "PIN code is needed for the mobile broadband device" msgstr "മൊബൈല്‍ ബ്രോഡ്ബാന്‍ഡ് ഉപകരണത്തിന് പിന്‍ കോഡ് ആവശ്യമുണ്ടു്" #: js/ui/components/networkAgent.js:333 msgid "PIN: " msgstr "PIN: " #: js/ui/components/networkAgent.js:340 js/ui/components/networkAgent.js:709 msgid "Mobile broadband network password" msgstr "മൊബൈല്‍ ബ്രോഡ്ബാന്‍ഡ് നെറ്റ്‌വര്‍ക്കിനുള്ള രഹസ്യവാക്ക്" #: js/ui/components/networkAgent.js:341 js/ui/components/networkAgent.js:693 #: js/ui/components/networkAgent.js:697 js/ui/components/networkAgent.js:710 #, javascript-format msgid "A password is required to connect to “%s”." msgstr "\"%s\" ലേക്ക് കണക്റ്റ് ചെയ്യുന്നതിന് ഒരു രഹസ്യവാക്ക് ആവശ്യമുണ്ട്." #: js/ui/components/networkAgent.js:677 js/ui/status/network.js:1690 msgid "Network Manager" msgstr "നെറ്റ്‌വര്‍ക്ക് മാനേജര്‍" #: js/ui/components/polkitAgent.js:48 msgid "Authentication Required" msgstr "തിരിച്ചറിയണം" #: js/ui/components/polkitAgent.js:76 msgid "Administrator" msgstr "അഡ്മിനിസ്ട്രേറ്റര്‍" #: js/ui/components/polkitAgent.js:156 msgid "Authenticate" msgstr "തിരിച്ചറിയുക" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:283 js/ui/shellMountOperation.js:329 msgid "Sorry, that didn’t work. Please try again." msgstr "ക്ഷമിക്കണം, അതു ശരിയല്ല. ദയവായി വീണ്ടും ശ്രമിക്കുക." #. Translators: this is the other person changing their old IM name to their new #. IM name. #: js/ui/components/telepathyClient.js:795 #, javascript-format msgid "%s is now known as %s" msgstr "%s ഇപ്പോള്‍ %s ആയിട്ടാണ് അറിയപ്പെടുന്നത്" #: js/ui/ctrlAltTab.js:29 js/ui/viewSelector.js:186 msgid "Windows" msgstr "ജാലകങ്ങള്‍" #: js/ui/dash.js:246 js/ui/dash.js:287 msgid "Show Applications" msgstr "പ്രയോഗങ്ങള്‍ കാണിയ്ക്കുക" #. Translators: this is the name of the dock/favorites area on #. the left of the overview #: js/ui/dash.js:444 msgid "Dash" msgstr "ഡാഷ്" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM"). #. #: js/ui/dateMenu.js:74 msgid "%B %e %Y" msgstr "%B %e %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:81 msgid "%A %B %e %Y" msgstr "%A %B %e %Y" #: js/ui/dateMenu.js:145 msgid "Add world clocks…" msgstr "ലോക ഘടികാരം കൂട്ടിച്ചേര്‍ക്കുക…" #: js/ui/dateMenu.js:146 msgid "World Clocks" msgstr "ലോക ഘടികാരം" #: js/ui/dateMenu.js:227 msgid "Weather" msgstr "കാലാവസ്ഥ" #. Translators: %s is a weather condition like "Clear sky"; see #. libgweather for the possible condition strings. If at all #. possible, the sentence should match the grammatical case etc. of #. the inserted conditions. #: js/ui/dateMenu.js:291 #, javascript-format msgid "%s all day." msgstr "%s എല്ലാ ദിവസവും." #. Translators: %s is a weather condition like "Clear sky"; see #. libgweather for the possible condition strings. If at all #. possible, the sentence should match the grammatical case etc. of #. the inserted conditions. #: js/ui/dateMenu.js:297 #, javascript-format msgid "%s, then %s later." msgstr "%s, എന്നിട്ട് %s ഒടുവില്‍." #. Translators: %s is a weather condition like "Clear sky"; see #. libgweather for the possible condition strings. If at all #. possible, the sentence should match the grammatical case etc. of #. the inserted conditions. #: js/ui/dateMenu.js:303 #, javascript-format msgid "%s, then %s, followed by %s later." msgstr "%s, ഉടനെ %s, തുടര്‍ന്ന് %s ഒടുവില്‍." #: js/ui/dateMenu.js:314 msgid "Select a location…" msgstr "ഒരു പ്രദേശം സെലക്റ്റ് ചെയ്യുക…" #: js/ui/dateMenu.js:317 msgid "Loading…" msgstr "ലോഡിങ്ങ്…" #. Translators: %s is a temperature with unit, e.g. "23℃" #: js/ui/dateMenu.js:323 #, javascript-format msgid "Feels like %s." msgstr "%s പോലെ തോന്നുന്നു." #: js/ui/dateMenu.js:326 msgid "Go online for weather information" msgstr "കാലാവസ്ഥ വിവരങ്ങള്‍ ലഭിക്കാന്‍ ഓണ്‍ലൈന്‍ ആകുക" #: js/ui/dateMenu.js:328 msgid "Weather information is currently unavailable" msgstr "കാലാവസ്ഥാ വിവരം നിലവില്‍ ലഭ്യമല്ല" #: js/ui/endSessionDialog.js:51 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "%s ല്‍ നിന്നു പുറത്ത് കടക്കുക" #: js/ui/endSessionDialog.js:52 msgctxt "title" msgid "Log Out" msgstr "പുറത്ത് കടക്കുക" #: js/ui/endSessionDialog.js:54 #, javascript-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "%s %d നിമിഷത്തിനുള്ളില്‍ സ്വയമേ പുറത്ത് കടക്കുന്നതാണു്." msgstr[1] "%s %d നിമിഷങ്ങള്‍ക്കുള്ളില്‍ സ്വയമേ പുറത്ത് കടക്കുന്നതാണു്." #: js/ui/endSessionDialog.js:59 #, javascript-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "നിങ്ങള്‍ %d നിമിഷത്തിനുള്ളില്‍ സ്വയമേ പുറത്ത് കടക്കുന്നതാണു്." msgstr[1] "നിങ്ങള്‍ %d നിമിഷങ്ങള്‍ക്കുള്ളില്‍ സ്വയമേ പുറത്ത് കടക്കുന്നതാണു്." #: js/ui/endSessionDialog.js:65 msgctxt "button" msgid "Log Out" msgstr "പുറത്ത് കടക്കുക" #: js/ui/endSessionDialog.js:71 msgctxt "title" msgid "Power Off" msgstr "നിര്‍ത്തുക" #: js/ui/endSessionDialog.js:72 msgctxt "title" msgid "Install Updates & Power Off" msgstr "പരിഷ്കരണങ്ങള്‍ ഇന്‍സ്റ്റോള്‍ ചെയ്ത് പവര്‍ ഓഫ് ആക്കുക" #: js/ui/endSessionDialog.js:74 #, javascript-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "സിസ്റ്റം %d നിമിഷത്തിനുള്ളില്‍ സ്വയമേ ഓഫ് ചെയ്യപ്പെടുന്നതാണ്." msgstr[1] "സിസ്റ്റം %d നിമിഷങ്ങള്‍ക്കുള്ളില്‍ സ്വയമേ ഓഫ് ചെയ്യപ്പെടുന്നതാണ്." #: js/ui/endSessionDialog.js:78 msgctxt "checkbox" msgid "Install pending software updates" msgstr "ബാക്കി ഉള്ള സോഫ്റ്റ്വെയര്‍ പരിഷ്കരണങ്ങള്‍ ഇന്‍സ്റ്റാള്‍ ചെയ്യുക" #: js/ui/endSessionDialog.js:81 js/ui/endSessionDialog.js:98 msgctxt "button" msgid "Restart" msgstr "പുനരാരംഭിക്കൂ" #: js/ui/endSessionDialog.js:83 msgctxt "button" msgid "Power Off" msgstr "നിര്‍ത്തുക" #: js/ui/endSessionDialog.js:90 msgctxt "title" msgid "Restart" msgstr "പുനരാരംഭിക്കുക" #: js/ui/endSessionDialog.js:92 #, javascript-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "സിസ്റ്റം %d നിമിഷത്തിനുള്ളില്‍ സ്വയമേ വീണ്ടും ആരംഭിയ്ക്കുന്നു." msgstr[1] "സിസ്റ്റം %d നിമിഷങ്ങള്‍ക്കുള്ളില്‍ സ്വയമേ വീണ്ടും ആരംഭിയ്ക്കുന്നു." #: js/ui/endSessionDialog.js:106 msgctxt "title" msgid "Restart & Install Updates" msgstr "പുനരാരംഭിക്കവേ പരിഷ്കരണങ്ങള്‍ ഇന്‍സ്റ്റാള്‍ ചെയ്യുക" #: js/ui/endSessionDialog.js:108 #, javascript-format msgid "The system will automatically restart and install updates in %d second." msgid_plural "The system will automatically restart and install updates in %d seconds." msgstr[0] "സിസ്റ്റം %d നിമിഷത്തിനുള്ളില്‍ സ്വയമേ പുനരാരംഭിച്ച് പരിഷ്കരണങ്ങള്‍ ഇന്‍സ്റ്റാള്‍ ചെയ്യും." msgstr[1] "സിസ്റ്റം %d നിമിഷങ്ങള്‍ക്കുള്ളില്‍ സ്വയമേ പുനരാരംഭിച്ച് പരിഷ്കരണങ്ങള്‍ ഇന്‍സ്റ്റാള്‍ ചെയ്യും." #: js/ui/endSessionDialog.js:114 js/ui/endSessionDialog.js:134 msgctxt "button" msgid "Restart & Install" msgstr "പുനരാരംഭിക്കുക & ഇന്‍സ്റ്റാള്‍ ചെയ്യുക" #: js/ui/endSessionDialog.js:115 msgctxt "button" msgid "Install & Power Off" msgstr "ഇന്‍സ്റ്റാള്‍ ചെയ്യുക & പവര്‍ ഓഫ് ചെയ്യുക" #: js/ui/endSessionDialog.js:116 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "പരിഷ്കരണങ്ങള്‍ ഇന്‍സ്റ്റാളായ ശേഷം പവര്‍ ഓഫ് ചെയ്യുക" #: js/ui/endSessionDialog.js:124 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "പുനരാരംഭിക്കവേ പരിഷ്കരണങ്ങള്‍ ഇന്‍സ്റ്റാള്‍ ചെയ്യുക" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:129 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long time: ensure that you have " "backed up and that the computer is plugged in." msgstr "" "%s %s റീസ്റ്റാര്‍ട്ടിനു ശേഷം ഇന്‍സ്റ്റാളാകും. ഈ ഇന്‍സ്റ്റാളേഷന്‍ ഒരുപാട് സമയം എടുത്തേക്കാം: നിങ്ങള്‍ ആവശ്യമുള്ള ബാക്ക് അപ്പ് എടുത്തു എന്നും " "കമ്പ്യൂട്ടര്‍ പ്ലഗ്ഡ് ഇന്‍ ആണെന്നും ഉറപ്പാക്കുക." #: js/ui/endSessionDialog.js:321 msgid "Running on battery power: please plug in before installing updates." msgstr "ബാറ്ററി ശേഷിയിലാണ് പ്രവര്‍ത്തിക്കുന്നത്. പരിഷ്കരണങ്ങള്‍ ഇന്‍സ്റ്റാള്‍ ചെയ്യുന്നതിനു മുന്നേ പ്ലഗ് ഇന്‍ ചെയ്യുക." #: js/ui/endSessionDialog.js:338 msgid "Some applications are busy or have unsaved work." msgstr "ചില പ്രയോഗങ്ങള്‍ തിരക്കിലാണ് അല്ലെങ്കില്‍ സംരക്ഷിക്കാത്ത വര്‍ക്ക് ഉണ്ട്." #: js/ui/endSessionDialog.js:345 msgid "Other users are logged in." msgstr "വേറേ ഉപയോക്താക്കള്‍ ലോഗിന്‍ ചെയ്തിട്ടുണ്ട്." #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:626 #, javascript-format msgid "%s (remote)" msgstr "%s (വിദൂരം)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:629 #, javascript-format msgid "%s (console)" msgstr "%s (കണ്‍സോള്‍)" #: js/ui/extensionDownloader.js:201 msgid "Install" msgstr "ഇന്‍സ്റ്റോള്‍" #: js/ui/extensionDownloader.js:206 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "\"%s\" എന്നത് extenstions.gnome.org ല്‍ നിന്നും ഡൌണ്‍ലോഡ് ചെയ്ത് ഇന്‍സ്റ്റാള്‍ ചെയ്യണമോ ?" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:59 #, javascript-format msgid "%s wants to inhibit shortcuts" msgstr "%s കുറുക്കുവഴികള്‍ തടയാന്‍ ആഗ്രഹിക്കുന്നു" #: js/ui/inhibitShortcutsDialog.js:60 msgid "Application wants to inhibit shortcuts" msgstr "പ്രയോഗം കുറുക്കുവഴികള്‍ തടയാന്‍ ആഗ്രഹിക്കുന്നു" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:69 #, javascript-format msgid "You can restore shortcuts by pressing %s." msgstr "കുറുക്കുവഴികള്‍ പഴയപടിയാക്കാന്‍ %s അമര്‍ത്താം." #: js/ui/inhibitShortcutsDialog.js:74 msgid "Deny" msgstr "നിഷേധിക്കുക" #: js/ui/inhibitShortcutsDialog.js:80 msgid "Allow" msgstr "അനുവദിക്കുക" #: js/ui/kbdA11yDialog.js:33 msgid "Slow Keys Turned On" msgstr "സ്ലോ കീകള്‍ പ്രവര്‍ത്തിപ്പിക്കുക" #: js/ui/kbdA11yDialog.js:34 msgid "Slow Keys Turned Off" msgstr "സ്ലോ കീകള്‍ പ്രവര്‍ത്തനരഹിതമാക്കുക" #: js/ui/kbdA11yDialog.js:35 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the Slow Keys feature, which " "affects the way your keyboard works." msgstr "" "താങ്കള്‍ ഷിഫ്റ്റ് കീ 8 സെക്കന്റ് അമര്‍ത്തിപ്പിടിച്ചു. ഇത് സ്ലോ കീകള്‍ക്കുള്ള കീകുറുക്കുവഴിയാണ്, ഇത് കീബോര്‍ഡ് പ്രവര്‍ത്തിക്കുന്നവിധത്തിനെ ബാധിക്കും." #: js/ui/kbdA11yDialog.js:42 msgid "Sticky Keys Turned On" msgstr "സ്റ്റിക്കി കീകള്‍ പ്രവര്‍ത്തിപ്പിക്കുക" #: js/ui/kbdA11yDialog.js:43 msgid "Sticky Keys Turned Off" msgstr "സ്റ്റിക്കി കീകള്‍ പ്രവര്‍ത്തനരഹിതമാക്കുക" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for the Sticky Keys feature, which " "affects the way your keyboard works." msgstr "" "താങ്കള്‍ ഷിഫ്റ്റ് കീ 5 പ്രാവശ്യം തുടര്‍ച്ചയായി അമര്‍ത്തി. ഇത് സ്റ്റിക്കി കീകള്‍ക്കുള്ള കീകുറുക്കുവഴിയാണ്, ഇത് കീബോര്‍ഡ് പ്രവര്‍ത്തിക്കുന്നവിധത്തിനെ " "ബാധിക്കും." #: js/ui/kbdA11yDialog.js:47 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a row. This turns off the Sticky Keys " "feature, which affects the way your keyboard works." msgstr "" "താങ്കള്‍ രണ്ട് കീകള്‍ ഒരുമിച്ചോ, ഷിഫ്റ്റ് കീ 5പ്രാവശ്യം തുടര്‍ച്ചയായോ അമര്‍ത്തി. ഇത് സ്റ്റിക്കി കീ ഓഫാക്കാനുള്ള കീകുറുക്കുവഴിയാണ്, ഇത് കീബോര്‍ഡ് " "പ്രവര്‍ത്തിക്കുന്നവിധത്തിനെ ബാധിക്കും." #: js/ui/kbdA11yDialog.js:59 msgid "Leave On" msgstr "ലീവ് ഓണ്‍" #: js/ui/kbdA11yDialog.js:59 js/ui/status/bluetooth.js:138 js/ui/status/network.js:1280 msgid "Turn On" msgstr "ഓണ്‍ ചെയ്യുക" #: js/ui/kbdA11yDialog.js:67 js/ui/status/bluetooth.js:138 js/ui/status/network.js:138 #: js/ui/status/network.js:321 js/ui/status/network.js:1280 js/ui/status/network.js:1395 #: js/ui/status/nightLight.js:43 js/ui/status/rfkill.js:85 js/ui/status/rfkill.js:112 msgid "Turn Off" msgstr "ഓഫ് ചെയ്യുക" #: js/ui/kbdA11yDialog.js:67 msgid "Leave Off" msgstr "ലീവ് ഓഫ്" #: js/ui/keyboard.js:198 msgid "Region & Language Settings" msgstr "സ്ഥലം, ഭാഷ സജ്ജീകരണങ്ങള്‍" #: js/ui/lookingGlass.js:644 msgid "No extensions installed" msgstr "ഒരു എക്സ്റ്റെന്‍ഷനും ഇന്‍സ്റ്റോള്‍ ചെയ്തിട്ടില്ല" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:698 #, javascript-format msgid "%s has not emitted any errors." msgstr "%s ഒരു പിശകും കാണിച്ചുട്ടില്ല." #: js/ui/lookingGlass.js:704 msgid "Hide Errors" msgstr "പിശകുകള്‍ മറച്ചുവെക്കുക" #: js/ui/lookingGlass.js:708 js/ui/lookingGlass.js:768 msgid "Show Errors" msgstr "പിശകുകള്‍ കാണിക്കുക" #: js/ui/lookingGlass.js:717 msgid "Enabled" msgstr "പ്രവര്‍ത്തനക്ഷമമാക്കി" #. translators: #. * The device has been disabled #: js/ui/lookingGlass.js:720 subprojects/gvc/gvc-mixer-control.c:1866 msgid "Disabled" msgstr "പ്രവര്‍ത്തനരഹിതമാക്കി" #: js/ui/lookingGlass.js:722 msgid "Error" msgstr "പിശക്" #: js/ui/lookingGlass.js:724 msgid "Out of date" msgstr "തിയതി കഴിഞ്ഞത്" #: js/ui/lookingGlass.js:726 msgid "Downloading" msgstr "ഡൗണ്‍ലോട് ചെയ്യുന്നു" #: js/ui/lookingGlass.js:750 msgid "View Source" msgstr "സ്രോതസ്സ് കാണിക്കുക" #: js/ui/lookingGlass.js:759 msgid "Web Page" msgstr "വെബ് താള്‍" #: js/ui/messageTray.js:1495 msgid "System Information" msgstr "സിസ്റ്റത്തെക്കുറിച്ചുള്ള വിവരം" #: js/ui/mpris.js:185 msgid "Unknown artist" msgstr "അജ്ഞാതനായ ആര്‍ട്ടിസ്റ്റ്" #: js/ui/mpris.js:186 msgid "Unknown title" msgstr "അജ്ഞാതമായ ടൈറ്റില്‍" #: js/ui/osdWindow.js:32 js/ui/status/volume.js:204 msgid "Volume" msgstr "ഒച്ച" #: js/ui/overview.js:83 msgid "Undo" msgstr "വേണ്ട" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:112 msgid "Overview" msgstr "അവലോകനം" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overview.js:239 msgid "Type to search…" msgstr "തിരയുന്നതിനായി ഇവിടെ ടൈപ്പ് ചെയ്യുക…" #: js/ui/padOsd.js:107 msgid "New shortcut…" msgstr "പുതിയ കുറുക്കുവഴി…" #: js/ui/padOsd.js:158 msgid "Application defined" msgstr "പ്രയോഗങ്ങള്‍ നിര്‍വചിച്ചിരിക്കുന്നു" #: js/ui/padOsd.js:159 msgid "Show on-screen help" msgstr "on-screen സഹായം ദൃശ്യമാക്കുക" #: js/ui/padOsd.js:160 msgid "Switch monitor" msgstr "മോണിറ്റര്‍ മാറ്റുക" #: js/ui/padOsd.js:161 msgid "Assign keystroke" msgstr "കീസ്ട്രോക്ക് അസൈന്‍ ചെയ്യുക" #: js/ui/padOsd.js:228 msgid "Done" msgstr "തീര്‍ന്നു" #: js/ui/padOsd.js:744 msgid "Edit…" msgstr "തിരുത്തുക…" #: js/ui/padOsd.js:786 js/ui/padOsd.js:891 msgid "None" msgstr "ഒന്നുമില്ല" #: js/ui/padOsd.js:845 msgid "Press a button to configure" msgstr "കോണ്‍ഫിഗര്‍ ചെയ്യാന്‍ ഒരു ബട്ടണ്‍ അമര്‍ത്തുക" #: js/ui/padOsd.js:846 msgid "Press Esc to exit" msgstr "പുറത്തുകടക്കാന്‍ Esc അമര്‍ത്തുക" #: js/ui/padOsd.js:849 msgid "Press any key to exit" msgstr "പുറത്തു കടക്കാന്‍ ഏതെങ്കിലും കീ അമര്‍ത്തുക" #: js/ui/panel.js:359 msgid "Quit" msgstr "നിര്‍ത്തുക" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:415 msgid "Activities" msgstr "പ്രവര്‍ത്തനങ്ങള്‍" #: js/ui/panel.js:696 msgctxt "System menu in the top bar" msgid "System" msgstr "സിസ്റ്റം" #: js/ui/panel.js:820 msgid "Top Bar" msgstr "മുകളിലുള്ള ബാര്‍" #. Translators: this MUST be either "toggle-switch-us" #. (for toggle switches containing the English words #. "ON" and "OFF") or "toggle-switch-intl" (for toggle #. switches containing "◯" and "|"). Other values will #. simply result in invisible toggle switches. #: js/ui/popupMenu.js:300 msgid "toggle-switch-us" msgstr "toggle-switch-us" #: js/ui/runDialog.js:74 msgid "Enter a Command" msgstr "ഒരു കമാന്‍ഡ് നല്‍കുക" #: js/ui/runDialog.js:114 js/ui/windowMenu.js:174 msgid "Close" msgstr "അടക്കുക" #: js/ui/runDialog.js:276 msgid "Restart is not available on Wayland" msgstr "വേയ്ലാന്‍ഡില്‍ പുനരാരംഭം എന്ന ഓപ്ഷന്‍ ലഭ്യമല്ല" #: js/ui/runDialog.js:281 msgid "Restarting…" msgstr "പുനരാരംഭിക്കുന്നു…" #. Translators: This is a time format for a date in #. long format #: js/ui/screenShield.js:88 msgid "%A, %B %d" msgstr "%A, %B %d" #: js/ui/screenShield.js:146 #, javascript-format msgid "%d new message" msgid_plural "%d new messages" msgstr[0] "%d പുതിയ സന്ദേശം" msgstr[1] "%d പുതിയ സന്ദേശങ്ങള്‍" #: js/ui/screenShield.js:148 #, javascript-format msgid "%d new notification" msgid_plural "%d new notifications" msgstr[0] "%d പുതിയ അറിയിപ്പു്" msgstr[1] "%d പുതിയ അറിയിപ്പുകള്‍" #: js/ui/screenShield.js:451 js/ui/status/system.js:294 msgid "Lock" msgstr "പൂട്ടുക" #: js/ui/screenShield.js:715 msgid "GNOME needs to lock the screen" msgstr "ഗ്നോമിന് സ്ക്രീന്‍ പൂട്ടണം" #. We could not become modal, so we can't activate the #. screenshield. The user is probably very upset at this #. point, but any application using global grabs is broken #. Just tell him to stop using this app #. #. XXX: another option is to kick the user into the gdm login #. screen, where we're not affected by grabs #: js/ui/screenShield.js:836 js/ui/screenShield.js:1309 msgid "Unable to lock" msgstr "പൂട്ടുവാന്‍ സാധ്യമല്ല" #: js/ui/screenShield.js:837 js/ui/screenShield.js:1310 msgid "Lock was blocked by an application" msgstr "പൂട്ടുന്ന സംവിധാനം ഒരു പ്രയോഗം തടസ്സപ്പെടുത്തിയിരിയ്ക്കുന്നു" #: js/ui/search.js:660 msgid "Searching…" msgstr "തിരയുന്നു…" #: js/ui/search.js:662 msgid "No results." msgstr "ഫലങ്ങളില്ല." #: js/ui/search.js:786 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "%d കൂടുതല്‍" msgstr[1] "%d കൂടുതല്‍" #: js/ui/shellEntry.js:25 msgid "Copy" msgstr "പകര്‍ത്തുക" #: js/ui/shellEntry.js:30 msgid "Paste" msgstr "ഒട്ടിയ്ക്കുക" #: js/ui/shellEntry.js:96 msgid "Show Text" msgstr "പദാവലി കാണിക്കുക" #: js/ui/shellEntry.js:98 msgid "Hide Text" msgstr "പദാവലി മറക്കുക" #: js/ui/shellMountOperation.js:316 msgid "Password" msgstr "രഹസ്യവാക്ക്" #: js/ui/shellMountOperation.js:337 msgid "Remember Password" msgstr "രഹസ്യവാക്ക് ഓര്‍ത്തു് വയ്ക്കുക" #: js/ui/status/accessibility.js:42 msgid "Accessibility" msgstr "ആക്സസിബിളിറ്റി" #: js/ui/status/accessibility.js:57 msgid "Zoom" msgstr "വലുതാക്കുക" #: js/ui/status/accessibility.js:64 msgid "Screen Reader" msgstr "സ്ക്രീന്‍ റീഡര്‍" #: js/ui/status/accessibility.js:68 msgid "Screen Keyboard" msgstr "സ്ക്രീന്‍ കീബോര്‍ഡ്" #: js/ui/status/accessibility.js:72 msgid "Visual Alerts" msgstr "വിഷ്വല്‍ അറിയിപ്പുകള്‍" #: js/ui/status/accessibility.js:75 msgid "Sticky Keys" msgstr "സ്റ്റിക്കി കീകള്‍" #: js/ui/status/accessibility.js:78 msgid "Slow Keys" msgstr "സ്ലോ കീകള്‍" #: js/ui/status/accessibility.js:81 msgid "Bounce Keys" msgstr "ബൌണ്‍സ് കീകള്‍" #: js/ui/status/accessibility.js:84 msgid "Mouse Keys" msgstr "മൌസ് കീകള്‍" #: js/ui/status/accessibility.js:165 msgid "High Contrast" msgstr "ഹൈ കോണ്ട്രാസ്റ്റ്" #: js/ui/status/accessibility.js:200 msgid "Large Text" msgstr "വലുപ്പത്തിലുളള ടെകസ്റ്റിന്റെ ശൈലി" #: js/ui/status/bluetooth.js:43 msgid "Bluetooth" msgstr "ബ്ളുടൂത്ത്" #: js/ui/status/bluetooth.js:52 js/ui/status/network.js:600 msgid "Bluetooth Settings" msgstr "ബ്ളുടൂത്ത് ക്രമീകരണങ്ങള്‍" #. Translators: this is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:132 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d കണക്റ്റായി" msgstr[1] "%d കണക്റ്റായി" #: js/ui/status/bluetooth.js:134 msgid "Off" msgstr "ഓഫ്​" #: js/ui/status/bluetooth.js:136 msgid "On" msgstr "ഓണ്‍" #: js/ui/status/brightness.js:41 msgid "Brightness" msgstr "തെളിച്ചം" #: js/ui/status/keyboard.js:781 msgid "Keyboard" msgstr "കീബോര്‍ഡ്" #: js/ui/status/keyboard.js:804 msgid "Show Keyboard Layout" msgstr "കീബോര്‍ഡ് വിന്യാസം കാണിയ്ക്കുക" #: js/ui/status/location.js:72 js/ui/status/location.js:180 msgid "Location Enabled" msgstr "ലൊക്കേഷന്‍ ഇനേബിള്‍ ചെയ്തു" #: js/ui/status/location.js:73 js/ui/status/location.js:181 msgid "Disable" msgstr "പ്രവര്‍ത്തനരഹിതമാക്കി" #: js/ui/status/location.js:74 msgid "Privacy Settings" msgstr "സ്വകാര്യതാ ക്രമീകരണങ്ങള്‍" #: js/ui/status/location.js:179 msgid "Location In Use" msgstr "ലൊക്കേഷന്‍ ഉപയോഗത്തിലാണ്" #: js/ui/status/location.js:183 msgid "Location Disabled" msgstr "ലൊക്കേഷന്‍ ഡിസേബിള്‍ ചെയ്തു" #: js/ui/status/location.js:184 msgid "Enable" msgstr "പ്രവര്‍ത്തനക്ഷമമാക്കി" #. Translators: %s is an application name #: js/ui/status/location.js:369 #, javascript-format msgid "Give %s access to your location?" msgstr "%s ന് ലൊക്കേഷനിലേക്ക് അനുമതി നല്‍കണോ ?" #: js/ui/status/location.js:370 msgid "Location access can be changed at any time from the privacy settings." msgstr "ലൊക്കേഷന്‍ അനുമതി എപ്പോള്‍ വേണമെങ്കിലും പ്രൈവസി ക്രമീകരണങ്ങളില്‍ നിന്ന് മാറ്റാവുന്നതാണ്." #: js/ui/status/network.js:74 msgid "" msgstr "<അജ്ഞാതം>" #. Translators: %s is a network identifier #: js/ui/status/network.js:427 js/ui/status/network.js:1309 #, javascript-format msgid "%s Off" msgstr "%s ഓഫ്" #. Translators: %s is a network identifier #: js/ui/status/network.js:430 #, javascript-format msgid "%s Connected" msgstr "%s കണക്റ്റ് ചെയ്തു" #. Translators: this is for network devices that are physically present but are not #. under NetworkManager's control (and thus cannot be used in the menu); #. %s is a network identifier #: js/ui/status/network.js:435 #, javascript-format msgid "%s Unmanaged" msgstr "%s കൈകാര്യം ചെയ്തിട്ടില്ലാത്തത്" #. Translators: %s is a network identifier #: js/ui/status/network.js:438 #, javascript-format msgid "%s Disconnecting" msgstr "%s വിച്ഛേദിക്കുന്നു" #. Translators: %s is a network identifier #: js/ui/status/network.js:445 js/ui/status/network.js:1301 #, javascript-format msgid "%s Connecting" msgstr "%s കണക്റ്റ് ചെയ്യുന്നു" #. Translators: this is for network connections that require some kind of key or password; %s is a network identifier #: js/ui/status/network.js:448 #, javascript-format msgid "%s Requires Authentication" msgstr "%s തിരിച്ചറിയല്‍ ആവശ്യപ്പെടുന്നു" #. Translators: this is for devices that require some kind of firmware or kernel #. module, which is missing; %s is a network identifier #: js/ui/status/network.js:456 #, javascript-format msgid "Firmware Missing For %s" msgstr "%s നുള്ള ഫേംവെയര്‍ ഇപ്പോള്‍ ലഭ്യമല്ല" #. Translators: this is for a network device that cannot be activated (for example it #. is disabled by rfkill, or it has no coverage; %s is a network identifier #: js/ui/status/network.js:460 #, javascript-format msgid "%s Unavailable" msgstr "%s ലഭ്യമല്ല" #. Translators: %s is a network identifier #: js/ui/status/network.js:463 #, javascript-format msgid "%s Connection Failed" msgstr "%s കണക്ഷന്‍ പരാജയപ്പെട്ടു" #: js/ui/status/network.js:479 msgid "Wired Settings" msgstr "വയേഡ് സെറ്റിങ്സ്" #: js/ui/status/network.js:521 msgid "Mobile Broadband Settings" msgstr "മൊബൈല്‍ ബ്രോഡ്ബാന്‍ഡ് ക്രമീകരണങ്ങള്‍" #. Translators: %s is a network identifier #: js/ui/status/network.js:564 js/ui/status/network.js:1306 #, javascript-format msgid "%s Hardware Disabled" msgstr "%s ഹാര്‍ഡ്‌വെയര്‍ പ്രവര്‍ത്തന രഹിതം" #. Translators: this is for a network device that cannot be activated #. because it's disabled by rfkill (airplane mode); %s is a network identifier #: js/ui/status/network.js:568 #, javascript-format msgid "%s Disabled" msgstr "%s പ്രവര്‍ത്തനരഹിതമാക്കി" #: js/ui/status/network.js:608 msgid "Connect to Internet" msgstr "ഇന്റര്‍നെറ്റുമായി കണക്റ്റ് ചെയ്യുക" #: js/ui/status/network.js:802 msgid "Airplane Mode is On" msgstr "എയര്‍പ്ലെയിന്‍ മോഡ് ഓണ്‍ ആണ്" #: js/ui/status/network.js:803 msgid "Wi-Fi is disabled when airplane mode is on." msgstr "എയര്‍പ്ലെയിന്‍ മോഡ് ഓണ്‍ ആകവേ വൈ-ഫൈ പ്രവര്‍ത്തനരഹിതമാകും." #: js/ui/status/network.js:804 msgid "Turn Off Airplane Mode" msgstr "എര്‍പ്ലെയിന്‍ മോഡ് ഓഫ് ചെയ്യുക" #: js/ui/status/network.js:813 msgid "Wi-Fi is Off" msgstr "വൈ-ഫൈ ഓഫ് ആണ്" #: js/ui/status/network.js:814 msgid "Wi-Fi needs to be turned on in order to connect to a network." msgstr "നെറ്റ്വര്‍ക്കിലേക്ക് കണക്റ്റ് ചെയ്യാന്‍ വൈഫൈ ഓണ്‍ ചെയ്യുക." #: js/ui/status/network.js:815 msgid "Turn On Wi-Fi" msgstr "വൈഫൈ ഓണ്‍ ചെയ്യുക" #: js/ui/status/network.js:840 msgid "Wi-Fi Networks" msgstr "വൈഫൈ നെറ്റ്വര്‍ക്കുകള്‍" #: js/ui/status/network.js:842 msgid "Select a network" msgstr "നെറ്റ്വര്‍ക്ക് തിരഞ്ഞെടുക്കുക" #: js/ui/status/network.js:872 msgid "No Networks" msgstr "നെറ്റ്വര്‍ക്കുകളില്ല" #: js/ui/status/network.js:893 js/ui/status/rfkill.js:110 msgid "Use hardware switch to turn off" msgstr "നിര്‍ത്തുവാന്‍ ഹാര്‍ഡ്വെയര്‍ സ്വിച്ച് ഉപയോഗിക്കുക" #: js/ui/status/network.js:1172 msgid "Select Network" msgstr "നെറ്റ്വര്‍ക്ക് തിരഞ്ഞെടുക്കുക" #: js/ui/status/network.js:1178 msgid "Wi-Fi Settings" msgstr "വൈഫൈ സജ്ജീകരണങ്ങള്‍" #. Translators: %s is a network identifier #: js/ui/status/network.js:1297 #, javascript-format msgid "%s Hotspot Active" msgstr "%s ഹോട്സ്പോട്ട് ആക്റ്റീവ് ആയി" #. Translators: %s is a network identifier #: js/ui/status/network.js:1312 #, javascript-format msgid "%s Not Connected" msgstr "%s കണക്റ്റഡ് അല്ല" #: js/ui/status/network.js:1412 msgid "connecting…" msgstr "ബന്ധിപ്പിക്കുന്നു…" #. Translators: this is for network connections that require some kind of key or password #: js/ui/status/network.js:1415 msgid "authentication required" msgstr "ആധികാരികത ഉറപ്പ് വരുത്തല്‍ ആവശ്യമുണ്ട്" #: js/ui/status/network.js:1417 msgid "connection failed" msgstr "ബന്ധം പരാജയപ്പെട്ടു" #: js/ui/status/network.js:1471 msgid "VPN Settings" msgstr "വിപിഎന്‍ സജ്ജീകരണങ്ങള്‍" #: js/ui/status/network.js:1484 msgid "VPN" msgstr "വി പി എന്‍" #: js/ui/status/network.js:1494 msgid "VPN Off" msgstr "വിപിഎന്‍ ഓഫ്" #: js/ui/status/network.js:1558 js/ui/status/rfkill.js:88 msgid "Network Settings" msgstr "നെറ്റ്‌വര്‍ക്ക് സജ്ജീകരണങ്ങള്‍" #: js/ui/status/network.js:1587 #, javascript-format msgid "%s Wired Connection" msgid_plural "%s Wired Connections" msgstr[0] "%s വയേഡ് കണക്ഷന്‍" msgstr[1] "%s വയേഡ് കണക്ഷനുകള്‍" #: js/ui/status/network.js:1591 #, javascript-format msgid "%s Wi-Fi Connection" msgid_plural "%s Wi-Fi Connections" msgstr[0] "%s വൈഫൈ കണക്ഷന്‍" msgstr[1] "%s വൈഫൈ കണക്ഷനുകള്‍" #: js/ui/status/network.js:1595 #, javascript-format msgid "%s Modem Connection" msgid_plural "%s Modem Connections" msgstr[0] "%s മോഡം കണക്ഷന്‍" msgstr[1] "%s മോഡം കണക്ഷനുകള്‍" #: js/ui/status/network.js:1727 msgid "Connection failed" msgstr "കണക്ഷന്‍ പരാജയപ്പെട്ടു" #: js/ui/status/network.js:1728 msgid "Activation of network connection failed" msgstr "നെറ്റ്‌വര്‍ക്ക് കണക്ഷന്‍ സജീവമാക്കല്‍ പരാജയപ്പെട്ടു" #: js/ui/status/nightLight.js:64 msgid "Night Light Disabled" msgstr "നൈറ്റ് ലൈറ്റ് പ്രവര്‍ത്തന രഹിതം" #: js/ui/status/nightLight.js:65 msgid "Night Light On" msgstr "നൈറ്റ് ലൈറ്റ് ഓണ്‍" #: js/ui/status/nightLight.js:66 msgid "Resume" msgstr "വീണ്ടും തുടങ്ങുക" #: js/ui/status/nightLight.js:67 msgid "Disable Until Tomorrow" msgstr "നാളെ വരെ പ്രവര്‍ത്തനരഹിതമാക്കുക" #: js/ui/status/power.js:52 msgid "Power Settings" msgstr "ഊര്‍ജ്ജ ക്രമീകരണങ്ങള്‍" #: js/ui/status/power.js:68 msgid "Fully Charged" msgstr "ചാര്‍ജ് നിറഞ്ഞിരിക്കുന്നു" #. 0 is reported when UPower does not have enough data #. to estimate battery life #: js/ui/status/power.js:75 js/ui/status/power.js:81 msgid "Estimating…" msgstr "കണക്കുകൂട്ടുന്നു…" #. Translators: this is : Remaining () #: js/ui/status/power.js:89 #, javascript-format msgid "%d∶%02d Remaining (%d %%)" msgstr "%d∶%02d ബാക്കിയുണ്ട് (%d %%)" #. Translators: this is : Until Full () #: js/ui/status/power.js:94 #, javascript-format msgid "%d∶%02d Until Full (%d %%)" msgstr "%d∶%02d നിറയുന്നതുവരെ (%d %%)" #: js/ui/status/power.js:122 js/ui/status/power.js:124 #, javascript-format msgid "%d %%" msgstr "%d %%" #: js/ui/status/remoteAccess.js:46 msgid "Screen is Being Shared" msgstr "സ്ക്രീന്‍ പങ്കുവയ്ക്കപ്പെടുന്നു" #: js/ui/status/remoteAccess.js:48 msgid "Turn off" msgstr "ഓഫാക്കുക" #. The menu only appears when airplane mode is on, so just #. statically build it as if it was on, rather than dynamically #. changing the menu contents. #: js/ui/status/rfkill.js:83 msgid "Airplane Mode On" msgstr "വിമാനം മോഡ് ഓണ്‍ ചെയ്യുക" #: js/ui/status/system.js:227 msgid "Switch User" msgstr "ഉപയോക്താവിനെ മാറ്റുക" #: js/ui/status/system.js:239 msgid "Log Out" msgstr "പുറത്ത് കടക്കുക" #: js/ui/status/system.js:251 msgid "Account Settings" msgstr "അക്കൌണ്ട് ക്രമീകരണങ്ങള്‍" #: js/ui/status/system.js:279 msgid "Orientation Lock" msgstr "വിന്യാസ ബന്ധനം" #: js/ui/status/system.js:305 msgid "Suspend" msgstr "താത്കാലികമായി നിര്‍ത്തുക" #: js/ui/status/system.js:315 msgid "Power Off" msgstr "നിര്‍ത്തുക" #: js/ui/status/thunderbolt.js:268 msgid "Thunderbolt" msgstr "തണ്ടര്‍ബോള്‍ട്ട്" #. we are done #: js/ui/status/thunderbolt.js:324 msgid "Unknown Thunderbolt device" msgstr "അറിയില്ലാത്ത തണ്ടര്‍ബോള്‍ട്ട് ഉപകരണം" #: js/ui/status/thunderbolt.js:325 msgid "" "New device has been detected while you were away. Please disconnect and reconnect the device to start using " "it." msgstr "" "താങ്കള്‍ സ്ഥലത്തില്ലാത്തപ്പോള്‍ പുതിയ ഉപകരണം ബന്ധിപ്പിച്ചിരിക്കുന്നു. ഉപകരണം ഉപയോഗിക്കുന്നതിന് വിച്ഛേദിക്കുകയും പുനര്‍ബന്ധിപ്പിക്കുയും ചെയ്യുക." #: js/ui/status/thunderbolt.js:330 msgid "Thunderbolt authorization error" msgstr "തണ്ടര്‍ബോള്‍ട്ട് സാധുതാ പിഴവ്" #: js/ui/status/thunderbolt.js:331 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "തണ്ടര്‍ബോള്‍ട്ട് ഉപകരണത്തിന് സാധുതനല്‍കാന്‍ കഴിഞ്ഞില്ല: %s" #: js/ui/status/volume.js:135 msgid "Volume changed" msgstr "ഒച്ച മാറ്റി" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:21 msgid "Mirror" msgstr "മിറര്‍" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:26 msgid "Join Displays" msgstr "ഡിസ്പ്ലേകള്‍ ചേര്‍ക്കുക" #. Translators: this is for using only an external display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:31 msgid "External Only" msgstr "പുറമേ മാത്രം" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:36 msgid "Built-in Only" msgstr "ഉള്ളിലേത് മാത്രം" #: js/ui/unlockDialog.js:67 msgid "Log in as another user" msgstr "മറ്റൊരു ഉപയോക്താവായി പ്രവേശിയ്ക്കുക" #: js/ui/unlockDialog.js:84 msgid "Unlock Window" msgstr "ജാലകത്തിന്റെ പൂട്ടു തുറക്കുക" #: js/ui/viewSelector.js:190 msgid "Applications" msgstr "പ്രയോഗങ്ങള്‍" #: js/ui/viewSelector.js:194 msgid "Search" msgstr "തിരയല്‍" #: js/ui/windowAttentionHandler.js:20 #, javascript-format msgid "“%s” is ready" msgstr "\"%s\" തയ്യാറാണ്" #: js/ui/windowManager.js:63 msgid "Do you want to keep these display settings?" msgstr "ഈ ദൃശ്യക്രമീകരണം സൂക്ഷിക്കണോ ?" #. Translators: this and the following message should be limited in lenght, #. to avoid ellipsizing the labels. #. #: js/ui/windowManager.js:75 msgid "Revert Settings" msgstr "ക്രമീകരണങ്ങള്‍ തിരിച്ചാക്കുക" #: js/ui/windowManager.js:78 msgid "Keep Changes" msgstr "മാറ്റങ്ങള്‍ സംരക്ഷിക്കുക" #: js/ui/windowManager.js:96 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "ക്രമീകരണങ്ങള്‍ %d സെക്കന്‍ഡില്‍ തിരിച്ചാകും" msgstr[1] "ക്രമീകരണങ്ങള്‍ %d സെക്കന്‍ഡുകളില്‍ തിരിച്ചാകും" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:681 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:34 msgid "Minimize" msgstr "ചെറുതാക്കുക" #: js/ui/windowMenu.js:41 msgid "Unmaximize" msgstr "പരമാവധി ആക്കാതിരിക്കുക" #: js/ui/windowMenu.js:45 msgid "Maximize" msgstr "പരമാവധി ആക്കുക" #: js/ui/windowMenu.js:52 msgid "Move" msgstr "നീക്കുക" #: js/ui/windowMenu.js:58 msgid "Resize" msgstr "വലിപ്പം മാറ്റുക" #: js/ui/windowMenu.js:65 msgid "Move Titlebar Onscreen" msgstr "ടൈറ്റില്‍ ബാര്‍ സ്ക്രീനില്‍ നീക്കുക" #: js/ui/windowMenu.js:70 msgid "Always on Top" msgstr "എപ്പോഴും മുകളില്‍" #: js/ui/windowMenu.js:89 msgid "Always on Visible Workspace" msgstr "എപ്പോഴും ദൃശ്യമായ പണിയിടത്തില്‍ ഉണ്ടാകുക" #: js/ui/windowMenu.js:103 msgid "Move to Workspace Left" msgstr "പണിയിടം ഇടത്തേക്ക് നീക്കുക" #: js/ui/windowMenu.js:109 msgid "Move to Workspace Right" msgstr "പണിയിടം വലത്തേക്ക് നീക്കുക" #: js/ui/windowMenu.js:115 msgid "Move to Workspace Up" msgstr "പണിയിടം മുകളിലേക്ക് നീക്കുക" #: js/ui/windowMenu.js:121 msgid "Move to Workspace Down" msgstr "പണിയിടം താഴേക്ക് നീക്കുക" #: js/ui/windowMenu.js:139 msgid "Move to Monitor Up" msgstr "മോണിറ്ററിന്റെ മുകള്‍ഭാഗത്തേക്ക് നീക്കുക" #: js/ui/windowMenu.js:148 msgid "Move to Monitor Down" msgstr "മോണിറ്ററിന്റെ താഴ്ഭാഗത്തേക്ക് നീക്കുക" #: js/ui/windowMenu.js:157 msgid "Move to Monitor Left" msgstr "മോണിറ്ററിന്റെ ഇടത്തേക്ക് നീക്കുക" #: js/ui/windowMenu.js:166 msgid "Move to Monitor Right" msgstr "മോണിറ്ററിന്റെ വലത്തേക്ക് നീക്കുക" #: src/calendar-server/evolution-calendar.desktop.in:3 msgid "Evolution Calendar" msgstr "ഇവല്യൂഷന്‍ കലണ്ടര്‍" #. Translators: Do NOT translate or transliterate this text (this is an icon file name)! #: src/calendar-server/evolution-calendar.desktop.in:6 msgid "evolution" msgstr "evolution" #: src/main.c:410 msgid "Print version" msgstr "പ്രിന്റ് ചെയ്യുവാന്‍ സാധിയ്ക്കുന്ന പതിപ്പു്" #: src/main.c:416 msgid "Mode used by GDM for login screen" msgstr "പ്രവേശന സ്ക്രീനില്‍ ജിഡിഎം ഉപയോഗിയ്ക്കുന്ന മോഡ്" #: src/main.c:422 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "ഒരു പ്രത്യേക മോഡ് ഉപയോഗിയ്ക്കുക, ഉദാ. പ്രവേശന സ്ക്രീനിന് gdm" #: src/main.c:428 msgid "List possible modes" msgstr "സാധ്യമായ മോഡുകള്‍ ലഭ്യമാക്കുക" #: src/shell-app.c:272 msgctxt "program" msgid "Unknown" msgstr "അജ്ഞാതം" #: src/shell-app.c:523 #, c-format msgid "Failed to launch “%s”" msgstr "\"%s\" ലഭ്യമാക്കുന്നതില്‍ പരാജയം" #: src/shell-keyring-prompt.c:730 msgid "Passwords do not match." msgstr "രഹസ്യവാക്കുകള്‍ സമാനമല്ല." #: src/shell-keyring-prompt.c:738 msgid "Password cannot be blank" msgstr "രഹസ്യവാക്ക് കാലിയാകുവാന്‍ പാടില്ല" #: src/shell-polkit-authentication-agent.c:353 msgid "Authentication dialog was dismissed by the user" msgstr "ഉപയോക്താവു് ആധികാരികത ഉറപ്പാക്കല്‍ ഡയലോഗ് നിര്‍ത്തുന്നു" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1873 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u ഔട്ട്പുട്ട്" msgstr[1] "%u ഔട്ട്പുട്ടുകള്‍" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1883 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u ഇന്‍പുട്ട്" msgstr[1] "%u ഇന്‍പുട്ടുകള്‍" #: subprojects/gvc/gvc-mixer-control.c:2738 msgid "System Sounds" msgstr "സിസ്റ്റം ശബ്ദങ്ങള്‍" #~ msgctxt "search-result" #~ msgid "Power off" #~ msgstr "നിര്‍ത്തുക" #~ msgctxt "search-result" #~ msgid "Log out" #~ msgstr "പുറത്ത് കടക്കുക" #~ msgctxt "search-result" #~ msgid "Switch user" #~ msgstr "ഉപയോക്താവിനെ മാറ്റുക" #~ msgid "Screenshots" #~ msgstr "സ്ക്രീന്‍ഷോട്ടുകള്‍" #~ msgid "Record a screencast" #~ msgstr "ഒരു സ്ക്രീന്‍കാസ്റ്റ് റിക്കോര്‍ഡ് ചെയ്യുക" #~ msgid "Show the message tray" #~ msgstr "സന്ദേശത്തിന്റെ ട്രേ കാണിയ്ക്കുക" #~ msgid "GNOME Shell Extension Preferences" #~ msgstr "ഗ്നോം ഷെല്‍ എക്സ്റ്റെന്‍ഷന്‍ മുന്‍ഗണനകള്‍" #~ msgid "Whether to collect stats about applications usage" #~ msgstr "പ്രയോഗങ്ങളുടെ ഉപയോഗത്തെപ്പറ്റിയുള്ള സ്ഥിതിവിവരക്കണക്കുകള്‍ ശേഖരിയ്ക്കണമോ എന്നു്" #~ msgid "" #~ "The shell normally monitors active applications in order to present the most used ones (e.g. in " #~ "launchers). While this data will be kept private, you may want to disable this for privacy reasons. " #~ "Please note that doing so won't remove already saved data." #~ msgstr "" #~ "ഏറ്റവും കൂടുതല്‍ തവണ ഉപയോഗിയ്ക്കുന്ന പ്രയോഗങ്ങള്‍ ലഭ്യമാക്കുന്നതിനായി ഷെല്‍ സാധാരണയായി സജീവമായ പ്രയോഗങ്ങളെ നിരീക്ഷിയ്ക്കുന്നു. " #~ "(ഉദാഹരണത്തിനു്, ലോഞ്ചേര്‍സ്). ഈ ഡേറ്റാ സ്വകാര്യമായി സൂക്ഷിയ്ക്കുന്നെങ്കിലും, ചില കാരണങ്ങളാല്‍ ഇതു് പ്രവര്‍ത്തന രഹിതമാക്കേണ്ടതുണ്ടു്. ഇങ്ങനെ " #~ "ചെയ്യുന്നതു് നിങ്ങള്‍ സൂക്ഷിച്ച ഡേറ്റയെ ബാധിയ്ക്കുന്നതല്ല." #~ msgid "List of categories that should be displayed as folders" #~ msgstr "ഫോള്‍ഡറുകളായി കാണിയ്ക്കേണ്ട വിഭാഗങ്ങളുടെ പട്ടിക" #~ msgid "" #~ "Each category name in this list will be represented as folder in the application view, rather than being " #~ "displayed inline in the main view." #~ msgstr "" #~ "ഈ പട്ടികയിലുള്ള ഓരോ വിഭാഗത്തിന്റെ പേരും, പ്രധാന കാഴ്ചയില്‍ ഓരോ വരിയായി കാണിയ്ക്കുന്നതിനു് പകരം പ്രയോഗങ്ങളുടെ കാഴ്ചയില്‍ ഫോള്‍" #~ "ഡറായി കാണിയ്ക്കുന്നു. " #~ msgid "" #~ "Internally used to store the last IM presence explicitly set by the user. The value here is from the " #~ "TpConnectionPresenceType enumeration." #~ msgstr "" #~ "ഉപയോക്താവു് സജ്ജമാക്കിയ അവസാന ഐഎം ആന്തരികമായി സൂക്ഷിയ്ക്കുന്നതിനു് ഉപയോഗിയ്ക്കുന്നു. മൂല്യം TpConnectionPresenceType " #~ "തരത്തിലുള്ളതാകുന്നു." #~ msgid "" #~ "Internally used to store the last session presence status for the user. The value here is from the " #~ "GsmPresenceStatus enumeration." #~ msgstr "" #~ "ഉപയോക്താവിനുള്ള അവസാന സെഷന്‍ അവസ്ഥ ആന്തരികമായി സൂക്ഷിയ്ക്കുന്നതിനു് ഉപയോഗിയ്ക്കുന്നു. മൂല്യം GsmPresenceStatus തരത്തിലുള്ളതാകുന്നു." #~ msgid "Show the week date in the calendar" #~ msgstr "കലണ്ടറിലുള്ള ആഴ്ച തീയിതി കാണിയ്ക്കുക" #~ msgid "If true, display the ISO week date in the calendar." #~ msgstr "true എങ്കില്‍, കലണ്ടറില്‍ ഐഎസ്ഒ ആഴ്ച തീയതി കാണിയ്ക്കുക." #~ msgid "Keybinding to toggle the screen recorder" #~ msgstr "സ്ക്രീന്‍ റിക്കോര്‍ഡര്‍ ടൊഗ്ഗിള്‍ ചെയ്യുന്നതിനുള്ള കീക്കൂട്ടം" #~ msgid "Keybinding to start/stop the builtin screen recorder." #~ msgstr "ബിള്‍ട്ടിന്‍ സ്ക്രീന്‍ റിക്കോര്‍ഡര്‍ തുടങ്ങുവാന്‍/നിര്‍ത്തുന്നതിനുള്ള കീക്കൂട്ടം." #~ msgid "Framerate used for recording screencasts." #~ msgstr "സ്ക്രീന്‍കാസ്റ്റുകള്‍ റിക്കോര്‍ഡ് ചെയ്യുന്നതിനുള്ള ഫ്രെയിം റേറ്റ്." #~ msgid "" #~ "The framerate of the resulting screencast recordered by GNOME Shell's screencast recorder in frames-per-" #~ "second." #~ msgstr "" #~ "ഗ്നോം ഷെല്ലിന്റെ സ്ക്രീന്‍കാസ്റ്റ് റിക്കോര്‍ഡര്‍ റീക്കോര്‍ഡ് ചെയ്തിട്ടുള്ള സ്ക്രീന്‍കാസ്റ്റിന്റെ ഫ്രെയിംറേറ്റ്, ഒരു സെക്കന്‍ഡില്‍ ഒരു ഫ്രെയിം." #~ msgid "The gstreamer pipeline used to encode the screencast" #~ msgstr "സ്ക്രീന്‍കാസ്റ്റ് എന്‍കോഡ് ചെയ്യുന്നതിനുള്ള gstreamer പൈപ്പ്‌ലൈന്‍" #~ msgid "" #~ "Sets the GStreamer pipeline used to encode recordings. It follows the syntax used for gst-launch. The " #~ "pipeline should have an unconnected sink pad where the recorded video is recorded. It will normally have " #~ "a unconnected source pad; output from that pad will be written into the output file. However the pipeline " #~ "can also take care of its own output - this might be used to send the output to an icecast server via " #~ "shout2send or similar. When unset or set to an empty value, the default pipeline will be used. This is " #~ "currently 'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! " #~ "webmmux' and records to WEBM using the VP8 codec. %T is used as a placeholder for a guess at the optimal " #~ "thread count on the system." #~ msgstr "" #~ "റിക്കോര്‍ഡിങുകള്‍ എന്‍കോഡ് ചെയ്യുന്നതിനായി GStreamer പൈപ്പ് ലൈന്‍ ഉപയോഗിയ്ക്കുന്നു. gst-launch-നുള്ള സിന്റാക്സ് ഉപയോഗിയ്ക്കുന്നു. " #~ "കാലിയായി സജ്ജമാക്കുമ്പോള്‍ കാലിയാകുന്നു.ഇതു് നിലവില്‍ 'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 " #~ "deadline=1000000 threads=%T ! queue ! webmmux' ആകുന്നുസ WEBM VP8 കോഡ് ഉപയോഗിച്ചു് റിക്കോര്‍ഡ് ചെയ്യുന്നു." #~ msgid "File extension used for storing the screencast" #~ msgstr "സ്ക്രീന്‍കാസ്റ്റ് സൂക്ഷിയ്ക്കുന്നതിനുള്ള ഫയല്‍ എക്സ്റ്റെന്‍ഷന്‍" #~ msgid "" #~ "The filename for recorded screencasts will be a unique filename based on the current date, and use this " #~ "extension. It should be changed when recording to a different container format." #~ msgstr "" #~ "റിക്കോര്‍ഡ് ചെയ്ത സ്ക്രീന്‍കാസ്റ്റുകള്‍ക്കുള്ള ഫയല്‍നാമം നിലവിലുള്ള തീയതി, എക്സ്റ്റെന്‍ഷന്‍ എന്നിവ അനുസരിച്ചാകുന്നു. മറ്റൊരു ശൈലിയിലേക്കു് റിക്കോര്‍" #~ "ഡ് ചെയ്യുമ്പോള്‍ ഇതു് മാറ്റണം." #~ msgid "Arrangement of buttons on the titlebar" #~ msgstr "തലക്കെട്ടിനുള്ള ബാറില്‍ ബട്ടണുകളുടെ ക്രമീകരണം" #~ msgid "This key overrides the key in org.gnome.desktop.wm.preferences when running GNOME Shell." #~ msgstr "ഗ്നോം ഷെല്‍ പ്രവര്‍ത്തിയ്ക്കുമ്പോള്‍ org.gnome.desktop.wm.preferences-ലുള്ള കീ ഈ കീ തിരുത്തിയെഴുതുന്നു." #~ msgid "Select an extension to configure using the combobox above." #~ msgstr "മുകളിലുള്ള കോമ്പോ ബോക്സ് ഉപയോഗിച്ചു് ക്രമീകരിയ്ക്കുന്നതിനുള്ളൊരു എക്സ്റ്റെന്‍ഷന്‍ തെര‍ഞ്ഞെടുക്കുക." #~ msgid "Session…" #~ msgstr "പ്രവര്‍ത്തനവേള..." #~ msgid "Power" #~ msgstr "ഓഫ്" #~ msgid "Restart" #~ msgstr "പുനരാരംഭിക്കുക" #~ msgctxt "event list time" #~ msgid "%H\\u2236%M" #~ msgstr "%H\\u2236%M" #~ msgctxt "event list time" #~ msgid "%l\\u2236%M\\u2009%p" #~ msgstr "%l\\u2236%M\\u2009%p" #~ msgctxt "list sunday" #~ msgid "Su" #~ msgstr "ഞാ" #~ msgctxt "list monday" #~ msgid "M" #~ msgstr "തി" #~ msgctxt "list tuesday" #~ msgid "T" #~ msgstr "ചൊ" #~ msgctxt "list wednesday" #~ msgid "W" #~ msgstr "ബു" #~ msgctxt "list thursday" #~ msgid "Th" #~ msgstr "വ്യാ" #~ msgctxt "list friday" #~ msgid "F" #~ msgstr "വെ" #~ msgctxt "list saturday" #~ msgid "S" #~ msgstr "ശ" #~ msgid "Nothing Scheduled" #~ msgstr "ഒന്നും ക്രമീകരിച്ചിട്ടില്ല" #~ msgid "Today" #~ msgstr "ഇന്നു്" #~ msgid "Tomorrow" #~ msgstr "നാളെ" #~ msgid "This week" #~ msgstr "ഈ ആഴ്ച" #~ msgid "Next week" #~ msgstr "അടുത്ത ആഴ്ച" #~ msgid "Removable Devices" #~ msgstr "നീക്കം ചെയ്യാവുന്ന ഡിവൈസുകള്‍" #~ msgid "Eject" #~ msgstr "പുറന്തള്ളുക" #~ msgid "Screencast from %d %t" #~ msgstr "%d-ല്‍ നിന്നുള്ള സ്ക്രീന്‍കാസ്റ്റ്, %t-ല്‍" #~ msgid "Invitation" #~ msgstr "ക്ഷണം" #~ msgid "Call" #~ msgstr "വിളിക്കുക" #~ msgid "File Transfer" #~ msgstr "ഫയല്‍ നീക്കുക" #~ msgid "Chat" #~ msgstr "സല്ലാപം" #~ msgid "Unmute" #~ msgstr "ശബ്ദം നിര്‍ത്തുക" #~ msgid "Mute" #~ msgstr "നിശബ്ദമാക്കുക" #~ msgid "%A, %H:%M" #~ msgstr "%A, %H:%M" #~ msgid "%B %d, %H:%M" #~ msgstr "%B %d, %H:%M" #~ msgid "%B %d %Y, %H:%M " #~ msgstr "%B %d %Y, %H:%M " #~ msgid "Invitation to %s" #~ msgstr "%s ലേക്കുള്ള ക്ഷണം" #~ msgid "%s is inviting you to join %s" #~ msgstr "%s നിങ്ങളെ %sഇലേക്കു ചേരാന്‍ ക്ഷണിക്കുന്നുണ്ട്" #~ msgid "Decline" #~ msgstr "നിരസിക്കുക" #~ msgid "Accept" #~ msgstr "സ്വീകരിക്കുക" #~ msgid "Video call from %s" #~ msgstr "%s-ല്‍ നിന്നുള്ള വീഡിയോ കോള്‍" #~ msgid "Call from %s" #~ msgstr "%s-ല്‍ നിന്നുള്ള കോള്‍" #~ msgid "Answer" #~ msgstr "എടുക്കുക" #~ msgid "%s is sending you %s" #~ msgstr "%s നിങ്ങള്‍ക്കു് %s അയച്ചിരിയ്ക്കുന്നു" #~ msgid "%s would like permission to see when you are online" #~ msgstr "നിങ്ങള്‍ ഓണ്‍ലൈന്‍ ആകുമ്പോള്‍ കാണുന്നതിനുള്ള അനുമതി %s-നു് ആവശ്യമുണ്ടു്" #~ msgid "Authentication failed" #~ msgstr "തിരിച്ചറിയല്‍ പ്രക്രിയ പരാജയപ്പെട്ടു" #~ msgid "Encryption error" #~ msgstr "എന്‍ക്രിപ്ഷനില്‍ പിശകു്" #~ msgid "Certificate not provided" #~ msgstr "സാക്ഷ്യപത്രം നല്‍കിയില്ല" #~ msgid "Certificate untrusted" #~ msgstr "സാക്ഷ്യംപത്രം വിശ്വാസമില്ലാത്തു്" #~ msgid "Certificate expired" #~ msgstr "സാക്ഷ്യപത്രം കാലാവധി തീര്‍ന്നതു്" #~ msgid "Certificate not activated" #~ msgstr "സാക്ഷ്യപത്രം സജീകമാക്കാത്തതു്" #~ msgid "Certificate hostname mismatch" #~ msgstr "സാക്ഷ്യപത്രത്തിലെ ഹോസ്റ്റിന്റെ പേരു് പൊരുത്തമില്ല" #~ msgid "Certificate fingerprint mismatch" #~ msgstr "സാക്ഷ്യപത്രത്തിലെ ഒപ്പു് പൊരുത്തമില്ല" #~ msgid "Certificate self-signed" #~ msgstr "സാക്ഷ്യപത്രം സ്വയം ഒപ്പിട്ടതാണു്" #~ msgid "Status is set to offline" #~ msgstr "അവസ്ഥ ഓഫ്‌ലൈന്‍ ആയി സജ്ജമാക്കിയിരിയ്ക്കുന്നു" #~ msgid "Certificate is invalid" #~ msgstr "സാക്ഷ്യപത്രം തെറ്റാണു്" #~ msgid "Connection has been refused" #~ msgstr "കണക്ഷന്‍ നിഷേധിച്ചിരിയ്ക്കുന്നു" #~ msgid "Connection can't be established" #~ msgstr "കണക്ഷന്‍ സ്ഥാപിയ്ക്കുവാന്‍ സാധ്യമല്ല" #~ msgid "Connection has been lost" #~ msgstr "കണക്ഷന്‍ നഷ്ടമായിരിയ്ക്കുന്നു" #~ msgid "This account is already connected to the server" #~ msgstr "ഈ അക്കൌണ്ട് നിലവില്‍ സര്‍വറിലേക്കു് കണക്ട് ചെയ്തിരിയ്ക്കുന്നു" #~ msgid "Connection has been replaced by a new connection using the same resource" #~ msgstr "അതേ ശ്രോതസ്സ് ഉപയോഗിച്ചു് ഒരു പുതിയ കണക്ഷന്‍ ഉപയോഗിച്ചു് ഈ കണക്ഷന്‍ മാറ്റിസ്ഥാപിയ്ക്കുന്നു" #~ msgid "The account already exists on the server" #~ msgstr "അക്കൌണ്ട് സര്‍വറില്‍ നിലവിലുണ്ടു്" #~ msgid "Server is currently too busy to handle the connection" #~ msgstr "കണക്ഷന്‍ കൈകാര്യം ചെയ്യുന്നതിനായി സര്‍വറിനു് സാധ്യമല്ല, തിരക്കിലാണു്" #~ msgid "Certificate has been revoked" #~ msgstr "സമ്മതപത്രം വീണ്ടും ആവശ്യപ്പെട്ടിരിയ്ക്കുന്നു" #~ msgid "Certificate uses an insecure cipher algorithm or is cryptographically weak" #~ msgstr "സമ്മതപത്രം സുരക്ഷിതമല്ലാത്തൊരു സിഫര്‍ ആല്‍ഗോരിഥം ഉപയോഗിയ്ക്കുന്നു അല്ലെങ്കില്‍ ഉചിതമല്ല" #~ msgid "" #~ "The length of the server certificate, or the depth of the server certificate chain, exceed the limits " #~ "imposed by the cryptography library" #~ msgstr "സര്‍വറിന്റെ സമ്മതപത്രത്തിന്റെ വ്യാപ്തി, അല്ലെങ്കില്‍ സര്‍വര്‍ സമ്മതപത്ര ചെയിന്റെ വ്യാപ്തി, എന്നിവ പരിധിയില്‍ കൂടുന്നു" #~ msgid "Internal error" #~ msgstr "ആന്തരിക പിശക്" #~ msgid "Unable to connect to %s" #~ msgstr "%s -ലേക്ക് കണക്ട് ചെയ്യുവാന്‍ സാധ്യമല്ല" #~ msgid "View account" #~ msgstr "അക്കൌണ്ട് കാണുക" #~ msgid "Open Calendar" #~ msgstr "കലണ്ടര്‍ തുറക്കുക" #~ msgid "Date & Time Settings" #~ msgstr "തീയതി, സമയ ക്രമീകരണങ്ങള്‍" #~ msgid "Click Log Out to quit these applications and log out of the system." #~ msgstr "ഈ പ്രയോഗങ്ങളില്‍ നിന്നും പുറത്തു് കടക്കുന്നതിനായി പുറത്തു കടക്കുക ക്ലിക്ക് ചെയ്തു് സിസ്റ്റത്തില്‍ നിന്നും പുറത്തു് കടക്കുക." #~ msgid "Logging out of the system." #~ msgstr "സിസ്റ്റത്തില്‍ നിന്നു പുറത്തു കടക്കുന്നു." #~ msgid "Click Power Off to quit these applications and power off the system." #~ msgstr "ഈ പ്രയോഗങ്ങളില്‍ നിന്നും പുറത്തു് കടക്കുന്നതിനായി പവര്‍ ഓഫ് ചെയ്യുക ക്ലിക്ക് ചെയ്തു സിസ്റ്റിന്റെ പവര്‍ ഓഫ് ചെയ്യുക." #~ msgid "Powering off the system." #~ msgstr "സിസ്റ്റത്തിന്റെ പവര്‍ ഓഫ് ചെയ്യുന്നു." #~ msgid "Click Restart to quit these applications and restart the system." #~ msgstr "ഈ പ്രയോഗങ്ങള്‍ നിറുത്തി സിസ്റ്റം പുനരാരംഭിക്കുവാന്‍ പുനരാരംഭിക്കൂ അമര്‍ത്തുക" #~ msgid "Restarting the system." #~ msgstr "സിസ്റ്റം പുനരാരംഭിക്കുന്നു." #~ msgid "Remove" #~ msgstr "നീക്കം ചെയ്യുക" #~ msgid "Clear Messages" #~ msgstr "സന്ദേശങ്ങള്‍ വെടിപ്പാക്കുക" #~ msgid "Notification Settings" #~ msgstr "അറിയിപ്പു് ക്രമീകരണങ്ങള്‍" #~ msgid "No Messages" #~ msgstr "സന്ദേശങ്ങളില്ല" #~ msgid "Message Tray" #~ msgstr "സന്ദേശത്തിന്റെ ട്രേ" #~ msgid "Universal Access Settings" #~ msgstr "സാര്‍വ്വജനികലഭ്യതാ സജ്ജീകരണങ്ങള്‍" #~ msgid "Visibility" #~ msgstr "കാഴ്ച" #~ msgid "Set Up a New Device…" #~ msgstr "പുതിയൊരു ഡിവൈസ് സജ്ജമാക്കുക..." #~ msgid "Send Files…" #~ msgstr "ഫയലുകള്‍ അയയ്ക്കുക..." #~ msgid "Keyboard Settings" #~ msgstr "കീബോര്‍ഡ് ക്രമീകരണങ്ങള്‍" #~ msgid "Authorization request from %s" #~ msgstr "%s-ല്‍ നിന്നുള്ള ആധികാരികത ഉറപ്പാക്കല്‍ ആവശ്യം" #~ msgid "Device %s wants access to the service '%s'" #~ msgstr "%s ഉപകരണത്തിനു് '%s' സേവനത്തിനുള്ള അനുവാദം ആവശ്യമുണ്ടു്." #~ msgid "Grant this time only" #~ msgstr "ഇത്തവണ മാത്രം " #~ msgid "Reject" #~ msgstr "നിരസിക്കു" #~ msgid "Pairing confirmation for %s" #~ msgstr "%s-നുള്ള ജോടി ഉറപ്പിക്കല്‍" #~ msgid "Device %s wants to pair with this computer" #~ msgstr "%s ഉപകരണത്തിനു് ഈ കമ്പ്യൂട്ടറുമായി ജോടി ചേരണം" #~ msgid "Please confirm whether the PIN '%06d' matches the one on the device." #~ msgstr "PIN '%06d' ഉപകരണത്തിലുള്ളതുമായി ചേരുന്നു എന്നു് ദയവായി ഉറപ്പാക്കുക." #~ msgid "Matches" #~ msgstr "ചേ‌ര്‍ച്ചകള്‍" #~ msgid "Does not match" #~ msgstr "ചേരുന്നില്ല" #~ msgid "Pairing request for %s" #~ msgstr "%s-നുള്ള ജോടി ആവശ്യപ്പെടുന്നു" #~ msgid "Please enter the PIN mentioned on the device." #~ msgstr "ഉപകരണത്തില്‍ പറഞ്ഞിരിക്കുന്ന പിന്‍ ദയവായി നല്‍കുക." #~ msgid "OK" #~ msgstr "ശരി" #~ msgid "Volume, network, battery" #~ msgstr "വോള്യം, നെറ്റ്‌വര്‍ക്ക്, ബാട്ടറി" #~ msgid "disabled" #~ msgstr "പ്രവര്‍ത്തനരഹിതമാക്കി" #~ msgid "cable unplugged" #~ msgstr "കേബിള്‍ ഊരി" #~ msgid "unavailable" #~ msgstr "ലഭ്യമല്ല" #~ msgid "More…" #~ msgstr "കൂടുതല്‍..." #~ msgid "Connected (private)" #~ msgstr "കണക്ട് ചെയ്തിരിയ്ക്കുന്നു (സ്വകാര്യം)" #~ msgid "Wired" #~ msgstr "വയര്‍ഡ്" #~ msgid "Auto Ethernet" #~ msgstr "ഓട്ടോ ഇഥര്‍നെറ്റ്" #~ msgid "Auto broadband" #~ msgstr "ഓട്ടോ ബ്രോഡ്ബാന്‍ഡ്" #~ msgid "Auto dial-up" #~ msgstr "ഓട്ടോ ഡയല്‍-അപ്പ്" #~ msgid "Auto %s" #~ msgstr "ഓട്ടോ %s" #~ msgid "Auto bluetooth" #~ msgstr "ഓട്ടോ ബ്ലൂടൂത്" #~ msgid "Auto wireless" #~ msgstr "ഓട്ടോ വയര്‍ലെസ്സ് " #~ msgid "Wi-Fi" #~ msgstr "വയര്‍ലസ്സ്" #~ msgid "Battery" #~ msgstr "ബാറ്ററി" #~ msgid "%d hour remaining" #~ msgid_plural "%d hours remaining" #~ msgstr[0] "%d മണിക്കൂര്‍ ബാക്കി" #~ msgstr[1] "%d മണിക്കൂറുകള്‍ ബാക്കി" #~ msgid "%d %s %d %s remaining" #~ msgstr "%d %s %d %s ബാക്കിയുണ്ട്" #~ msgid "hour" #~ msgid_plural "hours" #~ msgstr[0] "മണിക്കൂര്‍" #~ msgstr[1] "മണിക്കൂറുകള്‍" #~ msgid "minute" #~ msgid_plural "minutes" #~ msgstr[0] "മിനുട്ട്" #~ msgstr[1] "മിനുട്ടുകള്‍" #~ msgid "%d minute remaining" #~ msgid_plural "%d minutes remaining" #~ msgstr[0] "%d മിനുട്ട് ബാക്കി" #~ msgstr[1] "%d മിനുട്ടുകള്‍ ബാക്കി" #~ msgid "AC Adapter" #~ msgstr "എസി അഡാപ്റ്റര്‍" #~ msgid "Laptop Battery" #~ msgstr "ലാപ്പ്‌ടോപ്പ് ബാറ്ററി" #~ msgid "UPS" #~ msgstr "യുപിഎസ്" #~ msgid "Monitor" #~ msgstr "മോണിറ്റര്‍" #~ msgid "Mouse" #~ msgstr "മൗസ്" #~ msgid "PDA" #~ msgstr "പിഡിഎ" #~ msgid "Cell Phone" #~ msgstr "സെല്‍ ഫോണ്‍" #~ msgid "Media Player" #~ msgstr "മീഡിയ പ്ലേയര്‍" #~ msgid "Tablet" #~ msgstr "ടാബ്‌ലെറ്റ്" #~ msgid "Computer" #~ msgstr "കമ്പ്യൂട്ടര്‍" #~ msgctxt "device" #~ msgid "Unknown" #~ msgstr "അജ്ഞാതം" #~ msgid "Available" #~ msgstr "ലഭ്യമാണ്" #~ msgid "Busy" #~ msgstr "തിരക്കിലാണ്" #~ msgid "Invisible" #~ msgstr "അദൃശ്യം" #~ msgid "Away" #~ msgstr "വിദൂരെയാണ്" #~ msgid "Idle" #~ msgstr "പ്രവര്‍ത്തനത്തിലല്ല" #~ msgid "Your chat status will be set to busy" #~ msgstr "നിങ്ങളുടെ ചാറ്റ് അവസ്ഥ - തിരക്കില്‍" #~ msgid "" #~ "Notifications are now disabled, including chat messages. Your online status has been adjusted to let " #~ "others know that you might not see their messages." #~ msgstr "" #~ "ചാറ്റ് സന്ദേശങ്ങള്‍ എന്ന പോലെ അറിയിപ്പുകള്‍ പ്രവര്‍ത്തന രഹിതമാക്കുന്നു. മറ്റുള്ളവരുടെ ചാറ്റ് സന്ദേശങ്ങള്‍ നിങ്ങള്‍ക്കു് കാണുവാന്‍ സാധ്യമല്ല എന്നു് " #~ "നിങ്ങളുടെ ഓണ്‍ലൈന്‍ അവസ്ഥയില്‍ വ്യക്തമാക്കുന്നു." #~ msgid "Shutting down might cause them to lose unsaved work." #~ msgstr "അടച്ചുപൂട്ടുന്നത് അവരുടെ സൂക്ഷിക്കാത്ത ജോലികള്‍ നഷ്ട്ടപ്പെടുത്താം." #~ msgid "" #~ "Sorry, no wisdom for you today:\n" #~ "%s" #~ msgstr "" #~ "ക്ഷമിയ്ക്കണം, ഇന്നത്തേക്കു് ഒന്നും ലഭ്യമല്ല:\n" #~ "%s" #~ msgid "%s the Oracle says" #~ msgstr "%s എന്ന ഒറക്കിള്‍ പറയുന്നു" #~ msgctxt "title" #~ msgid "Sign In" #~ msgstr "അകത്തുകയറുക" #~ msgid "tray" #~ msgstr "ട്രേ" #~ msgid "More..." #~ msgstr "കൂടുതല്‍..." #~ msgctxt "event list time" #~ msgid "%H:%M" #~ msgstr "%H:%M" #~ msgid "APPLICATIONS" #~ msgstr "പ്രയോഗങ്ങള്‍" #~ msgid "SETTINGS" #~ msgstr "ക്രമീകരണങ്ങള്‍" #~ msgid "Subscription request" #~ msgstr "വരിക്കാരനാകാനുള്ള അപേക്ഷ" #~ msgid "Sent at %X on %A" #~ msgstr "%X-നു് %A-ല്‍ അയച്ചിരിയ്ക്കുന്നു" #~ msgid "Sent on %A, %B %d, %Y" #~ msgstr "%A, %B %d, %Y-നു് അയച്ചിരിയ്ക്കുന്നു" #~ msgid "Connection to %s failed" #~ msgstr "%s-ലേക്കുള്ള കണക്ഷന്‍ പരാജയപ്പെട്ടു" #~ msgid "Reconnect" #~ msgstr "വീണ്ടും കണക്ട് ചെയ്യുക" #~ msgid "Browse Files..." #~ msgstr "ഫയലുകള്‍ നോക്കുക..." #~ msgid "Error browsing device" #~ msgstr "ബ്രൌസ് ചെയ്യുന്ന ഡിവൈസില്‍ പിശക്" #~ msgid "The requested device cannot be browsed, error is '%s'" #~ msgstr "ആവശ്യപ്പെട്ട ഡിവൈസ് തെരയുവാന്‍ സാധ്യമല്ല, പിശക് '%s'" #~ msgid "Wireless" #~ msgstr "വയര്‍ലെസ്സ്" #~ msgid "VPN Connections" #~ msgstr "VPN കണക്ഷനുകള്‍" #~ msgid "System Settings" #~ msgstr "സിസ്റ്റം ക്രമീകരണങ്ങള്‍" #~ msgid "Your favorite Easter Egg" #~ msgstr "നിങ്ങള്‍ക്കു് ഇഷ്ടമുള്ള ഈസ്റ്റര്‍ മുട്ട" #~ msgid "United Kingdom" #~ msgstr "യുണൈറ്റഡ് കിങ്ഡം" #~ msgid "Default" #~ msgstr "സഹജം" #, fuzzy #~ msgid "disabled OpenSearch providers" #~ msgstr "OpenSearch വെബ്സൈറ്റ് ചേര്‍ക്കുക" #~ msgid "Show time with seconds" #~ msgstr "സമയം സെക്കന്റ് ഉള്‍പ്പെടെ കാണിക്കുക" #, fuzzy #~ msgid "If true, display seconds in time." #~ msgstr "ശരി (ട്രൂ) എങ്കില്‍, സെക്കന്‍ഡുകളും സമയത്തില് കാണിക്കുക." #~ msgid "Show date in clock" #~ msgstr "ഘടികാരത്തില്‍ തിയതി കാണിക്കുക" #, fuzzy #~ msgid "If true, display date in the clock, in addition to time." #~ msgstr "ശരി (ട്രൂ) എങ്കില്‍,ഘടികാരത്തില്‍ സമയത്തിനു പുറമെ തീയതിയും കാണിക്കുക" #, fuzzy #~ msgid "CONTACTS" #~ msgstr "വിലാസങ്ങള്‍" #~ msgid "%a %b %e, %R:%S" #~ msgstr "%a %b %e, %R:%S" #~ msgid "%a %b %e, %R" #~ msgstr "%a %b %e, %R" #~ msgid "%a %R:%S" #~ msgstr "%a %R:%S" #~ msgid "%a %R" #~ msgstr "%a %R" #~ msgid "%a %b %e, %l:%M:%S %p" #~ msgstr "%a %b %e, %l:%M:%S %p" #~ msgid "%a %l:%M:%S %p" #~ msgstr "%a %l:%M:%S %p" #, fuzzy #~ msgid "Failed to unmount '%s'" #~ msgstr "%V അണ്‍മൌണ്ടു് ചെയ്യാന്‍ കഴിഞ്ഞില്ല." #~ msgid "Retry" #~ msgstr "വിണ്ടും ശ്രമിക്കുക" #, fuzzy #~ msgid "Connect to..." #~ msgstr "സര്‍വറിലേക്കു് കണക്ടു് ചെയ്യുക" #, fuzzy #~ msgid "PLACES & DEVICES" #~ msgstr "ഹാര്‍ഡ്‍വയര്‍ ഡിവൈസുകള്‍" #~ msgid "Wrong password, please try again" #~ msgstr "തെറ്റായ രഹസ്യവാക്ക്, വീണ്ടും ശ്രമിക്കുക" #, fuzzy #~ msgid "%s is online." #~ msgstr "ബട്ടണ്‍ ഓണ്‍ലൈന്‍ ആണു്" #, fuzzy #~ msgid "%s is offline." #~ msgstr "റിപ്പോസിറ്ററി ഓഫ് ലൈന്‍ ആണ്" #~ msgid "%s is away." #~ msgstr "%s ദൂരെയാണ്." #~ msgid "%s is busy." #~ msgstr "%s തിരക്കിലാണ്." #~ msgid "Hidden" #~ msgstr "മറഞ്ഞ" #~ msgid "Power Off..." #~ msgstr "നിര്‍ത്തുക..." #, fuzzy #~ msgid "Online Accounts" #~ msgstr "അക്കൌണ്ടുകളുടെ പട്ടിക" #~ msgid "Log Out..." #~ msgstr "പുറത്ത് കടക്കുക..." #~ msgid "Home" #~ msgstr "വീട്" #~ msgid "%1$s: %2$s" #~ msgstr "%1$s: %2$s" #~ msgid "Custom format of the clock" #~ msgstr "ഘടികാരത്തിന്റെ പ്രത്യേക ശൈലി" #~ msgid "Hour format" #~ msgstr "മണിക്കുര്‍ ശൈലി" #~ msgid "Clock Preferences" #~ msgstr "ഘടികാര മുന്‍ഗണനകള്‍" #~ msgid "Preferences" #~ msgstr "മുന്‍ഗണനകള്‍" #~ msgid "Search your computer" #~ msgstr "നിങ്ങളുടെ കമ്പ്യൂട്ടര്‍ തിരയുക" #~ msgid "Home Folder" #~ msgstr "ആസ്ഥാന ഫോള്‍ഡര്‍" 0707010000024F000081A40000000000000000000000016712993F0001601C000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/mr.po# translation of mr.po to Marathi # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Sandeep Shedmake , 2011, 2012, 2013, 2014. msgid "" msgstr "" "Project-Id-Version: mr\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "shell&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2014-09-15 07:36+0000\n" "PO-Revision-Date: 2014-09-16 10:06+0530\n" "Last-Translator: Sandeep Shedmake \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: Lokalize 1.5\n" #: ../data/50-gnome-shell-system.xml.in.h:1 msgid "System" msgstr "प्रणाली" #: ../data/50-gnome-shell-system.xml.in.h:2 msgid "Show the message tray" msgstr "संदेश ट्रे दाखवा" #: ../data/50-gnome-shell-system.xml.in.h:3 msgid "Focus the active notification" msgstr "सक्रीय सूचनावर फोकस करा" #: ../data/50-gnome-shell-system.xml.in.h:4 msgid "Show the overview" msgstr "पूर्वावलोकन दाखवा" #: ../data/50-gnome-shell-system.xml.in.h:5 msgid "Show all applications" msgstr "सर्व ॲप्लिकेशन्स दाखवा" #: ../data/50-gnome-shell-system.xml.in.h:6 msgid "Open the application menu" msgstr "ॲप्लिकेशन मेन्यु उघडा" #: ../data/gnome-shell.desktop.in.in.h:1 msgid "GNOME Shell" msgstr "GNOME शेल" #: ../data/gnome-shell.desktop.in.in.h:2 #: ../data/gnome-shell-wayland.desktop.in.in.h:2 msgid "Window management and application launching" msgstr "पटल व्यवस्थापन व ॲप्लिकेशन सुरू करणे" #: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1 msgid "GNOME Shell Extension Preferences" msgstr "GNOME शेल एक्सटेंशन पसंती" #: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2 msgid "Configure GNOME Shell Extensions" msgstr "GNOME शेल एक्सटेंशन्स् संरचीत करा" #: ../data/gnome-shell-wayland.desktop.in.in.h:1 msgid "GNOME Shell (wayland compositor)" msgstr "GNOME शेल (वेलँड कम्पोजिटर)" #: ../data/org.gnome.shell.gschema.xml.in.in.h:1 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "Alt-F2 पासून डेव्लपर्स् व चाचणीकर्त्यांसाठी आंतरिक साधणे सुरू करा" #: ../data/org.gnome.shell.gschema.xml.in.in.h:2 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "आंतरिक डिबगिंग व Alt-F2 संवादचा वापर करून निंयत्रणकरीता प्रवेश देतो." #: ../data/org.gnome.shell.gschema.xml.in.in.h:3 #| msgid "Uuids of extensions to enable" msgid "UUIDs of extensions to enable" msgstr "सुरू करण्याजोगी एक्सटेंशन्स्चे UUIDs" #: ../data/org.gnome.shell.gschema.xml.in.in.h:4 #| msgid "" #| "GNOME Shell extensions have a uuid property; this key lists extensions " #| "which should be loaded. Any extension that wants to be loaded needs to be " #| "in this list. You can also manipulate this list with the EnableExtension " #| "and DisableExtension DBus methods on org.gnome.Shell." msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "GNOME शेल एक्सटेंशन्सकडे UUID गुणधर्म असते; हि कि एक्सटेंशन्स दाखवते ज्यास " "लोड करणे आवश्यक " "आहे. लोड करण्याजोगी कोणत्याहि एक्सटेंशला सूचीमध्ये समाविष्टीत असणे आवश्यक " "आहे. org.gnome.Shell वरील " "EnableExtension व DisableExtension D-Bus मेथड्ससह या सूचीमध्ये बदल करणे शक्य " "आहे." #: ../data/org.gnome.shell.gschema.xml.in.in.h:5 msgid "Disables the validation of extension version compatibility" msgstr "एक्सटेंशन आवृत्ती सहत्वताची वैधता बंद करते" #: ../data/org.gnome.shell.gschema.xml.in.in.h:6 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "GNOME शेल फक्त एक्सटेंशन्स लोड करेल जे सध्याच्या आवृत्तीला समर्थन पुरवते. या " "पर्यायला सुरू केल्याने या तपासाला बंद करेल आणि सर्व एक्सटेंशन्स लोड करायचा " "प्रयत्न करेल समर्थनजोगी आवृत्ती असेल किंवा नसेल." #: ../data/org.gnome.shell.gschema.xml.in.in.h:7 msgid "List of desktop file IDs for favorite applications" msgstr "पसंतीच्या ॲप्लिकेशन्स् करीता डेस्कटॉप फाइल IDs ची सूची" #: ../data/org.gnome.shell.gschema.xml.in.in.h:8 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "या आइडेंटिफायर्स् सह परस्पर ॲप्लिकेशन्स् पसंतीचे कक्षात दाखवले जाईल." #: ../data/org.gnome.shell.gschema.xml.in.in.h:9 msgid "App Picker View" msgstr "ॲप पिकर अवलोकन" #: ../data/org.gnome.shell.gschema.xml.in.in.h:10 msgid "Index of the currently selected view in the application picker." msgstr "ॲप्लिकेशन पिकरमधील आत्ता पसंत केलेल्या अवलोकनचे इंडेक्स." #: ../data/org.gnome.shell.gschema.xml.in.in.h:11 msgid "History for command (Alt-F2) dialog" msgstr "आदेश (Alt-F2) संवादकरीता इतिहास" #: ../data/org.gnome.shell.gschema.xml.in.in.h:12 msgid "History for the looking glass dialog" msgstr "लूकिंग ग्लास संवादकरीता इतिहास" #: ../data/org.gnome.shell.gschema.xml.in.in.h:13 #| msgid "Always show the 'Log out' menuitem in the user menu." msgid "Always show the 'Log out' menu item in the user menu." msgstr "नेहमी वापरकर्ता मेन्युमध्ये 'बाहेर पडा' मेन्यु घटक दाखवा." #: ../data/org.gnome.shell.gschema.xml.in.in.h:14 #| msgid "" #| "This key overrides the automatic hiding of the 'Log out' menuitem in " #| "single-user, single-session situations." msgid "" "This key overrides the automatic hiding of the 'Log out' menu item in single-" "user, single-session situations." msgstr "" "हि कि एकमेव-वापरकर्ता, एक-सत्र घटनांमध्ये 'बाहेर पडा' मेन्युघटकाला स्व छुपे " "करणे ओव्हरराइड करतो." #: ../data/org.gnome.shell.gschema.xml.in.in.h:15 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "एनक्रिप्टेड किंवा रिमोट फाइलसिस्टम माउंट करण्यासाठी पासवर्ड लक्षात ठेवायचे " "किंवा नाही" #: ../data/org.gnome.shell.gschema.xml.in.in.h:16 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "'Remember Password' checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "एनक्रिप्टेड साधन किंवा रिमोट फाइलसिस्टम माउंट केल्यानंतर शेल पासवर्डकरीता " "विनंती करेल. " "पासवर्डला भविष्यातील वापरकरीता साठवायचे असल्यास 'पासवर्ड लक्षात ठेवा' " "चेकबॉक्सचा वापर " "करा. हि कि चेकबॉक्सचे पूर्वनिर्धारित स्तर ठरवते." #: ../data/org.gnome.shell.gschema.xml.in.in.h:17 msgid "Show the week date in the calendar" msgstr "दिनदर्शिकामध्ये सप्ताह दिनांक दाखवा" #: ../data/org.gnome.shell.gschema.xml.in.in.h:18 msgid "If true, display the ISO week date in the calendar." msgstr "खरे असल्यास, दिनदर्शिकमध्ये ISO सप्ताह दिनांक दाखवा." #: ../data/org.gnome.shell.gschema.xml.in.in.h:19 msgid "Keybinding to open the application menu" msgstr "ॲप्लिकेशन मेन्यु उघडण्यासाठी किबाइंडिंग" #: ../data/org.gnome.shell.gschema.xml.in.in.h:20 msgid "Keybinding to open the application menu." msgstr "ॲप्लिकेशन मेन्यु उघडण्यासाठी किबाइंडिंग." #: ../data/org.gnome.shell.gschema.xml.in.in.h:21 msgid "Keybinding to open the \"Show Applications\" view" msgstr "\"ॲप्लिकेशन्स दाखवा\" दृष्य उघडण्यासाठी किबाइंडिंग" #: ../data/org.gnome.shell.gschema.xml.in.in.h:22 msgid "" "Keybinding to open the \"Show Applications\" view of the Activities Overview." msgstr "क्रिया अवलोकनचे \"ॲप्लिकेशन्स दाखवा\" दृष्य उघडण्यासाठी किबाइंडिंग." #: ../data/org.gnome.shell.gschema.xml.in.in.h:23 #| msgid "Keybinding to open the \"Show Applications\" view" msgid "Keybinding to open the overview" msgstr "पूर्वावलोकन उघडण्यासाठी किबाइंडिंग" #: ../data/org.gnome.shell.gschema.xml.in.in.h:24 #| msgid "Keybinding to open the \"Show Applications\" view" msgid "Keybinding to open the Activities Overview." msgstr "कृती पूर्वावलोकन उघडण्यासाठी किबाइंडिंग" #: ../data/org.gnome.shell.gschema.xml.in.in.h:25 msgid "Keybinding to toggle the visibility of the message tray" msgstr "संदेश ट्रेचे अवलोकन बदलण्यासाठी वापरण्याजोगी किबाइंडिंग" #: ../data/org.gnome.shell.gschema.xml.in.in.h:26 msgid "Keybinding to toggle the visibility of the message tray." msgstr "संदेश ट्रेचे अवलोकन बदलण्यासाठी वापरण्याजोगी किबाइंडिंग." #: ../data/org.gnome.shell.gschema.xml.in.in.h:27 msgid "Keybinding to focus the active notification" msgstr "सक्रीय सूचनावर फोकस करण्यासाठी किबाइंडिंग" #: ../data/org.gnome.shell.gschema.xml.in.in.h:28 msgid "Keybinding to focus the active notification." msgstr "सक्रीय सूचनावर फोकस करण्यासाठी किबाइंडिंग." #: ../data/org.gnome.shell.gschema.xml.in.in.h:29 msgid "" "Keybinding that pauses and resumes all running tweens, for debugging purposes" msgstr "" "किबाइंडिंग जी थांबते आणि पुन्हा कार्यरत ट्विन्स सक्रीय करते, डिबगिंग कारणास्तव" #: ../data/org.gnome.shell.gschema.xml.in.in.h:30 msgid "Which keyboard to use" msgstr "कुठले किबोर्ड वापरायचे" #: ../data/org.gnome.shell.gschema.xml.in.in.h:31 msgid "The type of keyboard to use." msgstr "वापरण्याजोगी किबोर्डचे प्रकार." #: ../data/org.gnome.shell.gschema.xml.in.in.h:32 msgid "Limit switcher to current workspace." msgstr "आत्ताच्या कार्यक्षेत्रकरिता लिमिट स्विचर." #: ../data/org.gnome.shell.gschema.xml.in.in.h:33 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "खरे असल्यास, फक्त आत्ताच्या कार्यक्षेत्रवरील पटलांच्या ॲप्लिकेसन्सना स्वीचर " "मध्ये दाखवले जाते. नाहीतर, सर्व ॲप्लिकेशन्स समाविष्ट केले जातील." #: ../data/org.gnome.shell.gschema.xml.in.in.h:34 msgid "The application icon mode." msgstr "ॲप्लिकेशन चिन्ह मोड." #: ../data/org.gnome.shell.gschema.xml.in.in.h:35 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-" "only' (shows only the application icon) or 'both'." msgstr "" "स्विचरमध्ये पटल कसे दाखवले जातात ते संरचीत करते. वैध पर्याय 'फक्त थंबनेल' " "(पटलाचे थंबनेल " "दाखवते), 'फक्त-ॲप-चिन्ह' (फक्त ॲप्लिकेशन चिन्ह दाखवते) किंवा 'दोंही'." #: ../data/org.gnome.shell.gschema.xml.in.in.h:36 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "खरे असल्यास, फक्त आत्ताच्या कार्यक्षेत्रवरील पटलांना स्वीचरमध्ये दाखवले जाते. " "नाहीतर, सर्व पटल समाविष्ट केले जातात." #: ../data/org.gnome.shell.gschema.xml.in.in.h:37 msgid "Attach modal dialog to the parent window" msgstr "पॅरेंट पटलाला मोडल संवाद जोडा" #: ../data/org.gnome.shell.gschema.xml.in.in.h:38 msgid "" "This key overrides the key in org.gnome.mutter when running GNOME Shell." msgstr "GNOME शेल चालवतेवेळी हि कि org.gnome.mutter मधील कि खोडून पुनः लिहते." #: ../data/org.gnome.shell.gschema.xml.in.in.h:39 msgid "Enable edge tiling when dropping windows on screen edges" msgstr "स्क्रीन एड्जेसवर पटलांना वगळतेवेळी एड्ज टाइलिंग सुरू करा" #: ../data/org.gnome.shell.gschema.xml.in.in.h:40 msgid "Workspaces are managed dynamically" msgstr "वर्कस्पेसेस्ना गतियरित्या व्यवस्थापीत केले जाते" #: ../data/org.gnome.shell.gschema.xml.in.in.h:41 msgid "Workspaces only on primary monitor" msgstr "फक्त प्रारंभिक मॉनिटरवरील वर्कस्पेसेस" #: ../data/org.gnome.shell.gschema.xml.in.in.h:42 msgid "Delay focus changes in mouse mode until the pointer stops moving" msgstr "पाँटरची हालचाल बंद होईपर्यंत माउस मोडमधील फोकस बदलावमध्ये विलंब करा" #: ../data/org.gnome.Shell.PortalHelper.desktop.in.h:1 msgid "Captive Portal" msgstr "कॅप्टिव्ह पोर्टल" #: ../js/extensionPrefs/main.js:123 #, javascript-format msgid "There was an error loading the preferences dialog for %s:" msgstr "%s करीता पसंती संवाद लोड करतेवेळी त्रुटी आढळली:" #: ../js/extensionPrefs/main.js:155 #| msgid "Configure GNOME Shell Extensions" msgid "GNOME Shell Extensions" msgstr "GNOME शेल एक्सटेंशन्स" #: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143 #: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:452 #: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399 #: ../js/ui/status/network.js:915 msgid "Cancel" msgstr "रद्द करा" #: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:217 msgid "Next" msgstr "पुढील" #: ../js/gdm/authPrompt.js:213 ../js/ui/shellMountOperation.js:403 #: ../js/ui/unlockDialog.js:59 msgid "Unlock" msgstr "कुलूपबंद अशक्य करा" #: ../js/gdm/authPrompt.js:215 msgctxt "button" msgid "Sign In" msgstr "प्रवेश करा" #: ../js/gdm/loginDialog.js:269 #| msgid "Switch Session" msgid "Choose Session" msgstr "सत्र पसंत करा" #: ../js/gdm/loginDialog.js:429 msgid "Not listed?" msgstr "सूचीत नाही?" #: ../js/gdm/loginDialog.js:614 #, javascript-format msgid "(e.g., user or %s)" msgstr "(उ.दा., वापरकर्ता किंवा %s)" #: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:269 #: ../js/ui/components/networkAgent.js:287 msgid "Username: " msgstr "वापरकर्तानाव: " #: ../js/gdm/loginDialog.js:922 msgid "Login Window" msgstr "प्रवेश पटल" #: ../js/gdm/util.js:323 msgid "Authentication error" msgstr "ओळखपटवतेवेळी त्रुटी" #: ../js/gdm/util.js:453 msgid "(or swipe finger)" msgstr "(किंवा बोट फिरवा)" #: ../js/misc/util.js:115 msgid "Command not found" msgstr "आदेश आढळले नाही" #: ../js/misc/util.js:148 msgid "Could not parse command:" msgstr "आदेश वाचणे अशक्य:" #: ../js/misc/util.js:156 #, javascript-format #| msgid "Execution of '%s' failed:" msgid "Execution of “%s” failed:" msgstr "“%s” चालवणे अपयशी:" #: ../js/portalHelper/main.js:85 #| msgid "Authentication Required" msgid "Web Authentication Redirect" msgstr "वेबवरील ओळख पटवणे पुन्हा निर्देशीत केले" #: ../js/ui/appDisplay.js:772 msgid "Frequently used applications will appear here" msgstr "नेहमी वापरण्याजोगी ॲप्लिकेशन्स येथे आढळेल" #: ../js/ui/appDisplay.js:883 msgid "Frequent" msgstr "वारंवारता" #: ../js/ui/appDisplay.js:890 msgid "All" msgstr "सर्व" #: ../js/ui/appDisplay.js:1789 msgid "New Window" msgstr "नविन पटल" #: ../js/ui/appDisplay.js:1815 ../js/ui/dash.js:285 msgid "Remove from Favorites" msgstr "पंसतीतून काढून टाका" #: ../js/ui/appDisplay.js:1821 msgid "Add to Favorites" msgstr "पसंतीमध्ये समाविष्ट करा" #: ../js/ui/appDisplay.js:1830 #| msgid "Show Text" msgid "Show Details" msgstr "तपशील दाखवा" #: ../js/ui/appFavorites.js:124 #, javascript-format msgid "%s has been added to your favorites." msgstr "%s ला पसंतीमध्ये समाविष्ट केले आहे." #: ../js/ui/appFavorites.js:158 #, javascript-format msgid "%s has been removed from your favorites." msgstr "%s ला पसंतीतून काढून टाकले." #: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:813 #: ../js/ui/status/system.js:337 msgid "Settings" msgstr "सेटिंग्ज" #: ../js/ui/backgroundMenu.js:21 msgid "Change Background…" msgstr "पार्श्वभूमी बदला…" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. */ #: ../js/ui/calendar.js:67 msgctxt "event list time" msgid "All Day" msgstr "सर्व दिवस" #. Translators: Shown in calendar event list, if 24h format, #. \u2236 is a ratio character, similar to : */ #: ../js/ui/calendar.js:73 msgctxt "event list time" msgid "%H∶%M" msgstr "%H∶%M" #. Translators: Shown in calendar event list, if 12h format, #. \u2236 is a ratio character, similar to : and \u2009 is #. a thin space */ #: ../js/ui/calendar.js:82 msgctxt "event list time" msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. */ #: ../js/ui/calendar.js:113 msgctxt "grid sunday" msgid "S" msgstr "S" #. Translators: Calendar grid abbreviation for Monday */ #: ../js/ui/calendar.js:115 msgctxt "grid monday" msgid "M" msgstr "M" #. Translators: Calendar grid abbreviation for Tuesday */ #: ../js/ui/calendar.js:117 msgctxt "grid tuesday" msgid "T" msgstr "T" #. Translators: Calendar grid abbreviation for Wednesday */ #: ../js/ui/calendar.js:119 msgctxt "grid wednesday" msgid "W" msgstr "W" #. Translators: Calendar grid abbreviation for Thursday */ #: ../js/ui/calendar.js:121 msgctxt "grid thursday" msgid "T" msgstr "T" #. Translators: Calendar grid abbreviation for Friday */ #: ../js/ui/calendar.js:123 msgctxt "grid friday" msgid "F" msgstr "F" #. Translators: Calendar grid abbreviation for Saturday */ #: ../js/ui/calendar.js:125 msgctxt "grid saturday" msgid "S" msgstr "S" #. Translators: Event list abbreviation for Sunday. #. * #. * NOTE: These list abbreviations are normally not shown together #. * so they need to be unique (e.g. Tuesday and Thursday cannot #. * both be 'T'). #. */ #: ../js/ui/calendar.js:138 msgctxt "list sunday" msgid "Su" msgstr "Su" #. Translators: Event list abbreviation for Monday */ #: ../js/ui/calendar.js:140 msgctxt "list monday" msgid "M" msgstr "M" #. Translators: Event list abbreviation for Tuesday */ #: ../js/ui/calendar.js:142 msgctxt "list tuesday" msgid "T" msgstr "T" #. Translators: Event list abbreviation for Wednesday */ #: ../js/ui/calendar.js:144 msgctxt "list wednesday" msgid "W" msgstr "W" #. Translators: Event list abbreviation for Thursday */ #: ../js/ui/calendar.js:146 msgctxt "list thursday" msgid "Th" msgstr "Th" #. Translators: Event list abbreviation for Friday */ #: ../js/ui/calendar.js:148 msgctxt "list friday" msgid "F" msgstr "F" #. Translators: Event list abbreviation for Saturday */ #: ../js/ui/calendar.js:150 msgctxt "list saturday" msgid "S" msgstr "S" #: ../js/ui/calendar.js:453 msgid "Previous month" msgstr "मागील महिना" #: ../js/ui/calendar.js:463 msgid "Next month" msgstr "पुढील महिना" #. Translators: Text to show if there are no events */ #: ../js/ui/calendar.js:781 msgid "Nothing Scheduled" msgstr "काहीच वेळपत्रानुरूप नाही" #. Translators: Shown on calendar heading when selected day occurs on current year */ #: ../js/ui/calendar.js:799 msgctxt "calendar heading" msgid "%A, %B %d" msgstr "%A, %B %d" #. Translators: Shown on calendar heading when selected day occurs on different year */ #: ../js/ui/calendar.js:802 msgctxt "calendar heading" msgid "%A, %B %d, %Y" msgstr "%A, %B %d, %Y" #: ../js/ui/calendar.js:813 msgid "Today" msgstr "आज" #: ../js/ui/calendar.js:817 msgid "Tomorrow" msgstr "उद्या" #: ../js/ui/calendar.js:828 msgid "This week" msgstr "हा सप्ताह" #: ../js/ui/calendar.js:836 msgid "Next week" msgstr "पुढचा सप्ताह" #: ../js/ui/components/automountManager.js:91 msgid "External drive connected" msgstr "बाहेरिल ड्राइव्ह जोडा" #: ../js/ui/components/automountManager.js:102 msgid "External drive disconnected" msgstr "बाहेरील ड्राइव्ह खंडीत केले" #: ../js/ui/components/autorunManager.js:296 msgid "Removable Devices" msgstr "काढूनटाकण्याजोगी साधने" #: ../js/ui/components/autorunManager.js:596 #, javascript-format msgid "Open with %s" msgstr "%s सह उघडा" #: ../js/ui/components/autorunManager.js:622 msgid "Eject" msgstr "बाहेर काढा" #: ../js/ui/components/keyring.js:94 ../js/ui/components/polkitAgent.js:285 msgid "Password:" msgstr "पासवर्ड:" #: ../js/ui/components/keyring.js:120 msgid "Type again:" msgstr "पुनः टाइप करा:" #: ../js/ui/components/networkAgent.js:138 ../js/ui/status/network.js:277 #: ../js/ui/status/network.js:359 ../js/ui/status/network.js:918 msgid "Connect" msgstr "जोडणी करा" #: ../js/ui/components/networkAgent.js:231 #: ../js/ui/components/networkAgent.js:243 #: ../js/ui/components/networkAgent.js:271 #: ../js/ui/components/networkAgent.js:291 #: ../js/ui/components/networkAgent.js:301 msgid "Password: " msgstr "पासवर्ड: " #: ../js/ui/components/networkAgent.js:236 msgid "Key: " msgstr "कि: " #: ../js/ui/components/networkAgent.js:275 msgid "Identity: " msgstr "आइडेंटिटि: " #: ../js/ui/components/networkAgent.js:277 msgid "Private key password: " msgstr "प्राइव्हेट कि पासवर्ड: " #: ../js/ui/components/networkAgent.js:289 msgid "Service: " msgstr "सर्व्हिस: " #: ../js/ui/components/networkAgent.js:318 msgid "Authentication required by wireless network" msgstr "वायरलेस नेटवर्कतर्फे आवश्यक ओळखपटवणे" #: ../js/ui/components/networkAgent.js:319 #, javascript-format #| msgid "" #| "Passwords or encryption keys are required to access the wireless network " #| "'%s'." msgid "" "Passwords or encryption keys are required to access the wireless network " "“%s”." msgstr "" "वायरलेस नेटवर्क “%s” करिता प्रवेश प्राप्त करण्यासाठी पासवर्डज किंवा " "एनक्रिप्शन किज आवश्यक आहे." #: ../js/ui/components/networkAgent.js:323 msgid "Wired 802.1X authentication" msgstr "वायर्ड 802.1X ओळखपटवणे" #: ../js/ui/components/networkAgent.js:325 msgid "Network name: " msgstr "नेटवर्क नाव: " #: ../js/ui/components/networkAgent.js:330 msgid "DSL authentication" msgstr "DSL ओळख पटवणे" #: ../js/ui/components/networkAgent.js:337 msgid "PIN code required" msgstr "PIN कोड आवश्यक" #: ../js/ui/components/networkAgent.js:338 msgid "PIN code is needed for the mobile broadband device" msgstr "मोबाइल ब्रॉडबँड साधनकरीता PIN कोड आवश्यक आहे" #: ../js/ui/components/networkAgent.js:339 msgid "PIN: " msgstr "PIN: " #: ../js/ui/components/networkAgent.js:345 msgid "Mobile broadband network password" msgstr "मोबाईल ब्रॉडबँड नेटवर्क पासवर्ड" #: ../js/ui/components/networkAgent.js:346 #, javascript-format #| msgid "A password is required to connect to '%s'." msgid "A password is required to connect to “%s”." msgstr "“%s” सह जोडणीकरिता पासवर्ड आवश्यक आहे." #: ../js/ui/components/polkitAgent.js:54 msgid "Authentication Required" msgstr "ओळख पटवणे आवश्यक" #: ../js/ui/components/polkitAgent.js:96 msgid "Administrator" msgstr "प्रशासक" #: ../js/ui/components/polkitAgent.js:175 msgid "Authenticate" msgstr "ओळख पटवा" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. */ #: ../js/ui/components/polkitAgent.js:271 ../js/ui/shellMountOperation.js:383 msgid "Sorry, that didn't work. Please try again." msgstr "माफ करा, ते कार्य करू शकले नाही. कृपया पुनःप्रयत्न करा." #: ../js/ui/components/telepathyClient.js:240 msgid "Invitation" msgstr "आमंत्रण" #: ../js/ui/components/telepathyClient.js:300 msgid "Call" msgstr "कॉल" #: ../js/ui/components/telepathyClient.js:316 msgid "File Transfer" msgstr "फाइल स्थानांतरन" #: ../js/ui/components/telepathyClient.js:420 msgid "Chat" msgstr "गप्पा" #: ../js/ui/components/telepathyClient.js:483 msgid "Unmute" msgstr "बंद करणे अशक्य करा" #: ../js/ui/components/telepathyClient.js:483 msgid "Mute" msgstr "बंद करा" #. Translators: Time in 24h format */ #: ../js/ui/components/telepathyClient.js:953 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" */ #: ../js/ui/components/telepathyClient.js:960 #| msgid "Yesterday, %H:%M" msgid "Yesterday, %H∶%M" msgstr "काल, %H∶%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" */ #: ../js/ui/components/telepathyClient.js:967 #| msgid "%A, %B %d" msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" */ #: ../js/ui/components/telepathyClient.js:974 msgid "%B %d, %H∶%M" msgstr "%B %d, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" */ #: ../js/ui/components/telepathyClient.js:980 msgid "%B %d %Y, %H∶%M" msgstr "%B %d %Y, %H∶%M" #. Translators: Time in 24h format */ #: ../js/ui/components/telepathyClient.js:986 #| msgctxt "event list time" #| msgid "%l:%M %p" msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" */ #: ../js/ui/components/telepathyClient.js:993 msgid "Yesterday, %l∶%M %p" msgstr "काल, %l∶%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" */ #: ../js/ui/components/telepathyClient.js:1000 #| msgid "%a %l:%M %p" msgid "%A, %l∶%M %p" msgstr "%A, %l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" */ #: ../js/ui/components/telepathyClient.js:1007 #| msgid "%a %b %e, %l:%M %p" msgid "%B %d, %l∶%M %p" msgstr "%B %d, %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm"*/ #: ../js/ui/components/telepathyClient.js:1013 #| msgid "%a %b %e, %l:%M %p" msgid "%B %d %Y, %l∶%M %p" msgstr "%B %d %Y, %l∶%M %p" #. Translators: this is the other person changing their old IM name to their new #. IM name. */ #: ../js/ui/components/telepathyClient.js:1045 #, javascript-format msgid "%s is now known as %s" msgstr "%s ला %s म्हणून ओळखले जाते" #. translators: argument is a room name like #. * room@jabber.org for example. */ #: ../js/ui/components/telepathyClient.js:1149 #, javascript-format msgid "Invitation to %s" msgstr "%s करीता आमंत्रण" #. translators: first argument is the name of a contact and the second #. * one the name of a room. "Alice is inviting you to join room@jabber.org #. * for example. */ #: ../js/ui/components/telepathyClient.js:1157 #, javascript-format msgid "%s is inviting you to join %s" msgstr "%s तुम्हाला %s सह जोडणीकरीता आमंत्रण देत आहे" #: ../js/ui/components/telepathyClient.js:1159 #: ../js/ui/components/telepathyClient.js:1194 #: ../js/ui/components/telepathyClient.js:1228 #: ../js/ui/components/telepathyClient.js:1286 msgid "Decline" msgstr "नकारा" #: ../js/ui/components/telepathyClient.js:1165 #: ../js/ui/components/telepathyClient.js:1234 #: ../js/ui/components/telepathyClient.js:1291 msgid "Accept" msgstr "स्वीकारा" #. translators: argument is a contact name like Alice for example. */ #: ../js/ui/components/telepathyClient.js:1184 #, javascript-format msgid "Video call from %s" msgstr "%s पासून व्हिडीओ कॉल्स्" #. translators: argument is a contact name like Alice for example. */ #: ../js/ui/components/telepathyClient.js:1187 #, javascript-format msgid "Call from %s" msgstr "%s पासून कॉल" #. translators: this is a button label (verb), not a noun */ #: ../js/ui/components/telepathyClient.js:1201 msgid "Answer" msgstr "उत्तर" #. To translators: The first parameter is #. * the contact's alias and the second one is the #. * file name. The string will be something #. * like: "Alice is sending you test.ogg" #. */ #: ../js/ui/components/telepathyClient.js:1222 #, javascript-format msgid "%s is sending you %s" msgstr "%s तुम्हाला %s पाठवत आहे" #. To translators: The parameter is the contact's alias */ #: ../js/ui/components/telepathyClient.js:1251 #, javascript-format msgid "%s would like permission to see when you are online" msgstr "ऑनलाइन असल्यावर %s परवानगी दृष्यास्पद करायची" #: ../js/ui/components/telepathyClient.js:1337 msgid "Network error" msgstr "नेटवर्क त्रुटी" #: ../js/ui/components/telepathyClient.js:1339 msgid "Authentication failed" msgstr "ओळख पटवणे अपयशी" #: ../js/ui/components/telepathyClient.js:1341 msgid "Encryption error" msgstr "एंक्रिप्शन त्रुटी" #: ../js/ui/components/telepathyClient.js:1343 msgid "Certificate not provided" msgstr "प्रमाणपत्र पुरवले नाही" #: ../js/ui/components/telepathyClient.js:1345 msgid "Certificate untrusted" msgstr "प्रमाणपत्र अविश्वासर्ह आहे" #: ../js/ui/components/telepathyClient.js:1347 msgid "Certificate expired" msgstr "प्रमाणपत्राची वेळसमाप्ति" #: ../js/ui/components/telepathyClient.js:1349 msgid "Certificate not activated" msgstr "प्रमाणपत्र सुरू केले नाही" #: ../js/ui/components/telepathyClient.js:1351 msgid "Certificate hostname mismatch" msgstr "प्रमाणपत्र यजमाननाव जुळत नाही" #: ../js/ui/components/telepathyClient.js:1353 msgid "Certificate fingerprint mismatch" msgstr "प्रमाणपत्र फिंग्ररप्रिंट जुळत नाही" #: ../js/ui/components/telepathyClient.js:1355 msgid "Certificate self-signed" msgstr "प्रमाणपत्र स्वयं स्वाक्षरि" #: ../js/ui/components/telepathyClient.js:1357 msgid "Status is set to offline" msgstr "स्थिती ऑफलाइनकरीता ठरवली आहे" #: ../js/ui/components/telepathyClient.js:1359 msgid "Encryption is not available" msgstr "एंक्रिप्शन अनुपलब्ध" #: ../js/ui/components/telepathyClient.js:1361 msgid "Certificate is invalid" msgstr "प्रमाणपत्र अवैध आहे" #: ../js/ui/components/telepathyClient.js:1363 msgid "Connection has been refused" msgstr "जोडणी नकारली गेली" #: ../js/ui/components/telepathyClient.js:1365 msgid "Connection can't be established" msgstr "जोडणी स्थापीत करणे अशक्य" #: ../js/ui/components/telepathyClient.js:1367 msgid "Connection has been lost" msgstr "जोडणी खंडीत झाली" #: ../js/ui/components/telepathyClient.js:1369 msgid "This account is already connected to the server" msgstr "हे खाते आधिपासूनच सर्व्हरसह जुळले आहे" #: ../js/ui/components/telepathyClient.js:1371 msgid "" "Connection has been replaced by a new connection using the same resource" msgstr "समान स्रोतचा वापर करून जोडणीला नविन जोडणीसह बदलाबदल केले आहे" #: ../js/ui/components/telepathyClient.js:1373 msgid "The account already exists on the server" msgstr "खाते आधिपासूनच सर्व्हरवर अस्तित्वात आहे" #: ../js/ui/components/telepathyClient.js:1375 msgid "Server is currently too busy to handle the connection" msgstr "जोडणी हाताळण्यासाठी सर्व्हर सध्या खूप व्यस्थ आहे" #: ../js/ui/components/telepathyClient.js:1377 msgid "Certificate has been revoked" msgstr "प्रमाणपत्र रद्द केले" #: ../js/ui/components/telepathyClient.js:1379 msgid "" "Certificate uses an insecure cipher algorithm or is cryptographically weak" msgstr "" "प्रमाणपत्र असुरक्षित सिफर अल्गोरिदमचा वापर करते किंवा क्रिप्टोग्राफिकरित्या " "खूप कमजोर आहे" #: ../js/ui/components/telepathyClient.js:1381 msgid "" "The length of the server certificate, or the depth of the server certificate " "chain, exceed the limits imposed by the cryptography library" msgstr "" "सर्व्हर प्रमाणपत्राची लांबी, किंवा सर्व्हर प्रमाणपत्र चैनचे गांभीर्य, " "क्रिप्टोग्राफि " "लाइब्ररितर्फे लादलेल्या मर्यादापेक्षा जास्त आहे" #: ../js/ui/components/telepathyClient.js:1383 msgid "Internal error" msgstr "आंतरिक त्रुटी" #. translators: argument is the account name, like #. * name@jabber.org for example. */ #: ../js/ui/components/telepathyClient.js:1393 #, javascript-format msgid "Unable to connect to %s" msgstr "%s सह जोडणी अशक्य" #: ../js/ui/components/telepathyClient.js:1398 msgid "View account" msgstr "खाते दृष्य" #: ../js/ui/components/telepathyClient.js:1435 msgid "Unknown reason" msgstr "अपरिचीत कारण" #: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:154 msgid "Windows" msgstr "पटल" #: ../js/ui/dash.js:249 ../js/ui/dash.js:287 msgid "Show Applications" msgstr "ॲप्लिकेशन्स् दाखवा" #: ../js/ui/dash.js:445 msgid "Dash" msgstr "डॅश" #: ../js/ui/dateMenu.js:96 msgid "Open Calendar" msgstr "दिनदर्शिका उघडा" #: ../js/ui/dateMenu.js:100 msgid "Open Clocks" msgstr "क्लॉक्स उघडा" #: ../js/ui/dateMenu.js:107 msgid "Date & Time Settings" msgstr "दिनांक व वेळ सेटिंग्ज" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM"). #. */ #: ../js/ui/dateMenu.js:204 msgid "%A %B %e, %Y" msgstr "%A %B %e, %Y" #: ../js/ui/endSessionDialog.js:64 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "%s पासून बाहेर पडा" #: ../js/ui/endSessionDialog.js:65 msgctxt "title" msgid "Log Out" msgstr "बाहेर पडा" #: ../js/ui/endSessionDialog.js:67 #, javascript-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "%s स्वयं, %d सेकंदात बाहेर पडेल." msgstr[1] "%s स्वयं, %d सेकंदात बाहेर पडेल." #: ../js/ui/endSessionDialog.js:72 #, javascript-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "%d सेकंदात तुम्ही स्वयं बाहेर पडाल." msgstr[1] "%d सेकंदात तुम्ही स्वयं बाहेर पडाल." #: ../js/ui/endSessionDialog.js:78 msgctxt "button" msgid "Log Out" msgstr "बाहेर पडा" #: ../js/ui/endSessionDialog.js:84 msgctxt "title" msgid "Power Off" msgstr "बंद करा" #: ../js/ui/endSessionDialog.js:85 #| msgid "Install Updates & Restart" msgctxt "title" msgid "Install Updates & Power Off" msgstr "अद्यावत इंस्टॉल करा आणि बंद करा" #: ../js/ui/endSessionDialog.js:87 #, javascript-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "प्रणाली स्वयं %d सेकंदात बंद होईल." msgstr[1] "प्रणाली स्वयं %d सेकंदात बंद होईल." #: ../js/ui/endSessionDialog.js:91 msgctxt "checkbox" msgid "Install pending software updates" msgstr "उर्वरित सॉफ्टवेअर अद्यावत इंस्टॉल करा" #: ../js/ui/endSessionDialog.js:94 ../js/ui/endSessionDialog.js:111 msgctxt "button" msgid "Restart" msgstr "पुनः सुरू करा" #: ../js/ui/endSessionDialog.js:96 msgctxt "button" msgid "Power Off" msgstr "बंद करा" #: ../js/ui/endSessionDialog.js:103 msgctxt "title" msgid "Restart" msgstr "पुनः सुरू करा" #: ../js/ui/endSessionDialog.js:105 #, javascript-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "प्रणाली स्वयं %d सेकंदात पुनः सुरू होईल." msgstr[1] "प्रणाली स्वयं %d सेकंदामध्ये पुनः सुरू होईल" #: ../js/ui/endSessionDialog.js:119 #| msgid "Install Updates & Restart" msgctxt "title" msgid "Restart & Install Updates" msgstr "पुन्हा सुरू करा आणि अद्यावत इंस्टॉल करा" #: ../js/ui/endSessionDialog.js:121 #, javascript-format #| msgid "The system will restart automatically in %d second." #| msgid_plural "The system will restart automatically in %d seconds." msgid "The system will automatically restart and install updates in %d second." msgid_plural "" "The system will automatically restart and install updates in %d seconds." msgstr[0] "" "प्रणाली स्व पुन्हा सुरू होईल आणि %d सेकंदमध्ये अद्यावत इंस्टॉल करेल." msgstr[1] "" "प्रणाली स्व पुन्हा सुरू होईल आणि %d सेकंदमध्ये अद्यावत इंस्टॉल करेल." #: ../js/ui/endSessionDialog.js:127 msgctxt "button" msgid "Restart & Install" msgstr "पुन्हा सुरू करा & इंस्टॉल करा" #: ../js/ui/endSessionDialog.js:128 msgctxt "button" msgid "Install & Power Off" msgstr "इंस्टॉल & बंद करा" #: ../js/ui/endSessionDialog.js:129 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "अद्यावत इंस्टॉल झाल्यानंतर बंद करा" #: ../js/ui/endSessionDialog.js:338 msgid "Running on battery power: please plug in before installing updates." msgstr "बॅटरी पावरवर सुरू आहे: अद्यावत इंस्टॉल करण्यापूर्वी कृपया प्लग इन करा." #: ../js/ui/endSessionDialog.js:355 msgid "Some applications are busy or have unsaved work." msgstr "काही ॲप्लिकेशन्स व्यस्थ असतात किंवा काही न साठवलेली कार्य असतात." #: ../js/ui/endSessionDialog.js:362 msgid "Other users are logged in." msgstr "इतर वापरकर्त्यांनी प्रवेश केला आहे." #. Translators: Remote here refers to a remote session, like a ssh login */ #: ../js/ui/endSessionDialog.js:640 #, javascript-format msgid "%s (remote)" msgstr "%s (रिमोट)" #. Translators: Console here refers to a tty like a VT console */ #: ../js/ui/endSessionDialog.js:643 #, javascript-format msgid "%s (console)" msgstr "%s (कंसोल)" #: ../js/ui/extensionDownloader.js:199 msgid "Install" msgstr "प्रतिष्ठापीत करा" #: ../js/ui/extensionDownloader.js:204 #, javascript-format #| msgid "Download and install '%s' from extensions.gnome.org?" msgid "Download and install “%s” from extensions.gnome.org?" msgstr "extensions.gnome.org पासून “%s” डाउनलोड आणि इंस्टॉल करायचे?" #: ../js/ui/keyboard.js:692 ../js/ui/status/keyboard.js:523 msgid "Keyboard" msgstr "कळफलक" #: ../js/ui/lookingGlass.js:643 msgid "No extensions installed" msgstr "एक्सटेंशन्स् प्रतिष्ठापीत केले नाही" #. Translators: argument is an extension UUID. */ #: ../js/ui/lookingGlass.js:697 #, javascript-format msgid "%s has not emitted any errors." msgstr "%s ने कोणत्याहि त्रुटी दाखवले नाही." #: ../js/ui/lookingGlass.js:703 msgid "Hide Errors" msgstr "त्रुटी लपवा" #: ../js/ui/lookingGlass.js:707 ../js/ui/lookingGlass.js:767 msgid "Show Errors" msgstr "त्रुटी दाखवा" #: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:71 #: ../js/ui/status/location.js:176 msgid "Enabled" msgstr "सुरू केले" #. Translators: this is for a network device that cannot be activated #. because it's disabled by rfkill (airplane mode) */ #. translators: #. * The device has been disabled #: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:179 #: ../js/ui/status/network.js:592 ../src/gvc/gvc-mixer-control.c:1830 msgid "Disabled" msgstr "बंद केले" #: ../js/ui/lookingGlass.js:721 msgid "Error" msgstr "त्रुटी" #: ../js/ui/lookingGlass.js:723 msgid "Out of date" msgstr "जुणे झाले" #: ../js/ui/lookingGlass.js:725 msgid "Downloading" msgstr "डाऊनलोड करत आहे" #: ../js/ui/lookingGlass.js:749 msgid "View Source" msgstr "स्त्रोत पहा" #: ../js/ui/lookingGlass.js:758 msgid "Web Page" msgstr "वेब पृष्ठ" #: ../js/ui/messageTray.js:1326 msgid "Open" msgstr "उघडा" #: ../js/ui/messageTray.js:1333 msgid "Remove" msgstr "काढून टाका" #: ../js/ui/messageTray.js:1630 msgid "Notifications" msgstr "सूचना" #: ../js/ui/messageTray.js:1637 msgid "Clear Messages" msgstr "संदेश नष्ट करा" #: ../js/ui/messageTray.js:1656 msgid "Notification Settings" msgstr "सूचना सेटिंग्ज" #: ../js/ui/messageTray.js:1709 msgid "Tray Menu" msgstr "ट्रे मेन्यु" #: ../js/ui/messageTray.js:1926 msgid "No Messages" msgstr "संदेश नाही" #: ../js/ui/messageTray.js:1968 msgid "Message Tray" msgstr "संदेश ट्रे" #: ../js/ui/messageTray.js:2971 msgid "System Information" msgstr "प्रणाली माहिती" #: ../js/ui/notificationDaemon.js:513 ../src/shell-app.c:425 msgctxt "program" msgid "Unknown" msgstr "अपरिचीत" #: ../js/ui/overviewControls.js:482 ../js/ui/screenShield.js:151 #, javascript-format msgid "%d new message" msgid_plural "%d new messages" msgstr[0] "%d नवीन संदेश" msgstr[1] "%d नवीन संदेश" #: ../js/ui/overview.js:84 msgid "Undo" msgstr "पूर्ववत् करा" #: ../js/ui/overview.js:124 msgid "Overview" msgstr "पूर्वावलोकन" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. */ #: ../js/ui/overview.js:246 msgid "Type to search…" msgstr "शोधण्याकरीता टाइप करा…" #: ../js/ui/panel.js:515 msgid "Quit" msgstr "बाहेर पडा" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". */ #: ../js/ui/panel.js:567 msgid "Activities" msgstr "क्रिया" #: ../js/ui/panel.js:918 msgid "Top Bar" msgstr "वरची पट्टी" #: ../js/ui/popupMenu.js:269 msgid "toggle-switch-us" msgstr "toggle-switch-us" #: ../js/ui/runDialog.js:70 msgid "Enter a Command" msgstr "आदेश द्या" #: ../js/ui/runDialog.js:110 ../js/ui/windowMenu.js:120 msgid "Close" msgstr "बंद करा" #: ../js/ui/runDialog.js:277 #| msgid "Estimating…" msgid "Restarting…" msgstr "पुन्हा सुरू करत आहे…" #. Translators: This is a time format for a date in #. long format */ #: ../js/ui/screenShield.js:88 msgid "%A, %B %d" msgstr "%A, %B %d" #: ../js/ui/screenShield.js:153 #, javascript-format msgid "%d new notification" msgid_plural "%d new notifications" msgstr[0] "%d नवीन सूचना" msgstr[1] "%d नवीन सूचना" #: ../js/ui/screenShield.js:472 ../js/ui/status/system.js:345 msgid "Lock" msgstr "कुलूपबंद" #: ../js/ui/screenShield.js:706 msgid "GNOME needs to lock the screen" msgstr "GNOME ने पडदा बंद करायला हवे" #: ../js/ui/screenShield.js:833 ../js/ui/screenShield.js:1304 msgid "Unable to lock" msgstr "बंद करणे अशक्य" #: ../js/ui/screenShield.js:834 ../js/ui/screenShield.js:1305 msgid "Lock was blocked by an application" msgstr "ॲप्लिकेशनतर्फे लॉक रोखले गेले" #: ../js/ui/search.js:594 msgid "Searching…" msgstr "शोधत आहे..." #: ../js/ui/search.js:596 msgid "No results." msgstr "परिणाम नाही." #: ../js/ui/shellEntry.js:25 msgid "Copy" msgstr "प्रत बनवा" #: ../js/ui/shellEntry.js:30 msgid "Paste" msgstr "चिकटवा" #: ../js/ui/shellEntry.js:97 msgid "Show Text" msgstr "मजकूर दाखवा" #: ../js/ui/shellEntry.js:99 msgid "Hide Text" msgstr "मजकूर लपवा" #: ../js/ui/shellMountOperation.js:370 msgid "Password" msgstr "पासवर्ड" #: ../js/ui/shellMountOperation.js:391 msgid "Remember Password" msgstr "पासवर्ड लक्षात ठेवा" #: ../js/ui/status/accessibility.js:42 msgid "Accessibility" msgstr "ॲक्सेसिबिलिटि" #: ../js/ui/status/accessibility.js:57 msgid "Zoom" msgstr "झूम" #: ../js/ui/status/accessibility.js:64 msgid "Screen Reader" msgstr "स्क्रीन रिडर" #: ../js/ui/status/accessibility.js:68 msgid "Screen Keyboard" msgstr "स्क्रीन किबोर्ड" #: ../js/ui/status/accessibility.js:72 msgid "Visual Alerts" msgstr "दृष्टीविषयक सतर्कता" #: ../js/ui/status/accessibility.js:75 msgid "Sticky Keys" msgstr "स्टीकी किज्" #: ../js/ui/status/accessibility.js:78 msgid "Slow Keys" msgstr "स्लो किज्" #: ../js/ui/status/accessibility.js:81 msgid "Bounce Keys" msgstr "बाऊंस् किज्" #: ../js/ui/status/accessibility.js:84 msgid "Mouse Keys" msgstr "माऊस किज्" #: ../js/ui/status/accessibility.js:144 msgid "High Contrast" msgstr "उच्च विरोधाभास" #: ../js/ui/status/accessibility.js:193 msgid "Large Text" msgstr "मोठे मजकूर" #: ../js/ui/status/bluetooth.js:49 msgid "Bluetooth" msgstr "ब्ल्यूटूथ" #: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:178 #: ../js/ui/status/network.js:360 ../js/ui/status/network.js:1281 #: ../js/ui/status/network.js:1392 ../js/ui/status/rfkill.js:86 #: ../js/ui/status/rfkill.js:114 msgid "Turn Off" msgstr "बंद करा" #: ../js/ui/status/bluetooth.js:54 msgid "Bluetooth Settings" msgstr "ब्ल्यूटूथ सेटिंग्ज" #: ../js/ui/status/bluetooth.js:104 #, javascript-format #| msgid "Connected (private)" msgid "%d Connected Device" msgid_plural "%d Connected Devices" msgstr[0] "%d जुळलेले साधन" msgstr[1] "%d जुळलेल्या साधने" #: ../js/ui/status/bluetooth.js:106 ../js/ui/status/network.js:1309 #| msgid "Connect" msgid "Not Connected" msgstr "जुळलेले नाही" #: ../js/ui/status/brightness.js:44 msgid "Brightness" msgstr "उजळपणा" #: ../js/ui/status/keyboard.js:547 msgid "Show Keyboard Layout" msgstr "किबोर्ड लेआऊट दाखवा" #: ../js/ui/status/location.js:65 #| msgid "Notifications" msgid "Location" msgstr "ठिकाण" #: ../js/ui/status/location.js:72 ../js/ui/status/location.js:177 #| msgid "Disabled" msgid "Disable" msgstr "बंद करा" #: ../js/ui/status/location.js:73 #| msgid "Power Settings" msgid "Privacy Settings" msgstr "गोपणीय सेटिंग्ज" #: ../js/ui/status/location.js:176 msgid "In Use" msgstr "वापरात आहे" #: ../js/ui/status/location.js:180 #| msgid "Enabled" msgid "Enable" msgstr "सुरू करा" #: ../js/ui/status/network.js:101 msgid "" msgstr "<अपरिचीत>" #: ../js/ui/status/network.js:457 ../js/ui/status/network.js:1307 #: ../js/ui/status/network.js:1511 #| msgid "Offline" msgid "Off" msgstr "बंद करा" #: ../js/ui/status/network.js:459 #| msgid "Connect" msgid "Connected" msgstr "जोडणी केली" #. Translators: this is for network devices that are physically present but are not #. under NetworkManager's control (and thus cannot be used in the menu) */ #: ../js/ui/status/network.js:463 #| msgid "unmanaged" msgid "Unmanaged" msgstr "अव्यवस्थापीत" #: ../js/ui/status/network.js:465 #| msgid "disconnecting..." msgid "Disconnecting" msgstr "खंडीत करत आहे" #: ../js/ui/status/network.js:471 ../js/ui/status/network.js:1301 #| msgid "Connection" msgid "Connecting" msgstr "जोडणी" #. Translators: this is for network connections that require some kind of key or password */ #: ../js/ui/status/network.js:474 #| msgid "authentication required" msgid "Authentication required" msgstr "ओळख पटवणे आवश्यक" #. Translators: this is for devices that require some kind of firmware or kernel #. module, which is missing */ #: ../js/ui/status/network.js:482 #| msgid "firmware missing" msgid "Firmware missing" msgstr "फर्मवेअर आढळले नाही" #. Translators: this is for a network device that cannot be activated (for example it #. is disabled by rfkill, or it has no coverage */ #: ../js/ui/status/network.js:486 msgid "Unavailable" msgstr "अनुपलब्ध" #: ../js/ui/status/network.js:488 ../js/ui/status/network.js:1695 msgid "Connection failed" msgstr "जोडणी अपयशी" #: ../js/ui/status/network.js:504 #| msgid "Settings" msgid "Wired Settings" msgstr "वायर्ड सेटिंग्ज" #: ../js/ui/status/network.js:546 ../js/ui/status/network.js:624 #| msgid "Mobile broadband" msgid "Mobile Broadband Settings" msgstr "मोबाईल ब्रॉडबँड सेटिंग्ज" #: ../js/ui/status/network.js:588 ../js/ui/status/network.js:1305 #| msgid "hardware disabled" msgid "Hardware Disabled" msgstr "हार्डवेअर बंद केले" #: ../js/ui/status/network.js:632 msgid "Use as Internet connection" msgstr "इंटरनेट जोडणी म्हणून वापर करा" #: ../js/ui/status/network.js:813 msgid "Airplane Mode is On" msgstr "एयरप्लेन मोड सुरू आहे" #: ../js/ui/status/network.js:814 msgid "Wi-Fi is disabled when airplane mode is on." msgstr "एयरप्लेन मोड सुरू असतेवेळी वाय-फाय बंद असते." #: ../js/ui/status/network.js:815 msgid "Turn Off Airplane Mode" msgstr "एयरप्लेन मोड बंद करा" #: ../js/ui/status/network.js:824 msgid "Wi-Fi is Off" msgstr "वाय-फाय बंद आहे" #: ../js/ui/status/network.js:825 msgid "Wi-Fi needs to be turned on in order to connect to a network." msgstr "नेटवर्कशी जोडणी करण्यासाठी वाय-फायला सुरू करणे आवश्यक आहे." #: ../js/ui/status/network.js:826 msgid "Turn On Wi-Fi" msgstr "वाय-फाय सुरू करा" #: ../js/ui/status/network.js:851 #| msgid "Network" msgid "Wi-Fi Networks" msgstr "वाय-फाय नेटवर्क्स" #: ../js/ui/status/network.js:853 #| msgid "Enable networking" msgid "Select a network" msgstr "नेटवर्क पसंत करा" #: ../js/ui/status/network.js:882 #| msgid "Network" msgid "No Networks" msgstr "नेटवर्क नाही" #: ../js/ui/status/network.js:903 ../js/ui/status/rfkill.js:112 msgid "Use hardware switch to turn off" msgstr "बंद करण्यासाठी या हार्डवेअर स्विचचा वापर करा" #: ../js/ui/status/network.js:1173 #| msgid "Network" msgid "Select Network" msgstr "नेटवर्क नीवडा" #: ../js/ui/status/network.js:1179 #| msgid "Settings" msgid "Wi-Fi Settings" msgstr "वाय-फाय सेटिंग्ज" #: ../js/ui/status/network.js:1281 msgid "Turn On" msgstr "सुरू करा" #: ../js/ui/status/network.js:1298 msgid "Hotspot Active" msgstr "हॉटस्पॉट सुरू करा" #: ../js/ui/status/network.js:1409 msgid "connecting..." msgstr "जोडणी करत आहे..." #. Translators: this is for network connections that require some kind of key or password */ #: ../js/ui/status/network.js:1412 msgid "authentication required" msgstr "ओळख पटवणे आवश्यक आहे" #: ../js/ui/status/network.js:1414 msgid "connection failed" msgstr "जोडणी अपयशी" #: ../js/ui/status/network.js:1480 ../js/ui/status/rfkill.js:89 msgid "Network Settings" msgstr "जाळं संयोजना" #: ../js/ui/status/network.js:1482 #| msgid "Settings" msgid "VPN Settings" msgstr "VPN सेटिंग्ज" #: ../js/ui/status/network.js:1501 msgid "VPN" msgstr "VPN" #: ../js/ui/status/network.js:1656 msgid "Network Manager" msgstr "नेटवर्क मॅनेजर" #: ../js/ui/status/network.js:1696 msgid "Activation of network connection failed" msgstr "नेटवर्क जोडणी सुरू करणे अपयशी" #: ../js/ui/status/power.js:49 msgid "Power Settings" msgstr "पावर सेटिंग्ज" #: ../js/ui/status/power.js:65 msgid "Fully Charged" msgstr "संपूर्णतया चार्ज झाले" #: ../js/ui/status/power.js:72 ../js/ui/status/power.js:78 msgid "Estimating…" msgstr "अंदाज घेत आहे…" #: ../js/ui/status/power.js:86 #, javascript-format msgid "%d∶%02d Remaining (%d%%)" msgstr "%d∶%02d उर्वरित (%d%%)" #: ../js/ui/status/power.js:91 #, javascript-format msgid "%d∶%02d Until Full (%d%%)" msgstr "%d∶%02d पूर्ण होईपर्यंत (%d%%)" #: ../js/ui/status/power.js:119 msgid "UPS" msgstr "UPS" #: ../js/ui/status/power.js:121 msgid "Battery" msgstr "बॅटरि" #: ../js/ui/status/rfkill.js:83 msgid "Airplane Mode" msgstr "एयरप्लेन मोड" #: ../js/ui/status/rfkill.js:85 #| msgid "Open" msgid "On" msgstr "सुरू करा" #: ../js/ui/status/system.js:317 msgid "Switch User" msgstr "उपयोक्ता बदला" #: ../js/ui/status/system.js:322 msgid "Log Out" msgstr "बाहेर पडा" #: ../js/ui/status/system.js:341 msgid "Orientation Lock" msgstr "निर्देशन कुलूपबंद" #: ../js/ui/status/system.js:349 msgid "Suspend" msgstr "निलंबित" #: ../js/ui/status/system.js:352 msgid "Power Off" msgstr "बंद करा" #: ../js/ui/status/volume.js:127 msgid "Volume changed" msgstr "ध्वनी बदलले" #: ../js/ui/status/volume.js:162 msgid "Volume" msgstr "आवाज" #: ../js/ui/status/volume.js:213 msgid "Microphone" msgstr "माइक्रोफोन" #: ../js/ui/unlockDialog.js:67 msgid "Log in as another user" msgstr "इतर वापरकर्ता म्हणून प्रवेश करा" #: ../js/ui/unlockDialog.js:84 msgid "Unlock Window" msgstr "पटल उघडा" #: ../js/ui/viewSelector.js:158 msgid "Applications" msgstr "ॲप्लिकेशन्स्" #: ../js/ui/viewSelector.js:162 msgid "Search" msgstr "शोधा" #: ../js/ui/windowAttentionHandler.js:19 #, javascript-format #| msgid "'%s' is ready" msgid "“%s” is ready" msgstr "“%s” सज्ज आहे" #: ../js/ui/windowManager.js:65 msgid "Do you want to keep these display settings?" msgstr "तुम्हाला या डिस्पले सेटिंग्ज जपवून ठेवायचे?" #. Translators: this and the following message should be limited in lenght, #. to avoid ellipsizing the labels. #. */ #: ../js/ui/windowManager.js:84 #| msgid "Power Settings" msgid "Revert Settings" msgstr "सेटिंग्जना मूळस्थितीत आणा" #: ../js/ui/windowManager.js:88 msgid "Keep Changes" msgstr "बदल जपवून ठेवा" #: ../js/ui/windowManager.js:107 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "सेटिंग्ज बदल %d सेकंदनंतर मूळस्थितीत येतील" msgstr[1] "सेटिंग्ज बदल %d सेकंदनंतर मूळस्थितीत येतील" #: ../js/ui/windowMenu.js:34 msgid "Minimize" msgstr "छोटे करा" #: ../js/ui/windowMenu.js:41 msgid "Unmaximize" msgstr "छोटे अशक्य करा" #: ../js/ui/windowMenu.js:45 msgid "Maximize" msgstr "मोठे करा" #: ../js/ui/windowMenu.js:52 msgid "Move" msgstr "हलवा" #: ../js/ui/windowMenu.js:58 msgid "Resize" msgstr "पुन्हा आकार द्या" #: ../js/ui/windowMenu.js:65 msgid "Move Titlebar Onscreen" msgstr "शीर्षकपट्टीला ऑनस्क्रीनरित्या हलवा" #: ../js/ui/windowMenu.js:70 msgid "Always on Top" msgstr "नेहमी शीर्षवरील" #: ../js/ui/windowMenu.js:89 msgid "Always on Visible Workspace" msgstr "नेहमी दृष्यास्पद कार्यक्षेत्रवर आढळते" #: ../js/ui/windowMenu.js:106 msgid "Move to Workspace Up" msgstr "वर्कस्पेस अपकडे जा" #: ../js/ui/windowMenu.js:111 msgid "Move to Workspace Down" msgstr "वर्कस्पेस डाउनकडे जा" #: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1 msgid "Evolution Calendar" msgstr "एव्हल्युशन दिनदर्शिका" #. translators: #. * The number of sound outputs on a particular device #: ../src/gvc/gvc-mixer-control.c:1837 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u आऊटपुट" msgstr[1] "%u आऊटपुट" #. translators: #. * The number of sound inputs on a particular device #: ../src/gvc/gvc-mixer-control.c:1847 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u इंपुट" msgstr[1] "%u इंपुट" #: ../src/gvc/gvc-mixer-control.c:2373 msgid "System Sounds" msgstr "प्रणाली आवाज" #: ../src/main.c:373 msgid "Print version" msgstr "छपाई आवृत्ती" #: ../src/main.c:379 msgid "Mode used by GDM for login screen" msgstr "प्रवेश पडद्याकरीता GDM तर्फे वापरण्याजोगी मोड" #: ../src/main.c:385 msgid "Use a specific mode, e.g. \"gdm\" for login screen" msgstr "निर्देशीत मोडचा वापर करा, उ.दा. प्रवेश स्क्रीनकरीता \"gdm\"" #: ../src/main.c:391 msgid "List possible modes" msgstr "संभाव्य मोड्स्ची सूची दाखवा" #: ../src/shell-app.c:666 #, c-format #| msgid "Failed to launch '%s'" msgid "Failed to launch “%s”" msgstr "“%s” सुरू करण्यास अपयशी" #: ../src/shell-keyring-prompt.c:714 msgid "Passwords do not match." msgstr "पासवर्डस् जुळत नाही." #: ../src/shell-keyring-prompt.c:722 msgid "Password cannot be blank" msgstr "पासवर्ड रिकामे असणे अशक्य" #: ../src/shell-polkit-authentication-agent.c:346 msgid "Authentication dialog was dismissed by the user" msgstr "ओळख पटवा संवाद वापरकर्त्याद्वारे वगळले" #~ msgid "Screenshots" #~ msgstr "स्क्रीनशॉटस्" #~ msgid "Record a screencast" #~ msgstr "स्क्रीनकास्ट रेकॉर्ड करा" #~ msgid "Whether to collect stats about applications usage" #~ msgstr "ॲप्लिकेशन वापरविषयी स्थिती गोळा करायची" #~ msgid "" #~ "The shell normally monitors active applications in order to present the " #~ "most used ones (e.g. in launchers). While this data will be kept private, " #~ "you may want to disable this for privacy reasons. Please note that doing " #~ "so won't remove already saved data." #~ msgstr "" #~ "The shell normally monitors active applications in order to present the " #~ "most used ones (e.g. in launchers). हा डाटा व्यक्तिगत असेपर्यंत, यांस गोपणीय " #~ "कारणास्तव you may want to disable this for privacy reasons. कृपया लक्षात ठेवा " #~ "असे केल्यास आधिपासूनच साठवलेला डाटा काढून टाकणे अशक्य होईल." #~ msgid "List of categories that should be displayed as folders" #~ msgstr "फोल्डर्स नुरूप दाखवण्याजोगी विभागांची सूची" #~ msgid "" #~ "Each category name in this list will be represented as folder in the " #~ "application view, rather than being displayed inline in the main view." #~ msgstr "" #~ "या सूचीतील प्रत्येक विभागाचे नाव ॲप्लिकेशन दृष्यमध्ये फोल्डर म्हणून प्रस्तुत केले जाईल, मुख्य " #~ "दृष्यमध्ये इनलाइन दाखवण्याऐवजी." #~ msgid "" #~ "Internally used to store the last IM presence explicitly set by the user. " #~ "The value here is from the TpConnectionPresenceType enumeration." #~ msgstr "" #~ "वापरकर्तातर्फे ठरवलेले शेवटचे IM हाजेरी साठवण्याकरीता आंतरिकपणे वापरले जाते. येथील मूल्य " #~ "TpConnectionPresenceType एन्युमरेशनपासूनचे आहे." #~ msgid "" #~ "Internally used to store the last session presence status for the user. " #~ "The value here is from the GsmPresenceStatus enumeration." #~ msgstr "" #~ "वापरकर्तातर्फे ठरवलेले शेवटचे सत्र हाजेरी साठवण्याकरीता आंतरिकपणे वापरले जाते. येथील मूल्य " #~ "GsmPresenceStatus एन्युमरेशनपासूनचे आहे." #~ msgid "Keybinding to toggle the screen recorder" #~ msgstr "स्क्रीन रेकॉर्डरमधील बदलसाठी किबाइंडिंग" #~ msgid "Keybinding to start/stop the builtin screen recorder." #~ msgstr "बिल्टइन स्क्रीन रेकॉर्डर सुरू किंवा थांबवण्यासाठी किबाइंडिंग." #~ msgid "Framerate used for recording screencasts." #~ msgstr "स्क्रिनकास्ट्स् रेकॉर्ड करण्यासाठी वापरलेले फ्रेमरेट." #~ msgid "" #~ "The framerate of the resulting screencast recordered by GNOME Shell's " #~ "screencast recorder in frames-per-second." #~ msgstr "" #~ "फ्रेम्स्-दर-सेकंदमध्ये GNOME शेलच्या सक्रीनकास्ट रेकॉर्डरद्वारे रेकॉर्ड केलेल्या परिणामक " #~ "सक्रीनकास्टचा फ्रेमरेट." #~ msgid "The gstreamer pipeline used to encode the screencast" #~ msgstr "स्क्रीनकास्ट एंकोड करण्यासाठी वापरलेले gstreamer पाइपलाइन" #~ msgid "" #~ "Sets the GStreamer pipeline used to encode recordings. It follows the " #~ "syntax used for gst-launch. The pipeline should have an unconnected sink " #~ "pad where the recorded video is recorded. It will normally have a " #~ "unconnected source pad; output from that pad will be written into the " #~ "output file. However the pipeline can also take care of its own output - " #~ "this might be used to send the output to an icecast server via shout2send " #~ "or similar. When unset or set to an empty value, the default pipeline " #~ "will be used. This is currently 'vp8enc min_quantizer=13 max_quantizer=13 " #~ "cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux' and records to " #~ "WEBM using the VP8 codec. %T is used as a placeholder for a guess at the " #~ "optimal thread count on the system." #~ msgstr "" #~ "रेकॉर्डिंग्स् एंकोड करण्यासाठी GStreamer पाइपलाइन ठरवतो. gst-launch सुरू करण्यासाठी " #~ "मांडणीचा वापर करतो. पाइपलाइनमध्ये जोडणी अशक्य सिंक पॅड असायला हवे जेथे रेकॉर्डेड " #~ "व्हिडीओ रेकॉर्ड केले जाते. सहसा जोडणी अशक्य स्रोत पॅड असते; पॅडपासूनचे आऊटपुट, आऊटपुट " #~ "फाइलमध्ये लिहले जाते. तरी पाइपलाइन स्वतःच्या आऊटपुटची काळजी घेतो - याचा वापर " #~ "shout2send किंवा समानतर्फे icecast सर्व्हरकरीता आऊटपुट पाठवण्याकरीता केला जातो. " #~ "रिकामे मूल्यकरीता सेट अशक्य किंवा शक्य केल्यावर, मूळ पाइपलाइनचा वापर केला जातो. हे " #~ "सध्या 'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 " #~ "deadline=1000000 threads=%T ! queue ! webmmux' आहे व VP8 कोडेकचा वापर करून " #~ "WEBM करीता रेकॉर्डिंग करतो. %T चा वापर प्रणालीवरील कमाल थ्रेड गणणा ओळखण्यासाठी " #~ "प्लेसहोल्डर म्हणून केला जातो." #~ msgid "File extension used for storing the screencast" #~ msgstr "स्क्रिनकास्ट साठवण्याकरीता वापरलेले फाइल एक्सटेंशन" #~ msgid "" #~ "The filename for recorded screencasts will be a unique filename based on " #~ "the current date, and use this extension. It should be changed when " #~ "recording to a different container format." #~ msgstr "" #~ "सध्याच्या दिनांकवर आधारित रेकॉर्डेड स्क्रिनकास्ट्स्करीता फाइलचेना एकमेव फाइलनाव असणार, " #~ "व या एक्सटेंशनचा वापर करा. वेगळ्या कंटेनर स्वरूपकरीता रेकॉर्डिंग करतेवेळी बदलणे आवश्यक आहे." #~ msgid "Arrangement of buttons on the titlebar" #~ msgstr "शीर्षकपट्टीवर बटनांची मांडणी" #~ msgid "" #~ "This key overrides the key in org.gnome.desktop.wm.preferences when " #~ "running GNOME Shell." #~ msgstr "" #~ "GNOME शेल चालवतेवेळी हि कि org.gnome.desktop.wm.preferences मधील कि खोडून पुनः " #~ "लिहते." #~ msgid "Extension" #~ msgstr "एक्सटेंशन" #~ msgid "Select an extension to configure using the combobox above." #~ msgstr "वरील कॉम्बोबॉक्सचा वापर करून संरचनाकरीता एक्सटेंशनचा वापर करा." #~| msgid "Session..." #~ msgid "Session…" #~ msgstr "सत्र…" #~ msgid "Power" #~ msgstr "पावर" #~ msgid "Restart" #~ msgstr "पुनः सुरू करा" #~ msgctxt "event list time" #~ msgid "%H\\u2236%M" #~ msgstr "%H\\u2236%M" #~ msgctxt "event list time" #~ msgid "%l\\u2236%M\\u2009%p" #~ msgstr "%l\\u2236%M\\u2009%p" #~ msgid "Screencast from %d %t" #~ msgstr "%d %t पासून स्क्रीनकास्ट" #~| msgid "Sent on %A, %B %d" #~ msgid "%A, %H:%M" #~ msgstr "%A, %H:%M" #~| msgid "Sent on %A, %B %d" #~ msgid "%B %d, %H:%M" #~ msgstr "%B %d, %H:%M" #~ msgid "%B %d %Y, %H:%M " #~ msgstr "%B %d %Y, %H:%M " #~ msgid "Click Log Out to quit these applications and log out of the system." #~ msgstr "ॲप्लिकेशन्स् मधून बाहेर पडण्यासाठी बाहेर पडा क्लिक करा व प्रणालीतून बाहेर पडा." #~ msgid "Logging out of the system." #~ msgstr "प्रणालीतून बाहेर पडत आहे." #~ msgid "Click Power Off to quit these applications and power off the system." #~ msgstr "ॲप्लिकेशन्स् बंद करण्यासाठी बंद करा क्लिक करा व प्रणाली बंद करा." #~ msgid "Powering off the system." #~ msgstr "प्रणाली बंद करत आहे." #~ msgid "Click Restart to quit these applications and restart the system." #~ msgstr "ॲप्लिकेशन्स् बंद करण्यासाठी पुनः सुरू करा क्लिक करा व प्रणाली पुनः सुरू करा." #~ msgid "Restarting the system." #~ msgstr "प्रणाली पुनःसुरू करत आहे." #~ msgid "Universal Access Settings" #~ msgstr "जागतीक प्रवेश संयोजना" #~ msgid "Visibility" #~ msgstr "दर्शनियता" #~| msgid "Send Files to Device..." #~ msgid "Send Files to Device…" #~ msgstr "साधनाकडे फाइल्स पाठवा…" #~| msgid "Set up a New Device..." #~ msgid "Set Up a New Device…" #~ msgstr "नवीन साधनची मांडणी करा…" #~| msgid "Send Files..." #~ msgid "Send Files…" #~ msgstr "फाइल्स पाठवा..." #~ msgid "Keyboard Settings" #~ msgstr "कळफलक सेटिंग्ज" #~ msgid "Mouse Settings" #~ msgstr "माऊस सेटिंग्ज" #~ msgid "Sound Settings" #~ msgstr "आवाज सेटिंग्ज" #~ msgid "Authorization request from %s" #~ msgstr "%s पासून ओळख पटवण्याची विनंती" #~ msgid "Device %s wants access to the service '%s'" #~ msgstr "साधन %s ला सर्व्हिस '%s' करीता प्रवेश पाहिजे" #~ msgid "Always grant access" #~ msgstr "नेहमी प्रवेश द्या" #~ msgid "Grant this time only" #~ msgstr "फक्त याचवेळी मान्य करा" #~ msgid "Reject" #~ msgstr "नकारा" #~ msgid "Pairing confirmation for %s" #~ msgstr "%s करीता जोड पुष्टी करा" #~ msgid "Device %s wants to pair with this computer" #~ msgstr "साधन %s ला या संगणकाशी जोडणी करायची" #~ msgid "Please confirm whether the PIN '%06d' matches the one on the device." #~ msgstr "कृपया PIN '%06d' साधनावरील पिनशी जुळते, याची खात्री करा." #~ msgid "Matches" #~ msgstr "जोड" #~ msgid "Does not match" #~ msgstr "जुळत नाही" #~ msgid "Pairing request for %s" #~ msgstr "%s करीता जोड विनंती" #~ msgid "Please enter the PIN mentioned on the device." #~ msgstr "कृपया साधनावर निर्देशीत PIN द्या." #~ msgid "OK" #~ msgstr "ठीक आहे" #~| msgid "Region and Language Settings" #~ msgid "Region & Language Settings" #~ msgstr "क्षेत्र व भाषांचे सेटिंग्ज" #~ msgid "Volume, network, battery" #~ msgstr "वॉल्यूम, नेटवर्क, बॅटरि" #~ msgid "disabled" #~ msgstr "बंद केले" #~ msgid "cable unplugged" #~ msgstr "केबल जोडले नाही" #~ msgid "unavailable" #~ msgstr "अनुपलब्ध" #~ msgid "More…" #~ msgstr "आणखी…" #~ msgid "Wired" #~ msgstr "वायर्ड्" #~ msgid "Auto Ethernet" #~ msgstr "स्वयं इथरनेट" #~ msgid "Auto broadband" #~ msgstr "स्वयं ब्रॉडबँड" #~ msgid "Auto dial-up" #~ msgstr "स्वयं डायल-अप" #~ msgid "Auto %s" #~ msgstr "स्वयं %s" #~ msgid "Auto bluetooth" #~ msgstr "स्वयं ब्ल्यूटूथ" #~ msgid "Auto wireless" #~ msgstr "स्वयं वायरलेस्" #~ msgid "Wi-Fi" #~ msgstr "वाय-फाय" #~ msgid "Networking is disabled" #~ msgstr "नेटवर्किंग बंद आहे" #~ msgid "%d hour remaining" #~ msgid_plural "%d hours remaining" #~ msgstr[0] "%d तास उर्वरित" #~ msgstr[1] "%d तास उर्वरित" #~ msgid "%d %s %d %s remaining" #~ msgstr "%d %s %d %s उर्वरित" #~ msgid "hour" #~ msgid_plural "hours" #~ msgstr[0] "तास" #~ msgstr[1] "तास" #~ msgid "minute" #~ msgid_plural "minutes" #~ msgstr[0] "मिनिट" #~ msgstr[1] "मिनिट" #~ msgid "%d minute remaining" #~ msgid_plural "%d minutes remaining" #~ msgstr[0] "%d मिनीट उर्वरित" #~ msgstr[1] "%d मिनीटे उर्वरित" #~ msgctxt "percent of battery remaining" #~ msgid "%d%%" #~ msgstr "%d%%" #~| msgid "AC adapter" #~ msgid "AC Adapter" #~ msgstr "AC अडॅप्टर" #~| msgid "Laptop battery" #~ msgid "Laptop Battery" #~ msgstr "लॅपटॉप बॅटरि" #~ msgid "Monitor" #~ msgstr "मॉनीटर" #~ msgid "Mouse" #~ msgstr "माउस" #~ msgid "PDA" #~ msgstr "PDA" #~| msgid "Cell phone" #~ msgid "Cell Phone" #~ msgstr "सेल फोन" #~| msgid "Media player" #~ msgid "Media Player" #~ msgstr "मिडीया वादक" #~ msgid "Tablet" #~ msgstr "टॅबलेट" #~ msgid "Computer" #~ msgstr "संगणक" #~ msgctxt "device" #~ msgid "Unknown" #~ msgstr "अपरिचीत" #~ msgid "Available" #~ msgstr "उपलब्ध" #~ msgid "Busy" #~ msgstr "व्यस्त" #~ msgid "Invisible" #~ msgstr "अदृष्य" #~ msgid "Away" #~ msgstr "दूर आहे" #~ msgid "Idle" #~ msgstr "रिकामे" #~ msgid "Your chat status will be set to busy" #~ msgstr "तुमची चॅट स्थिती व्यस्थकरीता ठरवले जाईल" #~ msgid "" #~ "Notifications are now disabled, including chat messages. Your online " #~ "status has been adjusted to let others know that you might not see their " #~ "messages." #~ msgstr "" #~ "सूचना आता बंद केले आहे, चॅट संदेश समाविष्टीत. इतरांना तुमचे संदेश दिसणार नाही हे " #~ "कळवण्यासाठी ऑनलाइन स्थिती सुस्थीत केली आहे." #~ msgid "Shutting down might cause them to lose unsaved work." #~ msgstr "बंद केल्याने न साठवलेले कार्य गमवण्याची शक्यता आहे." #~ msgid "" #~ "Sorry, no wisdom for you today:\n" #~ "%s" #~ msgstr "" #~ "माफ करा, चातुर्या आढळले नाही:\n" #~ "%s" #~ msgid "%s the Oracle says" #~ msgstr "%s ऑरॅकल म्हणतो" #~ msgctxt "title" #~ msgid "Sign In" #~ msgstr "प्रवेश करा" #~ msgid "APPLICATIONS" #~ msgstr "APPLICATIONS" #~ msgid "SETTINGS" #~ msgstr "SETTINGS" #~ msgctxt "event list time" #~ msgid "%H:%M" #~ msgstr "%H:%M" #~ msgid "Subscription request" #~ msgstr "सबस्क्रिप्शन विनंती" #~ msgid "Connection error" #~ msgstr "जोडणी त्रुटी" #~ msgid "Sent at %X on %A" #~ msgstr "%X वेळी, %A ला पाठवले" #~ msgid "Sent on %A, %B %d, %Y" #~ msgstr "%A, %B %d, %Y वेळी पाठवले" #~ msgid "Connection to %s failed" #~ msgstr "%s सह जोडणी अपयशी" #~ msgid "Reconnect" #~ msgstr "पुनःजोडणी करा" #~ msgid "tray" #~ msgstr "ट्रे" #~ msgid "Browse Files..." #~ msgstr "फाइल्स् तपासा..." #~ msgid "Error browsing device" #~ msgstr "साधनाची तपासणी करतेवेळी त्रुटी" #~ msgid "The requested device cannot be browsed, error is '%s'" #~ msgstr "विनंती केलेल्या साधनाची तपासणी अशक्य, त्रुटी '%s' आहे" #~ msgid "More..." #~ msgstr "अधिक..." #~ msgid "Wireless" #~ msgstr "वायरलेस्" #~ msgid "VPN Connections" #~ msgstr "VPN जोडणी" #~ msgid "System Settings" #~ msgstr "प्रणाली मांडणी" #~ msgid "Your favorite Easter Egg" #~ msgstr "तुमच्या पसंतीचा इस्टर एग" #~ msgid "United Kingdom" #~ msgstr "यूनाइटेड किंगडम" #~ msgid "Default" #~ msgstr "मुलभूत" #~ msgid "Failed to unmount '%s'" #~ msgstr "'%s' माऊंट अशक्य करण्यास अपयशी" #~ msgid "Retry" #~ msgstr "पुनःप्रयत्न करा" #~ msgid "PLACES & DEVICES" #~ msgstr "PLACES & DEVICES" #~ msgid "Home" #~ msgstr "होम" #~ msgid "%1$s: %2$s" #~ msgstr "%1$s: %2$s" #~ msgid "disabled OpenSearch providers" #~ msgstr "OpenSearch प्रोव्हाइडर्स् बंद केले" #~ msgid "Connect to..." #~ msgstr "यासह जोडणी करा..." #~ msgid "Passphrase" #~ msgstr "पासफ्रेज" #~ msgid "Show time with seconds" #~ msgstr "सेकंदात वेळ दाखवा" #~ msgid "If true, display seconds in time." #~ msgstr "खरे असल्यास, वेळेत सेकंद दाखवा." #~ msgid "Show date in clock" #~ msgstr "घड्याळात दिनांक दाखवा" #~ msgid "If true, display date in the clock, in addition to time." #~ msgstr "खरे असल्यास,वेळेबरोबर तारीख पण घड्याळात दाखवा." #~ msgid "CONTACTS" #~ msgstr "संपर्क" #~ msgid "%a %b %e, %R:%S" #~ msgstr "%a %b %e, %R:%S" #~ msgid "%a %b %e, %R" #~ msgstr "%a %b %e, %R" #~ msgid "%a %R:%S" #~ msgstr "%a %R:%S" #~ msgid "%a %R" #~ msgstr "%a %R" #~ msgid "%a %b %e, %l:%M:%S %p" #~ msgstr "%a %b %e, %l:%M:%S %p" #~ msgid "%a %l:%M:%S %p" #~ msgstr "%a %l:%M:%S %p" #~ msgid "Wrong password, please try again" #~ msgstr "चुकिचा पासवर्ड, कृपया पुनः प्रयत्न करा" #~ msgid "%s is online." #~ msgstr "%s ऑनलाइन आहे." #~ msgid "%s is offline." #~ msgstr "%s ऑफलाइन आहे." #~ msgid "%s is away." #~ msgstr "%s दूर आहे." #~ msgid "%s is busy." #~ msgstr "%s व्यग्र आहे." #~ msgid "Hidden" #~ msgstr "लवपलेले" #~ msgid "Power Off..." #~ msgstr "बंद करा..." #~ msgid "Online Accounts" #~ msgstr "ऑनलाइन खाते" #~ msgid "Lock Screen" #~ msgstr "पडदा कुलूपबंद करा" #~ msgid "Log Out..." #~ msgstr "बाहेर पडा..." #~ msgid "" #~ "GNOME Shell extensions have a uuid property; this key lists extensions " #~ "which should not be loaded." #~ msgstr "" #~ "GNOME शेल एक्सटेंशन्स्मध्ये uuid गुणधर्म आढळते; या किमध्ये एक्सटेंशन्स् आहेत ज्यांना लोड " #~ "करायची आवश्यकता नाही." #~ msgid "RECENT ITEMS" #~ msgstr "RECENT ITEMS" #~ msgid "Localization Settings" #~ msgstr "भाषांतरन सेटिंग्ज" #~ msgid "You're now connected to mobile broadband connection '%s'" #~ msgstr "तुम्ही आत्ता मोबाईल ब्रॉडबँड जोडणी '%s' शी जुळले आहात" #~ msgid "You're now connected to wireless network '%s'" #~ msgstr "तुम्ही आत्ता वायरलेस नेटवर्क '%s' शी जुळले आहात" #~ msgid "You're now connected to wired network '%s'" #~ msgstr "तुम्ही आत्ता वायर्ड् नेटवर्क '%s' शी जुळले आहात" #~ msgid "You're now connected to VPN network '%s'" #~ msgstr "तुम्ही आत्ता VPN नेटवर्क '%s' शी जुळले आहात" #~ msgid "%s has finished starting" #~ msgstr "%s ने सुरवात पूर्ण केले" #~ msgid "Less than a minute ago" #~ msgstr "एका मिनीटापूर्वी" #~ msgid "%d minute ago" #~ msgid_plural "%d minutes ago" #~ msgstr[0] "%d मिनीट पूर्वी" #~ msgstr[1] "%d मिनीट पूर्वी" #~ msgid "%d hour ago" #~ msgid_plural "%d hours ago" #~ msgstr[0] "%d तास पूर्वी" #~ msgstr[1] "%d तास पूर्वी" #~ msgid "%d day ago" #~ msgid_plural "%d days ago" #~ msgstr[0] "%d दिवस पूर्वी" #~ msgstr[1] "%d दिवस पूर्वी" #~ msgid "%d week ago" #~ msgid_plural "%d weeks ago" #~ msgstr[0] "%d आठवडा पूर्वी" #~ msgstr[1] "%d आठवडा पूर्वी" #~ msgid "Home Folder" #~ msgstr "होम फोल्डर" 07070100000250000081A40000000000000000000000016712993F0001540E000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/ms.po# Malay translations for gnome-shell package. # Copyright (C) 2011 Listed translators # This file is distributed under the same license as the gnome-shell package. # Andi Rady Kurniawan , 2011. # msgid "" msgstr "" "Project-Id-Version: gnome-shell master ms\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" "POT-Creation-Date: 2020-01-25 01:15+0000\n" "PO-Revision-Date: 2020-01-27 03:20+0800\n" "Last-Translator: abuyop \n" "Language-Team: Pasukan Terjemahan GNOME Malaysia\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=2; plural=n != 1;\n" "X-Generator: Poedit 2.0.6\n" #: data/50-gnome-shell-system.xml:6 msgid "System" msgstr "Sistem" #: data/50-gnome-shell-system.xml:9 #| msgid "%d new notification" #| msgid_plural "%d new notifications" msgid "Show the notification list" msgstr "Tunjuk senarai pemberitahuan" #: data/50-gnome-shell-system.xml:12 msgid "Focus the active notification" msgstr "Fokus pada pemberitahuan aktif" #: data/50-gnome-shell-system.xml:15 msgid "Show the overview" msgstr "Tunjuk selayang pandang" #: data/50-gnome-shell-system.xml:18 msgid "Show all applications" msgstr "Tunjuk semua aplikasi" #: data/50-gnome-shell-system.xml:21 msgid "Open the application menu" msgstr "Buka menu aplikasi" #: data/gnome-shell-extension-prefs.desktop.in.in:4 #: js/extensionPrefs/main.js:209 #| msgid "GNOME Shell Extensions" msgid "Shell Extensions" msgstr "Sambungan-Sambungan Shell" #: data/gnome-shell-extension-prefs.desktop.in.in:5 msgid "Configure GNOME Shell Extensions" msgstr "Konfigur Sambungan-Sambungan Shell GNOME" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "Shell GNOME" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "Pengurusan tetingkap dan pelancaran aplikasi" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" "Benarkan alatan dalaman yang berguna untuk para pembangun dan penguji " "melalui Alt-F2" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Benarkan capaian pada alatan penyahpepijatan dan pemantauan dalaman melalui " "dialog Alt-F2." #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "Sambungan UUID untuk dibenarkan" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "Sambungan-sambungan GNOME Shell mempunyai satu sifat UUID; kunci ini " "menyenaraikan sambungan-sambungan yang patut dimuatkan. Sebarang sambungan " "yang hendak dimuatkan perlu berada di dalam senarai ini. Anda juga boleh " "memanipulasi senarai ini dengan kaedah D-Bus EnableExtension dan " "DisableExtension yang terdapat di org.gnome.Shell." #: data/org.gnome.shell.gschema.xml.in:26 #| msgid "UUIDs of extensions to enable" msgid "UUIDs of extensions to force disabling" msgstr "UUID sambungan yang memaksa pelumpuhan" #: data/org.gnome.shell.gschema.xml.in:27 #| msgid "" #| "GNOME Shell extensions have a UUID property; this key lists extensions " #| "which should be loaded. Any extension that wants to be loaded needs to be " #| "in this list. You can also manipulate this list with the EnableExtension " #| "and DisableExtension D-Bus methods on org.gnome.Shell." msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" "Sambungan Shell GNOME mempunyai sifat UUID; kunci ini menyenaraikan " "sambungan-sambungan yang patut dilumpuhkan, walaupun jika ia telah dimuatkan " "sebagai sebahagian daripada mod semasa. Anda boleh memanipulasikan senarai " "ini dengan kaedah D-Bus EnableExtension dan DisableExtension D-Bus yang " "terdapat di dalam org.gnome.Shell. Kunci ini mengikut keutamaan di dalam " "tetapan \"enabled-extensions”." #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "Lumpuhkan sambungan-sambungan pengguna" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" "Lumpuhkan semua sambungan yang dibenarkan oleh pengguna tanpa mempengaruhi " "tetapan \"enabled-extension\"." #: data/org.gnome.shell.gschema.xml.in:45 msgid "Disables the validation of extension version compatibility" msgstr "Lumpuhkan pengesahan keserasian versi sambungan" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "GNOME Shell hanya akan memuatkan sambungan-sambungan yang menyokong versi " "semasa. Dengan membenarkan pilihan ini, kotak tanda dinyahtanda dan semua " "sambungan akan dimuatkan tanpa mengira sama ada versi yang menyokong atau " "sebaliknya." #: data/org.gnome.shell.gschema.xml.in:54 msgid "List of desktop file IDs for favorite applications" msgstr "Senarai ID fail desktop untuk aplikasi kegemaran" #: data/org.gnome.shell.gschema.xml.in:55 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" "Aplikasi-aplikasi bagi setiap pengenal pasti ini akan dipaparkan di kawasan " "kegemaran." #: data/org.gnome.shell.gschema.xml.in:62 msgid "App Picker View" msgstr "Pandangan Pemilih Apl" #: data/org.gnome.shell.gschema.xml.in:63 msgid "Index of the currently selected view in the application picker." msgstr "Indeks bagi pandangan terpilih semasa di dalam pemilih aplikasi." #: data/org.gnome.shell.gschema.xml.in:69 msgid "History for command (Alt-F2) dialog" msgstr "Sejarah untuk dialog perintah (Alt-F2)" #. Translators: looking glass is a debugger and inspector tool, see https://wiki.gnome.org/Projects/GnomeShell/LookingGlass #: data/org.gnome.shell.gschema.xml.in:74 msgid "History for the looking glass dialog" msgstr "Sejarah untuk dialog looking glass" #: data/org.gnome.shell.gschema.xml.in:78 msgid "Always show the “Log out” menu item in the user menu." msgstr "Sentiasa tunjuk item menu \"Daftar keluar\" di dalam menu pengguna." #: data/org.gnome.shell.gschema.xml.in:79 msgid "" "This key overrides the automatic hiding of the “Log out” menu item in single-" "user, single-session situations." msgstr "" "Kunci ini membatalkan penyembunyian automatik bagi item menu \"Daftar keluar" "\" dalam situasi pengguna-tunggal, sesi-tunggal." #: data/org.gnome.shell.gschema.xml.in:86 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "Sama ada hendak mengingati kata laluan untuk melekap tersulit atau sistem " "fail jauh" #: data/org.gnome.shell.gschema.xml.in:87 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "Shell akan meminta satu kata laluan ketika peranti tersulit atau sistem fail " "jauh dilekapkan. Sekiranya kata laluan boleh disimpan untuk kegunaan akan " "datang gunakan kotak tanda \"Ingat Kata Laluan\" akan hadir. Kunci ini " "menetapkan keadaan lalai bagi kotak tanda." #: data/org.gnome.shell.gschema.xml.in:96 msgid "" "Whether the default Bluetooth adapter had set up devices associated to it" msgstr "" "Sama ada penyesuai Bluetooth lalai telah pasangkan peranti-peranti yang " "berkaitan dengannya" #: data/org.gnome.shell.gschema.xml.in:97 msgid "" "The shell will only show a Bluetooth menu item if a Bluetooth adapter is " "powered, or if there were devices set up associated with the default " "adapter. This will be reset if the default adapter is ever seen not to have " "devices associated to it." msgstr "" "Shell hanya menunjukkan item menu Bluetooth sekiranya penyesuai Bluetooth " "telah dihidupkan, atau jika terdapat peranti-peranti yang dipasang berkaitan " "dengan penyesuai lalai. Ia akan ditetapkan semula jika penyesuai lalai tidak " "mempunyai peranti-peranti yang berkaitan dengannya." #: data/org.gnome.shell.gschema.xml.in:106 msgid "Enable introspection API" msgstr "Benarkan API introspection" #: data/org.gnome.shell.gschema.xml.in:107 msgid "" "Enables a D-Bus API that allows to introspect the application state of the " "shell." msgstr "" "Benarkan satu API D-Bus yang membolehkan kaji semua keadaan aplikasi shell." #: data/org.gnome.shell.gschema.xml.in:119 msgid "Keybinding to open the application menu" msgstr "Pengikatan kekunci untuk membuka menu aplikasi" #: data/org.gnome.shell.gschema.xml.in:120 msgid "Keybinding to open the application menu." msgstr "Pengikatan kekunci untuk membuka menu aplikasi." #: data/org.gnome.shell.gschema.xml.in:126 msgid "Keybinding to open the “Show Applications” view" msgstr "Pengikatan kekunci untuk membuka pandangan \"Tunjuk Aplikasi\"" #: data/org.gnome.shell.gschema.xml.in:127 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "" "Pengikatan kekunci untuk membuka pandangan \"Tunjuk Aplikasi-Aplikasi\" bagi " "Selayang Pandang Aktiviti." #: data/org.gnome.shell.gschema.xml.in:134 msgid "Keybinding to open the overview" msgstr "Pengikatan kekunci untuk membuka selayang pandang" #: data/org.gnome.shell.gschema.xml.in:135 msgid "Keybinding to open the Activities Overview." msgstr "Pengikatan kekunci untuk membuka Selayang Pandang Aktiviti-Aktiviti." #: data/org.gnome.shell.gschema.xml.in:141 msgid "Keybinding to toggle the visibility of the notification list" msgstr "Pengikatan untuk togol ketampakan senarai pemberitahuan" #: data/org.gnome.shell.gschema.xml.in:142 msgid "Keybinding to toggle the visibility of the notification list." msgstr "Pengikatan untuk togol ketampakan senarai pemberitahuan." #: data/org.gnome.shell.gschema.xml.in:148 msgid "Keybinding to focus the active notification" msgstr "Pengikatan kekunci untuk fokuskan pemberitahuan aktif" #: data/org.gnome.shell.gschema.xml.in:149 msgid "Keybinding to focus the active notification." msgstr "Pengikatan kekunci untuk fokuskan pemberitahuan aktif." #: data/org.gnome.shell.gschema.xml.in:155 #| msgid "Show Applications" msgid "Switch to application 1" msgstr "Beralih ke aplikasi 1" #: data/org.gnome.shell.gschema.xml.in:159 #| msgid "Show Applications" msgid "Switch to application 2" msgstr "Beralih ke aplikasi 2" #: data/org.gnome.shell.gschema.xml.in:163 #| msgid "Show Applications" msgid "Switch to application 3" msgstr "Beralih ke aplikasi 3" #: data/org.gnome.shell.gschema.xml.in:167 #| msgid "Show Applications" msgid "Switch to application 4" msgstr "Beralih ke aplikasi 4" #: data/org.gnome.shell.gschema.xml.in:171 #| msgid "Show Applications" msgid "Switch to application 5" msgstr "Beralih ke aplikasi 5" #: data/org.gnome.shell.gschema.xml.in:175 #| msgid "Show Applications" msgid "Switch to application 6" msgstr "Beralih ke aplikasi 6" #: data/org.gnome.shell.gschema.xml.in:179 #| msgid "Show Applications" msgid "Switch to application 7" msgstr "Beralih ke aplikasi 7" #: data/org.gnome.shell.gschema.xml.in:183 #| msgid "Show Applications" msgid "Switch to application 8" msgstr "Beralih ke aplikasi 8" #: data/org.gnome.shell.gschema.xml.in:187 #| msgid "Show Applications" msgid "Switch to application 9" msgstr "Beralih ke aplikasi 9" #: data/org.gnome.shell.gschema.xml.in:196 #: data/org.gnome.shell.gschema.xml.in:223 msgid "Limit switcher to current workspace." msgstr "Hadkan penukar ke ruang kerja semasa." #: data/org.gnome.shell.gschema.xml.in:197 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "Jika benar, hanya aplikasi-aplikasi yang ada tetingkap pada ruang kerja " "semasa ditunjukkan dalam penukar. Jika sebaliknya, semua aplikasi terlibat." #: data/org.gnome.shell.gschema.xml.in:214 msgid "The application icon mode." msgstr "Mod ikon aplikasi." #: data/org.gnome.shell.gschema.xml.in:215 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-" "only” (shows only the application icon) or “both”." msgstr "" "Konfigur bagaimanakah tetingkap-tetingkap ditunjukkan dalam penukar. " "Kemungkinan yang sah adalah \"lakaran-kenit-sahaja\" (tunjuk satu lakaran " "kenit bagi tetingkap), \"ikon-apl-sahaja\" (hanya tunjuk ikon aplikasi) atau " "\"kedua-duanya\"." #: data/org.gnome.shell.gschema.xml.in:224 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "Jika benar, hanya tetingkap-tetingkap pada ruang kerja semasa ditunjukkan " "dalam penukar. Jika sebaliknya, semua tetingkap terlibat." #: data/org.gnome.shell.gschema.xml.in:234 #| msgid "Location" msgid "Locations" msgstr "Lokasi" #: data/org.gnome.shell.gschema.xml.in:235 msgid "The locations to show in world clocks" msgstr "Lokasi yang dipaparkan dalam jam dunia" #: data/org.gnome.shell.gschema.xml.in:245 msgid "Automatic location" msgstr "Lokasi automatik" #: data/org.gnome.shell.gschema.xml.in:246 msgid "Whether to fetch the current location or not" msgstr "Sama ada hendak dapatkan lokasi semasa atau sebaliknya" #: data/org.gnome.shell.gschema.xml.in:253 msgid "Location" msgstr "Lokasi" #: data/org.gnome.shell.gschema.xml.in:254 msgid "The location for which to show a forecast" msgstr "Lokasi yang dapat menunjukkan ramalan" #: data/org.gnome.shell.gschema.xml.in:266 msgid "Attach modal dialog to the parent window" msgstr "Lampir dialog modal kepada tetingkap induk" #: data/org.gnome.shell.gschema.xml.in:267 #: data/org.gnome.shell.gschema.xml.in:276 #: data/org.gnome.shell.gschema.xml.in:284 #: data/org.gnome.shell.gschema.xml.in:292 #: data/org.gnome.shell.gschema.xml.in:300 msgid "" "This key overrides the key in org.gnome.mutter when running GNOME Shell." msgstr "" "Kunci ini membatalkan kunci dalam org.gnome.mutter ketika menjalankan GNOME " "Shell." #: data/org.gnome.shell.gschema.xml.in:275 msgid "Enable edge tiling when dropping windows on screen edges" msgstr "" "Benarkan penjubinan pinggir ketika melepaskan tetingkap-tetingkap di atas " "pinggir skrin" #: data/org.gnome.shell.gschema.xml.in:283 msgid "Workspaces are managed dynamically" msgstr "Ruang-ruang kerja diurus secara dinamik" #: data/org.gnome.shell.gschema.xml.in:291 msgid "Workspaces only on primary monitor" msgstr "Ruang-ruang kerja hanya berada pada monitor utama" #: data/org.gnome.shell.gschema.xml.in:299 msgid "Delay focus changes in mouse mode until the pointer stops moving" msgstr "" "Fokus lengah berubah dalam mod tetikus sehinggalah penuding berhenti bergerak" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 #| msgid "Network error" msgid "Network Login" msgstr "Daftar Masuk Rangkaian" #: js/extensionPrefs/main.js:102 js/extensionPrefs/main.js:525 msgid "Something’s gone wrong" msgstr "Adalah masalah telah berlaku" #: js/extensionPrefs/main.js:109 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" "Mohon maaf, adalah masalah telah berlaku: tetapan bagi sambungan ini tidak " "dapat dipaparkan. Kami menyarankan anda laporkan masalah ini kepada para " "pengarang sambungan." #: js/extensionPrefs/main.js:116 msgid "Technical Details" msgstr "Perincian Teknikal" #: js/extensionPrefs/main.js:151 #| msgid "Show Errors" msgid "Copy Error" msgstr "Salin Ralat" #: js/extensionPrefs/main.js:178 msgid "Homepage" msgstr "Laman Sesawang" #: js/extensionPrefs/main.js:179 #| msgid "UUIDs of extensions to enable" msgid "Visit extension homepage" msgstr "Lawati laman sesawang sambungan" #: js/extensionPrefs/main.js:467 #| msgid "No extensions installed" msgid "No Extensions Installed" msgstr "Tiada Sambungan Dipasang" #: js/extensionPrefs/main.js:477 msgid "" "Extensions can be installed through Software or extensions.gnome.org." msgstr "" "Sambungan-sambungan boleh dipasang melalui Perisian atau extensions.gnome.org." #: js/extensionPrefs/main.js:492 msgid "Browse in Software" msgstr "Layar dalam Perisian" #: js/extensionPrefs/main.js:532 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" "Mohon maaf, berkemungkinan boleh dapatkan senarai sambungan terpasang. " "Pastikan anda telah mendaftar masuk ke dalam GNOME dan cuba sekali lagi." #: js/gdm/authPrompt.js:174 js/ui/audioDeviceSelection.js:57 #: js/ui/components/networkAgent.js:129 js/ui/components/polkitAgent.js:138 #: js/ui/endSessionDialog.js:374 js/ui/extensionDownloader.js:190 #: js/ui/shellMountOperation.js:399 js/ui/shellMountOperation.js:409 #: js/ui/status/network.js:910 msgid "Cancel" msgstr "Batal" #: js/gdm/authPrompt.js:188 js/gdm/authPrompt.js:241 js/gdm/authPrompt.js:476 msgid "Next" msgstr "Berikutnya" #: js/gdm/authPrompt.js:237 js/ui/shellMountOperation.js:403 #: js/ui/unlockDialog.js:44 msgid "Unlock" msgstr "Nyahkunci" #: js/gdm/authPrompt.js:239 msgctxt "button" msgid "Sign In" msgstr "Daftar Masuk" #: js/gdm/loginDialog.js:319 msgid "Choose Session" msgstr "Pilih Sesi" #: js/gdm/loginDialog.js:461 msgid "Not listed?" msgstr "Tidak tersenarai?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:895 #, javascript-format msgid "(e.g., user or %s)" msgstr "(cth., pengguna atau %s)" #. TTLS and PEAP are actually much more complicated, but this complication #. is not visible here since we only care about phase2 authentication #. (and don't even care of which one) #: js/gdm/loginDialog.js:899 js/ui/components/networkAgent.js:256 #: js/ui/components/networkAgent.js:279 js/ui/components/networkAgent.js:297 msgid "Username: " msgstr "Nama Pengguna: " #: js/gdm/loginDialog.js:1230 msgid "Login Window" msgstr "Tetingkap Daftar Masuk" #: js/gdm/util.js:338 msgid "Authentication error" msgstr "Ralat pengesahihan" #. We don't show fingerprint messages directly since it's #. not the main auth service. Instead we use the messages #. as a cue to display our own message. #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger instead #: js/gdm/util.js:473 msgid "(or swipe finger)" msgstr "(atau leret jari)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:89 #| msgid "Power Off" msgctxt "search-result" msgid "Power Off" msgstr "Tutup" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:92 msgid "power off;shutdown;reboot;restart;halt;stop" msgstr "tutup;matikan;but semula;mula semula;tegun;henti" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:97 msgctxt "search-result" msgid "Lock Screen" msgstr "Skrin Kunci" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:100 msgid "lock screen" msgstr "kunci skrin" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:105 #| msgid "Log Out" msgctxt "search-result" msgid "Log Out" msgstr "Daftar Keluar" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:108 msgid "logout;log out;sign off" msgstr "daftarkeluar;daftar keluar;keluar" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:113 #| msgid "Suspend" msgctxt "search-result" msgid "Suspend" msgstr "Tangguh" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:116 #| msgid "Suspend" msgid "suspend;sleep" msgstr "tangguh;tidur" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:121 #| msgid "Switch User" msgctxt "search-result" msgid "Switch User" msgstr "Tukar Pengguna" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:124 #| msgid "Switch User" msgid "switch user" msgstr "tukar pengguna" #. Translators: The name of the lock orientation action in search #: js/misc/systemActions.js:129 #| msgid "Location" msgctxt "search-result" msgid "Lock Orientation" msgstr "Kunci Orientasi" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:132 msgid "lock orientation;screen;rotation" msgstr "kunci orientasi;skrin;putaran" #: js/misc/util.js:116 msgid "Command not found" msgstr "Perintah tidak ditemui" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:152 msgid "Could not parse command:" msgstr "Tidak dapat menghurai perintah:" #: js/misc/util.js:160 #, javascript-format msgid "Execution of “%s” failed:" msgstr "Perlaksanaan “%s” telah gagal:" #: js/misc/util.js:177 msgid "Just now" msgstr "Baru berlaku" #: js/misc/util.js:179 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d minit yang lalu" msgstr[1] "%d minit yang lalu" #: js/misc/util.js:183 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d jam yang lalu" msgstr[1] "%d jam yang lalu" #: js/misc/util.js:187 msgid "Yesterday" msgstr "Semalam" #: js/misc/util.js:189 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d hari yang lalu" msgstr[1] "%d hari yang lalu" #: js/misc/util.js:193 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d minggu yang lalu" msgstr[1] "%d minggu yang lalu" #: js/misc/util.js:197 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%d bulan yang lalu" msgstr[1] "%d bulan yang lalu" #: js/misc/util.js:200 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "%d tahun yang lalu" msgstr[1] "%d tahun yang lalu" #. Translators: Time in 24h format #: js/misc/util.js:233 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/util.js:239 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "Semalam, %H∶%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/util.js:245 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/util.js:251 #, no-c-format #| msgid "%B %d, %l∶%M %p" msgid "%B %-d, %H∶%M" msgstr "%-d %B, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/util.js:257 #, no-c-format #| msgid "%B %d %Y, %l∶%M %p" msgid "%B %-d %Y, %H∶%M" msgstr "%-d %B %Y, %H∶%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/util.js:262 msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/util.js:268 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "Semalam, %l∶%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/util.js:274 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/util.js:280 #, no-c-format #| msgid "%B %d, %l∶%M %p" msgid "%B %-d, %l∶%M %p" msgstr "%-d %B, %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/util.js:286 #, no-c-format #| msgid "%B %d %Y, %l∶%M %p" msgid "%B %-d %Y, %l∶%M %p" msgstr "%-d %B %Y, %l∶%M %p" #. TRANSLATORS: this is the title of the wifi captive portal login window #: js/portalHelper/main.js:40 msgid "Hotspot Login" msgstr "Daftar Masuk Kawasan Khas" #: js/portalHelper/main.js:86 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "Sambungan anda dengan daftar masuk kawasan khas ini adalah tidak selamat. " "Kata laluan atau lain-lain maklumat yang anda telah masukkan di dalam " "halaman ini boleh dilihat oleh individu berhampiran." #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:39 js/ui/status/location.js:366 msgid "Deny Access" msgstr "Nafi Capaian" #: js/ui/accessDialog.js:40 js/ui/status/location.js:369 msgid "Grant Access" msgstr "Beri Capaian" #: js/ui/appDisplay.js:904 msgid "Unnamed Folder" msgstr "Folder Tiada Nama" #: js/ui/appDisplay.js:927 msgid "Frequently used applications will appear here" msgstr "Aplikasi kerap digunakan akan muncul di sini" #: js/ui/appDisplay.js:1062 msgid "Frequent" msgstr "Kerap" #: js/ui/appDisplay.js:1069 msgid "All" msgstr "Semua" #. Translators: This is the heading of a list of open windows #: js/ui/appDisplay.js:2452 js/ui/panel.js:75 #| msgid "Windows" msgid "Open Windows" msgstr "Buka Tetingkap" #: js/ui/appDisplay.js:2472 js/ui/panel.js:82 msgid "New Window" msgstr "Tetingkap Baharu" #: js/ui/appDisplay.js:2483 msgid "Launch using Dedicated Graphics Card" msgstr "Lancar menggunakan Kad Grafik Khusus" #: js/ui/appDisplay.js:2511 js/ui/dash.js:239 msgid "Remove from Favorites" msgstr "Buang daripada Kegemaran" #: js/ui/appDisplay.js:2517 msgid "Add to Favorites" msgstr "Tambah ke Kegemaran" #: js/ui/appDisplay.js:2527 js/ui/panel.js:93 msgid "Show Details" msgstr "Tunjuk Perincian" #: js/ui/appFavorites.js:152 #, javascript-format msgid "%s has been added to your favorites." msgstr "%s telah ditambah ke kegemaran anda." #: js/ui/appFavorites.js:185 #, javascript-format msgid "%s has been removed from your favorites." msgstr "%s telah dibuang daripada kegemaran anda." #: js/ui/audioDeviceSelection.js:40 msgid "Select Audio Device" msgstr "Pilih Peranti Audio" #: js/ui/audioDeviceSelection.js:54 #| msgid "Settings" msgid "Sound Settings" msgstr "Tetapan Bunyi" #: js/ui/audioDeviceSelection.js:64 msgid "Headphones" msgstr "Fon Kepala" #: js/ui/audioDeviceSelection.js:66 msgid "Headset" msgstr "Set Kepala" #: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:269 msgid "Microphone" msgstr "Mikrofon" #: js/ui/backgroundMenu.js:14 msgid "Change Background…" msgstr "Ubah Latar Belakang…" #: js/ui/backgroundMenu.js:16 js/ui/status/nightLight.js:45 #| msgid "Privacy Settings" msgid "Display Settings" msgstr "Tetapan Paparan" #: js/ui/backgroundMenu.js:17 msgid "Settings" msgstr "Tetapan" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:41 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:70 msgctxt "grid sunday" msgid "S" msgstr "A" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:72 msgctxt "grid monday" msgid "M" msgstr "I" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:74 msgctxt "grid tuesday" msgid "T" msgstr "S" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:76 msgctxt "grid wednesday" msgid "W" msgstr "R" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:78 msgctxt "grid thursday" msgid "T" msgstr "K" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:80 msgctxt "grid friday" msgid "F" msgstr "J" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:82 msgctxt "grid saturday" msgid "S" msgstr "S" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:371 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:381 msgid "%OB %Y" msgstr "%OB %Y" #: js/ui/calendar.js:440 msgid "Previous month" msgstr "Bulan terdahulu" #: js/ui/calendar.js:455 msgid "Next month" msgstr "Bulan berikutnya" #: js/ui/calendar.js:605 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:661 msgid "Week %V" msgstr "Minggu %V" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/calendar.js:730 msgctxt "event list time" msgid "All Day" msgstr "Sepanjang Hari" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/calendar.js:867 #| msgctxt "calendar heading" #| msgid "%A, %B %d" msgctxt "calendar heading" msgid "%A, %B %-d" msgstr "%A, %B %-d" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/calendar.js:870 #| msgctxt "calendar heading" #| msgid "%A, %B %d, %Y" msgctxt "calendar heading" msgid "%A, %B %-d, %Y" msgstr "%A, %B %-d, %Y" #: js/ui/calendar.js:1096 #| msgid "Notifications" msgid "No Notifications" msgstr "Tiada Pemberitahuan" #: js/ui/calendar.js:1099 msgid "No Events" msgstr "Tiada Peristiwa" #: js/ui/calendar.js:1153 msgid "Do Not Disturb" msgstr "Jangan Ganggu" #: js/ui/calendar.js:1167 msgid "Clear" msgstr "Kosongkan" #. Translators: %s is an application name #: js/ui/closeDialog.js:42 #, javascript-format #| msgid "“%s” is ready" msgid "“%s” is not responding." msgstr "“%s” tidak memberi respons." #: js/ui/closeDialog.js:43 msgid "" "You may choose to wait a short while for it to continue or force the " "application to quit entirely." msgstr "" "Anda boleh tunggu sebentar untuk teruskan atau paksa aplikasi ditutup " "sepenuhnya." #: js/ui/closeDialog.js:70 msgid "Force Quit" msgstr "Paksa Keluar" #: js/ui/closeDialog.js:73 msgid "Wait" msgstr "Tunggu" #: js/ui/components/automountManager.js:86 msgid "External drive connected" msgstr "Pemacu luar bersambung" #: js/ui/components/automountManager.js:98 msgid "External drive disconnected" msgstr "Pemacu luar ditanggalkan" #: js/ui/components/automountManager.js:208 msgid "Unable to unlock volume" msgstr "Gagal menyahkunci volum" #: js/ui/components/automountManager.js:209 msgid "The installed udisks version does not support the PIM setting" msgstr "Versi udisks terpasang tidak menyokong tetapan PIM" #: js/ui/components/autorunManager.js:333 #, javascript-format msgid "Open with %s" msgstr "Buka dengan %s" #: js/ui/components/keyring.js:70 js/ui/components/polkitAgent.js:278 msgid "Password:" msgstr "Katalaluan:" #: js/ui/components/keyring.js:104 msgid "Type again:" msgstr "Taip sekali lagi:" #: js/ui/components/networkAgent.js:115 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router." msgstr "" "Selain itu anda boleh sambung dengan menekan butang \"WPS\" yang ada pada " "penghala anda." #: js/ui/components/networkAgent.js:123 js/ui/status/network.js:223 #: js/ui/status/network.js:314 js/ui/status/network.js:913 msgid "Connect" msgstr "Sambung" #. Cisco LEAP #: js/ui/components/networkAgent.js:224 js/ui/components/networkAgent.js:236 #: js/ui/components/networkAgent.js:260 js/ui/components/networkAgent.js:281 #: js/ui/components/networkAgent.js:301 js/ui/components/networkAgent.js:311 msgid "Password: " msgstr "Kata laluan: " #. static WEP #: js/ui/components/networkAgent.js:229 msgid "Key: " msgstr "Kunci: " #: js/ui/components/networkAgent.js:264 js/ui/components/networkAgent.js:287 msgid "Private key password: " msgstr "Kata laluan kunci persendirian: " #: js/ui/components/networkAgent.js:285 msgid "Identity: " msgstr "Identiti: " #: js/ui/components/networkAgent.js:299 msgid "Service: " msgstr "Perkhidmatan: " #: js/ui/components/networkAgent.js:328 js/ui/components/networkAgent.js:703 msgid "Authentication required by wireless network" msgstr "Pengesahihan diperlukan untuk rangkaian tanpa wayar" #: js/ui/components/networkAgent.js:329 js/ui/components/networkAgent.js:704 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network " "“%s”." msgstr "" "Kata laluan atau kunci penyulitan diperlukan untuk mencapai rangkaian tanpa " "wayar “%s”." #: js/ui/components/networkAgent.js:333 js/ui/components/networkAgent.js:708 msgid "Wired 802.1X authentication" msgstr "Pengesahan berwayar 802.1X" #: js/ui/components/networkAgent.js:335 msgid "Network name: " msgstr "Nama rangkaian: " #: js/ui/components/networkAgent.js:340 js/ui/components/networkAgent.js:712 msgid "DSL authentication" msgstr "Pengesahan DSL" #: js/ui/components/networkAgent.js:347 js/ui/components/networkAgent.js:717 msgid "PIN code required" msgstr "Kod PIN diperlukan" #: js/ui/components/networkAgent.js:348 js/ui/components/networkAgent.js:718 msgid "PIN code is needed for the mobile broadband device" msgstr "Kod PIN diperlukan untuk peranti jalur lebar mudah alih" #: js/ui/components/networkAgent.js:349 msgid "PIN: " msgstr "PIN: " #: js/ui/components/networkAgent.js:356 js/ui/components/networkAgent.js:724 msgid "Mobile broadband network password" msgstr "Kata laluan rangkaian jalur lebar mudah alih" #: js/ui/components/networkAgent.js:357 js/ui/components/networkAgent.js:709 #: js/ui/components/networkAgent.js:713 js/ui/components/networkAgent.js:725 #: js/ui/components/networkAgent.js:729 #, javascript-format msgid "A password is required to connect to “%s”." msgstr "Kata laluan diperlukan untuk bersambung dengan “%s”." #: js/ui/components/networkAgent.js:692 js/ui/status/network.js:1688 msgid "Network Manager" msgstr "Pengurus Rangkaian" #: js/ui/components/networkAgent.js:728 #| msgid "Password" msgid "VPN password" msgstr "Kata laluan VPN" #: js/ui/components/polkitAgent.js:41 msgid "Authentication Required" msgstr "Pengesahihan Diperlukan" #: js/ui/components/polkitAgent.js:81 msgid "Administrator" msgstr "Pentadbir" #: js/ui/components/polkitAgent.js:141 msgid "Authenticate" msgstr "Sahihkan" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:259 js/ui/shellMountOperation.js:383 #| msgid "Sorry, that didn't work. Please try again." msgid "Sorry, that didn’t work. Please try again." msgstr "Maaf, nampaknya tidak berjaya. Cuba sekali lagi." #. Translators: this is the other person changing their old IM name to their new #. IM name. #: js/ui/components/telepathyClient.js:787 #, javascript-format msgid "%s is now known as %s" msgstr "%s kini dikenali sebagai %s" #: js/ui/ctrlAltTab.js:21 js/ui/viewSelector.js:177 msgid "Windows" msgstr "Tetingkap" #: js/ui/dash.js:200 js/ui/dash.js:241 msgid "Show Applications" msgstr "Tunjukkan Aplikasi" #. Translators: this is the name of the dock/favorites area on #. the left of the overview #: js/ui/dash.js:394 msgid "Dash" msgstr "Pemuka" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:75 #| msgctxt "calendar heading" #| msgid "%A, %B %d, %Y" msgid "%B %-d %Y" msgstr "%-d %B %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:82 #| msgid "%A %B %e, %Y" msgid "%A %B %e %Y" msgstr "%A %e %B %Y" #: js/ui/dateMenu.js:161 msgid "Add world clocks…" msgstr "Tambah jam dunia…" #: js/ui/dateMenu.js:162 msgid "World Clocks" msgstr "Jam Dunia" #: js/ui/dateMenu.js:276 msgid "Weather" msgstr "Cuaca" #: js/ui/dateMenu.js:391 #| msgid "Select a network" msgid "Select a location…" msgstr "Pilih satu lokasi…" #: js/ui/dateMenu.js:404 #| msgid "Searching…" msgid "Loading…" msgstr "Memuatkan…" #: js/ui/dateMenu.js:414 msgid "Go online for weather information" msgstr "Pergi dalam talian untuk dapatkan maklumat cuaca" #: js/ui/dateMenu.js:416 #| msgid "Encryption is not available" msgid "Weather information is currently unavailable" msgstr "Maklumat cuaca buat masa ini tidak tersedia" #: js/ui/endSessionDialog.js:37 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "Daftar Keluar %s" #: js/ui/endSessionDialog.js:38 msgctxt "title" msgid "Log Out" msgstr "Daftar Keluar" #: js/ui/endSessionDialog.js:40 #, javascript-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "%s akan mendaftar keluar secara automatik dalam tempoh %d saat." msgstr[1] "%s akan mendaftar keluar secara automatik dalam tempoh %d saat." #: js/ui/endSessionDialog.js:45 #, javascript-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "Anda akan mendaftar keluar secara automatik dalam tempoh %d saat." msgstr[1] "Anda akan mendaftar keluar secara automatik dalam tempoh %d saat." #: js/ui/endSessionDialog.js:51 msgctxt "button" msgid "Log Out" msgstr "Daftar Keluar" #: js/ui/endSessionDialog.js:56 msgctxt "title" msgid "Power Off" msgstr "Tutup" #: js/ui/endSessionDialog.js:57 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Pasang Kemas Kini & Matikan" #: js/ui/endSessionDialog.js:59 #, javascript-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "Sistem akan dimatikan secara automatik dalam tempoh %d saat." msgstr[1] "Sistem akan dimatikan secara automatik dalam tempoh %d saat." #: js/ui/endSessionDialog.js:63 msgctxt "checkbox" msgid "Install pending software updates" msgstr "Pasang kemas kini-kemas kini perisian tertangguh" #: js/ui/endSessionDialog.js:66 js/ui/endSessionDialog.js:82 msgctxt "button" msgid "Restart" msgstr "Mula Semula" #: js/ui/endSessionDialog.js:68 msgctxt "button" msgid "Power Off" msgstr "Tutup" #: js/ui/endSessionDialog.js:74 msgctxt "title" msgid "Restart" msgstr "Mula Semula" #: js/ui/endSessionDialog.js:76 #, javascript-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "Sistem akan dimulakan semula secara automatik dalam tempoh %d saat." msgstr[1] "Sistem akan dimulakan semula secara automatik dalam tempoh %d saat." #: js/ui/endSessionDialog.js:89 msgctxt "title" msgid "Restart & Install Updates" msgstr "Mulas Semula & Pasang Kemas Kini" #: js/ui/endSessionDialog.js:91 #, javascript-format msgid "The system will automatically restart and install updates in %d second." msgid_plural "" "The system will automatically restart and install updates in %d seconds." msgstr[0] "" "Sistem akan dimulakan semula dan memasang kemas kini secara automatik dalam " "tempoh %d saat." msgstr[1] "" "Sistem akan dimulakan semula dan memasang kemas kini secara automatik dalam " "tempoh %d saat." #: js/ui/endSessionDialog.js:97 js/ui/endSessionDialog.js:116 msgctxt "button" msgid "Restart & Install" msgstr "Mula Semula & Pasang" #: js/ui/endSessionDialog.js:98 msgctxt "button" msgid "Install & Power Off" msgstr "Pasang & Matikan" #: js/ui/endSessionDialog.js:99 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Matikan selepas kemas kini-kemas kini telah dipasang" #: js/ui/endSessionDialog.js:106 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "Mula Semula & Pasang Penataran" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:111 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "%s%s akan dipasang selepas mula semula. Pemasangan penataran mengambil masa " "yang agak lama: pastikan anda telah menyandar dan komputer anda menggunakan " "kuasa AC." #: js/ui/endSessionDialog.js:259 msgid "Running on battery power: Please plug in before installing updates." msgstr "" "Berjalan dengan kuasa bateri. Sila palamkan sebelum memasang kemas kini." #: js/ui/endSessionDialog.js:268 msgid "Some applications are busy or have unsaved work" msgstr "Sesetengah aplikasi masih sibuk atau ada kerja belum disimpan" #: js/ui/endSessionDialog.js:273 msgid "Other users are logged in" msgstr "Pengguna lain masih mendaftar masuk" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:588 #, javascript-format msgid "%s (remote)" msgstr "%s (jauh)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:591 #, javascript-format msgid "%s (console)" msgstr "%s (konsol)" #: js/ui/extensionDownloader.js:194 msgid "Install" msgstr "Pasang" #: js/ui/extensionDownloader.js:200 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "Muat turun dan pasang “%s” dari extensions.gnome.org?" #: js/ui/inhibitShortcutsDialog.js:80 #, javascript-format msgid "%s wants to inhibit shortcuts" msgstr "%s mahu menyekat pintasan-pintasan" #: js/ui/inhibitShortcutsDialog.js:81 msgid "Application wants to inhibit shortcuts" msgstr "Aplikasi mahu menyekat pintasan-pintasan" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:89 #, javascript-format msgid "You can restore shortcuts by pressing %s." msgstr "Anda boleh memulihkan pintasan-pintasan dengan menekan %s." #: js/ui/inhibitShortcutsDialog.js:95 msgid "Deny" msgstr "Nafi" #: js/ui/inhibitShortcutsDialog.js:102 msgid "Allow" msgstr "Benarkan" #: js/ui/kbdA11yDialog.js:32 #| msgid "Slow Keys" msgid "Slow Keys Turned On" msgstr "Kekunci Lambat Hidup" #: js/ui/kbdA11yDialog.js:33 #| msgid "Slow Keys" msgid "Slow Keys Turned Off" msgstr "Kekunci Lambat Mati" #: js/ui/kbdA11yDialog.js:34 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "Anda baru sahaja menahan kekunci Shift selama 8 saat. Tindakan ini adalah " "pintasan untuk fitur Kekunci-Kekunci Lambat, yang mungkin mempengaruhi " "fungsi papan kekunci anda." #: js/ui/kbdA11yDialog.js:41 #| msgid "Sticky Keys" msgid "Sticky Keys Turned On" msgstr "Kekunci Lekat Hidup" #: js/ui/kbdA11yDialog.js:42 #| msgid "Sticky Keys" msgid "Sticky Keys Turned Off" msgstr "Kekunci Lekat Mati" #: js/ui/kbdA11yDialog.js:44 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "Anda baru sahaja menekan kekunci Shift sebanyak 5 kali berturutan. Tindakan " "ini adalah pintasan untuk fitur Kekunci-Kekunci Lekat, yang mungkin " "mempengaruhi fungsi papan kekunci anda." #: js/ui/kbdA11yDialog.js:46 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" "Anda baru sahaja menekan dua kekunci sekaligus, atau menekan kekunci Shift " "sebanyak 5 kali berturutan. Tindakan ini mematikan fitur Kekunci-Kekunci " "Lekat, yang mungkin mempengaruhi fungsi papan kekunci anda." #: js/ui/kbdA11yDialog.js:57 msgid "Leave On" msgstr "Biarkan" #: js/ui/kbdA11yDialog.js:57 js/ui/status/bluetooth.js:135 #: js/ui/status/network.js:1285 msgid "Turn On" msgstr "Hidup" #: js/ui/kbdA11yDialog.js:65 js/ui/status/bluetooth.js:135 #: js/ui/status/network.js:131 js/ui/status/network.js:315 #: js/ui/status/network.js:1285 js/ui/status/network.js:1397 #: js/ui/status/nightLight.js:41 js/ui/status/rfkill.js:81 #: js/ui/status/rfkill.js:108 msgid "Turn Off" msgstr "Mati" #: js/ui/kbdA11yDialog.js:65 msgid "Leave Off" msgstr "Tinggalkan" #: js/ui/keyboard.js:207 #| msgid "Date & Time Settings" msgid "Region & Language Settings" msgstr "Tetapan-Tetapan Wilayah & Bahasa" #: js/ui/lookingGlass.js:659 msgid "No extensions installed" msgstr "Tiada sambungan dipasang" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:714 #, javascript-format msgid "%s has not emitted any errors." msgstr "%s tidak menghasilkan apa-apa ralat." #: js/ui/lookingGlass.js:720 msgid "Hide Errors" msgstr "Sembunyikan Ralat" #: js/ui/lookingGlass.js:724 js/ui/lookingGlass.js:789 msgid "Show Errors" msgstr "Tunjukkan Ralat" #: js/ui/lookingGlass.js:733 msgid "Enabled" msgstr "Dibolehkan" #. translators: #. * The device has been disabled #: js/ui/lookingGlass.js:736 subprojects/gvc/gvc-mixer-control.c:1892 msgid "Disabled" msgstr "Dilumpuhkan" #: js/ui/lookingGlass.js:738 msgid "Error" msgstr "Ralat" #: js/ui/lookingGlass.js:740 msgid "Out of date" msgstr "Lapuk" #: js/ui/lookingGlass.js:742 msgid "Downloading" msgstr "Memuat turun" #: js/ui/lookingGlass.js:771 msgid "View Source" msgstr "Lihat Sumber" #: js/ui/lookingGlass.js:780 msgid "Web Page" msgstr "Halaman Sesawang" #: js/ui/main.js:267 msgid "Logged in as a privileged user" msgstr "Mendaftar masuk sebagai seorang pengguna istimewa" #: js/ui/main.js:268 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" "Menjalankan satu sesi sebagai seorang pengguna istimewa perlu dihindari atas " "sebab keselamatan. Jika boleh, anda patut mendaftar masuk sebagai seorang " "pengguna biasa." #: js/ui/main.js:274 msgid "Screen Lock disabled" msgstr "Kunci Skrin dilumpuhkan" #: js/ui/main.js:275 msgid "Screen Locking requires the GNOME display manager." msgstr "Penguncian skrin memerlukan pengurus paparan GNOME." #: js/ui/messageTray.js:1552 msgid "System Information" msgstr "Maklumat Sistem" #: js/ui/mpris.js:199 #| msgid "Unknown reason" msgid "Unknown artist" msgstr "Artis tidak diketahui" #: js/ui/mpris.js:209 #| msgctxt "program" #| msgid "Unknown" msgid "Unknown title" msgstr "Tajuk tidak diketahui" #: js/ui/overview.js:73 msgid "Undo" msgstr "Buat asal" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:86 msgid "Overview" msgstr "Selayang Pandang" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overview.js:107 msgid "Type to search…" msgstr "Taip untuk gelintar…" #: js/ui/padOsd.js:95 msgid "New shortcut…" msgstr "Pintasan baharu…" #: js/ui/padOsd.js:142 #| msgid "Applications" msgid "Application defined" msgstr "Aplikasi ditakrifkan" #: js/ui/padOsd.js:143 msgid "Show on-screen help" msgstr "Tunjuk bantuan atas-skrin" #: js/ui/padOsd.js:144 #| msgid "Switch User" msgid "Switch monitor" msgstr "Tukar monitor" #: js/ui/padOsd.js:145 msgid "Assign keystroke" msgstr "Umpuk ketukan kekunci" #: js/ui/padOsd.js:211 msgid "Done" msgstr "Selesai" #: js/ui/padOsd.js:747 msgid "Edit…" msgstr "Sunting…" #: js/ui/padOsd.js:789 js/ui/padOsd.js:912 msgid "None" msgstr "Tiada" #: js/ui/padOsd.js:865 msgid "Press a button to configure" msgstr "Tekan satu butang untuk dikonfigurkan" #: js/ui/padOsd.js:866 msgid "Press Esc to exit" msgstr "Tekan Esc untuk keluar" #: js/ui/padOsd.js:869 msgid "Press any key to exit" msgstr "Tekan mana-mana kekunci untuk keluar" #: js/ui/panel.js:109 msgid "Quit" msgstr "Keluar" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:434 msgid "Activities" msgstr "Aktiviti-Aktiviti" #: js/ui/panel.js:707 #| msgid "System" msgctxt "System menu in the top bar" msgid "System" msgstr "Sistem" #: js/ui/panel.js:820 msgid "Top Bar" msgstr "Palang Atas" #: js/ui/runDialog.js:58 msgid "Enter a Command" msgstr "Masukkan satu Perintah" #: js/ui/runDialog.js:97 js/ui/windowMenu.js:167 msgid "Close" msgstr "Tutup" #: js/ui/runDialog.js:259 #| msgid "Encryption is not available" msgid "Restart is not available on Wayland" msgstr "Mula Semula tidak tersedia dalam Wayland" #: js/ui/runDialog.js:264 msgid "Restarting…" msgstr "Memulakan semula…" #. Translators: This is a time format for a date in #. long format #: js/ui/screenShield.js:82 msgid "%A, %B %d" msgstr "%A, %B %d" #: js/ui/screenShield.js:139 #, javascript-format msgid "%d new message" msgid_plural "%d new messages" msgstr[0] "%d mesej baharu" msgstr[1] "%d mesej baharu" #: js/ui/screenShield.js:141 #, javascript-format msgid "%d new notification" msgid_plural "%d new notifications" msgstr[0] "%d pemberitahuan baharu" msgstr[1] "%d pemberitahuan baharu" #: js/ui/screenShield.js:454 js/ui/status/system.js:93 msgid "Lock" msgstr "Kunci" #: js/ui/screenShield.js:717 msgid "GNOME needs to lock the screen" msgstr "GNOME perlu mengunci skrin ini" #. We could not become modal, so we can't activate the #. screenshield. The user is probably very upset at this #. point, but any application using global grabs is broken #. Just tell him to stop using this app #. #. XXX: another option is to kick the user into the gdm login #. screen, where we're not affected by grabs #: js/ui/screenShield.js:830 js/ui/screenShield.js:1301 msgid "Unable to lock" msgstr "Gagal dikuncikan" #: js/ui/screenShield.js:831 js/ui/screenShield.js:1302 msgid "Lock was blocked by an application" msgstr "Kunci disekat oleh suatu aplikasi" #: js/ui/search.js:694 msgid "Searching…" msgstr "Menggelintar…" #: js/ui/search.js:696 msgid "No results." msgstr "Tiada padanan." #: js/ui/search.js:822 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "%d lagi" msgstr[1] "%d lagi" #: js/ui/shellEntry.js:20 msgid "Copy" msgstr "Salin" #: js/ui/shellEntry.js:25 msgid "Paste" msgstr "Tampal" #: js/ui/shellEntry.js:73 msgid "Show Text" msgstr "Tunjuk Teks" #: js/ui/shellEntry.js:75 msgid "Hide Text" msgstr "Sembunyikan Teks" #: js/ui/shellEntry.js:162 msgid "Caps lock is on." msgstr "Caps lock hidup." #: js/ui/shellMountOperation.js:305 #| msgid "Volume" msgid "Hidden Volume" msgstr "Volum Tersembunyi" #: js/ui/shellMountOperation.js:308 msgid "Windows System Volume" msgstr "Volum Sistem Tetingkap" #: js/ui/shellMountOperation.js:311 #| msgid "Mouse Keys" msgid "Uses Keyfiles" msgstr "Guna Fail Kunci" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:317 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead." msgstr "" "Untuk menyahkunci volum yang menggunakan fail kunci, gunakan utiliti %s sebagai ganti." #: js/ui/shellMountOperation.js:324 msgid "PIM Number" msgstr "Nombor PIM" #: js/ui/shellMountOperation.js:343 msgid "The PIM must be a number or empty." msgstr "PIM mestilah nombor atau dikosongkan." #: js/ui/shellMountOperation.js:354 msgid "Password" msgstr "Kata laluan" #: js/ui/shellMountOperation.js:390 msgid "Remember Password" msgstr "Ingat Kata Laluan" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:414 #, javascript-format #| msgid "Open with %s" msgid "Open %s" msgstr "Buka %s" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:486 #, javascript-format msgid "Unable to start %s" msgstr "Gagal memulakan %s" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:488 #, javascript-format msgid "Couldn’t find the %s application" msgstr "Tidak dapat mencari aplikasi %s" #: js/ui/status/accessibility.js:35 msgid "Accessibility" msgstr "Kebolehcapaian" #: js/ui/status/accessibility.js:50 msgid "Zoom" msgstr "Zum" #: js/ui/status/accessibility.js:57 msgid "Screen Reader" msgstr "Pembaca Skrin" #: js/ui/status/accessibility.js:61 msgid "Screen Keyboard" msgstr "Papan Kekunci Skrin" #: js/ui/status/accessibility.js:65 msgid "Visual Alerts" msgstr "Amaran Visual" #: js/ui/status/accessibility.js:68 msgid "Sticky Keys" msgstr "Kekunci Sticky" #: js/ui/status/accessibility.js:71 msgid "Slow Keys" msgstr "Kekunci Lembab" # Kekunci untuk OKU yang tangan bergetar. #: js/ui/status/accessibility.js:74 msgid "Bounce Keys" msgstr "Kekunci Lantun" #: js/ui/status/accessibility.js:77 msgid "Mouse Keys" msgstr "Kekunci Tetikus" # contrast boleh juga diterjemah "beza jelas", tapi "senjang" (/sénjang/) dipilih kerana lebih pendek. #: js/ui/status/accessibility.js:136 msgid "High Contrast" msgstr "Beza Jelas Tinggi" #: js/ui/status/accessibility.js:178 msgid "Large Text" msgstr "Teks Besar" #: js/ui/status/bluetooth.js:40 msgid "Bluetooth" msgstr "Bluetooth" #: js/ui/status/bluetooth.js:49 js/ui/status/network.js:590 msgid "Bluetooth Settings" msgstr "Tetapan Bluetooth" #. Translators: this is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:129 #, javascript-format #| msgid "Connected" msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d Bersambung" msgstr[1] "%d Bersambung" #: js/ui/status/bluetooth.js:131 msgid "Off" msgstr "Mati" #: js/ui/status/bluetooth.js:133 msgid "On" msgstr "Hidup" #: js/ui/status/brightness.js:39 msgid "Brightness" msgstr "Kecerahan" #: js/ui/status/dwellClick.js:13 msgid "Single Click" msgstr "Seklik" #: js/ui/status/dwellClick.js:18 msgid "Double Click" msgstr "Dwi-Klik" #: js/ui/status/dwellClick.js:23 msgid "Drag" msgstr "Seret" #: js/ui/status/dwellClick.js:28 msgid "Secondary Click" msgstr "Klik Sekunder" #: js/ui/status/dwellClick.js:37 msgid "Dwell Click" msgstr "Klik Inap" #: js/ui/status/keyboard.js:825 msgid "Keyboard" msgstr "Papan kekunci" #: js/ui/status/keyboard.js:847 msgid "Show Keyboard Layout" msgstr "Tunjuk Susun Atur Papan Kekunci" #: js/ui/status/location.js:65 js/ui/status/location.js:174 #| msgid "Location" msgid "Location Enabled" msgstr "Lokasi Dibenarkan" #: js/ui/status/location.js:66 js/ui/status/location.js:175 msgid "Disable" msgstr "Lumpuhkan" #: js/ui/status/location.js:67 msgid "Privacy Settings" msgstr "Tetapan Kerahsiaan" #: js/ui/status/location.js:173 #| msgid "Location" msgid "Location In Use" msgstr "Lokasi Digunakan" #: js/ui/status/location.js:177 #| msgid "Connection failed" msgid "Location Disabled" msgstr "Lokasi Dilumpuhkan" #: js/ui/status/location.js:178 msgid "Enable" msgstr "Benarkan" #. Translators: %s is an application name #: js/ui/status/location.js:355 #, javascript-format msgid "Give %s access to your location?" msgstr "Berikan %s capaian ke lokasi anda?" #: js/ui/status/location.js:361 msgid "Location access can be changed at any time from the privacy settings." msgstr "" "Capaian lokasi boleh diubah pada bila-bila masa melalui tetapan kerahsiaan." #: js/ui/status/network.js:66 msgid "" msgstr "" #. Translators: %s is a network identifier #: js/ui/status/network.js:420 js/ui/status/network.js:1314 #, javascript-format msgid "%s Off" msgstr "%s Mati" #. Translators: %s is a network identifier #: js/ui/status/network.js:423 #, javascript-format #| msgid "Connected" msgid "%s Connected" msgstr "%s Bersambung" #. Translators: this is for network devices that are physically present but are not #. under NetworkManager's control (and thus cannot be used in the menu); #. %s is a network identifier #: js/ui/status/network.js:428 #, javascript-format #| msgid "Unmanaged" msgid "%s Unmanaged" msgstr "%s Tidak Diurus" #. Translators: %s is a network identifier #: js/ui/status/network.js:431 #, javascript-format #| msgid "Disconnecting" msgid "%s Disconnecting" msgstr "%s Terputus" #. Translators: %s is a network identifier #: js/ui/status/network.js:438 js/ui/status/network.js:1306 #, javascript-format #| msgid "Connecting" msgid "%s Connecting" msgstr "%s Menyambung" #. Translators: this is for network connections that require some kind of key or password; %s is a network identifier #: js/ui/status/network.js:441 #, javascript-format #| msgid "Wired 802.1X authentication" msgid "%s Requires Authentication" msgstr "%s Memerlukan Pengesahihan" #. Translators: this is for devices that require some kind of firmware or kernel #. module, which is missing; %s is a network identifier #: js/ui/status/network.js:449 #, javascript-format #| msgid "Firmware missing" msgid "Firmware Missing For %s" msgstr "Perisian Tegar Untuk %s Hilang" #. Translators: this is for a network device that cannot be activated (for example it #. is disabled by rfkill, or it has no coverage; %s is a network identifier #: js/ui/status/network.js:453 #, javascript-format #| msgid "Unavailable" msgid "%s Unavailable" msgstr "%s Tidak Tersedia" #. Translators: %s is a network identifier #: js/ui/status/network.js:456 #, javascript-format #| msgid "Connection failed" msgid "%s Connection Failed" msgstr "%s Sambungan Mengalami Kegagalan" #: js/ui/status/network.js:468 msgid "Wired Settings" msgstr "Tetapan Berwayar" #: js/ui/status/network.js:511 msgid "Mobile Broadband Settings" msgstr "Tetapan Jalur Lebar Mudah Alih" #. Translators: %s is a network identifier #: js/ui/status/network.js:558 js/ui/status/network.js:1311 #, javascript-format #| msgid "Hardware Disabled" msgid "%s Hardware Disabled" msgstr "%s Perkakasan Dilumpuhkan" #. Translators: this is for a network device that cannot be activated #. because it's disabled by rfkill (airplane mode); %s is a network identifier #: js/ui/status/network.js:562 #, javascript-format #| msgid "Disabled" msgid "%s Disabled" msgstr "%s Dilumpuhkan" #: js/ui/status/network.js:602 msgid "Connect to Internet" msgstr "Sambung ke Internet" #: js/ui/status/network.js:805 msgid "Airplane Mode is On" msgstr "Mod Kapal Terbang Hidup" #: js/ui/status/network.js:806 msgid "Wi-Fi is disabled when airplane mode is on." msgstr "Wi-Fi dilumpuhkan ketika mod kapal terbang hidup." #: js/ui/status/network.js:807 msgid "Turn Off Airplane Mode" msgstr "Matikan Mod Kapal Terbang" #: js/ui/status/network.js:816 msgid "Wi-Fi is Off" msgstr "Wi-Fi Mati" #: js/ui/status/network.js:817 msgid "Wi-Fi needs to be turned on in order to connect to a network." msgstr "Wi-Fi perlu dihidupkan supaya dapat bersambung dengan rangkaian." #: js/ui/status/network.js:818 msgid "Turn On Wi-Fi" msgstr "Hidupkan Wi-Fi" #: js/ui/status/network.js:843 msgid "Wi-Fi Networks" msgstr "Rangkaian-Rangkaian Wi-Fi" #: js/ui/status/network.js:845 msgid "Select a network" msgstr "Pilih satu rangkaian" #: js/ui/status/network.js:877 msgid "No Networks" msgstr "Tiada Rangkaian" #: js/ui/status/network.js:898 js/ui/status/rfkill.js:106 msgid "Use hardware switch to turn off" msgstr "Guna suis perkakasan untuk dimatikan" #: js/ui/status/network.js:1175 msgid "Select Network" msgstr "Pilih Rangkaian" #: js/ui/status/network.js:1181 msgid "Wi-Fi Settings" msgstr "Tetapan Wi-Fi" #. Translators: %s is a network identifier #: js/ui/status/network.js:1302 #, javascript-format msgid "%s Hotspot Active" msgstr "Kawasan Khas %s Aktif" #. Translators: %s is a network identifier #: js/ui/status/network.js:1317 #, javascript-format #| msgid "Not Connected" msgid "%s Not Connected" msgstr "%s Tidak Bersambung" #: js/ui/status/network.js:1414 #| msgid "Connecting" msgid "connecting…" msgstr "menyambung…" #. Translators: this is for network connections that require some kind of key or password #: js/ui/status/network.js:1417 msgid "authentication required" msgstr "pengesahihan diperlukan" #: js/ui/status/network.js:1419 msgid "connection failed" msgstr "sambungan gagal" #: js/ui/status/network.js:1470 msgid "VPN Settings" msgstr "Tetapan VPN" #: js/ui/status/network.js:1487 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1497 #| msgid "Power Off" msgid "VPN Off" msgstr "VPN Mati" #: js/ui/status/network.js:1558 js/ui/status/rfkill.js:84 msgid "Network Settings" msgstr "Tetapan-tetapan Rangkaian" #: js/ui/status/network.js:1587 #, javascript-format #| msgid "Connecting" msgid "%s Wired Connection" msgid_plural "%s Wired Connections" msgstr[0] "%s Sambungan Berwayar" msgstr[1] "%s Sambungan Berwayar" #: js/ui/status/network.js:1591 #, javascript-format #| msgid "Connecting" msgid "%s Wi-Fi Connection" msgid_plural "%s Wi-Fi Connections" msgstr[0] "%s Sambungan Wi-Fi" msgstr[1] "%s Sambungan Wi-Fi" #: js/ui/status/network.js:1595 #, javascript-format #| msgid "Connecting" msgid "%s Modem Connection" msgid_plural "%s Modem Connections" msgstr[0] "%s Sambungan Modem" msgstr[1] "%s Sambungan Modem" #: js/ui/status/network.js:1729 msgid "Connection failed" msgstr "Gagal menyambung" #: js/ui/status/network.js:1730 msgid "Activation of network connection failed" msgstr "Pengaktifan sambungan rangkaian gagal" #: js/ui/status/nightLight.js:63 msgid "Night Light Disabled" msgstr "Cahaya Malam Dilumpuhkan" #: js/ui/status/nightLight.js:64 msgid "Night Light On" msgstr "Cahaya Malam Hidup" #: js/ui/status/nightLight.js:66 msgid "Resume" msgstr "Sambung Semula" #: js/ui/status/nightLight.js:67 msgid "Disable Until Tomorrow" msgstr "Dilumpuhkan Sehingga Hari Esok" #: js/ui/status/power.js:47 msgid "Power Settings" msgstr "Tetapan Kuasa" #: js/ui/status/power.js:63 msgid "Fully Charged" msgstr "Sepenuhnya Dicas" #: js/ui/status/power.js:69 msgid "Not Charging" msgstr "Tidak Dicas" #. 0 is reported when UPower does not have enough data #. to estimate battery life #: js/ui/status/power.js:72 js/ui/status/power.js:78 msgid "Estimating…" msgstr "Menganggarkan…" #. Translators: this is : Remaining () #: js/ui/status/power.js:86 #, javascript-format msgid "%d∶%02d Remaining (%d %%)" msgstr "%d∶%02d Berbaki (%d %%)" #. Translators: this is : Until Full () #: js/ui/status/power.js:91 #, javascript-format msgid "%d∶%02d Until Full (%d %%)" msgstr "%d∶%02d Sehingga Penuh (%d %%)" #: js/ui/status/power.js:139 js/ui/status/power.js:141 #, javascript-format msgid "%d %%" msgstr "%d %%" #: js/ui/status/remoteAccess.js:44 msgid "Screen is Being Shared" msgstr "Skrin telah Dikongsikan" #: js/ui/status/remoteAccess.js:46 msgid "Turn off" msgstr "Matikan" #. The menu only appears when airplane mode is on, so just #. statically build it as if it was on, rather than dynamically #. changing the menu contents. #: js/ui/status/rfkill.js:79 msgid "Airplane Mode On" msgstr "Mod Kapal Terbang hidup" #: js/ui/status/system.js:57 msgid "Lock Screen Rotation" msgstr "Kunci Putaran Skrin" #: js/ui/status/system.js:106 #| msgid "Power Off" msgid "Power Off / Log Out" msgstr "Matikan / Daftar Keluar" #: js/ui/status/system.js:109 msgid "Log Out" msgstr "Daftar Keluar" #: js/ui/status/system.js:121 #| msgid "Switch User" msgid "Switch User…" msgstr "Tukar Pengguna…" #: js/ui/status/system.js:135 msgid "Suspend" msgstr "Tangguh" #: js/ui/status/system.js:147 #| msgid "Power Off" msgid "Power Off…" msgstr "Matikan…" #: js/ui/status/thunderbolt.js:263 msgid "Thunderbolt" msgstr "Thunderbolt" #: js/ui/status/thunderbolt.js:324 msgid "Unknown Thunderbolt device" msgstr "Peranti Thunderbolt tidak diketahui" #: js/ui/status/thunderbolt.js:325 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" "Peranti baharu telah dikesan ketika anda tiada. Sila putuskan dan sambung " "semula peranti tersebut untuk mula menggunakannya." #: js/ui/status/thunderbolt.js:328 msgid "Unauthorized Thunderbolt device" msgstr "Peranti Thunderbolt tidak diizinkan" #: js/ui/status/thunderbolt.js:329 msgid "" "New device has been detected and needs to be authorized by an administrator." msgstr "" "Peranti baharu telah dikesan dan perlu mendapat keizinan oleh pentadbir." #: js/ui/status/thunderbolt.js:335 msgid "Thunderbolt authorization error" msgstr "Ralat keizinan Thunderbolt" #: js/ui/status/thunderbolt.js:336 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "Tidak dapat izinkan peranti Thunderbolt: %s" #: js/ui/status/volume.js:150 msgid "Volume changed" msgstr "Tetapan bunyi diubah" #: js/ui/status/volume.js:221 msgid "Volume" msgstr "Volum" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:17 #| msgid "Error" msgid "Mirror" msgstr "Cermin" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:22 msgid "Join Displays" msgstr "Paparan Tergabung" #. Translators: this is for using only an external display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:27 msgid "External Only" msgstr "Luaran Sahaja" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:32 msgid "Built-in Only" msgstr "Terbina-dalam Sahaja" #: js/ui/unlockDialog.js:52 msgid "Log in as another user" msgstr "Daftar masuk sebagai pengguna lain" #: js/ui/unlockDialog.js:67 msgid "Unlock Window" msgstr "Buka Tetingkap" #: js/ui/viewSelector.js:181 msgid "Applications" msgstr "Aplikasi" #: js/ui/viewSelector.js:185 msgid "Search" msgstr "Gelintar" #: js/ui/windowAttentionHandler.js:20 #, javascript-format msgid "“%s” is ready" msgstr "“%s” telah sedia" #: js/ui/windowManager.js:54 msgid "Do you want to keep these display settings?" msgstr "Anda mahu kekalkan tetapan-tetapan paparan ini?" #. Translators: this and the following message should be limited in length, #. to avoid ellipsizing the labels. #. #: js/ui/windowManager.js:68 msgid "Revert Settings" msgstr "Kembali Ke Tetapan Asal" #: js/ui/windowManager.js:71 msgid "Keep Changes" msgstr "Kekalkan Perubahan" #: js/ui/windowManager.js:89 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "Perubahan tetapan akan dikembalikan dalam tempoh %d saat" msgstr[1] "Perubahan tetapan akan dikembalikan dalam tempoh %d saat" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:546 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:27 msgid "Minimize" msgstr "Minimum" #: js/ui/windowMenu.js:34 msgid "Unmaximize" msgstr "Nyahmaksimum" #: js/ui/windowMenu.js:38 msgid "Maximize" msgstr "Maksimum" #: js/ui/windowMenu.js:45 msgid "Move" msgstr "Alih" #: js/ui/windowMenu.js:51 msgid "Resize" msgstr "Saiz Semula" #: js/ui/windowMenu.js:58 msgid "Move Titlebar Onscreen" msgstr "Alih Palang Tajuk Atas-Skrin" #: js/ui/windowMenu.js:63 msgid "Always on Top" msgstr "Sentiasa di Atas" #: js/ui/windowMenu.js:82 msgid "Always on Visible Workspace" msgstr "Sentiasa pada Ruang Kerja Tampak" #: js/ui/windowMenu.js:96 #| msgid "Move to Workspace Up" msgid "Move to Workspace Left" msgstr "Alih ke Ruang Kerja Kiri" #: js/ui/windowMenu.js:102 #| msgid "Move to Workspace Up" msgid "Move to Workspace Right" msgstr "Alih ke Ruang Kerja Kanan" #: js/ui/windowMenu.js:108 msgid "Move to Workspace Up" msgstr "Pindah ke Ruangkerja Atas" #: js/ui/windowMenu.js:114 msgid "Move to Workspace Down" msgstr "Pindah ke Ruangkerja Bawah" #: js/ui/windowMenu.js:132 #| msgid "Move to Workspace Up" msgid "Move to Monitor Up" msgstr "Alih ke Monitor Atas" #: js/ui/windowMenu.js:141 #| msgid "Move to Workspace Down" msgid "Move to Monitor Down" msgstr "Alih ke Monitor Bawah" #: js/ui/windowMenu.js:150 msgid "Move to Monitor Left" msgstr "Alih ke Monitor Kiri" #: js/ui/windowMenu.js:159 msgid "Move to Monitor Right" msgstr "Alih ke Monitor Kanan" #: src/calendar-server/evolution-calendar.desktop.in:3 msgid "Evolution Calendar" msgstr "Kalendar Evolution" #: src/main.c:460 subprojects/extensions-tool/src/main.c:249 msgid "Print version" msgstr "Cetak versi" #: src/main.c:466 msgid "Mode used by GDM for login screen" msgstr "Mod yang digunakan oleh GDM untuk skrin daftar masuk" #: src/main.c:472 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "Guna satu mod khusus, cth. \"gdm\" untuk skrin daftar masuk" #: src/main.c:478 msgid "List possible modes" msgstr "Senarai mod yang mungkin" #: src/shell-app.c:279 msgctxt "program" msgid "Unknown" msgstr "Tidak diketahui" #: src/shell-app.c:530 #, c-format msgid "Failed to launch “%s”" msgstr "Gagal melancarkan “%s”" #: src/shell-keyring-prompt.c:731 msgid "Passwords do not match." msgstr "Kata laluan tidak sepadan." #: src/shell-keyring-prompt.c:739 msgid "Password cannot be blank" msgstr "Kata laluan tidak boleh kosong" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "Dialog pengesahihan telah digugurkan oleh pengguna" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:125 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "Sambungan baharu berjaya dicipta dalam %s.\n" #: subprojects/extensions-tool/src/command-create.c:194 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" "Nama mestilah rentetan yang sangat pendek (jelas).\n" "Contohnya: %s" #: subprojects/extensions-tool/src/command-create.c:197 #: subprojects/extensions-tool/src/main.c:170 msgid "Name" msgstr "Nama" #: subprojects/extensions-tool/src/command-create.c:208 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" "Keterangan ialah penjelasan satu ayat berkenaan sambungan tersebut.\n" "Contohnya: %s" #: subprojects/extensions-tool/src/command-create.c:211 #: subprojects/extensions-tool/src/main.c:173 msgid "Description" msgstr "Keterangan" #: subprojects/extensions-tool/src/command-create.c:222 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" "UUID merupakan pengecam unik-sejagat untuk sambungan anda.\n" "Ia seharusnya dalam format alamat emel (clicktofocus@janedoe.example.com)\n" #: subprojects/extensions-tool/src/command-create.c:244 msgid "The unique identifier of the new extension" msgstr "Pengecam unik bagi sambungan baharu" #: subprojects/extensions-tool/src/command-create.c:247 msgid "NAME" msgstr "NAMA" #: subprojects/extensions-tool/src/command-create.c:248 msgid "The user-visible name of the new extension" msgstr "Nama tampak-oleh-pengguna bagi sambungan baharu" #: subprojects/extensions-tool/src/command-create.c:250 msgid "DESCRIPTION" msgstr "DESCRIPTION" #: subprojects/extensions-tool/src/command-create.c:252 msgid "A short description of what the extension does" msgstr "Satu keterangan pendek apakah fungsi sambungan tersebut" #: subprojects/extensions-tool/src/command-create.c:255 msgid "Enter extension information interactively" msgstr "Masukkan maklumat sambungan secara interaktif" #: subprojects/extensions-tool/src/command-create.c:263 msgid "Create a new extension" msgstr "Cipta satu sambungan baharu" #: subprojects/extensions-tool/src/command-create.c:280 #: subprojects/extensions-tool/src/command-list.c:158 #| msgid "Unknown reason" msgid "Unknown arguments" msgstr "Argumen tidak diketahui" #: subprojects/extensions-tool/src/command-create.c:289 msgid "UUID, name and description are required" msgstr "UUID, nama dan keterangan diperlukan" #: subprojects/extensions-tool/src/command-disable.c:57 msgid "Disable an extension" msgstr "Lumpuhkan satu sambungan" #: subprojects/extensions-tool/src/command-disable.c:74 #: subprojects/extensions-tool/src/command-enable.c:74 #: subprojects/extensions-tool/src/command-info.c:96 #: subprojects/extensions-tool/src/command-prefs.c:107 #: subprojects/extensions-tool/src/command-reset.c:74 #: subprojects/extensions-tool/src/command-uninstall.c:89 msgid "No UUID given" msgstr "Tiada UUID diberi" #: subprojects/extensions-tool/src/command-disable.c:79 #: subprojects/extensions-tool/src/command-enable.c:79 #: subprojects/extensions-tool/src/command-info.c:101 #: subprojects/extensions-tool/src/command-prefs.c:112 #: subprojects/extensions-tool/src/command-reset.c:79 #: subprojects/extensions-tool/src/command-uninstall.c:94 msgid "More than one UUID given" msgstr "Lebih daripada satu UUID diberi" #: subprojects/extensions-tool/src/command-enable.c:57 msgid "Enable an extension" msgstr "Benarkan satu sambungan" #: subprojects/extensions-tool/src/command-info.c:79 #| msgid "No extensions installed" msgid "Show extensions info" msgstr "Tunjuk maklumat sambungan" #: subprojects/extensions-tool/src/command-install.c:173 msgid "Overwrite an existing extension" msgstr "Tulis-ganti satu sambungan sedia ada" #: subprojects/extensions-tool/src/command-install.c:175 msgid "EXTENSION_BUNDLE" msgstr "BERKAS_SAMBUNGAN" #: subprojects/extensions-tool/src/command-install.c:184 #| msgid "UUIDs of extensions to enable" msgid "Install an extension bundle" msgstr "Pasang satu berkas sambungan" #: subprojects/extensions-tool/src/command-install.c:201 #| msgid "No extensions installed" msgid "No extension bundle specified" msgstr "Tiada berkas sambungan dinyatakan" #: subprojects/extensions-tool/src/command-install.c:207 msgid "More than one extension bundle specified" msgstr "Lebih daripada satu berkas sambungan dinyatakan" #: subprojects/extensions-tool/src/command-list.c:118 msgid "Show user-installed extensions" msgstr "Tunjuk sambungan dipasang-pengguna" #: subprojects/extensions-tool/src/command-list.c:121 msgid "Show system-installed extensions" msgstr "Tunjuk sambungan dipasang-sistem" #: subprojects/extensions-tool/src/command-list.c:124 #| msgid "GNOME Shell Extensions" msgid "Show enabled extensions" msgstr "Tunjuk sambungan dibenarkan" #: subprojects/extensions-tool/src/command-list.c:127 msgid "Show disabled extensions" msgstr "Tunjuk sambungan dilumpuhkan" #: subprojects/extensions-tool/src/command-list.c:130 msgid "Show extensions with preferences" msgstr "Tunjuk sambungan dengan keutamaan" #: subprojects/extensions-tool/src/command-list.c:133 #| msgid "Print version" msgid "Print extension details" msgstr "Cetak perincian sambungan" #: subprojects/extensions-tool/src/command-list.c:141 msgid "List installed extensions" msgstr "Senarai sambungan terpasang" #: subprojects/extensions-tool/src/command-pack.c:450 msgid "FILE" msgstr "FAIL" #: subprojects/extensions-tool/src/command-pack.c:451 msgid "Additional source to include in the bundle" msgstr "Sumber tambahan yang disertakan di dalam berkas" #: subprojects/extensions-tool/src/command-pack.c:454 msgid "SCHEMA" msgstr "SKEMA" #: subprojects/extensions-tool/src/command-pack.c:455 msgid "A GSettings schema that should be included" msgstr "Skema GSetting yang patut disertakan" #: subprojects/extensions-tool/src/command-pack.c:457 #: subprojects/extensions-tool/src/command-pack.c:468 msgid "DIRECTORY" msgstr "DIREKTORI" #: subprojects/extensions-tool/src/command-pack.c:459 msgid "The directory where translations are found" msgstr "Direktori yang mana fail-fail terjemahan diletakkan" #: subprojects/extensions-tool/src/command-pack.c:461 msgid "DOMAIN" msgstr "DOMAIN" #: subprojects/extensions-tool/src/command-pack.c:463 msgid "The gettext domain to use for translations" msgstr "Domain gettext yang digunakan untuk terjemahan" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "Overwrite an existing pack" msgstr "Tulis-ganti pek sedia ada" #: subprojects/extensions-tool/src/command-pack.c:470 msgid "The directory where the pack should be created" msgstr "Direktori yang mana pek patut dicipta" #: subprojects/extensions-tool/src/command-pack.c:472 msgid "SOURCE_DIRECTORY" msgstr "DIREKTORI_SUMBER" #: subprojects/extensions-tool/src/command-pack.c:481 msgid "Create an extension bundle" msgstr "Cipta satu berkas sambungan" #: subprojects/extensions-tool/src/command-pack.c:500 msgid "More than one source directory specified" msgstr "Lebih daripada satu direktori sumber dinyatakan" #: subprojects/extensions-tool/src/command-prefs.c:90 msgid "Opens extension preferences" msgstr "Buka keutamaan sambungan" #: subprojects/extensions-tool/src/command-reset.c:57 msgid "Reset an extension" msgstr "Tetap semula satu sambungan" #: subprojects/extensions-tool/src/command-uninstall.c:72 msgid "Uninstall an extension" msgstr "Nyahpasang satu sambungan" #: subprojects/extensions-tool/src/main.c:176 msgid "Path" msgstr "Laluan" #: subprojects/extensions-tool/src/main.c:179 msgid "URL" msgstr "URL" #: subprojects/extensions-tool/src/main.c:182 msgid "Original author" msgstr "Pengarang asal" #: subprojects/extensions-tool/src/main.c:185 #| msgid "Print version" msgid "Version" msgstr "Versi" #: subprojects/extensions-tool/src/main.c:188 msgid "State" msgstr "Negeri" #: subprojects/extensions-tool/src/main.c:222 msgid "“version” takes no arguments" msgstr "\"version\" tidak mengambil argumen" #: subprojects/extensions-tool/src/main.c:224 #: subprojects/extensions-tool/src/main.c:244 msgid "Usage:" msgstr "Penggunaan:" #: subprojects/extensions-tool/src/main.c:227 msgid "Print version information and exit." msgstr "Cetak maklumat versi kemudian keluar." #: subprojects/extensions-tool/src/main.c:242 #: subprojects/extensions-tool/src/main.c:245 msgid "COMMAND" msgstr "PERINTAH" #: subprojects/extensions-tool/src/main.c:245 msgid "[ARGS…]" msgstr "[ARGS…]" #: subprojects/extensions-tool/src/main.c:247 msgid "Commands:" msgstr "Perintah:" #: subprojects/extensions-tool/src/main.c:248 #| msgid "Print version" msgid "Print help" msgstr "Cetak bantuan" #: subprojects/extensions-tool/src/main.c:250 msgid "Enable extension" msgstr "Benarkan sambungan" #: subprojects/extensions-tool/src/main.c:251 msgid "Disable extension" msgstr "Lumpuhkan sambungan" #: subprojects/extensions-tool/src/main.c:252 msgid "Reset extension" msgstr "Tetap semula sambungan" #: subprojects/extensions-tool/src/main.c:253 msgid "Uninstall extension" msgstr "Nyahpasang sambungan" #: subprojects/extensions-tool/src/main.c:254 msgid "List extensions" msgstr "Senarai sambungan" #: subprojects/extensions-tool/src/main.c:255 #: subprojects/extensions-tool/src/main.c:256 #| msgid "No extensions installed" msgid "Show extension info" msgstr "Tunjuk maklumat sambungan" #: subprojects/extensions-tool/src/main.c:257 msgid "Open extension preferences" msgstr "Buka keutamaan sambungan" #: subprojects/extensions-tool/src/main.c:258 msgid "Create extension" msgstr "Cipta sambungan" #: subprojects/extensions-tool/src/main.c:259 msgid "Package extension" msgstr "Pakej sambungan" #: subprojects/extensions-tool/src/main.c:260 #| msgid "UUIDs of extensions to enable" msgid "Install extension bundle" msgstr "Pasang berkas sambungan" #: subprojects/extensions-tool/src/main.c:262 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "Guna \"%s\" untuk dapatkan bantuan terperinci.\n" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1899 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u Output" msgstr[1] "%u Output" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1909 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u Input" msgstr[1] "%u Input" #: subprojects/gvc/gvc-mixer-control.c:2766 msgid "System Sounds" msgstr "Bunyi Sistem" #~ msgid "Show the message tray" #~ msgstr "Tunjukkan talam mesej" #~ msgid "Show the week date in the calendar" #~ msgstr "Tunjuk minggu pada kalendar" #~ msgid "If true, display the ISO week date in the calendar." #~ msgstr "Jika benar, papar tarikh minggu ISO pada kalendar." #~ msgid "Which keyboard to use" #~ msgstr "Pilih papan kekunci" #~ msgid "The type of keyboard to use." #~ msgstr "Jenis papan kekunci untuk digunakan." #~| msgid "Authentication Required" #~ msgid "Web Authentication Redirect" #~ msgstr "Lencongan Pengesahan Web" #~ msgctxt "list sunday" #~ msgid "Su" #~ msgstr "A" #~ msgctxt "list monday" #~ msgid "M" #~ msgstr "I" #~ msgctxt "list tuesday" #~ msgid "T" #~ msgstr "Se" #~ msgctxt "list wednesday" #~ msgid "W" #~ msgstr "R" #~ msgctxt "list thursday" #~ msgid "Th" #~ msgstr "K" #~ msgctxt "list friday" #~ msgid "F" #~ msgstr "J" #~ msgctxt "list saturday" #~ msgid "S" #~ msgstr "S" #~ msgid "Nothing Scheduled" #~ msgstr "Jadual Kosong" #~ msgid "Today" #~ msgstr "Hari ini" #~ msgid "Tomorrow" #~ msgstr "Esok" #~ msgid "This week" #~ msgstr "Minggu ini" #~ msgid "Next week" #~ msgstr "Minggu depan" #~| msgid "Reject" #~ msgid "Eject" #~ msgstr "Lentingkan" #~ msgid "Invitation" #~ msgstr "Jemputan" #~ msgid "Call" #~ msgstr "Panggilan" #~ msgid "File Transfer" #~ msgstr "Pemindahan Fail" #~ msgid "Invitation to %s" #~ msgstr "Jemputan untuk %s" #~ msgid "%s is inviting you to join %s" #~ msgstr "%s menjemput anda untuk menyertai %s" #~ msgid "Decline" #~ msgstr "Tolak" #~ msgid "Accept" #~ msgstr "Terima" #~ msgid "Video call from %s" #~ msgstr "Panggilan video dari %s" #~ msgid "Call from %s" #~ msgstr "Panggilan dari %s" #~ msgid "Answer" #~ msgstr "Jawapan" #~ msgid "%s is sending you %s" #~ msgstr "%s menghantarkan %s kepada anda" #~ msgid "%s would like permission to see when you are online" #~ msgstr "%s mahukan kebenaran untuk melihat bila anda akan ada di talian" #~ msgid "Authentication failed" #~ msgstr "Pengesahan gagal" #~ msgid "Encryption error" #~ msgstr "Ralat penyulitan" #~ msgid "Certificate not provided" #~ msgstr "Perakuan tidak diberikan" #~ msgid "Certificate untrusted" #~ msgstr "Perakuan tidak dipercayai" #~ msgid "Certificate expired" #~ msgstr "Perakuan habis tempoh" #~ msgid "Certificate not activated" #~ msgstr "Perakuan tidak diaktifkan" #~ msgid "Certificate hostname mismatch" #~ msgstr "Nama hos perakuan tak padan" #~ msgid "Certificate fingerprint mismatch" #~ msgstr "Fingerprint perakuan tak padan" #~ msgid "Certificate self-signed" #~ msgstr "Perakuan didaftar sendiri" #~ msgid "Status is set to offline" #~ msgstr "Status ditetapkan kepada luar talian" #~ msgid "Certificate is invalid" #~ msgstr "Perakuan tak sah" #~ msgid "Connection has been refused" #~ msgstr "Sambungan telah ditolak" #~ msgid "Connection can't be established" #~ msgstr "Sambungan tidak dapat dibuat" #~ msgid "Connection has been lost" #~ msgstr "Sambungan telah terputus" #~| msgid "This resource is already connected to the server" #~ msgid "This account is already connected to the server" #~ msgstr "Akaun ini telah pun disambungkan ke pelayan" #~ msgid "" #~ "Connection has been replaced by a new connection using the same resource" #~ msgstr "" #~ "Sambungan telah digantikan dengan sambungan baru dengan sumber yang sama" #~ msgid "The account already exists on the server" #~ msgstr "Akaun berkenaan telah pun wujud pada pelayan" #~ msgid "Server is currently too busy to handle the connection" #~ msgstr "Pelayan sedang terlalu sibuk untuk mengendalikan sambungan" #~ msgid "Certificate has been revoked" #~ msgstr "Perakuan telah dibatalkan" #~ msgid "" #~ "Certificate uses an insecure cipher algorithm or is cryptographically weak" #~ msgstr "" #~ "Perakuan menggunakan algoritma sifer yang tak selamat atau rapuh dari " #~ "segi kriptografi" #~ msgid "" #~ "The length of the server certificate, or the depth of the server " #~ "certificate chain, exceed the limits imposed by the cryptography library" #~ msgstr "" #~ "Panjang perakuan pelayan, atau kedalaman rantai perakuan pelayan, " #~ "melebihi had yang dikenakan oleh pustaka kriptografi" #~| msgid "Connection error" #~ msgid "Internal error" #~ msgstr "Ralat dalaman" #~| msgid "Edit account" #~ msgid "View account" #~ msgstr "Tunjukkan akaun" #~ msgid "Open Calendar" #~ msgstr "Buka Kalendar" #~ msgid "Open" #~ msgstr "Buka" #~ msgid "Remove" #~ msgstr "Buang" #~| msgid "Notifications" #~ msgid "Notification Settings" #~ msgstr "Tetapan Makluman" #~ msgid "toggle-switch-us" #~ msgstr "toggle-switch-us" #~| msgid "Connected (private)" #~ msgid "%d Connected Device" #~ msgid_plural "%d Connected Devices" #~ msgstr[0] "%d Peranti Tersambung" #~ msgstr[1] "%d Peranti Tersambung" #~| msgid "authentication required" #~ msgid "Authentication required" #~ msgstr "Pengesahan diperlukan" #~ msgid "connecting..." #~ msgstr "menyambung..." #~ msgid "UPS" #~ msgstr "UPS" 07070100000251000081A40000000000000000000000016712993F00017FF1000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/nb.po# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues/\n" "POT-Creation-Date: 2024-08-06 15:18+0000\n" "PO-Revision-Date: 2024-08-24 17:53+0200\n" "Last-Translator: Brage \n" "Language-Team: \n" "Language: nb\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 3.4.4\n" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "Snarveier" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate pinned app 1" msgstr "Åpne hylleapp 1" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate pinned app 2" msgstr "Åpne hylleapp 2" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate pinned app 3" msgstr "Åpne hylleapp 3" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate pinned app 4" msgstr "Åpne hylleapp 4" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate pinned app 5" msgstr "Åpne hylleapp 5" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate pinned app 6" msgstr "Åpne hylleapp 6" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate pinned app 7" msgstr "Åpne hylleapp 7" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate pinned app 8" msgstr "Åpne hylleapp 8" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate pinned app 9" msgstr "Åpne hylleapp 9" #: data/50-gnome-shell-launchers.xml:46 msgid "Open new window of pinned app 1" msgstr "Åpne hylleapp 1 i nytt vindu" #: data/50-gnome-shell-launchers.xml:50 msgid "Open new window of pinned app 2" msgstr "Åpne hylleapp 2 i nytt vindu" #: data/50-gnome-shell-launchers.xml:54 msgid "Open new window of pinned app 3" msgstr "Åpne hylleapp 3 i nytt vindu" #: data/50-gnome-shell-launchers.xml:58 msgid "Open new window of pinned app 4" msgstr "Åpne hylleapp 4 i nytt vindu" #: data/50-gnome-shell-launchers.xml:62 msgid "Open new window of pinned app 5" msgstr "Åpne hylleapp 5 i nytt vindu" #: data/50-gnome-shell-launchers.xml:66 msgid "Open new window of pinned app 6" msgstr "Åpne hylleapp 6 i nytt vindu" #: data/50-gnome-shell-launchers.xml:70 msgid "Open new window of pinned app 7" msgstr "Åpne hylleapp 7 i nytt vindu" #: data/50-gnome-shell-launchers.xml:74 msgid "Open new window of pinned app 8" msgstr "Åpne hylleapp 8 i nytt vindu" #: data/50-gnome-shell-launchers.xml:78 msgid "Open new window of pinned app 9" msgstr "Åpne hylleapp 9 i nytt vindu" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2274 msgid "Screenshots" msgstr "Skjermbilder" #: data/50-gnome-shell-screenshots.xml:9 #: data/org.gnome.shell.gschema.xml.in:287 msgid "Take a screenshot interactively" msgstr "Ta skjermbilde interaktivt" #: data/50-gnome-shell-screenshots.xml:12 #: data/org.gnome.shell.gschema.xml.in:299 msgid "Take a screenshot" msgstr "Ta skjermbilde" #: data/50-gnome-shell-screenshots.xml:15 #: data/org.gnome.shell.gschema.xml.in:295 msgid "Take a screenshot of a window" msgstr "Ta skjermbilde av vindu" #: data/50-gnome-shell-screenshots.xml:18 #: data/org.gnome.shell.gschema.xml.in:291 msgid "Record a screencast interactively" msgstr "Ta skjermopptak interaktivt" #: data/50-gnome-shell-system.xml:6 js/ui/messageTray.js:1298 msgid "System" msgstr "System" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "Vis varslingssenter" #: data/50-gnome-shell-system.xml:12 msgid "Open the quick settings menu" msgstr "Vis kontrollsenter" #: data/50-gnome-shell-system.xml:15 msgid "Focus the active notification" msgstr "Marker aktiv varsling" #: data/50-gnome-shell-system.xml:18 msgid "Show the overview" msgstr "Vis oversikt" #: data/50-gnome-shell-system.xml:21 msgid "Show all apps" msgstr "Vis alle apper" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "GNOME Shell" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "Styr systemet og åpne apper" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "Aktiver utviklingsverktøy med Alt+F2" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Gir tilgang til interne verktøy for feilsøking og observering med Alt+F2-" "vinduet." #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "UUID-er for utvidelser som skal slås på" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "Utvidelser for GNOME Shell har UUID-er. Denne innstillingen bestemmer " "utvidelser som bør lastes inn. Alle utvidelser som ønsker å lastes inn må " "stå i denne listen. Listen kan også endres med D-Bus-metodene " "«EnableExtension» og «DisableExtension» for «org.gnome.Shell»." #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "UUID-er for utvidelser som skal holdes avslåtte" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" "Utvidelser for GNOME Shell har UUID-er. Dette feltet inneholder utvidelser " "som bør slås av, selv hvis de lastes inn. Listen kan også endres med D-Bus-" "metodene «EnableExtension» og «DisableExtension» for «org.gnome.Shell». " "Denne innstillingen vektlegges mer enn «enabled-extensions»." #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "Slå av utvidelser" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" "Slå av alle utvidelser brukeren har slått på uten å påvirke innstillingen " "«enabled-extensions»." #: data/org.gnome.shell.gschema.xml.in:45 msgid "Allow extension installation" msgstr "Tillat installering av utvidelser" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "Allow users to install extensions in their home folder. If disabled, the " "InstallRemoteExtension D-Bus method will fail, and extensions are only " "loaded from system directories on startup. It does not affect extensions " "that are already loaded, so a change only takes full effect on the next " "login." msgstr "" "La utvidelser bli installert i hjemmemappen. Hvis denne innstillingen er " "slått av, vil D-Bus-metoden InstallRemoteExtension mislykkes, og utvidelser " "vil bare lastes inn fra selve systemet når det starter opp. Dette påvirker " "ikke utvidelser som allerede er lastet inn, så en eventuell endring vil ikke " "tre ikke i kraft før ved neste innlogging." #: data/org.gnome.shell.gschema.xml.in:56 msgid "Disables the validation of extension version compatibility" msgstr "Slå av sjekking av versjonskompatibilitet for utvidelser" #: data/org.gnome.shell.gschema.xml.in:57 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "GNOME Shell vil i utgangspunktet bare laste inn utvidelser som sier at de " "støtter den nåværende versjonen. Å slå på denne innstillingen vil hindre at " "versjonsstøtten sjekkes, som vil føre til at alle utvidelser blir forsøkt " "lastet inn uansett hvilke versjoner de sier at de støtter." #: data/org.gnome.shell.gschema.xml.in:65 msgid "List of desktop file IDs for favorite applications" msgstr "Liste med ID-er til favorittapper" #: data/org.gnome.shell.gschema.xml.in:66 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "Appene med disse ID-ene vil vises i favorittmenyen." #: data/org.gnome.shell.gschema.xml.in:73 msgid "History for command (Alt-F2) dialog" msgstr "Logg for kommandovindu (Alt+F2)" #. Translators: looking glass is a debugger and inspector tool, see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/docs/looking-glass.md #: data/org.gnome.shell.gschema.xml.in:78 msgid "History for the looking glass dialog" msgstr "Logg for inspeksjonsverktøy" #: data/org.gnome.shell.gschema.xml.in:82 msgid "Always show the “Log Out” action in the system menu" msgstr "Vis alltid «Logg ut» i brukermenyen" #: data/org.gnome.shell.gschema.xml.in:83 msgid "" "This key overrides the automatic hiding of the “Log out” action in the " "system menu for logged-in situations where there is a single, local, non-" "system user and only a single available session type (e.g. GNOME on Wayland)." msgstr "" "Denne innstillingen overstyrer den automatiske skjuligen av «Logg ut»-" "handlingen i kontrollsenteret på systemer som bare har én vanlig bruker og " "én økttype (f.eks. GNOME på Wayland)." #: data/org.gnome.shell.gschema.xml.in:92 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "Husk passord for montering av filsystemer" #: data/org.gnome.shell.gschema.xml.in:93 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "Systemet vil be om passord når en kryptert enhet eller et eksternt filsystem " "monteres. Hvis passordet kan lagres til senere, vil det vises en " "avkrysningsboks for dette. Denne innstillingen bestemmer standardtilstanden " "til avkrysningsboksen." #: data/org.gnome.shell.gschema.xml.in:102 msgid "The last selected non-default power profile" msgstr "Forrige ikke-standard strømmodus" #: data/org.gnome.shell.gschema.xml.in:103 msgid "" "Some systems support more than two power profiles. In order to still support " "toggling between two profiles, this key records the last selected non-" "default profile." msgstr "" "Noen systemer har mer enn to strømmoduser. For å fortsatt kunne bytte mellom " "to moduser, husker denne innstillingen den sist brukte ikke-standard " "strømmodusen." #: data/org.gnome.shell.gschema.xml.in:111 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "Siste versjon hvor «Velkommen til GNOME» ble vist" #: data/org.gnome.shell.gschema.xml.in:112 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can " "be used to effectively disable the dialog." msgstr "" "Denne innstillingen husker versjonen GNOME Shell hadde da vinduet «Velkommen " "til GNOME» sist ble vist. Hvis verdien ikke er satt, vil dette være den " "eldste mulige versjonen. Et høyt tall vil representere versjoner som ikke " "finnes ennå, og kan brukes til å hindre at vinduet vises." #: data/org.gnome.shell.gschema.xml.in:145 msgid "Layout of the app picker" msgstr "Sideoppsett for appliste" #: data/org.gnome.shell.gschema.xml.in:146 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" msgstr "" "Sideoppsettet til applisten. Hvert element i listen er en side, og de er " "lagret i rekkefølgen de dukker opp i GNOME Shell. Hver side inneholder app-" "ID-er paret med data for deres respektive apper. For øyeblikket lagres disse " "verdiene i datafeltet:\n" "• «position»: appikonets posisjon på siden" #: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:172 msgid "Keybinding to shift between overview states" msgstr "Tastatursnarvei for oversiktstilstander" #: data/org.gnome.shell.gschema.xml.in:166 msgid "Keybinding to shift between session, window picker and app grid" msgstr "" "Tastatursnarvei for å bytte mellom skrivebord, oversiktsmodus og appliste" #: data/org.gnome.shell.gschema.xml.in:173 msgid "Keybinding to shift between app grid, window picker and session" msgstr "Tastatursnarvei å bytte mellom appliste, oversiktsmodus og skrivebord" #: data/org.gnome.shell.gschema.xml.in:179 msgid "Keybinding to open the “Show Applications” view" msgstr "Tastatursnarvei for appliste" #: data/org.gnome.shell.gschema.xml.in:180 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "Tastatursnarvei for å åpne applisten." #: data/org.gnome.shell.gschema.xml.in:187 msgid "Keybinding to open the overview" msgstr "Tastatursnarvei for oversiktsmodus" #: data/org.gnome.shell.gschema.xml.in:188 msgid "Keybinding to open the Activities Overview." msgstr "Tastatursnarvei for å åpne oversiktsmodus." #: data/org.gnome.shell.gschema.xml.in:194 msgid "Keybinding to toggle the visibility of the notification list" msgstr "Tastatursnarvei for varslingssenter" #: data/org.gnome.shell.gschema.xml.in:195 msgid "Keybinding to toggle the visibility of the notification list." msgstr "Tastatursnarvei for å vise/skjule varslingssenteret." #: data/org.gnome.shell.gschema.xml.in:201 msgid "Keybinding to toggle the quick settings menu" msgstr "Tastatursnarvei for kontrollsenter" #: data/org.gnome.shell.gschema.xml.in:202 msgid "Keybinding to toggle the quick settings menu." msgstr "Tastatursnarvei for å vise/skjule kontrollsenteret." #: data/org.gnome.shell.gschema.xml.in:208 msgid "Keybinding to focus the active notification" msgstr "Tastatursnarvei for aktiv varsling" #: data/org.gnome.shell.gschema.xml.in:209 msgid "Keybinding to focus the active notification." msgstr "Tastatursnarvei for å markere den aktive varslingen." #: data/org.gnome.shell.gschema.xml.in:215 msgid "Switch to application 1" msgstr "Bytt til app 1" #: data/org.gnome.shell.gschema.xml.in:219 msgid "Switch to application 2" msgstr "Bytt til app 2" #: data/org.gnome.shell.gschema.xml.in:223 msgid "Switch to application 3" msgstr "Bytt til app 3" #: data/org.gnome.shell.gschema.xml.in:227 msgid "Switch to application 4" msgstr "Bytt til app 4" #: data/org.gnome.shell.gschema.xml.in:231 msgid "Switch to application 5" msgstr "Bytt til app 5" #: data/org.gnome.shell.gschema.xml.in:235 msgid "Switch to application 6" msgstr "Bytt til app 6" #: data/org.gnome.shell.gschema.xml.in:239 msgid "Switch to application 7" msgstr "Bytt til app 7" #: data/org.gnome.shell.gschema.xml.in:243 msgid "Switch to application 8" msgstr "Bytt til app 8" #: data/org.gnome.shell.gschema.xml.in:247 msgid "Switch to application 9" msgstr "Bytt til app 9" #: data/org.gnome.shell.gschema.xml.in:251 msgid "Open a new instance of application 1" msgstr "Åpne app 1 i nytt vindu" #: data/org.gnome.shell.gschema.xml.in:255 msgid "Open a new instance of application 2" msgstr "Åpne app 2 i nytt vindu" #: data/org.gnome.shell.gschema.xml.in:259 msgid "Open a new instance of application 3" msgstr "Åpne app 3 i nytt vindu" #: data/org.gnome.shell.gschema.xml.in:263 msgid "Open a new instance of application 4" msgstr "Åpne app 4 i nytt vindu" #: data/org.gnome.shell.gschema.xml.in:267 msgid "Open a new instance of application 5" msgstr "Åpne app 5 i nytt vindu" #: data/org.gnome.shell.gschema.xml.in:271 msgid "Open a new instance of application 6" msgstr "Åpne app 6 i nytt vindu" #: data/org.gnome.shell.gschema.xml.in:275 msgid "Open a new instance of application 7" msgstr "Åpne app 7 i nytt vindu" #: data/org.gnome.shell.gschema.xml.in:279 msgid "Open a new instance of application 8" msgstr "Åpne app 8 i nytt vindu" #: data/org.gnome.shell.gschema.xml.in:283 msgid "Open a new instance of application 9" msgstr "Åpne app 9 i nytt vindu" #: data/org.gnome.shell.gschema.xml.in:308 #: data/org.gnome.shell.gschema.xml.in:335 msgid "Limit switcher to current workspace." msgstr "Begrens appveksler til nåværende område." #: data/org.gnome.shell.gschema.xml.in:309 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "Hvis denne innstillingen er slått på, vil bare apper som har åpne vinduer i " "det nåværende området vises i appveksleren." #: data/org.gnome.shell.gschema.xml.in:326 msgid "The application icon mode." msgstr "Visningsmodus for apper." #: data/org.gnome.shell.gschema.xml.in:327 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-only” " "(shows only the application icon) or “both”." msgstr "" "Hvordan apper vises i appveksleren. Gyldige alternativer er «thumbnail-only» " "(miniatyrbilde av vinduet), «app-icon-only» (appikon) eller «both» (begge)." #: data/org.gnome.shell.gschema.xml.in:336 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "Hvis denne innstillingen er slått på, vil bare vinduer fra det nåværende " "området vises i appveksleren. Hvis ikke, vises alle åpne vinduer." #: data/org.gnome.shell.gschema.xml.in:346 msgid "Locations" msgstr "Steder" #: data/org.gnome.shell.gschema.xml.in:347 msgid "The locations to show in world clocks" msgstr "Stedene det skal vises verdensklokker for" #: data/org.gnome.shell.gschema.xml.in:357 msgid "Automatic location" msgstr "Automatisk posisjon" #: data/org.gnome.shell.gschema.xml.in:358 msgid "Whether to fetch the current location or not" msgstr "" "Hvis denne innstillingen er på, vil nåværende posisjon oppdateres automatisk" #: data/org.gnome.shell.gschema.xml.in:365 msgid "Location" msgstr "Sted" #: data/org.gnome.shell.gschema.xml.in:366 msgid "The location for which to show a forecast" msgstr "Posisjonen værmeldingen vises for" #. Keep in sync with subprojects/extensions-app #: data/org.gnome.Shell.Extensions.desktop.in.in:5 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/data/ui/extensions-window.ui:57 msgid "Extensions" msgstr "Utvidelser" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "Nettverkspålogging" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:275 msgid "Something’s gone wrong" msgstr "Noe gikk galt" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" "Noe har gått galt: Innstillingene for denne utvidelsen kan ikke vises. " "Feilen kan rapporteres til forfatterne av utvidelsen." #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "Teknisk informasjon" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "Hjemmeside" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 msgid "Visit extension homepage" msgstr "Besøk hjemmesiden til utvidelsen" #: js/gdm/authPrompt.js:151 js/gdm/loginDialog.js:465 #: js/ui/audioDeviceSelection.js:66 js/ui/components/networkAgent.js:113 #: js/ui/components/polkitAgent.js:144 js/ui/endSessionDialog.js:437 #: js/ui/extensionDownloader.js:276 js/ui/shellMountOperation.js:382 #: js/ui/shellMountOperation.js:392 msgid "Cancel" msgstr "Avbryt" #: js/gdm/authPrompt.js:317 js/ui/components/networkAgent.js:213 #: js/ui/components/networkAgent.js:233 js/ui/components/networkAgent.js:265 #: js/ui/components/networkAgent.js:298 js/ui/components/networkAgent.js:337 #: js/ui/components/networkAgent.js:350 js/ui/components/polkitAgent.js:286 #: js/ui/shellMountOperation.js:332 msgid "Password" msgstr "Passord" #: js/gdm/loginDialog.js:326 msgid "Choose Session" msgstr "Velg økt" #. Translators: is running for #: js/gdm/loginDialog.js:423 #, javascript-format msgid "" "Remote login is not possible because a remote session is already running for " "%s. To login remotely, you must log out from the remote session or force " "stop it." msgstr "" "Fjerninnlogging er ikke mulig fordi %s allerede har en aktiv fjernøkt. For å " "logge inn eksternt, må du logge ut av den aktive fjernøkten eller avslutte " "den." #. Translators: is running for #: js/gdm/loginDialog.js:426 #, javascript-format msgid "" "Login is not possible because a remote session is already running for %s. To " "login, you must log out from the remote session or force stop it." msgstr "" "Innlogging er ikke mulig fordi %s allerede har en aktiv fjernøkt. For å " "logge inn, må du logge ut av fjernøkten eller avslutte den." #. Translators: is running for #: js/gdm/loginDialog.js:429 #, javascript-format msgid "" "Remote login is not possible because a local session is already running for " "%s. To login remotely, you must log out from the local session or force stop " "it." msgstr "" "Fjerninnlogging er ikke mulig fordi %s allerede har en aktiv økt. For å " "logge inn eksternt, må du logge ut av den aktive økten eller avslutte den." #. Translators: is running for #: js/gdm/loginDialog.js:432 #, javascript-format msgid "" "Login is not possible because a session is already running for %s. To login, " "you must log out from the session or force stop it." msgstr "" "Innlogging er ikke mulig fordi %s allerede har en aktiv økt. For å logge " "inn, må du logge ut av den aktive økten eller avslutte den." #: js/gdm/loginDialog.js:441 msgid "Session Already Running" msgstr "Aktiv økt" #: js/gdm/loginDialog.js:453 msgid "" "Force stopping will quit any running apps and processes, and could result in " "data loss" msgstr "" "Å gjøre dette vil avslutte alle åpne apper og prosesser, og kan føre til tap " "av data" #: js/gdm/loginDialog.js:473 msgid "Force Stop" msgstr "Avslutt" #: js/gdm/loginDialog.js:541 msgid "Not listed?" msgstr "Ikke på listen?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:1009 #, javascript-format msgid "(e.g., user or %s)" msgstr "(f.eks. bruker eller %s)" #: js/gdm/loginDialog.js:1014 js/ui/components/networkAgent.js:257 #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:326 msgid "Username" msgstr "Brukernavn" #: js/gdm/loginDialog.js:1080 msgid "Login Attempt Timed Out" msgstr "Innlogging mislyktes" #: js/gdm/loginDialog.js:1081 msgid "Login took too long, please try again" msgstr "Innloggingen tok for lang tid, prøv igjen" #: js/gdm/loginDialog.js:1426 msgid "Login Window" msgstr "Innloggingsvindu" #: js/gdm/util.js:496 msgid "Authentication error" msgstr "Autentiseringsfeil" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:727 msgid "(or swipe finger across reader)" msgstr "(eller sveip finger over leser)" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:732 msgid "(or place finger on reader)" msgstr "(eller legg finger på leser)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:91 msgctxt "search-result" msgid "Power Off" msgstr "Slå av" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:94 msgid "power off;poweroff;shutdown;halt;stop" msgstr "slå av;skru av;stopp" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:99 msgctxt "search-result" msgid "Restart" msgstr "Start på nytt" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:102 msgid "reboot;restart;" msgstr "start på nytt;omstart;restart;" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:107 msgctxt "search-result" msgid "Lock Screen" msgstr "Lås skjerm" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:110 msgid "lock screen" msgstr "lås skjerm" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:115 msgctxt "search-result" msgid "Log Out" msgstr "Logg ut" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:118 msgid "logout;log out;sign off" msgstr "logg ut;logg av;utlogging;avlogging" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:123 msgctxt "search-result" msgid "Suspend" msgstr "Hvilemodus" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:126 msgid "suspend;sleep" msgstr "hvilemodus;dvalemodus" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:131 msgctxt "search-result" msgid "Switch User" msgstr "Bytt bruker" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:134 msgid "switch user" msgstr "bytt bruker" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:141 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "lås retning;lås opp retning;skjermretning;rotasjon;orientering" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:146 msgctxt "search-result" msgid "Take a Screenshot" msgstr "Ta skjermbilde" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:149 msgid "screenshot;screencast;snip;capture;record" msgstr "skjermbilde;skjermdump;skjermopptak;skjermvideo;ta opp" #: js/misc/systemActions.js:249 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "Lås opp skjermretning" #: js/misc/systemActions.js:250 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "Lås skjermretning" #: js/misc/util.js:130 msgid "Command not found" msgstr "Fant ikke kommando" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:170 msgid "Could not parse command:" msgstr "Kunne ikke tolke kommando:" #: js/misc/util.js:178 #, javascript-format msgid "Execution of “%s” failed:" msgstr "Kjøring av «%s» mislyktes:" #: js/misc/dateUtils.js:69 msgid "Just now" msgstr "Nå" #: js/misc/dateUtils.js:72 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d minutt siden" msgstr[1] "%d minutter siden" #: js/misc/dateUtils.js:79 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d time siden" msgstr[1] "%d timer siden" #: js/misc/dateUtils.js:85 js/ui/dateMenu.js:183 msgid "Yesterday" msgstr "I går" #: js/misc/dateUtils.js:88 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d dag siden" msgstr[1] "%d dager siden" #: js/misc/dateUtils.js:95 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d uke siden" msgstr[1] "%d uker siden" #: js/misc/dateUtils.js:102 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%d måned siden" msgstr[1] "%d måneder siden" #: js/misc/dateUtils.js:108 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "%d år siden" msgstr[1] "%d år siden" #. Translators: Time in 24h format #: js/misc/dateUtils.js:155 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/dateUtils.js:161 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "I går kl. %H∶%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/dateUtils.js:167 #, no-c-format msgid "%A, %H∶%M" msgstr "%A kl. %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/dateUtils.js:173 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%-d. %B kl. %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/dateUtils.js:179 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%-d. %B %Y kl. %H∶%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/dateUtils.js:184 msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/dateUtils.js:190 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "I går kl. %l∶%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/dateUtils.js:196 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A kl. %l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/dateUtils.js:202 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%-d. %B kl. %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/dateUtils.js:208 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%-d. %B %Y kl. %l∶%M %p" #: js/portalHelper/main.js:98 msgid "Your connection seems to be secure" msgstr "Tilkoblingen ser sikker ut" #: js/portalHelper/main.js:104 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "Tilkoblingen til dette tilgangspunktet er ikke sikker. Passord eller annen " "informasjon oppgitt her kan bli sett av folk i nærheten." #: js/portalHelper/main.js:115 msgid "Hotspot Login" msgstr "Koble til tilgangspunkt" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:51 js/ui/inhibitShortcutsDialog.js:92 msgid "Deny" msgstr "Avvis" #: js/ui/accessDialog.js:52 js/ui/inhibitShortcutsDialog.js:101 msgid "Allow" msgstr "Tillat" #: js/ui/appDisplay.js:1769 msgid "Unnamed Folder" msgstr "Mappe uten navn" #: js/ui/appFavorites.js:163 #, javascript-format msgid "%s has been pinned to the dash." msgstr "«%s» ble festet til hyllen." #: js/ui/appFavorites.js:194 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "«%s» ble løsnet fra hyllen." #: js/ui/appFavorites.js:208 js/ui/main.js:281 msgid "Undo" msgstr "Angre" #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:49 msgid "Open Windows" msgstr "Åpne vinduer" #: js/ui/appMenu.js:57 msgid "New Window" msgstr "Nytt vindu" #: js/ui/appMenu.js:84 msgid "App Details" msgstr "Vis i Appsenter" #: js/ui/appMenu.js:100 msgid "Quit" msgstr "Avslutt" #: js/ui/appMenu.js:160 js/ui/dash.js:248 msgid "Unpin" msgstr "Løsne" #: js/ui/appMenu.js:161 msgid "Pin to Dash" msgstr "Fest til hylle" #: js/ui/appMenu.js:178 msgid "Launch using Integrated Graphics Card" msgstr "Åpne med integrert skjermkort" #: js/ui/appMenu.js:179 msgid "Launch using Discrete Graphics Card" msgstr "Åpne med dedikert skjermkort" #: js/ui/audioDeviceSelection.js:46 msgid "Select Audio Device" msgstr "Velg lydenhet" #: js/ui/audioDeviceSelection.js:61 js/ui/status/volume.js:81 msgid "Sound Settings" msgstr "Lydinnstillinger" #: js/ui/audioDeviceSelection.js:74 msgid "Headphones" msgstr "Hodetelefoner" #: js/ui/audioDeviceSelection.js:76 msgid "Headset" msgstr "Hodetelefoner" #: js/ui/audioDeviceSelection.js:78 js/ui/status/volume.js:356 msgid "Microphone" msgstr "Mikrofon" #: js/ui/backgroundMenu.js:13 msgid "Change Background…" msgstr "Bytt bakgrunn…" #: js/ui/backgroundMenu.js:15 msgid "Display Settings" msgstr "Skjerminnstillinger" #: js/ui/backgroundMenu.js:16 msgid "Settings" msgstr "Innstillinger" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:37 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:63 msgctxt "grid sunday" msgid "S" msgstr "S" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:65 msgctxt "grid monday" msgid "M" msgstr "M" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:67 msgctxt "grid tuesday" msgid "T" msgstr "T" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:69 msgctxt "grid wednesday" msgid "W" msgstr "O" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:71 msgctxt "grid thursday" msgid "T" msgstr "T" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:73 msgctxt "grid friday" msgid "F" msgstr "F" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:75 msgctxt "grid saturday" msgid "S" msgstr "L" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:426 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:436 msgid "%OB %Y" msgstr "%OB %Y" #: js/ui/calendar.js:498 msgid "Previous month" msgstr "Forrige måned" #: js/ui/calendar.js:516 msgid "Next month" msgstr "Neste måned" #: js/ui/calendar.js:667 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:726 msgid "Week %V" msgstr "Uke %V" #: js/ui/calendar.js:918 msgid "No Notifications" msgstr "Ingen varslinger" #: js/ui/calendar.js:974 msgid "Do Not Disturb" msgstr "Ikke forstyrr" #: js/ui/calendar.js:995 msgid "Clear" msgstr "Fjern" #: js/ui/calendar.js:999 msgctxt "action" msgid "Clear all notifications" msgstr "Fjern alle varslinger" #. Translators: %s is an application name #: js/ui/closeDialog.js:42 #, javascript-format msgid "“%s” Is Not Responding" msgstr "«%s» svarer ikke" #: js/ui/closeDialog.js:43 msgid "" "You may choose to wait a short while for it to continue or force the app to " "quit entirely" msgstr "" "Du kan vente litt og se om appen fortsetter, eller tvinge den til å avslutte" #: js/ui/closeDialog.js:71 msgid "Force Quit" msgstr "Avslutt" #: js/ui/closeDialog.js:76 msgid "Wait" msgstr "Vent" #: js/ui/components/automountManager.js:82 msgid "External drive connected" msgstr "Lagringsenhet koblet til" #: js/ui/components/automountManager.js:94 msgid "External drive disconnected" msgstr "Lagringsenhet koblet fra" #: js/ui/components/automountManager.js:208 msgid "Unable to unlock volume" msgstr "Kan ikke låse opp område" #: js/ui/components/automountManager.js:209 msgid "The installed udisks version does not support the PIM setting" msgstr "Den installerte versjonen av udisks støtter ikke PIM-innstillingen" #. Translators: %s is the name of a partition on a external drive #: js/ui/components/autorunManager.js:189 #, javascript-format msgid "“%s” connected" msgstr "«%s» tilkoblet" #: js/ui/components/autorunManager.js:190 msgid "Disk can now be used" msgstr "Lagringsenheten kan tas i bruk" #: js/ui/components/autorunManager.js:202 #, javascript-format msgid "Open with %s" msgstr "Åpne med %s" #: js/ui/components/networkAgent.js:95 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router" msgstr "Du kan også koble til ved å trykke på «WPS»-knappen på ruteren din" #: js/ui/components/networkAgent.js:107 js/ui/status/bluetooth.js:245 #: js/ui/status/network.js:360 js/ui/status/network.js:444 msgid "Connect" msgstr "Koble til" #: js/ui/components/networkAgent.js:222 msgid "Key" msgstr "Nøkkel" #: js/ui/components/networkAgent.js:273 js/ui/components/networkAgent.js:312 msgid "Private key password" msgstr "Passord for privat nøkkel" #: js/ui/components/networkAgent.js:306 msgid "Identity" msgstr "Identitet" #: js/ui/components/networkAgent.js:332 msgid "Service" msgstr "Tjeneste" #: js/ui/components/networkAgent.js:370 js/ui/components/networkAgent.js:406 #: js/ui/components/networkAgent.js:743 js/ui/components/networkAgent.js:764 msgid "Authentication required" msgstr "Autentisering kreves" #: js/ui/components/networkAgent.js:371 js/ui/components/networkAgent.js:744 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network “%s”" msgstr "Passord eller krypteringsnøkler kreves for å koble til nettverket «%s»" #: js/ui/components/networkAgent.js:375 js/ui/components/networkAgent.js:748 msgid "Wired 802.1X authentication" msgstr "802.1X-autentisering" #: js/ui/components/networkAgent.js:378 msgid "Network name" msgstr "Nettverksnavn" #: js/ui/components/networkAgent.js:386 js/ui/components/networkAgent.js:752 msgid "DSL authentication" msgstr "DSL-autentisering" #: js/ui/components/networkAgent.js:393 js/ui/components/networkAgent.js:757 msgid "PIN code required" msgstr "PIN-kode kreves" #: js/ui/components/networkAgent.js:394 js/ui/components/networkAgent.js:758 msgid "PIN code is needed for the mobile broadband device" msgstr "PIN-kode kreves for bredbåndsenhet" #: js/ui/components/networkAgent.js:396 msgid "PIN" msgstr "PIN" #: js/ui/components/networkAgent.js:407 js/ui/components/networkAgent.js:749 #: js/ui/components/networkAgent.js:753 js/ui/components/networkAgent.js:765 #: js/ui/components/networkAgent.js:769 #, javascript-format msgid "A password is required to connect to “%s”" msgstr "Passord kreves for å koble til «%s»" #: js/ui/components/networkAgent.js:768 msgid "VPN password" msgstr "VPN-passord" #: js/ui/components/polkitAgent.js:44 msgid "Authentication Required" msgstr "Autentisering" #: js/ui/components/polkitAgent.js:84 msgid "Administrator" msgstr "Administrator" #: js/ui/components/polkitAgent.js:149 msgid "Authenticate" msgstr "Autentiser" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:263 js/ui/shellMountOperation.js:415 msgid "Sorry, that didn’t work. Please try again." msgstr "Autentisering mislyktes. Prøv igjen." #: js/ui/ctrlAltTab.js:23 js/ui/overviewControls.js:404 msgid "Windows" msgstr "Vinduer" #: js/ui/dash.js:204 js/ui/dash.js:250 msgid "Show Apps" msgstr "Vis apper" #. Translators: this is the name of the dock/favorites area on #. the bottom of the overview #: js/ui/dash.js:408 msgid "Dash" msgstr "Hylle" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:99 msgid "%B %-d %Y" msgstr "%-d. %B %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:106 msgid "%A %B %e %Y" msgstr "%A %e. %B %Y" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:172 msgctxt "calendar heading" msgid "%B %-d" msgstr "%-d. %B" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:175 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%-d. %B %Y" #: js/ui/dateMenu.js:181 msgid "Today" msgstr "I dag" #: js/ui/dateMenu.js:185 msgid "Tomorrow" msgstr "I morgen" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:216 msgctxt "event list time" msgid "All Day" msgstr "Hele dagen" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:238 msgid "%m/%d" msgstr "%d.%m" #: js/ui/dateMenu.js:289 msgid "No Events" msgstr "Ingen hendelser" #: js/ui/dateMenu.js:411 msgid "Add World Clocks…" msgstr "Legg til verdensklokker…" #: js/ui/dateMenu.js:412 msgid "World Clocks" msgstr "Verdensklokker" #: js/ui/dateMenu.js:702 msgid "Loading…" msgstr "Laster inn…" #: js/ui/dateMenu.js:712 msgid "Go Online for Weather Information" msgstr "Koble til nettet for å se værmeldingen" #: js/ui/dateMenu.js:714 msgid "Weather Information Unavailable" msgstr "Værmelding utilgjengelig" #: js/ui/dateMenu.js:724 msgid "Weather" msgstr "Været" #: js/ui/dateMenu.js:726 msgid "Select Weather Location…" msgstr "Velg posisjon…" #: js/ui/endSessionDialog.js:47 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "Logg ut %s" #: js/ui/endSessionDialog.js:48 msgctxt "title" msgid "Log Out" msgstr "Logg ut" #: js/ui/endSessionDialog.js:51 #, javascript-format msgid "%s will be logged out automatically in %d second" msgid_plural "%s will be logged out automatically in %d seconds" msgstr[0] "%s vil logges ut automatisk om %d sekund" msgstr[1] "%s vil logges ut automatisk om %d sekunder" #: js/ui/endSessionDialog.js:57 #, javascript-format msgid "You will be logged out automatically in %d second" msgid_plural "You will be logged out automatically in %d seconds" msgstr[0] "Du vil logges ut automatisk om %d sekund" msgstr[1] "Du vil logges ut automatisk om %d sekunder" #: js/ui/endSessionDialog.js:64 msgctxt "button" msgid "Log Out" msgstr "Logg ut" #: js/ui/endSessionDialog.js:70 js/ui/status/system.js:174 msgctxt "title" msgid "Power Off" msgstr "Slå av" #: js/ui/endSessionDialog.js:71 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Installer oppdateringer og slå av" #: js/ui/endSessionDialog.js:74 #, javascript-format msgid "The system will power off automatically in %d second" msgid_plural "The system will power off automatically in %d seconds" msgstr[0] "Systemet vil slå seg av automatisk om %d sekund" msgstr[1] "Systemet vil slå seg av automatisk om %d sekunder" #: js/ui/endSessionDialog.js:78 js/ui/endSessionDialog.js:97 msgctxt "checkbox" msgid "Install pending software updates" msgstr "Installer oppdateringer" #: js/ui/endSessionDialog.js:82 msgctxt "button" msgid "Power Off" msgstr "Slå av" #: js/ui/endSessionDialog.js:89 msgctxt "title" msgid "Restart" msgstr "Start på nytt" #: js/ui/endSessionDialog.js:90 msgctxt "title" msgid "Install Updates & Restart" msgstr "Installer oppdateringer og start på nytt" #: js/ui/endSessionDialog.js:93 #, javascript-format msgid "The system will restart automatically in %d second" msgid_plural "The system will restart automatically in %d seconds" msgstr[0] "Systemet vil starte på nytt automatisk om %d sekund" msgstr[1] "Systemet vil starte på nytt automatisk om %d sekunder" #: js/ui/endSessionDialog.js:101 msgctxt "button" msgid "Restart" msgstr "Start på nytt" #: js/ui/endSessionDialog.js:109 msgctxt "title" msgid "Restart & Install Updates" msgstr "Start på nytt og installer oppdateringer" #: js/ui/endSessionDialog.js:112 #, javascript-format msgid "The system will automatically restart and install updates in %d second" msgid_plural "" "The system will automatically restart and install updates in %d seconds" msgstr[0] "" "Systemet vil starte på nytt og installere oppdateringer automatisk om %d " "sekund" msgstr[1] "" "Systemet vil starte på nytt og installere oppdateringer automatisk om %d " "sekunder" #: js/ui/endSessionDialog.js:119 js/ui/endSessionDialog.js:140 msgctxt "button" msgid "Restart & Install" msgstr "Start på nytt og installer" #: js/ui/endSessionDialog.js:121 msgctxt "button" msgid "Install & Power Off" msgstr "Installer og slå av" #: js/ui/endSessionDialog.js:122 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Slå av etter at oppdateringer er installert" #: js/ui/endSessionDialog.js:129 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "Start på nytt og installer oppdatering" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:134 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "%s %s vil installeres etter at systemet har startet på nytt. Oppdateringen " "kan ta lang tid. Pass på at data er sikkerhetskopiert og at maskinen er " "koblet til en strømkilde." #: js/ui/endSessionDialog.js:283 msgid "Low battery power: please plug in before installing updates" msgstr "Lite strøm: Koble til strømkilde før installering av oppdateringer" #: js/ui/endSessionDialog.js:292 msgid "Some applications are busy or have unsaved work" msgstr "Noen apper har fortsatt pågående aktivitet eller ulagret arbeid" #: js/ui/endSessionDialog.js:297 msgid "Other users are logged in" msgstr "Andre brukere er logget inn" #: js/ui/endSessionDialog.js:467 msgctxt "button" msgid "Boot Options" msgstr "Oppstartsvalg" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:672 #, javascript-format msgid "%s (remote)" msgstr "%s (ekstern)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:675 #, javascript-format msgid "%s (console)" msgstr "%s (konsoll)" #: js/ui/extensionDownloader.js:280 msgid "Install" msgstr "Installer" #: js/ui/extensionDownloader.js:286 msgid "Install Extension" msgstr "Installer utvidelse" #: js/ui/extensionDownloader.js:287 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "Last ned og installer «%s» fra extensions.gnome.org?" #: js/ui/extensionSystem.js:352 msgid "Extension Updates Available" msgstr "Utvidelser kan oppdateres" #: js/ui/extensionSystem.js:353 msgid "Extension updates are ready to be installed" msgstr "Oppdateringer av utvidelser er klare for installering" #: js/ui/inhibitShortcutsDialog.js:70 msgid "Allow inhibiting shortcuts" msgstr "Tillat overstyring av snarveier" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:73 #, javascript-format msgid "The app %s wants to inhibit shortcuts" msgstr "«%s» ønsker å overstyre tastatursnarveier" #: js/ui/inhibitShortcutsDialog.js:74 msgid "An app wants to inhibit shortcuts" msgstr "En app ønsker å overstyre tastatursnarveier" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:81 #, javascript-format msgid "You can restore shortcuts by pressing %s" msgstr "Overstyringen kan oppheves med %s" #: js/ui/kbdA11yDialog.js:34 msgid "Slow Keys Turned On" msgstr "Langsomme taster slått på" #: js/ui/kbdA11yDialog.js:35 msgid "Slow Keys Turned Off" msgstr "Langsomme taster slått av" #: js/ui/kbdA11yDialog.js:36 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "Shift-tasten ble holdt nede i 8 sekunder. Dette er snarveien til Langsomme " "taster-funksjonen, som endrer tastaturets oppførsel." #: js/ui/kbdA11yDialog.js:42 msgid "Sticky Keys Turned On" msgstr "Trege taster slått på" #: js/ui/kbdA11yDialog.js:43 msgid "Sticky Keys Turned Off" msgstr "Trege taster slått av" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "Shift-tasten ble trykket på fem ganger på rad. Dette er snarveien til Trege " "taster-funksjonen, som endrer tastaturets oppførsel." #: js/ui/kbdA11yDialog.js:47 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" "To taster akkurat trykket ned på én gang, eller så ble Shift-tasten trykket " "på fem ganger på rad. Dette skrur av Trege taster-funksjonen, som endrer " "tastaturets oppførsel." #: js/ui/kbdA11yDialog.js:57 msgid "Leave On" msgstr "Hold påslått" #: js/ui/kbdA11yDialog.js:57 msgid "Turn On" msgstr "Slå på" #: js/ui/kbdA11yDialog.js:67 js/ui/status/network.js:455 msgid "Turn Off" msgstr "Slå av" #: js/ui/kbdA11yDialog.js:67 msgid "Leave Off" msgstr "Hold avslått" #: js/ui/keyboard.js:180 js/ui/status/keyboard.js:897 msgid "Keyboard Settings" msgstr "Tastaturinnstillinger" #: js/ui/lookingGlass.js:727 msgid "No extensions installed" msgstr "Ingen utvidelser installert" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:788 #, javascript-format msgid "%s has not emitted any errors" msgstr "«%s» har ikke varslet om noen feil" #: js/ui/lookingGlass.js:794 msgid "Hide Errors" msgstr "Skjul feil" #: js/ui/lookingGlass.js:798 js/ui/lookingGlass.js:875 msgid "Show Errors" msgstr "Vis feil" #: js/ui/lookingGlass.js:807 msgid "Active" msgstr "Aktiv" #: js/ui/lookingGlass.js:810 msgid "Inactive" msgstr "Inaktiv" #: js/ui/lookingGlass.js:812 msgid "Error" msgstr "Feil" #: js/ui/lookingGlass.js:814 msgid "Out of date" msgstr "Utgått på dato" #: js/ui/lookingGlass.js:816 msgid "Downloading" msgstr "Laster ned" #: js/ui/lookingGlass.js:818 msgid "Deactivating" msgstr "Deaktiverer" #: js/ui/lookingGlass.js:820 msgid "Activating" msgstr "Aktiverer" #: js/ui/lookingGlass.js:853 msgid "View Source" msgstr "Se kilde" #: js/ui/lookingGlass.js:864 msgid "Web Page" msgstr "Nettside" #: js/ui/main.js:277 msgid "System was put in unsafe mode" msgstr "System satt i usikret modus" #: js/ui/main.js:278 msgid "Apps now have unrestricted access" msgstr "Apper har nå ubegrenset tilgang" #: js/ui/main.js:338 msgid "Logged in as a privileged user" msgstr "Logg inn som priviligert bruker" #: js/ui/main.js:339 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" "Å være logget inn som priviligert bruker bør unngås av sikkerhetshensyn. " "Hvis mulig, bør du logge inn som vanlig bruker." #: js/ui/main.js:387 msgid "Screen Lock disabled" msgstr "Kan ikke låse skjerm" #: js/ui/main.js:388 msgid "Screen Locking requires the GNOME display manager" msgstr "Låsing av skjerm krever GNOME sin låseskjerm" #. Translators: this is the string displayed in the header when a message #. source doesn't have a name #: js/ui/messageList.js:374 msgid "Unknown App" msgstr "Ukjent app" #: js/ui/messageTray.js:326 js/ui/messageTray.js:328 msgid "Notification sound" msgstr "Varslingslyd" #: js/ui/mpris.js:198 msgid "Unknown artist" msgstr "Ukjent artist" #: js/ui/mpris.js:208 msgid "Unknown title" msgstr "Ukjent tittel" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:328 msgid "Type to search" msgstr "Skriv for å søke" #: js/ui/overviewControls.js:392 msgid "Apps" msgstr "Apper" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:33 msgid "Overview" msgstr "Oversikt" #: js/ui/padOsd.js:98 msgid "New shortcut…" msgstr "Ny snarvei…" #: js/ui/padOsd.js:151 msgid "App defined" msgstr "Angitt av app" #: js/ui/padOsd.js:152 msgid "Show on-screen help" msgstr "Vis hjelp på skjermen" #: js/ui/padOsd.js:153 msgid "Switch monitor" msgstr "Bytt skjerm" #: js/ui/padOsd.js:154 msgid "Assign keystroke" msgstr "Angi tastatursnarvei" #: js/ui/padOsd.js:223 msgid "Done" msgstr "Ferdig" #: js/ui/padOsd.js:726 msgid "Edit…" msgstr "Rediger…" #: js/ui/padOsd.js:773 msgid "None" msgstr "Ingen" #: js/ui/padOsd.js:844 msgid "Press a button to configure" msgstr "Trykk på en knapp for å sette opp" #: js/ui/padOsd.js:845 msgid "Press Esc to exit" msgstr "Trykk på Esc-tasten for å avslutte" #: js/ui/padOsd.js:848 msgid "Press any key to exit" msgstr "Trykk på en tast for å avslutte" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:423 msgid "Activities" msgstr "Aktiviteter" #: js/ui/panel.js:504 msgctxt "System menu in the top bar" msgid "System" msgstr "System" #: js/ui/panel.js:678 msgid "Top Bar" msgstr "Topplinje" #: js/ui/quickSettings.js:188 msgid "Open menu" msgstr "Åpne meny" #: js/ui/runDialog.js:61 msgid "Run a Command" msgstr "Kjør kommando" #: js/ui/runDialog.js:76 msgid "Press ESC to close" msgstr "Trykk på Esc-tasten for å lukke" #: js/ui/runDialog.js:241 msgid "Restart is not available on Wayland" msgstr "Kan ikke starte på nytt på Wayland" #: js/ui/runDialog.js:246 msgid "Restarting…" msgstr "Starter på nytt…" #: js/ui/screenShield.js:233 msgid "GNOME needs to lock the screen" msgstr "GNOME trenger å låse skjermen" #: js/ui/screenShield.js:274 js/ui/screenShield.js:667 msgid "Unable to lock" msgstr "Kan ikke låse" #: js/ui/screenShield.js:275 js/ui/screenShield.js:668 msgid "Lock was blocked by an app" msgstr "En app hindret låsing av skjermen" #: js/ui/screenshot.js:1252 msgid "Selection" msgstr "Område" #: js/ui/screenshot.js:1262 msgid "Area Selection" msgstr "Valg av område" #: js/ui/screenshot.js:1267 msgid "Screen" msgstr "Skjerm" #: js/ui/screenshot.js:1277 msgid "Screen Selection" msgstr "Valg av skjerm" #: js/ui/screenshot.js:1282 msgid "Window" msgstr "Vindu" #: js/ui/screenshot.js:1292 msgid "Window Selection" msgstr "Valg av vindu" #. Translators: entry in the window right click menu. #: js/ui/screenshot.js:1317 js/ui/status/system.js:111 js/ui/windowMenu.js:28 msgid "Take Screenshot" msgstr "Ta skjermbilde" #: js/ui/screenshot.js:1333 msgid "Record Screen" msgstr "Ta skjermopptak" #. Translators: since this string refers to an action, #. it needs to be phrased as a verb. #: js/ui/screenshot.js:1350 msgid "Capture" msgstr "Ta opp" #: js/ui/screenshot.js:1372 msgid "Show Pointer" msgstr "Vis peker" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1996 msgid "Screencasts" msgstr "Skjermopptak" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast From 07-17-2013 10:00:46 PM" #: js/ui/screenshot.js:2001 #, no-c-format msgid "Screencast From %d %t" msgstr "Skjermopptak fra %d %t" #. Translators: notification title. #: js/ui/screenshot.js:2047 msgid "Screencast recorded" msgstr "Skjermopptak tatt" #. Translators: notification title. #: js/ui/screenshot.js:2060 msgid "Screencast failed to start" msgstr "Oppstart av skjermopptak mislyktes" #. Translators: notification title. #: js/ui/screenshot.js:2066 msgid "Screencast ended: Out of disk space" msgstr "Skjermopptak avbrutt: tomt for lagringsplass" #. We can encourage user to try again on service crashes since the #. recorder will auto-blocklist the pipeline that crashed. #. Translators: notification title. #: js/ui/screenshot.js:2072 msgid "Screencast ended unexpectedly, please try again" msgstr "Skjermopptak avbrutt, prøv igjen" #. Translators: notification title. #: js/ui/screenshot.js:2075 msgid "Screencast ended unexpectedly" msgstr "Skjermopptak avbrutt" #. Translators: notification source name. #: js/ui/screenshot.js:2085 js/ui/screenshot.js:2327 msgid "Screenshot" msgstr "Skjermbilde" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:2092 msgid "Click here to view the video." msgstr "Trykk her for å se opptaket." #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:2100 js/ui/screenshot.js:2343 msgid "Show in Files" msgstr "Vis i Filer" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2287 #, javascript-format msgid "Screenshot From %s" msgstr "Skjermbilde fra %s" #. Translators: notification title. #: js/ui/screenshot.js:2333 msgid "Screenshot captured" msgstr "Skjermbilde tatt" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2335 msgid "You can paste the image from the clipboard." msgstr "Bildet kan limes inn fra utklippstavlen." #: js/ui/screenshot.js:2391 js/ui/screenshot.js:2555 msgid "Screenshot taken" msgstr "Skjermbilde tatt" #: js/ui/search.js:829 msgid "Searching…" msgstr "Søker…" #: js/ui/search.js:831 msgid "No results" msgstr "Ingen treff" #: js/ui/search.js:962 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "%d til" msgstr[1] "%d til" #: js/ui/searchController.js:87 #: subprojects/extensions-app/data/ui/extensions-window.ui:73 msgid "Search" msgstr "Søk" #: js/ui/shellEntry.js:21 msgid "Copy" msgstr "Kopier" #: js/ui/shellEntry.js:26 msgid "Paste" msgstr "Lim inn" #: js/ui/shellEntry.js:78 msgid "Show Text" msgstr "Vis tekst" #: js/ui/shellEntry.js:80 msgid "Hide Text" msgstr "Skjul tekst" #: js/ui/shellEntry.js:174 msgid "Caps lock is on" msgstr "Caps lock er på" #: js/ui/shellMountOperation.js:286 msgid "Hidden Volume" msgstr "Skjult område" #: js/ui/shellMountOperation.js:289 msgid "Windows System Volume" msgstr "Windows-område" #: js/ui/shellMountOperation.js:292 msgid "Uses Keyfiles" msgstr "Bruker nøkkelfiler" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:300 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead" msgstr "" "For å låse opp et område som bruker nøkkelfiler, bruk appen %s i " "stedet" #: js/ui/shellMountOperation.js:304 msgid "" "You need an external utility like Disks to unlock a volume that uses " "keyfiles" msgstr "" "For å låse opp et område som bruker nøkkelfiler, bruk et eksternt verktøy, " "som Disker" #: js/ui/shellMountOperation.js:312 msgid "PIM Number" msgstr "PIM-nummer" #: js/ui/shellMountOperation.js:371 msgid "Remember Password" msgstr "Husk passord" #: js/ui/shellMountOperation.js:386 msgid "Unlock" msgstr "Lås opp" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:400 #, javascript-format msgid "Open %s" msgstr "Åpne %s" #: js/ui/shellMountOperation.js:436 msgid "The PIM must be a number or empty" msgstr "PIM-feltet må inneholde et tall eller holdes tomt" #: js/ui/status/accessibility.js:34 msgid "Accessibility" msgstr "Tilgjengelighet" #: js/ui/status/accessibility.js:44 msgid "High Contrast" msgstr "Høy kontrast" #: js/ui/status/accessibility.js:47 msgid "Zoom" msgstr "Forstørret visning" #: js/ui/status/accessibility.js:54 msgid "Screen Reader" msgstr "Skjermleser" #: js/ui/status/accessibility.js:58 msgid "Screen Keyboard" msgstr "Skjermtastatur" #: js/ui/status/accessibility.js:62 msgid "Visual Alerts" msgstr "Visuelle varsler" #: js/ui/status/accessibility.js:66 msgid "Sticky Keys" msgstr "Trege taster" #: js/ui/status/accessibility.js:70 msgid "Slow Keys" msgstr "Langsomme taster" #: js/ui/status/accessibility.js:74 msgid "Bounce Keys" msgstr "Spretne taster" #: js/ui/status/accessibility.js:78 msgid "Mouse Keys" msgstr "Musetaster" #: js/ui/status/accessibility.js:83 msgid "Accessibility Settings" msgstr "Tilgjengelighetsinnstillinger" #: js/ui/status/accessibility.js:140 msgid "Large Text" msgstr "Stor tekst" #: js/ui/status/autoRotate.js:14 msgid "Auto Rotate" msgstr "Automatisk rotering" #: js/ui/status/backgroundApps.js:156 msgctxt "title" msgid "Background Apps" msgstr "Apper i bakgrunnen" #: js/ui/status/backgroundApps.js:171 msgid "Apps known to be running without a window" msgstr "Apper som er i aktivitet uten å være åpne" #: js/ui/status/backgroundApps.js:182 msgid "App Settings" msgstr "App-innstillinger" #: js/ui/status/backgroundApps.js:239 msgid "No Background Apps" msgstr "Ingen apper i bakgrunnen" #: js/ui/status/backgroundApps.js:241 #, javascript-format msgid "%d Background App" msgid_plural "%d Background Apps" msgstr[0] "%d app i bakgrunnen" msgstr[1] "%d apper i bakgrunnen" #: js/ui/status/backlight.js:39 msgid "Keyboard Brightness" msgstr "Tastaturlys" #: js/ui/status/backlight.js:79 msgid "Off" msgstr "Av" #: js/ui/status/backlight.js:80 msgid "Low" msgstr "Svakt" #: js/ui/status/backlight.js:81 msgid "High" msgstr "Sterkt" #: js/ui/status/backlight.js:147 js/ui/status/keyboard.js:879 msgid "Keyboard" msgstr "Tastatur" #: js/ui/status/bluetooth.js:245 js/ui/status/network.js:360 msgid "Disconnect" msgstr "Koble fra" #: js/ui/status/bluetooth.js:262 js/ui/status/bluetooth.js:264 msgid "Bluetooth" msgstr "Bluetooth" #: js/ui/status/bluetooth.js:287 js/ui/status/network.js:1900 msgid "Bluetooth Settings" msgstr "Bluetooth-innstillinger" #: js/ui/status/bluetooth.js:334 msgid "No available or connected devices" msgstr "Ingen tilkoblede eller synlige enheter" #: js/ui/status/bluetooth.js:335 msgid "Turn on Bluetooth to connect to devices" msgstr "Slå på Bluetooth for å koble til enheter" #. Translators: This is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:389 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d tilkoblet" msgstr[1] "%d tilkoblet" #: js/ui/status/brightness.js:32 msgid "Brightness" msgstr "Lysstyrke" #: js/ui/status/darkMode.js:12 msgid "Dark Style" msgstr "Mørk modus" #: js/ui/status/dwellClick.js:15 msgid "Single Click" msgstr "Enkelttrykk" #: js/ui/status/dwellClick.js:20 msgid "Double Click" msgstr "Dobbelttrykk" #: js/ui/status/dwellClick.js:25 msgid "Drag" msgstr "Dra" #: js/ui/status/dwellClick.js:30 msgid "Secondary Click" msgstr "Sekundærtrykk" #: js/ui/status/dwellClick.js:39 msgid "Dwell Click" msgstr "Ventetrykk" #: js/ui/status/keyboard.js:896 msgid "Show Keyboard Layout" msgstr "Vis tastaturoppsett" #: js/ui/status/location.js:337 msgid "Allow location access" msgstr "Gi posisjonstilgang" #. Translators: %s is an application name #: js/ui/status/location.js:339 #, javascript-format msgid "The app %s wants to access your location" msgstr "«%s» ber om tilgang til posisjonen din" #: js/ui/status/location.js:349 msgid "Location access can be changed at any time from the privacy settings" msgstr "Tilgangen kan endres når som helst i personvernsinnstillingene" #: js/ui/status/location.js:357 msgid "Deny Access" msgstr "Avvis" #: js/ui/status/location.js:362 msgid "Grant Access" msgstr "Tillat" #: js/ui/status/network.js:62 msgid "" msgstr "" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:354 #, javascript-format msgid "Disconnect %s" msgstr "Koble fra %s" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:356 #, javascript-format msgid "Connect to %s" msgstr "Koble til %s" #: js/ui/status/network.js:1050 msgid "Secure" msgstr "Sikker" #: js/ui/status/network.js:1050 msgid "Not secure" msgstr "Usikker" #: js/ui/status/network.js:1051 #, javascript-format msgid "Signal strength %s%%" msgstr "Signalstyrke %s%%" #. translators: The first placeholder is the network name, the second and indication whether it is secure, and the last the signal strength indication #: js/ui/status/network.js:1053 #, javascript-format msgid "%s, %s, %s" msgstr "%s, %s, %s" #. Translators: %s is a network identifier #: js/ui/status/network.js:1155 #, javascript-format msgid "%s Hotspot" msgstr "%s-tilgangspunkt" #: js/ui/status/network.js:1426 #, javascript-format msgid "%d connected" msgid_plural "%d connected" msgstr[0] "%d tilkoblet" msgstr[1] "%d tilkoblet" #: js/ui/status/network.js:1524 js/ui/status/network.js:1540 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1525 msgid "VPN Settings" msgstr "VPN-innstillinger" #: js/ui/status/network.js:1785 msgid "Wi–Fi" msgstr "Wi-Fi" #: js/ui/status/network.js:1787 msgid "All Networks" msgstr "Alle nettverk" #: js/ui/status/network.js:1884 msgid "Wired Connections" msgstr "Kablede tilkoblinger" #: js/ui/status/network.js:1885 msgid "Wired Settings" msgstr "Kabelinnstillinger" #: js/ui/status/network.js:1899 msgid "Bluetooth Tethers" msgstr "Bluetooth-nettverksdeling" #. Translators: "Tether" from "Bluetooth Tether" #: js/ui/status/network.js:1906 msgid "Tether" msgstr "Nettverksdeling" #: js/ui/status/network.js:1919 msgid "Mobile Connections" msgstr "Mobiltilkobling" #: js/ui/status/network.js:1921 msgid "Mobile Broadband Settings" msgstr "Bredbåndsinnstillinger" #. Translators: "Mobile" from "Mobile Broadband" #: js/ui/status/network.js:1930 msgid "Mobile" msgstr "Mobil" #: js/ui/status/network.js:1964 msgid "Sign Into Wi–Fi Network" msgstr "Logg på Wi-Fi nettverk" #: js/ui/status/network.js:2151 msgid "Connection failed" msgstr "Tilkobling mislyktes" #: js/ui/status/network.js:2152 msgid "Activation of network connection failed" msgstr "Aktivering av nettverkstilkobling mislyktes" #: js/ui/status/nightLight.js:19 msgid "Night Light" msgstr "Nattlys" #: js/ui/status/powerProfiles.js:19 msgctxt "Power profile" msgid "Performance" msgstr "Ytelse" #: js/ui/status/powerProfiles.js:24 msgctxt "Power profile" msgid "Balanced" msgstr "Balansert" #: js/ui/status/powerProfiles.js:29 msgctxt "Power profile" msgid "Power Saver" msgstr "Strømsparing" #: js/ui/status/powerProfiles.js:39 js/ui/status/powerProfiles.js:69 msgid "Power Mode" msgstr "Strømbruk" #: js/ui/status/powerProfiles.js:71 msgid "Power Settings" msgstr "Strøminnstillinger" #: js/ui/status/remoteAccess.js:74 msgid "Stop Screencast" msgstr "Stopp skjermopptak" #: js/ui/status/remoteAccess.js:144 msgid "Stop Screen Sharing" msgstr "Stopp skjermdeling" #: js/ui/status/rfkill.js:99 msgid "Airplane Mode" msgstr "Flymodus" #: js/ui/status/system.js:168 msgid "Power Off Menu" msgstr "Meny for å slå av" #: js/ui/status/system.js:176 msgid "Suspend" msgstr "Hvilemodus" #: js/ui/status/system.js:181 msgid "Restart…" msgstr "Start på nytt…" #: js/ui/status/system.js:186 msgid "Power Off…" msgstr "Slå av…" #: js/ui/status/system.js:193 #: subprojects/extensions-app/data/ui/extensions-window.ui:124 msgid "Log Out…" msgstr "Logg ut…" #: js/ui/status/system.js:198 msgid "Switch User…" msgstr "Bytt bruker…" #: js/ui/status/system.js:242 msgctxt "action" msgid "Lock Screen" msgstr "Lås skjerm" #: js/ui/status/thunderbolt.js:308 msgid "Unknown Thunderbolt device" msgstr "Ukjent Thunderbolt-enhet" #: js/ui/status/thunderbolt.js:309 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "En ny enhet ble oppdaget. Koble fra og til igjen for å bruke den." #: js/ui/status/thunderbolt.js:312 msgid "Unauthorized Thunderbolt device" msgstr "Ukjent Thunderbolt-enhet" #: js/ui/status/thunderbolt.js:313 msgid "" "New device has been detected and needs to be authorized by an administrator" msgstr "En ny enhet ble oppdaget, og må godkjennes av en administrator" #: js/ui/status/thunderbolt.js:319 msgid "Thunderbolt authorization error" msgstr "Godkjenningsfeil" #: js/ui/status/thunderbolt.js:320 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "Kan ikke godkjenne Thunderbolt-enhet: %s" #: js/ui/status/volume.js:218 msgid "Volume changed" msgstr "Volum endret" #: js/ui/status/volume.js:231 msgid "Unmute" msgstr "Opphev demping" #: js/ui/status/volume.js:231 msgid "Mute" msgstr "Demp" #: js/ui/status/volume.js:286 msgid "Volume" msgstr "Volum" #: js/ui/status/volume.js:302 msgid "Sound Output" msgstr "Lydutgang" #: js/ui/status/volume.js:374 msgid "Sound Input" msgstr "Lydinngang" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:20 msgid "Mirror" msgstr "Speil" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:29 msgid "Join Displays" msgstr "Slå sammen" #. Translators: this is for using only external displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:39 msgid "External Only" msgstr "Kun ekstern" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:47 msgid "Built-in Only" msgstr "Kun innebygget" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:378 msgid "%A %B %-d" msgstr "%A %-d. %B" #: js/ui/unlockDialog.js:384 msgid "Swipe up to unlock" msgstr "Sveip opp for å låse opp" #: js/ui/unlockDialog.js:385 msgid "Click or press a key to unlock" msgstr "Trykk for å låse opp" #: js/ui/unlockDialog.js:568 msgid "Unlock Window" msgstr "Lås opp vindu" #: js/ui/unlockDialog.js:577 msgid "Log in as another user" msgstr "Logg inn som annen bruker" #: js/ui/welcomeDialog.js:47 #, javascript-format msgid "GNOME %s" msgstr "GNOME %s" #: js/ui/welcomeDialog.js:51 #, javascript-format msgid "Welcome to %s" msgstr "Velkommen til %s" #: js/ui/welcomeDialog.js:52 msgid "If you want to learn your way around, check out the tour" msgstr "Hvis du ønsker en kort innføring, sjekk ut omvisningen" #: js/ui/welcomeDialog.js:61 msgid "Skip" msgstr "Hopp over" #: js/ui/welcomeDialog.js:66 msgid "Take Tour" msgstr "Ta omvisning" #: js/ui/windowAttentionHandler.js:18 #, javascript-format msgid "“%s” is ready" msgstr "«%s» er klar" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:68 msgid "Keep these display settings?" msgstr "Beholde disse skjerminnstillingene?" #: js/ui/windowManager.js:78 msgid "Revert Settings" msgstr "Tilbakestill" #: js/ui/windowManager.js:83 msgid "Keep Changes" msgstr "Behold" #: js/ui/windowManager.js:103 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "Endringer vil tilbakestilles om %d sekund" msgstr[1] "Endringer vil tilbakestilles om %d sekunder" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:500 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:40 msgid "Hide" msgstr "Skjul" #: js/ui/windowMenu.js:47 msgid "Restore" msgstr "Demaksimer" #: js/ui/windowMenu.js:51 msgid "Maximize" msgstr "Maksimer" #: js/ui/windowMenu.js:58 msgid "Move" msgstr "Flytt" #: js/ui/windowMenu.js:78 msgid "Resize" msgstr "Endre størrelse" #: js/ui/windowMenu.js:98 msgid "Always on Top" msgstr "Alltid øverst" #: js/ui/windowMenu.js:117 msgid "Always on Visible Workspace" msgstr "Alltid i synlig område" #: js/ui/windowMenu.js:131 msgid "Move to Workspace Left" msgstr "Flytt til venstre område" #: js/ui/windowMenu.js:137 msgid "Move to Workspace Right" msgstr "Flytt til høyre område" #: js/ui/windowMenu.js:143 msgid "Move to Workspace Up" msgstr "Flytt til område over" #: js/ui/windowMenu.js:149 msgid "Move to Workspace Down" msgstr "Flytt til område under" #: js/ui/windowMenu.js:167 msgid "Move to Monitor Up" msgstr "Flytt til skjerm over" #: js/ui/windowMenu.js:176 msgid "Move to Monitor Down" msgstr "Flytt til skjerm under" #: js/ui/windowMenu.js:185 msgid "Move to Monitor Left" msgstr "Flytt til venstre skjerm" #: js/ui/windowMenu.js:194 msgid "Move to Monitor Right" msgstr "Flytt til høyre skjerm" #: js/ui/windowMenu.js:202 msgid "Close" msgstr "Lukk" #: src/main.c:529 subprojects/extensions-tool/src/main.c:336 msgid "Print version" msgstr "Skriv versjon" #: src/main.c:535 msgid "Mode used by GDM for login screen" msgstr "Modus brukt av GDM til innloggingsskjerm" #: src/main.c:541 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "Bruk en spesifikk modus, for eksempel «gdm», til innloggingsskjerm" #: src/main.c:547 msgid "List possible modes" msgstr "List opp moduser" #: src/main.c:553 msgid "Force animations to be enabled" msgstr "Tving animasjoner til å være påslått" #: src/shell-app.c:252 msgctxt "program" msgid "Unknown" msgstr "Ukjent" #: src/shell-app.c:503 #, c-format msgid "Failed to launch “%s”" msgstr "Kunne ikke åpne «%s»" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match" msgstr "Passordene er ulike" #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "Passord kan ikke være tomt" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "Autentiseringsvindu lukket av bruker" #: src/st/st-icon-theme.c:1865 #, c-format msgid "Icon '%s' not present in theme %s" msgstr "Ikonet «%s» finnes ikke i settet «%s»" #: src/st/st-icon-theme.c:3454 src/st/st-icon-theme.c:3757 msgid "Failed to load icon" msgstr "Kunne ikke laste inn ikon" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 msgid "Manage your GNOME Extensions" msgstr "Hold styr på GNOME-utvidelsene dine" #. developer_name tag deprecated with Appstream 1.0 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:19 msgid "The GNOME Project" msgstr "GNOME" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:51 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" "GNOME Utvidelser håndterer oppdatering og tilpassing av utvidelser, og lar " "deg fjerne eller slå av uønskede utvidelser." #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:64 msgid "Main Window" msgstr "Hovedvindu" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:68 msgid "Available Updates" msgstr "Tilgjengelige oppdateringer" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:72 msgid "Search View" msgstr "Søkeside" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "Sett opp og tilpass GNOME-utvidelser" #: subprojects/extensions-app/js/extensionManager.js:237 #, javascript-format msgid "" "The installed version of this extension (%s) is incompatible with the " "current version of GNOME (%s). The extension has been disabled." msgstr "" "Den installerte versjonen av utvidelsen (%s) er inkompatibel med den " "nåværende GNOME-versjonen (%s). Utvidelsen har blitt slått av." #: subprojects/extensions-app/js/extensionManager.js:238 #, javascript-format msgid "" "The installed version of this extension is incompatible with the current " "version of GNOME (%s). The extension has been disabled." msgstr "" "Den installerte versjonen av utvidelsen er inkompatibel med den nåværende " "GNOME-versjonen (%s). Utvidelsen har blitt slått av." #: subprojects/extensions-app/js/extensionManager.js:242 msgid "" "An error has occurred in this extension. This could cause issues elsewhere " "in the system. It is recommended to turn the extension off until the error " "is resolved." msgstr "" "Noe har gått galt med utvidelsen. Dette kan føre til problemer på andre " "steder i systemet. Det anbefales å slå av utvidelsen til problemet er løst." #. translators: Details for an extension error #: subprojects/extensions-app/js/extensionManager.js:248 msgid "Error details:" msgstr "Informasjon:" #: subprojects/extensions-app/js/extensionRow.js:82 #, javascript-format msgid "Version %s" msgstr "Versjon %s" #: subprojects/extensions-app/js/extensionsWindow.js:113 #, javascript-format msgid "Remove “%s”?" msgstr "Fjerne «%s»?" #: subprojects/extensions-app/js/extensionsWindow.js:114 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "" "Hvis utvidelsen fjernes, må den lastes ned på nytt hvis du vil slå den på " "igjen" #: subprojects/extensions-app/js/extensionsWindow.js:117 msgid "_Cancel" msgstr "_Avbryt" #: subprojects/extensions-app/js/extensionsWindow.js:118 msgid "_Remove" msgstr "_Fjern" #: subprojects/extensions-app/js/extensionsWindow.js:158 msgid "translator-credits" msgstr "Brage Fuglseth" #: subprojects/extensions-app/js/extensionsWindow.js:203 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "%d utvidelse vil oppdateres ved neste innlogging." msgstr[1] "%d utvidelser vil oppdateres ved neste innlogging." #: subprojects/extensions-app/data/ui/extension-row.ui:22 msgid "Error Details" msgstr "Informasjon" #: subprojects/extensions-app/data/ui/extension-row.ui:62 msgid "Updates Details" msgstr "Oppdateringsinformasjon" #: subprojects/extensions-app/data/ui/extension-row.ui:72 msgid "" "A new version of this extension is ready and will be loaded on next login." msgstr "" "En ny versjon av utvidelsen er klar, og vil lastes inn ved neste innlogging." #: subprojects/extensions-app/data/ui/extension-row.ui:104 msgid "Extension Details" msgstr "Utvidelsesdetaljer" #: subprojects/extensions-app/data/ui/extension-row.ui:192 msgid "_Website" msgstr "_Nettsted" #: subprojects/extensions-app/data/ui/extension-row.ui:219 msgid "_Settings" msgstr "_Innstillinger" #: subprojects/extensions-app/data/ui/extension-row.ui:246 msgid "_Remove…" msgstr "_Fjern…" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Keyboard Shortcuts" msgstr "Tastatursnarveier" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "Om Utvidelser" #: subprojects/extensions-app/data/ui/extensions-window.ui:64 msgid "Main Menu" msgstr "Hovedmeny" #: subprojects/extensions-app/data/ui/extensions-window.ui:106 msgid "Search extensions" msgstr "Søk etter utvidelser" #: subprojects/extensions-app/data/ui/extensions-window.ui:134 msgid "_Extensions" msgstr "_Utvidelser" #: subprojects/extensions-app/data/ui/extensions-window.ui:139 msgid "More Information" msgstr "Mer informasjon" #: subprojects/extensions-app/data/ui/extensions-window.ui:151 msgid "" "Extensions can cause performance and stability issues. It is recommended to " "disable all extensions if you experience problems with your system." msgstr "" "Utvidelser kan føre til utfordringer med ytelse og stabilitet. Det anbefales " "å slå av utvidelser hvis du støter på problemer med systemet ditt." #: subprojects/extensions-app/data/ui/extensions-window.ui:178 msgid "User Extensions" msgstr "Brukerutvidelser" #: subprojects/extensions-app/data/ui/extensions-window.ui:198 msgid "System Extensions" msgstr "Systemutvidelser" #: subprojects/extensions-app/data/ui/extensions-window.ui:233 msgid "Search Results" msgstr "Søketreff" #: subprojects/extensions-app/data/ui/extensions-window.ui:252 msgid "No Results Found" msgstr "Ingen treff" #: subprojects/extensions-app/data/ui/extensions-window.ui:253 msgid "Try a different search" msgstr "Prøv et annet søk" #: subprojects/extensions-app/data/ui/extensions-window.ui:264 msgid "No Installed Extensions" msgstr "Ingen utvidelser installert" #: subprojects/extensions-app/data/ui/extensions-window.ui:265 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" "For å finne og installere utvidelser, besøk extensions.gnome.org." #: subprojects/extensions-app/data/ui/extensions-window.ui:276 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" "Kunne ikke laste inn listen med installerte utvidelser. Pass på at du er " "innlogget og prøv igjen." #: subprojects/extensions-app/data/ui/help-overlay.ui:9 msgctxt "shortcut window" msgid "General" msgstr "Generelt" #: subprojects/extensions-app/data/ui/help-overlay.ui:12 msgctxt "shortcut window" msgid "Open Menu" msgstr "Åpne meny" #: subprojects/extensions-app/data/ui/help-overlay.ui:18 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Søk" #: subprojects/extensions-app/data/ui/help-overlay.ui:24 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Vis snarveier" #: subprojects/extensions-app/data/ui/help-overlay.ui:30 msgctxt "shortcut window" msgid "Quit" msgstr "Avslutt" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:284 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "Den nye utvidelsen ble opprettet i %s.\n" #: subprojects/extensions-tool/src/command-create.c:376 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" "Navnet bør være kort, og helst beskriende.\n" "Noen eksempler: %s" #: subprojects/extensions-tool/src/command-create.c:382 #: subprojects/extensions-tool/src/main.c:243 msgid "Name" msgstr "Navn" #: subprojects/extensions-tool/src/command-create.c:396 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" "Beskrivelsen er en enkelt setning som forteller hva utvidelsen din gjør.\n" "Noen eksempler: %s" #: subprojects/extensions-tool/src/command-create.c:402 #: subprojects/extensions-tool/src/main.c:246 msgid "Description" msgstr "Beskrivelse" #: subprojects/extensions-tool/src/command-create.c:416 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" "UUID-en er et helt unikt øremerke for utvidelsen din.\n" "Dette bør være på formen til en e-postadresse, for eksempel " "«clicktofocus@janedoe.example.com»\n" #: subprojects/extensions-tool/src/command-create.c:443 msgid "Choose one of the available templates:\n" msgstr "Velg en av de tilgjengelige malene:\n" #: subprojects/extensions-tool/src/command-create.c:457 msgid "Template" msgstr "Mal" #: subprojects/extensions-tool/src/command-create.c:515 msgid "The unique identifier of the new extension" msgstr "Den nye utvidelsens unike øremerke" #: subprojects/extensions-tool/src/command-create.c:518 msgid "NAME" msgstr "NAVN" #: subprojects/extensions-tool/src/command-create.c:519 msgid "The user-visible name of the new extension" msgstr "Navnet som vises til brukere" #: subprojects/extensions-tool/src/command-create.c:521 msgid "DESCRIPTION" msgstr "BESKRIVELSE" #: subprojects/extensions-tool/src/command-create.c:523 msgid "A short description of what the extension does" msgstr "En kort beskrivelse av hva utvidelsen gjør" #: subprojects/extensions-tool/src/command-create.c:525 #: subprojects/extensions-tool/src/command-pack.c:455 msgid "DOMAIN" msgstr "DOMENE" #: subprojects/extensions-tool/src/command-create.c:527 msgid "The gettext domain used by the extension" msgstr "Gettext-domenet brukt av utvidelsen" #: subprojects/extensions-tool/src/command-create.c:529 #: subprojects/extensions-tool/src/command-pack.c:448 msgid "SCHEMA" msgstr "SKJEMA" #: subprojects/extensions-tool/src/command-create.c:531 msgid "The GSettings schema used by the extension" msgstr "GSettings-skjemaet brukt av utvidelsen" #: subprojects/extensions-tool/src/command-create.c:534 msgid "TEMPLATE" msgstr "MAL" #: subprojects/extensions-tool/src/command-create.c:535 msgid "The template to use for the new extension" msgstr "Malen som skal brukes for den nye utvidelsen" #: subprojects/extensions-tool/src/command-create.c:538 msgid "Include prefs.js template" msgstr "Inkluder prefs.js-mal" #: subprojects/extensions-tool/src/command-create.c:544 msgid "Enter extension information interactively" msgstr "Oppgi informasjon om utvidelse interaktivt" #: subprojects/extensions-tool/src/command-create.c:552 msgid "Create a new extension" msgstr "Lag ny utvidelse" #: subprojects/extensions-tool/src/command-create.c:570 #: subprojects/extensions-tool/src/command-list.c:190 msgid "Unknown arguments" msgstr "Ukjente argumenter" #: subprojects/extensions-tool/src/command-create.c:595 msgid "UUID, name and description are required" msgstr "Må ha UUID, navn og beskrivelse" #: subprojects/extensions-tool/src/command-disable.c:62 #: subprojects/extensions-tool/src/command-enable.c:62 #, c-format msgid "Extension “%s” does not exist\n" msgstr "Utvidelsen «%s» finnes ikke\n" #: subprojects/extensions-tool/src/command-disable.c:98 msgid "Disable an extension" msgstr "Slå av utvidelse" #: subprojects/extensions-tool/src/command-disable.c:116 #: subprojects/extensions-tool/src/command-enable.c:116 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "Ingen UUID oppgitt" #: subprojects/extensions-tool/src/command-disable.c:121 #: subprojects/extensions-tool/src/command-enable.c:121 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "Mer enn én UUID oppgitt" #: subprojects/extensions-tool/src/command-enable.c:98 msgid "Enable an extension" msgstr "Slå på utvidelse" #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:66 #: subprojects/extensions-tool/src/main.c:150 msgid "Failed to connect to GNOME Shell\n" msgstr "Kunne ikke koble til GNOME Shell\n" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:159 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "Utvidelsen «%s» finnes ikke\n" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "Vis info om utvidelser" #: subprojects/extensions-tool/src/command-install.c:190 msgid "Overwrite an existing extension" msgstr "Bytt ut eksisterende utvidelse" #: subprojects/extensions-tool/src/command-install.c:192 msgid "EXTENSION_BUNDLE" msgstr "UTVIDELSESPAKKE" #: subprojects/extensions-tool/src/command-install.c:201 msgid "Install an extension bundle" msgstr "Installer utvidelsespakke" #: subprojects/extensions-tool/src/command-install.c:219 msgid "No extension bundle specified" msgstr "Ingen utvidelsespakke oppgitt" #: subprojects/extensions-tool/src/command-install.c:225 msgid "More than one extension bundle specified" msgstr "Flere utvidelsespakker oppgitt" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show user-installed extensions" msgstr "Vis manuelt installerte utvidelser" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show system-installed extensions" msgstr "Vis innebygde utvidelser" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Show enabled extensions" msgstr "Vis påslåtte utvidelser" #: subprojects/extensions-tool/src/command-list.c:149 msgid "Show disabled extensions" msgstr "Vis avslåtte utvidelser" #: subprojects/extensions-tool/src/command-list.c:152 msgid "Show extensions in active state" msgstr "Vis aktive utvidelser" #: subprojects/extensions-tool/src/command-list.c:155 msgid "Show extensions in inactive state" msgstr "Vis inaktive utvidelser" #: subprojects/extensions-tool/src/command-list.c:158 msgid "Show extensions with preferences" msgstr "Vis utvidelser med innstillinger" #: subprojects/extensions-tool/src/command-list.c:161 msgid "Show extensions with updates" msgstr "Vis utvidelser med oppdateringer" #: subprojects/extensions-tool/src/command-list.c:164 msgid "Print extension details" msgstr "Skriv utvidelsesdetaljer" #: subprojects/extensions-tool/src/command-list.c:172 msgid "List installed extensions" msgstr "List opp installerte utvidelser" #: subprojects/extensions-tool/src/command-pack.c:444 msgid "FILE" msgstr "FIL" #: subprojects/extensions-tool/src/command-pack.c:445 msgid "Additional source to include in the bundle" msgstr "Tilleggskilde inkludert i pakken" #: subprojects/extensions-tool/src/command-pack.c:449 msgid "A GSettings schema that should be included" msgstr "Et GSettings-skjema som bør inkluderes" #: subprojects/extensions-tool/src/command-pack.c:451 #: subprojects/extensions-tool/src/command-pack.c:462 msgid "DIRECTORY" msgstr "MAPPE" #: subprojects/extensions-tool/src/command-pack.c:453 msgid "The directory where translations are found" msgstr "Mappe for oversettelser" #: subprojects/extensions-tool/src/command-pack.c:457 msgid "The gettext domain to use for translations" msgstr "Gettext-domene til bruk for oversettelser" #: subprojects/extensions-tool/src/command-pack.c:460 msgid "Overwrite an existing pack" msgstr "Bytt ut eksisterende pakke" #: subprojects/extensions-tool/src/command-pack.c:464 msgid "The directory where the pack should be created" msgstr "Mappe hvor pakken bør opprettes" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "SOURCE_DIRECTORY" msgstr "KILDEMAPPE" #: subprojects/extensions-tool/src/command-pack.c:475 msgid "Create an extension bundle" msgstr "Opprett utvidelsespakke" #: subprojects/extensions-tool/src/command-pack.c:495 msgid "More than one source directory specified" msgstr "Flere kildemapper oppgitt" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "«%s» har ingen innstillinger\n" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "Kunne ikke åpne innstillinger for «%s»: %s\n" #: subprojects/extensions-tool/src/command-prefs.c:87 msgid "Opens extension preferences" msgstr "Åpner innstillinger til utvidelse" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "Tilbakestill utvidelse" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "Kan ikke avinstallere innebygde utvidelser\n" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "" "Avinstallering av «%s»\n" " mislyktes\n" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "Avinstaller utvidelse" #: subprojects/extensions-tool/src/main.c:76 msgid "Do not print error messages" msgstr "Ikke skriv feilmeldinger" #: subprojects/extensions-tool/src/main.c:249 msgid "Path" msgstr "Sti" #: subprojects/extensions-tool/src/main.c:252 msgid "URL" msgstr "Lenke" #: subprojects/extensions-tool/src/main.c:255 msgid "Original author" msgstr "Opprinnelig forfatter" #: subprojects/extensions-tool/src/main.c:261 #: subprojects/extensions-tool/src/main.c:263 #: subprojects/extensions-tool/src/main.c:265 msgid "Version" msgstr "Versjon" #: subprojects/extensions-tool/src/main.c:268 msgid "Enabled" msgstr "Slått på" #: subprojects/extensions-tool/src/main.c:268 msgid "Yes" msgstr "Ja" #: subprojects/extensions-tool/src/main.c:268 msgid "No" msgstr "Nei" #: subprojects/extensions-tool/src/main.c:271 msgid "State" msgstr "Tilstand" #: subprojects/extensions-tool/src/main.c:309 msgid "“version” takes no arguments" msgstr "«version» tar ingen argumenter" #: subprojects/extensions-tool/src/main.c:311 #: subprojects/extensions-tool/src/main.c:331 msgid "Usage:" msgstr "Anvendelse:" #: subprojects/extensions-tool/src/main.c:314 msgid "Print version information and exit." msgstr "Skriv versjonsinformasjon og avslutt." #: subprojects/extensions-tool/src/main.c:329 #: subprojects/extensions-tool/src/main.c:332 msgid "COMMAND" msgstr "KOMMANDO" #: subprojects/extensions-tool/src/main.c:332 msgid "[ARGS…]" msgstr "[ARGUMENTER…]" #: subprojects/extensions-tool/src/main.c:334 msgid "Commands:" msgstr "Kommandoer:" #: subprojects/extensions-tool/src/main.c:335 msgid "Print help" msgstr "Skriv veiledning" #: subprojects/extensions-tool/src/main.c:337 msgid "Enable extension" msgstr "Slå på utvidelse" #: subprojects/extensions-tool/src/main.c:338 msgid "Disable extension" msgstr "Slå av utvidelse" #: subprojects/extensions-tool/src/main.c:339 msgid "Reset extension" msgstr "Tilbakestill utvidelse" #: subprojects/extensions-tool/src/main.c:340 msgid "Uninstall extension" msgstr "Avinstaller utvidelse" #: subprojects/extensions-tool/src/main.c:341 msgid "List extensions" msgstr "List opp utvidelser" #: subprojects/extensions-tool/src/main.c:342 #: subprojects/extensions-tool/src/main.c:343 msgid "Show extension info" msgstr "Vis informasjon om utvidelse" #: subprojects/extensions-tool/src/main.c:344 msgid "Open extension preferences" msgstr "Åpne innstillinger til utvidelse" #: subprojects/extensions-tool/src/main.c:345 msgid "Create extension" msgstr "Opprett utvidelse" #: subprojects/extensions-tool/src/main.c:346 msgid "Package extension" msgstr "Lag pakke av utvidelse" #: subprojects/extensions-tool/src/main.c:347 msgid "Install extension bundle" msgstr "Installer utvidelsespakke" #: subprojects/extensions-tool/src/main.c:349 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "Bruk «%s» for gjennomgående veiledning.\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "Enkel" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "En tom utvidelse" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "Indikator" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "Legg til et ikon i topplinjen" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:4 msgid "Quick Settings Item" msgstr "Kontrollsenter" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:5 msgid "Add an item to quick settings" msgstr "Legg til en knapp i kontrollsenteret" #. translators: #. * The device has been disabled #: subprojects/gvc/gvc-mixer-control.c:1872 msgid "Disabled" msgstr "Slått av" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1879 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u utgang" msgstr[1] "%u utganger" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1889 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u inngang" msgstr[1] "%u innganger" #: subprojects/gvc/gvc-mixer-control.c:2872 msgid "System Sounds" msgstr "Systemlyder" #~ msgid "Move Titlebar Onscreen" #~ msgstr "Flytt" #~ msgid "Stop conflicting session dialog closed" #~ msgstr "Vindu lukket" #, javascript-format #~ msgid "Try to login again to start a session for user %s." #~ msgstr "Prøv å logge inn igjen eller starte en økt med %s." #, javascript-format #~ msgid "%s is now known as %s" #~ msgstr "%s byttet navn til %s" #~ msgid "Network Manager" #~ msgstr "Nettverk" #~ msgid "Disabling" #~ msgstr "Slår av" #~ msgid "Enabling" #~ msgstr "Slår på" #~ msgid "Thunderbolt" #~ msgstr "Thunderbolt" #~ msgid "No Thanks" #~ msgstr "Nei takk" #~ msgid "No Matches" #~ msgstr "Ingen treff" #~ msgid "The extension had an error" #~ msgstr "Utvidelsen støtte på et problem" #~ msgid "The extension can be updated" #~ msgstr "Utvidelsen kan oppdateres" #~ msgid "Help" #~ msgstr "Hjelp" #~ msgid "Manually Installed" #~ msgstr "Manuelt installert" #~ msgid "Built-In" #~ msgstr "Innebygget" #~ msgid "Extension Updates Ready" #~ msgstr "Utvidelser kan oppdateres" 07070100000252000081A40000000000000000000000016712993F00020911000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/ne.po# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: Nepali Translation Gnome 3.26 dev\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" "POT-Creation-Date: 2022-09-17 18:27+0000\n" "PO-Revision-Date: 2022-09-19 10:55+0545\n" "Last-Translator: Pawan Chitrakar \n" "Language-Team: Nepali Translation Team \n" "Language: ne\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 3.0.1\n" "X-Poedit-SourceCharset: UTF-8\n" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "सुरुआत" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate favorite application 1" msgstr "मनपर्ने अनुप्रयोग १ सक्रिय पार्नुहोस्" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate favorite application 2" msgstr "मनपर्ने अनुप्रयोग २ सक्रिय पार्नुहोस्" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate favorite application 3" msgstr "मनपर्ने अनुप्रयोग ३ सक्रिय पार्नुहोस्" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate favorite application 4" msgstr "मनपर्ने अनुप्रयोग ४ सक्रिय पार्नुहोस्" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate favorite application 5" msgstr "मनपर्ने अनुप्रयोग ५ सक्रिय पार्नुहोस्" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate favorite application 6" msgstr "मनपर्ने अनुप्रयोग ६ सक्रिय पार्नुहोस्" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate favorite application 7" msgstr "मनपर्ने अनुप्रयोग ७ सक्रिय पार्नुहोस्" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate favorite application 8" msgstr "मनपर्ने अनुप्रयोग ८ सक्रिय पार्नुहोस्" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate favorite application 9" msgstr "मनपर्ने अनुप्रयोग ९ सक्रिय पार्नुहोस्" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2079 msgid "Screenshots" msgstr "स्क्रिनसट" #: data/50-gnome-shell-screenshots.xml:9 data/org.gnome.shell.gschema.xml.in:234 msgid "Take a screenshot interactively" msgstr "अन्तरक्रियात्मक रूपमा स्क्रिनसट लिनुहोस्" #: data/50-gnome-shell-screenshots.xml:12 data/org.gnome.shell.gschema.xml.in:246 msgid "Take a screenshot" msgstr "स्क्रीनको तस्बिर लीने" #: data/50-gnome-shell-screenshots.xml:15 data/org.gnome.shell.gschema.xml.in:242 msgid "Take a screenshot of a window" msgstr "विन्डोको तस्बिर लीने" #: data/50-gnome-shell-screenshots.xml:18 data/org.gnome.shell.gschema.xml.in:238 msgid "Record a screencast interactively" msgstr "अन्तरक्रियात्मक रूपमा स्क्रिनकास्ट रेकर्ड गर्नुहोस्" #: data/50-gnome-shell-system.xml:6 msgid "System" msgstr "प्रणाली" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "सूचना सुची देखाउनुहोस्" #: data/50-gnome-shell-system.xml:12 msgid "Focus the active notification" msgstr "सक्रिय सुचना फोकस" #: data/50-gnome-shell-system.xml:15 msgid "Show the overview" msgstr "अधिलेखन हेर्नुहोस्" #: data/50-gnome-shell-system.xml:18 msgid "Show all applications" msgstr "सबै अनुप्रयोगहरू देखाउनुहोस्" #: data/50-gnome-shell-system.xml:21 msgid "Open the application menu" msgstr "अनुप्रयोग मेनु खोल्नुहोस्" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "जिनोम शेल" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "सञ्झ्याल प्रबन्ध र अनुप्रयोग सुरुआत " #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "Alt-F2 बाट विकासकर्ता र परीक्षकका लागि उपयोगी आन्तरिक उपकरण सक्षम पार्नुहोस्" #: data/org.gnome.shell.gschema.xml.in:9 msgid "Allows access to internal debugging and monitoring tools using the Alt-F2 dialog." msgstr "Alt-F2 संवाद प्रयोग गरेर आन्तरिक त्रुटि सच्याउने र अनुगमन गर्ने उपकरणमा पहुँच अनुमति दिन्छ ।" #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "सक्षम पार्नका लागि विस्तारको UUIDs" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which should be loaded. " "Any extension that wants to be loaded needs to be in this list. You can also manipulate this list " "with the EnableExtension and DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "जिनोम शेल विस्तारसँग UUID गुण छ; यो कुञ्जीले लोड गर्नुपर्ने विस्तारहरू सूचीबद्ध गर्दछ । लोड हुन चाहने कुनै पनि विस्तार " "यो सूचीमा हुनु आवश्यक छ । तपाईँले org.gnome.Shell मा EnableExtension र DisableExtension D-Bus विधिहरूसँग " "पनि यो सूची मिलाउन सक्नुहुन्छ ।" #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "अक्षम पार्नका लागि विस्तारको UUIDs" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which should be disabled, " "even if loaded as part of the current mode. You can also manipulate this list with the " "EnableExtension and DisableExtension D-Bus methods on org.gnome.Shell. This key takes precedence " "over the “enabled-extensions” setting." msgstr "" "जिनोम शेल विस्तारसँग UUID गुण छ; यो कुञ्जीले हालको मोडको भागको रूपमा लोड गरिएको भएता पनि, अक्षम गरिनुपर्ने " "विस्तारहरू सूचीबद्ध गर्दछ । तपाईँले org.gnome.Shell मा EnableExtension र DisableExtension D-Bus विधिहरूसँग " "पनि यो सूची मिलाउन सक्नुहुन्छ । यो कुञ्जीले \"सक्षम-विस्तार\" सेटिङ भन्दा प्राथमिकता लिन्छ ।" #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "सेल विस्तारहरू असक्षम पार्नुहोस्" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-extension” setting." msgstr "\"सक्षम-विस्तार\" सेटिङलाई प्रभाव नपारिकन प्रयोगकर्ताले सक्षम पारेको सबै विस्तार अक्षम पार्नुहोस् ।" #: data/org.gnome.shell.gschema.xml.in:45 msgid "Disables the validation of extension version compatibility" msgstr "विस्तार संस्करण अनुकूलताको वैधता अक्षम पार्दछ" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "GNOME Shell will only load extensions that claim to support the current running version. Enabling " "this option will disable this check and try to load all extensions regardless of the versions " "they claim to support." msgstr "" "जिनोम शेलले हालको चलिरहेको संस्करणलाई समर्थन गर्ने दावा विस्तार मात्र लोड गर्नेछ । यो विकल्प सक्षम पार्दा यो जाँच " "अक्षम पारिनेछ र तिनीहरूले समर्थन गरेको दावी गरे तापनि सबै विस्तारहरू लोड गर्ने प्रयास गर्नुहोस् ।" #: data/org.gnome.shell.gschema.xml.in:54 msgid "List of desktop file IDs for favorite applications" msgstr "अनुकूल अनुप्रयोगका लागि डेस्कटप फाइल IDको सूची" #: data/org.gnome.shell.gschema.xml.in:55 msgid "The applications corresponding to these identifiers will be displayed in the favorites area." msgstr "यी पहिचायकसँग सङ्गत अनुप्रयोगहरू मनपर्ने क्षेत्रमा प्रदर्शित हुनेछन् ।" #: data/org.gnome.shell.gschema.xml.in:62 msgid "History for command (Alt-F2) dialog" msgstr "आदेश (Alt-F2) संवादका लागि इतिहास" #. Translators: looking glass is a debugger and inspector tool, see https://wiki.gnome.org/Projects/GnomeShell/LookingGlass #: data/org.gnome.shell.gschema.xml.in:67 msgid "History for the looking glass dialog" msgstr "देखिने सिसा संवादका लागि इतिहास" #: data/org.gnome.shell.gschema.xml.in:71 msgid "Always show the “Log out” menu item in the user menu." msgstr "प्रयोगकर्ता मेनुमा जहिले पनि \"लगआउट\" मेनु वस्तु देखाउनुहोस् ।" #: data/org.gnome.shell.gschema.xml.in:72 msgid "" "This key overrides the automatic hiding of the “Log out” menu item in single-user, single-session " "situations." msgstr "यो कुञ्जीले एकल-प्रयोगकर्ता, एकल सत्र परिस्थितिहरूमा \"लग आउट\" मेनु वस्तुको स्वचालित लुकेर अधिरोहण गर्दछ ।" #: data/org.gnome.shell.gschema.xml.in:79 msgid "Whether to remember password for mounting encrypted or remote filesystems" msgstr "गुप्तिकरण गरिएको वा टाढाको फाइल प्रणाली माउन्ट गर्नका लागि पासवर्ड सम्झनुहोस्" #: data/org.gnome.shell.gschema.xml.in:80 msgid "" "The shell will request a password when an encrypted device or a remote filesystem is mounted. If " "the password can be saved for future use a “Remember Password” checkbox will be present. This key " "sets the default state of the checkbox." msgstr "" "गुप्तिकृत यन्त्र वा टाढाको फाइल प्रणाली माउन्ट हुँदा शेलले पासवर्ड अनुरोध गर्नेछ । यदि भविष्यका लागि पासवर्ड बचत " "गर्न सकिन्छ भने \"पासवर्ड सम्झनुहोस्\" जाँच बाकस उपस्थित हुनेछ । यस कुञ्जीले जाँच बाकसको पूर्वनिर्धारित स्थिति सेट " "गर्दछ ।" #: data/org.gnome.shell.gschema.xml.in:89 msgid "The last selected non-default power profile" msgstr "अन्तिम चयन गरिएको गैर-पूर्वनिर्धारित पावर प्रोफाइल" #: data/org.gnome.shell.gschema.xml.in:90 msgid "" "Some systems support more than two power profiles. In order to still support toggling between two " "profiles, this key records the last selected non-default profile." msgstr "" "केही प्रणालीहरूले दुई भन्दा बढी पावर प्रोफाइलहरू समर्थन गर्दछ। अझै पनि दुई प्रोफाइलहरू बीच टगलिङ समर्थन गर्न, यो " "कुञ्जीले अन्तिम चयन गरिएको गैर-पूर्वनिर्धारित प्रोफाइल रेकर्ड गर्दछ।" #: data/org.gnome.shell.gschema.xml.in:98 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "\"जिनोममा स्वागत छ\" संवादको अन्तिम संस्करण यसका लागि देखाइएको थियो" #: data/org.gnome.shell.gschema.xml.in:99 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last shown. An empty " "string represents the oldest possible version, and a huge number will represent versions that do " "not exist yet. This huge number can be used to effectively disable the dialog." msgstr "" "यस कुञ्जीले पछिल्लो पटक देखाइएको \"जिनोममा स्वागत छ\" संवाद कुन संस्करणका लागि निर्धारण गर्दछ । एउटा खाली " "स्ट्रिङले सबैभन्दा पुरानो सम्भावित संस्करणलाई प्रतिनिधित्व गर्दछ, र ठूलो सङ्ख्याले संस्करणहरूको प्रतिनिधित्व गर्दछ जुन " "अहिलेसम्म अवस्थित छैन । यो ठूलो सङ्ख्यालाई प्रभावकारी तरिकाले संवाद अक्षम पार्न प्रयोग गर्न सकिन्छ ।" #: data/org.gnome.shell.gschema.xml.in:132 msgid "Layout of the app picker" msgstr "अनुप्रयोग पिकरको सजावट" #: data/org.gnome.shell.gschema.xml.in:133 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are stored in the order they " "appear in GNOME Shell. Each page contains an “application id” → 'data' pair. Currently, the " "following values are stored as 'data': • “position”: the position of the application icon in the " "page" msgstr "" "अनुप्रयोग पिकरको सजावट । एरेमा प्रत्येक प्रविष्टि एउटा पृष्ठ हो । पृष्ठहरू जिनोम शेलमा देखिने क्रममा भण्डारण गरिएका " "छन् । प्रत्येक पृष्ठले 'डाटा' जोडी→ \"अनुप्रयोग आईडी\" समाविष्ट गर्दछ । हाल, निम्न मानहरू 'डाटा' को रूपमा " "भण्डारण गरिएका छन्: • \"स्थिति\": पृष्ठमा अनुप्रयोग प्रतिमाको स्थिति" #: data/org.gnome.shell.gschema.xml.in:148 msgid "Keybinding to open the application menu" msgstr "मेनुबारलाई सक्रिय गर्न किबाइन्डिङ्ग" #: data/org.gnome.shell.gschema.xml.in:149 msgid "Keybinding to open the application menu." msgstr "मेनुबारलाई सक्रिय गर्न किबाइन्डिङ्ग।" #: data/org.gnome.shell.gschema.xml.in:155 data/org.gnome.shell.gschema.xml.in:162 msgid "Keybinding to shift between overview states" msgstr "सदृष्य स्थिति बीचमा शिफ्ट गर्न कुञ्जी बाइन्डिङ" #: data/org.gnome.shell.gschema.xml.in:156 msgid "Keybinding to shift between session, window picker and app grid" msgstr "सत्र, सञ्झ्याल पिकर र अनुप्रयोग ग्रिड बीचमा शिफ्ट गर्न कुञ्जी बाइन्डिङ ।" #: data/org.gnome.shell.gschema.xml.in:163 msgid "Keybinding to shift between app grid, window picker and session" msgstr "अनुप्रयोग ग्रिड, सञ्झ्याल पिकर र सत्र बीचमा शिफ्ट गर्न कुञ्जी बाइन्डिङ" #: data/org.gnome.shell.gschema.xml.in:169 msgid "Keybinding to open the “Show Applications” view" msgstr "\"अनुप्रयोग देखाउनुहोस्\" दृश्य खोल्नका लागि कुञ्जी बाइन्डिङ ।" #: data/org.gnome.shell.gschema.xml.in:170 msgid "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "क्रियाकलाप अवलोकनको \"अनुप्रयोग देखाउनुहोस्\" सदृश्य खोल्नका लागि कुञ्जी बाइन्डिङ ।" #: data/org.gnome.shell.gschema.xml.in:177 msgid "Keybinding to open the overview" msgstr "सदृश्य खुल्नका लागि कुञ्जी बाइन्डिङ" #: data/org.gnome.shell.gschema.xml.in:178 msgid "Keybinding to open the Activities Overview." msgstr "क्रियाकलापको सदृश्य खोल्नका लागि कुञ्जी बाइन्डिङ ।" #: data/org.gnome.shell.gschema.xml.in:184 msgid "Keybinding to toggle the visibility of the notification list" msgstr "सूचना सूचीको दृश्यात्मकता टगल गर्ने कुञ्जी बाइन्डिङ" #: data/org.gnome.shell.gschema.xml.in:185 msgid "Keybinding to toggle the visibility of the notification list." msgstr "सूचना सूचीको दृश्यात्मकता टगल गर्ने कुञ्जी बाइन्डिङ ।" #: data/org.gnome.shell.gschema.xml.in:191 msgid "Keybinding to focus the active notification" msgstr "सक्रिय सूचना केन्द्रित गर्न कुञ्जी बाइन्डिङ" #: data/org.gnome.shell.gschema.xml.in:192 msgid "Keybinding to focus the active notification." msgstr "सक्रिय सूचना केन्द्रित गर्न कुञ्जी बाइन्डिङ ।" #: data/org.gnome.shell.gschema.xml.in:198 msgid "Switch to application 1" msgstr "अनुप्रयोग १ स्विच गर्नुहोस्" #: data/org.gnome.shell.gschema.xml.in:202 msgid "Switch to application 2" msgstr "अनुप्रयोग २ स्विच गर्नुहोस्" #: data/org.gnome.shell.gschema.xml.in:206 msgid "Switch to application 3" msgstr "अनुप्रयोग ३ स्विच गर्नुहोस्" #: data/org.gnome.shell.gschema.xml.in:210 msgid "Switch to application 4" msgstr "अनुप्रयोग ४ स्विच गर्नुहोस्" #: data/org.gnome.shell.gschema.xml.in:214 msgid "Switch to application 5" msgstr "अनुप्रयोग ५ स्विच गर्नुहोस्" #: data/org.gnome.shell.gschema.xml.in:218 msgid "Switch to application 6" msgstr "अनुप्रयोग ६ स्विच गर्नुहोस्" #: data/org.gnome.shell.gschema.xml.in:222 msgid "Switch to application 7" msgstr "अनुप्रयोग ७ स्विच गर्नुहोस्" #: data/org.gnome.shell.gschema.xml.in:226 msgid "Switch to application 8" msgstr "अनुप्रयोग ८ स्विच गर्नुहोस्" #: data/org.gnome.shell.gschema.xml.in:230 msgid "Switch to application 9" msgstr "अनुप्रयोग ९ स्विच गर्नुहोस्" #: data/org.gnome.shell.gschema.xml.in:255 data/org.gnome.shell.gschema.xml.in:282 msgid "Limit switcher to current workspace." msgstr "हालको कार्यस्थानमा स्विचर सिमित गर्नुहोस् ।" #: data/org.gnome.shell.gschema.xml.in:256 msgid "" "If true, only applications that have windows on the current workspace are shown in the switcher. " "Otherwise, all applications are included." msgstr "" "ठीक भएमा, हालको कार्यस्थानमा सञ्झ्याल भएका अनुप्रयोगहरू मात्र स्विचकर्तामा देखिन्छन् । अन्यथा, सबै अनुप्रयोगहरू " "समावेश गरिएका छन् ।" #: data/org.gnome.shell.gschema.xml.in:273 msgid "The application icon mode." msgstr "अनुप्रयोग प्रतिमा मात्रै." #: data/org.gnome.shell.gschema.xml.in:274 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities are “thumbnail-" "only” (shows a thumbnail of the window), “app-icon-only” (shows only the application icon) or " "“both”." msgstr "" "स्विचरमा सञ्झ्याल देखाउने तरिका कन्फिगर गर्दछ । वैध सम्भावनाहरू \"थम्बनेल मात्र\" (सञ्झ्यालको थम्बनेल देखाउँदछ), " "\"अनुप्रयोग प्रतिमा-मात्र\" (अनुप्रयोग प्रतिमा मात्र देखाउँदछ) वा \"दुबै\" हुन्।" #: data/org.gnome.shell.gschema.xml.in:283 msgid "" "If true, only windows from the current workspace are shown in the switcher. Otherwise, all " "windows are included." msgstr "" "ठीक भएमा, हालको कार्यस्थानबाट सञ्झ्याल मात्र स्विचकर्तामा देखाइन्छ । अन्यथा, सबै सञ्झ्यालहरू समावेश गरिएका छन् ।" #: data/org.gnome.shell.gschema.xml.in:293 msgid "Locations" msgstr "स्थानहरू" #: data/org.gnome.shell.gschema.xml.in:294 msgid "The locations to show in world clocks" msgstr "विश्व घडिमा प्रदर्शन हुने स्थानहरु" #: data/org.gnome.shell.gschema.xml.in:304 msgid "Automatic location" msgstr "स्वत: स्थान" #: data/org.gnome.shell.gschema.xml.in:305 msgid "Whether to fetch the current location or not" msgstr "हालको स्थान ल्याउने वा नल्याउने" #: data/org.gnome.shell.gschema.xml.in:312 msgid "Location" msgstr "स्थान" #: data/org.gnome.shell.gschema.xml.in:313 msgid "The location for which to show a forecast" msgstr "मौसम पूर्वानुमान देखाउनका लागि स्थान" #: data/org.gnome.shell.gschema.xml.in:325 msgid "Attach modal dialog to the parent window" msgstr "प्रमूल सञ्झ्यालमा मोडल संवाद संलग्न गर्नुहोस्" #: data/org.gnome.shell.gschema.xml.in:326 data/org.gnome.shell.gschema.xml.in:335 #: data/org.gnome.shell.gschema.xml.in:343 data/org.gnome.shell.gschema.xml.in:351 #: data/org.gnome.shell.gschema.xml.in:359 msgid "This key overrides the key in org.gnome.mutter when running GNOME Shell." msgstr "यो कुञ्जीले जिनोम शेल चलाउदा org.gnome.mutter मा कुञ्जी अधिरोहण गर्दछ ।" #: data/org.gnome.shell.gschema.xml.in:334 msgid "Enable edge tiling when dropping windows on screen edges" msgstr "स्क्रिन किनाराहरूमा सञ्झ्याल छोड्दा किनारा टायल सक्षम गर्नुहोस्" #: data/org.gnome.shell.gschema.xml.in:342 msgid "Workspaces are managed dynamically" msgstr "कार्यस्थान गतिशील रूपमा व्यवस्थापन गरिन्छ" #: data/org.gnome.shell.gschema.xml.in:350 msgid "Workspaces only on primary monitor" msgstr "प्राथमिक मोनिटरमा मात्र कार्यस्थान" #: data/org.gnome.shell.gschema.xml.in:358 msgid "Delay focus changes in mouse mode until the pointer stops moving" msgstr "सूचक ले चालन नरोकेसम्म माउस मोडमा फोकस परिवर्तन विलम्ब गर्नुहोस्" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "सञ्जाल लगईन" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:144 msgid "Something’s gone wrong" msgstr "केही गलत भयो" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this extension can’t be displayed. " "We recommend that you report the issue to the extension authors." msgstr "" "हामीलाई धेरै दुःख लाग्छ, तर त्यहाँ एउटा समस्या भएको छ: यो विस्तारका लागि सेटिङ हरू प्रदर्शन गर्न सकिँदैन। हामी " "तपाईँलाई यो विषय विस्तार लेखकलाई प्रतिवेदन गर्न सुझाव दिन्छौं ।" #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "प्राविधिक विवरण" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "गृहपृष्ठ" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 msgid "Visit extension homepage" msgstr "विस्तार गृहपृष्ठ हेर्नुहोस्" #: js/gdm/authPrompt.js:144 js/ui/audioDeviceSelection.js:61 js/ui/components/networkAgent.js:109 #: js/ui/components/polkitAgent.js:141 js/ui/endSessionDialog.js:440 #: js/ui/extensionDownloader.js:223 js/ui/shellMountOperation.js:377 #: js/ui/shellMountOperation.js:387 subprojects/extensions-app/js/main.js:173 msgid "Cancel" msgstr "_रद्द" #: js/gdm/authPrompt.js:307 js/ui/components/networkAgent.js:209 #: js/ui/components/networkAgent.js:229 js/ui/components/networkAgent.js:261 #: js/ui/components/networkAgent.js:294 js/ui/components/networkAgent.js:333 #: js/ui/components/networkAgent.js:346 js/ui/components/polkitAgent.js:283 #: js/ui/shellMountOperation.js:327 msgid "Password" msgstr "पासवर्ड" #: js/gdm/loginDialog.js:317 msgid "Choose Session" msgstr "सेसन छान।नुहोस्" #: js/gdm/loginDialog.js:462 msgid "Not listed?" msgstr "सूचीमा नभएको ?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:930 #, javascript-format msgid "(e.g., user or %s)" msgstr "(जस्तै, प्रयोगकर्ता वा %s)" #: js/gdm/loginDialog.js:935 js/ui/components/networkAgent.js:253 #: js/ui/components/networkAgent.js:288 js/ui/components/networkAgent.js:322 msgid "Username" msgstr "प्रयोगकर्ता नाम" #: js/gdm/loginDialog.js:1258 msgid "Login Window" msgstr "सञ्झ्याल लगइन गर्नुहोस्" #: js/gdm/util.js:431 msgid "Authentication error" msgstr "प्रमाणीकरण त्रुति" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:603 msgid "(or swipe finger across reader)" msgstr "(वा पढ्नेमा औंला स्वाइप गर्नुहोस्)" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:608 msgid "(or place finger on reader)" msgstr "(वा पढ्नेमा औँला राख्नुहोस्)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:84 msgctxt "search-result" msgid "Power Off" msgstr "पावर बन्द" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:87 msgid "power off;shutdown;halt;stop" msgstr "पावर बन्द;बन्द गर्नुहोस्;रोक्ने;रोक्नुहोस्" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:92 msgctxt "search-result" msgid "Restart" msgstr "पुन: सुरु गर्नुहोस्" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:95 msgid "reboot;restart;" msgstr "पुन: बुट;फेरि सुरु गर्नुहोस्;" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:100 msgctxt "search-result" msgid "Lock Screen" msgstr "पर्दा ताल्चा लगाउनुहोस्" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:103 msgid "lock screen" msgstr "पर्दा ताला लगाउ" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:108 msgctxt "search-result" msgid "Log Out" msgstr "लगआउट" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:111 msgid "logout;log out;sign off" msgstr "लगआउट;लग आउट;साइन अफ" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:116 msgctxt "search-result" msgid "Suspend" msgstr "निश्क्रिय गर्ने" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:119 msgid "suspend;sleep" msgstr "निलम्बन गर्नुहोस्;निदाउनुहोस्" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:124 msgctxt "search-result" msgid "Switch User" msgstr "स्विच प्रयोगकर्ता" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:127 msgid "switch user" msgstr "स्विच प्रयोगकर्ता" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:134 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "अभिमुखिकरण ताल्चा लगाउनुहोस्;अभिमुखीकरण अनलक गर्नुहोस्;पर्दा;परिक्रमण" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:139 msgctxt "search-result" msgid "Take a Screenshot" msgstr "स्क्रिनसट लिनुहोस्" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:142 msgid "screenshot;screencast;snip;capture;record" msgstr "स्क्रिनसट;स्क्रिनकास्ट;स्निप;क्याप्चर;रेकर्ड" #: js/misc/systemActions.js:242 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "पर्दा परिक्रमण ताल्चा बाट हटाउनुहोस्" #: js/misc/systemActions.js:243 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "पर्दा परिक्रमण ताल्चा लगाउनुहोस्" #: js/misc/util.js:129 msgid "Command not found" msgstr "आदेश फेला परेन ।" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:166 msgid "Could not parse command:" msgstr "आदेश पद वर्णन गर्न सकेन:" #: js/misc/util.js:174 #, javascript-format msgid "Execution of “%s” failed:" msgstr "\"%s\" कार्यान्वयन असफल:" #: js/misc/util.js:191 msgid "Just now" msgstr "अहिले" #: js/misc/util.js:193 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d मिनेट पहिला" msgstr[1] "%d मिनेट पहिला" #: js/misc/util.js:197 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d घण्टा पहिला" msgstr[1] "%d घण्टा पहिला" #: js/misc/util.js:201 js/ui/dateMenu.js:167 msgid "Yesterday" msgstr "हिजो" #: js/misc/util.js:203 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d दिन पहिला" msgstr[1] "%d दिन पहिला" #: js/misc/util.js:207 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d हप्ता पहिला" msgstr[1] "%d हप्ता अगाडि" #: js/misc/util.js:211 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%d महिना पहिला" msgstr[1] "%d महिना अघि" #: js/misc/util.js:214 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "%d वर्ष अगाडि" msgstr[1] "%d वर्ष अघि" #. Translators: Time in 24h format #: js/misc/util.js:247 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/util.js:253 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "हिजो %H∶%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/util.js:259 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/util.js:265 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%B %-d, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/util.js:271 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%B %-d %Y, %H∶%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/util.js:276 msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/util.js:282 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "हिजो %l∶%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/util.js:288 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/util.js:294 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%B %-d, %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/util.js:300 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%B %-d %Y, %l∶%M %p" #: js/portalHelper/main.js:55 msgid "Hotspot Login" msgstr "हटस्पट लगईन" #: js/portalHelper/main.js:108 msgid "" "Your connection to this hotspot login is not secure. Passwords or other information you enter on " "this page can be viewed by people nearby." msgstr "" "यो हटस्पट लगइनमा तपाईँको जडान सुरक्षित छैन । यो पृष्ठमा तपाईँले प्रविष्ट गरेको पासवर्ड वा अन्य जानकारी नजिकका " "मानिसहरूले हेर्न सक्छन् ।" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:39 js/ui/status/location.js:350 msgid "Deny Access" msgstr "अस्वीकार गर्नुहोस्" #: js/ui/accessDialog.js:40 js/ui/status/location.js:355 msgid "Grant Access" msgstr "अनुमति दिनुहोस्" #: js/ui/appDisplay.js:1728 msgid "Unnamed Folder" msgstr "बेनामी फोलडर" #: js/ui/appFavorites.js:166 #, javascript-format msgid "%s has been pinned to the dash." msgstr "%s ड्यासमा पिन गरिएको छ ।" #: js/ui/appFavorites.js:199 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "%s ड्यासबाट अनपिन गरिएको छ ।" #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:46 msgid "Open Windows" msgstr "सञ्झ्याल खोल्नुहोस्" #: js/ui/appMenu.js:54 msgid "New Window" msgstr "नयाँ सञ्झ्याल" #: js/ui/appMenu.js:81 msgid "Show Details" msgstr "अरू धेरै विवरण देखाउनुहोस्" #: js/ui/appMenu.js:97 msgid "Quit" msgstr "अन्त्य गर्नुहोस्" #: js/ui/appMenu.js:157 js/ui/dash.js:249 msgid "Unpin" msgstr "अनपिन" #: js/ui/appMenu.js:158 msgid "Pin to Dash" msgstr "ड्यासमा पिन गर्नुहोस्" #: js/ui/appMenu.js:175 msgid "Launch using Integrated Graphics Card" msgstr "एकीकृत ग्राफिक्स कार्ड प्रयोग गरेर सुरु गर्नुहोस्" #: js/ui/appMenu.js:176 msgid "Launch using Discrete Graphics Card" msgstr "डिस्क्रेट ग्राफिक्स कार्ड प्रयोग गरेर सुरु गर्नुहोस्" #: js/ui/audioDeviceSelection.js:41 msgid "Select Audio Device" msgstr "ध्वनी यन्त्र छन्नुहोस्" #: js/ui/audioDeviceSelection.js:56 js/ui/status/volume.js:63 msgid "Sound Settings" msgstr "ध्वोनिका सेटिङ्स" #: js/ui/audioDeviceSelection.js:69 msgid "Headphones" msgstr "हेडफोनहरू" #: js/ui/audioDeviceSelection.js:71 msgid "Headset" msgstr "हेडसेट" #: js/ui/audioDeviceSelection.js:73 js/ui/status/volume.js:319 msgid "Microphone" msgstr "माईक्रोफोन" #: js/ui/backgroundMenu.js:14 msgid "Change Background…" msgstr "पृष्ठभूमि परिवर्तन गर्नुहोस्…" #: js/ui/backgroundMenu.js:16 msgid "Display Settings" msgstr "अनुकूलता देखाउ" #: js/ui/backgroundMenu.js:17 subprojects/extensions-app/data/ui/extension-row.ui:122 msgid "Settings" msgstr "सेटिङ" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:35 msgctxt "calendar-no-work" msgid "06" msgstr "०६" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:61 msgctxt "grid sunday" msgid "S" msgstr "S" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:63 msgctxt "grid monday" msgid "M" msgstr "M" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:65 msgctxt "grid tuesday" msgid "T" msgstr "T" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:67 msgctxt "grid wednesday" msgid "W" msgstr "W" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:69 msgctxt "grid thursday" msgid "T" msgstr "T" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:71 msgctxt "grid friday" msgid "F" msgstr "F" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:73 msgctxt "grid saturday" msgid "S" msgstr "S" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:414 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:424 msgid "%OB %Y" msgstr "%OB %Y" #: js/ui/calendar.js:485 msgid "Previous month" msgstr "पहिलो महिना" #: js/ui/calendar.js:503 msgid "Next month" msgstr "अर्को महिना" #: js/ui/calendar.js:654 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:713 msgid "Week %V" msgstr "%V हप्ता" #: js/ui/calendar.js:892 msgid "No Notifications" msgstr "सूचनाहरू छैन" #: js/ui/calendar.js:949 msgid "Do Not Disturb" msgstr "डिस्टर्ब नगर्नुहोस्" #: js/ui/calendar.js:970 msgid "Clear" msgstr "खाली गर्नुहोस्" #. Translators: %s is an application name #: js/ui/closeDialog.js:40 #, javascript-format msgid "“%s” is not responding." msgstr "\"%s\" ले प्रतिक्रिया दिइरहेको छैन ।" #: js/ui/closeDialog.js:41 msgid "" "You may choose to wait a short while for it to continue or force the application to quit entirely." msgstr "" "तपाईँले अनुप्रयोगलाई जारी राख्न केही समय प्रतिक्षा गर्नुहोस् रोज्न वा यसलाई पूर्ण रूपमा अन्त्य गर्न दवाब दिन सक्नुहुन्छ " "।" #: js/ui/closeDialog.js:69 msgid "Force Quit" msgstr "_अन्त्य गर्न दवाब दिनुहोस्" #: js/ui/closeDialog.js:74 msgid "Wait" msgstr "_प्रतिक्षा गर्नुहोस्" #: js/ui/components/automountManager.js:84 msgid "External drive connected" msgstr "बाहिरि ड्राइभ जडान भयो" #: js/ui/components/automountManager.js:96 msgid "External drive disconnected" msgstr "बाहिरि ड्राइभ विच्छेद भयो" #: js/ui/components/automountManager.js:207 msgid "Unable to unlock volume" msgstr "भोल्युम अनलक गर्न असक्षम" #: js/ui/components/automountManager.js:208 msgid "The installed udisks version does not support the PIM setting" msgstr "स्थापना गरिएको udisks संस्करणले PIM सेटिङलाई समर्थन गर्दैन" #: js/ui/components/autorunManager.js:316 #, javascript-format msgid "Open with %s" msgstr "%s सँग खोल्नुहोस्" #: js/ui/components/networkAgent.js:91 msgid "Alternatively you can connect by pushing the “WPS” button on your router." msgstr "वैकल्पिक रूपमा तपाईँले आफ्नो राउटरमा \"WPS\" बटन थिचेर जडान गर्न सक्नुहुन्छ ।" #: js/ui/components/networkAgent.js:103 js/ui/status/network.js:436 msgid "Connect" msgstr "जडान गर्नुहोस्" #: js/ui/components/networkAgent.js:218 msgid "Key" msgstr "कुञ्जी" #: js/ui/components/networkAgent.js:269 js/ui/components/networkAgent.js:308 msgid "Private key password" msgstr "निजी कुञ्जी पासवर्ड" #: js/ui/components/networkAgent.js:302 msgid "Identity" msgstr "परिचय" #: js/ui/components/networkAgent.js:328 msgid "Service" msgstr "सेवा" #: js/ui/components/networkAgent.js:366 js/ui/components/networkAgent.js:402 #: js/ui/components/networkAgent.js:747 js/ui/components/networkAgent.js:768 msgid "Authentication required" msgstr "प्रमाणीकरण आवश्यक" #: js/ui/components/networkAgent.js:367 js/ui/components/networkAgent.js:748 #, javascript-format msgid "Passwords or encryption keys are required to access the wireless network “%s”." msgstr "तार रहित सञ्जाल \"%s\" पहुँच गर्न पासवर्ड वा गुप्तिकरण कुञ्जी आवश्यक हुन्छ ।" #: js/ui/components/networkAgent.js:371 js/ui/components/networkAgent.js:752 msgid "Wired 802.1X authentication" msgstr "Wired 802.1X प्रमाणीकरण" #: js/ui/components/networkAgent.js:374 msgid "Network name" msgstr "सञ्जाल नाम" #: js/ui/components/networkAgent.js:382 js/ui/components/networkAgent.js:756 msgid "DSL authentication" msgstr "DSL प्रमाणीकरण" #: js/ui/components/networkAgent.js:389 js/ui/components/networkAgent.js:761 msgid "PIN code required" msgstr "पिन कोड आवश्यक" #: js/ui/components/networkAgent.js:390 js/ui/components/networkAgent.js:762 msgid "PIN code is needed for the mobile broadband device" msgstr "मोबाइल ब्रडब्यान्ड यन्त्रका लागि PIN कोड आवश्यक छ" #: js/ui/components/networkAgent.js:392 msgid "PIN" msgstr "PIN" #: js/ui/components/networkAgent.js:403 js/ui/components/networkAgent.js:753 #: js/ui/components/networkAgent.js:757 js/ui/components/networkAgent.js:769 #: js/ui/components/networkAgent.js:773 #, javascript-format msgid "A password is required to connect to “%s”." msgstr "“%s” जडान गर्न पासवर्ड चाहिने छ ।" #: js/ui/components/networkAgent.js:736 msgid "Network Manager" msgstr "सञ्जाल प्रबन्धक" #: js/ui/components/networkAgent.js:772 msgid "VPN password" msgstr "भीपीएन पासवर्ड" #: js/ui/components/polkitAgent.js:41 msgid "Authentication Required" msgstr "प्रमाणीकरण आवश्यक" #: js/ui/components/polkitAgent.js:81 msgid "Administrator" msgstr "प्रशासक" #: js/ui/components/polkitAgent.js:146 msgid "Authenticate" msgstr "प्रमाणीकरण" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:260 js/ui/shellMountOperation.js:403 msgid "Sorry, that didn’t work. Please try again." msgstr "त्यो कार्य भएन : पुन प्रयास गर्नुस।." #: js/ui/components/telepathyClient.js:828 #, javascript-format msgid "%s is now known as %s" msgstr "%s अब %s भएको छ" #: js/ui/ctrlAltTab.js:22 js/ui/overviewControls.js:417 msgid "Windows" msgstr "सञ्झ्यालहरू" #: js/ui/dash.js:205 js/ui/dash.js:251 msgid "Show Applications" msgstr "अनुप्रयोग देखाउनुहोस्" #. Translators: this is the name of the dock/favorites area on #. the left of the overview #: js/ui/dash.js:398 msgid "Dash" msgstr "ड्यास" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:83 msgid "%B %-d %Y" msgstr "%B %-d %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:90 msgid "%A %B %e %Y" msgstr "%A %B %e %Y" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:156 msgctxt "calendar heading" msgid "%B %-d" msgstr "%B %-d" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:159 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%B %-d %Y" #: js/ui/dateMenu.js:165 msgid "Today" msgstr "आज" #: js/ui/dateMenu.js:169 msgid "Tomorrow" msgstr "भोलि" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:200 msgctxt "event list time" msgid "All Day" msgstr "दिनभर" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:222 msgid "%m/%d" msgstr "%m/%d" #: js/ui/dateMenu.js:273 msgid "No Events" msgstr "घटनाहरू छैन" #: js/ui/dateMenu.js:396 msgid "Add world clocks…" msgstr "विश्व घडि थप्नुहोस्…" #: js/ui/dateMenu.js:397 msgid "World Clocks" msgstr "विश्व घडि" #: js/ui/dateMenu.js:681 msgid "Loading…" msgstr "लोड गर्दैछ…" #: js/ui/dateMenu.js:691 msgid "Go online for weather information" msgstr "मौसम जानकारिको लागि अनलाइन जानुहोस्" #: js/ui/dateMenu.js:693 msgid "Weather information is currently unavailable" msgstr "मौसम जानकारि अहिले उपलब्ध छैन" #: js/ui/dateMenu.js:703 msgid "Weather" msgstr "मौसम" #: js/ui/dateMenu.js:705 msgid "Select weather location…" msgstr "मौसम स्थान चयन गर्नुहोस्…" #: js/ui/endSessionDialog.js:41 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "लगआउट %s" #: js/ui/endSessionDialog.js:42 msgctxt "title" msgid "Log Out" msgstr "लगआउट" #: js/ui/endSessionDialog.js:45 #, javascript-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "%s स्वचालित रूपमा %d सेकेन्डमा लगआउट हुनेछ ।" msgstr[1] "%s स्वचालित रूपमा %d सेकेन्डमा लगआउट हुनेछ ।" #: js/ui/endSessionDialog.js:51 #, javascript-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "तपाईँ स्वचालित रूपमा %d सेकेन्डमा लगआउट हुनुहुनेछ ।" msgstr[1] "तपाईँ स्वचालित रूपमा %d सेकेन्डमा लगआउट हुनुहुनेछ ।" #: js/ui/endSessionDialog.js:58 msgctxt "button" msgid "Log Out" msgstr "लगआउट" #: js/ui/endSessionDialog.js:64 js/ui/status/system.js:167 msgctxt "title" msgid "Power Off" msgstr "पावर बन्द" #: js/ui/endSessionDialog.js:65 msgctxt "title" msgid "Install Updates & Power Off" msgstr "अपडेट स्थापना पछि पावर बन्द गर्ने" #: js/ui/endSessionDialog.js:68 #, javascript-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "%d सेकेन्डमा प्रणाली स्वचालित रूपमा बन्द हुनेछ ।" msgstr[1] "%d सेकेन्डमा प्रणाली स्वचालित रूपमा बन्द हुनेछ ।" #: js/ui/endSessionDialog.js:72 js/ui/endSessionDialog.js:91 msgctxt "checkbox" msgid "Install pending software updates" msgstr "बाकि अनुप्रयोग स्थापना गर्नुहोस्" #: js/ui/endSessionDialog.js:76 msgctxt "button" msgid "Power Off" msgstr "पावर बन्द" #: js/ui/endSessionDialog.js:83 msgctxt "title" msgid "Restart" msgstr "फेरि सुरू गर्नुहोस्" #: js/ui/endSessionDialog.js:84 msgctxt "title" msgid "Install Updates & Restart" msgstr "अद्यावधिक स्थापना र पुन शुरु गर्नुहोस्" #: js/ui/endSessionDialog.js:87 #, javascript-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "प्रणाली %d सेकेन्डमा स्वचालित रूपमा पुन: सुरुआत हुनेछ ।" msgstr[1] "प्रणाली %d सेकेन्डमा स्वचालित रूपमा पुन: सुरुआत हुनेछ ।" #: js/ui/endSessionDialog.js:95 msgctxt "button" msgid "Restart" msgstr "फेरि सुरू गर्नुहोस्" #: js/ui/endSessionDialog.js:103 msgctxt "title" msgid "Restart & Install Updates" msgstr "पुन शुरु र अद्यावधिक स्थापना गर्नुहोस्" #: js/ui/endSessionDialog.js:106 #, javascript-format msgid "The system will automatically restart and install updates in %d second." msgid_plural "The system will automatically restart and install updates in %d seconds." msgstr[0] "प्रणालीले स्वचालित रूपमा %d सेकेन्डमा अद्यावधिकहरू पुन: सुरुआत र स्थापना गर्नेछ ।" msgstr[1] "प्रणालीले स्वचालित रूपमा %d सेकेन्डमा अद्यावधिकहरू पुन: सुरुआत र स्थापना गर्नेछ ।" #: js/ui/endSessionDialog.js:113 js/ui/endSessionDialog.js:134 msgctxt "button" msgid "Restart & Install" msgstr "पुन शुरु र स्थापना गर्नुहोस्" #: js/ui/endSessionDialog.js:115 msgctxt "button" msgid "Install & Power Off" msgstr "स्थापना पछि पावर बन्द गर्ने" #: js/ui/endSessionDialog.js:116 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "अपडेट स्थापना पछि पावर बन्द गर्ने" #: js/ui/endSessionDialog.js:123 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "पुन शुरु रस्तरवृद्धि गर्नुहोस्" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:128 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long time: ensure that you " "have backed up and that the computer is plugged in." msgstr "" "%s %s पुन: सुरुआत पछि स्थापना हुनेछ । स्तरवृद्धि स्थापना गर्न धेरै समय लाग्न सक्छ: तपाईँले जगेडा गर्नुभएको छ र कम्प्युटर " "प्लगइन गरिएको छ भन्ने निश्चित गर्नुहोस् ।" #: js/ui/endSessionDialog.js:285 msgid "Low battery power: please plug in before installing updates." msgstr "न्यून ब्याट्री पावर: कृपया अद्यावधिक हरू स्थापना गर्नु भन्दा पहिले पावर जडान गर्नुहोस् ।" #: js/ui/endSessionDialog.js:294 msgid "Some applications are busy or have unsaved work" msgstr "केही अनुप्रयोग व्यस्त छन् वा बचत नगरिएका कार्य छन्" #: js/ui/endSessionDialog.js:299 msgid "Other users are logged in" msgstr "अन्य प्रयोगकर्ता लगईन छ" #: js/ui/endSessionDialog.js:470 msgctxt "button" msgid "Boot Options" msgstr "बुट विकल्पहरू" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:675 #, javascript-format msgid "%s (remote)" msgstr "%s टाढा" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:678 #, javascript-format msgid "%s (console)" msgstr "%s (कन्सोल)" #: js/ui/extensionDownloader.js:227 msgid "Install" msgstr "स्थापना गर्नुहोस्" #: js/ui/extensionDownloader.js:233 msgid "Install Extension" msgstr "विस्तार स्थापना गर्नुहोस्" #: js/ui/extensionDownloader.js:234 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "extensions.gnome.orgबाट \"%s\" डाउनलोड र स्थापना गर्नुहुन्छ ?" #: js/ui/extensionSystem.js:270 msgid "Extension Updates Available" msgstr "विस्तार अद्यावधिक उपलब्ध छ" #: js/ui/extensionSystem.js:271 msgid "Extension updates are ready to be installed." msgstr "विस्तार अद्यावधिकहरू स्थापना गर्न तयार छन् ।" #: js/ui/inhibitShortcutsDialog.js:79 msgid "Allow inhibiting shortcuts" msgstr "अवरोध सर्टकट अनुमति दिनुहोस्" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:82 #, javascript-format msgid "The application %s wants to inhibit shortcuts" msgstr "अनुप्रयोग %s ले सर्टकटहरू निषेध गर्न चाहन्छ" #: js/ui/inhibitShortcutsDialog.js:83 msgid "An application wants to inhibit shortcuts" msgstr "एउटा अनुप्रयोगले सर्टकट हरू निषेध गर्न चाहन्छ" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:90 #, javascript-format msgid "You can restore shortcuts by pressing %s." msgstr "तपाईँले %s थिचेर सर्टकटहरू पूर्वावस्थामा ल्याउन सक्नुहुन्छ ।" #: js/ui/inhibitShortcutsDialog.js:101 msgid "Deny" msgstr "अस्वीकार गर्नुहोस्" #: js/ui/inhibitShortcutsDialog.js:110 msgid "Allow" msgstr "अनुमति दिनुहोस्" #: js/ui/kbdA11yDialog.js:32 msgid "Slow Keys Turned On" msgstr "ढिलो कुञ्जी सुचारु छ" #: js/ui/kbdA11yDialog.js:33 msgid "Slow Keys Turned Off" msgstr "ढिलो कुञ्जी बन्द छ" #: js/ui/kbdA11yDialog.js:34 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the Slow Keys feature, " "which affects the way your keyboard works." msgstr "" "तपाईँले भर्खरै ८ सेकेन्डका लागि शिफ्ट कुञ्जी तल सार्नु भएको छ । यो सुस्त कुञ्जी विशेषताका लागि सर्टकट हो, जसले " "तपाईँको कुञ्जीपाटीले कार्य गर्ने तरिकालाई असर गर्दछ ।" #: js/ui/kbdA11yDialog.js:40 msgid "Sticky Keys Turned On" msgstr "टाँसिने कुञ्जि सुचारू छ" #: js/ui/kbdA11yDialog.js:41 msgid "Sticky Keys Turned Off" msgstr "टाँसिने कुञ्जिहरु बन्द छ" #: js/ui/kbdA11yDialog.js:43 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for the Sticky Keys " "feature, which affects the way your keyboard works." msgstr "" "तपाईँले पङ्क्तिमा ५ पटक Shift कुञ्जी थिच्नुहोस् । यो स्टिकी कुञ्जी सुविधाको लागि सर्टकट हो, जसले तपाईँको " "कुञ्जीपाटीले काम गर्ने तरिकालाई असर गर्दछ ।" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a row. This turns off the " "Sticky Keys feature, which affects the way your keyboard works." msgstr "" "तपाईँले एकैपटकमा दुईवटा कुञ्जी थिच्नुहुन्छ, वा पङ्क्तिमा Shift कुञ्जी ५ पटक थिच्नुहुन्छ । यसले टाँसिने कुञ्जी विशेषता बन्द " "गर्दछ, जसले तपाईँको कुञ्जीपाटीले कार्य गर्ने तरिकालाई असर गर्दछ ।" #: js/ui/kbdA11yDialog.js:55 msgid "Leave On" msgstr "छोड्नुहोस्" #: js/ui/kbdA11yDialog.js:55 msgid "Turn On" msgstr "सुरु गर्नुहोस" #: js/ui/kbdA11yDialog.js:65 js/ui/status/network.js:447 msgid "Turn Off" msgstr "बन्द गर्नुहोस्" #: js/ui/kbdA11yDialog.js:65 msgid "Leave Off" msgstr "छोड्नुहोस्" #: js/ui/keyboard.js:219 msgid "Region & Language Settings" msgstr "क्षेत्र र भाषा सेटिङ" #: js/ui/lookingGlass.js:713 msgid "No extensions installed" msgstr "विस्तार स्थापना गरिएको छैन" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:774 #, javascript-format msgid "%s has not emitted any errors." msgstr "%s ले कुनै त्रुटिहरू दिएको छैन ।" #: js/ui/lookingGlass.js:780 msgid "Hide Errors" msgstr "त्रुटि लुकाउनुहोस्" #: js/ui/lookingGlass.js:784 js/ui/lookingGlass.js:857 msgid "Show Errors" msgstr "त्रुटि देखाउनुहोस्" #: js/ui/lookingGlass.js:793 msgid "Enabled" msgstr "सक्षम पारिएको" #. translators: #. * The device has been disabled #: js/ui/lookingGlass.js:796 subprojects/gvc/gvc-mixer-control.c:1900 msgid "Disabled" msgstr "अक्षम पारिएको" #: js/ui/lookingGlass.js:798 msgid "Error" msgstr "त्रुटि:" #: js/ui/lookingGlass.js:800 msgid "Out of date" msgstr "मिति भन्दा बाहिर छ" #: js/ui/lookingGlass.js:802 msgid "Downloading" msgstr "डाउनलोड हुँदैछ" #: js/ui/lookingGlass.js:835 msgid "View Source" msgstr "स्रोत हेर्नुहोस्" #: js/ui/lookingGlass.js:846 msgid "Web Page" msgstr "वेब पृष्ठ" #: js/ui/main.js:286 msgid "System was put in unsafe mode" msgstr "प्रणालीलाई असुरक्षित शैलीमा राखियो" #: js/ui/main.js:287 msgid "Applications now have unrestricted access" msgstr "अनुप्रयोगहरू अब असीमित पहुँच छ" #: js/ui/main.js:288 js/ui/overview.js:58 msgid "Undo" msgstr "पूर्वस्थितिमा फर्काउनुहोस्" #: js/ui/main.js:334 msgid "Logged in as a privileged user" msgstr "विशेषाधिकार भएको प्रयोगकर्ताको रूपमा लगइन गरियो" #: js/ui/main.js:335 msgid "" "Running a session as a privileged user should be avoided for security reasons. If possible, you " "should log in as a normal user." msgstr "" "विशेषाधिकार पाएको प्रयोगकर्ताको रूपमा सत्र चलाउन सुरक्षाका कारणले रोक्नुपर्छ । यदि सम्भव भएमा, तपाईँले सामान्य " "प्रयोगकर्ताको रूपमा लगइन गर्नुपर्दछ ।." #: js/ui/main.js:384 msgid "Screen Lock disabled" msgstr "पर्दामा ताल्चा अक्षम गरिएको छ" #: js/ui/main.js:385 msgid "Screen Locking requires the GNOME display manager." msgstr "पर्दा ताल्चा लगाउनेलाई जिनोम प्रदर्शन प्रबन्धक को आवश्यकता पर्दछ ।." #: js/ui/messageTray.js:1418 msgid "System Information" msgstr "प्रणाली जानकारी" #: js/ui/mpris.js:202 msgid "Unknown artist" msgstr "अज्ञात कलाकार" #: js/ui/mpris.js:212 msgid "Unknown title" msgstr "अज्ञात शीर्षक" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:327 msgid "Type to search" msgstr "खोजी गर्न टाईप गर्नुहोस्" #: js/ui/overviewControls.js:405 msgid "Applications" msgstr "अनुप्रयोग" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:71 msgid "Overview" msgstr "अधिलेखन गर्नुहोस्" #: js/ui/padOsd.js:100 msgid "New shortcut…" msgstr "नयाँ शर्टकर्ट…" #: js/ui/padOsd.js:154 msgid "Application defined" msgstr "अनुप्रयोग परिभाषित छ" #: js/ui/padOsd.js:155 msgid "Show on-screen help" msgstr "अन-स्क्रिन सहयोग हेर्नुहोस्" #: js/ui/padOsd.js:156 msgid "Switch monitor" msgstr "निगरानि बदल्नुहोस्" #: js/ui/padOsd.js:157 msgid "Assign keystroke" msgstr "कुञ्जी स्ट्रोक मानाङ्कन गर्नुहोस्" #: js/ui/padOsd.js:226 msgid "Done" msgstr "गरियो" #: js/ui/padOsd.js:743 msgid "Edit…" msgstr "सम्पादन…" #: js/ui/padOsd.js:785 js/ui/padOsd.js:902 msgid "None" msgstr "None" #: js/ui/padOsd.js:856 msgid "Press a button to configure" msgstr "कन्फिगर गर्न बटन थिच्नुहोस्" #: js/ui/padOsd.js:857 msgid "Press Esc to exit" msgstr "निस्कन ESC थिच्नुहोस्" #: js/ui/padOsd.js:860 msgid "Press any key to exit" msgstr "निस्कनको लागि कुनै कुञ्जी थिच्नुहोस्" #: js/ui/panel.js:244 msgid "Activities" msgstr "गतिविधिहरू" #: js/ui/panel.js:338 msgctxt "System menu in the top bar" msgid "System" msgstr "प्रणाली" #: js/ui/panel.js:457 msgid "Top Bar" msgstr "माथिल्लो पट्टी" #: js/ui/runDialog.js:58 msgid "Run a Command" msgstr "एउटा आदेश चलाउनुहोस्" #: js/ui/runDialog.js:73 msgid "Press ESC to close" msgstr "बन्द गर्न ESC थिच्नुहोस्" #: js/ui/runDialog.js:238 msgid "Restart is not available on Wayland" msgstr "वेल्यान्डमा पुन: सुरुआत गर्न सकिँदैन" #: js/ui/runDialog.js:243 msgid "Restarting…" msgstr "पुन: सुरुआत गर्दै…" #: js/ui/screenShield.js:235 msgid "GNOME needs to lock the screen" msgstr "प्रयोगकर्तालाई उसको पर्दामा ताल्चा लगाउन पर्‌यो" #. We could not become modal, so we can't activate the #. screenshield. The user is probably very upset at this #. point, but any application using global grabs is broken #. Just tell them to stop using this app #. #. XXX: another option is to kick the user into the gdm login #. screen, where we're not affected by grabs #: js/ui/screenShield.js:275 js/ui/screenShield.js:652 msgid "Unable to lock" msgstr "ताल्चा मार्न असक्षम" #: js/ui/screenShield.js:276 js/ui/screenShield.js:653 msgid "Lock was blocked by an application" msgstr "अनुप्रयोगद्वारा ताल्चा रोक्का छ" #: js/ui/screenshot.js:1147 msgid "Selection" msgstr "चयन" #: js/ui/screenshot.js:1157 msgid "Area Selection" msgstr "क्षेत्र चयन" #: js/ui/screenshot.js:1162 msgid "Screen" msgstr "पर्दा" #: js/ui/screenshot.js:1172 msgid "Screen Selection" msgstr "पर्दा चयन" #: js/ui/screenshot.js:1177 msgid "Window" msgstr "सन्झ्याल" #: js/ui/screenshot.js:1187 msgid "Window Selection" msgstr "सञ्झ्याल चयन" #: js/ui/screenshot.js:1225 msgid "Screenshot / Screencast" msgstr "स्क्रिनसट / स्क्रिनकास्ट" #: js/ui/screenshot.js:1261 msgid "Show Pointer" msgstr "सूचक देखाउनुहोस्" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1849 msgid "Screencasts" msgstr "स्क्रिनकास्ट" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast from 07-17-2013 10:00:46 PM.webm" #: js/ui/screenshot.js:1854 #, no-c-format msgid "Screencast from %d %t.webm" msgstr "%d %t.webm बाट स्क्रिनकास्ट" #. Translators: notification source name. #: js/ui/screenshot.js:1920 js/ui/screenshot.js:2132 msgid "Screenshot" msgstr "स्क्रिनसट" #. Translators: notification title. #: js/ui/screenshot.js:1926 msgid "Screencast recorded" msgstr "स्क्रिनकास्ट रेकर्ड गरियो" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:1928 msgid "Click here to view the video." msgstr "भिडियो हेर्न यहाँ क्लिक गर्नुहोस् ।" #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:1931 js/ui/screenshot.js:2146 msgid "Show in Files" msgstr "फाइलना देखाउनुहोस्" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2092 #, javascript-format msgid "Screenshot from %s" msgstr "%s बाट स्क्रिनसट" #. Translators: notification title. #: js/ui/screenshot.js:2138 msgid "Screenshot captured" msgstr "स्क्रिनसट क्याप्चर गरियो" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2140 msgid "You can paste the image from the clipboard." msgstr "तपाईँले क्लिपबोर्डबाट छवि टाँस्न सक्नुहुन्छ ।" #: js/ui/screenshot.js:2193 js/ui/screenshot.js:2358 msgid "Screenshot taken" msgstr "स्क्रिनको तस्बिर लिइयो" #: js/ui/search.js:804 msgid "Searching…" msgstr "खोजी गर्दै…" #: js/ui/search.js:806 msgid "No results." msgstr "नतिजा छैन ।" #: js/ui/search.js:937 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "%d अरू" msgstr[1] "%d अरूहरु" #: js/ui/searchController.js:87 msgid "Search" msgstr "खोजी गर्नुहोस्" #: js/ui/shellEntry.js:20 msgid "Copy" msgstr "प्रतिलिपि बनाउनुहोस्" #: js/ui/shellEntry.js:25 msgid "Paste" msgstr "टाँस्नुहोस्" #: js/ui/shellEntry.js:77 msgid "Show Text" msgstr "पाठ देखाऊ" #: js/ui/shellEntry.js:79 msgid "Hide Text" msgstr "प्रविष्टि पाठ लुकाउनुहोस्" #: js/ui/shellEntry.js:166 msgid "Caps lock is on." msgstr "क्यप्स लक अन छ" #: js/ui/shellMountOperation.js:286 msgid "Hidden Volume" msgstr "लुकेको भोल्युम" #: js/ui/shellMountOperation.js:289 msgid "Windows System Volume" msgstr "सञ्झ्याल प्रणाली भोल्युम" #: js/ui/shellMountOperation.js:292 msgid "Uses Keyfiles" msgstr "कुञ्जी फाइल प्रयोग गर्नुहोस्" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:299 #, javascript-format msgid "To unlock a volume that uses keyfiles, use the %s utility instead." msgstr "कुञ्जीफाइल प्रयोग गर्ने भोल्युम अनलक गर्न, सट्टामा %s युटिलिटी प्रयोग गर्नुहोस् ।" #: js/ui/shellMountOperation.js:307 msgid "PIM Number" msgstr "PIM नम्बर" #: js/ui/shellMountOperation.js:366 msgid "Remember Password" msgstr "पासवर्ड सम्झनुहोस्" #: js/ui/shellMountOperation.js:381 msgid "Unlock" msgstr "ताल्चा खोल्नुहोस्" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:392 #, javascript-format msgid "Open %s" msgstr "%s खोल्नुहोस्" #: js/ui/shellMountOperation.js:424 msgid "The PIM must be a number or empty." msgstr "PIM सङ्ख्या वा खाली हुनुपर्दछ ।" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:466 #, javascript-format msgid "Unable to start %s" msgstr "सुरु गर्न अक्षम: “%s”" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:468 #, javascript-format msgid "Couldn’t find the %s application" msgstr "%s अनुप्रयोग फेला पार्न सकेन" #: js/ui/status/accessibility.js:34 msgid "Accessibility" msgstr "पहुँचता" #: js/ui/status/accessibility.js:44 msgid "High Contrast" msgstr "उच्च व्यतिरेक" #: js/ui/status/accessibility.js:47 msgid "Zoom" msgstr "जूम गर्नुहोस्" #: js/ui/status/accessibility.js:54 msgid "Screen Reader" msgstr "दृष्टि वाचक" #: js/ui/status/accessibility.js:58 msgid "Screen Keyboard" msgstr "कुञ्जिपाटी " #: js/ui/status/accessibility.js:62 msgid "Visual Alerts" msgstr "दृश्यात्मक सावधानि" #: js/ui/status/accessibility.js:65 msgid "Sticky Keys" msgstr "टाँसिने कुञ्जि" #: js/ui/status/accessibility.js:68 msgid "Slow Keys" msgstr "सुस्त कुञ्जीहरू" #: js/ui/status/accessibility.js:71 msgid "Bounce Keys" msgstr "बाउन्स कुञ्जीहरू" #: js/ui/status/accessibility.js:74 msgid "Mouse Keys" msgstr "माउस कुञ्जीहरू" #: js/ui/status/accessibility.js:131 msgid "Large Text" msgstr "ठूलो पाठ शैली" #: js/ui/status/autoRotate.js:14 msgid "Auto Rotate" msgstr "स्वतः घुमाउनुहोस्" #: js/ui/status/bluetooth.js:151 msgid "Bluetooth" msgstr "ब्लुटुठ" #: js/ui/status/brightness.js:34 msgid "Brightness" msgstr "चम्लिकोपना" #: js/ui/status/darkMode.js:11 msgid "Dark Mode" msgstr "गाढा शैली" #: js/ui/status/dwellClick.js:12 msgid "Single Click" msgstr "एकपटकमात्र क्लिक" #: js/ui/status/dwellClick.js:17 msgid "Double Click" msgstr "डबल क्लिक" #: js/ui/status/dwellClick.js:22 msgid "Drag" msgstr "घिसार्नु" #: js/ui/status/dwellClick.js:27 msgid "Secondary Click" msgstr "दोस्रो क्लिक" #: js/ui/status/dwellClick.js:36 msgid "Dwell Click" msgstr "ड्वेल क्लिक गर्नुहोस्" #: js/ui/status/keyboard.js:830 msgid "Keyboard" msgstr "कुञ्जीपाटी" #: js/ui/status/keyboard.js:847 msgid "Show Keyboard Layout" msgstr "किबोर्ड लेआउट देखाउनुहोस्" #: js/ui/status/location.js:330 msgid "Allow location access" msgstr "स्थान पहुँच अनुमति दिनुहोस्" #. Translators: %s is an application name #: js/ui/status/location.js:332 #, javascript-format msgid "The app %s wants to access your location" msgstr "अनुप्रयोग %s ले तपाईँको स्थान पहुँच गर्न चाहन्छ" #: js/ui/status/location.js:342 msgid "Location access can be changed at any time from the privacy settings." msgstr "गोपनीयता सेटिङबाट कुनै पनि समयमा स्थान पहुँच परिवर्तन गर्न सकिन्छ ।" #: js/ui/status/network.js:53 msgid "" msgstr "<अज्ञात>" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:356 #, javascript-format msgid "Disconnect %s" msgstr "%s विच्छेदन गर्नुहोस्" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:358 #, javascript-format msgid "Connect to %s" msgstr "%s मा जडान गर्नुहोस्" #. Translators: %s is a network identifier #: js/ui/status/network.js:1107 #, javascript-format msgid "%s Hotspot" msgstr "%s हटस्पट" #: js/ui/status/nightLight.js:20 msgid "Night Light" msgstr "रातको उज्यालो" #: js/ui/status/powerProfiles.js:20 msgctxt "Power profile" msgid "Performance" msgstr "कार्यसम्पादन" #: js/ui/status/powerProfiles.js:25 msgctxt "Power profile" msgid "Balanced" msgstr "संतुलित पावर" #: js/ui/status/powerProfiles.js:30 msgctxt "Power profile" msgid "Power Saver" msgstr "पावर सेभर" #: js/ui/status/powerProfiles.js:68 msgid "Power Profiles" msgstr "पावर प्रोफाइल" #: js/ui/status/remoteAccess.js:74 msgid "Stop Screencast" msgstr "स्क्रिनकास्ट रोक्नुहोस्" #: js/ui/status/remoteAccess.js:144 msgid "Stop Screen Sharing" msgstr "प्रदर्शनपर्दा साझेदारी रोक्नुहोस्" #: js/ui/status/rfkill.js:96 msgid "Airplane Mode" msgstr "हवाइजहाज मोड" #: js/ui/status/system.js:90 #, javascript-format msgid "%d %%" msgstr "%d %%" #. Translators: entry in the window right click menu. #: js/ui/status/system.js:105 js/ui/windowMenu.js:29 msgid "Take Screenshot" msgstr "स्क्रिनसट लिनुहोस्" #: js/ui/status/system.js:161 msgid "Power Off Menu" msgstr "पावर बन्द मेनु" #: js/ui/status/system.js:169 msgid "Suspend" msgstr "निश्क्रिय गर्ने" #: js/ui/status/system.js:174 msgid "Restart…" msgstr "पु:न सुरु गर्ने…" #: js/ui/status/system.js:179 msgid "Power Off…" msgstr "पावर बन्द…" #: js/ui/status/system.js:186 subprojects/extensions-app/data/ui/extensions-window.ui:190 msgid "Log Out…" msgstr "लगआउट…" #: js/ui/status/system.js:191 msgid "Switch User…" msgstr "प्रयोगकर्ता स्विच गर्नुहोस्…" #: js/ui/status/system.js:235 msgctxt "action" msgid "Lock Screen" msgstr "पर्दा ताल्चा लगाउनुहोस्" #: js/ui/status/thunderbolt.js:256 msgid "Thunderbolt" msgstr "थन्डरबोल्ट" #: js/ui/status/thunderbolt.js:317 msgid "Unknown Thunderbolt device" msgstr "अज्ञात थन्डरबोल्ट यन्त्र" #: js/ui/status/thunderbolt.js:318 msgid "" "New device has been detected while you were away. Please disconnect and reconnect the device to " "start using it." msgstr "" "तपाईँ टाढा हुँदा नयाँ यन्त्र पत्ता लागेको छ । कृपया यसलाई प्रयोग गर्न सुरु गर्न यन्त्र विच्छेदन गर्नुहोस् र पुन: जडान " "गर्नुहोस् ।" #: js/ui/status/thunderbolt.js:321 msgid "Unauthorized Thunderbolt device" msgstr "अनधिकृत थन्डरबोल्ट यन्त्र" #: js/ui/status/thunderbolt.js:322 msgid "New device has been detected and needs to be authorized by an administrator." msgstr "नयाँ यन्त्र पत्ता लागेको छ र प्रशासकद्वारा प्रमाणीकरण गरिनु आवश्यक छ ।" #: js/ui/status/thunderbolt.js:328 msgid "Thunderbolt authorization error" msgstr "थन्डरबोल्ट प्रमाणीकरण त्रुटि" #: js/ui/status/thunderbolt.js:329 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "थन्डरबोल्ट यन्त्र अधिकार दिन सकेन: %s" #: js/ui/status/volume.js:191 msgid "Volume changed" msgstr "भोल्युम परिवर्तन गरियो" #: js/ui/status/volume.js:253 msgid "Volume" msgstr "भोल्युम" #: js/ui/status/volume.js:269 msgid "Sound Output" msgstr "ध्वनि निर्गत" #: js/ui/status/volume.js:337 msgid "Sound Input" msgstr "ध्वनि आगत" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:20 msgid "Mirror" msgstr "दर्पण" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:29 msgid "Join Displays" msgstr "प्रदर्शन जडान गर्नुहोस्" #. Translators: this is for using only an external display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:39 msgid "External Only" msgstr "बाह्य मात्र" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:47 msgid "Built-in Only" msgstr "अवस्थित मात्र" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:364 msgid "%A %B %-d" msgstr "%A %B %-d" #: js/ui/unlockDialog.js:370 msgid "Swipe up to unlock" msgstr "ताल्चा खोल्नका लागि स्वाइप गर्नुहोस्" #: js/ui/unlockDialog.js:371 msgid "Click or press a key to unlock" msgstr "ताल्चा खोल्न कुञ्जी थिच्नुहोस् वा क्लिक गर्नुहोस्" #: js/ui/unlockDialog.js:554 msgid "Unlock Window" msgstr "ताल्चा हटाउनुहोस्" #: js/ui/unlockDialog.js:563 msgid "Log in as another user" msgstr "अर्को प्रयोगकर्ताको रूपमा लगइन गर्नुहोस्" #: js/ui/welcomeDialog.js:36 #, javascript-format msgid "Welcome to GNOME %s" msgstr "जिनोम %s मा स्वागत छ" #: js/ui/welcomeDialog.js:37 msgid "If you want to learn your way around, check out the tour." msgstr "यदि तपाईं आफैं सिक्न चाहनुहुन्छ भने भ्रमण हेर्नुहोस्।" #: js/ui/welcomeDialog.js:46 msgid "No Thanks" msgstr "होइन धन्यवाद" #: js/ui/welcomeDialog.js:51 msgid "Take Tour" msgstr "भ्रमण गर्नुहोस्" #: js/ui/windowAttentionHandler.js:20 #, javascript-format msgid "“%s” is ready" msgstr "“%s” तयार छ" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:62 msgid "Keep these display settings?" msgstr "यी प्रदर्शन सेटिङहरू राख्नचाहनुहुन्छ?" #: js/ui/windowManager.js:72 msgid "Revert Settings" msgstr "सेटिङ्ग उल्टाउनुहोस्" #: js/ui/windowManager.js:77 msgid "Keep Changes" msgstr "परिवर्तनहरू राख्नुहोस्" #: js/ui/windowManager.js:97 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "%d सेकेन्डमा सेटिङ परिवर्तन पुर्वास्थामा फर्किन्छ" msgstr[1] "%d सेकेन्डमा सेटिङ परिवर्तन पुर्वास्थामा फर्किन्छ" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:544 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:41 msgid "Hide" msgstr "लुकाउनुहोस्" #: js/ui/windowMenu.js:48 msgid "Restore" msgstr "पूर्वावस्थामा ल्याउनुहोस्" #: js/ui/windowMenu.js:52 msgid "Maximize" msgstr "ठूलो बनाउनुहोस्" #: js/ui/windowMenu.js:59 msgid "Move" msgstr "सार्नुहोस्" #: js/ui/windowMenu.js:65 msgid "Resize" msgstr "पुन:आकार" #: js/ui/windowMenu.js:72 msgid "Move Titlebar Onscreen" msgstr "शीर्षकपट्टीलाई पर्दामा सार्नुहोस्" #: js/ui/windowMenu.js:77 msgid "Always on Top" msgstr "सधै माथि" #: js/ui/windowMenu.js:96 msgid "Always on Visible Workspace" msgstr "सधैँ दृश्यात्मक कार्यस्थानमा" #: js/ui/windowMenu.js:110 msgid "Move to Workspace Left" msgstr "कार्यक्षेत्र बायाँ सार्नुहोस्" #: js/ui/windowMenu.js:116 msgid "Move to Workspace Right" msgstr "कार्यक्षेत्र दायाँ सार्नुहोस्" #: js/ui/windowMenu.js:122 msgid "Move to Workspace Up" msgstr "कार्यस्थानलाई माथि सार्नुहोस्" #: js/ui/windowMenu.js:128 msgid "Move to Workspace Down" msgstr "कार्यस्थानलाई तल सार्नुहोस्" #: js/ui/windowMenu.js:146 msgid "Move to Monitor Up" msgstr "माथिको मोनिटरमा सार्नुहोस्" #: js/ui/windowMenu.js:155 msgid "Move to Monitor Down" msgstr "तलको मोनिटरमा सार्नुहोस्" #: js/ui/windowMenu.js:164 msgid "Move to Monitor Left" msgstr "ट्याब बायाँतिर सार्नुहोस्" #: js/ui/windowMenu.js:173 msgid "Move to Monitor Right" msgstr "दायाँ मोनिटरमा सार्नुहोस्" #: js/ui/windowMenu.js:181 msgid "Close" msgstr "बन्द गर्नुहोस्" #: src/calendar-server/evolution-calendar.desktop.in:3 msgid "Evolution Calendar" msgstr "इभोल्युसन पात्रो" #: src/main.c:435 subprojects/extensions-tool/src/main.c:321 msgid "Print version" msgstr "मुद्रण संस्करण" #: src/main.c:441 msgid "Mode used by GDM for login screen" msgstr "लगइन पर्दाका लागि GDM द्वारा प्रयोग गरिएको शैली" #: src/main.c:447 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "निर्दिष्ट मोड प्रयोग गर्नुहोस्, जस्तै लगइन पर्दाका लागि \"gdm\"" #: src/main.c:453 msgid "List possible modes" msgstr "सम्भाव्य शैली सूची" #: src/shell-app.c:305 msgctxt "program" msgid "Unknown" msgstr "अज्ञात" #: src/shell-app.c:556 #, c-format msgid "Failed to launch “%s”" msgstr "%s सुरु गर्न असफल" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match." msgstr "पासवर्ड मिलेन" #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "पासवर्ड खालि हुन सक्दैन" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "प्रमाणीकरण संवाद प्रयोगकर्ताद्वारा खारेज गरिएको थियो" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/js/main.js:212 #: subprojects/extensions-app/data/ui/extensions-window.ui:18 #: subprojects/extensions-app/data/ui/extensions-window.ui:83 msgid "Extensions" msgstr "विस्तारहरू" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 msgid "Manage your GNOME Extensions" msgstr "तपाईँको जिनोम विस्तार व्यवस्थापन गर्नुहोस्" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:17 #: subprojects/extensions-app/js/main.js:216 msgid "The GNOME Project" msgstr "जिनोम परियोजना" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:36 msgid "" "GNOME Extensions handles updating extensions, configuring extension preferences and removing or " "disabling unwanted extensions." msgstr "" "जिनोम विस्तारले विस्तारअद्यावधिक ह्यान्डल गर्दछ, विस्तार प्राथमिकताहरू कन्फिगर गर्दछ र नचाहिएका विस्तारहरू " "हटाउँदै वा अक्षम पार्दैछ।" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "जिनोम सेल विस्तारहरू कन्फिगर" #: subprojects/extensions-app/js/main.js:130 subprojects/extensions-app/js/main.js:141 msgid "No Matches" msgstr "मिल्दो छैन" #: subprojects/extensions-app/js/main.js:169 #, javascript-format msgid "Remove “%s”?" msgstr "\"%s\" हटाउनुहुन्छ?" #: subprojects/extensions-app/js/main.js:170 msgid "" "If you remove the extension, you need to return to download it if you want to enable it again" msgstr "" "यदि तपाईँले विस्तार हटाउनुभयो भने, यदि तपाईँ यसलाई फेरि सक्षम पार्न चाहनुहुन्छ भने यसलाई डाउनलोड गर्न फर्काउनु " "आवश्यक छ" #: subprojects/extensions-app/js/main.js:174 msgid "Remove" msgstr "हटाउनुहोस्" #: subprojects/extensions-app/js/main.js:211 msgid "translator-credits" msgstr "Pawan Chitrakar " #: subprojects/extensions-app/js/main.js:339 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "%d विस्तार पछिल्लो लगइनमा अद्यावधिक हुनेछ ।" msgstr[1] "%d विस्तार पछिल्लो लगइनमा अद्यावधिक हुनेछ ।" #: subprojects/extensions-app/js/main.js:481 msgid "The extension is incompatible with the current GNOME version" msgstr "हालको जिनोम संस्करणसँग विस्तार मिल्दो छैन" #: subprojects/extensions-app/js/main.js:484 subprojects/extensions-app/data/ui/extension-row.ui:52 msgid "The extension had an error" msgstr "विस्तारमा एउटा त्रुटि थियो" #: subprojects/extensions-app/data/ui/extension-row.ui:62 msgid "The extension can be updated" msgstr "विस्तार अद्यावधिक गर्न सकिन्छ" #: subprojects/extensions-app/data/ui/extension-row.ui:112 msgid "Website" msgstr "वेबसाइट" #: subprojects/extensions-app/data/ui/extension-row.ui:134 msgid "Remove…" msgstr "हटाउनुहोस्…" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Help" msgstr "मद्दत गर्नुहोस्" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "विस्तारहरू बारेमा" #: subprojects/extensions-app/data/ui/extensions-window.ui:84 msgid "" "Extensions can cause performance and stability issues. Disable extensions if you encounter " "problems with your system." msgstr "" "एक्सटेन्सनले प्रदर्शन र स्थिरता समस्याहरू निम्त्याउन सक्छ। यदि तपाईँले आफ्नो प्रणालीमा समस्या हरू सामना गर्नुभयो भने " "एक्सटेन्सनहरू अक्षम पार्नुहोस् ।" #: subprojects/extensions-app/data/ui/extensions-window.ui:98 msgid "Manually Installed" msgstr "म्यानुअल तरिकाले स्थापना गरियो" #: subprojects/extensions-app/data/ui/extensions-window.ui:99 #: subprojects/extensions-app/data/ui/extensions-window.ui:134 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" "विस्तारहरू फेला पार्न र थप गर्न extensions.gnome.org " "हेर्नुहोस्।" #: subprojects/extensions-app/data/ui/extensions-window.ui:112 msgid "Built-In" msgstr "अवस्थित" #: subprojects/extensions-app/data/ui/extensions-window.ui:133 msgid "No Installed Extensions" msgstr "विस्तार स्थापना गरिएको छैन" #: subprojects/extensions-app/data/ui/extensions-window.ui:145 msgid "" "We’re very sorry, but it was not possible to get the list of installed extensions. Make sure you " "are logged into GNOME and try again." msgstr "" "हामी धेरै दुःखी छौं, तर स्थापना गरिएको विस्तारको सूची प्राप्त गर्न सम्भव थिएन । तपाईँ जिनोममा लग इन भएको " "निश्चित गर्नुहोस् र फेरि प्रयास गर्नुहोस् ।" #: subprojects/extensions-app/data/ui/extensions-window.ui:175 msgid "Extension Updates Ready" msgstr "विस्तार अद्यावधिक तयार छ" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:222 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "%s मा नयाँ विस्तार सफलतापूर्वक सिर्जना गरियो ।\n" #: subprojects/extensions-tool/src/command-create.c:296 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" "नाम धेरै छोटो (वर्णनात्मक) स्ट्रिङ हुनुपर्दछ ।\n" "उदाहरणहरू: %s" #: subprojects/extensions-tool/src/command-create.c:302 subprojects/extensions-tool/src/main.c:238 msgid "Name" msgstr "नाम" #: subprojects/extensions-tool/src/command-create.c:316 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" "वर्णन तपाईँको विस्तारले के गर्छ भन्ने एकल-वाक्य व्याख्या हो।\n" "उदाहरणहरू: %s" #: subprojects/extensions-tool/src/command-create.c:322 subprojects/extensions-tool/src/main.c:241 msgid "Description" msgstr "वर्णन" #: subprojects/extensions-tool/src/command-create.c:336 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe.example.com)\n" msgstr "" "UUID तपाईँको विस्तारका लागि विश्वव्यापी रूपमा अद्वितीय पहिचायक हो ।\n" "यो एउटा इमेल ठेगानाको ढाँचामा हुनुपर्छ (clicktofocus@janedoe.example.com)\n" #: subprojects/extensions-tool/src/command-create.c:363 msgid "Choose one of the available templates:\n" msgstr "एउटा उपलब्ध टेम्प्लेट रोज्नुहोस्:\n" #: subprojects/extensions-tool/src/command-create.c:377 msgid "Template" msgstr "टेम्प्लेट" #: subprojects/extensions-tool/src/command-create.c:432 msgid "The unique identifier of the new extension" msgstr "नयाँ विस्तारको अद्वितिय पहिचायक" #: subprojects/extensions-tool/src/command-create.c:435 msgid "NAME" msgstr "NAME" #: subprojects/extensions-tool/src/command-create.c:436 msgid "The user-visible name of the new extension" msgstr "नयाँ विस्तारको प्रयोगकर्ता-दृश्यात्मक नाम" #: subprojects/extensions-tool/src/command-create.c:438 msgid "DESCRIPTION" msgstr "वर्णन" #: subprojects/extensions-tool/src/command-create.c:440 msgid "A short description of what the extension does" msgstr "विस्तारले के गर्छ भन्ने छोटो वर्णन" #: subprojects/extensions-tool/src/command-create.c:443 msgid "TEMPLATE" msgstr "टेम्प्लेट" #: subprojects/extensions-tool/src/command-create.c:444 msgid "The template to use for the new extension" msgstr "नयाँ विस्तार प्रयोग गर्नका लागि टेम्प्लेट" #: subprojects/extensions-tool/src/command-create.c:450 msgid "Enter extension information interactively" msgstr "विस्तार सूचना अन्तर्क्रियात्मक रूपमा प्रविष्ट गर्नुहोस्" #: subprojects/extensions-tool/src/command-create.c:458 msgid "Create a new extension" msgstr "एउटा नयाँ विस्तार सिर्जना गर्नुहोस्" #: subprojects/extensions-tool/src/command-create.c:476 #: subprojects/extensions-tool/src/command-list.c:172 msgid "Unknown arguments" msgstr "अज्ञात तर्कहरू" #: subprojects/extensions-tool/src/command-create.c:501 msgid "UUID, name and description are required" msgstr "UUID, नाम र वर्णन आवश्यक छ" #: subprojects/extensions-tool/src/command-disable.c:46 #: subprojects/extensions-tool/src/command-enable.c:46 #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:64 subprojects/extensions-tool/src/main.c:146 msgid "Failed to connect to GNOME Shell\n" msgstr "जिनोम शेल जडान गर्न असफल\n" #: subprojects/extensions-tool/src/command-disable.c:53 #: subprojects/extensions-tool/src/command-enable.c:53 #, c-format msgid "Extension “%s” does not exist\n" msgstr "\"%s\" विस्तार अवस्थित छैन\n" #: subprojects/extensions-tool/src/command-disable.c:101 msgid "Disable an extension" msgstr "एउटा विस्तार अक्षम पार्नुहोस्" #: subprojects/extensions-tool/src/command-disable.c:119 #: subprojects/extensions-tool/src/command-enable.c:119 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "UUID दिइएको छैन" #: subprojects/extensions-tool/src/command-disable.c:124 #: subprojects/extensions-tool/src/command-enable.c:124 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "एक भन्दा बढी UUID दिएको छ" #: subprojects/extensions-tool/src/command-enable.c:101 msgid "Enable an extension" msgstr "एउटा विस्तार सक्षम पार्नुहोस्" #: subprojects/extensions-tool/src/command-info.c:59 subprojects/extensions-tool/src/main.c:155 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "\"%s\" विस्तार अवस्थित छैन\n" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "विस्तार जानकारि देखाउनुहोस्" #: subprojects/extensions-tool/src/command-install.c:173 msgid "Overwrite an existing extension" msgstr "एउटा अवस्थित विस्तार अधिलेखन गर्नुहोस्" #: subprojects/extensions-tool/src/command-install.c:175 msgid "EXTENSION_BUNDLE" msgstr "EXTENSION_BUNDLE" #: subprojects/extensions-tool/src/command-install.c:184 msgid "Install an extension bundle" msgstr "विस्तार बन्डल स्थापना गर्नुहोस्" #: subprojects/extensions-tool/src/command-install.c:202 msgid "No extension bundle specified" msgstr "विस्तार बन्डल निर्दिष्ट गरिएको छैन" #: subprojects/extensions-tool/src/command-install.c:208 msgid "More than one extension bundle specified" msgstr "एक भन्दा बढी विस्तार बन्डल निर्दिष्ट गरियो" #: subprojects/extensions-tool/src/command-list.c:128 msgid "Show user-installed extensions" msgstr "प्रयोगकर्ता-स्थापना विस्तार देखाउनुहोस्" #: subprojects/extensions-tool/src/command-list.c:131 msgid "Show system-installed extensions" msgstr "प्रणाली स्थापना विस्तार देखाउनुहोस्" #: subprojects/extensions-tool/src/command-list.c:134 msgid "Show enabled extensions" msgstr "सक्षम पारिएको विस्तार देखाउनुहोस्" #: subprojects/extensions-tool/src/command-list.c:137 msgid "Show disabled extensions" msgstr "अक्षम पारिएको विस्तार देखाउनुहोस्" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show extensions with preferences" msgstr "प्राथमिकता भएको विस्तार देखाउनुहोस्" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show extensions with updates" msgstr "अद्यावधिक भएको विस्तारहरू देखाउनुहोस्" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Print extension details" msgstr "मुद्रण बिस्तार विवरण" #: subprojects/extensions-tool/src/command-list.c:154 msgid "List installed extensions" msgstr "स्थापित विस्तार सूची" #: subprojects/extensions-tool/src/command-pack.c:450 msgid "FILE" msgstr "FILE" #: subprojects/extensions-tool/src/command-pack.c:451 msgid "Additional source to include in the bundle" msgstr "बन्डलमा समावेश गर्न थप स्रोत" #: subprojects/extensions-tool/src/command-pack.c:454 msgid "SCHEMA" msgstr "स्किमा" #: subprojects/extensions-tool/src/command-pack.c:455 msgid "A GSettings schema that should be included" msgstr "समावेश गरिनुपर्ने एउटा जी-सेटिङ स्किमा" #: subprojects/extensions-tool/src/command-pack.c:457 #: subprojects/extensions-tool/src/command-pack.c:468 msgid "DIRECTORY" msgstr "निर्देशिका" #: subprojects/extensions-tool/src/command-pack.c:459 msgid "The directory where translations are found" msgstr "निर्देशिका जहाँ अनुवादहरू फेला पर्यो" #: subprojects/extensions-tool/src/command-pack.c:461 msgid "DOMAIN" msgstr "डोमेन" #: subprojects/extensions-tool/src/command-pack.c:463 msgid "The gettext domain to use for translations" msgstr "अनुवादका लागि प्रयोग हुने gettext डोमेन" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "Overwrite an existing pack" msgstr "एउटा अवस्थित प्याक अधिलेखन गर्नुहोस्" #: subprojects/extensions-tool/src/command-pack.c:470 msgid "The directory where the pack should be created" msgstr "प्याक सिर्जना गर्नुपर्ने निर्दैशिका" #: subprojects/extensions-tool/src/command-pack.c:472 msgid "SOURCE_DIRECTORY" msgstr "स्रोत निर्देशिका" #: subprojects/extensions-tool/src/command-pack.c:481 msgid "Create an extension bundle" msgstr "एउटा विस्तार बन्डल सिर्जना गर्नुहोस्" #: subprojects/extensions-tool/src/command-pack.c:501 msgid "More than one source directory specified" msgstr "एक भन्दा बढी स्रोत निर्देशिका निर्दिष्ट गरियो" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "विस्तार \"%s\" सँग प्राथमिकता छैन\n" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "एक्सटेन्सन \"%s\" का लागि प्रिफहरू खोल्न असफल भयो: %s\n" #: subprojects/extensions-tool/src/command-prefs.c:87 msgid "Opens extension preferences" msgstr "विस्तार प्राथमिकताहरू खोल्नुहोस्" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "एउटा बिस्तार रिसेट गर्नुहोस्" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "प्रणाली विस्तार स्थापनाबाट हटाउन सकिँदैन\n" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "\"%s\" स्थापनाबाट हटाउन असफल\n" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "एउटा विस्तार स्थापनाबाट हटाउनुहोस्" #: subprojects/extensions-tool/src/main.c:72 msgid "Do not print error messages" msgstr "त्रुटि सन्देश मुद्रण नगर्नुहोस्" #: subprojects/extensions-tool/src/main.c:244 msgid "Path" msgstr "पाथ" #: subprojects/extensions-tool/src/main.c:247 msgid "URL" msgstr "यू आर एल" #: subprojects/extensions-tool/src/main.c:250 msgid "Original author" msgstr "वास्तविक लेखक" #: subprojects/extensions-tool/src/main.c:253 msgid "Version" msgstr "संस्करण" #: subprojects/extensions-tool/src/main.c:256 msgid "State" msgstr "राज्य" #: subprojects/extensions-tool/src/main.c:294 msgid "“version” takes no arguments" msgstr "\"संस्करण\" ले कुनै तर्कहरू लिदैन" #: subprojects/extensions-tool/src/main.c:296 subprojects/extensions-tool/src/main.c:316 msgid "Usage:" msgstr "प्रयोग:" #: subprojects/extensions-tool/src/main.c:299 msgid "Print version information and exit." msgstr "संस्करण सूचना छाप्नुहोस् र बाहिर निस्कनुहोस्।" #: subprojects/extensions-tool/src/main.c:314 subprojects/extensions-tool/src/main.c:317 msgid "COMMAND" msgstr "COMMAND" #: subprojects/extensions-tool/src/main.c:317 msgid "[ARGS…]" msgstr "गलत तर्क" #: subprojects/extensions-tool/src/main.c:319 msgid "Commands:" msgstr "आदेशहरू:" #: subprojects/extensions-tool/src/main.c:320 msgid "Print help" msgstr "मद्दत मुद्रण गर्नुहोस्" #: subprojects/extensions-tool/src/main.c:322 msgid "Enable extension" msgstr "विस्तार सक्षम पार्नुहोस्" #: subprojects/extensions-tool/src/main.c:323 msgid "Disable extension" msgstr "विस्तार अक्षम पार्नुहोस्" #: subprojects/extensions-tool/src/main.c:324 msgid "Reset extension" msgstr "बिस्तार रिसेट गर्नुहोस्" #: subprojects/extensions-tool/src/main.c:325 msgid "Uninstall extension" msgstr "विस्तार स्थापनाबाट हटाउनुहोस्" #: subprojects/extensions-tool/src/main.c:326 msgid "List extensions" msgstr "विस्तार सूची" #: subprojects/extensions-tool/src/main.c:327 subprojects/extensions-tool/src/main.c:328 msgid "Show extension info" msgstr "विस्तार जानकारि देखाउनुहोस्" #: subprojects/extensions-tool/src/main.c:329 msgid "Open extension preferences" msgstr "विस्तार प्राथमिकताहरू खोल्नुहोस्" #: subprojects/extensions-tool/src/main.c:330 msgid "Create extension" msgstr "विस्तार सिर्जना गर्नुहोस्" #: subprojects/extensions-tool/src/main.c:331 msgid "Package extension" msgstr "प्याकेज बिस्तार" #: subprojects/extensions-tool/src/main.c:332 msgid "Install extension bundle" msgstr "एउटा विस्तार बन्डल स्थापना गर्नुहोस्" #: subprojects/extensions-tool/src/main.c:334 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "विस्तृत मद्दत प्राप्त गर्न \"%s\" प्रयोग गर्नुहोस् ।\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "सादा" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "एउटा खाली विस्तार" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "सूचक" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "माथिपट्टीमा एउटा प्रतिमा थप्नुहोस्" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1907 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u निर्गत" msgstr[1] "%u निर्गतहरू" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1917 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u आगत" msgstr[1] "%u आगत" #: subprojects/gvc/gvc-mixer-control.c:2867 msgid "System Sounds" msgstr "प्रणाली ध्वनिहरू" #~ msgid "Whether the default Bluetooth adapter had set up devices associated to it" #~ msgstr "पूर्वनिर्धारित ब्लुतुथ एडप्टरले यसमा सम्बन्धित यन्त्र सेटअप गरेको थियो या थिएन ।" #~ msgid "" #~ "The shell will only show a Bluetooth menu item if a Bluetooth adapter is powered, or if there " #~ "were devices set up associated with the default adapter. This will be reset if the default " #~ "adapter is ever seen not to have devices associated to it." #~ msgstr "" #~ "यदि ब्लुतुथ एडप्टर शक्तिमा छ भने वा पूर्वनिर्धारित एडप्टरसँग सम्बन्धित यन्त्र सेट गरिएको भएमा शेलले ब्लुतुथ मेनु वस्तु " #~ "मात्र देखाउनेछ । यदि पूर्वनिर्धारित एडप्टरसँग कहिल्यै पनि यन्त्र सम्बन्धित छैन भने यो रिसेट हुनेछ ।" #~ msgid "Enable introspection API" #~ msgstr "इन्ट्रोस्पेक्टAPI सक्षम पार्नुहोस्" #~ msgid "Enables a D-Bus API that allows to introspect the application state of the shell." #~ msgstr "शेलको अनुप्रयोग अवस्था घुसाउन अनुमति दिने एउटा D-Bus API सक्षम बनाउँदछ ।" #~ msgid "Remove from Favorites" #~ msgstr "मनपर्नेबाट हताउनुहोस्" #~ msgid "Add to Favorites" #~ msgstr "मनपर्नेमा थप्नुहोस्" #~ msgid "Bluetooth Settings" #~ msgstr "ब्लुटुठ सेटिङ" #, javascript-format #~ msgid "%d Connected" #~ msgid_plural "%d Connected" #~ msgstr[0] "%d जडान गरियो" #~ msgstr[1] "%d जडान गरियो" #~ msgid "Bluetooth Off" #~ msgstr "ब्लुटुठ बन्द गरियो" #~ msgid "Bluetooth On" #~ msgstr "ब्लुटुठ शरु छ" #~ msgid "Location Enabled" #~ msgstr "स्थान सक्षम" #~ msgid "Disable" #~ msgstr "अक्षम पार्नुहोस्" #~ msgid "Privacy Settings" #~ msgstr "गोपनीयता सेटिङहरू" #~ msgid "Location In Use" #~ msgstr "स्थान प्रयोगमा छ" #~ msgid "Location Disabled" #~ msgstr "स्थान अक्षम पारिएको" #~ msgid "Enable" #~ msgstr "सक्षम पार्नुहोस्" #, javascript-format #~ msgid "%s Off" #~ msgstr "%s बन्द छ" #, javascript-format #~ msgid "%s Connected" #~ msgstr "%s जडान भएको छ" #, javascript-format #~ msgid "%s Unmanaged" #~ msgstr "%s अव्यवस्थित" #, javascript-format #~ msgid "%s Connecting" #~ msgstr "%s मा जडान गरिदैछ" #, javascript-format #~ msgid "%s Requires Authentication" #~ msgstr "%s प्रमाणीकरण आवश्यक छ" #, javascript-format #~ msgid "Firmware Missing For %s" #~ msgstr "%s का लागि फर्मवेयर हराइरहेको छ" #, javascript-format #~ msgid "%s Unavailable" #~ msgstr "%s उपलब्ध छैन" #, javascript-format #~ msgid "%s Connection Failed" #~ msgstr "%s जडान असफल" #~ msgid "Wired Settings" #~ msgstr "तारजडिट सेटिङ्ग" #~ msgid "Mobile Broadband Settings" #~ msgstr "मोबाइल ब्रोडब्यान्ड सेटिङ्ग" #, javascript-format #~ msgid "%s Hardware Disabled" #~ msgstr "%s हार्डवेयरअक्षम" #, javascript-format #~ msgid "%s Disabled" #~ msgstr "%s अक्षम" #~ msgid "Connect to Internet" #~ msgstr "इन्टरनेट जडान गर्ने" #~ msgid "Airplane Mode is On" #~ msgstr "एअरप्लेन मोड राख्नु" #~ msgid "Wi-Fi is disabled when airplane mode is on." #~ msgstr "हवाईजहाज मोड चलिरहेको बेला Wi-Fi अक्षम हुन्छ ।" #~ msgid "Turn Off Airplane Mode" #~ msgstr "एअरप्लेन मोड हटाऊनु" #~ msgid "Wi-Fi is Off" #~ msgstr "Wi-Fi बन्द छ" #~ msgid "Wi-Fi needs to be turned on in order to connect to a network." #~ msgstr "सञ्जालमा जडान गर्नका लागि Wi-Fi खोल्न आवश्यक हुन्छ ।" #~ msgid "Turn On Wi-Fi" #~ msgstr "वाइफाइ खोल्नुहोस्" #~ msgid "Wi-Fi Networks" #~ msgstr "वाई-फाई सञ्जाल" #~ msgid "Select a network" #~ msgstr "सञ्जाल चयन गर्नुहोस" #~ msgid "No Networks" #~ msgstr "सञ्जाल छैन" #~ msgid "Use hardware switch to turn off" #~ msgstr "बन्द गर्नका लागि हार्डवेयर स्विच प्रयोग गर्नुहोस्" #~ msgid "Select Network" #~ msgstr "सञ्जाल चयन गर्नुहोस" #~ msgid "Wi-Fi Settings" #~ msgstr "वाई-फाई सेटिङ्ग" #, javascript-format #~ msgid "%s Not Connected" #~ msgstr "%s जडान भएको छैन" #~ msgid "connecting…" #~ msgstr "जडान गर्दै…" #~ msgid "authentication required" #~ msgstr "प्रमाणीकरण आवश्यक" #~ msgid "connection failed" #~ msgstr "जडान असफल" #~ msgid "VPN Settings" #~ msgstr "भीपीएन सेटिङ" #~ msgid "VPN" #~ msgstr "भीपीएन" #~ msgid "VPN Off" #~ msgstr "भीपीएन बन्द गर्नुहोस्" #~ msgid "Network Settings" #~ msgstr "सञ्जाल सेटिङ" #, javascript-format #~ msgid "%s Wired Connection" #~ msgid_plural "%s Wired Connections" #~ msgstr[0] "%s तार जडान" #~ msgstr[1] "%s तारहरू जडान" #, javascript-format #~ msgid "%s Wi-Fi Connection" #~ msgid_plural "%s Wi-Fi Connections" #~ msgstr[0] "%s वाई-फाई जडान" #~ msgstr[1] "%s वाई-फाईहरू जडान" #, javascript-format #~ msgid "%s Modem Connection" #~ msgid_plural "%s Modem Connections" #~ msgstr[0] "%s मोडेम जडान" #~ msgstr[1] "%s मोडेमहरू जडान" #~ msgid "Connection failed" #~ msgstr "जडान असफल" #~ msgid "Activation of network connection failed" #~ msgstr "सञ्जालमा जडान असफल भयो" #~ msgid "Night Light Disabled" #~ msgstr "रातको उज्यालो अक्षम" #~ msgid "Resume" #~ msgstr "पुन: निरन्तरता दिनुहोस्" #~ msgid "Disable Until Tomorrow" #~ msgstr "भोलि सम्म निस्क्रिय" #~ msgid "Fully Charged" #~ msgstr "पुरा चार्ज भयो" #~ msgid "Not Charging" #~ msgstr "चार्ज छैन" #~ msgid "Estimating…" #~ msgstr "आँकलन गर्दै…" #, javascript-format #~ msgid "%d∶%02d Remaining (%d %%)" #~ msgstr "%d∶%02d बाँकि (%d %%)" #, javascript-format #~ msgid "%d∶%02d Until Full (%d %%)" #~ msgstr "%d∶%02d पूरा हुन (%d %%) बाँकि" #~ msgid "Screen is Being Shared" #~ msgstr "पर्दा साझेदार गरिएको" #~ msgid "Turn off" #~ msgstr "बन्द गर्नुहोस्" #~ msgid "Airplane Mode On" #~ msgstr "एअरप्लेन मोड राख्नु" #~ msgid "Lock" #~ msgstr "ताल्चा लगाउनुहोस्" #~ msgid "Power Off / Log Out" #~ msgstr "पावर बन्द / लग आउट गर्नुहोस्" #~ msgid "Log Out" #~ msgstr "लगआउट" #~ msgid "Minimize" #~ msgstr "सानो बनाउनुहोस्" #~ msgid "Unmaximize" #~ msgstr "पूर्वावस्थामा ल्याउनुहोस्" #~ msgid "Author" #~ msgstr "लेखक" #~ msgid "Warning" #~ msgstr "चेतावनी" #~ msgid "" #~ "Extensions can cause system issues, including performance problems. If you encounter problems " #~ "with your system, it is recommended to disable all extensions." #~ msgstr "" #~ "विस्तारले कार्यसम्पादन समस्या लगायतका प्रणाली का समस्याहरू उत्पन्न गर्न सक्छ। यदि तपाईँले आफ्नो प्रणालीमा " #~ "समस्या सामना गर्नुभयो भने, सबै विस्तारहरू अक्षम पार्न सिफारिस गरिन्छ ।" #~ msgid "Failed to connect to GNOME Shell" #~ msgstr "जिनोम शेल जडान गर्न असफल" #~ msgid "App Picker View" #~ msgstr "अनुप्रयोग पिकर संवाद" #~ msgid "Copy Error" #~ msgstr "प्रतिलिपि बनाउदा त्रुटि" #, fuzzy #~ msgid "Browse in Software" #~ msgstr "सफ्टवेयर" #~ msgid "Next" #~ msgstr "पछिल्लो" #~ msgctxt "button" #~ msgid "Sign In" #~ msgstr "लगइन गर्दै" #, fuzzy #~ msgid "Frequent" #~ msgstr "" #~ "यो त्रुटिका लागि एउटा निरन्तर कारण भनेको तपाईँको डाटाबेसको भाषाका लागि अनुपयुक्त क्यारेकटर सेट सेटिङ हो । " #~ "सम्पादन गर्नुहोस - डाटाबेस - गुणहरू रोजेर सेटिङ जाँच गर्नुहोस ।" #~ msgid "All" #~ msgstr "सबै" #~| msgctxt "calendar heading" #~| msgid "%A, %B %d, %Y" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d, %Y" #~ msgstr "%A, %B %-d, %Y" #~ msgid "Password:" #~ msgstr "पासवर्ड:" #~ msgid "Type again:" #~ msgstr "फेरि टाईप गर्नुहोस्" #~ msgid "Password: " #~ msgstr "पासवर्ड: " #, fuzzy #~ msgid "Authentication required by wireless network" #~ msgstr "%s प्रमाणिकरण आवश्यक छ ।" #, fuzzy #~ msgid "Mobile broadband network password" #~ msgstr "मोबाइल ब्रोडब्यान्ड सेटिङ्ग" #~ msgid "%A, %B %d" #~ msgstr "%A, %B %d" #~ msgid "%d new message" #~ msgid_plural "%d new messages" #~ msgstr[0] "%d नयाँ सन्देश" #~ msgstr[1] "%d नयाँ सन्देशहरू" #~ msgid "%d new notification" #~ msgid_plural "%d new notifications" #~ msgstr[0] "%d नयाँ सन्देश" #~ msgstr[1] "%d नयाँ सन्देश" #~ msgid "Off" #~ msgstr "बन्द" #~ msgid "On" #~ msgstr "खुला छ" #~ msgid "Account Settings" #~ msgstr "खाता सेटिङ्ग" #, fuzzy #~ msgid "Orientation Lock" #~ msgstr "ताल्चा लगाउनुहोस्" #, fuzzy #~ msgid "Which keyboard to use" #~ msgstr "'extcmd' को कुन कार्यन्वयन प्रयोग गर्ने" #, fuzzy #~ msgid "The type of keyboard to use." #~ msgstr "गतिशील कुञ्जीपाटी सर्टकट प्रयोग गर्नुहोस्" #, fuzzy #~| msgid "Network error" #~ msgid "network-workgroup" #~ msgstr "एसएमबी (SMB) कार्यसमूह" #, fuzzy #~ msgid "There was an error loading the preferences dialog for %s:" #~ msgstr "पीएनजी फाइल लोड गर्दा त्रुटि: %s" #, fuzzy #~ msgid "%s all day." #~ msgstr "दिनभर" #, fuzzy #~ msgid "%s, then %s later." #~ msgstr "%s: पछि फेरी प्रयास गर्नुहोस्\n" #, fuzzy #~ msgid "%s, then %s, followed by %s later." #~ msgstr "फाँट नाम `%.*s' विरामचिन्ह द्धारा साथ दिनु पर्छ" #, fuzzy #~ msgid "Feels like %s." #~ msgstr "हवस् त, %s । तपाईं के चाहनुहुन्छ..." #, fuzzy #~| msgid "Hide Text" #~ msgid "Hide tray" #~ msgstr "लुकाउनुहोस्" #, fuzzy #~ msgid "Status Icons" #~ msgstr "प्रतिमाहरू" #, fuzzy #~ msgid "toggle-switch-us" #~ msgstr "उल्टनू" #~ msgid "Show the message tray" #~ msgstr "सन्देश पूर्वावलोकन देखाउनुहोस्" #, fuzzy #~ msgid "GNOME Shell (wayland compositor)" #~ msgstr "व्यल्यान्ड जिनोम" #~ msgid "Show the week date in the calendar" #~ msgstr "क्यालेन्डरमा हप्ता नम्बर देखाउनुहोस्" #, fuzzy #~ msgid "Web Authentication Redirect" #~ msgstr "अस्थायी प्रमाणीकरण असफल" #~ msgctxt "event list time" #~ msgid "%H∶%M" #~ msgstr "%H∶%M" #~ msgctxt "event list time" #~ msgid "%l∶%M %p" #~ msgstr "%l∶%M %p" #~ msgctxt "list sunday" #~ msgid "Su" #~ msgstr "Su" #~ msgctxt "list monday" #~ msgid "M" #~ msgstr "M" #~ msgctxt "list tuesday" #~ msgid "T" #~ msgstr "T" #~ msgctxt "list wednesday" #~ msgid "W" #~ msgstr "W" #~ msgctxt "list thursday" #~ msgid "Th" #~ msgstr "Th" #~ msgctxt "list friday" #~ msgid "F" #~ msgstr "F" #~ msgctxt "list saturday" #~ msgid "S" #~ msgstr "S" #, fuzzy #~ msgid "Nothing Scheduled" #~ msgstr "केही पनि होइन" #~ msgid "This week" #~ msgstr "यो हप्ता" #~ msgid "Next week" #~ msgstr "गएको हप्ता" #~ msgid "Removable Devices" #~ msgstr "छुट्याउन मिल्ने यन्त्र" #~ msgid "Eject" #~ msgstr "निकाल" #~ msgid "Invitation" #~ msgstr "निमन्त्रना" #~ msgid "Call" #~ msgstr "कल" #~ msgid "File Transfer" #~ msgstr "फाइल स्थानान्तरण" #~ msgid "Chat" #~ msgstr "कुराकानी" #~ msgid "Unmute" #~ msgstr "मौन हटाउनुहोस्" #~ msgid "Mute" #~ msgstr "मौन" #~ msgid "Invitation to %s" #~ msgstr " %sलाई निमन्त्रणा" #, fuzzy #~ msgid "%s is inviting you to join %s" #~ msgstr "के तपाईँ वार्तालाप जडान गर्न चाहानुहुन्छ ?" #~ msgid "Decline" #~ msgstr "घटाउनुहोस्" #~ msgid "Accept" #~ msgstr "स्विकार गर्नुहोस्" #, fuzzy #~ msgid "Video call from %s" #~ msgstr "inetd बाट आह्वान गरिएको" #, fuzzy #~ msgid "Call from %s" #~ msgstr "%s बाट विच्छेदन गर्नुहोस्..." #~ msgid "Answer" #~ msgstr "उत्तर" #~ msgid "%s is sending you %s" #~ msgstr "%s ले %s पठाएको छ" #~ msgid "Authentication failed" #~ msgstr "प्रमाणीकरण असफल भयो ।" #~ msgid "Encryption error" #~ msgstr "गुप्तीकरण त्रुति" #~ msgid "Certificate not provided" #~ msgstr "प्रमाणपत्र उपलब्ध छैन" #~ msgid "Certificate untrusted" #~ msgstr "प्रमाणपत्र विश्वासिलो भएन" #~ msgid "Certificate expired" #~ msgstr "मिति नाघेको प्रमाणपत्र " #, fuzzy #~ msgid "Certificate not activated" #~ msgstr "" #, fuzzy #~ msgid "Certificate hostname mismatch" #~ msgstr "AKID/SKID बेमेल" #, fuzzy #~ msgid "Certificate fingerprint mismatch" #~ msgstr "AKID/SKID बेमेल" #~ msgid "Certificate self-signed" #~ msgstr "श्रींखलामा आफै-हस्ताक्षर गरिएको प्रमाणपत्र" #, fuzzy #~ msgid "Status is set to offline" #~ msgstr "जीकन्फ कुञ्जी \"%s\" लाई अमान्य प्रकारमा सेट गरिएको छ\n" #~ msgid "Certificate is invalid" #~ msgstr "अवैध प्रमाणपत्र" #~ msgid "Connection has been refused" #~ msgstr "सञ्जाल जडान विच्छेदन भयो ।" #~ msgid "Connection can't be established" #~ msgstr "जडान स्थापना गर्नसकिएन" #~ msgid "Connection has been lost" #~ msgstr "सञ्जाल जडान विच्छेदन भयो ।" #~ msgid "This account is already connected to the server" #~ msgstr "खाता पहिले नै सर्भरसंग जडित छ" #~ msgid "The account already exists on the server" #~ msgstr "खाता पहिले नै सर्भरमा अवस्थित छ" #, fuzzy #~ msgid "Certificate has been revoked" #~ msgstr "यो कुञ्जी खारेज गरिएको छ" #~ msgid "Internal error" #~ msgstr "आन्तरिक त्रुटि" #~ msgid "View account" #~ msgstr "खाता हेर्नुहोस्" #~ msgid "Open Calendar" #~ msgstr "पात्रो खोल्नुहोस्" #~ msgid "Open" #~ msgstr "खोल्नुहोस्" #~ msgid "Clear Messages" #~ msgstr "सूचना मेट्नुहोस्" #~ msgid "Notification Settings" #~ msgstr "सुचना सेटिङ" #, fuzzy #~ msgid "Tray Menu" #~ msgstr "टेयरअफ मेनु" #, fuzzy #~ msgid "Message Tray" #~ msgstr "ट्रेको अभिमुखीकरण ।" #~ msgid "%d Connected Device" #~ msgid_plural "%d Connected Devices" #~ msgstr[0] "%d जडित यन्त्र" #~ msgstr[1] "%d जडित यन्त्रहरू" #~ msgid "In Use" #~ msgstr "प्रयोग मा" #~ msgid "connecting..." #~ msgstr "जडान गर्दै....." #~ msgid "UPS" #~ msgstr "UPS" #~ msgid "Battery" #~ msgstr "बेटरि" 07070100000253000081A40000000000000000000000016712993F0001B95A000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/nl.po# Dutch translation for gnome-shell # This file is distributed under the same license as the gnome-shell package. # Aangezien dit een erg zichtbare module is graag eerst contact opnemen met # Wouter Bolsterlee alvorens zaken te wijzigen! # Message tray - Berichtenoverzicht # # Sander Dijkhuis , 2009–2010. # Reinout van Schouwen , 2010, 2013, 2014. # Wouter Bolsterlee , 2011–2014. # Erwin Poeze , 2013. # Nathan Follens , 2015-2024. # Hannie Dumoleyn , 2015, 2017, 2018, 2021. # Justin van Steijn , 2016, 2018. # Philip Goto , 2018, 2022. msgid "" msgstr "" "Project-Id-Version: gnome-shell\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues/\n" "POT-Creation-Date: 2024-03-16 16:54+0000\n" "PO-Revision-Date: 2024-03-31 12:30+0200\n" "Last-Translator: Nathan Follens \n" "Language-Team: GNOME-NL https://matrix.to/#/#nl:gnome.org\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: Poedit 3.4.2\n" "X-DamnedLies-Scope: partial\n" "X-Project-Style: gnome\n" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "Starters" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate pinned app 1" msgstr "Vastgemaakte toepassing 1 activeren" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate pinned app 2" msgstr "Vastgemaakte toepassing 2 activeren" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate pinned app 3" msgstr "Vastgemaakte toepassing 3 activeren" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate pinned app 4" msgstr "Vastgemaakte toepassing 4 activeren" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate pinned app 5" msgstr "Vastgemaakte toepassing 5 activeren" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate pinned app 6" msgstr "Vastgemaakte toepassing 6 activeren" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate pinned app 7" msgstr "Vastgemaakte toepassing 7 activeren" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate pinned app 8" msgstr "Vastgemaakte toepassing 8 activeren" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate pinned app 9" msgstr "Vastgemaakte toepassing 9 activeren" #: data/50-gnome-shell-launchers.xml:46 msgid "Open new window of pinned app 1" msgstr "Nieuw venster openen in toepassing 1" #: data/50-gnome-shell-launchers.xml:50 msgid "Open new window of pinned app 2" msgstr "Nieuw venster openen in toepassing 2" #: data/50-gnome-shell-launchers.xml:54 msgid "Open new window of pinned app 3" msgstr "Nieuw venster openen in toepassing 3" #: data/50-gnome-shell-launchers.xml:58 msgid "Open new window of pinned app 4" msgstr "Nieuw venster openen in toepassing 4" #: data/50-gnome-shell-launchers.xml:62 msgid "Open new window of pinned app 5" msgstr "Nieuw venster openen in toepassing 5" #: data/50-gnome-shell-launchers.xml:66 msgid "Open new window of pinned app 6" msgstr "Nieuw venster openen in toepassing 6" #: data/50-gnome-shell-launchers.xml:70 msgid "Open new window of pinned app 7" msgstr "Nieuw venster openen in toepassing 7" #: data/50-gnome-shell-launchers.xml:74 msgid "Open new window of pinned app 8" msgstr "Nieuw venster openen in toepassing 8" #: data/50-gnome-shell-launchers.xml:78 msgid "Open new window of pinned app 9" msgstr "Nieuw venster openen in toepassing 9" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2276 msgid "Screenshots" msgstr "Schermafdrukken" #: data/50-gnome-shell-screenshots.xml:9 #: data/org.gnome.shell.gschema.xml.in:287 msgid "Take a screenshot interactively" msgstr "Interactief een schermafdruk maken" #: data/50-gnome-shell-screenshots.xml:12 #: data/org.gnome.shell.gschema.xml.in:299 msgid "Take a screenshot" msgstr "Schermafdruk maken" #: data/50-gnome-shell-screenshots.xml:15 #: data/org.gnome.shell.gschema.xml.in:295 msgid "Take a screenshot of a window" msgstr "Schermafdruk maken van een venster" #: data/50-gnome-shell-screenshots.xml:18 #: data/org.gnome.shell.gschema.xml.in:291 msgid "Record a screencast interactively" msgstr "Interactief een schermopname maken" #: data/50-gnome-shell-system.xml:6 js/ui/messageTray.js:1293 msgid "System" msgstr "Systeem" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "De notificatielijst tonen" #: data/50-gnome-shell-system.xml:12 msgid "Open the quick settings menu" msgstr "Het snelmenu openen" #: data/50-gnome-shell-system.xml:15 msgid "Focus the active notification" msgstr "Actieve notificatie focus geven" #: data/50-gnome-shell-system.xml:18 msgid "Show the overview" msgstr "Het overzicht tonen" #: data/50-gnome-shell-system.xml:21 msgid "Show all apps" msgstr "Alle toepassingen tonen" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "GNOME Shell" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "Vensterbeheer en toepassingen starten" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" "Interne hulpprogramma’s inschakelen die nuttig zijn voor ontwikkelaars en " "testers via Alt-F2" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Geeft toegang tot interne debugging- en observatieprogramma’s met behulp van " "het Alt-F2-dialoogvenster." #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "UUIDs van in te schakelen uitbreidingen" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "GNOME Shell-uitbreidingen hebben een UUID-eigenschap; deze instelling somt " "de uitbreidingen op die geladen moeten worden. Alle te laden uitbreiden " "moeten in deze lijst voorkomen. Deze lijst is ook te manipuleren met de DBus-" "methodes ‘EnableExtension’ en ‘DisableExtension’ op org.gnome.Shell." #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "UUIDs van gedwongen uit te schakelen uitbreidingen" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" "GNOME Shell-uitbreidingen hebben een UUID-eigenschap; deze instelling somt " "de uitbreidingen op die uitgeschakeld moeten worden, zelfs indien ze als " "onderdeel van de huidige modus geladen zijn. Deze lijst is ook te " "manipuleren met de DBus-methodes ‘EnableExtension’ en ‘DisableExtension’ op " "org.gnome.Shell. Deze instelling heeft voorrang op de ‘enabled-extensions’-" "instelling." #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "Gebruikersuitbreidingen uitschakelen" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" "Schakel alle door de gebruiker ingeschakelde uitbreidingen uit, zonder de " "instelling ‘enabled-extension’ te wijzigen." #: data/org.gnome.shell.gschema.xml.in:45 msgid "Allow extension installation" msgstr "Installatie van uitbreidingen toestaan" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "Allow users to install extensions in their home folder. If disabled, the " "InstallRemoteExtension D-Bus method will fail, and extensions are only " "loaded from system directories on startup. It does not affect extensions " "that are already loaded, so a change only takes full effect on the next " "login." msgstr "" "Laat gebruikers uitbreidingen in hun persoonlijke map installeren. Indien " "uitgeschakeld zal de InstallRemoteExtension-D-Bus-methode niet werken, en " "zullen uitbreidingen enkel geladen worden uit de systeemmappen bij het " "opstarten. Dit heeft geen invloed op uitbreidingen die reeds geladen zijn, " "dus wijzigingen aan deze instelling worden pas volledig doorgevoerd bij de " "volgende aanmelding." #: data/org.gnome.shell.gschema.xml.in:56 msgid "Disables the validation of extension version compatibility" msgstr "Schakelt de validatie van versiecompatibiliteit voor uitbreidingen uit" #: data/org.gnome.shell.gschema.xml.in:57 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "GNOME Shell zal alleen uitbreidingen laden die aangeven de huidige versie te " "ondersteunen. Door deze optie in te schakelen wordt deze controle " "overgeslagen en worden alle uitbreidingen geladen, ongeacht de versies die " "ze zouden moeten ondersteunen." #: data/org.gnome.shell.gschema.xml.in:65 msgid "List of desktop file IDs for favorite applications" msgstr "Lijst van bureaubladbestand-id’s voor favoriete toepassingen" #: data/org.gnome.shell.gschema.xml.in:66 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" "De toepassingen die aan deze identifiers voldoen worden in het " "favorietengebied weergegeven." #: data/org.gnome.shell.gschema.xml.in:73 msgid "History for command (Alt-F2) dialog" msgstr "Geschiedenis voor het opdrachtvenster (Alt-F2)" #. Translators: looking glass is a debugger and inspector tool, see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/docs/looking-glass.md #: data/org.gnome.shell.gschema.xml.in:78 msgid "History for the looking glass dialog" msgstr "Geschiedenis voor het ‘looking glass’-venster" #: data/org.gnome.shell.gschema.xml.in:82 msgid "Always show the “Log Out” action in the system menu" msgstr "Menu-item ‘Afmelden’ altijd tonen in systeemmenu" #: data/org.gnome.shell.gschema.xml.in:83 msgid "" "This key overrides the automatic hiding of the “Log out” action in the " "system menu for logged-in situations where there is a single, local, non-" "system user and only a single available session type (e.g. GNOME on Wayland)." msgstr "" "Deze instelling voorkomt het automatisch verbergen van het menu-item " "‘afmelden’ indien slechts een enkele, lokale gebruiker - die niet het " "systeem zelf is - met een enkele sessie (bv. GNOME op Wayland) is aangemeld." #: data/org.gnome.shell.gschema.xml.in:92 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "Of wachtwoorden voor versleutelde bestandssystemen of bestandssystemen op " "afstand onthouden moeten worden" #: data/org.gnome.shell.gschema.xml.in:93 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "De shell vraagt om een wachtwoord als een versleuteld bestandssysteem of een " "bestandssysteem op afstand aangekoppeld wordt. Als het wachtwoord voor " "toekomstig gebruik opgeslagen kan worden, dan zal een ‘Wachtwoord onthouden’-" "vinkje getoond worden. Deze instelling bepaalt de standaardwaarde hiervoor." #: data/org.gnome.shell.gschema.xml.in:102 msgid "The last selected non-default power profile" msgstr "De laatst geselecteerde, niet-standaard energiemodus" #: data/org.gnome.shell.gschema.xml.in:103 msgid "" "Some systems support more than two power profiles. In order to still support " "toggling between two profiles, this key records the last selected non-" "default profile." msgstr "" "Sommige systemen ondersteunen meer dan twee energiemodi. Om tussen twee " "profielen omschakelen te blijven ondersteunen, houdt deze sleutel de laatste " "niet-standaard energiemodus bij." #: data/org.gnome.shell.gschema.xml.in:111 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "" "De laatste versie waarvoor het dialoogvenster ‘Welkom bij GNOME’ werd getoond" #: data/org.gnome.shell.gschema.xml.in:112 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can " "be used to effectively disable the dialog." msgstr "" "Deze sleutelt bepaalt voor welke versie het dialoogvenster ‘Welkom bij " "GNOME’ voor het laatst werd getoond. Een lege tekenreeks stelt de oudst " "mogelijke versie voor, en een groot getal stelt versies die nog niet bestaan " "voor. Dit grote getal kan gebruikt worden om het dialoogvenster in de " "praktijk uit te schakelen." #: data/org.gnome.shell.gschema.xml.in:145 msgid "Layout of the app picker" msgstr "Weergave van de toepassingskiezer" #: data/org.gnome.shell.gschema.xml.in:146 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" msgstr "" "Weergave van de toepassingskiezer. Elke ingave in de array is een pagina. " "Pagina’s worden opgeslagen in de volgorde waarin ze in GNOME Shell " "voorkomen. Elke pagina bevat een paar ‘toepassings-ID’ → ‘data’. Momenteel " "worden de huidige waarden opgeslagen als ‘data’: • “position”: de positie " "van het toepassingspictogram op de pagina" #: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:172 msgid "Keybinding to shift between overview states" msgstr "Sneltoets om te schakelen tussen overzichtsstatussen" #: data/org.gnome.shell.gschema.xml.in:166 msgid "Keybinding to shift between session, window picker and app grid" msgstr "" "Sneltoets om te schakelen tussen sessie, vensterkiezer en toepassingsraster" #: data/org.gnome.shell.gschema.xml.in:173 msgid "Keybinding to shift between app grid, window picker and session" msgstr "" "Sneltoets om te schakelen tussen toepassingsraster, vensterkiezer en sessie" #: data/org.gnome.shell.gschema.xml.in:179 msgid "Keybinding to open the “Show Applications” view" msgstr "Sneltoets voor de toepassingsweergave" #: data/org.gnome.shell.gschema.xml.in:180 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "Sneltoets voor de toepassingsweergave in het activiteitenoverzicht." #: data/org.gnome.shell.gschema.xml.in:187 msgid "Keybinding to open the overview" msgstr "Sneltoets voor het overzicht" #: data/org.gnome.shell.gschema.xml.in:188 msgid "Keybinding to open the Activities Overview." msgstr "Sneltoets voor het openen van het Activiteitenoverzicht." #: data/org.gnome.shell.gschema.xml.in:194 msgid "Keybinding to toggle the visibility of the notification list" msgstr "Sneltoets om de notificatielijst te tonen of te verbergen" #: data/org.gnome.shell.gschema.xml.in:195 msgid "Keybinding to toggle the visibility of the notification list." msgstr "Sneltoets om de notificatielijst te tonen of te verbergen." #: data/org.gnome.shell.gschema.xml.in:201 msgid "Keybinding to toggle the quick settings menu" msgstr "Sneltoets om het snelmenu te openen" #: data/org.gnome.shell.gschema.xml.in:202 msgid "Keybinding to toggle the quick settings menu." msgstr "Sneltoets om het snelmenu te openen." #: data/org.gnome.shell.gschema.xml.in:208 msgid "Keybinding to focus the active notification" msgstr "Sneltoets om de actieve notificatie de focus te geven" #: data/org.gnome.shell.gschema.xml.in:209 msgid "Keybinding to focus the active notification." msgstr "Sneltoets om de actieve notificatie de focus te geven." #: data/org.gnome.shell.gschema.xml.in:215 msgid "Switch to application 1" msgstr "Schakelen naar toepassing 1" #: data/org.gnome.shell.gschema.xml.in:219 msgid "Switch to application 2" msgstr "Schakelen naar toepassing 2" #: data/org.gnome.shell.gschema.xml.in:223 msgid "Switch to application 3" msgstr "Schakelen naar toepassing 3" #: data/org.gnome.shell.gschema.xml.in:227 msgid "Switch to application 4" msgstr "Schakelen naar toepassing 4" #: data/org.gnome.shell.gschema.xml.in:231 msgid "Switch to application 5" msgstr "Schakelen naar toepassing 5" #: data/org.gnome.shell.gschema.xml.in:235 msgid "Switch to application 6" msgstr "Schakelen naar toepassing 6" #: data/org.gnome.shell.gschema.xml.in:239 msgid "Switch to application 7" msgstr "Schakelen naar toepassing 7" #: data/org.gnome.shell.gschema.xml.in:243 msgid "Switch to application 8" msgstr "Schakelen naar toepassing 8" #: data/org.gnome.shell.gschema.xml.in:247 msgid "Switch to application 9" msgstr "Schakelen naar toepassing 9" #: data/org.gnome.shell.gschema.xml.in:251 msgid "Open a new instance of application 1" msgstr "Een nieuwe instantie van toepassing 1 openen" #: data/org.gnome.shell.gschema.xml.in:255 msgid "Open a new instance of application 2" msgstr "Een nieuwe instantie van toepassing 2 openen" #: data/org.gnome.shell.gschema.xml.in:259 msgid "Open a new instance of application 3" msgstr "Een nieuwe instantie van toepassing 3 openen" #: data/org.gnome.shell.gschema.xml.in:263 msgid "Open a new instance of application 4" msgstr "Een nieuwe instantie van toepassing 4 openen" #: data/org.gnome.shell.gschema.xml.in:267 msgid "Open a new instance of application 5" msgstr "Een nieuwe instantie van toepassing 5 openen" #: data/org.gnome.shell.gschema.xml.in:271 msgid "Open a new instance of application 6" msgstr "Een nieuwe instantie van toepassing 6 openen" #: data/org.gnome.shell.gschema.xml.in:275 msgid "Open a new instance of application 7" msgstr "Een nieuwe instantie van toepassing 7 openen" #: data/org.gnome.shell.gschema.xml.in:279 msgid "Open a new instance of application 8" msgstr "Een nieuwe instantie van toepassing 8 openen" #: data/org.gnome.shell.gschema.xml.in:283 msgid "Open a new instance of application 9" msgstr "Een nieuwe instantie van toepassing 9 openen" #: data/org.gnome.shell.gschema.xml.in:308 #: data/org.gnome.shell.gschema.xml.in:335 msgid "Limit switcher to current workspace." msgstr "Beperk wisselaar tot huidig werkblad." #: data/org.gnome.shell.gschema.xml.in:309 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "Indien ingeschakeld, worden alleen toepassingen die vensters op het huidige " "werkblad hebben getoond in de wisselaar. Anders worden alle toepassingen " "meegenomen." #: data/org.gnome.shell.gschema.xml.in:326 msgid "The application icon mode." msgstr "Weergave van toepassingspictogrammen." #: data/org.gnome.shell.gschema.xml.in:327 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-only” " "(shows only the application icon) or “both”." msgstr "" "Geeft aan hoe vensters in het overzicht getoond worden. Geldige waarden zijn " "‘thumbnail-only’ (alleen een miniatuur tonen), ‘app-icon-only’ (alleen het " "pictogram van de toepassing tonen) of ‘both’ (beide tonen)." #: data/org.gnome.shell.gschema.xml.in:336 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "Indien ingeschakeld, worden alleen vensters op het huidige werkblad getoond " "in de wisselaar. Anders worden alle vensters meegenomen." #: data/org.gnome.shell.gschema.xml.in:346 msgid "Locations" msgstr "Locaties" #: data/org.gnome.shell.gschema.xml.in:347 msgid "The locations to show in world clocks" msgstr "Lijst van de te tonen wereldklokken" #: data/org.gnome.shell.gschema.xml.in:357 msgid "Automatic location" msgstr "Automatische locatie" #: data/org.gnome.shell.gschema.xml.in:358 msgid "Whether to fetch the current location or not" msgstr "Of de huidige locatie opgehaald moet worden of niet" #: data/org.gnome.shell.gschema.xml.in:365 msgid "Location" msgstr "Locatie" #: data/org.gnome.shell.gschema.xml.in:366 msgid "The location for which to show a forecast" msgstr "De locatie waarvoor er een weersvoorspelling wordt weergegeven" #. Keep in sync with subprojects/extensions-app #: data/org.gnome.Shell.Extensions.desktop.in.in:5 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/data/ui/extensions-window.ui:57 msgid "Extensions" msgstr "Uitbreidingen" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "Netwerkaanmelding" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:277 msgid "Something’s gone wrong" msgstr "Er is iets misgegaan" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" "Het spijt ons, maar er is een probleem opgetreden: de instellingen voor deze " "uitbreiding kunnen niet worden weergegeven. We raden u aan dit probleem te " "melden aan de ontwikkelaars van de uitbreiding." #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "Technische details" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "Startpagina" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 msgid "Visit extension homepage" msgstr "Website van uitbreiding openen" #: js/gdm/authPrompt.js:151 js/gdm/loginDialog.js:466 #: js/ui/audioDeviceSelection.js:66 js/ui/components/networkAgent.js:114 #: js/ui/components/polkitAgent.js:146 js/ui/endSessionDialog.js:438 #: js/ui/extensionDownloader.js:278 js/ui/shellMountOperation.js:384 #: js/ui/shellMountOperation.js:394 msgid "Cancel" msgstr "Annuleren" #: js/gdm/authPrompt.js:317 js/ui/components/networkAgent.js:214 #: js/ui/components/networkAgent.js:234 js/ui/components/networkAgent.js:266 #: js/ui/components/networkAgent.js:299 js/ui/components/networkAgent.js:338 #: js/ui/components/networkAgent.js:351 js/ui/components/polkitAgent.js:288 #: js/ui/shellMountOperation.js:334 msgid "Password" msgstr "Wachtwoord" #: js/gdm/loginDialog.js:327 msgid "Choose Session" msgstr "Kies een sessie" #. Translators: is running for #: js/gdm/loginDialog.js:424 #, javascript-format msgid "" "Remote login is not possible because a remote session is already running for " "%s. To login remotely, you must log out from the remote session or force " "stop it." msgstr "" "Aanmelden op afstand is niet mogelijk omdat er al een sessie op afstand " "actief is voor %s. Om op afstand aan te melden moet u zich eerst afmelden " "bij de sessie op afstand, of ze gedwongen stoppen." #. Translators: is running for #: js/gdm/loginDialog.js:427 #, javascript-format msgid "" "Login is not possible because a remote session is already running for %s. To " "login, you must log out from the remote session or force stop it." msgstr "" "Aanmelden op afstand is niet mogelijk omdat er al een sessie op afstand " "actief is voor %s. Om op afstand aan te melden moet u zich eerst afmelden " "bij de sessie op afstand, of ze gedwongen stoppen." #. Translators: is running for #: js/gdm/loginDialog.js:430 #, javascript-format msgid "" "Remote login is not possible because a local session is already running for " "%s. To login remotely, you must log out from the local session or force stop " "it." msgstr "" "Aanmelden op afstand is niet mogelijk omdat er al een lokale sessie actief " "is voor %s. Om op afstand aan te melden moet u zich eerst afmelden bij de " "lokale sessie, of ze gedwongen stoppen." #. Translators: is running for #: js/gdm/loginDialog.js:433 #, javascript-format msgid "" "Login is not possible because a session is already running for %s. To login, " "you must log out from the session or force stop it." msgstr "" "Aanmelden is niet mogelijk omdat er al een sessie actief is voor %s. Om aan " "te melden moet u zich eerst afmelden bij de actieve sessie, of ze gedwongen " "stoppen." #: js/gdm/loginDialog.js:442 msgid "Session Already Running" msgstr "Sessie reeds actief" #: js/gdm/loginDialog.js:454 msgid "" "Force stopping will quit any running apps and processes, and could result in " "data loss." msgstr "" "Gedwongen stoppen zal alle actieve toepassingen en processen afsluiten, en " "kan tot gegevensverlies leiden." #: js/gdm/loginDialog.js:474 msgid "Force Stop" msgstr "Gedwongen stoppen" #: js/gdm/loginDialog.js:542 msgid "Not listed?" msgstr "Niet in de lijst?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:1010 #, javascript-format msgid "(e.g., user or %s)" msgstr "(bijv. gebruiker of %s)" #: js/gdm/loginDialog.js:1015 js/ui/components/networkAgent.js:258 #: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:327 msgid "Username" msgstr "Gebruikersnaam" #: js/gdm/loginDialog.js:1081 msgid "Login Attempt Timed Out" msgstr "Time-out bij aanmelden" #: js/gdm/loginDialog.js:1082 msgid "Login took too long, please try again" msgstr "Aanmelden duurde te lang, probeer het opnieuw" #: js/gdm/loginDialog.js:1427 msgid "Login Window" msgstr "Aanmeldvenster" #: js/gdm/util.js:497 msgid "Authentication error" msgstr "Authenticatie mislukt" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:728 msgid "(or swipe finger across reader)" msgstr "(of veeg met uw vinger over de lezer)" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:733 msgid "(or place finger on reader)" msgstr "(of plaats uw vinger op de lezer)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:91 msgctxt "search-result" msgid "Power Off" msgstr "Uitschakelen" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:94 msgid "power off;poweroff;shutdown;halt;stop" msgstr "power off;poweroff;shutdown;halt;stop;uitschakelen;uitzetten;stoppen" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:99 msgctxt "search-result" msgid "Restart" msgstr "Herstarten" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:102 msgid "reboot;restart;" msgstr "" "reboot;restart;herstarten;heropstarten;opnieuw opstarten;opnieuw starten;" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:107 msgctxt "search-result" msgid "Lock Screen" msgstr "Vergrendelingsscherm" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:110 msgid "lock screen" msgstr "lock screen;vergrendelingsscherm;vergrendelscherm" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:115 msgctxt "search-result" msgid "Log Out" msgstr "Afmelden" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:118 msgid "logout;log out;sign off" msgstr "logout;log out;sign off;afmelden;uitloggen" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:123 msgctxt "search-result" msgid "Suspend" msgstr "Pauzestand" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:126 msgid "suspend;sleep" msgstr "suspend;sleep;pauzestand;slaapmodus" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:131 msgctxt "search-result" msgid "Switch User" msgstr "Gebruiker wisselen" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:134 msgid "switch user" msgstr "gebruiker wisselen" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:141 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "" "lock orientation;unlock orientation;screen;rotation;oriëntatievergrendeling;" "scherm;draaiing;rotatie" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:146 msgctxt "search-result" msgid "Take a Screenshot" msgstr "Schermafdruk maken" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:149 msgid "screenshot;screencast;snip;capture;record" msgstr "" "schermafdruk;screenshot;schermopname;screencast;knip;snip;opnemen;capture;" "record" #: js/misc/systemActions.js:249 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "Schermoriëntatie ontgrendelen" #: js/misc/systemActions.js:250 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "Schermoriëntatie vergrendelen" #: js/misc/util.js:139 msgid "Command not found" msgstr "Opdracht niet gevonden" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:179 msgid "Could not parse command:" msgstr "Kon opdracht niet parsen:" #: js/misc/util.js:187 #, javascript-format msgid "Execution of “%s” failed:" msgstr "Uitvoeren van ‘%s’ mislukt:" #: js/misc/dateUtils.js:69 msgid "Just now" msgstr "Zojuist" #: js/misc/dateUtils.js:72 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d minuut geleden" msgstr[1] "%d minuten geleden" #: js/misc/dateUtils.js:79 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d uur geleden" msgstr[1] "%d uur geleden" #: js/misc/dateUtils.js:85 js/ui/dateMenu.js:185 msgid "Yesterday" msgstr "Gisteren" #: js/misc/dateUtils.js:88 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d dag geleden" msgstr[1] "%d dagen geleden" #: js/misc/dateUtils.js:95 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d week geleden" msgstr[1] "%d weken geleden" #: js/misc/dateUtils.js:102 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%d maand geleden" msgstr[1] "%d maand geleden" #: js/misc/dateUtils.js:108 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "%d jaar geleden" msgstr[1] "%d jaar geleden" #. Translators: Time in 24h format #: js/misc/dateUtils.js:155 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/dateUtils.js:161 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "Gisteren, %H∶%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/dateUtils.js:167 #, no-c-format msgid "%A, %H∶%M" msgstr "%A,%H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/dateUtils.js:173 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%-d %B, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/dateUtils.js:179 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%-d %B %Y, %H∶%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/dateUtils.js:184 msgid "%l∶%M %p" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/dateUtils.js:190 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "Gisteren, %H∶%M" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/dateUtils.js:196 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/dateUtils.js:202 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%-d %B, %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/dateUtils.js:208 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%-d %B %Y, %l∶%M %p" #: js/portalHelper/main.js:98 msgid "Your connection seems to be secure" msgstr "Uw verbinding lijkt beveiligd te zijn" #: js/portalHelper/main.js:104 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "Uw verbinding met deze hotspotaanmelding is niet beveiligd. Wachtwoorden of " "andere informatie die u op deze pagina invoert kunnen door anderen in de " "buurt gelezen worden." #: js/portalHelper/main.js:115 msgid "Hotspot Login" msgstr "Hotspotaanmelding" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:45 js/ui/inhibitShortcutsDialog.js:92 msgid "Deny" msgstr "Weigeren" #: js/ui/accessDialog.js:46 js/ui/inhibitShortcutsDialog.js:101 msgid "Allow" msgstr "Toestaan" #: js/ui/appDisplay.js:1775 msgid "Unnamed Folder" msgstr "Naamloze map" #: js/ui/appFavorites.js:166 #, javascript-format msgid "%s has been pinned to the dash." msgstr "%s is vastgemaakt aan de dash." #: js/ui/appFavorites.js:199 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "%s is losgemaakt van de dash." #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:51 msgid "Open Windows" msgstr "Open vensters" #: js/ui/appMenu.js:59 msgid "New Window" msgstr "Nieuw venster" #: js/ui/appMenu.js:86 msgid "App Details" msgstr "Toepassingsdetails" #: js/ui/appMenu.js:102 msgid "Quit" msgstr "Afsluiten" #: js/ui/appMenu.js:162 js/ui/dash.js:250 msgid "Unpin" msgstr "Losmaken" #: js/ui/appMenu.js:163 msgid "Pin to Dash" msgstr "Vastmaken aan dash" # Dedicated niet vertaald #: js/ui/appMenu.js:180 msgid "Launch using Integrated Graphics Card" msgstr "Met geïntegreerde grafische kaart opstarten" # Dedicated niet vertaald #: js/ui/appMenu.js:181 msgid "Launch using Discrete Graphics Card" msgstr "Met discrete grafische kaart opstarten" #: js/ui/audioDeviceSelection.js:46 msgid "Select Audio Device" msgstr "Kies audioapparaat" #: js/ui/audioDeviceSelection.js:61 js/ui/status/volume.js:83 msgid "Sound Settings" msgstr "Geluidsinstellingen" #: js/ui/audioDeviceSelection.js:74 msgid "Headphones" msgstr "Hoofdtelefoon" #: js/ui/audioDeviceSelection.js:76 msgid "Headset" msgstr "Headset" #: js/ui/audioDeviceSelection.js:78 js/ui/status/volume.js:358 msgid "Microphone" msgstr "Microfoon" #: js/ui/backgroundMenu.js:15 msgid "Change Background…" msgstr "Achtergrond aanpassen…" #: js/ui/backgroundMenu.js:17 msgid "Display Settings" msgstr "Scherminstellingen" #: js/ui/backgroundMenu.js:18 msgid "Settings" msgstr "Instellingen" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:39 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:65 msgctxt "grid sunday" msgid "S" msgstr "Z" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:67 msgctxt "grid monday" msgid "M" msgstr "M" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:69 msgctxt "grid tuesday" msgid "T" msgstr "D" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:71 msgctxt "grid wednesday" msgid "W" msgstr "W" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:73 msgctxt "grid thursday" msgid "T" msgstr "D" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:75 msgctxt "grid friday" msgid "F" msgstr "V" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:77 msgctxt "grid saturday" msgid "S" msgstr "Z" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:428 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:438 msgid "%OB %Y" msgstr "%OB %Y" #: js/ui/calendar.js:500 msgid "Previous month" msgstr "Vorige maand" #: js/ui/calendar.js:518 msgid "Next month" msgstr "Volgende maand" #: js/ui/calendar.js:669 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:728 msgid "Week %V" msgstr "Week %V" #: js/ui/calendar.js:920 msgid "No Notifications" msgstr "Geen notificaties" #: js/ui/calendar.js:976 msgid "Do Not Disturb" msgstr "Niet storen" #: js/ui/calendar.js:997 msgid "Clear" msgstr "Wissen" #: js/ui/calendar.js:1001 msgctxt "action" msgid "Clear all notifications" msgstr "Alle notificaties wissen" #. Translators: %s is an application name #: js/ui/closeDialog.js:44 #, javascript-format msgid "“%s” is not responding." msgstr "‘%s’ reageert niet." #: js/ui/closeDialog.js:45 msgid "" "You may choose to wait a short while for it to continue or force the app to " "quit entirely." msgstr "" "U kunt even wachten tot de toepassing weer reageert, of ze dwingen " "onmiddellijk af te sluiten." #: js/ui/closeDialog.js:73 msgid "Force Quit" msgstr "Gedwongen afsluiten" #: js/ui/closeDialog.js:78 msgid "Wait" msgstr "Wachten" #: js/ui/components/automountManager.js:84 msgid "External drive connected" msgstr "Verbinding met externe schijf gemaakt" #: js/ui/components/automountManager.js:96 msgid "External drive disconnected" msgstr "Verbinding met externe schijf verbroken" #: js/ui/components/automountManager.js:207 msgid "Unable to unlock volume" msgstr "Kan volume niet ontgrendelen" #: js/ui/components/automountManager.js:208 msgid "The installed udisks version does not support the PIM setting" msgstr "" "De geïnstalleerde versie van udisks biedt geen ondersteuning voor de PIM-" "instelling" #: js/ui/components/autorunManager.js:200 #, javascript-format msgid "Open with %s" msgstr "Openen met %s" #: js/ui/components/networkAgent.js:96 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router." msgstr "" "U kunt ook verbinding maken door op de ‘WPS’-knop op uw router te drukken." #: js/ui/components/networkAgent.js:108 js/ui/status/bluetooth.js:246 #: js/ui/status/network.js:360 js/ui/status/network.js:444 msgid "Connect" msgstr "Verbinden" #: js/ui/components/networkAgent.js:223 msgid "Key" msgstr "Sleutel" #: js/ui/components/networkAgent.js:274 js/ui/components/networkAgent.js:313 msgid "Private key password" msgstr "Wachtwoord van privésleutel" #: js/ui/components/networkAgent.js:307 msgid "Identity" msgstr "Identiteit" #: js/ui/components/networkAgent.js:333 msgid "Service" msgstr "Dienst" #: js/ui/components/networkAgent.js:371 js/ui/components/networkAgent.js:407 #: js/ui/components/networkAgent.js:750 js/ui/components/networkAgent.js:771 msgid "Authentication required" msgstr "Aanmelding vereist" #: js/ui/components/networkAgent.js:372 js/ui/components/networkAgent.js:751 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network " "“%s”." msgstr "" "Voor toegang tot het draadloze netwerk ‘%s’ is een wachtwoord of sleutel " "benodigd." #: js/ui/components/networkAgent.js:376 js/ui/components/networkAgent.js:755 msgid "Wired 802.1X authentication" msgstr "802.1X-authenticatie (bekabeld)" #: js/ui/components/networkAgent.js:379 msgid "Network name" msgstr "Netwerknaam" #: js/ui/components/networkAgent.js:387 js/ui/components/networkAgent.js:759 msgid "DSL authentication" msgstr "DSL-authenticatie" #: js/ui/components/networkAgent.js:394 js/ui/components/networkAgent.js:764 msgid "PIN code required" msgstr "Pincode vereist" #: js/ui/components/networkAgent.js:395 js/ui/components/networkAgent.js:765 msgid "PIN code is needed for the mobile broadband device" msgstr "Pincode vereist voor het apparaat voor mobiel breedband" #: js/ui/components/networkAgent.js:397 msgid "PIN" msgstr "Pincode" #: js/ui/components/networkAgent.js:408 js/ui/components/networkAgent.js:756 #: js/ui/components/networkAgent.js:760 js/ui/components/networkAgent.js:772 #: js/ui/components/networkAgent.js:776 #, javascript-format msgid "A password is required to connect to “%s”." msgstr "Er is een wachtwoord nodig om met ‘%s’ te verbinden." #: js/ui/components/networkAgent.js:775 msgid "VPN password" msgstr "VPN-wachtwoord" #: js/ui/components/polkitAgent.js:46 msgid "Authentication Required" msgstr "Authenticatie nodig" #: js/ui/components/polkitAgent.js:86 msgid "Administrator" msgstr "Beheerder" # Vrij vertaald (Wouter Bolsterlee) #: js/ui/components/polkitAgent.js:151 msgid "Authenticate" msgstr "Verifiëren" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:265 js/ui/shellMountOperation.js:417 msgid "Sorry, that didn’t work. Please try again." msgstr "Helaas, dat is niet gelukt. Probeer het opnieuw." #: js/ui/ctrlAltTab.js:25 js/ui/overviewControls.js:418 msgid "Windows" msgstr "Vensters" #: js/ui/dash.js:206 js/ui/dash.js:252 msgid "Show Apps" msgstr "Toepassingen tonen" # Betere vertaling is welkom (Wouter Bolsterlee) #. Translators: this is the name of the dock/favorites area on #. the bottom of the overview #: js/ui/dash.js:410 msgid "Dash" msgstr "Zijbalk" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:101 msgid "%B %-d %Y" msgstr "%-d %B %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:108 msgid "%A %B %e %Y" msgstr "%A %e %B %Y" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:174 msgctxt "calendar heading" msgid "%B %-d" msgstr "%-d %B" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:177 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%-d %B" #: js/ui/dateMenu.js:183 msgid "Today" msgstr "Vandaag" #: js/ui/dateMenu.js:187 msgid "Tomorrow" msgstr "Morgen" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:218 msgctxt "event list time" msgid "All Day" msgstr "Gehele dag" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:240 msgid "%m/%d" msgstr "%d-%m" #: js/ui/dateMenu.js:291 msgid "No Events" msgstr "Geen gebeurtenissen" #: js/ui/dateMenu.js:413 msgid "Add world clocks…" msgstr "Wereldklokken toevoegen…" #: js/ui/dateMenu.js:414 msgid "World Clocks" msgstr "Wereldklokken" #: js/ui/dateMenu.js:704 msgid "Loading…" msgstr "Laden…" #: js/ui/dateMenu.js:714 msgid "Go online for weather information" msgstr "Ga online voor informatie over het weer" #: js/ui/dateMenu.js:716 msgid "Weather information is currently unavailable" msgstr "Informatie over het weer is momenteel niet beschikbaar" #: js/ui/dateMenu.js:726 msgid "Weather" msgstr "Weer" #: js/ui/dateMenu.js:728 msgid "Select weather location…" msgstr "Selecteer weerlocatie…" #: js/ui/endSessionDialog.js:48 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "%s afmelden" #: js/ui/endSessionDialog.js:49 msgctxt "title" msgid "Log Out" msgstr "Afmelden" #: js/ui/endSessionDialog.js:52 #, javascript-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "%s wordt automatisch afgemeld over %d seconde." msgstr[1] "%s wordt automatisch afgemeld over %d seconden." #: js/ui/endSessionDialog.js:58 #, javascript-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "U wordt automatisch afgemeld over %d seconde." msgstr[1] "U wordt automatisch afgemeld over %d seconden." #: js/ui/endSessionDialog.js:65 msgctxt "button" msgid "Log Out" msgstr "Afmelden" #: js/ui/endSessionDialog.js:71 js/ui/status/system.js:176 msgctxt "title" msgid "Power Off" msgstr "Uitschakelen" #: js/ui/endSessionDialog.js:72 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Updates installeren en uitschakelen" #: js/ui/endSessionDialog.js:75 #, javascript-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "De computer wordt automatisch afgesloten over %d seconde." msgstr[1] "De computer wordt automatisch afgesloten over %d seconden." #: js/ui/endSessionDialog.js:79 js/ui/endSessionDialog.js:98 msgctxt "checkbox" msgid "Install pending software updates" msgstr "Gereedstaande software-updates installeren" #: js/ui/endSessionDialog.js:83 msgctxt "button" msgid "Power Off" msgstr "Uitschakelen" #: js/ui/endSessionDialog.js:90 msgctxt "title" msgid "Restart" msgstr "Opnieuw opstarten" #: js/ui/endSessionDialog.js:91 msgctxt "title" msgid "Install Updates & Restart" msgstr "Updates installeren en herstarten" #: js/ui/endSessionDialog.js:94 #, javascript-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "De computer wordt opnieuw opgestart over %d seconde." msgstr[1] "De computer wordt opnieuw opgestart over %d seconden." #: js/ui/endSessionDialog.js:102 msgctxt "button" msgid "Restart" msgstr "Opnieuw opstarten" #: js/ui/endSessionDialog.js:110 msgctxt "title" msgid "Restart & Install Updates" msgstr "Opnieuw opstarten en updates installeren" #: js/ui/endSessionDialog.js:113 #, javascript-format msgid "The system will automatically restart and install updates in %d second." msgid_plural "" "The system will automatically restart and install updates in %d seconds." msgstr[0] "" "De computer zal opnieuw opstarten en updates installeren over %d seconde." msgstr[1] "" "De computer zal opnieuw opstarten en updates installeren over %d seconden." #: js/ui/endSessionDialog.js:120 js/ui/endSessionDialog.js:141 msgctxt "button" msgid "Restart & Install" msgstr "Herstarten & installeren" #: js/ui/endSessionDialog.js:122 msgctxt "button" msgid "Install & Power Off" msgstr "Installeren & uitschakelen" #: js/ui/endSessionDialog.js:123 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Uitschakelen na installatie van updates" #: js/ui/endSessionDialog.js:130 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "Opnieuw opstarten en upgrades installeren" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:135 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "%s %s zal de herstart worden geïnstalleerd. De installatie van de upgrade " "kan lang duren: zorg ervoor dat u een reservekopie heeft gemaakt en dat de " "computer is aangesloten op netstroom." #: js/ui/endSessionDialog.js:284 msgid "Low battery power: please plug in before installing updates." msgstr "" "De batterij is bijna leeg: sluit de adapter aan alvorens de installatie te " "starten." #: js/ui/endSessionDialog.js:293 msgid "Some applications are busy or have unsaved work" msgstr "Sommige toepassingen zijn bezig of hebben niet-opgeslagen werk" #: js/ui/endSessionDialog.js:298 msgid "Other users are logged in" msgstr "Er zijn andere gebruikers aangemeld" #: js/ui/endSessionDialog.js:468 msgctxt "button" msgid "Boot Options" msgstr "Opstartopties" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:673 #, javascript-format msgid "%s (remote)" msgstr "%s (op afstand)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:676 #, javascript-format msgid "%s (console)" msgstr "%s (console)" #: js/ui/extensionDownloader.js:282 msgid "Install" msgstr "Installeren" #: js/ui/extensionDownloader.js:288 msgid "Install Extension" msgstr "Uitbreiding installeren" #: js/ui/extensionDownloader.js:289 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "‘%s’ downloaden van extensions.gnome.org en daarna installeren?" #: js/ui/extensionSystem.js:354 msgid "Extension Updates Available" msgstr "Er zijn uitbreidingsupdates beschikbaar" #: js/ui/extensionSystem.js:355 msgid "Extension updates are ready to be installed." msgstr "Uitbreidingsupdates zijn klaar voor installatie." #: js/ui/inhibitShortcutsDialog.js:70 msgid "Allow inhibiting shortcuts" msgstr "Blokkeren van sneltoetsen toestaan" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:73 #, javascript-format msgid "The app %s wants to inhibit shortcuts" msgstr "De toepassing %s wil sneltoetsen blokkeren" #: js/ui/inhibitShortcutsDialog.js:74 msgid "An app wants to inhibit shortcuts" msgstr "Een toepassing wil sneltoetsen blokkeren" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:81 #, javascript-format msgid "You can restore shortcuts by pressing %s." msgstr "U kan sneltoetsen herstellen door op %s te drukken." #: js/ui/kbdA11yDialog.js:34 msgid "Slow Keys Turned On" msgstr "Trage Toetsen ingeschakeld" #: js/ui/kbdA11yDialog.js:35 msgid "Slow Keys Turned Off" msgstr "Trage Toetsen uitgeschakeld" #: js/ui/kbdA11yDialog.js:36 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "U heeft zojuist de Shift-toets gedurende 8 seconden ingedrukt gehouden. Dat " "is de sneltoets voor de Trage Toetsen-modus, hetgeen invloed heeft op de " "manier waarop het toetsenbord functioneert." #: js/ui/kbdA11yDialog.js:42 msgid "Sticky Keys Turned On" msgstr "Plaktoetsen ingeschakeld" #: js/ui/kbdA11yDialog.js:43 msgid "Sticky Keys Turned Off" msgstr "Plaktoetsen uitgeschakeld" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "U heeft zojuist de Shift-toets 5 keer op een rij ingedrukt. Dat is de " "sneltoets voor de Plaktoetsen-modus, hetgeen invloed heeft op de manier " "waarop uw toetsenbord functioneert." #: js/ui/kbdA11yDialog.js:47 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" "U heeft zojuist twee toetsen tegelijk ingedrukt, of de Shift-toets 5 keer op " "een rij ingedrukt. Dat zet de Plaktoetsen-modus uit, hetgeen invloed heeft " "op de manier waarop uw toetsenbord functioneert." #: js/ui/kbdA11yDialog.js:57 msgid "Leave On" msgstr "Aan laten" #: js/ui/kbdA11yDialog.js:57 msgid "Turn On" msgstr "Inschakelen" #: js/ui/kbdA11yDialog.js:67 js/ui/status/network.js:455 msgid "Turn Off" msgstr "Uitschakelen" #: js/ui/kbdA11yDialog.js:67 msgid "Leave Off" msgstr "Uit laten" #: js/ui/keyboard.js:181 js/ui/status/keyboard.js:899 msgid "Keyboard Settings" msgstr "Toetsenbordinstellingen" #: js/ui/lookingGlass.js:724 msgid "No extensions installed" msgstr "Geen uitbreidingen geïnstalleerd" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:785 #, javascript-format msgid "%s has not emitted any errors." msgstr "%s heeft geen fouten gemeld." #: js/ui/lookingGlass.js:791 msgid "Hide Errors" msgstr "Fouten verbergen" #: js/ui/lookingGlass.js:795 js/ui/lookingGlass.js:872 msgid "Show Errors" msgstr "Fouten tonen" #: js/ui/lookingGlass.js:804 msgid "Active" msgstr "Actief" #: js/ui/lookingGlass.js:807 msgid "Inactive" msgstr "Inactief" #: js/ui/lookingGlass.js:809 msgid "Error" msgstr "Fout" #: js/ui/lookingGlass.js:811 msgid "Out of date" msgstr "Gedateerd" #: js/ui/lookingGlass.js:813 msgid "Downloading" msgstr "Downloaden" #: js/ui/lookingGlass.js:815 msgid "Deactivating" msgstr "Deactiveren" #: js/ui/lookingGlass.js:817 msgid "Activating" msgstr "Activeren" #: js/ui/lookingGlass.js:850 msgid "View Source" msgstr "Broncode weergeven" #: js/ui/lookingGlass.js:861 msgid "Web Page" msgstr "Webpagina" #: js/ui/main.js:279 msgid "System was put in unsafe mode" msgstr "Systeem is in onveilige modus gezet" #: js/ui/main.js:280 msgid "Apps now have unrestricted access" msgstr "Toepassingen hebben nu onbeperkte toegang" #: js/ui/main.js:283 js/ui/overview.js:54 msgid "Undo" msgstr "Ongedaan maken" #: js/ui/main.js:340 msgid "Logged in as a privileged user" msgstr "Aangemeld als gebruiker met extra rechten" #: js/ui/main.js:341 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" "Uit beveiligingsoverwegingen is het beter dat u het uitvoeren van een sessie " "als gebruiker met extra rechten vermijdt. Meld u, indien mogelijk, aan als " "een normale gebruiker." #: js/ui/main.js:389 msgid "Screen Lock disabled" msgstr "Schermvergrendeling uitgeschakeld" #: js/ui/main.js:390 msgid "Screen Locking requires the GNOME display manager." msgstr "Schermvergrendeling vereist de GNOME-displaymanager." #. Translators: this is the string displayed in the header when a message #. source doesn't have a name #: js/ui/messageList.js:400 msgid "Unknown App" msgstr "Onbekende toepassing" #: js/ui/messageTray.js:328 js/ui/messageTray.js:330 msgid "Notification sound" msgstr "Notificatiegeluid" #: js/ui/mpris.js:198 msgid "Unknown artist" msgstr "Onbekende artiest" #: js/ui/mpris.js:208 msgid "Unknown title" msgstr "Onbekend nummer" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:342 msgid "Type to search" msgstr "Typ om te zoeken" #: js/ui/overviewControls.js:406 msgid "Apps" msgstr "Toepassingen" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:67 msgid "Overview" msgstr "Overzicht" #: js/ui/padOsd.js:100 msgid "New shortcut…" msgstr "Nieuwe sneltoets…" #: js/ui/padOsd.js:153 msgid "App defined" msgstr "Toepassing gedefinieerd" #: js/ui/padOsd.js:154 msgid "Show on-screen help" msgstr "Hulptekst op scherm tonen" #: js/ui/padOsd.js:155 msgid "Switch monitor" msgstr "Van beeldscherm wisselen" #: js/ui/padOsd.js:156 msgid "Assign keystroke" msgstr "Toetsaanslag toewijzen" #: js/ui/padOsd.js:225 msgid "Done" msgstr "Klaar" #: js/ui/padOsd.js:728 msgid "Edit…" msgstr "Bewerken…" #: js/ui/padOsd.js:775 msgid "None" msgstr "Geen" #: js/ui/padOsd.js:846 msgid "Press a button to configure" msgstr "Druk op een toets om te configueren" #: js/ui/padOsd.js:847 msgid "Press Esc to exit" msgstr "Druk op Esc om af te sluiten" #: js/ui/padOsd.js:850 msgid "Press any key to exit" msgstr "Druk op een willekeurige toets om af te sluiten" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:425 msgid "Activities" msgstr "Activiteiten" #: js/ui/panel.js:506 msgctxt "System menu in the top bar" msgid "System" msgstr "Systeem" #: js/ui/panel.js:680 msgid "Top Bar" msgstr "Menubalk" #: js/ui/quickSettings.js:187 msgid "Open menu" msgstr "Menu openen" #: js/ui/runDialog.js:63 msgid "Run a Command" msgstr "Voer een opdracht uit" #: js/ui/runDialog.js:78 msgid "Press ESC to close" msgstr "Druk op ESC om te sluiten" #: js/ui/runDialog.js:243 msgid "Restart is not available on Wayland" msgstr "Herstarten is niet beschikbaar op Wayland" #: js/ui/runDialog.js:248 msgid "Restarting…" msgstr "Herstarten…" #: js/ui/screenShield.js:235 msgid "GNOME needs to lock the screen" msgstr "GNOME moet het scherm vergrendelen" #: js/ui/screenShield.js:276 js/ui/screenShield.js:669 msgid "Unable to lock" msgstr "Kon niet vergrendelen" #: js/ui/screenShield.js:277 js/ui/screenShield.js:670 msgid "Lock was blocked by an app" msgstr "Vergrendelen is door een toepassing voorkomen" #: js/ui/screenshot.js:1254 msgid "Selection" msgstr "Selectie" #: js/ui/screenshot.js:1264 msgid "Area Selection" msgstr "Gebiedsselectie" #: js/ui/screenshot.js:1269 msgid "Screen" msgstr "Scherm" #: js/ui/screenshot.js:1279 msgid "Screen Selection" msgstr "Schermselectie" #: js/ui/screenshot.js:1284 msgid "Window" msgstr "Venster" #: js/ui/screenshot.js:1294 msgid "Window Selection" msgstr "Vensterselectie" #. Translators: entry in the window right click menu. #: js/ui/screenshot.js:1319 js/ui/status/system.js:113 js/ui/windowMenu.js:30 msgid "Take Screenshot" msgstr "Schermafdruk maken" #: js/ui/screenshot.js:1335 msgid "Record Screen" msgstr "Scherm opnemen" #. Translators: since this string refers to an action, #. it needs to be phrased as a verb. #: js/ui/screenshot.js:1352 msgid "Capture" msgstr "Opnemen" #: js/ui/screenshot.js:1374 msgid "Show Pointer" msgstr "Muisaanwijzer tonen" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1998 msgid "Screencasts" msgstr "Schermopnamen" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast from 07-17-2013 10:00:46 PM" #: js/ui/screenshot.js:2003 #, no-c-format msgid "Screencast from %d %t" msgstr "Schermopname van %d %t" #. Translators: notification title. #: js/ui/screenshot.js:2049 msgid "Screencast recorded" msgstr "Schermopname opgenomen" #. Translators: notification title. #: js/ui/screenshot.js:2062 msgid "Screencast failed to start" msgstr "Schermopname kon niet starten" #. Translators: notification title. #: js/ui/screenshot.js:2068 msgid "Screencast ended: Out of disk space" msgstr "Schermopname is beëindigd: geen vrije schijfruimte meer" #. We can encourage user to try again on service crashes since the #. recorder will auto-blocklist the pipeline that crashed. #. Translators: notification title. #: js/ui/screenshot.js:2074 msgid "Screencast ended unexpectedly, please try again" msgstr "Schermopname is onverwacht beëindigd, probeer het opnieuw" #. Translators: notification title. #: js/ui/screenshot.js:2077 msgid "Screencast ended unexpectedly" msgstr "Schermopname is onverwacht beëindigd" #. Translators: notification source name. #: js/ui/screenshot.js:2087 js/ui/screenshot.js:2329 msgid "Screenshot" msgstr "Schermafdruk" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:2094 msgid "Click here to view the video." msgstr "Klik hier om de video te bekijken." #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:2102 js/ui/screenshot.js:2345 msgid "Show in Files" msgstr "In Bestanden tonen" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2289 #, javascript-format msgid "Screenshot from %s" msgstr "Schermafdruk van %s" #. Translators: notification title. #: js/ui/screenshot.js:2335 msgid "Screenshot captured" msgstr "Schermafdruk gemaakt" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2337 msgid "You can paste the image from the clipboard." msgstr "U kunt de afbeelding van het klembord plakken." #: js/ui/screenshot.js:2393 js/ui/screenshot.js:2557 msgid "Screenshot taken" msgstr "Schermafdruk gemaakt" #: js/ui/search.js:831 msgid "Searching…" msgstr "Zoeken…" #: js/ui/search.js:833 msgid "No results." msgstr "Geen resultaten." #: js/ui/search.js:964 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "%d meer" msgstr[1] "%d meer" #: js/ui/searchController.js:89 #: subprojects/extensions-app/data/ui/extensions-window.ui:73 msgid "Search" msgstr "Zoeken" #: js/ui/shellEntry.js:23 msgid "Copy" msgstr "Kopiëren" #: js/ui/shellEntry.js:28 msgid "Paste" msgstr "Plakken" #: js/ui/shellEntry.js:80 msgid "Show Text" msgstr "Tekst tonen" #: js/ui/shellEntry.js:82 msgid "Hide Text" msgstr "Tekst verbergen" #: js/ui/shellEntry.js:176 msgid "Caps lock is on." msgstr "Caps lock staat aan." #: js/ui/shellMountOperation.js:288 msgid "Hidden Volume" msgstr "Verborgen volume" #: js/ui/shellMountOperation.js:291 msgid "Windows System Volume" msgstr "Windows-systeemvolume" #: js/ui/shellMountOperation.js:294 msgid "Uses Keyfiles" msgstr "Gebruikt sleutelbestanden" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:302 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead." msgstr "" "Gebruik %s om een volume dat sleutelbestanden gebruikt te " "ontgrendelen." #: js/ui/shellMountOperation.js:306 msgid "" "You need an external utility like Disks to unlock a volume that uses " "keyfiles." msgstr "" "Om een volume dat gebruik maakt van sleutelbestanden te ontgrendelen hebt u " "een extern hulpmiddel zoals Schijven nodig." #: js/ui/shellMountOperation.js:314 msgid "PIM Number" msgstr "PIM-getal" #: js/ui/shellMountOperation.js:373 msgid "Remember Password" msgstr "Wachtwoord onthouden" #: js/ui/shellMountOperation.js:388 msgid "Unlock" msgstr "Ontgrendelen" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:402 #, javascript-format msgid "Open %s" msgstr "%s openen" #: js/ui/shellMountOperation.js:438 msgid "The PIM must be a number or empty." msgstr "De PIM moet ofwel een getal ofwel leeg zijn." #: js/ui/status/accessibility.js:36 msgid "Accessibility" msgstr "Toegankelijkheid" #: js/ui/status/accessibility.js:46 msgid "High Contrast" msgstr "Hoog contrast" #: js/ui/status/accessibility.js:49 msgid "Zoom" msgstr "Zoomen" #: js/ui/status/accessibility.js:56 msgid "Screen Reader" msgstr "Schermlezer" #: js/ui/status/accessibility.js:60 msgid "Screen Keyboard" msgstr "Schermtoetsenbord" #: js/ui/status/accessibility.js:64 msgid "Visual Alerts" msgstr "Visuele alerteringen" #: js/ui/status/accessibility.js:68 msgid "Sticky Keys" msgstr "Plaktoetsen" #: js/ui/status/accessibility.js:72 msgid "Slow Keys" msgstr "Trage Toetsen" #: js/ui/status/accessibility.js:76 msgid "Bounce Keys" msgstr "Springende toetsen" #: js/ui/status/accessibility.js:80 msgid "Mouse Keys" msgstr "Muistoetsen" #: js/ui/status/accessibility.js:85 msgid "Accessibility Settings" msgstr "Toegankelijkheidsinstellingen" #: js/ui/status/accessibility.js:142 msgid "Large Text" msgstr "Grote tekst" #: js/ui/status/autoRotate.js:14 msgid "Auto Rotate" msgstr "Automatisch draaien" #: js/ui/status/backgroundApps.js:156 msgctxt "title" msgid "Background Apps" msgstr "Achtergrondtoepassingen" #: js/ui/status/backgroundApps.js:171 msgid "Apps known to be running without a window" msgstr "Toepassingen die uitgevoerd worden zonder venster" #: js/ui/status/backgroundApps.js:182 msgid "App Settings" msgstr "Toepassingsinstellingen" #: js/ui/status/backgroundApps.js:239 msgid "No Background Apps" msgstr "Geen achtergrondtoepassingen" #: js/ui/status/backgroundApps.js:241 #, javascript-format msgid "%d Background App" msgid_plural "%d Background Apps" msgstr[0] "%d achtergrondtoepassing" msgstr[1] "%d achtergrondtoepassingen" #: js/ui/status/backlight.js:40 msgid "Keyboard Brightness" msgstr "Helderheid van toetsenbord" #: js/ui/status/backlight.js:80 msgid "Off" msgstr "Uit" #: js/ui/status/backlight.js:81 msgid "Low" msgstr "Laag" #: js/ui/status/backlight.js:82 msgid "High" msgstr "Hoog" #: js/ui/status/backlight.js:148 js/ui/status/keyboard.js:881 msgid "Keyboard" msgstr "Toetsenbord" #: js/ui/status/bluetooth.js:246 js/ui/status/network.js:360 msgid "Disconnect" msgstr "Verbinding verbreken" #: js/ui/status/bluetooth.js:263 js/ui/status/bluetooth.js:265 msgid "Bluetooth" msgstr "Bluetooth" #: js/ui/status/bluetooth.js:288 js/ui/status/network.js:1900 msgid "Bluetooth Settings" msgstr "Bluetooth-instellingen" #: js/ui/status/bluetooth.js:335 msgid "No available or connected devices" msgstr "Geen beschikbare of verbonden apparaten" #: js/ui/status/bluetooth.js:336 msgid "Turn on Bluetooth to connect to devices" msgstr "Zet Bluetooth aan om apparaten te verbinden" #. Translators: This is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:390 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d verbonden apparaat" msgstr[1] "%d verbonden apparaten" #: js/ui/status/brightness.js:34 msgid "Brightness" msgstr "Helderheid" #: js/ui/status/darkMode.js:12 msgid "Dark Style" msgstr "Donkere modus" #: js/ui/status/dwellClick.js:15 msgid "Single Click" msgstr "Enkele klik" #: js/ui/status/dwellClick.js:20 msgid "Double Click" msgstr "Dubbelklik" #: js/ui/status/dwellClick.js:25 msgid "Drag" msgstr "Slepen" #: js/ui/status/dwellClick.js:30 msgid "Secondary Click" msgstr "Tweede klik" #: js/ui/status/dwellClick.js:39 msgid "Dwell Click" msgstr "Hangklik" #: js/ui/status/keyboard.js:898 msgid "Show Keyboard Layout" msgstr "Toetsenbordindeling tonen" #: js/ui/status/location.js:339 msgid "Allow location access" msgstr "Toegang verlenen tot locatie" #. Translators: %s is an application name #: js/ui/status/location.js:341 #, javascript-format msgid "The app %s wants to access your location" msgstr "De toepassing %s wil toegang tot uw locatie" #: js/ui/status/location.js:351 msgid "Location access can be changed at any time from the privacy settings." msgstr "" "Locatietoegang kan op elk moment worden gewijzigd in de privacyinstellingen." #: js/ui/status/location.js:359 msgid "Deny Access" msgstr "Toegang weigeren" #: js/ui/status/location.js:364 msgid "Grant Access" msgstr "Toegang verlenen" #: js/ui/status/network.js:62 msgid "" msgstr "" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:354 #, javascript-format msgid "Disconnect %s" msgstr "Verbinding verbreken met %s" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:356 #, javascript-format msgid "Connect to %s" msgstr "Verbinden met %s" #: js/ui/status/network.js:1050 msgid "Secure" msgstr "Veilig" #: js/ui/status/network.js:1050 msgid "Not secure" msgstr "Onveilig" #: js/ui/status/network.js:1051 #, javascript-format msgid "Signal strength %s%%" msgstr "Signaalsterkte %s%%" #. translators: The first placeholder is the network name, the second and indication whether it is secure, and the last the signal strength indication #: js/ui/status/network.js:1053 #, javascript-format msgid "%s, %s, %s" msgstr "%s, %s, %s" #. Translators: %s is a network identifier #: js/ui/status/network.js:1155 #, javascript-format msgid "%s Hotspot" msgstr "%s-hotspot" #: js/ui/status/network.js:1426 #, javascript-format msgid "%d connected" msgid_plural "%d connected" msgstr[0] "%d verbonden" msgstr[1] "%d verbonden" #: js/ui/status/network.js:1524 js/ui/status/network.js:1540 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1525 msgid "VPN Settings" msgstr "VPN-instellingen" #: js/ui/status/network.js:1785 msgid "Wi–Fi" msgstr "Wifi" #: js/ui/status/network.js:1787 msgid "All Networks" msgstr "Alle netwerken" #: js/ui/status/network.js:1884 msgid "Wired Connections" msgstr "Bekabelde verbindingen" #: js/ui/status/network.js:1885 msgid "Wired Settings" msgstr "Instellingen voor bekabeld netwerk" #: js/ui/status/network.js:1899 msgid "Bluetooth Tethers" msgstr "Bluetooth-tethers" #. Translators: "Tether" from "Bluetooth Tether" #: js/ui/status/network.js:1906 msgid "Tether" msgstr "Tether" #: js/ui/status/network.js:1919 msgid "Mobile Connections" msgstr "Mobiele verbindingen" #: js/ui/status/network.js:1921 msgid "Mobile Broadband Settings" msgstr "Instellingen voor mobiel breedband" #. Translators: "Mobile" from "Mobile Broadband" #: js/ui/status/network.js:1930 msgid "Mobile" msgstr "Mobiel" #: js/ui/status/network.js:2035 msgid "Connection failed" msgstr "Verbinding mislukt" #: js/ui/status/network.js:2036 msgid "Activation of network connection failed" msgstr "Activeren van netwerkverbinding mislukt" #: js/ui/status/nightLight.js:21 msgid "Night Light" msgstr "Nachtlicht" #: js/ui/status/powerProfiles.js:21 msgctxt "Power profile" msgid "Performance" msgstr "Prestaties" #: js/ui/status/powerProfiles.js:26 msgctxt "Power profile" msgid "Balanced" msgstr "Gebalanceerd" #: js/ui/status/powerProfiles.js:31 msgctxt "Power profile" msgid "Power Saver" msgstr "Energie besparen" #: js/ui/status/powerProfiles.js:41 js/ui/status/powerProfiles.js:71 msgid "Power Mode" msgstr "Energiemodus" #: js/ui/status/powerProfiles.js:73 msgid "Power Settings" msgstr "Energie-instellingen" #: js/ui/status/remoteAccess.js:76 msgid "Stop Screencast" msgstr "Schermopname stoppen" #: js/ui/status/remoteAccess.js:146 msgid "Stop Screen Sharing" msgstr "Scherm delen stoppen" #: js/ui/status/rfkill.js:101 msgid "Airplane Mode" msgstr "Vliegtuigstand" #: js/ui/status/system.js:170 msgid "Power Off Menu" msgstr "Uitschakelmenu" #: js/ui/status/system.js:178 msgid "Suspend" msgstr "Pauzestand" #: js/ui/status/system.js:183 msgid "Restart…" msgstr "Herstarten…" #: js/ui/status/system.js:188 msgid "Power Off…" msgstr "Uitschakelen…" #: js/ui/status/system.js:195 #: subprojects/extensions-app/data/ui/extensions-window.ui:124 msgid "Log Out…" msgstr "Afmelden…" #: js/ui/status/system.js:200 msgid "Switch User…" msgstr "Gebruiker wisselen…" #: js/ui/status/system.js:244 msgctxt "action" msgid "Lock Screen" msgstr "Scherm vergrendelen" #: js/ui/status/thunderbolt.js:310 msgid "Unknown Thunderbolt device" msgstr "Onbekend Thunderbolt-apparaat" #: js/ui/status/thunderbolt.js:311 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" "Terwijl u weg was is er een nieuw apparaat gedetecteerd. Koppel het apparaat " "los en verbind het opnieuw om het te gebruiken." #: js/ui/status/thunderbolt.js:314 msgid "Unauthorized Thunderbolt device" msgstr "Ongeautoriseerd Thunderbolt-apparaat" #: js/ui/status/thunderbolt.js:315 msgid "" "New device has been detected and needs to be authorized by an administrator." msgstr "" "Er is een nieuw apparaat gedetecteerd, dit moet worden geautoriseerd door " "een systeembeheerder." #: js/ui/status/thunderbolt.js:321 msgid "Thunderbolt authorization error" msgstr "Thunderbolt-autorisatiefout" #: js/ui/status/thunderbolt.js:322 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "Kon het Thunderbolt-apparaat niet autoriseren: %s" #: js/ui/status/volume.js:220 msgid "Volume changed" msgstr "Volume gewijzigd" #: js/ui/status/volume.js:233 msgid "Unmute" msgstr "Dempen opheffen" #: js/ui/status/volume.js:233 msgid "Mute" msgstr "Dempen" #: js/ui/status/volume.js:288 msgid "Volume" msgstr "Volume" #: js/ui/status/volume.js:304 msgid "Sound Output" msgstr "Geluidsuitvoer" #: js/ui/status/volume.js:376 msgid "Sound Input" msgstr "Geluidsinvoer" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:22 msgid "Mirror" msgstr "Spiegel" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:31 msgid "Join Displays" msgstr "Schermen samenvoegen" #. Translators: this is for using only external displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:41 msgid "External Only" msgstr "Enkel extern" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:49 msgid "Built-in Only" msgstr "Enkel ingebouwd" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:374 msgid "%A %B %-d" msgstr "%A %-d %B" #: js/ui/unlockDialog.js:380 msgid "Swipe up to unlock" msgstr "Veeg omhoog om te ontgrendelen" #: js/ui/unlockDialog.js:381 msgid "Click or press a key to unlock" msgstr "Klik of druk op een toets om te ontgrendelen" #: js/ui/unlockDialog.js:564 msgid "Unlock Window" msgstr "Venster voor ontgrendelen" #: js/ui/unlockDialog.js:573 msgid "Log in as another user" msgstr "Aanmelden als andere gebruiker" #: js/ui/welcomeDialog.js:49 #, javascript-format msgid "GNOME %s" msgstr "GNOME %s" #: js/ui/welcomeDialog.js:53 #, javascript-format msgid "Welcome to %s" msgstr "Welkom bij %s" #: js/ui/welcomeDialog.js:54 msgid "If you want to learn your way around, check out the tour." msgstr "Wilt u hiermee leren omgaan, volg dan de rondleiding." #: js/ui/welcomeDialog.js:63 msgid "Skip" msgstr "Overslaan" #: js/ui/welcomeDialog.js:68 msgid "Take Tour" msgstr "De rondleiding volgen" #: js/ui/windowAttentionHandler.js:20 #, javascript-format msgid "“%s” is ready" msgstr "‘%s’ is gereed" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:69 msgid "Keep these display settings?" msgstr "Deze scherminstellingen behouden?" #: js/ui/windowManager.js:79 msgid "Revert Settings" msgstr "Terugzetten" #: js/ui/windowManager.js:84 msgid "Keep Changes" msgstr "Behouden" #: js/ui/windowManager.js:104 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "Instellingswijzigingen worden teruggezet in %d seconde" msgstr[1] "Instellingswijzigingen worden teruggezet in %d seconden" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:496 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:42 msgid "Hide" msgstr "Verbergen" #: js/ui/windowMenu.js:49 msgid "Restore" msgstr "Herstellen" #: js/ui/windowMenu.js:53 msgid "Maximize" msgstr "Maximaliseren" #: js/ui/windowMenu.js:60 msgid "Move" msgstr "Verplaatsen" #: js/ui/windowMenu.js:80 msgid "Resize" msgstr "Vergroten/verkleinen" #: js/ui/windowMenu.js:101 msgid "Move Titlebar Onscreen" msgstr "Titelbalk op scherm plaatsen" #: js/ui/windowMenu.js:106 msgid "Always on Top" msgstr "Altijd voorop" #: js/ui/windowMenu.js:125 msgid "Always on Visible Workspace" msgstr "Altijd op zichtbaar werkblad" #: js/ui/windowMenu.js:139 msgid "Move to Workspace Left" msgstr "Naar werkblad links" #: js/ui/windowMenu.js:145 msgid "Move to Workspace Right" msgstr "Naar werkblad rechts" #: js/ui/windowMenu.js:151 msgid "Move to Workspace Up" msgstr "Naar werkblad hierboven" #: js/ui/windowMenu.js:157 msgid "Move to Workspace Down" msgstr "Naar werkblad hieronder" #: js/ui/windowMenu.js:175 msgid "Move to Monitor Up" msgstr "Naar monitor hierboven" #: js/ui/windowMenu.js:184 msgid "Move to Monitor Down" msgstr "Naar monitor hieronder" #: js/ui/windowMenu.js:193 msgid "Move to Monitor Left" msgstr "Naar monitor links" #: js/ui/windowMenu.js:202 msgid "Move to Monitor Right" msgstr "Naar monitor rechts" #: js/ui/windowMenu.js:210 msgid "Close" msgstr "Sluiten" #: src/main.c:529 subprojects/extensions-tool/src/main.c:336 msgid "Print version" msgstr "Versie weergeven" #: src/main.c:535 msgid "Mode used by GDM for login screen" msgstr "De modus die door GDM voor het aanmeldscherm gebruikt wordt" #: src/main.c:541 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "Specifieke modus gebruiken, bijv. ‘gdm’ voor het aanmeldscherm" #: src/main.c:547 msgid "List possible modes" msgstr "Mogelijke modi tonen" #: src/main.c:553 msgid "Force animations to be enabled" msgstr "Animaties gedwongen inschakelen" #: src/shell-app.c:253 msgctxt "program" msgid "Unknown" msgstr "Onbekend" #: src/shell-app.c:504 #, c-format msgid "Failed to launch “%s”" msgstr "Kon ‘%s’ niet starten" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match." msgstr "De wachtwoorden komen niet overeen." #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "Het wachtwoord mag niet leeg blijven" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "Authenticatievenster is door de gebruiker afgesloten" #: src/st/st-icon-theme.c:1865 #, c-format msgid "Icon '%s' not present in theme %s" msgstr "Pictogram ‘%s’ niet beschikbaar in thema %s" #: src/st/st-icon-theme.c:3454 src/st/st-icon-theme.c:3757 msgid "Failed to load icon" msgstr "Kon pictogram niet laden" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 msgid "Manage your GNOME Extensions" msgstr "Beheer uw GNOME-uitbreidingen" #. developer_name tag deprecated with Appstream 1.0 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:19 msgid "The GNOME Project" msgstr "Het GNOME-project" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:51 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" "GNOME Uitbreidingen staat in voor het bijwerken van uitbreidingen, hun " "voorkeuren te configureren of ongewenste uitbreidingen te verwijderen of uit " "te schakelen." #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:70 msgid "Main Window" msgstr "Hoofdvenster" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:74 msgid "Available Updates" msgstr "Beschikbare updates" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:78 msgid "Search View" msgstr "Zoekweergave" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "GNOME Shell-uitbreidingen configureren" #: subprojects/extensions-app/js/extensionManager.js:237 #, javascript-format msgid "" "The installed version of this extension (%s) is incompatible with the " "current version of GNOME (%s). The extension has been disabled." msgstr "" "De geïnstalleerde versie van deze uitbreiding (%s) is incompatibel met de " "huidige GNOME-versie (%s). De uitbreiding is uitgeschakeld." #: subprojects/extensions-app/js/extensionManager.js:238 #, javascript-format msgid "" "The installed version of this extension is incompatible with the current " "version of GNOME (%s). The extension has been disabled." msgstr "" "De geïnstalleerde versie van deze uitbreiding is incompatibel met de huidige " "GNOME-versie (%s). De uitbreiding is uitgeschakeld." #: subprojects/extensions-app/js/extensionManager.js:242 msgid "" "An error has occurred in this extension. This could cause issues elsewhere " "in the system. It is recommended to turn the extension off until the error " "is resolved." msgstr "" "Er is een fout opgetreden in deze uitbreiding. Dit kan elders in het systeem " "problemen veroorzaken. Het wordt aanbevolen om de uitbreiding uit te " "schakelen totdat de fout opgelost is." #. translators: Details for an extension error #: subprojects/extensions-app/js/extensionManager.js:248 msgid "Error details:" msgstr "Foutdetails:" #: subprojects/extensions-app/js/extensionRow.js:82 #, javascript-format msgid "Version %s" msgstr "Versie %s" #: subprojects/extensions-app/js/extensionsWindow.js:113 #, javascript-format msgid "Remove “%s”?" msgstr "‘%s’ verwijderen?" #: subprojects/extensions-app/js/extensionsWindow.js:114 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "" "Als u een uitbreiding verwijdert, zult u deze opnieuw moeten downloaden om " "ze opnieuw te gebruiken" #: subprojects/extensions-app/js/extensionsWindow.js:117 msgid "_Cancel" msgstr "Annu_leren" #: subprojects/extensions-app/js/extensionsWindow.js:118 msgid "_Remove" msgstr "Ve_rwijderen" # Met het nieuwe over-venster ziet de lege regel tussen vertalers en meer info er vreemd uit, mij lijkt het beter om deze weg te laten. # - Philip #: subprojects/extensions-app/js/extensionsWindow.js:158 msgid "translator-credits" msgstr "" "Nathan Follens \n" "Philip Goto \n" "Meer info over GNOME-NL https://nl.gnome.org" #: subprojects/extensions-app/js/extensionsWindow.js:203 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "%d uitbreiding wordt bijgewerkt bij de volgende aanmelding." msgstr[1] "%d uitbreidingen worden bijgewerkt bij de volgende aanmelding." #: subprojects/extensions-app/data/ui/extension-row.ui:21 msgid "Error Details" msgstr "Foutdetails" #: subprojects/extensions-app/data/ui/extension-row.ui:61 msgid "Updates Details" msgstr "Updatedetails" #: subprojects/extensions-app/data/ui/extension-row.ui:71 msgid "" "A new version of this extension is ready and will be loaded on next login." msgstr "" "Een nieuwe versie van deze uitbreiding staat klaar en zal geladen worden bij " "de volgende aanmelding." #: subprojects/extensions-app/data/ui/extension-row.ui:107 msgid "Extension Details" msgstr "Uitbreidingsdetails" #: subprojects/extensions-app/data/ui/extension-row.ui:193 msgid "_Website" msgstr "_Website" #: subprojects/extensions-app/data/ui/extension-row.ui:220 msgid "_Settings" msgstr "In_stellingen" #: subprojects/extensions-app/data/ui/extension-row.ui:247 msgid "_Remove…" msgstr "Ve_rwijderen…" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Keyboard Shortcuts" msgstr "Sneltoetsen" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "Over uitbreidingen" #: subprojects/extensions-app/data/ui/extensions-window.ui:64 msgid "Main Menu" msgstr "Hoofdmenu" #: subprojects/extensions-app/data/ui/extensions-window.ui:106 msgid "Search extensions" msgstr "Uitbreidingen zoeken" #: subprojects/extensions-app/data/ui/extensions-window.ui:134 msgid "_Extensions" msgstr "Uitbr_eidingen" #: subprojects/extensions-app/data/ui/extensions-window.ui:143 msgid "More Information" msgstr "Meer informatie" #: subprojects/extensions-app/data/ui/extensions-window.ui:153 msgid "" "Extensions can cause performance and stability issues. It is recommended to " "disable all extensions if you experience problems with your system." msgstr "" "Uitbreidingen kunnen prestatie- en stabiliteitsproblemen veroorzaken. Het " "wordt aanbevolen om uitbreidingen uit te schakelen als u problemen " "ondervindt met uw systeem." #: subprojects/extensions-app/data/ui/extensions-window.ui:180 msgid "User Extensions" msgstr "Gebruikersuitbreidingen" #: subprojects/extensions-app/data/ui/extensions-window.ui:200 msgid "System Extensions" msgstr "Systeemuitbreidingen" #: subprojects/extensions-app/data/ui/extensions-window.ui:235 msgid "Search Results" msgstr "Zoekresultaten" #: subprojects/extensions-app/data/ui/extensions-window.ui:254 msgid "No Results Found" msgstr "Geen resultaten gevonden" #: subprojects/extensions-app/data/ui/extensions-window.ui:255 msgid "Try a different search." msgstr "Probeer een andere zoekopdracht." #: subprojects/extensions-app/data/ui/extensions-window.ui:266 msgid "No Installed Extensions" msgstr "Geen uitbreidingen geïnstalleerd" #: subprojects/extensions-app/data/ui/extensions-window.ui:267 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" "Bezoek extensions.gnome.org om " "uitbreidingen te zoeken en installeren." #: subprojects/extensions-app/data/ui/extensions-window.ui:278 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" "Sorry, we konden de lijst met geïnstalleerde uitbreidingen niet verkrijgen. " "Zorg dat u bij GNOME aangemeld bent, en probeer het opnieuw." #: subprojects/extensions-app/data/ui/help-overlay.ui:9 msgctxt "shortcut window" msgid "General" msgstr "Algemeen" #: subprojects/extensions-app/data/ui/help-overlay.ui:12 msgctxt "shortcut window" msgid "Open Menu" msgstr "Menu openen" #: subprojects/extensions-app/data/ui/help-overlay.ui:18 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Zoekbalk in-/uitschakelen" #: subprojects/extensions-app/data/ui/help-overlay.ui:24 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Sneltoetsen tonen" #: subprojects/extensions-app/data/ui/help-overlay.ui:30 msgctxt "shortcut window" msgid "Quit" msgstr "Afsluiten" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:284 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "De nieuwe uitbreiding is aangemaakt in %s.\n" #: subprojects/extensions-tool/src/command-create.c:376 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" "De naam moet een zeer korte (liefst beschrijvende) tekenreeks zijn.\n" "Bijvoorbeeld: %s" #: subprojects/extensions-tool/src/command-create.c:382 #: subprojects/extensions-tool/src/main.c:243 msgid "Name" msgstr "Naam" #: subprojects/extensions-tool/src/command-create.c:396 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" "De beschrijving is een uitleg in één zin van wat de uitbreiding doet.\n" "Bijvoorbeeld: %s" #: subprojects/extensions-tool/src/command-create.c:402 #: subprojects/extensions-tool/src/main.c:246 msgid "Description" msgstr "Beschrijving" #: subprojects/extensions-tool/src/command-create.c:416 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" "De UUID is een unieke identificatie voor uw uitbreiding.\n" "Dit moet in het formaat van een e-mailadres zijn. (focusklik@jansmits." "voorbeeld.nl)\n" #: subprojects/extensions-tool/src/command-create.c:443 msgid "Choose one of the available templates:\n" msgstr "Kies een van de beschikbare sjablonen:\n" #: subprojects/extensions-tool/src/command-create.c:457 msgid "Template" msgstr "Sjabloon" #: subprojects/extensions-tool/src/command-create.c:515 msgid "The unique identifier of the new extension" msgstr "De unieke identificatie van de nieuwe uitbreiding" #: subprojects/extensions-tool/src/command-create.c:518 msgid "NAME" msgstr "NAAM" #: subprojects/extensions-tool/src/command-create.c:519 msgid "The user-visible name of the new extension" msgstr "De voor de gebruikers zichtbare naam van de nieuwe uitbreiding" #: subprojects/extensions-tool/src/command-create.c:521 msgid "DESCRIPTION" msgstr "BESCHRIJVING" #: subprojects/extensions-tool/src/command-create.c:523 msgid "A short description of what the extension does" msgstr "Een korte beschrijving van wat de uitbreiding doet" #: subprojects/extensions-tool/src/command-create.c:525 #: subprojects/extensions-tool/src/command-pack.c:455 msgid "DOMAIN" msgstr "DOMEIN" #: subprojects/extensions-tool/src/command-create.c:527 msgid "The gettext domain used by the extension" msgstr "Het gettext-domein dat door de uitbreiding gebruikt wordt" #: subprojects/extensions-tool/src/command-create.c:529 #: subprojects/extensions-tool/src/command-pack.c:448 msgid "SCHEMA" msgstr "SCHEMA" #: subprojects/extensions-tool/src/command-create.c:531 msgid "The GSettings schema used by the extension" msgstr "Het GSettings-schema dat door de uitbreiding gebruikt wordt" #: subprojects/extensions-tool/src/command-create.c:534 msgid "TEMPLATE" msgstr "SJABLOON" #: subprojects/extensions-tool/src/command-create.c:535 msgid "The template to use for the new extension" msgstr "Het te gebruiken sjabloon voor de nieuwe uitbreiding" #: subprojects/extensions-tool/src/command-create.c:538 msgid "Include prefs.js template" msgstr "Sjabloon voor prefs.js invoegen" #: subprojects/extensions-tool/src/command-create.c:544 msgid "Enter extension information interactively" msgstr "Voer uitbreidingsinformatie interactief in" #: subprojects/extensions-tool/src/command-create.c:552 msgid "Create a new extension" msgstr "Maak een nieuwe uitbreiding aan" #: subprojects/extensions-tool/src/command-create.c:570 #: subprojects/extensions-tool/src/command-list.c:190 msgid "Unknown arguments" msgstr "Onbekende argumenten" #: subprojects/extensions-tool/src/command-create.c:595 msgid "UUID, name and description are required" msgstr "UUID, naam en beschrijving zijn vereist" #: subprojects/extensions-tool/src/command-disable.c:62 #: subprojects/extensions-tool/src/command-enable.c:62 #, c-format msgid "Extension “%s” does not exist\n" msgstr "Uitbreiding ‘%s’ bestaat niet\n" #: subprojects/extensions-tool/src/command-disable.c:98 msgid "Disable an extension" msgstr "Schakel een uitbreiding uit" #: subprojects/extensions-tool/src/command-disable.c:116 #: subprojects/extensions-tool/src/command-enable.c:116 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "Geen UUID opgegeven" #: subprojects/extensions-tool/src/command-disable.c:121 #: subprojects/extensions-tool/src/command-enable.c:121 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "Meer dan één UUID opgegeven" #: subprojects/extensions-tool/src/command-enable.c:98 msgid "Enable an extension" msgstr "Schakel een uitbreiding in" #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:66 #: subprojects/extensions-tool/src/main.c:150 msgid "Failed to connect to GNOME Shell\n" msgstr "Verbinden met GNOME Shell mislukt\n" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:159 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "Uitbreiding ‘%s’ bestaat niet\n" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "Uitbreidingsinfo tonen" #: subprojects/extensions-tool/src/command-install.c:190 msgid "Overwrite an existing extension" msgstr "Een bestaande uitbreiding overschrijven" #: subprojects/extensions-tool/src/command-install.c:192 msgid "EXTENSION_BUNDLE" msgstr "UITBREIDINGSBUNDEL" #: subprojects/extensions-tool/src/command-install.c:201 msgid "Install an extension bundle" msgstr "Installeer een uitbreidingsbundel" #: subprojects/extensions-tool/src/command-install.c:219 msgid "No extension bundle specified" msgstr "Geen uitbreidingsbundel opgegeven" #: subprojects/extensions-tool/src/command-install.c:225 msgid "More than one extension bundle specified" msgstr "Meer dan één uitbreidingsbundel opgegeven" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show user-installed extensions" msgstr "Gebruikersuitbreidingen tonen" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show system-installed extensions" msgstr "Systeemuitbreidingen tonen" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Show enabled extensions" msgstr "Ingeschakelde uitbreidingen tonen" #: subprojects/extensions-tool/src/command-list.c:149 msgid "Show disabled extensions" msgstr "Uitgeschakelde uitbreidingen tonen" #: subprojects/extensions-tool/src/command-list.c:152 msgid "Show extensions in active state" msgstr "Actieve uitbreidingen tonen" #: subprojects/extensions-tool/src/command-list.c:155 msgid "Show extensions in inactive state" msgstr "Inactieve uitbreidingen tonen" #: subprojects/extensions-tool/src/command-list.c:158 msgid "Show extensions with preferences" msgstr "Uitbreidingen met voorkeuren tonen" #: subprojects/extensions-tool/src/command-list.c:161 msgid "Show extensions with updates" msgstr "Uitbreidingen met updates tonen" #: subprojects/extensions-tool/src/command-list.c:164 msgid "Print extension details" msgstr "Details van uitbreiding tonen" #: subprojects/extensions-tool/src/command-list.c:172 msgid "List installed extensions" msgstr "Lijst met geïnstalleerde uitbreidingen" #: subprojects/extensions-tool/src/command-pack.c:444 msgid "FILE" msgstr "BESTAND" #: subprojects/extensions-tool/src/command-pack.c:445 msgid "Additional source to include in the bundle" msgstr "Aanvullende bron om in de bundel in te voegen" #: subprojects/extensions-tool/src/command-pack.c:449 msgid "A GSettings schema that should be included" msgstr "Een GSettings-schema om in te voegen" #: subprojects/extensions-tool/src/command-pack.c:451 #: subprojects/extensions-tool/src/command-pack.c:462 msgid "DIRECTORY" msgstr "MAP" #: subprojects/extensions-tool/src/command-pack.c:453 msgid "The directory where translations are found" msgstr "De map waar de vertalingen te vinden zijn" #: subprojects/extensions-tool/src/command-pack.c:457 msgid "The gettext domain to use for translations" msgstr "Het gettext-domein om te gebruiken voor vertalingen" #: subprojects/extensions-tool/src/command-pack.c:460 msgid "Overwrite an existing pack" msgstr "Een bestaand pakket overschrijven" #: subprojects/extensions-tool/src/command-pack.c:464 msgid "The directory where the pack should be created" msgstr "De map waar het pakket aangemaakt moet worden" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "SOURCE_DIRECTORY" msgstr "BRONMAP" #: subprojects/extensions-tool/src/command-pack.c:475 msgid "Create an extension bundle" msgstr "Maak een uitbreidingsbundel aan" #: subprojects/extensions-tool/src/command-pack.c:495 msgid "More than one source directory specified" msgstr "Meer dan één bronmap opgegeven" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "Uitbreiding ‘%s’ heeft geen voorkeuren\n" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "Openen van voorkeuren voor uitbreiding ‘%s’ is mislukt: %s\n" #: subprojects/extensions-tool/src/command-prefs.c:87 msgid "Opens extension preferences" msgstr "Opent de uitbreidingsvoorkeuren" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "Stel een uitbreiding opnieuw in" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "Kan systeemuitbreidingen niet verwijderen\n" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "Kan ‘%s’ niet verwijderen\n" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "Verwijder een uitbreiding" #: subprojects/extensions-tool/src/main.c:76 msgid "Do not print error messages" msgstr "Foutberichten niet tonen" #: subprojects/extensions-tool/src/main.c:249 msgid "Path" msgstr "Pad" #: subprojects/extensions-tool/src/main.c:252 msgid "URL" msgstr "URL" #: subprojects/extensions-tool/src/main.c:255 msgid "Original author" msgstr "Oorspronkelijke auteur" #: subprojects/extensions-tool/src/main.c:261 #: subprojects/extensions-tool/src/main.c:263 #: subprojects/extensions-tool/src/main.c:265 msgid "Version" msgstr "Versie" #: subprojects/extensions-tool/src/main.c:268 msgid "Enabled" msgstr "Ingeschakeld" #: subprojects/extensions-tool/src/main.c:268 msgid "Yes" msgstr "Ja" #: subprojects/extensions-tool/src/main.c:268 msgid "No" msgstr "Nee" #: subprojects/extensions-tool/src/main.c:271 msgid "State" msgstr "Status" #: subprojects/extensions-tool/src/main.c:309 msgid "“version” takes no arguments" msgstr "‘version’ verwacht geen argumenten" #: subprojects/extensions-tool/src/main.c:311 #: subprojects/extensions-tool/src/main.c:331 msgid "Usage:" msgstr "Gebruik:" #: subprojects/extensions-tool/src/main.c:314 msgid "Print version information and exit." msgstr "Versie-informatie tonen en afsluiten." #: subprojects/extensions-tool/src/main.c:329 #: subprojects/extensions-tool/src/main.c:332 msgid "COMMAND" msgstr "OPDRACHT" #: subprojects/extensions-tool/src/main.c:332 msgid "[ARGS…]" msgstr "[ARGUMENTEN…]" #: subprojects/extensions-tool/src/main.c:334 msgid "Commands:" msgstr "Opdrachten:" #: subprojects/extensions-tool/src/main.c:335 msgid "Print help" msgstr "Hulp tonen" #: subprojects/extensions-tool/src/main.c:337 msgid "Enable extension" msgstr "Uitbreiding inschakelen" #: subprojects/extensions-tool/src/main.c:338 msgid "Disable extension" msgstr "Uitbreiding uitschakelen" #: subprojects/extensions-tool/src/main.c:339 msgid "Reset extension" msgstr "Uitbreiding opnieuw instellen" #: subprojects/extensions-tool/src/main.c:340 msgid "Uninstall extension" msgstr "Uitbreiding verwijderen" #: subprojects/extensions-tool/src/main.c:341 msgid "List extensions" msgstr "Lijst met uitbreidingen" #: subprojects/extensions-tool/src/main.c:342 #: subprojects/extensions-tool/src/main.c:343 msgid "Show extension info" msgstr "Uitbreidingsinfo tonen" #: subprojects/extensions-tool/src/main.c:344 msgid "Open extension preferences" msgstr "Uitbreidingsvoorkeuren openen" #: subprojects/extensions-tool/src/main.c:345 msgid "Create extension" msgstr "Uitbreiding maken" #: subprojects/extensions-tool/src/main.c:346 msgid "Package extension" msgstr "Uitbreiding inpakken" #: subprojects/extensions-tool/src/main.c:347 msgid "Install extension bundle" msgstr "Uitbreidingsbundel installeren" #: subprojects/extensions-tool/src/main.c:349 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "Gebruik ‘%s’ voor gedetailleerde hulp.\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "Normaal" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "Een lege uitbreiding" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "Indicator" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "Voeg een pictogram toe aan de bovenste balk" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:4 msgid "Quick Settings Item" msgstr "Snelmenu-item" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:5 msgid "Add an item to quick settings" msgstr "Een item toevoegen aan het snelmenu" #. translators: #. * The device has been disabled #: subprojects/gvc/gvc-mixer-control.c:1872 msgid "Disabled" msgstr "Uitgeschakeld" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1879 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u uitvoerkanalen" msgstr[1] "%u uitvoerkanalen" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1889 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u invoerkanaal" msgstr[1] "%u invoerkanalen" #: subprojects/gvc/gvc-mixer-control.c:2872 msgid "System Sounds" msgstr "Systeemgeluiden" #, javascript-format #~ msgid "%s is now known as %s" #~ msgstr "%s heet vanaf nu %s" #~ msgid "Network Manager" #~ msgstr "Netwerk-manager" #~ msgid "Disabling" #~ msgstr "Uitschakelen" #~ msgid "Enabling" #~ msgstr "Inschakelen" #, javascript-format #~ msgid "%d %%" #~ msgstr "%d %%" #~ msgid "Thunderbolt" #~ msgstr "Thunderbolt" #~ msgid "No Thanks" #~ msgstr "Nee, bedankt" #~ msgid "No Matches" #~ msgstr "Geen overeenkomsten" #~ msgid "The extension had an error" #~ msgstr "De uitbreiding heeft een fout ondervonden" #~ msgid "The extension can be updated" #~ msgstr "De uitbreiding kan worden bijgewerkt" #~ msgid "Help" #~ msgstr "Hulp" #~ msgid "Manually Installed" #~ msgstr "Handmatig geïnstalleerd" #~ msgid "Built-In" #~ msgstr "Ingebouwd" #~ msgid "Extension Updates Ready" #~ msgstr "Uitbreidingsupdates zijn klaar" #~ msgid "Screenshot / Screencast" #~ msgstr "Schermafdruk / schermopname" #~ msgid "Power Profiles" #~ msgstr "Energiemodi" #~ msgid "Applications" #~ msgstr "Toepassingen" #, javascript-format #~ msgid "Unable to start %s" #~ msgstr "Kan ‘%s’ niet starten" #, javascript-format #~ msgid "Couldn’t find the %s application" #~ msgstr "Kon ‘%s’ niet vinden" #~ msgid "Evolution Calendar" #~ msgstr "Evolution-agenda" #~ msgid "Attach modal dialog to the parent window" #~ msgstr "Modale dialoogvensters aan hoofdvenster vastmaken" #~ msgid "" #~ "This key overrides the key in org.gnome.mutter when running GNOME Shell." #~ msgstr "" #~ "Deze waarde overschrijft de waarde in org.gnome.mutter in Gnome Shell." #~ msgid "Enable edge tiling when dropping windows on screen edges" #~ msgstr "" #~ "Vensters langs de randen positioneren bij verslepen naar de rand van het " #~ "scherm" #~ msgid "Workspaces are managed dynamically" #~ msgstr "Werkbladen dynamisch beheren" #~ msgid "Workspaces only on primary monitor" #~ msgstr "Alleen werkbladen op hoofdmonitor" #~ msgid "Delay focus changes in mouse mode until the pointer stops moving" #~ msgstr "Focus pas wijzigen nadat de muisaanwijzer is gestopt met bewegen" #~ msgid "Region & Language Settings" #~ msgstr "Regio- & taalinstellingen" #~ msgid "" #~ "Whether the default Bluetooth adapter had set up devices associated to it" #~ msgstr "" #~ "Of er apparaten met de standaard Bluetooth-adapter geassocieerd waren" #~ msgid "" #~ "The shell will only show a Bluetooth menu item if a Bluetooth adapter is " #~ "powered, or if there were devices set up associated with the default " #~ "adapter. This will be reset if the default adapter is ever seen not to " #~ "have devices associated to it." #~ msgstr "" #~ "De shell zal enkel een Bluetooth-menu-item weergeven indien een Bluetooth-" #~ "adapter is ingeschakeld, of indien er apparaten ingesteld zijn " #~ "geassocieerd met de standaardadapter. Dit zal opnieuw ingesteld worden " #~ "indien de standaardadapter geen apparaten met zich geassocieerd blijkt te " #~ "hebben." #~ msgid "Log Out" #~ msgstr "Afmelden" #~ msgid "Bluetooth On" #~ msgstr "Bluetooth aan" #~ msgid "Bluetooth Off" #~ msgstr "Bluetooth uit" #~ msgid "Location In Use" #~ msgstr "Locatie in gebruik" #~ msgid "Location Disabled" #~ msgstr "Locatie uitgeschakeld" #, javascript-format #~ msgid "%s Off" #~ msgstr "%s uit" #, javascript-format #~ msgid "%s Connected" #~ msgstr "%s verbonden" #, javascript-format #~ msgid "%s Unmanaged" #~ msgstr "%s onbeheerd" #, javascript-format #~ msgid "%s Connecting" #~ msgstr "%s verbinden" #, javascript-format #~ msgid "%s Requires Authentication" #~ msgstr "%s vereist authenticatie" #, javascript-format #~ msgid "Firmware Missing For %s" #~ msgstr "Firmware ontbreekt voor %s" #, javascript-format #~ msgid "%s Unavailable" #~ msgstr "%s niet beschikbaar" #, javascript-format #~ msgid "%s Connection Failed" #~ msgstr "Verbinding van %s is mislukt" #, javascript-format #~ msgid "%s Hardware Disabled" #~ msgstr "%s uitgeschakeld in hardware" #, javascript-format #~ msgid "%s Disabled" #~ msgstr "%s uitgeschakeld" #~ msgid "Connect to Internet" #~ msgstr "Met internet verbinden" #~ msgid "Airplane Mode is On" #~ msgstr "Vliegtuigstand is aan" #~ msgid "Wi-Fi is disabled when airplane mode is on." #~ msgstr "Wifi is uitgeschakeld in vliegtuigstand." #~ msgid "Turn Off Airplane Mode" #~ msgstr "Vliegtuigstand uitschakelen" #~ msgid "Wi-Fi is Off" #~ msgstr "Wifi is uitgeschakeld" #~ msgid "Wi-Fi needs to be turned on in order to connect to a network." #~ msgstr "Wifi moet ingeschakeld zijn om met een netwerk te kunnen verbinden." #~ msgid "Turn On Wi-Fi" #~ msgstr "Wifi inschakelen" #~ msgid "Wi-Fi Networks" #~ msgstr "Wifi-netwerken" #~ msgid "Select a network" #~ msgstr "Selecteer een netwerk" #~ msgid "Use hardware switch to turn off" #~ msgstr "Gebruik de hardware-schakelaar om uit te schakelen" #~ msgid "Select Network" #~ msgstr "Netwerk selecteren" #~ msgid "Wi-Fi Settings" #~ msgstr "Wifi-instellingen" #, javascript-format #~ msgid "%s Not Connected" #~ msgstr "%s niet verbonden" #~ msgid "connecting…" #~ msgstr "verbinden…" #~ msgid "authentication required" #~ msgstr "authenticatie nodig" #~ msgid "connection failed" #~ msgstr "verbinding mislukt" #~ msgid "VPN Off" #~ msgstr "VPN uit" #, javascript-format #~ msgid "%s Wi-Fi Connection" #~ msgid_plural "%s Wi-Fi Connections" #~ msgstr[0] "%s wifi-verbinding" #~ msgstr[1] "%s wifi-verbindingen" #~ msgid "Night Light Disabled" #~ msgstr "Nachtlicht uitgeschakeld" #~ msgid "Resume" #~ msgstr "Hervatten" #~ msgid "Disable Until Tomorrow" #~ msgstr "Uitschakelen tot morgen" #~ msgid "Fully Charged" #~ msgstr "Volledig opgeladen" #~ msgid "Not Charging" #~ msgstr "Niet aan het opladen" #~ msgid "Estimating…" #~ msgstr "Schatten…" #, javascript-format #~ msgid "%d∶%02d Remaining (%d %%)" #~ msgstr "%d:%02d resterend (%d %%)" #, javascript-format #~ msgid "%d∶%02d Until Full (%d %%)" #~ msgstr "%d:%02d tot opgeladen (%d %%)" #~ msgid "Screen is Being Shared" #~ msgstr "Scherm wordt gedeeld" #~ msgid "Turn off" #~ msgstr "Uitschakelen" #~ msgid "Lock" #~ msgstr "Vergrendelen" #~ msgid "Power Off / Log Out" #~ msgstr "Uitschakelen / afmelden" #~ msgid "Enable introspection API" #~ msgstr "Introspectie-API inschakelen" # ? - Nathan #~ msgid "" #~ "Enables a D-Bus API that allows to introspect the application state of " #~ "the shell." #~ msgstr "" #~ "Schakelt een D-Bus-API in die u de mogelijkheid biedt een introspectie " #~ "uit te voeren op de toepassingsstatus van de shell." #~ msgid "Remove from Favorites" #~ msgstr "Uit favorieten verwijderen" #~ msgid "Add to Favorites" #~ msgstr "Aan favorieten toevoegen" #~ msgid "Author" #~ msgstr "Auteur" #~ msgid "Warning" #~ msgstr "Waarschuwing" #~ msgid "" #~ "Extensions can cause system issues, including performance problems. If " #~ "you encounter problems with your system, it is recommended to disable all " #~ "extensions." #~ msgstr "" #~ "Uitbreidingen kunnen problemen veroorzaken, inclusief prestatieproblemen. " #~ "Als u een probleem met uw systeem ondervindt, wordt het aanbevolen eerst " #~ "alle uitbreidingen uit te schakelen." #~ msgid "Failed to connect to GNOME Shell" #~ msgstr "Verbinden met Gnome Shell mislukt" #~ msgid "Minimize" #~ msgstr "Minimaliseren" #~ msgid "Unmaximize" #~ msgstr "Herstellen" #~ msgid "App Picker View" #~ msgstr "Toepassingskiezer-weergave" #~ msgid "Index of the currently selected view in the application picker." #~ msgstr "" #~ "Index van de momenteel geselecteerde weergave in de toepassingskiezer." #~ msgid "Frequently used applications will appear here" #~ msgstr "Vaak gebruikte toepassingen verschijnen hier" #~ msgid "Frequent" #~ msgstr "Vaak gebruikt" #~ msgid "All" #~ msgstr "Alles" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d" #~ msgstr "%A %-d %B" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d, %Y" #~ msgstr "%A %-d %B %Y" #~ msgid "On" #~ msgstr "Aan" #~ msgid "Copy Error" #~ msgstr "Fout kopiëren" #~ msgid "Browse in Software" #~ msgstr "Bladeren in Software" #~ msgid "Next" #~ msgstr "Volgende" #~ msgctxt "button" #~ msgid "Sign In" #~ msgstr "Aanmelden" #~ msgid "Rename" #~ msgstr "Hernoemen" #~ msgid "Password:" #~ msgstr "Wachtwoord:" #~ msgid "Type again:" #~ msgstr "Nogmaals:" #~ msgid "Password: " #~ msgstr "Wachtwoord: " #~ msgid "Authentication required by wireless network" #~ msgstr "Authenticatie nodig voor draadloos netwerk" #~ msgid "Mobile broadband network password" #~ msgstr "Netwerkwachtwoord voor mobiel breedband" #~ msgid "%A, %B %d" #~ msgstr "%A %d %B" #~ msgid "%d new message" #~ msgid_plural "%d new messages" #~ msgstr[0] "%d nieuw bericht" #~ msgstr[1] "%d nieuwe berichten" #~ msgid "Account Settings" #~ msgstr "Accountinstellingen" #~ msgid "Orientation Lock" #~ msgstr "Oriëntatievergrendeling" #~ msgid "" #~ "Keybinding that pauses and resumes all running tweens, for debugging " #~ "purposes" #~ msgstr "" #~ "Sneltoets die alle actieve tweens pauzeert en hervat, voor debug-" #~ "doeleinden" #~ msgid "Which keyboard to use" #~ msgstr "Het gebruikte toetsenbord" #~ msgid "The type of keyboard to use." #~ msgstr "Het te gebruiken type toetsenbord." #~ msgid "network-workgroup" #~ msgstr "network-workgroup" #~ msgid "toggle-switch-us" #~ msgstr "toggle-switch-intl" #~ msgid "There was an error loading the preferences dialog for %s:" #~ msgstr "Fout bij laden van het voorkeurenvenster voor %s:" #~ msgid "%s all day." #~ msgstr "De hele dag %s." #~ msgid "%s, then %s later." #~ msgstr "%s, daarna %s." #~ msgid "%s, then %s, followed by %s later." #~ msgstr "%s, daarna %s, gevolgd door %s." #~ msgid "Feels like %s." #~ msgstr "Voelt aan als %s." #~ msgctxt "search-result" #~ msgid "Log out" #~ msgstr "Afmelden" #~ msgctxt "search-result" #~ msgid "Switch user" #~ msgstr "Gebruiker wisselen" #~ msgid "Hide tray" #~ msgstr "Systeemvak verbergen" #~ msgid "Status Icons" #~ msgstr "Statuspictogrammen" #~ msgid "Web Authentication Redirect" #~ msgstr "Webauthenticatie-omleiding" #~ msgid "Events" #~ msgstr "Gebeurtenissen" #~ msgid "Media" #~ msgstr "Media" #~ msgid "%d x %d" #~ msgstr "%d x %d" #~ msgid "Show the week date in the calendar" #~ msgstr "Weeknummers tonen in kalender" #~ msgid "If true, display the ISO week date in the calendar." #~ msgstr "Indien ingeschakeld worden weeknummers in de kalender getoond." #~ msgid "%s is requesting access to your location." #~ msgstr "%s vraagt toegang tot uw locatie." #~ msgid "Use as Internet connection" #~ msgstr "Voor internetverbinding gebruiken" 07070100000254000081A40000000000000000000000016712993F0000B25A000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/nn.po# Norwegian Nynorsk translation for gnome-shell. # Copyright (C) 2010 gnome-shell's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-shell package. # Torstein Adolf Winterseth , 2010. # Torstein Winterseth , 2010. # Andreas N. , 2011. # Åsmund Skjæveland , 2011. # Kjartan Maraas , 2012. # msgid "" msgstr "" "Project-Id-Version: gnome-shell master\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-07-10 15:17+0200\n" "PO-Revision-Date: 2012-07-10 15:21+0200\n" "Last-Translator: Kjartan Maraas \n" "Language-Team: Norsk (nynorsk) \n" "Language: nn\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-Poedit-Language: Norwegian Nynorsk\n" "X-Poedit-Country: NORWAY\n" #: ../data/gnome-shell.desktop.in.in.h:1 msgid "GNOME Shell" msgstr "GNOME Shell" #: ../data/gnome-shell.desktop.in.in.h:2 msgid "Window management and application launching" msgstr "Vindaugshandsaming og programstarting" #: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1 #: ../js/extensionPrefs/main.js:153 msgid "GNOME Shell Extension Preferences" msgstr "" #: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2 msgid "Configure GNOME Shell Extensions" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:1 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "Slå på interne verktøy for utviklarar og testarar frå Alt + F2" #: ../data/org.gnome.shell.gschema.xml.in.in.h:2 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Tillèt tilgang til interne feilfiksings- og overvakingsverktøy gjennom «Alt " "+ F2»-dialogvindauget." #: ../data/org.gnome.shell.gschema.xml.in.in.h:3 msgid "Uuids of extensions to enable" msgstr "Uuid-ar til utvidingar som skal slåast på" #: ../data/org.gnome.shell.gschema.xml.in.in.h:4 #, fuzzy msgid "" "GNOME Shell extensions have a uuid property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension DBus methods on org.gnome.Shell." msgstr "" "GNOME Shell-utvidingar har ein uuid-eigenskap. Denne nøkkelen viser ei liste " "over utvidingane som skal lastast. disabled-extensions overstyrer denne " "innstillinga for utvidingar som finst i begge listene." #: ../data/org.gnome.shell.gschema.xml.in.in.h:5 msgid "Whether to collect stats about applications usage" msgstr "Om statistikk om programbruk skal innsamlast" #: ../data/org.gnome.shell.gschema.xml.in.in.h:6 msgid "" "The shell normally monitors active applications in order to present the most " "used ones (e.g. in launchers). While this data will be kept private, you may " "want to disable this for privacy reasons. Please note that doing so won't " "remove already saved data." msgstr "" "Shell overvakar aktive program for å visa dei mest brukte (t.d. i " "oppstartaren). Sjølv om desse data vil haldast private, så kan det henda at " "du ønskjer å slå dette av med omsyn til personvern. Legg merke til at det " "vil ikkje fjerna data som alt er lagra." #: ../data/org.gnome.shell.gschema.xml.in.in.h:7 msgid "List of desktop file IDs for favorite applications" msgstr "Liste over skrivebordsfil-ID-ar for favorittprogram" #: ../data/org.gnome.shell.gschema.xml.in.in.h:8 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" "Programma som korresponderer til desse identifikatorane vil verta viste i " "favorittområdet." #: ../data/org.gnome.shell.gschema.xml.in.in.h:9 msgid "disabled OpenSearch providers" msgstr "OpenSearch-tilbydarar slått av" #: ../data/org.gnome.shell.gschema.xml.in.in.h:10 msgid "History for command (Alt-F2) dialog" msgstr "Historikk for kommandovindauget (Alt + F2)" #: ../data/org.gnome.shell.gschema.xml.in.in.h:11 msgid "History for the looking glass dialog" msgstr "Historikk for forstørringsglasvindauget" #: ../data/org.gnome.shell.gschema.xml.in.in.h:12 msgid "" "Internally used to store the last IM presence explicitly set by the user. " "The value here is from the TpConnectionPresenceType enumeration." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:13 msgid "" "Internally used to store the last session presence status for the user. The " "value here is from the GsmPresenceStatus enumeration." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:14 msgid "Show the week date in the calendar" msgstr "Vis vekedag i kalenderen" #: ../data/org.gnome.shell.gschema.xml.in.in.h:15 msgid "If true, display the ISO week date in the calendar." msgstr "Viss sann, vis ISO-vekedag i kalenderen." #: ../data/org.gnome.shell.gschema.xml.in.in.h:16 msgid "Keybinding to open the application menu" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:17 msgid "Keybinding to open the application menu." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:18 msgid "Keybinding to toggle the screen recorder" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:19 msgid "Keybinding to start/stop the builtin screen recorder." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:20 msgid "Which keyboard to use" msgstr "Tastatur som skal brukast" #: ../data/org.gnome.shell.gschema.xml.in.in.h:21 msgid "The type of keyboard to use." msgstr "Type tastatur som skal brukast." #: ../data/org.gnome.shell.gschema.xml.in.in.h:22 msgid "Framerate used for recording screencasts." msgstr "Biletrate brukt for filming av skjermvideo." #: ../data/org.gnome.shell.gschema.xml.in.in.h:23 msgid "" "The framerate of the resulting screencast recordered by GNOME Shell's " "screencast recorder in frames-per-second." msgstr "" "Biletfrekvensen til den ferdige skjermvideoen, teken opp med " "skjermvideoopptakaren i GNOME Shell, i bilete per sekund." #: ../data/org.gnome.shell.gschema.xml.in.in.h:24 msgid "The gstreamer pipeline used to encode the screencast" msgstr "GStreamer-kanalen brukt til å koda skjermvideoen" #: ../data/org.gnome.shell.gschema.xml.in.in.h:26 #, no-c-format msgid "" "Sets the GStreamer pipeline used to encode recordings. It follows the syntax " "used for gst-launch. The pipeline should have an unconnected sink pad where " "the recorded video is recorded. It will normally have a unconnected source " "pad; output from that pad will be written into the output file. However the " "pipeline can also take care of its own output - this might be used to send " "the output to an icecast server via shout2send or similar. When unset or set " "to an empty value, the default pipeline will be used. This is currently " "'vp8enc quality=8 speed=6 threads=%T ! queue ! webmmux' and records to WEBM " "using the VP8 codec. %T is used as a placeholder for a guess at the optimal " "thread count on the system." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:27 msgid "File extension used for storing the screencast" msgstr "Filtype brukt for å lagra skjermvideoen" #: ../data/org.gnome.shell.gschema.xml.in.in.h:28 msgid "" "The filename for recorded screencasts will be a unique filename based on the " "current date, and use this extension. It should be changed when recording to " "a different container format." msgstr "" "Filnamnet for skjermvideoopptak vil vera eit unikt filnamn basert på " "gjeldande dato, og vil bruka dette filetternamnet. Det bør endrast når du " "gjer opptak til eit anna oppbevaringsformat." #: ../js/extensionPrefs/main.js:125 #, c-format msgid "There was an error loading the preferences dialog for %s:" msgstr "" #: ../js/extensionPrefs/main.js:165 msgid "Extension" msgstr "" #: ../js/extensionPrefs/main.js:189 msgid "Select an extension to configure using the combobox above." msgstr "" #: ../js/gdm/loginDialog.js:629 msgid "Session..." msgstr "Økt …" #: ../js/gdm/loginDialog.js:800 msgctxt "title" msgid "Sign In" msgstr "Logg inn" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger instead #: ../js/gdm/loginDialog.js:845 msgid "(or swipe finger)" msgstr "(eller dra finger)" #. translators: this message is shown below the user list on the #. login screen. It can be activated to reveal an entry for #. manually entering the username. #: ../js/gdm/loginDialog.js:866 msgid "Not listed?" msgstr "Ikkje oppført?" #: ../js/gdm/loginDialog.js:1046 ../js/ui/endSessionDialog.js:410 #: ../js/ui/extensionDownloader.js:138 ../js/ui/networkAgent.js:153 #: ../js/ui/polkitAuthenticationAgent.js:176 #: ../js/ui/shellMountOperation.js:339 ../js/ui/status/bluetooth.js:431 msgid "Cancel" msgstr "Avbryt" #: ../js/gdm/loginDialog.js:1051 msgctxt "button" msgid "Sign In" msgstr "Logg inn" #: ../js/gdm/loginDialog.js:1411 msgid "Login Window" msgstr "Innloggingsvindauge" #: ../js/gdm/powerMenu.js:130 ../js/ui/userMenu.js:612 #: ../js/ui/userMenu.js:616 ../js/ui/userMenu.js:730 msgid "Suspend" msgstr "Kvilemodus" #: ../js/gdm/powerMenu.js:135 msgid "Restart" msgstr "Start på nytt" #: ../js/gdm/powerMenu.js:140 ../js/ui/userMenu.js:614 #: ../js/ui/userMenu.js:616 ../js/ui/userMenu.js:729 msgid "Power Off" msgstr "Slå av" #: ../js/misc/util.js:95 msgid "Command not found" msgstr "Fann ikkje kommando" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: ../js/misc/util.js:128 msgid "Could not parse command:" msgstr "Klarte ikkje lesa kommando:" #: ../js/misc/util.js:136 #, c-format msgid "Execution of '%s' failed:" msgstr "Klarte ikkje køyra «%s»:" #. Translators: Filter to display all applications #: ../js/ui/appDisplay.js:252 msgid "All" msgstr "Alle" #: ../js/ui/appDisplay.js:310 msgid "APPLICATIONS" msgstr "PROGRAM" #: ../js/ui/appDisplay.js:370 msgid "SETTINGS" msgstr "INNSTILLINGAR" #: ../js/ui/appDisplay.js:675 msgid "New Window" msgstr "Nytt vindauge" #: ../js/ui/appDisplay.js:678 msgid "Remove from Favorites" msgstr "Fjern frå favorittar" #: ../js/ui/appDisplay.js:679 msgid "Add to Favorites" msgstr "Legg til i favorittar" #: ../js/ui/appFavorites.js:87 #, c-format msgid "%s has been added to your favorites." msgstr "%s har vorte lagt til i dine favorittar." #: ../js/ui/appFavorites.js:118 #, c-format msgid "%s has been removed from your favorites." msgstr "%s har vorte fjerna frå dine favorittar." #: ../js/ui/autorunManager.js:261 msgid "Removable Devices" msgstr "Flyttbare einingar" #: ../js/ui/autorunManager.js:549 #, c-format msgid "Open with %s" msgstr "Opna med %s" #: ../js/ui/autorunManager.js:575 msgid "Eject" msgstr "Løys ut" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: ../js/ui/calendar.js:62 msgctxt "event list time" msgid "All Day" msgstr "Heile dagen" #. Translators: Shown in calendar event list, if 24h format #: ../js/ui/calendar.js:67 msgctxt "event list time" msgid "%H:%M" msgstr "%H.%M" #. Transators: Shown in calendar event list, if 12h format #: ../js/ui/calendar.js:74 msgctxt "event list time" msgid "%l:%M %p" msgstr "%l.%M %p" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: ../js/ui/calendar.js:114 msgctxt "grid sunday" msgid "S" msgstr "S" #. Translators: Calendar grid abbreviation for Monday #: ../js/ui/calendar.js:116 msgctxt "grid monday" msgid "M" msgstr "M" #. Translators: Calendar grid abbreviation for Tuesday #: ../js/ui/calendar.js:118 msgctxt "grid tuesday" msgid "T" msgstr "T" #. Translators: Calendar grid abbreviation for Wednesday #: ../js/ui/calendar.js:120 msgctxt "grid wednesday" msgid "W" msgstr "O" #. Translators: Calendar grid abbreviation for Thursday #: ../js/ui/calendar.js:122 msgctxt "grid thursday" msgid "T" msgstr "T" #. Translators: Calendar grid abbreviation for Friday #: ../js/ui/calendar.js:124 msgctxt "grid friday" msgid "F" msgstr "F" #. Translators: Calendar grid abbreviation for Saturday #: ../js/ui/calendar.js:126 msgctxt "grid saturday" msgid "S" msgstr "L" #. Translators: Event list abbreviation for Sunday. #. * #. * NOTE: These list abbreviations are normally not shown together #. * so they need to be unique (e.g. Tuesday and Thursday cannot #. * both be 'T'). #. #: ../js/ui/calendar.js:139 msgctxt "list sunday" msgid "Su" msgstr "S" #. Translators: Event list abbreviation for Monday #: ../js/ui/calendar.js:141 msgctxt "list monday" msgid "M" msgstr "M" #. Translators: Event list abbreviation for Tuesday #: ../js/ui/calendar.js:143 msgctxt "list tuesday" msgid "T" msgstr "T" #. Translators: Event list abbreviation for Wednesday #: ../js/ui/calendar.js:145 msgctxt "list wednesday" msgid "W" msgstr "O" #. Translators: Event list abbreviation for Thursday #: ../js/ui/calendar.js:147 msgctxt "list thursday" msgid "Th" msgstr "To" #. Translators: Event list abbreviation for Friday #: ../js/ui/calendar.js:149 msgctxt "list friday" msgid "F" msgstr "F" #. Translators: Event list abbreviation for Saturday #: ../js/ui/calendar.js:151 msgctxt "list saturday" msgid "S" msgstr "L" #. Translators: Text to show if there are no events #: ../js/ui/calendar.js:681 msgid "Nothing Scheduled" msgstr "Ingenting er planlagt" #. Translators: Shown on calendar heading when selected day occurs on current year #: ../js/ui/calendar.js:697 msgctxt "calendar heading" msgid "%A, %B %d" msgstr "%A %d. %B" #. Translators: Shown on calendar heading when selected day occurs on different year #: ../js/ui/calendar.js:700 msgctxt "calendar heading" msgid "%A, %B %d, %Y" msgstr "%A %d. %B %Y" #: ../js/ui/calendar.js:710 msgid "Today" msgstr "I dag" #: ../js/ui/calendar.js:714 msgid "Tomorrow" msgstr "I morgon" #: ../js/ui/calendar.js:723 msgid "This week" msgstr "Denne veka" #: ../js/ui/calendar.js:731 msgid "Next week" msgstr "Neste veke" #: ../js/ui/dash.js:239 ../js/ui/messageTray.js:1287 msgid "Remove" msgstr "Fjern" #: ../js/ui/dateMenu.js:94 msgid "Date and Time Settings" msgstr "Innstillingar for dato og tid" #: ../js/ui/dateMenu.js:120 msgid "Open Calendar" msgstr "Opna kalender" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM"). #. #: ../js/ui/dateMenu.js:161 msgid "%A %B %e, %Y" msgstr "%a %e. %B %Y" #: ../js/ui/endSessionDialog.js:60 #, c-format msgctxt "title" msgid "Log Out %s" msgstr "Logg ut %s" #: ../js/ui/endSessionDialog.js:61 msgctxt "title" msgid "Log Out" msgstr "Logg ut" #: ../js/ui/endSessionDialog.js:62 msgid "Click Log Out to quit these applications and log out of the system." msgstr "Vel «Logg ut» for å avslutta desse programma og logga ut av systemet." #: ../js/ui/endSessionDialog.js:64 #, c-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "%s vil verta logga ut automatisk om %d sekund." msgstr[1] "%s vil verta logga ut automatisk om %d sekund." #: ../js/ui/endSessionDialog.js:69 #, c-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "Du vil verta logga ut automatisk om %d sekund." msgstr[1] "Du vil verta logga ut automatisk om %d sekund." #: ../js/ui/endSessionDialog.js:73 msgid "Logging out of the system." msgstr "Loggar ut av systemet." #: ../js/ui/endSessionDialog.js:75 msgctxt "button" msgid "Log Out" msgstr "Logg ut" #: ../js/ui/endSessionDialog.js:80 msgctxt "title" msgid "Power Off" msgstr "Slå av" #: ../js/ui/endSessionDialog.js:81 msgid "Click Power Off to quit these applications and power off the system." msgstr "Vel «Slå av» for å avslutta desse programma og slå av systemet." #: ../js/ui/endSessionDialog.js:83 #, c-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "Systemet vil slå seg av automatisk om %d sekund." msgstr[1] "Systemet vil slå seg av automatisk om %d sekund." #: ../js/ui/endSessionDialog.js:87 msgid "Powering off the system." msgstr "Slår av systemet." #: ../js/ui/endSessionDialog.js:89 ../js/ui/endSessionDialog.js:106 msgctxt "button" msgid "Restart" msgstr "Start på nytt" #: ../js/ui/endSessionDialog.js:91 msgctxt "button" msgid "Power Off" msgstr "Slå av" #: ../js/ui/endSessionDialog.js:97 msgctxt "title" msgid "Restart" msgstr "Start på nytt" #: ../js/ui/endSessionDialog.js:98 msgid "Click Restart to quit these applications and restart the system." msgstr "" "Vel «Start på nytt» for å avslutta desse programma og starta systemet på " "nytt." #: ../js/ui/endSessionDialog.js:100 #, c-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "Systemet vil startast på nytt om %d sekund." msgstr[1] "Systemet vil startast på nytt om %d sekund." #: ../js/ui/endSessionDialog.js:104 msgid "Restarting the system." msgstr "Startar systemet på nytt." #: ../js/ui/extensionDownloader.js:142 msgid "Install" msgstr "Installer" #: ../js/ui/extensionDownloader.js:146 #, c-format msgid "Download and install '%s' from extensions.gnome.org?" msgstr "Lasta ned og installera «%s» frå extensions.gnome.org?" #: ../js/ui/keyboard.js:327 msgid "tray" msgstr "varslingsområde" #: ../js/ui/keyboard.js:545 ../js/ui/status/keyboard.js:42 #: ../js/ui/status/power.js:203 msgid "Keyboard" msgstr "Tastatur" #: ../js/ui/keyringPrompt.js:85 ../js/ui/polkitAuthenticationAgent.js:273 msgid "Password:" msgstr "Passord:" #: ../js/ui/keyringPrompt.js:101 msgid "Type again:" msgstr "" #: ../js/ui/lookingGlass.js:696 msgid "No extensions installed" msgstr "Ingen utvidingar er installerte" #. Translators: argument is an extension UUID. #: ../js/ui/lookingGlass.js:750 #, c-format msgid "%s has not emitted any errors." msgstr "" #: ../js/ui/lookingGlass.js:756 msgid "Hide Errors" msgstr "Gøym feil" #: ../js/ui/lookingGlass.js:760 ../js/ui/lookingGlass.js:811 msgid "Show Errors" msgstr "Vis feil" #: ../js/ui/lookingGlass.js:769 msgid "Enabled" msgstr "Påslått" #. translators: #. * The device has been disabled #: ../js/ui/lookingGlass.js:772 ../src/gvc/gvc-mixer-control.c:1082 msgid "Disabled" msgstr "Avslått" #: ../js/ui/lookingGlass.js:774 msgid "Error" msgstr "Feil" #: ../js/ui/lookingGlass.js:776 msgid "Out of date" msgstr "Utgått på dato" #: ../js/ui/lookingGlass.js:778 msgid "Downloading" msgstr "Lastar ned" #: ../js/ui/lookingGlass.js:799 msgid "View Source" msgstr "Vis kjeldekode" #: ../js/ui/lookingGlass.js:805 msgid "Web Page" msgstr "Nettside" #. Translators: this is a filename used for screencast recording #: ../js/ui/main.js:129 #, no-c-format msgid "Screencast from %d %t" msgstr "" #: ../js/ui/messageTray.js:1280 msgid "Open" msgstr "Opna" #: ../js/ui/messageTray.js:1297 msgid "Unmute" msgstr "Fjern demping" #: ../js/ui/messageTray.js:1297 msgid "Mute" msgstr "Demp" #: ../js/ui/messageTray.js:2575 msgid "System Information" msgstr "Systeminformasjon" #: ../js/ui/networkAgent.js:148 msgid "Connect" msgstr "Kopla til" #. Cisco LEAP #: ../js/ui/networkAgent.js:243 ../js/ui/networkAgent.js:255 #: ../js/ui/networkAgent.js:282 ../js/ui/networkAgent.js:302 #: ../js/ui/networkAgent.js:312 msgid "Password: " msgstr "Passord:" #. static WEP #: ../js/ui/networkAgent.js:248 msgid "Key: " msgstr "Nøkkel:" #. TTLS and PEAP are actually much more complicated, but this complication #. is not visible here since we only care about phase2 authentication #. (and don't even care of which one) #: ../js/ui/networkAgent.js:280 ../js/ui/networkAgent.js:298 msgid "Username: " msgstr "Brukarnamn:" #: ../js/ui/networkAgent.js:286 msgid "Identity: " msgstr "Identitet:" #: ../js/ui/networkAgent.js:288 msgid "Private key password: " msgstr "Passord for privat nøkkel:" #: ../js/ui/networkAgent.js:300 msgid "Service: " msgstr "Teneste:" #: ../js/ui/networkAgent.js:329 msgid "Authentication required by wireless network" msgstr "Trådlaust nettverk krev autentisering" #: ../js/ui/networkAgent.js:330 #, c-format msgid "" "Passwords or encryption keys are required to access the wireless network " "'%s'." msgstr "" "Passord eller krypteringsnøklar er nødvendig for å kopla til det trådlause " "nettverket «%s»." #: ../js/ui/networkAgent.js:334 msgid "Wired 802.1X authentication" msgstr "Kabla 802.1X-autentisering" #: ../js/ui/networkAgent.js:336 msgid "Network name: " msgstr "Nettverksnamn:" #: ../js/ui/networkAgent.js:341 msgid "DSL authentication" msgstr "DSL-autentisering" #: ../js/ui/networkAgent.js:348 msgid "PIN code required" msgstr "PIN-kode påkravd" #: ../js/ui/networkAgent.js:349 msgid "PIN code is needed for the mobile broadband device" msgstr "Mobilt breibandeining krev PIN-kode" #: ../js/ui/networkAgent.js:350 msgid "PIN: " msgstr "PIN:" #: ../js/ui/networkAgent.js:356 msgid "Mobile broadband network password" msgstr "Nettverkspassord for mobilt breiband" #: ../js/ui/networkAgent.js:357 #, c-format msgid "A password is required to connect to '%s'." msgstr "Passord er nødvendig for å kopla til «%s»." #: ../js/ui/notificationDaemon.js:486 ../src/shell-app.c:374 msgctxt "program" msgid "Unknown" msgstr "Ukjend" #: ../js/ui/overview.js:88 msgid "Undo" msgstr "Angra" #: ../js/ui/overview.js:128 msgid "Overview" msgstr "Oversikt" #: ../js/ui/overview.js:198 msgid "Windows" msgstr "Vindauge" #: ../js/ui/overview.js:201 msgid "Applications" msgstr "Program" #. Translators: this is the name of the dock/favorites area on #. the left of the overview #: ../js/ui/overview.js:226 msgid "Dash" msgstr "Favorittar" #: ../js/ui/panel.js:564 msgid "Quit" msgstr "Avslutt" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: ../js/ui/panel.js:596 msgid "Activities" msgstr "Aktivitetar" #: ../js/ui/panel.js:962 msgid "Top Bar" msgstr "Toppanel" #: ../js/ui/placeDisplay.js:115 #, c-format msgid "Failed to unmount '%s'" msgstr "Klarte ikkje avmontera «%s»" #: ../js/ui/placeDisplay.js:118 msgid "Retry" msgstr "Prøv på nytt" #: ../js/ui/placeDisplay.js:156 msgid "Connect to..." msgstr "Kopla til …" #: ../js/ui/placeDisplay.js:367 msgid "PLACES & DEVICES" msgstr "PLASSERING OG EININGAR" #: ../js/ui/polkitAuthenticationAgent.js:71 msgid "Authentication Required" msgstr "Autentisering påkravd" #: ../js/ui/polkitAuthenticationAgent.js:109 msgid "Administrator" msgstr "Administrator" #: ../js/ui/polkitAuthenticationAgent.js:180 msgid "Authenticate" msgstr "Autentiser" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: ../js/ui/polkitAuthenticationAgent.js:261 #: ../js/ui/shellMountOperation.js:324 msgid "Sorry, that didn't work. Please try again." msgstr "Det verka ikkje. Prøv på nytt." #. Translators: this MUST be either "toggle-switch-us" #. (for toggle switches containing the English words #. "ON" and "OFF") or "toggle-switch-intl" (for toggle #. switches containing "◯" and "|"). Other values will #. simply result in invisible toggle switches. #: ../js/ui/popupMenu.js:728 msgid "toggle-switch-us" msgstr "toggle-switch-intl" #: ../js/ui/runDialog.js:205 msgid "Please enter a command:" msgstr "Skriv inn kommando:" #: ../js/ui/searchDisplay.js:320 msgid "Searching..." msgstr "Søker …" #: ../js/ui/searchDisplay.js:373 msgid "No matching results." msgstr "Ingen treff." #: ../js/ui/shellEntry.js:26 msgid "Copy" msgstr "Kopier" #: ../js/ui/shellEntry.js:31 msgid "Paste" msgstr "Lim inn" #: ../js/ui/shellEntry.js:77 msgid "Show Text" msgstr "Vis tekst" #: ../js/ui/shellEntry.js:79 msgid "Hide Text" msgstr "Gøym tekst" #: ../js/ui/shellMountOperation.js:311 msgid "Passphrase" msgstr "" #: ../js/ui/shellMountOperation.js:332 msgid "Remember Passphrase" msgstr "" #: ../js/ui/shellMountOperation.js:343 #, fuzzy msgid "Unlock" msgstr "Klokke" #: ../js/ui/status/accessibility.js:47 msgid "Accessibility" msgstr "" #: ../js/ui/status/accessibility.js:52 msgid "Zoom" msgstr "Forstørring" #: ../js/ui/status/accessibility.js:59 msgid "Screen Reader" msgstr "Skjermlesar" #: ../js/ui/status/accessibility.js:63 msgid "Screen Keyboard" msgstr "Skjermtastatur" #: ../js/ui/status/accessibility.js:67 msgid "Visual Alerts" msgstr "Synleg varsling" #: ../js/ui/status/accessibility.js:70 msgid "Sticky Keys" msgstr "Faste valtastar" #: ../js/ui/status/accessibility.js:73 msgid "Slow Keys" msgstr "Treige tastar" #: ../js/ui/status/accessibility.js:76 msgid "Bounce Keys" msgstr "Sprettetastar" #: ../js/ui/status/accessibility.js:79 msgid "Mouse Keys" msgstr "Musetastar" #: ../js/ui/status/accessibility.js:83 msgid "Universal Access Settings" msgstr "Innstillingar for tilgjenge" #: ../js/ui/status/accessibility.js:117 msgid "High Contrast" msgstr "Høg kontrast" #: ../js/ui/status/accessibility.js:154 msgid "Large Text" msgstr "Stor tekst" #: ../js/ui/status/bluetooth.js:31 ../js/ui/status/bluetooth.js:35 #: ../js/ui/status/bluetooth.js:255 ../js/ui/status/bluetooth.js:308 #: ../js/ui/status/bluetooth.js:339 ../js/ui/status/bluetooth.js:375 #: ../js/ui/status/bluetooth.js:404 ../js/ui/status/network.js:844 msgid "Bluetooth" msgstr "Blåtann" #: ../js/ui/status/bluetooth.js:48 msgid "Visibility" msgstr "Synleg" #: ../js/ui/status/bluetooth.js:62 msgid "Send Files to Device..." msgstr "Send filer til eining …" #: ../js/ui/status/bluetooth.js:63 msgid "Set up a New Device..." msgstr "Set opp ei ny eining …" #: ../js/ui/status/bluetooth.js:87 msgid "Bluetooth Settings" msgstr "Innstillingar for blåtann" #. TRANSLATORS: this means that bluetooth was disabled by hardware rfkill #: ../js/ui/status/bluetooth.js:107 ../js/ui/status/network.js:211 msgid "hardware disabled" msgstr "eining slått av" #: ../js/ui/status/bluetooth.js:200 msgid "Connection" msgstr "Tilkopling" #: ../js/ui/status/bluetooth.js:211 ../js/ui/status/network.js:445 msgid "disconnecting..." msgstr "koplar frå …" #: ../js/ui/status/bluetooth.js:224 ../js/ui/status/network.js:451 #: ../js/ui/status/network.js:911 msgid "connecting..." msgstr "koplar til …" #: ../js/ui/status/bluetooth.js:242 msgid "Send Files..." msgstr "Send filer …" #: ../js/ui/status/bluetooth.js:247 msgid "Browse Files..." msgstr "Bla gjennom filer …" #: ../js/ui/status/bluetooth.js:256 msgid "Error browsing device" msgstr "Klarte ikkje lesa eining" #: ../js/ui/status/bluetooth.js:257 #, c-format msgid "The requested device cannot be browsed, error is '%s'" msgstr "Kan ikkje bla gjennom eininga. Feilen er «%s»" #: ../js/ui/status/bluetooth.js:265 msgid "Keyboard Settings" msgstr "Innstillingar for tastatur" #: ../js/ui/status/bluetooth.js:268 msgid "Mouse Settings" msgstr "Innstillingar for mus" #: ../js/ui/status/bluetooth.js:273 ../js/ui/status/volume.js:59 msgid "Sound Settings" msgstr "Innstillingar for lyd" #: ../js/ui/status/bluetooth.js:340 #, c-format msgid "Authorization request from %s" msgstr "Førespurnad om autorisering frå %s" #: ../js/ui/status/bluetooth.js:346 #, c-format msgid "Device %s wants access to the service '%s'" msgstr "Eininga %s vil ha tilgang til tenesta «%s»" #: ../js/ui/status/bluetooth.js:348 msgid "Always grant access" msgstr "Gje tilgang alltid" #: ../js/ui/status/bluetooth.js:349 msgid "Grant this time only" msgstr "Gje tilgang berre denne gongen" #: ../js/ui/status/bluetooth.js:350 ../js/ui/telepathyClient.js:1097 msgid "Reject" msgstr "Avvis" #: ../js/ui/status/bluetooth.js:376 #, c-format msgid "Pairing confirmation for %s" msgstr "Tilkopling for %s stadfesta" #: ../js/ui/status/bluetooth.js:382 ../js/ui/status/bluetooth.js:412 #, c-format msgid "Device %s wants to pair with this computer" msgstr "Eininga %s vil kopla seg saman med denne datamaskina" #: ../js/ui/status/bluetooth.js:383 #, c-format msgid "Please confirm whether the PIN '%06d' matches the one on the device." msgstr "Kontroller at PIN-koden «%06d» samsvarer med koden på eininga." #: ../js/ui/status/bluetooth.js:385 msgid "Matches" msgstr "Samsvarer" #: ../js/ui/status/bluetooth.js:386 msgid "Does not match" msgstr "Samsvarer ikkje" #: ../js/ui/status/bluetooth.js:405 #, c-format msgid "Pairing request for %s" msgstr "Førespurnad om tilkopling for %s" #: ../js/ui/status/bluetooth.js:413 msgid "Please enter the PIN mentioned on the device." msgstr "Skriv inn PIN-koden oppgjeve på eininga." #: ../js/ui/status/bluetooth.js:430 msgid "OK" msgstr "OK" #: ../js/ui/status/keyboard.js:69 msgid "Show Keyboard Layout" msgstr "Vis tastaturutforming" #: ../js/ui/status/keyboard.js:71 msgid "Region and Language Settings" msgstr "Innstillingar for region og språk" #: ../js/ui/status/network.js:96 msgid "" msgstr "" #. Translators: this indicates that wireless or wwan is disabled by hardware killswitch #: ../js/ui/status/network.js:233 msgid "disabled" msgstr "slått av" #. Translators: this is for network devices that are physically present but are not #. under NetworkManager's control (and thus cannot be used in the menu) #: ../js/ui/status/network.js:443 msgid "unmanaged" msgstr "ikkje handsama" #. Translators: this is for network connections that require some kind of key or password #: ../js/ui/status/network.js:454 ../js/ui/status/network.js:914 msgid "authentication required" msgstr "autentisering påkravd" #. Translators: this is for devices that require some kind of firmware or kernel #. module, which is missing #: ../js/ui/status/network.js:464 msgid "firmware missing" msgstr "fastvare manglar" #. Translators: this is for wired network devices that are physically disconnected #: ../js/ui/status/network.js:471 msgid "cable unplugged" msgstr "kabel kopla frå" #. Translators: this is for a network device that cannot be activated (for example it #. is disabled by rfkill, or it has no coverage #: ../js/ui/status/network.js:476 msgid "unavailable" msgstr "utilgjengeleg" #: ../js/ui/status/network.js:478 ../js/ui/status/network.js:916 msgid "connection failed" msgstr "klarte ikkje kopla til" #: ../js/ui/status/network.js:539 ../js/ui/status/network.js:1537 msgid "More..." msgstr "Meir …" #. TRANSLATORS: this is the indication that a connection for another logged in user is active, #. and we cannot access its settings (including the name) #: ../js/ui/status/network.js:575 ../js/ui/status/network.js:1467 msgid "Connected (private)" msgstr "Tilkopla (privat)" #: ../js/ui/status/network.js:650 msgid "Auto Ethernet" msgstr "Automatisk Ethernet" #: ../js/ui/status/network.js:708 msgid "Auto broadband" msgstr "Automatisk breiband" #: ../js/ui/status/network.js:711 msgid "Auto dial-up" msgstr "Automatisk oppringd" #. TRANSLATORS: this the automatic wireless connection name (including the network name) #: ../js/ui/status/network.js:830 ../js/ui/status/network.js:1484 #, c-format msgid "Auto %s" msgstr "Automatisk %s" #: ../js/ui/status/network.js:832 msgid "Auto bluetooth" msgstr "Automatisk blåtann" #: ../js/ui/status/network.js:1486 msgid "Auto wireless" msgstr "Automatisk trådlaus" #: ../js/ui/status/network.js:1595 msgid "Enable networking" msgstr "Slå på nettverk" #: ../js/ui/status/network.js:1617 msgid "Wired" msgstr "Kabla" #: ../js/ui/status/network.js:1628 msgid "Wireless" msgstr "Trådlaus" #: ../js/ui/status/network.js:1638 msgid "Mobile broadband" msgstr "Mobilt breiband" #: ../js/ui/status/network.js:1648 msgid "VPN Connections" msgstr "VPN-tilkoplingar" #: ../js/ui/status/network.js:1655 msgid "Network Settings" msgstr "Innstillingar for nettverk" #: ../js/ui/status/network.js:1703 msgid "Network Manager" msgstr "Nettverkshandsaming" #: ../js/ui/status/network.js:1796 msgid "Connection failed" msgstr "Klarte ikkje kopla til" #: ../js/ui/status/network.js:1797 msgid "Activation of network connection failed" msgstr "Klarte ikkje slå på nettverkstilkopling" #: ../js/ui/status/network.js:2060 msgid "Networking is disabled" msgstr "Nettverk er slått av" #: ../js/ui/status/power.js:59 msgid "Battery" msgstr "Batteri" #: ../js/ui/status/power.js:76 msgid "Power Settings" msgstr "Innstillingar for straum" #. 0 is reported when UPower does not have enough data #. to estimate battery life #: ../js/ui/status/power.js:98 msgid "Estimating..." msgstr "Reknar ut …" #: ../js/ui/status/power.js:105 #, c-format msgid "%d hour remaining" msgid_plural "%d hours remaining" msgstr[0] "%d time står att" msgstr[1] "%d timar står att" #. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining" #: ../js/ui/status/power.js:108 #, c-format msgid "%d %s %d %s remaining" msgstr "%d %s %d %s står att" #: ../js/ui/status/power.js:110 msgid "hour" msgid_plural "hours" msgstr[0] "time" msgstr[1] "timar" #: ../js/ui/status/power.js:110 msgid "minute" msgid_plural "minutes" msgstr[0] "minutt" msgstr[1] "minutt" #: ../js/ui/status/power.js:113 #, c-format msgid "%d minute remaining" msgid_plural "%d minutes remaining" msgstr[0] "%d minutt står att" msgstr[1] "%d minutt står att" #: ../js/ui/status/power.js:116 ../js/ui/status/power.js:186 #, c-format msgctxt "percent of battery remaining" msgid "%d%%" msgstr "%d %%" #: ../js/ui/status/power.js:193 msgid "AC adapter" msgstr "Straumadapter" #: ../js/ui/status/power.js:195 msgid "Laptop battery" msgstr "Batteri" #: ../js/ui/status/power.js:197 msgid "UPS" msgstr "UPS" #: ../js/ui/status/power.js:199 msgid "Monitor" msgstr "Skjerm" #: ../js/ui/status/power.js:201 msgid "Mouse" msgstr "Mus" #: ../js/ui/status/power.js:205 msgid "PDA" msgstr "PDA" #: ../js/ui/status/power.js:207 msgid "Cell phone" msgstr "Mobiltelefon" #: ../js/ui/status/power.js:209 msgid "Media player" msgstr "Mediaspelar" #: ../js/ui/status/power.js:211 msgid "Tablet" msgstr "Nettbrett" #: ../js/ui/status/power.js:213 msgid "Computer" msgstr "Datamaskin" #: ../js/ui/status/power.js:215 msgctxt "device" msgid "Unknown" msgstr "Ukjend" #. Translators: This is the label for audio volume #: ../js/ui/status/volume.js:25 ../js/ui/status/volume.js:39 msgid "Volume" msgstr "Lydstyrke" #: ../js/ui/status/volume.js:51 msgid "Microphone" msgstr "Mikrofon" #. FIXME: We don't have a 'chat room' icon (bgo #653737) use #. system-users for now as Empathy does. #: ../js/ui/telepathyClient.js:226 msgid "Invitation" msgstr "Invitasjon" #. We got the TpContact #: ../js/ui/telepathyClient.js:284 msgid "Call" msgstr "Ring" #. We got the TpContact #: ../js/ui/telepathyClient.js:300 msgid "File Transfer" msgstr "Filoverføring" #: ../js/ui/telepathyClient.js:381 msgid "Subscription request" msgstr "Førespurnad om abonnering" #: ../js/ui/telepathyClient.js:418 msgid "Connection error" msgstr "Tilkoplingsfeil" #. Translators: this is a time format string followed by a date. #. If applicable, replace %X with a strftime format valid for your #. locale, without seconds. #: ../js/ui/telepathyClient.js:908 #, no-c-format msgid "Sent at %X on %A" msgstr "Sendt %A %X" #. Translators: this is a time format in the style of "Wednesday, May 25", #. shown when you get a chat message in the same year. #: ../js/ui/telepathyClient.js:914 #, no-c-format msgid "Sent on %A, %B %d" msgstr "Sendt %A %d. %B" #. Translators: this is a time format in the style of "Wednesday, May 25, 2012", #. shown when you get a chat message in a different year. #: ../js/ui/telepathyClient.js:919 #, no-c-format msgid "Sent on %A, %B %d, %Y" msgstr "Sendt %A %d. %B %Y" #. Translators: this is the other person changing their old IM name to their new #. IM name. #: ../js/ui/telepathyClient.js:948 #, c-format msgid "%s is now known as %s" msgstr "%s er no kjend som %s" #. translators: argument is a room name like #. * room@jabber.org for example. #: ../js/ui/telepathyClient.js:1048 #, c-format msgid "Invitation to %s" msgstr "Invitasjon til %s" #. translators: first argument is the name of a contact and the second #. * one the name of a room. "Alice is inviting you to join room@jabber.org #. * for example. #: ../js/ui/telepathyClient.js:1056 #, c-format msgid "%s is inviting you to join %s" msgstr "%s inviterer deg til å vera med i %s" #: ../js/ui/telepathyClient.js:1058 ../js/ui/telepathyClient.js:1137 #: ../js/ui/telepathyClient.js:1201 msgid "Decline" msgstr "Avslå" #: ../js/ui/telepathyClient.js:1059 ../js/ui/telepathyClient.js:1138 #: ../js/ui/telepathyClient.js:1202 msgid "Accept" msgstr "Godta" #. translators: argument is a contact name like Alice for example. #: ../js/ui/telepathyClient.js:1089 #, c-format msgid "Video call from %s" msgstr "Videooppringing frå %s" #. translators: argument is a contact name like Alice for example. #: ../js/ui/telepathyClient.js:1092 #, c-format msgid "Call from %s" msgstr "Oppringing frå %s" #. translators: this is a button label (verb), not a noun #: ../js/ui/telepathyClient.js:1099 msgid "Answer" msgstr "Svar" #. To translators: The first parameter is #. * the contact's alias and the second one is the #. * file name. The string will be something #. * like: "Alice is sending you test.ogg" #. #: ../js/ui/telepathyClient.js:1131 #, c-format msgid "%s is sending you %s" msgstr "%s sender deg %s" #. To translators: The parameter is the contact's alias #: ../js/ui/telepathyClient.js:1166 #, c-format msgid "%s would like permission to see when you are online" msgstr "%s ønskjer å sjå når du er tilkopla" #: ../js/ui/telepathyClient.js:1259 msgid "Network error" msgstr "Nettverksfeil" #: ../js/ui/telepathyClient.js:1261 msgid "Authentication failed" msgstr "Feil under autentisering" #: ../js/ui/telepathyClient.js:1263 msgid "Encryption error" msgstr "Krypteringsfeil" #: ../js/ui/telepathyClient.js:1265 msgid "Certificate not provided" msgstr "Sertifikat ikkje oppgjeve" #: ../js/ui/telepathyClient.js:1267 msgid "Certificate untrusted" msgstr "Sertifikatet er upåliteleg" #: ../js/ui/telepathyClient.js:1269 msgid "Certificate expired" msgstr "Sertifikatet er utgått" #: ../js/ui/telepathyClient.js:1271 msgid "Certificate not activated" msgstr "Sertifikatet er ikkje slått på" #: ../js/ui/telepathyClient.js:1273 msgid "Certificate hostname mismatch" msgstr "Feil vertsnamn for sertifikatet" #: ../js/ui/telepathyClient.js:1275 msgid "Certificate fingerprint mismatch" msgstr "Fingeravtrykket til sertifikatet er feil" #: ../js/ui/telepathyClient.js:1277 msgid "Certificate self-signed" msgstr "Sertifikatet er sjølvsignert" #: ../js/ui/telepathyClient.js:1279 msgid "Status is set to offline" msgstr "Status er sett til fråkopla" #: ../js/ui/telepathyClient.js:1281 msgid "Encryption is not available" msgstr "Kryptering er ikkje tilgjengeleg" #: ../js/ui/telepathyClient.js:1283 msgid "Certificate is invalid" msgstr "Sertifikatet er ugyldig" #: ../js/ui/telepathyClient.js:1285 msgid "Connection has been refused" msgstr "Tilkopling nekta" #: ../js/ui/telepathyClient.js:1287 msgid "Connection can't be established" msgstr "Kan ikkje kopla til" #: ../js/ui/telepathyClient.js:1289 msgid "Connection has been lost" msgstr "Mista tilkoplinga" #: ../js/ui/telepathyClient.js:1291 msgid "This account is already connected to the server" msgstr "Denne kontoen er allereie kopla til tenaren" #: ../js/ui/telepathyClient.js:1293 msgid "" "Connection has been replaced by a new connection using the same resource" msgstr "Tilkoplinga er bytt ut med ei ny tilkopling som bruker same ressurs" #: ../js/ui/telepathyClient.js:1295 msgid "The account already exists on the server" msgstr "Kontoen finst allereie på tenaren" #: ../js/ui/telepathyClient.js:1297 msgid "Server is currently too busy to handle the connection" msgstr "Tenaren er for oppteken til å ta i mot tilkoplinga" #: ../js/ui/telepathyClient.js:1299 msgid "Certificate has been revoked" msgstr "Sertifikatet er trekt tilbake" #: ../js/ui/telepathyClient.js:1301 msgid "" "Certificate uses an insecure cipher algorithm or is cryptographically weak" msgstr "" "Sertifikatet brukar ei usikker sifferalgoritme eller er kryptografisk svakt" #: ../js/ui/telepathyClient.js:1303 msgid "" "The length of the server certificate, or the depth of the server certificate " "chain, exceed the limits imposed by the cryptography library" msgstr "" "Lengda på tenarsertifikatet eller djupna på sertifikatkjeda oversteig grensa " "som er sett i kryptografibiblioteket" #: ../js/ui/telepathyClient.js:1305 msgid "Internal error" msgstr "Intern feil" #. translators: argument is the account name, like #. * name@jabber.org for example. #: ../js/ui/telepathyClient.js:1315 #, c-format msgid "Connection to %s failed" msgstr "Klarte ikkje kopla til %s" #: ../js/ui/telepathyClient.js:1324 msgid "Reconnect" msgstr "Kopla til på nytt" #: ../js/ui/telepathyClient.js:1325 msgid "Edit account" msgstr "Endra konto" #: ../js/ui/telepathyClient.js:1371 msgid "Unknown reason" msgstr "Ukjend årsak" #: ../js/ui/userMenu.js:130 msgid "Available" msgstr "Tilgjengeleg" #: ../js/ui/userMenu.js:133 msgid "Busy" msgstr "Oppteken" #: ../js/ui/userMenu.js:136 msgid "Invisible" msgstr "Usynleg" #: ../js/ui/userMenu.js:139 msgid "Away" msgstr "Vekke" #: ../js/ui/userMenu.js:142 msgid "Idle" msgstr "Uverksam" #: ../js/ui/userMenu.js:145 msgid "Unavailable" msgstr "Utilgjengeleg" #: ../js/ui/userMenu.js:567 ../js/ui/userMenu.js:706 msgid "Switch User" msgstr "Byt brukar" #: ../js/ui/userMenu.js:568 msgid "Switch Session" msgstr "Byt økt" #: ../js/ui/userMenu.js:689 msgid "Notifications" msgstr "Varslingar" #: ../js/ui/userMenu.js:698 msgid "System Settings" msgstr "Systeminnstillingar" #: ../js/ui/userMenu.js:711 msgid "Log Out" msgstr "Logg ut" #: ../js/ui/userMenu.js:716 msgid "Lock" msgstr "" #: ../js/ui/userMenu.js:724 msgid "Install Updates & Restart" msgstr "" #: ../js/ui/userMenu.js:749 msgid "Your chat status will be set to busy" msgstr "Nettpratstatusen din vil verta sett til oppteken" #: ../js/ui/userMenu.js:750 msgid "" "Notifications are now disabled, including chat messages. Your online status " "has been adjusted to let others know that you might not see their messages." msgstr "" "Varslingar er no slått av, òg for nettpratmeldingar. Nettstatusen din er " "endra, slik at andre får vite at du kanskje ikkje ser meldingane deira." #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: ../js/ui/viewSelector.js:113 msgid "Type to search..." msgstr "Skriv for å søkja …" #: ../js/ui/viewSelector.js:131 ../src/shell-util.c:253 msgid "Search" msgstr "Søk" #: ../js/ui/wanda.js:124 #, c-format msgid "" "Sorry, no wisdom for you today:\n" "%s" msgstr "" #: ../js/ui/wanda.js:128 #, c-format msgid "%s the Oracle says" msgstr "" #: ../js/ui/wanda.js:168 msgid "Your favorite Easter Egg" msgstr "" #: ../js/ui/windowAttentionHandler.js:19 #, c-format msgid "'%s' is ready" msgstr "«%s» er klar" #: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1 msgid "Evolution Calendar" msgstr "Evolution kalender" #. translators: #. * The number of sound outputs on a particular device #: ../src/gvc/gvc-mixer-control.c:1089 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u utgang" msgstr[1] "%u utgangar" #. translators: #. * The number of sound inputs on a particular device #: ../src/gvc/gvc-mixer-control.c:1099 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u inngang" msgstr[1] "%u inngangar" #: ../src/gvc/gvc-mixer-control.c:1397 msgid "System Sounds" msgstr "Systemlydar" #: ../src/main.c:327 msgid "Print version" msgstr "Skriv ut versjon" #: ../src/main.c:333 msgid "Mode used by GDM for login screen" msgstr "Modus brukt av GDM for innloggingskjermen" #: ../src/main.c:339 msgid "Use a specific mode, e.g. \"gdm\" for login screen" msgstr "" #: ../src/main.c:345 msgid "List possible modes" msgstr "" #: ../src/shell-app.c:622 #, c-format msgid "Failed to launch '%s'" msgstr "Klarte ikkje starta «%s»" #: ../src/shell-keyring-prompt.c:708 msgid "Passwords do not match." msgstr "Passorda samsvarer ikkje." #: ../src/shell-keyring-prompt.c:716 msgid "Password cannot be blank" msgstr "" #: ../src/shell-mobile-providers.c:80 msgid "United Kingdom" msgstr "Storbritannia" #: ../src/shell-mobile-providers.c:526 msgid "Default" msgstr "Standard" #: ../src/shell-polkit-authentication-agent.c:340 msgid "Authentication dialog was dismissed by the user" msgstr "Autentiseringsvindauget vart lata att av brukaren" #. Translators: this is the same string as the one found in #. * nautilus #: ../src/shell-util.c:97 msgid "Home" msgstr "Heim" #. Translators: this is the same string as the one found in #. * nautilus #: ../src/shell-util.c:107 msgid "File System" msgstr "Filsystem" #. Translators: the first string is the name of a gvfs #. * method, and the second string is a path. For #. * example, "Trash: some-directory". It means that the #. * directory called "some-directory" is in the trash. #. #: ../src/shell-util.c:303 #, c-format msgid "%1$s: %2$s" msgstr "%1$s: %2$s" 07070100000255000081A40000000000000000000000016712993F000219F7000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/oc.po# Occitan translations for gnome-shell package. # Copyright (C) 2009-2015 Listed translators # This file is distributed under the same license as the gnome-shell package. # Cédric Valmary (Tot en Òc) , 2015. # Cédric Valmary (totenoc.eu) , 2016, 2018. msgid "" msgstr "" "Project-Id-Version: gnome-shell master oc\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues/\n" "POT-Creation-Date: 2024-08-06 15:18+0000\n" "PO-Revision-Date: 2024-08-26 20:33+0200\n" "Last-Translator: Quentin PAGÈS\n" "Language-Team: Tot En Òc\n" "Language: oc\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 3.4.3\n" "X-Project-Style: gnome\n" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "Aviadors" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate pinned app 1" msgstr "Activar l’aplicacion penjada 1" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate pinned app 2" msgstr "Activar l’aplicacion penjada 2" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate pinned app 3" msgstr "Activar l’aplicacion penjada 3" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate pinned app 4" msgstr "Activar l’aplicacion penjada 4" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate pinned app 5" msgstr "Activar l’aplicacion penjada 5" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate pinned app 6" msgstr "Activar l’aplicacion penjada 6" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate pinned app 7" msgstr "Activar l’aplicacion penjada 7" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate pinned app 8" msgstr "Activar l’aplicacion penjada 8" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate pinned app 9" msgstr "Activar l’aplicacion penjada 9" #: data/50-gnome-shell-launchers.xml:46 msgid "Open new window of pinned app 1" msgstr "Dobrir una fenèstra novèla de l’app penjada 1" #: data/50-gnome-shell-launchers.xml:50 msgid "Open new window of pinned app 2" msgstr "Dobrir una fenèstra novèla de l’app penjada 2" #: data/50-gnome-shell-launchers.xml:54 msgid "Open new window of pinned app 3" msgstr "Dobrir una fenèstra novèla de l’app penjada 3" #: data/50-gnome-shell-launchers.xml:58 msgid "Open new window of pinned app 4" msgstr "Dobrir una fenèstra novèla de l’app penjada 4" #: data/50-gnome-shell-launchers.xml:62 msgid "Open new window of pinned app 5" msgstr "Dobrir una fenèstra novèla de l’app penjada 5" #: data/50-gnome-shell-launchers.xml:66 msgid "Open new window of pinned app 6" msgstr "Dobrir una fenèstra novèla de l’app penjada 6" #: data/50-gnome-shell-launchers.xml:70 msgid "Open new window of pinned app 7" msgstr "Dobrir una fenèstra novèla de l’app penjada 7" #: data/50-gnome-shell-launchers.xml:74 msgid "Open new window of pinned app 8" msgstr "Dobrir una fenèstra novèla de l’app penjada 8" #: data/50-gnome-shell-launchers.xml:78 msgid "Open new window of pinned app 9" msgstr "Dobrir una fenèstra novèla de l’app penjada 9" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2274 msgid "Screenshots" msgstr "Capturas d'ecran" #: data/50-gnome-shell-screenshots.xml:9 #: data/org.gnome.shell.gschema.xml.in:287 msgid "Take a screenshot interactively" msgstr "Prendre una captura d’ecran interactiu" #: data/50-gnome-shell-screenshots.xml:12 #: data/org.gnome.shell.gschema.xml.in:299 msgid "Take a screenshot" msgstr "Prendre una captura d'ecran" #: data/50-gnome-shell-screenshots.xml:15 #: data/org.gnome.shell.gschema.xml.in:295 msgid "Take a screenshot of a window" msgstr "Prendre una captura d'ecran d'una fenèstra" #: data/50-gnome-shell-screenshots.xml:18 #: data/org.gnome.shell.gschema.xml.in:291 msgid "Record a screencast interactively" msgstr "Enregistrar una vidèo d'ecran interactiu" #: data/50-gnome-shell-system.xml:6 js/ui/messageTray.js:1298 msgid "System" msgstr "Sistèma" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "Afichar la lista de las notificacions" #: data/50-gnome-shell-system.xml:12 msgid "Open the quick settings menu" msgstr "Dobrir lo menú rapid de parametratge" #: data/50-gnome-shell-system.xml:15 msgid "Focus the active notification" msgstr "Balhar lo focus a la notificacion activa" #: data/50-gnome-shell-system.xml:18 msgid "Show the overview" msgstr "Afichar la vista d'ensemble" #: data/50-gnome-shell-system.xml:21 msgid "Show all apps" msgstr "Afichar totas las aplicacions" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "GNOME Shell" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "Gestion de las fenèstras e aviada de las aplicacions" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" "Activar las aisinas intèrnas pels desvolopaires e los testaires dempuèi Alt-" "F2" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Autorizar l'accès a las aisinas intèrnas de desbugatge e de susvelhança " "gràcia a la bóstia de dialòg d'aviada d'aplicacion (Alt-F2)." #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "Identificants UUID de las extensions d'activar" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "Las extensions GNOME Shell an una proprietat UUID. Aquesta clau enumèra las " "extensions que devon èsser cargadas. Tota extension que voldriá èsser " "cargada deu èsser aponduda dins aquesta lista. Podètz tanben manipular " "aquesta lista amb los metòdes DBus EnableExtension e DisableExtension de org." "gnome.Shell." #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "Identificants UUID de las extensions de desactivar de fòrça" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" "Las extensions GNOME Shell an una proprietat UUID. Aquesta clau lista las " "extensions que devon èsser desactivadas, encara que fòrmen part del mòde " "actual. Podètz tanben manipular aquesta lista amb los metòdes " "EnableExtension e DisableExtension D-Bus methods de org.gnome.Shell. Aquesta " "clau subrecarga lo paramètre « enabled-extensions »." #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "Desactivar las extensions utilizaire" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" "Desactivar l’ensemble de las extensions activadas per l’utilizaire sens " "afectar la proprietat « enabled-extension »." #: data/org.gnome.shell.gschema.xml.in:45 msgid "Allow extension installation" msgstr "Autorizar l’installacion d’extensions" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "Allow users to install extensions in their home folder. If disabled, the " "InstallRemoteExtension D-Bus method will fail, and extensions are only " "loaded from system directories on startup. It does not affect extensions " "that are already loaded, so a change only takes full effect on the next " "login." msgstr "" "Permet als utilizaires d’installar d’extension dins lor dossièr personal. " "Se’s desactivat, lo metòde nstallRemoteExtension D-Bus fracassarà e sonque " "las installacion que son solament cargadas a partir dels repertòris sistèma. " "Tòca pas las extensions que son ja cargadas, doncas las modificacions " "prendràn sonque efièch a la connexion que ven." #: data/org.gnome.shell.gschema.xml.in:56 msgid "Disables the validation of extension version compatibility" msgstr "Desactiva la verificacion de compatibilitat de version" #: data/org.gnome.shell.gschema.xml.in:57 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "GNOME Shell carga unicament las extensions qu'anóncia lor gestion de la " "version en cors. Activar aquesta opcion desactiva aquesta verificacion e " "ensaja de cargar totas las extensions, sens considerar las versions " "qu'anóncian prene en carga." #: data/org.gnome.shell.gschema.xml.in:65 msgid "List of desktop file IDs for favorite applications" msgstr "" "Lista d'identificants de fichièrs desktop per las aplicacions favoritas" #: data/org.gnome.shell.gschema.xml.in:66 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" "Las aplicacions que correspondon a aqueles identificants son afichadas dins " "la zòna dels favorits." #: data/org.gnome.shell.gschema.xml.in:73 msgid "History for command (Alt-F2) dialog" msgstr "Istoric de la bóstia de dialòg de las comandas (Alt-F2)" #. Translators: looking glass is a debugger and inspector tool, see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/docs/looking-glass.md #: data/org.gnome.shell.gschema.xml.in:78 msgid "History for the looking glass dialog" msgstr "Istoric de la bóstia de dialòg d'inspeccion" #: data/org.gnome.shell.gschema.xml.in:82 msgid "Always show the “Log Out” action in the system menu" msgstr "Totjorn afichar l’element « Se desconnectar » dins lo menú utilizaire" #: data/org.gnome.shell.gschema.xml.in:83 msgid "" "This key overrides the automatic hiding of the “Log out” action in the " "system menu for logged-in situations where there is a single, local, non-" "system user and only a single available session type (e.g. GNOME on Wayland)." msgstr "" "Aquesta clau subrecarga lo mascatge automatic de l’acion « Se desconnectar » " "del menú sistèma per de situacions de connexion quand i a un sol utilizaire " "local qu'es pas un utilizaire sistèma e quand i a pas qu'un sol tipe de " "session disponible (per exemple : GNOME on Wayland)." #: data/org.gnome.shell.gschema.xml.in:92 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "Se remembrar dels senhals pels montatges dels sistèmas de fichièrs chifrats " "o distants" #: data/org.gnome.shell.gschema.xml.in:93 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "Lo shell demandarà un senhal al montatge d’un periferic chifrat o d’un " "sistèma de fichièrs distant. Se lo senhal pòt èsser enregistrat per una " "utilizacion ulteriora, una casa de marcar « Se remembrar del senhal » serà " "presenta. Aquesta clau determina l’estat per defaut d'aquesta casa de marcar." #: data/org.gnome.shell.gschema.xml.in:102 msgid "The last selected non-default power profile" msgstr "Lo darrièr perfil energetic pas per defaut seleccionat" #: data/org.gnome.shell.gschema.xml.in:103 msgid "" "Some systems support more than two power profiles. In order to still support " "toggling between two profiles, this key records the last selected non-" "default profile." msgstr "" "D’unes sistèmas prenon en carga mai de dos perfils energetics. Per dire de " "téner de prendre en carga la bascula entre dos perfils, aqueste acorchi " "memoriza lo darrièra perfil pas per defaut seleccionat." #: data/org.gnome.shell.gschema.xml.in:111 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "" "La darrièra version de la fenèstra de « Benvenguda a GNOME » èra mostrada per" #: data/org.gnome.shell.gschema.xml.in:112 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can " "be used to effectively disable the dialog." msgstr "" "Aquesta clau determina la version de la fenèstra « Benvenguda de GNOME » " "darrièrament afichada. Una cadena de tèxt voida indica la version mai " "anciana possibla, e un grand nombre representa una version qu'existís pas " "encara. Un grand nombre pòt servir a desactivar d’un biais efectiu la " "fenèstra." #: data/org.gnome.shell.gschema.xml.in:145 msgid "Layout of the app picker" msgstr "Disposicion del selector d’aplicacions" #: data/org.gnome.shell.gschema.xml.in:146 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" msgstr "" "Disposicion del selector d’aplicacions. Cada entrada del tablèu es una " "pagina. Las paginas son gardadas dins l’òrdre qu'apareisson dins Shell de " "GNOME. Cada pagina conten un parelh « identificant d’aplicacion » → " "« donadas ». Actualament, las valors seguentas son gardadas coma " "« donadas » : • « posicion » : la posicion de l’icòna de l’aplicacion sus la " "pagina" #: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:172 msgid "Keybinding to shift between overview states" msgstr "Combinason de tòcas per alternar los estats de la la vista" #: data/org.gnome.shell.gschema.xml.in:166 msgid "Keybinding to shift between session, window picker and app grid" msgstr "" "Combinason de tòcas per bascular entre la session, lo selector de fenèstra e " "la grasilha d'aplicacions" #: data/org.gnome.shell.gschema.xml.in:173 msgid "Keybinding to shift between app grid, window picker and session" msgstr "" "Combinason de tòcas per bascular entre la grasilha d'aplicacions, lo " "selector de fenèstra e la session" #: data/org.gnome.shell.gschema.xml.in:179 msgid "Keybinding to open the “Show Applications” view" msgstr "Combinason de tòcas per dobrir la vista « Afichar las aplicacions »" #: data/org.gnome.shell.gschema.xml.in:180 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "" "Combinason de tòcas per dobrir la vista « Afichar las aplicacions » de la " "vista d’ensemble de las activitats." #: data/org.gnome.shell.gschema.xml.in:187 msgid "Keybinding to open the overview" msgstr "Combinason de tòcas per dobrir la vista d'ensemble" #: data/org.gnome.shell.gschema.xml.in:188 msgid "Keybinding to open the Activities Overview." msgstr "Combinason de tòcas per dobrir la vista d'ensemble de las aplicacions." #: data/org.gnome.shell.gschema.xml.in:194 msgid "Keybinding to toggle the visibility of the notification list" msgstr "" "Combinason de tòcas per inversar la visibilitat de la lista de las " "notificacions" #: data/org.gnome.shell.gschema.xml.in:195 msgid "Keybinding to toggle the visibility of the notification list." msgstr "" "Combinason de tòcas per inversar la visibilitat de la lista de las " "notificacions." #: data/org.gnome.shell.gschema.xml.in:201 msgid "Keybinding to toggle the quick settings menu" msgstr "Combinason de tòcas per dobrir lo menú rapid de parametratge" #: data/org.gnome.shell.gschema.xml.in:202 msgid "Keybinding to toggle the quick settings menu." msgstr "Combinason de tòcas per dobrir lo menú rapid de parametratge." #: data/org.gnome.shell.gschema.xml.in:208 msgid "Keybinding to focus the active notification" msgstr "Combinason de tòcas per donar lo focus a la notificacion activa" #: data/org.gnome.shell.gschema.xml.in:209 msgid "Keybinding to focus the active notification." msgstr "Combinason de tòcas per donar lo focus a la notificacion activa." #: data/org.gnome.shell.gschema.xml.in:215 msgid "Switch to application 1" msgstr "Passar a l'aplicacion 1" #: data/org.gnome.shell.gschema.xml.in:219 msgid "Switch to application 2" msgstr "Passar a l'aplicacion 2" #: data/org.gnome.shell.gschema.xml.in:223 msgid "Switch to application 3" msgstr "Passar a l'aplicacion 3" #: data/org.gnome.shell.gschema.xml.in:227 msgid "Switch to application 4" msgstr "Passar a l'aplicacion 4" #: data/org.gnome.shell.gschema.xml.in:231 msgid "Switch to application 5" msgstr "Passar a l'aplicacion 5" #: data/org.gnome.shell.gschema.xml.in:235 msgid "Switch to application 6" msgstr "Passar a l'aplicacion 6" #: data/org.gnome.shell.gschema.xml.in:239 msgid "Switch to application 7" msgstr "Passar a l'aplicacion 7" #: data/org.gnome.shell.gschema.xml.in:243 msgid "Switch to application 8" msgstr "Passar a l'aplicacion 8" #: data/org.gnome.shell.gschema.xml.in:247 msgid "Switch to application 9" msgstr "Passar a l'aplicacion 9" #: data/org.gnome.shell.gschema.xml.in:251 msgid "Open a new instance of application 1" msgstr "Dobrir una instància novèla de l'aplicacion 1" #: data/org.gnome.shell.gschema.xml.in:255 msgid "Open a new instance of application 2" msgstr "Dobrir una instància novèla de l'aplicacion 2" #: data/org.gnome.shell.gschema.xml.in:259 msgid "Open a new instance of application 3" msgstr "Dobrir una instància novèla de l'aplicacion 3" #: data/org.gnome.shell.gschema.xml.in:263 msgid "Open a new instance of application 4" msgstr "Dobrir una instància novèla de l'aplicacion 4" #: data/org.gnome.shell.gschema.xml.in:267 msgid "Open a new instance of application 5" msgstr "Dobrir una instància novèla de l'aplicacion 5" #: data/org.gnome.shell.gschema.xml.in:271 msgid "Open a new instance of application 6" msgstr "Dobrir una instància novèla de l'aplicacion 6" #: data/org.gnome.shell.gschema.xml.in:275 msgid "Open a new instance of application 7" msgstr "Dobrir una instància novèla de l'aplicacion 7" #: data/org.gnome.shell.gschema.xml.in:279 msgid "Open a new instance of application 8" msgstr "Dobrir una instància novèla de l'aplicacion 8" #: data/org.gnome.shell.gschema.xml.in:283 msgid "Open a new instance of application 9" msgstr "Dobrir una instància novèla de l'aplicacion 9" #: data/org.gnome.shell.gschema.xml.in:308 #: data/org.gnome.shell.gschema.xml.in:335 msgid "Limit switcher to current workspace." msgstr "Limita lo selector de fenèstras a l'espaci de trabalh actual." #: data/org.gnome.shell.gschema.xml.in:309 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "Se verai, solas las aplicacions qu'an de fenèstras dobèrtas sus l'espaci de " "trabalh actual son afichadas dins lo selector. Siquenon, totas las " "aplicacions i son inclusas." #: data/org.gnome.shell.gschema.xml.in:326 msgid "The application icon mode." msgstr "Lo tipe d'icòna de las aplicacions." #: data/org.gnome.shell.gschema.xml.in:327 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-" "only” (shows only the application icon) or “both”." msgstr "" "Configura lo biais que las fenèstras son afichadas dins lo selector. Las " "causidas possiblas son « thumbnail-only » (aficha una miniatura de la " "fenèstra), « app-icon-only » (aficha unicament l’icòna de l’aplicacion), o " "« both » (aficha los dos)." #: data/org.gnome.shell.gschema.xml.in:336 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "Se verai, solas las fenèstras de l'espaci de trabalh actual son afichadas " "dins lo selector. Siquenon, totas las fenèstras i son inclusas." #: data/org.gnome.shell.gschema.xml.in:346 msgid "Locations" msgstr "Emplaçaments" #: data/org.gnome.shell.gschema.xml.in:347 msgid "The locations to show in world clocks" msgstr "Lo lòc d’afichar sul relòtge mondial" #: data/org.gnome.shell.gschema.xml.in:357 msgid "Automatic location" msgstr "Localizacion automatica" #: data/org.gnome.shell.gschema.xml.in:358 msgid "Whether to fetch the current location or not" msgstr "Se cal obtenir automaticament la localizacion o non" #: data/org.gnome.shell.gschema.xml.in:365 msgid "Location" msgstr "Emplaçament" #: data/org.gnome.shell.gschema.xml.in:366 msgid "The location for which to show a forecast" msgstr "Lo lòc ont mostrar las previsions metèo" #. Keep in sync with subprojects/extensions-app #: data/org.gnome.Shell.Extensions.desktop.in.in:5 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/data/ui/extensions-window.ui:57 msgid "Extensions" msgstr "Extensions" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "Identificacion ret" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:275 msgid "Something’s gone wrong" msgstr "Quicòm a trucat" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" "O planhèm, mas i a un problèmas : los paramètres d’aquesta extensions se " "pòdon pas afichar. Vos recomandam de senhalar aqueste problèma als autors de " "l’extension." #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "Detalhs tecnics" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "Pagina d'acuèlh" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 msgid "Visit extension homepage" msgstr "Consultar la pagina de las extensions" #: js/gdm/authPrompt.js:151 js/gdm/loginDialog.js:465 #: js/ui/audioDeviceSelection.js:66 js/ui/components/networkAgent.js:113 #: js/ui/components/polkitAgent.js:144 js/ui/endSessionDialog.js:437 #: js/ui/extensionDownloader.js:276 js/ui/shellMountOperation.js:382 #: js/ui/shellMountOperation.js:392 msgid "Cancel" msgstr "Anullar" #: js/gdm/authPrompt.js:317 js/ui/components/networkAgent.js:213 #: js/ui/components/networkAgent.js:233 js/ui/components/networkAgent.js:265 #: js/ui/components/networkAgent.js:298 js/ui/components/networkAgent.js:337 #: js/ui/components/networkAgent.js:350 js/ui/components/polkitAgent.js:286 #: js/ui/shellMountOperation.js:332 msgid "Password" msgstr "Senhal" #: js/gdm/loginDialog.js:326 msgid "Choose Session" msgstr "Causir una session" #. Translators: is running for #: js/gdm/loginDialog.js:423 #, javascript-format msgid "" "Remote login is not possible because a remote session is already running for " "%s. To login remotely, you must log out from the remote session or force " "stop it." msgstr "" "La connexion a distància es pas possible pr’amor qu’una session distanta es " "ja en cors per %s. Per se connectar a distància, devètz vos desconnectar de " "la session distanta o forçar son arrèst." #. Translators: is running for #: js/gdm/loginDialog.js:426 #, javascript-format msgid "" "Login is not possible because a remote session is already running for %s. To " "login, you must log out from the remote session or force stop it." msgstr "" "La connexion es pas possible pr’amor qu’una session distanta es ja en cors " "per %s. Per se connectar, devètz vos desconnectar de la session distanta o " "forçar son arrèst." #. Translators: is running for #: js/gdm/loginDialog.js:429 #, javascript-format msgid "" "Remote login is not possible because a local session is already running for " "%s. To login remotely, you must log out from the local session or force stop " "it." msgstr "" "La connexion es pas possible pr’amor qu’una session locala es ja en cors per " "%s. Per se connectar a distància, devètz vos desconnectar de la session " "locala o forçar son arrèst." #. Translators: is running for #: js/gdm/loginDialog.js:432 #, javascript-format msgid "" "Login is not possible because a session is already running for %s. To login, " "you must log out from the session or force stop it." msgstr "" "La connexion es pas possible pr’amor qu’una session es ja en cors per %s. " "Per se connectar, devètz vos desconnectar de la session o forçar son arrèst." #: js/gdm/loginDialog.js:441 msgid "Session Already Running" msgstr "Session ja en execucion" #: js/gdm/loginDialog.js:453 msgid "" "Force stopping will quit any running apps and processes, and could result in " "data loss" msgstr "" "Forçar l’arrèst quitarà tota aplicacion en execucion e los processús e " "poiriá menar a de pèrda de donadas" #: js/gdm/loginDialog.js:473 msgid "Force Stop" msgstr "Forçar a quitar" #: js/gdm/loginDialog.js:541 msgid "Not listed?" msgstr "Absent de la lista ?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:1009 #, javascript-format msgid "(e.g., user or %s)" msgstr "(per ex. utilizaire o %s)" #: js/gdm/loginDialog.js:1014 js/ui/components/networkAgent.js:257 #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:326 msgid "Username" msgstr "Nom d'utilizaire" #: js/gdm/loginDialog.js:1080 msgid "Login Attempt Timed Out" msgstr "Ensag de connexion expirat" #: js/gdm/loginDialog.js:1081 msgid "Login took too long, please try again" msgstr "La connexion a pres tròp de temps, mercés de tornar ensajar" #: js/gdm/loginDialog.js:1426 msgid "Login Window" msgstr "Fenèstra de connexion" #: js/gdm/util.js:496 msgid "Authentication error" msgstr "Error d'autentificacion" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:727 msgid "(or swipe finger across reader)" msgstr "(o fasètz lisar lo det pel lector)" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:732 msgid "(or place finger on reader)" msgstr "(o pausatz lo det sul lector)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:91 msgctxt "search-result" msgid "Power Off" msgstr "Atudar" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:94 msgid "power off;poweroff;shutdown;halt;stop" msgstr "atudar;tampar;desbrancar;reaviar;ralucar;reboot" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:99 msgctxt "search-result" msgid "Restart" msgstr "Reaviar" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:102 msgid "reboot;restart;" msgstr "reboot;restart;reaviar;reamodar;reaviada;" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:107 msgctxt "search-result" msgid "Lock Screen" msgstr "Verrolhatge de l’ecran" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:110 msgid "lock screen" msgstr "verrolhar l'ecran" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:115 msgctxt "search-result" msgid "Log Out" msgstr "Tampar la session" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:118 msgid "logout;log out;sign off" msgstr "tampar;session;desconnectar" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:123 msgctxt "search-result" msgid "Suspend" msgstr "Metre en velha" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:126 msgid "suspend;sleep" msgstr "metre en velha;sòm;suspendre" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:131 msgctxt "search-result" msgid "Switch User" msgstr "Cambiar d’utilizaire" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:134 msgid "switch user" msgstr "cambiar d’utilizaire" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:141 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "verrolhatge;orientacion;ecran;rotacion" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:146 msgctxt "search-result" msgid "Take a Screenshot" msgstr "Prendre una captura d'ecran" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:149 msgid "screenshot;screencast;snip;capture;record" msgstr "captura;screenshot;difusion;vidèo;snip;screencast;enregistrar;salvar" #: js/misc/systemActions.js:249 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "Desverrolhar l’orientacion" #: js/misc/systemActions.js:250 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "Verrolhar l’orientacion" #: js/misc/util.js:130 msgid "Command not found" msgstr "Comanda pas trobada" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:170 msgid "Could not parse command:" msgstr "Impossible d'analisar la comanda :" #: js/misc/util.js:178 #, javascript-format msgid "Execution of “%s” failed:" msgstr "Execucion de « %s » impossibla :" #: js/misc/dateUtils.js:69 msgid "Just now" msgstr "Ara meteis" #: js/misc/dateUtils.js:72 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "Fa %d minuta" msgstr[1] "Fa %d minutas" #: js/misc/dateUtils.js:79 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "Fa %d ora" msgstr[1] "Fa %d oras" #: js/misc/dateUtils.js:85 js/ui/dateMenu.js:183 msgid "Yesterday" msgstr "Ièr" #: js/misc/dateUtils.js:88 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "Fa %d jorn" msgstr[1] "Fa %d jorns" #: js/misc/dateUtils.js:95 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "Fa %d setmana" msgstr[1] "Fa %d setmanas" #: js/misc/dateUtils.js:102 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "Fa %d mes" msgstr[1] "Fa %d meses" #: js/misc/dateUtils.js:108 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "Fa %d an" msgstr[1] "Fa %d ans" #. Translators: Time in 24h format #: js/misc/dateUtils.js:155 msgid "%H∶%M" msgstr "%H:%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/dateUtils.js:161 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "Ièr, %H∶%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/dateUtils.js:167 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/dateUtils.js:173 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%e %B, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/dateUtils.js:179 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%e %B de %Y, %H∶%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/dateUtils.js:184 msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/dateUtils.js:190 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "Ièr, %l∶%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/dateUtils.js:196 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/dateUtils.js:202 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%d %B, %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/dateUtils.js:208 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%e %B de %Y, %l∶%M %p" #: js/portalHelper/main.js:98 msgid "Your connection seems to be secure" msgstr "Vòstra connexion semble segura" #: js/portalHelper/main.js:104 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "La connexion a aqueste punt d’accès es pas securizada. Los senhals e las " "autras informacions picatz sus aquesta pagina pòdon èsser interceptats per " "de personas a l'entorn de vos." #: js/portalHelper/main.js:115 msgid "Hotspot Login" msgstr "Identificacion del punt d’accès" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:51 js/ui/inhibitShortcutsDialog.js:92 msgid "Deny" msgstr "Refusar" #: js/ui/accessDialog.js:52 js/ui/inhibitShortcutsDialog.js:101 msgid "Allow" msgstr "Autorizar" #: js/ui/appDisplay.js:1769 msgid "Unnamed Folder" msgstr "Dossièr sens nom" #: js/ui/appFavorites.js:163 #, javascript-format msgid "%s has been pinned to the dash." msgstr "%s es estat apondut al dash." #: js/ui/appFavorites.js:194 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "%s es estat despenjat d’al dash." #: js/ui/appFavorites.js:208 js/ui/main.js:281 msgid "Undo" msgstr "Anullar" #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:49 msgid "Open Windows" msgstr "Fenèstras dobèrtas" #: js/ui/appMenu.js:57 msgid "New Window" msgstr "Novèla fenèstra" #: js/ui/appMenu.js:84 msgid "App Details" msgstr "Detalhs de l’aplicacion" #: js/ui/appMenu.js:100 msgid "Quit" msgstr "Quitar" #: js/ui/appMenu.js:160 js/ui/dash.js:248 msgid "Unpin" msgstr "Despenjar" #: js/ui/appMenu.js:161 msgid "Pin to Dash" msgstr "Penjar al Dash" #: js/ui/appMenu.js:178 msgid "Launch using Integrated Graphics Card" msgstr "Aviar en utilizant la carta grafica integrada" #: js/ui/appMenu.js:179 msgid "Launch using Discrete Graphics Card" msgstr "Aviar en utilizant la carta grafica dedicada" #: js/ui/audioDeviceSelection.js:46 msgid "Select Audio Device" msgstr "Seleccionar lo perfieric àudio" #: js/ui/audioDeviceSelection.js:61 js/ui/status/volume.js:81 msgid "Sound Settings" msgstr "Paramètres del son" #: js/ui/audioDeviceSelection.js:74 msgid "Headphones" msgstr "Casc àudio" #: js/ui/audioDeviceSelection.js:76 msgid "Headset" msgstr "Microcasc" #: js/ui/audioDeviceSelection.js:78 js/ui/status/volume.js:356 msgid "Microphone" msgstr "Microfòn" #: js/ui/backgroundMenu.js:13 msgid "Change Background…" msgstr "Modificar lo rèireplan…" #: js/ui/backgroundMenu.js:15 msgid "Display Settings" msgstr "Afichar los paramètres" #: js/ui/backgroundMenu.js:16 msgid "Settings" msgstr "Paramètres" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:37 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:63 msgctxt "grid sunday" msgid "S" msgstr "D" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:65 msgctxt "grid monday" msgid "M" msgstr "L" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:67 msgctxt "grid tuesday" msgid "T" msgstr "M" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:69 msgctxt "grid wednesday" msgid "W" msgstr "M" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:71 msgctxt "grid thursday" msgid "T" msgstr "J" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:73 msgctxt "grid friday" msgid "F" msgstr "V" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:75 msgctxt "grid saturday" msgid "S" msgstr "S" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:426 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:436 msgid "%OB %Y" msgstr "%OB de %Y" #: js/ui/calendar.js:498 msgid "Previous month" msgstr "Mes precedent" #: js/ui/calendar.js:516 msgid "Next month" msgstr "Mes seguent" #: js/ui/calendar.js:667 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:726 msgid "Week %V" msgstr "Setmana %V" #: js/ui/calendar.js:918 msgid "No Notifications" msgstr "Pas cap de notificacion" #: js/ui/calendar.js:974 msgid "Do Not Disturb" msgstr "Destorbar pas" #: js/ui/calendar.js:995 msgid "Clear" msgstr "Escafar" #: js/ui/calendar.js:999 msgctxt "action" msgid "Clear all notifications" msgstr "Escafar totas las notificacions" #. Translators: %s is an application name #: js/ui/closeDialog.js:42 #, javascript-format msgid "“%s” Is Not Responding" msgstr "« %s » respond pas" #: js/ui/closeDialog.js:43 msgid "" "You may choose to wait a short while for it to continue or force the app to " "quit entirely" msgstr "" "Podètz siá esperar un pauc per contunhar, siá forçar l’aplicacion a quitar " "complètament" #: js/ui/closeDialog.js:71 msgid "Force Quit" msgstr "Forçar a quitar" #: js/ui/closeDialog.js:76 msgid "Wait" msgstr "Esperar" #: js/ui/components/automountManager.js:82 msgid "External drive connected" msgstr "Disc extèrne connectat" #: js/ui/components/automountManager.js:94 msgid "External drive disconnected" msgstr "Disc extèrne desconnectat" #: js/ui/components/automountManager.js:208 msgid "Unable to unlock volume" msgstr "Desblocatge del volum impossible" #: js/ui/components/automountManager.js:209 msgid "The installed udisks version does not support the PIM setting" msgstr "La version installada d’udisks pren pas en carga lo paramètre PIM" #. Translators: %s is the name of a partition on a external drive #: js/ui/components/autorunManager.js:189 #, javascript-format msgid "“%s” connected" msgstr "« %s » connectat" #: js/ui/components/autorunManager.js:190 msgid "Disk can now be used" msgstr "Ara se pòt utilizar lo lector" #: js/ui/components/autorunManager.js:202 #, javascript-format msgid "Open with %s" msgstr "Dobrir amb %s" #: js/ui/components/networkAgent.js:95 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router" msgstr "Autrament podètz quichatz lo boton « WPS » sul router" #: js/ui/components/networkAgent.js:107 js/ui/status/bluetooth.js:245 #: js/ui/status/network.js:360 js/ui/status/network.js:444 msgid "Connect" msgstr "Se connectar" #: js/ui/components/networkAgent.js:222 msgid "Key" msgstr "Clau" #: js/ui/components/networkAgent.js:273 js/ui/components/networkAgent.js:312 msgid "Private key password" msgstr "Senhal de la clau privada" #: js/ui/components/networkAgent.js:306 msgid "Identity" msgstr "Identitat" #: js/ui/components/networkAgent.js:332 msgid "Service" msgstr "Servici" #: js/ui/components/networkAgent.js:370 js/ui/components/networkAgent.js:406 #: js/ui/components/networkAgent.js:743 js/ui/components/networkAgent.js:764 msgid "Authentication required" msgstr "Autentificacion necessària" #: js/ui/components/networkAgent.js:371 js/ui/components/networkAgent.js:744 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network “%s”" msgstr "" "Cal un senhal o una clau de chiframent per accedir a la ret sens fial « %s »" #: js/ui/components/networkAgent.js:375 js/ui/components/networkAgent.js:748 msgid "Wired 802.1X authentication" msgstr "Autentificacion filara 802.1X" #: js/ui/components/networkAgent.js:378 msgid "Network name" msgstr "Nom de la ret" #: js/ui/components/networkAgent.js:386 js/ui/components/networkAgent.js:752 msgid "DSL authentication" msgstr "Autentificacion DSL" #: js/ui/components/networkAgent.js:393 js/ui/components/networkAgent.js:757 msgid "PIN code required" msgstr "Còdi PIN requesit" #: js/ui/components/networkAgent.js:394 js/ui/components/networkAgent.js:758 msgid "PIN code is needed for the mobile broadband device" msgstr "Un còdi PIN es necessari pels telefòns mobils de benda larga" #: js/ui/components/networkAgent.js:396 msgid "PIN" msgstr "PIN" #: js/ui/components/networkAgent.js:407 js/ui/components/networkAgent.js:749 #: js/ui/components/networkAgent.js:753 js/ui/components/networkAgent.js:765 #: js/ui/components/networkAgent.js:769 #, javascript-format msgid "A password is required to connect to “%s”" msgstr "Un senhal es requesit per se connectar a « %s »" #: js/ui/components/networkAgent.js:768 msgid "VPN password" msgstr "Senhal del VPN" #: js/ui/components/polkitAgent.js:44 msgid "Authentication Required" msgstr "Autentificacion necessària" #: js/ui/components/polkitAgent.js:84 msgid "Administrator" msgstr "Administrator" #: js/ui/components/polkitAgent.js:149 msgid "Authenticate" msgstr "S'autentificar" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:263 js/ui/shellMountOperation.js:415 msgid "Sorry, that didn’t work. Please try again." msgstr "Fracàs de l’autentificacion. Ensajar tornamai." #: js/ui/ctrlAltTab.js:23 js/ui/overviewControls.js:404 msgid "Windows" msgstr "Fenèstras" #: js/ui/dash.js:204 js/ui/dash.js:250 msgid "Show Apps" msgstr "Afichar las aplicacions" #. Translators: this is the name of the dock/favorites area on #. the bottom of the overview #: js/ui/dash.js:408 msgid "Dash" msgstr "Dash" # luc: FIXME: how to have a capitalized weekday (start of sentence)? # %a (abbreviated) %A (full weekday) %^A (full weekday all uppercase) # https://bugzilla.gnome.org/show_bug.cgi?id=658686 # # luc: TODO: to test, this possibly explodes on dimanche 25 septembre 2011 # L M M J V S D #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:99 msgid "%B %-d %Y" msgstr "%-e %B de %Y" # luc: FIXME: how to have a capitalized weekday (start of sentence)? # %a (abbreviated) %A (full weekday) %^A (full weekday all uppercase) # https://bugzilla.gnome.org/show_bug.cgi?id=658686 # # luc: TODO: to test, this possibly explodes on dimanche 25 septembre 2011 # L M M J V S D #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:106 msgid "%A %B %e %Y" msgstr "%A %e %B de %Y" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:172 msgctxt "calendar heading" msgid "%B %-d" msgstr "%A %d %B" # luc: FIXME: how to have a capitalized weekday (start of sentence)? # %a (abbreviated) %A (full weekday) %^A (full weekday all uppercase) # https://bugzilla.gnome.org/show_bug.cgi?id=658686 # # luc: TODO: to test, this possibly explodes on dimanche 25 septembre 2011 # L M M J V S D #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:175 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%-e %B de %Y" #: js/ui/dateMenu.js:181 msgid "Today" msgstr "Uèi" #: js/ui/dateMenu.js:185 msgid "Tomorrow" msgstr "Deman" # luc: Trying alternatives: # 123456789|123456789| # Toute la jornada bad # Journée entière bad # Jour entier # La jornada # Journée # # All Day # # lo calendrier (mal) francisé : # http://blog.arkezis.com/wp-content/uploads/2011/04/Captura.png # # See also https://bugzilla.gnome.org/show_bug.cgi?id=658679 # # # # lo calendrier (mal) francisé : # http://blog.arkezis.com/wp-content/uploads/2011/04/Capture.png # # #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:216 msgctxt "event list time" msgid "All Day" msgstr "Tota la jornada" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:238 msgid "%m/%d" msgstr "%d/%m" #: js/ui/dateMenu.js:289 msgid "No Events" msgstr "Pas cap d'eveniment" #: js/ui/dateMenu.js:411 msgid "Add World Clocks…" msgstr "Apondre de relòtges locals…" #: js/ui/dateMenu.js:412 msgid "World Clocks" msgstr "Relòtges locals" #: js/ui/dateMenu.js:702 msgid "Loading…" msgstr "Cargament…" #: js/ui/dateMenu.js:712 msgid "Go Online for Weather Information" msgstr "Cercar las informacions meteorologicas en linha" #: js/ui/dateMenu.js:714 msgid "Weather Information Unavailable" msgstr "Informacions meteorologicas indisponiblas" #: js/ui/dateMenu.js:724 msgid "Weather" msgstr "Metèo" #: js/ui/dateMenu.js:726 msgid "Select Weather Location…" msgstr "Definir un lòc per la metèo…" #: js/ui/endSessionDialog.js:47 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "Tampar la session de %s" #: js/ui/endSessionDialog.js:48 msgctxt "title" msgid "Log Out" msgstr "Tampar la session" #: js/ui/endSessionDialog.js:51 #, javascript-format msgid "%s will be logged out automatically in %d second" msgid_plural "%s will be logged out automatically in %d seconds" msgstr[0] "%s serà desconnectat automaticament d’aquí %d segonda" msgstr[1] "%s serà desconnectat automaticament d’aquí %d segondas" #: js/ui/endSessionDialog.js:57 #, javascript-format msgid "You will be logged out automatically in %d second" msgid_plural "You will be logged out automatically in %d seconds" msgstr[0] "Seretz desconnectat automaticament d’aquí %d segonda" msgstr[1] "Seretz desconnectat automaticament d’aquí %d segondas" #: js/ui/endSessionDialog.js:64 msgctxt "button" msgid "Log Out" msgstr "Tampar la session" #: js/ui/endSessionDialog.js:70 js/ui/status/system.js:174 msgctxt "title" msgid "Power Off" msgstr "Atudar" #: js/ui/endSessionDialog.js:71 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Installar las mesas a jorn e atudar" #: js/ui/endSessionDialog.js:74 #, javascript-format msgid "The system will power off automatically in %d second" msgid_plural "The system will power off automatically in %d seconds" msgstr[0] "Aqueste ordenador s'atudarà automaticament d’aquí %d segonda" msgstr[1] "Aqueste ordenador s'atudarà automaticament d’aquí %d segondas" #: js/ui/endSessionDialog.js:78 js/ui/endSessionDialog.js:97 msgctxt "checkbox" msgid "Install pending software updates" msgstr "Installar las mesas a jorn logicialles en espèra" #: js/ui/endSessionDialog.js:82 msgctxt "button" msgid "Power Off" msgstr "Atudar" #: js/ui/endSessionDialog.js:89 msgctxt "title" msgid "Restart" msgstr "Reaviar" #: js/ui/endSessionDialog.js:90 msgctxt "title" msgid "Install Updates & Restart" msgstr "Installar las mesas a jorn e reaviar" #: js/ui/endSessionDialog.js:93 #, javascript-format msgid "The system will restart automatically in %d second" msgid_plural "The system will restart automatically in %d seconds" msgstr[0] "Aqueste ordenador se reaviarà automaticament d’aquí %d segonda" msgstr[1] "Aqueste ordenador se reaviarà automaticament d’aquí %d segondas" #: js/ui/endSessionDialog.js:101 msgctxt "button" msgid "Restart" msgstr "Reaviar" #: js/ui/endSessionDialog.js:109 msgctxt "title" msgid "Restart & Install Updates" msgstr "Reaviar e installar las mesas a jorn" #: js/ui/endSessionDialog.js:112 #, javascript-format msgid "The system will automatically restart and install updates in %d second" msgid_plural "" "The system will automatically restart and install updates in %d seconds" msgstr[0] "" "Lo sistèma se reaviarà automaticament e installarà las mesas a jorn d’aquí " "%d segonda" msgstr[1] "" "Lo sistèma se reaviarà automaticament e installarà las mesas a jorn d’aquí " "%d segondas" #: js/ui/endSessionDialog.js:119 js/ui/endSessionDialog.js:140 msgctxt "button" msgid "Restart & Install" msgstr "Reamodar e installar" #: js/ui/endSessionDialog.js:121 msgctxt "button" msgid "Install & Power Off" msgstr "Installar e atudar" #: js/ui/endSessionDialog.js:122 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Atudar aprèp l'installacion de las mesas a jorn" #: js/ui/endSessionDialog.js:129 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "Reaviar e installar la mesa a nivèl" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:134 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "%s %s sera installat aprèp la reaviada. L’installacion d’una mesa a nivèl " "pòt prene fòrça temps : verificatz que dispausatz de salvaments e que " "l’ordenador es brancat sul sector." #: js/ui/endSessionDialog.js:283 msgid "Low battery power: please plug in before installing updates" msgstr "" "Batariá febla : mercés de brancar al sector abans d’installar las mesas a " "jorn" #: js/ui/endSessionDialog.js:292 msgid "Some applications are busy or have unsaved work" msgstr "D'unas aplicacions son ocupadas o an de trabalhs pas salvats" #: js/ui/endSessionDialog.js:297 msgid "Other users are logged in" msgstr "D'autres utilizaires son connectats" #: js/ui/endSessionDialog.js:467 msgctxt "button" msgid "Boot Options" msgstr "Opcions d'aviada" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:672 #, javascript-format msgid "%s (remote)" msgstr "%s (distant)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:675 #, javascript-format msgid "%s (console)" msgstr "%s (consòla)" #: js/ui/extensionDownloader.js:280 msgid "Install" msgstr "Installar" #: js/ui/extensionDownloader.js:286 msgid "Install Extension" msgstr "Installar l’extension" #: js/ui/extensionDownloader.js:287 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "Telecargar e installar « %s » a partir de extensions.gnome.org ?" #: js/ui/extensionSystem.js:352 msgid "Extension Updates Available" msgstr "Mesas a jorn extension disponiblas" #: js/ui/extensionSystem.js:353 msgid "Extension updates are ready to be installed" msgstr "Mesas a jorn per l’extension prèstas per installacion" #: js/ui/inhibitShortcutsDialog.js:70 msgid "Allow inhibiting shortcuts" msgstr "Permetre de neutralizar los acorchis" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:73 #, javascript-format msgid "The app %s wants to inhibit shortcuts" msgstr "L’aplicacion %s vòl inibir los acorchis" #: js/ui/inhibitShortcutsDialog.js:74 msgid "An app wants to inhibit shortcuts" msgstr "Una aplicacion vòl inibir los acorchis" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:81 #, javascript-format msgid "You can restore shortcuts by pressing %s" msgstr "Per restablir los acorchis, quichatz sus %s" #: js/ui/kbdA11yDialog.js:34 msgid "Slow Keys Turned On" msgstr "Tòcas lentas activadas" #: js/ui/kbdA11yDialog.js:35 msgid "Slow Keys Turned Off" msgstr "Tòcas lentas desactivadas" #: js/ui/kbdA11yDialog.js:36 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "Venètz de quichar pendent 8 segondas sus la tòca Maj. Aquò es l'acorchi " "d’activacion de las tòcas lentas e afècta lo biais que vòstre clavièr reagís." #: js/ui/kbdA11yDialog.js:42 msgid "Sticky Keys Turned On" msgstr "Tòcas remanentas activadas" #: js/ui/kbdA11yDialog.js:43 msgid "Sticky Keys Turned Off" msgstr "Tòcas remanentas desactivadas" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "Venètz de quichar 5 còps de seguida sus la tòca Maj. Aquò es l'acorchi " "d’activacion de las tòcas remanentas e afècta lo biais que vòstre clavièr " "reagís." #: js/ui/kbdA11yDialog.js:47 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" "Venètz de quichar sus doas tòcas en même temps, o 5 còps de seguida sus la " "tòca Maj. Aquò desactiva la foncion tòcas remanentas e afècta lo biais que " "vòstre clavièr reagís." #: js/ui/kbdA11yDialog.js:57 msgid "Leave On" msgstr "Daissar activat" #: js/ui/kbdA11yDialog.js:57 msgid "Turn On" msgstr "Activar" #: js/ui/kbdA11yDialog.js:67 js/ui/status/network.js:455 msgid "Turn Off" msgstr "Atudar" #: js/ui/kbdA11yDialog.js:67 msgid "Leave Off" msgstr "Daissar atudat" #: js/ui/keyboard.js:180 js/ui/status/keyboard.js:897 msgid "Keyboard Settings" msgstr "Paramètres del clavièr" #: js/ui/lookingGlass.js:727 msgid "No extensions installed" msgstr "Cap d'extension pas installada" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:788 #, javascript-format msgid "%s has not emitted any errors" msgstr "%s a pas emés cap d'error" #: js/ui/lookingGlass.js:794 msgid "Hide Errors" msgstr "Amagar las errors" #: js/ui/lookingGlass.js:798 js/ui/lookingGlass.js:875 msgid "Show Errors" msgstr "Afichar las errors" #: js/ui/lookingGlass.js:807 msgid "Active" msgstr "Actiu" #: js/ui/lookingGlass.js:810 msgid "Inactive" msgstr "Inactiva" #: js/ui/lookingGlass.js:812 msgid "Error" msgstr "Error" #: js/ui/lookingGlass.js:814 msgid "Out of date" msgstr "Perimit" #: js/ui/lookingGlass.js:816 msgid "Downloading" msgstr "Telecargament" #: js/ui/lookingGlass.js:818 msgid "Deactivating" msgstr "Desactivacion" #: js/ui/lookingGlass.js:820 msgid "Activating" msgstr "Activacion" #: js/ui/lookingGlass.js:853 msgid "View Source" msgstr "Afichar la font" #: js/ui/lookingGlass.js:864 msgid "Web Page" msgstr "Pagina Web" #: js/ui/main.js:277 msgid "System was put in unsafe mode" msgstr "Lo sistèma es estat passat en mòde pas segur" #: js/ui/main.js:278 msgid "Apps now have unrestricted access" msgstr "Las aplicacions auràn ara un accès restrenh" #: js/ui/main.js:338 msgid "Logged in as a privileged user" msgstr "Connectat coma utilizaire amb privilègis" #: js/ui/main.js:339 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" "Es pas aconselhat d'aviar una session en qualitat d'utilizaire privilegiat " "per de rasons de seguretat. Vos caldriá, se es possible, de vos connectar " "coma utilizaire normal." #: js/ui/main.js:387 msgid "Screen Lock disabled" msgstr "Verrolhatge d’ecran desactivat" #: js/ui/main.js:388 msgid "Screen Locking requires the GNOME display manager" msgstr "Lo verrolhatge d’ecran requerís lo gestionari d’afichatge GNOME" #. Translators: this is the string displayed in the header when a message #. source doesn't have a name #: js/ui/messageList.js:374 msgid "Unknown App" msgstr "Aplicacion desconeguda" #: js/ui/messageTray.js:326 js/ui/messageTray.js:328 msgid "Notification sound" msgstr "Son de notificacions" #: js/ui/mpris.js:198 msgid "Unknown artist" msgstr "Artista desconegut" #: js/ui/mpris.js:208 msgid "Unknown title" msgstr "Títol desconegut" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:328 msgid "Type to search" msgstr "Picatz per recercar" #: js/ui/overviewControls.js:392 msgid "Apps" msgstr "Aplicacions" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:33 msgid "Overview" msgstr "Vista d'ensemble" #: js/ui/padOsd.js:98 msgid "New shortcut…" msgstr "Novèl acorchi…" #: js/ui/padOsd.js:151 msgid "App defined" msgstr "Aplicacion definida" #: js/ui/padOsd.js:152 msgid "Show on-screen help" msgstr "Afichar l’ajuda a l’ecran" #: js/ui/padOsd.js:153 msgid "Switch monitor" msgstr "Cambiar d’ecran" #: js/ui/padOsd.js:154 msgid "Assign keystroke" msgstr "Associar una tòca" #: js/ui/padOsd.js:223 msgid "Done" msgstr "Acabat" #: js/ui/padOsd.js:726 msgid "Edit…" msgstr "Edicion…" #: js/ui/padOsd.js:773 msgid "None" msgstr "Pas cap" #: js/ui/padOsd.js:844 msgid "Press a button to configure" msgstr "Quichatz sus un boton per lo configurar" #: js/ui/padOsd.js:845 msgid "Press Esc to exit" msgstr "Quichatz sus Escap. per quitar" #: js/ui/padOsd.js:848 msgid "Press any key to exit" msgstr "Quichatz sus una tòca per quitar" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:423 msgid "Activities" msgstr "Activitats" #: js/ui/panel.js:504 msgctxt "System menu in the top bar" msgid "System" msgstr "Sistèma" #: js/ui/panel.js:678 msgid "Top Bar" msgstr "Barra superiora" #: js/ui/quickSettings.js:188 msgid "Open menu" msgstr "Dobrir lo menú" #: js/ui/runDialog.js:61 msgid "Run a Command" msgstr "Executar una comanda" #: js/ui/runDialog.js:76 msgid "Press ESC to close" msgstr "Quichatz sus Escap. per quitar" #: js/ui/runDialog.js:241 msgid "Restart is not available on Wayland" msgstr "La reaviada es pas disponibla sus Wayland" #: js/ui/runDialog.js:246 msgid "Restarting…" msgstr "Reaviada en cors…" #: js/ui/screenShield.js:233 msgid "GNOME needs to lock the screen" msgstr "GNOME a besonh de verrolhar l'ecran" #: js/ui/screenShield.js:274 js/ui/screenShield.js:667 msgid "Unable to lock" msgstr "Impossible de verrolhar" #: js/ui/screenShield.js:275 js/ui/screenShield.js:668 msgid "Lock was blocked by an app" msgstr "Lo verrolhatge es estat blocat per una aplicacion" #: js/ui/screenshot.js:1252 msgid "Selection" msgstr "Seleccion" #: js/ui/screenshot.js:1262 msgid "Area Selection" msgstr "Seleccion de la zòna" #: js/ui/screenshot.js:1267 msgid "Screen" msgstr "Ecran" #: js/ui/screenshot.js:1277 msgid "Screen Selection" msgstr "Seleccion de l’ecran" #: js/ui/screenshot.js:1282 msgid "Window" msgstr "Fenèstra" #: js/ui/screenshot.js:1292 msgid "Window Selection" msgstr "Seleccion de fenèstra" #. Translators: entry in the window right click menu. #: js/ui/screenshot.js:1317 js/ui/status/system.js:111 js/ui/windowMenu.js:28 msgid "Take Screenshot" msgstr "Prendre captura d'ecran" #: js/ui/screenshot.js:1333 msgid "Record Screen" msgstr "Enregistrar l’ecran" #. Translators: since this string refers to an action, #. it needs to be phrased as a verb. #: js/ui/screenshot.js:1350 msgid "Capture" msgstr "Capturar" #: js/ui/screenshot.js:1372 msgid "Show Pointer" msgstr "Inclure lo puntador" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1996 msgid "Screencasts" msgstr "Capturas vidèo" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast From 07-17-2013 10:00:46 PM" #: js/ui/screenshot.js:2001 #, no-c-format msgid "Screencast From %d %t" msgstr "Captura vidèo del %d a %t" #. Translators: notification title. #: js/ui/screenshot.js:2047 msgid "Screencast recorded" msgstr "Captura vidèo salvada" #. Translators: notification title. #: js/ui/screenshot.js:2060 msgid "Screencast failed to start" msgstr "La difusion de l’ecran a pas pogut aviar" #. Translators: notification title. #: js/ui/screenshot.js:2066 msgid "Screencast ended: Out of disk space" msgstr "La difusion de l’ecran s'es arrestada : pas mai d’espaci liure" #. We can encourage user to try again on service crashes since the #. recorder will auto-blocklist the pipeline that crashed. #. Translators: notification title. #: js/ui/screenshot.js:2072 msgid "Screencast ended unexpectedly, please try again" msgstr "" "La difusion de l’ecran s'es arrestada d’un biais imprevist, volgatz tornar " "ensajar" #. Translators: notification title. #: js/ui/screenshot.js:2075 msgid "Screencast ended unexpectedly" msgstr "La difusion de l’ecran s'es arrestada d’un biais imprevist" #. Translators: notification source name. #: js/ui/screenshot.js:2085 js/ui/screenshot.js:2327 msgid "Screenshot" msgstr "Captura d'ecran" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:2092 msgid "Click here to view the video." msgstr "Clicatz aicí per veire la vidèo." #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:2100 js/ui/screenshot.js:2343 msgid "Show in Files" msgstr "Mostrar dins Fichièrs" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2287 #, javascript-format msgid "Screenshot From %s" msgstr "Captura d'ecran del %s" #. Translators: notification title. #: js/ui/screenshot.js:2333 msgid "Screenshot captured" msgstr "Captura d'ecran efectuada" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2335 msgid "You can paste the image from the clipboard." msgstr "Podètz pegar l’imatge del quichapapièrs estant." #: js/ui/screenshot.js:2391 js/ui/screenshot.js:2555 msgid "Screenshot taken" msgstr "Captura d'ecran efectuada" #: js/ui/search.js:829 msgid "Searching…" msgstr "Recèrca en cors…" #: js/ui/search.js:831 msgid "No results" msgstr "Cap de resultat" #: js/ui/search.js:962 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "%d mai" msgstr[1] "%d mai" #: js/ui/searchController.js:87 #: subprojects/extensions-app/data/ui/extensions-window.ui:73 msgid "Search" msgstr "Recèrca" #: js/ui/shellEntry.js:21 msgid "Copy" msgstr "Copiar" #: js/ui/shellEntry.js:26 msgid "Paste" msgstr "Pegar" #: js/ui/shellEntry.js:78 msgid "Show Text" msgstr "Afichar lo tèxte" #: js/ui/shellEntry.js:80 msgid "Hide Text" msgstr "Amagar lo tèxte" #: js/ui/shellEntry.js:174 msgid "Caps lock is on" msgstr "Verr. maj. es activat" #: js/ui/shellMountOperation.js:286 msgid "Hidden Volume" msgstr "Volum amagat" #: js/ui/shellMountOperation.js:289 msgid "Windows System Volume" msgstr "Volum sistèma Windows" #: js/ui/shellMountOperation.js:292 msgid "Uses Keyfiles" msgstr "Utiliza de fichièrs de claus" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:300 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead" msgstr "" "Per desverrolhar un volum qu’utiliza los fichièrs de clau, emplegatz " "l’utilitari %s puslèu" #: js/ui/shellMountOperation.js:304 msgid "" "You need an external utility like Disks to unlock a volume that uses " "keyfiles" msgstr "" "Vos cal un utilitari extèrn coma Disques per desverrolhar qu’utiliza " "de fichièrs de clau" #: js/ui/shellMountOperation.js:312 msgid "PIM Number" msgstr "Numèro PIM" #: js/ui/shellMountOperation.js:371 msgid "Remember Password" msgstr "Se remembrar del senhal" #: js/ui/shellMountOperation.js:386 msgid "Unlock" msgstr "Desverrolhar" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:400 #, javascript-format msgid "Open %s" msgstr "Dobrir %s" #: js/ui/shellMountOperation.js:436 msgid "The PIM must be a number or empty" msgstr "Lo numèro PIM deu èsser un nombre o èsser void" #: js/ui/status/accessibility.js:34 msgid "Accessibility" msgstr "Accessibilitat" #: js/ui/status/accessibility.js:44 msgid "High Contrast" msgstr "Contraste elevat" #: js/ui/status/accessibility.js:47 msgid "Zoom" msgstr "Zoom" #: js/ui/status/accessibility.js:54 msgid "Screen Reader" msgstr "Lector d'ecran" #: js/ui/status/accessibility.js:58 msgid "Screen Keyboard" msgstr "Clavièr visual" #: js/ui/status/accessibility.js:62 msgid "Visual Alerts" msgstr "Alèrtas visualas" #: js/ui/status/accessibility.js:66 msgid "Sticky Keys" msgstr "Tòcas remanentas" #: js/ui/status/accessibility.js:70 msgid "Slow Keys" msgstr "Tòcas lentas" #: js/ui/status/accessibility.js:74 msgid "Bounce Keys" msgstr "Rebombs de tòcas" #: js/ui/status/accessibility.js:78 msgid "Mouse Keys" msgstr "Tòcas de la mirga" #: js/ui/status/accessibility.js:83 msgid "Accessibility Settings" msgstr "Paramètres d’accessibilitat" #: js/ui/status/accessibility.js:140 msgid "Large Text" msgstr "Grand tèxte" #: js/ui/status/autoRotate.js:14 msgid "Auto Rotate" msgstr "Rotacion auto" #: js/ui/status/backgroundApps.js:156 msgctxt "title" msgid "Background Apps" msgstr "Aplicacions en rèireplan" #: js/ui/status/backgroundApps.js:171 msgid "Apps known to be running without a window" msgstr "Aplicacions conegudas per s’executar sens cap de fenèstra" #: js/ui/status/backgroundApps.js:182 msgid "App Settings" msgstr "Paramètres d’aplicacion" #: js/ui/status/backgroundApps.js:239 msgid "No Background Apps" msgstr "Cap d’aplicacion en rèireplan" #: js/ui/status/backgroundApps.js:241 #, javascript-format msgid "%d Background App" msgid_plural "%d Background Apps" msgstr[0] "%d aplicacion en rèireplan" msgstr[1] "%d aplicacions en rèireplan" #: js/ui/status/backlight.js:39 msgid "Keyboard Brightness" msgstr "Luminositat del clavièr" #: js/ui/status/backlight.js:79 msgid "Off" msgstr "Desactivat" #: js/ui/status/backlight.js:80 msgid "Low" msgstr "Feble" #: js/ui/status/backlight.js:81 msgid "High" msgstr "Elevat" #: js/ui/status/backlight.js:147 js/ui/status/keyboard.js:879 msgid "Keyboard" msgstr "Clavièr" #: js/ui/status/bluetooth.js:245 js/ui/status/network.js:360 msgid "Disconnect" msgstr "Desconnectar" #: js/ui/status/bluetooth.js:262 js/ui/status/bluetooth.js:264 msgid "Bluetooth" msgstr "Bluetooth" #: js/ui/status/bluetooth.js:287 js/ui/status/network.js:1900 msgid "Bluetooth Settings" msgstr "Paramètres Bluetooth" #: js/ui/status/bluetooth.js:334 msgid "No available or connected devices" msgstr "Cap de periferic pas disponible o connectat" #: js/ui/status/bluetooth.js:335 msgid "Turn on Bluetooth to connect to devices" msgstr "Activar lo Bluetooth per connectar de periferics" #. Translators: This is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:389 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d connectat" msgstr[1] "%d connectats" #: js/ui/status/brightness.js:32 msgid "Brightness" msgstr "Luminositat" #: js/ui/status/darkMode.js:12 msgid "Dark Style" msgstr "Estil escur" #: js/ui/status/dwellClick.js:15 msgid "Single Click" msgstr "Clic simple" #: js/ui/status/dwellClick.js:20 msgid "Double Click" msgstr "Clic doble" #: js/ui/status/dwellClick.js:25 msgid "Drag" msgstr "Tirar" #: js/ui/status/dwellClick.js:30 msgid "Secondary Click" msgstr "Clic segondari" #: js/ui/status/dwellClick.js:39 msgid "Dwell Click" msgstr "Clic per manten" #: js/ui/status/keyboard.js:896 msgid "Show Keyboard Layout" msgstr "Afichar la disposicion del clavièr" #: js/ui/status/location.js:337 msgid "Allow location access" msgstr "Autorizar l’accès a la localizacion" #. Translators: %s is an application name #: js/ui/status/location.js:339 #, javascript-format msgid "The app %s wants to access your location" msgstr "L’aplicacion %s vòl accedir a vòstra localizacion" #: js/ui/status/location.js:349 msgid "Location access can be changed at any time from the privacy settings" msgstr "" "Las règlas d’accès a la localizacion pòdon a tot moment èsser modificadas " "dins los paramètres de confidencialitat" #: js/ui/status/location.js:357 msgid "Deny Access" msgstr "Refusar l'accès" #: js/ui/status/location.js:362 msgid "Grant Access" msgstr "Acordar l'accès" #: js/ui/status/network.js:62 msgid "" msgstr "" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:354 #, javascript-format msgid "Disconnect %s" msgstr "Desconnectar %s" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:356 #, javascript-format msgid "Connect to %s" msgstr "Se connectar a %s" #: js/ui/status/network.js:1050 msgid "Secure" msgstr "Segur" #: js/ui/status/network.js:1050 msgid "Not secure" msgstr "Pas segur" #: js/ui/status/network.js:1051 #, javascript-format msgid "Signal strength %s%%" msgstr "Fòrça del senhal %s%%" #. translators: The first placeholder is the network name, the second and indication whether it is secure, and the last the signal strength indication #: js/ui/status/network.js:1053 #, javascript-format msgid "%s, %s, %s" msgstr "%s, %s, %s" #. Translators: %s is a network identifier #: js/ui/status/network.js:1155 #, javascript-format msgid "%s Hotspot" msgstr "Punt d’accès %s" #: js/ui/status/network.js:1426 #, javascript-format msgid "%d connected" msgid_plural "%d connected" msgstr[0] "%d connectat" msgstr[1] "%d connectats" #: js/ui/status/network.js:1524 js/ui/status/network.js:1540 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1525 msgid "VPN Settings" msgstr "Paramètres VPN" #: js/ui/status/network.js:1785 msgid "Wi–Fi" msgstr "Wi–Fi" #: js/ui/status/network.js:1787 msgid "All Networks" msgstr "Totas las rets" #: js/ui/status/network.js:1884 msgid "Wired Connections" msgstr "Connexions filaras" #: js/ui/status/network.js:1885 msgid "Wired Settings" msgstr "Paramètres de la connexion filara" #: js/ui/status/network.js:1899 msgid "Bluetooth Tethers" msgstr "Partiment de connexion Bluetooth" #. Translators: "Tether" from "Bluetooth Tether" #: js/ui/status/network.js:1906 msgid "Tether" msgstr "Partatge de connexion" #: js/ui/status/network.js:1919 msgid "Mobile Connections" msgstr "Connexions mobil" #: js/ui/status/network.js:1921 msgid "Mobile Broadband Settings" msgstr "Paramètres del telefòn mobil de benda larga" #. Translators: "Mobile" from "Mobile Broadband" #: js/ui/status/network.js:1930 msgid "Mobile" msgstr "Mobil" #: js/ui/status/network.js:1964 msgid "Sign Into Wi–Fi Network" msgstr "S’inscriure sul ret Wi–Fi" #: js/ui/status/network.js:2151 msgid "Connection failed" msgstr "Fracàs de connexion" #: js/ui/status/network.js:2152 msgid "Activation of network connection failed" msgstr "L'activacion de la connexion a la ret a fracassat" #: js/ui/status/nightLight.js:19 msgid "Night Light" msgstr "Lum nuechenc" #: js/ui/status/powerProfiles.js:19 msgctxt "Power profile" msgid "Performance" msgstr "Performança" #: js/ui/status/powerProfiles.js:24 msgctxt "Power profile" msgid "Balanced" msgstr "Equilibri" #: js/ui/status/powerProfiles.js:29 msgctxt "Power profile" msgid "Power Saver" msgstr "Estalvi d'energia" #: js/ui/status/powerProfiles.js:39 js/ui/status/powerProfiles.js:69 msgid "Power Mode" msgstr "Mòde energetic" #: js/ui/status/powerProfiles.js:71 msgid "Power Settings" msgstr "Paramètres de gestion de l'energia" #: js/ui/status/remoteAccess.js:74 msgid "Stop Screencast" msgstr "Arrestar la difusion" #: js/ui/status/remoteAccess.js:144 msgid "Stop Screen Sharing" msgstr "Arrestar lo partiment d’ecran" #: js/ui/status/rfkill.js:99 msgid "Airplane Mode" msgstr "Mòde avion" #: js/ui/status/system.js:168 msgid "Power Off Menu" msgstr "Menú d’extincion" #: js/ui/status/system.js:176 msgid "Suspend" msgstr "Metre en velha" #: js/ui/status/system.js:181 msgid "Restart…" msgstr "Reaviar…" #: js/ui/status/system.js:186 msgid "Power Off…" msgstr "Atudar…" #: js/ui/status/system.js:193 #: subprojects/extensions-app/data/ui/extensions-window.ui:124 msgid "Log Out…" msgstr "Tampar la session…" #: js/ui/status/system.js:198 msgid "Switch User…" msgstr "Cambiar d’utilizaire…" #: js/ui/status/system.js:242 msgctxt "action" msgid "Lock Screen" msgstr "Verrolhar l'ecran" #: js/ui/status/thunderbolt.js:308 msgid "Unknown Thunderbolt device" msgstr "Periferic Thunderbolt desconegut" #: js/ui/status/thunderbolt.js:309 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" "Un novèl periferic es estat detectat pendent vòstra abséncia. Desbrancatz-lo " "e rebrancatz-lo abans de començar de l’utilizar." #: js/ui/status/thunderbolt.js:312 msgid "Unauthorized Thunderbolt device" msgstr "Periferic Thunderbolt pas autorizat" #: js/ui/status/thunderbolt.js:313 msgid "" "New device has been detected and needs to be authorized by an administrator" msgstr "" "Un aparelh novèl es estat detectat e deu d’èsser autorizat per un " "administrator" #: js/ui/status/thunderbolt.js:319 msgid "Thunderbolt authorization error" msgstr "Error d’autorizacion Thunderbolt" #: js/ui/status/thunderbolt.js:320 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "Impossible d’autorizar lo periferic Thunderbolt : %s" #: js/ui/status/volume.js:218 msgid "Volume changed" msgstr "Volum modificat" #: js/ui/status/volume.js:231 msgid "Unmute" msgstr "Pas mut" #: js/ui/status/volume.js:231 msgid "Mute" msgstr "Mut" #: js/ui/status/volume.js:286 msgid "Volume" msgstr "Volum" #: js/ui/status/volume.js:302 msgid "Sound Output" msgstr "Sortida son" #: js/ui/status/volume.js:374 msgid "Sound Input" msgstr "Entrada son" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:20 msgid "Mirror" msgstr "Clonar" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:29 msgid "Join Displays" msgstr "Jónher ecrans" #. Translators: this is for using only external displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:39 msgid "External Only" msgstr "Pas que l’extèrne" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:47 msgid "Built-in Only" msgstr "Pas que l’integrat" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:378 msgid "%A %B %-d" msgstr "%A %d %B" #: js/ui/unlockDialog.js:384 msgid "Swipe up to unlock" msgstr "Far lisar ennaut per desverrolhar" #: js/ui/unlockDialog.js:385 msgid "Click or press a key to unlock" msgstr "Clicatz o quichatz una tòca per desverrolhar" #: js/ui/unlockDialog.js:568 msgid "Unlock Window" msgstr "Fenèstra de desverrolhatge" #: js/ui/unlockDialog.js:577 msgid "Log in as another user" msgstr "Se connectar en tant qu'un autre utilizaire" #: js/ui/welcomeDialog.js:47 #, javascript-format msgid "GNOME %s" msgstr "GNOME %s" #: js/ui/welcomeDialog.js:51 #, javascript-format msgid "Welcome to %s" msgstr "Benvenguda a %s" #: js/ui/welcomeDialog.js:52 msgid "If you want to learn your way around, check out the tour" msgstr "Se volètz vos assabentar, anatz far la visita" #: js/ui/welcomeDialog.js:61 msgid "Skip" msgstr "Passar" #: js/ui/welcomeDialog.js:66 msgid "Take Tour" msgstr "Far la visita" #: js/ui/windowAttentionHandler.js:18 #, javascript-format msgid "“%s” is ready" msgstr "« %s » es prèst" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:68 msgid "Keep these display settings?" msgstr "Servar aquestes paramètres d’afichatge ?" #: js/ui/windowManager.js:78 msgid "Revert Settings" msgstr "Restablir los paramètres" #: js/ui/windowManager.js:83 msgid "Keep Changes" msgstr "Conservar las modificacions" #: js/ui/windowManager.js:103 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "Los paramètres seràn restablits dins %d segonda" msgstr[1] "Los paramètres seràn restablits dins %d segondas" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:500 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:40 msgid "Hide" msgstr "Amagar" #: js/ui/windowMenu.js:47 msgid "Restore" msgstr "Restablir" #: js/ui/windowMenu.js:51 msgid "Maximize" msgstr "Maximizar" #: js/ui/windowMenu.js:58 msgid "Move" msgstr "Desplaçar" #: js/ui/windowMenu.js:78 msgid "Resize" msgstr "Redimensionar" #: js/ui/windowMenu.js:98 msgid "Always on Top" msgstr "Totjorn en naut" #: js/ui/windowMenu.js:117 msgid "Always on Visible Workspace" msgstr "Totjorn sus l'espaci de trabalh visible" #: js/ui/windowMenu.js:131 msgid "Move to Workspace Left" msgstr "Desplaçar cap a l'espaci de trabalh d'esquèrra" #: js/ui/windowMenu.js:137 msgid "Move to Workspace Right" msgstr "Desplaçar cap a l'espaci de trabalh a dreita" #: js/ui/windowMenu.js:143 msgid "Move to Workspace Up" msgstr "Desplaçar cap a l'espaci de trabalh superior" #: js/ui/windowMenu.js:149 msgid "Move to Workspace Down" msgstr "Desplaçar cap a l'espaci de trabalh inferior" #: js/ui/windowMenu.js:167 msgid "Move to Monitor Up" msgstr "Desplaçar cap a l'ecran superior" #: js/ui/windowMenu.js:176 msgid "Move to Monitor Down" msgstr "Desplaçar cap a l'ecran inferior" #: js/ui/windowMenu.js:185 msgid "Move to Monitor Left" msgstr "Desplaçar cap a l'ecran d'esquèrra" #: js/ui/windowMenu.js:194 msgid "Move to Monitor Right" msgstr "Desplaçar cap a l'ecran de dreita" #: js/ui/windowMenu.js:202 msgid "Close" msgstr "Tampar" #: src/main.c:529 subprojects/extensions-tool/src/main.c:336 msgid "Print version" msgstr "Aficha la version" #: src/main.c:535 msgid "Mode used by GDM for login screen" msgstr "Mòde utilizat per GDM per l'ecran de connexion" #: src/main.c:541 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "Utilizar un mòde particular, per ex. « gdm » per l’ecran de connexion" #: src/main.c:547 msgid "List possible modes" msgstr "Far la lista dels mòdes possibles" #: src/main.c:553 msgid "Force animations to be enabled" msgstr "Forçar las animacions d’èsser activadas" #: src/shell-app.c:252 msgctxt "program" msgid "Unknown" msgstr "Desconegut" #: src/shell-app.c:503 #, c-format msgid "Failed to launch “%s”" msgstr "Impossible d'aviar « %s »" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match" msgstr "Los senhals correspondon pas" #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "Lo senhal pòt pas èsser void" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "La fenèstra d'autentificacion es estada escartada per l'utilizaire" #: src/st/st-icon-theme.c:1865 #, c-format msgid "Icon '%s' not present in theme %s" msgstr "L'icòna « %s » es pas presenta dins lo tèma %s" #: src/st/st-icon-theme.c:3454 src/st/st-icon-theme.c:3757 msgid "Failed to load icon" msgstr "Impossible de cargar l'icòna" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 msgid "Manage your GNOME Extensions" msgstr "Gerir vòstras extensions GNOME" #. developer_name tag deprecated with Appstream 1.0 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:19 msgid "The GNOME Project" msgstr "Lo projècte GNOME" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:51 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" "GNOME Extensions gerís las mesas a jorn d'extensions, lo parametratge de la " "preferéncias d'extensions e la supression o desactivacion de las extensions " "pas volguda." #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:64 msgid "Main Window" msgstr "Fenèstra principala" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:68 msgid "Available Updates" msgstr "Mesas a jorn disponiblas" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:72 msgid "Search View" msgstr "Vista recèrca" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "Configurar las extensions GNOME Shell" #: subprojects/extensions-app/js/extensionManager.js:237 #, javascript-format msgid "" "The installed version of this extension (%s) is incompatible with the " "current version of GNOME (%s). The extension has been disabled." msgstr "" "La version installada d’aquesta extension (%s) es incompatibla amb la " "version actuala de GNOME (%s). Se’s desactivat l’extension." #: subprojects/extensions-app/js/extensionManager.js:238 #, javascript-format msgid "" "The installed version of this extension is incompatible with the current " "version of GNOME (%s). The extension has been disabled." msgstr "" "La version installada d’aquesta extension es incompatibla amb la version " "actuala de GNOME (%s). Se’s desactivat l’extension." #: subprojects/extensions-app/js/extensionManager.js:242 msgid "" "An error has occurred in this extension. This could cause issues elsewhere " "in the system. It is recommended to turn the extension off until the error " "is resolved." msgstr "" "Una error se’s producha dins aquesta extension. Aquò pòt causar de problèmas " "endacòm mai dins lo sistèma. Es recomandat d’atudar l’extension dusca que " "l’error siá corregida." #. translators: Details for an extension error #: subprojects/extensions-app/js/extensionManager.js:248 msgid "Error details:" msgstr "Detalhs de l’error :" #: subprojects/extensions-app/js/extensionRow.js:82 #, javascript-format msgid "Version %s" msgstr "Version %s" #: subprojects/extensions-app/js/extensionsWindow.js:113 #, javascript-format msgid "Remove “%s”?" msgstr "Suprimir « %s » ?" #: subprojects/extensions-app/js/extensionsWindow.js:114 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "" "Se suprimissètz l'extension, vos calrà la tornar telecargar se la volètz " "tornar activar" #: subprojects/extensions-app/js/extensionsWindow.js:117 msgid "_Cancel" msgstr "_Anullar" #: subprojects/extensions-app/js/extensionsWindow.js:118 msgid "_Remove" msgstr "_Suprimir" #: subprojects/extensions-app/js/extensionsWindow.js:158 msgid "translator-credits" msgstr "" "Cédric Valmary (totenoc.eu), \n" "Quentin PAGÈS" #: subprojects/extensions-app/js/extensionsWindow.js:203 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "%d extension serà mesa a jorn a la connexion venenta." msgstr[1] "%d extensions seràn mesas a jorn a la connexion venenta." #: subprojects/extensions-app/data/ui/extension-row.ui:22 msgid "Error Details" msgstr "Detalhs de l’error" #: subprojects/extensions-app/data/ui/extension-row.ui:62 msgid "Updates Details" msgstr "Detalhs de la mesa a jorn" #: subprojects/extensions-app/data/ui/extension-row.ui:72 msgid "" "A new version of this extension is ready and will be loaded on next login." msgstr "" "Una version novèla d’aquesta extension es prèsta e cargada a la connexion " "venenta." #: subprojects/extensions-app/data/ui/extension-row.ui:104 msgid "Extension Details" msgstr "Detalhs de l’extension" #: subprojects/extensions-app/data/ui/extension-row.ui:192 msgid "_Website" msgstr "Site _Web" #: subprojects/extensions-app/data/ui/extension-row.ui:219 msgid "_Settings" msgstr "_Paramètres" #: subprojects/extensions-app/data/ui/extension-row.ui:246 msgid "_Remove…" msgstr "_Suprimir…" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Keyboard Shortcuts" msgstr "Acorchis de clavièr" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "A prepaus de las extensions" #: subprojects/extensions-app/data/ui/extensions-window.ui:64 msgid "Main Menu" msgstr "Menú principal" #: subprojects/extensions-app/data/ui/extensions-window.ui:106 msgid "Search extensions" msgstr "Cercar d’extensions" #: subprojects/extensions-app/data/ui/extensions-window.ui:134 msgid "_Extensions" msgstr "_Extensions" #: subprojects/extensions-app/data/ui/extensions-window.ui:139 msgid "More Information" msgstr "Mai d'informacions" #: subprojects/extensions-app/data/ui/extensions-window.ui:151 msgid "" "Extensions can cause performance and stability issues. It is recommended to " "disable all extensions if you experience problems with your system." msgstr "" "Las extensions pòdon causar de problèmas de performanças e d’estabilitat. Es " "recomandat de eesactivar totas las extensions se trobatz de problèmas ligats " "al sistèma." #: subprojects/extensions-app/data/ui/extensions-window.ui:178 msgid "User Extensions" msgstr "Extensions utilizaire" #: subprojects/extensions-app/data/ui/extensions-window.ui:198 msgid "System Extensions" msgstr "Extensions sistèma" #: subprojects/extensions-app/data/ui/extensions-window.ui:233 msgid "Search Results" msgstr "Resultats de la recèrca" #: subprojects/extensions-app/data/ui/extensions-window.ui:252 msgid "No Results Found" msgstr "Cap de resultat pas trobat" #: subprojects/extensions-app/data/ui/extensions-window.ui:253 msgid "Try a different search" msgstr "Ensajatz una autra recèrca" #: subprojects/extensions-app/data/ui/extensions-window.ui:264 msgid "No Installed Extensions" msgstr "Cap d’extension pas installada" #: subprojects/extensions-app/data/ui/extensions-window.ui:265 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" "Per trobar e apondre d’extensions, consultatz extensions.gnome.org." #: subprojects/extensions-app/data/ui/extensions-window.ui:276 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" "O planhèm, es pas possible d’obténer la lista de las extensions installadas. " "Verificatz que sètz ben connectat a GNOME e tornatz ensajar." #: subprojects/extensions-app/data/ui/help-overlay.ui:9 msgctxt "shortcut window" msgid "General" msgstr "General" #: subprojects/extensions-app/data/ui/help-overlay.ui:12 msgctxt "shortcut window" msgid "Open Menu" msgstr "Dobrir lo menú" #: subprojects/extensions-app/data/ui/help-overlay.ui:18 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Alternar la recèrca" #: subprojects/extensions-app/data/ui/help-overlay.ui:24 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Afichar los acorchis" #: subprojects/extensions-app/data/ui/help-overlay.ui:30 msgctxt "shortcut window" msgid "Quit" msgstr "Quitar" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:284 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "La nòva extension es estada corrèctament creada dins %s.\n" #: subprojects/extensions-tool/src/command-create.c:376 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" "Lo nom deu èsser plan cort (l'idèal lo nom seriá descriptiu).\n" "Per exemple : %s" #: subprojects/extensions-tool/src/command-create.c:382 #: subprojects/extensions-tool/src/main.c:243 msgid "Name" msgstr "Nom" #: subprojects/extensions-tool/src/command-create.c:396 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" "La descripcion son una sola frasa explicativa per dire çò que fa vòstra " "extension.\n" "Per exemple : %s" #: subprojects/extensions-tool/src/command-create.c:402 #: subprojects/extensions-tool/src/main.c:246 msgid "Description" msgstr "Descripcion" #: subprojects/extensions-tool/src/command-create.c:416 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" "L’UUID es un identificant globalament unica per vòstra extension.\n" "Son format deu correspondre al format d’una adreça electronica " "(clicperfocus@joanmiquel.com)\n" #: subprojects/extensions-tool/src/command-create.c:443 msgid "Choose one of the available templates:\n" msgstr "Causissètz un dels modèls disponibles :\n" #: subprojects/extensions-tool/src/command-create.c:457 msgid "Template" msgstr "Modèl" #: subprojects/extensions-tool/src/command-create.c:515 msgid "The unique identifier of the new extension" msgstr "L’identificant unic de la novèla extension" #: subprojects/extensions-tool/src/command-create.c:518 msgid "NAME" msgstr "NOM" #: subprojects/extensions-tool/src/command-create.c:519 msgid "The user-visible name of the new extension" msgstr "Lo nom d’extension visible per l’utilizaire" #: subprojects/extensions-tool/src/command-create.c:521 msgid "DESCRIPTION" msgstr "DESCRIPCION" #: subprojects/extensions-tool/src/command-create.c:523 msgid "A short description of what the extension does" msgstr "Una descripcion corta de çò que fa l’extension" #: subprojects/extensions-tool/src/command-create.c:525 #: subprojects/extensions-tool/src/command-pack.c:455 msgid "DOMAIN" msgstr "DOMENI" #: subprojects/extensions-tool/src/command-create.c:527 msgid "The gettext domain used by the extension" msgstr "Lo domeni gettext d’utilizaire per l’extension" #: subprojects/extensions-tool/src/command-create.c:529 #: subprojects/extensions-tool/src/command-pack.c:448 msgid "SCHEMA" msgstr "ESQUÈMA" #: subprojects/extensions-tool/src/command-create.c:531 msgid "The GSettings schema used by the extension" msgstr "L’esquèma GStettings d’utilizar per l’extension" #: subprojects/extensions-tool/src/command-create.c:534 msgid "TEMPLATE" msgstr "MODÈL" #: subprojects/extensions-tool/src/command-create.c:535 msgid "The template to use for the new extension" msgstr "Lo modèl d’utilizar per l’extension novèla" #: subprojects/extensions-tool/src/command-create.c:538 msgid "Include prefs.js template" msgstr "Inclure lo modèl prefs.js" #: subprojects/extensions-tool/src/command-create.c:544 msgid "Enter extension information interactively" msgstr "Picatz d’un biais interactiu las informacions de l’extension" #: subprojects/extensions-tool/src/command-create.c:552 msgid "Create a new extension" msgstr "Crear una extension novèla" #: subprojects/extensions-tool/src/command-create.c:570 #: subprojects/extensions-tool/src/command-list.c:190 msgid "Unknown arguments" msgstr "Argument desconegut" #: subprojects/extensions-tool/src/command-create.c:595 msgid "UUID, name and description are required" msgstr "Los camps UUIS, nom e descripcion son obligatòris" #: subprojects/extensions-tool/src/command-disable.c:62 #: subprojects/extensions-tool/src/command-enable.c:62 #, c-format msgid "Extension “%s” does not exist\n" msgstr "L’extension « %s » existís pas\n" #: subprojects/extensions-tool/src/command-disable.c:98 msgid "Disable an extension" msgstr "Desactivar una extension" #: subprojects/extensions-tool/src/command-disable.c:116 #: subprojects/extensions-tool/src/command-enable.c:116 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "Cap d’UUID pas indicat" #: subprojects/extensions-tool/src/command-disable.c:121 #: subprojects/extensions-tool/src/command-enable.c:121 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "Mai d’un UUID indicat" #: subprojects/extensions-tool/src/command-enable.c:98 msgid "Enable an extension" msgstr "Activar una extension" #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:66 #: subprojects/extensions-tool/src/main.c:150 msgid "Failed to connect to GNOME Shell\n" msgstr "Error en se connectant a Shell de GNOME\n" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:159 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "L’extension « %s » existís pas\n" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "Mostrar las informacions de las extensions" #: subprojects/extensions-tool/src/command-install.c:190 msgid "Overwrite an existing extension" msgstr "Remplaçar una extension existenta" #: subprojects/extensions-tool/src/command-install.c:192 msgid "EXTENSION_BUNDLE" msgstr "EXTENSION_EMPAQUETADA" #: subprojects/extensions-tool/src/command-install.c:201 msgid "Install an extension bundle" msgstr "Installar una extension empaquetada" #: subprojects/extensions-tool/src/command-install.c:219 msgid "No extension bundle specified" msgstr "Cap d'extension empaquetadas especificadas" #: subprojects/extensions-tool/src/command-install.c:225 msgid "More than one extension bundle specified" msgstr "Mai d’una extension empaquetada especificada" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show user-installed extensions" msgstr "Afichar las extensions installadas per l’utilizaire" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show system-installed extensions" msgstr "Mostrar las extension installada pel sistèma" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Show enabled extensions" msgstr "Mostrar las extensions activas" #: subprojects/extensions-tool/src/command-list.c:149 msgid "Show disabled extensions" msgstr "Mostrar las extensions desactivadas" #: subprojects/extensions-tool/src/command-list.c:152 msgid "Show extensions in active state" msgstr "Mostrar las extensions en estat actiu" #: subprojects/extensions-tool/src/command-list.c:155 msgid "Show extensions in inactive state" msgstr "Mostrar las extensions en estat inactiu" #: subprojects/extensions-tool/src/command-list.c:158 msgid "Show extensions with preferences" msgstr "Mostrar las extensions amb de preferéncias" #: subprojects/extensions-tool/src/command-list.c:161 msgid "Show extensions with updates" msgstr "Mostrar las extensions amb de mesas a jorn" #: subprojects/extensions-tool/src/command-list.c:164 msgid "Print extension details" msgstr "Mostrar los detalhs de l’extension" #: subprojects/extensions-tool/src/command-list.c:172 msgid "List installed extensions" msgstr "Mostrar la lista de las extensions installadas" #: subprojects/extensions-tool/src/command-pack.c:444 msgid "FILE" msgstr "FICHIÈR" #: subprojects/extensions-tool/src/command-pack.c:445 msgid "Additional source to include in the bundle" msgstr "Font addicionala d’inclure al paquet" #: subprojects/extensions-tool/src/command-pack.c:449 msgid "A GSettings schema that should be included" msgstr "Un esquèma GSettings deu èsser inclús" #: subprojects/extensions-tool/src/command-pack.c:451 #: subprojects/extensions-tool/src/command-pack.c:462 msgid "DIRECTORY" msgstr "REPERTÒRI" #: subprojects/extensions-tool/src/command-pack.c:453 msgid "The directory where translations are found" msgstr "Lo repertòris ont son las traduccions" #: subprojects/extensions-tool/src/command-pack.c:457 msgid "The gettext domain to use for translations" msgstr "Lo domeni gettext d’utilizaire per las traduccions" #: subprojects/extensions-tool/src/command-pack.c:460 msgid "Overwrite an existing pack" msgstr "Remplaçar un paquet existent" #: subprojects/extensions-tool/src/command-pack.c:464 msgid "The directory where the pack should be created" msgstr "Lo repertòri ont lo paquet deu èsser creat" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "SOURCE_DIRECTORY" msgstr "REPERTÒRI_FONT" #: subprojects/extensions-tool/src/command-pack.c:475 msgid "Create an extension bundle" msgstr "Crear una extension empaquetada" #: subprojects/extensions-tool/src/command-pack.c:495 msgid "More than one source directory specified" msgstr "Mai d’un repertòri font indicat" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "L’extension « %s » a pas de preferéncias\n" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "Dobertura impossibla de las preferéncias per l'extension « %s » : %s\n" #: subprojects/extensions-tool/src/command-prefs.c:87 msgid "Opens extension preferences" msgstr "Dobrís las preferéncias de las extensions" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "Reïnicializar una extension" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "Impossible de desinstallar las extension installada pel sistèma\n" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "Desinstallacion impossibla de « %s »\n" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "Desinstallar una extension" #: subprojects/extensions-tool/src/main.c:76 msgid "Do not print error messages" msgstr "Afichar pas los messatges d'error" #: subprojects/extensions-tool/src/main.c:249 msgid "Path" msgstr "Camin" #: subprojects/extensions-tool/src/main.c:252 msgid "URL" msgstr "URL" #: subprojects/extensions-tool/src/main.c:255 msgid "Original author" msgstr "Autor original" #: subprojects/extensions-tool/src/main.c:261 #: subprojects/extensions-tool/src/main.c:263 #: subprojects/extensions-tool/src/main.c:265 msgid "Version" msgstr "Extension" #: subprojects/extensions-tool/src/main.c:268 msgid "Enabled" msgstr "Activat" #: subprojects/extensions-tool/src/main.c:268 msgid "Yes" msgstr "Òc" #: subprojects/extensions-tool/src/main.c:268 msgid "No" msgstr "Non" #: subprojects/extensions-tool/src/main.c:271 msgid "State" msgstr "Estat" #: subprojects/extensions-tool/src/main.c:309 msgid "“version” takes no arguments" msgstr "« version » accèpta pas cap de paramètre" #: subprojects/extensions-tool/src/main.c:311 #: subprojects/extensions-tool/src/main.c:331 msgid "Usage:" msgstr "Usatge :" #: subprojects/extensions-tool/src/main.c:314 msgid "Print version information and exit." msgstr "Afichar las informacions de version e quitar." #: subprojects/extensions-tool/src/main.c:329 #: subprojects/extensions-tool/src/main.c:332 msgid "COMMAND" msgstr "COMANDA" #: subprojects/extensions-tool/src/main.c:332 msgid "[ARGS…]" msgstr "[PARAMS...]" #: subprojects/extensions-tool/src/main.c:334 msgid "Commands:" msgstr "Comandas :" #: subprojects/extensions-tool/src/main.c:335 msgid "Print help" msgstr "Afichar l'ajuda" #: subprojects/extensions-tool/src/main.c:337 msgid "Enable extension" msgstr "Activar l’extension" #: subprojects/extensions-tool/src/main.c:338 msgid "Disable extension" msgstr "Desactivar l’extension" #: subprojects/extensions-tool/src/main.c:339 msgid "Reset extension" msgstr "Reïnicializar l’extension" #: subprojects/extensions-tool/src/main.c:340 msgid "Uninstall extension" msgstr "Desinstallar l’extension" #: subprojects/extensions-tool/src/main.c:341 msgid "List extensions" msgstr "Listar las extensions" #: subprojects/extensions-tool/src/main.c:342 #: subprojects/extensions-tool/src/main.c:343 msgid "Show extension info" msgstr "Afichar las informacions de l’extension" #: subprojects/extensions-tool/src/main.c:344 msgid "Open extension preferences" msgstr "Dobrir las preferéncias de l’extension" #: subprojects/extensions-tool/src/main.c:345 msgid "Create extension" msgstr "Crear una extension" #: subprojects/extensions-tool/src/main.c:346 msgid "Package extension" msgstr "Paquet de l’extension" #: subprojects/extensions-tool/src/main.c:347 msgid "Install extension bundle" msgstr "Installar l’extension empaquetada" #: subprojects/extensions-tool/src/main.c:349 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "Utilizatz « %s » per obténer una ajuda detalhada.\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "Brut" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "Una extension voida" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "Indicator" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "Apondre una icòna a la barra ennaut" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:4 msgid "Quick Settings Item" msgstr "Entrada de parametratge rapid" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:5 msgid "Add an item to quick settings" msgstr "Apondre lo menú rapid de parametratge" #. translators: #. * The device has been disabled #: subprojects/gvc/gvc-mixer-control.c:1872 msgid "Disabled" msgstr "Desactivat" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1879 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u sortida" msgstr[1] "%u sortidas" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1889 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u entrada" msgstr[1] "%u entradas" #: subprojects/gvc/gvc-mixer-control.c:2872 msgid "System Sounds" msgstr "Sons sistèma" #~ msgid "Move Titlebar Onscreen" #~ msgstr "Desplaçar la barra de títol sus l'ecran" #~ msgid "Try to login again to start a session for user %s." #~ msgstr "" #~ "Ensajatz de vos connectar tornamai per aviar una session per l’utilizaire " #~ "%s." #~ msgid "%s is now known as %s" #~ msgstr "%s es ara conegut jol nom de %s" #~ msgid "Network Manager" #~ msgstr "Gestionari de ret" #~ msgctxt "button" #~ msgid "Restart & Install" #~ msgstr "Reaviar e installar" #~ msgid "Disabling" #~ msgstr "Desactivacion" #~ msgid "Enabling" #~ msgstr "Activacion" #~ msgid "Thunderbolt" #~ msgstr "Interfàcia Thunderbolt" #~ msgid "No Matches" #~ msgstr "Cap de correspondéncia pas trobada" #~ msgid "The extension had an error" #~ msgstr "L’extension a rescontrat un problèma" #~ msgid "The extension can be updated" #~ msgstr "Se pòt actualizar aquesta extension" #~ msgid "Help" #~ msgstr "Ajuda" #~ msgid "Manually Installed" #~ msgstr "Installada manualament" #~ msgid "Built-In" #~ msgstr "Integrada" #~ msgid "Extension Updates Ready" #~ msgstr "Mesas a jorn d’extensions prèstas" #~ msgid "%d %%" #~ msgstr "%d %%" #~ msgid "No Thanks" #~ msgstr "Non, mercé" #~ msgid "Screenshot / Screencast" #~ msgstr "Captura d'ecran / vidèo" #~ msgid "Power Profiles" #~ msgstr "Perfils energetics" #~ msgid "Applications" #~ msgstr "Aplicacions" #~ msgid "Unable to start %s" #~ msgstr "Aviada impossibla de %s" #~ msgid "Couldn’t find the %s application" #~ msgstr "Impossible de trobar l’aplicacion %s" #~ msgid "Evolution Calendar" #~ msgstr "Agenda d'Evolution" #~ msgid "" #~ "Whether the default Bluetooth adapter had set up devices associated to it" #~ msgstr "Indica se l’adaptator Bluetooth a de periferics associats" #~ msgid "" #~ "The shell will only show a Bluetooth menu item if a Bluetooth adapter is " #~ "powered, or if there were devices set up associated with the default " #~ "adapter. This will be reset if the default adapter is ever seen not to " #~ "have devices associated to it." #~ msgstr "" #~ "Lo shell aficharà pas d’element de menú Bluetooth que se un adaptator " #~ "Bluetooth es alucat o se i a de periferics associats amb l’adaptator per " #~ "defaut. Aquò sera reïnicializat se l’adaptator per defaut se retròba sens " #~ "cap de periferic associat." #~ msgid "Attach modal dialog to the parent window" #~ msgstr "Estacar los dialògs modals a lor fenèstra parenta" #~ msgid "" #~ "This key overrides the key in org.gnome.mutter when running GNOME Shell." #~ msgstr "" #~ "Aquesta clau pren lo pas sus la clau dins org.gnome.mutter quand GNOME " #~ "Shell es aviat." #~ msgid "Enable edge tiling when dropping windows on screen edges" #~ msgstr "" #~ "Activar l'empilatge de las fenèstras depausadas suls bòrds de l'ecran" #~ msgid "Workspaces are managed dynamically" #~ msgstr "Los espacis de trabalh son gerits dinamicament" #~ msgid "Workspaces only on primary monitor" #~ msgstr "Los espacis de trabalh son unicament sus l'ecran principal" #~ msgid "Delay focus changes in mouse mode until the pointer stops moving" #~ msgstr "" #~ "Retardar los cambiaments de focus en mòde mirga fins al moment que lo " #~ "puntador arrestarà de bolegar" #~ msgid "Region & Language Settings" #~ msgstr "Paramètres de region e de lenga" #~ msgid "Log Out" #~ msgstr "Tampar la session" #~ msgid "%s Off" #~ msgstr "%s atudat" #~ msgid "%s Connected" #~ msgstr "%s connectat" #~ msgid "%s Unmanaged" #~ msgstr "%s pas gerit" #~ msgid "%s Connecting" #~ msgstr "Connexion de %s en cors" #~ msgid "%s Requires Authentication" #~ msgstr "Autentificacion necessària per %s" #~ msgid "Firmware Missing For %s" #~ msgstr "Micrologicial mancant per %s" #~ msgid "%s Unavailable" #~ msgstr "%s pas disponible" #~ msgid "%s Connection Failed" #~ msgstr "Fracàs de connexion a %s" #~ msgid "%s Hardware Disabled" #~ msgstr "Equipament %s desactivat" #~ msgid "%s Disabled" #~ msgstr "%s desactivat" #~ msgid "Connect to Internet" #~ msgstr "Se connectar a Internet" #~ msgid "Airplane Mode is On" #~ msgstr "Lo mòde avion es activat" #~ msgid "Wi-Fi is disabled when airplane mode is on." #~ msgstr "Lo Wi-Fi es desactivat quand lo mòde avion es activat." #~ msgid "Turn Off Airplane Mode" #~ msgstr "Desactivar lo mòde avion" #~ msgid "Wi-Fi is Off" #~ msgstr "Lo Wi-fi es desactivat" #~ msgid "Wi-Fi needs to be turned on in order to connect to a network." #~ msgstr "Lo Wi-Fi a besonh d'èsser activat per se connectar a una ret." #~ msgid "Turn On Wi-Fi" #~ msgstr "Activar lo Wi-Fi" #~ msgid "Select a network" #~ msgstr "Causir una ret" #~ msgid "Use hardware switch to turn off" #~ msgstr "Utilizar l'interruptor material per atudar" #~ msgid "Select Network" #~ msgstr "Seleccionar una ret" #~ msgid "Wi-Fi Settings" #~ msgstr "Paramètres del Wifi" #~ msgid "%s Not Connected" #~ msgstr "%s desconnectat" #~ msgid "unknown" #~ msgstr "desconegut" #~ msgid "connecting…" #~ msgstr "connexion…" #~ msgid "authentication required" #~ msgstr "autentificacion necessària" #~ msgid "connection failed" #~ msgstr "fracàs de connexion" #~ msgid "VPN Off" #~ msgstr "VPN atudat" #~ msgid "Network Settings" #~ msgstr "Paramètres de la ret" #~ msgid "%s Wi-Fi Connection" #~ msgid_plural "%s Wi-Fi Connections" #~ msgstr[0] "%s connexion Wi-Fi" #~ msgstr[1] "%s connexions Wi-Fi" #~ msgid "Lock" #~ msgstr "Verrolhar" #~ msgid "Power Off / Log Out" #~ msgstr "Atudar / Se desconnectar" #~ msgid "Bluetooth On" #~ msgstr "Bluetooth activat" #~ msgid "Bluetooth Off" #~ msgstr "Bluetooth desactivat" #~ msgid "Location In Use" #~ msgstr "Localizacion activada" #~ msgid "Location Disabled" #~ msgstr "Localizacion desactivada" #~ msgid "Night Light Disabled" #~ msgstr "Mòde nuèit desactivat" #~ msgid "Resume" #~ msgstr "Reprene" #~ msgid "Disable Until Tomorrow" #~ msgstr "Desactivar fins a deman" #~ msgid "Fully Charged" #~ msgstr "Carga completa" #~ msgid "Not Charging" #~ msgstr "Pas en carga" #~ msgid "Estimating…" #~ msgstr "Estimacion…" #~ msgid "%d∶%02d Remaining (%d %%)" #~ msgstr "%dh%02d restant (%d %%)" #~ msgid "%d∶%02d Until Full (%d %%)" #~ msgstr "%dh%02d abans cargament complet (%d %%)" #~ msgid "Screen is Being Shared" #~ msgstr "Ecran en partatge" #~ msgid "Turn off" #~ msgstr "Atudar" #~ msgid "Airplane Mode On" #~ msgstr "Lo mòde avion es activat" #~ msgid "Show screenshot UI" #~ msgstr "Aficha l'interfàcia de captura d’ecran" #~ msgid "Remove from Favorites" #~ msgstr "Levar dels favorits" #~ msgid "Add to Favorites" #~ msgstr "Apondre als favorits" #~ msgid "Screen Recording in Progress" #~ msgstr "Enregistrament de l’ecran en cors" #~ msgid "Stop" #~ msgstr "Arrestar" #~ msgid "Author" #~ msgstr "Autor" #~ msgid "Warning" #~ msgstr "Avertiment" #~ msgid "" #~ "Extensions can cause system issues, including performance problems. If " #~ "you encounter problems with your system, it is recommended to disable all " #~ "extensions." #~ msgstr "" #~ "Las extensions pòdon menar a de problèmas sistèma, inclutz per la " #~ "performança. Se pensatz qu’es vòstre cas, se recomanda de desactivar " #~ "totas las extensions." #~ msgid "Failed to connect to GNOME Shell" #~ msgstr "Error en se connectant a Shell de GNOME" #~ msgid "Enable introspection API" #~ msgstr "Activar l’API d’introspeccion" #~ msgid "" #~ "Enables a D-Bus API that allows to introspect the application state of " #~ "the shell." #~ msgstr "" #~ "Activa l’API D-Bus, que permet d’introspectar l’estat d’aplicacion del " #~ "shell." #~ msgid "Minimize" #~ msgstr "Minimizar" #~ msgid "Unmaximize" #~ msgstr "Reduire" #~ msgid "App Picker View" #~ msgstr "Vista del selector d'aplicacions" #~ msgid "Index of the currently selected view in the application picker." #~ msgstr "" #~ "Indèx de la vista actualament seleccionada dins lo selector d'aplicacions." #~ msgid "" #~ "Keybinding that pauses and resumes all running tweens, for debugging " #~ "purposes" #~ msgstr "" #~ "Combinason de tòcas per arrestar e tampar totas las transicions amb una " #~ "tòca de desbugatge" #~ msgid "Which keyboard to use" #~ msgstr "Lo clavièr utilizat" #~ msgid "The type of keyboard to use." #~ msgstr "Lo tipe de clavièr utilizat." #~| msgid "Network error" #~ msgid "network-workgroup" #~ msgstr "network-workgroup" #~ msgid "There was an error loading the preferences dialog for %s:" #~ msgstr "" #~ "Una error s'es produita al moment del cargament de la bóstia de dialòg de " #~ "las preferéncias de %s :" #~ msgid "Next" #~ msgstr "Seguent" #~ msgctxt "button" #~ msgid "Sign In" #~ msgstr "Se connectar" #~ msgid "Frequently used applications will appear here" #~ msgstr "Las aplicacions utilizadas frequentament apareisseràn aicí" #~ msgid "Frequent" #~ msgstr "Utilizadas frequentament" #~ msgid "All" #~ msgstr "Totes" #~ msgctxt "calendar heading" #~ msgid "%A, %B %d, %Y" #~ msgstr "%A %d %B, %Y" #~ msgid "Password:" #~ msgstr "Senhal :" #~ msgid "Type again:" #~ msgstr "Picatz tornamai :" #~ msgid "Password: " #~ msgstr "Senhal : " #~ msgid "Authentication required by wireless network" #~ msgstr "L'autentificacion es requesida per la ret sens fial" #~ msgid "Mobile broadband network password" #~ msgstr "Senhal del telefòn mobil de benda larga" #~ msgid "%s all day." #~ msgstr "%s tota la jornada." #~ msgid "%s, then %s later." #~ msgstr "%s, puèi %s mai tard." #~ msgid "%s, then %s, followed by %s later." #~ msgstr "%s, puèi %s, seguit per %s mai tard." #~ msgid "Feels like %s." #~ msgstr "Temperatura ressentida : %s." #~ msgid "toggle-switch-us" #~ msgstr "toggle-switch-intl" #~ msgid "%d new message" #~ msgid_plural "%d new messages" #~ msgstr[0] "%d messatge novèl" #~ msgstr[1] "%d messatges novèls" #~ msgid "On" #~ msgstr "Activat" #~ msgid "Account Settings" #~ msgstr "Paramètres del compte" #~ msgid "Orientation Lock" #~ msgstr "Verrolhatge de l'orientacion" #~ msgid "Show the week date in the calendar" #~ msgstr "Afichar la numerotacion de las setmanas dins lo calendièr" #~ msgid "If true, display the ISO week date in the calendar." #~ msgstr "Se verai, afichar lo numèro de setmana ISO dins lo calendièr." #~ msgid "Web Authentication Redirect" #~ msgstr "Redireccion de l'autentificacion Web" #~ msgid "Events" #~ msgstr "Eveniments" #~ msgid "Hide tray" #~ msgstr "Amagar lo tirador" #~ msgid "Status Icons" #~ msgstr "Icònas d'estat" #~ msgid "Media" #~ msgstr "Mèdias" #~ msgid "Use as Internet connection" #~ msgstr "Utilizar per la connexion Internet" #~ msgid "%d x %d" #~ msgstr "%d x %d" #~ msgid "Show the message tray" #~ msgstr "Afichar lo tirador de messatjariá" #~ msgid "GNOME Shell (wayland compositor)" #~ msgstr "GNOME Shell (gestionari de fenèstras composit Wayland)" #~ msgid "" #~ "GNOME Shell extensions have a uuid property; this key lists extensions " #~ "which should be loaded. Any extension that wants to be loaded needs to be " #~ "in this list. You can also manipulate this list with the EnableExtension " #~ "and DisableExtension DBus methods on org.gnome.Shell." #~ msgstr "" #~ "Las extensions GNOME Shell an una proprietat UUID. Aquesta clau enumèra " #~ "las extensions que devon èsser cargadas. Tota extension que voldriá èsser " #~ "cargada deu èsser aponduda dins aquesta lista. Tanben podètz manipular " #~ "aquesta lista amb los metòdes DBus EnableExtension e DisableExtension de " #~ "org.gnome.Shell." #~ msgid "List of categories that should be displayed as folders" #~ msgstr "" #~ "Lista de las categorias que deurián èsser afichadas coma de dorsièrs" #~ msgid "" #~ "Each category name in this list will be represented as folder in the " #~ "application view, rather than being displayed inline in the main view." #~ msgstr "" #~ "Cada nom de categoria dins aquesta lista serà representada coma un " #~ "dorsièr dins la vista de las aplicacions, pluslèu qu'alinhada dins la " #~ "vista principala." #~ msgid "Always show the 'Log out' menuitem in the user menu." #~ msgstr "" #~ "Afichar totjorn l'element « Se desconnectar » dins lo menú utilizaire." #~ msgid "" #~ "This key overrides the automatic hiding of the 'Log out' menuitem in " #~ "single-user, single-session situations." #~ msgstr "" #~ "Aquesta clau aficha l'element « Se desconnectar » del menú utilizaire " #~ "normalament amagat automaticament dins lo cas d'una session o d'un " #~ "utilizaire unique." #~ msgid "Keybinding to toggle the visibility of the message tray" #~ msgstr "" #~ "Combinason de tòcas per bascular la visibilitat del tirador de messatjariá" #~ msgid "Keybinding to toggle the visibility of the message tray." #~ msgstr "" #~ "Combinason de tòcas per bascular la visibilitat del tirador de " #~ "messatjariá." #~ msgid "Arrangement of buttons on the titlebar" #~ msgstr "La disposicion dels botons dins la barra de títol" #~ msgid "" #~ "This key overrides the key in org.gnome.desktop.wm.preferences when " #~ "running GNOME Shell." #~ msgstr "" #~ "Aquesta clau pren lo pas sus la clau dins org.gnome.desktop.wm." #~ "preferences quand GNOME Shell es aviat." #~ msgid "Select an extension to configure using the combobox above." #~ msgstr "" #~ "Seleccionatz una extension de configurar en utilizant la bóstia combinada " #~ "çaisús." #~ msgid "Execution of '%s' failed:" #~ msgstr "Execucion de « %s » impossibla :" #~ msgctxt "event list time" #~ msgid "%l∶%M %p" #~ msgstr "%l:%M %p" # luc: Lun. Mar. Mer. Jeu. Ven. | Lu Ma Me Je Ve | L M M J V in a column # I checked a bunch of calendars # (including the complete collection of Aubade calendars), # most of them use either the one-letter either the full text version. # Here I set it to the two-letters version because I think it is # visually better, more readable and as much understandable than alternatives #~ msgctxt "list sunday" #~ msgid "Su" #~ msgstr "D" #~ msgctxt "list monday" #~ msgid "M" #~ msgstr "Lu" #~ msgctxt "list tuesday" #~ msgid "T" #~ msgstr "Ma" #~ msgctxt "list wednesday" #~ msgid "W" #~ msgstr "Mè" #~ msgctxt "list thursday" #~ msgid "Th" #~ msgstr "Jò" #~ msgctxt "list friday" #~ msgid "F" #~ msgstr "Ve" #~ msgctxt "list saturday" #~ msgid "S" #~ msgstr "Sa" #~ msgid "calendar:MY" #~ msgstr "calendar:MY" #~ msgid "Nothing Scheduled" #~ msgstr "Pas res de previst" #~ msgid "This week" #~ msgstr "Aquesta setmana" #~ msgid "Next week" #~ msgstr "La setmana que ven" #~ msgid "Removable Devices" #~ msgstr "Periferics amovibles" #~ msgid "Eject" #~ msgstr "Ejectar" #~ msgid "" #~ "Passwords or encryption keys are required to access the wireless network " #~ "'%s'." #~ msgstr "" #~ "Cal un senhal o una clau de chiframent per accedir a la ret sens fial « " #~ "%s »" #~ msgid "A password is required to connect to '%s'." #~ msgstr "Un senhal es requesit per se connectar a « %s »." #~ msgid "Convidation" #~ msgstr "Convit" #~ msgid "Call" #~ msgstr "Apèl" #~ msgid "File Transfer" #~ msgstr "Transferiment de fichièrs" #~ msgid "Chat" #~ msgstr "Discussion" #~ msgid "Yesterday, %H:%M" #~ msgstr "Ièr, %H:%M" #~ msgid "%A, %H:%M" #~ msgstr "%A, %H:%M" #~ msgid "%B %d, %H:%M" #~ msgstr "%d %B, %H:%M" #~ msgid "%B %d %Y, %H:%M " #~ msgstr "%d %B %Y, %H:%M " #~ msgid "Convidation to %s" #~ msgstr "Convit cap a %s" #~ msgid "%s is inviting you to join %s" #~ msgstr "%s vos convida a rejónher %s" #~ msgid "Decline" #~ msgstr "Refusar" #~ msgid "Accept" #~ msgstr "Acceptar" #~ msgid "Video call from %s" #~ msgstr "Apèl vidèo de %s" #~ msgid "Call from %s" #~ msgstr "Apèl que proven de %s" #~ msgid "Answer" #~ msgstr "Respondre" #~ msgid "%s is sending you %s" #~ msgstr "%s vos manda %s" #~ msgid "%s would like permission to see when you are online" #~ msgstr "%s aimariá èsser autorizat a saber quand sètz en linha" #~ msgid "Authentication failed" #~ msgstr "L'autentificacion a fracassat" #~ msgid "Encryption error" #~ msgstr "Error de chiframent" #~ msgid "Certificate not provided" #~ msgstr "Certificat pas provesit" #~ msgid "Certificate untrusted" #~ msgstr "Certificat pas validat" #~ msgid "Certificate expired" #~ msgstr "Certificat expirat" #~ msgid "Certificate not activated" #~ msgstr "Certificat pas activat" #~ msgid "Certificate hostname mismatch" #~ msgstr "Lo nom de l'òste del certificat correspond pas" #~ msgid "Certificate fingerprint mismatch" #~ msgstr "L'emprenta del certificat correspond pas" #~ msgid "Certificate self-signed" #~ msgstr "Certificat autosignat" #~ msgid "Status is set to offline" #~ msgstr "L'estatut es fòra linha" #~ msgid "Certificate is invalid" #~ msgstr "Certificat invalid" #~ msgid "Connection has been refused" #~ msgstr "La connexion es estada refusada" #~ msgid "Connection can't be established" #~ msgstr "La connexion pòt pas èsser establida" #~ msgid "Connection has been lost" #~ msgstr "La connexion es estada perduda" #~ msgid "This account is already connected to the server" #~ msgstr "Aqueste compte es ja connectat al servidor" #~ msgid "" #~ "Connection has been replaced by a new connection using the same resource" #~ msgstr "" #~ "La connexion es estada remplaçada per una novèla connexion qu'utiliza la " #~ "meteissa ressorsa" #~ msgid "The account already exists on the server" #~ msgstr "Aqueste compte existís ja sul servidor" #~ msgid "Server is currently too busy to handle the connection" #~ msgstr "Lo servidor es actualament tròp cargat per tractar la connexion" #~ msgid "Certificate has been revoked" #~ msgstr "Lo certificat es estat revocat" #~ msgid "" #~ "Certificate uses an insecure cipher algorithm or is cryptographically weak" #~ msgstr "" #~ "Lo certificat utiliza un algoritme de chiframent dobtós, o es feble " #~ "criptograficament" #~ msgid "" #~ "The length of the server certificate, or the depth of the server " #~ "certificate chain, exceed the limits imposed by the cryptography library" #~ msgstr "" #~ "La longor del certificat del servidor, o la talha de sa cadena de " #~ "certificacion, depassa los limits de la bibliotèca de criptografia" #~ msgid "Internal error" #~ msgstr "Error intèrna" #~ msgid "View account" #~ msgstr "Afichar lo compte" #~ msgid "Open Clocks" #~ msgstr "Dobrir Relòtges" #~ msgid "Date & Time Settings" #~ msgstr "Paramètres de data e ora" # luc: FIXME: how to have a capitalized weekday (start of sentence)? # %a (abbreviated) %A (full weekday) %^A (full weekday all uppercase) # https://bugzilla.gnome.org/show_bug.cgi?id=658686 # # luc: TODO: to test, this possibly explodes on dimanche 25 septembre 2011 # L M M J V S D #~ msgid "%A %B %e, %Y" #~ msgstr "%A %e %B %Y" #~ msgid "Download and install '%s' from extensions.gnome.org?" #~ msgstr "Telecargar e installar « %s » a partir de extensions.gnome.org ?" #~ msgid "Open" #~ msgstr "Dobrir" #~ msgid "Clear Messages" #~ msgstr "Escafar los messatges" #~ msgid "Notification Settings" #~ msgstr "Paramètres de notificacions" #~ msgid "No Messages" #~ msgstr "Pas cap de messatge" #~ msgid "Message Tray" #~ msgstr "Tirador de messatjariá" #~ msgid "%d Connected Device" #~ msgid_plural "%d Connected Devices" #~ msgstr[0] "%d periferic connectat" #~ msgstr[1] "%d periferics connectats" #~ msgid "Authorization request from %s" #~ msgstr "Demanda d'autorizacion de « %s »" #~ msgid "Device %s wants to pair with this computer" #~ msgstr "Lo periferic « %s » se vòl connectar a aqueste ordenador" #~ msgid "Device %s wants access to the service '%s'" #~ msgstr "Lo periferic %s vòl accedir al servici « %s »" #~ msgid "Grant this time only" #~ msgstr "Acordar l'accès aqueste còp unicament" #~ msgid "Reject" #~ msgstr "Refusar" #~ msgid "Pairing confirmation for %s" #~ msgstr "Confirmacion de la demanda de ligason per « %s »" #~ msgid "" #~ "Please confirm whether the Passkey '%06d' matches the one on the device." #~ msgstr "" #~ "Confirmatz que la clau secreta (Passkey) « %06d » correspond a la del " #~ "periferic." #~ msgid "Does not match" #~ msgstr "Correspond pas" #~ msgid "Pairing request for %s" #~ msgstr "Demanda de ligason per « %s »" #~ msgid "Please enter the PIN mentioned on the device." #~ msgstr "" #~ "Picatz lo numèro d'identificacion personala (PIN) mencionat sul periferic." #~ msgid "OK" #~ msgstr "Validar" #~ msgid "unmanaged" #~ msgstr "pas gerit" #~ msgid "disconnecting..." #~ msgstr "desconnexion..." #~ msgid "firmware missing" #~ msgstr "micrologicial absent" #~ msgid "unavailable" #~ msgstr "pas disponible" #~ msgid "Battery" #~ msgstr "Batariá" #~ msgid "" #~ "Sorry, no wisdom for you today:\n" #~ "%s" #~ msgstr "" #~ "O planhèm, pas cap de saviesa per vos uèi :\n" #~ "%s" #~ msgid "%s the Oracle says" #~ msgstr "L'Oracle %s declara" #~ msgid "'%s' is ready" #~ msgstr "« %s » es prèst" #~ msgctxt "event list time" #~ msgid "%H\\u2236%M" #~ msgstr "%H\\u2236%M" #~ msgctxt "event list time" #~ msgid "%l\\u2236%M\\u2009%p" #~ msgstr "%l\\u2236%M\\u2009%p" #~ msgid "Settings Menu" #~ msgstr "Menú dels paramètres" #~ msgid "Whether to collect stats about applications usage" #~ msgstr "Collecter des statistiques sus l'utilizacion des applications" #~ msgid "" #~ "The shell normally monitors active applications in order to present the " #~ "most used ones (e.g. in launchers). While this data will be kept private, " #~ "you may want to disable this for privacy reasons. Please note that doing " #~ "so won't remove already saved data." #~ msgstr "" #~ "Normalament GNOME Shell survelha las aplicacions activas per fin de " #~ "determinar las mai utilizadas (per ex. pels aviadors). Quitament se " #~ "aquestas donadas son gardadas secretas, de motius de confidencialitat vos " #~ "pòdon butar a desactivar aquesta foncionalitat. Remarcatz qu'aquesta " #~ "desactivacion suprimís pas d'eventualas donadas ja enregistradas." #~ msgid "" #~ "Internally used to store the last IM presence explicitly set by the user. " #~ "The value here is from the TpConnectionPresenceType enumeration." #~ msgstr "" #~ "Utilizat en intèrne per enregistrar la darrièra preséncia de messatjariá " #~ "instantanèa IM explicitament definida per l'utilizaire. Aicí la valor es " #~ "tirada de l'enumeracion TpConnectionPresenceType." #~ msgid "" #~ "Internally used to store the last session presence status for the user. " #~ "The value here is from the GsmPresenceStatus enumeration." #~ msgstr "" #~ "Utilizat en interne per enregistrar lo darrièr estatut de preséncia de la " #~ "session per l'utilizaire. Aici la valor es tirada de l'enumeracion " #~ "GsmPresenceStatus." #~ msgid "Keybinding to toggle the screen recorder" #~ msgstr "Combinason de tòcas per bascular l'enregistrador d'ecran" #~ msgid "Keybinding to start/stop the builtin screen recorder." #~ msgstr "" #~ "Combinason de tòcas per aviar/arrestar l'enregistrador d'ecran integrat." #~ msgid "Framerate used for recording screencasts." #~ msgstr "" #~ "Nombre d'imatges per segonda per l'enregistrament de las animacions " #~ "d'ecran." #~ msgid "" #~ "The framerate of the resulting screencast recordered by GNOME Shell's " #~ "screencast recorder in frames-per-second." #~ msgstr "" #~ "Lo nombre d'imatges per segonda de las animacions d'ecran enregistradas " #~ "per l'aisina idònia de GNOME Shell." #~ msgid "The gstreamer pipeline used to encode the screencast" #~ msgstr "Lo pipeline GStreamer utilizat per encodar l'animacion d'ecran" #~ msgid "" #~ "Sets the GStreamer pipeline used to encode recordings. It follows the " #~ "syntax used for gst-launch. The pipeline should have an unconnected sink " #~ "pad where the recorded video is recorded. It will normally have a " #~ "unconnected source pad; output from that pad will be written into the " #~ "output file. However the pipeline can also take care of its own output - " #~ "this might be used to send the output to an icecast server via shout2send " #~ "or similar. When unset or set to an empty value, the default pipeline " #~ "will be used. This is currently 'vp8enc min_quantizer=13 max_quantizer=13 " #~ "cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux' and records to " #~ "WEBM using the VP8 codec. %T is used as a placeholder for a guess at the " #~ "optimal thread count on the system." #~ msgstr "" #~ "Definicion del pipeline GStreamer utilizat per encodar los " #~ "enregistraments vidèo. La sintaxi es identica a la de gst-launch. Lo " #~ "connectador d'entrada (sink pad) del pipeline deuriá èsser non connectat " #~ "là où la vidèo es enregistrada. Lo connectador font deuriá normalement " #~ "èsser non connectat ; la sortida de ce connectador es escrita dins lo " #~ "fichièr de sortida. Pasmens, lo pipeline pòt tanben se cargar de sa " #~ "pròpria sortida, per exemple per diriger la sortida cap a un servidor " #~ "icecast via shout2send o autre. Se aquesta clau es pas definida o se es " #~ "voida, es lo pipeline per defaut qu'es utilizat. Aqueste es actualament « " #~ "vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 " #~ "threads=%T ! queue ! webmmux' » e l'enregistrament utiliza lo format WEBM " #~ "e lo codec VP8. %T es utilizat coma paramètre per una suposicion quant al " #~ "nombre optimal de threads d'utilizar sul sistèma." #~ msgid "File extension used for storing the screencast" #~ msgstr "Extension de fichièr d'utilizar per enregistrar l'animacion d'ecran" #~ msgid "" #~ "The filename for recorded screencasts will be a unique filename based on " #~ "the current date, and use this extension. It should be changed when " #~ "recording to a different container format." #~ msgstr "" #~ "Lo nom de fichièr de las animacions d'ecran es unic, se basa sus la data, " #~ "e utiliza aquesta extension. Deuriá èsser modificada se lo format del " #~ "contenidor utilizat per l'enregistrament es diferent." #~ msgid "Session…" #~ msgstr "Session…" #~ msgid "Power" #~ msgstr "Energia" #~ msgid "Click Log Out to quit these applications and log out of the system." #~ msgstr "" #~ "Clicatz sus « Tampar la session » per quitar aquestas aplicacions e " #~ "tampar la session." #~ msgid "Logging out of the system." #~ msgstr "Desconnexion del sistèma." #~ msgid "Click Power Off to quit these applications and power off the system." #~ msgstr "" #~ "Clicatz sus « Atudar » per quitar aquestas aplicacions e atudar " #~ "l'ordenador." #~ msgid "Powering off the system." #~ msgstr "Extinction del sistèma." #~ msgid "Click Restart to quit these applications and restart the system." #~ msgstr "" #~ "Clicatz sus « Reaviar » per quitar aquestas aplicacions e reaviar " #~ "l'ordenador." #~ msgid "Restarting the system." #~ msgstr "Reaviada del sistèma." #~ msgid "Universal Access Settings" #~ msgstr "Paramètres de l'accès universel" #~ msgid "Visibility" #~ msgstr "Visibilitat" #~ msgid "Set Up a New Device…" #~ msgstr "Configurar un novèl periferic…" #~ msgid "Connection" #~ msgstr "Connexion" #~ msgid "Send Files…" #~ msgstr "Mandar de fichièrs…" #~ msgid "Mouse Settings" #~ msgstr "Paramètres de la mirga" #~ msgid "Volume, network, battery" #~ msgstr "Volum, ret, batariá" #~ msgid "disabled" #~ msgstr "desactivat" #~ msgid "cable unplugged" #~ msgstr "cable desbrancat" #~ msgid "More…" #~ msgstr "Mai…" #~ msgid "Wired" #~ msgstr "Filara" #~ msgid "Auto Ethernet" #~ msgstr "Ethernet automatic" #~ msgid "Auto broadband" #~ msgstr "Connexion benda larga automatica" #~ msgid "Auto dial-up" #~ msgstr "Connexion per telefòn automatica" #~ msgid "Auto %s" #~ msgstr "Auto %s" #~ msgid "Auto bluetooth" #~ msgstr "Bluetooth automatique" #~ msgid "Auto wireless" #~ msgstr "Sens fial automatic" #~ msgid "Wi-Fi" #~ msgstr "Wi-Fi" #~ msgid "%d %s %d %s remaining" #~ msgstr "%d %s %d %s restantas" #~ msgid "hour" #~ msgid_plural "hours" #~ msgstr[0] "ora" #~ msgstr[1] "oras" #~ msgid "minute" #~ msgid_plural "minutes" #~ msgstr[0] "minuta" #~ msgstr[1] "minutas" #~ msgid "AC Adapter" #~ msgstr "Adaptador secteur" #~ msgid "Laptop Battery" #~ msgstr "Batariá de l'ordenador" #~ msgid "UPS" #~ msgstr "UPS" #~ msgid "Monitor" #~ msgstr "Ecran" #~ msgid "Mouse" #~ msgstr "Mirga" #~ msgid "PDA" #~ msgstr "Assistent personal" #~ msgid "Cell Phone" #~ msgstr "Telefòn portable" #~ msgid "Media Player" #~ msgstr "Lector multimèdia" #~ msgid "Tablet" #~ msgstr "Tauleta" #~ msgid "Computer" #~ msgstr "Ordenador" #~ msgctxt "device" #~ msgid "Unknown" #~ msgstr "Desconegut" #~ msgid "Busy" #~ msgstr "Ocupat" #~ msgid "Invisible" #~ msgstr "Invisible" #~ msgid "Away" #~ msgstr "Absent" #~ msgid "Idle" #~ msgstr "Inactiu" #~ msgid "Your chat status will be set to busy" #~ msgstr "Vòstre estatut per las discussions serà definit a ocupat" #~ msgid "" #~ "Notifications are now disabled, including chat messages. Your online " #~ "status has been adjusted to let others know that you might not see their " #~ "messages." #~ msgstr "" #~ "Les notifications son maintenant desactivadas, y compris les messages de " #~ "discussion. Votre statut en linha a été modificat per fin que les autres " #~ "sachent qu'il se pòt que vous ne voyez pas leurs messages." #~ msgid "Shutting down might cause them to lose unsaved work." #~ msgstr "L'extinction pourrait lor far pèrdre lor travaux non enregistrats." #~ msgctxt "title" #~ msgid "Sign In" #~ msgstr "Connexion" #~ msgid "APPLICATIONS" #~ msgstr "APLICACIONS" #~ msgid "SETTINGS" #~ msgstr "PARAMÈTRES" # # luc: https://bugzilla.gnome.org/show_bug.cgi?id=658675 #~ msgctxt "event list time" #~ msgid "%H:%M" #~ msgstr "%H:%M" #~ msgctxt "event list time" #~ msgid "%l:%M %p" #~ msgstr "%l:%M %p" #~ msgid "Subscription request" #~ msgstr "Demanda d'abonnement" # # luc: TODO: double check with source code. %A is weekday « Mandat lundi a 8:23» #~ msgid "Sent at %X on %A" #~ msgstr "Mandat %A a %X" #~ msgid "Sent on %A, %B %d, %Y" #~ msgstr "Mandat lo %A %-d %B %Y" #~ msgid "Reconnect" #~ msgstr "Se reconnectar" #~ msgid "tray" #~ msgstr "tirador de messatjariá" #~ msgid "Browse Files..." #~ msgstr "Percórrer los fichièrs..." #~ msgid "Error browsing device" #~ msgstr "Error en percorrent lo periferic" #~ msgid "The requested device cannot be browsed, error is '%s'" #~ msgstr "Lo periferic demandat pòt pas èsser percorrut, l'error es « %s »" #~ msgid "More..." #~ msgstr "Mai..." #~ msgid "Wireless" #~ msgstr "Sens fial" #~ msgid "VPN Connections" #~ msgstr "Connexions per VPN" #~ msgid "System Settings" #~ msgstr "Paramètres sistèma" #~ msgid "Your favorite Easter Egg" #~ msgstr "Vòstre uòu de Pascas favorit" #~ msgid "United Kingdom" #~ msgstr "Reialme Unit" #~ msgid "Default" #~ msgstr "Defaut" #~ msgid "Show the message list" #~ msgstr "Afichar la lista de messatges" #~ msgid "Captive Portal" #~ msgstr "Portal captiu" #~ msgid "The maximum accuracy level of location." #~ msgstr "Lo nivèl de precision de localizacion maximal" #~ msgid "" #~ "Configures the maximum level of location accuracy applications are " #~ "allowed to see. Valid options are 'off' (disable location tracking), " #~ "'country', 'city', 'neighborhood', 'street', and 'exact' (typically " #~ "requires GPS receiver). Please keep in mind that this only controls what " #~ "GeoClue will allow applications to see and they can find user's location " #~ "on their own using network resources (albeit with street-level accuracy " #~ "at best)." #~ msgstr "" #~ "Configure lo nivèl maximal de precision de localizacion que las " #~ "aplicacions son autorizadas a veire. Las opcions validas son « off " #~ "» (desactivar lo seguiment de l'emplaçament), « country » (país), « city " #~ "» (vila), « neighborhood » (quartièr), « street » (carrièra) e « exact " #~ "» (emplaçament exacte, necessita generalament un receptor GPS). Gardatz " #~ "en cap qu'aqueste paramètre contraròtla unicament çò que GeoClue " #~ "autorizarà las aplicacions a veire mas que demòran pr'aquò capablas de " #~ "determinar l'emplaçament de l'utilizaire d'ela-meteissa en utilizant las " #~ "ressorsas ret (amb al pus melhor un nivèl de precision limitat a la " #~ "carrièra)." #~ msgctxt "search-result" #~ msgid "Log out" #~ msgstr "Tampar la session" #~ msgctxt "search-result" #~ msgid "Switch user" #~ msgstr "Cambiar d’utilizaire" 07070100000256000081A40000000000000000000000016712993F00016574000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/or.po# Oriya translation for gnome-shell. # Copyright (C) 2011 gnome-shell's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-shell package. # # Manoj Kumar Giri , 2011, 2012, 2013, 2014. msgid "" msgstr "" "Project-Id-Version: gnome-shell master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "shell&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2014-09-18 07:41+0000\n" "PO-Revision-Date: 2014-09-18 17:43+0530\n" "Last-Translator: Manoj Kumar Giri \n" "Language-Team: Oriya \n" "Language: or\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: Lokalize 1.5\n" #: ../data/50-gnome-shell-system.xml.in.h:1 msgid "System" msgstr "ତନ୍ତ୍ର" #: ../data/50-gnome-shell-system.xml.in.h:2 msgid "Show the message tray" msgstr "ସନ୍ଦେଶ ପାତ୍ରକୁ ଦର୍ଶାନ୍ତୁ" #: ../data/50-gnome-shell-system.xml.in.h:3 msgid "Focus the active notification" msgstr "ସକ୍ରିୟ ବିଜ୍ଞପ୍ତିକୁ ଲକ୍ଷ୍ୟ କରନ୍ତୁ" #: ../data/50-gnome-shell-system.xml.in.h:4 msgid "Show the overview" msgstr "ସମୀକ୍ଷାକୁ ଦର୍ଶାନ୍ତୁ" #: ../data/50-gnome-shell-system.xml.in.h:5 msgid "Show all applications" msgstr "ସମସ୍ତ ପ୍ରୟୋଗଗୁଡ଼ିକୁ ଦର୍ଶାନ୍ତୁ" #: ../data/50-gnome-shell-system.xml.in.h:6 msgid "Open the application menu" msgstr "ପ୍ରୟୋଗ ତାଲିକାକୁ ଖୋଲନ୍ତୁ" #: ../data/gnome-shell.desktop.in.in.h:1 msgid "GNOME Shell" msgstr "GNOME ସେଲ" #: ../data/gnome-shell.desktop.in.in.h:2 #: ../data/gnome-shell-wayland.desktop.in.in.h:2 msgid "Window management and application launching" msgstr "ୱିଣ୍ଡୋ ପରିଚାଳନା ଏବଂ ପ୍ରୟୋଗ ପ୍ରାରମ୍ଭ" #: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1 msgid "GNOME Shell Extension Preferences" msgstr "GNOME ସେଲ ଅନୁଲଗ୍ନ ପସନ୍ଦଗୁଡ଼ିକ" #: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2 msgid "Configure GNOME Shell Extensions" msgstr "GNOME ସେଲ ଅନୁଲଗ୍ନଗୁଡ଼ିକ" #: ../data/gnome-shell-wayland.desktop.in.in.h:1 msgid "GNOME Shell (wayland compositor)" msgstr "GNOME ସେଲ (ୱେଲ୍ୟାଣ୍ଡ ଯୋଜନାକାରୀ)" #: ../data/org.gnome.shell.gschema.xml.in.in.h:1 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" "ଆଭ୍ୟନ୍ତରୀଣ ସାଧନଗୁଡ଼ିକୁ Alt-F2 ରୁ ବିକାଶକାରୀ ଏବଂ ପରୀକ୍ଷକମାନଙ୍କ ପାଇଁ ସକ୍ରିୟ " "କରନ୍ତୁ" #: ../data/org.gnome.shell.gschema.xml.in.in.h:2 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "ଆଭ୍ୟନ୍ତରୀଣ ତ୍ରୁଟିନିବାରଣ ଏବଂ ନିରୀକ୍ଷଣ ସାଧନଗୁଡ଼ିକୁ Alt-F2 ସଂଳାପ ବ୍ୟବହାର କରି " "ଅନୁମତି ପ୍ରଦାନ କରନ୍ତୁ।" #: ../data/org.gnome.shell.gschema.xml.in.in.h:3 msgid "UUIDs of extensions to enable" msgstr "ସକ୍ରିୟ କରିବା ପାଇଁ ଥିବା ଅନୁଲଗ୍ନଗୁଡ଼ିକର UUID ଗୁଡ଼ିକ" #: ../data/org.gnome.shell.gschema.xml.in.in.h:4 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "GNOME ସେଲ ଅନୁଲଗ୍ନଗୁଡ଼ିକରେ ଗୋଟିଏ UUID ଗୁଣଧର୍ମ ଅଛି; ଏହି କି ଅନୁଲଗ୍ନଗୁଡ଼ିକୁ " "ତାଲିକାଭୁକ୍ତ କରିଥାଏ ଯାହାକୁ " "ଧାରଣ କରିବା ଉଚିତ। ସକ୍ରିୟ ଅନୁଲଗ୍ନ ଏବଂ ନିଷ୍କ୍ରିୟ-ଅନୁଲଗ୍ନଗୁଡ଼ିକ ସହିତ D-Bus " "ପଦ୍ଧତିରେ ଆପଣ ତାଲିକାକୁ " "ସଙ୍କଳନ କରିପାରିବେ।" #: ../data/org.gnome.shell.gschema.xml.in.in.h:5 msgid "Disables the validation of extension version compatibility" msgstr "ଅନୁଲଗ୍ନ ସଂସ୍କରଣ ସୁସଙ୍ଗତତାର ବୈଧତାକୁ ନିଷ୍କ୍ରିୟ କରିଥାଏ" #: ../data/org.gnome.shell.gschema.xml.in.in.h:6 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "GNOME ସେଲ କେବଳ ଅନୁଲଗ୍ନଗୁଡ଼ିକୁ ଧାରଣ କରିବ ଯାହାକି ପ୍ରଚଳିତ ସଂସ୍କରଣକୁ ସହାୟତା ଦେବା " "ପାଇଁ ଉଦ୍ଦିଷ୍ଟ।" "ଏହି ବିକଳ୍ପକୁ ସକ୍ରିୟ କରିବା ଫଳରେ ତାହା ଏହି ଯାଞ୍ଚକୁ ନିଷ୍କ୍ରିୟ କରିବ ଏବଂ ସହାୟତା " "ପାଇଁ ଉଦ୍ଦିଷ୍ଟ " "ସଂସ୍କରଣଗୁଡ଼ିକୁ ଅଦେଖା କରି ସମସ୍ତ ଅନୁଲଗ୍ନଗୁଡ଼ିକୁ ଧାରଣ କରିବା ପାଇଁ ଚେଷ୍ଟା କରିବ।" #: ../data/org.gnome.shell.gschema.xml.in.in.h:7 msgid "List of desktop file IDs for favorite applications" msgstr "ମନପସନ୍ଦ ପ୍ରୟୋଗଗୁଡ଼ିକ ପାଇଁ ଡେସ୍କଟପ ଫାଇଲ ID ଗୁଡ଼ିକର ତାଲିକା" #: ../data/org.gnome.shell.gschema.xml.in.in.h:8 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" "ଏହି ପରିଚାୟକମାନଙ୍କ ସହିତ ସମ୍ପୃକ୍ତ ପ୍ରୟୋଗଗୁଡ଼ିକୁ ମନପସନ୍ଦ ସ୍ଥାନରେ ଦର୍ଶାଯିବ।" #: ../data/org.gnome.shell.gschema.xml.in.in.h:9 msgid "App Picker View" msgstr "ଆପ ଗୋଟାଳୀ ଦୃଶ୍ୟ" #: ../data/org.gnome.shell.gschema.xml.in.in.h:10 msgid "Index of the currently selected view in the application picker." msgstr "ପ୍ରୟୋଗ ଗୋଟାଳୀରେ ବର୍ତ୍ତମାନ ବଚ୍ଛିତ ଦୃଶ୍ୟର ଅନୁକ୍ରମ।" #: ../data/org.gnome.shell.gschema.xml.in.in.h:11 msgid "History for command (Alt-F2) dialog" msgstr "ନିର୍ଦ୍ଦେଶ (Alt-F2) ସଂଳାପ ପାଇଁ ପୁରୁଣା ତଥ୍ୟ" #: ../data/org.gnome.shell.gschema.xml.in.in.h:12 msgid "History for the looking glass dialog" msgstr "କାଚ ସଂଳାପ ଦେଖିବା ପାଇଁ ପୁରୁଣା ତଥ୍ୟ" #: ../data/org.gnome.shell.gschema.xml.in.in.h:13 msgid "Always show the 'Log out' menu item in the user menu." msgstr "ସର୍ବଦା 'ଲଗଆଉଟ' ତାଲିକା ବସ୍ତୁକୁ ବ୍ୟବହାରକାରୀ ତାଲିକାରେ ଦର୍ଶାନ୍ତୁ।" #: ../data/org.gnome.shell.gschema.xml.in.in.h:14 msgid "" "This key overrides the automatic hiding of the 'Log out' menu item in single-" "user, single-session situations." msgstr "" "ଏହି ଚାବିଟି ସ୍ୱୟଂଚାଳିତ ଭାବରେ 'ଲଗଆଉଟ' ତାଲିକା ବସ୍ତୁକୁ ଲୁଚାଇବାକୁ ଏକକ-ବ୍ୟବହାରକାରୀ, " "ଏକକ-ଅଧିବେଶନ " "ପରିସ୍ଥିତିରେ ନବଲିଖନ କରିଥାଏ।" #: ../data/org.gnome.shell.gschema.xml.in.in.h:15 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "ସଂଗୁପ୍ତ ଅଥବା ସୁଦୂର ଫାଇଲତନ୍ତ୍ରଗୁଡ଼ିକୁ ସ୍ଥାପନ କରିବା ପାଇଁ ପ୍ରବେଶ ସଂକେତକୁ " "ମନେରଖିବା ଉଚିତ କି" #: ../data/org.gnome.shell.gschema.xml.in.in.h:16 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "'Remember Password' checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "ସେଲ ଏକ ପ୍ରବେଶ ସଂକେତ ମାଗିବ ଯେତେବେଳେ ଏକ ସଂଗୁପ୍ତ ଉପକରଣ ଅଥବା ସୁଦୂର ଫାଇଲତନ୍ତ୍ରକୁ " "ସ୍ଥାପନ " "କରାଯିବ। ଯଦି ପ୍ରବେଶ ସଂକେତକୁ ଭବିଷ୍ୟତ ପାଇଁ ସଂରକ୍ଷଣ କରାଯାଇପାରିବ ତେବେ'ପ୍ରବେଶ ସଂକେତ " "ମନେରଖନ୍ତୁ' " "ଯାଞ୍ଚବାକ୍ସ ଥିବା ଉଚିତ। ଏହି ଚାବି ପୂର୍ବନିର୍ଦ୍ଧାରିତ ସ୍ଥିତିକୁ ସେଟ କରିଥାଏ।" #: ../data/org.gnome.shell.gschema.xml.in.in.h:17 msgid "Show the week date in the calendar" msgstr "କ୍ୟାଲେଣ୍ଡରରେ ସାପ୍ତାହିକ ତାରିଖ ଦର୍ଶାନ୍ତୁ" #: ../data/org.gnome.shell.gschema.xml.in.in.h:18 msgid "If true, display the ISO week date in the calendar." msgstr "ସତ ହେଲେ, କାଲେଣ୍ଡରରେ ISO ସପ୍ତାହ ତାରିଖ ଦେଖାନ୍ତୁ।" #: ../data/org.gnome.shell.gschema.xml.in.in.h:19 msgid "Keybinding to open the application menu" msgstr "ପ୍ରୟୋଗ ମେନୁକୁ ସକ୍ରିୟ କରିବା ପାଇଁ କି ବନ୍ଧନ" #: ../data/org.gnome.shell.gschema.xml.in.in.h:20 msgid "Keybinding to open the application menu." msgstr "ପ୍ରୟୋଗ ମେନୁକୁ ଖୋଲିବା ପାଇଁ କି ବନ୍ଧନ।" #: ../data/org.gnome.shell.gschema.xml.in.in.h:21 msgid "Keybinding to open the \"Show Applications\" view" msgstr "\"ପ୍ରୟୋଗଗୁଡ଼ିକୁ ଦର୍ଶାନ୍ତୁ\" ଦୃଶ୍ୟକୁ ଖୋଲିବା ପାଇଁ କି ବନ୍ଧନ" #: ../data/org.gnome.shell.gschema.xml.in.in.h:22 msgid "" "Keybinding to open the \"Show Applications\" view of the Activities Overview." msgstr "" "କାର୍ଯ୍ୟକଳାପ ସମୀକ୍ଷାର \"ପ୍ରୟୋଗଗୁଡ଼ିକୁ ଦର୍ଶାନ୍ତୁ\" ଦୃଶ୍ୟକୁ ଖୋଲିବା ପାଇଁ କି ବନ୍ଧନ।" #: ../data/org.gnome.shell.gschema.xml.in.in.h:23 msgid "Keybinding to open the overview" msgstr "ସମୀକ୍ଷାକୁ ଖୋଲିବା ପାଇଁ କି ବନ୍ଧନ" #: ../data/org.gnome.shell.gschema.xml.in.in.h:24 msgid "Keybinding to open the Activities Overview." msgstr "କାର୍ଯ୍ୟକଳାପ ସମୀକ୍ଷାକୁ ଖୋଲିବା ପାଇଁ କି ବନ୍ଧନ।" #: ../data/org.gnome.shell.gschema.xml.in.in.h:25 msgid "Keybinding to toggle the visibility of the message tray" msgstr "ସନ୍ଦେଶ ଟ୍ରେର ଦୃଶ୍ୟମାନ୍ୟତାକୁ ଆଗପଛ କରିବା ପାଇଁ କି ବନ୍ଧନ।" #: ../data/org.gnome.shell.gschema.xml.in.in.h:26 msgid "Keybinding to toggle the visibility of the message tray." msgstr "ସନ୍ଦେଶ ଟ୍ରେର ଦୃଶ୍ୟମାନ୍ୟତାକୁ ଆରମ୍ଭ/ବନ୍ଦ କରିବା ପାଇଁ କି ବନ୍ଧନ।" #: ../data/org.gnome.shell.gschema.xml.in.in.h:27 msgid "Keybinding to focus the active notification" msgstr "ସକ୍ରିୟ ବିଜ୍ଞପ୍ତିକୁ ଲକ୍ଷ୍ଯ କରିବା ପାଇଁ କି ବନ୍ଧନ" #: ../data/org.gnome.shell.gschema.xml.in.in.h:28 msgid "Keybinding to focus the active notification." msgstr "ସକ୍ରିୟ ବିଜ୍ଞପ୍ତିକୁ ଲକ୍ଷ୍ଯ କରିବା ପାଇଁ କି ବନ୍ଧନ।" #: ../data/org.gnome.shell.gschema.xml.in.in.h:29 msgid "" "Keybinding that pauses and resumes all running tweens, for debugging purposes" msgstr "" "ଚାଲୁଥିବା ସମସ୍ତ ଟ୍ୱୀନଗୁଡ଼ିକୁ ସ୍ଥିର ରଖିବା ଏବଂ ପୁନଃଚାଳନ କରିବା ପାଇଁ ଥିବା କି " "ବନ୍ଧନ, ତୃଟି ନିବାରଣ " "ଉଦ୍ଦେଶ୍ୟରେ" #: ../data/org.gnome.shell.gschema.xml.in.in.h:30 msgid "Which keyboard to use" msgstr "କେଉଁ କିବୋର୍ଡକୁ ବ୍ୟବହାର କରିବା ଉଚିତ" #: ../data/org.gnome.shell.gschema.xml.in.in.h:31 msgid "The type of keyboard to use." msgstr "ବ୍ୟବହାର କରିବାକୁ ଥିବା କିବୋର୍ଡ ପ୍ରକାର" #: ../data/org.gnome.shell.gschema.xml.in.in.h:32 msgid "Limit switcher to current workspace." msgstr "ପରିବର୍ତ୍ତକକୁ ପ୍ରଚଳିତ କାର୍ଯ୍ୟକ୍ଷେତ୍ର ପାଇଁ ସିମୀତ ରଖନ୍ତୁ।" #: ../data/org.gnome.shell.gschema.xml.in.in.h:33 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "ଯଦି true, ତେବେ କେବଳ ପ୍ରଚଳିତ କାର୍ଯ୍ୟକ୍ଷେତ୍ରରେ ଥିବା ପ୍ରୟୋଗଗୁଡ଼ିକ ପରିବର୍ତ୍ତକରେ " "ଦର୍ଶାଯାଇଥାଏ।" "ଅନ୍ୟଥା, ସମସ୍ତ ପ୍ରୟୋଗଗୁଡ଼ିକୁ ଅନ୍ତର୍ଭୁକ୍ତ କରାଯାଇଥାଏ।" #: ../data/org.gnome.shell.gschema.xml.in.in.h:34 msgid "The application icon mode." msgstr "ପ୍ରୟୋଗ ଚିତ୍ରସଂକେତ ଧାରା।" #: ../data/org.gnome.shell.gschema.xml.in.in.h:35 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-" "only' (shows only the application icon) or 'both'." msgstr "" "ସ୍ୱୀଚରରେ ୱିଣ୍ଡୋଗୁଡ଼ିକ କିପରି ଦର୍ଶାଯିବ ତାହା ପାଇଁ ବିନ୍ୟାସ କରନ୍ତୁ। ବୈଧ " "ସମ୍ଭାବ୍ୟଗୁଡ଼ିକ ହେଉଛି 'କେବଳ-" "ଅଙ୍ଗିଳିଚିହ୍ନ' (ୱିଣ୍ଡୋର ଏକ ଅଙ୍ଗୁଳି ଚିହ୍ନକୁ ଦର୍ଶାନ୍ତୁ), 'app-icon-only' (କେବଳ " "ପ୍ରୟୋଗ ଚିତ୍ର ସଂକେତ " "ଦର୍ଶାଇଥାଏ) ଅଥବା 'ଉଭୟ'।" #: ../data/org.gnome.shell.gschema.xml.in.in.h:36 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "ଯଦି true, ତେବେ କେବଳ ପ୍ରଚଳିତ କାର୍ଯ୍ୟକ୍ଷେତ୍ରରୁ ୱିଣ୍ଡୋଗୁଡ଼ିକ ପରିବର୍ତ୍ତକରେ " "ଦର୍ଶାଯାଇଥାଏ।ଅନ୍ୟଥା, " "ସମସ୍ତ ୱିଣ୍ଡୋଗୁଡ଼ିକୁ ଅନ୍ତର୍ଭୁକ୍ତ କରାଯାଇଥାଏ।" #: ../data/org.gnome.shell.gschema.xml.in.in.h:37 msgid "Attach modal dialog to the parent window" msgstr "ମୂଖ୍ୟ ୱିଣ୍ଡୋରେ ମଡେଲ ସଂଳାପ ସଂଲଗ୍ନ କରନ୍ତୁ" #: ../data/org.gnome.shell.gschema.xml.in.in.h:38 msgid "" "This key overrides the key in org.gnome.mutter when running GNOME Shell." msgstr "" "GNOME ସେଲ ଚାଲିଥିବା ସମୟରେ ଏହି ଚାବିଟି org.gnome.mutter ରେ ଥିବା ଚାବିକୁ ନବଲିଖନ " "କରିଥାଏ।" #: ../data/org.gnome.shell.gschema.xml.in.in.h:39 msgid "Enable edge tiling when dropping windows on screen edges" msgstr "ୱିଣ୍ଡୋଗୁଡ଼ିକୁ ପରଦା ଧାରରେ ରଖିବା ସମୟରେ ଧାର ଟାଇଲକୁ ସକ୍ରିୟ କରନ୍ତୁ" #: ../data/org.gnome.shell.gschema.xml.in.in.h:40 msgid "Workspaces are managed dynamically" msgstr "କାର୍ଯ୍ୟକ୍ଷେତ୍ରଗୁଡ଼ିକ ଅସ୍ଥାୟୀ ଭାବରେ ପରିଚାଳିତ ହୋଇଥାଏ" #: ../data/org.gnome.shell.gschema.xml.in.in.h:41 msgid "Workspaces only on primary monitor" msgstr "କାର୍ଯ୍ୟକ୍ଷେତ୍ର କେବଳ ପ୍ରାଥମିକ ମନିଟରରେ ଥାଏ" #: ../data/org.gnome.shell.gschema.xml.in.in.h:42 msgid "Delay focus changes in mouse mode until the pointer stops moving" msgstr "" "ସୂଚକ ଗତି କରିବା ବନ୍ଦ ନହେଲା ପର୍ଯ୍ୟନ୍ତ ମାଉସ ଧାରାରେ ଲକ୍ଷ୍ଯସ୍ଥଳ ପରିବର୍ତ୍ତନକୁ " "ବିଳମ୍ବ କରନ୍ତୁ" #: ../data/org.gnome.Shell.PortalHelper.desktop.in.h:1 msgid "Captive Portal" msgstr "କେପଟିଭ୍‌ ପୋର୍ଟାଲ" #: ../js/extensionPrefs/main.js:123 #, javascript-format msgid "There was an error loading the preferences dialog for %s:" msgstr "%s ପାଇଁ ପସନ୍ଦ ସଂଳାପ ଧାରଣ କରିବା ସମୟରେ ତ୍ରୁଟି:" #: ../js/extensionPrefs/main.js:155 msgid "GNOME Shell Extensions" msgstr "GNOME ସେଲ ଅନୁଲଗ୍ନଗୁଡ଼ିକ" #: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143 #: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:452 #: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399 #: ../js/ui/status/network.js:915 msgid "Cancel" msgstr "ବାତିଲ କରନ୍ତୁ" #: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:217 msgid "Next" msgstr "ପରବର୍ତ୍ତୀ" #: ../js/gdm/authPrompt.js:213 ../js/ui/shellMountOperation.js:403 #: ../js/ui/unlockDialog.js:59 msgid "Unlock" msgstr "ଖୋଲନ୍ତୁ" #: ../js/gdm/authPrompt.js:215 msgctxt "button" msgid "Sign In" msgstr "ସାଇନ ଇନ" #: ../js/gdm/loginDialog.js:269 msgid "Choose Session" msgstr "ଅଧିବେଶନ ବାଛନ୍ତୁ" #: ../js/gdm/loginDialog.js:429 msgid "Not listed?" msgstr "ତାଲିକାଭୁକ୍ତ ନୁହଁ କି?" #: ../js/gdm/loginDialog.js:614 #, javascript-format msgid "(e.g., user or %s)" msgstr "(ଯେପରିକି, %s ପାଇଁ ଚାଳକ)" #: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:269 #: ../js/ui/components/networkAgent.js:287 msgid "Username: " msgstr "ଚାଳକ ନାମ: " #: ../js/gdm/loginDialog.js:922 msgid "Login Window" msgstr "ଲଗଇନ ୱିଣ୍ଡୋ" #: ../js/gdm/util.js:323 msgid "Authentication error" msgstr "ବୈଧିକରଣ ତ୍ରୁଟି" #: ../js/gdm/util.js:453 msgid "(or swipe finger)" msgstr "(ଅଥବା ଅଙ୍ଗୁଳି ବୁଲାନ୍ତୁ)" #: ../js/misc/util.js:115 msgid "Command not found" msgstr "ନିର୍ଦ୍ଦେଶ ମିଳିଲା ନାହିଁ" #: ../js/misc/util.js:148 msgid "Could not parse command:" msgstr "ନିର୍ଦ୍ଦେଶ ବିଶ୍ଲେଷିତ କରିହେଲା ନାହିଁ:" #: ../js/misc/util.js:156 #, javascript-format msgid "Execution of “%s” failed:" msgstr "“%s” ର ନିଷ୍ପାଦନ ବିଫଳ ହୋଇଛି:" #: ../js/portalHelper/main.js:85 msgid "Web Authentication Redirect" msgstr "ୱେବ ବୈଧିକରଣ ଦିଗ ପରିବର୍ତ୍ତନ" #: ../js/ui/appDisplay.js:772 msgid "Frequently used applications will appear here" msgstr "ବାରମ୍ବାର ବ୍ୟବହୃତ ପ୍ରୟୋଗଗୁଡ଼ିକ ଏଠାରେ ଦୃଶ୍ୟମାନ ହେବ" #: ../js/ui/appDisplay.js:883 msgid "Frequent" msgstr "ବାରମ୍ବାର" #: ../js/ui/appDisplay.js:890 msgid "All" msgstr "ସମସ୍ତ" #: ../js/ui/appDisplay.js:1789 msgid "New Window" msgstr "ନୂତନ ୱିଣ୍ଡୋ" #: ../js/ui/appDisplay.js:1815 ../js/ui/dash.js:285 msgid "Remove from Favorites" msgstr "ମନପସନ୍ଦଗୁଡ଼ିକ ମଧ୍ଯରୁ କାଢ଼ନ୍ତୁ" #: ../js/ui/appDisplay.js:1821 msgid "Add to Favorites" msgstr "ମନପସନ୍ଦ ମଧ୍ଯରେ ଯୋଗକରନ୍ତୁ" #: ../js/ui/appDisplay.js:1830 msgid "Show Details" msgstr "ବିସ୍ତୃତ ବିବରଣୀ ଦର୍ଶାନ୍ତୁ" #: ../js/ui/appFavorites.js:132 #, javascript-format msgid "%s has been added to your favorites." msgstr "%s କୁ ଆପଣଙ୍କର ମନପସନ୍ଦରେ ଯୋଗ କରାଯାଇଛି।" #: ../js/ui/appFavorites.js:166 #, javascript-format msgid "%s has been removed from your favorites." msgstr "%s କୁ ମନପସନ୍ଦରୁ ବାହାର କରିଦିଆଯାଇଛି।" #: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:813 #: ../js/ui/status/system.js:337 msgid "Settings" msgstr "ବିନ୍ଯାସ" #: ../js/ui/backgroundMenu.js:21 msgid "Change Background…" msgstr "ପୃଷ୍ଠଭୂମିକୁ ପରିବର୍ତ୍ତନ କରନ୍ତୁ…" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. */ #: ../js/ui/calendar.js:67 msgctxt "event list time" msgid "All Day" msgstr "ସାରା ଦିନ" #. Translators: Shown in calendar event list, if 24h format, #. \u2236 is a ratio character, similar to : */ #: ../js/ui/calendar.js:73 msgctxt "event list time" msgid "%H∶%M" msgstr "%H∶%M" #. Translators: Shown in calendar event list, if 12h format, #. \u2236 is a ratio character, similar to : and \u2009 is #. a thin space */ #: ../js/ui/calendar.js:82 msgctxt "event list time" msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. */ #: ../js/ui/calendar.js:113 msgctxt "grid sunday" msgid "S" msgstr "S" #. Translators: Calendar grid abbreviation for Monday */ #: ../js/ui/calendar.js:115 msgctxt "grid monday" msgid "M" msgstr "M" #. Translators: Calendar grid abbreviation for Tuesday */ #: ../js/ui/calendar.js:117 msgctxt "grid tuesday" msgid "T" msgstr "T" #. Translators: Calendar grid abbreviation for Wednesday */ #: ../js/ui/calendar.js:119 msgctxt "grid wednesday" msgid "W" msgstr "W" #. Translators: Calendar grid abbreviation for Thursday */ #: ../js/ui/calendar.js:121 msgctxt "grid thursday" msgid "T" msgstr "T" #. Translators: Calendar grid abbreviation for Friday */ #: ../js/ui/calendar.js:123 msgctxt "grid friday" msgid "F" msgstr "F" #. Translators: Calendar grid abbreviation for Saturday */ #: ../js/ui/calendar.js:125 msgctxt "grid saturday" msgid "S" msgstr "S" #. Translators: Event list abbreviation for Sunday. #. * #. * NOTE: These list abbreviations are normally not shown together #. * so they need to be unique (e.g. Tuesday and Thursday cannot #. * both be 'T'). #. */ #: ../js/ui/calendar.js:138 msgctxt "list sunday" msgid "Su" msgstr "Su" #. Translators: Event list abbreviation for Monday */ #: ../js/ui/calendar.js:140 msgctxt "list monday" msgid "M" msgstr "M" #. Translators: Event list abbreviation for Tuesday */ #: ../js/ui/calendar.js:142 msgctxt "list tuesday" msgid "T" msgstr "T" #. Translators: Event list abbreviation for Wednesday */ #: ../js/ui/calendar.js:144 msgctxt "list wednesday" msgid "W" msgstr "W" #. Translators: Event list abbreviation for Thursday */ #: ../js/ui/calendar.js:146 msgctxt "list thursday" msgid "Th" msgstr "Th" #. Translators: Event list abbreviation for Friday */ #: ../js/ui/calendar.js:148 msgctxt "list friday" msgid "F" msgstr "F" #. Translators: Event list abbreviation for Saturday */ #: ../js/ui/calendar.js:150 msgctxt "list saturday" msgid "S" msgstr "S" #: ../js/ui/calendar.js:453 msgid "Previous month" msgstr "ପୂର୍ବ ମାସ" #: ../js/ui/calendar.js:463 msgid "Next month" msgstr "ପର ମାସ" #. Translators: Text to show if there are no events */ #: ../js/ui/calendar.js:781 msgid "Nothing Scheduled" msgstr "କିଛି ଯୋଜନା କରାହୋଇନାହିଁ" #. Translators: Shown on calendar heading when selected day occurs on current year */ #: ../js/ui/calendar.js:799 msgctxt "calendar heading" msgid "%A, %B %d" msgstr "%A, %B %d" #. Translators: Shown on calendar heading when selected day occurs on different year */ #: ../js/ui/calendar.js:802 msgctxt "calendar heading" msgid "%A, %B %d, %Y" msgstr "%A, %B %d, %Y" #: ../js/ui/calendar.js:813 msgid "Today" msgstr "ଆଜି" #: ../js/ui/calendar.js:817 msgid "Tomorrow" msgstr "ଆସନ୍ତାକାଲି" #: ../js/ui/calendar.js:828 msgid "This week" msgstr "ଏହି ସପ୍ତାହ" #: ../js/ui/calendar.js:836 msgid "Next week" msgstr "ପରବର୍ତ୍ତୀ ସପ୍ତାହ" #: ../js/ui/components/automountManager.js:91 msgid "External drive connected" msgstr "ବାହ୍ୟ ଡ୍ରାଇଭ ସଂଯକ୍ତ ଅଛି" #: ../js/ui/components/automountManager.js:102 msgid "External drive disconnected" msgstr "ବାହ୍ୟ ଡ୍ରାଇଭ ସଂଯକ୍ତ ଅଛି" #: ../js/ui/components/autorunManager.js:296 msgid "Removable Devices" msgstr "କଢ଼ାଯୋଗ୍ୟ ଉପକରଣଗୁଡ଼ିକ" #: ../js/ui/components/autorunManager.js:596 #, javascript-format msgid "Open with %s" msgstr "%s ସହିତ ଖୋଲନ୍ତୁ" #: ../js/ui/components/autorunManager.js:622 msgid "Eject" msgstr "ବାହାର କରନ୍ତୁ" #: ../js/ui/components/keyring.js:94 ../js/ui/components/polkitAgent.js:285 msgid "Password:" msgstr "ପ୍ରବେଶ ସଙ୍କେତ:" #: ../js/ui/components/keyring.js:120 msgid "Type again:" msgstr "ପୁଣିଥରେ ଲେଖନ୍ତୁ:" #: ../js/ui/components/networkAgent.js:138 ../js/ui/status/network.js:277 #: ../js/ui/status/network.js:359 ../js/ui/status/network.js:918 msgid "Connect" msgstr "ସଂଯୋଗ କରନ୍ତୁ" #: ../js/ui/components/networkAgent.js:231 #: ../js/ui/components/networkAgent.js:243 #: ../js/ui/components/networkAgent.js:271 #: ../js/ui/components/networkAgent.js:291 #: ../js/ui/components/networkAgent.js:301 msgid "Password: " msgstr "ପ୍ରବେଶ ସଙ୍କେତ: " #: ../js/ui/components/networkAgent.js:236 msgid "Key: " msgstr "କି: " #: ../js/ui/components/networkAgent.js:275 msgid "Identity: " msgstr "ପରିଚୟ: " #: ../js/ui/components/networkAgent.js:277 msgid "Private key password: " msgstr "ବ୍ୟକ୍ତିଗତ କି ପ୍ରବେଶ ସଂକେତ: " #: ../js/ui/components/networkAgent.js:289 msgid "Service: " msgstr "ସର୍ଭିସ: " #: ../js/ui/components/networkAgent.js:318 msgid "Authentication required by wireless network" msgstr "ବେତାର ନେଟୱର୍କ ପାଇଁ ପ୍ରାଧିକରଣ ଆବଶ୍ୟକ" #: ../js/ui/components/networkAgent.js:319 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network " "“%s”." msgstr "" "ବେତାର ନେଟୱର୍କ “%s” କୁ ଅଭିଗମ୍ୟ କରିବା ପାଇଁ ପ୍ରବେଶ ସଂକେତ କିମ୍ବା ସଂଗୁପ୍ତ କିଗୁଡ଼ିକ " "ଆବଶ୍ୟକ।" #: ../js/ui/components/networkAgent.js:323 msgid "Wired 802.1X authentication" msgstr "ତାରଯୁକ୍ତ 802.1X ବୈଧିକରଣ" #: ../js/ui/components/networkAgent.js:325 msgid "Network name: " msgstr "ନେଟୱାର୍କ ନାମ: " #: ../js/ui/components/networkAgent.js:330 msgid "DSL authentication" msgstr "DSL ବୈଧିକରଣ" #: ../js/ui/components/networkAgent.js:337 msgid "PIN code required" msgstr "PIN ସଂକେତ ଆବଶ୍ୟକ" #: ../js/ui/components/networkAgent.js:338 msgid "PIN code is needed for the mobile broadband device" msgstr "ମୋବାଇଲ ବ୍ରୋଡବ୍ୟାଣ୍ଡ ଉପକରଣ ପାଇଁ PIN ସଂକେତ ଆବଶ୍ୟକ" #: ../js/ui/components/networkAgent.js:339 msgid "PIN: " msgstr "PIN: " #: ../js/ui/components/networkAgent.js:345 msgid "Mobile broadband network password" msgstr "ମୋବାଇଲ ବ୍ରୋଡ଼ବ୍ୟାଣ୍ଡ ନେଟୱର୍କ ପ୍ରବେଶ ସଂକେତ" #: ../js/ui/components/networkAgent.js:346 #, javascript-format msgid "A password is required to connect to “%s”." msgstr "“%s” ସହିତ ସଂଯୁକ୍ତ ହେବା ପାଇଁ ଗୋଟିଏ ପ୍ରବେଶ ସଂକେତ ଆବଶ୍ୟକ।" #: ../js/ui/components/polkitAgent.js:54 msgid "Authentication Required" msgstr "ବୈଧିକରଣ ଆବଶ୍ୟକ" #: ../js/ui/components/polkitAgent.js:96 msgid "Administrator" msgstr "ପ୍ରଶାସକ" #: ../js/ui/components/polkitAgent.js:175 msgid "Authenticate" msgstr "ବୈଧିକୃତ" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. */ #: ../js/ui/components/polkitAgent.js:271 ../js/ui/shellMountOperation.js:383 msgid "Sorry, that didn't work. Please try again." msgstr "ଦୁଖିତଃ, ତାହା କାର୍ଯ୍ୟକାରୀ ହେଲା ନହିଁ। ଦୟାକରି ପୁଣିଥରେ ଚେଷ୍ଟା କରନ୍ତୁ।" #: ../js/ui/components/telepathyClient.js:240 msgid "Invitation" msgstr "ଆମନ୍ତ୍ରଣ" #: ../js/ui/components/telepathyClient.js:300 msgid "Call" msgstr "ଡାକରା" #: ../js/ui/components/telepathyClient.js:316 msgid "File Transfer" msgstr "ଫାଇଲ ସ୍ଥାନାନ୍ତରଣ" #: ../js/ui/components/telepathyClient.js:420 msgid "Chat" msgstr "ଆଳାପ" #: ../js/ui/components/telepathyClient.js:483 msgid "Unmute" msgstr "ଧ୍ୱନି ଚାଲୁ କରନ୍ତୁ" #: ../js/ui/components/telepathyClient.js:483 msgid "Mute" msgstr "ଧ୍ୱନିକୁ ମୁକ କରନ୍ତୁ" #. Translators: Time in 24h format */ #: ../js/ui/components/telepathyClient.js:953 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" */ #: ../js/ui/components/telepathyClient.js:960 msgid "Yesterday, %H∶%M" msgstr "ଗତକାଲି,%H:%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" */ #: ../js/ui/components/telepathyClient.js:967 msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" */ #: ../js/ui/components/telepathyClient.js:974 msgid "%B %d, %H∶%M" msgstr "%B %d, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" */ #: ../js/ui/components/telepathyClient.js:980 msgid "%B %d %Y, %H∶%M" msgstr "%B %d %Y, %H∶%M" #. Translators: Time in 24h format */ #: ../js/ui/components/telepathyClient.js:986 msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" */ #: ../js/ui/components/telepathyClient.js:993 msgid "Yesterday, %l∶%M %p" msgstr "ଗତକାଲି, %l:%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" */ #: ../js/ui/components/telepathyClient.js:1000 msgid "%A, %l∶%M %p" msgstr "%A, %l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" */ #: ../js/ui/components/telepathyClient.js:1007 msgid "%B %d, %l∶%M %p" msgstr "%B %d, %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm"*/ #: ../js/ui/components/telepathyClient.js:1013 msgid "%B %d %Y, %l∶%M %p" msgstr "%B %d %Y, %l∶%M %p" #. Translators: this is the other person changing their old IM name to their new #. IM name. */ #: ../js/ui/components/telepathyClient.js:1045 #, javascript-format msgid "%s is now known as %s" msgstr "%s ବର୍ତ୍ତମାନ %s ଭାବରେ ପରିଚିତ" #. translators: argument is a room name like #. * room@jabber.org for example. */ #: ../js/ui/components/telepathyClient.js:1149 #, javascript-format msgid "Invitation to %s" msgstr "%s କୁ ଆମନ୍ତ୍ରଣ" #. translators: first argument is the name of a contact and the second #. * one the name of a room. "Alice is inviting you to join room@jabber.org #. * for example. */ #: ../js/ui/components/telepathyClient.js:1157 #, javascript-format msgid "%s is inviting you to join %s" msgstr "%s ଆପଣଙ୍କୁ %s ରେ ଯୋଗଦାନ କରିବା ପାଇଁ ଆମନ୍ତ୍ରଣ କରୁଛନ୍ତି" #: ../js/ui/components/telepathyClient.js:1159 #: ../js/ui/components/telepathyClient.js:1194 #: ../js/ui/components/telepathyClient.js:1228 #: ../js/ui/components/telepathyClient.js:1286 msgid "Decline" msgstr "ମନା କରନ୍ତୁ" #: ../js/ui/components/telepathyClient.js:1165 #: ../js/ui/components/telepathyClient.js:1234 #: ../js/ui/components/telepathyClient.js:1291 msgid "Accept" msgstr "ଗ୍ରହଣ କରନ୍ତୁ" #. translators: argument is a contact name like Alice for example. */ #: ../js/ui/components/telepathyClient.js:1184 #, javascript-format msgid "Video call from %s" msgstr "%s ଠାରୁ ଭିଡିଓ ଡାକରା" #. translators: argument is a contact name like Alice for example. */ #: ../js/ui/components/telepathyClient.js:1187 #, javascript-format msgid "Call from %s" msgstr "%s ଠାରୁ ଡାକରା" #. translators: this is a button label (verb), not a noun */ #: ../js/ui/components/telepathyClient.js:1201 msgid "Answer" msgstr "ଉତ୍ତର" #. To translators: The first parameter is #. * the contact's alias and the second one is the #. * file name. The string will be something #. * like: "Alice is sending you test.ogg" #. */ #: ../js/ui/components/telepathyClient.js:1222 #, javascript-format msgid "%s is sending you %s" msgstr "%s ଆପଣଙ୍କୁ %s ପଠାଉଅଛି" #. To translators: The parameter is the contact's alias */ #: ../js/ui/components/telepathyClient.js:1251 #, javascript-format msgid "%s would like permission to see when you are online" msgstr "ଆପଣ କେତେ ବେଳେ ଅନଲାଇନ ଆସୁଛନ୍ତି ଦେଖିବା ପାଇଁ %s କୁ ଅନୁମତି ଆବଶ୍ୟକ କରୁଛି" #: ../js/ui/components/telepathyClient.js:1337 msgid "Network error" msgstr "ନେଟୱର୍କ ତ୍ରୁଟି" #: ../js/ui/components/telepathyClient.js:1339 msgid "Authentication failed" msgstr "ବୈଧିକରଣ ବିଫଳ ହେଲା" #: ../js/ui/components/telepathyClient.js:1341 msgid "Encryption error" msgstr "ସଂଗୁପ୍ତ ତ୍ରୁଟି" #: ../js/ui/components/telepathyClient.js:1343 msgid "Certificate not provided" msgstr "ପ୍ରମାଣପତ୍ର ଦିଆଯାଇନାହିଁ" #: ../js/ui/components/telepathyClient.js:1345 msgid "Certificate untrusted" msgstr "ପ୍ରମାଣପତ୍ର ବିଶ୍ୱସ୍ଥ ନୁହଁ" #: ../js/ui/components/telepathyClient.js:1347 msgid "Certificate expired" msgstr "ପ୍ରମାଣପତ୍ରର ସମୟ ସମାପ୍ତ" #: ../js/ui/components/telepathyClient.js:1349 msgid "Certificate not activated" msgstr "ପ୍ରମାଣପତ୍ର ସକ୍ରିୟ କରାଯାଇନାହିଁ" #: ../js/ui/components/telepathyClient.js:1351 msgid "Certificate hostname mismatch" msgstr "ପ୍ରମାଣପତ୍ର ହୋଷ୍ଟ ନାମ ମେଳଖାଉ ନାହିଁ" #: ../js/ui/components/telepathyClient.js:1353 msgid "Certificate fingerprint mismatch" msgstr "ପ୍ରମାଣପତ୍ର ଅଙ୍ଗୁଳିଚିହ୍ନ ମେଳଖାଉନାହିଁ" #: ../js/ui/components/telepathyClient.js:1355 msgid "Certificate self-signed" msgstr "ପ୍ରମାଣପତ୍ର ନିଜ ଦ୍ୱାରା ହସ୍ତାକ୍ଷର ହୋଇଛି" #: ../js/ui/components/telepathyClient.js:1357 msgid "Status is set to offline" msgstr "ସ୍ଥିତିକୁ ଅଫଲାଇନ ସେଟ କରାଯାଇଛି" #: ../js/ui/components/telepathyClient.js:1359 msgid "Encryption is not available" msgstr "ସଂଗୁପ୍ତ ଉପଲବ୍ଧ ନାହିଁ" #: ../js/ui/components/telepathyClient.js:1361 msgid "Certificate is invalid" msgstr "ପ୍ରମାଣପତ୍ରଟି ଅବୈଧ ଅଟେ" #: ../js/ui/components/telepathyClient.js:1363 msgid "Connection has been refused" msgstr "ସଂଯୋଗକୁ ବାରଣ ହୋଇଛି" #: ../js/ui/components/telepathyClient.js:1365 msgid "Connection can't be established" msgstr "ସଂଯୋଗ ସ୍ଥାପନ କରିପାରିବେ ନାହିଁ" #: ../js/ui/components/telepathyClient.js:1367 msgid "Connection has been lost" msgstr "ସଂଯୋଗ ବିଚ୍ଛିନ୍ନ ହୋଇଛି" #: ../js/ui/components/telepathyClient.js:1369 msgid "This account is already connected to the server" msgstr "ଏହି ଖାତାଟି ସର୍ଭର ସହିତ ପୂର୍ବରୁ ସଂଯୁକ୍ତ ଅଛି" #: ../js/ui/components/telepathyClient.js:1371 msgid "" "Connection has been replaced by a new connection using the same resource" msgstr "" "ସମାନ ଉତ୍ସ ବ୍ୟବହାର କରି ଏହି ସଂଯୋଗଟି ଏକ ନୂତନ ସଂଯୋଗ ଦ୍ୱାରା ପରିବର୍ତ୍ତିତ ହୋଇଛି" #: ../js/ui/components/telepathyClient.js:1373 msgid "The account already exists on the server" msgstr "ସର୍ଭରରେ ଏହି ଖାତାଟି ପୂର୍ବରୁ ଅବସ୍ଥିତ ଅଛି" #: ../js/ui/components/telepathyClient.js:1375 msgid "Server is currently too busy to handle the connection" msgstr "ଏହି ସଂଯୋଗକୁ କାର୍ଯ୍ୟକାରୀ କରିବା ପାଇଁ ସର୍ଭର ବର୍ତ୍ତମାନ ବ୍ୟସ୍ତ ଅଛି" #: ../js/ui/components/telepathyClient.js:1377 msgid "Certificate has been revoked" msgstr "ପ୍ରମାଣପତ୍ରଟିର ସମୟ ସମାପ୍ତ ହୋଇଛି" #: ../js/ui/components/telepathyClient.js:1379 msgid "" "Certificate uses an insecure cipher algorithm or is cryptographically weak" msgstr "" "ପ୍ରମାଣପତ୍ରଟି ଗୋଟିଏ ଅସୁରକ୍ଷିତ ଆଲଗୋରିଦମ ବ୍ୟବହାର କରିଥାଏ କିମ୍ବା ତାହା " "କ୍ରିପ୍ଟୋଗ୍ରାଫି ଅନୁଯାୟୀ ଦୁର୍ବଳ " "ଅଟେ" #: ../js/ui/components/telepathyClient.js:1381 msgid "" "The length of the server certificate, or the depth of the server certificate " "chain, exceed the limits imposed by the cryptography library" msgstr "" "ସର୍ଭର ପ୍ରମାଣପତ୍ରର ଲମ୍ବ, ଅଥବା ସର୍ଭର ପ୍ରମାଣପତ୍ର ସୃଙ୍ଖଳର ଗଭୀରତା, କ୍ରିପ୍ଟୋଗ୍ରାଫି " "ଲାଇବ୍ରେରୀ " "ଦ୍ୱାରା ନିୟୋଜିତ ସୀମାକୁ ଅତିକ୍ରମ କରିଥାଏ" #: ../js/ui/components/telepathyClient.js:1383 msgid "Internal error" msgstr "ଆଭ୍ଯନ୍ତରୀଣ ତ୍ରୁଟି" #. translators: argument is the account name, like #. * name@jabber.org for example. */ #: ../js/ui/components/telepathyClient.js:1393 #, javascript-format msgid "Unable to connect to %s" msgstr "%s ସହିତ ସଂଯୋଗ ହେବାରେ ଅସମର୍ଥ" #: ../js/ui/components/telepathyClient.js:1398 msgid "View account" msgstr "ଖାତା ଦେଖନ୍ତୁ" #: ../js/ui/components/telepathyClient.js:1435 msgid "Unknown reason" msgstr "ଅଜ୍ଞାତ କାରଣ" #: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:154 msgid "Windows" msgstr "Windows" #: ../js/ui/dash.js:249 ../js/ui/dash.js:287 msgid "Show Applications" msgstr "ପ୍ରୟୋଗଗୁଡ଼ିକୁ ଦର୍ଶାନ୍ତୁ" #: ../js/ui/dash.js:445 msgid "Dash" msgstr "ଡ୍ୟାସ" #: ../js/ui/dateMenu.js:96 msgid "Open Calendar" msgstr "କ୍ୟାଲେଣ୍ଡର ଖୋଲନ୍ତୁ" #: ../js/ui/dateMenu.js:100 msgid "Open Clocks" msgstr "ଘଡ଼ିଗୁଡ଼ିକୁ ଖୋଲନ୍ତୁ" #: ../js/ui/dateMenu.js:107 msgid "Date & Time Settings" msgstr "ତାରିଖ ଏବଂ ସମୟ ସେଟିଙ୍ଗ" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM"). #. */ #: ../js/ui/dateMenu.js:204 msgid "%A %B %e, %Y" msgstr "%A %B %e, %Y" #: ../js/ui/endSessionDialog.js:64 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "ଲଗଆଉଟ %s" #: ../js/ui/endSessionDialog.js:65 msgctxt "title" msgid "Log Out" msgstr "ଲଗ ଆଉଟ" #: ../js/ui/endSessionDialog.js:67 #, javascript-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "%s ସ୍ୱୟଂଚାଳିତ ଭାବରେ %d ସେକଣ୍ଡରେ ଲଗ ଆଉଟ ହେବ।" msgstr[1] "%s ସ୍ୱୟଂଚାଳିତ ଭାବରେ %d ସେକଣ୍ଡରେ ଲଗ ଆଉଟ ହେବ।" #: ../js/ui/endSessionDialog.js:72 #, javascript-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "ଆପଣ ସ୍ୱୟଂଚାଳିତ ଭାବରେ %d ସେକଣ୍ଡରେ ଲଗ ଆଉଟ ହେବ।" msgstr[1] "ଆପଣ ସ୍ୱୟଂଚାଳିତ ଭାବରେ %d ସେକଣ୍ଡରେ ଲଗ ଆଉଟ ହେବ।" #: ../js/ui/endSessionDialog.js:78 msgctxt "button" msgid "Log Out" msgstr "ଲଗଆଉଟ" #: ../js/ui/endSessionDialog.js:84 msgctxt "title" msgid "Power Off" msgstr "ବିଦ୍ୟୁତ ପ୍ରବାହ ବନ୍ଦ କରନ୍ତୁ" #: ../js/ui/endSessionDialog.js:85 msgctxt "title" msgid "Install Updates & Power Off" msgstr "ଅଦ୍ୟତନଗୁଡ଼ିକୁ ସ୍ଥାପନ କରନ୍ତୁ ଏବଂ ଅଫ୍‌ କରନ୍ତୁ" #: ../js/ui/endSessionDialog.js:87 #, javascript-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "ତନ୍ତ୍ରଟି ସ୍ୱୟଂଚାଳିତ ଭାବରେ %d ସେକଣ୍ଡରେ ବିଦ୍ୟୁତ ପ୍ରବାହ ବନ୍ଦ ହେବ।" msgstr[1] "ତନ୍ତ୍ରଟି ସ୍ୱୟଂଚାଳିତ ଭାବରେ %d ସେକଣ୍ଡରେ ବିଦ୍ୟୁତ ପ୍ରବାହ ବନ୍ଦ ହେବ।" #: ../js/ui/endSessionDialog.js:91 msgctxt "checkbox" msgid "Install pending software updates" msgstr "ବଳକା ସଫ୍ଟୱେର ଅଦ୍ୟତନଗୁଡ଼ିକୁ ସ୍ଥାପନ କରନ୍ତୁ" #: ../js/ui/endSessionDialog.js:94 ../js/ui/endSessionDialog.js:111 msgctxt "button" msgid "Restart" msgstr "ପୂନଃପ୍ରାରମ୍ଭ କରନ୍ତୁ" #: ../js/ui/endSessionDialog.js:96 msgctxt "button" msgid "Power Off" msgstr "ବିଦ୍ୟୁତ ପ୍ରବାହ ବନ୍ଦ କରନ୍ତୁ" #: ../js/ui/endSessionDialog.js:103 msgctxt "title" msgid "Restart" msgstr "ପୂନଃପ୍ରାରମ୍ଭ କରନ୍ତୁ" #: ../js/ui/endSessionDialog.js:105 #, javascript-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "ତନ୍ତ୍ର ସ୍ୱୟଂଚାଳିତ ଭାବରେ %d ସେକଣ୍ଡରେ ପୁନଃପ୍ରାରମ୍ଭ ହେବ।" msgstr[1] "ତନ୍ତ୍ର ସ୍ୱୟଂଚାଳିତ ଭାବରେ %d ସେକଣ୍ଡରେ ପୁନଃପ୍ରାରମ୍ଭ ହେବ।" #: ../js/ui/endSessionDialog.js:119 msgctxt "title" msgid "Restart & Install Updates" msgstr "ପୁନଃଚାଳନ କରନ୍ତୁ ଏବଂ ଅଦ୍ୟତନଗୁଡ଼ିକୁ ସ୍ଥାପନ କରନ୍ତୁ" #: ../js/ui/endSessionDialog.js:121 #, javascript-format msgid "The system will automatically restart and install updates in %d second." msgid_plural "" "The system will automatically restart and install updates in %d seconds." msgstr[0] "" "ତନ୍ତ୍ର ସ୍ୱୟଂଚାଳିତ ଭାବରେ %d ସେକଣ୍ଡରେ ପୁନଃପ୍ରାରମ୍ଭ ହେବ ଏବଂ ଅଦ୍ୟତନଗୁଡ଼ିକୁ ସ୍ଥାପନ " "କରିବ।" msgstr[1] "" "ତନ୍ତ୍ର ସ୍ୱୟଂଚାଳିତ ଭାବରେ %d ସେକଣ୍ଡରେ ପୁନଃପ୍ରାରମ୍ଭ ହେବ ଏବଂ ଅଦ୍ୟତନଗୁଡ଼ିକୁ ସ୍ଥାପନ " "କରିବ।" #: ../js/ui/endSessionDialog.js:127 msgctxt "button" msgid "Restart & Install" msgstr "ପୁନଃଚାଳନ କରନ୍ତୁ ଏବଂ ସ୍ଥାପନ କରନ୍ତୁ" #: ../js/ui/endSessionDialog.js:128 msgctxt "button" msgid "Install & Power Off" msgstr "ସ୍ଥାପନ କରନ୍ତୁ ଏବଂ ଅଫ୍‌ କରନ୍ତୁ" #: ../js/ui/endSessionDialog.js:129 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "ଅଦ୍ୟତନଗୁଡ଼ିକ ସ୍ଥାପିତ ହୋଇସାରିବା ପରେ ଅଫ୍‌ କରନ୍ତୁ" #: ../js/ui/endSessionDialog.js:338 msgid "Running on battery power: please plug in before installing updates." msgstr "" "ବ୍ୟାଟେରୀରେ ଚାଲୁଅଛି: ଅଦ୍ୟତନଗୁଡ଼ିକୁ ସ୍ଥାପନ କରିବା ପୂର୍ବରୁ ପ୍ଲଗଇନ୍‌ କରନ୍ତୁ।" #: ../js/ui/endSessionDialog.js:355 msgid "Some applications are busy or have unsaved work." msgstr "କିଛି ପ୍ରୟୋଗଗୁଡ଼ିକ ବ୍ୟସ୍ତ ଅଛି କିମ୍ବା ସେଥିରେ କିଛି କାମ ଅସଂରକ୍ଷିତ ଅଛି।" #: ../js/ui/endSessionDialog.js:362 msgid "Other users are logged in." msgstr "ଅନ୍ୟ ବ୍ୟବହାରକାରୀମାନେ ଲଗଇନ ହୋଇଛନ୍ତି।" #. Translators: Remote here refers to a remote session, like a ssh login */ #: ../js/ui/endSessionDialog.js:640 #, javascript-format msgid "%s (remote)" msgstr "%s (ଦୂରବର୍ତ୍ତୀ)" #. Translators: Console here refers to a tty like a VT console */ #: ../js/ui/endSessionDialog.js:643 #, javascript-format msgid "%s (console)" msgstr "%s (କୋନସୋଲ)" #: ../js/ui/extensionDownloader.js:199 msgid "Install" msgstr "ସ୍ଥାପନ କରନ୍ତୁ" #: ../js/ui/extensionDownloader.js:204 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "“%s” କୁ extensions.gnome.org ରୁ ଆହରଣ କରି ସ୍ଥାପନ କରିବେ କି?" #: ../js/ui/keyboard.js:692 ../js/ui/status/keyboard.js:523 msgid "Keyboard" msgstr "କିବୋର୍ଡ" #: ../js/ui/lookingGlass.js:643 msgid "No extensions installed" msgstr "କୌଣସି ଅନୁଲଗ୍ନ ସ୍ଥାପିତ ହୋଇନାହିଁ" #. Translators: argument is an extension UUID. */ #: ../js/ui/lookingGlass.js:697 #, javascript-format msgid "%s has not emitted any errors." msgstr "%s କୌଣସି ତ୍ରୁଟି ଚିହ୍ନଟ କରିନାହିଁ।" #: ../js/ui/lookingGlass.js:703 msgid "Hide Errors" msgstr "ତୃଟିଗୁଡ଼ିକୁ ଲୁଚାନ୍ତୁ" #: ../js/ui/lookingGlass.js:707 ../js/ui/lookingGlass.js:767 msgid "Show Errors" msgstr "ତୃଟି ଗୁଡିକୁ ଦର୍ଶାନ୍ତୁ" #: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:71 #: ../js/ui/status/location.js:176 msgid "Enabled" msgstr "ସକ୍ରିୟ" #. Translators: this is for a network device that cannot be activated #. because it's disabled by rfkill (airplane mode) */ #. translators: #. * The device has been disabled #: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:179 #: ../js/ui/status/network.js:592 ../src/gvc/gvc-mixer-control.c:1830 msgid "Disabled" msgstr "ନିଷ୍କ୍ରିୟ" #: ../js/ui/lookingGlass.js:721 msgid "Error" msgstr "ତୃଟି" #: ../js/ui/lookingGlass.js:723 msgid "Out of date" msgstr "ତାରିଖ ବାହାରେ" #: ../js/ui/lookingGlass.js:725 msgid "Downloading" msgstr "ଆହରଣ କରୁଅଛି" #: ../js/ui/lookingGlass.js:749 msgid "View Source" msgstr "ଉତ୍ସକୁ ଦେଖନ୍ତୁ" #: ../js/ui/lookingGlass.js:758 msgid "Web Page" msgstr "ୱେବ ପୃଷ୍ଠା" #: ../js/ui/messageTray.js:1327 msgid "Open" msgstr "ଖୋଲନ୍ତୁ" #: ../js/ui/messageTray.js:1334 msgid "Remove" msgstr "ବାହାର କରନ୍ତୁ" #: ../js/ui/messageTray.js:1631 msgid "Notifications" msgstr "ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ" #: ../js/ui/messageTray.js:1638 msgid "Clear Messages" msgstr "ସନ୍ଦେଶଗୁଡ଼ିକୁ ସଫାକରନ୍ତୁ" #: ../js/ui/messageTray.js:1657 msgid "Notification Settings" msgstr "ବିଜ୍ଞପ୍ତି ବିନ୍ୟାସ" #: ../js/ui/messageTray.js:1710 msgid "Tray Menu" msgstr "ଟ୍ରେ ତାଲିକା" #: ../js/ui/messageTray.js:1934 msgid "No Messages" msgstr "କୌଣସି ସନ୍ଦେଶ ନାହିଁ" #: ../js/ui/messageTray.js:1979 msgid "Message Tray" msgstr "ସନ୍ଦେଶ ଟ୍ରେ" #: ../js/ui/messageTray.js:2992 msgid "System Information" msgstr "ତନ୍ତ୍ର ସୂଚନା" #: ../js/ui/notificationDaemon.js:513 ../src/shell-app.c:425 msgctxt "program" msgid "Unknown" msgstr "ଅଜଣା" #: ../js/ui/overviewControls.js:482 ../js/ui/screenShield.js:151 #, javascript-format msgid "%d new message" msgid_plural "%d new messages" msgstr[0] "%d ଟି ନୂତନ ସନ୍ଦେଶ" msgstr[1] "%d ଟି ନୂତନ ସନ୍ଦେଶ" #: ../js/ui/overview.js:84 msgid "Undo" msgstr "ପଦକ୍ଷେପ ବାତିଲ କରନ୍ତୁ" #: ../js/ui/overview.js:124 msgid "Overview" msgstr "ସମୀକ୍ଷା" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. */ #: ../js/ui/overview.js:246 msgid "Type to search…" msgstr "ସନ୍ଧାନ କରିବା ପାଇଁ ଲେଖନ୍ତୁ…" #: ../js/ui/panel.js:515 msgid "Quit" msgstr "ବିଦାୟ ନିଅନ୍ତୁ" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". */ #: ../js/ui/panel.js:567 msgid "Activities" msgstr "କାର୍ଯ୍ୟକ୍ରମଗୁଡ଼ିକ" #: ../js/ui/panel.js:918 msgid "Top Bar" msgstr "ଉପର ପଟି" #: ../js/ui/popupMenu.js:269 msgid "toggle-switch-us" msgstr "toggle-switch-us" #: ../js/ui/runDialog.js:70 msgid "Enter a Command" msgstr "ଗୋଟିଏ ନିର୍ଦ୍ଦେଶକୁ ଭରଣ କରନ୍ତୁ" #: ../js/ui/runDialog.js:110 ../js/ui/windowMenu.js:120 msgid "Close" msgstr "ବନ୍ଦକରନ୍ତୁ" #: ../js/ui/runDialog.js:277 msgid "Restarting…" msgstr "ପୁନଃଚାଳନ କରୁଅଛି…" #. Translators: This is a time format for a date in #. long format */ #: ../js/ui/screenShield.js:88 msgid "%A, %B %d" msgstr "%A, %B %d" #: ../js/ui/screenShield.js:153 #, javascript-format msgid "%d new notification" msgid_plural "%d new notifications" msgstr[0] "%d ଟି ନୂତନ ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ" msgstr[1] "%d ଟି ନୂତନ ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ" #: ../js/ui/screenShield.js:472 ../js/ui/status/system.js:345 msgid "Lock" msgstr "ଅପରିବର୍ତ୍ତନୀୟ କରନ୍ତୁ" #: ../js/ui/screenShield.js:706 msgid "GNOME needs to lock the screen" msgstr "GNOME ପରଦାକୁ ତାଲା ପକାଇବା ଆବଶ୍ୟକ କରିଥାଏ" #: ../js/ui/screenShield.js:833 ../js/ui/screenShield.js:1304 msgid "Unable to lock" msgstr "ତାଲା ପକାଇବାରେ ଅସମର୍ଥ" #: ../js/ui/screenShield.js:834 ../js/ui/screenShield.js:1305 msgid "Lock was blocked by an application" msgstr "ତାଲାଟି ଏକ ପ୍ରୟୋଗ ଦ୍ୱାରା ଅଟକ ହୋଇଛି" #: ../js/ui/search.js:594 msgid "Searching…" msgstr "ସନ୍ଧାନ କରୁଅଛି…" #: ../js/ui/search.js:596 msgid "No results." msgstr "କୌଣସି ଫଳାଫଳ ନାହିଁ।" #: ../js/ui/shellEntry.js:25 msgid "Copy" msgstr "ନକଲ କରନ୍ତୁ" #: ../js/ui/shellEntry.js:30 msgid "Paste" msgstr "ଲଗାନ୍ତୁ" #: ../js/ui/shellEntry.js:97 msgid "Show Text" msgstr "ପାଠ୍ୟ ଦର୍ଶାନ୍ତୁ" #: ../js/ui/shellEntry.js:99 msgid "Hide Text" msgstr "ପାଠ୍ଯ ଲୁଚାନ୍ତୁ" #: ../js/ui/shellMountOperation.js:370 msgid "Password" msgstr "ପ୍ରବେଶ ସଙ୍କେତ" #: ../js/ui/shellMountOperation.js:391 msgid "Remember Password" msgstr "ପ୍ରବେଶ ସଂକେତ ମନେରଖନ୍ତୁ" #: ../js/ui/status/accessibility.js:42 msgid "Accessibility" msgstr "ଅଭିଗମ୍ୟତା" #: ../js/ui/status/accessibility.js:57 msgid "Zoom" msgstr "ଛୋଟବଡ଼ କରନ୍ତୁ" #: ../js/ui/status/accessibility.js:64 msgid "Screen Reader" msgstr "ପରଦା ପାଠକ" #: ../js/ui/status/accessibility.js:68 msgid "Screen Keyboard" msgstr "ପରଦା କିବୋର୍ଡ" #: ../js/ui/status/accessibility.js:72 msgid "Visual Alerts" msgstr "ଦୃଶ୍ଯମାନ ସତର୍କତା" #: ../js/ui/status/accessibility.js:75 msgid "Sticky Keys" msgstr "ସାମୟିକ କିଗୁଡ଼ିକ" #: ../js/ui/status/accessibility.js:78 msgid "Slow Keys" msgstr "ମନ୍ଥର କିଗୁଡ଼ିକ" #: ../js/ui/status/accessibility.js:81 msgid "Bounce Keys" msgstr "ଡେଉଁଥିବା କିଗୁଡ଼ିକ" #: ../js/ui/status/accessibility.js:84 msgid "Mouse Keys" msgstr "ମାଉସ କିଗୁଡ଼ିକ" #: ../js/ui/status/accessibility.js:144 msgid "High Contrast" msgstr "ଅଧିକ ସ୍ପଷ୍ଟତା" #: ../js/ui/status/accessibility.js:193 msgid "Large Text" msgstr "ବୃହତ ପାଠ୍ୟ" #: ../js/ui/status/bluetooth.js:49 msgid "Bluetooth" msgstr "ବ୍ଲୁଟୁଥ" #: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:178 #: ../js/ui/status/network.js:360 ../js/ui/status/network.js:1281 #: ../js/ui/status/network.js:1392 ../js/ui/status/rfkill.js:86 #: ../js/ui/status/rfkill.js:114 msgid "Turn Off" msgstr "ଅଫ୍‌ କରନ୍ତୁ" #: ../js/ui/status/bluetooth.js:54 msgid "Bluetooth Settings" msgstr "ବ୍ଲୁଟୁଥ ସଂରଚନାଗୁଡ଼ିକ" #: ../js/ui/status/bluetooth.js:104 #, javascript-format msgid "%d Connected Device" msgid_plural "%d Connected Devices" msgstr[0] "%d ଟି ସଂଯୁକ୍ତ ଉପକରଣ" msgstr[1] "%d ଟି ସଂଯୁକ୍ତ ଉପକରଣଗୁଡ଼ିକ" #: ../js/ui/status/bluetooth.js:106 ../js/ui/status/network.js:1309 msgid "Not Connected" msgstr "ସଂଯୁକ୍ତ ହୋଇନାହିଁ" #: ../js/ui/status/brightness.js:44 msgid "Brightness" msgstr "ଉଜ୍ଜ୍ବଳତା" #: ../js/ui/status/keyboard.js:547 msgid "Show Keyboard Layout" msgstr "କି-ବୋର୍ଡ ବିନ୍ଯାସ ଦର୍ଶାନ୍ତୁ" #: ../js/ui/status/location.js:65 msgid "Location" msgstr "ଅବସ୍ଥାନ" #: ../js/ui/status/location.js:72 ../js/ui/status/location.js:177 msgid "Disable" msgstr "ନିଷ୍କ୍ରିୟ" #: ../js/ui/status/location.js:73 #| msgid "Power Settings" msgid "Privacy Settings" msgstr "ଗୋପନୀୟତା ସେଟିଙ୍ଗ" #: ../js/ui/status/location.js:176 msgid "In Use" msgstr "ବ୍ଯବହୃତ ହେଉଅଛି" #: ../js/ui/status/location.js:180 msgid "Enable" msgstr "ସକ୍ରିୟ" #: ../js/ui/status/network.js:101 msgid "" msgstr "" #: ../js/ui/status/network.js:457 ../js/ui/status/network.js:1307 #: ../js/ui/status/network.js:1511 msgid "Off" msgstr "ଅଫ" #: ../js/ui/status/network.js:459 msgid "Connected" msgstr "ସଂଯୁକ୍ତ" #. Translators: this is for network devices that are physically present but are not #. under NetworkManager's control (and thus cannot be used in the menu) */ #: ../js/ui/status/network.js:463 msgid "Unmanaged" msgstr "ଅପରିଚାଳିତ" #: ../js/ui/status/network.js:465 msgid "Disconnecting" msgstr "ସଂଯୋଗ ବିଚ୍ଛିନ୍ନ କରୁଅଛି" #: ../js/ui/status/network.js:471 ../js/ui/status/network.js:1301 msgid "Connecting" msgstr "ସଂଯୋଗ କରୁଅଛି" #. Translators: this is for network connections that require some kind of key or password */ #: ../js/ui/status/network.js:474 msgid "Authentication required" msgstr "ବୈଧିକରଣ ଆବଶ୍ଯକ" #. Translators: this is for devices that require some kind of firmware or kernel #. module, which is missing */ #: ../js/ui/status/network.js:482 msgid "Firmware missing" msgstr "ଫର୍ମୱେର ଅନୁପସ୍ଥିତ ଅଛି" #. Translators: this is for a network device that cannot be activated (for example it #. is disabled by rfkill, or it has no coverage */ #: ../js/ui/status/network.js:486 msgid "Unavailable" msgstr "ଉପଲବ୍ଧ ନାହିଁ" #: ../js/ui/status/network.js:488 ../js/ui/status/network.js:1695 msgid "Connection failed" msgstr "ସଂଯୋଗ ବିଫଳ ହୋଇଛି" #: ../js/ui/status/network.js:504 msgid "Wired Settings" msgstr "ତାରମୟ ସଂରଚନା" #: ../js/ui/status/network.js:546 ../js/ui/status/network.js:624 msgid "Mobile Broadband Settings" msgstr "ମୋବାଇଲ ବ୍ରୋଡ଼ବ୍ୟାଣ୍ଡ ସଂରଚନା" #: ../js/ui/status/network.js:588 ../js/ui/status/network.js:1305 msgid "Hardware Disabled" msgstr "ହାର୍ଡୱେର ନିଷ୍କ୍ରିୟ ଅଛି" #: ../js/ui/status/network.js:632 msgid "Use as Internet connection" msgstr "ଇଣ୍ଟରନେଟ ସଂଯୋଗ ବ୍ୟବହାର କରନ୍ତୁ" #: ../js/ui/status/network.js:813 msgid "Airplane Mode is On" msgstr "ବିମାନ ଧାରା ଅନ୍‌ ଅଛି" #: ../js/ui/status/network.js:814 msgid "Wi-Fi is disabled when airplane mode is on." msgstr "ବିମାନ ଧାରା ଅନ୍‌ ଥିବା ସମୟରେ ୱାଇ-ଫାଇ ନିଷ୍କ୍ରିୟ ଅଛି।" #: ../js/ui/status/network.js:815 msgid "Turn Off Airplane Mode" msgstr "ବିମାନ ଧାରାକୁ ଅଫ୍‌ କରନ୍ତୁ" #: ../js/ui/status/network.js:824 msgid "Wi-Fi is Off" msgstr "Wi-Fi ଅଫ୍‌ ଅଛି" #: ../js/ui/status/network.js:825 msgid "Wi-Fi needs to be turned on in order to connect to a network." msgstr "ନେଟୱର୍କ ସହିତ ସଂଯୋଗ କରିବା ପାଇଁ ୱାଇ-ଫାଇକୁ ଅନ୍‌ କରିବା ଆବଶ୍ୟକ।" #: ../js/ui/status/network.js:826 msgid "Turn On Wi-Fi" msgstr "Wi-Fi କୁ ଅନ୍‌ କରନ୍ତୁ" #: ../js/ui/status/network.js:851 msgid "Wi-Fi Networks" msgstr "ୱାଇ-ଫାଇ ନେଟୱର୍କଗୁଡ଼ିକ" #: ../js/ui/status/network.js:853 msgid "Select a network" msgstr "ଗୋଟିଏ ନେଟୱର୍କ ବାଛନ୍ତୁ" #: ../js/ui/status/network.js:882 msgid "No Networks" msgstr "କୌଣସି ନେଟୱର୍କ ନାହିଁ" #: ../js/ui/status/network.js:903 ../js/ui/status/rfkill.js:112 msgid "Use hardware switch to turn off" msgstr "ଅଫ୍‌ କରିବାକୁ ଥିବା ବ୍ୟବହାରକାରୀ ହାର୍ଡୱେର ସ୍ୱୀଚ" #: ../js/ui/status/network.js:1173 msgid "Select Network" msgstr "ନେଟୱର୍କ ବାଛନ୍ତୁ" #: ../js/ui/status/network.js:1179 msgid "Wi-Fi Settings" msgstr "ୱାଇ-ଫାଇ ସଂରଚନା" #: ../js/ui/status/network.js:1281 msgid "Turn On" msgstr "ଅନ୍‌ କରନ୍ତୁ" #: ../js/ui/status/network.js:1298 msgid "Hotspot Active" msgstr "ହଟସ୍ପଟ୍‌ ସକ୍ରିୟ ଅଛି" #: ../js/ui/status/network.js:1409 msgid "connecting..." msgstr "ସଂଯୋଗ କରୁଅଛି..." #. Translators: this is for network connections that require some kind of key or password */ #: ../js/ui/status/network.js:1412 msgid "authentication required" msgstr "ବୈଧିକରଣ ଆବଶ୍ୟକ" #: ../js/ui/status/network.js:1414 msgid "connection failed" msgstr "ସଂଯୋଗ ବିଫଳ ହୋଇଛି" #: ../js/ui/status/network.js:1480 ../js/ui/status/rfkill.js:89 msgid "Network Settings" msgstr "ନେଟୱର୍କ ସଂରଚନା" #: ../js/ui/status/network.js:1482 msgid "VPN Settings" msgstr "VPN ସଂରଚନା" #: ../js/ui/status/network.js:1501 msgid "VPN" msgstr "VPN" #: ../js/ui/status/network.js:1656 msgid "Network Manager" msgstr "ନେଟୱର୍କ ପରିଚାଳକ" #: ../js/ui/status/network.js:1696 msgid "Activation of network connection failed" msgstr "ନେଟୱର୍କ ସଂଯୋଗ ବିଫଳ ହୋଇଛି" #: ../js/ui/status/power.js:49 msgid "Power Settings" msgstr "ବିଦ୍ୟୁତ ଶକ୍ତି ବିନ୍ଯାସ" #: ../js/ui/status/power.js:65 msgid "Fully Charged" msgstr "ସମ୍ପୂର୍ଣ୍ଣ ଭାବରେ ଚାର୍ଜ ହୋଇଛି" #: ../js/ui/status/power.js:72 ../js/ui/status/power.js:78 msgid "Estimating…" msgstr "ହିସାବ କରୁଅଛି ..." #: ../js/ui/status/power.js:86 #, javascript-format msgid "%d∶%02d Remaining (%d%%)" msgstr "%d∶%02d ବଳିଅଛି (%d%%)" #: ../js/ui/status/power.js:91 #, javascript-format msgid "%d∶%02d Until Full (%d%%)" msgstr "%d∶%02d ସମ୍ପୂର୍ଣ୍ଣ ହେବା ପର୍ଯ୍ୟନ୍ତ (%d%%)" #: ../js/ui/status/power.js:119 msgid "UPS" msgstr "UPS" #: ../js/ui/status/power.js:121 msgid "Battery" msgstr "ବ୍ଯାଟେରୀ" #: ../js/ui/status/rfkill.js:83 msgid "Airplane Mode" msgstr "ବିମାନ ଧାରା" #: ../js/ui/status/rfkill.js:85 msgid "On" msgstr "ଅନ୍‌" #: ../js/ui/status/system.js:317 msgid "Switch User" msgstr "ଚାଳକଙ୍କୁ ବଦଳାନ୍ତୁ" #: ../js/ui/status/system.js:322 msgid "Log Out" msgstr "ଲଗଆଉଟ କରନ୍ତୁ" #: ../js/ui/status/system.js:341 msgid "Orientation Lock" msgstr "ଆବର୍ତ୍ତନ ତାଲା" #: ../js/ui/status/system.js:349 msgid "Suspend" msgstr "ନିଲମ୍ବନ କରନ୍ତୁ" #: ../js/ui/status/system.js:352 msgid "Power Off" msgstr "ବିଦ୍ୟୁତ ପ୍ରବାହ ବନ୍ଦ କରନ୍ତୁ" #: ../js/ui/status/volume.js:127 msgid "Volume changed" msgstr "ଆକାର ପରିବର୍ତ୍ତିତ" #: ../js/ui/status/volume.js:162 msgid "Volume" msgstr "ଭଲ୍ଯୁମ" #: ../js/ui/status/volume.js:213 msgid "Microphone" msgstr "ମାଇକ୍ରଫୋନ" #: ../js/ui/unlockDialog.js:67 msgid "Log in as another user" msgstr "ଅନ୍ୟ ଏକ ଚାଳକ ଭାବରେ ଲଗଇନ କରନ୍ତୁ" #: ../js/ui/unlockDialog.js:84 msgid "Unlock Window" msgstr "ୱିଣ୍ଡୋକୁ ଖୋଲନ୍ତୁ" #: ../js/ui/viewSelector.js:158 msgid "Applications" msgstr "ପ୍ରୟୋଗଗୁଡ଼ିକ" #: ../js/ui/viewSelector.js:162 msgid "Search" msgstr "ସନ୍ଧାନ କରନ୍ତୁ" #: ../js/ui/windowAttentionHandler.js:19 #, javascript-format msgid "“%s” is ready" msgstr "“%s” ପ୍ରସ୍ତୁତ ଅଛି" #: ../js/ui/windowManager.js:65 msgid "Do you want to keep these display settings?" msgstr "ଆପଣ ଏହି ପ୍ରଦର୍ଶନୀ ସଂରଚନାକୁ ରଖିବାକୁ ଚାହୁଁଛନ୍ତି କି?" #. Translators: this and the following message should be limited in lenght, #. to avoid ellipsizing the labels. #. */ #: ../js/ui/windowManager.js:84 msgid "Revert Settings" msgstr "ସଂରଚନାକୁ ପରିବର୍ତ୍ତନ କରନ୍ତୁ" #: ../js/ui/windowManager.js:88 msgid "Keep Changes" msgstr "ପରିବର୍ତ୍ତନଗୁଡ଼ିକୁ ରଖନ୍ତୁ" #: ../js/ui/windowManager.js:107 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "ସଂରଚନା ପରିବର୍ତ୍ତନଗୁଡ଼ିକ %d ସେକେଣ୍ଡରେ ପ୍ରତ୍ୟାବୃତ ହେବ" msgstr[1] "ସଂରଚନା ପରିବର୍ତ୍ତନଗୁଡ଼ିକ %d ସେକେଣ୍ଡରେ ପ୍ରତ୍ୟାବୃତ ହେବ" #: ../js/ui/windowMenu.js:34 msgid "Minimize" msgstr "ଛୋଟକରନ୍ତୁ" #: ../js/ui/windowMenu.js:41 msgid "Unmaximize" msgstr "ବଡ଼କରନ୍ତୁ ନାହିଁ" #: ../js/ui/windowMenu.js:45 msgid "Maximize" msgstr "ବଡ଼କରନ୍ତୁ" #: ../js/ui/windowMenu.js:52 msgid "Move" msgstr "ଘୁଞ୍ଚାନ୍ତୁ" #: ../js/ui/windowMenu.js:58 msgid "Resize" msgstr "ଆକାର ବଦଳାନ୍ତୁ" #: ../js/ui/windowMenu.js:65 msgid "Move Titlebar Onscreen" msgstr "ଶୀର୍ଷକ ପଟିକୁ ପରଦା ଉପରେ ଘୁଞ୍ଚାନ୍ତୁ" #: ../js/ui/windowMenu.js:70 msgid "Always on Top" msgstr "ସର୍ବଦା ଉପରେ" #: ../js/ui/windowMenu.js:89 msgid "Always on Visible Workspace" msgstr "ସଦାବେଳେ ଦୃଶ୍ଯମାନ କାର୍ଯ୍ଯକ୍ଷେତ୍ରରେ ଥାଏ" #: ../js/ui/windowMenu.js:106 msgid "Move to Workspace Up" msgstr "ଉପର କାର୍ଯ୍ଯକ୍ଷେତ୍ରକୁ ପଠାନ୍ତୁ" #: ../js/ui/windowMenu.js:111 msgid "Move to Workspace Down" msgstr "ତଳ କାର୍ଯ୍ଯକ୍ଷେତ୍ରକୁ ପଠାନ୍ତୁ" #: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1 msgid "Evolution Calendar" msgstr "Evolution କ୍ୟାଲେଣ୍ଡର" #. translators: #. * The number of sound outputs on a particular device #: ../src/gvc/gvc-mixer-control.c:1837 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u ଫଳାଫଳ" msgstr[1] "%u ଫଳାଫଳଗୁଡ଼ିକ" #. translators: #. * The number of sound inputs on a particular device #: ../src/gvc/gvc-mixer-control.c:1847 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u ନିବେଶ" msgstr[1] "%u ନିବେଶଗୁଡ଼ିକ" #: ../src/gvc/gvc-mixer-control.c:2373 msgid "System Sounds" msgstr "ତନ୍ତ୍ର ଧ୍ୱନି" #: ../src/main.c:373 msgid "Print version" msgstr "ମୁଦ୍ରଣ ସଂସ୍କରଣ" #: ../src/main.c:379 msgid "Mode used by GDM for login screen" msgstr "ଲଗଇନ ପରଦା ପାଇଁ ବ୍ୟବହୃତ GDM" #: ../src/main.c:385 msgid "Use a specific mode, e.g. \"gdm\" for login screen" msgstr "ଏକ ନିର୍ଦ୍ଦିଷ୍ଟ ଧାରା ବ୍ୟବହାର କରନ୍ତୁ, ଯେପରିକି ଲଗଇନ ପରଦା ପାଇଁ \"gdm\"" #: ../src/main.c:391 msgid "List possible modes" msgstr "ସମ୍ଭାବ୍ୟ ଧାରାଗୁଡ଼ିକୁ ତାଲିକାଭୁକ୍ତ କରନ୍ତୁ" #: ../src/shell-app.c:666 #, c-format msgid "Failed to launch “%s”" msgstr "“%s” କୁ ଆରମ୍ଭ କରିବାରେ ବିଫଳ" #: ../src/shell-keyring-prompt.c:714 msgid "Passwords do not match." msgstr "ପ୍ରବେଶ ସଙ୍କେତ ଦ୍ବୟ ମିଶୁ ନାହିଁ।" #: ../src/shell-keyring-prompt.c:722 msgid "Password cannot be blank" msgstr "ପ୍ରବେଶ ସଙ୍କେତଟି ଖାଲି ହୋଇ ପାରିବ ନାହିଁ" #: ../src/shell-polkit-authentication-agent.c:346 msgid "Authentication dialog was dismissed by the user" msgstr "ବୈଧିକରଣ ସଂଳାପଟି ଚାଳକ ଦ୍ୱାରା ବାତିଲ ହୋଇଛି" #~ msgid "Screenshots" #~ msgstr "ପରଦା ପ୍ରତିଛବିଗୁଡ଼ିକ" #~ msgid "Record a screencast" #~ msgstr "ସ୍କ୍ରିନକାଷ୍ଟକୁ ଲିପିବଦ୍ଧ କରନ୍ତୁ" #~ msgid "Whether to collect stats about applications usage" #~ msgstr "ପ୍ରୟୋଗ ଉପଯୋଗ ବିଷୟରେ ସ୍ଥିତି ସଂଗ୍ରହ କରିବା ଉଚିତ କି" #~ msgid "" #~ "The shell normally monitors active applications in order to present the " #~ "most used ones (e.g. in launchers). While this data will be kept private, " #~ "you may want to disable this for privacy reasons. Please note that doing " #~ "so won't remove already saved data." #~ msgstr "" #~ "ବହୁଳ ଭାବରେ ବ୍ୟବହୃତ ପ୍ରୟୋଗକୁ ଉପସ୍ଥାପନ କରିବା ପାଇଁ ସେଲ ସାଧାରଣତଃ ସକ୍ରିୟ ପ୍ରୟୋଗଗୁଡ଼ିକୁ ନିରୀକ୍ଷଣ " #~ "କରିଥାଏ। ଯେତେବେଳେ ଏହି ତଥ୍ୟକୁ ବ୍ୟକ୍ତିଗତ ରଖାଯାଇଥାଏ, ସେତେବେଳେ ଆପଣ ଏହାକୁ ବ୍ୟକ୍ତିଗତ କାରଣ " #~ "ହେତୁ ନିଷ୍କ୍ରିୟ କରିପାରିବେ। ଦୟାକରିମନେରଖନ୍ତୁ ଯେ ଏହା କରିବା ଫଳରେ ତାହା ସଂରକ୍ଷିତ ତଥ୍ୟକୁ ବାହାର " #~ "କରିନଥାଏ।" #~ msgid "List of categories that should be displayed as folders" #~ msgstr "ବିଭାଗଗୁଡ଼ିକର ତାଲିକା ଯାହାକୁ ଫୋଲଡର୍‌ ଭାବରେ ଦର୍ଶାଯାଇଥାଏ" #~ msgid "" #~ "Each category name in this list will be represented as folder in the " #~ "application view, rather than being displayed inline in the main view." #~ msgstr "" #~ "ମୂଖ୍ୟ ଦୃଶ୍ୟରେ ଦର୍ଶାଇବା ପରିବର୍ତ୍ତେ, ଏହି ତାଲିକାରେ ପ୍ରତ୍ୟେକ ବିଭାଗ ନାମକୁ ପ୍ରୟୋଗ ଦୃଶ୍ୟରେ ଫୋଲଡର୍‌ " #~ "ଭାବରେ ଉପସ୍ଥାପନା କରାଯାଇଥାଏ।" #~ msgid "" #~ "Internally used to store the last IM presence explicitly set by the user. " #~ "The value here is from the TpConnectionPresenceType enumeration." #~ msgstr "" #~ "ଶେଷ IM ଉପସ୍ଥିତିକୁ ସଂରକ୍ଷଣ କରିବା ପାଇଁ ଆଭ୍ୟନ୍ତରୀଣ ବ୍ୟବହାର ପାଇଁ ବ୍ୟବହାରକାରୀ ଦ୍ୱାରା ସେଟ " #~ "କରାଯାଇଥାଏ। ଏଠାରେ ଥିବା ମୂଲ୍ଯଟି ହେଉଛି TpConnectionPresenceType enumeration." #~ msgid "" #~ "Internally used to store the last session presence status for the user. " #~ "The value here is from the GsmPresenceStatus enumeration." #~ msgstr "" #~ "ବ୍ୟବହାରକାରୀ ପାଇଁ ଅନ୍ତିମ ଅଧିବେଶନ ଉପସ୍ଥିତିକୁ ସଂରକ୍ଷଣ କରିବା ପାଇଁ ଆଭ୍ୟନ୍ତରିଣ ଭାବରେ ବ୍ୟବହାର " #~ "କରାଯାଇଥାଏ। ଏଠାରେ ଥିବା ମୂଲ୍ଯଟି ହେଉଛି GsmPresenceStatus enumeration." #~ msgid "Keybinding to toggle the screen recorder" #~ msgstr "ପରଦା ଲେଖକକୁ ଆଗପଛ କରିବା ପାଇଁ କି ବନ୍ଧନ" #~ msgid "Keybinding to start/stop the builtin screen recorder." #~ msgstr "ପୂର୍ବନିର୍ମିତ ପରଦା ଲେଖକକୁ ଆରମ୍ଭ/ବନ୍ଦ କରିବା ପାଇଁ କି ବନ୍ଧନ।" #~ msgid "Framerate used for recording screencasts." #~ msgstr "ସ୍କ୍ରିନକାଷ୍ଟଗୁଡ଼ିକୁ ଲିପିବଦ୍ଧ କରିବା ପାଇଁ ବ୍ୟବହୃତ ଫ୍ରେମ ହାର।" #~ msgid "" #~ "The framerate of the resulting screencast recordered by GNOME Shell's " #~ "screencast recorder in frames-per-second." #~ msgstr "" #~ "GNOME ସେଲ ସ୍କ୍ରିନକାଷ୍ଟ ଲେଖକ ଦ୍ୱାରା ଲିପିବଦ୍ଧ ଫଳାଫଳ ସ୍କ୍ରିନକାଷ୍ଟର ଫ୍ରେମ ହାର ହେଉଛି ସେକଣ୍ଡ " #~ "ପ୍ରତି ଫ୍ରେମ ସଂଖ୍ୟା।" #~ msgid "The gstreamer pipeline used to encode the screencast" #~ msgstr "ସ୍କ୍ରିନକାଷ୍ଟକୁ ସାଙ୍କେତିକରଣ କରିବା ପାଇଁ ବ୍ୟବହୃତ gstreamer" #~ msgid "" #~ "Sets the GStreamer pipeline used to encode recordings. It follows the " #~ "syntax used for gst-launch. The pipeline should have an unconnected sink " #~ "pad where the recorded video is recorded. It will normally have a " #~ "unconnected source pad; output from that pad will be written into the " #~ "output file. However the pipeline can also take care of its own output - " #~ "this might be used to send the output to an icecast server via shout2send " #~ "or similar. When unset or set to an empty value, the default pipeline " #~ "will be used. This is currently 'vp8enc min_quantizer=13 max_quantizer=13 " #~ "cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux' and records to " #~ "WEBM using the VP8 codec. %T is used as a placeholder for a guess at the " #~ "optimal thread count on the system." #~ msgstr "" #~ "ଲିପିବଦ୍ଧ କରିବା ପାଇଁ ସାଙ୍କେତିକରଣରେ ବ୍ୟବହୃତ GStreamer ପାଇପଲାଇନ। ଏହା gst-launch ପାଇଁ " #~ "ବ୍ୟବହୃତ ବାକ୍ୟ ବିନ୍ୟାସକୁ ଅନୁସରଣ କରିଥାଏ। ସେହି ପାଇପଲାଇନରେ ଅସଂଯୁକ୍ତ ସିଙ୍କ ପ୍ୟାଡ଼ ଥାଏ " #~ "ଯେଉଁଠିଲିପିବଦ୍ଧ ଭିଡ଼ିଓକୁ ରଖାଯାଇଥାଏ। ଏଥିରେ ସାଧାରଣତଃ ଅସଂଯୁକ୍ତ ଉତ୍ସ ପ୍ୟାଡ଼ ଥାଏ; ସେହି ପ୍ୟାଡ଼ର " #~ "ଫଳାଫଳକୁ ଫଳାଫଳ ଫାଇଲରେ ଲେଖାଯାଇଥାଏ। ତଥାପି ସେହି ପାଇପଲାଇନ ତାହାର ଯତ୍ନ ନେଇପାରିବ -ଏହା " #~ "ହୁଏତଃଫଳାଫଳକୁ icecast ସର୍ଭରକୁ shout2send କିମ୍ବା ସେହିପରି କିଛି ମାଧ୍ଯମରେପଠାଇବାରେ ବ୍ୟବହାର " #~ "କରାଯାଇପାରିବ। ଯେତେବେଳେ ସେଟ କରାଯାଇନଥାଏ କିମ୍ବା ଖାଲି ମୂଲ୍ୟ ସେଟ ହୋଇଥାଏ, ସେତେବେଳେ " #~ "ପୂର୍ବନିର୍ଦ୍ଧାରିତ ପାଇପଲାଇନକୁ ବ୍ୟବହାର କରାଯିବ। ଏହା ବର୍ତ୍ତମାନ 'vp8enc min_quantizer=13 " #~ "max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! " #~ "webmmux' ଏବଂ WEBM ରେ VP8 କୋଡେକ ବ୍ୟବହାର କରି ଲିପିବଦ୍ଧ କରିଥାଏ। %T କୁ ତନ୍ତ୍ରରେ ଏକ ସ୍ଥାନ " #~ "ରକ୍ଷକ ଭାବରେ ବ୍ୟବହାର କରାଯାଇଥାଏ।" #~ msgid "File extension used for storing the screencast" #~ msgstr "ସ୍କ୍ରିନକାଷ୍ଟକୁ ସଂରକ୍ଷଣ କରିବା ପାଇଁ ବ୍ୟବହୃତ ଫାଇଲ ଅନୁଲଗ୍ନ" #~ msgid "" #~ "The filename for recorded screencasts will be a unique filename based on " #~ "the current date, and use this extension. It should be changed when " #~ "recording to a different container format." #~ msgstr "" #~ "ଲିପିବଦ୍ଧ ସ୍କ୍ରିନକାଷ୍ଟ ପାଇଁ ଫାଇଲ ନାମଟି ବର୍ତ୍ତମାନ ତାରିଖ ଅନୁସାରେ ଏକ ଅନନ୍ୟ ଫାଇଲନାମ " #~ "ଦିଆଯାଇଥାଏ, ଏବଂ ଏହି ଅନୁଲଗ୍ନକୁ ବ୍ୟବହାର କରାଯାଇଥାଏ। ଏହାକୁ ବିଭିନ୍ନ ଧାରଣକର୍ତ୍ତା ଶୈଳୀରେ " #~ "ପରିବର୍ତ୍ତନ କରିବା ଉଚିତ।" #~ msgid "Arrangement of buttons on the titlebar" #~ msgstr "ଶୀର୍ଷକ ପଟିରେ ଚାବିର ସଜ୍ଜା" #~ msgid "" #~ "This key overrides the key in org.gnome.desktop.wm.preferences when " #~ "running GNOME Shell." #~ msgstr "" #~ "GNOME ସେଲ ଚାଲିଥିବା ସମୟରେ ଏହି ଚାବିଟି org.gnome.desktop.wm.preferences ରେ ଥିବା " #~ "ଚାବିକୁ ନବଲିଖନ କରିଥାଏ।" #~ msgid "Extension" #~ msgstr "ଅନୁଲଗ୍ନ" #~ msgid "Select an extension to configure using the combobox above." #~ msgstr "ଉପରେ ଥିବା କମ୍ବୋବକ୍ସ ବ୍ୟବହାର କରି ବିନ୍ୟାସ କରିବା ପାଇଁ ଏକ ଅନୁଲଗ୍ନ ବାଛନ୍ତୁ।" #~| msgid "Session..." #~ msgid "Session…" #~ msgstr "ଅଧିବେଶନ…" #~| msgid "Power Off" #~ msgid "Power" #~ msgstr "ବିଦ୍ୟୁତ ଶକ୍ତି" #~ msgid "Restart" #~ msgstr "ପୂନଃପ୍ରାରମ୍ଭ କରନ୍ତୁ" #~ msgctxt "event list time" #~ msgid "%H\\u2236%M" #~ msgstr "%H\\u2236%M" #~ msgctxt "event list time" #~ msgid "%l\\u2236%M\\u2009%p" #~ msgstr "%l\\u2236%M\\u2009%p" #~ msgid "Screencast from %d %t" #~ msgstr "%d %t ରୁ ସ୍କ୍ରିନକାଷ୍ଟ" #~| msgid "Sent on %A, %B %d" #~ msgid "%A, %H:%M" #~ msgstr "%A, %H:%M" #~| msgid "Sent on %A, %B %d" #~ msgid "%B %d, %H:%M" #~ msgstr "%B %d, %H:%M" #~ msgid "%B %d %Y, %H:%M " #~ msgstr "%B %d %Y, %H:%M " #~ msgid "Click Log Out to quit these applications and log out of the system." #~ msgstr "ଏହି ପ୍ରୟୋଗଗୁଡ଼ିକରୁ ପ୍ରସ୍ଥାନ କରିବା ପାଇଁ ଲଗ ଆଉଟ କ୍ଲିକ କରନ୍ତୁ ଏବଂ ତନ୍ତ୍ରରୁ ଲଗ ଆଉଟ କରନ୍ତୁ।" #~ msgid "Logging out of the system." #~ msgstr "ତନ୍ତ୍ରରୁ ଲଗ ଆଉଟ କରୁଅଛି।" #~ msgid "Click Power Off to quit these applications and power off the system." #~ msgstr "" #~ "ଏହି ପ୍ରୟୋଗଗୁଡ଼ିକରୁ ପ୍ରସ୍ଥାନ କରିବା ପାଇଁ ବିଦ୍ୟୁତ ପ୍ରବାହ ବନ୍ଦ କରନ୍ତୁକୁ କ୍ଲିକ କରନ୍ତୁ ଏବଂ ତନ୍ତ୍ରର ବିଦ୍ୟୁତ " #~ "ପ୍ରବାହ ବନ୍ଦ କରନ୍ତୁ।" #~ msgid "Powering off the system." #~ msgstr "ତନ୍ତ୍ରର ବିଦ୍ୟୁତ ପ୍ରବାହ ବନ୍ଦ ହେଉଅଛି।" #~ msgid "Click Restart to quit these applications and restart the system." #~ msgstr "" #~ "ଏହି ପ୍ରୟୋଗଗୁଡ଼ିକରୁ ପ୍ରସ୍ଥାନ କରିବା ପାଇଁ ପୁନଃପ୍ରାରମ୍ଭ କରନ୍ତୁକୁ କ୍ଲିକ କରନ୍ତୁ ଏବଂ ତନ୍ତ୍ରକୁ ପୁନଃପ୍ରାରମ୍ଭ " #~ "କରନ୍ତୁ।" #~ msgid "Restarting the system." #~ msgstr "ତନ୍ତ୍ରକୁ ପୁନଃଚାଳନ କରୁଅଛି।" #~ msgid "Universal Access Settings" #~ msgstr "ସାର୍ବଜନିକ ଅଭିଗମ୍ୟତା ବିନ୍ଯାସ" #~ msgid "Visibility" #~ msgstr "ଦେଖିବା କ୍ଷମତା" #~| msgid "Send Files to Device..." #~ msgid "Send Files to Device…" #~ msgstr "ଉପକରଣ ମଧ୍ଯକୁ ଫାଇଲଗୁଡ଼ିକୁ ପଠାନ୍ତୁ…" #~| msgid "Set up a New Device..." #~ msgid "Set Up a New Device…" #~ msgstr "ଏକ ନୂଆ ଉପକରଣ ବ୍ୟବସ୍ଥା କରନ୍ତୁ ..." #~| msgid "Send Files..." #~ msgid "Send Files…" #~ msgstr "ଫାଇଲଗୁଡ଼ିକୁ ପଠାନ୍ତୁ…" #~ msgid "Keyboard Settings" #~ msgstr "କିବୋର୍ଡ ବିନ୍ୟାସଗୁଡ଼ିକ" #~ msgid "Mouse Settings" #~ msgstr "ମାଉସ ସେଟିଙ୍ଗଗୁଡିକ" #~ msgid "Sound Settings" #~ msgstr "ଧ୍ୱନି ସେଟିଙ୍ଗଗୁଡିକ" #~ msgid "Authorization request from %s" #~ msgstr "%s ରୁ ବୈଧିକରଣ ଅନୁରୋଧ" #~ msgid "Device %s wants access to the service '%s'" #~ msgstr "ଉପକରଣ %s ସର୍ଭିସ '%s' ପାଇଁ ଅଭିଗମ୍ୟତା ଆଶା କରିଥାଏ।" #~ msgid "Always grant access" #~ msgstr "ସର୍ବଦା ଅନୁମତି ପ୍ରଦାନ କରନ୍ତୁ" #~ msgid "Grant this time only" #~ msgstr "କେବଳ ବର୍ତ୍ତମାନ ପାଇଁ ଅନୁମତି ପ୍ରଦାନ କରନ୍ତୁ" #~ msgid "Reject" #~ msgstr "ଅସ୍ବୀକାର କରନ୍ତୁ" #~ msgid "Pairing confirmation for %s" #~ msgstr "%s ପାଇଁ ଯୁଗଳ ନିଶ୍ଚିତକରଣ" #~ msgid "Device %s wants to pair with this computer" #~ msgstr "ଉପକରଣ %s ଏହି କମ୍ପୁଟର ସହିତ ଯୁଗଳ ହେବାକୁ ଇଚ୍ଛାପ୍ରକାଶ କରୁଅଛି" #~ msgid "Please confirm whether the PIN '%06d' matches the one on the device." #~ msgstr "ଦୟାକରି ନିଶ୍ଚିତ କରନ୍ତୁ ଯେ PIN '%06d' ଉପକରଣ ସହିତ ମେଳ ଖାଇଥାଏ।" #~ msgid "Matches" #~ msgstr "ମେଳଗୁଡିକ" #~ msgid "Does not match" #~ msgstr "ମେଳ ଖାଉନାହିଁ" #~ msgid "Pairing request for %s" #~ msgstr "%s ପାଇଁ ଯୁଗଳ ଅନୁରୋଧ" #~ msgid "Please enter the PIN mentioned on the device." #~ msgstr "ଉପକରଣରେ ନିର୍ଦ୍ଦିଷ୍ଟ PIN କୁ ଭରଣ କରନ୍ତୁ।" #~ msgid "OK" #~ msgstr "ଠିକ ଅଛି" #~| msgid "Region and Language Settings" #~ msgid "Region & Language Settings" #~ msgstr "ସ୍ଥାନ ଏବଂ ଭାଷା ସେଟିଙ୍ଗଗୁଡିକ" #~ msgid "Volume, network, battery" #~ msgstr "ଭଲ୍ୟୁମ, ନେଟୱର୍କ, ବ୍ୟାଟେରୀ" #~ msgid "disabled" #~ msgstr "ନିଷ୍କ୍ରିୟ ହୋଇଛି" #~ msgid "cable unplugged" #~ msgstr "କେବଲ ଲଗାହୋଇ ନାହିଁ" #~ msgid "unavailable" #~ msgstr "ଉପଲବ୍ଧ ନାହିଁ" #~ msgid "More…" #~ msgstr "ଅଧିକ…" #~ msgid "Wired" #~ msgstr "ତାରଯୁକ୍ତ" #~ msgid "Auto Ethernet" #~ msgstr "ସ୍ୱୟଂଚାଳିତ ଇଥରନେଟ" #~ msgid "Auto broadband" #~ msgstr "ସ୍ୱୟଂଚାଳିତ ବ୍ରୋଡ଼ବ୍ୟାଣ୍ଡ" #~ msgid "Auto dial-up" #~ msgstr "ସ୍ୱୟଂଚାଳିତ ଡାଏଲ-ଅପ" #~ msgid "Auto %s" #~ msgstr "ସ୍ବୟଂଚାଳିତ %s" #~ msgid "Auto bluetooth" #~ msgstr "ସ୍ବୟଂଚାଳିତ ବ୍ଲୁଟୁଥ" #~ msgid "Auto wireless" #~ msgstr "ସ୍ବୟଂଚାଳିତ ବେତାର" #~ msgid "Wi-Fi" #~ msgstr "Wi-Fi" #~ msgid "Networking is disabled" #~ msgstr "ନେଟୱର୍କିଙ୍ଗ ନିଷ୍କ୍ରିୟ ହୋଇଛି" #~ msgid "%d hour remaining" #~ msgid_plural "%d hours remaining" #~ msgstr[0] "%d ଘଣ୍ଟା ବଳିଛି" #~ msgstr[1] "%d ଘଣ୍ଟା ବଳିଛି" #~ msgid "%d %s %d %s remaining" #~ msgstr "%d %s %d %s ବଳିଅଛି" #~ msgid "hour" #~ msgid_plural "hours" #~ msgstr[0] "ଘଣ୍ଟା" #~ msgstr[1] "ଘଣ୍ଟା" #~ msgid "minute" #~ msgid_plural "minutes" #~ msgstr[0] "ମିନିଟ" #~ msgstr[1] "ମିନିଟ" #~ msgid "%d minute remaining" #~ msgid_plural "%d minutes remaining" #~ msgstr[0] "%d ମିନଟ ବଳିଅଛି" #~ msgstr[1] "%d ମିନଟ ବଳିଅଛି" #~ msgctxt "percent of battery remaining" #~ msgid "%d%%" #~ msgstr "%d%%" #~| msgid "AC adapter" #~ msgid "AC Adapter" #~ msgstr "AC ଏଡପଟର" #~| msgid "Laptop battery" #~ msgid "Laptop Battery" #~ msgstr "ଲାପଟପ ବ୍ଯାଟେରୀ" #~ msgid "Monitor" #~ msgstr "ମନିଟର" #~ msgid "Mouse" #~ msgstr "ମାଉସ" #~ msgid "PDA" #~ msgstr "PDA" #~| msgid "Cell phone" #~ msgid "Cell Phone" #~ msgstr "ସେଲ ଫୋନ" #~| msgid "Media player" #~ msgid "Media Player" #~ msgstr "ମେଡ଼ିଆ ଚାଲକ" #~ msgid "Tablet" #~ msgstr "ଟ୍ୟାବଲେଟ" #~ msgid "Computer" #~ msgstr "କମ୍ପୁଟର" #~ msgctxt "device" #~ msgid "Unknown" #~ msgstr "ଅଜଣା" #~ msgid "Available" #~ msgstr "ଉପଲବ୍ଧ " #~ msgid "Busy" #~ msgstr "ବ୍ଯସ୍ତ" #~ msgid "Invisible" #~ msgstr "ଅଦୃଶ୍ଯ" #~ msgid "Away" #~ msgstr "ଅନୁପସ୍ଥିତ" #~ msgid "Idle" #~ msgstr "ନିଷ୍କ୍ରିୟ" #~ msgid "Your chat status will be set to busy" #~ msgstr "ଆପଣଙ୍କର ଚାଟ ସ୍ଥିତିକୁ ବ୍ୟସ୍ତ ବୋଲି ସେଟ କରାଯିବ" #~ msgid "" #~ "Notifications are now disabled, including chat messages. Your online " #~ "status has been adjusted to let others know that you might not see their " #~ "messages." #~ msgstr "" #~ "ଆଳାପ ସନ୍ଦେଶଗୁଡ଼ିକୁ ଅନ୍ତର୍ଭୁକ୍ତ କରି ବିଜ୍ଞପ୍ତିକୁ ବର୍ତ୍ତମାନ ନିଷ୍କ୍ରିୟ କରାଯାଇଛି। ଆପଣ ଅନ୍ୟମାନଙ୍କର " #~ "ସନ୍ଦେଶଗୁଡ଼ିକୁ ଦେଖିପାରୁଛନ୍ତି କି ନାହିଁ ତାହା ଜଣାଇବା ପାଇଁ ଆପଣଙ୍କର ଅନଲାଇନ ସ୍ଥିତିକୁ ସଜଡ଼ାଯାଇଛି।" #~ msgid "Shutting down might cause them to lose unsaved work." #~ msgstr "ବନ୍ଦ କରିବା ଫଳରେ ହୁଏତ ସେମାନେ ତାଙ୍କର ଅସଂରକ୍ଷିତ କାର୍ଯ୍ୟକୁ ହରାଇପାରନ୍ତି।" #~ msgid "" #~ "Sorry, no wisdom for you today:\n" #~ "%s" #~ msgstr "" #~ "କ୍ଷମା କରିବେ, ଆପଣଙ୍କ ପାଇଁ ଆଜି କୌଣସି ଜ୍ଞାନ ନାହିଁ:\n" #~ "%s" #~ msgid "%s the Oracle says" #~ msgstr "%s Oracle କହିଥାଏ" #~ msgctxt "title" #~ msgid "Sign In" #~ msgstr "ସାଇନ ଇନ" #~ msgid "APPLICATIONS" #~ msgstr "ପ୍ରୟୋଗଗୁଡ଼ିକ" #~ msgid "SETTINGS" #~ msgstr "ସେଟିଙ୍ଗଗୁଡିକ" #~ msgctxt "event list time" #~ msgid "%H:%M" #~ msgstr "%H:%M" #~ msgid "Subscription request" #~ msgstr "ସଦସ୍ୟତା ‍ଅନୁରୋଧ" #~ msgid "Connection error" #~ msgstr "ସଂଯୋଗ ତ୍ରୁଟି" #~ msgid "Sent at %X on %A" #~ msgstr "%X କୁ %A ଉପରେ ପଠାଯାଇଛି" #~ msgid "Sent on %A, %B %d, %Y" #~ msgstr "%A ଉପରେ ପଠାଯାଇଛି, %B %d, %Y" #~ msgid "Connection to %s failed" #~ msgstr "%s ସହିତ ସଂଯୋଗ ବିଫଳ ହୋଇଛି" #~ msgid "Reconnect" #~ msgstr "ପୁନଃସଂଯୋଗ କରନ୍ତୁ" #~ msgid "tray" #~ msgstr "ଟ୍ରେ" #~ msgid "Browse Files..." #~ msgstr "ଫାଇଲଗୁଡ଼ିକୁ ବ୍ରାଉଜ କରନ୍ତୁ..." #~ msgid "Error browsing device" #~ msgstr "ଉପକରଣକୁ ବ୍ରାଉଜ କରିବାରେ ତ୍ରୁଟି" #~ msgid "The requested device cannot be browsed, error is '%s'" #~ msgstr "ଅନୁରୋଧ କରାଯାଇଥିବା ଉପକରଣକୁ ବ୍ରାଉଜ କରିହେବ ନାହିଁ, ତ୍ରୁଟି ହେଉଛି '%s'" #~ msgid "More..." #~ msgstr "ଅଧିକ..." #~ msgid "Wireless" #~ msgstr "ବେତାର" #~ msgid "VPN Connections" #~ msgstr "VPN ସଂୟୋଗଗୁଡିକ" #~ msgid "System Settings" #~ msgstr "ତନ୍ତ୍ର ବିନ୍ୟାସ" #~ msgid "Your favorite Easter Egg" #~ msgstr "ଆପଣଙ୍କର ମନପସନ୍ଦ ଇଷ୍ଟର ଏଗ" #~ msgid "United Kingdom" #~ msgstr "ଯୁକ୍ତ ରାଜ୍ଯ" #~ msgid "Default" #~ msgstr "ପୂର୍ବନିର୍ଦ୍ଧାରିତ" #~ msgid "If true, display date in the clock, in addition to time." #~ msgstr "ସତ ଥିଲେ, ଘଣ୍ଟାରେ ସମୟ ସହିତ ତାରିଖ ଦେଖାନ୍ତୁ।" #~ msgid "If true, display seconds in time." #~ msgstr "ସତ ଥିଲେ, ସମୟରେ ସେକେଣ୍ଡ ଦେଖାନ୍ତୁ।" #~ msgid "Show date in clock" #~ msgstr "ଘଣ୍ଟାରେ ତାରିଖ ଦେଖାନ୍ତୁ" #~ msgid "Show time with seconds" #~ msgstr "ସମୟରେ ସେକେଣ୍ଡ ଦେଖାନ୍ତୁ" #~ msgid "CONTACTS" #~ msgstr "ସମ୍ପର୍କଗୁଡ଼ିକ" #~ msgid "%a %b %e, %R:%S" #~ msgstr "%a %b %e, %R:%S" #~ msgid "%a %b %e, %R" #~ msgstr "%a %b %e, %R" #~ msgid "%a %R:%S" #~ msgstr "%a %R:%S" #~ msgid "%a %R" #~ msgstr "%a %R" #~ msgid "%a %b %e, %l:%M:%S %p" #~ msgstr "%a %b %e, %l:%M:%S %p" #~ msgid "%a %l:%M:%S %p" #~ msgstr "%a %l:%M:%S %p" #~ msgid "RECENT ITEMS" #~ msgstr "ସାମ୍ପ୍ରତିକ ବସ୍ତୁଗୁଡ଼ିକ" #~ msgid "Show password" #~ msgstr "ପ୍ରବେଶ ସଂକେତ ଦର୍ଶାନ୍ତୁ" #~ msgid "Retry" #~ msgstr "ପୁଣି ଚେଷ୍ଟାକରନ୍ତୁ" #~ msgid "Connect to..." #~ msgstr "ଏହା ସହିତ ସଂଯୋଗ କରନ୍ତୁ..." #~ msgid "PLACES & DEVICES" #~ msgstr "ସ୍ଥାନ ଏବଂ ଉପକରଣଗୁଡ଼ିକ" #~ msgid "%s is online." #~ msgstr "%s ଅନଲାଇନ ଅଛି।" #~ msgid "%s is offline." #~ msgstr "%s ଅଫଲାଇନ ଅଛି।" #~ msgid "%s is away." #~ msgstr "%s ଅନୁପସ୍ଥିତ ଅଛି।" #~ msgid "%s is busy." #~ msgstr "%s ବ୍ୟସ୍ତ ଅଛି।" #~ msgid "Hidden" #~ msgstr "ଲୁକ୍କାଇତ" #~ msgid "Power Off..." #~ msgstr "ବିଦ୍ୟୁତ ପ୍ରବାହ ବନ୍ଦ କରନ୍ତୁ..." #~ msgid "Online Accounts" #~ msgstr "ଅନଲାଇନ ଖାତାଗୁଡ଼ିକ" #~ msgid "Lock Screen" #~ msgstr "ପରଦାକୁ ତାଲା ଦେଇ ରଖନ୍ତୁ" #~ msgid "Log Out..." #~ msgstr "ଲଗ ଆଉଟ..." #~ msgid "Home Folder" #~ msgstr "ମୂଳ ଫୋଲଡର" #~ msgid "%1$s: %2$s" #~ msgstr "%1$s: %2$s" #~ msgid "calendar:week_start:0" #~ msgstr "calendar:week_start:0" 07070100000257000081A40000000000000000000000016712993F00010F7A000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/os.po# Ossetian translation for gnome-shell. # Copyright (C) 2020 gnome-shell's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-shell package. # FIRST AUTHOR , YEAR. # Soslan Khubulov , 2020. # msgid "" msgstr "" "Project-Id-Version: gnome-shell master\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" "POT-Creation-Date: 2020-04-28 09:12+0000\n" "PO-Revision-Date: 2020-05-03 18:52+0300\n" "Last-Translator: Soslan Khubulov \n" "Language-Team: Ossetian; Ossetic \n" "Language: os\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: Gtranslator 3.36.0\n" #: data/50-gnome-shell-system.xml:6 msgid "System" msgstr "Системӕ" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "Хъусинӕгтӕ равдисын" #: data/50-gnome-shell-system.xml:12 msgid "Focus the active notification" msgstr "Активон хъусинагмӕ ахизын" #: data/50-gnome-shell-system.xml:15 msgid "Show the overview" msgstr "Афӕлгӕст равдисын" #: data/50-gnome-shell-system.xml:18 msgid "Show all applications" msgstr "Ӕфтуантӕ иууылдӕр равдисын" #: data/50-gnome-shell-system.xml:21 msgid "Open the application menu" msgstr "Ӕфтуанты меню бакӕнын" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "GNOME Shell" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "Рудзгуытӕй архайын ӕмӕ ӕфтуан иу кӕнын" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" "Аразджытӕн ӕмӕ тестгӕнджытӕн пайда мидӕггаг мигӕнӕнтӕ Alt-F2-йӕ баиу кӕнын" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Alt-F2 диалогы уылты мидӕггаг дебаггинг ӕмӕ мониторингы мигӕнӕнтӕм уадзы." #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "Иу кӕнинаг уӕлӕмхасӕнты UUID-тӕ" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "GNOME Shell-ы уӕлӕмхасӕнтӕн ис UUID-тӕ; ацы дӕгъӕл ранымайы ӕвгӕнинаг " "уӕлӕмхасӕнтӕ. Кӕд искӕцы уӕлӕмхасӕн ӕвгӕнинаг у, уӕд хъуамӕ уа ацы " "номхыгъды. Ацы номхыгъд ма дӕ бон у org.gnome.Shell-ы EnableExtension ӕмӕ " "DisableExtension D-Bus-ы методтӕй ивын." #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "Тыххӕй хицӕнгӕнинаг уӕлӕмхасӕнты UUID-тӕ" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" "GNOME Shell-ы уӕлӕмхасӕнтӕн ис UUID-тӕ; ацы дӕгъӕл ранымайы хицӕнгӕнинаг " "уӕлӕмхасӕнтӕ, кӕд ныры режиммӕ гӕсгӕ ӕвгӕд сты, уӕддӕр. Ацы номхыгъд ма дӕ " "бон у org.gnome.Shell-ы EnableExtension ӕмӕ DisableExtension D-Bus-ы " "методтӕй ивын. Ацы дӕгъӕл-ӕн “enabled-extensions”-ӕй фылдӕр тых ис." #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "Архайӕджы уӕлӕмхасӕнтӕ ахицӕн кӕнын" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" #: data/org.gnome.shell.gschema.xml.in:45 msgid "Disables the validation of extension version compatibility" msgstr "" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" #: data/org.gnome.shell.gschema.xml.in:54 msgid "List of desktop file IDs for favorite applications" msgstr "" #: data/org.gnome.shell.gschema.xml.in:55 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" #: data/org.gnome.shell.gschema.xml.in:62 msgid "App Picker View" msgstr "" #: data/org.gnome.shell.gschema.xml.in:63 msgid "Index of the currently selected view in the application picker." msgstr "" #: data/org.gnome.shell.gschema.xml.in:69 msgid "History for command (Alt-F2) dialog" msgstr "" #. Translators: looking glass is a debugger and inspector tool, see https://wiki.gnome.org/Projects/GnomeShell/LookingGlass #: data/org.gnome.shell.gschema.xml.in:74 msgid "History for the looking glass dialog" msgstr "" #: data/org.gnome.shell.gschema.xml.in:78 msgid "Always show the “Log out” menu item in the user menu." msgstr "" #: data/org.gnome.shell.gschema.xml.in:79 msgid "" "This key overrides the automatic hiding of the “Log out” menu item in single-" "user, single-session situations." msgstr "" #: data/org.gnome.shell.gschema.xml.in:86 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" #: data/org.gnome.shell.gschema.xml.in:87 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" #: data/org.gnome.shell.gschema.xml.in:96 msgid "" "Whether the default Bluetooth adapter had set up devices associated to it" msgstr "" #: data/org.gnome.shell.gschema.xml.in:97 msgid "" "The shell will only show a Bluetooth menu item if a Bluetooth adapter is " "powered, or if there were devices set up associated with the default " "adapter. This will be reset if the default adapter is ever seen not to have " "devices associated to it." msgstr "" #: data/org.gnome.shell.gschema.xml.in:106 msgid "Enable introspection API" msgstr "" #: data/org.gnome.shell.gschema.xml.in:107 msgid "" "Enables a D-Bus API that allows to introspect the application state of the " "shell." msgstr "" #: data/org.gnome.shell.gschema.xml.in:119 msgid "Keybinding to open the application menu" msgstr "" #: data/org.gnome.shell.gschema.xml.in:120 msgid "Keybinding to open the application menu." msgstr "" #: data/org.gnome.shell.gschema.xml.in:126 msgid "Keybinding to open the “Show Applications” view" msgstr "" #: data/org.gnome.shell.gschema.xml.in:127 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "" #: data/org.gnome.shell.gschema.xml.in:134 msgid "Keybinding to open the overview" msgstr "" #: data/org.gnome.shell.gschema.xml.in:135 msgid "Keybinding to open the Activities Overview." msgstr "" #: data/org.gnome.shell.gschema.xml.in:141 msgid "Keybinding to toggle the visibility of the notification list" msgstr "" #: data/org.gnome.shell.gschema.xml.in:142 msgid "Keybinding to toggle the visibility of the notification list." msgstr "" #: data/org.gnome.shell.gschema.xml.in:148 msgid "Keybinding to focus the active notification" msgstr "" #: data/org.gnome.shell.gschema.xml.in:149 msgid "Keybinding to focus the active notification." msgstr "" #: data/org.gnome.shell.gschema.xml.in:155 msgid "Switch to application 1" msgstr "1-аг ӕфтуанмӕ ахизын" #: data/org.gnome.shell.gschema.xml.in:159 msgid "Switch to application 2" msgstr "" #: data/org.gnome.shell.gschema.xml.in:163 msgid "Switch to application 3" msgstr "" #: data/org.gnome.shell.gschema.xml.in:167 msgid "Switch to application 4" msgstr "" #: data/org.gnome.shell.gschema.xml.in:171 msgid "Switch to application 5" msgstr "" #: data/org.gnome.shell.gschema.xml.in:175 msgid "Switch to application 6" msgstr "" #: data/org.gnome.shell.gschema.xml.in:179 msgid "Switch to application 7" msgstr "" #: data/org.gnome.shell.gschema.xml.in:183 msgid "Switch to application 8" msgstr "" #: data/org.gnome.shell.gschema.xml.in:187 msgid "Switch to application 9" msgstr "" #: data/org.gnome.shell.gschema.xml.in:196 #: data/org.gnome.shell.gschema.xml.in:223 msgid "Limit switcher to current workspace." msgstr "" #: data/org.gnome.shell.gschema.xml.in:197 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" #: data/org.gnome.shell.gschema.xml.in:214 msgid "The application icon mode." msgstr "" #: data/org.gnome.shell.gschema.xml.in:215 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-" "only” (shows only the application icon) or “both”." msgstr "" #: data/org.gnome.shell.gschema.xml.in:224 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" #: data/org.gnome.shell.gschema.xml.in:234 msgid "Locations" msgstr "Бынӕттӕ" #: data/org.gnome.shell.gschema.xml.in:235 msgid "The locations to show in world clocks" msgstr "" #: data/org.gnome.shell.gschema.xml.in:245 msgid "Automatic location" msgstr "" #: data/org.gnome.shell.gschema.xml.in:246 msgid "Whether to fetch the current location or not" msgstr "" #: data/org.gnome.shell.gschema.xml.in:253 msgid "Location" msgstr "Бынат" #: data/org.gnome.shell.gschema.xml.in:254 msgid "The location for which to show a forecast" msgstr "" #: data/org.gnome.shell.gschema.xml.in:266 msgid "Attach modal dialog to the parent window" msgstr "" #: data/org.gnome.shell.gschema.xml.in:267 #: data/org.gnome.shell.gschema.xml.in:276 #: data/org.gnome.shell.gschema.xml.in:284 #: data/org.gnome.shell.gschema.xml.in:292 #: data/org.gnome.shell.gschema.xml.in:300 msgid "" "This key overrides the key in org.gnome.mutter when running GNOME Shell." msgstr "" #: data/org.gnome.shell.gschema.xml.in:275 msgid "Enable edge tiling when dropping windows on screen edges" msgstr "" #: data/org.gnome.shell.gschema.xml.in:283 msgid "Workspaces are managed dynamically" msgstr "" #: data/org.gnome.shell.gschema.xml.in:291 msgid "Workspaces only on primary monitor" msgstr "" #: data/org.gnome.shell.gschema.xml.in:299 msgid "Delay focus changes in mouse mode until the pointer stops moving" msgstr "" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "" #: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:36 #: subprojects/extensions-app/data/ui/extensions-window.ui:224 msgid "Something’s gone wrong" msgstr "Цыдӕр раст нӕ ацыд" #: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:48 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" #: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:82 msgid "Technical Details" msgstr "" #: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:165 msgid "Homepage" msgstr "" #: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:166 msgid "Visit extension homepage" msgstr "" #: js/gdm/authPrompt.js:135 js/ui/audioDeviceSelection.js:57 #: js/ui/components/networkAgent.js:110 js/ui/components/polkitAgent.js:139 #: js/ui/endSessionDialog.js:369 js/ui/extensionDownloader.js:181 #: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386 #: js/ui/status/network.js:916 subprojects/extensions-app/js/main.js:148 msgid "Cancel" msgstr "" #. Cisco LEAP #: js/gdm/authPrompt.js:237 js/ui/components/networkAgent.js:205 #: js/ui/components/networkAgent.js:221 js/ui/components/networkAgent.js:245 #: js/ui/components/networkAgent.js:266 js/ui/components/networkAgent.js:286 #: js/ui/components/networkAgent.js:296 js/ui/components/polkitAgent.js:277 #: js/ui/shellMountOperation.js:326 msgid "Password" msgstr "" #: js/gdm/loginDialog.js:318 msgid "Choose Session" msgstr "" #: js/gdm/loginDialog.js:457 msgid "Not listed?" msgstr "" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:913 #, javascript-format msgid "(e.g., user or %s)" msgstr "" #. TTLS and PEAP are actually much more complicated, but this complication #. is not visible here since we only care about phase2 authentication #. (and don't even care of which one) #: js/gdm/loginDialog.js:918 js/ui/components/networkAgent.js:241 #: js/ui/components/networkAgent.js:264 js/ui/components/networkAgent.js:282 msgid "Username" msgstr "" #: js/gdm/loginDialog.js:1254 msgid "Login Window" msgstr "" #: js/gdm/util.js:345 msgid "Authentication error" msgstr "" #. We don't show fingerprint messages directly since it's #. not the main auth service. Instead we use the messages #. as a cue to display our own message. #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger instead #: js/gdm/util.js:471 msgid "(or swipe finger)" msgstr "" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:93 msgctxt "search-result" msgid "Power Off" msgstr "" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:96 msgid "power off;shutdown;reboot;restart;halt;stop" msgstr "" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:101 msgctxt "search-result" msgid "Lock Screen" msgstr "" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:104 msgid "lock screen" msgstr "" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:109 msgctxt "search-result" msgid "Log Out" msgstr "" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:112 msgid "logout;log out;sign off" msgstr "" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:117 msgctxt "search-result" msgid "Suspend" msgstr "" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:120 msgid "suspend;sleep" msgstr "" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:125 msgctxt "search-result" msgid "Switch User" msgstr "" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:128 msgid "switch user" msgstr "" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:135 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "" #: js/misc/systemActions.js:255 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "" #: js/misc/systemActions.js:256 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "" #: js/misc/util.js:120 msgid "Command not found" msgstr "" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:156 msgid "Could not parse command:" msgstr "" #: js/misc/util.js:164 #, javascript-format msgid "Execution of “%s” failed:" msgstr "" #: js/misc/util.js:181 msgid "Just now" msgstr "Ацы тӕккӕ" #: js/misc/util.js:183 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "" msgstr[1] "" #: js/misc/util.js:187 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "" msgstr[1] "" #: js/misc/util.js:191 msgid "Yesterday" msgstr "Знон" #: js/misc/util.js:193 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "" msgstr[1] "" #: js/misc/util.js:197 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "" msgstr[1] "" #: js/misc/util.js:201 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "" msgstr[1] "" #: js/misc/util.js:204 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "" msgstr[1] "" #. Translators: Time in 24h format #: js/misc/util.js:237 msgid "%H∶%M" msgstr "" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/util.js:243 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/util.js:249 #, no-c-format msgid "%A, %H∶%M" msgstr "" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/util.js:255 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/util.js:261 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/util.js:266 msgid "%l∶%M %p" msgstr "" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/util.js:272 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/util.js:278 #, no-c-format msgid "%A, %l∶%M %p" msgstr "" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/util.js:284 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/util.js:290 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "" #. TRANSLATORS: this is the title of the wifi captive portal login window #: js/portalHelper/main.js:41 msgid "Hotspot Login" msgstr "" #: js/portalHelper/main.js:87 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:39 js/ui/status/location.js:374 msgid "Deny Access" msgstr "" #: js/ui/accessDialog.js:40 js/ui/status/location.js:377 msgid "Grant Access" msgstr "" #: js/ui/appDisplay.js:950 msgid "Unnamed Folder" msgstr "" #: js/ui/appDisplay.js:973 msgid "Frequently used applications will appear here" msgstr "" #: js/ui/appDisplay.js:1108 msgid "Frequent" msgstr "Арӕх" #: js/ui/appDisplay.js:1115 msgid "All" msgstr "Иууыл" #. Translators: This is the heading of a list of open windows #: js/ui/appDisplay.js:2504 js/ui/panel.js:75 msgid "Open Windows" msgstr "Гом рудзгуытӕ" #: js/ui/appDisplay.js:2523 js/ui/panel.js:82 msgid "New Window" msgstr "Ног рудзынг" #: js/ui/appDisplay.js:2534 msgid "Launch using Dedicated Graphics Card" msgstr "" #: js/ui/appDisplay.js:2562 js/ui/dash.js:239 msgid "Remove from Favorites" msgstr "Сӕрмагондтӕй райсын" #: js/ui/appDisplay.js:2568 msgid "Add to Favorites" msgstr "Сӕрмагондтӕм бахӕссын" #: js/ui/appDisplay.js:2578 js/ui/panel.js:93 msgid "Show Details" msgstr "" #: js/ui/appFavorites.js:163 #, javascript-format msgid "%s has been added to your favorites." msgstr "" #: js/ui/appFavorites.js:196 #, javascript-format msgid "%s has been removed from your favorites." msgstr "" #: js/ui/audioDeviceSelection.js:41 msgid "Select Audio Device" msgstr "" #: js/ui/audioDeviceSelection.js:54 msgid "Sound Settings" msgstr "" #: js/ui/audioDeviceSelection.js:64 msgid "Headphones" msgstr "" #: js/ui/audioDeviceSelection.js:66 msgid "Headset" msgstr "" #: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:270 msgid "Microphone" msgstr "Микрофон" #: js/ui/backgroundMenu.js:14 msgid "Change Background…" msgstr "" #: js/ui/backgroundMenu.js:16 js/ui/status/nightLight.js:45 msgid "Display Settings" msgstr "" #: js/ui/backgroundMenu.js:17 msgid "Settings" msgstr "" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:41 msgctxt "calendar-no-work" msgid "06" msgstr "" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:70 msgctxt "grid sunday" msgid "S" msgstr "Х" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:72 msgctxt "grid monday" msgid "M" msgstr "К" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:74 msgctxt "grid tuesday" msgid "T" msgstr "Д" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:76 msgctxt "grid wednesday" msgid "W" msgstr "Ӕ" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:78 msgctxt "grid thursday" msgid "T" msgstr "Ц" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:80 msgctxt "grid friday" msgid "F" msgstr "М" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:82 msgctxt "grid saturday" msgid "S" msgstr "С" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:397 msgid "%OB" msgstr "" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:407 msgid "%OB %Y" msgstr "" #: js/ui/calendar.js:466 msgid "Previous month" msgstr "Ай размӕ мӕй" #: js/ui/calendar.js:481 msgid "Next month" msgstr "Иннӕ мӕй" #: js/ui/calendar.js:631 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "" #: js/ui/calendar.js:687 msgid "Week %V" msgstr "" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/calendar.js:762 msgctxt "event list time" msgid "All Day" msgstr "" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/calendar.js:900 msgctxt "calendar heading" msgid "%A, %B %-d" msgstr "" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/calendar.js:903 msgctxt "calendar heading" msgid "%A, %B %-d, %Y" msgstr "" #: js/ui/calendar.js:1133 msgid "No Notifications" msgstr "" #: js/ui/calendar.js:1136 msgid "No Events" msgstr "" #: js/ui/calendar.js:1190 msgid "Do Not Disturb" msgstr "" #: js/ui/calendar.js:1209 msgid "Clear" msgstr "" #. Translators: %s is an application name #: js/ui/closeDialog.js:42 #, javascript-format msgid "“%s” is not responding." msgstr "" #: js/ui/closeDialog.js:43 msgid "" "You may choose to wait a short while for it to continue or force the " "application to quit entirely." msgstr "" #: js/ui/closeDialog.js:70 msgid "Force Quit" msgstr "" #: js/ui/closeDialog.js:73 msgid "Wait" msgstr "" #: js/ui/components/automountManager.js:86 msgid "External drive connected" msgstr "" #: js/ui/components/automountManager.js:98 msgid "External drive disconnected" msgstr "" #: js/ui/components/automountManager.js:208 msgid "Unable to unlock volume" msgstr "" #: js/ui/components/automountManager.js:209 msgid "The installed udisks version does not support the PIM setting" msgstr "" #: js/ui/components/autorunManager.js:332 #, javascript-format msgid "Open with %s" msgstr "" #: js/ui/components/networkAgent.js:92 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router." msgstr "" #: js/ui/components/networkAgent.js:104 js/ui/status/network.js:227 #: js/ui/status/network.js:318 js/ui/status/network.js:919 msgid "Connect" msgstr "" #: js/ui/components/networkAgent.js:211 msgid "Key" msgstr "" #: js/ui/components/networkAgent.js:249 js/ui/components/networkAgent.js:272 msgid "Private key password" msgstr "" #: js/ui/components/networkAgent.js:270 msgid "Identity" msgstr "" #: js/ui/components/networkAgent.js:284 msgid "Service" msgstr "" #: js/ui/components/networkAgent.js:313 js/ui/components/networkAgent.js:341 #: js/ui/components/networkAgent.js:680 js/ui/components/networkAgent.js:701 msgid "Authentication required" msgstr "" #: js/ui/components/networkAgent.js:314 js/ui/components/networkAgent.js:681 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network " "“%s”." msgstr "" #: js/ui/components/networkAgent.js:318 js/ui/components/networkAgent.js:685 msgid "Wired 802.1X authentication" msgstr "" #: js/ui/components/networkAgent.js:320 msgid "Network name" msgstr "" #: js/ui/components/networkAgent.js:325 js/ui/components/networkAgent.js:689 msgid "DSL authentication" msgstr "" #: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:694 msgid "PIN code required" msgstr "" #: js/ui/components/networkAgent.js:333 js/ui/components/networkAgent.js:695 msgid "PIN code is needed for the mobile broadband device" msgstr "" #: js/ui/components/networkAgent.js:334 msgid "PIN" msgstr "" #: js/ui/components/networkAgent.js:342 js/ui/components/networkAgent.js:686 #: js/ui/components/networkAgent.js:690 js/ui/components/networkAgent.js:702 #: js/ui/components/networkAgent.js:706 #, javascript-format msgid "A password is required to connect to “%s”." msgstr "" #: js/ui/components/networkAgent.js:669 js/ui/status/network.js:1694 msgid "Network Manager" msgstr "" #: js/ui/components/networkAgent.js:705 msgid "VPN password" msgstr "" #: js/ui/components/polkitAgent.js:39 msgid "Authentication Required" msgstr "" #: js/ui/components/polkitAgent.js:80 msgid "Administrator" msgstr "Администратор" #: js/ui/components/polkitAgent.js:142 msgid "Authenticate" msgstr "" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:254 js/ui/shellMountOperation.js:402 msgid "Sorry, that didn’t work. Please try again." msgstr "" #. Translators: this is the other person changing their old IM name to their new #. IM name. #: js/ui/components/telepathyClient.js:822 #, javascript-format msgid "%s is now known as %s" msgstr "" #: js/ui/ctrlAltTab.js:21 js/ui/viewSelector.js:177 msgid "Windows" msgstr "Рудзгуытӕ" #: js/ui/dash.js:200 js/ui/dash.js:241 msgid "Show Applications" msgstr "" #. Translators: this is the name of the dock/favorites area on #. the left of the overview #: js/ui/dash.js:394 msgid "Dash" msgstr "" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:75 msgid "%B %-d %Y" msgstr "" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:82 msgid "%A %B %e %Y" msgstr "" #: js/ui/dateMenu.js:161 msgid "Add world clocks…" msgstr "" #: js/ui/dateMenu.js:162 msgid "World Clocks" msgstr "" #: js/ui/dateMenu.js:424 msgid "Loading…" msgstr "" #: js/ui/dateMenu.js:434 msgid "Go online for weather information" msgstr "" #: js/ui/dateMenu.js:436 msgid "Weather information is currently unavailable" msgstr "" #: js/ui/dateMenu.js:446 msgid "Weather" msgstr "Боныгъӕд" #: js/ui/dateMenu.js:448 msgid "Select weather location…" msgstr "" #: js/ui/endSessionDialog.js:37 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "" #: js/ui/endSessionDialog.js:38 msgctxt "title" msgid "Log Out" msgstr "" #: js/ui/endSessionDialog.js:40 #, javascript-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "" msgstr[1] "" #: js/ui/endSessionDialog.js:45 #, javascript-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "" msgstr[1] "" #: js/ui/endSessionDialog.js:51 msgctxt "button" msgid "Log Out" msgstr "" #: js/ui/endSessionDialog.js:56 msgctxt "title" msgid "Power Off" msgstr "" #: js/ui/endSessionDialog.js:57 msgctxt "title" msgid "Install Updates & Power Off" msgstr "" #: js/ui/endSessionDialog.js:59 #, javascript-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "" msgstr[1] "" #: js/ui/endSessionDialog.js:63 msgctxt "checkbox" msgid "Install pending software updates" msgstr "" #: js/ui/endSessionDialog.js:66 js/ui/endSessionDialog.js:82 msgctxt "button" msgid "Restart" msgstr "" #: js/ui/endSessionDialog.js:68 msgctxt "button" msgid "Power Off" msgstr "" #: js/ui/endSessionDialog.js:74 msgctxt "title" msgid "Restart" msgstr "" #: js/ui/endSessionDialog.js:76 #, javascript-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "" msgstr[1] "" #: js/ui/endSessionDialog.js:89 msgctxt "title" msgid "Restart & Install Updates" msgstr "" #: js/ui/endSessionDialog.js:91 #, javascript-format msgid "The system will automatically restart and install updates in %d second." msgid_plural "" "The system will automatically restart and install updates in %d seconds." msgstr[0] "" msgstr[1] "" #: js/ui/endSessionDialog.js:97 js/ui/endSessionDialog.js:116 msgctxt "button" msgid "Restart & Install" msgstr "" #: js/ui/endSessionDialog.js:98 msgctxt "button" msgid "Install & Power Off" msgstr "" #: js/ui/endSessionDialog.js:99 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "" #: js/ui/endSessionDialog.js:106 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:111 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" #: js/ui/endSessionDialog.js:259 msgid "Running on battery power: Please plug in before installing updates." msgstr "" #: js/ui/endSessionDialog.js:268 msgid "Some applications are busy or have unsaved work" msgstr "" #: js/ui/endSessionDialog.js:273 msgid "Other users are logged in" msgstr "" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:583 #, javascript-format msgid "%s (remote)" msgstr "" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:586 #, javascript-format msgid "%s (console)" msgstr "" #: js/ui/extensionDownloader.js:185 msgid "Install" msgstr "" #: js/ui/extensionDownloader.js:191 msgid "Install Extension" msgstr "" #: js/ui/extensionDownloader.js:192 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "" #: js/ui/extensionSystem.js:251 msgid "Extension Updates Available" msgstr "" #: js/ui/extensionSystem.js:252 msgid "Extension updates are ready to be installed." msgstr "" #: js/ui/inhibitShortcutsDialog.js:79 msgid "Allow inhibiting shortcuts" msgstr "" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:82 #, javascript-format msgid "The application %s wants to inhibit shortcuts" msgstr "" #: js/ui/inhibitShortcutsDialog.js:83 msgid "An application wants to inhibit shortcuts" msgstr "" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:90 #, javascript-format msgid "You can restore shortcuts by pressing %s." msgstr "" #: js/ui/inhibitShortcutsDialog.js:98 msgid "Deny" msgstr "" #: js/ui/inhibitShortcutsDialog.js:105 msgid "Allow" msgstr "" #: js/ui/kbdA11yDialog.js:32 msgid "Slow Keys Turned On" msgstr "" #: js/ui/kbdA11yDialog.js:33 msgid "Slow Keys Turned Off" msgstr "" #: js/ui/kbdA11yDialog.js:34 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" #: js/ui/kbdA11yDialog.js:41 msgid "Sticky Keys Turned On" msgstr "" #: js/ui/kbdA11yDialog.js:42 msgid "Sticky Keys Turned Off" msgstr "" #: js/ui/kbdA11yDialog.js:44 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" #: js/ui/kbdA11yDialog.js:46 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" #: js/ui/kbdA11yDialog.js:55 msgid "Leave On" msgstr "" #: js/ui/kbdA11yDialog.js:55 js/ui/status/bluetooth.js:156 #: js/ui/status/network.js:1291 msgid "Turn On" msgstr "" #: js/ui/kbdA11yDialog.js:63 js/ui/status/bluetooth.js:156 #: js/ui/status/network.js:135 js/ui/status/network.js:319 #: js/ui/status/network.js:1291 js/ui/status/network.js:1403 #: js/ui/status/nightLight.js:41 js/ui/status/rfkill.js:81 #: js/ui/status/rfkill.js:108 msgid "Turn Off" msgstr "" #: js/ui/kbdA11yDialog.js:63 msgid "Leave Off" msgstr "" #: js/ui/keyboard.js:207 msgid "Region & Language Settings" msgstr "" #: js/ui/lookingGlass.js:664 msgid "No extensions installed" msgstr "" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:719 #, javascript-format msgid "%s has not emitted any errors." msgstr "" #: js/ui/lookingGlass.js:725 msgid "Hide Errors" msgstr "" #: js/ui/lookingGlass.js:729 js/ui/lookingGlass.js:794 msgid "Show Errors" msgstr "" #: js/ui/lookingGlass.js:738 msgid "Enabled" msgstr "Иу" #. translators: #. * The device has been disabled #: js/ui/lookingGlass.js:741 subprojects/gvc/gvc-mixer-control.c:1892 msgid "Disabled" msgstr "Хицӕн" #: js/ui/lookingGlass.js:743 msgid "Error" msgstr "Рӕдыд" #: js/ui/lookingGlass.js:745 msgid "Out of date" msgstr "" #: js/ui/lookingGlass.js:747 msgid "Downloading" msgstr "" #: js/ui/lookingGlass.js:776 msgid "View Source" msgstr "" #: js/ui/lookingGlass.js:785 msgid "Web Page" msgstr "" #: js/ui/main.js:297 msgid "Logged in as a privileged user" msgstr "" #: js/ui/main.js:298 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" #: js/ui/main.js:337 msgid "Screen Lock disabled" msgstr "" #: js/ui/main.js:338 msgid "Screen Locking requires the GNOME display manager." msgstr "" #: js/ui/messageTray.js:1543 msgid "System Information" msgstr "" #: js/ui/mpris.js:199 msgid "Unknown artist" msgstr "" #: js/ui/mpris.js:209 msgid "Unknown title" msgstr "" #: js/ui/overview.js:73 msgid "Undo" msgstr "" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:86 msgid "Overview" msgstr "Афӕлгӕст" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overview.js:107 msgid "Type to search" msgstr "" #: js/ui/padOsd.js:95 msgid "New shortcut…" msgstr "" #: js/ui/padOsd.js:142 msgid "Application defined" msgstr "" #: js/ui/padOsd.js:143 msgid "Show on-screen help" msgstr "" #: js/ui/padOsd.js:144 msgid "Switch monitor" msgstr "" #: js/ui/padOsd.js:145 msgid "Assign keystroke" msgstr "" #: js/ui/padOsd.js:211 msgid "Done" msgstr "Ӕххӕст" #: js/ui/padOsd.js:745 msgid "Edit…" msgstr "Ивӕн..." #: js/ui/padOsd.js:787 js/ui/padOsd.js:910 msgid "None" msgstr "Никӕцы" #: js/ui/padOsd.js:863 msgid "Press a button to configure" msgstr "" #: js/ui/padOsd.js:864 msgid "Press Esc to exit" msgstr "" #: js/ui/padOsd.js:867 msgid "Press any key to exit" msgstr "" #: js/ui/panel.js:107 msgid "Quit" msgstr "" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:432 msgid "Activities" msgstr "Архӕйдтытӕ" #: js/ui/panel.js:711 msgctxt "System menu in the top bar" msgid "System" msgstr "Системӕ" #: js/ui/panel.js:824 msgid "Top Bar" msgstr "" #: js/ui/runDialog.js:58 msgid "Run a Command" msgstr "" #: js/ui/runDialog.js:73 msgid "Press ESC to close" msgstr "" #: js/ui/runDialog.js:238 msgid "Restart is not available on Wayland" msgstr "" #: js/ui/runDialog.js:243 msgid "Restarting…" msgstr "" #: js/ui/screenShield.js:203 msgid "GNOME needs to lock the screen" msgstr "" #. We could not become modal, so we can't activate the #. screenshield. The user is probably very upset at this #. point, but any application using global grabs is broken #. Just tell him to stop using this app #. #. XXX: another option is to kick the user into the gdm login #. screen, where we're not affected by grabs #: js/ui/screenShield.js:244 js/ui/screenShield.js:602 msgid "Unable to lock" msgstr "" #: js/ui/screenShield.js:245 js/ui/screenShield.js:603 msgid "Lock was blocked by an application" msgstr "" #: js/ui/search.js:702 msgid "Searching…" msgstr "" #: js/ui/search.js:704 msgid "No results." msgstr "" #: js/ui/search.js:830 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "" msgstr[1] "" #: js/ui/shellEntry.js:20 msgid "Copy" msgstr "" #: js/ui/shellEntry.js:25 msgid "Paste" msgstr "" #: js/ui/shellEntry.js:73 msgid "Show Text" msgstr "" #: js/ui/shellEntry.js:75 msgid "Hide Text" msgstr "" #: js/ui/shellEntry.js:162 msgid "Caps lock is on." msgstr "" #: js/ui/shellMountOperation.js:285 msgid "Hidden Volume" msgstr "" #: js/ui/shellMountOperation.js:288 msgid "Windows System Volume" msgstr "" #: js/ui/shellMountOperation.js:291 msgid "Uses Keyfiles" msgstr "" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:298 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead." msgstr "" #: js/ui/shellMountOperation.js:306 msgid "PIM Number" msgstr "" #: js/ui/shellMountOperation.js:365 msgid "Remember Password" msgstr "" #: js/ui/shellMountOperation.js:380 msgid "Unlock" msgstr "" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:391 #, javascript-format msgid "Open %s" msgstr "" #: js/ui/shellMountOperation.js:423 msgid "The PIM must be a number or empty." msgstr "" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:465 #, javascript-format msgid "Unable to start %s" msgstr "" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:467 #, javascript-format msgid "Couldn’t find the %s application" msgstr "" #: js/ui/status/accessibility.js:35 msgid "Accessibility" msgstr "" #: js/ui/status/accessibility.js:50 msgid "Zoom" msgstr "" #: js/ui/status/accessibility.js:57 msgid "Screen Reader" msgstr "" #: js/ui/status/accessibility.js:61 msgid "Screen Keyboard" msgstr "" #: js/ui/status/accessibility.js:65 msgid "Visual Alerts" msgstr "" #: js/ui/status/accessibility.js:68 msgid "Sticky Keys" msgstr "" #: js/ui/status/accessibility.js:71 msgid "Slow Keys" msgstr "" #: js/ui/status/accessibility.js:74 msgid "Bounce Keys" msgstr "" #: js/ui/status/accessibility.js:77 msgid "Mouse Keys" msgstr "" #: js/ui/status/accessibility.js:136 msgid "High Contrast" msgstr "" #: js/ui/status/accessibility.js:178 msgid "Large Text" msgstr "" #: js/ui/status/bluetooth.js:40 msgid "Bluetooth" msgstr "" #: js/ui/status/bluetooth.js:49 js/ui/status/network.js:595 msgid "Bluetooth Settings" msgstr "" #: js/ui/status/bluetooth.js:152 msgid "Bluetooth Off" msgstr "" #: js/ui/status/bluetooth.js:154 msgid "Bluetooth On" msgstr "" #: js/ui/status/brightness.js:39 msgid "Brightness" msgstr "" #: js/ui/status/dwellClick.js:13 msgid "Single Click" msgstr "" #: js/ui/status/dwellClick.js:18 msgid "Double Click" msgstr "" #: js/ui/status/dwellClick.js:23 msgid "Drag" msgstr "" #: js/ui/status/dwellClick.js:28 msgid "Secondary Click" msgstr "" #: js/ui/status/dwellClick.js:37 msgid "Dwell Click" msgstr "" #: js/ui/status/keyboard.js:826 msgid "Keyboard" msgstr "" #: js/ui/status/keyboard.js:848 msgid "Show Keyboard Layout" msgstr "" #: js/ui/status/location.js:65 js/ui/status/location.js:174 msgid "Location Enabled" msgstr "" #: js/ui/status/location.js:66 js/ui/status/location.js:175 msgid "Disable" msgstr "" #: js/ui/status/location.js:67 msgid "Privacy Settings" msgstr "" #: js/ui/status/location.js:173 msgid "Location In Use" msgstr "" #: js/ui/status/location.js:177 msgid "Location Disabled" msgstr "" #: js/ui/status/location.js:178 msgid "Enable" msgstr "" #: js/ui/status/location.js:355 msgid "Allow location access" msgstr "" #. Translators: %s is an application name #: js/ui/status/location.js:357 #, javascript-format msgid "The app %s wants to access your location" msgstr "" #: js/ui/status/location.js:367 msgid "Location access can be changed at any time from the privacy settings." msgstr "" #: js/ui/status/network.js:70 msgid "" msgstr "" #. Translators: %s is a network identifier #: js/ui/status/network.js:424 js/ui/status/network.js:1320 #, javascript-format msgid "%s Off" msgstr "" #. Translators: %s is a network identifier #: js/ui/status/network.js:427 #, javascript-format msgid "%s Connected" msgstr "" #. Translators: this is for network devices that are physically present but are not #. under NetworkManager's control (and thus cannot be used in the menu); #. %s is a network identifier #: js/ui/status/network.js:432 #, javascript-format msgid "%s Unmanaged" msgstr "" #. Translators: %s is a network identifier #: js/ui/status/network.js:435 #, javascript-format msgid "%s Disconnecting" msgstr "" #. Translators: %s is a network identifier #: js/ui/status/network.js:442 js/ui/status/network.js:1312 #, javascript-format msgid "%s Connecting" msgstr "" #. Translators: this is for network connections that require some kind of key or password; %s is a network identifier #: js/ui/status/network.js:445 #, javascript-format msgid "%s Requires Authentication" msgstr "" #. Translators: this is for devices that require some kind of firmware or kernel #. module, which is missing; %s is a network identifier #: js/ui/status/network.js:453 #, javascript-format msgid "Firmware Missing For %s" msgstr "" #. Translators: this is for a network device that cannot be activated (for example it #. is disabled by rfkill, or it has no coverage; %s is a network identifier #: js/ui/status/network.js:457 #, javascript-format msgid "%s Unavailable" msgstr "" #. Translators: %s is a network identifier #: js/ui/status/network.js:460 #, javascript-format msgid "%s Connection Failed" msgstr "" #: js/ui/status/network.js:472 msgid "Wired Settings" msgstr "" #: js/ui/status/network.js:515 msgid "Mobile Broadband Settings" msgstr "" #. Translators: %s is a network identifier #: js/ui/status/network.js:562 js/ui/status/network.js:1317 #, javascript-format msgid "%s Hardware Disabled" msgstr "" #. Translators: this is for a network device that cannot be activated #. because it's disabled by rfkill (airplane mode); %s is a network identifier #: js/ui/status/network.js:566 #, javascript-format msgid "%s Disabled" msgstr "" #: js/ui/status/network.js:607 msgid "Connect to Internet" msgstr "" #: js/ui/status/network.js:811 msgid "Airplane Mode is On" msgstr "" #: js/ui/status/network.js:812 msgid "Wi-Fi is disabled when airplane mode is on." msgstr "" #: js/ui/status/network.js:813 msgid "Turn Off Airplane Mode" msgstr "" #: js/ui/status/network.js:822 msgid "Wi-Fi is Off" msgstr "Wi-Fi хицӕн у" #: js/ui/status/network.js:823 msgid "Wi-Fi needs to be turned on in order to connect to a network." msgstr "" #: js/ui/status/network.js:824 msgid "Turn On Wi-Fi" msgstr "" #: js/ui/status/network.js:849 msgid "Wi-Fi Networks" msgstr "" #: js/ui/status/network.js:851 msgid "Select a network" msgstr "" #: js/ui/status/network.js:883 msgid "No Networks" msgstr "" #: js/ui/status/network.js:904 js/ui/status/rfkill.js:106 msgid "Use hardware switch to turn off" msgstr "" #: js/ui/status/network.js:1181 msgid "Select Network" msgstr "" #: js/ui/status/network.js:1187 msgid "Wi-Fi Settings" msgstr "" #. Translators: %s is a network identifier #: js/ui/status/network.js:1308 #, javascript-format msgid "%s Hotspot Active" msgstr "" #. Translators: %s is a network identifier #: js/ui/status/network.js:1323 #, javascript-format msgid "%s Not Connected" msgstr "" #: js/ui/status/network.js:1420 msgid "connecting…" msgstr "иу кӕны..." #. Translators: this is for network connections that require some kind of key or password #: js/ui/status/network.js:1423 msgid "authentication required" msgstr "" #: js/ui/status/network.js:1425 msgid "connection failed" msgstr "" #: js/ui/status/network.js:1476 msgid "VPN Settings" msgstr "" #: js/ui/status/network.js:1493 msgid "VPN" msgstr "" #: js/ui/status/network.js:1503 msgid "VPN Off" msgstr "" #: js/ui/status/network.js:1564 js/ui/status/rfkill.js:84 msgid "Network Settings" msgstr "" #: js/ui/status/network.js:1593 #, javascript-format msgid "%s Wired Connection" msgid_plural "%s Wired Connections" msgstr[0] "" msgstr[1] "" #: js/ui/status/network.js:1597 #, javascript-format msgid "%s Wi-Fi Connection" msgid_plural "%s Wi-Fi Connections" msgstr[0] "" msgstr[1] "" #: js/ui/status/network.js:1601 #, javascript-format msgid "%s Modem Connection" msgid_plural "%s Modem Connections" msgstr[0] "" msgstr[1] "" #: js/ui/status/network.js:1735 msgid "Connection failed" msgstr "" #: js/ui/status/network.js:1736 msgid "Activation of network connection failed" msgstr "" #: js/ui/status/nightLight.js:63 msgid "Night Light Disabled" msgstr "" #: js/ui/status/nightLight.js:64 msgid "Night Light On" msgstr "" #: js/ui/status/nightLight.js:66 msgid "Resume" msgstr "" #: js/ui/status/nightLight.js:67 msgid "Disable Until Tomorrow" msgstr "" #: js/ui/status/power.js:47 msgid "Power Settings" msgstr "" #: js/ui/status/power.js:63 msgid "Fully Charged" msgstr "" #: js/ui/status/power.js:69 msgid "Not Charging" msgstr "" #. 0 is reported when UPower does not have enough data #. to estimate battery life #: js/ui/status/power.js:72 js/ui/status/power.js:78 msgid "Estimating…" msgstr "" #. Translators: this is : Remaining () #: js/ui/status/power.js:86 #, javascript-format msgid "%d∶%02d Remaining (%d %%)" msgstr "" #. Translators: this is : Until Full () #: js/ui/status/power.js:91 #, javascript-format msgid "%d∶%02d Until Full (%d %%)" msgstr "" #: js/ui/status/power.js:139 js/ui/status/power.js:141 #, javascript-format msgid "%d %%" msgstr "" #: js/ui/status/remoteAccess.js:43 msgid "Screen is Being Shared" msgstr "" #: js/ui/status/remoteAccess.js:45 msgid "Turn off" msgstr "" #. The menu only appears when airplane mode is on, so just #. statically build it as if it was on, rather than dynamically #. changing the menu contents. #: js/ui/status/rfkill.js:79 msgid "Airplane Mode On" msgstr "" #: js/ui/status/system.js:102 msgid "Lock" msgstr "" #: js/ui/status/system.js:115 msgid "Power Off / Log Out" msgstr "" #: js/ui/status/system.js:118 msgid "Log Out" msgstr "" #: js/ui/status/system.js:130 msgid "Switch User…" msgstr "" #: js/ui/status/system.js:144 msgid "Suspend" msgstr "" #: js/ui/status/system.js:156 msgid "Power Off…" msgstr "" #: js/ui/status/thunderbolt.js:263 msgid "Thunderbolt" msgstr "Thunderbolt" #: js/ui/status/thunderbolt.js:325 msgid "Unknown Thunderbolt device" msgstr "Ӕнӕзонгӕ Thunderbolt гарз" #: js/ui/status/thunderbolt.js:326 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" #: js/ui/status/thunderbolt.js:329 msgid "Unauthorized Thunderbolt device" msgstr "" #: js/ui/status/thunderbolt.js:330 msgid "" "New device has been detected and needs to be authorized by an administrator." msgstr "" #: js/ui/status/thunderbolt.js:336 msgid "Thunderbolt authorization error" msgstr "" #: js/ui/status/thunderbolt.js:337 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "" #: js/ui/status/volume.js:151 msgid "Volume changed" msgstr "" #: js/ui/status/volume.js:222 msgid "Volume" msgstr "" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:17 msgid "Mirror" msgstr "Кӕсӕн" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:22 msgid "Join Displays" msgstr "" #. Translators: this is for using only an external display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:27 msgid "External Only" msgstr "Ӕрмӕст ӕттагон" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:32 msgid "Built-in Only" msgstr "" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:371 msgid "%A %B %-d" msgstr "" #: js/ui/unlockDialog.js:377 msgid "Swipe up to unlock" msgstr "Уӕлӕмӕ схӕц бакӕнынӕн" #: js/ui/unlockDialog.js:378 msgid "Click or press a key to unlock" msgstr "Ныкъкъӕрц кӕн мыстӕй кӕнӕ ныххӕц ӕгънӕгыл бакӕнынӕн" #: js/ui/unlockDialog.js:550 msgid "Unlock Window" msgstr "" #: js/ui/unlockDialog.js:559 msgid "Log in as another user" msgstr "" #: js/ui/viewSelector.js:181 msgid "Applications" msgstr "Ӕфтуантӕ" #: js/ui/viewSelector.js:185 msgid "Search" msgstr "Агурын" #: js/ui/windowAttentionHandler.js:20 #, javascript-format msgid "“%s” is ready" msgstr "“%s” цӕттӕ у" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:55 msgid "Keep these display settings?" msgstr "" #. Translators: this and the following message should be limited in length, #. to avoid ellipsizing the labels. #. #: js/ui/windowManager.js:64 msgid "Revert Settings" msgstr "" #: js/ui/windowManager.js:67 msgid "Keep Changes" msgstr "" #: js/ui/windowManager.js:86 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "" msgstr[1] "" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:546 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:27 msgid "Minimize" msgstr "" #: js/ui/windowMenu.js:34 msgid "Unmaximize" msgstr "" #: js/ui/windowMenu.js:38 msgid "Maximize" msgstr "" #: js/ui/windowMenu.js:45 msgid "Move" msgstr "Хӕссын" #: js/ui/windowMenu.js:51 msgid "Resize" msgstr "" #: js/ui/windowMenu.js:58 msgid "Move Titlebar Onscreen" msgstr "" #: js/ui/windowMenu.js:63 msgid "Always on Top" msgstr "" #: js/ui/windowMenu.js:82 msgid "Always on Visible Workspace" msgstr "" #: js/ui/windowMenu.js:96 msgid "Move to Workspace Left" msgstr "" #: js/ui/windowMenu.js:102 msgid "Move to Workspace Right" msgstr "" #: js/ui/windowMenu.js:108 msgid "Move to Workspace Up" msgstr "" #: js/ui/windowMenu.js:114 msgid "Move to Workspace Down" msgstr "" #: js/ui/windowMenu.js:132 msgid "Move to Monitor Up" msgstr "" #: js/ui/windowMenu.js:141 msgid "Move to Monitor Down" msgstr "" #: js/ui/windowMenu.js:150 msgid "Move to Monitor Left" msgstr "" #: js/ui/windowMenu.js:159 msgid "Move to Monitor Right" msgstr "" #: js/ui/windowMenu.js:167 msgid "Close" msgstr "Сӕхгӕнын" #: src/calendar-server/evolution-calendar.desktop.in:3 msgid "Evolution Calendar" msgstr "" #: src/main.c:458 subprojects/extensions-tool/src/main.c:317 msgid "Print version" msgstr "Мыхуырӕн" #: src/main.c:464 msgid "Mode used by GDM for login screen" msgstr "" #: src/main.c:470 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "" #: src/main.c:476 msgid "List possible modes" msgstr "" #: src/shell-app.c:286 msgctxt "program" msgid "Unknown" msgstr "Ӕнӕзонгӕ" #: src/shell-app.c:537 #, c-format msgid "Failed to launch “%s”" msgstr "" #: src/shell-keyring-prompt.c:731 msgid "Passwords do not match." msgstr "" #: src/shell-keyring-prompt.c:739 msgid "Password cannot be blank" msgstr "" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/js/main.js:182 #: subprojects/extensions-app/data/ui/extensions-window.ui:61 msgid "Extensions" msgstr "Уӕлӕмхасӕнтӕ" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 #: subprojects/extensions-app/js/main.js:183 msgid "Manage your GNOME Extensions" msgstr "" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:17 msgid "The GNOME Project" msgstr "" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:36 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "" #: subprojects/extensions-app/js/main.js:144 #, javascript-format msgid "Remove “%s”?" msgstr "Схафон “%s”?" #: subprojects/extensions-app/js/main.js:145 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "" #: subprojects/extensions-app/js/main.js:149 msgid "Remove" msgstr "" #: subprojects/extensions-app/js/main.js:181 msgid "translator-credits" msgstr "" #: subprojects/extensions-app/js/main.js:313 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "" msgstr[1] "" #: subprojects/extensions-app/data/ui/extension-row.ui:100 #: subprojects/extensions-tool/src/command-create.c:301 #: subprojects/extensions-tool/src/main.c:241 msgid "Description" msgstr "" #: subprojects/extensions-app/data/ui/extension-row.ui:123 #: subprojects/extensions-tool/src/main.c:253 msgid "Version" msgstr "Фӕлтӕр" #: subprojects/extensions-app/data/ui/extension-row.ui:151 msgid "Author" msgstr "Автор" #: subprojects/extensions-app/data/ui/extension-row.ui:175 msgid "Website" msgstr "Вебсайт" #: subprojects/extensions-app/data/ui/extension-row.ui:192 msgid "Remove…" msgstr "Схафӕн..." #: subprojects/extensions-app/data/ui/extensions-window.ui:8 msgid "Help" msgstr "Ӕххуыс" #: subprojects/extensions-app/data/ui/extensions-window.ui:12 msgid "About Extensions" msgstr "Уӕлӕмхасӕнты тыххӕй" #: subprojects/extensions-app/data/ui/extensions-window.ui:27 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" #: subprojects/extensions-app/data/ui/extensions-window.ui:35 msgid "Warning" msgstr "Хъусдаринаг" #: subprojects/extensions-app/data/ui/extensions-window.ui:46 msgid "" "Extensions can cause system issues, including performance problems. If you " "encounter problems with your system, it is recommended to disable all " "extensions." msgstr "" #: subprojects/extensions-app/data/ui/extensions-window.ui:135 msgid "Manually Installed" msgstr "" #: subprojects/extensions-app/data/ui/extensions-window.ui:159 msgid "Built-In" msgstr "" #: subprojects/extensions-app/data/ui/extensions-window.ui:200 msgid "No Installed Extensions" msgstr "" #: subprojects/extensions-app/data/ui/extensions-window.ui:236 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" #: subprojects/extensions-app/data/ui/extensions-window.ui:289 msgid "Log Out…" msgstr "Рахизӕн..." #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:202 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "" #: subprojects/extensions-tool/src/command-create.c:275 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" #: subprojects/extensions-tool/src/command-create.c:281 #: subprojects/extensions-tool/src/main.c:238 msgid "Name" msgstr "Ном" #: subprojects/extensions-tool/src/command-create.c:295 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" #: subprojects/extensions-tool/src/command-create.c:315 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" #: subprojects/extensions-tool/src/command-create.c:342 msgid "Choose one of the available templates:\n" msgstr "" #: subprojects/extensions-tool/src/command-create.c:356 msgid "Template" msgstr "Хуызӕг" #: subprojects/extensions-tool/src/command-create.c:411 msgid "The unique identifier of the new extension" msgstr "" #: subprojects/extensions-tool/src/command-create.c:414 msgid "NAME" msgstr "НОМ" #: subprojects/extensions-tool/src/command-create.c:415 msgid "The user-visible name of the new extension" msgstr "" #: subprojects/extensions-tool/src/command-create.c:417 msgid "DESCRIPTION" msgstr "" #: subprojects/extensions-tool/src/command-create.c:419 msgid "A short description of what the extension does" msgstr "" #: subprojects/extensions-tool/src/command-create.c:422 msgid "TEMPLATE" msgstr "" #: subprojects/extensions-tool/src/command-create.c:423 msgid "The template to use for the new extension" msgstr "" #: subprojects/extensions-tool/src/command-create.c:429 msgid "Enter extension information interactively" msgstr "" #: subprojects/extensions-tool/src/command-create.c:437 msgid "Create a new extension" msgstr "" #: subprojects/extensions-tool/src/command-create.c:455 #: subprojects/extensions-tool/src/command-list.c:172 msgid "Unknown arguments" msgstr "" #: subprojects/extensions-tool/src/command-create.c:480 msgid "UUID, name and description are required" msgstr "" #: subprojects/extensions-tool/src/command-disable.c:46 #: subprojects/extensions-tool/src/command-enable.c:46 #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:64 msgid "Failed to connect to GNOME Shell\n" msgstr "" #: subprojects/extensions-tool/src/command-disable.c:53 #: subprojects/extensions-tool/src/command-enable.c:53 #, c-format msgid "Extension “%s” does not exist\n" msgstr "" #: subprojects/extensions-tool/src/command-disable.c:101 msgid "Disable an extension" msgstr "" #: subprojects/extensions-tool/src/command-disable.c:119 #: subprojects/extensions-tool/src/command-enable.c:119 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:97 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "UUID лӕвӕрд не рцыд" #: subprojects/extensions-tool/src/command-disable.c:124 #: subprojects/extensions-tool/src/command-enable.c:124 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:102 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "" #: subprojects/extensions-tool/src/command-enable.c:101 msgid "Enable an extension" msgstr "" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:155 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "" #: subprojects/extensions-tool/src/command-install.c:173 msgid "Overwrite an existing extension" msgstr "" #: subprojects/extensions-tool/src/command-install.c:175 msgid "EXTENSION_BUNDLE" msgstr "" #: subprojects/extensions-tool/src/command-install.c:184 msgid "Install an extension bundle" msgstr "" #: subprojects/extensions-tool/src/command-install.c:202 msgid "No extension bundle specified" msgstr "" #: subprojects/extensions-tool/src/command-install.c:208 msgid "More than one extension bundle specified" msgstr "" #: subprojects/extensions-tool/src/command-list.c:128 msgid "Show user-installed extensions" msgstr "" #: subprojects/extensions-tool/src/command-list.c:131 msgid "Show system-installed extensions" msgstr "" #: subprojects/extensions-tool/src/command-list.c:134 msgid "Show enabled extensions" msgstr "" #: subprojects/extensions-tool/src/command-list.c:137 msgid "Show disabled extensions" msgstr "" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show extensions with preferences" msgstr "" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show extensions with updates" msgstr "" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Print extension details" msgstr "" #: subprojects/extensions-tool/src/command-list.c:154 msgid "List installed extensions" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:450 msgid "FILE" msgstr "ФАЙЛ" #: subprojects/extensions-tool/src/command-pack.c:451 msgid "Additional source to include in the bundle" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:454 msgid "SCHEMA" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:455 msgid "A GSettings schema that should be included" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:457 #: subprojects/extensions-tool/src/command-pack.c:468 msgid "DIRECTORY" msgstr "ДИРЕКТОРИ" #: subprojects/extensions-tool/src/command-pack.c:459 msgid "The directory where translations are found" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:461 msgid "DOMAIN" msgstr "ДОМЕН" #: subprojects/extensions-tool/src/command-pack.c:463 msgid "The gettext domain to use for translations" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "Overwrite an existing pack" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:470 msgid "The directory where the pack should be created" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:472 msgid "SOURCE_DIRECTORY" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:481 msgid "Create an extension bundle" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:501 msgid "More than one source directory specified" msgstr "" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "" #: subprojects/extensions-tool/src/command-prefs.c:79 msgid "Opens extension preferences" msgstr "" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "" #: subprojects/extensions-tool/src/main.c:72 msgid "Do not print error messages" msgstr "" #: subprojects/extensions-tool/src/main.c:146 msgid "Failed to connect to GNOME Shell" msgstr "" #: subprojects/extensions-tool/src/main.c:244 msgid "Path" msgstr "Фӕт" #: subprojects/extensions-tool/src/main.c:247 msgid "URL" msgstr "URL" #: subprojects/extensions-tool/src/main.c:250 msgid "Original author" msgstr "Фыццаг автор" #: subprojects/extensions-tool/src/main.c:256 msgid "State" msgstr "Уаг" #: subprojects/extensions-tool/src/main.c:290 msgid "“version” takes no arguments" msgstr "" #: subprojects/extensions-tool/src/main.c:292 #: subprojects/extensions-tool/src/main.c:312 msgid "Usage:" msgstr "Пайда кӕнын:" #: subprojects/extensions-tool/src/main.c:295 msgid "Print version information and exit." msgstr "" #: subprojects/extensions-tool/src/main.c:310 #: subprojects/extensions-tool/src/main.c:313 msgid "COMMAND" msgstr "КОМАНДӔ" #: subprojects/extensions-tool/src/main.c:313 msgid "[ARGS…]" msgstr "[АРГУМЕНТТӔ…]" #: subprojects/extensions-tool/src/main.c:315 msgid "Commands:" msgstr "Командӕтӕ:" #: subprojects/extensions-tool/src/main.c:316 msgid "Print help" msgstr "Ӕххуыс равдисын" #: subprojects/extensions-tool/src/main.c:318 msgid "Enable extension" msgstr "" #: subprojects/extensions-tool/src/main.c:319 msgid "Disable extension" msgstr "" #: subprojects/extensions-tool/src/main.c:320 msgid "Reset extension" msgstr "" #: subprojects/extensions-tool/src/main.c:321 msgid "Uninstall extension" msgstr "" #: subprojects/extensions-tool/src/main.c:322 msgid "List extensions" msgstr "" #: subprojects/extensions-tool/src/main.c:323 #: subprojects/extensions-tool/src/main.c:324 msgid "Show extension info" msgstr "Уӕлӕмхасӕны тыххӕй" #: subprojects/extensions-tool/src/main.c:325 msgid "Open extension preferences" msgstr "" #: subprojects/extensions-tool/src/main.c:326 msgid "Create extension" msgstr "" #: subprojects/extensions-tool/src/main.c:327 msgid "Package extension" msgstr "" #: subprojects/extensions-tool/src/main.c:328 msgid "Install extension bundle" msgstr "" #: subprojects/extensions-tool/src/main.c:330 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "Спайда кӕн “%s”-ӕй цӕмӕй лӕмбынӕг ӕххуыс райсай.\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "Хуымӕтӕг" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "Афтид уӕлӕмхасӕн" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "Индикатор" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1899 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u рафӕрсӕн" msgstr[1] "%u рафӕрсӕны" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1909 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u бафыссӕн" msgstr[1] "%u бафыссӕны" #: subprojects/gvc/gvc-mixer-control.c:2766 msgid "System Sounds" msgstr "Системӕйы унӕртӕ" 07070100000258000081A40000000000000000000000016712993F0002D40D000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/pa.po# Punjabi translation for gnome-shell. # Copyright (C) 2009 gnome-shell's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-shell package. # SPDX-FileCopyrightText: 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024 A S Alam msgid "" msgstr "" "Project-Id-Version: gnome-shell master\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues/\n" "POT-Creation-Date: 2024-03-16 16:54+0000\n" "PO-Revision-Date: 2024-03-17 23:01-0500\n" "Last-Translator: A S Alam \n" "Language-Team: Punjabi \n" "Language: pa\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: Lokalize 23.08.5\n" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "ਲਾਂਚਰ" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate pinned app 1" msgstr "ਟੰਗੀ ਐਪ 1 ਨੂੰ ਸਰਗਰਮ ਕਰੋ" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate pinned app 2" msgstr "ਟੰਗੀ ਐਪ 2 ਨੂੰ ਸਰਗਰਮ ਕਰੋ" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate pinned app 3" msgstr "ਟੰਗੀ ਐਪ 3 ਨੂੰ ਸਰਗਰਮ ਕਰੋ" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate pinned app 4" msgstr "ਟੰਗੀ ਐਪ 4 ਨੂੰ ਸਰਗਰਮ ਕਰੋ" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate pinned app 5" msgstr "ਟੰਗੀ ਐਪ 5 ਨੂੰ ਸਰਗਰਮ ਕਰੋ" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate pinned app 6" msgstr "ਟੰਗੀ ਐਪ 6 ਨੂੰ ਸਰਗਰਮ ਕਰੋ" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate pinned app 7" msgstr "ਟੰਗੀ ਐਪ 7 ਨੂੰ ਸਰਗਰਮ ਕਰੋ" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate pinned app 8" msgstr "ਟੰਗੀ ਐਪ 8 ਨੂੰ ਸਰਗਰਮ ਕਰੋ" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate pinned app 9" msgstr "ਟੰਗੀ ਐਪ 9 ਨੂੰ ਸਰਗਰਮ ਕਰੋ" #: data/50-gnome-shell-launchers.xml:46 msgid "Open new window of pinned app 1" msgstr "ਟੰਗੀ ਐਪ 1 ਦੀ ਨਵੀਂ ਵਿੰਡੋ ਖੋਲ੍ਹੋ" #: data/50-gnome-shell-launchers.xml:50 msgid "Open new window of pinned app 2" msgstr "ਟੰਗੀ ਐਪ 2 ਦੀ ਨਵੀਂ ਵਿੰਡੋ ਖੋਲ੍ਹੋ" #: data/50-gnome-shell-launchers.xml:54 msgid "Open new window of pinned app 3" msgstr "ਟੰਗੀ ਐਪ 3 ਦੀ ਨਵੀਂ ਵਿੰਡੋ ਖੋਲ੍ਹੋ" #: data/50-gnome-shell-launchers.xml:58 msgid "Open new window of pinned app 4" msgstr "ਟੰਗੀ ਐਪ 4 ਦੀ ਨਵੀਂ ਵਿੰਡੋ ਖੋਲ੍ਹੋ" #: data/50-gnome-shell-launchers.xml:62 msgid "Open new window of pinned app 5" msgstr "ਟੰਗੀ ਐਪ 5 ਦੀ ਨਵੀਂ ਵਿੰਡੋ ਖੋਲ੍ਹੋ" #: data/50-gnome-shell-launchers.xml:66 msgid "Open new window of pinned app 6" msgstr "ਟੰਗੀ ਐਪ 6 ਦੀ ਨਵੀਂ ਵਿੰਡੋ ਖੋਲ੍ਹੋ" #: data/50-gnome-shell-launchers.xml:70 msgid "Open new window of pinned app 7" msgstr "ਟੰਗੀ ਐਪ 7 ਦੀ ਨਵੀਂ ਵਿੰਡੋ ਖੋਲ੍ਹੋ" #: data/50-gnome-shell-launchers.xml:74 msgid "Open new window of pinned app 8" msgstr "ਟੰਗੀ ਐਪ 8 ਦੀ ਨਵੀਂ ਵਿੰਡੋ ਖੋਲ੍ਹੋ" #: data/50-gnome-shell-launchers.xml:78 msgid "Open new window of pinned app 9" msgstr "ਟੰਗੀ ਐਪ 9 ਦੀ ਨਵੀਂ ਵਿੰਡੋ ਖੋਲ੍ਹੋ" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2276 msgid "Screenshots" msgstr "ਸਕਰੀਨਸ਼ਾਟ" #: data/50-gnome-shell-screenshots.xml:9 #: data/org.gnome.shell.gschema.xml.in:287 msgid "Take a screenshot interactively" msgstr "ਤਾਲਮੇਲ ਰਾਹੀਂ ਸਕਰੀਨਸ਼ਾਟ ਲਵੋ" #: data/50-gnome-shell-screenshots.xml:12 #: data/org.gnome.shell.gschema.xml.in:299 msgid "Take a screenshot" msgstr "ਸਕਰੀਨਸ਼ਾਟ ਲਵੋ" #: data/50-gnome-shell-screenshots.xml:15 #: data/org.gnome.shell.gschema.xml.in:295 msgid "Take a screenshot of a window" msgstr "ਵਿੰਡੋ ਦਾ ਸਕਰੀਨਸ਼ਾਟ ਲਵੋ" #: data/50-gnome-shell-screenshots.xml:18 #: data/org.gnome.shell.gschema.xml.in:291 msgid "Record a screencast interactively" msgstr "ਤਾਲਮੇਲ ਰਾਹੀਂ ਸਕਰੀਨਕਾਸਟ ਰਿਕਾਰਡ ਕਰੋ" #: data/50-gnome-shell-system.xml:6 js/ui/messageTray.js:1293 msgid "System" msgstr "ਸਿਸਟਮ" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "ਨੋਟੀਫਿਕੇਸ਼ਨ ਸੂਚੀ ਵੇਖਾਓ" #: data/50-gnome-shell-system.xml:12 msgid "Open the quick settings menu" msgstr "ਫ਼ੌਰੀ ਸੈਟਿੰਗਾਂ ਮੇਨੂ ਖੋਲ੍ਹੋ" #: data/50-gnome-shell-system.xml:15 msgid "Focus the active notification" msgstr "ਸਰਗਰਮ ਸੂਚਨਾ ਉੱਤੇ ਫੋਕਸ" #: data/50-gnome-shell-system.xml:18 msgid "Show the overview" msgstr "ਸੰਖੇਪ ਵੇਖਾਓ" #: data/50-gnome-shell-system.xml:21 msgid "Show all apps" msgstr "ਸਭ ਐਪਾਂ ਵੇਖੋ" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "ਗਨੋਮ ਸ਼ੈਲ" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "ਵਿੰਡੋ ਇੰਤਜ਼ਾਮ ਅਤੇ ਐਪਲੀਕੇਸ਼ਨ ਚਲਾਉਣਾ" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "Alt-F2 ਤੋਂ ਡਿਵੈਲਪਰਾਂ ਤੇ ਟੈਸਟਰਾਂ ਲਈ ਫਾਇਦੇਮੰਦ ਅੰਦਰੂਨੀ ਟੂਲ ਚਾਲੂ ਕਰਦਾ ਹੈ" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Alt-F2 ਡਾਈਲਾਗ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅੰਦਰੂਨੀ ਡੀਬੱਗਿਗ ਤੇ ਮਾਨੀਟਰਿੰਗ ਟੂਲ ਵਰਤੋਂ ਕਰਨ ਲਈ" " ਸਹਾਇਕ ਹੈ" #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "ਚਾਲੂ ਕਰਨ ਲਈ ਇਕਟੈਨਸ਼ਨ ਦੀ UUID" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "ਗਨੋਮ ਸ਼ੈਲ ਇਕਸਟੈਨਸ਼ਨ ਲਈ ਇੱਕ UUID ਵਿਸ਼ੇਸ਼ਤਾ ਹੈ; ਇਹ ਕੁੰਜੀ ਇਕਸਟੈਨਸ਼ਨ ਦਰਸਾਉਂਦੀ ਹੈ," " ਜੋ ਲੋਡ ਹੋਣੀ " "ਚਾਹੀਦੀ ਹੈ। ਕੋਈ ਵੀ ਇਕਸਟੈਸ਼ਨ, ਜੋ ਲੋਡ ਹੋਣਾ ਚਾਹੁੰਦੀ ਹੈ, ਨੂੰ ਇਹ ਸੂਚੀ ਵਿੱਚ ਹੋਣਾ" " ਚਾਹੀਦਾ ਹੈ। ਤੁਸੀਂ ਵੀ " "ਇਹ ਸੂਚੀ ਨੂੰ org.gnome.shell ਉੱਤੇ EnableExtension ਅਤੇ DisableExtension D-Bus" " ਢੰਗ ਨਾਲ " "ਬਦਲ ਸਕਦੇ ਹੋ।" #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "ਧੱਕੇ ਨਾਲ ਅਸਮਰੱਥ ਕਰਨ ਲਈ ਇਕਟੈਨਸ਼ਨਾਂ ਦੀ UUID" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" "ਗਨੋਮ ਸ਼ੈਲ ਇਕਸਟੈਨਸ਼ਨ ਲਈ ਇੱਕ UUID ਵਿਸ਼ੇਸ਼ਤਾ ਹੈ; ਇਹ ਕੁੰਜੀ ਇਕਸਟੈਨਸ਼ਨ ਦਰਸਾਉਂਦੀ ਹੈ," " ਜੋ ਸਮਰੱਥ ਹੋਣੀ " "ਚਾਹੀਦੀ ਹੈ, ਭਾਵੇੇਂ ਕਿ ਉਹ ਮੌਜੂਦਾ ਮੋਡ ਦੇ ਹਿੱਸੇ ਵਜੋਂ ਲੋਡ ਹੁੰਦੀ ਹੈ। ਤੁਸੀਂ ਇਹ ਸੂਚੀ" " ਨੂੰ org.gnome.shell " "ਉੱਤੇ EnableExtension ਅਤੇ DisableExtension D-Bus ਢੰਗ ਨਾਲ ਬਦਲ ਸਕਦੇ ਹੋ। ਇਹ ਕੁੰਜੀ" " ਦੀ " "“enabled-extensions” ਤੋਂ ਵੱਧ ਤਰਜੀਹ ਹੁੰਦੀ ਹੈ।" #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "ਵਰਤੋਂਕਾਰ ਇਕਸਟੈਨਸ਼ਨਾਂ ਨੂੰ ਅਸਮਰੱਥ ਕਰੋ" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" "“enabled-extension” ਸੈਟਿੰਗ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕੀਤੇ ਬਿਨਾਂ ਵਰਤੋਂਕਾਰ ਵਲੋਂ ਸਮਰੱਥ ਕੀਤੀਆਂ" " ਸਾਰੀਆਂ " "ਇਕਸਟੈਨਸ਼ਨਾਂ ਨੂੰ ਅਸਮਰੱਥ ਕਰੋ।" #: data/org.gnome.shell.gschema.xml.in:45 #| msgid "No extensions installed" msgid "Allow extension installation" msgstr "ਇਕਸਟੈਨਸ਼ਨ ਇੰਸਟਾਲ ਕਰਨ ਦੀ ਮਨਜ਼ੂਰੀ" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "Allow users to install extensions in their home folder. If disabled, the " "InstallRemoteExtension D-Bus method will fail, and extensions are only " "loaded from system directories on startup. It does not affect extensions " "that are already loaded, so a change only takes full effect on the next " "login." msgstr "" "ਵਰਤੋਂਕਾਰਾਂ ਨੂੰ ਉਹਨਾਂ ਦੇ ਹੋਮ ਫੋਲਡਰ ਵਿੱਚ ਇਕਸਟੈਸ਼ਨਾਂ ਇੰਸਟਾਲ ਕਰਨ ਦੀ ਮਨਜ਼ੂਰੀ ਦਿਓ। ਜੇ" " ਅਸਮਰੱਥ ਹੈ ਤਾਂ InstallRemoteExtension ਡੀ-ਬੱਸ ਢੰਗ ਫੇਲ੍ਹ ਹੋਵੇਗਾ ਅਤੇ ਇਕਸਟੈਸ਼ਨਾਂ" " ਨੂੰ ਸ਼ੁਰੂ ਵੇਲੇ ਸਿਸਟਮ ਡਾਇਰੈਕਟਰੀਆਂ ਤੋਂ ਹੀ ਲੋਡ ਕੀਤਾ ਜਾਵੇਗਾ। ਇਹ ਪਹਿਲਾਂ ਹੀ ਲੋਡ" " ਹੋਈਆਂ ਇਕਸਟੈਸ਼ਨਾਂ ਨੰ ਪ੍ਰਭਾਵਿਤ ਨਹੀਂ ਕਰਦਾ ਹੈ, ਇਸਕਰਕੇ ਤਬਦੀਲੀ ਸਿਰਫ਼ ਅਗਲੇ ਵਾਰ ਲਾਗਇਨ" " ਤੋਂ ਬਾਅਦ ਹੀ ਅਸਰਦਾਰ ਹੋਵੇਗਾ।" #: data/org.gnome.shell.gschema.xml.in:56 msgid "Disables the validation of extension version compatibility" msgstr "ਇਕਸਟੈਨਸ਼ਨ ਵਰਜ਼ਨ ਅਨੁਕੂਲਤਾ ਦੀ ਵੈਧਤਾ ਨੂੰ ਬੰਦ ਕਰੋ" #: data/org.gnome.shell.gschema.xml.in:57 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "ਗਨੋਮ ਸ਼ੈਲ ਕੇਵਲ ਉਹਨਾਂ ਹੀ ਇਕਸਟੈਨਸ਼ਨਾਂ ਨੂੰ ਲੋਡ ਕਰਦੀ ਹੈ, ਜੋ ਕਿ ਮੌਜੂਦਾ ਚਾਲੂ ਵਰਜ਼ਨ ਨਾਲ" " ਸਹਾਇਤਾ ਦਾ " "ਦਾਅਵਾ ਕਰਦੀਆਂ ਹਨ। ਇਹ ਚੋਣ ਕਰਨ ਨਾਲ ਇਹ ਜਾਂਚ ਬੰਦ ਹੋ ਜਾਵੇਗੀ ਅਤੇ ਸਭ ਇਕਸਟੈਨਸ਼ਨਾਂ ਨੂੰ" " ਲੋਡ ਕਰਨ ਦੀ " "ਕੋਸ਼ਿਸ਼ ਕਰੇਗਾ, ਭਾਵੇਂ ਕਿ ਉਹ ਵਰਜ਼ਨ ਲਈ ਸਹਾਇਤਾ ਬਾਰੇ ਕੁਝ ਵੀ ਦਾਆਵਾ ਕਰਨ।" #: data/org.gnome.shell.gschema.xml.in:65 msgid "List of desktop file IDs for favorite applications" msgstr "ਪਸੰਦੀਦਾ ਐਪਲੀਕੇਸ਼ਨ ਲਈ ਡੈਸਕਟਾਪ ਫਾਇਲ ID ਦੀ ਲਿਸਟ ਹੈ" #: data/org.gnome.shell.gschema.xml.in:66 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" "ਇਹਨਾਂ ਐਂਡਟਟੀਫਾਇਰ ਨਾਲ ਸਬੰਧਿਤ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਪਸੰਦੀਦਾ ਖੇਤਰ 'ਚ ਵੇਖਾਇਆ ਜਾਵੇਗਾ।" #: data/org.gnome.shell.gschema.xml.in:73 msgid "History for command (Alt-F2) dialog" msgstr "ਕਮਾਂਡ (Alt-F2) ਡਾਈਲਾਗ ਲਈ ਅਤੀਤ" #. Translators: looking glass is a debugger and inspector tool, see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/docs/looking-glass.md #: data/org.gnome.shell.gschema.xml.in:78 msgid "History for the looking glass dialog" msgstr "ਗਲਾਸ ਡਾਈਲਾਗ ਖੋਜ ਲਈ ਅਤੀਤ" #: data/org.gnome.shell.gschema.xml.in:82 msgid "Always show the “Log Out” action in the system menu" msgstr "ਸਿਸਟਮ ਮੇਨੂ ਵਿੱਚ “ਲਾਗ ਆਉਟ “ ਕਾਰਵਾਈ ਨੂੰ ਹਮੇਸ਼ਾਂ ਵੇਖਾਓ" #: data/org.gnome.shell.gschema.xml.in:83 msgid "" "This key overrides the automatic hiding of the “Log out” action in the " "system menu for logged-in situations where there is a single, local, non-" "system user and only a single available session type (e.g. GNOME on Wayland)." msgstr "" "ਇਹ ਕੁੰਜੀ ਇੱਕਲੇ ਵਰਤੋਂਕਾਰ, ਲੋਕਲ, ਗ਼ੈਰ-ਸਿਸਟਮ ਵਰਤੋਂਕਾਰ ਅਤੇ ਸਿੰਗਲ-ਸ਼ੈਸ਼ਨ ਕਿਸਮ (ਜਿਵੇਂ" " ਕਿ ਵੇਅਲੈਂਡ ਉੱਤੇ " "ਗਨੋਮ) ਹੋਣ ਉੱਤੇ ਲਾਗ ਆਇਨ ਕਰਨ ਦੇ ਮੌਕੇ ਉੱਤੇ ਸਿਸਟਮ ਮੇਨੂ ਵਿੱਚ “ਲਾਗ ਆਉਟ“ ਕਾਰਵਾਈ ਨੂੰ" " ਆਪਣੇ-ਆਪ ਓਹਲੇ " "ਕਰਨ ਨੂੰ ਅਣਡਿੱਠਾ ਕਰਦੀ ਹੈ।" #: data/org.gnome.shell.gschema.xml.in:92 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "ਕੀ ਇੰਕ੍ਰਿਪਟ ਜਾਂ ਰਿਮੋਟ ਫਾਇਲ-ਸਿਸਟਮਾਂ ਲਈ ਪਾਸਵਰਡ ਯਾਦ ਰੱਖਣਾ ਹੈ" #: data/org.gnome.shell.gschema.xml.in:93 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "ਸੈੱਲ ਨੂੰ ਇਹ ਪਾਸਵਰਡ ਚਾਹੀਦਾ ਹੋਵੇਗਾ, ਜਦੋਂ ਇੰਕ੍ਰਿਪਟ ਕੀਤਾ ਡਿਵਾਈਸ ਜਾਂ ਰਿਮੋਟ ਫਾਇਲ" " ਸਿਸਟਮ ਮਾਊਂਟ " "ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਜੇ ਇਹ ਪਾਸਵਰਡ ਭਵਿੱਖ ਵਿੱਚ ਵਰਤਣ ਸੰਭਾਲਿਆ ਜਾ ਸਕਦਾ ਹੋਇਆ ਤਾਂ “ਪਾਸਵਰਡ" " ਯਾਦ ਰੱਖੋ“ " "ਬਾਕਸ ਦਿੱਤਾ ਜਾਵੇਗਾ। ਇਹ ਕੁੰਜੀ ਚੋਣ-ਬਾਕਸ ਦੀ ਸਥਿਤੀ ਨੂੰ ਡਿਫਾਲਟ ਲਈ ਸੈੱਟ ਕਰਦੀ ਹੈ।" #: data/org.gnome.shell.gschema.xml.in:102 msgid "The last selected non-default power profile" msgstr "ਆਖਰੀ ਵਾਰ ਚੁਣਿਆ ਗ਼ੈਰ-ਮੂਲ ਪਾਵਰ ਪਰੋਫਾਇਲ" #: data/org.gnome.shell.gschema.xml.in:103 msgid "" "Some systems support more than two power profiles. In order to still support " "toggling between two profiles, this key records the last selected non-" "default profile." msgstr "" "ਕਈ ਸਿਸਟਮ ਦੋ ਤੋਂ ਵੱਧ ਪਾਵਰ ਪਰੋਫਾਇਲਾਂ ਲਈ ਸਹਾਇਕ ਹੁੰਦੇ ਹਨ। ਦੋ ਪਰੋਫਾਇਲਾਂ ਵਿਚਾਲੇ" " ਬਦਲਣ ਲਈ ਸਹਾਇਕ " "ਹੋਣ ਵਾਸਤੇ ਇਹ ਕੁੰਜੀ ਆਖਰੀ ਵਾਰ ਚੁਣੇ ਗ਼ੈਰ-ਮੂਲ ਪਰੋਫਾਇਲਾਂ ਦਾ ਰਿਕਾਰਡ ਰੱਖਦੀ ਹੈ।" #: data/org.gnome.shell.gschema.xml.in:111 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "ਇਸ ਲਈ ”ਗਨੋਮ ਵਲੋਂ ਜੀ ਆਇਆਂ ਨੂੰ” ਡਾਈਲਾਗ ਦਾ ਆਖਰੀ ਵਰਜ਼ਨ ਦਿਖਾਇਆ ਗਿਆ ਸੀ" #: data/org.gnome.shell.gschema.xml.in:112 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can " "be used to effectively disable the dialog." msgstr "" "ਇਹ ਕੁੰਜੀ ਪਤਾ ਲਗਾਉਂਦੀ ਹੈ ਕਿ ”ਗਨੋਮ ਵਲੋਂ ਜੀ ਆਇਆਂ ਨੂੰ” ਡਾਈਲਾਗ ਦਾ ਕਿਹੜਾ ਵਰਜ਼ਨ ਪਿਛਲੀ" " ਵਾਰ " "ਦਿਖਾਇਆ ਸੀ। ਖਾਲੀ ਸਤਰ ਪੁਰਾਣਾ ਵਰਜ਼ਨ ਦਿਖਾਉਂਦੀ ਹੈ ਅਤੇ ਬਹੁਤ ਸਾਰੇ ਨੰਬਰ ਉਹ ਵਰਜ਼ਨ" " ਦਿਖਾਉਗੇ, ਜੋ ਕਿ " "ਹਾਲੇ ਮੌਜੂਦ ਨਹੀਂ ਹਨ। ਇਹ ਵੱਡੀ ਗਿਣਤੀ ਨੂੰ ਡਾਈਲਾਗ ਅਸਮਰੱਥ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ।" #: data/org.gnome.shell.gschema.xml.in:145 msgid "Layout of the app picker" msgstr "ਐਪ ਚੋਣਕਾਰ ਦਾ ਖਾਕਾ" #: data/org.gnome.shell.gschema.xml.in:146 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" msgstr "" "ਐਪ ਚੋਣਕਾਰ ਦਾ ਖਾਕਾ। ਲੜੀ ਵਿੱਚ ਹਰ ਇੰਦਰਾਜ਼ ਇੱਕ ਸਫ਼ਾ ਹੈ। ਸਫ਼ਿਆਂ ਨੂੰ ਉਸ ਲੜੀ ਮੁਤਾਬਕ" " ਸੰਭਾਲਿਆ ਜਾਂਦਾ " "ਹੈ, ਜਿਵੇਂ ਉਹ ਗਨੋਮ ਸ਼ੈੱਲ ਵਿੱਚ ਦਿਖਾਈ ਦਿੰਦੇ ਹਨ। ਹਰ ਸਫ਼ੇ ਵਿੱਚ ਇੱਕ “application id”" " → 'data' " "ਜੋੜਾ ਹੈ। ਇਸ ਵੇਲੇ ਮੁੱਲਾਂ ਨੂੰ ਸਫ਼ੇ ਵਿੱਚ ਐਪਲੀਕੇਸ਼ਨ ਦੀ 'data': • “position”: ਵਜੋਂ" " ਸੰਭਾਲਿਆ ਜਾਂਦਾ ਹੈ।" #: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:172 msgid "Keybinding to shift between overview states" msgstr "ਸੰਖੇਪ ਸਥਿਤੀਆਂ ਵਿੱਚ ਤਬਦੀਲ ਕਰਨ ਲਈ ਕੀਬਾਈਡਿੰਗ" #: data/org.gnome.shell.gschema.xml.in:166 msgid "Keybinding to shift between session, window picker and app grid" msgstr "ਸ਼ੈਸ਼ਨ, ਵਿੰਡੋ ਚੋਣਕਾਰ ਅਤੇ ਐਪ ਗਰਿੱਡ ਵਿੱਚ ਤਬਦੀਲ ਕਰਨ ਲਈ ਕੀਬਾਈਡਿੰਗ" #: data/org.gnome.shell.gschema.xml.in:173 msgid "Keybinding to shift between app grid, window picker and session" msgstr "ਐਪ ਗਰਿੱਡ, ਵਿੰਡੋ ਚੋਣਕਾਰ ਅਤੇ ਸ਼ੈਸ਼ਨ ਵਿੱਚ ਤਬਦੀਲ ਕਰਨ ਲਈ ਕੀਬਾਈਡਿੰਗ" #: data/org.gnome.shell.gschema.xml.in:179 msgid "Keybinding to open the “Show Applications” view" msgstr "“ਐਪਲੀਕੇਸ਼ਨ ਵੇਖੋ“ ਮੇਨੂ ਖੋਲ੍ਹਣ ਲਈ ਕੀਬਾਈਡਿੰਗ ਹੈ" #: data/org.gnome.shell.gschema.xml.in:180 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "ਸਰਗਰਮੀ ਝਲਕ ਵਿੱਚ “ਐਪਲੀਕੇਸ਼ਨ ਵੇਖੋ“ ਮੇਨੂ ਖੋਲ੍ਹਣ ਲਈ ਕੀਬਾਈਡਿੰਗ ਹੈ।" #: data/org.gnome.shell.gschema.xml.in:187 msgid "Keybinding to open the overview" msgstr "ਸੰਖੇਪ ਖੋਲ੍ਹਣ ਲਈ ਕੀਬਾਈਡਿੰਗ" #: data/org.gnome.shell.gschema.xml.in:188 msgid "Keybinding to open the Activities Overview." msgstr "ਸਰਗਰਮੀ ਸੰਖੇਪ ਖੋਲ੍ਹਣ ਲਈ ਕੀਬਾਈਡਿੰਗ" #: data/org.gnome.shell.gschema.xml.in:194 msgid "Keybinding to toggle the visibility of the notification list" msgstr "ਨੋਟੀਫਿਕੇਸ਼ਨ ਸੂਚੀ ਦੀ ਦਿੱਖਣ ਨੂੰ ਬਦਲਣ ਲਈ ਕੀਬਾਈਡਿੰਗ" #: data/org.gnome.shell.gschema.xml.in:195 msgid "Keybinding to toggle the visibility of the notification list." msgstr "ਨੋਟੀਫਿਕੇਸ਼ਨ ਸੂਚੀ ਦੀ ਦਿੱਖਣ ਨੂੰ ਬਦਲਣ ਲਈ ਕੀਬਾਈਡਿੰਗ ਹੈ।" #: data/org.gnome.shell.gschema.xml.in:201 msgid "Keybinding to toggle the quick settings menu" msgstr "ਫ਼ੌਰੀ ਸੈਟਿੰਗਾਂ ਮੇਨੂ ਖੋਲ੍ਹਣ ਲਈ ਕੀਬਾਈਡਿੰਗ ਹੈ" #: data/org.gnome.shell.gschema.xml.in:202 msgid "Keybinding to toggle the quick settings menu." msgstr "ਫ਼ੌਰੀ ਸੈਟਿੰਗਾਂ ਮੇਨੂ ਖੋਲ੍ਹਣ ਲਈ ਕੀਬਾਈਡਿੰਗ ਹੈ।" #: data/org.gnome.shell.gschema.xml.in:208 msgid "Keybinding to focus the active notification" msgstr "ਸਰਗਰਮ ਸੂਚਨਾ ਉੱਤੇ ਫੋਕਸ ਲਈ ਕੀਬਾਈਡਿੰਗ ਹੈ" #: data/org.gnome.shell.gschema.xml.in:209 msgid "Keybinding to focus the active notification." msgstr "ਸਰਗਰਮ ਸੂਚਨਾ ਉੱਤੇ ਫੋਕਸ ਲਈ ਕੀਬਾਈਡਿੰਗ ਹੈ।" #: data/org.gnome.shell.gschema.xml.in:215 msgid "Switch to application 1" msgstr "ਐਪਲੀਕੇਸ਼ਨ 1 ਲਈ ਬਦਲੋ" #: data/org.gnome.shell.gschema.xml.in:219 msgid "Switch to application 2" msgstr "ਐਪਲੀਕੇਸ਼ਨ 2 ਲਈ ਬਦਲੋ" #: data/org.gnome.shell.gschema.xml.in:223 msgid "Switch to application 3" msgstr "ਐਪਲੀਕੇਸ਼ਨ 3 ਲਈ ਬਦਲੋ" #: data/org.gnome.shell.gschema.xml.in:227 msgid "Switch to application 4" msgstr "ਐਪਲੀਕੇਸ਼ਨ 4 ਲਈ ਬਦਲੋ" #: data/org.gnome.shell.gschema.xml.in:231 msgid "Switch to application 5" msgstr "ਐਪਲੀਕੇਸ਼ਨ 5 ਲਈ ਬਦਲੋ" #: data/org.gnome.shell.gschema.xml.in:235 msgid "Switch to application 6" msgstr "ਐਪਲੀਕੇਸ਼ਨ 6 ਲਈ ਬਦਲੋ" #: data/org.gnome.shell.gschema.xml.in:239 msgid "Switch to application 7" msgstr "ਐਪਲੀਕੇਸ਼ਨ 7 ਲਈ ਬਦਲੋ" #: data/org.gnome.shell.gschema.xml.in:243 msgid "Switch to application 8" msgstr "ਐਪਲੀਕੇਸ਼ਨ 8 ਲਈ ਬਦਲੋ" #: data/org.gnome.shell.gschema.xml.in:247 msgid "Switch to application 9" msgstr "ਐਪਲੀਕੇਸ਼ਨ 9 ਲਈ ਬਦਲੋ" #: data/org.gnome.shell.gschema.xml.in:251 msgid "Open a new instance of application 1" msgstr "ਐਪਲੀਕੇਸ਼ਨ 1 ਦਾ ਨਵਾਂ ਮੌਕਾ ਖੋਲ੍ਹੋ" #: data/org.gnome.shell.gschema.xml.in:255 msgid "Open a new instance of application 2" msgstr "ਐਪਲੀਕੇਸ਼ਨ 2 ਦਾ ਨਵਾਂ ਮੌਕਾ ਖੋਲ੍ਹੋ" #: data/org.gnome.shell.gschema.xml.in:259 msgid "Open a new instance of application 3" msgstr "ਐਪਲੀਕੇਸ਼ਨ 3 ਦਾ ਨਵਾਂ ਮੌਕਾ ਖੋਲ੍ਹੋ" #: data/org.gnome.shell.gschema.xml.in:263 msgid "Open a new instance of application 4" msgstr "ਐਪਲੀਕੇਸ਼ਨ 4 ਦਾ ਨਵਾਂ ਮੌਕਾ ਖੋਲ੍ਹੋ" #: data/org.gnome.shell.gschema.xml.in:267 msgid "Open a new instance of application 5" msgstr "ਐਪਲੀਕੇਸ਼ਨ 5 ਦਾ ਨਵਾਂ ਮੌਕਾ ਖੋਲ੍ਹੋ" #: data/org.gnome.shell.gschema.xml.in:271 msgid "Open a new instance of application 6" msgstr "ਐਪਲੀਕੇਸ਼ਨ 6 ਦਾ ਨਵਾਂ ਮੌਕਾ ਖੋਲ੍ਹੋ" #: data/org.gnome.shell.gschema.xml.in:275 msgid "Open a new instance of application 7" msgstr "ਐਪਲੀਕੇਸ਼ਨ 7 ਦਾ ਨਵਾਂ ਮੌਕਾ ਖੋਲ੍ਹੋ" #: data/org.gnome.shell.gschema.xml.in:279 msgid "Open a new instance of application 8" msgstr "ਐਪਲੀਕੇਸ਼ਨ 8 ਦਾ ਨਵਾਂ ਮੌਕਾ ਖੋਲ੍ਹੋ" #: data/org.gnome.shell.gschema.xml.in:283 msgid "Open a new instance of application 9" msgstr "ਐਪਲੀਕੇਸ਼ਨ 9 ਦਾ ਨਵਾਂ ਮੌਕਾ ਖੋਲ੍ਹੋ" #: data/org.gnome.shell.gschema.xml.in:308 #: data/org.gnome.shell.gschema.xml.in:335 msgid "Limit switcher to current workspace." msgstr "ਸਵਿੱਚਰ ਨੂੰ ਮੌਜੂਦਾ ਵਰਕਸਪੇਸ ਤੱਕ ਸੀਮਿਤ ਕਰੋ।" #: data/org.gnome.shell.gschema.xml.in:309 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "ਜੇ ਠੀਕ ਹੈ ਤਾਂ ਕੇਵਲ ਐਪਲੀਕੇਸ਼ਨ ਜਿਹਨਾਂ ਲਈ ਵਿੰਡੋ ਮੌਜੂਦਾ ਵਰਕਸਪੇਸ ਵਿੱਚ ਹਨ ਨੂੰ ਹੀ" " ਸਵਿੱਚਰ ਵਿੱਚ ਵਿਖਾਇਆ " "ਜਾਂਦਾ ਹੈ, ਨਹੀਂ ਤਾਂ ਸਭ ਐਪਲੀਕੇਸ਼ਨਾਂ ਸ਼ਾਮਿਲ ਹੁੰਦੀਆਂ ਹਨ।" #: data/org.gnome.shell.gschema.xml.in:326 msgid "The application icon mode." msgstr "ਐਪਲੀਕੇਸ਼ਨ ਆਈਕਾਨ ਮੋਡ।" #: data/org.gnome.shell.gschema.xml.in:327 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-" "only” (shows only the application icon) or “both”." msgstr "" "ਸੰਰਚਨਾ ਕਰੋ ਕਿ ਸਵਿੱਚਰ ਵਿੱਚ ਵਿੰਡੋਜ਼ ਕਿਵੇਂ ਵੇਖਾਈਆਂ ਜਾਣ। ਸੰਭਵ ਚੋਣਾਂ ਹਨ ਕੇਵਲ ਥੰਮਨੇਲ" " (“thumbnail-" "only“) (ਵਿੰਡੋ ਦਾ ਥੰਮਨੇਲ ਵੇਖਾਇਆ ਜਾਵੇਗਾ), ਕੇਵਲ ਐਪਸ ਆਈਕਾਨ (“app-icon-only“)" " (ਕੇਵਲ " "ਐਪਲੀਕੇਸ਼ਨ ਆਈਕਾਨ ਵੇਖਾਇਆ ਜਾਵੇਗਾ) ਜਾਂ ਦੋਵੇਂ (“both“)" #: data/org.gnome.shell.gschema.xml.in:336 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "ਜੇ ਠੀਕ ਹੈ ਤਾਂ ਕੇਵਲ ਮੌਜੂਦਾ ਵਰਕਸਪੇਸ ਤੋਂ ਵਿੰਡੋ ਨੂੰ ਹੀ ਸਵਿੱਚਰ ਵਿੱਚ ਵਿਖਾਇਆ ਜਾਂਦਾ" " ਹੈ, ਨਹੀਂ ਤਾਂ ਸਭ ਵਿੰਡੋ " "ਸ਼ਾਮਿਲ ਹੁੰਦੀਆਂ ਹਨ।" #: data/org.gnome.shell.gschema.xml.in:346 msgid "Locations" msgstr "ਟਿਕਾਣੇ" #: data/org.gnome.shell.gschema.xml.in:347 msgid "The locations to show in world clocks" msgstr "ਸੰਸਾਰ ਘੜੀ ਵਿੱਚ ਵੇਖਾਉਣ ਲਈ ਟਿਕਾਣੇ" #: data/org.gnome.shell.gschema.xml.in:357 msgid "Automatic location" msgstr "ਆਪਣੇ-ਆਪ ਟਿਕਾਣਾ ਲਵੋ" #: data/org.gnome.shell.gschema.xml.in:358 msgid "Whether to fetch the current location or not" msgstr "ਕੀ ਮੌਜੂਦਾ ਟਿਕਾਣਾ ਪ੍ਰਾਪਤ ਕਰਨਾ ਹੈ ਜਾਂ ਨਹੀਂ" #: data/org.gnome.shell.gschema.xml.in:365 msgid "Location" msgstr "ਟਿਕਾਣਾ" #: data/org.gnome.shell.gschema.xml.in:366 msgid "The location for which to show a forecast" msgstr "ਭਵਿੱਖਬਾਣੀ ਵੇਖਾਏ ਜਾਣ ਵਾਲਾ ਟਿਕਾਣਾ" #. Keep in sync with subprojects/extensions-app #: data/org.gnome.Shell.Extensions.desktop.in.in:5 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/data/ui/extensions-window.ui:57 msgid "Extensions" msgstr "ਇਕਸਟੈਨਸ਼ਨ" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "ਨੈੱਟਵਰਕ ਲਾਗਇਨ" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:277 msgid "Something’s gone wrong" msgstr "ਕੁਝ ਗਲਤ ਵਾਪਰਿਆ" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" "ਸਾਨੂੰ ਬਹੁਤ ਅਫ਼ਸੋਸ ਹੈ ਪਰ ਸਮੱਸਿਆ ਆਈ ਹੈ: ਇਸ ਇਕਸਟੈਨਸ਼ਨ ਲਈ ਸੈਟਿੰਗਾਂ ਨੂੰ ਦਿਖਾਇਆ ਨਹੀਂ" " ਜਾ ਸਕਦਾ ਹੈ। " "ਅਸੀਂ ਤੁਹਾਨੂੰ ਇਕਸਟੈਨਸ਼ਨ ਲੇਖਕਾਂ ਨਾਲ ਇਸ ਮਸਲੇ ਬਾਰੇ ਰਿਪੋਰਟ ਦੇਣ ਦੀ ਸਿਫਾਰਸ਼ ਕਰਦੇ ਹਾਂ।" #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "ਤਕਨੀਕੀ ਵੇਰਵੇ" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "ਮੁੱਖ ਸਫ਼ਾ" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 msgid "Visit extension homepage" msgstr "ਇਕਟੈਨਸ਼ਨ ਦੇ ਮੁੱਖ ਸਫ਼ੇ ਨੂੰ ਵੇਖੋ" #: js/gdm/authPrompt.js:151 js/gdm/loginDialog.js:466 #: js/ui/audioDeviceSelection.js:66 js/ui/components/networkAgent.js:114 #: js/ui/components/polkitAgent.js:146 js/ui/endSessionDialog.js:438 #: js/ui/extensionDownloader.js:278 js/ui/shellMountOperation.js:384 #: js/ui/shellMountOperation.js:394 msgid "Cancel" msgstr "ਰੱਦ ਕਰੋ" #: js/gdm/authPrompt.js:317 js/ui/components/networkAgent.js:214 #: js/ui/components/networkAgent.js:234 js/ui/components/networkAgent.js:266 #: js/ui/components/networkAgent.js:299 js/ui/components/networkAgent.js:338 #: js/ui/components/networkAgent.js:351 js/ui/components/polkitAgent.js:288 #: js/ui/shellMountOperation.js:334 msgid "Password" msgstr "ਪਾਸਵਰਡ" #: js/gdm/loginDialog.js:327 msgid "Choose Session" msgstr "ਸ਼ੈਸ਼ਨ ਚੁਣੋ" #. Translators: is running for #: js/gdm/loginDialog.js:424 #, javascript-format msgid "" "Remote login is not possible because a remote session is already running for " "%s. To login remotely, you must log out from the remote session or force " "stop it." msgstr "" "%s ਲਈ ਰਿਮੋਟ ਸ਼ੈਸ਼ਨ ਪਹਿਲਾਂ ਚੱਲਦਾ ਹੋਣ ਕਰਕੇ ਰਿਮੋਟ ਲਾਗਇਨ ਸੰਭਵ ਨਹੀਂ ਹੈ। ਰਿਮੋਟ ਲਾਗਇਨ" " ਕਰਨ ਲਈ ਤੁਹਾਨੂੰ ਪਹਿਲਾਂ ਰਿਮੋਟ ਸ਼ੈਸ਼ਨ ਤੋਂ ਲਾਗ ਆਉਟ ਕਰਨਾ ਹੋਵੇਗਾ ਜਾਂ ਇਸ ਨੂੰ ਧੱਕੇ ਨਾਲ" " ਬੰਦ ਕਰੋ।" #. Translators: is running for #: js/gdm/loginDialog.js:427 #, javascript-format msgid "" "Login is not possible because a remote session is already running for %s. To " "login, you must log out from the remote session or force stop it." msgstr "" "%s ਲਈ ਰਿਮੋਟ ਸ਼ੈਸ਼ਨ ਪਹਿਲਾਂ ਚੱਲਦਾ ਹੋਣ ਕਰਕੇ ਲਾਗਇਨ ਸੰਭਵ ਨਹੀਂ ਹੈ। ਲਾਗਇਨ ਕਰਨ ਲਈ" " ਤੁਹਾਨੂੰ ਪਹਿਲਾਂ ਰਿਮੋਟ ਸ਼ੈਸ਼ਨ ਤੋਂ ਲਾਗ ਆਉਟ ਕਰਨਾ ਹੋਵੇਗਾ ਜਾਂ ਇਸ ਨੂੰ ਧੱਕੇ ਨਾਲ ਬੰਦ" " ਕਰੋ।" #. Translators: is running for #: js/gdm/loginDialog.js:430 #, javascript-format msgid "" "Remote login is not possible because a local session is already running for " "%s. To login remotely, you must log out from the local session or force stop " "it." msgstr "" "%s ਲਈ ਸ਼ੈਸ਼ਨ ਪਹਿਲਾਂ ਚੱਲਦਾ ਹੋਣ ਕਰਕੇ ਰਿਮੋਟ ਲਾਗਇਨ ਸੰਭਵ ਨਹੀਂ ਹੈ। ਰਿਮੋਟ ਤੋਂ ਲਾਗਇਨ" " ਕਰਨ ਲਈ ਤੁਹਾਨੂੰ ਪਹਿਲਾਂ ਲੋਕਲ ਸ਼ੈਸ਼ਨ ਤੋਂ ਲਾਗ ਆਉਟ ਕਰਨਾ ਹੋਵੇਗਾ ਜਾਂ ਇਸ ਨੂੰ ਧੱਕੇ ਨਾਲ" " ਬੰਦ ਕਰੋ।" #. Translators: is running for #: js/gdm/loginDialog.js:433 #, javascript-format msgid "" "Login is not possible because a session is already running for %s. To login, " "you must log out from the session or force stop it." msgstr "" "%s ਲਈ ਸ਼ੈਸ਼ਨ ਪਹਿਲਾਂ ਚੱਲਦਾ ਹੋਣ ਕਰਕੇ ਲਾਗਇਨ ਸੰਭਵ ਨਹੀਂ ਹੈ। ਲਾਗਇਨ ਕਰਨ ਲਈ ਤੁਹਾਨੂੰ" " ਪਹਿਲਾਂ ਸ਼ੈਸ਼ਨ ਤੋਂ ਲਾਗ ਆਉਟ ਕਰਨਾ ਹੋਵੇਗਾ ਜਾਂ ਇਸ ਨੂੰ ਧੱਕੇ ਨਾਲ ਬੰਦ ਕਰੋ।" #: js/gdm/loginDialog.js:442 msgid "Session Already Running" msgstr "ਸ਼ੈਸ਼ਨ ਪਹਿਲਾਂ ਹੀ ਚੱਲ ਰਿਹਾ ਹੈ" #: js/gdm/loginDialog.js:454 msgid "" "Force stopping will quit any running apps and processes, and could result in " "data loss." msgstr "" "ਧੱਕੇ ਨਾਲ ਰੋਕਣ ਨਾਲ ਕੋਈ ਵੀ ਚੱਲ ਰਹੀਆਂ ਐਪਾਂ ਅਤੇ ਪਰੋਸੈਸ ਖਤਮ ਹੋਣ ਜਾਣਗੇ ਅਤੇ ਡਾਟਾ" " ਗੁੰਮ ਹੋ ਸਕਦਾ ਹੈ।" #: js/gdm/loginDialog.js:474 #| msgid "Force Quit" msgid "Force Stop" msgstr "ਧੱਕੇ ਨਾਲ ਰੋਕੋ" #: js/gdm/loginDialog.js:542 msgid "Not listed?" msgstr "ਲਿਸਟ ਵਿੱਚ ਨਹੀਂ ਹੈ?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:1010 #, javascript-format msgid "(e.g., user or %s)" msgstr "(ਜਿਵੇਂ ਕਿ ਵਰਤੋਂਕਾਰ ਜਾਂ %s)" #: js/gdm/loginDialog.js:1015 js/ui/components/networkAgent.js:258 #: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:327 msgid "Username" msgstr "ਵਰਤੋਂਂਕਾਰ ਨਾਂ" #: js/gdm/loginDialog.js:1081 msgid "Login Attempt Timed Out" msgstr "ਲਾਗਇਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਲਈ ਸਮਾਂ ਸਮਾਪਤ" #: js/gdm/loginDialog.js:1082 #| msgid "Wrong password, please try again" msgid "Login took too long, please try again" msgstr "ਲਾਗਇਨ ਲਈ ਬਹੁਤ ਸਮਾਂ ਲੱਗਾ, ਮੁੜ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜੀ" #: js/gdm/loginDialog.js:1427 msgid "Login Window" msgstr "ਲਾਗਇਨ ਵਿੰਡੋ" #: js/gdm/util.js:497 msgid "Authentication error" msgstr "ਪਰਮਾਣਕਿਤਾ ਗਲਤੀ" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:728 msgid "(or swipe finger across reader)" msgstr "(ਜਾਂ ਰੀਡਰ ਉੱਤੇ ਉਂਗਲ ਘਸਾਓ)" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:733 msgid "(or place finger on reader)" msgstr "(ਜਾਂ ਰੀਡਰ ਉੱਤੇ ਉਂਗਲ ਰੱਖੋ)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:91 msgctxt "search-result" msgid "Power Off" msgstr "ਬੰਦ ਕਰੋ" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:94 msgid "power off;poweroff;shutdown;halt;stop" msgstr "ਬੰਦ ਕਰੋ;ਪਾਵਰ ਆਫ਼;ਮੁੜ-ਚਾਲੂ ਕਰੋ;ਰੋਕੋ;ਅਟਕਾਓ" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:99 msgctxt "search-result" msgid "Restart" msgstr "ਮੁੜ-ਚਾਲੂ ਕਰੋ" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:102 msgid "reboot;restart;" msgstr "ਮੁੜ-ਚਾਲੂ;ਮੁੜ-ਸ਼ੁਰੂ ਕਰੋ;" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:107 msgctxt "search-result" msgid "Lock Screen" msgstr "ਸਕਰੀਨ ਲਾਕ ਕਰੋ" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:110 msgid "lock screen" msgstr "ਸਕਰੀਨ ਲਾਕ" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:115 msgctxt "search-result" msgid "Log Out" msgstr "ਲਾਗ ਆਉਟ" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:118 msgid "logout;log out;sign off" msgstr "ਲਾਗਆਉਟ;ਸਾਈਨ ਆਫ਼;ਲਾਗ-ਆਉਟ" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:123 msgctxt "search-result" msgid "Suspend" msgstr "ਸਸਪੈਂਡ ਕਰੋ" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:126 msgid "suspend;sleep" msgstr "ਸਸਪੈਂਡ;ਸਲੀਪ" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:131 msgctxt "search-result" msgid "Switch User" msgstr "ਵਰਤੋਂਂਕਾਰ ਬਦਲੋ" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:134 msgid "switch user" msgstr "ਵਰਤੋਂਕਾਰ ਬਦਲੋ" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:141 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "ਸਥਿਤੀ ਲਾਕ ਕਰੋ;ਸਥਿਤੀ ਅਣ-ਲਾਕ ਕਰੋ;ਸਕਰੀਨ;ਘੁੰਮਾਉਣਾ;ਘੁੰਮਾਓ" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:146 msgctxt "search-result" msgid "Take a Screenshot" msgstr "ਸਕਰੀਨਸ਼ਾਟ ਲਵੋ" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:149 msgid "screenshot;screencast;snip;capture;record" msgstr "ਸਕਰੀਨਸ਼ਾਟ;ਸਕਰੀਨਕਾਸਟ;ਸਨਿਪ;ਕੈਪਚਰ;ਲਵੋ;ਰਿਕਾਰਡ;ਖਿੱਚੋ" #: js/misc/systemActions.js:249 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "ਸਕਰੀਨ ਘੁੰਮਾਉਣਾ ਅਣ-ਲਾਕ ਕਰੋ" #: js/misc/systemActions.js:250 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "ਸਕਰੀਨ ਘੁੰਮਾਉਣਾ ਲਾਕ ਹੈ" #: js/misc/util.js:139 msgid "Command not found" msgstr "ਕਮਾਂਡ ਨਹੀਂ ਲੱਭੀ" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:179 msgid "Could not parse command:" msgstr "ਕਮਾਂਡ ਪਾਰਸ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ:" #: js/misc/util.js:187 #, javascript-format msgid "Execution of “%s” failed:" msgstr "“%s” ਚਲਾਉਣ ਲਈ ਫੇਲ੍ਹ:" #: js/misc/dateUtils.js:69 msgid "Just now" msgstr "ਹੁਣੇ ਹੀ" #: js/misc/dateUtils.js:72 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d ਮਿੰਟ ਪਹਿਲਾਂ" msgstr[1] "%d ਮਿੰਟ ਪਹਿਲਾਂ" #: js/misc/dateUtils.js:79 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d ਘੰਟਾ ਪਹਿਲਾਂ" msgstr[1] "%d ਘੰਟੇ ਪਹਿਲਾਂ" #: js/misc/dateUtils.js:85 js/ui/dateMenu.js:185 msgid "Yesterday" msgstr "ਕੱਲ੍ਹ" #: js/misc/dateUtils.js:88 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d ਦਿਨ ਪਹਿਲਾਂ" msgstr[1] "%d ਦਿਨ ਪਹਿਲਾਂ" #: js/misc/dateUtils.js:95 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d ਹਫ਼ਤਾ ਪਹਿਲਾਂ" msgstr[1] "%d ਹਫ਼ਤੇ ਪਹਿਲਾਂ" #: js/misc/dateUtils.js:102 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%d ਮਹੀਨਾ ਪਹਿਲਾਂ" msgstr[1] "%d ਮਹੀਨੇ ਪਹਿਲਾਂ" #: js/misc/dateUtils.js:108 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "%d ਸਾਲ ਪਹਿਲਾਂ" msgstr[1] "%d ਸਾਲ ਪਹਿਲਾਂ" #. Translators: Time in 24h format #: js/misc/dateUtils.js:155 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/dateUtils.js:161 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "ਕੱਲ੍ਹ, %H∶%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/dateUtils.js:167 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/dateUtils.js:173 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%-d %B %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/dateUtils.js:179 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%-d %B %Y, %H∶%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/dateUtils.js:184 msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/dateUtils.js:190 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "ਕੱਲ੍ਹ, %l∶%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/dateUtils.js:196 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/dateUtils.js:202 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%-d %B %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/dateUtils.js:208 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%-d %B %Y, %l∶%M %p" #: js/portalHelper/main.js:98 msgid "Your connection seems to be secure" msgstr "ਤੁਹਾਡਾ ਕਨੈਕਸ਼ਨ ਸੁਰੱਖਿਅਤ ਜਾਪਦਾ ਹੈ" #: js/portalHelper/main.js:104 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "ਇਸ ਹਾਟਸਪਾਟ ਨਾਲ ਤੁਹਾਡਾ ਕਨੈਕਸ਼ਨ ਸੁਰੱਖਿਅਤ ਨਹੀਂ ਹੈ। ਇਸ ਸਫ਼ੇ ਉੱਤੇ ਤੁਹਾਡੇ ਵਲੋਂ ਭਰੇ ਗਏ" " ਪਾਸਵਰਡ ਜਾਂ " "ਦਿੱਤੀ ਹੋਰ ਜਾਣਾਕਰੀ ਨੂੰ ਨੇੜਲੇ ਲੋਕਾਂ ਵਲੋਂ ਵੇਖਿਆ ਜਾ ਸਕਦਾ ਹੈ।" #: js/portalHelper/main.js:115 msgid "Hotspot Login" msgstr "ਹਾਟਸਪਾਟ ਲਾਗਇਨ" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:45 js/ui/inhibitShortcutsDialog.js:92 msgid "Deny" msgstr "ਇਨਕਾਰ" #: js/ui/accessDialog.js:46 js/ui/inhibitShortcutsDialog.js:101 msgid "Allow" msgstr "ਮਨਜ਼ੂਰ" #: js/ui/appDisplay.js:1775 msgid "Unnamed Folder" msgstr "ਬੇਨਾਮ ਫੋਲਡਰ" #: js/ui/appFavorites.js:166 #, javascript-format msgid "%s has been pinned to the dash." msgstr "%s ਨੂੰ ਡੈਸ਼ ਵਿੱਚ ਟੰਗਿਆ ਗਿਆ ਹੈ।" #: js/ui/appFavorites.js:199 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "%s ਨੂੰ ਡੈਸ਼ ਤੋਂ ਲਾਹਿਆ ਜਾ ਚੁੱਕਾ ਹੈ।" #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:51 msgid "Open Windows" msgstr "ਵਿੰਡੋਆਂ ਖੋਲ੍ਹੋ" #: js/ui/appMenu.js:59 msgid "New Window" msgstr "ਨਵੀਂ ਵਿੰਡੋ" #: js/ui/appMenu.js:86 msgid "App Details" msgstr "ਐਪ ਵੇਰਵੇ" #: js/ui/appMenu.js:102 msgid "Quit" msgstr "ਬਾਹਰ" #: js/ui/appMenu.js:162 js/ui/dash.js:250 msgid "Unpin" msgstr "ਲਾਹੋ" #: js/ui/appMenu.js:163 msgid "Pin to Dash" msgstr "ਡੈਸ਼ ਵਿੱਚ ਟੰਗੋ" #: js/ui/appMenu.js:180 msgid "Launch using Integrated Graphics Card" msgstr "ਐਂਟੀਗਰੇਟਡ ਗਰਾਫ਼ਿਕਸ ਕਾਰਡ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਚਲਾਓ" #: js/ui/appMenu.js:181 msgid "Launch using Discrete Graphics Card" msgstr "ਵੱਖਰੇ (ਡਿਸਕ੍ਰਿਟ) ਗਰਾਫ਼ਿਕਸ ਕਾਰਡ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਚਲਾਓ" #: js/ui/audioDeviceSelection.js:46 msgid "Select Audio Device" msgstr "ਆਡੀਓ ਡਿਵਾਈਸ ਨੂੰ ਚੁਣੋ" #: js/ui/audioDeviceSelection.js:61 js/ui/status/volume.js:83 msgid "Sound Settings" msgstr "ਸਾਊਂਡ ਸੈਟਿੰਗਾਂ" #: js/ui/audioDeviceSelection.js:74 msgid "Headphones" msgstr "ਹੈੱਡਫ਼ੋਨ" #: js/ui/audioDeviceSelection.js:76 msgid "Headset" msgstr "ਹੈੱਡਸੈੱਟ" #: js/ui/audioDeviceSelection.js:78 js/ui/status/volume.js:358 msgid "Microphone" msgstr "ਮਾਈਕਰੋਫੋਨ" #: js/ui/backgroundMenu.js:15 msgid "Change Background…" msgstr "…ਬੈਕਗਰਾਊਂਡ ਬਦਲੋ" #: js/ui/backgroundMenu.js:17 msgid "Display Settings" msgstr "ਡਿਸਪਲੇਅ ਸੈਟਿੰਗਾਂ" #: js/ui/backgroundMenu.js:18 msgid "Settings" msgstr "ਸੈਟਿੰਗਾਂ" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:39 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:65 msgctxt "grid sunday" msgid "S" msgstr "ਐ" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:67 msgctxt "grid monday" msgid "M" msgstr "ਸੋ" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:69 msgctxt "grid tuesday" msgid "T" msgstr "ਮੰ" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:71 msgctxt "grid wednesday" msgid "W" msgstr "ਬੁੱ" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:73 msgctxt "grid thursday" msgid "T" msgstr "ਵੀ" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:75 msgctxt "grid friday" msgid "F" msgstr "ਸ਼ੁੱ" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:77 msgctxt "grid saturday" msgid "S" msgstr "ਸ਼" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:428 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:438 msgid "%OB %Y" msgstr "%OB %Y" #: js/ui/calendar.js:500 msgid "Previous month" msgstr "ਪਿੱਛੇ ਮਹੀਨੇ" #: js/ui/calendar.js:518 msgid "Next month" msgstr "ਅਗਲੇ ਮਹੀਨੇ" #: js/ui/calendar.js:669 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:728 msgid "Week %V" msgstr "ਹਫ਼ਤਾ %V" #: js/ui/calendar.js:920 msgid "No Notifications" msgstr "ਕੋਈ ਨੋਟੀਫਿਕੇਸ਼ਨ" #: js/ui/calendar.js:976 msgid "Do Not Disturb" msgstr "ਤੰਗ ਨਾ ਕਰੋ" #: js/ui/calendar.js:997 msgid "Clear" msgstr "ਸਾਫ਼ ਕਰੋ" #: js/ui/calendar.js:1001 #| msgid "%d new notification" #| msgid_plural "%d new notifications" msgctxt "action" msgid "Clear all notifications" msgstr "ਸਭ ਸੂਚਨਾਵਾਂ ਨੂੰ ਮਿਟਾਓ" #. Translators: %s is an application name #: js/ui/closeDialog.js:44 #, javascript-format msgid "“%s” is not responding." msgstr "“%s” ਜਵਾਬ ਨਹੀਂ ਦਿੰਦਾ ਹੈ।" #: js/ui/closeDialog.js:45 msgid "" "You may choose to wait a short while for it to continue or force the app to " "quit entirely." msgstr "" "ਤੁਸੀਂ ਇਸ ਲਈ ਕੁਝ ਸਮੇਂ ਵਾਸਤੇ ਉਡੀਕ ਕਰ ਸਕਦੇ ਹੋ ਜਾਂ ਐਪ ਨੂੰ ਧੱਕੇ ਨਾਲ ਬੰਦ ਕਰ ਸਕਦੇ ਹੋ।" #: js/ui/closeDialog.js:73 msgid "Force Quit" msgstr "ਧੱਕੇ ਨਾਲ ਬੰਦ ਕਰੋ" #: js/ui/closeDialog.js:78 msgid "Wait" msgstr "ਉਡੀਕੋ" #: js/ui/components/automountManager.js:84 msgid "External drive connected" msgstr "ਬਾਹਰੀ ਡਰਾਇਵ ਕਨੈਕਟ ਹੋਈ" #: js/ui/components/automountManager.js:96 msgid "External drive disconnected" msgstr "ਬਾਹਰੀ ਡਰਾਇਵ ਡਿਸ-ਕਨੈਕਟ ਹੈ" #: js/ui/components/automountManager.js:207 msgid "Unable to unlock volume" msgstr "ਵਾਲੀਅਮ ਨੂੰ ਅਣਲਾਕ ਕਰਨ ਲਈ ਅਸਮਰੱਥ" #: js/ui/components/automountManager.js:208 msgid "The installed udisks version does not support the PIM setting" msgstr "ਇੰਸਟਾਲ ਕੀਤਾ udisks ਵਰਜ਼ਨ PIM ਸੈਟਿੰਗ ਲਈ ਸਹਾਇਕ ਨਹੀਂ ਹੈ" #: js/ui/components/autorunManager.js:200 #, javascript-format msgid "Open with %s" msgstr "%s ਨਾਲ ਖੋਲ੍ਹੋ" #: js/ui/components/networkAgent.js:96 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router." msgstr "" "ਬਦਲੇ ਰੂਪ ਵਿੱਚ ਤੁਸੀਂ ਆਪਣੇ ਰਾਊਂਟਰ ਉੱਤੇ \"WPS\" ਬਟਨ ਨੂੰ ਦਬਾ ਕੇ ਕਨੈਕਟ ਕਰ ਸਕਦੇ ਹੋ।" #: js/ui/components/networkAgent.js:108 js/ui/status/bluetooth.js:246 #: js/ui/status/network.js:360 js/ui/status/network.js:444 msgid "Connect" msgstr "ਕਨੈਕਟ ਕਰੋ" #: js/ui/components/networkAgent.js:223 msgid "Key" msgstr "ਸਵਿੱਚ" #: js/ui/components/networkAgent.js:274 js/ui/components/networkAgent.js:313 msgid "Private key password" msgstr "ਪ੍ਰਾਈਵੇਟ ਕੁੰਜੀ ਪਾਸਵਰਡ" #: js/ui/components/networkAgent.js:307 msgid "Identity" msgstr "ਪਛਾਣ" #: js/ui/components/networkAgent.js:333 msgid "Service" msgstr "ਸਰਵਿਸ" #: js/ui/components/networkAgent.js:371 js/ui/components/networkAgent.js:407 #: js/ui/components/networkAgent.js:750 js/ui/components/networkAgent.js:771 msgid "Authentication required" msgstr "ਪਰਮਾਣਕਿਤਾ ਚਾਹੀਦੀ ਹੈ" #: js/ui/components/networkAgent.js:372 js/ui/components/networkAgent.js:751 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network " "“%s”." msgstr "ਬੇਤਾਰ ਨੈੱਟਵਰਕ “%s” ਵਰਤਣ ਲਈ ਪਾਸਵਰਡ ਜਾਂ ਇੰਕ੍ਰਿਪਸ਼ਨ ਕੁੰਜੀਆਂ ਦੀ ਲੋੜ ਹੈ।" #: js/ui/components/networkAgent.js:376 js/ui/components/networkAgent.js:755 msgid "Wired 802.1X authentication" msgstr "ਤਾਰ 802.1X ਪਰਮਾਣਕਿਤਾ" #: js/ui/components/networkAgent.js:379 msgid "Network name" msgstr "ਨੈੱਟਵਰਕ ਨਾਂ" #: js/ui/components/networkAgent.js:387 js/ui/components/networkAgent.js:759 msgid "DSL authentication" msgstr "DSL ਪਰਮਾਣਕਿਤਾ" #: js/ui/components/networkAgent.js:394 js/ui/components/networkAgent.js:764 msgid "PIN code required" msgstr "PIN ਕੋਡ ਲੋੜੀਦਾ ਹੈ" #: js/ui/components/networkAgent.js:395 js/ui/components/networkAgent.js:765 msgid "PIN code is needed for the mobile broadband device" msgstr "ਮੋਬਾਇਲ ਬਰਾਡਬੈਂਡ ਜੰਤਰ ਲਈ ਪਿੰਨ ਕੋਡ ਚਾਹੀਦਾ ਹੈ" #: js/ui/components/networkAgent.js:397 msgid "PIN" msgstr "ਪਿੰਨ" #: js/ui/components/networkAgent.js:408 js/ui/components/networkAgent.js:756 #: js/ui/components/networkAgent.js:760 js/ui/components/networkAgent.js:772 #: js/ui/components/networkAgent.js:776 #, javascript-format msgid "A password is required to connect to “%s”." msgstr "“%s” ਨਾਲ ਕੁਨੈਕਟ ਹੋਣ ਲਈ ਪਾਸਵਰਡ ਦੀ ਲੋੜ ਹੈ। " #: js/ui/components/networkAgent.js:775 msgid "VPN password" msgstr "VPN ਪਾਸਵਰਡ" #: js/ui/components/polkitAgent.js:46 msgid "Authentication Required" msgstr "ਪਰਮਾਣਕਿਤਾ ਚਾਹੀਦੀ ਹੈ" #: js/ui/components/polkitAgent.js:86 msgid "Administrator" msgstr "ਪਰਸ਼ਾਸ਼ਕ" #: js/ui/components/polkitAgent.js:151 msgid "Authenticate" msgstr "ਪਰਮਾਣਿਤ" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:265 js/ui/shellMountOperation.js:417 msgid "Sorry, that didn’t work. Please try again." msgstr "ਅਫਸੋਸ, ਉਹ ਕੰਮ ਨਹੀਂ ਕਰਦਾ। ਫੇਰ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜੀ।" #: js/ui/ctrlAltTab.js:25 js/ui/overviewControls.js:418 msgid "Windows" msgstr "ਵਿੰਡੋ" #: js/ui/dash.js:206 js/ui/dash.js:252 msgid "Show Apps" msgstr "ਐਪਾਂ ਵੇਖੋ" #. Translators: this is the name of the dock/favorites area on #. the bottom of the overview #: js/ui/dash.js:410 msgid "Dash" msgstr "ਡੈਸ਼" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:101 msgid "%B %-d %Y" msgstr "%-d %B %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:108 msgid "%A %B %e %Y" msgstr "%A, %e %B %Y" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:174 msgctxt "calendar heading" msgid "%B %-d" msgstr "%-d %B" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:177 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%-d %B %Y" #: js/ui/dateMenu.js:183 msgid "Today" msgstr "ਅੱਜ" #: js/ui/dateMenu.js:187 msgid "Tomorrow" msgstr "ਭਲਕ" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:218 msgctxt "event list time" msgid "All Day" msgstr "ਸਭ ਦਿਨ" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:240 msgid "%m/%d" msgstr "%d/%m" #: js/ui/dateMenu.js:291 msgid "No Events" msgstr "ਕੋਈ ਘਟਨਾ ਨਹੀਂ" #: js/ui/dateMenu.js:413 msgid "Add world clocks…" msgstr "...ਸੰਸਾਰ ਘੜੀਆਂ ਜੋੜੋ" #: js/ui/dateMenu.js:414 msgid "World Clocks" msgstr "ਸੰਸਾਰ ਘੜੀਆਂ" #: js/ui/dateMenu.js:704 msgid "Loading…" msgstr "…ਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" #: js/ui/dateMenu.js:714 msgid "Go online for weather information" msgstr "ਮੌਸਮ ਦੀ ਜਾਣਕਾਰੀ ਲਈ ਆਨਲਾਈਨ ਜਾਓ" #: js/ui/dateMenu.js:716 msgid "Weather information is currently unavailable" msgstr "ਮੌਸਮ ਦੀ ਜਾਣਕਾਰੀ ਇਸ ਵੇਲੇ ਉਪਲਬਧ ਨਹੀਂ ਹੈ" #: js/ui/dateMenu.js:726 msgid "Weather" msgstr "ਮੌਸਮ" #: js/ui/dateMenu.js:728 msgid "Select weather location…" msgstr "…ਮੌਸਮੀ ਟਿਕਾਣਾ ਚੁਣੋ" #: js/ui/endSessionDialog.js:48 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "%s ਲਾਗਆਉਟ" #: js/ui/endSessionDialog.js:49 msgctxt "title" msgid "Log Out" msgstr "ਲਾਗਆਉਟ" #: js/ui/endSessionDialog.js:52 #, javascript-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "%s ਨੂੰ %d ਸਕਿੰਟ ਵਿੱਚ ਆਪਣੇ-ਆਪ ਹੀ ਲਾਗ ਆਉਟ ਕੀਤਾ ਜਾਵੇਗਾ।" msgstr[1] "%s ਨੂੰ %d ਸਕਿੰਟਾਂ ਵਿੱਚ ਆਪਣੇ-ਆਪ ਹੀ ਲਾਗ ਆਉਟ ਕੀਤਾ ਜਾਵੇਗਾ।" #: js/ui/endSessionDialog.js:58 #, javascript-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "ਤੁਹਾਨੂੰ %d ਸਕਿੰਟ ਵਿੱਚ ਆਪਣੇ-ਆਪ ਹੀ ਲਾਗਆਉਟ ਕਰ ਦਿੱਤਾ ਜਾਵੇਗਾ।" msgstr[1] "ਤੁਹਾਨੂੰ %d ਸਕਿੰਟਾਂ ਵਿੱਚ ਆਪਣੇ-ਆਪ ਹੀ ਲਾਗਆਉਟ ਕਰ ਦਿੱਤਾ ਜਾਵੇਗਾ।" #: js/ui/endSessionDialog.js:65 msgctxt "button" msgid "Log Out" msgstr "ਲਾਗਆਉਟ" #: js/ui/endSessionDialog.js:71 js/ui/status/system.js:176 msgctxt "title" msgid "Power Off" msgstr "ਬੰਦ ਕਰੋ" #: js/ui/endSessionDialog.js:72 msgctxt "title" msgid "Install Updates & Power Off" msgstr "ਅੱਪਡੇਟ ਇੰਸਟਾਲ ਕਰੋ ਤੇ ਬੰਦ ਕਰੋ" #: js/ui/endSessionDialog.js:75 #, javascript-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "ਸਿਸਟਮ ਨੂੰ ਆਪਣੇ-ਆਪ ਹੀ %d ਸਕਿੰਟ ਵਿੱਚ ਬੰਦ ਕੀਤਾ ਜਾਵੇਗਾ।" msgstr[1] "ਸਿਸਟਮ ਨੂੰ ਆਪਣੇ-ਆਪ ਹੀ %d ਸਕਿੰਟਾਂ ਵਿੱਚ ਬੰਦ ਕੀਤਾ ਜਾਵੇਗਾ।" #: js/ui/endSessionDialog.js:79 js/ui/endSessionDialog.js:98 msgctxt "checkbox" msgid "Install pending software updates" msgstr "ਬਾਕੀ ਰਹਿੰਦੇ ਸਾਫਟਵੇਅਰ ਅੱਪਡੇਟ ਇੰਸਟਾਲ ਕਰੋ" #: js/ui/endSessionDialog.js:83 msgctxt "button" msgid "Power Off" msgstr "ਬੰਦ ਕਰੋ" #: js/ui/endSessionDialog.js:90 msgctxt "title" msgid "Restart" msgstr "ਮੁੜ-ਚਾਲੂ ਕਰੋ" #: js/ui/endSessionDialog.js:91 msgctxt "title" msgid "Install Updates & Restart" msgstr "ਅੱਪਡੇਟ ਇੰਸਟਾਲ ਕਰੋ ਅਤੇ ਮੁੜ-ਚਾਲੂ ਕਰੋ" #: js/ui/endSessionDialog.js:94 #, javascript-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "ਸਿਸਟਮ ਨੂੰ ਆਪਣੇ-ਆਪ ਹੀ %d ਸਕਿੰਟ ਵਿੱਚ ਮੁੜ-ਚਾਲੂ ਕੀਤਾ ਜਾਵੇਗਾ।" msgstr[1] "ਸਿਸਟਮ ਨੂੰ ਆਪਣੇ-ਆਪ ਹੀ %d ਸਕਿੰਟਾਂ ਵਿੱਚ ਮੁੜ-ਚਾਲੂ ਕੀਤਾ ਜਾਵੇਗਾ।" #: js/ui/endSessionDialog.js:102 msgctxt "button" msgid "Restart" msgstr "ਮੁੜ-ਚਾਲੂ ਕਰੋ" #: js/ui/endSessionDialog.js:110 msgctxt "title" msgid "Restart & Install Updates" msgstr "ਮੁੜ-ਚਾਲੂ ਕਰੋ ਤੇ ਅੱਪਡੇਟ ਇੰਸਟਾਲ ਕਰੋ" #: js/ui/endSessionDialog.js:113 #, javascript-format msgid "The system will automatically restart and install updates in %d second." msgid_plural "" "The system will automatically restart and install updates in %d seconds." msgstr[0] "" "ਸਿਸਟਮ ਨੂੰ ਆਪਣੇ-ਆਪ ਹੀ %d ਸਕਿੰਟ ਵਿੱਚ ਮੁੜ-ਚਾਲੂ ਅਤੇ ਅੱਪਡੇਟ ਇੰਸਟਾਲ ਕੀਤੇ ਜਾਣਗੇ।" msgstr[1] "" "ਸਿਸਟਮ ਨੂੰ ਆਪਣੇ-ਆਪ ਹੀ %d ਸਕਿੰਟਾਂ ਵਿੱਚ ਮੁੜ-ਚਾਲੂ ਅਤੇ ਅੱਪਡੇਟ ਇੰਸਟਾਲ ਕੀਤੇ ਜਾਣਗੇ।" #: js/ui/endSessionDialog.js:120 js/ui/endSessionDialog.js:141 #| msgctxt "button" #| msgid "Restart & Install" msgctxt "button" msgid "Restart & Install" msgstr "ਮੁੜ-ਚਾਲੂ ਅਤੇ ਇੰਸਟਾਲ ਕਰੋ" #: js/ui/endSessionDialog.js:122 #| msgctxt "button" #| msgid "Install & Power Off" msgctxt "button" msgid "Install & Power Off" msgstr "ਇੰਸਟਾਲ ਅਤੇ ਬੰਦ ਕਰੋ" #: js/ui/endSessionDialog.js:123 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "ਅੱਪਡੇਟ ਇੰਸਟਾਲ ਕਰਨ ਦੇ ਬਾਅਦ ਬੰਦ ਕਰੋ" #: js/ui/endSessionDialog.js:130 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "ਮੁੜ-ਚਾਲੂ ਕਰੋ ਤੇ ਅੱਪਗਰੇਡ ਇੰਸਟਾਲ ਕਰੋ" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:135 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "ਮੁੜ-ਚਾਲੂ ਹੋਣ ਦੇ ਬਾਅਦ %s %s ਨੂੰ ਇੰਸਟਾਲ ਕੀਤਾ ਜਾਵੇਗਾ। ਅੱਪਗਰੇਡ ਇੰਸਟਾਲੇਸ਼ਨ ਨੂੰ ਲੰਮਾ" " ਸਮਾਂ ਲੱਗ ਸਕਦਾ " "ਹੈ: ਪੱਕਾ ਕਰੋ ਕਿ ਤੁਸੀਂ ਬੈਕਅੱਪ ਲੈ ਲਿਆ ਹੈ ਅਤੇ ਕੰਪਿਊਟਰ ਦਾ ਪਲੱਗ ਲੱਗਾ ਹੈ।" #: js/ui/endSessionDialog.js:284 msgid "Low battery power: please plug in before installing updates." msgstr "ਬੈਟਰੀ ਊਰਜਾ ਘੱਟ ਹੈ: ਅੱਪਡੇਟ ਇੰਸਟਾਲ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਪਲੱਗ ਲਗਾਉ ਜੀ।" #: js/ui/endSessionDialog.js:293 msgid "Some applications are busy or have unsaved work" msgstr "ਕੁਝ ਐਪਲੀਕੇਸ਼ਨ ਰੁੱਝੀਆਂ ਹਨ ਜਾਂ ਕੁਝ ਨਾ-ਸੰਭਾਲਿਆ ਕੰਮ ਪਿਆ ਹੈ" #: js/ui/endSessionDialog.js:298 msgid "Other users are logged in" msgstr "ਹੋਰ ਵਰਤੋਂਕਾਰ ਲਾਗਇਨ ਹਨ" #: js/ui/endSessionDialog.js:468 msgctxt "button" msgid "Boot Options" msgstr "ਬੂਟ ਚੋਣਾਂ" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:673 #, javascript-format msgid "%s (remote)" msgstr "%s (ਰਿਮੋਟ)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:676 #, javascript-format msgid "%s (console)" msgstr "%s (ਕਨਸੋਲ)" #: js/ui/extensionDownloader.js:282 msgid "Install" msgstr "ਇੰਸਟਾਲ ਕਰੋ" #: js/ui/extensionDownloader.js:288 msgid "Install Extension" msgstr "ਇਕਸਟੈਨਸ਼ਨ ਇੰਸਟਾਲ ਕਰੋ" #: js/ui/extensionDownloader.js:289 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "ਕੀ extensions.gnome.org ਤੋਂ “%s” ਡਾਊਨਲੋਡ ਅਤੇ ਇੰਸਟਾਲ ਕਰਨੀ ਹੈ?" #: js/ui/extensionSystem.js:354 msgid "Extension Updates Available" msgstr "ਇਕਸਟੈਨਸ਼ਨ ਅੱਪਡੇਟ ਉਪਲਬਧ ਹਨ" #: js/ui/extensionSystem.js:355 msgid "Extension updates are ready to be installed." msgstr "ਇਕਸਟੈਨਸ਼ਨ ਅੱਪਡੇਟ ਇੰਸਟਾਲ ਕਰਨ ਲਈ ਤਿਆਰ ਹਨ।" #: js/ui/inhibitShortcutsDialog.js:70 msgid "Allow inhibiting shortcuts" msgstr "ਸ਼ਾਰਟਕੱਟਾਂ ਲਈ ਰੁਕਾਵਟ ਪਾਉਣ ਲਈ ਸਹਿਮਤੀ ਦਿਓ" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:73 #, javascript-format msgid "The app %s wants to inhibit shortcuts" msgstr "%s ਐਪ ਸ਼ਾਰਟਕੱਟਾਂ ਲਈ ਰੁਕਾਵਟ ਚਾਹੁੰਦੀ ਹੈ" #: js/ui/inhibitShortcutsDialog.js:74 msgid "An app wants to inhibit shortcuts" msgstr "ਐਪ ਸ਼ਾਰਟਕੱਟਾਂ ਲਈ ਰੁਕਾਵਟ ਚਾਹੁੰਦੀ ਹੈ" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:81 #, javascript-format msgid "You can restore shortcuts by pressing %s." msgstr "ਤੁਸੀਂ ਸ਼ਾਰਟਕੱਟਾਂ ਨੂੰ %s ਦਬਾ ਕੇ ਬਹਾਲ ਕਰ ਸਕਦੇ ਹੋ।" #: js/ui/kbdA11yDialog.js:34 msgid "Slow Keys Turned On" msgstr "ਹੌਲੀ ਸਵਿੱਚਾਂ ਚਾਲੂ ਕੀਤੀਆਂ" #: js/ui/kbdA11yDialog.js:35 msgid "Slow Keys Turned Off" msgstr "ਹੌਲੀ ਸਵਿੱਚਾਂ ਬੰਦ ਕੀਤੀਆਂ" #: js/ui/kbdA11yDialog.js:36 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "ਤੁਸੀ ਸਿਫਟ (Shift) ਸਵਿੱਚ ਨੂੰ ਸਿਰਫ 8 ਸਕਿੰਟਾਂ ਲਈ ਦਬਾਉਣਾ ਹੈ। ਇਹ ਹੌਲੀ-ਸਵਿੱਚ ਫੀਚਰ" " ਦਾ ਸ਼ਾਰਟਕੱਟ " "ਹੈ, ਜੋ ਕਿ ਤੁਹਾਡੇ ਕੀ-ਬੋਰਡ ਦੇ ਕੰਮ ਕਰਨ ਦੇ ਢੰਗ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇਗਾ।" #: js/ui/kbdA11yDialog.js:42 msgid "Sticky Keys Turned On" msgstr "ਸਟਿੱਕੀ ਸਵਿੱਚਾਂ ਚਾਲੂ ਕੀਤੀਆਂ" #: js/ui/kbdA11yDialog.js:43 msgid "Sticky Keys Turned Off" msgstr "ਸਟਿੱਕੀ ਸਵਿੱਚਾਂ ਬੰਦ ਕੀਤੀਆਂ" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "ਤੁਸੀ ਸਿਫਟ (Shift) ਸਵਿੱਚ ਨੂੰ ਸਿਰਫ 5 ਵਾਰ ਦਬਾਉਣਾ ਹੈ। ਇਹ ਸਟਿੱਕੀ-ਸਵਿੱਚ ਫੀਚਰ ਦਾ" " ਸ਼ਾਰਟਕੱਟ ਹੈ, " "ਜੋ ਕਿ ਤੁਹਾਡੇ ਕੀ-ਬੋਰਡ ਦੇ ਕੰਮ ਕਰਨ ਦੇ ਢੰਗ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇਗਾ।" #: js/ui/kbdA11yDialog.js:47 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" "ਤੁਸੀ ਲਗਾਤਾਰ ਦੋ ਕੀ ਇੱਕ ਵਾਰ ਦਬਾ ਸਕਦੇ ਹੋ ਜਾਂ ਸਿਫਟ (Shift) ਸਵਿੱਚ ਨੂੰ 5 ਵਾਰ ਇਹ" " ਸਟਿੱਕੀ ਸਵਿੱਚ " "ਫੀਚਰ ਨੂੰ ਚਾਲੂ ਕਰ ਸਕਦੇ ਹੋ, ਜੋ ਕਿ ਤੁਹਾਡਾ ਕੀ-ਬੋਰਡ ਤੇ ਕੰਮ ਕਰਨ ਦੇ ਢੰਗ ਨੂੰ ਤਬਦੀਲ" " ਕਰਦਾ ਹੈ।" #: js/ui/kbdA11yDialog.js:57 msgid "Leave On" msgstr "ਚਾਲੂ ਛੱਡੋ" #: js/ui/kbdA11yDialog.js:57 msgid "Turn On" msgstr "ਚਾਲੂ ਕਰੋ" #: js/ui/kbdA11yDialog.js:67 js/ui/status/network.js:455 msgid "Turn Off" msgstr "ਬੰਦ ਕਰੋ" #: js/ui/kbdA11yDialog.js:67 msgid "Leave Off" msgstr "ਬੰਦ ਰਹਿਣ ਦਿਓ" #: js/ui/keyboard.js:181 js/ui/status/keyboard.js:899 msgid "Keyboard Settings" msgstr "ਕੀਬੋਰਡ ਸੈਟਿੰਗਾਂ" #: js/ui/lookingGlass.js:724 msgid "No extensions installed" msgstr "ਕੋਈ ਇਕਸਟੈਨਸ਼ਨ ਇੰਸਟਾਲ ਨਹੀਂ ਹੈ" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:785 #, javascript-format msgid "%s has not emitted any errors." msgstr "%s ਨੇ ਕੋਈ ਗਲਤੀ ਨਹੀਂ ਦਿੱਤੀ।" #: js/ui/lookingGlass.js:791 msgid "Hide Errors" msgstr "ਗਲਤੀਆਂ ਓਹਲੇ ਕਰੋ" #: js/ui/lookingGlass.js:795 js/ui/lookingGlass.js:872 msgid "Show Errors" msgstr "ਗਲਤੀਆਂ ਵੇਖਾਓ" #: js/ui/lookingGlass.js:804 msgid "Active" msgstr "ਸਰਗਰਮ" #: js/ui/lookingGlass.js:807 msgid "Inactive" msgstr "ਨਾ-ਸਰਗਰਮ" #: js/ui/lookingGlass.js:809 msgid "Error" msgstr "ਗਲਤੀ" #: js/ui/lookingGlass.js:811 msgid "Out of date" msgstr "ਪੁਰਾਣਾ" #: js/ui/lookingGlass.js:813 msgid "Downloading" msgstr "ਡਾਊਨਲੋਡ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ" #: js/ui/lookingGlass.js:815 msgid "Deactivating" msgstr "ਨਾ-ਸਰਗਰਮ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" #: js/ui/lookingGlass.js:817 msgid "Activating" msgstr "ਸਰਗਰਮ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" #: js/ui/lookingGlass.js:850 msgid "View Source" msgstr "ਸਰੋਤ ਵੇਖੋ" #: js/ui/lookingGlass.js:861 msgid "Web Page" msgstr "ਵੈੱਬ ਸਫ਼ਾ" #: js/ui/main.js:279 msgid "System was put in unsafe mode" msgstr "ਸਿਸਟਮ ਨੂੰ ਗੈਰ-ਸੁਰੱਖਿਅਤ ਢੰਗ ਵਿੱਚ ਰੱਖਿਆ ਗਿਆ ਹੈ" #: js/ui/main.js:280 msgid "Apps now have unrestricted access" msgstr "ਐਪਾਂ ਕੋਲ ਹੁਣ ਬਿਨਾਂ ਰੋਕ-ਟੋਕ ਪਹੁੰਚ ਹੈ" #: js/ui/main.js:283 js/ui/overview.js:54 msgid "Undo" msgstr "ਵਾਪਸ" #: js/ui/main.js:340 msgid "Logged in as a privileged user" msgstr "ਅਧਿਕਾਰ ਪ੍ਰਾਪਤ ਵਰਤੋਂਕਾਰ ਵਜੋਂ ਲਾਗਇਨ ਕੀਤਾ" #: js/ui/main.js:341 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" "ਅਧਿਕਾਰ ਪ੍ਰਾਪਤ ਵਰਤੋਂ ਵਜੋਂ ਸ਼ੈਸ਼ਨ ਚਲਾਉਣਾ ਸੁਰੱਖਿਆ ਕਾਰਨਾਂ ਕਰਕੇ ਬਚਣਾ ਚਾਹੀਦਾ ਹੈ। ਜੇ" " ਸੰਭਵ ਹੋਵੇ ਤਾਂ " "ਤੁਹਾਨੂੰ ਸਧਾਰਨ ਵਰਤੋਂਕਾਰ ਵਜੋਂ ਲਾਗਇਨ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ।" #: js/ui/main.js:389 msgid "Screen Lock disabled" msgstr "ਸਕਰੀਨ ਲਾਕ ਅਸਮਰੱਥ ਹੈ" #: js/ui/main.js:390 msgid "Screen Locking requires the GNOME display manager." msgstr "ਸਕਰੀਨ ਲਾਕ ਕਰਨ ਲਈ ਗਨੋਮ ਡਿਸਪਲੇਅ ਮੈਨੇਜਰ ਚਾਹੀਦਾ ਹੈ।" #. Translators: this is the string displayed in the header when a message #. source doesn't have a name #: js/ui/messageList.js:400 #| msgctxt "program" #| msgid "Unknown" msgid "Unknown App" msgstr "ਅਣਪਛਾਤੀ ਐਪ" #: js/ui/messageTray.js:328 js/ui/messageTray.js:330 #| msgid "Notifications" msgid "Notification sound" msgstr "ਨੋਟੀਫਿਕੇਸ਼ਨ ਸਾਊਂਡ" #: js/ui/mpris.js:198 msgid "Unknown artist" msgstr "ਅਣਪਛਾਤਾ ਕਲਾਕਾਰ" #: js/ui/mpris.js:208 msgid "Unknown title" msgstr "ਅਣਪਛਾਤਾ ਟਾਈਟਲ" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:342 msgid "Type to search" msgstr "ਲੱਭਣ ਲਈ ਲਿਖੋ" #: js/ui/overviewControls.js:406 msgid "Apps" msgstr "ਐਪਾਂ" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:67 msgid "Overview" msgstr "ਸੰਖੇਪ" #: js/ui/padOsd.js:100 msgid "New shortcut…" msgstr "...ਨਵਾਂ ਸ਼ਾਰਟਕੱਟ" #: js/ui/padOsd.js:153 msgid "App defined" msgstr "ਪਰਿਭਾਸ਼ਿਤ ਐਪ" #: js/ui/padOsd.js:154 msgid "Show on-screen help" msgstr "ਆਨ-ਸਕਰੀਨ ਮਦਦ ਵੇਖਾਓ" #: js/ui/padOsd.js:155 msgid "Switch monitor" msgstr "ਮਾਨੀਟਰ ਨੂੰ ਬਦਲੋ" #: js/ui/padOsd.js:156 msgid "Assign keystroke" msgstr "ਕੀ-ਸਟਰੋਕ ਦਿਓ" #: js/ui/padOsd.js:225 msgid "Done" msgstr "ਮੁਕੰਮਲ" #: js/ui/padOsd.js:728 msgid "Edit…" msgstr "…ਸੋਧੋ" #: js/ui/padOsd.js:775 msgid "None" msgstr "ਕੋਈ ਨਹੀਂ" #: js/ui/padOsd.js:846 msgid "Press a button to configure" msgstr "ਸੰਰਚਨਾ ਲਈ ਬਟਨ ਨੂੰ ਦੱਬੋ" #: js/ui/padOsd.js:847 msgid "Press Esc to exit" msgstr "ਬਾਹਰ ਜਾਣ ਲਈ ਕੋਈ ਵੀ Esc ਦੱਬੋ" #: js/ui/padOsd.js:850 msgid "Press any key to exit" msgstr "ਬਾਹਰ ਜਾਣ ਲਈ ਕੋਈ ਵੀ ਸਵਿੱਚ ਦੱਬੋ" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:425 msgid "Activities" msgstr "ਸਰਗਰਮੀਆਂ" #: js/ui/panel.js:506 msgctxt "System menu in the top bar" msgid "System" msgstr "ਸਿਸਟਮ" #: js/ui/panel.js:680 msgid "Top Bar" msgstr "ਉੱਤਲੀ ਪੱਟੀ" #: js/ui/quickSettings.js:187 msgid "Open menu" msgstr "ਮੇਨੂ ਖੋਲ੍ਹੋ" #: js/ui/runDialog.js:63 msgid "Run a Command" msgstr "ਕਮਾਂਡ ਚਲਾਓ" #: js/ui/runDialog.js:78 msgid "Press ESC to close" msgstr "ਬੰਦ ਕਰਨ ਲਈ Esc ਦੱਬੋ" #: js/ui/runDialog.js:243 msgid "Restart is not available on Wayland" msgstr "ਵੇਅਲੈਂਡ ਉੱਤੇ ਮੁੜ-ਚਾਲੂ ਕਰੋ ਉਪਲਬਧ ਨਹੀਂ" #: js/ui/runDialog.js:248 msgid "Restarting…" msgstr "...ਮੁੜ-ਚਾਲੂ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" #: js/ui/screenShield.js:235 msgid "GNOME needs to lock the screen" msgstr "ਗਨੋਮ ਨੂੰ ਸਕਰੀਨ ਲਾਕ ਕਰਨ ਦੀ ਲੋੜ ਹੈ" #: js/ui/screenShield.js:276 js/ui/screenShield.js:669 msgid "Unable to lock" msgstr "ਅਣਲਾਕ ਕਰਨ ਲਈ ਅਸਮਰੱਥ" #: js/ui/screenShield.js:277 js/ui/screenShield.js:670 msgid "Lock was blocked by an app" msgstr "ਐਪ ਵਲੋਂ ਲਾਕ ਉੱਤੇ ਪਾਬੰਦੀ ਲਗਾਈ" #: js/ui/screenshot.js:1254 msgid "Selection" msgstr "ਚੋਣ" #: js/ui/screenshot.js:1264 msgid "Area Selection" msgstr "ਚੋਣ ਖੇਤਰ" #: js/ui/screenshot.js:1269 msgid "Screen" msgstr "ਸਕਰੀਨ" #: js/ui/screenshot.js:1279 msgid "Screen Selection" msgstr "ਸਕਰੀਨ ਚੋਣ" #: js/ui/screenshot.js:1284 msgid "Window" msgstr "ਵਿੰਡੋ" #: js/ui/screenshot.js:1294 msgid "Window Selection" msgstr "ਵਿੰਡੋ ਚੋਣ" #. Translators: entry in the window right click menu. #: js/ui/screenshot.js:1319 js/ui/status/system.js:113 js/ui/windowMenu.js:30 msgid "Take Screenshot" msgstr "ਸਕਰੀਨਸ਼ਾਟ ਲਵੋ" #: js/ui/screenshot.js:1335 msgid "Record Screen" msgstr "ਸਕਰੀਨ ਰਿਕਾਰਡ ਕਰੋ" #. Translators: since this string refers to an action, #. it needs to be phrased as a verb. #: js/ui/screenshot.js:1352 msgid "Capture" msgstr "ਕੈਪਚਰ" #: js/ui/screenshot.js:1374 msgid "Show Pointer" msgstr "ਪੁਆਇੰਟਰ ਵੇਖਾਓ" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1998 msgid "Screencasts" msgstr "ਸਕਰੀਨਕਾਸਟ" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast from 07-17-2013 10:00:46 PM" #: js/ui/screenshot.js:2003 #, no-c-format #| msgid "Screencast from %d %t.webm" msgid "Screencast from %d %t" msgstr "%d %t ਤੋਂ ਸਕਰੀਨਕਾਸਟ" #. Translators: notification title. #: js/ui/screenshot.js:2049 msgid "Screencast recorded" msgstr "ਸਕਰੀਨਕਾਸਟ ਰਿਕਾਰਡ ਕੀਤਾ" #. Translators: notification title. #: js/ui/screenshot.js:2062 #| msgid "Screencast recorded" msgid "Screencast failed to start" msgstr "ਸਕਰੀਨਕਾਸਟ ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਫੇਲ੍ਹ ਹੈ" #. Translators: notification title. #: js/ui/screenshot.js:2068 #| msgid "Screencast ended unexpectedly" msgid "Screencast ended: Out of disk space" msgstr "ਸਕਰੀਨਕਾਸਟ ਬੰਦ ਹੈ: ਡਿਸਕ ਥਾਂ ਭਰ ਗਈ ਹੈ" #. We can encourage user to try again on service crashes since the #. recorder will auto-blocklist the pipeline that crashed. #. Translators: notification title. #: js/ui/screenshot.js:2074 #| msgid "Screencast ended unexpectedly" msgid "Screencast ended unexpectedly, please try again" msgstr "ਸਕਰੀਨਕਾਸਟ ਅਚਾਨਕ ਬੰਦ ਹੋ ਗਿਆ, ਫੇਰ ਕੋਸ਼ਿਸ਼ ਕਰੋ" #. Translators: notification title. #: js/ui/screenshot.js:2077 msgid "Screencast ended unexpectedly" msgstr "ਸਕਰੀਨਕਾਸਟ ਅਚਾਨਕ ਬੰਦ ਹੋ ਗਿਆ" #. Translators: notification source name. #: js/ui/screenshot.js:2087 js/ui/screenshot.js:2329 msgid "Screenshot" msgstr "ਸਕਰੀਨਸ਼ਾਟ" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:2094 msgid "Click here to view the video." msgstr "ਵੀਡੀਓ ਵੇਖਣ ਲਈ ਇੱਥੇ ਕਲਿੱਕ ਕਰੋ।" #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:2102 js/ui/screenshot.js:2345 msgid "Show in Files" msgstr "ਫ਼ਾਇਲਾਂ ਵਿੱਚ ਵੇਖੋ" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2289 #, javascript-format msgid "Screenshot from %s" msgstr "%s ਤੋਂ ਸਕਰੀਨਸ਼ਾਟ" #. Translators: notification title. #: js/ui/screenshot.js:2335 msgid "Screenshot captured" msgstr "ਸਕਰੀਨਸ਼ਾਟ ਲਿਆ ਗਿਆ" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2337 msgid "You can paste the image from the clipboard." msgstr "ਤੁਸੀਂ ਕਲਿੱਪਬੋਰਡ ਤੋਂ ਚਿੱਤਰ ਚੇਪ ਸਕਦੇ ਹੋ।" #: js/ui/screenshot.js:2393 js/ui/screenshot.js:2557 msgid "Screenshot taken" msgstr "ਸਕਰੀਨਸ਼ਾਟ ਲਿਆ" #: js/ui/search.js:831 msgid "Searching…" msgstr "…ਖੋਜ ਜਾਰੀ ਹੈ" #: js/ui/search.js:833 msgid "No results." msgstr "ਕੋਈ ਨਤੀਜਾ ਨਹੀਂ।" #: js/ui/search.js:964 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "%d ਹੋਰ" msgstr[1] "%d ਹੋਰ" #: js/ui/searchController.js:89 #: subprojects/extensions-app/data/ui/extensions-window.ui:73 msgid "Search" msgstr "ਖੋਜ" #: js/ui/shellEntry.js:23 msgid "Copy" msgstr "ਕਾਪੀ ਕਰੋ" #: js/ui/shellEntry.js:28 msgid "Paste" msgstr "ਚੇਪੋ" #: js/ui/shellEntry.js:80 msgid "Show Text" msgstr "ਟੈਕਸਟ ਵੇਖੋ" #: js/ui/shellEntry.js:82 msgid "Hide Text" msgstr "ਟੈਕਸਟ ਓਹਲੇ" #: js/ui/shellEntry.js:176 msgid "Caps lock is on." msgstr "ਕੈਪਸ ਲਾਕ ਚਾਲੂ ਹੈ।" #: js/ui/shellMountOperation.js:288 msgid "Hidden Volume" msgstr "ਵਾਲੀਅਮ ਲੁਕਾਓ" #: js/ui/shellMountOperation.js:291 msgid "Windows System Volume" msgstr "ਵਿੰਡੋਜ਼ ਸਿਸਟਮ ਵਾਲੀਅਮ" #: js/ui/shellMountOperation.js:294 msgid "Uses Keyfiles" msgstr "ਕੁੰਜੀ-ਫਾਇਲਾਂ ਵਰਤਦਾ ਹੈ" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:302 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead." msgstr "" "ਵਾਲੀਅਮ, ਜੋ ਕਿ keyfiles ਵਰਤਦਾ ਹੈ, ਨੂੰ ਅਣ-ਲਾਕ ਕਰਨ ਲਈ %s ਸਹੂਲਤ ਨੂੰ ਵਰਤੋਂ।" #: js/ui/shellMountOperation.js:306 msgid "" "You need an external utility like Disks to unlock a volume that uses " "keyfiles." msgstr "" "ਕੀ-ਫ਼ਾਇਲਾਂ ਵਰਤਣ ਵਾਲੇ ਵਾਲੀਅਮ ਨੂੰ ਅਣ-ਲਾਕ ਕਰਨ ਲਈ ਤੁਹਾਨੂੰ ਡਿਸਕਾਂ ਵਰਗੀ ਬਾਹਰੀ" " ਸਹੂਲਤ " "ਦੀ ਲੋੜ ਹੈ।" #: js/ui/shellMountOperation.js:314 msgid "PIM Number" msgstr "PIM ਨੰਬਰ" #: js/ui/shellMountOperation.js:373 msgid "Remember Password" msgstr "ਪਾਸਵਰਡ ਯਾਦ ਰੱਖੋ" #: js/ui/shellMountOperation.js:388 msgid "Unlock" msgstr "ਅਣ-ਲਾਕ" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:402 #, javascript-format msgid "Open %s" msgstr "%s ਨੂੰ ਖੋਲ੍ਹੋ" #: js/ui/shellMountOperation.js:438 msgid "The PIM must be a number or empty." msgstr "PIM ਨੰਬਰ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ ਜਾਂ ਖਾਲੀ ਨਹੀਂ ਹੈ।" #: js/ui/status/accessibility.js:36 msgid "Accessibility" msgstr "ਅਸੈੱਸਬਿਲਟੀ" #: js/ui/status/accessibility.js:46 msgid "High Contrast" msgstr "ਵੱਧ ਕਨਟਰਾਸਟ" #: js/ui/status/accessibility.js:49 msgid "Zoom" msgstr "ਜ਼ੂਮ" #: js/ui/status/accessibility.js:56 msgid "Screen Reader" msgstr "ਸਕਰੀਨ ਰੀਡਰ" #: js/ui/status/accessibility.js:60 msgid "Screen Keyboard" msgstr "ਸਕਰੀਨ ਕੀਬੋਰਡ" #: js/ui/status/accessibility.js:64 msgid "Visual Alerts" msgstr "ਦਿੱਖ ਚੇਤਾਵਨੀ" #: js/ui/status/accessibility.js:68 msgid "Sticky Keys" msgstr "ਸਟਿੱਕੀ ਸਵਿੱਚਾਂ" #: js/ui/status/accessibility.js:72 msgid "Slow Keys" msgstr "ਹੌਲੀ ਸਵਿੱਚਾਂ" #: js/ui/status/accessibility.js:76 msgid "Bounce Keys" msgstr "ਬਾਊਂਸ ਸਵਿੱਚਾਂ" #: js/ui/status/accessibility.js:80 msgid "Mouse Keys" msgstr "ਮਾਊਸ ਸਵਿੱਚਾਂ" #: js/ui/status/accessibility.js:85 msgid "Accessibility Settings" msgstr "ਅਸੈੱਸਬਿਲਟੀ ਸੈਟਿੰਗਾਂ" #: js/ui/status/accessibility.js:142 msgid "Large Text" msgstr "ਵੱਡੇ ਅੱਖਰ" #: js/ui/status/autoRotate.js:14 msgid "Auto Rotate" msgstr "ਆਪੇ-ਘੁੰਮਾਓ" #: js/ui/status/backgroundApps.js:156 msgctxt "title" msgid "Background Apps" msgstr "ਬੈਕਗਰਾਊਂਡ ਐਪਾਂ" #: js/ui/status/backgroundApps.js:171 msgid "Apps known to be running without a window" msgstr "ਬਿਨਾਂ ਐਪ ਤੋਂ ਚੱਲ ਲਈ ਜਾਣੀਆਂ ਜਾਦੀਆਂ ਐਪਾਂ" #: js/ui/status/backgroundApps.js:182 msgid "App Settings" msgstr "ਐਪ ਸੈਟਿੰਗਾਂ" #: js/ui/status/backgroundApps.js:239 msgid "No Background Apps" msgstr "ਕੋਈ ਬੈਕਗਰਾਊਂਡ ਐਪ ਨਹੀਂ" #: js/ui/status/backgroundApps.js:241 #, javascript-format msgid "%d Background App" msgid_plural "%d Background Apps" msgstr[0] "%d ਬੈਕਗਰਾਊਂਡ ਐਪ" msgstr[1] "%d ਬੈਕਗਰਾਊਂਡ ਐਪਾਂ" #: js/ui/status/backlight.js:40 msgid "Keyboard Brightness" msgstr "ਕੀਬੋਰਡ ਚਮਕ" #: js/ui/status/backlight.js:80 msgid "Off" msgstr "ਬੰਦ" #: js/ui/status/backlight.js:81 msgid "Low" msgstr "ਘੱਟ" #: js/ui/status/backlight.js:82 msgid "High" msgstr "ਜਿਆਦਾ" #: js/ui/status/backlight.js:148 js/ui/status/keyboard.js:881 msgid "Keyboard" msgstr "ਕੀਬੋਰਡ" #: js/ui/status/bluetooth.js:246 js/ui/status/network.js:360 msgid "Disconnect" msgstr "ਡਿਸ-ਕਨੈਕਟ" #: js/ui/status/bluetooth.js:263 js/ui/status/bluetooth.js:265 msgid "Bluetooth" msgstr "ਬਲੂਟੁੱਥ" #: js/ui/status/bluetooth.js:288 js/ui/status/network.js:1900 msgid "Bluetooth Settings" msgstr "ਬਲੂਟੁੱਥ ਸੈਟਿੰਗਾਂ" #: js/ui/status/bluetooth.js:335 msgid "No available or connected devices" msgstr "ਮੌਜੂਦ ਨਹੀਂ ਜਾਂ ਡਿਵਾਈਸ ਕਨੈਕਟ ਨਹੀਂ ਹਨ" #: js/ui/status/bluetooth.js:336 msgid "Turn on Bluetooth to connect to devices" msgstr "ਡਿਵਾਈਸਾਂ ਨਾਲ ਕਨੈਕਟ ਕਰਨ ਲਈ ਬਲੂਟੁੱਥ ਸਮਰੱਥ ਕਰੋ" #. Translators: This is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:390 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d ਕਨੈਕਟ ਹੈ" msgstr[1] "%d ਕਨੈਕਟ ਹੈ" #: js/ui/status/brightness.js:34 msgid "Brightness" msgstr "ਚਮਕ" #: js/ui/status/darkMode.js:12 msgid "Dark Style" msgstr "ਗੂੜ੍ਹਾ ਸਟਾਈਲ" #: js/ui/status/dwellClick.js:15 msgid "Single Click" msgstr "ਇੱਕ ਵਾਰ ਕਲਿੱਕ" #: js/ui/status/dwellClick.js:20 msgid "Double Click" msgstr "ਡਬਲ ਕਲਿੱਕੱ" #: js/ui/status/dwellClick.js:25 msgid "Drag" msgstr "ਖਿੱਚੋ" #: js/ui/status/dwellClick.js:30 msgid "Secondary Click" msgstr "ਸੈਕੰਡਰੀ ਦੇਰੀ" #: js/ui/status/dwellClick.js:39 msgid "Dwell Click" msgstr "ਡੀਵੈੱਲ ਕਲਿੱਕ" #: js/ui/status/keyboard.js:898 msgid "Show Keyboard Layout" msgstr "ਕੀਬੋਰਡ ਲੇਆਉਟ ਵੇਖਾਓ" #: js/ui/status/location.js:339 msgid "Allow location access" msgstr "ਟਿਕਾਣੇ ਲਈ ਪਹੁੰਚ ਲਈ ਸਹਿਮਤੀ ਦਿਓ" #. Translators: %s is an application name #: js/ui/status/location.js:341 #, javascript-format msgid "The app %s wants to access your location" msgstr "ਐਪ %s ਨੂੰ ਆਪਣੇ ਟਿਕਾਣੇ ਲਈ ਪਹੁੰਚ ਚਾਹੁੰਦੀ ਹੈ" #: js/ui/status/location.js:351 msgid "Location access can be changed at any time from the privacy settings." msgstr "" "ਟਿਕਾਣਾ ਪਹੁੰਚ ਨੂੰ ਪਰਦੇਦਾਰੀ ਸੈਟਿੰਗਾਂ ਵਿੱਚੋਂ ਕਿਸੇ ਵੀ ਸਮੇਂ ਬਦਲਿਆ ਜਾ ਸਕਦਾ ਹੈ।" #: js/ui/status/location.js:359 msgid "Deny Access" msgstr "ਪਹੁੰਚ ਉੱਤ ਪਾਬੰਦੀ" #: js/ui/status/location.js:364 msgid "Grant Access" msgstr "ਪਹੁੰਚ ਲਈ ਮਨਜ਼ੂਰੀ" #: js/ui/status/network.js:62 msgid "" msgstr "<ਅਣਪਛਾਤਾ>" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:354 #, javascript-format msgid "Disconnect %s" msgstr "%s ਡਿਸ-ਕਨੈਕਟ ਕਰੋ" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:356 #, javascript-format msgid "Connect to %s" msgstr "%s ਨਾਲ ਕਨੈਕਟ ਕਰੋ" #: js/ui/status/network.js:1050 msgid "Secure" msgstr "ਸੁਰੱਖਿਅਤ" #: js/ui/status/network.js:1050 msgid "Not secure" msgstr "ਸੁਰੱਖਿਅਤ ਨਹੀਂ" #: js/ui/status/network.js:1051 #, javascript-format msgid "Signal strength %s%%" msgstr "ਸਿਗਨਲ ਮਜ਼ਬੂਤੀ %s%%" #. translators: The first placeholder is the network name, the second and indication whether it is secure, and the last the signal strength indication #: js/ui/status/network.js:1053 #, javascript-format msgid "%s, %s, %s" msgstr "%s, %s, %s" #. Translators: %s is a network identifier #: js/ui/status/network.js:1155 #, javascript-format msgid "%s Hotspot" msgstr "%s ਹਾਟਸਪਾਟ" #: js/ui/status/network.js:1426 #, javascript-format msgid "%d connected" msgid_plural "%d connected" msgstr[0] "%d ਕਨੈਕਟ ਹੈ" msgstr[1] "%d ਕਨੈਕਟ ਹਨ" #: js/ui/status/network.js:1524 js/ui/status/network.js:1540 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1525 msgid "VPN Settings" msgstr "VPN ਸੈਟਿੰਗਾਂ" #: js/ui/status/network.js:1785 msgid "Wi–Fi" msgstr "Wi–Fi" #: js/ui/status/network.js:1787 msgid "All Networks" msgstr "ਸਭ ਨੈੱਟਵਰਕ" #: js/ui/status/network.js:1884 msgid "Wired Connections" msgstr "ਤਾਰ ਵਾਲੇ ਕਨੈਕਸ਼ਨ" #: js/ui/status/network.js:1885 msgid "Wired Settings" msgstr "ਤਾਰ ਵਾਲੇ ਲਈ ਸੈਟਿੰਗਾਂ" #: js/ui/status/network.js:1899 msgid "Bluetooth Tethers" msgstr "ਬਲੂਟੁੱਥ ਟੀਥਰ" #. Translators: "Tether" from "Bluetooth Tether" #: js/ui/status/network.js:1906 msgid "Tether" msgstr "ਟੀਥਰ" #: js/ui/status/network.js:1919 msgid "Mobile Connections" msgstr "ਮੋਬਾਇਲ ਕਨੈਕਸ਼ਨ" #: js/ui/status/network.js:1921 msgid "Mobile Broadband Settings" msgstr "ਮੋਬਾਇਲ ਬਰਾਡਬੈਂਡ ਸੈਟਿੰਗਾਂ" #. Translators: "Mobile" from "Mobile Broadband" #: js/ui/status/network.js:1930 msgid "Mobile" msgstr "ਮੋਬਾਈਲ" #: js/ui/status/network.js:2035 msgid "Connection failed" msgstr "ਕਨੈਕਸ਼ਨ ਫੇਲ੍ਹ ਹੈ" #: js/ui/status/network.js:2036 msgid "Activation of network connection failed" msgstr "ਨੈੱਟਵਰਕ ਕਨੈਕਸ਼ਨ ਦੀ ਐਕਟੀਵੇਸ਼ਨ ਫੇਲ੍ਹ ਹੋਈ" #: js/ui/status/nightLight.js:21 msgid "Night Light" msgstr "ਰਾਤ ਲਈ ਰੋਸ਼ਨੀ" #: js/ui/status/powerProfiles.js:21 msgctxt "Power profile" msgid "Performance" msgstr "ਕਾਰਗੁਜ਼ਾਰੀ" #: js/ui/status/powerProfiles.js:26 msgctxt "Power profile" msgid "Balanced" msgstr "ਸੰਤੁਲਤ" #: js/ui/status/powerProfiles.js:31 msgctxt "Power profile" msgid "Power Saver" msgstr "ਪਾਵਰ ਬੱਚਤ" #: js/ui/status/powerProfiles.js:41 js/ui/status/powerProfiles.js:71 msgid "Power Mode" msgstr "ਪਾਵਰ ਢੰਗ" #: js/ui/status/powerProfiles.js:73 msgid "Power Settings" msgstr "ਪਾਵਰ ਸੈਟਿੰਗਾਂ" #: js/ui/status/remoteAccess.js:76 msgid "Stop Screencast" msgstr "ਸਕਰੀਨਕਾਸਟ ਰੋਕੋ" #: js/ui/status/remoteAccess.js:146 msgid "Stop Screen Sharing" msgstr "ਸਕਰੀਨ ਸਾਂਝਾ ਕਰਨਾ ਰੋਕੋ" #: js/ui/status/rfkill.js:101 msgid "Airplane Mode" msgstr "ਏਅਰਪਲੇਨ ਮੋਡ" #: js/ui/status/system.js:170 msgid "Power Off Menu" msgstr "ਬੰਦ ਕਰਨ ਮੇਨੂ" #: js/ui/status/system.js:178 msgid "Suspend" msgstr "ਸਸਪੈਂਡ" #: js/ui/status/system.js:183 msgid "Restart…" msgstr "...ਮੁੜ-ਚਾਲੂ ਕਰੋ" #: js/ui/status/system.js:188 msgid "Power Off…" msgstr "…ਬੰਦ ਕਰੋ" #: js/ui/status/system.js:195 #: subprojects/extensions-app/data/ui/extensions-window.ui:124 msgid "Log Out…" msgstr "ਲਾਗ ਆਉਟ…" #: js/ui/status/system.js:200 msgid "Switch User…" msgstr "…ਵਰਤੋਂਂਕਾਰ ਬਦਲੋ" #: js/ui/status/system.js:244 msgctxt "action" msgid "Lock Screen" msgstr "ਸਕਰੀਨ ਲਾਕ" #: js/ui/status/thunderbolt.js:310 msgid "Unknown Thunderbolt device" msgstr "ਅਣਪਛਾਤਾ ਥੰਡਰਬੋਲਟ ਡਿਵਾਈਸ" #: js/ui/status/thunderbolt.js:311 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" "ਜਦੋਂ ਤੁਸੀਂ ਦੂਰ ਸੀ ਤਾਂ ਨਵਾਂ ਡਿਵਾਈਸ ਖੋਜਿਆ ਗਿਆ ਹੈ। ਡਿਵਾਈਸ ਨੂੰ ਵਰਤਣਾ ਸ਼ੁਰੂ ਕਰਨ ਲਈ" " ਇਸ ਨੂੰ ਡਿਸ-" "ਕਨੈਕਟ ਕਰਕੇ ਮੁੜ ਕਨੈਕਟ ਕਰੋ।" #: js/ui/status/thunderbolt.js:314 msgid "Unauthorized Thunderbolt device" msgstr "ਨਾ-ਪ੍ਰਮਾਣਿਤ ਕੀਤਾ ਥੰਡਰਬੋਲਟ ਯੰਤਰ" #: js/ui/status/thunderbolt.js:315 msgid "" "New device has been detected and needs to be authorized by an administrator." msgstr "" "ਨਵਾਂ ਡਿਵਾਈਸ ਖੋਜਿਆ ਜਾ ਚੁੱਕਿਆ ਗਿਆ ਹੈ ਅਤੇ ਪਰਸ਼ਾਸ਼ਕ ਵਲੋਂ ਪਰਮਾਣਿਤ ਕਰਨ ਦੀ ਲੋੜ ਹੁੰਦੀ" " ਹੈ।" #: js/ui/status/thunderbolt.js:321 msgid "Thunderbolt authorization error" msgstr "ਥੰਡਰਬੋਲਟ ਪਰਮਾਣਕਿਤਾ ਗ਼ਲਤੀ" #: js/ui/status/thunderbolt.js:322 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "ਥੰਡਰਬੋਲਟ ਡਿਵਾਈਸ ਨੂੰ ਪਰਮਾਣਿਤ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ: %s" #: js/ui/status/volume.js:220 msgid "Volume changed" msgstr "ਵਾਲੀਅਮ ਬਦਲਿਆ ਗਿਆ" #: js/ui/status/volume.js:233 msgid "Unmute" msgstr "ਸੁਣਾਓ" #: js/ui/status/volume.js:233 msgid "Mute" msgstr "ਚੁੱਪ" #: js/ui/status/volume.js:288 msgid "Volume" msgstr "ਵਾਲੀਅਮ" #: js/ui/status/volume.js:304 msgid "Sound Output" msgstr "ਆਵਾਜ਼ ਆਉਟਪੁੱਟ" #: js/ui/status/volume.js:376 msgid "Sound Input" msgstr "ਆਵਾਜ਼ ਇਨਪੁੱਟ" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:22 msgid "Mirror" msgstr "ਮਿੱਰਰ" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:31 msgid "Join Displays" msgstr "ਡਿਸਪਲੇਆਂ ਨੂੰ ਜੋੜੋ" #. Translators: this is for using only external displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:41 msgid "External Only" msgstr "ਕੇਵਲ ਬਾਹਰੀ" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:49 msgid "Built-in Only" msgstr "ਕੇਵਲ ਬਿਲਟ-ਇਨ" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:374 msgid "%A %B %-d" msgstr "%A, %-d %B" #: js/ui/unlockDialog.js:380 msgid "Swipe up to unlock" msgstr "ਅਣ-ਲਾਕ ਕਰਨ ਲਈ ਉੱਤੇ ਵੱਲ ਸਰਕਾਓ" #: js/ui/unlockDialog.js:381 msgid "Click or press a key to unlock" msgstr "ਅਣ-ਲਾਕ ਕਰਨ ਲਈ ਸਵਿੱਚ ਕਲਿੱਕ ਕਰੋ ਜਾਂ ਦਬਾਓ" #: js/ui/unlockDialog.js:564 msgid "Unlock Window" msgstr "ਵਿੰਡੋ ਨੂੰ ਅਣਲਾਕ ਕਰੋ" #: js/ui/unlockDialog.js:573 msgid "Log in as another user" msgstr "ਹੋਰ ਵਰਤੋਂਕਾਰ ਵਜੋਂ ਲਾਗਇਨ" #: js/ui/welcomeDialog.js:49 #, javascript-format msgid "GNOME %s" msgstr "ਗਨੋਮ %s" #: js/ui/welcomeDialog.js:53 #, javascript-format msgid "Welcome to %s" msgstr "%s ਲਈ ਜੀ ਆਇਆਂ ਨੂੰ" #: js/ui/welcomeDialog.js:54 msgid "If you want to learn your way around, check out the tour." msgstr "ਜੇ ਤੁਸੀਂ ਕੁਝ ਜਾਣਕਾਰੀ ਹਾਸਲ ਕਰਨੀ ਚਾਹੁੰਦੇ ਹੋ ਤਾਂ ਟੂਰ ਲਵੋ।" #: js/ui/welcomeDialog.js:63 msgid "Skip" msgstr "ਛੱਡੋ" #: js/ui/welcomeDialog.js:68 msgid "Take Tour" msgstr "ਟੂਰ ਲਵੋ" #: js/ui/windowAttentionHandler.js:20 #, javascript-format msgid "“%s” is ready" msgstr "“%s” ਤਿਆਰ ਹੈ" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:69 msgid "Keep these display settings?" msgstr "ਇਹ ਡਿਸਪਲੇਅ ਸੈਟਿੰਗਾਂ ਰੱਖਣੀਆਂ ਚਾਹੁੰਦੇ ਹੋ?" #: js/ui/windowManager.js:79 msgid "Revert Settings" msgstr "ਸੈਟਿੰਗਾਂ ਵਾਪਿਸ ਲਵੋ" #: js/ui/windowManager.js:84 msgid "Keep Changes" msgstr "ਬਦਲਾਅ ਲਾਗੂ ਰੱਖੋ" #: js/ui/windowManager.js:104 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "ਸੈਟਿੰਗਾਂ ਬਦਲਾਅ ਨੂੰ %d ਸਕਿੰਟ ਵਿੱਚ ਵਾਪਿਸ ਕੀਤਾ ਜਾਵੇਗਾ" msgstr[1] "ਸੈਟਿੰਗਾਂ ਬਦਲਾਅ ਨੂੰ %d ਸਕਿੰਟਾਂ ਵਿੱਚ ਵਾਪਿਸ ਕੀਤਾ ਜਾਵੇਗਾ" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:496 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:42 msgid "Hide" msgstr "ਲੁਕਾਓ" #: js/ui/windowMenu.js:49 msgid "Restore" msgstr "ਬਹਾਲ ਕਰੋ" #: js/ui/windowMenu.js:53 msgid "Maximize" msgstr "ਵੱਧੋ-ਵੱਧ" #: js/ui/windowMenu.js:60 msgid "Move" msgstr "ਭੇਜੋ" #: js/ui/windowMenu.js:80 msgid "Resize" msgstr "ਮੁੜ-ਆਕਾਰ" #: js/ui/windowMenu.js:101 msgid "Move Titlebar Onscreen" msgstr "ਟਾਈਟਲ-ਪੱਟੀ ਆਨ-ਸਕਰੀਨ ਹਿਲਾਓ" #: js/ui/windowMenu.js:106 msgid "Always on Top" msgstr "ਹਮੇਸ਼ਾ ਉੱਤੇ ਰੱਖੋ" #: js/ui/windowMenu.js:125 msgid "Always on Visible Workspace" msgstr "ਹਮੇਸ਼ਾ ਵਿਖਾਈ ਦਿੰਦੇ ਵਰਕਸਪੇਸ ਉੱਤੇ" #: js/ui/windowMenu.js:139 msgid "Move to Workspace Left" msgstr "ਖੱਬੇ ਵਰਕਸਪੇਸ ਵਿੱਚ ਭੇਜੋ" #: js/ui/windowMenu.js:145 msgid "Move to Workspace Right" msgstr "ਸੱਜੇ ਵਰਕਸਪੇਸ ਵਿੱਚ ਭੇਜੋ" #: js/ui/windowMenu.js:151 msgid "Move to Workspace Up" msgstr "ਉੱਤਲੇ ਵਰਕਸਪੇਸ ਵਿੱਚ ਭੇਜੋ" #: js/ui/windowMenu.js:157 msgid "Move to Workspace Down" msgstr "ਹੇਠਲੇ ਵਰਕਸਪੇਸ ਵਿੱਚ ਭੇਜੋ" #: js/ui/windowMenu.js:175 msgid "Move to Monitor Up" msgstr "ਉੱਤਲੇ ਮਾਨੀਟਰ ਵਿੱਚ ਭੇਜੋ" #: js/ui/windowMenu.js:184 msgid "Move to Monitor Down" msgstr "ਹੇਠਲੇ ਮਾਨੀਟਰ ਵਿੱਚ ਭੇਜੋ" #: js/ui/windowMenu.js:193 msgid "Move to Monitor Left" msgstr "ਖੱਬੇ ਮਾਨੀਟਰ ਵਿੱਚ ਭੇਜੋ" #: js/ui/windowMenu.js:202 msgid "Move to Monitor Right" msgstr "ਸੱਜੇ ਮਾਨੀਟਰ ਵਿੱਚ ਭੇਜੋ" #: js/ui/windowMenu.js:210 msgid "Close" msgstr "ਬੰਦ ਕਰੋ" #: src/main.c:529 subprojects/extensions-tool/src/main.c:336 msgid "Print version" msgstr "ਵਰਜ਼ਨ ਛਾਪੋ" #: src/main.c:535 msgid "Mode used by GDM for login screen" msgstr "ਲਾਗਇਨ ਸਕਰੀਨ ਲਈ GDM ਵਲੋਂ ਵਰਤਿਆ ਮੋਡ" #: src/main.c:541 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "ਲਾਗਇਨ ਸਕਰੀਨ ਉੱਤੇ ਖਾਸ ਮੋਡ ਜਿਵੇਂ ਕਿ “gdm“ ਵਰਤੋਂ" #: src/main.c:547 msgid "List possible modes" msgstr "ਸੰਭਵ ਮੋਡ ਵੇਖਾਓ" #: src/main.c:553 msgid "Force animations to be enabled" msgstr "ਐਨੀਮੇਸ਼ਨਾਂ ਨੂੰ ਸਮਰੱਥ ਕਰਨ ਲਈ ਮਜ਼ਬੂਰ ਕਰੋ" #: src/shell-app.c:253 msgctxt "program" msgid "Unknown" msgstr "ਅਣਪਛਾਤਾ" #: src/shell-app.c:504 #, c-format msgid "Failed to launch “%s”" msgstr "“%s” ਚਲਾਉਣ ਲਈ ਫੇਲ੍ਹ" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match." msgstr "ਪਾਸਵਰਡ ਮਿਲਦੇ ਨਹੀਂ ਹਨ।" #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "ਪਾਸਵਰਡ ਖਾਲੀ ਨਹੀਂ ਹੋ ਸਕਦਾ ਹੈ" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "ਪਰਮਾਣਕਿਤਾ ਡਾਈਲਾਗ ਵਰਤੋਂਂਕਾਰ ਵਲੋਂ ਰੱਦ ਕੀਤਾ" #: src/st/st-icon-theme.c:1865 #, c-format msgid "Icon '%s' not present in theme %s" msgstr "ਆਈਕਾਨ '%s' ਥੀਮ %s ਵਿੱਚ ਮੌਜੂਦ ਨਹੀਂ ਹੈ" #: src/st/st-icon-theme.c:3454 src/st/st-icon-theme.c:3757 msgid "Failed to load icon" msgstr "ਆਈਕਾਨ ਲੋਡ ਕਰਨ ਲਈ ਅਸਮਰੱਥ" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 msgid "Manage your GNOME Extensions" msgstr "ਗਨੋਮ ਇਕਸਟੈਸ਼ਨਾਂ ਦਾ ਇੰਤਜ਼ਾਮ ਕਰੋ" #. developer_name tag deprecated with Appstream 1.0 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:19 msgid "The GNOME Project" msgstr "ਗਨੋਮ ਪਰੋਜੈਕਟ" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:51 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" "ਗਨੋਮ ਇਕਸਟੈਨਸ਼ਨਾਂ ਇਕਸਟੈਨਸ਼ਨਾਂ ਨੂੰ ਅੱਪਡੇਟ ਕਰਨ, ਇਕਸਟੈਨਸ਼ਨ ਪਸੰਦਾਂ ਦੀ ਸੰਰਚਨਾ ਕਰਨ ਅਤੇ" " ਬੇਲੋੜੀਆਂ " "ਇਕਸਟੈਨਸ਼ਨਾਂ ਹਟਾਉਣ ਜਾਂ ਅਸਮਰੱਥ ਕਰਨ ਦੇ ਕੰਮ ਆਉਂਦੀਆਂ ਹਨ।" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:70 msgid "Main Window" msgstr "ਮੁੱਖ ਵਿੰਡੋ" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:74 msgid "Available Updates" msgstr "ਅੱਪਡੇਟ ਮੌਜੂਦ ਹਨ" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:78 msgid "Search View" msgstr "ਖੋਜ ਝਲਕ" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "ਗਨੋਮ ਸ਼ੈਲ ਇਕਸਟੈਸ਼ਨਾਂ ਦੀ ਸੰਰਚਨਾ" #: subprojects/extensions-app/js/extensionManager.js:237 #, javascript-format msgid "" "The installed version of this extension (%s) is incompatible with the " "current version of GNOME (%s). The extension has been disabled." msgstr "" "ਇਕਸਟੈਨਸ਼ਨ ਦਾ ਇੰਸਟਾਲ ਕੀਤਾ ਵਰਜ਼ਨ (%s) ਮੌਜੂਦਾ ਗਨੋਮ ਵਰਜ਼ਨ (%s) ਨਾਲ ਅਨੁਕੂਲ ਨਹੀਂ ਹੈ।" " ਇਕਸਟੈਨਸ਼ਨ ਨੂੰ " "ਅਸਮਰੱਥ ਕੀਤਾ ਹੈ।" #: subprojects/extensions-app/js/extensionManager.js:238 #, javascript-format msgid "" "The installed version of this extension is incompatible with the current " "version of GNOME (%s). The extension has been disabled." msgstr "" "ਇਕਸਟੈਨਸ਼ਨ ਦਾ ਇੰਸਟਾਲ ਕੀਤਾ ਵਰਜ਼ਨ ਮੌਜੂਦਾ ਗਨੋਮ ਵਰਜ਼ਨ (%s) ਨਾਲ ਅਨੁਕੂਲ ਨਹੀਂ ਹੈ।" " ਇਕਸਟੈਨਸ਼ਨ ਨੂੰ " "ਅਸਮਰੱਥ ਕੀਤਾ ਹੈ।" #: subprojects/extensions-app/js/extensionManager.js:242 msgid "" "An error has occurred in this extension. This could cause issues elsewhere " "in the system. It is recommended to turn the extension off until the error " "is resolved." msgstr "" "ਇਸ ਇਕਸਟੈਨਸ਼ਨ ਵਿੱਚ ਗਲਤੀ ਆਈ ਹੈ। ਇਹ ਸਿਸਟਮ ਵਿੱਚ ਕਿਤੇ ਹੋਰ ਮਸਲਾ ਹੋ ਸਕਦਾ ਹੈ। ਗਲਤੀ ਠੀਕ" " ਹੋਣ ਤੱਕ " "ਇਕਸਟੈਨਸ਼ਨ ਨੂੰ ਬੰਦ ਰੱਖਣ ਦੀ ਸਿਫ਼ਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ।" #. translators: Details for an extension error #: subprojects/extensions-app/js/extensionManager.js:248 msgid "Error details:" msgstr "ਗਲਤੀ ਦੇ ਵੇਰਵੇ:" #: subprojects/extensions-app/js/extensionRow.js:82 #, javascript-format msgid "Version %s" msgstr "ਵਰਜ਼ਨ %s" #: subprojects/extensions-app/js/extensionsWindow.js:113 #, javascript-format msgid "Remove “%s”?" msgstr "“%s” ਨੂੰ ਹਟਾਉਣਾ ਹੈ?" #: subprojects/extensions-app/js/extensionsWindow.js:114 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "" "ਜੇ ਤੁਸੀਂ ਇਕਟੈਨਸ਼ਨ ਹਟਾਈ ਤਾਂ ਜੇ ਤੁਹਾਨੂੰ ਮੁੜ ਇਹ ਸਮਰੱਥ ਕਰਨਾ ਦੀ ਲੋੜ ਹੋਈ ਤਾਂ ਤੁਹਾਨੂੰ" " ਇਹ ਦੁਬਾਰਾ ਡਾਊਨਲੋਡ " "ਕਰਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ" #: subprojects/extensions-app/js/extensionsWindow.js:117 msgid "_Cancel" msgstr "ਰੱਦ ਕਰੋ(_C)" #: subprojects/extensions-app/js/extensionsWindow.js:118 msgid "_Remove" msgstr "ਹਟਾਓ(_R)" #: subprojects/extensions-app/js/extensionsWindow.js:158 msgid "translator-credits" msgstr "" "ਅ ਸ ਆਲਮ (A S Alam) ੨੦੦੪-੨੦੨੪\n" "Punjabi OpenSource Team (POST) www.punlinux.org" #: subprojects/extensions-app/js/extensionsWindow.js:203 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "%d ਇਕਟੈਨਸ਼ਨ ਨੂੰ ਅਗਲੇ ਲਾਗਇਨ ਉੱਤੇ ਅੱਪਡੇਟ ਕੀਤਾ ਜਾਵੇਗਾ।" msgstr[1] "%d ਇਕਟੈਨਸ਼ਨਾਂ ਨੂੰ ਅਗਲੇ ਲਾਗਇਨ ਉੱਤੇ ਅੱਪਡੇਟ ਕੀਤਾ ਜਾਵੇਗਾ।" #: subprojects/extensions-app/data/ui/extension-row.ui:21 msgid "Error Details" msgstr "ਗਲਤੀ ਦੇ ਵੇਰਵੇ" #: subprojects/extensions-app/data/ui/extension-row.ui:61 msgid "Updates Details" msgstr "ਅੱਪਡੇਟ ਦੇ ਵੇਰਵੇ" #: subprojects/extensions-app/data/ui/extension-row.ui:71 msgid "" "A new version of this extension is ready and will be loaded on next login." msgstr "ਇਕਟੈਨਸ਼ਨ ਦਾ ਨਵਾਂ ਵਰਜ਼ਨ ਮੌਜੂਦ ਹੈ ਅਤੇ ਅਗਲੇ ਲਾਗਇਨ ਉੱਤੇ ਲੋਡ ਕੀਤਾ ਜਾਵੇਗਾ।" #: subprojects/extensions-app/data/ui/extension-row.ui:107 msgid "Extension Details" msgstr "ਇਕਸਟੈਨਸ਼ਨ ਦੇ ਵੇਰਵੇ" #: subprojects/extensions-app/data/ui/extension-row.ui:193 msgid "_Website" msgstr "ਵੈੱਬਸਾਈਟ(_W)" #: subprojects/extensions-app/data/ui/extension-row.ui:220 msgid "_Settings" msgstr "ਸੈਟਿੰਗਾਂ(_S)" #: subprojects/extensions-app/data/ui/extension-row.ui:247 msgid "_Remove…" msgstr "…ਨੂੰ ਹਟਾਓ(_R)" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Keyboard Shortcuts" msgstr "ਕੀਬੋਰਡ ਸ਼ਾਰਟਕਟ" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "ਇਕਸਟੈਨਸ਼ਨਾਂ ਬਾਰੇ" #: subprojects/extensions-app/data/ui/extensions-window.ui:64 msgid "Main Menu" msgstr "ਮੁੱਖ ਮੇਨੂ" #: subprojects/extensions-app/data/ui/extensions-window.ui:106 msgid "Search extensions" msgstr "ਇਕਸਟੈਨਸ਼ਨਾਂ ਦੀ ਖੋਜ" #: subprojects/extensions-app/data/ui/extensions-window.ui:134 msgid "_Extensions" msgstr "ਇਕਸਟੈਨਸ਼ਨਾਂ(_E)" #: subprojects/extensions-app/data/ui/extensions-window.ui:143 msgid "More Information" msgstr "ਹੋਰ ਜਾਣਕਾਰੀ" #: subprojects/extensions-app/data/ui/extensions-window.ui:153 msgid "" "Extensions can cause performance and stability issues. It is recommended to " "disable all extensions if you experience problems with your system." msgstr "" "ਇਕਸਟੈਨਸ਼ਨਾਂ ਕਾਰਗੁਜ਼ਾਰੀ ਅਤੇ ਸਥਿਰਤਾਂ ਮਸਲੇ ਖੜ੍ਹੇ ਕਰ ਸਕਦੀਆਂ ਹਨ। ਜੇ ਤੁਹਾਨੂੰ ਆਪਣੇ" " ਸਿਸਟਮ ਨਾਲ " "ਸਮੱਸਿਆਵਾਂ ਆ ਰਹੀਆਂ ਹੋਣ ਤਾਂ ਸਾਰੀਆਂ ਇਕਸਟੈਨਸ਼ਨਾਂ ਨੂੰ ਅਸਮਰੱਥ ਕਰਨ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ" " ਜਾਂਦੀ ਹੈ।" #: subprojects/extensions-app/data/ui/extensions-window.ui:180 msgid "User Extensions" msgstr "ਵਰਤੋਂਕਾਰ ਦੀਆਂ ਇਕਸਟੈਨਸ਼ਨਾਂ" #: subprojects/extensions-app/data/ui/extensions-window.ui:200 msgid "System Extensions" msgstr "ਸਿਸਟਮ ਦੀਆਂ ਇਕਸਟੈਨਸ਼ਨਾਂ" #: subprojects/extensions-app/data/ui/extensions-window.ui:235 msgid "Search Results" msgstr "ਖੋਜ ਨਤੀਜੇ" #: subprojects/extensions-app/data/ui/extensions-window.ui:254 msgid "No Results Found" msgstr "ਕੋਈ ਨਤੀਜਾ ਨਹੀਂ ਲੱਭਾ" #: subprojects/extensions-app/data/ui/extensions-window.ui:255 msgid "Try a different search." msgstr "ਵੱਖਰੀ ਖੋਜ ਨਾਲ ਕੋਸ਼ਿਸ਼ ਕਰੋ।" #: subprojects/extensions-app/data/ui/extensions-window.ui:266 msgid "No Installed Extensions" msgstr "ਕੋਈ ਇੰਸਟਾਲ ਕੀਤੀ ਇਕਟੈਨਸ਼ਨ ਨਹੀਂ ਹੈ" #: subprojects/extensions-app/data/ui/extensions-window.ui:267 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" "ਇਕਸਟੈਨਸ਼ਨ ਲੱਭਣ ਅਤੇ ਜੋੜਨ ਲਈ extensions." "gnome.org ਨੂੰ ਵੇਖੋ।" #: subprojects/extensions-app/data/ui/extensions-window.ui:278 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" "ਸਾਨੂੰ ਬਹੁਤ ਅਫ਼ਸੋਸ ਹੈ, ਪਰ ਇੰਸਟਾਲ ਹੋਈਆਂ ਇਕਸਟੈਨਸ਼ਨਾਂ ਦੀ ਸੂਚੀ ਲੈਣਾ ਸੰਭਵ ਨਹੀਂ ਹੈ।" " ਯਕੀਨੀ ਬਣਾਓ ਕਿ " "ਤੁਸੀਂ ਗਨੋਮ ਵਿੱਚ ਲਾਗਇਨ ਕੀਤਾ ਹੈ ਅਤੇ ਮੁੜ ਕੋਸ਼ਿਸ਼ ਕਰੋ।" #: subprojects/extensions-app/data/ui/help-overlay.ui:9 msgctxt "shortcut window" msgid "General" msgstr "ਆਮ" #: subprojects/extensions-app/data/ui/help-overlay.ui:12 msgctxt "shortcut window" msgid "Open Menu" msgstr "ਮੇਨੂ ਖੋਲ੍ਹੋ" #: subprojects/extensions-app/data/ui/help-overlay.ui:18 msgctxt "shortcut window" msgid "Toggle Search" msgstr "ਖੋਜ ਨੂੰ ਬਦਲੋ" #: subprojects/extensions-app/data/ui/help-overlay.ui:24 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "ਸ਼ਾਰਟਕੱਟ ਵੇਖਾਓ" #: subprojects/extensions-app/data/ui/help-overlay.ui:30 msgctxt "shortcut window" msgid "Quit" msgstr "ਬਾਹਰ" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:284 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "ਨਵੀਂ ਇਕਸਟੈਨਸ਼ਨ %s ਵਿੱਚ ਕਾਮਯਾਬੀ ਨਾਲ ਬਣਾਈ ਗਈ ਸੀ।\n" #: subprojects/extensions-tool/src/command-create.c:376 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" "ਨਾਂ ਬਹੁਤ ਛੋਟੀ ਸਤਰ (ਸਹੀ ਵਰਣਨਾਤਮਿਕ) ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ।\n" "ਮਿਸਾਲ ਵਜੋਂ: %s" #: subprojects/extensions-tool/src/command-create.c:382 #: subprojects/extensions-tool/src/main.c:243 msgid "Name" msgstr "ਨਾਂ" #: subprojects/extensions-tool/src/command-create.c:396 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" "ਤੁਹਾਡੀ ਇਕਟੈਨਸ਼ਨ ਕੀ ਕਰਦੀ ਹੈ, ਉਸ ਬਾਰੇ ਇੱਕ ਲਾਈਨ ਵਿੱਚ ਜਾਣਕਾਰੀ ਹੈ।\n" "ਮਿਸਾਲ ਵਜੋਂ: %s" #: subprojects/extensions-tool/src/command-create.c:402 #: subprojects/extensions-tool/src/main.c:246 msgid "Description" msgstr "ਵਰਣਨ" #: subprojects/extensions-tool/src/command-create.c:416 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" "UUID ਤੁਹਾਡੀ ਇਕਟੈਨਸ਼ਨ ਲਈ ਪੂਰੇ ਸਿਸਟਮ ਲਈ ਵਿਲੱਖਣ ਪਛਾਣਕਰਤਾ ਹੈ।\n" "ਇਹ ਈਮੇਲ ਸਿਰਨਾਵੇਂ(clicktofocus@janedoe.example.com) ਦੇ ਰੂਪ ਵਿੱਚ ਹੋਣਾ ਚਾਹੀਦਾ" " ਹੈ।\n" #: subprojects/extensions-tool/src/command-create.c:443 msgid "Choose one of the available templates:\n" msgstr "ਮੌਜੂਦਾ ਟੈਂਪਲੇਟ ਵਿੱਚੋਂ ਇੱਕ ਚੁਣੋ:\n" #: subprojects/extensions-tool/src/command-create.c:457 msgid "Template" msgstr "ਟੈਂਪਲੇਟ" #: subprojects/extensions-tool/src/command-create.c:515 msgid "The unique identifier of the new extension" msgstr "ਨਵੀਂ ਇਕਟੈਨਸ਼ਨ ਲਈ ਵਿੱਲਖਣ ਪਛਾਣਕਰਤਾ" #: subprojects/extensions-tool/src/command-create.c:518 msgid "NAME" msgstr "ਨਾਂ" #: subprojects/extensions-tool/src/command-create.c:519 msgid "The user-visible name of the new extension" msgstr "ਨਵੀਂ ਇਕਟੈਨਸ਼ਨ ਦਾ ਵਰਤੋਂਕਾਰ ਨੂੰ ਦਿਸਣ ਵਾਲਾ ਨਾਂ" #: subprojects/extensions-tool/src/command-create.c:521 msgid "DESCRIPTION" msgstr "ਵਰਣਨ" #: subprojects/extensions-tool/src/command-create.c:523 msgid "A short description of what the extension does" msgstr "ਛੋਟਾ ਵਰਣਨ ਕਿ ਇਕਸਟੈਨਸ਼ਨ ਕੀ ਕਰਦੀ ਹੈ" #: subprojects/extensions-tool/src/command-create.c:525 #: subprojects/extensions-tool/src/command-pack.c:455 msgid "DOMAIN" msgstr "ਡੋਮੇਨ" #: subprojects/extensions-tool/src/command-create.c:527 msgid "The gettext domain used by the extension" msgstr "ਇਕਸਟੈਨਸ਼ਨ ਵਲੋਂ ਵਰਤੀ ਜਾਂਦੀ gettext ਡੋਮੇਨ" #: subprojects/extensions-tool/src/command-create.c:529 #: subprojects/extensions-tool/src/command-pack.c:448 msgid "SCHEMA" msgstr "ਸਕੀਮਾ" #: subprojects/extensions-tool/src/command-create.c:531 msgid "The GSettings schema used by the extension" msgstr "ਇਕਟੈਨਸ਼ਨ ਵਲੋਂ ਵਰਤਿਆ ਜਾਂਦਾ GSettings ਸਕੀਮਾ" #: subprojects/extensions-tool/src/command-create.c:534 msgid "TEMPLATE" msgstr "ਟੈਂਪਲੇਟ" #: subprojects/extensions-tool/src/command-create.c:535 msgid "The template to use for the new extension" msgstr "ਨਵੀਂ ਇਕਟੈਨਸ਼ਨ ਲਈ ਵਰਤਣ ਲਈ ਟੈਂਪਲੇਟ" #: subprojects/extensions-tool/src/command-create.c:538 msgid "Include prefs.js template" msgstr "prefs.js ਟੈਂਪਲੇਟ ਸਮੇਤ" #: subprojects/extensions-tool/src/command-create.c:544 msgid "Enter extension information interactively" msgstr "ਇਕਟੈਨਸ਼ਨ ਜਾਣਕਾਰੀ ਤਾਲਮੇਲ ਦਿਓ" #: subprojects/extensions-tool/src/command-create.c:552 msgid "Create a new extension" msgstr "ਨਵੀਂ ਇਕਸਟੈਨਸ਼ਨ ਬਣਾਓ" #: subprojects/extensions-tool/src/command-create.c:570 #: subprojects/extensions-tool/src/command-list.c:190 msgid "Unknown arguments" msgstr "ਅਣਪਛਾਤਾ ਆਰਗੂਮੈਂਟ" #: subprojects/extensions-tool/src/command-create.c:595 msgid "UUID, name and description are required" msgstr "UUID, ਨਾਂ ਅਤੇ ਵਰਣਨ ਚਾਹੀਦਾ ਹੈ" #: subprojects/extensions-tool/src/command-disable.c:62 #: subprojects/extensions-tool/src/command-enable.c:62 #, c-format msgid "Extension “%s” does not exist\n" msgstr "ਇਕਟੈਨਸ਼ਨ “%s” ਮੌਜੂਦ ਨਹੀਂ ਹੈ\n" #: subprojects/extensions-tool/src/command-disable.c:98 msgid "Disable an extension" msgstr "ਇਕਸਟੈਨਸ਼ਨ ਅਸਮਰੱਥ ਕਰੋ" #: subprojects/extensions-tool/src/command-disable.c:116 #: subprojects/extensions-tool/src/command-enable.c:116 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "ਕੋਈ UUID ਨਹੀਂ ਦਿੱਤਾ" #: subprojects/extensions-tool/src/command-disable.c:121 #: subprojects/extensions-tool/src/command-enable.c:121 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "ਇੱਕ ਤੋਂ ਵੱਧ UUID ਦਿੱਤਾ" #: subprojects/extensions-tool/src/command-enable.c:98 msgid "Enable an extension" msgstr "ਇਕਸਟੈਨਸ਼ਨ ਸਮਰੱਥ ਕਰੋ" #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:66 #: subprojects/extensions-tool/src/main.c:150 msgid "Failed to connect to GNOME Shell\n" msgstr "ਗਨੋਮ ਸ਼ੈੱਲ ਨਾਲ ਕਨੈਕਟ ਕਰਨ ਲਈ ਅਸਫ਼ਲ ਹੈ\n" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:159 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "ਇਕਟੈਨਸ਼ਨ “%s” ਮੌਜੂਦ ਨਹੀਂ ਹੈ\n" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "ਇਕਸਟੈਨਸ਼ਨ ਜਾਣਕਾਰੀ ਵੇਖਾਓ" #: subprojects/extensions-tool/src/command-install.c:190 msgid "Overwrite an existing extension" msgstr "ਮੌਜੂਦਾ ਇਕਟੈਨਸ਼ਨ ਉੱਤੇ ਲਿਖੋ" #: subprojects/extensions-tool/src/command-install.c:192 msgid "EXTENSION_BUNDLE" msgstr "EXTENSION_BUNDLE" #: subprojects/extensions-tool/src/command-install.c:201 msgid "Install an extension bundle" msgstr "ਇਕਟੈਨਸ਼ਨ ਬੰਡਲ ਇੰਸਟਾਲ ਕਰੋ" #: subprojects/extensions-tool/src/command-install.c:219 msgid "No extension bundle specified" msgstr "ਕੋਈ ਇਕਟੈਨਸ਼ਨ ਬੰਡਲ ਨਹੀਂ ਦਿੱਤਾ" #: subprojects/extensions-tool/src/command-install.c:225 msgid "More than one extension bundle specified" msgstr "ਇੱਕ ਤੋਂ ਵੱਧ ਇਕਟੈਨਸ਼ਨ ਬੰਡਲ ਦਿੱਤਾ ਗਿਆ" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show user-installed extensions" msgstr "ਵਰਤੋਂਕਾਰ ਵਲੋਂ ਇੰਸਟਾਲ ਕੀਤੀਆਂ ਇਕਸਟੈਨਸ਼ਨਾਂ ਵੇਖਾਓ" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show system-installed extensions" msgstr "ਸਿਸਟਮ ਰਾਹੀਂ ਇੰਸਟਾਲ ਕੀਤੀਆਂ ਇਕਸਟੈਨਸ਼ਨਾਂ ਵੇਖਾਓ" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Show enabled extensions" msgstr "ਸਮਰੱਥ ਕੀਤੀਆਂ ਇਕਸਟੈਨਸ਼ਨਾਂ ਵੇਖਾਓ" #: subprojects/extensions-tool/src/command-list.c:149 msgid "Show disabled extensions" msgstr "ਅਸਮਰੱਥ ਕੀਤੀਆਂ ਇਕਸਟੈਨਸ਼ਨਾਂ ਵੇਖਾਓ" #: subprojects/extensions-tool/src/command-list.c:152 msgid "Show extensions in active state" msgstr "ਸਰਗਰਮ ਹਾਲਤ ਵਿੱਚ ਇਕਸਟੈਨਸ਼ਨਾਂ ਵੇਖਾਓ" #: subprojects/extensions-tool/src/command-list.c:155 msgid "Show extensions in inactive state" msgstr "ਨਾ-ਸਰਗਰਮ ਹਾਲਤ ਵਿੱਚ ਇਕਸਟੈਨਸ਼ਨਾਂ ਵੇਖਾਓ" #: subprojects/extensions-tool/src/command-list.c:158 msgid "Show extensions with preferences" msgstr "ਪਸੰਦਾਂ ਨਾਲ ਇਕਸਟੈਨਸ਼ਨਾਂ ਵੇਖਾਓ" #: subprojects/extensions-tool/src/command-list.c:161 msgid "Show extensions with updates" msgstr "ਇਕਸਟੈਨਸ਼ਨਾਂ ਨਾਲ ਇਕਸਟੈਨਸ਼ਨਾਂ ਵੇਖਾਓ" #: subprojects/extensions-tool/src/command-list.c:164 msgid "Print extension details" msgstr "ਇਕਸਟੈਨਸ਼ਨ ਵੇਰਵੇ ਛਾਪੋ" #: subprojects/extensions-tool/src/command-list.c:172 msgid "List installed extensions" msgstr "ਇੰਸਟਾਲ ਕੀਤੀਆਂ ਇਕਸਟੈਨਸ਼ਨਾਂ ਦੀ ਸੂਚੀ" #: subprojects/extensions-tool/src/command-pack.c:444 msgid "FILE" msgstr "ਫਾਇਲ" #: subprojects/extensions-tool/src/command-pack.c:445 msgid "Additional source to include in the bundle" msgstr "ਬੰਡਲ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰਨ ਲਈ ਵਧੀਕ ਸਰੋਤ" #: subprojects/extensions-tool/src/command-pack.c:449 msgid "A GSettings schema that should be included" msgstr "GSettings ਸਕੀਮ, ਜੋ ਸ਼ਾਮਲ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ" #: subprojects/extensions-tool/src/command-pack.c:451 #: subprojects/extensions-tool/src/command-pack.c:462 msgid "DIRECTORY" msgstr "ਡਾਇਰੈਕਟਰੀ" #: subprojects/extensions-tool/src/command-pack.c:453 msgid "The directory where translations are found" msgstr "ਡਾਇਰੈਕਟਰੀ, ਜਿੱਥੇ ਉਲੱਥੇ ਲੱਭੇ ਜਾਂਦੇ ਹਨ" #: subprojects/extensions-tool/src/command-pack.c:457 msgid "The gettext domain to use for translations" msgstr "ਉਲੱਥੇ ਲਈ ਵਰਤਣ ਲਈ gettext ਡੋਮੇਨ" #: subprojects/extensions-tool/src/command-pack.c:460 msgid "Overwrite an existing pack" msgstr "ਮੌਜੂਦਾ ਪੈਕ ਉੱਤੇ ਲਿਖੋ" #: subprojects/extensions-tool/src/command-pack.c:464 msgid "The directory where the pack should be created" msgstr "ਡਾਇਰੈਕਟਰੀ, ਜਿੱਥੇ ਪੈਕ ਬਣਾਏ ਜਾਣੇ ਚਾਹੀਦੇ ਹਨ" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "SOURCE_DIRECTORY" msgstr "ਸਰੋਤ_ਡਾਇਰੈਕਟਰੀ" #: subprojects/extensions-tool/src/command-pack.c:475 msgid "Create an extension bundle" msgstr "ਇਕਟੈਨਸ਼ਨ ਬੰਡਲ ਬਣਾਓ" #: subprojects/extensions-tool/src/command-pack.c:495 msgid "More than one source directory specified" msgstr "ਇੱਕ ਤੋਂ ਵੱਧ ਸਰੋਤ ਡਾਇਰੈਕਟਰੀ ਦਿੱਤੀ ਗਈ ਸੀ" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "ਇਕਟੈਨਸ਼ਨ “%s” ਲਈ ਪਸੰਦਾਂ ਨਹੀਂ ਹਨ\n" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "ਇਕਸਟੈਨਸ਼ਨ “%s” ਲਈ ਪਸੰਦ ਖੋਲ੍ਹਣ ਲਈ ਅਸਫ਼ਲ ਹੈ: %s\n" #: subprojects/extensions-tool/src/command-prefs.c:87 msgid "Opens extension preferences" msgstr "ਇਕਸਟੈਨਸ਼ਨ ਪਸੰਦਾਂ ਨੂੰ ਖੋਲ੍ਹੋ" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "ਇਕਸਟੈਨਸ਼ਨ ਨੂੰ ਮੁੜ-ਸੈੱਟ ਕਰੋ" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "ਸਿਸਟਮ ਇਕਟੈਨਸ਼ਨਾਂ ਅਣ-ਇੰਸਟਾਲ ਨਹੀਂ ਕੀਤੀਆਂ ਜਾ ਸਕਦੀਆਂ\n" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "“%s” ਅਣ-ਇੰਸਟਾਲ ਕਰਨ ਲਈ ਅਸਫ਼ਲ ਹੈ\n" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "ਇਕਸਟੈਨਸ਼ਨ ਅਣ-ਇੰਸਟਾਲ ਕਰੋ" #: subprojects/extensions-tool/src/main.c:76 msgid "Do not print error messages" msgstr "ਗ਼ਲਤੀ ਸੁਨੇਹੇ ਪਰਿੰਟ ਨਾ ਕਰੋ" #: subprojects/extensions-tool/src/main.c:249 msgid "Path" msgstr "ਮਾਰਗ" #: subprojects/extensions-tool/src/main.c:252 msgid "URL" msgstr "URL" #: subprojects/extensions-tool/src/main.c:255 msgid "Original author" msgstr "ਅਸਲੀ ਲੇਖਕ" #: subprojects/extensions-tool/src/main.c:261 #: subprojects/extensions-tool/src/main.c:263 #: subprojects/extensions-tool/src/main.c:265 msgid "Version" msgstr "ਵਰਜ਼ਨ" #: subprojects/extensions-tool/src/main.c:268 msgid "Enabled" msgstr "ਚਾਲੂ ਹੈ" #: subprojects/extensions-tool/src/main.c:268 msgid "Yes" msgstr "ਹਾਂ" #: subprojects/extensions-tool/src/main.c:268 msgid "No" msgstr "ਨਹੀਂ" #: subprojects/extensions-tool/src/main.c:271 msgid "State" msgstr "ਹਾਲਤ" #: subprojects/extensions-tool/src/main.c:309 msgid "“version” takes no arguments" msgstr "“version” ਲਈ ਕੋਈ ਆਰਗੂਮੈਂਟ ਨਹੀਂ ਹੁੰਦਾ" #: subprojects/extensions-tool/src/main.c:311 #: subprojects/extensions-tool/src/main.c:331 msgid "Usage:" msgstr "ਵਰਤੋ:" #: subprojects/extensions-tool/src/main.c:314 msgid "Print version information and exit." msgstr "ਵਰਜ਼ਨ ਜਾਣਕਾਰੀ ਛਾਪੋ ਅਤੇ ਬੰਦ ਕਰੋ।" #: subprojects/extensions-tool/src/main.c:329 #: subprojects/extensions-tool/src/main.c:332 msgid "COMMAND" msgstr "ਕਮਾਂਡ" #: subprojects/extensions-tool/src/main.c:332 msgid "[ARGS…]" msgstr "[ARGS…]" #: subprojects/extensions-tool/src/main.c:334 msgid "Commands:" msgstr "ਕਮਾਂਡਾਂ:" #: subprojects/extensions-tool/src/main.c:335 msgid "Print help" msgstr "ਮਦਦ ਛਾਪੋ" #: subprojects/extensions-tool/src/main.c:337 msgid "Enable extension" msgstr "ਇਕਸਟੈਨਸ਼ਨ ਸਮਰੱਥ ਕਰੋ" #: subprojects/extensions-tool/src/main.c:338 msgid "Disable extension" msgstr "ਇਕਸਟੈਨਸ਼ਨ ਅਸਮਰੱਥ ਕਰੋ" #: subprojects/extensions-tool/src/main.c:339 msgid "Reset extension" msgstr "ਇਕਸਟੈਨਸ਼ਨ ਨੂੰ ਮੁੜ-ਸੈੱਟ ਕਰੋ" #: subprojects/extensions-tool/src/main.c:340 msgid "Uninstall extension" msgstr "ਇਕਸਟੈਨਸ਼ਨ ਅਣ-ਇੰਸਟਾਲ ਕਰੋ" #: subprojects/extensions-tool/src/main.c:341 msgid "List extensions" msgstr "ਇਕਸਟੈਨਸ਼ਨਾਂ ਦੀ ਸੂਚੀ" #: subprojects/extensions-tool/src/main.c:342 #: subprojects/extensions-tool/src/main.c:343 msgid "Show extension info" msgstr "ਇਕਸਟੈਨਸ਼ਨ ਜਾਣਕਾਰੀ ਵੇਖਾਓ" #: subprojects/extensions-tool/src/main.c:344 msgid "Open extension preferences" msgstr "ਇਕਸਟੈਨਸ਼ਨ ਪਸੰਦਾਂ ਨੂੰ ਖੋਲ੍ਹੋ" #: subprojects/extensions-tool/src/main.c:345 msgid "Create extension" msgstr "ਇਕਸਟੈਨਸ਼ਨ ਬਣਾਓ" #: subprojects/extensions-tool/src/main.c:346 msgid "Package extension" msgstr "ਇਕਸਟੈਨਸ਼ਨ ਪੈਕੇਜ ਬਣਾਓ" #: subprojects/extensions-tool/src/main.c:347 msgid "Install extension bundle" msgstr "ਇਕਟੈਨਸ਼ਨ ਬੰਡਲ ਇੰਸਟਾਲ ਕਰੋ" #: subprojects/extensions-tool/src/main.c:349 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "ਵੇਰਵੇ ਸਮੇਤ ਮਦਦ ਲੈਣ ਲਈ “%s“ ਵਰਤੋ।\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "ਤਲ" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "ਖਾਲੀ ਇਕਟੈਨਸ਼ਨ" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "ਸੰਕੇਤਕ" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "ਸਿਖਰ ਪੱਟੀ ਲਈ ਆਈਕਾਨ ਜੋੜੋ" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:4 msgid "Quick Settings Item" msgstr "ਫ਼ੌਰੀ ਸੈਟਿੰਗਾਂ ਚੀਜ਼" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:5 msgid "Add an item to quick settings" msgstr "ਚੀਜ਼ ਫ਼ੌਰੀ ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਜੋੜੋ" #. translators: #. * The device has been disabled #: subprojects/gvc/gvc-mixer-control.c:1872 msgid "Disabled" msgstr "ਬੰਦ ਹੈ" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1879 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u ਆਉਟਪੁੱਟ" msgstr[1] "%u ਆਉਟਪੁੱਟ" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1889 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u ਇਨਪੁੱਟ" msgstr[1] "%u ਇਨਪੁੱਟ" #: subprojects/gvc/gvc-mixer-control.c:2872 msgid "System Sounds" msgstr "ਸਿਸਟਮ ਸਾਊਂਡ" #~ msgid "Network Manager" #~ msgstr "ਨੈੱਟਵਰਕ ਮੈਨੇਜਰ" #, javascript-format #~ msgid "%s is now known as %s" #~ msgstr "%s ਨੂੰ ਹੁਣ %s ਵਜੋਂ ਜਾਣਿਆ ਜਾਵੇਗਾ" #~ msgid "System Information" #~ msgstr "ਸਿਸਟਮ ਜਾਣਕਾਰੀ" #~ msgid "Thunderbolt" #~ msgstr "ਥੰਡਰਬੋਲਟ" #~ msgid "Disabling" #~ msgstr "ਅਸਮਰੱਥ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" #~ msgid "Enabling" #~ msgstr "ਸਮਰੱਥ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" #, javascript-format #~ msgid "%d %%" #~ msgstr "%d %%" #~ msgid "No Thanks" #~ msgstr "ਨਹੀਂ ਜੀ ਧੰਨਵਾਦ" #~ msgid "No Matches" #~ msgstr "ਕੋਈ ਮਿਲਦਾ ਨਹੀਂ ਹੈ" #~ msgid "The extension had an error" #~ msgstr "ਇਕਸਟੈਨਸ਼ਨ ਲਈ ਗ਼ਲਤੀ ਆਈ" #~ msgid "The extension can be updated" #~ msgstr "ਇਕਸਟੈਨਸ਼ਨ ਅੱਪਡੇਟ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ" #~ msgid "Help" #~ msgstr "ਮਦਦ" #~ msgid "Manually Installed" #~ msgstr "ਖੁਦ ਇੰਸਟਾਲ ਕੀਤੇ" #~ msgid "Built-In" #~ msgstr "ਬਿਲਟ-ਇਨ" #~ msgid "Extension Updates Ready" #~ msgstr "ਇਕਸਟੈਨਸ਼ਨ ਅੱਪਡੇਟ ਤਿਆਰ ਹਨ" #~ msgid "Attach modal dialog to the parent window" #~ msgstr "ਮੂਲ ਵਿੰਡੋ ਵਿੱਚ ਮਾਡਲ ਡਾਈਲਾਗ ਜੋੜੋ" #~ msgid "" #~ "This key overrides the key in org.gnome.mutter when running GNOME Shell." #~ msgstr "ਇਹ ਕੁੰਜੀ ਗਨੋਮ ਸ਼ੈੱਲ ਚੱਲਣ ਦੇ ਦੌਰਾਨ org.gnome.mutter ਕੁੰਜੀ ਨੂੰ ਅਣਡਿੱਠਾ ਕਰਦੀ ਹੈ।" #~ msgid "Enable edge tiling when dropping windows on screen edges" #~ msgstr "ਕੋਨਾ ਟਿੱਲ ਨੂੰ ਚਾਲੂ ਕਰੋ, ਜਦੋਂ ਵਿੰਡੋ ਸਕਰੀਨ ਕੋਨਿਆਂ ਤੋਂ ਹਿਲਦੀ ਹੈ" #~ msgid "Workspaces are managed dynamically" #~ msgstr "ਵਰਕਸਪੇਸ ਚੱਲਦੇ ਰੂਪ ਵਿੱਚ ਰੱਖੇ ਜਾਂਦੇ ਹਨ" #~ msgid "Workspaces only on primary monitor" #~ msgstr "ਪ੍ਰਾਈਮਰੀ ਮਾਨੀਟਰ ਉੱਤੇ ਕੇਵਲ ਵਰਕਸਪੇਸ" #~ msgid "Delay focus changes in mouse mode until the pointer stops moving" #~ msgstr "ਪੁਆਇੰਟਰ ਦੇ ਹਿਲਣ ਤੋਂ ਰੁਕਣ ਤੱਕ ਮਾਊਸ ਮੋਡ ਵਿੱਚ ਫੋਕਸ ਬਦਲਾਅ ਵਿੱਚ ਦੇਰੀ" #~ msgid "Region & Language Settings" #~ msgstr "ਖੇਤਰ ਅਤੇ ਭਾਸ਼ਾ ਸੈਟਿੰਗਾਂ" #~ msgid "Applications" #~ msgstr "ਐਪਲੀਕੇਸ਼ਨ" #~| msgid "Screenshot taken" #~ msgid "Screenshot / Screencast" #~ msgstr "ਸਕਰੀਨਸ਼ਾਟ / ਸਕਰੀਨਕਾਸਟ" #, javascript-format #~ msgid "Unable to start %s" #~ msgstr "%s ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਅਸਮਰੱਥ" #, javascript-format #~ msgid "Couldn’t find the %s application" #~ msgstr "%s ਐਪਲੀਕੇਸ਼ਨ ਲੱਭੀ ਨਹੀਂ ਜਾ ਸਕੀ" #~ msgid "Evolution Calendar" #~ msgstr "ਈਵੇਲੂਸ਼ਨ ਕੈਲੰਡਰ" #~ msgid "" #~ "Whether the default Bluetooth adapter had set up devices associated to it" #~ msgstr "ਕੀ ਡਿਫਾਲਟ ਬਲੂਟੁੱਥ ਅਡੈਪਟਰ ਇਸ ਨਾਲ ਸਬੰਧਿਤ ਡਿਵਾਈਸਾਂ ਲਈ ਸੈੱਟ ਅੱਪ ਕੀਤਾ ਹੈ" #~ msgid "" #~ "The shell will only show a Bluetooth menu item if a Bluetooth adapter is " #~ "powered, or if there were devices set up associated with the default " #~ "adapter. This will be reset if the default adapter is ever seen not to " #~ "have devices associated to it." #~ msgstr "" #~ "ਸ਼ੈੱਲ ਬਲੂਟੁੱਥ ਮੇਨੂ ਆਈਟਮ ਨੂੰ ਕੇਵਲ ਤਾਂ ਹੀ ਦਿਖਾਏਗੀ, ਜੇ ਬਲੂਟੁੱਥ ਅਡੈਪਟਰ ਚਾਲੂ ਹੈ ਜਾਂ ਡਿਫਾਲਟ ਅਡੈਪਟਰ " #~ "ਨਾਲ ਸੰਬੰਧਿਤ ਡਿਵਾਈਸ ਸੈਟਅੱਪ ਮੌਜੂਦ ਹੈ। ਇਸ ਨੂੰ ਮੁੜ-ਸੈੱਟ ਕੀਤਾ ਜਾਵੇਗਾ, ਜੇ ਡਿਫਾਲਟ ਅਡੈਪਟਰ ਨੂੰ ਇਸ " #~ "ਨਾਲ ਸੰਬੰਧਿਤ ਕੀਤਾ ਡਿਵਾਈਸ ਨਾ ਮਿਲਿਆ।" #~ msgid "Remove from Favorites" #~ msgstr "ਮਨਪਸੰਦਾਂ 'ਚੋਂ ਹਟਾਓ" #~ msgid "Add to Favorites" #~ msgstr "ਮਨਪਸੰਦ 'ਚ ਜੋੜੋ" #~ msgid "Bluetooth Off" #~ msgstr "ਬਲੂਟੁੱਥ ਬੰਦ ਕਰੋ" #~ msgid "Bluetooth On" #~ msgstr "ਬਲੂਟੁੱਥ ਚਾਲੂ ਕਰੋ" #~ msgid "Location In Use" #~ msgstr "ਟਿਕਾਣਾ ਵਰਤੋਂ ਵਿੱਚ ਹੈ" #~ msgid "Location Disabled" #~ msgstr "ਟਿਕਾਣਾ ਅਸਮਰੱਥ ਹੈ" #, javascript-format #~ msgid "%s Off" #~ msgstr "%s ਬੰਦ ਹੈ" #, javascript-format #~ msgid "%s Connected" #~ msgstr "%s ਕਨੈਕਟ ਹੈ" #, javascript-format #~ msgid "%s Unmanaged" #~ msgstr "%s ਬਿਨ-ਇੰਤਜ਼ਾਮ" #, javascript-format #~ msgid "%s Connecting" #~ msgstr "%s ਕਨੈਕਟ ਕਰ ਰਿਹਾ ਹੈ" #, javascript-format #~ msgid "%s Requires Authentication" #~ msgstr "%s ਪਰਮਾਣਕਿਤਾ ਚਾਹੀਦੀ ਹੈ" #, javascript-format #~ msgid "Firmware Missing For %s" #~ msgstr "%s ਲਈ ਫਿਰਮਵੇਅਰ ਮੌਜੂਦ ਨਹੀਂ ਹੈ" #, javascript-format #~ msgid "%s Unavailable" #~ msgstr "%s ਨਾ-ਮੌਜੂਦ" #, javascript-format #~ msgid "%s Connection Failed" #~ msgstr "%s ਕਨੈਕਸ਼ਨ ਫੇਲ੍ਹ ਹੈ" #, javascript-format #~ msgid "%s Hardware Disabled" #~ msgstr "%s ਹਾਰਡਵੇਅਰ ਅਸਮਰੱਥ ਹੈ" #, javascript-format #~ msgid "%s Disabled" #~ msgstr "%s ਅਸਮਰੱਥ ਹੈ" #~ msgid "Connect to Internet" #~ msgstr "ਇੰਟਰਨੈੱਟ ਨਾਲ ਕਨੈਕਟ ਕਰੋ" #~ msgid "Airplane Mode is On" #~ msgstr "ਏਅਰਪਲੇਨ ਮੋਡ ਚਾਲੂ ਹੈ" #~ msgid "Wi-Fi is disabled when airplane mode is on." #~ msgstr "ਜਦੋਂ ਏਅਰ-ਪਲੇਨ ਮੋਡ ਚਾਲੂ ਹੁੰਦਾ ਹੈ ਤਾਂ ਵਾਈ-ਫਾਈ ਬੰਦ ਹੁੰਦਾ ਹੈ" #~ msgid "Turn Off Airplane Mode" #~ msgstr "ਏਅਰਪਲੇਨ ਮੋਡ ਬੰਦ ਕਰੋ" #~ msgid "Wi-Fi is Off" #~ msgstr "ਵਾਈ-ਫਾਈ ਬੰਦ ਹੈ" #~ msgid "Wi-Fi needs to be turned on in order to connect to a network." #~ msgstr "ਨੈੱਟਵਰਕ ਨਾਲ ਕੁਨੈਕਟ ਕਰਨ ਲਈ ਵਾਈ-ਫਾਈ ਨੂੰ ਚਾਲੂ ਕਰਨ ਦੀ ਲੋੜ ਹੈ" #~ msgid "Turn On Wi-Fi" #~ msgstr "ਵਾਈ-ਫਾਈ ਚਾਲੂ" #~ msgid "Wi-Fi Networks" #~ msgstr "ਵਾਈ-ਫਾਈ ਨੈੱਟਵਰਕ" #~ msgid "Select a network" #~ msgstr "ਨੈੱਟਵਰਕ ਚੁਣੋ" #~ msgid "Use hardware switch to turn off" #~ msgstr "ਬੰਦ ਕਰਨ ਲਈ ਹਾਰਡਵੇਅਰ ਸਵਿੱਚ ਵਰਤੋਂ" #~ msgid "Select Network" #~ msgstr "ਨੈੱਟਵਰਕ ਚੁਣੋ" #~ msgid "Wi-Fi Settings" #~ msgstr "ਵਾਈ-ਫਾਈ ਸੈਟਿੰਗਾਂ" #, javascript-format #~ msgid "%s Not Connected" #~ msgstr "%s ਕੁਨੈਕਟ ਨਹੀਂ ਹੈ" #~ msgid "connecting…" #~ msgstr "…ਕਨੈਕਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" #~ msgid "authentication required" #~ msgstr "ਪਰਮਾਣਕਿਤਾ ਚਾਹੀਦੀ ਹੈ" #~ msgid "connection failed" #~ msgstr "ਕਨੈਕਸ਼ਨ ਫੇਲ੍ਹ ਹੈ" #~ msgid "VPN Off" #~ msgstr "VPN ਬੰਦ ਹੈ" #~ msgid "Network Settings" #~ msgstr "ਨੈੱਟਵਰਕ ਸੈਟਿੰਗਾਂ" #, javascript-format #~ msgid "%s Wi-Fi Connection" #~ msgid_plural "%s Wi-Fi Connections" #~ msgstr[0] "%s Wi-Fi ਕਨੈਕਸ਼ਨ" #~ msgstr[1] "%s Wi-Fi ਕਨੈਕਸ਼ਨ" #~ msgid "Night Light Disabled" #~ msgstr "ਰਾਤ ਦੀ ਰੌਸ਼ਨੀ ਅਸਮਰੱਥ ਹੈ" #~ msgid "Resume" #~ msgstr "ਮੁੜ-ਪ੍ਰਾਪਤ ਕਰੋ" #~ msgid "Disable Until Tomorrow" #~ msgstr "ਭਲਕੇ ਤੱਕ ਅਸਮਰੱਥ ਕਰੋ" #~ msgid "Fully Charged" #~ msgstr "ਪੂਰੀ ਚਾਰਜ" #~ msgid "Not Charging" #~ msgstr "ਚਾਰਜ ਨਹੀਂ ਹੋ ਰਹੀ" #~ msgid "Estimating…" #~ msgstr "…ਅੰਦਾਜ਼ਾ ਲਾਇਆ ਜਾ ਰਿਹਾ ਹੈ" #, javascript-format #~ msgid "%d∶%02d Remaining (%d %%)" #~ msgstr "%d∶%02d ਬਾਕੀ (%d %%)" #, javascript-format #~ msgid "%d∶%02d Until Full (%d %%)" #~ msgstr "%d∶%02d ਪੂਰਾ ਹੋਣ ਲਈ (%d %%)" #~ msgid "Screen is Being Shared" #~ msgstr "ਸਕਰੀਨ ਸਾਂਝੀ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ" #~ msgid "Turn off" #~ msgstr "ਬੰਦ ਕਰੋ" #~ msgid "Airplane Mode On" #~ msgstr "ਏਅਰਪਲੇਨ ਮੋਡ ਚਾਲੂ ਹੈ" #~ msgid "Lock" #~ msgstr "ਲਾਕ" #~ msgid "Power Off / Log Out" #~ msgstr "ਬੰਦ ਕਰੋ / ਲਾਗ ਆਉਟ" #~ msgid "Log Out" #~ msgstr "ਲਾਗ ਆਉਟ" #~ msgid "Author" #~ msgstr "ਲੇਖਕ" #~ msgid "Warning" #~ msgstr "ਚੇਤਾਵਨੀ" #~ msgid "" #~ "Extensions can cause system issues, including performance problems. If " #~ "you encounter problems with your system, it is recommended to disable all " #~ "extensions." #~ msgstr "" #~ "ਇਕਸਟੈਨਸ਼ਨਾਂ ਸਿਸਟਮ ਪੱਧਰ ਦੇ ਮਸਲੇ ਖੜ੍ਹੇ ਕਰ ਸਕਦੀਆਂ ਹਨ, ਜਿਸ ਵਿੱਚ ਕਾਰਗੁਜ਼ਾਰੀ ਸਮੱਸਿਆਵਾਂ ਹਨ। ਜੇ " #~ "ਤੁਹਾਨੂੰ ਤੁਹਾਡੇ ਸਿਸਟਮ ਨਾਲ ਸਮੱਸਿਆਵਾਂ ਆ ਰਹੀਆਂ ਹੋਣ ਤਾਂ ਸਾਰੀਆਂ ਇਕਸਟੈਨਸ਼ਨਾਂ ਨੂੰ ਅਸਮਰੱਥ ਕਰਨ ਦੀ " #~ "ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ।" #~ msgid "Failed to connect to GNOME Shell" #~ msgstr "ਗਨੋਮ ਸ਼ੈੱਲ ਨਾਲ ਕਨੈਕਟ ਕਰਨ ਲਈ ਫੇਲ੍ਹ ਹੈ" #~ msgid "Enable introspection API" #~ msgstr "ਧਿਆਨ ਦਿਵਾਉ API ਸਮਰੱਥ ਕਰੋ" #~ msgid "" #~ "Enables a D-Bus API that allows to introspect the application state of " #~ "the shell." #~ msgstr "" #~ "ਡੀ-ਬੱਸ API ਸਮਰੱਥ ਕਰਦੀ ਹੈ, ਜੋ ਕਿ ਸ਼ੈੱਲ ਦੀ ਐਪਲੀਕੇਸ਼ਨ ਹਾਲਤ ਉੱਤੇ ਧਿਆਨ ਦੇਣ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦੀ ਹੈ।" #~ msgid "Minimize" #~ msgstr "ਘੱਟੋ-ਘੱਟ" #~ msgid "Unmaximize" #~ msgstr "ਅਣ-ਵੱਧੋ-ਵੱਧ" #~ msgid "App Picker View" #~ msgstr "ਐਪ ਚੁਣਨ ਝਲਕ" #~ msgid "Index of the currently selected view in the application picker." #~ msgstr "ਐਪਲੀਕੇਸ਼ਨ ਚੋਣਕਾਰ ਵਿੱਚ ਮੌਜੂਦਾ ਚੁਣੀ ਝਲਕ ਦਾ ਇੰਡੈਕਸ।" #~ msgid "Copy Error" #~ msgstr "ਗਲਤੀ ਕਾਪੀ ਕਰੋ" #~ msgid "Frequently used applications will appear here" #~ msgstr "ਆਮ ਵਰਤੀਆਂ ਐਪਲੀਕੇਸ਼ਨ ਇੱਥੇ ਵਿਖਾਈ ਦੇਣਗੀਆਂ" #~ msgid "Frequent" #~ msgstr "ਅਕਸਰ" #~ msgid "All" #~ msgstr "ਸਭ" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d" #~ msgstr "%A, %-d %B" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d, %Y" #~ msgstr "%A, %-d %B %Y" #~ msgid "On" #~ msgstr "ਚਾਲੂ" #~ msgid "Browse in Software" #~ msgstr "ਸਾਫਟਵੇਅਰ ਵਿੱਚ ਵੇਖੋ" #~ msgid "Next" #~ msgstr "ਅੱਗੇ" #~ msgctxt "button" #~ msgid "Sign In" #~ msgstr "ਸਾਇਨ ਇਨ" #~ msgid "Password:" #~ msgstr "ਪਾਸਵਰਡ:" #~ msgid "Type again:" #~ msgstr "ਮੁੜ-ਕੋਸ਼ਿਸ਼:" #~ msgid "Password: " #~ msgstr "ਪਾਸਵਰਡ: " #~ msgid "Authentication required by wireless network" #~ msgstr "ਬੇਤਾਰ ਨੈੱਟਵਰਕ ਲਈ ਪਰਮਾਣਕਿਤਾ ਚਾਹੀਦੀ ਹੈ" #~ msgid "Mobile broadband network password" #~ msgstr "ਮੋਬਾਇਲ ਬਰਾਡਬੈਂਡ ਨੈੱਟਵਰਕ ਪਾਸਵਰਡ" #~ msgid "%A, %B %d" #~ msgstr "%A, %d %B" #~ msgid "%d new message" #~ msgid_plural "%d new messages" #~ msgstr[0] "%d ਨਵਾਂ ਸੁਨੇਹਾ" #~ msgstr[1] "%d ਨਵੇਂ ਸੁਨੇਹੇ" #~ msgid "Account Settings" #~ msgstr "ਖਾਤਾ ਸੈਟਿੰਗਾਂ" #~ msgid "Orientation Lock" #~ msgstr "ਸਥਿਤੀ ਲਾਕ" #~ msgid "" #~ "Keybinding that pauses and resumes all running tweens, for debugging " #~ "purposes" #~ msgstr "ਕੀਬਾਈਡਿੰਗ, ਜੋ ਕਿ ਡੀਬੱਗ ਕਰਨ ਵਾਸਤੇ ਸਭ ਚੱਲ ਰਹੀਆਂ ਟਵੀਨਸ ਨੂੰ ਰੌਕਦੀ ਅਤੇ ਚਲਾਉਂਦੀ ਹੈ" #~ msgid "Which keyboard to use" #~ msgstr "ਕਿਹੜਾ ਕੀਬੋਰਡ ਵਰਤਣਾ ਹੈ" #~ msgid "The type of keyboard to use." #~ msgstr "ਵਰਤਣ ਲਈ ਕੀਬੋਰਡ ਦੀ ਕਿਸਮ ਹੈ।" #~ msgid "network-workgroup" #~ msgstr "network-workgroup" #~ msgid "There was an error loading the preferences dialog for %s:" #~ msgstr "%s ਲਈ ਪਸੰਦ ਡਾਈਲਾਗ ਨੂੰ ਲੋਡ ਕਰਨ ਦੌਰਾਨ ਸਮੱਸਿਆ:" #~ msgid "%s all day." #~ msgstr "ਸਾਰਾ ਦਿਨ %s।" #~ msgid "%s, then %s later." #~ msgstr "%s, ਤਦ ਬਾਅਦ ਵਿੱਚ %s।" #~ msgid "%s, then %s, followed by %s later." #~ msgstr "%s, ਤਦ %s, ਉਸ ਤੋਂ ਬਾਅਦ %s।" #~ msgid "Feels like %s." #~ msgstr "%s ਵਾਂਗੂੰ ਮਹਿਸੂਸ ਹੁੰਦਾ ਹੈ।" #~ msgid "toggle-switch-us" #~ msgstr "toggle-switch-us" #~| msgid "Log Out" #~ msgctxt "search-result" #~ msgid "Log out" #~ msgstr "ਲਾਗ ਆਉਟ" #~| msgid "Switch User" #~ msgctxt "search-result" #~ msgid "Switch user" #~ msgstr "ਵਰਤੋਂਕਾਰ ਨੂੰ ਬਦਲੋ" #~ msgid "Hide tray" #~ msgstr "ਟਰੇ ਓਹਲੇ ਕਰੋ" #~ msgid "Status Icons" #~ msgstr "ਹਾਲਤ ਆਈਕਾਨ" #~ msgid "Web Authentication Redirect" #~ msgstr "ਵੈੱਬ ਪਰਮਾਣਕਿਤਾ ਰੀ-ਡਾਇਰੈਕਟ" #~ msgid "Events" #~ msgstr "ਘਟਨਾਵਾਂ" #~ msgid "Media" #~ msgstr "ਮੀਡੀਆ" #~ msgid "%d x %d" #~ msgstr "%d x %d" #~ msgid "Show the week date in the calendar" #~ msgstr "ਕੈਲੰਡਰ ਵਿੱਚ ਹਫ਼ਤਾ ਮਿਤੀ ਵੇਖੋ" #~ msgid "If true, display the ISO week date in the calendar." #~ msgstr "ਜੇ ਚੋਣ ਕੀਤੀ ਤਾਂ ਕੈਲੰਡਰ ਵਿੱਚ ISO ਹਫਤਾ ਮਿਤੀ ਵੇਖਾਈ ਜਾਵੇਗੀ।" #~ msgid "%s is requesting access to your location." #~ msgstr "%s ਵਲੋਂ ਤੁਹਾਡੇ ਟਿਕਾਣੇ ਲਈ ਬੇਨਤੀ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ।" #~ msgid "Use as Internet connection" #~ msgstr "ਇੰਟਰਨੈੱਟ ਕੁਨੈਕਸ਼ਨ ਵਜੋਂ ਵਰਤੋਂ" #~ msgid "GNOME Shell (wayland compositor)" #~ msgstr "ਗਨੋਮ ਸ਼ੈਲ (ਵੇਲੈਂਡ ਨਿਰਮਾਤਾ)" #~ msgid "%d Connected Device" #~ msgid_plural "%d Connected Devices" #~ msgstr[0] "%d ਕੁਨੈਕਟ ਹੋਇਆ ਜੰਤਰ" #~ msgstr[1] "%d ਕੁਨੈਕਟ ਹੋਏ ਜੰਤਰ" #~ msgid "UPS" #~ msgstr "UPS" #~ msgid "Battery" #~ msgstr "ਬੈਟਰੀ" #~ msgid "Show the message tray" #~ msgstr "ਸੁਨੇਹਾ ਟਰੇ ਵੇਖਾਓ" #~ msgid "Captive Portal" #~ msgstr "ਕੈਪਟਿਵ ਪੋਰਟਲ" #~ msgctxt "event list time" #~ msgid "%H∶%M" #~ msgstr "%H∶%M" #~ msgctxt "event list time" #~ msgid "%l∶%M %p" #~ msgstr "%l∶%M %p" #~ msgctxt "list sunday" #~ msgid "Su" #~ msgstr "ਐ" #~ msgctxt "list monday" #~ msgid "M" #~ msgstr "ਸੋ" #~ msgctxt "list tuesday" #~ msgid "T" #~ msgstr "ਮੰ" #~ msgctxt "list wednesday" #~ msgid "W" #~ msgstr "ਬੁੱ" #~ msgctxt "list thursday" #~ msgid "Th" #~ msgstr "ਵੀ" #~ msgctxt "list friday" #~ msgid "F" #~ msgstr "ਸ਼ੁੱ" #~ msgctxt "list saturday" #~ msgid "S" #~ msgstr "ਸ਼" #~ msgid "Nothing Scheduled" #~ msgstr "ਕੋਈ ਵੀ ਸੈਡਿਊਲ ਨਹੀਂ ਹੈ" #~ msgid "This week" #~ msgstr "ਇਹ ਹਫ਼ਤਾ" #~ msgid "Next week" #~ msgstr "ਹਫ਼ਤਾ ਅੱਗੇ" #~ msgid "Removable Devices" #~ msgstr "ਹਟਾਉਣਯੋਗ ਜੰਤਰ" #~ msgid "Eject" #~ msgstr "ਬਾਹਰ ਕੱਢੋ" #~ msgid "Invitation" #~ msgstr "ਸੱਦਾ" #~ msgid "Call" #~ msgstr "ਕਾਲ ਕਰੋ" #~ msgid "File Transfer" #~ msgstr "ਫਾਇਲ ਟਰਾਂਸਫਰ" #~ msgid "Chat" #~ msgstr "ਗੱਲਬਾਤ" #~ msgid "Invitation to %s" #~ msgstr "%s ਲਈ ਸੱਦਾ" #~ msgid "%s is inviting you to join %s" #~ msgstr "%s ਤੁਹਾਨੂੰ %s ਜੁਆਇੰਨ ਕਰਨ ਲਈ ਸੱਦ ਰਿਹਾ ਹੈ" #~ msgid "Decline" #~ msgstr "ਇਨਕਾਰ" #~ msgid "Accept" #~ msgstr "ਮਨਜ਼ੂਰ" #~ msgid "Video call from %s" #~ msgstr "%s ਵਲੋਂ ਵਿਡੀਓ ਕਾਲ" #~ msgid "Call from %s" #~ msgstr "%s ਵਲੋਂ ਕਾਲ" #~ msgid "Answer" #~ msgstr "ਜਵਾਬ ਦਿਓ" #~ msgid "%s is sending you %s" #~ msgstr "%s ਤੁਹਾਨੂੰ %s ਭੇਜ ਰਿਹਾ/ਰਹੀ ਹੈ" #~ msgid "%s would like permission to see when you are online" #~ msgstr "%s ਤੁਹਾਨੂੰ ਵੇਖਣ ਦਾ ਅਧਿਕਾਰ ਚਾਹੁੰਦਾ/ਚਾਹੁੰਦੀ ਹੈ, ਜਦੋਂ ਵੀ ਤੁਸੀਂ ਆਨਲਾਈਨ ਹੋਵੋ" #~ msgid "Authentication failed" #~ msgstr "ਪਰਮਾਣਕਿਤਾ ਫੇਲ੍ਹ ਹੋਈ" #~ msgid "Encryption error" #~ msgstr "ਇੰਕ੍ਰਿਪਸ਼ਨ ਗਲਤੀ" #~ msgid "Certificate not provided" #~ msgstr "ਸਰਟੀਫਿਕੇਟ ਨਹੀਂ ਦਿੱਤਾ" #~ msgid "Certificate untrusted" #~ msgstr "ਸਰਟੀਫਿਕੇਟ ਬੇਭਰੋਸੇਯੋਗ" #~ msgid "Certificate expired" #~ msgstr "ਸਰਟੀਫਿਕੇਟ ਦੀ ਮਿਆਦ ਪੁੱਗੀ" #~ msgid "Certificate not activated" #~ msgstr "ਸਰਟੀਫਿਕੇਟ ਸਰਗਰਮ ਨਹੀਂ ਹੈ" #~ msgid "Certificate hostname mismatch" #~ msgstr "ਸਰਟੀਫਿਕੇਟ ਹੋਸਟ-ਨਾਂ ਨਹੀਂ ਮਿਲਦਾ" #~ msgid "Certificate fingerprint mismatch" #~ msgstr "ਸਰਟੀਫਿਕੇਟ ਫਿੰਗਰ-ਪਰਿੰਟ ਮਿਲਦਾ ਨਹੀਂ" #~ msgid "Certificate self-signed" #~ msgstr "ਸਰਟੀਫਿਕੇਟ ਖੁਦ-ਦਸਤਖਤੀ ਹੈ" #~ msgid "Status is set to offline" #~ msgstr "ਹਾਲਤ ਆਫਲਾਈਨ ਸੈੱਟ ਕੀਤੀ ਗਈ ਹੈ" #~ msgid "Certificate is invalid" #~ msgstr "ਸਰਟੀਫਿਕੇਟ ਗਲਤ ਹੈ" #~ msgid "Connection has been refused" #~ msgstr "ਕੁਨੈਕਸ਼ਨ ਤੋਂ ਇਨਕਾਰ ਕੀਤਾ ਗਿਆ" #~ msgid "Connection can't be established" #~ msgstr "ਕੁਨੈਕਸ਼ਨ ਬਣਾਇਆ ਨਹੀਂ ਜਾ ਸਕਦਾ" #~ msgid "Connection has been lost" #~ msgstr "ਕੁਨੈਕਸ਼ਨ ਖਤਮ ਹੋ ਗਿਆ" #~ msgid "This account is already connected to the server" #~ msgstr "ਇਹ ਅਕਾਊਂਟ ਪਹਿਲਾਂ ਹੀ ਸਰਵਰ ਨਾਲ ਕੁਨੈਕਟ ਹੈ" #~ msgid "" #~ "Connection has been replaced by a new connection using the same resource" #~ msgstr "ਉਸੇ ਸਰੋਤ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕੁਨੈਕਸ਼ਨ ਨੂੰ ਨਵੇਂ ਕੁਨੈਕਸ਼ਨ ਨਾਲ ਬਦਲ ਦਿੱਤਾ ਗਿਆ ਹੈ" #~ msgid "The account already exists on the server" #~ msgstr "ਅਕਾਊਂਟ ਸਰਵਰ ਉੱਤੇ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੈ" #~ msgid "Server is currently too busy to handle the connection" #~ msgstr "ਸਰਵਰ ਇਸ ਵੇਲੇ ਐਨਾ ਰੁੱਝਿਆ ਹੋਇਆ ਹੈ ਕਿ ਕੁਨੈਕਸ਼ਨ ਸੰਭਾਲ ਨਹੀਂ ਸਕਦਾ" #~ msgid "Certificate has been revoked" #~ msgstr "ਸਰਟੀਫਿਕੇਟ ਮਨਸੂਖ ਕੀਤਾ ਜਾ ਚੁੱਕਾ ਹੈ" #~ msgid "" #~ "Certificate uses an insecure cipher algorithm or is cryptographically weak" #~ msgstr "ਸਰਟੀਫਿਕੇਟ ਅਸੁਰੱਖਿਅਤ ਸੀਫ਼ਰ ਐਲਗੋਰਿਥਮ ਵਰਤਦਾ ਹੈ ਜਾਂ ਕਮਜ਼ੋਰ ਕ੍ਰਿਪਟੋਗਰਾਫਿਕਲ ਵਰਤਦਾ ਹੈ" #~ msgid "" #~ "The length of the server certificate, or the depth of the server " #~ "certificate chain, exceed the limits imposed by the cryptography library" #~ msgstr "" #~ "ਸਰਵਰ ਸਰਟੀਫਿਕੇਟ ਦੀ ਲੰਬਾਈ ਜਾਂ ਸਰਵਰ ਸਰਟੀਫਿਕੇਟ ਚੇਨ ਦੀ ਡੂੰਘਾਈ ਕ੍ਰਿਪਟੂਗਰਾਫ਼ੀ ਲਾਇਬਰੇਰੀ ਵਲੋਂ " #~ "ਰੱਖੀ ਗਈ ਲਿਮਟ ਤੋਂ ਵੱਧ ਗਈ ਹੈ।" #~ msgid "Internal error" #~ msgstr "ਅੰਦਰੂਨੀ ਗਲਤੀ" #~ msgid "View account" #~ msgstr "ਅਕਾਊਂਟ ਵੇਖੋ" #~ msgid "Date & Time Settings" #~ msgstr "ਮਿਤੀ ਤੇ ਸਮਾਂ ਸੈਟਿੰਗ" #~ msgid "Open" #~ msgstr "ਖੋਲ੍ਹੋ" #~ msgid "Clear Messages" #~ msgstr "ਸੁਨੇਹੇ ਸਾਫ਼ ਕਰੋ" #~ msgid "Notification Settings" #~ msgstr "ਸੂਚਨਾ ਸੈਟਿੰਗ" #~ msgid "No Messages" #~ msgstr "ਕੋਈ ਸੁਨੇਹਾ ਨਹੀਂ" #~ msgid "Message Tray" #~ msgstr "ਸੁਨੇਹਾ ਟਰੇ" #~ msgid "The maximum accuracy level of location." #~ msgstr "ਟਿਕਾਣੇ ਦੀ ਵੱਧ ਤੋਂ ਵੱਧ ਸ਼ੁੱਧਤਾ ਦਾ ਪੱਧਰ।" #~ msgid "" #~ "Configures the maximum level of location accuracy applications are " #~ "allowed to see. Valid options are 'off' (disable location tracking), " #~ "'country', 'city', 'neighborhood', 'street', and 'exact' (typically " #~ "requires GPS receiver). Please keep in mind that this only controls what " #~ "GeoClue will allow applications to see and they can find user's location " #~ "on their own using network resources (albeit with street-level accuracy " #~ "at best)." #~ msgstr "" #~ "ਟਿਕਾਣੇ ਦੀ ਵੱਧ ਤੋਂ ਵੱਧ ਸ਼ੁੱਧਤਾ ਦਰਸਾਉਣ ਦੀ ਸੰਰਚਨਾ ਕਰੋ, ਜੋ ਕਿ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਵੇਖਣ ਦੀ ਮਨਜ਼ੂਰੀ ਹੈ। " #~ "ਢੁੱਕਵੀਆਂ ਚੋਣਾਂ ਵਿੱਚ ਹਨ 'ਬੰਦ' (ਟਿਕਾਣਾ ਸਾਂਝਾ ਕਰਨਾ ਬੰਦ), 'ਦੇਸ਼', 'ਸ਼ਹਿਰ', 'ਆਂਢ-ਗੁਆਂਢ', " #~ "'ਗਲੀ' ਅਤੇ 'ਠੀਕ' (ਅਕਸਰ ਜੀਪੀਐਸ ਰਸੀਵਰ ਚਾਹੀਦਾ ਹੈ)। ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਵਿੱਚ ਰੱਖੋ ਕਿ ਇਹ " #~ "ਕੇਵਲ GeoClue ਰਾਹੀਂ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਵਿਖਾਏ ਜਾਣ ਵਾਲੇ ਨੂੰ ਕੰਟਰੋਲ ਕਰਦਾ ਹੈ ਅਟੇ ਉਹ ਆਪਣੇ ਨੈੱਟਵਰਕ " #~ "ਸਰੋਤਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਯੂਜ਼ਰ ਦਾ ਟਿਕਾਣਾ ਲੱਭ ਸਕਦੇ ਹਨ (ਹਾਲਾਂਕਿ ਸ਼ੁੱਧ ਰੂਪ ਵਿੱਚ ਵੱਧ ਤੋਂ ਵੱਧ ਕੇਵਲ ਗਲੀ-" #~ "ਪੱਧਰ ਤੱਕ ਹੀ)।" #~ msgid "Arrangement of buttons on the titlebar" #~ msgstr "ਟਾਈਟਲ-ਪੱਟੀ ਵਿੱਚ ਬਟਨਾਂ ਦਾ ਪ੍ਰਬੰਧ" #~ msgid "" #~ "This key overrides the key in org.gnome.desktop.wm.preferences when " #~ "running GNOME Shell." #~ msgstr "" #~ "ਇਹ ਕੁੰਜੀ ਗਨੋਮ ਸ਼ੈੱਲ ਚੱਲਣ ਦੇ ਦੌਰਾਨ org.gnome.desktop.wm.preference ਕੁੰਜੀ ਨੂੰ ਅਣਡਿੱਠਾ " #~ "ਕਰਦੀ ਹੈ।" #~ msgid "Select an extension to configure using the combobox above." #~ msgstr "ਉੱਤੇ ਦਿੱਤੇ ਕੰਬੋਬਾਕਸ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇਕਸਟੈਸ਼ਨ ਦੀ ਸੰਰਚਨਾ ਕਰਨ ਲਈ ਚੋਣ ਕਰੋ।" #~ msgid "calendar:MY" #~ msgstr "calendar:MY" #~ msgid "unavailable" #~ msgstr "ਨਾ-ਉਪਲੱਬਧ" #~ msgid "List of categories that should be displayed as folders" #~ msgstr "ਕੈਟਾਗਰੀਆਂ ਦੀ ਸੂਚੀ, ਜੋ ਕਿ ਫੋਲਡਰ ਵਜੋਂ ਵੇਖਾਈਆਂ ਜਾਣੀਆਂ ਚਾਹੀਦੀਆਂ ਹਨ" #~ msgid "" #~ "Each category name in this list will be represented as folder in the " #~ "application view, rather than being displayed inline in the main view." #~ msgstr "" #~ "ਇਹ ਸੂਚੀ ਵਿੱਚ ਹਰੇਕ ਕੈਟਾਗਰੀ ਨਾਂ ਨੂੰ ਐਪਲੀਕੇਸ਼ਨ ਝਲਕ ਵਿੱਚ ਫੋਲਡਰ ਵਜੋਂ ਵੇਖਾਇਆ ਜਾਵੇਗਾ, ਨਾ ਕਿ ਮੁੱਖ " #~ "ਝਲਕ ਵਿੱਚ ਲਾਈਨ ਵਿੱਚ ਵੇਖਾਇਆ।" #~ msgid "%A, %H:%M" #~ msgstr "%A, %H:%M" #~ msgid "%B %d, %H:%M" #~ msgstr "%d %B,%H:%M" #~ msgid "%B %d %Y, %H:%M " #~ msgstr "%d %B %Y, %H:%M " #~ msgid "Authorization request from %s" #~ msgstr "'%s' ਤੋਂ ਪਰਮਾਣਕਿਤਾ ਮੰਗ" #~ msgid "Device %s wants to pair with this computer" #~ msgstr "ਜੰਤਰ %s ਇਸ ਕੰਪਿਊਟਰ ਨਾਲ ਪੇਅਰ ਹੋਣਾ ਚਾਹੁੰਦਾ ਹੈ" #~ msgid "Device %s wants access to the service '%s'" #~ msgstr "ਜੰਤਰ %s ਸਰਵਿਸ '%s' ਨੂੰ ਵਰਤਣੀ ਚਾਹੁੰਦਾ ਹੈ।" #~ msgid "Grant this time only" #~ msgstr "ਕੇਵਲ ਇਸ ਸਮੇਂ ਹੀ ਮਨਜ਼ੂਰ" #~ msgid "Reject" #~ msgstr "ਨਾ-ਮਨਜ਼ੂਰ" #~ msgid "Pairing confirmation for %s" #~ msgstr "%s ਲਈ ਪੇਅਰ ਕਰਨ ਦੀ ਪੁਸ਼ਟੀ" #~ msgid "" #~ "Please confirm whether the Passkey '%06d' matches the one on the device." #~ msgstr "ਪੁਸ਼ਟੀ ਕਰੋ ਜੀ ਕਿ ਪਾਸ-ਕੀ '%06d' ਜੰਤਰ ਉੱਤੇ ਮੌਜੂਦ ਪਿੰਨ ਨਾਲ ਮਿਲਦਾ ਹੈ।" #~ msgid "Does not match" #~ msgstr "ਮਿਲਦਾ ਨਹੀਂ ਹੈ" #~ msgid "Pairing request for %s" #~ msgstr "%s ਲਈ ਪੇਅਰ ਕਰਨ ਦੀ ਮੰਗ" #~ msgid "Please enter the PIN mentioned on the device." #~ msgstr "ਜੰਤਰ ਉੱਤੇ ਦਿੱਤਾ ਗਿਆ ਪਿੰਨ ਦਿਉ ਜੀ।" #~ msgid "OK" #~ msgstr "ਠੀਕ ਹੈ" #~ msgid "" #~ "Sorry, no wisdom for you today:\n" #~ "%s" #~ msgstr "" #~ "ਅਫਸੋਸ, ਅੱਜ ਤੁਹਾਡੇ ਲਈ ਕੋਈ ਨਸੀਹਤ ਨਹੀਂ:\n" #~ "%s " #~ msgid "%s the Oracle says" #~ msgstr "%s ਓਰੇਕਲ ਨੇ ਕਿਹਾ" #~ msgctxt "event list time" #~ msgid "%H\\u2236%M" #~ msgstr "%H\\u2236%M" #~ msgctxt "event list time" #~ msgid "%l\\u2236%M\\u2009%p" #~ msgstr "%l\\u2236%M\\u2009%p" #~ msgid "Settings Menu" #~ msgstr "ਸੈਟਿੰਗ ਮੇਨੂ" #~ msgid "" #~ "Internally used to store the last IM presence explicitly set by the user. " #~ "The value here is from the TpConnectionPresenceType enumeration." #~ msgstr "" #~ "ਯੂਜ਼ਰ ਵਲੋਂ ਆਖਰੀ IM ਵਿੱਚ ਮੌਜੂਦਗੀ ਸਥਿਤੀ ਸਟੋਰ ਕਰਨ ਲਈ ਅੰਦਰੂਨੀ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ। " #~ "TpConnectionPresenceType ਤੋਂ ਇੱਥੇ ਮੁੱਲ।" #~ msgid "" #~ "Internally used to store the last session presence status for the user. " #~ "The value here is from the GsmPresenceStatus enumeration." #~ msgstr "" #~ "ਯੂਜ਼ਰ ਵਲੋਂ ਆਖਰੀ ਸ਼ੈਸ਼ਨ ਵਿੱਚ ਮੌਜੂਦਗੀ ਸਥਿਤੀ ਸਟੋਰ ਕਰਨ ਲਈ ਅੰਦਰੂਨੀ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ। " #~ "GsmPresenceStatus ਤੋਂ ਇੱਥੇ ਮੁੱਲ।" #~ msgid "Click Log Out to quit these applications and log out of the system." #~ msgstr "ਇਹ ਐਪਲੀਕੇਸ਼ਨ ਬੰਦ ਕਰਨ ਤੇ ਸਿਸਟਮ ਨੂੰ ਲਾਗਆਉਟ ਕਰਨ ਲਈ ਲਾਗਆਉਟ ਕਰੋ ਨੂੰ ਕਲਿੱਕ ਕਰੋ।" #~ msgid "Logging out of the system." #~ msgstr "ਸਿਸਟਮ ਲਾਗ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ।" #~ msgid "Click Power Off to quit these applications and power off the system." #~ msgstr "ਇਹ ਐਪਲੀਕੇਸ਼ਨਾਂ ਬੰਦ ਕਰਨ ਅਤੇ ਸਿਸਟਮ ਨੂੰ ਬੰਦ ਕਰਨ ਲਈ ਬੰਦ ਕਰੋ ਨੂੰ ਕਲਿੱਕ ਕਰੋ।" #~ msgid "Powering off the system." #~ msgstr "ਸਿਸਟਮ ਬੰਦ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ।" #~ msgid "Click Restart to quit these applications and restart the system." #~ msgstr "ਇਹ ਐਪਲੀਕੇਸ਼ਨ ਬੰਦ ਕਰਨ ਤੇ ਸਿਸਟਮ ਨੂੰ ਮੁੜ-ਚਾਲੂ ਕਰਨ ਲਈ ਮੁੜ-ਚਾਲੂ ਕਰੋ ਨੂੰ ਕਲਿੱਕ ਕਰੋ।" #~ msgid "Restarting the system." #~ msgstr "ਸਿਸਟਮ ਮੁੜ-ਚਾਲੂ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ।" #~ msgid "Shutting down might cause them to lose unsaved work." #~ msgstr "ਬੰਦ ਕਰਨ ਨਾਲ ਉਹਨਾਂ ਵਲੋਂ ਨਾ-ਸੰਭਾਲਿਆ ਕੰਮ ਖਰਾਬ ਹੋ ਸਕਦਾ ਹੈ।" #~ msgid "Whether to collect stats about applications usage" #~ msgstr "ਐਪਲੀਕੇਸ਼ਨ ਵਰਤੋਂ ਬਾਰੇ ਅੰਕੜੇ ਇੱਕਠੇ ਕਰਨੇ ਹਨ" #~ msgid "" #~ "The shell normally monitors active applications in order to present the " #~ "most used ones (e.g. in launchers). While this data will be kept private, " #~ "you may want to disable this for privacy reasons. Please note that doing " #~ "so won't remove already saved data." #~ msgstr "" #~ "ਸ਼ੈੱਲ ਲਗਾਤਾਰ ਸਰਗਰਮ ਐਪਲੀਕੇਸ਼ਨ ਦੀ ਨਿਗਰਾਨੀ ਕਰਦੀ ਰਹਿੰਦੀ ਹੈ ਤਾਂ ਕਿ ਸਭ ਤੋਂ ਵੱਧ ਵਰਤੀਆਂ " #~ "ਐਪਲੀਕੇਸ਼ਨਾਂ ਨੂੰ ਵੇਖਾਇਆ ਜਾ ਸਕੇ (ਜਿਵੇਂ ਕਿ ਲਾਂਚਰ ਵਿੱਚ)। ਹਾਲਾਂਕਿ ਇਹ ਡਾਟਾ ਪ੍ਰਾਈਵੇਟ ਹੀ ਰੱਖਿਆ " #~ "ਜਾਵੇਗਾ, ਤਾਂ ਵੀ ਜੇ ਤੁਸੀਂ ਚਾਹੋ ਤਾਂ ਇਸ ਨੂੰ ਸੁਰੱਖਿਆ ਕਾਰਨਾਂ ਕਰਕੇ ਬੰਦ ਕਰ ਸਕਦੇ ਹੋ। ਯਾਦ ਰੱਖੋ ਕਿ ਇੰਝ " #~ "ਕਰਨ ਨਾਲ ਪਹਿਲਾਂ ਸੰਭਾਲਿਆ ਗਿਆ ਡਾਟਾ ਹਟਾਇਆ ਨਹੀਂ ਜਾਵੇਗਾ।" #~ msgid "Keybinding to toggle the screen recorder" #~ msgstr "ਸਕਰੀਨ ਰਿਕਾਡਰ ਨੂੰ ਬਦਲਣ ਲਈ ਕੀਬਾਈਡਿੰਗ" #~ msgid "Keybinding to start/stop the builtin screen recorder." #~ msgstr "ਬਿਲਟ-ਇਨ ਸਕਰੀਨ ਰਿਕਾਰਡ ਨੂੰ ਸ਼ੁਰੂ ਕਰਨ/ਰੋਕਣ ਲਈ ਕੀਬਾਈਡਿੰਗ" #~ msgid "Framerate used for recording screencasts." #~ msgstr "ਸਕਰੀਨਕਾਸਟ ਰਿਕਾਰਡ ਕਰਨ ਲਈ ਫਰੇਮਰੇਟ ਹੈ।" #~ msgid "" #~ "The framerate of the resulting screencast recordered by GNOME Shell's " #~ "screencast recorder in frames-per-second." #~ msgstr "" #~ "ਗਨੋਮ ਸ਼ੈੱਲ ਦੇ ਸਕਰੀਨਕਾਸਟ ਰਿਕਾਰਡਰ ਵਲੋਂ ਰਿਕਾਰਡ ਕਰਕੇ ਬਣਾਈ ਗਈ ਸਕਰੀਨਕਾਸਟ ਦਾ ਫਰੇਮਰੇਟ ਫਰੇਮ " #~ "ਪ੍ਰਤੀ ਸਕਿੰਟ 'ਚ ਹੈ।" #~ msgid "The gstreamer pipeline used to encode the screencast" #~ msgstr "ਸਕਰੀਨਕਾਸਟ ਇੰਕੋਡ ਕਰਨ ਲਈ ਵਰਤਣ ਵਾਸਤੇ ਜੀਸਟਰੀਮਰ ਪਾਇਪਲਾਇਨ" #~ msgid "" #~ "Sets the GStreamer pipeline used to encode recordings. It follows the " #~ "syntax used for gst-launch. The pipeline should have an unconnected sink " #~ "pad where the recorded video is recorded. It will normally have a " #~ "unconnected source pad; output from that pad will be written into the " #~ "output file. However the pipeline can also take care of its own output - " #~ "this might be used to send the output to an icecast server via shout2send " #~ "or similar. When unset or set to an empty value, the default pipeline " #~ "will be used. This is currently 'vp8enc min_quantizer=13 max_quantizer=13 " #~ "cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux' and records to " #~ "WEBM using the VP8 codec. %T is used as a placeholder for a guess at the " #~ "optimal thread count on the system." #~ msgstr "" #~ "ਰਿਕਾਰਡਿੰਗ ਇੰਕੋਡ ਕਰਨ ਲਈ ਜੀਸਟੀਮਰ ਪਾਇਪਲਾਈਨ ਸੈੱਟ ਕਰੋ। ਇਹ gst-launch ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ " #~ "ਸੰਟੈਕਸ ਵਰਤਦਾ ਹੈ। ਪਾਇਪਲਾਈਨ ਲਈ ਸਿੰਕ ਪੈਡ ਲਈ ਕੁਨੈਕਟ ਨਹੀਂ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ, ਜਿੱਥੇ ਰਿਕਾਰਡ ਹੋਣ " #~ "ਵਾਲੀ ਵਿਡੀਓ ਰਿਕਾਰਡ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ। ਇਹ ਆਮ ਤੌਰ ਉੱਤੇ ਨਾ-ਕੁਨੈਕਟ ਕੀਤਾ ਸਰੋਤ ਪੈਡ ਹੋਵੇਗਾ, ਉਸ " #~ "ਪੈਡ ਤੋਂ ਆਉਟਪੁੱਟ ਨੂੰ ਆਉਟਪੁੱਟ ਫਾਇਲ ਵਿੱਚ ਲਿਖਿਆ ਜਾਵੇਗਾ। ਪਰ ਪਾਈਪਲਾਈਨ ਖੁਦ ਦੀ ਆਉਟਪੁੱਟ ਦਾ ਧਿਆਨ " #~ "ਵੀ ਰੱਖ ਸਕਦੀ ਹੈ - ਇਸ ਨਾਲ ਆਉਟਪੁੱਟ ਨੂੰ icecast ਸਰਵਰ ਉੱਤੇ shout2send ਜਾਂ ਕਿਸੇ ਹੋਰ ਰਾਹੀਂ " #~ "ਵੀ ਭੇਜਿਆ ਜਾ ਸਕਦਾ ਹੈ। ਜਦੋਂ ਅਣ-ਸੈੱਟ ਕੀਤਾ ਜਾਂ ਖਾਲੀ ਮੁੱਲ ਨਾਲ ਸੈੱਟ ਕੀਤਾ ਤਾਂ, ਡਿਫਾਲਟ " #~ "ਪਾਈਪਲਾਈਨ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ। ਇਸ ਇਸ ਵੇਲੇ 'vp8enc min_quantizer=13 max_quantizer=13 " #~ "cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux' ਹੈ ਅਤੇ VP8 codec " #~ "ਦੀ ਵਰਤੋਂ ਕਰਕੇ WEBM ਨਾਲ ਰਿਕਾਰਡ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। %T ਸਿਸਟਮ ਉੱਤੇ ਢੁੱਕਵੀ ਥਰਿੱਡ ਗਿਣਤੀ ਦਾ " #~ "ਅੰਦਾਜ਼ਾ ਲਗਾਉਣ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ।" #~ msgid "File extension used for storing the screencast" #~ msgstr "ਸਕਰੀਨਕਾਸਟ ਸੰਭਾਲਣ ਲਈ ਵਰਤਣ ਵਾਸਤੇ ਫਾਇਲ ਇਕਟੈਨਸ਼ਨ" #~ msgid "" #~ "The filename for recorded screencasts will be a unique filename based on " #~ "the current date, and use this extension. It should be changed when " #~ "recording to a different container format." #~ msgstr "" #~ "ਰਿਕਾਰਡ ਕੀਤੇ ਸਕਰੀਨਕਾਸਟ ਲਈ ਫਾਇਲ ਨਾਂ ਮੌਜੂਦਾ ਮਿਤੀ ਦੇ ਮੁਤਾਬਕ ਵਿਲੱਖਣ ਫਾਇਲ ਨਾਂ ਹੋਵੇਗਾ ਅਤੇ " #~ "ਇਹ ਇਕਸਟੈਨਸ਼ਨ ਵਰਤੀ ਜਾਵੇਗੀ। ਇਸ ਨੂੰ ਬਦਲਿਆ ਜਾਵੇਗਾ, ਜਦੋਂ ਵੱਖਰੇ ਕੰਨਟੇਨਰ ਫਾਰਮੈਟ ਵਿੱਚ ਰਿਕਾਰਡ " #~ "ਕੀਤਾ ਜਾਵੇਗਾ।" #~ msgid "Power" #~ msgstr "ਪਾਵਰ" #~ msgid "Universal Access Settings" #~ msgstr "ਯੂਨੀਵਰਸਲ ਅਸੈੱਸ ਸੈਟਿੰਗ" #~ msgid "Visibility" #~ msgstr "ਦਿੱਖ" #~| msgid "Set Up a New Device..." #~ msgid "Set Up a New Device…" #~ msgstr "…ਨਵਾਂ ਜੰਤਰ ਸੈਟਅੱਪ ਕਰੋ" #~| msgid "Send Files..." #~ msgid "Send Files…" #~ msgstr "…ਫਾਇਲਾਂ ਭੇਜੋ" #~ msgid "Mouse Settings" #~ msgstr "ਮਾਊਸ ਸੈਟਿੰਗ" #~ msgid "Volume, network, battery" #~ msgstr "ਵਾਲੀਅਮ, ਨੈੱਟਵਰਕ, ਬੈਟਰੀ" #~ msgid "disabled" #~ msgstr "ਬੰਦ ਹੈ" #~ msgid "cable unplugged" #~ msgstr "ਕੇਬਲ ਕੱਢੀ ਹੋਈ ਹੈ" #~ msgid "More…" #~ msgstr "…ਹੋਰ" #~ msgid "Wired" #~ msgstr "ਤਾਰ" #~ msgid "Auto Ethernet" #~ msgstr "ਆਟੋ ਈਥਰਨੈੱਟ" #~ msgid "Auto broadband" #~ msgstr "ਆਟੋ ਬਰਾਡਬੈਂਡ" #~ msgid "Auto dial-up" #~ msgstr "ਆਟੋ ਡਾਇਲ-ਅੱਪ" #~ msgid "Auto %s" #~ msgstr "ਆਟੋ %s" #~ msgid "Auto bluetooth" #~ msgstr "ਆਟੋ ਬਲਿਊਟੁੱਥ" #~ msgid "Auto wireless" #~ msgstr "ਆਟੋ ਬੇਤਾਰ" #~ msgid "Wi-Fi" #~ msgstr "ਵਾਈ-ਫਾਈ" #~ msgid "%d hour remaining" #~ msgid_plural "%d hours remaining" #~ msgstr[0] "%d ਘੰਟਾ ਬਾਕੀ" #~ msgstr[1] "%d ਘੰਟੇ ਬਾਕੀ" #~ msgid "%d %s %d %s remaining" #~ msgstr "%d %s %d %s ਬਾਕੀ" #~ msgid "hour" #~ msgid_plural "hours" #~ msgstr[0] "ਘੰਟਾ" #~ msgstr[1] "ਘੰਟੇ" #~ msgid "minute" #~ msgid_plural "minutes" #~ msgstr[0] "ਮਿੰਟ" #~ msgstr[1] "ਮਿੰਟ" #~ msgid "%d minute remaining" #~ msgid_plural "%d minutes remaining" #~ msgstr[0] "%d ਮਿੰਟ ਬਾਕੀ" #~ msgstr[1] "%d ਮਿੰਟ ਬਾਕੀ" #~ msgid "AC Adapter" #~ msgstr "AC ਐਡਪਟਰ" #~ msgid "Laptop Battery" #~ msgstr "ਲੈਪਟਾਪ ਬੈਟਰੀ" #~ msgid "Monitor" #~ msgstr "ਮਾਨੀਟਰ" #~ msgid "Mouse" #~ msgstr "ਮਾਊਸ" #~ msgid "PDA" #~ msgstr "PDA" #~ msgid "Cell Phone" #~ msgstr "ਸੈੱਲ ਫੋਨ" #~ msgid "Media Player" #~ msgstr "ਮੀਡਿਆ ਪਲੇਅਰ" #~ msgid "Tablet" #~ msgstr "ਟੇਬਲੇਟ" #~ msgid "Computer" #~ msgstr "ਕੰਪਿਊਟਰ" #~ msgctxt "device" #~ msgid "Unknown" #~ msgstr "ਅਣਜਾਣ" #~ msgid "Busy" #~ msgstr "ਰੁਝਿਆ" #~ msgid "Invisible" #~ msgstr "ਅਦਿੱਖ" #~ msgid "Away" #~ msgstr "ਦੂਰ" #~ msgid "Idle" #~ msgstr "ਵੇਹਲਾ" #~ msgid "Your chat status will be set to busy" #~ msgstr "ਤੁਹਾਡੀ ਚੈਟ ਹਾਲਤ ਰੁੱਝੇ ਵਜੋਂ ਸੈੱਟ ਕੀਤੀ ਜਾਵੇਗੀ" #~ msgid "" #~ "Notifications are now disabled, including chat messages. Your online " #~ "status has been adjusted to let others know that you might not see their " #~ "messages." #~ msgstr "" #~ "ਨੋਟੀਫਿਕੇਸ਼ਨ ਹੁਣ ਬੰਦ ਕੀਤੇ ਹੋਏ ਹਨ, ਜਿਸ ਵਿੱਚ ਗੱਲਬਾਤ (ਚੈਟ) ਸੁਨੇਹੇ ਵੀ ਹਨ। ਤੁਹਾਡੇ ਆਨਲਾਈਨ ਹਾਲਤ " #~ "ਨੂੰ ਵੀ ਅਡਜੱਸਟ ਕੀਤਾ ਜਾਵੇਗਾ ਤਾਂ ਕਿ ਹੋਰਾਂ ਨੂੰ ਇਹ ਪਤਾ ਲੱਗ ਸਕੇ ਕਿ ਤੁਸੀਂ ਉਹਨਾਂ ਦੇ ਸੁਨੇਹੇ ਸ਼ਾਇਦ ਨਾ " #~ "ਵੇਖੋਗੇ।" #~ msgctxt "title" #~ msgid "Sign In" #~ msgstr "ਸਾਇਨ ਇਨ" #~ msgid "tray" #~ msgstr "ਟਰੇ" #~ msgid "More..." #~ msgstr "ਹੋਰ..." #~ msgctxt "event list time" #~ msgid "%H:%M" #~ msgstr "%H:%M" #~ msgctxt "event list time" #~ msgid "%l:%M %p" #~ msgstr "%l:%M %p" #~ msgid "United Kingdom" #~ msgstr "ਬਰਤਾਨੀਆ" #~ msgid "Default" #~ msgstr "ਡਿਫਾਲਟ" #~ msgid "Show full name in the user menu" #~ msgstr "ਯੂਜ਼ਰ ਮੇਨੂ ਵਿੱਚ ਪੂਰਾ ਨਾਂ ਵੇਖਾਓ" #~ msgid "Whether the users full name is shown in the user menu or not." #~ msgstr "ਕੀ ਯੂਜ਼ਰ ਮੇਨੂ ਵਿੱਚ ਪੂਰਾ ਯੂਜ਼ਰ ਨਾਂ ਵੇਖਾਉਣਾ ਹੈ ਜਾਂ ਨਹੀਂ।" #~ msgid "APPLICATIONS" #~ msgstr "ਐਪਲੀਕੇਸ਼ਨ" #~ msgid "SETTINGS" #~ msgstr "ਸੈਟਿੰਗ" #~ msgid "Your favorite Easter Egg" #~ msgstr "ਤੁਹਾਡਾ ਪਸੰਦੀਦਾ ਈਸਟਰ ਅੰਡਾ" #~ msgid "Subscription request" #~ msgstr "ਮੈਂਬਰੀ ਦੀ ਮੰਗ" #~ msgid "Sent at %X on %A" #~ msgstr "%2$A ਨੂੰ %1$X ਵਜੇ ਭੇਜਿਆ" #~ msgid "Sent on %A, %B %d, %Y" #~ msgstr "%A %B %d, %Y ਨੂੰ ਭੇਜਿਆ" #~ msgid "Connection to %s failed" #~ msgstr "%s ਲਈ ਕੁਨੈਕਸ਼ਨ ਫੇਲ੍ਹ ਹੈ" #~ msgid "Reconnect" #~ msgstr "ਮੁੜ-ਕੁਨੈਕਟ ਕਰੋ" #~ msgid "Browse Files..." #~ msgstr "...ਫਾਇਲਾਂ ਦੀ ਝਲਕ" #~ msgid "Error browsing device" #~ msgstr "ਜੰਤਰ ਬਰਾਊਜ਼ ਕਰਨ ਲਈ ਗਲਤੀ" #~ msgid "The requested device cannot be browsed, error is '%s'" #~ msgstr "ਮੰਗ ਕੀਤੇ ਗਏ ਜੰਤਰ ਨੂੰ ਬਰਾਊਜ਼ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ, ਗਲਤੀ ਸੀ '%s'" #~ msgid "Wireless" #~ msgstr "ਬੇਤਾਰ" #~ msgid "VPN Connections" #~ msgstr "VPN ਕੁਨੈਕਸ਼ਨ" #~ msgid "System Settings" #~ msgstr "ਸਿਸਟਮ ਸੈਟਿੰਗ" #~ msgid "disabled OpenSearch providers" #~ msgstr "ਓਪਨਸਰਚ ਉਪਲੱਬਧ ਕਰਵਾਉਣ ਵਾਲੇ ਬੰਦ ਹਨ" #~ msgid "Failed to unmount '%s'" #~ msgstr "'%s' ਅਣ-ਮਾਊਂਟ ਕਰਨ ਲਈ ਫੇਲ੍ਹ" #~ msgid "Retry" #~ msgstr "ਮੁੜ-ਕੋਸ਼ਿਸ਼" #~ msgid "PLACES & DEVICES" #~ msgstr "ਥਾਵਾਂ ਅਤੇ ਜੰਤਰ" #~ msgid "%1$s: %2$s" #~ msgstr "%1$s: %2$s" #~ msgid "Passphrase" #~ msgstr "ਵਾਕ" #~| msgid "Unknown" #~ msgctxt "contact" #~ msgid "Unknown" #~ msgstr "ਅਣਜਾਣ" #~ msgid "CONTACTS" #~ msgstr "ਸੰਪਰਕ" #~ msgid "%s is online." #~ msgstr "%s ਆਨਲਾਈਨ ਹੈ।" #~ msgid "%s is offline." #~ msgstr "%s ਆਫਲਾਈਨ ਹੈ।" #~ msgid "%s is away." #~ msgstr "%s ਦੂਰ ਹੈ।" #~ msgid "%s is busy." #~ msgstr "%s ਰੁੱਝਿਆ/ਰੁੱਝੀ ਹੈ।" #~ msgid "Show time with seconds" #~ msgstr "ਸਮਾਂ ਵਿੱਚ ਸਕਿੰਟ ਵੇਖੋ" #~ msgid "If true, display seconds in time." #~ msgstr "ਜੇ ਸੱਚ ਹੈ ਤਾਂ ਸਮਾਂ ਵਿੱਚ ਸਕਿੰਟ ਵੀ ਵੇਖਾਏ ਜਾਣਗੇ।" #~ msgid "Show date in clock" #~ msgstr "ਘੜੀ ਵਿੱਚ ਮਿਤੀ ਵੇਖੋ" #~ msgid "If true, display date in the clock, in addition to time." #~ msgstr "ਜੇ ਸੱਚ ਹੈ ਤਾਂ, ਘੜੀ ਵਿਚ ਸਮਾਂ ਨਾਲ ਮਿਤੀ ਵੀ ਵੇਖਾਈ ਜਾਵੇਗੀ।" #~ msgid "%a %b %e, %R:%S" #~ msgstr "%a, %e %b %R:%S" #~ msgid "%a %b %e, %R" #~ msgstr "%a %e %b, %R" #~ msgid "%a %R:%S" #~ msgstr "%a %R:%S" #~ msgid "%a %R" #~ msgstr "%a %R" #~ msgid "%a %b %e, %l:%M:%S %p" #~ msgstr "%a %e %b, %l:%M:%S %p" #~ msgid "%a %l:%M:%S %p" #~ msgstr "%a %l:%M:%S %p" #~ msgid "Hidden" #~ msgstr "ਲੁਕਵਾਂ" #~ msgid "Power Off..." #~ msgstr "...ਬੰਦ ਕਰੋ" #~ msgid "Online Accounts" #~ msgstr "ਆਨਲਾਈਨ ਅਕਾਊਂਟ" #~ msgid "Log Out..." #~ msgstr "...ਲਾਗਆਉਟ" #~ msgid "" #~ "GNOME Shell extensions have a uuid property; this key lists extensions " #~ "which should be loaded. disabled-extensions overrides this setting for " #~ "extensions that appear in both lists." #~ msgstr "" #~ "ਗਨੋਮ ਸ਼ੈਲ ਇਕਸਟੈਨਸ਼ਨ ਲਈ ਇੱਕ uuid ਵਿਸ਼ੇਸ਼ਤਾ ਹੈ; ਇਹ ਕੁੰਜੀ ਇਕਸਟੈਨਸ਼ਨ ਦਰਸਾਉਂਦੀ ਹੈ, ਜੋ ਲੋਡ ਹਨ। " #~ "disabled-extensions ਇਹ ਸੈਟਿੰਗ ਉਹਨਾਂ ਇਕਸਟੈਨਸ਼ਨਾਂ ਨੂੰ ਅਣਡਿੱਠਾ ਕਰਦੀ ਹੈ, ਜੋ ਦੋਵੇਂ ਲਿਸਟਾਂ ਵਿੱਚ " #~ "ਹੁੰਦੀਆਂ ਹਨ।" #~ msgid "RECENT ITEMS" #~ msgstr "ਤਾਜ਼ਾ ਆਈਟਮਾਂ" #~ msgid "Show password" #~ msgstr "ਪਾਸਵਰਡ ਵੇਖਾਓ" #~ msgid "%s has finished starting" #~ msgstr "%s ਸ਼ੁਰੂ ਹੋਣਾ ਖਤਮ ਹੋਇਆ" #~ msgid "If true, display onscreen keyboard." #~ msgstr "ਜੇ ਚੋਣ ਕੀਤੀ ਤਾਂ ਆਨਸਕਰੀਨ ਕੀਬੋਰਡ ਵੇਖਾਇਆ ਜਾਵੇਗਾ।" #~ msgid "Connectivity lost" #~ msgstr "ਕੁਨੈਕਸ਼ਨ ਟੁੱਟ ਗਿਆ" #~| msgid "You're no longer connected to the network" #~ msgid "You are no longer connected to the network" #~ msgstr "ਹੁਣ ਤੁਸੀਂ ਨੈੱਟਵਰਕ ਨਾਲ ਕੁਨਕੈਟ ਨਹੀਂ ਰਹੇ ਹੋ" #~ msgid "calendar:week_start:0" #~ msgstr "calendar:week_start:1" #~ msgid "Uuids of extensions to disable" #~ msgstr "ਇਕਟੈਨਸ਼ਨ ਦੀ Uuids ਬੰਦ ਹੈ" #~ msgid "You're now connected to mobile broadband connection '%s'" #~ msgstr "ਹੁਣ ਤੁਸੀਂ ਮੋਬਾਇਲ ਬਰਾਡਬੈਂਡ ਨੈੱਟਵਰਕ '%s' ਨਾਲ ਕੁਨੈਕਟ ਹੋ ਗਏ ਹੋ" #~ msgid "You're now connected to wireless network '%s'" #~ msgstr "ਹੁਣ ਤੁਸੀਂ ਬੇਤਾਰ ਨੈੱਟਵਰਕ '%s' ਨਾਲ ਕੁਨੈਕਟ ਹੋ ਗਏ ਹੋ" #~ msgid "You're now connected to VPN network '%s'" #~ msgstr "ਤੁਸੀਂ ਹੁਣ VPN ਨੈੱਟਵਰਕ '%s' ਨਾਲ ਕੁਨੈਕਟ ਹੋ ਚੁੱਕੇ ਹੋ" #~ msgid "Localization Settings" #~ msgstr "ਲੋਕਲਾਈਜ਼ੇਸ਼ਨ ਸੈਟਿੰਗ" #~ msgid "Less than a minute ago" #~ msgstr "ਇੱਕ ਮਿੰਟ ਤੋਂ ਘੱਟ ਚਿਰ ਪਹਿਲਾਂ" #~ msgid "Shut Down" #~ msgstr "ਬੰਦ ਕਰੋ" #~ msgid "Click Shut Down to quit these applications and shut down the system." #~ msgstr "ਇਹ ਐਪਲੀਕੇਸ਼ਨ ਬੰਦ ਕਰਕੇ ਸਿਸਟਮ ਨੂੰ ਬੰਦ ਕਰਨ ਲਈ ਬੰਦ ਕਰੋ ਨੂੰ ਕਲਿੱਕ ਕਰੋ।" #~ msgid "The system will shut down automatically in %d seconds." #~ msgstr "ਸਿਸਟਮ ਨੂੰ ਆਟੋਮੈਟਿਕ ਹੀ %d ਸਕਿੰਟਾਂ ਵਿੱਚ ਬੰਦ ਕੀਤਾ ਜਾਵੇਗਾ।" #~ msgid "Shutting down the system." #~ msgstr "ਸਿਸਟਮ ਬੰਦ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ।" #~ msgid "Confirm" #~ msgstr "ਪੁਸ਼ਟੀ" #~ msgid "PREFERENCES" #~ msgstr "ਪਸੰਦ" #~ msgid "Clip the crosshairs at the center" #~ msgstr "ਸੈਂਟਰ ਉੱਤੇ ਕਰਾਂਸਹੇਅਰ ਕਲਿੱਪ ਕਰੋ" #~ msgid "Color of the crosshairs" #~ msgstr "ਕਰਾਂਸਹੇਅਰ ਦਾ ਰੰਗ" #~ msgid "" #~ "Determines the length of the vertical and horizontal lines that make up " #~ "the crosshairs." #~ msgstr "ਵਰਟੀਕਲ ਤੇ ਹਰੀਜੱਟਲ ਲਾਈਨਾਂ ਦੀ ਲੰਬਾਈ ਦੱਸੋ, ਜੋ ਕਿ ਕਰਾਂਸਹੇਅਰ ਬਣਾਉਂਦੀਆਂ ਹਨ।" #~ msgid "" #~ "Determines the transparency of the crosshairs, from fully opaque to fully " #~ "transparent." #~ msgstr "ਕਰਾਂਸਹੇਅਰ ਦੀ ਟਰਾਂਸਪਰੇਸੀ ਤਹਿ ਕਰੋ, ਪੂਰੀ ਤਰ੍ਹਾਂ ਧੁੰਦਲੇ ਤੋਂ ਪਾਰਦਰਸ਼ੀ ਹੀ।" #~ msgid "Enable lens mode" #~ msgstr "ਲੈਨਜ਼ ਮੋਡ ਚਾਲੂ" #~ msgid "" #~ "Enables/disables display of crosshairs centered on the magnified mouse " #~ "sprite." #~ msgstr "ਵੱਡਦਰਸ਼ੀ ਮਾਊਸ ਸਪਰਿਟ ਉੱਤੇ ਸੈਂਟਰ ਕੀਤੇ ਕਰਾਂਸਹੇਅਰ ਵੇਖਾਉਣਾ ਚਾਲੂ ਜਾਂ ਬੰਦ ਕਰੋ।" #~ msgid "" #~ "For centered mouse tracking, when the system pointer is at or near the " #~ "edge of the screen, the magnified contents continue to scroll such that " #~ "the screen edge moves into the magnified view." #~ msgstr "" #~ "ਸੈਂਟਰਡ ਮਾਊਸ ਟਰੈਕ ਕਰਨ ਲਈ, ਜਦੋਂ ਸਿਸਟਮ ਪੁਆਇੰਟਰ ਸਕਰੀਨ ਦੇ ਕਿਸੇ ਕੋਨੇ ਕੋਲ ਜਾਂਦਾ ਹੈ ਤਾਂ ਵੱਡੇ ਰੂਪ " #~ "ਵਿੱਚ ਵੇਖਾਈ ਜਾਂਦੀ ਸਮੱਗਰੀ ਇੰਝ ਸਕਰੋਲ ਕੀਤੀ ਜਾਂਦੀ ਹੈ ਤਾਂ ਕਿ ਸਕਰੀਨ ਕੋਨੇ ਵੱਡਦਰਸ਼ ਝਲਕ ਦੇ ਰੂਪ ਵਿੱਚ " #~ "ਵੇਖਾਈ ਜਾਂਦੇ ਰਹਿੰਦੇ ਹਨ।" #~ msgid "Length of the crosshairs" #~ msgstr "ਕਰਾਂਸਹੇਅਰ ਦੀ ਲੰਬਾਈ" #~ msgid "Magnification factor" #~ msgstr "ਵੱਡਦਰਸ਼ੀ ਗੁਣਾਂਕ" #~ msgid "Mouse Tracking Mode" #~ msgstr "ਮਾਊਸ ਟਰੈਕਿੰਗ ਮੋਡ" #~ msgid "Opacity of the crosshairs" #~ msgstr "ਕਰਾਂਸਹੇਅਰ ਦਾ ਧੁੰਦਲਾਪਨ" #~ msgid "Scroll magnified contents beyond the edges of the desktop" #~ msgstr "ਡੈਸਕਟਾਪ ਦੇ ਕੋਨਿਆਂ ਤੋਂ ਪਾਰ ਵੱਡਦਰਸ਼ੀ ਸਮੱਗਰੀ ਸਕਰੋਲ ਕਰੋ" #~ msgid "Show or hide crosshairs" #~ msgstr "ਕਰਾਂਸਹੇਅਰ ਵੇਖੋ ਜਾਂ ਓਹਲੇ ਕਰੋ" #~ msgid "Show or hide the magnifier" #~ msgstr "ਵੱਡਦਰਸ਼ੀ ਵੇਖੋ ਜਾਂ ਓਹਲੇ ਕਰੋ" #~ msgid "Show or hide the magnifier and all of its zoom regions." #~ msgstr "ਵੱਡਦਰਸ਼ੀ ਵੇਖੋ ਜਾਂ ਓਹਲੇ ਕਰੋ ਤੇ ਇਸ ਦੇ ਸਭ ਖੇਤਰਾਂ ਨੂੰ ਜ਼ੂਮ ਕਰੋ।" #~ msgid "" #~ "The color of the the vertical and horizontal lines that make up the " #~ "crosshairs." #~ msgstr "ਵਰਟੀਕਲ ਤੇ ਹਰੀਜੱਟਲ ਲਾਈਨਾਂ ਦਾ ਰੰਗ, ਜੋ ਕਿ ਕਰਾਂਸਹੇਅਰ ਬਣਾਉਂਦੀਆਂ ਹਨ" #~ msgid "" #~ "The magnified view either fills the entire screen, or occupies the top-" #~ "half, bottom-half, left-half, or right-half of the screen." #~ msgstr "" #~ "ਵੱਡਦਰਸ਼ੀ ਝਲਕ ਪੂਰੀ ਸਕਰੀਨ ਨੂੰ ਭਰ ਸਕਦਾ ਹੈ ਜਾਂ ਅੱਧਾ-ਉੱਤੇ, ਅੱਧਾ ਹੇਠਾਂ, ਅੱਧਾ ਖੱਬੇ ਜਾਂ ਅੱਧਾ-ਸੱਜੇ ਭਾਗ " #~ "ਨੂੰ ਭਰ ਸਕਦਾ ਹੈ।" #~ msgid "" #~ "The power of the magnification. A value of 1.0 means no magnification. A " #~ "value of 2.0 doubles the size." #~ msgstr "" #~ "ਵੱਡਦਰਸ਼ੀ ਦੀ ਤਾਕਤ ਹੈ। ੧.੦ ਦਾ ਮਤਲਬ ਹੈ ਕਿ ਕੋਈ ਵੀ ਨਹੀਂ। ੨.੦ ਦਾ ਮਤਲਬ ਹੈ ਆਕਾਰ ਦਾ ਦੋ ਗੁਣਾ।" #~ msgid "Thickness of the crosshairs" #~ msgstr "ਕਰਾਂਸਹੇਅਰ ਦੀ ਮੋਟਾਈ" #~ msgid "" #~ "Whether the magnified view should be centered over the location of the " #~ "system mouse and move with it." #~ msgstr "ਕੀ ਵੱਡਦਰਸ਼ੀ ਝਲਕ ਦੀ ਸਥਿਤੀ ਸਿਸਟਮ ਮਾਊਂਸ ਦੁਆਲੇ ਕੇਂਦਰਤ ਰਹੇ ਅਤੇ ਉਸ ਨਾਲ ਹੀ ਹਿੱਲੇ।" #~ msgid "" #~ "Width of the vertical and horizontal lines that make up the crosshairs." #~ msgstr "ਵਰਟੀਕਲ ਤੇ ਹਰੀਜੱਟਲ ਲਾਈਨਾਂ ਦੀ ਚੌੜਾਈ, ਜੋ ਕਿ ਕਰਾਂਸਹੇਅਰ ਬਣਾਉਂਦੀਆਂ ਹਨ" #~ msgid "Shut Down..." #~ msgstr "ਬੰਦ ਕਰੋ..." #~ msgid "Search your computer" #~ msgstr "ਆਪਣੇ ਕੰਪਿਊਟਰ ਉੱਤੇ ਲੱਭੋ" #~ msgid "" #~ "Can't add a new workspace because maximum workspaces limit has been " #~ "reached." #~ msgstr "" #~ "ਨਵਾਂ ਵਰਕਸਪੇਸ ਜੋੜਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ, ਕਿਉਂਕਿ ਵਰਕਸਪੇਸਾਂ ਦੀ ਵੱਧੋ-ਵੱਧ ਗਿਣਤੀ ਪੂਰੀ ਹੋ ਚੁੱਕੀ ਹੈ।" #~ msgid "Can't remove the first workspace." #~ msgstr "ਪਹਿਲਾਂ ਵਰਕਸਪੇਸ ਨਹੀਂ ਹਟਾਇਆ ਜਾ ਸਕਦਾ।" #~ msgid "Customize the panel clock" #~ msgstr "ਪੈਨਲ ਘੜੀ ਕਸਟਮਾਈਜ਼ ਕਰੋ" #~ msgid "Custom format of the clock" #~ msgstr "ਘੜੀ ਲਈ ਪਸੰਦੀਦਾ ਫਾਰਮੈਟ" #~ msgid "Hour format" #~ msgstr "ਘੰਟਾ ਫਾਰਮੈਟ" #~ msgid "" #~ "If true and format is either \"12-hour\" or \"24-hour\", display seconds " #~ "in time." #~ msgstr "ਜੇ ਚੋਣ ਕੀਤੀ ਤਾਂ ਸਮੇਂ ਵਿੱਚ \"12-hour\" ਜਾਂ \" 24-hour\" ਸਕਿੰਟ ਵੇਖਾਏ ਜਾਣਗੇ।" #~ msgid "" #~ "This key specifies the format used by the panel clock when the format key " #~ "is set to \"custom\". You can use conversion specifiers understood by " #~ "strftime() to obtain a specific format. See the strftime() manual for " #~ "more information." #~ msgstr "" #~ "ਇਹ ਕੁੰਜੀ ਪੈਨਲ ਘੜੀ ਲਈ ਵਰਤਣ ਵਾਸਤੇ ਫਾਰਮੈਟ ਦਿੰਦੀ ਹੈ, ਜਦੋਂ ਕਿ ਫਾਰਮੈਟ ਕੁੰਜੀ \"ਕਸਟਮ\" ਸੈੱਟ " #~ "ਕੀਤੀ ਹੋਵੇ। ਤੁਸੀਂ ਖਾਸ ਫਾਰਮੈਟ ਦੇਣ ਲਈ ਹਦਾਇਤਾਂ ਵਾਸਤੇ strftime () ਨੂੰ ਵਰਤ ਸਕਦੇ ਹੋ। ਹੋਰ " #~ "ਜਾਣਕਾਰੀ ਲਈ strftime () ਦਸਤਾਵੇਜ਼ ਵੇਖੋ।" #~ msgid "" #~ "This key specifies the hour format used by the panel clock. Possible " #~ "values are \"12-hour\", \"24-hour\", \"unix\" and \"custom\". If set to " #~ "\"unix\", the clock will display time in seconds since Epoch, i.e. " #~ "1970-01-01. If set to \"custom\", the clock will display time according " #~ "to the format specified in the custom_format key. Note that if set to " #~ "either \"unix\" or \"custom\", the show_date and show_seconds keys are " #~ "ignored." #~ msgstr "" #~ "ਇਹ ਕੁੰਜੀ ਤਹਿ ਕਰਦੀ ਹੈ ਕਿ ਕਿਹੜਾ ਪੈਨਲ ਘੜੀ ਵਿੱਚ ਘੰਟਾ ਫਾਰਮੈਟ ਵਰਤਿਆ ਜਾਵੇ। ਸੰਭਵ ਮੁੱਲ ਹਨ " #~ "\"12-hour\"(੧੨-ਘੰਟੇ), \"24-hour\" (੨੪-ਘੰਟੇ), \"unix\" (ਯੂਨੈਕਸ) ਅਤੇ " #~ "\"custom\" (ਪਸੰਦੀਦਾ)। ਜੇ \"ਯੂਨੈਕਸ\" ਸੈੱਟ ਕੀਤਾ ਗਿਆ ਤਾਂ ਘੜੀ ਨੂੰ ਈਪੋਚ (੦੧-ਜਨਵਰੀ-੧੯੭੦) " #~ "ਤੋਂ ਵੇਖਾਇਆ\n" #~ "ਜਾਵੇਗਾ। ਜੇ \"ਪਸੰਦੀਦਾ\" ਲਈ ਸੈੱਟ ਕੀਤਾ ਗਿਆ ਤਾਂ, ਘੜੀ ਨੂੰ custom_format ਕੁੰਜੀ ਵਿੱਚ ਦਿੱਤੇ " #~ "ਫਾਰਮੈਟ ਮੁਤਾਬਕ ਵੇਖਾਇਆ ਜਾਵੇਗਾ। ਯਾਦ ਰੱਖੋ ਕਿ ਜੇ \"ਯੂਨੈਕਸ\" ਜਾਂ \"ਪਸੰਦੀਦਾ\" ਸੈੱਟ ਕੀਤਾ ਤਾਂ " #~ "ਅੱਪਗਰੇਡ ਮਿਤੀ ਵੇਖਾਓ ਤੇ ਸਕਿੰਟ ਵੇਖਾਓ ਨੂੰ ਅਣਡਿੱਠਾ ਕੀਤਾ ਜਾਵੇਗਾ।" #~ msgid "Clock Preferences" #~ msgstr "ਘੜੀ ਪਸੰਦ" #~ msgid "Show seco_nds" #~ msgstr "ਸਕਿੰਟ ਵੇਖੋ(_n)" #~ msgid "_12 hour format" #~ msgstr "_੧੨ ਘੰਟੇ ਫਾਰਮੈਟ" #~ msgid "_24 hour format" #~ msgstr "_੨੪ ਘੰਟੇ ਫਾਰਮੈਟ" #~ msgid "Preferences" #~ msgstr "ਮੇਰੀ ਪਸੰਦ" #~ msgid "Overview workspace view mode" #~ msgstr "ਵਰਕਸਪੇਸ ਝਲਕ ਮੋਡ ਦੀ ਝਲਕ" #~ msgid "" #~ "The selected workspace view mode in the overview. Supported values are " #~ "\"single\" and \"grid\"." #~ msgstr "" #~ "ਸੰਖੇਪ ਵਿੱਚ ਚੁਣੇ ਵਰਕਸਪੇਸ ਝਲਕ ਮੋਡ ਹੈ। ਸਹਾਇਕ ਮੁੱਲ ਹਨ \"single\"(ਇੱਕਲਾ) ਜਾਂ " #~ "\"grid\" (ਗਰਿੱਡ)।" #~ msgid "Drag here to add favorites" #~ msgstr "ਪਸੰਦ ਵਿੱਚ ਜੋੜਨ ਲਈ ਇੱਥੇ ਸੁੱਟੋ" #~ msgid "Find" #~ msgstr "ਖੋਜ" #~| msgid "Preferences" #~ msgid "System Preferences..." #~ msgstr "ਸਿਸਟਮ ਪਸੰਦ..." #~ msgid "Sidebar" #~ msgstr "ਬਾਹੀ" #~ msgid "Recent Documents" #~ msgstr "ਤਾਜ਼ਾ ਡੌਕੂਮੈਂਟ" #~ msgid "(see all)" #~ msgstr "(ਸਭ ਵੇਖੋ)" #~ msgid "PLACES" #~ msgstr "ਥਾਵਾਂ" #~ msgid "SEARCH RESULTS" #~ msgstr "ਖੋਜ ਨਤੀਜੇ" #~ msgid "Can't lock screen: %s" #~ msgstr "ਸਕਰੀਨ ਲਾਕ ਨਹੀਂ ਹੋ ਸਕਦੀ: %s" #~ msgid "Can't temporarily set screensaver to blank screen: %s" #~ msgstr "ਸਕਰੀਨ ਬੰਦ ਕਰਨ ਲਈ ਆਰਜ਼ੀ ਰੂਪ ਵਿੱਚ ਸਕਰੀਨ-ਸੇਵਰ ਨਹੀਂ ਸੈੱਟ ਕੀਤਾ ਜਾ ਸਕਦਾ: %s" #~ msgid "Can't logout: %s" #~ msgstr "ਲਾਗਆਉਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ: %s" #~ msgid "Browse" #~ msgstr "ਝਲਕ" 07070100000259000081A40000000000000000000000016712993F0001969F000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/pl.po# Polish translation for gnome-shell. # Copyright © 2009-2024 the gnome-shell authors. # This file is distributed under the same license as the gnome-shell package. # Piotr Drąg , 2009-2024. # Tomasz Dominikowski , 2009. # Wojciech Szczęsny , 2013. # Aviary.pl , 2009-2024. # msgid "" msgstr "" "Project-Id-Version: gnome-shell\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues/\n" "POT-Creation-Date: 2024-08-06 15:18+0000\n" "PO-Revision-Date: 2024-08-31 15:35+0200\n" "Last-Translator: Piotr Drąg \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" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "Uruchamianie" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate pinned app 1" msgstr "Aktywacja 1. przypiętego programu" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate pinned app 2" msgstr "Aktywacja 2. przypiętego programu" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate pinned app 3" msgstr "Aktywacja 3. przypiętego programu" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate pinned app 4" msgstr "Aktywacja 4. przypiętego programu" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate pinned app 5" msgstr "Aktywacja 5. przypiętego programu" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate pinned app 6" msgstr "Aktywacja 6. przypiętego programu" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate pinned app 7" msgstr "Aktywacja 7. przypiętego programu" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate pinned app 8" msgstr "Aktywacja 8. przypiętego programu" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate pinned app 9" msgstr "Aktywacja 9. przypiętego programu" #: data/50-gnome-shell-launchers.xml:46 msgid "Open new window of pinned app 1" msgstr "Otwarcie nowego okna 1. przypiętego programu" #: data/50-gnome-shell-launchers.xml:50 msgid "Open new window of pinned app 2" msgstr "Otwarcie nowego okna 2. przypiętego programu" #: data/50-gnome-shell-launchers.xml:54 msgid "Open new window of pinned app 3" msgstr "Otwarcie nowego okna 3. przypiętego programu" #: data/50-gnome-shell-launchers.xml:58 msgid "Open new window of pinned app 4" msgstr "Otwarcie nowego okna 4. przypiętego programu" #: data/50-gnome-shell-launchers.xml:62 msgid "Open new window of pinned app 5" msgstr "Otwarcie nowego okna 5. przypiętego programu" #: data/50-gnome-shell-launchers.xml:66 msgid "Open new window of pinned app 6" msgstr "Otwarcie nowego okna 6. przypiętego programu" #: data/50-gnome-shell-launchers.xml:70 msgid "Open new window of pinned app 7" msgstr "Otwarcie nowego okna 7. przypiętego programu" #: data/50-gnome-shell-launchers.xml:74 msgid "Open new window of pinned app 8" msgstr "Otwarcie nowego okna 8. przypiętego programu" #: data/50-gnome-shell-launchers.xml:78 msgid "Open new window of pinned app 9" msgstr "Otwarcie nowego okna 9. przypiętego programu" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2274 msgid "Screenshots" msgstr "Zrzuty ekranu" #: data/50-gnome-shell-screenshots.xml:9 #: data/org.gnome.shell.gschema.xml.in:287 msgid "Take a screenshot interactively" msgstr "Interaktywne wykonanie zrzutu ekranu" #: data/50-gnome-shell-screenshots.xml:12 #: data/org.gnome.shell.gschema.xml.in:299 msgid "Take a screenshot" msgstr "Wykonanie zrzutu ekranu" #: data/50-gnome-shell-screenshots.xml:15 #: data/org.gnome.shell.gschema.xml.in:295 msgid "Take a screenshot of a window" msgstr "Wykonanie zrzutu ekranu okna" #: data/50-gnome-shell-screenshots.xml:18 #: data/org.gnome.shell.gschema.xml.in:291 msgid "Record a screencast interactively" msgstr "Interaktywne nagranie ekranu" #: data/50-gnome-shell-system.xml:6 js/ui/messageTray.js:1298 msgid "System" msgstr "System" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "Wyświetlenie listy powiadomień" #: data/50-gnome-shell-system.xml:12 msgid "Open the quick settings menu" msgstr "Otwarcie menu szybkich ustawień" #: data/50-gnome-shell-system.xml:15 msgid "Focus the active notification" msgstr "Aktywacja bieżącego powiadomienia" #: data/50-gnome-shell-system.xml:18 msgid "Show the overview" msgstr "Wyświetlenie ekranu podglądu" #: data/50-gnome-shell-system.xml:21 msgid "Show all apps" msgstr "Wyświetlenie wszystkich programów" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "Powłoka środowiska GNOME" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "Zarządzanie oknami i uruchamianiem programów" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" "Włącza wewnętrzne narzędzia przydatne programistom i testerom w oknie " "dialogowym Alt-F2" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Umożliwia dostęp do wewnętrznych narzędzi debugowania i monitorowania, " "używając okna dialogowego Alt-F2." #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "Lista UUID rozszerzeń do włączenia" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "Rozszerzenia powłoki GNOME mają własność UUID; ten klucz zawiera " "rozszerzenia, które mają zostać wczytane. Każde rozszerzenie, które ma " "zostać wczytane, musi znajdować się na tej liście. Można także manipulować " "tą listą za pomocą metod EnableExtension i DisableExtension usługi D-Bus na " "org.gnome.Shell." #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "Lista UUID rozszerzeń do wymuszenia wyłączenia" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" "Rozszerzenia powłoki GNOME mają własność UUID; ten klucz zawiera " "rozszerzenia, które mają zostać wyłączone, nawet jeśli zostały wczytane jako " "część obecnego trybu. Każde rozszerzenie, które ma zostać wczytane, musi " "znajdować się na tej liście. Można także manipulować tą listą za pomocą " "metod EnableExtension i DisableExtension usługi D-Bus na org.gnome.Shell. " "Ten klucz jest przetwarzany przed ustawieniem „enabled-extensions”." #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "Wyłączenie rozszerzeń użytkownika" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" "Wyłączenie wszystkich rozszerzeń włączonych przez użytkownika bez zmiany " "ustawienia „enabled-extension”." #: data/org.gnome.shell.gschema.xml.in:45 msgid "Allow extension installation" msgstr "Zezwolenie na instalowanie rozszerzeń" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "Allow users to install extensions in their home folder. If disabled, the " "InstallRemoteExtension D-Bus method will fail, and extensions are only " "loaded from system directories on startup. It does not affect extensions " "that are already loaded, so a change only takes full effect on the next " "login." msgstr "" "Zezwolenie użytkownikom na instalowanie rozszerzeń w katalogu domowym. Po " "wyłączeniu metoda „InstallRemoteExtension” magistrali D-Bus się nie " "powiedzie, a rozszerzenia będą wczytywane tylko z katalogów systemowych " "podczas uruchamiania. Nie wpływa to na już wczytane rozszerzenia, więc " "zmiana jest w pełni uwzględniana dopiero po następnym zalogowaniu." #: data/org.gnome.shell.gschema.xml.in:56 msgid "Disables the validation of extension version compatibility" msgstr "Wyłącza sprawdzanie zgodności wersji rozszerzeń" #: data/org.gnome.shell.gschema.xml.in:57 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "Powłoka GNOME będzie wczytywała tylko rozszerzenia, które obsługują obecnie " "uruchomioną wersję. Włączenie tej opcji wyłączy sprawdzanie zgodności " "i spowoduje próbę wczytania wszystkich rozszerzeń, niezależnie od wersji, " "jakie obsługują." #: data/org.gnome.shell.gschema.xml.in:65 msgid "List of desktop file IDs for favorite applications" msgstr "Lista identyfikatorów plików .desktop ulubionych programów" #: data/org.gnome.shell.gschema.xml.in:66 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" "Programy odpowiadające tym identyfikatorom będą wyświetlane w obszarze " "ulubionych." #: data/org.gnome.shell.gschema.xml.in:73 msgid "History for command (Alt-F2) dialog" msgstr "Historia okna dialogowego poleceń (Alt-F2)" #. Translators: looking glass is a debugger and inspector tool, see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/docs/looking-glass.md #: data/org.gnome.shell.gschema.xml.in:78 msgid "History for the looking glass dialog" msgstr "Historia okna dialogowego „Looking Glass”" #: data/org.gnome.shell.gschema.xml.in:82 msgid "Always show the “Log Out” action in the system menu" msgstr "Wyświetlanie działania „Wyloguj się” w menu systemowym" #: data/org.gnome.shell.gschema.xml.in:83 msgid "" "This key overrides the automatic hiding of the “Log out” action in the " "system menu for logged-in situations where there is a single, local, non-" "system user and only a single available session type (e.g. GNOME on Wayland)." msgstr "" "Ten klucz zastępuje automatyczne ukrywanie działania „Wyloguj się” w menu " "systemowym w sytuacjach, gdy po zalogowaniu jest tylko jeden lokalny, " "niesystemowy użytkownik i tylko jeden dostępny typ sesji (np. GNOME na " "Wayland)." #: data/org.gnome.shell.gschema.xml.in:92 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "Określa, czy pamiętać hasła do montowania zaszyfrowanych lub zdalnych " "systemów plików" #: data/org.gnome.shell.gschema.xml.in:93 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "Powłoka poprosi o hasło podczas montowania zaszyfrowanego urządzenia lub " "zdalnego systemu plików. Jeśli hasło może zostać zapisane do późniejszego " "użycia, to obecne będzie pole wyboru „Zapamiętanie hasła”. Ten klucz ustawia " "domyślną wartość tego pola." #: data/org.gnome.shell.gschema.xml.in:102 msgid "The last selected non-default power profile" msgstr "Ostatnio wybrany niedomyślny profil zasilania" #: data/org.gnome.shell.gschema.xml.in:103 msgid "" "Some systems support more than two power profiles. In order to still support " "toggling between two profiles, this key records the last selected non-" "default profile." msgstr "" "Niektóre komputery obsługują więcej niż dwa profile zasilania. Aby nadal " "obsługiwać przełączanie między dwoma profilami, ten klucz zachowuje ostatnio " "wybrany niedomyślny profil." #: data/org.gnome.shell.gschema.xml.in:111 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "Ostatnia wersja, dla której wyświetlono okno „Witamy w GNOME”" #: data/org.gnome.shell.gschema.xml.in:112 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can " "be used to effectively disable the dialog." msgstr "" "Ten klucz określa, dla której wersji ostatnio wyświetlono okno „Witamy " "w GNOME”. Pusty ciąg oznacza najstarszą możliwą wersję, a wielka liczba " "będzie oznaczać wersje, które jeszcze nie istnieją. Ta wielka liczba może " "być używana do wyłączenia tego okna." #: data/org.gnome.shell.gschema.xml.in:145 msgid "Layout of the app picker" msgstr "Układ ekranu wyboru programu" #: data/org.gnome.shell.gschema.xml.in:146 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" msgstr "" "Układ ekranu wyboru programu. Każdy wpis w macierzy to strona. Strony są " "przechowywane w kolejności, w jakiej są wyświetlane w powłoce GNOME. Każda " "strona zawiera parę „identyfikator programu” → „data”. Obecnie następujące " "wartości są przechowywane jako „data”: • „position”: położenie ikony " "programu na stronie" #: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:172 msgid "Keybinding to shift between overview states" msgstr "Skrót do przełączenia między stanami ekranu podglądu" #: data/org.gnome.shell.gschema.xml.in:166 msgid "Keybinding to shift between session, window picker and app grid" msgstr "" "Skrót do przełączenia między sesją, ekranem wyboru okna i siatką programów" #: data/org.gnome.shell.gschema.xml.in:173 msgid "Keybinding to shift between app grid, window picker and session" msgstr "" "Skrót do przełączenia między siatką programów, ekranem wyboru okna i sesją" #: data/org.gnome.shell.gschema.xml.in:179 msgid "Keybinding to open the “Show Applications” view" msgstr "Skrót do otwarcia widoku „Wyświetl programy”" #: data/org.gnome.shell.gschema.xml.in:180 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "Skrót do otwarcia widoku „Wyświetl programy” ekranu podglądu." #: data/org.gnome.shell.gschema.xml.in:187 msgid "Keybinding to open the overview" msgstr "Skrót do otwarcia ekranu podglądu" #: data/org.gnome.shell.gschema.xml.in:188 msgid "Keybinding to open the Activities Overview." msgstr "Skrót do otwarcia ekranu podglądu." #: data/org.gnome.shell.gschema.xml.in:194 msgid "Keybinding to toggle the visibility of the notification list" msgstr "Skrót do przełączenia widoczności listy powiadomień" #: data/org.gnome.shell.gschema.xml.in:195 msgid "Keybinding to toggle the visibility of the notification list." msgstr "Skrót do przełączenia widoczności listy powiadomień." #: data/org.gnome.shell.gschema.xml.in:201 msgid "Keybinding to toggle the quick settings menu" msgstr "Skrót do przełączenia menu szybkich ustawień" #: data/org.gnome.shell.gschema.xml.in:202 msgid "Keybinding to toggle the quick settings menu." msgstr "Skrót do przełączenia menu szybkich ustawień." #: data/org.gnome.shell.gschema.xml.in:208 msgid "Keybinding to focus the active notification" msgstr "Skrót do aktywacji bieżącego powiadomienia" #: data/org.gnome.shell.gschema.xml.in:209 msgid "Keybinding to focus the active notification." msgstr "Skrót do aktywacji bieżącego powiadomienia." #: data/org.gnome.shell.gschema.xml.in:215 msgid "Switch to application 1" msgstr "Przełączenie na 1. program" #: data/org.gnome.shell.gschema.xml.in:219 msgid "Switch to application 2" msgstr "Przełączenie na 2. program" #: data/org.gnome.shell.gschema.xml.in:223 msgid "Switch to application 3" msgstr "Przełączenie na 3. program" #: data/org.gnome.shell.gschema.xml.in:227 msgid "Switch to application 4" msgstr "Przełączenie na 4. program" #: data/org.gnome.shell.gschema.xml.in:231 msgid "Switch to application 5" msgstr "Przełączenie na 5. program" #: data/org.gnome.shell.gschema.xml.in:235 msgid "Switch to application 6" msgstr "Przełączenie na 6. program" #: data/org.gnome.shell.gschema.xml.in:239 msgid "Switch to application 7" msgstr "Przełączenie na 7. program" #: data/org.gnome.shell.gschema.xml.in:243 msgid "Switch to application 8" msgstr "Przełączenie na 8. program" #: data/org.gnome.shell.gschema.xml.in:247 msgid "Switch to application 9" msgstr "Przełączenie na 9. program" #: data/org.gnome.shell.gschema.xml.in:251 msgid "Open a new instance of application 1" msgstr "Otwarcie nowego wystąpienia 1. programu" #: data/org.gnome.shell.gschema.xml.in:255 msgid "Open a new instance of application 2" msgstr "Otwarcie nowego wystąpienia 2. programu" #: data/org.gnome.shell.gschema.xml.in:259 msgid "Open a new instance of application 3" msgstr "Otwarcie nowego wystąpienia 3. programu" #: data/org.gnome.shell.gschema.xml.in:263 msgid "Open a new instance of application 4" msgstr "Otwarcie nowego wystąpienia 4. programu" #: data/org.gnome.shell.gschema.xml.in:267 msgid "Open a new instance of application 5" msgstr "Otwarcie nowego wystąpienia 5. programu" #: data/org.gnome.shell.gschema.xml.in:271 msgid "Open a new instance of application 6" msgstr "Otwarcie nowego wystąpienia 6. programu" #: data/org.gnome.shell.gschema.xml.in:275 msgid "Open a new instance of application 7" msgstr "Otwarcie nowego wystąpienia 7. programu" #: data/org.gnome.shell.gschema.xml.in:279 msgid "Open a new instance of application 8" msgstr "Otwarcie nowego wystąpienia 8. programu" #: data/org.gnome.shell.gschema.xml.in:283 msgid "Open a new instance of application 9" msgstr "Otwarcie nowego wystąpienia 9. programu" #: data/org.gnome.shell.gschema.xml.in:308 #: data/org.gnome.shell.gschema.xml.in:335 msgid "Limit switcher to current workspace." msgstr "Ograniczenie przełącznika do bieżącego obszaru roboczego." #: data/org.gnome.shell.gschema.xml.in:309 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "Jeśli wynosi wartość „true”, to tylko programy mające okna na bieżącym " "obszarze roboczym są wyświetlane w przełączniku. W przeciwnym przypadku " "wszystkie programy są załączone." #: data/org.gnome.shell.gschema.xml.in:326 msgid "The application icon mode." msgstr "Tryb ikon programów." #: data/org.gnome.shell.gschema.xml.in:327 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-only” " "(shows only the application icon) or “both”." msgstr "" "Konfiguruje, jak wyświetlać okna w przełączniku. Prawidłowe wartości to " "„thumbnail-only” (wyświetla miniaturę okna), „app-icon-only” (wyświetla " "tylko ikonę programu) lub „both” (wyświetla oba)." #: data/org.gnome.shell.gschema.xml.in:336 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "Jeśli wynosi wartość „true”, to tylko okna z bieżącego obszaru roboczego są " "wyświetlane w przełączniku. W przeciwnym przypadku wszystkie okna są " "załączone." #: data/org.gnome.shell.gschema.xml.in:346 msgid "Locations" msgstr "Położenia" #: data/org.gnome.shell.gschema.xml.in:347 msgid "The locations to show in world clocks" msgstr "Położenia wyświetlane w zegarze światowym" #: data/org.gnome.shell.gschema.xml.in:357 msgid "Automatic location" msgstr "Automatyczne położenie" #: data/org.gnome.shell.gschema.xml.in:358 msgid "Whether to fetch the current location or not" msgstr "Czy ustalać obecne położenie" #: data/org.gnome.shell.gschema.xml.in:365 msgid "Location" msgstr "Położenie" #: data/org.gnome.shell.gschema.xml.in:366 msgid "The location for which to show a forecast" msgstr "Położenie, dla którego wyświetlać prognozę pogody" #. Keep in sync with subprojects/extensions-app #: data/org.gnome.Shell.Extensions.desktop.in.in:5 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/data/ui/extensions-window.ui:57 msgid "Extensions" msgstr "Rozszerzenia" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "Logowanie do sieci" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:275 msgid "Something’s gone wrong" msgstr "Coś się nie powiodło" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" "Wystąpił problem: nie można wyświetlić ustawień tego rozszerzenia. Zalecamy " "zgłoszenie problemu autorom rozszerzenia." #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "Informacje techniczne" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "Strona WWW" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 msgid "Visit extension homepage" msgstr "Otwiera stronę WWW rozszerzenia" #: js/gdm/authPrompt.js:151 js/gdm/loginDialog.js:465 #: js/ui/audioDeviceSelection.js:66 js/ui/components/networkAgent.js:113 #: js/ui/components/polkitAgent.js:144 js/ui/endSessionDialog.js:437 #: js/ui/extensionDownloader.js:276 js/ui/shellMountOperation.js:382 #: js/ui/shellMountOperation.js:392 msgid "Cancel" msgstr "Anuluj" #: js/gdm/authPrompt.js:317 js/ui/components/networkAgent.js:213 #: js/ui/components/networkAgent.js:233 js/ui/components/networkAgent.js:265 #: js/ui/components/networkAgent.js:298 js/ui/components/networkAgent.js:337 #: js/ui/components/networkAgent.js:350 js/ui/components/polkitAgent.js:286 #: js/ui/shellMountOperation.js:332 msgid "Password" msgstr "Hasło" #: js/gdm/loginDialog.js:326 msgid "Choose Session" msgstr "Wybór sesji" #. Translators: is running for #: js/gdm/loginDialog.js:423 #, javascript-format msgid "" "Remote login is not possible because a remote session is already running for " "%s. To login remotely, you must log out from the remote session or force " "stop it." msgstr "" "Zdalne logowanie jest niemożliwe, ponieważ dla użytkownika %s jest już " "uruchomiona zdalna sesja. Aby zalogować się zdalnie, należy wylogować się ze " "zdalnej sesji lub wymusić jej zatrzymanie." #. Translators: is running for #: js/gdm/loginDialog.js:426 #, javascript-format msgid "" "Login is not possible because a remote session is already running for %s. To " "login, you must log out from the remote session or force stop it." msgstr "" "Zalogowanie się jest niemożliwe, ponieważ dla użytkownika %s jest już " "uruchomiona zdalna sesja. Aby się zalogować, należy wylogować się ze zdalnej " "sesji lub wymusić jej zatrzymanie." #. Translators: is running for #: js/gdm/loginDialog.js:429 #, javascript-format msgid "" "Remote login is not possible because a local session is already running for " "%s. To login remotely, you must log out from the local session or force stop " "it." msgstr "" "Zdalne logowanie jest niemożliwe, ponieważ dla użytkownika %s jest już " "uruchomiona lokalna sesja. Aby zalogować się zdalnie, należy wylogować się " "z lokalnej sesji lub wymusić jej zatrzymanie." #. Translators: is running for #: js/gdm/loginDialog.js:432 #, javascript-format msgid "" "Login is not possible because a session is already running for %s. To login, " "you must log out from the session or force stop it." msgstr "" "Zalogowanie się jest niemożliwe, ponieważ dla użytkownika %s jest już " "uruchomiona sesja. Aby się zalogować, należy wylogować się z sesji lub " "wymusić jej zatrzymanie." #: js/gdm/loginDialog.js:441 msgid "Session Already Running" msgstr "Sesja jest już uruchomiona" #: js/gdm/loginDialog.js:453 msgid "" "Force stopping will quit any running apps and processes, and could result in " "data loss" msgstr "" "Wymuszenie zatrzymania zakończy działanie wszystkich uruchomionych programów " "i procesów, co może spowodować utratę danych" #: js/gdm/loginDialog.js:473 msgid "Force Stop" msgstr "Wymuś zatrzymanie" #: js/gdm/loginDialog.js:541 msgid "Not listed?" msgstr "Inny użytkownik?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:1009 #, javascript-format msgid "(e.g., user or %s)" msgstr "(np. użytkownik lub %s)" #: js/gdm/loginDialog.js:1014 js/ui/components/networkAgent.js:257 #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:326 msgid "Username" msgstr "Nazwa użytkownika" #: js/gdm/loginDialog.js:1080 msgid "Login Attempt Timed Out" msgstr "Próba logowania przekroczyła czas oczekiwania" #: js/gdm/loginDialog.js:1081 msgid "Login took too long, please try again" msgstr "Logowanie zajęło za dużo czasu, proszę spróbować ponownie" #: js/gdm/loginDialog.js:1426 msgid "Login Window" msgstr "Okno logowania" #: js/gdm/util.js:496 msgid "Authentication error" msgstr "Błąd uwierzytelniania" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:727 msgid "(or swipe finger across reader)" msgstr "(lub przeciągnięcie palca przez czytnik)" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:732 msgid "(or place finger on reader)" msgstr "(lub umieszczenie palca na czytniku)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:91 msgctxt "search-result" msgid "Power Off" msgstr "Wyłącz komputer" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:94 msgid "power off;poweroff;shutdown;halt;stop" msgstr "" "wyłącz komputer;wyłączanie komputera;zakończ;power off;poweroff;shutdown;" "halt;stop;zatrzymaj" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:99 msgctxt "search-result" msgid "Restart" msgstr "Uruchom ponownie" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:102 msgid "reboot;restart;" msgstr "uruchom ponownie;restartuj;zrestartuj;reboot;restart;" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:107 msgctxt "search-result" msgid "Lock Screen" msgstr "Zablokuj ekran" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:110 msgid "lock screen" msgstr "" "zablokuj ekran;zablokowanie ekranu;blokowanie ekranu;blokada ekranu;lock " "screen" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:115 msgctxt "search-result" msgid "Log Out" msgstr "Wyloguj się" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:118 msgid "logout;log out;sign off" msgstr "wyloguj się;wylogowanie;logout;log out;sign off" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:123 msgctxt "search-result" msgid "Suspend" msgstr "Uśpij" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:126 msgid "suspend;sleep" msgstr "uśpij;uśpienie;wstrzymaj;wstrzymanie;suspend;sleep" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:131 msgctxt "search-result" msgid "Switch User" msgstr "Przełącz użytkownika" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:134 msgid "switch user" msgstr "przełącz użytkownika;przełączanie użytkowników;switch user" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:141 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "" "zablokuj orientację;zablokowanie orientacji;blokowanie orientacji;blokada " "orientacji;lock orientation;odblokuj orientację;odblokowanie orientacji;" "unlock orientation;ekran;monitor;wyświetlacz;screen;obrót;obracanie;rotation" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:146 msgctxt "search-result" msgid "Take a Screenshot" msgstr "Wykonaj zrzut ekranu" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:149 msgid "screenshot;screencast;snip;capture;record" msgstr "" "zrzut ekranu;screenshot;skrin;nagranie ekranu;screencast;nagrywanie;snip;" "capture;record" #: js/misc/systemActions.js:249 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "Odblokuj orientację ekranu" #: js/misc/systemActions.js:250 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "Zablokuj orientację ekranu" #: js/misc/util.js:130 msgid "Command not found" msgstr "Nie odnaleziono polecenia" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:170 msgid "Could not parse command:" msgstr "Nie można przetworzyć polecenia:" #: js/misc/util.js:178 #, javascript-format msgid "Execution of “%s” failed:" msgstr "Wykonanie polecenia „%s” się nie powiodło:" #: js/misc/dateUtils.js:69 msgid "Just now" msgstr "Przed chwilą" #: js/misc/dateUtils.js:72 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d minuta temu" msgstr[1] "%d minuty temu" msgstr[2] "%d minut temu" #: js/misc/dateUtils.js:79 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d godzina temu" msgstr[1] "%d godziny temu" msgstr[2] "%d godzin temu" #: js/misc/dateUtils.js:85 js/ui/dateMenu.js:183 msgid "Yesterday" msgstr "Wczoraj" #: js/misc/dateUtils.js:88 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d dzień temu" msgstr[1] "%d dni temu" msgstr[2] "%d dni temu" #: js/misc/dateUtils.js:95 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d tydzień temu" msgstr[1] "%d tygodnie temu" msgstr[2] "%d tygodni temu" #: js/misc/dateUtils.js:102 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%d miesiąc temu" msgstr[1] "%d miesiące temu" msgstr[2] "%d miesięcy temu" #: js/misc/dateUtils.js:108 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "%d rok temu" msgstr[1] "%d lata temu" msgstr[2] "%d lat temu" #. Translators: Time in 24h format #: js/misc/dateUtils.js:155 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/dateUtils.js:161 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "Wczoraj o %H∶%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/dateUtils.js:167 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/dateUtils.js:173 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%-d %B, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/dateUtils.js:179 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%-d %B %Y, %H∶%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/dateUtils.js:184 msgid "%l∶%M %p" msgstr "%-l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/dateUtils.js:190 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "Wczoraj o %-l∶%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/dateUtils.js:196 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %-l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/dateUtils.js:202 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%-d %B, %-l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/dateUtils.js:208 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%-d %B %Y, %-l∶%M %p" #: js/portalHelper/main.js:98 msgid "Your connection seems to be secure" msgstr "Połączenie wydaje się być bezpieczne" #: js/portalHelper/main.js:104 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "Połączenie z tym hotspotem nie jest bezpieczne. Hasła i inne informacje " "wpisywane na tej stronie mogą być widoczne dla osób w pobliżu." #: js/portalHelper/main.js:115 msgid "Hotspot Login" msgstr "Logowanie do hotspotu" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:51 js/ui/inhibitShortcutsDialog.js:92 msgid "Deny" msgstr "Odmów" #: js/ui/accessDialog.js:52 js/ui/inhibitShortcutsDialog.js:101 msgid "Allow" msgstr "Zezwól" #: js/ui/appDisplay.js:1769 msgid "Unnamed Folder" msgstr "Katalog bez nazwy" #: js/ui/appFavorites.js:163 #, javascript-format msgid "%s has been pinned to the dash." msgstr "Przypięto program „%s” do ulubionych." #: js/ui/appFavorites.js:194 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "Odpięto program „%s” z ulubionych." #: js/ui/appFavorites.js:208 js/ui/main.js:281 msgid "Undo" msgstr "Cofnij" #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:49 msgid "Open Windows" msgstr "Otwarte okna" #: js/ui/appMenu.js:57 msgid "New Window" msgstr "Nowe okno" #: js/ui/appMenu.js:84 msgid "App Details" msgstr "Informacje o programie" #: js/ui/appMenu.js:100 msgid "Quit" msgstr "Zakończ" #: js/ui/appMenu.js:160 js/ui/dash.js:248 msgid "Unpin" msgstr "Odepnij" #: js/ui/appMenu.js:161 msgid "Pin to Dash" msgstr "Przypnij do ulubionych" #: js/ui/appMenu.js:178 msgid "Launch using Integrated Graphics Card" msgstr "Uruchom za pomocą zintegrowanej karty graficznej" #: js/ui/appMenu.js:179 msgid "Launch using Discrete Graphics Card" msgstr "Uruchom za pomocą dedykowanej karty graficznej" #: js/ui/audioDeviceSelection.js:46 msgid "Select Audio Device" msgstr "Wybór urządzenia dźwiękowego" #: js/ui/audioDeviceSelection.js:61 js/ui/status/volume.js:81 msgid "Sound Settings" msgstr "Ustawienia dźwięku" #: js/ui/audioDeviceSelection.js:74 msgid "Headphones" msgstr "Słuchawki" #: js/ui/audioDeviceSelection.js:76 msgid "Headset" msgstr "Słuchawki z mikrofonem" #: js/ui/audioDeviceSelection.js:78 js/ui/status/volume.js:356 msgid "Microphone" msgstr "Mikrofon" #: js/ui/backgroundMenu.js:13 msgid "Change Background…" msgstr "Zmień tło…" #: js/ui/backgroundMenu.js:15 msgid "Display Settings" msgstr "Ustawienia ekranu" #: js/ui/backgroundMenu.js:16 msgid "Settings" msgstr "Ustawienia" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:37 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:63 msgctxt "grid sunday" msgid "S" msgstr "N" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:65 msgctxt "grid monday" msgid "M" msgstr "P" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:67 msgctxt "grid tuesday" msgid "T" msgstr "W" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:69 msgctxt "grid wednesday" msgid "W" msgstr "Ś" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:71 msgctxt "grid thursday" msgid "T" msgstr "C" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:73 msgctxt "grid friday" msgid "F" msgstr "P" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:75 msgctxt "grid saturday" msgid "S" msgstr "S" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:426 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:436 msgid "%OB %Y" msgstr "%OB %Y" #: js/ui/calendar.js:498 msgid "Previous month" msgstr "Poprzedni miesiąc" #: js/ui/calendar.js:516 msgid "Next month" msgstr "Następny miesiąc" #: js/ui/calendar.js:667 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:726 msgid "Week %V" msgstr "%V. tydzień" #: js/ui/calendar.js:918 msgid "No Notifications" msgstr "Brak powiadomień" #: js/ui/calendar.js:974 msgid "Do Not Disturb" msgstr "Nie przeszkadzać" #: js/ui/calendar.js:995 msgid "Clear" msgstr "Wyczyść" #: js/ui/calendar.js:999 msgctxt "action" msgid "Clear all notifications" msgstr "Wyczyść wszystkie powiadomienia" #. Translators: %s is an application name #: js/ui/closeDialog.js:42 #, javascript-format msgid "“%s” Is Not Responding" msgstr "Okno „%s” nie odpowiada" #: js/ui/closeDialog.js:43 msgid "" "You may choose to wait a short while for it to continue or force the app to " "quit entirely" msgstr "Można poczekać chwilę dłużej lub wymusić zakończenie programu" #: js/ui/closeDialog.js:71 msgid "Force Quit" msgstr "Zakończ" #: js/ui/closeDialog.js:76 msgid "Wait" msgstr "Czekaj" #: js/ui/components/automountManager.js:82 msgid "External drive connected" msgstr "Podłączono dysk zewnętrzny" #: js/ui/components/automountManager.js:94 msgid "External drive disconnected" msgstr "Odłączono dysk zewnętrzny" #: js/ui/components/automountManager.js:208 msgid "Unable to unlock volume" msgstr "Nie można odblokować woluminu" #: js/ui/components/automountManager.js:209 msgid "The installed udisks version does not support the PIM setting" msgstr "Zainstalowana wersja usługi udisks nie obsługuje ustawienia PIM" #. Translators: %s is the name of a partition on a external drive #: js/ui/components/autorunManager.js:189 #, javascript-format msgid "“%s” connected" msgstr "Podłączono „%s”" #: js/ui/components/autorunManager.js:190 msgid "Disk can now be used" msgstr "Można teraz używać dysku" #: js/ui/components/autorunManager.js:202 #, javascript-format msgid "Open with %s" msgstr "Otwórz za pomocą „%s”" #: js/ui/components/networkAgent.js:95 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router" msgstr "Można także połączyć naciskając przycisk „WPS” na routerze" #: js/ui/components/networkAgent.js:107 js/ui/status/bluetooth.js:245 #: js/ui/status/network.js:360 js/ui/status/network.js:444 msgid "Connect" msgstr "Połącz" #: js/ui/components/networkAgent.js:222 msgid "Key" msgstr "Klucz" #: js/ui/components/networkAgent.js:273 js/ui/components/networkAgent.js:312 msgid "Private key password" msgstr "Hasło klucza prywatnego" #: js/ui/components/networkAgent.js:306 msgid "Identity" msgstr "Tożsamość" #: js/ui/components/networkAgent.js:332 msgid "Service" msgstr "Usługa" #: js/ui/components/networkAgent.js:370 js/ui/components/networkAgent.js:406 #: js/ui/components/networkAgent.js:743 js/ui/components/networkAgent.js:764 msgid "Authentication required" msgstr "Wymagane jest uwierzytelnienie" #: js/ui/components/networkAgent.js:371 js/ui/components/networkAgent.js:744 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network “%s”" msgstr "" "Do uzyskania dostępu do sieci bezprzewodowej „%s” wymagane jest hasło lub " "klucze szyfrowania" #: js/ui/components/networkAgent.js:375 js/ui/components/networkAgent.js:748 msgid "Wired 802.1X authentication" msgstr "Uwierzytelnianie przewodowe 802.1X" #: js/ui/components/networkAgent.js:378 msgid "Network name" msgstr "Nazwa sieci" #: js/ui/components/networkAgent.js:386 js/ui/components/networkAgent.js:752 msgid "DSL authentication" msgstr "Uwierzytelnienie DSL" #: js/ui/components/networkAgent.js:393 js/ui/components/networkAgent.js:757 msgid "PIN code required" msgstr "Wymagany jest kod PIN" #: js/ui/components/networkAgent.js:394 js/ui/components/networkAgent.js:758 msgid "PIN code is needed for the mobile broadband device" msgstr "Do korzystania z urządzenia komórkowego wymagane jest podanie kodu PIN" #: js/ui/components/networkAgent.js:396 msgid "PIN" msgstr "Kod PIN" #: js/ui/components/networkAgent.js:407 js/ui/components/networkAgent.js:749 #: js/ui/components/networkAgent.js:753 js/ui/components/networkAgent.js:765 #: js/ui/components/networkAgent.js:769 #, javascript-format msgid "A password is required to connect to “%s”" msgstr "Do połączenia z siecią „%s” wymagane jest hasło" #: js/ui/components/networkAgent.js:768 msgid "VPN password" msgstr "Hasło sieci VPN" #: js/ui/components/polkitAgent.js:44 msgid "Authentication Required" msgstr "Wymagane jest uwierzytelnienie" #: js/ui/components/polkitAgent.js:84 msgid "Administrator" msgstr "Administrator" #: js/ui/components/polkitAgent.js:149 msgid "Authenticate" msgstr "Uwierzytelnij" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:263 js/ui/shellMountOperation.js:415 msgid "Sorry, that didn’t work. Please try again." msgstr "To nie zadziałało. Proszę spróbować ponownie." #: js/ui/ctrlAltTab.js:23 js/ui/overviewControls.js:404 msgid "Windows" msgstr "Okna" #: js/ui/dash.js:204 js/ui/dash.js:250 msgid "Show Apps" msgstr "Wyświetl programy" #. Translators: this is the name of the dock/favorites area on #. the bottom of the overview #: js/ui/dash.js:408 msgid "Dash" msgstr "Ulubione" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:99 msgid "%B %-d %Y" msgstr "%-d %B %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:106 msgid "%A %B %e %Y" msgstr "%A, %-d %B %Y" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:172 msgctxt "calendar heading" msgid "%B %-d" msgstr "%-d %B" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:175 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%-d %B %Y" #: js/ui/dateMenu.js:181 msgid "Today" msgstr "Dzisiaj" #: js/ui/dateMenu.js:185 msgid "Tomorrow" msgstr "Jutro" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:216 msgctxt "event list time" msgid "All Day" msgstr "Cały dzień" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:238 msgid "%m/%d" msgstr "%-d.%m" #: js/ui/dateMenu.js:289 msgid "No Events" msgstr "Brak wydarzeń" #: js/ui/dateMenu.js:411 msgid "Add World Clocks…" msgstr "Dodaj zegar światowy…" #: js/ui/dateMenu.js:412 msgid "World Clocks" msgstr "Zegar światowy" #: js/ui/dateMenu.js:702 msgid "Loading…" msgstr "Wczytywanie…" #: js/ui/dateMenu.js:712 msgid "Go Online for Weather Information" msgstr "Prognoza pogody wymaga połączenia z Internetem" #: js/ui/dateMenu.js:714 msgid "Weather Information Unavailable" msgstr "Prognoza pogody jest niedostępna" #: js/ui/dateMenu.js:724 msgid "Weather" msgstr "Pogoda" #: js/ui/dateMenu.js:726 msgid "Select Weather Location…" msgstr "Wybierz położenie pogody…" #: js/ui/endSessionDialog.js:47 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "Wylogowanie użytkownika %s" #: js/ui/endSessionDialog.js:48 msgctxt "title" msgid "Log Out" msgstr "Wylogowanie" #: js/ui/endSessionDialog.js:51 #, javascript-format msgid "%s will be logged out automatically in %d second" msgid_plural "%s will be logged out automatically in %d seconds" msgstr[0] "Użytkownik %s zostanie wylogowany za %d sekundę" msgstr[1] "Użytkownik %s zostanie wylogowany za %d sekundy" msgstr[2] "Użytkownik %s zostanie wylogowany za %d sekund" #: js/ui/endSessionDialog.js:57 #, javascript-format msgid "You will be logged out automatically in %d second" msgid_plural "You will be logged out automatically in %d seconds" msgstr[0] "Wylogowanie nastąpi za %d sekundę" msgstr[1] "Wylogowanie nastąpi za %d sekundy" msgstr[2] "Wylogowanie nastąpi za %d sekund" #: js/ui/endSessionDialog.js:64 msgctxt "button" msgid "Log Out" msgstr "Wyloguj się" #: js/ui/endSessionDialog.js:70 js/ui/status/system.js:174 msgctxt "title" msgid "Power Off" msgstr "Wyłączenie komputera" #: js/ui/endSessionDialog.js:71 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Instalacja aktualizacji i wyłączenie komputera" #: js/ui/endSessionDialog.js:74 #, javascript-format msgid "The system will power off automatically in %d second" msgid_plural "The system will power off automatically in %d seconds" msgstr[0] "Wyłączenie komputera nastąpi za %d sekundę" msgstr[1] "Wyłączenie komputera nastąpi za %d sekundy" msgstr[2] "Wyłączenie komputera nastąpi za %d sekund" #: js/ui/endSessionDialog.js:78 js/ui/endSessionDialog.js:97 msgctxt "checkbox" msgid "Install pending software updates" msgstr "Instalacja oczekujących aktualizacji oprogramowania" #: js/ui/endSessionDialog.js:82 msgctxt "button" msgid "Power Off" msgstr "Wyłącz komputer" #: js/ui/endSessionDialog.js:89 msgctxt "title" msgid "Restart" msgstr "Ponowne uruchomienie" #: js/ui/endSessionDialog.js:90 msgctxt "title" msgid "Install Updates & Restart" msgstr "Instalacja aktualizacji i ponowne uruchomienie" #: js/ui/endSessionDialog.js:93 #, javascript-format msgid "The system will restart automatically in %d second" msgid_plural "The system will restart automatically in %d seconds" msgstr[0] "Ponowne uruchomienie komputera nastąpi za %d sekundę" msgstr[1] "Ponowne uruchomienie komputera nastąpi za %d sekundy" msgstr[2] "Ponowne uruchomienie komputera nastąpi za %d sekund" #: js/ui/endSessionDialog.js:101 msgctxt "button" msgid "Restart" msgstr "Uruchom ponownie" #: js/ui/endSessionDialog.js:109 msgctxt "title" msgid "Restart & Install Updates" msgstr "Ponowne uruchomienie i instalacja aktualizacji" #: js/ui/endSessionDialog.js:112 #, javascript-format msgid "The system will automatically restart and install updates in %d second" msgid_plural "" "The system will automatically restart and install updates in %d seconds" msgstr[0] "" "Ponowne uruchomienie komputera i instalacja aktualizacji nastąpi za " "%d sekundę" msgstr[1] "" "Ponowne uruchomienie komputera i instalacja aktualizacji nastąpi za " "%d sekundy" msgstr[2] "" "Ponowne uruchomienie komputera i instalacja aktualizacji nastąpi za %d sekund" #: js/ui/endSessionDialog.js:119 js/ui/endSessionDialog.js:140 msgctxt "button" msgid "Restart & Install" msgstr "Uruchom ponownie i zainstaluj" #: js/ui/endSessionDialog.js:121 msgctxt "button" msgid "Install & Power Off" msgstr "Zainstaluj i wyłącz komputer" #: js/ui/endSessionDialog.js:122 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Wyłączenie komputera po zainstalowaniu aktualizacji" #: js/ui/endSessionDialog.js:129 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "Ponowne uruchomienie i instalacja aktualizacji" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:134 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "System %s %s zostanie zainstalowany po ponownym uruchomieniu. Instalacja " "aktualizacji może zająć dużo czasu. Proszę się upewnić, że wykonano kopię " "zapasową danych i podłączono komputer do prądu." #: js/ui/endSessionDialog.js:283 msgid "Low battery power: please plug in before installing updates" msgstr "" "Niski poziom naładowania akumulatora: proszę podłączyć komputer do prądu " "przed instalowaniem aktualizacji" #: js/ui/endSessionDialog.js:292 msgid "Some applications are busy or have unsaved work" msgstr "Niektóre programy są używane lub mają niezapisane dane" #: js/ui/endSessionDialog.js:297 msgid "Other users are logged in" msgstr "Inni użytkownicy są zalogowani" #: js/ui/endSessionDialog.js:467 msgctxt "button" msgid "Boot Options" msgstr "Opcje uruchamiania" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:672 #, javascript-format msgid "%s (remote)" msgstr "%s (zdalnie)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:675 #, javascript-format msgid "%s (console)" msgstr "%s (konsola)" #: js/ui/extensionDownloader.js:280 msgid "Install" msgstr "Zainstaluj" #: js/ui/extensionDownloader.js:286 msgid "Install Extension" msgstr "Instalacja rozszerzenia" #: js/ui/extensionDownloader.js:287 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "" "Pobrać i zainstalować rozszerzenie „%s” z witryny extensions.gnome.org?" #: js/ui/extensionSystem.js:352 msgid "Extension Updates Available" msgstr "Dostępne są aktualizacje rozszerzeń" #: js/ui/extensionSystem.js:353 msgid "Extension updates are ready to be installed" msgstr "Aktualizacje rozszerzeń są gotowe do zainstalowania" #: js/ui/inhibitShortcutsDialog.js:70 msgid "Allow inhibiting shortcuts" msgstr "Zezwolenie na wyłączenie skrótów" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:73 #, javascript-format msgid "The app %s wants to inhibit shortcuts" msgstr "Program „%s” prosi o wyłączenie skrótów" #: js/ui/inhibitShortcutsDialog.js:74 msgid "An app wants to inhibit shortcuts" msgstr "Program prosi o wyłączenie skrótów" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:81 #, javascript-format msgid "You can restore shortcuts by pressing %s" msgstr "Można je włączyć naciskając klawisze %s" #: js/ui/kbdA11yDialog.js:34 msgid "Slow Keys Turned On" msgstr "Włączono powolne klawisze" #: js/ui/kbdA11yDialog.js:35 msgid "Slow Keys Turned Off" msgstr "Wyłączono powolne klawisze" #: js/ui/kbdA11yDialog.js:36 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "Przytrzymano klawisz Shift przez osiem sekund. Jest to skrót klawiszowy dla " "funkcji powolnych klawiszy, która wpływa na sposób pracy klawiatury." #: js/ui/kbdA11yDialog.js:42 msgid "Sticky Keys Turned On" msgstr "Włączono trwałe klawisze" #: js/ui/kbdA11yDialog.js:43 msgid "Sticky Keys Turned Off" msgstr "Wyłączono trwałe klawisze" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "Przyciśnięto klawisz Shift pięć razy z rzędu. Jest to skrót klawiszowy dla " "funkcji trwałych klawiszy, która wpływa na sposób pracy klawiatury." #: js/ui/kbdA11yDialog.js:47 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" "Przyciśnięto dwa klawisze naraz lub przyciśnięto klawisz Shift pięć razy " "z rzędu. Wyłącza to funkcję trwałych klawiszy, która wpływa na sposób pracy " "klawiatury." #: js/ui/kbdA11yDialog.js:57 msgid "Leave On" msgstr "Pozostaw włączone" #: js/ui/kbdA11yDialog.js:57 msgid "Turn On" msgstr "Włącz" #: js/ui/kbdA11yDialog.js:67 js/ui/status/network.js:455 msgid "Turn Off" msgstr "Wyłącz" #: js/ui/kbdA11yDialog.js:67 msgid "Leave Off" msgstr "Pozostaw wyłączone" #: js/ui/keyboard.js:180 js/ui/status/keyboard.js:897 msgid "Keyboard Settings" msgstr "Ustawienia klawiatury" #: js/ui/lookingGlass.js:727 msgid "No extensions installed" msgstr "Nie zainstalowano rozszerzeń" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:788 #, javascript-format msgid "%s has not emitted any errors" msgstr "Rozszerzenie „%s” nie wysłało żadnych błędów" #: js/ui/lookingGlass.js:794 msgid "Hide Errors" msgstr "Ukryj błędy" #: js/ui/lookingGlass.js:798 js/ui/lookingGlass.js:875 msgid "Show Errors" msgstr "Wyświetl błędy" #: js/ui/lookingGlass.js:807 msgid "Active" msgstr "Aktywne" #: js/ui/lookingGlass.js:810 msgid "Inactive" msgstr "Nieaktywne" #: js/ui/lookingGlass.js:812 msgid "Error" msgstr "Błąd" #: js/ui/lookingGlass.js:814 msgid "Out of date" msgstr "Nieaktualne" #: js/ui/lookingGlass.js:816 msgid "Downloading" msgstr "Pobieranie" #: js/ui/lookingGlass.js:818 msgid "Deactivating" msgstr "Dezaktywowanie" #: js/ui/lookingGlass.js:820 msgid "Activating" msgstr "Aktywowanie" #: js/ui/lookingGlass.js:853 msgid "View Source" msgstr "Wyświetl źródło" #: js/ui/lookingGlass.js:864 msgid "Web Page" msgstr "Strona WWW" #: js/ui/main.js:277 msgid "System was put in unsafe mode" msgstr "Komputer został przełączony w tryb niezabezpieczony" #: js/ui/main.js:278 msgid "Apps now have unrestricted access" msgstr "Programy mają teraz nieograniczony dostęp" #: js/ui/main.js:338 msgid "Logged in as a privileged user" msgstr "Zalogowano jako uprawniony użytkownik" #: js/ui/main.js:339 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" "Należy unikać działania jako uprawniony użytkownik z powodów bezpieczeństwa. " "Jeśli to możliwe, należy zalogować się jako zwykły użytkownik." #: js/ui/main.js:387 msgid "Screen Lock disabled" msgstr "Blokada ekranu jest wyłączona" #: js/ui/main.js:388 msgid "Screen Locking requires the GNOME display manager" msgstr "Blokowanie ekranu wymaga menedżera wyświetlania GNOME" #. Translators: this is the string displayed in the header when a message #. source doesn't have a name #: js/ui/messageList.js:374 msgid "Unknown App" msgstr "Nieznany program" #: js/ui/messageTray.js:326 js/ui/messageTray.js:328 msgid "Notification sound" msgstr "Dźwięk powiadomienia" #: js/ui/mpris.js:198 msgid "Unknown artist" msgstr "Nieznany wykonawca" #: js/ui/mpris.js:208 msgid "Unknown title" msgstr "Nieznany tytuł" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:328 msgid "Type to search" msgstr "Wyszukiwanie" #: js/ui/overviewControls.js:392 msgid "Apps" msgstr "Programy" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:33 msgid "Overview" msgstr "Podgląd" #: js/ui/padOsd.js:98 msgid "New shortcut…" msgstr "Nowy skrót…" #: js/ui/padOsd.js:151 msgid "App defined" msgstr "Określone przez program" #: js/ui/padOsd.js:152 msgid "Show on-screen help" msgstr "Ekran pomocy" #: js/ui/padOsd.js:153 msgid "Switch monitor" msgstr "Przełączenie monitora" #: js/ui/padOsd.js:154 msgid "Assign keystroke" msgstr "Przydzielenie klawiszy" #: js/ui/padOsd.js:223 msgid "Done" msgstr "Gotowe" #: js/ui/padOsd.js:726 msgid "Edit…" msgstr "Modyfikuj…" #: js/ui/padOsd.js:773 msgid "None" msgstr "Brak" #: js/ui/padOsd.js:844 msgid "Press a button to configure" msgstr "Naciśnięcie przycisku skonfiguruje" #: js/ui/padOsd.js:845 msgid "Press Esc to exit" msgstr "Klawisz Esc zakończy" #: js/ui/padOsd.js:848 msgid "Press any key to exit" msgstr "Naciśnięcie dowolnego przycisku zakończy" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:423 msgid "Activities" msgstr "Podgląd" #: js/ui/panel.js:504 msgctxt "System menu in the top bar" msgid "System" msgstr "Menu systemowe" #: js/ui/panel.js:678 msgid "Top Bar" msgstr "Górny pasek" #: js/ui/quickSettings.js:188 msgid "Open menu" msgstr "Otwórz menu" #: js/ui/runDialog.js:61 msgid "Run a Command" msgstr "Proszę wprowadzić polecenie:" #: js/ui/runDialog.js:76 msgid "Press ESC to close" msgstr "Klawisz Esc zamknie" #: js/ui/runDialog.js:241 msgid "Restart is not available on Wayland" msgstr "Ponowne uruchamianie jest niedostępne w technologii Wayland" #: js/ui/runDialog.js:246 msgid "Restarting…" msgstr "Ponowne uruchamianie…" #: js/ui/screenShield.js:233 msgid "GNOME needs to lock the screen" msgstr "Środowisko GNOME musi zablokować ekran" #: js/ui/screenShield.js:274 js/ui/screenShield.js:667 msgid "Unable to lock" msgstr "Nie można zablokować" #: js/ui/screenShield.js:275 js/ui/screenShield.js:668 msgid "Lock was blocked by an app" msgstr "Blokowanie zostało zablokowane przez program" #: js/ui/screenshot.js:1252 msgid "Selection" msgstr "Zaznaczenie" #: js/ui/screenshot.js:1262 msgid "Area Selection" msgstr "Wybór obszaru" #: js/ui/screenshot.js:1267 msgid "Screen" msgstr "Ekran" #: js/ui/screenshot.js:1277 msgid "Screen Selection" msgstr "Wybór ekranu" #: js/ui/screenshot.js:1282 msgid "Window" msgstr "Okno" #: js/ui/screenshot.js:1292 msgid "Window Selection" msgstr "Wybór okna" #. Translators: entry in the window right click menu. #: js/ui/screenshot.js:1317 js/ui/status/system.js:111 js/ui/windowMenu.js:28 msgid "Take Screenshot" msgstr "Wykonaj zrzut ekranu" #: js/ui/screenshot.js:1333 msgid "Record Screen" msgstr "Nagraj ekran" #. Translators: since this string refers to an action, #. it needs to be phrased as a verb. #: js/ui/screenshot.js:1350 msgid "Capture" msgstr "Wykonaj" #: js/ui/screenshot.js:1372 msgid "Show Pointer" msgstr "Widoczny kursor" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1996 msgid "Screencasts" msgstr "Nagrania ekranu" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast From 07-17-2013 10:00:46 PM" #: js/ui/screenshot.js:2001 #, no-c-format msgid "Screencast From %d %t" msgstr "Nagranie ekranu z %d %t" #. Translators: notification title. #: js/ui/screenshot.js:2047 msgid "Screencast recorded" msgstr "Nagrano ekran" #. Translators: notification title. #: js/ui/screenshot.js:2060 msgid "Screencast failed to start" msgstr "Rozpoczęcie nagrania ekranu się nie powiodło" #. Translators: notification title. #: js/ui/screenshot.js:2066 msgid "Screencast ended: Out of disk space" msgstr "Nagranie ekranu zakończyło się: brak miejsca na dysku" #. We can encourage user to try again on service crashes since the #. recorder will auto-blocklist the pipeline that crashed. #. Translators: notification title. #: js/ui/screenshot.js:2072 msgid "Screencast ended unexpectedly, please try again" msgstr "" "Nagranie ekranu zakończyło się niespodziewanie, proszę spróbować ponownie" #. Translators: notification title. #: js/ui/screenshot.js:2075 msgid "Screencast ended unexpectedly" msgstr "Nagranie ekranu zakończyło się niespodziewanie" #. Translators: notification source name. #: js/ui/screenshot.js:2085 js/ui/screenshot.js:2327 msgid "Screenshot" msgstr "Zrzut ekranu" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:2092 msgid "Click here to view the video." msgstr "Kliknięcie tutaj wyświetli film." #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:2100 js/ui/screenshot.js:2343 msgid "Show in Files" msgstr "Wyświetl w Menedżerze plików" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2287 #, javascript-format msgid "Screenshot From %s" msgstr "Zrzut ekranu z %s" #. Translators: notification title. #: js/ui/screenshot.js:2333 msgid "Screenshot captured" msgstr "Wykonano zrzut ekranu" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2335 msgid "You can paste the image from the clipboard." msgstr "Można wkleić obraz ze schowka." #: js/ui/screenshot.js:2391 js/ui/screenshot.js:2555 msgid "Screenshot taken" msgstr "Wykonano zrzut ekranu" #: js/ui/search.js:829 msgid "Searching…" msgstr "Wyszukiwanie…" #: js/ui/search.js:831 msgid "No results" msgstr "Brak wyników" #: js/ui/search.js:962 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "%d więcej" msgstr[1] "%d więcej" msgstr[2] "%d więcej" #: js/ui/searchController.js:87 #: subprojects/extensions-app/data/ui/extensions-window.ui:73 msgid "Search" msgstr "Wyszukiwanie" #: js/ui/shellEntry.js:21 msgid "Copy" msgstr "Skopiuj" #: js/ui/shellEntry.js:26 msgid "Paste" msgstr "Wklej" #: js/ui/shellEntry.js:78 msgid "Show Text" msgstr "Wyświetl tekst" #: js/ui/shellEntry.js:80 msgid "Hide Text" msgstr "Ukryj tekst" #: js/ui/shellEntry.js:174 msgid "Caps lock is on" msgstr "Klawisz Caps Lock jest włączony" #: js/ui/shellMountOperation.js:286 msgid "Hidden Volume" msgstr "Ukryty wolumin" #: js/ui/shellMountOperation.js:289 msgid "Windows System Volume" msgstr "Systemowy wolumin Windows" #: js/ui/shellMountOperation.js:292 msgid "Uses Keyfiles" msgstr "Używa plików kluczy" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:300 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead" msgstr "" "Do odblokowania woluminu używającego plików kluczy należy użyć narzędzia " "%s" #: js/ui/shellMountOperation.js:304 msgid "" "You need an external utility like Disks to unlock a volume that uses " "keyfiles" msgstr "" "Do odblokowania woluminu używającego plików kluczy potrzeba zewnętrznego " "narzędzia, takiego jak Dyski" #: js/ui/shellMountOperation.js:312 msgid "PIM Number" msgstr "Numer PIM" #: js/ui/shellMountOperation.js:371 msgid "Remember Password" msgstr "Zapamiętanie hasła" #: js/ui/shellMountOperation.js:386 msgid "Unlock" msgstr "Odblokuj" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:400 #, javascript-format msgid "Open %s" msgstr "Otwórz program %s" #: js/ui/shellMountOperation.js:436 msgid "The PIM must be a number or empty" msgstr "PIM musi być numerem lub być pusty" #: js/ui/status/accessibility.js:34 msgid "Accessibility" msgstr "Ułatwienia dostępu" #: js/ui/status/accessibility.js:44 msgid "High Contrast" msgstr "Wysoki kontrast" #: js/ui/status/accessibility.js:47 msgid "Zoom" msgstr "Powiększanie" #: js/ui/status/accessibility.js:54 msgid "Screen Reader" msgstr "Czytnik ekranowy" #: js/ui/status/accessibility.js:58 msgid "Screen Keyboard" msgstr "Klawiatura ekranowa" #: js/ui/status/accessibility.js:62 msgid "Visual Alerts" msgstr "Alarmy wizualne" #: js/ui/status/accessibility.js:66 msgid "Sticky Keys" msgstr "Trwałe klawisze" #: js/ui/status/accessibility.js:70 msgid "Slow Keys" msgstr "Powolne klawisze" #: js/ui/status/accessibility.js:74 msgid "Bounce Keys" msgstr "Odskakujące klawisze" #: js/ui/status/accessibility.js:78 msgid "Mouse Keys" msgstr "Klawisze myszy" #: js/ui/status/accessibility.js:83 msgid "Accessibility Settings" msgstr "Ustawienia ułatwień dostępu" #: js/ui/status/accessibility.js:140 msgid "Large Text" msgstr "Duży tekst" #: js/ui/status/autoRotate.js:14 msgid "Auto Rotate" msgstr "Automatyczne obracanie" #: js/ui/status/backgroundApps.js:156 msgctxt "title" msgid "Background Apps" msgstr "Programy w tle" #: js/ui/status/backgroundApps.js:171 msgid "Apps known to be running without a window" msgstr "Programy, o których wiadomo, że działają bez okna" #: js/ui/status/backgroundApps.js:182 msgid "App Settings" msgstr "Ustawienia programów" #: js/ui/status/backgroundApps.js:239 msgid "No Background Apps" msgstr "Nie ma programów w tle" #: js/ui/status/backgroundApps.js:241 #, javascript-format msgid "%d Background App" msgid_plural "%d Background Apps" msgstr[0] "%d program w tle" msgstr[1] "%d programy w tle" msgstr[2] "%d programów w tle" #: js/ui/status/backlight.js:39 msgid "Keyboard Brightness" msgstr "Jasność klawiatury" #: js/ui/status/backlight.js:79 msgid "Off" msgstr "Wyłączona" #: js/ui/status/backlight.js:80 msgid "Low" msgstr "Niska" #: js/ui/status/backlight.js:81 msgid "High" msgstr "Wysoka" #: js/ui/status/backlight.js:147 js/ui/status/keyboard.js:879 msgid "Keyboard" msgstr "Klawiatura" #: js/ui/status/bluetooth.js:245 js/ui/status/network.js:360 msgid "Disconnect" msgstr "Rozłącz" #: js/ui/status/bluetooth.js:262 js/ui/status/bluetooth.js:264 msgid "Bluetooth" msgstr "Bluetooth" #: js/ui/status/bluetooth.js:287 js/ui/status/network.js:1900 msgid "Bluetooth Settings" msgstr "Ustawienia Bluetooth" #: js/ui/status/bluetooth.js:334 msgid "No available or connected devices" msgstr "Brak dostępnych lub połączonych urządzeń" #: js/ui/status/bluetooth.js:335 msgid "Turn on Bluetooth to connect to devices" msgstr "Należy włączyć Bluetooth, aby łączyć się z urządzeniami" #. Translators: This is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:389 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d połączone" msgstr[1] "%d połączone" msgstr[2] "%d połączonych" #: js/ui/status/brightness.js:32 msgid "Brightness" msgstr "Jasność" #: js/ui/status/darkMode.js:12 msgid "Dark Style" msgstr "Styl ciemny" #: js/ui/status/dwellClick.js:15 msgid "Single Click" msgstr "Pojedyncze kliknięcie" #: js/ui/status/dwellClick.js:20 msgid "Double Click" msgstr "Podwójne kliknięcie" #: js/ui/status/dwellClick.js:25 msgid "Drag" msgstr "Przeciągnięcie" #: js/ui/status/dwellClick.js:30 msgid "Secondary Click" msgstr "Kliknięcie pomocnicze" #: js/ui/status/dwellClick.js:39 msgid "Dwell Click" msgstr "Kliknięcie spoczynkowe" #: js/ui/status/keyboard.js:896 msgid "Show Keyboard Layout" msgstr "Wyświetl układ klawiatury" #: js/ui/status/location.js:337 msgid "Allow location access" msgstr "Zezwolenie na dostęp do położenia" #. Translators: %s is an application name #: js/ui/status/location.js:339 #, javascript-format msgid "The app %s wants to access your location" msgstr "Program „%s” prosi o dostęp do położenia użytkownika" #: js/ui/status/location.js:349 msgid "Location access can be changed at any time from the privacy settings" msgstr "" "W każdej chwili można zmienić dostęp do położenia w ustawieniach prywatności" #: js/ui/status/location.js:357 msgid "Deny Access" msgstr "Odmów dostępu" #: js/ui/status/location.js:362 msgid "Grant Access" msgstr "Udziel dostępu" #: js/ui/status/network.js:62 msgid "" msgstr "" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:354 #, javascript-format msgid "Disconnect %s" msgstr "Rozłącz urządzenie %s" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:356 #, javascript-format msgid "Connect to %s" msgstr "Połącz z urządzeniem %s" #: js/ui/status/network.js:1050 msgid "Secure" msgstr "zabezpieczona" #: js/ui/status/network.js:1050 msgid "Not secure" msgstr "niezabezpieczona" #: js/ui/status/network.js:1051 #, javascript-format msgid "Signal strength %s%%" msgstr "siła sygnału: %s%%" #. translators: The first placeholder is the network name, the second and indication whether it is secure, and the last the signal strength indication #: js/ui/status/network.js:1053 #, javascript-format msgid "%s, %s, %s" msgstr "%s, %s, %s" #. Translators: %s is a network identifier #: js/ui/status/network.js:1155 #, javascript-format msgid "%s Hotspot" msgstr "Hotspot %s" #: js/ui/status/network.js:1426 #, javascript-format msgid "%d connected" msgid_plural "%d connected" msgstr[0] "%d połączone" msgstr[1] "%d połączone" msgstr[2] "%d połączonych" #: js/ui/status/network.js:1524 js/ui/status/network.js:1540 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1525 msgid "VPN Settings" msgstr "Ustawienia sieci VPN" #: js/ui/status/network.js:1785 msgid "Wi–Fi" msgstr "Wi-Fi" #: js/ui/status/network.js:1787 msgid "All Networks" msgstr "Wszystkie sieci" #: js/ui/status/network.js:1884 msgid "Wired Connections" msgstr "Połączenia przewodowe" #: js/ui/status/network.js:1885 msgid "Wired Settings" msgstr "Ustawienia sieci przewodowej" #: js/ui/status/network.js:1899 msgid "Bluetooth Tethers" msgstr "Połączenia Bluetooth" #. Translators: "Tether" from "Bluetooth Tether" #: js/ui/status/network.js:1906 msgid "Tether" msgstr "Połączenie" #: js/ui/status/network.js:1919 msgid "Mobile Connections" msgstr "Połączenia komórkowe" #: js/ui/status/network.js:1921 msgid "Mobile Broadband Settings" msgstr "Ustawienia sieci komórkowej" #. Translators: "Mobile" from "Mobile Broadband" #: js/ui/status/network.js:1930 msgid "Mobile" msgstr "Sieć komórkowa" #: js/ui/status/network.js:1964 msgid "Sign Into Wi–Fi Network" msgstr "Zaloguj się do sieci Wi-Fi" #: js/ui/status/network.js:2151 msgid "Connection failed" msgstr "Połączenie się nie powiodło" #: js/ui/status/network.js:2152 msgid "Activation of network connection failed" msgstr "Włączenie połączenia sieciowego się nie powiodło" #: js/ui/status/nightLight.js:19 msgid "Night Light" msgstr "Nocne światło" #: js/ui/status/powerProfiles.js:19 msgctxt "Power profile" msgid "Performance" msgstr "Wydajność" #: js/ui/status/powerProfiles.js:24 msgctxt "Power profile" msgid "Balanced" msgstr "Zrównoważone zasilanie" #: js/ui/status/powerProfiles.js:29 msgctxt "Power profile" msgid "Power Saver" msgstr "Oszczędzanie energii" #: js/ui/status/powerProfiles.js:39 js/ui/status/powerProfiles.js:69 msgid "Power Mode" msgstr "Tryb zasilania" #: js/ui/status/powerProfiles.js:71 msgid "Power Settings" msgstr "Ustawienia zasilania" #: js/ui/status/remoteAccess.js:74 msgid "Stop Screencast" msgstr "Zatrzymaj nagrywanie ekranu" #: js/ui/status/remoteAccess.js:144 msgid "Stop Screen Sharing" msgstr "Zatrzymaj udostępnianie ekranu" #: js/ui/status/rfkill.js:99 msgid "Airplane Mode" msgstr "Tryb samolotowy" #: js/ui/status/system.js:168 msgid "Power Off Menu" msgstr "Menu wyłączania komputera" #: js/ui/status/system.js:176 msgid "Suspend" msgstr "Uśpij" #: js/ui/status/system.js:181 msgid "Restart…" msgstr "Uruchom ponownie…" #: js/ui/status/system.js:186 msgid "Power Off…" msgstr "Wyłącz komputer…" #: js/ui/status/system.js:193 #: subprojects/extensions-app/data/ui/extensions-window.ui:124 msgid "Log Out…" msgstr "Wyloguj się…" #: js/ui/status/system.js:198 msgid "Switch User…" msgstr "Przełącz użytkownika…" #: js/ui/status/system.js:242 msgctxt "action" msgid "Lock Screen" msgstr "Zablokuj ekran" #: js/ui/status/thunderbolt.js:308 msgid "Unknown Thunderbolt device" msgstr "Nieznane urządzenie Thunderbolt" #: js/ui/status/thunderbolt.js:309 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" "Podczas nieobecności wykryto nowe urządzenie. Proszę je rozłączyć " "i podłączyć ponownie, aby zacząć je używać." #: js/ui/status/thunderbolt.js:312 msgid "Unauthorized Thunderbolt device" msgstr "Nieupoważnione urządzenie Thunderbolt" #: js/ui/status/thunderbolt.js:313 msgid "" "New device has been detected and needs to be authorized by an administrator" msgstr "" "Wykryto nowe urządzenie, które musi zostać upoważnione przez administratora" #: js/ui/status/thunderbolt.js:319 msgid "Thunderbolt authorization error" msgstr "Błąd upoważnienia Thunderbolt" #: js/ui/status/thunderbolt.js:320 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "Nie można upoważnić urządzenia Thunderbolt: %s" #: js/ui/status/volume.js:218 msgid "Volume changed" msgstr "Zmieniono głośność" #: js/ui/status/volume.js:231 msgid "Unmute" msgstr "Włącz dźwięk" #: js/ui/status/volume.js:231 msgid "Mute" msgstr "Wycisz" #: js/ui/status/volume.js:286 msgid "Volume" msgstr "Głośność" #: js/ui/status/volume.js:302 msgid "Sound Output" msgstr "Wyjście dźwięku" #: js/ui/status/volume.js:374 msgid "Sound Input" msgstr "Wejście dźwięku" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:20 msgid "Mirror" msgstr "Ten sam obraz" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:29 msgid "Join Displays" msgstr "Połączone ekrany" #. Translators: this is for using only external displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:39 msgid "External Only" msgstr "Tylko zewnętrzny" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:47 msgid "Built-in Only" msgstr "Tylko wbudowany" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:378 msgid "%A %B %-d" msgstr "%A, %-d %B" #: js/ui/unlockDialog.js:384 msgid "Swipe up to unlock" msgstr "Przeciągnięcie w górę odblokuje" #: js/ui/unlockDialog.js:385 msgid "Click or press a key to unlock" msgstr "Kliknięcie lub naciśnięcie klawisza odblokuje" #: js/ui/unlockDialog.js:568 msgid "Unlock Window" msgstr "Okno odblokowania" #: js/ui/unlockDialog.js:577 msgid "Log in as another user" msgstr "Zaloguj jako inny użytkownik" #: js/ui/welcomeDialog.js:47 #, javascript-format msgid "GNOME %s" msgstr "GNOME %s" #: js/ui/welcomeDialog.js:51 #, javascript-format msgid "Welcome to %s" msgstr "Witamy w systemie %s" #: js/ui/welcomeDialog.js:52 msgid "If you want to learn your way around, check out the tour" msgstr "" "Przewodnik po środowisku pomoże zacząć pracę i poznać niezbędne funkcje" #: js/ui/welcomeDialog.js:61 msgid "Skip" msgstr "Pomiń" #: js/ui/welcomeDialog.js:66 msgid "Take Tour" msgstr "Rozpocznij przewodnik" #: js/ui/windowAttentionHandler.js:18 #, javascript-format msgid "“%s” is ready" msgstr "Okno „%s” jest gotowe" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:68 msgid "Keep these display settings?" msgstr "Zachować te ustawienia?" #: js/ui/windowManager.js:78 msgid "Revert Settings" msgstr "Przywróć ustawienia" #: js/ui/windowManager.js:83 msgid "Keep Changes" msgstr "Zachowaj zmiany" #: js/ui/windowManager.js:103 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "Zmienione ustawienia zostaną przywrócone za %d sekundę" msgstr[1] "Zmienione ustawienia zostaną przywrócone za %d sekundy" msgstr[2] "Zmienione ustawienia zostaną przywrócone za %d sekund" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:500 #, javascript-format msgid "%d × %d" msgstr "%d×%d" #: js/ui/windowMenu.js:40 msgid "Hide" msgstr "Ukryj" #: js/ui/windowMenu.js:47 msgid "Restore" msgstr "Przywróć" #: js/ui/windowMenu.js:51 msgid "Maximize" msgstr "Zmaksymalizuj" #: js/ui/windowMenu.js:58 msgid "Move" msgstr "Przenieś" #: js/ui/windowMenu.js:78 msgid "Resize" msgstr "Zmień rozmiar" #: js/ui/windowMenu.js:98 msgid "Always on Top" msgstr "Zawsze na wierzchu" #: js/ui/windowMenu.js:117 msgid "Always on Visible Workspace" msgstr "Zawsze na widocznym obszarze roboczym" #: js/ui/windowMenu.js:131 msgid "Move to Workspace Left" msgstr "Przenieś do lewego obszaru" #: js/ui/windowMenu.js:137 msgid "Move to Workspace Right" msgstr "Przenieś do prawego obszaru" #: js/ui/windowMenu.js:143 msgid "Move to Workspace Up" msgstr "Przenieś do górnego obszaru" #: js/ui/windowMenu.js:149 msgid "Move to Workspace Down" msgstr "Przenieś do dolnego obszaru" #: js/ui/windowMenu.js:167 msgid "Move to Monitor Up" msgstr "Przenieś na górny monitor" #: js/ui/windowMenu.js:176 msgid "Move to Monitor Down" msgstr "Przenieś na dolny monitor" #: js/ui/windowMenu.js:185 msgid "Move to Monitor Left" msgstr "Przenieś na lewy monitor" #: js/ui/windowMenu.js:194 msgid "Move to Monitor Right" msgstr "Przenieś na prawy monitor" #: js/ui/windowMenu.js:202 msgid "Close" msgstr "Zamknij" #: src/main.c:529 subprojects/extensions-tool/src/main.c:336 msgid "Print version" msgstr "Wyświetla wersję" #: src/main.c:535 msgid "Mode used by GDM for login screen" msgstr "Tryb używany przez GDM dla ekranu logowania" #: src/main.c:541 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "Używa podanego trybu, np. „gdm” dla ekranu logowania" #: src/main.c:547 msgid "List possible modes" msgstr "Wyświetla listę możliwych trybów" #: src/main.c:553 msgid "Force animations to be enabled" msgstr "Wymusza wyłączenie animacji" #: src/shell-app.c:252 msgctxt "program" msgid "Unknown" msgstr "Nieznany" #: src/shell-app.c:503 #, c-format msgid "Failed to launch “%s”" msgstr "Uruchomienie „%s” się nie powiodło" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match" msgstr "Hasła się nie zgadzają" #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "Hasło nie może być puste" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "Okno uwierzytelniania zostało odrzucone przez użytkownika" #: src/st/st-icon-theme.c:1865 #, c-format msgid "Icon '%s' not present in theme %s" msgstr "Ikony „%s” nie ma w motywie %s" #: src/st/st-icon-theme.c:3454 src/st/st-icon-theme.c:3757 msgid "Failed to load icon" msgstr "Wczytanie ikony się nie powiodło" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 msgid "Manage your GNOME Extensions" msgstr "Zarządzanie rozszerzeniami GNOME" #. developer_name tag deprecated with Appstream 1.0 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:19 msgid "The GNOME Project" msgstr "Projekt GNOME" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:51 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" "Ten program obsługuje aktualizowanie, konfigurowanie preferencji oraz " "usuwanie i wyłączanie niechcianych rozszerzeń." #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:64 msgid "Main Window" msgstr "Okno główne" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:68 msgid "Available Updates" msgstr "Dostępne aktualizacje" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:72 msgid "Search View" msgstr "Widok wyszukiwania" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "Konfiguracja rozszerzeń powłoki GNOME" #: subprojects/extensions-app/js/extensionManager.js:237 #, javascript-format msgid "" "The installed version of this extension (%s) is incompatible with the " "current version of GNOME (%s). The extension has been disabled." msgstr "" "Zainstalowana wersja tego rozszerzenia (%s) jest niezgodna z obecną wersją " "środowiska GNOME (%s). Rozszerzenie zostało wyłączone." #: subprojects/extensions-app/js/extensionManager.js:238 #, javascript-format msgid "" "The installed version of this extension is incompatible with the current " "version of GNOME (%s). The extension has been disabled." msgstr "" "Zainstalowana wersja tego rozszerzenia jest niezgodna z obecną wersją " "środowiska GNOME (%s). Rozszerzenie zostało wyłączone." #: subprojects/extensions-app/js/extensionManager.js:242 msgid "" "An error has occurred in this extension. This could cause issues elsewhere " "in the system. It is recommended to turn the extension off until the error " "is resolved." msgstr "" "W tym rozszerzeniu wystąpił błąd. Może to powodować problemy w innym miejscu " "systemu. Zalecane jest wyłączenie rozszerzenia do czasu rozwiązania błędu." #. translators: Details for an extension error #: subprojects/extensions-app/js/extensionManager.js:248 msgid "Error details:" msgstr "Informacje o błędzie:" #: subprojects/extensions-app/js/extensionRow.js:82 #, javascript-format msgid "Version %s" msgstr "Wersja %s" #: subprojects/extensions-app/js/extensionsWindow.js:113 #, javascript-format msgid "Remove “%s”?" msgstr "Usunąć rozszerzenie „%s”?" #: subprojects/extensions-app/js/extensionsWindow.js:114 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "" "Po usunięciu rozszerzenia jego ponowne włączenie będzie wymagało pobrania od " "nowa" #: subprojects/extensions-app/js/extensionsWindow.js:117 msgid "_Cancel" msgstr "_Anuluj" #: subprojects/extensions-app/js/extensionsWindow.js:118 msgid "_Remove" msgstr "_Usuń" #: subprojects/extensions-app/js/extensionsWindow.js:158 msgid "translator-credits" msgstr "" "Piotr Drąg , 2009-2024\n" "Tomasz Dominikowski , 2009\n" "Wojciech Szczęsny , 2013\n" "Aviary.pl , 2009-2024" #: subprojects/extensions-app/js/extensionsWindow.js:203 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "%d rozszerzenie zostanie zaktualizowane po następnym zalogowaniu." msgstr[1] "%d rozszerzenia zostaną zaktualizowane po następnym zalogowaniu." msgstr[2] "%d rozszerzeń zostanie zaktualizowanych po następnym zalogowaniu." #: subprojects/extensions-app/data/ui/extension-row.ui:22 msgid "Error Details" msgstr "Informacje o błędzie" #: subprojects/extensions-app/data/ui/extension-row.ui:62 msgid "Updates Details" msgstr "Informacje o aktualizacji" #: subprojects/extensions-app/data/ui/extension-row.ui:72 msgid "" "A new version of this extension is ready and will be loaded on next login." msgstr "" "Nowa wersja tego rozszerzenia jest gotowa i zostanie wczytana po następnym " "zalogowaniu." #: subprojects/extensions-app/data/ui/extension-row.ui:104 msgid "Extension Details" msgstr "Informacje o rozszerzeniu" #: subprojects/extensions-app/data/ui/extension-row.ui:192 msgid "_Website" msgstr "_Witryna" #: subprojects/extensions-app/data/ui/extension-row.ui:219 msgid "_Settings" msgstr "_Ustawienia" #: subprojects/extensions-app/data/ui/extension-row.ui:246 msgid "_Remove…" msgstr "_Usuń…" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Keyboard Shortcuts" msgstr "Skróty klawiszowe" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "O programie" #: subprojects/extensions-app/data/ui/extensions-window.ui:64 msgid "Main Menu" msgstr "Menu główne" #: subprojects/extensions-app/data/ui/extensions-window.ui:106 msgid "Search extensions" msgstr "Wyszukiwanie rozszerzeń" #: subprojects/extensions-app/data/ui/extensions-window.ui:134 msgid "_Extensions" msgstr "_Rozszerzenia" #: subprojects/extensions-app/data/ui/extensions-window.ui:139 msgid "More Information" msgstr "Więcej informacji" #: subprojects/extensions-app/data/ui/extensions-window.ui:151 msgid "" "Extensions can cause performance and stability issues. It is recommended to " "disable all extensions if you experience problems with your system." msgstr "" "Rozszerzenia mogą powodować problemy z wydajnością i stabilnością. " "W przypadku występowania problemów z komputerem zalecane jest wyłączenie " "wszystkich rozszerzeń." #: subprojects/extensions-app/data/ui/extensions-window.ui:178 msgid "User Extensions" msgstr "Rozszerzenia użytkownika" #: subprojects/extensions-app/data/ui/extensions-window.ui:198 msgid "System Extensions" msgstr "Rozszerzenia systemowe" #: subprojects/extensions-app/data/ui/extensions-window.ui:233 msgid "Search Results" msgstr "Wyniki wyszukiwania" #: subprojects/extensions-app/data/ui/extensions-window.ui:252 msgid "No Results Found" msgstr "Brak wyników" #: subprojects/extensions-app/data/ui/extensions-window.ui:253 msgid "Try a different search" msgstr "Proszę spróbować innych słów" #: subprojects/extensions-app/data/ui/extensions-window.ui:264 msgid "No Installed Extensions" msgstr "Brak zainstalowanych rozszerzeń" #: subprojects/extensions-app/data/ui/extensions-window.ui:265 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" "Witryna extensions.gnome.org " "umożliwia wyszukiwanie i dodawanie rozszerzeń." #: subprojects/extensions-app/data/ui/extensions-window.ui:276 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" "Nie można wyświetlić listy zainstalowanych rozszerzeń. Proszę się upewnić, " "że zalogowano w środowisku GNOME i spróbować ponownie." #: subprojects/extensions-app/data/ui/help-overlay.ui:9 msgctxt "shortcut window" msgid "General" msgstr "Ogólne" #: subprojects/extensions-app/data/ui/help-overlay.ui:12 msgctxt "shortcut window" msgid "Open Menu" msgstr "Otwarcie menu" #: subprojects/extensions-app/data/ui/help-overlay.ui:18 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Przełączenie wyszukiwania" #: subprojects/extensions-app/data/ui/help-overlay.ui:24 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Wyświetlenie skrótów" #: subprojects/extensions-app/data/ui/help-overlay.ui:30 msgctxt "shortcut window" msgid "Quit" msgstr "Zakończenie działania" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:284 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "Pomyślnie utworzono nowe rozszerzenie w %s.\n" #: subprojects/extensions-tool/src/command-create.c:376 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" "Nazwa jest być bardzo krótkim (najlepiej opisowym) napisem.\n" "Przykłady: %s" #: subprojects/extensions-tool/src/command-create.c:382 #: subprojects/extensions-tool/src/main.c:243 msgid "Name" msgstr "Nazwa" #: subprojects/extensions-tool/src/command-create.c:396 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" "Opis jest jednozdaniowym wyjaśnieniem działania rozszerzenia.\n" "Przykłady: %s" #: subprojects/extensions-tool/src/command-create.c:402 #: subprojects/extensions-tool/src/main.c:246 msgid "Description" msgstr "Opis" #: subprojects/extensions-tool/src/command-create.c:416 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" "UUID to globalnie unikalny identyfikator rozszerzenia.\n" "Musi być w formacie adresu e-mail (kliknięcie-aktywuje@alicja.example.com)\n" #: subprojects/extensions-tool/src/command-create.c:443 msgid "Choose one of the available templates:\n" msgstr "Proszę wybrać jeden z dostępnych szablonów:\n" #: subprojects/extensions-tool/src/command-create.c:457 msgid "Template" msgstr "Szablon" #: subprojects/extensions-tool/src/command-create.c:515 msgid "The unique identifier of the new extension" msgstr "Unikalny identyfikator nowego rozszerzenia" #: subprojects/extensions-tool/src/command-create.c:518 msgid "NAME" msgstr "NAZWA" #: subprojects/extensions-tool/src/command-create.c:519 msgid "The user-visible name of the new extension" msgstr "Widoczna dla użytkownika nazwa nowego rozszerzenia" #: subprojects/extensions-tool/src/command-create.c:521 msgid "DESCRIPTION" msgstr "OPIS" #: subprojects/extensions-tool/src/command-create.c:523 msgid "A short description of what the extension does" msgstr "Krótki opis działania rozszerzenia" #: subprojects/extensions-tool/src/command-create.c:525 #: subprojects/extensions-tool/src/command-pack.c:455 msgid "DOMAIN" msgstr "DOMENA" #: subprojects/extensions-tool/src/command-create.c:527 msgid "The gettext domain used by the extension" msgstr "Domena gettext używana przez rozszerzenie" #: subprojects/extensions-tool/src/command-create.c:529 #: subprojects/extensions-tool/src/command-pack.c:448 msgid "SCHEMA" msgstr "SCHEMAT" #: subprojects/extensions-tool/src/command-create.c:531 msgid "The GSettings schema used by the extension" msgstr "Schemat GSettings używany przez rozszerzenie" #: subprojects/extensions-tool/src/command-create.c:534 msgid "TEMPLATE" msgstr "SZABLON" #: subprojects/extensions-tool/src/command-create.c:535 msgid "The template to use for the new extension" msgstr "Szablon do użycia dla nowego rozszerzenia" #: subprojects/extensions-tool/src/command-create.c:538 msgid "Include prefs.js template" msgstr "Dołącza szablon prefs.js" #: subprojects/extensions-tool/src/command-create.c:544 msgid "Enter extension information interactively" msgstr "Interaktywnie wprowadza informacje o rozszerzeniu" #: subprojects/extensions-tool/src/command-create.c:552 msgid "Create a new extension" msgstr "Tworzy nowe rozszerzenie" #: subprojects/extensions-tool/src/command-create.c:570 #: subprojects/extensions-tool/src/command-list.c:190 msgid "Unknown arguments" msgstr "Nieznane parametry" #: subprojects/extensions-tool/src/command-create.c:595 msgid "UUID, name and description are required" msgstr "UUID, nazwa i opis są wymagane" #: subprojects/extensions-tool/src/command-disable.c:62 #: subprojects/extensions-tool/src/command-enable.c:62 #, c-format msgid "Extension “%s” does not exist\n" msgstr "Rozszerzenie „%s” nie istnieje\n" #: subprojects/extensions-tool/src/command-disable.c:98 msgid "Disable an extension" msgstr "Wyłącza rozszerzenie" #: subprojects/extensions-tool/src/command-disable.c:116 #: subprojects/extensions-tool/src/command-enable.c:116 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "Nie podano UUID" #: subprojects/extensions-tool/src/command-disable.c:121 #: subprojects/extensions-tool/src/command-enable.c:121 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "Podano więcej niż jeden UUID" #: subprojects/extensions-tool/src/command-enable.c:98 msgid "Enable an extension" msgstr "Włącza rozszerzenie" #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:66 #: subprojects/extensions-tool/src/main.c:150 msgid "Failed to connect to GNOME Shell\n" msgstr "Połączenie z powłoką GNOME się nie powiodło\n" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:159 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "Rozszerzenie „%s” nie istnieje\n" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "Wyświetla informacje o rozszerzeniach" #: subprojects/extensions-tool/src/command-install.c:190 msgid "Overwrite an existing extension" msgstr "Zastępuje istniejące rozszerzenie" #: subprojects/extensions-tool/src/command-install.c:192 msgid "EXTENSION_BUNDLE" msgstr "PAKIET_ROZSZERZENIA" #: subprojects/extensions-tool/src/command-install.c:201 msgid "Install an extension bundle" msgstr "Instaluje pakiet rozszerzenia" #: subprojects/extensions-tool/src/command-install.c:219 msgid "No extension bundle specified" msgstr "Nie podano pakietu rozszerzenia" #: subprojects/extensions-tool/src/command-install.c:225 msgid "More than one extension bundle specified" msgstr "Podano więcej niż jeden pakiet rozszerzenia" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show user-installed extensions" msgstr "Wyświetla rozszerzenia zainstalowane przez użytkownika" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show system-installed extensions" msgstr "Wyświetla rozszerzenia zainstalowane w systemie" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Show enabled extensions" msgstr "Wyświetla włączone rozszerzenia" #: subprojects/extensions-tool/src/command-list.c:149 msgid "Show disabled extensions" msgstr "Wyświetla wyłączone rozszerzenia" #: subprojects/extensions-tool/src/command-list.c:152 msgid "Show extensions in active state" msgstr "Wyświetla aktywne rozszerzenia" #: subprojects/extensions-tool/src/command-list.c:155 msgid "Show extensions in inactive state" msgstr "Wyświetla nieaktywne rozszerzenia" #: subprojects/extensions-tool/src/command-list.c:158 msgid "Show extensions with preferences" msgstr "Wyświetla rozszerzenia z preferencjami" #: subprojects/extensions-tool/src/command-list.c:161 msgid "Show extensions with updates" msgstr "Wyświetla rozszerzenia z aktualizacjami" #: subprojects/extensions-tool/src/command-list.c:164 msgid "Print extension details" msgstr "Wyświetla informacje o rozszerzeniu" #: subprojects/extensions-tool/src/command-list.c:172 msgid "List installed extensions" msgstr "Wyświetla listę zainstalowanych rozszerzeń" #: subprojects/extensions-tool/src/command-pack.c:444 msgid "FILE" msgstr "PLIK" #: subprojects/extensions-tool/src/command-pack.c:445 msgid "Additional source to include in the bundle" msgstr "Dodatkowe źródło do dołączenia do pakietu" #: subprojects/extensions-tool/src/command-pack.c:449 msgid "A GSettings schema that should be included" msgstr "Schemat GSettings, który ma zostać dołączony" #: subprojects/extensions-tool/src/command-pack.c:451 #: subprojects/extensions-tool/src/command-pack.c:462 msgid "DIRECTORY" msgstr "KATALOG" #: subprojects/extensions-tool/src/command-pack.c:453 msgid "The directory where translations are found" msgstr "Katalog z tłumaczeniami" #: subprojects/extensions-tool/src/command-pack.c:457 msgid "The gettext domain to use for translations" msgstr "Domena gettext używana dla tłumaczeń" #: subprojects/extensions-tool/src/command-pack.c:460 msgid "Overwrite an existing pack" msgstr "Zastępuje istniejący pakiet" #: subprojects/extensions-tool/src/command-pack.c:464 msgid "The directory where the pack should be created" msgstr "Katalog, w którym utworzyć pakiet" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "SOURCE_DIRECTORY" msgstr "KATALOG_ŹRÓDŁOWY" #: subprojects/extensions-tool/src/command-pack.c:475 msgid "Create an extension bundle" msgstr "Tworzy pakiet rozszerzenia" #: subprojects/extensions-tool/src/command-pack.c:495 msgid "More than one source directory specified" msgstr "Podano więcej niż jeden katalog źródłowy" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "Rozszerzenie „%s” nie ma preferencji\n" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "Otwarcie preferencji rozszerzenia „%s” się nie powiodło: %s\n" #: subprojects/extensions-tool/src/command-prefs.c:87 msgid "Opens extension preferences" msgstr "Otwiera preferencje rozszerzenia" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "Przywraca rozszerzenie" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "Nie można odinstalować rozszerzeń systemowych\n" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "Odinstalowanie „%s” się nie powiodło\n" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "Odinstalowuje rozszerzenie" #: subprojects/extensions-tool/src/main.c:76 msgid "Do not print error messages" msgstr "Bez wyświetlania komunikatów o błędach" #: subprojects/extensions-tool/src/main.c:249 msgid "Path" msgstr "Ścieżka" #: subprojects/extensions-tool/src/main.c:252 msgid "URL" msgstr "Adres URL" #: subprojects/extensions-tool/src/main.c:255 msgid "Original author" msgstr "Oryginalny autor" #: subprojects/extensions-tool/src/main.c:261 #: subprojects/extensions-tool/src/main.c:263 #: subprojects/extensions-tool/src/main.c:265 msgid "Version" msgstr "Wersja" #: subprojects/extensions-tool/src/main.c:268 msgid "Enabled" msgstr "Włączone" #: subprojects/extensions-tool/src/main.c:268 msgid "Yes" msgstr "Tak" #: subprojects/extensions-tool/src/main.c:268 msgid "No" msgstr "Nie" #: subprojects/extensions-tool/src/main.c:271 msgid "State" msgstr "Stan" #: subprojects/extensions-tool/src/main.c:309 msgid "“version” takes no arguments" msgstr "Opcja „version” nie przyjmuje parametrów" #: subprojects/extensions-tool/src/main.c:311 #: subprojects/extensions-tool/src/main.c:331 msgid "Usage:" msgstr "Użycie:" #: subprojects/extensions-tool/src/main.c:314 msgid "Print version information and exit." msgstr "Wyświetla informacje o wersji i kończy działanie." #: subprojects/extensions-tool/src/main.c:329 #: subprojects/extensions-tool/src/main.c:332 msgid "COMMAND" msgstr "POLECENIE" #: subprojects/extensions-tool/src/main.c:332 msgid "[ARGS…]" msgstr "[PARAMETRY…]" #: subprojects/extensions-tool/src/main.c:334 msgid "Commands:" msgstr "Polecenia:" #: subprojects/extensions-tool/src/main.c:335 msgid "Print help" msgstr "Wyświetla pomoc" #: subprojects/extensions-tool/src/main.c:337 msgid "Enable extension" msgstr "Włącza rozszerzenie" #: subprojects/extensions-tool/src/main.c:338 msgid "Disable extension" msgstr "Wyłącza rozszerzenie" #: subprojects/extensions-tool/src/main.c:339 msgid "Reset extension" msgstr "Przywraca rozszerzenie" #: subprojects/extensions-tool/src/main.c:340 msgid "Uninstall extension" msgstr "Odinstalowuje rozszerzenie" #: subprojects/extensions-tool/src/main.c:341 msgid "List extensions" msgstr "Wyświetla listę rozszerzeń" #: subprojects/extensions-tool/src/main.c:342 #: subprojects/extensions-tool/src/main.c:343 msgid "Show extension info" msgstr "Wyświetla informacje o rozszerzeniu" #: subprojects/extensions-tool/src/main.c:344 msgid "Open extension preferences" msgstr "Otwiera preferencje rozszerzenia" #: subprojects/extensions-tool/src/main.c:345 msgid "Create extension" msgstr "Tworzy rozszerzenie" #: subprojects/extensions-tool/src/main.c:346 msgid "Package extension" msgstr "Tworzy pakiet z rozszerzeniem" #: subprojects/extensions-tool/src/main.c:347 msgid "Install extension bundle" msgstr "Instaluje pakiet rozszerzenia" #: subprojects/extensions-tool/src/main.c:349 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "Polecenie „%s” wyświetli szczegółową pomoc.\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "Zwykłe" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "Puste rozszerzenie" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "Wskaźnik" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "Dodaje ikonę do górnego paska" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:4 msgid "Quick Settings Item" msgstr "Element menu szybkich ustawień" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:5 msgid "Add an item to quick settings" msgstr "Dodaje element do menu szybkich ustawień" #. translators: #. * The device has been disabled #: subprojects/gvc/gvc-mixer-control.c:1872 msgid "Disabled" msgstr "Wyłączone" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1879 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u wyjście" msgstr[1] "%u wyjścia" msgstr[2] "%u wyjść" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1889 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u wejście" msgstr[1] "%u wejścia" msgstr[2] "%u wejść" #: subprojects/gvc/gvc-mixer-control.c:2872 msgid "System Sounds" msgstr "Dźwięki systemowe" 0707010000025A000081A40000000000000000000000016712993F0001ED82000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/pt.po# Portuguese translation for gnome-shell. # Copyright © 2010-2024 gnome-shell. # This file is distributed under the same license as the gnome-shell package. # Duarte Loreto , 2010, 2011, 2012, 2013, 2014. # Rui Gouveia , 2011. # António Lima , 2013. # Tiago Santos , 2014, 2015, 2016. # Bruno Ramalhete , 2015. # Pedro Albuquerque , 2014, 2015. # Sérgio Cardeira , 2016. # Juliano de Souza Camargo , 2020. # José Vieira , 2020, 2021. # Hugo Carvalho , 2020, 2021, 2022, 2023, 2024. # João Carvalhinho , 2024. # msgid "" msgstr "" "Project-Id-Version: 3.14\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues/\n" "POT-Creation-Date: 2024-08-21 13:15+0000\n" "PO-Revision-Date: 2024-08-30 10:13+0100\n" "Last-Translator: Hugo Carvalho \n" "Language-Team: Português \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: Poedit 3.4.4\n" "X-Project-Style: gnome\n" "X-Language: pt_PT\n" "X-Source-Language: C\n" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "Lançadores" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate pinned app 1" msgstr "Ativar a aplicação favorita 1" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate pinned app 2" msgstr "Ativar a aplicação favorita 2" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate pinned app 3" msgstr "Ativar a aplicação favorita 3" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate pinned app 4" msgstr "Ativar a aplicação favorita 4" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate pinned app 5" msgstr "Ativar a aplicação favorita 5" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate pinned app 6" msgstr "Ativar a aplicação favorita 6" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate pinned app 7" msgstr "Ativar a aplicação favorita 7" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate pinned app 8" msgstr "Ativar a aplicação favorita 8" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate pinned app 9" msgstr "Ativar a aplicação favorita 9" #: data/50-gnome-shell-launchers.xml:46 msgid "Open new window of pinned app 1" msgstr "Abrir nova janela da aplicação preferida 1" #: data/50-gnome-shell-launchers.xml:50 msgid "Open new window of pinned app 2" msgstr "Abrir nova janela da aplicação preferida 2" #: data/50-gnome-shell-launchers.xml:54 msgid "Open new window of pinned app 3" msgstr "Abrir nova janela da aplicação preferida 3" #: data/50-gnome-shell-launchers.xml:58 msgid "Open new window of pinned app 4" msgstr "Abrir nova janela da aplicação preferida 4" #: data/50-gnome-shell-launchers.xml:62 msgid "Open new window of pinned app 5" msgstr "Abrir nova janela da aplicação preferida 5" #: data/50-gnome-shell-launchers.xml:66 msgid "Open new window of pinned app 6" msgstr "Abrir nova janela da aplicação preferida 6" #: data/50-gnome-shell-launchers.xml:70 msgid "Open new window of pinned app 7" msgstr "Abrir nova janela da aplicação preferida 7" #: data/50-gnome-shell-launchers.xml:74 msgid "Open new window of pinned app 8" msgstr "Abrir nova janela da aplicação preferida 8" #: data/50-gnome-shell-launchers.xml:78 msgid "Open new window of pinned app 9" msgstr "Abrir nova janela da aplicação preferida 9" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2274 msgid "Screenshots" msgstr "Capturas de ecrã" #: data/50-gnome-shell-screenshots.xml:9 #: data/org.gnome.shell.gschema.xml.in:287 msgid "Take a screenshot interactively" msgstr "Tirar uma captura de ecrã de forma interativa" #: data/50-gnome-shell-screenshots.xml:12 #: data/org.gnome.shell.gschema.xml.in:299 msgid "Take a screenshot" msgstr "Tirar uma captura de ecrã" #: data/50-gnome-shell-screenshots.xml:15 #: data/org.gnome.shell.gschema.xml.in:295 msgid "Take a screenshot of a window" msgstr "Tirar uma captura de ecrã de uma janela" #: data/50-gnome-shell-screenshots.xml:18 #: data/org.gnome.shell.gschema.xml.in:291 msgid "Record a screencast interactively" msgstr "Gravar o ecrã de forma interativa" #: data/50-gnome-shell-system.xml:6 js/ui/messageTray.js:1298 msgid "System" msgstr "Sistema" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "Mostrar a lista de notificação" #: data/50-gnome-shell-system.xml:12 msgid "Open the quick settings menu" msgstr "Abrir o menu de definições rápidas" #: data/50-gnome-shell-system.xml:15 msgid "Focus the active notification" msgstr "Foco na notificação ativa" #: data/50-gnome-shell-system.xml:18 msgid "Show the overview" msgstr "Mostrar a vista geral" #: data/50-gnome-shell-system.xml:21 msgid "Show all apps" msgstr "Mostrar todas as aplicações" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "Interface GNOME" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "Gestão de janelas e iniciação de aplicações" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" "Usar Alt-F2 para ativar ferramentas internas úteis para programadores e " "testadores" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Permite o acesso a ferramentas internas de depuração e monitorização usando " "o diálogo aberto com Alt-F2." #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "UUIDs das extensões a ativar" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "As extensões da interface GNOME têm uma propriedade UUID; esta chave lista " "extensões que deverão ser carregadas. Qualquer extensão que deseje ser " "carregada tem de estar nesta lista. Pode também manipular esta lista com os " "métodos D-Bus EnableExtension e DisableExtension de org.gnome.Shell." #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "UUIDs das extensões a forçar desativação" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" "As extensões da interface GNOME têm uma propriedade UUID; esta chave lista " "as extensões que deverão ser desativadas, mesmo que carregadas como parte do " "modo atual. Pode também manipular esta lista com os métodos D-Bus " "EnableExtension e DisableExtension em org.gnome.Shell. Esta chave tem " "precedência sobre a definição \"extensões-ativadas\"." #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "Desativar extensões de utilizador" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" "Desativar todas as extensões que o utilizador ativou, sem afetar a definição " "\"extensões-ativadas\"." #: data/org.gnome.shell.gschema.xml.in:45 msgid "Allow extension installation" msgstr "Permite a instalação de extensões" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "Allow users to install extensions in their home folder. If disabled, the " "InstallRemoteExtension D-Bus method will fail, and extensions are only " "loaded from system directories on startup. It does not affect extensions " "that are already loaded, so a change only takes full effect on the next " "login." msgstr "" "Permitir aos utilizadores a instalação de extensões na sua pasta peaaoal. Se " "desativado o método D-Bus InstallRemoteExtension vai falhar, e as extensões " "são apenas carregadas a partir de diretórios de sistema no arranque. Não " "afecta extensões que já estão carregadas, por isso esta alteração apenas " "será aplicada após a próxima entrada." #: data/org.gnome.shell.gschema.xml.in:56 msgid "Disables the validation of extension version compatibility" msgstr "Desativa a validação de compatibilidade de versão da extensão" #: data/org.gnome.shell.gschema.xml.in:57 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "A interface GNOME só vai carregar extensões que indiquem suportar a versão " "atual. Ativar esta opção irá desativar esta verificação e tentará carregar " "todas as extensões, independentemente das versões que elas indiquem suportar." #: data/org.gnome.shell.gschema.xml.in:65 msgid "List of desktop file IDs for favorite applications" msgstr "" "Lista de IDs de ficheiros .desktop (de ambiente de trabalho) das aplicações " "favoritas" #: data/org.gnome.shell.gschema.xml.in:66 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" "As aplicações correspondentes a estes identificadores serão mostradas na " "área de favoritas." #: data/org.gnome.shell.gschema.xml.in:73 msgid "History for command (Alt-F2) dialog" msgstr "Histórico do diálogo de comando (aberto com Alt-F2)" #. Translators: looking glass is a debugger and inspector tool, see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/docs/looking-glass.md #: data/org.gnome.shell.gschema.xml.in:78 msgid "History for the looking glass dialog" msgstr "Histórico do diálogo de pesquisa" #: data/org.gnome.shell.gschema.xml.in:82 msgid "Always show the “Log Out” action in the system menu" msgstr "Mostrar sempre 'Sair' no menu de utilizador" #: data/org.gnome.shell.gschema.xml.in:83 msgid "" "This key overrides the automatic hiding of the “Log out” action in the " "system menu for logged-in situations where there is a single, local, non-" "system user and only a single available session type (e.g. GNOME on Wayland)." msgstr "" "Esta chave ignora a ocultação automática do 'Sair' quando o utilizador está " "ligado, em situações onde existe apenas um utilizador único, local, sem ser " "de sistema, e um único tipo de sessão disponível (e.g. GNOME em Wayland)" #: data/org.gnome.shell.gschema.xml.in:92 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "Recordar ou não a palavra-passe para montar sistemas de ficheiros " "encriptados ou remotos" #: data/org.gnome.shell.gschema.xml.in:93 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "A interface pede uma palavra-passe quando um dispositivo encriptado ou " "sistema de ficheiros remoto é montado. Se a palavra-passe puder ser guardada " "para utilização futura, estará disponível uma caixa de seleção 'Recordar " "palavra-passe'. Esta chave define o estado predefinido dessa caixa de " "seleção." #: data/org.gnome.shell.gschema.xml.in:102 msgid "The last selected non-default power profile" msgstr "O último perfil de energia não-padrão selecionado" #: data/org.gnome.shell.gschema.xml.in:103 msgid "" "Some systems support more than two power profiles. In order to still support " "toggling between two profiles, this key records the last selected non-" "default profile." msgstr "" "Alguns sistemas suportam mais de dois perfis de energia. A fim de continuar " "a suportar a alternância entre dois perfis, esta chave regista o último " "perfil não-padrão selecionado." #: data/org.gnome.shell.gschema.xml.in:111 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "A última versão da janela \"Bem-vindo ao GNOME\" foi mostrada para" #: data/org.gnome.shell.gschema.xml.in:112 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can " "be used to effectively disable the dialog." msgstr "" "Esta chave determina para qual versão a janela \"Bem-vindo ao GNOME\" foi " "mostrada pela última vez. Uma linha vazia representa a versão mais antiga " "possível, e um número enorme representará versões que ainda não existem. " "Este número enorme pode ser usado para efetivamente desativar a janela." #: data/org.gnome.shell.gschema.xml.in:145 msgid "Layout of the app picker" msgstr "Esquema do seletor de aplicações" #: data/org.gnome.shell.gschema.xml.in:146 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" msgstr "" "Esquema do seletor de aplicações. Cada entrada na matriz é uma página. As " "páginas são armazenadas na ordem em que aparecem na Interface GNOME. Cada " "página contém um par “id da aplicação” → “dados”. Atualmente, os seguintes " "valores são armazenados como “dados”: • “posição”: a posição do ícone da " "aplicação na página" #: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:172 msgid "Keybinding to shift between overview states" msgstr "Tecla de atalho para mudar de estado de vista geral" #: data/org.gnome.shell.gschema.xml.in:166 msgid "Keybinding to shift between session, window picker and app grid" msgstr "" "Tecla de atalho para mudar de sessão, seletor de janela e grelha de aplicação" #: data/org.gnome.shell.gschema.xml.in:173 msgid "Keybinding to shift between app grid, window picker and session" msgstr "" "Tecla de atalho para mudar a grelha de aplicação, seletor de janela e sessão" #: data/org.gnome.shell.gschema.xml.in:179 msgid "Keybinding to open the “Show Applications” view" msgstr "Tecla de atalho para abrir a vista \"Mostrar aplicações\"" #: data/org.gnome.shell.gschema.xml.in:180 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "" "Tecla de atalho para abrir a vista \"Mostrar aplicações\" da Vista geral de " "atividades." #: data/org.gnome.shell.gschema.xml.in:187 msgid "Keybinding to open the overview" msgstr "Tecla de atalho para abrir a vista geral" #: data/org.gnome.shell.gschema.xml.in:188 msgid "Keybinding to open the Activities Overview." msgstr "Tecla de atalho para abrir a Vista geral de atividades." #: data/org.gnome.shell.gschema.xml.in:194 msgid "Keybinding to toggle the visibility of the notification list" msgstr "Tecla de atalho para alternar a visibilidade da lista de notificação" #: data/org.gnome.shell.gschema.xml.in:195 msgid "Keybinding to toggle the visibility of the notification list." msgstr "Tecla de atalho para alternar a visibilidade da lista de notificação." #: data/org.gnome.shell.gschema.xml.in:201 msgid "Keybinding to toggle the quick settings menu" msgstr "Tecla de atalho para alternar o menu de definições rápidas" #: data/org.gnome.shell.gschema.xml.in:202 msgid "Keybinding to toggle the quick settings menu." msgstr "Tecla de atalho para alternar o menu de definições rápidas." #: data/org.gnome.shell.gschema.xml.in:208 msgid "Keybinding to focus the active notification" msgstr "Tecla de atalho para focar a notificação ativa" #: data/org.gnome.shell.gschema.xml.in:209 msgid "Keybinding to focus the active notification." msgstr "Tecla de atalho para focar a notificação ativa." #: data/org.gnome.shell.gschema.xml.in:215 msgid "Switch to application 1" msgstr "Mudar para a aplicação 1" #: data/org.gnome.shell.gschema.xml.in:219 msgid "Switch to application 2" msgstr "Mudar para a aplicação 2" #: data/org.gnome.shell.gschema.xml.in:223 msgid "Switch to application 3" msgstr "Mudar para a aplicação 3" #: data/org.gnome.shell.gschema.xml.in:227 msgid "Switch to application 4" msgstr "Mudar para a aplicação 4" #: data/org.gnome.shell.gschema.xml.in:231 msgid "Switch to application 5" msgstr "Mudar para a aplicação 5" #: data/org.gnome.shell.gschema.xml.in:235 msgid "Switch to application 6" msgstr "Mudar para a aplicação 6" #: data/org.gnome.shell.gschema.xml.in:239 msgid "Switch to application 7" msgstr "Mudar para a aplicação 7" #: data/org.gnome.shell.gschema.xml.in:243 msgid "Switch to application 8" msgstr "Mudar para a aplicação 8" #: data/org.gnome.shell.gschema.xml.in:247 msgid "Switch to application 9" msgstr "Mudar para a aplicação 9" #: data/org.gnome.shell.gschema.xml.in:251 msgid "Open a new instance of application 1" msgstr "Abrir uma nova instancia da aplicação favorita 1" #: data/org.gnome.shell.gschema.xml.in:255 msgid "Open a new instance of application 2" msgstr "Abrir uma nova instancia da aplicação favorita 2" #: data/org.gnome.shell.gschema.xml.in:259 msgid "Open a new instance of application 3" msgstr "Abrir uma nova instancia da aplicação favorita 3" #: data/org.gnome.shell.gschema.xml.in:263 msgid "Open a new instance of application 4" msgstr "Abrir uma nova instancia da aplicação favorita 4" #: data/org.gnome.shell.gschema.xml.in:267 msgid "Open a new instance of application 5" msgstr "Abrir uma nova instancia da aplicação favorita 5" #: data/org.gnome.shell.gschema.xml.in:271 msgid "Open a new instance of application 6" msgstr "Abrir uma nova instancia da aplicação favorita 6" #: data/org.gnome.shell.gschema.xml.in:275 msgid "Open a new instance of application 7" msgstr "Abrir uma nova instancia da aplicação favorita 7" #: data/org.gnome.shell.gschema.xml.in:279 msgid "Open a new instance of application 8" msgstr "Abrir uma nova instancia da aplicação favorita 8" #: data/org.gnome.shell.gschema.xml.in:283 msgid "Open a new instance of application 9" msgstr "Abrir uma nova instancia da aplicação favorita 9" #: data/org.gnome.shell.gschema.xml.in:308 #: data/org.gnome.shell.gschema.xml.in:335 msgid "Limit switcher to current workspace." msgstr "Limitar a comutação à área de trabalho atual." #: data/org.gnome.shell.gschema.xml.in:309 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "Se verdadeiro, só as aplicações com janelas na área de trabalho atual são " "mostradas para troca. Senão, são incluídas todas as aplicações com janelas " "abertas." #: data/org.gnome.shell.gschema.xml.in:326 msgid "The application icon mode." msgstr "O modo do ícone da aplicação." #: data/org.gnome.shell.gschema.xml.in:327 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-" "only” (shows only the application icon) or “both”." msgstr "" "Configura a exibição das janelas. As opções válidas são \"apenas-" "miniatura\" (mostra uma miniatura da janela), \"apenas-ícone-" "aplicação\" (mostra só o ícone da aplicação) ou \"ambas\"." #: data/org.gnome.shell.gschema.xml.in:336 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "Se verdadeiro, só janelas da área de trabalho atual são apresentadas para " "troca. Senão, são incluídas todas as aplicações com janelas abertas." #: data/org.gnome.shell.gschema.xml.in:346 msgid "Locations" msgstr "Localizações" #: data/org.gnome.shell.gschema.xml.in:347 msgid "The locations to show in world clocks" msgstr "As localizações a mostrar nos relógios mundiais" #: data/org.gnome.shell.gschema.xml.in:357 msgid "Automatic location" msgstr "Localização automática" #: data/org.gnome.shell.gschema.xml.in:358 msgid "Whether to fetch the current location or not" msgstr "Se deve ser obtida a localização atual ou não" #: data/org.gnome.shell.gschema.xml.in:365 msgid "Location" msgstr "Localização" #: data/org.gnome.shell.gschema.xml.in:366 msgid "The location for which to show a forecast" msgstr "A localização para a qual deve ser mostrada uma previsão" #. Keep in sync with subprojects/extensions-app #: data/org.gnome.Shell.Extensions.desktop.in.in:5 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/data/ui/extensions-window.ui:57 msgid "Extensions" msgstr "Extensões" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "Acesso pela rede" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:275 msgid "Something’s gone wrong" msgstr "Alguma coisa correu mal" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" "Houve um problema: não é possível mostrar as configurações desta extensão. " "Recomendamos que relate o problema aos autores da extensão." #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "Informação técnica" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "Página inicial" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 msgid "Visit extension homepage" msgstr "Visitar a página inicial da extensão" #: js/gdm/authPrompt.js:151 js/gdm/loginDialog.js:466 #: js/ui/audioDeviceSelection.js:66 js/ui/components/networkAgent.js:113 #: js/ui/components/polkitAgent.js:144 js/ui/endSessionDialog.js:437 #: js/ui/extensionDownloader.js:276 js/ui/shellMountOperation.js:382 #: js/ui/shellMountOperation.js:392 msgid "Cancel" msgstr "Cancelar" #: js/gdm/authPrompt.js:317 js/ui/components/networkAgent.js:213 #: js/ui/components/networkAgent.js:233 js/ui/components/networkAgent.js:265 #: js/ui/components/networkAgent.js:298 js/ui/components/networkAgent.js:337 #: js/ui/components/networkAgent.js:350 js/ui/components/polkitAgent.js:286 #: js/ui/shellMountOperation.js:332 msgid "Password" msgstr "Palavra-passe" #: js/gdm/loginDialog.js:326 msgid "Choose Session" msgstr "Escolher sessão" #. Translators: is running for #: js/gdm/loginDialog.js:424 #, javascript-format msgid "" "Remote login is not possible because a remote session is already running for " "%s. To login remotely, you must log out from the remote session or force " "stop it." msgstr "" "O acesso remoto não é possível pois já existe uma sessão concorrente para " "%s. Para aceder remotamente, tem que fechar a sessão em curso." #. Translators: is running for #: js/gdm/loginDialog.js:427 #, javascript-format msgid "" "Login is not possible because a remote session is already running for %s. To " "login, you must log out from the remote session or force stop it." msgstr "" "A entrada não é possível porque já existe uma sessão remota em curso para " "%s. Para entrar, tem que desligar a sessão remota ou forçar a sua paragem." #. Translators: is running for #: js/gdm/loginDialog.js:430 #, javascript-format msgid "" "Remote login is not possible because a local session is already running for " "%s. To login remotely, you must log out from the local session or force stop " "it." msgstr "" "A sessão remota não é possível porque uma sessão local já existe para %s. " "Para ligar-se remotamente, tem que encerrar esta sessão local, ou forçar a " "sua paragem." #. Translators: is running for #: js/gdm/loginDialog.js:433 #, javascript-format msgid "" "Login is not possible because a session is already running for %s. To login, " "you must log out from the session or force stop it." msgstr "" "Não é possível entrar nesta conta porque já existe uma sessão a correr para " "%s. Para conseguir entrar, tem que sair da sessão ou forçar a sua paragem." #: js/gdm/loginDialog.js:442 msgid "Session Already Running" msgstr "Já existe uma sessão em curso" #: js/gdm/loginDialog.js:454 msgid "" "Force stopping will quit any running apps and processes, and could result in " "data loss" msgstr "" "Forçar a saída vai obrigar a abandonar e encerrar qualquer aplicação ou " "processo em funcionamento, podendo originar perda de trabalho" #: js/gdm/loginDialog.js:474 msgid "Force Stop" msgstr "Forçar o encerramento" #: js/gdm/loginDialog.js:542 msgid "Not listed?" msgstr "Não está listado?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:1010 #, javascript-format msgid "(e.g., user or %s)" msgstr "(por ex., utilizador ou %s)" #: js/gdm/loginDialog.js:1015 js/ui/components/networkAgent.js:257 #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:326 msgid "Username" msgstr "Utilizador" #: js/gdm/loginDialog.js:1081 msgid "Login Attempt Timed Out" msgstr "Esgotou o tempo para a tentativa de acesso" #: js/gdm/loginDialog.js:1082 msgid "Login took too long, please try again" msgstr "" "A tentativa de acesso demorou demasiado tempo, por favor tente novamente" #: js/gdm/loginDialog.js:1431 msgid "Login Window" msgstr "Janela de acesso" #: js/gdm/util.js:496 msgid "Authentication error" msgstr "Erro de autenticação" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:727 msgid "(or swipe finger across reader)" msgstr "(ou passe o dedo pelo leitor)" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:732 msgid "(or place finger on reader)" msgstr "(ou coloque o dedo no leitor)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:91 msgctxt "search-result" msgid "Power Off" msgstr "Desligar" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:94 msgid "power off;poweroff;shutdown;halt;stop" msgstr "desligar;encerrar;parar" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:99 msgctxt "search-result" msgid "Restart" msgstr "Reiniciar" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:102 msgid "reboot;restart;" msgstr "reiniciar;" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:107 msgctxt "search-result" msgid "Lock Screen" msgstr "Bloquear ecrã" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:110 msgid "lock screen" msgstr "bloquear ecrã" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:115 msgctxt "search-result" msgid "Log Out" msgstr "Sair" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:118 msgid "logout;log out;sign off" msgstr "terminar sessão;sair" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:123 msgctxt "search-result" msgid "Suspend" msgstr "Suspender" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:126 msgid "suspend;sleep" msgstr "suspender" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:131 msgctxt "search-result" msgid "Switch User" msgstr "Mudar de utilizador" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:134 msgid "switch user" msgstr "mudar de utilizador" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:141 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "bloquear orientação;desbloquear orientação;ecrã;rotação" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:146 msgctxt "search-result" msgid "Take a Screenshot" msgstr "Capturar ecrã" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:149 msgid "screenshot;screencast;snip;capture;record" msgstr "screenshot;screencast;capturar;gravar;ecrã;cortar" #: js/misc/systemActions.js:249 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "Desbloquear rotação de ecrã" #: js/misc/systemActions.js:250 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "Bloquear rotação de ecrã" #: js/misc/util.js:130 msgid "Command not found" msgstr "Comando não encontrado" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:170 msgid "Could not parse command:" msgstr "Impossível analisar o comando:" #: js/misc/util.js:178 #, javascript-format msgid "Execution of “%s” failed:" msgstr "Falha ao executar “%s”:" #: js/misc/dateUtils.js:69 msgid "Just now" msgstr "Agora mesmo" #: js/misc/dateUtils.js:72 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "há %d minuto atrás" msgstr[1] "há %d minutos atrás" #: js/misc/dateUtils.js:79 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "há %d hora atrás" msgstr[1] "há %d horas atrás" #: js/misc/dateUtils.js:85 js/ui/dateMenu.js:183 msgid "Yesterday" msgstr "Ontem" #: js/misc/dateUtils.js:88 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "há %d dia atrás" msgstr[1] "há %d dias atrás" #: js/misc/dateUtils.js:95 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "há %d semana atrás" msgstr[1] "há %d semanas atrás" #: js/misc/dateUtils.js:102 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "há %d mês atrás" msgstr[1] "há %d meses atrás" #: js/misc/dateUtils.js:108 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "há %d ano atrás" msgstr[1] "há %d anos atrás" #. Translators: Time in 24h format #: js/misc/dateUtils.js:155 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/dateUtils.js:161 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "Ontem às %H∶%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/dateUtils.js:167 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/dateUtils.js:173 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%d de %B, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/dateUtils.js:179 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%d de %B de %Y, %H∶%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/dateUtils.js:184 msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/dateUtils.js:190 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "Ontem às %l∶%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/dateUtils.js:196 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/dateUtils.js:202 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%d de %B, %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/dateUtils.js:208 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%d de %B de %Y, %l∶%M %p" #: js/portalHelper/main.js:98 msgid "Your connection seems to be secure" msgstr "A sua ligação parece ser segura" #: js/portalHelper/main.js:104 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "A ligação a este ponto de acesso não é segura. As palavras-passe e outras " "informações que inserir nesta página podem ser vistas por pessoas próximas." #: js/portalHelper/main.js:115 msgid "Hotspot Login" msgstr "Acesso por ponto wi-fi público" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:51 js/ui/inhibitShortcutsDialog.js:92 msgid "Deny" msgstr "Negar" #: js/ui/accessDialog.js:52 js/ui/inhibitShortcutsDialog.js:101 msgid "Allow" msgstr "Permitir" #: js/ui/appDisplay.js:1769 msgid "Unnamed Folder" msgstr "Pasta sem nome" #: js/ui/appFavorites.js:163 #, javascript-format msgid "%s has been pinned to the dash." msgstr "%s foi afixado ao Painel." #: js/ui/appFavorites.js:194 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "%s foi desafixado do Painel." #: js/ui/appFavorites.js:208 js/ui/main.js:281 msgid "Undo" msgstr "Desfazer" #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:49 msgid "Open Windows" msgstr "Janelas abertas" #: js/ui/appMenu.js:57 msgid "New Window" msgstr "Nova janela" #: js/ui/appMenu.js:84 msgid "App Details" msgstr "Detalhes da aplicação" #: js/ui/appMenu.js:100 msgid "Quit" msgstr "Sair" #: js/ui/appMenu.js:160 js/ui/dash.js:248 msgid "Unpin" msgstr "Desafixar" #: js/ui/appMenu.js:161 msgid "Pin to Dash" msgstr "Afixar ao Painel" #: js/ui/appMenu.js:178 msgid "Launch using Integrated Graphics Card" msgstr "Iniciar usando a placa de vídeo integrada" #: js/ui/appMenu.js:179 msgid "Launch using Discrete Graphics Card" msgstr "Iniciar usando a placa de vídeo dedicada" #: js/ui/audioDeviceSelection.js:46 msgid "Select Audio Device" msgstr "Selecione o dispositivo de áudio" #: js/ui/audioDeviceSelection.js:61 js/ui/status/volume.js:81 msgid "Sound Settings" msgstr "Definições de som" #: js/ui/audioDeviceSelection.js:74 msgid "Headphones" msgstr "Auscultadores" #: js/ui/audioDeviceSelection.js:76 msgid "Headset" msgstr "Auscultadores com microfone" #: js/ui/audioDeviceSelection.js:78 js/ui/status/volume.js:356 msgid "Microphone" msgstr "Microfone" #: js/ui/backgroundMenu.js:13 msgid "Change Background…" msgstr "Alterar o fundo…" #: js/ui/backgroundMenu.js:15 msgid "Display Settings" msgstr "Definições de ecrã" #: js/ui/backgroundMenu.js:16 msgid "Settings" msgstr "Definições" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:37 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:63 msgctxt "grid sunday" msgid "S" msgstr "D" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:65 msgctxt "grid monday" msgid "M" msgstr "S" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:67 msgctxt "grid tuesday" msgid "T" msgstr "T" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:69 msgctxt "grid wednesday" msgid "W" msgstr "Q" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:71 msgctxt "grid thursday" msgid "T" msgstr "Q" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:73 msgctxt "grid friday" msgid "F" msgstr "S" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:75 msgctxt "grid saturday" msgid "S" msgstr "S" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:426 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:436 msgid "%OB %Y" msgstr "%OB de %Y" #: js/ui/calendar.js:498 msgid "Previous month" msgstr "Mês anterior" #: js/ui/calendar.js:516 msgid "Next month" msgstr "Mês seguinte" #: js/ui/calendar.js:667 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:726 msgid "Week %V" msgstr "Semana %V" #: js/ui/calendar.js:918 msgid "No Notifications" msgstr "Sem notificações" #: js/ui/calendar.js:974 msgid "Do Not Disturb" msgstr "Não incomodar" #: js/ui/calendar.js:995 msgid "Clear" msgstr "Limpar" #: js/ui/calendar.js:999 msgctxt "action" msgid "Clear all notifications" msgstr "Limpar todas as notificações" #. Translators: %s is an application name #: js/ui/closeDialog.js:42 #, javascript-format msgid "“%s” Is Not Responding" msgstr "“%s” não está a responder" #: js/ui/closeDialog.js:43 msgid "" "You may choose to wait a short while for it to continue or force the app to " "quit entirely" msgstr "" "Pode escolher entre esperar que a aplicação retome a execução ou forçar a " "aplicação a fechar totalmente" #: js/ui/closeDialog.js:71 msgid "Force Quit" msgstr "Forçar o fechar" #: js/ui/closeDialog.js:76 msgid "Wait" msgstr "Esperar" #: js/ui/components/automountManager.js:82 msgid "External drive connected" msgstr "Dispositivo externo ligado" #: js/ui/components/automountManager.js:94 msgid "External drive disconnected" msgstr "Dispositivo externo desligado" #: js/ui/components/automountManager.js:208 msgid "Unable to unlock volume" msgstr "Impossível desbloquear o volume" #: js/ui/components/automountManager.js:209 msgid "The installed udisks version does not support the PIM setting" msgstr "A versão do udisks instalada não suporta a configuração do PIM" #. Translators: %s is the name of a partition on a external drive #: js/ui/components/autorunManager.js:189 #, javascript-format msgid "“%s” connected" msgstr "“%s” ligado" #: js/ui/components/autorunManager.js:190 msgid "Disk can now be used" msgstr "O disco pode agora ser utilizado" #: js/ui/components/autorunManager.js:202 #, javascript-format msgid "Open with %s" msgstr "Abrir com %s" #: js/ui/components/networkAgent.js:95 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router" msgstr "" "Em alternativa, pode ligar premindo o botão “WPS” no encaminhador (router)" #: js/ui/components/networkAgent.js:107 js/ui/status/bluetooth.js:245 #: js/ui/status/network.js:360 js/ui/status/network.js:444 msgid "Connect" msgstr "Ligar" #: js/ui/components/networkAgent.js:222 msgid "Key" msgstr "Chave" #: js/ui/components/networkAgent.js:273 js/ui/components/networkAgent.js:312 msgid "Private key password" msgstr "Palavra-passe da chave privada" #: js/ui/components/networkAgent.js:306 msgid "Identity" msgstr "Identidade" #: js/ui/components/networkAgent.js:332 msgid "Service" msgstr "Serviço" #: js/ui/components/networkAgent.js:370 js/ui/components/networkAgent.js:406 #: js/ui/components/networkAgent.js:743 js/ui/components/networkAgent.js:764 msgid "Authentication required" msgstr "Autenticação necessária" #: js/ui/components/networkAgent.js:371 js/ui/components/networkAgent.js:744 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network “%s”" msgstr "" "São necessárias palavras-passe ou chaves de encriptação para aceder à rede " "sem fios “%s”" #: js/ui/components/networkAgent.js:375 js/ui/components/networkAgent.js:748 msgid "Wired 802.1X authentication" msgstr "Autenticação para 802.1X por cabo" #: js/ui/components/networkAgent.js:378 msgid "Network name" msgstr "Nome da rede" #: js/ui/components/networkAgent.js:386 js/ui/components/networkAgent.js:752 msgid "DSL authentication" msgstr "Autenticação DSL" #: js/ui/components/networkAgent.js:393 js/ui/components/networkAgent.js:757 msgid "PIN code required" msgstr "Necessário código PIN" #: js/ui/components/networkAgent.js:394 js/ui/components/networkAgent.js:758 msgid "PIN code is needed for the mobile broadband device" msgstr "É necessário o código PIN para o dispositivo de banda larga móvel" #: js/ui/components/networkAgent.js:396 msgid "PIN" msgstr "PIN" #: js/ui/components/networkAgent.js:407 js/ui/components/networkAgent.js:749 #: js/ui/components/networkAgent.js:753 js/ui/components/networkAgent.js:765 #: js/ui/components/networkAgent.js:769 #, javascript-format msgid "A password is required to connect to “%s”" msgstr "É necessária uma palavra-passe para se ligar a “%s”" #: js/ui/components/networkAgent.js:768 msgid "VPN password" msgstr "Palavra-passe da VPN" #: js/ui/components/polkitAgent.js:44 msgid "Authentication Required" msgstr "Necessária autenticação" #: js/ui/components/polkitAgent.js:84 msgid "Administrator" msgstr "Administrador" #: js/ui/components/polkitAgent.js:149 msgid "Authenticate" msgstr "Autenticar" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:263 js/ui/shellMountOperation.js:415 msgid "Sorry, that didn’t work. Please try again." msgstr "Não funcionou. Tente novamente." #: js/ui/ctrlAltTab.js:23 js/ui/overviewControls.js:404 msgid "Windows" msgstr "Janelas" #: js/ui/dash.js:204 js/ui/dash.js:250 msgid "Show Apps" msgstr "Mostrar aplicações" #. Translators: this is the name of the dock/favorites area on #. the bottom of the overview #: js/ui/dash.js:408 msgid "Dash" msgstr "Traço" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:99 msgid "%B %-d %Y" msgstr "%-d de %B de %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:106 msgid "%A %B %e %Y" msgstr "%A, %e de %B de %Y" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:172 msgctxt "calendar heading" msgid "%B %-d" msgstr "%-d de %B" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:175 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%-d de %B de %Y" #: js/ui/dateMenu.js:181 msgid "Today" msgstr "Hoje" #: js/ui/dateMenu.js:185 msgid "Tomorrow" msgstr "Amanhã" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:216 msgctxt "event list time" msgid "All Day" msgstr "Dia completo" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:238 msgid "%m/%d" msgstr "%m/%d" #: js/ui/dateMenu.js:289 msgid "No Events" msgstr "Sem eventos" #: js/ui/dateMenu.js:411 msgid "Add World Clocks…" msgstr "Adicionar relógios do mundo…" #: js/ui/dateMenu.js:412 msgid "World Clocks" msgstr "Relógios do mundo" #: js/ui/dateMenu.js:702 msgid "Loading…" msgstr "A carregar…" #: js/ui/dateMenu.js:712 msgid "Go Online for Weather Information" msgstr "Procurar informação meteorológica na rede" #: js/ui/dateMenu.js:714 msgid "Weather Information Unavailable" msgstr "Informação meteorológica indisponível" #: js/ui/dateMenu.js:724 msgid "Weather" msgstr "Meteorologia" #: js/ui/dateMenu.js:726 msgid "Select Weather Location…" msgstr "Selecione uma localização meteorológica…" #: js/ui/endSessionDialog.js:47 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "Sair de %s" #: js/ui/endSessionDialog.js:48 msgctxt "title" msgid "Log Out" msgstr "Sair" #: js/ui/endSessionDialog.js:51 #, javascript-format msgid "%s will be logged out automatically in %d second" msgid_plural "%s will be logged out automatically in %d seconds" msgstr[0] "A sessão de %s terminará automaticamente dentro de %d segundo" msgstr[1] "A sessão de %s terminará automaticamente dentro de %d segundos" #: js/ui/endSessionDialog.js:57 #, javascript-format msgid "You will be logged out automatically in %d second" msgid_plural "You will be logged out automatically in %d seconds" msgstr[0] "A sua sessão terminará automaticamente dentro de %d segundo" msgstr[1] "A sua sessão terminará automaticamente dentro de %d segundos" #: js/ui/endSessionDialog.js:64 msgctxt "button" msgid "Log Out" msgstr "Sair" #: js/ui/endSessionDialog.js:70 js/ui/status/system.js:174 msgctxt "title" msgid "Power Off" msgstr "Desligar" #: js/ui/endSessionDialog.js:71 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Instalar atualizações e desligar" #: js/ui/endSessionDialog.js:74 #, javascript-format msgid "The system will power off automatically in %d second" msgid_plural "The system will power off automatically in %d seconds" msgstr[0] "O sistema desligará automaticamente dentro de %d segundo" msgstr[1] "O sistema desligará automaticamente dentro de %d segundos" #: js/ui/endSessionDialog.js:78 js/ui/endSessionDialog.js:97 msgctxt "checkbox" msgid "Install pending software updates" msgstr "Instalar atualizações de software pendentes" #: js/ui/endSessionDialog.js:82 msgctxt "button" msgid "Power Off" msgstr "Desligar" #: js/ui/endSessionDialog.js:89 msgctxt "title" msgid "Restart" msgstr "Reiniciar" #: js/ui/endSessionDialog.js:90 msgctxt "title" msgid "Install Updates & Restart" msgstr "Instalar atualizações e Reiniciar" #: js/ui/endSessionDialog.js:93 #, javascript-format msgid "The system will restart automatically in %d second" msgid_plural "The system will restart automatically in %d seconds" msgstr[0] "O sistema reiniciará automaticamente dentro de %d segundo" msgstr[1] "O sistema reiniciará automaticamente dentro de %d segundos" #: js/ui/endSessionDialog.js:101 msgctxt "button" msgid "Restart" msgstr "Reiniciar" #: js/ui/endSessionDialog.js:109 msgctxt "title" msgid "Restart & Install Updates" msgstr "Reiniciar e instalar atualizações" #: js/ui/endSessionDialog.js:112 #, javascript-format msgid "The system will automatically restart and install updates in %d second" msgid_plural "" "The system will automatically restart and install updates in %d seconds" msgstr[0] "" "O sistema reiniciará automaticamente e instalará atualizações dentro de %d " "segundo" msgstr[1] "" "O sistema reiniciará automaticamente e instalará atualizações dentro de %d " "segundos" #: js/ui/endSessionDialog.js:119 js/ui/endSessionDialog.js:140 msgctxt "button" msgid "Restart & Install" msgstr "Reiniciar & Instalar" #: js/ui/endSessionDialog.js:121 msgctxt "button" msgid "Install & Power Off" msgstr "Instalar & Desligar" #: js/ui/endSessionDialog.js:122 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Desligar depois das atualizações serem instaladas" #: js/ui/endSessionDialog.js:129 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "Reiniciar e instalar novas versões" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:134 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "%s %s será instalado após reiniciar. Atualizar a instalação pode demorar " "muito tempo: assegure-se de que criou cópias de segurança e de que o " "computador está ligado à corrente." #: js/ui/endSessionDialog.js:283 msgid "Low battery power: please plug in before installing updates" msgstr "Bateria descarregada: ligar à corrente antes de instalar atualizações" #: js/ui/endSessionDialog.js:292 msgid "Some applications are busy or have unsaved work" msgstr "Algumas aplicações estão ocupadas ou têm trabalho não guardado" #: js/ui/endSessionDialog.js:297 msgid "Other users are logged in" msgstr "Há outros utilizadores em sessão" #: js/ui/endSessionDialog.js:467 msgctxt "button" msgid "Boot Options" msgstr "Opções de arranque" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:672 #, javascript-format msgid "%s (remote)" msgstr "%s (remoto)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:675 #, javascript-format msgid "%s (console)" msgstr "%s (consola)" #: js/ui/extensionDownloader.js:280 msgid "Install" msgstr "Instalar" #: js/ui/extensionDownloader.js:286 msgid "Install Extension" msgstr "Instalar extensão" #: js/ui/extensionDownloader.js:287 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "Transferir e instalar \"%s\" a partir de extensions.gnome.org?" #: js/ui/extensionSystem.js:352 msgid "Extension Updates Available" msgstr "Há atualizações de extensões disponíveis" #: js/ui/extensionSystem.js:353 msgid "Extension updates are ready to be installed" msgstr "As atualizações de extensões estão prontas a serem instaladas" #: js/ui/inhibitShortcutsDialog.js:70 msgid "Allow inhibiting shortcuts" msgstr "Permitir inibição de atalhos" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:73 #, javascript-format msgid "The app %s wants to inhibit shortcuts" msgstr "A aplicação %s pretende inibir atalhos" #: js/ui/inhibitShortcutsDialog.js:74 msgid "An app wants to inhibit shortcuts" msgstr "Uma aplicação pretende inibir atalhos" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:81 #, javascript-format msgid "You can restore shortcuts by pressing %s" msgstr "Pode restaurar os atalhos premindo %s" #: js/ui/kbdA11yDialog.js:34 msgid "Slow Keys Turned On" msgstr "Teclas lentas ligadas" #: js/ui/kbdA11yDialog.js:35 msgid "Slow Keys Turned Off" msgstr "Teclas lentas desligadas" #: js/ui/kbdA11yDialog.js:36 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "Manteve a tecla Shift pressionada durante 8 segundos. Este é o atalho para " "ativar a funcionalidade Teclas lentas, que afeta a forma como o teclado " "opera." #: js/ui/kbdA11yDialog.js:42 msgid "Sticky Keys Turned On" msgstr "Teclas aderentes ligadas" #: js/ui/kbdA11yDialog.js:43 msgid "Sticky Keys Turned Off" msgstr "Teclas aderentes desligadas" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "Premiu a tecla Shift 5 vezes seguidas. Este é o atalho para a funcionalidade " "Teclas aderentes, que afeta a forma como o teclado opera." #: js/ui/kbdA11yDialog.js:47 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" "Premiu duas teclas de uma vez ou premiu a tecla Shift 5 vezes seguidas. Isto " "desliga a funcionalidade Teclas aderentes, que afeta a forma como o teclado " "opera." #: js/ui/kbdA11yDialog.js:57 msgid "Leave On" msgstr "Deixar ativado" #: js/ui/kbdA11yDialog.js:57 msgid "Turn On" msgstr "Ligar" #: js/ui/kbdA11yDialog.js:67 js/ui/status/network.js:455 msgid "Turn Off" msgstr "Desligar" #: js/ui/kbdA11yDialog.js:67 msgid "Leave Off" msgstr "Deixar desativado" #: js/ui/keyboard.js:180 js/ui/status/keyboard.js:897 msgid "Keyboard Settings" msgstr "Definições do teclado" #: js/ui/lookingGlass.js:727 msgid "No extensions installed" msgstr "Nenhuma extensão instalada" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:788 #, javascript-format msgid "%s has not emitted any errors" msgstr "%s não emitiu qualquer erro" #: js/ui/lookingGlass.js:794 msgid "Hide Errors" msgstr "Ocultar erros" #: js/ui/lookingGlass.js:798 js/ui/lookingGlass.js:875 msgid "Show Errors" msgstr "Mostrar erros" #: js/ui/lookingGlass.js:807 msgid "Active" msgstr "Activo" #: js/ui/lookingGlass.js:810 msgid "Inactive" msgstr "Inactivo" #: js/ui/lookingGlass.js:812 msgid "Error" msgstr "Erro" #: js/ui/lookingGlass.js:814 msgid "Out of date" msgstr "Data inválida" #: js/ui/lookingGlass.js:816 msgid "Downloading" msgstr "A transferir" #: js/ui/lookingGlass.js:818 msgid "Deactivating" msgstr "A desativar" #: js/ui/lookingGlass.js:820 msgid "Activating" msgstr "A ativar" #: js/ui/lookingGlass.js:853 msgid "View Source" msgstr "Ver fonte" #: js/ui/lookingGlass.js:864 msgid "Web Page" msgstr "Página Web" #: js/ui/main.js:277 msgid "System was put in unsafe mode" msgstr "O sistema foi colocado em modo inseguro" #: js/ui/main.js:278 msgid "Apps now have unrestricted access" msgstr "As aplicações têm agora acesso sem restrições" #: js/ui/main.js:338 msgid "Logged in as a privileged user" msgstr "Em sessão como utilizador privilegiado" #: js/ui/main.js:339 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" "Executar uma sessão como utilizador privilegiado deve ser evitado por " "motivos de segurança. Se possível, aceder como utilizador normal." #: js/ui/main.js:387 msgid "Screen Lock disabled" msgstr "Bloqueio de ecrã desligado" #: js/ui/main.js:388 msgid "Screen Locking requires the GNOME display manager" msgstr "O bloqueio de ecrã requer o gestor de exibição do GNOME" #. Translators: this is the string displayed in the header when a message #. source doesn't have a name #: js/ui/messageList.js:374 msgid "Unknown App" msgstr "Aplicação desconhecida" #: js/ui/messageTray.js:326 js/ui/messageTray.js:328 msgid "Notification sound" msgstr "Som de Notificação" #: js/ui/mpris.js:198 msgid "Unknown artist" msgstr "Artista desconhecido" #: js/ui/mpris.js:208 msgid "Unknown title" msgstr "Titulo desconhecido" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:328 msgid "Type to search" msgstr "Escreva para pesquisar" #: js/ui/overviewControls.js:392 msgid "Apps" msgstr "Aplicações" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:33 msgid "Overview" msgstr "Vista geral" #: js/ui/padOsd.js:98 msgid "New shortcut…" msgstr "Novo atalho…" #: js/ui/padOsd.js:151 msgid "App defined" msgstr "Aplicação definida" #: js/ui/padOsd.js:152 msgid "Show on-screen help" msgstr "Mostrar ajuda no ecrã" #: js/ui/padOsd.js:153 msgid "Switch monitor" msgstr "Mudar de monitor" #: js/ui/padOsd.js:154 msgid "Assign keystroke" msgstr "Atribuir atalho" #: js/ui/padOsd.js:223 msgid "Done" msgstr "Concluído" #: js/ui/padOsd.js:726 msgid "Edit…" msgstr "Editar…" #: js/ui/padOsd.js:773 msgid "None" msgstr "Nenhum" #: js/ui/padOsd.js:844 msgid "Press a button to configure" msgstr "Premir um botão para configurar" #: js/ui/padOsd.js:845 msgid "Press Esc to exit" msgstr "Premir Esc para sair" #: js/ui/padOsd.js:848 msgid "Press any key to exit" msgstr "Premir qualquer tecla para sair" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:423 msgid "Activities" msgstr "Atividades" #: js/ui/panel.js:504 msgctxt "System menu in the top bar" msgid "System" msgstr "Sistema" #: js/ui/panel.js:678 msgid "Top Bar" msgstr "Barra superior" #: js/ui/quickSettings.js:188 msgid "Open menu" msgstr "Abrir menu" #: js/ui/runDialog.js:61 msgid "Run a Command" msgstr "Executar um comando" #: js/ui/runDialog.js:76 msgid "Press ESC to close" msgstr "Premir Esc para fechar" #: js/ui/runDialog.js:241 msgid "Restart is not available on Wayland" msgstr "O reinício não está disponível no Wayland" #: js/ui/runDialog.js:246 msgid "Restarting…" msgstr "A reiniciar…" #: js/ui/screenShield.js:233 msgid "GNOME needs to lock the screen" msgstr "O GNOME precisa de bloquear o ecrã" #: js/ui/screenShield.js:274 js/ui/screenShield.js:667 msgid "Unable to lock" msgstr "Impossível bloquear" #: js/ui/screenShield.js:275 js/ui/screenShield.js:668 msgid "Lock was blocked by an app" msgstr "Uma aplicação impediu o bloqueio" #: js/ui/screenshot.js:1252 msgid "Selection" msgstr "Seleção" #: js/ui/screenshot.js:1262 msgid "Area Selection" msgstr "Seleção da área" #: js/ui/screenshot.js:1267 msgid "Screen" msgstr "Ecrã" #: js/ui/screenshot.js:1277 msgid "Screen Selection" msgstr "Seleção do ecrã" #: js/ui/screenshot.js:1282 msgid "Window" msgstr "Janela" #: js/ui/screenshot.js:1292 msgid "Window Selection" msgstr "Seleção de janelas" #. Translators: entry in the window right click menu. #: js/ui/screenshot.js:1317 js/ui/status/system.js:111 js/ui/windowMenu.js:28 msgid "Take Screenshot" msgstr "Capturar ecrã" #: js/ui/screenshot.js:1333 msgid "Record Screen" msgstr "Gravar o ecrã" #. Translators: since this string refers to an action, #. it needs to be phrased as a verb. #: js/ui/screenshot.js:1350 msgid "Capture" msgstr "Captura" #: js/ui/screenshot.js:1372 msgid "Show Pointer" msgstr "Mostrar cursor" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1996 msgid "Screencasts" msgstr "Gravações de ecrã" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast From 07-17-2013 10:00:46 PM" #: js/ui/screenshot.js:2001 #, no-c-format msgid "Screencast From %d %t" msgstr "Gravação de ecrã de %d %t" #. Translators: notification title. #: js/ui/screenshot.js:2047 msgid "Screencast recorded" msgstr "Gravação de ecrã efetuada" #. Translators: notification title. #: js/ui/screenshot.js:2060 msgid "Screencast failed to start" msgstr "Erro no início da gravação de ecrã" #. Translators: notification title. #: js/ui/screenshot.js:2066 msgid "Screencast ended: Out of disk space" msgstr "A gravação de ecrã terminou por falta de espaço em disco" #. We can encourage user to try again on service crashes since the #. recorder will auto-blocklist the pipeline that crashed. #. Translators: notification title. #: js/ui/screenshot.js:2072 msgid "Screencast ended unexpectedly, please try again" msgstr "A gravação de ecrã terminou inesperadamente, tente de novo" #. Translators: notification title. #: js/ui/screenshot.js:2075 msgid "Screencast ended unexpectedly" msgstr "A gravação de ecrã terminou inesperadamente" #. Translators: notification source name. #: js/ui/screenshot.js:2085 js/ui/screenshot.js:2327 msgid "Screenshot" msgstr "Captura de ecrã" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:2092 msgid "Click here to view the video." msgstr "Clicar aqui para ver o vídeo." #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:2100 js/ui/screenshot.js:2343 msgid "Show in Files" msgstr "Mostrar em Ficheiros" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2287 #, javascript-format msgid "Screenshot From %s" msgstr "Captura de ecrã de %s" #. Translators: notification title. #: js/ui/screenshot.js:2333 msgid "Screenshot captured" msgstr "Captura de ecrã efetuada" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2335 msgid "You can paste the image from the clipboard." msgstr "Pode colar a imagem a partir da área de transferência." #: js/ui/screenshot.js:2391 js/ui/screenshot.js:2555 msgid "Screenshot taken" msgstr "Captura de ecrã tirada" #: js/ui/search.js:829 msgid "Searching…" msgstr "A procurar…" #: js/ui/search.js:831 msgid "No results" msgstr "Nenhum resultado" #: js/ui/search.js:962 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "%d mais" msgstr[1] "%d mais" #: js/ui/searchController.js:87 #: subprojects/extensions-app/data/ui/extensions-window.ui:73 msgid "Search" msgstr "Procurar" #: js/ui/shellEntry.js:21 msgid "Copy" msgstr "Copiar" #: js/ui/shellEntry.js:26 msgid "Paste" msgstr "Colar" #: js/ui/shellEntry.js:78 msgid "Show Text" msgstr "Mostrar texto" #: js/ui/shellEntry.js:80 msgid "Hide Text" msgstr "Ocultar texto" #: js/ui/shellEntry.js:174 msgid "Caps lock is on" msgstr "O Caps Lock está ligado" #: js/ui/shellMountOperation.js:286 msgid "Hidden Volume" msgstr "Volume oculto" #: js/ui/shellMountOperation.js:289 msgid "Windows System Volume" msgstr "Volume de sistema Windows" #: js/ui/shellMountOperation.js:292 msgid "Uses Keyfiles" msgstr "Usa ficheiros-chave" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:300 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead" msgstr "" "Para desbloquear um volume que utilize ficheiros-chave, use o utilitário " "%s" #: js/ui/shellMountOperation.js:304 msgid "" "You need an external utility like Disks to unlock a volume that uses " "keyfiles" msgstr "" "É necessário um utilitário externo como o Discos para desbloquear um " "volume que use ficheiros-chave" #: js/ui/shellMountOperation.js:312 msgid "PIM Number" msgstr "Número PIM" #: js/ui/shellMountOperation.js:371 msgid "Remember Password" msgstr "Memorizar a palavra-passe" #: js/ui/shellMountOperation.js:386 msgid "Unlock" msgstr "Desbloquear" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:400 #, javascript-format msgid "Open %s" msgstr "Abrir %s" #: js/ui/shellMountOperation.js:436 msgid "The PIM must be a number or empty" msgstr "O PIM deve ser um número ou espaço em branco" #: js/ui/status/accessibility.js:34 msgid "Accessibility" msgstr "Acessibilidade" #: js/ui/status/accessibility.js:44 msgid "High Contrast" msgstr "Alto contraste" #: js/ui/status/accessibility.js:47 msgid "Zoom" msgstr "Ampliação" #: js/ui/status/accessibility.js:54 msgid "Screen Reader" msgstr "Leitor de ecrã" #: js/ui/status/accessibility.js:58 msgid "Screen Keyboard" msgstr "Teclado no ecrã" #: js/ui/status/accessibility.js:62 msgid "Visual Alerts" msgstr "Alertas visuais" #: js/ui/status/accessibility.js:66 msgid "Sticky Keys" msgstr "Teclas aderentes" #: js/ui/status/accessibility.js:70 msgid "Slow Keys" msgstr "Teclas lentas" #: js/ui/status/accessibility.js:74 msgid "Bounce Keys" msgstr "Teclas tolerantes" #: js/ui/status/accessibility.js:78 msgid "Mouse Keys" msgstr "Teclas de rato" #: js/ui/status/accessibility.js:83 msgid "Accessibility Settings" msgstr "Definições de acessibilidade" #: js/ui/status/accessibility.js:140 msgid "Large Text" msgstr "Texto grande" #: js/ui/status/autoRotate.js:14 msgid "Auto Rotate" msgstr "Rotação automática" #: js/ui/status/backgroundApps.js:156 msgctxt "title" msgid "Background Apps" msgstr "Aplicações em segundo plano" #: js/ui/status/backgroundApps.js:171 msgid "Apps known to be running without a window" msgstr "Aplicações conhecidas por serem executadas sem uma janela" #: js/ui/status/backgroundApps.js:182 msgid "App Settings" msgstr "Definições de aplicação" #: js/ui/status/backgroundApps.js:239 msgid "No Background Apps" msgstr "Sem aplicações em segundo plano" #: js/ui/status/backgroundApps.js:241 #, javascript-format msgid "%d Background App" msgid_plural "%d Background Apps" msgstr[0] "%d aplicação em segundo plano" msgstr[1] "%d aplicações em segundo plano" #: js/ui/status/backlight.js:39 msgid "Keyboard Brightness" msgstr "Luminosidade do ecrã" #: js/ui/status/backlight.js:79 msgid "Off" msgstr "Desligado" #: js/ui/status/backlight.js:80 msgid "Low" msgstr "Baixo" #: js/ui/status/backlight.js:81 msgid "High" msgstr "Alto" #: js/ui/status/backlight.js:147 js/ui/status/keyboard.js:879 msgid "Keyboard" msgstr "Teclado" #: js/ui/status/bluetooth.js:245 js/ui/status/network.js:360 msgid "Disconnect" msgstr "Desligar" #: js/ui/status/bluetooth.js:262 js/ui/status/bluetooth.js:264 msgid "Bluetooth" msgstr "Bluetooth" #: js/ui/status/bluetooth.js:287 js/ui/status/network.js:1900 msgid "Bluetooth Settings" msgstr "Definições Bluetooth" #: js/ui/status/bluetooth.js:334 msgid "No available or connected devices" msgstr "Nenhum dispositivo disponível ou ligado" #: js/ui/status/bluetooth.js:335 msgid "Turn on Bluetooth to connect to devices" msgstr "Ativar o Bluetooth para se ligar a dispositivos" #. Translators: This is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:389 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d ligado" msgstr[1] "%d ligados" #: js/ui/status/brightness.js:32 msgid "Brightness" msgstr "Luminosidade" #: js/ui/status/darkMode.js:12 msgid "Dark Style" msgstr "Estilo escuro" #: js/ui/status/dwellClick.js:15 msgid "Single Click" msgstr "Clique único" #: js/ui/status/dwellClick.js:20 msgid "Double Click" msgstr "Clique duplo" #: js/ui/status/dwellClick.js:25 msgid "Drag" msgstr "Arrastar" #: js/ui/status/dwellClick.js:30 msgid "Secondary Click" msgstr "Clique secundário" #: js/ui/status/dwellClick.js:39 msgid "Dwell Click" msgstr "Clique permanente" #: js/ui/status/keyboard.js:896 msgid "Show Keyboard Layout" msgstr "Mostrar a disposição de teclado" #: js/ui/status/location.js:337 msgid "Allow location access" msgstr "Permitir acesso a localização" #. Translators: %s is an application name #: js/ui/status/location.js:339 #, javascript-format msgid "The app %s wants to access your location" msgstr "A aplicação %s pretende usar a localização" #: js/ui/status/location.js:349 msgid "Location access can be changed at any time from the privacy settings" msgstr "" "O acesso à localização pode ser alterado a qualquer altura a partir das " "definições de privacidade" #: js/ui/status/location.js:357 msgid "Deny Access" msgstr "Negar acesso" #: js/ui/status/location.js:362 msgid "Grant Access" msgstr "Conceder acesso" #: js/ui/status/network.js:62 msgid "" msgstr "" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:354 #, javascript-format msgid "Disconnect %s" msgstr "Desligar %s" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:356 #, javascript-format msgid "Connect to %s" msgstr "Ligar a %s" #: js/ui/status/network.js:1050 msgid "Secure" msgstr "Seguro" #: js/ui/status/network.js:1050 msgid "Not secure" msgstr "Não seguro" #: js/ui/status/network.js:1051 #, javascript-format msgid "Signal strength %s%%" msgstr "Intensidade do sinal %s%%" #. translators: The first placeholder is the network name, the second and indication whether it is secure, and the last the signal strength indication #: js/ui/status/network.js:1053 #, javascript-format msgid "%s, %s, %s" msgstr "%s, %s, %s" #. Translators: %s is a network identifier #: js/ui/status/network.js:1155 #, javascript-format msgid "%s Hotspot" msgstr "Ponto de acesso %s" #: js/ui/status/network.js:1426 #, javascript-format msgid "%d connected" msgid_plural "%d connected" msgstr[0] "%d ligado" msgstr[1] "%d ligados" #: js/ui/status/network.js:1524 js/ui/status/network.js:1540 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1525 msgid "VPN Settings" msgstr "Definições de VPN" #: js/ui/status/network.js:1785 msgid "Wi–Fi" msgstr "Wi–Fi" #: js/ui/status/network.js:1787 msgid "All Networks" msgstr "Todas as redes" #: js/ui/status/network.js:1884 msgid "Wired Connections" msgstr "Ligações por cabo de rede" #: js/ui/status/network.js:1885 msgid "Wired Settings" msgstr "Definições de ligação por cabo" #: js/ui/status/network.js:1899 msgid "Bluetooth Tethers" msgstr "Tethers Bluetooth" #. Translators: "Tether" from "Bluetooth Tether" #: js/ui/status/network.js:1906 msgid "Tether" msgstr "Tether" #: js/ui/status/network.js:1919 msgid "Mobile Connections" msgstr "Ligações móveis" #: js/ui/status/network.js:1921 msgid "Mobile Broadband Settings" msgstr "Definições da banda larga móvel" #. Translators: "Mobile" from "Mobile Broadband" #: js/ui/status/network.js:1930 msgid "Mobile" msgstr "Móvel" #: js/ui/status/network.js:1964 msgid "Sign Into Wi–Fi Network" msgstr "Iniciar sessão na rede Wi-Fi" #: js/ui/status/network.js:2151 msgid "Connection failed" msgstr "Falha na ligação" #: js/ui/status/network.js:2152 msgid "Activation of network connection failed" msgstr "Falha na ativação da ligação à rede" #: js/ui/status/nightLight.js:19 msgid "Night Light" msgstr "Luz noturna" #: js/ui/status/powerProfiles.js:19 msgctxt "Power profile" msgid "Performance" msgstr "Desempenho" #: js/ui/status/powerProfiles.js:24 msgctxt "Power profile" msgid "Balanced" msgstr "Equilibrado" #: js/ui/status/powerProfiles.js:29 msgctxt "Power profile" msgid "Power Saver" msgstr "Poupança de energia" #: js/ui/status/powerProfiles.js:39 js/ui/status/powerProfiles.js:69 msgid "Power Mode" msgstr "Modo de energia" #: js/ui/status/powerProfiles.js:71 msgid "Power Settings" msgstr "Definições de energia" #: js/ui/status/remoteAccess.js:74 msgid "Stop Screencast" msgstr "Parar a gravação de ecrã" #: js/ui/status/remoteAccess.js:144 msgid "Stop Screen Sharing" msgstr "Parar a partilha de ecrã" #: js/ui/status/rfkill.js:99 msgid "Airplane Mode" msgstr "Modo de avião" #: js/ui/status/system.js:168 msgid "Power Off Menu" msgstr "Menu de Desligar" #: js/ui/status/system.js:176 msgid "Suspend" msgstr "Suspender" #: js/ui/status/system.js:181 msgid "Restart…" msgstr "Reiniciar…" #: js/ui/status/system.js:186 msgid "Power Off…" msgstr "Desligar…" #: js/ui/status/system.js:193 #: subprojects/extensions-app/data/ui/extensions-window.ui:124 msgid "Log Out…" msgstr "Terminar sessão…" #: js/ui/status/system.js:198 msgid "Switch User…" msgstr "Mudar de utilizador…" #: js/ui/status/system.js:242 msgctxt "action" msgid "Lock Screen" msgstr "Bloquear ecrã" #: js/ui/status/thunderbolt.js:308 msgid "Unknown Thunderbolt device" msgstr "Dispositivo Thunderbolt desconhecido" #: js/ui/status/thunderbolt.js:309 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" "Um novo dispositivo foi detetado enquanto estava ausente. Desligue e volte a " "ligar o dispositivo para começar a usá-lo." #: js/ui/status/thunderbolt.js:312 msgid "Unauthorized Thunderbolt device" msgstr "Dispositivo Thunderbolt não autorizado" #: js/ui/status/thunderbolt.js:313 msgid "" "New device has been detected and needs to be authorized by an administrator" msgstr "" "Um novo dispositivo foi detetado e precisa de ser autorizado por um " "administrador" #: js/ui/status/thunderbolt.js:319 msgid "Thunderbolt authorization error" msgstr "Erro de autorização do Thunderbolt" #: js/ui/status/thunderbolt.js:320 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "Não foi possível autorizar o dispositivo Thunderbolt: %s" #: js/ui/status/volume.js:218 msgid "Volume changed" msgstr "Volume alterado" #: js/ui/status/volume.js:231 msgid "Unmute" msgstr "Ativar Som" #: js/ui/status/volume.js:231 msgid "Mute" msgstr "Silenciar" #: js/ui/status/volume.js:286 msgid "Volume" msgstr "Volume" #: js/ui/status/volume.js:302 msgid "Sound Output" msgstr "Saída de som" #: js/ui/status/volume.js:374 msgid "Sound Input" msgstr "Entrada de som" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:20 msgid "Mirror" msgstr "Espelho (mirror)" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:29 msgid "Join Displays" msgstr "Juntar ecrãs" #. Translators: this is for using only external displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:39 msgid "External Only" msgstr "Apenas externo" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:47 msgid "Built-in Only" msgstr "Apenas interno" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:378 msgid "%A %B %-d" msgstr "%A, %d de %B" #: js/ui/unlockDialog.js:384 msgid "Swipe up to unlock" msgstr "Deslizar para desbloquear" #: js/ui/unlockDialog.js:385 msgid "Click or press a key to unlock" msgstr "Clicar ou premir uma tecla para desbloquear" #: js/ui/unlockDialog.js:568 msgid "Unlock Window" msgstr "Desbloquear janela" #: js/ui/unlockDialog.js:577 msgid "Log in as another user" msgstr "Iniciar sessão como outro utilizador" #: js/ui/welcomeDialog.js:47 #, javascript-format msgid "GNOME %s" msgstr "GNOME %s" #: js/ui/welcomeDialog.js:51 #, javascript-format msgid "Welcome to %s" msgstr "Bem-vindo ao %s" #: js/ui/welcomeDialog.js:52 msgid "If you want to learn your way around, check out the tour" msgstr "Se quiser familiarizar-se, percorra a visita guiada" #: js/ui/welcomeDialog.js:61 msgid "Skip" msgstr "Saltar" #: js/ui/welcomeDialog.js:66 msgid "Take Tour" msgstr "Faça uma visita guiada" #: js/ui/windowAttentionHandler.js:18 #, javascript-format msgid "“%s” is ready" msgstr "“%s” está pronto" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:68 msgid "Keep these display settings?" msgstr "Manter estas definições de ecrã?" #: js/ui/windowManager.js:78 msgid "Revert Settings" msgstr "Reverter definições" #: js/ui/windowManager.js:83 msgid "Keep Changes" msgstr "Manter alterações" #: js/ui/windowManager.js:103 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "As alterações às definições serão revertidas em %d segundo" msgstr[1] "As alterações às definições serão revertidas em %d segundos" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:500 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:40 msgid "Hide" msgstr "Ocultar" #: js/ui/windowMenu.js:47 msgid "Restore" msgstr "Restaurar" #: js/ui/windowMenu.js:51 msgid "Maximize" msgstr "Maximizar" #: js/ui/windowMenu.js:58 msgid "Move" msgstr "Mover" #: js/ui/windowMenu.js:78 msgid "Resize" msgstr "Redimensionar" #: js/ui/windowMenu.js:98 msgid "Always on Top" msgstr "Sempre no topo" #: js/ui/windowMenu.js:117 msgid "Always on Visible Workspace" msgstr "Sempre na área de trabalho visível" #: js/ui/windowMenu.js:131 msgid "Move to Workspace Left" msgstr "Mover para a área de trabalho à esquerda" #: js/ui/windowMenu.js:137 msgid "Move to Workspace Right" msgstr "Mover para a área de trabalho à direita" #: js/ui/windowMenu.js:143 msgid "Move to Workspace Up" msgstr "Mover para a área de trabalho acima" #: js/ui/windowMenu.js:149 msgid "Move to Workspace Down" msgstr "Mover para a área de trabalho abaixo" #: js/ui/windowMenu.js:167 msgid "Move to Monitor Up" msgstr "Mover para o monitor acima" #: js/ui/windowMenu.js:176 msgid "Move to Monitor Down" msgstr "Mover para o monitor abaixo" #: js/ui/windowMenu.js:185 msgid "Move to Monitor Left" msgstr "Mover para o monitor à esquerda" #: js/ui/windowMenu.js:194 msgid "Move to Monitor Right" msgstr "Mover para o monitor à direita" #: js/ui/windowMenu.js:202 msgid "Close" msgstr "Fechar" #: src/main.c:527 subprojects/extensions-tool/src/main.c:336 msgid "Print version" msgstr "Mostrar versão" #: src/main.c:533 msgid "Mode used by GDM for login screen" msgstr "Modo utilizado pelo GDM para o ecrã de início de sessão" #: src/main.c:539 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "" "Usar um modo específico, por ex. \"gdm\" para o ecrã de início de sessão" #: src/main.c:545 msgid "List possible modes" msgstr "Listar modos possíveis" #: src/main.c:551 msgid "Force animations to be enabled" msgstr "Forçar as animações a serem ativadas" #: src/shell-app.c:252 msgctxt "program" msgid "Unknown" msgstr "Desconhecida" #: src/shell-app.c:503 #, c-format msgid "Failed to launch “%s”" msgstr "Falha ao iniciar “%s”" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match" msgstr "As palavras-passe não coincidem" #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "A palavra-passe não pode ser espaço vazio" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "O diálogo de autenticação foi fechado pelo utilizador" #: src/st/st-icon-theme.c:1865 #, c-format msgid "Icon '%s' not present in theme %s" msgstr "O ícone '%s' não existe no tema %s" #: src/st/st-icon-theme.c:3454 src/st/st-icon-theme.c:3757 msgid "Failed to load icon" msgstr "Falha ao carregar o ícone" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 msgid "Manage your GNOME Extensions" msgstr "Gerir as extensões do GNOME" #. developer_name tag deprecated with Appstream 1.0 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:19 msgid "The GNOME Project" msgstr "Projeto GNOME" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:51 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" "O Extensões do GNOME lida com a atualização da extensões, configuração das " "preferências de extensões e remoção ou desativação de extensões já não " "desejadas." #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:64 msgid "Main Window" msgstr "Janela de Principal" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:68 msgid "Available Updates" msgstr "Actualizações disponíveis" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:72 msgid "Search View" msgstr "Procurar" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "Configurar o Extensões à interface GNOME" #: subprojects/extensions-app/js/extensionManager.js:237 #, javascript-format msgid "" "The installed version of this extension (%s) is incompatible with the " "current version of GNOME (%s). The extension has been disabled." msgstr "" "A versão instalada desta extensão (%s) é incompatível com a actual versão do " "GNOME (%s). Esta extensão foi desactivada." #: subprojects/extensions-app/js/extensionManager.js:238 #, javascript-format msgid "" "The installed version of this extension is incompatible with the current " "version of GNOME (%s). The extension has been disabled." msgstr "" "A versão instalada desta extensão é incompatível com a actual versão do " "GNOME (%s). Esta extensão foi desactivada." #: subprojects/extensions-app/js/extensionManager.js:242 msgid "" "An error has occurred in this extension. This could cause issues elsewhere " "in the system. It is recommended to turn the extension off until the error " "is resolved." msgstr "" "Ocorreu um erro nesta extensão. Isto poderá causar problemas num outro local " "do sistema. É recomendado que a desligue até o erro ser resolvido." #. translators: Details for an extension error #: subprojects/extensions-app/js/extensionManager.js:248 msgid "Error details:" msgstr "Detalhes do erro:" #: subprojects/extensions-app/js/extensionRow.js:82 #, javascript-format msgid "Version %s" msgstr "Versão %s" #: subprojects/extensions-app/js/extensionsWindow.js:113 #, javascript-format msgid "Remove “%s”?" msgstr "Remover “%s”?" #: subprojects/extensions-app/js/extensionsWindow.js:114 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "" "Se remover a extensão, tem que voltar a descarregá-la para a ativar novamente" #: subprojects/extensions-app/js/extensionsWindow.js:117 msgid "_Cancel" msgstr "_Cancelar" #: subprojects/extensions-app/js/extensionsWindow.js:118 msgid "_Remove" msgstr "_Remover" #: subprojects/extensions-app/js/extensionsWindow.js:158 msgid "translator-credits" msgstr "" "Duarte Loreto \n" "Rui Gouveia \n" "António Lima \n" "Tiago Santos \n" "Bruno Ramalhete \n" "Pedro Albuquerque \n" "Sérgio Cardeira \n" "José Vieira \n" "Juliano de Souza Camargo \n" "Hugo Carvalho \n" "João Carvalhinho " #: subprojects/extensions-app/js/extensionsWindow.js:203 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "%d extensão será atualizada na próxima sessão." msgstr[1] "%d extensões serão atualizadas na próxima sessão." #: subprojects/extensions-app/data/ui/extension-row.ui:22 msgid "Error Details" msgstr "Detalhes do erro" #: subprojects/extensions-app/data/ui/extension-row.ui:62 msgid "Updates Details" msgstr "Detalhes da actualização" #: subprojects/extensions-app/data/ui/extension-row.ui:72 msgid "" "A new version of this extension is ready and will be loaded on next login." msgstr "" "Uma nova versão desta extensão esta pronta e será carregada no próximo " "acesso." #: subprojects/extensions-app/data/ui/extension-row.ui:104 msgid "Extension Details" msgstr "Detalhes da extensão" #: subprojects/extensions-app/data/ui/extension-row.ui:192 msgid "_Website" msgstr "Sítio _web" #: subprojects/extensions-app/data/ui/extension-row.ui:219 msgid "_Settings" msgstr "Definiçõe_s" #: subprojects/extensions-app/data/ui/extension-row.ui:246 msgid "_Remove…" msgstr "_Remover…" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Keyboard Shortcuts" msgstr "Atalhos de teclado" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "Acerca do Extensões" #: subprojects/extensions-app/data/ui/extensions-window.ui:64 msgid "Main Menu" msgstr "Menu principal" #: subprojects/extensions-app/data/ui/extensions-window.ui:106 msgid "Search extensions" msgstr "Extensões de pesquisa" #: subprojects/extensions-app/data/ui/extensions-window.ui:134 msgid "_Extensions" msgstr "_Extensões" #: subprojects/extensions-app/data/ui/extensions-window.ui:139 msgid "More Information" msgstr "Mais informação" #: subprojects/extensions-app/data/ui/extensions-window.ui:151 msgid "" "Extensions can cause performance and stability issues. It is recommended to " "disable all extensions if you experience problems with your system." msgstr "" "As extensões podem causar problemas de desempenho e estabilidade. Desativar " "as extensões se encontrar problemas com o sistema." #: subprojects/extensions-app/data/ui/extensions-window.ui:178 msgid "User Extensions" msgstr "Extensões de utilizador" #: subprojects/extensions-app/data/ui/extensions-window.ui:198 msgid "System Extensions" msgstr "Extensões de sistema" #: subprojects/extensions-app/data/ui/extensions-window.ui:233 msgid "Search Results" msgstr "Resultados da pesquisa" #: subprojects/extensions-app/data/ui/extensions-window.ui:252 msgid "No Results Found" msgstr "Nenhum resultado" #: subprojects/extensions-app/data/ui/extensions-window.ui:253 msgid "Try a different search" msgstr "Tente uma nova pesquisa" #: subprojects/extensions-app/data/ui/extensions-window.ui:264 msgid "No Installed Extensions" msgstr "Não há extensões instaladas" #: subprojects/extensions-app/data/ui/extensions-window.ui:265 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" "Para encontrar e adicionar extensões, visite extensions.gnome.org." #: subprojects/extensions-app/data/ui/extensions-window.ui:276 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" "Não foi possível obter a lista de extensões instaladas. Certifique-se de que " "está numa sessão do GNOME e tente novamente." #: subprojects/extensions-app/data/ui/help-overlay.ui:9 msgctxt "shortcut window" msgid "General" msgstr "Geral" #: subprojects/extensions-app/data/ui/help-overlay.ui:12 msgctxt "shortcut window" msgid "Open Menu" msgstr "Abrir menu" #: subprojects/extensions-app/data/ui/help-overlay.ui:18 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Ativar Pesquisa" #: subprojects/extensions-app/data/ui/help-overlay.ui:24 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Mostrar Atalhos" #: subprojects/extensions-app/data/ui/help-overlay.ui:30 msgctxt "shortcut window" msgid "Quit" msgstr "Sair" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:284 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "A nova extensão foi criada com sucesso em %s.\n" #: subprojects/extensions-tool/src/command-create.c:376 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" "O nome deve ser uma linha muito curta (idealmente descritiva).\n" "Exemplos: %s" #: subprojects/extensions-tool/src/command-create.c:382 #: subprojects/extensions-tool/src/main.c:243 msgid "Name" msgstr "Nome" #: subprojects/extensions-tool/src/command-create.c:396 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" "A descrição é uma explicação numa só frase do que a extensão faz.\n" "Exemplos: %s" #: subprojects/extensions-tool/src/command-create.c:402 #: subprojects/extensions-tool/src/main.c:246 msgid "Description" msgstr "Descrição" #: subprojects/extensions-tool/src/command-create.c:416 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" "O UUID é um identificador global único para a extensão.\n" "Deve estar no formato de endereço de correio eletrónico " "(cliqueparafoco@janedoe.example.com)\n" #: subprojects/extensions-tool/src/command-create.c:443 msgid "Choose one of the available templates:\n" msgstr "Escolher um dos modelos disponíveis:\n" #: subprojects/extensions-tool/src/command-create.c:457 msgid "Template" msgstr "Modelo" #: subprojects/extensions-tool/src/command-create.c:515 msgid "The unique identifier of the new extension" msgstr "O identificador único para a nova extensão" #: subprojects/extensions-tool/src/command-create.c:518 msgid "NAME" msgstr "NOME" #: subprojects/extensions-tool/src/command-create.c:519 msgid "The user-visible name of the new extension" msgstr "O nome da nova extensão visível para o utilizador" #: subprojects/extensions-tool/src/command-create.c:521 msgid "DESCRIPTION" msgstr "DESCRIÇÃO" #: subprojects/extensions-tool/src/command-create.c:523 msgid "A short description of what the extension does" msgstr "Uma descrição curta do que a extensão faz" #: subprojects/extensions-tool/src/command-create.c:525 #: subprojects/extensions-tool/src/command-pack.c:455 msgid "DOMAIN" msgstr "DOMÍNIO" #: subprojects/extensions-tool/src/command-create.c:527 msgid "The gettext domain used by the extension" msgstr "O domínio gettext usado pela extensão" #: subprojects/extensions-tool/src/command-create.c:529 #: subprojects/extensions-tool/src/command-pack.c:448 msgid "SCHEMA" msgstr "ESQUEMA" #: subprojects/extensions-tool/src/command-create.c:531 msgid "The GSettings schema used by the extension" msgstr "O esquema GSettings usado pela extensão" #: subprojects/extensions-tool/src/command-create.c:534 msgid "TEMPLATE" msgstr "MODELO" #: subprojects/extensions-tool/src/command-create.c:535 msgid "The template to use for the new extension" msgstr "O modelo a usar para a nova extensão" #: subprojects/extensions-tool/src/command-create.c:538 msgid "Include prefs.js template" msgstr "Incluir o modelo prefs.js" #: subprojects/extensions-tool/src/command-create.c:544 msgid "Enter extension information interactively" msgstr "Introduzir as informações da extensão interativamente" #: subprojects/extensions-tool/src/command-create.c:552 msgid "Create a new extension" msgstr "Criar uma nova extensão" #: subprojects/extensions-tool/src/command-create.c:570 #: subprojects/extensions-tool/src/command-list.c:190 msgid "Unknown arguments" msgstr "Argumentos desconhecidos" #: subprojects/extensions-tool/src/command-create.c:595 msgid "UUID, name and description are required" msgstr "São necessários o UUID, o nome e a descrição" #: subprojects/extensions-tool/src/command-disable.c:62 #: subprojects/extensions-tool/src/command-enable.c:62 #, c-format msgid "Extension “%s” does not exist\n" msgstr "A extensão “%s” não existe\n" #: subprojects/extensions-tool/src/command-disable.c:98 msgid "Disable an extension" msgstr "Desativar uma extensão" #: subprojects/extensions-tool/src/command-disable.c:116 #: subprojects/extensions-tool/src/command-enable.c:116 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "Nenhum UUID fornecido" #: subprojects/extensions-tool/src/command-disable.c:121 #: subprojects/extensions-tool/src/command-enable.c:121 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "Fornecido mais do que um UUID" #: subprojects/extensions-tool/src/command-enable.c:98 msgid "Enable an extension" msgstr "Ativar uma extensão" #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:66 #: subprojects/extensions-tool/src/main.c:150 msgid "Failed to connect to GNOME Shell\n" msgstr "Ligar à Interface GNOME falhou\n" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:159 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "A extensão “%s” não existe\n" # ver o contexto #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "Mostrar a informação das extensões" #: subprojects/extensions-tool/src/command-install.c:190 msgid "Overwrite an existing extension" msgstr "Sobrescrever uma extensão existente" #: subprojects/extensions-tool/src/command-install.c:192 msgid "EXTENSION_BUNDLE" msgstr "PACOTE_DE_EXTENSÕES" #: subprojects/extensions-tool/src/command-install.c:201 msgid "Install an extension bundle" msgstr "Instalar um pacote de extensões" #: subprojects/extensions-tool/src/command-install.c:219 msgid "No extension bundle specified" msgstr "Nenhum pacote de extensões especificado" #: subprojects/extensions-tool/src/command-install.c:225 msgid "More than one extension bundle specified" msgstr "Especificado mais do que um pacote de extensões" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show user-installed extensions" msgstr "Mostrar extensões instaladas pelo utilizador" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show system-installed extensions" msgstr "Mostrar extensões instaladas pelo sistema" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Show enabled extensions" msgstr "Mostrar extensões ativadas" #: subprojects/extensions-tool/src/command-list.c:149 msgid "Show disabled extensions" msgstr "Mostrar extensões desativadas" #: subprojects/extensions-tool/src/command-list.c:152 msgid "Show extensions in active state" msgstr "Mostrar extensões activas" #: subprojects/extensions-tool/src/command-list.c:155 msgid "Show extensions in inactive state" msgstr "Mostrar extensões inactivas" #: subprojects/extensions-tool/src/command-list.c:158 msgid "Show extensions with preferences" msgstr "Mostrar extensões com preferências" #: subprojects/extensions-tool/src/command-list.c:161 msgid "Show extensions with updates" msgstr "Mostrar extensões com atualizações" #: subprojects/extensions-tool/src/command-list.c:164 msgid "Print extension details" msgstr "Mostrar informação da extensão" #: subprojects/extensions-tool/src/command-list.c:172 msgid "List installed extensions" msgstr "Listar extensões instaladas" #: subprojects/extensions-tool/src/command-pack.c:444 msgid "FILE" msgstr "FICHEIRO" #: subprojects/extensions-tool/src/command-pack.c:445 msgid "Additional source to include in the bundle" msgstr "Origem adicional a incluir no pacote" # GSettings é GNOME Settings? # ver se o nome foi traduzido #: subprojects/extensions-tool/src/command-pack.c:449 msgid "A GSettings schema that should be included" msgstr "O esquema de GSettings que deve ser incluído" #: subprojects/extensions-tool/src/command-pack.c:451 #: subprojects/extensions-tool/src/command-pack.c:462 msgid "DIRECTORY" msgstr "DIRETÓRIO" #: subprojects/extensions-tool/src/command-pack.c:453 msgid "The directory where translations are found" msgstr "O diretório onde estão as traduções" #: subprojects/extensions-tool/src/command-pack.c:457 msgid "The gettext domain to use for translations" msgstr "O domínio gettext a usar nas traduções" #: subprojects/extensions-tool/src/command-pack.c:460 msgid "Overwrite an existing pack" msgstr "Sobrescrever um pacote existente" #: subprojects/extensions-tool/src/command-pack.c:464 msgid "The directory where the pack should be created" msgstr "Diretório no qual o pacote deve ser criado" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "SOURCE_DIRECTORY" msgstr "DIRETÓRIO_ORIGEM" #: subprojects/extensions-tool/src/command-pack.c:475 msgid "Create an extension bundle" msgstr "Criar um pacote de extensões" #: subprojects/extensions-tool/src/command-pack.c:495 msgid "More than one source directory specified" msgstr "Especificado mais do que um diretório origem" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "A extensão “%s” não tem preferências\n" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "Falha ao abrir prefs para a extensão \"%s\": %s\n" #: subprojects/extensions-tool/src/command-prefs.c:87 msgid "Opens extension preferences" msgstr "Abre as preferências da extensão" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "Repor uma extensão" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "Não é possível desinstalar as extensões do sistema\n" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "A desinstalação de “%s” falhou\n" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "Desinstalar uma extensão" #: subprojects/extensions-tool/src/main.c:76 msgid "Do not print error messages" msgstr "Não mostrar mensagens de erro" #: subprojects/extensions-tool/src/main.c:249 msgid "Path" msgstr "Caminho" #: subprojects/extensions-tool/src/main.c:252 msgid "URL" msgstr "URL" #: subprojects/extensions-tool/src/main.c:255 msgid "Original author" msgstr "Autor original" #: subprojects/extensions-tool/src/main.c:261 #: subprojects/extensions-tool/src/main.c:263 #: subprojects/extensions-tool/src/main.c:265 msgid "Version" msgstr "Versão" #: subprojects/extensions-tool/src/main.c:268 msgid "Enabled" msgstr "Ativo" #: subprojects/extensions-tool/src/main.c:268 msgid "Yes" msgstr "Sim" #: subprojects/extensions-tool/src/main.c:268 msgid "No" msgstr "Não" #: subprojects/extensions-tool/src/main.c:271 msgid "State" msgstr "Estado" #: subprojects/extensions-tool/src/main.c:309 msgid "“version” takes no arguments" msgstr "“version” não aceita argumentos" #: subprojects/extensions-tool/src/main.c:311 #: subprojects/extensions-tool/src/main.c:331 msgid "Usage:" msgstr "Utilização:" #: subprojects/extensions-tool/src/main.c:314 msgid "Print version information and exit." msgstr "Mostrar a versão e sair." #: subprojects/extensions-tool/src/main.c:329 #: subprojects/extensions-tool/src/main.c:332 msgid "COMMAND" msgstr "COMANDO" #: subprojects/extensions-tool/src/main.c:332 msgid "[ARGS…]" msgstr "[ARGS…]" #: subprojects/extensions-tool/src/main.c:334 msgid "Commands:" msgstr "Comandos:" #: subprojects/extensions-tool/src/main.c:335 msgid "Print help" msgstr "Mostrar ajuda" #: subprojects/extensions-tool/src/main.c:337 msgid "Enable extension" msgstr "Ativar extensão" #: subprojects/extensions-tool/src/main.c:338 msgid "Disable extension" msgstr "Desativar extensão" #: subprojects/extensions-tool/src/main.c:339 msgid "Reset extension" msgstr "Restabelecer extensão" #: subprojects/extensions-tool/src/main.c:340 msgid "Uninstall extension" msgstr "Desinstalar extensão" #: subprojects/extensions-tool/src/main.c:341 msgid "List extensions" msgstr "Listar extensões" #: subprojects/extensions-tool/src/main.c:342 #: subprojects/extensions-tool/src/main.c:343 msgid "Show extension info" msgstr "Mostrar a informação da extensão" #: subprojects/extensions-tool/src/main.c:344 msgid "Open extension preferences" msgstr "Mostrar as preferências das extensões" #: subprojects/extensions-tool/src/main.c:345 msgid "Create extension" msgstr "Criar extensão" #: subprojects/extensions-tool/src/main.c:346 msgid "Package extension" msgstr "Empacotar extensão" #: subprojects/extensions-tool/src/main.c:347 msgid "Install extension bundle" msgstr "Instalar pacote da extensão" #: subprojects/extensions-tool/src/main.c:349 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "Usar “%s” para obter ajuda detalhada.\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "Em branco" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "Uma extensão vazia" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "Indicador" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "Adicionar um ícone à barra superior" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:4 msgid "Quick Settings Item" msgstr "Item de definições rápidas" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:5 msgid "Add an item to quick settings" msgstr "Adicionar um item às definições rápidas" #. translators: #. * The device has been disabled #: subprojects/gvc/gvc-mixer-control.c:1872 msgid "Disabled" msgstr "Inativo" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1879 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u saída" msgstr[1] "%u saídas" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1889 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u entrada" msgstr[1] "%u entradas" #: subprojects/gvc/gvc-mixer-control.c:2872 msgid "System Sounds" msgstr "Sons de sistema" #~ msgid "Move Titlebar Onscreen" #~ msgstr "Mover barra de título no ecrã" #~ msgid "Network Manager" #~ msgstr "Gestor de rede" #, javascript-format #~ msgid "%s is now known as %s" #~ msgstr "%s é agora conhecido como %s" #~ msgid "Disabling" #~ msgstr "Desativando" #~ msgid "Enabling" #~ msgstr "Ativando" #~ msgid "Thunderbolt" #~ msgstr "Thunderbolt" #~ msgid "No Thanks" #~ msgstr "Dispensar" #~ msgid "No Matches" #~ msgstr "Sem correpondências" #~ msgid "The extension had an error" #~ msgstr "A extensão apresentou um erro" #~ msgid "The extension can be updated" #~ msgstr "A extensão pode ser atualizada" #~ msgid "Help" #~ msgstr "Ajuda" #~ msgid "Manually Installed" #~ msgstr "Instalada manualmente" #~ msgid "Built-In" #~ msgstr "Interna" #~ msgid "Extension Updates Ready" #~ msgstr "Atualizações de extensões prontas" #, javascript-format #~ msgid "%d %%" #~ msgstr "%d%%" #~ msgid "Screenshot / Screencast" #~ msgstr "Captura de ecrã / Gravação de ecrã" #~ msgid "Power Profiles" #~ msgstr "Perfis de energia" #~ msgid "Evolution Calendar" #~ msgstr "Calendário do Evolution" #~ msgid "Applications" #~ msgstr "Aplicações" #, javascript-format #~ msgid "Unable to start %s" #~ msgstr "Incapaz de iniciar %s" #, javascript-format #~ msgid "Couldn’t find the %s application" #~ msgstr "Não foi possível localizar a aplicação %s" #~ msgid "Attach modal dialog to the parent window" #~ msgstr "Anexar diálogo modal à janela principal" #~ msgid "" #~ "This key overrides the key in org.gnome.mutter when running GNOME Shell." #~ msgstr "" #~ "Esta chave ignora a chave em org.gnome.mutter ao executar a interface " #~ "GNOME." #~ msgid "Enable edge tiling when dropping windows on screen edges" #~ msgstr "" #~ "Ativar prender nas margens ao largar janelas junto às margens do ecrã" #~ msgid "Workspaces are managed dynamically" #~ msgstr "As áreas de trabalho são geridas dinamicamente" #~ msgid "Workspaces only on primary monitor" #~ msgstr "Áreas de trabalho só no monitor principal" #~ msgid "Delay focus changes in mouse mode until the pointer stops moving" #~ msgstr "" #~ "Atrasar alterações de foco no modo de rato até que o ponteiro pare de se " #~ "mover" #~ msgid "Region & Language Settings" #~ msgstr "Definições de Região e Idioma" #~ msgid "" #~ "Whether the default Bluetooth adapter had set up devices associated to it" #~ msgstr "" #~ "Se o adaptador padrão Bluetooth tinha dispositivos configurados associados" #~ msgid "" #~ "The shell will only show a Bluetooth menu item if a Bluetooth adapter is " #~ "powered, or if there were devices set up associated with the default " #~ "adapter. This will be reset if the default adapter is ever seen not to " #~ "have devices associated to it." #~ msgstr "" #~ "A interface só vai mostrar um item de menu de Bluetooth se estiver ligado " #~ "algum adaptador de Bluetooth ou se houver dispositivos configurados " #~ "associados ao adaptador predefinido. Isto será revertido se o adaptador " #~ "predefinido deixar de ter dispositivos associados." #~ msgid "Log Out" #~ msgstr "Sair" #, javascript-format #~ msgid "%s Off" #~ msgstr "%s desligado" #, javascript-format #~ msgid "%s Unmanaged" #~ msgstr "%s não geridos" #, javascript-format #~ msgid "%s Connecting" #~ msgstr "%s a ligar" #, javascript-format #~ msgid "%s Requires Authentication" #~ msgstr "%s requer autenticação" #, javascript-format #~ msgid "Firmware Missing For %s" #~ msgstr "Firmware em falta para %s" #, javascript-format #~ msgid "%s Unavailable" #~ msgstr "%s indisponível" #, javascript-format #~ msgid "%s Connection Failed" #~ msgstr "Falha na ligação %s" #, javascript-format #~ msgid "%s Hardware Disabled" #~ msgstr "Equipamento %s desativado" #, javascript-format #~ msgid "%s Disabled" #~ msgstr "%s desativado" #~ msgid "Connect to Internet" #~ msgstr "Ligar à Internet" #~ msgid "Airplane Mode is On" #~ msgstr "Modo avião está ligado" #~ msgid "Wi-Fi is disabled when airplane mode is on." #~ msgstr "O Wi-Fi é desativado quando o modo de avião é ligado." #~ msgid "Turn Off Airplane Mode" #~ msgstr "Desligar modo avião" #~ msgid "Wi-Fi is Off" #~ msgstr "Wi-Fi está desligado" #~ msgid "Wi-Fi needs to be turned on in order to connect to a network." #~ msgstr "O Wi-Fi tem de ser ligado para se poder ligar a uma rede." #~ msgid "Turn On Wi-Fi" #~ msgstr "Ligar o Wi-Fi" #~ msgid "Select a network" #~ msgstr "Selecionar uma rede" #~ msgid "Use hardware switch to turn off" #~ msgstr "Usar o interruptor físico para desligar" #~ msgid "Select Network" #~ msgstr "Selecionar rede" #~ msgid "Wi-Fi Settings" #~ msgstr "Definições de Wi-Fi" #, javascript-format #~ msgid "%s Not Connected" #~ msgstr "%s não ligado" #~ msgid "unknown" #~ msgstr "desconhecido" #~ msgid "connecting…" #~ msgstr "a ligar…" #~ msgid "authentication required" #~ msgstr "autenticação necessária" #~ msgid "connection failed" #~ msgstr "falha ao ligar" #~ msgid "VPN Off" #~ msgstr "VPN desligada" #, javascript-format #~ msgid "%s Wi-Fi Connection" #~ msgid_plural "%s Wi-Fi Connections" #~ msgstr[0] "%s ligação Wi-Fi" #~ msgstr[1] "%s ligações Wi-Fi" #~ msgid "Lock" #~ msgstr "Bloquear" #~ msgid "Power Off / Log Out" #~ msgstr "Desligar / Sair" #~ msgid "Bluetooth On" #~ msgstr "Bluetooth ligado" #~ msgid "Bluetooth Off" #~ msgstr "Bluetooth desligado" #~ msgid "Night Light Disabled" #~ msgstr "Luz noturna desligada" #~ msgid "Resume" #~ msgstr "Retomar" #~ msgid "Disable Until Tomorrow" #~ msgstr "Desligar até amanhã" #~ msgid "Fully Charged" #~ msgstr "Totalmente carregado" #~ msgid "Not Charging" #~ msgstr "Não está a carregar" #~ msgid "Estimating…" #~ msgstr "A estimar…" #, javascript-format #~ msgid "%d∶%02d Remaining (%d %%)" #~ msgstr "%d∶%02d restantes (%d%%)" #, javascript-format #~ msgid "%d∶%02d Until Full (%d %%)" #~ msgstr "%d∶%02d até estar cheio (%d%%)" #~ msgid "Location In Use" #~ msgstr "Localização em uso" #~ msgid "Location Disabled" #~ msgstr "Localização desativada" #~ msgid "Screen is Being Shared" #~ msgstr "O ecrã está a ser partilhado" #~ msgid "Turn off" #~ msgstr "Desligar" #~ msgid "Show screenshot UI" #~ msgstr "Mostrar a interface da captura de ecrã" #~ msgid "Screen Recording in Progress" #~ msgstr "Gravação de ecrã em curso" #~ msgid "Stop" #~ msgstr "Parar" #~ msgid "Author" #~ msgstr "Autor" #~ msgid "Warning" #~ msgstr "Aviso" #~ msgid "" #~ "Extensions can cause system issues, including performance problems. If " #~ "you encounter problems with your system, it is recommended to disable all " #~ "extensions." #~ msgstr "" #~ "As extensões podem causar problemas no sistema, incluindo problemas de " #~ "desempenho. Se o sistema apresentar problemas, é recomendável desativar " #~ "todas as extensões." #~ msgid "Remove from Favorites" #~ msgstr "Remover dos favoritos" #~ msgid "Add to Favorites" #~ msgstr "Adicionar aos favoritos" #~ msgid "Enable introspection API" #~ msgstr "Ativar API de introspecção" #~ msgid "" #~ "Enables a D-Bus API that allows to introspect the application state of " #~ "the shell." #~ msgstr "" #~ "Ativa uma API de D-Bus que permite a introspeção do estado de aplicação " #~ "da \"Shell\"." #~ msgid "Failed to connect to GNOME Shell" #~ msgstr "Ligar à Interface GNOME falhou" #~ msgid "Minimize" #~ msgstr "Minimizar" #~ msgid "Unmaximize" #~ msgstr "Desmaximizar" #~ msgid "App Picker View" #~ msgstr "Vista de escolha de aplicações" #~ msgid "Index of the currently selected view in the application picker." #~ msgstr "Índice da vista atualmente selecionada na escolha de aplicações." #~| msgid "Unable to connect to %s" #~ msgid "Failed to connect to GNOME Shell \n" #~ msgstr "Ligar à Interface GNOME falhou \n" #~ msgid "" #~ "Keybinding that pauses and resumes all running tweens, for debugging " #~ "purposes" #~ msgstr "" #~ "Atalho de teclado que pausa e retoma todos os tweens em execução, para " #~ "depuração de erros" #~ msgid "Which keyboard to use" #~ msgstr "Que teclado utilizar" #~ msgid "The type of keyboard to use." #~ msgstr "O tipo de teclado a utilizar." #~ msgid "network-workgroup" #~ msgstr "network-workgroup" #~ msgid "There was an error loading the preferences dialog for %s:" #~ msgstr "Ocorreu um erro ao ler o diálogo de preferências de %s:" #~ msgid "Next" #~ msgstr "Seguinte" #~ msgctxt "button" #~ msgid "Sign In" #~ msgstr "Iniciar sessão" #~ msgid "Web Authentication Redirect" #~ msgstr "Autenticação Web redirecionada" #~ msgid "Frequently used applications will appear here" #~ msgstr "As aplicações frequentemente utilizadas aparecem aqui" #~ msgid "Frequent" #~ msgstr "Frequentes" #~ msgid "All" #~ msgstr "Todas" #~ msgid "Events" #~ msgstr "Eventos" #~ msgctxt "calendar heading" #~ msgid "%A, %B %d, %Y" #~ msgstr "%A, %B %d, %Y" #~ msgid "Password:" #~ msgstr "Senha:" #~ msgid "Type again:" #~ msgstr "Insira novamente:" #~ msgid "Password: " #~ msgstr "Senha: " #~ msgid "Authentication required by wireless network" #~ msgstr "A rede sem fios requer autenticação" #~ msgid "Mobile broadband network password" #~ msgstr "Senha da rede de banda larga móvel" #~ msgid "Hide tray" #~ msgstr "Ocultar tabuleiro" #~ msgid "Status Icons" #~ msgstr "Ícones de estado" #~ msgid "Media" #~ msgstr "Média" #~ msgid "toggle-switch-us" #~ msgstr "toggle-switch-intl" #~ msgid "%d new message" #~ msgid_plural "%d new messages" #~ msgstr[0] "%d nova mensagem" #~ msgstr[1] "%d novas mensagens" #~ msgid "Account Settings" #~ msgstr "Definições de conta" #~ msgid "Orientation Lock" #~ msgstr "Orientação de bloqueio" #~ msgid "%d x %d" #~ msgstr "%d x %d" #~ msgid "Show the week date in the calendar" #~ msgstr "Mostrar o número da semana no calendário" #~ msgid "If true, display the ISO week date in the calendar." #~ msgstr "Se verdadeiro, mostra o número ISO da semana no calendário." #~ msgid "Use as Internet connection" #~ msgstr "Utilizar como ligação à Internet" #~ msgid "%s is requesting access to your location." #~ msgstr "%s está a pedir acesso à sua localização." #~ msgid "GNOME Shell (wayland compositor)" #~ msgstr "Interface GNOME (compositor wayland)" #~ msgid "%d Connected Device" #~ msgid_plural "%d Connected Devices" #~ msgstr[0] "%d Dispositivo ligado" #~ msgstr[1] "%d Dispositivos ligados" #~ msgid "UPS" #~ msgstr "UPS" #~ msgid "Battery" #~ msgstr "Bateria" #~ msgid "On" #~ msgstr "Ligado" #~ msgid "Show the message tray" #~ msgstr "Apresentar a zona de notificações" #~ msgctxt "event list time" #~ msgid "%H∶%M" #~ msgstr "%H:%M" #~ msgctxt "event list time" #~ msgid "%l∶%M %p" #~ msgstr "%l:%M %p" #~ msgctxt "list sunday" #~ msgid "Su" #~ msgstr "Dom" #~ msgctxt "list monday" #~ msgid "M" #~ msgstr "Seg" #~ msgctxt "list tuesday" #~ msgid "T" #~ msgstr "Ter" #~ msgctxt "list wednesday" #~ msgid "W" #~ msgstr "Qua" #~ msgctxt "list thursday" #~ msgid "Th" #~ msgstr "Qui" #~ msgctxt "list friday" #~ msgid "F" #~ msgstr "Sex" #~ msgctxt "list saturday" #~ msgid "S" #~ msgstr "Sáb" #~ msgid "Nothing Scheduled" #~ msgstr "Nada Agendado" #~ msgid "This week" #~ msgstr "Esta semana" #~ msgid "Next week" #~ msgstr "Próxima semana" #~ msgid "Removable Devices" #~ msgstr "Dispositivos Removíveis" #~ msgid "Eject" #~ msgstr "Ejetar" #~ msgid "Invitation" #~ msgstr "Convite" #~ msgid "Call" #~ msgstr "Chamada" #~ msgid "File Transfer" #~ msgstr "Transferência de Ficheiro" #~ msgid "Chat" #~ msgstr "Diálogo" #~ msgid "Invitation to %s" #~ msgstr "Convite para %s" #~ msgid "%s is inviting you to join %s" #~ msgstr "%s está a convidá-lo para se juntar a %s" #~ msgid "Decline" #~ msgstr "Recusar" #~ msgid "Accept" #~ msgstr "Aceitar" #~ msgid "Video call from %s" #~ msgstr "Chamada vídeo de %s" #~ msgid "Call from %s" #~ msgstr "Chamada de %s" #~ msgid "Answer" #~ msgstr "Atender" #~ msgid "%s is sending you %s" #~ msgstr "%s está a enviar-lhe %s" #~ msgid "%s would like permission to see when you are online" #~ msgstr "%s deseja a sua autorização para ver quando está ligado" #~ msgid "Authentication failed" #~ msgstr "Falha na autenticação" #~ msgid "Encryption error" #~ msgstr "Erro de encriptação" #~ msgid "Certificate not provided" #~ msgstr "Não foi disponibilizado o certificado" #~ msgid "Certificate untrusted" #~ msgstr "Certificado não é de confiança" #~ msgid "Certificate expired" #~ msgstr "Certificado expirou" #~ msgid "Certificate not activated" #~ msgstr "Certificado não está ativo" #~ msgid "Certificate hostname mismatch" #~ msgstr "Nome de máquina incorreto no certificado" #~ msgid "Certificate fingerprint mismatch" #~ msgstr "Impressão digital incorreta no certificado" #~ msgid "Certificate self-signed" #~ msgstr "Certificado assinado pelo próprio" #~ msgid "Status is set to offline" #~ msgstr "Estado definido como desligado" #~ msgid "Certificate is invalid" #~ msgstr "Certificado inválido" #~ msgid "Connection has been refused" #~ msgstr "A ligação foi recusada" #~ msgid "Connection can't be established" #~ msgstr "Incapaz de estabelecer a ligação" #~ msgid "Connection has been lost" #~ msgstr "A ligação foi perdida" #~ msgid "This account is already connected to the server" #~ msgstr "Esta conta já se encontra ligada ao servidor" #~ msgid "" #~ "Connection has been replaced by a new connection using the same resource" #~ msgstr "" #~ "A ligação foi substituída por uma nova ligação utilizando o mesmo recurso" #~ msgid "The account already exists on the server" #~ msgstr "A conta já existe no servidor" #~ msgid "Server is currently too busy to handle the connection" #~ msgstr "O servidor está de momento demasiado ocupado para gerir a ligação" #~ msgid "Certificate has been revoked" #~ msgstr "Certificado foi revogado" #~ msgid "" #~ "Certificate uses an insecure cipher algorithm or is cryptographically weak" #~ msgstr "" #~ "Certificado tem um algoritmo de cifra inseguro ou é criptologicamente " #~ "fraco" #~ msgid "" #~ "The length of the server certificate, or the depth of the server " #~ "certificate chain, exceed the limits imposed by the cryptography library" #~ msgstr "" #~ "O comprimento do certificado do servidor ou a profundidade da hierarquia " #~ "do certificado do servidor excede os limites impostos pela biblioteca " #~ "criptográfica" #~ msgid "Internal error" #~ msgstr "Erro interno" #~ msgid "View account" #~ msgstr "Visualizar a conta" #~ msgid "Open Calendar" #~ msgstr "Abrir o Calendário" #~ msgid "Open" #~ msgstr "Abrir" #~ msgid "Clear Messages" #~ msgstr "Limpar Mensagens" #~ msgid "Notification Settings" #~ msgstr "Definições de Notificação" #~ msgid "No Messages" #~ msgstr "Nenhuma Mensagem" #~ msgid "Message Tray" #~ msgstr "Zona de Notificações" #~ msgid "Captive Portal" #~ msgstr "Portal Cativo" #~ msgid "The maximum accuracy level of location." #~ msgstr "O nível máximo de precisão de localização." #~ msgid "" #~ "Configures the maximum level of location accuracy applications are " #~ "allowed to see. Valid options are 'off' (disable location tracking), " #~ "'country', 'city', 'neighborhood', 'street', and 'exact' (typically " #~ "requires GPS receiver). Please keep in mind that this only controls what " #~ "GeoClue will allow applications to see and they can find user's location " #~ "on their own using network resources (albeit with street-level accuracy " #~ "at best)." #~ msgstr "" #~ "Configura o nível máximo de precisão de localização que é permitido às " #~ "aplicações ver. Opções válidas são 'off' (desativa o rastreamento de " #~ "posição), 'country' (país), 'city' (cidade), 'neighborhood' (bairro), " #~ "'street' (rua) e 'exact' (exata) (por norma requer um receptor GPS). Note " #~ "que isto apenas controla o que o GeoClue irá permitir às aplicações ver e " #~ "elas poderão encontrar a localização do utilizador por si, utilizando " #~ "recursos de rede (com uma precisão máxima de nível de rua)." #~ msgid "Arrangement of buttons on the titlebar" #~ msgstr "Organização dos botões na barra de título" #~ msgid "" #~ "This key overrides the key in org.gnome.desktop.wm.preferences when " #~ "running GNOME Shell." #~ msgstr "" #~ "Esta chave sobrepõe a chave em org.gnome.desktop.wm.preferences ao " #~ "executar o GNOME Shell." #~ msgid "Select an extension to configure using the combobox above." #~ msgstr "" #~ "Selecione uma extensão a configurar utilizando a caixa de seleção acima." #~ msgid "calendar:MY" #~ msgstr "calendário:MY" #~ msgid "List of categories that should be displayed as folders" #~ msgstr "Lista de categorias que deveriam ser apresentadas como pastas" #~ msgid "" #~ "Each category name in this list will be represented as folder in the " #~ "application view, rather than being displayed inline in the main view." #~ msgstr "" #~ "Cada nome de categoria nesta lista será representada como uma pasta na " #~ "vista de aplicações, em vez de ser apresentada embutira na vista " #~ "principal." #~ msgid "%A, %H:%M" #~ msgstr "%A, %H:%M" #~ msgid "%B %d, %H:%M" #~ msgstr "%d de %B, %H:%M" #~ msgid "%B %d %Y, %H:%M " #~ msgstr "%d de %B de %Y, %H:%M" #~ msgid "Authorization request from %s" #~ msgstr "Pedido de autorização de %s" #~ msgid "Device %s wants to pair with this computer" #~ msgstr "O dispositivo %s deseja emparelhar com este computador" #~ msgid "Device %s wants access to the service '%s'" #~ msgstr "O dispositivo %s deseja aceder ao serviço '%s'" #~ msgid "Grant this time only" #~ msgstr "Conceder apenas desta vez" #~ msgid "Reject" #~ msgstr "Rejeitar" #~ msgid "Pairing confirmation for %s" #~ msgstr "Confirmação de emparelhamento para %s" #~ msgid "" #~ "Please confirm whether the Passkey '%06d' matches the one on the device." #~ msgstr "Por favor, confirme se a chave '%06d' corresponde à do dispositivo." #~ msgid "Does not match" #~ msgstr "Não coincide" #~ msgid "Pairing request for %s" #~ msgstr "Pedido de emparelhamento de %s" #~ msgid "Please enter the PIN mentioned on the device." #~ msgstr "Introduza o PIN indicado no dispositivo." #~ msgid "OK" #~ msgstr "OK" #~ msgid "" #~ "Sorry, no wisdom for you today:\n" #~ "%s" #~ msgstr "" #~ "Hoje não há nenhuma pérola de sabedoria:\n" #~ "%s" #~ msgid "%s the Oracle says" #~ msgstr "%s, o Oráculo, diz" #~ msgctxt "event list time" #~ msgid "%H\\u2236%M" #~ msgstr "%H\\u2236%M" #~ msgctxt "event list time" #~ msgid "%l\\u2236%M\\u2009%p" #~ msgstr "%l\\u2236%M\\u2009%p" #~ msgid "Whether to collect stats about applications usage" #~ msgstr "Se recolher ou não estatísticas sobre a utilização das aplicações" #~ msgid "" #~ "The shell normally monitors active applications in order to present the " #~ "most used ones (e.g. in launchers). While this data will be kept private, " #~ "you may want to disable this for privacy reasons. Please note that doing " #~ "so won't remove already saved data." #~ msgstr "" #~ "O interface normalmente monitoriza aplicações ativas de forma a " #~ "apresentar as mais utilizadas (por ex: nos iniciadores). Apesar destes " #~ "dados permanecerem privados, poderá desejar desativar a funcionalidade " #~ "por questões de privacidade. Note que ao fazê-lo não irá remover os dados " #~ "até à data gravados." #~ msgid "" #~ "Internally used to store the last IM presence explicitly set by the user. " #~ "The value here is from the TpConnectionPresenceType enumeration." #~ msgstr "" #~ "Utilizado internamente para armazenar a última presença de Mensagens " #~ "Instantâneas explicitamente definida pelo utilizador. Este valor consta " #~ "da enumeração TpConnectionPresenceType." #~ msgid "" #~ "Internally used to store the last session presence status for the user. " #~ "The value here is from the GsmPresenceStatus enumeration." #~ msgstr "" #~ "Utilizado internamente para armazenar o último estado de presença de " #~ "sessão do utilizador. Este valor consta da enumeração GsmPresenceStatus." #~ msgid "Keybinding to toggle the screen recorder" #~ msgstr "Atalho de teclado para alternar o gravador de ecrã" #~ msgid "Keybinding to start/stop the builtin screen recorder." #~ msgstr "Atalho de teclado para alternar o gravador de ecrã." #~ msgid "Framerate used for recording screencasts." #~ msgstr "Taxa de imagens utilizada para a gravação das transmissões de ecrã." #~ msgid "" #~ "The framerate of the resulting screencast recordered by GNOME Shell's " #~ "screencast recorder in frames-per-second." #~ msgstr "" #~ "A taxa de imagens da transmissão de ecrã resultante gravada através do " #~ "gravador de transmissões de ecrã do Interface GNOME, em imagens por " #~ "segundo." #~ msgid "The gstreamer pipeline used to encode the screencast" #~ msgstr "O canal gstreamer utilizado para codificar a transmissão de ecrã" #~ msgid "" #~ "Sets the GStreamer pipeline used to encode recordings. It follows the " #~ "syntax used for gst-launch. The pipeline should have an unconnected sink " #~ "pad where the recorded video is recorded. It will normally have a " #~ "unconnected source pad; output from that pad will be written into the " #~ "output file. However the pipeline can also take care of its own output - " #~ "this might be used to send the output to an icecast server via shout2send " #~ "or similar. When unset or set to an empty value, the default pipeline " #~ "will be used. This is currently 'vp8enc min_quantizer=13 max_quantizer=13 " #~ "cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux' and records to " #~ "WEBM using the VP8 codec. %T is used as a placeholder for a guess at the " #~ "optimal thread count on the system." #~ msgstr "" #~ "Define o canal GStreamer utilizado para codificar as gravações. Segue a " #~ "sintaxe utilizada para o gst-launch. O canal deverá ter um ponto de saída " #~ "desligado onde o vídeo gravado é gravado. Terá normalmente um ponto de " #~ "entrada desligado; o resultado desse ponto será escrito no ficheiro de " #~ "saída. No entanto, o canal poderá tratar da sua própria saída - tal " #~ "poderá ser utilizado para enviar o resultado para um servidor icecast " #~ "através do shout2send ou semelhante. Quando não definido ou definido com " #~ "um valor vazio, será utilizado o canal por omissão. Este é atualmente " #~ "'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 " #~ "threads=%T ! queue ! webmmux' e grava para WEBM utilizando o codec VP8. " #~ "%T é utilizado como uma variável para se tentar inferir o número ótimo de " #~ "threads no sistema." #~ msgid "File extension used for storing the screencast" #~ msgstr "Extensão de ficheiro utilizado para armazenar a transmissão de ecrã" #~ msgid "" #~ "The filename for recorded screencasts will be a unique filename based on " #~ "the current date, and use this extension. It should be changed when " #~ "recording to a different container format." #~ msgstr "" #~ "O nome do ficheiro da transmissão de ecrã gravada será um nome único " #~ "baseado na data atual e utilizará esta extensão. Deverá ser alterada " #~ "quando se gravar para um formato de conteúdo diferente." 0707010000025B000081A40000000000000000000000016712993F0001D891000000000000000000000000000000000000001D00000000gnome-shell-47.1/po/pt_BR.po# Portuguese translations for gnome-shell package. # Copyright (C) 2024 THE gnome-shell'S COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-shell package. # Og Maciel , 2009. # Rodrigo Flores , 2009. # Felipe Borges , 2010. # Henrique P. Machado , 2010, 2011. # Jonh Wendell , 2010. # Rodrigo Padula , 2011. # Gabriel F. Vilar , 2011. # Adorilson Bezerra , 2011, 2014. # Djavan Fagundes , 2012. # Juan Diego Martins da Costa Cruz , 2013. # Fábio Nogueira , 2014. # Georges Basile Stavracas Neto , 2014. # Felipe Braga , 2015. # Artur de Aquino Morais , 2016. # Ricardo Silva Veloso , 2019. # Bruno Lopes , 2018, 2021. # Enrico Nicoletto , 2013-2019, 2021-2022. # Matheus Barbosa , 2022. # Leônidas Araújo , 2022-2023. # Rafael Fontenelle , 2013-2024. # msgid "" msgstr "" "Project-Id-Version: gnome-shell\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues/\n" "POT-Creation-Date: 2024-08-21 13:15+0000\n" "PO-Revision-Date: 2024-08-21 13:56-0300\n" "Last-Translator: Rafael Fontenelle \n" "Language-Team: Brazilian Portuguese \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: Gtranslator 46.1\n" "X-Project-Style: gnome\n" "X-DL-Team: pt_BR\n" "X-DL-Module: gnome-shell\n" "X-DL-Branch: main\n" "X-DL-Domain: po\n" "X-DL-State: Translating\n" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "Inicializadores de Aplicativos" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate pinned app 1" msgstr "Ativar aplicativo fixado 1" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate pinned app 2" msgstr "Ativar aplicativo fixado 2" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate pinned app 3" msgstr "Ativar aplicativo fixado 3" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate pinned app 4" msgstr "Ativar aplicativo fixado 4" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate pinned app 5" msgstr "Ativar aplicativo fixado 5" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate pinned app 6" msgstr "Ativar aplicativo fixado 6" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate pinned app 7" msgstr "Ativar aplicativo fixado 7" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate pinned app 8" msgstr "Ativar aplicativo fixado 8" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate pinned app 9" msgstr "Ativar aplicativo fixado 9" #: data/50-gnome-shell-launchers.xml:46 msgid "Open new window of pinned app 1" msgstr "Abrir nova janela do aplicativo fixado 1" #: data/50-gnome-shell-launchers.xml:50 msgid "Open new window of pinned app 2" msgstr "Abrir nova janela do aplicativo fixado 2" #: data/50-gnome-shell-launchers.xml:54 msgid "Open new window of pinned app 3" msgstr "Abrir nova janela do aplicativo fixado 3" #: data/50-gnome-shell-launchers.xml:58 msgid "Open new window of pinned app 4" msgstr "Abrir nova janela do aplicativo fixado 4" #: data/50-gnome-shell-launchers.xml:62 msgid "Open new window of pinned app 5" msgstr "Abrir nova janela do aplicativo fixado 5" #: data/50-gnome-shell-launchers.xml:66 msgid "Open new window of pinned app 6" msgstr "Abrir nova janela do aplicativo fixado 6" #: data/50-gnome-shell-launchers.xml:70 msgid "Open new window of pinned app 7" msgstr "Abrir nova janela do aplicativo fixado 7" #: data/50-gnome-shell-launchers.xml:74 msgid "Open new window of pinned app 8" msgstr "Abrir nova janela do aplicativo fixado 8" #: data/50-gnome-shell-launchers.xml:78 msgid "Open new window of pinned app 9" msgstr "Abrir nova janela do aplicativo fixado 9" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2274 msgid "Screenshots" msgstr "Capturas de tela" #: data/50-gnome-shell-screenshots.xml:9 #: data/org.gnome.shell.gschema.xml.in:287 msgid "Take a screenshot interactively" msgstr "Fazer uma captura de tela interativa" #: data/50-gnome-shell-screenshots.xml:12 #: data/org.gnome.shell.gschema.xml.in:299 msgid "Take a screenshot" msgstr "Fazer uma captura de tela" #: data/50-gnome-shell-screenshots.xml:15 #: data/org.gnome.shell.gschema.xml.in:295 msgid "Take a screenshot of a window" msgstr "Fazer uma captura de tela de uma janela" #: data/50-gnome-shell-screenshots.xml:18 #: data/org.gnome.shell.gschema.xml.in:291 msgid "Record a screencast interactively" msgstr "Fazer uma gravação de tela interativa" #: data/50-gnome-shell-system.xml:6 js/ui/messageTray.js:1298 msgid "System" msgstr "Sistema" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "Mostrar a lista de notificações" #: data/50-gnome-shell-system.xml:12 msgid "Open the quick settings menu" msgstr "Abrir o menu de configurações rápidas" #: data/50-gnome-shell-system.xml:15 msgid "Focus the active notification" msgstr "Focar na notificação ativa" #: data/50-gnome-shell-system.xml:18 msgid "Show the overview" msgstr "Mostrar o panorama" #: data/50-gnome-shell-system.xml:21 msgid "Show all apps" msgstr "Mostrar todos os aplicativos" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "GNOME Shell" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "Gerenciamento de janelas e inicializador de aplicativos" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" "Habilitar ferramentas internas úteis para desenvolvedores e testadores com " "as teclas Alt-F2" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Permite acesso a ferramentas internas de depuração e monitoramento usando o " "diálogo Alt-F2." #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "UUIDs das extensões a serem habilitadas" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "As extensões do GNOME Shell possuem uma propriedade UUID; esta chave lista " "as extensões que devem ser carregadas. Qualquer extensão que quiser ser " "carregada precisa estar nesta lista. Você também pode manipular esta lista " "com os métodos do DBus EnableExtension e DisableExtensions em org.gnome." "Shell." #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "UUIDs das extensões a serem desabilitadas de forma forçada" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" "As extensões do GNOME Shell possuem uma propriedade UUID; esta chave lista " "as extensões que devem ser desabilitadas, mesmo se carregadas pelo modo " "atual. Você também pode manipular esta lista com os métodos do DBus " "EnableExtension e DisableExtensions em org.gnome.Shell. Essa chave leva " "precedência sobre a configuração “enabled-extensions” (extensões " "habilitadas)." #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "Desabilitar extensões do usuário" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" "Desabilita todas as extensões que o usuário habilitou sem afetar a definição " "de “enabled-extension” (extensões habilitadas)." #: data/org.gnome.shell.gschema.xml.in:45 msgid "Allow extension installation" msgstr "Permitir instalação de extensões" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "Allow users to install extensions in their home folder. If disabled, the " "InstallRemoteExtension D-Bus method will fail, and extensions are only " "loaded from system directories on startup. It does not affect extensions " "that are already loaded, so a change only takes full effect on the next " "login." msgstr "" "Permite que usuários instalem extensões em seu diretório pessoal. Se " "desabilitado, o metódo D-Bus InstallRemoteExtension falhará, e extensões " "serão instaladas só de diretórios do sistema na inicialização do sistema. " "Isso não afeta extensões que já estão carregadas, e alterações nessa " "configuração só terão efeito no próximo inicio de sessão." #: data/org.gnome.shell.gschema.xml.in:56 msgid "Disables the validation of extension version compatibility" msgstr "Desabilita a validação de compatibilidade da versão da extensão" #: data/org.gnome.shell.gschema.xml.in:57 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "O GNOME Shell carregará somente extensões que declaram possuir suporte a " "versão atual do seu sistema. Ao habilitar esta opção, esta verificação será " "desabilitada e o GNOME Shell tentará carregar todas as extensões sem " "importar quais versões são suportadas." #: data/org.gnome.shell.gschema.xml.in:65 msgid "List of desktop file IDs for favorite applications" msgstr "" "Lista dos IDs de arquivo da área de trabalho para os aplicativos favoritos" #: data/org.gnome.shell.gschema.xml.in:66 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" "Os aplicativos correspondentes a estes identificadores serão exibidos na " "área de favoritos." #: data/org.gnome.shell.gschema.xml.in:73 msgid "History for command (Alt-F2) dialog" msgstr "Histórico dos diálogos de comandos (Alt-F2)" #. Translators: looking glass is a debugger and inspector tool, see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/docs/looking-glass.md #: data/org.gnome.shell.gschema.xml.in:78 msgid "History for the looking glass dialog" msgstr "Histórico dos diálogos do aplicativo looking glass" #: data/org.gnome.shell.gschema.xml.in:82 msgid "Always show the “Log Out” action in the system menu" msgstr "Sempre mostrar a ação “Encerrar seção” no menu do sistema" #: data/org.gnome.shell.gschema.xml.in:83 msgid "" "This key overrides the automatic hiding of the “Log out” action in the " "system menu for logged-in situations where there is a single, local, non-" "system user and only a single available session type (e.g. GNOME on Wayland)." msgstr "" "Esta chave substitui a ocultação automática da ação “Encerrar seção” no menu " "do sistema para situações de login onde há um único usuário local, não " "pertencente ao sistema, e apenas um único tipo de sessão disponível (por " "exemplo, GNOME no Wayland)." #: data/org.gnome.shell.gschema.xml.in:92 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "Opção para lembrar ou não das senhas de sistemas de arquivos criptografados " "ou remotos" #: data/org.gnome.shell.gschema.xml.in:93 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "O shell irá pedir uma senha quando um dispositivo criptografado ou um " "sistema de arquivo remoto for montado. Caso a senha possa ser salva para uso " "posterior, a caixa de seleção “Lembrar senha” estará presente. Esta chave " "ajusta o estado padrão da caixa de seleção." #: data/org.gnome.shell.gschema.xml.in:102 msgid "The last selected non-default power profile" msgstr "O último perfil de energia não padrão selecionado" #: data/org.gnome.shell.gschema.xml.in:103 msgid "" "Some systems support more than two power profiles. In order to still support " "toggling between two profiles, this key records the last selected non-" "default profile." msgstr "" "Alguns sistemas suportam mais de dois perfis de energia. Para ainda oferecer " "suporte à alternância entre dois perfis, essa chave registra o último perfil " "não-padrão selecionado." #: data/org.gnome.shell.gschema.xml.in:111 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "" "A última versão para qual a caixa de diálogo “Bem-vindo ao GNOME” foi exibida" #: data/org.gnome.shell.gschema.xml.in:112 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can " "be used to effectively disable the dialog." msgstr "" "Esta chave determina para qual versão a caixa de diálogo “Bem-vindo ao " "GNOME” foi exibida pela última vez. Um texto vazio representa a versão mais " "antiga possível, e um número muito grande representa versões que ainda não " "existem. Um número muito grande pode ser usado para desativar essa caixa de " "diálogo." #: data/org.gnome.shell.gschema.xml.in:145 msgid "Layout of the app picker" msgstr "Layout do seletor de aplicativo" #: data/org.gnome.shell.gschema.xml.in:146 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" msgstr "" "Layout do seletor de aplicativo. Cada entrada na matriz é uma página. As " "páginas são armazenadas na ordem em que aparecem no GNOME Shell. Cada página " "contém um par “id do aplicativo” → “dados”. Atualmente, os seguintes valores " "são armazenados como “dados”: • “posição”: a posição do ícone do aplicativo " "na página" #: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:172 msgid "Keybinding to shift between overview states" msgstr "Atalho de teclado para alternar entre estados de panorama" #: data/org.gnome.shell.gschema.xml.in:166 msgid "Keybinding to shift between session, window picker and app grid" msgstr "" "Atalho de teclado para alternar entre sessão, seletor de janelas e a lista " "de aplicativos" #: data/org.gnome.shell.gschema.xml.in:173 msgid "Keybinding to shift between app grid, window picker and session" msgstr "" "Atalho de teclado para alternar entre lista de aplicativos, seletor de " "janelas e sessão" #: data/org.gnome.shell.gschema.xml.in:179 msgid "Keybinding to open the “Show Applications” view" msgstr "Atalho de teclado para abrir a visualização “Mostrar aplicativos”" #: data/org.gnome.shell.gschema.xml.in:180 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "" "Atalho de teclado para abrir a visualização “Mostrar aplicativos” do " "panorama de atividades." #: data/org.gnome.shell.gschema.xml.in:187 msgid "Keybinding to open the overview" msgstr "Atalho de teclado para abrir o panorama" #: data/org.gnome.shell.gschema.xml.in:188 msgid "Keybinding to open the Activities Overview." msgstr "Atalho de teclado para abrir o panorama de atividades." #: data/org.gnome.shell.gschema.xml.in:194 msgid "Keybinding to toggle the visibility of the notification list" msgstr "" "Atalho de teclado para habilitar/desabilitar a visibilidade da lista de " "notificação" #: data/org.gnome.shell.gschema.xml.in:195 msgid "Keybinding to toggle the visibility of the notification list." msgstr "" "Atalho de teclado para habilitar/desabilitar a visibilidade da lista de " "notificação." #: data/org.gnome.shell.gschema.xml.in:201 msgid "Keybinding to toggle the quick settings menu" msgstr "" "Atalho de teclado para habilitar/desabilitar o menu de configurações rápidas" #: data/org.gnome.shell.gschema.xml.in:202 msgid "Keybinding to toggle the quick settings menu." msgstr "" "Atalho de teclado para habilitar/desabilitar o menu de configurações rápidas." #: data/org.gnome.shell.gschema.xml.in:208 msgid "Keybinding to focus the active notification" msgstr "Atalho de teclado para focar a notificação ativa" #: data/org.gnome.shell.gschema.xml.in:209 msgid "Keybinding to focus the active notification." msgstr "Atalho de teclado para focar a notificação ativa." #: data/org.gnome.shell.gschema.xml.in:215 msgid "Switch to application 1" msgstr "Alternar para o aplicativo 1" #: data/org.gnome.shell.gschema.xml.in:219 msgid "Switch to application 2" msgstr "Alternar para o aplicativo 2" #: data/org.gnome.shell.gschema.xml.in:223 msgid "Switch to application 3" msgstr "Alternar para o aplicativo 3" #: data/org.gnome.shell.gschema.xml.in:227 msgid "Switch to application 4" msgstr "Alternar para o aplicativo 4" #: data/org.gnome.shell.gschema.xml.in:231 msgid "Switch to application 5" msgstr "Alternar para o aplicativo 5" #: data/org.gnome.shell.gschema.xml.in:235 msgid "Switch to application 6" msgstr "Alternar para o aplicativo 6" #: data/org.gnome.shell.gschema.xml.in:239 msgid "Switch to application 7" msgstr "Alternar para o aplicativo 7" #: data/org.gnome.shell.gschema.xml.in:243 msgid "Switch to application 8" msgstr "Alternar para o aplicativo 8" #: data/org.gnome.shell.gschema.xml.in:247 msgid "Switch to application 9" msgstr "Alternar para o aplicativo 9" #: data/org.gnome.shell.gschema.xml.in:251 msgid "Open a new instance of application 1" msgstr "Abrir uma nova instância do aplicativo 1" #: data/org.gnome.shell.gschema.xml.in:255 msgid "Open a new instance of application 2" msgstr "Abrir uma nova instância do aplicativo 2" #: data/org.gnome.shell.gschema.xml.in:259 msgid "Open a new instance of application 3" msgstr "Abrir uma nova instância do aplicativo 3" #: data/org.gnome.shell.gschema.xml.in:263 msgid "Open a new instance of application 4" msgstr "Abrir uma nova instância do aplicativo 4" #: data/org.gnome.shell.gschema.xml.in:267 msgid "Open a new instance of application 5" msgstr "Abrir uma nova instância do aplicativo 5" #: data/org.gnome.shell.gschema.xml.in:271 msgid "Open a new instance of application 6" msgstr "Abrir uma nova instância do aplicativo 6" #: data/org.gnome.shell.gschema.xml.in:275 msgid "Open a new instance of application 7" msgstr "Abrir uma nova instância do aplicativo 7" #: data/org.gnome.shell.gschema.xml.in:279 msgid "Open a new instance of application 8" msgstr "Abrir uma nova instância do aplicativo 8" #: data/org.gnome.shell.gschema.xml.in:283 msgid "Open a new instance of application 9" msgstr "Abrir uma nova instância do aplicativo 9" #: data/org.gnome.shell.gschema.xml.in:308 #: data/org.gnome.shell.gschema.xml.in:335 msgid "Limit switcher to current workspace." msgstr "Limitar o alternador a aplicativos do espaço de trabalho atual." #: data/org.gnome.shell.gschema.xml.in:309 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "Se verdadeiro, o alternador mostrará somente os aplicativos que possuem " "janelas no espaço de trabalho atual. Caso contrário, todos os aplicativos " "serão incluídos." #: data/org.gnome.shell.gschema.xml.in:326 msgid "The application icon mode." msgstr "Modo dos ícones de aplicação" #: data/org.gnome.shell.gschema.xml.in:327 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-only” " "(shows only the application icon) or “both”." msgstr "" "Configura como as janelas são mostradas no alternador. As opções válidas são " "“thumbnail-only” (mostra uma miniatura da janela), “app-icon-only” (mostra " "apenas o ícone do aplicativo) ou “both” (ambas)." #: data/org.gnome.shell.gschema.xml.in:336 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "Se verdadeiro, o alternador mostrará somente as janelas do espaço de " "trabalho atual. Caso contrário, todas as janelas serão mostradas." #: data/org.gnome.shell.gschema.xml.in:346 msgid "Locations" msgstr "Locais" #: data/org.gnome.shell.gschema.xml.in:347 msgid "The locations to show in world clocks" msgstr "Os locais a serem mostrados nos relógios mundiais" #: data/org.gnome.shell.gschema.xml.in:357 msgid "Automatic location" msgstr "Local automático" #: data/org.gnome.shell.gschema.xml.in:358 msgid "Whether to fetch the current location or not" msgstr "Se deve-se obter o local atual ou não" #: data/org.gnome.shell.gschema.xml.in:365 msgid "Location" msgstr "Local" #: data/org.gnome.shell.gschema.xml.in:366 msgid "The location for which to show a forecast" msgstr "O local para o qual deve-se mostrar a previsão do tempo" #. Keep in sync with subprojects/extensions-app #: data/org.gnome.Shell.Extensions.desktop.in.in:5 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/data/ui/extensions-window.ui:57 msgid "Extensions" msgstr "Extensões" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "Sessão de Rede" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:275 msgid "Something’s gone wrong" msgstr "Algo deu errado" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" "Lamentamos, mas houve um problema: as configurações dessa extensão não podem " "ser exibidas. Recomendamos que você relate o problema aos autores da " "extensão." #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "Detalhes técnicos" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "Site" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 msgid "Visit extension homepage" msgstr "Visite a página web da extensão" #: js/gdm/authPrompt.js:151 js/gdm/loginDialog.js:466 #: js/ui/audioDeviceSelection.js:66 js/ui/components/networkAgent.js:113 #: js/ui/components/polkitAgent.js:144 js/ui/endSessionDialog.js:437 #: js/ui/extensionDownloader.js:276 js/ui/shellMountOperation.js:382 #: js/ui/shellMountOperation.js:392 msgid "Cancel" msgstr "Cancelar" #: js/gdm/authPrompt.js:317 js/ui/components/networkAgent.js:213 #: js/ui/components/networkAgent.js:233 js/ui/components/networkAgent.js:265 #: js/ui/components/networkAgent.js:298 js/ui/components/networkAgent.js:337 #: js/ui/components/networkAgent.js:350 js/ui/components/polkitAgent.js:286 #: js/ui/shellMountOperation.js:332 msgid "Password" msgstr "Senha" #: js/gdm/loginDialog.js:326 msgid "Choose Session" msgstr "Escolher sessão" #. Translators: is running for #: js/gdm/loginDialog.js:424 #, javascript-format msgid "" "Remote login is not possible because a remote session is already running for " "%s. To login remotely, you must log out from the remote session or force " "stop it." msgstr "" "O inicio de sessão remota não foi possível porque já existe uma sessão ativa " "para %s. Para iniciar uma sessão remota, você necessita primeiro desconectar " "sua sessão remota atual ou forçar sua parada." #. Translators: is running for #: js/gdm/loginDialog.js:427 #, javascript-format msgid "" "Login is not possible because a remote session is already running for %s. To " "login, you must log out from the remote session or force stop it." msgstr "" "O inicio de sessão não foi possível porque já existe uma sessão ativa para " "%s. Para iniciar uma sessão, você necessita primeiro desconectar sua sessão " "atual ou forçar sua parada." #. Translators: is running for #: js/gdm/loginDialog.js:430 #, javascript-format msgid "" "Remote login is not possible because a local session is already running for " "%s. To login remotely, you must log out from the local session or force stop " "it." msgstr "" "O inicio de sessão remota não foi possível porque já existe uma sessão local " "ativa para %s. Para iniciar uma sessão remota, você necessita primeiro " "desconectar sua sessão local atual ou forçar sua parada." #. Translators: is running for #: js/gdm/loginDialog.js:433 #, javascript-format msgid "" "Login is not possible because a session is already running for %s. To login, " "you must log out from the session or force stop it." msgstr "" "O inicio de sessão não foi possível porque já existe uma sessão ativa para " "%s. Para iniciar uma sessão, você necessita primeiro desconectar sua sessão " "atual ou forçar sua parada." #: js/gdm/loginDialog.js:442 msgid "Session Already Running" msgstr "A sessão já está em execução" #: js/gdm/loginDialog.js:454 msgid "" "Force stopping will quit any running apps and processes, and could result in " "data loss" msgstr "" "Uma parada forçada vai fechar todos os aplicativos e processos em execução, " "e pode resultar em perda de dados" #: js/gdm/loginDialog.js:474 msgid "Force Stop" msgstr "Forçar parada" #: js/gdm/loginDialog.js:542 msgid "Not listed?" msgstr "Não está na lista?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:1010 #, javascript-format msgid "(e.g., user or %s)" msgstr "(ex.: usuário ou %s)" #: js/gdm/loginDialog.js:1015 js/ui/components/networkAgent.js:257 #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:326 msgid "Username" msgstr "Nome de usuário" #: js/gdm/loginDialog.js:1081 msgid "Login Attempt Timed Out" msgstr "A tentativa de início de seção expirou" #: js/gdm/loginDialog.js:1082 msgid "Login took too long, please try again" msgstr "O início de seção demorou muito. Tente novamente" #: js/gdm/loginDialog.js:1431 msgid "Login Window" msgstr "Janela de início de seção" #: js/gdm/util.js:496 msgid "Authentication error" msgstr "Erro de autenticação" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:727 msgid "(or swipe finger across reader)" msgstr "(ou deslize o dedo pelo leitor de impressão digital)" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:732 msgid "(or place finger on reader)" msgstr "(ou coloque o dedo no leitor de impressão digital)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:91 msgctxt "search-result" msgid "Power Off" msgstr "Desligar" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:94 msgid "power off;poweroff;shutdown;halt;stop" msgstr "desligamento;desligar;parar" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:99 msgctxt "search-result" msgid "Restart" msgstr "Reiniciar" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:102 msgid "reboot;restart;" msgstr "reiniciar;reboot;" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:107 msgctxt "search-result" msgid "Lock Screen" msgstr "Bloquear tela" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:110 msgid "lock screen" msgstr "tela de bloqueio;protetor de tela" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:115 msgctxt "search-result" msgid "Log Out" msgstr "Encerrar sessão" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:118 msgid "logout;log out;sign off" msgstr "encerrar sessão;desconectar;sair;parar" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:123 msgctxt "search-result" msgid "Suspend" msgstr "Suspender" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:126 msgid "suspend;sleep" msgstr "suspender;dormir;hibernar" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:131 msgctxt "search-result" msgid "Switch User" msgstr "Trocar de usuário" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:134 msgid "switch user" msgstr "alternar usuário;trocar de usuário" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:141 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "bloqueio de orientação;desbloqueio de orientação;tela;rotação" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:146 msgctxt "search-result" msgid "Take a Screenshot" msgstr "Captura de tela" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:149 msgid "screenshot;screencast;snip;capture;record" msgstr "" "captura de tela;capturar tela;screencast;recorte;recortar;captura;capturar;" "gravação;gravar" #: js/misc/systemActions.js:249 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "Desbloquear rotação de tela" #: js/misc/systemActions.js:250 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "Bloquear rotação de tela" #: js/misc/util.js:130 msgid "Command not found" msgstr "Comando não encontrado" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:170 msgid "Could not parse command:" msgstr "Não foi possível analisar o comando:" #: js/misc/util.js:178 #, javascript-format msgid "Execution of “%s” failed:" msgstr "A execução de “%s” falhou:" #: js/misc/dateUtils.js:69 msgid "Just now" msgstr "Agora mesmo" #: js/misc/dateUtils.js:72 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d minuto atrás" msgstr[1] "%d minutos atrás" #: js/misc/dateUtils.js:79 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d hora atrás" msgstr[1] "%d horas atrás" #: js/misc/dateUtils.js:85 js/ui/dateMenu.js:183 msgid "Yesterday" msgstr "Ontem" #: js/misc/dateUtils.js:88 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d dia atrás" msgstr[1] "%d dias atrás" #: js/misc/dateUtils.js:95 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d semana atrás" msgstr[1] "%d semanas atrás" #: js/misc/dateUtils.js:102 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%d mês atrás" msgstr[1] "%d meses atrás" #: js/misc/dateUtils.js:108 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "%d ano atrás" msgstr[1] "%d anos atrás" #. Translators: Time in 24h format #: js/misc/dateUtils.js:155 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/dateUtils.js:161 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "Ontem, %H∶%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/dateUtils.js:167 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/dateUtils.js:173 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%-d de %B, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/dateUtils.js:179 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%-d de %B de %Y, %H∶%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/dateUtils.js:184 msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/dateUtils.js:190 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "Ontem, %l∶%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/dateUtils.js:196 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/dateUtils.js:202 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%-d de %B, %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/dateUtils.js:208 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%-d de %B de %Y, %l∶%M %p" #: js/portalHelper/main.js:98 msgid "Your connection seems to be secure" msgstr "Sua conexão parece ser segura" #: js/portalHelper/main.js:104 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "Sua conexão a esse ponto de acesso não é segura. Senhas e outras informações " "que você inserir nesta página podem ser vistas por pessoas nas proximidades." #: js/portalHelper/main.js:115 msgid "Hotspot Login" msgstr "Autenticação ao ponto de acesso" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:51 js/ui/inhibitShortcutsDialog.js:92 msgid "Deny" msgstr "Negar" #: js/ui/accessDialog.js:52 js/ui/inhibitShortcutsDialog.js:101 msgid "Allow" msgstr "Permitir" #: js/ui/appDisplay.js:1769 msgid "Unnamed Folder" msgstr "Pasta sem nome" #: js/ui/appFavorites.js:163 #, javascript-format msgid "%s has been pinned to the dash." msgstr "%s foi adicionado aos seus favoritos." #: js/ui/appFavorites.js:194 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "%s foi removido dos seus favoritos." #: js/ui/appFavorites.js:208 js/ui/main.js:281 msgid "Undo" msgstr "Desfazer" #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:49 msgid "Open Windows" msgstr "Janelas abertas" #: js/ui/appMenu.js:57 msgid "New Window" msgstr "Nova janela" #: js/ui/appMenu.js:84 msgid "App Details" msgstr "Detalhes do aplicativo" #: js/ui/appMenu.js:100 msgid "Quit" msgstr "Sair" #: js/ui/appMenu.js:160 js/ui/dash.js:248 msgid "Unpin" msgstr "Remover" #: js/ui/appMenu.js:161 msgid "Pin to Dash" msgstr "Adicionar aos favoritos" #: js/ui/appMenu.js:178 msgid "Launch using Integrated Graphics Card" msgstr "Iniciar usando placa de vídeo integrada" #: js/ui/appMenu.js:179 msgid "Launch using Discrete Graphics Card" msgstr "Iniciar usando placa de vídeo dedicada" #: js/ui/audioDeviceSelection.js:46 msgid "Select Audio Device" msgstr "Selecione o dispositivo de áudio" #: js/ui/audioDeviceSelection.js:61 js/ui/status/volume.js:81 msgid "Sound Settings" msgstr "Configurações de som" #: js/ui/audioDeviceSelection.js:74 msgid "Headphones" msgstr "Fones de ouvido" #: js/ui/audioDeviceSelection.js:76 msgid "Headset" msgstr "Fone de ouvido com microfone" #: js/ui/audioDeviceSelection.js:78 js/ui/status/volume.js:356 msgid "Microphone" msgstr "Microfone" #: js/ui/backgroundMenu.js:13 msgid "Change Background…" msgstr "Alterar o fundo de tela…" #: js/ui/backgroundMenu.js:15 msgid "Display Settings" msgstr "Configurações de tela" #: js/ui/backgroundMenu.js:16 msgid "Settings" msgstr "Configurações" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:37 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:63 msgctxt "grid sunday" msgid "S" msgstr "D" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:65 msgctxt "grid monday" msgid "M" msgstr "S" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:67 msgctxt "grid tuesday" msgid "T" msgstr "T" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:69 msgctxt "grid wednesday" msgid "W" msgstr "Q" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:71 msgctxt "grid thursday" msgid "T" msgstr "Q" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:73 msgctxt "grid friday" msgid "F" msgstr "S" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:75 msgctxt "grid saturday" msgid "S" msgstr "S" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:426 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:436 msgid "%OB %Y" msgstr "%OB de %Y" #: js/ui/calendar.js:498 msgid "Previous month" msgstr "Mês anterior" #: js/ui/calendar.js:516 msgid "Next month" msgstr "Próximo mês" #: js/ui/calendar.js:667 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:726 msgid "Week %V" msgstr "Semana %V" #: js/ui/calendar.js:918 msgid "No Notifications" msgstr "Nenhuma notificação" #: js/ui/calendar.js:974 msgid "Do Not Disturb" msgstr "Não perturbe" #: js/ui/calendar.js:995 msgid "Clear" msgstr "Limpar" #: js/ui/calendar.js:999 msgctxt "action" msgid "Clear all notifications" msgstr "Limpar todas as notificações" #. Translators: %s is an application name #: js/ui/closeDialog.js:42 #, javascript-format msgid "“%s” Is Not Responding" msgstr "“%s” não está respondendo" #: js/ui/closeDialog.js:43 msgid "" "You may choose to wait a short while for it to continue or force the app to " "quit entirely" msgstr "" "Você pode optar por esperar um pouco para ver se o aplicativo continua ou " "pode forçar que o aplicativo seja fechado completamente" #: js/ui/closeDialog.js:71 msgid "Force Quit" msgstr "Forçar saída" #: js/ui/closeDialog.js:76 msgid "Wait" msgstr "Esperar" #: js/ui/components/automountManager.js:82 msgid "External drive connected" msgstr "Unidade externa conectada" #: js/ui/components/automountManager.js:94 msgid "External drive disconnected" msgstr "Unidade externa desconectada" #: js/ui/components/automountManager.js:208 msgid "Unable to unlock volume" msgstr "Não foi possível desbloquear o volume" #: js/ui/components/automountManager.js:209 msgid "The installed udisks version does not support the PIM setting" msgstr "A versão do udisks instalado não possui suporte à configuração do PIM" #. Translators: %s is the name of a partition on a external drive #: js/ui/components/autorunManager.js:189 #, javascript-format msgid "“%s” connected" msgstr "“%s” conectado" #: js/ui/components/autorunManager.js:190 msgid "Disk can now be used" msgstr "O disco pode agora ser usado" #: js/ui/components/autorunManager.js:202 #, javascript-format msgid "Open with %s" msgstr "Abrir com %s" #: js/ui/components/networkAgent.js:95 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router" msgstr "" "Alternativamente, você pode conectar pressionando o botão “WPS” no seu " "roteador" #: js/ui/components/networkAgent.js:107 js/ui/status/bluetooth.js:245 #: js/ui/status/network.js:360 js/ui/status/network.js:444 msgid "Connect" msgstr "Conectar" #: js/ui/components/networkAgent.js:222 msgid "Key" msgstr "Chave" #: js/ui/components/networkAgent.js:273 js/ui/components/networkAgent.js:312 msgid "Private key password" msgstr "Senha da chave privada" #: js/ui/components/networkAgent.js:306 msgid "Identity" msgstr "Identidade" #: js/ui/components/networkAgent.js:332 msgid "Service" msgstr "Serviço" #: js/ui/components/networkAgent.js:370 js/ui/components/networkAgent.js:406 #: js/ui/components/networkAgent.js:743 js/ui/components/networkAgent.js:764 msgid "Authentication required" msgstr "Autenticação necessária" #: js/ui/components/networkAgent.js:371 js/ui/components/networkAgent.js:744 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network “%s”" msgstr "" "Senhas ou chaves criptografadas são necessárias para acessar a rede sem fio " "“%s”" #: js/ui/components/networkAgent.js:375 js/ui/components/networkAgent.js:748 msgid "Wired 802.1X authentication" msgstr "Autenticação 802.1X com cabo" #: js/ui/components/networkAgent.js:378 msgid "Network name" msgstr "Nome da rede" #: js/ui/components/networkAgent.js:386 js/ui/components/networkAgent.js:752 msgid "DSL authentication" msgstr "Autenticação DSL" #: js/ui/components/networkAgent.js:393 js/ui/components/networkAgent.js:757 msgid "PIN code required" msgstr "Código PIN necessario" #: js/ui/components/networkAgent.js:394 js/ui/components/networkAgent.js:758 msgid "PIN code is needed for the mobile broadband device" msgstr "O código PIN é necessário para o dispositivo móvel de banda larga" #: js/ui/components/networkAgent.js:396 msgid "PIN" msgstr "PIN" #: js/ui/components/networkAgent.js:407 js/ui/components/networkAgent.js:749 #: js/ui/components/networkAgent.js:753 js/ui/components/networkAgent.js:765 #: js/ui/components/networkAgent.js:769 #, javascript-format msgid "A password is required to connect to “%s”" msgstr "Uma senha é necessária para se conectar a “%s”" #: js/ui/components/networkAgent.js:768 msgid "VPN password" msgstr "Senha de VPN" #: js/ui/components/polkitAgent.js:44 msgid "Authentication Required" msgstr "Autenticação necessária" #: js/ui/components/polkitAgent.js:84 msgid "Administrator" msgstr "Administrador" #: js/ui/components/polkitAgent.js:149 msgid "Authenticate" msgstr "Autenticar" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:263 js/ui/shellMountOperation.js:415 msgid "Sorry, that didn’t work. Please try again." msgstr "Desculpe, essa tentativa falhou. Por favor, tente novamente." #: js/ui/ctrlAltTab.js:23 js/ui/overviewControls.js:404 msgid "Windows" msgstr "Janelas" #: js/ui/dash.js:204 js/ui/dash.js:250 msgid "Show Apps" msgstr "Mostrar aplicativos" #. Translators: this is the name of the dock/favorites area on #. the bottom of the overview #: js/ui/dash.js:408 msgid "Dash" msgstr "Favoritos" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:99 msgid "%B %-d %Y" msgstr "%-d de %B de %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:106 msgid "%A %B %e %Y" msgstr "%A, %e de %B de %Y" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:172 msgctxt "calendar heading" msgid "%B %-d" msgstr "%-d de %B" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:175 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%-d de %B de %Y" #: js/ui/dateMenu.js:181 msgid "Today" msgstr "Hoje" #: js/ui/dateMenu.js:185 msgid "Tomorrow" msgstr "Amanhã" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:216 msgctxt "event list time" msgid "All Day" msgstr "Dia todo" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:238 msgid "%m/%d" msgstr "%m/%d" #: js/ui/dateMenu.js:289 msgid "No Events" msgstr "Nenhum evento" #: js/ui/dateMenu.js:411 msgid "Add World Clocks…" msgstr "Adicionar relógios mundiais…" #: js/ui/dateMenu.js:412 msgid "World Clocks" msgstr "Relógios mundiais" #: js/ui/dateMenu.js:702 msgid "Loading…" msgstr "Carregando…" #: js/ui/dateMenu.js:712 msgid "Go Online for Weather Information" msgstr "Conecte-se à internet para obter as informações meteorológicas" #: js/ui/dateMenu.js:714 msgid "Weather Information Unavailable" msgstr "Informações meteorológicas não disponíveis" #: js/ui/dateMenu.js:724 msgid "Weather" msgstr "Meteorologia" #: js/ui/dateMenu.js:726 msgid "Select Weather Location…" msgstr "Selecionar um local para previsão do tempo…" #: js/ui/endSessionDialog.js:47 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "Encerrar sessão de %s" #: js/ui/endSessionDialog.js:48 msgctxt "title" msgid "Log Out" msgstr "Encerrar sessão" #: js/ui/endSessionDialog.js:51 #, javascript-format msgid "%s will be logged out automatically in %d second" msgid_plural "%s will be logged out automatically in %d seconds" msgstr[0] "%s encerrará a sessão automaticamente em %d segundo" msgstr[1] "%s encerrará a sessão automaticamente em %d segundos" #: js/ui/endSessionDialog.js:57 #, javascript-format msgid "You will be logged out automatically in %d second" msgid_plural "You will be logged out automatically in %d seconds" msgstr[0] "Sua sessão será encerrada automaticamente em %d segundo" msgstr[1] "Sua sessão será encerrada automaticamente em %d segundos" #: js/ui/endSessionDialog.js:64 msgctxt "button" msgid "Log Out" msgstr "Encerrar sessão" #: js/ui/endSessionDialog.js:70 js/ui/status/system.js:174 msgctxt "title" msgid "Power Off" msgstr "Desligar" #: js/ui/endSessionDialog.js:71 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Instalar atualizações e desligar" #: js/ui/endSessionDialog.js:74 #, javascript-format msgid "The system will power off automatically in %d second" msgid_plural "The system will power off automatically in %d seconds" msgstr[0] "O sistema será desligado automaticamente em %d segundo" msgstr[1] "O sistema será desligado automaticamente em %d segundos" #: js/ui/endSessionDialog.js:78 js/ui/endSessionDialog.js:97 msgctxt "checkbox" msgid "Install pending software updates" msgstr "Instalar atualizações de software pendentes" #: js/ui/endSessionDialog.js:82 msgctxt "button" msgid "Power Off" msgstr "Desligar" #: js/ui/endSessionDialog.js:89 msgctxt "title" msgid "Restart" msgstr "Reiniciar" #: js/ui/endSessionDialog.js:90 msgctxt "title" msgid "Install Updates & Restart" msgstr "Instalar atualizações e reiniciar" #: js/ui/endSessionDialog.js:93 #, javascript-format msgid "The system will restart automatically in %d second" msgid_plural "The system will restart automatically in %d seconds" msgstr[0] "O sistema irá reiniciar automaticamente em %d segundo" msgstr[1] "O sistema irá reiniciar automaticamente em %d segundos" #: js/ui/endSessionDialog.js:101 msgctxt "button" msgid "Restart" msgstr "Reiniciar" #: js/ui/endSessionDialog.js:109 msgctxt "title" msgid "Restart & Install Updates" msgstr "Reiniciar e instalar atualizações" #: js/ui/endSessionDialog.js:112 #, javascript-format msgid "The system will automatically restart and install updates in %d second" msgid_plural "" "The system will automatically restart and install updates in %d seconds" msgstr[0] "" "O sistema irá reiniciar e instalar atualizações automaticamente em %d segundo" msgstr[1] "" "O sistema irá reiniciar e instalar atualizações automaticamente em %d " "segundos" #: js/ui/endSessionDialog.js:119 js/ui/endSessionDialog.js:140 msgctxt "button" msgid "Restart & Install" msgstr "Reiniciar e instalar" #: js/ui/endSessionDialog.js:121 msgctxt "button" msgid "Install & Power Off" msgstr "Instalar e desligar" #: js/ui/endSessionDialog.js:122 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Desligar após instalação das atualizações" #: js/ui/endSessionDialog.js:129 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "Reiniciar e instalar atualizações" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:134 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "%s %s será instalado após a reinicialização. A instalação da atualização " "pode levar um longo tempo: certifique-se de que fez uma cópia de segurança " "(backup) e que o computador esteja ligado na tomada." #: js/ui/endSessionDialog.js:283 msgid "Low battery power: please plug in before installing updates" msgstr "Bateria fraca: conecte na tomada antes de instalar atualizações" #: js/ui/endSessionDialog.js:292 msgid "Some applications are busy or have unsaved work" msgstr "Alguns aplicativos estão ocupados ou possuem trabalhos não salvos" #: js/ui/endSessionDialog.js:297 msgid "Other users are logged in" msgstr "Existem outros usuários com sessão aberta" #: js/ui/endSessionDialog.js:467 msgctxt "button" msgid "Boot Options" msgstr "Opções de inicialização do sistema" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:672 #, javascript-format msgid "%s (remote)" msgstr "%s (remoto)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:675 #, javascript-format msgid "%s (console)" msgstr "%s (console)" #: js/ui/extensionDownloader.js:280 msgid "Install" msgstr "Instalar" #: js/ui/extensionDownloader.js:286 msgid "Install Extension" msgstr "Instalar extensão" #: js/ui/extensionDownloader.js:287 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "Baixar e instalar “%s” de extensions.gnome.org?" #: js/ui/extensionSystem.js:352 msgid "Extension Updates Available" msgstr "Atualizações de extensões disponíveis" #: js/ui/extensionSystem.js:353 msgid "Extension updates are ready to be installed" msgstr "Atualizações de extensões estão prontas para serem instaladas" #: js/ui/inhibitShortcutsDialog.js:70 msgid "Allow inhibiting shortcuts" msgstr "Permitir inibir atalhos" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:73 #, javascript-format msgid "The app %s wants to inhibit shortcuts" msgstr "O aplicativo %s deseja inibir atalhos" #: js/ui/inhibitShortcutsDialog.js:74 msgid "An app wants to inhibit shortcuts" msgstr "Um aplicativo deseja inibir atalhos" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:81 #, javascript-format msgid "You can restore shortcuts by pressing %s" msgstr "Você pode restaurar os atalhos pressionando %s" #: js/ui/kbdA11yDialog.js:34 msgid "Slow Keys Turned On" msgstr "Teclas lentas ligadas" #: js/ui/kbdA11yDialog.js:35 msgid "Slow Keys Turned Off" msgstr "Teclas lentas desligadas" #: js/ui/kbdA11yDialog.js:36 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "Você acabou de manter a tecla Shift pressionada durante 8 segundos. Este é o " "atalho para o recurso de teclas lentas, que afeta a forma como o seu teclado " "opera." #: js/ui/kbdA11yDialog.js:42 msgid "Sticky Keys Turned On" msgstr "Teclas de aderência ligadas" #: js/ui/kbdA11yDialog.js:43 msgid "Sticky Keys Turned Off" msgstr "Teclas de aderência desligadas" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "Você acabou de pressionar a tecla Shift por 5 vezes de uma vez. Este é o " "atalho para o recurso de teclas de aderência, que afeta a forma como o seu " "teclado opera." #: js/ui/kbdA11yDialog.js:47 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" "Você acabou de pressionar duas teclas de uma vez, ou pressionou 5 vezes " "seguidas a tecla Shift. Isto desliga o recurso de teclas de aderência, que " "afeta a forma como o seu teclado opera." #: js/ui/kbdA11yDialog.js:57 msgid "Leave On" msgstr "Deixar ativo" #: js/ui/kbdA11yDialog.js:57 msgid "Turn On" msgstr "Ativar" #: js/ui/kbdA11yDialog.js:67 js/ui/status/network.js:455 msgid "Turn Off" msgstr "Desativar" #: js/ui/kbdA11yDialog.js:67 msgid "Leave Off" msgstr "Deixar desativado" #: js/ui/keyboard.js:180 js/ui/status/keyboard.js:897 msgid "Keyboard Settings" msgstr "Configurações de teclado" #: js/ui/lookingGlass.js:727 msgid "No extensions installed" msgstr "Nenhuma extensão instalada" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:788 #, javascript-format msgid "%s has not emitted any errors" msgstr "%s não gerou erros" #: js/ui/lookingGlass.js:794 msgid "Hide Errors" msgstr "Ocultar erros" #: js/ui/lookingGlass.js:798 js/ui/lookingGlass.js:875 msgid "Show Errors" msgstr "Exibir erros" #: js/ui/lookingGlass.js:807 msgid "Active" msgstr "Ativo" #: js/ui/lookingGlass.js:810 msgid "Inactive" msgstr "Inativo" #: js/ui/lookingGlass.js:812 msgid "Error" msgstr "Erro" #: js/ui/lookingGlass.js:814 msgid "Out of date" msgstr "Expirado" #: js/ui/lookingGlass.js:816 msgid "Downloading" msgstr "Baixando" #: js/ui/lookingGlass.js:818 msgid "Deactivating" msgstr "Desativando" #: js/ui/lookingGlass.js:820 msgid "Activating" msgstr "Ativando" #: js/ui/lookingGlass.js:853 msgid "View Source" msgstr "Ver fonte" #: js/ui/lookingGlass.js:864 msgid "Web Page" msgstr "Página web" #: js/ui/main.js:277 msgid "System was put in unsafe mode" msgstr "O sistema foi colocado em modo inseguro" #: js/ui/main.js:278 msgid "Apps now have unrestricted access" msgstr "Os aplicativos agora têm acesso irrestrito" #: js/ui/main.js:338 msgid "Logged in as a privileged user" msgstr "Sessão aberta como um usuário privilegiado" #: js/ui/main.js:339 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" "Usar uma sessão como um usuário privilegiado deve ser evitado por motivos de " "segurança. Se possível, você deve abrir uma sessão como um usuário normal." #: js/ui/main.js:387 msgid "Screen Lock disabled" msgstr "Bloqueio de tela desabilitado" #: js/ui/main.js:388 msgid "Screen Locking requires the GNOME display manager" msgstr "O bloqueio de tela requer o gerenciador de janelas do GNOME" #. Translators: this is the string displayed in the header when a message #. source doesn't have a name #: js/ui/messageList.js:374 msgid "Unknown App" msgstr "Aplicativo desconhecido" #: js/ui/messageTray.js:326 js/ui/messageTray.js:328 msgid "Notification sound" msgstr "Som de notificação" #: js/ui/mpris.js:198 msgid "Unknown artist" msgstr "Artista desconhecido" #: js/ui/mpris.js:208 msgid "Unknown title" msgstr "Título desconhecido" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:328 msgid "Type to search" msgstr "Digite para pesquisar" #: js/ui/overviewControls.js:392 msgid "Apps" msgstr "Aplicativos" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:33 msgid "Overview" msgstr "Panorama" #: js/ui/padOsd.js:98 msgid "New shortcut…" msgstr "Novo atalho…" #: js/ui/padOsd.js:151 msgid "App defined" msgstr "Aplicativo definido" #: js/ui/padOsd.js:152 msgid "Show on-screen help" msgstr "Mostrar ajuda na tela" #: js/ui/padOsd.js:153 msgid "Switch monitor" msgstr "Trocar monitor" #: js/ui/padOsd.js:154 msgid "Assign keystroke" msgstr "Atribuir atalho" #: js/ui/padOsd.js:223 msgid "Done" msgstr "Concluído" #: js/ui/padOsd.js:726 msgid "Edit…" msgstr "Editar…" #: js/ui/padOsd.js:773 msgid "None" msgstr "Nenhum" #: js/ui/padOsd.js:844 msgid "Press a button to configure" msgstr "Pressione um botão para configurar" #: js/ui/padOsd.js:845 msgid "Press Esc to exit" msgstr "Pressione Esc para sair" #: js/ui/padOsd.js:848 msgid "Press any key to exit" msgstr "Pressione qualquer tecla para sair" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:423 msgid "Activities" msgstr "Atividades" #: js/ui/panel.js:504 msgctxt "System menu in the top bar" msgid "System" msgstr "Sistema" #: js/ui/panel.js:678 msgid "Top Bar" msgstr "Barra superior" #: js/ui/quickSettings.js:188 msgid "Open menu" msgstr "Abrir menu" #: js/ui/runDialog.js:61 msgid "Run a Command" msgstr "Executar um comando" #: js/ui/runDialog.js:76 msgid "Press ESC to close" msgstr "Pressione Esc para fechar" #: js/ui/runDialog.js:241 msgid "Restart is not available on Wayland" msgstr "Reinício não está disponível no Wayland" #: js/ui/runDialog.js:246 msgid "Restarting…" msgstr "Reiniciando…" #: js/ui/screenShield.js:233 msgid "GNOME needs to lock the screen" msgstr "GNOME precisa bloquear a tela" #: js/ui/screenShield.js:274 js/ui/screenShield.js:667 msgid "Unable to lock" msgstr "Não foi possível bloquear" #: js/ui/screenShield.js:275 js/ui/screenShield.js:668 msgid "Lock was blocked by an app" msgstr "O bloqueio foi impedido por um aplicativo" #: js/ui/screenshot.js:1252 msgid "Selection" msgstr "Seleção" #: js/ui/screenshot.js:1262 msgid "Area Selection" msgstr "Seleção de área" #: js/ui/screenshot.js:1267 msgid "Screen" msgstr "Tela" #: js/ui/screenshot.js:1277 msgid "Screen Selection" msgstr "Seleção de tela" #: js/ui/screenshot.js:1282 msgid "Window" msgstr "Janela" #: js/ui/screenshot.js:1292 msgid "Window Selection" msgstr "Seleção de janela" #. Translators: entry in the window right click menu. #: js/ui/screenshot.js:1317 js/ui/status/system.js:111 js/ui/windowMenu.js:28 msgid "Take Screenshot" msgstr "Fazer captura de tela" #: js/ui/screenshot.js:1333 msgid "Record Screen" msgstr "Gravar tela" #. Translators: since this string refers to an action, #. it needs to be phrased as a verb. #: js/ui/screenshot.js:1350 msgid "Capture" msgstr "Capturar" #: js/ui/screenshot.js:1372 msgid "Show Pointer" msgstr "Mostrar cursor" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1996 msgid "Screencasts" msgstr "Gravações de tela" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast From 07-17-2013 10:00:46 PM" #: js/ui/screenshot.js:2001 #, no-c-format msgid "Screencast From %d %t" msgstr "Gravação de tela de %d %t" #. Translators: notification title. #: js/ui/screenshot.js:2047 msgid "Screencast recorded" msgstr "Gravação de tela registrada" #. Translators: notification title. #: js/ui/screenshot.js:2060 msgid "Screencast failed to start" msgstr "Falha ao iniciar a gravação da tela" #. Translators: notification title. #: js/ui/screenshot.js:2066 msgid "Screencast ended: Out of disk space" msgstr "Gravação de tela encerrada: sem espaço em disco" #. We can encourage user to try again on service crashes since the #. recorder will auto-blocklist the pipeline that crashed. #. Translators: notification title. #: js/ui/screenshot.js:2072 msgid "Screencast ended unexpectedly, please try again" msgstr "A gravação de tela terminou inesperadamente. Tente novamente" #. Translators: notification title. #: js/ui/screenshot.js:2075 msgid "Screencast ended unexpectedly" msgstr "A gravação de tela foi finalizada inesperadamente" #. Translators: notification source name. #: js/ui/screenshot.js:2085 js/ui/screenshot.js:2327 msgid "Screenshot" msgstr "Captura de tela" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:2092 msgid "Click here to view the video." msgstr "Clique aqui para ver o vídeo." #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:2100 js/ui/screenshot.js:2343 msgid "Show in Files" msgstr "Mostrar em Arquivos" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2287 #, javascript-format msgid "Screenshot From %s" msgstr "Captura de tela de %s" #. Translators: notification title. #: js/ui/screenshot.js:2333 msgid "Screenshot captured" msgstr "Captura de tela obtida" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2335 msgid "You can paste the image from the clipboard." msgstr "Você pode colar a imagem a partir da área de transferência." #: js/ui/screenshot.js:2391 js/ui/screenshot.js:2555 msgid "Screenshot taken" msgstr "Captura de tela obtida" #: js/ui/search.js:829 msgid "Searching…" msgstr "Pesquisando…" #: js/ui/search.js:831 msgid "No results" msgstr "Nenhum resultado" #: js/ui/search.js:962 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "%d mais" msgstr[1] "%d mais" #: js/ui/searchController.js:87 #: subprojects/extensions-app/data/ui/extensions-window.ui:73 msgid "Search" msgstr "Pesquisar" #: js/ui/shellEntry.js:21 msgid "Copy" msgstr "Copiar" #: js/ui/shellEntry.js:26 msgid "Paste" msgstr "Colar" #: js/ui/shellEntry.js:78 msgid "Show Text" msgstr "Mostrar texto" #: js/ui/shellEntry.js:80 msgid "Hide Text" msgstr "Ocultar texto" #: js/ui/shellEntry.js:174 msgid "Caps lock is on" msgstr "Caps lock está ligado" #: js/ui/shellMountOperation.js:286 msgid "Hidden Volume" msgstr "Volume oculto" #: js/ui/shellMountOperation.js:289 msgid "Windows System Volume" msgstr "Volume de sistema Windows" #: js/ui/shellMountOperation.js:292 msgid "Uses Keyfiles" msgstr "Usa arquivos de chave" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:300 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead" msgstr "" "Para desbloquear um volume que usa arquivos de chave, use o utilitário " "%s" #: js/ui/shellMountOperation.js:304 msgid "" "You need an external utility like Disks to unlock a volume that uses " "keyfiles" msgstr "" "Você precisa de um utilitário externo como Discos para desbloquear um " "volume que usa arquivos-chave" #: js/ui/shellMountOperation.js:312 msgid "PIM Number" msgstr "Insira um número PIM" #: js/ui/shellMountOperation.js:371 msgid "Remember Password" msgstr "Lembrar senha" #: js/ui/shellMountOperation.js:386 msgid "Unlock" msgstr "Desbloquear" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:400 #, javascript-format msgid "Open %s" msgstr "Abrir o %s" #: js/ui/shellMountOperation.js:436 msgid "The PIM must be a number or empty" msgstr "O PIM deve ser um número ou vazio" #: js/ui/status/accessibility.js:34 msgid "Accessibility" msgstr "Acessibilidade" #: js/ui/status/accessibility.js:44 msgid "High Contrast" msgstr "Alto contraste" #: js/ui/status/accessibility.js:47 msgid "Zoom" msgstr "Ampliador" #: js/ui/status/accessibility.js:54 msgid "Screen Reader" msgstr "Leitor de tela" #: js/ui/status/accessibility.js:58 msgid "Screen Keyboard" msgstr "Teclado na tela" #: js/ui/status/accessibility.js:62 msgid "Visual Alerts" msgstr "Alertas visuais" #: js/ui/status/accessibility.js:66 msgid "Sticky Keys" msgstr "Teclas de aderência" #: js/ui/status/accessibility.js:70 msgid "Slow Keys" msgstr "Teclas lentas" #: js/ui/status/accessibility.js:74 msgid "Bounce Keys" msgstr "Teclas de repercussão" #: js/ui/status/accessibility.js:78 msgid "Mouse Keys" msgstr "Teclas do mouse" #: js/ui/status/accessibility.js:83 msgid "Accessibility Settings" msgstr "Configurações de acessibilidade" #: js/ui/status/accessibility.js:140 msgid "Large Text" msgstr "Texto grande" #: js/ui/status/autoRotate.js:14 msgid "Auto Rotate" msgstr "Rotação automática" #: js/ui/status/backgroundApps.js:156 msgctxt "title" msgid "Background Apps" msgstr "Aplicativos em segundo plano" #: js/ui/status/backgroundApps.js:171 msgid "Apps known to be running without a window" msgstr "Aplicativos conhecidos por serem executados sem uma janela" #: js/ui/status/backgroundApps.js:182 msgid "App Settings" msgstr "Configurações do aplicativo" #: js/ui/status/backgroundApps.js:239 msgid "No Background Apps" msgstr "Sem aplicativos em segundo plano" #: js/ui/status/backgroundApps.js:241 #, javascript-format msgid "%d Background App" msgid_plural "%d Background Apps" msgstr[0] "%d aplicativo em segundo plano" msgstr[1] "%d aplicativos em segundo plano" #: js/ui/status/backlight.js:39 msgid "Keyboard Brightness" msgstr "Brilho do teclado" #: js/ui/status/backlight.js:79 msgid "Off" msgstr "Desligado" #: js/ui/status/backlight.js:80 msgid "Low" msgstr "Baixo" #: js/ui/status/backlight.js:81 msgid "High" msgstr "Alto" #: js/ui/status/backlight.js:147 js/ui/status/keyboard.js:879 msgid "Keyboard" msgstr "Teclado" #: js/ui/status/bluetooth.js:245 js/ui/status/network.js:360 msgid "Disconnect" msgstr "Desconectar" #: js/ui/status/bluetooth.js:262 js/ui/status/bluetooth.js:264 msgid "Bluetooth" msgstr "Bluetooth" #: js/ui/status/bluetooth.js:287 js/ui/status/network.js:1900 msgid "Bluetooth Settings" msgstr "Configurações de Bluetooth" #: js/ui/status/bluetooth.js:334 msgid "No available or connected devices" msgstr "Nenhum dispositivo disponível ou conectado" #: js/ui/status/bluetooth.js:335 msgid "Turn on Bluetooth to connect to devices" msgstr "Ative o Bluetooth para se conectar a dispositivos" #. Translators: This is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:389 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d conectado" msgstr[1] "%d conectados" #: js/ui/status/brightness.js:32 msgid "Brightness" msgstr "Brilho" #: js/ui/status/darkMode.js:12 msgid "Dark Style" msgstr "Estilo escuro" #: js/ui/status/dwellClick.js:15 msgid "Single Click" msgstr "Clique único" #: js/ui/status/dwellClick.js:20 msgid "Double Click" msgstr "Clique duplo" #: js/ui/status/dwellClick.js:25 msgid "Drag" msgstr "Arrastar" #: js/ui/status/dwellClick.js:30 msgid "Secondary Click" msgstr "Clique secundário" #: js/ui/status/dwellClick.js:39 msgid "Dwell Click" msgstr "Clique de permanência" #: js/ui/status/keyboard.js:896 msgid "Show Keyboard Layout" msgstr "Exibir leiaute de teclado" #: js/ui/status/location.js:337 msgid "Allow location access" msgstr "Permitir acesso a sua localização" #. Translators: %s is an application name #: js/ui/status/location.js:339 #, javascript-format msgid "The app %s wants to access your location" msgstr "O aplicativo %s deseja acesso a sua localização" #: js/ui/status/location.js:349 msgid "Location access can be changed at any time from the privacy settings" msgstr "" "Acesso a localização pode ser alterado a qualquer momento nas configurações " "de privacidade" #: js/ui/status/location.js:357 msgid "Deny Access" msgstr "Negar acesso" #: js/ui/status/location.js:362 msgid "Grant Access" msgstr "Conceder acesso" #: js/ui/status/network.js:62 msgid "" msgstr "" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:354 #, javascript-format msgid "Disconnect %s" msgstr "Desconectar %s" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:356 #, javascript-format msgid "Connect to %s" msgstr "Conectar a %s" #: js/ui/status/network.js:1050 msgid "Secure" msgstr "Seguro" # Livre no sentido de disponível, ou seja, não estar em uso --Enrico #: js/ui/status/network.js:1050 msgid "Not secure" msgstr "Não seguro" #: js/ui/status/network.js:1051 #, javascript-format msgid "Signal strength %s%%" msgstr "Força do sinal %s%%" #. translators: The first placeholder is the network name, the second and indication whether it is secure, and the last the signal strength indication #: js/ui/status/network.js:1053 #, javascript-format msgid "%s, %s, %s" msgstr "%s, %s, %s" #. Translators: %s is a network identifier #: js/ui/status/network.js:1155 #, javascript-format msgid "%s Hotspot" msgstr "Ponto de acesso %s" #: js/ui/status/network.js:1426 #, javascript-format msgid "%d connected" msgid_plural "%d connected" msgstr[0] "%d conectado" msgstr[1] "%d conectados" #: js/ui/status/network.js:1524 js/ui/status/network.js:1540 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1525 msgid "VPN Settings" msgstr "Configurações de VPN" #: js/ui/status/network.js:1785 msgid "Wi–Fi" msgstr "Wi–Fi" #: js/ui/status/network.js:1787 msgid "All Networks" msgstr "Todas as redes" #: js/ui/status/network.js:1884 msgid "Wired Connections" msgstr "Conexões cabeadas" #: js/ui/status/network.js:1885 msgid "Wired Settings" msgstr "Configurações da rede cabeada" #: js/ui/status/network.js:1899 msgid "Bluetooth Tethers" msgstr "Ancoragem Bluetooth" #. Translators: "Tether" from "Bluetooth Tether" #: js/ui/status/network.js:1906 msgid "Tether" msgstr "Ancoragem" #: js/ui/status/network.js:1919 msgid "Mobile Connections" msgstr "Conexões móveis" #: js/ui/status/network.js:1921 msgid "Mobile Broadband Settings" msgstr "Configurações de banda larga móvel" #. Translators: "Mobile" from "Mobile Broadband" #: js/ui/status/network.js:1930 msgid "Mobile" msgstr "Móvel" #: js/ui/status/network.js:1964 msgid "Sign Into Wi–Fi Network" msgstr "Entrar na rede Wi-Fi" #: js/ui/status/network.js:2151 msgid "Connection failed" msgstr "Falha de conexão" #: js/ui/status/network.js:2152 msgid "Activation of network connection failed" msgstr "Falha ao ativar a conexão da rede" #: js/ui/status/nightLight.js:19 msgid "Night Light" msgstr "Luz noturna" #: js/ui/status/powerProfiles.js:19 msgctxt "Power profile" msgid "Performance" msgstr "Desempenho" #: js/ui/status/powerProfiles.js:24 msgctxt "Power profile" msgid "Balanced" msgstr "Balanceado" #: js/ui/status/powerProfiles.js:29 msgctxt "Power profile" msgid "Power Saver" msgstr "Economia de energia" #: js/ui/status/powerProfiles.js:39 js/ui/status/powerProfiles.js:69 msgid "Power Mode" msgstr "Modo de energia" #: js/ui/status/powerProfiles.js:71 msgid "Power Settings" msgstr "Configurações de energia" #: js/ui/status/remoteAccess.js:74 msgid "Stop Screencast" msgstr "Parar gravação de tela" #: js/ui/status/remoteAccess.js:144 msgid "Stop Screen Sharing" msgstr "Parar o compartilhamento de tela" #: js/ui/status/rfkill.js:99 msgid "Airplane Mode" msgstr "Modo avião" #: js/ui/status/system.js:168 msgid "Power Off Menu" msgstr "Menu de Desligar" #: js/ui/status/system.js:176 msgid "Suspend" msgstr "Suspender" #: js/ui/status/system.js:181 msgid "Restart…" msgstr "Reiniciar…" #: js/ui/status/system.js:186 msgid "Power Off…" msgstr "Desligar…" #: js/ui/status/system.js:193 #: subprojects/extensions-app/data/ui/extensions-window.ui:124 msgid "Log Out…" msgstr "Encerrar sessão…" #: js/ui/status/system.js:198 msgid "Switch User…" msgstr "Trocar de usuário…" #: js/ui/status/system.js:242 msgctxt "action" msgid "Lock Screen" msgstr "Bloquear tela" #: js/ui/status/thunderbolt.js:308 msgid "Unknown Thunderbolt device" msgstr "Dispositivo Thunderbolt desconhecido" #: js/ui/status/thunderbolt.js:309 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" "Um novo dispositivo foi detectado enquanto você estava ausente. Por " "gentileza, desconecte e reconecte o dispositivo para usá-lo." #: js/ui/status/thunderbolt.js:312 msgid "Unauthorized Thunderbolt device" msgstr "Dispositivo Thunderbolt não autorizado" #: js/ui/status/thunderbolt.js:313 msgid "" "New device has been detected and needs to be authorized by an administrator" msgstr "" "Um novo dispositivo foi detectado e precisa ser autorizado por um " "administrador" #: js/ui/status/thunderbolt.js:319 msgid "Thunderbolt authorization error" msgstr "Erro de autorização de thunderbolt" #: js/ui/status/thunderbolt.js:320 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "Não foi possível autorizar o dispositivo Thunderbolt: %s" #: js/ui/status/volume.js:218 msgid "Volume changed" msgstr "Volume alterado" #: js/ui/status/volume.js:231 msgid "Unmute" msgstr "Ativar áudio" #: js/ui/status/volume.js:231 msgid "Mute" msgstr "Sem áudio" #: js/ui/status/volume.js:286 msgid "Volume" msgstr "Volume" #: js/ui/status/volume.js:302 msgid "Sound Output" msgstr "Saída de som" #: js/ui/status/volume.js:374 msgid "Sound Input" msgstr "Entrada de som" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:20 msgid "Mirror" msgstr "Espelhar" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:29 msgid "Join Displays" msgstr "Juntar telas" #. Translators: this is for using only external displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:39 msgid "External Only" msgstr "Externa apenas" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:47 msgid "Built-in Only" msgstr "Interna apenas" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:378 msgid "%A %B %-d" msgstr "%A, %-d de %B" #: js/ui/unlockDialog.js:384 msgid "Swipe up to unlock" msgstr "Deslize para desbloquear" #: js/ui/unlockDialog.js:385 msgid "Click or press a key to unlock" msgstr "Clique ou pressione uma tecla para desbloquear" #: js/ui/unlockDialog.js:568 msgid "Unlock Window" msgstr "Desbloquear janela" #: js/ui/unlockDialog.js:577 msgid "Log in as another user" msgstr "Iniciar sessão como outro usuário" #: js/ui/welcomeDialog.js:47 #, javascript-format msgid "GNOME %s" msgstr "GNOME %s" #: js/ui/welcomeDialog.js:51 #, javascript-format msgid "Welcome to %s" msgstr "Bem-vindo ao %s" #: js/ui/welcomeDialog.js:52 msgid "If you want to learn your way around, check out the tour" msgstr "Se você quiser se familiarizar, confira o tour" #: js/ui/welcomeDialog.js:61 msgid "Skip" msgstr "Pular" #: js/ui/welcomeDialog.js:66 msgid "Take Tour" msgstr "Fazer tour" #: js/ui/windowAttentionHandler.js:18 #, javascript-format msgid "“%s” is ready" msgstr "“%s” está pronto" # Título de janela de confirmação; Se grande demais, pode ser exibida com "..." # Vide: https://bugzilla.gnome.org/show_bug.cgi?id=786331 #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:68 msgid "Keep these display settings?" msgstr "Manter essas configurações da tela?" #: js/ui/windowManager.js:78 msgid "Revert Settings" msgstr "Reverter configurações" #: js/ui/windowManager.js:83 msgid "Keep Changes" msgstr "Manter alterações" #: js/ui/windowManager.js:103 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "Alterações nas configurações serão revertidas em %d segundo" msgstr[1] "Alterações nas configurações serão revertidas em %d segundos" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:500 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:40 msgid "Hide" msgstr "Ocultar" #: js/ui/windowMenu.js:47 msgid "Restore" msgstr "Restaurar" #: js/ui/windowMenu.js:51 msgid "Maximize" msgstr "Maximizar" #: js/ui/windowMenu.js:58 msgid "Move" msgstr "Mover" #: js/ui/windowMenu.js:78 msgid "Resize" msgstr "Redimensionar" #: js/ui/windowMenu.js:98 msgid "Always on Top" msgstr "Sempre na frente das outras janelas" #: js/ui/windowMenu.js:117 msgid "Always on Visible Workspace" msgstr "Sempre na área de trabalho visível" #: js/ui/windowMenu.js:131 msgid "Move to Workspace Left" msgstr "Mover para a área de trabalho à esquerda" #: js/ui/windowMenu.js:137 msgid "Move to Workspace Right" msgstr "Mover para a área de trabalho à direita" #: js/ui/windowMenu.js:143 msgid "Move to Workspace Up" msgstr "Mover para a área de trabalho acima" #: js/ui/windowMenu.js:149 msgid "Move to Workspace Down" msgstr "Mover para a área de trabalho abaixo" #: js/ui/windowMenu.js:167 msgid "Move to Monitor Up" msgstr "Mover para o monitor acima" #: js/ui/windowMenu.js:176 msgid "Move to Monitor Down" msgstr "Mover para o monitor abaixo" #: js/ui/windowMenu.js:185 msgid "Move to Monitor Left" msgstr "Mover para o monitor à esquerda" #: js/ui/windowMenu.js:194 msgid "Move to Monitor Right" msgstr "Mover para o monitor à direita" #: js/ui/windowMenu.js:202 msgid "Close" msgstr "Fechar" #: src/main.c:527 subprojects/extensions-tool/src/main.c:336 msgid "Print version" msgstr "Exibe a versão" #: src/main.c:533 msgid "Mode used by GDM for login screen" msgstr "Modo usado pelo GDM para a tela de início de sessão" #: src/main.c:539 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "" "Utilizar um modo específico, ex.: “gdm” para a tela de início de sessão" #: src/main.c:545 msgid "List possible modes" msgstr "Listar modos possíveis" #: src/main.c:551 msgid "Force animations to be enabled" msgstr "Forçar animações a serem ativadas" #: src/shell-app.c:252 msgctxt "program" msgid "Unknown" msgstr "Desconhecido" #: src/shell-app.c:503 #, c-format msgid "Failed to launch “%s”" msgstr "Erro ao iniciar “%s”" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match" msgstr "As senhas não coincidem" #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "A senha não pode estar em branco" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "O diálogo de autenticação foi descartado pelo usuário" #: src/st/st-icon-theme.c:1865 #, c-format msgid "Icon '%s' not present in theme %s" msgstr "Ícone '%s' não existe no tema %s" #: src/st/st-icon-theme.c:3454 src/st/st-icon-theme.c:3757 msgid "Failed to load icon" msgstr "Falha ao carregar o ícone" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 msgid "Manage your GNOME Extensions" msgstr "Gerenciar suas extensões do GNOME" #. developer_name tag deprecated with Appstream 1.0 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:19 msgid "The GNOME Project" msgstr "O Projeto GNOME" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:51 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" "Extensões do GNOME lida com a atualização, configuração e preferências das " "extensões, e também remove ou desabilita as extensões indesejadas." #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:64 msgid "Main Window" msgstr "Janela principal" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:68 msgid "Available Updates" msgstr "Atualizações Disponíveis" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:72 msgid "Search View" msgstr "Visualização da pesquisa" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "Configure as extensões do GNOME Shell" #: subprojects/extensions-app/js/extensionManager.js:237 #, javascript-format msgid "" "The installed version of this extension (%s) is incompatible with the " "current version of GNOME (%s). The extension has been disabled." msgstr "" "A versão instalada desta extensão (%s) é incompatível com a versão atual do " "GNOME (%s). A extensão foi desativada." #: subprojects/extensions-app/js/extensionManager.js:238 #, javascript-format msgid "" "The installed version of this extension is incompatible with the current " "version of GNOME (%s). The extension has been disabled." msgstr "" "A versão instalada desta extensão é incompatível com a versão atual do GNOME " "(%s). A extensão foi desativada." #: subprojects/extensions-app/js/extensionManager.js:242 msgid "" "An error has occurred in this extension. This could cause issues elsewhere " "in the system. It is recommended to turn the extension off until the error " "is resolved." msgstr "" "Um erro ocorreu com essa extensão. Isso pode gerar erros em outras partes do " "sistema. Se recomenda que a extensão seja desabilitada até que esse erro " "seja corrigido." #. translators: Details for an extension error #: subprojects/extensions-app/js/extensionManager.js:248 msgid "Error details:" msgstr "Detalhes do erro:" #: subprojects/extensions-app/js/extensionRow.js:82 #, javascript-format msgid "Version %s" msgstr "Versão %s" #: subprojects/extensions-app/js/extensionsWindow.js:113 #, javascript-format msgid "Remove “%s”?" msgstr "Remover “%s”?" #: subprojects/extensions-app/js/extensionsWindow.js:114 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "" "Se você remover a extensão, você precisa voltar a baixá-la se você quiser " "habilitá-la novamente" #: subprojects/extensions-app/js/extensionsWindow.js:117 msgid "_Cancel" msgstr "_Cancelar" #: subprojects/extensions-app/js/extensionsWindow.js:118 msgid "_Remove" msgstr "_Remover" #: subprojects/extensions-app/js/extensionsWindow.js:158 msgid "translator-credits" msgstr "" "Og Maciel \n" "Rodrigo Flores \n" "Felipe Borges \n" "Henrique P. Machado \n" "Jonh Wendell \n" "Rodrigo Padula \n" "Gabriel F. Vilar \n" "Adorilson Bezerra \n" "Djavan Fagundes \n" "Juan Diego Martins da Costa Cruz \n" "Fábio Nogueira \n" "Georges Basile Stavracas Neto \n" "Felipe Braga \n" "Artur de Aquino Morais \n" "Ricardo Silva Veloso \n" "Bruno Lopes \n" "Enrico Nicoletto \n" "Rafael Fontenelle \n" "Matheus Barbosa \n" "Leônidas Araújo " #: subprojects/extensions-app/js/extensionsWindow.js:203 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "%d extensão será atualizada no próximo inicio de sessão." msgstr[1] "%d extensões serão atualizadas no próximo inicio de sessão." #: subprojects/extensions-app/data/ui/extension-row.ui:22 msgid "Error Details" msgstr "Detalhes do erro" #: subprojects/extensions-app/data/ui/extension-row.ui:62 msgid "Updates Details" msgstr "Detalhes das atualizações" #: subprojects/extensions-app/data/ui/extension-row.ui:72 msgid "" "A new version of this extension is ready and will be loaded on next login." msgstr "" "Uma nova versão desta extensão está pronta e será carregada no próximo " "início de seção." #: subprojects/extensions-app/data/ui/extension-row.ui:104 msgid "Extension Details" msgstr "Detalhes da extensão" #: subprojects/extensions-app/data/ui/extension-row.ui:192 msgid "_Website" msgstr "_Site" #: subprojects/extensions-app/data/ui/extension-row.ui:219 msgid "_Settings" msgstr "Configuraçõe_s" #: subprojects/extensions-app/data/ui/extension-row.ui:246 msgid "_Remove…" msgstr "_Remover…" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Keyboard Shortcuts" msgstr "Atalhos de teclado" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "Sobre as Extensões" #: subprojects/extensions-app/data/ui/extensions-window.ui:64 msgid "Main Menu" msgstr "Menu Principal" #: subprojects/extensions-app/data/ui/extensions-window.ui:106 msgid "Search extensions" msgstr "Busque por extensões" #: subprojects/extensions-app/data/ui/extensions-window.ui:134 msgid "_Extensions" msgstr "Extensões" #: subprojects/extensions-app/data/ui/extensions-window.ui:139 msgid "More Information" msgstr "Mais informações" #: subprojects/extensions-app/data/ui/extensions-window.ui:151 msgid "" "Extensions can cause performance and stability issues. It is recommended to " "disable all extensions if you experience problems with your system." msgstr "" "As extensões podem causar problemas de desempenho e estabilidade. É " "recomendado desabilitar todas as extensões se você tiver problemas com seu " "sistema." #: subprojects/extensions-app/data/ui/extensions-window.ui:178 msgid "User Extensions" msgstr "Extensões do usuário" #: subprojects/extensions-app/data/ui/extensions-window.ui:198 msgid "System Extensions" msgstr "Extensões do sistema" #: subprojects/extensions-app/data/ui/extensions-window.ui:233 msgid "Search Results" msgstr "Resultados da pesquisa" #: subprojects/extensions-app/data/ui/extensions-window.ui:252 msgid "No Results Found" msgstr "Nenhum resultado encontrado" #: subprojects/extensions-app/data/ui/extensions-window.ui:253 msgid "Try a different search" msgstr "Tente uma pesquisa diferente" #: subprojects/extensions-app/data/ui/extensions-window.ui:264 msgid "No Installed Extensions" msgstr "Nenhuma extensão instalada" #: subprojects/extensions-app/data/ui/extensions-window.ui:265 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" "Para encontrar e adicionar extensões, visite extensions.gnome.org." #: subprojects/extensions-app/data/ui/extensions-window.ui:276 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" "Sentimos muito, mas não foi possível obter a lista de extensões instaladas. " "Certifique-se de estar em uma sessão do GNOME e tente novamente." #: subprojects/extensions-app/data/ui/help-overlay.ui:9 msgctxt "shortcut window" msgid "General" msgstr "Geral" #: subprojects/extensions-app/data/ui/help-overlay.ui:12 msgctxt "shortcut window" msgid "Open Menu" msgstr "Abre menu" #: subprojects/extensions-app/data/ui/help-overlay.ui:18 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Alterna pesquisa" #: subprojects/extensions-app/data/ui/help-overlay.ui:24 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Exibe atalhos de teclado" #: subprojects/extensions-app/data/ui/help-overlay.ui:30 msgctxt "shortcut window" msgid "Quit" msgstr "Sai" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:284 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "A nova extensão foi criada com sucesso em %s.\n" #: subprojects/extensions-tool/src/command-create.c:376 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" "O nome deve ser um texto muito curto (de preferência descritiva).\n" "Exemplos são: %s" #: subprojects/extensions-tool/src/command-create.c:382 #: subprojects/extensions-tool/src/main.c:243 msgid "Name" msgstr "Nome" #: subprojects/extensions-tool/src/command-create.c:396 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" "Descrição é uma explicação uma só frase do que sua extensão faz.\n" "Exemplos são: %s" #: subprojects/extensions-tool/src/command-create.c:402 #: subprojects/extensions-tool/src/main.c:246 msgid "Description" msgstr "Descrição" #: subprojects/extensions-tool/src/command-create.c:416 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" "UUID é um identificador global único para sua extensão.\n" "Deve estar no formato de um endereço de e-mail (cliqueparafoco@janedoe." "example.com)\n" #: subprojects/extensions-tool/src/command-create.c:443 msgid "Choose one of the available templates:\n" msgstr "Escolha um dos modelos disponíveis:\n" #: subprojects/extensions-tool/src/command-create.c:457 msgid "Template" msgstr "Modelo" #: subprojects/extensions-tool/src/command-create.c:515 msgid "The unique identifier of the new extension" msgstr "O identificador único para a nova extensão" #: subprojects/extensions-tool/src/command-create.c:518 msgid "NAME" msgstr "NOME" #: subprojects/extensions-tool/src/command-create.c:519 msgid "The user-visible name of the new extension" msgstr "O nome da nova extensão como será visto pelo usuário" #: subprojects/extensions-tool/src/command-create.c:521 msgid "DESCRIPTION" msgstr "DESCRIÇÃO" #: subprojects/extensions-tool/src/command-create.c:523 msgid "A short description of what the extension does" msgstr "Uma descrição curta do que a extensão faz" #: subprojects/extensions-tool/src/command-create.c:525 #: subprojects/extensions-tool/src/command-pack.c:455 msgid "DOMAIN" msgstr "DOMÍNIO" #: subprojects/extensions-tool/src/command-create.c:527 msgid "The gettext domain used by the extension" msgstr "O domínio gettext usado pela extensão" #: subprojects/extensions-tool/src/command-create.c:529 #: subprojects/extensions-tool/src/command-pack.c:448 msgid "SCHEMA" msgstr "ESQUEMA" #: subprojects/extensions-tool/src/command-create.c:531 msgid "The GSettings schema used by the extension" msgstr "O esquema GSettings usado pela extensão" #: subprojects/extensions-tool/src/command-create.c:534 msgid "TEMPLATE" msgstr "MODELO" #: subprojects/extensions-tool/src/command-create.c:535 msgid "The template to use for the new extension" msgstr "O modelo que se usará para a nova extensão" #: subprojects/extensions-tool/src/command-create.c:538 msgid "Include prefs.js template" msgstr "Incluir modelo de prefs.js" #: subprojects/extensions-tool/src/command-create.c:544 msgid "Enter extension information interactively" msgstr "Insira as informações da extensão interativamente" #: subprojects/extensions-tool/src/command-create.c:552 msgid "Create a new extension" msgstr "Cria uma nova extensão" #: subprojects/extensions-tool/src/command-create.c:570 #: subprojects/extensions-tool/src/command-list.c:190 msgid "Unknown arguments" msgstr "Argumentos desconhecidos" #: subprojects/extensions-tool/src/command-create.c:595 msgid "UUID, name and description are required" msgstr "UUID, nome e descrição são necessários" #: subprojects/extensions-tool/src/command-disable.c:62 #: subprojects/extensions-tool/src/command-enable.c:62 #, c-format msgid "Extension “%s” does not exist\n" msgstr "A extensão “%s” não existe\n" #: subprojects/extensions-tool/src/command-disable.c:98 msgid "Disable an extension" msgstr "Desabilita uma extensão" #: subprojects/extensions-tool/src/command-disable.c:116 #: subprojects/extensions-tool/src/command-enable.c:116 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "Nenhuma UUID fornecido" #: subprojects/extensions-tool/src/command-disable.c:121 #: subprojects/extensions-tool/src/command-enable.c:121 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "Mais de um UUID fornecido" #: subprojects/extensions-tool/src/command-enable.c:98 msgid "Enable an extension" msgstr "Habilita uma extensão" #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:66 #: subprojects/extensions-tool/src/main.c:150 msgid "Failed to connect to GNOME Shell\n" msgstr "Falha ao conectar ao GNOME Shell\n" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:159 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "A extensão “%s” não existe\n" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "Mostra informações das extensões" #: subprojects/extensions-tool/src/command-install.c:190 msgid "Overwrite an existing extension" msgstr "Sobrescreve uma extensão existente" #: subprojects/extensions-tool/src/command-install.c:192 msgid "EXTENSION_BUNDLE" msgstr "PACOTE_EXTENSÃO" #: subprojects/extensions-tool/src/command-install.c:201 msgid "Install an extension bundle" msgstr "Instala um pacote de extensão" #: subprojects/extensions-tool/src/command-install.c:219 msgid "No extension bundle specified" msgstr "Nenhum pacote de extensão especificado" #: subprojects/extensions-tool/src/command-install.c:225 msgid "More than one extension bundle specified" msgstr "Mais de um pacote de extensão especificado" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show user-installed extensions" msgstr "Mostra extensões instaladas pelo usuário" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show system-installed extensions" msgstr "Mostra extensões instaladas pelo sistema" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Show enabled extensions" msgstr "Mostra extensões habilitadas" #: subprojects/extensions-tool/src/command-list.c:149 msgid "Show disabled extensions" msgstr "Mostra extensões desabilitadas" #: subprojects/extensions-tool/src/command-list.c:152 msgid "Show extensions in active state" msgstr "Mostrar extensões em estado ativo" #: subprojects/extensions-tool/src/command-list.c:155 msgid "Show extensions in inactive state" msgstr "Mostrar extensões em estado inativo" #: subprojects/extensions-tool/src/command-list.c:158 msgid "Show extensions with preferences" msgstr "Mostra extensões com preferências" #: subprojects/extensions-tool/src/command-list.c:161 msgid "Show extensions with updates" msgstr "Mostra extensões com atualizações" #: subprojects/extensions-tool/src/command-list.c:164 msgid "Print extension details" msgstr "Mostra detalhes da extensão" #: subprojects/extensions-tool/src/command-list.c:172 msgid "List installed extensions" msgstr "Lista extensões instaladas" #: subprojects/extensions-tool/src/command-pack.c:444 msgid "FILE" msgstr "ARQUIVO" #: subprojects/extensions-tool/src/command-pack.c:445 msgid "Additional source to include in the bundle" msgstr "Fonte adicional para incluir no pacote" #: subprojects/extensions-tool/src/command-pack.c:449 msgid "A GSettings schema that should be included" msgstr "O esquema de GSettings que deve ser incluído" #: subprojects/extensions-tool/src/command-pack.c:451 #: subprojects/extensions-tool/src/command-pack.c:462 msgid "DIRECTORY" msgstr "DIRETÓRIO" #: subprojects/extensions-tool/src/command-pack.c:453 msgid "The directory where translations are found" msgstr "O diretório no qual traduções são encontradas" #: subprojects/extensions-tool/src/command-pack.c:457 msgid "The gettext domain to use for translations" msgstr "O domínio gettext para usar para as traduções" #: subprojects/extensions-tool/src/command-pack.c:460 msgid "Overwrite an existing pack" msgstr "Sobrescreve um pacote existente" #: subprojects/extensions-tool/src/command-pack.c:464 msgid "The directory where the pack should be created" msgstr "O diretório no qual o pacote deve ser criado" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "SOURCE_DIRECTORY" msgstr "DIRETÓRIO_FONTE" #: subprojects/extensions-tool/src/command-pack.c:475 msgid "Create an extension bundle" msgstr "Cria um pacote de extensão" #: subprojects/extensions-tool/src/command-pack.c:495 msgid "More than one source directory specified" msgstr "Mais de um diretório fonte especificado" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "A extensão “%s” não tem preferências\n" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "Falha ao abrir as preferências para a extensão “%s”: %s\n" #: subprojects/extensions-tool/src/command-prefs.c:87 msgid "Opens extension preferences" msgstr "Abre as preferências da extensão" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "Redefine uma extensão" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "Não é possível desinstalar as extensões do sistema\n" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "Falha ao desinstalar “%s”\n" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "Desinstala uma extensão" #: subprojects/extensions-tool/src/main.c:76 msgid "Do not print error messages" msgstr "Não exibir mensagens de erro" #: subprojects/extensions-tool/src/main.c:249 msgid "Path" msgstr "Caminho" #: subprojects/extensions-tool/src/main.c:252 msgid "URL" msgstr "URL" #: subprojects/extensions-tool/src/main.c:255 msgid "Original author" msgstr "Autor original" #: subprojects/extensions-tool/src/main.c:261 #: subprojects/extensions-tool/src/main.c:263 #: subprojects/extensions-tool/src/main.c:265 msgid "Version" msgstr "Versão" #: subprojects/extensions-tool/src/main.c:268 msgid "Enabled" msgstr "Habilitado" #: subprojects/extensions-tool/src/main.c:268 msgid "Yes" msgstr "Sim" #: subprojects/extensions-tool/src/main.c:268 msgid "No" msgstr "Não" #: subprojects/extensions-tool/src/main.c:271 msgid "State" msgstr "Estado" #: subprojects/extensions-tool/src/main.c:309 msgid "“version” takes no arguments" msgstr "“version” não aceita argumentos" #: subprojects/extensions-tool/src/main.c:311 #: subprojects/extensions-tool/src/main.c:331 msgid "Usage:" msgstr "Uso:" #: subprojects/extensions-tool/src/main.c:314 msgid "Print version information and exit." msgstr "Exibe as informações da versão e sai." #: subprojects/extensions-tool/src/main.c:329 #: subprojects/extensions-tool/src/main.c:332 msgid "COMMAND" msgstr "COMANDO" #: subprojects/extensions-tool/src/main.c:332 msgid "[ARGS…]" msgstr "[ARGS…]" #: subprojects/extensions-tool/src/main.c:334 msgid "Commands:" msgstr "Comandos:" #: subprojects/extensions-tool/src/main.c:335 msgid "Print help" msgstr "Exibe ajuda" #: subprojects/extensions-tool/src/main.c:337 msgid "Enable extension" msgstr "Habilita extensão" #: subprojects/extensions-tool/src/main.c:338 msgid "Disable extension" msgstr "Desabilita extensão" #: subprojects/extensions-tool/src/main.c:339 msgid "Reset extension" msgstr "Redefine extensão" #: subprojects/extensions-tool/src/main.c:340 msgid "Uninstall extension" msgstr "Desinstala extensão" #: subprojects/extensions-tool/src/main.c:341 msgid "List extensions" msgstr "Lista extensões" #: subprojects/extensions-tool/src/main.c:342 #: subprojects/extensions-tool/src/main.c:343 msgid "Show extension info" msgstr "Mostra informações de extensão" #: subprojects/extensions-tool/src/main.c:344 msgid "Open extension preferences" msgstr "Abre preferências de extensão" #: subprojects/extensions-tool/src/main.c:345 msgid "Create extension" msgstr "Cria extensão" #: subprojects/extensions-tool/src/main.c:346 msgid "Package extension" msgstr "Empacota extensão" #: subprojects/extensions-tool/src/main.c:347 msgid "Install extension bundle" msgstr "Instala pacote de extensão" #: subprojects/extensions-tool/src/main.c:349 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "Use “%s” para obter ajuda detalhada.\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "Em branco" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "Uma extensão vazia" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "Indicador" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "Adiciona um ícone à barra superior" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:4 msgid "Quick Settings Item" msgstr "Item de configurações rápidas" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:5 msgid "Add an item to quick settings" msgstr "Adicione um item às configurações rápidas" #. translators: #. * The device has been disabled #: subprojects/gvc/gvc-mixer-control.c:1872 msgid "Disabled" msgstr "Desabilitado" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1879 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u saída" msgstr[1] "%u saídas" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1889 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u entrada" msgstr[1] "%u entradas" #: subprojects/gvc/gvc-mixer-control.c:2872 msgid "System Sounds" msgstr "Sons do sistema" #~ msgid "Move Titlebar Onscreen" #~ msgstr "Mover barra de título na tela" #~ msgid "Stop conflicting session dialog closed" #~ msgstr "O diálogo de conflito de sessão foi fechado" #, javascript-format #~ msgid "Try to login again to start a session for user %s." #~ msgstr "" #~ "Tente conectar-se novamente para iniciar uma sessão para o usuário %s." #~ msgid "Network Manager" #~ msgstr "Gerenciador de rede" #, javascript-format #~ msgid "%s is now known as %s" #~ msgstr "%s agora é conhecido como %s" #~ msgid "Disabling" #~ msgstr "Desabilitando" #~ msgid "Enabling" #~ msgstr "Habilitando" #, javascript-format #~ msgid "%d %%" #~ msgstr "%d %%" #~ msgid "Thunderbolt" #~ msgstr "Thunderbolt" #~ msgid "No Thanks" #~ msgstr "Não, obrigado" #~ msgid "No Matches" #~ msgstr "Nenhuma correspondência" #~ msgid "The extension had an error" #~ msgstr "A extensão apresentou um erro" #~ msgid "The extension can be updated" #~ msgstr "A extensão pode ser atualizada" #~ msgid "Help" #~ msgstr "Ajuda" #~ msgid "Manually Installed" #~ msgstr "Instalada manualmente" #~ msgid "Built-In" #~ msgstr "Interna" #~ msgid "Extension Updates Ready" #~ msgstr "Atualizações de extensões prontas" #~ msgid "Screenshot / Screencast" #~ msgstr "Captura de tela / Gravação de tela" #~ msgid "" #~ "Whether the default Bluetooth adapter had set up devices associated to it" #~ msgstr "" #~ "Se o adaptador Bluetooth padrão configurou, ou não, dispositivos " #~ "associados a ele" #~ msgid "" #~ "The shell will only show a Bluetooth menu item if a Bluetooth adapter is " #~ "powered, or if there were devices set up associated with the default " #~ "adapter. This will be reset if the default adapter is ever seen not to " #~ "have devices associated to it." #~ msgstr "" #~ "O shell irá mostrar apenas um item de menu Bluetooth se um adaptador " #~ "Bluetooth estiver ligado ou se existirem dispositivos configurados " #~ "associados ao adaptador padrão. Isto será redefinido caso o adaptador " #~ "padrão sempre seja visto sem possuir dispositivos associados a ele." #~ msgid "Attach modal dialog to the parent window" #~ msgstr "Anexar diálogo modal à janela pai" #~ msgid "" #~ "This key overrides the key in org.gnome.mutter when running GNOME Shell." #~ msgstr "" #~ "Esta chave sobrescreve a chave em org.gnome.mutter ao executar o GNOME " #~ "Shell." #~ msgid "Enable edge tiling when dropping windows on screen edges" #~ msgstr "" #~ "Habilitar contorno ladrilhado ao arrastar janelas sobre as bordas da tela" #~ msgid "Workspaces are managed dynamically" #~ msgstr "Espaços de trabalho são gerenciados dinamicamente" #~ msgid "Workspaces only on primary monitor" #~ msgstr "Espaços de trabalho apenas no monitor primário" #~ msgid "Delay focus changes in mouse mode until the pointer stops moving" #~ msgstr "Atrasar foco altera o modo do mouse até o ponteiro parar de mover" #~ msgid "Region & Language Settings" #~ msgstr "Configurações regionais e de idioma" #~ msgid "Applications" #~ msgstr "Aplicativos" #, javascript-format #~ msgid "Unable to start %s" #~ msgstr "Não foi possível iniciar o %s" #, javascript-format #~ msgid "Couldn’t find the %s application" #~ msgstr "Não foi possível localizar o aplicativo %s" #~ msgid "Evolution Calendar" #~ msgstr "Agenda do Evolution" #~ msgid "Log Out" #~ msgstr "Encerrar sessão" #, javascript-format #~ msgid "%s Off" #~ msgstr "%s desligada" #, javascript-format #~ msgid "%s Connected" #~ msgstr "Conectado à %s" # Não gerenciável para transmitir a ideia que o Networkmanager não consegue gerenciar o dispositivo --Enrico #, javascript-format #~ msgid "%s Unmanaged" #~ msgstr "%s não é gerenciável" #, javascript-format #~ msgid "%s Connecting" #~ msgstr "Conectando à %s" #, javascript-format #~ msgid "%s Requires Authentication" #~ msgstr "%s requer autenticação" #, javascript-format #~ msgid "Firmware Missing For %s" #~ msgstr "Firmware em falta para %s" #, javascript-format #~ msgid "%s Unavailable" #~ msgstr "%s está indisponível" #, javascript-format #~ msgid "%s Connection Failed" #~ msgstr "Falha na conexão de %s" #, javascript-format #~ msgid "%s Hardware Disabled" #~ msgstr "Hardware de %s desabilitado" #, javascript-format #~ msgid "%s Disabled" #~ msgstr "%s está desabilitado" #~ msgid "Connect to Internet" #~ msgstr "Conectar à Internet" #~ msgid "Airplane Mode is On" #~ msgstr "Modo avião ligado" #~ msgid "Wi-Fi is disabled when airplane mode is on." #~ msgstr "O Wi-Fi é desabilitado quando o modo avião está ligado." #~ msgid "Turn Off Airplane Mode" #~ msgstr "Desligar modo avião" #~ msgid "Wi-Fi is Off" #~ msgstr "Wi-Fi desligado" #~ msgid "Wi-Fi needs to be turned on in order to connect to a network." #~ msgstr "O Wi-Fi precisa ser ligado a fim de conectar-se a uma rede." #~ msgid "Turn On Wi-Fi" #~ msgstr "Ligar Wi-Fi" #~ msgid "Select a network" #~ msgstr "Selecione uma rede" #~ msgid "Use hardware switch to turn off" #~ msgstr "Usar alternador de hardware para desligar" #~ msgid "Select Network" #~ msgstr "Selecione a rede" #~ msgid "Wi-Fi Settings" #~ msgstr "Configurações de Wi-Fi" #, javascript-format #~ msgid "%s Not Connected" #~ msgstr "%s não está conectado" #~| msgid "" #~ msgid "unknown" #~ msgstr "desconhecido" #~ msgid "connecting…" #~ msgstr "conectando…" #~ msgid "authentication required" #~ msgstr "autenticação necessária" #~ msgid "connection failed" #~ msgstr "conexão falhou" #~ msgid "VPN Off" #~ msgstr "VPN desligada" #, javascript-format #~ msgid "%s Wi-Fi Connection" #~ msgid_plural "%s Wi-Fi Connections" #~ msgstr[0] "%s conexão Wi-Fi" #~ msgstr[1] "%s conexões Wi-Fi" #~ msgid "Lock" #~ msgstr "Bloquear" #~ msgid "Power Off / Log Out" #~ msgstr "Desligar / encerrar sessão" #~ msgid "Bluetooth On" #~ msgstr "Bluetooth ligado" #~ msgid "Bluetooth Off" #~ msgstr "Bluetooth desligado" #~ msgid "Location In Use" #~ msgstr "Localização em uso" #~ msgid "Location Disabled" #~ msgstr "Localização desabilitada" #~ msgid "Night Light Disabled" #~ msgstr "Luz noturna desabilitada" #~ msgid "Resume" #~ msgstr "Continuar" #~ msgid "Disable Until Tomorrow" #~ msgstr "Desabilitar até amanhã" #~ msgid "Fully Charged" #~ msgstr "Carga completa" #~ msgid "Not Charging" #~ msgstr "Não está carregando" #, javascript-format #~ msgid "%d∶%02d Remaining (%d %%)" #~ msgstr "%d:%02d restante(s) (%d %%)" #, javascript-format #~ msgid "%d∶%02d Until Full (%d %%)" #~ msgstr "%d:%02d até completar (%d %%)" #~ msgid "Screen is Being Shared" #~ msgstr "A tela está sendo compartilhada" #~ msgid "Turn off" #~ msgstr "Desativar" #~ msgid "Show screenshot UI" #~ msgstr "Mostrar UI da captura de tela" #~ msgid "Screen Recording in Progress" #~ msgstr "Gravação de tela em progresso" #~ msgid "Stop" #~ msgstr "Parar" #~ msgid "Author" #~ msgstr "Autor" #~ msgid "Warning" #~ msgstr "Aviso" #~ msgid "" #~ "Extensions can cause system issues, including performance problems. If " #~ "you encounter problems with your system, it is recommended to disable all " #~ "extensions." #~ msgstr "" #~ "Extensões podem causar problemas no sistema, incluindo problemas de " #~ "desempenho. Se você encontrar problemas com o seu sistema, é recomendável " #~ "desativar todas as extensões." #~ msgid "Remove from Favorites" #~ msgstr "Remover dos favoritos" #~ msgid "Add to Favorites" #~ msgstr "Adicionar aos favoritos" #~ msgid "Enable introspection API" #~ msgstr "Habilitar API de introspecção" #~ msgid "" #~ "Enables a D-Bus API that allows to introspect the application state of " #~ "the shell." #~ msgstr "" #~ "Habilita uma API de D-Bus que permite introspectar o estado do aplicativo " #~ "do shell." #~ msgid "Failed to connect to GNOME Shell" #~ msgstr "Falha ao conectar ao GNOME Shell" #~ msgid "Minimize" #~ msgstr "Minimizar" #~ msgid "Unmaximize" #~ msgstr "Restaurar" #~ msgid "App Picker View" #~ msgstr "Visualização do seletor de aplicativos" #~ msgid "Index of the currently selected view in the application picker." #~ msgstr "" #~ "Índice da visualização atualmente selecionada no seletor de aplicativos." #~ msgid "Frequently used applications will appear here" #~ msgstr "Aplicativos usados frequentemente vão aparecer aqui" #~ msgid "Frequent" #~ msgstr "Frequente" #~ msgid "All" #~ msgstr "Todos" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d" #~ msgstr "%A, %-d de %B" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d, %Y" #~ msgstr "%A, %-d de %B de %Y" #~ msgid "On" #~ msgstr "On" #~ msgid "Copy Error" #~ msgstr "Copiar erro" #~| msgid "Username: " #~ msgid "Username…" #~ msgstr "Nome de usuário…" #~ msgid "Password: " #~ msgstr "Senha: " #~ msgid "Enter Password…" #~ msgstr "Lembrar senha…" #~ msgid "Next" #~ msgstr "Próximo" #~ msgctxt "button" #~ msgid "Sign In" #~ msgstr "Entrar" #~ msgid "%A, %B %d" #~ msgstr "%A, %d de %B" #~ msgid "%d new message" #~ msgid_plural "%d new messages" #~ msgstr[0] "%d nova mensagem" #~ msgstr[1] "%d novas mensagens" #~ msgid "Browse in Software" #~ msgstr "Navegar no Software" #~ msgid "Password:" #~ msgstr "Senha:" #~ msgid "Type again:" #~ msgstr "Digite novamente:" #~ msgid "Authentication required by wireless network" #~ msgstr "Autenticação requisitada pela rede sem fio" #~ msgid "Mobile broadband network password" #~ msgstr "Senha da rede de banda larga móvel" #~ msgctxt "search-result" #~ msgid "Lock Orientation" #~ msgstr "Bloquear orientação" #~ msgid "Rename" #~ msgstr "Renomear" #~ msgid "Account Settings" #~ msgstr "Configurações de conta" #~ msgid "Orientation Lock" #~ msgstr "Bloqueio de orientação" # Tween pode significar uma contração de Between ou se referir a um termo "in-between" usado em animação gráfica. -- Enrico #~ msgid "" #~ "Keybinding that pauses and resumes all running tweens, for debugging " #~ "purposes" #~ msgstr "" #~ "Atalho de teclado que pausa e continua todos os intermediários em " #~ "execução, a fim de depuração" #~ msgid "Which keyboard to use" #~ msgstr "Qual teclado usar" #~ msgid "The type of keyboard to use." #~ msgstr "O tipo do teclado para usar." #~ msgid "network-workgroup" #~ msgstr "network-workgroup" #~ msgid "toggle-switch-us" #~ msgstr "toggle-switch-intl" #~ msgid "There was an error loading the preferences dialog for %s:" #~ msgstr "Ocorreu um erro ao carregar o dialogo de preferências para %s:" #~ msgid "%s all day." #~ msgstr "%s por todo o dia." #~ msgid "%s, then %s later." #~ msgstr "%s, depois %s mais tarde." #~ msgid "%s, then %s, followed by %s later." #~ msgstr "%s, depois %s, seguido de %s mais tarde." #~ msgid "Feels like %s." #~ msgstr "Sensação térmica de %s." #~| msgid "Log Out" #~ msgctxt "search-result" #~ msgid "Log out" #~ msgstr "Encerrar sessão" #~| msgid "Switch User" #~ msgctxt "search-result" #~ msgid "Switch user" #~ msgstr "Alternar usuário" #~ msgid "Hide tray" #~ msgstr "Esconder bandeja" #~ msgid "Status Icons" #~ msgstr "Ícones de status" #~ msgid "Events" #~ msgstr "Eventos" #~ msgid "Media" #~ msgstr "Mídia" #~ msgid "Web Authentication Redirect" #~ msgstr "Redirecionamento para autenticação web" #~ msgid "%d x %d" #~ msgstr "%d x %d" #~ msgid "Show the week date in the calendar" #~ msgstr "Mostrar o número da semana na agenda" #~ msgid "If true, display the ISO week date in the calendar." #~ msgstr "Se verdadeiro, exibe o número da semana na agenda." #~ msgid "Use as Internet connection" #~ msgstr "Usar como conexão de Internet" #~ msgid "%s is requesting access to your location." #~ msgstr "%s está solicitando acesso à sua localização." # Traduções do Xfce e da Microsoft usam compositor --Enrico #~ msgid "GNOME Shell (wayland compositor)" #~ msgstr "GNOME Shell (compositor wayland)" #~ msgid "%d Connected Device" #~ msgid_plural "%d Connected Devices" #~ msgstr[0] "%d dispositivo conectado" #~ msgstr[1] "%d dispositivos conectados" # UPS significa uninterruptible power supply, mas no Brasil vejo usando mais # "No-break", que é a mesma coisa, então optei pela segunda. -- Rafael Fontenelle #~ msgid "UPS" #~ msgstr "No-break" #~ msgid "Battery" #~ msgstr "Bateria" #~ msgctxt "event list time" #~ msgid "%H∶%M" #~ msgstr "%H∶%M" #~ msgctxt "event list time" #~ msgid "%l∶%M %p" #~ msgstr "%l∶%M %p" #~ msgid "Invitation" #~ msgstr "Convite" #~ msgid "Call" #~ msgstr "Chamada" #~ msgid "File Transfer" #~ msgstr "Transferência de arquivo" #~ msgid "Chat" #~ msgstr "Conversar" #~ msgid "Invitation to %s" #~ msgstr "Convite para %s" #~ msgid "%s is inviting you to join %s" #~ msgstr "%s está convidando você para participar de %s" #~ msgid "Decline" #~ msgstr "Recusar" #~ msgid "Accept" #~ msgstr "Aceitar" #~ msgid "Video call from %s" #~ msgstr "Chamada de vídeo para %s" #~ msgid "Call from %s" #~ msgstr "Chamada de %s" #~ msgid "Answer" #~ msgstr "Atender" #~ msgid "%s is sending you %s" #~ msgstr "%s está enviando %s" #~ msgid "%s would like permission to see when you are online" #~ msgstr "%s quer permissão para vê-lo quando conectado" #~ msgid "Authentication failed" #~ msgstr "Falha de autenticação" #~ msgid "Encryption error" #~ msgstr "Erro de criptografia" #~ msgid "Certificate not provided" #~ msgstr "Certificado não fornecido" #~ msgid "Certificate untrusted" #~ msgstr "Certificado não confiável" #~ msgid "Certificate expired" #~ msgstr "Certificado expirado" #~ msgid "Certificate not activated" #~ msgstr "Certificado não ativado" #~ msgid "Certificate hostname mismatch" #~ msgstr "Máquina do certificado não confere" #~ msgid "Certificate fingerprint mismatch" #~ msgstr "Impressão digital do certificado não confere" #~ msgid "Certificate self-signed" #~ msgstr "Certificado auto-assinado" #~ msgid "Status is set to offline" #~ msgstr "O status está definido como desconectado." #~ msgid "Certificate is invalid" #~ msgstr "O certificado é inválido" #~ msgid "Connection has been refused" #~ msgstr "A conexão foi recusada" #~ msgid "Connection can't be established" #~ msgstr "A conexão não pode ser estabelecida" #~ msgid "Connection has been lost" #~ msgstr "Conexão perdida" #~ msgid "This account is already connected to the server" #~ msgstr "Esta conta já está conectada ao servidor" #~ msgid "" #~ "Connection has been replaced by a new connection using the same resource" #~ msgstr "" #~ "A conexão foi substituída por uma nova conexão usando o mesmo recurso" #~ msgid "The account already exists on the server" #~ msgstr "A conta já existe no servidor" #~ msgid "Server is currently too busy to handle the connection" #~ msgstr "O servidor está atualmente muito ocupado para controlar a conexão" #~ msgid "Certificate has been revoked" #~ msgstr "O certificado foi revogado" #~ msgid "" #~ "Certificate uses an insecure cipher algorithm or is cryptographically weak" #~ msgstr "" #~ "O certificado usa um algoritmo de cifragem inseguro ou é " #~ "criptograficamente fraco" #~ msgid "" #~ "The length of the server certificate, or the depth of the server " #~ "certificate chain, exceed the limits imposed by the cryptography library" #~ msgstr "" #~ "O comprimento do certificado do servidor, ou a profundidade da cadeia do " #~ "certificado excedeu os limites impostos pela biblioteca de criptografia" #~ msgid "Internal error" #~ msgstr "Erro interno" #~ msgid "View account" #~ msgstr "Visualizar conta" #~ msgid "Show the message list" #~ msgstr "Mostra a lista de mensagem" #~ msgctxt "list sunday" #~ msgid "Su" #~ msgstr "Dom" #~ msgctxt "list monday" #~ msgid "M" #~ msgstr "Seg" #~ msgctxt "list tuesday" #~ msgid "T" #~ msgstr "Ter" #~ msgctxt "list wednesday" #~ msgid "W" #~ msgstr "Qua" #~ msgctxt "list thursday" #~ msgid "Th" #~ msgstr "Qui" #~ msgctxt "list friday" #~ msgid "F" #~ msgstr "Sex" #~ msgctxt "list saturday" #~ msgid "S" #~ msgstr "Sab" #~ msgid "Nothing Scheduled" #~ msgstr "Nada agendado" #~ msgid "This week" #~ msgstr "Esta semana" #~ msgid "Next week" #~ msgstr "Próxima semana" #~ msgid "Removable Devices" #~ msgstr "Dispositivos removíveis" #~ msgid "Eject" #~ msgstr "Ejetar" 0707010000025C000081A40000000000000000000000016712993F0001FDE5000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/ro.po# This file is distributed under the same license as the gnome-shell package. # Lucian Adrian Grijincu , 2009, 2010, 2011. # Daniel Șerbănescu , 2010, 2011. # laurion , 2010. # Ion Laurențiu Cristian , 2010. # Răpițeanu Viorel-Cătălin , 2013. # Viorel-Cătălin Răpițeanu , 2014. # Daniel Șerbănescu , 2015, 2018. msgid "" msgstr "" "Project-Id-Version: gnome-shell master\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues/\n" "POT-Creation-Date: 2024-08-04 14:12+0000\n" "PO-Revision-Date: 2024-08-11 15:47+0300\n" "Last-Translator: Florentina Mușat \n" "Language-Team: Gnome Romanian Translation Team \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!=1 && n%100>=1 && " "n%100<=19) ? 1 : 2);\n" "20)) ? 1: 2);\n" "X-Generator: Poedit 3.4.4\n" "X-Project-Style: gnome\n" "X-Poedit-SourceCharset: UTF-8\n" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "Lansatoare" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate pinned app 1" msgstr "Activează aplicația fixată 1" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate pinned app 2" msgstr "Activează aplicația fixată 2" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate pinned app 3" msgstr "Activează aplicația fixată 3" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate pinned app 4" msgstr "Activează aplicația fixată 4" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate pinned app 5" msgstr "Activează aplicația fixată 5" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate pinned app 6" msgstr "Activează aplicația fixată 6" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate pinned app 7" msgstr "Activează aplicația fixată 7" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate pinned app 8" msgstr "Activează aplicația fixată 8" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate pinned app 9" msgstr "Activează aplicația fixată 9" #: data/50-gnome-shell-launchers.xml:46 msgid "Open new window of pinned app 1" msgstr "Deschide o fereastră nouă a aplicației fixate 1" #: data/50-gnome-shell-launchers.xml:50 msgid "Open new window of pinned app 2" msgstr "Deschide o fereastră nouă a aplicației fixate 2" #: data/50-gnome-shell-launchers.xml:54 msgid "Open new window of pinned app 3" msgstr "Deschide o fereastră nouă a aplicației fixate 3" #: data/50-gnome-shell-launchers.xml:58 msgid "Open new window of pinned app 4" msgstr "Deschide o fereastră nouă a aplicației fixate 4" #: data/50-gnome-shell-launchers.xml:62 msgid "Open new window of pinned app 5" msgstr "Deschide o fereastră nouă a aplicației fixate 5" #: data/50-gnome-shell-launchers.xml:66 msgid "Open new window of pinned app 6" msgstr "Deschide o fereastră nouă a aplicației fixate 6" #: data/50-gnome-shell-launchers.xml:70 msgid "Open new window of pinned app 7" msgstr "Deschide o fereastră nouă a aplicației fixate 7" #: data/50-gnome-shell-launchers.xml:74 msgid "Open new window of pinned app 8" msgstr "Deschide o fereastră nouă a aplicației fixate 8" #: data/50-gnome-shell-launchers.xml:78 msgid "Open new window of pinned app 9" msgstr "Deschide o fereastră nouă a aplicației fixate 9" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2276 msgid "Screenshots" msgstr "Capturi de ecran" #: data/50-gnome-shell-screenshots.xml:9 #: data/org.gnome.shell.gschema.xml.in:287 msgid "Take a screenshot interactively" msgstr "Ia o captură de ecran interactiv" #: data/50-gnome-shell-screenshots.xml:12 #: data/org.gnome.shell.gschema.xml.in:299 msgid "Take a screenshot" msgstr "Ia o captură de ecran" #: data/50-gnome-shell-screenshots.xml:15 #: data/org.gnome.shell.gschema.xml.in:295 msgid "Take a screenshot of a window" msgstr "Ia o captură de ecran a unei ferestre" #: data/50-gnome-shell-screenshots.xml:18 #: data/org.gnome.shell.gschema.xml.in:291 msgid "Record a screencast interactively" msgstr "Ia o înregistrare de ecran interactiv" #: data/50-gnome-shell-system.xml:6 js/ui/messageTray.js:1300 msgid "System" msgstr "Sistem" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "Arată lista de notificare" #: data/50-gnome-shell-system.xml:12 msgid "Open the quick settings menu" msgstr "Deschide meniul de configurări rapide" #: data/50-gnome-shell-system.xml:15 msgid "Focus the active notification" msgstr "Focalizează notificarea activă" #: data/50-gnome-shell-system.xml:18 msgid "Show the overview" msgstr "Arată prezentarea generală" #: data/50-gnome-shell-system.xml:21 msgid "Show all apps" msgstr "Arată toate aplicațiile" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "Vizualizatorul activităților GNOME" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "Administrare de ferestre și lansare de aplicații" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" "Activează uneltele interne utile dezvoltatorilor și testerilor din Alt-F2" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Permite accesul la unelte interne de depanare și monitorizare folosind " "dialogul Alt-F2." #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "Uuid-urile extensiilor de activat" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "Extensiile pentru Vizualizatorul activităților GNOME au o proprietate uuid; " "această cheie listează extensiile care ar trebui încărcate. Orice extensie " "care trebuie încărcată trebuie să fie în listă. Puteți de asemenea să " "manipulați această listă cu metodele EnableExtension și DisableExtension pe " "org.gnome.Shell." #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "UUID-urile extensiilor pentru a forța dezactivarea" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" "Extensiile pentru Shell GNOME au o proprietate UUID; această cheie listează " "extensiile care ar trebui dezactivate, chiar dacă sunt încărcate ca parte a " "modului curent. Puteți de asemenea să manipulați această listă cu metodele D-" "Bus EnableExtension și DisableExtension pe org.gnome.Shell. Această cheie " "are prioritate peste configurarea „enabled-extensions”." #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "Dezactivează extensiile utilizatorului" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" "Dezactivează toate extensiile pe care utilizatorul le-a activat fără să " "afecteze configurarea „enable-extension”." #: data/org.gnome.shell.gschema.xml.in:45 msgid "Allow extension installation" msgstr "Permite instalarea de extensii" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "Allow users to install extensions in their home folder. If disabled, the " "InstallRemoteExtension D-Bus method will fail, and extensions are only " "loaded from system directories on startup. It does not affect extensions " "that are already loaded, so a change only takes full effect on the next " "login." msgstr "" "Permite utilizatorilor să instaleze extensii în dosarul home. Dacă este " "dezactivat, metoda D-Bus InstallRemoteExtension va eșua și extensiile sunt " "încărcate doar din directoarele de sistem la pornirea calculatorului. Acest " "lucru nu afectează extensiile care sunt deja încărcate, deci o modificare " "are efect deplin doar la următoarea autentificare." #: data/org.gnome.shell.gschema.xml.in:56 msgid "Disables the validation of extension version compatibility" msgstr "Dezactivează validarea compatibilității versiunii extensiei" #: data/org.gnome.shell.gschema.xml.in:57 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "Vizualizatorul activităților GNOME va încărca doar extensiile care pretind " "să fie compatibile cu versiunea actuală. Activarea acestei opțiuni va duce " "la dezactivarea verificării și la încercarea de a încărca toate extensiile " "fără a ține cont de versiunile cu care acestea pretind că sunt compatibile." #: data/org.gnome.shell.gschema.xml.in:65 msgid "List of desktop file IDs for favorite applications" msgstr "" "Lista de identificatori ale fișierelor desktop pentru aplicațiile favorite" #: data/org.gnome.shell.gschema.xml.in:66 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" "Aplicațiile corespunzătoare acestor identificatori vor fi afișate în zona " "favoritelor." #: data/org.gnome.shell.gschema.xml.in:73 msgid "History for command (Alt-F2) dialog" msgstr "Istoricul dialogului de comenzi (Alt-F2)" #. Translators: looking glass is a debugger and inspector tool, see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/docs/looking-glass.md #: data/org.gnome.shell.gschema.xml.in:78 msgid "History for the looking glass dialog" msgstr "Istoric pentru lupa de căutare" #: data/org.gnome.shell.gschema.xml.in:82 msgid "Always show the “Log Out” action in the system menu" msgstr "Arată întotdeauna acțiunea „Ieșire din sesiune” în meniul de sistem" #: data/org.gnome.shell.gschema.xml.in:83 msgid "" "This key overrides the automatic hiding of the “Log out” action in the " "system menu for logged-in situations where there is a single, local, non-" "system user and only a single available session type (e.g. GNOME on Wayland)." msgstr "" "Această cheie suprascrie ascunderea automată a acțiunii „Ieșire din sesiune” " "în meniul de sistem pentru situațiile când este autentificat, unde există " "doar un singur utilizator, local, care nu face parte din sistem și doar un " "singur tip de sesiune disponibil (adică GNOME pe Wayland)." #: data/org.gnome.shell.gschema.xml.in:92 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "Dacă se va reține parola pentru montarea sistemelor de fișiere criptate sau " "la distanță" #: data/org.gnome.shell.gschema.xml.in:93 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "Vizualizatorul activităților va cere o parolă când este montat un dispozitiv " "criptat sau un sistem de fișiere la distanță. Dacă parola poate fi salvată " "pentru o utilizare viitoare, o căsuță intitulată „Reține parola” va fi " "afișată. Această cheie determină starea implicită a căsuței." #: data/org.gnome.shell.gschema.xml.in:102 msgid "The last selected non-default power profile" msgstr "Ultimul profil de alimentare neimplicit selectat" #: data/org.gnome.shell.gschema.xml.in:103 msgid "" "Some systems support more than two power profiles. In order to still support " "toggling between two profiles, this key records the last selected non-" "default profile." msgstr "" "Unele sisteme suportă mai mult decât două profiluri de alimentare. Pentru a " "suporta încă comutarea între două profiluri, această cheie înregistrează " "ultimul profil neimplicit selectat." #: data/org.gnome.shell.gschema.xml.in:111 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "" "Ultima versiune pentru care a fost afișat dialogul „Bine ați venit la GNOME”" #: data/org.gnome.shell.gschema.xml.in:112 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can " "be used to effectively disable the dialog." msgstr "" "Această cheie determină pentru care versiune a fost arătat ultima dată " "dialogul „Bine ați venit la GNOME”. Un șir gol reprezintă cea mai veche " "versiune posibilă, și un număr gigantic va reprezenta versiuni care nu " "există încă. Numărul gigantic poate fi folosit pentru a dezactiva efectiv " "dialogul." #: data/org.gnome.shell.gschema.xml.in:145 msgid "Layout of the app picker" msgstr "Aspectul selectorului de aplicații" #: data/org.gnome.shell.gschema.xml.in:146 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" msgstr "" "Aspectul selectorului de aplicații. Fiecare intrare din vector este o " "pagină. Paginile sunt stocate în ordinea în care apar în GNOME Shell. " "Fiecare pagină conține o pereche de „id aplicație” → „date”. Momentan, " "următoarele valori sunt stocate ca „data”: • „poziție”: poziția iconiței " "aplicației în pagină" #: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:172 msgid "Keybinding to shift between overview states" msgstr "" "Combinație de taste pentru comutarea între stările prezentării generale" #: data/org.gnome.shell.gschema.xml.in:166 msgid "Keybinding to shift between session, window picker and app grid" msgstr "" "Combinație de taste pentru a comuta între sesiune, selectorul de ferestre și " "grila de aplicații" #: data/org.gnome.shell.gschema.xml.in:173 msgid "Keybinding to shift between app grid, window picker and session" msgstr "" "Combinație de taste pentru a comuta între grila de aplicații, selectorul de " "ferestre și sesiunea" #: data/org.gnome.shell.gschema.xml.in:179 msgid "Keybinding to open the “Show Applications” view" msgstr "" "Combinație de taste pentru deschiderea modului de afișare „Arată aplicațiile”" #: data/org.gnome.shell.gschema.xml.in:180 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "" "Combinație de taste pentru deschiderea modului de afișare „Arată " "aplicațiile” a prezentării generale a activităților." #: data/org.gnome.shell.gschema.xml.in:187 msgid "Keybinding to open the overview" msgstr "Combinație de taste pentru deschiderea prezentării generale" #: data/org.gnome.shell.gschema.xml.in:188 msgid "Keybinding to open the Activities Overview." msgstr "" "Combinație de taste pentru deschiderea prezentării generale a activităților." #: data/org.gnome.shell.gschema.xml.in:194 msgid "Keybinding to toggle the visibility of the notification list" msgstr "" "Combinație de taste pentru comutarea vizibilității listei de notificare" #: data/org.gnome.shell.gschema.xml.in:195 msgid "Keybinding to toggle the visibility of the notification list." msgstr "" "Combinație de taste pentru comutarea vizibilității listei de notificare." #: data/org.gnome.shell.gschema.xml.in:201 msgid "Keybinding to toggle the quick settings menu" msgstr "Combinație de taste pentru a comuta meniul de configurări rapide" #: data/org.gnome.shell.gschema.xml.in:202 msgid "Keybinding to toggle the quick settings menu." msgstr "Combinație de taste pentru a comuta meniul de configurări rapide." #: data/org.gnome.shell.gschema.xml.in:208 msgid "Keybinding to focus the active notification" msgstr "Combinație de taste pentru focalizarea notificării active" #: data/org.gnome.shell.gschema.xml.in:209 msgid "Keybinding to focus the active notification." msgstr "Combinație de taste pentru focalizarea notificării active." #: data/org.gnome.shell.gschema.xml.in:215 msgid "Switch to application 1" msgstr "Comută la aplicația 1" #: data/org.gnome.shell.gschema.xml.in:219 msgid "Switch to application 2" msgstr "Comută la aplicația 2" #: data/org.gnome.shell.gschema.xml.in:223 msgid "Switch to application 3" msgstr "Comută la aplicația 3" #: data/org.gnome.shell.gschema.xml.in:227 msgid "Switch to application 4" msgstr "Comută la aplicația 4" #: data/org.gnome.shell.gschema.xml.in:231 msgid "Switch to application 5" msgstr "Comută la aplicația 5" #: data/org.gnome.shell.gschema.xml.in:235 msgid "Switch to application 6" msgstr "Comută la aplicația 6" #: data/org.gnome.shell.gschema.xml.in:239 msgid "Switch to application 7" msgstr "Comută la aplicația 7" #: data/org.gnome.shell.gschema.xml.in:243 msgid "Switch to application 8" msgstr "Comută la aplicația 8" #: data/org.gnome.shell.gschema.xml.in:247 msgid "Switch to application 9" msgstr "Comută la aplicația 9" #: data/org.gnome.shell.gschema.xml.in:251 msgid "Open a new instance of application 1" msgstr "Deschide o instanță nouă a aplicației 1" #: data/org.gnome.shell.gschema.xml.in:255 msgid "Open a new instance of application 2" msgstr "Deschide o instanță nouă a aplicației 2" #: data/org.gnome.shell.gschema.xml.in:259 msgid "Open a new instance of application 3" msgstr "Deschide o instanță nouă a aplicației 3" #: data/org.gnome.shell.gschema.xml.in:263 msgid "Open a new instance of application 4" msgstr "Deschide o instanță nouă a aplicației 4" #: data/org.gnome.shell.gschema.xml.in:267 msgid "Open a new instance of application 5" msgstr "Deschide o instanță nouă a aplicației 5" #: data/org.gnome.shell.gschema.xml.in:271 msgid "Open a new instance of application 6" msgstr "Deschide o instanță nouă a aplicației 6" #: data/org.gnome.shell.gschema.xml.in:275 msgid "Open a new instance of application 7" msgstr "Deschide o instanță nouă a aplicației 7" #: data/org.gnome.shell.gschema.xml.in:279 msgid "Open a new instance of application 8" msgstr "Deschide o instanță nouă a aplicației 8" #: data/org.gnome.shell.gschema.xml.in:283 msgid "Open a new instance of application 9" msgstr "Deschide o instanță nouă a aplicației 9" #: data/org.gnome.shell.gschema.xml.in:308 #: data/org.gnome.shell.gschema.xml.in:335 msgid "Limit switcher to current workspace." msgstr "Limitează comutatorul la spațiul de lucru curent." #: data/org.gnome.shell.gschema.xml.in:309 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "Dacă este activat, doar aplicațiile care au ferestre în spațiul de lucru " "curent sunt arătate în comutator. Altfel, toate aplicațiile sunt incluse." #: data/org.gnome.shell.gschema.xml.in:326 msgid "The application icon mode." msgstr "Miniatură și pictograma aplicației." #: data/org.gnome.shell.gschema.xml.in:327 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-" "only” (shows only the application icon) or “both”." msgstr "" "Configurează modul în care ferestrele sunt arătate în comutator. " "Posibilități valide sunt „mod miniatură” (arată o miniatură a ferestrei) " "„mod iconiță” (arată doar iconița aplicației) sau „ambele”." #: data/org.gnome.shell.gschema.xml.in:336 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "Dacă este activat, doar ferestrele din spațiul de lucru curent sunt arătate " "în comutator. Altfel, toate ferestrele sunt incluse." #: data/org.gnome.shell.gschema.xml.in:346 msgid "Locations" msgstr "Locații" #: data/org.gnome.shell.gschema.xml.in:347 msgid "The locations to show in world clocks" msgstr "Locațiile de arătat în ceasuri globale" #: data/org.gnome.shell.gschema.xml.in:357 msgid "Automatic location" msgstr "Locație automată" #: data/org.gnome.shell.gschema.xml.in:358 msgid "Whether to fetch the current location or not" msgstr "Dacă să se obțină locația curentă" #: data/org.gnome.shell.gschema.xml.in:365 msgid "Location" msgstr "Locație" #: data/org.gnome.shell.gschema.xml.in:366 msgid "The location for which to show a forecast" msgstr "Locația pentru care să se arate o prognoză" #. Keep in sync with subprojects/extensions-app #: data/org.gnome.Shell.Extensions.desktop.in.in:5 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/data/ui/extensions-window.ui:57 msgid "Extensions" msgstr "Extensii" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "Logare prin rețea" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:275 msgid "Something’s gone wrong" msgstr "Ceva nu a funcționat cum trebuie" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" "Ne pare foarte rău, dar a avut loc o problemă: configurările pentru această " "extensie nu pot fi afișate. Vă recomandăm să raportați problema autorilor " "extensiei." #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "Detalii tehnice" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "Pagină principală" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 msgid "Visit extension homepage" msgstr "Vizitează pagina principală a extensiei" #: js/gdm/authPrompt.js:153 js/gdm/loginDialog.js:466 #: js/ui/audioDeviceSelection.js:66 js/ui/components/networkAgent.js:115 #: js/ui/components/polkitAgent.js:146 js/ui/endSessionDialog.js:438 #: js/ui/extensionDownloader.js:278 js/ui/shellMountOperation.js:384 #: js/ui/shellMountOperation.js:394 msgid "Cancel" msgstr "Anulează" #: js/gdm/authPrompt.js:319 js/ui/components/networkAgent.js:215 #: js/ui/components/networkAgent.js:235 js/ui/components/networkAgent.js:267 #: js/ui/components/networkAgent.js:300 js/ui/components/networkAgent.js:339 #: js/ui/components/networkAgent.js:352 js/ui/components/polkitAgent.js:288 #: js/ui/shellMountOperation.js:334 msgid "Password" msgstr "Parolă" #: js/gdm/loginDialog.js:327 msgid "Choose Session" msgstr "Alegeți o sesiune" #. Translators: is running for #: js/gdm/loginDialog.js:424 #, javascript-format msgid "" "Remote login is not possible because a remote session is already running for " "%s. To login remotely, you must log out from the remote session or force " "stop it." msgstr "" "Autentificarea la distanță nu este posibilă pentru că o sesiune de la " "distanță rulează deja pentru %s. Pentru a vă autentifica la distanță, " "trebuie să ieșiți din sesiunea de la distanță sau să o forțați să se " "oprească." #. Translators: is running for #: js/gdm/loginDialog.js:427 #, javascript-format msgid "" "Login is not possible because a remote session is already running for %s. To " "login, you must log out from the remote session or force stop it." msgstr "" "Autentificarea nu este posibilă pentru că o sesiune de la distanță rulează " "deja pentru %s. Pentru a vă autentifica, trebuie să ieșiți din sesiunea de " "la distanță sau să o forțați să se oprească." #. Translators: is running for #: js/gdm/loginDialog.js:430 #, javascript-format msgid "" "Remote login is not possible because a local session is already running for " "%s. To login remotely, you must log out from the local session or force stop " "it." msgstr "" "Autentificarea la distanță nu este posibilă pentru că o sesiune locală " "rulează deja pentru %s. Pentru a vă autentifica la distanță, trebuie să " "ieșiți din sesiunea locală sau să o forțați să se oprească." #. Translators: is running for #: js/gdm/loginDialog.js:433 #, javascript-format msgid "" "Login is not possible because a session is already running for %s. To login, " "you must log out from the session or force stop it." msgstr "" "Autentificarea nu este posibilă pentru că o sesiune rulează deja pentru %s. " "Pentru a vă autentifica, trebuie să ieșiți din sesiune sau să o forțați să " "se oprească." #: js/gdm/loginDialog.js:442 msgid "Session Already Running" msgstr "Sesiunea rulează deja" #: js/gdm/loginDialog.js:454 msgid "" "Force stopping will quit any running apps and processes, and could result in " "data loss." msgstr "" "Oprirea forțată va închide orice aplicații și procese care rulează și poate " "rezulta în pierderi de date." #: js/gdm/loginDialog.js:474 msgid "Force Stop" msgstr "Forțează oprirea" #: js/gdm/loginDialog.js:542 msgid "Not listed?" msgstr "Nelistat?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:1010 #, javascript-format msgid "(e.g., user or %s)" msgstr "(de exemplu, utilizator sau %s)" #: js/gdm/loginDialog.js:1015 js/ui/components/networkAgent.js:259 #: js/ui/components/networkAgent.js:294 js/ui/components/networkAgent.js:328 msgid "Username" msgstr "Nume de utilizator" #: js/gdm/loginDialog.js:1081 msgid "Login Attempt Timed Out" msgstr "Încercarea de autentificare a expirat" #: js/gdm/loginDialog.js:1082 msgid "Login took too long, please try again" msgstr "Autentificarea a durat prea mult, încercați din nou" #: js/gdm/loginDialog.js:1427 msgid "Login Window" msgstr "Fereastră de autentificare" #: js/gdm/util.js:498 msgid "Authentication error" msgstr "Eroare de autentificare" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:729 msgid "(or swipe finger across reader)" msgstr "(sau treceți cu degetul peste cititor)" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:734 msgid "(or place finger on reader)" msgstr "(sau plasați degetul pe cititor)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:91 msgctxt "search-result" msgid "Power Off" msgstr "Oprire" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:94 msgid "power off;poweroff;shutdown;halt;stop" msgstr "power off;poweroff;shutdown;halt;stop;oprește;închide;blochează" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:99 msgctxt "search-result" msgid "Restart" msgstr "Repornire" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:102 msgid "reboot;restart;" msgstr "reboot;restart;repornește;restartează;" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:107 msgctxt "search-result" msgid "Lock Screen" msgstr "Blochează ecranul" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:110 msgid "lock screen" msgstr "lock screen;blochează ecranul" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:115 msgctxt "search-result" msgid "Log Out" msgstr "Ieșire din sesiune" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:118 msgid "logout;log out;sign off" msgstr "logout;sign off;ieșire din sesiune;deautentificare" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:123 msgctxt "search-result" msgid "Suspend" msgstr "Suspendare" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:126 msgid "suspend;sleep" msgstr "suspend;sleep;suspendare" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:131 msgctxt "search-result" msgid "Switch User" msgstr "Comută utilizatorul" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:134 msgid "switch user" msgstr "switch user;comută utilizatorul" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:141 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "" "lock orientation;screen;rotation;blocare orientare;blocare de orientare;" "ecran;rotație" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:146 msgctxt "search-result" msgid "Take a Screenshot" msgstr "Ia o captură de ecran" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:149 msgid "screenshot;screencast;snip;capture;record" msgstr "" "screenshot;screencast;snip;capture;record;captură de ecran;înregistrare de " "ecran;captură;înregistrare" #: js/misc/systemActions.js:249 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "Deblochează rotația ecranului" #: js/misc/systemActions.js:250 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "Rotație de ecran blocat" #: js/misc/util.js:132 msgid "Command not found" msgstr "Comanda nu a fost găsită" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:172 msgid "Could not parse command:" msgstr "Nu s-a putut analiza comanda:" #: js/misc/util.js:180 #, javascript-format msgid "Execution of “%s” failed:" msgstr "Execuția comenzii „%s” a eșuat:" #: js/misc/dateUtils.js:69 msgid "Just now" msgstr "Acum" #: js/misc/dateUtils.js:72 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d minut în urmă" msgstr[1] "%d minute în urmă" msgstr[2] "%d de minute în urmă" #: js/misc/dateUtils.js:79 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d oră în urmă" msgstr[1] "%d ore în urmă" msgstr[2] "%d de ore în urmă" #: js/misc/dateUtils.js:85 js/ui/dateMenu.js:185 msgid "Yesterday" msgstr "Ieri" #: js/misc/dateUtils.js:88 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d zi în urmă" msgstr[1] "%d zile în urmă" msgstr[2] "%d de zile în urmă" #: js/misc/dateUtils.js:95 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d săptămână în urmă" msgstr[1] "%d săptămâni în urmă" msgstr[2] "%d de săptămâni în urmă" #: js/misc/dateUtils.js:102 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%d lună în urmă" msgstr[1] "%d luni în urmă" msgstr[2] "%d de luni în urmă" #: js/misc/dateUtils.js:108 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "%d an în urmă" msgstr[1] "%d ani în urmă" msgstr[2] "%d de ani în urmă" #. Translators: Time in 24h format #: js/misc/dateUtils.js:155 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/dateUtils.js:161 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "Ieri, %H∶%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/dateUtils.js:167 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/dateUtils.js:173 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%B %-d, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/dateUtils.js:179 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%B %-d %Y, %H∶%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/dateUtils.js:184 msgid "%l∶%M %p" msgstr "%l:%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/dateUtils.js:190 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "Ieri, %l:%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/dateUtils.js:196 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/dateUtils.js:202 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%B %-d, %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/dateUtils.js:208 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%B %-d %Y, %l∶%M %p" #: js/portalHelper/main.js:98 msgid "Your connection seems to be secure" msgstr "Conexiunea pare a fi sigură" #: js/portalHelper/main.js:104 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "Conexiunea dumneavoastră la acest hotspot nu este sigură. Parolele sau alte " "informății pe care le-ați introdus pe această pagină pot fi văzute de " "oamenii din jur." #: js/portalHelper/main.js:115 msgid "Hotspot Login" msgstr "Logare hotspot" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:51 js/ui/inhibitShortcutsDialog.js:92 msgid "Deny" msgstr "Refuză" #: js/ui/accessDialog.js:52 js/ui/inhibitShortcutsDialog.js:101 msgid "Allow" msgstr "Permite" #: js/ui/appDisplay.js:1775 msgid "Unnamed Folder" msgstr "Dosar nedenumit" #: js/ui/appFavorites.js:166 #, javascript-format msgid "%s has been pinned to the dash." msgstr "%s a fost fixat pe tabloul de bord." #: js/ui/appFavorites.js:199 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "%s a fost desprins de pe tabloul de bord." #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:51 msgid "Open Windows" msgstr "Ferestre deschise" #: js/ui/appMenu.js:59 msgid "New Window" msgstr "Fereastră nouă" #: js/ui/appMenu.js:86 msgid "App Details" msgstr "Detalii aplicație" #: js/ui/appMenu.js:102 msgid "Quit" msgstr "Ieșire" #: js/ui/appMenu.js:162 js/ui/dash.js:250 msgid "Unpin" msgstr "Desprinde" #: js/ui/appMenu.js:163 msgid "Pin to Dash" msgstr "Fixează pe tabloul de bord" #: js/ui/appMenu.js:180 msgid "Launch using Integrated Graphics Card" msgstr "Lansează folosind placa grafică integrată" #: js/ui/appMenu.js:181 msgid "Launch using Discrete Graphics Card" msgstr "Lansează folosind placa grafică discretă" #: js/ui/audioDeviceSelection.js:46 msgid "Select Audio Device" msgstr "Selectați dispozitivul audio" #: js/ui/audioDeviceSelection.js:61 js/ui/status/volume.js:83 msgid "Sound Settings" msgstr "Configurări de sunet" #: js/ui/audioDeviceSelection.js:74 msgid "Headphones" msgstr "Căști auriculare" #: js/ui/audioDeviceSelection.js:76 msgid "Headset" msgstr "Căști cu microfon" #: js/ui/audioDeviceSelection.js:78 js/ui/status/volume.js:358 msgid "Microphone" msgstr "Microfon" #: js/ui/backgroundMenu.js:15 msgid "Change Background…" msgstr "Schimbă fundalul…" #: js/ui/backgroundMenu.js:17 msgid "Display Settings" msgstr "Configurări afișaj" #: js/ui/backgroundMenu.js:18 msgid "Settings" msgstr "Configurări" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:39 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:65 msgctxt "grid sunday" msgid "S" msgstr "D" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:67 msgctxt "grid monday" msgid "M" msgstr "L" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:69 msgctxt "grid tuesday" msgid "T" msgstr "M" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:71 msgctxt "grid wednesday" msgid "W" msgstr "M" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:73 msgctxt "grid thursday" msgid "T" msgstr "J" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:75 msgctxt "grid friday" msgid "F" msgstr "V" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:77 msgctxt "grid saturday" msgid "S" msgstr "S" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:428 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:438 msgid "%OB %Y" msgstr "%OB %Y" #: js/ui/calendar.js:500 msgid "Previous month" msgstr "Luna precedentă" #: js/ui/calendar.js:518 msgid "Next month" msgstr "Luna viitoare" #: js/ui/calendar.js:669 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:728 msgid "Week %V" msgstr "Săptămâna %V" #: js/ui/calendar.js:920 msgid "No Notifications" msgstr "Nu există notificări" #: js/ui/calendar.js:976 msgid "Do Not Disturb" msgstr "Nu deranja" #: js/ui/calendar.js:997 msgid "Clear" msgstr "Curăță" #: js/ui/calendar.js:1001 msgctxt "action" msgid "Clear all notifications" msgstr "Curăță toate înștiințările" #. Translators: %s is an application name #: js/ui/closeDialog.js:44 #, javascript-format msgid "“%s” is not responding." msgstr "„%s” nu răspunde." #: js/ui/closeDialog.js:45 msgid "" "You may choose to wait a short while for it to continue or force the app to " "quit entirely." msgstr "" "Puteți alege să așteptați o vreme scurtă pentru a continua sau să forțați " "aplicația să se închidă complet." #: js/ui/closeDialog.js:73 msgid "Force Quit" msgstr "Forțează închiderea" #: js/ui/closeDialog.js:78 msgid "Wait" msgstr "Așteaptă" #: js/ui/components/automountManager.js:84 msgid "External drive connected" msgstr "A fost conectat un disc extern" #: js/ui/components/automountManager.js:96 msgid "External drive disconnected" msgstr "A fost deconectat un disc extern" #: js/ui/components/automountManager.js:210 msgid "Unable to unlock volume" msgstr "Nu s-a putut debloca volumul" #: js/ui/components/automountManager.js:211 msgid "The installed udisks version does not support the PIM setting" msgstr "Versiunea instalată udisks nu suportă configurarea PIM" #: js/ui/components/autorunManager.js:200 #, javascript-format msgid "Open with %s" msgstr "Deschide cu %s" #: js/ui/components/networkAgent.js:97 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router." msgstr "" "În mod alternativ vă puteți conecta apăsând butonul „WPS” pe routerul " "dumneavoastră." #: js/ui/components/networkAgent.js:109 js/ui/status/bluetooth.js:246 #: js/ui/status/network.js:360 js/ui/status/network.js:444 msgid "Connect" msgstr "Conectare" #: js/ui/components/networkAgent.js:224 msgid "Key" msgstr "Tastă" #: js/ui/components/networkAgent.js:275 js/ui/components/networkAgent.js:314 msgid "Private key password" msgstr "Parolă pentru cheia privată" #: js/ui/components/networkAgent.js:308 msgid "Identity" msgstr "Identitate" #: js/ui/components/networkAgent.js:334 msgid "Service" msgstr "Serviciu" #: js/ui/components/networkAgent.js:372 js/ui/components/networkAgent.js:408 #: js/ui/components/networkAgent.js:745 js/ui/components/networkAgent.js:766 msgid "Authentication required" msgstr "Autentificarea este necesară" #: js/ui/components/networkAgent.js:373 js/ui/components/networkAgent.js:746 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network " "“%s”." msgstr "" "Sunt necesare parole sau chei de criptare pentru a accesa rețeaua fără fir " "„%s”." #: js/ui/components/networkAgent.js:377 js/ui/components/networkAgent.js:750 msgid "Wired 802.1X authentication" msgstr "Autentificare 802.1X prin cablu" #: js/ui/components/networkAgent.js:380 msgid "Network name" msgstr "Nume de rețea" #: js/ui/components/networkAgent.js:388 js/ui/components/networkAgent.js:754 msgid "DSL authentication" msgstr "Autentificare DSL" #: js/ui/components/networkAgent.js:395 js/ui/components/networkAgent.js:759 msgid "PIN code required" msgstr "Este necesar codul PIN" #: js/ui/components/networkAgent.js:396 js/ui/components/networkAgent.js:760 msgid "PIN code is needed for the mobile broadband device" msgstr "Este necesar codul PIN pentru dispozitivul mobil de bandă largă" #: js/ui/components/networkAgent.js:398 msgid "PIN" msgstr "PIN" #: js/ui/components/networkAgent.js:409 js/ui/components/networkAgent.js:751 #: js/ui/components/networkAgent.js:755 js/ui/components/networkAgent.js:767 #: js/ui/components/networkAgent.js:771 #, javascript-format msgid "A password is required to connect to “%s”." msgstr "Este necesară o parolă pentru conectarea la „%s”." #: js/ui/components/networkAgent.js:770 msgid "VPN password" msgstr "Parolă VPN" #: js/ui/components/polkitAgent.js:46 msgid "Authentication Required" msgstr "Necesită autentificare" #: js/ui/components/polkitAgent.js:86 msgid "Administrator" msgstr "Administrator" #: js/ui/components/polkitAgent.js:151 msgid "Authenticate" msgstr "Autentificare" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:265 js/ui/shellMountOperation.js:417 msgid "Sorry, that didn’t work. Please try again." msgstr "Nu a funcționat. Încercați din nou." #: js/ui/ctrlAltTab.js:25 js/ui/overviewControls.js:418 msgid "Windows" msgstr "Ferestre" #: js/ui/dash.js:206 js/ui/dash.js:252 msgid "Show Apps" msgstr "Arată aplicațiile" #. Translators: this is the name of the dock/favorites area on #. the bottom of the overview #: js/ui/dash.js:410 msgid "Dash" msgstr "Dash" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:101 msgid "%B %-d %Y" msgstr "%B %-d %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:108 msgid "%A %B %e %Y" msgstr "%A %B %e %Y" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:174 msgctxt "calendar heading" msgid "%B %-d" msgstr "%B %-d" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:177 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%B %-d %Y" #: js/ui/dateMenu.js:183 msgid "Today" msgstr "Astăzi" #: js/ui/dateMenu.js:187 msgid "Tomorrow" msgstr "Mâine" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:218 msgctxt "event list time" msgid "All Day" msgstr "Toată ziua" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:240 msgid "%m/%d" msgstr "%m/%d" #: js/ui/dateMenu.js:291 msgid "No Events" msgstr "Nu există evenimente" #: js/ui/dateMenu.js:413 msgid "Add world clocks…" msgstr "Adaugă un fus orar…" #: js/ui/dateMenu.js:414 msgid "World Clocks" msgstr "Fusuri orare" #: js/ui/dateMenu.js:704 msgid "Loading…" msgstr "Se încarcă…" #: js/ui/dateMenu.js:714 msgid "Go online for weather information" msgstr "Conectați-vă la internet pentru informații despre vreme" #: js/ui/dateMenu.js:716 msgid "Weather information is currently unavailable" msgstr "Informațiile despre vreme nu sunt disponibile momentan" #: js/ui/dateMenu.js:726 msgid "Weather" msgstr "Vreme" #: js/ui/dateMenu.js:728 msgid "Select weather location…" msgstr "Selectează locația vremii…" #: js/ui/endSessionDialog.js:48 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "Ieșire din sesiune pentru %s" #: js/ui/endSessionDialog.js:49 msgctxt "title" msgid "Log Out" msgstr "Ieșire din sesiune" #: js/ui/endSessionDialog.js:52 #, javascript-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "%s va fi scos din sesiune automat în %d secundă." msgstr[1] "%s va fi scos din sesiune automat în %d secunde." msgstr[2] "%s va fi scos din sesiune automat în %d de secunde." #: js/ui/endSessionDialog.js:58 #, javascript-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "Veți fi scos din sesiune automat în %d secundă." msgstr[1] "Veți fi scos din sesiune automat în %d secunde." msgstr[2] "Veți fi scos din sesiune automat în %d de secunde." #: js/ui/endSessionDialog.js:65 msgctxt "button" msgid "Log Out" msgstr "Ieșire din sesiune" #: js/ui/endSessionDialog.js:71 js/ui/status/system.js:176 msgctxt "title" msgid "Power Off" msgstr "Oprire" #: js/ui/endSessionDialog.js:72 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Instalarea actualizărilor și repornirea" #: js/ui/endSessionDialog.js:75 #, javascript-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "Sistemul se va opri automat în %d secundă." msgstr[1] "Sistemul se va opri automat în %d secunde." msgstr[2] "Sistemul se va opri automat în %d de secunde." #: js/ui/endSessionDialog.js:79 js/ui/endSessionDialog.js:98 msgctxt "checkbox" msgid "Install pending software updates" msgstr "Instalează actualizările în așteptare" #: js/ui/endSessionDialog.js:83 msgctxt "button" msgid "Power Off" msgstr "Oprire" #: js/ui/endSessionDialog.js:90 msgctxt "title" msgid "Restart" msgstr "Repornire" #: js/ui/endSessionDialog.js:91 msgctxt "title" msgid "Install Updates & Restart" msgstr "Instalează actualizările și repornește" #: js/ui/endSessionDialog.js:94 #, javascript-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "Sistemul se va reporni automat în %d secundă." msgstr[1] "Sistemul se va reporni automat în %d secunde." msgstr[2] "Sistemul se va reporni automat în %d de secunde." #: js/ui/endSessionDialog.js:102 msgctxt "button" msgid "Restart" msgstr "Repornire" #: js/ui/endSessionDialog.js:110 msgctxt "title" msgid "Restart & Install Updates" msgstr "Repornire și instalare actualizări" #: js/ui/endSessionDialog.js:113 #, javascript-format msgid "The system will automatically restart and install updates in %d second." msgid_plural "" "The system will automatically restart and install updates in %d seconds." msgstr[0] "Sistemul se va reporni automat în %d secundă." msgstr[1] "Sistemul se va reporni automat în %d secunde." msgstr[2] "Sistemul se va reporni automat în %d de secunde." #: js/ui/endSessionDialog.js:120 js/ui/endSessionDialog.js:141 msgctxt "button" msgid "Restart & Install" msgstr "Repornește și instalează" #: js/ui/endSessionDialog.js:122 msgctxt "button" msgid "Install & Power Off" msgstr "Instalează și oprește" #: js/ui/endSessionDialog.js:123 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Oprește după ce actualizările au fost instalate" #: js/ui/endSessionDialog.js:130 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "Repornire și instalare înnoiri" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:135 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "%s %s va fi instalată după repornire. Instalarea înnoirii poate dura mult " "timp: asigurați-vă că ați făcut o copie de siguranță și că calculatorul este " "conectat la rețeaua electrică." #: js/ui/endSessionDialog.js:284 msgid "Low battery power: please plug in before installing updates." msgstr "" "Putere de baterie scăzută: conectați înainte de a instala actualizările." #: js/ui/endSessionDialog.js:293 msgid "Some applications are busy or have unsaved work" msgstr "Unele aplicații sunt ocupate sau au muncă nesalvată" #: js/ui/endSessionDialog.js:298 msgid "Other users are logged in" msgstr "Alți utilizatori sunt autentificați" #: js/ui/endSessionDialog.js:468 msgctxt "button" msgid "Boot Options" msgstr "Opțiuni de inițializare" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:673 #, javascript-format msgid "%s (remote)" msgstr "%s (la distanță)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:676 #, javascript-format msgid "%s (console)" msgstr "%s (consolă)" #: js/ui/extensionDownloader.js:282 msgid "Install" msgstr "Instalează" #: js/ui/extensionDownloader.js:288 msgid "Install Extension" msgstr "Instalează extensia" #: js/ui/extensionDownloader.js:289 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "Descărcați și instalați „%s” de la extensions.gnome.org?" #: js/ui/extensionSystem.js:354 msgid "Extension Updates Available" msgstr "Actualizări de extensie disponibile" #: js/ui/extensionSystem.js:355 msgid "Extension updates are ready to be installed." msgstr "Actualizările de extensie sunt gata de instalat." #: js/ui/inhibitShortcutsDialog.js:70 msgid "Allow inhibiting shortcuts" msgstr "Permite inhibarea scurtăturilor" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:73 #, javascript-format msgid "The app %s wants to inhibit shortcuts" msgstr "Aplicația %s dorește să inhibe scurtăturile" #: js/ui/inhibitShortcutsDialog.js:74 msgid "An app wants to inhibit shortcuts" msgstr "O aplicație vrea să inhibe scurtăturile" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:81 #, javascript-format msgid "You can restore shortcuts by pressing %s." msgstr "Puteți restaura scurtăturile apăsând %s." #: js/ui/kbdA11yDialog.js:34 msgid "Slow Keys Turned On" msgstr "Taste încete pornite" #: js/ui/kbdA11yDialog.js:35 msgid "Slow Keys Turned Off" msgstr "Taste încete oprite" #: js/ui/kbdA11yDialog.js:36 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "Tocmai ați ținut apăsată tasta Shift pentru 8 secunde. Aceasta este " "scurtătra pentru funcționalitatea Taste încete, care afectează modul în care " "tastatura funcționează." #: js/ui/kbdA11yDialog.js:42 msgid "Sticky Keys Turned On" msgstr "Taste persistente pornite" #: js/ui/kbdA11yDialog.js:43 msgid "Sticky Keys Turned Off" msgstr "Taste persistente oprite" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "Tocmai ați apăsat tasta Shift de 5 ori la rând. Aceasta este scurtătura " "pentru funcționalitatea Taste persistente, care afectează modul în care " "tastatura funcționează." #: js/ui/kbdA11yDialog.js:47 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" "Tocmai ați apăsat două taste simultan, sau apăsat tasta Shift de 5 ori la " "rând. Aceasta oprește funcționalitatea Taste persistente, care afectează " "modul în care tastatura funcționează." #: js/ui/kbdA11yDialog.js:57 msgid "Leave On" msgstr "Lasă pornit" #: js/ui/kbdA11yDialog.js:57 msgid "Turn On" msgstr "Pornește" #: js/ui/kbdA11yDialog.js:67 js/ui/status/network.js:455 msgid "Turn Off" msgstr "Oprește" #: js/ui/kbdA11yDialog.js:67 msgid "Leave Off" msgstr "Lasă oprit" #: js/ui/keyboard.js:181 js/ui/status/keyboard.js:899 msgid "Keyboard Settings" msgstr "Setări tastatură" #: js/ui/lookingGlass.js:724 msgid "No extensions installed" msgstr "Nicio extensie instalată" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:785 #, javascript-format msgid "%s has not emitted any errors." msgstr "%s nu a emis nicio eroare." #: js/ui/lookingGlass.js:791 msgid "Hide Errors" msgstr "Ascunde erorile" #: js/ui/lookingGlass.js:795 js/ui/lookingGlass.js:872 msgid "Show Errors" msgstr "Afișează erorile" #: js/ui/lookingGlass.js:804 msgid "Active" msgstr "Activ" #: js/ui/lookingGlass.js:807 msgid "Inactive" msgstr "Inactiv" #: js/ui/lookingGlass.js:809 msgid "Error" msgstr "Eroare" #: js/ui/lookingGlass.js:811 msgid "Out of date" msgstr "Învechit" #: js/ui/lookingGlass.js:813 msgid "Downloading" msgstr "Se descarcă" #: js/ui/lookingGlass.js:815 msgid "Deactivating" msgstr "Se dezactivează" #: js/ui/lookingGlass.js:817 msgid "Activating" msgstr "Se activează" #: js/ui/lookingGlass.js:850 msgid "View Source" msgstr "Vizualizează sursa" #: js/ui/lookingGlass.js:861 msgid "Web Page" msgstr "Pagină Web" #: js/ui/main.js:279 msgid "System was put in unsafe mode" msgstr "Sistemul a fost pus în modul nesigur" #: js/ui/main.js:280 msgid "Apps now have unrestricted access" msgstr "Aplicațiile au acum acces nerestricționat" #: js/ui/main.js:283 js/ui/overview.js:54 msgid "Undo" msgstr "Anulează" #: js/ui/main.js:340 msgid "Logged in as a privileged user" msgstr "Autentificat ca utilizator privilegiat" #: js/ui/main.js:341 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" "Rularea unei extensii ca un utilizator privilegia ar trebui să fie evitată " "pentru motive de securitate. Dacă este posibil, ar trebui să vă " "autentificați ca un utilizator normal." #: js/ui/main.js:389 msgid "Screen Lock disabled" msgstr "Blocarea ecranului este dezactivată" #: js/ui/main.js:390 msgid "Screen Locking requires the GNOME display manager." msgstr "Blocarea ecranului necesită administratorul de afișaj GNOME." #. Translators: this is the string displayed in the header when a message #. source doesn't have a name #: js/ui/messageList.js:400 msgid "Unknown App" msgstr "Aplicație necunoscută" #: js/ui/messageTray.js:328 js/ui/messageTray.js:330 msgid "Notification sound" msgstr "Sunet de înștiințare" #: js/ui/mpris.js:198 msgid "Unknown artist" msgstr "Artist necunoscut" #: js/ui/mpris.js:208 msgid "Unknown title" msgstr "Titlu necunoscut" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:342 msgid "Type to search" msgstr "Tastați pentru a căuta" #: js/ui/overviewControls.js:406 msgid "Apps" msgstr "Aplicații" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:67 msgid "Overview" msgstr "Prezentare generală" #: js/ui/padOsd.js:100 msgid "New shortcut…" msgstr "Scurtătură nouă…" #: js/ui/padOsd.js:153 msgid "App defined" msgstr "Aplicație definită" #: js/ui/padOsd.js:154 msgid "Show on-screen help" msgstr "Arată ajutorul pe ecran" #: js/ui/padOsd.js:155 msgid "Switch monitor" msgstr "Comută monitorul" #: js/ui/padOsd.js:156 msgid "Assign keystroke" msgstr "Alochează tasta apăsată" #: js/ui/padOsd.js:225 msgid "Done" msgstr "Gata" #: js/ui/padOsd.js:728 msgid "Edit…" msgstr "Editează…" #: js/ui/padOsd.js:775 msgid "None" msgstr "Nespecificat" #: js/ui/padOsd.js:846 msgid "Press a button to configure" msgstr "Apăsați un buton de configurat" #: js/ui/padOsd.js:847 msgid "Press Esc to exit" msgstr "Apăsați Esc pentru a ieși" #: js/ui/padOsd.js:850 msgid "Press any key to exit" msgstr "Apăsați orice tastă pentru a ieși" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:425 msgid "Activities" msgstr "Activități" #: js/ui/panel.js:506 msgctxt "System menu in the top bar" msgid "System" msgstr "Sistem" #: js/ui/panel.js:680 msgid "Top Bar" msgstr "Bara de sus" #: js/ui/quickSettings.js:187 msgid "Open menu" msgstr "Deschide meniul" #: js/ui/runDialog.js:63 msgid "Run a Command" msgstr "Rulează o comandă" #: js/ui/runDialog.js:78 msgid "Press ESC to close" msgstr "Apăsați ESC pentru a închide" #: js/ui/runDialog.js:243 msgid "Restart is not available on Wayland" msgstr "Repornirea nu este disponibilă în Wayland" #: js/ui/runDialog.js:248 msgid "Restarting…" msgstr "Se repornește…" #: js/ui/screenShield.js:235 msgid "GNOME needs to lock the screen" msgstr "GNOME trebuie să blocheze ecranul" #: js/ui/screenShield.js:276 js/ui/screenShield.js:669 msgid "Unable to lock" msgstr "Blocare nereușită" #: js/ui/screenShield.js:277 js/ui/screenShield.js:670 msgid "Lock was blocked by an app" msgstr "Blocarea a fost împiedicată de o aplicație" #: js/ui/screenshot.js:1254 msgid "Selection" msgstr "Selecție" #: js/ui/screenshot.js:1264 msgid "Area Selection" msgstr "Selecția zonei" #: js/ui/screenshot.js:1269 msgid "Screen" msgstr "Ecran" #: js/ui/screenshot.js:1279 msgid "Screen Selection" msgstr "Selecția ecranului" #: js/ui/screenshot.js:1284 msgid "Window" msgstr "Fereastră" #: js/ui/screenshot.js:1294 msgid "Window Selection" msgstr "Selecție fereastră" #. Translators: entry in the window right click menu. #: js/ui/screenshot.js:1319 js/ui/status/system.js:113 js/ui/windowMenu.js:30 msgid "Take Screenshot" msgstr "Ia captură de ecran" #: js/ui/screenshot.js:1335 msgid "Record Screen" msgstr "Înregistrează ecranul" #. Translators: since this string refers to an action, #. it needs to be phrased as a verb. #: js/ui/screenshot.js:1352 msgid "Capture" msgstr "Captură" #: js/ui/screenshot.js:1374 msgid "Show Pointer" msgstr "Arată cursorul" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1998 msgid "Screencasts" msgstr "Înregistrări de ecran" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast from 07-17-2013 10:00:46 PM" #: js/ui/screenshot.js:2003 #, no-c-format msgid "Screencast from %d %t" msgstr "Înregistrare de ecran de la %d %t" #. Translators: notification title. #: js/ui/screenshot.js:2049 msgid "Screencast recorded" msgstr "Înregistrarea ecranului efectuată" #. Translators: notification title. #: js/ui/screenshot.js:2062 msgid "Screencast failed to start" msgstr "Înregistrarea ecranului nu a putut începe" #. Translators: notification title. #: js/ui/screenshot.js:2068 msgid "Screencast ended: Out of disk space" msgstr "Înregistrarea ecranului s-a terminat: nu mai există spațiu pe disc" #. We can encourage user to try again on service crashes since the #. recorder will auto-blocklist the pipeline that crashed. #. Translators: notification title. #: js/ui/screenshot.js:2074 msgid "Screencast ended unexpectedly, please try again" msgstr "Înregistrarea de ecran s-a terminat neașteptat, încercați din nou" #. Translators: notification title. #: js/ui/screenshot.js:2077 msgid "Screencast ended unexpectedly" msgstr "Înregistrarea de ecran s-a terminat neașteptat" #. Translators: notification source name. #: js/ui/screenshot.js:2087 js/ui/screenshot.js:2329 msgid "Screenshot" msgstr "Captură de ecran" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:2094 msgid "Click here to view the video." msgstr "Clic aici pentru a vizualiza video-ul." #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:2102 js/ui/screenshot.js:2345 msgid "Show in Files" msgstr "Arată în Fișiere" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2289 #, javascript-format msgid "Screenshot from %s" msgstr "Captură de ecran de la %s" #. Translators: notification title. #: js/ui/screenshot.js:2335 msgid "Screenshot captured" msgstr "Captură de ecran capturată" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2337 msgid "You can paste the image from the clipboard." msgstr "Puteți lipi imaginea de la clipboard." #: js/ui/screenshot.js:2393 js/ui/screenshot.js:2557 msgid "Screenshot taken" msgstr "Captură de ecran efectuată" #: js/ui/search.js:831 msgid "Searching…" msgstr "Se caută…" #: js/ui/search.js:833 msgid "No results." msgstr "Niciun rezultat." #: js/ui/search.js:964 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "încă %d" msgstr[1] "încă %d" msgstr[2] "încă %d" #: js/ui/searchController.js:89 #: subprojects/extensions-app/data/ui/extensions-window.ui:73 msgid "Search" msgstr "Caută" #: js/ui/shellEntry.js:23 msgid "Copy" msgstr "Copiere" #: js/ui/shellEntry.js:28 msgid "Paste" msgstr "Lipire" #: js/ui/shellEntry.js:80 msgid "Show Text" msgstr "Afișează text" #: js/ui/shellEntry.js:82 msgid "Hide Text" msgstr "Ascunde text" #: js/ui/shellEntry.js:176 msgid "Caps lock is on." msgstr "Caps lock este activat." #: js/ui/shellMountOperation.js:288 msgid "Hidden Volume" msgstr "Volum ascuns" #: js/ui/shellMountOperation.js:291 msgid "Windows System Volume" msgstr "Volum de sistem Windows" #: js/ui/shellMountOperation.js:294 msgid "Uses Keyfiles" msgstr "Utilizează fișiere cheie" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:302 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead." msgstr "" "Pentru a debloca un volum care utilizează fișiere cheie, utilizați în schimb " "utilitatea %s." #: js/ui/shellMountOperation.js:306 msgid "" "You need an external utility like Disks to unlock a volume that uses " "keyfiles." msgstr "" "Aveți nevoie de o utilitate externă precum Discuri pentru a debloca " "un volum care utilizează fișiere cheie." #: js/ui/shellMountOperation.js:314 msgid "PIM Number" msgstr "Număr PIM" #: js/ui/shellMountOperation.js:373 msgid "Remember Password" msgstr "Memorează parola" #: js/ui/shellMountOperation.js:388 msgid "Unlock" msgstr "Deblochează" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:402 #, javascript-format msgid "Open %s" msgstr "Deschide %s" #: js/ui/shellMountOperation.js:438 msgid "The PIM must be a number or empty." msgstr "PIM-ul trebuie să fie un număr sau gol." #: js/ui/status/accessibility.js:36 msgid "Accessibility" msgstr "Accesibilitate" #: js/ui/status/accessibility.js:46 msgid "High Contrast" msgstr "Contrast ridicat" #: js/ui/status/accessibility.js:49 msgid "Zoom" msgstr "Zoom" #: js/ui/status/accessibility.js:56 msgid "Screen Reader" msgstr "Cititor de ecran" #: js/ui/status/accessibility.js:60 msgid "Screen Keyboard" msgstr "Tastatură virtuală" #: js/ui/status/accessibility.js:64 msgid "Visual Alerts" msgstr "Alerte vizuale" #: js/ui/status/accessibility.js:68 msgid "Sticky Keys" msgstr "Taste persistente" #: js/ui/status/accessibility.js:72 msgid "Slow Keys" msgstr "Taste încete" #: js/ui/status/accessibility.js:76 msgid "Bounce Keys" msgstr "Taste fără repetiție" #: js/ui/status/accessibility.js:80 msgid "Mouse Keys" msgstr "Butoanele mausului" #: js/ui/status/accessibility.js:85 msgid "Accessibility Settings" msgstr "Configurări de accesibilitate" #: js/ui/status/accessibility.js:142 msgid "Large Text" msgstr "Text mare" #: js/ui/status/autoRotate.js:14 msgid "Auto Rotate" msgstr "Rotește automat" #: js/ui/status/backgroundApps.js:156 msgctxt "title" msgid "Background Apps" msgstr "Aplicații de fundal" #: js/ui/status/backgroundApps.js:171 msgid "Apps known to be running without a window" msgstr "Aplicații care se știe că rulează fără o fereastră" #: js/ui/status/backgroundApps.js:182 msgid "App Settings" msgstr "Configurări aplicație" #: js/ui/status/backgroundApps.js:239 msgid "No Background Apps" msgstr "Nu sunt aplicații de fundal" #: js/ui/status/backgroundApps.js:241 #, javascript-format msgid "%d Background App" msgid_plural "%d Background Apps" msgstr[0] "%d aplicație de fundal" msgstr[1] "%d aplicații de fundal" msgstr[2] "%d de aplicații de fundal" #: js/ui/status/backlight.js:40 msgid "Keyboard Brightness" msgstr "Luminozitate tastatură" #: js/ui/status/backlight.js:80 msgid "Off" msgstr "Oprit" #: js/ui/status/backlight.js:81 msgid "Low" msgstr "Scăzut" #: js/ui/status/backlight.js:82 msgid "High" msgstr "Ridicat" #: js/ui/status/backlight.js:148 js/ui/status/keyboard.js:881 msgid "Keyboard" msgstr "Tastatură" #: js/ui/status/bluetooth.js:246 js/ui/status/network.js:360 msgid "Disconnect" msgstr "Deconectează" #: js/ui/status/bluetooth.js:263 js/ui/status/bluetooth.js:265 msgid "Bluetooth" msgstr "Bluetooth" #: js/ui/status/bluetooth.js:288 js/ui/status/network.js:1900 msgid "Bluetooth Settings" msgstr "Configurări Bluetooth" #: js/ui/status/bluetooth.js:335 msgid "No available or connected devices" msgstr "Nu sunt dispozitive disponibile sau conectate" #: js/ui/status/bluetooth.js:336 msgid "Turn on Bluetooth to connect to devices" msgstr "Activați Bluetooth pentru a vă conecta la dispozitive" #. Translators: This is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:390 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d conectată" msgstr[1] "%d conectate" msgstr[2] "%d conectate" #: js/ui/status/brightness.js:34 msgid "Brightness" msgstr "Luminozitate" #: js/ui/status/darkMode.js:12 msgid "Dark Style" msgstr "Stil întunecat" #: js/ui/status/dwellClick.js:15 msgid "Single Click" msgstr "Clic simplu" #: js/ui/status/dwellClick.js:20 msgid "Double Click" msgstr "Clic dublu" #: js/ui/status/dwellClick.js:25 msgid "Drag" msgstr "Trage" #: js/ui/status/dwellClick.js:30 msgid "Secondary Click" msgstr "Clic secundar" #: js/ui/status/dwellClick.js:39 msgid "Dwell Click" msgstr "Clic întârziat" #: js/ui/status/keyboard.js:898 msgid "Show Keyboard Layout" msgstr "Afișează aranjamentul tastaturii" #: js/ui/status/location.js:339 msgid "Allow location access" msgstr "Permite accesul la locație" #. Translators: %s is an application name #: js/ui/status/location.js:341 #, javascript-format msgid "The app %s wants to access your location" msgstr "Aplicația %s dorește să vă acceseze locația" #: js/ui/status/location.js:351 msgid "Location access can be changed at any time from the privacy settings." msgstr "" "Accesul la locație poate fi schimbat oricând din configurările de " "confidențialitate." #: js/ui/status/location.js:359 msgid "Deny Access" msgstr "Refuză accesul" #: js/ui/status/location.js:364 msgid "Grant Access" msgstr "Permite accesul" #: js/ui/status/network.js:62 msgid "" msgstr "" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:354 #, javascript-format msgid "Disconnect %s" msgstr "Deconectează %s" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:356 #, javascript-format msgid "Connect to %s" msgstr "Conectează la %s" #: js/ui/status/network.js:1050 msgid "Secure" msgstr "Sigur" #: js/ui/status/network.js:1050 msgid "Not secure" msgstr "Nu este sigur" #: js/ui/status/network.js:1051 #, javascript-format msgid "Signal strength %s%%" msgstr "Putere semnal %s%%" #. translators: The first placeholder is the network name, the second and indication whether it is secure, and the last the signal strength indication #: js/ui/status/network.js:1053 #, javascript-format msgid "%s, %s, %s" msgstr "%s, %s, %s" #. Translators: %s is a network identifier #: js/ui/status/network.js:1155 #, javascript-format msgid "%s Hotspot" msgstr "Hotspot %s" #: js/ui/status/network.js:1426 #, javascript-format msgid "%d connected" msgid_plural "%d connected" msgstr[0] "%d conectată" msgstr[1] "%d conectate" msgstr[2] "%d conectate" #: js/ui/status/network.js:1524 js/ui/status/network.js:1540 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1525 msgid "VPN Settings" msgstr "Configurări VPN" #: js/ui/status/network.js:1785 msgid "Wi–Fi" msgstr "Wi-Fi" #: js/ui/status/network.js:1787 msgid "All Networks" msgstr "Toate rețelele" #: js/ui/status/network.js:1884 msgid "Wired Connections" msgstr "Conexiuni cu fir" #: js/ui/status/network.js:1885 msgid "Wired Settings" msgstr "Configurări pentru conexiune cu fir" #: js/ui/status/network.js:1899 msgid "Bluetooth Tethers" msgstr "Conexiuni Bluetooth" #. Translators: "Tether" from "Bluetooth Tether" #: js/ui/status/network.js:1906 msgid "Tether" msgstr "Conexiune" #: js/ui/status/network.js:1919 msgid "Mobile Connections" msgstr "Conexiuni mobile" #: js/ui/status/network.js:1921 msgid "Mobile Broadband Settings" msgstr "Configurări de rețea de bandă largă mobilă" #. Translators: "Mobile" from "Mobile Broadband" #: js/ui/status/network.js:1930 msgid "Mobile" msgstr "Mobil" #: js/ui/status/network.js:2035 msgid "Connection failed" msgstr "Conexiune eșuată" #: js/ui/status/network.js:2036 msgid "Activation of network connection failed" msgstr "Activarea conexiunii de rețea a eșuat" #: js/ui/status/nightLight.js:21 msgid "Night Light" msgstr "Lumină de noapte" #: js/ui/status/powerProfiles.js:21 msgctxt "Power profile" msgid "Performance" msgstr "Performanță" #: js/ui/status/powerProfiles.js:26 msgctxt "Power profile" msgid "Balanced" msgstr "Echilibrată" #: js/ui/status/powerProfiles.js:31 msgctxt "Power profile" msgid "Power Saver" msgstr "Economizor de energie" #: js/ui/status/powerProfiles.js:41 js/ui/status/powerProfiles.js:71 msgid "Power Mode" msgstr "Mod de alimentare" #: js/ui/status/powerProfiles.js:73 msgid "Power Settings" msgstr "Configurări consum" #: js/ui/status/remoteAccess.js:76 msgid "Stop Screencast" msgstr "Oprește înregistrarea ecranului" #: js/ui/status/remoteAccess.js:146 msgid "Stop Screen Sharing" msgstr "Oprește partajarea ecranului" #: js/ui/status/rfkill.js:101 msgid "Airplane Mode" msgstr "Mod avion" #: js/ui/status/system.js:170 msgid "Power Off Menu" msgstr "Meniu oprire" #: js/ui/status/system.js:178 msgid "Suspend" msgstr "Suspendare" #: js/ui/status/system.js:183 msgid "Restart…" msgstr "Repornește…" #: js/ui/status/system.js:188 msgid "Power Off…" msgstr "Oprire…" #: js/ui/status/system.js:195 #: subprojects/extensions-app/data/ui/extensions-window.ui:124 msgid "Log Out…" msgstr "Deautentificare…" #: js/ui/status/system.js:200 msgid "Switch User…" msgstr "Comută utilizatorul…" #: js/ui/status/system.js:244 msgctxt "action" msgid "Lock Screen" msgstr "Blochează ecranul" #: js/ui/status/thunderbolt.js:310 msgid "Unknown Thunderbolt device" msgstr "Dispozitiv Thunderbolt necunoscut" #: js/ui/status/thunderbolt.js:311 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" "Un nou dispozitiv a fost detectat în timp ce erați plecat. Deconectați și " "reconectați dispozitivul pentru a începe utilizarea lui." #: js/ui/status/thunderbolt.js:314 msgid "Unauthorized Thunderbolt device" msgstr "Dispozitiv Thunderbolt neautorizat" #: js/ui/status/thunderbolt.js:315 msgid "" "New device has been detected and needs to be authorized by an administrator." msgstr "" "Un nou dispozitiv a fost detectat și trebuie autorizat de un administrator." #: js/ui/status/thunderbolt.js:321 msgid "Thunderbolt authorization error" msgstr "Eroare de autorizare Thunderbolt" #: js/ui/status/thunderbolt.js:322 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "Nu s-a putut autoriza dispozitivul Thunderbolt: %s" #: js/ui/status/volume.js:220 msgid "Volume changed" msgstr "Volumul a fost schimbat" #: js/ui/status/volume.js:233 msgid "Unmute" msgstr "Activează sunetul" #: js/ui/status/volume.js:233 msgid "Mute" msgstr "Mut" #: js/ui/status/volume.js:288 msgid "Volume" msgstr "Volum" #: js/ui/status/volume.js:304 msgid "Sound Output" msgstr "Ieșire sunet" #: js/ui/status/volume.js:376 msgid "Sound Input" msgstr "Intrare sunet" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:22 msgid "Mirror" msgstr "Oglindește" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:31 msgid "Join Displays" msgstr "Unește afișajele" #. Translators: this is for using only external displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:41 msgid "External Only" msgstr "Numai extern" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:49 msgid "Built-in Only" msgstr "Numai încorporat" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:380 msgid "%A %B %-d" msgstr "%A %B %-d" #: js/ui/unlockDialog.js:386 msgid "Swipe up to unlock" msgstr "Glisați în sus pentru a debloca" #: js/ui/unlockDialog.js:387 msgid "Click or press a key to unlock" msgstr "Apăsați clic sau o tastă pentru a debloca" #: js/ui/unlockDialog.js:570 msgid "Unlock Window" msgstr "Deblochează fereastră" #: js/ui/unlockDialog.js:579 msgid "Log in as another user" msgstr "Intră în sesiune ca utilizator diferit" #: js/ui/welcomeDialog.js:49 #, javascript-format msgid "GNOME %s" msgstr "%s GNOME" #: js/ui/welcomeDialog.js:53 #, javascript-format msgid "Welcome to %s" msgstr "Bine ați venit la %s" #: js/ui/welcomeDialog.js:54 msgid "If you want to learn your way around, check out the tour." msgstr "Dacă doriți să aflați despre împrejurimi, consultați turul Gnome." #: js/ui/welcomeDialog.js:63 msgid "Skip" msgstr "Omite" #: js/ui/welcomeDialog.js:68 msgid "Take Tour" msgstr "Începe turul" #: js/ui/windowAttentionHandler.js:20 #, javascript-format msgid "“%s” is ready" msgstr "„%s” este gata" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:69 msgid "Keep these display settings?" msgstr "Doriți să păstrați aceste configurări de afișaj?" #: js/ui/windowManager.js:79 msgid "Revert Settings" msgstr "Restaurează configurările" #: js/ui/windowManager.js:84 msgid "Keep Changes" msgstr "Păstrați modificările" #: js/ui/windowManager.js:104 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "Schimbările vor fi restaurare în %d secundă" msgstr[1] "Schimbările vor fi restaurare în %d secunde" msgstr[2] "Schimbările vor fi restaurare în %d de secunde" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:496 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:42 msgid "Hide" msgstr "Ascunde" #: js/ui/windowMenu.js:49 msgid "Restore" msgstr "Restaurează" #: js/ui/windowMenu.js:53 msgid "Maximize" msgstr "Maximizează" #: js/ui/windowMenu.js:60 msgid "Move" msgstr "Mută" #: js/ui/windowMenu.js:80 msgid "Resize" msgstr "Redimensionează" #: js/ui/windowMenu.js:101 msgid "Move Titlebar Onscreen" msgstr "Mută bara de titlu pe ecran" #: js/ui/windowMenu.js:106 msgid "Always on Top" msgstr "Întotdeauna deasupra" #: js/ui/windowMenu.js:125 msgid "Always on Visible Workspace" msgstr "Întotdeauna pe spațiul de lucru vizibil" #: js/ui/windowMenu.js:139 msgid "Move to Workspace Left" msgstr "Mută pe spațiul de lucru din stânga" #: js/ui/windowMenu.js:145 msgid "Move to Workspace Right" msgstr "Mută pe spațiul de lucru din dreapta" #: js/ui/windowMenu.js:151 msgid "Move to Workspace Up" msgstr "Mută fereastra pe spațiul de lucru de mai sus" #: js/ui/windowMenu.js:157 msgid "Move to Workspace Down" msgstr "Mută fereastra pe spațiul de lucru de mai jos" #: js/ui/windowMenu.js:175 msgid "Move to Monitor Up" msgstr "Mută fereastra cu un monitor mai sus" #: js/ui/windowMenu.js:184 msgid "Move to Monitor Down" msgstr "Mută fereastra cu un monitor mai jos" #: js/ui/windowMenu.js:193 msgid "Move to Monitor Left" msgstr "Mută fereastra cu un monitor spre stânga" #: js/ui/windowMenu.js:202 msgid "Move to Monitor Right" msgstr "Mută fereastra cu un monitor spre dreapta" #: js/ui/windowMenu.js:210 msgid "Close" msgstr "Închide" #: src/main.c:529 subprojects/extensions-tool/src/main.c:336 msgid "Print version" msgstr "Tipărește versiunea" #: src/main.c:535 msgid "Mode used by GDM for login screen" msgstr "Mod folosit de GDM pentru meniul de autentificare" #: src/main.c:541 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "Utilizează un mod specific, de exemplu „gdm” pentru ecranul de logare" #: src/main.c:547 msgid "List possible modes" msgstr "Enumeră câmpurile care pot fi afișate" #: src/main.c:553 msgid "Force animations to be enabled" msgstr "Forțează animațiile să fie activate" #: src/shell-app.c:252 msgctxt "program" msgid "Unknown" msgstr "Necunoscut" #: src/shell-app.c:503 #, c-format msgid "Failed to launch “%s”" msgstr "Nu s-a putut lansa „%s”" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match." msgstr "Parolele nu se potrivesc." #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "Parola nu poate fi goală" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "Fereastra de autentificare a fost închisă de către utilizator" #: src/st/st-icon-theme.c:1865 #, c-format msgid "Icon '%s' not present in theme %s" msgstr "Iconița „%s” nu este prezentă în tema %s" #: src/st/st-icon-theme.c:3454 src/st/st-icon-theme.c:3757 msgid "Failed to load icon" msgstr "Nu s-a putut încărca iconița" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 msgid "Manage your GNOME Extensions" msgstr "Administrați Exensiile GNOME" #. developer_name tag deprecated with Appstream 1.0 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:19 msgid "The GNOME Project" msgstr "Proiectul GNOME" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:51 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" "Exensii GNOME gestionează actualizarea extensiilor, configurarea " "preferințelor extensiei și eliminarea sau dezactivarea extensiilor nedorite." #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:80 msgid "Main Window" msgstr "Fereastră principală" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:84 msgid "Available Updates" msgstr "Actualizări disponibile" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:88 msgid "Search View" msgstr "Vizualizarea căutării" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "Configurarea extensiilor pentru Vizualizatorul activităților GNOME" #: subprojects/extensions-app/js/extensionManager.js:237 #, javascript-format msgid "" "The installed version of this extension (%s) is incompatible with the " "current version of GNOME (%s). The extension has been disabled." msgstr "" "Versiunea instalată a acestei extensii (%s) nu este compatibilă cu versiunea " "curentă de GNOME (%s). Extensia a fost dezactivată." #: subprojects/extensions-app/js/extensionManager.js:238 #, javascript-format msgid "" "The installed version of this extension is incompatible with the current " "version of GNOME (%s). The extension has been disabled." msgstr "" "Versiunea instalată a acestei extensii nu este compatibilă cu versiunea " "curentă de GNOME (%s). Extensia a fost dezactivată." #: subprojects/extensions-app/js/extensionManager.js:242 msgid "" "An error has occurred in this extension. This could cause issues elsewhere " "in the system. It is recommended to turn the extension off until the error " "is resolved." msgstr "" "A apărut o eroare în această extensie. Acest lucru poate cauza probleme în " "alte părți ale sistemului. Este recomandat să opriți extensia până când " "eroarea este rezolvată." #. translators: Details for an extension error #: subprojects/extensions-app/js/extensionManager.js:248 msgid "Error details:" msgstr "Detalii eroare:" #: subprojects/extensions-app/js/extensionRow.js:82 #, javascript-format msgid "Version %s" msgstr "Versiune %s" #: subprojects/extensions-app/js/extensionsWindow.js:113 #, javascript-format msgid "Remove “%s”?" msgstr "Se elimină „%s”?" #: subprojects/extensions-app/js/extensionsWindow.js:114 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "" "Dacă eliminați extensia, trebuie să vă întoarceți să o descărcați dacă " "doriți să o activați din nou" #: subprojects/extensions-app/js/extensionsWindow.js:117 msgid "_Cancel" msgstr "_Anulează" #: subprojects/extensions-app/js/extensionsWindow.js:118 msgid "_Remove" msgstr "_Elimină" #: subprojects/extensions-app/js/extensionsWindow.js:158 msgid "translator-credits" msgstr "" "Florentina Mușat , " "2020-2021, 2023-2024\n" "Daniel Șerbănescu , 2021" #: subprojects/extensions-app/js/extensionsWindow.js:203 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "%d extensie va fi actualizată la următoarea autentificare." msgstr[1] "%d extensii vor fi actualizate la următoarea autentificare." msgstr[2] "%d de extensii vor fi actualizate la următoarea autentificare." #: subprojects/extensions-app/data/ui/extension-row.ui:22 msgid "Error Details" msgstr "Detalii eroare" #: subprojects/extensions-app/data/ui/extension-row.ui:62 msgid "Updates Details" msgstr "Detalii actualizări" #: subprojects/extensions-app/data/ui/extension-row.ui:72 msgid "" "A new version of this extension is ready and will be loaded on next login." msgstr "" "O versiune nouă a acestei extensii este gata și va fi încărcată la " "următoarea autentificare." #: subprojects/extensions-app/data/ui/extension-row.ui:104 msgid "Extension Details" msgstr "Detalii extensie" #: subprojects/extensions-app/data/ui/extension-row.ui:192 msgid "_Website" msgstr "Pagină _web" #: subprojects/extensions-app/data/ui/extension-row.ui:219 msgid "_Settings" msgstr "_Configurări" #: subprojects/extensions-app/data/ui/extension-row.ui:246 msgid "_Remove…" msgstr "_Elimină…" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Keyboard Shortcuts" msgstr "Scurtături de tastatură" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "Despre extensii" #: subprojects/extensions-app/data/ui/extensions-window.ui:64 msgid "Main Menu" msgstr "Meniu principal" #: subprojects/extensions-app/data/ui/extensions-window.ui:106 msgid "Search extensions" msgstr "Caută extensii" #: subprojects/extensions-app/data/ui/extensions-window.ui:134 msgid "_Extensions" msgstr "_Extensii" #: subprojects/extensions-app/data/ui/extensions-window.ui:139 msgid "More Information" msgstr "Mai multe informații" #: subprojects/extensions-app/data/ui/extensions-window.ui:151 msgid "" "Extensions can cause performance and stability issues. It is recommended to " "disable all extensions if you experience problems with your system." msgstr "" "Extensiile pot cauza probleme de performanță și stabilitate. Este recomandat " "să dezactivați toate extensiile dacă întâlniți probleme cu sistemul." #: subprojects/extensions-app/data/ui/extensions-window.ui:178 msgid "User Extensions" msgstr "Extensii de utilizator" #: subprojects/extensions-app/data/ui/extensions-window.ui:198 msgid "System Extensions" msgstr "Extensii de sistem" #: subprojects/extensions-app/data/ui/extensions-window.ui:233 msgid "Search Results" msgstr "Rezultatele căutării" #: subprojects/extensions-app/data/ui/extensions-window.ui:252 msgid "No Results Found" msgstr "Nu s-au găsit rezultate" #: subprojects/extensions-app/data/ui/extensions-window.ui:253 msgid "Try a different search." msgstr "Încercați o căutare diferită." #: subprojects/extensions-app/data/ui/extensions-window.ui:264 msgid "No Installed Extensions" msgstr "Nu sunt extensii instalate" #: subprojects/extensions-app/data/ui/extensions-window.ui:265 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" "Pentru a găsi și adăuga extensii, vizitați extensions.gnome.org." #: subprojects/extensions-app/data/ui/extensions-window.ui:276 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" "Nu a fost posibil să se obțină lista extensiilor instalate. Asigurați-vă că " "sunteți autentificat la GNOME și încercați din nou." #: subprojects/extensions-app/data/ui/help-overlay.ui:9 msgctxt "shortcut window" msgid "General" msgstr "Generale" #: subprojects/extensions-app/data/ui/help-overlay.ui:12 msgctxt "shortcut window" msgid "Open Menu" msgstr "Deschide meniul" #: subprojects/extensions-app/data/ui/help-overlay.ui:18 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Comută căutarea" #: subprojects/extensions-app/data/ui/help-overlay.ui:24 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Arată scurtăturile" #: subprojects/extensions-app/data/ui/help-overlay.ui:30 msgctxt "shortcut window" msgid "Quit" msgstr "Ieșire" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:284 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "Extensia nouă a fost creată cu succes la %s.\n" #: subprojects/extensions-tool/src/command-create.c:376 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" "Numele ar trebui să fie un șir foarte scurt (ideal descriptiv).\n" "Exemple: %s" #: subprojects/extensions-tool/src/command-create.c:382 #: subprojects/extensions-tool/src/main.c:243 msgid "Name" msgstr "Nume" #: subprojects/extensions-tool/src/command-create.c:396 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" "Descrierea este o explicație într-o singură propoziție despre ce face " "extensia.\n" "Exemple: %s" #: subprojects/extensions-tool/src/command-create.c:402 #: subprojects/extensions-tool/src/main.c:246 msgid "Description" msgstr "Descriere" #: subprojects/extensions-tool/src/command-create.c:416 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" "UUID-ul este un identificator global unic pentru extensie.\n" "Aceasta ar trebui să fie în formatul unei adrese de email " "(clicktofocus@janedoe.example.com)\n" #: subprojects/extensions-tool/src/command-create.c:443 msgid "Choose one of the available templates:\n" msgstr "Alege unul din șabloanele existente:\n" #: subprojects/extensions-tool/src/command-create.c:457 msgid "Template" msgstr "Șablon" #: subprojects/extensions-tool/src/command-create.c:515 msgid "The unique identifier of the new extension" msgstr "Identificatorul unic al noii extensii" #: subprojects/extensions-tool/src/command-create.c:518 msgid "NAME" msgstr "NUME" #: subprojects/extensions-tool/src/command-create.c:519 msgid "The user-visible name of the new extension" msgstr "Numele vizibil de utilizator pentru noua extensie" #: subprojects/extensions-tool/src/command-create.c:521 msgid "DESCRIPTION" msgstr "DESCRIERE" #: subprojects/extensions-tool/src/command-create.c:523 msgid "A short description of what the extension does" msgstr "O scurtă descriere despre ce face extensia" #: subprojects/extensions-tool/src/command-create.c:525 #: subprojects/extensions-tool/src/command-pack.c:455 msgid "DOMAIN" msgstr "DOMENIU" #: subprojects/extensions-tool/src/command-create.c:527 msgid "The gettext domain used by the extension" msgstr "Domeniul gettext utilizat de extensie" #: subprojects/extensions-tool/src/command-create.c:529 #: subprojects/extensions-tool/src/command-pack.c:448 msgid "SCHEMA" msgstr "SCHEMĂ" #: subprojects/extensions-tool/src/command-create.c:531 msgid "The GSettings schema used by the extension" msgstr "Schema GSettings utilizată de extensie" #: subprojects/extensions-tool/src/command-create.c:534 msgid "TEMPLATE" msgstr "ȘABLON" #: subprojects/extensions-tool/src/command-create.c:535 msgid "The template to use for the new extension" msgstr "Șablonul de utilizat pentru extensia nouă" #: subprojects/extensions-tool/src/command-create.c:538 msgid "Include prefs.js template" msgstr "Include șablonul prefs.js" #: subprojects/extensions-tool/src/command-create.c:544 msgid "Enter extension information interactively" msgstr "Introdu informațiile extensiei interactiv" #: subprojects/extensions-tool/src/command-create.c:552 msgid "Create a new extension" msgstr "Creează o nouă extensie" #: subprojects/extensions-tool/src/command-create.c:570 #: subprojects/extensions-tool/src/command-list.c:190 msgid "Unknown arguments" msgstr "Argumente necunoscute" #: subprojects/extensions-tool/src/command-create.c:595 msgid "UUID, name and description are required" msgstr "UUID-ul, numele și descrierea sunt necesare" #: subprojects/extensions-tool/src/command-disable.c:62 #: subprojects/extensions-tool/src/command-enable.c:62 #, c-format msgid "Extension “%s” does not exist\n" msgstr "Extensia „%s” nu există\n" #: subprojects/extensions-tool/src/command-disable.c:98 msgid "Disable an extension" msgstr "Dezactivează o extensie" #: subprojects/extensions-tool/src/command-disable.c:116 #: subprojects/extensions-tool/src/command-enable.c:116 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "Niciun UUID dat" #: subprojects/extensions-tool/src/command-disable.c:121 #: subprojects/extensions-tool/src/command-enable.c:121 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "Mai mult de un UUID dat" #: subprojects/extensions-tool/src/command-enable.c:98 msgid "Enable an extension" msgstr "Activează o extensie" #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:66 #: subprojects/extensions-tool/src/main.c:150 msgid "Failed to connect to GNOME Shell\n" msgstr "Nu s-a putut conecta la Shell GNOME\n" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:159 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "Extensia „%s” nu există\n" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "Arată informații despre extensii" #: subprojects/extensions-tool/src/command-install.c:190 msgid "Overwrite an existing extension" msgstr "Suprascrie o extensie existentă" #: subprojects/extensions-tool/src/command-install.c:192 msgid "EXTENSION_BUNDLE" msgstr "PACHET_EXTENSIE" #: subprojects/extensions-tool/src/command-install.c:201 msgid "Install an extension bundle" msgstr "Instalează un pachet de extensii" #: subprojects/extensions-tool/src/command-install.c:219 msgid "No extension bundle specified" msgstr "Niciun pachet de extensii specificat" #: subprojects/extensions-tool/src/command-install.c:225 msgid "More than one extension bundle specified" msgstr "Mai mult de un pachet de extensii specificat" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show user-installed extensions" msgstr "Arată extensiile instalate de utilizator" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show system-installed extensions" msgstr "Arată extensiile instalate de sistem" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Show enabled extensions" msgstr "Arată extensiile activate" #: subprojects/extensions-tool/src/command-list.c:149 msgid "Show disabled extensions" msgstr "Arată extensiile dezactivate" #: subprojects/extensions-tool/src/command-list.c:152 msgid "Show extensions in active state" msgstr "Arată extensiile în starea activă" #: subprojects/extensions-tool/src/command-list.c:155 msgid "Show extensions in inactive state" msgstr "Arată extensiile în starea inactivă" #: subprojects/extensions-tool/src/command-list.c:158 msgid "Show extensions with preferences" msgstr "Arată extensiile cu preferințe" #: subprojects/extensions-tool/src/command-list.c:161 msgid "Show extensions with updates" msgstr "Arată extensiile cu actualizări" #: subprojects/extensions-tool/src/command-list.c:164 msgid "Print extension details" msgstr "Tipărește detaliile extensiei" #: subprojects/extensions-tool/src/command-list.c:172 msgid "List installed extensions" msgstr "Listează extensiile instalate" #: subprojects/extensions-tool/src/command-pack.c:444 msgid "FILE" msgstr "FIȘIER" #: subprojects/extensions-tool/src/command-pack.c:445 msgid "Additional source to include in the bundle" msgstr "Sursă adițională de inclus în pachet" #: subprojects/extensions-tool/src/command-pack.c:449 msgid "A GSettings schema that should be included" msgstr "O schemă GSettings care ar trebui inclusă" #: subprojects/extensions-tool/src/command-pack.c:451 #: subprojects/extensions-tool/src/command-pack.c:462 msgid "DIRECTORY" msgstr "DIRECTOR" #: subprojects/extensions-tool/src/command-pack.c:453 msgid "The directory where translations are found" msgstr "Directorul unde se găsesc traducerile" #: subprojects/extensions-tool/src/command-pack.c:457 msgid "The gettext domain to use for translations" msgstr "Domeniu gettext de folosit pentru traduceri" #: subprojects/extensions-tool/src/command-pack.c:460 msgid "Overwrite an existing pack" msgstr "Suprascrie un pachet existent" #: subprojects/extensions-tool/src/command-pack.c:464 msgid "The directory where the pack should be created" msgstr "Directorul unde pachetul ar trebui creat" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "SOURCE_DIRECTORY" msgstr "DIRECTOR_SURSĂ" #: subprojects/extensions-tool/src/command-pack.c:475 msgid "Create an extension bundle" msgstr "Creează un pachet de extensii" #: subprojects/extensions-tool/src/command-pack.c:495 msgid "More than one source directory specified" msgstr "Mai mult de un director sursă specificat" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "Extensia „%s” nu are preferințe\n" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "Nu s-au putut deschide preferințele pentru extensia „%s”: %s\n" #: subprojects/extensions-tool/src/command-prefs.c:87 msgid "Opens extension preferences" msgstr "Deschide preferințele extensiei" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "Restabilește o extensie" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "Nu se pot dezinstala extensiile de sistem\n" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "Nu s-a putut dezinstala „%s”\n" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "Dezinstalează o extensie" #: subprojects/extensions-tool/src/main.c:76 msgid "Do not print error messages" msgstr "Nu tipări mesajele eroare" #: subprojects/extensions-tool/src/main.c:249 msgid "Path" msgstr "Cale" #: subprojects/extensions-tool/src/main.c:252 msgid "URL" msgstr "URL" #: subprojects/extensions-tool/src/main.c:255 msgid "Original author" msgstr "Autor original" #: subprojects/extensions-tool/src/main.c:261 #: subprojects/extensions-tool/src/main.c:263 #: subprojects/extensions-tool/src/main.c:265 msgid "Version" msgstr "Versiune" #: subprojects/extensions-tool/src/main.c:268 msgid "Enabled" msgstr "Activat" #: subprojects/extensions-tool/src/main.c:268 msgid "Yes" msgstr "Da" #: subprojects/extensions-tool/src/main.c:268 msgid "No" msgstr "Nu" #: subprojects/extensions-tool/src/main.c:271 msgid "State" msgstr "Stare" #: subprojects/extensions-tool/src/main.c:309 msgid "“version” takes no arguments" msgstr "„version” nu primește argumente" #: subprojects/extensions-tool/src/main.c:311 #: subprojects/extensions-tool/src/main.c:331 msgid "Usage:" msgstr "Utilizare:" #: subprojects/extensions-tool/src/main.c:314 msgid "Print version information and exit." msgstr "Tipărește informațiile versiunii și ieși." #: subprojects/extensions-tool/src/main.c:329 #: subprojects/extensions-tool/src/main.c:332 msgid "COMMAND" msgstr "COMANDĂ" #: subprojects/extensions-tool/src/main.c:332 msgid "[ARGS…]" msgstr "[ARGUMENTE…]" #: subprojects/extensions-tool/src/main.c:334 msgid "Commands:" msgstr "Comenzi:" #: subprojects/extensions-tool/src/main.c:335 msgid "Print help" msgstr "Tipărește ajutorul" #: subprojects/extensions-tool/src/main.c:337 msgid "Enable extension" msgstr "Activează extensia" #: subprojects/extensions-tool/src/main.c:338 msgid "Disable extension" msgstr "Dezactivează extensia" #: subprojects/extensions-tool/src/main.c:339 msgid "Reset extension" msgstr "Restabilește extensia" #: subprojects/extensions-tool/src/main.c:340 msgid "Uninstall extension" msgstr "Dezinstalează extensia" #: subprojects/extensions-tool/src/main.c:341 msgid "List extensions" msgstr "Listează extensiile" #: subprojects/extensions-tool/src/main.c:342 #: subprojects/extensions-tool/src/main.c:343 msgid "Show extension info" msgstr "Arată informații despre extensie" #: subprojects/extensions-tool/src/main.c:344 msgid "Open extension preferences" msgstr "Deschide preferințele extensiei" #: subprojects/extensions-tool/src/main.c:345 msgid "Create extension" msgstr "Creează extensie" #: subprojects/extensions-tool/src/main.c:346 msgid "Package extension" msgstr "Împachetează extensia" #: subprojects/extensions-tool/src/main.c:347 msgid "Install extension bundle" msgstr "Instalează pachetul de extensii" #: subprojects/extensions-tool/src/main.c:349 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "Utilizați „%s” pentru a obține ajutor detaliat.\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "Simplu" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "O extensie goală" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "Indicator" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "Adaugă o iconiță la bara de sus" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:4 msgid "Quick Settings Item" msgstr "Element configurări rapide" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:5 msgid "Add an item to quick settings" msgstr "Adaugă un element la configurările rapide" #. translators: #. * The device has been disabled #: subprojects/gvc/gvc-mixer-control.c:1872 msgid "Disabled" msgstr "Dezactivat" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1879 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u rezultat" msgstr[1] "%u rezultate" msgstr[2] "%u de rezultate" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1889 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u intrare" msgstr[1] "%u intrări" msgstr[2] "%u de intrări" #: subprojects/gvc/gvc-mixer-control.c:2872 msgid "System Sounds" msgstr "Sunete de sistem" #~ msgid "Network Manager" #~ msgstr "Gestionar de rețea" #, javascript-format #~ msgid "%s is now known as %s" #~ msgstr "%s este acum cunoscut ca %s" #~ msgid "Disabling" #~ msgstr "Se dezactivează" #~ msgid "Enabling" #~ msgstr "Se activează" #~ msgid "Thunderbolt" #~ msgstr "Thunderbolt" #~ msgid "No Matches" #~ msgstr "Nu există potriviri" #~ msgid "The extension had an error" #~ msgstr "Extensia a avut o eroare" #~ msgid "The extension can be updated" #~ msgstr "Extensia poate fi actualizată" #~ msgid "Help" #~ msgstr "Ajutor" #~ msgid "Manually Installed" #~ msgstr "Instalat manual" #~ msgid "Built-In" #~ msgstr "Încorporat" #~ msgid "Extension Updates Ready" #~ msgstr "Actualizările de extensie sunt gata" #~ msgid "No Thanks" #~ msgstr "Nu, merci" #, javascript-format #~ msgid "%d %%" #~ msgstr "%d%%" #~ msgid "" #~ "Whether the default Bluetooth adapter had set up devices associated to it" #~ msgstr "Dacă adaptorul implicit Bluetooth are dispozitive asociate lui" #~ msgid "" #~ "The shell will only show a Bluetooth menu item if a Bluetooth adapter is " #~ "powered, or if there were devices set up associated with the default " #~ "adapter. This will be reset if the default adapter is ever seen not to " #~ "have devices associated to it." #~ msgstr "" #~ "Vizualizatorul va arăta un element de meniu Bluetooth numai dacă " #~ "adaptorul Bluetooth este pornit, sau dacă există dispozitive configurate " #~ "asociate cu adaptorul implicit. Acesta va fi restabilit dacă adaptorul " #~ "este perceput a nu avea dispozitive asociate lui." #~ msgid "Attach modal dialog to the parent window" #~ msgstr "Atașează dialogul modal la fereastra părinte" #~ msgid "" #~ "This key overrides the key in org.gnome.mutter when running GNOME Shell." #~ msgstr "" #~ "Această cheie suprascrie cheia corespondentă din org.gnome.mutter când " #~ "Vizualizatorul activităților GNOME rulează." #~ msgid "Enable edge tiling when dropping windows on screen edges" #~ msgstr "" #~ "Activează mozaic lateral la plasarea ferestrelor pe marginile ecranului" #~ msgid "Workspaces are managed dynamically" #~ msgstr "Spațiile de lucru sunt gestionate în mod dinamic" #~ msgid "Workspaces only on primary monitor" #~ msgstr "Spații de lucru doar pe monitorul principal" #~ msgid "Delay focus changes in mouse mode until the pointer stops moving" #~ msgstr "" #~ "Întârzie schimbările de focalizare în maus până când cursorul încetează " #~ "să se miște" #~ msgid "Remove from Favorites" #~ msgstr "Elimină din favorite" #~ msgid "Add to Favorites" #~ msgstr "Adaugă la Favorite" #~ msgid "Region & Language Settings" #~ msgstr "Configurări de regiune și limbă" #~ msgid "Applications" #~ msgstr "Aplicații" #, javascript-format #~ msgid "Unable to start %s" #~ msgstr "Nu s-a putut porni %s" #, javascript-format #~ msgid "Couldn’t find the %s application" #~ msgstr "Nu s-a putut găsi aplicația %s" #~ msgid "Bluetooth Off" #~ msgstr "Bluetooth oprit" #~ msgid "Bluetooth On" #~ msgstr "Bluetooth pornit" #~ msgid "Location In Use" #~ msgstr "Locație utilizată" #~ msgid "Location Disabled" #~ msgstr "Locația dezactivată" #, javascript-format #~ msgid "%s Off" #~ msgstr "%s oprit" #, javascript-format #~ msgid "%s Connected" #~ msgstr "%s conectat" #, javascript-format #~ msgid "%s Unmanaged" #~ msgstr "%s este negestionat" #, javascript-format #~ msgid "%s Connecting" #~ msgstr "Se conectează %s" #, javascript-format #~ msgid "%s Requires Authentication" #~ msgstr "%s necesită autentificare" #, javascript-format #~ msgid "Firmware Missing For %s" #~ msgstr "Firmware lipsă pentru %s" #, javascript-format #~ msgid "%s Unavailable" #~ msgstr "%s indisponibil" #, javascript-format #~ msgid "%s Connection Failed" #~ msgstr "Conectarea la %s a eșuat" #, javascript-format #~ msgid "%s Hardware Disabled" #~ msgstr "Hardware %s dezactivat" #, javascript-format #~ msgid "%s Disabled" #~ msgstr "%s dezactivat" #~ msgid "Connect to Internet" #~ msgstr "Conectează la Internet" #~ msgid "Airplane Mode is On" #~ msgstr "Modul avion este pornit" #~ msgid "Wi-Fi is disabled when airplane mode is on." #~ msgstr "Wi-Fi este dezactivat când modul avion este pornit." #~ msgid "Turn Off Airplane Mode" #~ msgstr "Oprește modul avion" #~ msgid "Wi-Fi is Off" #~ msgstr "Wi-Fi este oprit" #~ msgid "Wi-Fi needs to be turned on in order to connect to a network." #~ msgstr "Wi-Fi trebuie pornit pentru a se putea face conexiunea la o rețea." #~ msgid "Turn On Wi-Fi" #~ msgstr "Pornește Wi-Fi" #~ msgid "Wi-Fi Networks" #~ msgstr "Rețele Wi-Fi" #~ msgid "Select a network" #~ msgstr "Selectați o rețea" #~ msgid "Use hardware switch to turn off" #~ msgstr "Folosește un întrerupător hardware pentru a opri" #~ msgid "Select Network" #~ msgstr "Selectați rețeaua" #~ msgid "Wi-Fi Settings" #~ msgstr "Configurări Wi-Fi" #, javascript-format #~ msgid "%s Not Connected" #~ msgstr "%s nu este conectat" #~ msgid "connecting…" #~ msgstr "se conectează…" #~ msgid "authentication required" #~ msgstr "necesită autentificare" #~ msgid "connection failed" #~ msgstr "conexiune eșuată" #~ msgid "VPN Off" #~ msgstr "VPN oprit" #~ msgid "Network Settings" #~ msgstr "Configurări de rețea" #, javascript-format #~ msgid "%s Wi-Fi Connection" #~ msgid_plural "%s Wi-Fi Connections" #~ msgstr[0] "%s conexiune fără fir" #~ msgstr[1] "%s conexiuni fără fir" #~ msgstr[2] "%s de conexiuni fără fir" #~ msgid "Night Light Disabled" #~ msgstr "Lumina de noapte este dezactivată" #~ msgid "Resume" #~ msgstr "Reia" #~ msgid "Disable Until Tomorrow" #~ msgstr "Dezactivează până mâine" #~ msgid "Fully Charged" #~ msgstr "Complet încărcată" #~ msgid "Not Charging" #~ msgstr "Nu încarcă" #~ msgid "Estimating…" #~ msgstr "Se estimează…" #, javascript-format #~ msgid "%d∶%02d Remaining (%d %%)" #~ msgstr "%d∶%02d rămase (%d%%)" #, javascript-format #~ msgid "%d∶%02d Until Full (%d %%)" #~ msgstr "%d∶%02d până este plină (%d%%)" #~ msgid "Screen is Being Shared" #~ msgstr "Ecranul este partajat" #~ msgid "Turn off" #~ msgstr "Oprește" #~ msgid "Airplane Mode On" #~ msgstr "Modul avion este pornit" #~ msgid "Lock" #~ msgstr "Blocare" #~ msgid "Power Off / Log Out" #~ msgstr "Oprire / Deautentificare" #~ msgid "Log Out" #~ msgstr "Ieșire din sesiune" #~ msgid "Evolution Calendar" #~ msgstr "Calendar Evolution" #~ msgid "Author" #~ msgstr "Autor" #~ msgid "Warning" #~ msgstr "Avertisment" #~ msgid "" #~ "Extensions can cause system issues, including performance problems. If " #~ "you encounter problems with your system, it is recommended to disable all " #~ "extensions." #~ msgstr "" #~ "Extensiile pot cauza probleme de sistem, inclusiv probleme de " #~ "performanță. Dacă întâlniți probleme cu sistemul, este recomandat să " #~ "dezactivați toate extensiile." #~ msgid "Failed to connect to GNOME Shell" #~ msgstr "Nu s-a putut conecta la Shell GNOME" #~ msgid "Enable introspection API" #~ msgstr "Activează API-ul de introspecție" #~ msgid "" #~ "Enables a D-Bus API that allows to introspect the application state of " #~ "the shell." #~ msgstr "" #~ "Activează un API D-Bus care permite introspecția stării aplicației shell." #~ msgid "Minimize" #~ msgstr "Minimizează" #~ msgid "Unmaximize" #~ msgstr "Demaximizează" #~ msgid "App Picker View" #~ msgstr "Mod de afișare selector de aplicații" #~ msgid "Index of the currently selected view in the application picker." #~ msgstr "Indicele modului de afișare selectat în selectorul de aplicații." #~ msgid "Frequently used applications will appear here" #~ msgstr "Aplicațiile utilizate frecvent vor fi afișate aici" #~ msgid "Frequent" #~ msgstr "Frecvente" #~ msgid "All" #~ msgstr "Toate" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d" #~ msgstr "%A, %B %-d" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d, %Y" #~ msgstr "%A, %B %-d, %Y" #~ msgid "Copy Error" #~ msgstr "Eroare la copiere" #~ msgid "Browse in Software" #~ msgstr "Navighați în Aplicații" #~ msgid "Next" #~ msgstr "Următorul" #~ msgctxt "button" #~ msgid "Sign In" #~ msgstr "Autentificare" #~ msgid "Rename" #~ msgstr "Redenumește" #~ msgid "Password:" #~ msgstr "Parolă:" #~ msgid "Type again:" #~ msgstr "Tastați din nou:" #~ msgid "Password: " #~ msgstr "Parolă: " #~ msgid "Authentication required by wireless network" #~ msgstr "Autentificare cerută de către rețeaua fără fir" #~ msgid "Mobile broadband network password" #~ msgstr "Parolă pentru rețeaua mobilă de bandă largă" #~ msgid "%A, %B %d" #~ msgstr "%A, %B %d" #~ msgid "%d new message" #~ msgid_plural "%d new messages" #~ msgstr[0] "%d mesaj nou" #~ msgstr[1] "%d mesaje noi" #~ msgstr[2] "%d de mesaje noi" #~ msgid "On" #~ msgstr "Pornit" #~ msgid "Account Settings" #~ msgstr "Configurări de cont" #~ msgid "Orientation Lock" #~ msgstr "Blocare de orientare" #~ msgid "" #~ "Keybinding that pauses and resumes all running tweens, for debugging " #~ "purposes" #~ msgstr "" #~ "Combinație de taste care întrerupe și reia animațiile în execuțue, pentru " #~ "depanare" #~ msgid "Which keyboard to use" #~ msgstr "Ce tastatură să fie folosită" #~ msgid "The type of keyboard to use." #~ msgstr "Tipul de tastatură de folosit." #~ msgid "network-workgroup" #~ msgstr "network-workgroup" #~ msgid "toggle-switch-us" #~ msgstr "toggle-switch-us" #~ msgid "There was an error loading the preferences dialog for %s:" #~ msgstr "" #~ "S-a produs o eroare la încărcarea ferestrei cu preferințe pentru %s:" #~ msgid "%s all day." #~ msgstr "%s toată ziua." #~ msgid "%s, then %s later." #~ msgstr "%s, apoi %s mai târziu." #~ msgid "%s, then %s, followed by %s later." #~ msgstr "%s, apoi %s, urmat de %s mai târziu." #~ msgid "Feels like %s." #~ msgstr "Percepută ca %s." #~ msgid "GNOME Shell (wayland compositor)" #~ msgstr "Vizualizatorul activităților GNOME (compozitor wayland)" #~ msgid "Show the week date in the calendar" #~ msgstr "Afișează data săptămânii în calendar" #~ msgid "If true, display the ISO week date in the calendar." #~ msgstr "Dacă este adevărat, afișează săptămâna ISO în calendar." #~ msgid "Web Authentication Redirect" #~ msgstr "Redirecționează autentificarea web" #~ msgid "Events" #~ msgstr "Evenimente" #~ msgid "Hide tray" #~ msgstr "Ascunde zona de notificare" #~ msgid "Status Icons" #~ msgstr "Iconițe de stare" #~ msgid "Use as Internet connection" #~ msgstr "Folosește pe post de conexiunea la internet" #~ msgid "%d x %d" #~ msgstr "%d x %d" #~ msgctxt "list sunday" #~ msgid "Su" #~ msgstr "D" #~ msgctxt "list monday" #~ msgid "M" #~ msgstr "L" #~ msgctxt "list tuesday" #~ msgid "T" #~ msgstr "Ma" #~ msgctxt "list wednesday" #~ msgid "W" #~ msgstr "Mi" #~ msgctxt "list thursday" #~ msgid "Th" #~ msgstr "J" #~ msgctxt "list friday" #~ msgid "F" #~ msgstr "V" #~ msgctxt "list saturday" #~ msgid "S" #~ msgstr "S" #~ msgid "Nothing Scheduled" #~ msgstr "Nimic programat" #~ msgid "This week" #~ msgstr "Săptămâna aceasta" #~ msgid "Next week" #~ msgstr "Săptămâna viitoare" #~ msgid "Removable Devices" #~ msgstr "Dispozitive care pot fi eliminate" #~ msgid "Eject" #~ msgstr "Scoate" #~ msgid "Invitation" #~ msgstr "Invitație" #~ msgid "Call" #~ msgstr "Apel" #~ msgid "File Transfer" #~ msgstr "Transfer de fișiere" #~ msgid "Invitation to %s" #~ msgstr "Invitație către %s" #~ msgid "%s is inviting you to join %s" #~ msgstr "%s vă invită să vă alăturați %s" #~ msgid "Decline" #~ msgstr "Refuză" #~ msgid "Accept" #~ msgstr "Acceptă" #~ msgid "Video call from %s" #~ msgstr "Apel video de la %s" #~ msgid "Call from %s" #~ msgstr "Apel de la %s" #~ msgid "Answer" #~ msgstr "Răspunde" #~ msgid "%s is sending you %s" #~ msgstr "%s vă trimite %s" #~ msgid "%s would like permission to see when you are online" #~ msgstr "%s ar dori permisiunea să știe când sunteți online" #~ msgid "Authentication failed" #~ msgstr "Autentificare eșuată" #~ msgid "Encryption error" #~ msgstr "Eroare de criptare" #~ msgid "Certificate not provided" #~ msgstr "Certificat nefurnizat" #~ msgid "Certificate untrusted" #~ msgstr "Certificat nesigur" #~ msgid "Certificate expired" #~ msgstr "Certificat expirat" #~ msgid "Certificate not activated" #~ msgstr "Certificat neactivat" #~ msgid "Certificate hostname mismatch" #~ msgstr "Numele de gazdă al certificatului nu se potrivește" #~ msgid "Certificate fingerprint mismatch" #~ msgstr "Amprenta certificatului nu se potrivește" #~ msgid "Certificate self-signed" #~ msgstr "Certificat subsemnat" #~ msgid "Status is set to offline" #~ msgstr "Starea este setată pe deconectat" #~ msgid "Certificate is invalid" #~ msgstr "Certificatul este invalid" #~ msgid "Connection has been refused" #~ msgstr "Conexiunea a fost refuzată" #~ msgid "Connection can't be established" #~ msgstr "Conexiunea nu poate fi stabilită" #~ msgid "Connection has been lost" #~ msgstr "Conexiunea a fost pierdută" #~ msgid "This account is already connected to the server" #~ msgstr "Aceast cont este deja conectat la server" #~ msgid "" #~ "Connection has been replaced by a new connection using the same resource" #~ msgstr "" #~ "Conexiunea a fost înlocuită de o nouă conexiune folosind aceeași resursă" #~ msgid "The account already exists on the server" #~ msgstr "Acest cont există deja pe server" #~ msgid "Server is currently too busy to handle the connection" #~ msgstr "Serverul este acum prea încărcat să accepte conexiunea" #~ msgid "Certificate has been revoked" #~ msgstr "Certificatul a fost revocat" #~ msgid "" #~ "Certificate uses an insecure cipher algorithm or is cryptographically weak" #~ msgstr "" #~ "Certificatul folosește un algoritm de cifrare nesigur sau este slab " #~ "criptografic" #~ msgid "" #~ "The length of the server certificate, or the depth of the server " #~ "certificate chain, exceed the limits imposed by the cryptography library" #~ msgstr "" #~ "Lungimea certificatului serverului sau adâncimea lanțului de certificare " #~ "a serverului depășește limita impusă de către biblioteca criptografică" #~ msgid "Internal error" #~ msgstr "Eroare internă" #, fuzzy #~ msgid "View account" #~ msgstr "Editează contul" #~ msgid "Date & Time Settings" #~ msgstr "Setări pentru dată și oră" #~ msgid "Open" #~ msgstr "Deschide" #, fuzzy #~ msgid "Notification Settings" #~ msgstr "Notificări" #~ msgid "No Messages" #~ msgstr "Nici un mesaj" #~ msgid "%d Connected Device" #~ msgid_plural "%d Connected Devices" #~ msgstr[0] "%d dispozitiv conectat" #~ msgstr[1] "%d dispozitive conectate" #~ msgstr[2] "%d de dispozitive conectate" #~ msgid "UPS" #~ msgstr "UPS" #~ msgid "Battery" #~ msgstr "Baterie" #~ msgid "unavailable" #~ msgstr "indisponibil" #~ msgid "%A, %H:%M" #~ msgstr "Trimis pe %A. %d %B" #~ msgid "%B %d, %H:%M" #~ msgstr "Trimis pe %A. %d %B" #~ msgid "Authorization request from %s" #~ msgstr "Cerere de autorizare de la %s" #~ msgid "Device %s wants to pair with this computer" #~ msgstr "Dispozitivul %s vrea să se asocieze cu acest calculator" #~ msgid "Device %s wants access to the service '%s'" #~ msgstr "Dispozitivul %s dorește acces la serviciul „%s”" #~ msgid "Grant this time only" #~ msgstr "Permite accesul doar de această dată" #~ msgid "Reject" #~ msgstr "Respingere" #~ msgid "Pairing confirmation for %s" #~ msgstr "Confirmarea asocierii pentru %s" #~ msgid "" #~ "Please confirm whether the Passkey '%06d' matches the one on the device." #~ msgstr "" #~ "Confirmați dacă cheia de acces „%06d” se potrivește cu cea de pe " #~ "dispozitiv." #~ msgid "Does not match" #~ msgstr "Nu se potrivește" #~ msgid "Pairing request for %s" #~ msgstr "Cererea de asociere pentru %s" #~ msgid "Please enter the PIN mentioned on the device." #~ msgstr "Introduceți PIN-ul menționat pe dispozitiv." #~ msgid "OK" #~ msgstr "OK" #~ msgid "Framerate used for recording screencasts." #~ msgstr "Frecvența de cadre utilizată pentru înregistrările de ecran." #~ msgid "" #~ "The framerate of the resulting screencast recordered by GNOME Shell's " #~ "screencast recorder in frames-per-second." #~ msgstr "" #~ "Frecvența de cadre a capturii de ecran realizată de către înregistratorul " #~ "de ecran al GNOME Shell, în cadre pe secundă." #~ msgid "The gstreamer pipeline used to encode the screencast" #~ msgstr "" #~ "Linia de asamblare gstreamer folosită pentru a coda captura de ecran" #, fuzzy #~| msgid "" #~| "Sets the GStreamer pipeline used to encode recordings. It follows the " #~| "syntax used for gst-launch. The pipeline should have an unconnected sink " #~| "pad where the recorded video is recorded. It will normally have a " #~| "unconnected source pad; output from that pad will be written into the " #~| "output file. However the pipeline can also take care of its own output - " #~| "this might be used to send the output to an icecast server via " #~| "shout2send or similar. When unset or set to an empty value, the default " #~| "pipeline will be used. This is currently 'videorate ! vp8enc quality=10 " #~| "speed=2 threads=%T ! queue ! webmmux' and records to WEBM using the VP8 " #~| "codec. %T is used as a placeholder for a guess at the optimal thread " #~| "count on the system." #~ msgid "" #~ "Sets the GStreamer pipeline used to encode recordings. It follows the " #~ "syntax used for gst-launch. The pipeline should have an unconnected sink " #~ "pad where the recorded video is recorded. It will normally have a " #~ "unconnected source pad; output from that pad will be written into the " #~ "output file. However the pipeline can also take care of its own output - " #~ "this might be used to send the output to an icecast server via shout2send " #~ "or similar. When unset or set to an empty value, the default pipeline " #~ "will be used. This is currently 'vp8enc min_quantizer=13 max_quantizer=13 " #~ "cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux' and records to " #~ "WEBM using the VP8 codec. %T is used as a placeholder for a guess at the " #~ "optimal thread count on the system." #~ msgstr "" #~ "Definește linia de asamblare GStreamer utilizată pentru a coda " #~ "înregistrările. Folosește aceeași sintaxă ca la gst-launch. Linia de " #~ "asamblare ar trebui să aibă un sink pad neconectat unde va fi înregistrat " #~ "ecranul. În mod normal va avea un source pad neconectat și o ieșire care " #~ "va fi scrisă în fișierul de ieșire. Cu toate acestea, linia de asamblare " #~ "poate să aibă grijă de ieșirea proprie - aceasta ar putea fi utilizată " #~ "pentru a trimite ieșirea la un server icecast, shout2send sau un alt " #~ "server similar. Când este dezactivată, sau are o valoare vidă, se " #~ "utilizează linia de asamblare implicită. Aceasta este acum definită ca " #~ "„videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux” și " #~ "înregistrează în WEBM folosind codecul VP8. %T este folosit ca înlocuitor " #~ "pentru o valoare estimativă a numărului optim de fire de execuție pe " #~ "acest sistem." #~ msgid "File extension used for storing the screencast" #~ msgstr "" #~ "Extensia de fișier utilizată pentru stocarea înregistrărilor de ecran" #~ msgid "" #~ "The filename for recorded screencasts will be a unique filename based on " #~ "the current date, and use this extension. It should be changed when " #~ "recording to a different container format." #~ msgstr "" #~ "Numele de fișier ale înregistrărilor de ecran vor fi unice, bazate pe " #~ "data curentă și vor folosi această extensie. Ar trebui să fie modificată " #~ "când se înregistrează într-un format de container diferit." #~ msgid "Click Log Out to quit these applications and log out of the system." #~ msgstr "" #~ "Apăsați „Ieșire din sesiune” pentru a închide aceste aplicații și a ieși " #~ "din sistem." #~ msgid "Logging out of the system." #~ msgstr "Deconectare din sistem." #~ msgid "Click Power Off to quit these applications and power off the system." #~ msgstr "" #~ "Apăsați „Oprire” pentru a închide aceste aplicații și a opri sistemul." #~ msgid "Powering off the system." #~ msgstr "Se oprește sistemul." #~ msgid "Click Restart to quit these applications and restart the system." #~ msgstr "" #~ "Apăsați „Repornire” pentru a închide aceste aplicații și a reporni " #~ "sistemul." #~ msgid "Restarting the system." #~ msgstr "Se repornește sistemul." #~ msgid "Visibility" #~ msgstr "Vizibilitate" #, fuzzy #~| msgid "Set up a New Device..." #~ msgid "Set Up a New Device…" #~ msgstr "Configurează un dispozitiv nou..." #, fuzzy #~| msgid "Send Files..." #~ msgid "Send Files…" #~ msgstr "Trimite fișiere..." #~ msgid "Volume, network, battery" #~ msgstr "Volum, rețea, baterie" #~ msgid "disabled" #~ msgstr "dezactivat" #~ msgid "Wired" #~ msgstr "Cu fir" #~ msgid "If true, display date in the clock, in addition to time." #~ msgstr "Dacă este adevărat, afișează data în ceas, lângă oră." #~ msgid "If true, display seconds in time." #~ msgstr "Dacă este adevărat, afișează secundele lângă oră." #~ msgid "Show date in clock" #~ msgstr "Afișează data în ceas" #~ msgid "Show time with seconds" #~ msgstr "Afișează ora cu secunde" #~ msgid "" #~ "The shell normally monitors active applications in order to present the " #~ "most used ones (e.g. in launchers). While this data will be kept private, " #~ "you may want to disable this for privacy reasons. Please note that doing " #~ "so won't remove already saved data." #~ msgstr "" #~ "În mod normal shell-ul monitorizează aplicațiile active pentru a le " #~ "prezenta cele mai folosite (de ex: în lansatoare de aplicații). Deși " #~ "aceste date vor fi păstrate private este posibil să vreți să dezactivați " #~ "această funcționalitate din motive de intimitate. Dezactivarea nu va " #~ "șterge datele deja salvate." #~ msgid "Whether to collect stats about applications usage" #~ msgstr "Dacă să fie colectate detalii despre utilizarea aplicațiilor" #~ msgid "disabled OpenSearch providers" #~ msgstr "furnizori OpenSearch dezactivați" #~ msgctxt "title" #~ msgid "Sign In" #~ msgstr "Autentificare" #~ msgid "APPLICATIONS" #~ msgstr "APLICAȚII" #~ msgid "SETTINGS" #~ msgstr "SETĂRI" #~ msgctxt "event list time" #~ msgid "%H:%M" #~ msgstr "%H:%M" #~ msgid "Away" #~ msgstr "Plecat" #~ msgid "Busy" #~ msgstr "Ocupat" #~ msgid "CONTACTS" #~ msgstr "CONTACTE" #~ msgid "%a %b %e, %R:%S" #~ msgstr "%a %e %b, %R:%S" #~ msgid "%a %b %e, %R" #~ msgstr "%a %e %b, %R" #~ msgid "%a %R:%S" #~ msgstr "%a %R:%S" #~ msgid "%a %R" #~ msgstr "%a %R" #~ msgid "%a %b %e, %l:%M:%S %p" #~ msgstr "%a %e %b, %l:%M:%S %p" #~ msgid "%a %l:%M:%S %p" #~ msgstr "%a %l:%M:%S %p" #~ msgid "RECENT ITEMS" #~ msgstr "ELEMENTE RECENTE" #~ msgid "tray" #~ msgstr "zonă de notificare" #~ msgid "Failed to unmount '%s'" #~ msgstr "Nu s-a putut demonta „%s”" #~ msgid "Retry" #~ msgstr "Reîncearcă" #~ msgid "PLACES & DEVICES" #~ msgstr "LOCURI & DISPOZITIVE" #~ msgid "Universal Access Settings" #~ msgstr "Setări acces universal" #~ msgid "Browse Files..." #~ msgstr "Explorează fișiere..." #~ msgid "Error browsing device" #~ msgstr "Eroare la explorarea dispozitivului" #~ msgid "The requested device cannot be browsed, error is '%s'" #~ msgstr "Dispozitivul solicitat nu poate fi explorat, eroarea este „%s”" #~ msgid "cable unplugged" #~ msgstr "cablu deconectat" #~ msgid "More..." #~ msgstr "Mai multe..." #~ msgid "Auto Ethernet" #~ msgstr "Ethernet automat" #~ msgid "Auto broadband" #~ msgstr "Rețea de bandă largă automată" #~ msgid "Auto dial-up" #~ msgstr "Dial-up automat" #~ msgid "Auto %s" #~ msgstr "%s automat" #~ msgid "Auto bluetooth" #~ msgstr "Bluetooth automat" #~ msgid "Auto wireless" #~ msgstr "Rețea fără fir automată" #~ msgid "Wireless" #~ msgstr "Fără fir" #~ msgid "VPN Connections" #~ msgstr "Conexiuni VPN" #~ msgid "%d %s %d %s remaining" #~ msgstr "%d %s %d %s rămase" #~ msgid "hour" #~ msgid_plural "hours" #~ msgstr[0] "oră" #~ msgstr[1] "ore" #~ msgstr[2] "de ore" #~ msgid "minute" #~ msgid_plural "minutes" #~ msgstr[0] "minut" #~ msgstr[1] "minute" #~ msgstr[2] "de minute" #~ msgid "AC adapter" #~ msgstr "Adaptor AC" #~ msgid "Laptop battery" #~ msgstr "Baterie laptop" #~ msgid "Monitor" #~ msgstr "Monitor" #~ msgid "Mouse" #~ msgstr "Maus" #~ msgid "PDA" #~ msgstr "PDA" #~ msgid "Media player" #~ msgstr "Player Media" #~ msgid "Tablet" #~ msgstr "Tabletă" #~ msgid "Computer" #~ msgstr "Calculator" #~ msgid "Subscription request" #~ msgstr "Cerere de abonare" #~ msgid "%s is online." #~ msgstr "%s este conectat." #~ msgid "%s is offline." #~ msgstr "%s este deconectat." #~ msgid "%s is away." #~ msgstr "%s este plecat." #~ msgid "%s is busy." #~ msgstr "%s este ocupat." #~ msgid "Sent at %X on %A" #~ msgstr "Trimis la %X pe %A" #~ msgid "Sent on %A, %B %d, %Y" #~ msgstr "Trimis pe %A, %d %B %Y" #~ msgid "Reconnect" #~ msgstr "Reconectează" #~ msgid "Hidden" #~ msgstr "Ascuns" #~ msgid "Idle" #~ msgstr "Inactiv" #~ msgid "Power Off..." #~ msgstr "Oprire..." #~ msgid "Online Accounts" #~ msgstr "Conturi online" #~ msgid "System Settings" #~ msgstr "Setări de sistem" #~ msgid "Log Out..." #~ msgstr "Ieșire din sesiune..." #~ msgid "Your chat status will be set to busy" #~ msgstr "Starea de chat va fi trecută pe ocupat" #~ msgid "" #~ "Notifications are now disabled, including chat messages. Your online " #~ "status has been adjusted to let others know that you might not see their " #~ "messages." #~ msgstr "" #~ "Notificările sunt acum dezactivate, incluzând mesajele de chat. Starea a " #~ "fost ajustată pentru ca alții să știe că este posibil să nu le vedeți " #~ "mesajele." #~ msgid "United Kingdom" #~ msgstr "Regatul Unit" #~ msgid "Default" #~ msgstr "Implicit" #~ msgid "%1$s: %2$s" #~ msgstr "%1$s: %2$s" 0707010000025D000081A40000000000000000000000016712993F0002053C000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/ru.po# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # # # Andrey Korzinev , 2009. # Sergey V. Kovylov , 2009. # Marina Zhurakhinskaya , 2009, 2010. # Sergey Davidoff , 2010. # Yuri Kozlov , 2011, 2012. # JDronova , 2013, 2023. # Valery Kirichenko , 2014. # Yuri Myasoedov , 2012, 2013, 2014. # Ivan Komaritsyn , 2015. # Stas Solovey , 2011, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020. # Konstantin Nezhbert , 2021. # Ivan Molodetskikh , 2020-2022. # msgid "" msgstr "" "Project-Id-Version: gnome-shell\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues/\n" "POT-Creation-Date: 2024-07-26 10:18+0000\n" "PO-Revision-Date: 2024-07-26 14:50+0300\n" "Last-Translator: Artur So \n" "Language-Team: RU\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: Poedit 3.4.4\n" # Запуск приложений, как другой вариант #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "Ярлыки" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate pinned app 1" msgstr "Переключиться на закрепленное приложение 1" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate pinned app 2" msgstr "Переключиться на закрепленное приложение 2" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate pinned app 3" msgstr "Переключиться на закрепленное приложение 3" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate pinned app 4" msgstr "Переключиться на закрепленное приложение 4" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate pinned app 5" msgstr "Переключиться на закрепленное приложение 5" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate pinned app 6" msgstr "Переключиться на закрепленное приложение 6" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate pinned app 7" msgstr "Переключиться на закрепленное приложение 7" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate pinned app 8" msgstr "Переключиться на закрепленное приложение 8" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate pinned app 9" msgstr "Переключиться на закрепленное приложение 9" #: data/50-gnome-shell-launchers.xml:46 msgid "Open new window of pinned app 1" msgstr "Открыть новое окно закрепленного приложения 1" #: data/50-gnome-shell-launchers.xml:50 msgid "Open new window of pinned app 2" msgstr "Открыть новое окно закрепленного приложения 2" #: data/50-gnome-shell-launchers.xml:54 msgid "Open new window of pinned app 3" msgstr "Открыть новое окно закрепленного приложения 3" #: data/50-gnome-shell-launchers.xml:58 msgid "Open new window of pinned app 4" msgstr "Открыть новое окно закрепленного приложения 4" #: data/50-gnome-shell-launchers.xml:62 msgid "Open new window of pinned app 5" msgstr "Открыть новое окно закрепленного приложения 5" #: data/50-gnome-shell-launchers.xml:66 msgid "Open new window of pinned app 6" msgstr "Открыть новое окно закрепленного приложения 6" #: data/50-gnome-shell-launchers.xml:70 msgid "Open new window of pinned app 7" msgstr "Открыть новое окно закрепленного приложения 7" #: data/50-gnome-shell-launchers.xml:74 msgid "Open new window of pinned app 8" msgstr "Открыть новое окно закрепленного приложения 8" #: data/50-gnome-shell-launchers.xml:78 msgid "Open new window of pinned app 9" msgstr "Открыть новое окно закрепленного приложения 9" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2276 msgid "Screenshots" msgstr "Снимки экрана" #: data/50-gnome-shell-screenshots.xml:9 #: data/org.gnome.shell.gschema.xml.in:287 msgid "Take a screenshot interactively" msgstr "Сделать снимок экрана интерактивно" #: data/50-gnome-shell-screenshots.xml:12 #: data/org.gnome.shell.gschema.xml.in:299 msgid "Take a screenshot" msgstr "Сделать снимок экрана" #: data/50-gnome-shell-screenshots.xml:15 #: data/org.gnome.shell.gschema.xml.in:295 msgid "Take a screenshot of a window" msgstr "Сделать снимок окна" #: data/50-gnome-shell-screenshots.xml:18 #: data/org.gnome.shell.gschema.xml.in:291 msgid "Record a screencast interactively" msgstr "Сделать запись экрана интерактивно" #: data/50-gnome-shell-system.xml:6 js/ui/messageTray.js:1300 msgid "System" msgstr "Система" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "Показать список уведомлений" #: data/50-gnome-shell-system.xml:12 msgid "Open the quick settings menu" msgstr "Открыть меню быстрых настроек" #: data/50-gnome-shell-system.xml:15 msgid "Focus the active notification" msgstr "Передать фокус активному уведомлению" #: data/50-gnome-shell-system.xml:18 msgid "Show the overview" msgstr "Показать обзор" #: data/50-gnome-shell-system.xml:21 msgid "Show all apps" msgstr "Показать все приложения" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "GNOME Shell" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "Управление окнами и запуск приложений" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "Включить внутренние инструменты из Alt-F2 для разработчиков и тестеров" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Разрешает доступ к внутренней отладке и инструментам наблюдения, используя " "диалог Alt-F2." #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "UUID включённых расширений" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "У расширений GNOME Shell есть свойство UUID; в этом ключе перечислены " "расширения, которые должны быть загружены. Этим списком также можно " "управлять через методы DBus EnableExtension и DisableExtension сервиса org." "gnome.Shell." #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "UUID расширений для принудительного отключения" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" "У расширений GNOME Shell есть свойство UUID; в этом ключе перечислены " "расширения, которые должны быть отключены, если загружены как часть текущего " "режима. Этим списком также можно управлять через методы DBus EnableExtension " "и DisableExtension сервиса org.gnome.Shell. Этот ключ имеет приоритет над " "настройкой “enabled-extensions”." #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "Выключить пользовательские расширения" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" "Отключает все расширения, которые пользователь активировал, не затрагивая " "настройку \"enabled-extension\"." #: data/org.gnome.shell.gschema.xml.in:45 msgid "Allow extension installation" msgstr "Разрешить установку расширений" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "Allow users to install extensions in their home folder. If disabled, the " "InstallRemoteExtension D-Bus method will fail, and extensions are only " "loaded from system directories on startup. It does not affect extensions " "that are already loaded, so a change only takes full effect on the next " "login." msgstr "" "Позволяет пользователям устанавливать расширения в свою домашнюю папку. Если " "отключено, метод InstallRemoteExtension D-Bus не сработает, и расширения " "будут загружаться только из системных каталогов при запуске. Это не влияет " "на уже загруженные расширения, поэтому изменения вступают в силу только при " "следующем входе в систему." #: data/org.gnome.shell.gschema.xml.in:56 msgid "Disables the validation of extension version compatibility" msgstr "Отключает проверку совместимости версий расширений" #: data/org.gnome.shell.gschema.xml.in:57 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "GNOME Shell будет загружать только те расширения, у которых заявлена " "поддержка текущей версии. Включение этой опции отключит эту проверку и " "попробует загрузить все расширения вне зависимости от версии, которую они " "поддерживают." #: data/org.gnome.shell.gschema.xml.in:65 msgid "List of desktop file IDs for favorite applications" msgstr "Список идентификаторов desktop-файлов для избранных приложений" #: data/org.gnome.shell.gschema.xml.in:66 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" "Приложения, соответствующие этих идентификаторам, будут показаны в области " "избранных приложений." #: data/org.gnome.shell.gschema.xml.in:73 msgid "History for command (Alt-F2) dialog" msgstr "История команд диалогового окна (Alt-F2)" #. Translators: looking glass is a debugger and inspector tool, see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/docs/looking-glass.md #: data/org.gnome.shell.gschema.xml.in:78 msgid "History for the looking glass dialog" msgstr "История просмотра прозрачного диалогового окна" #: data/org.gnome.shell.gschema.xml.in:82 msgid "Always show the “Log Out” action in the system menu" msgstr "Всегда показывать в системном меню действие \"Выйти\"" #: data/org.gnome.shell.gschema.xml.in:83 msgid "" "This key overrides the automatic hiding of the “Log out” action in the " "system menu for logged-in situations where there is a single, local, non-" "system user and only a single available session type (e.g. GNOME on Wayland)." msgstr "" "Этот ключ переопределяет автоматическое скрытие действия \"Выйти\" в " "системном меню для ситуаций, когда при входе в систему есть один локальный " "несистемный пользователь и только один доступный тип сеанса (например, GNOME " "на Wayland)." #: data/org.gnome.shell.gschema.xml.in:92 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "Запоминать ли пароль для подключения зашифрованных или удалённых файловых " "систем" #: data/org.gnome.shell.gschema.xml.in:93 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "Gnome Shell запросит пароль при подключении зашифрованного устройства или " "удаленной файловой системы. Если пароль можно сохранить для последующего " "использования, будет установлен флажок \"Запомнить пароль\". Этот ключ " "устанавливает состояние по умолчанию для флажка." #: data/org.gnome.shell.gschema.xml.in:102 msgid "The last selected non-default power profile" msgstr "Последний выбранный профиль питания не по умолчанию" #: data/org.gnome.shell.gschema.xml.in:103 msgid "" "Some systems support more than two power profiles. In order to still support " "toggling between two profiles, this key records the last selected non-" "default profile." msgstr "" "Некоторые системы поддерживают более двух профилей питания. Чтобы сохранить " "поддержку переключения между двумя профилями, этот ключ записывает последний " "выбранный не по умолчанию профиль." #: data/org.gnome.shell.gschema.xml.in:111 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "В последней версии диалог “Добро пожаловать в GNOME” был показан для" #: data/org.gnome.shell.gschema.xml.in:112 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can " "be used to effectively disable the dialog." msgstr "" "Этот ключ определяет, для какой версии в последний раз был показан диалог " "“Добро пожаловать в GNOME\". Пустая строка представляет самую старую " "возможную версию, а большое число будет представлять версии, которые еще не " "существуют. Это большое число может быть использовано для эффективного " "отключения диалога." #: data/org.gnome.shell.gschema.xml.in:145 msgid "Layout of the app picker" msgstr "Макет меню выбора приложений" #: data/org.gnome.shell.gschema.xml.in:146 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" msgstr "" "Макет меню выбора приложений. Каждая запись в массиве представляет собой " "страницу. Страницы хранятся в том порядке, в котором они отображаются в " "оболочке GNOME. Каждая страница содержит пару “application id” → \"data\". В " "настоящее время в качестве “data” хранятся следующие значения: • " "\"position\" - положение значка приложения на странице" #: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:172 msgid "Keybinding to shift between overview states" msgstr "Сочетание клавиш для переключения между состояниями обзора" #: data/org.gnome.shell.gschema.xml.in:166 msgid "Keybinding to shift between session, window picker and app grid" msgstr "" "Сочетание клавиш для переключения между сеансом, меню выбора окон и сеткой " "приложений" #: data/org.gnome.shell.gschema.xml.in:173 msgid "Keybinding to shift between app grid, window picker and session" msgstr "" "Сочетание клавиш для переключения между сеткой приложений, меню выбора окон " "и сеансом" #: data/org.gnome.shell.gschema.xml.in:179 msgid "Keybinding to open the “Show Applications” view" msgstr "Комбинация клавиш для перехода в режим просмотра приложений" #: data/org.gnome.shell.gschema.xml.in:180 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "" "Комбинация клавиш для перехода в режим просмотра приложений в меню \"Обзор\"." #: data/org.gnome.shell.gschema.xml.in:187 msgid "Keybinding to open the overview" msgstr "Комбинация клавиш для перехода в режим обзора" #: data/org.gnome.shell.gschema.xml.in:188 msgid "Keybinding to open the Activities Overview." msgstr "Комбинация клавиш для перехода в режим обзора." #: data/org.gnome.shell.gschema.xml.in:194 msgid "Keybinding to toggle the visibility of the notification list" msgstr "Комбинация клавиш для отображения или скрытия списка уведомлений" #: data/org.gnome.shell.gschema.xml.in:195 msgid "Keybinding to toggle the visibility of the notification list." msgstr "Комбинация клавиш для отображения или скрытия списка уведомлений." #: data/org.gnome.shell.gschema.xml.in:201 msgid "Keybinding to toggle the quick settings menu" msgstr "Комбинация клавиш для переключения меню быстрых настроек" #: data/org.gnome.shell.gschema.xml.in:202 msgid "Keybinding to toggle the quick settings menu." msgstr "Комбинация клавиш для переключения меню быстрых настроек." #: data/org.gnome.shell.gschema.xml.in:208 msgid "Keybinding to focus the active notification" msgstr "Комбинация клавиш для перевода фокуса на текущее уведомление" #: data/org.gnome.shell.gschema.xml.in:209 msgid "Keybinding to focus the active notification." msgstr "Комбинация клавиш для перевода фокуса на текущее уведомление." #: data/org.gnome.shell.gschema.xml.in:215 msgid "Switch to application 1" msgstr "Переключиться на приложение 1" #: data/org.gnome.shell.gschema.xml.in:219 msgid "Switch to application 2" msgstr "Переключиться на приложение 2" #: data/org.gnome.shell.gschema.xml.in:223 msgid "Switch to application 3" msgstr "Переключиться на приложение 3" #: data/org.gnome.shell.gschema.xml.in:227 msgid "Switch to application 4" msgstr "Переключиться на приложение 4" #: data/org.gnome.shell.gschema.xml.in:231 msgid "Switch to application 5" msgstr "Переключиться на приложение 5" #: data/org.gnome.shell.gschema.xml.in:235 msgid "Switch to application 6" msgstr "Переключиться на приложение 6" #: data/org.gnome.shell.gschema.xml.in:239 msgid "Switch to application 7" msgstr "Переключиться на приложение 7" #: data/org.gnome.shell.gschema.xml.in:243 msgid "Switch to application 8" msgstr "Переключиться на приложение 8" #: data/org.gnome.shell.gschema.xml.in:247 msgid "Switch to application 9" msgstr "Переключиться на приложение 9" #: data/org.gnome.shell.gschema.xml.in:251 msgid "Open a new instance of application 1" msgstr "Открыть новый экземпляр приложения 1" #: data/org.gnome.shell.gschema.xml.in:255 msgid "Open a new instance of application 2" msgstr "Открыть новый экземпляр приложения 2" #: data/org.gnome.shell.gschema.xml.in:259 msgid "Open a new instance of application 3" msgstr "Открыть новый экземпляр приложения 3" #: data/org.gnome.shell.gschema.xml.in:263 msgid "Open a new instance of application 4" msgstr "Открыть новый экземпляр приложения 4" #: data/org.gnome.shell.gschema.xml.in:267 msgid "Open a new instance of application 5" msgstr "Открыть новый экземпляр приложения 5" #: data/org.gnome.shell.gschema.xml.in:271 msgid "Open a new instance of application 6" msgstr "Открыть новый экземпляр приложения 6" #: data/org.gnome.shell.gschema.xml.in:275 msgid "Open a new instance of application 7" msgstr "Открыть новый экземпляр приложения 7" #: data/org.gnome.shell.gschema.xml.in:279 msgid "Open a new instance of application 8" msgstr "Открыть новый экземпляр приложения 8" #: data/org.gnome.shell.gschema.xml.in:283 msgid "Open a new instance of application 9" msgstr "Открыть новый экземпляр приложения 9" #: data/org.gnome.shell.gschema.xml.in:308 #: data/org.gnome.shell.gschema.xml.in:335 msgid "Limit switcher to current workspace." msgstr "Ограничить переключатель текущим рабочим столом." #: data/org.gnome.shell.gschema.xml.in:309 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "Если выбрано, то в переключателе будут показываться только те приложения, " "чьи окна находятся на текущем рабочем столе. Иначе все приложения будут " "включены." #: data/org.gnome.shell.gschema.xml.in:326 msgid "The application icon mode." msgstr "Режим значка приложения." #: data/org.gnome.shell.gschema.xml.in:327 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-only” " "(shows only the application icon) or “both”." msgstr "" "Управляет способом отображения окон в переключателе. Доступные значения: " "\"thumbnail-only\" (показывать только миниатюру окна), \"app-icon-only\" " "(показывать только значок приложения), \"both\" (показывать миниатюру и " "значок)." #: data/org.gnome.shell.gschema.xml.in:336 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "Если выбрано, то в переключателе будут показываться только окна из текущего " "рабочего стола. Иначе все окна будут включены." #: data/org.gnome.shell.gschema.xml.in:346 msgid "Locations" msgstr "Местоположения" #: data/org.gnome.shell.gschema.xml.in:347 msgid "The locations to show in world clocks" msgstr "Местоположения для отображения в мировых часах" #: data/org.gnome.shell.gschema.xml.in:357 msgid "Automatic location" msgstr "Автоматическое местоположение" #: data/org.gnome.shell.gschema.xml.in:358 msgid "Whether to fetch the current location or not" msgstr "Определяет получать местоположение или нет" #: data/org.gnome.shell.gschema.xml.in:365 msgid "Location" msgstr "Местоположение" #: data/org.gnome.shell.gschema.xml.in:366 msgid "The location for which to show a forecast" msgstr "Местоположение для которого отображается прогноз погоды" #. Keep in sync with subprojects/extensions-app #: data/org.gnome.Shell.Extensions.desktop.in.in:5 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/data/ui/extensions-window.ui:57 msgid "Extensions" msgstr "Расширения" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "Сетевая авторизация" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:275 msgid "Something’s gone wrong" msgstr "Что-то пошло не так" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" "Мы очень сожалеем, но возникла проблема: настройки этого расширения не могут " "быть отображены. Мы рекомендуем сообщить об этой проблеме авторам расширения." #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "Технические подробности" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "Домашняя страница" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 msgid "Visit extension homepage" msgstr "Посетить домашнюю страницу расширения" #: js/gdm/authPrompt.js:153 js/gdm/loginDialog.js:466 #: js/ui/audioDeviceSelection.js:66 js/ui/components/networkAgent.js:115 #: js/ui/components/polkitAgent.js:146 js/ui/endSessionDialog.js:438 #: js/ui/extensionDownloader.js:278 js/ui/shellMountOperation.js:384 #: js/ui/shellMountOperation.js:394 msgid "Cancel" msgstr "Отменить" #: js/gdm/authPrompt.js:319 js/ui/components/networkAgent.js:215 #: js/ui/components/networkAgent.js:235 js/ui/components/networkAgent.js:267 #: js/ui/components/networkAgent.js:300 js/ui/components/networkAgent.js:339 #: js/ui/components/networkAgent.js:352 js/ui/components/polkitAgent.js:288 #: js/ui/shellMountOperation.js:334 msgid "Password" msgstr "Пароль" #: js/gdm/loginDialog.js:327 msgid "Choose Session" msgstr "Выбрать сеанс" #. Translators: is running for #: js/gdm/loginDialog.js:424 #, javascript-format msgid "" "Remote login is not possible because a remote session is already running for " "%s. To login remotely, you must log out from the remote session or force " "stop it." msgstr "" "Удаленный вход невозможен, поскольку для пользователя %s уже запущен " "удаленный сеанс. Чтобы войти в систему удаленно, необходимо выйти из " "удаленного сеанса или принудительно остановить его." #. Translators: is running for #: js/gdm/loginDialog.js:427 #, javascript-format msgid "" "Login is not possible because a remote session is already running for %s. To " "login, you must log out from the remote session or force stop it." msgstr "" "Вход в систему невозможен, так как для пользователя %s уже запущен удаленный " "сеанс. Чтобы войти в систему, необходимо выйти из удаленного сеанса или " "принудительно остановить его." #. Translators: is running for #: js/gdm/loginDialog.js:430 #, javascript-format msgid "" "Remote login is not possible because a local session is already running for " "%s. To login remotely, you must log out from the local session or force stop " "it." msgstr "" "Удаленный вход невозможен, потому что локальный сеанс уже запущен для " "пользователя %s. Чтобы войти в систему удаленно, необходимо выйти из " "локального сеанса или принудительно остановить его." #. Translators: is running for #: js/gdm/loginDialog.js:433 #, javascript-format msgid "" "Login is not possible because a session is already running for %s. To login, " "you must log out from the session or force stop it." msgstr "" "Вход в систему невозможен, так как для пользователя %s уже запущен сеанс. " "Чтобы войти в систему, необходимо выйти из сеанса или принудительно " "остановить его." #: js/gdm/loginDialog.js:442 msgid "Session Already Running" msgstr "Сеанс уже запущен" #: js/gdm/loginDialog.js:454 msgid "" "Force stopping will quit any running apps and processes, and could result in " "data loss" msgstr "" "Принудительная остановка приведет к завершению всех запущенных приложений и " "процессов и может привести к потере данных" #: js/gdm/loginDialog.js:474 msgid "Force Stop" msgstr "Принудительно остановить" #: js/gdm/loginDialog.js:542 msgid "Not listed?" msgstr "Нет в списке?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:1010 #, javascript-format msgid "(e.g., user or %s)" msgstr "(например, пользователь или %s)" #: js/gdm/loginDialog.js:1015 js/ui/components/networkAgent.js:259 #: js/ui/components/networkAgent.js:294 js/ui/components/networkAgent.js:328 msgid "Username" msgstr "Имя пользователя" #: js/gdm/loginDialog.js:1081 msgid "Login Attempt Timed Out" msgstr "Попытка входа в систему не удалась" #: js/gdm/loginDialog.js:1082 msgid "Login took too long, please try again" msgstr "Вход в систему занял слишком много времени, попробуйте еще раз" #: js/gdm/loginDialog.js:1427 msgid "Login Window" msgstr "Окно входа в систему" #: js/gdm/util.js:498 msgid "Authentication error" msgstr "Ошибка проверки подлинности" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:729 msgid "(or swipe finger across reader)" msgstr "(или проведите пальцем по считывающему устройству)" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:734 msgid "(or place finger on reader)" msgstr "(или поместите палец на считывающее устройство)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:91 msgctxt "search-result" msgid "Power Off" msgstr "Выключить" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:94 msgid "power off;poweroff;shutdown;halt;stop" msgstr "выключение;завершение;остановка;стоп" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:99 msgctxt "search-result" msgid "Restart" msgstr "Перезапустить" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:102 msgid "reboot;restart;" msgstr "перезагрузить;перезапустить;" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:107 msgctxt "search-result" msgid "Lock Screen" msgstr "Заблокировать экран" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:110 msgid "lock screen" msgstr "заблокировать экран" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:115 msgctxt "search-result" msgid "Log Out" msgstr "Выйти" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:118 msgid "logout;log out;sign off" msgstr "logout;log out;sign off;выйти" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:123 msgctxt "search-result" msgid "Suspend" msgstr "Режим ожидания" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:126 msgid "suspend;sleep" msgstr "ждущий;спящий режим" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:131 msgctxt "search-result" msgid "Switch User" msgstr "Сменить пользователя" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:134 msgid "switch user" msgstr "переключить;сменить пользователя" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:141 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "заблокировать ориентацию;экран;поворот;вращение" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:146 msgctxt "search-result" msgid "Take a Screenshot" msgstr "Сделать снимок экрана" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:149 msgid "screenshot;screencast;snip;capture;record" msgstr "screenshot;screencast;snip;capture;record;скриншот;захват;запись" #: js/misc/systemActions.js:249 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "Разблокировать ориентацию экрана" #: js/misc/systemActions.js:250 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "Заблокировать ориентацию экрана" #: js/misc/util.js:132 msgid "Command not found" msgstr "Команда не найдена" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:172 msgid "Could not parse command:" msgstr "Не удалось разобрать команду:" #: js/misc/util.js:180 #, javascript-format msgid "Execution of “%s” failed:" msgstr "Не удалось выполнить \"%s\":" #: js/misc/dateUtils.js:69 msgid "Just now" msgstr "Прямо сейчас" #: js/misc/dateUtils.js:72 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d минута назад" msgstr[1] "%d минуты назад" msgstr[2] "%d минут назад" #: js/misc/dateUtils.js:79 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d час назад" msgstr[1] "%d часа назад" msgstr[2] "%d часов назад" #: js/misc/dateUtils.js:85 js/ui/dateMenu.js:185 msgid "Yesterday" msgstr "Вчера" #: js/misc/dateUtils.js:88 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d день назад" msgstr[1] "%d дня назад" msgstr[2] "%d дней назад" #: js/misc/dateUtils.js:95 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d неделя назад" msgstr[1] "%d недели назад" msgstr[2] "%d недель назад" #: js/misc/dateUtils.js:102 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%d месяц назад" msgstr[1] "%d месяца назад" msgstr[2] "%d месяцев назад" #: js/misc/dateUtils.js:108 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "%d год назад" msgstr[1] "%d года назад" msgstr[2] "%d лет назад" #. Translators: Time in 24h format #: js/misc/dateUtils.js:155 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/dateUtils.js:161 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "Вчера, %H∶%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/dateUtils.js:167 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/dateUtils.js:173 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%-d %B, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/dateUtils.js:179 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%-d %B %Y, %H∶%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/dateUtils.js:184 msgid "%l∶%M %p" msgstr "%-l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/dateUtils.js:190 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "Вчера, %-l∶%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/dateUtils.js:196 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %-l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/dateUtils.js:202 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%-d %B, %l∶%M %p" # fix даты #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/dateUtils.js:208 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%-d %B %Y, %l∶%M %p" #: js/portalHelper/main.js:98 msgid "Your connection seems to be secure" msgstr "Похоже, что подключение защищено" #: js/portalHelper/main.js:104 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "Подключение к этой точке доступа не безопасно. Пароли или другая информация, " "которую вы вводите на этой странице, могут просматриваться пользователями, " "находящимися рядом." #: js/portalHelper/main.js:115 msgid "Hotspot Login" msgstr "Авторизация в точке доступа" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:51 js/ui/inhibitShortcutsDialog.js:92 msgid "Deny" msgstr "Отказать" #: js/ui/accessDialog.js:52 js/ui/inhibitShortcutsDialog.js:101 msgid "Allow" msgstr "Разрешить" #: js/ui/appDisplay.js:1771 msgid "Unnamed Folder" msgstr "Безымянная папка" #: js/ui/appFavorites.js:166 #, javascript-format msgid "%s has been pinned to the dash." msgstr "Приложение \"%s\" было закреплено на панели приложений." #: js/ui/appFavorites.js:199 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "Приложение \"%s\" было откреплено от панели приложений." #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:51 msgid "Open Windows" msgstr "Открытые окна" #: js/ui/appMenu.js:59 msgid "New Window" msgstr "Новое окно" #: js/ui/appMenu.js:86 msgid "App Details" msgstr "Подробнее о приложении" #: js/ui/appMenu.js:102 msgid "Quit" msgstr "Закрыть" #: js/ui/appMenu.js:162 js/ui/dash.js:250 msgid "Unpin" msgstr "Открепить" #: js/ui/appMenu.js:163 msgid "Pin to Dash" msgstr "Прикрепить к панели приложений" #: js/ui/appMenu.js:180 msgid "Launch using Integrated Graphics Card" msgstr "Запустить, используя встроенную видеокарту" #: js/ui/appMenu.js:181 msgid "Launch using Discrete Graphics Card" msgstr "Запустить, используя дискретную видеокарту" #: js/ui/audioDeviceSelection.js:46 msgid "Select Audio Device" msgstr "Выберите аудиоустройство" #: js/ui/audioDeviceSelection.js:61 js/ui/status/volume.js:83 msgid "Sound Settings" msgstr "Настройки звука" #: js/ui/audioDeviceSelection.js:74 msgid "Headphones" msgstr "Наушники" #: js/ui/audioDeviceSelection.js:76 msgid "Headset" msgstr "Гарнитура" #: js/ui/audioDeviceSelection.js:78 js/ui/status/volume.js:358 msgid "Microphone" msgstr "Микрофон" #: js/ui/backgroundMenu.js:15 msgid "Change Background…" msgstr "Изменить фон…" #: js/ui/backgroundMenu.js:17 msgid "Display Settings" msgstr "Настройки дисплея" #: js/ui/backgroundMenu.js:18 msgid "Settings" msgstr "Настройки" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:39 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:65 msgctxt "grid sunday" msgid "S" msgstr "Вс" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:67 msgctxt "grid monday" msgid "M" msgstr "Пн" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:69 msgctxt "grid tuesday" msgid "T" msgstr "Вт" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:71 msgctxt "grid wednesday" msgid "W" msgstr "Ср" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:73 msgctxt "grid thursday" msgid "T" msgstr "Чт" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:75 msgctxt "grid friday" msgid "F" msgstr "Пт" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:77 msgctxt "grid saturday" msgid "S" msgstr "Сб" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:428 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:438 msgid "%OB %Y" msgstr "%OB %Y" #: js/ui/calendar.js:500 msgid "Previous month" msgstr "Предыдущий месяц" #: js/ui/calendar.js:518 msgid "Next month" msgstr "Следующий месяц" #: js/ui/calendar.js:669 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:728 msgid "Week %V" msgstr "%V неделя" #: js/ui/calendar.js:920 msgid "No Notifications" msgstr "Уведомлений нет" #: js/ui/calendar.js:976 msgid "Do Not Disturb" msgstr "Не беспокоить" #: js/ui/calendar.js:997 msgid "Clear" msgstr "Очистить" #: js/ui/calendar.js:1001 msgctxt "action" msgid "Clear all notifications" msgstr "Очистить все уведомления" #. Translators: %s is an application name #: js/ui/closeDialog.js:44 #, javascript-format msgid "“%s” Is Not Responding" msgstr "Приложение \"%s\" не отвечает" #: js/ui/closeDialog.js:45 msgid "" "You may choose to wait a short while for it to continue or force the app to " "quit entirely" msgstr "" "Вы можете подождать отклика приложения некоторое время, или принудительно " "завершить его работу" #: js/ui/closeDialog.js:73 msgid "Force Quit" msgstr "Принудительно завершить" #: js/ui/closeDialog.js:78 msgid "Wait" msgstr "Подождать" #: js/ui/components/automountManager.js:84 msgid "External drive connected" msgstr "Внешний диск подключён" #: js/ui/components/automountManager.js:96 msgid "External drive disconnected" msgstr "Внешний диск отключён" #: js/ui/components/automountManager.js:210 msgid "Unable to unlock volume" msgstr "Не удалось разблокировать том" #: js/ui/components/automountManager.js:211 msgid "The installed udisks version does not support the PIM setting" msgstr "Установленная версия udisks не поддерживает настройку PIM" #. Translators: %s is the name of a partition on a external drive #: js/ui/components/autorunManager.js:191 #, javascript-format msgid "“%s” connected" msgstr "Раздел “%s” подключен" #: js/ui/components/autorunManager.js:192 msgid "Disk can now be used" msgstr "Теперь диск можно использовать" #: js/ui/components/autorunManager.js:204 #, javascript-format msgid "Open with %s" msgstr "Открыть с помощью %s" #: js/ui/components/networkAgent.js:97 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router" msgstr "" "В качестве альтернативы вы можете подключиться, нажав кнопку \"WPS\" на " "вашем маршрутизаторе" #: js/ui/components/networkAgent.js:109 js/ui/status/bluetooth.js:246 #: js/ui/status/network.js:362 js/ui/status/network.js:446 msgid "Connect" msgstr "Подключить" #: js/ui/components/networkAgent.js:224 msgid "Key" msgstr "Ключ" #: js/ui/components/networkAgent.js:275 js/ui/components/networkAgent.js:314 msgid "Private key password" msgstr "Пароль личного ключа" #: js/ui/components/networkAgent.js:308 msgid "Identity" msgstr "Идентичность" #: js/ui/components/networkAgent.js:334 msgid "Service" msgstr "Служба" #: js/ui/components/networkAgent.js:372 js/ui/components/networkAgent.js:408 #: js/ui/components/networkAgent.js:745 js/ui/components/networkAgent.js:766 msgid "Authentication required" msgstr "Требуется подтверждение подлинности" #: js/ui/components/networkAgent.js:373 js/ui/components/networkAgent.js:746 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network “%s”" msgstr "" "Для доступа к беспроводной сети \"%s\" требуется пароль или ключ шифрования" #: js/ui/components/networkAgent.js:377 js/ui/components/networkAgent.js:750 msgid "Wired 802.1X authentication" msgstr "Проводная аутентификация 802.1X" #: js/ui/components/networkAgent.js:380 msgid "Network name" msgstr "Название сети" #: js/ui/components/networkAgent.js:388 js/ui/components/networkAgent.js:754 msgid "DSL authentication" msgstr "Аутентификация DSL" #: js/ui/components/networkAgent.js:395 js/ui/components/networkAgent.js:759 msgid "PIN code required" msgstr "Требуется PIN-код" #: js/ui/components/networkAgent.js:396 js/ui/components/networkAgent.js:760 msgid "PIN code is needed for the mobile broadband device" msgstr "Для устройства мобильной связи требуется PIN-код" #: js/ui/components/networkAgent.js:398 msgid "PIN" msgstr "PIN" #: js/ui/components/networkAgent.js:409 js/ui/components/networkAgent.js:751 #: js/ui/components/networkAgent.js:755 js/ui/components/networkAgent.js:767 #: js/ui/components/networkAgent.js:771 #, javascript-format msgid "A password is required to connect to “%s”" msgstr "Для подключения к \"%s\" требуется пароль" #: js/ui/components/networkAgent.js:770 msgid "VPN password" msgstr "Пароль VPN" #: js/ui/components/polkitAgent.js:46 msgid "Authentication Required" msgstr "Требуется подтверждение подлинности" #: js/ui/components/polkitAgent.js:86 msgid "Administrator" msgstr "Администратор" #: js/ui/components/polkitAgent.js:151 msgid "Authenticate" msgstr "Подтвердить" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:265 js/ui/shellMountOperation.js:417 msgid "Sorry, that didn’t work. Please try again." msgstr "Не удалось подтвердить подлинность. Попробуйте снова." #: js/ui/ctrlAltTab.js:25 js/ui/overviewControls.js:406 msgid "Windows" msgstr "Окна" #: js/ui/dash.js:206 js/ui/dash.js:252 msgid "Show Apps" msgstr "Показать приложения" #. Translators: this is the name of the dock/favorites area on #. the bottom of the overview #: js/ui/dash.js:410 msgid "Dash" msgstr "Панель приложений" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:101 msgid "%B %-d %Y" msgstr "%-d %B %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:108 msgid "%A %B %e %Y" msgstr "%A, %-d %B %Y" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:174 msgctxt "calendar heading" msgid "%B %-d" msgstr "%-d %B %Y" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:177 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%-d %B %Y" #: js/ui/dateMenu.js:183 msgid "Today" msgstr "Сегодня" #: js/ui/dateMenu.js:187 msgid "Tomorrow" msgstr "Завтра" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:218 msgctxt "event list time" msgid "All Day" msgstr "Весь день" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:240 msgid "%m/%d" msgstr "%d/%m" #: js/ui/dateMenu.js:291 msgid "No Events" msgstr "Событий нет" #: js/ui/dateMenu.js:413 msgid "Add World Clocks…" msgstr "Добавить мировые часы…" #: js/ui/dateMenu.js:414 msgid "World Clocks" msgstr "Мировые часы" #: js/ui/dateMenu.js:704 msgid "Loading…" msgstr "Загрузка…" #: js/ui/dateMenu.js:714 msgid "Go Online for Weather Information" msgstr "Подключите интернет для получения информации о погоде" #: js/ui/dateMenu.js:716 msgid "Weather Information Unavailable" msgstr "Информация о погоде недоступна" #: js/ui/dateMenu.js:726 msgid "Weather" msgstr "Погода" #: js/ui/dateMenu.js:728 msgid "Select Weather Location…" msgstr "Выберите ваше местоположение…" #: js/ui/endSessionDialog.js:48 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "Выход пользователя %s" #: js/ui/endSessionDialog.js:49 msgctxt "title" msgid "Log Out" msgstr "Выход из системы" #: js/ui/endSessionDialog.js:52 #, javascript-format msgid "%s will be logged out automatically in %d second" msgid_plural "%s will be logged out automatically in %d seconds" msgstr[0] "%s выйдет из системы автоматически через %d секунду" msgstr[1] "%s выйдет из системы автоматически через %d секунды" msgstr[2] "%s выйдет из системы автоматически через %d секунд" #: js/ui/endSessionDialog.js:58 #, javascript-format msgid "You will be logged out automatically in %d second" msgid_plural "You will be logged out automatically in %d seconds" msgstr[0] "Вы автоматически выйдете из системы через %d секунду" msgstr[1] "Вы автоматически выйдете из системы через %d секунды" msgstr[2] "Вы автоматически выйдете из системы через %d секунд" #: js/ui/endSessionDialog.js:65 msgctxt "button" msgid "Log Out" msgstr "Выйти" #: js/ui/endSessionDialog.js:71 js/ui/status/system.js:176 msgctxt "title" msgid "Power Off" msgstr "Выключение" #: js/ui/endSessionDialog.js:72 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Установка обновлений и выключение" #: js/ui/endSessionDialog.js:75 #, javascript-format msgid "The system will power off automatically in %d second" msgid_plural "The system will power off automatically in %d seconds" msgstr[0] "Система будет автоматически выключена через %d секунду" msgstr[1] "Система будет автоматически выключена через %d секунды" msgstr[2] "Система будет автоматически выключена через %d секунд" #: js/ui/endSessionDialog.js:79 js/ui/endSessionDialog.js:98 msgctxt "checkbox" msgid "Install pending software updates" msgstr "Установить отложенные обновления ПО" #: js/ui/endSessionDialog.js:83 msgctxt "button" msgid "Power Off" msgstr "Выключить" #: js/ui/endSessionDialog.js:90 msgctxt "title" msgid "Restart" msgstr "Перезапуск" #: js/ui/endSessionDialog.js:91 msgctxt "title" msgid "Install Updates & Restart" msgstr "Установка обновлений и перезапуск" #: js/ui/endSessionDialog.js:94 #, javascript-format msgid "The system will restart automatically in %d second" msgid_plural "The system will restart automatically in %d seconds" msgstr[0] "Система будет автоматически перезапущена через %d секунду" msgstr[1] "Система будет автоматически перезапущена через %d секунды" msgstr[2] "Система будет автоматически перезапущена через %d секунд" #: js/ui/endSessionDialog.js:102 msgctxt "button" msgid "Restart" msgstr "Перезапустить" #: js/ui/endSessionDialog.js:110 msgctxt "title" msgid "Restart & Install Updates" msgstr "Перезапуск и установка обновлений" #: js/ui/endSessionDialog.js:113 #, javascript-format msgid "The system will automatically restart and install updates in %d second" msgid_plural "" "The system will automatically restart and install updates in %d seconds" msgstr[0] "" "Система автоматически перезапустится и установит обновления через %d секунду" msgstr[1] "" "Система автоматически перезапустится и установит обновления через %d секунды" msgstr[2] "" "Система автоматически перезапустится и установит обновления через %d секунд" #: js/ui/endSessionDialog.js:120 js/ui/endSessionDialog.js:141 msgctxt "button" msgid "Restart & Install" msgstr "Перезапустить и установить" #: js/ui/endSessionDialog.js:122 msgctxt "button" msgid "Install & Power Off" msgstr "Установить и выключить" #: js/ui/endSessionDialog.js:123 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Выключить после установки обновлений" #: js/ui/endSessionDialog.js:130 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "Перезапуск и установка обновлений" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:135 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "%s %s будет установлено после перезапуска. Установка обновлений может занять " "продолжительное время: убедитесь, что у вас есть резервная копия и что " "компьютер подключен к сети." #: js/ui/endSessionDialog.js:284 msgid "Low battery power: please plug in before installing updates" msgstr "" "Низкий заряд батареи: перед установкой обновлений подключите зарядное " "устройство" #: js/ui/endSessionDialog.js:293 msgid "Some applications are busy or have unsaved work" msgstr "Некоторые приложения заняты или результаты их работы не сохранены" #: js/ui/endSessionDialog.js:298 msgid "Other users are logged in" msgstr "Есть открытые сеансы других пользователей" #: js/ui/endSessionDialog.js:468 msgctxt "button" msgid "Boot Options" msgstr "Параметры загрузки" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:673 #, javascript-format msgid "%s (remote)" msgstr "%s (удалённый)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:676 #, javascript-format msgid "%s (console)" msgstr "%s (консоль)" #: js/ui/extensionDownloader.js:282 msgid "Install" msgstr "Установить" #: js/ui/extensionDownloader.js:288 msgid "Install Extension" msgstr "Установить расширение" #: js/ui/extensionDownloader.js:289 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "Загрузить и установить расширение \"%s\" из extensions.gnome.org?" #: js/ui/extensionSystem.js:354 msgid "Extension Updates Available" msgstr "Доступны обновления расширений" #: js/ui/extensionSystem.js:355 msgid "Extension updates are ready to be installed" msgstr "Обновления расширений готовы к установке" #: js/ui/inhibitShortcutsDialog.js:70 msgid "Allow inhibiting shortcuts" msgstr "Разрешить замену комбинации клавиш" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:73 #, javascript-format msgid "The app %s wants to inhibit shortcuts" msgstr "Приложение %s хочет запретить комбинации клавиш" #: js/ui/inhibitShortcutsDialog.js:74 msgid "An app wants to inhibit shortcuts" msgstr "Приложение хочет запретить комбинации клавиш" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:81 #, javascript-format msgid "You can restore shortcuts by pressing %s" msgstr "Вы можете восстановить комбинации клавиш, нажав %s" #: js/ui/kbdA11yDialog.js:34 msgid "Slow Keys Turned On" msgstr "\"Медленные\" клавиши включены" #: js/ui/kbdA11yDialog.js:35 msgid "Slow Keys Turned Off" msgstr "\"Медленные\" клавиши выключены" #: js/ui/kbdA11yDialog.js:36 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "Вы только что удержали клавишу Shift нажатой 8 секунд. Это комбинация для " "включения функции \"Медленные\" клавиши, которая влияет на способ работы с " "клавиатурой." #: js/ui/kbdA11yDialog.js:42 msgid "Sticky Keys Turned On" msgstr "\"Залипающие\" клавиши включены" #: js/ui/kbdA11yDialog.js:43 msgid "Sticky Keys Turned Off" msgstr "\"Залипающие\" клавиши выключены" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "Вы только что нажали клавишу Shift 5 раз подряд. Это комбинация для " "включения функции \"Залипающие\" клавиши, которая влияет на способ работы " "клавиатуры." #: js/ui/kbdA11yDialog.js:47 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" "Вы только что нажали две клавиши одновременно или нажали клавишу Shift 5 раз " "подряд. Это привело к включению функции \"Залипающие\" клавиши, которая " "влияет на режим работы клавиатуры." #: js/ui/kbdA11yDialog.js:57 msgid "Leave On" msgstr "Оставить включёнными" #: js/ui/kbdA11yDialog.js:57 msgid "Turn On" msgstr "Включить" #: js/ui/kbdA11yDialog.js:67 js/ui/status/network.js:457 msgid "Turn Off" msgstr "Выключить" #: js/ui/kbdA11yDialog.js:67 msgid "Leave Off" msgstr "Оставить выключенными" #: js/ui/keyboard.js:181 js/ui/status/keyboard.js:899 msgid "Keyboard Settings" msgstr "Настройки клавиатуры" #: js/ui/lookingGlass.js:729 msgid "No extensions installed" msgstr "Расширения не установлены" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:790 #, javascript-format msgid "%s has not emitted any errors" msgstr "%s не сообщал о каких-либо ошибках" #: js/ui/lookingGlass.js:796 msgid "Hide Errors" msgstr "Скрыть ошибки" #: js/ui/lookingGlass.js:800 js/ui/lookingGlass.js:877 msgid "Show Errors" msgstr "Показать ошибки" #: js/ui/lookingGlass.js:809 msgid "Active" msgstr "Активное" #: js/ui/lookingGlass.js:812 msgid "Inactive" msgstr "Неактивное" #: js/ui/lookingGlass.js:814 msgid "Error" msgstr "Ошибка" #: js/ui/lookingGlass.js:816 msgid "Out of date" msgstr "Устарело" #: js/ui/lookingGlass.js:818 msgid "Downloading" msgstr "Загрузка" #: js/ui/lookingGlass.js:820 msgid "Deactivating" msgstr "Отключение" #: js/ui/lookingGlass.js:822 msgid "Activating" msgstr "Активация" #: js/ui/lookingGlass.js:855 msgid "View Source" msgstr "Показать код" #: js/ui/lookingGlass.js:866 msgid "Web Page" msgstr "Веб-страница" #: js/ui/main.js:279 msgid "System was put in unsafe mode" msgstr "Система была переведена в небезопасный режим" #: js/ui/main.js:280 msgid "Apps now have unrestricted access" msgstr "Приложения теперь имеют неограниченный доступ" #: js/ui/main.js:283 js/ui/overview.js:54 msgid "Undo" msgstr "Отменить" #: js/ui/main.js:340 msgid "Logged in as a privileged user" msgstr "Авторизован как привилегированный пользователь" #: js/ui/main.js:341 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" "В целях соблюдения безопасности, не следует запускать сессию от имени " "привилегированного пользователя. Если это возможно, вам следует войти от " "имени обычного пользователя." #: js/ui/main.js:389 msgid "Screen Lock disabled" msgstr "Блокировка экрана отключена" #: js/ui/main.js:390 msgid "Screen Locking requires the GNOME display manager" msgstr "Для блокировки экрана требуется дисплейный менеджер GNOME" #. Translators: this is the string displayed in the header when a message #. source doesn't have a name #: js/ui/messageList.js:374 msgid "Unknown App" msgstr "Неизвестное приложение" #: js/ui/messageTray.js:328 js/ui/messageTray.js:330 msgid "Notification sound" msgstr "Звук уведомления" #: js/ui/mpris.js:198 msgid "Unknown artist" msgstr "Неизвестный исполнитель" #: js/ui/mpris.js:208 msgid "Unknown title" msgstr "Неизвестное название" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:330 msgid "Type to search" msgstr "Введите для поиска" #: js/ui/overviewControls.js:394 msgid "Apps" msgstr "Приложения" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:67 msgid "Overview" msgstr "Обзор" #: js/ui/padOsd.js:100 msgid "New shortcut…" msgstr "Создать комбинацию клавиш…" #: js/ui/padOsd.js:153 msgid "App defined" msgstr "Определено приложением" #: js/ui/padOsd.js:154 msgid "Show on-screen help" msgstr "Показывать экранную справку" #: js/ui/padOsd.js:155 msgid "Switch monitor" msgstr "Переключить монитор" #: js/ui/padOsd.js:156 msgid "Assign keystroke" msgstr "Назначение клавиш" #: js/ui/padOsd.js:225 msgid "Done" msgstr "Готово" #: js/ui/padOsd.js:728 msgid "Edit…" msgstr "Правка…" #: js/ui/padOsd.js:775 msgid "None" msgstr "Нет" #: js/ui/padOsd.js:846 msgid "Press a button to configure" msgstr "Нажмите кнопку для настройки" #: js/ui/padOsd.js:847 msgid "Press Esc to exit" msgstr "Нажмите Esc для выхода" #: js/ui/padOsd.js:850 msgid "Press any key to exit" msgstr "Нажмите любую клавишу для выхода" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:425 msgid "Activities" msgstr "Обзор" #: js/ui/panel.js:506 msgctxt "System menu in the top bar" msgid "System" msgstr "Система" #: js/ui/panel.js:680 msgid "Top Bar" msgstr "Верхняя панель" #: js/ui/quickSettings.js:188 msgid "Open menu" msgstr "Открыть меню" #: js/ui/runDialog.js:63 msgid "Run a Command" msgstr "Выполнить команду" #: js/ui/runDialog.js:78 msgid "Press ESC to close" msgstr "Нажмите Esc чтобы закрыть" #: js/ui/runDialog.js:243 msgid "Restart is not available on Wayland" msgstr "Перезапуск не доступен при использовании Wayland" #: js/ui/runDialog.js:248 msgid "Restarting…" msgstr "Перезапуск…" #: js/ui/screenShield.js:235 msgid "GNOME needs to lock the screen" msgstr "GNOME необходимо заблокировать экран" #: js/ui/screenShield.js:276 js/ui/screenShield.js:669 msgid "Unable to lock" msgstr "Не удалось заблокировать" #: js/ui/screenShield.js:277 js/ui/screenShield.js:670 msgid "Lock was blocked by an app" msgstr "Блокировке помешало приложение" #: js/ui/screenshot.js:1254 msgid "Selection" msgstr "Область" #: js/ui/screenshot.js:1264 msgid "Area Selection" msgstr "Выбор области" #: js/ui/screenshot.js:1269 msgid "Screen" msgstr "Экран" #: js/ui/screenshot.js:1279 msgid "Screen Selection" msgstr "Выбор экрана" #: js/ui/screenshot.js:1284 msgid "Window" msgstr "Окно" #: js/ui/screenshot.js:1294 msgid "Window Selection" msgstr "Выбор окна" #. Translators: entry in the window right click menu. #: js/ui/screenshot.js:1319 js/ui/status/system.js:113 js/ui/windowMenu.js:30 msgid "Take Screenshot" msgstr "Сделать снимок экрана" #: js/ui/screenshot.js:1335 msgid "Record Screen" msgstr "Записать экран" #. Translators: since this string refers to an action, #. it needs to be phrased as a verb. #: js/ui/screenshot.js:1352 msgid "Capture" msgstr "Снять" #: js/ui/screenshot.js:1374 msgid "Show Pointer" msgstr "Показать курсор мыши" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1998 msgid "Screencasts" msgstr "Записи экрана" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast From 07-17-2013 10:00:46 PM" #: js/ui/screenshot.js:2003 #, no-c-format msgid "Screencast From %d %t" msgstr "Запись экрана от %d %t" #. Translators: notification title. #: js/ui/screenshot.js:2049 msgid "Screencast recorded" msgstr "Запись экрана сделана" #. Translators: notification title. #: js/ui/screenshot.js:2062 msgid "Screencast failed to start" msgstr "Не удалось начать запись экрана" #. Translators: notification title. #: js/ui/screenshot.js:2068 msgid "Screencast ended: Out of disk space" msgstr "Запись экрана завершилась: Закончилось место на диске" #. We can encourage user to try again on service crashes since the #. recorder will auto-blocklist the pipeline that crashed. #. Translators: notification title. #: js/ui/screenshot.js:2074 msgid "Screencast ended unexpectedly, please try again" msgstr "Запись экрана неожиданно завершилась, попробуйте еще раз" #. Translators: notification title. #: js/ui/screenshot.js:2077 msgid "Screencast ended unexpectedly" msgstr "Запись экрана неожиданно завершилась" #. Translators: notification source name. #: js/ui/screenshot.js:2087 js/ui/screenshot.js:2329 msgid "Screenshot" msgstr "Снимок экрана" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:2094 msgid "Click here to view the video." msgstr "Нажмите здесь, чтобы посмотреть видео." #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:2102 js/ui/screenshot.js:2345 msgid "Show in Files" msgstr "Показать в Файлах" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2289 #, javascript-format msgid "Screenshot From %s" msgstr "Снимок экрана от %s" #. Translators: notification title. #: js/ui/screenshot.js:2335 msgid "Screenshot captured" msgstr "Снимок экрана сделан" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2337 msgid "You can paste the image from the clipboard." msgstr "Вы можете вставить изображение из буфера обмена." #: js/ui/screenshot.js:2393 js/ui/screenshot.js:2557 msgid "Screenshot taken" msgstr "Сделан снимок экрана" #: js/ui/search.js:831 msgid "Searching…" msgstr "Поиск…" #: js/ui/search.js:833 msgid "No results" msgstr "Результатов нет" #: js/ui/search.js:964 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "%d ещё" msgstr[1] "%d ещё" msgstr[2] "%d ещё" #: js/ui/searchController.js:89 #: subprojects/extensions-app/data/ui/extensions-window.ui:73 msgid "Search" msgstr "Поиск" #: js/ui/shellEntry.js:23 msgid "Copy" msgstr "Копировать" #: js/ui/shellEntry.js:28 msgid "Paste" msgstr "Вставить" #: js/ui/shellEntry.js:80 msgid "Show Text" msgstr "Показать текст" #: js/ui/shellEntry.js:82 msgid "Hide Text" msgstr "Скрыть текст" #: js/ui/shellEntry.js:176 msgid "Caps lock is on" msgstr "Включён Caps Lock" #: js/ui/shellMountOperation.js:288 msgid "Hidden Volume" msgstr "Скрытый том" #: js/ui/shellMountOperation.js:291 msgid "Windows System Volume" msgstr "Системный том Windows" #: js/ui/shellMountOperation.js:294 msgid "Uses Keyfiles" msgstr "Использует файлы-ключи" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:302 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead" msgstr "" "Чтобы разблокировать том, использующий файлы-ключи, используйте утилиту " "%s" #: js/ui/shellMountOperation.js:306 msgid "" "You need an external utility like Disks to unlock a volume that uses " "keyfiles" msgstr "" "Для разблокировки тома, использующего файлы-ключи, требуется сторонняя " "утилита, например Диски" #: js/ui/shellMountOperation.js:314 msgid "PIM Number" msgstr "Номер PIM" #: js/ui/shellMountOperation.js:373 msgid "Remember Password" msgstr "Запомнить пароль" #: js/ui/shellMountOperation.js:388 msgid "Unlock" msgstr "Разблокировать" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:402 #, javascript-format msgid "Open %s" msgstr "Открыть \"%s\"" #: js/ui/shellMountOperation.js:438 msgid "The PIM must be a number or empty" msgstr "PIM должен содержать цифры или быть пустым" #: js/ui/status/accessibility.js:36 msgid "Accessibility" msgstr "Специальные возможности" #: js/ui/status/accessibility.js:46 msgid "High Contrast" msgstr "Высокая контрастность" #: js/ui/status/accessibility.js:49 msgid "Zoom" msgstr "Масштабирование" #: js/ui/status/accessibility.js:56 msgid "Screen Reader" msgstr "Экранный диктор" #: js/ui/status/accessibility.js:60 msgid "Screen Keyboard" msgstr "Экранная клавиатура" #: js/ui/status/accessibility.js:64 msgid "Visual Alerts" msgstr "Визуальные предупреждения" #: js/ui/status/accessibility.js:68 msgid "Sticky Keys" msgstr "Залипающие клавиши" #: js/ui/status/accessibility.js:72 msgid "Slow Keys" msgstr "Медленные клавиши" #: js/ui/status/accessibility.js:76 msgid "Bounce Keys" msgstr "Отскакивающие клавиши" #: js/ui/status/accessibility.js:80 msgid "Mouse Keys" msgstr "Клавиши мыши" #: js/ui/status/accessibility.js:85 msgid "Accessibility Settings" msgstr "Настройки специальных возможностей" #: js/ui/status/accessibility.js:142 msgid "Large Text" msgstr "Крупный текст" #: js/ui/status/autoRotate.js:14 msgid "Auto Rotate" msgstr "Автоповорот" #: js/ui/status/backgroundApps.js:156 msgctxt "title" msgid "Background Apps" msgstr "Фоновые приложения" #: js/ui/status/backgroundApps.js:171 msgid "Apps known to be running without a window" msgstr "Известные приложения, работающие без окна" #: js/ui/status/backgroundApps.js:182 msgid "App Settings" msgstr "Настройки приложений" #: js/ui/status/backgroundApps.js:239 msgid "No Background Apps" msgstr "Нет фоновых приложений" #: js/ui/status/backgroundApps.js:241 #, javascript-format msgid "%d Background App" msgid_plural "%d Background Apps" msgstr[0] "%d фоновое приложение" msgstr[1] "%d фоновых приложения" msgstr[2] "%d фоновых приложений" #: js/ui/status/backlight.js:40 msgid "Keyboard Brightness" msgstr "Подсветка клавиатуры" #: js/ui/status/backlight.js:80 msgid "Off" msgstr "Выкл" #: js/ui/status/backlight.js:81 msgid "Low" msgstr "Низкая" #: js/ui/status/backlight.js:82 msgid "High" msgstr "Высокая" #: js/ui/status/backlight.js:148 js/ui/status/keyboard.js:881 msgid "Keyboard" msgstr "Клавиатура" #: js/ui/status/bluetooth.js:246 js/ui/status/network.js:362 msgid "Disconnect" msgstr "Отключить" #: js/ui/status/bluetooth.js:263 js/ui/status/bluetooth.js:265 msgid "Bluetooth" msgstr "Bluetooth" #: js/ui/status/bluetooth.js:288 js/ui/status/network.js:1902 msgid "Bluetooth Settings" msgstr "Настройки Bluetooth" #: js/ui/status/bluetooth.js:335 msgid "No available or connected devices" msgstr "Нет доступных или подключенных устройств" #: js/ui/status/bluetooth.js:336 msgid "Turn on Bluetooth to connect to devices" msgstr "Включите Bluetooth для подключения к устройствам" #. Translators: This is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:390 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d подключено" msgstr[1] "%d подключено" msgstr[2] "%d подключено" #: js/ui/status/brightness.js:34 msgid "Brightness" msgstr "Яркость" #: js/ui/status/darkMode.js:12 msgid "Dark Style" msgstr "Темный стиль" #: js/ui/status/dwellClick.js:15 msgid "Single Click" msgstr "Одиночное нажатие левой кнопки мыши" #: js/ui/status/dwellClick.js:20 msgid "Double Click" msgstr "Двойное нажатие левой кнопки мыши" #: js/ui/status/dwellClick.js:25 msgid "Drag" msgstr "Перетаскивание" #: js/ui/status/dwellClick.js:30 msgid "Secondary Click" msgstr "Нажатие правой кнопки мыши" #: js/ui/status/dwellClick.js:39 msgid "Dwell Click" msgstr "Нажатие левой кнопки мыши после задержки над кнопкой" #: js/ui/status/keyboard.js:898 msgid "Show Keyboard Layout" msgstr "Показать раскладку клавиатуры" #: js/ui/status/location.js:339 msgid "Allow location access" msgstr "Разрешить доступ к местоположению" #. Translators: %s is an application name #: js/ui/status/location.js:341 #, javascript-format msgid "The app %s wants to access your location" msgstr "Приложение %s запрашивает доступ к вашему местоположению" #: js/ui/status/location.js:351 msgid "Location access can be changed at any time from the privacy settings" msgstr "" "Доступ к местоположению можно изменить в любое время в настройках " "конфиденциальности" #: js/ui/status/location.js:359 msgid "Deny Access" msgstr "Запретить доступ" #: js/ui/status/location.js:364 msgid "Grant Access" msgstr "Предоставить доступ" #: js/ui/status/network.js:64 msgid "" msgstr "<неизвестно>" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:356 #, javascript-format msgid "Disconnect %s" msgstr "Отключиться от \"%s\"" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:358 #, javascript-format msgid "Connect to %s" msgstr "Подключиться к \"%s\"" #: js/ui/status/network.js:1052 msgid "Secure" msgstr "Защищенная" #: js/ui/status/network.js:1052 msgid "Not secure" msgstr "Незащищенная" #: js/ui/status/network.js:1053 #, javascript-format msgid "Signal strength %s%%" msgstr "Мощность сигнала %s%%" #. translators: The first placeholder is the network name, the second and indication whether it is secure, and the last the signal strength indication #: js/ui/status/network.js:1055 #, javascript-format msgid "%s, %s, %s" msgstr "%s, %s, %s" #. Translators: %s is a network identifier #: js/ui/status/network.js:1157 #, javascript-format msgid "%s Hotspot" msgstr "Точка доступа \"%s\"" #: js/ui/status/network.js:1428 #, javascript-format msgid "%d connected" msgid_plural "%d connected" msgstr[0] "Подключено %d" msgstr[1] "Подключено %d" msgstr[2] "Подключено %d" #: js/ui/status/network.js:1526 js/ui/status/network.js:1542 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1527 msgid "VPN Settings" msgstr "Настройки VPN" #: js/ui/status/network.js:1787 msgid "Wi–Fi" msgstr "Wi–Fi" #: js/ui/status/network.js:1789 msgid "All Networks" msgstr "Все сети" #: js/ui/status/network.js:1886 msgid "Wired Connections" msgstr "Проводные подключения" #: js/ui/status/network.js:1887 msgid "Wired Settings" msgstr "Настройки подключения" #: js/ui/status/network.js:1901 msgid "Bluetooth Tethers" msgstr "Bluetooth модемы" #. Translators: "Tether" from "Bluetooth Tether" #: js/ui/status/network.js:1908 msgid "Tether" msgstr "Модем" #: js/ui/status/network.js:1921 msgid "Mobile Connections" msgstr "Мобильные подключения" #: js/ui/status/network.js:1923 msgid "Mobile Broadband Settings" msgstr "Настройки мобильной связи" #. Translators: "Mobile" from "Mobile Broadband" #: js/ui/status/network.js:1932 msgid "Mobile" msgstr "Мобильная" #: js/ui/status/network.js:1966 msgid "Sign Into Wi–Fi Network" msgstr "Вход в сеть Wi-Fi" #: js/ui/status/network.js:2153 msgid "Connection failed" msgstr "Сбой подключения" #: js/ui/status/network.js:2154 msgid "Activation of network connection failed" msgstr "Не удалось активировать сетевое подключение" #: js/ui/status/nightLight.js:21 msgid "Night Light" msgstr "Ночной свет" #: js/ui/status/powerProfiles.js:21 msgctxt "Power profile" msgid "Performance" msgstr "Производительный" #: js/ui/status/powerProfiles.js:26 msgctxt "Power profile" msgid "Balanced" msgstr "Сбалансированный" #: js/ui/status/powerProfiles.js:31 msgctxt "Power profile" msgid "Power Saver" msgstr "Энергосберегающий" #: js/ui/status/powerProfiles.js:41 js/ui/status/powerProfiles.js:71 msgid "Power Mode" msgstr "Режим питания" #: js/ui/status/powerProfiles.js:73 msgid "Power Settings" msgstr "Настройки питания" #: js/ui/status/remoteAccess.js:76 msgid "Stop Screencast" msgstr "Остановить запись экрана" #: js/ui/status/remoteAccess.js:146 msgid "Stop Screen Sharing" msgstr "Остановить совместный доступ к экрану" # Нужно максимально коротко, иначе не влазит в меню gnome shell #: js/ui/status/rfkill.js:101 msgid "Airplane Mode" msgstr "Авиарежим" #: js/ui/status/system.js:170 msgid "Power Off Menu" msgstr "Меню выключения" #: js/ui/status/system.js:178 msgid "Suspend" msgstr "Режим ожидания" #: js/ui/status/system.js:183 msgid "Restart…" msgstr "Перезапуск…" #: js/ui/status/system.js:188 msgid "Power Off…" msgstr "Выключение…" #: js/ui/status/system.js:195 #: subprojects/extensions-app/data/ui/extensions-window.ui:124 msgid "Log Out…" msgstr "Выйти…" #: js/ui/status/system.js:200 msgid "Switch User…" msgstr "Сменить пользователя…" #: js/ui/status/system.js:244 msgctxt "action" msgid "Lock Screen" msgstr "Заблокировать экран" #: js/ui/status/thunderbolt.js:310 msgid "Unknown Thunderbolt device" msgstr "Неизвестное устройство Thunderbolt" #: js/ui/status/thunderbolt.js:311 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" "Новое устройство было обнаружено во время вашего отсутствия. Отключите и " "снова подключите устройство, Чтобы начать использовать устройство, отключите " "и снова подключите его." #: js/ui/status/thunderbolt.js:314 msgid "Unauthorized Thunderbolt device" msgstr "Неавторизованное устройство Thunderbolt" #: js/ui/status/thunderbolt.js:315 msgid "" "New device has been detected and needs to be authorized by an administrator" msgstr "" "Новое устройство было обнаружено и должно быть авторизовано администратором" #: js/ui/status/thunderbolt.js:321 msgid "Thunderbolt authorization error" msgstr "Ошибка авторизации Thunderbolt" #: js/ui/status/thunderbolt.js:322 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "Не удалось авторизовать устройство Thunderbolt: %s" #: js/ui/status/volume.js:220 msgid "Volume changed" msgstr "Громкость изменена" #: js/ui/status/volume.js:233 msgid "Unmute" msgstr "Включить звук" #: js/ui/status/volume.js:233 msgid "Mute" msgstr "Выключить звук" #: js/ui/status/volume.js:288 msgid "Volume" msgstr "Громкость" #: js/ui/status/volume.js:304 msgid "Sound Output" msgstr "Звуковой выход" #: js/ui/status/volume.js:376 msgid "Sound Input" msgstr "Звуковой вход" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:22 msgid "Mirror" msgstr "Зеркальное отображение" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:31 msgid "Join Displays" msgstr "Объединить дисплеи" #. Translators: this is for using only external displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:41 msgid "External Only" msgstr "Только внешний" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:49 msgid "Built-in Only" msgstr "Только встроенный" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:380 msgid "%A %B %-d" msgstr "%A, %-d %B" #: js/ui/unlockDialog.js:386 msgid "Swipe up to unlock" msgstr "Проведите вверх, чтобы разблокировать" #: js/ui/unlockDialog.js:387 msgid "Click or press a key to unlock" msgstr "Нажмите клавишу или кнопку мыши, чтобы разблокировать" #: js/ui/unlockDialog.js:570 msgid "Unlock Window" msgstr "Разблокировать окно" #: js/ui/unlockDialog.js:579 msgid "Log in as another user" msgstr "Войти от имени другого пользователя" #: js/ui/welcomeDialog.js:49 #, javascript-format msgid "GNOME %s" msgstr "GNOME %s" #: js/ui/welcomeDialog.js:53 #, javascript-format msgid "Welcome to %s" msgstr "Добро пожаловать в %s" #: js/ui/welcomeDialog.js:54 msgid "If you want to learn your way around, check out the tour" msgstr "Для знакомства с возможностями пройдите ознакомительный тур" #: js/ui/welcomeDialog.js:63 msgid "Skip" msgstr "Пропустить" #: js/ui/welcomeDialog.js:68 msgid "Take Tour" msgstr "Узнать о возможностях" #: js/ui/windowAttentionHandler.js:20 #, javascript-format msgid "“%s” is ready" msgstr "Окно \"%s\" ожидает" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:70 msgid "Keep these display settings?" msgstr "Сохранить эти настройки дисплея?" #: js/ui/windowManager.js:80 msgid "Revert Settings" msgstr "Вернуть настройки" #: js/ui/windowManager.js:85 msgid "Keep Changes" msgstr "Сохранить изменения" #: js/ui/windowManager.js:105 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "Изменения настроек будут отменены через %d секунду" msgstr[1] "Изменения настроек будут отменены через %d секунды" msgstr[2] "Изменения настроек будут отменены через %d секунд" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:502 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:42 msgid "Hide" msgstr "Скрыть" #: js/ui/windowMenu.js:49 msgid "Restore" msgstr "Восстановить" #: js/ui/windowMenu.js:53 msgid "Maximize" msgstr "Развернуть" #: js/ui/windowMenu.js:60 msgid "Move" msgstr "Переместить" #: js/ui/windowMenu.js:80 msgid "Resize" msgstr "Изменить размер" #: js/ui/windowMenu.js:100 msgid "Always on Top" msgstr "Всегда сверху" #: js/ui/windowMenu.js:119 msgid "Always on Visible Workspace" msgstr "Всегда на видимом рабочем столе" #: js/ui/windowMenu.js:133 msgid "Move to Workspace Left" msgstr "Переместить на рабочий стол влево" #: js/ui/windowMenu.js:139 msgid "Move to Workspace Right" msgstr "Переместить на рабочий стол вправо" #: js/ui/windowMenu.js:145 msgid "Move to Workspace Up" msgstr "Переместить на рабочий стол вверх" #: js/ui/windowMenu.js:151 msgid "Move to Workspace Down" msgstr "Переместить на рабочий стол вниз" #: js/ui/windowMenu.js:169 msgid "Move to Monitor Up" msgstr "Переместить на экран вверх" #: js/ui/windowMenu.js:178 msgid "Move to Monitor Down" msgstr "Переместить на экран вниз" #: js/ui/windowMenu.js:187 msgid "Move to Monitor Left" msgstr "Переместить на экран влево" #: js/ui/windowMenu.js:196 msgid "Move to Monitor Right" msgstr "Переместить на экран вправо" #: js/ui/windowMenu.js:204 msgid "Close" msgstr "Закрыть" #: src/main.c:529 subprojects/extensions-tool/src/main.c:336 msgid "Print version" msgstr "Показать номер версии" #: src/main.c:535 msgid "Mode used by GDM for login screen" msgstr "Режим, используемый GDM для окна входа в систему" #: src/main.c:541 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "" "Использовать для экрана входа в систему определённый режим, например \"gdm\"" #: src/main.c:547 msgid "List possible modes" msgstr "Список возможных режимов" #: src/main.c:553 msgid "Force animations to be enabled" msgstr "Принудительное включение анимации" #: src/shell-app.c:252 msgctxt "program" msgid "Unknown" msgstr "Неизвестное приложение" #: src/shell-app.c:503 #, c-format msgid "Failed to launch “%s”" msgstr "Не удалось запустить \"%s\"" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match" msgstr "Пароли не совпадают" #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "Пароль не может быть пустым" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "Аутентификация отклонена пользователем" #: src/st/st-icon-theme.c:1865 #, c-format msgid "Icon '%s' not present in theme %s" msgstr "Значок \"%s\" не присутствует в теме \"%s\"" #: src/st/st-icon-theme.c:3454 src/st/st-icon-theme.c:3757 msgid "Failed to load icon" msgstr "Не удалось загрузить значок" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 msgid "Manage your GNOME Extensions" msgstr "Управление расширениями GNOME Shell" #. developer_name tag deprecated with Appstream 1.0 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:19 msgid "The GNOME Project" msgstr "Проект GNOME" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:51 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" "Приложение \"Расширения GNOME\" занимается обновлением расширений, " "настройкой параметров расширений и удалением или отключением ненужных " "расширений." #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:63 msgid "Main Window" msgstr "Главное окно" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:67 msgid "Available Updates" msgstr "Доступные обновления" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:71 msgid "Search View" msgstr "Отображение поиска" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "Настроить расширения GNOME Shell" #: subprojects/extensions-app/js/extensionManager.js:237 #, javascript-format msgid "" "The installed version of this extension (%s) is incompatible with the " "current version of GNOME (%s). The extension has been disabled." msgstr "" "Установленная версия этого расширения (%s) несовместима с текущей версией " "GNOME (%s). Расширение было отключено." #: subprojects/extensions-app/js/extensionManager.js:238 #, javascript-format msgid "" "The installed version of this extension is incompatible with the current " "version of GNOME (%s). The extension has been disabled." msgstr "" "Установленная версия этого расширения несовместима с текущей версией GNOME " "(%s). Расширение было отключено." #: subprojects/extensions-app/js/extensionManager.js:242 msgid "" "An error has occurred in this extension. This could cause issues elsewhere " "in the system. It is recommended to turn the extension off until the error " "is resolved." msgstr "" "В этом расширении произошла ошибка. Это может привести к проблемам в других " "частях системы. Рекомендуется отключить расширение до устранения ошибки." #. translators: Details for an extension error #: subprojects/extensions-app/js/extensionManager.js:248 msgid "Error details:" msgstr "Сведения об ошибке:" #: subprojects/extensions-app/js/extensionRow.js:82 #, javascript-format msgid "Version %s" msgstr "Версия %s" #: subprojects/extensions-app/js/extensionsWindow.js:113 #, javascript-format msgid "Remove “%s”?" msgstr "Удалить \"%s\"?" #: subprojects/extensions-app/js/extensionsWindow.js:114 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "" "После удаления расширения, если потребуется использовать его снова, нужно " "будет загрузить и установить его заново" #: subprojects/extensions-app/js/extensionsWindow.js:117 msgid "_Cancel" msgstr "_Отменить" #: subprojects/extensions-app/js/extensionsWindow.js:118 msgid "_Remove" msgstr "_Удалить" #: subprojects/extensions-app/js/extensionsWindow.js:158 msgid "translator-credits" msgstr "" "Stas Solovey , 2011-2020\n" "Ivan Molodetskikh , 2020\n" "Alexey Rubtsov , 2021\n" "Aleksandr Melman , 2022-2023" #: subprojects/extensions-app/js/extensionsWindow.js:203 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "%d расширение будет обновлено при следующем входе в систему." msgstr[1] "%d расширения будет обновлено при следующем входе в систему." msgstr[2] "%d расширений будет обновлено при следующем входе в систему." #: subprojects/extensions-app/data/ui/extension-row.ui:22 msgid "Error Details" msgstr "Сведения об ошибке" #: subprojects/extensions-app/data/ui/extension-row.ui:62 msgid "Updates Details" msgstr "Сведения об обновлениях" #: subprojects/extensions-app/data/ui/extension-row.ui:72 msgid "" "A new version of this extension is ready and will be loaded on next login." msgstr "" "Новая версия этого расширения уже готова и будет загружена при следующем " "входе в систему." #: subprojects/extensions-app/data/ui/extension-row.ui:104 msgid "Extension Details" msgstr "Сведения о расширении" #: subprojects/extensions-app/data/ui/extension-row.ui:192 msgid "_Website" msgstr "_Веб-сайт" #: subprojects/extensions-app/data/ui/extension-row.ui:219 msgid "_Settings" msgstr "_Настройки" #: subprojects/extensions-app/data/ui/extension-row.ui:246 msgid "_Remove…" msgstr "У_далить…" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Keyboard Shortcuts" msgstr "Комбинации клавиш" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "О приложении" #: subprojects/extensions-app/data/ui/extensions-window.ui:64 msgid "Main Menu" msgstr "Главное меню" #: subprojects/extensions-app/data/ui/extensions-window.ui:106 msgid "Search extensions" msgstr "Поиск расширений" #: subprojects/extensions-app/data/ui/extensions-window.ui:134 msgid "_Extensions" msgstr "_Расширения" #: subprojects/extensions-app/data/ui/extensions-window.ui:139 msgid "More Information" msgstr "Дополнительная информация" #: subprojects/extensions-app/data/ui/extensions-window.ui:151 msgid "" "Extensions can cause performance and stability issues. It is recommended to " "disable all extensions if you experience problems with your system." msgstr "" "Расширения могут вызывать проблемы с производительностью и стабильностью. " "Рекомендуется отключить все расширения, если у вас возникли проблемы с " "системой." #: subprojects/extensions-app/data/ui/extensions-window.ui:178 msgid "User Extensions" msgstr "Пользовательские расширения" #: subprojects/extensions-app/data/ui/extensions-window.ui:198 msgid "System Extensions" msgstr "Системные расширения" #: subprojects/extensions-app/data/ui/extensions-window.ui:233 msgid "Search Results" msgstr "Результаты поиска" #: subprojects/extensions-app/data/ui/extensions-window.ui:252 msgid "No Results Found" msgstr "Результатов не найдено" #: subprojects/extensions-app/data/ui/extensions-window.ui:253 msgid "Try a different search" msgstr "Попробуйте другой поисковый запрос" #: subprojects/extensions-app/data/ui/extensions-window.ui:264 msgid "No Installed Extensions" msgstr "Нет установленных расширений" #: subprojects/extensions-app/data/ui/extensions-window.ui:265 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" "Чтобы найти и добавить расширения, посетите extensions.gnome.org." #: subprojects/extensions-app/data/ui/extensions-window.ui:276 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" "Нам очень жаль, но список установленных расширений получить не удалось. " "Убедитесь, что вы вошли в GNOME и попробуйте снова." #: subprojects/extensions-app/data/ui/help-overlay.ui:9 msgctxt "shortcut window" msgid "General" msgstr "Общие" #: subprojects/extensions-app/data/ui/help-overlay.ui:12 msgctxt "shortcut window" msgid "Open Menu" msgstr "Открыть меню" #: subprojects/extensions-app/data/ui/help-overlay.ui:18 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Переключить поле поиска" #: subprojects/extensions-app/data/ui/help-overlay.ui:24 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Показать комбинации клавиш" #: subprojects/extensions-app/data/ui/help-overlay.ui:30 msgctxt "shortcut window" msgid "Quit" msgstr "Закрыть" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:284 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "Новое расширение было успешно создано в %s.\n" #: subprojects/extensions-tool/src/command-create.c:376 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" "Имя должно быть очень короткой (в идеале наглядной) строкой.\n" "Например: %s" #: subprojects/extensions-tool/src/command-create.c:382 #: subprojects/extensions-tool/src/main.c:243 msgid "Name" msgstr "Имя" #: subprojects/extensions-tool/src/command-create.c:396 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" "Описание — это одно предложение, описывающее работу вашего расширения.\n" "Например: %s" #: subprojects/extensions-tool/src/command-create.c:402 #: subprojects/extensions-tool/src/main.c:246 msgid "Description" msgstr "Описание" #: subprojects/extensions-tool/src/command-create.c:416 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" "UUID — это глобально уникальный идентификатор для вашего расширения.\n" "Он должен быть в формате адреса электронной почты (clicktofocus@janedoe." "example.com)\n" #: subprojects/extensions-tool/src/command-create.c:443 msgid "Choose one of the available templates:\n" msgstr "Выберите один из доступных шаблонов:\n" #: subprojects/extensions-tool/src/command-create.c:457 msgid "Template" msgstr "Шаблон" #: subprojects/extensions-tool/src/command-create.c:515 msgid "The unique identifier of the new extension" msgstr "Уникальный идентификатор нового расширения" #: subprojects/extensions-tool/src/command-create.c:518 msgid "NAME" msgstr "ИМЯ" #: subprojects/extensions-tool/src/command-create.c:519 msgid "The user-visible name of the new extension" msgstr "Имя расширения, видимое пользователю" #: subprojects/extensions-tool/src/command-create.c:521 msgid "DESCRIPTION" msgstr "ОПИСАНИЕ" #: subprojects/extensions-tool/src/command-create.c:523 msgid "A short description of what the extension does" msgstr "Краткое описание того, что делает расширение" #: subprojects/extensions-tool/src/command-create.c:525 #: subprojects/extensions-tool/src/command-pack.c:455 msgid "DOMAIN" msgstr "ДОМЕН" #: subprojects/extensions-tool/src/command-create.c:527 msgid "The gettext domain used by the extension" msgstr "Домен gettext, используемый расширением" #: subprojects/extensions-tool/src/command-create.c:529 #: subprojects/extensions-tool/src/command-pack.c:448 msgid "SCHEMA" msgstr "СХЕМА" #: subprojects/extensions-tool/src/command-create.c:531 msgid "The GSettings schema used by the extension" msgstr "Схема GSettings, используемая расширением" #: subprojects/extensions-tool/src/command-create.c:534 msgid "TEMPLATE" msgstr "ШАБЛОН" #: subprojects/extensions-tool/src/command-create.c:535 msgid "The template to use for the new extension" msgstr "Шаблон, используемый для нового расширения" #: subprojects/extensions-tool/src/command-create.c:538 msgid "Include prefs.js template" msgstr "Включить шаблон prefs.js" #: subprojects/extensions-tool/src/command-create.c:544 msgid "Enter extension information interactively" msgstr "Интерактивный ввод информации о расширении" #: subprojects/extensions-tool/src/command-create.c:552 msgid "Create a new extension" msgstr "Создать новое расширение" #: subprojects/extensions-tool/src/command-create.c:570 #: subprojects/extensions-tool/src/command-list.c:190 msgid "Unknown arguments" msgstr "Неизвестные аргументы" #: subprojects/extensions-tool/src/command-create.c:595 msgid "UUID, name and description are required" msgstr "Необходимо указать UUID, имя и описание" #: subprojects/extensions-tool/src/command-disable.c:62 #: subprojects/extensions-tool/src/command-enable.c:62 #, c-format msgid "Extension “%s” does not exist\n" msgstr "Расширение \"%s\" не найдено\n" #: subprojects/extensions-tool/src/command-disable.c:98 msgid "Disable an extension" msgstr "Выключить расширение" #: subprojects/extensions-tool/src/command-disable.c:116 #: subprojects/extensions-tool/src/command-enable.c:116 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "UUID не указан" #: subprojects/extensions-tool/src/command-disable.c:121 #: subprojects/extensions-tool/src/command-enable.c:121 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "Указано более одного UUID" #: subprojects/extensions-tool/src/command-enable.c:98 msgid "Enable an extension" msgstr "Включить расширение" #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:66 #: subprojects/extensions-tool/src/main.c:150 msgid "Failed to connect to GNOME Shell\n" msgstr "Невозможно подключиться к GNOME Shell\n" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:159 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "Расширение \"%s\" не найдено\n" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "Показать сведения о расширении" #: subprojects/extensions-tool/src/command-install.c:190 msgid "Overwrite an existing extension" msgstr "Перезаписать существующие расширение" #: subprojects/extensions-tool/src/command-install.c:192 msgid "EXTENSION_BUNDLE" msgstr "ПАКЕТ_РАСШИРЕНИЯ" #: subprojects/extensions-tool/src/command-install.c:201 msgid "Install an extension bundle" msgstr "Установить пакет расширения" #: subprojects/extensions-tool/src/command-install.c:219 msgid "No extension bundle specified" msgstr "Не указан пакет расширения" #: subprojects/extensions-tool/src/command-install.c:225 msgid "More than one extension bundle specified" msgstr "Указано более одного пакета расширения" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show user-installed extensions" msgstr "Показать пользовательские расширения" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show system-installed extensions" msgstr "Показать системные расширения" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Show enabled extensions" msgstr "Показать включенные расширения" #: subprojects/extensions-tool/src/command-list.c:149 msgid "Show disabled extensions" msgstr "Показать отключенные расширения" #: subprojects/extensions-tool/src/command-list.c:152 msgid "Show extensions in active state" msgstr "Показать расширения в активном состоянии" #: subprojects/extensions-tool/src/command-list.c:155 msgid "Show extensions in inactive state" msgstr "Показать расширения в неактивном состоянии" #: subprojects/extensions-tool/src/command-list.c:158 msgid "Show extensions with preferences" msgstr "Показать расширения имеющие настройки" #: subprojects/extensions-tool/src/command-list.c:161 msgid "Show extensions with updates" msgstr "Показать расширения с обновлениями" #: subprojects/extensions-tool/src/command-list.c:164 msgid "Print extension details" msgstr "Вывести сведения о расширении" #: subprojects/extensions-tool/src/command-list.c:172 msgid "List installed extensions" msgstr "Показать установленные расширения" #: subprojects/extensions-tool/src/command-pack.c:444 msgid "FILE" msgstr "ФАЙЛ" #: subprojects/extensions-tool/src/command-pack.c:445 msgid "Additional source to include in the bundle" msgstr "Дополнительный исходный файл для включения в пакет" #: subprojects/extensions-tool/src/command-pack.c:449 msgid "A GSettings schema that should be included" msgstr "Схема GSettings для включения в пакет" #: subprojects/extensions-tool/src/command-pack.c:451 #: subprojects/extensions-tool/src/command-pack.c:462 msgid "DIRECTORY" msgstr "КАТАЛОГ" #: subprojects/extensions-tool/src/command-pack.c:453 msgid "The directory where translations are found" msgstr "Директория с переводами" #: subprojects/extensions-tool/src/command-pack.c:457 msgid "The gettext domain to use for translations" msgstr "Домен gettext для переводов" #: subprojects/extensions-tool/src/command-pack.c:460 msgid "Overwrite an existing pack" msgstr "Переписать существующий пакет" #: subprojects/extensions-tool/src/command-pack.c:464 msgid "The directory where the pack should be created" msgstr "Директория, где должен быть создан пакет" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "SOURCE_DIRECTORY" msgstr "ИСХОДНЫЙ_КАТАЛОГ" #: subprojects/extensions-tool/src/command-pack.c:475 msgid "Create an extension bundle" msgstr "Создать пакет расширения" #: subprojects/extensions-tool/src/command-pack.c:495 msgid "More than one source directory specified" msgstr "Указано больше одной исходной директории" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "Расширение \"%s\" не имеет настроек\n" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "Не удалось открыть настройки для расширения \"%s\": %s\n" #: subprojects/extensions-tool/src/command-prefs.c:87 msgid "Opens extension preferences" msgstr "Открыть параметры расширения" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "Сбросить расширение" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "Не удалось удалить системные расширения\n" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "Не удалось удалить \"%s\"\n" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "Удалить расширение" #: subprojects/extensions-tool/src/main.c:76 msgid "Do not print error messages" msgstr "Не показывать сообщения об ошибках" #: subprojects/extensions-tool/src/main.c:249 msgid "Path" msgstr "Путь" #: subprojects/extensions-tool/src/main.c:252 msgid "URL" msgstr "URL" #: subprojects/extensions-tool/src/main.c:255 msgid "Original author" msgstr "Первый автор" #: subprojects/extensions-tool/src/main.c:261 #: subprojects/extensions-tool/src/main.c:263 #: subprojects/extensions-tool/src/main.c:265 msgid "Version" msgstr "Версия" #: subprojects/extensions-tool/src/main.c:268 msgid "Enabled" msgstr "Включено" #: subprojects/extensions-tool/src/main.c:268 msgid "Yes" msgstr "Да" #: subprojects/extensions-tool/src/main.c:268 msgid "No" msgstr "Нет" #: subprojects/extensions-tool/src/main.c:271 msgid "State" msgstr "Состояние" #: subprojects/extensions-tool/src/main.c:309 msgid "“version” takes no arguments" msgstr "\"version\" не принимает аргументов" #: subprojects/extensions-tool/src/main.c:311 #: subprojects/extensions-tool/src/main.c:331 msgid "Usage:" msgstr "Использование:" #: subprojects/extensions-tool/src/main.c:314 msgid "Print version information and exit." msgstr "Показать информацию о версии и выйти." #: subprojects/extensions-tool/src/main.c:329 #: subprojects/extensions-tool/src/main.c:332 msgid "COMMAND" msgstr "КОМАНДА" #: subprojects/extensions-tool/src/main.c:332 msgid "[ARGS…]" msgstr "[АРГУМЕНТЫ…]" #: subprojects/extensions-tool/src/main.c:334 msgid "Commands:" msgstr "Команды:" #: subprojects/extensions-tool/src/main.c:335 msgid "Print help" msgstr "Показать справку" #: subprojects/extensions-tool/src/main.c:337 msgid "Enable extension" msgstr "Включить расширение" #: subprojects/extensions-tool/src/main.c:338 msgid "Disable extension" msgstr "Выключить расширение" #: subprojects/extensions-tool/src/main.c:339 msgid "Reset extension" msgstr "Сбросить расширение" #: subprojects/extensions-tool/src/main.c:340 msgid "Uninstall extension" msgstr "Удалить расширение" #: subprojects/extensions-tool/src/main.c:341 msgid "List extensions" msgstr "Показать расширения" #: subprojects/extensions-tool/src/main.c:342 #: subprojects/extensions-tool/src/main.c:343 msgid "Show extension info" msgstr "Показать сведения о расширении" #: subprojects/extensions-tool/src/main.c:344 msgid "Open extension preferences" msgstr "Открыть параметры расширения" #: subprojects/extensions-tool/src/main.c:345 msgid "Create extension" msgstr "Создать расширение" #: subprojects/extensions-tool/src/main.c:346 msgid "Package extension" msgstr "Создать пакет расширения" #: subprojects/extensions-tool/src/main.c:347 msgid "Install extension bundle" msgstr "Установить пакет расширения" #: subprojects/extensions-tool/src/main.c:349 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "Используйте \"%s\" для получения подробной справки.\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "Пустое" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "Пустое расширение" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "Индикатор" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "Добавить значок на верхнюю панель" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:4 msgid "Quick Settings Item" msgstr "Пункт быстрых настроек" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:5 msgid "Add an item to quick settings" msgstr "Добавить пункт в быстрые настройки" #. translators: #. * The device has been disabled #: subprojects/gvc/gvc-mixer-control.c:1872 msgid "Disabled" msgstr "Выключено" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1879 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u выход" msgstr[1] "%u выхода" msgstr[2] "%u выходов" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1889 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u вход" msgstr[1] "%u входа" msgstr[2] "%u входов" #: subprojects/gvc/gvc-mixer-control.c:2872 msgid "System Sounds" msgstr "Системные звуки" #~ msgid "Move Titlebar Onscreen" #~ msgstr "Переместить панель заголовка на экран" #~ msgid "Stop conflicting session dialog closed" #~ msgstr "Диалог остановки конфликтующего сеанса закрыт" #, javascript-format #~ msgid "Try to login again to start a session for user %s." #~ msgstr "" #~ "Попробуйте войти в систему еще раз, чтобы начать сеанс для пользователя " #~ "%s." #, javascript-format #~ msgid "%s is now known as %s" #~ msgstr "Контакт %s теперь известен как %s" #~ msgid "Network Manager" #~ msgstr "Диспетчер сети" #~ msgid "System Information" #~ msgstr "Системная информация" #~ msgid "Thunderbolt" #~ msgstr "Thunderbolt" #~ msgid "Disabling" #~ msgstr "Отключение" #~ msgid "Enabling" #~ msgstr "Включение" #~ msgid "No Matches" #~ msgstr "Нет совпадений" #~ msgid "The extension had an error" #~ msgstr "Расширение содержит ошибку" #~ msgid "The extension can be updated" #~ msgstr "Расширение может быть обновлено" #~ msgid "Help" #~ msgstr "Справка" #~ msgid "Manually Installed" #~ msgstr "Установлены вручную" #~ msgid "Built-In" #~ msgstr "Встроенные" #~ msgid "Extension Updates Ready" #~ msgstr "Доступны обновления расширений" #, javascript-format #~ msgid "%d %%" #~ msgstr "%d %%" #~ msgid "No Thanks" #~ msgstr "Нет, спасибо" #~ msgid "Screenshot / Screencast" #~ msgstr "Снимок экрана / Запись экрана" #~ msgid "Power Profiles" #~ msgstr "Профили питания" #~ msgid "Evolution Calendar" #~ msgstr "Календарь Evolution" #~ msgid "Applications" #~ msgstr "Приложения" #~ msgid "" #~ "Whether the default Bluetooth adapter had set up devices associated to it" #~ msgstr "Связан ли адаптер Bluetooth по умолчанию с каким-либо устройством" #~ msgid "" #~ "The shell will only show a Bluetooth menu item if a Bluetooth adapter is " #~ "powered, or if there were devices set up associated with the default " #~ "adapter. This will be reset if the default adapter is ever seen not to " #~ "have devices associated to it." #~ msgstr "" #~ "Пункт меню Bluetooth будет отображаться только в случае включённого " #~ "адаптера Bluetooth, или если имеются установленные устройства связанные с " #~ "адаптером по умолчанию. Параметр будет сброшен, если адаптер по умолчанию " #~ "не имеет связанных с ним устройств." #~ msgid "Attach modal dialog to the parent window" #~ msgstr "Прикреплять модальное диалоговое окно к родительскому окну" #~ msgid "" #~ "This key overrides the key in org.gnome.mutter when running GNOME Shell." #~ msgstr "" #~ "Этот ключ переопределяет ключ в org.gnome.mutter при запуске GNOME Shell." #~ msgid "Enable edge tiling when dropping windows on screen edges" #~ msgstr "" #~ "Включить автоматическое изменение размеров окон при перемещении окон к " #~ "краям экрана" #~ msgid "Workspaces are managed dynamically" #~ msgstr "Рабочие столы управляются динамически" #~ msgid "Workspaces only on primary monitor" #~ msgstr "Рабочие столы только на основном мониторе" #~ msgid "Delay focus changes in mouse mode until the pointer stops moving" #~ msgstr "Задержка изменения фокуса в режиме мыши после остановки указателя" #, javascript-format #~ msgid "Unable to start %s" #~ msgstr "Не удалось запустить %s" #, javascript-format #~ msgid "Couldn’t find the %s application" #~ msgstr "Не удалось найти приложение %s" #~ msgid "Log Out" #~ msgstr "Выйти" #~ msgid "Connect to Internet" #~ msgstr "Подключиться к Интернету" #~ msgid "Airplane Mode is On" #~ msgstr "Включён авиарежим" #~ msgid "Wi-Fi is Off" #~ msgstr "Wi-Fi выключен" #~ msgid "Wi-Fi needs to be turned on in order to connect to a network." #~ msgstr "Для подключения к сети, адаптер Wi-Fi должен быть включён." #~ msgid "Turn On Wi-Fi" #~ msgstr "Включить Wi-Fi" #~ msgid "Select a network" #~ msgstr "Выбрать сеть" #~ msgid "No Networks" #~ msgstr "Сети отсутствуют" #~ msgid "Use hardware switch to turn off" #~ msgstr "" #~ "Отключается\n" #~ "механическим\n" #~ "переключателем" #~ msgid "Select Network" #~ msgstr "Выбрать сеть" #~ msgid "Wi-Fi Settings" #~ msgstr "Настройки Wi-Fi" #~ msgid "VPN Off" #~ msgstr "" #~ "Соединение VPN\n" #~ "выключено" #~ msgid "Network Settings" #~ msgstr "Настройки сети" #, javascript-format #~ msgid "%s Wi-Fi Connection" #~ msgid_plural "%s Wi-Fi Connections" #~ msgstr[0] "%s соединение Wi-Fi" #~ msgstr[1] "%s соединения Wi-Fi" #~ msgstr[2] "%s соединений Wi-Fi" #, javascript-format #~ msgid "%s Wired Connection" #~ msgid_plural "%s Wired Connections" #~ msgstr[0] "%s проводное соединение" #~ msgstr[1] "%s проводных соединения" #~ msgstr[2] "%s проводных соединений" #, javascript-format #~ msgid "%s Bluetooth Connection" #~ msgid_plural "%s Bluetooth Connections" #~ msgstr[0] "%s Bluetooth соединение" #~ msgstr[1] "%s Bluetooth соединения" #~ msgstr[2] "%s Bluetooth соединений" #, javascript-format #~ msgid "%s Modem Connection" #~ msgid_plural "%s Modem Connections" #~ msgstr[0] "%s модемное соединение" #~ msgstr[1] "%s модемных соединения" #~ msgstr[2] "%s модемных соединений" #, javascript-format #~ msgid "%s Unmanaged" #~ msgstr "" #~ "%s соединение\n" #~ "не управляется" #, javascript-format #~ msgid "%s Connecting" #~ msgstr "" #~ "%s соединение\n" #~ "подключается" #, javascript-format #~ msgid "%s Requires Authentication" #~ msgstr "" #~ "%s соединение\n" #~ "требует аутентификацию" #, javascript-format #~ msgid "Firmware Missing For %s" #~ msgstr "" #~ "%s соединение:\n" #~ "отсутствует прошивка" #, javascript-format #~ msgid "%s Unavailable" #~ msgstr "" #~ "%s соединение\n" #~ "недоступно" #, javascript-format #~ msgid "%s Connection Failed" #~ msgstr "" #~ "%s соединение\n" #~ "не удалось подключить" # заменил "оборудование" потому что не влазит в панель #, javascript-format #~ msgid "%s Hardware Disabled" #~ msgstr "" #~ "%s соединение:\n" #~ "аппаратура отключена" #, javascript-format #~ msgid "%s Disabled" #~ msgstr "" #~ "%s соединение\n" #~ "отключено" #, javascript-format #~ msgid "%s Not Connected" #~ msgstr "" #~ "%s сеть\n" #~ "не подключена" #~ msgid "unknown" #~ msgstr "неизвестно" #~ msgid "connecting…" #~ msgstr "подключение…" #~ msgid "authentication required" #~ msgstr "требуется аутентификация" #~ msgid "connection failed" #~ msgstr "сбой подключения" #~ msgid "Lock" #~ msgstr "Заблокировать" #~ msgid "Power Off / Log Out" #~ msgstr "Выключить / Выйти" #~ msgid "Bluetooth On" #~ msgstr "Bluetooth включён" #~ msgid "Bluetooth Off" #~ msgstr "Bluetooth выключен" #~ msgid "Night Light Disabled" #~ msgstr "Ночной свет отключен" #~ msgid "Resume" #~ msgstr "Продолжить" #~ msgid "Disable Until Tomorrow" #~ msgstr "Отключить до завтра" #~ msgid "Fully Charged" #~ msgstr "Полный заряд" #~ msgid "Not Charging" #~ msgstr "Не заряжается" #~ msgid "Estimating…" #~ msgstr "Подсчитывается…" # нужно в две строки, иначе не влезает в выпадающую панель #, javascript-format #~ msgid "%d∶%02d Remaining (%d %%)" #~ msgstr "" #~ "Осталось %02d ч. %d мин.\n" #~ "Разряжается (%d %%)" # нужно в две строки, иначе не влезает в выпадающую панель #, javascript-format #~ msgid "%d∶%02d Until Full (%d %%)" #~ msgstr "" #~ "До полной %02d ч. %d мин.\n" #~ "Заряжается (%d %%)" #~ msgid "Location Enabled" #~ msgstr "Геолокация включена" #~ msgid "Disable" #~ msgstr "Выключить" #~ msgid "Location In Use" #~ msgstr "Геолокация используется" # заменил "определение местоположения" на "геолокация" потому что не влазит в панель #~ msgid "Location Disabled" #~ msgstr "Геолокация выключена" #~ msgid "Enable" #~ msgstr "Включить" #~ msgid "Screen is Being Shared" #~ msgstr "Экран общедоступен" #~ msgid "Turn off" #~ msgstr "Выключить" 0707010000025E000081A40000000000000000000000016712993F0000A1AF000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/si.po# Sinhala translation for gnome-shell. # Copyright (C) 2012 gnome-shell's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-shell package. # # Danishka Navin , 2012. msgid "" msgstr "" "Project-Id-Version: gnome-shell master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "shell&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2012-02-01 05:57+0000\n" "PO-Revision-Date: 2012-02-01 15:44+0530\n" "Last-Translator: Danishka Navin \n" "Language-Team: Sinhala \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" "Language: si\n" "X-Generator: Lokalize 1.2\n" #: ../data/gnome-shell.desktop.in.in.h:1 msgid "GNOME Shell" msgstr "GNOME ශෙල්" #: ../data/gnome-shell.desktop.in.in.h:2 msgid "Window management and application launching" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:1 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:2 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:3 msgid "File extension used for storing the screencast" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:4 msgid "Framerate used for recording screencasts." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:5 msgid "" "GNOME Shell extensions have a uuid property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension DBus methods on org.gnome.Shell." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:6 msgid "History for command (Alt-F2) dialog" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:7 msgid "History for the looking glass dialog" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:8 msgid "If true, display date in the clock, in addition to time." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:9 msgid "If true, display seconds in time." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:10 msgid "If true, display the ISO week date in the calendar." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:11 msgid "List of desktop file IDs for favorite applications" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:13 #, no-c-format msgid "" "Sets the GStreamer pipeline used to encode recordings. It follows the syntax " "used for gst-launch. The pipeline should have an unconnected sink pad where " "the recorded video is recorded. It will normally have a unconnected source " "pad; output from that pad will be written into the output file. However the " "pipeline can also take care of its own output - this might be used to send " "the output to an icecast server via shout2send or similar. When unset or set " "to an empty value, the default pipeline will be used. This is currently " "'vp8enc quality=8 speed=6 threads=%T ! queue ! webmmux' and records to WEBM " "using the VP8 codec. %T is used as a placeholder for a guess at the optimal " "thread count on the system." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:14 msgid "Show date in clock" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:15 msgid "Show the week date in the calendar" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:16 msgid "Show time with seconds" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:17 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:18 msgid "" "The filename for recorded screencasts will be a unique filename based on the " "current date, and use this extension. It should be changed when recording to " "a different container format." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:19 msgid "" "The framerate of the resulting screencast recordered by GNOME Shell's " "screencast recorder in frames-per-second." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:20 msgid "The gstreamer pipeline used to encode the screencast" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:21 msgid "" "The shell normally monitors active applications in order to present the most " "used ones (e.g. in launchers). While this data will be kept private, you may " "want to disable this for privacy reasons. Please note that doing so won't " "remove already saved data." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:22 msgid "The type of keyboard to use." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:23 msgid "Uuids of extensions to enable" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:24 msgid "Whether to collect stats about applications usage" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:25 msgid "Which keyboard to use" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:26 msgid "disabled OpenSearch providers" msgstr "" #: ../js/gdm/loginDialog.js:624 msgid "Session..." msgstr "සැසිය..." #: ../js/gdm/loginDialog.js:786 msgctxt "title" msgid "Sign In" msgstr "" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger instead #: ../js/gdm/loginDialog.js:831 msgid "(or swipe finger)" msgstr "" #. translators: this message is shown below the user list on the #. login screen. It can be activated to reveal an entry for #. manually entering the username. #: ../js/gdm/loginDialog.js:852 msgid "Not listed?" msgstr "" #: ../js/gdm/loginDialog.js:1020 ../js/ui/endSessionDialog.js:419 #: ../js/ui/extensionSystem.js:516 ../js/ui/networkAgent.js:145 #: ../js/ui/polkitAuthenticationAgent.js:175 ../js/ui/status/bluetooth.js:462 msgid "Cancel" msgstr "අහෝසි කරන්න" #: ../js/gdm/loginDialog.js:1025 msgctxt "button" msgid "Sign In" msgstr "" #: ../js/gdm/loginDialog.js:1377 msgid "Login Window" msgstr "" #: ../js/gdm/powerMenu.js:113 ../js/ui/userMenu.js:581 #: ../js/ui/userMenu.js:583 ../js/ui/userMenu.js:652 msgid "Suspend" msgstr "" #: ../js/gdm/powerMenu.js:118 msgid "Restart" msgstr "යළි අරඹන්න" #: ../js/gdm/powerMenu.js:123 msgid "Power Off" msgstr "වසා දමන්න" #: ../js/misc/util.js:92 msgid "Command not found" msgstr "" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: ../js/misc/util.js:119 msgid "Could not parse command:" msgstr "" #: ../js/misc/util.js:127 #, c-format msgid "Execution of '%s' failed:" msgstr "" #. Translators: Filter to display all applications #: ../js/ui/appDisplay.js:251 msgid "All" msgstr "සියල්ල" #: ../js/ui/appDisplay.js:310 msgid "APPLICATIONS" msgstr "යෙදුම්" #: ../js/ui/appDisplay.js:366 msgid "SETTINGS" msgstr "සැකසුම්" #: ../js/ui/appDisplay.js:666 msgid "New Window" msgstr "නව කවුළුව" #: ../js/ui/appDisplay.js:669 msgid "Remove from Favorites" msgstr "" #: ../js/ui/appDisplay.js:670 msgid "Add to Favorites" msgstr "" #: ../js/ui/appFavorites.js:87 #, c-format msgid "%s has been added to your favorites." msgstr "" #: ../js/ui/appFavorites.js:118 #, c-format msgid "%s has been removed from your favorites." msgstr "" #: ../js/ui/autorunManager.js:265 msgid "Removable Devices" msgstr "ඉවත් කළ හැකි මෙවලම්" #: ../js/ui/autorunManager.js:560 #, c-format msgid "Open with %s" msgstr "%s සමඟ විවෘත කරන්න" #: ../js/ui/autorunManager.js:586 msgid "Eject" msgstr "ඉවත් කරන්න" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: ../js/ui/calendar.js:62 msgctxt "event list time" msgid "All Day" msgstr "දවස පුරා" #. Translators: Shown in calendar event list, if 24h format #: ../js/ui/calendar.js:67 msgctxt "event list time" msgid "%H:%M" msgstr "%H:%M" #. Transators: Shown in calendar event list, if 12h format #: ../js/ui/calendar.js:74 msgctxt "event list time" msgid "%l:%M %p" msgstr "%l:%M %p" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: ../js/ui/calendar.js:114 msgctxt "grid sunday" msgid "S" msgstr "ඉ" #. Translators: Calendar grid abbreviation for Monday #: ../js/ui/calendar.js:116 msgctxt "grid monday" msgid "M" msgstr "ස" #. Translators: Calendar grid abbreviation for Tuesday #: ../js/ui/calendar.js:118 msgctxt "grid tuesday" msgid "T" msgstr "අ" #. Translators: Calendar grid abbreviation for Wednesday #: ../js/ui/calendar.js:120 msgctxt "grid wednesday" msgid "W" msgstr "බ" #. Translators: Calendar grid abbreviation for Thursday #: ../js/ui/calendar.js:122 msgctxt "grid thursday" msgid "T" msgstr "බ්‍ර" #. Translators: Calendar grid abbreviation for Friday #: ../js/ui/calendar.js:124 msgctxt "grid friday" msgid "F" msgstr "සි" #. Translators: Calendar grid abbreviation for Saturday #: ../js/ui/calendar.js:126 msgctxt "grid saturday" msgid "S" msgstr "සෙ" #. Translators: Event list abbreviation for Sunday. #. * #. * NOTE: These list abbreviations are normally not shown together #. * so they need to be unique (e.g. Tuesday and Thursday cannot #. * both be 'T'). #. #: ../js/ui/calendar.js:139 msgctxt "list sunday" msgid "Su" msgstr "ඉ" #. Translators: Event list abbreviation for Monday #: ../js/ui/calendar.js:141 msgctxt "list monday" msgid "M" msgstr "ස" #. Translators: Event list abbreviation for Tuesday #: ../js/ui/calendar.js:143 msgctxt "list tuesday" msgid "T" msgstr "අ" #. Translators: Event list abbreviation for Wednesday #: ../js/ui/calendar.js:145 msgctxt "list wednesday" msgid "W" msgstr "බ" #. Translators: Event list abbreviation for Thursday #: ../js/ui/calendar.js:147 msgctxt "list thursday" msgid "Th" msgstr "බ්‍ර" #. Translators: Event list abbreviation for Friday #: ../js/ui/calendar.js:149 msgctxt "list friday" msgid "F" msgstr "සි" #. Translators: Event list abbreviation for Saturday #: ../js/ui/calendar.js:151 msgctxt "list saturday" msgid "S" msgstr "සෙ" #. Translators: Text to show if there are no events #: ../js/ui/calendar.js:681 msgid "Nothing Scheduled" msgstr "කිසිවක් සැළමුක් කර නැත" #. Translators: Shown on calendar heading when selected day occurs on current year #: ../js/ui/calendar.js:697 msgctxt "calendar heading" msgid "%A, %B %d" msgstr "%A, %B %d" #. Translators: Shown on calendar heading when selected day occurs on different year #: ../js/ui/calendar.js:700 msgctxt "calendar heading" msgid "%A, %B %d, %Y" msgstr "%A, %B %d, %Y" #: ../js/ui/calendar.js:710 msgid "Today" msgstr "අද" #: ../js/ui/calendar.js:714 msgid "Tomorrow" msgstr "හෙට" #: ../js/ui/calendar.js:723 msgid "This week" msgstr "මේ සතියෙ" #: ../js/ui/calendar.js:731 msgid "Next week" msgstr "ලබන සතියෙ" #: ../js/ui/contactDisplay.js:63 ../js/ui/notificationDaemon.js:486 #: ../js/ui/status/power.js:215 ../src/shell-app.c:372 msgid "Unknown" msgstr "නොදන්නා" #: ../js/ui/contactDisplay.js:84 ../js/ui/userMenu.js:127 msgid "Available" msgstr "සිටි" #: ../js/ui/contactDisplay.js:89 ../js/ui/userMenu.js:136 msgid "Away" msgstr "පිටතට ගොස්" #: ../js/ui/contactDisplay.js:93 ../js/ui/userMenu.js:130 msgid "Busy" msgstr "කාර්‍යය බහුලයි" #: ../js/ui/contactDisplay.js:97 msgid "Offline" msgstr "නොබැඳිව" #: ../js/ui/contactDisplay.js:148 msgid "CONTACTS" msgstr "සබධතා" #: ../js/ui/dash.js:229 ../js/ui/messageTray.js:1204 msgid "Remove" msgstr "ඉවත් කරන්න" #: ../js/ui/dateMenu.js:97 msgid "Date and Time Settings" msgstr "දින සහ වේලා සැකසුම්" #: ../js/ui/dateMenu.js:123 msgid "Open Calendar" msgstr "දිනදර්ශනය විවෘත කරන්න" #. Translators: This is the time format with date used #. in 24-hour mode. #: ../js/ui/dateMenu.js:181 msgid "%a %b %e, %R:%S" msgstr "%a %b %e, %R:%S" #: ../js/ui/dateMenu.js:182 msgid "%a %b %e, %R" msgstr "%a %b %e, %R" #. Translators: This is the time format without date used #. in 24-hour mode. #: ../js/ui/dateMenu.js:186 msgid "%a %R:%S" msgstr "%a %R:%S" #: ../js/ui/dateMenu.js:187 msgid "%a %R" msgstr "%a %R" #. Translators: This is a time format with date used #. for AM/PM. #: ../js/ui/dateMenu.js:194 msgid "%a %b %e, %l:%M:%S %p" msgstr "%a %b %e, %l:%M:%S %p" #: ../js/ui/dateMenu.js:195 msgid "%a %b %e, %l:%M %p" msgstr "%a %b %e, %l:%M %p" #. Translators: This is a time format without date used #. for AM/PM. #: ../js/ui/dateMenu.js:199 msgid "%a %l:%M:%S %p" msgstr "%a %l:%M:%S %p" #: ../js/ui/dateMenu.js:200 msgid "%a %l:%M %p" msgstr "%a %l:%M %p" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM"). #. #: ../js/ui/dateMenu.js:211 msgid "%A %B %e, %Y" msgstr "%A %B %e, %Y" #: ../js/ui/docDisplay.js:13 msgid "RECENT ITEMS" msgstr "මැතකදි භාවිත කළ අයිතම" #: ../js/ui/endSessionDialog.js:61 #, c-format msgctxt "title" msgid "Log Out %s" msgstr "ඉවත් වන්න %s" #: ../js/ui/endSessionDialog.js:62 msgctxt "title" msgid "Log Out" msgstr "පිටවීම" #: ../js/ui/endSessionDialog.js:63 msgid "Click Log Out to quit these applications and log out of the system." msgstr "" #: ../js/ui/endSessionDialog.js:65 #, c-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "" msgstr[1] "" #: ../js/ui/endSessionDialog.js:70 #, c-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "" msgstr[1] "" #: ../js/ui/endSessionDialog.js:74 msgid "Logging out of the system." msgstr "" #: ../js/ui/endSessionDialog.js:76 msgctxt "button" msgid "Log Out" msgstr "ඉවත්වන්න" #: ../js/ui/endSessionDialog.js:81 msgctxt "title" msgid "Power Off" msgstr "වසාදමන්න" #: ../js/ui/endSessionDialog.js:82 msgid "Click Power Off to quit these applications and power off the system." msgstr "" #: ../js/ui/endSessionDialog.js:84 #, c-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "" msgstr[1] "" #: ../js/ui/endSessionDialog.js:88 msgid "Powering off the system." msgstr "පද්ධතිය වසමින්" #: ../js/ui/endSessionDialog.js:90 ../js/ui/endSessionDialog.js:107 msgctxt "button" msgid "Restart" msgstr "යළි අරඹන්න" #: ../js/ui/endSessionDialog.js:92 msgctxt "button" msgid "Power Off" msgstr "වසන්න" #: ../js/ui/endSessionDialog.js:98 msgctxt "title" msgid "Restart" msgstr "යළි අරඹන්න" #: ../js/ui/endSessionDialog.js:99 msgid "Click Restart to quit these applications and restart the system." msgstr "" #: ../js/ui/endSessionDialog.js:101 #, c-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "" msgstr[1] "" #: ../js/ui/endSessionDialog.js:105 msgid "Restarting the system." msgstr "පද්ධතිය යළි අරඹන්න" #: ../js/ui/extensionSystem.js:520 msgid "Install" msgstr "ස්ථාපනය" #: ../js/ui/extensionSystem.js:524 #, c-format msgid "Download and install '%s' from extensions.gnome.org?" msgstr "" #: ../js/ui/keyboard.js:322 msgid "tray" msgstr "තැටිය" #: ../js/ui/keyboard.js:539 ../js/ui/status/power.js:203 msgid "Keyboard" msgstr "යතුරුපුවරුව" #: ../js/ui/lookingGlass.js:724 msgid "No extensions installed" msgstr "" #. Translators: argument is an extension UUID. #: ../js/ui/lookingGlass.js:779 #, c-format msgid "%s has not emitted any errors." msgstr "" #: ../js/ui/lookingGlass.js:785 msgid "Hide Errors" msgstr "දෝෂ සඟවන්න" #: ../js/ui/lookingGlass.js:789 ../js/ui/lookingGlass.js:840 msgid "Show Errors" msgstr "දෝෂ පෙන්වන්න" #: ../js/ui/lookingGlass.js:798 msgid "Enabled" msgstr "සක්‍රීයයි" #. translators: #. * The device has been disabled #: ../js/ui/lookingGlass.js:801 ../src/gvc/gvc-mixer-control.c:1093 msgid "Disabled" msgstr "අක්‍රීයයි" #: ../js/ui/lookingGlass.js:803 msgid "Error" msgstr "දෝෂය" #: ../js/ui/lookingGlass.js:805 msgid "Out of date" msgstr "කල් ඉකුත් වූ" #: ../js/ui/lookingGlass.js:807 msgid "Downloading" msgstr "බාගනිමින්" #: ../js/ui/lookingGlass.js:828 msgid "View Source" msgstr "මූලය පෙන්වන්න" #: ../js/ui/lookingGlass.js:834 msgid "Web Page" msgstr "වෙබ් පිටුව" #: ../js/ui/messageTray.js:1197 msgid "Open" msgstr "විවෘත කරන්න" #: ../js/ui/messageTray.js:1214 msgid "Unmute" msgstr "නිහඬ නොකරන්න" #: ../js/ui/messageTray.js:1214 msgid "Mute" msgstr "නිහඬ" #: ../js/ui/messageTray.js:2446 msgid "System Information" msgstr "පද්ධති තොරතුරු" #: ../js/ui/networkAgent.js:140 msgid "Connect" msgstr "සම්බන්ධවන්න" #. Cisco LEAP #: ../js/ui/networkAgent.js:235 ../js/ui/networkAgent.js:247 #: ../js/ui/networkAgent.js:274 ../js/ui/networkAgent.js:294 #: ../js/ui/networkAgent.js:304 msgid "Password: " msgstr "මුරපදය: " #. static WEP #: ../js/ui/networkAgent.js:240 msgid "Key: " msgstr "යතුර: " #. TTLS and PEAP are actually much more complicated, but this complication #. is not visible here since we only care about phase2 authentication #. (and don't even care of which one) #: ../js/ui/networkAgent.js:272 ../js/ui/networkAgent.js:290 msgid "Username: " msgstr "පරිශීලක නාමය: " #: ../js/ui/networkAgent.js:278 msgid "Identity: " msgstr "" #: ../js/ui/networkAgent.js:280 msgid "Private key password: " msgstr "පුද්ගලික මුරපදය:" #: ../js/ui/networkAgent.js:292 msgid "Service: " msgstr "සේවාව:" #: ../js/ui/networkAgent.js:321 msgid "Authentication required by wireless network" msgstr "" #: ../js/ui/networkAgent.js:322 #, c-format msgid "" "Passwords or encryption keys are required to access the wireless network '%" "s'." msgstr "" #: ../js/ui/networkAgent.js:326 msgid "Wired 802.1X authentication" msgstr "" #: ../js/ui/networkAgent.js:328 msgid "Network name: " msgstr "ජාල නාමය:" #: ../js/ui/networkAgent.js:333 msgid "DSL authentication" msgstr "" #: ../js/ui/networkAgent.js:340 msgid "PIN code required" msgstr "" #: ../js/ui/networkAgent.js:341 msgid "PIN code is needed for the mobile broadband device" msgstr "" #: ../js/ui/networkAgent.js:342 msgid "PIN: " msgstr "PIN: " #: ../js/ui/networkAgent.js:348 msgid "Mobile broadband network password" msgstr "" #: ../js/ui/networkAgent.js:349 #, c-format msgid "A password is required to connect to '%s'." msgstr "" #: ../js/ui/overview.js:90 msgid "Undo" msgstr "" #: ../js/ui/overview.js:199 msgid "Windows" msgstr "කවුළු" #: ../js/ui/overview.js:202 msgid "Applications" msgstr "යෙදුම්" #. Translators: this is the name of the dock/favorites area on #. the left of the overview #: ../js/ui/overview.js:226 msgid "Dash" msgstr "ඩැෂ්" #: ../js/ui/panel.js:572 msgid "Quit" msgstr "ඉවත්වීම" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: ../js/ui/panel.js:603 msgid "Activities" msgstr "ක්‍රියාකාරකම්" #: ../js/ui/panel.js:990 msgid "Top Bar" msgstr "ඉහළ තීරුව" #: ../js/ui/placeDisplay.js:115 #, c-format msgid "Failed to unmount '%s'" msgstr "" #: ../js/ui/placeDisplay.js:118 msgid "Retry" msgstr "යළි-උත්සාහය" #: ../js/ui/placeDisplay.js:156 msgid "Connect to..." msgstr "" #: ../js/ui/placeDisplay.js:367 msgid "PLACES & DEVICES" msgstr "" #: ../js/ui/polkitAuthenticationAgent.js:71 msgid "Authentication Required" msgstr "" #: ../js/ui/polkitAuthenticationAgent.js:109 msgid "Administrator" msgstr "පරිපාලක" #: ../js/ui/polkitAuthenticationAgent.js:179 msgid "Authenticate" msgstr "" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: ../js/ui/polkitAuthenticationAgent.js:260 msgid "Sorry, that didn't work. Please try again." msgstr "" #: ../js/ui/polkitAuthenticationAgent.js:272 msgid "Password:" msgstr "මුරපදය:" #. Translators: this MUST be either "toggle-switch-us" #. (for toggle switches containing the English words #. "ON" and "OFF") or "toggle-switch-intl" (for toggle #. switches containing "◯" and "|"). Other values will #. simply result in invisible toggle switches. #: ../js/ui/popupMenu.js:720 msgid "toggle-switch-us" msgstr "" #: ../js/ui/runDialog.js:205 msgid "Please enter a command:" msgstr "" #: ../js/ui/searchDisplay.js:333 msgid "Searching..." msgstr "සොයමින්..." #: ../js/ui/searchDisplay.js:356 msgid "No matching results." msgstr "" #: ../js/ui/shellEntry.js:26 msgid "Copy" msgstr "පිටපත් කරන්න" #: ../js/ui/shellEntry.js:31 msgid "Paste" msgstr "අලවන්න" #: ../js/ui/shellEntry.js:77 msgid "Show Text" msgstr "පෙළ පෙන්වන්න" #: ../js/ui/shellEntry.js:79 msgid "Hide Text" msgstr "පෙළ සඟවන්න" #: ../js/ui/shellMountOperation.js:271 msgid "Wrong password, please try again" msgstr "" #: ../js/ui/status/accessibility.js:47 msgid "Accessibility" msgstr "" #: ../js/ui/status/accessibility.js:52 msgid "Zoom" msgstr "විශාලණය" #. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA, #. 'screen-reader-enabled'); #. this.menu.addMenuItem(screenReader); #: ../js/ui/status/accessibility.js:63 msgid "Screen Keyboard" msgstr "" #: ../js/ui/status/accessibility.js:67 msgid "Visual Alerts" msgstr "" #: ../js/ui/status/accessibility.js:70 msgid "Sticky Keys" msgstr "" #: ../js/ui/status/accessibility.js:73 msgid "Slow Keys" msgstr "" #: ../js/ui/status/accessibility.js:76 msgid "Bounce Keys" msgstr "" #: ../js/ui/status/accessibility.js:79 msgid "Mouse Keys" msgstr "" #: ../js/ui/status/accessibility.js:83 msgid "Universal Access Settings" msgstr "" #: ../js/ui/status/accessibility.js:117 msgid "High Contrast" msgstr "" #: ../js/ui/status/accessibility.js:154 msgid "Large Text" msgstr "" #: ../js/ui/status/bluetooth.js:31 ../js/ui/status/bluetooth.js:35 #: ../js/ui/status/bluetooth.js:258 ../js/ui/status/bluetooth.js:341 #: ../js/ui/status/bluetooth.js:371 ../js/ui/status/bluetooth.js:407 #: ../js/ui/status/bluetooth.js:436 ../js/ui/status/network.js:893 msgid "Bluetooth" msgstr "බ්ලුටූත්" #: ../js/ui/status/bluetooth.js:48 msgid "Visibility" msgstr "" #: ../js/ui/status/bluetooth.js:62 msgid "Send Files to Device..." msgstr "" #: ../js/ui/status/bluetooth.js:63 msgid "Set up a New Device..." msgstr "" #: ../js/ui/status/bluetooth.js:87 msgid "Bluetooth Settings" msgstr "" #. TRANSLATORS: this means that bluetooth was disabled by hardware rfkill #: ../js/ui/status/bluetooth.js:107 ../js/ui/status/network.js:256 msgid "hardware disabled" msgstr "" #: ../js/ui/status/bluetooth.js:203 msgid "Connection" msgstr "" #: ../js/ui/status/bluetooth.js:214 ../js/ui/status/network.js:491 msgid "disconnecting..." msgstr "" #: ../js/ui/status/bluetooth.js:227 ../js/ui/status/network.js:497 msgid "connecting..." msgstr "" #: ../js/ui/status/bluetooth.js:245 msgid "Send Files..." msgstr "ගොනු යවන්න..." #: ../js/ui/status/bluetooth.js:250 msgid "Browse Files..." msgstr "ගොනු ගවේෂණය" #: ../js/ui/status/bluetooth.js:259 msgid "Error browsing device" msgstr "" #: ../js/ui/status/bluetooth.js:260 #, c-format msgid "The requested device cannot be browsed, error is '%s'" msgstr "" #: ../js/ui/status/bluetooth.js:268 msgid "Keyboard Settings" msgstr "" #: ../js/ui/status/bluetooth.js:271 msgid "Mouse Settings" msgstr "" #: ../js/ui/status/bluetooth.js:276 ../js/ui/status/volume.js:58 msgid "Sound Settings" msgstr "" #: ../js/ui/status/bluetooth.js:372 #, c-format msgid "Authorization request from %s" msgstr "" #: ../js/ui/status/bluetooth.js:378 #, c-format msgid "Device %s wants access to the service '%s'" msgstr "" #: ../js/ui/status/bluetooth.js:380 msgid "Always grant access" msgstr "" #: ../js/ui/status/bluetooth.js:381 msgid "Grant this time only" msgstr "" #: ../js/ui/status/bluetooth.js:382 ../js/ui/telepathyClient.js:1098 msgid "Reject" msgstr "" #: ../js/ui/status/bluetooth.js:408 #, c-format msgid "Pairing confirmation for %s" msgstr "" #: ../js/ui/status/bluetooth.js:414 ../js/ui/status/bluetooth.js:444 #, c-format msgid "Device %s wants to pair with this computer" msgstr "" #: ../js/ui/status/bluetooth.js:415 #, c-format msgid "Please confirm whether the PIN '%s' matches the one on the device." msgstr "" #: ../js/ui/status/bluetooth.js:417 msgid "Matches" msgstr "ගැළපීම්" #: ../js/ui/status/bluetooth.js:418 msgid "Does not match" msgstr "" #: ../js/ui/status/bluetooth.js:437 #, c-format msgid "Pairing request for %s" msgstr "" #: ../js/ui/status/bluetooth.js:445 msgid "Please enter the PIN mentioned on the device." msgstr "" #: ../js/ui/status/bluetooth.js:461 msgid "OK" msgstr "හරි" #: ../js/ui/status/keyboard.js:68 msgid "Show Keyboard Layout" msgstr "" #: ../js/ui/status/keyboard.js:73 msgid "Region and Language Settings" msgstr "" #: ../js/ui/status/network.js:96 msgid "" msgstr "<නොදන්නා>" #. Translators: this indicates that wireless or wwan is disabled by hardware killswitch #: ../js/ui/status/network.js:278 msgid "disabled" msgstr "අක්‍රීයයි" #. Translators: this is for network devices that are physically present but are not #. under NetworkManager's control (and thus cannot be used in the menu) #: ../js/ui/status/network.js:489 msgid "unmanaged" msgstr "" #. Translators: this is for network connections that require some kind of key or password #: ../js/ui/status/network.js:500 msgid "authentication required" msgstr "" #. Translators: this is for devices that require some kind of firmware or kernel #. module, which is missing #: ../js/ui/status/network.js:510 msgid "firmware missing" msgstr "" #. Translators: this is for wired network devices that are physically disconnected #: ../js/ui/status/network.js:517 msgid "cable unplugged" msgstr "කේබලය ගැලවී ඇත" #. Translators: this is for a network device that cannot be activated (for example it #. is disabled by rfkill, or it has no coverage #: ../js/ui/status/network.js:522 msgid "unavailable" msgstr "භාවිතයට නැත" #: ../js/ui/status/network.js:524 msgid "connection failed" msgstr "" #: ../js/ui/status/network.js:585 ../js/ui/status/network.js:1505 msgid "More..." msgstr "තවත්..." #. TRANSLATORS: this is the indication that a connection for another logged in user is active, #. and we cannot access its settings (including the name) #: ../js/ui/status/network.js:621 ../js/ui/status/network.js:1440 msgid "Connected (private)" msgstr "" #: ../js/ui/status/network.js:696 msgid "Auto Ethernet" msgstr "ස්වයංක්‍රීය ඉදර්නෙට්" #: ../js/ui/status/network.js:757 msgid "Auto broadband" msgstr "ස්වයංක්‍රීය අඳිවේගිජාලය" #: ../js/ui/status/network.js:760 msgid "Auto dial-up" msgstr "ස්වයංක්‍රීය ඩයල්-අප්" #. TRANSLATORS: this the automatic wireless connection name (including the network name) #: ../js/ui/status/network.js:879 ../js/ui/status/network.js:1452 #, c-format msgid "Auto %s" msgstr "ස්වයංක්‍රීය %s" #: ../js/ui/status/network.js:881 msgid "Auto bluetooth" msgstr "ස්වයංක්‍රීය බ්ලුටූත්" #: ../js/ui/status/network.js:1454 msgid "Auto wireless" msgstr "ස්වයංක්‍රීය රැහැන් රහිත" #: ../js/ui/status/network.js:1541 msgid "Network" msgstr "ජාලය" #: ../js/ui/status/network.js:1548 msgid "Enable networking" msgstr "ජාලය සක්‍රීය කරන්න" #: ../js/ui/status/network.js:1560 msgid "Wired" msgstr "රැහැන් සහිත" #: ../js/ui/status/network.js:1571 msgid "Wireless" msgstr "රැහැන් රහිත" #: ../js/ui/status/network.js:1581 msgid "Mobile broadband" msgstr "" #: ../js/ui/status/network.js:1591 msgid "VPN Connections" msgstr "VPN Connections" #: ../js/ui/status/network.js:1602 msgid "Network Settings" msgstr "ජාල සැකසුම්" #: ../js/ui/status/network.js:1739 msgid "Connection failed" msgstr "" #: ../js/ui/status/network.js:1740 msgid "Activation of network connection failed" msgstr "" #: ../js/ui/status/network.js:1993 msgid "Networking is disabled" msgstr "ජාලය අක්‍රීයයි" #: ../js/ui/status/network.js:2117 msgid "Network Manager" msgstr "ජාල කළමණාකරු" #: ../js/ui/status/power.js:59 msgid "Battery" msgstr "බැටරිය" #: ../js/ui/status/power.js:76 msgid "Power Settings" msgstr "බැටරි සැකසුම්" #. 0 is reported when UPower does not have enough data #. to estimate battery life #: ../js/ui/status/power.js:98 msgid "Estimating..." msgstr "ගණනය කරමින්..." #: ../js/ui/status/power.js:105 #, c-format msgid "%d hour remaining" msgid_plural "%d hours remaining" msgstr[0] "පැය %d ක් ඉතිරියි" msgstr[1] "පැය %d ක් ඉතිරියි" #. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining" #: ../js/ui/status/power.js:108 #, c-format msgid "%d %s %d %s remaining" msgstr "%d %s %d %s ක් ඉතිරිව ඇත" #: ../js/ui/status/power.js:110 msgid "hour" msgid_plural "hours" msgstr[0] "පැයක්" msgstr[1] "පැය" #: ../js/ui/status/power.js:110 msgid "minute" msgid_plural "minutes" msgstr[0] "මිනිත්තුව" msgstr[1] "මිනිත්තු" #: ../js/ui/status/power.js:113 #, c-format msgid "%d minute remaining" msgid_plural "%d minutes remaining" msgstr[0] "මිනිත්තු %d ක් ඉතිරියි" msgstr[1] "මිනිත්තු %d ක් ඉතිරියි" #: ../js/ui/status/power.js:116 ../js/ui/status/power.js:186 #, c-format msgctxt "percent of battery remaining" msgid "%d%%" msgstr "%d%%" #: ../js/ui/status/power.js:193 msgid "AC adapter" msgstr "AC ඇප්ටරය" #: ../js/ui/status/power.js:195 msgid "Laptop battery" msgstr "ලැප්ටොප් බැටරිය" #: ../js/ui/status/power.js:197 msgid "UPS" msgstr "UPS" #: ../js/ui/status/power.js:199 msgid "Monitor" msgstr "මොනිටරය" #: ../js/ui/status/power.js:201 msgid "Mouse" msgstr "මවුසය" #: ../js/ui/status/power.js:205 msgid "PDA" msgstr "PDA" #: ../js/ui/status/power.js:207 msgid "Cell phone" msgstr "" #: ../js/ui/status/power.js:209 msgid "Media player" msgstr "" #: ../js/ui/status/power.js:211 msgid "Tablet" msgstr "" #: ../js/ui/status/power.js:213 msgid "Computer" msgstr "" #: ../js/ui/status/volume.js:25 ../js/ui/status/volume.js:38 msgid "Volume" msgstr "හඬ" #: ../js/ui/status/volume.js:50 msgid "Microphone" msgstr "" #. FIXME: We don't have a 'chat room' icon (bgo #653737) use #. system-users for now as Empathy does. #: ../js/ui/telepathyClient.js:225 msgid "Invitation" msgstr "" #. We got the TpContact #: ../js/ui/telepathyClient.js:278 msgid "Call" msgstr "" #. We got the TpContact #: ../js/ui/telepathyClient.js:294 msgid "File Transfer" msgstr "" #: ../js/ui/telepathyClient.js:376 msgid "Subscription request" msgstr "" #: ../js/ui/telepathyClient.js:412 msgid "Connection error" msgstr "" #: ../js/ui/telepathyClient.js:670 #, c-format msgid "%s is online." msgstr "" #: ../js/ui/telepathyClient.js:674 #, c-format msgid "%s is offline." msgstr "" #: ../js/ui/telepathyClient.js:678 #, c-format msgid "%s is away." msgstr "" #: ../js/ui/telepathyClient.js:681 #, c-format msgid "%s is busy." msgstr "" #. Translators: this is a time format string followed by a date. #. If applicable, replace %X with a strftime format valid for your #. locale, without seconds. #: ../js/ui/telepathyClient.js:894 #, no-c-format msgid "Sent at %X on %A" msgstr "" #. Translators: this is a time format in the style of "Wednesday, May 25", #. shown when you get a chat message in the same year. #: ../js/ui/telepathyClient.js:900 #, no-c-format msgid "Sent on %A, %B %d" msgstr "" #. Translators: this is a time format in the style of "Wednesday, May 25, 2012", #. shown when you get a chat message in a different year. #: ../js/ui/telepathyClient.js:905 #, no-c-format msgid "Sent on %A, %B %d, %Y" msgstr "" #. Translators: this is the other person changing their old IM name to their new #. IM name. #: ../js/ui/telepathyClient.js:947 #, c-format msgid "%s is now known as %s" msgstr "" #. translators: argument is a room name like #. * room@jabber.org for example. #: ../js/ui/telepathyClient.js:1049 #, c-format msgid "Invitation to %s" msgstr "" #. translators: first argument is the name of a contact and the second #. * one the name of a room. "Alice is inviting you to join room@jabber.org #. * for example. #: ../js/ui/telepathyClient.js:1057 #, c-format msgid "%s is inviting you to join %s" msgstr "" #: ../js/ui/telepathyClient.js:1059 ../js/ui/telepathyClient.js:1138 #: ../js/ui/telepathyClient.js:1236 msgid "Decline" msgstr "" #: ../js/ui/telepathyClient.js:1060 ../js/ui/telepathyClient.js:1139 #: ../js/ui/telepathyClient.js:1237 msgid "Accept" msgstr "" #. translators: argument is a contact name like Alice for example. #: ../js/ui/telepathyClient.js:1090 #, c-format msgid "Video call from %s" msgstr "" #. translators: argument is a contact name like Alice for example. #: ../js/ui/telepathyClient.js:1093 #, c-format msgid "Call from %s" msgstr "" #. translators: this is a button label (verb), not a noun #: ../js/ui/telepathyClient.js:1100 msgid "Answer" msgstr "" #. To translators: The first parameter is #. * the contact's alias and the second one is the #. * file name. The string will be something #. * like: "Alice is sending you test.ogg" #. #: ../js/ui/telepathyClient.js:1132 #, c-format msgid "%s is sending you %s" msgstr "" #. To translators: The parameter is the contact's alias #: ../js/ui/telepathyClient.js:1201 #, c-format msgid "%s would like permission to see when you are online" msgstr "" #: ../js/ui/telepathyClient.js:1294 msgid "Network error" msgstr "" #: ../js/ui/telepathyClient.js:1296 msgid "Authentication failed" msgstr "" #: ../js/ui/telepathyClient.js:1298 msgid "Encryption error" msgstr "" #: ../js/ui/telepathyClient.js:1300 msgid "Certificate not provided" msgstr "" #: ../js/ui/telepathyClient.js:1302 msgid "Certificate untrusted" msgstr "" #: ../js/ui/telepathyClient.js:1304 msgid "Certificate expired" msgstr "" #: ../js/ui/telepathyClient.js:1306 msgid "Certificate not activated" msgstr "" #: ../js/ui/telepathyClient.js:1308 msgid "Certificate hostname mismatch" msgstr "" #: ../js/ui/telepathyClient.js:1310 msgid "Certificate fingerprint mismatch" msgstr "" #: ../js/ui/telepathyClient.js:1312 msgid "Certificate self-signed" msgstr "" #: ../js/ui/telepathyClient.js:1314 msgid "Status is set to offline" msgstr "" #: ../js/ui/telepathyClient.js:1316 msgid "Encryption is not available" msgstr "" #: ../js/ui/telepathyClient.js:1318 msgid "Certificate is invalid" msgstr "" #: ../js/ui/telepathyClient.js:1320 msgid "Connection has been refused" msgstr "" #: ../js/ui/telepathyClient.js:1322 msgid "Connection can't be established" msgstr "" #: ../js/ui/telepathyClient.js:1324 msgid "Connection has been lost" msgstr "" #: ../js/ui/telepathyClient.js:1326 msgid "This resource is already connected to the server" msgstr "" #: ../js/ui/telepathyClient.js:1328 msgid "" "Connection has been replaced by a new connection using the same resource" msgstr "" #: ../js/ui/telepathyClient.js:1330 msgid "The account already exists on the server" msgstr "" #: ../js/ui/telepathyClient.js:1332 msgid "Server is currently too busy to handle the connection" msgstr "" #: ../js/ui/telepathyClient.js:1334 msgid "Certificate has been revoked" msgstr "" #: ../js/ui/telepathyClient.js:1336 msgid "" "Certificate uses an insecure cipher algorithm or is cryptographically weak" msgstr "" #: ../js/ui/telepathyClient.js:1338 msgid "" "The length of the server certificate, or the depth of the server certificate " "chain, exceed the limits imposed by the cryptography library" msgstr "" #. translators: argument is the account name, like #. * name@jabber.org for example. #: ../js/ui/telepathyClient.js:1348 #, c-format msgid "Connection to %s failed" msgstr "" #: ../js/ui/telepathyClient.js:1357 msgid "Reconnect" msgstr "" #: ../js/ui/telepathyClient.js:1358 msgid "Edit account" msgstr "" #: ../js/ui/telepathyClient.js:1404 msgid "Unknown reason" msgstr "" #: ../js/ui/userMenu.js:133 msgid "Hidden" msgstr "" #: ../js/ui/userMenu.js:139 msgid "Idle" msgstr "" #: ../js/ui/userMenu.js:142 msgid "Unavailable" msgstr "" #: ../js/ui/userMenu.js:579 ../js/ui/userMenu.js:583 ../js/ui/userMenu.js:653 msgid "Power Off..." msgstr "" #: ../js/ui/userMenu.js:615 msgid "Notifications" msgstr "දැණුම් දීම්" #: ../js/ui/userMenu.js:623 msgid "Online Accounts" msgstr "සබැඳි ගිණුම්" #: ../js/ui/userMenu.js:627 msgid "System Settings" msgstr "පද්ධති සැකසුම්" #: ../js/ui/userMenu.js:634 msgid "Lock Screen" msgstr "තිරය අඟුලු දමන්න" #: ../js/ui/userMenu.js:639 msgid "Switch User" msgstr "පරිශීලක සීරුමාරුව" #: ../js/ui/userMenu.js:644 msgid "Log Out..." msgstr "පිටවීම..." #: ../js/ui/userMenu.js:672 msgid "Your chat status will be set to busy" msgstr "" #: ../js/ui/userMenu.js:673 msgid "" "Notifications are now disabled, including chat messages. Your online status " "has been adjusted to let others know that you might not see their messages." msgstr "" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: ../js/ui/viewSelector.js:113 msgid "Type to search..." msgstr "" #: ../js/ui/viewSelector.js:131 ../src/shell-util.c:244 msgid "Search" msgstr "සෙවුම" #: ../js/ui/wanda.js:124 #, c-format msgid "" "Sorry, no wisdom for you today:\n" "%s" msgstr "" #: ../js/ui/wanda.js:128 #, c-format msgid "%s the Oracle says" msgstr "" #: ../js/ui/wanda.js:168 msgid "Your favorite Easter Egg" msgstr "" #: ../js/ui/windowAttentionHandler.js:33 #, c-format msgid "'%s' is ready" msgstr "" #. translators: #. * The number of sound outputs on a particular device #: ../src/gvc/gvc-mixer-control.c:1100 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u ප්‍රථිදානය" msgstr[1] "%u ප්‍රථිදාන" #. translators: #. * The number of sound inputs on a particular device #: ../src/gvc/gvc-mixer-control.c:1110 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u ප්‍රදානය" msgstr[1] "%u ප්‍රදාන" #: ../src/gvc/gvc-mixer-control.c:1408 msgid "System Sounds" msgstr "පද්ධති හඬ" #: ../src/main.c:262 msgid "Print version" msgstr "මුද්‍රණ වෙළුම" #: ../src/main.c:268 msgid "Mode used by GDM for login screen" msgstr "" #: ../src/shell-app.c:617 #, c-format msgid "Failed to launch '%s'" msgstr "" #: ../src/shell-mobile-providers.c:80 msgid "United Kingdom" msgstr "එක්සත් රාජධානිය" #: ../src/shell-mobile-providers.c:526 msgid "Default" msgstr "පෙරනිමිය" #: ../src/shell-polkit-authentication-agent.c:332 msgid "Authentication dialog was dismissed by the user" msgstr "" #. Translators: this is the same string as the one found in #. * nautilus #: ../src/shell-util.c:89 msgid "Home" msgstr "නිවස" #. Translators: this is the same string as the one found in #. * nautilus #: ../src/shell-util.c:98 msgid "File System" msgstr "ගොනු පද්ධතිය" #. Translators: the first string is the name of a gvfs #. * method, and the second string is a path. For #. * example, "Trash: some-directory". It means that the #. * directory called "some-directory" is in the trash. #. #: ../src/shell-util.c:294 #, c-format msgid "%1$s: %2$s" msgstr "%1$s: %2$s" 0707010000025F000081A40000000000000000000000016712993F0001F077000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/sk.po# Slovak translation for gnome-shell. # Copyright (C) 2011-2013 Free Software Foundation, Inc. # This file is distributed under the same license as the gnome-shell package. # # Peter Mráz , 2011. # Michal Štrba , 2011. # Andrej Shadura , 2019. # Matej Mrenica , 2021. # Dušan Kazik , 2012-2022. # msgid "" msgstr "" "Project-Id-Version: gnome-shell\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues/\n" "POT-Creation-Date: 2024-08-21 13:15+0000\n" "PO-Revision-Date: 2024-08-24 12:11+0200\n" "Last-Translator: Jose Riha\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) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n" "X-Generator: Poedit 3.4.1\n" "X-DamnedLies-Scope: partial\n" "X-Project-Style: gnome\n" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "Spúšťače" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate pinned app 1" msgstr "Aktivovať pripnutú aplikáciu č. 1" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate pinned app 2" msgstr "Aktivovať pripnutú aplikáciu č. 2" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate pinned app 3" msgstr "Aktivovať pripnutú aplikáciu č. 3" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate pinned app 4" msgstr "Aktivovať pripnutú aplikáciu č. 4" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate pinned app 5" msgstr "Aktivovať pripnutú aplikáciu č. 5" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate pinned app 6" msgstr "Aktivovať pripnutú aplikáciu č. 6" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate pinned app 7" msgstr "Aktivovať pripnutú aplikáciu č. 7" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate pinned app 8" msgstr "Aktivovať pripnutú aplikáciu č. 8" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate pinned app 9" msgstr "Aktivovať pripnutú aplikáciu č. 9" #: data/50-gnome-shell-launchers.xml:46 msgid "Open new window of pinned app 1" msgstr "Otvoriť nové okno pripnutej aplikácie č. 1" #: data/50-gnome-shell-launchers.xml:50 msgid "Open new window of pinned app 2" msgstr "Otvoriť nové okno pripnutej aplikácie č. 2" #: data/50-gnome-shell-launchers.xml:54 msgid "Open new window of pinned app 3" msgstr "Otvoriť nové okno pripnutej aplikácie č. 3" #: data/50-gnome-shell-launchers.xml:58 msgid "Open new window of pinned app 4" msgstr "Otvoriť nové okno pripnutej aplikácie č. 4" #: data/50-gnome-shell-launchers.xml:62 msgid "Open new window of pinned app 5" msgstr "Otvoriť nové okno pripnutej aplikácie č. 5" #: data/50-gnome-shell-launchers.xml:66 msgid "Open new window of pinned app 6" msgstr "Otvoriť nové okno pripnutej aplikácie č. 6" #: data/50-gnome-shell-launchers.xml:70 msgid "Open new window of pinned app 7" msgstr "Otvoriť nové okno pripnutej aplikácie č. 7" #: data/50-gnome-shell-launchers.xml:74 msgid "Open new window of pinned app 8" msgstr "Otvoriť nové okno pripnutej aplikácie č. 8" #: data/50-gnome-shell-launchers.xml:78 msgid "Open new window of pinned app 9" msgstr "Otvoriť nové okno pripnutej aplikácie č. 9" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2274 msgid "Screenshots" msgstr "Snímky obrazovky" #: data/50-gnome-shell-screenshots.xml:9 #: data/org.gnome.shell.gschema.xml.in:287 msgid "Take a screenshot interactively" msgstr "Interaktívne zachytávanie snímkov obrazovky" #: data/50-gnome-shell-screenshots.xml:12 #: data/org.gnome.shell.gschema.xml.in:299 msgid "Take a screenshot" msgstr "Zachytenie snímky obrazovky" #: data/50-gnome-shell-screenshots.xml:15 #: data/org.gnome.shell.gschema.xml.in:295 msgid "Take a screenshot of a window" msgstr "Zachytenie snímky obrazovky okna" #: data/50-gnome-shell-screenshots.xml:18 #: data/org.gnome.shell.gschema.xml.in:291 msgid "Record a screencast interactively" msgstr "Interaktívny záznam obrazovky" #: data/50-gnome-shell-system.xml:6 js/ui/messageTray.js:1298 msgid "System" msgstr "Systém" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "Zobraziť zoznam s oznámeniami" # nazov klavesovej skratky #: data/50-gnome-shell-system.xml:12 msgid "Open the quick settings menu" msgstr "Otvoriť ponuku rýchlych nastavení" # nazov klavesovej skratky #: data/50-gnome-shell-system.xml:15 msgid "Focus the active notification" msgstr "Zamerať aktívne oznámenie" # nazov klavesovej skratky #: data/50-gnome-shell-system.xml:18 msgid "Show the overview" msgstr "Zobraziť prehľad" # nazov klavesovej skratky #: data/50-gnome-shell-system.xml:21 msgid "Show all apps" msgstr "Zobraziť všetky aplikácie" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "Shell prostredia GNOME" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "Správa okien a spúšťanie aplikácií" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" "Povoliť vnútorné nástroje užitočné pre vývojárov a testerov z dialógového " "okna Alt-F2" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Umožňuje prístup k vnútorným ladiacim a sledovacím nástrojom pomocou " "dialógového okna Alt-F2." #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "Vlastnosť UUID rozšírení určených na povolenie" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "Rozšírenia pre Shell prostredia GNOME majú vlastnosť UUID; tento kľúč " "obsahuje zoznam rozšírení, ktoré by mali byť načítané. Každé rozšírenie, " "ktoré je potrebné načítať, musí byť v tomto zozname. Tento zoznam môžete " "upraviť aj ručne pomocou metód DBus EnableExtension a DisableExtension v org." "gnome.Shell." #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "Vlastnosť UUID rozšírení určených na nútené vypnutie" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" "Rozšírenia pre prostredie GNOME Shell majú vlastnosť UUID; tento kľúč " "obsahuje zoznam rozšírení, ktoré by mali byť zakázané, aj keď sú načítané " "ako súčasť aktuálneho režimu. Tento zoznam môžete upraviť aj ručne pomocou " "metód D-Bus EnableExtension a DisableExtension v org.gnome.Shell. Tento kľúč " "má prednosť pred nastavením „enabled-extensions“." # summary #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "Zakázať rozšírenia používateľa" # description #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" "Zakáže všetky rozšírenia povolené požívateľom bez vplyvu na nastavenie " "„enabled-extension“." #: data/org.gnome.shell.gschema.xml.in:45 msgid "Allow extension installation" msgstr "Povoliť inštalovanie rozšírení" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "Allow users to install extensions in their home folder. If disabled, the " "InstallRemoteExtension D-Bus method will fail, and extensions are only " "loaded from system directories on startup. It does not affect extensions " "that are already loaded, so a change only takes full effect on the next " "login." msgstr "" "Povoliť používateľom inštalovať rozšírenia do ich domovského priečinka. Ak " "je vypnuté, metóda D-Bus InstallRemoteExtension skončí s chybou a rozšírenia " "sa budú pri spustení načítavať iba zo systémových adresárov. Nemá vplyv na " "už načítané rozšírenia, takže sa zmena naplno prejaví až pri ďalšom " "prihlásení." #: data/org.gnome.shell.gschema.xml.in:56 msgid "Disables the validation of extension version compatibility" msgstr "Zakáže kontrolu kompatibility verzií rozšírení" #: data/org.gnome.shell.gschema.xml.in:57 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "Shell prostredia GNOME načíta len rozšírenia, ktoré deklarujú podporu pre " "práve spustenú verziu prostredia. Povolením tejto voľby zakážete túto " "kontrolu a umožníte načítanie všetkých rozšírení bez ohľadu na to, pre ktorú " "verziu prostredia deklarujú podporu." #: data/org.gnome.shell.gschema.xml.in:65 msgid "List of desktop file IDs for favorite applications" msgstr "Zoznam identifikátorov súborov plochy pre obľúbené aplikácie" #: data/org.gnome.shell.gschema.xml.in:66 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" "Aplikácie zodpovedajúce týmto identifikátorom budú zobrazené medzi " "obľúbenými aplikáciami." #: data/org.gnome.shell.gschema.xml.in:73 msgid "History for command (Alt-F2) dialog" msgstr "História dialógového okna príkazov (Alt-F2)" # * https://live.gnome.org/GnomeShell/LookingGlass #. Translators: looking glass is a debugger and inspector tool, see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/docs/looking-glass.md #: data/org.gnome.shell.gschema.xml.in:78 msgid "History for the looking glass dialog" msgstr "História dialógového okna integrovaného odlaďovača" #: data/org.gnome.shell.gschema.xml.in:82 msgid "Always show the “Log Out” action in the system menu" msgstr "Vždy zobraziť položku „Odhlásiť sa“ v systémovej ponuke." # description #: data/org.gnome.shell.gschema.xml.in:83 msgid "" "This key overrides the automatic hiding of the “Log out” action in the " "system menu for logged-in situations where there is a single, local, non-" "system user and only a single available session type (e.g. GNOME on Wayland)." msgstr "" "Tento kľúč vypína automatické skrývanie položky „Odhlásiť sa“ v systémovej " "ponuke v situáciách, kedy je prihlásený jeden miestny používateľ, ktorý nie " "je systémový a je dostupný iba jeden typ relácie (napr. GNOME vo Waylande)." # summary #: data/org.gnome.shell.gschema.xml.in:92 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "Určiť, či bude zapamätané heslo pre pripojenie zašifrovaných alebo " "prenosných súborových systémov" # description #: data/org.gnome.shell.gschema.xml.in:93 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "Shell bude po pripojení zašifrovaného alebo prenosného súborového systému " "požadovať heslo. Ak bude možné toto heslo uložiť pre neskoršie použitie, " "zobrazí sa zaškrtávacie pole „Zapamätať heslo“. Tento kľúč nastaví " "predvolený stav zaškrtávacieho poľa." #: data/org.gnome.shell.gschema.xml.in:102 msgid "The last selected non-default power profile" msgstr "Naposledy vybraný profil napájania iný ako predvolený" #: data/org.gnome.shell.gschema.xml.in:103 msgid "" "Some systems support more than two power profiles. In order to still support " "toggling between two profiles, this key records the last selected non-" "default profile." msgstr "" "Niektoré systémy podporujú viac ako dva profily napájania. Kvôli " "pretrvávajúcej podpore prepínania medzi dvoma profilmi, tento kľúč " "zaznamenáva naposledy vybraný profil, ktorý je odlišný od predvoleného." #: data/org.gnome.shell.gschema.xml.in:111 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "" "Posledná verzia, pre ktorú sa zobrazilo dialógové okno „Vitajte v GNOME“" #: data/org.gnome.shell.gschema.xml.in:112 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can " "be used to effectively disable the dialog." msgstr "" "Tento klúč určuje, pre ktorú verziu sa naposledy zobrazilo dialógové okno " "„Vitajte v GNOME“. Prázdny reťazec predstavuje najstaršiu možnú verziu a " "veľké číslo bude predstavovať verzie, ktoré zatiaľ neexistujú. Toto veľké " "číslo je možné použiť na efektívne deaktivovanie dialógového okna." #: data/org.gnome.shell.gschema.xml.in:145 msgid "Layout of the app picker" msgstr "Rozloženie nástroja na výber aplikácie" #: data/org.gnome.shell.gschema.xml.in:146 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" msgstr "" "Rozloženie nástroja na výber aplikácie. Každý záznam v poli je stránkou. " "Stránky sú uložené v poradí, v akom sú viditeľné v Shelli prostredia GNOME. " "Každá stránka obsahuje pár záznamov „application id“ → „údaje“. Momentálne " "sú nasledovné hodnoty uložené ako „údaje“: • “„pozícia“: pozícia ikony " "aplikácie na stránke." #: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:172 msgid "Keybinding to shift between overview states" msgstr "Kombinácia kláves na prepínanie medzi stavmi prehľadu" #: data/org.gnome.shell.gschema.xml.in:166 msgid "Keybinding to shift between session, window picker and app grid" msgstr "" "Klávesová skratka na prepínanie medzi sedením, výberom okna a mriežkou " "aplikácií" #: data/org.gnome.shell.gschema.xml.in:173 msgid "Keybinding to shift between app grid, window picker and session" msgstr "" "Klávesová skratka slúži na prepínanie medzi mriežkou aplikácií, výberom okna " "a sedením" #: data/org.gnome.shell.gschema.xml.in:179 msgid "Keybinding to open the “Show Applications” view" msgstr "Klávesová skratka na otvorenie pohľadu „Zobraziť aplikácie“" #: data/org.gnome.shell.gschema.xml.in:180 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "" "Klávesová skratka na otvorenie pohľadu „Zobraziť aplikácie“ v prehľade " "aktivít." #: data/org.gnome.shell.gschema.xml.in:187 msgid "Keybinding to open the overview" msgstr "Klávesová skratka na otvorenie prehľadu" #: data/org.gnome.shell.gschema.xml.in:188 msgid "Keybinding to open the Activities Overview." msgstr "Klávesová skratka na otvorenie prehľadu aktivít." #: data/org.gnome.shell.gschema.xml.in:194 msgid "Keybinding to toggle the visibility of the notification list" msgstr "Klávesová skratka na prepnutie viditeľnosti zoznamu s oznámeniami" #: data/org.gnome.shell.gschema.xml.in:195 msgid "Keybinding to toggle the visibility of the notification list." msgstr "Klávesová skratka na prepnutie viditeľnosti zoznamu s oznámeniami." #: data/org.gnome.shell.gschema.xml.in:201 msgid "Keybinding to toggle the quick settings menu" msgstr "Klávesová skratka na prepnutie ponuky rýchlych nastavení" #: data/org.gnome.shell.gschema.xml.in:202 msgid "Keybinding to toggle the quick settings menu." msgstr "Klávesová skratka na prepnutie ponuky rýchlych nastavení." #: data/org.gnome.shell.gschema.xml.in:208 msgid "Keybinding to focus the active notification" msgstr "Klávesová skratka na zameranie aktívnych oznámení" #: data/org.gnome.shell.gschema.xml.in:209 msgid "Keybinding to focus the active notification." msgstr "Klávesová skratka, s ktorou sa zamerá na aktívne oznámenia." # tooltip #: data/org.gnome.shell.gschema.xml.in:215 msgid "Switch to application 1" msgstr "Prepnúť na aplikáciu č. 1" # tooltip #: data/org.gnome.shell.gschema.xml.in:219 msgid "Switch to application 2" msgstr "Prepnúť na aplikáciu č. 2" # tooltip #: data/org.gnome.shell.gschema.xml.in:223 msgid "Switch to application 3" msgstr "Prepnúť na aplikáciu č. 3" # tooltip #: data/org.gnome.shell.gschema.xml.in:227 msgid "Switch to application 4" msgstr "Prepnúť na aplikáciu č. 4" # tooltip #: data/org.gnome.shell.gschema.xml.in:231 msgid "Switch to application 5" msgstr "Prepnúť na aplikáciu č. 5" # tooltip #: data/org.gnome.shell.gschema.xml.in:235 msgid "Switch to application 6" msgstr "Prepnúť na aplikáciu č. 6" # tooltip #: data/org.gnome.shell.gschema.xml.in:239 msgid "Switch to application 7" msgstr "Prepnúť na aplikáciu č. 7" # tooltip #: data/org.gnome.shell.gschema.xml.in:243 msgid "Switch to application 8" msgstr "Prepnúť na aplikáciu č. 8" # tooltip #: data/org.gnome.shell.gschema.xml.in:247 msgid "Switch to application 9" msgstr "Prepnúť na aplikáciu č. 9" # tooltip #: data/org.gnome.shell.gschema.xml.in:251 msgid "Open a new instance of application 1" msgstr "Otvoriť novú inštanciu aplikácie č. 1" # tooltip #: data/org.gnome.shell.gschema.xml.in:255 msgid "Open a new instance of application 2" msgstr "Otvoriť novú inštanciu aplikácie č. 2" # tooltip #: data/org.gnome.shell.gschema.xml.in:259 msgid "Open a new instance of application 3" msgstr "Otvoriť novú inštanciu aplikácie č. 3" # tooltip #: data/org.gnome.shell.gschema.xml.in:263 msgid "Open a new instance of application 4" msgstr "Otvoriť novú inštanciu aplikácie č. 4" # tooltip #: data/org.gnome.shell.gschema.xml.in:267 msgid "Open a new instance of application 5" msgstr "Otvoriť novú inštanciu aplikácie č. 5" # tooltip #: data/org.gnome.shell.gschema.xml.in:271 msgid "Open a new instance of application 6" msgstr "Otvoriť novú inštanciu aplikácie č. 6" # tooltip #: data/org.gnome.shell.gschema.xml.in:275 msgid "Open a new instance of application 7" msgstr "Otvoriť novú inštanciu aplikácie č. 7" # tooltip #: data/org.gnome.shell.gschema.xml.in:279 msgid "Open a new instance of application 8" msgstr "Otvoriť novú inštanciu aplikácie č. 8" # tooltip #: data/org.gnome.shell.gschema.xml.in:283 msgid "Open a new instance of application 9" msgstr "Otvoriť novú inštanciu aplikácie č. 9" # summary #: data/org.gnome.shell.gschema.xml.in:308 #: data/org.gnome.shell.gschema.xml.in:335 msgid "Limit switcher to current workspace." msgstr "Obmedziť prepínač na aktuálny pracovný priestor." # desc #: data/org.gnome.shell.gschema.xml.in:309 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "Ak je true, iba aplikácie, ktoré majú okná na aktuálnom pracovnom priestore " "budú zobrazené v prepínači. Inak budú zahrnuté všetky aplikácie." #: data/org.gnome.shell.gschema.xml.in:326 msgid "The application icon mode." msgstr "Režim ikonizácie aplikácií." #: data/org.gnome.shell.gschema.xml.in:327 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-only” " "(shows only the application icon) or “both”." msgstr "" "Konfiguruje, ako sa majú zobraziť okná v prepínači. Platné možnosti sú " "„thumbnail-only“ (zobrazí miniatúru okna), „app-icon-only“ (zobrazí iba " "ikonu aplikácie) alebo „both“ (zobrazí oboje)." # desc #: data/org.gnome.shell.gschema.xml.in:336 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "Ak je true, iba okná z aktuálneho pracovného priestoru budú zobrazené v " "prepínači. Inak budú zahrnuté všetky okná." #: data/org.gnome.shell.gschema.xml.in:346 msgid "Locations" msgstr "Umiestnenia" #: data/org.gnome.shell.gschema.xml.in:347 msgid "The locations to show in world clocks" msgstr "Zobrazené umiestnenia v svetových časoch" #: data/org.gnome.shell.gschema.xml.in:357 msgid "Automatic location" msgstr "Automatické umiestnenie" #: data/org.gnome.shell.gschema.xml.in:358 msgid "Whether to fetch the current location or not" msgstr "Určuje, či sa má získať aktuálne umiestnenie alebo nie" #: data/org.gnome.shell.gschema.xml.in:365 msgid "Location" msgstr "Umiestnenie" #: data/org.gnome.shell.gschema.xml.in:366 msgid "The location for which to show a forecast" msgstr "Umiestnenie, pre ktoré zobraziť predpoveď" #. Keep in sync with subprojects/extensions-app #: data/org.gnome.Shell.Extensions.desktop.in.in:5 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/data/ui/extensions-window.ui:57 msgid "Extensions" msgstr "Rozšírenia" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "Sieťové prihlásenie" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:275 msgid "Something’s gone wrong" msgstr "Niečo sa pokazilo" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" "Ospravedlňujeme sa, ale vyskytol sa problém: Nastavenia tohoto rozšírenia sa " "nedajú zobraziť. Odporúčame vám nahlásiť problém autorom rozšírenia." #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "Technické podrobnosti" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "Domovská stránka" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 msgid "Visit extension homepage" msgstr "Navštíviť domovskú stránku rozšírenia" #: js/gdm/authPrompt.js:151 js/gdm/loginDialog.js:466 #: js/ui/audioDeviceSelection.js:66 js/ui/components/networkAgent.js:113 #: js/ui/components/polkitAgent.js:144 js/ui/endSessionDialog.js:437 #: js/ui/extensionDownloader.js:276 js/ui/shellMountOperation.js:382 #: js/ui/shellMountOperation.js:392 msgid "Cancel" msgstr "Zrušiť" #: js/gdm/authPrompt.js:317 js/ui/components/networkAgent.js:213 #: js/ui/components/networkAgent.js:233 js/ui/components/networkAgent.js:265 #: js/ui/components/networkAgent.js:298 js/ui/components/networkAgent.js:337 #: js/ui/components/networkAgent.js:350 js/ui/components/polkitAgent.js:286 #: js/ui/shellMountOperation.js:332 msgid "Password" msgstr "Heslo" # button #: js/gdm/loginDialog.js:326 msgid "Choose Session" msgstr "Vybrať reláciu" #. Translators: is running for #: js/gdm/loginDialog.js:424 #, javascript-format msgid "" "Remote login is not possible because a remote session is already running for " "%s. To login remotely, you must log out from the remote session or force " "stop it." msgstr "" "Vzdialené prihlásenie nie je možné, pretože pre používateľa %s je už " "spustená vzdialená relácia. Ak sa chcete prihlásiť na diaľku, musíte sa " "najprv z tejto vzdialenej relácie odhlásiť alebo vynútiť jej zastavenie." #. Translators: is running for #: js/gdm/loginDialog.js:427 #, javascript-format msgid "" "Login is not possible because a remote session is already running for %s. To " "login, you must log out from the remote session or force stop it." msgstr "" "Prihlásenie nie je možné, pretože pre používateľa %s je už spustená " "vzdialená relácia. Ak sa chcete prihlásiť, musíte sa najprv z tejto " "vzdialenej relácie odhlásiť alebo vynútiť jej zastavenie." #. Translators: is running for #: js/gdm/loginDialog.js:430 #, javascript-format msgid "" "Remote login is not possible because a local session is already running for " "%s. To login remotely, you must log out from the local session or force stop " "it." msgstr "" "Vzdialené prihlásenie nie je možné, pretože pre používateľa %s je už " "spustená relácia. Ak sa chcete prihlásiť, musíte sa najprv z tejto relácie " "odhlásiť alebo vynútiť jej zastavenie." #. Translators: is running for #: js/gdm/loginDialog.js:433 #, javascript-format msgid "" "Login is not possible because a session is already running for %s. To login, " "you must log out from the session or force stop it." msgstr "" "Prihlásenie nie je možné, pretože pre používateľa %s je už spustená relácia. " "Ak sa chcete prihlásiť, musíte sa najprv z tejto relácie odhlásiť alebo " "vynútiť jej zastavenie." #: js/gdm/loginDialog.js:442 msgid "Session Already Running" msgstr "Relácia už je spustená" #: js/gdm/loginDialog.js:454 #| msgid "" #| "Force stopping will quit any running apps and processes, and could result " #| "in data loss." msgid "" "Force stopping will quit any running apps and processes, and could result in " "data loss" msgstr "" "Vynútené zastavenie ukončí všetky bežiace aplikácie a procesy a môže dôjsť " "ku strate údajov" #: js/gdm/loginDialog.js:474 msgid "Force Stop" msgstr "Vynútiť zastavenie" # https://bugzilla.gnome.org/show_bug.cgi?id=659972 #: js/gdm/loginDialog.js:542 msgid "Not listed?" msgstr "Nie ste v zozname?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:1010 #, javascript-format msgid "(e.g., user or %s)" msgstr "(napr., používateľ alebo %s)" #: js/gdm/loginDialog.js:1015 js/ui/components/networkAgent.js:257 #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:326 msgid "Username" msgstr "Používateľské meno" #: js/gdm/loginDialog.js:1081 msgid "Login Attempt Timed Out" msgstr "Časový limit pri pokuse o prihlásenie vypršal" #: js/gdm/loginDialog.js:1082 msgid "Login took too long, please try again" msgstr "Prihlasovanie trvalo príliš dlho, skúste to prosím znovu" #: js/gdm/loginDialog.js:1431 msgid "Login Window" msgstr "Prihlasovacie okno" #: js/gdm/util.js:496 msgid "Authentication error" msgstr "Chyba pri overovaní totožnosti" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:727 msgid "(or swipe finger across reader)" msgstr "(alebo prejdite prstom po čítačke)" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:732 msgid "(or place finger on reader)" msgstr "(alebo priložte prst na čítačku)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:91 msgctxt "search-result" msgid "Power Off" msgstr "Vypnúť" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:94 msgid "power off;poweroff;shutdown;halt;stop" msgstr "vypnúť;vypnutie;zastaviť;zastavenie" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:99 msgctxt "search-result" msgid "Restart" msgstr "Reštartovať" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:102 msgid "reboot;restart;" msgstr "reštartovať;reštart;" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:107 msgctxt "search-result" msgid "Lock Screen" msgstr "Uzamknúť obrazovku" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:110 msgid "lock screen" msgstr "uzamknúť;zámok;obrazovku;obrazovky" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:115 msgctxt "search-result" msgid "Log Out" msgstr "Odhlásiť sa" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:118 msgid "logout;log out;sign off" msgstr "odhlásiť;odhlásenie" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:123 msgctxt "search-result" msgid "Suspend" msgstr "Uspať" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:126 msgid "suspend;sleep" msgstr "uspať;režim;spánku" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:131 msgctxt "search-result" msgid "Switch User" msgstr "Prepnúť používateľa" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:134 msgid "switch user" msgstr "prepnúť;prepnutie;používateľa" # action button #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:141 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "uzamknúť orientáciu;odomknúť orientáciu;obrazovka;otočenie" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:146 msgctxt "search-result" msgid "Take a Screenshot" msgstr "Zachytiť snímku obrazovky" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:149 msgid "screenshot;screencast;snip;capture;record" msgstr "snímka;obrazovky;záznam;nahrávka;výrez" # action button #: js/misc/systemActions.js:249 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "Odomknúť otočenie obrazovky" # action button #: js/misc/systemActions.js:250 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "Uzamknúť otočenie obrazovky" #: js/misc/util.js:130 msgid "Command not found" msgstr "Príkaz nebol nájdený" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:170 msgid "Could not parse command:" msgstr "Nepodarilo sa analyzovať príkaz:" #: js/misc/util.js:178 #, javascript-format msgid "Execution of “%s” failed:" msgstr "Spustenie „%s“ zlyhalo:" #: js/misc/dateUtils.js:69 msgid "Just now" msgstr "Práve teraz" #: js/misc/dateUtils.js:72 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "Pred %d minútami" msgstr[1] "Pred %d minútou" msgstr[2] "Pred %d minútami" #: js/misc/dateUtils.js:79 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "Pred %d hodinami" msgstr[1] "Pred %d hodinou" msgstr[2] "Pred %d hodinami" #: js/misc/dateUtils.js:85 js/ui/dateMenu.js:183 msgid "Yesterday" msgstr "Včera" #: js/misc/dateUtils.js:88 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "Pred %d dňami" msgstr[1] "Pred %d dňom" msgstr[2] "Pred %d dňami" #: js/misc/dateUtils.js:95 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "Pred %d týždňami" msgstr[1] "Pred %d týždňom" msgstr[2] "Pred %d týždňami" #: js/misc/dateUtils.js:102 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "Pred %d mesiacmi" msgstr[1] "Pred %d mesiacom" msgstr[2] "Pred %d mesiacmi" #: js/misc/dateUtils.js:108 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "Pred %d rokmi" msgstr[1] "Pred %d rokom" msgstr[2] "Pred %d rokmi" #. Translators: Time in 24h format #: js/misc/dateUtils.js:155 msgid "%H∶%M" msgstr "%H:%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/dateUtils.js:161 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "Včera o %H:%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/dateUtils.js:167 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, %H:%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/dateUtils.js:173 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%d. %B, %H:%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/dateUtils.js:179 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%d. %B %Y, %H:%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/dateUtils.js:184 msgid "%l∶%M %p" msgstr "%l:%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/dateUtils.js:190 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "Včera, %l:%M %p" # DK: je tento format casu spravne? neviem zistit co ktore premenne znamenaju. # ma sa v preklade zmenit "%e" na "%d" ? # v ostatnych retazcoch je pouzite %e, tak to bude asi OK #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/dateUtils.js:196 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %l:%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/dateUtils.js:202 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%d. %B, %l:%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/dateUtils.js:208 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%d. %B %Y, %l:%M %p" #: js/portalHelper/main.js:98 msgid "Your connection seems to be secure" msgstr "Vaše pripojenie sa zdá byť bezpečné" #: js/portalHelper/main.js:104 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "Vaše pripojenie s prihlásením k tomuto aktívnemu bodu nie je bezpečné. Heslá " "alebo iné informácie, ktoré ste zadali na tejto stránke môžu byť zobrazené " "ľuďmi vo vašom okolí." #: js/portalHelper/main.js:115 msgid "Hotspot Login" msgstr "Prihlásenie do aktívneho bodu" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:51 js/ui/inhibitShortcutsDialog.js:92 msgid "Deny" msgstr "Odmietnuť" #: js/ui/accessDialog.js:52 js/ui/inhibitShortcutsDialog.js:101 msgid "Allow" msgstr "Povoliť" #: js/ui/appDisplay.js:1769 msgid "Unnamed Folder" msgstr "Nepomenovaný priečinok" #: js/ui/appFavorites.js:163 #, javascript-format msgid "%s has been pinned to the dash." msgstr "Aplikácia %s bola pripnutá k doku." #: js/ui/appFavorites.js:194 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "Aplikácii %s bolo zrušené pripnutie k doku." #: js/ui/appFavorites.js:208 js/ui/main.js:281 msgid "Undo" msgstr "Vrátiť" #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:49 msgid "Open Windows" msgstr "Otvorené okná" #: js/ui/appMenu.js:57 msgid "New Window" msgstr "Nové okno" #: js/ui/appMenu.js:84 msgid "App Details" msgstr "Podrobnosti o aplikácii" #: js/ui/appMenu.js:100 msgid "Quit" msgstr "Ukončiť" #: js/ui/appMenu.js:160 js/ui/dash.js:248 msgid "Unpin" msgstr "Zrušiť pripnutie" #: js/ui/appMenu.js:161 msgid "Pin to Dash" msgstr "Pripnúť k doku" #: js/ui/appMenu.js:178 msgid "Launch using Integrated Graphics Card" msgstr "Spustiť pomocou integrovanej grafickej karty" #: js/ui/appMenu.js:179 msgid "Launch using Discrete Graphics Card" msgstr "Spustiť pomocou diskrétnej grafickej karty" #: js/ui/audioDeviceSelection.js:46 msgid "Select Audio Device" msgstr "Výber audio zariadenia" #: js/ui/audioDeviceSelection.js:61 js/ui/status/volume.js:81 msgid "Sound Settings" msgstr "Nastavenia zvuku" #: js/ui/audioDeviceSelection.js:74 msgid "Headphones" msgstr "Slúchadlá" #: js/ui/audioDeviceSelection.js:76 msgid "Headset" msgstr "Náhlavná súprava" #: js/ui/audioDeviceSelection.js:78 js/ui/status/volume.js:356 msgid "Microphone" msgstr "Mikrofón" #: js/ui/backgroundMenu.js:13 msgid "Change Background…" msgstr "Zmeniť pozadie…" #: js/ui/backgroundMenu.js:15 msgid "Display Settings" msgstr "Nastavenia displeja" #: js/ui/backgroundMenu.js:16 msgid "Settings" msgstr "Nastavenia" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:37 msgctxt "calendar-no-work" msgid "06" msgstr "06" # MČ: nemali by tu byť tiež jednopísmenové? Občas som videl v kolendároch aj také použiť a ďalej sú dvojpísmenové. # PK: v grid to skratene bude, inac v liste to moze byt 2 pismenove, kedze aj v # originale dali Su #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:63 msgctxt "grid sunday" msgid "S" msgstr "N" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:65 msgctxt "grid monday" msgid "M" msgstr "P" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:67 msgctxt "grid tuesday" msgid "T" msgstr "U" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:69 msgctxt "grid wednesday" msgid "W" msgstr "S" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:71 msgctxt "grid thursday" msgid "T" msgstr "Š" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:73 msgctxt "grid friday" msgid "F" msgstr "P" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:75 msgctxt "grid saturday" msgid "S" msgstr "S" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:426 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:436 msgid "%OB %Y" msgstr "%OB %Y" #: js/ui/calendar.js:498 msgid "Previous month" msgstr "Predchádzajúci mesiac" #: js/ui/calendar.js:516 msgid "Next month" msgstr "Nasledujúci mesiac" #: js/ui/calendar.js:667 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:726 msgid "Week %V" msgstr "%V. týždeň" #: js/ui/calendar.js:918 msgid "No Notifications" msgstr "Žiadne oznámenia" #: js/ui/calendar.js:974 msgid "Do Not Disturb" msgstr "Nevyrušovať" #: js/ui/calendar.js:995 msgid "Clear" msgstr "Vymazať" #: js/ui/calendar.js:999 msgctxt "action" msgid "Clear all notifications" msgstr "Vyčistiť všetky oznámenia" #. Translators: %s is an application name #: js/ui/closeDialog.js:42 #, javascript-format #| msgid "“%s” is not responding." msgid "“%s” Is Not Responding" msgstr "Aplikácia „%s“ neodpovedá" #: js/ui/closeDialog.js:43 #| msgid "" #| "You may choose to wait a short while for it to continue or force the app " #| "to quit entirely." msgid "" "You may choose to wait a short while for it to continue or force the app to " "quit entirely" msgstr "" "Môžete chvíľu počkať na pokračovanie aplikácie, alebo vynútiť úplné " "ukončenie aplikácie" #: js/ui/closeDialog.js:71 msgid "Force Quit" msgstr "Vynútiť ukončenie" #: js/ui/closeDialog.js:76 msgid "Wait" msgstr "Počkať" #: js/ui/components/automountManager.js:82 msgid "External drive connected" msgstr "Externá jednotka bola pripojená" #: js/ui/components/automountManager.js:94 msgid "External drive disconnected" msgstr "Externá jednotka bola odpojená" #: js/ui/components/automountManager.js:208 msgid "Unable to unlock volume" msgstr "Nepodarilo sa odomknúť zväzok" #: js/ui/components/automountManager.js:209 msgid "The installed udisks version does not support the PIM setting" msgstr "Nainštalovaná verzia programu udisks nepodporuje nastavenie PIM" #. Translators: %s is the name of a partition on a external drive #: js/ui/components/autorunManager.js:189 #, javascript-format msgid "“%s” connected" msgstr "„%s“ pripojených" #: js/ui/components/autorunManager.js:190 msgid "Disk can now be used" msgstr "Disk môžete teraz začať používať" # DK: doplnil som slovo "programu", aby to znelo prirodzenejsie. priklad:po pripojeni USB kluca bolo zobrazene "Otvoriť pomocou Súbory" #: js/ui/components/autorunManager.js:202 #, javascript-format msgid "Open with %s" msgstr "Otvoriť pomocou aplikácie %s" #: js/ui/components/networkAgent.js:95 #| msgid "" #| "Alternatively you can connect by pushing the “WPS” button on your router." msgid "" "Alternatively you can connect by pushing the “WPS” button on your router" msgstr "" "Pripojiť sa môžete taktiež stlačením tlačidla „WPS“ na vašom smerovači" #: js/ui/components/networkAgent.js:107 js/ui/status/bluetooth.js:245 #: js/ui/status/network.js:360 js/ui/status/network.js:444 msgid "Connect" msgstr "Pripojiť" #: js/ui/components/networkAgent.js:222 msgid "Key" msgstr "Kľúč" #: js/ui/components/networkAgent.js:273 js/ui/components/networkAgent.js:312 msgid "Private key password" msgstr "Heslo k súkromnému kľúču" #: js/ui/components/networkAgent.js:306 msgid "Identity" msgstr "Identita" #: js/ui/components/networkAgent.js:332 msgid "Service" msgstr "Služba" #: js/ui/components/networkAgent.js:370 js/ui/components/networkAgent.js:406 #: js/ui/components/networkAgent.js:743 js/ui/components/networkAgent.js:764 msgid "Authentication required" msgstr "Požaduje sa overenie totožnosti" #: js/ui/components/networkAgent.js:371 js/ui/components/networkAgent.js:744 #, javascript-format #| msgid "" #| "Passwords or encryption keys are required to access the wireless network " #| "“%s”." msgid "" "Passwords or encryption keys are required to access the wireless network “%s”" msgstr "" "Na prístup do bezdrôtovej siete „%s“ sú vyžadované heslá alebo šifrovacie " "kľúče" #: js/ui/components/networkAgent.js:375 js/ui/components/networkAgent.js:748 msgid "Wired 802.1X authentication" msgstr "Overenie totožnosti k drôtovej sieti 802.1X" #: js/ui/components/networkAgent.js:378 msgid "Network name" msgstr "Názov siete" #: js/ui/components/networkAgent.js:386 js/ui/components/networkAgent.js:752 msgid "DSL authentication" msgstr "Overenie totožnosti k DSL" #: js/ui/components/networkAgent.js:393 js/ui/components/networkAgent.js:757 msgid "PIN code required" msgstr "Požaduje sa kód PIN" #: js/ui/components/networkAgent.js:394 js/ui/components/networkAgent.js:758 msgid "PIN code is needed for the mobile broadband device" msgstr "Pre zariadenie mobilnej širokopásmovej siete je potrebný kód PIN" #: js/ui/components/networkAgent.js:396 msgid "PIN" msgstr "PIN" #: js/ui/components/networkAgent.js:407 js/ui/components/networkAgent.js:749 #: js/ui/components/networkAgent.js:753 js/ui/components/networkAgent.js:765 #: js/ui/components/networkAgent.js:769 #, javascript-format #| msgid "A password is required to connect to “%s”." msgid "A password is required to connect to “%s”" msgstr "Na pripojenie k „%s“ sa požaduje heslo" #: js/ui/components/networkAgent.js:768 msgid "VPN password" msgstr "Heslo siete VPN" #: js/ui/components/polkitAgent.js:44 msgid "Authentication Required" msgstr "Požaduje sa overenie totožnosti" # PŠ: ináč toto je riadna hlúposť, keďže sa pýta heslo používateľa "root" #: js/ui/components/polkitAgent.js:84 msgid "Administrator" msgstr "Správca" #: js/ui/components/polkitAgent.js:149 msgid "Authenticate" msgstr "Overiť totožnosť" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:263 js/ui/shellMountOperation.js:415 msgid "Sorry, that didn’t work. Please try again." msgstr "Prepáčte, ale nezabralo to. Skúste to, prosím, znova." #: js/ui/ctrlAltTab.js:23 js/ui/overviewControls.js:404 msgid "Windows" msgstr "Okná" # tooltip #: js/ui/dash.js:204 js/ui/dash.js:250 msgid "Show Apps" msgstr "Zobrazí aplikácie" #. Translators: this is the name of the dock/favorites area on #. the bottom of the overview #: js/ui/dash.js:408 msgid "Dash" msgstr "Dok" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:99 msgid "%B %-d %Y" msgstr "%-e. %B %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:106 msgid "%A %B %e %Y" msgstr "%A, %-e. %B %Y" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:172 msgctxt "calendar heading" msgid "%B %-d" msgstr "%-e. %B" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:175 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%-e. %B %Y" #: js/ui/dateMenu.js:181 msgid "Today" msgstr "Dnes" #: js/ui/dateMenu.js:185 msgid "Tomorrow" msgstr "Zajtra" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:216 msgctxt "event list time" msgid "All Day" msgstr "Celý deň" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:238 msgid "%m/%d" msgstr "%d.%m" #: js/ui/dateMenu.js:289 msgid "No Events" msgstr "Žiadne udalosti" #: js/ui/dateMenu.js:411 #| msgid "Add world clocks…" msgid "Add World Clocks…" msgstr "Pridať svetové časy…" #: js/ui/dateMenu.js:412 msgid "World Clocks" msgstr "Svetové časy" #: js/ui/dateMenu.js:702 msgid "Loading…" msgstr "Načítava sa…" #: js/ui/dateMenu.js:712 #| msgid "Go online for weather information" msgid "Go Online for Weather Information" msgstr "Aby sa mohli zobraziť informácie o počasí, musíte sa pripojiť" #: js/ui/dateMenu.js:714 #| msgid "Weather information is currently unavailable" msgid "Weather Information Unavailable" msgstr "Informácie o počasí nie sú momentálne dostupné" #: js/ui/dateMenu.js:724 msgid "Weather" msgstr "Počasie" #: js/ui/dateMenu.js:726 #| msgid "Select weather location…" msgid "Select Weather Location…" msgstr "Vybrať umiestnenie pre počasie…" #: js/ui/endSessionDialog.js:47 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "Odhlásenie používateľa %s" #: js/ui/endSessionDialog.js:48 msgctxt "title" msgid "Log Out" msgstr "Odhlásenie" #: js/ui/endSessionDialog.js:51 #, javascript-format #| msgid "%s will be logged out automatically in %d second." #| msgid_plural "%s will be logged out automatically in %d seconds." msgid "%s will be logged out automatically in %d second" msgid_plural "%s will be logged out automatically in %d seconds" msgstr[0] "Používateľ %s bude automaticky odhlásený o %d sekúnd" msgstr[1] "Používateľ %s bude automaticky odhlásený o %d sekundu" msgstr[2] "Používateľ %s bude automaticky odhlásený o %d sekundy" #: js/ui/endSessionDialog.js:57 #, javascript-format #| msgid "You will be logged out automatically in %d second." #| msgid_plural "You will be logged out automatically in %d seconds." msgid "You will be logged out automatically in %d second" msgid_plural "You will be logged out automatically in %d seconds" msgstr[0] "Budete automaticky odhlásený o %d sekúnd" msgstr[1] "Budete automaticky odhlásený o %d sekundu" msgstr[2] "Budete automaticky odhlásený o %d sekundy" #: js/ui/endSessionDialog.js:64 msgctxt "button" msgid "Log Out" msgstr "Odhlásiť sa" #: js/ui/endSessionDialog.js:70 js/ui/status/system.js:174 msgctxt "title" msgid "Power Off" msgstr "Vypnutie" #: js/ui/endSessionDialog.js:71 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Inštalácia aktualizácií a vypnutie" #: js/ui/endSessionDialog.js:74 #, javascript-format #| msgid "The system will power off automatically in %d second." #| msgid_plural "The system will power off automatically in %d seconds." msgid "The system will power off automatically in %d second" msgid_plural "The system will power off automatically in %d seconds" msgstr[0] "Systém sa automaticky vypne o %d sekúnd" msgstr[1] "Systém sa automaticky vypne o %d sekundu" msgstr[2] "Systém sa automaticky vypne o %d sekundy" #: js/ui/endSessionDialog.js:78 js/ui/endSessionDialog.js:97 msgctxt "checkbox" msgid "Install pending software updates" msgstr "Nainštalovať čakajúce aktualizácie softvéru" #: js/ui/endSessionDialog.js:82 msgctxt "button" msgid "Power Off" msgstr "Vypnúť" #: js/ui/endSessionDialog.js:89 msgctxt "title" msgid "Restart" msgstr "Reštart" #: js/ui/endSessionDialog.js:90 msgctxt "title" msgid "Install Updates & Restart" msgstr "Inštalácia aktualizácií a reštart" #: js/ui/endSessionDialog.js:93 #, javascript-format #| msgid "The system will restart automatically in %d second." #| msgid_plural "The system will restart automatically in %d seconds." msgid "The system will restart automatically in %d second" msgid_plural "The system will restart automatically in %d seconds" msgstr[0] "Systém sa automaticky reštartuje o %d sekúnd" msgstr[1] "Systém sa automaticky reštartuje o %d sekundu" msgstr[2] "Systém sa automaticky reštartuje o %d sekundy" #: js/ui/endSessionDialog.js:101 msgctxt "button" msgid "Restart" msgstr "Reštartovať" #: js/ui/endSessionDialog.js:109 msgctxt "title" msgid "Restart & Install Updates" msgstr "Reštart a inštalácia aktualizácií" #: js/ui/endSessionDialog.js:112 #, javascript-format #| msgid "" #| "The system will automatically restart and install updates in %d second." #| msgid_plural "" #| "The system will automatically restart and install updates in %d seconds." msgid "The system will automatically restart and install updates in %d second" msgid_plural "" "The system will automatically restart and install updates in %d seconds" msgstr[0] "" "Systém sa automaticky reštartuje a nainštaluje aktualizácie o %d sekúnd" msgstr[1] "" "Systém sa automaticky reštartuje a nainštaluje aktualizácie o %d sekundu" msgstr[2] "" "Systém sa automaticky reštartuje a nainštaluje aktualizácie o %d sekundy" #: js/ui/endSessionDialog.js:119 js/ui/endSessionDialog.js:140 msgctxt "button" msgid "Restart & Install" msgstr "Reštartovať a inštalovať" #: js/ui/endSessionDialog.js:121 msgctxt "button" msgid "Install & Power Off" msgstr "Nainštalovať a vypnúť" #: js/ui/endSessionDialog.js:122 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Vypnúť po inštalácii aktualizácií" #: js/ui/endSessionDialog.js:129 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "Reštart a inštalácia inovácie" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:134 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "Operačný systém %s %s bude nainštalovaný po reštarte. Inštalácia inovácie " "môže trvať dlhšiu dobu: uistite sa, že máte vytvorenú zálohu, a že počítač " "je pripojený k zdroju napájania." #: js/ui/endSessionDialog.js:283 #| msgid "Low battery power: please plug in before installing updates." msgid "Low battery power: please plug in before installing updates" msgstr "" "Batéria je vybitá: pred inštaláciou aktualizácií pripojte napájací zdroj" #: js/ui/endSessionDialog.js:292 msgid "Some applications are busy or have unsaved work" msgstr "Niektoré aplikácie sú zaneprázdnené, alebo obsahujú neuloženú prácu" #: js/ui/endSessionDialog.js:297 msgid "Other users are logged in" msgstr "Sú prihlásení iní používatelia" #: js/ui/endSessionDialog.js:467 msgctxt "button" msgid "Boot Options" msgstr "Voľby zavádzania" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:672 #, javascript-format msgid "%s (remote)" msgstr "%s (vzdialená relácia)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:675 #, javascript-format msgid "%s (console)" msgstr "%s (konzola)" #: js/ui/extensionDownloader.js:280 msgid "Install" msgstr "Inštalovať" # dialog title #: js/ui/extensionDownloader.js:286 msgid "Install Extension" msgstr "Inštalácia rozšírenia" #: js/ui/extensionDownloader.js:287 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "Prevziať a nainštalovať rozšírenie „%s“ z extensions.gnome.org?" #: js/ui/extensionSystem.js:352 msgid "Extension Updates Available" msgstr "Sú dostupné aktualizácie rozšírení" #: js/ui/extensionSystem.js:353 #| msgid "Extension updates are ready to be installed." msgid "Extension updates are ready to be installed" msgstr "Aktualizácie rozšírení sú pripravené na inštaláciu" # dialog title #: js/ui/inhibitShortcutsDialog.js:70 msgid "Allow inhibiting shortcuts" msgstr "Umožnenie potlačenia skratiek" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:73 #, javascript-format msgid "The app %s wants to inhibit shortcuts" msgstr "Aplikácia %s chce potlačiť skratky" #: js/ui/inhibitShortcutsDialog.js:74 msgid "An app wants to inhibit shortcuts" msgstr "Aplikácia chce potlačiť skratky" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:81 #, javascript-format #| msgid "You can restore shortcuts by pressing %s." msgid "You can restore shortcuts by pressing %s" msgstr "Skratky môžete obnoviť stlačením %s" # z gnome control center #: js/ui/kbdA11yDialog.js:34 msgid "Slow Keys Turned On" msgstr "Pomalé klávesy zapnuté" # z gnome control center #: js/ui/kbdA11yDialog.js:35 msgid "Slow Keys Turned Off" msgstr "Pomalé klávesy vypnuté" #: js/ui/kbdA11yDialog.js:36 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "Práve ste podržali stlačenú klávesu Shift po dobu 8 sekúnd. Je to skratka " "funkcie Pomalé klávesy, ktorá mení spôsob fungovania vašej klávesnice." # z gnome control center #: js/ui/kbdA11yDialog.js:42 msgid "Sticky Keys Turned On" msgstr "Lepkavé klávesy zapnuté" # z gnome control center #: js/ui/kbdA11yDialog.js:43 msgid "Sticky Keys Turned Off" msgstr "Lepkavé klávesy vypnuté" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "Práve ste stlačili klávesu Shift 5krát za sebou. je to skratka funkcie " "Lepkavé klávesy, ktorá mení spôsob fungovania vašej klávesnice." #: js/ui/kbdA11yDialog.js:47 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" "Práve ste stlačili dve klávesy naraz, alebo ste stlačili klávesu Shift 5krát " "za sebou. Tým sa vypne funkcia Lepkavé klávesy, ktorá mení spôsob fungovania " "vašej klávesnice." #: js/ui/kbdA11yDialog.js:57 msgid "Leave On" msgstr "Ponechať zapnuté" #: js/ui/kbdA11yDialog.js:57 msgid "Turn On" msgstr "Zapnúť" #: js/ui/kbdA11yDialog.js:67 js/ui/status/network.js:455 msgid "Turn Off" msgstr "Vypnúť" #: js/ui/kbdA11yDialog.js:67 msgid "Leave Off" msgstr "Ponechať vypnuté" #: js/ui/keyboard.js:180 js/ui/status/keyboard.js:897 msgid "Keyboard Settings" msgstr "Nastavenia klávesnice" #: js/ui/lookingGlass.js:727 msgid "No extensions installed" msgstr "Žiadne nainštalované rozšírenia" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:788 #, javascript-format #| msgid "%s has not emitted any errors." msgid "%s has not emitted any errors" msgstr "%s nevyslal žiadnu chybu" #: js/ui/lookingGlass.js:794 msgid "Hide Errors" msgstr "Skryť chyby" #: js/ui/lookingGlass.js:798 js/ui/lookingGlass.js:875 msgid "Show Errors" msgstr "Zobraziť chyby" #: js/ui/lookingGlass.js:807 msgid "Active" msgstr "Aktívne" #: js/ui/lookingGlass.js:810 msgid "Inactive" msgstr "Neaktívne" #: js/ui/lookingGlass.js:812 msgid "Error" msgstr "Chyba" #: js/ui/lookingGlass.js:814 msgid "Out of date" msgstr "Neaktuálne" #: js/ui/lookingGlass.js:816 msgid "Downloading" msgstr "Sťahuje sa" #: js/ui/lookingGlass.js:818 msgid "Deactivating" msgstr "Deaktivujem" #: js/ui/lookingGlass.js:820 msgid "Activating" msgstr "Aktivujem" # PK: ide tu o zdrojovy kod? #: js/ui/lookingGlass.js:853 msgid "View Source" msgstr "Zobraziť zdroj" #: js/ui/lookingGlass.js:864 msgid "Web Page" msgstr "Webová stránka" #: js/ui/main.js:277 msgid "System was put in unsafe mode" msgstr "Systém prešiel do nezabezpečeného režimu" #: js/ui/main.js:278 msgid "Apps now have unrestricted access" msgstr "Aplikácie teraz majú neobmedzený prístup" #: js/ui/main.js:338 msgid "Logged in as a privileged user" msgstr "Prihlásený ako privilegovaný používateľ" #: js/ui/main.js:339 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" "Spusteniu relácie pod privilegovaným používateľom by sa malo z " "bezpečnostných dôvodov zabrániť. Ak je to možné, mali by ste sa prihlásiť " "ako normálny používateľ." #: js/ui/main.js:387 msgid "Screen Lock disabled" msgstr "Uzamknutie obrazovky je zakázané" #: js/ui/main.js:388 #| msgid "Screen Locking requires the GNOME display manager." msgid "Screen Locking requires the GNOME display manager" msgstr "Uzamykanie obrazovky vyžaduje správcu displejov prostredia GNOME" #. Translators: this is the string displayed in the header when a message #. source doesn't have a name #: js/ui/messageList.js:374 msgid "Unknown App" msgstr "Neznáma aplikácia" #: js/ui/messageTray.js:326 js/ui/messageTray.js:328 msgid "Notification sound" msgstr "Zvuk oznámenia" #: js/ui/mpris.js:198 msgid "Unknown artist" msgstr "Neznámy interpret" #: js/ui/mpris.js:208 msgid "Unknown title" msgstr "Neznámy názov" # hint_text #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:328 msgid "Type to search" msgstr "Zadajte text na vyhľadanie" #: js/ui/overviewControls.js:392 msgid "Apps" msgstr "Aplikácie" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:33 msgid "Overview" msgstr "Prehľad" #: js/ui/padOsd.js:98 msgid "New shortcut…" msgstr "Nová skratka…" #: js/ui/padOsd.js:151 msgid "App defined" msgstr "Definované aplikáciou" #: js/ui/padOsd.js:152 msgid "Show on-screen help" msgstr "Zobraziť pomocníka na obrazovke" #: js/ui/padOsd.js:153 msgid "Switch monitor" msgstr "Prepnúť monitor" #: js/ui/padOsd.js:154 msgid "Assign keystroke" msgstr "Priradiť kláves" #: js/ui/padOsd.js:223 msgid "Done" msgstr "Dokončiť" #: js/ui/padOsd.js:726 msgid "Edit…" msgstr "Upraviť…" #: js/ui/padOsd.js:773 msgid "None" msgstr "Žiadne" #: js/ui/padOsd.js:844 msgid "Press a button to configure" msgstr "Stlačte kláves na spustenie konfigurácie" #: js/ui/padOsd.js:845 msgid "Press Esc to exit" msgstr "Stlačte kláves Esc na skončenie" #: js/ui/padOsd.js:848 msgid "Press any key to exit" msgstr "Stlačte akýkoľvek kláves na skončenie" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:423 msgid "Activities" msgstr "Aktivity" #: js/ui/panel.js:504 msgctxt "System menu in the top bar" msgid "System" msgstr "Systém" #: js/ui/panel.js:678 msgid "Top Bar" msgstr "Horná lišta" #: js/ui/quickSettings.js:188 msgid "Open menu" msgstr "Otvoriť ponuku" # dialog title #: js/ui/runDialog.js:61 msgid "Run a Command" msgstr "Spustenie príkazu" #: js/ui/runDialog.js:76 msgid "Press ESC to close" msgstr "Stlačte kláves ESC na zavretie" #: js/ui/runDialog.js:241 msgid "Restart is not available on Wayland" msgstr "Reštart nie je dostupný s protokolom Wayland" #: js/ui/runDialog.js:246 msgid "Restarting…" msgstr "Reštartuje sa…" #: js/ui/screenShield.js:233 msgid "GNOME needs to lock the screen" msgstr "Prostredie GNOME vyžaduje uzamknutie obrazovky" #: js/ui/screenShield.js:274 js/ui/screenShield.js:667 msgid "Unable to lock" msgstr "Nepodarilo sa uzamknúť obrazovku" #: js/ui/screenShield.js:275 js/ui/screenShield.js:668 msgid "Lock was blocked by an app" msgstr "Uzamknutie bolo zablokované aplikáciou" #: js/ui/screenshot.js:1252 msgid "Selection" msgstr "Výber" #: js/ui/screenshot.js:1262 msgid "Area Selection" msgstr "Výber oblasti" #: js/ui/screenshot.js:1267 msgid "Screen" msgstr "Obrazovka" #: js/ui/screenshot.js:1277 msgid "Screen Selection" msgstr "Výber obrazovky" #: js/ui/screenshot.js:1282 msgid "Window" msgstr "Okno" #: js/ui/screenshot.js:1292 msgid "Window Selection" msgstr "Výber okna" #. Translators: entry in the window right click menu. #: js/ui/screenshot.js:1317 js/ui/status/system.js:111 js/ui/windowMenu.js:28 msgid "Take Screenshot" msgstr "Zachytiť snímku obrazovky" #: js/ui/screenshot.js:1333 msgid "Record Screen" msgstr "Nahrať obrazovku" #. Translators: since this string refers to an action, #. it needs to be phrased as a verb. #: js/ui/screenshot.js:1350 msgid "Capture" msgstr "Zachytenie" # tooltip #: js/ui/screenshot.js:1372 msgid "Show Pointer" msgstr "Zobrazí ukazovateľ" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1996 msgid "Screencasts" msgstr "Záznamy obrazovky" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast From 07-17-2013 10:00:46 PM" #: js/ui/screenshot.js:2001 #, no-c-format #| msgid "Screencast from %d %t" msgid "Screencast From %d %t" msgstr "Záznam obrazovky z dňa %d %t" #. Translators: notification title. #: js/ui/screenshot.js:2047 msgid "Screencast recorded" msgstr "Záznam obrazovky zaznamenaný" #. Translators: notification title. #: js/ui/screenshot.js:2060 msgid "Screencast failed to start" msgstr "Nepodarilo sa spustiť záznam obrazovky" #. Translators: notification title. #: js/ui/screenshot.js:2066 msgid "Screencast ended: Out of disk space" msgstr "Záznam obrazovky skončil: došlo miesto na disku" #. We can encourage user to try again on service crashes since the #. recorder will auto-blocklist the pipeline that crashed. #. Translators: notification title. #: js/ui/screenshot.js:2072 msgid "Screencast ended unexpectedly, please try again" msgstr "Záznam obrazovky neočakávane skončil, skúste to prosím znovu" #. Translators: notification title. #: js/ui/screenshot.js:2075 msgid "Screencast ended unexpectedly" msgstr "Záznam obrazovky neočakávane skončil" #. Translators: notification source name. #: js/ui/screenshot.js:2085 js/ui/screenshot.js:2327 msgid "Screenshot" msgstr "Snímka obrazovky" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:2092 msgid "Click here to view the video." msgstr "Kliknutím sem zobrazíte video." #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:2100 js/ui/screenshot.js:2343 msgid "Show in Files" msgstr "Zobraziť v aplikácii Súbory" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2287 #, javascript-format #| msgid "Screenshot from %s" msgid "Screenshot From %s" msgstr "Snímka obrazovky z dňa %s" #. Translators: notification title. #: js/ui/screenshot.js:2333 msgid "Screenshot captured" msgstr "Snímka obrazovky zachytená" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2335 msgid "You can paste the image from the clipboard." msgstr "Môžete vložiť obrázok zo schránky." #: js/ui/screenshot.js:2391 js/ui/screenshot.js:2555 msgid "Screenshot taken" msgstr "Snímka obrazovky bola zachytená" #: js/ui/search.js:829 msgid "Searching…" msgstr "Hľadá sa…" #: js/ui/search.js:831 #| msgid "No results." msgid "No results" msgstr "Žiadne výsledky" #: js/ui/search.js:962 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "%d ďalších" msgstr[1] "%d ďalší" msgstr[2] "%d ďalšie" #: js/ui/searchController.js:87 #: subprojects/extensions-app/data/ui/extensions-window.ui:73 msgid "Search" msgstr "Hľadať" #: js/ui/shellEntry.js:21 msgid "Copy" msgstr "Kopírovať" #: js/ui/shellEntry.js:26 msgid "Paste" msgstr "Prilepiť" #: js/ui/shellEntry.js:78 msgid "Show Text" msgstr "Zobraziť text" #: js/ui/shellEntry.js:80 msgid "Hide Text" msgstr "Skryť text" #: js/ui/shellEntry.js:174 #| msgid "Caps lock is on." msgid "Caps lock is on" msgstr "Je zapnutá funkcia Caps Lock" #: js/ui/shellMountOperation.js:286 msgid "Hidden Volume" msgstr "Skrytý zväzok" #: js/ui/shellMountOperation.js:289 msgid "Windows System Volume" msgstr "Zväzok so systémom Windows" #: js/ui/shellMountOperation.js:292 msgid "Uses Keyfiles" msgstr "Využíva kľúčové súbory" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:300 #, javascript-format #| msgid "" #| "To unlock a volume that uses keyfiles, use the %s utility instead." msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead" msgstr "Na odomknutie zväzku s kľúčovými súbormi použite nástroj %s" #: js/ui/shellMountOperation.js:304 #| msgid "" #| "You need an external utility like Disks to unlock a volume that " #| "uses keyfiles." msgid "" "You need an external utility like Disks to unlock a volume that uses " "keyfiles" msgstr "" "Na odomknutie zväzku, ktorá využíva kľúčové súbory potrebujete externú " "aplikáciu ako Disky" #: js/ui/shellMountOperation.js:312 msgid "PIM Number" msgstr "Číslo PIM" #: js/ui/shellMountOperation.js:371 msgid "Remember Password" msgstr "Zapamätať heslo" #: js/ui/shellMountOperation.js:386 msgid "Unlock" msgstr "Odomknúť" # DK: doplnil som slovo "programu", aby to znelo prirodzenejsie. priklad:po pripojeni USB kluca bolo zobrazene "Otvoriť pomocou Súbory" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:400 #, javascript-format msgid "Open %s" msgstr "Otvoriť %s" #: js/ui/shellMountOperation.js:436 #| msgid "The PIM must be a number or empty." msgid "The PIM must be a number or empty" msgstr "PIM musí byť číslo alebo prázdne" #: js/ui/status/accessibility.js:34 msgid "Accessibility" msgstr "Zjednodušenie ovládania" #: js/ui/status/accessibility.js:44 msgid "High Contrast" msgstr "Vysoký kontrast" #: js/ui/status/accessibility.js:47 msgid "Zoom" msgstr "Lupa" #: js/ui/status/accessibility.js:54 msgid "Screen Reader" msgstr "Čítačka obrazovky" #: js/ui/status/accessibility.js:58 msgid "Screen Keyboard" msgstr "Klávesnica na obrazovke" #: js/ui/status/accessibility.js:62 msgid "Visual Alerts" msgstr "Vizuálne varovania" # z gnome control center #: js/ui/status/accessibility.js:66 msgid "Sticky Keys" msgstr "Lepkavé klávesy" # z gnome control center #: js/ui/status/accessibility.js:70 msgid "Slow Keys" msgstr "Pomalé klávesy" # z gnome control center #: js/ui/status/accessibility.js:74 msgid "Bounce Keys" msgstr "Poskakujúce klávesy" #: js/ui/status/accessibility.js:78 msgid "Mouse Keys" msgstr "Myš klávesmi" #: js/ui/status/accessibility.js:83 msgid "Accessibility Settings" msgstr "Nastavenia zjednodušenia ovládania" #: js/ui/status/accessibility.js:140 msgid "Large Text" msgstr "Veľký text" #: js/ui/status/autoRotate.js:14 msgid "Auto Rotate" msgstr "Automaticky otáčať" #: js/ui/status/backgroundApps.js:156 msgctxt "title" msgid "Background Apps" msgstr "Aplikácie na pozadí" #: js/ui/status/backgroundApps.js:171 msgid "Apps known to be running without a window" msgstr "Známe aplikácie, ktoré sa spúšťajú bez okna" #: js/ui/status/backgroundApps.js:182 msgid "App Settings" msgstr "Nastavenia aplikácií" #: js/ui/status/backgroundApps.js:239 msgid "No Background Apps" msgstr "Žiadne aplikácie na pozadí" #: js/ui/status/backgroundApps.js:241 #, javascript-format msgid "%d Background App" msgid_plural "%d Background Apps" msgstr[0] "%d aplikácií na pozadí" msgstr[1] "%d aplikácia na pozadí" msgstr[2] "%d aplikácie na pozadí" #: js/ui/status/backlight.js:39 msgid "Keyboard Brightness" msgstr "Jas klávesnice" # DK: pripojenie, zariadenie #: js/ui/status/backlight.js:79 msgid "Off" msgstr "Vypnuté" #: js/ui/status/backlight.js:80 msgid "Low" msgstr "Nízky" #: js/ui/status/backlight.js:81 msgid "High" msgstr "Vysoký" #: js/ui/status/backlight.js:147 js/ui/status/keyboard.js:879 msgid "Keyboard" msgstr "Klávesnica" #: js/ui/status/bluetooth.js:245 js/ui/status/network.js:360 msgid "Disconnect" msgstr "Odpojiť" #: js/ui/status/bluetooth.js:262 js/ui/status/bluetooth.js:264 msgid "Bluetooth" msgstr "Bluetooth" #: js/ui/status/bluetooth.js:287 js/ui/status/network.js:1900 msgid "Bluetooth Settings" msgstr "Nastavenia Bluetooth" #: js/ui/status/bluetooth.js:334 msgid "No available or connected devices" msgstr "Žiadne dostupné alebo pripojené zariadenia" #: js/ui/status/bluetooth.js:335 msgid "Turn on Bluetooth to connect to devices" msgstr "Zapnutím Bluetooth sa pripojíte k zariadeniam" #. Translators: This is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:389 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d pripojených" msgstr[1] "%d pripojený" msgstr[2] "%d pripojené" #: js/ui/status/brightness.js:32 msgid "Brightness" msgstr "Jas" #: js/ui/status/darkMode.js:12 msgid "Dark Style" msgstr "Tmavý štýl" #: js/ui/status/dwellClick.js:15 msgid "Single Click" msgstr "Jednoduché kliknutie" #: js/ui/status/dwellClick.js:20 msgid "Double Click" msgstr "Dvojité kliknutie" #: js/ui/status/dwellClick.js:25 msgid "Drag" msgstr "Ťahanie" #: js/ui/status/dwellClick.js:30 msgid "Secondary Click" msgstr "Druhotné kliknutie" #: js/ui/status/dwellClick.js:39 msgid "Dwell Click" msgstr "Kliknutie zotrvaním" # menu item #: js/ui/status/keyboard.js:896 msgid "Show Keyboard Layout" msgstr "Zobraziť rozloženie klávesnice" # dialog title #: js/ui/status/location.js:337 msgid "Allow location access" msgstr "Umožnenie prístupu k umiestneniu" #. Translators: %s is an application name #: js/ui/status/location.js:339 #, javascript-format msgid "The app %s wants to access your location" msgstr "Aplikácia %s chce získať prístup k vášmu umiestneniu" #: js/ui/status/location.js:349 #| msgid "" #| "Location access can be changed at any time from the privacy settings." msgid "Location access can be changed at any time from the privacy settings" msgstr "Prístup k umiestneniu sa dá kedykoľvek zmeniť v nastaveniach súkromia" #: js/ui/status/location.js:357 msgid "Deny Access" msgstr "Odmietnuť prístup" #: js/ui/status/location.js:362 msgid "Grant Access" msgstr "Udeliť prístup" # zariadenie #: js/ui/status/network.js:62 msgid "" msgstr "" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:354 #, javascript-format msgid "Disconnect %s" msgstr "Odpojiť zariadenie %s" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:356 #, javascript-format msgid "Connect to %s" msgstr "Pripojiť k zariadeniu %s" #: js/ui/status/network.js:1050 msgid "Secure" msgstr "Zabezpečená" #: js/ui/status/network.js:1050 msgid "Not secure" msgstr "Nezabezpečená" #: js/ui/status/network.js:1051 #, javascript-format msgid "Signal strength %s%%" msgstr "Sila signálu %s%%" #. translators: The first placeholder is the network name, the second and indication whether it is secure, and the last the signal strength indication #: js/ui/status/network.js:1053 #, javascript-format msgid "%s, %s, %s" msgstr "%s, %s, %s" #. Translators: %s is a network identifier #: js/ui/status/network.js:1155 #, javascript-format msgid "%s Hotspot" msgstr "Aktívny bod %s" #: js/ui/status/network.js:1426 #, javascript-format msgid "%d connected" msgid_plural "%d connected" msgstr[0] "%d pripojených" msgstr[1] "%d pripojený" msgstr[2] "%d pripojené" #: js/ui/status/network.js:1524 js/ui/status/network.js:1540 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1525 msgid "VPN Settings" msgstr "Nastavenia VPN" #: js/ui/status/network.js:1785 msgid "Wi–Fi" msgstr "Wi–Fi" #: js/ui/status/network.js:1787 msgid "All Networks" msgstr "Všetky siete" #: js/ui/status/network.js:1884 msgid "Wired Connections" msgstr "Drôtové pripojenia" #: js/ui/status/network.js:1885 msgid "Wired Settings" msgstr "Nastavenia drôtovej siete" #: js/ui/status/network.js:1899 msgid "Bluetooth Tethers" msgstr "Sprístupnenie cez Bluetooth" #. Translators: "Tether" from "Bluetooth Tether" #: js/ui/status/network.js:1906 msgid "Tether" msgstr "Sprístupnenie" #: js/ui/status/network.js:1919 msgid "Mobile Connections" msgstr "Mobilné pripojenia" #: js/ui/status/network.js:1921 msgid "Mobile Broadband Settings" msgstr "Nastavenia mobilnej širokopásmovej siete" #. Translators: "Mobile" from "Mobile Broadband" #: js/ui/status/network.js:1930 msgid "Mobile" msgstr "Mobilné" #: js/ui/status/network.js:1964 #| msgid "Wi-Fi Networks" msgid "Sign Into Wi–Fi Network" msgstr "Prihláste sa do siete Wi-Fi" #: js/ui/status/network.js:2151 msgid "Connection failed" msgstr "Pripojenie zlyhalo" #: js/ui/status/network.js:2152 msgid "Activation of network connection failed" msgstr "Aktivácia pripojenia k sieti zlyhala" #: js/ui/status/nightLight.js:19 msgid "Night Light" msgstr "Nočné osvetlenie" #: js/ui/status/powerProfiles.js:19 msgctxt "Power profile" msgid "Performance" msgstr "Výkon" #: js/ui/status/powerProfiles.js:24 msgctxt "Power profile" msgid "Balanced" msgstr "Vyvážený" #: js/ui/status/powerProfiles.js:29 msgctxt "Power profile" msgid "Power Saver" msgstr "Šetrič energie" #: js/ui/status/powerProfiles.js:39 js/ui/status/powerProfiles.js:69 msgid "Power Mode" msgstr "Režim napájania" #: js/ui/status/powerProfiles.js:71 msgid "Power Settings" msgstr "Nastavenia napájania" #: js/ui/status/remoteAccess.js:74 msgid "Stop Screencast" msgstr "Zastaviť záznam obrazovky" #: js/ui/status/remoteAccess.js:144 msgid "Stop Screen Sharing" msgstr "Zastaviť sprístupnenie obrazovky" #: js/ui/status/rfkill.js:99 msgid "Airplane Mode" msgstr "Režim v lietadle" #: js/ui/status/system.js:168 msgid "Power Off Menu" msgstr "Ponuka vypnutia" #: js/ui/status/system.js:176 msgid "Suspend" msgstr "Uspať" #: js/ui/status/system.js:181 msgid "Restart…" msgstr "Reštartovať…" #: js/ui/status/system.js:186 msgid "Power Off…" msgstr "Vypnúť…" #: js/ui/status/system.js:193 #: subprojects/extensions-app/data/ui/extensions-window.ui:124 msgid "Log Out…" msgstr "Odhlásiť sa…" #: js/ui/status/system.js:198 msgid "Switch User…" msgstr "Prepnúť používateľa…" #: js/ui/status/system.js:242 msgctxt "action" msgid "Lock Screen" msgstr "Uzamknúť obrazovku" #: js/ui/status/thunderbolt.js:308 msgid "Unknown Thunderbolt device" msgstr "Neznáme zariadenie Thunderbolt" #: js/ui/status/thunderbolt.js:309 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" "Počas vašej neprítomnosti bolo zistené nové zariadenie. Prosím, odpojte a " "znovu pripojte zariadenie, aby ste ho mohli začať používať." #: js/ui/status/thunderbolt.js:312 msgid "Unauthorized Thunderbolt device" msgstr "Zariadenie Thunderbolt s neoverenou totožnosťou" #: js/ui/status/thunderbolt.js:313 #| msgid "" #| "New device has been detected and needs to be authorized by an " #| "administrator." msgid "" "New device has been detected and needs to be authorized by an administrator" msgstr "" "Bolo zistené nové zariadenie a vyžaduje overenie totožnosti od správcu" #: js/ui/status/thunderbolt.js:319 msgid "Thunderbolt authorization error" msgstr "Chyba pri overovaní totožnosti zariadenia Thunderbolt" #: js/ui/status/thunderbolt.js:320 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "Nepodarilo sa overiť totožnosť zariadenia Thunderbolt: %s" #: js/ui/status/volume.js:218 msgid "Volume changed" msgstr "Hlasitosť bola zmenená" #: js/ui/status/volume.js:231 msgid "Unmute" msgstr "Obnoviť zvuk" #: js/ui/status/volume.js:231 msgid "Mute" msgstr "Stlmiť" #: js/ui/status/volume.js:286 msgid "Volume" msgstr "Hlasitosť" #: js/ui/status/volume.js:302 msgid "Sound Output" msgstr "Zvukový výstup" #: js/ui/status/volume.js:374 msgid "Sound Input" msgstr "Zvukový vstup" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:20 msgid "Mirror" msgstr "Zrkadliť" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:29 msgid "Join Displays" msgstr "Zlúčiť displeje" #. Translators: this is for using only external displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:39 msgid "External Only" msgstr "Iba externý" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:47 msgid "Built-in Only" msgstr "Iba vstavaný" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:378 msgid "%A %B %-d" msgstr "%A, %e. %B" #: js/ui/unlockDialog.js:384 msgid "Swipe up to unlock" msgstr "Odomknete potiahnutím nahor" #: js/ui/unlockDialog.js:385 msgid "Click or press a key to unlock" msgstr "Odomknete kliknutím alebo stlačením klávesy" #: js/ui/unlockDialog.js:568 msgid "Unlock Window" msgstr "Odomykacie okno" #: js/ui/unlockDialog.js:577 msgid "Log in as another user" msgstr "Prihlásiť ako iný používateľ" #: js/ui/welcomeDialog.js:47 #, javascript-format msgid "GNOME %s" msgstr "GNOME %s" #: js/ui/welcomeDialog.js:51 #, javascript-format msgid "Welcome to %s" msgstr "Vitajte v %s" #: js/ui/welcomeDialog.js:52 #| msgid "If you want to learn your way around, check out the tour." msgid "If you want to learn your way around, check out the tour" msgstr "Ak sa chcete zorientovať, vyskúšajte prehliadku" #: js/ui/welcomeDialog.js:61 msgid "Skip" msgstr "Preskočiť" #: js/ui/welcomeDialog.js:66 msgid "Take Tour" msgstr "Zúčastniť sa prehliadky" # %s je totiž titulok okna # informacna bublina #: js/ui/windowAttentionHandler.js:18 #, javascript-format msgid "“%s” is ready" msgstr "Aplikácia „%s“ je pripravená" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:68 msgid "Keep these display settings?" msgstr "Ponechať nastavenia displeja?" #: js/ui/windowManager.js:78 msgid "Revert Settings" msgstr "Vrátiť nastavenia" #: js/ui/windowManager.js:83 msgid "Keep Changes" msgstr "Uchovať zmeny" #: js/ui/windowManager.js:103 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "Zmeny nastavení budú vrátené o %d sekúnd" msgstr[1] "Zmeny nastavení budú vrátené o %d sekundu" msgstr[2] "Zmeny nastavení budú vrátené o %d sekundy" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:500 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:40 msgid "Hide" msgstr "Skryť" #: js/ui/windowMenu.js:47 msgid "Restore" msgstr "Obnoviť" #: js/ui/windowMenu.js:51 msgid "Maximize" msgstr "Maximalizovať" #: js/ui/windowMenu.js:58 msgid "Move" msgstr "Presunúť" #: js/ui/windowMenu.js:78 msgid "Resize" msgstr "Zmeniť veľkosť" #: js/ui/windowMenu.js:98 msgid "Always on Top" msgstr "Vždy navrchu" #: js/ui/windowMenu.js:117 msgid "Always on Visible Workspace" msgstr "Vždy vo viditeľnom pracovnom priestore" #: js/ui/windowMenu.js:131 msgid "Move to Workspace Left" msgstr "Presunúť do ľavého pracovného priestoru" #: js/ui/windowMenu.js:137 msgid "Move to Workspace Right" msgstr "Presunúť do pravého pracovného priestoru" #: js/ui/windowMenu.js:143 msgid "Move to Workspace Up" msgstr "Presunúť do vyššieho pracovného priestoru" #: js/ui/windowMenu.js:149 msgid "Move to Workspace Down" msgstr "Presunúť do nižšieho pracovného priestoru" #: js/ui/windowMenu.js:167 msgid "Move to Monitor Up" msgstr "Presunúť na monitor vyššie" #: js/ui/windowMenu.js:176 msgid "Move to Monitor Down" msgstr "Presunúť na monitor nižšie" #: js/ui/windowMenu.js:185 msgid "Move to Monitor Left" msgstr "Presunúť na monitor vľavo" #: js/ui/windowMenu.js:194 msgid "Move to Monitor Right" msgstr "Presunúť na monitor vpravo" #: js/ui/windowMenu.js:202 msgid "Close" msgstr "Zavrieť" #: src/main.c:527 subprojects/extensions-tool/src/main.c:336 msgid "Print version" msgstr "Verzia pre tlač" #: src/main.c:533 msgid "Mode used by GDM for login screen" msgstr "Režim používaný správcom GDM pre prihlasovaciu obrazovku" #: src/main.c:539 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "Použitie zvláštneho režimu, napr. „gdm“ pre prihlasovaciu obrazovku" #: src/main.c:545 msgid "List possible modes" msgstr "Zoznam možných režimov" #: src/main.c:551 msgid "Force animations to be enabled" msgstr "Vynúti zapnutie animácií" #: src/shell-app.c:252 msgctxt "program" msgid "Unknown" msgstr "Neznámy" #: src/shell-app.c:503 #, c-format msgid "Failed to launch “%s”" msgstr "Zlyhalo spustenie „%s“" #: src/shell-keyring-prompt.c:764 #| msgid "Passwords do not match." msgid "Passwords do not match" msgstr "Heslá sa nezhodujú" #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "Heslo nemôže byť prázdne" # rovnaký reťazec ako v PolicyKit-gnome #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "Dialógové okno overenia totožnosti bolo zatvorené používateľom" #: src/st/st-icon-theme.c:1865 #, c-format msgid "Icon '%s' not present in theme %s" msgstr "Ikona „%s“ nie je prítomná v motíve %s" #: src/st/st-icon-theme.c:3454 src/st/st-icon-theme.c:3757 msgid "Failed to load icon" msgstr "Zlyhalo načítanie ikony" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 msgid "Manage your GNOME Extensions" msgstr "Spravuje vaše rozšírenia prostredia GNOME" #. developer_name tag deprecated with Appstream 1.0 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:19 msgid "The GNOME Project" msgstr "Projekt GNOME" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:51 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" "Rozšírenia prostredia GNOME spravujú aktualizácie rozšírení, konfiguráciu " "predvolieb rozšírení a odstraňovanie alebo zakázanie nechcených rozšírení." #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:64 msgid "Main Window" msgstr "Hlavné okno" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:68 msgid "Available Updates" msgstr "Dostupné aktualizácie" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:72 msgid "Search View" msgstr "Zobrazenie vyhľadávania" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "Nastavenie rozšírení pre Shell prostredia GNOME" #: subprojects/extensions-app/js/extensionManager.js:237 #, javascript-format msgid "" "The installed version of this extension (%s) is incompatible with the " "current version of GNOME (%s). The extension has been disabled." msgstr "" "Nainštalovaná verzia tohto rozšírenia (%s) nie je kompatibilná s aktuálnou " "verziou GNOME (%s). Rozšírenie bolo vypnuté." #: subprojects/extensions-app/js/extensionManager.js:238 #, javascript-format msgid "" "The installed version of this extension is incompatible with the current " "version of GNOME (%s). The extension has been disabled." msgstr "" "Nainštalovaná verzia tohto rozšírenia nie je kompatibilná s aktuálnou " "verziou prostredia GNOME (%s). Rozšírenie bolo vypnuté." #: subprojects/extensions-app/js/extensionManager.js:242 msgid "" "An error has occurred in this extension. This could cause issues elsewhere " "in the system. It is recommended to turn the extension off until the error " "is resolved." msgstr "" "V tomto rozšírení nastala chyba. Toto by mohlo spôsobiť problémy inde v " "systéme. Kým nebude chyba opravená, odporúčame rozšírenie vypnúť." #. translators: Details for an extension error #: subprojects/extensions-app/js/extensionManager.js:248 msgid "Error details:" msgstr "Podrobnosti o chybe:" #: subprojects/extensions-app/js/extensionRow.js:82 #, javascript-format msgid "Version %s" msgstr "Verzia %s" #: subprojects/extensions-app/js/extensionsWindow.js:113 #, javascript-format msgid "Remove “%s”?" msgstr "Odstrániť rozšírenie „%s“?" #: subprojects/extensions-app/js/extensionsWindow.js:114 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "" "Ak odstránite rozšírenie, budete ho musieť pre jeho opätovné povolenie znovu " "prevziať." #: subprojects/extensions-app/js/extensionsWindow.js:117 msgid "_Cancel" msgstr "_Zrušiť" #: subprojects/extensions-app/js/extensionsWindow.js:118 msgid "_Remove" msgstr "O_dstrániť" #: subprojects/extensions-app/js/extensionsWindow.js:158 msgid "translator-credits" msgstr "Dušan Kazik " #: subprojects/extensions-app/js/extensionsWindow.js:203 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "%d rozšírení bude aktualizovaných po najbližšom prihlásení." msgstr[1] "%d rozšírenie bude aktualizované po najbližšom prihlásení." msgstr[2] "%d rozšírenia budú aktualizované po najbližšom prihlásení." #: subprojects/extensions-app/data/ui/extension-row.ui:22 msgid "Error Details" msgstr "Podrobnosti o chybe" #: subprojects/extensions-app/data/ui/extension-row.ui:62 msgid "Updates Details" msgstr "Podrobnosti o aktualizácii" #: subprojects/extensions-app/data/ui/extension-row.ui:72 msgid "" "A new version of this extension is ready and will be loaded on next login." msgstr "" "Nová verzia tohto rozšírenia je pripravená a načíta sa pri ďalšom prihlásení." #: subprojects/extensions-app/data/ui/extension-row.ui:104 msgid "Extension Details" msgstr "Podrobnosti o rozšírení" #: subprojects/extensions-app/data/ui/extension-row.ui:192 msgid "_Website" msgstr "_Webová stránka" #: subprojects/extensions-app/data/ui/extension-row.ui:219 msgid "_Settings" msgstr "_Nastavenia" #: subprojects/extensions-app/data/ui/extension-row.ui:246 msgid "_Remove…" msgstr "O_dstrániť…" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Keyboard Shortcuts" msgstr "Klávesové skratky" # summary #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "O aplikácii Rozšírenia" # MČ" zd sa mi to čudné. tuším som videl preklady „oznamovacia oblasť“, čo mi viac sedí. Toto je trošku akoby zavádzajúce, ale možno to s okolím ozrejmuje výsledok. Možno by som tam ponechal len „ponuka“ ak akolie jednoznačne naznačuje, že ide o „lištu správ“ #: subprojects/extensions-app/data/ui/extensions-window.ui:64 msgid "Main Menu" msgstr "Hlavná ponuka" #: subprojects/extensions-app/data/ui/extensions-window.ui:106 msgid "Search extensions" msgstr "Hľadať rozšírenia" #: subprojects/extensions-app/data/ui/extensions-window.ui:134 msgid "_Extensions" msgstr "_Rozšírenia" #: subprojects/extensions-app/data/ui/extensions-window.ui:139 msgid "More Information" msgstr "Viac informácií" #: subprojects/extensions-app/data/ui/extensions-window.ui:151 msgid "" "Extensions can cause performance and stability issues. It is recommended to " "disable all extensions if you experience problems with your system." msgstr "" "Rozšírenia môžu spôsobiť problémy s výkonom a stabilitou. Ak narazíte na " "problémy s vaším systémom, všetky rozšírenia vypnite." #: subprojects/extensions-app/data/ui/extensions-window.ui:178 msgid "User Extensions" msgstr "Používateľské rozšírenia" # summary #: subprojects/extensions-app/data/ui/extensions-window.ui:198 msgid "System Extensions" msgstr "Systémové rozšírenia" #: subprojects/extensions-app/data/ui/extensions-window.ui:233 msgid "Search Results" msgstr "Výsledky hľadania" #: subprojects/extensions-app/data/ui/extensions-window.ui:252 msgid "No Results Found" msgstr "Neboli nájdené žiadne výsledky" #: subprojects/extensions-app/data/ui/extensions-window.ui:253 #| msgid "Try a different search." msgid "Try a different search" msgstr "Skúste zmeniť hľadaný reťazec" # dialog title #: subprojects/extensions-app/data/ui/extensions-window.ui:264 msgid "No Installed Extensions" msgstr "Žiadne nainštalované rozšírenia" #: subprojects/extensions-app/data/ui/extensions-window.ui:265 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" "Ak chcete nájsť a pridať rozšírenia, navštívte adresu extensions.gnome.org." #: subprojects/extensions-app/data/ui/extensions-window.ui:276 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" "Ospravedlňujeme sa, ale nebolo možné získať zoznam nainštalovaných " "rozšírení. Uistite sa, že ste prihlásený do prostredia GNOME a skúste to " "znovu." #: subprojects/extensions-app/data/ui/help-overlay.ui:9 msgctxt "shortcut window" msgid "General" msgstr "Všeobecné" #: subprojects/extensions-app/data/ui/help-overlay.ui:12 msgctxt "shortcut window" msgid "Open Menu" msgstr "Otvoriť ponuku" #: subprojects/extensions-app/data/ui/help-overlay.ui:18 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Prepnúť hľadanie" #: subprojects/extensions-app/data/ui/help-overlay.ui:24 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Zobraziť skratky" #: subprojects/extensions-app/data/ui/help-overlay.ui:30 msgctxt "shortcut window" msgid "Quit" msgstr "Ukončiť" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:284 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "Nové rozšírenie bolo úspešne vytvorené v %s.\n" #: subprojects/extensions-tool/src/command-create.c:376 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" "Názov by mal byť veľmi krátky (ideálne popisný) reťazec.\n" "Príklady: %s" #: subprojects/extensions-tool/src/command-create.c:382 #: subprojects/extensions-tool/src/main.c:243 msgid "Name" msgstr "Názov" #: subprojects/extensions-tool/src/command-create.c:396 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" "Popis je jedna veta, popisujúca, čo robí Vaše rozšírenie\n" "Príklady: %s" #: subprojects/extensions-tool/src/command-create.c:402 #: subprojects/extensions-tool/src/main.c:246 msgid "Description" msgstr "Popis" #: subprojects/extensions-tool/src/command-create.c:416 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" "UUID je globálne unikátny identifikátor pre Vaše rozšírenie.\n" "Má by vo formáte emailovej adresy (clicktofocus@janedoe.example.com)\n" #: subprojects/extensions-tool/src/command-create.c:443 msgid "Choose one of the available templates:\n" msgstr "Zvoľte jednu z dostupných šablón:\n" #: subprojects/extensions-tool/src/command-create.c:457 msgid "Template" msgstr "Šablóna" #: subprojects/extensions-tool/src/command-create.c:515 msgid "The unique identifier of the new extension" msgstr "Unikátny identifikátor nového rozšírenia" #: subprojects/extensions-tool/src/command-create.c:518 msgid "NAME" msgstr "NÁZOV" #: subprojects/extensions-tool/src/command-create.c:519 msgid "The user-visible name of the new extension" msgstr "Názov nového rozšírenia viditeľný používateľovi" #: subprojects/extensions-tool/src/command-create.c:521 msgid "DESCRIPTION" msgstr "POPIS" #: subprojects/extensions-tool/src/command-create.c:523 msgid "A short description of what the extension does" msgstr "Stručný popis toho, čo robí rozšírenie" #: subprojects/extensions-tool/src/command-create.c:525 #: subprojects/extensions-tool/src/command-pack.c:455 msgid "DOMAIN" msgstr "DOMÉNA" #: subprojects/extensions-tool/src/command-create.c:527 msgid "The gettext domain used by the extension" msgstr "Doména gettext používaná rozšírením" #: subprojects/extensions-tool/src/command-create.c:529 #: subprojects/extensions-tool/src/command-pack.c:448 msgid "SCHEMA" msgstr "SCHÉMA" #: subprojects/extensions-tool/src/command-create.c:531 msgid "The GSettings schema used by the extension" msgstr "Schéma GSettings používaná rozšírením" #: subprojects/extensions-tool/src/command-create.c:534 msgid "TEMPLATE" msgstr "ŠABLÓNA" #: subprojects/extensions-tool/src/command-create.c:535 msgid "The template to use for the new extension" msgstr "Šablóna, ktorá sa má použiť pre nové rozšírenie" #: subprojects/extensions-tool/src/command-create.c:538 msgid "Include prefs.js template" msgstr "Pribaliť šáblónu prefs.js" #: subprojects/extensions-tool/src/command-create.c:544 msgid "Enter extension information interactively" msgstr "Umožní interaktívne zadávanie informácií o rozšírení" # summary #: subprojects/extensions-tool/src/command-create.c:552 msgid "Create a new extension" msgstr "Vytvoriť nové rozšírenie" #: subprojects/extensions-tool/src/command-create.c:570 #: subprojects/extensions-tool/src/command-list.c:190 msgid "Unknown arguments" msgstr "Neznáme parametre" #: subprojects/extensions-tool/src/command-create.c:595 msgid "UUID, name and description are required" msgstr "Vlastnosť UUID, názov a popis sú povinné" #: subprojects/extensions-tool/src/command-disable.c:62 #: subprojects/extensions-tool/src/command-enable.c:62 #, c-format msgid "Extension “%s” does not exist\n" msgstr "Rozšírenie „%s“ neexistuje\n" # summary #: subprojects/extensions-tool/src/command-disable.c:98 msgid "Disable an extension" msgstr "Zakázať rozšírenie" #: subprojects/extensions-tool/src/command-disable.c:116 #: subprojects/extensions-tool/src/command-enable.c:116 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "Nebol zadaný žiadny identifikátor UUID" #: subprojects/extensions-tool/src/command-disable.c:121 #: subprojects/extensions-tool/src/command-enable.c:121 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "Bol zadaný viac ako jeden identifikátor UUID" # summary #: subprojects/extensions-tool/src/command-enable.c:98 msgid "Enable an extension" msgstr "Povoliť rozšírenie" #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:66 #: subprojects/extensions-tool/src/main.c:150 msgid "Failed to connect to GNOME Shell\n" msgstr "Zlyhalo pripojenie k Shellu prostredia GNOME\n" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:159 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "Rozšírenie „%s“ neexistuje\n" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "Zobrazí informácie o rozšíreniach" #: subprojects/extensions-tool/src/command-install.c:190 msgid "Overwrite an existing extension" msgstr "Prepísať existujúce rozšírenie" #: subprojects/extensions-tool/src/command-install.c:192 msgid "EXTENSION_BUNDLE" msgstr "BALÍK_ROZŠÍRENÍ" #: subprojects/extensions-tool/src/command-install.c:201 msgid "Install an extension bundle" msgstr "Nainštaluje balík rozšírení" #: subprojects/extensions-tool/src/command-install.c:219 msgid "No extension bundle specified" msgstr "Nie je určený žiadny balík rozšírení" #: subprojects/extensions-tool/src/command-install.c:225 msgid "More than one extension bundle specified" msgstr "Je určený viac ako jeden balík rozšírení" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show user-installed extensions" msgstr "Zobrazí rozšírenia nainštalované používateľom" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show system-installed extensions" msgstr "Zobrazí systémom nainštalované rozšírenia" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Show enabled extensions" msgstr "Zobrazí zapnuté rozšírenia" # summary #: subprojects/extensions-tool/src/command-list.c:149 msgid "Show disabled extensions" msgstr "Zobrazí vypnuté rozšírenia" #: subprojects/extensions-tool/src/command-list.c:152 msgid "Show extensions in active state" msgstr "Zobrazí rozšírenia v aktívnom stave" #: subprojects/extensions-tool/src/command-list.c:155 msgid "Show extensions in inactive state" msgstr "Zobrazí rozšírenia v neaktívnom stave" #: subprojects/extensions-tool/src/command-list.c:158 msgid "Show extensions with preferences" msgstr "Zobrazí rozšírenia s predvoľbami" #: subprojects/extensions-tool/src/command-list.c:161 msgid "Show extensions with updates" msgstr "Zobrazí rozšírenia s aktualizáciami" #: subprojects/extensions-tool/src/command-list.c:164 msgid "Print extension details" msgstr "Vypíše podrobnosti o rozšírení" # summary #: subprojects/extensions-tool/src/command-list.c:172 msgid "List installed extensions" msgstr "Zoznam nainštalovaných rozšírení" #: subprojects/extensions-tool/src/command-pack.c:444 msgid "FILE" msgstr "SÚBOR" #: subprojects/extensions-tool/src/command-pack.c:445 msgid "Additional source to include in the bundle" msgstr "Dodatočný zdroj, ktorý má byť zahrnutý v balíku" #: subprojects/extensions-tool/src/command-pack.c:449 msgid "A GSettings schema that should be included" msgstr "Schéma GSettings, ktorá by mala byť zahrnutá" #: subprojects/extensions-tool/src/command-pack.c:451 #: subprojects/extensions-tool/src/command-pack.c:462 msgid "DIRECTORY" msgstr "ADRESÁR" #: subprojects/extensions-tool/src/command-pack.c:453 msgid "The directory where translations are found" msgstr "Adresár, v ktorom sa nachádzajú preklady" #: subprojects/extensions-tool/src/command-pack.c:457 msgid "The gettext domain to use for translations" msgstr "Doména gettext použitá pre preklady" #: subprojects/extensions-tool/src/command-pack.c:460 msgid "Overwrite an existing pack" msgstr "Prepíše existujúci balík" #: subprojects/extensions-tool/src/command-pack.c:464 msgid "The directory where the pack should be created" msgstr "Adresár, kde by mal byť vytvorený balík" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "SOURCE_DIRECTORY" msgstr "ZDROJOVÝ_ADRESÁR" #: subprojects/extensions-tool/src/command-pack.c:475 msgid "Create an extension bundle" msgstr "Vytvorí balík rozšírení" #: subprojects/extensions-tool/src/command-pack.c:495 msgid "More than one source directory specified" msgstr "Bol určený viac ako jeden zdrojový adresár" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "Rozšírenie „%s“ neobsahuje predvoľby\n" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "Zlyhalo otvorenie predvolieb rozšírenia „%s“: %s\n" #: subprojects/extensions-tool/src/command-prefs.c:87 msgid "Opens extension preferences" msgstr "Otvorí predvoľby rozšírenia" # summary #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "Obnoví rozšírenie" # summary #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "Nedajú sa odinštalovať systémové rozšírenia\n" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "Zlyhalo odinštalovanie rozšírenia „%s“\n" # summary #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "Odinštalovať rozšírenie" #: subprojects/extensions-tool/src/main.c:76 msgid "Do not print error messages" msgstr "Nevypíše chybové správy" #: subprojects/extensions-tool/src/main.c:249 msgid "Path" msgstr "Cesta" #: subprojects/extensions-tool/src/main.c:252 msgid "URL" msgstr "URL" #: subprojects/extensions-tool/src/main.c:255 msgid "Original author" msgstr "Pôvodný autor" #: subprojects/extensions-tool/src/main.c:261 #: subprojects/extensions-tool/src/main.c:263 #: subprojects/extensions-tool/src/main.c:265 msgid "Version" msgstr "Verzia" #: subprojects/extensions-tool/src/main.c:268 msgid "Enabled" msgstr "Povolené" #: subprojects/extensions-tool/src/main.c:268 msgid "Yes" msgstr "Áno" #: subprojects/extensions-tool/src/main.c:268 msgid "No" msgstr "Nie" #: subprojects/extensions-tool/src/main.c:271 msgid "State" msgstr "Stav" #: subprojects/extensions-tool/src/main.c:309 msgid "“version” takes no arguments" msgstr "Voľba „version“ neprijíma žiadne parametre" #: subprojects/extensions-tool/src/main.c:311 #: subprojects/extensions-tool/src/main.c:331 msgid "Usage:" msgstr "Použitie:" #: subprojects/extensions-tool/src/main.c:314 msgid "Print version information and exit." msgstr "Vypíše informácie o verzii a skončí." #: subprojects/extensions-tool/src/main.c:329 #: subprojects/extensions-tool/src/main.c:332 msgid "COMMAND" msgstr "PRÍKAZ" #: subprojects/extensions-tool/src/main.c:332 msgid "[ARGS…]" msgstr "[PARAMETRE…]" #: subprojects/extensions-tool/src/main.c:334 msgid "Commands:" msgstr "Príkazy:" #: subprojects/extensions-tool/src/main.c:335 msgid "Print help" msgstr "Zobrazí pomocníka" #: subprojects/extensions-tool/src/main.c:337 msgid "Enable extension" msgstr "Povoliť rozšírenie" # summary #: subprojects/extensions-tool/src/main.c:338 msgid "Disable extension" msgstr "Zakázať rozšírenie" # summary #: subprojects/extensions-tool/src/main.c:339 msgid "Reset extension" msgstr "Reštartovať rozšírenie" # summary #: subprojects/extensions-tool/src/main.c:340 msgid "Uninstall extension" msgstr "Odinštalovať rozšírenie" # summary #: subprojects/extensions-tool/src/main.c:341 msgid "List extensions" msgstr "Zoznam rozšírení" #: subprojects/extensions-tool/src/main.c:342 #: subprojects/extensions-tool/src/main.c:343 msgid "Show extension info" msgstr "Zobrazí informácie o rozšírení" #: subprojects/extensions-tool/src/main.c:344 msgid "Open extension preferences" msgstr "Otvorí predvoľby rozšírenia" #: subprojects/extensions-tool/src/main.c:345 msgid "Create extension" msgstr "Vytvoriť rozšírenie" #: subprojects/extensions-tool/src/main.c:346 msgid "Package extension" msgstr "Balík rozšírení" #: subprojects/extensions-tool/src/main.c:347 msgid "Install extension bundle" msgstr "Nainštaluje balík rozšírení" #: subprojects/extensions-tool/src/main.c:349 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "Na získanie podrobnejšieho pomocníka, použite príkaz „%s“.\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "Prázdne" # summary #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "Prázdne rozšírenie" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "Indikátor" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "Pridá ikonu do hornej lišty" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:4 msgid "Quick Settings Item" msgstr "Položka rýchlych nastavení" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:5 msgid "Add an item to quick settings" msgstr "Pridať položku do rýchlych nastavení" #. translators: #. * The device has been disabled #: subprojects/gvc/gvc-mixer-control.c:1872 msgid "Disabled" msgstr "Zakázané" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1879 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u výstup" msgstr[1] "%u výstupy" msgstr[2] "%u výstupov" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1889 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u vstup" msgstr[1] "%u vstupy" msgstr[2] "%u vstupov" #: subprojects/gvc/gvc-mixer-control.c:2872 msgid "System Sounds" msgstr "Systémové zvuky" #~ msgid "Move Titlebar Onscreen" #~ msgstr "Presunúť titulok okna na obrazovku" #~ msgid "Network Manager" #~ msgstr "Správca siete" #, javascript-format #~ msgid "%s is now known as %s" #~ msgstr "Kontakt %s odteraz vystupuje ako %s" #~ msgid "Disabling" #~ msgstr "Zakazuje sa" #~ msgid "Enabling" #~ msgstr "Povoľuje sa" #~ msgid "Thunderbolt" #~ msgstr "Thunderbolt" #~ msgid "No Thanks" #~ msgstr "Nie ďakujem" #~ msgid "No Matches" #~ msgstr "Žiadne zhody" #~ msgid "The extension had an error" #~ msgstr "Rozšírenie narazilo na chybu" #~ msgid "The extension can be updated" #~ msgstr "Rozšírenie môže byť aktualizované" #~ msgid "Help" #~ msgstr "Pomocník" #~ msgid "Manually Installed" #~ msgstr "Ručne nainštalované" #~ msgid "Built-In" #~ msgstr "Vstavané" #~ msgid "Extension Updates Ready" #~ msgstr "Sú pripravené aktualizácie rozšírení" #~ msgid "Screenshot / Screencast" #~ msgstr "Snímka / záznam obrazovky" #, javascript-format #~ msgid "%d %%" #~ msgstr "%d %%" #~ msgid "Attach modal dialog to the parent window" #~ msgstr "Pripojiť modálne dialógové okno k rodičovskému oknu" #~ msgid "" #~ "This key overrides the key in org.gnome.mutter when running GNOME Shell." #~ msgstr "" #~ "Tento kľúč preváži kľúč v org.gnome.mutter po spustení Shellu prostredia " #~ "GNOME." #~ msgid "Enable edge tiling when dropping windows on screen edges" #~ msgstr "" #~ "Povoliť natiahnutie k okraju pri pustení okien na okrajoch obrazovky" #~ msgid "Workspaces are managed dynamically" #~ msgstr "Pracovné priestory sú spravované dynamicky" #~ msgid "Workspaces only on primary monitor" #~ msgstr "Pracovné priestory sú iba na primárnom monitore" # summary #~ msgid "Delay focus changes in mouse mode until the pointer stops moving" #~ msgstr "" #~ "Oneskoriť pohyb zamerania v režime myši, až kým sa ukazovateľ nezastaví" #~ msgid "Region & Language Settings" #~ msgstr "Nastavenia oblasti a jazyka" #~ msgid "Applications" #~ msgstr "Aplikácie" #, javascript-format #~ msgid "Unable to start %s" #~ msgstr "Nepodarilo sa spustiť %s" #, javascript-format #~ msgid "Couldn’t find the %s application" #~ msgstr "Nepodarilo sa nájsť aplikáciu %s" #~ msgid "Evolution Calendar" #~ msgstr "Kalendár Evolution" #~ msgid "" #~ "Whether the default Bluetooth adapter had set up devices associated to it" #~ msgstr "" #~ "Či má predvolený Bluetooth adaptér nastaviť jemu priradené zariadenia" #~ msgid "" #~ "The shell will only show a Bluetooth menu item if a Bluetooth adapter is " #~ "powered, or if there were devices set up associated with the default " #~ "adapter. This will be reset if the default adapter is ever seen not to " #~ "have devices associated to it." #~ msgstr "" #~ "Shell zobrazí položku Bluetooth v ponuke iba vtedy, ak je zapnutý adaptér " #~ "Bluetooth, alebo ak boli zariadenia nastavené a priradené predvolenému " #~ "adaptéru. Táto voľba bude vynulovaná, ak predvolený adaptér nemal nikdy " #~ "priradené zariadenia." #~ msgid "Bluetooth On" #~ msgstr "Bluetooth zapnutý" #~ msgid "Bluetooth Off" #~ msgstr "Bluetooth vypnutý" #~ msgid "Location In Use" #~ msgstr "Používa sa umiestnenie" #~ msgid "Location Disabled" #~ msgstr "Umiestnenie je zakázané" #, javascript-format #~ msgid "%s Off" #~ msgstr "%s vypnuté" #, javascript-format #~ msgid "%s Connected" #~ msgstr "%s pripojené" #, javascript-format #~ msgid "%s Unmanaged" #~ msgstr "%s nespravované" #, javascript-format #~ msgid "%s Connecting" #~ msgstr "Pripája sa %s" #, javascript-format #~ msgid "%s Requires Authentication" #~ msgstr "%s vyžaduje overenie totožnosti" #, javascript-format #~ msgid "Firmware Missing For %s" #~ msgstr "Chýba firmvér pre %s" #, javascript-format #~ msgid "%s Unavailable" #~ msgstr "%s nedostupné" #, javascript-format #~ msgid "%s Connection Failed" #~ msgstr "Pripojenie %s zlyhalo" #, javascript-format #~ msgid "%s Hardware Disabled" #~ msgstr "Hardvér %s zakázaný" #, javascript-format #~ msgid "%s Disabled" #~ msgstr "%s zakázané" #~ msgid "Connect to Internet" #~ msgstr "Pripojiť k internetu" #~ msgid "Airplane Mode is On" #~ msgstr "Režim v lietadle je zapnutý" #~ msgid "Wi-Fi is disabled when airplane mode is on." #~ msgstr "Sieť Wi-Fi je zakázaná, keď je zapnutý režim v lietadle." #~ msgid "Turn Off Airplane Mode" #~ msgstr "Vypnúť režim v lietadle" #~ msgid "Wi-Fi is Off" #~ msgstr "Sieť Wi-Fi je vypnutá" #~ msgid "Wi-Fi needs to be turned on in order to connect to a network." #~ msgstr "Na pripojenie k sieti je potrebné zapnúť sieť Wi-Fi." #~ msgid "Turn On Wi-Fi" #~ msgstr "Zapnúť Wi-Fi" #~ msgid "Select a network" #~ msgstr "Vyberte sieť" #~ msgid "Use hardware switch to turn off" #~ msgstr "Na vypnutie použite hardvérový prepínač" # item menu #~ msgid "Select Network" #~ msgstr "Vybrať sieť" #~ msgid "Wi-Fi Settings" #~ msgstr "Nastavenia siete Wi-Fi" #, javascript-format #~ msgid "%s Not Connected" #~ msgstr "%s nepripojené" #~ msgid "connecting…" #~ msgstr "pripája sa…" #~ msgid "authentication required" #~ msgstr "požaduje sa overenie totožnosti" #~ msgid "connection failed" #~ msgstr "pripojenie zlyhalo" #~ msgid "VPN Off" #~ msgstr "Pripojenie VPN vypnuté" #, javascript-format #~ msgid "%s Wi-Fi Connection" #~ msgid_plural "%s Wi-Fi Connections" #~ msgstr[0] "%s pripojenie k sieti Wi-Fi" #~ msgstr[1] "%s pripojenia k sieti Wi-Fi" #~ msgstr[2] "%s pripojení k sieti Wi-Fi" #~ msgid "Night Light Disabled" #~ msgstr "Nočné osvetlenie zakázané" #~ msgid "Resume" #~ msgstr "Pokračovať" #~ msgid "Disable Until Tomorrow" #~ msgstr "Zakázať do zajtra" #~ msgid "Fully Charged" #~ msgstr "Plne nabité" #~ msgid "Not Charging" #~ msgstr "Nenabíja sa" #~ msgid "Estimating…" #~ msgstr "Odhaduje sa…" #, javascript-format #~ msgid "%d∶%02d Remaining (%d %%)" #~ msgstr "%d:%02d zostáva (%d%%)" #, javascript-format #~ msgid "%d∶%02d Until Full (%d %%)" #~ msgstr "%d:%02d do plného nabitia (%d%%)" #~ msgid "Screen is Being Shared" #~ msgstr "Prebieha zdieľanie obrazovky" #~ msgid "Turn off" #~ msgstr "Vypnúť" #~ msgid "Airplane Mode On" #~ msgstr "Režim v lietadle zapnutý" #~ msgid "Lock" #~ msgstr "Uzamknúť" #~ msgid "Power Off / Log Out" #~ msgstr "Vypnúť / Odhlásiť sa" #~ msgid "Log Out" #~ msgstr "Odhlásiť sa" #~ msgid "Remove from Favorites" #~ msgstr "Odstrániť z obľúbených" #~ msgid "Add to Favorites" #~ msgstr "Pridať do obľúbených" #~ msgid "Author" #~ msgstr "Autor" #~ msgid "Warning" #~ msgstr "Upozornenie" #~ msgid "" #~ "Extensions can cause system issues, including performance problems. If " #~ "you encounter problems with your system, it is recommended to disable all " #~ "extensions." #~ msgstr "" #~ "Rozšírenia môžu spôsobiť problémy so systémom, vrátane problémov s " #~ "výkonom. Ak sa stretnete s problémami s vaším systémom, odporúča sa " #~ "zakázať všetky rozšírenia." #~ msgid "Enable introspection API" #~ msgstr "Povoliť sebapozorovacie API" #~ msgid "" #~ "Enables a D-Bus API that allows to introspect the application state of " #~ "the shell." #~ msgstr "" #~ "Povolí D-Bus API, ktoré umožní sebapozorovanie stavu aplikácie prostredia " #~ "shell." #~ msgid "Failed to connect to GNOME Shell" #~ msgstr "Zlyhalo pripojenie k Shellu prostredia GNOME" #~ msgid "Minimize" #~ msgstr "Minimalizovať" #~ msgid "Unmaximize" #~ msgstr "Zrušiť maximalizáciu" # summary #~ msgid "App Picker View" #~ msgstr "Zobrazenie výberu aplikácií" # desc #~ msgid "Index of the currently selected view in the application picker." #~ msgstr "Číslo aktuálne vybraného zobrazenia vo výbere aplikácií." #~ msgid "Frequently used applications will appear here" #~ msgstr "Tu sa objavia často používané aplikácie" #~ msgid "Frequent" #~ msgstr "Často používané" #~ msgid "All" #~ msgstr "Všetky" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d" #~ msgstr "%A, %e. %B" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d, %Y" #~ msgstr "%A, %e. %B %Y" # režim v lietadle #~ msgid "On" #~ msgstr "Zapnutý" #~ msgid "Copy Error" #~ msgstr "Skopírovať chybu" #~| msgid "Shell Extensions" #~ msgid "org.gnome.Extensions" #~ msgstr "org.gnome.Extensions" #~ msgid "Logout…" #~ msgstr "Odhlásiť sa…" #~ msgid "Next" #~ msgstr "Ďalej" #~ msgctxt "button" #~ msgid "Sign In" #~ msgstr "Prihlásiť sa" #~ msgid "Password: " #~ msgstr "Heslo: " #~ msgid "Enter Password…" #~ msgstr "Zadajte heslo…" # DK: je tento format casu spravne? neviem zistit co ktore premenne znamenaju. # ma sa v preklade zmenit "%e" na "%d" ? # v ostatnych retazcoch je pouzite %e, tak to bude asi OK #~ msgid "%A, %B %d" #~ msgstr "%A, %e. %B" #~ msgid "%d new message" #~ msgid_plural "%d new messages" #~ msgstr[0] "%d nová správa" #~ msgstr[1] "%d nové správy" #~ msgstr[2] "%d nových správ" #~ msgid "Browse in Software" #~ msgstr "Prehliadať v aplikácii Softvér" #~ msgid "Password:" #~ msgstr "Heslo:" #~ msgid "Type again:" #~ msgstr "Zadajte znovu:" #~ msgid "Authentication required by wireless network" #~ msgstr "Bezdrôtová sieť vyžaduje overenie totožnosti" #~ msgid "Mobile broadband network password" #~ msgstr "Heslo k mobilnej širokopásmovej sieti" # action button #~ msgctxt "search-result" #~ msgid "Lock Orientation" #~ msgstr "Uzamknúť orientáciu" #~ msgid "Rename" #~ msgstr "Premenovať" #~ msgid "Account Settings" #~ msgstr "Nastavenia účtu" # action button #~ msgid "Orientation Lock" #~ msgstr "Uzamknutie orientácie" # summary #~ msgid "" #~ "Keybinding that pauses and resumes all running tweens, for debugging " #~ "purposes" #~ msgstr "" #~ "Klávesová skratka, ktorá pozastaví a znovu spustí všetky animácie(tween), " #~ "pre ladiace účely" #~ msgid "Which keyboard to use" #~ msgstr "Ktorú klávesnicu používať" #~ msgid "The type of keyboard to use." #~ msgstr "Typ klávesnice, ktorá sa má používať." #~ msgid "toggle-switch-us" #~ msgstr "toggle-switch-intl" #~ msgid "network-workgroup" #~ msgstr "network-workgroup" #~ msgid "There was an error loading the preferences dialog for %s:" #~ msgstr "Vyskytla sa chyba pri načítavaní dialógového okna nastavení pre %s:" #~ msgid "%s all day." #~ msgstr "%s celý deň." #~ msgid "%s, then %s later." #~ msgstr "%s, potom bude %s." #~ msgid "%s, then %s, followed by %s later." #~ msgstr "%s, potom bude %s a následne neskôr bude %s." #~ msgid "Feels like %s." #~ msgstr "Pocitová teplota %s." #~ msgctxt "search-result" #~ msgid "Log out" #~ msgstr "Odhlásiť sa" #~ msgctxt "search-result" #~ msgid "Switch user" #~ msgstr "Prepnúť používateľa" #~ msgid "Hide tray" #~ msgstr "Skryť lištu" #~ msgid "Status Icons" #~ msgstr "Stavová ikona" #~ msgid "Events" #~ msgstr "Udalosti" #~ msgid "Media" #~ msgstr "Médiá" #~ msgid "%d x %d" #~ msgstr "%d x %d" # PM: Nie som si istý # TRANSLATORS: this is the title of the wifi captive portal login # window, until we know the title of the actual login page #~ msgid "Web Authentication Redirect" #~ msgstr "Presmerovanie webového overenia totožnosti" #~ msgid "Show the week date in the calendar" #~ msgstr "Zobraziť čísla týždňov v kalendári" #~ msgid "If true, display the ISO week date in the calendar." #~ msgstr "" #~ "Ak je true, zobrazí v kalendári poradie dní v týždni podľa štandardu ISO." #~ msgid "Use as Internet connection" #~ msgstr "Použiť na pripojenie k internetu" #~ msgid "%s is requesting access to your location." #~ msgstr "Aplikácia %s požaduje prístup k vášmu umiestneniu." #~ msgid "GNOME Shell (wayland compositor)" #~ msgstr "Shell prostredia GNOME (kompozitor pre wayland)" #~ msgid "%d Connected Device" #~ msgid_plural "%d Connected Devices" #~ msgstr[0] "%d pripojené zariadenie" #~ msgstr[1] "%d pripojené zariadenia" #~ msgstr[2] "%d pripojených zariadení" #~ msgid "UPS" #~ msgstr "Záložný zdroj UPS" #~ msgid "Battery" #~ msgstr "Batéria" #~ msgctxt "event list time" #~ msgid "%H∶%M" #~ msgstr "%H∶%M" #~ msgctxt "event list time" #~ msgid "%l∶%M %p" #~ msgstr "%l∶%M %p" #~ msgid "Invitation" #~ msgstr "Pozvánka" #~ msgid "Call" #~ msgstr "Hovor" #~ msgid "File Transfer" #~ msgstr "Prenos súborov" #~ msgid "Chat" #~ msgstr "Rozhovor" #~ msgid "Invitation to %s" #~ msgstr "Pozvánka do %s" #~ msgid "%s is inviting you to join %s" #~ msgstr "Kontakt %s vás pozýva aby ste sa pridali do %s" #~ msgid "Decline" #~ msgstr "Odmietnuť" #~ msgid "Accept" #~ msgstr "Prijať" #~ msgid "Video call from %s" #~ msgstr "Videohovor od kontaktu %s" #~ msgid "Call from %s" #~ msgstr "Hovor od kontaktu %s" #~ msgid "Answer" #~ msgstr "Prijať hovor" #~ msgid "%s is sending you %s" #~ msgstr "Kontakt %s vám posiela %s" #~ msgid "%s would like permission to see when you are online" #~ msgstr "Kontakt %s by chcel získať oprávnenie vidieť, kedy ste pripojený" #~ msgid "Authentication failed" #~ msgstr "Overenie totožnosti zlyhalo" #~ msgid "Encryption error" #~ msgstr "Chyba šifrovania" #~ msgid "Certificate not provided" #~ msgstr "Neposkytnutý certifikát" #~ msgid "Certificate untrusted" #~ msgstr "Nedôveryhodný certifikát" #~ msgid "Certificate expired" #~ msgstr "Certifikát s ukončenou platnosťou" #~ msgid "Certificate not activated" #~ msgstr "Neaktivovaný certifikát" #~ msgid "Certificate hostname mismatch" #~ msgstr "Certifikát s nesúhlasným názvom hostiteľa" #~ msgid "Certificate fingerprint mismatch" #~ msgstr "Certifikát s nesúhlasným odtlačkom" #~ msgid "Certificate self-signed" #~ msgstr "Sebou podpísaný certifikát" #~ msgid "Status is set to offline" #~ msgstr "Stav je nastavený na odhlásený" #~ msgid "Certificate is invalid" #~ msgstr "Certifikát je neplatný" #~ msgid "Connection has been refused" #~ msgstr "Pripojenie bolo odmietnuté" #~ msgid "Connection can't be established" #~ msgstr "Nedá sa nadviazať spojenie" #~ msgid "Connection has been lost" #~ msgstr "Spojenie sa stratilo" #~ msgid "This account is already connected to the server" #~ msgstr "Tento účet je už pripojený k serveru" #~ msgid "" #~ "Connection has been replaced by a new connection using the same resource" #~ msgstr "Pripojenie bolo nahradené novým, ktoré používa rovnaký zdroj" #~ msgid "The account already exists on the server" #~ msgstr "Účet na serveri už existuje" #~ msgid "Server is currently too busy to handle the connection" #~ msgstr "Server je momentálne príliš zaneprázdnený na zvládnutie pripojenia" #~ msgid "Certificate has been revoked" #~ msgstr "Certifikát bol zrušený" #~ msgid "" #~ "Certificate uses an insecure cipher algorithm or is cryptographically weak" #~ msgstr "" #~ "Šifrovací algoritmus používaný certifikátom nie je bezpečný alebo je " #~ "kryptograficky slabý" #~ msgid "" #~ "The length of the server certificate, or the depth of the server " #~ "certificate chain, exceed the limits imposed by the cryptography library" #~ msgstr "" #~ "Dĺžka certifikátu servera, alebo hĺbka reťazca certifikátu servera " #~ "presahuje limit stanovený kryptografickou knižnicou." #~ msgid "Internal error" #~ msgstr "Vnútorná chyba" #~ msgid "View account" #~ msgstr "Zobraziť účet" # nazov klavesovej skratky #~ msgid "Show the message list" #~ msgstr "Zobraziť zoznam správ" #~ msgctxt "list sunday" #~ msgid "Su" #~ msgstr "Ne" #~ msgctxt "list monday" #~ msgid "M" #~ msgstr "Po" #~ msgctxt "list tuesday" #~ msgid "T" #~ msgstr "Ut" #~ msgctxt "list wednesday" #~ msgid "W" #~ msgstr "St" #~ msgctxt "list thursday" #~ msgid "Th" #~ msgstr "Št" #~ msgctxt "list friday" #~ msgid "F" #~ msgstr "Pi" #~ msgctxt "list saturday" #~ msgid "S" #~ msgstr "So" #~ msgid "Nothing Scheduled" #~ msgstr "Žiadne naplánované udalosti" #~ msgid "This week" #~ msgstr "Tento týždeň" #~ msgid "Next week" #~ msgstr "Ďalší týždeň" #~ msgid "Removable Devices" #~ msgstr "Vymeniteľné zariadenia" #~ msgid "Eject" #~ msgstr "Vysunúť" #~ msgid "Open" #~ msgstr "Otvoriť" #~ msgid "Clear Messages" #~ msgstr "Vymazať správy" #~ msgid "Notification Settings" #~ msgstr "Nastavenia oznámení" # DK: zvazoval som pouzit "Panel správ" # neviem co bude vhodnejsie ako preklad "tray" #~ msgid "Message Tray" #~ msgstr "Lišta správ" #~ msgid "Captive Portal" #~ msgstr "Prihlasovací portál" #~ msgid "The maximum accuracy level of location." #~ msgstr "Maximálna úroveň presnosti určenia polohy." #~ msgid "" #~ "Configures the maximum level of location accuracy applications are " #~ "allowed to see. Valid options are 'off' (disable location tracking), " #~ "'country', 'city', 'neighborhood', 'street', and 'exact' (typically " #~ "requires GPS receiver). Please keep in mind that this only controls what " #~ "GeoClue will allow applications to see and they can find user's location " #~ "on their own using network resources (albeit with street-level accuracy " #~ "at best)." #~ msgstr "" #~ "Konfiguruje maximálnu úroveň presnosti určenia polohy, ktorú aplikácie " #~ "môžu získať. Povolené sú voľby 'off' (zakáže sledovanie polohy), " #~ "'country' (krajina), 'city' (mesto), 'neighborhood' (okolie), 'street' " #~ "(ulica), 'exact' (presne, pri čom je štandardne požadované použitie " #~ "prijímača GPS). Uvedomte si, že toto nastavenie ovplyvňuje povolenia " #~ "GeoClue a aplikácie môžu tiež získať údaje o polohe použitím sieťových " #~ "prostriedkov (aj keď prinajlepšom s presnosťou na ulicu)." #~ msgid "Arrangement of buttons on the titlebar" #~ msgstr "Usporiadanie tlačidiel na titulku okna" #~ msgid "" #~ "This key overrides the key in org.gnome.desktop.wm.preferences when " #~ "running GNOME Shell." #~ msgstr "" #~ "Tento kľúč preváži kľúč v org.gnome.desktop.wm.preferences po spustení " #~ "Shellu prostredia GNOME." #~ msgid "Select an extension to configure using the combobox above." #~ msgstr "Použitím ponuky vyberte rozšírenie na nastavenie" 07070100000260000081A40000000000000000000000016712993F00018EF6000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/sl.po# Slovenian translations for gnome-shell. # Copyright (C) 2006 Free Software Foundation, Inc. # This file is distributed under the same license as the gnome-shell package. # # Matej Urbančič , 2009–2024. # msgid "" msgstr "" "Project-Id-Version: gnome-shell master\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues/\n" "POT-Creation-Date: 2024-07-26 10:18+0000\n" "PO-Revision-Date: 2024-07-26 13:35+0200\n" "Last-Translator: Martin Srebotnjak \n" "Language-Team: Slovenian GNOME Translation Team \n" "Language: sl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n" "%100==4 ? 3 : 0);\n" "X-Poedit-SourceCharset: utf-8\n" "X-Generator: Poedit 2.2.1\n" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "Zaganjalniki" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate pinned app 1" msgstr "Zaženi pripeti program 1" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate pinned app 2" msgstr "Zaženi pripeti program 2" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate pinned app 3" msgstr "Zaženi pripeti program 3" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate pinned app 4" msgstr "Zaženi pripeti program 4" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate pinned app 5" msgstr "Zaženi pripeti program 5" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate pinned app 6" msgstr "Zaženi pripeti program 6" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate pinned app 7" msgstr "Zaženi pripeti program 7" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate pinned app 8" msgstr "Zaženi pripeti program 8" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate pinned app 9" msgstr "Zaženi pripeti program 9" #: data/50-gnome-shell-launchers.xml:46 msgid "Open new window of pinned app 1" msgstr "Odpri novo okno pripetega programa 1" #: data/50-gnome-shell-launchers.xml:50 msgid "Open new window of pinned app 2" msgstr "Odpri novo okno pripetega programa 2" #: data/50-gnome-shell-launchers.xml:54 msgid "Open new window of pinned app 3" msgstr "Odpri novo okno pripetega programa 3" #: data/50-gnome-shell-launchers.xml:58 msgid "Open new window of pinned app 4" msgstr "Odpri novo okno pripetega programa 4" #: data/50-gnome-shell-launchers.xml:62 msgid "Open new window of pinned app 5" msgstr "Odpri novo okno pripetega programa 5" #: data/50-gnome-shell-launchers.xml:66 msgid "Open new window of pinned app 6" msgstr "Odpri novo okno pripetega programa 6" #: data/50-gnome-shell-launchers.xml:70 msgid "Open new window of pinned app 7" msgstr "Odpri novo okno pripetega programa 7" #: data/50-gnome-shell-launchers.xml:74 msgid "Open new window of pinned app 8" msgstr "Odpri novo okno pripetega programa 8" #: data/50-gnome-shell-launchers.xml:78 msgid "Open new window of pinned app 9" msgstr "Odpri novo okno pripetega programa 9" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2276 msgid "Screenshots" msgstr "Zaslonske slike" #: data/50-gnome-shell-screenshots.xml:9 #: data/org.gnome.shell.gschema.xml.in:287 msgid "Take a screenshot interactively" msgstr "Zajemi zaslonsko sliko interaktivno" #: data/50-gnome-shell-screenshots.xml:12 #: data/org.gnome.shell.gschema.xml.in:299 msgid "Take a screenshot" msgstr "Zajemi zaslonsko sliko" #: data/50-gnome-shell-screenshots.xml:15 #: data/org.gnome.shell.gschema.xml.in:295 msgid "Take a screenshot of a window" msgstr "Zajemi zaslonsko sliko" #: data/50-gnome-shell-screenshots.xml:18 #: data/org.gnome.shell.gschema.xml.in:291 msgid "Record a screencast interactively" msgstr "Posnemi zaslonski posnetek interaktivno" #: data/50-gnome-shell-system.xml:6 js/ui/messageTray.js:1300 msgid "System" msgstr "Sistem" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "Pokaži seznam obvestil" #: data/50-gnome-shell-system.xml:12 msgid "Open the quick settings menu" msgstr "Odpri meni hitrih nastavitev" #: data/50-gnome-shell-system.xml:15 msgid "Focus the active notification" msgstr "Prikaz dejavnega obvestila" #: data/50-gnome-shell-system.xml:18 msgid "Show the overview" msgstr "Pokaži pregled" #: data/50-gnome-shell-system.xml:21 msgid "Show all apps" msgstr "Pokaži vse programe" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "Lupina GNOME" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "Upravljanje oken in zaganjanje programov" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" "Omogoči dostop do orodij razvijalcev in preizkuševalcev programske opreme " "prek vnosnega polja Alt-F2" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Dovoli dostop do razhroščevanja in drugih orodij nadzora prek vnosnega polja " "Alt-F2." #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "Določila razširitev UUID, ki bodo omogočene" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "Razširitve lupine GNOME imajo nastavljeno določilo UUID; ključ določa seznam " "razširitev, ki naj bodo naložene ob zagonu. Upravljanje seznama je mogoče " "tudi prek vodila D-BUs na org.gnome.Shell." #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "Določila razširitev UUID, ki naj bodo onemogočene" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" "Razširitve lupine GNOME imajo nastavljeno določilo UUID; ključ določa seznam " "razširitev, ki naj bodo onemogočene, neglede na to ali so del trenutnega " "načina razširitev. Upravljanje seznama je mogoče tudi prek vodila D-BUs na " "org.gnome.Shell z možnostjo Omogoči/Onemogoči razširitev. Ta nastavitev ima " "prednost pred nastavitvijo »omogočene razširitve«." #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "Onemogoči uporabniške razširitve" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" "Onemogoči vse razširitve, ki jih je uporabnik omogoči brez vpliva na " "nastavitev »omogočena razširitev«." #: data/org.gnome.shell.gschema.xml.in:45 msgid "Allow extension installation" msgstr "Dovoli nameščanje razširitev" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "Allow users to install extensions in their home folder. If disabled, the " "InstallRemoteExtension D-Bus method will fail, and extensions are only " "loaded from system directories on startup. It does not affect extensions " "that are already loaded, so a change only takes full effect on the next " "login." msgstr "" "Uporabnikom omogoči namestitev razširitev lupine. Če storitev ni omogočena, " "namestitev spodleti, razširitve pa se ob zagonu naložijo le iz sistemskih " "imenikov. To ne vpliva na že nameščene razširitve, zato začne sprememba v " "celoti veljati šele ob naslednji prijavi." #: data/org.gnome.shell.gschema.xml.in:56 msgid "Disables the validation of extension version compatibility" msgstr "Onemogoči overjanje skladnosti različice razširitve" #: data/org.gnome.shell.gschema.xml.in:57 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "Lupina GNOME naloži le razširitve, ki so skladne z nameščeno različico. " "Izbrana možnost onemogoči preverjanje, zato so lahko naložene tudi " "razširitve, katerih skladnost ni potrjena." #: data/org.gnome.shell.gschema.xml.in:65 msgid "List of desktop file IDs for favorite applications" msgstr "Seznam določil ID namiznih datotek priljubljenih programov" #: data/org.gnome.shell.gschema.xml.in:66 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" "Programi, ki ustrezajo določilom, bodo prikazani v polju priljubljenih " "programov." #: data/org.gnome.shell.gschema.xml.in:73 msgid "History for command (Alt-F2) dialog" msgstr "Zgodovina pogovornega okna ukazov (Alt-F2)" #. Translators: looking glass is a debugger and inspector tool, see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/docs/looking-glass.md #: data/org.gnome.shell.gschema.xml.in:78 msgid "History for the looking glass dialog" msgstr "Zgodovina za pogovorno okno povečevala" #: data/org.gnome.shell.gschema.xml.in:82 msgid "Always show the “Log Out” action in the system menu" msgstr "Vedno pokaži možnost »Odjave« v sistemskem meniju." #: data/org.gnome.shell.gschema.xml.in:83 msgid "" "This key overrides the automatic hiding of the “Log out” action in the " "system menu for logged-in situations where there is a single, local, non-" "system user and only a single available session type (e.g. GNOME on Wayland)." msgstr "" "Izbira prepiše možnost samodejnega skrivanja gumba za »Odjavo« na sistemskem " "meniju pri eno-uporabniškem, krajevnem, nesistemskem in eno-sejnem zagonu, " "kadar je na voljo le ena možnost prijave (na primer: GNOME na Wayland)." #: data/org.gnome.shell.gschema.xml.in:92 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "Ali naj se geslo za priklapljanje šifriranih in oddaljenih datotečnih " "sistemov shrani" #: data/org.gnome.shell.gschema.xml.in:93 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "Za priklop oddaljenega datotečnega sistema ali šifrirane naprave bo po " "izbiri podana zahteva za vnos gesla. Na pogovornem oknu bo prikazana tudi " "možnost »Shrani geslo«. Ta možnost določa privzeto stanje izbirnega polja." #: data/org.gnome.shell.gschema.xml.in:102 msgid "The last selected non-default power profile" msgstr "Nazadnje izbran neprivzet profil varčevanja" #: data/org.gnome.shell.gschema.xml.in:103 msgid "" "Some systems support more than two power profiles. In order to still support " "toggling between two profiles, this key records the last selected non-" "default profile." msgstr "" "Nekateri sistemi podpirajo več kot en profil varčevanja. Za podporo " "preklapljanja med dvema profiloma, nastavitev beleži nazadnje izbran " "neprivzet profil." #: data/org.gnome.shell.gschema.xml.in:111 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "" "Zadnja različica namizja, ki za katero je bilo prikazano pogovorno okno " "»Dobrodošlice GNOME«" #: data/org.gnome.shell.gschema.xml.in:112 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can " "be used to effectively disable the dialog." msgstr "" "Nastavitev določa, za katero različico namizja je bilo pogovorno okno " "»Dobrodošlice GNOME« nazadnje prikazano. Prazen niz določa najstarejšo " "različico in velike številke različice, ki še ne obstajajo. S temi velikimi " "vrednostmi je mogoče preprečiti prikaz tega okna." #: data/org.gnome.shell.gschema.xml.in:145 msgid "Layout of the app picker" msgstr "Pogled izbirnika programov" #: data/org.gnome.shell.gschema.xml.in:146 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" msgstr "" "Pogled izbirnika programov. Vsak vnos v polju je stran. Strani so " "razvrščene, kot se pojavijo v lupini GNOME. Vsaka stran vsebuje par podatkov " "»ID programa« → »podatki«. Trenutno so kot podatki shranjeni:: • »položaj«: " "položaj ikone programa na strani" #: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:172 msgid "Keybinding to shift between overview states" msgstr "Tipkovna bližnjica za preklop med stanji pregleda" #: data/org.gnome.shell.gschema.xml.in:166 msgid "Keybinding to shift between session, window picker and app grid" msgstr "" "Tipkovna bližnjica za preklop med sejo, izbirniki oken in programsko mrežo" #: data/org.gnome.shell.gschema.xml.in:173 msgid "Keybinding to shift between app grid, window picker and session" msgstr "" "Tipkovna bližnjica za preklop med programsko mrežo, izbirniki oken in sejo" #: data/org.gnome.shell.gschema.xml.in:179 msgid "Keybinding to open the “Show Applications” view" msgstr "Tipkovna bližnjica, ki odpre pogled »Pokaži programe«" #: data/org.gnome.shell.gschema.xml.in:180 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "" "Tipkovna bližnjica, ki odpre pogled »Pokaži programe« v pregledu dejavnosti." #: data/org.gnome.shell.gschema.xml.in:187 msgid "Keybinding to open the overview" msgstr "Tipkovna bližnjica, ki odpre pogled pregleda" #: data/org.gnome.shell.gschema.xml.in:188 msgid "Keybinding to open the Activities Overview." msgstr "Tipkovna bližnjica, ki odpre pogled pregleda dejavnosti." #: data/org.gnome.shell.gschema.xml.in:194 msgid "Keybinding to toggle the visibility of the notification list" msgstr "Tipkovna bližnjica za preklop vidnosti seznama obvestil" #: data/org.gnome.shell.gschema.xml.in:195 msgid "Keybinding to toggle the visibility of the notification list." msgstr "Tipkovna bližnjica za preklop vidnosti seznama obvestil." #: data/org.gnome.shell.gschema.xml.in:201 msgid "Keybinding to toggle the quick settings menu" msgstr "Tipkovna bližnjica, za preklop menija hitrih nastavitev" #: data/org.gnome.shell.gschema.xml.in:202 msgid "Keybinding to toggle the quick settings menu." msgstr "Tipkovna bližnjica, za preklapljanje menija hitrih nastavitev." #: data/org.gnome.shell.gschema.xml.in:208 msgid "Keybinding to focus the active notification" msgstr "Tipkovna bližnjica za prikaz dejavnega obvestila" #: data/org.gnome.shell.gschema.xml.in:209 msgid "Keybinding to focus the active notification." msgstr "Tipkovna bližnjica za prikaz dejavnega obvestila." #: data/org.gnome.shell.gschema.xml.in:215 msgid "Switch to application 1" msgstr "Preklopi na program 1" #: data/org.gnome.shell.gschema.xml.in:219 msgid "Switch to application 2" msgstr "Preklopi na program 2" #: data/org.gnome.shell.gschema.xml.in:223 msgid "Switch to application 3" msgstr "Preklopi na program 3" #: data/org.gnome.shell.gschema.xml.in:227 msgid "Switch to application 4" msgstr "Preklopi na program 4" #: data/org.gnome.shell.gschema.xml.in:231 msgid "Switch to application 5" msgstr "Preklopi na program 5" #: data/org.gnome.shell.gschema.xml.in:235 msgid "Switch to application 6" msgstr "Preklopi na program 6" #: data/org.gnome.shell.gschema.xml.in:239 msgid "Switch to application 7" msgstr "Preklopi na program 7" #: data/org.gnome.shell.gschema.xml.in:243 msgid "Switch to application 8" msgstr "Preklopi na program 8" #: data/org.gnome.shell.gschema.xml.in:247 msgid "Switch to application 9" msgstr "Preklopi na program 9" #: data/org.gnome.shell.gschema.xml.in:251 msgid "Open a new instance of application 1" msgstr "Odpri novo okno programa 1" #: data/org.gnome.shell.gschema.xml.in:255 msgid "Open a new instance of application 2" msgstr "Odpri novo okno programa 2" #: data/org.gnome.shell.gschema.xml.in:259 msgid "Open a new instance of application 3" msgstr "Odpri novo okno programa 3" #: data/org.gnome.shell.gschema.xml.in:263 msgid "Open a new instance of application 4" msgstr "Odpri novo okno programa 4" #: data/org.gnome.shell.gschema.xml.in:267 msgid "Open a new instance of application 5" msgstr "Odpri novo okno programa 5" #: data/org.gnome.shell.gschema.xml.in:271 msgid "Open a new instance of application 6" msgstr "Odpri novo okno programa 6" #: data/org.gnome.shell.gschema.xml.in:275 msgid "Open a new instance of application 7" msgstr "Odpri novo okno programa 7" #: data/org.gnome.shell.gschema.xml.in:279 msgid "Open a new instance of application 8" msgstr "Odpri novo okno programa 8" #: data/org.gnome.shell.gschema.xml.in:283 msgid "Open a new instance of application 9" msgstr "Odpri novo okno programa 9" #: data/org.gnome.shell.gschema.xml.in:308 #: data/org.gnome.shell.gschema.xml.in:335 msgid "Limit switcher to current workspace." msgstr "Omeji preklopnik na trenutno delovno površino." #: data/org.gnome.shell.gschema.xml.in:309 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "Izbrana možnost določa, da bodo v trenutnem pogledu prikazana le okna, ki so " "v izbrani delovni površini v preklopniku. V nasprotnem primeru so prikazana " "vsa okna." #: data/org.gnome.shell.gschema.xml.in:326 msgid "The application icon mode." msgstr "Ikonski način programa." #: data/org.gnome.shell.gschema.xml.in:327 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-" "only” (shows only the application icon) or “both”." msgstr "" "Določa, kako naj bodo prikazana okna v preklopniku. Veljavne možnosti so »le " "sličice»« (pokaže le sličice oken), »le ikona« (pokaže ikono programa) in pa " "možnost »oboje«." #: data/org.gnome.shell.gschema.xml.in:336 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "Izbrana možnost določa, da bodo v trenutnem pogledu prikazana le okna v " "preklopniku. V nasprotnem primeru so prikazana vsa okna." #: data/org.gnome.shell.gschema.xml.in:346 msgid "Locations" msgstr "Mesta" #: data/org.gnome.shell.gschema.xml.in:347 msgid "The locations to show in world clocks" msgstr "Mesta, za katere naj bodo prikazani svetovni časi" #: data/org.gnome.shell.gschema.xml.in:357 msgid "Automatic location" msgstr "Samodejno določanje mesta" #: data/org.gnome.shell.gschema.xml.in:358 msgid "Whether to fetch the current location or not" msgstr "Ali naj program pridobi trenutno mesto ali ne" #: data/org.gnome.shell.gschema.xml.in:365 msgid "Location" msgstr "Trenutno mesto" #: data/org.gnome.shell.gschema.xml.in:366 msgid "The location for which to show a forecast" msgstr "Mesto, za katero naj bo pokazana napoved" #. Keep in sync with subprojects/extensions-app #: data/org.gnome.Shell.Extensions.desktop.in.in:5 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/data/ui/extensions-window.ui:57 msgid "Extensions" msgstr "Razširitve lupine" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "Omrežna prijava" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:275 msgid "Something’s gone wrong" msgstr "Prišlo je do nepričakovane napake" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" "Prišlo je do napake: nastavitev za to razširitev ni mogoče prikazati. " "Priporočljivo je poslati poročilo o hrošču razvijalcem programa." #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "Tehnične podrobnosti" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "Spletna stran" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 msgid "Visit extension homepage" msgstr "Odpri spletno stran razširitev" #: js/gdm/authPrompt.js:153 js/gdm/loginDialog.js:466 #: js/ui/audioDeviceSelection.js:66 js/ui/components/networkAgent.js:115 #: js/ui/components/polkitAgent.js:146 js/ui/endSessionDialog.js:438 #: js/ui/extensionDownloader.js:278 js/ui/shellMountOperation.js:384 #: js/ui/shellMountOperation.js:394 msgid "Cancel" msgstr "Prekliči" #: js/gdm/authPrompt.js:319 js/ui/components/networkAgent.js:215 #: js/ui/components/networkAgent.js:235 js/ui/components/networkAgent.js:267 #: js/ui/components/networkAgent.js:300 js/ui/components/networkAgent.js:339 #: js/ui/components/networkAgent.js:352 js/ui/components/polkitAgent.js:288 #: js/ui/shellMountOperation.js:334 msgid "Password" msgstr "Geslo" #: js/gdm/loginDialog.js:327 msgid "Choose Session" msgstr "Izbor seje" #. Translators: is running for #: js/gdm/loginDialog.js:424 #, javascript-format msgid "" "Remote login is not possible because a remote session is already running for " "%s. To login remotely, you must log out from the remote session or force " "stop it." msgstr "" "Oddaljena prijava ni mogoča, ker se za %s oddaljena seja že izvaja. Če se " "želite vseeno prijaviti na daljavo, se morate najprej odjaviti iz oddaljene " "seje ali jo zaustaviti." #. Translators: is running for #: js/gdm/loginDialog.js:427 #, javascript-format msgid "" "Login is not possible because a remote session is already running for %s. To " "login, you must log out from the remote session or force stop it." msgstr "" "Prijava ni mogoča, ker se za %s oddaljena seja že izvaja. Če se želite " "vseeno prijaviti na daljavo, se morate najprej odjaviti iz oddaljene seje " "ali jo zaustaviti." #. Translators: is running for #: js/gdm/loginDialog.js:430 #, javascript-format msgid "" "Remote login is not possible because a local session is already running for " "%s. To login remotely, you must log out from the local session or force stop " "it." msgstr "" "Oddaljena prijava ni mogoča, ker se za %s krajevna seja že izvaja. Če se " "želite vseeno prijaviti na daljavo, se morate najprej odjaviti iz oddaljene " "seje ali jo zaustaviti." #. Translators: is running for #: js/gdm/loginDialog.js:433 #, javascript-format msgid "" "Login is not possible because a session is already running for %s. To login, " "you must log out from the session or force stop it." msgstr "" "Prijava ni mogoča, ker se za %s seja že izvaja. Če se želite prijaviti, se " "morate iz seje najprej odjaviti ali jo zaustaviti." #: js/gdm/loginDialog.js:442 msgid "Session Already Running" msgstr "Seja že teče" #: js/gdm/loginDialog.js:454 msgid "" "Force stopping will quit any running apps and processes, and could result in " "data loss" msgstr "" "Z vsiljeno zaustavitvijo se zaustavijo vsi zagnani procesi in programi, kar " "lahko povzroči izgubo podatkov." #: js/gdm/loginDialog.js:474 msgid "Force Stop" msgstr "Vsili končanje" #: js/gdm/loginDialog.js:542 msgid "Not listed?" msgstr "Ali vašega uporabniškega imena ni na seznamu?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:1010 #, javascript-format msgid "(e.g., user or %s)" msgstr "(na primer, uporabnika ali %s)" #: js/gdm/loginDialog.js:1015 js/ui/components/networkAgent.js:259 #: js/ui/components/networkAgent.js:294 js/ui/components/networkAgent.js:328 msgid "Username" msgstr "Uporabniško ime" #: js/gdm/loginDialog.js:1081 msgid "Login Attempt Timed Out" msgstr "Poskus prijave je časovno potekel" #: js/gdm/loginDialog.js:1082 msgid "Login took too long, please try again" msgstr "Prijava je trajala predolgo, poskusite znova" #: js/gdm/loginDialog.js:1427 msgid "Login Window" msgstr "Prijavno okno" #: js/gdm/util.js:498 msgid "Authentication error" msgstr "Napaka overitve" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:729 msgid "(or swipe finger across reader)" msgstr "(ali pa povlecite prst prek bralnika)" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:734 msgid "(or place finger on reader)" msgstr "(ali pa povlecite prst po bralniku)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:91 msgctxt "search-result" msgid "Power Off" msgstr "Izklopi" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:94 msgid "power off;poweroff;shutdown;halt;stop" msgstr "" "power off;poweroff;shutdown;halt;stop;restart;shutdown;izklop;ugasni;ponovni " "zagon;reboot;zaustavi" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:99 msgctxt "search-result" msgid "Restart" msgstr "Ponovno zaženi" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:102 msgid "reboot;restart;" msgstr "izklop;ugasni;ponovni zagon;reboot;zaustavi;restart;stop;shutdown;" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:107 msgctxt "search-result" msgid "Lock Screen" msgstr "Zakleni zaslon" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:110 msgid "lock screen" msgstr "zaklep zaslona" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:115 msgctxt "search-result" msgid "Log Out" msgstr "Odjava" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:118 msgid "logout;log out;sign off" msgstr "odjava;izpis;izklop;logout" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:123 msgctxt "search-result" msgid "Suspend" msgstr "V pripravljenost" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:126 msgid "suspend;sleep" msgstr "v pripravljenost;v mirovanje" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:131 msgctxt "search-result" msgid "Switch User" msgstr "Preklop uporabnika" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:134 msgid "switch user" msgstr "preklop uporabnika" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:141 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "" "zaklep usmerjenosti;zaslon;rotacija;obrat;obračanje;vrtenje;zavrti;rotacija" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:146 msgctxt "search-result" msgid "Take a Screenshot" msgstr "Zajemi zaslonsko sliko" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:149 msgid "screenshot;screencast;snip;capture;record" msgstr "" "zaslon;zaslonska slika;zaslonski posnetek;slika;posnetek;zajem;zapis;" "screenshot;screen;monitor" #: js/misc/systemActions.js:249 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "Vrtenje odklepanja zaslona" #: js/misc/systemActions.js:250 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "Vrtenje zaklepanja zaslona" #: js/misc/util.js:132 msgid "Command not found" msgstr "Ukaz ni mogoče najti" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:172 msgid "Could not parse command:" msgstr "Ukaza ni mogoče razčleniti:" #: js/misc/util.js:180 #, javascript-format msgid "Execution of “%s” failed:" msgstr "Izvedba »%s« je spodletela:" #: js/misc/dateUtils.js:69 msgid "Just now" msgstr "Ravnokar" #: js/misc/dateUtils.js:72 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "Pred %d minutami" msgstr[1] "Pred %d minuto" msgstr[2] "Pred %d minutama" msgstr[3] "Pred %d minutami" #: js/misc/dateUtils.js:79 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "Pred %d urami" msgstr[1] "Pred %d uro" msgstr[2] "Pred %d urama" msgstr[3] "Pred %d urami" #: js/misc/dateUtils.js:85 js/ui/dateMenu.js:185 msgid "Yesterday" msgstr "Včeraj" #: js/misc/dateUtils.js:88 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "Pred %d dnevi" msgstr[1] "Pred %d dnevom" msgstr[2] "Pred %d dnevoma" msgstr[3] "Pred %d dnevi" #: js/misc/dateUtils.js:95 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "Pred %d tedni" msgstr[1] "Pred %d tednom" msgstr[2] "Pred %d tednoma" msgstr[3] "Pred %d tedni" #: js/misc/dateUtils.js:102 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "Pred %d meseci" msgstr[1] "Pred %d mesecem" msgstr[2] "Pred %d mesecema" msgstr[3] "Pred %d meseci" #: js/misc/dateUtils.js:108 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "Pred %d leti" msgstr[1] "Pred %d letom" msgstr[2] "Pred %d letoma" msgstr[3] "Pred %d leti" #. Translators: Time in 24h format #: js/misc/dateUtils.js:155 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/dateUtils.js:161 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "Včeraj, %H:%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/dateUtils.js:167 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/dateUtils.js:173 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%d %B, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/dateUtils.js:179 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%d. %B %Y, %H∶%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/dateUtils.js:184 msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/dateUtils.js:190 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "Včeraj, %l∶%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/dateUtils.js:196 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/dateUtils.js:202 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%d. %B, %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/dateUtils.js:208 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%d. %B %Y, %l∶%M %p" #: js/portalHelper/main.js:98 msgid "Your connection seems to be secure" msgstr "Povezava je videti varna" #: js/portalHelper/main.js:104 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "Povezava prek vroče točke ni varna. Gesla in druge podrobnosti, ki bodo " "vpisane na spletne strani, bodo lahko vidne tretjim osebam." #: js/portalHelper/main.js:115 msgid "Hotspot Login" msgstr "Prijava prek vroče točke" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:51 js/ui/inhibitShortcutsDialog.js:92 msgid "Deny" msgstr "Zavrni" #: js/ui/accessDialog.js:52 js/ui/inhibitShortcutsDialog.js:101 msgid "Allow" msgstr "Dovoli" #: js/ui/appDisplay.js:1771 msgid "Unnamed Folder" msgstr "Neimenovana mapa" #: js/ui/appFavorites.js:166 #, javascript-format msgid "%s has been pinned to the dash." msgstr "Program »%s« je dodan med pripete programe." #: js/ui/appFavorites.js:199 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "Program »%s« je odstranjen iz pripetih programov." #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:51 msgid "Open Windows" msgstr "Odpri okna" #: js/ui/appMenu.js:59 msgid "New Window" msgstr "Novo okno" #: js/ui/appMenu.js:86 msgid "App Details" msgstr "Podrobnosti programa" #: js/ui/appMenu.js:102 msgid "Quit" msgstr "Končaj" #: js/ui/appMenu.js:162 js/ui/dash.js:250 msgid "Unpin" msgstr "Odpni" #: js/ui/appMenu.js:163 msgid "Pin to Dash" msgstr "Pripni med priljubljene" #: js/ui/appMenu.js:180 msgid "Launch using Integrated Graphics Card" msgstr "Zaženi z uporabo vgrajene grafične kartice" #: js/ui/appMenu.js:181 msgid "Launch using Discrete Graphics Card" msgstr "Zaženi z uporabo določene grafične kartice" #: js/ui/audioDeviceSelection.js:46 msgid "Select Audio Device" msgstr "Izbor zvokovne naprave" #: js/ui/audioDeviceSelection.js:61 js/ui/status/volume.js:83 msgid "Sound Settings" msgstr "Nastavitve zvoka" #: js/ui/audioDeviceSelection.js:74 msgid "Headphones" msgstr "Slušalke" #: js/ui/audioDeviceSelection.js:76 msgid "Headset" msgstr "Slušalka" #: js/ui/audioDeviceSelection.js:78 js/ui/status/volume.js:358 msgid "Microphone" msgstr "Mikrofon" #: js/ui/backgroundMenu.js:15 msgid "Change Background…" msgstr "Spremeni ozadje …" #: js/ui/backgroundMenu.js:17 msgid "Display Settings" msgstr "Nastavitve zaslona" #: js/ui/backgroundMenu.js:18 msgid "Settings" msgstr "Nastavitve" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:39 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:65 msgctxt "grid sunday" msgid "S" msgstr "N" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:67 msgctxt "grid monday" msgid "M" msgstr "P" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:69 msgctxt "grid tuesday" msgid "T" msgstr "T" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:71 msgctxt "grid wednesday" msgid "W" msgstr "S" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:73 msgctxt "grid thursday" msgid "T" msgstr "Č" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:75 msgctxt "grid friday" msgid "F" msgstr "P" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:77 msgctxt "grid saturday" msgid "S" msgstr "S" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:428 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:438 msgid "%OB %Y" msgstr "%OB %Y" #: js/ui/calendar.js:500 msgid "Previous month" msgstr "Predhodni mesec" #: js/ui/calendar.js:518 msgid "Next month" msgstr "Naslednji mesec" #: js/ui/calendar.js:669 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:728 msgid "Week %V" msgstr "Teden %V" #: js/ui/calendar.js:920 msgid "No Notifications" msgstr "Ni obvestil" #: js/ui/calendar.js:976 msgid "Do Not Disturb" msgstr "Ne moti" #: js/ui/calendar.js:997 msgid "Clear" msgstr "Počisti" #: js/ui/calendar.js:1001 msgctxt "action" msgid "Clear all notifications" msgstr "Počisti vsa obvestila" #. Translators: %s is an application name #: js/ui/closeDialog.js:44 #, javascript-format msgid "“%s” Is Not Responding" msgstr "Program »%s« se ne odziva" #: js/ui/closeDialog.js:45 msgid "" "You may choose to wait a short while for it to continue or force the app to " "quit entirely" msgstr "" "Lahko počakate, če se program morda začne odzivati, lahko pa vsilite " "končanje delovanja." #: js/ui/closeDialog.js:73 msgid "Force Quit" msgstr "Vsili končanje" #: js/ui/closeDialog.js:78 msgid "Wait" msgstr "Počakaj" #: js/ui/components/automountManager.js:84 msgid "External drive connected" msgstr "Zunanji pogon je priklopljen" #: js/ui/components/automountManager.js:96 msgid "External drive disconnected" msgstr "Zunanji pogon je odklopljen" #: js/ui/components/automountManager.js:210 msgid "Unable to unlock volume" msgstr "Ni mogoče odkleniti nosilca" #: js/ui/components/automountManager.js:211 msgid "The installed udisks version does not support the PIM setting" msgstr "Nameščena različica udisks ne podpira nastavitev PIM" #. Translators: %s is the name of a partition on a external drive #: js/ui/components/autorunManager.js:191 #, javascript-format msgid "“%s” connected" msgstr "»%s« je povezan" #: js/ui/components/autorunManager.js:192 msgid "Disk can now be used" msgstr "Disk je zdaj mogoče uporabljati" #: js/ui/components/autorunManager.js:204 #, javascript-format msgid "Open with %s" msgstr "Odpri s programom %s" #: js/ui/components/networkAgent.js:97 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router" msgstr "Vzpostavitev povezave je mogoča tudi z gumbom »WPS« na usmerjevalniku." #: js/ui/components/networkAgent.js:109 js/ui/status/bluetooth.js:246 #: js/ui/status/network.js:362 js/ui/status/network.js:446 msgid "Connect" msgstr "Poveži" #: js/ui/components/networkAgent.js:224 msgid "Key" msgstr "Ključ" #: js/ui/components/networkAgent.js:275 js/ui/components/networkAgent.js:314 msgid "Private key password" msgstr "Geslo zasebnega ključa" #: js/ui/components/networkAgent.js:308 msgid "Identity" msgstr "Istovetnost" #: js/ui/components/networkAgent.js:334 msgid "Service" msgstr "Storitev" #: js/ui/components/networkAgent.js:372 js/ui/components/networkAgent.js:408 #: js/ui/components/networkAgent.js:745 js/ui/components/networkAgent.js:766 msgid "Authentication required" msgstr "Zahtevana je overitev" #: js/ui/components/networkAgent.js:373 js/ui/components/networkAgent.js:746 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network “%s”" msgstr "" "Za povezavo v brezžično omrežje »%s« je zahtevano geslo oziroma šifrirni " "ključ." #: js/ui/components/networkAgent.js:377 js/ui/components/networkAgent.js:750 msgid "Wired 802.1X authentication" msgstr "Žična overitev 802.1X" #: js/ui/components/networkAgent.js:380 msgid "Network name" msgstr "Naziv omrežja" #: js/ui/components/networkAgent.js:388 js/ui/components/networkAgent.js:754 msgid "DSL authentication" msgstr "Overitev DSL" #: js/ui/components/networkAgent.js:395 js/ui/components/networkAgent.js:759 msgid "PIN code required" msgstr "Zahtevana koda PIN" #: js/ui/components/networkAgent.js:396 js/ui/components/networkAgent.js:760 msgid "PIN code is needed for the mobile broadband device" msgstr "Za napravo mobilnega širokopasovnega dostopa je zahtevana koda PIN." #: js/ui/components/networkAgent.js:398 msgid "PIN" msgstr "Koda PIN" #: js/ui/components/networkAgent.js:409 js/ui/components/networkAgent.js:751 #: js/ui/components/networkAgent.js:755 js/ui/components/networkAgent.js:767 #: js/ui/components/networkAgent.js:771 #, javascript-format msgid "A password is required to connect to “%s”" msgstr "Za povezavo z omrežjem »%s« je zahtevano geslo." #: js/ui/components/networkAgent.js:770 msgid "VPN password" msgstr "Geslo VPN" #: js/ui/components/polkitAgent.js:46 msgid "Authentication Required" msgstr "Zahtevana je overitev" #: js/ui/components/polkitAgent.js:86 msgid "Administrator" msgstr "Skrbnik" #: js/ui/components/polkitAgent.js:151 msgid "Authenticate" msgstr "Overi" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:265 js/ui/shellMountOperation.js:417 msgid "Sorry, that didn’t work. Please try again." msgstr "Overitev je spodletela.. Poskusite znova." #: js/ui/ctrlAltTab.js:25 js/ui/overviewControls.js:406 msgid "Windows" msgstr "Okna" #: js/ui/dash.js:206 js/ui/dash.js:252 msgid "Show Apps" msgstr "Pokaži programe" #. Translators: this is the name of the dock/favorites area on #. the bottom of the overview #: js/ui/dash.js:410 msgid "Dash" msgstr "Pregledna plošča" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:101 msgid "%B %-d %Y" msgstr "%d. %B %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:108 msgid "%A %B %e %Y" msgstr "%A %B %e %Y" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:174 msgctxt "calendar heading" msgid "%B %-d" msgstr "%B %-d" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:177 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%B %-d %Y" #: js/ui/dateMenu.js:183 msgid "Today" msgstr "Danes" #: js/ui/dateMenu.js:187 msgid "Tomorrow" msgstr "Jutri" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:218 msgctxt "event list time" msgid "All Day" msgstr "Celodnevno" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:240 msgid "%m/%d" msgstr "%d.%m" #: js/ui/dateMenu.js:291 msgid "No Events" msgstr "Ni dogodkov" #: js/ui/dateMenu.js:413 msgid "Add World Clocks…" msgstr "Dodaj svetovni čas …" #: js/ui/dateMenu.js:414 msgid "World Clocks" msgstr "Svetovni časi" #: js/ui/dateMenu.js:704 msgid "Loading…" msgstr "Poteka nalaganje …" #: js/ui/dateMenu.js:714 msgid "Go Online for Weather Information" msgstr "Preglej splet za podrobnosti o vremenu" #: js/ui/dateMenu.js:716 msgid "Weather Information Unavailable" msgstr "Podatki o vremenu trenutno niso na voljo." #: js/ui/dateMenu.js:726 msgid "Weather" msgstr "Vreme" #: js/ui/dateMenu.js:728 msgid "Select Weather Location…" msgstr "Izberi kraj z vremensko napovedjo …" #: js/ui/endSessionDialog.js:48 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "Odjava %s" #: js/ui/endSessionDialog.js:49 msgctxt "title" msgid "Log Out" msgstr "Odjava" #: js/ui/endSessionDialog.js:52 #, javascript-format msgid "%s will be logged out automatically in %d second" msgid_plural "%s will be logged out automatically in %d seconds" msgstr[0] "Uporabnik %s bo samodejno odjavljen čez %d sekund." msgstr[1] "Uporabnik %s bo samodejno odjavljen čez %d sekundo." msgstr[2] "Uporabnik %s bo samodejno odjavljen čez %d sekundi." msgstr[3] "Uporabnik %s bo samodejno odjavljen čez %d sekunde." #: js/ui/endSessionDialog.js:58 #, javascript-format msgid "You will be logged out automatically in %d second" msgid_plural "You will be logged out automatically in %d seconds" msgstr[0] "Samodejno boste odjavljeni čez %d sekund." msgstr[1] "Samodejno boste odjavljeni čez %d sekundo." msgstr[2] "Samodejno boste odjavljeni čez %d sekundi." msgstr[3] "Samodejno boste odjavljeni čez %d sekunde." #: js/ui/endSessionDialog.js:65 msgctxt "button" msgid "Log Out" msgstr "Odjavi" #: js/ui/endSessionDialog.js:71 js/ui/status/system.js:176 msgctxt "title" msgid "Power Off" msgstr "Izklop sistema" #: js/ui/endSessionDialog.js:72 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Namesti posodobitve in ugasni računalnik" #: js/ui/endSessionDialog.js:75 #, javascript-format msgid "The system will power off automatically in %d second" msgid_plural "The system will power off automatically in %d seconds" msgstr[0] "Sistem se bo samodejno izklopil čez %d sekund." msgstr[1] "Sistem se bo samodejno izklopil čez %d sekundo." msgstr[2] "Sistem se bo samodejno izklopil čez %d sekundi." msgstr[3] "Sistem se bo samodejno izklopil čez %d sekunde." #: js/ui/endSessionDialog.js:79 js/ui/endSessionDialog.js:98 msgctxt "checkbox" msgid "Install pending software updates" msgstr "Namesti pripravljene posodobitve programov" #: js/ui/endSessionDialog.js:83 msgctxt "button" msgid "Power Off" msgstr "Izklopi" #: js/ui/endSessionDialog.js:90 msgctxt "title" msgid "Restart" msgstr "Ponoven zagon" #: js/ui/endSessionDialog.js:91 msgctxt "title" msgid "Install Updates & Restart" msgstr "Namestitev posodobitev in ponoven zagon računalnika" #: js/ui/endSessionDialog.js:94 #, javascript-format msgid "The system will restart automatically in %d second" msgid_plural "The system will restart automatically in %d seconds" msgstr[0] "Sistem se bo samodejno ponovno zagnal čez %d sekund." msgstr[1] "Sistem se bo samodejno ponovno zagnal čez %d sekundo." msgstr[2] "Sistem se bo samodejno ponovno zagnal čez %d sekundi." msgstr[3] "Sistem se bo samodejno ponovno zagnal čez %d sekunde." #: js/ui/endSessionDialog.js:102 msgctxt "button" msgid "Restart" msgstr "Ponovno zaženi" #: js/ui/endSessionDialog.js:110 msgctxt "title" msgid "Restart & Install Updates" msgstr "Namesti posodobitve in ponovno zaženi" #: js/ui/endSessionDialog.js:113 #, javascript-format msgid "The system will automatically restart and install updates in %d second" msgid_plural "" "The system will automatically restart and install updates in %d seconds" msgstr[0] "" "Sistem bo samodejno namestil pakete in se nato ponovno zagnal čez %d sekund." msgstr[1] "" "Sistem bo samodejno namestil pakete in se nato ponovno zagnal %d sekundo." msgstr[2] "" "Sistem bo samodejno namestil pakete in se nato ponovno zagnal %d sekundi." msgstr[3] "" "Sistem bo samodejno namestil pakete in se nato ponovno zagnal %d sekunde." #: js/ui/endSessionDialog.js:120 js/ui/endSessionDialog.js:141 msgctxt "button" msgid "Restart & Install" msgstr "Ponovno zaženi in namesti" #: js/ui/endSessionDialog.js:122 msgctxt "button" msgid "Install & Power Off" msgstr "Namesti in izklopi napravo" #: js/ui/endSessionDialog.js:123 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Izklopi napravo po uspešnem nameščanju posodobitev" #: js/ui/endSessionDialog.js:130 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "Ponovno zaženi in namesti posodobitev" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:135 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "Po ponovnem zagonu bo nameščen paket %s %s. Posodobitev namestitve je lahko " "dolgotrajna; preverite, ali je narejena varnostna kopija podatkov in ali je " "računalnik priklopljen na električno omrežje." #: js/ui/endSessionDialog.js:284 msgid "Low battery power: please plug in before installing updates" msgstr "" "Nizka napolnjenost bateriije: pred nameščanjem posodobitev je priporočljivo, " "da se priključite v el. omrežje." #: js/ui/endSessionDialog.js:293 msgid "Some applications are busy or have unsaved work" msgstr "" "Nekateri programi se ne odzivajo, ali pa so odprte neshranjene datoteke." #: js/ui/endSessionDialog.js:298 msgid "Other users are logged in" msgstr "V sistem so prijavljeni tudi drugi uporabniki." #: js/ui/endSessionDialog.js:468 msgctxt "button" msgid "Boot Options" msgstr "Možnosti zagona" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:673 #, javascript-format msgid "%s (remote)" msgstr "%s (oddaljeno)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:676 #, javascript-format msgid "%s (console)" msgstr "%s (konzola)" #: js/ui/extensionDownloader.js:282 msgid "Install" msgstr "Namesti" #: js/ui/extensionDownloader.js:288 msgid "Install Extension" msgstr "Namesti razširitev" #: js/ui/extensionDownloader.js:289 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "Ali želite prejeti in namestiti »%s« prek extensions.gnome.org?" #: js/ui/extensionSystem.js:354 msgid "Extension Updates Available" msgstr "Na voljo so posodobitve razširitev" #: js/ui/extensionSystem.js:355 msgid "Extension updates are ready to be installed" msgstr "Posodobitve razširitev so pripravljene na namestitev." #: js/ui/inhibitShortcutsDialog.js:70 msgid "Allow inhibiting shortcuts" msgstr "Dovoli onemogočanje tipkovnih bližnjic" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:73 #, javascript-format msgid "The app %s wants to inhibit shortcuts" msgstr "Program %s poskuša onemogočiti tipkovne bližnjice" #: js/ui/inhibitShortcutsDialog.js:74 msgid "An app wants to inhibit shortcuts" msgstr "Program poskuša onemogočiti tipkovne bližnjice" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:81 #, javascript-format msgid "You can restore shortcuts by pressing %s" msgstr "Tipkovne bližnjice je mogoče obnoviti s pritiskom gumba %s." #: js/ui/kbdA11yDialog.js:34 msgid "Slow Keys Turned On" msgstr "Počasne tipke so omogočene" #: js/ui/kbdA11yDialog.js:35 msgid "Slow Keys Turned Off" msgstr "Počasne tipke so onemogočene" #: js/ui/kbdA11yDialog.js:36 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "Tipka Shift je bila pritisnjena več kot 8 sekund. To je tipkovna bližnjica " "za zagon možnosti Počasnih tipk, ki vpliva na način delovanja tipkovnice." #: js/ui/kbdA11yDialog.js:42 msgid "Sticky Keys Turned On" msgstr "Lepljive tipke so omogočene" #: js/ui/kbdA11yDialog.js:43 msgid "Sticky Keys Turned Off" msgstr "Lepljive tipke so onemogočene" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "Tipka Shift je bila pritisnjena 5-krat zapored. To je tipkovna bližnjica za " "zagon možnosti Lepljivih tipk, ki vpliva na način delovanja tipkovnice." #: js/ui/kbdA11yDialog.js:47 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" "Tipka Shift je bila pritisnjena 5-krat zapored ali pa sta bili sočasno " "pritisnjeni dve tipki. To je tipkovna bližnjica za preklic možnosti " "Lepljivih tipk, ki vpliva na način delovanja tipkovnice." #: js/ui/kbdA11yDialog.js:57 msgid "Leave On" msgstr "Pusti omogočeno" #: js/ui/kbdA11yDialog.js:57 msgid "Turn On" msgstr "Omogoči" #: js/ui/kbdA11yDialog.js:67 js/ui/status/network.js:457 msgid "Turn Off" msgstr "Onemogoči" #: js/ui/kbdA11yDialog.js:67 msgid "Leave Off" msgstr "Pusti onemogočeno" #: js/ui/keyboard.js:181 js/ui/status/keyboard.js:899 msgid "Keyboard Settings" msgstr "Nastavitve tipkovnice" #: js/ui/lookingGlass.js:729 msgid "No extensions installed" msgstr "Ni nameščenih razširitev" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:790 #, javascript-format msgid "%s has not emitted any errors" msgstr "%s ne javlja napak." #: js/ui/lookingGlass.js:796 msgid "Hide Errors" msgstr "Skrij napake" #: js/ui/lookingGlass.js:800 js/ui/lookingGlass.js:877 msgid "Show Errors" msgstr "Pokaži napake" #: js/ui/lookingGlass.js:809 msgid "Active" msgstr "Dejavno" #: js/ui/lookingGlass.js:812 msgid "Inactive" msgstr "Nedejavno" #: js/ui/lookingGlass.js:814 msgid "Error" msgstr "Napaka" #: js/ui/lookingGlass.js:816 msgid "Out of date" msgstr "Zastarelo" #: js/ui/lookingGlass.js:818 msgid "Downloading" msgstr "Prejemanje" #: js/ui/lookingGlass.js:820 msgid "Deactivating" msgstr "Poteka ustavljanje" #: js/ui/lookingGlass.js:822 msgid "Activating" msgstr "Poteka zaganjanje" #: js/ui/lookingGlass.js:855 msgid "View Source" msgstr "Poglej vir" #: js/ui/lookingGlass.js:866 msgid "Web Page" msgstr "Spletna stran" #: js/ui/main.js:279 msgid "System was put in unsafe mode" msgstr "Sistem je v ne-varnem načinu" #: js/ui/main.js:280 msgid "Apps now have unrestricted access" msgstr "Programi imajo zdaj neomejen dostop" #: js/ui/main.js:283 js/ui/overview.js:54 msgid "Undo" msgstr "Razveljavi" #: js/ui/main.js:340 msgid "Logged in as a privileged user" msgstr "Zaznana je prijava s skrbniškimi dovoljenji" #: js/ui/main.js:341 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" "Zagona seje s skrbniškim računom se je treba iz varnostnih razlogov " "izogibati. Priporočljivo je uporabljati običajen uporabniški račun." #: js/ui/main.js:389 msgid "Screen Lock disabled" msgstr "Zaklep zaslona je onemogočen" #: js/ui/main.js:390 msgid "Screen Locking requires the GNOME display manager" msgstr "" "Zaklepanje zaslona zahteva namestitev upravljalnika zaslona za okolje GNOME." #. Translators: this is the string displayed in the header when a message #. source doesn't have a name #: js/ui/messageList.js:374 msgid "Unknown App" msgstr "Neznan program" #: js/ui/messageTray.js:328 js/ui/messageTray.js:330 msgid "Notification sound" msgstr "Zvok obvestila" #: js/ui/mpris.js:198 msgid "Unknown artist" msgstr "Neznan izvajalec" #: js/ui/mpris.js:208 msgid "Unknown title" msgstr "Neznan naslov" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:330 msgid "Type to search" msgstr "Poišči …" #: js/ui/overviewControls.js:394 msgid "Apps" msgstr "Programi" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:67 msgid "Overview" msgstr "Pregled" #: js/ui/padOsd.js:100 msgid "New shortcut…" msgstr "Nova bližnjica …" #: js/ui/padOsd.js:153 msgid "App defined" msgstr "Program je določen" #: js/ui/padOsd.js:154 msgid "Show on-screen help" msgstr "Pokaži zaslonsko pomoč" #: js/ui/padOsd.js:155 msgid "Switch monitor" msgstr "Nadzornik preklopa" #: js/ui/padOsd.js:156 msgid "Assign keystroke" msgstr "Dodeli tipkovno bližnjico" #: js/ui/padOsd.js:225 msgid "Done" msgstr "Končano" #: js/ui/padOsd.js:728 msgid "Edit…" msgstr "Uredi …" #: js/ui/padOsd.js:775 msgid "None" msgstr "Brez" #: js/ui/padOsd.js:846 msgid "Press a button to configure" msgstr "Pritisnite gumb za nastavitev" #: js/ui/padOsd.js:847 msgid "Press Esc to exit" msgstr "Pritisnite tipko Esc za končanje" #: js/ui/padOsd.js:850 msgid "Press any key to exit" msgstr "Pritisnite katerokoli tipko za končanje" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:425 msgid "Activities" msgstr "Dejavnosti" #: js/ui/panel.js:506 msgctxt "System menu in the top bar" msgid "System" msgstr "Sistem" #: js/ui/panel.js:680 msgid "Top Bar" msgstr "Vrhnja vrstica" #: js/ui/quickSettings.js:188 msgid "Open menu" msgstr "Odpri meni" #: js/ui/runDialog.js:63 msgid "Run a Command" msgstr "Zaženi ukaz" #: js/ui/runDialog.js:78 msgid "Press ESC to close" msgstr "Pritisnite tipko Esc za končanje" #: js/ui/runDialog.js:243 msgid "Restart is not available on Wayland" msgstr "Na sistemu Wayland je na voljo ponovni zagon" #: js/ui/runDialog.js:248 msgid "Restarting…" msgstr "Poteka ponovno zaganjanje …" #: js/ui/screenShield.js:235 msgid "GNOME needs to lock the screen" msgstr "Zakleniti je treba zaslon" #: js/ui/screenShield.js:276 js/ui/screenShield.js:669 msgid "Unable to lock" msgstr "Zaklep ni mogoč" #: js/ui/screenShield.js:277 js/ui/screenShield.js:670 msgid "Lock was blocked by an app" msgstr "Zaklep je preprečil program" #: js/ui/screenshot.js:1254 msgid "Selection" msgstr "Izbor" #: js/ui/screenshot.js:1264 msgid "Area Selection" msgstr "Izbor polja" #: js/ui/screenshot.js:1269 msgid "Screen" msgstr "Zaslon" #: js/ui/screenshot.js:1279 msgid "Screen Selection" msgstr "Izbor zaslona" #: js/ui/screenshot.js:1284 msgid "Window" msgstr "Okno" #: js/ui/screenshot.js:1294 msgid "Window Selection" msgstr "Izbor okna" #. Translators: entry in the window right click menu. #: js/ui/screenshot.js:1319 js/ui/status/system.js:113 js/ui/windowMenu.js:30 msgid "Take Screenshot" msgstr "Zajemi zaslonsko sliko" #: js/ui/screenshot.js:1335 msgid "Record Screen" msgstr "Zajem zaslona" #. Translators: since this string refers to an action, #. it needs to be phrased as a verb. #: js/ui/screenshot.js:1352 msgid "Capture" msgstr "Zajemi" #: js/ui/screenshot.js:1374 msgid "Show Pointer" msgstr "Pokaži kazalnik" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1998 msgid "Screencasts" msgstr "Zaslonski posnetek" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast From 07-17-2013 10:00:46 PM" #: js/ui/screenshot.js:2003 #, no-c-format msgid "Screencast From %d %t" msgstr "Zaslonski posnetek %d %t" #. Translators: notification title. #: js/ui/screenshot.js:2049 msgid "Screencast recorded" msgstr "Zaslonski posnetek je zajet" #. Translators: notification title. #: js/ui/screenshot.js:2062 msgid "Screencast failed to start" msgstr "Zaganjanje zaslonskega posnetka je spodletelo" #. Translators: notification title. #: js/ui/screenshot.js:2068 msgid "Screencast ended: Out of disk space" msgstr "Zaslonski posnetek je končan: ni več prostora na disku" #. We can encourage user to try again on service crashes since the #. recorder will auto-blocklist the pipeline that crashed. #. Translators: notification title. #: js/ui/screenshot.js:2074 msgid "Screencast ended unexpectedly, please try again" msgstr "Zaslonski posnetek se je nepričakovano končal" #. Translators: notification title. #: js/ui/screenshot.js:2077 msgid "Screencast ended unexpectedly" msgstr "Zajem zaslona je nepričakovano končan" #. Translators: notification source name. #: js/ui/screenshot.js:2087 js/ui/screenshot.js:2329 msgid "Screenshot" msgstr "Zaslonska slika" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:2094 msgid "Click here to view the video." msgstr "Kliknite za ogled posnetka." #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:2102 js/ui/screenshot.js:2345 msgid "Show in Files" msgstr "Pokaži v mapi" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2289 #, javascript-format msgid "Screenshot From %s" msgstr "Zaslonski posnetek %s" #. Translators: notification title. #: js/ui/screenshot.js:2335 msgid "Screenshot captured" msgstr "Zaslonska slika je zajeta" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2337 msgid "You can paste the image from the clipboard." msgstr "Prilepiti je mogoče sliko iz odložišča." #: js/ui/screenshot.js:2393 js/ui/screenshot.js:2557 msgid "Screenshot taken" msgstr "Zaslonska slika je zajeta" #: js/ui/search.js:831 msgid "Searching…" msgstr "Iskanje …" #: js/ui/search.js:833 msgid "No results" msgstr "Ni najdenih zadetkov." #: js/ui/search.js:964 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "še %d" msgstr[1] "še %d" msgstr[2] "še %d" msgstr[3] "še %d" #: js/ui/searchController.js:89 #: subprojects/extensions-app/data/ui/extensions-window.ui:73 msgid "Search" msgstr "Poišči" #: js/ui/shellEntry.js:23 msgid "Copy" msgstr "Kopiraj" #: js/ui/shellEntry.js:28 msgid "Paste" msgstr "Prilepi" #: js/ui/shellEntry.js:80 msgid "Show Text" msgstr "Pokaži besedilo" #: js/ui/shellEntry.js:82 msgid "Hide Text" msgstr "Skrij besedilo" #: js/ui/shellEntry.js:176 msgid "Caps lock is on" msgstr "Vključena je tipka zaklepa velikosti črk." #: js/ui/shellMountOperation.js:288 msgid "Hidden Volume" msgstr "Skrit razdelek" #: js/ui/shellMountOperation.js:291 msgid "Windows System Volume" msgstr "Sistemska glasnost" #: js/ui/shellMountOperation.js:294 msgid "Uses Keyfiles" msgstr "Uporablja nastavitvene datoteke" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:302 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead" msgstr "" "Za odklepanje pogona, ki uporablja nastavitvene datoteke, uporabite orodje " "%s." #: js/ui/shellMountOperation.js:306 msgid "" "You need an external utility like Disks to unlock a volume that uses " "keyfiles" msgstr "" "Za odklepanje je treba uporabiti zunanje orodje, kot je program Diski, ki podpira uporabo ključnih datotek." #: js/ui/shellMountOperation.js:314 msgid "PIM Number" msgstr "Koda PIM" #: js/ui/shellMountOperation.js:373 msgid "Remember Password" msgstr "Zapomni si geslo" #: js/ui/shellMountOperation.js:388 msgid "Unlock" msgstr "Odkleni" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:402 #, javascript-format msgid "Open %s" msgstr "Odpri %s" #: js/ui/shellMountOperation.js:438 msgid "The PIM must be a number or empty" msgstr "Vrednost PIM mora biti številka ali prazno polje." #: js/ui/status/accessibility.js:36 msgid "Accessibility" msgstr "Dostopnost" #: js/ui/status/accessibility.js:46 msgid "High Contrast" msgstr "Visok kontrast" #: js/ui/status/accessibility.js:49 msgid "Zoom" msgstr "Približanje" #: js/ui/status/accessibility.js:56 msgid "Screen Reader" msgstr "Zaslonski bralnik" #: js/ui/status/accessibility.js:60 msgid "Screen Keyboard" msgstr "Zaslonska tipkovnica" #: js/ui/status/accessibility.js:64 msgid "Visual Alerts" msgstr "Vidna opozorila" #: js/ui/status/accessibility.js:68 msgid "Sticky Keys" msgstr "Lepljive tipke" #: js/ui/status/accessibility.js:72 msgid "Slow Keys" msgstr "Počasne tipke" #: js/ui/status/accessibility.js:76 msgid "Bounce Keys" msgstr "Odskočne tipke" #: js/ui/status/accessibility.js:80 msgid "Mouse Keys" msgstr "Miškine tipke" #: js/ui/status/accessibility.js:85 msgid "Accessibility Settings" msgstr "Nastavitve dostopnosti" #: js/ui/status/accessibility.js:142 msgid "Large Text" msgstr "Veliko besedilo" #: js/ui/status/autoRotate.js:14 msgid "Auto Rotate" msgstr "Samodejno zavrti" #: js/ui/status/backgroundApps.js:156 msgctxt "title" msgid "Background Apps" msgstr "Ozadnji programi" #: js/ui/status/backgroundApps.js:171 msgid "Apps known to be running without a window" msgstr "Programi, ki se ne izvajajo v oknu" #: js/ui/status/backgroundApps.js:182 msgid "App Settings" msgstr "Nastavitve programa" #: js/ui/status/backgroundApps.js:239 msgid "No Background Apps" msgstr "Ni dejavnih ozadnjih programov" #: js/ui/status/backgroundApps.js:241 #, javascript-format msgid "%d Background App" msgid_plural "%d Background Apps" msgstr[0] "%d ozadnjih programov" msgstr[1] "%d ozadnji program" msgstr[2] "%d ozadnja programa" msgstr[3] "%d ozadnji programi" #: js/ui/status/backlight.js:40 msgid "Keyboard Brightness" msgstr "Svetlost tipkovnice" #: js/ui/status/backlight.js:80 msgid "Off" msgstr "Nepovezano" #: js/ui/status/backlight.js:81 msgid "Low" msgstr "Nizko" #: js/ui/status/backlight.js:82 msgid "High" msgstr "Visoko" #: js/ui/status/backlight.js:148 js/ui/status/keyboard.js:881 msgid "Keyboard" msgstr "Tipkovnica" #: js/ui/status/bluetooth.js:246 js/ui/status/network.js:362 msgid "Disconnect" msgstr "Prekini povezavo" #: js/ui/status/bluetooth.js:263 js/ui/status/bluetooth.js:265 msgid "Bluetooth" msgstr "Bluetooth" #: js/ui/status/bluetooth.js:288 js/ui/status/network.js:1902 msgid "Bluetooth Settings" msgstr "Nastavitve za Bluetooth" #: js/ui/status/bluetooth.js:335 msgid "No available or connected devices" msgstr "Ni razpoložljivih oziroma povezanih naprav" #: js/ui/status/bluetooth.js:336 msgid "Turn on Bluetooth to connect to devices" msgstr "Vklopi Bluetooth za povezovanje naprav" #. Translators: This is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:390 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d povezano" msgstr[1] "%d povezano" msgstr[2] "%d povezano" msgstr[3] "%d povezano" #: js/ui/status/brightness.js:34 msgid "Brightness" msgstr "Svetlost" #: js/ui/status/darkMode.js:12 msgid "Dark Style" msgstr "Temna tema" #: js/ui/status/dwellClick.js:15 msgid "Single Click" msgstr "Enojni klik" #: js/ui/status/dwellClick.js:20 msgid "Double Click" msgstr "Dvojni klik" #: js/ui/status/dwellClick.js:25 msgid "Drag" msgstr "Poteg" #: js/ui/status/dwellClick.js:30 msgid "Secondary Click" msgstr "Drugotni klik" #: js/ui/status/dwellClick.js:39 msgid "Dwell Click" msgstr "Zadržan klik" #: js/ui/status/keyboard.js:898 msgid "Show Keyboard Layout" msgstr "Pokaži razporeditev tipkovnice" #: js/ui/status/location.js:339 msgid "Allow location access" msgstr "Odobri dostop do trenutnega mesta" #. Translators: %s is an application name #: js/ui/status/location.js:341 #, javascript-format msgid "The app %s wants to access your location" msgstr "Program %s zahteva dostop do podatkov trenutnega mesta" #: js/ui/status/location.js:351 msgid "Location access can be changed at any time from the privacy settings" msgstr "" "Dostop do trenutnega mesta je mogoče spremeniti kadarkoli med nastavitvami " "zasebnosti." #: js/ui/status/location.js:359 msgid "Deny Access" msgstr "Zavrni dostop" #: js/ui/status/location.js:364 msgid "Grant Access" msgstr "Dovoli dostop" #: js/ui/status/network.js:64 msgid "" msgstr "" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:356 #, javascript-format msgid "Disconnect %s" msgstr "Prekini povezavo %s" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:358 #, javascript-format msgid "Connect to %s" msgstr "Poveži z mestom %s" #: js/ui/status/network.js:1052 msgid "Secure" msgstr "Povezava je varna" #: js/ui/status/network.js:1052 msgid "Not secure" msgstr "Povezava ni varna" #: js/ui/status/network.js:1053 #, javascript-format msgid "Signal strength %s%%" msgstr "Moč signala %s%%" #. translators: The first placeholder is the network name, the second and indication whether it is secure, and the last the signal strength indication #: js/ui/status/network.js:1055 #, javascript-format msgid "%s, %s, %s" msgstr "%s, %s, %s" #. Translators: %s is a network identifier #: js/ui/status/network.js:1157 #, javascript-format msgid "%s Hotspot" msgstr "Vroča točka %s" #: js/ui/status/network.js:1428 #, javascript-format msgid "%d connected" msgid_plural "%d connected" msgstr[0] "%d povezanih" msgstr[1] "%d povezana" msgstr[2] "%d povezani" msgstr[3] "%d povezane" #: js/ui/status/network.js:1526 js/ui/status/network.js:1542 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1527 msgid "VPN Settings" msgstr "Nastavitve VPN" #: js/ui/status/network.js:1787 msgid "Wi–Fi" msgstr "Omrežje Wi-Fi" #: js/ui/status/network.js:1789 msgid "All Networks" msgstr "Vsa omrežja" #: js/ui/status/network.js:1886 msgid "Wired Connections" msgstr "Žične povezave" #: js/ui/status/network.js:1887 msgid "Wired Settings" msgstr "Nastavitve žičnega omrežja" #: js/ui/status/network.js:1901 msgid "Bluetooth Tethers" msgstr "Internetna Bluetooth točka" #. Translators: "Tether" from "Bluetooth Tether" #: js/ui/status/network.js:1908 msgid "Tether" msgstr "Bluetooth Internet" #: js/ui/status/network.js:1921 msgid "Mobile Connections" msgstr "Mobilne povezave" #: js/ui/status/network.js:1923 msgid "Mobile Broadband Settings" msgstr "Nastavitve mobilnega širokopasovnega dostopa" #. Translators: "Mobile" from "Mobile Broadband" #: js/ui/status/network.js:1932 msgid "Mobile" msgstr "Mobilno omrečje" #: js/ui/status/network.js:1966 msgid "Sign Into Wi–Fi Network" msgstr "Prijavi v brezžično omrežje" #: js/ui/status/network.js:2153 msgid "Connection failed" msgstr "Povezovanje je spodletelo" #: js/ui/status/network.js:2154 msgid "Activation of network connection failed" msgstr "Omogočanje omrežne povezave je spodletelo." #: js/ui/status/nightLight.js:21 msgid "Night Light" msgstr "Nočna osvetlitev" #: js/ui/status/powerProfiles.js:21 msgctxt "Power profile" msgid "Performance" msgstr "Zmogljivo" #: js/ui/status/powerProfiles.js:26 msgctxt "Power profile" msgid "Balanced" msgstr "Uravnoteženo" #: js/ui/status/powerProfiles.js:31 msgctxt "Power profile" msgid "Power Saver" msgstr "Varčno" #: js/ui/status/powerProfiles.js:41 js/ui/status/powerProfiles.js:71 msgid "Power Mode" msgstr "Način delovanja" #: js/ui/status/powerProfiles.js:73 msgid "Power Settings" msgstr "Upravljanje napajanja" #: js/ui/status/remoteAccess.js:76 msgid "Stop Screencast" msgstr "Zaustavi zaslonski posnetek" #: js/ui/status/remoteAccess.js:146 msgid "Stop Screen Sharing" msgstr "Prekini souporabo zaslona" #: js/ui/status/rfkill.js:101 msgid "Airplane Mode" msgstr "Način letala" #: js/ui/status/system.js:170 msgid "Power Off Menu" msgstr "Meni izklopa" #: js/ui/status/system.js:178 msgid "Suspend" msgstr "V pripravljenost …" #: js/ui/status/system.js:183 msgid "Restart…" msgstr "Ponovno zaženi …" #: js/ui/status/system.js:188 msgid "Power Off…" msgstr "Izklopi …" #: js/ui/status/system.js:195 #: subprojects/extensions-app/data/ui/extensions-window.ui:124 msgid "Log Out…" msgstr "Odjava …" #: js/ui/status/system.js:200 msgid "Switch User…" msgstr "Preklopi uporabnika …" #: js/ui/status/system.js:244 msgctxt "action" msgid "Lock Screen" msgstr "Zakleni zaslon" #: js/ui/status/thunderbolt.js:310 msgid "Unknown Thunderbolt device" msgstr "Neznana naprava Thunderbolt" #: js/ui/status/thunderbolt.js:311 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" "Med nedejavnostjo je bila zaznana nova. Odklopite napravo in jo znova " "priklopite za uporabo." #: js/ui/status/thunderbolt.js:314 msgid "Unauthorized Thunderbolt device" msgstr "Neznana naprava Thunderbolt" #: js/ui/status/thunderbolt.js:315 msgid "" "New device has been detected and needs to be authorized by an administrator" msgstr "Zaznana je nova naprava, ki jo mora overiti skrbnik sistema." #: js/ui/status/thunderbolt.js:321 msgid "Thunderbolt authorization error" msgstr "Napaka overitve naprave Thunderbolt" #: js/ui/status/thunderbolt.js:322 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "Naprave Thunderbolt ni mogoče overiti: %s" #: js/ui/status/volume.js:220 msgid "Volume changed" msgstr "Glasnost je spremenjena" #: js/ui/status/volume.js:233 msgid "Unmute" msgstr "Povrni glasnost" #: js/ui/status/volume.js:233 msgid "Mute" msgstr "Utišaj" #: js/ui/status/volume.js:288 msgid "Volume" msgstr "Glasnost" #: js/ui/status/volume.js:304 msgid "Sound Output" msgstr "Odvod zvoka" #: js/ui/status/volume.js:376 msgid "Sound Input" msgstr "Dovod zvoka" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:22 msgid "Mirror" msgstr "Zrcaljenje zaslona" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:31 msgid "Join Displays" msgstr "Združi zaslone" #. Translators: this is for using only external displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:41 msgid "External Only" msgstr "Le zunanje" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:49 msgid "Built-in Only" msgstr "Le vgrajeno" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:380 msgid "%A %B %-d" msgstr "%A %B %-d" #: js/ui/unlockDialog.js:386 msgid "Swipe up to unlock" msgstr "Povlecite navzgor za odklepanje" #: js/ui/unlockDialog.js:387 msgid "Click or press a key to unlock" msgstr "Kliknite, ali pa pritisnite poljubno tipko za prikaz prijavnega okna" #: js/ui/unlockDialog.js:570 msgid "Unlock Window" msgstr "Odkleni okno" #: js/ui/unlockDialog.js:579 msgid "Log in as another user" msgstr "Prijavi z drugim uporabniškim imenom" #: js/ui/welcomeDialog.js:49 #, javascript-format msgid "GNOME %s" msgstr "GNOME %s" #: js/ui/welcomeDialog.js:53 #, javascript-format msgid "Welcome to %s" msgstr "Dobrodošli v %s" #: js/ui/welcomeDialog.js:54 msgid "If you want to learn your way around, check out the tour" msgstr "Če se hočete najprej na hitro razgledati po namizju, sledite vodiču." #: js/ui/welcomeDialog.js:63 msgid "Skip" msgstr "Preskoči" #: js/ui/welcomeDialog.js:68 msgid "Take Tour" msgstr "Vodič GNOME" #: js/ui/windowAttentionHandler.js:20 #, javascript-format msgid "“%s” is ready" msgstr "Storitev »%s« je pripravljena" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:70 msgid "Keep these display settings?" msgstr "Ali želite ohraniti te nastavitve zaslona?" #: js/ui/windowManager.js:80 msgid "Revert Settings" msgstr "Povrni nastavitve" #: js/ui/windowManager.js:85 msgid "Keep Changes" msgstr "Ohrani spremembe" #: js/ui/windowManager.js:105 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "Spremembe nastavitev bodo povrnjene v %d sekundah." msgstr[1] "Spremembe nastavitev bodo povrnjene v %d sekundi." msgstr[2] "Spremembe nastavitev bodo povrnjene v %d sekundah." msgstr[3] "Spremembe nastavitev bodo povrnjene v %d sekundah." #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:502 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:42 msgid "Hide" msgstr "Skrij" #: js/ui/windowMenu.js:49 msgid "Restore" msgstr "Obnovi" #: js/ui/windowMenu.js:53 msgid "Maximize" msgstr "Razpni" #: js/ui/windowMenu.js:60 msgid "Move" msgstr "Premakni" #: js/ui/windowMenu.js:80 msgid "Resize" msgstr "Spremeni velikost" #: js/ui/windowMenu.js:100 msgid "Always on Top" msgstr "Vedno na vrhu" #: js/ui/windowMenu.js:119 msgid "Always on Visible Workspace" msgstr "Vedno na dejavni delovni površini" #: js/ui/windowMenu.js:133 msgid "Move to Workspace Left" msgstr "Premakni na delovno površino na levi" #: js/ui/windowMenu.js:139 msgid "Move to Workspace Right" msgstr "Premakni na delovno površino na desni" #: js/ui/windowMenu.js:145 msgid "Move to Workspace Up" msgstr "Premakni na zgornjo delovno površino" #: js/ui/windowMenu.js:151 msgid "Move to Workspace Down" msgstr "Premakni na spodnjo delovno površino" #: js/ui/windowMenu.js:169 msgid "Move to Monitor Up" msgstr "Premakni na zaslon zgoraj" #: js/ui/windowMenu.js:178 msgid "Move to Monitor Down" msgstr "Premakni na zaslon spodaj" #: js/ui/windowMenu.js:187 msgid "Move to Monitor Left" msgstr "Premakni na zaslon levo" #: js/ui/windowMenu.js:196 msgid "Move to Monitor Right" msgstr "Premakni na zaslon desno" #: js/ui/windowMenu.js:204 msgid "Close" msgstr "Zapri" #: src/main.c:529 subprojects/extensions-tool/src/main.c:336 msgid "Print version" msgstr "Izpiši različico" #: src/main.c:535 msgid "Mode used by GDM for login screen" msgstr "Način, uporabljen v upravljalniku GDM kot prijavni zaslon" #: src/main.c:541 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "Uporabi poseben način, na primer »gdm« za prijavni zaslon" #: src/main.c:547 msgid "List possible modes" msgstr "Seznam mogočih načinov" #: src/main.c:553 msgid "Force animations to be enabled" msgstr "Vsili omogočanje animacij" #: src/shell-app.c:252 msgctxt "program" msgid "Unknown" msgstr "Neznano" #: src/shell-app.c:503 #, c-format msgid "Failed to launch “%s”" msgstr "Zaganjanje »%s« je spodletelo" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match" msgstr "Gesli se ne ujemata" #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "Geslo ne more biti prazna vrednost" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "Uporabnik je preklical pogovorno okno overitve" #: src/st/st-icon-theme.c:1865 #, c-format msgid "Icon '%s' not present in theme %s" msgstr "Ikone »%s« v temi %s ni mogoče najti." #: src/st/st-icon-theme.c:3454 src/st/st-icon-theme.c:3757 msgid "Failed to load icon" msgstr "Nalaganje ikone je spodletelo" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 msgid "Manage your GNOME Extensions" msgstr "Upravljanje z razširitvami Lupine GNOME" #. developer_name tag deprecated with Appstream 1.0 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:19 msgid "The GNOME Project" msgstr "Projekt GNOME" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:51 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" "Program Razširitve GNOME omogoča nameščanje in posodabljanje razširitev, " "prilagajanje nastavitev in upravljanje njihovega delovanja." #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:63 msgid "Main Window" msgstr "Glavno okno" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:67 msgid "Available Updates" msgstr "Razpoložljive posodobitve" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:71 msgid "Search View" msgstr "Iskalni pogled" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "Nastavitve razširitev lupine GNOME" #: subprojects/extensions-app/js/extensionManager.js:237 #, javascript-format msgid "" "The installed version of this extension (%s) is incompatible with the " "current version of GNOME (%s). The extension has been disabled." msgstr "" "Nameščena razširitev (%s) ni skladna s trenutno nameščeno različico okolja " "GNOME (%s). Razširitev je onemogočena.." #: subprojects/extensions-app/js/extensionManager.js:238 #, javascript-format msgid "" "The installed version of this extension is incompatible with the current " "version of GNOME (%s). The extension has been disabled." msgstr "" "Nameščena razširitev ni skladna s trenutno nameščeno različico okolja GNOME " "(%s). Razširitev je onemogočena.." #: subprojects/extensions-app/js/extensionManager.js:242 msgid "" "An error has occurred in this extension. This could cause issues elsewhere " "in the system. It is recommended to turn the extension off until the error " "is resolved." msgstr "" "Pri delovanju razširitve je prišlo do napake. To lahko povzroči druge " "sistemske težave. Razširitev je priporočljivo onemogočiti, dokler se napaka " "ne odpravi." #. translators: Details for an extension error #: subprojects/extensions-app/js/extensionManager.js:248 msgid "Error details:" msgstr "Podrobnosti napake:" #: subprojects/extensions-app/js/extensionRow.js:82 #, javascript-format msgid "Version %s" msgstr "Različica %s" #: subprojects/extensions-app/js/extensionsWindow.js:113 #, javascript-format msgid "Remove “%s”?" msgstr "Ali želite odstraniti »%s«?" #: subprojects/extensions-app/js/extensionsWindow.js:114 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "" "Če razširitev odstranite, jo je treba pred ponovno namestitvijo najprej " "prejeti iz omrežja." #: subprojects/extensions-app/js/extensionsWindow.js:117 msgid "_Cancel" msgstr "_Prekliči" #: subprojects/extensions-app/js/extensionsWindow.js:118 msgid "_Remove" msgstr "_Odstrani" #: subprojects/extensions-app/js/extensionsWindow.js:158 msgid "translator-credits" msgstr "Matej Urbančič " #: subprojects/extensions-app/js/extensionsWindow.js:203 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "Ob naslednji prijavi bo posodobljenih %d razširitev." msgstr[1] "Ob naslednji prijavi bo posodobljena %d razširitev." msgstr[2] "Ob naslednji prijavi bosta posodobljeni %d razširitvi." msgstr[3] "Ob naslednji prijavi bodo posodobljene %d razširitve." #: subprojects/extensions-app/data/ui/extension-row.ui:22 msgid "Error Details" msgstr "Podrobnosti napake" #: subprojects/extensions-app/data/ui/extension-row.ui:62 msgid "Updates Details" msgstr "Podrobnosti posodobitve" #: subprojects/extensions-app/data/ui/extension-row.ui:72 msgid "" "A new version of this extension is ready and will be loaded on next login." msgstr "" "Nova različica razširitve je pripravljena in bo naložena ob naslednji " "prijavi." #: subprojects/extensions-app/data/ui/extension-row.ui:104 msgid "Extension Details" msgstr "Podrobnosti razširitve" #: subprojects/extensions-app/data/ui/extension-row.ui:192 msgid "_Website" msgstr "_Spletna stran" #: subprojects/extensions-app/data/ui/extension-row.ui:219 msgid "_Settings" msgstr "_Nastavitve" #: subprojects/extensions-app/data/ui/extension-row.ui:246 msgid "_Remove…" msgstr "_Odstrani …" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Keyboard Shortcuts" msgstr "Tipkovne bližnjice‫" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "O programu razširitev" #: subprojects/extensions-app/data/ui/extensions-window.ui:64 msgid "Main Menu" msgstr "Glavni meni" #: subprojects/extensions-app/data/ui/extensions-window.ui:106 msgid "Search extensions" msgstr "Iskanje razširitev" #: subprojects/extensions-app/data/ui/extensions-window.ui:134 msgid "_Extensions" msgstr "_Razširitve" #: subprojects/extensions-app/data/ui/extensions-window.ui:139 msgid "More Information" msgstr "Več podrobnosti" #: subprojects/extensions-app/data/ui/extensions-window.ui:151 msgid "" "Extensions can cause performance and stability issues. It is recommended to " "disable all extensions if you experience problems with your system." msgstr "" "Razširitve lahko vplivajo na delovanje in stabilnost programa. V primeru " "težav, je priporočljivo razširitve onemogočiti." #: subprojects/extensions-app/data/ui/extensions-window.ui:178 msgid "User Extensions" msgstr "Uporabniške razširitve" #: subprojects/extensions-app/data/ui/extensions-window.ui:198 msgid "System Extensions" msgstr "Sistemske razširitve" #: subprojects/extensions-app/data/ui/extensions-window.ui:233 msgid "Search Results" msgstr "Zadetki iskanja" #: subprojects/extensions-app/data/ui/extensions-window.ui:252 msgid "No Results Found" msgstr "Ni najdenih zadetkov." #: subprojects/extensions-app/data/ui/extensions-window.ui:253 msgid "Try a different search" msgstr "Poskusi z drugačnim iskanjem" #: subprojects/extensions-app/data/ui/extensions-window.ui:264 msgid "No Installed Extensions" msgstr "Ni nameščenih razširitev" #: subprojects/extensions-app/data/ui/extensions-window.ui:265 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" "Za iskanje in dodajanje razširitev obiščite spletne strani extensions.gnome.org." #: subprojects/extensions-app/data/ui/extensions-window.ui:276 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" "Kaže, da ni mogoče pridobiti seznama nameščenih razširitev. Prepričajte se, " "da ste prijavljeni v namizje GNOME in poskusite znova." #: subprojects/extensions-app/data/ui/help-overlay.ui:9 msgctxt "shortcut window" msgid "General" msgstr "Splošno" #: subprojects/extensions-app/data/ui/help-overlay.ui:12 msgctxt "shortcut window" msgid "Open Menu" msgstr "Odpre meni" #: subprojects/extensions-app/data/ui/help-overlay.ui:18 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Preklopi prikaz iskalne vrstice" #: subprojects/extensions-app/data/ui/help-overlay.ui:24 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Pokaže tipkovne bližnjice‫" #: subprojects/extensions-app/data/ui/help-overlay.ui:30 msgctxt "shortcut window" msgid "Quit" msgstr "Konča program" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:284 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "Nova razširitev je uspešno ustvarjena v mapi %s.\n" #: subprojects/extensions-tool/src/command-create.c:376 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" "Ime naj bo kratek in (najbolje opisen) niz.\n" "Primer:: %s" #: subprojects/extensions-tool/src/command-create.c:382 #: subprojects/extensions-tool/src/main.c:243 msgid "Name" msgstr "Ime" #: subprojects/extensions-tool/src/command-create.c:396 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" "Opis je enostavčna predstavitev, kaj razširitev omogoča.\n" "Na primer: %s" #: subprojects/extensions-tool/src/command-create.c:402 #: subprojects/extensions-tool/src/main.c:246 msgid "Description" msgstr "Opis" #: subprojects/extensions-tool/src/command-create.c:416 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" "Določilo UUID je splošno-enoznačno določilo razširitve.\n" "Zapisano mora biti v obliki elektronskega naslova (na primer: " "clicktofocus@janedoe.example.com)\n" #: subprojects/extensions-tool/src/command-create.c:443 msgid "Choose one of the available templates:\n" msgstr "Izberite eno izmed razpoložljivih predlog:\n" #: subprojects/extensions-tool/src/command-create.c:457 msgid "Template" msgstr "Predloga" #: subprojects/extensions-tool/src/command-create.c:515 msgid "The unique identifier of the new extension" msgstr "Enoznačno določilo nove razširitve" #: subprojects/extensions-tool/src/command-create.c:518 msgid "NAME" msgstr "IME" #: subprojects/extensions-tool/src/command-create.c:519 msgid "The user-visible name of the new extension" msgstr "Prikazano ime nove razširitve" #: subprojects/extensions-tool/src/command-create.c:521 msgid "DESCRIPTION" msgstr "OPIS" #: subprojects/extensions-tool/src/command-create.c:523 msgid "A short description of what the extension does" msgstr "Kratek opis funkcije razširitve" #: subprojects/extensions-tool/src/command-create.c:525 #: subprojects/extensions-tool/src/command-pack.c:455 msgid "DOMAIN" msgstr "DOMENA" #: subprojects/extensions-tool/src/command-create.c:527 msgid "The gettext domain used by the extension" msgstr "Domena gettext, ki jo razširitev uporablja" #: subprojects/extensions-tool/src/command-create.c:529 #: subprojects/extensions-tool/src/command-pack.c:448 msgid "SCHEMA" msgstr "Shema" #: subprojects/extensions-tool/src/command-create.c:531 msgid "The GSettings schema used by the extension" msgstr "Shema GSettings, ki jo razširitev uporablja" #: subprojects/extensions-tool/src/command-create.c:534 msgid "TEMPLATE" msgstr "PREDLOGA" #: subprojects/extensions-tool/src/command-create.c:535 msgid "The template to use for the new extension" msgstr "Predloga za uporabo z novo razširitvijo" #: subprojects/extensions-tool/src/command-create.c:538 msgid "Include prefs.js template" msgstr "Vključi predlogo prefs.js" #: subprojects/extensions-tool/src/command-create.c:544 msgid "Enter extension information interactively" msgstr "Vnos podrobnosti razširitve" #: subprojects/extensions-tool/src/command-create.c:552 msgid "Create a new extension" msgstr "Ustvari novo razširitev" #: subprojects/extensions-tool/src/command-create.c:570 #: subprojects/extensions-tool/src/command-list.c:190 msgid "Unknown arguments" msgstr "Neznani argumenti" #: subprojects/extensions-tool/src/command-create.c:595 msgid "UUID, name and description are required" msgstr "Zahtevani so določilo UUID, ime in opis" #: subprojects/extensions-tool/src/command-disable.c:62 #: subprojects/extensions-tool/src/command-enable.c:62 #, c-format msgid "Extension “%s” does not exist\n" msgstr "Razširitev »%s« ne obstaja.\n" #: subprojects/extensions-tool/src/command-disable.c:98 msgid "Disable an extension" msgstr "Onemogoči razširitev" #: subprojects/extensions-tool/src/command-disable.c:116 #: subprojects/extensions-tool/src/command-enable.c:116 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "Ni podanega UUID" #: subprojects/extensions-tool/src/command-disable.c:121 #: subprojects/extensions-tool/src/command-enable.c:121 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "Podano je več kot eno določilo UUID" #: subprojects/extensions-tool/src/command-enable.c:98 msgid "Enable an extension" msgstr "Onemogoči razširitev" #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:66 #: subprojects/extensions-tool/src/main.c:150 msgid "Failed to connect to GNOME Shell\n" msgstr "Povezava z Lupino GNOME je spodletela\n" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:159 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "Razširitev »%s« ne obstaja.\n" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "Pokaži podrobnosti razširitev" #: subprojects/extensions-tool/src/command-install.c:190 msgid "Overwrite an existing extension" msgstr "Prepiši obstoječo razširitev" #: subprojects/extensions-tool/src/command-install.c:192 msgid "EXTENSION_BUNDLE" msgstr "PAKET_RAZŠIRITVE" #: subprojects/extensions-tool/src/command-install.c:201 msgid "Install an extension bundle" msgstr "Namesti paket razširitve" #: subprojects/extensions-tool/src/command-install.c:219 msgid "No extension bundle specified" msgstr "Ni navedenega paketa razširitev" #: subprojects/extensions-tool/src/command-install.c:225 msgid "More than one extension bundle specified" msgstr "Določen je več kot en paket razširitve" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show user-installed extensions" msgstr "Pokaži uporabniško nameščene razširitve" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show system-installed extensions" msgstr "Pokaži sistemsko nameščene razširitve lupine" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Show enabled extensions" msgstr "Pokaži omogočene razširitve" #: subprojects/extensions-tool/src/command-list.c:149 msgid "Show disabled extensions" msgstr "Pokaži onemogočene razširitve" #: subprojects/extensions-tool/src/command-list.c:152 msgid "Show extensions in active state" msgstr "Pokaži zagnane razširitve" #: subprojects/extensions-tool/src/command-list.c:155 msgid "Show extensions in inactive state" msgstr "Pokaži izklopljene razširitve" #: subprojects/extensions-tool/src/command-list.c:158 msgid "Show extensions with preferences" msgstr "Pokaži razširitve z lastnostmi" #: subprojects/extensions-tool/src/command-list.c:161 msgid "Show extensions with updates" msgstr "Pokaži razširitve s posodobitvami" #: subprojects/extensions-tool/src/command-list.c:164 msgid "Print extension details" msgstr "Natisni podrobnosti razširitve" #: subprojects/extensions-tool/src/command-list.c:172 msgid "List installed extensions" msgstr "Izpiše seznam nameščenih razširitev" #: subprojects/extensions-tool/src/command-pack.c:444 msgid "FILE" msgstr "DATOTEKA" #: subprojects/extensions-tool/src/command-pack.c:445 msgid "Additional source to include in the bundle" msgstr "Dodatni viri, ki morajo biti vključeni v paket" #: subprojects/extensions-tool/src/command-pack.c:449 msgid "A GSettings schema that should be included" msgstr "Shema GSettings, ki naj bo vključena v paket" #: subprojects/extensions-tool/src/command-pack.c:451 #: subprojects/extensions-tool/src/command-pack.c:462 msgid "DIRECTORY" msgstr "MAPA" #: subprojects/extensions-tool/src/command-pack.c:453 msgid "The directory where translations are found" msgstr "Mapa, kjer bodo shranjeni prevodi" #: subprojects/extensions-tool/src/command-pack.c:457 msgid "The gettext domain to use for translations" msgstr "Domena prevajanja, ki jo uporablja gettext" #: subprojects/extensions-tool/src/command-pack.c:460 msgid "Overwrite an existing pack" msgstr "Prepiši obstoječ paket" #: subprojects/extensions-tool/src/command-pack.c:464 msgid "The directory where the pack should be created" msgstr "Mapa, v kateri bo ustvarjen paket" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "SOURCE_DIRECTORY" msgstr "Izvorna mapa" #: subprojects/extensions-tool/src/command-pack.c:475 msgid "Create an extension bundle" msgstr "Ustvari paket razširitve" #: subprojects/extensions-tool/src/command-pack.c:495 msgid "More than one source directory specified" msgstr "Določena je več kot ena izvorna mapa" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "Razširitev »%s« nima posebnih nastavitev\n" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "Odpiranje lastnosti razširitve »%s« je spodletelo: %s\n" #: subprojects/extensions-tool/src/command-prefs.c:87 msgid "Opens extension preferences" msgstr "Odpre možnosti razširitve" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "Ponastavi razširitev" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "Sistemskih razširitev ni mogoče odstraniti\n" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "Odstranjevanje namestitve »%s« je spodletelo\n" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "Odstrani razširitev" #: subprojects/extensions-tool/src/main.c:76 msgid "Do not print error messages" msgstr "Ne izpisuj sporočil o napakah" #: subprojects/extensions-tool/src/main.c:249 msgid "Path" msgstr "Pot" #: subprojects/extensions-tool/src/main.c:252 msgid "URL" msgstr "Naslov URL" #: subprojects/extensions-tool/src/main.c:255 msgid "Original author" msgstr "Izvorni avtor" #: subprojects/extensions-tool/src/main.c:261 #: subprojects/extensions-tool/src/main.c:263 #: subprojects/extensions-tool/src/main.c:265 msgid "Version" msgstr "Različica" #: subprojects/extensions-tool/src/main.c:268 msgid "Enabled" msgstr "Omogočeno" #: subprojects/extensions-tool/src/main.c:268 msgid "Yes" msgstr "Da" #: subprojects/extensions-tool/src/main.c:268 msgid "No" msgstr "Ne" #: subprojects/extensions-tool/src/main.c:271 msgid "State" msgstr "Stanje" #: subprojects/extensions-tool/src/main.c:309 msgid "“version” takes no arguments" msgstr "»različica« ne prevzema argumentov" #: subprojects/extensions-tool/src/main.c:311 #: subprojects/extensions-tool/src/main.c:331 msgid "Usage:" msgstr "Uporaba:" #: subprojects/extensions-tool/src/main.c:314 msgid "Print version information and exit." msgstr "Izpiši podatke o različici in končaj." #: subprojects/extensions-tool/src/main.c:329 #: subprojects/extensions-tool/src/main.c:332 msgid "COMMAND" msgstr "UKAZ" #: subprojects/extensions-tool/src/main.c:332 msgid "[ARGS…]" msgstr "[ARGUMENTI ...]" #: subprojects/extensions-tool/src/main.c:334 msgid "Commands:" msgstr "Ukazi:" #: subprojects/extensions-tool/src/main.c:335 msgid "Print help" msgstr "Izpiši pomoč" #: subprojects/extensions-tool/src/main.c:337 msgid "Enable extension" msgstr "Omogoči razširitev" #: subprojects/extensions-tool/src/main.c:338 msgid "Disable extension" msgstr "Onemogoči razširitev" #: subprojects/extensions-tool/src/main.c:339 msgid "Reset extension" msgstr "Ponastavi razširitev" #: subprojects/extensions-tool/src/main.c:340 msgid "Uninstall extension" msgstr "Odstrani razširitev" #: subprojects/extensions-tool/src/main.c:341 msgid "List extensions" msgstr "Izpiši seznam razširitev" #: subprojects/extensions-tool/src/main.c:342 #: subprojects/extensions-tool/src/main.c:343 msgid "Show extension info" msgstr "Pokaži podatke razširitve" #: subprojects/extensions-tool/src/main.c:344 msgid "Open extension preferences" msgstr "Odpri možnosti razširitve" #: subprojects/extensions-tool/src/main.c:345 msgid "Create extension" msgstr "Ustvari razširitev" #: subprojects/extensions-tool/src/main.c:346 msgid "Package extension" msgstr "Razširitev paketa" #: subprojects/extensions-tool/src/main.c:347 msgid "Install extension bundle" msgstr "Namesti paket razširitve" #: subprojects/extensions-tool/src/main.c:349 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "Z ukazom »%s« se izpiše podrobna pomoč.\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "Običajno" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "Prazna razširitev" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "Kazalnik" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "Dodaj ikono v vrhnjo orodno vrstico" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:4 msgid "Quick Settings Item" msgstr "Predmet hitre nastavitve" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:5 msgid "Add an item to quick settings" msgstr "Dodaj predmet med hitre nastavitve" #. translators: #. * The device has been disabled #: subprojects/gvc/gvc-mixer-control.c:1872 msgid "Disabled" msgstr "Onemogočeno" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1879 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u odvodov naprave" msgstr[1] "%u odvod naprave" msgstr[2] "%u odvoda naprave" msgstr[3] "%u odvodi naprave" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1889 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u dovodov naprave" msgstr[1] "%u dovod naprave" msgstr[2] "%u dovoda naprave" msgstr[3] "%u dovodi naprave" #: subprojects/gvc/gvc-mixer-control.c:2872 msgid "System Sounds" msgstr "Sistemski zvoki" 07070100000261000081A40000000000000000000000016712993F00022F8F000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/sr.po# Serbian translation for gnome-shell. # Courtesy of Prevod.org team (http://prevod.org/) -- 2010—2023. # Copyright © 2010 gnome-shell's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-shell package. # Translators: # Борисав Живановић , 2017—2018. # Марко М. Костић , 2016-2020. # Мирослав Николић , 2011–2023. # Branko Grubic , 2024. # Милош Поповић , 2010—20-2024. # msgid "" msgstr "" "Project-Id-Version: gnome-shell\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues/\n" "POT-Creation-Date: 2024-03-21 23:37+0000\n" "PO-Revision-Date: 2024-03-29 14:34+0100\n" "Last-Translator: Милош Поповић \n" "Language-Team: Serbian >\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=4; plural=n==1? 3 : n%10==1 && n%100!=11 ? 0 : " "n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2\n" "X-Project-Style: gnome\n" "X-Poedit-Bookmarks: -1,167,-1,-1,-1,-1,-1,-1,-1,-1\n" "X-Generator: Gtranslator 45.3\n" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "Покретачи" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate pinned app 1" msgstr "Покрени омиљени програм 1" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate pinned app 2" msgstr "Покрени омиљени програм 2" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate pinned app 3" msgstr "Покрени омиљени програм 3" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate pinned app 4" msgstr "Покрени омиљени програм 4" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate pinned app 5" msgstr "Покрени омиљени програм 5" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate pinned app 6" msgstr "Покрени омиљени програм 6" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate pinned app 7" msgstr "Покрени омиљени програм 7" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate pinned app 8" msgstr "Покрени омиљени програм 8" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate pinned app 9" msgstr "Покрени омиљени програм 9" #: data/50-gnome-shell-launchers.xml:46 msgid "Open new window of pinned app 1" msgstr "Отвори нови прозор омиљеног програма 1" #: data/50-gnome-shell-launchers.xml:50 msgid "Open new window of pinned app 2" msgstr "Отвори нови прозор омиљеног програма 2" #: data/50-gnome-shell-launchers.xml:54 msgid "Open new window of pinned app 3" msgstr "Отвори нови прозор омиљеног програма 3" #: data/50-gnome-shell-launchers.xml:58 msgid "Open new window of pinned app 4" msgstr "Отвори нови прозор омиљеног програма 4" #: data/50-gnome-shell-launchers.xml:62 msgid "Open new window of pinned app 5" msgstr "Отвори нови прозор омиљеног програма 5" #: data/50-gnome-shell-launchers.xml:66 msgid "Open new window of pinned app 6" msgstr "Отвори нови прозор омиљеног програма 6" #: data/50-gnome-shell-launchers.xml:70 msgid "Open new window of pinned app 7" msgstr "Отвори нови прозор омиљеног програма 8" #: data/50-gnome-shell-launchers.xml:74 msgid "Open new window of pinned app 8" msgstr "Отвори нови прозор омиљеног програма 8" #: data/50-gnome-shell-launchers.xml:78 msgid "Open new window of pinned app 9" msgstr "Отвори нови прозор омиљеног програма 9" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2276 msgid "Screenshots" msgstr "Снимци екрана" #: data/50-gnome-shell-screenshots.xml:9 #: data/org.gnome.shell.gschema.xml.in:287 msgid "Take a screenshot interactively" msgstr "Направите интерактивни снимак екрана" #: data/50-gnome-shell-screenshots.xml:12 #: data/org.gnome.shell.gschema.xml.in:299 msgid "Take a screenshot" msgstr "Направи снимак екрана" #: data/50-gnome-shell-screenshots.xml:15 #: data/org.gnome.shell.gschema.xml.in:295 msgid "Take a screenshot of a window" msgstr "Направи снимак прозора" #: data/50-gnome-shell-screenshots.xml:18 #: data/org.gnome.shell.gschema.xml.in:291 msgid "Record a screencast interactively" msgstr "Интерактивно сними видео екрана" #: data/50-gnome-shell-system.xml:6 js/ui/messageTray.js:1293 msgid "System" msgstr "Систем" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "Прикажите списак обавештења" #: data/50-gnome-shell-system.xml:12 msgid "Open the quick settings menu" msgstr "Отвори мени брзих подешавања" #: data/50-gnome-shell-system.xml:15 msgid "Focus the active notification" msgstr "Поставите у жижу активно обавештење" #: data/50-gnome-shell-system.xml:18 msgid "Show the overview" msgstr "Прикажи преглед" #: data/50-gnome-shell-system.xml:21 msgid "Show all apps" msgstr "Прикажи све програме" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "Гномова шкољка" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "Управник прозорима и покретач програма" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "Укључује алате корисне програмерима и тестерима из „Alt-F2“ прозорчета" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Дозвољава приступ унутрашњем отклањању грешака и алатима за праћење " "коришћењем „Alt-F2“ прозорчета." #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "ЈУИБ-ови проширења за укључивање" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "Проширења Гномове шкољке имају ЈУИБ вредност; овај кључ исписује проширења " "која треба учитавати. Свако проширење које жели бити учитано мора бити на " "списку. Такође можете да управљате овим списком користећи начине Д-" "магистрале „Укључи проширење“ и „Искључи проширење“ на „org.gnome.Shell“." #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "Насилно онемогућавање за следеће ЈУИБ-ове проширења" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" "Проширења Гномове шкољке имају ЈУИБ вредност; овај кључ исписује проширења " "која треба онемогућити, чак иако су учитани као део тренутног режима. Можете " "мењати овај списак методама д-сабирнице под називима EnableExtension и " "DisableExtension, на org.gnome.Shell. Овај кључ има предност у односу на " "подешавање \"enabled-extensions\"." #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "Искључује корисничка проширења" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" "Искључује сва проширења која је укључио корисник без деловања на подешавање " "„enabled-extension“." #: data/org.gnome.shell.gschema.xml.in:45 msgid "Allow extension installation" msgstr "Дозволи инсталирање проширења" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "Allow users to install extensions in their home folder. If disabled, the " "InstallRemoteExtension D-Bus method will fail, and extensions are only " "loaded from system directories on startup. It does not affect extensions " "that are already loaded, so a change only takes full effect on the next " "login." msgstr "" "Омогућава корисницима да инсталирају проширења у њихову личну фасциклу. Ако је " "искључено, InstallRemoteExtension Д-Бас метода неће успети и проширења ће " "бити учитана само из системске датотеке при покретању. Не утиче на проширења " "која су већ учитана, тако да ће промена бити примењена након следећег " "пријављивања." #: data/org.gnome.shell.gschema.xml.in:56 msgid "Disables the validation of extension version compatibility" msgstr "Искључује потврђивање сагласности издања проширења" #: data/org.gnome.shell.gschema.xml.in:57 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "Гномова шкољка ће учитати само проширења која тврде да подржавају текуће " "покренуто издање. Укључивање ове опције ће искључити ову проверу и покушати " "да учита проширења без обзира на издања која тврде да подржавају." #: data/org.gnome.shell.gschema.xml.in:65 msgid "List of desktop file IDs for favorite applications" msgstr "Списак ИБ датотека радне површине са омиљеним програмима" #: data/org.gnome.shell.gschema.xml.in:66 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" "Програми који одговарају овим одредницама се приказују унутар области " "омиљених програмима." #: data/org.gnome.shell.gschema.xml.in:73 msgid "History for command (Alt-F2) dialog" msgstr "Историјат прозорчета (Alt-F2) наредби" #. Translators: looking glass is a debugger and inspector tool, see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/docs/looking-glass.md #: data/org.gnome.shell.gschema.xml.in:78 msgid "History for the looking glass dialog" msgstr "Историјат прозорчета огледала" #: data/org.gnome.shell.gschema.xml.in:82 msgid "Always show the “Log Out” action in the system menu" msgstr "Увек приказује ставку изборника „Одјави ме“ у системском изборнику." #: data/org.gnome.shell.gschema.xml.in:83 msgid "" "This key overrides the automatic hiding of the “Log out” action in the " "system menu for logged-in situations where there is a single, local, non-" "system user and only a single available session type (e.g. GNOME on Wayland)." msgstr "" "Овај кључ превазилази самостално скривање ставке изборника „Одјави ме“ у " "случају једног локалног корисника, не системског корисника и само једине " "доступне врсте сесије (нпр. Гном на Вејланду)." #: data/org.gnome.shell.gschema.xml.in:92 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "Да ли ће бити запамћена лозинка за качење шифрованих или удаљених система " "датотека" #: data/org.gnome.shell.gschema.xml.in:93 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "Шкољка ће затражити лозинку када се прикачи шифровани уређај или удаљени " "систем датотека. Ако лозинка може бити сачувана за даљњу употребу биће " "присутно поље за избор „Запамти лозинку“. Овај кључ подешава основно стање " "поља за избор." #: data/org.gnome.shell.gschema.xml.in:102 msgid "The last selected non-default power profile" msgstr "Последње изабрани неподразумевани профил напајања" #: data/org.gnome.shell.gschema.xml.in:103 msgid "" "Some systems support more than two power profiles. In order to still support " "toggling between two profiles, this key records the last selected non-" "default profile." msgstr "" "Неки системи подржавају више од два профила напајања. Да бисмо подржали " "промену између два профила, овај кључ чува последње изабрани неподразумевани " "профил." #: data/org.gnome.shell.gschema.xml.in:111 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "Последње издање прозорчета „Добро дошли у Гном“ које је приказано" #: data/org.gnome.shell.gschema.xml.in:112 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can " "be used to effectively disable the dialog." msgstr "" "Овај кључ приказује издање прозорчета „Добро дошли у Гном“ које је " "приказано. Празна ниска представља најстарију могућу верзију а велики број " "представља издања која још не постоје. Овај велики број се може искористити " "за ефективно онемогућавање прозорчета." #: data/org.gnome.shell.gschema.xml.in:145 msgid "Layout of the app picker" msgstr "Распоред бирача програма" #: data/org.gnome.shell.gschema.xml.in:146 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" msgstr "" "Распоред бирача програма. Свака ставка у низу је страница. Странице се " "чувају онако како се појављују у Гномовој шкољки. Свака страница садржи пар " "“application id” → 'data'. Тренутно, следеће вредности се чувају као 'data': " "• “position”: положај иконице програма на страници" #: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:172 msgid "Keybinding to shift between overview states" msgstr "Пречица на тастатури за промену између стања прегледа" #: data/org.gnome.shell.gschema.xml.in:166 msgid "Keybinding to shift between session, window picker and app grid" msgstr "" "Пречица на тастатури за промену између сесије, бирача прозора и мреже " "програма" #: data/org.gnome.shell.gschema.xml.in:173 msgid "Keybinding to shift between app grid, window picker and session" msgstr "" "Пречица на тастатури за промену између мреже програма, бирача прозора и " "сесије" #: data/org.gnome.shell.gschema.xml.in:179 msgid "Keybinding to open the “Show Applications” view" msgstr "Пречица за отварање прегледа „Прикажи програме“" #: data/org.gnome.shell.gschema.xml.in:180 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "Пречица за отварање прегледа „Прикажи програме“ у прегледу активности." #: data/org.gnome.shell.gschema.xml.in:187 msgid "Keybinding to open the overview" msgstr "Пречица за отварање прегледа" #: data/org.gnome.shell.gschema.xml.in:188 msgid "Keybinding to open the Activities Overview." msgstr "Пречица за отварање прегледа активности." #: data/org.gnome.shell.gschema.xml.in:194 msgid "Keybinding to toggle the visibility of the notification list" msgstr "Пречица за окидање видљивости списка обавештења" #: data/org.gnome.shell.gschema.xml.in:195 msgid "Keybinding to toggle the visibility of the notification list." msgstr "Пречица за окидање видљивости списка обавештења." #: data/org.gnome.shell.gschema.xml.in:201 msgid "Keybinding to toggle the quick settings menu" msgstr "Пречица за промену стања приказа менија брзих подешавања" #: data/org.gnome.shell.gschema.xml.in:202 msgid "Keybinding to toggle the quick settings menu." msgstr "Пречица за промену стања приказа менија брзих подешавања." #: data/org.gnome.shell.gschema.xml.in:208 msgid "Keybinding to focus the active notification" msgstr "Пречица за постављање у жижу радног обавештења" #: data/org.gnome.shell.gschema.xml.in:209 msgid "Keybinding to focus the active notification." msgstr "Пречица за постављање у жижу радног обавештења." #: data/org.gnome.shell.gschema.xml.in:215 msgid "Switch to application 1" msgstr "Пребаци се на програм 1" #: data/org.gnome.shell.gschema.xml.in:219 msgid "Switch to application 2" msgstr "Пребаци се на програм 2" #: data/org.gnome.shell.gschema.xml.in:223 msgid "Switch to application 3" msgstr "Пребаци се на програм 3" #: data/org.gnome.shell.gschema.xml.in:227 msgid "Switch to application 4" msgstr "Пребаци се на програм 4" #: data/org.gnome.shell.gschema.xml.in:231 msgid "Switch to application 5" msgstr "Пребаци се на програм 5" #: data/org.gnome.shell.gschema.xml.in:235 msgid "Switch to application 6" msgstr "Пребаци се на програм 6" #: data/org.gnome.shell.gschema.xml.in:239 msgid "Switch to application 7" msgstr "Пребаци се на програм 7" #: data/org.gnome.shell.gschema.xml.in:243 msgid "Switch to application 8" msgstr "Пребаци се на програм 8" #: data/org.gnome.shell.gschema.xml.in:247 msgid "Switch to application 9" msgstr "Пребаци се на програм 9" #: data/org.gnome.shell.gschema.xml.in:251 msgid "Open a new instance of application 1" msgstr "Отвори нови примерак програма 1" #: data/org.gnome.shell.gschema.xml.in:255 msgid "Open a new instance of application 2" msgstr "Отвори нови примерак програма 2" #: data/org.gnome.shell.gschema.xml.in:259 msgid "Open a new instance of application 3" msgstr "Отвори нови примерак програма 3" #: data/org.gnome.shell.gschema.xml.in:263 msgid "Open a new instance of application 4" msgstr "Отвори нови примерак програма 4" #: data/org.gnome.shell.gschema.xml.in:267 msgid "Open a new instance of application 5" msgstr "Отвори нови примерак програма 5" #: data/org.gnome.shell.gschema.xml.in:271 msgid "Open a new instance of application 6" msgstr "Отвори нови примерак програма 6" #: data/org.gnome.shell.gschema.xml.in:275 msgid "Open a new instance of application 7" msgstr "Отвори нови примерак програма 7" #: data/org.gnome.shell.gschema.xml.in:279 msgid "Open a new instance of application 8" msgstr "Отвори нови примерак програма 8" #: data/org.gnome.shell.gschema.xml.in:283 msgid "Open a new instance of application 9" msgstr "Отвори нови примерак програма 9" #: data/org.gnome.shell.gschema.xml.in:308 #: data/org.gnome.shell.gschema.xml.in:335 msgid "Limit switcher to current workspace." msgstr "Ограничава пребацивача на текући радни простор." #: data/org.gnome.shell.gschema.xml.in:309 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "Ако је изабрано, само програми који имају прозоре на текућем радном простору " "се приказују у пребацивачу. У супротном, сви програми су укључени." #: data/org.gnome.shell.gschema.xml.in:326 msgid "The application icon mode." msgstr "Режим иконице програма." #: data/org.gnome.shell.gschema.xml.in:327 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-" "only” (shows only the application icon) or “both”." msgstr "" "Подешава начин приказивања прозора у пребацивачу. Исправне могућности су " "„thumbnail-only“ (приказује сличицу прозора), „app-icon-only“ (приказује " "само иконицу програма) или „both“ (оба)." #: data/org.gnome.shell.gschema.xml.in:336 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "Ако је изабрано, само прозори са текућег радног простора се приказују у " "пребацивачу. У супротном, сви прозори су укључени." #: data/org.gnome.shell.gschema.xml.in:346 msgid "Locations" msgstr "Локације" #: data/org.gnome.shell.gschema.xml.in:347 msgid "The locations to show in world clocks" msgstr "Места која треба приказивати у светским сатовима" #: data/org.gnome.shell.gschema.xml.in:357 msgid "Automatic location" msgstr "Аутоматска локација" #: data/org.gnome.shell.gschema.xml.in:358 msgid "Whether to fetch the current location or not" msgstr "Да ли треба добавити тренутну локацију" #: data/org.gnome.shell.gschema.xml.in:365 msgid "Location" msgstr "Локација" #: data/org.gnome.shell.gschema.xml.in:366 msgid "The location for which to show a forecast" msgstr "Место за које треба приказати временску прогнозу" #. Keep in sync with subprojects/extensions-app #: data/org.gnome.Shell.Extensions.desktop.in.in:5 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/data/ui/extensions-window.ui:57 msgid "Extensions" msgstr "Проширења" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "Мрежна пријава" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:277 msgid "Something’s gone wrong" msgstr "Нешто је пошло наопако" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" "Веома нам је жао али се догодио проблем, не можемо приказати подешавања за " "ово проширење. Предлажемо вам да пријавите овај проблем творцима проширења." #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "Техничке појединости" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "Матична страна" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 msgid "Visit extension homepage" msgstr "Посети матичну страну проширењ" #: js/gdm/authPrompt.js:151 js/gdm/loginDialog.js:466 #: js/ui/audioDeviceSelection.js:66 js/ui/components/networkAgent.js:114 #: js/ui/components/polkitAgent.js:146 js/ui/endSessionDialog.js:438 #: js/ui/extensionDownloader.js:278 js/ui/shellMountOperation.js:384 #: js/ui/shellMountOperation.js:394 msgid "Cancel" msgstr "Откажи" #: js/gdm/authPrompt.js:317 js/ui/components/networkAgent.js:214 #: js/ui/components/networkAgent.js:234 js/ui/components/networkAgent.js:266 #: js/ui/components/networkAgent.js:299 js/ui/components/networkAgent.js:338 #: js/ui/components/networkAgent.js:351 js/ui/components/polkitAgent.js:288 #: js/ui/shellMountOperation.js:334 msgid "Password" msgstr "Лозинка" #: js/gdm/loginDialog.js:327 msgid "Choose Session" msgstr "Изабери сесију" #. Translators: is running for #: js/gdm/loginDialog.js:424 #, javascript-format msgid "" "Remote login is not possible because a remote session is already running for " "%s. To login remotely, you must log out from the remote session or force " "stop it." msgstr "" "Удаљена пријава није могућа пошто се удаљена сесија већ извршава за %s. За " "удаљену пријаву, морате се одјавити са постојеће сесије или је присилно " "зауставити." #. Translators: is running for #: js/gdm/loginDialog.js:427 #, javascript-format msgid "" "Login is not possible because a remote session is already running for %s. To " "login, you must log out from the remote session or force stop it." msgstr "" "Пријава није могућа пошто се удаљена сесија већ извршава за %s. За пријаву, " "морате се одјавити са постојеће сесије или је присилно зауставити." #. Translators: is running for #: js/gdm/loginDialog.js:430 #, javascript-format msgid "" "Remote login is not possible because a local session is already running for " "%s. To login remotely, you must log out from the local session or force stop " "it." msgstr "" "Удаљена пријава није могућа пошто се локална сесија већ извршава за %s. За " "удаљену пријаву, морате се одјавити са локалне сесије или је присилно " "зауставити." #. Translators: is running for #: js/gdm/loginDialog.js:433 #, javascript-format msgid "" "Login is not possible because a session is already running for %s. To login, " "you must log out from the session or force stop it." msgstr "" "Пријава није могућа пошто се сесија већ извршава за %s. За пријаву, морате " "се одјавити са постојеће сесије или је присилно зауставити." #: js/gdm/loginDialog.js:442 msgid "Session Already Running" msgstr "Сесија се већ извршава" #: js/gdm/loginDialog.js:454 msgid "" "Force stopping will quit any running apps and processes, and could result in " "data loss." msgstr "" "Присилно заустављање ће зауставити све покренуте програме и процесе, и може " "изазвати губитак података." #: js/gdm/loginDialog.js:474 msgid "Force Stop" msgstr "Приморај излаз" #: js/gdm/loginDialog.js:542 msgid "Not listed?" msgstr "Није на списку?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:1010 #, javascript-format msgid "(e.g., user or %s)" msgstr "(нпр., корисник или %s)" #: js/gdm/loginDialog.js:1015 js/ui/components/networkAgent.js:258 #: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:327 msgid "Username" msgstr "Корисник" #: js/gdm/loginDialog.js:1081 msgid "Login Attempt Timed Out" msgstr "Истекло је време за покушај пријаве" #: js/gdm/loginDialog.js:1082 msgid "Login took too long, please try again" msgstr "Пријава је предуго трајала, покушајте поново" #: js/gdm/loginDialog.js:1427 msgid "Login Window" msgstr "Прозор за пријављивање" #: js/gdm/util.js:497 msgid "Authentication error" msgstr "Грешка потврђивања идентитета" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:728 msgid "(or swipe finger across reader)" msgstr "(или превуците прст преко читача)" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:733 msgid "(or place finger on reader)" msgstr "(или поставите прст на читач)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:91 msgctxt "search-result" msgid "Power Off" msgstr "Искључи" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:94 msgid "power off;poweroff;shutdown;halt;stop" msgstr "" "power off;shutdown;искључи;угаси;гашење;isključi;ugasi;gašenje;iskljuci;" "gasenje;halt;stop;халт;стоп" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:99 msgctxt "search-result" msgid "Restart" msgstr "Поново покрени" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:102 msgid "reboot;restart;" msgstr "reboot;restart;рибут;рестарт;поновно покретање;рестартовање;" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:107 msgctxt "search-result" msgid "Lock Screen" msgstr "Закључај екран" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:110 msgid "lock screen" msgstr "закључај екран" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:115 msgctxt "search-result" msgid "Log Out" msgstr "Одјави ме" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:118 msgid "logout;log out;sign off" msgstr "" "изађи;одјави се;одлогуј се;izađi;odjavi se;odloguj se;izadji;logout;log out;" "sign off" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:123 msgctxt "search-result" msgid "Suspend" msgstr "Обустави" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:126 msgid "suspend;sleep" msgstr "" "suspend;sleep;обустави;спавај;суспендуј;obustavi;spavaj;suspenduj;suspend;" "sleep" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:131 msgctxt "search-result" msgid "Switch User" msgstr "Промени корисника" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:134 msgid "switch user" msgstr "switch user;промени корисника;promeni korisnika;switch user" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:141 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "" "lock orientation;screen;rotation;закључај окретање екрана;закључај " "оријентацију;zaključaj okretanje ekrana;zaključaj orijentaciju;zakljucaj " "okretanje ekrana;екран;ekran;окретање;okretanje;lock orientation;screen;" "rotation" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:146 msgctxt "search-result" msgid "Take a Screenshot" msgstr "Направи снимак екрана" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:149 msgid "screenshot;screencast;snip;capture;record" msgstr "" "screenshot;screencast;snip;capture;record;снимак екрана;видео екрана;снип;" "snimak ekrana;video ekrana" #: js/misc/systemActions.js:249 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "Откључај окретање екрана" #: js/misc/systemActions.js:250 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "Закључај окретање екрана" #: js/misc/util.js:139 msgid "Command not found" msgstr "Наредба није нађена" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:179 msgid "Could not parse command:" msgstr "Не могу да обрадим наредбу:" #: js/misc/util.js:187 #, javascript-format msgid "Execution of “%s” failed:" msgstr "Није успело извршавање „%s“:" #: js/misc/dateUtils.js:69 msgid "Just now" msgstr "Управо сада" #: js/misc/dateUtils.js:72 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "Пре %d минут" msgstr[1] "Пре %d минута" msgstr[2] "Пре %d минута" msgstr[3] "Пре један минут" #: js/misc/dateUtils.js:79 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "Пре %d сат" msgstr[1] "Пре %d сата" msgstr[2] "Пре %d сати" msgstr[3] "Пре један сат" #: js/misc/dateUtils.js:85 js/ui/dateMenu.js:185 msgid "Yesterday" msgstr "Јуче" #: js/misc/dateUtils.js:88 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "Пре %d дан" msgstr[1] "Пре %d дана" msgstr[2] "Пре %d дана" msgstr[3] "Пре један дан" #: js/misc/dateUtils.js:95 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "Пре %d недељу" msgstr[1] "Пре %d недеље" msgstr[2] "Пре %d недеља" msgstr[3] "Пре недељу дана" #: js/misc/dateUtils.js:102 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "Пре %d месец" msgstr[1] "Пре %d месеца" msgstr[2] "Пре %d месеци" msgstr[3] "Пре месец дана" #: js/misc/dateUtils.js:108 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "Пре %d годину" msgstr[1] "Пре %d године" msgstr[2] "Пре %d година" msgstr[3] "Пре годину дана" #. Translators: Time in 24h format #: js/misc/dateUtils.js:155 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/dateUtils.js:161 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "Јуче, %H:%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/dateUtils.js:167 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/dateUtils.js:173 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%-d. %B, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/dateUtils.js:179 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%-d. %B %Y., %H:%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/dateUtils.js:184 msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/dateUtils.js:190 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "Јуче, %l:%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/dateUtils.js:196 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/dateUtils.js:202 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%-d. %B, %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/dateUtils.js:208 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%-d .%B %Y., %l∶%M %p" #: js/portalHelper/main.js:98 msgid "Your connection seems to be secure" msgstr "Изгледа да је ваша веза безбедна" #: js/portalHelper/main.js:104 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "Ваша веза са овом пријавом вруће тачке није безбедна. Људи у близини могу " "видети лозинке или друге податке које будете унели на овој страници." #: js/portalHelper/main.js:115 msgid "Hotspot Login" msgstr "Пријава на врућу тачку" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:45 js/ui/inhibitShortcutsDialog.js:92 msgid "Deny" msgstr "Забрани" #: js/ui/accessDialog.js:46 js/ui/inhibitShortcutsDialog.js:101 msgid "Allow" msgstr "Дозволи" #: js/ui/appDisplay.js:1775 msgid "Unnamed Folder" msgstr "Неименована фасцикла" #: js/ui/appFavorites.js:166 #, javascript-format msgid "%s has been pinned to the dash." msgstr "„%s“ је додат на док." #: js/ui/appFavorites.js:199 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "„%s“ је откачен са дока." #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:51 msgid "Open Windows" msgstr "Отвори прозоре" #: js/ui/appMenu.js:59 msgid "New Window" msgstr "Нови прозор" #: js/ui/appMenu.js:86 msgid "App Details" msgstr "Детаљи програма" #: js/ui/appMenu.js:102 msgid "Quit" msgstr "Изађи" #: js/ui/appMenu.js:162 js/ui/dash.js:250 msgid "Unpin" msgstr "Откачи" #: js/ui/appMenu.js:163 msgid "Pin to Dash" msgstr "Закачи на док" #: js/ui/appMenu.js:180 msgid "Launch using Integrated Graphics Card" msgstr "Покрени са уграђеном графичком картицом" #: js/ui/appMenu.js:181 msgid "Launch using Discrete Graphics Card" msgstr "Покрени са наменском графичком картицом" #: js/ui/audioDeviceSelection.js:46 msgid "Select Audio Device" msgstr "Изаберите звучни уређај" #: js/ui/audioDeviceSelection.js:61 js/ui/status/volume.js:83 msgid "Sound Settings" msgstr "Подешавања звука" #: js/ui/audioDeviceSelection.js:74 msgid "Headphones" msgstr "Слушалице" #: js/ui/audioDeviceSelection.js:76 msgid "Headset" msgstr "Слушалице са микрофоном" #: js/ui/audioDeviceSelection.js:78 js/ui/status/volume.js:358 msgid "Microphone" msgstr "Микрофон" #: js/ui/backgroundMenu.js:15 msgid "Change Background…" msgstr "Измени позадину…" #: js/ui/backgroundMenu.js:17 msgid "Display Settings" msgstr "Подешавања приказа" #: js/ui/backgroundMenu.js:18 msgid "Settings" msgstr "Подешавања" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:39 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:65 msgctxt "grid sunday" msgid "S" msgstr "Н" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:67 msgctxt "grid monday" msgid "M" msgstr "П" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:69 msgctxt "grid tuesday" msgid "T" msgstr "У" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:71 msgctxt "grid wednesday" msgid "W" msgstr "С" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:73 msgctxt "grid thursday" msgid "T" msgstr "Ч" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:75 msgctxt "grid friday" msgid "F" msgstr "П" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:77 msgctxt "grid saturday" msgid "S" msgstr "С" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:428 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:438 msgid "%OB %Y" msgstr "%OB %Y" #: js/ui/calendar.js:500 msgid "Previous month" msgstr "Претходни месец" #: js/ui/calendar.js:518 msgid "Next month" msgstr "Следећи месец" #: js/ui/calendar.js:669 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:728 msgid "Week %V" msgstr "Седмица %V" #: js/ui/calendar.js:920 msgid "No Notifications" msgstr "Без обавештења" #: js/ui/calendar.js:976 msgid "Do Not Disturb" msgstr "Не узнемиравај" #: js/ui/calendar.js:997 msgid "Clear" msgstr "Очисти" # msgid_plural "%d new notifications" #: js/ui/calendar.js:1001 msgctxt "action" msgid "Clear all notifications" msgstr "Очисти сва обавештења" #. Translators: %s is an application name #: js/ui/closeDialog.js:44 #, javascript-format msgid "“%s” is not responding." msgstr "„%s“ не одговара." #: js/ui/closeDialog.js:45 msgid "" "You may choose to wait a short while for it to continue or force the app to " "quit entirely." msgstr "" "Можете изабрати да сачекате који тренутак да настави или да приморате " "програм да се читав затвори." #: js/ui/closeDialog.js:73 msgid "Force Quit" msgstr "Приморај излаз" #: js/ui/closeDialog.js:78 msgid "Wait" msgstr "Сачекај" #: js/ui/components/automountManager.js:84 msgid "External drive connected" msgstr "Спољни уређај је прикључен" #: js/ui/components/automountManager.js:96 msgid "External drive disconnected" msgstr "Спољни уређај је искључен" #: js/ui/components/automountManager.js:207 msgid "Unable to unlock volume" msgstr "Не могу да откључам волумен" #: js/ui/components/automountManager.js:208 msgid "The installed udisks version does not support the PIM setting" msgstr "Инсталирано издање udisks-a не подржава ЛИЧ (PIM) подешавање" #: js/ui/components/autorunManager.js:200 #, javascript-format msgid "Open with %s" msgstr "Отвори програмом %s" #: js/ui/components/networkAgent.js:96 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router." msgstr "Или можете повезати притиском на дугме „WPS“, на вашем рутеру." #: js/ui/components/networkAgent.js:108 js/ui/status/bluetooth.js:246 #: js/ui/status/network.js:360 js/ui/status/network.js:444 msgid "Connect" msgstr "Повежи се" #: js/ui/components/networkAgent.js:223 msgid "Key" msgstr "Кључ" #: js/ui/components/networkAgent.js:274 js/ui/components/networkAgent.js:313 msgid "Private key password" msgstr "Лозинка приватног кључа" #: js/ui/components/networkAgent.js:307 msgid "Identity" msgstr "Идентитет" #: js/ui/components/networkAgent.js:333 msgid "Service" msgstr "Услуга" #: js/ui/components/networkAgent.js:371 js/ui/components/networkAgent.js:407 #: js/ui/components/networkAgent.js:750 js/ui/components/networkAgent.js:771 msgid "Authentication required" msgstr "Потребно је потврђивање идентитета" #: js/ui/components/networkAgent.js:372 js/ui/components/networkAgent.js:751 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network " "“%s”." msgstr "" "Потребне су лозинке или кључеви шифровања за приступ бежичној мрежи „%s“." #: js/ui/components/networkAgent.js:376 js/ui/components/networkAgent.js:755 msgid "Wired 802.1X authentication" msgstr "Потврђивање идентитета за жичану 802.1X везу" #: js/ui/components/networkAgent.js:379 msgid "Network name" msgstr "Назив мреже" #: js/ui/components/networkAgent.js:387 js/ui/components/networkAgent.js:759 msgid "DSL authentication" msgstr "Потврђивање идентитета ДСЛ-а" #: js/ui/components/networkAgent.js:394 js/ui/components/networkAgent.js:764 msgid "PIN code required" msgstr "Потребан је ПИН кôд" #: js/ui/components/networkAgent.js:395 js/ui/components/networkAgent.js:765 msgid "PIN code is needed for the mobile broadband device" msgstr "Потребан је ПИН код за повезивање мобилног широкопојасног уређаја" #: js/ui/components/networkAgent.js:397 msgid "PIN" msgstr "ПИН" #: js/ui/components/networkAgent.js:408 js/ui/components/networkAgent.js:756 #: js/ui/components/networkAgent.js:760 js/ui/components/networkAgent.js:772 #: js/ui/components/networkAgent.js:776 #, javascript-format msgid "A password is required to connect to “%s”." msgstr "Потребна је лозинка за повезивање на „%s“." #: js/ui/components/networkAgent.js:775 msgid "VPN password" msgstr "ВПН лозинка" #: js/ui/components/polkitAgent.js:46 msgid "Authentication Required" msgstr "Потребна је пријава" #: js/ui/components/polkitAgent.js:86 msgid "Administrator" msgstr "Администратор" #: js/ui/components/polkitAgent.js:151 msgid "Authenticate" msgstr "Потврди идентитет" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:265 js/ui/shellMountOperation.js:417 msgid "Sorry, that didn’t work. Please try again." msgstr "Погрешили сте! Покушајте поново." #: js/ui/ctrlAltTab.js:25 js/ui/overviewControls.js:418 msgid "Windows" msgstr "Прозори" #: js/ui/dash.js:206 js/ui/dash.js:252 msgid "Show Apps" msgstr "Прикажи програме" #. Translators: this is the name of the dock/favorites area on #. the bottom of the overview #: js/ui/dash.js:410 msgid "Dash" msgstr "Док" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:101 msgid "%B %-d %Y" msgstr "%-d. %B %Y." #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:108 msgid "%A %B %e %Y" msgstr "%A, %e. %B %Y." #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:174 msgctxt "calendar heading" msgid "%B %-d" msgstr "%-d. %B" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:177 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%-d. %B %Y." #: js/ui/dateMenu.js:183 msgid "Today" msgstr "Данас" #: js/ui/dateMenu.js:187 msgid "Tomorrow" msgstr "Сутра" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:218 msgctxt "event list time" msgid "All Day" msgstr "Цео дан" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:240 msgid "%m/%d" msgstr "%d.%m." #: js/ui/dateMenu.js:291 msgid "No Events" msgstr "Без догађаја" #: js/ui/dateMenu.js:413 msgid "Add world clocks…" msgstr "Светски сатови…" #: js/ui/dateMenu.js:414 msgid "World Clocks" msgstr "Светски сатови" #: js/ui/dateMenu.js:704 msgid "Loading…" msgstr "Учитавам…" #: js/ui/dateMenu.js:714 msgid "Go online for weather information" msgstr "Повежите се на мрежу за податке о времену" #: js/ui/dateMenu.js:716 msgid "Weather information is currently unavailable" msgstr "Подаци о временској прогнози тренутно нису доступни" #: js/ui/dateMenu.js:726 msgid "Weather" msgstr "Временска прогноза" #: js/ui/dateMenu.js:728 msgid "Select weather location…" msgstr "Изаберите место временске прогнозе…" #: js/ui/endSessionDialog.js:48 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "Одјави корисника „%s“" #: js/ui/endSessionDialog.js:49 msgctxt "title" msgid "Log Out" msgstr "Одјави ме" #: js/ui/endSessionDialog.js:52 #, javascript-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "%s ће бити одјављен за %d секунду." msgstr[1] "%s ће бити одјављен за %d секунде." msgstr[2] "%s ће бити одјављен за %d секунди." msgstr[3] "%s ће бити одјављен за %d секунду." #: js/ui/endSessionDialog.js:58 #, javascript-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "Бићете одјављени за %d секунду." msgstr[1] "Бићете одјављени за %d секунде." msgstr[2] "Бићете одјављени за %d секунди." msgstr[3] "Бићете одјављени за %d секунду." #: js/ui/endSessionDialog.js:65 msgctxt "button" msgid "Log Out" msgstr "Одјави" #: js/ui/endSessionDialog.js:71 js/ui/status/system.js:176 msgctxt "title" msgid "Power Off" msgstr "Искључи" #: js/ui/endSessionDialog.js:72 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Инсталирај ажурирања и искључи" #: js/ui/endSessionDialog.js:75 #, javascript-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "Рачунар ће се искључити за %d секунду." msgstr[1] "Рачунар ће се искључити за %d секунде." msgstr[2] "Рачунар ће се искључити за %d секунди." msgstr[3] "Рачунар ће се искључити за %d секунду." #: js/ui/endSessionDialog.js:79 js/ui/endSessionDialog.js:98 msgctxt "checkbox" msgid "Install pending software updates" msgstr "Инсталирај ажурирања софтвера на чекању" #: js/ui/endSessionDialog.js:83 msgctxt "button" msgid "Power Off" msgstr "Искључи" #: js/ui/endSessionDialog.js:90 msgctxt "title" msgid "Restart" msgstr "Поново покрени" #: js/ui/endSessionDialog.js:91 msgctxt "title" msgid "Install Updates & Restart" msgstr "Инсталирај ажурирања и поново покрени" #: js/ui/endSessionDialog.js:94 #, javascript-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "Систем ће се поново покренути за %d секунду." msgstr[1] "Систем ће се поново покренути за %d секунде." msgstr[2] "Систем ће се поново покренути за %d секунди." msgstr[3] "Систем ће се поново покренути за %d секунду." #: js/ui/endSessionDialog.js:102 msgctxt "button" msgid "Restart" msgstr "Поново покрени" #: js/ui/endSessionDialog.js:110 msgctxt "title" msgid "Restart & Install Updates" msgstr "Поново покрени и инсталирај ажурирања" #: js/ui/endSessionDialog.js:113 #, javascript-format msgid "The system will automatically restart and install updates in %d second." msgid_plural "" "The system will automatically restart and install updates in %d seconds." msgstr[0] "" "Систем ће се сам поново покренути и инсталирати ажурирања за %d секунду." msgstr[1] "" "Систем ће се сам поново покренути и инсталирати ажурирања за %d секунде." msgstr[2] "" "Систем ће се сам поново покренути и инсталирати ажурирања за %d секунди." msgstr[3] "" "Систем ће се сам поново покренути и инсталирати ажурирања за %d секунду." # msgctxt "button" #: js/ui/endSessionDialog.js:120 js/ui/endSessionDialog.js:141 msgctxt "button" msgid "Restart & Install" msgstr "Поново покрени и инсталирај" # msgctxt "button" #: js/ui/endSessionDialog.js:122 msgctxt "button" msgid "Install & Power Off" msgstr "Инсталирај и искључи" #: js/ui/endSessionDialog.js:123 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Искључи након инсталирања ажурирања" #: js/ui/endSessionDialog.js:130 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "Поново покрени и инсталирај надоградњу" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:135 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "%s %s ће бит инсталиран/а након поновног покретања. Инсталација надоградње " "понекад може да потраје: проверите да ли сте направили резерву ваших важних " "података и да ли је рачунар прикључен на мрежно напајање." #: js/ui/endSessionDialog.js:284 msgid "Low battery power: please plug in before installing updates." msgstr "" "Батерија је скоро празна, прикључите мрежно напајање пре инсталирања " "ажурирања." #: js/ui/endSessionDialog.js:293 msgid "Some applications are busy or have unsaved work" msgstr "Неки програми су заузети или имају несачувани рад" #: js/ui/endSessionDialog.js:298 msgid "Other users are logged in" msgstr "Други корисници су пријављени" #: js/ui/endSessionDialog.js:468 msgctxt "button" msgid "Boot Options" msgstr "Опције подизања" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:673 #, javascript-format msgid "%s (remote)" msgstr "%s (удаљено)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:676 #, javascript-format msgid "%s (console)" msgstr "%s (љуска)" #: js/ui/extensionDownloader.js:282 msgid "Install" msgstr "Инсталирај" #: js/ui/extensionDownloader.js:288 msgid "Install Extension" msgstr "Инсталирај проширење" #: js/ui/extensionDownloader.js:289 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "Да преузмем и да инсталирам „%s“ са „extensions.gnome.org“-а?" #: js/ui/extensionSystem.js:354 msgid "Extension Updates Available" msgstr "Доступна су ажурирања проширења" #: js/ui/extensionSystem.js:355 msgid "Extension updates are ready to be installed." msgstr "Ажурирања проширења су доступна за инсталирање." #: js/ui/inhibitShortcutsDialog.js:70 msgid "Allow inhibiting shortcuts" msgstr "Дозволи спречавања пречица" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:73 #, javascript-format msgid "The app %s wants to inhibit shortcuts" msgstr "Програм „%s“ жели да спречи пречице" #: js/ui/inhibitShortcutsDialog.js:74 msgid "An app wants to inhibit shortcuts" msgstr "Програм жели да спречи пречице" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:81 #, javascript-format msgid "You can restore shortcuts by pressing %s." msgstr "Можете повратити пречице притиском на „%s“." #: js/ui/kbdA11yDialog.js:34 msgid "Slow Keys Turned On" msgstr "Спори тастери су укључени" #: js/ui/kbdA11yDialog.js:35 msgid "Slow Keys Turned Off" msgstr "Спори тастери су искључени" #: js/ui/kbdA11yDialog.js:36 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "Управо сте тастер Shift држали притиснутим 8 секунди. То укључује Споре " "тастере, што утиче на рад тастатуре." #: js/ui/kbdA11yDialog.js:42 msgid "Sticky Keys Turned On" msgstr "Лепљиви тастери су укључени" #: js/ui/kbdA11yDialog.js:43 msgid "Sticky Keys Turned Off" msgstr "Лепљиви тастери су искључени" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "Управо сте притиснули тастер Shift 5 пута заредом. То је пречица за Лепљиве " "тастере, што утиче на рад тастатуре." #: js/ui/kbdA11yDialog.js:47 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" "Управо сте притиснули два тастера истовремено, или сте притиснули тастер " "Shift 5 пута заредом. То укључује Лепљиве тастере, што утиче на рад " "тастатуре." #: js/ui/kbdA11yDialog.js:57 msgid "Leave On" msgstr "Остави укључено" #: js/ui/kbdA11yDialog.js:57 msgid "Turn On" msgstr "Укључи" #: js/ui/kbdA11yDialog.js:67 js/ui/status/network.js:455 msgid "Turn Off" msgstr "Искључи" #: js/ui/kbdA11yDialog.js:67 msgid "Leave Off" msgstr "Остави искључено" #: js/ui/keyboard.js:181 js/ui/status/keyboard.js:899 msgid "Keyboard Settings" msgstr "Подешавања тастатуре" #: js/ui/lookingGlass.js:724 msgid "No extensions installed" msgstr "Нису инсталирана проширења" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:785 #, javascript-format msgid "%s has not emitted any errors." msgstr "%s није објавио никакве грешке." #: js/ui/lookingGlass.js:791 msgid "Hide Errors" msgstr "Сакриј грешке" #: js/ui/lookingGlass.js:795 js/ui/lookingGlass.js:872 msgid "Show Errors" msgstr "Прикажите грешке" #: js/ui/lookingGlass.js:804 msgid "Active" msgstr "Активна" #: js/ui/lookingGlass.js:807 msgid "Inactive" msgstr "Неактивна" #: js/ui/lookingGlass.js:809 msgid "Error" msgstr "Грешка" #: js/ui/lookingGlass.js:811 msgid "Out of date" msgstr "Изван датума" #: js/ui/lookingGlass.js:813 msgid "Downloading" msgstr "Преузимам" #: js/ui/lookingGlass.js:815 msgid "Deactivating" msgstr "Искључивање" #: js/ui/lookingGlass.js:817 msgid "Activating" msgstr "Укључивање" #: js/ui/lookingGlass.js:850 msgid "View Source" msgstr "Прикажи код" #: js/ui/lookingGlass.js:861 msgid "Web Page" msgstr "Веб страница" #: js/ui/main.js:279 msgid "System was put in unsafe mode" msgstr "Систем је постављен у небезбедан режим" #: js/ui/main.js:280 msgid "Apps now have unrestricted access" msgstr "Програми сада имају неограничен приступ" #: js/ui/main.js:283 js/ui/overview.js:54 msgid "Undo" msgstr "Опозови" #: js/ui/main.js:340 msgid "Logged in as a privileged user" msgstr "Пријављен као повлашћен корисник" #: js/ui/main.js:341 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" "Покретање сесије под повлашћеним корисничким налогом треба избегавати из " "безбедносних разлога. Ако је то могуће, пријавите се као обичан корисник." #: js/ui/main.js:389 msgid "Screen Lock disabled" msgstr "Закључавање екрана онемогућено" #: js/ui/main.js:390 msgid "Screen Locking requires the GNOME display manager." msgstr "Потребан је Гномов управник екрана за могућност закључавања екрана." # msgctxt "program" #. Translators: this is the string displayed in the header when a message #. source doesn't have a name #: js/ui/messageList.js:400 msgid "Unknown App" msgstr "Непознат програм" #: js/ui/messageTray.js:328 js/ui/messageTray.js:330 msgid "Notification sound" msgstr "Звук обавештења" #: js/ui/mpris.js:198 msgid "Unknown artist" msgstr "Непознат извођач" #: js/ui/mpris.js:208 msgid "Unknown title" msgstr "Непознат наслов" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:342 msgid "Type to search" msgstr "Упишите жељено" #: js/ui/overviewControls.js:406 msgid "Apps" msgstr "Програми" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:67 msgid "Overview" msgstr "Преглед" #: js/ui/padOsd.js:100 msgid "New shortcut…" msgstr "Нова пречица…" #: js/ui/padOsd.js:153 msgid "App defined" msgstr "Дефинисани програм" #: js/ui/padOsd.js:154 msgid "Show on-screen help" msgstr "Прикажи помоћ на екрану" #: js/ui/padOsd.js:155 msgid "Switch monitor" msgstr "Промени монитор" #: js/ui/padOsd.js:156 msgid "Assign keystroke" msgstr "Додели тастер" #: js/ui/padOsd.js:225 msgid "Done" msgstr "Готово" #: js/ui/padOsd.js:728 msgid "Edit…" msgstr "Уреди…" #: js/ui/padOsd.js:775 msgid "None" msgstr "Ништа" #: js/ui/padOsd.js:846 msgid "Press a button to configure" msgstr "Притисните дугме да подесите" #: js/ui/padOsd.js:847 msgid "Press Esc to exit" msgstr "Притисните „Есц“ да изађете" #: js/ui/padOsd.js:850 msgid "Press any key to exit" msgstr "Притисните неки тастер да изађете" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:425 msgid "Activities" msgstr "Активности" #: js/ui/panel.js:506 msgctxt "System menu in the top bar" msgid "System" msgstr "Систем" #: js/ui/panel.js:680 msgid "Top Bar" msgstr "Горња трака" #: js/ui/quickSettings.js:187 msgid "Open menu" msgstr "Отвори мени" #: js/ui/runDialog.js:63 msgid "Run a Command" msgstr "Покрени наредбу" #: js/ui/runDialog.js:78 msgid "Press ESC to close" msgstr "Притисни Esc за излазак" #: js/ui/runDialog.js:243 msgid "Restart is not available on Wayland" msgstr "Поновно покретање није доступно на Вејланду" #: js/ui/runDialog.js:248 msgid "Restarting…" msgstr "Поновно покрећем…" #: js/ui/screenShield.js:235 msgid "GNOME needs to lock the screen" msgstr "Гном мора да закључа екран" #: js/ui/screenShield.js:276 js/ui/screenShield.js:669 msgid "Unable to lock" msgstr "Не могу да закључам" #: js/ui/screenShield.js:277 js/ui/screenShield.js:670 msgid "Lock was blocked by an app" msgstr "Програм је блокирао закључавање" #: js/ui/screenshot.js:1254 msgid "Selection" msgstr "Избор" #: js/ui/screenshot.js:1264 msgid "Area Selection" msgstr "Избор области" #: js/ui/screenshot.js:1269 msgid "Screen" msgstr "Екран" #: js/ui/screenshot.js:1279 msgid "Screen Selection" msgstr "Избор екрана" #: js/ui/screenshot.js:1284 msgid "Window" msgstr "Прозор" #: js/ui/screenshot.js:1294 msgid "Window Selection" msgstr "Избор прозора" #. Translators: entry in the window right click menu. #: js/ui/screenshot.js:1319 js/ui/status/system.js:113 js/ui/windowMenu.js:30 msgid "Take Screenshot" msgstr "Направи снимак екрана" #: js/ui/screenshot.js:1335 msgid "Record Screen" msgstr "Сними екран" #. Translators: since this string refers to an action, #. it needs to be phrased as a verb. #: js/ui/screenshot.js:1352 msgid "Capture" msgstr "Усними" #: js/ui/screenshot.js:1374 msgid "Show Pointer" msgstr "Покажи показивач" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1998 msgid "Screencasts" msgstr "Видео снимци" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast from 07-17-2013 10:00:46 PM" #: js/ui/screenshot.js:2003 #, no-c-format msgid "Screencast from %d %t" msgstr "Видео снимак направљен дана %d %t.webm" #. Translators: notification title. #: js/ui/screenshot.js:2049 msgid "Screencast recorded" msgstr "Видео снимак направљен" #. Translators: notification title. #: js/ui/screenshot.js:2062 msgid "Screencast failed to start" msgstr "Видео снимање неуспело" #. Translators: notification title. #: js/ui/screenshot.js:2068 msgid "Screencast ended: Out of disk space" msgstr "Снимање екрана је прекинуто: Нема слободног простора на диску" #. We can encourage user to try again on service crashes since the #. recorder will auto-blocklist the pipeline that crashed. #. Translators: notification title. #: js/ui/screenshot.js:2074 msgid "Screencast ended unexpectedly, please try again" msgstr "Снимање екрана је прекинуто неочекивано, молим Вас покушајте поново" #. Translators: notification title. #: js/ui/screenshot.js:2077 msgid "Screencast ended unexpectedly" msgstr "Снимање екрана је прекинуто неочекивано" #. Translators: notification source name. #: js/ui/screenshot.js:2087 js/ui/screenshot.js:2329 msgid "Screenshot" msgstr "Снимак екрана" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:2094 msgid "Click here to view the video." msgstr "Кликните овде за преглед видеа." #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:2102 js/ui/screenshot.js:2345 msgid "Show in Files" msgstr "Прикажи у Датотекама" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2289 #, javascript-format msgid "Screenshot from %s" msgstr "Снимак екрана направљен дана %s" #. Translators: notification title. #: js/ui/screenshot.js:2335 msgid "Screenshot captured" msgstr "Снимак екрана направљен" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2337 msgid "You can paste the image from the clipboard." msgstr "Можете убацити слику из оставе." #: js/ui/screenshot.js:2393 js/ui/screenshot.js:2557 msgid "Screenshot taken" msgstr "Направљен је снимак екрана" #: js/ui/search.js:831 msgid "Searching…" msgstr "Тражим…" #: js/ui/search.js:833 msgid "No results." msgstr "Нема одговарајућих резултата." #: js/ui/search.js:964 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "Још %d" msgstr[1] "Још %d" msgstr[2] "Још %d" msgstr[3] "Још један" #: js/ui/searchController.js:89 #: subprojects/extensions-app/data/ui/extensions-window.ui:73 msgid "Search" msgstr "Тражи" #: js/ui/shellEntry.js:23 msgid "Copy" msgstr "Умножи" #: js/ui/shellEntry.js:28 msgid "Paste" msgstr "Убаци" #: js/ui/shellEntry.js:80 msgid "Show Text" msgstr "Прикажи текст" #: js/ui/shellEntry.js:82 msgid "Hide Text" msgstr "Сакриј текст" #: js/ui/shellEntry.js:176 msgid "Caps lock is on." msgstr "Тастер за велика слова је притиснут." #: js/ui/shellMountOperation.js:288 msgid "Hidden Volume" msgstr "Скривени волумен" #: js/ui/shellMountOperation.js:291 msgid "Windows System Volume" msgstr "Виндоус системски волумен" #: js/ui/shellMountOperation.js:294 msgid "Uses Keyfiles" msgstr "Користи кључ-датотеке" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:302 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead." msgstr "" "Да бисте откључали волумен који користи кључ-датотеке, користите алатку " "%s." #: js/ui/shellMountOperation.js:306 msgid "" "You need an external utility like Disks to unlock a volume that uses " "keyfiles." msgstr "" "Потребан вам је спољни алат као што су то Дискови за откључавање " "волумена који користе кључ-датотеке." #: js/ui/shellMountOperation.js:314 msgid "PIM Number" msgstr "ЛИЧ (PIM) број" #: js/ui/shellMountOperation.js:373 msgid "Remember Password" msgstr "Запамти лозинку" #: js/ui/shellMountOperation.js:388 msgid "Unlock" msgstr "Откључај" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:402 #, javascript-format msgid "Open %s" msgstr "Отвори програмом %s" #: js/ui/shellMountOperation.js:438 msgid "The PIM must be a number or empty." msgstr "ЛИЧ (PIM) мора бити број или празно." #: js/ui/status/accessibility.js:36 msgid "Accessibility" msgstr "Приступачност" #: js/ui/status/accessibility.js:46 msgid "High Contrast" msgstr "Велики контраст" #: js/ui/status/accessibility.js:49 msgid "Zoom" msgstr "Зумирај" #: js/ui/status/accessibility.js:56 msgid "Screen Reader" msgstr "Читач екрана" #: js/ui/status/accessibility.js:60 msgid "Screen Keyboard" msgstr "Тастатура на екрану" #: js/ui/status/accessibility.js:64 msgid "Visual Alerts" msgstr "Визуелна упозорења" #: js/ui/status/accessibility.js:68 msgid "Sticky Keys" msgstr "Лепљиви тастери" #: js/ui/status/accessibility.js:72 msgid "Slow Keys" msgstr "Спори тастери" #: js/ui/status/accessibility.js:76 msgid "Bounce Keys" msgstr "Одскочни тастери" #: js/ui/status/accessibility.js:80 msgid "Mouse Keys" msgstr "Тастери миша" #: js/ui/status/accessibility.js:85 msgid "Accessibility Settings" msgstr "Подешавања приступачности" #: js/ui/status/accessibility.js:142 msgid "Large Text" msgstr "Велики текст" #: js/ui/status/autoRotate.js:14 msgid "Auto Rotate" msgstr "Самостално ротирај" #: js/ui/status/backgroundApps.js:156 msgctxt "title" msgid "Background Apps" msgstr "Позадински програми" #: js/ui/status/backgroundApps.js:171 msgid "Apps known to be running without a window" msgstr "Програми без прозора, који раде у позадини" #: js/ui/status/backgroundApps.js:182 msgid "App Settings" msgstr "Подешавања програма" #: js/ui/status/backgroundApps.js:239 msgid "No Background Apps" msgstr "Нема позадинских програма" #: js/ui/status/backgroundApps.js:241 #, javascript-format msgid "%d Background App" msgid_plural "%d Background Apps" msgstr[0] "%d позадинских програма" msgstr[1] "%d позадинска програма" msgstr[2] "%d позадинских програма" msgstr[3] "Један позадински програм" #: js/ui/status/backlight.js:40 msgid "Keyboard Brightness" msgstr "Осветљеност тастатуре" #: js/ui/status/backlight.js:80 msgid "Off" msgstr "Искљ." #: js/ui/status/backlight.js:81 msgid "Low" msgstr "Низак" #: js/ui/status/backlight.js:82 msgid "High" msgstr "Висок" #: js/ui/status/backlight.js:148 js/ui/status/keyboard.js:881 msgid "Keyboard" msgstr "Тастатура" #: js/ui/status/bluetooth.js:246 js/ui/status/network.js:360 msgid "Disconnect" msgstr "Откачи" #: js/ui/status/bluetooth.js:263 js/ui/status/bluetooth.js:265 msgid "Bluetooth" msgstr "Блутут" #: js/ui/status/bluetooth.js:288 js/ui/status/network.js:1900 msgid "Bluetooth Settings" msgstr "Подешавања Блутута" #: js/ui/status/bluetooth.js:335 msgid "No available or connected devices" msgstr "Нема доступних или прикључених уређаја" #: js/ui/status/bluetooth.js:336 msgid "Turn on Bluetooth to connect to devices" msgstr "Укључите блутут да бисте се повезали на уређаје" #. Translators: This is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:390 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d повезан" msgstr[1] "%d повезана" msgstr[2] "%d повезано" msgstr[3] "%d повезан" #: js/ui/status/brightness.js:34 msgid "Brightness" msgstr "Осветљеност" #: js/ui/status/darkMode.js:12 msgid "Dark Style" msgstr "Тамни стил" #: js/ui/status/dwellClick.js:15 msgid "Single Click" msgstr "Један клик" #: js/ui/status/dwellClick.js:20 msgid "Double Click" msgstr "Двоструки клик" #: js/ui/status/dwellClick.js:25 msgid "Drag" msgstr "Повлачење" #: js/ui/status/dwellClick.js:30 msgid "Secondary Click" msgstr "Секундарни клик" #: js/ui/status/dwellClick.js:39 msgid "Dwell Click" msgstr "Дужи клик" #: js/ui/status/keyboard.js:898 msgid "Show Keyboard Layout" msgstr "Покажи распоред тастатуре" #: js/ui/status/location.js:339 msgid "Allow location access" msgstr "Дозволи приступ месту" #. Translators: %s is an application name #: js/ui/status/location.js:341 #, javascript-format msgid "The app %s wants to access your location" msgstr "Програм %s жели да приступи вашем месту" #: js/ui/status/location.js:351 msgid "Location access can be changed at any time from the privacy settings." msgstr "" "Приступ месту можете да измените у било које време у подешавањима " "приватности." #: js/ui/status/location.js:359 msgid "Deny Access" msgstr "Забрани приступ" #: js/ui/status/location.js:364 msgid "Grant Access" msgstr "Дозволи приступ" #: js/ui/status/network.js:62 msgid "" msgstr "<непознато>" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:354 #, javascript-format msgid "Disconnect %s" msgstr "Откачи %s" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:356 #, javascript-format msgid "Connect to %s" msgstr "Повежи %s" #: js/ui/status/network.js:1050 msgid "Secure" msgstr "Безбедно" #: js/ui/status/network.js:1050 msgid "Not secure" msgstr "Није безбедно" #: js/ui/status/network.js:1051 #, javascript-format msgid "Signal strength %s%%" msgstr "Јачина сигнала %s%%" #. translators: The first placeholder is the network name, the second and indication whether it is secure, and the last the signal strength indication #: js/ui/status/network.js:1053 #, javascript-format msgid "%s, %s, %s" msgstr "%s, %s, %s" #. Translators: %s is a network identifier #: js/ui/status/network.js:1155 #, javascript-format msgid "%s Hotspot" msgstr "%s хотспот" #: js/ui/status/network.js:1426 #, javascript-format msgid "%d connected" msgid_plural "%d connected" msgstr[0] "%d повезан" msgstr[1] "%d повезана" msgstr[2] "%d повезаних" msgstr[3] "%d повезан" #: js/ui/status/network.js:1524 js/ui/status/network.js:1540 msgid "VPN" msgstr "ВПН" #: js/ui/status/network.js:1525 msgid "VPN Settings" msgstr "ВПН подешавања" #: js/ui/status/network.js:1785 msgid "Wi–Fi" msgstr "Бежична" #: js/ui/status/network.js:1787 msgid "All Networks" msgstr "Све мреже" #: js/ui/status/network.js:1884 msgid "Wired Connections" msgstr "Жичане везе" #: js/ui/status/network.js:1885 msgid "Wired Settings" msgstr "Подешавања жичане везе" #: js/ui/status/network.js:1899 msgid "Bluetooth Tethers" msgstr "Досег Блутута" #. Translators: "Tether" from "Bluetooth Tether" #: js/ui/status/network.js:1906 msgid "Tether" msgstr "Тетеровање" #: js/ui/status/network.js:1919 msgid "Mobile Connections" msgstr "Мобилне везе" #: js/ui/status/network.js:1921 msgid "Mobile Broadband Settings" msgstr "Подешавања мобилне широкопојасне везе" #. Translators: "Mobile" from "Mobile Broadband" #: js/ui/status/network.js:1930 msgid "Mobile" msgstr "Мобилна" #: js/ui/status/network.js:2035 msgid "Connection failed" msgstr "Повезивање није успело" #: js/ui/status/network.js:2036 msgid "Activation of network connection failed" msgstr "Активирање мрежне везе није успело" #: js/ui/status/nightLight.js:21 msgid "Night Light" msgstr "Ноћно светло" #: js/ui/status/powerProfiles.js:21 msgctxt "Power profile" msgid "Performance" msgstr "Најбрже" #: js/ui/status/powerProfiles.js:26 msgctxt "Power profile" msgid "Balanced" msgstr "Уравнотежено" #: js/ui/status/powerProfiles.js:31 msgctxt "Power profile" msgid "Power Saver" msgstr "Чување батерије" #: js/ui/status/powerProfiles.js:41 js/ui/status/powerProfiles.js:71 msgid "Power Mode" msgstr "Режим напајања" #: js/ui/status/powerProfiles.js:73 msgid "Power Settings" msgstr "Подешавања напајања" #: js/ui/status/remoteAccess.js:76 msgid "Stop Screencast" msgstr "Заустави снимање" #: js/ui/status/remoteAccess.js:146 msgid "Stop Screen Sharing" msgstr "Заустави дељење екрана" #: js/ui/status/rfkill.js:101 msgid "Airplane Mode" msgstr "Режим у авиону" #: js/ui/status/system.js:170 msgid "Power Off Menu" msgstr "Мени гашења" #: js/ui/status/system.js:178 msgid "Suspend" msgstr "Обустави" #: js/ui/status/system.js:183 msgid "Restart…" msgstr "Поново покрени…" #: js/ui/status/system.js:188 msgid "Power Off…" msgstr "Искључи…" #: js/ui/status/system.js:195 #: subprojects/extensions-app/data/ui/extensions-window.ui:124 msgid "Log Out…" msgstr "Одјава…" #: js/ui/status/system.js:200 msgid "Switch User…" msgstr "Промени корисника…" #: js/ui/status/system.js:244 msgctxt "action" msgid "Lock Screen" msgstr "Закључај екран" #: js/ui/status/thunderbolt.js:310 msgid "Unknown Thunderbolt device" msgstr "Непознат Тандерболт уређај" #: js/ui/status/thunderbolt.js:311 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" "Нови уређај је уочен док нисте били ту. Поново повежите уређај да бисте " "почели да га користите." #: js/ui/status/thunderbolt.js:314 msgid "Unauthorized Thunderbolt device" msgstr "Неовлашћени Тандерболт уређај" #: js/ui/status/thunderbolt.js:315 msgid "" "New device has been detected and needs to be authorized by an administrator." msgstr "" "Уочен је нови уређај и потребно је да администратор овласти његову употребу." #: js/ui/status/thunderbolt.js:321 msgid "Thunderbolt authorization error" msgstr "Грешка у овлашћивању Тандерболта" #: js/ui/status/thunderbolt.js:322 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "Не могу да овластим Тандерболт уређај: %s" #: js/ui/status/volume.js:220 msgid "Volume changed" msgstr "Промена јачине звука" #: js/ui/status/volume.js:233 msgid "Unmute" msgstr "Укључи тон" #: js/ui/status/volume.js:233 msgid "Mute" msgstr "Утишај" #: js/ui/status/volume.js:288 msgid "Volume" msgstr "Јачина звука" #: js/ui/status/volume.js:304 msgid "Sound Output" msgstr "Звучни излаз" #: js/ui/status/volume.js:376 msgid "Sound Input" msgstr "Звучни улаз" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:22 msgid "Mirror" msgstr "Пресликај" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:31 msgid "Join Displays" msgstr "Споји екране" #. Translators: this is for using only external displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:41 msgid "External Only" msgstr "Само спољни" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:49 msgid "Built-in Only" msgstr "Само уграђени" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:374 msgid "%A %B %-d" msgstr "%A, %-d. %B" #: js/ui/unlockDialog.js:380 msgid "Swipe up to unlock" msgstr "Превуци за откључавање" #: js/ui/unlockDialog.js:381 msgid "Click or press a key to unlock" msgstr "Кликни или притисни тастер за откључавање" #: js/ui/unlockDialog.js:564 msgid "Unlock Window" msgstr "Откључај прозор" #: js/ui/unlockDialog.js:573 msgid "Log in as another user" msgstr "Пријавите се као други корисник" #: js/ui/welcomeDialog.js:49 #, javascript-format msgid "GNOME %s" msgstr "Гном %s" #: js/ui/welcomeDialog.js:53 #, javascript-format msgid "Welcome to %s" msgstr "Добро дошли у %s" #: js/ui/welcomeDialog.js:54 msgid "If you want to learn your way around, check out the tour." msgstr "Ако желите да сазнате више о употреби, погледајте обилазак." #: js/ui/welcomeDialog.js:63 msgid "Skip" msgstr "Прескочи" #: js/ui/welcomeDialog.js:68 msgid "Take Tour" msgstr "Започни обилазак" #: js/ui/windowAttentionHandler.js:20 #, javascript-format msgid "“%s” is ready" msgstr "„%s“ је спреман" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:69 msgid "Keep these display settings?" msgstr "Задржати подешавања екрана?" #: js/ui/windowManager.js:79 msgid "Revert Settings" msgstr "Врати подешавања" #: js/ui/windowManager.js:84 msgid "Keep Changes" msgstr "Задржи измене" #: js/ui/windowManager.js:104 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "Измене подешавања ће бити враћене за %d секунду" msgstr[1] "Измене подешавања ће бити враћене за %d секунде" msgstr[2] "Измене подешавања ће бити враћене за %d секунди" msgstr[3] "Измене подешавања ће бити враћене за %d секунду" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:496 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:42 msgid "Hide" msgstr "Сакриј" #: js/ui/windowMenu.js:49 msgid "Restore" msgstr "Поврати" #: js/ui/windowMenu.js:53 msgid "Maximize" msgstr "Увећај" #: js/ui/windowMenu.js:60 msgid "Move" msgstr "Премести" #: js/ui/windowMenu.js:80 msgid "Resize" msgstr "Промени величину" #: js/ui/windowMenu.js:101 msgid "Move Titlebar Onscreen" msgstr "Премести траку наслова на екран" #: js/ui/windowMenu.js:106 msgid "Always on Top" msgstr "Држи изнад осталих" #: js/ui/windowMenu.js:125 msgid "Always on Visible Workspace" msgstr "Прикажи на свим радним просторима" #: js/ui/windowMenu.js:139 msgid "Move to Workspace Left" msgstr "Премести на леви радни простор" #: js/ui/windowMenu.js:145 msgid "Move to Workspace Right" msgstr "Премести на десни радни простор" #: js/ui/windowMenu.js:151 msgid "Move to Workspace Up" msgstr "Премести на радни простор горе" #: js/ui/windowMenu.js:157 msgid "Move to Workspace Down" msgstr "Премести на радни простор доле" #: js/ui/windowMenu.js:175 msgid "Move to Monitor Up" msgstr "Премести на горњи радни простор" #: js/ui/windowMenu.js:184 msgid "Move to Monitor Down" msgstr "Премести на доњи радни простор" #: js/ui/windowMenu.js:193 msgid "Move to Monitor Left" msgstr "Премести екран улево" #: js/ui/windowMenu.js:202 msgid "Move to Monitor Right" msgstr "Премести екран удесно" #: js/ui/windowMenu.js:210 msgid "Close" msgstr "Затвори" #: src/main.c:529 subprojects/extensions-tool/src/main.c:336 msgid "Print version" msgstr "Исписује издање" #: src/main.c:535 msgid "Mode used by GDM for login screen" msgstr "Који режим користи ГДМ за екран пријављивања" #: src/main.c:541 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "Користи нарочит режим, нпр. „gdm“ за екран пријављивања" #: src/main.c:547 msgid "List possible modes" msgstr "Исписује могуће режиме" #: src/main.c:553 msgid "Force animations to be enabled" msgstr "Насилно омогући анимације" #: src/shell-app.c:253 msgctxt "program" msgid "Unknown" msgstr "Непознат" #: src/shell-app.c:504 #, c-format msgid "Failed to launch “%s”" msgstr "Нисам успео да покренем „%s“" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match." msgstr "Лозинке се не подударају." #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "Лозинка не може бити празна" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "Корисник је одбацио прозорче за потврђивање идентитета" #: src/st/st-icon-theme.c:1865 #, c-format msgid "Icon '%s' not present in theme %s" msgstr "Иконица „%s“ није присутна у теми %s" #: src/st/st-icon-theme.c:3454 src/st/st-icon-theme.c:3757 msgid "Failed to load icon" msgstr "Не могу да учитам иконицу" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 msgid "Manage your GNOME Extensions" msgstr "Подесите проширења Гнома" #. developer_name tag deprecated with Appstream 1.0 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:19 msgid "The GNOME Project" msgstr "Гном пројекат" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:51 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" "Гномова проширења руководе ажурирањем проширења, подешавањем поставки " "проширења и уклањањем или онемогућавањем проширења." #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:70 msgid "Main Window" msgstr "Главни прозор" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:74 msgid "Available Updates" msgstr "Доступна ажурирања" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:78 msgid "Search View" msgstr "Преглед претраге" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "Подесите проширења Гномове шкољке" #: subprojects/extensions-app/js/extensionManager.js:237 #, javascript-format msgid "" "The installed version of this extension (%s) is incompatible with the " "current version of GNOME (%s). The extension has been disabled." msgstr "" "Инсталиранo издање проширења (%s) није сагласно са тренутним издањем Гнома " "(%s). Проширење је искључено." #: subprojects/extensions-app/js/extensionManager.js:238 #, javascript-format msgid "" "The installed version of this extension is incompatible with the current " "version of GNOME (%s). The extension has been disabled." msgstr "" "Инсталиранo издање проширењa не подудара се са тренутним издањем Гнома (%s). " "Проширење је искључено." #: subprojects/extensions-app/js/extensionManager.js:242 msgid "" "An error has occurred in this extension. This could cause issues elsewhere " "in the system. It is recommended to turn the extension off until the error " "is resolved." msgstr "" "Дошло је до грешке у проширењу. Ово може проузроковати проблеме у остатку " "система. Препоручујемо искључивање проширења док грешка не буде решена." #. translators: Details for an extension error #: subprojects/extensions-app/js/extensionManager.js:248 msgid "Error details:" msgstr "Детаљи грешке:" #: subprojects/extensions-app/js/extensionRow.js:82 #, javascript-format msgid "Version %s" msgstr "Издање %s" #: subprojects/extensions-app/js/extensionsWindow.js:113 #, javascript-format msgid "Remove “%s”?" msgstr "Уклонити „%s“?" #: subprojects/extensions-app/js/extensionsWindow.js:114 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "" "Уколико уклоните проширење, мораћете га поново преузети да бисте га поново " "омогућили" #: subprojects/extensions-app/js/extensionsWindow.js:117 msgid "_Cancel" msgstr "_Откажи" #: subprojects/extensions-app/js/extensionsWindow.js:118 msgid "_Remove" msgstr "_Уклони" #: subprojects/extensions-app/js/extensionsWindow.js:158 msgid "translator-credits" msgstr "" "Мирослав Николић \n" "Милош Поповић \n" "Борисав Живановић \n" "Марко М. Костић \n" "https://гном.срб — превод Гнома на српски језик." #: subprojects/extensions-app/js/extensionsWindow.js:203 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "%d проширење биће ажурирано током следећег пријављивања." msgstr[1] "%d проширења биће ажурирана током следећег пријављивања." msgstr[2] "%d проширења биће ажурирана током следећег пријављивања." msgstr[3] "Једно проширење биће ажурирано током следећег пријављивања." #: subprojects/extensions-app/data/ui/extension-row.ui:21 msgid "Error Details" msgstr "Детаљи грешке" #: subprojects/extensions-app/data/ui/extension-row.ui:61 msgid "Updates Details" msgstr "Детаљи ажурирања" # msgid_plural "%d extensions will be updated on next login." #: subprojects/extensions-app/data/ui/extension-row.ui:71 msgid "" "A new version of this extension is ready and will be loaded on next login." msgstr "" "Ново издање овог проширења је спремно и биће учитано на следећем пријваљивању." #: subprojects/extensions-app/data/ui/extension-row.ui:107 msgid "Extension Details" msgstr "Прикажи појединости проширења" #: subprojects/extensions-app/data/ui/extension-row.ui:193 msgid "_Website" msgstr "_Веб страница" #: subprojects/extensions-app/data/ui/extension-row.ui:220 msgid "_Settings" msgstr "_Подешавања" #: subprojects/extensions-app/data/ui/extension-row.ui:247 msgid "_Remove…" msgstr "_Уклони…" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Keyboard Shortcuts" msgstr "Пречице тастатуре" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "О Проширењима" #: subprojects/extensions-app/data/ui/extensions-window.ui:64 msgid "Main Menu" msgstr "Главни мени" #: subprojects/extensions-app/data/ui/extensions-window.ui:106 msgid "Search extensions" msgstr "Претражи проширења" #: subprojects/extensions-app/data/ui/extensions-window.ui:134 msgid "_Extensions" msgstr "П_роширења" #: subprojects/extensions-app/data/ui/extensions-window.ui:143 msgid "More Information" msgstr "Више информација" #: subprojects/extensions-app/data/ui/extensions-window.ui:153 msgid "" "Extensions can cause performance and stability issues. It is recommended to " "disable all extensions if you experience problems with your system." msgstr "" "Проширења могу утицати на делотворност и стабилност. Онемогућите проширења " "уколико имате проблема са вашим системом." #: subprojects/extensions-app/data/ui/extensions-window.ui:180 msgid "User Extensions" msgstr "Корисникова проширења" #: subprojects/extensions-app/data/ui/extensions-window.ui:200 msgid "System Extensions" msgstr "Системска проширења" #: subprojects/extensions-app/data/ui/extensions-window.ui:235 msgid "Search Results" msgstr "Резултати претраге" #: subprojects/extensions-app/data/ui/extensions-window.ui:254 msgid "No Results Found" msgstr "Нема резултата" #: subprojects/extensions-app/data/ui/extensions-window.ui:255 msgid "Try a different search." msgstr "Покушајте другачију претрагу" #: subprojects/extensions-app/data/ui/extensions-window.ui:266 msgid "No Installed Extensions" msgstr "Неинсталирана проширења" #: subprojects/extensions-app/data/ui/extensions-window.ui:267 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" "Да бисте пронашли и додали проширења, посетите страницу extensions.gnome.org." #: subprojects/extensions-app/data/ui/extensions-window.ui:278 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" "Нажалост, није било могуће добавити списак инсталираних проширења. Проверите " "да ли сте пријављени у Гном и пробајте поново." #: subprojects/extensions-app/data/ui/help-overlay.ui:9 msgctxt "shortcut window" msgid "General" msgstr "Опште" #: subprojects/extensions-app/data/ui/help-overlay.ui:12 msgctxt "shortcut window" msgid "Open Menu" msgstr "Отвори мени" #: subprojects/extensions-app/data/ui/help-overlay.ui:18 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Укључи претрагу" #: subprojects/extensions-app/data/ui/help-overlay.ui:24 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Прикажи пречице" #: subprojects/extensions-app/data/ui/help-overlay.ui:30 msgctxt "shortcut window" msgid "Quit" msgstr "_Изађи" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:284 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "Ново проширење је успешно направљено у путањи %s.\n" #: subprojects/extensions-tool/src/command-create.c:376 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" "Назив треба бити кратка (по могућуству описна) ниска.\n" "На пример: %s" #: subprojects/extensions-tool/src/command-create.c:382 #: subprojects/extensions-tool/src/main.c:243 msgid "Name" msgstr "Назив" #: subprojects/extensions-tool/src/command-create.c:396 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" "Опис објашњава, у једној реченици, шта ваше проширење ради.\n" "На пример: %s" #: subprojects/extensions-tool/src/command-create.c:402 #: subprojects/extensions-tool/src/main.c:246 msgid "Description" msgstr "Опис" #: subprojects/extensions-tool/src/command-create.c:416 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" "ЈУИБ је општи и јединствени идентификатор вашег проширења.\n" "Ово треба бити у облику адресе е-поште (klikzafokus@petarperic.primer.rs)\n" #: subprojects/extensions-tool/src/command-create.c:443 msgid "Choose one of the available templates:\n" msgstr "Изаберите један од доступних шаблона:\n" #: subprojects/extensions-tool/src/command-create.c:457 msgid "Template" msgstr "Шаблон" #: subprojects/extensions-tool/src/command-create.c:515 msgid "The unique identifier of the new extension" msgstr "Јединствени идентификатор новог проширења" #: subprojects/extensions-tool/src/command-create.c:518 msgid "NAME" msgstr "НАЗИВ" #: subprojects/extensions-tool/src/command-create.c:519 msgid "The user-visible name of the new extension" msgstr "Назив новог проширења видљив кориснику" #: subprojects/extensions-tool/src/command-create.c:521 msgid "DESCRIPTION" msgstr "ОПИС" #: subprojects/extensions-tool/src/command-create.c:523 msgid "A short description of what the extension does" msgstr "Кратак опис онога што проширење ради" #: subprojects/extensions-tool/src/command-create.c:525 #: subprojects/extensions-tool/src/command-pack.c:455 msgid "DOMAIN" msgstr "ДОМЕН" #: subprojects/extensions-tool/src/command-create.c:527 msgid "The gettext domain used by the extension" msgstr "Геттекст домен које користи проширење" #: subprojects/extensions-tool/src/command-create.c:529 #: subprojects/extensions-tool/src/command-pack.c:448 msgid "SCHEMA" msgstr "ШЕМА" #: subprojects/extensions-tool/src/command-create.c:531 msgid "The GSettings schema used by the extension" msgstr "Шаблон г-подешавања које користи проширење" #: subprojects/extensions-tool/src/command-create.c:534 msgid "TEMPLATE" msgstr "ШАБЛОН" #: subprojects/extensions-tool/src/command-create.c:535 msgid "The template to use for the new extension" msgstr "Шаблон који треба користити за ново проширење" #: subprojects/extensions-tool/src/command-create.c:538 msgid "Include prefs.js template" msgstr "Укључи prefs.js шаблон" #: subprojects/extensions-tool/src/command-create.c:544 msgid "Enter extension information interactively" msgstr "Интерактивно унесите податке о проширењу" #: subprojects/extensions-tool/src/command-create.c:552 msgid "Create a new extension" msgstr "Направи ново проширење" #: subprojects/extensions-tool/src/command-create.c:570 #: subprojects/extensions-tool/src/command-list.c:190 msgid "Unknown arguments" msgstr "Непознати аргументи" #: subprojects/extensions-tool/src/command-create.c:595 msgid "UUID, name and description are required" msgstr "Ставке ЈУИБ, назив и опис су обавезне" #: subprojects/extensions-tool/src/command-disable.c:62 #: subprojects/extensions-tool/src/command-enable.c:62 #, c-format msgid "Extension “%s” does not exist\n" msgstr "Проширење „%s“ не постоји\n" #: subprojects/extensions-tool/src/command-disable.c:98 msgid "Disable an extension" msgstr "Онемогући проширење" #: subprojects/extensions-tool/src/command-disable.c:116 #: subprojects/extensions-tool/src/command-enable.c:116 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "Ниједан ЈУИБ није наведен" #: subprojects/extensions-tool/src/command-disable.c:121 #: subprojects/extensions-tool/src/command-enable.c:121 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "Наведено је више од једног ЈУИБ-а" #: subprojects/extensions-tool/src/command-enable.c:98 msgid "Enable an extension" msgstr "Омогући проширење" #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:66 #: subprojects/extensions-tool/src/main.c:150 msgid "Failed to connect to GNOME Shell\n" msgstr "Нисам успео да се повежем на Гномову шкољку\n" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:159 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "Проширење „%s“ не постоји\n" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "Прикажи податке о проширењима" #: subprojects/extensions-tool/src/command-install.c:190 msgid "Overwrite an existing extension" msgstr "Препиши постојеће проширење" #: subprojects/extensions-tool/src/command-install.c:192 msgid "EXTENSION_BUNDLE" msgstr "ЗАПАКОВАНО_ПРОШИРЕЊЕ" #: subprojects/extensions-tool/src/command-install.c:201 msgid "Install an extension bundle" msgstr "Инсталирај пакет проширења" #: subprojects/extensions-tool/src/command-install.c:219 msgid "No extension bundle specified" msgstr "Ниједан пакет проширења није наведен" #: subprojects/extensions-tool/src/command-install.c:225 msgid "More than one extension bundle specified" msgstr "Наведено је више од једног запакованог проширења" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show user-installed extensions" msgstr "Прикажи корисничка проширења" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show system-installed extensions" msgstr "Прикажи системска проширења" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Show enabled extensions" msgstr "Прикажи омогућена проширења" #: subprojects/extensions-tool/src/command-list.c:149 msgid "Show disabled extensions" msgstr "Прикажи онемогућена проширења" #: subprojects/extensions-tool/src/command-list.c:152 msgid "Show extensions in active state" msgstr "Прикажи активна проширења" #: subprojects/extensions-tool/src/command-list.c:155 msgid "Show extensions in inactive state" msgstr "Прикажи неактивна проширења" #: subprojects/extensions-tool/src/command-list.c:158 msgid "Show extensions with preferences" msgstr "Прикажи проширења са поставкама" #: subprojects/extensions-tool/src/command-list.c:161 msgid "Show extensions with updates" msgstr "Прикажи проширења са ажурирањима" #: subprojects/extensions-tool/src/command-list.c:164 msgid "Print extension details" msgstr "Прикажи појединости проширења" #: subprojects/extensions-tool/src/command-list.c:172 msgid "List installed extensions" msgstr "Излистај инсталирана проширења" #: subprojects/extensions-tool/src/command-pack.c:444 msgid "FILE" msgstr "ДАТОТЕКА" #: subprojects/extensions-tool/src/command-pack.c:445 msgid "Additional source to include in the bundle" msgstr "Додатан извор који треба укључити у пакет" #: subprojects/extensions-tool/src/command-pack.c:449 msgid "A GSettings schema that should be included" msgstr "Шема г-подешавања коју треба упаковати" #: subprojects/extensions-tool/src/command-pack.c:451 #: subprojects/extensions-tool/src/command-pack.c:462 msgid "DIRECTORY" msgstr "ДИРЕКТОРИЈУМ" #: subprojects/extensions-tool/src/command-pack.c:453 msgid "The directory where translations are found" msgstr "Директоријум са преводима" #: subprojects/extensions-tool/src/command-pack.c:457 msgid "The gettext domain to use for translations" msgstr "Геттекст домен који треба користити за преводе" #: subprojects/extensions-tool/src/command-pack.c:460 msgid "Overwrite an existing pack" msgstr "Препиши постојећи пакет" #: subprojects/extensions-tool/src/command-pack.c:464 msgid "The directory where the pack should be created" msgstr "Фасцикла где треба направити пакет" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "SOURCE_DIRECTORY" msgstr "ИЗВОРНИ_ДИРЕКТОРИЈУМ" #: subprojects/extensions-tool/src/command-pack.c:475 msgid "Create an extension bundle" msgstr "Направи пакет са проширењем" #: subprojects/extensions-tool/src/command-pack.c:495 msgid "More than one source directory specified" msgstr "Наведено је више изворних директоријума" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "Проширење „%s“ нема своје поставке\n" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "Нисам успео да отворим поставке за проширење „%s“: %s\n" #: subprojects/extensions-tool/src/command-prefs.c:87 msgid "Opens extension preferences" msgstr "Отвара поставке проширења" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "Поново поставља проширење" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "Није могуће деинсталирати системска проширења\n" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "Нисам успео да деинсталирам „%s“\n" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "Деинсталира проширење" #: subprojects/extensions-tool/src/main.c:76 msgid "Do not print error messages" msgstr "Не приказуј поруке са грешкама" #: subprojects/extensions-tool/src/main.c:249 msgid "Path" msgstr "Путања" #: subprojects/extensions-tool/src/main.c:252 msgid "URL" msgstr "Адреса" #: subprojects/extensions-tool/src/main.c:255 msgid "Original author" msgstr "Изворни творац" #: subprojects/extensions-tool/src/main.c:261 #: subprojects/extensions-tool/src/main.c:263 #: subprojects/extensions-tool/src/main.c:265 msgid "Version" msgstr "Издање" #: subprojects/extensions-tool/src/main.c:268 msgid "Enabled" msgstr "Укључено" #: subprojects/extensions-tool/src/main.c:268 msgid "Yes" msgstr "Да" #: subprojects/extensions-tool/src/main.c:268 msgid "No" msgstr "Не" #: subprojects/extensions-tool/src/main.c:271 msgid "State" msgstr "Стaњe" #: subprojects/extensions-tool/src/main.c:309 msgid "“version” takes no arguments" msgstr "\"version\" не узима аргументе" #: subprojects/extensions-tool/src/main.c:311 #: subprojects/extensions-tool/src/main.c:331 msgid "Usage:" msgstr "Начин коришћења:" #: subprojects/extensions-tool/src/main.c:314 msgid "Print version information and exit." msgstr "Исписује податке о издању и излази." #: subprojects/extensions-tool/src/main.c:329 #: subprojects/extensions-tool/src/main.c:332 msgid "COMMAND" msgstr "НАРЕДБА" #: subprojects/extensions-tool/src/main.c:332 msgid "[ARGS…]" msgstr "[АРГУМЕНТИ…]" #: subprojects/extensions-tool/src/main.c:334 msgid "Commands:" msgstr "Наредбе:" #: subprojects/extensions-tool/src/main.c:335 msgid "Print help" msgstr "Прикажи помоћ" #: subprojects/extensions-tool/src/main.c:337 msgid "Enable extension" msgstr "Омогући проширење" #: subprojects/extensions-tool/src/main.c:338 msgid "Disable extension" msgstr "Онемогући проширење" #: subprojects/extensions-tool/src/main.c:339 msgid "Reset extension" msgstr "Поново постави проширење" #: subprojects/extensions-tool/src/main.c:340 msgid "Uninstall extension" msgstr "Деинсталирај проширење" #: subprojects/extensions-tool/src/main.c:341 msgid "List extensions" msgstr "Излистај проширење" #: subprojects/extensions-tool/src/main.c:342 #: subprojects/extensions-tool/src/main.c:343 msgid "Show extension info" msgstr "Прикажи податке о проширењу" #: subprojects/extensions-tool/src/main.c:344 msgid "Open extension preferences" msgstr "Отвори поставке проширења" #: subprojects/extensions-tool/src/main.c:345 msgid "Create extension" msgstr "Направи проширење" #: subprojects/extensions-tool/src/main.c:346 msgid "Package extension" msgstr "Запакуј проширење" #: subprojects/extensions-tool/src/main.c:347 msgid "Install extension bundle" msgstr "Инсталирај пакет проширења" #: subprojects/extensions-tool/src/main.c:349 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "Користи „%s“ за детаљнију помоћ.\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "Обично" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "Празно проширење" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "Показатељ" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "Додај иконицу у горњу траку" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:4 msgid "Quick Settings Item" msgstr "Ставка брзих подешавања" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:5 msgid "Add an item to quick settings" msgstr "Додај ставку у брза подешавања" #. translators: #. * The device has been disabled #: subprojects/gvc/gvc-mixer-control.c:1872 msgid "Disabled" msgstr "Искључено" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1879 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u излаз" msgstr[1] "%u излаза" msgstr[2] "%u излаза" msgstr[3] "%u излаз" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1889 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u улаз" msgstr[1] "%u улаза" msgstr[2] "%u улаза" msgstr[3] "%u улаз" #: subprojects/gvc/gvc-mixer-control.c:2872 msgid "System Sounds" msgstr "Системски звуци" #~ msgid "Network Manager" #~ msgstr "Управник мреже" #, javascript-format #~ msgid "%s is now known as %s" #~ msgstr "„%s“ је сада познат као „%s“" #~ msgid "Disabling" #~ msgstr "Онемогућавам" #~ msgid "Enabling" #~ msgstr "Омогућавам" #~ msgid "Thunderbolt" #~ msgstr "Тандерболт" #~ msgid "No Thanks" #~ msgstr "Не, хвала" #~ msgid "No Matches" #~ msgstr "Нема подударања" #~ msgid "The extension had an error" #~ msgstr "Проширење садржи грешку" #~ msgid "The extension can be updated" #~ msgstr "Постоји ажурирање проширења" #~ msgid "Help" #~ msgstr "Помоћ" #~ msgid "Manually Installed" #~ msgstr "Ручно инсталирана" #~ msgid "Built-In" #~ msgstr "Уграђена" #~ msgid "Extension Updates Ready" #~ msgstr "Спремна су ажурирања проширења" #~ msgid "Screenshot / Screencast" #~ msgstr "Снимак екрана / видео снимак" #, javascript-format #~ msgid "%d %%" #~ msgstr "%d %%" #~ msgid "Attach modal dialog to the parent window" #~ msgstr "Прикачиње прозорче родитељском прозору" #~ msgid "" #~ "This key overrides the key in org.gnome.mutter when running GNOME Shell." #~ msgstr "" #~ "Овај кључ превазилази кључ у „org.gnome.mutter“ када покреће Гномову " #~ "шкољку." #~ msgid "Enable edge tiling when dropping windows on screen edges" #~ msgstr "" #~ "Укључује поплочавање ивице приликом отпуштања прозора на ивицама екрана" #~ msgid "Workspaces are managed dynamically" #~ msgstr "Радним просторима се управља динамички" #~ msgid "Workspaces only on primary monitor" #~ msgstr "Радни простори само на примарном монитору" #~ msgid "Delay focus changes in mouse mode until the pointer stops moving" #~ msgstr "" #~ "Застој првог плана се мења у режиму миша док се показивач не заустави" #~ msgid "Region & Language Settings" #~ msgstr "Подешавања региона и језика" #~ msgid "Applications" #~ msgstr "Програми" #, javascript-format #~ msgid "Unable to start %s" #~ msgstr "Не могу да покренем „%s“" #, javascript-format #~ msgid "Couldn’t find the %s application" #~ msgstr "Нисам могао наћи програм %s" #~ msgid "Evolution Calendar" #~ msgstr "Календар Еволуције" #~ msgid "" #~ "Whether the default Bluetooth adapter had set up devices associated to it" #~ msgstr "Да ли је основни адаптер блутута подесио њему придружене уређаје" #~ msgid "" #~ "The shell will only show a Bluetooth menu item if a Bluetooth adapter is " #~ "powered, or if there were devices set up associated with the default " #~ "adapter. This will be reset if the default adapter is ever seen not to " #~ "have devices associated to it." #~ msgstr "" #~ "Шкољка ће приказати ставку изборника блутута само ако је адаптер блутута " #~ "упаљен, или ако има подешених уређаја придружених основном адаптеру. Ово " #~ "ће се вратити на почетно стање ако се установи да основни адаптер нема " #~ "њему придружених уређаја." #~ msgid "Log Out" #~ msgstr "Одјави ме" #~ msgid "Bluetooth On" #~ msgstr "Блутут укљ." #~ msgid "Bluetooth Off" #~ msgstr "Блутут иск." #~ msgid "Location In Use" #~ msgstr "Користи локацију" #~ msgid "Location Disabled" #~ msgstr "Не користи локацију" #, javascript-format #~ msgid "%s Off" #~ msgstr "%s искључено" #, javascript-format #~ msgid "%s Connected" #~ msgstr "%s повезано" #, javascript-format #~ msgid "%s Unmanaged" #~ msgstr "%s неуправљано" #, javascript-format #~ msgid "%s Connecting" #~ msgstr "%s повезивање у току" #, javascript-format #~ msgid "%s Requires Authentication" #~ msgstr "%s захтева пријаву" #, javascript-format #~ msgid "Firmware Missing For %s" #~ msgstr "Недостаје фирмвер за %s" #, javascript-format #~ msgid "%s Unavailable" #~ msgstr "%s недоступно" #, javascript-format #~ msgid "%s Connection Failed" #~ msgstr "%s повезивање неуспешно" #, javascript-format #~ msgid "%s Hardware Disabled" #~ msgstr "%s уређај искључен" #, javascript-format #~ msgid "%s Disabled" #~ msgstr "%s искључено" #~ msgid "Connect to Internet" #~ msgstr "Повежи се на Интернет" #~ msgid "Airplane Mode is On" #~ msgstr "Авионски режим рада је укључен" #~ msgid "Wi-Fi is disabled when airplane mode is on." #~ msgstr "Бежична веза је искључена када је укључен авионски режим рада." #~ msgid "Turn Off Airplane Mode" #~ msgstr "Искључи авионски режим рада" #~ msgid "Wi-Fi is Off" #~ msgstr "Бежична веза је искључена" #~ msgid "Wi-Fi needs to be turned on in order to connect to a network." #~ msgstr "Бежична веза треба бити укључена да бисте се повезали на мрежу." #~ msgid "Turn On Wi-Fi" #~ msgstr "Укључи бежичну везу" #~ msgid "Wi-Fi Networks" #~ msgstr "Бежичне мреже" #~ msgid "Select a network" #~ msgstr "Изаберите мрежу" #~ msgid "Use hardware switch to turn off" #~ msgstr "Користи физички прекидач за искључивање" #~ msgid "Select Network" #~ msgstr "Изабери мрежу" #~ msgid "Wi-Fi Settings" #~ msgstr "Подешавања бежичне везе" #, javascript-format #~ msgid "%s Not Connected" #~ msgstr "%s неповезано" #~ msgid "connecting…" #~ msgstr "повезујем се…" #~ msgid "authentication required" #~ msgstr "потребна је пријава" #~ msgid "connection failed" #~ msgstr "повезивање није успело" #~ msgid "VPN Off" #~ msgstr "Искључи ВПН" #, javascript-format #~ msgid "%s Wi-Fi Connection" #~ msgid_plural "%s Wi-Fi Connections" #~ msgstr[0] "%s бежична веза" #~ msgstr[1] "%s бежичне везе" #~ msgstr[2] "%s бежичних веза" #~ msgstr[3] "%s бежична веза" #~ msgid "Night Light Disabled" #~ msgstr "Ноћно светло не ради" #~ msgid "Resume" #~ msgstr "Настави" #~ msgid "Disable Until Tomorrow" #~ msgstr "Искључи до сутра" #~ msgid "Fully Charged" #~ msgstr "Потпуно пуна" #~ msgid "Not Charging" #~ msgstr "Не пуни се" #~ msgid "Estimating…" #~ msgstr "Прорачунавам…" #, javascript-format #~ msgid "%d∶%02d Remaining (%d %%)" #~ msgstr "До празне: %d:%02d (%d %%)" # Кратак превод да би се видело време и проценат напуњености у системском менију Гномове шкољке. #, javascript-format #~ msgid "%d∶%02d Until Full (%d %%)" #~ msgstr "До пуне: %d:%02d (%d %%)" #~ msgid "Screen is Being Shared" #~ msgstr "Екран се дели" #~ msgid "Turn off" #~ msgstr "Искључи" #~ msgid "Airplane Mode On" #~ msgstr "Авио режим укључен" #~ msgid "Lock" #~ msgstr "Закључај" #~ msgid "Power Off / Log Out" #~ msgstr "Искључивање или одјава" #~ msgid "Remove from Favorites" #~ msgstr "Уклони из омиљених" #~ msgid "Add to Favorites" #~ msgstr "Додај у омиљене" #~ msgid "Author" #~ msgstr "Творац" #~ msgid "Warning" #~ msgstr "Упозорење" #~ msgid "" #~ "Extensions can cause system issues, including performance problems. If " #~ "you encounter problems with your system, it is recommended to disable all " #~ "extensions." #~ msgstr "" #~ "Проширења могу утицати на стабилност система, укључујући и на " #~ "делотворност. Уколико приметите проблеме у раду, препоручујемо да " #~ "онемогућите сва проширења." #~ msgid "Failed to connect to GNOME Shell" #~ msgstr "Нисам успео да се повежем на Гномову шкољку" #~ msgid "Enable introspection API" #~ msgstr "Омогући АПИ за интроспекцију" #~ msgid "" #~ "Enables a D-Bus API that allows to introspect the application state of " #~ "the shell." #~ msgstr "" #~ "Омогућава АПИ Д-сабирнице који дозвољава интроспекцију програмског стања " #~ "шкољке." #~ msgid "Minimize" #~ msgstr "Умањи" #~ msgid "Unmaximize" #~ msgstr "Поништи увећање" #~ msgid "App Picker View" #~ msgstr "Преглед избирача програма" #~ msgid "Index of the currently selected view in the application picker." #~ msgstr "Попис тренутно изабраног прегледа у избирачу програма." #~ msgid "Frequently used applications will appear here" #~ msgstr "Често коришћени програми ће се појавити овде" #~ msgid "Frequent" #~ msgstr "Често" #~ msgid "All" #~ msgstr "Све" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d" #~ msgstr "%A, %-d. %B" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d, %Y" #~ msgstr "%A, %-d. %B %Y." #~ msgid "On" #~ msgstr "Укључено" #~ msgid "Copy Error" #~ msgstr "Грешка при копирању" #~ msgid "Username…" #~ msgstr "Корисник…" #~ msgid "Password: " #~ msgstr "Лозинка: " #~ msgid "Enter Password…" #~ msgstr "Унеси лозинку…" #~ msgid "Browse in Software" #~ msgstr "Прегледај у Програмима" #~ msgid "Next" #~ msgstr "Даље" #~ msgctxt "button" #~ msgid "Sign In" #~ msgstr "Пријави ме" #~ msgid "Rename" #~ msgstr "Преименуј" #~ msgid "Type again:" #~ msgstr "Упишите поново:" #~ msgid "Authentication required by wireless network" #~ msgstr "Бежична мрежа захтева потврђивање идентитета" #~ msgid "Mobile broadband network password" #~ msgstr "Лозинка мобилне широкопојасне мреже" #~ msgid "%A, %B %d" #~ msgstr "%A, %d. %B" #~ msgid "%d new message" #~ msgid_plural "%d new messages" #~ msgstr[0] "%d нова порука" #~ msgstr[1] "%d нове поруке" #~ msgstr[2] "%d нових порука" #~ msgstr[3] "%d нова порука" #~ msgid "Account Settings" #~ msgstr "Подешавања налога" #~ msgid "Orientation Lock" #~ msgstr "Катанац окренутости" #~ msgid "" #~ "Keybinding that pauses and resumes all running tweens, for debugging " #~ "purposes" #~ msgstr "" #~ "Свеза тастера која паузира и наставља све покренуте близанце, за сврхе " #~ "прочишћавања" #~ msgid "Which keyboard to use" #~ msgstr "Која ће тастатура бити коришћена" #~ msgid "The type of keyboard to use." #~ msgstr "Врста тастатуре за употребу." #~ msgid "network-workgroup" #~ msgstr "network-workgroup" #~ msgid "toggle-switch-us" #~ msgstr "toggle-switch-intl" #~ msgid "There was an error loading the preferences dialog for %s:" #~ msgstr "Дошло је до грешке при учитавању прозорчета поставки за „%s“:" #~ msgid "%s all day." #~ msgstr "%s целог дана." #~ msgid "%s, then %s later." #~ msgstr "%s, затим %s касније." #~ msgid "%s, then %s, followed by %s later." #~ msgstr "%s, затим %s, а касније %s." #~ msgid "Feels like %s." #~ msgstr "Осећа се као %s." #~ msgctxt "search-result" #~ msgid "Log out" #~ msgstr "Одјави ме" #~ msgctxt "search-result" #~ msgid "Switch user" #~ msgstr "Промени корисника" #~ msgid "Hide tray" #~ msgstr "Сакриј касету" #~ msgid "Status Icons" #~ msgstr "Иконице стања" #~ msgid "Events" #~ msgstr "Догађаји" #~ msgid "Media" #~ msgstr "Медији" #~ msgid "Web Authentication Redirect" #~ msgstr "Преусмеравање потврђивања идентитета вебом" #~ msgid "%d x %d" #~ msgstr "%d x %d" #~ msgid "Show the week date in the calendar" #~ msgstr "Приказује дан у недељи у календару" #~ msgid "If true, display the ISO week date in the calendar." #~ msgstr "Ако је изабрано, приказује ИСО дан у недељи у календару." #~ msgid "Use as Internet connection" #~ msgstr "Користи као Интернет везу" #~ msgid "%s is requesting access to your location." #~ msgstr "„%s“ захтева приступ вашем месту." #~ msgid "GNOME Shell (wayland compositor)" #~ msgstr "Гномова шкољка (вајланд састављач)" #~ msgid "%d Connected Device" #~ msgid_plural "%d Connected Devices" #~ msgstr[0] "%d прикључени уређај" #~ msgstr[1] "%d прикључена уређаја" #~ msgstr[2] "%d прикључених уређаја" #~ msgstr[3] "%d прикључени уређај" #~ msgid "UPS" #~ msgstr "Резервно напајање" #~ msgid "Battery" #~ msgstr "Батерија" #~ msgid "Show the message tray" #~ msgstr "Прикажите фиоку порука" #~ msgid "Captive Portal" #~ msgstr "Портал стопке" #~ msgctxt "event list time" #~ msgid "%H∶%M" #~ msgstr "%H∶%M" #~ msgctxt "event list time" #~ msgid "%l∶%M %p" #~ msgstr "%l∶%M %p" #~ msgctxt "list sunday" #~ msgid "Su" #~ msgstr "Нед" #~ msgctxt "list monday" #~ msgid "M" #~ msgstr "Пон" #~ msgctxt "list tuesday" #~ msgid "T" #~ msgstr "Уто" #~ msgctxt "list wednesday" #~ msgid "W" #~ msgstr "Сре" #~ msgctxt "list thursday" #~ msgid "Th" #~ msgstr "Чет" #~ msgctxt "list friday" #~ msgid "F" #~ msgstr "Пет" #~ msgctxt "list saturday" #~ msgid "S" #~ msgstr "Суб" #~ msgid "Nothing Scheduled" #~ msgstr "Ништа планирано" #~ msgid "This week" #~ msgstr "Ове недеље" #~ msgid "Next week" #~ msgstr "Следеће недеље" #~ msgid "Removable Devices" #~ msgstr "Уклоњиви уређаји" #~ msgid "Eject" #~ msgstr "Избаци" #~ msgid "Invitation" #~ msgstr "Позивница" #~ msgid "Call" #~ msgstr "Позив" #~ msgid "File Transfer" #~ msgstr "Пренос датотека" #~ msgid "Chat" #~ msgstr "Ћаскање" #~ msgid "Invitation to %s" #~ msgstr "Позивница за „%s“" #~ msgid "%s is inviting you to join %s" #~ msgstr "%s вас позива да се придружите „%s“" #~ msgid "Decline" #~ msgstr "Одбиј" #~ msgid "Accept" #~ msgstr "Прихвати" #~ msgid "Video call from %s" #~ msgstr "%s вам је упутио видео позив" #~ msgid "Call from %s" #~ msgstr "%s вас зове" #~ msgid "Answer" #~ msgstr "Одговори" #~ msgid "%s is sending you %s" #~ msgstr "%s вам шаље „%s“" #~ msgid "%s would like permission to see when you are online" #~ msgstr "%s тражи одобрење да види када сте на вези" #~ msgid "Authentication failed" #~ msgstr "Потврђивање идентитета није успело" #~ msgid "Encryption error" #~ msgstr "Грешка шифровања" #~ msgid "Certificate not provided" #~ msgstr "Уверење није прослеђено" #~ msgid "Certificate untrusted" #~ msgstr "Уверење није поверљиво" #~ msgid "Certificate expired" #~ msgstr "Уверење је истекло" #~ msgid "Certificate not activated" #~ msgstr "Уверење није активирано" #~ msgid "Certificate hostname mismatch" #~ msgstr "Назив домаћина уверења се не поклапа" #~ msgid "Certificate fingerprint mismatch" #~ msgstr "Отисак уверења се не поклапа" #~ msgid "Certificate self-signed" #~ msgstr "Уверење је самопотписано" #~ msgid "Status is set to offline" #~ msgstr "Стање је постављено на „неповезан“" #~ msgid "Certificate is invalid" #~ msgstr "Уверење није исправно" #~ msgid "Connection has been refused" #~ msgstr "Веза је одбијена" #~ msgid "Connection can't be established" #~ msgstr "Веза не може бити успостављена" #~ msgid "Connection has been lost" #~ msgstr "Веза је изгубљена" #~ msgid "This account is already connected to the server" #~ msgstr "Овај налог је већ повезан са сервером" #~ msgid "" #~ "Connection has been replaced by a new connection using the same resource" #~ msgstr "Веза је замењена новом везом користећи исти ресурс" #~ msgid "The account already exists on the server" #~ msgstr "Овај налог већ постоји на серверу" #~ msgid "Server is currently too busy to handle the connection" #~ msgstr "Сервер је тренутно превише заузет да би руковао везом" #~ msgid "Certificate has been revoked" #~ msgstr "Уверење је опозвано" #~ msgid "" #~ "Certificate uses an insecure cipher algorithm or is cryptographically weak" #~ msgstr "" #~ "Уверење користи несигуран алгоритам шифровања или је криптографски слабо" #~ msgid "" #~ "The length of the server certificate, or the depth of the server " #~ "certificate chain, exceed the limits imposed by the cryptography library" #~ msgstr "" #~ "Дужина уверења сервера, или дубина ланца уверења сервера, премашује " #~ "границе које је задала библиотека шифровања" #~ msgid "Internal error" #~ msgstr "Унутрашња грешка" #~ msgid "View account" #~ msgstr "Види налог" #~ msgid "Open" #~ msgstr "Отвори" #~ msgid "Clear Messages" #~ msgstr "Очисти поруке" #~ msgid "Notification Settings" #~ msgstr "Поставке обавештења" #~ msgid "No Messages" #~ msgstr "Нема порука" #~ msgid "Message Tray" #~ msgstr "Фиока порука" #~ msgid "The maximum accuracy level of location." #~ msgstr "Највиши ниво тачности места." #~ msgid "" #~ "Configures the maximum level of location accuracy applications are " #~ "allowed to see. Valid options are 'off' (disable location tracking), " #~ "'country', 'city', 'neighborhood', 'street', and 'exact' (typically " #~ "requires GPS receiver). Please keep in mind that this only controls what " #~ "GeoClue will allow applications to see and they can find user's location " #~ "on their own using network resources (albeit with street-level accuracy " #~ "at best)." #~ msgstr "" #~ "Подешава највећи ниво тачности места коју програми могу да користе. " #~ "Исправне могућности су „off“ (искључује праћење места), " #~ "„country“ (држава), „city“ (град), „neighborhood“ (комшилук), " #~ "„street“ (улица), и „exact“ (тачно — обично захтева ГПС пријемник). " #~ "Имајте на уму да ће ово одлучити шта ће „Гео индиција“ дозволити " #~ "програмима само да виде и да могу пронаћи корисниково место на своју руку " #~ "користећи изворишта мреже (мада са тачношћу на нивоу улице у најбољем " #~ "случају)." #~ msgid "Arrangement of buttons on the titlebar" #~ msgstr "Распоред дугмића на траци наслова" #~ msgid "" #~ "This key overrides the key in org.gnome.desktop.wm.preferences when " #~ "running GNOME Shell." #~ msgstr "" #~ "Овај кључ превазилази кључ у „org.gnome.desktop.wm.preferences“ када " #~ "покреће Гномову шкољку." #~ msgid "Select an extension to configure using the combobox above." #~ msgstr "Изаберите проширење за подешавање користећи прозорче за избор." #~ msgid "calendar:MY" #~ msgstr "calendar:MY" #~ msgid "List of categories that should be displayed as folders" #~ msgstr "Списак категорија које треба да буду приказане као фасцикле" #~ msgid "" #~ "Each category name in this list will be represented as folder in the " #~ "application view, rather than being displayed inline in the main view." #~ msgstr "" #~ "Назив сваке категорије на списку ће бити представљен као фасцикла у " #~ "прегледу програма, уместо да буде приказан непосредно у главном прегледу." #~ msgid "%A, %H:%M" #~ msgstr "%A, у %H:%M" #~ msgid "%B %d, %H:%M" #~ msgstr "%d. %B у %H:%M" #~ msgid "%B %d %Y, %H:%M " #~ msgstr "%d. %B %Y. у %H:%M" #~ msgid "Authorization request from %s" #~ msgstr "Захтев за овлашћење са „%s“" #~ msgid "Device %s wants to pair with this computer" #~ msgstr "Уређај „%s“ жели да се упари са овим рачунаром" #~ msgid "Device %s wants access to the service '%s'" #~ msgstr "Уређај „%s“ жели приступ услузи „%s“" #~ msgid "Grant this time only" #~ msgstr "Одобри само овај пут" #~ msgid "Reject" #~ msgstr "Одбиј" #~ msgid "Pairing confirmation for %s" #~ msgstr "Упарујем потврду за „%s“" #~ msgid "" #~ "Please confirm whether the Passkey '%06d' matches the one on the device." #~ msgstr "" #~ "Молим потврдите да ли се пропусни кључ „%06d“ подудара са оним на уређају." #~ msgid "Does not match" #~ msgstr "Не подудара се" #~ msgid "Pairing request for %s" #~ msgstr "Захтев за упаривање за „%s“" #~ msgid "Please enter the PIN mentioned on the device." #~ msgstr "Молим унесите ПИН назначен на уређају." #~ msgid "OK" #~ msgstr "У реду" #~ msgid "" #~ "Sorry, no wisdom for you today:\n" #~ "%s" #~ msgstr "" #~ "Извините, данас за вас нема мудрости:\n" #~ "%s" #~ msgid "%s the Oracle says" #~ msgstr "Пророк је рекао %s" 07070100000262000081A40000000000000000000000016712993F0001DBE2000000000000000000000000000000000000002000000000gnome-shell-47.1/po/sr@latin.po# Serbian translation for gnome-shell. # Courtesy of Prevod.org team (http://prevod.org/) -- 2010—2023. # Copyright © 2010 gnome-shell's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-shell package. # Translators: # Borisav Živanović , 2017—2018. # Marko M. Kostić , 2016-2020. # Miroslav Nikolić , 2011–2023. # Branko Grubic , 2024. # Miloš Popović , 2010—20-2024. # msgid "" msgstr "" "Project-Id-Version: gnome-shell\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues/\n" "POT-Creation-Date: 2024-03-21 23:37+0000\n" "PO-Revision-Date: 2024-03-29 14:34+0100\n" "Last-Translator: Miloš Popović \n" "Language-Team: Serbian >\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=4; plural=n==1? 3 : n%10==1 && n%100!=11 ? 0 : " "n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2\n" "X-Project-Style: gnome\n" "X-Poedit-Bookmarks: -1,167,-1,-1,-1,-1,-1,-1,-1,-1\n" "X-Generator: Gtranslator 45.3\n" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "Pokretači" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate pinned app 1" msgstr "Pokreni omiljeni program 1" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate pinned app 2" msgstr "Pokreni omiljeni program 2" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate pinned app 3" msgstr "Pokreni omiljeni program 3" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate pinned app 4" msgstr "Pokreni omiljeni program 4" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate pinned app 5" msgstr "Pokreni omiljeni program 5" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate pinned app 6" msgstr "Pokreni omiljeni program 6" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate pinned app 7" msgstr "Pokreni omiljeni program 7" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate pinned app 8" msgstr "Pokreni omiljeni program 8" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate pinned app 9" msgstr "Pokreni omiljeni program 9" #: data/50-gnome-shell-launchers.xml:46 msgid "Open new window of pinned app 1" msgstr "Otvori novi prozor omiljenog programa 1" #: data/50-gnome-shell-launchers.xml:50 msgid "Open new window of pinned app 2" msgstr "Otvori novi prozor omiljenog programa 2" #: data/50-gnome-shell-launchers.xml:54 msgid "Open new window of pinned app 3" msgstr "Otvori novi prozor omiljenog programa 3" #: data/50-gnome-shell-launchers.xml:58 msgid "Open new window of pinned app 4" msgstr "Otvori novi prozor omiljenog programa 4" #: data/50-gnome-shell-launchers.xml:62 msgid "Open new window of pinned app 5" msgstr "Otvori novi prozor omiljenog programa 5" #: data/50-gnome-shell-launchers.xml:66 msgid "Open new window of pinned app 6" msgstr "Otvori novi prozor omiljenog programa 6" #: data/50-gnome-shell-launchers.xml:70 msgid "Open new window of pinned app 7" msgstr "Otvori novi prozor omiljenog programa 8" #: data/50-gnome-shell-launchers.xml:74 msgid "Open new window of pinned app 8" msgstr "Otvori novi prozor omiljenog programa 8" #: data/50-gnome-shell-launchers.xml:78 msgid "Open new window of pinned app 9" msgstr "Otvori novi prozor omiljenog programa 9" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2276 msgid "Screenshots" msgstr "Snimci ekrana" #: data/50-gnome-shell-screenshots.xml:9 #: data/org.gnome.shell.gschema.xml.in:287 msgid "Take a screenshot interactively" msgstr "Napravite interaktivni snimak ekrana" #: data/50-gnome-shell-screenshots.xml:12 #: data/org.gnome.shell.gschema.xml.in:299 msgid "Take a screenshot" msgstr "Napravi snimak ekrana" #: data/50-gnome-shell-screenshots.xml:15 #: data/org.gnome.shell.gschema.xml.in:295 msgid "Take a screenshot of a window" msgstr "Napravi snimak prozora" #: data/50-gnome-shell-screenshots.xml:18 #: data/org.gnome.shell.gschema.xml.in:291 msgid "Record a screencast interactively" msgstr "Interaktivno snimi video ekrana" #: data/50-gnome-shell-system.xml:6 js/ui/messageTray.js:1293 msgid "System" msgstr "Sistem" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "Prikažite spisak obaveštenja" #: data/50-gnome-shell-system.xml:12 msgid "Open the quick settings menu" msgstr "Otvori meni brzih podešavanja" #: data/50-gnome-shell-system.xml:15 msgid "Focus the active notification" msgstr "Postavite u žižu aktivno obaveštenje" #: data/50-gnome-shell-system.xml:18 msgid "Show the overview" msgstr "Prikaži pregled" #: data/50-gnome-shell-system.xml:21 msgid "Show all apps" msgstr "Prikaži sve programe" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "Gnomova školjka" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "Upravnik prozorima i pokretač programa" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "Uključuje alate korisne programerima i testerima iz „Alt-F2“ prozorčeta" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Dozvoljava pristup unutrašnjem otklanjanju grešaka i alatima za praćenje " "korišćenjem „Alt-F2“ prozorčeta." #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "JUIB-ovi proširenja za uključivanje" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "Proširenja Gnomove školjke imaju JUIB vrednost; ovaj ključ ispisuje proširenja " "koja treba učitavati. Svako proširenje koje želi biti učitano mora biti na " "spisku. Takođe možete da upravljate ovim spiskom koristeći načine D-" "magistrale „Uključi proširenje“ i „Isključi proširenje“ na „org.gnome.Shell“." #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "Nasilno onemogućavanje za sledeće JUIB-ove proširenja" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" "Proširenja Gnomove školjke imaju JUIB vrednost; ovaj ključ ispisuje proširenja " "koja treba onemogućiti, čak iako su učitani kao deo trenutnog režima. Možete " "menjati ovaj spisak metodama d-sabirnice pod nazivima EnableExtension i " "DisableExtension, na org.gnome.Shell. Ovaj ključ ima prednost u odnosu na " "podešavanje \"enabled-extensions\"." #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "Isključuje korisnička proširenja" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" "Isključuje sva proširenja koja je uključio korisnik bez delovanja na podešavanje " "„enabled-extension“." #: data/org.gnome.shell.gschema.xml.in:45 msgid "Allow extension installation" msgstr "Dozvoli instaliranje proširenja" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "Allow users to install extensions in their home folder. If disabled, the " "InstallRemoteExtension D-Bus method will fail, and extensions are only " "loaded from system directories on startup. It does not affect extensions " "that are already loaded, so a change only takes full effect on the next " "login." msgstr "" "Omogućava korisnicima da instaliraju proširenja u njihovu ličnu fasciklu. Ako je " "isključeno, InstallRemoteExtension D-Bas metoda neće uspeti i proširenja će " "biti učitana samo iz sistemske datoteke pri pokretanju. Ne utiče na proširenja " "koja su već učitana, tako da će promena biti primenjena nakon sledećeg " "prijavljivanja." #: data/org.gnome.shell.gschema.xml.in:56 msgid "Disables the validation of extension version compatibility" msgstr "Isključuje potvrđivanje saglasnosti izdanja proširenja" #: data/org.gnome.shell.gschema.xml.in:57 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "Gnomova školjka će učitati samo proširenja koja tvrde da podržavaju tekuće " "pokrenuto izdanje. Uključivanje ove opcije će isključiti ovu proveru i pokušati " "da učita proširenja bez obzira na izdanja koja tvrde da podržavaju." #: data/org.gnome.shell.gschema.xml.in:65 msgid "List of desktop file IDs for favorite applications" msgstr "Spisak IB datoteka radne površine sa omiljenim programima" #: data/org.gnome.shell.gschema.xml.in:66 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" "Programi koji odgovaraju ovim odrednicama se prikazuju unutar oblasti " "omiljenih programima." #: data/org.gnome.shell.gschema.xml.in:73 msgid "History for command (Alt-F2) dialog" msgstr "Istorijat prozorčeta (Alt-F2) naredbi" #. Translators: looking glass is a debugger and inspector tool, see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/docs/looking-glass.md #: data/org.gnome.shell.gschema.xml.in:78 msgid "History for the looking glass dialog" msgstr "Istorijat prozorčeta ogledala" #: data/org.gnome.shell.gschema.xml.in:82 msgid "Always show the “Log Out” action in the system menu" msgstr "Uvek prikazuje stavku izbornika „Odjavi me“ u sistemskom izborniku." #: data/org.gnome.shell.gschema.xml.in:83 msgid "" "This key overrides the automatic hiding of the “Log out” action in the " "system menu for logged-in situations where there is a single, local, non-" "system user and only a single available session type (e.g. GNOME on Wayland)." msgstr "" "Ovaj ključ prevazilazi samostalno skrivanje stavke izbornika „Odjavi me“ u " "slučaju jednog lokalnog korisnika, ne sistemskog korisnika i samo jedine " "dostupne vrste sesije (npr. Gnom na Vejlandu)." #: data/org.gnome.shell.gschema.xml.in:92 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "Da li će biti zapamćena lozinka za kačenje šifrovanih ili udaljenih sistema " "datoteka" #: data/org.gnome.shell.gschema.xml.in:93 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "Školjka će zatražiti lozinku kada se prikači šifrovani uređaj ili udaljeni " "sistem datoteka. Ako lozinka može biti sačuvana za daljnju upotrebu biće " "prisutno polje za izbor „Zapamti lozinku“. Ovaj ključ podešava osnovno stanje " "polja za izbor." #: data/org.gnome.shell.gschema.xml.in:102 msgid "The last selected non-default power profile" msgstr "Poslednje izabrani nepodrazumevani profil napajanja" #: data/org.gnome.shell.gschema.xml.in:103 msgid "" "Some systems support more than two power profiles. In order to still support " "toggling between two profiles, this key records the last selected non-" "default profile." msgstr "" "Neki sistemi podržavaju više od dva profila napajanja. Da bismo podržali " "promenu između dva profila, ovaj ključ čuva poslednje izabrani nepodrazumevani " "profil." #: data/org.gnome.shell.gschema.xml.in:111 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "Poslednje izdanje prozorčeta „Dobro došli u Gnom“ koje je prikazano" #: data/org.gnome.shell.gschema.xml.in:112 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can " "be used to effectively disable the dialog." msgstr "" "Ovaj ključ prikazuje izdanje prozorčeta „Dobro došli u Gnom“ koje je " "prikazano. Prazna niska predstavlja najstariju moguću verziju a veliki broj " "predstavlja izdanja koja još ne postoje. Ovaj veliki broj se može iskoristiti " "za efektivno onemogućavanje prozorčeta." #: data/org.gnome.shell.gschema.xml.in:145 msgid "Layout of the app picker" msgstr "Raspored birača programa" #: data/org.gnome.shell.gschema.xml.in:146 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" msgstr "" "Raspored birača programa. Svaka stavka u nizu je stranica. Stranice se " "čuvaju onako kako se pojavljuju u Gnomovoj školjki. Svaka stranica sadrži par " "“application id” → 'data'. Trenutno, sledeće vrednosti se čuvaju kao 'data': " "• “position”: položaj ikonice programa na stranici" #: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:172 msgid "Keybinding to shift between overview states" msgstr "Prečica na tastaturi za promenu između stanja pregleda" #: data/org.gnome.shell.gschema.xml.in:166 msgid "Keybinding to shift between session, window picker and app grid" msgstr "" "Prečica na tastaturi za promenu između sesije, birača prozora i mreže " "programa" #: data/org.gnome.shell.gschema.xml.in:173 msgid "Keybinding to shift between app grid, window picker and session" msgstr "" "Prečica na tastaturi za promenu između mreže programa, birača prozora i " "sesije" #: data/org.gnome.shell.gschema.xml.in:179 msgid "Keybinding to open the “Show Applications” view" msgstr "Prečica za otvaranje pregleda „Prikaži programe“" #: data/org.gnome.shell.gschema.xml.in:180 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "Prečica za otvaranje pregleda „Prikaži programe“ u pregledu aktivnosti." #: data/org.gnome.shell.gschema.xml.in:187 msgid "Keybinding to open the overview" msgstr "Prečica za otvaranje pregleda" #: data/org.gnome.shell.gschema.xml.in:188 msgid "Keybinding to open the Activities Overview." msgstr "Prečica za otvaranje pregleda aktivnosti." #: data/org.gnome.shell.gschema.xml.in:194 msgid "Keybinding to toggle the visibility of the notification list" msgstr "Prečica za okidanje vidljivosti spiska obaveštenja" #: data/org.gnome.shell.gschema.xml.in:195 msgid "Keybinding to toggle the visibility of the notification list." msgstr "Prečica za okidanje vidljivosti spiska obaveštenja." #: data/org.gnome.shell.gschema.xml.in:201 msgid "Keybinding to toggle the quick settings menu" msgstr "Prečica za promenu stanja prikaza menija brzih podešavanja" #: data/org.gnome.shell.gschema.xml.in:202 msgid "Keybinding to toggle the quick settings menu." msgstr "Prečica za promenu stanja prikaza menija brzih podešavanja." #: data/org.gnome.shell.gschema.xml.in:208 msgid "Keybinding to focus the active notification" msgstr "Prečica za postavljanje u žižu radnog obaveštenja" #: data/org.gnome.shell.gschema.xml.in:209 msgid "Keybinding to focus the active notification." msgstr "Prečica za postavljanje u žižu radnog obaveštenja." #: data/org.gnome.shell.gschema.xml.in:215 msgid "Switch to application 1" msgstr "Prebaci se na program 1" #: data/org.gnome.shell.gschema.xml.in:219 msgid "Switch to application 2" msgstr "Prebaci se na program 2" #: data/org.gnome.shell.gschema.xml.in:223 msgid "Switch to application 3" msgstr "Prebaci se na program 3" #: data/org.gnome.shell.gschema.xml.in:227 msgid "Switch to application 4" msgstr "Prebaci se na program 4" #: data/org.gnome.shell.gschema.xml.in:231 msgid "Switch to application 5" msgstr "Prebaci se na program 5" #: data/org.gnome.shell.gschema.xml.in:235 msgid "Switch to application 6" msgstr "Prebaci se na program 6" #: data/org.gnome.shell.gschema.xml.in:239 msgid "Switch to application 7" msgstr "Prebaci se na program 7" #: data/org.gnome.shell.gschema.xml.in:243 msgid "Switch to application 8" msgstr "Prebaci se na program 8" #: data/org.gnome.shell.gschema.xml.in:247 msgid "Switch to application 9" msgstr "Prebaci se na program 9" #: data/org.gnome.shell.gschema.xml.in:251 msgid "Open a new instance of application 1" msgstr "Otvori novi primerak programa 1" #: data/org.gnome.shell.gschema.xml.in:255 msgid "Open a new instance of application 2" msgstr "Otvori novi primerak programa 2" #: data/org.gnome.shell.gschema.xml.in:259 msgid "Open a new instance of application 3" msgstr "Otvori novi primerak programa 3" #: data/org.gnome.shell.gschema.xml.in:263 msgid "Open a new instance of application 4" msgstr "Otvori novi primerak programa 4" #: data/org.gnome.shell.gschema.xml.in:267 msgid "Open a new instance of application 5" msgstr "Otvori novi primerak programa 5" #: data/org.gnome.shell.gschema.xml.in:271 msgid "Open a new instance of application 6" msgstr "Otvori novi primerak programa 6" #: data/org.gnome.shell.gschema.xml.in:275 msgid "Open a new instance of application 7" msgstr "Otvori novi primerak programa 7" #: data/org.gnome.shell.gschema.xml.in:279 msgid "Open a new instance of application 8" msgstr "Otvori novi primerak programa 8" #: data/org.gnome.shell.gschema.xml.in:283 msgid "Open a new instance of application 9" msgstr "Otvori novi primerak programa 9" #: data/org.gnome.shell.gschema.xml.in:308 #: data/org.gnome.shell.gschema.xml.in:335 msgid "Limit switcher to current workspace." msgstr "Ograničava prebacivača na tekući radni prostor." #: data/org.gnome.shell.gschema.xml.in:309 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "Ako je izabrano, samo programi koji imaju prozore na tekućem radnom prostoru " "se prikazuju u prebacivaču. U suprotnom, svi programi su uključeni." #: data/org.gnome.shell.gschema.xml.in:326 msgid "The application icon mode." msgstr "Režim ikonice programa." #: data/org.gnome.shell.gschema.xml.in:327 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-" "only” (shows only the application icon) or “both”." msgstr "" "Podešava način prikazivanja prozora u prebacivaču. Ispravne mogućnosti su " "„thumbnail-only“ (prikazuje sličicu prozora), „app-icon-only“ (prikazuje " "samo ikonicu programa) ili „both“ (oba)." #: data/org.gnome.shell.gschema.xml.in:336 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "Ako je izabrano, samo prozori sa tekućeg radnog prostora se prikazuju u " "prebacivaču. U suprotnom, svi prozori su uključeni." #: data/org.gnome.shell.gschema.xml.in:346 msgid "Locations" msgstr "Lokacije" #: data/org.gnome.shell.gschema.xml.in:347 msgid "The locations to show in world clocks" msgstr "Mesta koja treba prikazivati u svetskim satovima" #: data/org.gnome.shell.gschema.xml.in:357 msgid "Automatic location" msgstr "Automatska lokacija" #: data/org.gnome.shell.gschema.xml.in:358 msgid "Whether to fetch the current location or not" msgstr "Da li treba dobaviti trenutnu lokaciju" #: data/org.gnome.shell.gschema.xml.in:365 msgid "Location" msgstr "Lokacija" #: data/org.gnome.shell.gschema.xml.in:366 msgid "The location for which to show a forecast" msgstr "Mesto za koje treba prikazati vremensku prognozu" #. Keep in sync with subprojects/extensions-app #: data/org.gnome.Shell.Extensions.desktop.in.in:5 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/data/ui/extensions-window.ui:57 msgid "Extensions" msgstr "Proširenja" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "Mrežna prijava" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:277 msgid "Something’s gone wrong" msgstr "Nešto je pošlo naopako" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" "Veoma nam je žao ali se dogodio problem, ne možemo prikazati podešavanja za " "ovo proširenje. Predlažemo vam da prijavite ovaj problem tvorcima proširenja." #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "Tehničke pojedinosti" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "Matična strana" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 msgid "Visit extension homepage" msgstr "Poseti matičnu stranu proširenj" #: js/gdm/authPrompt.js:151 js/gdm/loginDialog.js:466 #: js/ui/audioDeviceSelection.js:66 js/ui/components/networkAgent.js:114 #: js/ui/components/polkitAgent.js:146 js/ui/endSessionDialog.js:438 #: js/ui/extensionDownloader.js:278 js/ui/shellMountOperation.js:384 #: js/ui/shellMountOperation.js:394 msgid "Cancel" msgstr "Otkaži" #: js/gdm/authPrompt.js:317 js/ui/components/networkAgent.js:214 #: js/ui/components/networkAgent.js:234 js/ui/components/networkAgent.js:266 #: js/ui/components/networkAgent.js:299 js/ui/components/networkAgent.js:338 #: js/ui/components/networkAgent.js:351 js/ui/components/polkitAgent.js:288 #: js/ui/shellMountOperation.js:334 msgid "Password" msgstr "Lozinka" #: js/gdm/loginDialog.js:327 msgid "Choose Session" msgstr "Izaberi sesiju" #. Translators: is running for #: js/gdm/loginDialog.js:424 #, javascript-format msgid "" "Remote login is not possible because a remote session is already running for " "%s. To login remotely, you must log out from the remote session or force " "stop it." msgstr "" "Udaljena prijava nije moguća pošto se udaljena sesija već izvršava za %s. Za " "udaljenu prijavu, morate se odjaviti sa postojeće sesije ili je prisilno " "zaustaviti." #. Translators: is running for #: js/gdm/loginDialog.js:427 #, javascript-format msgid "" "Login is not possible because a remote session is already running for %s. To " "login, you must log out from the remote session or force stop it." msgstr "" "Prijava nije moguća pošto se udaljena sesija već izvršava za %s. Za prijavu, " "morate se odjaviti sa postojeće sesije ili je prisilno zaustaviti." #. Translators: is running for #: js/gdm/loginDialog.js:430 #, javascript-format msgid "" "Remote login is not possible because a local session is already running for " "%s. To login remotely, you must log out from the local session or force stop " "it." msgstr "" "Udaljena prijava nije moguća pošto se lokalna sesija već izvršava za %s. Za " "udaljenu prijavu, morate se odjaviti sa lokalne sesije ili je prisilno " "zaustaviti." #. Translators: is running for #: js/gdm/loginDialog.js:433 #, javascript-format msgid "" "Login is not possible because a session is already running for %s. To login, " "you must log out from the session or force stop it." msgstr "" "Prijava nije moguća pošto se sesija već izvršava za %s. Za prijavu, morate " "se odjaviti sa postojeće sesije ili je prisilno zaustaviti." #: js/gdm/loginDialog.js:442 msgid "Session Already Running" msgstr "Sesija se već izvršava" #: js/gdm/loginDialog.js:454 msgid "" "Force stopping will quit any running apps and processes, and could result in " "data loss." msgstr "" "Prisilno zaustavljanje će zaustaviti sve pokrenute programe i procese, i može " "izazvati gubitak podataka." #: js/gdm/loginDialog.js:474 msgid "Force Stop" msgstr "Primoraj izlaz" #: js/gdm/loginDialog.js:542 msgid "Not listed?" msgstr "Nije na spisku?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:1010 #, javascript-format msgid "(e.g., user or %s)" msgstr "(npr., korisnik ili %s)" #: js/gdm/loginDialog.js:1015 js/ui/components/networkAgent.js:258 #: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:327 msgid "Username" msgstr "Korisnik" #: js/gdm/loginDialog.js:1081 msgid "Login Attempt Timed Out" msgstr "Isteklo je vreme za pokušaj prijave" #: js/gdm/loginDialog.js:1082 msgid "Login took too long, please try again" msgstr "Prijava je predugo trajala, pokušajte ponovo" #: js/gdm/loginDialog.js:1427 msgid "Login Window" msgstr "Prozor za prijavljivanje" #: js/gdm/util.js:497 msgid "Authentication error" msgstr "Greška potvrđivanja identiteta" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:728 msgid "(or swipe finger across reader)" msgstr "(ili prevucite prst preko čitača)" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:733 msgid "(or place finger on reader)" msgstr "(ili postavite prst na čitač)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:91 msgctxt "search-result" msgid "Power Off" msgstr "Isključi" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:94 msgid "power off;poweroff;shutdown;halt;stop" msgstr "" "power off;shutdown;isključi;ugasi;gašenje;isključi;ugasi;gašenje;iskljuci;" "gasenje;halt;stop;halt;stop" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:99 msgctxt "search-result" msgid "Restart" msgstr "Ponovo pokreni" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:102 msgid "reboot;restart;" msgstr "reboot;restart;ribut;restart;ponovno pokretanje;restartovanje;" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:107 msgctxt "search-result" msgid "Lock Screen" msgstr "Zaključaj ekran" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:110 msgid "lock screen" msgstr "zaključaj ekran" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:115 msgctxt "search-result" msgid "Log Out" msgstr "Odjavi me" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:118 msgid "logout;log out;sign off" msgstr "" "izađi;odjavi se;odloguj se;izađi;odjavi se;odloguj se;izadji;logout;log out;" "sign off" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:123 msgctxt "search-result" msgid "Suspend" msgstr "Obustavi" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:126 msgid "suspend;sleep" msgstr "" "suspend;sleep;obustavi;spavaj;suspenduj;obustavi;spavaj;suspenduj;suspend;" "sleep" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:131 msgctxt "search-result" msgid "Switch User" msgstr "Promeni korisnika" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:134 msgid "switch user" msgstr "switch user;promeni korisnika;promeni korisnika;switch user" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:141 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "" "lock orientation;screen;rotation;zaključaj okretanje ekrana;zaključaj " "orijentaciju;zaključaj okretanje ekrana;zaključaj orijentaciju;zakljucaj " "okretanje ekrana;ekran;ekran;okretanje;okretanje;lock orientation;screen;" "rotation" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:146 msgctxt "search-result" msgid "Take a Screenshot" msgstr "Napravi snimak ekrana" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:149 msgid "screenshot;screencast;snip;capture;record" msgstr "" "screenshot;screencast;snip;capture;record;snimak ekrana;video ekrana;snip;" "snimak ekrana;video ekrana" #: js/misc/systemActions.js:249 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "Otključaj okretanje ekrana" #: js/misc/systemActions.js:250 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "Zaključaj okretanje ekrana" #: js/misc/util.js:139 msgid "Command not found" msgstr "Naredba nije nađena" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:179 msgid "Could not parse command:" msgstr "Ne mogu da obradim naredbu:" #: js/misc/util.js:187 #, javascript-format msgid "Execution of “%s” failed:" msgstr "Nije uspelo izvršavanje „%s“:" #: js/misc/dateUtils.js:69 msgid "Just now" msgstr "Upravo sada" #: js/misc/dateUtils.js:72 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "Pre %d minut" msgstr[1] "Pre %d minuta" msgstr[2] "Pre %d minuta" msgstr[3] "Pre jedan minut" #: js/misc/dateUtils.js:79 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "Pre %d sat" msgstr[1] "Pre %d sata" msgstr[2] "Pre %d sati" msgstr[3] "Pre jedan sat" #: js/misc/dateUtils.js:85 js/ui/dateMenu.js:185 msgid "Yesterday" msgstr "Juče" #: js/misc/dateUtils.js:88 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "Pre %d dan" msgstr[1] "Pre %d dana" msgstr[2] "Pre %d dana" msgstr[3] "Pre jedan dan" #: js/misc/dateUtils.js:95 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "Pre %d nedelju" msgstr[1] "Pre %d nedelje" msgstr[2] "Pre %d nedelja" msgstr[3] "Pre nedelju dana" #: js/misc/dateUtils.js:102 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "Pre %d mesec" msgstr[1] "Pre %d meseca" msgstr[2] "Pre %d meseci" msgstr[3] "Pre mesec dana" #: js/misc/dateUtils.js:108 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "Pre %d godinu" msgstr[1] "Pre %d godine" msgstr[2] "Pre %d godina" msgstr[3] "Pre godinu dana" #. Translators: Time in 24h format #: js/misc/dateUtils.js:155 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/dateUtils.js:161 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "Juče, %H:%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/dateUtils.js:167 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/dateUtils.js:173 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%-d. %B, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/dateUtils.js:179 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%-d. %B %Y., %H:%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/dateUtils.js:184 msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/dateUtils.js:190 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "Juče, %l:%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/dateUtils.js:196 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/dateUtils.js:202 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%-d. %B, %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/dateUtils.js:208 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%-d .%B %Y., %l∶%M %p" #: js/portalHelper/main.js:98 msgid "Your connection seems to be secure" msgstr "Izgleda da je vaša veza bezbedna" #: js/portalHelper/main.js:104 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "Vaša veza sa ovom prijavom vruće tačke nije bezbedna. Ljudi u blizini mogu " "videti lozinke ili druge podatke koje budete uneli na ovoj stranici." #: js/portalHelper/main.js:115 msgid "Hotspot Login" msgstr "Prijava na vruću tačku" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:45 js/ui/inhibitShortcutsDialog.js:92 msgid "Deny" msgstr "Zabrani" #: js/ui/accessDialog.js:46 js/ui/inhibitShortcutsDialog.js:101 msgid "Allow" msgstr "Dozvoli" #: js/ui/appDisplay.js:1775 msgid "Unnamed Folder" msgstr "Neimenovana fascikla" #: js/ui/appFavorites.js:166 #, javascript-format msgid "%s has been pinned to the dash." msgstr "„%s“ je dodat na dok." #: js/ui/appFavorites.js:199 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "„%s“ je otkačen sa doka." #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:51 msgid "Open Windows" msgstr "Otvori prozore" #: js/ui/appMenu.js:59 msgid "New Window" msgstr "Novi prozor" #: js/ui/appMenu.js:86 msgid "App Details" msgstr "Detalji programa" #: js/ui/appMenu.js:102 msgid "Quit" msgstr "Izađi" #: js/ui/appMenu.js:162 js/ui/dash.js:250 msgid "Unpin" msgstr "Otkači" #: js/ui/appMenu.js:163 msgid "Pin to Dash" msgstr "Zakači na dok" #: js/ui/appMenu.js:180 msgid "Launch using Integrated Graphics Card" msgstr "Pokreni sa ugrađenom grafičkom karticom" #: js/ui/appMenu.js:181 msgid "Launch using Discrete Graphics Card" msgstr "Pokreni sa namenskom grafičkom karticom" #: js/ui/audioDeviceSelection.js:46 msgid "Select Audio Device" msgstr "Izaberite zvučni uređaj" #: js/ui/audioDeviceSelection.js:61 js/ui/status/volume.js:83 msgid "Sound Settings" msgstr "Podešavanja zvuka" #: js/ui/audioDeviceSelection.js:74 msgid "Headphones" msgstr "Slušalice" #: js/ui/audioDeviceSelection.js:76 msgid "Headset" msgstr "Slušalice sa mikrofonom" #: js/ui/audioDeviceSelection.js:78 js/ui/status/volume.js:358 msgid "Microphone" msgstr "Mikrofon" #: js/ui/backgroundMenu.js:15 msgid "Change Background…" msgstr "Izmeni pozadinu…" #: js/ui/backgroundMenu.js:17 msgid "Display Settings" msgstr "Podešavanja prikaza" #: js/ui/backgroundMenu.js:18 msgid "Settings" msgstr "Podešavanja" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:39 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:65 msgctxt "grid sunday" msgid "S" msgstr "N" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:67 msgctxt "grid monday" msgid "M" msgstr "P" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:69 msgctxt "grid tuesday" msgid "T" msgstr "U" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:71 msgctxt "grid wednesday" msgid "W" msgstr "S" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:73 msgctxt "grid thursday" msgid "T" msgstr "Č" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:75 msgctxt "grid friday" msgid "F" msgstr "P" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:77 msgctxt "grid saturday" msgid "S" msgstr "S" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:428 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:438 msgid "%OB %Y" msgstr "%OB %Y" #: js/ui/calendar.js:500 msgid "Previous month" msgstr "Prethodni mesec" #: js/ui/calendar.js:518 msgid "Next month" msgstr "Sledeći mesec" #: js/ui/calendar.js:669 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:728 msgid "Week %V" msgstr "Sedmica %V" #: js/ui/calendar.js:920 msgid "No Notifications" msgstr "Bez obaveštenja" #: js/ui/calendar.js:976 msgid "Do Not Disturb" msgstr "Ne uznemiravaj" #: js/ui/calendar.js:997 msgid "Clear" msgstr "Očisti" # msgid_plural "%d new notifications" #: js/ui/calendar.js:1001 msgctxt "action" msgid "Clear all notifications" msgstr "Očisti sva obaveštenja" #. Translators: %s is an application name #: js/ui/closeDialog.js:44 #, javascript-format msgid "“%s” is not responding." msgstr "„%s“ ne odgovara." #: js/ui/closeDialog.js:45 msgid "" "You may choose to wait a short while for it to continue or force the app to " "quit entirely." msgstr "" "Možete izabrati da sačekate koji trenutak da nastavi ili da primorate " "program da se čitav zatvori." #: js/ui/closeDialog.js:73 msgid "Force Quit" msgstr "Primoraj izlaz" #: js/ui/closeDialog.js:78 msgid "Wait" msgstr "Sačekaj" #: js/ui/components/automountManager.js:84 msgid "External drive connected" msgstr "Spoljni uređaj je priključen" #: js/ui/components/automountManager.js:96 msgid "External drive disconnected" msgstr "Spoljni uređaj je isključen" #: js/ui/components/automountManager.js:207 msgid "Unable to unlock volume" msgstr "Ne mogu da otključam volumen" #: js/ui/components/automountManager.js:208 msgid "The installed udisks version does not support the PIM setting" msgstr "Instalirano izdanje udisks-a ne podržava LIČ (PIM) podešavanje" #: js/ui/components/autorunManager.js:200 #, javascript-format msgid "Open with %s" msgstr "Otvori programom %s" #: js/ui/components/networkAgent.js:96 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router." msgstr "Ili možete povezati pritiskom na dugme „WPS“, na vašem ruteru." #: js/ui/components/networkAgent.js:108 js/ui/status/bluetooth.js:246 #: js/ui/status/network.js:360 js/ui/status/network.js:444 msgid "Connect" msgstr "Poveži se" #: js/ui/components/networkAgent.js:223 msgid "Key" msgstr "Ključ" #: js/ui/components/networkAgent.js:274 js/ui/components/networkAgent.js:313 msgid "Private key password" msgstr "Lozinka privatnog ključa" #: js/ui/components/networkAgent.js:307 msgid "Identity" msgstr "Identitet" #: js/ui/components/networkAgent.js:333 msgid "Service" msgstr "Usluga" #: js/ui/components/networkAgent.js:371 js/ui/components/networkAgent.js:407 #: js/ui/components/networkAgent.js:750 js/ui/components/networkAgent.js:771 msgid "Authentication required" msgstr "Potrebno je potvrđivanje identiteta" #: js/ui/components/networkAgent.js:372 js/ui/components/networkAgent.js:751 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network " "“%s”." msgstr "" "Potrebne su lozinke ili ključevi šifrovanja za pristup bežičnoj mreži „%s“." #: js/ui/components/networkAgent.js:376 js/ui/components/networkAgent.js:755 msgid "Wired 802.1X authentication" msgstr "Potvrđivanje identiteta za žičanu 802.1X vezu" #: js/ui/components/networkAgent.js:379 msgid "Network name" msgstr "Naziv mreže" #: js/ui/components/networkAgent.js:387 js/ui/components/networkAgent.js:759 msgid "DSL authentication" msgstr "Potvrđivanje identiteta DSL-a" #: js/ui/components/networkAgent.js:394 js/ui/components/networkAgent.js:764 msgid "PIN code required" msgstr "Potreban je PIN kôd" #: js/ui/components/networkAgent.js:395 js/ui/components/networkAgent.js:765 msgid "PIN code is needed for the mobile broadband device" msgstr "Potreban je PIN kod za povezivanje mobilnog širokopojasnog uređaja" #: js/ui/components/networkAgent.js:397 msgid "PIN" msgstr "PIN" #: js/ui/components/networkAgent.js:408 js/ui/components/networkAgent.js:756 #: js/ui/components/networkAgent.js:760 js/ui/components/networkAgent.js:772 #: js/ui/components/networkAgent.js:776 #, javascript-format msgid "A password is required to connect to “%s”." msgstr "Potrebna je lozinka za povezivanje na „%s“." #: js/ui/components/networkAgent.js:775 msgid "VPN password" msgstr "VPN lozinka" #: js/ui/components/polkitAgent.js:46 msgid "Authentication Required" msgstr "Potrebna je prijava" #: js/ui/components/polkitAgent.js:86 msgid "Administrator" msgstr "Administrator" #: js/ui/components/polkitAgent.js:151 msgid "Authenticate" msgstr "Potvrdi identitet" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:265 js/ui/shellMountOperation.js:417 msgid "Sorry, that didn’t work. Please try again." msgstr "Pogrešili ste! Pokušajte ponovo." #: js/ui/ctrlAltTab.js:25 js/ui/overviewControls.js:418 msgid "Windows" msgstr "Prozori" #: js/ui/dash.js:206 js/ui/dash.js:252 msgid "Show Apps" msgstr "Prikaži programe" #. Translators: this is the name of the dock/favorites area on #. the bottom of the overview #: js/ui/dash.js:410 msgid "Dash" msgstr "Dok" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:101 msgid "%B %-d %Y" msgstr "%-d. %B %Y." #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:108 msgid "%A %B %e %Y" msgstr "%A, %e. %B %Y." #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:174 msgctxt "calendar heading" msgid "%B %-d" msgstr "%-d. %B" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:177 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%-d. %B %Y." #: js/ui/dateMenu.js:183 msgid "Today" msgstr "Danas" #: js/ui/dateMenu.js:187 msgid "Tomorrow" msgstr "Sutra" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:218 msgctxt "event list time" msgid "All Day" msgstr "Ceo dan" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:240 msgid "%m/%d" msgstr "%d.%m." #: js/ui/dateMenu.js:291 msgid "No Events" msgstr "Bez događaja" #: js/ui/dateMenu.js:413 msgid "Add world clocks…" msgstr "Svetski satovi…" #: js/ui/dateMenu.js:414 msgid "World Clocks" msgstr "Svetski satovi" #: js/ui/dateMenu.js:704 msgid "Loading…" msgstr "Učitavam…" #: js/ui/dateMenu.js:714 msgid "Go online for weather information" msgstr "Povežite se na mrežu za podatke o vremenu" #: js/ui/dateMenu.js:716 msgid "Weather information is currently unavailable" msgstr "Podaci o vremenskoj prognozi trenutno nisu dostupni" #: js/ui/dateMenu.js:726 msgid "Weather" msgstr "Vremenska prognoza" #: js/ui/dateMenu.js:728 msgid "Select weather location…" msgstr "Izaberite mesto vremenske prognoze…" #: js/ui/endSessionDialog.js:48 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "Odjavi korisnika „%s“" #: js/ui/endSessionDialog.js:49 msgctxt "title" msgid "Log Out" msgstr "Odjavi me" #: js/ui/endSessionDialog.js:52 #, javascript-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "%s će biti odjavljen za %d sekundu." msgstr[1] "%s će biti odjavljen za %d sekunde." msgstr[2] "%s će biti odjavljen za %d sekundi." msgstr[3] "%s će biti odjavljen za %d sekundu." #: js/ui/endSessionDialog.js:58 #, javascript-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "Bićete odjavljeni za %d sekundu." msgstr[1] "Bićete odjavljeni za %d sekunde." msgstr[2] "Bićete odjavljeni za %d sekundi." msgstr[3] "Bićete odjavljeni za %d sekundu." #: js/ui/endSessionDialog.js:65 msgctxt "button" msgid "Log Out" msgstr "Odjavi" #: js/ui/endSessionDialog.js:71 js/ui/status/system.js:176 msgctxt "title" msgid "Power Off" msgstr "Isključi" #: js/ui/endSessionDialog.js:72 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Instaliraj ažuriranja i isključi" #: js/ui/endSessionDialog.js:75 #, javascript-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "Računar će se isključiti za %d sekundu." msgstr[1] "Računar će se isključiti za %d sekunde." msgstr[2] "Računar će se isključiti za %d sekundi." msgstr[3] "Računar će se isključiti za %d sekundu." #: js/ui/endSessionDialog.js:79 js/ui/endSessionDialog.js:98 msgctxt "checkbox" msgid "Install pending software updates" msgstr "Instaliraj ažuriranja softvera na čekanju" #: js/ui/endSessionDialog.js:83 msgctxt "button" msgid "Power Off" msgstr "Isključi" #: js/ui/endSessionDialog.js:90 msgctxt "title" msgid "Restart" msgstr "Ponovo pokreni" #: js/ui/endSessionDialog.js:91 msgctxt "title" msgid "Install Updates & Restart" msgstr "Instaliraj ažuriranja i ponovo pokreni" #: js/ui/endSessionDialog.js:94 #, javascript-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "Sistem će se ponovo pokrenuti za %d sekundu." msgstr[1] "Sistem će se ponovo pokrenuti za %d sekunde." msgstr[2] "Sistem će se ponovo pokrenuti za %d sekundi." msgstr[3] "Sistem će se ponovo pokrenuti za %d sekundu." #: js/ui/endSessionDialog.js:102 msgctxt "button" msgid "Restart" msgstr "Ponovo pokreni" #: js/ui/endSessionDialog.js:110 msgctxt "title" msgid "Restart & Install Updates" msgstr "Ponovo pokreni i instaliraj ažuriranja" #: js/ui/endSessionDialog.js:113 #, javascript-format msgid "The system will automatically restart and install updates in %d second." msgid_plural "" "The system will automatically restart and install updates in %d seconds." msgstr[0] "" "Sistem će se sam ponovo pokrenuti i instalirati ažuriranja za %d sekundu." msgstr[1] "" "Sistem će se sam ponovo pokrenuti i instalirati ažuriranja za %d sekunde." msgstr[2] "" "Sistem će se sam ponovo pokrenuti i instalirati ažuriranja za %d sekundi." msgstr[3] "" "Sistem će se sam ponovo pokrenuti i instalirati ažuriranja za %d sekundu." # msgctxt "button" #: js/ui/endSessionDialog.js:120 js/ui/endSessionDialog.js:141 msgctxt "button" msgid "Restart & Install" msgstr "Ponovo pokreni i instaliraj" # msgctxt "button" #: js/ui/endSessionDialog.js:122 msgctxt "button" msgid "Install & Power Off" msgstr "Instaliraj i isključi" #: js/ui/endSessionDialog.js:123 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Isključi nakon instaliranja ažuriranja" #: js/ui/endSessionDialog.js:130 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "Ponovo pokreni i instaliraj nadogradnju" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:135 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "%s %s će bit instaliran/a nakon ponovnog pokretanja. Instalacija nadogradnje " "ponekad može da potraje: proverite da li ste napravili rezervu vaših važnih " "podataka i da li je računar priključen na mrežno napajanje." #: js/ui/endSessionDialog.js:284 msgid "Low battery power: please plug in before installing updates." msgstr "" "Baterija je skoro prazna, priključite mrežno napajanje pre instaliranja " "ažuriranja." #: js/ui/endSessionDialog.js:293 msgid "Some applications are busy or have unsaved work" msgstr "Neki programi su zauzeti ili imaju nesačuvani rad" #: js/ui/endSessionDialog.js:298 msgid "Other users are logged in" msgstr "Drugi korisnici su prijavljeni" #: js/ui/endSessionDialog.js:468 msgctxt "button" msgid "Boot Options" msgstr "Opcije podizanja" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:673 #, javascript-format msgid "%s (remote)" msgstr "%s (udaljeno)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:676 #, javascript-format msgid "%s (console)" msgstr "%s (ljuska)" #: js/ui/extensionDownloader.js:282 msgid "Install" msgstr "Instaliraj" #: js/ui/extensionDownloader.js:288 msgid "Install Extension" msgstr "Instaliraj proširenje" #: js/ui/extensionDownloader.js:289 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "Da preuzmem i da instaliram „%s“ sa „extensions.gnome.org“-a?" #: js/ui/extensionSystem.js:354 msgid "Extension Updates Available" msgstr "Dostupna su ažuriranja proširenja" #: js/ui/extensionSystem.js:355 msgid "Extension updates are ready to be installed." msgstr "Ažuriranja proširenja su dostupna za instaliranje." #: js/ui/inhibitShortcutsDialog.js:70 msgid "Allow inhibiting shortcuts" msgstr "Dozvoli sprečavanja prečica" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:73 #, javascript-format msgid "The app %s wants to inhibit shortcuts" msgstr "Program „%s“ želi da spreči prečice" #: js/ui/inhibitShortcutsDialog.js:74 msgid "An app wants to inhibit shortcuts" msgstr "Program želi da spreči prečice" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:81 #, javascript-format msgid "You can restore shortcuts by pressing %s." msgstr "Možete povratiti prečice pritiskom na „%s“." #: js/ui/kbdA11yDialog.js:34 msgid "Slow Keys Turned On" msgstr "Spori tasteri su uključeni" #: js/ui/kbdA11yDialog.js:35 msgid "Slow Keys Turned Off" msgstr "Spori tasteri su isključeni" #: js/ui/kbdA11yDialog.js:36 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "Upravo ste taster Shift držali pritisnutim 8 sekundi. To uključuje Spore " "tastere, što utiče na rad tastature." #: js/ui/kbdA11yDialog.js:42 msgid "Sticky Keys Turned On" msgstr "Lepljivi tasteri su uključeni" #: js/ui/kbdA11yDialog.js:43 msgid "Sticky Keys Turned Off" msgstr "Lepljivi tasteri su isključeni" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "Upravo ste pritisnuli taster Shift 5 puta zaredom. To je prečica za Lepljive " "tastere, što utiče na rad tastature." #: js/ui/kbdA11yDialog.js:47 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" "Upravo ste pritisnuli dva tastera istovremeno, ili ste pritisnuli taster " "Shift 5 puta zaredom. To uključuje Lepljive tastere, što utiče na rad " "tastature." #: js/ui/kbdA11yDialog.js:57 msgid "Leave On" msgstr "Ostavi uključeno" #: js/ui/kbdA11yDialog.js:57 msgid "Turn On" msgstr "Uključi" #: js/ui/kbdA11yDialog.js:67 js/ui/status/network.js:455 msgid "Turn Off" msgstr "Isključi" #: js/ui/kbdA11yDialog.js:67 msgid "Leave Off" msgstr "Ostavi isključeno" #: js/ui/keyboard.js:181 js/ui/status/keyboard.js:899 msgid "Keyboard Settings" msgstr "Podešavanja tastature" #: js/ui/lookingGlass.js:724 msgid "No extensions installed" msgstr "Nisu instalirana proširenja" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:785 #, javascript-format msgid "%s has not emitted any errors." msgstr "%s nije objavio nikakve greške." #: js/ui/lookingGlass.js:791 msgid "Hide Errors" msgstr "Sakrij greške" #: js/ui/lookingGlass.js:795 js/ui/lookingGlass.js:872 msgid "Show Errors" msgstr "Prikažite greške" #: js/ui/lookingGlass.js:804 msgid "Active" msgstr "Aktivna" #: js/ui/lookingGlass.js:807 msgid "Inactive" msgstr "Neaktivna" #: js/ui/lookingGlass.js:809 msgid "Error" msgstr "Greška" #: js/ui/lookingGlass.js:811 msgid "Out of date" msgstr "Izvan datuma" #: js/ui/lookingGlass.js:813 msgid "Downloading" msgstr "Preuzimam" #: js/ui/lookingGlass.js:815 msgid "Deactivating" msgstr "Isključivanje" #: js/ui/lookingGlass.js:817 msgid "Activating" msgstr "Uključivanje" #: js/ui/lookingGlass.js:850 msgid "View Source" msgstr "Prikaži kod" #: js/ui/lookingGlass.js:861 msgid "Web Page" msgstr "Veb stranica" #: js/ui/main.js:279 msgid "System was put in unsafe mode" msgstr "Sistem je postavljen u nebezbedan režim" #: js/ui/main.js:280 msgid "Apps now have unrestricted access" msgstr "Programi sada imaju neograničen pristup" #: js/ui/main.js:283 js/ui/overview.js:54 msgid "Undo" msgstr "Opozovi" #: js/ui/main.js:340 msgid "Logged in as a privileged user" msgstr "Prijavljen kao povlašćen korisnik" #: js/ui/main.js:341 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" "Pokretanje sesije pod povlašćenim korisničkim nalogom treba izbegavati iz " "bezbednosnih razloga. Ako je to moguće, prijavite se kao običan korisnik." #: js/ui/main.js:389 msgid "Screen Lock disabled" msgstr "Zaključavanje ekrana onemogućeno" #: js/ui/main.js:390 msgid "Screen Locking requires the GNOME display manager." msgstr "Potreban je Gnomov upravnik ekrana za mogućnost zaključavanja ekrana." # msgctxt "program" #. Translators: this is the string displayed in the header when a message #. source doesn't have a name #: js/ui/messageList.js:400 msgid "Unknown App" msgstr "Nepoznat program" #: js/ui/messageTray.js:328 js/ui/messageTray.js:330 msgid "Notification sound" msgstr "Zvuk obaveštenja" #: js/ui/mpris.js:198 msgid "Unknown artist" msgstr "Nepoznat izvođač" #: js/ui/mpris.js:208 msgid "Unknown title" msgstr "Nepoznat naslov" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:342 msgid "Type to search" msgstr "Upišite željeno" #: js/ui/overviewControls.js:406 msgid "Apps" msgstr "Programi" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:67 msgid "Overview" msgstr "Pregled" #: js/ui/padOsd.js:100 msgid "New shortcut…" msgstr "Nova prečica…" #: js/ui/padOsd.js:153 msgid "App defined" msgstr "Definisani program" #: js/ui/padOsd.js:154 msgid "Show on-screen help" msgstr "Prikaži pomoć na ekranu" #: js/ui/padOsd.js:155 msgid "Switch monitor" msgstr "Promeni monitor" #: js/ui/padOsd.js:156 msgid "Assign keystroke" msgstr "Dodeli taster" #: js/ui/padOsd.js:225 msgid "Done" msgstr "Gotovo" #: js/ui/padOsd.js:728 msgid "Edit…" msgstr "Uredi…" #: js/ui/padOsd.js:775 msgid "None" msgstr "Ništa" #: js/ui/padOsd.js:846 msgid "Press a button to configure" msgstr "Pritisnite dugme da podesite" #: js/ui/padOsd.js:847 msgid "Press Esc to exit" msgstr "Pritisnite „Esc“ da izađete" #: js/ui/padOsd.js:850 msgid "Press any key to exit" msgstr "Pritisnite neki taster da izađete" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:425 msgid "Activities" msgstr "Aktivnosti" #: js/ui/panel.js:506 msgctxt "System menu in the top bar" msgid "System" msgstr "Sistem" #: js/ui/panel.js:680 msgid "Top Bar" msgstr "Gornja traka" #: js/ui/quickSettings.js:187 msgid "Open menu" msgstr "Otvori meni" #: js/ui/runDialog.js:63 msgid "Run a Command" msgstr "Pokreni naredbu" #: js/ui/runDialog.js:78 msgid "Press ESC to close" msgstr "Pritisni Esc za izlazak" #: js/ui/runDialog.js:243 msgid "Restart is not available on Wayland" msgstr "Ponovno pokretanje nije dostupno na Vejlandu" #: js/ui/runDialog.js:248 msgid "Restarting…" msgstr "Ponovno pokrećem…" #: js/ui/screenShield.js:235 msgid "GNOME needs to lock the screen" msgstr "Gnom mora da zaključa ekran" #: js/ui/screenShield.js:276 js/ui/screenShield.js:669 msgid "Unable to lock" msgstr "Ne mogu da zaključam" #: js/ui/screenShield.js:277 js/ui/screenShield.js:670 msgid "Lock was blocked by an app" msgstr "Program je blokirao zaključavanje" #: js/ui/screenshot.js:1254 msgid "Selection" msgstr "Izbor" #: js/ui/screenshot.js:1264 msgid "Area Selection" msgstr "Izbor oblasti" #: js/ui/screenshot.js:1269 msgid "Screen" msgstr "Ekran" #: js/ui/screenshot.js:1279 msgid "Screen Selection" msgstr "Izbor ekrana" #: js/ui/screenshot.js:1284 msgid "Window" msgstr "Prozor" #: js/ui/screenshot.js:1294 msgid "Window Selection" msgstr "Izbor prozora" #. Translators: entry in the window right click menu. #: js/ui/screenshot.js:1319 js/ui/status/system.js:113 js/ui/windowMenu.js:30 msgid "Take Screenshot" msgstr "Napravi snimak ekrana" #: js/ui/screenshot.js:1335 msgid "Record Screen" msgstr "Snimi ekran" #. Translators: since this string refers to an action, #. it needs to be phrased as a verb. #: js/ui/screenshot.js:1352 msgid "Capture" msgstr "Usnimi" #: js/ui/screenshot.js:1374 msgid "Show Pointer" msgstr "Pokaži pokazivač" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1998 msgid "Screencasts" msgstr "Video snimci" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast from 07-17-2013 10:00:46 PM" #: js/ui/screenshot.js:2003 #, no-c-format msgid "Screencast from %d %t" msgstr "Video snimak napravljen dana %d %t.webm" #. Translators: notification title. #: js/ui/screenshot.js:2049 msgid "Screencast recorded" msgstr "Video snimak napravljen" #. Translators: notification title. #: js/ui/screenshot.js:2062 msgid "Screencast failed to start" msgstr "Video snimanje neuspelo" #. Translators: notification title. #: js/ui/screenshot.js:2068 msgid "Screencast ended: Out of disk space" msgstr "Snimanje ekrana je prekinuto: Nema slobodnog prostora na disku" #. We can encourage user to try again on service crashes since the #. recorder will auto-blocklist the pipeline that crashed. #. Translators: notification title. #: js/ui/screenshot.js:2074 msgid "Screencast ended unexpectedly, please try again" msgstr "Snimanje ekrana je prekinuto neočekivano, molim Vas pokušajte ponovo" #. Translators: notification title. #: js/ui/screenshot.js:2077 msgid "Screencast ended unexpectedly" msgstr "Snimanje ekrana je prekinuto neočekivano" #. Translators: notification source name. #: js/ui/screenshot.js:2087 js/ui/screenshot.js:2329 msgid "Screenshot" msgstr "Snimak ekrana" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:2094 msgid "Click here to view the video." msgstr "Kliknite ovde za pregled videa." #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:2102 js/ui/screenshot.js:2345 msgid "Show in Files" msgstr "Prikaži u Datotekama" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2289 #, javascript-format msgid "Screenshot from %s" msgstr "Snimak ekrana napravljen dana %s" #. Translators: notification title. #: js/ui/screenshot.js:2335 msgid "Screenshot captured" msgstr "Snimak ekrana napravljen" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2337 msgid "You can paste the image from the clipboard." msgstr "Možete ubaciti sliku iz ostave." #: js/ui/screenshot.js:2393 js/ui/screenshot.js:2557 msgid "Screenshot taken" msgstr "Napravljen je snimak ekrana" #: js/ui/search.js:831 msgid "Searching…" msgstr "Tražim…" #: js/ui/search.js:833 msgid "No results." msgstr "Nema odgovarajućih rezultata." #: js/ui/search.js:964 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "Još %d" msgstr[1] "Još %d" msgstr[2] "Još %d" msgstr[3] "Još jedan" #: js/ui/searchController.js:89 #: subprojects/extensions-app/data/ui/extensions-window.ui:73 msgid "Search" msgstr "Traži" #: js/ui/shellEntry.js:23 msgid "Copy" msgstr "Umnoži" #: js/ui/shellEntry.js:28 msgid "Paste" msgstr "Ubaci" #: js/ui/shellEntry.js:80 msgid "Show Text" msgstr "Prikaži tekst" #: js/ui/shellEntry.js:82 msgid "Hide Text" msgstr "Sakrij tekst" #: js/ui/shellEntry.js:176 msgid "Caps lock is on." msgstr "Taster za velika slova je pritisnut." #: js/ui/shellMountOperation.js:288 msgid "Hidden Volume" msgstr "Skriveni volumen" #: js/ui/shellMountOperation.js:291 msgid "Windows System Volume" msgstr "Vindous sistemski volumen" #: js/ui/shellMountOperation.js:294 msgid "Uses Keyfiles" msgstr "Koristi ključ-datoteke" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:302 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead." msgstr "" "Da biste otključali volumen koji koristi ključ-datoteke, koristite alatku " "%s." #: js/ui/shellMountOperation.js:306 msgid "" "You need an external utility like Disks to unlock a volume that uses " "keyfiles." msgstr "" "Potreban vam je spoljni alat kao što su to Diskovi za otključavanje " "volumena koji koriste ključ-datoteke." #: js/ui/shellMountOperation.js:314 msgid "PIM Number" msgstr "LIČ (PIM) broj" #: js/ui/shellMountOperation.js:373 msgid "Remember Password" msgstr "Zapamti lozinku" #: js/ui/shellMountOperation.js:388 msgid "Unlock" msgstr "Otključaj" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:402 #, javascript-format msgid "Open %s" msgstr "Otvori programom %s" #: js/ui/shellMountOperation.js:438 msgid "The PIM must be a number or empty." msgstr "LIČ (PIM) mora biti broj ili prazno." #: js/ui/status/accessibility.js:36 msgid "Accessibility" msgstr "Pristupačnost" #: js/ui/status/accessibility.js:46 msgid "High Contrast" msgstr "Veliki kontrast" #: js/ui/status/accessibility.js:49 msgid "Zoom" msgstr "Zumiraj" #: js/ui/status/accessibility.js:56 msgid "Screen Reader" msgstr "Čitač ekrana" #: js/ui/status/accessibility.js:60 msgid "Screen Keyboard" msgstr "Tastatura na ekranu" #: js/ui/status/accessibility.js:64 msgid "Visual Alerts" msgstr "Vizuelna upozorenja" #: js/ui/status/accessibility.js:68 msgid "Sticky Keys" msgstr "Lepljivi tasteri" #: js/ui/status/accessibility.js:72 msgid "Slow Keys" msgstr "Spori tasteri" #: js/ui/status/accessibility.js:76 msgid "Bounce Keys" msgstr "Odskočni tasteri" #: js/ui/status/accessibility.js:80 msgid "Mouse Keys" msgstr "Tasteri miša" #: js/ui/status/accessibility.js:85 msgid "Accessibility Settings" msgstr "Podešavanja pristupačnosti" #: js/ui/status/accessibility.js:142 msgid "Large Text" msgstr "Veliki tekst" #: js/ui/status/autoRotate.js:14 msgid "Auto Rotate" msgstr "Samostalno rotiraj" #: js/ui/status/backgroundApps.js:156 msgctxt "title" msgid "Background Apps" msgstr "Pozadinski programi" #: js/ui/status/backgroundApps.js:171 msgid "Apps known to be running without a window" msgstr "Programi bez prozora, koji rade u pozadini" #: js/ui/status/backgroundApps.js:182 msgid "App Settings" msgstr "Podešavanja programa" #: js/ui/status/backgroundApps.js:239 msgid "No Background Apps" msgstr "Nema pozadinskih programa" #: js/ui/status/backgroundApps.js:241 #, javascript-format msgid "%d Background App" msgid_plural "%d Background Apps" msgstr[0] "%d pozadinskih programa" msgstr[1] "%d pozadinska programa" msgstr[2] "%d pozadinskih programa" msgstr[3] "Jedan pozadinski program" #: js/ui/status/backlight.js:40 msgid "Keyboard Brightness" msgstr "Osvetljenost tastature" #: js/ui/status/backlight.js:80 msgid "Off" msgstr "Isklj." #: js/ui/status/backlight.js:81 msgid "Low" msgstr "Nizak" #: js/ui/status/backlight.js:82 msgid "High" msgstr "Visok" #: js/ui/status/backlight.js:148 js/ui/status/keyboard.js:881 msgid "Keyboard" msgstr "Tastatura" #: js/ui/status/bluetooth.js:246 js/ui/status/network.js:360 msgid "Disconnect" msgstr "Otkači" #: js/ui/status/bluetooth.js:263 js/ui/status/bluetooth.js:265 msgid "Bluetooth" msgstr "Blutut" #: js/ui/status/bluetooth.js:288 js/ui/status/network.js:1900 msgid "Bluetooth Settings" msgstr "Podešavanja Blututa" #: js/ui/status/bluetooth.js:335 msgid "No available or connected devices" msgstr "Nema dostupnih ili priključenih uređaja" #: js/ui/status/bluetooth.js:336 msgid "Turn on Bluetooth to connect to devices" msgstr "Uključite blutut da biste se povezali na uređaje" #. Translators: This is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:390 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d povezan" msgstr[1] "%d povezana" msgstr[2] "%d povezano" msgstr[3] "%d povezan" #: js/ui/status/brightness.js:34 msgid "Brightness" msgstr "Osvetljenost" #: js/ui/status/darkMode.js:12 msgid "Dark Style" msgstr "Tamni stil" #: js/ui/status/dwellClick.js:15 msgid "Single Click" msgstr "Jedan klik" #: js/ui/status/dwellClick.js:20 msgid "Double Click" msgstr "Dvostruki klik" #: js/ui/status/dwellClick.js:25 msgid "Drag" msgstr "Povlačenje" #: js/ui/status/dwellClick.js:30 msgid "Secondary Click" msgstr "Sekundarni klik" #: js/ui/status/dwellClick.js:39 msgid "Dwell Click" msgstr "Duži klik" #: js/ui/status/keyboard.js:898 msgid "Show Keyboard Layout" msgstr "Pokaži raspored tastature" #: js/ui/status/location.js:339 msgid "Allow location access" msgstr "Dozvoli pristup mestu" #. Translators: %s is an application name #: js/ui/status/location.js:341 #, javascript-format msgid "The app %s wants to access your location" msgstr "Program %s želi da pristupi vašem mestu" #: js/ui/status/location.js:351 msgid "Location access can be changed at any time from the privacy settings." msgstr "" "Pristup mestu možete da izmenite u bilo koje vreme u podešavanjima " "privatnosti." #: js/ui/status/location.js:359 msgid "Deny Access" msgstr "Zabrani pristup" #: js/ui/status/location.js:364 msgid "Grant Access" msgstr "Dozvoli pristup" #: js/ui/status/network.js:62 msgid "" msgstr "" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:354 #, javascript-format msgid "Disconnect %s" msgstr "Otkači %s" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:356 #, javascript-format msgid "Connect to %s" msgstr "Poveži %s" #: js/ui/status/network.js:1050 msgid "Secure" msgstr "Bezbedno" #: js/ui/status/network.js:1050 msgid "Not secure" msgstr "Nije bezbedno" #: js/ui/status/network.js:1051 #, javascript-format msgid "Signal strength %s%%" msgstr "Jačina signala %s%%" #. translators: The first placeholder is the network name, the second and indication whether it is secure, and the last the signal strength indication #: js/ui/status/network.js:1053 #, javascript-format msgid "%s, %s, %s" msgstr "%s, %s, %s" #. Translators: %s is a network identifier #: js/ui/status/network.js:1155 #, javascript-format msgid "%s Hotspot" msgstr "%s hotspot" #: js/ui/status/network.js:1426 #, javascript-format msgid "%d connected" msgid_plural "%d connected" msgstr[0] "%d povezan" msgstr[1] "%d povezana" msgstr[2] "%d povezanih" msgstr[3] "%d povezan" #: js/ui/status/network.js:1524 js/ui/status/network.js:1540 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1525 msgid "VPN Settings" msgstr "VPN podešavanja" #: js/ui/status/network.js:1785 msgid "Wi–Fi" msgstr "Bežična" #: js/ui/status/network.js:1787 msgid "All Networks" msgstr "Sve mreže" #: js/ui/status/network.js:1884 msgid "Wired Connections" msgstr "Žičane veze" #: js/ui/status/network.js:1885 msgid "Wired Settings" msgstr "Podešavanja žičane veze" #: js/ui/status/network.js:1899 msgid "Bluetooth Tethers" msgstr "Doseg Blututa" #. Translators: "Tether" from "Bluetooth Tether" #: js/ui/status/network.js:1906 msgid "Tether" msgstr "Teterovanje" #: js/ui/status/network.js:1919 msgid "Mobile Connections" msgstr "Mobilne veze" #: js/ui/status/network.js:1921 msgid "Mobile Broadband Settings" msgstr "Podešavanja mobilne širokopojasne veze" #. Translators: "Mobile" from "Mobile Broadband" #: js/ui/status/network.js:1930 msgid "Mobile" msgstr "Mobilna" #: js/ui/status/network.js:2035 msgid "Connection failed" msgstr "Povezivanje nije uspelo" #: js/ui/status/network.js:2036 msgid "Activation of network connection failed" msgstr "Aktiviranje mrežne veze nije uspelo" #: js/ui/status/nightLight.js:21 msgid "Night Light" msgstr "Noćno svetlo" #: js/ui/status/powerProfiles.js:21 msgctxt "Power profile" msgid "Performance" msgstr "Najbrže" #: js/ui/status/powerProfiles.js:26 msgctxt "Power profile" msgid "Balanced" msgstr "Uravnoteženo" #: js/ui/status/powerProfiles.js:31 msgctxt "Power profile" msgid "Power Saver" msgstr "Čuvanje baterije" #: js/ui/status/powerProfiles.js:41 js/ui/status/powerProfiles.js:71 msgid "Power Mode" msgstr "Režim napajanja" #: js/ui/status/powerProfiles.js:73 msgid "Power Settings" msgstr "Podešavanja napajanja" #: js/ui/status/remoteAccess.js:76 msgid "Stop Screencast" msgstr "Zaustavi snimanje" #: js/ui/status/remoteAccess.js:146 msgid "Stop Screen Sharing" msgstr "Zaustavi deljenje ekrana" #: js/ui/status/rfkill.js:101 msgid "Airplane Mode" msgstr "Režim u avionu" #: js/ui/status/system.js:170 msgid "Power Off Menu" msgstr "Meni gašenja" #: js/ui/status/system.js:178 msgid "Suspend" msgstr "Obustavi" #: js/ui/status/system.js:183 msgid "Restart…" msgstr "Ponovo pokreni…" #: js/ui/status/system.js:188 msgid "Power Off…" msgstr "Isključi…" #: js/ui/status/system.js:195 #: subprojects/extensions-app/data/ui/extensions-window.ui:124 msgid "Log Out…" msgstr "Odjava…" #: js/ui/status/system.js:200 msgid "Switch User…" msgstr "Promeni korisnika…" #: js/ui/status/system.js:244 msgctxt "action" msgid "Lock Screen" msgstr "Zaključaj ekran" #: js/ui/status/thunderbolt.js:310 msgid "Unknown Thunderbolt device" msgstr "Nepoznat Tanderbolt uređaj" #: js/ui/status/thunderbolt.js:311 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" "Novi uređaj je uočen dok niste bili tu. Ponovo povežite uređaj da biste " "počeli da ga koristite." #: js/ui/status/thunderbolt.js:314 msgid "Unauthorized Thunderbolt device" msgstr "Neovlašćeni Tanderbolt uređaj" #: js/ui/status/thunderbolt.js:315 msgid "" "New device has been detected and needs to be authorized by an administrator." msgstr "" "Uočen je novi uređaj i potrebno je da administrator ovlasti njegovu upotrebu." #: js/ui/status/thunderbolt.js:321 msgid "Thunderbolt authorization error" msgstr "Greška u ovlašćivanju Tanderbolta" #: js/ui/status/thunderbolt.js:322 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "Ne mogu da ovlastim Tanderbolt uređaj: %s" #: js/ui/status/volume.js:220 msgid "Volume changed" msgstr "Promena jačine zvuka" #: js/ui/status/volume.js:233 msgid "Unmute" msgstr "Uključi ton" #: js/ui/status/volume.js:233 msgid "Mute" msgstr "Utišaj" #: js/ui/status/volume.js:288 msgid "Volume" msgstr "Jačina zvuka" #: js/ui/status/volume.js:304 msgid "Sound Output" msgstr "Zvučni izlaz" #: js/ui/status/volume.js:376 msgid "Sound Input" msgstr "Zvučni ulaz" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:22 msgid "Mirror" msgstr "Preslikaj" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:31 msgid "Join Displays" msgstr "Spoji ekrane" #. Translators: this is for using only external displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:41 msgid "External Only" msgstr "Samo spoljni" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:49 msgid "Built-in Only" msgstr "Samo ugrađeni" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:374 msgid "%A %B %-d" msgstr "%A, %-d. %B" #: js/ui/unlockDialog.js:380 msgid "Swipe up to unlock" msgstr "Prevuci za otključavanje" #: js/ui/unlockDialog.js:381 msgid "Click or press a key to unlock" msgstr "Klikni ili pritisni taster za otključavanje" #: js/ui/unlockDialog.js:564 msgid "Unlock Window" msgstr "Otključaj prozor" #: js/ui/unlockDialog.js:573 msgid "Log in as another user" msgstr "Prijavite se kao drugi korisnik" #: js/ui/welcomeDialog.js:49 #, javascript-format msgid "GNOME %s" msgstr "Gnom %s" #: js/ui/welcomeDialog.js:53 #, javascript-format msgid "Welcome to %s" msgstr "Dobro došli u %s" #: js/ui/welcomeDialog.js:54 msgid "If you want to learn your way around, check out the tour." msgstr "Ako želite da saznate više o upotrebi, pogledajte obilazak." #: js/ui/welcomeDialog.js:63 msgid "Skip" msgstr "Preskoči" #: js/ui/welcomeDialog.js:68 msgid "Take Tour" msgstr "Započni obilazak" #: js/ui/windowAttentionHandler.js:20 #, javascript-format msgid "“%s” is ready" msgstr "„%s“ je spreman" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:69 msgid "Keep these display settings?" msgstr "Zadržati podešavanja ekrana?" #: js/ui/windowManager.js:79 msgid "Revert Settings" msgstr "Vrati podešavanja" #: js/ui/windowManager.js:84 msgid "Keep Changes" msgstr "Zadrži izmene" #: js/ui/windowManager.js:104 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "Izmene podešavanja će biti vraćene za %d sekundu" msgstr[1] "Izmene podešavanja će biti vraćene za %d sekunde" msgstr[2] "Izmene podešavanja će biti vraćene za %d sekundi" msgstr[3] "Izmene podešavanja će biti vraćene za %d sekundu" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:496 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:42 msgid "Hide" msgstr "Sakrij" #: js/ui/windowMenu.js:49 msgid "Restore" msgstr "Povrati" #: js/ui/windowMenu.js:53 msgid "Maximize" msgstr "Uvećaj" #: js/ui/windowMenu.js:60 msgid "Move" msgstr "Premesti" #: js/ui/windowMenu.js:80 msgid "Resize" msgstr "Promeni veličinu" #: js/ui/windowMenu.js:101 msgid "Move Titlebar Onscreen" msgstr "Premesti traku naslova na ekran" #: js/ui/windowMenu.js:106 msgid "Always on Top" msgstr "Drži iznad ostalih" #: js/ui/windowMenu.js:125 msgid "Always on Visible Workspace" msgstr "Prikaži na svim radnim prostorima" #: js/ui/windowMenu.js:139 msgid "Move to Workspace Left" msgstr "Premesti na levi radni prostor" #: js/ui/windowMenu.js:145 msgid "Move to Workspace Right" msgstr "Premesti na desni radni prostor" #: js/ui/windowMenu.js:151 msgid "Move to Workspace Up" msgstr "Premesti na radni prostor gore" #: js/ui/windowMenu.js:157 msgid "Move to Workspace Down" msgstr "Premesti na radni prostor dole" #: js/ui/windowMenu.js:175 msgid "Move to Monitor Up" msgstr "Premesti na gornji radni prostor" #: js/ui/windowMenu.js:184 msgid "Move to Monitor Down" msgstr "Premesti na donji radni prostor" #: js/ui/windowMenu.js:193 msgid "Move to Monitor Left" msgstr "Premesti ekran ulevo" #: js/ui/windowMenu.js:202 msgid "Move to Monitor Right" msgstr "Premesti ekran udesno" #: js/ui/windowMenu.js:210 msgid "Close" msgstr "Zatvori" #: src/main.c:529 subprojects/extensions-tool/src/main.c:336 msgid "Print version" msgstr "Ispisuje izdanje" #: src/main.c:535 msgid "Mode used by GDM for login screen" msgstr "Koji režim koristi GDM za ekran prijavljivanja" #: src/main.c:541 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "Koristi naročit režim, npr. „gdm“ za ekran prijavljivanja" #: src/main.c:547 msgid "List possible modes" msgstr "Ispisuje moguće režime" #: src/main.c:553 msgid "Force animations to be enabled" msgstr "Nasilno omogući animacije" #: src/shell-app.c:253 msgctxt "program" msgid "Unknown" msgstr "Nepoznat" #: src/shell-app.c:504 #, c-format msgid "Failed to launch “%s”" msgstr "Nisam uspeo da pokrenem „%s“" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match." msgstr "Lozinke se ne podudaraju." #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "Lozinka ne može biti prazna" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "Korisnik je odbacio prozorče za potvrđivanje identiteta" #: src/st/st-icon-theme.c:1865 #, c-format msgid "Icon '%s' not present in theme %s" msgstr "Ikonica „%s“ nije prisutna u temi %s" #: src/st/st-icon-theme.c:3454 src/st/st-icon-theme.c:3757 msgid "Failed to load icon" msgstr "Ne mogu da učitam ikonicu" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 msgid "Manage your GNOME Extensions" msgstr "Podesite proširenja Gnoma" #. developer_name tag deprecated with Appstream 1.0 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:19 msgid "The GNOME Project" msgstr "Gnom projekat" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:51 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" "Gnomova proširenja rukovode ažuriranjem proširenja, podešavanjem postavki " "proširenja i uklanjanjem ili onemogućavanjem proširenja." #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:70 msgid "Main Window" msgstr "Glavni prozor" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:74 msgid "Available Updates" msgstr "Dostupna ažuriranja" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:78 msgid "Search View" msgstr "Pregled pretrage" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "Podesite proširenja Gnomove školjke" #: subprojects/extensions-app/js/extensionManager.js:237 #, javascript-format msgid "" "The installed version of this extension (%s) is incompatible with the " "current version of GNOME (%s). The extension has been disabled." msgstr "" "Instalirano izdanje proširenja (%s) nije saglasno sa trenutnim izdanjem Gnoma " "(%s). Proširenje je isključeno." #: subprojects/extensions-app/js/extensionManager.js:238 #, javascript-format msgid "" "The installed version of this extension is incompatible with the current " "version of GNOME (%s). The extension has been disabled." msgstr "" "Instalirano izdanje proširenja ne podudara se sa trenutnim izdanjem Gnoma (%s). " "Proširenje je isključeno." #: subprojects/extensions-app/js/extensionManager.js:242 msgid "" "An error has occurred in this extension. This could cause issues elsewhere " "in the system. It is recommended to turn the extension off until the error " "is resolved." msgstr "" "Došlo je do greške u proširenju. Ovo može prouzrokovati probleme u ostatku " "sistema. Preporučujemo isključivanje proširenja dok greška ne bude rešena." #. translators: Details for an extension error #: subprojects/extensions-app/js/extensionManager.js:248 msgid "Error details:" msgstr "Detalji greške:" #: subprojects/extensions-app/js/extensionRow.js:82 #, javascript-format msgid "Version %s" msgstr "Izdanje %s" #: subprojects/extensions-app/js/extensionsWindow.js:113 #, javascript-format msgid "Remove “%s”?" msgstr "Ukloniti „%s“?" #: subprojects/extensions-app/js/extensionsWindow.js:114 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "" "Ukoliko uklonite proširenje, moraćete ga ponovo preuzeti da biste ga ponovo " "omogućili" #: subprojects/extensions-app/js/extensionsWindow.js:117 msgid "_Cancel" msgstr "_Otkaži" #: subprojects/extensions-app/js/extensionsWindow.js:118 msgid "_Remove" msgstr "_Ukloni" #: subprojects/extensions-app/js/extensionsWindow.js:158 msgid "translator-credits" msgstr "" "Miroslav Nikolić \n" "Miloš Popović \n" "Borisav Živanović \n" "Marko M. Kostić \n" "https://gnom.srb — prevod Gnoma na srpski jezik." #: subprojects/extensions-app/js/extensionsWindow.js:203 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "%d proširenje biće ažurirano tokom sledećeg prijavljivanja." msgstr[1] "%d proširenja biće ažurirana tokom sledećeg prijavljivanja." msgstr[2] "%d proširenja biće ažurirana tokom sledećeg prijavljivanja." msgstr[3] "Jedno proširenje biće ažurirano tokom sledećeg prijavljivanja." #: subprojects/extensions-app/data/ui/extension-row.ui:21 msgid "Error Details" msgstr "Detalji greške" #: subprojects/extensions-app/data/ui/extension-row.ui:61 msgid "Updates Details" msgstr "Detalji ažuriranja" # msgid_plural "%d extensions will be updated on next login." #: subprojects/extensions-app/data/ui/extension-row.ui:71 msgid "" "A new version of this extension is ready and will be loaded on next login." msgstr "" "Novo izdanje ovog proširenja je spremno i biće učitano na sledećem prijvaljivanju." #: subprojects/extensions-app/data/ui/extension-row.ui:107 msgid "Extension Details" msgstr "Prikaži pojedinosti proširenja" #: subprojects/extensions-app/data/ui/extension-row.ui:193 msgid "_Website" msgstr "_Veb stranica" #: subprojects/extensions-app/data/ui/extension-row.ui:220 msgid "_Settings" msgstr "_Podešavanja" #: subprojects/extensions-app/data/ui/extension-row.ui:247 msgid "_Remove…" msgstr "_Ukloni…" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Keyboard Shortcuts" msgstr "Prečice tastature" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "O Proširenjima" #: subprojects/extensions-app/data/ui/extensions-window.ui:64 msgid "Main Menu" msgstr "Glavni meni" #: subprojects/extensions-app/data/ui/extensions-window.ui:106 msgid "Search extensions" msgstr "Pretraži proširenja" #: subprojects/extensions-app/data/ui/extensions-window.ui:134 msgid "_Extensions" msgstr "P_roširenja" #: subprojects/extensions-app/data/ui/extensions-window.ui:143 msgid "More Information" msgstr "Više informacija" #: subprojects/extensions-app/data/ui/extensions-window.ui:153 msgid "" "Extensions can cause performance and stability issues. It is recommended to " "disable all extensions if you experience problems with your system." msgstr "" "Proširenja mogu uticati na delotvornost i stabilnost. Onemogućite proširenja " "ukoliko imate problema sa vašim sistemom." #: subprojects/extensions-app/data/ui/extensions-window.ui:180 msgid "User Extensions" msgstr "Korisnikova proširenja" #: subprojects/extensions-app/data/ui/extensions-window.ui:200 msgid "System Extensions" msgstr "Sistemska proširenja" #: subprojects/extensions-app/data/ui/extensions-window.ui:235 msgid "Search Results" msgstr "Rezultati pretrage" #: subprojects/extensions-app/data/ui/extensions-window.ui:254 msgid "No Results Found" msgstr "Nema rezultata" #: subprojects/extensions-app/data/ui/extensions-window.ui:255 msgid "Try a different search." msgstr "Pokušajte drugačiju pretragu" #: subprojects/extensions-app/data/ui/extensions-window.ui:266 msgid "No Installed Extensions" msgstr "Neinstalirana proširenja" #: subprojects/extensions-app/data/ui/extensions-window.ui:267 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" "Da biste pronašli i dodali proširenja, posetite stranicu extensions.gnome.org." #: subprojects/extensions-app/data/ui/extensions-window.ui:278 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" "Nažalost, nije bilo moguće dobaviti spisak instaliranih proširenja. Proverite " "da li ste prijavljeni u Gnom i probajte ponovo." #: subprojects/extensions-app/data/ui/help-overlay.ui:9 msgctxt "shortcut window" msgid "General" msgstr "Opšte" #: subprojects/extensions-app/data/ui/help-overlay.ui:12 msgctxt "shortcut window" msgid "Open Menu" msgstr "Otvori meni" #: subprojects/extensions-app/data/ui/help-overlay.ui:18 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Uključi pretragu" #: subprojects/extensions-app/data/ui/help-overlay.ui:24 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Prikaži prečice" #: subprojects/extensions-app/data/ui/help-overlay.ui:30 msgctxt "shortcut window" msgid "Quit" msgstr "_Izađi" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:284 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "Novo proširenje je uspešno napravljeno u putanji %s.\n" #: subprojects/extensions-tool/src/command-create.c:376 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" "Naziv treba biti kratka (po mogućustvu opisna) niska.\n" "Na primer: %s" #: subprojects/extensions-tool/src/command-create.c:382 #: subprojects/extensions-tool/src/main.c:243 msgid "Name" msgstr "Naziv" #: subprojects/extensions-tool/src/command-create.c:396 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" "Opis objašnjava, u jednoj rečenici, šta vaše proširenje radi.\n" "Na primer: %s" #: subprojects/extensions-tool/src/command-create.c:402 #: subprojects/extensions-tool/src/main.c:246 msgid "Description" msgstr "Opis" #: subprojects/extensions-tool/src/command-create.c:416 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" "JUIB je opšti i jedinstveni identifikator vašeg proširenja.\n" "Ovo treba biti u obliku adrese e-pošte (klikzafokus@petarperic.primer.rs)\n" #: subprojects/extensions-tool/src/command-create.c:443 msgid "Choose one of the available templates:\n" msgstr "Izaberite jedan od dostupnih šablona:\n" #: subprojects/extensions-tool/src/command-create.c:457 msgid "Template" msgstr "Šablon" #: subprojects/extensions-tool/src/command-create.c:515 msgid "The unique identifier of the new extension" msgstr "Jedinstveni identifikator novog proširenja" #: subprojects/extensions-tool/src/command-create.c:518 msgid "NAME" msgstr "NAZIV" #: subprojects/extensions-tool/src/command-create.c:519 msgid "The user-visible name of the new extension" msgstr "Naziv novog proširenja vidljiv korisniku" #: subprojects/extensions-tool/src/command-create.c:521 msgid "DESCRIPTION" msgstr "OPIS" #: subprojects/extensions-tool/src/command-create.c:523 msgid "A short description of what the extension does" msgstr "Kratak opis onoga što proširenje radi" #: subprojects/extensions-tool/src/command-create.c:525 #: subprojects/extensions-tool/src/command-pack.c:455 msgid "DOMAIN" msgstr "DOMEN" #: subprojects/extensions-tool/src/command-create.c:527 msgid "The gettext domain used by the extension" msgstr "Gettekst domen koje koristi proširenje" #: subprojects/extensions-tool/src/command-create.c:529 #: subprojects/extensions-tool/src/command-pack.c:448 msgid "SCHEMA" msgstr "ŠEMA" #: subprojects/extensions-tool/src/command-create.c:531 msgid "The GSettings schema used by the extension" msgstr "Šablon g-podešavanja koje koristi proširenje" #: subprojects/extensions-tool/src/command-create.c:534 msgid "TEMPLATE" msgstr "ŠABLON" #: subprojects/extensions-tool/src/command-create.c:535 msgid "The template to use for the new extension" msgstr "Šablon koji treba koristiti za novo proširenje" #: subprojects/extensions-tool/src/command-create.c:538 msgid "Include prefs.js template" msgstr "Uključi prefs.js šablon" #: subprojects/extensions-tool/src/command-create.c:544 msgid "Enter extension information interactively" msgstr "Interaktivno unesite podatke o proširenju" #: subprojects/extensions-tool/src/command-create.c:552 msgid "Create a new extension" msgstr "Napravi novo proširenje" #: subprojects/extensions-tool/src/command-create.c:570 #: subprojects/extensions-tool/src/command-list.c:190 msgid "Unknown arguments" msgstr "Nepoznati argumenti" #: subprojects/extensions-tool/src/command-create.c:595 msgid "UUID, name and description are required" msgstr "Stavke JUIB, naziv i opis su obavezne" #: subprojects/extensions-tool/src/command-disable.c:62 #: subprojects/extensions-tool/src/command-enable.c:62 #, c-format msgid "Extension “%s” does not exist\n" msgstr "Proširenje „%s“ ne postoji\n" #: subprojects/extensions-tool/src/command-disable.c:98 msgid "Disable an extension" msgstr "Onemogući proširenje" #: subprojects/extensions-tool/src/command-disable.c:116 #: subprojects/extensions-tool/src/command-enable.c:116 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "Nijedan JUIB nije naveden" #: subprojects/extensions-tool/src/command-disable.c:121 #: subprojects/extensions-tool/src/command-enable.c:121 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "Navedeno je više od jednog JUIB-a" #: subprojects/extensions-tool/src/command-enable.c:98 msgid "Enable an extension" msgstr "Omogući proširenje" #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:66 #: subprojects/extensions-tool/src/main.c:150 msgid "Failed to connect to GNOME Shell\n" msgstr "Nisam uspeo da se povežem na Gnomovu školjku\n" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:159 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "Proširenje „%s“ ne postoji\n" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "Prikaži podatke o proširenjima" #: subprojects/extensions-tool/src/command-install.c:190 msgid "Overwrite an existing extension" msgstr "Prepiši postojeće proširenje" #: subprojects/extensions-tool/src/command-install.c:192 msgid "EXTENSION_BUNDLE" msgstr "ZAPAKOVANO_PROŠIRENJE" #: subprojects/extensions-tool/src/command-install.c:201 msgid "Install an extension bundle" msgstr "Instaliraj paket proširenja" #: subprojects/extensions-tool/src/command-install.c:219 msgid "No extension bundle specified" msgstr "Nijedan paket proširenja nije naveden" #: subprojects/extensions-tool/src/command-install.c:225 msgid "More than one extension bundle specified" msgstr "Navedeno je više od jednog zapakovanog proširenja" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show user-installed extensions" msgstr "Prikaži korisnička proširenja" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show system-installed extensions" msgstr "Prikaži sistemska proširenja" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Show enabled extensions" msgstr "Prikaži omogućena proširenja" #: subprojects/extensions-tool/src/command-list.c:149 msgid "Show disabled extensions" msgstr "Prikaži onemogućena proširenja" #: subprojects/extensions-tool/src/command-list.c:152 msgid "Show extensions in active state" msgstr "Prikaži aktivna proširenja" #: subprojects/extensions-tool/src/command-list.c:155 msgid "Show extensions in inactive state" msgstr "Prikaži neaktivna proširenja" #: subprojects/extensions-tool/src/command-list.c:158 msgid "Show extensions with preferences" msgstr "Prikaži proširenja sa postavkama" #: subprojects/extensions-tool/src/command-list.c:161 msgid "Show extensions with updates" msgstr "Prikaži proširenja sa ažuriranjima" #: subprojects/extensions-tool/src/command-list.c:164 msgid "Print extension details" msgstr "Prikaži pojedinosti proširenja" #: subprojects/extensions-tool/src/command-list.c:172 msgid "List installed extensions" msgstr "Izlistaj instalirana proširenja" #: subprojects/extensions-tool/src/command-pack.c:444 msgid "FILE" msgstr "DATOTEKA" #: subprojects/extensions-tool/src/command-pack.c:445 msgid "Additional source to include in the bundle" msgstr "Dodatan izvor koji treba uključiti u paket" #: subprojects/extensions-tool/src/command-pack.c:449 msgid "A GSettings schema that should be included" msgstr "Šema g-podešavanja koju treba upakovati" #: subprojects/extensions-tool/src/command-pack.c:451 #: subprojects/extensions-tool/src/command-pack.c:462 msgid "DIRECTORY" msgstr "DIREKTORIJUM" #: subprojects/extensions-tool/src/command-pack.c:453 msgid "The directory where translations are found" msgstr "Direktorijum sa prevodima" #: subprojects/extensions-tool/src/command-pack.c:457 msgid "The gettext domain to use for translations" msgstr "Gettekst domen koji treba koristiti za prevode" #: subprojects/extensions-tool/src/command-pack.c:460 msgid "Overwrite an existing pack" msgstr "Prepiši postojeći paket" #: subprojects/extensions-tool/src/command-pack.c:464 msgid "The directory where the pack should be created" msgstr "Fascikla gde treba napraviti paket" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "SOURCE_DIRECTORY" msgstr "IZVORNI_DIREKTORIJUM" #: subprojects/extensions-tool/src/command-pack.c:475 msgid "Create an extension bundle" msgstr "Napravi paket sa proširenjem" #: subprojects/extensions-tool/src/command-pack.c:495 msgid "More than one source directory specified" msgstr "Navedeno je više izvornih direktorijuma" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "Proširenje „%s“ nema svoje postavke\n" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "Nisam uspeo da otvorim postavke za proširenje „%s“: %s\n" #: subprojects/extensions-tool/src/command-prefs.c:87 msgid "Opens extension preferences" msgstr "Otvara postavke proširenja" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "Ponovo postavlja proširenje" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "Nije moguće deinstalirati sistemska proširenja\n" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "Nisam uspeo da deinstaliram „%s“\n" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "Deinstalira proširenje" #: subprojects/extensions-tool/src/main.c:76 msgid "Do not print error messages" msgstr "Ne prikazuj poruke sa greškama" #: subprojects/extensions-tool/src/main.c:249 msgid "Path" msgstr "Putanja" #: subprojects/extensions-tool/src/main.c:252 msgid "URL" msgstr "Adresa" #: subprojects/extensions-tool/src/main.c:255 msgid "Original author" msgstr "Izvorni tvorac" #: subprojects/extensions-tool/src/main.c:261 #: subprojects/extensions-tool/src/main.c:263 #: subprojects/extensions-tool/src/main.c:265 msgid "Version" msgstr "Izdanje" #: subprojects/extensions-tool/src/main.c:268 msgid "Enabled" msgstr "Uključeno" #: subprojects/extensions-tool/src/main.c:268 msgid "Yes" msgstr "Da" #: subprojects/extensions-tool/src/main.c:268 msgid "No" msgstr "Ne" #: subprojects/extensions-tool/src/main.c:271 msgid "State" msgstr "Stanje" #: subprojects/extensions-tool/src/main.c:309 msgid "“version” takes no arguments" msgstr "\"version\" ne uzima argumente" #: subprojects/extensions-tool/src/main.c:311 #: subprojects/extensions-tool/src/main.c:331 msgid "Usage:" msgstr "Način korišćenja:" #: subprojects/extensions-tool/src/main.c:314 msgid "Print version information and exit." msgstr "Ispisuje podatke o izdanju i izlazi." #: subprojects/extensions-tool/src/main.c:329 #: subprojects/extensions-tool/src/main.c:332 msgid "COMMAND" msgstr "NAREDBA" #: subprojects/extensions-tool/src/main.c:332 msgid "[ARGS…]" msgstr "[ARGUMENTI…]" #: subprojects/extensions-tool/src/main.c:334 msgid "Commands:" msgstr "Naredbe:" #: subprojects/extensions-tool/src/main.c:335 msgid "Print help" msgstr "Prikaži pomoć" #: subprojects/extensions-tool/src/main.c:337 msgid "Enable extension" msgstr "Omogući proširenje" #: subprojects/extensions-tool/src/main.c:338 msgid "Disable extension" msgstr "Onemogući proširenje" #: subprojects/extensions-tool/src/main.c:339 msgid "Reset extension" msgstr "Ponovo postavi proširenje" #: subprojects/extensions-tool/src/main.c:340 msgid "Uninstall extension" msgstr "Deinstaliraj proširenje" #: subprojects/extensions-tool/src/main.c:341 msgid "List extensions" msgstr "Izlistaj proširenje" #: subprojects/extensions-tool/src/main.c:342 #: subprojects/extensions-tool/src/main.c:343 msgid "Show extension info" msgstr "Prikaži podatke o proširenju" #: subprojects/extensions-tool/src/main.c:344 msgid "Open extension preferences" msgstr "Otvori postavke proširenja" #: subprojects/extensions-tool/src/main.c:345 msgid "Create extension" msgstr "Napravi proširenje" #: subprojects/extensions-tool/src/main.c:346 msgid "Package extension" msgstr "Zapakuj proširenje" #: subprojects/extensions-tool/src/main.c:347 msgid "Install extension bundle" msgstr "Instaliraj paket proširenja" #: subprojects/extensions-tool/src/main.c:349 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "Koristi „%s“ za detaljniju pomoć.\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "Obično" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "Prazno proširenje" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "Pokazatelj" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "Dodaj ikonicu u gornju traku" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:4 msgid "Quick Settings Item" msgstr "Stavka brzih podešavanja" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:5 msgid "Add an item to quick settings" msgstr "Dodaj stavku u brza podešavanja" #. translators: #. * The device has been disabled #: subprojects/gvc/gvc-mixer-control.c:1872 msgid "Disabled" msgstr "Isključeno" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1879 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u izlaz" msgstr[1] "%u izlaza" msgstr[2] "%u izlaza" msgstr[3] "%u izlaz" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1889 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u ulaz" msgstr[1] "%u ulaza" msgstr[2] "%u ulaza" msgstr[3] "%u ulaz" #: subprojects/gvc/gvc-mixer-control.c:2872 msgid "System Sounds" msgstr "Sistemski zvuci" #~ msgid "Network Manager" #~ msgstr "Upravnik mreže" #, javascript-format #~ msgid "%s is now known as %s" #~ msgstr "„%s“ je sada poznat kao „%s“" #~ msgid "Disabling" #~ msgstr "Onemogućavam" #~ msgid "Enabling" #~ msgstr "Omogućavam" #~ msgid "Thunderbolt" #~ msgstr "Tanderbolt" #~ msgid "No Thanks" #~ msgstr "Ne, hvala" #~ msgid "No Matches" #~ msgstr "Nema podudaranja" #~ msgid "The extension had an error" #~ msgstr "Proširenje sadrži grešku" #~ msgid "The extension can be updated" #~ msgstr "Postoji ažuriranje proširenja" #~ msgid "Help" #~ msgstr "Pomoć" #~ msgid "Manually Installed" #~ msgstr "Ručno instalirana" #~ msgid "Built-In" #~ msgstr "Ugrađena" #~ msgid "Extension Updates Ready" #~ msgstr "Spremna su ažuriranja proširenja" #~ msgid "Screenshot / Screencast" #~ msgstr "Snimak ekrana / video snimak" #, javascript-format #~ msgid "%d %%" #~ msgstr "%d %%" #~ msgid "Attach modal dialog to the parent window" #~ msgstr "Prikačinje prozorče roditeljskom prozoru" #~ msgid "" #~ "This key overrides the key in org.gnome.mutter when running GNOME Shell." #~ msgstr "" #~ "Ovaj ključ prevazilazi ključ u „org.gnome.mutter“ kada pokreće Gnomovu " #~ "školjku." #~ msgid "Enable edge tiling when dropping windows on screen edges" #~ msgstr "" #~ "Uključuje popločavanje ivice prilikom otpuštanja prozora na ivicama ekrana" #~ msgid "Workspaces are managed dynamically" #~ msgstr "Radnim prostorima se upravlja dinamički" #~ msgid "Workspaces only on primary monitor" #~ msgstr "Radni prostori samo na primarnom monitoru" #~ msgid "Delay focus changes in mouse mode until the pointer stops moving" #~ msgstr "" #~ "Zastoj prvog plana se menja u režimu miša dok se pokazivač ne zaustavi" #~ msgid "Region & Language Settings" #~ msgstr "Podešavanja regiona i jezika" #~ msgid "Applications" #~ msgstr "Programi" #, javascript-format #~ msgid "Unable to start %s" #~ msgstr "Ne mogu da pokrenem „%s“" #, javascript-format #~ msgid "Couldn’t find the %s application" #~ msgstr "Nisam mogao naći program %s" #~ msgid "Evolution Calendar" #~ msgstr "Kalendar Evolucije" #~ msgid "" #~ "Whether the default Bluetooth adapter had set up devices associated to it" #~ msgstr "Da li je osnovni adapter blututa podesio njemu pridružene uređaje" #~ msgid "" #~ "The shell will only show a Bluetooth menu item if a Bluetooth adapter is " #~ "powered, or if there were devices set up associated with the default " #~ "adapter. This will be reset if the default adapter is ever seen not to " #~ "have devices associated to it." #~ msgstr "" #~ "Školjka će prikazati stavku izbornika blututa samo ako je adapter blututa " #~ "upaljen, ili ako ima podešenih uređaja pridruženih osnovnom adapteru. Ovo " #~ "će se vratiti na početno stanje ako se ustanovi da osnovni adapter nema " #~ "njemu pridruženih uređaja." #~ msgid "Log Out" #~ msgstr "Odjavi me" #~ msgid "Bluetooth On" #~ msgstr "Blutut uklj." #~ msgid "Bluetooth Off" #~ msgstr "Blutut isk." #~ msgid "Location In Use" #~ msgstr "Koristi lokaciju" #~ msgid "Location Disabled" #~ msgstr "Ne koristi lokaciju" #, javascript-format #~ msgid "%s Off" #~ msgstr "%s isključeno" #, javascript-format #~ msgid "%s Connected" #~ msgstr "%s povezano" #, javascript-format #~ msgid "%s Unmanaged" #~ msgstr "%s neupravljano" #, javascript-format #~ msgid "%s Connecting" #~ msgstr "%s povezivanje u toku" #, javascript-format #~ msgid "%s Requires Authentication" #~ msgstr "%s zahteva prijavu" #, javascript-format #~ msgid "Firmware Missing For %s" #~ msgstr "Nedostaje firmver za %s" #, javascript-format #~ msgid "%s Unavailable" #~ msgstr "%s nedostupno" #, javascript-format #~ msgid "%s Connection Failed" #~ msgstr "%s povezivanje neuspešno" #, javascript-format #~ msgid "%s Hardware Disabled" #~ msgstr "%s uređaj isključen" #, javascript-format #~ msgid "%s Disabled" #~ msgstr "%s isključeno" #~ msgid "Connect to Internet" #~ msgstr "Poveži se na Internet" #~ msgid "Airplane Mode is On" #~ msgstr "Avionski režim rada je uključen" #~ msgid "Wi-Fi is disabled when airplane mode is on." #~ msgstr "Bežična veza je isključena kada je uključen avionski režim rada." #~ msgid "Turn Off Airplane Mode" #~ msgstr "Isključi avionski režim rada" #~ msgid "Wi-Fi is Off" #~ msgstr "Bežična veza je isključena" #~ msgid "Wi-Fi needs to be turned on in order to connect to a network." #~ msgstr "Bežična veza treba biti uključena da biste se povezali na mrežu." #~ msgid "Turn On Wi-Fi" #~ msgstr "Uključi bežičnu vezu" #~ msgid "Wi-Fi Networks" #~ msgstr "Bežične mreže" #~ msgid "Select a network" #~ msgstr "Izaberite mrežu" #~ msgid "Use hardware switch to turn off" #~ msgstr "Koristi fizički prekidač za isključivanje" #~ msgid "Select Network" #~ msgstr "Izaberi mrežu" #~ msgid "Wi-Fi Settings" #~ msgstr "Podešavanja bežične veze" #, javascript-format #~ msgid "%s Not Connected" #~ msgstr "%s nepovezano" #~ msgid "connecting…" #~ msgstr "povezujem se…" #~ msgid "authentication required" #~ msgstr "potrebna je prijava" #~ msgid "connection failed" #~ msgstr "povezivanje nije uspelo" #~ msgid "VPN Off" #~ msgstr "Isključi VPN" #, javascript-format #~ msgid "%s Wi-Fi Connection" #~ msgid_plural "%s Wi-Fi Connections" #~ msgstr[0] "%s bežična veza" #~ msgstr[1] "%s bežične veze" #~ msgstr[2] "%s bežičnih veza" #~ msgstr[3] "%s bežična veza" #~ msgid "Night Light Disabled" #~ msgstr "Noćno svetlo ne radi" #~ msgid "Resume" #~ msgstr "Nastavi" #~ msgid "Disable Until Tomorrow" #~ msgstr "Isključi do sutra" #~ msgid "Fully Charged" #~ msgstr "Potpuno puna" #~ msgid "Not Charging" #~ msgstr "Ne puni se" #~ msgid "Estimating…" #~ msgstr "Proračunavam…" #, javascript-format #~ msgid "%d∶%02d Remaining (%d %%)" #~ msgstr "Do prazne: %d:%02d (%d %%)" # Kratak prevod da bi se videlo vreme i procenat napunjenosti u sistemskom meniju Gnomove školjke. #, javascript-format #~ msgid "%d∶%02d Until Full (%d %%)" #~ msgstr "Do pune: %d:%02d (%d %%)" #~ msgid "Screen is Being Shared" #~ msgstr "Ekran se deli" #~ msgid "Turn off" #~ msgstr "Isključi" #~ msgid "Airplane Mode On" #~ msgstr "Avio režim uključen" #~ msgid "Lock" #~ msgstr "Zaključaj" #~ msgid "Power Off / Log Out" #~ msgstr "Isključivanje ili odjava" #~ msgid "Remove from Favorites" #~ msgstr "Ukloni iz omiljenih" #~ msgid "Add to Favorites" #~ msgstr "Dodaj u omiljene" #~ msgid "Author" #~ msgstr "Tvorac" #~ msgid "Warning" #~ msgstr "Upozorenje" #~ msgid "" #~ "Extensions can cause system issues, including performance problems. If " #~ "you encounter problems with your system, it is recommended to disable all " #~ "extensions." #~ msgstr "" #~ "Proširenja mogu uticati na stabilnost sistema, uključujući i na " #~ "delotvornost. Ukoliko primetite probleme u radu, preporučujemo da " #~ "onemogućite sva proširenja." #~ msgid "Failed to connect to GNOME Shell" #~ msgstr "Nisam uspeo da se povežem na Gnomovu školjku" #~ msgid "Enable introspection API" #~ msgstr "Omogući API za introspekciju" #~ msgid "" #~ "Enables a D-Bus API that allows to introspect the application state of " #~ "the shell." #~ msgstr "" #~ "Omogućava API D-sabirnice koji dozvoljava introspekciju programskog stanja " #~ "školjke." #~ msgid "Minimize" #~ msgstr "Umanji" #~ msgid "Unmaximize" #~ msgstr "Poništi uvećanje" #~ msgid "App Picker View" #~ msgstr "Pregled izbirača programa" #~ msgid "Index of the currently selected view in the application picker." #~ msgstr "Popis trenutno izabranog pregleda u izbiraču programa." #~ msgid "Frequently used applications will appear here" #~ msgstr "Često korišćeni programi će se pojaviti ovde" #~ msgid "Frequent" #~ msgstr "Često" #~ msgid "All" #~ msgstr "Sve" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d" #~ msgstr "%A, %-d. %B" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d, %Y" #~ msgstr "%A, %-d. %B %Y." #~ msgid "On" #~ msgstr "Uključeno" #~ msgid "Copy Error" #~ msgstr "Greška pri kopiranju" #~ msgid "Username…" #~ msgstr "Korisnik…" #~ msgid "Password: " #~ msgstr "Lozinka: " #~ msgid "Enter Password…" #~ msgstr "Unesi lozinku…" #~ msgid "Browse in Software" #~ msgstr "Pregledaj u Programima" #~ msgid "Next" #~ msgstr "Dalje" #~ msgctxt "button" #~ msgid "Sign In" #~ msgstr "Prijavi me" #~ msgid "Rename" #~ msgstr "Preimenuj" #~ msgid "Type again:" #~ msgstr "Upišite ponovo:" #~ msgid "Authentication required by wireless network" #~ msgstr "Bežična mreža zahteva potvrđivanje identiteta" #~ msgid "Mobile broadband network password" #~ msgstr "Lozinka mobilne širokopojasne mreže" #~ msgid "%A, %B %d" #~ msgstr "%A, %d. %B" #~ msgid "%d new message" #~ msgid_plural "%d new messages" #~ msgstr[0] "%d nova poruka" #~ msgstr[1] "%d nove poruke" #~ msgstr[2] "%d novih poruka" #~ msgstr[3] "%d nova poruka" #~ msgid "Account Settings" #~ msgstr "Podešavanja naloga" #~ msgid "Orientation Lock" #~ msgstr "Katanac okrenutosti" #~ msgid "" #~ "Keybinding that pauses and resumes all running tweens, for debugging " #~ "purposes" #~ msgstr "" #~ "Sveza tastera koja pauzira i nastavlja sve pokrenute blizance, za svrhe " #~ "pročišćavanja" #~ msgid "Which keyboard to use" #~ msgstr "Koja će tastatura biti korišćena" #~ msgid "The type of keyboard to use." #~ msgstr "Vrsta tastature za upotrebu." #~ msgid "network-workgroup" #~ msgstr "network-workgroup" #~ msgid "toggle-switch-us" #~ msgstr "toggle-switch-intl" #~ msgid "There was an error loading the preferences dialog for %s:" #~ msgstr "Došlo je do greške pri učitavanju prozorčeta postavki za „%s“:" #~ msgid "%s all day." #~ msgstr "%s celog dana." #~ msgid "%s, then %s later." #~ msgstr "%s, zatim %s kasnije." #~ msgid "%s, then %s, followed by %s later." #~ msgstr "%s, zatim %s, a kasnije %s." #~ msgid "Feels like %s." #~ msgstr "Oseća se kao %s." #~ msgctxt "search-result" #~ msgid "Log out" #~ msgstr "Odjavi me" #~ msgctxt "search-result" #~ msgid "Switch user" #~ msgstr "Promeni korisnika" #~ msgid "Hide tray" #~ msgstr "Sakrij kasetu" #~ msgid "Status Icons" #~ msgstr "Ikonice stanja" #~ msgid "Events" #~ msgstr "Događaji" #~ msgid "Media" #~ msgstr "Mediji" #~ msgid "Web Authentication Redirect" #~ msgstr "Preusmeravanje potvrđivanja identiteta vebom" #~ msgid "%d x %d" #~ msgstr "%d x %d" #~ msgid "Show the week date in the calendar" #~ msgstr "Prikazuje dan u nedelji u kalendaru" #~ msgid "If true, display the ISO week date in the calendar." #~ msgstr "Ako je izabrano, prikazuje ISO dan u nedelji u kalendaru." #~ msgid "Use as Internet connection" #~ msgstr "Koristi kao Internet vezu" #~ msgid "%s is requesting access to your location." #~ msgstr "„%s“ zahteva pristup vašem mestu." #~ msgid "GNOME Shell (wayland compositor)" #~ msgstr "Gnomova školjka (vajland sastavljač)" #~ msgid "%d Connected Device" #~ msgid_plural "%d Connected Devices" #~ msgstr[0] "%d priključeni uređaj" #~ msgstr[1] "%d priključena uređaja" #~ msgstr[2] "%d priključenih uređaja" #~ msgstr[3] "%d priključeni uređaj" #~ msgid "UPS" #~ msgstr "Rezervno napajanje" #~ msgid "Battery" #~ msgstr "Baterija" #~ msgid "Show the message tray" #~ msgstr "Prikažite fioku poruka" #~ msgid "Captive Portal" #~ msgstr "Portal stopke" #~ msgctxt "event list time" #~ msgid "%H∶%M" #~ msgstr "%H∶%M" #~ msgctxt "event list time" #~ msgid "%l∶%M %p" #~ msgstr "%l∶%M %p" #~ msgctxt "list sunday" #~ msgid "Su" #~ msgstr "Ned" #~ msgctxt "list monday" #~ msgid "M" #~ msgstr "Pon" #~ msgctxt "list tuesday" #~ msgid "T" #~ msgstr "Uto" #~ msgctxt "list wednesday" #~ msgid "W" #~ msgstr "Sre" #~ msgctxt "list thursday" #~ msgid "Th" #~ msgstr "Čet" #~ msgctxt "list friday" #~ msgid "F" #~ msgstr "Pet" #~ msgctxt "list saturday" #~ msgid "S" #~ msgstr "Sub" #~ msgid "Nothing Scheduled" #~ msgstr "Ništa planirano" #~ msgid "This week" #~ msgstr "Ove nedelje" #~ msgid "Next week" #~ msgstr "Sledeće nedelje" #~ msgid "Removable Devices" #~ msgstr "Uklonjivi uređaji" #~ msgid "Eject" #~ msgstr "Izbaci" #~ msgid "Invitation" #~ msgstr "Pozivnica" #~ msgid "Call" #~ msgstr "Poziv" #~ msgid "File Transfer" #~ msgstr "Prenos datoteka" #~ msgid "Chat" #~ msgstr "Ćaskanje" #~ msgid "Invitation to %s" #~ msgstr "Pozivnica za „%s“" #~ msgid "%s is inviting you to join %s" #~ msgstr "%s vas poziva da se pridružite „%s“" #~ msgid "Decline" #~ msgstr "Odbij" #~ msgid "Accept" #~ msgstr "Prihvati" #~ msgid "Video call from %s" #~ msgstr "%s vam je uputio video poziv" #~ msgid "Call from %s" #~ msgstr "%s vas zove" #~ msgid "Answer" #~ msgstr "Odgovori" #~ msgid "%s is sending you %s" #~ msgstr "%s vam šalje „%s“" #~ msgid "%s would like permission to see when you are online" #~ msgstr "%s traži odobrenje da vidi kada ste na vezi" #~ msgid "Authentication failed" #~ msgstr "Potvrđivanje identiteta nije uspelo" #~ msgid "Encryption error" #~ msgstr "Greška šifrovanja" #~ msgid "Certificate not provided" #~ msgstr "Uverenje nije prosleđeno" #~ msgid "Certificate untrusted" #~ msgstr "Uverenje nije poverljivo" #~ msgid "Certificate expired" #~ msgstr "Uverenje je isteklo" #~ msgid "Certificate not activated" #~ msgstr "Uverenje nije aktivirano" #~ msgid "Certificate hostname mismatch" #~ msgstr "Naziv domaćina uverenja se ne poklapa" #~ msgid "Certificate fingerprint mismatch" #~ msgstr "Otisak uverenja se ne poklapa" #~ msgid "Certificate self-signed" #~ msgstr "Uverenje je samopotpisano" #~ msgid "Status is set to offline" #~ msgstr "Stanje je postavljeno na „nepovezan“" #~ msgid "Certificate is invalid" #~ msgstr "Uverenje nije ispravno" #~ msgid "Connection has been refused" #~ msgstr "Veza je odbijena" #~ msgid "Connection can't be established" #~ msgstr "Veza ne može biti uspostavljena" #~ msgid "Connection has been lost" #~ msgstr "Veza je izgubljena" #~ msgid "This account is already connected to the server" #~ msgstr "Ovaj nalog je već povezan sa serverom" #~ msgid "" #~ "Connection has been replaced by a new connection using the same resource" #~ msgstr "Veza je zamenjena novom vezom koristeći isti resurs" #~ msgid "The account already exists on the server" #~ msgstr "Ovaj nalog već postoji na serveru" #~ msgid "Server is currently too busy to handle the connection" #~ msgstr "Server je trenutno previše zauzet da bi rukovao vezom" #~ msgid "Certificate has been revoked" #~ msgstr "Uverenje je opozvano" #~ msgid "" #~ "Certificate uses an insecure cipher algorithm or is cryptographically weak" #~ msgstr "" #~ "Uverenje koristi nesiguran algoritam šifrovanja ili je kriptografski slabo" #~ msgid "" #~ "The length of the server certificate, or the depth of the server " #~ "certificate chain, exceed the limits imposed by the cryptography library" #~ msgstr "" #~ "Dužina uverenja servera, ili dubina lanca uverenja servera, premašuje " #~ "granice koje je zadala biblioteka šifrovanja" #~ msgid "Internal error" #~ msgstr "Unutrašnja greška" #~ msgid "View account" #~ msgstr "Vidi nalog" #~ msgid "Open" #~ msgstr "Otvori" #~ msgid "Clear Messages" #~ msgstr "Očisti poruke" #~ msgid "Notification Settings" #~ msgstr "Postavke obaveštenja" #~ msgid "No Messages" #~ msgstr "Nema poruka" #~ msgid "Message Tray" #~ msgstr "Fioka poruka" #~ msgid "The maximum accuracy level of location." #~ msgstr "Najviši nivo tačnosti mesta." #~ msgid "" #~ "Configures the maximum level of location accuracy applications are " #~ "allowed to see. Valid options are 'off' (disable location tracking), " #~ "'country', 'city', 'neighborhood', 'street', and 'exact' (typically " #~ "requires GPS receiver). Please keep in mind that this only controls what " #~ "GeoClue will allow applications to see and they can find user's location " #~ "on their own using network resources (albeit with street-level accuracy " #~ "at best)." #~ msgstr "" #~ "Podešava najveći nivo tačnosti mesta koju programi mogu da koriste. " #~ "Ispravne mogućnosti su „off“ (isključuje praćenje mesta), " #~ "„country“ (država), „city“ (grad), „neighborhood“ (komšiluk), " #~ "„street“ (ulica), i „exact“ (tačno — obično zahteva GPS prijemnik). " #~ "Imajte na umu da će ovo odlučiti šta će „Geo indicija“ dozvoliti " #~ "programima samo da vide i da mogu pronaći korisnikovo mesto na svoju ruku " #~ "koristeći izvorišta mreže (mada sa tačnošću na nivou ulice u najboljem " #~ "slučaju)." #~ msgid "Arrangement of buttons on the titlebar" #~ msgstr "Raspored dugmića na traci naslova" #~ msgid "" #~ "This key overrides the key in org.gnome.desktop.wm.preferences when " #~ "running GNOME Shell." #~ msgstr "" #~ "Ovaj ključ prevazilazi ključ u „org.gnome.desktop.wm.preferences“ kada " #~ "pokreće Gnomovu školjku." #~ msgid "Select an extension to configure using the combobox above." #~ msgstr "Izaberite proširenje za podešavanje koristeći prozorče za izbor." #~ msgid "calendar:MY" #~ msgstr "calendar:MY" #~ msgid "List of categories that should be displayed as folders" #~ msgstr "Spisak kategorija koje treba da budu prikazane kao fascikle" #~ msgid "" #~ "Each category name in this list will be represented as folder in the " #~ "application view, rather than being displayed inline in the main view." #~ msgstr "" #~ "Naziv svake kategorije na spisku će biti predstavljen kao fascikla u " #~ "pregledu programa, umesto da bude prikazan neposredno u glavnom pregledu." #~ msgid "%A, %H:%M" #~ msgstr "%A, u %H:%M" #~ msgid "%B %d, %H:%M" #~ msgstr "%d. %B u %H:%M" #~ msgid "%B %d %Y, %H:%M " #~ msgstr "%d. %B %Y. u %H:%M" #~ msgid "Authorization request from %s" #~ msgstr "Zahtev za ovlašćenje sa „%s“" #~ msgid "Device %s wants to pair with this computer" #~ msgstr "Uređaj „%s“ želi da se upari sa ovim računarom" #~ msgid "Device %s wants access to the service '%s'" #~ msgstr "Uređaj „%s“ želi pristup usluzi „%s“" #~ msgid "Grant this time only" #~ msgstr "Odobri samo ovaj put" #~ msgid "Reject" #~ msgstr "Odbij" #~ msgid "Pairing confirmation for %s" #~ msgstr "Uparujem potvrdu za „%s“" #~ msgid "" #~ "Please confirm whether the Passkey '%06d' matches the one on the device." #~ msgstr "" #~ "Molim potvrdite da li se propusni ključ „%06d“ podudara sa onim na uređaju." #~ msgid "Does not match" #~ msgstr "Ne podudara se" #~ msgid "Pairing request for %s" #~ msgstr "Zahtev za uparivanje za „%s“" #~ msgid "Please enter the PIN mentioned on the device." #~ msgstr "Molim unesite PIN naznačen na uređaju." #~ msgid "OK" #~ msgstr "U redu" #~ msgid "" #~ "Sorry, no wisdom for you today:\n" #~ "%s" #~ msgstr "" #~ "Izvinite, danas za vas nema mudrosti:\n" #~ "%s" #~ msgid "%s the Oracle says" #~ msgstr "Prorok je rekao %s" 07070100000263000081A40000000000000000000000016712993F0001B788000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/sv.po# Swedish translation for gnome-shell. # Copyright © 2009-2024 Free Software Foundation, Inc. # This file is distributed under the same license as the gnome-shell package. # Daniel Nylander , 2009, 2010, 2011, 2012. # Marcus Lundblad , 2014. # Åke Engelbrektson , 2014. # Anders Jonsson , 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024. # Sebastian Rasmussen , 2015, 2016. # Luna Jernberg , 2021, 2022, 2023, 2024. # msgid "" msgstr "" "Project-Id-Version: gnome-shell\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues/\n" "POT-Creation-Date: 2024-07-30 18:30+0000\n" "PO-Revision-Date: 2024-07-31 16:12+0200\n" "Last-Translator: Anders Jonsson \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: Poedit 3.4.4\n" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "Programstartare" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate pinned app 1" msgstr "Aktivera nålat program 1" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate pinned app 2" msgstr "Aktivera nålat program 2" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate pinned app 3" msgstr "Aktivera nålat program 3" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate pinned app 4" msgstr "Aktivera nålat program 4" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate pinned app 5" msgstr "Aktivera nålat program 5" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate pinned app 6" msgstr "Aktivera nålat program 6" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate pinned app 7" msgstr "Aktivera nålat program 7" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate pinned app 8" msgstr "Aktivera nålat program 8" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate pinned app 9" msgstr "Aktivera nålat program 9" #: data/50-gnome-shell-launchers.xml:46 msgid "Open new window of pinned app 1" msgstr "Öppna nytt fönster för nålat program 1" #: data/50-gnome-shell-launchers.xml:50 msgid "Open new window of pinned app 2" msgstr "Öppna nytt fönster för nålat program 2" #: data/50-gnome-shell-launchers.xml:54 msgid "Open new window of pinned app 3" msgstr "Öppna nytt fönster för nålat program 3" #: data/50-gnome-shell-launchers.xml:58 msgid "Open new window of pinned app 4" msgstr "Öppna nytt fönster för nålat program 4" #: data/50-gnome-shell-launchers.xml:62 msgid "Open new window of pinned app 5" msgstr "Öppna nytt fönster för nålat program 5" #: data/50-gnome-shell-launchers.xml:66 msgid "Open new window of pinned app 6" msgstr "Öppna nytt fönster för nålat program 6" #: data/50-gnome-shell-launchers.xml:70 msgid "Open new window of pinned app 7" msgstr "Öppna nytt fönster för nålat program 7" #: data/50-gnome-shell-launchers.xml:74 msgid "Open new window of pinned app 8" msgstr "Öppna nytt fönster för nålat program 8" #: data/50-gnome-shell-launchers.xml:78 msgid "Open new window of pinned app 9" msgstr "Öppna nytt fönster för nålat program 9" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2274 msgid "Screenshots" msgstr "Skärmbilder" #: data/50-gnome-shell-screenshots.xml:9 #: data/org.gnome.shell.gschema.xml.in:287 msgid "Take a screenshot interactively" msgstr "Ta en skärmbild interaktivt" #: data/50-gnome-shell-screenshots.xml:12 #: data/org.gnome.shell.gschema.xml.in:299 msgid "Take a screenshot" msgstr "Ta en skärmbild" #: data/50-gnome-shell-screenshots.xml:15 #: data/org.gnome.shell.gschema.xml.in:295 msgid "Take a screenshot of a window" msgstr "Ta en skärmbild av ett fönster" #: data/50-gnome-shell-screenshots.xml:18 #: data/org.gnome.shell.gschema.xml.in:291 msgid "Record a screencast interactively" msgstr "Spela in skärmen interaktivt" #: data/50-gnome-shell-system.xml:6 js/ui/messageTray.js:1298 msgid "System" msgstr "System" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "Visa aviseringslistan" #: data/50-gnome-shell-system.xml:12 msgid "Open the quick settings menu" msgstr "Öppna snabbinställningsmenyn" #: data/50-gnome-shell-system.xml:15 msgid "Focus the active notification" msgstr "Fokusera den aktiva aviseringen" #: data/50-gnome-shell-system.xml:18 msgid "Show the overview" msgstr "Visa översiktsvyn" #: data/50-gnome-shell-system.xml:21 msgid "Show all apps" msgstr "Visa alla program" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "GNOME-skal" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "Fönsterhantering och uppstart av program" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" "Aktivera interna verktyg användbara för utvecklare och testare från Alt-F2" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Tillåter åtkomst till interna verktyg för felsökning och övervakning med " "dialogen Alt-F2." #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "UUID:n för tillägg att aktivera" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "Tillägg för GNOME-skal har en UUID-egenskap; denna nyckel listar tillägg som " "ska läsas in. De tillägg som vill bli inlästa måste finnas i denna lista. Du " "kan även ändra denna lista med D-Bus-metoderna EnableExtension och " "DisableExtension på org.gnome.Shell." #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "UUID:n för tillägg att tvinga att inaktiveras" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" "Tillägg för GNOME-skal har en UUID-egenskap; denna nyckel listar tillägg som " "ska inaktiveras, även om de lästs in som del av det aktuella läget. Du kan " "även ändra denna lista med D-Bus-metoderna EnableExtension och " "DisableExtension på org.gnome.Shell. Denna nyckel har företräde över " "inställningen ”enabled-extensions”." #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "Inaktivera användartillägg" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" "Inaktivera alla tillägg som användaren har aktiverat, utan att påverka " "inställningen ”enabled-extension”." #: data/org.gnome.shell.gschema.xml.in:45 msgid "Allow extension installation" msgstr "Tillåt installation av tillägg" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "Allow users to install extensions in their home folder. If disabled, the " "InstallRemoteExtension D-Bus method will fail, and extensions are only " "loaded from system directories on startup. It does not affect extensions " "that are already loaded, so a change only takes full effect on the next " "login." msgstr "" "Tillåt användare att installera tillägg i sin hemmapp. Om inaktiverat kommer " "D-Bus-metoden InstallRemoteExtension att misslyckas, och tillägg läses bara " "in från systemkataloger vid uppstart. Det påverkar inte tillägg som redan är " "inlästa, så en ändring får full effekt först vid nästa inloggning." #: data/org.gnome.shell.gschema.xml.in:56 msgid "Disables the validation of extension version compatibility" msgstr "Slår av valideringen av versionskompatibilitet för tillägg" #: data/org.gnome.shell.gschema.xml.in:57 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "GNOME-skalet kommer endast att läsa in tillägg som säger sig stödja den " "nuvarande körande versionen. Att slå på denna inställning medför att den " "kontrollen slås av och alla tillägg kommer att försöka läsas in, oavsett " "vilken version de säger sig stödja." #: data/org.gnome.shell.gschema.xml.in:65 msgid "List of desktop file IDs for favorite applications" msgstr "Lista över skrivbordsfil-id för favoritprogram" #: data/org.gnome.shell.gschema.xml.in:66 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" "Programmen som motsvarar dessa identifierare kommer att visas i " "favoritområdet." #: data/org.gnome.shell.gschema.xml.in:73 msgid "History for command (Alt-F2) dialog" msgstr "Historik för kommandodialog (Alt-F2)" #. Translators: looking glass is a debugger and inspector tool, see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/docs/looking-glass.md #: data/org.gnome.shell.gschema.xml.in:78 msgid "History for the looking glass dialog" msgstr "Historik för spegeldialogen" #: data/org.gnome.shell.gschema.xml.in:82 msgid "Always show the “Log Out” action in the system menu" msgstr "Visa alltid åtgärden ”Logga ut” i systemmenyn" #: data/org.gnome.shell.gschema.xml.in:83 msgid "" "This key overrides the automatic hiding of the “Log out” action in the " "system menu for logged-in situations where there is a single, local, non-" "system user and only a single available session type (e.g. GNOME on Wayland)." msgstr "" "Denna nyckel åsidosätter det automatiska döljandet av åtgärden ”Logga ut” i " "systemmenyn för inloggade situationer med endast en lokal icke-" "systemanvändare och en enda tillgänglig session (t.ex. GNOME på Wayland)." #: data/org.gnome.shell.gschema.xml.in:92 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "Huruvida lösenord för krypterade enheter och fjärrenheter skall memoreras" #: data/org.gnome.shell.gschema.xml.in:93 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "Skalet kommer att fråga efter ett lösenord när en krypterad enhet eller en " "fjärrenhet monteras. Om lösenordet kan sparas för framtida bruk kommer en " "”Kom ihåg lösenord”-kryssruta att visas. Denna nyckel sätter standardvärdet " "för kryssrutan." #: data/org.gnome.shell.gschema.xml.in:102 msgid "The last selected non-default power profile" msgstr "Den senast valda icke-standardströmprofilen" #: data/org.gnome.shell.gschema.xml.in:103 msgid "" "Some systems support more than two power profiles. In order to still support " "toggling between two profiles, this key records the last selected non-" "default profile." msgstr "" "Vissa system stöder mer än två strömprofiler. För att fortfarande stödja " "växling mellan två profiler registrerar denna nyckel den senast valda icke-" "standardprofilen." #: data/org.gnome.shell.gschema.xml.in:111 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "Den senaste versionen som ”Välkommen till GNOME”-dialogen visades för" #: data/org.gnome.shell.gschema.xml.in:112 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can " "be used to effectively disable the dialog." msgstr "" "Denna nyckel avgör för vilken version som ”Välkommen till GNOME”-dialogen " "senast visades. En tom sträng motsvarar den äldsta möjliga versionen, och " "ett enormt tal kommer motsvara versioner som inte finns ännu. Detta enorma " "tal kan användas för att inaktivera dialogrutan." #: data/org.gnome.shell.gschema.xml.in:145 msgid "Layout of the app picker" msgstr "Layout för programväljaren" #: data/org.gnome.shell.gschema.xml.in:146 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" msgstr "" "Layout för programväljaren. Varje post i vektorn är en sida. Sidor lagras i " "ordningen de dyker upp i GNOME-skalet. Varje sida innehåller ett par " "”program-ID” → ”data”. För närvarande lagras följande värde som ”data”: • " "”position”: positionen för programikonen på sidan" #: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:172 msgid "Keybinding to shift between overview states" msgstr "Snabbtangent för att växla mellan översiktstillstånd" #: data/org.gnome.shell.gschema.xml.in:166 msgid "Keybinding to shift between session, window picker and app grid" msgstr "" "Snabbtangent för att växla mellan session, fönsterväljare och programrutnät" #: data/org.gnome.shell.gschema.xml.in:173 msgid "Keybinding to shift between app grid, window picker and session" msgstr "" "Snabbtangent för att växla mellan programrutnät, fönsterväljare och session" #: data/org.gnome.shell.gschema.xml.in:179 msgid "Keybinding to open the “Show Applications” view" msgstr "Snabbtangent för att öppna ”Visa program”-vyn" #: data/org.gnome.shell.gschema.xml.in:180 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "Snabbtangent för att öppna ”Visa program”-vyn i översiktsvyn." #: data/org.gnome.shell.gschema.xml.in:187 msgid "Keybinding to open the overview" msgstr "Snabbtangent för att öppna översiktsvyn" #: data/org.gnome.shell.gschema.xml.in:188 msgid "Keybinding to open the Activities Overview." msgstr "Snabbtangent för att öppna översiktsvyn." #: data/org.gnome.shell.gschema.xml.in:194 msgid "Keybinding to toggle the visibility of the notification list" msgstr "Snabbtangent för att växla synligheten för aviseringslistan" #: data/org.gnome.shell.gschema.xml.in:195 msgid "Keybinding to toggle the visibility of the notification list." msgstr "Snabbtangent för att växla synligheten för aviseringslistan." #: data/org.gnome.shell.gschema.xml.in:201 msgid "Keybinding to toggle the quick settings menu" msgstr "Snabbtangent för att öppna och stänga snabbinställningsmenyn" #: data/org.gnome.shell.gschema.xml.in:202 msgid "Keybinding to toggle the quick settings menu." msgstr "Snabbtangent för att öppna och stänga snabbinställningsmenyn." #: data/org.gnome.shell.gschema.xml.in:208 msgid "Keybinding to focus the active notification" msgstr "Snabbtangent för att fokusera på den aktiva aviseringen" #: data/org.gnome.shell.gschema.xml.in:209 msgid "Keybinding to focus the active notification." msgstr "Snabbtangent för att fokusera på den aktiva aviseringen." #: data/org.gnome.shell.gschema.xml.in:215 msgid "Switch to application 1" msgstr "Växla till program 1" #: data/org.gnome.shell.gschema.xml.in:219 msgid "Switch to application 2" msgstr "Växla till program 2" #: data/org.gnome.shell.gschema.xml.in:223 msgid "Switch to application 3" msgstr "Växla till program 3" #: data/org.gnome.shell.gschema.xml.in:227 msgid "Switch to application 4" msgstr "Växla till program 4" #: data/org.gnome.shell.gschema.xml.in:231 msgid "Switch to application 5" msgstr "Växla till program 5" #: data/org.gnome.shell.gschema.xml.in:235 msgid "Switch to application 6" msgstr "Växla till program 6" #: data/org.gnome.shell.gschema.xml.in:239 msgid "Switch to application 7" msgstr "Växla till program 7" #: data/org.gnome.shell.gschema.xml.in:243 msgid "Switch to application 8" msgstr "Växla till program 8" #: data/org.gnome.shell.gschema.xml.in:247 msgid "Switch to application 9" msgstr "Växla till program 9" #: data/org.gnome.shell.gschema.xml.in:251 msgid "Open a new instance of application 1" msgstr "Öppna en ny instans av program 1" #: data/org.gnome.shell.gschema.xml.in:255 msgid "Open a new instance of application 2" msgstr "Öppna en ny instans av program 2" #: data/org.gnome.shell.gschema.xml.in:259 msgid "Open a new instance of application 3" msgstr "Öppna en ny instans av program 3" #: data/org.gnome.shell.gschema.xml.in:263 msgid "Open a new instance of application 4" msgstr "Öppna en ny instans av program 4" #: data/org.gnome.shell.gschema.xml.in:267 msgid "Open a new instance of application 5" msgstr "Öppna en ny instans av program 5" #: data/org.gnome.shell.gschema.xml.in:271 msgid "Open a new instance of application 6" msgstr "Öppna en ny instans av program 6" #: data/org.gnome.shell.gschema.xml.in:275 msgid "Open a new instance of application 7" msgstr "Öppna en ny instans av program 7" #: data/org.gnome.shell.gschema.xml.in:279 msgid "Open a new instance of application 8" msgstr "Öppna en ny instans av program 8" #: data/org.gnome.shell.gschema.xml.in:283 msgid "Open a new instance of application 9" msgstr "Öppna en ny instans av program 9" #: data/org.gnome.shell.gschema.xml.in:308 #: data/org.gnome.shell.gschema.xml.in:335 msgid "Limit switcher to current workspace." msgstr "Begränsa väljare till aktuell arbetsyta." #: data/org.gnome.shell.gschema.xml.in:309 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "Om satt till true (sant), visas endast program som har fönster på den " "aktuella arbetsytan i väljaren. I annat fall inkluderas alla program." #: data/org.gnome.shell.gschema.xml.in:326 msgid "The application icon mode." msgstr "Programikonsläget." #: data/org.gnome.shell.gschema.xml.in:327 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-only” " "(shows only the application icon) or “both”." msgstr "" "Ställer in hur fönster visas i väljaren. Giltiga alternativ är ”thumbnail-" "only” (visar en miniatyrbild av fönstret), ”app-icon-only” (visar endast " "programikonen) eller ”both” (visar båda)." #: data/org.gnome.shell.gschema.xml.in:336 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "Om satt till \"true\", visas endast fönster från den aktuella arbetsytan i " "väljaren. I annat fall inkluderas alla fönster." #: data/org.gnome.shell.gschema.xml.in:346 msgid "Locations" msgstr "Platser" #: data/org.gnome.shell.gschema.xml.in:347 msgid "The locations to show in world clocks" msgstr "Platserna att visa i världsklockor" #: data/org.gnome.shell.gschema.xml.in:357 msgid "Automatic location" msgstr "Automatisk plats" #: data/org.gnome.shell.gschema.xml.in:358 msgid "Whether to fetch the current location or not" msgstr "Huruvida den aktuella platsen ska hämtas eller ej" #: data/org.gnome.shell.gschema.xml.in:365 msgid "Location" msgstr "Plats" #: data/org.gnome.shell.gschema.xml.in:366 msgid "The location for which to show a forecast" msgstr "Platsen för vilken en väderprognos ska visas" #. Keep in sync with subprojects/extensions-app #: data/org.gnome.Shell.Extensions.desktop.in.in:5 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/data/ui/extensions-window.ui:57 msgid "Extensions" msgstr "Tillägg" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "Nätverksinloggning" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:275 msgid "Something’s gone wrong" msgstr "Något har gått fel" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" "Vi är ledsna, men ett problem har uppstått: inställningarna för detta " "tillägg kan inte visas. Vi rekommenderar att du rapporterar problemet till " "tilläggets skapare." #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "Tekniska detaljer" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "Webbsida" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 msgid "Visit extension homepage" msgstr "Besök webbsida för tillägg" #: js/gdm/authPrompt.js:151 js/gdm/loginDialog.js:465 #: js/ui/audioDeviceSelection.js:66 js/ui/components/networkAgent.js:113 #: js/ui/components/polkitAgent.js:144 js/ui/endSessionDialog.js:437 #: js/ui/extensionDownloader.js:276 js/ui/shellMountOperation.js:382 #: js/ui/shellMountOperation.js:392 msgid "Cancel" msgstr "Avbryt" #: js/gdm/authPrompt.js:317 js/ui/components/networkAgent.js:213 #: js/ui/components/networkAgent.js:233 js/ui/components/networkAgent.js:265 #: js/ui/components/networkAgent.js:298 js/ui/components/networkAgent.js:337 #: js/ui/components/networkAgent.js:350 js/ui/components/polkitAgent.js:286 #: js/ui/shellMountOperation.js:332 msgid "Password" msgstr "Lösenord" #: js/gdm/loginDialog.js:326 msgid "Choose Session" msgstr "Välj session" #. Translators: is running for #: js/gdm/loginDialog.js:423 #, javascript-format msgid "" "Remote login is not possible because a remote session is already running for " "%s. To login remotely, you must log out from the remote session or force " "stop it." msgstr "" "Fjärrinloggning är inte möjlig eftersom en fjärrsession redan körs för %s. " "För att använda fjärrinloggning måste du logga ut från fjärrsessionen eller " "tvinga den att avslutas." #. Translators: is running for #: js/gdm/loginDialog.js:426 #, javascript-format msgid "" "Login is not possible because a remote session is already running for %s. To " "login, you must log out from the remote session or force stop it." msgstr "" "Inloggning är inte möjlig eftersom en fjärrsession redan körs för %s. För " "att logga in måste du logga ut från fjärrsessionen eller tvinga den att " "avslutas." #. Translators: is running for #: js/gdm/loginDialog.js:429 #, javascript-format msgid "" "Remote login is not possible because a local session is already running for " "%s. To login remotely, you must log out from the local session or force stop " "it." msgstr "" "Fjärrinloggning är inte möjlig eftersom en lokal session redan körs för %s. " "För att använda fjärrinloggning måste du logga ut från den lokala sessionen " "eller tvinga den att avslutas." #. Translators: is running for #: js/gdm/loginDialog.js:432 #, javascript-format msgid "" "Login is not possible because a session is already running for %s. To login, " "you must log out from the session or force stop it." msgstr "" "Inloggning är inte möjlig eftersom en session redan körs för %s. För att " "logga in måste du logga ut från sessionen eller tvinga den att avslutas." #: js/gdm/loginDialog.js:441 msgid "Session Already Running" msgstr "Session körs redan" #: js/gdm/loginDialog.js:453 msgid "" "Force stopping will quit any running apps and processes, and could result in " "data loss" msgstr "" "Tvångsavslut avslutar alla program och processer som körs och kan resultera " "i dataförlust" #: js/gdm/loginDialog.js:473 msgid "Force Stop" msgstr "Tvinga avslut" #: js/gdm/loginDialog.js:541 msgid "Not listed?" msgstr "Inte listad?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:1009 #, javascript-format msgid "(e.g., user or %s)" msgstr "(till exempel användare eller %s)" #: js/gdm/loginDialog.js:1014 js/ui/components/networkAgent.js:257 #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:326 msgid "Username" msgstr "Användarnamn" #: js/gdm/loginDialog.js:1080 msgid "Login Attempt Timed Out" msgstr "Tidsgräns överskreds för inloggningsförsök" #: js/gdm/loginDialog.js:1081 msgid "Login took too long, please try again" msgstr "Inloggningen tog för lång tid, försök igen" #: js/gdm/loginDialog.js:1426 msgid "Login Window" msgstr "Inloggningsfönster" #: js/gdm/util.js:496 msgid "Authentication error" msgstr "Autentiseringsfel" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:727 msgid "(or swipe finger across reader)" msgstr "(eller dra fingret längs läsaren)" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:732 msgid "(or place finger on reader)" msgstr "(eller placera fingret på läsaren)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:91 msgctxt "search-result" msgid "Power Off" msgstr "Stäng av" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:94 msgid "power off;poweroff;shutdown;halt;stop" msgstr "stäng av;stäng ner;stäng;halt;stopp" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:99 msgctxt "search-result" msgid "Restart" msgstr "Starta om" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:102 msgid "reboot;restart;" msgstr "starta om;omstart;" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:107 msgctxt "search-result" msgid "Lock Screen" msgstr "Lås skärm" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:110 msgid "lock screen" msgstr "lås skärm" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:115 msgctxt "search-result" msgid "Log Out" msgstr "Logga ut" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:118 msgid "logout;log out;sign off" msgstr "utloggning;logga ut" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:123 msgctxt "search-result" msgid "Suspend" msgstr "Vänteläge" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:126 msgid "suspend;sleep" msgstr "vänteläge;vila" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:131 msgctxt "search-result" msgid "Switch User" msgstr "Växla användare" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:134 msgid "switch user" msgstr "växla användare" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:141 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "" "lås orientering;lås riktning;lås upp orientering;lås upp riktning;skärm;" "rotation" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:146 msgctxt "search-result" msgid "Take a Screenshot" msgstr "Ta en skärmbild" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:149 msgid "screenshot;screencast;snip;capture;record" msgstr "skärmbild;skärmdump;skärminspelning;klipp;fångst;inspelning" #: js/misc/systemActions.js:249 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "Lås upp skärmrotation" #: js/misc/systemActions.js:250 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "Lås skärmrotation" #: js/misc/util.js:130 msgid "Command not found" msgstr "Kommandot hittades inte" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:170 msgid "Could not parse command:" msgstr "Kunde inte tolka kommando:" #: js/misc/util.js:178 #, javascript-format msgid "Execution of “%s” failed:" msgstr "Körning av ”%s” misslyckades:" #: js/misc/dateUtils.js:69 msgid "Just now" msgstr "Just nu" #: js/misc/dateUtils.js:72 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d minut sedan" msgstr[1] "%d minuter sedan" #: js/misc/dateUtils.js:79 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d timme sedan" msgstr[1] "%d timmar sedan" #: js/misc/dateUtils.js:85 js/ui/dateMenu.js:183 msgid "Yesterday" msgstr "I går" #: js/misc/dateUtils.js:88 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d dag sedan" msgstr[1] "%d dagar sedan" #: js/misc/dateUtils.js:95 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d vecka sedan" msgstr[1] "%d veckor sedan" #: js/misc/dateUtils.js:102 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%d månad sedan" msgstr[1] "%d månader sedan" #: js/misc/dateUtils.js:108 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "%d år sedan" msgstr[1] "%d år sedan" #. Translators: Time in 24h format #: js/misc/dateUtils.js:155 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/dateUtils.js:161 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "I går, %H∶%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/dateUtils.js:167 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/dateUtils.js:173 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%-d %B, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/dateUtils.js:179 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%-d %B %Y, %H∶%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/dateUtils.js:184 msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/dateUtils.js:190 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "I går, %l∶%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/dateUtils.js:196 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %I∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/dateUtils.js:202 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%-d %B, %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/dateUtils.js:208 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%-d %B %Y, %l∶%M %p" #: js/portalHelper/main.js:98 msgid "Your connection seems to be secure" msgstr "Din anslutning verkar vara säker" #: js/portalHelper/main.js:104 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "Din anslutning till denna surfzonsinloggning är inte säker. Lösenord eller " "annan information som du matar in på denna sida kan visas av andra personer " "i närheten." #: js/portalHelper/main.js:115 msgid "Hotspot Login" msgstr "Surfzonsinloggning" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:51 js/ui/inhibitShortcutsDialog.js:92 msgid "Deny" msgstr "Neka" #: js/ui/accessDialog.js:52 js/ui/inhibitShortcutsDialog.js:101 msgid "Allow" msgstr "Tillåt" #: js/ui/appDisplay.js:1769 msgid "Unnamed Folder" msgstr "Namnlös mapp" #: js/ui/appFavorites.js:163 #, javascript-format msgid "%s has been pinned to the dash." msgstr "%s har fästs på snabbstartspanelen." #: js/ui/appFavorites.js:194 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "%s har lösgjorts från snabbstartspanelen." #: js/ui/appFavorites.js:208 js/ui/main.js:281 msgid "Undo" msgstr "Ångra" #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:49 msgid "Open Windows" msgstr "Öppna fönster" #: js/ui/appMenu.js:57 msgid "New Window" msgstr "Nytt fönster" #: js/ui/appMenu.js:84 msgid "App Details" msgstr "Programdetaljer" #: js/ui/appMenu.js:100 msgid "Quit" msgstr "Avsluta" #: js/ui/appMenu.js:160 js/ui/dash.js:248 msgid "Unpin" msgstr "Lösgör" #: js/ui/appMenu.js:161 msgid "Pin to Dash" msgstr "Fäst till snabbstartspanel" #: js/ui/appMenu.js:178 msgid "Launch using Integrated Graphics Card" msgstr "Kör med integrerat grafikkort" #: js/ui/appMenu.js:179 msgid "Launch using Discrete Graphics Card" msgstr "Kör med diskret grafikkort" #: js/ui/audioDeviceSelection.js:46 msgid "Select Audio Device" msgstr "Välj ljudenhet" #: js/ui/audioDeviceSelection.js:61 js/ui/status/volume.js:81 msgid "Sound Settings" msgstr "Ljudinställningar" #: js/ui/audioDeviceSelection.js:74 msgid "Headphones" msgstr "Hörlurar" #: js/ui/audioDeviceSelection.js:76 msgid "Headset" msgstr "Mikrofonlur" #: js/ui/audioDeviceSelection.js:78 js/ui/status/volume.js:356 msgid "Microphone" msgstr "Mikrofon" #: js/ui/backgroundMenu.js:13 msgid "Change Background…" msgstr "Ändra bakgrund…" #: js/ui/backgroundMenu.js:15 msgid "Display Settings" msgstr "Skärminställningar" #: js/ui/backgroundMenu.js:16 msgid "Settings" msgstr "Inställningar" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:37 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:63 msgctxt "grid sunday" msgid "S" msgstr "S" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:65 msgctxt "grid monday" msgid "M" msgstr "M" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:67 msgctxt "grid tuesday" msgid "T" msgstr "T" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:69 msgctxt "grid wednesday" msgid "W" msgstr "O" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:71 msgctxt "grid thursday" msgid "T" msgstr "T" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:73 msgctxt "grid friday" msgid "F" msgstr "F" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:75 msgctxt "grid saturday" msgid "S" msgstr "L" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:426 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:436 msgid "%OB %Y" msgstr "%OB %Y" #: js/ui/calendar.js:498 msgid "Previous month" msgstr "Föregående månad" #: js/ui/calendar.js:516 msgid "Next month" msgstr "Nästa månad" #: js/ui/calendar.js:667 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:726 msgid "Week %V" msgstr "Vecka %V" #: js/ui/calendar.js:918 msgid "No Notifications" msgstr "Inga aviseringar" #: js/ui/calendar.js:974 msgid "Do Not Disturb" msgstr "Stör ej" #: js/ui/calendar.js:995 msgid "Clear" msgstr "Töm" #: js/ui/calendar.js:999 msgctxt "action" msgid "Clear all notifications" msgstr "Rensa alla aviseringar" #. Translators: %s is an application name #: js/ui/closeDialog.js:42 #, javascript-format msgid "“%s” Is Not Responding" msgstr "”%s” svarar inte" #: js/ui/closeDialog.js:43 msgid "" "You may choose to wait a short while for it to continue or force the app to " "quit entirely" msgstr "" "Du kan välja att vänta en kort stund på att det ska fortsätta eller tvinga " "programmet att helt avslutas" #: js/ui/closeDialog.js:71 msgid "Force Quit" msgstr "Tvinga avslut" #: js/ui/closeDialog.js:76 msgid "Wait" msgstr "Vänta" #: js/ui/components/automountManager.js:82 msgid "External drive connected" msgstr "Extern disk ansluten" #: js/ui/components/automountManager.js:94 msgid "External drive disconnected" msgstr "Extern disk frånkopplad" #: js/ui/components/automountManager.js:208 msgid "Unable to unlock volume" msgstr "Kunde inte låsa upp volym" #: js/ui/components/automountManager.js:209 msgid "The installed udisks version does not support the PIM setting" msgstr "Den installerade udisks-versionen stöder inte PIM-inställningen" #. Translators: %s is the name of a partition on a external drive #: js/ui/components/autorunManager.js:189 #, javascript-format msgid "“%s” connected" msgstr "”%s” ansluten" #: js/ui/components/autorunManager.js:190 msgid "Disk can now be used" msgstr "Disken kan nu användas" #: js/ui/components/autorunManager.js:202 #, javascript-format msgid "Open with %s" msgstr "Öppna med %s" #: js/ui/components/networkAgent.js:95 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router" msgstr "" "Alternativt kan du ansluta genom att trycka på ”WPS”-knappen på din router" #: js/ui/components/networkAgent.js:107 js/ui/status/bluetooth.js:245 #: js/ui/status/network.js:360 js/ui/status/network.js:444 msgid "Connect" msgstr "Anslut" #: js/ui/components/networkAgent.js:222 msgid "Key" msgstr "Nyckel" #: js/ui/components/networkAgent.js:273 js/ui/components/networkAgent.js:312 msgid "Private key password" msgstr "Lösenord för privat nyckel" #: js/ui/components/networkAgent.js:306 msgid "Identity" msgstr "Identitet" #: js/ui/components/networkAgent.js:332 msgid "Service" msgstr "Tjänst" #: js/ui/components/networkAgent.js:370 js/ui/components/networkAgent.js:406 #: js/ui/components/networkAgent.js:743 js/ui/components/networkAgent.js:764 msgid "Authentication required" msgstr "Autentisering krävs" #: js/ui/components/networkAgent.js:371 js/ui/components/networkAgent.js:744 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network “%s”" msgstr "" "Lösenord eller krypteringsnycklar krävs för att komma åt det trådlösa " "nätverket ”%s”" #: js/ui/components/networkAgent.js:375 js/ui/components/networkAgent.js:748 msgid "Wired 802.1X authentication" msgstr "Trådbunden 802.1X-autentisering" #: js/ui/components/networkAgent.js:378 msgid "Network name" msgstr "Nätverksnamn" #: js/ui/components/networkAgent.js:386 js/ui/components/networkAgent.js:752 msgid "DSL authentication" msgstr "DSL-autentisering" #: js/ui/components/networkAgent.js:393 js/ui/components/networkAgent.js:757 msgid "PIN code required" msgstr "PIN-kod krävs" #: js/ui/components/networkAgent.js:394 js/ui/components/networkAgent.js:758 msgid "PIN code is needed for the mobile broadband device" msgstr "PIN-koden krävs för den mobila bredbandsenheten" #: js/ui/components/networkAgent.js:396 msgid "PIN" msgstr "PIN" #: js/ui/components/networkAgent.js:407 js/ui/components/networkAgent.js:749 #: js/ui/components/networkAgent.js:753 js/ui/components/networkAgent.js:765 #: js/ui/components/networkAgent.js:769 #, javascript-format msgid "A password is required to connect to “%s”" msgstr "Ett lösenord krävs för att ansluta till ”%s”" #: js/ui/components/networkAgent.js:768 msgid "VPN password" msgstr "VPN-lösenord" #: js/ui/components/polkitAgent.js:44 msgid "Authentication Required" msgstr "Autentisering krävs" #: js/ui/components/polkitAgent.js:84 msgid "Administrator" msgstr "Administratör" #: js/ui/components/polkitAgent.js:149 msgid "Authenticate" msgstr "Autentisera" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:263 js/ui/shellMountOperation.js:415 msgid "Sorry, that didn’t work. Please try again." msgstr "Tyvärr, det fungerade inte. Försök igen." #: js/ui/ctrlAltTab.js:23 js/ui/overviewControls.js:404 msgid "Windows" msgstr "Fönster" #: js/ui/dash.js:204 js/ui/dash.js:250 msgid "Show Apps" msgstr "Visa program" #. Translators: this is the name of the dock/favorites area on #. the bottom of the overview #: js/ui/dash.js:408 msgid "Dash" msgstr "Snabbstartspanel" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:99 msgid "%B %-d %Y" msgstr "%-d %B %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:106 msgid "%A %B %e %Y" msgstr "%A %e %B %Y" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:172 msgctxt "calendar heading" msgid "%B %-d" msgstr "%-d %B" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:175 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%-d %B %Y" #: js/ui/dateMenu.js:181 msgid "Today" msgstr "I dag" #: js/ui/dateMenu.js:185 msgid "Tomorrow" msgstr "I morgon" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:216 msgctxt "event list time" msgid "All Day" msgstr "Hela dagen" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:238 msgid "%m/%d" msgstr "%-d/%-m" #: js/ui/dateMenu.js:289 msgid "No Events" msgstr "Inga händelser" #: js/ui/dateMenu.js:411 msgid "Add World Clocks…" msgstr "Lägg till världsklockor…" #: js/ui/dateMenu.js:412 msgid "World Clocks" msgstr "Världsklockor" #: js/ui/dateMenu.js:702 msgid "Loading…" msgstr "Läser in…" #: js/ui/dateMenu.js:712 msgid "Go Online for Weather Information" msgstr "Anslut till nätet för väderinformation" #: js/ui/dateMenu.js:714 msgid "Weather Information Unavailable" msgstr "Väderinformation är inte tillgänglig" #: js/ui/dateMenu.js:724 msgid "Weather" msgstr "Väder" #: js/ui/dateMenu.js:726 msgid "Select Weather Location…" msgstr "Välj väderplats…" #: js/ui/endSessionDialog.js:47 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "Logga ut %s" #: js/ui/endSessionDialog.js:48 msgctxt "title" msgid "Log Out" msgstr "Logga ut" #: js/ui/endSessionDialog.js:51 #, javascript-format msgid "%s will be logged out automatically in %d second" msgid_plural "%s will be logged out automatically in %d seconds" msgstr[0] "%s kommer att loggas ut automatiskt om %d sekund" msgstr[1] "%s kommer att loggas ut automatiskt om %d sekunder" #: js/ui/endSessionDialog.js:57 #, javascript-format msgid "You will be logged out automatically in %d second" msgid_plural "You will be logged out automatically in %d seconds" msgstr[0] "Du kommer att loggas ut automatiskt om %d sekund" msgstr[1] "Du kommer att loggas ut automatiskt om %d sekunder" #: js/ui/endSessionDialog.js:64 msgctxt "button" msgid "Log Out" msgstr "Logga ut" #: js/ui/endSessionDialog.js:70 js/ui/status/system.js:174 msgctxt "title" msgid "Power Off" msgstr "Stäng av" #: js/ui/endSessionDialog.js:71 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Installera uppdateringar & Stäng av" #: js/ui/endSessionDialog.js:74 #, javascript-format msgid "The system will power off automatically in %d second" msgid_plural "The system will power off automatically in %d seconds" msgstr[0] "Systemet kommer att stängas av automatiskt om %d sekund" msgstr[1] "Systemet kommer att stängas av automatiskt om %d sekunder" #: js/ui/endSessionDialog.js:78 js/ui/endSessionDialog.js:97 msgctxt "checkbox" msgid "Install pending software updates" msgstr "Installera väntande programvaruuppdateringar" #: js/ui/endSessionDialog.js:82 msgctxt "button" msgid "Power Off" msgstr "Stäng av" #: js/ui/endSessionDialog.js:89 msgctxt "title" msgid "Restart" msgstr "Starta om" #: js/ui/endSessionDialog.js:90 msgctxt "title" msgid "Install Updates & Restart" msgstr "Installera uppdateringar & starta om" #: js/ui/endSessionDialog.js:93 #, javascript-format msgid "The system will restart automatically in %d second" msgid_plural "The system will restart automatically in %d seconds" msgstr[0] "Systemet kommer att startas om automatiskt om %d sekund" msgstr[1] "Systemet kommer att startas om automatiskt om %d sekunder" #: js/ui/endSessionDialog.js:101 msgctxt "button" msgid "Restart" msgstr "Starta om" #: js/ui/endSessionDialog.js:109 msgctxt "title" msgid "Restart & Install Updates" msgstr "Starta om och installera uppdateringar" #: js/ui/endSessionDialog.js:112 #, javascript-format msgid "The system will automatically restart and install updates in %d second" msgid_plural "" "The system will automatically restart and install updates in %d seconds" msgstr[0] "" "Systemet kommer att startas om automatiskt och installera uppdateringar om " "%d sekund" msgstr[1] "" "Systemet kommer att startas om automatiskt och installera uppdateringar om " "%d sekunder" #: js/ui/endSessionDialog.js:119 js/ui/endSessionDialog.js:140 msgctxt "button" msgid "Restart & Install" msgstr "Starta om & installera" #: js/ui/endSessionDialog.js:121 msgctxt "button" msgid "Install & Power Off" msgstr "Installera & stäng av" #: js/ui/endSessionDialog.js:122 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Stäng av efter att uppdateringarna har installerats" #: js/ui/endSessionDialog.js:129 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "Starta om och installera uppgradering" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:134 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "%s %s kommer att installeras efter omstart. En uppgraderingsinstallation kan " "ta lång tid: försäkra dig om att du gjort säkerhetskopior och att datorn är " "ikopplad." #: js/ui/endSessionDialog.js:283 msgid "Low battery power: please plug in before installing updates" msgstr "" "Lågt batteri: anslut till en fast strömkälla innan uppdateringar installeras" #: js/ui/endSessionDialog.js:292 msgid "Some applications are busy or have unsaved work" msgstr "Några program är upptagna eller innehåller icke sparat arbete" #: js/ui/endSessionDialog.js:297 msgid "Other users are logged in" msgstr "Andra användare är inloggade" #: js/ui/endSessionDialog.js:467 msgctxt "button" msgid "Boot Options" msgstr "Uppstartsalternativ" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:672 #, javascript-format msgid "%s (remote)" msgstr "%s (fjärransluten)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:675 #, javascript-format msgid "%s (console)" msgstr "%s (konsol)" #: js/ui/extensionDownloader.js:280 msgid "Install" msgstr "Installera" #: js/ui/extensionDownloader.js:286 msgid "Install Extension" msgstr "Installera tillägg" #: js/ui/extensionDownloader.js:287 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "Hämta och installera ”%s” från extensions.gnome.org?" #: js/ui/extensionSystem.js:352 msgid "Extension Updates Available" msgstr "Uppdateringar för tillägg finns tillgängliga" #: js/ui/extensionSystem.js:353 msgid "Extension updates are ready to be installed" msgstr "Uppdateringar för tillägg är redo att installeras" #: js/ui/inhibitShortcutsDialog.js:70 msgid "Allow inhibiting shortcuts" msgstr "Tillåt förhindrande av kortkommandon" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:73 #, javascript-format msgid "The app %s wants to inhibit shortcuts" msgstr "Programmet %s vill förhindra kortkommandon" #: js/ui/inhibitShortcutsDialog.js:74 msgid "An app wants to inhibit shortcuts" msgstr "Ett program vill förhindra kortkommandon" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:81 #, javascript-format msgid "You can restore shortcuts by pressing %s" msgstr "Du kan återställa kortkommandon genom att trycka %s" #: js/ui/kbdA11yDialog.js:34 msgid "Slow Keys Turned On" msgstr "Tröga tangenter aktiverade" #: js/ui/kbdA11yDialog.js:35 msgid "Slow Keys Turned Off" msgstr "Tröga tangenter inaktiverade" #: js/ui/kbdA11yDialog.js:36 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "Du höll precis ned skifttangenten under 8 sekunder. Detta är kortkommandot " "för funktionen tröga tangenter, som påverkar hur ditt tangentbord fungerar." #: js/ui/kbdA11yDialog.js:42 msgid "Sticky Keys Turned On" msgstr "Klistriga tangenter aktiverade" #: js/ui/kbdA11yDialog.js:43 msgid "Sticky Keys Turned Off" msgstr "Klistriga tangenter inaktiverade" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "Du tryckte precis ned skifttangenten 5 gånger i följd. Detta är " "kortkommandot för funktionen klistriga tangenter, som påverkar hur ditt " "tangentbord fungerar." #: js/ui/kbdA11yDialog.js:47 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" "Du tryckte precis ned två tangenter samtidigt, eller tryckte ned " "skifttangenten 5 gånger i följd. Detta stänger av funktionen klistriga " "tangenter vilket påverkar hur ditt tangentbord fungerar." #: js/ui/kbdA11yDialog.js:57 msgid "Leave On" msgstr "Lämna påslagen" #: js/ui/kbdA11yDialog.js:57 msgid "Turn On" msgstr "Slå på" #: js/ui/kbdA11yDialog.js:67 js/ui/status/network.js:455 msgid "Turn Off" msgstr "Stäng av" #: js/ui/kbdA11yDialog.js:67 msgid "Leave Off" msgstr "Lämna avstängd" #: js/ui/keyboard.js:180 js/ui/status/keyboard.js:897 msgid "Keyboard Settings" msgstr "Tangentbordsinställningar" #: js/ui/lookingGlass.js:727 msgid "No extensions installed" msgstr "Inga tillägg installerade" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:788 #, javascript-format msgid "%s has not emitted any errors" msgstr "%s har inte skickat ut några fel" #: js/ui/lookingGlass.js:794 msgid "Hide Errors" msgstr "Dölj fel" #: js/ui/lookingGlass.js:798 js/ui/lookingGlass.js:875 msgid "Show Errors" msgstr "Visa fel" #: js/ui/lookingGlass.js:807 msgid "Active" msgstr "Aktivt" #: js/ui/lookingGlass.js:810 msgid "Inactive" msgstr "Inaktivt" #: js/ui/lookingGlass.js:812 msgid "Error" msgstr "Fel" #: js/ui/lookingGlass.js:814 msgid "Out of date" msgstr "Utanför datumintervallet" #: js/ui/lookingGlass.js:816 msgid "Downloading" msgstr "Hämtar" #: js/ui/lookingGlass.js:818 msgid "Deactivating" msgstr "Inaktiverar" #: js/ui/lookingGlass.js:820 msgid "Activating" msgstr "Aktiverar" #: js/ui/lookingGlass.js:853 msgid "View Source" msgstr "Visa källa" #: js/ui/lookingGlass.js:864 msgid "Web Page" msgstr "Webbsida" #: js/ui/main.js:277 msgid "System was put in unsafe mode" msgstr "Systemet försattes i osäkert läge" #: js/ui/main.js:278 msgid "Apps now have unrestricted access" msgstr "Program har nu obegränsad åtkomst" #: js/ui/main.js:338 msgid "Logged in as a privileged user" msgstr "Inloggad som en privilegierad användare" #: js/ui/main.js:339 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" "Att köra en session som en privilegierad användare bör undvikas av " "säkerhetsskäl. Om möjligt bör du logga in som en normal användare." #: js/ui/main.js:387 msgid "Screen Lock disabled" msgstr "Skärmlås inaktiverat" #: js/ui/main.js:388 msgid "Screen Locking requires the GNOME display manager" msgstr "Skärmlås kräver GNOMEs displayhanterare" #. Translators: this is the string displayed in the header when a message #. source doesn't have a name #: js/ui/messageList.js:374 msgid "Unknown App" msgstr "Okänt program" #: js/ui/messageTray.js:326 js/ui/messageTray.js:328 msgid "Notification sound" msgstr "Aviseringsljud" #: js/ui/mpris.js:198 msgid "Unknown artist" msgstr "Okänd artist" #: js/ui/mpris.js:208 msgid "Unknown title" msgstr "Okänd titel" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:328 msgid "Type to search" msgstr "Skriv för att söka" #: js/ui/overviewControls.js:392 msgid "Apps" msgstr "Program" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:33 msgid "Overview" msgstr "Översikt" #: js/ui/padOsd.js:98 msgid "New shortcut…" msgstr "Nytt kortkommando…" #: js/ui/padOsd.js:151 msgid "App defined" msgstr "Programdefinierad" #: js/ui/padOsd.js:152 msgid "Show on-screen help" msgstr "Visa hjälp på skärmen" #: js/ui/padOsd.js:153 msgid "Switch monitor" msgstr "Växla skärm" #: js/ui/padOsd.js:154 msgid "Assign keystroke" msgstr "Tilldela tangenttryckning" #: js/ui/padOsd.js:223 msgid "Done" msgstr "Färdig" #: js/ui/padOsd.js:726 msgid "Edit…" msgstr "Redigera…" #: js/ui/padOsd.js:773 msgid "None" msgstr "Ingen" #: js/ui/padOsd.js:844 msgid "Press a button to configure" msgstr "Tryck på en knapp för att konfigurera" #: js/ui/padOsd.js:845 msgid "Press Esc to exit" msgstr "Tryck Esc för att avsluta" #: js/ui/padOsd.js:848 msgid "Press any key to exit" msgstr "Tryck på valfri tangent för att avsluta" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:423 msgid "Activities" msgstr "Aktiviteter" #: js/ui/panel.js:504 msgctxt "System menu in the top bar" msgid "System" msgstr "System" #: js/ui/panel.js:678 msgid "Top Bar" msgstr "Systemrad" #: js/ui/quickSettings.js:188 msgid "Open menu" msgstr "Öppna meny" #: js/ui/runDialog.js:61 msgid "Run a Command" msgstr "Kör ett kommando" #: js/ui/runDialog.js:76 msgid "Press ESC to close" msgstr "Tryck Esc för att stänga" #: js/ui/runDialog.js:241 msgid "Restart is not available on Wayland" msgstr "Omstart är inte tillgänglig i Wayland" #: js/ui/runDialog.js:246 msgid "Restarting…" msgstr "Startar om…" #: js/ui/screenShield.js:233 msgid "GNOME needs to lock the screen" msgstr "GNOME behöver låsa skärmen" #: js/ui/screenShield.js:274 js/ui/screenShield.js:667 msgid "Unable to lock" msgstr "Kunde inte låsa" #: js/ui/screenShield.js:275 js/ui/screenShield.js:668 msgid "Lock was blocked by an app" msgstr "Låsning hindrades av ett program" #: js/ui/screenshot.js:1252 msgid "Selection" msgstr "Markering" #: js/ui/screenshot.js:1262 msgid "Area Selection" msgstr "Områdesmarkering" #: js/ui/screenshot.js:1267 msgid "Screen" msgstr "Skärm" #: js/ui/screenshot.js:1277 msgid "Screen Selection" msgstr "Skärmval" #: js/ui/screenshot.js:1282 msgid "Window" msgstr "Fönster" #: js/ui/screenshot.js:1292 msgid "Window Selection" msgstr "Fönsterval" #. Translators: entry in the window right click menu. #: js/ui/screenshot.js:1317 js/ui/status/system.js:111 js/ui/windowMenu.js:28 msgid "Take Screenshot" msgstr "Ta skärmbild" #: js/ui/screenshot.js:1333 msgid "Record Screen" msgstr "Spela in skärmen" #. Translators: since this string refers to an action, #. it needs to be phrased as a verb. #: js/ui/screenshot.js:1350 msgid "Capture" msgstr "Fånga" #: js/ui/screenshot.js:1372 msgid "Show Pointer" msgstr "Visa pekare" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1996 msgid "Screencasts" msgstr "Skärminspelningar" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast From 07-17-2013 10:00:46 PM" #: js/ui/screenshot.js:2001 #, no-c-format msgid "Screencast From %d %t" msgstr "Skärminspelning från %d %t" #. Translators: notification title. #: js/ui/screenshot.js:2047 msgid "Screencast recorded" msgstr "Skärminspelning inspelad" #. Translators: notification title. #: js/ui/screenshot.js:2060 msgid "Screencast failed to start" msgstr "Skärminspelning misslyckades med att starta" #. Translators: notification title. #: js/ui/screenshot.js:2066 msgid "Screencast ended: Out of disk space" msgstr "Skärminspelning avslutades: slut på diskutrymme" #. We can encourage user to try again on service crashes since the #. recorder will auto-blocklist the pipeline that crashed. #. Translators: notification title. #: js/ui/screenshot.js:2072 msgid "Screencast ended unexpectedly, please try again" msgstr "Skärminspelning avslutades oväntat, försök igen" #. Translators: notification title. #: js/ui/screenshot.js:2075 msgid "Screencast ended unexpectedly" msgstr "Skärminspelning avslutades oväntat" #. Translators: notification source name. #: js/ui/screenshot.js:2085 js/ui/screenshot.js:2327 msgid "Screenshot" msgstr "Skärmbild" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:2092 msgid "Click here to view the video." msgstr "Klicka här för att se videon." #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:2100 js/ui/screenshot.js:2343 msgid "Show in Files" msgstr "Visa i Filer" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2287 #, javascript-format msgid "Screenshot From %s" msgstr "Skärmbild från %s" #. Translators: notification title. #: js/ui/screenshot.js:2333 msgid "Screenshot captured" msgstr "Skärmbild tagen" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2335 msgid "You can paste the image from the clipboard." msgstr "Du kan klistra in bilden från urklipp." #: js/ui/screenshot.js:2391 js/ui/screenshot.js:2555 msgid "Screenshot taken" msgstr "Skärmbild tagen" #: js/ui/search.js:829 msgid "Searching…" msgstr "Söker…" #: js/ui/search.js:831 msgid "No results" msgstr "Inga sökträffar" #: js/ui/search.js:962 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "%d till" msgstr[1] "%d till" #: js/ui/searchController.js:87 #: subprojects/extensions-app/data/ui/extensions-window.ui:73 msgid "Search" msgstr "Sök" #: js/ui/shellEntry.js:21 msgid "Copy" msgstr "Kopiera" #: js/ui/shellEntry.js:26 msgid "Paste" msgstr "Klistra in" #: js/ui/shellEntry.js:78 msgid "Show Text" msgstr "Visa text" #: js/ui/shellEntry.js:80 msgid "Hide Text" msgstr "Dölj text" #: js/ui/shellEntry.js:174 msgid "Caps lock is on" msgstr "Caps lock är på" #: js/ui/shellMountOperation.js:286 msgid "Hidden Volume" msgstr "Dold volym" #: js/ui/shellMountOperation.js:289 msgid "Windows System Volume" msgstr "Windows-systemvolym" #: js/ui/shellMountOperation.js:292 msgid "Uses Keyfiles" msgstr "Använder nyckelfiler" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:300 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead" msgstr "" "För att låsa upp en volym som använder nyckelfiler, använd verktyget %s i stället" #: js/ui/shellMountOperation.js:304 msgid "" "You need an external utility like Disks to unlock a volume that uses " "keyfiles" msgstr "" "Du behöver ett externt verktyg som Diskar för att låsa upp en enhet " "som använder nyckelfiler" #: js/ui/shellMountOperation.js:312 msgid "PIM Number" msgstr "PIM-nummer" #: js/ui/shellMountOperation.js:371 msgid "Remember Password" msgstr "Kom ihåg lösenord" #: js/ui/shellMountOperation.js:386 msgid "Unlock" msgstr "Lås upp" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:400 #, javascript-format msgid "Open %s" msgstr "Öppna %s" #: js/ui/shellMountOperation.js:436 msgid "The PIM must be a number or empty" msgstr "PIM måste vara ett tal eller tomt" #: js/ui/status/accessibility.js:34 msgid "Accessibility" msgstr "Hjälpmedel" #: js/ui/status/accessibility.js:44 msgid "High Contrast" msgstr "Hög kontrast" #: js/ui/status/accessibility.js:47 msgid "Zoom" msgstr "Zooma" #: js/ui/status/accessibility.js:54 msgid "Screen Reader" msgstr "Skärmläsare" #: js/ui/status/accessibility.js:58 msgid "Screen Keyboard" msgstr "Skärmtangentbord" #: js/ui/status/accessibility.js:62 msgid "Visual Alerts" msgstr "Visuella larm" #: js/ui/status/accessibility.js:66 msgid "Sticky Keys" msgstr "Klistriga tangenter" #: js/ui/status/accessibility.js:70 msgid "Slow Keys" msgstr "Tröga tangenter" #: js/ui/status/accessibility.js:74 msgid "Bounce Keys" msgstr "Studsande tangenter" #: js/ui/status/accessibility.js:78 msgid "Mouse Keys" msgstr "Mustangenter" #: js/ui/status/accessibility.js:83 msgid "Accessibility Settings" msgstr "Hjälpmedelsinställningar" #: js/ui/status/accessibility.js:140 msgid "Large Text" msgstr "Stor text" #: js/ui/status/autoRotate.js:14 msgid "Auto Rotate" msgstr "Automatisk rotation" #: js/ui/status/backgroundApps.js:156 msgctxt "title" msgid "Background Apps" msgstr "Bakgrundsprogram" #: js/ui/status/backgroundApps.js:171 msgid "Apps known to be running without a window" msgstr "Program kända att köras utan ett fönster" #: js/ui/status/backgroundApps.js:182 msgid "App Settings" msgstr "Programinställningar" #: js/ui/status/backgroundApps.js:239 msgid "No Background Apps" msgstr "Inga program i bakgrunden" #: js/ui/status/backgroundApps.js:241 #, javascript-format msgid "%d Background App" msgid_plural "%d Background Apps" msgstr[0] "%d program i bakgrunden" msgstr[1] "%d program i bakgrunden" #: js/ui/status/backlight.js:39 msgid "Keyboard Brightness" msgstr "Tangentbordsbelysning" #: js/ui/status/backlight.js:79 msgid "Off" msgstr "Frånkopplad" #: js/ui/status/backlight.js:80 msgid "Low" msgstr "Låg" #: js/ui/status/backlight.js:81 msgid "High" msgstr "Hög" #: js/ui/status/backlight.js:147 js/ui/status/keyboard.js:879 msgid "Keyboard" msgstr "Tangentbord" #: js/ui/status/bluetooth.js:245 js/ui/status/network.js:360 msgid "Disconnect" msgstr "Koppla från" #: js/ui/status/bluetooth.js:262 js/ui/status/bluetooth.js:264 msgid "Bluetooth" msgstr "Bluetooth" #: js/ui/status/bluetooth.js:287 js/ui/status/network.js:1900 msgid "Bluetooth Settings" msgstr "Inställningar för Bluetooth" #: js/ui/status/bluetooth.js:334 msgid "No available or connected devices" msgstr "Inga tillgängliga eller anslutna enheter" #: js/ui/status/bluetooth.js:335 msgid "Turn on Bluetooth to connect to devices" msgstr "Slå på Bluetooth för att ansluta till enheter" #. Translators: This is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:389 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d ansluten" msgstr[1] "%d anslutna" #: js/ui/status/brightness.js:32 msgid "Brightness" msgstr "Ljusstyrka" #: js/ui/status/darkMode.js:12 msgid "Dark Style" msgstr "Mörk stil" #: js/ui/status/dwellClick.js:15 msgid "Single Click" msgstr "Enkelklick" #: js/ui/status/dwellClick.js:20 msgid "Double Click" msgstr "Dubbelklick" #: js/ui/status/dwellClick.js:25 msgid "Drag" msgstr "Dragning" #: js/ui/status/dwellClick.js:30 msgid "Secondary Click" msgstr "Sekundärklick" #: js/ui/status/dwellClick.js:39 msgid "Dwell Click" msgstr "Uppehållsklick" #: js/ui/status/keyboard.js:896 msgid "Show Keyboard Layout" msgstr "Visa tangentbordslayout" #: js/ui/status/location.js:337 msgid "Allow location access" msgstr "Tillåt platsåtkomst" #. Translators: %s is an application name #: js/ui/status/location.js:339 #, javascript-format msgid "The app %s wants to access your location" msgstr "Programmet %s vill ha tillgång till din plats" #: js/ui/status/location.js:349 msgid "Location access can be changed at any time from the privacy settings" msgstr "Platsåtkomst kan ändras när som helst från sekretessinställningarna" #: js/ui/status/location.js:357 msgid "Deny Access" msgstr "Neka åtkomst" #: js/ui/status/location.js:362 msgid "Grant Access" msgstr "Bevilja åtkomst" #: js/ui/status/network.js:62 msgid "" msgstr "" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:354 #, javascript-format msgid "Disconnect %s" msgstr "Koppla från %s" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:356 #, javascript-format msgid "Connect to %s" msgstr "Anslut till %s" #: js/ui/status/network.js:1050 msgid "Secure" msgstr "säker" #: js/ui/status/network.js:1050 msgid "Not secure" msgstr "osäker" #: js/ui/status/network.js:1051 #, javascript-format msgid "Signal strength %s%%" msgstr "signalstyrka %s%%" #. translators: The first placeholder is the network name, the second and indication whether it is secure, and the last the signal strength indication #: js/ui/status/network.js:1053 #, javascript-format msgid "%s, %s, %s" msgstr "%s, %s, %s" #. Translators: %s is a network identifier #: js/ui/status/network.js:1155 #, javascript-format msgid "%s Hotspot" msgstr "Surfzon för %s" #: js/ui/status/network.js:1426 #, javascript-format msgid "%d connected" msgid_plural "%d connected" msgstr[0] "%d ansluten" msgstr[1] "%d anslutna" #: js/ui/status/network.js:1524 js/ui/status/network.js:1540 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1525 msgid "VPN Settings" msgstr "VPN-inställningar" #: js/ui/status/network.js:1785 msgid "Wi–Fi" msgstr "Wi–Fi" #: js/ui/status/network.js:1787 msgid "All Networks" msgstr "Alla nätverk" #: js/ui/status/network.js:1884 msgid "Wired Connections" msgstr "Trådbundna anslutningar" #: js/ui/status/network.js:1885 msgid "Wired Settings" msgstr "Trådbundna inställningar" #: js/ui/status/network.js:1899 msgid "Bluetooth Tethers" msgstr "Bluetooth-delningar" #. Translators: "Tether" from "Bluetooth Tether" #: js/ui/status/network.js:1906 msgid "Tether" msgstr "Delning" #: js/ui/status/network.js:1919 msgid "Mobile Connections" msgstr "Mobilanslutningar" #: js/ui/status/network.js:1921 msgid "Mobile Broadband Settings" msgstr "Inställningar för mobilt bredband" #. Translators: "Mobile" from "Mobile Broadband" #: js/ui/status/network.js:1930 msgid "Mobile" msgstr "Mobil" #: js/ui/status/network.js:1964 msgid "Sign Into Wi–Fi Network" msgstr "Logga in på trådlöst nätverk" #: js/ui/status/network.js:2151 msgid "Connection failed" msgstr "Anslutningen misslyckades" #: js/ui/status/network.js:2152 msgid "Activation of network connection failed" msgstr "Aktivering av nätverksanslutning misslyckades" #: js/ui/status/nightLight.js:19 msgid "Night Light" msgstr "Nattbelysning" #: js/ui/status/powerProfiles.js:19 msgctxt "Power profile" msgid "Performance" msgstr "Prestanda" #: js/ui/status/powerProfiles.js:24 msgctxt "Power profile" msgid "Balanced" msgstr "Balanserad" #: js/ui/status/powerProfiles.js:29 msgctxt "Power profile" msgid "Power Saver" msgstr "Strömsparare" #: js/ui/status/powerProfiles.js:39 js/ui/status/powerProfiles.js:69 msgid "Power Mode" msgstr "Strömläge" #: js/ui/status/powerProfiles.js:71 msgid "Power Settings" msgstr "Ströminställningar" # https://gitlab.gnome.org/GNOME/gnome-shell/-/commit/6d0c2ae69772981537613ab5bd7bd706e0445855 This is specifically for stopping the screenshot UI screencasts for now. #: js/ui/status/remoteAccess.js:74 msgid "Stop Screencast" msgstr "Stoppa skärminspelning" #: js/ui/status/remoteAccess.js:144 msgid "Stop Screen Sharing" msgstr "Stoppa skärmdelning" #: js/ui/status/rfkill.js:99 msgid "Airplane Mode" msgstr "Flygplansläge" #: js/ui/status/system.js:168 msgid "Power Off Menu" msgstr "Avstängningsmeny" #: js/ui/status/system.js:176 msgid "Suspend" msgstr "Vänteläge" #: js/ui/status/system.js:181 msgid "Restart…" msgstr "Starta om…" #: js/ui/status/system.js:186 msgid "Power Off…" msgstr "Stäng av…" #: js/ui/status/system.js:193 #: subprojects/extensions-app/data/ui/extensions-window.ui:124 msgid "Log Out…" msgstr "Logga ut…" #: js/ui/status/system.js:198 msgid "Switch User…" msgstr "Växla användare…" # Accessible för activateLockScreen #: js/ui/status/system.js:242 msgctxt "action" msgid "Lock Screen" msgstr "Lås skärm" #: js/ui/status/thunderbolt.js:308 msgid "Unknown Thunderbolt device" msgstr "Okänd Thunderbolt-enhet" #: js/ui/status/thunderbolt.js:309 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" "En ny enhet har upptäckts medan du var borta. Koppla från och anslut enheten " "igen för att börja använda den." #: js/ui/status/thunderbolt.js:312 msgid "Unauthorized Thunderbolt device" msgstr "Ej auktoriserad Thunderbolt-enhet" #: js/ui/status/thunderbolt.js:313 msgid "" "New device has been detected and needs to be authorized by an administrator" msgstr "En ny enhet har upptäckts och behöver auktoriseras av en administratör" #: js/ui/status/thunderbolt.js:319 msgid "Thunderbolt authorization error" msgstr "Thunderbolt-auktoriseringsfel" #: js/ui/status/thunderbolt.js:320 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "Kunde inte auktorisera Thunderbolt-enheten: %s" #: js/ui/status/volume.js:218 msgid "Volume changed" msgstr "Volymen ändrades" #: js/ui/status/volume.js:231 msgid "Unmute" msgstr "Tysta ej" #: js/ui/status/volume.js:231 msgid "Mute" msgstr "Tysta" #: js/ui/status/volume.js:286 msgid "Volume" msgstr "Volym" #: js/ui/status/volume.js:302 msgid "Sound Output" msgstr "Ljudutgång" #: js/ui/status/volume.js:374 msgid "Sound Input" msgstr "Ljudingång" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:20 msgid "Mirror" msgstr "Spegla" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:29 msgid "Join Displays" msgstr "Slå ihop skärmar" #. Translators: this is for using only external displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:39 msgid "External Only" msgstr "Extern skärm" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:47 msgid "Built-in Only" msgstr "Inbyggd skärm" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:378 msgid "%A %B %-d" msgstr "%A %-d %B" #: js/ui/unlockDialog.js:384 msgid "Swipe up to unlock" msgstr "Svep uppåt för att låsa upp" #: js/ui/unlockDialog.js:385 msgid "Click or press a key to unlock" msgstr "Klicka eller tryck på en tangent för att låsa upp" #: js/ui/unlockDialog.js:568 msgid "Unlock Window" msgstr "Lås upp fönster" #: js/ui/unlockDialog.js:577 msgid "Log in as another user" msgstr "Logga in som en annan användare" #: js/ui/welcomeDialog.js:47 #, javascript-format msgid "GNOME %s" msgstr "GNOME %s" #: js/ui/welcomeDialog.js:51 #, javascript-format msgid "Welcome to %s" msgstr "Välkommen till %s" #: js/ui/welcomeDialog.js:52 msgid "If you want to learn your way around, check out the tour" msgstr "Om du vill lära dig grunderna, ta en titt på rundturen" #: js/ui/welcomeDialog.js:61 msgid "Skip" msgstr "Hoppa över" #: js/ui/welcomeDialog.js:66 msgid "Take Tour" msgstr "Ta rundturen" #: js/ui/windowAttentionHandler.js:18 #, javascript-format msgid "“%s” is ready" msgstr "”%s” är redo" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:68 msgid "Keep these display settings?" msgstr "Behåll dessa inställningar?" #: js/ui/windowManager.js:78 msgid "Revert Settings" msgstr "Återställ inställningar" #: js/ui/windowManager.js:83 msgid "Keep Changes" msgstr "Behåll ändringar" #: js/ui/windowManager.js:103 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "Inställningarna kommer återställas om %d sekund" msgstr[1] "Inställningarna kommer återställas om %d sekunder" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:500 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:40 msgid "Hide" msgstr "Dölj" #: js/ui/windowMenu.js:47 msgid "Restore" msgstr "Återställ" #: js/ui/windowMenu.js:51 msgid "Maximize" msgstr "Maximera" #: js/ui/windowMenu.js:58 msgid "Move" msgstr "Flytta" #: js/ui/windowMenu.js:78 msgid "Resize" msgstr "Ändra storlek" #: js/ui/windowMenu.js:98 msgid "Always on Top" msgstr "Alltid överst" #: js/ui/windowMenu.js:117 msgid "Always on Visible Workspace" msgstr "Alltid på synlig arbetsyta" #: js/ui/windowMenu.js:131 msgid "Move to Workspace Left" msgstr "Flytta till arbetsyta åt vänster" #: js/ui/windowMenu.js:137 msgid "Move to Workspace Right" msgstr "Flytta till arbetsyta åt höger" #: js/ui/windowMenu.js:143 msgid "Move to Workspace Up" msgstr "Flytta till arbetsyta ovan" #: js/ui/windowMenu.js:149 msgid "Move to Workspace Down" msgstr "Flytta till arbetsyta nedan" #: js/ui/windowMenu.js:167 msgid "Move to Monitor Up" msgstr "Flytta till skärm uppåt" #: js/ui/windowMenu.js:176 msgid "Move to Monitor Down" msgstr "Flytta till skärm nedåt" #: js/ui/windowMenu.js:185 msgid "Move to Monitor Left" msgstr "Flytta till skärm åt vänster" #: js/ui/windowMenu.js:194 msgid "Move to Monitor Right" msgstr "Flytta till skärm åt höger" #: js/ui/windowMenu.js:202 msgid "Close" msgstr "Stäng" #: src/main.c:529 subprojects/extensions-tool/src/main.c:336 msgid "Print version" msgstr "Skriv ut version" #: src/main.c:535 msgid "Mode used by GDM for login screen" msgstr "Läge som används av GDM för inloggningsskärmen" #: src/main.c:541 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "Använd ett specifikt läge, t.ex. ”gdm” för inloggningsskärm" #: src/main.c:547 msgid "List possible modes" msgstr "Lista möjliga lägen" #: src/main.c:553 msgid "Force animations to be enabled" msgstr "Tvinga animeringar att aktiveras" #: src/shell-app.c:252 msgctxt "program" msgid "Unknown" msgstr "Okänt" #: src/shell-app.c:503 #, c-format msgid "Failed to launch “%s”" msgstr "Misslyckades med att starta ”%s”" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match" msgstr "Lösenorden stämmer inte överens" #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "Lösenordet får inte vara blankt" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "Autentiseringsdialogen stängdes av användaren" #: src/st/st-icon-theme.c:1865 #, c-format msgid "Icon '%s' not present in theme %s" msgstr "Ikonen ”%s” finns inte i temat %s" #: src/st/st-icon-theme.c:3454 src/st/st-icon-theme.c:3757 msgid "Failed to load icon" msgstr "Misslyckades med att läsa in ikon" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 msgid "Manage your GNOME Extensions" msgstr "Hantera dina GNOME-tillägg" #. developer_name tag deprecated with Appstream 1.0 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:19 msgid "The GNOME Project" msgstr "GNOME-projektet" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:51 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" "GNOME Tillägg hanterar uppdatering av tillägg, konfiguration av " "inställningar för tillägg samt att ta bort eller inaktivera oönskade tillägg." #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:63 msgid "Main Window" msgstr "Huvudfönster" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:67 msgid "Available Updates" msgstr "Tillgängliga uppdateringar" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:71 msgid "Search View" msgstr "Sökvy" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "Konfigurera tillägg för GNOME-skal" #: subprojects/extensions-app/js/extensionManager.js:237 #, javascript-format msgid "" "The installed version of this extension (%s) is incompatible with the " "current version of GNOME (%s). The extension has been disabled." msgstr "" "Den installerade versionen av detta tillägg (%s) är inkompatibel med den " "aktuella GNOME-versionen (%s). Tillägget har inaktiverats." #: subprojects/extensions-app/js/extensionManager.js:238 #, javascript-format msgid "" "The installed version of this extension is incompatible with the current " "version of GNOME (%s). The extension has been disabled." msgstr "" "Det installerade tillägget är inkompatibelt med den aktuella GNOME-versionen " "(%s). Tillägget har inaktiverats." #: subprojects/extensions-app/js/extensionManager.js:242 msgid "" "An error has occurred in this extension. This could cause issues elsewhere " "in the system. It is recommended to turn the extension off until the error " "is resolved." msgstr "" "Ett fel har inträffat i detta tillägg. Detta kan orsaka problem på andra " "ställen i systemet. Du rekommenderas att slå av tillägget till felet är löst." #. translators: Details for an extension error #: subprojects/extensions-app/js/extensionManager.js:248 msgid "Error details:" msgstr "Feldetaljer:" #: subprojects/extensions-app/js/extensionRow.js:82 #, javascript-format msgid "Version %s" msgstr "Version %s" #: subprojects/extensions-app/js/extensionsWindow.js:113 #, javascript-format msgid "Remove “%s”?" msgstr "Ta bort ”%s”?" #: subprojects/extensions-app/js/extensionsWindow.js:114 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "" "Om du tar bort tillägget kommer du att behöva återvända för att hämta det om " "du vill aktivera det igen" #: subprojects/extensions-app/js/extensionsWindow.js:117 msgid "_Cancel" msgstr "A_vbryt" #: subprojects/extensions-app/js/extensionsWindow.js:118 msgid "_Remove" msgstr "_Ta bort" #: subprojects/extensions-app/js/extensionsWindow.js:158 msgid "translator-credits" msgstr "" "Daniel Nylander \n" "Marcus Lundblad \n" "Åke Engelbrektson \n" "Anders Jonsson \n" "Sebastian Rasmussen \n" "Luna Jernberg \n" "\n" "Skicka synpunkter på översättningen till\n" "." #: subprojects/extensions-app/js/extensionsWindow.js:203 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "%d inlägg kommer att uppdateras vid nästa inloggning." msgstr[1] "%d inlägg kommer att uppdateras vid nästa inloggning." #: subprojects/extensions-app/data/ui/extension-row.ui:22 msgid "Error Details" msgstr "Feldetaljer" #: subprojects/extensions-app/data/ui/extension-row.ui:62 msgid "Updates Details" msgstr "Uppdateringsdetaljer" #: subprojects/extensions-app/data/ui/extension-row.ui:72 msgid "" "A new version of this extension is ready and will be loaded on next login." msgstr "" "En ny version av detta tillägg är redo och kommer att läsas in vid nästa " "inloggning." #: subprojects/extensions-app/data/ui/extension-row.ui:104 msgid "Extension Details" msgstr "Detaljer för tillägg" #: subprojects/extensions-app/data/ui/extension-row.ui:192 msgid "_Website" msgstr "_Webbplats" #: subprojects/extensions-app/data/ui/extension-row.ui:219 msgid "_Settings" msgstr "_Inställningar" #: subprojects/extensions-app/data/ui/extension-row.ui:246 msgid "_Remove…" msgstr "_Ta bort…" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Keyboard Shortcuts" msgstr "Tangentbordsgenvägar" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "Om tillägg" #: subprojects/extensions-app/data/ui/extensions-window.ui:64 msgid "Main Menu" msgstr "Huvudmeny" #: subprojects/extensions-app/data/ui/extensions-window.ui:106 msgid "Search extensions" msgstr "Sök tillägg" #: subprojects/extensions-app/data/ui/extensions-window.ui:134 msgid "_Extensions" msgstr "_Tillägg" #: subprojects/extensions-app/data/ui/extensions-window.ui:139 msgid "More Information" msgstr "Mer information" #: subprojects/extensions-app/data/ui/extensions-window.ui:151 msgid "" "Extensions can cause performance and stability issues. It is recommended to " "disable all extensions if you experience problems with your system." msgstr "" "Tillägg kan orsaka prestanda- och stabilitetsproblem. Du rekommenderas att " "inaktivera alla tillägg om du stöter på problem med ditt system." #: subprojects/extensions-app/data/ui/extensions-window.ui:178 msgid "User Extensions" msgstr "Användartillägg" #: subprojects/extensions-app/data/ui/extensions-window.ui:198 msgid "System Extensions" msgstr "Systemtillägg" #: subprojects/extensions-app/data/ui/extensions-window.ui:233 msgid "Search Results" msgstr "Sökresultat" #: subprojects/extensions-app/data/ui/extensions-window.ui:252 msgid "No Results Found" msgstr "Inga resultat hittades" #: subprojects/extensions-app/data/ui/extensions-window.ui:253 msgid "Try a different search" msgstr "Försök med en annan sökning" #: subprojects/extensions-app/data/ui/extensions-window.ui:264 msgid "No Installed Extensions" msgstr "Inga installerade tillägg" #: subprojects/extensions-app/data/ui/extensions-window.ui:265 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" "För att hitta och lägga till tillägg, besök extensions.gnome.org." #: subprojects/extensions-app/data/ui/extensions-window.ui:276 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" "Vi är ledsna, men det var inte möjligt att erhålla listan över installerade " "tillägg. Säkerställ att du är inloggad i GNOME och försök igen." #: subprojects/extensions-app/data/ui/help-overlay.ui:9 msgctxt "shortcut window" msgid "General" msgstr "Allmänt" #: subprojects/extensions-app/data/ui/help-overlay.ui:12 msgctxt "shortcut window" msgid "Open Menu" msgstr "Öppna meny" #: subprojects/extensions-app/data/ui/help-overlay.ui:18 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Växla sökning" #: subprojects/extensions-app/data/ui/help-overlay.ui:24 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Visa kortkommandon" #: subprojects/extensions-app/data/ui/help-overlay.ui:30 msgctxt "shortcut window" msgid "Quit" msgstr "Avsluta" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:284 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "Det nya tillägget skapades i %s.\n" #: subprojects/extensions-tool/src/command-create.c:376 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" "Namn bör vara en väldigt kort (helst beskrivande) sträng.\n" "Exempel: %s" #: subprojects/extensions-tool/src/command-create.c:382 #: subprojects/extensions-tool/src/main.c:243 msgid "Name" msgstr "Namn" #: subprojects/extensions-tool/src/command-create.c:396 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" "Beskrivning är en ensam mening som förklarar vad ditt tillägg gör.\n" "Exempel: %s" #: subprojects/extensions-tool/src/command-create.c:402 #: subprojects/extensions-tool/src/main.c:246 msgid "Description" msgstr "Beskrivning" #: subprojects/extensions-tool/src/command-create.c:416 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" "UUID är en globalt unik identifierare för ditt tillägg.\n" "Detta ska vara i formatet av en e-postadress\n" "(clicktofocus@janedoe.example.com)\n" #: subprojects/extensions-tool/src/command-create.c:443 msgid "Choose one of the available templates:\n" msgstr "Välj en av de tillgängliga mallarna:\n" #: subprojects/extensions-tool/src/command-create.c:457 msgid "Template" msgstr "Mall" #: subprojects/extensions-tool/src/command-create.c:515 msgid "The unique identifier of the new extension" msgstr "Det nya tilläggets unika identifierare" #: subprojects/extensions-tool/src/command-create.c:518 msgid "NAME" msgstr "NAMN" #: subprojects/extensions-tool/src/command-create.c:519 msgid "The user-visible name of the new extension" msgstr "Det användarsynliga namnet på det nya tillägget" #: subprojects/extensions-tool/src/command-create.c:521 msgid "DESCRIPTION" msgstr "BESKRIVNING" #: subprojects/extensions-tool/src/command-create.c:523 msgid "A short description of what the extension does" msgstr "En kort beskrivning av vad tillägget gör" #: subprojects/extensions-tool/src/command-create.c:525 #: subprojects/extensions-tool/src/command-pack.c:455 msgid "DOMAIN" msgstr "DOMÄN" #: subprojects/extensions-tool/src/command-create.c:527 msgid "The gettext domain used by the extension" msgstr "Gettext-domänen som används av tillägget" #: subprojects/extensions-tool/src/command-create.c:529 #: subprojects/extensions-tool/src/command-pack.c:448 msgid "SCHEMA" msgstr "SCHEMA" #: subprojects/extensions-tool/src/command-create.c:531 msgid "The GSettings schema used by the extension" msgstr "GSettings-schemat som används av tillägget" #: subprojects/extensions-tool/src/command-create.c:534 msgid "TEMPLATE" msgstr "MALL" #: subprojects/extensions-tool/src/command-create.c:535 msgid "The template to use for the new extension" msgstr "Mallen att använda för det nya tillägget" #: subprojects/extensions-tool/src/command-create.c:538 msgid "Include prefs.js template" msgstr "Inkludera prefs.js-mall" #: subprojects/extensions-tool/src/command-create.c:544 msgid "Enter extension information interactively" msgstr "Ange tilläggsinformation interaktivt" #: subprojects/extensions-tool/src/command-create.c:552 msgid "Create a new extension" msgstr "Skapa ett nytt tillägg" #: subprojects/extensions-tool/src/command-create.c:570 #: subprojects/extensions-tool/src/command-list.c:190 msgid "Unknown arguments" msgstr "Okända argument" #: subprojects/extensions-tool/src/command-create.c:595 msgid "UUID, name and description are required" msgstr "UUID, namn och beskrivning krävs" #: subprojects/extensions-tool/src/command-disable.c:62 #: subprojects/extensions-tool/src/command-enable.c:62 #, c-format msgid "Extension “%s” does not exist\n" msgstr "Tillägget ”%s” finns inte\n" #: subprojects/extensions-tool/src/command-disable.c:98 msgid "Disable an extension" msgstr "Inaktivera ett tillägg" #: subprojects/extensions-tool/src/command-disable.c:116 #: subprojects/extensions-tool/src/command-enable.c:116 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "Inget UUID angivet" #: subprojects/extensions-tool/src/command-disable.c:121 #: subprojects/extensions-tool/src/command-enable.c:121 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "Mer än ett UUID angivet" #: subprojects/extensions-tool/src/command-enable.c:98 msgid "Enable an extension" msgstr "Aktivera ett tillägg" #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:66 #: subprojects/extensions-tool/src/main.c:150 msgid "Failed to connect to GNOME Shell\n" msgstr "Misslyckades med att ansluta till GNOME-skalet\n" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:159 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "Tillägget ”%s” finns inte\n" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "Visa info för tillägg" #: subprojects/extensions-tool/src/command-install.c:190 msgid "Overwrite an existing extension" msgstr "Skriv över ett befintligt tillägg" #: subprojects/extensions-tool/src/command-install.c:192 msgid "EXTENSION_BUNDLE" msgstr "TILLÄGGSBUNT" #: subprojects/extensions-tool/src/command-install.c:201 msgid "Install an extension bundle" msgstr "Installera en tilläggsbunt" #: subprojects/extensions-tool/src/command-install.c:219 msgid "No extension bundle specified" msgstr "Ingen tilläggsbunt angiven" #: subprojects/extensions-tool/src/command-install.c:225 msgid "More than one extension bundle specified" msgstr "Mer än en tilläggsbunt angiven" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show user-installed extensions" msgstr "Visa användarinstallerade tillägg" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show system-installed extensions" msgstr "Visa systeminstallerade tillägg" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Show enabled extensions" msgstr "Visa aktiverade tillägg" #: subprojects/extensions-tool/src/command-list.c:149 msgid "Show disabled extensions" msgstr "Visa inaktiverade tillägg" #: subprojects/extensions-tool/src/command-list.c:152 msgid "Show extensions in active state" msgstr "Visa tillägg i aktivt tillstånd" #: subprojects/extensions-tool/src/command-list.c:155 msgid "Show extensions in inactive state" msgstr "Visa tillägg i inaktivt tillstånd" #: subprojects/extensions-tool/src/command-list.c:158 msgid "Show extensions with preferences" msgstr "Visa tillägg med inställningar" #: subprojects/extensions-tool/src/command-list.c:161 msgid "Show extensions with updates" msgstr "Visa tillägg med uppdateringar" #: subprojects/extensions-tool/src/command-list.c:164 msgid "Print extension details" msgstr "Skriv ut detaljer för tillägg" #: subprojects/extensions-tool/src/command-list.c:172 msgid "List installed extensions" msgstr "Lista installerade tillägg" #: subprojects/extensions-tool/src/command-pack.c:444 msgid "FILE" msgstr "FIL" #: subprojects/extensions-tool/src/command-pack.c:445 msgid "Additional source to include in the bundle" msgstr "Ytterligare källa att inkludera i bunten" #: subprojects/extensions-tool/src/command-pack.c:449 msgid "A GSettings schema that should be included" msgstr "Ett GSettings-schema som ska inkluderas" #: subprojects/extensions-tool/src/command-pack.c:451 #: subprojects/extensions-tool/src/command-pack.c:462 msgid "DIRECTORY" msgstr "KATALOG" #: subprojects/extensions-tool/src/command-pack.c:453 msgid "The directory where translations are found" msgstr "Katalogen där översättningar hittas" #: subprojects/extensions-tool/src/command-pack.c:457 msgid "The gettext domain to use for translations" msgstr "Gettext-domänen att använda för översättningar" #: subprojects/extensions-tool/src/command-pack.c:460 msgid "Overwrite an existing pack" msgstr "Skriv över ett befintligt paket" #: subprojects/extensions-tool/src/command-pack.c:464 msgid "The directory where the pack should be created" msgstr "Katalogen där paketet ska skapas" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "SOURCE_DIRECTORY" msgstr "KÄLLKATALOG" #: subprojects/extensions-tool/src/command-pack.c:475 msgid "Create an extension bundle" msgstr "Skapa en tilläggsbunt" #: subprojects/extensions-tool/src/command-pack.c:495 msgid "More than one source directory specified" msgstr "Mer än en källkatalog angiven" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "Tillägget ”%s” har inga inställningar\n" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "Misslyckades med att öppna inställningar för tillägget ”%s”: %s\n" #: subprojects/extensions-tool/src/command-prefs.c:87 msgid "Opens extension preferences" msgstr "Öppnar inställningar för tillägg" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "Återställ ett tillägg" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "Det går inte att avinstallera systemtillägg\n" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "Misslyckades med att avinstallera ”%s”\n" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "Avinstallera ett tillägg" #: subprojects/extensions-tool/src/main.c:76 msgid "Do not print error messages" msgstr "Skriv inte ut felmeddelanden" #: subprojects/extensions-tool/src/main.c:249 msgid "Path" msgstr "Sökväg" #: subprojects/extensions-tool/src/main.c:252 msgid "URL" msgstr "URL" #: subprojects/extensions-tool/src/main.c:255 msgid "Original author" msgstr "Ursprunglig upphovsman" #: subprojects/extensions-tool/src/main.c:261 #: subprojects/extensions-tool/src/main.c:263 #: subprojects/extensions-tool/src/main.c:265 msgid "Version" msgstr "Version" #: subprojects/extensions-tool/src/main.c:268 msgid "Enabled" msgstr "Aktiverad" #: subprojects/extensions-tool/src/main.c:268 msgid "Yes" msgstr "Ja" #: subprojects/extensions-tool/src/main.c:268 msgid "No" msgstr "Nej" #: subprojects/extensions-tool/src/main.c:271 msgid "State" msgstr "Tillstånd" #: subprojects/extensions-tool/src/main.c:309 msgid "“version” takes no arguments" msgstr "”version” tar inga argument" #: subprojects/extensions-tool/src/main.c:311 #: subprojects/extensions-tool/src/main.c:331 msgid "Usage:" msgstr "Användning:" #: subprojects/extensions-tool/src/main.c:314 msgid "Print version information and exit." msgstr "Skriv ut versionsinformation och avsluta." #: subprojects/extensions-tool/src/main.c:329 #: subprojects/extensions-tool/src/main.c:332 msgid "COMMAND" msgstr "KOMMANDO" #: subprojects/extensions-tool/src/main.c:332 msgid "[ARGS…]" msgstr "[ARGUMENT…]" #: subprojects/extensions-tool/src/main.c:334 msgid "Commands:" msgstr "Kommandon:" #: subprojects/extensions-tool/src/main.c:335 msgid "Print help" msgstr "Skriv ut hjälp" #: subprojects/extensions-tool/src/main.c:337 msgid "Enable extension" msgstr "Aktivera tillägg" #: subprojects/extensions-tool/src/main.c:338 msgid "Disable extension" msgstr "Inaktivera tillägg" #: subprojects/extensions-tool/src/main.c:339 msgid "Reset extension" msgstr "Återställ tillägg" #: subprojects/extensions-tool/src/main.c:340 msgid "Uninstall extension" msgstr "Avinstallera tillägg" #: subprojects/extensions-tool/src/main.c:341 msgid "List extensions" msgstr "Lista tillägg" #: subprojects/extensions-tool/src/main.c:342 #: subprojects/extensions-tool/src/main.c:343 msgid "Show extension info" msgstr "Visa info för tillägg" #: subprojects/extensions-tool/src/main.c:344 msgid "Open extension preferences" msgstr "Öppna inställningar för tillägg" #: subprojects/extensions-tool/src/main.c:345 msgid "Create extension" msgstr "Skapa tillägg" #: subprojects/extensions-tool/src/main.c:346 msgid "Package extension" msgstr "Paketera tillägg" #: subprojects/extensions-tool/src/main.c:347 msgid "Install extension bundle" msgstr "Installera tilläggsbunt" #: subprojects/extensions-tool/src/main.c:349 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "Använd ”%s” för att få detaljerad hjälp.\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "Enkel" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "Ett tomt tillägg" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "Indikator" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "Lägg till en ikon i systemraden" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:4 msgid "Quick Settings Item" msgstr "Snabbinställningsobjekt" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:5 msgid "Add an item to quick settings" msgstr "Lägg till ett objekt till snabbinställningar" #. translators: #. * The device has been disabled #: subprojects/gvc/gvc-mixer-control.c:1872 msgid "Disabled" msgstr "Inaktiverad" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1879 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u utgång" msgstr[1] "%u utgångar" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1889 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u ingång" msgstr[1] "%u ingångar" #: subprojects/gvc/gvc-mixer-control.c:2872 msgid "System Sounds" msgstr "Systemljud" #~ msgid "Move Titlebar Onscreen" #~ msgstr "Flytta namnlist på skärm" #~ msgid "Stop conflicting session dialog closed" #~ msgstr "Dialogrutan för att stoppa motstridig session stängdes" #, javascript-format #~ msgid "Try to login again to start a session for user %s." #~ msgstr "" #~ "Försök att logga in igen för att starta en session för användaren %s." #, javascript-format #~ msgid "%s is now known as %s" #~ msgstr "%s är nu känd som %s" #~ msgid "Network Manager" #~ msgstr "Nätverkshanterare" #~ msgid "System Information" #~ msgstr "Systeminformation" #~ msgid "Thunderbolt" #~ msgstr "Thunderbolt" #~ msgid "Disabling" #~ msgstr "Inaktiverar" #~ msgid "Enabling" #~ msgstr "Aktiverar" #~ msgid "No Matches" #~ msgstr "Inga träffar" #~ msgid "The extension had an error" #~ msgstr "Tillägget hade ett fel" #~ msgid "The extension can be updated" #~ msgstr "Tillägget kan uppdateras" #~ msgid "Help" #~ msgstr "Hjälp" #~ msgid "Manually Installed" #~ msgstr "Manuellt installerade" #~ msgid "Built-In" #~ msgstr "Inbyggda" #~ msgid "Extension Updates Ready" #~ msgstr "Uppdateringar för tillägg är redo" #, javascript-format #~ msgid "%d %%" #~ msgstr "%d %%" #~ msgid "No Thanks" #~ msgstr "Nej tack" #~ msgid "Screenshot / Screencast" #~ msgstr "Skärmbild / skärminspelning" #~ msgid "Power Profiles" #~ msgstr "Strömprofiler" #~ msgid "Evolution Calendar" #~ msgstr "Evolution-kalender" #~ msgid "Applications" #~ msgstr "Program" #, javascript-format #~ msgid "Unable to start %s" #~ msgstr "Kunde inte starta %s" #, javascript-format #~ msgid "Couldn’t find the %s application" #~ msgstr "Kunde inte hitta programmet %s" #~ msgid "Attach modal dialog to the parent window" #~ msgstr "Fäst modal dialog till föräldrafönstret" #~ msgid "" #~ "This key overrides the key in org.gnome.mutter when running GNOME Shell." #~ msgstr "" #~ "Denna nyckel åsidosätter nyckeln i org.gnome.mutter när GNOME-skalet körs." #~ msgid "Enable edge tiling when dropping windows on screen edges" #~ msgstr "Slå på kantdockning när fönster släpps på skärmkanter" #~ msgid "Workspaces are managed dynamically" #~ msgstr "Arbetsytor hanteras dynamiskt" #~ msgid "Workspaces only on primary monitor" #~ msgstr "Arbetsytor endast på primär skärm" #~ msgid "Delay focus changes in mouse mode until the pointer stops moving" #~ msgstr "Fördröj fokusändringar i musläge tills pekare slutar röra sig" #~ msgid "Region & Language Settings" #~ msgstr "Re­gion- & språkinställningar" #~ msgid "" #~ "Whether the default Bluetooth adapter had set up devices associated to it" #~ msgstr "" #~ "Huruvida standardadaptern för Bluetooth har enheter associerade med sig" #~ msgid "" #~ "The shell will only show a Bluetooth menu item if a Bluetooth adapter is " #~ "powered, or if there were devices set up associated with the default " #~ "adapter. This will be reset if the default adapter is ever seen not to " #~ "have devices associated to it." #~ msgstr "" #~ "Skalet kommer bara att visa ett Bluetooth-menyalternativ om en Bluetooth-" #~ "adapter är strömsatt, eller om enheter ställts in som associerats med " #~ "standardadaptern. Detta kommer att återställas om standardadaptern " #~ "någonsin ses utan att ha enheter associerade med sig." #~ msgid "Log Out" #~ msgstr "Logga ut" #~ msgid "Connect to Internet" #~ msgstr "Anslut till internet" #~ msgid "Airplane Mode is On" #~ msgstr "Flygplansläge är på" #~ msgid "Wi-Fi is disabled when airplane mode is on." #~ msgstr "Trådlöst nätverk är avslaget när flygplansläge är på." #~ msgid "Turn Off Airplane Mode" #~ msgstr "Slå av flygplansläge" #~ msgid "Wi-Fi is Off" #~ msgstr "Trådlöst nätverk är av" #~ msgid "Wi-Fi needs to be turned on in order to connect to a network." #~ msgstr "" #~ "Trådlöst nätverk behöver slås på för att kunna ansluta till ett nätverk." #~ msgid "Turn On Wi-Fi" #~ msgstr "Slå på trådlöst nätverk" #~ msgid "Select a network" #~ msgstr "Välj ett nätverk" #~ msgid "Use hardware switch to turn off" #~ msgstr "Använd hårdvarubrytare för att slå av" #~ msgid "Select Network" #~ msgstr "Välj nätverk" #~ msgid "Wi-Fi Settings" #~ msgstr "Inställningar för trådlösa nätverk" #~ msgid "VPN Off" #~ msgstr "VPN avslaget" #, javascript-format #~ msgid "%s Wi-Fi Connection" #~ msgid_plural "%s Wi-Fi Connections" #~ msgstr[0] "%s trådlös anslutning" #~ msgstr[1] "%s trådlösa anslutningar" #, javascript-format #~ msgid "%s Off" #~ msgstr "%s avslagen" #, javascript-format #~ msgid "%s Unmanaged" #~ msgstr "%s ohanterad" #, javascript-format #~ msgid "%s Connecting" #~ msgstr "%s ansluter" #, javascript-format #~ msgid "%s Requires Authentication" #~ msgstr "%s kräver autentisering" #, javascript-format #~ msgid "Firmware Missing For %s" #~ msgstr "Fast programvara saknas för %s" #, javascript-format #~ msgid "%s Unavailable" #~ msgstr "%s ej tillgänglig" #, javascript-format #~ msgid "%s Connection Failed" #~ msgstr "Anslutning till %s misslyckades" #, javascript-format #~ msgid "%s Hardware Disabled" #~ msgstr "Hårdvara för %s inaktiverad" #, javascript-format #~ msgid "%s Disabled" #~ msgstr "%s inaktiverad" #, javascript-format #~ msgid "%s Not Connected" #~ msgstr "%s ej ansluten" #~ msgid "unknown" #~ msgstr "okänd" #~ msgid "connecting…" #~ msgstr "ansluter…" #~ msgid "authentication required" #~ msgstr "autentisering krävs" #~ msgid "connection failed" #~ msgstr "anslutningen misslyckades" #~ msgid "Lock" #~ msgstr "Lås" #~ msgid "Power Off / Log Out" #~ msgstr "Stäng av / Logga ut" #~ msgid "Bluetooth On" #~ msgstr "Bluetooth på" #~ msgid "Bluetooth Off" #~ msgstr "Bluetooth av" #~ msgid "Location In Use" #~ msgstr "Plats används" #~ msgid "Location Disabled" #~ msgstr "Plats inaktiverad" #~ msgid "Night Light Disabled" #~ msgstr "Nattbelysning inaktiverad" #~ msgid "Resume" #~ msgstr "Återuppta" #~ msgid "Disable Until Tomorrow" #~ msgstr "Inaktivera till imorgon" #~ msgid "Fully Charged" #~ msgstr "Fulladdad" #~ msgid "Not Charging" #~ msgstr "Laddar inte" #~ msgid "Estimating…" #~ msgstr "Beräknar…" #, javascript-format #~ msgid "%d∶%02d Remaining (%d %%)" #~ msgstr "%d∶%02d återstår (%d %%)" #, javascript-format #~ msgid "%d∶%02d Until Full (%d %%)" #~ msgstr "%d∶%02d tills fulladdad (%d %%)" #~ msgid "Screen is Being Shared" #~ msgstr "Skärmen delas" #~ msgid "Turn off" #~ msgstr "Stäng av" #~ msgid "Airplane Mode On" #~ msgstr "Flygplansläge påslaget" #~ msgid "Screen Recording in Progress" #~ msgstr "Skärminspelning pågår" #~ msgid "Stop" #~ msgstr "Stoppa" #~ msgid "Author" #~ msgstr "Upphovsman" #~ msgid "Warning" #~ msgstr "Varning" #~ msgid "" #~ "Extensions can cause system issues, including performance problems. If " #~ "you encounter problems with your system, it is recommended to disable all " #~ "extensions." #~ msgstr "" #~ "Tillägg kan orsaka systemproblem, även prestandaproblem. Om du stöter på " #~ "problem med ditt system så rekommenderas du att inaktivera alla tillägg." #~ msgid "Remove from Favorites" #~ msgstr "Ta bort från favoriter" #~ msgid "Add to Favorites" #~ msgstr "Lägg till som favorit" #~ msgid "Enable introspection API" #~ msgstr "Aktivera introspektions-API" #~ msgid "" #~ "Enables a D-Bus API that allows to introspect the application state of " #~ "the shell." #~ msgstr "" #~ "Aktiverar ett D-Bus-API som tillåter introspektion av programtillståndet " #~ "för skalet." #~ msgid "Failed to connect to GNOME Shell" #~ msgstr "Misslyckades med att ansluta till GNOME-skalet" #~ msgid "Minimize" #~ msgstr "Minimera" #~ msgid "Unmaximize" #~ msgstr "Avmaximera" #~ msgid "App Picker View" #~ msgstr "Programväljarvy" #~ msgid "Index of the currently selected view in the application picker." #~ msgstr "Index för den valda vyn i applikationsväljaren." #~ msgid "Frequently used applications will appear here" #~ msgstr "Ofta använda program kommer visas här" #~ msgid "Frequent" #~ msgstr "Ofta använda" #~ msgid "All" #~ msgstr "Alla" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d" #~ msgstr "%A, %-d %B" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d, %Y" #~ msgstr "%A, %-d %B, %Y" #~ msgid "On" #~ msgstr "På" #~ msgid "Copy Error" #~ msgstr "Kopiera fel" #~ msgid "Username…" #~ msgstr "Användarnamn…" #~ msgid "Password: " #~ msgstr "Lösenord: " #~ msgid "Enter Password…" #~ msgstr "Ange lösenord…" #~ msgid "Next" #~ msgstr "Nästa" #~ msgctxt "button" #~ msgid "Sign In" #~ msgstr "Logga in" #~ msgid "%A, %B %d" #~ msgstr "%A, %d %B" #~ msgid "%d new message" #~ msgid_plural "%d new messages" #~ msgstr[0] "%d nytt meddelande" #~ msgstr[1] "%d nya meddelanden" #~ msgid "org.gnome.Extensions" #~ msgstr "org.gnome.Extensions" #~ msgid "Logout…" #~ msgstr "Logga ut…" #~ msgid "Browse in Software" #~ msgstr "Bläddra i Programvara" #~ msgctxt "search-result" #~ msgid "Lock Orientation" #~ msgstr "Skärmrotation" #~ msgid "Password:" #~ msgstr "Lösenord:" #~ msgid "Type again:" #~ msgstr "Skriv igen:" #~ msgid "Authentication required by wireless network" #~ msgstr "Autentisering krävs av trådlöst nätverk" #~ msgid "Mobile broadband network password" #~ msgstr "Lösenord för mobilt bredbandsnätverk" #~ msgid "Rename" #~ msgstr "Byt namn" #~ msgid "Account Settings" #~ msgstr "Kontoinställningar" #~ msgid "Orientation Lock" #~ msgstr "Skärmrotation" #~ msgid "" #~ "Keybinding that pauses and resumes all running tweens, for debugging " #~ "purposes" #~ msgstr "" #~ "Snabbtangent som pausar och återupptar alla aktiva animeringar (tweens), " #~ "i felsökningssyfte" #~ msgid "Which keyboard to use" #~ msgstr "Vilket tangentbord att använda" #~ msgid "The type of keyboard to use." #~ msgstr "Typen av tangentbord att använda." #~ msgid "network-workgroup" #~ msgstr "network-workgroup" #~ msgid "toggle-switch-us" #~ msgstr "toggle-switch-intl" #~ msgid "There was an error loading the preferences dialog for %s:" #~ msgstr "Det uppstod ett fel vid inläsning av inställningsdialogen för %s:" #~ msgid "%s all day." #~ msgstr "%s hela dagen." #~ msgid "%s, then %s later." #~ msgstr "%s, sedan %s senare." #~ msgid "%s, then %s, followed by %s later." #~ msgstr "%s, sedan %s, följt av %s senare." #~ msgid "Feels like %s." #~ msgstr "Känns som %s." #~ msgctxt "search-result" #~ msgid "Log out" #~ msgstr "Logga ut" #~ msgctxt "search-result" #~ msgid "Switch user" #~ msgstr "Växla användare" #~ msgid "Hide tray" #~ msgstr "Dölj aktivitetsfält" #~ msgid "Status Icons" #~ msgstr "Statusikoner" #~ msgid "Events" #~ msgstr "Händelser" #~ msgid "Media" #~ msgstr "Media" #~ msgid "%d x %d" #~ msgstr "%d x %d" #~ msgid "Web Authentication Redirect" #~ msgstr "Omdirigering för webbautentisering" #~ msgid "Show the week date in the calendar" #~ msgstr "Visa veckonummer i kalendern" #~ msgid "If true, display the ISO week date in the calendar." #~ msgstr "Om satt till \"true\", visa veckonummer enligt ISO i kalendern." #~ msgid "Use as Internet connection" #~ msgstr "Använd som internetanslutning" #~ msgid "%s is requesting access to your location." #~ msgstr "%s begär åtkomst till din plats." #~ msgid "GNOME Shell (wayland compositor)" #~ msgstr "GNOME-skal (wayland-compositor)" #~ msgid "%d Connected Device" #~ msgid_plural "%d Connected Devices" #~ msgstr[0] "%d ansluten enhet" #~ msgstr[1] "%d anslutna enheter" #~ msgid "UPS" #~ msgstr "Avbrottsfri kraftförsörjning (UPS)" #~ msgid "Battery" #~ msgstr "Batteri" 07070100000264000081A40000000000000000000000016712993F00014D96000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/ta.po# Tamil translation for gnome-shell. # Copyright (C) 2010 gnome-shell's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-shell package. # # Dr.T.Vasudevan , 2010, 2011, 2012. # Shantha kumar , 2013, 2014. msgid "" msgstr "" "Project-Id-Version: gnome-shell master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "shell&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2014-09-13 16:02+0000\n" "PO-Revision-Date: 2014-09-13 21:39+0630\n" "Last-Translator: Shantha kumar \n" "Language-Team: American English \n" "Language: ta\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: Lokalize 1.5\n" "X-Poedit-Language: தமிழ்\n" "X-Poedit-Country: இந்தியா\n" "X-Poedit-SourceCharset: utf-8\n" #: ../data/50-gnome-shell-system.xml.in.h:1 msgid "System" msgstr "கணினி" #: ../data/50-gnome-shell-system.xml.in.h:2 msgid "Show the message tray" msgstr "அறிவிப்பு பலகத்தை காட்டுக" #: ../data/50-gnome-shell-system.xml.in.h:3 msgid "Focus the active notification" msgstr "இயங்கு செய்தி அறிவிப்பை குவி" #: ../data/50-gnome-shell-system.xml.in.h:4 msgid "Show the overview" msgstr "கண்ணோட்டத்தை காட்டு" #: ../data/50-gnome-shell-system.xml.in.h:5 msgid "Show all applications" msgstr "எல்லா செயலிகளையும் காட்டு" #: ../data/50-gnome-shell-system.xml.in.h:6 msgid "Open the application menu" msgstr "செயலிகள் பட்டியை திறக்க விசைபிணைப்பு" #: ../data/gnome-shell.desktop.in.in.h:1 msgid "GNOME Shell" msgstr "க்னோம் ஷெல்" #: ../data/gnome-shell.desktop.in.in.h:2 #: ../data/gnome-shell-wayland.desktop.in.in.h:2 msgid "Window management and application launching" msgstr "சாளர மேலாண்மை மற்றும் பயன்பாடு துவக்கம்" #: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1 msgid "GNOME Shell Extension Preferences" msgstr "க்னோம் ஷெல் நீட்சி விருப்பங்கள்" #: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2 msgid "Configure GNOME Shell Extensions" msgstr "க்னோம் ஷெல் நீட்சிகளை வடிவமை" #: ../data/gnome-shell-wayland.desktop.in.in.h:1 msgid "GNOME Shell (wayland compositor)" msgstr "GNOME ஷெல் (வேலேன்ட் கம்ப்போசிட்டர்)" #: ../data/org.gnome.shell.gschema.xml.in.in.h:1 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" "உருவாக்குவோர் மற்றூம் சோதிப்போருக்கு பயன்படுமாறு Alt-F2 வழியாக உள்ளமை " "கருவிகளை " "செயலாக்கு" #: ../data/org.gnome.shell.gschema.xml.in.in.h:2 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "உள்ளமை வழி நீக்கம் மற்றும் Alt-F2 உரையாடல் மூலம் கருவிகள் கண்காணிப்பு " "ஆகியவற்றை அணுக " "உதவும்." #: ../data/org.gnome.shell.gschema.xml.in.in.h:3 msgid "UUIDs of extensions to enable" msgstr "செயல்படுத்த வேண்டிய நீட்சிகளின் UUIDகள்" #: ../data/org.gnome.shell.gschema.xml.in.in.h:4 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "க்னோம் ஷெல் நீட்சிகளுக்கு ஒரு யூயூஐடி பண்பு உண்டு. இந்த விசை எந்த நீட்சிகள் " "ஏற்றப்பட வேண்டும் " "என பட்டியலிடுகிறது. ஏற்றப்பட வேண்டிய எந்த நீட்சியும் இந்த பட்டியலில் இருந்தே " "ஆகவேண்டும். " "org.gnome.Shell. இல் உள்ள EnableExtension மற்றும் DisableExtension DBus " "முறைகளில் " "இந்த பட்டியலை நீங்கள் திருத்தலாம்." #: ../data/org.gnome.shell.gschema.xml.in.in.h:5 msgid "Disables the validation of extension version compatibility" msgstr "நீட்சிப் பதிப்பு இணக்கத்தன்மை செல்லுபடியாக்கத்தை முடக்கும்" #: ../data/org.gnome.shell.gschema.xml.in.in.h:6 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "GNOME ஷெல் நடப்பு இயக்கப் பதிப்பை ஆதரிப்பதாகக் கூறும் நீட்சிகளை மட்டுமே " "ஏற்றும். இந்த " "விருப்பத்தைச் செயல்படுத்தினால் இந்த சோதனை முடக்கப்படும், பிறகு நீட்சிகள் " "எந்தப் பதிப்புகளை " "ஆதரிப்பதாகக் கூறுகின்றன என்பதைப் பொருட்படுத்தாமல் எல்லா நீட்சிகளையும் ஏற்ற " "முயற்சி " "செய்யப்படும்." #: ../data/org.gnome.shell.gschema.xml.in.in.h:7 msgid "List of desktop file IDs for favorite applications" msgstr "விருப்ப பயன்பாடுகளுக்கு மேல்மேசை கோப்பு அடையாளங்கள்" #: ../data/org.gnome.shell.gschema.xml.in.in.h:8 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" "இந்த அடையாளங் காட்டிகளுக்கு பொருத்தமான பயன்பாடுகள் விருப்ப இடத்தில் " "காட்டப்படும்." #: ../data/org.gnome.shell.gschema.xml.in.in.h:9 msgid "App Picker View" msgstr "ஆப் பிக்கர் காட்சி" #: ../data/org.gnome.shell.gschema.xml.in.in.h:10 msgid "Index of the currently selected view in the application picker." msgstr "" "பயன்பாட்டுத் தேர்வியில் தற்போது தேர்ந்தெடுக்கப்பட்டுள்ள காட்சியின் அட்டவணை." #: ../data/org.gnome.shell.gschema.xml.in.in.h:11 msgid "History for command (Alt-F2) dialog" msgstr "(Alt-F2) கட்டளை உரையாடல் க்கு வரலாறு" #: ../data/org.gnome.shell.gschema.xml.in.in.h:12 msgid "History for the looking glass dialog" msgstr "லுக்கிங் க்ளாஸ் உரையாடலுக்கு வரலாறு" #: ../data/org.gnome.shell.gschema.xml.in.in.h:13 msgid "Always show the 'Log out' menu item in the user menu." msgstr "எப்போதும் பயனர் மெனுவில் 'வெளியேறு' மெனு உருப்படியைக் காண்பி." #: ../data/org.gnome.shell.gschema.xml.in.in.h:14 msgid "" "This key overrides the automatic hiding of the 'Log out' menu item in single-" "user, single-session situations." msgstr "" "இந்த விசையானது ஒற்றை பயனர், ஒற்றை அமர்வு சூழ்நிலைகளில் 'வெளியேறு' மெனு " "உருப்படி " "தானாக மறைதலை கட்டுப்படுத்தி இயங்கும்." #: ../data/org.gnome.shell.gschema.xml.in.in.h:15 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "குறியாக்கம் செய்யப்பட்ட அல்லது தொலைநிலை கோப்புமுறைமைகளை மவுன்ட் செய்வதற்கான " "கடவுச்சொல்லை " "நினைவில் வைத்திருக்க வேண்டுமா" #: ../data/org.gnome.shell.gschema.xml.in.in.h:16 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "'Remember Password' checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "ஒரு குறியாக்கம் செய்யப்பட்ட சாதனம் அல்லது தொலைநிலை கோப்புமுறைமையை மவுன்ட் " "செய்யும் போது " "ஷெல்லானது ஒரு கடவுச்சொல்லைக் கேட்கும். எதிர்காலப் பயன்பாட்டுக்கு கடவுச்சொல் " "சேமிக்கப்பட " "முடியும் எனில், 'கடவுச்சொல்லை நினைவில் வைத்திரு' என ஒரு தேர்வுப் பெட்டி " "இடம்பெறும். இந்த " "விசையே இந்த தேர்வுப் பெட்டியின் முன்னிருப்பு நிலையை அமைக்கிறது." #: ../data/org.gnome.shell.gschema.xml.in.in.h:17 msgid "Show the week date in the calendar" msgstr "நாட்காட்டியில் வார நாளை காட்டவும்" #: ../data/org.gnome.shell.gschema.xml.in.in.h:18 msgid "If true, display the ISO week date in the calendar." msgstr "உண்மையானால் நாட்காட்டியில் ஐஎஸ்ஓ வார எண்களை காட்டவும்." #: ../data/org.gnome.shell.gschema.xml.in.in.h:19 msgid "Keybinding to open the application menu" msgstr "பயன்பாட்டு பட்டியை திறக்க விசைபிணைப்பு" #: ../data/org.gnome.shell.gschema.xml.in.in.h:20 msgid "Keybinding to open the application menu." msgstr "பயன்பாட்டு பட்டியை திறக்க விசைபிணைப்பு." #: ../data/org.gnome.shell.gschema.xml.in.in.h:21 msgid "Keybinding to open the \"Show Applications\" view" msgstr " \"செயலிகளைக்காட்டு\" பார்வையை திறக்க விசைபிணைப்பு" #: ../data/org.gnome.shell.gschema.xml.in.in.h:22 msgid "" "Keybinding to open the \"Show Applications\" view of the Activities Overview." msgstr "" "செயல்பாடுகள் மேல்பார்வையின் \"செயலிகளைக்காட்டு\" பார்வையை திறக்க விசைபிணைப்பு." #: ../data/org.gnome.shell.gschema.xml.in.in.h:23 msgid "Keybinding to open the overview" msgstr "மேற்பார்வையை திறக்கும் விசைபிணைப்பு" #: ../data/org.gnome.shell.gschema.xml.in.in.h:24 msgid "Keybinding to open the Activities Overview." msgstr "செயலிகளின் மேற்பார்வையை திறக்கும் விசைபிணைப்பு." #: ../data/org.gnome.shell.gschema.xml.in.in.h:25 msgid "Keybinding to toggle the visibility of the message tray" msgstr "அறிவிப்பு பலகத்தின் காட்சியை நிலை மாற்ற விசைபிணைப்பு" #: ../data/org.gnome.shell.gschema.xml.in.in.h:26 msgid "Keybinding to toggle the visibility of the message tray." msgstr "அறிவிப்பு பலகத்தின் காட்சியை நிலை மாற்ற விசைபிணைப்பு." #: ../data/org.gnome.shell.gschema.xml.in.in.h:27 msgid "Keybinding to focus the active notification" msgstr "இயங்கு செய்தி அறிவிப்பை குவிக்க விசைபிணைப்பு" #: ../data/org.gnome.shell.gschema.xml.in.in.h:28 msgid "Keybinding to focus the active notification." msgstr "இயங்கு செய்தி அறிவிப்பை குவிக்க விசைபிணைப்பு." #: ../data/org.gnome.shell.gschema.xml.in.in.h:29 msgid "" "Keybinding that pauses and resumes all running tweens, for debugging purposes" msgstr "" "இயக்கத்திலிருக்கும் ட்வீன்கள் அனைத்தையும் இடைநிறுத்தி மீண்டும் துவக்கும் " "விசைப்பிணைப்பாக்கம், வழுநீக்கத் தேவைகளுக்கானது." #: ../data/org.gnome.shell.gschema.xml.in.in.h:30 msgid "Which keyboard to use" msgstr "எந்த விசைப்பலகையை பயன்படுத்த வேண்டும்?" #: ../data/org.gnome.shell.gschema.xml.in.in.h:31 msgid "The type of keyboard to use." msgstr "பயன்படுத்த வேண்டிய விசைப்பலகை வகை" #: ../data/org.gnome.shell.gschema.xml.in.in.h:32 msgid "Limit switcher to current workspace." msgstr "மாற்றியை நடப்பு பணியிடத்திற்கு மட்டும் எனக் கட்டுப்படுத்து." #: ../data/org.gnome.shell.gschema.xml.in.in.h:33 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "ஆம் என அமைக்கப்பட்டால், நடப்புப் பணியிடத்தில் சாளரங்களைக் கொண்டுள்ள " "பயன்பாடுகள் மட்டுமே மாற்றியில் காண்பிக்கப்படும். இல்லாவிட்டால் அனைத்துப் " "பயன்பாடுகளும் இருக்கும்." #: ../data/org.gnome.shell.gschema.xml.in.in.h:34 msgid "The application icon mode." msgstr "பயன்பாடு படவுரு பயன்முறை." #: ../data/org.gnome.shell.gschema.xml.in.in.h:35 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-" "only' (shows only the application icon) or 'both'." msgstr "" "ஸ்விட்ச்சரில் சாளரங்கள் எப்படிக் காண்பிக்கப்படும் என்பதை அமைவாக்கம் " "செய்கிறது. 'சிறுதோற்றம்-" "மட்டும்' (சாளரத்தின் சிறுதோற்றத்தைக் காண்பிக்கும்), " "'பயன்பாட்டு-படவுரு-மட்டும்' (பயன்பாட்டின் " "படவுருவை மட்டும் காண்பிக்கும்) அல்லது 'இரன்டும்' ஆகிய சாத்தியங்கள் உள்ளன." #: ../data/org.gnome.shell.gschema.xml.in.in.h:36 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "ஆம் என அமைக்கப்பட்டால், நடப்புப் பணியிடத்தில் உள்ள சாளரங்கள் மட்டுமே " "மாற்றியில் காண்பிக்கப்படும். இல்லாவிட்டால் அனைத்து சாளரங்களும் இருக்கும்." #: ../data/org.gnome.shell.gschema.xml.in.in.h:37 msgid "Attach modal dialog to the parent window" msgstr "தாய் சாளரத்துக்கு மாதிரி உரையாடலை இணை" #: ../data/org.gnome.shell.gschema.xml.in.in.h:38 msgid "" "This key overrides the key in org.gnome.mutter when running GNOME Shell." msgstr "" "இந்த விசை org.gnome.mutter இல் உள்ள விசையை க்னோம் ஷெல்லை இயக்கும்போது " "வன்மீறல் செய்கிறது." #: ../data/org.gnome.shell.gschema.xml.in.in.h:39 msgid "Enable edge tiling when dropping windows on screen edges" msgstr "திரை விளிம்புகளில் சாளரங்களை இடும்போது விளிம்பு சாய்தலை செயலாக்கு" #: ../data/org.gnome.shell.gschema.xml.in.in.h:40 msgid "Workspaces are managed dynamically" msgstr "பணிக்களங்கள் இயங்கு நிலையில் மேலாளப்படுகின்றன" #: ../data/org.gnome.shell.gschema.xml.in.in.h:41 msgid "Workspaces only on primary monitor" msgstr "பணிக்களங்கள் முதன்மை திரையில் மட்டும் " #: ../data/org.gnome.shell.gschema.xml.in.in.h:42 msgid "Delay focus changes in mouse mode until the pointer stops moving" msgstr "" "சொடுக்கி பயன்முறையில் சுட்டி நகர்வது நிற்கும் வரை கவனப் பகுதி மாறுவதைத் " "தாமதிக்கவும்" #: ../data/org.gnome.Shell.PortalHelper.desktop.in.h:1 msgid "Captive Portal" msgstr "கட்டுப்படுத்தப்பட்ட வலைவாசல்" #: ../js/extensionPrefs/main.js:123 #, javascript-format msgid "There was an error loading the preferences dialog for %s:" msgstr "%s க்கு விருப்பங்கள் உரையாடலை ஏற்றுகையில் பிழை நேர்ந்தது:" #: ../js/extensionPrefs/main.js:155 #| msgid "Configure GNOME Shell Extensions" msgid "GNOME Shell Extensions" msgstr "GNOME ஷெல் நீட்சிகள்" #: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143 #: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:452 #: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399 #: ../js/ui/status/network.js:915 msgid "Cancel" msgstr "ரத்துசெய்க" #: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:217 msgid "Next" msgstr "அடுத்தது" #: ../js/gdm/authPrompt.js:213 ../js/ui/shellMountOperation.js:403 #: ../js/ui/unlockDialog.js:59 msgid "Unlock" msgstr "பூட்டை திற" #: ../js/gdm/authPrompt.js:215 msgctxt "button" msgid "Sign In" msgstr "உள்நுழை" #: ../js/gdm/loginDialog.js:269 msgid "Choose Session" msgstr "அமர்வை தேர்ந்தெடு" #: ../js/gdm/loginDialog.js:429 msgid "Not listed?" msgstr "பட்டியலில் இல்லை?" #: ../js/gdm/loginDialog.js:614 #, javascript-format msgid "(e.g., user or %s)" msgstr "(எ.கா., பயனர் அல்லது %s)" #: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:269 #: ../js/ui/components/networkAgent.js:287 msgid "Username: " msgstr "பயனர்பெயர்: " #: ../js/gdm/loginDialog.js:922 msgid "Login Window" msgstr "உள்புகு சாளரம்" #: ../js/gdm/util.js:323 msgid "Authentication error" msgstr "உறுதிப்படுத்தல் பிழை" #: ../js/gdm/util.js:453 msgid "(or swipe finger)" msgstr "(அல்லது விரல் தீய்ப்பு)" #: ../js/misc/util.js:115 msgid "Command not found" msgstr "கட்டளை காணப்படவில்லை" #: ../js/misc/util.js:148 msgid "Could not parse command:" msgstr "கட்டளையை அலகிட முடியவில்லை" #: ../js/misc/util.js:156 #, javascript-format #| msgid "Execution of '%s' failed:" msgid "Execution of “%s” failed:" msgstr "“%s” செயல்படுத்தல் தோல்வியடைந்தது:" #: ../js/portalHelper/main.js:85 #| msgid "Authentication Required" msgid "Web Authentication Redirect" msgstr "இணைய அங்கீகரிப்பு திருப்பிவிடல்" #: ../js/ui/appDisplay.js:772 msgid "Frequently used applications will appear here" msgstr "அதிகம் பயன்படுத்தப்படும் பயன்பாடுகள் இங்கு காண்பிக்கப்படும்" #: ../js/ui/appDisplay.js:883 msgid "Frequent" msgstr "அடிக்கடி" #: ../js/ui/appDisplay.js:890 msgid "All" msgstr "எல்லா" #: ../js/ui/appDisplay.js:1789 msgid "New Window" msgstr "புதிய சாளரம்" #: ../js/ui/appDisplay.js:1815 ../js/ui/dash.js:285 msgid "Remove from Favorites" msgstr "விருப்பத்தில் இருந்து நீக்கு" #: ../js/ui/appDisplay.js:1821 msgid "Add to Favorites" msgstr "விருப்பங்களுக்கு சேர்" #: ../js/ui/appDisplay.js:1830 #| msgid "Show Text" msgid "Show Details" msgstr "விவரங்களைக் காட்டு" #: ../js/ui/appFavorites.js:124 #, javascript-format msgid "%s has been added to your favorites." msgstr "%s உங்கள் விருப்பங்களில் சேர்க்கப்பட்டது" #: ../js/ui/appFavorites.js:158 #, javascript-format msgid "%s has been removed from your favorites." msgstr "%s உங்கள் விருப்பங்களில் இருந்து நீக்கப்பட்டது" #: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:813 #: ../js/ui/status/system.js:337 msgid "Settings" msgstr "அமைப்புகள்" #: ../js/ui/backgroundMenu.js:21 msgid "Change Background…" msgstr "பின்புலத்தை மாற்று…" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. */ #: ../js/ui/calendar.js:67 msgctxt "event list time" msgid "All Day" msgstr "முழு நாள்" #. Translators: Shown in calendar event list, if 24h format, #. \u2236 is a ratio character, similar to : */ #: ../js/ui/calendar.js:73 msgctxt "event list time" msgid "%H∶%M" msgstr "%H∶%M" #. Translators: Shown in calendar event list, if 12h format, #. \u2236 is a ratio character, similar to : and \u2009 is #. a thin space */ #: ../js/ui/calendar.js:82 msgctxt "event list time" msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. */ #: ../js/ui/calendar.js:113 msgctxt "grid sunday" msgid "S" msgstr "ஞா" #. Translators: Calendar grid abbreviation for Monday */ #: ../js/ui/calendar.js:115 msgctxt "grid monday" msgid "M" msgstr "தி" #. Translators: Calendar grid abbreviation for Tuesday */ #: ../js/ui/calendar.js:117 msgctxt "grid tuesday" msgid "T" msgstr "செ" #. Translators: Calendar grid abbreviation for Wednesday */ #: ../js/ui/calendar.js:119 msgctxt "grid wednesday" msgid "W" msgstr "பு" #. Translators: Calendar grid abbreviation for Thursday */ #: ../js/ui/calendar.js:121 msgctxt "grid thursday" msgid "T" msgstr "வி" #. Translators: Calendar grid abbreviation for Friday */ #: ../js/ui/calendar.js:123 msgctxt "grid friday" msgid "F" msgstr "வெ" #. Translators: Calendar grid abbreviation for Saturday */ #: ../js/ui/calendar.js:125 msgctxt "grid saturday" msgid "S" msgstr "ச" #. Translators: Event list abbreviation for Sunday. #. * #. * NOTE: These list abbreviations are normally not shown together #. * so they need to be unique (e.g. Tuesday and Thursday cannot #. * both be 'T'). #. */ #: ../js/ui/calendar.js:138 msgctxt "list sunday" msgid "Su" msgstr "ஞா" #. Translators: Event list abbreviation for Monday */ #: ../js/ui/calendar.js:140 msgctxt "list monday" msgid "M" msgstr "தி" #. Translators: Event list abbreviation for Tuesday */ #: ../js/ui/calendar.js:142 msgctxt "list tuesday" msgid "T" msgstr "செ" #. Translators: Event list abbreviation for Wednesday */ #: ../js/ui/calendar.js:144 msgctxt "list wednesday" msgid "W" msgstr "பு" #. Translators: Event list abbreviation for Thursday */ #: ../js/ui/calendar.js:146 msgctxt "list thursday" msgid "Th" msgstr "வியா" #. Translators: Event list abbreviation for Friday */ #: ../js/ui/calendar.js:148 msgctxt "list friday" msgid "F" msgstr "வெ" #. Translators: Event list abbreviation for Saturday */ #: ../js/ui/calendar.js:150 msgctxt "list saturday" msgid "S" msgstr "ச" #: ../js/ui/calendar.js:453 msgid "Previous month" msgstr "முந்தைய மாதம்" #: ../js/ui/calendar.js:463 msgid "Next month" msgstr "அடுத்த மாதம்" #. Translators: Text to show if there are no events */ #: ../js/ui/calendar.js:781 msgid "Nothing Scheduled" msgstr "திட்டம் எதுவுமில்லை" #. Translators: Shown on calendar heading when selected day occurs on current year */ #: ../js/ui/calendar.js:799 msgctxt "calendar heading" msgid "%A, %B %d" msgstr "%A, %B %d" #. Translators: Shown on calendar heading when selected day occurs on different year */ #: ../js/ui/calendar.js:802 msgctxt "calendar heading" msgid "%A, %B %d, %Y" msgstr "%A, %B %d, %Y" #: ../js/ui/calendar.js:813 msgid "Today" msgstr "இன்று" #: ../js/ui/calendar.js:817 msgid "Tomorrow" msgstr "நாளை" #: ../js/ui/calendar.js:828 msgid "This week" msgstr "இந்த வாரம்" #: ../js/ui/calendar.js:836 msgid "Next week" msgstr "அடுத்த வாரம்" #: ../js/ui/components/automountManager.js:91 msgid "External drive connected" msgstr "வெளிப்புற இயக்கி இணைக்கப்பட்டது" #: ../js/ui/components/automountManager.js:102 msgid "External drive disconnected" msgstr "வெளிப்புற இயக்கி இணைப்பு நீக்கப்பட்டது" #: ../js/ui/components/autorunManager.js:296 msgid "Removable Devices" msgstr "நீக்கப்படக்கூடிய சாதனங்கள் " #: ../js/ui/components/autorunManager.js:596 #, javascript-format msgid "Open with %s" msgstr "%s ஆல் திற" #: ../js/ui/components/autorunManager.js:622 msgid "Eject" msgstr "வெளியேற்று" #: ../js/ui/components/keyring.js:94 ../js/ui/components/polkitAgent.js:285 msgid "Password:" msgstr "கடவுச்சொல்:" #: ../js/ui/components/keyring.js:120 msgid "Type again:" msgstr "மீண்டும் உள்ளிடவும்:" #: ../js/ui/components/networkAgent.js:138 ../js/ui/status/network.js:277 #: ../js/ui/status/network.js:359 ../js/ui/status/network.js:918 msgid "Connect" msgstr "இணை" #: ../js/ui/components/networkAgent.js:231 #: ../js/ui/components/networkAgent.js:243 #: ../js/ui/components/networkAgent.js:271 #: ../js/ui/components/networkAgent.js:291 #: ../js/ui/components/networkAgent.js:301 msgid "Password: " msgstr "கடவுச்சொல்:" #: ../js/ui/components/networkAgent.js:236 msgid "Key: " msgstr "விசை: " #: ../js/ui/components/networkAgent.js:275 msgid "Identity: " msgstr "அடையாளம்: " #: ../js/ui/components/networkAgent.js:277 msgid "Private key password: " msgstr "அந்தரங்க முதன்மை கடவுச்சொல்: " #: ../js/ui/components/networkAgent.js:289 msgid "Service: " msgstr "சேவை:" #: ../js/ui/components/networkAgent.js:318 msgid "Authentication required by wireless network" msgstr "கம்பியில்லா வலைப்பின்னலுக்கு உறுதிப்படுத்துதல் தேவை" #: ../js/ui/components/networkAgent.js:319 #, javascript-format #| msgid "" #| "Passwords or encryption keys are required to access the wireless network " #| "'%s'." msgid "" "Passwords or encryption keys are required to access the wireless network " "“%s”." msgstr "" "வயர்லெஸ் பிணையம் \"%s\" ஐ அணுக கடவுச்சொற்கள் அல்லது மறைகுறியாகக் விசைகள் " "தேவைப்படுகிறது." #: ../js/ui/components/networkAgent.js:323 msgid "Wired 802.1X authentication" msgstr "கம்பியுள்ள 802.1X அங்கீகாரம்" #: ../js/ui/components/networkAgent.js:325 msgid "Network name: " msgstr "வலைப்பின்னல் பெயர்:" #: ../js/ui/components/networkAgent.js:330 msgid "DSL authentication" msgstr "டிஎஸ்எல் உறுதிப்படுத்துதல் " #: ../js/ui/components/networkAgent.js:337 msgid "PIN code required" msgstr "பின் கோட் தேவைப்படுகிறது" #: ../js/ui/components/networkAgent.js:338 msgid "PIN code is needed for the mobile broadband device" msgstr "அலை அகலப்பட்டை சாதனத்துக்கு பின் கோட் தேவை" #: ../js/ui/components/networkAgent.js:339 msgid "PIN: " msgstr "PIN: " #: ../js/ui/components/networkAgent.js:345 msgid "Mobile broadband network password" msgstr "அலை அகலப்பட்டைக்கு வலைப்பின்னல் கடவுச்சொல்" #: ../js/ui/components/networkAgent.js:346 #, javascript-format #| msgid "A password is required to connect to '%s'." msgid "A password is required to connect to “%s”." msgstr "\"%s\" உடன் இணைப்பதற்கு கடவுச்சொல் தேவைப்படுகிறது." #: ../js/ui/components/polkitAgent.js:54 msgid "Authentication Required" msgstr "உறுதிப்படுத்தல் தேவை" #: ../js/ui/components/polkitAgent.js:96 msgid "Administrator" msgstr "நிர்வாகி" #: ../js/ui/components/polkitAgent.js:175 msgid "Authenticate" msgstr "உறுதிப்படுத்து" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. */ #: ../js/ui/components/polkitAgent.js:271 ../js/ui/shellMountOperation.js:383 msgid "Sorry, that didn't work. Please try again." msgstr "மன்னிக்க, அது வேலை செய்யவில்லை. மீண்டு முயற்சி செய்க." #: ../js/ui/components/telepathyClient.js:240 msgid "Invitation" msgstr "அழைப்பு" #: ../js/ui/components/telepathyClient.js:300 msgid "Call" msgstr "அழை" #: ../js/ui/components/telepathyClient.js:316 msgid "File Transfer" msgstr "கோப்பு பறிமாற்றம் " #: ../js/ui/components/telepathyClient.js:420 msgid "Chat" msgstr "அரட்டை" #: ../js/ui/components/telepathyClient.js:483 msgid "Unmute" msgstr "ஒலி நிறுத்தம் நீக்கு" #: ../js/ui/components/telepathyClient.js:483 msgid "Mute" msgstr "ஒலி நிறுத்தம்" #. Translators: Time in 24h format */ #: ../js/ui/components/telepathyClient.js:953 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" */ #: ../js/ui/components/telepathyClient.js:960 msgid "Yesterday, %H∶%M" msgstr "நேற்று, %H∶%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" */ #: ../js/ui/components/telepathyClient.js:967 msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" */ #: ../js/ui/components/telepathyClient.js:974 msgid "%B %d, %H∶%M" msgstr "%B %d, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" */ #: ../js/ui/components/telepathyClient.js:980 msgid "%B %d %Y, %H∶%M" msgstr "%B %d %Y, %H∶%M" #. Translators: Time in 24h format */ #: ../js/ui/components/telepathyClient.js:986 msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" */ #: ../js/ui/components/telepathyClient.js:993 msgid "Yesterday, %l∶%M %p" msgstr "நேற்று, %l∶%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" */ #: ../js/ui/components/telepathyClient.js:1000 msgid "%A, %l∶%M %p" msgstr "%A, %l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" */ #: ../js/ui/components/telepathyClient.js:1007 msgid "%B %d, %l∶%M %p" msgstr "%B %d, %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm"*/ #: ../js/ui/components/telepathyClient.js:1013 msgid "%B %d %Y, %l∶%M %p" msgstr "%B %d %Y, %l∶%M %p" #. Translators: this is the other person changing their old IM name to their new #. IM name. */ #: ../js/ui/components/telepathyClient.js:1045 #, javascript-format msgid "%s is now known as %s" msgstr "%s இப்போது %s ஆனார்" #. translators: argument is a room name like #. * room@jabber.org for example. */ #: ../js/ui/components/telepathyClient.js:1149 #, javascript-format msgid "Invitation to %s" msgstr "%s க்கு அழைப்பு" #. translators: first argument is the name of a contact and the second #. * one the name of a room. "Alice is inviting you to join room@jabber.org #. * for example. */ #: ../js/ui/components/telepathyClient.js:1157 #, javascript-format msgid "%s is inviting you to join %s" msgstr "%s உங்களை %s உடன் சேர அழைக்கிறார்." #: ../js/ui/components/telepathyClient.js:1159 #: ../js/ui/components/telepathyClient.js:1194 #: ../js/ui/components/telepathyClient.js:1228 #: ../js/ui/components/telepathyClient.js:1286 msgid "Decline" msgstr "நிராகரி" #: ../js/ui/components/telepathyClient.js:1165 #: ../js/ui/components/telepathyClient.js:1234 #: ../js/ui/components/telepathyClient.js:1291 msgid "Accept" msgstr "ஏற்றுக்கொள்" #. translators: argument is a contact name like Alice for example. */ #: ../js/ui/components/telepathyClient.js:1184 #, javascript-format msgid "Video call from %s" msgstr "%s இடமிருந்து விடியோ அழைப்பு" #. translators: argument is a contact name like Alice for example. */ #: ../js/ui/components/telepathyClient.js:1187 #, javascript-format msgid "Call from %s" msgstr "%s இடமிருந்து அழைப்பு" #. translators: this is a button label (verb), not a noun */ #: ../js/ui/components/telepathyClient.js:1201 msgid "Answer" msgstr "பதிலளி" #. To translators: The first parameter is #. * the contact's alias and the second one is the #. * file name. The string will be something #. * like: "Alice is sending you test.ogg" #. */ #: ../js/ui/components/telepathyClient.js:1222 #, javascript-format msgid "%s is sending you %s" msgstr "%s உங்களுக்கு %s அனுப்புகிறார்" #. To translators: The parameter is the contact's alias */ #: ../js/ui/components/telepathyClient.js:1251 #, javascript-format msgid "%s would like permission to see when you are online" msgstr "%s நீங்கள் இணைப்பில் இருக்கும் போது காண அனுமதி வேண்டுகிறார். " #: ../js/ui/components/telepathyClient.js:1337 msgid "Network error" msgstr "வலையமைப்பு பிழை" #: ../js/ui/components/telepathyClient.js:1339 msgid "Authentication failed" msgstr "உறுதி செய்தல் தோல்வி" #: ../js/ui/components/telepathyClient.js:1341 msgid "Encryption error" msgstr "மறையாக்க பிழை" #: ../js/ui/components/telepathyClient.js:1343 msgid "Certificate not provided" msgstr "சான்றிதழ் தரப்படவில்லை" #: ../js/ui/components/telepathyClient.js:1345 msgid "Certificate untrusted" msgstr "சான்றிதழில் நம்பக தன்மை இல்லை" #: ../js/ui/components/telepathyClient.js:1347 msgid "Certificate expired" msgstr "சான்றிதழ் காலாவதியானது" #: ../js/ui/components/telepathyClient.js:1349 msgid "Certificate not activated" msgstr "சான்றிதழ் செயல்படுத்தப்படவில்லை" #: ../js/ui/components/telepathyClient.js:1351 msgid "Certificate hostname mismatch" msgstr "சான்றிதழ் புரவலன் பெயர் ஒத்திசையவில்லை" #: ../js/ui/components/telepathyClient.js:1353 msgid "Certificate fingerprint mismatch" msgstr "சான்றிதழ் அடையாளம் ஒத்திசையவில்லை" #: ../js/ui/components/telepathyClient.js:1355 msgid "Certificate self-signed" msgstr "சான்றிதழ் தானே கையெழுத்திட்டது" #: ../js/ui/components/telepathyClient.js:1357 msgid "Status is set to offline" msgstr "நிலை இப்போது இணைப்பு விலகி " #: ../js/ui/components/telepathyClient.js:1359 msgid "Encryption is not available" msgstr "குறீயீட்டுமுறை கிடைப்பில் இல்லை" #: ../js/ui/components/telepathyClient.js:1361 msgid "Certificate is invalid" msgstr "சான்றிதழ் செல்லுபடியாகாது" #: ../js/ui/components/telepathyClient.js:1363 msgid "Connection has been refused" msgstr "இணைப்பு மறுக்கப்பட்டது" #: ../js/ui/components/telepathyClient.js:1365 msgid "Connection can't be established" msgstr "இணைக்க முடியவில்லை" #: ../js/ui/components/telepathyClient.js:1367 msgid "Connection has been lost" msgstr "இணைப்பு அற்றுப்போயிற்று" #: ../js/ui/components/telepathyClient.js:1369 msgid "This account is already connected to the server" msgstr "இந்த கணக்கு ஏற்கனவே சேவையகத்துக்கு இணைக்கப்பட்டது" #: ../js/ui/components/telepathyClient.js:1371 msgid "" "Connection has been replaced by a new connection using the same resource" msgstr "இணைப்பு அதே முலத்துடன் புதிய இணைப்பால் மாற்றப்பட்டது." #: ../js/ui/components/telepathyClient.js:1373 msgid "The account already exists on the server" msgstr "இந்த கணக்கு ஏற்கனவே சேவையகத்தில் உள்ளது" #: ../js/ui/components/telepathyClient.js:1375 msgid "Server is currently too busy to handle the connection" msgstr "இணைப்பை கையாள சேவையகம் இப்போது மிகவும் வேலை பளுவில் உள்ளது." #: ../js/ui/components/telepathyClient.js:1377 msgid "Certificate has been revoked" msgstr "சான்றிதழ் ரத்து செய்யப்பட்டது" #: ../js/ui/components/telepathyClient.js:1379 msgid "" "Certificate uses an insecure cipher algorithm or is cryptographically weak" msgstr "" "சான்றிதழ் பாதுகாப்பில்லாத சைபர் அல்கோரிதத்தை பயன்படுத்துகிறது. இது " "மறையாக்கத்தில் " "பலகீனமானது." #: ../js/ui/components/telepathyClient.js:1381 msgid "" "The length of the server certificate, or the depth of the server certificate " "chain, exceed the limits imposed by the cryptography library" msgstr "" "சேவயகத்தின் சான்றிதழின் நீளம் அல்லது சங்கிலியின் ஆழம் மறையாக்க நூலகம் " "வரயறுத்த மதிப்பை " "தாண்டியது." #: ../js/ui/components/telepathyClient.js:1383 msgid "Internal error" msgstr "உள்ளார்ந்த பிழை" #. translators: argument is the account name, like #. * name@jabber.org for example. */ #: ../js/ui/components/telepathyClient.js:1393 #, javascript-format msgid "Unable to connect to %s" msgstr "%s க்கு இணைக்க முடியவில்லை" #: ../js/ui/components/telepathyClient.js:1398 msgid "View account" msgstr "கணக்கை காட்டவும்" #: ../js/ui/components/telepathyClient.js:1435 msgid "Unknown reason" msgstr "தெரியாத காரணம்" #: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:154 msgid "Windows" msgstr "சாளரங்கள்" #: ../js/ui/dash.js:249 ../js/ui/dash.js:287 msgid "Show Applications" msgstr "பயன்பாடுகளை காட்டு" #: ../js/ui/dash.js:445 msgid "Dash" msgstr "டேஷ்போர்ட்" #: ../js/ui/dateMenu.js:96 msgid "Open Calendar" msgstr "நாள்காட்டியை திற" #: ../js/ui/dateMenu.js:100 msgid "Open Clocks" msgstr "கடிகாரங்களைத் திற" #: ../js/ui/dateMenu.js:107 msgid "Date & Time Settings" msgstr "தேதி நேரம் அமைப்புகள்" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM"). #. */ #: ../js/ui/dateMenu.js:204 msgid "%A %B %e, %Y" msgstr "%A %B %e, %Y" #: ../js/ui/endSessionDialog.js:64 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "%s யிலிருந்து வெளியேறு" #: ../js/ui/endSessionDialog.js:65 msgctxt "title" msgid "Log Out" msgstr "வெளியேறு" #: ../js/ui/endSessionDialog.js:67 #, javascript-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "%s தானியங்கியாக %d வினாடியில் வெளியேறும்" msgstr[1] "%s தானியங்கியாக %d வினாடிகளில் வெளியேறும்" #: ../js/ui/endSessionDialog.js:72 #, javascript-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "நீங்கள் தானியங்கியாக %d வினாடியில் வெளியேற்றப்படுவீர்கள் " msgstr[1] "நீங்கள் தானியங்கியாக %d வினாடிகளில் வெளியேற்றப்படுவீர்கள் " #: ../js/ui/endSessionDialog.js:78 msgctxt "button" msgid "Log Out" msgstr "வெளியேறு" #: ../js/ui/endSessionDialog.js:84 msgctxt "title" msgid "Power Off" msgstr "மின்சக்தி நிறுத்தம்" #: ../js/ui/endSessionDialog.js:85 msgctxt "title" msgid "Install Updates & Power Off" msgstr "புதுப்பிப்புகளை நிறுவு & இயக்கம் நிறுத்து" #: ../js/ui/endSessionDialog.js:87 #, javascript-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "கணினி தானியங்கியாக %d வினாடியில் மின் நிறுத்தப்படும்" msgstr[1] "கணினி தானியங்கியாக %d வினாடிகளில் மின் நிறுத்தப்படும்" #: ../js/ui/endSessionDialog.js:91 msgctxt "checkbox" msgid "Install pending software updates" msgstr "நிலுவையிலுள்ள மென்பொருள் புதுப்பிப்புகளை நிறுவு" #: ../js/ui/endSessionDialog.js:94 ../js/ui/endSessionDialog.js:111 msgctxt "button" msgid "Restart" msgstr "மறு துவக்கம்" #: ../js/ui/endSessionDialog.js:96 msgctxt "button" msgid "Power Off" msgstr "மின்சக்தி நிறுத்தம்" #: ../js/ui/endSessionDialog.js:103 msgctxt "title" msgid "Restart" msgstr "மறு துவக்கம்" #: ../js/ui/endSessionDialog.js:105 #, javascript-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "கணினி தானியங்கியாக %d வினாடியில் மீள் துவக்கம் செய்யப்படும்." msgstr[1] "கணினி தானியங்கியாக %d வினாடிகளில் மீள் துவக்கம் செய்யப்படும்." #: ../js/ui/endSessionDialog.js:119 msgctxt "title" msgid "Restart & Install Updates" msgstr "மறுதுவக்கு & புதுப்பிப்புகளை நிறுவு" #: ../js/ui/endSessionDialog.js:121 #, javascript-format msgid "The system will automatically restart and install updates in %d second." msgid_plural "" "The system will automatically restart and install updates in %d seconds." msgstr[0] "%d வினாடியில் கணினி தானாக மறுதுவக்கமாகி புதுப்பிப்புகளை நிறுவும்." msgstr[1] "%d வினாடிகளில் கணினி தானாக மறுதுவக்கமாகி புதுப்பிப்புகளை நிறுவும்." #: ../js/ui/endSessionDialog.js:127 msgctxt "button" msgid "Restart & Install" msgstr "மறுதுவக்கு & நிறுவு" #: ../js/ui/endSessionDialog.js:128 msgctxt "button" msgid "Install & Power Off" msgstr "நிறுவு & இயக்கம் நிறுத்து" #: ../js/ui/endSessionDialog.js:129 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "புதுப்பிப்புகள் நிறுவப்பட்ட பிறகு இயக்கம் நிறுத்து" #: ../js/ui/endSessionDialog.js:338 msgid "Running on battery power: please plug in before installing updates." msgstr "" "மின்கல சக்தியில் இயங்குகிறது: புதுப்பிப்புகளை நிறுவும் முன்பு மின் இணைப்பு " "கொடுக்கவும்." #: ../js/ui/endSessionDialog.js:355 msgid "Some applications are busy or have unsaved work." msgstr "" "சில பயன்பாடுகள் பணிமிகுதியாக உள்ளன அல்லது சேமிக்காத வேலையைக் கொண்டுள்ளன." #: ../js/ui/endSessionDialog.js:362 msgid "Other users are logged in." msgstr "மற்ற பயனர்கள் புகுபதிவு செய்துள்ளனர்." #. Translators: Remote here refers to a remote session, like a ssh login */ #: ../js/ui/endSessionDialog.js:640 #, javascript-format msgid "%s (remote)" msgstr "%s (தொலைநிலை)" #. Translators: Console here refers to a tty like a VT console */ #: ../js/ui/endSessionDialog.js:643 #, javascript-format msgid "%s (console)" msgstr "%s (கன்சோல்)" #: ../js/ui/extensionDownloader.js:199 msgid "Install" msgstr "நிறுவு" #: ../js/ui/extensionDownloader.js:204 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "extensions.gnome.org இல் இருந்து '%s' ஐ தரவிறக்கி நிறுவவா?" #: ../js/ui/keyboard.js:692 ../js/ui/status/keyboard.js:523 msgid "Keyboard" msgstr "விசைப்பலகை" #: ../js/ui/lookingGlass.js:643 msgid "No extensions installed" msgstr "நீட்சிகள் ஏதும் நிறுவப்படவில்லை" #. Translators: argument is an extension UUID. */ #: ../js/ui/lookingGlass.js:697 #, javascript-format msgid "%s has not emitted any errors." msgstr "%s எந்த பிழையையும் வெளியிடவில்லை" #: ../js/ui/lookingGlass.js:703 msgid "Hide Errors" msgstr "பிழைகளை மறை" #: ../js/ui/lookingGlass.js:707 ../js/ui/lookingGlass.js:767 msgid "Show Errors" msgstr "பிழைகளை காட்டுக" #: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:71 #: ../js/ui/status/location.js:176 msgid "Enabled" msgstr "செயலாக்கப்பட்டது" #. Translators: this is for a network device that cannot be activated #. because it's disabled by rfkill (airplane mode) */ #. translators: #. * The device has been disabled #: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:179 #: ../js/ui/status/network.js:592 ../src/gvc/gvc-mixer-control.c:1830 msgid "Disabled" msgstr "செயல்நீக்கப்பட்டது" #: ../js/ui/lookingGlass.js:721 msgid "Error" msgstr "பிழை" #: ../js/ui/lookingGlass.js:723 msgid "Out of date" msgstr "காலாவதியானது" #: ../js/ui/lookingGlass.js:725 msgid "Downloading" msgstr "பதிவிறக்குகிறது" #: ../js/ui/lookingGlass.js:749 msgid "View Source" msgstr "மூலத்தை பார்க்க" #: ../js/ui/lookingGlass.js:758 msgid "Web Page" msgstr "இணைய பக்கம்" #: ../js/ui/messageTray.js:1326 msgid "Open" msgstr "திற" #: ../js/ui/messageTray.js:1333 msgid "Remove" msgstr "நீக்கு" #: ../js/ui/messageTray.js:1630 msgid "Notifications" msgstr "அறிவிப்புகள்" #: ../js/ui/messageTray.js:1637 msgid "Clear Messages" msgstr "செய்திகளை அழி" #: ../js/ui/messageTray.js:1656 msgid "Notification Settings" msgstr "அறிவிப்பு அமைப்புகள்" #: ../js/ui/messageTray.js:1709 msgid "Tray Menu" msgstr "தட்டில் பட்டி" #: ../js/ui/messageTray.js:1926 msgid "No Messages" msgstr "செய்திகள் இல்லை" #: ../js/ui/messageTray.js:1968 msgid "Message Tray" msgstr "அறிவிப்பு பலகம்" #: ../js/ui/messageTray.js:2971 msgid "System Information" msgstr "கணினி தகவல்கள்" #: ../js/ui/notificationDaemon.js:513 ../src/shell-app.c:425 msgctxt "program" msgid "Unknown" msgstr "தெரியாத" #: ../js/ui/overviewControls.js:482 ../js/ui/screenShield.js:151 #, javascript-format msgid "%d new message" msgid_plural "%d new messages" msgstr[0] "%d புதிய செய்தி" msgstr[1] "%d புதிய செய்திகள்" #: ../js/ui/overview.js:84 msgid "Undo" msgstr "மறை" #: ../js/ui/overview.js:124 msgid "Overview" msgstr "மேலோட்டம்" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. */ #: ../js/ui/overview.js:246 msgid "Type to search…" msgstr "தேட தட்டச்சு செய்யவும்..." #: ../js/ui/panel.js:515 msgid "Quit" msgstr "வெளியேறு" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". */ #: ../js/ui/panel.js:567 msgid "Activities" msgstr "செயல்பாடுகள்" #: ../js/ui/panel.js:918 msgid "Top Bar" msgstr "மேல் பட்டை" #: ../js/ui/popupMenu.js:269 msgid "toggle-switch-us" msgstr "toggle-switch-intl" #: ../js/ui/runDialog.js:70 msgid "Enter a Command" msgstr "ஒரு கட்டளையை உள்ளிடுக" #: ../js/ui/runDialog.js:110 ../js/ui/windowMenu.js:120 msgid "Close" msgstr "மூடுக" #: ../js/ui/runDialog.js:277 msgid "Restarting…" msgstr "மறுதுவக்குகிறது…" #. Translators: This is a time format for a date in #. long format */ #: ../js/ui/screenShield.js:88 msgid "%A, %B %d" msgstr "%A, %B %d" #: ../js/ui/screenShield.js:153 #, javascript-format msgid "%d new notification" msgid_plural "%d new notifications" msgstr[0] "%d புதிய அறிவிப்பு" msgstr[1] "%d புதிய அறிவிப்புகள்" #: ../js/ui/screenShield.js:472 ../js/ui/status/system.js:345 msgid "Lock" msgstr "பூட்டு" #: ../js/ui/screenShield.js:706 msgid "GNOME needs to lock the screen" msgstr "GNOME திரையைப் பூட்ட வேண்டுகிறது" #: ../js/ui/screenShield.js:833 ../js/ui/screenShield.js:1304 msgid "Unable to lock" msgstr "பூட்ட முடியவில்லை" #: ../js/ui/screenShield.js:834 ../js/ui/screenShield.js:1305 msgid "Lock was blocked by an application" msgstr "ஒரு பயன்பாடு பூட்டுதலை முடக்கியுள்ளது" #: ../js/ui/search.js:594 msgid "Searching…" msgstr "தேடுகிறது..." #: ../js/ui/search.js:596 msgid "No results." msgstr "விடைகள் இல்லை." #: ../js/ui/shellEntry.js:25 msgid "Copy" msgstr "நகலெடு" #: ../js/ui/shellEntry.js:30 msgid "Paste" msgstr "ஒட்டு" #: ../js/ui/shellEntry.js:97 msgid "Show Text" msgstr "உரையை காட்டுக" #: ../js/ui/shellEntry.js:99 msgid "Hide Text" msgstr "உரையை மறை" #: ../js/ui/shellMountOperation.js:370 msgid "Password" msgstr "கடவுச்சொல்" #: ../js/ui/shellMountOperation.js:391 msgid "Remember Password" msgstr "கடவுச்சொல்லை நினைவு கொள்ளவும்" #: ../js/ui/status/accessibility.js:42 msgid "Accessibility" msgstr "அணுகல்" #: ../js/ui/status/accessibility.js:57 msgid "Zoom" msgstr "பெரிதாக்கு" #: ../js/ui/status/accessibility.js:64 msgid "Screen Reader" msgstr "திரைபடிப்பான்" #: ../js/ui/status/accessibility.js:68 msgid "Screen Keyboard" msgstr "திரை விசைப்பலகை" #: ../js/ui/status/accessibility.js:72 msgid "Visual Alerts" msgstr "காட்சி எச்சரிக்கைகள்" #: ../js/ui/status/accessibility.js:75 msgid "Sticky Keys" msgstr "ஒட்டு விசைகள்" #: ../js/ui/status/accessibility.js:78 msgid "Slow Keys" msgstr "மெது விசைகள்" #: ../js/ui/status/accessibility.js:81 msgid "Bounce Keys" msgstr "எதிரொலிப்பு விசைகள்" #: ../js/ui/status/accessibility.js:84 msgid "Mouse Keys" msgstr "சொடுக்கி விசைகள்" #: ../js/ui/status/accessibility.js:144 msgid "High Contrast" msgstr "அதிக முறண்" #: ../js/ui/status/accessibility.js:193 msgid "Large Text" msgstr "பெரிய உரை" #: ../js/ui/status/bluetooth.js:49 msgid "Bluetooth" msgstr "ப்ளூடூத்" #: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:178 #: ../js/ui/status/network.js:360 ../js/ui/status/network.js:1281 #: ../js/ui/status/network.js:1392 ../js/ui/status/rfkill.js:86 #: ../js/ui/status/rfkill.js:114 msgid "Turn Off" msgstr "முடக்கு" #: ../js/ui/status/bluetooth.js:54 msgid "Bluetooth Settings" msgstr "ப்ளூடூத் அமைப்புகள்" #: ../js/ui/status/bluetooth.js:104 #, javascript-format msgid "%d Connected Device" msgid_plural "%d Connected Devices" msgstr[0] "இணைக்கப்பட்ட சாதனம் %d" msgstr[1] "இணைக்கப்பட்ட சாதனங்கள் %d" #: ../js/ui/status/bluetooth.js:106 ../js/ui/status/network.js:1309 msgid "Not Connected" msgstr "இணைக்கப்படவில்லை" #: ../js/ui/status/brightness.js:44 msgid "Brightness" msgstr "வெளிச்சம்" #: ../js/ui/status/keyboard.js:547 msgid "Show Keyboard Layout" msgstr "விசைப்பலகை இடவமைவை காட்டுக" #: ../js/ui/status/location.js:65 msgid "Location" msgstr "இருப்பிடம்" #: ../js/ui/status/location.js:72 ../js/ui/status/location.js:177 msgid "Disable" msgstr "முடக்கு" #: ../js/ui/status/location.js:73 msgid "Privacy Settings" msgstr "தனியுரிமை அமைவுகள்" #: ../js/ui/status/location.js:176 msgid "In Use" msgstr "பயனில் உள்ளது" #: ../js/ui/status/location.js:180 msgid "Enable" msgstr "செயல்படுத்து" #: ../js/ui/status/network.js:101 msgid "" msgstr "<தெரியாத>" #: ../js/ui/status/network.js:457 ../js/ui/status/network.js:1307 #: ../js/ui/status/network.js:1511 msgid "Off" msgstr "முடக்கு" #: ../js/ui/status/network.js:459 msgid "Connected" msgstr "இணைக்கப்பட்டது" #. Translators: this is for network devices that are physically present but are not #. under NetworkManager's control (and thus cannot be used in the menu) */ #: ../js/ui/status/network.js:463 msgid "Unmanaged" msgstr "நிர்வகிக்கப்படாதது" #: ../js/ui/status/network.js:465 msgid "Disconnecting" msgstr "துண்டிக்கப்படுகிறது" #: ../js/ui/status/network.js:471 ../js/ui/status/network.js:1301 msgid "Connecting" msgstr "இணைக்கிறது" #. Translators: this is for network connections that require some kind of key or password */ #: ../js/ui/status/network.js:474 msgid "Authentication required" msgstr "அங்கீகரிப்பு தேவை" #. Translators: this is for devices that require some kind of firmware or kernel #. module, which is missing */ #: ../js/ui/status/network.js:482 msgid "Firmware missing" msgstr "சாதன நிரல் இல்லை" #. Translators: this is for a network device that cannot be activated (for example it #. is disabled by rfkill, or it has no coverage */ #: ../js/ui/status/network.js:486 msgid "Unavailable" msgstr "கிடைக்கவில்லை" #: ../js/ui/status/network.js:488 ../js/ui/status/network.js:1695 msgid "Connection failed" msgstr "இணைப்பு தோல்வியுற்றது" #: ../js/ui/status/network.js:504 msgid "Wired Settings" msgstr "வயர்டு அமைவுகள்" #: ../js/ui/status/network.js:546 ../js/ui/status/network.js:624 msgid "Mobile Broadband Settings" msgstr "மொபைல் பிராட்பேண்டு அமைவுகள்" #: ../js/ui/status/network.js:588 ../js/ui/status/network.js:1305 msgid "Hardware Disabled" msgstr "வன்பொருள் முடக்கப்பட்டது" #: ../js/ui/status/network.js:632 msgid "Use as Internet connection" msgstr "இணைய இணைப்பாகப் பயன்படுத்து" #: ../js/ui/status/network.js:813 msgid "Airplane Mode is On" msgstr "விமான பயன்முறை இயக்கத்தில்" #: ../js/ui/status/network.js:814 msgid "Wi-Fi is disabled when airplane mode is on." msgstr "விமானப் பயன்முறை இயக்கத்தில் இருக்கும் போது Wi-Fi முடக்கப்படும்." #: ../js/ui/status/network.js:815 msgid "Turn Off Airplane Mode" msgstr "விமான பயன்முறையை அணைக்கவும்" #: ../js/ui/status/network.js:824 msgid "Wi-Fi is Off" msgstr "Wi-Fi அணைக்கப்பட்டுள்ளது" #: ../js/ui/status/network.js:825 msgid "Wi-Fi needs to be turned on in order to connect to a network." msgstr "பிணையத்திற்கு இணைக்க வேண்டுமானால் Wi-Fi ஐ இயக்க வேண்டும்." #: ../js/ui/status/network.js:826 msgid "Turn On Wi-Fi" msgstr "Wi-Fi ஐ இயக்கு" #: ../js/ui/status/network.js:851 msgid "Wi-Fi Networks" msgstr "கம்பியில்லா பிணையங்கள்" #: ../js/ui/status/network.js:853 msgid "Select a network" msgstr "ஒரு பிணையத்தை தெரிவுச்செய்" #: ../js/ui/status/network.js:882 msgid "No Networks" msgstr "பிணையங்கள் இல்லை" #: ../js/ui/status/network.js:903 ../js/ui/status/rfkill.js:112 msgid "Use hardware switch to turn off" msgstr "அணைக்க, வன்பொருள் பொத்தானைப் பயன்படுத்தவும்" #: ../js/ui/status/network.js:1173 msgid "Select Network" msgstr "பிணையத்தை தெரிவுச்செய்" #: ../js/ui/status/network.js:1179 msgid "Wi-Fi Settings" msgstr "Wi-Fi அமைவுகள்" #: ../js/ui/status/network.js:1281 msgid "Turn On" msgstr "செயற்படுத்து" #: ../js/ui/status/network.js:1298 msgid "Hotspot Active" msgstr "ஹாட்ஸ்பாட் செயலில் உள்ளது" #: ../js/ui/status/network.js:1409 msgid "connecting..." msgstr "இணைக்கிறது..." #. Translators: this is for network connections that require some kind of key or password */ #: ../js/ui/status/network.js:1412 msgid "authentication required" msgstr "உறுதிப்படுத்துதல் தேவை" #: ../js/ui/status/network.js:1414 msgid "connection failed" msgstr "இணைப்பு தோல்வி அடைந்தது" #: ../js/ui/status/network.js:1480 ../js/ui/status/rfkill.js:89 msgid "Network Settings" msgstr "வலைப்பின்னல் அமைப்புகள்" #: ../js/ui/status/network.js:1482 msgid "VPN Settings" msgstr "VPN அமைவுகள்" #: ../js/ui/status/network.js:1501 msgid "VPN" msgstr "விபிஎன் - VPN" #: ../js/ui/status/network.js:1656 msgid "Network Manager" msgstr "வலைப்பின்னல் மேலாளர்" #: ../js/ui/status/network.js:1696 msgid "Activation of network connection failed" msgstr "வலைப்பின்னல் இணைப்பு செயலாக்கம் தோல்வி அடைந்தது" #: ../js/ui/status/power.js:49 msgid "Power Settings" msgstr "மின்சக்தி அமைப்புகள்" #: ../js/ui/status/power.js:65 msgid "Fully Charged" msgstr "முழுமையாக மின்னூட்டப்பட்டது" #: ../js/ui/status/power.js:72 ../js/ui/status/power.js:78 msgid "Estimating…" msgstr "கணிக்கிறது…" #: ../js/ui/status/power.js:86 #, javascript-format msgid "%d∶%02d Remaining (%d%%)" msgstr "%d∶%02d மீதமுள்ளது (%d%%)" #: ../js/ui/status/power.js:91 #, javascript-format msgid "%d∶%02d Until Full (%d%%)" msgstr "%d∶%02d முழுமையாகும் வரை (%d%%)" #: ../js/ui/status/power.js:119 msgid "UPS" msgstr "UPS" #: ../js/ui/status/power.js:121 msgid "Battery" msgstr "மின்கலம்" #: ../js/ui/status/rfkill.js:83 msgid "Airplane Mode" msgstr "விமான பயன்முறை" #: ../js/ui/status/rfkill.js:85 msgid "On" msgstr "மீது\t" #: ../js/ui/status/system.js:317 msgid "Switch User" msgstr "பயனர் மாற்று" #: ../js/ui/status/system.js:322 msgid "Log Out" msgstr "வெளியேறு" #: ../js/ui/status/system.js:341 msgid "Orientation Lock" msgstr "சார்பு பூட்டு" #: ../js/ui/status/system.js:349 msgid "Suspend" msgstr "இடைநிறுத்தம்." #: ../js/ui/status/system.js:352 msgid "Power Off" msgstr "மின்சக்தி நிறுத்தம்" #: ../js/ui/status/volume.js:127 msgid "Volume changed" msgstr "ஒலியளவு மாற்றப்பட்டது" #: ../js/ui/status/volume.js:162 msgid "Volume" msgstr "ஒலியளவு" #: ../js/ui/status/volume.js:213 msgid "Microphone" msgstr "மைக்ரோஃபோன்" #: ../js/ui/unlockDialog.js:67 msgid "Log in as another user" msgstr "வேறு பயனராக உள்நுழைக" #: ../js/ui/unlockDialog.js:84 msgid "Unlock Window" msgstr "சாளர பூட்டு திறக்கவும்" #: ../js/ui/viewSelector.js:158 msgid "Applications" msgstr "பயன்பாடுகள்" #: ../js/ui/viewSelector.js:162 msgid "Search" msgstr "தேடு" #: ../js/ui/windowAttentionHandler.js:19 #, javascript-format msgid "“%s” is ready" msgstr "“%s” தயாராக உள்ளது" #: ../js/ui/windowManager.js:65 msgid "Do you want to keep these display settings?" msgstr "இந்தக் காட்சி அமைவுகளை வைத்திருக்க வேண்டுமா?" #. Translators: this and the following message should be limited in lenght, #. to avoid ellipsizing the labels. #. */ #: ../js/ui/windowManager.js:84 msgid "Revert Settings" msgstr "அமைவுகளை மீட்டமை" #: ../js/ui/windowManager.js:88 msgid "Keep Changes" msgstr "மாற்றங்களைச் செயல்படுத்து" #: ../js/ui/windowManager.js:107 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "அமைவுகளின் மாற்றங்கள் %d வினாடியில் மீட்டமைக்கப்படும்" msgstr[1] "அமைவுகளின் மாற்றங்கள் %d வினாடிகளில் மீட்டமைக்கப்படும்" #: ../js/ui/windowMenu.js:34 msgid "Minimize" msgstr "சிறிதாக்கு" #: ../js/ui/windowMenu.js:41 msgid "Unmaximize" msgstr "பெரிதாக்க வேண்டாம்" #: ../js/ui/windowMenu.js:45 msgid "Maximize" msgstr "பெரிதாக்கு" #: ../js/ui/windowMenu.js:52 msgid "Move" msgstr "நகர்த்து" #: ../js/ui/windowMenu.js:58 msgid "Resize" msgstr "மறுஅளவிடு" #: ../js/ui/windowMenu.js:65 msgid "Move Titlebar Onscreen" msgstr "தலைப்புப்பட்டையை திரைக்கு நகர்த்தவும்" #: ../js/ui/windowMenu.js:70 msgid "Always on Top" msgstr "எப்போதும் மேலே" #: ../js/ui/windowMenu.js:89 msgid "Always on Visible Workspace" msgstr "எப்போதும் புலனாகும் வேலையிடத்தில்" #: ../js/ui/windowMenu.js:106 msgid "Move to Workspace Up" msgstr "மேலே உள்ள வேலையிடத்திற்கு நகர்த்தவும்" #: ../js/ui/windowMenu.js:111 msgid "Move to Workspace Down" msgstr "கீழே உள்ள வேலையிடத்திற்கு நகர்த்தவும்" #: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1 msgid "Evolution Calendar" msgstr "எவல்யூஷன் நாள்காட்டி" #. translators: #. * The number of sound outputs on a particular device #: ../src/gvc/gvc-mixer-control.c:1837 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u வெளிப்பாடு" msgstr[1] "%u வெளிப்பாடுகள்" #. translators: #. * The number of sound inputs on a particular device #: ../src/gvc/gvc-mixer-control.c:1847 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u உள்ளீடு" msgstr[1] "%u உள்ளீடுகள்" #: ../src/gvc/gvc-mixer-control.c:2373 msgid "System Sounds" msgstr "கணினி ஒலிகள்" #: ../src/main.c:373 msgid "Print version" msgstr "அச்சுப் பதிப்பு" #: ../src/main.c:379 msgid "Mode used by GDM for login screen" msgstr "ஜிடிஎம் உள்நுழைவு திரைக்கு பயன்படுத்தும் பாங்கு" #: ../src/main.c:385 msgid "Use a specific mode, e.g. \"gdm\" for login screen" msgstr "உள்நுழைவு திரைக்கு குறிப்பிட்ட பாங்கை, எ.கா. \"gdm\" பயன்படுத்துக" #: ../src/main.c:391 msgid "List possible modes" msgstr "இயன்ற பாங்குகளின் பட்டியல்" #: ../src/shell-app.c:666 #, c-format msgid "Failed to launch “%s”" msgstr "\"%s\" ஐத் தொடங்குதல் தோல்வியடைந்தது" #: ../src/shell-keyring-prompt.c:714 msgid "Passwords do not match." msgstr "கடவுச்சொற்கள் பொருந்தவில்லை" #: ../src/shell-keyring-prompt.c:722 msgid "Password cannot be blank" msgstr "கடவுச்சொல் வெறுமையாக இருக்க முடியாது" #: ../src/shell-polkit-authentication-agent.c:346 msgid "Authentication dialog was dismissed by the user" msgstr "பயனர் உறுதிப்படுத்தல் உரையாடலை வெளியனுப்பினார்." #~ msgid "List of categories that should be displayed as folders" #~ msgstr "கோப்புறைகளாகக் காண்பிக்க வேண்டிய பகுப்புகளின் பட்டியல்" #~ msgid "" #~ "Each category name in this list will be represented as folder in the " #~ "application view, rather than being displayed inline in the main view." #~ msgstr "" #~ "இந்தப் பட்டியலில் காண்பிக்கப்படும் ஒவ்வொரு பகுப்பும், பிரதானப் பார்வையில் உள்ளே " #~ "காண்பிக்கப்படுவதற்கு மாறாக பயன்பாட்டுப் பார்வையில் கோப்புறையாகக் காண்பிக்கப்படும்." #~ msgid "" #~ "Internally used to store the last IM presence explicitly set by the user. " #~ "The value here is from the TpConnectionPresenceType enumeration." #~ msgstr "" #~ "பயனர் குறிப்பாக அமைத்த கடைசி ஐஎம் இருப்பு நிலையை சேமிக்க உள்ளே பயனாகும். இங்குள்ள " #~ "மதிப்பு TpConnectionPresenceType கணக்கிடுதலில் இருந்து." #~ msgid "" #~ "Internally used to store the last session presence status for the user. " #~ "The value here is from the GsmPresenceStatus enumeration." #~ msgstr "" #~ "பயனருக்கு கடைசி அமர்வின் இருப்பு நிலையை சேமிக்க உள்ளே பயனாகும். இங்குள்ள மதிப்பு " #~ "GsmPresenceStatus கணக்கிடுதலில் இருந்து." #~ msgid "Arrangement of buttons on the titlebar" #~ msgstr "தலைப்புப்பட்டியில் பொத்தான்களின் அமைப்பு" #~ msgid "" #~ "This key overrides the key in org.gnome.desktop.wm.preferences when " #~ "running GNOME Shell." #~ msgstr "" #~ "இந்த விசை org.gnome.desktop.wm.preferences ஐ க்னோம் ஷெல்லை இயக்கும்போது வன்மீறல் " #~ "செய்கிறது." #~ msgid "Extension" #~ msgstr "நீட்சி" #~ msgid "Select an extension to configure using the combobox above." #~ msgstr "மேலுள்ள கூட்டுப்பெட்டியை பயன்படுத்தி வடிவமைக்க ஒரு நீட்சியை தேர்ந்தெடுக்கவும்" #~| msgid "Session…" #~ msgid "Session" #~ msgstr "அமர்வு" #~ msgctxt "event list time" #~ msgid "%H\\u2236%M" #~ msgstr "%H\\u2236%M" #~ msgctxt "event list time" #~ msgid "%l\\u2236%M\\u2009%p" #~ msgstr "%l\\u2236%M\\u2009%p" #~ msgid "%A, %H:%M" #~ msgstr "%A, %H:%M" #~ msgid "%B %d, %H:%M" #~ msgstr "%B %d, %H:%M" #~ msgid "%B %d %Y, %H:%M " #~ msgstr "%B %d %Y, %H:%M " #~ msgid "Click Log Out to quit these applications and log out of the system." #~ msgstr "இந்த பயன்பாடுகளை மூடி கணினியில் இருந்து வெளியேற வெளியேறு ஐ சொடுக்கவும்" #~ msgid "Logging out of the system." #~ msgstr "கணினியில் இருந்து வெளியேறுகிறது" #~ msgid "Click Power Off to quit these applications and power off the system." #~ msgstr "இந்த பயன்பாடுகளை மூடி கணினி மின் நிறுத்தம் செய்ய மின் நிறுத்தம் ஐ சொடுக்கவும்" #~ msgid "Powering off the system." #~ msgstr "கணினி மின் நிறுத்தப்படுகிறது" #~ msgid "Click Restart to quit these applications and restart the system." #~ msgstr "இந்த பயன்பாடுகளை மூடி கணினி மீள் துவக்கம் செய்ய செய்ய மீள் துவக்கம் ஐ சொடுக்கவும்" #~ msgid "Restarting the system." #~ msgstr "கணினி மறு துவக்கம் செய்யப்படுகிறது" #~| msgid "Settings" #~ msgid "Settings Menu" #~ msgstr "பட்டி அமைப்புகள்" #~ msgid "Authorization request from %s" #~ msgstr "%s இடமிருந்து உறுதிப்படுத்தல் வேண்டுதல்" #~ msgid "Device %s wants to pair with this computer" #~ msgstr "சாதனம் %s இந்த கணினியுடன் இணைக்க விரும்புகிறது" #~ msgid "Allow" #~ msgstr "அனுமதி" #~ msgid "Deny" #~ msgstr "மறுப்பு" #~ msgid "Device %s wants access to the service '%s'" #~ msgstr "சாதனம் %s ' சேவை %s' க்கு அணுகல் வேண்டுகிறது" #~ msgid "Always grant access" #~ msgstr "எப்போதும் அணுகலை அளி" #~ msgid "Grant this time only" #~ msgstr "இம்முறை மட்டும் அணுகலை அளி" #~ msgid "Reject" #~ msgstr "மறு" #~ msgid "Pairing confirmation for %s" #~ msgstr "%s க்கு இணை சேர்த்த உறுதிப்படுத்தல்" #~| msgid "" #~| "Please confirm whether the PIN '%06d' matches the one on the device." #~ msgid "" #~ "Please confirm whether the Passkey '%06d' matches the one on the device." #~ msgstr "" #~ "கடவு எண்ணானது '%06d' சாதனத்தில் உள்ள ஒன்றுடன் பொருந்துகிறதா என உறுதி செய்யவும்." #~ msgid "Matches" #~ msgstr "பொருந்துகிறது" #~ msgid "Does not match" #~ msgstr "பொருந்தவில்லை" #~ msgid "Pairing request for %s" #~ msgstr "%s க்கு இணைக்க வேண்டுதல்" #~ msgid "Please enter the PIN mentioned on the device." #~ msgstr "சாதனத்தின் சொல்லும் பின் ஐ உள்ளீடு செய்க" #~ msgid "OK" #~ msgstr "சரி" #~ msgid "Shutting down might cause them to lose unsaved work." #~ msgstr "இயக்க நிறுத்தம் செய்தால், அவர்களது சேமிக்கப்படாத பணிகள் இழக்கப்படலாம்." #~ msgid "" #~ "Sorry, no wisdom for you today:\n" #~ "%s" #~ msgstr "" #~ "மன்னிக்க இன்றூ உங்களுக்கு பொன்மொழி இல்லை:\n" #~ "%s" #~ msgid "%s the Oracle says" #~ msgstr "%s அசரீரி சொல்லுகிறது" #~ msgid "Screenshots" #~ msgstr "திரைவெட்டுகள்" #~ msgid "Record a screencast" #~ msgstr "ஒரு திரைவெட்டை பதிவெடு." #~ msgid "Whether to collect stats about applications usage" #~ msgstr "நிரல்களின் பயன்பாடு குறித்த புள்ளிவிவரம் சேகரிக்க வேண்டுமா" #~ msgid "" #~ "The shell normally monitors active applications in order to present the " #~ "most used ones (e.g. in launchers). While this data will be kept private, " #~ "you may want to disable this for privacy reasons. Please note that doing " #~ "so won't remove already saved data." #~ msgstr "" #~ "ஷெல் சாதாரணமாக செயலிலுள்ள நிரல்களை மேற்பார்வை இடுகிறது. அதனால் அடிக்கடி பயனாகும் " #~ "நிரல்கள் (எ-டு: துவக்கிகள்) முன் வைக்கப்படும். இந்த தரவு அந்தரங்கமாக வைக்கப்பட்டாலும் " #~ "நீங்கள் இதை நீக்க விரும்பலாம். அப்படிச் செய்வது முன்னே சேகரித்த தரவை நீக்காஅது என் " #~ "அறியவும்." #~ msgid "Keybinding to toggle the screen recorder" #~ msgstr "உள்ளமை திரை பதிவியை நிலை மாற்ற விசைபிணைப்பு" #~ msgid "Keybinding to start/stop the builtin screen recorder." #~ msgstr "உள்ளமை திரை பதிவியை துவக்க, நிறுத்த விசைபிணைப்பு" #~ msgid "Framerate used for recording screencasts." #~ msgstr "திரைநிகழ்வை பதிவு செய்ய சட்டவிகிதம் ." #~ msgid "" #~ "The framerate of the resulting screencast recordered by GNOME Shell's " #~ "screencast recorder in frames-per-second." #~ msgstr "" #~ "க்னோம்ஷெல் இன் ஸ்க்ரீன்காஸ்ட் பதிவரில் ஸ்க்ரீன்காட் ஐ பதிகையில் வினாடிக்கு சட்டங்களின் விகிதம்." #~ msgid "The gstreamer pipeline used to encode the screencast" #~ msgstr "ஸ்க்ரீன்காஸ்டை குறியாக்க பயனாகும் ஜிஸ்ட்ரீமர் குழாய்." #~ msgid "" #~ "Sets the GStreamer pipeline used to encode recordings. It follows the " #~ "syntax used for gst-launch. The pipeline should have an unconnected sink " #~ "pad where the recorded video is recorded. It will normally have a " #~ "unconnected source pad; output from that pad will be written into the " #~ "output file. However the pipeline can also take care of its own output - " #~ "this might be used to send the output to an icecast server via shout2send " #~ "or similar. When unset or set to an empty value, the default pipeline " #~ "will be used. This is currently 'vp8enc min_quantizer=13 max_quantizer=13 " #~ "cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux' and records to " #~ "WEBM using the VP8 codec. %T is used as a placeholder for a guess at the " #~ "optimal thread count on the system." #~ msgstr "" #~ "பதிவுகளை குறியாக்க ஜிஸ்ட்ரீமர் குழாயை அமைக்கிறது. ஜிஎஸ்டி லான்ஸ் க்கு பயன்படும் அதே " #~ "இலக்கணத்தை பின் பற்றும். குழாய்க்கு இணைப்பில்லா பதிவுக்குழி இருத்தல் வேண்டும். இதில் " #~ "விடியோ பதிவாகும். சாதாரணமாக இதில் இணைக்காத ஒரு மூல பதிவேடு இருக்கும்; இதன் " #~ "வெளியீடு வெளியீட்டு கோப்பாக பதிவாகும். எனினும் குழாய் தன் வெளியீட்டை தானே " #~ "கவனித்துக்கொள்ள இயலும். இது வெளியீட்டை ஐஸ்காஸ்ட் அல்லது ஷௌட்2சென்ட் போன்றவற்றுக்கு " #~ "நேரடியாக அனுப்ப இயலும். அமைப்பை அன்செட் செய்தாலல்லது காலி மதிப்புக்கு அமைத்தாலும் " #~ "முன்னிருப்பு குழாய் பயன்படுத்தப்படும். நடப்பில் இது 'vp8enc min_quantizer=13 " #~ "max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! " #~ "webmmux' ஆகும்; இதுVP8 கோடக் ஐ பயன்படுத்தி WEBM க்கு பதிவுசெய்யும். கணினியில் " #~ "பொருத்தமான இழை கணக்குக்கு ஊகம் செய்வதற்கு %T இடப்பிடிப்பானாக வேலை செய்யும்." #~ msgid "File extension used for storing the screencast" #~ msgstr "திரைவெட்டை சேமிக்க கோப்பு பின்னொட்டு." #~ msgid "" #~ "The filename for recorded screencasts will be a unique filename based on " #~ "the current date, and use this extension. It should be changed when " #~ "recording to a different container format." #~ msgstr "" #~ "ஸ்க்ரீன்காஸ்ட் இல் பதிவாவனக்கான கோப்புப்பெயர் தனித்தன்மை வாய்ந்தது. இது நடப்பு தேதியை " #~ "அடிப்படையாக கொண்டது; இந்த பின்னொட்டை பயன்படுத்தும். பதிவதை வேறு கொள்கலத்தின் ஒழுங்கில் " #~ "மாற்றுகையில் இதையும் மாற்ற வேண்டும்." #~ msgid "Power" #~ msgstr "மின்சக்தி" #~ msgid "Restart" #~ msgstr "மறு துவக்கம்" #~ msgid "Screencast from %d %t" #~ msgstr "%d %t இலிருந்து ஸ்க்ரீண்காஸ்ட்" #~ msgid "Universal Access Settings" #~ msgstr "உலகளாவிய அணுகல் அமைப்பு" #~ msgid "Visibility" #~ msgstr "காணல்" 07070100000265000081A40000000000000000000000016712993F00013881000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/te.po# Telugu translation for gnome-shell. # Copyright (C) 2011, 2012 Swecha telugu translations team # This file is distributed under the same license as the gnome-shell package. # Krishnababu Krothapalli , 2011, 2012, 2013, 2014. # Hari Krishna , 2011. # Sasi Bhushan Boddepalli , 2012. # Praveen Illa , 2011, 2012, 2013, 2014. msgid "" msgstr "" "Project-Id-Version: gnome-shell gnome-3-0\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "shell&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2014-09-23 07:38+0000\n" "PO-Revision-Date: 2014-09-23 15:55+0530\n" "Last-Translator: Krishnababu Krothapalli \n" "Language-Team: American English \n" "Language: te\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: Lokalize 1.5\n" "X-Project-Style: gnome\n" #: ../data/50-gnome-shell-system.xml.in.h:1 msgid "System" msgstr "వ్యవస్థ" #: ../data/50-gnome-shell-system.xml.in.h:2 msgid "Show the message tray" msgstr "సందేశ పళ్ళెం చూపించు" #: ../data/50-gnome-shell-system.xml.in.h:3 msgid "Focus the active notification" msgstr "క్రియాశీల గమనింపుపై దృష్టివుంచు" #: ../data/50-gnome-shell-system.xml.in.h:4 msgid "Show the overview" msgstr "అవలోకనాన్ని చూపించు" #: ../data/50-gnome-shell-system.xml.in.h:5 msgid "Show all applications" msgstr "అన్ని అనువర్తనాలను చూపించు" #: ../data/50-gnome-shell-system.xml.in.h:6 msgid "Open the application menu" msgstr "అనువర్తనం మెనూ తెరువు" #: ../data/gnome-shell.desktop.in.in.h:1 msgid "GNOME Shell" msgstr "గ్నోమ్ షెల్" #: ../data/gnome-shell.desktop.in.in.h:2 #: ../data/gnome-shell-wayland.desktop.in.in.h:2 msgid "Window management and application launching" msgstr "కిటికీ నిర్వాహణ మరియు అనువర్తనము ప్రారంభించుట" #: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1 msgid "GNOME Shell Extension Preferences" msgstr "గ్నోమ్ షెల్ పొడిగింతల ప్రాధాన్యతలు" #: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2 msgid "Configure GNOME Shell Extensions" msgstr "గ్నోమ్ షెల్ పొడిగింతలను స్వరూపించు" #: ../data/gnome-shell-wayland.desktop.in.in.h:1 msgid "GNOME Shell (wayland compositor)" msgstr "గ్నోమ్ షెల్ (వేల్యాండ్ సృష్టి)" #: ../data/org.gnome.shell.gschema.xml.in.in.h:1 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" "అభివృద్ధికారులకు మరియు పరీక్షకులకు ఉపయోగపడే సాధనాలను Alt-F2 నుండి చేతనపరుచు" #: ../data/org.gnome.shell.gschema.xml.in.in.h:2 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Alt-F2 డైలాగుని వాడి అంతర్గత దోషశుద్ది మరియు సాధనాలను పర్యవేక్షించుటకు " "సౌలభ్యతను అనుమతిస్తుంది." #: ../data/org.gnome.shell.gschema.xml.in.in.h:3 msgid "UUIDs of extensions to enable" msgstr "చేతనించాల్సిన పొడిగింతలు యొక్క UUIDs" #: ../data/org.gnome.shell.gschema.xml.in.in.h:4 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "గ్నోమ్ షెల్ పొడిగింతలు ఒక UUID లక్షణాన్ని కలిగివున్నాయి; ఏ పొడిగింతలు " "లోడుచేయదగినవి కాదో ఈ కీ జాబితాచేయును. " "ఏ పొడిగింత లోడవ్వాలో అది ఈ జాబితా నందు ఉండాలి. అంతేకాకుండా మీరు ఈ జాబితాను " "పాడిగింతను చేతనపరుచు లేదా " "పొడిగింతను అచేతనపరుచు డిబస్ పద్ధతులలో గ్నోమ్ షెల్ నందు మార్చవచ్చును." #: ../data/org.gnome.shell.gschema.xml.in.in.h:5 msgid "Disables the validation of extension version compatibility" msgstr "పొడిగింత రూపాంతర అనుగుణ్యత యొక్క చెల్లుబాటును అచేతనిస్తుంది" #: ../data/org.gnome.shell.gschema.xml.in.in.h:6 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "ప్రస్తుతం నడుస్తున్న రూపాంతరం తోడ్పాటుందని పేర్కొంటేనే గ్నోమ్ షెల్ " "పొడిగింతలను లోడు చేస్తుంది. ఈ " "ఐచ్ఛికాన్ని చేతనం చేస్తే ఈ తనిఖీని అచేనించి, తోడ్పాటు ఉన్నాదా లేదా అనే " "విషయంతో సంబంధం లేకుండా అన్ని " "పొడిగింతలను నింపుటకు ప్రయత్నిస్తుంది" #: ../data/org.gnome.shell.gschema.xml.in.in.h:7 msgid "List of desktop file IDs for favorite applications" msgstr "ప్రియమైన అనువర్తనాల కోసం డెస్క్‌టాప్‌ దస్త్ర ఐడీల యొక్క జాబితా" #: ../data/org.gnome.shell.gschema.xml.in.in.h:8 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" "ఈ గుర్తింపకాలకు అనుగుణమైన అనువర్తనాలు ప్రియమైన ప్రదేశములో ప్రదర్శించబడతాయి." #: ../data/org.gnome.shell.gschema.xml.in.in.h:9 msgid "App Picker View" msgstr "అనువర్తన ఎంపికరి వీక్షణం" #: ../data/org.gnome.shell.gschema.xml.in.in.h:10 msgid "Index of the currently selected view in the application picker." msgstr "అనువర్తన ఎంపికరిలో ప్రస్తుతం ఎంపికచేసిన వీక్షణ సూచిక" #: ../data/org.gnome.shell.gschema.xml.in.in.h:11 msgid "History for command (Alt-F2) dialog" msgstr "ఆదేశ (Alt-F2) సంవాదం కోసం చరిత్ర" #: ../data/org.gnome.shell.gschema.xml.in.in.h:12 msgid "History for the looking glass dialog" msgstr "చూస్తున్న గ్లాసు సంవాదం కొరకు చరిత్ర" #: ../data/org.gnome.shell.gschema.xml.in.in.h:13 msgid "Always show the 'Log out' menu item in the user menu." msgstr "వాడుకరి మెనూ నందు ఎల్లప్పుడూ 'నిష్క్రమించు' మెనూ అంశాన్ని చూపించు." #: ../data/org.gnome.shell.gschema.xml.in.in.h:14 msgid "" "This key overrides the automatic hiding of the 'Log out' menu item in single-" "user, single-session situations." msgstr "" "ఏక-వాడుకరి, ఏక-ఘట్టం పరిస్థితులలో 'నిష్క్రమించు' మెనూ అంశము స్వయంచాలకంగా " "దాగుటను ఈ మీట భర్తీ " "చేస్తుంది." #: ../data/org.gnome.shell.gschema.xml.in.in.h:15 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "ఎన్క్రిప్టెడ్ లేదా రిమోట్ దస్త్రవ్యవస్థల మౌంటు చేయుటకు సంకేతపదాలను " "గుర్తుంచుకోవాలా" #: ../data/org.gnome.shell.gschema.xml.in.in.h:16 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "'Remember Password' checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "ఎన్క్రిప్టెడ్ పరికరం లేదా రిమోట్ దస్త్రవ్యవస్థ మౌంటవునప్పుడు షెల్ సంకేతపదం " "కొరకు అభ్యర్ధించును. భవిష్య " "వినియోగం కొరకు సంకేతపదం దాయగలిగితే 'సంకేతపదం గుర్తుంచు' చెక్‌బాక్స్ వస్తుంది. " "ఈ కీ చెక్‌బాక్స్ యొక్క " "అప్రమేయ స్థితిని అమర్చును." #: ../data/org.gnome.shell.gschema.xml.in.in.h:17 msgid "Show the week date in the calendar" msgstr "క్యాలెండరులో వారపు తేదీని చూపించు" #: ../data/org.gnome.shell.gschema.xml.in.in.h:18 msgid "If true, display the ISO week date in the calendar." msgstr "ఒకవేళ నిజమైతే, క్యాలెండరులో ISO వారము తేదీని ప్రదర్శిస్తుంది." #: ../data/org.gnome.shell.gschema.xml.in.in.h:19 msgid "Keybinding to open the application menu" msgstr "అనువర్తనం మెనూ తెరవడానికి కీ బైండింగ్ " #: ../data/org.gnome.shell.gschema.xml.in.in.h:20 msgid "Keybinding to open the application menu." msgstr "అనువర్తనం మెనూ తెరవడానికి కీ బైండింగ్ " #: ../data/org.gnome.shell.gschema.xml.in.in.h:21 msgid "Keybinding to open the \"Show Applications\" view" msgstr "\"అనువర్తనములు చూపు\" దర్శనంను తెరువుటకు కీబందనం" #: ../data/org.gnome.shell.gschema.xml.in.in.h:22 msgid "" "Keybinding to open the \"Show Applications\" view of the Activities Overview." msgstr "" "కార్యకలాపాల అవలోకనం యొక్క \"అనువర్తనములు చూపించు\" వీక్షణం తెరువుటకు కీ బందనం." #: ../data/org.gnome.shell.gschema.xml.in.in.h:23 msgid "Keybinding to open the overview" msgstr "అవలోకనాన్ని తెరుచుటకు కీబంధనం" #: ../data/org.gnome.shell.gschema.xml.in.in.h:24 msgid "Keybinding to open the Activities Overview." msgstr "కార్యకలాపాల అవలోకనాన్ని తెరుచుటకు కీబంధనం" #: ../data/org.gnome.shell.gschema.xml.in.in.h:25 msgid "Keybinding to toggle the visibility of the message tray" msgstr "సందేశ పళ్ళెం యొక్క దృగ్గోచరతను మార్చుటకు అడ్డదారి" #: ../data/org.gnome.shell.gschema.xml.in.in.h:26 msgid "Keybinding to toggle the visibility of the message tray." msgstr "సందేశ పళ్ళెం యొక్క దృగ్గోచరతను మార్చుటకు అడ్డదారి" #: ../data/org.gnome.shell.gschema.xml.in.in.h:27 msgid "Keybinding to focus the active notification" msgstr "క్రియాశీల ప్రకటన ఫోకస్‌కు కీబందనం" #: ../data/org.gnome.shell.gschema.xml.in.in.h:28 msgid "Keybinding to focus the active notification." msgstr "క్రియాశీల ప్రకటన ఫోకస్‌కు కీబందనం." #: ../data/org.gnome.shell.gschema.xml.in.in.h:29 msgid "" "Keybinding that pauses and resumes all running tweens, for debugging purposes" msgstr "" "దోషవిశ్లేషణ కోసం, కీబైండింగు నడుస్తున్న అన్ని ట్వీన్లను తిరిగి కొనసాగిస్తుంది " "మరియు నిలిపివేస్తుంది." #: ../data/org.gnome.shell.gschema.xml.in.in.h:30 msgid "Which keyboard to use" msgstr "ఏ కీబోర్డ్ ఉపయోగించాలి" #: ../data/org.gnome.shell.gschema.xml.in.in.h:31 msgid "The type of keyboard to use." msgstr "ఉపయోగించుటకు కీబోర్డ్ రకము." #: ../data/org.gnome.shell.gschema.xml.in.in.h:32 msgid "Limit switcher to current workspace." msgstr "మార్పకాన్ని ప్రస్తుత కార్యక్షేత్రానికి పరిమితించు" #: ../data/org.gnome.shell.gschema.xml.in.in.h:33 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "ఒకవేళ నిజమైతే, ప్రస్తుత కార్యక్షేత్రంలో ఉన్న అనువర్తనాల కిటికీలు మాత్రమే " "మార్పకంలో చూపించబడతాయి. లేదంటే, " "అన్ని అనువర్తనాలు ఉంచబడతాయి." #: ../data/org.gnome.shell.gschema.xml.in.in.h:34 msgid "The application icon mode." msgstr "అనువర్తనం ప్రతిమ రీతి." #: ../data/org.gnome.shell.gschema.xml.in.in.h:35 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-" "only' (shows only the application icon) or 'both'." msgstr "" "స్విచర్ నందు కిటికీలు ఎలా చూపునో ఆకృతీకరించును. చెల్లునటువంటి సాధ్యాలు " "'thumbnail-only' (విండో " "థంబ్‌నెయిల్ చూపును), 'app-icon-only' (అనువర్తన ప్రతిమ మాత్రమే చూపును) లేదా " "'both'." #: ../data/org.gnome.shell.gschema.xml.in.in.h:36 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "ఒకవేళ నిజమైతే, ప్రస్తుత కార్యక్షేత్రంలో ఉన్న కిటికీలు మాత్రమే మార్పకంలో " "చూపించబడతాయి. లేదంటే, అన్ని కిటికీలు " "ఉంచబడతాయి." #: ../data/org.gnome.shell.gschema.xml.in.in.h:37 msgid "Attach modal dialog to the parent window" msgstr "పేరెంట్ కిటికీకు మోడల్ డైలాగ్ జోడించు" #: ../data/org.gnome.shell.gschema.xml.in.in.h:38 msgid "" "This key overrides the key in org.gnome.mutter when running GNOME Shell." msgstr "" "గ్నోమ్ షెల్ నందు నడుచునప్పుడు ఈ కీ org.gnome.mutter నందలి కీను వోవర్‌రైడ్ " "చేయును." #: ../data/org.gnome.shell.gschema.xml.in.in.h:39 msgid "Enable edge tiling when dropping windows on screen edges" msgstr "తెర అంచులనందు విండోలను విడువునప్పుడు ఎడ్జ్ టైటిలింగ్ చేతనం చేయి" #: ../data/org.gnome.shell.gschema.xml.in.in.h:40 msgid "Workspaces are managed dynamically" msgstr "కార్యక్షేత్రాలు గతికంగా నిర్వహించబడును" #: ../data/org.gnome.shell.gschema.xml.in.in.h:41 msgid "Workspaces only on primary monitor" msgstr "ప్రాధమిక మానిటర్ పైని కార్యక్షేత్రాలు మాత్రమే" #: ../data/org.gnome.shell.gschema.xml.in.in.h:42 msgid "Delay focus changes in mouse mode until the pointer stops moving" msgstr "మౌసు రీతిలో కేంద్రీకరణ మార్పులను పాయింటరు కదలిక ఆగే వరకూ ఆలస్యం చేయి" #: ../data/org.gnome.Shell.PortalHelper.desktop.in.h:1 msgid "Captive Portal" msgstr "కాప్టివ్ పోర్టల్" #: ../js/extensionPrefs/main.js:123 #, javascript-format msgid "There was an error loading the preferences dialog for %s:" msgstr "%s కొరకు ప్రాధాన్యతల సంభాషణను నింపుటలో అక్కడ ఒక దోషం ఉన్నది:" #: ../js/extensionPrefs/main.js:155 msgid "GNOME Shell Extensions" msgstr "గ్నోమ్ షెల్ పొడిగింతలు" #: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143 #: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:452 #: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399 #: ../js/ui/status/network.js:915 msgid "Cancel" msgstr "రద్దుచేయి" #: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:217 msgid "Next" msgstr "తరువాత" #: ../js/gdm/authPrompt.js:213 ../js/ui/shellMountOperation.js:403 #: ../js/ui/unlockDialog.js:59 msgid "Unlock" msgstr "తాళంతీయి" #: ../js/gdm/authPrompt.js:215 msgctxt "button" msgid "Sign In" msgstr "ప్రవేశించండి" #: ../js/gdm/loginDialog.js:269 msgid "Choose Session" msgstr "ఘట్టాన్ని ఎంచుకోండి" #: ../js/gdm/loginDialog.js:429 msgid "Not listed?" msgstr "జాబితా చేయలేదా?" #: ../js/gdm/loginDialog.js:614 #, javascript-format msgid "(e.g., user or %s)" msgstr "(ఉదా., వాడుకరి లేదా %s)" #: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:269 #: ../js/ui/components/networkAgent.js:287 msgid "Username: " msgstr "వాడుకరిపేరు: " #: ../js/gdm/loginDialog.js:922 msgid "Login Window" msgstr "ప్రవేశ కిటికీ" #: ../js/gdm/util.js:323 msgid "Authentication error" msgstr "ధృవీకరణ దోషం" #: ../js/gdm/util.js:453 msgid "(or swipe finger)" msgstr "(లేదా వేలుతో స్వైప్‌చేయి)" #: ../js/misc/util.js:115 msgid "Command not found" msgstr "ఆదేశము కనపడలేదు" #: ../js/misc/util.js:148 msgid "Could not parse command:" msgstr "ఆదేశము పదనిరూపణ వీలుకాదు:" #: ../js/misc/util.js:156 #, javascript-format msgid "Execution of “%s” failed:" msgstr "“%s” అమలు విఫలమైంది:" #: ../js/portalHelper/main.js:85 msgid "Web Authentication Redirect" msgstr "జాల ధృవీకరణ దారిమార్పు" #: ../js/ui/appDisplay.js:772 msgid "Frequently used applications will appear here" msgstr "తరచూ వాడే అనువర్తనాలు ఇక్కడ కనిపిస్తాయి" #: ../js/ui/appDisplay.js:883 msgid "Frequent" msgstr "తరచు" #: ../js/ui/appDisplay.js:890 msgid "All" msgstr "అన్ని" #: ../js/ui/appDisplay.js:1790 msgid "New Window" msgstr "కొత్త కిటికీ" #: ../js/ui/appDisplay.js:1816 ../js/ui/dash.js:285 msgid "Remove from Favorites" msgstr "ఇష్టాంశాల నుండి తొలగించు" #: ../js/ui/appDisplay.js:1822 msgid "Add to Favorites" msgstr "ఇష్టాంశాలకు జతచేయి" #: ../js/ui/appDisplay.js:1831 msgid "Show Details" msgstr "వివరాలను చూపించు" #: ../js/ui/appFavorites.js:132 #, javascript-format msgid "%s has been added to your favorites." msgstr "%s మీ ఇష్టాంశాలకు జతచేయబడింది." #: ../js/ui/appFavorites.js:166 #, javascript-format msgid "%s has been removed from your favorites." msgstr "%s మీ ఇష్టాంశాల నుండి తీసివేయబడింది." #: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:813 #: ../js/ui/status/system.js:337 msgid "Settings" msgstr "అమరికలు" #: ../js/ui/backgroundMenu.js:21 msgid "Change Background…" msgstr "నేపథ్యాన్ని మార్చు..." #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. */ #: ../js/ui/calendar.js:67 msgctxt "event list time" msgid "All Day" msgstr "రోజు మొత్తం" #. Translators: Shown in calendar event list, if 24h format, #. \u2236 is a ratio character, similar to : */ #: ../js/ui/calendar.js:73 msgctxt "event list time" msgid "%H∶%M" msgstr "%H∶%M" #. Translators: Shown in calendar event list, if 12h format, #. \u2236 is a ratio character, similar to : and \u2009 is #. a thin space */ #: ../js/ui/calendar.js:82 msgctxt "event list time" msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. */ #: ../js/ui/calendar.js:113 msgctxt "grid sunday" msgid "S" msgstr "ఆ" #. Translators: Calendar grid abbreviation for Monday */ #: ../js/ui/calendar.js:115 msgctxt "grid monday" msgid "M" msgstr "సో" #. Translators: Calendar grid abbreviation for Tuesday */ #: ../js/ui/calendar.js:117 msgctxt "grid tuesday" msgid "T" msgstr "మ" #. Translators: Calendar grid abbreviation for Wednesday */ #: ../js/ui/calendar.js:119 msgctxt "grid wednesday" msgid "W" msgstr "బు" #. Translators: Calendar grid abbreviation for Thursday */ #: ../js/ui/calendar.js:121 msgctxt "grid thursday" msgid "T" msgstr "గు" #. Translators: Calendar grid abbreviation for Friday */ #: ../js/ui/calendar.js:123 msgctxt "grid friday" msgid "F" msgstr "శు" #. Translators: Calendar grid abbreviation for Saturday */ #: ../js/ui/calendar.js:125 msgctxt "grid saturday" msgid "S" msgstr "శ" #. Translators: Event list abbreviation for Sunday. #. * #. * NOTE: These list abbreviations are normally not shown together #. * so they need to be unique (e.g. Tuesday and Thursday cannot #. * both be 'T'). #. */ #: ../js/ui/calendar.js:138 msgctxt "list sunday" msgid "Su" msgstr "ఆది" #. Translators: Event list abbreviation for Monday */ #: ../js/ui/calendar.js:140 msgctxt "list monday" msgid "M" msgstr "సోమ" #. Translators: Event list abbreviation for Tuesday */ #: ../js/ui/calendar.js:142 msgctxt "list tuesday" msgid "T" msgstr "మం" #. Translators: Event list abbreviation for Wednesday */ #: ../js/ui/calendar.js:144 msgctxt "list wednesday" msgid "W" msgstr "బుధ" #. Translators: Event list abbreviation for Thursday */ #: ../js/ui/calendar.js:146 msgctxt "list thursday" msgid "Th" msgstr "గురు" #. Translators: Event list abbreviation for Friday */ #: ../js/ui/calendar.js:148 msgctxt "list friday" msgid "F" msgstr "శుక్ర" #. Translators: Event list abbreviation for Saturday */ #: ../js/ui/calendar.js:150 msgctxt "list saturday" msgid "S" msgstr "శని" #: ../js/ui/calendar.js:453 msgid "Previous month" msgstr "మునుపటి నెల" #: ../js/ui/calendar.js:463 msgid "Next month" msgstr "తదుపరి నెల" #. Translators: Text to show if there are no events */ #: ../js/ui/calendar.js:781 msgid "Nothing Scheduled" msgstr "ఏ ప్రణాళిక లేదు" #. Translators: Shown on calendar heading when selected day occurs on current year */ #: ../js/ui/calendar.js:799 msgctxt "calendar heading" msgid "%A, %B %d" msgstr "%A, %B %d" #. Translators: Shown on calendar heading when selected day occurs on different year */ #: ../js/ui/calendar.js:802 msgctxt "calendar heading" msgid "%A, %B %d, %Y" msgstr "%A, %B %d, %Y" #: ../js/ui/calendar.js:813 msgid "Today" msgstr "నేడు" #: ../js/ui/calendar.js:817 msgid "Tomorrow" msgstr "రేపు" #: ../js/ui/calendar.js:828 msgid "This week" msgstr "ఈ వారం" #: ../js/ui/calendar.js:836 msgid "Next week" msgstr "తరువాత వారం" #: ../js/ui/components/automountManager.js:91 msgid "External drive connected" msgstr "బాహ్య డ్రైవు అనుసంధానమైంది" #: ../js/ui/components/automountManager.js:102 msgid "External drive disconnected" msgstr "బాహ్య డ్రైవ్ నిరనుసంధానించబడింది" #: ../js/ui/components/autorunManager.js:296 msgid "Removable Devices" msgstr "తీసివేయదగు పరికరాలు" #: ../js/ui/components/autorunManager.js:596 #, javascript-format msgid "Open with %s" msgstr "%s‍తో తెరువు" #: ../js/ui/components/autorunManager.js:622 msgid "Eject" msgstr "బయటకునెట్టు" #: ../js/ui/components/keyring.js:94 ../js/ui/components/polkitAgent.js:285 msgid "Password:" msgstr "సంకేతపదం:" #: ../js/ui/components/keyring.js:120 msgid "Type again:" msgstr "మళ్ళీ టంకించండి:" #: ../js/ui/components/networkAgent.js:138 ../js/ui/status/network.js:277 #: ../js/ui/status/network.js:359 ../js/ui/status/network.js:918 msgid "Connect" msgstr "అనుసంధానించు" #: ../js/ui/components/networkAgent.js:231 #: ../js/ui/components/networkAgent.js:243 #: ../js/ui/components/networkAgent.js:271 #: ../js/ui/components/networkAgent.js:291 #: ../js/ui/components/networkAgent.js:301 msgid "Password: " msgstr "సంకేతపదం:" #: ../js/ui/components/networkAgent.js:236 msgid "Key: " msgstr "మీట: " #: ../js/ui/components/networkAgent.js:275 msgid "Identity: " msgstr "గుర్తింపు: " #: ../js/ui/components/networkAgent.js:277 msgid "Private key password: " msgstr "వ్యక్తిగత కీ సంకేతపదం: " #: ../js/ui/components/networkAgent.js:289 msgid "Service: " msgstr "సేవ: " #: ../js/ui/components/networkAgent.js:318 msgid "Authentication required by wireless network" msgstr "వైర్‌లెస్ నెట్‌వర్క్ చేత ధృవీకరణ అవసరమైంది" #: ../js/ui/components/networkAgent.js:319 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network " "“%s”." msgstr "" "నిస్తంత్రి నెట్‌వర్కు “%s” ప్రాప్యించుటకు సంకేతపదాలు లేదా ఎన్క్రిప్షన్ మీటలు " "అవసరం." #: ../js/ui/components/networkAgent.js:323 msgid "Wired 802.1X authentication" msgstr "వైర్డ్ 802.1X ధృవీకరణ" #: ../js/ui/components/networkAgent.js:325 msgid "Network name: " msgstr "నెట్‍‌వర్క్ పేరు: " #: ../js/ui/components/networkAgent.js:330 msgid "DSL authentication" msgstr "DSL ధృవీకరణ" #: ../js/ui/components/networkAgent.js:337 msgid "PIN code required" msgstr "PIN కోడ్ అవసరమైంది" #: ../js/ui/components/networkAgent.js:338 msgid "PIN code is needed for the mobile broadband device" msgstr "మొబైల్ బ్రాడ్‌బాండ్ పరికరం కొరకు PIN కోడ్ అవసరమైంది" #: ../js/ui/components/networkAgent.js:339 msgid "PIN: " msgstr "PIN: " #: ../js/ui/components/networkAgent.js:345 msgid "Mobile broadband network password" msgstr "మొబైల్ బ్రాడ్‌బాండ్ నెట్వర్క్ సంకేతపదం" #: ../js/ui/components/networkAgent.js:346 #, javascript-format msgid "A password is required to connect to “%s”." msgstr "“%s”కు అనుసంధానమగుటకు సంకేతపదం అవసరం." #: ../js/ui/components/polkitAgent.js:54 msgid "Authentication Required" msgstr "ధృవీకరణ అవసరం" #: ../js/ui/components/polkitAgent.js:96 msgid "Administrator" msgstr "నిర్వాహకుడు" #: ../js/ui/components/polkitAgent.js:175 msgid "Authenticate" msgstr "ధృవీకరించు" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. */ #: ../js/ui/components/polkitAgent.js:271 ../js/ui/shellMountOperation.js:383 msgid "Sorry, that didn't work. Please try again." msgstr "క్షమించండి, అది పనిచేయలేదు. దయచేసి మరలా ప్రయత్నించండి." #: ../js/ui/components/telepathyClient.js:240 msgid "Invitation" msgstr "ఆహ్వానం" #: ../js/ui/components/telepathyClient.js:300 msgid "Call" msgstr "కాల్" #: ../js/ui/components/telepathyClient.js:316 msgid "File Transfer" msgstr "దస్త్ర బదిలీ" #: ../js/ui/components/telepathyClient.js:420 msgid "Chat" msgstr "సంభాషణ" #: ../js/ui/components/telepathyClient.js:483 msgid "Unmute" msgstr "శబ్దం" #: ../js/ui/components/telepathyClient.js:483 msgid "Mute" msgstr "నిశబ్దం" #. Translators: Time in 24h format */ #: ../js/ui/components/telepathyClient.js:953 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" */ #: ../js/ui/components/telepathyClient.js:960 msgid "Yesterday, %H∶%M" msgstr "నిన్న, %H∶%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" */ #: ../js/ui/components/telepathyClient.js:967 msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" */ #: ../js/ui/components/telepathyClient.js:974 msgid "%B %d, %H∶%M" msgstr "%B %d, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" */ #: ../js/ui/components/telepathyClient.js:980 msgid "%B %d %Y, %H∶%M" msgstr "%B %d %Y, %H∶%M" #. Translators: Time in 24h format */ #: ../js/ui/components/telepathyClient.js:986 msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" */ #: ../js/ui/components/telepathyClient.js:993 msgid "Yesterday, %l∶%M %p" msgstr "నిన్న, %l∶%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" */ #: ../js/ui/components/telepathyClient.js:1000 msgid "%A, %l∶%M %p" msgstr "%A, %l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" */ #: ../js/ui/components/telepathyClient.js:1007 msgid "%B %d, %l∶%M %p" msgstr "%B %d, %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm"*/ #: ../js/ui/components/telepathyClient.js:1013 msgid "%B %d %Y, %l∶%M %p" msgstr "%B %d %Y, %l∶%M %p" #. Translators: this is the other person changing their old IM name to their new #. IM name. */ #: ../js/ui/components/telepathyClient.js:1045 #, javascript-format msgid "%s is now known as %s" msgstr "%s ఇప్పుడు %s గా తెలుసు" #. translators: argument is a room name like #. * room@jabber.org for example. */ #: ../js/ui/components/telepathyClient.js:1149 #, javascript-format msgid "Invitation to %s" msgstr "%sకు ఆహ్వానం" #. translators: first argument is the name of a contact and the second #. * one the name of a room. "Alice is inviting you to join room@jabber.org #. * for example. */ #: ../js/ui/components/telepathyClient.js:1157 #, javascript-format msgid "%s is inviting you to join %s" msgstr "%s మిమ్ములను %s పై చేరుటకు ఆహ్వానిస్తోంది" #: ../js/ui/components/telepathyClient.js:1159 #: ../js/ui/components/telepathyClient.js:1194 #: ../js/ui/components/telepathyClient.js:1228 #: ../js/ui/components/telepathyClient.js:1286 msgid "Decline" msgstr "తిరస్కరించు" #: ../js/ui/components/telepathyClient.js:1165 #: ../js/ui/components/telepathyClient.js:1234 #: ../js/ui/components/telepathyClient.js:1291 msgid "Accept" msgstr "ఆమోదించు" #. translators: argument is a contact name like Alice for example. */ #: ../js/ui/components/telepathyClient.js:1184 #, javascript-format msgid "Video call from %s" msgstr "%s నుండి వీడియో కాల్" #. translators: argument is a contact name like Alice for example. */ #: ../js/ui/components/telepathyClient.js:1187 #, javascript-format msgid "Call from %s" msgstr "%s నుండి కాల్" #. translators: this is a button label (verb), not a noun */ #: ../js/ui/components/telepathyClient.js:1201 msgid "Answer" msgstr "సమాధానమివ్వండి" #. To translators: The first parameter is #. * the contact's alias and the second one is the #. * file name. The string will be something #. * like: "Alice is sending you test.ogg" #. */ #: ../js/ui/components/telepathyClient.js:1222 #, javascript-format msgid "%s is sending you %s" msgstr "%s మీకు %s పంపుచున్నది" #. To translators: The parameter is the contact's alias */ #: ../js/ui/components/telepathyClient.js:1251 #, javascript-format msgid "%s would like permission to see when you are online" msgstr "మీరు ఆన్‌లైన్‌లో వున్నప్పుడు చూడుటకు %s అనుమతి కోరుతున్నారు" #: ../js/ui/components/telepathyClient.js:1337 msgid "Network error" msgstr "నెట్‍‌వర్క్ దోషం" #: ../js/ui/components/telepathyClient.js:1339 msgid "Authentication failed" msgstr "ధృవీకరణ వైఫల్యం" #: ../js/ui/components/telepathyClient.js:1341 msgid "Encryption error" msgstr "ఎన్క్రిప్షన్ దోషం" #: ../js/ui/components/telepathyClient.js:1343 msgid "Certificate not provided" msgstr "ధృవీకరణపత్రం అందించబడలేదు" #: ../js/ui/components/telepathyClient.js:1345 msgid "Certificate untrusted" msgstr "ధృవీకరణపత్రం నమ్మలేనిది" #: ../js/ui/components/telepathyClient.js:1347 msgid "Certificate expired" msgstr "ధృవీకరణపత్రం గడువుతీరెను" #: ../js/ui/components/telepathyClient.js:1349 msgid "Certificate not activated" msgstr "ధృవీకరణపత్రం క్రియాశీలపరచబడిలేదు" #: ../js/ui/components/telepathyClient.js:1351 msgid "Certificate hostname mismatch" msgstr "ధృవీకరణపత్రం హోస్టుపేరు సరిపోలలేదు" #: ../js/ui/components/telepathyClient.js:1353 msgid "Certificate fingerprint mismatch" msgstr "ధృవీకరణపత్రం వ్రేలిముద్ర సరిపోలలేదు" #: ../js/ui/components/telepathyClient.js:1355 msgid "Certificate self-signed" msgstr "ధృవీకరణపత్రం స్వతహాగా-సంతకంచేయబడెను" #: ../js/ui/components/telepathyClient.js:1357 msgid "Status is set to offline" msgstr "స్థితి ఆఫ్‌లైన్‌కు అమర్చబడెను" #: ../js/ui/components/telepathyClient.js:1359 msgid "Encryption is not available" msgstr "ఎన్క్రిప్షన్ అందుబాటులో లేదు" #: ../js/ui/components/telepathyClient.js:1361 msgid "Certificate is invalid" msgstr "ధృవీకరణపత్రం చెల్లనిది" #: ../js/ui/components/telepathyClient.js:1363 msgid "Connection has been refused" msgstr "అనుసంధానము తిరస్కరించబడెను" #: ../js/ui/components/telepathyClient.js:1365 msgid "Connection can't be established" msgstr "అనుసంధానం ఏర్పరచలేము" #: ../js/ui/components/telepathyClient.js:1367 msgid "Connection has been lost" msgstr "అనుసంధానము కోల్పోయాము" #: ../js/ui/components/telepathyClient.js:1369 msgid "This account is already connected to the server" msgstr "ఈ ఖాతా ఇదివరకే సేవకానికి అనుసంధానమైంది" #: ../js/ui/components/telepathyClient.js:1371 msgid "" "Connection has been replaced by a new connection using the same resource" msgstr "అనుసంధానం అదే వనరు ఉపయోగించి కొత్త అనుసంధానంచే పునఃస్థాపించబడెను" #: ../js/ui/components/telepathyClient.js:1373 msgid "The account already exists on the server" msgstr "ఖాతా ఇప్పటికే సేవికపైన ఉన్నది" #: ../js/ui/components/telepathyClient.js:1375 msgid "Server is currently too busy to handle the connection" msgstr "అనుసంధానంను సంభాలించుటకు సేవిక మరీ వత్తిడిలో వుంది" #: ../js/ui/components/telepathyClient.js:1377 msgid "Certificate has been revoked" msgstr "ధృవీకరణపత్రం కొట్టివేయబడింది" #: ../js/ui/components/telepathyClient.js:1379 msgid "" "Certificate uses an insecure cipher algorithm or is cryptographically weak" msgstr "" "ధృవీకరణపత్రం సురక్షితం కాని సైఫర్ ఆల్గార్దెమ్ వుపయోగించుచున్నది లేదా " "క్రిప్టోగ్రఫీ పరంగా బలహీనంగా వుంది" #: ../js/ui/components/telepathyClient.js:1381 msgid "" "The length of the server certificate, or the depth of the server certificate " "chain, exceed the limits imposed by the cryptography library" msgstr "" "సేవిక ధృవీకరణపత్రం యొక్క పొడవు, లేదా సేవిక ధృవీకరణపత్రం చైన్ యొక్క లోతు, " "క్రిప్టోగ్రఫీ లైబ్రరీ చేత " "నిర్దేశితమైన పరిమితులను మించును" #: ../js/ui/components/telepathyClient.js:1383 msgid "Internal error" msgstr "అంతర్గత దోషం" #. translators: argument is the account name, like #. * name@jabber.org for example. */ #: ../js/ui/components/telepathyClient.js:1393 #, javascript-format msgid "Unable to connect to %s" msgstr "%s కు అనుసంధానం కాలేకపోయింది" #: ../js/ui/components/telepathyClient.js:1398 msgid "View account" msgstr "ఖాతాను చూడండి" #: ../js/ui/components/telepathyClient.js:1435 msgid "Unknown reason" msgstr "తెలియని కారణం" #: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:154 msgid "Windows" msgstr "కిటికీలు" #: ../js/ui/dash.js:249 ../js/ui/dash.js:287 msgid "Show Applications" msgstr "అనువర్తనాలను చూపించు" #: ../js/ui/dash.js:445 msgid "Dash" msgstr "గీటు" #: ../js/ui/dateMenu.js:96 msgid "Open Calendar" msgstr "క్యాలెండరు తెరువు" #: ../js/ui/dateMenu.js:100 msgid "Open Clocks" msgstr "గడియారాలు తెరువు" #: ../js/ui/dateMenu.js:107 msgid "Date & Time Settings" msgstr "తేదీ మరియు సమయం అమరికలు" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM"). #. */ #: ../js/ui/dateMenu.js:204 msgid "%A %B %e, %Y" msgstr "%A %B %e, %Y" #: ../js/ui/endSessionDialog.js:64 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "%s నిష్క్రమించు" #: ../js/ui/endSessionDialog.js:65 msgctxt "title" msgid "Log Out" msgstr "నిష్క్రమించు" #: ../js/ui/endSessionDialog.js:67 #, javascript-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "%s స్వయంచాలకంగా %d సెకనులో నిష్క్రమించును." msgstr[1] "%s స్వయంచాలకంగా %d సెకనులలో నిష్క్రమించును." #: ../js/ui/endSessionDialog.js:72 #, javascript-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "మీరు %d సెకనులో స్వయంచాలకంగా నిష్క్రమిస్తారు." msgstr[1] "మీరు %d సెకనులలో స్వయంచాలకంగా నిష్క్రమిస్తారు." #: ../js/ui/endSessionDialog.js:78 msgctxt "button" msgid "Log Out" msgstr "నిష్క్రమించు" #: ../js/ui/endSessionDialog.js:84 msgctxt "title" msgid "Power Off" msgstr "విద్యుత్ ఆపు" #: ../js/ui/endSessionDialog.js:85 msgctxt "title" msgid "Install Updates & Power Off" msgstr "నవీకరణలను స్థాపించి, విద్యుత్ ఆపు" #: ../js/ui/endSessionDialog.js:87 #, javascript-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "%d సెకన్లలో వ్యవస్థ స్వయంచాలకంగా ఆపివేయబడుతుంది." msgstr[1] "%d సెకన్లలో వ్యవస్థ స్వయంచాలకంగా ఆపివేయబడుతుంది." #: ../js/ui/endSessionDialog.js:91 msgctxt "checkbox" msgid "Install pending software updates" msgstr "పెండింగులో ఉన్న సాఫ్ట్‌వేర్ నవీకరణలను స్థాపించు" #: ../js/ui/endSessionDialog.js:94 ../js/ui/endSessionDialog.js:111 msgctxt "button" msgid "Restart" msgstr "పునఃప్రారంభించు" #: ../js/ui/endSessionDialog.js:96 msgctxt "button" msgid "Power Off" msgstr "విద్యుత్ ఆపు" #: ../js/ui/endSessionDialog.js:103 msgctxt "title" msgid "Restart" msgstr "పునఃప్రారంభించు" #: ../js/ui/endSessionDialog.js:105 #, javascript-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "%d సెకనులో వ్యవస్థ స్వయంచాలకంగా పునఃప్రారంభించబడుతుంది." msgstr[1] "%d సెకనులలో వ్యవస్థ స్వయంచాలకంగా పునఃప్రారంభించబడుతుంది." #: ../js/ui/endSessionDialog.js:119 msgctxt "title" msgid "Restart & Install Updates" msgstr "నవీకరణలను స్థాపించి, పునఃప్రారంభించు" #: ../js/ui/endSessionDialog.js:121 #, javascript-format msgid "The system will automatically restart and install updates in %d second." msgid_plural "" "The system will automatically restart and install updates in %d seconds." msgstr[0] "" "%d క్షణాలలో నవీకరణలను స్థాపించి, వ్యవస్థ స్వయంచాలకంగా పునఃప్రారంభించబడుతుంది." msgstr[1] "" "%d క్షణాలలో నవీకరణలను స్థాపించి, వ్యవస్థ స్వయంచాలకంగా పునఃప్రారంభించబడుతుంది." #: ../js/ui/endSessionDialog.js:127 msgctxt "button" msgid "Restart & Install" msgstr "పునఃప్రారంభించి & స్థాపించు" #: ../js/ui/endSessionDialog.js:128 msgctxt "button" msgid "Install & Power Off" msgstr "స్థాపించి & విద్యుత్ ఆపు" #: ../js/ui/endSessionDialog.js:129 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "నవీకరణలు స్థాపించిన తరువాత విద్యుత్ ఆపు" #: ../js/ui/endSessionDialog.js:338 msgid "Running on battery power: please plug in before installing updates." msgstr "" "బ్యాటరీ శక్తితో నడుస్తూంది: దయచేసి నవీకరణలు స్థాపించే ముందు విద్యుత్ " "అనుసంధానించండి." #: ../js/ui/endSessionDialog.js:355 msgid "Some applications are busy or have unsaved work." msgstr "కొన్ని అనువర్తనాలు బిజీగా ఉన్నాయి లేదా భద్రపరుచని పని ఉండిపోయింది." #: ../js/ui/endSessionDialog.js:362 msgid "Other users are logged in." msgstr "వేరే వాడుకరులు లాగిన్ అయివున్నారు." #. Translators: Remote here refers to a remote session, like a ssh login */ #: ../js/ui/endSessionDialog.js:640 #, javascript-format msgid "%s (remote)" msgstr "%s (రిమోట్)" #. Translators: Console here refers to a tty like a VT console */ #: ../js/ui/endSessionDialog.js:643 #, javascript-format msgid "%s (console)" msgstr "%s (కన్సోల్)" #: ../js/ui/extensionDownloader.js:199 msgid "Install" msgstr "స్థాపించు" #: ../js/ui/extensionDownloader.js:204 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "extensions.gnome.org నుండి “%s” దింపుకొని, స్థాపించాలా?" #: ../js/ui/keyboard.js:692 ../js/ui/status/keyboard.js:523 msgid "Keyboard" msgstr "కీబోర్డు" #: ../js/ui/lookingGlass.js:643 msgid "No extensions installed" msgstr "ఏ పొడిగింతలు స్థాపించబడిలేవు" #. Translators: argument is an extension UUID. */ #: ../js/ui/lookingGlass.js:697 #, javascript-format msgid "%s has not emitted any errors." msgstr "%s ఎటువంటి దోషాలను ఉద్గారించలేదు." #: ../js/ui/lookingGlass.js:703 msgid "Hide Errors" msgstr "దోషాలను దాయి" #: ../js/ui/lookingGlass.js:707 ../js/ui/lookingGlass.js:767 msgid "Show Errors" msgstr "దోషాలను చూపించు" #: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:71 #: ../js/ui/status/location.js:176 msgid "Enabled" msgstr "చేతనమైనది" #. Translators: this is for a network device that cannot be activated #. because it's disabled by rfkill (airplane mode) */ #. translators: #. * The device has been disabled #: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:179 #: ../js/ui/status/network.js:592 ../src/gvc/gvc-mixer-control.c:1830 msgid "Disabled" msgstr "అచేతనమైనది" #: ../js/ui/lookingGlass.js:721 msgid "Error" msgstr "దోషం" #: ../js/ui/lookingGlass.js:723 msgid "Out of date" msgstr "కాలం చెల్లినది" #: ../js/ui/lookingGlass.js:725 msgid "Downloading" msgstr "దింపుకుంటున్నది" #: ../js/ui/lookingGlass.js:749 msgid "View Source" msgstr "మూలాన్ని చూడు" #: ../js/ui/lookingGlass.js:758 msgid "Web Page" msgstr "జాల పుట" #: ../js/ui/messageTray.js:1327 msgid "Open" msgstr "తెరువు" #: ../js/ui/messageTray.js:1334 msgid "Remove" msgstr "తీసివేయి" #: ../js/ui/messageTray.js:1631 msgid "Notifications" msgstr "ప్రకటనలు" #: ../js/ui/messageTray.js:1638 msgid "Clear Messages" msgstr "సందేశాలు తుడిచివేయి" #: ../js/ui/messageTray.js:1657 msgid "Notification Settings" msgstr "ప్రకటనల అమరికలు" #: ../js/ui/messageTray.js:1710 msgid "Tray Menu" msgstr "పళ్ళెం జాబితా" #: ../js/ui/messageTray.js:1934 msgid "No Messages" msgstr "సందేశాలు లేవు" #: ../js/ui/messageTray.js:1979 msgid "Message Tray" msgstr "సందేశ పళ్ళెం" #: ../js/ui/messageTray.js:2992 msgid "System Information" msgstr "వ్యవస్థ సమాచారం" #: ../js/ui/notificationDaemon.js:513 ../src/shell-app.c:425 msgctxt "program" msgid "Unknown" msgstr "తెలియదు" #: ../js/ui/overviewControls.js:482 ../js/ui/screenShield.js:151 #, javascript-format msgid "%d new message" msgid_plural "%d new messages" msgstr[0] "%d కొత్త సందేశం" msgstr[1] "%d కొత్త సందేశాలు" #: ../js/ui/overview.js:84 msgid "Undo" msgstr "రద్దుచేయి" #: ../js/ui/overview.js:124 msgid "Overview" msgstr "పర్యావలోకనం" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. */ #: ../js/ui/overview.js:246 msgid "Type to search…" msgstr "వెతకడానికి టైపు చేయండి…" #: ../js/ui/panel.js:515 msgid "Quit" msgstr "నిష్క్రమించు" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". */ #: ../js/ui/panel.js:567 msgid "Activities" msgstr "కార్యకలాపాలు" #: ../js/ui/panel.js:918 msgid "Top Bar" msgstr "పైన పట్టీ" #: ../js/ui/popupMenu.js:269 msgid "toggle-switch-us" msgstr "టోగిల్-స్విచ్-అజ్" #: ../js/ui/runDialog.js:70 msgid "Enter a Command" msgstr "ఒక ఆదేశమును ప్రవేశపెట్టండి" #: ../js/ui/runDialog.js:110 ../js/ui/windowMenu.js:120 msgid "Close" msgstr "మూసివేయి" #: ../js/ui/runDialog.js:277 msgid "Restarting…" msgstr "పునఃప్రారంభిస్తున్నాము…" #. Translators: This is a time format for a date in #. long format */ #: ../js/ui/screenShield.js:88 msgid "%A, %B %d" msgstr "%A, %B %d" #: ../js/ui/screenShield.js:153 #, javascript-format msgid "%d new notification" msgid_plural "%d new notifications" msgstr[0] "%d కొత్త గమనింపు" msgstr[1] "%d కొత్త గమనింపులు" #: ../js/ui/screenShield.js:472 ../js/ui/status/system.js:345 msgid "Lock" msgstr "తాళంవేయి" #: ../js/ui/screenShield.js:706 msgid "GNOME needs to lock the screen" msgstr "గ్నోమ్ తెరకు తాళం వేయవలసివుంది" #: ../js/ui/screenShield.js:833 ../js/ui/screenShield.js:1304 msgid "Unable to lock" msgstr "తాళం వేయలేకపోతూంది" #: ../js/ui/screenShield.js:834 ../js/ui/screenShield.js:1305 msgid "Lock was blocked by an application" msgstr "తాళం ఒక అనువర్తనం చేత నిరోధించబడింది" #: ../js/ui/search.js:594 msgid "Searching…" msgstr "వెతుకుతోంది..." #: ../js/ui/search.js:596 msgid "No results." msgstr "ఏ ఫలితాలు లేవు." #: ../js/ui/shellEntry.js:25 msgid "Copy" msgstr "నకలించు" #: ../js/ui/shellEntry.js:30 msgid "Paste" msgstr "అతికించు" #: ../js/ui/shellEntry.js:97 msgid "Show Text" msgstr "పాఠం చూపించు" #: ../js/ui/shellEntry.js:99 msgid "Hide Text" msgstr "పాఠ్యం దాయి" #: ../js/ui/shellMountOperation.js:370 msgid "Password" msgstr "సంకేతపదం" #: ../js/ui/shellMountOperation.js:391 msgid "Remember Password" msgstr "సంకేతపదాన్ని గుర్తుంచుకొను" #: ../js/ui/status/accessibility.js:42 msgid "Accessibility" msgstr "ప్రాపనీయత" #: ../js/ui/status/accessibility.js:57 msgid "Zoom" msgstr "జూమ్" #: ../js/ui/status/accessibility.js:64 msgid "Screen Reader" msgstr "తెర చదువకం" #: ../js/ui/status/accessibility.js:68 msgid "Screen Keyboard" msgstr "తెర కీబోర్డు" #: ../js/ui/status/accessibility.js:72 msgid "Visual Alerts" msgstr "దృశ్యమాన అప్రమత్తతలు" #: ../js/ui/status/accessibility.js:75 msgid "Sticky Keys" msgstr "స్టికీ కీలు" #: ../js/ui/status/accessibility.js:78 msgid "Slow Keys" msgstr "నెమ్మది కీలు" #: ../js/ui/status/accessibility.js:81 msgid "Bounce Keys" msgstr "బౌన్స్ కీలు" #: ../js/ui/status/accessibility.js:84 msgid "Mouse Keys" msgstr "మౌస్ కీలు" #: ../js/ui/status/accessibility.js:144 msgid "High Contrast" msgstr "అధిక వ్యత్యాసం" #: ../js/ui/status/accessibility.js:193 msgid "Large Text" msgstr "అతిపెద్ద పాఠ్యము" #: ../js/ui/status/bluetooth.js:49 msgid "Bluetooth" msgstr "బ్లూటూత్" #: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:178 #: ../js/ui/status/network.js:360 ../js/ui/status/network.js:1281 #: ../js/ui/status/network.js:1392 ../js/ui/status/rfkill.js:86 #: ../js/ui/status/rfkill.js:114 msgid "Turn Off" msgstr "చేతనించు" #: ../js/ui/status/bluetooth.js:54 msgid "Bluetooth Settings" msgstr "బ్లూటూత్ అమరికలు" #: ../js/ui/status/bluetooth.js:104 #, javascript-format msgid "%d Connected Device" msgid_plural "%d Connected Devices" msgstr[0] "%d అనుసంధానించబడిన పరికరం" msgstr[1] "%d అనుసంధానించబడిన పరికరాలు" #: ../js/ui/status/bluetooth.js:106 ../js/ui/status/network.js:1309 msgid "Not Connected" msgstr "అనుసంధానించబడలేదు" #: ../js/ui/status/brightness.js:44 msgid "Brightness" msgstr "ప్రకాశత" #: ../js/ui/status/keyboard.js:547 msgid "Show Keyboard Layout" msgstr "కీబోర్డు నమూనాను చూపించు" #: ../js/ui/status/location.js:65 msgid "Location" msgstr "స్థానం" #: ../js/ui/status/location.js:72 ../js/ui/status/location.js:177 msgid "Disable" msgstr "అచేతనించు" #: ../js/ui/status/location.js:73 #| msgid "Power Settings" msgid "Privacy Settings" msgstr "గోప్యతా అమరికలు" #: ../js/ui/status/location.js:176 msgid "In Use" msgstr "వాడుకలో వుంది" #: ../js/ui/status/location.js:180 msgid "Enable" msgstr "చేతనించు" #: ../js/ui/status/network.js:101 msgid "" msgstr "<తెలియదు>" #: ../js/ui/status/network.js:457 ../js/ui/status/network.js:1307 #: ../js/ui/status/network.js:1511 msgid "Off" msgstr "అచేతనం" #: ../js/ui/status/network.js:459 msgid "Connected" msgstr "అనుసంధానమైంది" #. Translators: this is for network devices that are physically present but are not #. under NetworkManager's control (and thus cannot be used in the menu) */ #: ../js/ui/status/network.js:463 msgid "Unmanaged" msgstr "అస్థవ్యస్థం" #: ../js/ui/status/network.js:465 msgid "Disconnecting" msgstr "అననుసంధానిస్తున్నాము" #: ../js/ui/status/network.js:471 ../js/ui/status/network.js:1301 msgid "Connecting" msgstr "అనుసంధానిస్తూంది" #. Translators: this is for network connections that require some kind of key or password */ #: ../js/ui/status/network.js:474 msgid "Authentication required" msgstr "ధృవీకరణ అవసరం" #. Translators: this is for devices that require some kind of firmware or kernel #. module, which is missing */ #: ../js/ui/status/network.js:482 msgid "Firmware missing" msgstr "ఫిర్మ్​వేర్ తప్పిపోయినది" #. Translators: this is for a network device that cannot be activated (for example it #. is disabled by rfkill, or it has no coverage */ #: ../js/ui/status/network.js:486 msgid "Unavailable" msgstr "అందుబాటులోలేదు" #: ../js/ui/status/network.js:488 ../js/ui/status/network.js:1695 msgid "Connection failed" msgstr "అనుసంధానం విఫలమైంది" #: ../js/ui/status/network.js:504 msgid "Wired Settings" msgstr "తంత్రి అమరికలు" #: ../js/ui/status/network.js:546 ../js/ui/status/network.js:624 msgid "Mobile Broadband Settings" msgstr "మొబైల్ బ్రాడ్‌బాండ్ అమరికలు" #: ../js/ui/status/network.js:588 ../js/ui/status/network.js:1305 msgid "Hardware Disabled" msgstr "హార్డువేర్ అచేతనించబడింది" #: ../js/ui/status/network.js:632 msgid "Use as Internet connection" msgstr "అంతర్జాల అనుసంధానం వలె ఉపయోగించు" #: ../js/ui/status/network.js:813 msgid "Airplane Mode is On" msgstr "విమాన రీతి చేతనం" #: ../js/ui/status/network.js:814 msgid "Wi-Fi is disabled when airplane mode is on." msgstr "విమాన రీతి ప్రారంభించబడినప్పుడు వై-ఫై అచేతనించబడుతుంది." #: ../js/ui/status/network.js:815 msgid "Turn Off Airplane Mode" msgstr "విమాన రీతిని ఆపివేయి" #: ../js/ui/status/network.js:824 msgid "Wi-Fi is Off" msgstr "వై-ఫై ఆపబడింది" #: ../js/ui/status/network.js:825 msgid "Wi-Fi needs to be turned on in order to connect to a network." msgstr "నెట్‌వర్కుకు అనుసంధానం కావాలంటే వై-ఫై చేతనమైవుండాలి." #: ../js/ui/status/network.js:826 msgid "Turn On Wi-Fi" msgstr "వై-ఫై ప్రారంభించు" #: ../js/ui/status/network.js:851 msgid "Wi-Fi Networks" msgstr "వై-ఫై నెట్‍‌వర్కులు" #: ../js/ui/status/network.js:853 msgid "Select a network" msgstr "ఒక నెట్‌వర్కును ఎంచుకోండి" #: ../js/ui/status/network.js:882 msgid "No Networks" msgstr "ఏ నెట్‍‌వర్కులు లేవు" #: ../js/ui/status/network.js:903 ../js/ui/status/rfkill.js:112 msgid "Use hardware switch to turn off" msgstr "ఆపివేయుటకు హార్డ్‌వేర్ మీటను వాడండి" #: ../js/ui/status/network.js:1173 msgid "Select Network" msgstr "నెట్‍‌వర్క్ ఎంచుకోండి" #: ../js/ui/status/network.js:1179 msgid "Wi-Fi Settings" msgstr "వై-ఫై అమరికలు" #: ../js/ui/status/network.js:1281 msgid "Turn On" msgstr "అచేతనించు" #: ../js/ui/status/network.js:1298 msgid "Hotspot Active" msgstr "హాట్‌స్పాట్ క్రియాశీలం" #: ../js/ui/status/network.js:1409 msgid "connecting..." msgstr "అనుసంధానిస్తున్నది..." #. Translators: this is for network connections that require some kind of key or password */ #: ../js/ui/status/network.js:1412 msgid "authentication required" msgstr "ప్రమాణీకరణ అవసరం" #: ../js/ui/status/network.js:1414 msgid "connection failed" msgstr "అనుసంధానం విఫలమైంది" #: ../js/ui/status/network.js:1480 ../js/ui/status/rfkill.js:89 msgid "Network Settings" msgstr "నెట్‌వర్క్ అమరికలు" #: ../js/ui/status/network.js:1482 msgid "VPN Settings" msgstr "VPN అమరికలు" #: ../js/ui/status/network.js:1501 msgid "VPN" msgstr "VPN" #: ../js/ui/status/network.js:1656 msgid "Network Manager" msgstr "నెట్‍‌వర్క్ నిర్వాహకము" #: ../js/ui/status/network.js:1696 msgid "Activation of network connection failed" msgstr "నెట్‌వర్క్అనుసంధానం క్రియాశీలపరచుట విఫలమైంది" #: ../js/ui/status/power.js:49 msgid "Power Settings" msgstr "విద్యుత్ అమరికలు" #: ../js/ui/status/power.js:65 msgid "Fully Charged" msgstr "పూర్తిగా చార్జయింది" #: ../js/ui/status/power.js:72 ../js/ui/status/power.js:78 msgid "Estimating…" msgstr "అంచనావేస్తున్నది…" #: ../js/ui/status/power.js:86 #, javascript-format msgid "%d∶%02d Remaining (%d%%)" msgstr "%d∶%02d మిగిలివున్నది (%d%%)" #: ../js/ui/status/power.js:91 #, javascript-format msgid "%d∶%02d Until Full (%d%%)" msgstr "%d∶%02d పూర్తయ్యేవరకు (%d%%)" #: ../js/ui/status/power.js:119 msgid "UPS" msgstr "UPS" #: ../js/ui/status/power.js:121 msgid "Battery" msgstr "బ్యాటరీ" #: ../js/ui/status/rfkill.js:83 msgid "Airplane Mode" msgstr "విమాన రీతి" #: ../js/ui/status/rfkill.js:85 msgid "On" msgstr "చేతనం" #: ../js/ui/status/system.js:317 msgid "Switch User" msgstr "వాడుకరిని మార్చు" #: ../js/ui/status/system.js:322 msgid "Log Out" msgstr "నిష్క్రమించు" #: ../js/ui/status/system.js:341 msgid "Orientation Lock" msgstr "దిశ తాళం" #: ../js/ui/status/system.js:349 msgid "Suspend" msgstr "తాత్కాలికంగా నిలిపివేయి" #: ../js/ui/status/system.js:352 msgid "Power Off" msgstr "విద్యుత్ ఆపు" #: ../js/ui/status/volume.js:127 msgid "Volume changed" msgstr "ధ్వనిస్థాయి మార్చబడింది" #: ../js/ui/status/volume.js:162 msgid "Volume" msgstr "ధ్వనిస్థాయి" #: ../js/ui/status/volume.js:213 msgid "Microphone" msgstr "మైక్రోఫోను" #: ../js/ui/unlockDialog.js:67 msgid "Log in as another user" msgstr "వేరొక వాడుకరి వలె ప్రవేశించండి" #: ../js/ui/unlockDialog.js:84 msgid "Unlock Window" msgstr "కిటికీ తాళంతీయి" #: ../js/ui/viewSelector.js:158 msgid "Applications" msgstr "అనువర్తనాలు" #: ../js/ui/viewSelector.js:162 msgid "Search" msgstr "వెతుకు" #: ../js/ui/windowAttentionHandler.js:19 #, javascript-format msgid "“%s” is ready" msgstr "“%s” సిద్ధం" #: ../js/ui/windowManager.js:65 msgid "Do you want to keep these display settings?" msgstr "ఈ ప్రదర్శనా అమరికలను ఉంచుకోవాలనుకుంటున్నారా?" #. Translators: this and the following message should be limited in lenght, #. to avoid ellipsizing the labels. #. */ #: ../js/ui/windowManager.js:84 msgid "Revert Settings" msgstr "అమరికలను తిరితిప్పు" #: ../js/ui/windowManager.js:88 msgid "Keep Changes" msgstr "మార్పులను ఉంచు" #: ../js/ui/windowManager.js:107 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "%d క్షణంలో అమరికలు తిరితిప్పబడతాయి" msgstr[1] "%d క్షణాలలో అమరికలు తిరితిప్పబడతాయి" #: ../js/ui/windowMenu.js:34 msgid "Minimize" msgstr "చిన్నగించు" #: ../js/ui/windowMenu.js:41 msgid "Unmaximize" msgstr "కాస్త చిన్నదిగాచేయి" #: ../js/ui/windowMenu.js:45 msgid "Maximize" msgstr "పెద్దగించు" #: ../js/ui/windowMenu.js:52 msgid "Move" msgstr "తరలించు" #: ../js/ui/windowMenu.js:58 msgid "Resize" msgstr "పరిమాణం మార్చు" #: ../js/ui/windowMenu.js:65 msgid "Move Titlebar Onscreen" msgstr "శీర్షికపట్టీ పైతెరను తరలించు" #: ../js/ui/windowMenu.js:70 msgid "Always on Top" msgstr "ఎల్లప్ఫుడు పైనే" #: ../js/ui/windowMenu.js:89 msgid "Always on Visible Workspace" msgstr "ఎల్లప్పుడూ కనిపిస్తున్న కార్యక్షేత్రం పైనే (_A)" #: ../js/ui/windowMenu.js:106 msgid "Move to Workspace Up" msgstr "పనిచేస్తున్న చోటునుండీ పైకి వెళ్ళు" #: ../js/ui/windowMenu.js:111 msgid "Move to Workspace Down" msgstr "పనిచేస్తున్న చోటునుండీ కిందకు వెళ్ళు" #: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1 msgid "Evolution Calendar" msgstr "ఎవల్యూషన్ క్యాలెండరు" #. translators: #. * The number of sound outputs on a particular device #: ../src/gvc/gvc-mixer-control.c:1837 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u అవుట్‌పుట్" msgstr[1] "%u అవుట్‌పుట్‌లు" #. translators: #. * The number of sound inputs on a particular device #: ../src/gvc/gvc-mixer-control.c:1847 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u ఇన్‌పుట్" msgstr[1] "%u ఇన్‌పుట్‌లు" #: ../src/gvc/gvc-mixer-control.c:2373 msgid "System Sounds" msgstr "వ్యవస్థ శబ్దములు" #: ../src/main.c:373 msgid "Print version" msgstr "ముద్రిత రూపాంతరం" #: ../src/main.c:379 msgid "Mode used by GDM for login screen" msgstr "ప్రవేశ తెర కొరకు GDM చే ఉపయోగించబడిన రీతి" #: ../src/main.c:385 msgid "Use a specific mode, e.g. \"gdm\" for login screen" msgstr "ఒక నిర్దిష్ట రీతిని వాడు, ఉదా. ప్రవేశ తెర కొరకు \"gdm\"" #: ../src/main.c:391 msgid "List possible modes" msgstr "సాధ్యమగు రీతులను జాబితాగా చేయి" #: ../src/shell-app.c:666 #, c-format msgid "Failed to launch “%s”" msgstr "“%s” ప్రారంభించుటలో విఫలమైంది" #: ../src/shell-keyring-prompt.c:714 msgid "Passwords do not match." msgstr "సంకేతపదాలు సరిపోలడంలేదు." #: ../src/shell-keyring-prompt.c:722 msgid "Password cannot be blank" msgstr "సంకేతపదము ఖాళీగా ఉండకూడదు" #: ../src/shell-polkit-authentication-agent.c:346 msgid "Authentication dialog was dismissed by the user" msgstr "ప్రమాణీకరణ సంవాదం వాడుకరిచే రద్దుచేయబడింది" #~ msgid "The maximum accuracy level of location." #~ msgstr "స్థానం యొక్క గరిష్ఠ ఖచ్ఛితత్వ స్థాయి." #~ msgid "" #~ "Configures the maximum level of location accuracy applications are " #~ "allowed to see. Valid options are 'off' (disable location tracking), " #~ "'country', 'city', 'neighborhood', 'street', and 'exact' (typically " #~ "requires GPS receiver). Please keep in mind that this only controls what " #~ "GeoClue will allow applications to see and they can find user's location " #~ "on their own using network resources (albeit with street-level accuracy " #~ "at best)." #~ msgstr "" #~ "గరిష్ట స్థాయిలో స్థానం ఖచ్చితత్వ అనువర్తనాలు చూడటానికి అనుమతించుటను స్వరూపిస్తుంది. చెల్లుబాటు " #~ "అయ్యే ఐచ్ఛికాలు 'ఆపివేయి' (స్థానం జాడ అచేతనం), 'దేశం', 'పట్టణం', 'పొరుగు', 'వీధి', 'మరియు " #~ "'ఖచ్చితం' (సాధారణంగా GPS రిసీవర్ అవసరం) ఉంటాయి. ఇది కేవలం జియోక్లూ అనువర్తనాలకు ఏమైతే చూడటానికి " #~ "అనుమతినిస్తుందో వాటిని మాత్రమే నియంత్రిస్తుంది మరియు అవి వాడుకరి స్థానాన్ని వాటి స్వంతంగా నెట్‌వర్కు " #~ "వనరులను ఉపయోగించి కనుక్కోగలవని గమనించగలరు (ఆల్బెట్‌తో వీధి స్థాయి కచ్చితత్వం ఉత్తమం)" #~ msgid "Arrangement of buttons on the titlebar" #~ msgstr "శీర్షికపట్టీ పై బటన్స్ యొక్క పేర్పు" #~ msgid "" #~ "This key overrides the key in org.gnome.desktop.wm.preferences when " #~ "running GNOME Shell." #~ msgstr "" #~ "గ్నోమ్ షెల్ నందు నడుచునప్పుడు ఈ కీ org.gnome.desktop.wm.preferences నందలి కీను " #~ "వోవర్‌రైడ్ చేయును." #~ msgid "Extension" #~ msgstr "పొడిగింత" #~ msgid "Select an extension to configure using the combobox above." #~ msgstr "పైన ఉన్న కోంబోపెట్టెను వాడి స్వరూపించుటకు అనువర్తనాన్ని ఎంచుకోండి." #~ msgid "calendar:MY" #~ msgstr "క్యాలెండరు:నా" #~ msgid "Screenshots" #~ msgstr "తెరపట్టులు" #~ msgid "Record a screencast" #~ msgstr "తెరప్రసారాన్ని రికార్డించు" #~ msgid "Whether to collect stats about applications usage" #~ msgstr "అనువర్తనాలు వాడుక గురించిన గణాంకాలను సేకరించాలా వద్దా" #~ msgid "" #~ "The shell normally monitors active applications in order to present the " #~ "most used ones (e.g. in launchers). While this data will be kept private, " #~ "you may want to disable this for privacy reasons. Please note that doing " #~ "so won't remove already saved data." #~ msgstr "" #~ "ఎక్కువగా వాడిన వాటిని సమర్పించడానికి షెల్ సాధారణంగా క్రియాశీల అనువర్తనాలను పర్యవేక్షిస్తుంది (ఉదా. " #~ "ప్రారంభకాలలో). అపుడు ఈ డేటా గోప్యంగా ఉంచబడుతుంది, గోప్యతా కారణాల వలన మీరు దీనిని " #~ "అచేతనపరచాలనుకోవచ్చు. దయచేసి గుర్తుంచుకోండి ఇలా చేయడం వలన ఇదివరకే దాచబడిన డేటా తీసివేయబడదు." #~ msgid "List of categories that should be displayed as folders" #~ msgstr "సంచయాల వలె ప్రదర్శించబడవలసిన వర్గముల జాబితా" #~ msgid "" #~ "Each category name in this list will be represented as folder in the " #~ "application view, rather than being displayed inline in the main view." #~ msgstr "" #~ "ఈ జాబితానందలి ప్రతి వర్గపు పేరు ముఖ్య దర్శనం నందు యిన్‌లైన్‌గా ప్రదర్శించబడుట కన్నా, అనువర్తన " #~ "దర్శనం నందు ఫోల్డర్ వలె చూపబడును." #~ msgid "" #~ "Internally used to store the last IM presence explicitly set by the user. " #~ "The value here is from the TpConnectionPresenceType enumeration." #~ msgstr "" #~ "అంతర్గతంగా స్పష్టంగా వినియోగదారుని ద్వారా సెట్ చివరి IM ఉనికిని నిల్వ చేయడానికి ఉపయోగించారు. ఇక్కడ " #~ "విలువ Tp కనెక్షన్ ఉనికి పద్ధతి వయనము నుండి ఉంది." #~ msgid "" #~ "Internally used to store the last session presence status for the user. " #~ "The value here is from the GsmPresenceStatus enumeration." #~ msgstr "" #~ "అంతర్గతంగా యూజర్ కోసం చివరి సెషన్ ఉనికిని స్థితి నిల్వ చేయడానికి ఉపయోగించారు. ఇక్కడ విలువ GSM ఉనికి " #~ "స్థితి వయనము నుండి ఉంది." #~ msgid "Keybinding to toggle the screen recorder" #~ msgstr "తెర రికార్డరుని మార్చుటకు అడ్డదారి" #~ msgid "Keybinding to start/stop the builtin screen recorder." #~ msgstr "అప్రమేయ తెర రికార్డరుని ప్రారంభించుటకు/ఆపడానికి అడ్డదారి." #~ msgid "Framerate used for recording screencasts." #~ msgstr "ఫ్రేమ్‌రేట్ అను దానిని తెరప్రసారాలను రికార్డు చేయుటకు వాడతారు." #~ msgid "" #~ "The framerate of the resulting screencast recordered by GNOME Shell's " #~ "screencast recorder in frames-per-second." #~ msgstr "" #~ "ఫలితముగా వచ్చు తెర ప్రసారము యొక్క ఫ్రేమ్ రేటు గ్నోమ్ షెల్ తెరప్రసార రికార్డర్ ఫ్రేమ్ పర్ సెకనులలో " #~ "రికార్డుచేయబడుతుంది." #~ msgid "The gstreamer pipeline used to encode the screencast" #~ msgstr "తెరప్రసారాన్ని ఎన్‌కోడ్ చేయడానికి జి స్ట్రీమర్ పైప్‌లైన్ వాడబడుతుంది" #~ msgid "" #~ "Sets the GStreamer pipeline used to encode recordings. It follows the " #~ "syntax used for gst-launch. The pipeline should have an unconnected sink " #~ "pad where the recorded video is recorded. It will normally have a " #~ "unconnected source pad; output from that pad will be written into the " #~ "output file. However the pipeline can also take care of its own output - " #~ "this might be used to send the output to an icecast server via shout2send " #~ "or similar. When unset or set to an empty value, the default pipeline " #~ "will be used. This is currently 'vp8enc min_quantizer=13 max_quantizer=13 " #~ "cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux' and records to " #~ "WEBM using the VP8 codec. %T is used as a placeholder for a guess at the " #~ "optimal thread count on the system." #~ msgstr "" #~ "రికార్డింగులను ఎన్‌కోడ్ చేయడానికి జిస్ట్రీమర్ పైప్‌లైన్‌ను అమర్చును. ఇది gst-launch కొరకు " #~ "వ్యాక్యనిర్మాణాన్ని అనుసరిస్తుంది. వీడియో ఎక్కడైతే రికార్డు అవుతుందో అక్కడ ఒక అనుసంధానం కాని సింక్ " #~ "ప్యాడ్‌ని కలిగివుండాలి. ఇది సాధారణంగా ఒక అనుసంధానము కాని మూలము ప్యాడ్ అయివుంటుంది; ఈ ప్యాడ్ నుండి " #~ "వచ్చు అవుట్‌పుట్ అవుట్‌పుట్ దస్త్రంలోనికి వ్రాయబడుతుంది. ఏదిఏమైనప్పటికీ పైప్ లైన్ కూడా దాని అవుట్‌పుట్ " #~ "గురించి భద్రత వహిస్తుంది - ఇది అవుట్‌పుట్‌ని ఐస్‌కాస్ట్ సేవకానికి shout2send లేదా ఇటువంటి వాటి ద్వారా " #~ "పంపుటకు వాడబడుతుంది. అమర్చకపోయినా లేక ఒక ఖాళీ విలువకి అమర్చినా, అప్రమేయ పైప్‌లైన్ వాడబడుతుంది, " #~ "ఇది ప్రస్తుతం 'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 " #~ "deadline=1000000 threads=%T ! queue ! webmmux' మరియు VP8 కొడెక్ వాడి WEBMకి " #~ "రికార్డుచేస్తుంది. %T అనేది వ్యవస్థ పై ఒక ప్లేస్‌హోల్డర్ వలె గ్వెస్ కొరకు ఆప్టిమల్ త్రెడ్ కౌంట్ " #~ "వాడబడుతుంది." #~ msgid "File extension used for storing the screencast" #~ msgstr "దస్త్ర పొడిగింతను తెరప్రసారాన్ని భద్రపరుచుటకు వాడతారు" #~ msgid "" #~ "The filename for recorded screencasts will be a unique filename based on " #~ "the current date, and use this extension. It should be changed when " #~ "recording to a different container format." #~ msgstr "" #~ "రికార్డుచేయబడిన తెరప్రసారాలకు దస్త్రము పేరు ప్రస్తుత తేదీ పై ఆధారపడి దస్త్రం పేరు ఒకే విధముగా " #~ "ఉంటుంది, మరియు ఈ పొడిగింతను వాడండి. ఇది వేరే ఇతర ఆకృతిలో రికార్డు చేస్తున్నపుడు ఇది మార్చబడాలి." 07070100000266000081A40000000000000000000000016712993F000184BA000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/tg.po# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Victor Ibragimov , 2013, 2014, 2015, 2019 # msgid "" msgstr "" "Project-Id-Version: Tajik Gnome\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" "POT-Creation-Date: 2019-03-02 10:57+0000\n" "PO-Revision-Date: 2019-03-13 21:44+0500\n" "Last-Translator: Victor Ibragimov \n" "Language-Team: \n" "Language: tg\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 2.2.1\n" #: data/50-gnome-shell-system.xml:6 msgid "System" msgstr "Низом" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "Намоиш додани рӯйхати огоҳиҳо" #: data/50-gnome-shell-system.xml:12 msgid "Focus the active notification" msgstr "Марказонидани огоҳии фаъол" #: data/50-gnome-shell-system.xml:15 msgid "Show the overview" msgstr "Намоиш додани ҷамъбаст" #: data/50-gnome-shell-system.xml:18 msgid "Show all applications" msgstr "Намоиш додани ҳамаи барномаҳо" #: data/50-gnome-shell-system.xml:21 msgid "Open the application menu" msgstr "Кушодани феҳристи барномаҳо" #: data/gnome-shell-extension-prefs.desktop.in.in:4 #: js/extensionPrefs/main.js:216 #| msgid "GNOME Shell Extensions" msgid "Shell Extensions" msgstr "Васеъшавиҳои восит" #: data/gnome-shell-extension-prefs.desktop.in.in:5 msgid "Configure GNOME Shell Extensions" msgstr "Танзимоти васеъшавиҳои восити GNOME" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "Восити GNOME" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "Идоракунии равзанаҳо ва оғозкунии барномаҳо" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "Фаъол кардани абзорҳои дохилие, ки барои таҳиягарон ва озмунгарон дастрас мебошанд (ба воситаи Alt-F2)" #: data/org.gnome.shell.gschema.xml.in:9 msgid "Allows access to internal debugging and monitoring tools using the Alt-F2 dialog." msgstr "Ҳамеша пайдо кардани дастрасӣ ба абзорҳои дохилии ислоҳи хатоҳо ва идоракунӣ тавассути равзанаи гуфтугӯи Alt-F2." #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "Рамзҳои UUID барои пасвандҳои фаъолшаванда" #: data/org.gnome.shell.gschema.xml.in:17 msgid "GNOME Shell extensions have a UUID property; this key lists extensions which should be loaded. Any extension that wants to be loaded needs to be in this list. You can also manipulate this list with the EnableExtension and DisableExtension D-Bus methods on org.gnome.Shell." msgstr "Пасвандҳои GNOME Shell хусусияти UUID доранд; ин калид пасвандҳоеро, ки бояд бор карда шаванд, номбар мекунад. Ҳар як пасванде, ки бояд бор карда шавад, бояд дар ин рӯйхат бошад. Шумо инчунин метавонед ин рӯйхатро тавассути усулҳои DisableExtension D-Bus ва EnableExtension дар org.gnome.Shell таҳрир кунед." #: data/org.gnome.shell.gschema.xml.in:26 msgid "Disable user extensions" msgstr "Ғайрифаъол кардани васеъшавиҳои корбар" #: data/org.gnome.shell.gschema.xml.in:27 msgid "Disable all extensions the user has enabled without affecting the “enabled-extension” setting." msgstr "Ҳамаи васеъшавиҳое, ки корбар фаъол кард, бе расонидани таъсир ба танзими “васеъшавиии-фаъол” ғайрифаъол карда мешаванд." #: data/org.gnome.shell.gschema.xml.in:34 msgid "Disables the validation of extension version compatibility" msgstr "Тафтиши пасванди мувофиқати версияро ғайрифаъол мекунад" #: data/org.gnome.shell.gschema.xml.in:35 msgid "GNOME Shell will only load extensions that claim to support the current running version. Enabling this option will disable this check and try to load all extensions regardless of the versions they claim to support." msgstr "Восити GNOME танҳо пасвандҳоеро, ки версияи ҷориро дастгирӣ мекунанд, бор мекунад. Фаъолсозии ин имкон, байракчаи ҷориро ғайрифаъол мекунад ва ҳамаи пасвандҳоро новобаста аз версияҳои дастгиришаванда бор мекунад." #: data/org.gnome.shell.gschema.xml.in:43 msgid "List of desktop file IDs for favorite applications" msgstr "Рӯйхати рамзҳои ID-и файлҳои мизи корӣ барои барномаҳои дӯстдошта" #: data/org.gnome.shell.gschema.xml.in:44 msgid "The applications corresponding to these identifiers will be displayed in the favorites area." msgstr "Барномаҳое, ки ба ин идентификаторҳо мувофиқ мебошанд, дар ноҳияи баргузидаҳо намоиш дода мешаванд." #: data/org.gnome.shell.gschema.xml.in:51 msgid "App Picker View" msgstr "Намуди интихобкунандаи барнома" #: data/org.gnome.shell.gschema.xml.in:52 msgid "Index of the currently selected view in the application picker." msgstr "Индекси намуди интихобшудаи ҷорӣ дар интихобкунандаи барнома." #: data/org.gnome.shell.gschema.xml.in:58 msgid "History for command (Alt-F2) dialog" msgstr "Таърихи равзанаи гуфтугӯи фармон (Alt-F2)" #. Translators: looking glass is a debugger and inspector tool, see https://wiki.gnome.org/Projects/GnomeShell/LookingGlass #: data/org.gnome.shell.gschema.xml.in:63 msgid "History for the looking glass dialog" msgstr "Таърих барои равзанаи гуфтугӯи оина" #: data/org.gnome.shell.gschema.xml.in:67 #| msgid "Always show the 'Log out' menu item in the user menu." msgid "Always show the “Log out” menu item in the user menu." msgstr "Ҳамеша намоиш додани объекти менюи \"Баромадан\" дар менюи корбар." #: data/org.gnome.shell.gschema.xml.in:68 #| msgid "This key overrides the automatic hiding of the 'Log out' menu item in single-user, single-session situations." msgid "This key overrides the automatic hiding of the “Log out” menu item in single-user, single-session situations." msgstr "Ин калид пинҳонкунии худкори объекти менюи \"Баромадан\"-ро дар вазъиятҳои корбари ягона ва ҷаласаи ягона идора мекунад." #: data/org.gnome.shell.gschema.xml.in:75 msgid "Whether to remember password for mounting encrypted or remote filesystems" msgstr "Дар ёд доштан ё дар ёд надоштани парол барои васл кардани системаҳои файлии рамздор ё дурдаст" #: data/org.gnome.shell.gschema.xml.in:76 #| msgid "The shell will request a password when an encrypted device or a remote filesystem is mounted. If the password can be saved for future use a 'Remember Password' checkbox will be present. This key sets the default state of the checkbox." msgid "The shell will request a password when an encrypted device or a remote filesystem is mounted. If the password can be saved for future use a “Remember Password” checkbox will be present. This key sets the default state of the checkbox." msgstr "Вақте ки дастгоҳ ё системаи файлии рамздор васл карда мешавад, восит паролро мепурсад. Агар парол барои истифодаи оянда захира шавад, байрақчаи \"Дар ёд доштани парол\" мавҷуд мешавад. Ин калид ҳолати пешфарзи байрақчаро таъин мекунад." #: data/org.gnome.shell.gschema.xml.in:85 msgid "Whether the default Bluetooth adapter had set up devices associated to it" msgstr "" #: data/org.gnome.shell.gschema.xml.in:86 msgid "The shell will only show a Bluetooth menu item if a Bluetooth adapter is powered, or if there were devices set up associated with the default adapter. This will be reset if the default adapter is ever seen not to have devices associated to it." msgstr "" #: data/org.gnome.shell.gschema.xml.in:95 msgid "Enable introspection API" msgstr "" #: data/org.gnome.shell.gschema.xml.in:96 msgid "Enables a D-Bus API that allows to introspect the application state of the shell." msgstr "" #: data/org.gnome.shell.gschema.xml.in:109 msgid "Keybinding to open the application menu" msgstr "Тугмабандӣ барои кушодани менюи барнома" #: data/org.gnome.shell.gschema.xml.in:110 msgid "Keybinding to open the application menu." msgstr "Тугмабандӣ барои кушодани менюи барнома." #: data/org.gnome.shell.gschema.xml.in:116 #| msgid "Keybinding to open the \"Show Applications\" view" msgid "Keybinding to open the “Show Applications” view" msgstr "Тугмабандӣ барои кушодани намуди \"Намоиш додани барномаҳо\"" #: data/org.gnome.shell.gschema.xml.in:117 #| msgid "Keybinding to open the \"Show Applications\" view of the Activities Overview." msgid "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "Тугмабандӣ барои кушодани намуди \"Намоиш додани барномаҳо\"-и Хулосаи фаъолият." #: data/org.gnome.shell.gschema.xml.in:124 msgid "Keybinding to open the overview" msgstr "Тугмабандӣ барои кушодани хулоса" #: data/org.gnome.shell.gschema.xml.in:125 msgid "Keybinding to open the Activities Overview." msgstr "Тугмабандӣ барои кушодани хулосаи фаъолият." #: data/org.gnome.shell.gschema.xml.in:131 msgid "Keybinding to toggle the visibility of the notification list" msgstr "Тугмабандӣ барои иваз кардани намоёнии рӯйхати огоҳиҳо" #: data/org.gnome.shell.gschema.xml.in:132 msgid "Keybinding to toggle the visibility of the notification list." msgstr "Тугмабандӣ барои иваз кардани намоёнии рӯйхати огоҳиҳо." #: data/org.gnome.shell.gschema.xml.in:138 msgid "Keybinding to focus the active notification" msgstr "Тугмабандӣ барои марказонидани огоҳии фаъол" #: data/org.gnome.shell.gschema.xml.in:139 msgid "Keybinding to focus the active notification." msgstr "Тугмабандӣ барои марказонидани огоҳии фаъол." #: data/org.gnome.shell.gschema.xml.in:145 msgid "Keybinding that pauses and resumes all running tweens, for debugging purposes" msgstr "Тугмабандие, ки ҳамаи твинҳои фаъол барои мақсадҳои ислоҳи хатоҳо таваққуф ва оғоз мекунад" #: data/org.gnome.shell.gschema.xml.in:150 #| msgid "Show Applications" msgid "Switch to application 1" msgstr "Гузариш ба барномаи 1" #: data/org.gnome.shell.gschema.xml.in:154 #| msgid "Show Applications" msgid "Switch to application 2" msgstr "Гузариш ба барномаи 2" #: data/org.gnome.shell.gschema.xml.in:158 #| msgid "Show Applications" msgid "Switch to application 3" msgstr "Гузариш ба барномаи 3" #: data/org.gnome.shell.gschema.xml.in:162 #| msgid "Show Applications" msgid "Switch to application 4" msgstr "Гузариш ба барномаи 4" #: data/org.gnome.shell.gschema.xml.in:166 #| msgid "Show Applications" msgid "Switch to application 5" msgstr "Гузариш ба барномаи 5" #: data/org.gnome.shell.gschema.xml.in:170 #| msgid "Show Applications" msgid "Switch to application 6" msgstr "Гузариш ба барномаи 6" #: data/org.gnome.shell.gschema.xml.in:174 #| msgid "Show Applications" msgid "Switch to application 7" msgstr "Гузариш ба барномаи 7" #: data/org.gnome.shell.gschema.xml.in:178 #| msgid "Show Applications" msgid "Switch to application 8" msgstr "Гузариш ба барномаи 8" #: data/org.gnome.shell.gschema.xml.in:182 #| msgid "Show Applications" msgid "Switch to application 9" msgstr "Гузариш ба барномаи 9" #: data/org.gnome.shell.gschema.xml.in:190 msgid "Which keyboard to use" msgstr "Клавиатураро интихоб намоед" #: data/org.gnome.shell.gschema.xml.in:191 msgid "The type of keyboard to use." msgstr "Навъи клавиатурае, ки истифода мешавад." #: data/org.gnome.shell.gschema.xml.in:202 #: data/org.gnome.shell.gschema.xml.in:229 msgid "Limit switcher to current workspace." msgstr "Ивазкунандаи ҳудуд ба фазои кории ҷорӣ." #: data/org.gnome.shell.gschema.xml.in:203 msgid "If true, only applications that have windows on the current workspace are shown in the switcher. Otherwise, all applications are included." msgstr "Агар фаъол бошад, танҳо барномаҳое, ки равзанаро дар фазои кории ҷорӣ дар бар мегирад, дар ивазкунанда намоиш дода мешаванд. Ба таври дигар ҳамаи барномаҳо илова карда мешаванд." #: data/org.gnome.shell.gschema.xml.in:220 msgid "The application icon mode." msgstr "Ҳолати нишонаи барнома." #: data/org.gnome.shell.gschema.xml.in:221 #| msgid "Configures how the windows are shown in the switcher. Valid possibilities are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-only' (shows only the application icon) or 'both'." msgid "Configures how the windows are shown in the switcher. Valid possibilities are “thumbnail-only” (shows a thumbnail of the window), “app-icon-only” (shows only the application icon) or “both”." msgstr "Тарзи намоиш додани равзанаҳоро дар интихобкунанда конфигуратсия мекунад. Имкониятҳои боэътибор \"танҳо пешнамоишҳои кучак\" (пешнамоиши кучаки равзанаро намоиш медиҳад), \"танҳо нишонаи барнома\" (танҳо нишонаи барномаро намоиш медиҳад) ё \"ҳар ду\"." #: data/org.gnome.shell.gschema.xml.in:230 msgid "If true, only windows from the current workspace are shown in the switcher. Otherwise, all windows are included." msgstr "Агар фаъол бошад, танҳо равзанаҳо аз фазои кории ҷорӣ дар ивазкунанда намоиш дода мешаванд. Ба таври дигар ҳамаи равзанаҳо илова карда мешаванд." #: data/org.gnome.shell.gschema.xml.in:242 msgid "Attach modal dialog to the parent window" msgstr "Замима кардани равзанаи гуфтугӯи модалӣ ба равзанаи асосӣ" #: data/org.gnome.shell.gschema.xml.in:243 #: data/org.gnome.shell.gschema.xml.in:252 #: data/org.gnome.shell.gschema.xml.in:260 #: data/org.gnome.shell.gschema.xml.in:268 #: data/org.gnome.shell.gschema.xml.in:276 msgid "This key overrides the key in org.gnome.mutter when running GNOME Shell." msgstr "Ин калид ҳангоми иҷроиши GNOME Shell калиди дар org.gnome.mutter ҷойгирбударо бекор мекунад." #: data/org.gnome.shell.gschema.xml.in:251 msgid "Enable edge tiling when dropping windows on screen edges" msgstr "Фаъол кардани лавҳабандии канорӣ ҳангоми гузоштани равзанаҳо ба канорҳои экран" #: data/org.gnome.shell.gschema.xml.in:259 msgid "Workspaces are managed dynamically" msgstr "Фазоҳои корӣ ба таври серамалӣ идора мешаванд" #: data/org.gnome.shell.gschema.xml.in:267 msgid "Workspaces only on primary monitor" msgstr "Танҳо фазоҳои корӣ дар монитори асосӣ" #: data/org.gnome.shell.gschema.xml.in:275 msgid "Delay focus changes in mouse mode until the pointer stops moving" msgstr "То вақте ки курсор намеистад тағйироти фокусро дар ҳолати истифодаи муш ба таъхир гузоред" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "Воридшавии шабакавӣ" #. Translators: Do NOT translate or transliterate this text (this is an icon file name)! #: data/org.gnome.Shell.PortalHelper.desktop.in.in:9 msgid "network-workgroup" msgstr "network-workgroup" #: js/extensionPrefs/main.js:116 msgid "Something’s gone wrong" msgstr "Чизе нодуруст ба миён омад" #: js/extensionPrefs/main.js:123 msgid "We’re very sorry, but there’s been a problem: the settings for this extension can’t be displayed. We recommend that you report the issue to the extension authors." msgstr "Мутаассифона, хатое ба вуҷуд омад: танзимот барои ин васеъшавӣ нишон дода намешавад. Тавсия дода мешавад, ки шумо дар бораи хато ба муаллифони васеъшавӣ гузориш диҳед." #: js/extensionPrefs/main.js:130 #| msgid "Show Details" msgid "Technical Details" msgstr "Намоиш додани тафсилот" #: js/extensionPrefs/main.js:165 #| msgid "Show Errors" msgid "Copy Error" msgstr "Намоиш додани хатоҳо" #: js/extensionPrefs/main.js:185 msgid "Homepage" msgstr "Саҳифаи асосӣ" #: js/extensionPrefs/main.js:186 #| msgid "UUIDs of extensions to enable" msgid "Visit extension homepage" msgstr "Рамзҳои UUID барои пасвандҳои фаъолшаванда" #: js/extensionPrefs/main.js:449 #| msgid "No extensions installed" msgid "No Extensions Installed" msgstr "Ягон васеъшавӣ насб нашудааст" #: js/extensionPrefs/main.js:459 msgid "Extensions can be installed through Software or extensions.gnome.org." msgstr "Васеъшавиҳо ба воситаи низоми нармафзор ё extensions.gnome.org ҷорӣ карда мешаванд." #: js/extensionPrefs/main.js:474 msgid "Browse in Software" msgstr "Намоиш дар низоми нармафзор" #: js/gdm/authPrompt.js:140 js/ui/audioDeviceSelection.js:55 #: js/ui/components/networkAgent.js:117 js/ui/components/polkitAgent.js:136 #: js/ui/endSessionDialog.js:430 js/ui/extensionDownloader.js:188 #: js/ui/shellMountOperation.js:325 js/ui/status/network.js:888 msgid "Cancel" msgstr "Бекор кардан" #: js/gdm/authPrompt.js:159 js/gdm/authPrompt.js:202 js/gdm/authPrompt.js:434 msgid "Next" msgstr "Навбатӣ" #: js/gdm/authPrompt.js:198 js/ui/shellMountOperation.js:329 #: js/ui/unlockDialog.js:41 msgid "Unlock" msgstr "Кушодан" #: js/gdm/authPrompt.js:200 msgctxt "button" msgid "Sign In" msgstr "Ворид шудан" #: js/gdm/loginDialog.js:302 msgid "Choose Session" msgstr "Интихоби ҷаласа" #. translators: this message is shown below the user list on the #. login screen. It can be activated to reveal an entry for #. manually entering the username. #: js/gdm/loginDialog.js:446 msgid "Not listed?" msgstr "Корбар дар ин рӯйхат вуҷуд надорад?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:884 #, javascript-format msgid "(e.g., user or %s)" msgstr "(масалан, корбар ё %s)" #. TTLS and PEAP are actually much more complicated, but this complication #. is not visible here since we only care about phase2 authentication #. (and don't even care of which one) #: js/gdm/loginDialog.js:889 js/ui/components/networkAgent.js:243 #: js/ui/components/networkAgent.js:263 js/ui/components/networkAgent.js:281 msgid "Username: " msgstr "Номи корбар: " #: js/gdm/loginDialog.js:1227 msgid "Login Window" msgstr "Равзанаи воридшавӣ" #: js/gdm/util.js:337 msgid "Authentication error" msgstr "Хатои санҷиши ҳаққоният" #. We don't show fingerprint messages directly since it's #. not the main auth service. Instead we use the messages #. as a cue to display our own message. #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger instead #: js/gdm/util.js:477 msgid "(or swipe finger)" msgstr "(ё бо ангут ламс кунед)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:88 #| msgid "Power Off" msgctxt "search-result" msgid "Power Off" msgstr "Хомӯш кардани компютер" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:91 msgid "power off;shutdown;reboot;restart" msgstr "" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:95 msgctxt "search-result" msgid "Lock Screen" msgstr "Қулф кардани экран" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:98 msgid "lock screen" msgstr "" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:102 #| msgid "Log Out" msgctxt "search-result" msgid "Log Out" msgstr "Баромад аз мизи корӣ" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:105 msgid "logout;sign off" msgstr "" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:109 #| msgid "Suspend" msgctxt "search-result" msgid "Suspend" msgstr "Таваққуф кардани низом" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:112 #| msgid "Suspend" msgid "suspend;sleep" msgstr "таваққуф;хоб" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:116 #| msgid "Switch User" msgctxt "search-result" msgid "Switch User" msgstr "Иваз кардани корбар" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:119 #| msgid "Switch User" msgid "switch user" msgstr "ивази корбар" #. Translators: The name of the lock orientation action in search #: js/misc/systemActions.js:123 #| msgid "Orientation Lock" msgctxt "search-result" msgid "Lock Orientation" msgstr "Қулфи самти экран" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:126 msgid "lock orientation;screen;rotation" msgstr "" #: js/misc/util.js:117 msgid "Command not found" msgstr "Фармон ёфт нашудааст" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:150 msgid "Could not parse command:" msgstr "Фармон иҷро нашудааст:" #: js/misc/util.js:158 #, javascript-format msgid "Execution of “%s” failed:" msgstr "Иҷрокунии “%s” қатъ шудааст:" #: js/misc/util.js:175 msgid "Just now" msgstr "Ҳоли ҳозир" #: js/misc/util.js:177 #, javascript-format #| msgid "%d minute remaining" #| msgid_plural "%d minutes remaining" msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d дақиқа пеш" msgstr[1] "%d дақиқа пеш" #: js/misc/util.js:180 #, javascript-format #| msgid "%d hour remaining" #| msgid_plural "%d hours remaining" msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d соат пеш" msgstr[1] "%d соат пеш" #: js/misc/util.js:183 #| msgid "Yesterday, %H∶%M" msgid "Yesterday" msgstr "Дирӯз" #: js/misc/util.js:185 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d рӯз пеш" msgstr[1] "%d рӯз пеш" #: js/misc/util.js:188 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d ҳафта пеш" msgstr[1] "%d ҳафта пеш" #: js/misc/util.js:191 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%d моҳ пеш" msgstr[1] "%d моҳ пеш" #: js/misc/util.js:193 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "%d сол пеш" msgstr[1] "%d сол пеш" #. Translators: Time in 24h format #: js/misc/util.js:223 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/util.js:229 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "Дирӯз, %H∶%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/util.js:235 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/util.js:241 #, no-c-format #| msgid "%B %d, %H∶%M" msgid "%B %-d, %H∶%M" msgstr "%B %d, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/util.js:247 #, no-c-format #| msgid "%B %d %Y, %H∶%M" msgid "%B %-d %Y, %H∶%M" msgstr "%B %d %Y, %H∶%M" #. Translators: Time in 12h format #: js/misc/util.js:252 msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/util.js:258 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "Дирӯз, %l∶%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/util.js:264 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/util.js:270 #, no-c-format #| msgid "%B %d, %l∶%M %p" msgid "%B %-d, %l∶%M %p" msgstr "%B %d, %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/util.js:276 #, no-c-format #| msgid "%B %d %Y, %l∶%M %p" msgid "%B %-d %Y, %l∶%M %p" msgstr "%B %d %Y, %l∶%M %p" #. TRANSLATORS: this is the title of the wifi captive portal login window #: js/portalHelper/main.js:40 #| msgid "Hotspot Active" msgid "Hotspot Login" msgstr "Воридшавӣ ба нуқтаи пайваст" #: js/portalHelper/main.js:86 msgid "Your connection to this hotspot login is not secure. Passwords or other information you enter on this page can be viewed by people nearby." msgstr "Пайвасти воридшавии шумо ба нуқтаи пайвасти ҷорӣ бехатар намебошад. Ниҳонвожаҳо ё маълумоти дигаре, ки дар ин саҳифа ворид карда мешавад, метавонанд бо одамони дар гидру атроф ошкор карда шаванд." #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:37 js/ui/status/location.js:360 msgid "Deny Access" msgstr "Манъ кардани дастрасӣ" #: js/ui/accessDialog.js:38 js/ui/status/location.js:363 #| msgid "Always grant access" msgid "Grant Access" msgstr "Иҷозат додани дастрасӣ" #: js/ui/appDisplay.js:660 msgid "Frequently used applications will appear here" msgstr "Барномаҳои бештар истифодашуда ин ҷо намоиш дода мешаванд" #: js/ui/appDisplay.js:775 msgid "Frequent" msgstr "Роиҷ" #: js/ui/appDisplay.js:782 msgid "All" msgstr "Ҳама" #: js/ui/appDisplay.js:1737 js/ui/panel.js:83 msgid "New Window" msgstr "Равзанаи нав" #: js/ui/appDisplay.js:1751 msgid "Launch using Dedicated Graphics Card" msgstr "" #: js/ui/appDisplay.js:1778 js/ui/dash.js:239 msgid "Remove from Favorites" msgstr "Тоза кардан аз Баргузидаҳо" #: js/ui/appDisplay.js:1784 msgid "Add to Favorites" msgstr "Илова кардан ба Баргузидаҳо" #: js/ui/appDisplay.js:1794 js/ui/panel.js:94 msgid "Show Details" msgstr "Намоиш додани тафсилот" #: js/ui/appFavorites.js:141 #, javascript-format msgid "%s has been added to your favorites." msgstr "%s ба баргузидаҳои шумо илова шудааст." #: js/ui/appFavorites.js:175 #, javascript-format msgid "%s has been removed from your favorites." msgstr "%s аз баргузидаҳои шумо тоза шудааст." #: js/ui/audioDeviceSelection.js:42 #| msgid "Send Files to Device…" msgid "Select Audio Device" msgstr "Интихоби дастгоҳи аудиоӣ" #: js/ui/audioDeviceSelection.js:53 msgid "Sound Settings" msgstr "Танзимоти садо" #: js/ui/audioDeviceSelection.js:62 msgid "Headphones" msgstr "Гӯшмонакҳо" #: js/ui/audioDeviceSelection.js:64 msgid "Headset" msgstr "Гӯшмонак бо микрофон" #: js/ui/audioDeviceSelection.js:66 js/ui/status/volume.js:247 msgid "Microphone" msgstr "Микрофон" #: js/ui/backgroundMenu.js:13 msgid "Change Background…" msgstr "Тағйир додани пазсамина…" #: js/ui/backgroundMenu.js:15 js/ui/status/nightLight.js:43 msgid "Display Settings" msgstr "Танзимоти дисплей" #: js/ui/backgroundMenu.js:16 msgid "Settings" msgstr "Танзимот" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:40 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:69 msgctxt "grid sunday" msgid "S" msgstr "Ш" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:71 msgctxt "grid monday" msgid "M" msgstr "Д" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:73 msgctxt "grid tuesday" msgid "T" msgstr "С" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:75 msgctxt "grid wednesday" msgid "W" msgstr "Ч" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:77 msgctxt "grid thursday" msgid "T" msgstr "С" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:79 msgctxt "grid friday" msgid "F" msgstr "Ҷ" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:81 msgctxt "grid saturday" msgid "S" msgstr "Ш" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:332 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:342 msgid "%OB %Y" msgstr "%OB %Y" #: js/ui/calendar.js:399 msgid "Previous month" msgstr "Моҳи қаблӣ" #: js/ui/calendar.js:410 msgid "Next month" msgstr "Моҳи навбатӣ" #: js/ui/calendar.js:564 #, no-javascript-format #| msgctxt "percent of battery remaining" #| msgid "%d%%" msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:619 msgid "Week %V" msgstr "Ҳафтаи %V" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/calendar.js:687 msgctxt "event list time" msgid "All Day" msgstr "Тамоми рӯз" #: js/ui/calendar.js:819 #| msgctxt "calendar heading" #| msgid "%A, %B %d" msgctxt "calendar heading" msgid "%A, %B %-d" msgstr "%A, %B %d" #: js/ui/calendar.js:823 #| msgctxt "calendar heading" #| msgid "%A, %B %d, %Y" msgctxt "calendar heading" msgid "%A, %B %-d, %Y" msgstr "%A, %B %d, %Y" #: js/ui/calendar.js:1046 msgid "No Notifications" msgstr "Ягон огоҳӣ нест" #: js/ui/calendar.js:1049 msgid "No Events" msgstr "Ягон рӯйдод нест" #: js/ui/calendar.js:1075 msgid "Clear" msgstr "Пок кардан" #. Translators: %s is an application name #: js/ui/closeDialog.js:42 #, javascript-format #| msgid "“%s” is ready" msgid "“%s” is not responding." msgstr "“%s” ҷавоб намедиҳад." #: js/ui/closeDialog.js:43 msgid "You may choose to wait a short while for it to continue or force the application to quit entirely." msgstr "" #: js/ui/closeDialog.js:59 msgid "Force Quit" msgstr "Маҷбуран пӯшида шавад" #: js/ui/closeDialog.js:62 msgid "Wait" msgstr "Интизор шавед" #: js/ui/components/automountManager.js:86 msgid "External drive connected" msgstr "Диски берунӣ васл шудааст" #: js/ui/components/automountManager.js:98 msgid "External drive disconnected" msgstr "Диски берунӣ ҷудо шудааст" #: js/ui/components/autorunManager.js:334 #, javascript-format msgid "Open with %s" msgstr "Кушодан бо %s" #: js/ui/components/keyring.js:77 js/ui/components/polkitAgent.js:255 msgid "Password:" msgstr "Ниҳонвожа:" #: js/ui/components/keyring.js:108 msgid "Type again:" msgstr "Аз нав ворид кунед:" #: js/ui/components/networkAgent.js:102 msgid "Alternatively you can connect by pushing the “WPS” button on your router." msgstr "" #: js/ui/components/networkAgent.js:112 js/ui/status/network.js:219 #: js/ui/status/network.js:309 js/ui/status/network.js:891 msgid "Connect" msgstr "Пайваст шудан" #. Cisco LEAP #: js/ui/components/networkAgent.js:211 js/ui/components/networkAgent.js:223 #: js/ui/components/networkAgent.js:246 js/ui/components/networkAgent.js:265 #: js/ui/components/networkAgent.js:285 js/ui/components/networkAgent.js:295 msgid "Password: " msgstr "Ниҳонвожа: " #. static WEP #: js/ui/components/networkAgent.js:216 msgid "Key: " msgstr "Калид: " #: js/ui/components/networkAgent.js:249 js/ui/components/networkAgent.js:271 msgid "Private key password: " msgstr "Ниҳонвожаи калиди шахсӣ: " #: js/ui/components/networkAgent.js:269 msgid "Identity: " msgstr "Шахсият: " #: js/ui/components/networkAgent.js:283 msgid "Service: " msgstr "Хидмат: " #: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:685 msgid "Authentication required by wireless network" msgstr "Шабакаи бесим санҷиши ҳаққониятро талаб мекунад" #: js/ui/components/networkAgent.js:313 js/ui/components/networkAgent.js:686 #, javascript-format msgid "Passwords or encryption keys are required to access the wireless network “%s”." msgstr "Барои пайдо кардани дастрасӣ ба шабакаи бесими “%s” паролҳо ё калидҳои рамзгузорӣ лозиманд." #: js/ui/components/networkAgent.js:317 js/ui/components/networkAgent.js:689 msgid "Wired 802.1X authentication" msgstr "Санҷиши ҳаққонияти 802.1X-и симдор" #: js/ui/components/networkAgent.js:319 msgid "Network name: " msgstr "Номи шабака: " #: js/ui/components/networkAgent.js:324 js/ui/components/networkAgent.js:693 msgid "DSL authentication" msgstr "Санҷиши ҳаққонияти DSL" #: js/ui/components/networkAgent.js:331 js/ui/components/networkAgent.js:699 msgid "PIN code required" msgstr "Рамзи PIN ҳатмист" #: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:700 msgid "PIN code is needed for the mobile broadband device" msgstr "Барои дастгоҳи паҳннавори мобилӣ рамзи PIN лозим аст" #: js/ui/components/networkAgent.js:333 msgid "PIN: " msgstr "PIN: " #: js/ui/components/networkAgent.js:340 js/ui/components/networkAgent.js:706 msgid "Mobile broadband network password" msgstr "Пароли шабакаи паҳннавори мобилӣ" #: js/ui/components/networkAgent.js:341 js/ui/components/networkAgent.js:690 #: js/ui/components/networkAgent.js:694 js/ui/components/networkAgent.js:707 #, javascript-format msgid "A password is required to connect to “%s”." msgstr "Барои пайваст шудан ба “%s” парол лозим аст." #: js/ui/components/networkAgent.js:674 js/ui/status/network.js:1665 msgid "Network Manager" msgstr "Мудири шабака" #: js/ui/components/polkitAgent.js:34 msgid "Authentication Required" msgstr "Санҷиши ҳаққоният лозим аст" #: js/ui/components/polkitAgent.js:62 msgid "Administrator" msgstr "Маъмур" #: js/ui/components/polkitAgent.js:139 msgid "Authenticate" msgstr "Санҷиши ҳаққоният" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:241 js/ui/shellMountOperation.js:309 #| msgid "Sorry, that didn't work. Please try again." msgid "Sorry, that didn’t work. Please try again." msgstr "Мутаассифона, ин амал иҷро нашуд. Лутфан, амалро такрор кунед." #. Translators: this is the other person changing their old IM name to their new #. IM name. #: js/ui/components/telepathyClient.js:778 #, javascript-format msgid "%s is now known as %s" msgstr "Акнун %s ба номи %s дониста мешавад" #: js/ui/ctrlAltTab.js:21 js/ui/viewSelector.js:169 msgid "Windows" msgstr "Равзанаҳо" #: js/ui/dash.js:200 js/ui/dash.js:241 msgid "Show Applications" msgstr "Намоиш додани барномаҳо" #. Translators: this is the name of the dock/favorites area on #. the left of the overview #: js/ui/dash.js:390 msgid "Dash" msgstr "Рах" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:62 #| msgid "%B %e %Y" msgid "%B %-d %Y" msgstr "%B %e %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:69 msgid "%A %B %e %Y" msgstr "%A %B %e %Y" #: js/ui/dateMenu.js:131 msgid "Add world clocks…" msgstr "Илова кардани соатҳои ҷаҳон…" #: js/ui/dateMenu.js:132 msgid "World Clocks" msgstr "Соати ҷаҳон" #: js/ui/dateMenu.js:222 msgid "Weather" msgstr "Обу ҳаво" #: js/ui/dateMenu.js:305 #| msgid "Select a network" msgid "Select a location…" msgstr "Интихоби ҷойгиршавӣ…" #: js/ui/dateMenu.js:313 #| msgid "Searching…" msgid "Loading…" msgstr "Бор шуда истодааст…" #: js/ui/dateMenu.js:323 msgid "Go online for weather information" msgstr "Барои донистани вазъи обу ҳавоӣ ба онлайн равед" #: js/ui/dateMenu.js:325 #| msgid "Encryption is not available" msgid "Weather information is currently unavailable" msgstr "Рамзгузорӣ дастрас нест" #: js/ui/endSessionDialog.js:42 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "Баромадан аз %s" #: js/ui/endSessionDialog.js:43 msgctxt "title" msgid "Log Out" msgstr "Баромад аз мизи корӣ" #: js/ui/endSessionDialog.js:45 #, javascript-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "%s аз система баъд аз %d сония ба таври худкор мебарояд." msgstr[1] "%s аз система баъд аз %d сония ба таври худкор мебарояд." #: js/ui/endSessionDialog.js:50 #, javascript-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "Шумо аз система баъд аз %d сония ба таври худкор мебароед." msgstr[1] "Шумо аз система баъд аз %d сония ба таври худкор мебароед." #: js/ui/endSessionDialog.js:56 msgctxt "button" msgid "Log Out" msgstr "Баромад аз мизи корӣ" #: js/ui/endSessionDialog.js:62 msgctxt "title" msgid "Power Off" msgstr "Хомӯш кардани компютер" #: js/ui/endSessionDialog.js:63 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Насб кардани навсозиҳо ва хомӯш кардани компютер" #: js/ui/endSessionDialog.js:65 #, javascript-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "Система ба таври худкор баъд аз %d сония корро анҷом медиҳад." msgstr[1] "Система ба таври худкор баъд аз %d сония корро анҷом медиҳад." #: js/ui/endSessionDialog.js:69 msgctxt "checkbox" msgid "Install pending software updates" msgstr "Насб кардани навсозиҳои нармафзори мунтазир" #: js/ui/endSessionDialog.js:72 js/ui/endSessionDialog.js:89 msgctxt "button" msgid "Restart" msgstr "Аз нав оғоз кардани компютер" #: js/ui/endSessionDialog.js:74 msgctxt "button" msgid "Power Off" msgstr "Хомӯш кардани компютер" #: js/ui/endSessionDialog.js:81 msgctxt "title" msgid "Restart" msgstr "Аз нав оғоз кардани компютер" #: js/ui/endSessionDialog.js:83 #, javascript-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "Система ба таври худкор баъд аз %d сония бозоғозӣ мешавад." msgstr[1] "Система ба таври худкор баъд аз %d сония бозоғозӣ мешавад." #: js/ui/endSessionDialog.js:97 msgctxt "title" msgid "Restart & Install Updates" msgstr "Бозоғозӣ кардан ва насб кардани навсозиҳо" #: js/ui/endSessionDialog.js:99 #, javascript-format msgid "The system will automatically restart and install updates in %d second." msgid_plural "The system will automatically restart and install updates in %d seconds." msgstr[0] "Низом баъд аз %d сония ба таври худкор бозоғозӣ мешавад ва навсозиҳоро насб мекунад." msgstr[1] "Низом баъд аз %d сония ба таври худкор бозоғозӣ мешавад ва навсозиҳоро насб мекунад." #: js/ui/endSessionDialog.js:105 js/ui/endSessionDialog.js:125 msgctxt "button" msgid "Restart & Install" msgstr "Бозоғозӣ ва насб кардан" #: js/ui/endSessionDialog.js:106 msgctxt "button" msgid "Install & Power Off" msgstr "Насб кардан ва хомӯш кардани компютер" #: js/ui/endSessionDialog.js:107 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Хомӯш кардани компютер баъд аз насб кардани навсозиҳо" #: js/ui/endSessionDialog.js:115 #| msgctxt "title" #| msgid "Restart & Install Updates" msgctxt "title" msgid "Restart & Install Upgrade" msgstr "Бозоғозӣ кардан ва насб кардани навсозиҳо" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:120 #, javascript-format msgid "%s %s will be installed after restart. Upgrade installation can take a long time: ensure that you have backed up and that the computer is plugged in." msgstr "" #: js/ui/endSessionDialog.js:309 msgid "Running on battery power: please plug in before installing updates." msgstr "Аз батарея кор мекунад: лутфан, еш аз насбкунии навсозиҳо компютерро ба манбаъи барқ васл кунед." #: js/ui/endSessionDialog.js:326 msgid "Some applications are busy or have unsaved work." msgstr "Баъзе барномаҳо банданд ё дорои корҳои захиранашуда мебошанд." #: js/ui/endSessionDialog.js:333 msgid "Other users are logged in." msgstr "Корбарони дигар ворид шудаанд." #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:614 #, javascript-format msgid "%s (remote)" msgstr "%s (дурдаст)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:617 #, javascript-format msgid "%s (console)" msgstr "%s (консол)" #: js/ui/extensionDownloader.js:192 msgid "Install" msgstr "Насб кардан" #: js/ui/extensionDownloader.js:197 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "“%s”-ро аз extensions.gnome.org боргирӣ ва насб мекунед?" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:50 #, javascript-format msgid "%s wants to inhibit shortcuts" msgstr "" #: js/ui/inhibitShortcutsDialog.js:51 msgid "Application wants to inhibit shortcuts" msgstr "" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:60 #, javascript-format msgid "You can restore shortcuts by pressing %s." msgstr "" #: js/ui/inhibitShortcutsDialog.js:65 msgid "Deny" msgstr "Манъ кардан" #: js/ui/inhibitShortcutsDialog.js:71 msgid "Allow" msgstr "Иҷозат додан" #: js/ui/kbdA11yDialog.js:31 #| msgid "Slow Keys" msgid "Slow Keys Turned On" msgstr "Тугмаҳои суст" #: js/ui/kbdA11yDialog.js:32 #| msgid "Slow Keys" msgid "Slow Keys Turned Off" msgstr "Тугмаҳои суст" #: js/ui/kbdA11yDialog.js:33 msgid "You just held down the Shift key for 8 seconds. This is the shortcut for the Slow Keys feature, which affects the way your keyboard works." msgstr "" #: js/ui/kbdA11yDialog.js:40 #| msgid "Sticky Keys" msgid "Sticky Keys Turned On" msgstr "Тугмаҳои часпак" #: js/ui/kbdA11yDialog.js:41 #| msgid "Sticky Keys" msgid "Sticky Keys Turned Off" msgstr "Тугмаҳои часпак" #: js/ui/kbdA11yDialog.js:43 msgid "You just pressed the Shift key 5 times in a row. This is the shortcut for the Sticky Keys feature, which affects the way your keyboard works." msgstr "" #: js/ui/kbdA11yDialog.js:45 msgid "You just pressed two keys at once, or pressed the Shift key 5 times in a row. This turns off the Sticky Keys feature, which affects the way your keyboard works." msgstr "" #: js/ui/kbdA11yDialog.js:57 msgid "Leave On" msgstr "Ҳамеша фаъол" #: js/ui/kbdA11yDialog.js:57 js/ui/status/bluetooth.js:133 #: js/ui/status/network.js:1264 msgid "Turn On" msgstr "Фаъол кардан" #: js/ui/kbdA11yDialog.js:65 js/ui/status/bluetooth.js:133 #: js/ui/status/network.js:128 js/ui/status/network.js:310 #: js/ui/status/network.js:1264 js/ui/status/network.js:1376 #: js/ui/status/nightLight.js:39 js/ui/status/rfkill.js:79 #: js/ui/status/rfkill.js:106 msgid "Turn Off" msgstr "Ғайрифаъол кардан" #: js/ui/kbdA11yDialog.js:65 msgid "Leave Off" msgstr "Ҳамеша ғайрифаъол" #: js/ui/keyboard.js:203 msgid "Region & Language Settings" msgstr "Танзимоти забон ва минтақа" #: js/ui/lookingGlass.js:615 msgid "No extensions installed" msgstr "Ягон пасванд насб нашудааст" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:669 #, javascript-format msgid "%s has not emitted any errors." msgstr "%s ягон хато надорад." #: js/ui/lookingGlass.js:675 msgid "Hide Errors" msgstr "Пинҳон кардани хатоҳо" #: js/ui/lookingGlass.js:679 js/ui/lookingGlass.js:739 msgid "Show Errors" msgstr "Намоиш додани хатоҳо" #: js/ui/lookingGlass.js:688 msgid "Enabled" msgstr "Фаъол" #. translators: #. * The device has been disabled #: js/ui/lookingGlass.js:691 subprojects/gvc/gvc-mixer-control.c:1864 msgid "Disabled" msgstr "Ғайрифаъол" #: js/ui/lookingGlass.js:693 msgid "Error" msgstr "Хато" #: js/ui/lookingGlass.js:695 msgid "Out of date" msgstr "Аз мӯҳлат гузашта" #: js/ui/lookingGlass.js:697 msgid "Downloading" msgstr "Боргирӣ рафта истодааст" #: js/ui/lookingGlass.js:721 msgid "View Source" msgstr "Намоиш додани манбаъ" #: js/ui/lookingGlass.js:730 msgid "Web Page" msgstr "Саҳифаи веб" #: js/ui/messageTray.js:1474 msgid "System Information" msgstr "Маълумоти система" #: js/ui/mpris.js:177 #| msgid "Unknown reason" msgid "Unknown artist" msgstr "Ҳофизи номаълум" #: js/ui/mpris.js:178 #| msgctxt "program" #| msgid "Unknown" msgid "Unknown title" msgstr "Унвони номаълум" #: js/ui/osdWindow.js:22 js/ui/status/volume.js:199 msgid "Volume" msgstr "Баландии садо" #: js/ui/overview.js:73 msgid "Undo" msgstr "Ботил сохтан" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:100 msgid "Overview" msgstr "Ҷамъбаст" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overview.js:226 msgid "Type to search…" msgstr "Барои ҷустуҷӯ чизеро чоп намоед…" #: js/ui/padOsd.js:92 msgid "New shortcut…" msgstr "Миёнбури нав…" #: js/ui/padOsd.js:141 #| msgid "Applications" msgid "Application defined" msgstr "Барномаи муайяншуда" #: js/ui/padOsd.js:142 msgid "Show on-screen help" msgstr "Намоиш додани кумаки экранӣ" #: js/ui/padOsd.js:143 #| msgid "Switch User" msgid "Switch monitor" msgstr "Иваз кардани монитор" #: js/ui/padOsd.js:144 msgid "Assign keystroke" msgstr "" #: js/ui/padOsd.js:209 msgid "Done" msgstr "Тайёр" #: js/ui/padOsd.js:721 msgid "Edit…" msgstr "Таҳрир кардан…" #: js/ui/padOsd.js:763 js/ui/padOsd.js:868 msgid "None" msgstr "Ҳеҷ" #: js/ui/padOsd.js:822 msgid "Press a button to configure" msgstr "Барои идома тугмаеро пахш намоед" #: js/ui/padOsd.js:823 msgid "Press Esc to exit" msgstr "Барои баромад тугмаи Esc-ро пахш намоед" #: js/ui/padOsd.js:826 msgid "Press any key to exit" msgstr "Барои баромад тугмаи дилхоҳро пахш намоед" #: js/ui/panel.js:108 msgid "Quit" msgstr "Баромад" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:466 msgid "Activities" msgstr "Фаъолиятҳо" #: js/ui/panel.js:741 #| msgid "System" msgctxt "System menu in the top bar" msgid "System" msgstr "Низом" #: js/ui/panel.js:861 msgid "Top Bar" msgstr "Лавҳаии болоӣ" #. Translators: this MUST be either "toggle-switch-us" #. (for toggle switches containing the English words #. "ON" and "OFF") or "toggle-switch-intl" (for toggle #. switches containing "◯" and "|"). Other values will #. simply result in invisible toggle switches. #: js/ui/popupMenu.js:285 msgid "toggle-switch-us" msgstr "toggle-switch-us" #: js/ui/runDialog.js:64 msgid "Enter a Command" msgstr "Фармонеро ворид кунед" #: js/ui/runDialog.js:104 js/ui/windowMenu.js:166 msgid "Close" msgstr "Пӯшидан" #: js/ui/runDialog.js:266 #| msgid "Encryption is not available" msgid "Restart is not available on Wayland" msgstr "Рамзгузорӣ дастрас нест" #: js/ui/runDialog.js:271 msgid "Restarting…" msgstr "Дар ҳоли бозоғозӣ…" #. Translators: This is a time format for a date in #. long format #: js/ui/screenShield.js:77 msgid "%A, %B %d" msgstr "%A, %B %d" #: js/ui/screenShield.js:133 #, javascript-format msgid "%d new message" msgid_plural "%d new messages" msgstr[0] "%d паёми нав" msgstr[1] "%d паёми нав" #: js/ui/screenShield.js:135 #, javascript-format msgid "%d new notification" msgid_plural "%d new notifications" msgstr[0] "%d огоҳии нав" msgstr[1] "%d огоҳии нав" #: js/ui/screenShield.js:449 js/ui/status/system.js:270 msgid "Lock" msgstr "Қулф кардан" #: js/ui/screenShield.js:713 msgid "GNOME needs to lock the screen" msgstr "GNOME бояд экранро қулф кунад" #. We could not become modal, so we can't activate the #. screenshield. The user is probably very upset at this #. point, but any application using global grabs is broken #. Just tell him to stop using this app #. #. XXX: another option is to kick the user into the gdm login #. screen, where we're not affected by grabs #: js/ui/screenShield.js:834 js/ui/screenShield.js:1307 msgid "Unable to lock" msgstr "Қулф карда намешавад" #: js/ui/screenShield.js:835 js/ui/screenShield.js:1308 msgid "Lock was blocked by an application" msgstr "Қулф аз тарави барнома баста шудааст" #: js/ui/search.js:635 msgid "Searching…" msgstr "Дар ҳоли ҷустуҷӯ…" #: js/ui/search.js:637 msgid "No results." msgstr "Ягон натиҷа нест." #: js/ui/search.js:761 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "%d дигар" msgstr[1] "%d дигар" #: js/ui/shellEntry.js:19 msgid "Copy" msgstr "Нусха бардоштан" #: js/ui/shellEntry.js:24 msgid "Paste" msgstr "Гузоштан" #: js/ui/shellEntry.js:90 msgid "Show Text" msgstr "Намоиш додани матн" #: js/ui/shellEntry.js:92 msgid "Hide Text" msgstr "Пинҳон кардани матн" #: js/ui/shellMountOperation.js:296 msgid "Password" msgstr "Парол" #: js/ui/shellMountOperation.js:317 msgid "Remember Password" msgstr "Ба ёд гирифтани парол" #: js/ui/status/accessibility.js:35 msgid "Accessibility" msgstr "Қобилияти дастрасӣ" #: js/ui/status/accessibility.js:50 msgid "Zoom" msgstr "Танзими андоза" #: js/ui/status/accessibility.js:57 msgid "Screen Reader" msgstr "Хонандаи экранӣ" #: js/ui/status/accessibility.js:61 msgid "Screen Keyboard" msgstr "Клавиатураи экранӣ" #: js/ui/status/accessibility.js:65 msgid "Visual Alerts" msgstr "Огоҳиҳои намоён" #: js/ui/status/accessibility.js:68 msgid "Sticky Keys" msgstr "Тугмаҳои часпак" #: js/ui/status/accessibility.js:71 msgid "Slow Keys" msgstr "Тугмаҳои суст" #: js/ui/status/accessibility.js:74 msgid "Bounce Keys" msgstr "Тугмаҳои ҷастухез" #: js/ui/status/accessibility.js:77 msgid "Mouse Keys" msgstr "Тугмаҳои муш" #: js/ui/status/accessibility.js:151 msgid "High Contrast" msgstr "Контрасти баланд" #: js/ui/status/accessibility.js:182 msgid "Large Text" msgstr "Матни бузург" #: js/ui/status/bluetooth.js:38 msgid "Bluetooth" msgstr "Bluetooth" #: js/ui/status/bluetooth.js:47 js/ui/status/network.js:585 msgid "Bluetooth Settings" msgstr "Танзимоти Bluetooth" #. Translators: this is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:127 #, javascript-format #| msgid "Connected" msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d пайваст шуд" msgstr[1] "%d пайваст шуд" #: js/ui/status/bluetooth.js:129 msgid "Off" msgstr "Хомӯш" #: js/ui/status/bluetooth.js:131 msgid "On" msgstr "Фаъол" #: js/ui/status/brightness.js:36 msgid "Brightness" msgstr "Дурахшонӣ" #: js/ui/status/keyboard.js:812 msgid "Keyboard" msgstr "Клавиатура" #: js/ui/status/keyboard.js:834 msgid "Show Keyboard Layout" msgstr "Намоиш додани тарҳбандии клавиатура" #: js/ui/status/location.js:64 js/ui/status/location.js:172 #| msgid "Location" msgid "Location Enabled" msgstr "Ҷойгиршавӣ" #: js/ui/status/location.js:65 js/ui/status/location.js:173 msgid "Disable" msgstr "Ғайрифаъол кардан" #: js/ui/status/location.js:66 msgid "Privacy Settings" msgstr "Танзимоти махфият" #: js/ui/status/location.js:171 #| msgid "Location" msgid "Location In Use" msgstr "Ҷойгиршавӣ" #: js/ui/status/location.js:175 #| msgid "Connection failed" msgid "Location Disabled" msgstr "Пайваст қатъ шудааст" #: js/ui/status/location.js:176 msgid "Enable" msgstr "Фаъол кардан" #. Translators: %s is an application name #: js/ui/status/location.js:353 #, javascript-format msgid "Give %s access to your location?" msgstr "" #: js/ui/status/location.js:354 msgid "Location access can be changed at any time from the privacy settings." msgstr "" #: js/ui/status/network.js:66 msgid "" msgstr "" #. Translators: %s is a network identifier #: js/ui/status/network.js:416 js/ui/status/network.js:1293 #, javascript-format msgid "%s Off" msgstr "" #. Translators: %s is a network identifier #: js/ui/status/network.js:419 #, javascript-format #| msgid "Connected" msgid "%s Connected" msgstr "%s пайваст шуд" #. Translators: this is for network devices that are physically present but are not #. under NetworkManager's control (and thus cannot be used in the menu); #. %s is a network identifier #: js/ui/status/network.js:424 #, javascript-format #| msgid "Unmanaged" msgid "%s Unmanaged" msgstr "%s беназорат" #. Translators: %s is a network identifier #: js/ui/status/network.js:427 #, javascript-format #| msgid "Disconnecting" msgid "%s Disconnecting" msgstr "Пайвасти %s қатъ шуда истодааст" #. Translators: %s is a network identifier #: js/ui/status/network.js:434 js/ui/status/network.js:1285 #, javascript-format #| msgid "Connecting" msgid "%s Connecting" msgstr "%s пайваст шуда истодааст" #. Translators: this is for network connections that require some kind of key or password; %s is a network identifier #: js/ui/status/network.js:437 #, javascript-format #| msgid "Wired 802.1X authentication" msgid "%s Requires Authentication" msgstr "%s санҷиши ҳаққониятро талаб мекунад" #. Translators: this is for devices that require some kind of firmware or kernel #. module, which is missing; %s is a network identifier #: js/ui/status/network.js:445 #, javascript-format #| msgid "Firmware missing" msgid "Firmware Missing For %s" msgstr "Нармафзори дарунсохт барои %s вуҷуд надорад" #. Translators: this is for a network device that cannot be activated (for example it #. is disabled by rfkill, or it has no coverage; %s is a network identifier #: js/ui/status/network.js:449 #, javascript-format #| msgid "Unavailable" msgid "%s Unavailable" msgstr "%s дастнорас аст" #. Translators: %s is a network identifier #: js/ui/status/network.js:452 #, javascript-format #| msgid "Connection failed" msgid "%s Connection Failed" msgstr "Пайвасти %s қатъ шуд" #: js/ui/status/network.js:464 msgid "Wired Settings" msgstr "Танзимоти шабакаи симдор" #: js/ui/status/network.js:506 msgid "Mobile Broadband Settings" msgstr "Танзимоти паҳннавори мобилӣ" #. Translators: %s is a network identifier #: js/ui/status/network.js:553 js/ui/status/network.js:1290 #, javascript-format #| msgid "Hardware Disabled" msgid "%s Hardware Disabled" msgstr "Сахтафзори %s ғайрифаъол шуд" #. Translators: this is for a network device that cannot be activated #. because it's disabled by rfkill (airplane mode); %s is a network identifier #: js/ui/status/network.js:557 #, javascript-format #| msgid "Disabled" msgid "%s Disabled" msgstr "%s ғайрифаъол аст" #: js/ui/status/network.js:597 msgid "Connect to Internet" msgstr "Пайваст шудан ба Интернет" #: js/ui/status/network.js:786 msgid "Airplane Mode is On" msgstr "Ҳолати ҳавопаймо фаъол аст" #: js/ui/status/network.js:787 msgid "Wi-Fi is disabled when airplane mode is on." msgstr "Ҳангоми фаъол будани ҳолати ҳавопаймо Wi-Fi ғайрифаъол аст." #: js/ui/status/network.js:788 msgid "Turn Off Airplane Mode" msgstr "Ҳолати ҳавопаймо хомӯш аст" #: js/ui/status/network.js:797 msgid "Wi-Fi is Off" msgstr "Wi-Fi хомӯш аст" #: js/ui/status/network.js:798 msgid "Wi-Fi needs to be turned on in order to connect to a network." msgstr "Барои пайваст шудан ба шабака, Wi-Fi бояд фаъол карда шавад." #: js/ui/status/network.js:799 msgid "Turn On Wi-Fi" msgstr "Фаъол кардани Wi-Fi" #: js/ui/status/network.js:824 msgid "Wi-Fi Networks" msgstr "Шабакаҳои Wi-Fi" #: js/ui/status/network.js:826 msgid "Select a network" msgstr "Интихоб кардани шабака" #: js/ui/status/network.js:855 msgid "No Networks" msgstr "Ягон шабака нест" #: js/ui/status/network.js:876 js/ui/status/rfkill.js:104 msgid "Use hardware switch to turn off" msgstr "Истифодаи калиди сахтафзорӣ барои фаъолсозӣ ё хомӯшкунӣ" #: js/ui/status/network.js:1152 msgid "Select Network" msgstr "Интихоби шабака" #: js/ui/status/network.js:1158 msgid "Wi-Fi Settings" msgstr "Танзимоти Wi-Fi" #. Translators: %s is a network identifier #: js/ui/status/network.js:1281 #, javascript-format #| msgid "Hotspot Active" msgid "%s Hotspot Active" msgstr "Нуқтаи пайвасти %s ваъол аст" #. Translators: %s is a network identifier #: js/ui/status/network.js:1296 #, javascript-format #| msgid "Not Connected" msgid "%s Not Connected" msgstr "%s пайваст нашудааст" #: js/ui/status/network.js:1393 #| msgid "Connecting" msgid "connecting…" msgstr "пайваст шуда истодааст…" #. Translators: this is for network connections that require some kind of key or password #: js/ui/status/network.js:1396 msgid "authentication required" msgstr "санҷиши ҳаққоният лозим аст" #: js/ui/status/network.js:1398 msgid "connection failed" msgstr "пайваст қатъ шудааст" #: js/ui/status/network.js:1448 msgid "VPN Settings" msgstr "Танзимоти VPN" #: js/ui/status/network.js:1465 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1475 #| msgid "Power Off" msgid "VPN Off" msgstr "Хомӯш кардани VPN" #: js/ui/status/network.js:1536 js/ui/status/rfkill.js:82 msgid "Network Settings" msgstr "Танзимоти шабака" #: js/ui/status/network.js:1565 #, javascript-format #| msgid "Use as Internet connection" msgid "%s Wired Connection" msgid_plural "%s Wired Connections" msgstr[0] "%s пайвасти симдор" msgstr[1] "%s пайвасти симдор" #: js/ui/status/network.js:1569 #, javascript-format #| msgid "Connecting" msgid "%s Wi-Fi Connection" msgid_plural "%s Wi-Fi Connections" msgstr[0] "%s пайвасти Wi-Fi" msgstr[1] "%s пайвасти Wi-Fi" #: js/ui/status/network.js:1573 #, javascript-format #| msgid "Connecting" msgid "%s Modem Connection" msgid_plural "%s Modem Connections" msgstr[0] "%s пайвасти модем" msgstr[1] "%s пайвасти модем" #: js/ui/status/network.js:1702 msgid "Connection failed" msgstr "Пайваст қатъ шудааст" #: js/ui/status/network.js:1703 msgid "Activation of network connection failed" msgstr "Фаъолсозии пайвасти шабака қатъ шуд" #: js/ui/status/nightLight.js:60 #| msgid "Networking is disabled" msgid "Night Light Disabled" msgstr "Шабака ғайрифаъол аст" #: js/ui/status/nightLight.js:61 msgid "Night Light On" msgstr "" #: js/ui/status/nightLight.js:62 msgid "Resume" msgstr "" #: js/ui/status/nightLight.js:63 msgid "Disable Until Tomorrow" msgstr "" #: js/ui/status/power.js:45 msgid "Power Settings" msgstr "Танзимоти барқ" #: js/ui/status/power.js:61 msgid "Fully Charged" msgstr "Пуррагӣ заряд гирифтааст" #: js/ui/status/power.js:67 msgid "Not Charging" msgstr "" #. 0 is reported when UPower does not have enough data #. to estimate battery life #: js/ui/status/power.js:70 js/ui/status/power.js:76 msgid "Estimating…" msgstr "Ҳисоб шуда истодааст…" #. Translators: this is : Remaining () #: js/ui/status/power.js:84 #, javascript-format #| msgid "%d∶%02d Remaining (%d%%)" msgid "%d∶%02d Remaining (%d %%)" msgstr "%d∶%02d боқӣ мондааст (%d%%)" #. Translators: this is : Until Full () #: js/ui/status/power.js:89 #, javascript-format #| msgid "%d∶%02d Until Full (%d%%)" msgid "%d∶%02d Until Full (%d %%)" msgstr "%d∶%02d то пур шудан (%d%%)" #: js/ui/status/power.js:117 js/ui/status/power.js:119 #, javascript-format msgid "%d %%" msgstr "%d %%" #: js/ui/status/remoteAccess.js:42 msgid "Screen is Being Shared" msgstr "" #: js/ui/status/remoteAccess.js:44 #| msgid "Turn Off" msgid "Turn off" msgstr "Хомӯш кардан" #. The menu only appears when airplane mode is on, so just #. statically build it as if it was on, rather than dynamically #. changing the menu contents. #: js/ui/status/rfkill.js:77 #| msgid "Airplane Mode is On" msgid "Airplane Mode On" msgstr "Ҳолати ҳавопаймо фаъол аст" #: js/ui/status/system.js:203 msgid "Switch User" msgstr "Иваз кардани корбар" #: js/ui/status/system.js:215 msgid "Log Out" msgstr "Баромад аз мизи корӣ" #: js/ui/status/system.js:227 #| msgid "Sound Settings" msgid "Account Settings" msgstr "Танзимоти ҳисоб" #: js/ui/status/system.js:255 msgid "Orientation Lock" msgstr "Қулфи самти экран" #: js/ui/status/system.js:281 msgid "Suspend" msgstr "Таваққуф кардан" #: js/ui/status/system.js:291 msgid "Power Off" msgstr "Хомӯш кардани компютер" #: js/ui/status/thunderbolt.js:261 msgid "Thunderbolt" msgstr "" #: js/ui/status/thunderbolt.js:322 msgid "Unknown Thunderbolt device" msgstr "" #: js/ui/status/thunderbolt.js:323 msgid "New device has been detected while you were away. Please disconnect and reconnect the device to start using it." msgstr "" #: js/ui/status/thunderbolt.js:326 msgid "Unauthorized Thunderbolt device" msgstr "" #: js/ui/status/thunderbolt.js:327 msgid "New device has been detected and needs to be authorized by an administrator." msgstr "" #: js/ui/status/thunderbolt.js:333 msgid "Thunderbolt authorization error" msgstr "" #: js/ui/status/thunderbolt.js:334 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "" #: js/ui/status/volume.js:133 msgid "Volume changed" msgstr "Ҳаҷм тағйир ёфт" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:16 #| msgid "Error" msgid "Mirror" msgstr "Оина" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:21 msgid "Join Displays" msgstr "" #. Translators: this is for using only an external display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:26 msgid "External Only" msgstr "" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:31 msgid "Built-in Only" msgstr "" #: js/ui/unlockDialog.js:49 msgid "Log in as another user" msgstr "Ворид шудан бо корбари дигар" #: js/ui/unlockDialog.js:66 msgid "Unlock Window" msgstr "Кушодани равзана" #: js/ui/viewSelector.js:173 msgid "Applications" msgstr "Барномаҳо" #: js/ui/viewSelector.js:177 msgid "Search" msgstr "Ҷустуҷӯ" #: js/ui/windowAttentionHandler.js:19 #, javascript-format msgid "“%s” is ready" msgstr "“%s” омода аст" #: js/ui/windowManager.js:53 msgid "Do you want to keep these display settings?" msgstr "Шумо мехоҳед, ки ин танзимоти дисплейро нигоҳ доред?" #. Translators: this and the following message should be limited in lenght, #. to avoid ellipsizing the labels. #. #: js/ui/windowManager.js:65 msgid "Revert Settings" msgstr "Барқарор кардани тағйирот" #: js/ui/windowManager.js:68 msgid "Keep Changes" msgstr "Нигоҳ доштани тағйирот" #: js/ui/windowManager.js:86 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "Тағйироти танзимот баъд аз %d сония барқарор мешаванд" msgstr[1] "Тағйироти танзимот баъд аз %d сония барқарор мешаванд" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:662 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:26 msgid "Minimize" msgstr "Ҳадди ақал сохтан" #: js/ui/windowMenu.js:33 msgid "Unmaximize" msgstr "Бекор кардани ҳадди аксар" #: js/ui/windowMenu.js:37 msgid "Maximize" msgstr "Ҳадди аксар сохтан" #: js/ui/windowMenu.js:44 msgid "Move" msgstr "Интиқол додан" #: js/ui/windowMenu.js:50 msgid "Resize" msgstr "Тағйир додани андоза" #: js/ui/windowMenu.js:57 msgid "Move Titlebar Onscreen" msgstr "Интиқоли номи навор дар экран" #: js/ui/windowMenu.js:62 msgid "Always on Top" msgstr "Ҳамеша дар боло" #: js/ui/windowMenu.js:81 msgid "Always on Visible Workspace" msgstr "Ҳамеша дар фазои кории намоён" #: js/ui/windowMenu.js:95 msgid "Move to Workspace Left" msgstr "Интиқол додан ба фазои кории чап" #: js/ui/windowMenu.js:101 msgid "Move to Workspace Right" msgstr "Интиқол додан ба фазои кории рост" #: js/ui/windowMenu.js:107 msgid "Move to Workspace Up" msgstr "Интиқол додан ба фазои кории боло" #: js/ui/windowMenu.js:113 msgid "Move to Workspace Down" msgstr "Интиқол додан ба фазои кории поён" #: js/ui/windowMenu.js:131 msgid "Move to Monitor Up" msgstr "Интиқол ба канори болои монитор" #: js/ui/windowMenu.js:140 msgid "Move to Monitor Down" msgstr "Интиқол ба канори поёни монитор" #: js/ui/windowMenu.js:149 msgid "Move to Monitor Left" msgstr "Интиқол ба канори чапи монитор" #: js/ui/windowMenu.js:158 msgid "Move to Monitor Right" msgstr "Интиқол ба канори рости монитор" #: src/calendar-server/evolution-calendar.desktop.in:3 msgid "Evolution Calendar" msgstr "Тақвими инкишоф" #. Translators: Do NOT translate or transliterate this text (this is an icon file name)! #: src/calendar-server/evolution-calendar.desktop.in:6 msgid "evolution" msgstr "evolution" #: src/main.c:408 msgid "Print version" msgstr "Версияи чоп" #: src/main.c:414 msgid "Mode used by GDM for login screen" msgstr "Усуле, ки бо GDM барои экрани воридшавӣ истифода мешавад" #: src/main.c:420 #| msgid "Use a specific mode, e.g. \"gdm\" for login screen" msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "Истифода бурдани ҳолати мушаххас, масалан \"gdm\" барои экрани воридшавӣ" #: src/main.c:426 msgid "List possible modes" msgstr "Рӯйхати ҳолатҳои имконпазир" #: src/shell-app.c:260 msgctxt "program" msgid "Unknown" msgstr "Номаълум" #: src/shell-app.c:511 #, c-format msgid "Failed to launch “%s”" msgstr "Оғози “%s” қатъ шуд" #: src/shell-keyring-prompt.c:730 msgid "Passwords do not match." msgstr "Паролҳо мувофиқат намекунанд." #: src/shell-keyring-prompt.c:738 msgid "Password cannot be blank" msgstr "Парол бояд холӣ набошад" #: src/shell-polkit-authentication-agent.c:348 msgid "Authentication dialog was dismissed by the user" msgstr "Равзанаи гуфтугӯи санҷиши ҳакконият бо корбар бекор карда шуд" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1871 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u барориш" msgstr[1] "%u барориш" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1881 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u вуруд" msgstr[1] "%u вуруд" #: subprojects/gvc/gvc-mixer-control.c:2736 msgid "System Sounds" msgstr "Садоҳои низом" #~ msgid "There was an error loading the preferences dialog for %s:" #~ msgstr "Ҳангоми боркунии равзанаи гуфтугӯи хусусиятҳо барои %s хатогие ба вуҷуд омадааст:" #~ msgid "Hide tray" #~ msgstr "Пинҳон кардани лавҳа" #~ msgid "Status Icons" #~ msgstr "Нишонаҳои вазъият" #~ msgid "GNOME Shell Extension Preferences" #~ msgstr "Хусусиятҳои пасвандҳои восити GNOME" #~ msgid "GNOME Shell (wayland compositor)" #~ msgstr "Восити GNOME (созандаи wayland)" #~ msgid "Show the week date in the calendar" #~ msgstr "Намоиш додани ҳафта дар тақвим" #~ msgid "If true, display the ISO week date in the calendar." #~ msgstr "Агар фаъол бошад, санаи ҳафтаи ISO дар тақвим намоиш дода мешавад." #~ msgid "Web Authentication Redirect" #~ msgstr "Бозфиристодани санҷиши ҳаққонияти веб" #~ msgid "Clear section" #~ msgstr "Пок кардани қисмат" #~ msgid "Events" #~ msgstr "Рӯйдодҳо" #~ msgid "Notifications" #~ msgstr "Огоҳиҳо" #~ msgid "%d Connected Device" #~ msgid_plural "%d Connected Devices" #~ msgstr[0] "%d дастгоҳи пайвастшуда" #~ msgstr[1] "%d дастгоҳи пайвастшуда" #~ msgid "In Use" #~ msgstr "Дар истифода" #~ msgid "Authentication required" #~ msgstr "Санҷиши ҳаққоният лозим аст" #~ msgid "connecting..." #~ msgstr "пайвастшавӣ..." #~ msgid "UPS" #~ msgstr "UPS" #~ msgid "Battery" #~ msgstr "Батарея" #~ msgid "Airplane Mode" #~ msgstr "Ҳолати ҳавопаймо" #~ msgid "%d x %d" #~ msgstr "%d x %d" #~ msgid "Show the message tray" #~ msgstr "Намоиш додани қуттии паёмҳо" #~ msgid "The maximum accuracy level of location." #~ msgstr "Сатҳи аксари саҳеҳии ҷойгиршавӣ." #~ msgid "Configures the maximum level of location accuracy applications are allowed to see. Valid options are 'off' (disable location tracking), 'country', 'city', 'neighborhood', 'street', and 'exact' (typically requires GPS receiver). Please keep in mind that this only controls what GeoClue will allow applications to see and they can find user's location on their own using network resources (albeit with street-level accuracy at best)." #~ msgstr "Сатҳи баландтарини саҳеҳии ҷойгиршавиро барои барномаҳо танзим мекунад. Имконоти боэътибор: 'хомӯш' (пайгирии ҷойгиршавии ғайрифаъол), 'кишвар', 'шаҳр', 'ҳамсоягӣ', 'кӯча' ва 'дақиқ' (қабулкунандаи GPS лозим аст). Лутфан, қайд кнед, ки ин танҳо GeoClue-ро идора мекунад ва ба барномаҳо иҷозат медиҳад, то ки тавонанд ҷойгиршавии корбаронро тавассути манбаъи шабакавии онҳо пайдо кунанд (ақаллан ҷойгиршавии саҳеҳии кӯча)." #~ msgid "Arrangement of buttons on the titlebar" #~ msgstr "Мураттабсозии тугмаҳо дар сарлавҳаи равзана" #~ msgid "This key overrides the key in org.gnome.desktop.wm.preferences when running GNOME Shell." #~ msgstr "Ин калид ҳангоми иҷроиши GNOME Shell калиди дар org.gnome.desktop.wm.preferences ҷойгирбударо бекор мекунад." #~ msgid "Extension" #~ msgstr "Пасванд" #~ msgid "Select an extension to configure using the combobox above." #~ msgstr "Пасвандеро интихоб кунед, то ин ки бо ҷаъбаи мураккаби боло онро конфигуратсия кунед." #~ msgctxt "event list time" #~ msgid "%H∶%M" #~ msgstr "%H∶%M" #~ msgctxt "event list time" #~ msgid "%l∶%M %p" #~ msgstr "%l∶%M %p" #~ msgctxt "list sunday" #~ msgid "Su" #~ msgstr "Яш" #~ msgctxt "list monday" #~ msgid "M" #~ msgstr "Д" #~ msgctxt "list tuesday" #~ msgid "T" #~ msgstr "С" #~ msgctxt "list wednesday" #~ msgid "W" #~ msgstr "Ч" #~ msgctxt "list thursday" #~ msgid "Th" #~ msgstr "Пш" #~ msgctxt "list friday" #~ msgid "F" #~ msgstr "Ҷ" #~ msgctxt "list saturday" #~ msgid "S" #~ msgstr "Ш" #~ msgid "calendar:MY" #~ msgstr "тақвим:MY" #~ msgid "Nothing Scheduled" #~ msgstr "Ягон чиз ба нақша нагирифтааст" #~ msgid "Today" #~ msgstr "Имрӯз" #~ msgid "Tomorrow" #~ msgstr "Фардо" #~ msgid "This week" #~ msgstr "Ҳафтаи ҷорӣ" #~ msgid "Next week" #~ msgstr "Ҳафтаи навбатӣ" #~ msgid "Removable Devices" #~ msgstr "Дастгоҳҳои ҷудошаванда" #~ msgid "Eject" #~ msgstr "Баровардан" #~ msgid "Invitation" #~ msgstr "Даъватнома" #~ msgid "Call" #~ msgstr "Занг задан" #~ msgid "File Transfer" #~ msgstr "Интиқолдиҳии файл" #~ msgid "Chat" #~ msgstr "Чат" #~ msgid "Unmute" #~ msgstr "Садоро фаъол кардан" #~ msgid "Mute" #~ msgstr "Бесадо кардан" #~ msgid "Invitation to %s" #~ msgstr "Даъватнома барои to %s" #~ msgid "%s is inviting you to join %s" #~ msgstr "%s шуморо барои ҳамроҳ шудан ба %s даъват мекунад" #~ msgid "Decline" #~ msgstr "Рад кардан" #~ msgid "Accept" #~ msgstr "Қабул кардан" #~ msgid "Video call from %s" #~ msgstr "Занги видеоӣ аз %s" #~ msgid "Call from %s" #~ msgstr "Занг аз %s" #~ msgid "Answer" #~ msgstr "Ҷавоб" #~ msgid "%s is sending you %s" #~ msgstr "%s ба шумо %s-ро мефиристад" #~ msgid "%s would like permission to see when you are online" #~ msgstr "%s аз шумо иҷозат мепурсад, ки тавонад шуморо дар онлайн бинад" #~ msgid "Authentication failed" #~ msgstr "Санҷиши ҳаққоният қатъ шудааст." #~ msgid "Encryption error" #~ msgstr "Хатои рамзгузорӣ" #~ msgid "Certificate not provided" #~ msgstr "Гувоҳинома таъмин нашудааст" #~ msgid "Certificate untrusted" #~ msgstr "Гувоҳиномаи беэътибор" #~ msgid "Certificate expired" #~ msgstr "Гувоҳинома аз мӯҳлаташ гузашт" #~ msgid "Certificate not activated" #~ msgstr "Гувоҳинома фаъол нашудааст" #~ msgid "Certificate hostname mismatch" #~ msgstr "Номувофиқати гувоҳиномаи номи мизоҷон" #~ msgid "Certificate fingerprint mismatch" #~ msgstr "Номувофиқати гувоҳиномаи нақши ангуштон" #~ msgid "Certificate self-signed" #~ msgstr "Гувоҳиномаи худимзошуда" #~ msgid "Status is set to offline" #~ msgstr "Вазъият ба \"офлайн\" гузаштааст" #~ msgid "Certificate is invalid" #~ msgstr "Гувоҳинома нодуруст аст" #~ msgid "Connection has been refused" #~ msgstr "Пайваст рад карда шудааст" #~ msgid "Connection can't be established" #~ msgstr "Пайвастшавӣ имконнопазир аст" #~ msgid "Connection has been lost" #~ msgstr "Пайваст гум шудааст" #~ msgid "This account is already connected to the server" #~ msgstr "Ин ҳисоб аллакай ба сервер пайваст шудааст" #~ msgid "Connection has been replaced by a new connection using the same resource" #~ msgstr "Пайваст тавассути сарчашмаи якхела бо пайвасти нав ҷойиваз карда шуд" #~ msgid "The account already exists on the server" #~ msgstr "Ҳисоб дар сервер аллакай мавҷуд аст" #~ msgid "Server is currently too busy to handle the connection" #~ msgstr "Барои коркарди ин пайваст сервер дар айни ҳол хеле машғул мебошад" #~ msgid "Certificate has been revoked" #~ msgstr "Гувоҳинома лағв карда шуд" #~ msgid "Certificate uses an insecure cipher algorithm or is cryptographically weak" #~ msgstr "Гувоҳинома алгоритми хатарноки рамзро истифода мебарад, ё ки рамзгузории суст дорад" #~ msgid "The length of the server certificate, or the depth of the server certificate chain, exceed the limits imposed by the cryptography library" #~ msgstr "Дарозии гувоҳиномаи сервер, ё ки чуқурии занҷири гувоҳиномаи сервер, аз маҳдудиятҳое, ки бо китобхонаи рамзгузорӣ таъин шудаанд, дарозтар мебошад" #~ msgid "Internal error" #~ msgstr "Хатои дохилӣ" #~ msgid "Unable to connect to %s" #~ msgstr "Пайвастшавӣ ба %s имконнопазир аст" #~ msgid "View account" #~ msgstr "Намоиш додани ҳисоб" #~ msgid "Open Calendar" #~ msgstr "Кушодани тақвим" #~ msgid "Date & Time Settings" #~ msgstr "Танзимоти сана ва вақт" #~ msgid "Open" #~ msgstr "Кушодани файл" #~ msgid "Remove" #~ msgstr "Тоза кардан" #~ msgid "Clear Messages" #~ msgstr "Пок кардани паёмҳо" #~ msgid "Notification Settings" #~ msgstr "Танзимоти огоҳиҳо" #~ msgid "Tray Menu" #~ msgstr "Менюи қуттӣ" #~ msgid "No Messages" #~ msgstr "Ягон паём нест" #~ msgid "Message Tray" #~ msgstr "Қуттии паёмҳо" #~ msgid "%A, %H:%M" #~ msgstr "%A, %H:%M" #~ msgid "%B %d, %H:%M" #~ msgstr "%B %d, %H:%M" #~ msgid "%B %d %Y, %H:%M " #~ msgstr "%B %d %Y, %H:%M " #~ msgid "List of categories that should be displayed as folders" #~ msgstr "Рӯйхати категорияҳо, ки бояд ҳамчун ҷузвдонҳо намоиш дода шаванд" #~ msgid "Each category name in this list will be represented as folder in the application view, rather than being displayed inline in the main view." #~ msgstr "Ҳар як номи категория, ки дар ин рӯйхат мавҷуд аст, дар намуди барномаҳо ҳамчун ҷузвдон ифода мешавад, ба ҷойи намоишдиҳии шомил дар намуди асосӣ." #~ msgctxt "event list time" #~ msgid "%H\\u2236%M" #~ msgstr "%H\\u2236%M" #~ msgctxt "event list time" #~ msgid "%l\\u2236%M\\u2009%p" #~ msgstr "%l\\u2236%M\\u2009%p" #~ msgid "Authorization request from %s" #~ msgstr "Дархости санҷиши ҳаққоният аз %s" #~ msgid "Device %s wants to pair with this computer" #~ msgstr "Дастгоҳи %s мехоҳад, ки бо ин компютер ҷуфт кунад" #~ msgid "Device %s wants access to the service '%s'" #~ msgstr "Дастгоҳи %s дастрасиро ба хидмати \"%s\" дархост мекунад" #~ msgid "Grant this time only" #~ msgstr "Танҳо дар ин маротиба иҷозат додан" #~ msgid "Reject" #~ msgstr "Рад кардан" #~ msgid "Pairing confirmation for %s" #~ msgstr "Тасдиқи ҷуфтсозӣ барои %s" #~ msgid "Please confirm whether the Passkey '%06d' matches the one on the device." #~ msgstr "Лутфан, тасдиқ кунед, ки калиди хусусии '%06d' ба калиди дар дастгоҳ мавҷудбуда мувофиқат мекунад." #~ msgid "Matches" #~ msgstr "Мутобиқаткунанда" #~ msgid "Does not match" #~ msgstr "Мувофиқат намекунад" #~ msgid "Pairing request for %s" #~ msgstr "Дархости ҷуфтсозӣ барои %s" #~ msgid "Please enter the PIN mentioned on the device." #~ msgstr "Лутфан, рамзи PIN-ро, ки дар дастгоҳ гуфта шудааст, ворид кунед." #~ msgid "OK" #~ msgstr "OK" #~ msgid "" #~ "Sorry, no wisdom for you today:\n" #~ "%s" #~ msgstr "" #~ "Мутаассифода, барои шумо имрӯз ягон хирадмандӣ нест:\n" #~ "%s" #~ msgid "%s the Oracle says" #~ msgstr "Паёми паёмовар: %s" #~ msgid "Settings Menu" #~ msgstr "Менюи танзимот" #~ msgid "Session" #~ msgstr "Ҷаласа" #~ msgid "Internally used to store the last IM presence explicitly set by the user. The value here is from the TpConnectionPresenceType enumeration." #~ msgstr "Ба таври дохилӣ барои нигоҳ доштани мавҷудияти охирини IM, ки бо корбар ба таври бевосита таъин шудааст, истифода мешавад. Дар ин ҷо қимат аз шумориши TpConnectionPresenceType ба вуҷуд меояд." #~ msgid "Internally used to store the last session presence status for the user. The value here is from the GsmPresenceStatus enumeration." #~ msgstr "Ба таври дохилӣ барои нигоҳ доштани вазъияти мавҷудияти ҷаласаи охирин барои корбар истифода мешавад. Дар ин ҷо қимат аз шумориши GsmPresenceStatus ба вуҷуд меояд." #~ msgid "Click Log Out to quit these applications and log out of the system." #~ msgstr "Барои баромадан аз ин барномаҳо ва баромадан аз система, \"Баромадан\"-ро зер кунед." #~ msgid "Logging out of the system." #~ msgstr "Баромад аз система." #~ msgid "Click Power Off to quit these applications and power off the system." #~ msgstr "Барои баромадан аз ин барномаҳо ва анҷом додани кори система, \"Анҷоми кор\"-ро зер кунед." #~ msgid "Powering off the system." #~ msgstr "Хомӯш кардани система." #~ msgid "Click Restart to quit these applications and restart the system." #~ msgstr "Барои баромадан аз ин барномаҳо ва бозоғозидани система, \"Бозоғозидан\"-ро зер кунед." #~ msgid "Restarting the system." #~ msgstr "Бозоғозии система." #~ msgid "Shutting down might cause them to lose unsaved work." #~ msgstr "Анҷоми кор метавонад сабаби гум шудани кори захиранашуда гардад." #~ msgid "Screenshots" #~ msgstr "Суратҳои экран" #~ msgid "Record a screencast" #~ msgstr "Сабти рӯйдодҳои экран" #~ msgid "Keybinding to toggle the screen recorder" #~ msgstr "Тугма барои иваз кардани сабткунандаи экран" #~ msgid "Keybinding to start/stop the builtin screen recorder." #~ msgstr "Тугма барои оғоз/қатъ кардани сабткунандаи экрани дарунсохт." #~ msgid "Framerate used for recording screencasts." #~ msgstr "Миқдори кадрҳо дар сония, ки барои сабти рӯйдодҳои экран истифода мешавад." #~ msgid "The framerate of the resulting screencast recordered by GNOME Shell's screencast recorder in frames-per-second." #~ msgstr "Миқдори кадрҳо дар як сония барои сабти рӯйдодҳои экран, ки бо сабткунандаи рӯйдодҳои экрани GNOME Shell сабт шудааст, дар кадрҳо дар як сония." #~ msgid "The gstreamer pipeline used to encode the screencast" #~ msgstr "Лӯламаҷрои gstreamer, ки барои рамзӣ кардани рӯйдодҳои экран истифода мешавад" #~ msgid "Sets the GStreamer pipeline used to encode recordings. It follows the syntax used for gst-launch. The pipeline should have an unconnected sink pad where the recorded video is recorded. It will normally have a unconnected source pad; output from that pad will be written into the output file. However the pipeline can also take care of its own output - this might be used to send the output to an icecast server via shout2send or similar. When unset or set to an empty value, the default pipeline will be used. This is currently 'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is used as a placeholder for a guess at the optimal thread count on the system." #~ msgstr "Лӯламаҷрои GStreamer-ро, ки барои рамзӣ кардани сабтҳо истифода мешаванд, таъин мекунад. Он наҳвро, ки барои gst-launch истифода мешавад, риоя мекунад. Лӯламаҷро бояд қабати қабулкунандаи пайвастнашуда дошта бошад, ки дар он видеои сабтшаванда сабт мешавад. Одатан он дорои қабати пайвастнашудаи аслӣ мешавад; натиҷаи он қабат ба файли натиҷаҳо навишта мешавад. Аммо лӯламаҷро метавонад инчунин натиҷаи худро истифода барад - ин метавонад барои фиристодани натиҷа ба сервери icecast тавассути shout2send ё монанд истифода шавад. Агар ин таъин шуда набошад, ё ки ба қимати холӣ таъин шуда бошад, лӯламаҷрои пешфарз истифода мешавад. Дар айни ҳол ин чунин мебошад: \"vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux\", ва тавассути кодеки VP8 ба формати WEBM сабт мекунад. %T ҳамчун пуркунандаи фазо барои ҳисоби тақрибӣ дар миқдори беҳтарини риштаҳо дар система истифода мешавад." #~ msgid "File extension used for storing the screencast" #~ msgstr "Пасванди файл, ки барои нигоҳ доштани рӯйдодҳои экран истифода мешавад" #~ msgid "The filename for recorded screencasts will be a unique filename based on the current date, and use this extension. It should be changed when recording to a different container format." #~ msgstr "Номи файл барои рӯйдодҳои экрани сабтшуда номи ягонаи файл мебошад, ки бо санаи ҷорӣ асос меёбад ва ин пасвандро истифода мебарад. Вақте ки ба формати дигари дарбаргиранда сабт рафта истода бошад, он бояд тағйир дода шавад." #~ msgid "Screencast from %d %t" #~ msgstr "Рӯйдодҳои экран аз %d %t" #~ msgid "Power" #~ msgstr "Барқ" #~ msgid "Restart" #~ msgstr "Бозоғозидан" #~ msgid "Volume, network, battery" #~ msgstr "Ҳаҷм, шабака, батарея" #~ msgid "Wi-Fi" #~ msgstr "Wi-Fi" #~ msgid "disabled" #~ msgstr "ғайрифаъол" #~ msgid "More…" #~ msgstr "Бештар..." #~ msgid "Connected (private)" #~ msgstr "Пайваст шудааст (шахсӣ)" #~ msgid "Wired" #~ msgstr "Симдор" #~ msgid "Visibility" #~ msgstr "Қобилияти намоиш" #~ msgid "Set Up a New Device…" #~ msgstr "Насб кардани дастгоҳи нав…" #~ msgid "Send Files…" #~ msgstr "Фиристодани файлҳо…" #~ msgid "Universal Access Settings" #~ msgstr "Танзимоти дастрасии универсалӣ" #~ msgid "Keyboard Settings" #~ msgstr "Танзимоти клавиатура" #~ msgid "Mouse Settings" #~ msgstr "Танзимоти муш" #~ msgid "%d %s %d %s remaining" #~ msgstr "%d %s %d %s боқӣ мондааст" #~ msgid "hour" #~ msgid_plural "hours" #~ msgstr[0] "соат" #~ msgid "minute" #~ msgid_plural "minutes" #~ msgstr[0] "дақиқа" #~ msgid "AC Adapter" #~ msgstr "Адаптери AC" #~ msgid "Laptop Battery" #~ msgstr "Батареяи лэптоп" #~ msgid "Monitor" #~ msgstr "Монитор" #~ msgid "Mouse" #~ msgstr "Муш" #~ msgid "PDA" #~ msgstr "PDA" #~ msgid "Cell Phone" #~ msgstr "Телефони мобилӣ" #~ msgid "Media Player" #~ msgstr "Плеери мултимедиа" #~ msgid "Tablet" #~ msgstr "Планшет" #~ msgid "Computer" #~ msgstr "Компютер" #~ msgctxt "device" #~ msgid "Unknown" #~ msgstr "Номаълум" #~ msgid "Available" #~ msgstr "Дастрас" #~ msgid "Busy" #~ msgstr "Машғул" #~ msgid "Invisible" #~ msgstr "Ноаён" #~ msgid "Away" #~ msgstr "Ғоиб" #~ msgid "Idle" #~ msgstr "Ғайрифаъол" #~ msgid "Your chat status will be set to busy" #~ msgstr "Вазъияти чати шумо ба \"машғул\" тағйир дода мешавад" #~ msgid "Notifications are now disabled, including chat messages. Your online status has been adjusted to let others know that you might not see their messages." #~ msgstr "Акнун огоҳиҳо ғайрифаъол мебошанд, аз он ҷумла паёмҳои чат. Вазъияти онлайни шумо ба тавре танзим карда шуд, ки дигарон фаҳманд, ки эҳтимолан шумо паёмҳои онҳоро намебинед." #~ msgid "cable unplugged" #~ msgstr "сим ҷудо шудааст" #~ msgid "Whether to collect stats about applications usage" #~ msgstr "Ҷамъ кардан ё ҷамъ накардани омор дар бораи истифодабарии барномаҳо" #~ msgid "The shell normally monitors active applications in order to present the most used ones (e.g. in launchers). While this data will be kept private, you may want to disable this for privacy reasons. Please note that doing so won't remove already saved data." #~ msgstr "Одатан ин восит барномаҳои фаъолро нигоҳдорӣ мекунад, то ин ки барномаҳои аз ҳама зиёд истифодашаванда (масалан оғозкунандагон) ҳамеша мавҷуд бошанд. Гарчанде ки ин иттилоот махфӣ нигоҳ дошта мешавад, шумо метавонед интихоб кунед, ки инро барои сабабҳои махфият ғайрифаъол кунед. Лутфан, ба қайд гиред, ки чунин амал иттилооти аллакай захирашударо тоза намекунад." #~ msgid "Auto Ethernet" #~ msgstr "Ethernet-и худкор" #~ msgid "Auto broadband" #~ msgstr "Паҳннавори худкор" #~ msgid "Auto dial-up" #~ msgstr "Шуморагирии худкор" #~ msgid "Auto %s" #~ msgstr "Худкор %s" #~ msgid "Auto bluetooth" #~ msgstr "Bluetooth-и худкор" #~ msgid "Auto wireless" #~ msgstr "Бесими худкор" #~ msgctxt "title" #~ msgid "Sign In" #~ msgstr "Ворид шудан" #~ msgid "More..." #~ msgstr "Бештар..." #~ msgid "United Kingdom" #~ msgstr "Британияи Кабир" #~ msgid "Default" #~ msgstr "Пешфарз" 07070100000267000081A40000000000000000000000016712993F00025E00000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/th.po# Thai translation for gnome-shell. # Copyright (C) 2010-2012 Free Software Foundation, Inc. # This file is distributed under the same license as the gnome-shell package. # Sira Nokyoongtong , 2010, 2011. # Theppitak Karoonboonyanan , 2012. # Aefgh Threenine , 2024. # Atirut Wattanamongkol , 2024. # msgid "" msgstr "" "Project-Id-Version: gnome-shell master\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues/\n" "POT-Creation-Date: 2024-09-16 15:09+0000\n" "PO-Revision-Date: 2024-09-18 01:36+0700\n" "Last-Translator: Atirut Wattanamongkol \n" "Language-Team: Thai \n" "Language: th\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 3.5\n" "X-DL-Lang: th\n" "X-DL-Module: gnome-shell\n" "X-DL-Branch: main\n" "X-DL-Domain: po\n" "X-DL-State: None\n" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "ตัวเรียกใช้งาน" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate pinned app 1" msgstr "เรียกใช้งานแอปที่ปักหมุดตัวที่ 1" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate pinned app 2" msgstr "เรียกใช้งานแอปที่ปักหมุดตัวที่ 2" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate pinned app 3" msgstr "เรียกใช้งานแอปที่ปักหมุดตัวที่ 3" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate pinned app 4" msgstr "เรียกใช้งานแอปที่ปักหมุดตัวที่ 4" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate pinned app 5" msgstr "เรียกใช้งานแอปที่ปักหมุดตัวที่ 5" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate pinned app 6" msgstr "เรียกใช้งานแอปที่ปักหมุดตัวที่ 6" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate pinned app 7" msgstr "เรียกใช้งานแอปที่ปักหมุดตัวที่ 7" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate pinned app 8" msgstr "เรียกใช้งานแอปที่ปักหมุดตัวที่ 8" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate pinned app 9" msgstr "เรียกใช้งานแอปที่ปักหมุดตัวที่ 9" #: data/50-gnome-shell-launchers.xml:46 msgid "Open new window of pinned app 1" msgstr "เปิดหน้าต่างใหม่ของแอปที่ปักหมุดตัวที่ 1" #: data/50-gnome-shell-launchers.xml:50 msgid "Open new window of pinned app 2" msgstr "เปิดหน้าต่างใหม่ของแอปที่ปักหมุดตัวที่ 2" #: data/50-gnome-shell-launchers.xml:54 msgid "Open new window of pinned app 3" msgstr "เปิดหน้าต่างใหม่ของแอปที่ปักหมุดตัวที่ 3" #: data/50-gnome-shell-launchers.xml:58 msgid "Open new window of pinned app 4" msgstr "เปิดหน้าต่างใหม่ของแอปที่ปักหมุดตัวที่ 4" #: data/50-gnome-shell-launchers.xml:62 msgid "Open new window of pinned app 5" msgstr "เปิดหน้าต่างใหม่ของแอปที่ปักหมุดตัวที่ 5" #: data/50-gnome-shell-launchers.xml:66 msgid "Open new window of pinned app 6" msgstr "เปิดหน้าต่างใหม่ของแอปที่ปักหมุดตัวที่ 6" #: data/50-gnome-shell-launchers.xml:70 msgid "Open new window of pinned app 7" msgstr "เปิดหน้าต่างใหม่ของแอปที่ปักหมุดตัวที่ 7" #: data/50-gnome-shell-launchers.xml:74 msgid "Open new window of pinned app 8" msgstr "เปิดหน้าต่างใหม่ของแอปที่ปักหมุดตัวที่ 8" #: data/50-gnome-shell-launchers.xml:78 msgid "Open new window of pinned app 9" msgstr "เปิดหน้าต่างใหม่ของแอปที่ปักหมุดตัวที่ 9" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2276 msgid "Screenshots" msgstr "ภาพหน้าจอ" #: data/50-gnome-shell-screenshots.xml:9 #: data/org.gnome.shell.gschema.xml.in:287 msgid "Take a screenshot interactively" msgstr "บันทึกภาพหน้าจอแบบโต้ตอบ" #: data/50-gnome-shell-screenshots.xml:12 #: data/org.gnome.shell.gschema.xml.in:299 msgid "Take a screenshot" msgstr "บันทึกภาพหน้าจอ" #: data/50-gnome-shell-screenshots.xml:15 #: data/org.gnome.shell.gschema.xml.in:295 msgid "Take a screenshot of a window" msgstr "บันทึกภาพหน้าจอของหน้าต่าง" #: data/50-gnome-shell-screenshots.xml:18 #: data/org.gnome.shell.gschema.xml.in:291 msgid "Record a screencast interactively" msgstr "อัดภาพถ่ายทอดหน้าจอแบบอินเทอร์แอคทีฟ" #: data/50-gnome-shell-system.xml:6 js/ui/messageTray.js:1300 msgid "System" msgstr "ระบบ" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "แสดงรายชื่อการแจ้งเตือน" #: data/50-gnome-shell-system.xml:12 msgid "Open the quick settings menu" msgstr "เปิดเมนูตั้งค่าด่วน" #: data/50-gnome-shell-system.xml:15 msgid "Focus the active notification" msgstr "โฟกัสที่รายการแจ้งเตือนที่แสดงอยู่" #: data/50-gnome-shell-system.xml:18 msgid "Show the overview" msgstr "แสดงหน้าภาพรวม" #: data/50-gnome-shell-system.xml:21 msgid "Show all apps" msgstr "แสดงแอปทั้งหมด" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "เชลล์ GNOME" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "การจัดการหน้าต่างและการเรียกใช้แอปพลิเคชัน" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "เปิดใช้เครื่องมือภายในที่เป็นประโยชน์ต่อนักพัฒนาและนักทดสอบ ผ่านปุ่ม Alt-F2" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "เปิดให้เข้าถึงเครื่องมือภายในสำหรับดีบั๊กและเฝ้าสังเกต ซึ่งเรียกผ่านกล่องโต้ตอบ Alt-F2" #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "UUID ของส่วนขยายที่จะเปิดใช้งาน" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "ส่วนขยายต่างๆ ของเชลล์ GNOME จะมี UUID ประจำตัว คีย์นี้จะเก็บรายชื่อของส่วนขยายที่จะโหลดใช้ " "ส่วนขยายใดๆ ที่ต้องการให้โหลดจะต้องอยู่ในรายชื่อนี้ คุณยังสามารถจัดการรายชื่อนี้ผ่านเมธอด " "EnableExtension และ DisableExtension ของ DBus ที่หัวข้อ org.gnome.Shell ได้" #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "UUID ของส่วนขยายที่จะบังคับปิดใช้งาน" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" "ส่วนขยายต่างๆ ของเชลล์ GNOME จะมี UUID ประจำตัว คีย์นี้จะเก็บรายชื่อของส่วนขยายที่จะปิดใช้ " "ถึงแม้ว่าจะถูกโหลดเป็นส่วนหนึ่งของโหมดปัจจุบันก็ตาม คุณสามารถจัดการรายชื่อนี้ผ่านเมธอด " "EnableExtension และ DisableExtension ของ DBus ที่หัวข้อ org.gnome.Shell ได้ " "คีย์นี้จะมีลำดับความสำคัญที่สูงกว่าการตั้งค่า “enabled-extensions”" #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "ปิดส่วนขยายทั้งหมด" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "ปิดใช้งานส่วนขยายทั้งหมดที่ผู้ใช้เปิดใช้โดยไม่กระทบกับการตั้งค่า “enabled-extension”" #: data/org.gnome.shell.gschema.xml.in:45 #, fuzzy msgid "Allow extension installation" msgstr "ไม่มีส่วนขยายติดตั้งอยู่" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "Allow users to install extensions in their home folder. If disabled, the " "InstallRemoteExtension D-Bus method will fail, and extensions are only " "loaded from system directories on startup. It does not affect extensions " "that are already loaded, so a change only takes full effect on the next " "login." msgstr "" #: data/org.gnome.shell.gschema.xml.in:56 msgid "Disables the validation of extension version compatibility" msgstr "ปิดใช้งานการตรวจสอบความเข้ากันได้ของรุ่นส่วนขยาย" #: data/org.gnome.shell.gschema.xml.in:57 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "GNOME เชลล์จะโหลดเฉพาะส่วนขยายที่อ้างว่ารองรับรุ่นที่ใช้อยู่ปัจจุบันเท่านั้น " "การเปิดใช้งานตัวเลือกนี้จะปิดการตรวจสอบนี้และพยายามโหลดส่วนขยายทั้งหมดโดยไม่คำนึงถึงรุ่นที่ส่วนขยายเหล่านั้นอ้างว่ารองรับ" #: data/org.gnome.shell.gschema.xml.in:65 msgid "List of desktop file IDs for favorite applications" msgstr "รายชื่อของไฟล์เดสก์ท็อปสำหรับแอปพลิเคชันโปรด" #: data/org.gnome.shell.gschema.xml.in:66 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "โปรแกรมที่แทนด้วยไฟล์เดสก์ท็อปเหล่านี้จะถูกแสดงในบริเวณแอปพลิเคชันโปรด" #: data/org.gnome.shell.gschema.xml.in:73 msgid "History for command (Alt-F2) dialog" msgstr "ประวัติคำสั่งของกล่องโต้ตอบเรียกโปรแกรม (Alt-F2)" #. Translators: looking glass is a debugger and inspector tool, see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/docs/looking-glass.md #: data/org.gnome.shell.gschema.xml.in:78 msgid "History for the looking glass dialog" msgstr "ประวัติคำสั่งของกล่องโต้ตอบ looking glass" #: data/org.gnome.shell.gschema.xml.in:82 #, fuzzy msgid "Always show the “Log Out” action in the system menu" msgstr "แสดงรายการเมนู “ออกจากระบบ” เสมอในเมนูผู้ใช้" #: data/org.gnome.shell.gschema.xml.in:83 #, fuzzy msgid "" "This key overrides the automatic hiding of the “Log out” action in the " "system menu for logged-in situations where there is a single, local, non-" "system user and only a single available session type (e.g. GNOME on Wayland)." msgstr "" "ปุ่มนี้แทนที่การซ่อนอัตโนมัติของรายการเมนู “ออกจากระบบ” ในผู้ใช้เดียว สถานการณ์เซสชันเดียว" #: data/org.gnome.shell.gschema.xml.in:92 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "ระบุว่าจะจำรหัสผ่านสำหรับการเมานต์ระบบไฟล์ที่เข้ารหัสลับหรือระบบไฟล์ทางไกลหรือไม่" #: data/org.gnome.shell.gschema.xml.in:93 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "เชลล์จะขอรหัสผ่านเมื่อมีการเมานต์อุปกรณ์ที่เข้ารหัสลับหรือระบบไฟล์ทางไกล " "หากสามารถบันทึกรหัสผ่านไว้ใช้ในอนาคตได้ช่องทำเครื่องหมาย “จำรหัสผ่าน” จะปรากฏขึ้น " "คีย์นี้กำหนดสถานะเริ่มต้นของช่องทำเครื่องหมาย" #: data/org.gnome.shell.gschema.xml.in:102 msgid "The last selected non-default power profile" msgstr "โปรไฟล์พลังงานที่ไม่ใช่ค่าเริ่มต้นที่เลือกไว้ล่าสุด" #: data/org.gnome.shell.gschema.xml.in:103 msgid "" "Some systems support more than two power profiles. In order to still support " "toggling between two profiles, this key records the last selected non-" "default profile." msgstr "" "บางระบบรองรับโปรไฟล์พลังงานมากกว่าสองตัว เพื่อให้รองรับการสลับไปมาระหว่างสองโปรไฟล์ได้ " "คีย์นี้จะบันทึกรายการที่ไม่ใช่โปรไฟล์เริ่มต้น" #: data/org.gnome.shell.gschema.xml.in:111 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "รุ่นล่าสุดที่แสดงกล่องโต้ตอบ “ยินดีต้อนรับสู่ GNOME”" #: data/org.gnome.shell.gschema.xml.in:112 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can " "be used to effectively disable the dialog." msgstr "" "คีย์นี้กำหนดว่ารุ่นใดเป็นรุ่นล่าสุดที่แสดงกล่องโต้ตอบ “ยินดีต้อนรับสู่ GNOME” " "สตริงว่างแทนรุ่นเก่าสุดที่เป็นไปได้ และตัวเลขที่มีค่ามากแทนรุ่นที่ยังไม่มี " "ตัวเลขที่มีค่ามหาศาลนี้สามารถใช้เพื่อปิดใช้กล่องโต้ตอบอย่างได้ผล" #: data/org.gnome.shell.gschema.xml.in:145 msgid "Layout of the app picker" msgstr "เค้าโครงของเครื่องมือเลือกแอป" #: data/org.gnome.shell.gschema.xml.in:146 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" msgstr "" #: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:172 msgid "Keybinding to shift between overview states" msgstr "ปุ่มลัดสำหรับเปลี่ยนไปมาระหว่างสถานะภาพรวม" #: data/org.gnome.shell.gschema.xml.in:166 msgid "Keybinding to shift between session, window picker and app grid" msgstr "ปุ่มลัดสำหรับเปลี่ยนไปมาระหว่างวาระ ตัวเลือกหน้าต่างและตารางแอป" #: data/org.gnome.shell.gschema.xml.in:173 msgid "Keybinding to shift between app grid, window picker and session" msgstr "ปุ่มลัดสำหรับเปลี่ยนไปมาระหว่างตารางแอป ตัวเลือกหน้าต่างและวาระ" #: data/org.gnome.shell.gschema.xml.in:179 msgid "Keybinding to open the “Show Applications” view" msgstr "ปุ่มลัดสำหรับเปิดมุมมอง “แสดงแอปพลิเคชัน”" #: data/org.gnome.shell.gschema.xml.in:180 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "ปุ่มลัดสำหรับเปิดมุมมอง “แสดงแอปพลิเคชัน” ในหน้าภาพรวมกิจกรรม" #: data/org.gnome.shell.gschema.xml.in:187 msgid "Keybinding to open the overview" msgstr "ปุ่มลัดสำหรับเปิดหน้าภาพรวม" #: data/org.gnome.shell.gschema.xml.in:188 msgid "Keybinding to open the Activities Overview." msgstr "ปุ่มลัดสำหรับเปิดหน้าภาพรวมกิจกรรม" #: data/org.gnome.shell.gschema.xml.in:194 msgid "Keybinding to toggle the visibility of the notification list" msgstr "ปุ่มลัดสำหรับสลับการซ่อน/แสดงของรายชื่อการแจ้งเตือน" #: data/org.gnome.shell.gschema.xml.in:195 msgid "Keybinding to toggle the visibility of the notification list." msgstr "ปุ่มลัดสำหรับสลับการซ่อน/แสดงของรายชื่อการแจ้งเตือน" #: data/org.gnome.shell.gschema.xml.in:201 msgid "Keybinding to toggle the quick settings menu" msgstr "ปุ่มลัดสำหรับซ่อน/แสดงเมนูตั้งค่าด่วน" #: data/org.gnome.shell.gschema.xml.in:202 msgid "Keybinding to toggle the quick settings menu." msgstr "ปุ่มลัดสำหรับซ่อน/แสดงเมนูตั้งค่าด่วน" #: data/org.gnome.shell.gschema.xml.in:208 msgid "Keybinding to focus the active notification" msgstr "ปุ่มลัดสำหรับโฟกัสรายการแจ้งเตือนที่ใช้งาน" #: data/org.gnome.shell.gschema.xml.in:209 msgid "Keybinding to focus the active notification." msgstr "ปุ่มลัดสำหรับโฟกัสรายการแจ้งเตือนที่ใช้งาน" #: data/org.gnome.shell.gschema.xml.in:215 msgid "Switch to application 1" msgstr "สลับไปยังแอปพลิเคชันตัวที่ 1" #: data/org.gnome.shell.gschema.xml.in:219 msgid "Switch to application 2" msgstr "สลับไปยังแอปพลิเคชันตัวที่ 2" #: data/org.gnome.shell.gschema.xml.in:223 msgid "Switch to application 3" msgstr "สลับไปยังแอปพลิเคชันตัวที่ 3" #: data/org.gnome.shell.gschema.xml.in:227 msgid "Switch to application 4" msgstr "สลับไปยังแอปพลิเคชันตัวที่ 4" #: data/org.gnome.shell.gschema.xml.in:231 msgid "Switch to application 5" msgstr "สลับไปยังแอปพลิเคชันตัวที่ 5" #: data/org.gnome.shell.gschema.xml.in:235 msgid "Switch to application 6" msgstr "สลับไปยังแอปพลิเคชันตัวที่ 6" #: data/org.gnome.shell.gschema.xml.in:239 msgid "Switch to application 7" msgstr "สลับไปยังแอปพลิเคชันตัวที่ 7" #: data/org.gnome.shell.gschema.xml.in:243 msgid "Switch to application 8" msgstr "สลับไปยังแอปพลิเคชันตัวที่ 8" #: data/org.gnome.shell.gschema.xml.in:247 msgid "Switch to application 9" msgstr "สลับไปยังแอปพลิเคชันตัวที่ 9" #: data/org.gnome.shell.gschema.xml.in:251 msgid "Open a new instance of application 1" msgstr "เปิดแอปพลิเคชันตัวที่ 1 ขึ้นมาอีกตัวหนึ่ง" #: data/org.gnome.shell.gschema.xml.in:255 msgid "Open a new instance of application 2" msgstr "เปิดแอปพลิเคชันตัวที่ 2 ขึ้นมาอีกตัวหนึ่ง" #: data/org.gnome.shell.gschema.xml.in:259 msgid "Open a new instance of application 3" msgstr "เปิดแอปพลิเคชันตัวที่ 3 ขึ้นมาอีกตัวหนึ่ง" #: data/org.gnome.shell.gschema.xml.in:263 msgid "Open a new instance of application 4" msgstr "เปิดแอปพลิเคชันตัวที่ 4 ขึ้นมาอีกตัวหนึ่ง" #: data/org.gnome.shell.gschema.xml.in:267 msgid "Open a new instance of application 5" msgstr "เปิดแอปพลิเคชันตัวที่ 5 ขึ้นมาอีกตัวหนึ่ง" #: data/org.gnome.shell.gschema.xml.in:271 msgid "Open a new instance of application 6" msgstr "เปิดแอปพลิเคชันตัวที่ 6 ขึ้นมาอีกตัวหนึ่ง" #: data/org.gnome.shell.gschema.xml.in:275 msgid "Open a new instance of application 7" msgstr "เปิดแอปพลิเคชันตัวที่ 7 ขึ้นมาอีกตัวหนึ่ง" #: data/org.gnome.shell.gschema.xml.in:279 msgid "Open a new instance of application 8" msgstr "เปิดแอปพลิเคชันตัวที่ 8 ขึ้นมาอีกตัวหนึ่ง" #: data/org.gnome.shell.gschema.xml.in:283 msgid "Open a new instance of application 9" msgstr "เปิดแอปพลิเคชันตัวที่ 9 ขึ้นมาอีกตัวหนึ่ง" #: data/org.gnome.shell.gschema.xml.in:308 #: data/org.gnome.shell.gschema.xml.in:335 msgid "Limit switcher to current workspace." msgstr "" #: data/org.gnome.shell.gschema.xml.in:309 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" #: data/org.gnome.shell.gschema.xml.in:326 msgid "The application icon mode." msgstr "" #: data/org.gnome.shell.gschema.xml.in:327 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-only” " "(shows only the application icon) or “both”." msgstr "" #: data/org.gnome.shell.gschema.xml.in:336 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" #: data/org.gnome.shell.gschema.xml.in:346 #, fuzzy msgid "Locations" msgstr "การแจ้งเหตุ" #: data/org.gnome.shell.gschema.xml.in:347 msgid "The locations to show in world clocks" msgstr "" #: data/org.gnome.shell.gschema.xml.in:357 msgid "Automatic location" msgstr "" #: data/org.gnome.shell.gschema.xml.in:358 msgid "Whether to fetch the current location or not" msgstr "" #: data/org.gnome.shell.gschema.xml.in:365 #, fuzzy msgid "Location" msgstr "การแจ้งเหตุ" #: data/org.gnome.shell.gschema.xml.in:366 msgid "The location for which to show a forecast" msgstr "" #. Keep in sync with subprojects/extensions-app #: data/org.gnome.Shell.Extensions.desktop.in.in:5 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/data/ui/extensions-window.ui:57 #, fuzzy msgid "Extensions" msgstr "ส่วนขยาย" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 #, fuzzy msgid "Network Login" msgstr "ข้อผิดพลาดเกี่ยวกับเครือข่าย" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:275 msgid "Something’s gone wrong" msgstr "" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 #, fuzzy msgid "Homepage" msgstr "บ้าน" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 #, fuzzy msgid "Visit extension homepage" msgstr "UUID ของส่วนขยายที่จะเปิดใช้งาน" #: js/gdm/authPrompt.js:153 js/gdm/loginDialog.js:467 #: js/ui/audioDeviceSelection.js:66 js/ui/components/networkAgent.js:115 #: js/ui/components/polkitAgent.js:146 js/ui/endSessionDialog.js:438 #: js/ui/extensionDownloader.js:278 js/ui/shellMountOperation.js:384 #: js/ui/shellMountOperation.js:394 msgid "Cancel" msgstr "ยกเลิก" #: js/gdm/authPrompt.js:319 js/ui/components/networkAgent.js:215 #: js/ui/components/networkAgent.js:235 js/ui/components/networkAgent.js:267 #: js/ui/components/networkAgent.js:300 js/ui/components/networkAgent.js:339 #: js/ui/components/networkAgent.js:352 js/ui/components/polkitAgent.js:288 #: js/ui/shellMountOperation.js:334 msgid "Password" msgstr "รหัสผ่าน" #: js/gdm/loginDialog.js:327 msgid "Choose Session" msgstr "เลือกวาระ" #. Translators: is running for #: js/gdm/loginDialog.js:425 #, javascript-format msgid "" "Remote login is not possible because a remote session is already running for " "%s. To login remotely, you must log out from the remote session or force " "stop it." msgstr "" "ไม่สามารถเข้าสู่ระบบจากระยะไกลได้เนื่องจากเซสชันระยะไกลกำลังทำงานอยู่แล้วสำหรับ %s " "หากต้องการเข้าสู่ระบบจากระยะไกล คุณจะต้องออกจากเซสชันระยะไกลหรือบังคับหยุดเซสชันดังกล่าว" #. Translators: is running for #: js/gdm/loginDialog.js:428 #, javascript-format msgid "" "Login is not possible because a remote session is already running for %s. To " "login, you must log out from the remote session or force stop it." msgstr "" "ไม่สามารถเข้าสู่ระบบได้เนื่องจากเซสชันระยะไกลกำลังทำงานอยู่แล้วสำหรับ %s " "หากต้องการเข้าสู่ระบบ คุณจะต้องออกจากเซสชันระยะไกลหรือบังคับหยุดเซสชันดังกล่าว" #. Translators: is running for #: js/gdm/loginDialog.js:431 #, javascript-format msgid "" "Remote login is not possible because a local session is already running for " "%s. To login remotely, you must log out from the local session or force stop " "it." msgstr "" "ไม่สามารถเข้าสู่ระบบจากระยะไกลได้เนื่องจากเซสชันภายในเครื่องกำลังทำงานอยู่แล้วสำหรับ %s " "หากต้องการเข้าสู่ระบบจากระยะไกล คุณต้องออกจากเซสชันภายในเครื่องหรือบังคับหยุดเซสชันดังกล่าว" #. Translators: is running for #: js/gdm/loginDialog.js:434 #, javascript-format msgid "" "Login is not possible because a session is already running for %s. To login, " "you must log out from the session or force stop it." msgstr "" "ไม่สามารถเข้าสู่ระบบได้เนื่องจากเซสชันกำลังทำงานอยู่แล้วสำหรับ %s หากต้องการเข้าสู่ระบบ " "คุณต้องออกจากเซสชันหรือบังคับหยุดเซสชันดังกล่าว" #: js/gdm/loginDialog.js:443 msgid "Session Already Running" msgstr "เซสชันกำลังทำงานอยู่" #: js/gdm/loginDialog.js:455 msgid "" "Force stopping will quit any running apps and processes, and could result in " "data loss." msgstr "การบังคับหยุดจะปิดแอปและโปรเซสที่ทำงานอยู่ และอาจส่งผลให้ข้อมูลสูญหายได้" #: js/gdm/loginDialog.js:475 msgid "Force Stop" msgstr "บังคับให้หยุด" #: js/gdm/loginDialog.js:543 msgid "Not listed?" msgstr "ไม่มีชื่อของคุณงั้นหรือ?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:1011 #, javascript-format msgid "(e.g., user or %s)" msgstr "(เช่น ผู้ใช้ หรือ %s)" #: js/gdm/loginDialog.js:1016 js/ui/components/networkAgent.js:259 #: js/ui/components/networkAgent.js:294 js/ui/components/networkAgent.js:328 msgid "Username" msgstr "ชื่อผู้ใช้" #: js/gdm/loginDialog.js:1082 msgid "Login Attempt Timed Out" msgstr "หมดเวลาการพยายามเข้าสู่ระบบ" #: js/gdm/loginDialog.js:1083 msgid "Login took too long, please try again" msgstr "การเข้าสู่ระบบใช้เวลานานเกินไป กรุณาลองใหม่อีกครั้ง" #: js/gdm/loginDialog.js:1432 msgid "Login Window" msgstr "หน้าต่างเข้าสู่ระบบ" #: js/gdm/util.js:498 msgid "Authentication error" msgstr "ยืนยันตัวบุคคลผิดพลาด" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:729 msgid "(or swipe finger across reader)" msgstr "(หรือใช้นิ้วลูบบนเครื่องอ่าน)" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:734 msgid "(or place finger on reader)" msgstr "(หรือวางนิ้วบนเครื่องอ่าน)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:91 msgctxt "search-result" msgid "Power Off" msgstr "ปิดเครื่อง" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:94 msgid "power off;poweroff;shutdown;halt;stop" msgstr "ปิดเครื่อง;ปิดระบบ;หยุด" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:99 msgctxt "search-result" msgid "Restart" msgstr "รีสตาร์ท" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:102 msgid "reboot;restart;" msgstr "รีบูต;รีสตาร์ท" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:107 msgctxt "search-result" msgid "Lock Screen" msgstr "ล็อกหน้าจอ" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:110 msgid "lock screen" msgstr "ล็อกหน้าจอ" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:115 msgctxt "search-result" msgid "Log Out" msgstr "ออกจากระบบ" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:118 msgid "logout;log out;sign off" msgstr "ออกจากระบบ;ลงชื่อออก" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:123 msgctxt "search-result" msgid "Suspend" msgstr "พักเครื่อง" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:126 msgid "suspend;sleep" msgstr "พักเครื่อง;สลีป" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:131 msgctxt "search-result" msgid "Switch User" msgstr "สลับผู้ใช้" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:134 msgid "switch user" msgstr "สลับผู้ใช้;เปลี่ยนผู้ใช้" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:141 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "ล็อกการหมุน;ปลดล็อกการหมุน;หน้าจอ;การหมุน" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:146 msgctxt "search-result" msgid "Take a Screenshot" msgstr "ถ่ายภาพหน้าจอ" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:149 msgid "screenshot;screencast;snip;capture;record" msgstr "ภาพหน้าจอ;บันทึกหน้าจอ;ถ่าย;เก็บภาพ;บันทึก" #: js/misc/systemActions.js:249 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "ปลดล็อกการหมุนหน้าจอ" #: js/misc/systemActions.js:250 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "ล็อกการหมุนหน้าจอ" #: js/misc/util.js:132 msgid "Command not found" msgstr "ไม่พบคำสั่ง" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:172 msgid "Could not parse command:" msgstr "ไม่สามารถแจงคำสั่ง:" #: js/misc/util.js:180 #, javascript-format msgid "Execution of “%s” failed:" msgstr "คำสั่ง “%s” ทำงานล้มเหลว:" #: js/misc/dateUtils.js:69 msgid "Just now" msgstr "เมื่อสักครู่" #: js/misc/dateUtils.js:72 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d นาทีก่อน" #: js/misc/dateUtils.js:79 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d ชั่วโมงก่อน" #: js/misc/dateUtils.js:85 js/ui/dateMenu.js:185 msgid "Yesterday" msgstr "เมื่อวาน" #: js/misc/dateUtils.js:88 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d วันก่อน" #: js/misc/dateUtils.js:95 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d สัปดาห์ก่อน" #: js/misc/dateUtils.js:102 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%d เดือนก่อน" #: js/misc/dateUtils.js:108 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "%d ปีก่อน" #. Translators: Time in 24h format #: js/misc/dateUtils.js:155 msgid "%H∶%M" msgstr "%H∶%M น." #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/dateUtils.js:161 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "เมื่อวาน %H∶%M น." #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/dateUtils.js:167 #, no-c-format msgid "%A, %H∶%M" msgstr "%A %H∶%M น." #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/dateUtils.js:173 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%-d %B %H∶%M น." #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/dateUtils.js:179 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%-d %B %EY %H∶%M น." #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/dateUtils.js:184 msgid "%l∶%M %p" msgstr "%l:%M น. %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/dateUtils.js:190 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "เมื่อวาน %l:%M น. %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/dateUtils.js:196 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A %l∶%M น. %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/dateUtils.js:202 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%-d %B %l:%M น. %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/dateUtils.js:208 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%-d %B %EY %l:%M น. %p" #: js/portalHelper/main.js:98 msgid "Your connection seems to be secure" msgstr "การเชื่อมต่อของคุณดูเหมือนจะปลอดภัย" #: js/portalHelper/main.js:104 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "การเชื่อมต่อของคุณกับระบบล็อกอินฮอตสปอตนี้ไม่ปลอดภัย รหัสผ่านหรือข้อมูลอื่น ๆ " "ที่คุณป้อนในหน้านี้อาจถูกบุคคลใกล้เคียงดูได้" #: js/portalHelper/main.js:115 msgid "Hotspot Login" msgstr "เข้าสู่ระบบฮอตสปอต" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:51 js/ui/inhibitShortcutsDialog.js:92 msgid "Deny" msgstr "ปฏิเสธ" #: js/ui/accessDialog.js:52 js/ui/inhibitShortcutsDialog.js:101 msgid "Allow" msgstr "อนุญาต" #: js/ui/appDisplay.js:1775 msgid "Unnamed Folder" msgstr "โฟลเดอร์ไม่มีชื่อ" #: js/ui/appFavorites.js:166 #, javascript-format msgid "%s has been pinned to the dash." msgstr "%s ถูกปักหมุดไว้ที่แดชแล้ว" #: js/ui/appFavorites.js:199 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "%s ถูกเลิกปักหมุดจากแดชแล้ว" #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:51 msgid "Open Windows" msgstr "หน้าต่างที่เปิดอยู่" #: js/ui/appMenu.js:59 msgid "New Window" msgstr "เปิดหน้าต่างใหม่" #: js/ui/appMenu.js:86 msgid "App Details" msgstr "รายละเอียดแอป" #: js/ui/appMenu.js:102 msgid "Quit" msgstr "ปิด" #: js/ui/appMenu.js:162 js/ui/dash.js:250 msgid "Unpin" msgstr "เลิกปักหมุด" #: js/ui/appMenu.js:163 msgid "Pin to Dash" msgstr "ปักหมุดไว้ที่แดช" #: js/ui/appMenu.js:180 msgid "Launch using Integrated Graphics Card" msgstr "เปิดตัวโดยใช้กราฟิกการ์ดในตัว" #: js/ui/appMenu.js:181 msgid "Launch using Discrete Graphics Card" msgstr "เปิดตัวโดยใช้การ์ดจอแยก" #: js/ui/audioDeviceSelection.js:46 msgid "Select Audio Device" msgstr "เลือกอุปกรณ์เสียง" #: js/ui/audioDeviceSelection.js:61 js/ui/status/volume.js:83 msgid "Sound Settings" msgstr "ตั้งค่าเสียง" #: js/ui/audioDeviceSelection.js:74 msgid "Headphones" msgstr "หูฟัง" #: js/ui/audioDeviceSelection.js:76 msgid "Headset" msgstr "ชุดหูฟัง" #: js/ui/audioDeviceSelection.js:78 js/ui/status/volume.js:358 msgid "Microphone" msgstr "ไมโครโฟน" #: js/ui/backgroundMenu.js:15 msgid "Change Background…" msgstr "เปลี่ยนภาพพื้นหลัง" #: js/ui/backgroundMenu.js:17 msgid "Display Settings" msgstr "ตั้งค่าการแสดงผล" #: js/ui/backgroundMenu.js:18 msgid "Settings" msgstr "ตั้งค่า" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:39 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:65 msgctxt "grid sunday" msgid "S" msgstr "อา" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:67 msgctxt "grid monday" msgid "M" msgstr "จ" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:69 msgctxt "grid tuesday" msgid "T" msgstr "อ" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:71 msgctxt "grid wednesday" msgid "W" msgstr "พ" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:73 msgctxt "grid thursday" msgid "T" msgstr "พฤ" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:75 msgctxt "grid friday" msgid "F" msgstr "ศ" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:77 msgctxt "grid saturday" msgid "S" msgstr "ส" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:428 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:438 msgid "%OB %Y" msgstr "%OB %EY" #: js/ui/calendar.js:500 msgid "Previous month" msgstr "เดือนที่แล้ว" #: js/ui/calendar.js:518 msgid "Next month" msgstr "เดือนต่อไป" #: js/ui/calendar.js:669 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:728 msgid "Week %V" msgstr "สัปดาห์ที่ %V" #: js/ui/calendar.js:920 msgid "No Notifications" msgstr "ไม่มีการแจ้งเตือน" #: js/ui/calendar.js:976 msgid "Do Not Disturb" msgstr "อย่ารบกวน" #: js/ui/calendar.js:997 msgid "Clear" msgstr "ล้าง" #: js/ui/calendar.js:1001 msgctxt "action" msgid "Clear all notifications" msgstr "ล้างการแจ้งเตือนทั้งหมด" #. Translators: %s is an application name #: js/ui/closeDialog.js:44 #, javascript-format msgid "“%s” is not responding." msgstr "“%s” ไม่ตอบสนอง" #: js/ui/closeDialog.js:45 msgid "" "You may choose to wait a short while for it to continue or force the app to " "quit entirely." msgstr "คุณสามารถเลือกรอสักครู่จนกว่าแอปจะกลับมาตอบสนองได้ หรือจะบังคับปิดแอปไปเลยก็ได้" #: js/ui/closeDialog.js:73 msgid "Force Quit" msgstr "บังคับให้ปิด" #: js/ui/closeDialog.js:78 msgid "Wait" msgstr "รอ" #: js/ui/components/automountManager.js:84 msgid "External drive connected" msgstr "เชื่อมต่อไดรฟ์ภายนอกแล้ว" #: js/ui/components/automountManager.js:96 msgid "External drive disconnected" msgstr "ไดรฟ์ภายนอกไม่ได้เชื่อมต่อแล้ว" #: js/ui/components/automountManager.js:210 msgid "Unable to unlock volume" msgstr "ไม่สามารถปลดล็อกระดับเสียงได้" #: js/ui/components/automountManager.js:211 msgid "The installed udisks version does not support the PIM setting" msgstr "เวอร์ชัน udisks ที่ติดตั้งไม่รองรับการตั้งค่า PIM" #: js/ui/components/autorunManager.js:200 #, javascript-format msgid "Open with %s" msgstr "เปิดด้วย %s" #: js/ui/components/networkAgent.js:97 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router." msgstr "หรือคุณสามารถเชื่อมต่อได้โดยกดปุ่ม “WPS” บนเราเตอร์ของคุณ" #: js/ui/components/networkAgent.js:109 js/ui/status/bluetooth.js:246 #: js/ui/status/network.js:360 js/ui/status/network.js:444 msgid "Connect" msgstr "เชื่อมต่อ" #: js/ui/components/networkAgent.js:224 msgid "Key" msgstr "กุญแจ" #: js/ui/components/networkAgent.js:275 js/ui/components/networkAgent.js:314 msgid "Private key password" msgstr "รหัสผ่านกุญแจส่วนตัว" #: js/ui/components/networkAgent.js:308 msgid "Identity" msgstr "ข้อมูลบุคคล" #: js/ui/components/networkAgent.js:334 msgid "Service" msgstr "บริการ" #: js/ui/components/networkAgent.js:372 js/ui/components/networkAgent.js:408 #: js/ui/components/networkAgent.js:745 js/ui/components/networkAgent.js:766 msgid "Authentication required" msgstr "ต้องยืนยันตัวบุคคล" #: js/ui/components/networkAgent.js:373 js/ui/components/networkAgent.js:746 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network " "“%s”." msgstr "ต้องป้อนรหัสผ่านหรือกุญแจสำหรับเข้ารหัสลับเพื่อจะเข้าใช้เครือข่ายไร้สาย “%s”" #: js/ui/components/networkAgent.js:377 js/ui/components/networkAgent.js:750 msgid "Wired 802.1X authentication" msgstr "การยืนยันตัวบุคคลกับเครือข่ายมีสาย 802.1X" #: js/ui/components/networkAgent.js:380 msgid "Network name" msgstr "ชื่อเครือข่าย" #: js/ui/components/networkAgent.js:388 js/ui/components/networkAgent.js:754 msgid "DSL authentication" msgstr "การยืนยันตัวบุคคลกับ DSL" #: js/ui/components/networkAgent.js:395 js/ui/components/networkAgent.js:759 msgid "PIN code required" msgstr "ต้องการรหัส PIN" #: js/ui/components/networkAgent.js:396 js/ui/components/networkAgent.js:760 msgid "PIN code is needed for the mobile broadband device" msgstr "ต้องการรหัส PIN ของอุปกรณ์บรอดแบนด์มือถือ" #: js/ui/components/networkAgent.js:398 msgid "PIN" msgstr "PIN" #: js/ui/components/networkAgent.js:409 js/ui/components/networkAgent.js:751 #: js/ui/components/networkAgent.js:755 js/ui/components/networkAgent.js:767 #: js/ui/components/networkAgent.js:771 #, javascript-format msgid "A password is required to connect to “%s”." msgstr "ต้องป้อนรหัสผ่านเพื่อเชื่อมต่อกับ “%s”" #: js/ui/components/networkAgent.js:770 msgid "VPN password" msgstr "รหัสผ่าน VPN" #: js/ui/components/polkitAgent.js:46 msgid "Authentication Required" msgstr "จำเป็นต้องยืนยันตัวบุคคล" #: js/ui/components/polkitAgent.js:86 msgid "Administrator" msgstr "ผู้ดูแลระบบ" #: js/ui/components/polkitAgent.js:151 msgid "Authenticate" msgstr "ยืนยันตัวบุคคล" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:265 js/ui/shellMountOperation.js:417 msgid "Sorry, that didn’t work. Please try again." msgstr "ขออภัย ยังไม่ผ่าน โปรดลองใหม่" #: js/ui/ctrlAltTab.js:25 js/ui/overviewControls.js:418 msgid "Windows" msgstr "หน้าต่าง" #: js/ui/dash.js:206 js/ui/dash.js:252 msgid "Show Apps" msgstr "แสดงแอปต่างๆ" #. Translators: this is the name of the dock/favorites area on #. the bottom of the overview #: js/ui/dash.js:410 msgid "Dash" msgstr "แดช" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:101 msgid "%B %-d %Y" msgstr "%-d %B %EY" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:108 msgid "%A %B %e %Y" msgstr "วัน%Aที่ %e %B %EY" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:174 msgctxt "calendar heading" msgid "%B %-d" msgstr "%-d %B" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:177 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%-d %B %EY" #: js/ui/dateMenu.js:183 msgid "Today" msgstr "วันนี้" #: js/ui/dateMenu.js:187 msgid "Tomorrow" msgstr "พรุ่งนี้" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:218 msgctxt "event list time" msgid "All Day" msgstr "ทั้งวัน" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:240 msgid "%m/%d" msgstr "%d/%m" #: js/ui/dateMenu.js:291 msgid "No Events" msgstr "ไม่มีเหตุการณ์ " #: js/ui/dateMenu.js:413 msgid "Add world clocks…" msgstr "เพิ่มนาฬิกาโลก…" #: js/ui/dateMenu.js:414 msgid "World Clocks" msgstr "นาฬิกาโลก" #: js/ui/dateMenu.js:704 msgid "Loading…" msgstr "กำลังโหลด…" #: js/ui/dateMenu.js:714 msgid "Go online for weather information" msgstr "เข้าระบบออนไลน์เพื่อรับข้อมูลสภาพอากาศ" #: js/ui/dateMenu.js:716 msgid "Weather information is currently unavailable" msgstr "ไม่มีข้อมูลสภาพอากาศ" #: js/ui/dateMenu.js:726 msgid "Weather" msgstr "สภาพอากาศ" #: js/ui/dateMenu.js:728 msgid "Select weather location…" msgstr "เลือกตำแหน่งสภาพอากาศ…" #: js/ui/endSessionDialog.js:48 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "ออกจากระบบในชื่อ %s" #: js/ui/endSessionDialog.js:49 msgctxt "title" msgid "Log Out" msgstr "ออกจากระบบ" #: js/ui/endSessionDialog.js:52 #, javascript-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "%s จะออกจากระบบโดยอัตโนมัติใน %d วินาที" #: js/ui/endSessionDialog.js:58 #, javascript-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "คุณจะออกจากระบบโดยอัตโนมัติใน %d วินาที" #: js/ui/endSessionDialog.js:65 msgctxt "button" msgid "Log Out" msgstr "ออกจากระบบ" #: js/ui/endSessionDialog.js:71 js/ui/status/system.js:176 msgctxt "title" msgid "Power Off" msgstr "ปิดเครื่อง" #: js/ui/endSessionDialog.js:72 msgctxt "title" msgid "Install Updates & Power Off" msgstr "ติดตั้งรายการอัปเดตและปิดเครื่อง" #: js/ui/endSessionDialog.js:75 #, javascript-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "ระบบจะปิดโดยอัตโนมัติใน %d วินาที" #: js/ui/endSessionDialog.js:79 js/ui/endSessionDialog.js:98 msgctxt "checkbox" msgid "Install pending software updates" msgstr "ติดตั้งรายการอัปเดตซอฟต์แวร์ที่ค้างอยู่" #: js/ui/endSessionDialog.js:83 msgctxt "button" msgid "Power Off" msgstr "ปิดเครื่อง" #: js/ui/endSessionDialog.js:90 msgctxt "title" msgid "Restart" msgstr "รีสตาร์ท" #: js/ui/endSessionDialog.js:91 msgctxt "title" msgid "Install Updates & Restart" msgstr "ติดตั้งรายการอัปเดตและรีสตาร์ท" #: js/ui/endSessionDialog.js:94 #, javascript-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "ระบบจะรีสตาร์ทโดยอัตโนมัติใน %d วินาที" #: js/ui/endSessionDialog.js:102 msgctxt "button" msgid "Restart" msgstr "รีสตาร์ท" #: js/ui/endSessionDialog.js:110 msgctxt "title" msgid "Restart & Install Updates" msgstr "รีสตาร์ทและติดตั้งรายการอัปเดต" #: js/ui/endSessionDialog.js:113 #, javascript-format msgid "The system will automatically restart and install updates in %d second." msgid_plural "" "The system will automatically restart and install updates in %d seconds." msgstr[0] "ระบบจะรีสตาร์ทและติดตั้งรายการอัปเดตโดยอัตโนมัติใน %d วินาที" #: js/ui/endSessionDialog.js:120 js/ui/endSessionDialog.js:141 msgctxt "button" msgid "Restart & Install" msgstr "รีสตาร์ทและติดตั้ง" #: js/ui/endSessionDialog.js:122 msgctxt "button" msgid "Install & Power Off" msgstr "ติดตั้งและปิดเครื่อง" #: js/ui/endSessionDialog.js:123 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "ปิดเครื่องหลังจากติดตั้งรายการอัปเดต" #: js/ui/endSessionDialog.js:130 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "รีสตาร์ทและติดตั้งรายการอัปเกรด" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:135 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "%s %s จะถูกติดตั้งหลังจากเปิดเครื่องใหม่ การติดตั้งรายการอัปเกรดอาจใช้เวลานาน: " "ตรวจสอบให้แน่ใจว่าคุณได้สำรองข้อมูลและเสียบปลั๊กคอมพิวเตอร์แล้ว" #: js/ui/endSessionDialog.js:284 msgid "Low battery power: please plug in before installing updates." msgstr "พลังงานแบตเตอรี่ต่ำ: โปรดเสียบปลั๊กก่อนติดตั้งรายการอัปเดต" #: js/ui/endSessionDialog.js:293 msgid "Some applications are busy or have unsaved work" msgstr "แอปพลิเคชันบางตัวไม่ว่างหรือมีงานที่ไม่ได้บันทึก" #: js/ui/endSessionDialog.js:298 msgid "Other users are logged in" msgstr "ผู้ใช้รายอื่นใช้ระบบอยู่" #: js/ui/endSessionDialog.js:468 msgctxt "button" msgid "Boot Options" msgstr "ตัวเลือกการบูต" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:673 #, javascript-format msgid "%s (remote)" msgstr "%s (ระยะไกล)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:676 #, javascript-format msgid "%s (console)" msgstr "%s (คอนโซล)" #: js/ui/extensionDownloader.js:282 msgid "Install" msgstr "ติดตั้ง" #: js/ui/extensionDownloader.js:288 msgid "Install Extension" msgstr "ติดตั้งส่วนขยาย" #: js/ui/extensionDownloader.js:289 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "จะดาวน์โหลดและติดตั้ง “%s” จาก extensions.gnome.org หรือไม่?" #: js/ui/extensionSystem.js:354 msgid "Extension Updates Available" msgstr "มีรายการอัปเดตส่วนขยาย" #: js/ui/extensionSystem.js:355 msgid "Extension updates are ready to be installed." msgstr "มีรายการอัปเดตส่วนขยายที่พร้อมให้ติดตั้งแล้ว" #: js/ui/inhibitShortcutsDialog.js:70 msgid "Allow inhibiting shortcuts" msgstr "อนุญาตให้ยับยั้งการใช้แป้นพิมพ์ลัด" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:73 #, javascript-format msgid "The app %s wants to inhibit shortcuts" msgstr "แอป %s ต้องการยับยั้งการใช้แป้นพิมพ์ลัด" #: js/ui/inhibitShortcutsDialog.js:74 msgid "An app wants to inhibit shortcuts" msgstr "แอปต้องการยับยั้งการใช้แป้นพิมพ์ลัด" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:81 #, javascript-format msgid "You can restore shortcuts by pressing %s." msgstr "คุณสามารถกู้คืนแป้นพิมพ์ลัดได้โดยการกด %s" #: js/ui/kbdA11yDialog.js:34 #, fuzzy msgid "Slow Keys Turned On" msgstr "พิมพ์แบบช้า" #: js/ui/kbdA11yDialog.js:35 #, fuzzy msgid "Slow Keys Turned Off" msgstr "พิมพ์แบบช้า" #: js/ui/kbdA11yDialog.js:36 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" #: js/ui/kbdA11yDialog.js:42 #, fuzzy msgid "Sticky Keys Turned On" msgstr "ค้างปุ่มกด" #: js/ui/kbdA11yDialog.js:43 #, fuzzy msgid "Sticky Keys Turned Off" msgstr "ค้างปุ่มกด" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" #: js/ui/kbdA11yDialog.js:47 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" #: js/ui/kbdA11yDialog.js:57 msgid "Leave On" msgstr "" #: js/ui/kbdA11yDialog.js:57 msgid "Turn On" msgstr "" #: js/ui/kbdA11yDialog.js:67 js/ui/status/network.js:455 msgid "Turn Off" msgstr "" #: js/ui/kbdA11yDialog.js:67 msgid "Leave Off" msgstr "" #: js/ui/keyboard.js:181 js/ui/status/keyboard.js:899 msgid "Keyboard Settings" msgstr "ตั้งค่าแป้นพิมพ์" #: js/ui/lookingGlass.js:724 msgid "No extensions installed" msgstr "ไม่มีส่วนขยายติดตั้งอยู่" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:785 #, javascript-format msgid "%s has not emitted any errors." msgstr "%s ไม่ได้ให้ข้อผิดพลาดใดออกมา" #: js/ui/lookingGlass.js:791 msgid "Hide Errors" msgstr "ซ่อนข้อผิดพลาด" #: js/ui/lookingGlass.js:795 js/ui/lookingGlass.js:872 msgid "Show Errors" msgstr "แสดงข้อผิดพลาด" #: js/ui/lookingGlass.js:804 msgid "Active" msgstr "ทำงาน" #: js/ui/lookingGlass.js:807 msgid "Inactive" msgstr "ไม่ทำงาน" #: js/ui/lookingGlass.js:809 msgid "Error" msgstr "ผิดพลาด" #: js/ui/lookingGlass.js:811 msgid "Out of date" msgstr "ตกรุ่น" #: js/ui/lookingGlass.js:813 msgid "Downloading" msgstr "กำลังดาวน์โหลด" #: js/ui/lookingGlass.js:815 msgid "Deactivating" msgstr "กำลังเลิกทำงาน" #: js/ui/lookingGlass.js:817 msgid "Activating" msgstr "กำลังทำงาน" #: js/ui/lookingGlass.js:850 msgid "View Source" msgstr "ดูซอร์ส" #: js/ui/lookingGlass.js:861 msgid "Web Page" msgstr "หน้าเว็บ" #: js/ui/main.js:279 msgid "System was put in unsafe mode" msgstr "" #: js/ui/main.js:280 msgid "Apps now have unrestricted access" msgstr "" #: js/ui/main.js:283 js/ui/overview.js:54 msgid "Undo" msgstr "เรียกคืน" #: js/ui/main.js:340 #, fuzzy msgid "Logged in as a privileged user" msgstr "เข้าระบบในนามผู้ใช้อื่น" #: js/ui/main.js:341 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" #: js/ui/main.js:389 msgid "Screen Lock disabled" msgstr "" #: js/ui/main.js:390 msgid "Screen Locking requires the GNOME display manager." msgstr "" #. Translators: this is the string displayed in the header when a message #. source doesn't have a name #: js/ui/messageList.js:400 msgid "Unknown App" msgstr "แอปไม่ทราบชื่อ" #: js/ui/messageTray.js:328 js/ui/messageTray.js:330 msgid "Notification sound" msgstr "เสียงแจ้งเตือน" #: js/ui/mpris.js:198 msgid "Unknown artist" msgstr "ไม่ทราบศิลปิน" #: js/ui/mpris.js:208 msgid "Unknown title" msgstr "ไม่ทราบชื่อ" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:342 msgid "Type to search" msgstr "พิมพ์เพื่อค้นหา" #: js/ui/overviewControls.js:406 msgid "Apps" msgstr "แอป" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:67 msgid "Overview" msgstr "ภาพรวม" #: js/ui/padOsd.js:100 msgid "New shortcut…" msgstr "ทางลัดใหม่…" #: js/ui/padOsd.js:153 msgid "App defined" msgstr "" #: js/ui/padOsd.js:154 msgid "Show on-screen help" msgstr "แสดงวิธีใช้บนหน้าจอ" #: js/ui/padOsd.js:155 msgid "Switch monitor" msgstr "สลับหน้าจอ" #: js/ui/padOsd.js:156 msgid "Assign keystroke" msgstr "กำหนดปุ่มลัด" #: js/ui/padOsd.js:225 msgid "Done" msgstr "เสร็จ" #: js/ui/padOsd.js:728 msgid "Edit…" msgstr "แก้ไข…" #: js/ui/padOsd.js:775 msgid "None" msgstr "ไม่มี" #: js/ui/padOsd.js:846 msgid "Press a button to configure" msgstr "กดปุ่มเพื่อตั้งค่า" #: js/ui/padOsd.js:847 msgid "Press Esc to exit" msgstr "กด Esc เพื่อออก" #: js/ui/padOsd.js:850 msgid "Press any key to exit" msgstr "กดแป้นใดก็ได้เพื่อออก" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:425 msgid "Activities" msgstr "กิจกรรม" #: js/ui/panel.js:506 msgctxt "System menu in the top bar" msgid "System" msgstr "ระบบ" #: js/ui/panel.js:680 msgid "Top Bar" msgstr "แถบด้านบน" #: js/ui/quickSettings.js:187 msgid "Open menu" msgstr "เปิดเมนู" #: js/ui/runDialog.js:63 msgid "Run a Command" msgstr "เรียกคำสั่ง" #: js/ui/runDialog.js:78 msgid "Press ESC to close" msgstr "กด ESC เพื่อปิด" #: js/ui/runDialog.js:243 msgid "Restart is not available on Wayland" msgstr "ไม่สามารถเริ่มใหม่ได้บน Wayland" #: js/ui/runDialog.js:248 msgid "Restarting…" msgstr "กำลังเริ่มใหม่…" #: js/ui/screenShield.js:235 msgid "GNOME needs to lock the screen" msgstr "GNOME จำเป็นต้องล็อกหน้าจอ" #: js/ui/screenShield.js:276 js/ui/screenShield.js:669 msgid "Unable to lock" msgstr "ไม่สามารถล็อกได้" #: js/ui/screenShield.js:277 js/ui/screenShield.js:670 msgid "Lock was blocked by an app" msgstr "การล็อกถูกบล็อกโดยแอป" #: js/ui/screenshot.js:1254 msgid "Selection" msgstr "ส่วนที่เลือก" #: js/ui/screenshot.js:1264 msgid "Area Selection" msgstr "เลือกพื้นที่" #: js/ui/screenshot.js:1269 msgid "Screen" msgstr "หน้าจอ" #: js/ui/screenshot.js:1279 msgid "Screen Selection" msgstr "เลือกหน้าจอ" #: js/ui/screenshot.js:1284 msgid "Window" msgstr "หน้าต่าง" #: js/ui/screenshot.js:1294 msgid "Window Selection" msgstr "เลือกหน้าต่าง" #. Translators: entry in the window right click menu. #: js/ui/screenshot.js:1319 js/ui/status/system.js:113 js/ui/windowMenu.js:30 msgid "Take Screenshot" msgstr "ถ่ายภาพหน้าต่าง" #: js/ui/screenshot.js:1335 msgid "Record Screen" msgstr "บันทึกหน้าจอ" #. Translators: since this string refers to an action, #. it needs to be phrased as a verb. #: js/ui/screenshot.js:1352 msgid "Capture" msgstr "จับภาพ" #: js/ui/screenshot.js:1374 msgid "Show Pointer" msgstr "แสดงตัวชี้" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1998 msgid "Screencasts" msgstr "บันทึกหน้าจอ" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast from 07-17-2013 10:00:46 PM" #: js/ui/screenshot.js:2003 #, no-c-format msgid "Screencast from %d %t" msgstr "บันทึกหน้าจอจาก %d %t" #. Translators: notification title. #: js/ui/screenshot.js:2049 msgid "Screencast recorded" msgstr "บันทึกหน้าจอแล้ว" #. Translators: notification title. #: js/ui/screenshot.js:2062 msgid "Screencast failed to start" msgstr "ไม่สามารถเริ่มการบันทึกหน้าจอได้" #. Translators: notification title. #: js/ui/screenshot.js:2068 msgid "Screencast ended: Out of disk space" msgstr "สิ้นสุดการบันทึกหน้าจอ: หมดพื้นที่บนดิสก์" #. We can encourage user to try again on service crashes since the #. recorder will auto-blocklist the pipeline that crashed. #. Translators: notification title. #: js/ui/screenshot.js:2074 msgid "Screencast ended unexpectedly, please try again" msgstr "การบันทึกหน้าจอสิ้นสุดอย่างไม่คาดคิด กรุณาลองอีกครั้ง" #. Translators: notification title. #: js/ui/screenshot.js:2077 msgid "Screencast ended unexpectedly" msgstr "การบันทึกหน้าจอสิ้นสุดอย่างไม่คาดคิด" #. Translators: notification source name. #: js/ui/screenshot.js:2087 js/ui/screenshot.js:2329 msgid "Screenshot" msgstr "ภาพหน้าจอ" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:2094 msgid "Click here to view the video." msgstr "คลิกที่นี่เพื่อดูวิดีโอ" #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:2102 js/ui/screenshot.js:2345 msgid "Show in Files" msgstr "แสดงในไฟล์" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2289 #, javascript-format msgid "Screenshot from %s" msgstr "ภาพหน้าจอจาก %s" #. Translators: notification title. #: js/ui/screenshot.js:2335 msgid "Screenshot captured" msgstr "จับภาพหน้าจอแล้ว" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2337 msgid "You can paste the image from the clipboard." msgstr "คุณสามารถวางรูปภาพจากคลิปบอร์ดได้" #: js/ui/screenshot.js:2393 js/ui/screenshot.js:2557 msgid "Screenshot taken" msgstr "ถ่ายภาพหน้าจอแล้ว" #: js/ui/search.js:831 msgid "Searching…" msgstr "กำลังค้นหา…" #: js/ui/search.js:833 msgid "No results." msgstr "ไม่พบผลลัพธ์" #: js/ui/search.js:964 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "อีก %d" #: js/ui/searchController.js:89 #: subprojects/extensions-app/data/ui/extensions-window.ui:73 msgid "Search" msgstr "ค้นหา" #: js/ui/shellEntry.js:23 msgid "Copy" msgstr "คัดลอก" #: js/ui/shellEntry.js:28 msgid "Paste" msgstr "วาง" #: js/ui/shellEntry.js:80 msgid "Show Text" msgstr "แสดงข้อความ" #: js/ui/shellEntry.js:82 msgid "Hide Text" msgstr "ซ่อนข้อความ" #: js/ui/shellEntry.js:176 msgid "Caps lock is on." msgstr "Caps lock เปิดอยู่" #: js/ui/shellMountOperation.js:288 msgid "Hidden Volume" msgstr "" #: js/ui/shellMountOperation.js:291 msgid "Windows System Volume" msgstr "" #: js/ui/shellMountOperation.js:294 msgid "Uses Keyfiles" msgstr "ใช้ไฟล์กุญแจ" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:302 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead." msgstr "" #: js/ui/shellMountOperation.js:306 msgid "" "You need an external utility like Disks to unlock a volume that uses " "keyfiles." msgstr "" #: js/ui/shellMountOperation.js:314 msgid "PIM Number" msgstr "หมายเลข PIM" #: js/ui/shellMountOperation.js:373 msgid "Remember Password" msgstr "จำรหัสผ่าน" #: js/ui/shellMountOperation.js:388 msgid "Unlock" msgstr "ปลดล็อก" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:402 #, javascript-format msgid "Open %s" msgstr "เปิด “%s”" #: js/ui/shellMountOperation.js:438 msgid "The PIM must be a number or empty." msgstr "PIM จะต้องเป็นตัวเลขหรือว่างเปล่า" #: js/ui/status/accessibility.js:36 msgid "Accessibility" msgstr "สิ่งอำนวยความสะดวก" #: js/ui/status/accessibility.js:46 msgid "High Contrast" msgstr "สีตัดกัน" #: js/ui/status/accessibility.js:49 msgid "Zoom" msgstr "ซูม" #: js/ui/status/accessibility.js:56 msgid "Screen Reader" msgstr "โปรแกรมอ่านหน้าจอ" #: js/ui/status/accessibility.js:60 msgid "Screen Keyboard" msgstr "แป้นพิมพ์บนจอ" #: js/ui/status/accessibility.js:64 msgid "Visual Alerts" msgstr "แจ้งเตือนด้วยภาพ" #: js/ui/status/accessibility.js:68 msgid "Sticky Keys" msgstr "ค้างปุ่มกด" #: js/ui/status/accessibility.js:72 msgid "Slow Keys" msgstr "พิมพ์แบบช้า" #: js/ui/status/accessibility.js:76 msgid "Bounce Keys" msgstr "ป้องกันการกดแป้นรัว" #: js/ui/status/accessibility.js:80 msgid "Mouse Keys" msgstr "บังคับเมาส์ด้วยแป้น" #: js/ui/status/accessibility.js:85 msgid "Accessibility Settings" msgstr "ตั้งค่าสิ่งอำนวยความสะดวก" #: js/ui/status/accessibility.js:142 msgid "Large Text" msgstr "อักษรขนาดใหญ่" #: js/ui/status/autoRotate.js:14 msgid "Auto Rotate" msgstr "หมุนอัตโนมัติ" #: js/ui/status/backgroundApps.js:156 msgctxt "title" msgid "Background Apps" msgstr "แอปในเบื้องหลัง" #: js/ui/status/backgroundApps.js:171 msgid "Apps known to be running without a window" msgstr "แอปที่ทำงานโดยไม่มีหน้าต่าง" #: js/ui/status/backgroundApps.js:182 msgid "App Settings" msgstr "ตั้งค่าแอป" #: js/ui/status/backgroundApps.js:239 msgid "No Background Apps" msgstr "ไม่มีแอปในเบื้องหลัง" #: js/ui/status/backgroundApps.js:241 #, javascript-format msgid "%d Background App" msgid_plural "%d Background Apps" msgstr[0] "มีแอปในเบื้องหลัง %d แอป" #: js/ui/status/backlight.js:40 msgid "Keyboard Brightness" msgstr "ความสว่างแป้นพิมพ์" #: js/ui/status/backlight.js:80 msgid "Off" msgstr "ปิด" #: js/ui/status/backlight.js:81 msgid "Low" msgstr "ต่ำ" #: js/ui/status/backlight.js:82 msgid "High" msgstr "สูง" #: js/ui/status/backlight.js:148 js/ui/status/keyboard.js:881 msgid "Keyboard" msgstr "แป้นพิมพ์" #: js/ui/status/bluetooth.js:246 js/ui/status/network.js:360 msgid "Disconnect" msgstr "ตัดการเชื่อมต่อ" #: js/ui/status/bluetooth.js:263 js/ui/status/bluetooth.js:265 msgid "Bluetooth" msgstr "บลูทูธ" #: js/ui/status/bluetooth.js:288 js/ui/status/network.js:1909 msgid "Bluetooth Settings" msgstr "ตั้งค่าบลูทูธ" #: js/ui/status/bluetooth.js:335 msgid "No available or connected devices" msgstr "ไม่มีอุปกรณ์ที่ใช้งานได้หรือที่เชื่อมต่ออยู่" #: js/ui/status/bluetooth.js:336 msgid "Turn on Bluetooth to connect to devices" msgstr "เปิดบลูทูธเพื่อเชื่อมต่อกับอุปกรณ์ต่างๆ" #. Translators: This is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:390 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "เชื่อมต่ออยู่ %d" #: js/ui/status/brightness.js:34 msgid "Brightness" msgstr "ความสว่าง" #: js/ui/status/darkMode.js:12 msgid "Dark Style" msgstr "โหมดมืด" #: js/ui/status/dwellClick.js:15 msgid "Single Click" msgstr "" #: js/ui/status/dwellClick.js:20 msgid "Double Click" msgstr "" #: js/ui/status/dwellClick.js:25 msgid "Drag" msgstr "" #: js/ui/status/dwellClick.js:30 msgid "Secondary Click" msgstr "" #: js/ui/status/dwellClick.js:39 msgid "Dwell Click" msgstr "" #: js/ui/status/keyboard.js:898 msgid "Show Keyboard Layout" msgstr "แสดงผังแป้นพิมพ์" #: js/ui/status/location.js:339 msgid "Allow location access" msgstr "อนุญาตให้เข้าถึงตำแหน่งที่ตั้ง" #. Translators: %s is an application name #: js/ui/status/location.js:341 #, javascript-format msgid "The app %s wants to access your location" msgstr "แอป %s ต้องการเข้าถึงตำแหน่งที่ตั้งของคุณ" #: js/ui/status/location.js:351 msgid "Location access can be changed at any time from the privacy settings." msgstr "สามารถเปลี่ยนการเข้าถึงตำแหน่งที่ตั้งได้ตลอดเวลาจากการตั้งค่าความเป็นส่วนตัว" #: js/ui/status/location.js:359 msgid "Deny Access" msgstr "ปฏิเสธการเข้าถึง" #: js/ui/status/location.js:364 msgid "Grant Access" msgstr "อนุญาตการเข้าถึง" #: js/ui/status/network.js:62 msgid "" msgstr "<ไม่ทราบ>" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:354 #, javascript-format msgid "Disconnect %s" msgstr "ตัดการเชื่อมต่อกับ %s" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:356 #, javascript-format msgid "Connect to %s" msgstr "เชื่อมต่อกับ %s" #: js/ui/status/network.js:1059 msgid "Secure" msgstr "ปลอดภัย" #: js/ui/status/network.js:1059 msgid "Not secure" msgstr "ไม่ปลอดภัย" #: js/ui/status/network.js:1060 #, javascript-format msgid "Signal strength %s%%" msgstr "ความแรงสัญญาณ %s%%" #. translators: The first placeholder is the network name, the second and indication whether it is secure, and the last the signal strength indication #: js/ui/status/network.js:1062 #, javascript-format msgid "%s, %s, %s" msgstr "%s, %s, %s" #. Translators: %s is a network identifier #: js/ui/status/network.js:1164 #, javascript-format msgid "%s Hotspot" msgstr "ฮอตสปอต %s" #: js/ui/status/network.js:1435 #, javascript-format msgid "%d connected" msgid_plural "%d connected" msgstr[0] "เชื่อมต่ออยู่ %d" #: js/ui/status/network.js:1533 js/ui/status/network.js:1549 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1534 msgid "VPN Settings" msgstr "ตั้งค่า VPN" #: js/ui/status/network.js:1794 msgid "Wi–Fi" msgstr "Wi–Fi" #: js/ui/status/network.js:1796 msgid "All Networks" msgstr "เครือข่ายทั้งหมด" #: js/ui/status/network.js:1893 msgid "Wired Connections" msgstr "การเชื่อมต่อแบบมีสาย" #: js/ui/status/network.js:1894 msgid "Wired Settings" msgstr "ตั้งค่าการเชื่อมต่อแบบมีสาย" #: js/ui/status/network.js:1908 msgid "Bluetooth Tethers" msgstr "" #. Translators: "Tether" from "Bluetooth Tether" #: js/ui/status/network.js:1915 msgid "Tether" msgstr "" #: js/ui/status/network.js:1928 msgid "Mobile Connections" msgstr "การเชื่อมต่อมือถือ" #: js/ui/status/network.js:1930 msgid "Mobile Broadband Settings" msgstr "ตั้งค่าบรอดแบนด์บนมือถือ" #. Translators: "Mobile" from "Mobile Broadband" #: js/ui/status/network.js:1939 msgid "Mobile" msgstr "" #: js/ui/status/network.js:2044 msgid "Connection failed" msgstr "เชื่อมต่อไม่สำเร็จ" #: js/ui/status/network.js:2045 msgid "Activation of network connection failed" msgstr "เปิดใช้ช่องเชื่อมต่อไม่สำเร็จ" #: js/ui/status/nightLight.js:21 msgid "Night Light" msgstr "แสงกลางคืน" #: js/ui/status/powerProfiles.js:21 msgctxt "Power profile" msgid "Performance" msgstr "ประสิทธิภาพ" #: js/ui/status/powerProfiles.js:26 msgctxt "Power profile" msgid "Balanced" msgstr "สมดุล" #: js/ui/status/powerProfiles.js:31 msgctxt "Power profile" msgid "Power Saver" msgstr "ประหยัดพลังงาน" #: js/ui/status/powerProfiles.js:41 js/ui/status/powerProfiles.js:71 msgid "Power Mode" msgstr "โหมดพลังงาน" #: js/ui/status/powerProfiles.js:73 msgid "Power Settings" msgstr "ตั้งค่าพลังงาน" #: js/ui/status/remoteAccess.js:76 msgid "Stop Screencast" msgstr "หยุดบันทึกภาพหน้าจอ" #: js/ui/status/remoteAccess.js:146 msgid "Stop Screen Sharing" msgstr "หยุดแชร์หน้าจอ" #: js/ui/status/rfkill.js:101 msgid "Airplane Mode" msgstr "โหมดเครื่องบิน" #: js/ui/status/system.js:170 msgid "Power Off Menu" msgstr "เมนูปิดเครื่อง" #: js/ui/status/system.js:178 msgid "Suspend" msgstr "พักเครื่อง" #: js/ui/status/system.js:183 msgid "Restart…" msgstr "รีสตาร์ท…" #: js/ui/status/system.js:188 msgid "Power Off…" msgstr "ปิดเครื่อง…" #: js/ui/status/system.js:195 #: subprojects/extensions-app/data/ui/extensions-window.ui:124 msgid "Log Out…" msgstr "ออกจากระบบ…" #: js/ui/status/system.js:200 msgid "Switch User…" msgstr "สลับผู้ใช้…" #: js/ui/status/system.js:244 msgctxt "action" msgid "Lock Screen" msgstr "ล็อกหน้าจอ" #: js/ui/status/thunderbolt.js:310 msgid "Unknown Thunderbolt device" msgstr "" #: js/ui/status/thunderbolt.js:311 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" #: js/ui/status/thunderbolt.js:314 msgid "Unauthorized Thunderbolt device" msgstr "" #: js/ui/status/thunderbolt.js:315 msgid "" "New device has been detected and needs to be authorized by an administrator." msgstr "" #: js/ui/status/thunderbolt.js:321 msgid "Thunderbolt authorization error" msgstr "" #: js/ui/status/thunderbolt.js:322 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "" #: js/ui/status/volume.js:220 msgid "Volume changed" msgstr "เปลี่ยนความดังเสียงแล้ว" #: js/ui/status/volume.js:233 msgid "Unmute" msgstr "เลิกเงียบ" #: js/ui/status/volume.js:233 msgid "Mute" msgstr "เงียบ" #: js/ui/status/volume.js:288 msgid "Volume" msgstr "ความดังเสียง" #: js/ui/status/volume.js:304 msgid "Sound Output" msgstr "ช่องเสียงออก" #: js/ui/status/volume.js:376 msgid "Sound Input" msgstr "ช่องเสียงเข้า" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:22 msgid "Mirror" msgstr "แสดงเหมือนกัน" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:31 msgid "Join Displays" msgstr "เชื่อมจอแสดงผล" #. Translators: this is for using only external displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:41 msgid "External Only" msgstr "ภายนอกเท่านั้น" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:49 msgid "Built-in Only" msgstr "ในตัวเท่านั้น" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:380 msgid "%A %B %-d" msgstr "วัน%Aที่ %-d %B" #: js/ui/unlockDialog.js:386 msgid "Swipe up to unlock" msgstr "รูดขึ้นเพื่อปลดล็อก" #: js/ui/unlockDialog.js:387 msgid "Click or press a key to unlock" msgstr "คลิกหรือกดแป้นเพื่อปลดล็อก" #: js/ui/unlockDialog.js:570 msgid "Unlock Window" msgstr "หน้าต่างปลดล็อก" #: js/ui/unlockDialog.js:579 msgid "Log in as another user" msgstr "เข้าสู่ระบบในนามผู้ใช้อื่น" #: js/ui/welcomeDialog.js:49 #, javascript-format msgid "GNOME %s" msgstr "GNOME %s" #: js/ui/welcomeDialog.js:53 #, javascript-format msgid "Welcome to %s" msgstr "ยินดีต้อนรับสู่ %s" #: js/ui/welcomeDialog.js:54 msgid "If you want to learn your way around, check out the tour." msgstr "หากคุณต้องการเรียนรู้วิธีใช้งาน โปรดดูทัวร์" #: js/ui/welcomeDialog.js:63 msgid "Skip" msgstr "ข้าม" #: js/ui/welcomeDialog.js:68 msgid "Take Tour" msgstr "เริ่มทัวร์" #: js/ui/windowAttentionHandler.js:20 #, javascript-format msgid "“%s” is ready" msgstr "“%s” พร้อมแล้ว" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:69 msgid "Keep these display settings?" msgstr "บันทึกการตั้งค่าการแสดงผลเหล่านี้ไว้หรือไม่?" #: js/ui/windowManager.js:79 msgid "Revert Settings" msgstr "คืนค่าเดิม" #: js/ui/windowManager.js:84 msgid "Keep Changes" msgstr "เก็บเปลี่ยนแปลงไว้" #: js/ui/windowManager.js:104 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "จะคืนค่าการตั้งค่าใน %d วินาที" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:496 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:42 msgid "Hide" msgstr "ซ่อน" #: js/ui/windowMenu.js:49 msgid "Restore" msgstr "คืนขนาด" #: js/ui/windowMenu.js:53 msgid "Maximize" msgstr "ขยายแผ่" #: js/ui/windowMenu.js:60 msgid "Move" msgstr "ย้าย" #: js/ui/windowMenu.js:80 msgid "Resize" msgstr "ปรับขนาด" #: js/ui/windowMenu.js:101 msgid "Move Titlebar Onscreen" msgstr "ย้ายแถบชื่อบนจอ" #: js/ui/windowMenu.js:106 msgid "Always on Top" msgstr "แสดงอยู่บนสุด" #: js/ui/windowMenu.js:125 msgid "Always on Visible Workspace" msgstr "แสดงบนพื้นที่ทำงานเสมอ" #: js/ui/windowMenu.js:139 msgid "Move to Workspace Left" msgstr "ย้ายไปยังพื้นที่ทำงานด้านซ้าย" #: js/ui/windowMenu.js:145 msgid "Move to Workspace Right" msgstr "ย้ายไปยังพื้นที่ทำงานด้านขวา" #: js/ui/windowMenu.js:151 msgid "Move to Workspace Up" msgstr "ย้ายไปยังพื้นที่ทำงานด้านบน" #: js/ui/windowMenu.js:157 msgid "Move to Workspace Down" msgstr "ย้ายไปยังพื้นที่ทำงานด้านล่าง" #: js/ui/windowMenu.js:175 msgid "Move to Monitor Up" msgstr "ย้ายไปยังจอภาพด้านบน" #: js/ui/windowMenu.js:184 msgid "Move to Monitor Down" msgstr "ย้ายไปยังจอภาพด้านล่าง" #: js/ui/windowMenu.js:193 msgid "Move to Monitor Left" msgstr "ย้ายไปยังจอภาพด้านซ้าย" #: js/ui/windowMenu.js:202 msgid "Move to Monitor Right" msgstr "ย้ายไปยังจอภาพด้านขวา" #: js/ui/windowMenu.js:210 msgid "Close" msgstr "ปิด" #: src/main.c:529 subprojects/extensions-tool/src/main.c:336 msgid "Print version" msgstr "แสดงเลขรุ่น" #: src/main.c:535 msgid "Mode used by GDM for login screen" msgstr "โหมดสำหรับให้ GDM เรียกใช้ในหน้าจอเข้าระบบ" #: src/main.c:541 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "ใช้โหมดเฉพาะ เช่น “gdm” สำหรับหน้าจอเข้าระบบ" #: src/main.c:547 msgid "List possible modes" msgstr "แสดงโหมดทั้งหมดที่เป็นไปได้" #: src/main.c:553 msgid "Force animations to be enabled" msgstr "" #: src/shell-app.c:252 msgctxt "program" msgid "Unknown" msgstr "ไม่ทราบชื่อ" #: src/shell-app.c:503 #, c-format msgid "Failed to launch “%s”" msgstr "เรียก “%s” ไม่สำเร็จ" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match." msgstr "รหัสผ่านไม่ตรงกัน" #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "รหัสผ่านว่างเปล่าไม่ได้" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "กล่องโต้ตอบยืนยันตัวบุคคลถูกผู้ใช้ปิดทิ้ง" #: src/st/st-icon-theme.c:1865 #, c-format msgid "Icon '%s' not present in theme %s" msgstr "ไอคอน '%s' ไม่มีอยู่ในชุดตกแต่ง %s" #: src/st/st-icon-theme.c:3454 src/st/st-icon-theme.c:3757 msgid "Failed to load icon" msgstr "โหลดไอคอนไม่สำเร็จ" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 msgid "Manage your GNOME Extensions" msgstr "จัดการส่วนขยายต่างๆ ของ GNOME ของคุณ" #. developer_name tag deprecated with Appstream 1.0 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:19 msgid "The GNOME Project" msgstr "The GNOME Project" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:51 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:81 #, fuzzy msgid "Main Window" msgstr "หน้าต่างเข้าระบบ" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:85 #, fuzzy msgid "Available Updates" msgstr "อยู่" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:89 #, fuzzy msgid "Search View" msgstr "ค้นหา" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "ตั้งค่าส่วนขยายต่างๆ ของเชลล์ GNOME" #: subprojects/extensions-app/js/extensionManager.js:237 #, javascript-format msgid "" "The installed version of this extension (%s) is incompatible with the " "current version of GNOME (%s). The extension has been disabled." msgstr "" #: subprojects/extensions-app/js/extensionManager.js:238 #, javascript-format msgid "" "The installed version of this extension is incompatible with the current " "version of GNOME (%s). The extension has been disabled." msgstr "" #: subprojects/extensions-app/js/extensionManager.js:242 msgid "" "An error has occurred in this extension. This could cause issues elsewhere " "in the system. It is recommended to turn the extension off until the error " "is resolved." msgstr "" #. translators: Details for an extension error #: subprojects/extensions-app/js/extensionManager.js:248 msgid "Error details:" msgstr "" #: subprojects/extensions-app/js/extensionRow.js:82 #, fuzzy, javascript-format msgid "Version %s" msgstr "ส่วนขยาย" #: subprojects/extensions-app/js/extensionsWindow.js:113 #, javascript-format msgid "Remove “%s”?" msgstr "" #: subprojects/extensions-app/js/extensionsWindow.js:114 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "" #: subprojects/extensions-app/js/extensionsWindow.js:117 msgid "_Cancel" msgstr "_ยกเลิก" #: subprojects/extensions-app/js/extensionsWindow.js:118 msgid "_Remove" msgstr "_ลบ" #: subprojects/extensions-app/js/extensionsWindow.js:158 msgid "translator-credits" msgstr "" "Sira Nokyoongtong \n" "Theppitak Karoonboonyanan \n" "Atirut Wattanamongkol \n" "Aefgh Threenine " #: subprojects/extensions-app/js/extensionsWindow.js:203 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "" #: subprojects/extensions-app/data/ui/extension-row.ui:22 #, fuzzy msgid "Error Details" msgstr "รายละเอียดของแอป" #: subprojects/extensions-app/data/ui/extension-row.ui:62 #, fuzzy msgid "Updates Details" msgstr "รายละเอียดของแอป" #: subprojects/extensions-app/data/ui/extension-row.ui:72 msgid "" "A new version of this extension is ready and will be loaded on next login." msgstr "" #: subprojects/extensions-app/data/ui/extension-row.ui:104 #, fuzzy msgid "Extension Details" msgstr "แสดงเลขรุ่น" #: subprojects/extensions-app/data/ui/extension-row.ui:192 msgid "_Website" msgstr "" #: subprojects/extensions-app/data/ui/extension-row.ui:219 #, fuzzy msgid "_Settings" msgstr "ตั้งค่าเมาส์" #: subprojects/extensions-app/data/ui/extension-row.ui:246 #, fuzzy msgid "_Remove…" msgstr "ลบ" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 #, fuzzy msgid "Keyboard Shortcuts" msgstr "ตั้งค่าแป้นพิมพ์" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 #, fuzzy msgid "About Extensions" msgstr "ส่วนขยาย" #: subprojects/extensions-app/data/ui/extensions-window.ui:64 msgid "Main Menu" msgstr "" #: subprojects/extensions-app/data/ui/extensions-window.ui:106 #, fuzzy msgid "Search extensions" msgstr "ส่วนขยาย" #: subprojects/extensions-app/data/ui/extensions-window.ui:134 #, fuzzy msgid "_Extensions" msgstr "ส่วนขยาย" #: subprojects/extensions-app/data/ui/extensions-window.ui:139 #, fuzzy msgid "More Information" msgstr "ข้อมูลระบบ" #: subprojects/extensions-app/data/ui/extensions-window.ui:151 msgid "" "Extensions can cause performance and stability issues. It is recommended to " "disable all extensions if you experience problems with your system." msgstr "" #: subprojects/extensions-app/data/ui/extensions-window.ui:178 #, fuzzy msgid "User Extensions" msgstr "ส่วนขยาย" #: subprojects/extensions-app/data/ui/extensions-window.ui:198 #, fuzzy msgid "System Extensions" msgstr "ส่วนขยาย" #: subprojects/extensions-app/data/ui/extensions-window.ui:233 #, fuzzy msgid "Search Results" msgstr "ค้นหา" #: subprojects/extensions-app/data/ui/extensions-window.ui:252 #, fuzzy msgid "No Results Found" msgstr "ไม่พบรายการ" #: subprojects/extensions-app/data/ui/extensions-window.ui:253 #, fuzzy msgid "Try a different search." msgstr "พิมพ์เพื่อค้นหา" #: subprojects/extensions-app/data/ui/extensions-window.ui:264 msgid "No Installed Extensions" msgstr "" #: subprojects/extensions-app/data/ui/extensions-window.ui:265 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" #: subprojects/extensions-app/data/ui/extensions-window.ui:276 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "r" #: subprojects/extensions-app/data/ui/help-overlay.ui:9 msgctxt "shortcut window" msgid "General" msgstr "" #: subprojects/extensions-app/data/ui/help-overlay.ui:12 #, fuzzy msgctxt "shortcut window" msgid "Open Menu" msgstr "เปิดปฏิทิน" #: subprojects/extensions-app/data/ui/help-overlay.ui:18 #, fuzzy msgctxt "shortcut window" msgid "Toggle Search" msgstr "ค้นหา" #: subprojects/extensions-app/data/ui/help-overlay.ui:24 #, fuzzy msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "แสดงข้อผิดพลาด" #: subprojects/extensions-app/data/ui/help-overlay.ui:30 #, fuzzy msgctxt "shortcut window" msgid "Quit" msgstr "ออก" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:284 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "" #: subprojects/extensions-tool/src/command-create.c:376 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" #: subprojects/extensions-tool/src/command-create.c:382 #: subprojects/extensions-tool/src/main.c:243 msgid "Name" msgstr "" #: subprojects/extensions-tool/src/command-create.c:396 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" #: subprojects/extensions-tool/src/command-create.c:402 #: subprojects/extensions-tool/src/main.c:246 msgid "Description" msgstr "" #: subprojects/extensions-tool/src/command-create.c:416 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" #: subprojects/extensions-tool/src/command-create.c:443 msgid "Choose one of the available templates:\n" msgstr "" #: subprojects/extensions-tool/src/command-create.c:457 msgid "Template" msgstr "" #: subprojects/extensions-tool/src/command-create.c:515 msgid "The unique identifier of the new extension" msgstr "" #: subprojects/extensions-tool/src/command-create.c:518 msgid "NAME" msgstr "" #: subprojects/extensions-tool/src/command-create.c:519 msgid "The user-visible name of the new extension" msgstr "" #: subprojects/extensions-tool/src/command-create.c:521 msgid "DESCRIPTION" msgstr "" #: subprojects/extensions-tool/src/command-create.c:523 msgid "A short description of what the extension does" msgstr "" #: subprojects/extensions-tool/src/command-create.c:525 #: subprojects/extensions-tool/src/command-pack.c:455 msgid "DOMAIN" msgstr "" #: subprojects/extensions-tool/src/command-create.c:527 msgid "The gettext domain used by the extension" msgstr "" #: subprojects/extensions-tool/src/command-create.c:529 #: subprojects/extensions-tool/src/command-pack.c:448 msgid "SCHEMA" msgstr "" #: subprojects/extensions-tool/src/command-create.c:531 msgid "The GSettings schema used by the extension" msgstr "" #: subprojects/extensions-tool/src/command-create.c:534 msgid "TEMPLATE" msgstr "" #: subprojects/extensions-tool/src/command-create.c:535 msgid "The template to use for the new extension" msgstr "" #: subprojects/extensions-tool/src/command-create.c:538 msgid "Include prefs.js template" msgstr "" #: subprojects/extensions-tool/src/command-create.c:544 msgid "Enter extension information interactively" msgstr "" #: subprojects/extensions-tool/src/command-create.c:552 msgid "Create a new extension" msgstr "" #: subprojects/extensions-tool/src/command-create.c:570 #: subprojects/extensions-tool/src/command-list.c:190 #, fuzzy msgid "Unknown arguments" msgstr "ไม่ทราบสาเหตุ" #: subprojects/extensions-tool/src/command-create.c:595 msgid "UUID, name and description are required" msgstr "" #: subprojects/extensions-tool/src/command-disable.c:62 #: subprojects/extensions-tool/src/command-enable.c:62 #, c-format msgid "Extension “%s” does not exist\n" msgstr "" #: subprojects/extensions-tool/src/command-disable.c:98 msgid "Disable an extension" msgstr "" #: subprojects/extensions-tool/src/command-disable.c:116 #: subprojects/extensions-tool/src/command-enable.c:116 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "" #: subprojects/extensions-tool/src/command-disable.c:121 #: subprojects/extensions-tool/src/command-enable.c:121 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "" #: subprojects/extensions-tool/src/command-enable.c:98 #, fuzzy msgid "Enable an extension" msgstr "เปิดใช้งานเครือข่าย" #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:66 #: subprojects/extensions-tool/src/main.c:150 msgid "Failed to connect to GNOME Shell\n" msgstr "" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:159 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "" #: subprojects/extensions-tool/src/command-info.c:85 #, fuzzy msgid "Show extensions info" msgstr "ไม่มีส่วนขยายติดตั้งอยู่" #: subprojects/extensions-tool/src/command-install.c:190 msgid "Overwrite an existing extension" msgstr "" #: subprojects/extensions-tool/src/command-install.c:192 msgid "EXTENSION_BUNDLE" msgstr "" #: subprojects/extensions-tool/src/command-install.c:201 msgid "Install an extension bundle" msgstr "" #: subprojects/extensions-tool/src/command-install.c:219 #, fuzzy msgid "No extension bundle specified" msgstr "ไม่มีส่วนขยายติดตั้งอยู่" #: subprojects/extensions-tool/src/command-install.c:225 msgid "More than one extension bundle specified" msgstr "" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show user-installed extensions" msgstr "" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show system-installed extensions" msgstr "" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Show enabled extensions" msgstr "" #: subprojects/extensions-tool/src/command-list.c:149 msgid "Show disabled extensions" msgstr "" #: subprojects/extensions-tool/src/command-list.c:152 #, fuzzy msgid "Show extensions in active state" msgstr "ไม่มีส่วนขยายติดตั้งอยู่" #: subprojects/extensions-tool/src/command-list.c:155 #, fuzzy msgid "Show extensions in inactive state" msgstr "ไม่มีส่วนขยายติดตั้งอยู่" #: subprojects/extensions-tool/src/command-list.c:158 #, fuzzy msgid "Show extensions with preferences" msgstr "ปรับแต่งส่วนขยายของเชลล์ GNOME" #: subprojects/extensions-tool/src/command-list.c:161 #, fuzzy msgid "Show extensions with updates" msgstr "ไม่มีส่วนขยายติดตั้งอยู่" #: subprojects/extensions-tool/src/command-list.c:164 #, fuzzy msgid "Print extension details" msgstr "แสดงเลขรุ่น" #: subprojects/extensions-tool/src/command-list.c:172 msgid "List installed extensions" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:444 msgid "FILE" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:445 msgid "Additional source to include in the bundle" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:449 msgid "A GSettings schema that should be included" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:451 #: subprojects/extensions-tool/src/command-pack.c:462 msgid "DIRECTORY" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:453 msgid "The directory where translations are found" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:457 msgid "The gettext domain to use for translations" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:460 msgid "Overwrite an existing pack" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:464 msgid "The directory where the pack should be created" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "SOURCE_DIRECTORY" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:475 msgid "Create an extension bundle" msgstr "" #: subprojects/extensions-tool/src/command-pack.c:495 msgid "More than one source directory specified" msgstr "" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "" #: subprojects/extensions-tool/src/command-prefs.c:87 #, fuzzy msgid "Opens extension preferences" msgstr "ปรับแต่งส่วนขยายของเชลล์ GNOME" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, fuzzy, c-format msgid "Failed to uninstall “%s”\n" msgstr "เลิกเมานท์ '%s' ไม่สำเร็จ" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "" #: subprojects/extensions-tool/src/main.c:76 msgid "Do not print error messages" msgstr "" #: subprojects/extensions-tool/src/main.c:249 msgid "Path" msgstr "" #: subprojects/extensions-tool/src/main.c:252 msgid "URL" msgstr "" #: subprojects/extensions-tool/src/main.c:255 msgid "Original author" msgstr "" #: subprojects/extensions-tool/src/main.c:261 #: subprojects/extensions-tool/src/main.c:263 #: subprojects/extensions-tool/src/main.c:265 #, fuzzy msgid "Version" msgstr "ส่วนขยาย" #: subprojects/extensions-tool/src/main.c:268 msgid "Enabled" msgstr "เปิดใช้งาน" #: subprojects/extensions-tool/src/main.c:268 msgid "Yes" msgstr "" #: subprojects/extensions-tool/src/main.c:268 msgid "No" msgstr "" #: subprojects/extensions-tool/src/main.c:271 msgid "State" msgstr "" #: subprojects/extensions-tool/src/main.c:309 msgid "“version” takes no arguments" msgstr "" #: subprojects/extensions-tool/src/main.c:311 #: subprojects/extensions-tool/src/main.c:331 msgid "Usage:" msgstr "" #: subprojects/extensions-tool/src/main.c:314 msgid "Print version information and exit." msgstr "" #: subprojects/extensions-tool/src/main.c:329 #: subprojects/extensions-tool/src/main.c:332 msgid "COMMAND" msgstr "" #: subprojects/extensions-tool/src/main.c:332 msgid "[ARGS…]" msgstr "" #: subprojects/extensions-tool/src/main.c:334 msgid "Commands:" msgstr "" #: subprojects/extensions-tool/src/main.c:335 #, fuzzy msgid "Print help" msgstr "แสดงเลขรุ่น" #: subprojects/extensions-tool/src/main.c:337 #, fuzzy msgid "Enable extension" msgstr "ส่วนขยาย" #: subprojects/extensions-tool/src/main.c:338 #, fuzzy msgid "Disable extension" msgstr "ส่วนขยาย" #: subprojects/extensions-tool/src/main.c:339 #, fuzzy msgid "Reset extension" msgstr "ส่วนขยาย" #: subprojects/extensions-tool/src/main.c:340 msgid "Uninstall extension" msgstr "" #: subprojects/extensions-tool/src/main.c:341 #, fuzzy msgid "List extensions" msgstr "ส่วนขยาย" #: subprojects/extensions-tool/src/main.c:342 #: subprojects/extensions-tool/src/main.c:343 #, fuzzy msgid "Show extension info" msgstr "ไม่มีส่วนขยายติดตั้งอยู่" #: subprojects/extensions-tool/src/main.c:344 #, fuzzy msgid "Open extension preferences" msgstr "ปรับแต่งส่วนขยายของเชลล์ GNOME" #: subprojects/extensions-tool/src/main.c:345 #, fuzzy msgid "Create extension" msgstr "ส่วนขยาย" #: subprojects/extensions-tool/src/main.c:346 #, fuzzy msgid "Package extension" msgstr "ส่วนขยาย" #: subprojects/extensions-tool/src/main.c:347 msgid "Install extension bundle" msgstr "" #: subprojects/extensions-tool/src/main.c:349 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:4 #, fuzzy msgid "Quick Settings Item" msgstr "ตั้งค่าเสียง" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:5 #, fuzzy msgid "Add an item to quick settings" msgstr "ปุ่มลัดสำหรับเปิดเมนูโปรแกรม" #. translators: #. * The device has been disabled #: subprojects/gvc/gvc-mixer-control.c:1872 msgid "Disabled" msgstr "ปิดใช้" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1879 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "ช่องเสียงออก %u ช่อง" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1889 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "ช่องเสียงเข้า %u ช่อง" #: subprojects/gvc/gvc-mixer-control.c:2872 msgid "System Sounds" msgstr "เสียงของระบบ" #: js/gdm/loginDialog.js:454 msgid "" "Force stopping will quit any running apps and processes, and could result in " "data loss" msgstr "การบังคับหยุดจะปิดแอปและโปรเซสที่ทำงานอยู่ และอาจส่งผลให้ข้อมูลสูญหายได้" #. Translators: %s is an application name #: js/ui/closeDialog.js:42 #, javascript-format msgid "“%s” Is Not Responding" msgstr "“%s” ไม่ตอบสนอง" #: js/ui/closeDialog.js:43 msgid "" "You may choose to wait a short while for it to continue or force the app to " "quit entirely" msgstr "คุณสามารถเลือกรอสักครู่จนกว่าแอปจะกลับมาตอบสนองได้ หรือจะบังคับปิดแอปไปเลยก็ได้" #: js/ui/components/networkAgent.js:95 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router" msgstr "หรือคุณสามารถเชื่อมต่อได้โดยกดปุ่ม “WPS” บนเราเตอร์ของคุณ" #: js/ui/components/networkAgent.js:371 js/ui/components/networkAgent.js:744 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network “%s”" msgstr "ต้องป้อนรหัสผ่านหรือกุญแจสำหรับเข้ารหัสลับเพื่อจะเข้าใช้เครือข่ายไร้สาย “%s”" #: js/ui/components/networkAgent.js:407 js/ui/components/networkAgent.js:749 #: js/ui/components/networkAgent.js:753 js/ui/components/networkAgent.js:765 #: js/ui/components/networkAgent.js:769 #, javascript-format msgid "A password is required to connect to “%s”" msgstr "ต้องป้อนรหัสผ่านเพื่อเชื่อมต่อกับ “%s”" #: js/ui/dateMenu.js:411 msgid "Add World Clocks…" msgstr "เพิ่มนาฬิกาโลก…" #: js/ui/dateMenu.js:712 msgid "Go Online for Weather Information" msgstr "เข้าระบบออนไลน์เพื่อรับข้อมูลสภาพอากาศ" #: js/ui/dateMenu.js:714 msgid "Weather Information Unavailable" msgstr "ไม่มีข้อมูลสภาพอากาศ" #: js/ui/dateMenu.js:726 msgid "Select Weather Location…" msgstr "เลือกตำแหน่งสภาพอากาศ…" #: js/ui/endSessionDialog.js:51 #, javascript-format msgid "%s will be logged out automatically in %d second" msgid_plural "%s will be logged out automatically in %d seconds" msgstr[0] "%s จะออกจากระบบโดยอัตโนมัติใน %d วินาที" #: js/ui/endSessionDialog.js:57 #, javascript-format msgid "You will be logged out automatically in %d second" msgid_plural "You will be logged out automatically in %d seconds" msgstr[0] "คุณจะออกจากระบบโดยอัตโนมัติใน %d วินาที" #: js/ui/endSessionDialog.js:74 #, javascript-format msgid "The system will power off automatically in %d second" msgid_plural "The system will power off automatically in %d seconds" msgstr[0] "ระบบจะปิดโดยอัตโนมัติใน %d วินาที" #: js/ui/endSessionDialog.js:93 #, javascript-format msgid "The system will restart automatically in %d second" msgid_plural "The system will restart automatically in %d seconds" msgstr[0] "ระบบจะรีสตาร์ทโดยอัตโนมัติใน %d วินาที" #: js/ui/endSessionDialog.js:112 #, javascript-format msgid "The system will automatically restart and install updates in %d second" msgid_plural "" "The system will automatically restart and install updates in %d seconds" msgstr[0] "ระบบจะรีสตาร์ทและติดตั้งรายการอัปเดตโดยอัตโนมัติใน %d วินาที" #: js/ui/endSessionDialog.js:283 msgid "Low battery power: please plug in before installing updates" msgstr "พลังงานแบตเตอรี่ต่ำ: โปรดเสียบปลั๊กก่อนติดตั้งรายการอัปเดต" #: js/ui/extensionSystem.js:353 msgid "Extension updates are ready to be installed" msgstr "มีรายการอัปเดตส่วนขยายที่พร้อมให้ติดตั้งแล้ว" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:81 #, javascript-format msgid "You can restore shortcuts by pressing %s" msgstr "คุณสามารถกู้คืนแป้นพิมพ์ลัดได้โดยการกด %s" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:788 #, javascript-format msgid "%s has not emitted any errors" msgstr "%s ไม่ได้ให้ข้อผิดพลาดใดออกมา" #: js/ui/main.js:388 msgid "Screen Locking requires the GNOME display manager" msgstr "" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast From 07-17-2013 10:00:46 PM" #: js/ui/screenshot.js:2001 #, no-c-format msgid "Screencast From %d %t" msgstr "บันทึกหน้าจอจาก %d %t" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2287 #, javascript-format msgid "Screenshot From %s" msgstr "ภาพหน้าจอจาก %s" #: js/ui/search.js:831 msgid "No results" msgstr "ไม่พบผลลัพธ์" #: js/ui/shellEntry.js:174 msgid "Caps lock is on" msgstr "Caps lock เปิดอยู่" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:300 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead" msgstr "" #: js/ui/shellMountOperation.js:304 msgid "" "You need an external utility like Disks to unlock a volume that uses " "keyfiles" msgstr "" #: js/ui/shellMountOperation.js:436 msgid "The PIM must be a number or empty" msgstr "PIM จะต้องเป็นตัวเลขหรือว่างเปล่า" #: js/ui/status/location.js:349 msgid "Location access can be changed at any time from the privacy settings" msgstr "สามารถเปลี่ยนการเข้าถึงตำแหน่งที่ตั้งได้ตลอดเวลาจากการตั้งค่าความเป็นส่วนตัว" #: js/ui/status/thunderbolt.js:313 msgid "" "New device has been detected and needs to be authorized by an administrator" msgstr "" #: js/ui/welcomeDialog.js:52 msgid "If you want to learn your way around, check out the tour" msgstr "" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match" msgstr "รหัสผ่านไม่ตรงกัน" #: subprojects/extensions-app/data/ui/extensions-window.ui:253 #, fuzzy msgid "Try a different search" msgstr "พิมพ์เพื่อค้นหา" #, javascript-format #~ msgid "“%s” connected" #~ msgstr "เชื่อมต่อ “%s” แล้ว" #~ msgid "Disk can now be used" #~ msgstr "ตอนนี้สามารถใช้ดิสก์ได้แล้ว" #~ msgid "Sign Into Wi–Fi Network" #~ msgstr "ลงชื่อเข้าใช้เครือข่าย Wi-Fi" #~ msgid "Network Manager" #~ msgstr "โปรแกรมจัดการเครือข่าย" #, javascript-format #~ msgid "%s is now known as %s" #~ msgstr "%s เปลี่ยนชื่อเป็น %s" #~ msgid "System Information" #~ msgstr "ข้อมูลระบบ" #, fuzzy #~| msgid "Disabled" #~ msgid "Disabling" #~ msgstr "ปิดใช้" #, fuzzy #~| msgid "Enabled" #~ msgid "Enabling" #~ msgstr "เปิดใช้งาน" #, fuzzy #~| msgid "Matches" #~ msgid "No Matches" #~ msgstr "ตรงกัน" #~ msgid "Show the message tray" #~ msgstr "แสดงถาดข้อความ" #~ msgid "Whether to collect stats about applications usage" #~ msgstr "กำหนดว่าจะเก็บสถิติการใช้งานโปรแกรมต่างๆ หรือไม่" #~ msgid "" #~ "The shell normally monitors active applications in order to present the " #~ "most used ones (e.g. in launchers). While this data will be kept private, " #~ "you may want to disable this for privacy reasons. Please note that doing " #~ "so won't remove already saved data." #~ msgstr "" #~ "โดยปกติ เชลล์ GNOME จะเฝ้าสังเกตการเรียกใช้งานโปรแกรมต่างๆ " #~ "เพื่อนำเสนอโปรแกรมที่ใช้บ่อย (เช่น ในตัวเรียกโปรแกรม) " #~ "แม้ข้อมูลนี้จะถูกเก็บไว้ไม่มีการเผยแพร่อยู่แล้ว " #~ "แต่คุณอาจต้องการปิดการทำงานส่วนนี้ด้วยเหตุผลเรื่องความเป็นส่วนตัว " #~ "แต่อย่าลืมว่าการปิดดังกล่าวไม่ได้เป็นการลบข้อมูลที่บันทึกไว้ก่อนหน้านี้" #~ msgid "" #~ "Internally used to store the last IM presence explicitly set by the user. " #~ "The value here is from the TpConnectionPresenceType enumeration." #~ msgstr "" #~ "ใช้เป็นการภายในเพื่อเก็บสถานะอยู่/ไม่อยู่ล่าสุดของ IM ที่ผู้ใช้เปลี่ยนเองโดยตรง ค่านี้เป็นค่าจาก " #~ "enumeration ชนิด TpConnectionPresenceType" #~ msgid "" #~ "Internally used to store the last session presence status for the user. " #~ "The value here is from the GsmPresenceStatus enumeration." #~ msgstr "" #~ "ใช้เป็นการภายในเพื่อเก็บสถานะอยู่/ไม่อยู่ของผู้ใช้ในวาระล่าสุด ค่านี้เป็นค่าจาก enumeration " #~ "ชนิด GsmPresenceStatus" # See http://en.wikipedia.org/wiki/ISO_week_date #~ msgid "Show the week date in the calendar" #~ msgstr "แสดงวันที่แบบสัปดาห์ในปฏิทิน" # See http://en.wikipedia.org/wiki/ISO_week_date #~ msgid "If true, display the ISO week date in the calendar." #~ msgstr "ถ้าเลือก จะแสดงวันที่แบบสัปดาห์ของ ISO ในปฏิทิน" #~ msgid "Keybinding to toggle the screen recorder" #~ msgstr "ปุ่มลัดสำหรับสลับเครื่องมืออัดภาพถ่ายทอดหน้าจอ" #~ msgid "Keybinding to start/stop the builtin screen recorder." #~ msgstr "ปุ่มลัดสำหรับเริ่ม/หยุดเครื่องมืออัดภาพถ่ายทอดหน้าจอที่มีมากับเชลล์" #~ msgid "Which keyboard to use" #~ msgstr "ใช้แป้นพิมพ์ชนิดไหน" #~ msgid "The type of keyboard to use." #~ msgstr "ชนิดของแป้นพิมพ์ที่ใช้" #~ msgid "Framerate used for recording screencasts." #~ msgstr "อัตราเฟรมที่จะใช้อัดภาพถ่ายทอดหน้าจอ" #~ msgid "" #~ "The framerate of the resulting screencast recordered by GNOME Shell's " #~ "screencast recorder in frames-per-second." #~ msgstr "" #~ "อัตราเฟรมของภาพถ่ายทอดหน้าจอที่จะอัดด้วยเครื่องมืออัดภาพถ่ายทอดหน้าจอของเชลล์ GNOME " #~ "ในหน่วยเฟรมต่อวินาที" #~ msgid "The gstreamer pipeline used to encode the screencast" #~ msgstr "ไปป์ไลน์ของ GStreamer ที่จะใช้ลงรหัสภาพถ่ายทอดหน้าจอ" #, no-c-format #~ msgid "" #~ "Sets the GStreamer pipeline used to encode recordings. It follows the " #~ "syntax used for gst-launch. The pipeline should have an unconnected sink " #~ "pad where the recorded video is recorded. It will normally have a " #~ "unconnected source pad; output from that pad will be written into the " #~ "output file. However the pipeline can also take care of its own output - " #~ "this might be used to send the output to an icecast server via shout2send " #~ "or similar. When unset or set to an empty value, the default pipeline " #~ "will be used. This is currently 'vp8enc min_quantizer=13 max_quantizer=13 " #~ "cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux' and records to " #~ "WEBM using the VP8 codec. %T is used as a placeholder for a guess at the " #~ "optimal thread count on the system." #~ msgstr "" #~ "กำหนดไปป์ไลน์ของ GStreamer ที่จะใช้ในการลงรหัสวีดิทัศน์ที่อัด โดยกำหนดในรูปแบบที่ gst-" #~ "launch ใช้ ไปป์ไลน์นี้ควรจะมี sink pad ปลายเปิดซึ่งจะรับสัญญาณวีดิทัศน์ที่อัด และโดยปกติก็จะมี " #~ "source pad ปลายเปิดด้วย ซึ่งจะใช้ปล่อยข้อมูลที่จะเขียนลงแฟ้มปลายทาง อย่างไรก็ดี " #~ "ไปป์ไลน์สามารถจัดการข้อมูลออกของตัวเองได้ด้วย ซึ่งอาจจะใช้ในการส่งข้อมูลออกไปยังเซิร์ฟเวอร์ " #~ "icecast ผ่าน shout2send หรืออะไรทำนองนี้ ถ้าค่านี้ไม่ได้กำหนดไว้ " #~ "หรือกำหนดเป็นค่าว่างเปล่า ก็จะใช้ไปป์ไลน์ปริยาย ซึ่งขณะนี้ืคือ 'vp8enc min_quantizer=13 " #~ "max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! " #~ "webmmux' และจะอัดวีดิทัศน์เป็น WEBM โดยใช้ตัวอ่าน/ลงรหัส VP8 ตัวแปร %T " #~ "จะถูกแทนที่ด้วยค่าคาดเดาของจำนวนเธรดที่เหมาะสมของระบบ" #~ msgid "File extension used for storing the screencast" #~ msgstr "นามสกุลแฟ้มที่จะใช้เก็บภาพถ่ายทอดหน้าจอ" #~ msgid "" #~ "The filename for recorded screencasts will be a unique filename based on " #~ "the current date, and use this extension. It should be changed when " #~ "recording to a different container format." #~ msgstr "" #~ "ชื่อแฟ้มของภาพถ่ายทอดหน้าจอที่อัดจะเป็นชื่อที่ไม่ซ้ำ โดยสร้างจากวันเวลาปัจจุบัน " #~ "แล้วตามด้วยนามสกุลนี้ ซึ่งควรเปลี่ยนให้ตรงตามฟอร์แมตที่อัด" #, c-format #~ msgid "There was an error loading the preferences dialog for %s:" #~ msgstr "เกิดข้อผิดพลาดขณะโหลดกล่องโต้ตอบปรับแต่งสำหรับ %s:" #~ msgid "Select an extension to configure using the combobox above." #~ msgstr "เลือกส่วนขยายที่จะตั้งค่าโดยใช้กล่องคอมโบด้านบน" #~ msgid "Session..." #~ msgstr "วาระ..." #~ msgctxt "title" #~ msgid "Sign In" #~ msgstr "เข้าระบบ" #~ msgctxt "button" #~ msgid "Sign In" #~ msgstr "เข้าระบบ" #~ msgid "All" #~ msgstr "ทั้งหมด" #~ msgid "APPLICATIONS" #~ msgstr "โปรแกรม" #~ msgid "SETTINGS" #~ msgstr "ค่าตั้ง" #~ msgid "Remove from Favorites" #~ msgstr "ลบออกจากรายการโปรด" #~ msgid "Add to Favorites" #~ msgstr "เพิ่มเข้าในรายการโปรด" #~ msgctxt "event list time" #~ msgid "%H:%M" #~ msgstr "%H:%M" #~ msgctxt "list sunday" #~ msgid "Su" #~ msgstr "อา." #~ msgctxt "list monday" #~ msgid "M" #~ msgstr "จ." #~ msgctxt "list tuesday" #~ msgid "T" #~ msgstr "อ." #~ msgctxt "list wednesday" #~ msgid "W" #~ msgstr "พ." #~ msgctxt "list thursday" #~ msgid "Th" #~ msgstr "พฤ." #~ msgctxt "list friday" #~ msgid "F" #~ msgstr "ศ." #~ msgctxt "list saturday" #~ msgid "S" #~ msgstr "ส." #~ msgid "Nothing Scheduled" #~ msgstr "ไม่มีกำหนดการ" #~ msgid "This week" #~ msgstr "สัปดาห์นี้" #~ msgid "Next week" #~ msgstr "สัปดาห์หน้า" #~ msgid "Removable Devices" #~ msgstr "อุปกรณ์ถอดเสียบ" #~ msgid "Eject" #~ msgstr "เอาสื่อออก" #~ msgid "Password:" #~ msgstr "รหัสผ่าน:" #~ msgid "Type again:" #~ msgstr "ป้อนซ้ำอีกครั้ง:" #~ msgid "Password: " #~ msgstr "รหัสผ่าน: " #~ msgid "Authentication required by wireless network" #~ msgstr "เครือข่ายไร้สายต้องการการยืนยันตัวบุคคล" #~ msgid "Mobile broadband network password" #~ msgstr "รหัสผ่านของเครือข่ายบรอดแบนด์มือถือ" #~ msgid "Invitation" #~ msgstr "คำเชิญ" #~ msgid "Call" #~ msgstr "สายเรียก" #~ msgid "File Transfer" #~ msgstr "การถ่ายโอนแฟ้ม" #~ msgid "Subscription request" #~ msgstr "การขอสมัคร" #~ msgid "Connection error" #~ msgstr "ข้อผิดพลาดในการเชื่อมต่อ" #, no-c-format #~ msgid "Sent at %X on %A" #~ msgstr "ส่งเมื่อวัน%A เวลา %H:%M น." #, no-c-format #~ msgid "Sent on %A, %B %d" #~ msgstr "ส่งเมื่อวัน%Aที่ %d %B" #, no-c-format #~ msgid "Sent on %A, %B %d, %Y" #~ msgstr "ส่งเมื่อวัน%Aที่ %d %B %Ey" #, c-format #~ msgid "Invitation to %s" #~ msgstr "คำเชิญให้เข้าห้อง %s" #, c-format #~ msgid "%s is inviting you to join %s" #~ msgstr "%s เชิญคุณเข้าร่วมสนทนาที่ห้อง %s" #~ msgid "Decline" #~ msgstr "ปฏิเสธ" #~ msgid "Accept" #~ msgstr "ตอบรับ" #, c-format #~ msgid "Video call from %s" #~ msgstr "สายเรียกแบบวีดิทัศน์จาก %s" #, c-format #~ msgid "Call from %s" #~ msgstr "สายเรียกจาก %s" #~ msgid "Reject" #~ msgstr "ปฏิเสธ" #~ msgid "Answer" #~ msgstr "ตอบรับ" #, c-format #~ msgid "%s is sending you %s" #~ msgstr "%s กำลังส่ง %s ให้คุณ" #, c-format #~ msgid "%s would like permission to see when you are online" #~ msgstr "%s ขออนุญาตติดต่อกับคุณแบบออนไลน์" #~ msgid "Authentication failed" #~ msgstr "การยืนยันตัวบุคคลไม่ผ่าน" #~ msgid "Encryption error" #~ msgstr "ข้อผิดพลาดเกี่ยวกับการเข้ารหัสลับ" #~ msgid "Certificate not provided" #~ msgstr "ไม่มีใบรับรอง" #~ msgid "Certificate untrusted" #~ msgstr "ไม่เชื่อถือใบรับรอง" #~ msgid "Certificate expired" #~ msgstr "ใบรับรองหมดอายุแล้ว" #~ msgid "Certificate not activated" #~ msgstr "ใบรับรองยังไม่มีการเริ่มใช้" #~ msgid "Certificate hostname mismatch" #~ msgstr "ชื่อโฮสต์ในใบรับรองไม่ตรงกัน" #~ msgid "Certificate fingerprint mismatch" #~ msgstr "ลายนิ้วมือในใบรับรองไม่ตรงกัน" #~ msgid "Certificate self-signed" #~ msgstr "ใบรับรองเซ็นรับรองตัวเอง" #~ msgid "Status is set to offline" #~ msgstr "สถานะเปลี่ยนเป็นออฟไลน์" #~ msgid "Certificate is invalid" #~ msgstr "ใบรับรองไม่ถูกต้อง" #~ msgid "Connection has been refused" #~ msgstr "การเชื่อมต่อถูกปฏิเสธ" #~ msgid "Connection can't be established" #~ msgstr "เชื่อมต่อไม่สำเร็จ" #~ msgid "Connection has been lost" #~ msgstr "การเชื่อมต่อถูกตัดขาด" #~ msgid "This account is already connected to the server" #~ msgstr "บัญชีนี้ได้เชื่อมต่อกับเซิร์ฟเวอร์อยู่ก่อนแล้ว" #~ msgid "" #~ "Connection has been replaced by a new connection using the same resource" #~ msgstr "การเชื่อมต่อถูกแทนที่ด้วยการเชื่อมต่อใหม่โดยใช้ทรัพยากรเดียวกัน" #~ msgid "The account already exists on the server" #~ msgstr "บัญชีนี้มีอยู่แล้วที่เซิร์ฟเวอร์" #~ msgid "Server is currently too busy to handle the connection" #~ msgstr "เซิร์ฟเวอร์ไม่ว่างพอที่จะจัดการการเชื่อมต่อ" #~ msgid "Certificate has been revoked" #~ msgstr "ใบรับรองถูกเพิกถอนไปแล้ว" #~ msgid "" #~ "Certificate uses an insecure cipher algorithm or is cryptographically weak" #~ msgstr "ใบรับรองใช้อัลกอริทึมการเข้ารหัสลับที่ไม่ปลอดภัยหรืออ่อนเกินไป" #~ msgid "" #~ "The length of the server certificate, or the depth of the server " #~ "certificate chain, exceed the limits imposed by the cryptography library" #~ msgstr "" #~ "ความยาวของใบรับรอง หรือความลึกของห่วงโซ่ใบรับรองของเซิร์ฟเวอร์ " #~ "มีขนาดเกินขีดจำกัดที่ไลบรารีระบบเข้ารหัสลับกำหนดไว้" #~ msgid "Internal error" #~ msgstr "ข้อผิดพลาดภายใน" #, c-format #~ msgid "Connection to %s failed" #~ msgstr "เชื่อมต่อไปยัง %s ไม่สำเร็จ" #~ msgid "Edit account" #~ msgstr "แก้ไขบัญชี" #~ msgid "Date and Time Settings" #~ msgstr "ตั้งค่าวันที่และเวลา" #~ msgid "Click Log Out to quit these applications and log out of the system." #~ msgstr "คลิก \"ออกจากระบบ\" เพื่อปิดโปรแกรมเหล่านี้ และออกจากระบบ" #~ msgid "Logging out of the system." #~ msgstr "กำลังออกจากระบบ" #~ msgid "Click Power Off to quit these applications and power off the system." #~ msgstr "คลิก \"ปิดเครื่อง\" เพื่อออกจากโปรแกรมเหล่านี้ และปิดเครื่อง" #~ msgid "Powering off the system." #~ msgstr "กำลังปิดระบบ" #~ msgid "Click Restart to quit these applications and restart the system." #~ msgstr "คลิก \"เปิดเครื่องใหม่\" เพื่อออกจากโปรแกรมเหล่านี้ และเปิดเครื่องใหม่" #~ msgid "Restarting the system." #~ msgstr "กำลังเปิดเครื่องใหม่" #~ msgid "tray" #~ msgstr "ถาด" #~ msgid "Open" #~ msgstr "เปิด" #~ msgid "Message Tray" #~ msgstr "ถาดข้อความ" #~ msgid "toggle-switch-us" #~ msgstr "toggle-switch-intl" #~ msgid "Please enter a command:" #~ msgstr "โปรดป้อนคำสั่ง:" #, c-format #~ msgid "%d new message" #~ msgid_plural "%d new messages" #~ msgstr[0] "ข้อความใหม่ %d ข้อความ" #~ msgid "Universal Access Settings" #~ msgstr "ตั้งค่าการเข้าถึงหลากหลาย" #~ msgid "Visibility" #~ msgstr "ความปรากฏเห็น" #~ msgid "Set up a New Device..." #~ msgstr "ตั้งค่าอุปกรณ์ชิ้นใหม่..." #~ msgid "hardware disabled" #~ msgstr "ฮาร์ดแวร์ปิดการใช้งานอยู่" #~ msgid "disconnecting..." #~ msgstr "กำลังตัดการเชื่อมต่อ..." #~ msgid "connecting..." #~ msgstr "กำลังเชื่อมต่อ..." #~ msgid "Browse Files..." #~ msgstr "เรียกดูแฟ้ม..." #~ msgid "Error browsing device" #~ msgstr "เกิดข้อผิดพลาดขณะเรียกดูแฟ้มในอุปกรณ์" #, c-format #~ msgid "The requested device cannot be browsed, error is '%s'" #~ msgstr "อุปกรณ์ที่ร้องขอไม่สามารถเรียกดูแฟ้มได้ ข้อผิดพลาดคือ '%s'" #, c-format #~ msgid "Authorization request from %s" #~ msgstr "มีการขออนุญาตจาก %s" #, c-format #~ msgid "Device %s wants access to the service '%s'" #~ msgstr "อุปกรณ์ %s ต้องการเข้าถึงบริการ '%s'" #~ msgid "Grant this time only" #~ msgstr "อนุญาตครั้งนี้เท่านั้น" #, c-format #~ msgid "Pairing confirmation for %s" #~ msgstr "การยืนยันการจับคู่สำหรับ %s" #, c-format #~ msgid "Device %s wants to pair with this computer" #~ msgstr "อุปกรณ์ %s ต้องการจับคู่กับคอมพิวเตอร์เครื่องนี้" #, c-format #~ msgid "Please confirm whether the PIN '%06d' matches the one on the device." #~ msgstr "กรุณายืนยันว่ารหัส PIN '%06d' ตรงกันกับของอุปกรณ์ดังกล่าวหรือไม่" #~ msgid "Does not match" #~ msgstr "ไม่ตรงกัน" #, c-format #~ msgid "Pairing request for %s" #~ msgstr "คำร้องขอจับคู่สำหรับ %s" #~ msgid "Please enter the PIN mentioned on the device." #~ msgstr "กรุณาป้อนรหัส PIN ที่ระบุบนอุปกรณ์ดังกล่าว" #~ msgid "OK" #~ msgstr "ตกลง" #~ msgid "Region and Language Settings" #~ msgstr "ตั้งค่าท้องที่และภาษา" #~ msgid "Volume, network, battery" #~ msgstr "ความดังเสียง, เครือข่าย, แบตเตอรี่" #~ msgid "disabled" #~ msgstr "ปิดใช้" #~ msgid "unmanaged" #~ msgstr "ไม่ถูกจัดการ" #~ msgid "firmware missing" #~ msgstr "ขาดเฟิร์มแวร์" #~ msgid "cable unplugged" #~ msgstr "ไม่ได้เสียบสายเคเบิล" #~ msgid "unavailable" #~ msgstr "ไม่สามารถใช้งานได้" #~ msgid "connection failed" #~ msgstr "เชื่อมต่อไม่สำเร็จ" #~ msgid "More..." #~ msgstr "เพิ่มเติม..." #~ msgid "Connected (private)" #~ msgstr "เชื่อมต่อแล้ว (ส่วนตัว)" #~ msgid "Auto Ethernet" #~ msgstr "อีเทอร์เน็ตอัตโนมัติ" #~ msgid "Auto broadband" #~ msgstr "บรอดแบนด์อัตโนมัติ" #~ msgid "Auto dial-up" #~ msgstr "หมุนโทรศัพท์อัตโนมัติ" #, c-format #~ msgid "Auto %s" #~ msgstr "%s อัตโนมัติ" #~ msgid "Auto bluetooth" #~ msgstr "บลูทูทอัตโนมัติ" #~ msgid "Auto wireless" #~ msgstr "ไร้สายอัตโนมัติ" #~ msgid "Wired" #~ msgstr "ใช้สาย" #~ msgid "Wireless" #~ msgstr "ไร้สาย" #~ msgid "Network Settings" #~ msgstr "ตั้งค่าเครือข่าย" #~ msgid "Networking is disabled" #~ msgstr "การใช้เครือข่ายถูกปิด" #~ msgid "Battery" #~ msgstr "แบตเตอรี่" #~ msgid "Estimating..." #~ msgstr "กำลังประเมิน..." #, c-format #~ msgid "%d hour remaining" #~ msgid_plural "%d hours remaining" #~ msgstr[0] "เหลืออีก %d ชั่วโมง" #, c-format #~ msgid "%d %s %d %s remaining" #~ msgstr "เหลืออีก %d %s %d %s" #~ msgid "hour" #~ msgid_plural "hours" #~ msgstr[0] "ชั่วโมง" #~ msgid "minute" #~ msgid_plural "minutes" #~ msgstr[0] "นาที" #, c-format #~ msgid "%d minute remaining" #~ msgid_plural "%d minutes remaining" #~ msgstr[0] "เหลืออีก %d นาที" #~ msgid "AC adapter" #~ msgstr "ที่แปลงไฟ AC" #~ msgid "Laptop battery" #~ msgstr "แบตเตอรี่แล็ปท็อป" #~ msgid "UPS" #~ msgstr "UPS" #~ msgid "Monitor" #~ msgstr "จอภาพ" #~ msgid "Mouse" #~ msgstr "เมาส์" #~ msgid "PDA" #~ msgstr "PDA" #~ msgid "Media player" #~ msgstr "เครื่องเล่นสื่อ" #~ msgid "Tablet" #~ msgstr "แท็บเบล็ต" #~ msgid "Computer" #~ msgstr "คอมพิวเตอร์" #~ msgctxt "device" #~ msgid "Unknown" #~ msgstr "ไม่ทราบ" #~ msgid "Busy" #~ msgstr "ไม่ว่าง" #~ msgid "Invisible" #~ msgstr "ซ่อนตัว" #~ msgid "Away" #~ msgstr "ไม่อยู่" #~ msgid "Idle" #~ msgstr "ไม่มีกิจกรรม" #~ msgid "Unavailable" #~ msgstr "ออฟไลน์" #~ msgid "System Settings" #~ msgstr "ตั้งค่าระบบ" #~ msgid "Lock" #~ msgstr "ล็อค" #~ msgid "Your chat status will be set to busy" #~ msgstr "จะกำหนดสถานะการสนทนาของคุณเป็นไม่ว่าง" #~ msgid "" #~ "Notifications are now disabled, including chat messages. Your online " #~ "status has been adjusted to let others know that you might not see their " #~ "messages." #~ msgstr "" #~ "จะปิดการแจ้งเหตุ รวมถึงข้อความสนทนาด้วย " #~ "และได้ปรับสถานะออนไลน์ของคุณเพื่อให้คนอื่นทราบว่าคุณอาจไม่เห็นข้อความจากพวกเขาแล้ว" #~ msgid "Applications" #~ msgstr "โปรแกรม" #, c-format #~ msgid "" #~ "Sorry, no wisdom for you today:\n" #~ "%s" #~ msgstr "" #~ "เสียใจด้วย วันนี้ไม่มีคำคมสำหรับคุณ:\n" #~ "%s" #, c-format #~ msgid "%s the Oracle says" #~ msgstr "หมอดู %s กล่าว" #~ msgid "Your favorite Easter Egg" #~ msgstr "ไข่อีสเตอร์สุดโปรดของคุณ" #~ msgid "Evolution Calendar" #~ msgstr "ปฏิทิน Evolution" #~ msgid "United Kingdom" #~ msgstr "สหราชอาณาจักร" #~ msgid "Default" #~ msgstr "ปริยาย" #~ msgid "Retry" #~ msgstr "ลองใหม่" #~ msgid "PLACES & DEVICES" #~ msgstr "ที่หลักๆ และอุปกรณ์" #~ msgid "" #~ "GNOME Shell extensions have a uuid property; this key lists extensions " #~ "which should not be loaded." #~ msgstr "" #~ "ส่วนขยายต่างๆ ของเชลล์ GNOME จะมี uuid ประจำตัว " #~ "ค่านี้จะเก็บรายชื่อของส่วนขยายที่จะไม่เรียกใช้" #~ msgid "" #~ "If true and format is either \"12-hour\" or \"24-hour\", display date in " #~ "the clock, in addition to time." #~ msgstr "" #~ "ถ้าเลือก และรูปแบบเวลาเป็น \"12-hour\" หรือ \"24-hour\" " #~ "ก็จะแสดงวันที่ในนาฬิกาควบคู่กับเวลาด้วย" #~ msgid "Show date in clock" #~ msgstr "แสดงวันที่ในนาฬิกา" #~ msgid "Show time with seconds" #~ msgstr "แสดงเวลาพร้อมวินาที" #~ msgid "%a %b %e, %R:%S" #~ msgstr "%a %d %b, %R:%S" #~ msgid "%a %b %e, %R" #~ msgstr "%a %d %b, %R" #~ msgid "%a %R:%S" #~ msgstr "%a %R:%S" #~ msgid "%a %R" #~ msgstr "%a %R" #~ msgid "%a %b %e, %l:%M:%S %p" #~ msgstr "%a %d %b, %l:%M:%S %p" #~ msgid "%a %l:%M:%S %p" #~ msgstr "%a %l:%M:%S %p" #~ msgid "RECENT ITEMS" #~ msgstr "รายการล่าสุด" #~ msgid "Power Off..." #~ msgstr "ปิดเครื่อง..." #~ msgid "Log Out..." #~ msgstr "ออกจากระบบ..." #~ msgid "You're now connected to wireless network '%s'" #~ msgstr "คุณเชื่อมต่อกับเครือข่ายไร้สาย '%s' แล้ว" #~ msgid "You're now connected to wired network '%s'" #~ msgstr "คุณเชื่อมต่อกับเครือข่ายใช้สาย '%s' แล้ว" #~ msgid "You're now connected to VPN network '%s'" #~ msgstr "คุณเชื่อมต่อกับเครือข่าย VPN '%s' แล้ว" #~ msgid "%s is online." #~ msgstr "%s ออนไลน์" #~ msgid "%s is away." #~ msgstr "%s ไม่อยู่" #~ msgid "%s is busy." #~ msgstr "%s ไม่ว่าง" #~ msgid "%s has finished starting" #~ msgstr "%s เปิดเสร็จแล้ว" #~ msgid "Less than a minute ago" #~ msgstr "ไม่ถึงหนึ่งนาทีก่อน" #~ msgid "Customize the panel clock" #~ msgstr "ปรับแต่งนาฬิกาบนพาเนล" #~ msgid "Custom format of the clock" #~ msgstr "รูปแบบนาฬิกากำหนดเอง" #~ msgid "Hour format" #~ msgstr "รูปแบบชั่วโมง" #~ msgid "" #~ "If true and format is either \"12-hour\" or \"24-hour\", display seconds " #~ "in time." #~ msgstr "" #~ "ถ้าเลือก และรูปแบบเวลาเป็น \"12-hour\" หรือ \"24-hour\" ก็จะแสดงวินาทีในเวลาด้วย" #~ msgid "" #~ "This key specifies the format used by the panel clock when the format key " #~ "is set to \"custom\". You can use conversion specifiers understood by " #~ "strftime() to obtain a specific format. See the strftime() manual for " #~ "more information." #~ msgstr "" #~ "ค่านี้กำหนดรูปแบบของเวลาในแอพเพล็ตนาฬิกาเมื่อกำหนดรูปแบบเป็น \"custom\" " #~ "คุณสามารถใช้รหัสการแปลงของ strftime() เพื่อระบุรูปแบบที่ต้องการได้ " #~ "ดูข้อมูลเพิ่มเติมได้จากคู่มือของ strftime()" #~ msgid "" #~ "This key specifies the hour format used by the panel clock. Possible " #~ "values are \"12-hour\", \"24-hour\", \"unix\" and \"custom\". If set to " #~ "\"unix\", the clock will display time in seconds since Epoch, i.e. " #~ "1970-01-01. If set to \"custom\", the clock will display time according " #~ "to the format specified in the custom_format key. Note that if set to " #~ "either \"unix\" or \"custom\", the show_date and show_seconds keys are " #~ "ignored." #~ msgstr "" #~ "ค่านี้กำหนดรูปแบบชั่วโมงที่จะใช้ในแอพเพล็ตนาฬิกา ค่าที่เป็นไปได้คือ\"12-hour\", \"24-" #~ "hour\", \"unix\" และ \"custom\" ถ้ากำหนดเป็น \"unix\" " #~ "นาฬิกาจะแสดงเวลาเป็นวินาทีนับจาก 1970-01-01 ถ้ากำหนดเป็น \"custom\" " #~ "นาฬิกาจะแสดงตามรูปแบบที่กำหนดใน custom_format สังเกตว่าถ้ากำหนดเป็น \"unix\" หรือ " #~ "\"custom\" ค่า show_date และ show_seconds ก็จะไม่มีผล" #~ msgid "Enable lens mode" #~ msgstr "เปิดใช้โหมดแว่นขยาย" #~ msgid "" #~ "The magnified view either fills the entire screen, or occupies the top-" #~ "half, bottom-half, left-half, or right-half of the screen." #~ msgstr "" #~ "ช่องแสดงภาพขยายอาจจะใหญ่เต็มจอภาพ (full-screen) หรืออาจจะกินที่แค่ครึ่งบน (top-" #~ "half) ครึ่งล่าง (bottom-half) ครึ่งซ้าย (left-half) หรือครึ่งขวา (right-half)" #~ msgid "" #~ "Whether the magnified view should be centered over the location of the " #~ "system mouse and move with it." #~ msgstr "กำหนดว่าจะให้ภาพขยายหน้าจอวางตำแหน่งกึ่งกลางที่เมาส์และเคลื่อนย้ายไปตามเมาส์หรือไม่" #~ msgid "Clock Format" #~ msgstr "รูปแบบนาฬิกา" #~ msgid "Clock Preferences" #~ msgstr "ปรับแต่งค่านาฬิกา" #~ msgid "Show seco_nds" #~ msgstr "แสดง_วินาที" #~ msgid "_12 hour format" #~ msgstr "แ_บบ AM/PM" #~ msgid "_24 hour format" #~ msgstr "แบบ _24 ขั่วโมง" #~ msgid "PREFERENCES" #~ msgstr "ปรับแต่ง" #~ msgid "Drag here to add favorites" #~ msgstr "ลากมาที่นี่เพื่อเพิ่มเป็นรายการโปรด" #~ msgid "Find" #~ msgstr "หา" #~ msgid "Preferences" #~ msgstr "ปรับแต่ง" #~ msgid "Shut Down..." #~ msgstr "ปิดเครื่อง..." #~ msgid "Can't remove the first workspace." #~ msgstr "ไม่สามารถลบพื้นที่ทำงานแรกได้" 07070100000268000081A40000000000000000000000016712993F000188C9000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/tr.po# Turkish translation of gnome-shell # Copyright (C) 2009, 2011 the Free Software Foundation, Inc. # Copyright (C) 2012-2024 gnome-shell'S COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-shell package. # # Baris Cicek , 2009. # ercin , 2011. # Osman Karagöz , 2013. # Bayram Güçlü , 2014. # Gökhan Gurbetoğlu , 2014. # Muhammet Kara , 2011-2017. # Furkan Ahmet Kara , 2017, 2018. # Sabri Ünal , 2014, 2019, 2020, 2023, 2024. # Emin Tufan Çetin , 2017-2024. # msgid "" msgstr "" "Project-Id-Version: gnome-shell\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues/\n" "POT-Creation-Date: 2024-08-21 13:15+0000\n" "PO-Revision-Date: 2024-08-01 08:00+0300\n" "Last-Translator: Emin Tufan Çetin \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: Poedit 3.4.3\n" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "Başlatıcılar" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate pinned app 1" msgstr "Sabitlenmiş 1. uygulamayı etkinleştir" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate pinned app 2" msgstr "Sabitlenmiş 2. uygulamayı etkinleştir" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate pinned app 3" msgstr "Sabitlenmiş 3. uygulamayı etkinleştir" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate pinned app 4" msgstr "Sabitlenmiş 4. uygulamayı etkinleştir" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate pinned app 5" msgstr "Sabitlenmiş 5. uygulamayı etkinleştir" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate pinned app 6" msgstr "Sabitlenmiş 6. uygulamayı etkinleştir" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate pinned app 7" msgstr "Sabitlenmiş 7. uygulamayı etkinleştir" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate pinned app 8" msgstr "Sabitlenmiş 8. uygulamayı etkinleştir" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate pinned app 9" msgstr "Sabitlenmiş 9. uygulamayı etkinleştir" #: data/50-gnome-shell-launchers.xml:46 msgid "Open new window of pinned app 1" msgstr "Sabitlenmiş 1. uygulamanın yeni penceresini aç" #: data/50-gnome-shell-launchers.xml:50 msgid "Open new window of pinned app 2" msgstr "Sabitlenmiş 2. uygulamanın yeni penceresini aç" #: data/50-gnome-shell-launchers.xml:54 msgid "Open new window of pinned app 3" msgstr "Sabitlenmiş 3. uygulamanın yeni penceresini aç" #: data/50-gnome-shell-launchers.xml:58 msgid "Open new window of pinned app 4" msgstr "Sabitlenmiş 4. uygulamanın yeni penceresini aç" #: data/50-gnome-shell-launchers.xml:62 msgid "Open new window of pinned app 5" msgstr "Sabitlenmiş 5. uygulamanın yeni penceresini aç" #: data/50-gnome-shell-launchers.xml:66 msgid "Open new window of pinned app 6" msgstr "Sabitlenmiş 6. uygulamanın yeni penceresini aç" #: data/50-gnome-shell-launchers.xml:70 msgid "Open new window of pinned app 7" msgstr "Sabitlenmiş 7. uygulamanın yeni penceresini aç" #: data/50-gnome-shell-launchers.xml:74 msgid "Open new window of pinned app 8" msgstr "Sabitlenmiş 8. uygulamanın yeni penceresini aç" #: data/50-gnome-shell-launchers.xml:78 msgid "Open new window of pinned app 9" msgstr "Sabitlenmiş 9. uygulamanın yeni penceresini aç" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2274 msgid "Screenshots" msgstr "Ekran Görüntüleri" #: data/50-gnome-shell-screenshots.xml:9 #: data/org.gnome.shell.gschema.xml.in:287 msgid "Take a screenshot interactively" msgstr "Etkileşimli olarak ekran görüntüsü al" #: data/50-gnome-shell-screenshots.xml:12 #: data/org.gnome.shell.gschema.xml.in:299 msgid "Take a screenshot" msgstr "Ekran görüntüsü al" #: data/50-gnome-shell-screenshots.xml:15 #: data/org.gnome.shell.gschema.xml.in:295 msgid "Take a screenshot of a window" msgstr "Pencerenin ekran görüntüsünü al" #: data/50-gnome-shell-screenshots.xml:18 #: data/org.gnome.shell.gschema.xml.in:291 msgid "Record a screencast interactively" msgstr "Etkileşimli olarak ekranı kaydet" #: data/50-gnome-shell-system.xml:6 js/ui/messageTray.js:1298 msgid "System" msgstr "Sistem" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "Bildirim listesini göster" #: data/50-gnome-shell-system.xml:12 msgid "Open the quick settings menu" msgstr "Hızlı ayarlar menüsünü aç" #: data/50-gnome-shell-system.xml:15 msgid "Focus the active notification" msgstr "Etkin bildirime odaklan" #: data/50-gnome-shell-system.xml:18 msgid "Show the overview" msgstr "Genel görünümü göster" #: data/50-gnome-shell-system.xml:21 msgid "Show all apps" msgstr "Tüm uygulamaları göster" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "GNOME Kabuğu" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "Pencere yönetimi ve uygulama başlatma" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" "Geliştirici ve sınayıcılar için Alt-F2’den ulaşılan araçları etkinleştir" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Alt-F2 kutucuğu ile tümleşik hata ayıklama ve izleme uygulamalarına erişim " "sağlar." #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "Etkinleştirilecek uzantıların UUID’si" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "GNOME Kabuğu uzantılarında UUID adında özellik bulunur; bu anahtar, " "yüklenmesi gereken uzantıları listeler. Yüklenmesi istenen her tür uzantının " "bu listede olması gerekir. Ayrıca bu listeyi, org.gnome.Shell üzerindeki " "EnableExtension ve DisableExtension DBus yöntemleri ile de " "değiştirebilirsiniz." #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "Devre dışı bırakmaya zorlanacak uzantıların UUID’leri" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" "GNOME Kabuğu uzantılarında UUID adında özellik bulunur; bu anahtar, geçerli " "kipin parçası olarak yüklenmiş olsa bile devre dışı bırakılması gereken " "uzantıları listeler. Bu listeyi, org.gnome.Shell üzerindeki EnableExtension " "ve DisableExtension D-Bus yöntemleriyle de değiştirebilirsiniz. Bu anahtar " "“enabled-extensions” ayarına göre önceliklidir." #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "Kullanıcı uzantılarını devre dışı bırak" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" "Kullanıcının etkinleştirdiği tüm uzantıları “enabled-extension” ayarına etki " "etmeden devre dışı bırak." #: data/org.gnome.shell.gschema.xml.in:45 msgid "Allow extension installation" msgstr "Uzantı kurulumuna izin ver" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "Allow users to install extensions in their home folder. If disabled, the " "InstallRemoteExtension D-Bus method will fail, and extensions are only " "loaded from system directories on startup. It does not affect extensions " "that are already loaded, so a change only takes full effect on the next " "login." msgstr "" "Kullanıcıların ev klasörlerine uzantı kurmasını sağlar. Eğer devre dışı " "bırakılırsa InstallRemoteExtension D-Bus yöntemi başarısız olur ve uzantılar " "başlangıçta yalnızca sistem klasörlerinden yüklenir. Halihazırda yüklenmiş " "uzantıları etkilemez, değişiklikler sonraki oturum açmada tümüyle etkinleşir." #: data/org.gnome.shell.gschema.xml.in:56 msgid "Disables the validation of extension version compatibility" msgstr "Uzantının sürüm uyumu doğrulamasını devre dışı bırakır" #: data/org.gnome.shell.gschema.xml.in:57 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "GNOME Kabuğu yalnızca şu andaki çalışan sürümü desteklediklerini ileri süren " "uzantıları yükleyecektir. Bu seçeneği etkinleştirmek bu denetimi devre dışı " "bırakacak ve desteklendiği ileri sürülen sürümleri dikkate almaksızın, tüm " "uygulamaları yüklemeye çalışacaktır." #: data/org.gnome.shell.gschema.xml.in:65 msgid "List of desktop file IDs for favorite applications" msgstr "Gözde uygulamalar için masa üstü dosyalarının ID listesi" #: data/org.gnome.shell.gschema.xml.in:66 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "Bu tanımlayıcıdaki uygulamalar gözdeler bölümünde gösterilecek." #: data/org.gnome.shell.gschema.xml.in:73 msgid "History for command (Alt-F2) dialog" msgstr "Komut kutucuğu (Alt-F2) geçmişi" #. Translators: looking glass is a debugger and inspector tool, see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/docs/looking-glass.md #: data/org.gnome.shell.gschema.xml.in:78 msgid "History for the looking glass dialog" msgstr "Ayna iletişim penceresinin geçmişi" #: data/org.gnome.shell.gschema.xml.in:82 msgid "Always show the “Log Out” action in the system menu" msgstr "Sistem menüsünde “Oturumu Kapat” eylemini hep göster." #: data/org.gnome.shell.gschema.xml.in:83 msgid "" "This key overrides the automatic hiding of the “Log out” action in the " "system menu for logged-in situations where there is a single, local, non-" "system user and only a single available session type (e.g. GNOME on Wayland)." msgstr "" "Bu ayar; tek, yerel, sistem kullanıcısı olmayan ve yalnızca tek uygun oturum " "türünde (örn. Wayland üzerinde GNOME) oturum açıldığında sistem menüsündeki " "“Oturumu Kapat” eyleminin kendiliğinden gizlenmesini önler." #: data/org.gnome.shell.gschema.xml.in:92 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "Şifreli ya da uzak dosya sistemlerini bağlamak için parolanın anımsanması" #: data/org.gnome.shell.gschema.xml.in:93 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "Kabuk, şifreli aygıt ya da uzak dosya sistemi bağlandığında parola " "isteyecek. Eğer parola gelecekte kullanılmak üzere kaydedilebiliyorsa, " "“Parolayı Anımsa” onay kutusu sunulacak. Bu anahtar, onay kutusunun " "öntanımlı durumunu belirler." #: data/org.gnome.shell.gschema.xml.in:102 msgid "The last selected non-default power profile" msgstr "En son seçilen öntanımlı olmayan güç profili" #: data/org.gnome.shell.gschema.xml.in:103 msgid "" "Some systems support more than two power profiles. In order to still support " "toggling between two profiles, this key records the last selected non-" "default profile." msgstr "" "Bazı sistemler ikiden çok güç profilini destekler. İki profil arasında " "geçişi destekleyebilmek için bu anahtar, en son seçilen öntanımlı olmayan " "profili kaydeder." #: data/org.gnome.shell.gschema.xml.in:111 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "" "“GNOME’a Hoş Geldiniz” iletişim penceresinin en son hangi sürüm için " "gösterildiği" #: data/org.gnome.shell.gschema.xml.in:112 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can " "be used to effectively disable the dialog." msgstr "" "Bu anahtar, “GNOME’a Hoş Geldiniz” iletişim penceresinin en son hangi sürüm " "için gösterildiğini belirler. Boş dizge, en eski olası sürüme karşılık gelir " "ve büyük sayı henüz var olmayan sürümlere karşılık gelir. Bu büyük sayı, " "iletişim penceresini devre dışı bırakmada da kullanılabilir." #: data/org.gnome.shell.gschema.xml.in:145 msgid "Layout of the app picker" msgstr "Uygulama seçicinin düzeni" #: data/org.gnome.shell.gschema.xml.in:146 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" msgstr "" "Uygulama seçicinin düzeni. Dizideki her girdi bir sayfadır. Sayfalar GNOME " "Kabuğu’nda göründüğü sırayla depolanır. Her sayfa bir “application id” → " "'data' çifti içerir. Şimdilik şu değerler 'data' olarak depolanır: • " "“position”: sayfadaki uygulama simgesinin konumu" #: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:172 msgid "Keybinding to shift between overview states" msgstr "Genel görünüm durumları arası geçiş için klavye kısayolu" #: data/org.gnome.shell.gschema.xml.in:166 msgid "Keybinding to shift between session, window picker and app grid" msgstr "" "Oturum, pencere seçici ve uygulama ızgarası arası geçiş için klavye kısayolu" #: data/org.gnome.shell.gschema.xml.in:173 msgid "Keybinding to shift between app grid, window picker and session" msgstr "" "Uygulama ızgarası, pencere seçici ve oturum arası geçiş için klavye kısayolu" #: data/org.gnome.shell.gschema.xml.in:179 msgid "Keybinding to open the “Show Applications” view" msgstr "“Uygulamaları Göster” görünümünü açmak için klavye kısayolu" #: data/org.gnome.shell.gschema.xml.in:180 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "" "Etkinlikler Genel Görünümünün “Uygulamaları Göster” görünümünü açmak için " "klavye kısayolu." #: data/org.gnome.shell.gschema.xml.in:187 msgid "Keybinding to open the overview" msgstr "Genel görünümü açmak için klavye kısayolu" #: data/org.gnome.shell.gschema.xml.in:188 msgid "Keybinding to open the Activities Overview." msgstr "Etkinlikler Genel Görünümünü açmak için klavye kısayolu." #: data/org.gnome.shell.gschema.xml.in:194 msgid "Keybinding to toggle the visibility of the notification list" msgstr "Bildirim listesinin görünürlüğünü değiştirmek için klavye kısayolu" #: data/org.gnome.shell.gschema.xml.in:195 msgid "Keybinding to toggle the visibility of the notification list." msgstr "Bildirim listesinin görünürlüğünü değiştirmek için klavye kısayolu." #: data/org.gnome.shell.gschema.xml.in:201 msgid "Keybinding to toggle the quick settings menu" msgstr "Hızlı ayarlar menüsünü açmak/kapatmak için klavye kısayolu" #: data/org.gnome.shell.gschema.xml.in:202 msgid "Keybinding to toggle the quick settings menu." msgstr "Hızlı ayarlar menüsünü açmak/kapatmak için klavye kısayolu." #: data/org.gnome.shell.gschema.xml.in:208 msgid "Keybinding to focus the active notification" msgstr "Etkin bildirime odaklanmak için klavye kısayolu" #: data/org.gnome.shell.gschema.xml.in:209 msgid "Keybinding to focus the active notification." msgstr "Etkin bildirime odaklanmak için klavye kısayolu." #: data/org.gnome.shell.gschema.xml.in:215 msgid "Switch to application 1" msgstr "Uygulama 1ʼe geç" #: data/org.gnome.shell.gschema.xml.in:219 msgid "Switch to application 2" msgstr "Uygulama 2ʼye geç" #: data/org.gnome.shell.gschema.xml.in:223 msgid "Switch to application 3" msgstr "Uygulama 3ʼe geç" #: data/org.gnome.shell.gschema.xml.in:227 msgid "Switch to application 4" msgstr "Uygulama 4ʼe geç" #: data/org.gnome.shell.gschema.xml.in:231 msgid "Switch to application 5" msgstr "Uygulama 5ʼe geç" #: data/org.gnome.shell.gschema.xml.in:235 msgid "Switch to application 6" msgstr "Uygulama 6ʼya geç" #: data/org.gnome.shell.gschema.xml.in:239 msgid "Switch to application 7" msgstr "Uygulama 7ʼye geç" #: data/org.gnome.shell.gschema.xml.in:243 msgid "Switch to application 8" msgstr "Uygulama 8ʼe geç" #: data/org.gnome.shell.gschema.xml.in:247 msgid "Switch to application 9" msgstr "Uygulama 9ʼa geç" #: data/org.gnome.shell.gschema.xml.in:251 msgid "Open a new instance of application 1" msgstr "1. uygulamanın yeni örneğini aç" #: data/org.gnome.shell.gschema.xml.in:255 msgid "Open a new instance of application 2" msgstr "2. uygulamanın yeni örneğini aç" #: data/org.gnome.shell.gschema.xml.in:259 msgid "Open a new instance of application 3" msgstr "3. uygulamanın yeni örneğini aç" #: data/org.gnome.shell.gschema.xml.in:263 msgid "Open a new instance of application 4" msgstr "4. uygulamanın yeni örneğini aç" #: data/org.gnome.shell.gschema.xml.in:267 msgid "Open a new instance of application 5" msgstr "5. uygulamanın yeni örneğini aç" #: data/org.gnome.shell.gschema.xml.in:271 msgid "Open a new instance of application 6" msgstr "6. uygulamanın yeni örneğini aç" #: data/org.gnome.shell.gschema.xml.in:275 msgid "Open a new instance of application 7" msgstr "7. uygulamanın yeni örneğini aç" #: data/org.gnome.shell.gschema.xml.in:279 msgid "Open a new instance of application 8" msgstr "8. uygulamanın yeni örneğini aç" #: data/org.gnome.shell.gschema.xml.in:283 msgid "Open a new instance of application 9" msgstr "9. uygulamanın yeni örneğini aç" #: data/org.gnome.shell.gschema.xml.in:308 #: data/org.gnome.shell.gschema.xml.in:335 msgid "Limit switcher to current workspace." msgstr "Geçiş menüsünü geçerli çalışma alanıyla sınırla." #: data/org.gnome.shell.gschema.xml.in:309 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "Eğer bu seçenek etkinse, yalnızca geçerli çalışma alanında penceresi olan " "uygulamalar geçiş menüsünde gösterilir. Aksi halde, tüm uygulamalar " "görünecektir." #: data/org.gnome.shell.gschema.xml.in:326 msgid "The application icon mode." msgstr "Uygulama simge kipi." #: data/org.gnome.shell.gschema.xml.in:327 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-only” " "(shows only the application icon) or “both”." msgstr "" "Pencerelerin değiştiricideki gösterim biçimini yapılandırır. Uygun " "olasılıklar; “thumbnail-only” (pencerenin küçük resmini gösterir), “app-icon-" "only” (yalnızca uygulama simgesini gösterir) ya da “both” (her ikisi) " "değerleridir." #: data/org.gnome.shell.gschema.xml.in:336 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "Eğer bu seçenek etkinse, yalnızca geçerli çalışma alanındaki pencereler " "geçiş menüsünde gösterilir. Aksi halde, tüm pencereler görünecektir." #: data/org.gnome.shell.gschema.xml.in:346 msgid "Locations" msgstr "Konumlar" #: data/org.gnome.shell.gschema.xml.in:347 msgid "The locations to show in world clocks" msgstr "Dünya saatlerinde gösterilecek konumlar" #: data/org.gnome.shell.gschema.xml.in:357 msgid "Automatic location" msgstr "Kendiliğinden konumlama" #: data/org.gnome.shell.gschema.xml.in:358 msgid "Whether to fetch the current location or not" msgstr "Geçerli konumun getirilip getirilmeyeceğini belirler" #: data/org.gnome.shell.gschema.xml.in:365 msgid "Location" msgstr "Konum" #: data/org.gnome.shell.gschema.xml.in:366 msgid "The location for which to show a forecast" msgstr "Hava durumunun gösterileceği konum" #. Keep in sync with subprojects/extensions-app #: data/org.gnome.Shell.Extensions.desktop.in.in:5 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/data/ui/extensions-window.ui:57 msgid "Extensions" msgstr "Uzantılar" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "Ağdan Oturum Açma" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:275 msgid "Something’s gone wrong" msgstr "Bir şeyler ters gitti" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" "Çok üzgünüz ancak sorun oluştu: bu uzantı için ayarlar görüntülenemiyor. " "Sorunu uzantı yazarlarına bildirmenizi öneririz." #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "Teknik Ayrıntılar" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "Ana Sayfa" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 msgid "Visit extension homepage" msgstr "Uzantı ana sayfasını ziyaret et" #: js/gdm/authPrompt.js:151 js/gdm/loginDialog.js:466 #: js/ui/audioDeviceSelection.js:66 js/ui/components/networkAgent.js:113 #: js/ui/components/polkitAgent.js:144 js/ui/endSessionDialog.js:437 #: js/ui/extensionDownloader.js:276 js/ui/shellMountOperation.js:382 #: js/ui/shellMountOperation.js:392 msgid "Cancel" msgstr "İptal" #: js/gdm/authPrompt.js:317 js/ui/components/networkAgent.js:213 #: js/ui/components/networkAgent.js:233 js/ui/components/networkAgent.js:265 #: js/ui/components/networkAgent.js:298 js/ui/components/networkAgent.js:337 #: js/ui/components/networkAgent.js:350 js/ui/components/polkitAgent.js:286 #: js/ui/shellMountOperation.js:332 msgid "Password" msgstr "Parola" #: js/gdm/loginDialog.js:326 msgid "Choose Session" msgstr "Oturum Seç" #. Translators: is running for #: js/gdm/loginDialog.js:424 #, javascript-format msgid "" "Remote login is not possible because a remote session is already running for " "%s. To login remotely, you must log out from the remote session or force " "stop it." msgstr "" "%s uzak oturumu zaten çalıştığından uzaktan oturum açmak olanaksız. Uzaktan " "oturum açmak için uzak oturumu kapatmalı ya da durmaya zorlamalısınız." #. Translators: is running for #: js/gdm/loginDialog.js:427 #, javascript-format msgid "" "Login is not possible because a remote session is already running for %s. To " "login, you must log out from the remote session or force stop it." msgstr "" "%s uzak oturumu zaten çalıştığından oturum açmak olanaksız. Oturum açmak " "için uzak oturumu kapatmalı ya da durmaya zorlamalısınız." #. Translators: is running for #: js/gdm/loginDialog.js:430 #, javascript-format msgid "" "Remote login is not possible because a local session is already running for " "%s. To login remotely, you must log out from the local session or force stop " "it." msgstr "" "%s yerel oturumu zaten çalıştığından uzaktan oturum açmak olanaksız. Uzaktan " "oturum açmak için yerel oturumu kapatmalı ya da durmaya zorlamalısınız." #. Translators: is running for #: js/gdm/loginDialog.js:433 #, javascript-format msgid "" "Login is not possible because a session is already running for %s. To login, " "you must log out from the session or force stop it." msgstr "" "%s oturumu zaten çalıştığından oturum açmak olanaksız. Oturum açmak için " "oturumu kapatmalı ya da durmaya zorlamalısınız." #: js/gdm/loginDialog.js:442 msgid "Session Already Running" msgstr "Oturum Zaten Çalışıyor" #: js/gdm/loginDialog.js:454 msgid "" "Force stopping will quit any running apps and processes, and could result in " "data loss" msgstr "" "Durmaya zorlamak, çalışan tüm uygulamaları ve süreçleri durduracağından veri " "yitirilebilir" #: js/gdm/loginDialog.js:474 msgid "Force Stop" msgstr "Durmaya Zorla" #: js/gdm/loginDialog.js:542 msgid "Not listed?" msgstr "Listede yok mu?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:1010 #, javascript-format msgid "(e.g., user or %s)" msgstr "(örneğin, kullanıcı veya %s)" #: js/gdm/loginDialog.js:1015 js/ui/components/networkAgent.js:257 #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:326 msgid "Username" msgstr "Kullanıcı Adı" #: js/gdm/loginDialog.js:1081 msgid "Login Attempt Timed Out" msgstr "Oturum Açma Denemesi Zaman Aşımına Uğradı" #: js/gdm/loginDialog.js:1082 msgid "Login took too long, please try again" msgstr "Oturum açma çok uzun sürdü, lütfen yeniden deneyin" #: js/gdm/loginDialog.js:1431 msgid "Login Window" msgstr "Oturum Açma Penceresi" #: js/gdm/util.js:496 msgid "Authentication error" msgstr "Kimlik doğrulama hatası" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:727 msgid "(or swipe finger across reader)" msgstr "(ya da parmağı okuyucuda kaydır)" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:732 msgid "(or place finger on reader)" msgstr "(ya da parmağı okuyucuya yerleştir)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:91 msgctxt "search-result" msgid "Power Off" msgstr "Gücü Kapat" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:94 msgid "power off;poweroff;shutdown;halt;stop" msgstr "gücü kapat;bilgisayarı kapat;duraklat;durdur;askıya al;" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:99 msgctxt "search-result" msgid "Restart" msgstr "Yeniden Başlat" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:102 msgid "reboot;restart;" msgstr "yeniden önyükle;yeniden başlat;" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:107 msgctxt "search-result" msgid "Lock Screen" msgstr "Ekranı Kilitle" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:110 msgid "lock screen" msgstr "ekranı kilitle" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:115 msgctxt "search-result" msgid "Log Out" msgstr "Oturumu Kapat" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:118 msgid "logout;log out;sign off" msgstr "çıkış;oturumu kapat;çıkış yap" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:123 msgctxt "search-result" msgid "Suspend" msgstr "Askıya al" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:126 msgid "suspend;sleep" msgstr "beklet;uyku;duraklat;askıya al" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:131 msgctxt "search-result" msgid "Switch User" msgstr "Kullanıcı Değiştir" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:134 msgid "switch user" msgstr "kullanıcı değiştir" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:141 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "yönelimi kilitle;yönelim kilidini kaldır;ekran;döndürme" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:146 msgctxt "search-result" msgid "Take a Screenshot" msgstr "Ekran Görüntüsü Al" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:149 msgid "screenshot;screencast;snip;capture;record" msgstr "" "ekran görüntüsü;screenshot;ekran kaydı;ekran yayını;ekran video kaydı;" "screencast;kırp;kes;yakala;kaydet;kayıt;" #: js/misc/systemActions.js:249 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "Ekran Döndürme Kilidini Kaldır" #: js/misc/systemActions.js:250 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "Ekran Döndürmeyi Kilitle" #: js/misc/util.js:130 msgid "Command not found" msgstr "Komut bulunamadı" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:170 msgid "Could not parse command:" msgstr "Komut işlenemedi:" #: js/misc/util.js:178 #, javascript-format msgid "Execution of “%s” failed:" msgstr "“%s” çalıştırılması başarısız:" #: js/misc/dateUtils.js:69 msgid "Just now" msgstr "Şimdi" #: js/misc/dateUtils.js:72 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d dakika önce" #: js/misc/dateUtils.js:79 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d saat önce" #: js/misc/dateUtils.js:85 js/ui/dateMenu.js:183 msgid "Yesterday" msgstr "Dün" #: js/misc/dateUtils.js:88 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d gün önce" #: js/misc/dateUtils.js:95 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d hafta önce" #: js/misc/dateUtils.js:102 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%d ay önce" #: js/misc/dateUtils.js:108 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "%d yıl önce" #. Translators: Time in 24h format #: js/misc/dateUtils.js:155 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/dateUtils.js:161 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "Dün, %H∶%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/dateUtils.js:167 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/dateUtils.js:173 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%-d %B, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/dateUtils.js:179 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%-d %B %Y, %H∶%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/dateUtils.js:184 msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/dateUtils.js:190 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "Dün, %l∶%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/dateUtils.js:196 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/dateUtils.js:202 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%-d %B, %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/dateUtils.js:208 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%-d %B %Y, %l∶%M %p" #: js/portalHelper/main.js:98 msgid "Your connection seems to be secure" msgstr "Bağlantınız güvenli görünüyor" #: js/portalHelper/main.js:104 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "Bu erişim noktası girişine olan bağlantınız güvenli değil. Bu sayfaya " "girdiğiniz parolalar veya diğer bilgiler yakındaki insanlarca " "görüntülenebilir." #: js/portalHelper/main.js:115 msgid "Hotspot Login" msgstr "Erişim Noktası Girişi" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:51 js/ui/inhibitShortcutsDialog.js:92 msgid "Deny" msgstr "Reddet" #: js/ui/accessDialog.js:52 js/ui/inhibitShortcutsDialog.js:101 msgid "Allow" msgstr "İzin Ver" #: js/ui/appDisplay.js:1769 msgid "Unnamed Folder" msgstr "Adsız Klasör" #: js/ui/appFavorites.js:163 #, javascript-format msgid "%s has been pinned to the dash." msgstr "%s, konsola iliştirildi." #: js/ui/appFavorites.js:194 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "%s, konsoldan çıkarıldı." #: js/ui/appFavorites.js:208 js/ui/main.js:281 msgid "Undo" msgstr "Geri Al" #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:49 msgid "Open Windows" msgstr "Açık Pencereler" #: js/ui/appMenu.js:57 msgid "New Window" msgstr "Yeni Pencere" #: js/ui/appMenu.js:84 msgid "App Details" msgstr "Uygulama Ayrıntıları" #: js/ui/appMenu.js:100 msgid "Quit" msgstr "Kapat" #: js/ui/appMenu.js:160 js/ui/dash.js:248 msgid "Unpin" msgstr "Çıkar" #: js/ui/appMenu.js:161 msgid "Pin to Dash" msgstr "Konsola İliştir" #: js/ui/appMenu.js:178 msgid "Launch using Integrated Graphics Card" msgstr "Tümleşik Ekran Kartıyla Başlat" #: js/ui/appMenu.js:179 msgid "Launch using Discrete Graphics Card" msgstr "Ayrık Ekran Kartıyla Başlat" #: js/ui/audioDeviceSelection.js:46 msgid "Select Audio Device" msgstr "Ses Aygıtı Seç" #: js/ui/audioDeviceSelection.js:61 js/ui/status/volume.js:81 msgid "Sound Settings" msgstr "Ses Ayarları" #: js/ui/audioDeviceSelection.js:74 msgid "Headphones" msgstr "Kulaklıklar" #: js/ui/audioDeviceSelection.js:76 msgid "Headset" msgstr "Kulaklıklı Mikrofon" #: js/ui/audioDeviceSelection.js:78 js/ui/status/volume.js:356 msgid "Microphone" msgstr "Mikrofon" #: js/ui/backgroundMenu.js:13 msgid "Change Background…" msgstr "Arka Planı Değiştir…" #: js/ui/backgroundMenu.js:15 msgid "Display Settings" msgstr "Görüntü Ayarları" #: js/ui/backgroundMenu.js:16 msgid "Settings" msgstr "Ayarlar" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:37 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:63 msgctxt "grid sunday" msgid "S" msgstr "P" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:65 msgctxt "grid monday" msgid "M" msgstr "Pt" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:67 msgctxt "grid tuesday" msgid "T" msgstr "S" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:69 msgctxt "grid wednesday" msgid "W" msgstr "Ç" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:71 msgctxt "grid thursday" msgid "T" msgstr "Pş" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:73 msgctxt "grid friday" msgid "F" msgstr "C" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:75 msgctxt "grid saturday" msgid "S" msgstr "Ct" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:426 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:436 msgid "%OB %Y" msgstr "%OB %Y" #: js/ui/calendar.js:498 msgid "Previous month" msgstr "Önceki ay" #: js/ui/calendar.js:516 msgid "Next month" msgstr "Gelecek ay" #: js/ui/calendar.js:667 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:726 msgid "Week %V" msgstr "%V. Hafta" #: js/ui/calendar.js:918 msgid "No Notifications" msgstr "Bildirim Yok" #: js/ui/calendar.js:974 msgid "Do Not Disturb" msgstr "Rahatsız Etme" #: js/ui/calendar.js:995 msgid "Clear" msgstr "Temizle" #: js/ui/calendar.js:999 msgctxt "action" msgid "Clear all notifications" msgstr "Tüm bildirimleri temizle" #. Translators: %s is an application name #: js/ui/closeDialog.js:42 #, javascript-format msgid "“%s” Is Not Responding" msgstr "“%s” Yanıtlamıyor" #: js/ui/closeDialog.js:43 msgid "" "You may choose to wait a short while for it to continue or force the app to " "quit entirely" msgstr "" "Sürmesini bekleyebilir ya da uygulamayı tümüyle kapanmaya zorlayabilirsiniz" #: js/ui/closeDialog.js:71 msgid "Force Quit" msgstr "Kapanmaya Zorla" #: js/ui/closeDialog.js:76 msgid "Wait" msgstr "Bekle" #: js/ui/components/automountManager.js:82 msgid "External drive connected" msgstr "Dış sürücü bağlandı" #: js/ui/components/automountManager.js:94 msgid "External drive disconnected" msgstr "Dış sürücü ayrıldı" #: js/ui/components/automountManager.js:208 msgid "Unable to unlock volume" msgstr "Bölümün kilidi açılamadı" #: js/ui/components/automountManager.js:209 msgid "The installed udisks version does not support the PIM setting" msgstr "Kurulu udisks sürümü PIM ayarını desteklemiyor" #. Translators: %s is the name of a partition on a external drive #: js/ui/components/autorunManager.js:189 #, javascript-format msgid "“%s” connected" msgstr "“%s” bağlı" #: js/ui/components/autorunManager.js:190 msgid "Disk can now be used" msgstr "Disk artık kullanılabilir" #: js/ui/components/autorunManager.js:202 #, javascript-format msgid "Open with %s" msgstr "%s ile Aç" #: js/ui/components/networkAgent.js:95 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router" msgstr "" "Diğer seçenek olarak, yönlendiricinizde “WPS” düğmesini kullanarak " "bağlayabilirsiniz" #: js/ui/components/networkAgent.js:107 js/ui/status/bluetooth.js:245 #: js/ui/status/network.js:360 js/ui/status/network.js:444 msgid "Connect" msgstr "Bağlan" #: js/ui/components/networkAgent.js:222 msgid "Key" msgstr "Anahtar" #: js/ui/components/networkAgent.js:273 js/ui/components/networkAgent.js:312 msgid "Private key password" msgstr "Özel anahtar parolası" #: js/ui/components/networkAgent.js:306 msgid "Identity" msgstr "Kimlik" #: js/ui/components/networkAgent.js:332 msgid "Service" msgstr "Hizmet" #: js/ui/components/networkAgent.js:370 js/ui/components/networkAgent.js:406 #: js/ui/components/networkAgent.js:743 js/ui/components/networkAgent.js:764 msgid "Authentication required" msgstr "Kimlik doğrulaması gerekli" #: js/ui/components/networkAgent.js:371 js/ui/components/networkAgent.js:744 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network “%s”" msgstr "" "“%s” kablosuz ağına erişmek için parola ya da şifreleme anahtarları gerekiyor" #: js/ui/components/networkAgent.js:375 js/ui/components/networkAgent.js:748 msgid "Wired 802.1X authentication" msgstr "Kablolu 802.1X kimlik doğrulaması" #: js/ui/components/networkAgent.js:378 msgid "Network name" msgstr "Ağ adı" #: js/ui/components/networkAgent.js:386 js/ui/components/networkAgent.js:752 msgid "DSL authentication" msgstr "DSL kimlik doğrulama" #: js/ui/components/networkAgent.js:393 js/ui/components/networkAgent.js:757 msgid "PIN code required" msgstr "PIN kodu gerekli" #: js/ui/components/networkAgent.js:394 js/ui/components/networkAgent.js:758 msgid "PIN code is needed for the mobile broadband device" msgstr "Mobil geniş bant aygıtı için PIN kodu gerekli" #: js/ui/components/networkAgent.js:396 msgid "PIN" msgstr "PIN" #: js/ui/components/networkAgent.js:407 js/ui/components/networkAgent.js:749 #: js/ui/components/networkAgent.js:753 js/ui/components/networkAgent.js:765 #: js/ui/components/networkAgent.js:769 #, javascript-format msgid "A password is required to connect to “%s”" msgstr "“%s”e bağlanmak için parola gerekli" #: js/ui/components/networkAgent.js:768 msgid "VPN password" msgstr "VPN parolası" #: js/ui/components/polkitAgent.js:44 msgid "Authentication Required" msgstr "Kimlik Doğrulaması Gerekli" #: js/ui/components/polkitAgent.js:84 msgid "Administrator" msgstr "Yönetici" #: js/ui/components/polkitAgent.js:149 msgid "Authenticate" msgstr "Doğrula" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:263 js/ui/shellMountOperation.js:415 msgid "Sorry, that didn’t work. Please try again." msgstr "Üzgünüz ama işe yaramadı. Lütfen yeniden deneyin." #: js/ui/ctrlAltTab.js:23 js/ui/overviewControls.js:404 msgid "Windows" msgstr "Pencereler" #: js/ui/dash.js:204 js/ui/dash.js:250 msgid "Show Apps" msgstr "Uygulamaları Göster" #. Translators: this is the name of the dock/favorites area on #. the bottom of the overview #: js/ui/dash.js:408 msgid "Dash" msgstr "Konsol" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:99 msgid "%B %-d %Y" msgstr "%-d %B %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:106 msgid "%A %B %e %Y" msgstr "%e %B %Y %A" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:172 msgctxt "calendar heading" msgid "%B %-d" msgstr "%-d %B" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:175 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%-d %B %Y" #: js/ui/dateMenu.js:181 msgid "Today" msgstr "Bugün" #: js/ui/dateMenu.js:185 msgid "Tomorrow" msgstr "Yarın" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:216 msgctxt "event list time" msgid "All Day" msgstr "Tüm Gün" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:238 msgid "%m/%d" msgstr "%d/%m" #: js/ui/dateMenu.js:289 msgid "No Events" msgstr "Olay Yok" #: js/ui/dateMenu.js:411 msgid "Add World Clocks…" msgstr "Dünya Saatleri Ekle…" #: js/ui/dateMenu.js:412 msgid "World Clocks" msgstr "Dünya Saatleri" #: js/ui/dateMenu.js:702 msgid "Loading…" msgstr "Yükleniyor…" #: js/ui/dateMenu.js:712 msgid "Go Online for Weather Information" msgstr "Hava Durumu Bilgisi İçin Çevrim İçi Olun" #: js/ui/dateMenu.js:714 msgid "Weather Information Unavailable" msgstr "Hava Durumu Bilgisi Kullanılamıyor" #: js/ui/dateMenu.js:724 msgid "Weather" msgstr "Hava Durumu" #: js/ui/dateMenu.js:726 msgid "Select Weather Location…" msgstr "Hava Durumu Konumu Seç…" #: js/ui/endSessionDialog.js:47 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "%s Oturumunu Kapat" #: js/ui/endSessionDialog.js:48 msgctxt "title" msgid "Log Out" msgstr "Oturumu Kapat" #: js/ui/endSessionDialog.js:51 #, javascript-format msgid "%s will be logged out automatically in %d second" msgid_plural "%s will be logged out automatically in %d seconds" msgstr[0] "%s oturumu %d saniyede kendiliğinden kapatılacak" #: js/ui/endSessionDialog.js:57 #, javascript-format msgid "You will be logged out automatically in %d second" msgid_plural "You will be logged out automatically in %d seconds" msgstr[0] "Oturumunuz %d saniyede kendiliğinden kapatılacak" #: js/ui/endSessionDialog.js:64 msgctxt "button" msgid "Log Out" msgstr "Oturumu Kapat" #: js/ui/endSessionDialog.js:70 js/ui/status/system.js:174 msgctxt "title" msgid "Power Off" msgstr "Gücü Kapat" #: js/ui/endSessionDialog.js:71 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Güncellemeleri Kur ve Gücü Kapat" #: js/ui/endSessionDialog.js:74 #, javascript-format msgid "The system will power off automatically in %d second" msgid_plural "The system will power off automatically in %d seconds" msgstr[0] "Sistem %d saniyede kendiliğinden kapatılacak" #: js/ui/endSessionDialog.js:78 js/ui/endSessionDialog.js:97 msgctxt "checkbox" msgid "Install pending software updates" msgstr "Bekleyen yazılım güncellemelerini kur" #: js/ui/endSessionDialog.js:82 msgctxt "button" msgid "Power Off" msgstr "Gücü Kapat" #: js/ui/endSessionDialog.js:89 msgctxt "title" msgid "Restart" msgstr "Yeniden Başlat" #: js/ui/endSessionDialog.js:90 msgctxt "title" msgid "Install Updates & Restart" msgstr "Güncellemeleri Kur ve Yeniden Başlat" #: js/ui/endSessionDialog.js:93 #, javascript-format msgid "The system will restart automatically in %d second" msgid_plural "The system will restart automatically in %d seconds" msgstr[0] "Sistem %d saniyede kendiliğinden yeniden başlayacak" #: js/ui/endSessionDialog.js:101 msgctxt "button" msgid "Restart" msgstr "Yeniden Başlat" #: js/ui/endSessionDialog.js:109 msgctxt "title" msgid "Restart & Install Updates" msgstr "Yeniden Başlat ve Güncellemeleri Kur" #: js/ui/endSessionDialog.js:112 #, javascript-format msgid "The system will automatically restart and install updates in %d second" msgid_plural "" "The system will automatically restart and install updates in %d seconds" msgstr[0] "" "Sistem %d saniyede kendiliğinden yeniden başlayacak ve güncellemeleri kuracak" #: js/ui/endSessionDialog.js:119 js/ui/endSessionDialog.js:140 msgctxt "button" msgid "Restart & Install" msgstr "Yeniden Başlat ve Kur" #: js/ui/endSessionDialog.js:121 msgctxt "button" msgid "Install & Power Off" msgstr "Kur ve Gücü Kapat" #: js/ui/endSessionDialog.js:122 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Güncellemeler kurulduktan sonra gücü kapat" #: js/ui/endSessionDialog.js:129 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "Yeniden Başlat ve Yükseltmeyi Kur" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:134 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "Yeniden başladıktan sonra %s %s kurulacak. Yükseltme kurulumu uzun " "sürebilir: verilerinizi yedeklediğinizden ve bilgisayarınızın prize takılı " "olduğundan emin olun." #: js/ui/endSessionDialog.js:283 msgid "Low battery power: please plug in before installing updates" msgstr "Düşük pil gücü: lütfen güncellemeleri kurmadan önce fişi takın" #: js/ui/endSessionDialog.js:292 msgid "Some applications are busy or have unsaved work" msgstr "Bazı uygulamalar meşgul ya da kaydedilmemiş verisi var" #: js/ui/endSessionDialog.js:297 msgid "Other users are logged in" msgstr "Diğer kullanıcılar oturum açmış" #: js/ui/endSessionDialog.js:467 msgctxt "button" msgid "Boot Options" msgstr "Önyükleme Seçenekleri" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:672 #, javascript-format msgid "%s (remote)" msgstr "%s (uzak)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:675 #, javascript-format msgid "%s (console)" msgstr "%s (uçbirim)" #: js/ui/extensionDownloader.js:280 msgid "Install" msgstr "Kur" #: js/ui/extensionDownloader.js:286 msgid "Install Extension" msgstr "Uzantı Kur" #: js/ui/extensionDownloader.js:287 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "“%s” uzantısı extensions.gnome.org üstünden indirilip kurulsun mu?" #: js/ui/extensionSystem.js:352 msgid "Extension Updates Available" msgstr "Uzantı Güncellemeleri Var" #: js/ui/extensionSystem.js:353 msgid "Extension updates are ready to be installed" msgstr "Uzantı güncellemeleri kuruluma hazır" #: js/ui/inhibitShortcutsDialog.js:70 msgid "Allow inhibiting shortcuts" msgstr "Kısayolları baskılamaya izin ver" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:73 #, javascript-format msgid "The app %s wants to inhibit shortcuts" msgstr "%s uygulaması kısayolları baskılamak istiyor" #: js/ui/inhibitShortcutsDialog.js:74 msgid "An app wants to inhibit shortcuts" msgstr "Bir uygulama, kısayolları baskılamak istiyor" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:81 #, javascript-format msgid "You can restore shortcuts by pressing %s" msgstr "%s kısayoluyla, kısayolları geri yükleyebilirsiniz" #: js/ui/kbdA11yDialog.js:34 msgid "Slow Keys Turned On" msgstr "Yavaş Tuşlar Açık" #: js/ui/kbdA11yDialog.js:35 msgid "Slow Keys Turned Off" msgstr "Yavaş Tuşlar Kapalı" #: js/ui/kbdA11yDialog.js:36 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "Shift tuşuna 8 saniye boyunca bastınız. Bu, klavyenizin çalışma yolunu " "etkileyen Yavaş Tuşlar özelliğinin kısayoludur." #: js/ui/kbdA11yDialog.js:42 msgid "Sticky Keys Turned On" msgstr "Yapışkan Tuşlar Açık" #: js/ui/kbdA11yDialog.js:43 msgid "Sticky Keys Turned Off" msgstr "Yapışkan Tuşlar Kapalı" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "Shift tuşuna art arda 5 kez bastınız. Bu, klavyenizin çalışma yolunu " "etkileyen Yapışkan Tuşlar özelliğinin kısayoludur." #: js/ui/kbdA11yDialog.js:47 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" "İki tuşa aynı anda veya Shift tuşuna art arda 5 kez bastınız. Bu, " "klavyenizin çalışma yolunu etkileyen Yapışkan Tuşlar özelliğini kapatır." #: js/ui/kbdA11yDialog.js:57 msgid "Leave On" msgstr "Açık Bırak" #: js/ui/kbdA11yDialog.js:57 msgid "Turn On" msgstr "Aç" #: js/ui/kbdA11yDialog.js:67 js/ui/status/network.js:455 msgid "Turn Off" msgstr "Kapat" #: js/ui/kbdA11yDialog.js:67 msgid "Leave Off" msgstr "Kapalı Bırak" #: js/ui/keyboard.js:180 js/ui/status/keyboard.js:897 msgid "Keyboard Settings" msgstr "Klavye Ayarları" #: js/ui/lookingGlass.js:727 msgid "No extensions installed" msgstr "Kurulu uzantı yok" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:788 #, javascript-format msgid "%s has not emitted any errors" msgstr "%s, herhangi bir hata vermedi" #: js/ui/lookingGlass.js:794 msgid "Hide Errors" msgstr "Hataları Gizle" #: js/ui/lookingGlass.js:798 js/ui/lookingGlass.js:875 msgid "Show Errors" msgstr "Hataları Göster" #: js/ui/lookingGlass.js:807 msgid "Active" msgstr "Etkin" #: js/ui/lookingGlass.js:810 msgid "Inactive" msgstr "Devre Dışı" #: js/ui/lookingGlass.js:812 msgid "Error" msgstr "Hata" #: js/ui/lookingGlass.js:814 msgid "Out of date" msgstr "Güncel Değil" #: js/ui/lookingGlass.js:816 msgid "Downloading" msgstr "İndiriliyor" #: js/ui/lookingGlass.js:818 msgid "Deactivating" msgstr "Devre Dışı Bırakılıyor" #: js/ui/lookingGlass.js:820 msgid "Activating" msgstr "Etkinleştiriliyor" #: js/ui/lookingGlass.js:853 msgid "View Source" msgstr "Kaynağı Görüntüle" #: js/ui/lookingGlass.js:864 msgid "Web Page" msgstr "Web Sayfası" #: js/ui/main.js:277 msgid "System was put in unsafe mode" msgstr "Sistem güvensiz kipe sokuldu" #: js/ui/main.js:278 msgid "Apps now have unrestricted access" msgstr "Şimdi uygulamaların sınırsız erişimi var" #: js/ui/main.js:338 msgid "Logged in as a privileged user" msgstr "Yetkili kullanıcı olarak oturum açılmış" #: js/ui/main.js:339 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" "Oturumu öncelikli kullanıcı olarak çalıştırmaktan güvenlik nedeniyle " "kaçınılmalıdır. Eğer yapabiliyorsanız sıradan kullanıcı olarak oturum " "açmalısınız." #: js/ui/main.js:387 msgid "Screen Lock disabled" msgstr "Ekran Kilidi devre dışı" #: js/ui/main.js:388 msgid "Screen Locking requires the GNOME display manager" msgstr "Ekran Kilitleme, GNOME ekran yöneticisi gerektirir" #. Translators: this is the string displayed in the header when a message #. source doesn't have a name #: js/ui/messageList.js:374 msgid "Unknown App" msgstr "Bilinmeyen Uygulama" #: js/ui/messageTray.js:326 js/ui/messageTray.js:328 msgid "Notification sound" msgstr "Bildirim sesi" #: js/ui/mpris.js:198 msgid "Unknown artist" msgstr "Bilinmeyen sanatçı" #: js/ui/mpris.js:208 msgid "Unknown title" msgstr "Bilinmeyen başlık" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:328 msgid "Type to search" msgstr "Yazarak ara" #: js/ui/overviewControls.js:392 msgid "Apps" msgstr "Uygulamalar" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:33 msgid "Overview" msgstr "Genel Görünüm" #: js/ui/padOsd.js:98 msgid "New shortcut…" msgstr "Yeni kısayol…" #: js/ui/padOsd.js:151 msgid "App defined" msgstr "Uygulama tanımlı" #: js/ui/padOsd.js:152 msgid "Show on-screen help" msgstr "Ekranda yardımı göster" #: js/ui/padOsd.js:153 msgid "Switch monitor" msgstr "Monitör değiştir" #: js/ui/padOsd.js:154 msgid "Assign keystroke" msgstr "Tuş vuruşu ata" #: js/ui/padOsd.js:223 msgid "Done" msgstr "Bitti" #: js/ui/padOsd.js:726 msgid "Edit…" msgstr "Düzenle…" #: js/ui/padOsd.js:773 msgid "None" msgstr "Yok" #: js/ui/padOsd.js:844 msgid "Press a button to configure" msgstr "Yapılandırmak için düğmeye bas" #: js/ui/padOsd.js:845 msgid "Press Esc to exit" msgstr "Çıkmak için Esc’ye bas" #: js/ui/padOsd.js:848 msgid "Press any key to exit" msgstr "Çıkmak için herhangi bir tuşa bas" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:423 msgid "Activities" msgstr "Etkinlikler" #: js/ui/panel.js:504 msgctxt "System menu in the top bar" msgid "System" msgstr "Sistem" #: js/ui/panel.js:678 msgid "Top Bar" msgstr "Tepe Çubuğu" #: js/ui/quickSettings.js:188 msgid "Open menu" msgstr "Menüyü aç" #: js/ui/runDialog.js:61 msgid "Run a Command" msgstr "Komut Çalıştır" #: js/ui/runDialog.js:76 msgid "Press ESC to close" msgstr "Çıkmak için ESC’ye bas" #: js/ui/runDialog.js:241 msgid "Restart is not available on Wayland" msgstr "Wayland’de yeniden başlatma kullanılabilir değil" #: js/ui/runDialog.js:246 msgid "Restarting…" msgstr "Yeniden başlatılıyor…" #: js/ui/screenShield.js:233 msgid "GNOME needs to lock the screen" msgstr "GNOME’un ekranı kilitlemesi gerekiyor" #: js/ui/screenShield.js:274 js/ui/screenShield.js:667 msgid "Unable to lock" msgstr "Kilitlenemedi" #: js/ui/screenShield.js:275 js/ui/screenShield.js:668 msgid "Lock was blocked by an app" msgstr "Kilitleme bir uygulamaca engellendi" #: js/ui/screenshot.js:1252 msgid "Selection" msgstr "Seçim" #: js/ui/screenshot.js:1262 msgid "Area Selection" msgstr "Alan Seçimi" #: js/ui/screenshot.js:1267 msgid "Screen" msgstr "Ekran" #: js/ui/screenshot.js:1277 msgid "Screen Selection" msgstr "Ekran Seçimi" #: js/ui/screenshot.js:1282 msgid "Window" msgstr "Pencere" #: js/ui/screenshot.js:1292 msgid "Window Selection" msgstr "Pencere Seçimi" #. Translators: entry in the window right click menu. #: js/ui/screenshot.js:1317 js/ui/status/system.js:111 js/ui/windowMenu.js:28 msgid "Take Screenshot" msgstr "Ekran Görüntüsü Al" #: js/ui/screenshot.js:1333 msgid "Record Screen" msgstr "Ekranı Kaydet" #. Translators: since this string refers to an action, #. it needs to be phrased as a verb. #: js/ui/screenshot.js:1350 msgid "Capture" msgstr "Yakala" #: js/ui/screenshot.js:1372 msgid "Show Pointer" msgstr "İmleci Göster" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1996 msgid "Screencasts" msgstr "Ekran Kaydı" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast From 07-17-2013 10:00:46 PM" #: js/ui/screenshot.js:2001 #, no-c-format msgid "Screencast From %d %t" msgstr "Ekran Kaydı %d %t" #. Translators: notification title. #: js/ui/screenshot.js:2047 msgid "Screencast recorded" msgstr "Ekran kaydı yakalandı" #. Translators: notification title. #: js/ui/screenshot.js:2060 msgid "Screencast failed to start" msgstr "Ekran kaydı başlatılamadı" #. Translators: notification title. #: js/ui/screenshot.js:2066 msgid "Screencast ended: Out of disk space" msgstr "Ekran kaydı bitti: Disk alanı doldu" #. We can encourage user to try again on service crashes since the #. recorder will auto-blocklist the pipeline that crashed. #. Translators: notification title. #: js/ui/screenshot.js:2072 msgid "Screencast ended unexpectedly, please try again" msgstr "Ekran kaydı beklenmedik biçimde bitti, lütfen yeniden deneyin" #. Translators: notification title. #: js/ui/screenshot.js:2075 msgid "Screencast ended unexpectedly" msgstr "Ekran kaydı beklenmedik biçimde bitti" #. Translators: notification source name. #: js/ui/screenshot.js:2085 js/ui/screenshot.js:2327 msgid "Screenshot" msgstr "Ekran Görüntüsü" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:2092 msgid "Click here to view the video." msgstr "Videoyu görmek için buraya tıklayın." #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:2100 js/ui/screenshot.js:2343 msgid "Show in Files" msgstr "Dosyalar’da Göster" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2287 #, javascript-format msgid "Screenshot From %s" msgstr "Ekran Görüntüsü %s" #. Translators: notification title. #: js/ui/screenshot.js:2333 msgid "Screenshot captured" msgstr "Ekran görüntüsü yakalandı" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2335 msgid "You can paste the image from the clipboard." msgstr "Resmi panodan yapıştırabilirsiniz." #: js/ui/screenshot.js:2391 js/ui/screenshot.js:2555 msgid "Screenshot taken" msgstr "Ekran görüntüsü alındı" #: js/ui/search.js:829 msgid "Searching…" msgstr "Aranıyor…" #: js/ui/search.js:831 msgid "No results" msgstr "Sonuç yok" #: js/ui/search.js:962 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "%d tane daha" #: js/ui/searchController.js:87 #: subprojects/extensions-app/data/ui/extensions-window.ui:73 msgid "Search" msgstr "Ara" #: js/ui/shellEntry.js:21 msgid "Copy" msgstr "Kopyala" #: js/ui/shellEntry.js:26 msgid "Paste" msgstr "Yapıştır" #: js/ui/shellEntry.js:78 msgid "Show Text" msgstr "Metni Göster" #: js/ui/shellEntry.js:80 msgid "Hide Text" msgstr "Metni Gizle" #: js/ui/shellEntry.js:174 msgid "Caps lock is on" msgstr "Caps lock açık" #: js/ui/shellMountOperation.js:286 msgid "Hidden Volume" msgstr "Gizli Bölüm" #: js/ui/shellMountOperation.js:289 msgid "Windows System Volume" msgstr "Windows Sistem Bölümü" #: js/ui/shellMountOperation.js:292 msgid "Uses Keyfiles" msgstr "Anahtar Dosyaları Kullanır" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:300 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead" msgstr "" "Anahtar dosyaları kullanan bölümün kilidini açmak için %s aracını " "kullanın" #: js/ui/shellMountOperation.js:304 msgid "" "You need an external utility like Disks to unlock a volume that uses " "keyfiles" msgstr "" "Anahtar dosyaları kullanan bölümün kilidini açmak için Diskler gibi " "dış araca gereksinirsiniz" #: js/ui/shellMountOperation.js:312 msgid "PIM Number" msgstr "PIM Numarası" #: js/ui/shellMountOperation.js:371 msgid "Remember Password" msgstr "Parolayı Anımsa" #: js/ui/shellMountOperation.js:386 msgid "Unlock" msgstr "Kilit Aç" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:400 #, javascript-format msgid "Open %s" msgstr "%s’i Aç" #: js/ui/shellMountOperation.js:436 msgid "The PIM must be a number or empty" msgstr "PIM bir sayı ya da boşluk olmalı" #: js/ui/status/accessibility.js:34 msgid "Accessibility" msgstr "Erişilebilirlik" #: js/ui/status/accessibility.js:44 msgid "High Contrast" msgstr "Yüksek Karşıtlık" #: js/ui/status/accessibility.js:47 msgid "Zoom" msgstr "Yakınlaştırma" #: js/ui/status/accessibility.js:54 msgid "Screen Reader" msgstr "Ekran Okuyucu" #: js/ui/status/accessibility.js:58 msgid "Screen Keyboard" msgstr "Ekran Klavyesi" #: js/ui/status/accessibility.js:62 msgid "Visual Alerts" msgstr "Görsel Uyarılar" #: js/ui/status/accessibility.js:66 msgid "Sticky Keys" msgstr "Yapışkan Tuşlar" #: js/ui/status/accessibility.js:70 msgid "Slow Keys" msgstr "Yavaş Tuşlar" #: js/ui/status/accessibility.js:74 msgid "Bounce Keys" msgstr "Zıplayan Tuşlar" #: js/ui/status/accessibility.js:78 msgid "Mouse Keys" msgstr "Fare Tuşları" #: js/ui/status/accessibility.js:83 msgid "Accessibility Settings" msgstr "Erişilebilirlik Ayarları" #: js/ui/status/accessibility.js:140 msgid "Large Text" msgstr "Büyük Yazı" #: js/ui/status/autoRotate.js:14 msgid "Auto Rotate" msgstr "Kendiliğinden Döndür" #: js/ui/status/backgroundApps.js:156 msgctxt "title" msgid "Background Apps" msgstr "Arka Plan Uygulamaları" #: js/ui/status/backgroundApps.js:171 msgid "Apps known to be running without a window" msgstr "Penceresiz çalıştığı bilinen uygulamalar" #: js/ui/status/backgroundApps.js:182 msgid "App Settings" msgstr "Uygulama Ayarları" #: js/ui/status/backgroundApps.js:239 msgid "No Background Apps" msgstr "Arka Plan Uygulaması Yok" #: js/ui/status/backgroundApps.js:241 #, javascript-format msgid "%d Background App" msgid_plural "%d Background Apps" msgstr[0] "%d Arka Plan Uygulaması" #: js/ui/status/backlight.js:39 msgid "Keyboard Brightness" msgstr "Klavye Parlaklığı" #: js/ui/status/backlight.js:79 msgid "Off" msgstr "Kapalı" #: js/ui/status/backlight.js:80 msgid "Low" msgstr "Düşük" #: js/ui/status/backlight.js:81 msgid "High" msgstr "Yüksek" #: js/ui/status/backlight.js:147 js/ui/status/keyboard.js:879 msgid "Keyboard" msgstr "Klavye" #: js/ui/status/bluetooth.js:245 js/ui/status/network.js:360 msgid "Disconnect" msgstr "Bağlantıyı Kes" #: js/ui/status/bluetooth.js:262 js/ui/status/bluetooth.js:264 msgid "Bluetooth" msgstr "Bluetooth" #: js/ui/status/bluetooth.js:287 js/ui/status/network.js:1900 msgid "Bluetooth Settings" msgstr "Bluetooth Ayarları" #: js/ui/status/bluetooth.js:334 msgid "No available or connected devices" msgstr "Kullanılabilir ya da bağlı aygıt yok" #: js/ui/status/bluetooth.js:335 msgid "Turn on Bluetooth to connect to devices" msgstr "Aygıtlara bağlanmak için Bluetooth’u aç" #. Translators: This is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:389 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d Bağlı" #: js/ui/status/brightness.js:32 msgid "Brightness" msgstr "Parlaklık" #: js/ui/status/darkMode.js:12 msgid "Dark Style" msgstr "Koyu Biçem" #: js/ui/status/dwellClick.js:15 msgid "Single Click" msgstr "Tek Tık" #: js/ui/status/dwellClick.js:20 msgid "Double Click" msgstr "Çift Tık" #: js/ui/status/dwellClick.js:25 msgid "Drag" msgstr "Sürükle" #: js/ui/status/dwellClick.js:30 msgid "Secondary Click" msgstr "İkincil Tık" #: js/ui/status/dwellClick.js:39 msgid "Dwell Click" msgstr "Durağan Tık" #: js/ui/status/keyboard.js:896 msgid "Show Keyboard Layout" msgstr "Klavye Düzenini Göster" #: js/ui/status/location.js:337 msgid "Allow location access" msgstr "Konum erişimine izin ver" #. Translators: %s is an application name #: js/ui/status/location.js:339 #, javascript-format msgid "The app %s wants to access your location" msgstr "%s uygulaması konumunuza erişmek istiyor" #: js/ui/status/location.js:349 msgid "Location access can be changed at any time from the privacy settings" msgstr "Konum erişimi, gizlilik ayarlarından her zaman değiştirilebilir" #: js/ui/status/location.js:357 msgid "Deny Access" msgstr "Erişimi Reddet" #: js/ui/status/location.js:362 msgid "Grant Access" msgstr "Erişime İzin Ver" #: js/ui/status/network.js:62 msgid "" msgstr "" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:354 #, javascript-format msgid "Disconnect %s" msgstr "%s Bağlantısını Kes" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:356 #, javascript-format msgid "Connect to %s" msgstr "Bağlan: %s" #: js/ui/status/network.js:1050 msgid "Secure" msgstr "Güvenli" #: js/ui/status/network.js:1050 msgid "Not secure" msgstr "Güvensiz" #: js/ui/status/network.js:1051 #, javascript-format msgid "Signal strength %s%%" msgstr "%%%s sinyal gücü" #. translators: The first placeholder is the network name, the second and indication whether it is secure, and the last the signal strength indication #: js/ui/status/network.js:1053 #, javascript-format msgid "%s, %s, %s" msgstr "%s, %s, %s" #. Translators: %s is a network identifier #: js/ui/status/network.js:1155 #, javascript-format msgid "%s Hotspot" msgstr "%s Erişim Noktası" #: js/ui/status/network.js:1426 #, javascript-format msgid "%d connected" msgid_plural "%d connected" msgstr[0] "%d bağlı" #: js/ui/status/network.js:1524 js/ui/status/network.js:1540 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1525 msgid "VPN Settings" msgstr "VPN Ayarları" #: js/ui/status/network.js:1785 msgid "Wi–Fi" msgstr "Kablosuz" #: js/ui/status/network.js:1787 msgid "All Networks" msgstr "Tüm Ağlar" #: js/ui/status/network.js:1884 msgid "Wired Connections" msgstr "Kablolu Bağlantılar" #: js/ui/status/network.js:1885 msgid "Wired Settings" msgstr "Kablolu Ayarları" #: js/ui/status/network.js:1899 msgid "Bluetooth Tethers" msgstr "Bluetooth İnternet" #. Translators: "Tether" from "Bluetooth Tether" #: js/ui/status/network.js:1906 msgid "Tether" msgstr "İnternet Paylaşımı" #: js/ui/status/network.js:1919 msgid "Mobile Connections" msgstr "Mobil Bağlantılar" #: js/ui/status/network.js:1921 msgid "Mobile Broadband Settings" msgstr "Mobil Geniş Bant Ayarları" #. Translators: "Mobile" from "Mobile Broadband" #: js/ui/status/network.js:1930 msgid "Mobile" msgstr "Mobil" #: js/ui/status/network.js:1964 msgid "Sign Into Wi–Fi Network" msgstr "Kablosuz Ağa Giriş Yap" #: js/ui/status/network.js:2151 msgid "Connection failed" msgstr "Bağlantı başarısız" #: js/ui/status/network.js:2152 msgid "Activation of network connection failed" msgstr "Ağ bağlantısının etkinleşimi başarısız" #: js/ui/status/nightLight.js:19 msgid "Night Light" msgstr "Gece Işığı" #: js/ui/status/powerProfiles.js:19 msgctxt "Power profile" msgid "Performance" msgstr "Başarım" #: js/ui/status/powerProfiles.js:24 msgctxt "Power profile" msgid "Balanced" msgstr "Dengeli" #: js/ui/status/powerProfiles.js:29 msgctxt "Power profile" msgid "Power Saver" msgstr "Güç Tutumu" #: js/ui/status/powerProfiles.js:39 js/ui/status/powerProfiles.js:69 msgid "Power Mode" msgstr "Güç Kipi" #: js/ui/status/powerProfiles.js:71 msgid "Power Settings" msgstr "Güç Ayarları" #: js/ui/status/remoteAccess.js:74 msgid "Stop Screencast" msgstr "Ekran Kaydını Durdur" #: js/ui/status/remoteAccess.js:144 msgid "Stop Screen Sharing" msgstr "Ekran Paylaşımını Durdur" #: js/ui/status/rfkill.js:99 msgid "Airplane Mode" msgstr "Uçak Kipi" #: js/ui/status/system.js:168 msgid "Power Off Menu" msgstr "Gücü Kapat Menüsü" #: js/ui/status/system.js:176 msgid "Suspend" msgstr "Askıya Al" #: js/ui/status/system.js:181 msgid "Restart…" msgstr "Yeniden Başlat…" #: js/ui/status/system.js:186 msgid "Power Off…" msgstr "Gücü Kapat…" #: js/ui/status/system.js:193 #: subprojects/extensions-app/data/ui/extensions-window.ui:124 msgid "Log Out…" msgstr "Oturumu Kapat…" #: js/ui/status/system.js:198 msgid "Switch User…" msgstr "Kullanıcı Değiştir…" #: js/ui/status/system.js:242 msgctxt "action" msgid "Lock Screen" msgstr "Ekranı Kilitle" #: js/ui/status/thunderbolt.js:308 msgid "Unknown Thunderbolt device" msgstr "Bilinmeyen Thunderbolt aygıtı" #: js/ui/status/thunderbolt.js:309 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" "Siz uzaktayken yeni aygıt saptandı. Kullanmaya başlamadan önce aygıtın " "bağlantısını kesin ve yeniden bağlayın." #: js/ui/status/thunderbolt.js:312 msgid "Unauthorized Thunderbolt device" msgstr "Yetkisiz Thunderbolt aygıtı" #: js/ui/status/thunderbolt.js:313 msgid "" "New device has been detected and needs to be authorized by an administrator" msgstr "Yeni aygıt saptandı ve yöneticice yetkilendirilmelidir" #: js/ui/status/thunderbolt.js:319 msgid "Thunderbolt authorization error" msgstr "Thunderbolt yetkilendirme hatası" #: js/ui/status/thunderbolt.js:320 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "Thunderbolt aygıtı yetkilendirilemedi: %s" #: js/ui/status/volume.js:218 msgid "Volume changed" msgstr "Ses değişti" #: js/ui/status/volume.js:231 msgid "Unmute" msgstr "Sesi aç" #: js/ui/status/volume.js:231 msgid "Mute" msgstr "Sessiz" #: js/ui/status/volume.js:286 msgid "Volume" msgstr "Ses" #: js/ui/status/volume.js:302 msgid "Sound Output" msgstr "Ses Çıktısı" #: js/ui/status/volume.js:374 msgid "Sound Input" msgstr "Ses Girdisi" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:20 msgid "Mirror" msgstr "Aynala" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:29 msgid "Join Displays" msgstr "Birleştir" #. Translators: this is for using only external displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:39 msgid "External Only" msgstr "Yalnızca Dış" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:47 msgid "Built-in Only" msgstr "Yalnızca İç" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:378 msgid "%A %B %-d" msgstr "%A, %-d %B" #: js/ui/unlockDialog.js:384 msgid "Swipe up to unlock" msgstr "Kilidi açmak için yukarı kaydır" #: js/ui/unlockDialog.js:385 msgid "Click or press a key to unlock" msgstr "Kilidi açmak için tıklayın ya da bir tuşa basın" #: js/ui/unlockDialog.js:568 msgid "Unlock Window" msgstr "Kilit Açma Penceresi" #: js/ui/unlockDialog.js:577 msgid "Log in as another user" msgstr "Başka kullanıcı olarak oturum aç" #: js/ui/welcomeDialog.js:47 #, javascript-format msgid "GNOME %s" msgstr "GNOME %s" #: js/ui/welcomeDialog.js:51 #, javascript-format msgid "Welcome to %s" msgstr "%s’a Hoş Geldiniz" #: js/ui/welcomeDialog.js:52 msgid "If you want to learn your way around, check out the tour" msgstr "Eğer yolu öğrenmek istiyorsanız, gezintiye çıkın" #: js/ui/welcomeDialog.js:61 msgid "Skip" msgstr "Atla" #: js/ui/welcomeDialog.js:66 msgid "Take Tour" msgstr "Gezintiye Çık" #: js/ui/windowAttentionHandler.js:18 #, javascript-format msgid "“%s” is ready" msgstr "“%s” hazır" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:68 msgid "Keep these display settings?" msgstr "Bu görüntü ayarları saklansın mı?" #: js/ui/windowManager.js:78 msgid "Revert Settings" msgstr "Ayarları Eskisine Döndür" #: js/ui/windowManager.js:83 msgid "Keep Changes" msgstr "Değişiklikleri Sakla" #: js/ui/windowManager.js:103 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "Ayarlardaki değişiklikler %d saniyede eskisine döndürülecek" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:500 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:40 msgid "Hide" msgstr "Gizle" #: js/ui/windowMenu.js:47 msgid "Restore" msgstr "Geri Yükle" #: js/ui/windowMenu.js:51 msgid "Maximize" msgstr "Ekranı Kapla" #: js/ui/windowMenu.js:58 msgid "Move" msgstr "Taşı" #: js/ui/windowMenu.js:78 msgid "Resize" msgstr "Yeniden Boyutlandır" #: js/ui/windowMenu.js:98 msgid "Always on Top" msgstr "Her Zaman Üstte" #: js/ui/windowMenu.js:117 msgid "Always on Visible Workspace" msgstr "Her Zaman Görünür Çalışma Alanında" #: js/ui/windowMenu.js:131 msgid "Move to Workspace Left" msgstr "Soldaki Çalışma Alanına Taşı" #: js/ui/windowMenu.js:137 msgid "Move to Workspace Right" msgstr "Sağdaki Çalışma Alanına Taşı" #: js/ui/windowMenu.js:143 msgid "Move to Workspace Up" msgstr "Üstteki Çalışma Alanına Taşı" #: js/ui/windowMenu.js:149 msgid "Move to Workspace Down" msgstr "Alttaki Çalışma Alanına Taşı" #: js/ui/windowMenu.js:167 msgid "Move to Monitor Up" msgstr "Üstteki Monitöre Taşı" #: js/ui/windowMenu.js:176 msgid "Move to Monitor Down" msgstr "Alttaki Monitöre Taşı" #: js/ui/windowMenu.js:185 msgid "Move to Monitor Left" msgstr "Soldaki Monitöre Taşı" #: js/ui/windowMenu.js:194 msgid "Move to Monitor Right" msgstr "Sağdaki Monitöre Taşı" #: js/ui/windowMenu.js:202 msgid "Close" msgstr "Kapat" #: src/main.c:527 subprojects/extensions-tool/src/main.c:336 msgid "Print version" msgstr "Sürümü yazdır" #: src/main.c:533 msgid "Mode used by GDM for login screen" msgstr "Oturum açma ekranında GDM tarafından kullanılan kip" #: src/main.c:539 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "Oturum açma ekranı için -“gdm” gibi- özel kip kullan" #: src/main.c:545 msgid "List possible modes" msgstr "Olası kipleri listele" #: src/main.c:551 msgid "Force animations to be enabled" msgstr "Canlandırmaları etkinleştirilmeye zorla" #: src/shell-app.c:252 msgctxt "program" msgid "Unknown" msgstr "Bilinmeyen" #: src/shell-app.c:503 #, c-format msgid "Failed to launch “%s”" msgstr "“%s” başlatılamadı" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match" msgstr "Parolalar eşleşmiyor" #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "Parola boş bırakılamaz" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "Kimlik doğrulama penceresi kullanıcıca kapatıldı" #: src/st/st-icon-theme.c:1865 #, c-format msgid "Icon '%s' not present in theme %s" msgstr "%2$s gövdesinde '%1$s' simgesi yok" #: src/st/st-icon-theme.c:3454 src/st/st-icon-theme.c:3757 msgid "Failed to load icon" msgstr "Simge yüklenemedi" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 msgid "Manage your GNOME Extensions" msgstr "GNOME Uzantılarını Yönet" #. developer_name tag deprecated with Appstream 1.0 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:19 msgid "The GNOME Project" msgstr "GNOME Projesi" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:51 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" "GNOME Uzantılar; uzantıları güncellemeyi, uzantı tercihlerini yapılandırmayı " "ve istenmeyen uzantıları kaldırmayı veya devre dışı bırakmanızı sağlar." #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:64 msgid "Main Window" msgstr "Ana Pencere" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:68 msgid "Available Updates" msgstr "Kullanılabilir Güncellemeler" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:72 msgid "Search View" msgstr "Arama Görünümü" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "GNOME Kabuğu Uzantılarını Ayarla" #: subprojects/extensions-app/js/extensionManager.js:237 #, javascript-format msgid "" "The installed version of this extension (%s) is incompatible with the " "current version of GNOME (%s). The extension has been disabled." msgstr "" "Bu uzantının kurulu sürümü (%s) geçerli GNOME (%s) sürümüyle uyumsuz. Uzantı " "devre dışı bırakıldı." #: subprojects/extensions-app/js/extensionManager.js:238 #, javascript-format msgid "" "The installed version of this extension is incompatible with the current " "version of GNOME (%s). The extension has been disabled." msgstr "" "Bu uzantının kurulu sürümü geçerli GNOME (%s) sürümüyle uyumsuz. Uzantı " "devre dışı bırakıldı." #: subprojects/extensions-app/js/extensionManager.js:242 msgid "" "An error has occurred in this extension. This could cause issues elsewhere " "in the system. It is recommended to turn the extension off until the error " "is resolved." msgstr "" "Bu uzantıda hata oluştu. Bu, sistemin herhangi bir yerinde sorunlara neden " "olabilir. Hata çözülene dek uzantıyı kapatmanız önerilir." #. translators: Details for an extension error #: subprojects/extensions-app/js/extensionManager.js:248 msgid "Error details:" msgstr "Hata ayrıntıları:" #: subprojects/extensions-app/js/extensionRow.js:82 #, javascript-format msgid "Version %s" msgstr "Sürüm %s" #: subprojects/extensions-app/js/extensionsWindow.js:113 #, javascript-format msgid "Remove “%s”?" msgstr "“%s” Kaldırılsın Mı?" #: subprojects/extensions-app/js/extensionsWindow.js:114 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "" "Uzantıyı kaldırırsanız, yeniden etkinleştirmek istediğinizde yeniden " "indirmeniz gerekir" #: subprojects/extensions-app/js/extensionsWindow.js:117 msgid "_Cancel" msgstr "İ_ptal" #: subprojects/extensions-app/js/extensionsWindow.js:118 msgid "_Remove" msgstr "_Kaldır" #: subprojects/extensions-app/js/extensionsWindow.js:158 msgid "translator-credits" msgstr "" "Emin Tufan Çetin \n" "Muhammet Kara \n" "Sabri Ünal " #: subprojects/extensions-app/js/extensionsWindow.js:203 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "%d uzantı sonraki oturum açılışında güncellenecek." #: subprojects/extensions-app/data/ui/extension-row.ui:22 msgid "Error Details" msgstr "Hata Ayrıntıları" #: subprojects/extensions-app/data/ui/extension-row.ui:62 msgid "Updates Details" msgstr "Güncelleme Ayrıntıları" #: subprojects/extensions-app/data/ui/extension-row.ui:72 msgid "" "A new version of this extension is ready and will be loaded on next login." msgstr "" "Bu uzantının yeni sürümü hazır ve sonraki oturum açılışında yüklenecek." #: subprojects/extensions-app/data/ui/extension-row.ui:104 msgid "Extension Details" msgstr "Uzantı Ayrıntıları" #: subprojects/extensions-app/data/ui/extension-row.ui:192 msgid "_Website" msgstr "_Web Sitesi" #: subprojects/extensions-app/data/ui/extension-row.ui:219 msgid "_Settings" msgstr "_Ayarlar" #: subprojects/extensions-app/data/ui/extension-row.ui:246 msgid "_Remove…" msgstr "_Kaldır…" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Keyboard Shortcuts" msgstr "Klavye Kısayolları" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "Uzantılar Hakkında" #: subprojects/extensions-app/data/ui/extensions-window.ui:64 msgid "Main Menu" msgstr "Ana Menü" #: subprojects/extensions-app/data/ui/extensions-window.ui:106 msgid "Search extensions" msgstr "Uzantı ara" #: subprojects/extensions-app/data/ui/extensions-window.ui:134 msgid "_Extensions" msgstr "_Uzantılar" #: subprojects/extensions-app/data/ui/extensions-window.ui:139 msgid "More Information" msgstr "Daha Çok Bilgi" #: subprojects/extensions-app/data/ui/extensions-window.ui:151 msgid "" "Extensions can cause performance and stability issues. It is recommended to " "disable all extensions if you experience problems with your system." msgstr "" "Uzantılar başarım ve kararlılık sorunlarına neden olabilir. Sisteminizde " "sorun yaşarsanız tüm uzantıları devre dışı bırakmanız önerilir." #: subprojects/extensions-app/data/ui/extensions-window.ui:178 msgid "User Extensions" msgstr "Kullanıcı Uzantıları" #: subprojects/extensions-app/data/ui/extensions-window.ui:198 msgid "System Extensions" msgstr "Sistem Uzantıları" #: subprojects/extensions-app/data/ui/extensions-window.ui:233 msgid "Search Results" msgstr "Arama Sonuçları" #: subprojects/extensions-app/data/ui/extensions-window.ui:252 msgid "No Results Found" msgstr "Sonuç Bulunamadı" #: subprojects/extensions-app/data/ui/extensions-window.ui:253 msgid "Try a different search" msgstr "Başka arama deneyin" #: subprojects/extensions-app/data/ui/extensions-window.ui:264 msgid "No Installed Extensions" msgstr "Yüklü Uzantı Yok" #: subprojects/extensions-app/data/ui/extensions-window.ui:265 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" "Uzantı bulmak ve eklemek için extensions.gnome.org adresine göz atın." #: subprojects/extensions-app/data/ui/extensions-window.ui:276 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" "Üzgünüz, kurulu uzantıların listesi alınamadı. GNOME’da oturum açtığınızdan " "emin olun ve yeniden deneyin." #: subprojects/extensions-app/data/ui/help-overlay.ui:9 msgctxt "shortcut window" msgid "General" msgstr "Genel" #: subprojects/extensions-app/data/ui/help-overlay.ui:12 msgctxt "shortcut window" msgid "Open Menu" msgstr "Menüyü Aç" #: subprojects/extensions-app/data/ui/help-overlay.ui:18 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Aramayı Değiştir" #: subprojects/extensions-app/data/ui/help-overlay.ui:24 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Kısayolları Göster" #: subprojects/extensions-app/data/ui/help-overlay.ui:30 msgctxt "shortcut window" msgid "Quit" msgstr "Çık" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:284 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "Yeni uzantı %s içinde oluşturuldu.\n" #: subprojects/extensions-tool/src/command-create.c:376 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" "Ad çok kısa (ideal olarak açıklayıcı) dizge olmalıdır.\n" "Örnekler: %s" #: subprojects/extensions-tool/src/command-create.c:382 #: subprojects/extensions-tool/src/main.c:243 msgid "Name" msgstr "Ad" #: subprojects/extensions-tool/src/command-create.c:396 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" "Açıklama, uzantınızın ne yaptığı anlatan tek tümcelik tanımlamadır.\n" "Örnekler: %s" #: subprojects/extensions-tool/src/command-create.c:402 #: subprojects/extensions-tool/src/main.c:246 msgid "Description" msgstr "Açıklama" #: subprojects/extensions-tool/src/command-create.c:416 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" "UUID, uzantınız için genel ve benzersiz tanımlayıcıdır.\n" "E-posta biçiminde olmalıdır (tiklayarakodakla@birisi.ornek.com)\n" #: subprojects/extensions-tool/src/command-create.c:443 msgid "Choose one of the available templates:\n" msgstr "Uygun şablonlardan birini seçin:\n" #: subprojects/extensions-tool/src/command-create.c:457 msgid "Template" msgstr "Şablon" #: subprojects/extensions-tool/src/command-create.c:515 msgid "The unique identifier of the new extension" msgstr "Yeni uzantının eşsiz tanımlayıcısı" #: subprojects/extensions-tool/src/command-create.c:518 msgid "NAME" msgstr "AD" #: subprojects/extensions-tool/src/command-create.c:519 msgid "The user-visible name of the new extension" msgstr "Yeni uzantının kullanıcıca görülebilir adı" #: subprojects/extensions-tool/src/command-create.c:521 msgid "DESCRIPTION" msgstr "AÇIKLAMA" #: subprojects/extensions-tool/src/command-create.c:523 msgid "A short description of what the extension does" msgstr "Uzantının ne yaptığıyla ilgili kısa açıklama" #: subprojects/extensions-tool/src/command-create.c:525 #: subprojects/extensions-tool/src/command-pack.c:455 msgid "DOMAIN" msgstr "ALAN_ADI" #: subprojects/extensions-tool/src/command-create.c:527 msgid "The gettext domain used by the extension" msgstr "Uzantı tarafından kullanılan gettext alan adı" #: subprojects/extensions-tool/src/command-create.c:529 #: subprojects/extensions-tool/src/command-pack.c:448 msgid "SCHEMA" msgstr "ŞEMA" #: subprojects/extensions-tool/src/command-create.c:531 msgid "The GSettings schema used by the extension" msgstr "Uzantı tarafından kullanılan GSettings şeması" #: subprojects/extensions-tool/src/command-create.c:534 msgid "TEMPLATE" msgstr "ŞABLON" #: subprojects/extensions-tool/src/command-create.c:535 msgid "The template to use for the new extension" msgstr "Yeni uzantı için kullanılacak şablon" #: subprojects/extensions-tool/src/command-create.c:538 msgid "Include prefs.js template" msgstr "prefs.js şablonunu içer" #: subprojects/extensions-tool/src/command-create.c:544 msgid "Enter extension information interactively" msgstr "Uzantı bilgisini etkileşimli olarak gir" #: subprojects/extensions-tool/src/command-create.c:552 msgid "Create a new extension" msgstr "Yeni uzantı oluştur" #: subprojects/extensions-tool/src/command-create.c:570 #: subprojects/extensions-tool/src/command-list.c:190 msgid "Unknown arguments" msgstr "Bilinmeyen argüman" #: subprojects/extensions-tool/src/command-create.c:595 msgid "UUID, name and description are required" msgstr "UUID, ad ve açıklama gereklidir" #: subprojects/extensions-tool/src/command-disable.c:62 #: subprojects/extensions-tool/src/command-enable.c:62 #, c-format msgid "Extension “%s” does not exist\n" msgstr "“%s” uzantısı yok\n" #: subprojects/extensions-tool/src/command-disable.c:98 msgid "Disable an extension" msgstr "Uzantı devre dışı bırak" #: subprojects/extensions-tool/src/command-disable.c:116 #: subprojects/extensions-tool/src/command-enable.c:116 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "Verilen UUID yok" #: subprojects/extensions-tool/src/command-disable.c:121 #: subprojects/extensions-tool/src/command-enable.c:121 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "Birden ÇOK UUID verildi" #: subprojects/extensions-tool/src/command-enable.c:98 msgid "Enable an extension" msgstr "Uzantı etkinleştir" #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:66 #: subprojects/extensions-tool/src/main.c:150 msgid "Failed to connect to GNOME Shell\n" msgstr "GNOME Kabuğu’na bağlanılamadı\n" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:159 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "“%s” uzantısı yok\n" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "Uzantı bilgisini göster" #: subprojects/extensions-tool/src/command-install.c:190 msgid "Overwrite an existing extension" msgstr "Var olan uzantının üzerine yaz" #: subprojects/extensions-tool/src/command-install.c:192 msgid "EXTENSION_BUNDLE" msgstr "UZANTI_DEMETİ" #: subprojects/extensions-tool/src/command-install.c:201 msgid "Install an extension bundle" msgstr "Uzantı demeti kur" #: subprojects/extensions-tool/src/command-install.c:219 msgid "No extension bundle specified" msgstr "Uzantı demeti belirtilmedi" #: subprojects/extensions-tool/src/command-install.c:225 msgid "More than one extension bundle specified" msgstr "Birden çok uzantı demeti belirtildi" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show user-installed extensions" msgstr "Kullanıcı uzantılarını göster" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show system-installed extensions" msgstr "Sistem uzantılarını göster" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Show enabled extensions" msgstr "Etkinleştirilmiş uzantıları göster" #: subprojects/extensions-tool/src/command-list.c:149 msgid "Show disabled extensions" msgstr "Devre dışı bırakılmış uzantıları göster" #: subprojects/extensions-tool/src/command-list.c:152 msgid "Show extensions in active state" msgstr "Etkin durumdaki uzantıları göster" #: subprojects/extensions-tool/src/command-list.c:155 msgid "Show extensions in inactive state" msgstr "Etkin olmayan uzantıları göster" #: subprojects/extensions-tool/src/command-list.c:158 msgid "Show extensions with preferences" msgstr "Tercihleri olan uzantıları göster" #: subprojects/extensions-tool/src/command-list.c:161 msgid "Show extensions with updates" msgstr "Güncellemeleri olan uzantıları göster" #: subprojects/extensions-tool/src/command-list.c:164 msgid "Print extension details" msgstr "Uzantı ayrıntılarını yazdır" #: subprojects/extensions-tool/src/command-list.c:172 msgid "List installed extensions" msgstr "Kurulu uzantıları listele" #: subprojects/extensions-tool/src/command-pack.c:444 msgid "FILE" msgstr "DOSYA" #: subprojects/extensions-tool/src/command-pack.c:445 msgid "Additional source to include in the bundle" msgstr "Demete eklenecek ek kaynak" #: subprojects/extensions-tool/src/command-pack.c:449 msgid "A GSettings schema that should be included" msgstr "İçerilmesi gereken GSettings şeması" #: subprojects/extensions-tool/src/command-pack.c:451 #: subprojects/extensions-tool/src/command-pack.c:462 msgid "DIRECTORY" msgstr "DİZİN" #: subprojects/extensions-tool/src/command-pack.c:453 msgid "The directory where translations are found" msgstr "Çevirilerin bulunduğu dizin" #: subprojects/extensions-tool/src/command-pack.c:457 msgid "The gettext domain to use for translations" msgstr "Çeviriler için kullanılacak gettext alan adı" #: subprojects/extensions-tool/src/command-pack.c:460 msgid "Overwrite an existing pack" msgstr "Var olan paketin üstüne yaz" #: subprojects/extensions-tool/src/command-pack.c:464 msgid "The directory where the pack should be created" msgstr "Paketin oluşturacağı dizin" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "SOURCE_DIRECTORY" msgstr "KAYNAK_DİZİN" #: subprojects/extensions-tool/src/command-pack.c:475 msgid "Create an extension bundle" msgstr "Yeni uzantı demeti oluştur" #: subprojects/extensions-tool/src/command-pack.c:495 msgid "More than one source directory specified" msgstr "Birden çok kaynak dizin belirtildi" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "“%s” uzantısının tercihleri yok\n" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "“%s” eklentisi için prefs açılamadı: %s\n" #: subprojects/extensions-tool/src/command-prefs.c:87 msgid "Opens extension preferences" msgstr "GNOME Kabuğu Uzantı Tercihleri" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "Uzantıyı sıfırla" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "Sistem uzantıları kaldırılamaz\n" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "“%s” kaldırılamadı\n" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "Uzantı kaldır" #: subprojects/extensions-tool/src/main.c:76 msgid "Do not print error messages" msgstr "Hata iletilerini yazdırma" #: subprojects/extensions-tool/src/main.c:249 msgid "Path" msgstr "Yol" #: subprojects/extensions-tool/src/main.c:252 msgid "URL" msgstr "URL" #: subprojects/extensions-tool/src/main.c:255 msgid "Original author" msgstr "Özgün yazar" #: subprojects/extensions-tool/src/main.c:261 #: subprojects/extensions-tool/src/main.c:263 #: subprojects/extensions-tool/src/main.c:265 msgid "Version" msgstr "Sürüm" #: subprojects/extensions-tool/src/main.c:268 msgid "Enabled" msgstr "Etkin" #: subprojects/extensions-tool/src/main.c:268 msgid "Yes" msgstr "Evet" #: subprojects/extensions-tool/src/main.c:268 msgid "No" msgstr "Hayır" #: subprojects/extensions-tool/src/main.c:271 msgid "State" msgstr "Durum" #: subprojects/extensions-tool/src/main.c:309 msgid "“version” takes no arguments" msgstr "“version” hiçbir argüman almaz" #: subprojects/extensions-tool/src/main.c:311 #: subprojects/extensions-tool/src/main.c:331 msgid "Usage:" msgstr "Kullanım:" #: subprojects/extensions-tool/src/main.c:314 msgid "Print version information and exit." msgstr "Sürüm bilgisini yazdır ve çık." #: subprojects/extensions-tool/src/main.c:329 #: subprojects/extensions-tool/src/main.c:332 msgid "COMMAND" msgstr "KOMUT" #: subprojects/extensions-tool/src/main.c:332 msgid "[ARGS…]" msgstr "[ARGÜMANLAR…]" #: subprojects/extensions-tool/src/main.c:334 msgid "Commands:" msgstr "Komutlar:" #: subprojects/extensions-tool/src/main.c:335 msgid "Print help" msgstr "Yardımı yazdır" #: subprojects/extensions-tool/src/main.c:337 msgid "Enable extension" msgstr "Uzantıyı etkinleştir" #: subprojects/extensions-tool/src/main.c:338 msgid "Disable extension" msgstr "Uzantıyı devre dışı bırak" #: subprojects/extensions-tool/src/main.c:339 msgid "Reset extension" msgstr "Uzantıyı sıfırla" #: subprojects/extensions-tool/src/main.c:340 msgid "Uninstall extension" msgstr "Uzantıyı kaldır" #: subprojects/extensions-tool/src/main.c:341 msgid "List extensions" msgstr "Uzantıları listele" #: subprojects/extensions-tool/src/main.c:342 #: subprojects/extensions-tool/src/main.c:343 msgid "Show extension info" msgstr "Uzantı bilgisini göster" #: subprojects/extensions-tool/src/main.c:344 msgid "Open extension preferences" msgstr "GNOME Kabuğu Uzantı Tercihleri" #: subprojects/extensions-tool/src/main.c:345 msgid "Create extension" msgstr "Uzantı oluştur" #: subprojects/extensions-tool/src/main.c:346 msgid "Package extension" msgstr "Uzantıyı paketle" #: subprojects/extensions-tool/src/main.c:347 msgid "Install extension bundle" msgstr "Uzantı demetini kur" #: subprojects/extensions-tool/src/main.c:349 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "Ayrıntılı yardım almak için “%s” kullanın.\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "Düz" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "Boş uzantı" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "Belirteç" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "Üst çubuğa simge ekle" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:4 msgid "Quick Settings Item" msgstr "Hızlı Ayarlar Ögesi" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:5 msgid "Add an item to quick settings" msgstr "Hızlı ayarlara öge ekle" #. translators: #. * The device has been disabled #: subprojects/gvc/gvc-mixer-control.c:1872 msgid "Disabled" msgstr "Devre dışı" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1879 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u Çıktı" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1889 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u Girdi" #: subprojects/gvc/gvc-mixer-control.c:2872 msgid "System Sounds" msgstr "Sistem Sesleri" 07070100000269000081A40000000000000000000000016712993F00012654000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/ug.po# Uyghur translation for gnome-shell. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Gheyret Kenji,2010. # Sahran , 2010. # Zeper , 2010. # Bakhtiyar, 2011 # Oghlan Temkin ,2011 # msgid "" msgstr "" "Project-Id-Version: gnome-shell\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2013-03-04 08:38+0000\n" "PO-Revision-Date: 2013-03-07 21:01+0900\n" "Last-Translator: Gheyret Kenji \n" "Language-Team: Uyghur Computer Science Association \n" "Language: ug\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" #: ../data/50-gnome-shell-screenshot.xml.in.h:1 msgid "Screenshots" msgstr "ئېكران كۆرۈنۈشى" #: ../data/50-gnome-shell-screenshot.xml.in.h:2 msgid "Record a screencast" msgstr "ئېكراننى سۈرەتكە ئېلىش" #: ../data/50-gnome-shell-system.xml.in.h:1 msgid "System" msgstr "سىستېما" #: ../data/50-gnome-shell-system.xml.in.h:2 msgid "Show the message tray" msgstr "ئۇچۇر قوندىقىنى كۆرسىتىش" #: ../data/50-gnome-shell-system.xml.in.h:3 msgid "Focus the active notification" msgstr "ئاكتىپ ئۇقتۇرۇشقا فوكۇسلىنىش" #: ../data/50-gnome-shell-system.xml.in.h:4 msgid "Show all applications" msgstr "بارلىق پروگراممىنى كۆرسىتىش" #: ../data/50-gnome-shell-system.xml.in.h:5 msgid "Open the application menu" msgstr "پروگرامما تىزىملىكىنى كۆرسىتىش" #: ../data/gnome-shell.desktop.in.in.h:1 msgid "GNOME Shell" msgstr "گىنوم Shell" #: ../data/gnome-shell.desktop.in.in.h:2 msgid "Window management and application launching" msgstr "كۆزنەك باشقۇرۇش ۋە پروگرامما ئىجرا قىلىش پروگراممىسى" #: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1 #: ../js/extensionPrefs/main.js:153 msgid "GNOME Shell Extension Preferences" msgstr "گىنوم Shell كېڭەيتمىسىنىڭ مايىللىقى" #: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2 msgid "Configure GNOME Shell Extensions" msgstr "گىنوم Shell كېڭەيتمىسىنى سەپلەش" #: ../data/org.gnome.shell.gschema.xml.in.in.h:1 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "ئىچكى قورال قوزغىتىلسا ئىجادكارلار ۋە سىنىغۇچىلارنىڭ Alt-F2 ئارقىلىق كىرىشىگە قۇلايلىق" #: ../data/org.gnome.shell.gschema.xml.in.in.h:2 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "ئىچكى سازلاش ۋە كۆزىتىش قورالىنى زىيارەت قىلىشتا Alt-F2 ئىشلىتىشكە ئىجازەت." #: ../data/org.gnome.shell.gschema.xml.in.in.h:3 msgid "Uuids of extensions to enable" msgstr "ئىناۋەتلىك قىلىدىغان كېڭەيتىلمىنىڭ Uuids سى" #: ../data/org.gnome.shell.gschema.xml.in.in.h:4 msgid "" "GNOME Shell extensions have a uuid property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension DBus methods on org.gnome.Shell." msgstr "گىنوم Shell كېڭەيتىلمىسىنىڭ uuid خاسلىقى بولىدۇ. بۇ ئاچقۇچتا ئىناۋەتلىك قىلىنىدىغان كېڭەيتىلمىلەرنىڭ تىزىمى بار. ئوقۇلىدىغان كېڭەيتىلمىلەر چوقۇم مۇشۇ تىزىمدا بولۇشى كېرەك. بۇ تىزىمنى org.gnome.Shell دىكى DBus نىڭ EnableExtension ۋە DisableExtension دېگەن فۇنكسىيىلىرى(methods) ئارقىلىق باشقۇرغىلى بولىدۇ." #: ../data/org.gnome.shell.gschema.xml.in.in.h:5 msgid "Whether to collect stats about applications usage" msgstr "پروگراممىنىڭ ئىشلىتىلىشى ھەققىدىكى ستاتىستىكىنى توپلامدۇ يوق" #: ../data/org.gnome.shell.gschema.xml.in.in.h:6 msgid "" "The shell normally monitors active applications in order to present the most " "used ones (e.g. in launchers). While this data will be kept private, you may " "want to disable this for privacy reasons. Please note that doing so won't " "remove already saved data." msgstr "چاپان (shell) ئادەتتىكى ئەھۋالدا كۆپ ئىشلىتىلىدىغان ئاكتىپ پروگراممىلار(مەسىلەن، ئىجرا قىلىنىۋاتقان)نى كۆزىتىدۇ. گەرچە بۇ سانلىق مەلۇماتلار مەخپىي ساقلانسىمۇ، شەخسىي سىر سەۋەبىدىن بۇنى چەكلىشىڭىز مۇمكىن. دىققەت بۇنداق قىلغاندا ئاللىبۇرۇن ساقلانغان سانلىق مەلۇماتلار چىقىرىۋېتىلمەيدۇ." #: ../data/org.gnome.shell.gschema.xml.in.in.h:7 msgid "List of desktop file IDs for favorite applications" msgstr "ئامراق پروگراممىلارنىڭ ئۈستەلئۈستى ھۆججەت ID تىزىمى" #: ../data/org.gnome.shell.gschema.xml.in.in.h:8 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "مۇناسىپ پروگرامما بەلگىسى يىغقۇچ رايونىدا كۆرسىتىلىدۇ." #: ../data/org.gnome.shell.gschema.xml.in.in.h:9 msgid "List of categories that should be displayed as folders" msgstr "قىسقۇچ سۈپىتىدە كۆرسىتىلىدىغان كاتېگورىيەلەرنىڭ تىزىمى" #: ../data/org.gnome.shell.gschema.xml.in.in.h:10 msgid "" "Each category name in this list will be represented as folder in the " "application view, rather than being displayed inline in the main view." msgstr "پروگرامما كۆرۈنۈشىدە ھەر بىر كاتېگورىيە ئاتى قىسقۇچ سۈپىتىدە ئىپادىلىنىدۇ، ئاساسىي كۆرۈنۈشتە كۆرسىتىلمەيدۇ." #: ../data/org.gnome.shell.gschema.xml.in.in.h:11 msgid "History for command (Alt-F2) dialog" msgstr "بۇيرۇق (Alt-F2) سۆزلەشكۈنىڭ تارىخى" #: ../data/org.gnome.shell.gschema.xml.in.in.h:12 msgid "History for the looking glass dialog" msgstr "looking glass سۆزلەشكۈنىڭ تارىخى" #: ../data/org.gnome.shell.gschema.xml.in.in.h:13 msgid "" "Internally used to store the last IM presence explicitly set by the user. " "The value here is from the TpConnectionPresenceType enumeration." msgstr "ئىشلەتكۈچى تەرىپىدىن روشەن بەلگىلەنگەن ئەڭ يېڭى IM ھالىتى ساقلاش ئۈچۈن ئىچكى قىسىمدا ئىشلىتىلىدۇ. بۇ TpConnectionPresenceType نىڭ قىممىتى بولىدۇ." #: ../data/org.gnome.shell.gschema.xml.in.in.h:14 msgid "" "Internally used to store the last session presence status for the user. The " "value here is from the GsmPresenceStatus enumeration." msgstr "ئىشلەتكۈچىنىڭ ئەڭ يېڭى ھالىتى ساقلاش ئۈچۈن ئىچكى قىسىمدا ئىشلىتىلىدۇ. بۇ GsmPresenceStatus نىڭ قىممىتى بولىدۇ." #: ../data/org.gnome.shell.gschema.xml.in.in.h:15 msgid "Always show the 'Log out' menuitem in the user menu." msgstr "ئىشلەتكۈچى تىزىملىكىدە ھەمىشە ‹چىق› تىزىملىكىنى كۆرسىتىدۇ." #: ../data/org.gnome.shell.gschema.xml.in.in.h:16 msgid "" "This key overrides the automatic hiding of the 'Log out' menuitem in single-" "user, single-session situations." msgstr "مەزكۇر ئاچقۇچ يەككە ئىشلەتكۈچى، يەككە ئەڭگىمە ھالىتىدە ‹چىق› دېگەن تىزىملىكنى قاپلىۋېتىدۇ." #: ../data/org.gnome.shell.gschema.xml.in.in.h:17 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "شىفىرلانغان ياكى يىراقتىكى ھۆججەت سىستېمىسىنى ئېگەرلەشتە ئىمنى ئەستە تۇتسۇنمۇ" #: ../data/org.gnome.shell.gschema.xml.in.in.h:18 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "'Remember Password' checkbox will be present. This key sets the default " "state of the checkbox." msgstr "شىفىرلانغان ياكى يىراقتىكى ھۆججەت سىستېمىسىنى ئېگەرلەيدىغان ۋاقىتتا مەزكۇر shell ئىم تەلەپ قىلىدۇ. ئەگەر ‹ئىمنى ئەستە تۇت› دېگىنى تاللانسا، كېيىنلىك ئۈچۈن ئىمنى ساقلاپ قويىدۇ. بۇ ئاچقۇچ checkbox نىڭ كۆڭۈلدىكى ھالىتىنى بەلگىلەيدۇ." #: ../data/org.gnome.shell.gschema.xml.in.in.h:19 msgid "Show the week date in the calendar" msgstr "يىلنامىدە ھەپتىنى كۆرسەتسۇن" #: ../data/org.gnome.shell.gschema.xml.in.in.h:20 msgid "If true, display the ISO week date in the calendar." msgstr "ئەگەر راست(true) بولسا يىلنامىدىكى ISO ھەپتە چېسلانى كۆرسىتىدۇ." #: ../data/org.gnome.shell.gschema.xml.in.in.h:21 msgid "Keybinding to open the application menu" msgstr "پروگرامما تىزىملىكىنى ئاچىدىغان كۇنۇپكا بىرىكمىسى" #: ../data/org.gnome.shell.gschema.xml.in.in.h:22 msgid "Keybinding to open the application menu." msgstr "پروگرامما تىزىملىكىنى ئاچىدىغان كۇنۇپكا بىرىكمىسى." #: ../data/org.gnome.shell.gschema.xml.in.in.h:23 msgid "Keybinding to open the \"Show Applications\" view" msgstr "«پروگراممىلارنى كۆرسەت» كۆرۈنۈشىنى ئاچىدىغان كۇنۇپكا بىرىكمىسى" #: ../data/org.gnome.shell.gschema.xml.in.in.h:24 msgid "" "Keybinding to open the \"Show Applications\" view of the Activities Overview." msgstr "پائالىيەتلەر كۆرۈنۈشىدە «پروگراممىلارنى كۆرسەت» كۆرۈنۈشىنى ئاچىدىغان كۇنۇپكا بىرىكمىسى." #: ../data/org.gnome.shell.gschema.xml.in.in.h:25 msgid "Keybinding to toggle the visibility of the message tray" msgstr "ئۇچۇر قوندىقىنى كۆرسىتىش-كۆرسەتمەسلىكنى ئالماشتۇرىدىغان كۇنۇپكا بىرىكمىسى" #: ../data/org.gnome.shell.gschema.xml.in.in.h:26 msgid "Keybinding to toggle the visibility of the message tray." msgstr "ئۇچۇر قوندىقىنى كۆرسىتىش-كۆرسەتمەسلىكنى ئالماشتۇرىدىغان كۇنۇپكا بىرىكمىسى." #: ../data/org.gnome.shell.gschema.xml.in.in.h:27 msgid "Keybinding to focus the active notification" msgstr "ئاكتىپ ئۇقتۇرۇشنى كۆرسىتىدىغان كۇنۇپكا بىرىكمىسى" #: ../data/org.gnome.shell.gschema.xml.in.in.h:28 msgid "Keybinding to focus the active notification." msgstr "ئاكتىپ ئۇقتۇرۇشنى كۆرسىتىدىغان كۇنۇپكا بىرىكمىسى." #: ../data/org.gnome.shell.gschema.xml.in.in.h:29 msgid "Keybinding to toggle the screen recorder" msgstr "ئېكراننى سۈرەتكە ئالغۇنى باشلايدىغان/توختىتىدىغان كۇنۇپكا بىرىكمىسى" #: ../data/org.gnome.shell.gschema.xml.in.in.h:30 msgid "Keybinding to start/stop the builtin screen recorder." msgstr "سىڭدۈرۈۋېتىلگەن ئېكراننى سۈرەتكە ئالغۇنى باشلايدىغان/توختىتىدىغان كۇنۇپكا بىرىكمىسى." #: ../data/org.gnome.shell.gschema.xml.in.in.h:31 msgid "Which keyboard to use" msgstr "ئىشلەتمەكچى بولغان كۇنۇپكا تاختىسى" #: ../data/org.gnome.shell.gschema.xml.in.in.h:32 msgid "The type of keyboard to use." msgstr "ئىشلەتمەكچى بولغان كۇنۇپكا تاختىسى." #: ../data/org.gnome.shell.gschema.xml.in.in.h:33 msgid "Framerate used for recording screencasts." msgstr "ئېكران كۆرۈنۈشى (screencasts) خاتىرىلەشتە ئىشلىتىلىدىغان كاندۇك تېزلىكى." #: ../data/org.gnome.shell.gschema.xml.in.in.h:34 msgid "" "The framerate of the resulting screencast recordered by GNOME Shell's " "screencast recorder in frames-per-second." msgstr "گىنوم Shell ئېكران خاتىرىلىگۈچ ھەر سېكۇنتتا خاتىرىلەيدىغان ئېكران كۆرۈنۈشى كاندۇك سۈرىتى(ھەر سېكۇنتتىكى كاندۇك سانى)." #: ../data/org.gnome.shell.gschema.xml.in.in.h:35 msgid "The gstreamer pipeline used to encode the screencast" msgstr "ئېكران كۆرۈنۈشىنى كودلاشتا ئىشلىتىلىدىغان gstreamer ئاقما لىنىيىسى" #: ../data/org.gnome.shell.gschema.xml.in.in.h:37 #, no-c-format msgid "" "Sets the GStreamer pipeline used to encode recordings. It follows the syntax " "used for gst-launch. The pipeline should have an unconnected sink pad where " "the recorded video is recorded. It will normally have a unconnected source " "pad; output from that pad will be written into the output file. However the " "pipeline can also take care of its own output - this might be used to send " "the output to an icecast server via shout2send or similar. When unset or set " "to an empty value, the default pipeline will be used. This is currently " "'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 " "threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is " "used as a placeholder for a guess at the optimal thread count on the system." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:38 msgid "File extension used for storing the screencast" msgstr "ئېكران كۆرۈنۈشى (screencasts) ساقلاشتا ئىشلىتىلىدىغان ھۆججەتنىڭ كېڭەيتىلگەن ئاتى" #: ../data/org.gnome.shell.gschema.xml.in.in.h:39 msgid "" "The filename for recorded screencasts will be a unique filename based on the " "current date, and use this extension. It should be changed when recording to " "a different container format." msgstr "خاتىرىلەنگەن ئېكراننىڭ ھۆججەت ئاتى نۆۋەتتىكى چېسلا ئاساسىدا بىردىنبىر بولۇپ بۇ كېڭەيتىلگەن ئاتىنى ئىشلىتىدۇ. ئۇ ئۆزگەرسە ئوخشاش بولمىغان قاچا فورماتىدا خاتىرىلەيدۇ." #: ../data/org.gnome.shell.gschema.xml.in.in.h:40 msgid "The application icon mode." msgstr "پروگرامما سىنبەلگە ھالىتى." #: ../data/org.gnome.shell.gschema.xml.in.in.h:41 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-" "only' (shows only the application icon) or 'both'." msgstr "ئالماشتۇرغۇچتا پروگراممىلارنىڭ قانداق كۆرسىتىلىدىغانلىقىنى سەپلەيدۇ. قىممەتلەر: ‹thumbnail-only›(پەقەت كۆزنەكنىڭ كىچىك سۈرىتىنىلا كۆرسىتىدۇ)،‹app-icon-only›(پروگراممىنىڭ سىنبەلگىسىنىلا كۆرسىتىدۇ) ۋە ‹ئىككىلىسى›" #: ../data/org.gnome.shell.gschema.xml.in.in.h:42 msgid "Attach modal dialog to the parent window" msgstr "ئاتا كۆزنەككە modal سۆزلەشكۈنى قات" #: ../data/org.gnome.shell.gschema.xml.in.in.h:43 msgid "" "This key overrides the key in org.gnome.mutter when running GNOME Shell." msgstr "گىنوم Shell ئىجرا بولۇۋاتقاندا مەزكۇر ئاچقۇچ org.gnome.mutter نىڭ ئىچىدىكى ئاچقۇچنى قاپلىۋېتىدۇ." #: ../data/org.gnome.shell.gschema.xml.in.in.h:44 msgid "Arrangement of buttons on the titlebar" msgstr "ماۋزۇ بالدىقىدىكى توپچىلارنىڭ ئورۇنلاشتۇرۇلۇشى" #: ../data/org.gnome.shell.gschema.xml.in.in.h:45 msgid "" "This key overrides the key in org.gnome.desktop.wm.preferences when running " "GNOME Shell." msgstr "گىنوم Shell ئىجرا بولۇۋاتقاندا مەزكۇر ئاچقۇچ org.gnome.desktop.wm.preferences نىڭ ئىچىدىكى ئاچقۇچنى قاپلىۋېتىدۇ." #: ../data/org.gnome.shell.gschema.xml.in.in.h:46 msgid "Enable edge tiling when dropping windows on screen edges" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:47 msgid "Workspaces are managed dynamically" msgstr "خىزمەت رايونلىرى جانلىق باشقۇرۇلسۇن" #: ../data/org.gnome.shell.gschema.xml.in.in.h:48 msgid "Workspaces only on primary monitor" msgstr "ئاساسىي كۆزەتكۈچتىكى خىزمەت رايونلىرىلا" #: ../js/extensionPrefs/main.js:125 #, c-format msgid "There was an error loading the preferences dialog for %s:" msgstr "%s نىڭ خاسلىق سۆزلەشكۈسىنى ئوقۇشتا خاتالىق كۆرۈلدى:" #: ../js/extensionPrefs/main.js:165 msgid "Extension" msgstr "كېڭەيتىلمە" #: ../js/extensionPrefs/main.js:189 msgid "Select an extension to configure using the combobox above." msgstr "يۇقىرىدىكى combobox دىن سەپلەيدىغان كېڭەيتىلمىنى تاللاڭ." #: ../js/gdm/loginDialog.js:405 msgid "Session…" msgstr "ئەڭگىمە…" #. translators: this message is shown below the user list on the #. login screen. It can be activated to reveal an entry for #. manually entering the username. #: ../js/gdm/loginDialog.js:629 msgid "Not listed?" msgstr "تىزىمدا يوقمۇ؟" #: ../js/gdm/loginDialog.js:783 ../js/ui/components/networkAgent.js:137 #: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:375 #: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399 #: ../js/ui/status/bluetooth.js:415 ../js/ui/unlockDialog.js:126 #: ../js/ui/userMenu.js:934 msgid "Cancel" msgstr "ئەمەلدىن قالدۇر" #: ../js/gdm/loginDialog.js:799 msgctxt "button" msgid "Sign In" msgstr "كىر" #: ../js/gdm/loginDialog.js:799 msgid "Next" msgstr "كېيىنكى" #. TTLS and PEAP are actually much more complicated, but this complication #. is not visible here since we only care about phase2 authentication #. (and don't even care of which one) #: ../js/gdm/loginDialog.js:904 ../js/ui/components/networkAgent.js:260 #: ../js/ui/components/networkAgent.js:278 msgid "Username: " msgstr "ئىشلەتكۈچى ئاتى: " #: ../js/gdm/loginDialog.js:1157 msgid "Login Window" msgstr "كىرىش كۆزنىكى" #. Translators: accessible name of the power menu in the login screen #: ../js/gdm/powerMenu.js:36 msgid "Power" msgstr "توك مەنبە" #: ../js/gdm/powerMenu.js:93 ../js/ui/userMenu.js:695 ../js/ui/userMenu.js:699 #: ../js/ui/userMenu.js:815 msgid "Suspend" msgstr "توڭلات" #: ../js/gdm/powerMenu.js:98 msgid "Restart" msgstr "قايتا قوزغات" #: ../js/gdm/powerMenu.js:103 ../js/ui/userMenu.js:697 #: ../js/ui/userMenu.js:699 ../js/ui/userMenu.js:814 ../js/ui/userMenu.js:938 msgid "Power Off" msgstr "توكنى ئۈز" #: ../js/gdm/util.js:182 msgid "Authentication error" msgstr "كىملىك دەلىللەش خاتالىقى" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger instead #: ../js/gdm/util.js:299 msgid "(or swipe finger)" msgstr "(ياكى بارمىقىڭىزنى سىيرىڭ)" #: ../js/gdm/util.js:324 #, c-format msgid "(e.g., user or %s)" msgstr "(مەسىلەن، ئىشلەتكۈچى ياكى %s)" #: ../js/misc/util.js:94 msgid "Command not found" msgstr "بۇيرۇق تېپىلمىدى" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: ../js/misc/util.js:127 msgid "Could not parse command:" msgstr "بۇيرۇقنى تەھلىل قىلالمىدى:" #: ../js/misc/util.js:135 #, c-format msgid "Execution of '%s' failed:" msgstr "‹%s› ئىجرا قىلىش مەغلۇپ بولدى:" #: ../js/ui/appDisplay.js:348 msgid "Frequent" msgstr "دائىم" #: ../js/ui/appDisplay.js:355 msgid "All" msgstr "ھەممىسى" #: ../js/ui/appDisplay.js:913 msgid "New Window" msgstr "يېڭى كۆزنەك" #: ../js/ui/appDisplay.js:916 ../js/ui/dash.js:284 msgid "Remove from Favorites" msgstr "يىغقۇچتىن چىقىرىۋەت" #: ../js/ui/appDisplay.js:917 msgid "Add to Favorites" msgstr "يىغقۇچقا قوش" #: ../js/ui/appFavorites.js:87 #, c-format msgid "%s has been added to your favorites." msgstr "‏%s يىغقۇچىڭىزغا قوشۇلدى." #: ../js/ui/appFavorites.js:121 #, c-format msgid "%s has been removed from your favorites." msgstr "‏%s يىغقۇچىڭىزدىن چىقىرىۋېتىلىدۇ." #: ../js/ui/backgroundMenu.js:19 ../js/ui/userMenu.js:788 msgid "Settings" msgstr "تەڭشەكلەر" #: ../js/ui/backgroundMenu.js:21 msgid "Change Background…" msgstr "تەگلىكنى ئۆزگەرتىش…" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: ../js/ui/calendar.js:62 msgctxt "event list time" msgid "All Day" msgstr "كۈن بويى" #. Translators: Shown in calendar event list, if 24h format, #. \u2236 is a ratio character, similar to : #: ../js/ui/calendar.js:68 msgctxt "event list time" msgid "%H\\u2236%M" msgstr "%H\\u2236%M" #. Transators: Shown in calendar event list, if 12h format, #. \u2236 is a ratio character, similar to : and \u2009 is #. a thin space #: ../js/ui/calendar.js:77 msgctxt "event list time" msgid "%l\\u2236%M\\u2009%p" msgstr "%l\\u2236%M\\u2009%p" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: ../js/ui/calendar.js:108 msgctxt "grid sunday" msgid "S" msgstr "ي" #. Translators: Calendar grid abbreviation for Monday #: ../js/ui/calendar.js:110 msgctxt "grid monday" msgid "M" msgstr "د" #. Translators: Calendar grid abbreviation for Tuesday #: ../js/ui/calendar.js:112 msgctxt "grid tuesday" msgid "T" msgstr "س" #. Translators: Calendar grid abbreviation for Wednesday #: ../js/ui/calendar.js:114 msgctxt "grid wednesday" msgid "W" msgstr "چ" #. Translators: Calendar grid abbreviation for Thursday #: ../js/ui/calendar.js:116 msgctxt "grid thursday" msgid "T" msgstr "پ" #. Translators: Calendar grid abbreviation for Friday #: ../js/ui/calendar.js:118 msgctxt "grid friday" msgid "F" msgstr "ج" #. Translators: Calendar grid abbreviation for Saturday #: ../js/ui/calendar.js:120 msgctxt "grid saturday" msgid "S" msgstr "ش" #. Translators: Event list abbreviation for Sunday. #. * #. * NOTE: These list abbreviations are normally not shown together #. * so they need to be unique (e.g. Tuesday and Thursday cannot #. * both be 'T'). #. #: ../js/ui/calendar.js:133 msgctxt "list sunday" msgid "Su" msgstr "ي" #. Translators: Event list abbreviation for Monday #: ../js/ui/calendar.js:135 msgctxt "list monday" msgid "M" msgstr "د" #. Translators: Event list abbreviation for Tuesday #: ../js/ui/calendar.js:137 msgctxt "list tuesday" msgid "T" msgstr "س" #. Translators: Event list abbreviation for Wednesday #: ../js/ui/calendar.js:139 msgctxt "list wednesday" msgid "W" msgstr "چ" #. Translators: Event list abbreviation for Thursday #: ../js/ui/calendar.js:141 msgctxt "list thursday" msgid "Th" msgstr "پ" #. Translators: Event list abbreviation for Friday #: ../js/ui/calendar.js:143 msgctxt "list friday" msgid "F" msgstr "ج" #. Translators: Event list abbreviation for Saturday #: ../js/ui/calendar.js:145 msgctxt "list saturday" msgid "S" msgstr "ش" #. Translators: Text to show if there are no events #: ../js/ui/calendar.js:692 msgid "Nothing Scheduled" msgstr "ھېچنېمە پىلانلانمىدى" #. Translators: Shown on calendar heading when selected day occurs on current year #: ../js/ui/calendar.js:708 msgctxt "calendar heading" msgid "%A, %B %d" msgstr "%A، %B %d" #. Translators: Shown on calendar heading when selected day occurs on different year #: ../js/ui/calendar.js:711 msgctxt "calendar heading" msgid "%A, %B %d, %Y" msgstr "%A، %B %d، %Y" #: ../js/ui/calendar.js:721 msgid "Today" msgstr "بۈگۈن" #: ../js/ui/calendar.js:725 msgid "Tomorrow" msgstr "ئەتە" #: ../js/ui/calendar.js:736 msgid "This week" msgstr "بۇ ھەپتە" #: ../js/ui/calendar.js:744 msgid "Next week" msgstr "كېيىنكى ھەپتە" #: ../js/ui/components/automountManager.js:90 msgid "External drive connected" msgstr "سىرتقى دىسكا ئۇلاندى." #: ../js/ui/components/automountManager.js:101 msgid "External drive disconnected" msgstr "سىرتقى دىسكا ئۈزۈلدى." #: ../js/ui/components/autorunManager.js:294 msgid "Removable Devices" msgstr "چىقىرىۋېتىشكە بولىدىغان ئۈسكۈنىلەر" #: ../js/ui/components/autorunManager.js:593 #, c-format msgid "Open with %s" msgstr "%s دا ئاچ" #: ../js/ui/components/autorunManager.js:619 msgid "Eject" msgstr "چىقار" #: ../js/ui/components/keyring.js:82 ../js/ui/components/polkitAgent.js:268 msgid "Password:" msgstr "ئىم:" #: ../js/ui/components/keyring.js:101 msgid "Type again:" msgstr "قايتا كىرگۈزۈڭ:" #: ../js/ui/components/networkAgent.js:132 msgid "Connect" msgstr "باغلان" #. Cisco LEAP #: ../js/ui/components/networkAgent.js:223 #: ../js/ui/components/networkAgent.js:235 #: ../js/ui/components/networkAgent.js:262 #: ../js/ui/components/networkAgent.js:282 #: ../js/ui/components/networkAgent.js:292 msgid "Password: " msgstr "ئىم: " #. static WEP #: ../js/ui/components/networkAgent.js:228 msgid "Key: " msgstr "شىفىرلىق ئاچقۇچ: " #: ../js/ui/components/networkAgent.js:266 msgid "Identity: " msgstr "كىملىك: " #: ../js/ui/components/networkAgent.js:268 msgid "Private key password: " msgstr "شەخسىي ئاچقۇچ ئىمى: " #: ../js/ui/components/networkAgent.js:280 msgid "Service: " msgstr "مۇلازىمەت: " #: ../js/ui/components/networkAgent.js:309 msgid "Authentication required by wireless network" msgstr "سىمسىز تور كىملىك تەكشۈرۈشكە ئېھتىياجلىق" #: ../js/ui/components/networkAgent.js:310 #, c-format msgid "" "Passwords or encryption keys are required to access the wireless network " "'%s'." msgstr "سىمسىز تور ‹%s› نى زىيارەت قىلماق ئۈچۈن ئىم ياكى شىفىرلاش ئاچقۇچلىرى كېرەكلىك." #: ../js/ui/components/networkAgent.js:314 msgid "Wired 802.1X authentication" msgstr "سىملىق 802.1X گۇۋاھنامە" #: ../js/ui/components/networkAgent.js:316 msgid "Network name: " msgstr "تور ئاتى: " #: ../js/ui/components/networkAgent.js:321 msgid "DSL authentication" msgstr "DSL دەلىللەش" #: ../js/ui/components/networkAgent.js:328 msgid "PIN code required" msgstr "PIN كودى ئېھتىياجلىق" #: ../js/ui/components/networkAgent.js:329 msgid "PIN code is needed for the mobile broadband device" msgstr "كۆچمە كەڭ بەلۋاغ ئۈسكۈنىسى ئۈچۈن PIN كودى كېرەك" #: ../js/ui/components/networkAgent.js:330 msgid "PIN: " msgstr "PIN: " #: ../js/ui/components/networkAgent.js:336 msgid "Mobile broadband network password" msgstr "كۆچمە كەڭ بەلۋاغ تور ئىمى" #: ../js/ui/components/networkAgent.js:337 #, c-format msgid "A password is required to connect to '%s'." msgstr "‹%s› كە باغلىنىش ئۈچۈن بىر ئىمغا ئېھتىياجلىق." #: ../js/ui/components/polkitAgent.js:55 msgid "Authentication Required" msgstr "كىملىك دەلىللەش زۆرۈر" #: ../js/ui/components/polkitAgent.js:93 msgid "Administrator" msgstr "باشقۇرغۇچى" #: ../js/ui/components/polkitAgent.js:165 msgid "Authenticate" msgstr "كىملىك دەلىللەش" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: ../js/ui/components/polkitAgent.js:256 ../js/ui/shellMountOperation.js:383 msgid "Sorry, that didn't work. Please try again." msgstr "كەچۈرۈڭ، خىزمەت قىلالمايدۇ. قايتا سىناڭ." #. Translators: this is a filename used for screencast recording #: ../js/ui/components/recorder.js:48 #, no-c-format msgid "Screencast from %d %t" msgstr "بۇ %d %t نىڭ ئېكران كۆرۈنۈشى" #. FIXME: We don't have a 'chat room' icon (bgo #653737) use #. system-users for now as Empathy does. #: ../js/ui/components/telepathyClient.js:238 msgid "Invitation" msgstr "تەكلىپ" #. We got the TpContact #: ../js/ui/components/telepathyClient.js:298 msgid "Call" msgstr "چاقىر" #. We got the TpContact #: ../js/ui/components/telepathyClient.js:314 msgid "File Transfer" msgstr "ھۆججەت يوللاش" #: ../js/ui/components/telepathyClient.js:418 msgid "Chat" msgstr "سۆھبەت" #: ../js/ui/components/telepathyClient.js:480 msgid "Unmute" msgstr "ئاۋازلىق" #: ../js/ui/components/telepathyClient.js:480 msgid "Mute" msgstr "ئۈنسىز" #. Translators: this is the word "Yesterday" followed by a time string. i.e. "Yesterday, 14:30" #: ../js/ui/components/telepathyClient.js:942 #, no-c-format msgid "Yesterday, %H:%M" msgstr "تۈنۈگۈن، %H:%M" #. Translators: this is the week day name followed by a time string. i.e. "Monday, 14:30 #: ../js/ui/components/telepathyClient.js:948 #, no-c-format msgid "%A, %H:%M" msgstr "%A، %H:%M" #. Translators: this is the month name and day number followed by a time string. i.e. "May 25, 14:30" #: ../js/ui/components/telepathyClient.js:953 #, no-c-format msgid "%B %d, %H:%M" msgstr "%B %d، %H:%M" #. Translators: this is the month name, day number, year number followed by a time string. i.e. "May 25 2012, 14:30" #: ../js/ui/components/telepathyClient.js:957 #, no-c-format msgid "%B %d %Y, %H:%M " msgstr "%B %d %Y، %H:%M " #. Translators: this is the other person changing their old IM name to their new #. IM name. #: ../js/ui/components/telepathyClient.js:985 #, c-format msgid "%s is now known as %s" msgstr "%s نى ھازىر %s دەپ قارايدۇ" #. translators: argument is a room name like #. * room@jabber.org for example. #: ../js/ui/components/telepathyClient.js:1088 #, c-format msgid "Invitation to %s" msgstr "%s غا تەكلىپ" #. translators: first argument is the name of a contact and the second #. * one the name of a room. "Alice is inviting you to join room@jabber.org #. * for example. #: ../js/ui/components/telepathyClient.js:1096 #, c-format msgid "%s is inviting you to join %s" msgstr "%s سىزنى %s غا قاتنىشىشنى تەكلىپ قىلىۋاتىدۇ" #: ../js/ui/components/telepathyClient.js:1098 #: ../js/ui/components/telepathyClient.js:1137 #: ../js/ui/components/telepathyClient.js:1177 #: ../js/ui/components/telepathyClient.js:1240 msgid "Decline" msgstr "قوشۇلما" #: ../js/ui/components/telepathyClient.js:1099 #: ../js/ui/components/telepathyClient.js:1178 #: ../js/ui/components/telepathyClient.js:1241 msgid "Accept" msgstr "قوشۇل" #. translators: argument is a contact name like Alice for example. #: ../js/ui/components/telepathyClient.js:1129 #, c-format msgid "Video call from %s" msgstr "%s دىن كەلگەن سىن چاقىرىقى" #. translators: argument is a contact name like Alice for example. #: ../js/ui/components/telepathyClient.js:1132 #, c-format msgid "Call from %s" msgstr "«%s» دىن كەلگەن تېلېفون" #. translators: this is a button label (verb), not a noun #: ../js/ui/components/telepathyClient.js:1139 msgid "Answer" msgstr "جاۋاب" #. To translators: The first parameter is #. * the contact's alias and the second one is the #. * file name. The string will be something #. * like: "Alice is sending you test.ogg" #. #: ../js/ui/components/telepathyClient.js:1171 #, c-format msgid "%s is sending you %s" msgstr "%s سىزگە %s نى ئەۋەتتى" #. To translators: The parameter is the contact's alias #: ../js/ui/components/telepathyClient.js:1206 #, c-format msgid "%s would like permission to see when you are online" msgstr "%s سىزنى توردا بار چېغىڭىزدا كۆرۈشكە ئىجازەت سوراۋاتىدۇ" #: ../js/ui/components/telepathyClient.js:1298 msgid "Network error" msgstr "تور خاتالىقى" #: ../js/ui/components/telepathyClient.js:1300 msgid "Authentication failed" msgstr "كىملىك دەلىللەش مەغلۇپ بولدى" #: ../js/ui/components/telepathyClient.js:1302 msgid "Encryption error" msgstr "شىفىرلاش خاتالىقى" #: ../js/ui/components/telepathyClient.js:1304 msgid "Certificate not provided" msgstr "گۇۋاھنامە تەمىنلەنمىگەن" #: ../js/ui/components/telepathyClient.js:1306 msgid "Certificate untrusted" msgstr "گۇۋاھنامە ئىشەنچسىز" #: ../js/ui/components/telepathyClient.js:1308 msgid "Certificate expired" msgstr "گۇۋاھنامىنىڭ ۋاقتى ئوتكەن" #: ../js/ui/components/telepathyClient.js:1310 msgid "Certificate not activated" msgstr "گۇۋاھنامە ئاكتىپ ئەمەس" #: ../js/ui/components/telepathyClient.js:1312 msgid "Certificate hostname mismatch" msgstr "گۇۋاھنامە كومپيۇتېرىنىڭ ئاتى ماسلاشمىدى" #: ../js/ui/components/telepathyClient.js:1314 msgid "Certificate fingerprint mismatch" msgstr "گۇۋاھنامىنىڭ بارماق ئىزى ماسلاشمىدى" #: ../js/ui/components/telepathyClient.js:1316 msgid "Certificate self-signed" msgstr "گۇۋاھنامىنىڭ ئۆزىنىڭ ئىمزاسى" #: ../js/ui/components/telepathyClient.js:1318 msgid "Status is set to offline" msgstr "ھالەت توردا يوق قىلىپ بەلگىلەندى" #: ../js/ui/components/telepathyClient.js:1320 msgid "Encryption is not available" msgstr "شىفىرلاشنى ئىشلەتكىلى بولمايدۇ" #: ../js/ui/components/telepathyClient.js:1322 msgid "Certificate is invalid" msgstr "گۇۋاھنامە ئىناۋەتسىز" #: ../js/ui/components/telepathyClient.js:1324 msgid "Connection has been refused" msgstr "باغلىنىش رەت قىلىندى" #: ../js/ui/components/telepathyClient.js:1326 msgid "Connection can't be established" msgstr "باغلانغىلى بولمىدى" #: ../js/ui/components/telepathyClient.js:1328 msgid "Connection has been lost" msgstr "باغلىنىش ئۈزۈلدى" #: ../js/ui/components/telepathyClient.js:1330 msgid "This account is already connected to the server" msgstr "بۇ ھېسابات ئاللىقاچان مۇلازىمېتىرغا باغلانغان" #: ../js/ui/components/telepathyClient.js:1332 msgid "" "Connection has been replaced by a new connection using the same resource" msgstr "ئوخشاش مەنبە ئىشلەتكەن باغلىنىش ئەسلىدىكىنىڭ ئورنىنى ئىگىلىدى" #: ../js/ui/components/telepathyClient.js:1334 msgid "The account already exists on the server" msgstr "مۇلازىمېتىردا بۇ ھېسابات ئاللىقاچان بار" #: ../js/ui/components/telepathyClient.js:1336 msgid "Server is currently too busy to handle the connection" msgstr "مۇلازىمېتىر بەكلا ئالدىراش بولغاچقا بۇ باغلىنىشنى بىر تەرەپ قىلالمايدۇ" #: ../js/ui/components/telepathyClient.js:1338 msgid "Certificate has been revoked" msgstr "گۇۋاھنامە ئىناۋەتسىز قىلىنغان" #: ../js/ui/components/telepathyClient.js:1340 msgid "" "Certificate uses an insecure cipher algorithm or is cryptographically weak" msgstr "گۇۋاھنامە خەتەرلىك شىفىرلاش ئالگورىزىمىنى ئىشلەتكەن ياكى شىفىرلىنىشى ئاجىز" #: ../js/ui/components/telepathyClient.js:1342 msgid "" "The length of the server certificate, or the depth of the server certificate " "chain, exceed the limits imposed by the cryptography library" msgstr "مۇلازىمېتىر گۇۋاھنامىسىنىڭ ئۇزۇنلۇقى ياكى مۇلازىمېتىر گۇۋاھنامىسىنىڭ زەنجىرىنىڭ چوڭقۇرلۇقى شىفىرلاش فۇنكسىيە ئامبىرىدا بەلگىلەنگەن ئۇزۇنلۇقتىن ئېشىپ كەتتى" #: ../js/ui/components/telepathyClient.js:1344 msgid "Internal error" msgstr "ئىچكى خاتالىق" #. translators: argument is the account name, like #. * name@jabber.org for example. #: ../js/ui/components/telepathyClient.js:1354 #, c-format msgid "Unable to connect to %s" msgstr "%s غا باغلانغىلى بولمىدى" #: ../js/ui/components/telepathyClient.js:1359 msgid "View account" msgstr "ھېساباتنى كۆرۈش" #: ../js/ui/components/telepathyClient.js:1398 msgid "Unknown reason" msgstr "نامەلۇم سەۋەب" #: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96 msgid "Windows" msgstr "كۆزنەكلەر" #: ../js/ui/dash.js:248 ../js/ui/dash.js:286 msgid "Show Applications" msgstr "پروگراممىلارنى كۆرسىتىدۇ" #. Translators: this is the name of the dock/favorites area on #. the left of the overview #: ../js/ui/dash.js:435 msgid "Dash" msgstr "سىزىقچە" #: ../js/ui/dateMenu.js:91 msgid "Open Calendar" msgstr "يىلنامىلەرنى ئېچىش" #: ../js/ui/dateMenu.js:96 msgid "Open Clocks" msgstr "سائەتلەرنى ئېچىش" #: ../js/ui/dateMenu.js:105 msgid "Date & Time Settings" msgstr "چېسلا ۋە ۋاقىت تەڭشىكى" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM"). #. #: ../js/ui/dateMenu.js:205 msgid "%A %B %e, %Y" msgstr "%A %B %e، %Y" #: ../js/ui/endSessionDialog.js:63 #, c-format msgctxt "title" msgid "Log Out %s" msgstr "%s دىن چىقىش" #: ../js/ui/endSessionDialog.js:64 msgctxt "title" msgid "Log Out" msgstr "تىزىمدىن چىقىش" #: ../js/ui/endSessionDialog.js:65 msgid "Click Log Out to quit these applications and log out of the system." msgstr "تىزىمدىن چىقىش (Log Out) نى بېسىپ پروگراممىدىن چېكىنىش ۋە سىستېما تىزىمىدىن چىقىش." #: ../js/ui/endSessionDialog.js:67 #, c-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "ئىشلەتكۈچى %s يەنە %d سېكۇنتتىن كېيىن ئاپتوماتىك چىقىپ كېتىدۇ." #: ../js/ui/endSessionDialog.js:72 #, c-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "سىز يەنە %d سېكۇنتتىن كېيىن ئاپتوماتىك چىقىپ كېتىسىز." #: ../js/ui/endSessionDialog.js:76 msgid "Logging out of the system." msgstr "سىستېما تىزىمدىن چىقىۋاتىدۇ" #: ../js/ui/endSessionDialog.js:78 msgctxt "button" msgid "Log Out" msgstr "تىزىمدىن چىقىش" #: ../js/ui/endSessionDialog.js:83 msgctxt "title" msgid "Power Off" msgstr "توكنى ئۈز" #: ../js/ui/endSessionDialog.js:84 msgid "Click Power Off to quit these applications and power off the system." msgstr "تۈكنى ئۈز چېكىلسە قوللىنىشچان پروگراممىلاردىن چېكىنىپ سىستېمىنى تاقايدۇ." #: ../js/ui/endSessionDialog.js:86 #, c-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "سىستېمىنىڭ توكى يەنە %d سېكۇنتتىن كېيىن ئاپتوماتىك ئۈزۈلىدۇ." #: ../js/ui/endSessionDialog.js:90 msgid "Powering off the system." msgstr "سىستېمىنى تاقاۋاتىدۇ." #: ../js/ui/endSessionDialog.js:92 ../js/ui/endSessionDialog.js:109 msgctxt "button" msgid "Restart" msgstr "قايتا قوزغات" #: ../js/ui/endSessionDialog.js:94 msgctxt "button" msgid "Power Off" msgstr "توكنى ئۈز" #: ../js/ui/endSessionDialog.js:100 msgctxt "title" msgid "Restart" msgstr "قايتا قوزغات" #: ../js/ui/endSessionDialog.js:101 msgid "Click Restart to quit these applications and restart the system." msgstr "قايتا قوزغات (restart) چېكىلسە پروگراممىدىن چېكىنىپ ۋە سىستېمىنى قايتا قوزغىتىدۇ." #: ../js/ui/endSessionDialog.js:103 #, c-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "سىستېما يەنە %d سېكۇنتتىن كېيىن ئاپتوماتىك قايتا قوزغىلىدۇ." #: ../js/ui/endSessionDialog.js:107 msgid "Restarting the system." msgstr "سىستېما قايتا قوزغىلىۋاتىدۇ." #: ../js/ui/extensionDownloader.js:199 msgid "Install" msgstr "ئورنات" #: ../js/ui/extensionDownloader.js:204 #, c-format msgid "Download and install '%s' from extensions.gnome.org?" msgstr "مەنبە extensions.gnome.org دىن ‹%s› نى چۈشۈرۈپ ئورنىتامسىز؟" #: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:314 #: ../js/ui/status/power.js:211 msgid "Keyboard" msgstr "ھەرپتاختا" #: ../js/ui/lookingGlass.js:693 msgid "No extensions installed" msgstr "ھېچقانداق كېڭەيتىلمە ئورنىتىلمىغان" #. Translators: argument is an extension UUID. #: ../js/ui/lookingGlass.js:747 #, c-format msgid "%s has not emitted any errors." msgstr "%s نىڭدا ھېچقانداق خاتالىق يۈز بەرمىدى." #: ../js/ui/lookingGlass.js:753 msgid "Hide Errors" msgstr "خاتالىقلارنى يوشۇر" #: ../js/ui/lookingGlass.js:757 ../js/ui/lookingGlass.js:817 msgid "Show Errors" msgstr "خاتالىقلارنى كۆرسەت" #: ../js/ui/lookingGlass.js:766 msgid "Enabled" msgstr "ئىناۋەتلىك قىلىنغان" #. translators: #. * The device has been disabled #: ../js/ui/lookingGlass.js:769 ../src/gvc/gvc-mixer-control.c:1830 msgid "Disabled" msgstr "ئىناۋەتسىز قىلىنغان" #: ../js/ui/lookingGlass.js:771 msgid "Error" msgstr "خاتالىق" #: ../js/ui/lookingGlass.js:773 msgid "Out of date" msgstr "ۋاقتى ئۆتۈپ كەتكەن" #: ../js/ui/lookingGlass.js:775 msgid "Downloading" msgstr "چۈشۈرۈۋاتىدۇ" #: ../js/ui/lookingGlass.js:799 msgid "View Source" msgstr "مەنبەنى كۆرسەت" #: ../js/ui/lookingGlass.js:808 msgid "Web Page" msgstr "توربەت" #: ../js/ui/messageTray.js:1182 msgid "Open" msgstr "ئاچ" #: ../js/ui/messageTray.js:1189 msgid "Remove" msgstr "چىقىرىۋەت" #: ../js/ui/messageTray.js:1501 msgid "Clear Messages" msgstr "ئۇچۇرنى تازىلا" #: ../js/ui/messageTray.js:1528 msgid "Notification Settings" msgstr "ئۇقتۇرۇش تەڭشىكى" #: ../js/ui/messageTray.js:1707 msgid "No Messages" msgstr "ئۇچۇر يوق" #: ../js/ui/messageTray.js:1787 msgid "Message Tray" msgstr "ئۇچۇر قوندىقى" #: ../js/ui/messageTray.js:2864 msgid "System Information" msgstr "سىستېما ئۇچۇرى" #: ../js/ui/notificationDaemon.js:629 ../src/shell-app.c:374 msgctxt "program" msgid "Unknown" msgstr "نامەلۇم" #: ../js/ui/overviewControls.js:460 ../js/ui/screenShield.js:153 #, c-format msgid "%d new message" msgid_plural "%d new messages" msgstr[0] "%d دانە ئۇچۇر" #: ../js/ui/overview.js:82 msgid "Undo" msgstr "يېنىۋال" #: ../js/ui/overview.js:129 msgid "Overview" msgstr "قىسقىچە بايان" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: ../js/ui/overview.js:284 msgid "Type to search…" msgstr "ئىزدەيدىغاننى كىرگۈزۈڭ.…" #: ../js/ui/panel.js:613 msgid "Quit" msgstr "ئاخىرلاشتۇر" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: ../js/ui/panel.js:642 msgid "Activities" msgstr "پائالىيەتلەر" #: ../js/ui/panel.js:983 msgid "Top Bar" msgstr "ئۈستى بالداق" #. Translators: this MUST be either "toggle-switch-us" #. (for toggle switches containing the English words #. "ON" and "OFF") or "toggle-switch-intl" (for toggle #. switches containing "◯" and "|"). Other values will #. simply result in invisible toggle switches. #: ../js/ui/popupMenu.js:727 msgid "toggle-switch-us" msgstr "toggle-switch-us" #: ../js/ui/runDialog.js:205 msgid "Enter a Command" msgstr "بۇيرۇق كىرگۈزۈڭ" #: ../js/ui/runDialog.js:241 msgid "Close" msgstr "ياپ" #. Translators: This is a time format for a date in #. long format #: ../js/ui/screenShield.js:90 msgid "%A, %B %d" msgstr "%A، %B %d" #: ../js/ui/screenShield.js:155 #, c-format msgid "%d new notification" msgid_plural "%d new notifications" msgstr[0] "%d دانە ئۇقتۇرۇش" #: ../js/ui/screenShield.js:442 ../js/ui/userMenu.js:806 msgid "Lock" msgstr "قۇلۇپلا" #: ../js/ui/screenShield.js:639 msgid "GNOME needs to lock the screen" msgstr "گىنوم ئېكراننى قۇلۇپلىشى زۆرۈر" #. We could not become modal, so we can't activate the #. screenshield. The user is probably very upset at this #. point, but any application using global grabs is broken #. Just tell him to stop using this app #. #. XXX: another option is to kick the user into the gdm login #. screen, where we're not affected by grabs #: ../js/ui/screenShield.js:758 ../js/ui/screenShield.js:1169 msgid "Unable to lock" msgstr "قۇلۇپلىغىلى بولمىدى" #: ../js/ui/screenShield.js:759 ../js/ui/screenShield.js:1170 msgid "Lock was blocked by an application" msgstr "بىر پروگرامما قۇلۇپلاشنى توسۇپ قويغان" #: ../js/ui/searchDisplay.js:431 msgid "Searching…" msgstr "ئىزدەۋاتىدۇ…" #: ../js/ui/searchDisplay.js:475 msgid "No results." msgstr "نەتىجە يوق." #: ../js/ui/shellEntry.js:29 msgid "Copy" msgstr "كۆچۈر" #: ../js/ui/shellEntry.js:34 msgid "Paste" msgstr "چاپلا" #: ../js/ui/shellEntry.js:105 msgid "Show Text" msgstr "تېكىست كۆرسەت" #: ../js/ui/shellEntry.js:107 msgid "Hide Text" msgstr "تېكىستنى يوشۇر" #: ../js/ui/shellMountOperation.js:370 msgid "Password" msgstr "ئىم" #: ../js/ui/shellMountOperation.js:391 msgid "Remember Password" msgstr "ئىمنى ئەستە تۇتۇش" #: ../js/ui/shellMountOperation.js:403 ../js/ui/unlockDialog.js:140 msgid "Unlock" msgstr "قۇلۇپسىزلا" #: ../js/ui/status/accessibility.js:36 msgid "Accessibility" msgstr "ياردەم ئىقتىدارى" #: ../js/ui/status/accessibility.js:41 msgid "Zoom" msgstr "كېڭەيت-تارايت" #: ../js/ui/status/accessibility.js:48 msgid "Screen Reader" msgstr "ئېكران ئوقۇغۇچ" #: ../js/ui/status/accessibility.js:52 msgid "Screen Keyboard" msgstr "ئېكران ھەرپتاختىسى" #: ../js/ui/status/accessibility.js:56 msgid "Visual Alerts" msgstr "كۆرۈنمە ئاگاھلاندۇرۇش" #: ../js/ui/status/accessibility.js:59 msgid "Sticky Keys" msgstr "يېپىشقاق كۇنۇپكىلار" #: ../js/ui/status/accessibility.js:62 msgid "Slow Keys" msgstr "ئاستا كۇنۇپكىلار" #: ../js/ui/status/accessibility.js:65 msgid "Bounce Keys" msgstr "سەكرىمە كۇنۇپكىلار" #: ../js/ui/status/accessibility.js:68 msgid "Mouse Keys" msgstr "چاشقىنەك كۇنۇپكىلىرى" #: ../js/ui/status/accessibility.js:72 msgid "Universal Access Settings" msgstr "ئۇنىۋېرسال زىيارەت تەڭشىكى" #: ../js/ui/status/accessibility.js:129 msgid "High Contrast" msgstr "يۇقىرى ئاق-قارىلىقى" #: ../js/ui/status/accessibility.js:178 msgid "Large Text" msgstr "چوڭ تېكىست" #: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:32 #: ../js/ui/status/bluetooth.js:289 ../js/ui/status/bluetooth.js:321 #: ../js/ui/status/bluetooth.js:357 ../js/ui/status/bluetooth.js:388 #: ../js/ui/status/network.js:826 msgid "Bluetooth" msgstr "كۆكچىش" #: ../js/ui/status/bluetooth.js:45 msgid "Visibility" msgstr "كۆرۈشچانلىقى" #: ../js/ui/status/bluetooth.js:59 msgid "Send Files to Device…" msgstr "ھۆججەتلەرنى ئۈسكۈنىگە ئەۋەتىش…" #: ../js/ui/status/bluetooth.js:60 msgid "Set Up a New Device…" msgstr "يېڭى ئۈسكۈنە ئورنىتىش…" #: ../js/ui/status/bluetooth.js:84 msgid "Bluetooth Settings" msgstr "كۆكچىش تەڭشىكى" #. TRANSLATORS: this means that bluetooth was disabled by hardware rfkill #: ../js/ui/status/bluetooth.js:104 ../js/ui/status/network.js:178 msgid "hardware disabled" msgstr "قاتتىق دېتال ئىناۋەتسىز قىلىنغان" #: ../js/ui/status/bluetooth.js:197 msgid "Connection" msgstr "باغلىنىش" #: ../js/ui/status/bluetooth.js:208 ../js/ui/status/network.js:460 msgid "disconnecting..." msgstr "ئۈزۈۋاتىدۇ…" #: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:466 #: ../js/ui/status/network.js:1546 msgid "connecting..." msgstr "باغلىنىۋاتىدۇ…" #: ../js/ui/status/bluetooth.js:239 msgid "Send Files…" msgstr "ھۆججەت يوللاش…" #: ../js/ui/status/bluetooth.js:246 msgid "Keyboard Settings" msgstr "ھەرپتاختا تەڭشەكلىرى‏" #: ../js/ui/status/bluetooth.js:249 msgid "Mouse Settings" msgstr "چاشقىنەك تەڭشەكلىرى" #: ../js/ui/status/bluetooth.js:254 ../js/ui/status/volume.js:316 msgid "Sound Settings" msgstr "ئاۋاز تەڭشەكلىرى‏" #: ../js/ui/status/bluetooth.js:322 #, c-format msgid "Authorization request from %s" msgstr "‹%s› تىن كەلگەن دەلىللەش ئىلتىماسى" #: ../js/ui/status/bluetooth.js:328 #, c-format msgid "Device %s wants access to the service '%s'" msgstr "ئۈسكۈنە %s مۇلازىمەت ‹%s› نى زىيارەت قىلماقچى" #: ../js/ui/status/bluetooth.js:330 msgid "Always grant access" msgstr "ھەمىشە زىيارەتكە رۇخسەت" #: ../js/ui/status/bluetooth.js:331 msgid "Grant this time only" msgstr "بۇ قېتىمغىلا رۇخسەت" #: ../js/ui/status/bluetooth.js:332 msgid "Reject" msgstr "رەت قىل" #. Translators: argument is the device short name #: ../js/ui/status/bluetooth.js:359 #, c-format msgid "Pairing confirmation for %s" msgstr "‏%s نىڭ جەزملىشىنى جۈپلەشتۈرۈۋاتىدۇ" #: ../js/ui/status/bluetooth.js:365 ../js/ui/status/bluetooth.js:396 #, c-format msgid "Device %s wants to pair with this computer" msgstr "ئۈسكۈنە‹%s› كومپيۇتېر بىلەن جۈپلەنمەكچى" #: ../js/ui/status/bluetooth.js:366 #, c-format msgid "Please confirm whether the PIN '%06d' matches the one on the device." msgstr "ئۈسكۈنە ئۈستىدىكى بىلەن PIN ‹%06d› ماسلىشامدۇ جەزملەڭ." #. Translators: this is the verb, not the noun #: ../js/ui/status/bluetooth.js:369 msgid "Matches" msgstr "ماسلاشتى" #: ../js/ui/status/bluetooth.js:370 msgid "Does not match" msgstr "ماسلاشمىدى" #: ../js/ui/status/bluetooth.js:389 #, c-format msgid "Pairing request for %s" msgstr "‏%s دىن كەلگەن جۈپلەش ئىلتىماسى" #: ../js/ui/status/bluetooth.js:397 msgid "Please enter the PIN mentioned on the device." msgstr "ئۈسكۈنىسىدە يوللىغان PIN نومۇرىنى كىرگۈزۈڭ." #: ../js/ui/status/bluetooth.js:414 msgid "OK" msgstr "تامام" #: ../js/ui/status/keyboard.js:368 msgid "Show Keyboard Layout" msgstr "ھەرپ تاختا ئورۇنلاشتۇرۇشىنى كۆرسىتىش" #: ../js/ui/status/keyboard.js:373 msgid "Region & Language Settings" msgstr "رايون ۋە تىل تەڭشىكى" #: ../js/ui/status/lockScreenMenu.js:43 msgid "Volume, network, battery" msgstr "ئاۋاز مىقدارى، تور، توكدان" #: ../js/ui/status/network.js:104 msgid "" msgstr "<نامەلۇم>" #. Translators: this indicates that wireless or wwan is disabled by hardware killswitch #: ../js/ui/status/network.js:200 msgid "disabled" msgstr "چەكلەنگەن" #. Translators: this is for network devices that are physically present but are not #. under NetworkManager's control (and thus cannot be used in the menu) #: ../js/ui/status/network.js:458 msgid "unmanaged" msgstr "باشقۇرۇلمىغان" #. Translators: this is for network connections that require some kind of key or password #: ../js/ui/status/network.js:469 ../js/ui/status/network.js:1549 msgid "authentication required" msgstr "كىملىك دەلىللەش زۆرۈر" #. Translators: this is for devices that require some kind of firmware or kernel #. module, which is missing #: ../js/ui/status/network.js:479 msgid "firmware missing" msgstr "مۇقىم دېتال كەم" #. Translators: this is for wired network devices that are physically disconnected #: ../js/ui/status/network.js:486 msgid "cable unplugged" msgstr "كابېل چېتىلمىدى" #. Translators: this is for a network device that cannot be activated (for example it #. is disabled by rfkill, or it has no coverage #: ../js/ui/status/network.js:491 msgid "unavailable" msgstr "ئىشلەتكىلى بولمايدۇ" #: ../js/ui/status/network.js:493 ../js/ui/status/network.js:1551 msgid "connection failed" msgstr "باغلىنىش مەغلۇپ بولدى" #: ../js/ui/status/network.js:552 ../js/ui/status/network.js:1435 #: ../js/ui/status/network.js:1627 msgid "More…" msgstr "تېخىمۇ كۆپ…" #. TRANSLATORS: this is the indication that a connection for another logged in user is active, #. and we cannot access its settings (including the name) #: ../js/ui/status/network.js:588 ../js/ui/status/network.js:1365 msgid "Connected (private)" msgstr "باغلاندى (شەخسىي)" #: ../js/ui/status/network.js:667 msgid "Wired" msgstr "سىملىق" #: ../js/ui/status/network.js:668 msgid "Auto Ethernet" msgstr "ئاپتوماتىك Ethernet" #: ../js/ui/status/network.js:695 msgid "Mobile broadband" msgstr "كۆچمە كەڭ بەلۋاغ" #: ../js/ui/status/network.js:728 msgid "Auto broadband" msgstr "ئاپتوماتىك كۆچمە كەڭ بەلۋاغ" #: ../js/ui/status/network.js:731 msgid "Auto dial-up" msgstr "ئاپتوماتىك نومۇر بۇرا" #. TRANSLATORS: this the automatic wireless connection name (including the network name) #: ../js/ui/status/network.js:861 ../js/ui/status/network.js:1382 #, c-format msgid "Auto %s" msgstr "ئاپتوماتىك %s" #: ../js/ui/status/network.js:863 msgid "Auto bluetooth" msgstr "ئاپتوماتىك كۆكچىش" #: ../js/ui/status/network.js:1384 msgid "Auto wireless" msgstr "ئاپتوماتىك سىمسىز تور" #: ../js/ui/status/network.js:1729 msgid "Enable networking" msgstr "تور ئۇلاشنى قوزغات" #: ../js/ui/status/network.js:1771 msgid "Wi-Fi" msgstr "Wi-Fi" #: ../js/ui/status/network.js:1790 msgid "Network Settings" msgstr "تور تەڭشەكلىرى" #: ../js/ui/status/network.js:1807 msgid "Network Manager" msgstr "تور باشقۇرغۇچ" #: ../js/ui/status/network.js:1897 msgid "Connection failed" msgstr "باغلىنىش مەغلۇپ بولدى" #: ../js/ui/status/network.js:1898 msgid "Activation of network connection failed" msgstr "تور باغلىنىشىنى ئاكتىپلاش مەغلۇپ بولدى" #: ../js/ui/status/network.js:2276 msgid "Networking is disabled" msgstr "تورغا باغلىنىش چەكلەنگەن" #: ../js/ui/status/power.js:55 msgid "Battery" msgstr "توكدان" #: ../js/ui/status/power.js:81 msgid "Power Settings" msgstr "توك مەنبە تەڭشىكى" #. 0 is reported when UPower does not have enough data #. to estimate battery life #: ../js/ui/status/power.js:99 msgid "Estimating…" msgstr "مۆلچەرلەۋاتىدۇ…" #: ../js/ui/status/power.js:106 #, c-format msgid "%d hour remaining" msgid_plural "%d hours remaining" msgstr[0] "%d سائەت قالدى" #. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining" #: ../js/ui/status/power.js:109 #, c-format msgid "%d %s %d %s remaining" msgstr "%d %s %d %s قالدى" #: ../js/ui/status/power.js:111 msgid "hour" msgid_plural "hours" msgstr[0] "سائەت" #: ../js/ui/status/power.js:111 msgid "minute" msgid_plural "minutes" msgstr[0] "مىنۇت" #: ../js/ui/status/power.js:114 #, c-format msgid "%d minute remaining" msgid_plural "%d minutes remaining" msgstr[0] "%d مىنۇت قالدى" #: ../js/ui/status/power.js:117 ../js/ui/status/power.js:191 #, c-format msgctxt "percent of battery remaining" msgid "%d%%" msgstr "%d%%" #: ../js/ui/status/power.js:201 msgid "AC Adapter" msgstr "ئۆزگىرىشچان توك ماسلاشتۇرغۇچ" #: ../js/ui/status/power.js:203 msgid "Laptop Battery" msgstr "يان كومپيۇتېر توكدانى" #: ../js/ui/status/power.js:205 msgid "UPS" msgstr "UPS" #: ../js/ui/status/power.js:207 msgid "Monitor" msgstr "ئېكران" #: ../js/ui/status/power.js:209 msgid "Mouse" msgstr "چاشقىنەك" #: ../js/ui/status/power.js:213 msgid "PDA" msgstr "PDA" #: ../js/ui/status/power.js:215 msgid "Cell Phone" msgstr "يانفون" #: ../js/ui/status/power.js:217 msgid "Media Player" msgstr "ۋاسىتە قويغۇ" #: ../js/ui/status/power.js:219 msgid "Tablet" msgstr "سەزگۈر تاختا" #: ../js/ui/status/power.js:221 msgid "Computer" msgstr "كومپيۇتېر" #: ../js/ui/status/power.js:223 msgctxt "device" msgid "Unknown" msgstr "نامەلۇم" #: ../js/ui/status/volume.js:124 msgid "Volume changed" msgstr "ئاۋاز مىقدارى ئۆزگەردى" #. Translators: This is the label for audio volume #: ../js/ui/status/volume.js:249 ../js/ui/status/volume.js:297 msgid "Volume" msgstr "ئاۋاز مىقدارى" #: ../js/ui/status/volume.js:258 msgid "Microphone" msgstr "مىكروفون" #: ../js/ui/unlockDialog.js:151 msgid "Log in as another user" msgstr "باشقا ئىشلەتكۈچى سۈپىتىدە كىر" #: ../js/ui/unlockDialog.js:177 msgid "Unlock Window" msgstr "كۆزنەكنى قۇلۇپلا" #: ../js/ui/userMenu.js:193 msgid "Available" msgstr "ئىشلەتكىلى بولىدۇ" #: ../js/ui/userMenu.js:196 msgid "Busy" msgstr "ئالدىراش" #: ../js/ui/userMenu.js:199 msgid "Invisible" msgstr "يوشۇرۇن" #: ../js/ui/userMenu.js:202 msgid "Away" msgstr "يوق" #: ../js/ui/userMenu.js:205 msgid "Idle" msgstr "بىكار" #: ../js/ui/userMenu.js:208 msgid "Offline" msgstr "توردا يوق" #: ../js/ui/userMenu.js:780 msgid "Notifications" msgstr "ئۇقتۇرۇشلار" #: ../js/ui/userMenu.js:796 msgid "Switch User" msgstr "ئىشلەتكۈچى ئالماشتۇرۇش" #: ../js/ui/userMenu.js:801 msgid "Log Out" msgstr "تىزىمدىن چىقىش" #: ../js/ui/userMenu.js:821 msgid "Install Updates & Restart" msgstr "يېڭىلانمىلارنى ئورنىتىپ قايتا قوزغات" #: ../js/ui/userMenu.js:839 msgid "Your chat status will be set to busy" msgstr "سىزنىڭ سۆھبەت ھالىتىڭىز ئالدىراش قىلىنىدۇ" #: ../js/ui/userMenu.js:840 msgid "" "Notifications are now disabled, including chat messages. Your online status " "has been adjusted to let others know that you might not see their messages." msgstr "" #: ../js/ui/userMenu.js:886 msgid "Other users are logged in." msgstr "باشقا ئىشلەتكۈچىلەر كىردى:" #: ../js/ui/userMenu.js:891 msgid "Shutting down might cause them to lose unsaved work." msgstr "تاقالسا ساقلانمىغان خىزمەتلەر يوقىلىشى مۇمكىن." #: ../js/ui/userMenu.js:918 #, c-format msgid "%s (remote)" msgstr "%s (يىراق)" #: ../js/ui/userMenu.js:920 #, c-format msgid "%s (console)" msgstr "%s (تىزگىن كۆزنەك)" #: ../js/ui/viewSelector.js:100 msgid "Applications" msgstr "پروگراممىلار" #: ../js/ui/viewSelector.js:104 msgid "Search" msgstr "ئىزدە" #: ../js/ui/wanda.js:92 #, c-format msgid "" "Sorry, no wisdom for you today:\n" "%s" msgstr "كەچۈرۈڭ، سىزگە بۈگۈن ھېكمەتلىك سۆز يوق:\n" "%s" #: ../js/ui/wanda.js:96 #, c-format msgid "%s the Oracle says" msgstr "خەۋەرچى مۇنداق دەيدۇ %s" #: ../js/ui/windowAttentionHandler.js:19 #, c-format msgid "'%s' is ready" msgstr "‹%s› تەييار" #: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1 msgid "Evolution Calendar" msgstr "Evolution يىلنامىسى" #. translators: #. * The number of sound outputs on a particular device #: ../src/gvc/gvc-mixer-control.c:1837 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u چىقىرىلما" #. translators: #. * The number of sound inputs on a particular device #: ../src/gvc/gvc-mixer-control.c:1847 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u كىرگۈزۈلمە" #: ../src/gvc/gvc-mixer-control.c:2371 msgid "System Sounds" msgstr "سىستېما ئاۋازى" #: ../src/main.c:347 msgid "Print version" msgstr "نەشرىنى باس" #: ../src/main.c:353 msgid "Mode used by GDM for login screen" msgstr "كىرىش ئېكرانىدا GDM ئىشلىتىدىغان ئۇسۇل" #: ../src/main.c:359 msgid "Use a specific mode, e.g. \"gdm\" for login screen" msgstr "كۆرسىتىلگەن ئۇسۇلنى ئىشلەتسۇن، مەسىلەن: كىرىش ئېكرانى ئۈچۈن «gdm» دېگەندەك" #: ../src/main.c:365 msgid "List possible modes" msgstr "بارلىق ئۇسۇللارنى تىزىپ كۆرسەت" #: ../src/shell-app.c:622 #, c-format msgid "Failed to launch '%s'" msgstr "‹%s› نى قوزغىتالمىدى" #: ../src/shell-keyring-prompt.c:708 msgid "Passwords do not match." msgstr "ئىم ماس كەلمىدى." #: ../src/shell-keyring-prompt.c:716 msgid "Password cannot be blank" msgstr "ئىم قۇرۇق بولسا بولمايدۇ" #: ../src/shell-polkit-authentication-agent.c:343 msgid "Authentication dialog was dismissed by the user" msgstr "كىملىك دەلىللەش سۆزلەشكۈنى ئىشلەتكۈچى تاقىدى" #~ msgctxt "title" #~ msgid "Sign In" #~ msgstr "كىر" #~ msgid "tray" #~ msgstr "قونداق، پەغەز" #~ msgid "Clear" #~ msgstr "تازىلا" #~ msgid "More..." #~ msgstr "تېخىمۇ كۆپ…" #~ msgctxt "event list time" #~ msgid "%H:%M" #~ msgstr "%H:%M" #~ msgctxt "event list time" #~ msgid "%l:%M %p" #~ msgstr "%l:%M %p" #~ msgid "United Kingdom" #~ msgstr "ئەنگلىيە پادىشاھلىقى" #~ msgid "Default" #~ msgstr "كۆڭۈلدىكى" #~ msgid "Show full name in the user menu" #~ msgstr "ئىشلەتكۈچى تىزىملىكىدە تولۇق ئاتىنى كۆرسەتسۇن" #~ msgid "Whether the users full name is shown in the user menu or not." #~ msgstr "ئىشلەتكۈچى تىزىملىكىدە تولۇق ئاتىنى كۆرسىتەمدۇ يوق بەلگىلەيدۇ." #~ msgid "" #~ "GNOME Shell extensions have a uuid property; this key lists extensions " #~ "which should not be loaded." #~ msgstr "" #~ "GNOME Shell كېڭەيتىلمىسىنىڭ uuid خاسلىقى بار؛ بۇ كۇنۇپكا يۈكلەنمەيدىغان " #~ "كېڭەيتىلمىلەر تىزىمىنى كۆرسىتىدۇ." #~ msgid "If true, display date in the clock, in addition to time." #~ msgstr "true بولسا سائەتتە ۋاقىت كۆرسەتكەندىن تاشقىرى چېسلا كۆرسىتىدۇ." #~ msgid "If true, display seconds in time." #~ msgstr "true بولسا ۋاقىتتا سېكۇنتمۇ كۆرۈنىدۇ." #~ msgid "Show date in clock" #~ msgstr "سائەت ئىچىدە چېسلا كۆرسەت" #~ msgid "Show time with seconds" #~ msgstr "ۋاقىت ئىچىدە سېكۇنتنى بىللە كۆرسەت" #~ msgid "disabled OpenSearch providers" #~ msgstr "OpenSearch نىڭ تەمىنلىگۈچىلىرى چەكلەنگەن" #~ msgid "APPLICATIONS" #~ msgstr "پروگراممىلار" #~ msgid "SETTINGS" #~ msgstr "تەڭشەكلەر" #~ msgid "%a %b %e, %R:%S" #~ msgstr "%a %b %e، %R:%S" #~ msgid "%a %b %e, %R" #~ msgstr "%a %b %e، %R" #~ msgid "%a %R:%S" #~ msgstr "%a %R:%S" #~ msgid "%a %R" #~ msgstr "%a %R" #~ msgid "%a %b %e, %l:%M:%S %p" #~ msgstr "%a %b %e، %l:%M:%S %p" #~ msgid "%a %b %e, %l:%M %p" #~ msgstr "%a %b %e، %l:%M %p" #~ msgid "%a %l:%M:%S %p" #~ msgstr "%a %l:%M:%S %p" #~ msgid "%a %l:%M %p" #~ msgstr "%a %l:%M" #~ msgid "RECENT ITEMS" #~ msgstr "يېقىنقى تۈرلەر" #~ msgid "Failed to unmount '%s'" #~ msgstr "«%s» نى ئېگەرسىزلەش مەغلۇپ بولدى" #~ msgid "Retry" #~ msgstr "قايتا سىنا" #~ msgid "Connect to..." #~ msgstr "باغلىنىش…" #~ msgid "PLACES & DEVICES" #~ msgstr "ئورۇن ۋە ئۈسكۈنىلەر" #~ msgid "Power Off..." #~ msgstr "توكنى ئۈز…" #~ msgid "System Settings" #~ msgstr "سىستېما تەڭشىكى" #~ msgid "Lock Screen" #~ msgstr "ئېكراننى قۇلۇپلاش" #~ msgid "Log Out..." #~ msgstr "تىزىمدىن چىقىش…" #~ msgid "Browse Files..." #~ msgstr "ھۆججەتكە كۆز يۈگۈرت..." #~ msgid "Error browsing device" #~ msgstr "ئۈسكىنىگە كۆز يۈگۈرتكەندە خاتالىق كۆرۈلدى" #~ msgid "The requested device cannot be browsed, error is '%s'" #~ msgstr "ئىلتىماس قىلغان ئۈسكىنىگە كۆز يۈگۈرتەلمىدى، خاتالىق '%s'" #~ msgid "Localization Settings" #~ msgstr "يەرلىكلەشتۈرۈش تەڭشىكى" #~ msgid "Wireless" #~ msgstr "سىمسىز" #~ msgid "VPN Connections" #~ msgstr "VPN باغلىنىشلىرى" #~ msgid "You're now connected to mobile broadband connection '%s'" #~ msgstr "ھازىر كۆچمە كەڭ بەلۋاغ '%s' غا باغلاندىڭىز" #~ msgid "You're now connected to wireless network '%s'" #~ msgstr "ھازىر سىمسىز تور '%s' غا باغلاندىڭىز" #~ msgid "You're now connected to wired network '%s'" #~ msgstr "ھازىر سىملىق تور '%s' غا باغلاندىڭىز" #~ msgid "You're now connected to VPN network '%s'" #~ msgstr "ھازىر VPN تور '%s' غا باغلاندىڭىز" #~ msgid "%s is online." #~ msgstr "‏%s توردا." #~ msgid "%s is away." #~ msgstr "‏%s يوق." #~ msgid "%s is busy." #~ msgstr "‏%s ئالدىراش." #~ msgid "Sent at %X on %A" #~ msgstr "سائەت %X %A غا ئەۋەتتى" #~ msgid "%s has finished starting" #~ msgstr "‏%s باشلاشنى تاماملىدى" #~ msgid "Less than a minute ago" #~ msgstr "بىر مىنۇتتىنمۇ ئىلگىرى" #~ msgid "%d minute ago" #~ msgid_plural "%d minutes ago" #~ msgstr[0] "%d مىنۇت ئىلگىرى" #~ msgid "%d hour ago" #~ msgid_plural "%d hours ago" #~ msgstr[0] "%d سائەت ئىلگىرى" #~ msgid "%d day ago" #~ msgid_plural "%d days ago" #~ msgstr[0] "%d كۈن ئىلگىرى" #~ msgid "%d week ago" #~ msgid_plural "%d weeks ago" #~ msgstr[0] "%d ھەپتە ئىلگىرى" #~ msgid "Home Folder" #~ msgstr "ماكان مۇندەرىجە" #~ msgid "%1$s: %2$s" #~ msgstr "%1$s: %2$s" #~ msgid "PREFERENCES" #~ msgstr "مايىللىق" #~ msgid "Shut Down" #~ msgstr "تاقا" #~ msgid "Click Shut Down to quit these applications and shut down the system." #~ msgstr "تاقاش (Shut Down) نى بېسىپ پروگراممىدىن چېكىنىش ۋە سىستېمىنى تاقاش." #~ msgid "The system will shut down automatically in %d seconds." #~ msgstr "بۇ سىستېما %d سېكۇنتتىن كېيىن ئۆزلۈكىدىن تاقىلىدۇ." #~ msgid "Shutting down the system." #~ msgstr "سىستېما تاقىلىۋاتىدۇ." #~ msgid "Confirm" #~ msgstr "جەزملە" #~ msgid "Shut Down..." #~ msgstr "تاقا…" #~ msgid "Search your computer" #~ msgstr "كومپيۇتېر ئىزدەش" #~ msgid "Customize the panel clock" #~ msgstr "تاختا سائەتنى ئۆزلەشتۈرىدۇ" #~ msgid "Custom format of the clock" #~ msgstr "سائەتنىڭ ئىختىيارىي فورماتى" #~ msgid "Hour format" #~ msgstr "سائەت فورماتى" #~ msgid "" #~ "If true and format is either \"12-hour\" or \"24-hour\", display seconds " #~ "in time." #~ msgstr "" #~ "ئەگەر راست (true) بولسا سائەتتە ۋاقىت فورماتىنى «12 سائەت» ياكى «24 " #~ "سائەت» كۆرسەتكەندىن سىرت سېكۇنتنىمۇ كۆرسىتىدۇ." #~ msgid "" #~ "This key specifies the format used by the panel clock when the format key " #~ "is set to \"custom\". You can use conversion specifiers understood by " #~ "strftime() to obtain a specific format. See the strftime() manual for " #~ "more information." #~ msgstr "" #~ "format (فورمات) كۇنۇپكىسى \"custom\" (ئىختىيارى) قىلىپ تەڭشەلسە بۇ " #~ "كۇنۇپكا تاختا سائەت ئىشلىتىدىغان فورماتنى بەلگىلەيدۇ. سىز strftime()نىڭ " #~ "فورمات بەلگىسىنى ئىشلىتىپ بەلگىلەنگەن فورماتقا ئېرىشەلەيسىز. تەپسىلاتىنى " #~ "strftime() نىڭ قوللانمىسىدىن كۆرۈڭ." #~ msgid "" #~ "This key specifies the hour format used by the panel clock. Possible " #~ "values are \"12-hour\", \"24-hour\", \"unix\" and \"custom\". If set to " #~ "\"unix\", the clock will display time in seconds since Epoch, i.e. " #~ "1970-01-01. If set to \"custom\", the clock will display time according " #~ "to the format specified in the custom_format key. Note that if set to " #~ "either \"unix\" or \"custom\", the show_date and show_seconds keys are " #~ "ignored." #~ msgstr "" #~ "بۇ كۇنۇپكا تاختا سائەت ئىشلەتكەن سائەت فورماتىنى بەلگىلىگەن. ئىشلەتكىلى " #~ "بولىدىغان قىممىتى \"12-hour\" يەنى (12 سائەت)، \"24-hour\" يەنى (24 " #~ "سائەت)، \"unix\" ۋە \"custom\" (ئىختىيارى). ئەگەر \"unix\" قىلىپ " #~ "تەڭشەلسە سائەت ئۆزلۈكىدىن يېڭى ئېرا (يەنى، 1970-01-01) دىن ئۆتكەن " #~ "سېكۇنتنى ئاساس قىلىدۇ. ئەگەر \"custom\" قىلىپ تەڭشەلسە سائەت " #~ "custom_format كۇنۇپكا قىممىتىگە ئاساسەن ۋاقىتنى كۆرسىتىدۇ. ئەگەر \"unix" #~ "\" ياكى \"custom\" قىلىپ تەڭشەلسە show_date ۋە show_seconds قىممىتىگە " #~ "پەرۋا قىلمايدۇ" #~ msgid "Clip the crosshairs at the center" #~ msgstr "نىشانلىغۇچنى ئوتتۇرىغا توغرىلا" #~ msgid "Color of the crosshairs" #~ msgstr "نىشانلىغۇچنىڭ رەڭگى" #~ msgid "" #~ "Determines the length of the vertical and horizontal lines that make up " #~ "the crosshairs." #~ msgstr "" #~ "نىشانلىغۇچنى ھاسىل قىلىدىغان توغرا ۋە بوي سىزىقنىڭ ئۇزۇنلۇقى بەلگىلىنىدۇ." #~ msgid "" #~ "Determines the transparency of the crosshairs, from fully opaque to fully " #~ "transparent." #~ msgstr "نىشانلىغۇچنىڭ سۈزۈكلۈكى تولۇق سۈزۈكتىن تولۇق تۇتۇققىچە بەلگىلىنىدۇ." #~ msgid "Enable lens mode" #~ msgstr "لېنزا ھالىتىنى قوزغات" #~ msgid "Length of the crosshairs" #~ msgstr "نىشانلىغۇچنىڭ ئېگىزلىكى" #~ msgid "Magnification factor" #~ msgstr "چوڭايتىش-كىچىكلىتىش نىسبىتى" #~ msgid "Mouse Tracking Mode" #~ msgstr "چاشقىنەك ئىزلاش ھالىتى" #~ msgid "Opacity of the crosshairs" #~ msgstr "نىشانلىغۇچنىڭ سۈزۈكلۈكى" #~ msgid "Scroll magnified contents beyond the edges of the desktop" #~ msgstr "دومىلىما چوڭايتقۇچ ئۈستەل ئۈستى گىرۋەك مەزمۇنىدىن ھالقىپ كەتتى" #~ msgid "Show or hide crosshairs" #~ msgstr "نىشانلىغۇچنى كۆرسەت ياكى يوشۇر" #~ msgid "Show or hide the magnifier" #~ msgstr "لوپا ئەينەكنى كۆرسەت ياكى يوشۇر" #~ msgid "Show or hide the magnifier and all of its zoom regions." #~ msgstr "" #~ "لوپا ئەينەك ۋە ئۇنىڭ ھەممە چوڭايتىش دائىرىسىنى كۆرسەت ياكى يوشۇرىدۇ." #~ msgid "" #~ "The color of the the vertical and horizontal lines that make up the " #~ "crosshairs." #~ msgstr "نىشانلىغۇچنى ھاسىل قىلىدىغان توغرا ۋە بوي سىزىقنىڭ رەڭگى." #~ msgid "" #~ "The power of the magnification. A value of 1.0 means no magnification. A " #~ "value of 2.0 doubles the size." #~ msgstr "" #~ "چوڭايتىش كۈچى. 1.0 چوڭايتمايدۇ، 2.0 چوڭلۇقىنى ھەسسىلەيدۇ دېگەن مەنىدە." #~ msgid "Thickness of the crosshairs" #~ msgstr "نىشانلىغۇچنىڭ قېلىنلىقى" #~ msgid "" #~ "Width of the vertical and horizontal lines that make up the crosshairs." #~ msgstr "نىشانلىغۇچنى ھاسىل قىلىدىغان توغرا ۋە بوي سىزىقنىڭ كەڭلىكى." #~ msgid "Clock Format" #~ msgstr "سائەت فورماتى" #~ msgid "Clock Preferences" #~ msgstr "سائەت مايىللىقى" #~ msgid "Panel Display" #~ msgstr "تاختا كۆرسىتىش" #~ msgid "Show seco_nds" #~ msgstr "سېكۇنتنى كۆرسەت(_N)" #~ msgid "_12 hour format" #~ msgstr "_12 سائەت فورماتى" #~ msgid "_24 hour format" #~ msgstr "_24 سائەت فورماتى" #~ msgid "Preferences" #~ msgstr "مايىللىق" #~ msgid "" #~ "Can't add a new workspace because maximum workspaces limit has been " #~ "reached." #~ msgstr "" #~ "يېڭى خىزمەت رايونى قوشالمايدۇ چۈنكى ئەڭ كۆپ خىزمەت رايون چېكىگە يەتتى." #~ msgid "Can't remove the first workspace." #~ msgstr "بىرىنچى خىزمەت رايونىنى چىقىرىۋەتكىلى بولمايدۇ." #~ msgid "Overview workspace view mode" #~ msgstr "خىزمەت رايون كۆرۈنۈش ھالىتى ھەققىدە قىسقىچە بايان" #~ msgid "" #~ "The selected workspace view mode in the overview. Supported values are " #~ "\"single\" and \"grid\"." #~ msgstr "" #~ "قىسقىچە باياندىكى تاللانغان خىزمەت رايونىنىڭ كۆرۈنۈش ھالىتى. ئىشلىتىشكە " #~ "بولىدىغان قىممەتلەر «يەككە» ۋە «سېتكا»" #~ msgid "Drag here to add favorites" #~ msgstr "بۇ جايغا سۆرەپ يىغقۇچقا قوش" #~ msgid "Find" #~ msgstr "ئىزدە" 0707010000026A000081A40000000000000000000000016712993F00020104000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/uk.po# Ukrainian translation for gnome-shell. # Copyright (C) 2010 Free Software Foundation # This file is distributed under the same license as the gnome-shell package. # # # # Maxim V. Dziumanenko , 2010. # Daniel Korostil , 2013, 2014, 2015, 2016, 2017. # Danylo Korostil , 2020. # Yuri Chornoivan , 2020, 2021, 2022, 2023, 2024. # Olexander Movchan , 2022. msgid "" msgstr "" "Project-Id-Version: gnome-shell master\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues/\n" "POT-Creation-Date: 2024-08-21 13:15+0000\n" "PO-Revision-Date: 2024-08-23 12:30+0300\n" "Last-Translator: Yuri Chornoivan \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=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" "%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2\n" "X-Generator: Lokalize 23.04.3\n" "X-Project-Style: gnome\n" "X-DL-Team: uk\n" "X-DL-Module: gnome-shell\n" "X-DL-Branch: main\n" "X-DL-Domain: po\n" "X-DL-State: Translating\n" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "Пускачі" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate pinned app 1" msgstr "Активувати пришпилену програму 1" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate pinned app 2" msgstr "Активувати пришпилену програму 2" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate pinned app 3" msgstr "Активувати пришпилену програму 3" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate pinned app 4" msgstr "Активувати пришпилену програму 4" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate pinned app 5" msgstr "Активувати пришпилену програму 5" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate pinned app 6" msgstr "Активувати пришпилену програму 6" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate pinned app 7" msgstr "Активувати пришпилену програму 7" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate pinned app 8" msgstr "Активувати пришпилену програму 8" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate pinned app 9" msgstr "Активувати пришпилену програму 9" #: data/50-gnome-shell-launchers.xml:46 msgid "Open new window of pinned app 1" msgstr "Відкрити нове вікно пришпиленої програми 1" #: data/50-gnome-shell-launchers.xml:50 msgid "Open new window of pinned app 2" msgstr "Відкрити нове вікно пришпиленої програми 2" #: data/50-gnome-shell-launchers.xml:54 msgid "Open new window of pinned app 3" msgstr "Відкрити нове вікно пришпиленої програми 3" #: data/50-gnome-shell-launchers.xml:58 msgid "Open new window of pinned app 4" msgstr "Відкрити нове вікно пришпиленої програми 4" #: data/50-gnome-shell-launchers.xml:62 msgid "Open new window of pinned app 5" msgstr "Відкрити нове вікно пришпиленої програми 5" #: data/50-gnome-shell-launchers.xml:66 msgid "Open new window of pinned app 6" msgstr "Відкрити нове вікно пришпиленої програми 6" #: data/50-gnome-shell-launchers.xml:70 msgid "Open new window of pinned app 7" msgstr "Відкрити нове вікно пришпиленої програми 7" #: data/50-gnome-shell-launchers.xml:74 msgid "Open new window of pinned app 8" msgstr "Відкрити нове вікно пришпиленої програми 8" #: data/50-gnome-shell-launchers.xml:78 msgid "Open new window of pinned app 9" msgstr "Відкрити нове вікно пришпиленої програми 9" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2274 msgid "Screenshots" msgstr "Знімки екрана" #: data/50-gnome-shell-screenshots.xml:9 #: data/org.gnome.shell.gschema.xml.in:287 msgid "Take a screenshot interactively" msgstr "Зробити знімок екрана інтерактивно" #: data/50-gnome-shell-screenshots.xml:12 #: data/org.gnome.shell.gschema.xml.in:299 msgid "Take a screenshot" msgstr "Зробити знімок" #: data/50-gnome-shell-screenshots.xml:15 #: data/org.gnome.shell.gschema.xml.in:295 msgid "Take a screenshot of a window" msgstr "Зробити знімок вікна" #: data/50-gnome-shell-screenshots.xml:18 #: data/org.gnome.shell.gschema.xml.in:291 msgid "Record a screencast interactively" msgstr "Записати з екрана інтерактивно" #: data/50-gnome-shell-system.xml:6 js/ui/messageTray.js:1298 msgid "System" msgstr "Система" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "Показувати перелік сповіщень" #: data/50-gnome-shell-system.xml:12 msgid "Open the quick settings menu" msgstr "Відкрити меню швидких параметрів" #: data/50-gnome-shell-system.xml:15 msgid "Focus the active notification" msgstr "Перейти до активних сповіщень" #: data/50-gnome-shell-system.xml:18 msgid "Show the overview" msgstr "Показати огляд" #: data/50-gnome-shell-system.xml:21 msgid "Show all apps" msgstr "Показати всі програми" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "GNOME Shell" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "Керування вікнами та запуск програм" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" "Увімкнути внутрішні засоби, які будуть корисними для розробників і " "випробування при натисненні Alt-F2" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Надає доступ до внутрішніх засобів зневаджування та спостереження через Alt-" "F2." #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "Увімкнути розширення UUID" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "Розширення GNOME Shell мають властивості «UUID»; цей ключ перелічує " "розширення, які потрібно завантажувати. Вимкнення розширень ігноруватиме ці " "налаштування для розширень, які з'являються в обох переліках. Також можете " "орудувати цим переліком через способи EnableExtension і DisableExtension " "DBus DisableExtension DBus на org.gnome.Shell." #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "Коди UUID розширень, які примусово вимкнено" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" "Розширення GNOME Shell мають властивості «UUID»; цей ключ перелічує " "розширення, які потрібно вимкнути, навіть якщо вони завантажені в поточному " "сеансі. Також можете комбінувати цей список через методи D-Bus " "«EnableExtension» і «DisableExtension» у org.gnome.Shell. Це ключ переважає " "над параметром «enabled-extensions»." #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "Вимкнути розширення користувача" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" "Вимкнути всі розширення, які користувач увімкнув сам, без використання " "параметра «enabled-extension»." #: data/org.gnome.shell.gschema.xml.in:45 msgid "Allow extension installation" msgstr "Дозволити встановлення розширень" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "Allow users to install extensions in their home folder. If disabled, the " "InstallRemoteExtension D-Bus method will fail, and extensions are only " "loaded from system directories on startup. It does not affect extensions " "that are already loaded, so a change only takes full effect on the next " "login." msgstr "" "Дозволити користувачам встановлювати розширення до власної домашньої теки. " "Якщо вимкнено, спроба скористатися методом D-Bus InstallRemoteExtension " "завершуватиметься помилкою, а розширення при запуску завантажуватимуться " "лише з загальносистемних каталогів. Це не стосуватиметься вже завантажених " "розширень, тому внесені зміни набудуть чинності лише після наступного входу " "до системи." #: data/org.gnome.shell.gschema.xml.in:56 msgid "Disables the validation of extension version compatibility" msgstr "Вимикає перевірку сумісності версії розширення" #: data/org.gnome.shell.gschema.xml.in:57 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "GNOME Shell завантажуватиме тільки розширення, які вимагають поточну версію. " "Увімкнення цього параметра вимкне цю перевірку і спробує завантажувати всі " "розширення, навіть попри те, що версії можуть бути несумісні." #: data/org.gnome.shell.gschema.xml.in:65 msgid "List of desktop file IDs for favorite applications" msgstr "Перелічити ідентифікатори файла стільниці для улюблених програм" #: data/org.gnome.shell.gschema.xml.in:66 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" "Програми, які відповідають цьому ідентифікатору, буде показано в ділянці " "улюбленого." #: data/org.gnome.shell.gschema.xml.in:73 msgid "History for command (Alt-F2) dialog" msgstr "Історія для команд (Alt-F2)" #. Translators: looking glass is a debugger and inspector tool, see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/docs/looking-glass.md #: data/org.gnome.shell.gschema.xml.in:78 msgid "History for the looking glass dialog" msgstr "Історія для пошуку дзеркальних діалогів" #: data/org.gnome.shell.gschema.xml.in:82 msgid "Always show the “Log Out” action in the system menu" msgstr "Завжди показувати пункт меню «Вийти» у меню системи" #: data/org.gnome.shell.gschema.xml.in:83 msgid "" "This key overrides the automatic hiding of the “Log out” action in the " "system menu for logged-in situations where there is a single, local, non-" "system user and only a single available session type (e.g. GNOME on Wayland)." msgstr "" "Цей ключ перевизначає автоматичне приховування пункту меню «Вийти» у меню " "системи для випадків, коли існує лише один локальний несистемний користувач " "і доступний лише один тип сеансу ( наприклад GNOME на основі Wayland)." #: data/org.gnome.shell.gschema.xml.in:92 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "Чи запам'ятовувати пароль для монтування шифрованих або віддалених файлових " "систем" #: data/org.gnome.shell.gschema.xml.in:93 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "Середовище вимагатиме пароль, коли змонтовано зашифрований пристрій або " "віддалену файлову систему. Якщо пароль можна зберегти для подальшого вжитку, " "то з'явиться параметр «Запам'ятати пароль». Цей ключ вказує типовий стан " "цього параметра." #: data/org.gnome.shell.gschema.xml.in:102 msgid "The last selected non-default power profile" msgstr "Останній вибраний нетиповий профіль живлення" #: data/org.gnome.shell.gschema.xml.in:103 msgid "" "Some systems support more than two power profiles. In order to still support " "toggling between two profiles, this key records the last selected non-" "default profile." msgstr "" "У деяких системах передбачено понад два профілі живлення. Для уможливлення " "перемикання між двома профілями у цьому ключі записано останній нетиповий " "профіль." #: data/org.gnome.shell.gschema.xml.in:111 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "Останню версію вікна «Вітаємо у GNOME» було показано для" #: data/org.gnome.shell.gschema.xml.in:112 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can " "be used to effectively disable the dialog." msgstr "" "Цей ключ визначає, для якої версії було востаннє показано вікно «Вітаємо у " "GNOME». Порожній рядок відповідає найстарішій доступній версії, а дуже " "велике число — версіям, яких іще не існує. Таким великим числом можна " "скористатися для того, щоб вимкнути показ вікна." #: data/org.gnome.shell.gschema.xml.in:145 msgid "Layout of the app picker" msgstr "Компонування засобу вибору програм" #: data/org.gnome.shell.gschema.xml.in:146 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" msgstr "" "Компонування засобу вибору програм. Кожен запис у цьому масиві є сторінкою. " "Сторінки зберігаються у порядку, у якому їх буде показано у GNOME Shell. " "Кожна сторінка містить пану записів “ідентифікатор програми” → 'дані'. У " "поточній версії як 'дані' може бути збережено такі значення: • “позиція”: " "позиція піктограми програми на сторінці" #: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:172 msgid "Keybinding to shift between overview states" msgstr "Комбінація клавіш для перемикання між станами огляду" #: data/org.gnome.shell.gschema.xml.in:166 msgid "Keybinding to shift between session, window picker and app grid" msgstr "" "Комбінація клавіш для переходу між сеансом, засобом вибору вікна та таблицею " "програм" #: data/org.gnome.shell.gschema.xml.in:173 msgid "Keybinding to shift between app grid, window picker and session" msgstr "" "Комбінація клавіш для переходу між таблицею програм, засобом вибору вікна та " "сеансом" #: data/org.gnome.shell.gschema.xml.in:179 msgid "Keybinding to open the “Show Applications” view" msgstr "Комбінація клавіш, щоб «Показати програми»" #: data/org.gnome.shell.gschema.xml.in:180 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "Комбінація клавіш, щоб «Показати програми» в огляді діяльності." #: data/org.gnome.shell.gschema.xml.in:187 msgid "Keybinding to open the overview" msgstr "Комбінація клавіш, щоб відкрити огляд" #: data/org.gnome.shell.gschema.xml.in:188 msgid "Keybinding to open the Activities Overview." msgstr "Комбінація клавіш, щоб відкрити огляд діяльності." #: data/org.gnome.shell.gschema.xml.in:194 msgid "Keybinding to toggle the visibility of the notification list" msgstr "Комбінація клавіш, щоб змінювати видимість переліку сповіщень" #: data/org.gnome.shell.gschema.xml.in:195 msgid "Keybinding to toggle the visibility of the notification list." msgstr "Комбінація клавіш, щоб змінювати видимість переліку сповіщень." #: data/org.gnome.shell.gschema.xml.in:201 msgid "Keybinding to toggle the quick settings menu" msgstr "Комбінація клавіш для вмикання або вимикання меню параметрів" #: data/org.gnome.shell.gschema.xml.in:202 msgid "Keybinding to toggle the quick settings menu." msgstr "Комбінація клавіш для вмикання або вимикання меню параметрів." #: data/org.gnome.shell.gschema.xml.in:208 msgid "Keybinding to focus the active notification" msgstr "Комбінація клавіш, щоб перейти до активних сповіщень" #: data/org.gnome.shell.gschema.xml.in:209 msgid "Keybinding to focus the active notification." msgstr "Комбінація клавіш, щоб перейти до активних сповіщень." #: data/org.gnome.shell.gschema.xml.in:215 msgid "Switch to application 1" msgstr "Перемкнутися на програму 1" #: data/org.gnome.shell.gschema.xml.in:219 msgid "Switch to application 2" msgstr "Перемкнутися на програму 2" #: data/org.gnome.shell.gschema.xml.in:223 msgid "Switch to application 3" msgstr "Перемкнутися на програму 3" #: data/org.gnome.shell.gschema.xml.in:227 msgid "Switch to application 4" msgstr "Перемкнутися на програму 4" #: data/org.gnome.shell.gschema.xml.in:231 msgid "Switch to application 5" msgstr "Перемкнутися на програму 5" #: data/org.gnome.shell.gschema.xml.in:235 msgid "Switch to application 6" msgstr "Перемкнутися на програму 6" #: data/org.gnome.shell.gschema.xml.in:239 msgid "Switch to application 7" msgstr "Перемкнутися на програму 7" #: data/org.gnome.shell.gschema.xml.in:243 msgid "Switch to application 8" msgstr "Перемкнутися на програму 8" #: data/org.gnome.shell.gschema.xml.in:247 msgid "Switch to application 9" msgstr "Перемкнутися на програму 9" #: data/org.gnome.shell.gschema.xml.in:251 msgid "Open a new instance of application 1" msgstr "Відкрити новий екземпляр програми 1" #: data/org.gnome.shell.gschema.xml.in:255 msgid "Open a new instance of application 2" msgstr "Відкрити новий екземпляр програми 2" #: data/org.gnome.shell.gschema.xml.in:259 msgid "Open a new instance of application 3" msgstr "Відкрити новий екземпляр програми 3" #: data/org.gnome.shell.gschema.xml.in:263 msgid "Open a new instance of application 4" msgstr "Відкрити новий екземпляр програми 4" #: data/org.gnome.shell.gschema.xml.in:267 msgid "Open a new instance of application 5" msgstr "Відкрити новий екземпляр програми 5" #: data/org.gnome.shell.gschema.xml.in:271 msgid "Open a new instance of application 6" msgstr "Відкрити новий екземпляр програми 6" #: data/org.gnome.shell.gschema.xml.in:275 msgid "Open a new instance of application 7" msgstr "Відкрити новий екземпляр програми 7" #: data/org.gnome.shell.gschema.xml.in:279 msgid "Open a new instance of application 8" msgstr "Відкрити новий екземпляр програми 8" #: data/org.gnome.shell.gschema.xml.in:283 msgid "Open a new instance of application 9" msgstr "Відкрити новий екземпляр програми 9" #: data/org.gnome.shell.gschema.xml.in:308 #: data/org.gnome.shell.gschema.xml.in:335 msgid "Limit switcher to current workspace." msgstr "Обмежити перемикач на поточний робочий простір." #: data/org.gnome.shell.gschema.xml.in:309 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "Якщо це вказано, то тільки програми з поточного робочого простору будуть " "показані в перемикачі. Інакше — програми з усіх просторів." #: data/org.gnome.shell.gschema.xml.in:326 msgid "The application icon mode." msgstr "Режим піктограм для програм." #: data/org.gnome.shell.gschema.xml.in:327 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-only” " "(shows only the application icon) or “both”." msgstr "" "Налаштовує яким чином вікна показуються в перемикачі. Допустимі значення: " "«thumbnail-only» (показує мініатюру вікна), «app-icon-only» (показує тільки " "піктограми програм) або «both» (обидва)." #: data/org.gnome.shell.gschema.xml.in:336 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "Якщо це вказано, то тільки вікна з поточного робочого простору будуть " "показані в перемикачі. Інакше — вікна з усіх просторів." #: data/org.gnome.shell.gschema.xml.in:346 msgid "Locations" msgstr "Місцевості" #: data/org.gnome.shell.gschema.xml.in:347 msgid "The locations to show in world clocks" msgstr "Місцевість для світового годинника" #: data/org.gnome.shell.gschema.xml.in:357 msgid "Automatic location" msgstr "Автоматичне визначення місцевості" #: data/org.gnome.shell.gschema.xml.in:358 msgid "Whether to fetch the current location or not" msgstr "Чи одержувати поточну локацію" #: data/org.gnome.shell.gschema.xml.in:365 msgid "Location" msgstr "Місцевість" #: data/org.gnome.shell.gschema.xml.in:366 msgid "The location for which to show a forecast" msgstr "Місцевість для прогнозу погоди" #. Keep in sync with subprojects/extensions-app #: data/org.gnome.Shell.Extensions.desktop.in.in:5 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/data/ui/extensions-window.ui:57 msgid "Extensions" msgstr "Розширення" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "Мережевий вхід" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:275 msgid "Something’s gone wrong" msgstr "Трапилась халепа" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" "На жаль, виникла помилка: неможливо показати параметри для розширення. " "Радимо, повідомити про ваду автора розширення." #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "Технічні подробиці" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "Сторінка" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 msgid "Visit extension homepage" msgstr "Відвідати сторінку розширення" #: js/gdm/authPrompt.js:151 js/gdm/loginDialog.js:466 #: js/ui/audioDeviceSelection.js:66 js/ui/components/networkAgent.js:113 #: js/ui/components/polkitAgent.js:144 js/ui/endSessionDialog.js:437 #: js/ui/extensionDownloader.js:276 js/ui/shellMountOperation.js:382 #: js/ui/shellMountOperation.js:392 msgid "Cancel" msgstr "Скасувати" #: js/gdm/authPrompt.js:317 js/ui/components/networkAgent.js:213 #: js/ui/components/networkAgent.js:233 js/ui/components/networkAgent.js:265 #: js/ui/components/networkAgent.js:298 js/ui/components/networkAgent.js:337 #: js/ui/components/networkAgent.js:350 js/ui/components/polkitAgent.js:286 #: js/ui/shellMountOperation.js:332 msgid "Password" msgstr "Пароль" #: js/gdm/loginDialog.js:326 msgid "Choose Session" msgstr "Виберіть сеанс" #. Translators: is running for #: js/gdm/loginDialog.js:424 #, javascript-format msgid "" "Remote login is not possible because a remote session is already running for " "%s. To login remotely, you must log out from the remote session or force " "stop it." msgstr "" "Віддалений вхід неможливий, оскільки для %s вже запущено віддалений сеанс. " "Щоб увійти до системи віддалено, вам слід вийти з віддаленого сеансу або " "примусово його припинити." #. Translators: is running for #: js/gdm/loginDialog.js:427 #, javascript-format msgid "" "Login is not possible because a remote session is already running for %s. To " "login, you must log out from the remote session or force stop it." msgstr "" "Вхід неможливий, оскільки для %s вже запущено віддалений сеанс. Щоб увійти " "до системи, вам слід вийти з віддаленого сеансу або примусово його припинити." #. Translators: is running for #: js/gdm/loginDialog.js:430 #, javascript-format msgid "" "Remote login is not possible because a local session is already running for " "%s. To login remotely, you must log out from the local session or force stop " "it." msgstr "" "Віддалений вхід неможливий, оскільки для %s вже запущено локальний сеанс. " "Щоб увійти до системи віддалено, вам слід вийти з локального сеансу або " "примусово його припинити." #. Translators: is running for #: js/gdm/loginDialog.js:433 #, javascript-format msgid "" "Login is not possible because a session is already running for %s. To login, " "you must log out from the session or force stop it." msgstr "" "Вхід неможливий, оскільки для %s вже запущено сеанс. Щоб увійти до системи, " "вам слід вийти з сеансу або примусово його припинити." #: js/gdm/loginDialog.js:442 msgid "Session Already Running" msgstr "Сеанс уже запущено" #: js/gdm/loginDialog.js:454 msgid "" "Force stopping will quit any running apps and processes, and could result in " "data loss" msgstr "" "Примусове припинення сеансу призведе до завершення роботи усіх запущених у " "ньому програм і процесів, а отже, може призвести до втрати даних" #: js/gdm/loginDialog.js:474 msgid "Force Stop" msgstr "Примусово зупинити" #: js/gdm/loginDialog.js:542 msgid "Not listed?" msgstr "Немає в переліку?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:1010 #, javascript-format msgid "(e.g., user or %s)" msgstr "(наприклад, користувач або %s)" #: js/gdm/loginDialog.js:1015 js/ui/components/networkAgent.js:257 #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:326 msgid "Username" msgstr "Користувач" #: js/gdm/loginDialog.js:1081 msgid "Login Attempt Timed Out" msgstr "Перевищення часу очікування у спробі входу" #: js/gdm/loginDialog.js:1082 msgid "Login took too long, please try again" msgstr "Спроба входу тривала надто довго. Будь ласка, повторіть спробу" #: js/gdm/loginDialog.js:1431 msgid "Login Window" msgstr "Вікно входу" #: js/gdm/util.js:496 msgid "Authentication error" msgstr "Помилка автентифікації" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:727 msgid "(or swipe finger across reader)" msgstr "(або проведіть пальцем на зчитувачі)" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:732 msgid "(or place finger on reader)" msgstr "(або розташуйте палець на зчитувачі)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:91 msgctxt "search-result" msgid "Power Off" msgstr "Вимкнути" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:94 msgid "power off;poweroff;shutdown;halt;stop" msgstr "" "вимкнути;перезавантажити;зупинити;power off;poweroff;shutdown;halt;stop" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:99 msgctxt "search-result" msgid "Restart" msgstr "Перезапустити" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:102 msgid "reboot;restart;" msgstr "reboot;restart;перезавантаження;перезапуск;" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:107 msgctxt "search-result" msgid "Lock Screen" msgstr "Заблокувати екран" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:110 msgid "lock screen" msgstr "заблокувати екран;lock screen" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:115 msgctxt "search-result" msgid "Log Out" msgstr "Вийти" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:118 msgid "logout;log out;sign off" msgstr "вийти;завершити роботу;logout;log out;sign off" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:123 msgctxt "search-result" msgid "Suspend" msgstr "Призупинити" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:126 msgid "suspend;sleep" msgstr "призупинити;сон;suspend;sleep" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:131 msgctxt "search-result" msgid "Switch User" msgstr "Змінити користувача" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:134 msgid "switch user" msgstr "змінити користувача;перемкнути;switch user" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:141 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "" "заблокувати орієнтацію;розблокувати орієнтацію;екран;обертання;lock " "orientation;unlock orientation;screen;rotation" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:146 msgctxt "search-result" msgid "Take a Screenshot" msgstr "Зробити знімок екрана" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:149 msgid "screenshot;screencast;snip;capture;record" msgstr "" "screenshot;screencast;snip;capture;record;знімок;вікна;вікно;скрінкаст;запис " "з екрана;захоплення;запис;" #: js/misc/systemActions.js:249 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "Розблокувати обертання екрана" #: js/misc/systemActions.js:250 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "Заблокувати обертання екрана" #: js/misc/util.js:130 msgid "Command not found" msgstr "Команди не знайдено" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:170 msgid "Could not parse command:" msgstr "Неможливо розібрати команду:" #: js/misc/util.js:178 #, javascript-format msgid "Execution of “%s” failed:" msgstr "Не вдалось виконати «%s»:" #: js/misc/dateUtils.js:69 msgid "Just now" msgstr "Щойно" #: js/misc/dateUtils.js:72 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d хвилина тому" msgstr[1] "%d хвилини тому" msgstr[2] "%d хвилин тому" msgstr[3] "%d хвилина тому" #: js/misc/dateUtils.js:79 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d година тому" msgstr[1] "%d години тому" msgstr[2] "%d годин тому" msgstr[3] "%d година тому" #: js/misc/dateUtils.js:85 js/ui/dateMenu.js:183 msgid "Yesterday" msgstr "Учора" #: js/misc/dateUtils.js:88 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d день тому" msgstr[1] "%d дні тому" msgstr[2] "%d днів тому" msgstr[3] "%d день тому" #: js/misc/dateUtils.js:95 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d тиждень тому" msgstr[1] "%d тижні тому" msgstr[2] "%d тижнів тому" msgstr[3] "%d тиждень тому" #: js/misc/dateUtils.js:102 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%d місяць тому" msgstr[1] "%d місяці тому" msgstr[2] "%d місяців тому" msgstr[3] "%d місяць тому" #: js/misc/dateUtils.js:108 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "%d рік тому" msgstr[1] "%d роки тому" msgstr[2] "%d років тому" msgstr[3] "%d рік тому" #. Translators: Time in 24h format #: js/misc/dateUtils.js:155 msgid "%H∶%M" msgstr "%H:%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/dateUtils.js:161 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "Учора, %H∶%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/dateUtils.js:167 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/dateUtils.js:173 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%-d %B, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/dateUtils.js:179 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%-d %B %Y, %H∶%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/dateUtils.js:184 msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/dateUtils.js:190 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "Учора, %l∶%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/dateUtils.js:196 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/dateUtils.js:202 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%-d %B, %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/dateUtils.js:208 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%-d %B %Y, %l∶%M %p" #: js/portalHelper/main.js:98 msgid "Your connection seems to be secure" msgstr "Ваше з'єднання з цим сайтом захищене" #: js/portalHelper/main.js:104 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "З'єднання з точкою — небезпечне. Пароль та інша інформація, яку ви вводите " "на цій сторінці, може бути перехоплено людьми поруч." #: js/portalHelper/main.js:115 msgid "Hotspot Login" msgstr "Вхід в точку" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:51 js/ui/inhibitShortcutsDialog.js:92 msgid "Deny" msgstr "Заборонити" #: js/ui/accessDialog.js:52 js/ui/inhibitShortcutsDialog.js:101 msgid "Allow" msgstr "Дозволити" #: js/ui/appDisplay.js:1769 msgid "Unnamed Folder" msgstr "Неназвана тека" #: js/ui/appFavorites.js:163 #, javascript-format msgid "%s has been pinned to the dash." msgstr "%s було пришпилено до панелі приладів." #: js/ui/appFavorites.js:194 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "%s було відшпилено від панелі приладів." #: js/ui/appFavorites.js:208 js/ui/main.js:281 msgid "Undo" msgstr "Повернути" #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:49 msgid "Open Windows" msgstr "Відкрити вікна" #: js/ui/appMenu.js:57 msgid "New Window" msgstr "Нове вікно" #: js/ui/appMenu.js:84 msgid "App Details" msgstr "Подробиці щодо програми" #: js/ui/appMenu.js:100 msgid "Quit" msgstr "Вийти" #: js/ui/appMenu.js:160 js/ui/dash.js:248 msgid "Unpin" msgstr "Відшпилити" #: js/ui/appMenu.js:161 msgid "Pin to Dash" msgstr "Пришпилити до панелі приладів" #: js/ui/appMenu.js:178 msgid "Launch using Integrated Graphics Card" msgstr "Запустити через інтегровану графічну плату" #: js/ui/appMenu.js:179 msgid "Launch using Discrete Graphics Card" msgstr "Запустити через дискретну графічну плату" #: js/ui/audioDeviceSelection.js:46 msgid "Select Audio Device" msgstr "Вибрати звуковий пристрій" #: js/ui/audioDeviceSelection.js:61 js/ui/status/volume.js:81 msgid "Sound Settings" msgstr "Параметри звуку" #: js/ui/audioDeviceSelection.js:74 msgid "Headphones" msgstr "Навушники" #: js/ui/audioDeviceSelection.js:76 msgid "Headset" msgstr "Гарнітура" #: js/ui/audioDeviceSelection.js:78 js/ui/status/volume.js:356 msgid "Microphone" msgstr "Мікрофон" #: js/ui/backgroundMenu.js:13 msgid "Change Background…" msgstr "Змінити тло…" #: js/ui/backgroundMenu.js:15 msgid "Display Settings" msgstr "Параметри екрана" #: js/ui/backgroundMenu.js:16 msgid "Settings" msgstr "Параметри" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:37 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:63 msgctxt "grid sunday" msgid "S" msgstr "Н" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:65 msgctxt "grid monday" msgid "M" msgstr "П" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:67 msgctxt "grid tuesday" msgid "T" msgstr "В" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:69 msgctxt "grid wednesday" msgid "W" msgstr "С" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:71 msgctxt "grid thursday" msgid "T" msgstr "Ч" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:73 msgctxt "grid friday" msgid "F" msgstr "П" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:75 msgctxt "grid saturday" msgid "S" msgstr "С" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:426 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:436 msgid "%OB %Y" msgstr "%OB %Y" #: js/ui/calendar.js:498 msgid "Previous month" msgstr "Попередній місяць" #: js/ui/calendar.js:516 msgid "Next month" msgstr "Наступний місяць" #: js/ui/calendar.js:667 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:726 msgid "Week %V" msgstr "Тиждень %V" #: js/ui/calendar.js:918 msgid "No Notifications" msgstr "Немає сповіщень" #: js/ui/calendar.js:974 msgid "Do Not Disturb" msgstr "Не турбувати" #: js/ui/calendar.js:995 msgid "Clear" msgstr "Очистити" #: js/ui/calendar.js:999 msgctxt "action" msgid "Clear all notifications" msgstr "Вилучити усі сповіщення" #. Translators: %s is an application name #: js/ui/closeDialog.js:42 #, javascript-format msgid "“%s” Is Not Responding" msgstr "«%s» не відповідає" #: js/ui/closeDialog.js:43 msgid "" "You may choose to wait a short while for it to continue or force the app to " "quit entirely" msgstr "" "Можете трошки зачекати відновлення активності або примусово закрити програму" #: js/ui/closeDialog.js:71 msgid "Force Quit" msgstr "Примусово закрити" #: js/ui/closeDialog.js:76 msgid "Wait" msgstr "Зачекати" #: js/ui/components/automountManager.js:82 msgid "External drive connected" msgstr "Зовнішній пристрій під'єднано" #: js/ui/components/automountManager.js:94 msgid "External drive disconnected" msgstr "Зовнішній пристрій від'єднано" #: js/ui/components/automountManager.js:208 msgid "Unable to unlock volume" msgstr "Неможливо розблокувати том" #: js/ui/components/automountManager.js:209 msgid "The installed udisks version does not support the PIM setting" msgstr "Наявна версія udisks не підтримує параметри PIM" #. Translators: %s is the name of a partition on a external drive #: js/ui/components/autorunManager.js:189 #, javascript-format #| msgid "%d connected" #| msgid_plural "%d connected" msgid "“%s” connected" msgstr "«%s» з'єднано" #: js/ui/components/autorunManager.js:190 msgid "Disk can now be used" msgstr "Тепер диском можна користуватися" #: js/ui/components/autorunManager.js:202 #, javascript-format msgid "Open with %s" msgstr "Відкрити через %s" #: js/ui/components/networkAgent.js:95 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router" msgstr "" "Також можете під'єднатися, натиснувши кнопку «WPS» на вашому маршрутизаторі" #: js/ui/components/networkAgent.js:107 js/ui/status/bluetooth.js:245 #: js/ui/status/network.js:360 js/ui/status/network.js:444 msgid "Connect" msgstr "З'єднатись" #: js/ui/components/networkAgent.js:222 msgid "Key" msgstr "Ключ" #: js/ui/components/networkAgent.js:273 js/ui/components/networkAgent.js:312 msgid "Private key password" msgstr "Пароль до закритого ключа" #: js/ui/components/networkAgent.js:306 msgid "Identity" msgstr "Профіль" #: js/ui/components/networkAgent.js:332 msgid "Service" msgstr "Служба" #: js/ui/components/networkAgent.js:370 js/ui/components/networkAgent.js:406 #: js/ui/components/networkAgent.js:743 js/ui/components/networkAgent.js:764 msgid "Authentication required" msgstr "Необхідна автентифікація" #: js/ui/components/networkAgent.js:371 js/ui/components/networkAgent.js:744 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network “%s”" msgstr "Потрібно паролі або зашифровані ключі для доступу до радіомережі «%s»" #: js/ui/components/networkAgent.js:375 js/ui/components/networkAgent.js:748 msgid "Wired 802.1X authentication" msgstr "Дротова автентифікація 802.1X" #: js/ui/components/networkAgent.js:378 msgid "Network name" msgstr "Назва мережі" #: js/ui/components/networkAgent.js:386 js/ui/components/networkAgent.js:752 msgid "DSL authentication" msgstr "Автентифікація DSL" #: js/ui/components/networkAgent.js:393 js/ui/components/networkAgent.js:757 msgid "PIN code required" msgstr "Потрібен код PIN" #: js/ui/components/networkAgent.js:394 js/ui/components/networkAgent.js:758 msgid "PIN code is needed for the mobile broadband device" msgstr "Потрібен код PIN для мобільних широкосмугових пристроїв" #: js/ui/components/networkAgent.js:396 msgid "PIN" msgstr "Пін-код" #: js/ui/components/networkAgent.js:407 js/ui/components/networkAgent.js:749 #: js/ui/components/networkAgent.js:753 js/ui/components/networkAgent.js:765 #: js/ui/components/networkAgent.js:769 #, javascript-format msgid "A password is required to connect to “%s”" msgstr "Пароль потрібен для з'єднання з «%s»" #: js/ui/components/networkAgent.js:768 msgid "VPN password" msgstr "Пароль VPN" #: js/ui/components/polkitAgent.js:44 msgid "Authentication Required" msgstr "Необхідна автентифікація" #: js/ui/components/polkitAgent.js:84 msgid "Administrator" msgstr "Адміністратор" #: js/ui/components/polkitAgent.js:149 msgid "Authenticate" msgstr "Автентифікувати" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:263 js/ui/shellMountOperation.js:415 msgid "Sorry, that didn’t work. Please try again." msgstr "Вибачте, це не спрацювало. Спробуйте ще." #: js/ui/ctrlAltTab.js:23 js/ui/overviewControls.js:404 msgid "Windows" msgstr "Вікна" #: js/ui/dash.js:204 js/ui/dash.js:250 msgid "Show Apps" msgstr "Показати програми" #. Translators: this is the name of the dock/favorites area on #. the bottom of the overview #: js/ui/dash.js:408 msgid "Dash" msgstr "Панель приладів" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:99 msgid "%B %-d %Y" msgstr "%-d %B %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:106 msgid "%A %B %e %Y" msgstr "%A %-d %B %Y" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:172 msgctxt "calendar heading" msgid "%B %-d" msgstr "%-d %B" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:175 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%-d %B %Y" #: js/ui/dateMenu.js:181 msgid "Today" msgstr "Сьогодні" #: js/ui/dateMenu.js:185 msgid "Tomorrow" msgstr "Завтра" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:216 msgctxt "event list time" msgid "All Day" msgstr "Увесь день" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:238 msgid "%m/%d" msgstr "%d.%m" #: js/ui/dateMenu.js:289 msgid "No Events" msgstr "Немає подій" #: js/ui/dateMenu.js:411 msgid "Add World Clocks…" msgstr "Додати світові годинники…" #: js/ui/dateMenu.js:412 msgid "World Clocks" msgstr "Світові годинники" #: js/ui/dateMenu.js:702 msgid "Loading…" msgstr "Завантаження…" #: js/ui/dateMenu.js:712 msgid "Go Online for Weather Information" msgstr "Увійти в мережу за прогнозом погоди" #: js/ui/dateMenu.js:714 msgid "Weather Information Unavailable" msgstr "Відомості щодо погоди недоступні" #: js/ui/dateMenu.js:724 msgid "Weather" msgstr "Погода" #: js/ui/dateMenu.js:726 msgid "Select Weather Location…" msgstr "Виберіть місцевість для погоди…" #: js/ui/endSessionDialog.js:47 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "Завершити сеанс %s" #: js/ui/endSessionDialog.js:48 msgctxt "title" msgid "Log Out" msgstr "Завершити сеанс" #: js/ui/endSessionDialog.js:51 #, javascript-format msgid "%s will be logged out automatically in %d second" msgid_plural "%s will be logged out automatically in %d seconds" msgstr[0] "%s вийде автоматично через %d секунду" msgstr[1] "%s вийде автоматично через %d секунди" msgstr[2] "%s вийде автоматично через %d секунд" msgstr[3] "%s вийде автоматично через %d секунду" #: js/ui/endSessionDialog.js:57 #, javascript-format msgid "You will be logged out automatically in %d second" msgid_plural "You will be logged out automatically in %d seconds" msgstr[0] "Вихід автоматично через %d секунду" msgstr[1] "Вихід автоматично через %d секунди" msgstr[2] "Вихід автоматично через %d секунд" msgstr[3] "Вихід автоматично через %d секунду" #: js/ui/endSessionDialog.js:64 msgctxt "button" msgid "Log Out" msgstr "Вийти" #: js/ui/endSessionDialog.js:70 js/ui/status/system.js:174 msgctxt "title" msgid "Power Off" msgstr "Вимкнути" #: js/ui/endSessionDialog.js:71 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Установити оновлення і вимкнути" #: js/ui/endSessionDialog.js:74 #, javascript-format msgid "The system will power off automatically in %d second" msgid_plural "The system will power off automatically in %d seconds" msgstr[0] "Система автоматично вимкнеться через %d секунду" msgstr[1] "Система автоматично вимкнеться через %d секунди" msgstr[2] "Система автоматично вимкнеться через %d секунд" msgstr[3] "Система автоматично вимкнеться через %d секунду" #: js/ui/endSessionDialog.js:78 js/ui/endSessionDialog.js:97 msgctxt "checkbox" msgid "Install pending software updates" msgstr "Установити оновлення, які в черзі" #: js/ui/endSessionDialog.js:82 msgctxt "button" msgid "Power Off" msgstr "Вимкнути" #: js/ui/endSessionDialog.js:89 msgctxt "title" msgid "Restart" msgstr "Перезапустити" #: js/ui/endSessionDialog.js:90 msgctxt "title" msgid "Install Updates & Restart" msgstr "Установити оновлення і перезапустити" #: js/ui/endSessionDialog.js:93 #, javascript-format msgid "The system will restart automatically in %d second" msgid_plural "The system will restart automatically in %d seconds" msgstr[0] "Система автоматично перезапуститься через %d секунду" msgstr[1] "Система автоматично перезапуститься через %d секунди" msgstr[2] "Система автоматично перезапуститься через %d секунд" msgstr[3] "Система автоматично перезапуститься через %d секунду" #: js/ui/endSessionDialog.js:101 msgctxt "button" msgid "Restart" msgstr "Перезапустити" #: js/ui/endSessionDialog.js:109 msgctxt "title" msgid "Restart & Install Updates" msgstr "Перезапустити і встановити оновлення" #: js/ui/endSessionDialog.js:112 #, javascript-format msgid "The system will automatically restart and install updates in %d second" msgid_plural "" "The system will automatically restart and install updates in %d seconds" msgstr[0] "" "Система автоматично перезапуститься та встановить оновлення через %d секунду" msgstr[1] "" "Система автоматично перезапуститься та встановить оновлення через %d секунди" msgstr[2] "" "Система автоматично перезапуститься та встановить оновлення через %d секунд" msgstr[3] "" "Система автоматично перезапуститься та встановить оновлення через %d секунду" #: js/ui/endSessionDialog.js:119 js/ui/endSessionDialog.js:140 msgctxt "button" msgid "Restart & Install" msgstr "Перезапустити та встановити" #: js/ui/endSessionDialog.js:121 msgctxt "button" msgid "Install & Power Off" msgstr "Встановити і вимкнути" #: js/ui/endSessionDialog.js:122 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Вимкнути після встановлення оновлень" #: js/ui/endSessionDialog.js:129 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "Перезапустити і встановити оновлення" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:134 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "%s %s буде встановлено після перезапуску. Оновлення може тривати довго: " "переконайтесь, що ви зробили резервні копії та комп'ютер під'єднано до " "живлення." #: js/ui/endSessionDialog.js:283 msgid "Low battery power: please plug in before installing updates" msgstr "" "Низький рівень заряду батареї: під'єднайте до живлення перед установленням " "оновлень" #: js/ui/endSessionDialog.js:292 msgid "Some applications are busy or have unsaved work" msgstr "Деякі програми зайняті або мають незбережені дані" #: js/ui/endSessionDialog.js:297 msgid "Other users are logged in" msgstr "Є інші користувачі з активним сеансом" #: js/ui/endSessionDialog.js:467 msgctxt "button" msgid "Boot Options" msgstr "Параметри завантаження" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:672 #, javascript-format msgid "%s (remote)" msgstr "%s (віддалено)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:675 #, javascript-format msgid "%s (console)" msgstr "%s (консоль)" #: js/ui/extensionDownloader.js:280 msgid "Install" msgstr "Встановити" #: js/ui/extensionDownloader.js:286 msgid "Install Extension" msgstr "Встановити розширення" #: js/ui/extensionDownloader.js:287 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "Звантажити і встановити «%s» з extensions.gnome.org?" #: js/ui/extensionSystem.js:352 msgid "Extension Updates Available" msgstr "Випущено оновлення розширень" #: js/ui/extensionSystem.js:353 msgid "Extension updates are ready to be installed" msgstr "Приготовано до встановлення оновлення розширень" #: js/ui/inhibitShortcutsDialog.js:70 msgid "Allow inhibiting shortcuts" msgstr "Дозволити успадкування скорочень" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:73 #, javascript-format msgid "The app %s wants to inhibit shortcuts" msgstr "Програма %s бажає успадкувати клавіатурні скорочення" #: js/ui/inhibitShortcutsDialog.js:74 msgid "An app wants to inhibit shortcuts" msgstr "Програма бажає успадкувати скорочення" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:81 #, javascript-format msgid "You can restore shortcuts by pressing %s" msgstr "Можна відновити скорочення, натиснувши %s" #: js/ui/kbdA11yDialog.js:34 msgid "Slow Keys Turned On" msgstr "Повільні клавіші ввімкнено" #: js/ui/kbdA11yDialog.js:35 msgid "Slow Keys Turned Off" msgstr "Повільні клавіші вимкнено" #: js/ui/kbdA11yDialog.js:36 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "Ви затиснули клавішу «Shift» на 8 секунд. Це скорочення для повільних " "клавіш, які впливають на роботу вашої клавіатури." #: js/ui/kbdA11yDialog.js:42 msgid "Sticky Keys Turned On" msgstr "Липкі клавіші ввімкнено" #: js/ui/kbdA11yDialog.js:43 msgid "Sticky Keys Turned Off" msgstr "Липкі клавіші вимкнено" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "Ви натиснули клавішу «Shift» 5 раз підряд. Це скорочення для липких клавіш, " "які впливають на роботу вашої клавіатури." #: js/ui/kbdA11yDialog.js:47 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" "Ви натиснули дві клавіші одночасно або клавішу «Shift» 5 раз підряд. Це " "вимикає липкі клавіші, які впливають на роботу вашої клавіатури." #: js/ui/kbdA11yDialog.js:57 msgid "Leave On" msgstr "Залишити" #: js/ui/kbdA11yDialog.js:57 msgid "Turn On" msgstr "Увімкнути" #: js/ui/kbdA11yDialog.js:67 js/ui/status/network.js:455 msgid "Turn Off" msgstr "Вимкнути" #: js/ui/kbdA11yDialog.js:67 msgid "Leave Off" msgstr "Покинути" #: js/ui/keyboard.js:180 js/ui/status/keyboard.js:897 msgid "Keyboard Settings" msgstr "Параметри клавіатури" #: js/ui/lookingGlass.js:727 msgid "No extensions installed" msgstr "Не встановлено розширення" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:788 #, javascript-format msgid "%s has not emitted any errors" msgstr "%s не випустила жодної помилки" #: js/ui/lookingGlass.js:794 msgid "Hide Errors" msgstr "Сховати помилки" #: js/ui/lookingGlass.js:798 js/ui/lookingGlass.js:875 msgid "Show Errors" msgstr "Показати помилки" #: js/ui/lookingGlass.js:807 msgid "Active" msgstr "Активний" #: js/ui/lookingGlass.js:810 msgid "Inactive" msgstr "Неактивний" #: js/ui/lookingGlass.js:812 msgid "Error" msgstr "Помилка" #: js/ui/lookingGlass.js:814 msgid "Out of date" msgstr "Застаріло" #: js/ui/lookingGlass.js:816 msgid "Downloading" msgstr "Звантаження" #: js/ui/lookingGlass.js:818 msgid "Deactivating" msgstr "Деактивація" #: js/ui/lookingGlass.js:820 msgid "Activating" msgstr "Активація" #: js/ui/lookingGlass.js:853 msgid "View Source" msgstr "Переглянути джерело" #: js/ui/lookingGlass.js:864 msgid "Web Page" msgstr "Веб-сторінка" #: js/ui/main.js:277 msgid "System was put in unsafe mode" msgstr "Систему переведено у небезпечний режим" #: js/ui/main.js:278 msgid "Apps now have unrestricted access" msgstr "Тепер програми мають необмежений доступ до даних" #: js/ui/main.js:338 msgid "Logged in as a privileged user" msgstr "Увійшов як наділений користувач" #: js/ui/main.js:339 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" "З міркувань безпеки слід уникати сеансів з наділеними правами. Користуйтесь " "звичайним сеансом." #: js/ui/main.js:387 msgid "Screen Lock disabled" msgstr "Блокування екрана вимкнено" #: js/ui/main.js:388 msgid "Screen Locking requires the GNOME display manager" msgstr "Блокування екрана потребує керування входом GNOME" #. Translators: this is the string displayed in the header when a message #. source doesn't have a name #: js/ui/messageList.js:374 msgid "Unknown App" msgstr "Невідома програма" #: js/ui/messageTray.js:326 js/ui/messageTray.js:328 msgid "Notification sound" msgstr "Звук сповіщення" #: js/ui/mpris.js:198 msgid "Unknown artist" msgstr "Невідомий виконавець" #: js/ui/mpris.js:208 msgid "Unknown title" msgstr "Невідома назва" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:328 msgid "Type to search" msgstr "Введіть текст для пошуку" #: js/ui/overviewControls.js:392 msgid "Apps" msgstr "Програми" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:33 msgid "Overview" msgstr "Огляд" #: js/ui/padOsd.js:98 msgid "New shortcut…" msgstr "Нове скорочення…" #: js/ui/padOsd.js:151 msgid "App defined" msgstr "Програму визначено" #: js/ui/padOsd.js:152 msgid "Show on-screen help" msgstr "Показати екранну довідку" #: js/ui/padOsd.js:153 msgid "Switch monitor" msgstr "Перемкнути монітор" #: js/ui/padOsd.js:154 msgid "Assign keystroke" msgstr "Призначити клавішу" #: js/ui/padOsd.js:223 msgid "Done" msgstr "Зроблено" #: js/ui/padOsd.js:726 msgid "Edit…" msgstr "Редагувати…" #: js/ui/padOsd.js:773 msgid "None" msgstr "Немає" #: js/ui/padOsd.js:844 msgid "Press a button to configure" msgstr "Натисніть кнопку, щоб налаштувати" #: js/ui/padOsd.js:845 msgid "Press Esc to exit" msgstr "Натисніть клавішу «Esc», щоб вийти" #: js/ui/padOsd.js:848 msgid "Press any key to exit" msgstr "Натисніть будь-яку клавішу, щоб вийти" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:423 msgid "Activities" msgstr "Діяльність" #: js/ui/panel.js:504 msgctxt "System menu in the top bar" msgid "System" msgstr "Система" #: js/ui/panel.js:678 msgid "Top Bar" msgstr "Верхня панель" #: js/ui/quickSettings.js:188 msgid "Open menu" msgstr "Відкрити меню" #: js/ui/runDialog.js:61 msgid "Run a Command" msgstr "Виконати команду" #: js/ui/runDialog.js:76 msgid "Press ESC to close" msgstr "Натисніть клавішу «Esc», щоб закрити" #: js/ui/runDialog.js:241 msgid "Restart is not available on Wayland" msgstr "Перезапускання недоступне в сеансі Wayland" #: js/ui/runDialog.js:246 msgid "Restarting…" msgstr "Перезапускання…" #: js/ui/screenShield.js:233 msgid "GNOME needs to lock the screen" msgstr "GNOME потребує заблокувати екран" #: js/ui/screenShield.js:274 js/ui/screenShield.js:667 msgid "Unable to lock" msgstr "Неможливо заблокувати" #: js/ui/screenShield.js:275 js/ui/screenShield.js:668 msgid "Lock was blocked by an app" msgstr "Блокування заборонено програмою" #: js/ui/screenshot.js:1252 msgid "Selection" msgstr "Вибір" #: js/ui/screenshot.js:1262 msgid "Area Selection" msgstr "Вибір ділянки" #: js/ui/screenshot.js:1267 msgid "Screen" msgstr "Екран" #: js/ui/screenshot.js:1277 msgid "Screen Selection" msgstr "Вибір екрана" #: js/ui/screenshot.js:1282 msgid "Window" msgstr "Вікно" #: js/ui/screenshot.js:1292 msgid "Window Selection" msgstr "Вибір вікна" #. Translators: entry in the window right click menu. #: js/ui/screenshot.js:1317 js/ui/status/system.js:111 js/ui/windowMenu.js:28 msgid "Take Screenshot" msgstr "Зробити знімок" #: js/ui/screenshot.js:1333 msgid "Record Screen" msgstr "Записати відео з екрана" #. Translators: since this string refers to an action, #. it needs to be phrased as a verb. #: js/ui/screenshot.js:1350 msgid "Capture" msgstr "Захопити" #: js/ui/screenshot.js:1372 msgid "Show Pointer" msgstr "Показувати вказівник" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1996 msgid "Screencasts" msgstr "Трансляції з екрана" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast From 07-17-2013 10:00:46 PM" #: js/ui/screenshot.js:2001 #, no-c-format #| msgid "Screencast from %d %t" msgid "Screencast From %d %t" msgstr "Запис з екрана від %d %t" #. Translators: notification title. #: js/ui/screenshot.js:2047 msgid "Screencast recorded" msgstr "Записано відео з екрана" #. Translators: notification title. #: js/ui/screenshot.js:2060 msgid "Screencast failed to start" msgstr "Спроба запису відео завершилася помилкою на початку" #. Translators: notification title. #: js/ui/screenshot.js:2066 msgid "Screencast ended: Out of disk space" msgstr "Записування відео з екрана завершено: бракує місця на диску" #. We can encourage user to try again on service crashes since the #. recorder will auto-blocklist the pipeline that crashed. #. Translators: notification title. #: js/ui/screenshot.js:2072 msgid "Screencast ended unexpectedly, please try again" msgstr "Запис з екрана неочікувано завершився, будь ласка, повторіть спробу" #. Translators: notification title. #: js/ui/screenshot.js:2075 msgid "Screencast ended unexpectedly" msgstr "Запис з екрана неочікувано завершився" #. Translators: notification source name. #: js/ui/screenshot.js:2085 js/ui/screenshot.js:2327 msgid "Screenshot" msgstr "Знімок екрана" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:2092 msgid "Click here to view the video." msgstr "Натисніть тут, щоб переглянути відео." #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:2100 js/ui/screenshot.js:2343 msgid "Show in Files" msgstr "Показувати у «Файлах»" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2287 #, javascript-format #| msgid "Screenshot from %s" msgid "Screenshot From %s" msgstr "Знімок екрана з %s" #. Translators: notification title. #: js/ui/screenshot.js:2333 msgid "Screenshot captured" msgstr "Знімок зроблено" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2335 msgid "You can paste the image from the clipboard." msgstr "Ви можете вставити зображення з буфера обміну даними." #: js/ui/screenshot.js:2391 js/ui/screenshot.js:2555 msgid "Screenshot taken" msgstr "Знімок зроблено" #: js/ui/search.js:829 msgid "Searching…" msgstr "Пошуки…" #: js/ui/search.js:831 msgid "No results" msgstr "Нічого не знайдено" #: js/ui/search.js:962 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "ще %d" msgstr[1] "ще %d" msgstr[2] "ще %d" msgstr[3] "ще %d" #: js/ui/searchController.js:87 #: subprojects/extensions-app/data/ui/extensions-window.ui:73 msgid "Search" msgstr "Пошук" #: js/ui/shellEntry.js:21 msgid "Copy" msgstr "Копіювати" #: js/ui/shellEntry.js:26 msgid "Paste" msgstr "Вставити" #: js/ui/shellEntry.js:78 msgid "Show Text" msgstr "Показати текст" #: js/ui/shellEntry.js:80 msgid "Hide Text" msgstr "Сховати текст" #: js/ui/shellEntry.js:174 msgid "Caps lock is on" msgstr "Caps lock активовано" #: js/ui/shellMountOperation.js:286 msgid "Hidden Volume" msgstr "Прихований том" #: js/ui/shellMountOperation.js:289 msgid "Windows System Volume" msgstr "Том системи Windows" #: js/ui/shellMountOperation.js:292 msgid "Uses Keyfiles" msgstr "Використовує зашифровані файли" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:300 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead" msgstr "Використайте %s, щоб розблокувати том" #: js/ui/shellMountOperation.js:304 msgid "" "You need an external utility like Disks to unlock a volume that uses " "keyfiles" msgstr "" "Вам знадобиться зовнішня допоміжна програма, подібна до програми Диски для розблоковування тому, де використано файли ключів" #: js/ui/shellMountOperation.js:312 msgid "PIM Number" msgstr "Номер PIM" #: js/ui/shellMountOperation.js:371 msgid "Remember Password" msgstr "Запам'ятати пароль" #: js/ui/shellMountOperation.js:386 msgid "Unlock" msgstr "Розблокувати" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:400 #, javascript-format msgid "Open %s" msgstr "Відкрити %s" #: js/ui/shellMountOperation.js:436 msgid "The PIM must be a number or empty" msgstr "PIM має бути числом або порожній" #: js/ui/status/accessibility.js:34 msgid "Accessibility" msgstr "Доступність" #: js/ui/status/accessibility.js:44 msgid "High Contrast" msgstr "Висока контрастність" #: js/ui/status/accessibility.js:47 msgid "Zoom" msgstr "Масштаб" #: js/ui/status/accessibility.js:54 msgid "Screen Reader" msgstr "Читання з екрану" #: js/ui/status/accessibility.js:58 msgid "Screen Keyboard" msgstr "Екранна клавіатура" #: js/ui/status/accessibility.js:62 msgid "Visual Alerts" msgstr "Візуальні тривоги" #: js/ui/status/accessibility.js:66 msgid "Sticky Keys" msgstr "Липкі клавіші" #: js/ui/status/accessibility.js:70 msgid "Slow Keys" msgstr "Повільні клавіші" #: js/ui/status/accessibility.js:74 msgid "Bounce Keys" msgstr "Пружні клавіші" #: js/ui/status/accessibility.js:78 msgid "Mouse Keys" msgstr "Клавіші миші" #: js/ui/status/accessibility.js:83 msgid "Accessibility Settings" msgstr "Параметри доступності" #: js/ui/status/accessibility.js:140 msgid "Large Text" msgstr "Більший текст" #: js/ui/status/autoRotate.js:14 msgid "Auto Rotate" msgstr "Автоматичне обертання" #: js/ui/status/backgroundApps.js:156 msgctxt "title" msgid "Background Apps" msgstr "Фонові програми" #: js/ui/status/backgroundApps.js:171 msgid "Apps known to be running without a window" msgstr "Програми, які запускаються без відкриття вікна" #: js/ui/status/backgroundApps.js:182 msgid "App Settings" msgstr "Параметри програми" #: js/ui/status/backgroundApps.js:239 msgid "No Background Apps" msgstr "Немає фонових програм" #: js/ui/status/backgroundApps.js:241 #, javascript-format msgid "%d Background App" msgid_plural "%d Background Apps" msgstr[0] "%d фонова програма" msgstr[1] "%d фонові програми" msgstr[2] "%d фонових програм" msgstr[3] "%d фонова програма" #: js/ui/status/backlight.js:39 msgid "Keyboard Brightness" msgstr "Яскравість підсвічування клавіатури" #: js/ui/status/backlight.js:79 msgid "Off" msgstr "Вимкнено" #: js/ui/status/backlight.js:80 msgid "Low" msgstr "Низька" #: js/ui/status/backlight.js:81 msgid "High" msgstr "Висока" #: js/ui/status/backlight.js:147 js/ui/status/keyboard.js:879 msgid "Keyboard" msgstr "Клавіатура" #: js/ui/status/bluetooth.js:245 js/ui/status/network.js:360 msgid "Disconnect" msgstr "Від'єднатися" #: js/ui/status/bluetooth.js:262 js/ui/status/bluetooth.js:264 msgid "Bluetooth" msgstr "Bluetooth" #: js/ui/status/bluetooth.js:287 js/ui/status/network.js:1900 msgid "Bluetooth Settings" msgstr "Параметри Bluetooth" #: js/ui/status/bluetooth.js:334 msgid "No available or connected devices" msgstr "Немає доступних або з'єднаних пристроїв" #: js/ui/status/bluetooth.js:335 msgid "Turn on Bluetooth to connect to devices" msgstr "Увімкнути Bluetooth для встановлення з'єднання з пристроями" #. Translators: This is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:389 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d з'єднаний" msgstr[1] "%d з'єднані" msgstr[2] "%d з'єднаних" msgstr[3] "%d з'єднаний" #: js/ui/status/brightness.js:32 msgid "Brightness" msgstr "Яскравість" #: js/ui/status/darkMode.js:12 msgid "Dark Style" msgstr "Темний стиль" #: js/ui/status/dwellClick.js:15 msgid "Single Click" msgstr "Одинарний клац" #: js/ui/status/dwellClick.js:20 msgid "Double Click" msgstr "Подвійний клац" #: js/ui/status/dwellClick.js:25 msgid "Drag" msgstr "Перетягування" #: js/ui/status/dwellClick.js:30 msgid "Secondary Click" msgstr "Правий клац" #: js/ui/status/dwellClick.js:39 msgid "Dwell Click" msgstr "Затриманий клац" #: js/ui/status/keyboard.js:896 msgid "Show Keyboard Layout" msgstr "Показати розкладку клавіатури" #: js/ui/status/location.js:337 msgid "Allow location access" msgstr "Дозволити доступ до даних перебування" #. Translators: %s is an application name #: js/ui/status/location.js:339 #, javascript-format msgid "The app %s wants to access your location" msgstr "Програмі %s потрібен доступ до даних щодо місця вашого перебування" #: js/ui/status/location.js:349 msgid "Location access can be changed at any time from the privacy settings" msgstr "" "Доступ до місця перебування можна змінити в будь-яку мить у параметрах " "конфіденційності" #: js/ui/status/location.js:357 msgid "Deny Access" msgstr "Заборонити доступ" #: js/ui/status/location.js:362 msgid "Grant Access" msgstr "Надати доступ" #: js/ui/status/network.js:62 msgid "" msgstr "<невідомо>" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:354 #, javascript-format msgid "Disconnect %s" msgstr "Від'єднатися від %s" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:356 #, javascript-format msgid "Connect to %s" msgstr "З'єднатися з %s" #: js/ui/status/network.js:1050 msgid "Secure" msgstr "є захищеною" #: js/ui/status/network.js:1050 msgid "Not secure" msgstr "не є захищеною" #: js/ui/status/network.js:1051 #, javascript-format msgid "Signal strength %s%%" msgstr "Потужність сигналу - %s%%" #. translators: The first placeholder is the network name, the second and indication whether it is secure, and the last the signal strength indication #: js/ui/status/network.js:1053 #, javascript-format msgid "%s, %s, %s" msgstr "%s, %s, %s" #. Translators: %s is a network identifier #: js/ui/status/network.js:1155 #, javascript-format msgid "%s Hotspot" msgstr "Точка доступу %s" #: js/ui/status/network.js:1426 #, javascript-format msgid "%d connected" msgid_plural "%d connected" msgstr[0] "%d з'єднаний" msgstr[1] "%d з'єднаних" msgstr[2] "%d з'єднаних" msgstr[3] "%d з'єднаний" #: js/ui/status/network.js:1524 js/ui/status/network.js:1540 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1525 msgid "VPN Settings" msgstr "Параметри VPN" #: js/ui/status/network.js:1785 msgid "Wi–Fi" msgstr "Wi–Fi" #: js/ui/status/network.js:1787 msgid "All Networks" msgstr "Всі мережі" #: js/ui/status/network.js:1884 msgid "Wired Connections" msgstr "Дротові з'єднання" #: js/ui/status/network.js:1885 msgid "Wired Settings" msgstr "Параметри мережі" #: js/ui/status/network.js:1899 msgid "Bluetooth Tethers" msgstr "Bluetooth-прив'язки" #. Translators: "Tether" from "Bluetooth Tether" #: js/ui/status/network.js:1906 msgid "Tether" msgstr "Пов'язування" #: js/ui/status/network.js:1919 msgid "Mobile Connections" msgstr "Мобільні з'єднання" #: js/ui/status/network.js:1921 msgid "Mobile Broadband Settings" msgstr "параметри мобільної радіомережі" #. Translators: "Mobile" from "Mobile Broadband" #: js/ui/status/network.js:1930 msgid "Mobile" msgstr "Мобільний" #: js/ui/status/network.js:1964 #| msgid "Wi-Fi Networks" msgid "Sign Into Wi–Fi Network" msgstr "Реєстрація у мережі Wi–Fi" #: js/ui/status/network.js:2151 msgid "Connection failed" msgstr "Не вдалось з'єднатись" #: js/ui/status/network.js:2152 msgid "Activation of network connection failed" msgstr "Не вдалось увімкнути мережеве з'єднання" #: js/ui/status/nightLight.js:19 msgid "Night Light" msgstr "Нічне світло" #: js/ui/status/powerProfiles.js:19 msgctxt "Power profile" msgid "Performance" msgstr "Швидкодія" #: js/ui/status/powerProfiles.js:24 msgctxt "Power profile" msgid "Balanced" msgstr "Баланс" #: js/ui/status/powerProfiles.js:29 msgctxt "Power profile" msgid "Power Saver" msgstr "Заощадження" #: js/ui/status/powerProfiles.js:39 js/ui/status/powerProfiles.js:69 msgid "Power Mode" msgstr "Режим живлення" #: js/ui/status/powerProfiles.js:71 msgid "Power Settings" msgstr "Енергетичні параметри" #: js/ui/status/remoteAccess.js:74 msgid "Stop Screencast" msgstr "Припинити трансляцію з екрана" #: js/ui/status/remoteAccess.js:144 msgid "Stop Screen Sharing" msgstr "Припинити спільне використання екрана" #: js/ui/status/rfkill.js:99 msgid "Airplane Mode" msgstr "Режим польоту" #: js/ui/status/system.js:168 msgid "Power Off Menu" msgstr "Меню вимикання" #: js/ui/status/system.js:176 msgid "Suspend" msgstr "Призупинити" #: js/ui/status/system.js:181 msgid "Restart…" msgstr "Перезапуск…" #: js/ui/status/system.js:186 msgid "Power Off…" msgstr "Вимкнути…" #: js/ui/status/system.js:193 #: subprojects/extensions-app/data/ui/extensions-window.ui:124 msgid "Log Out…" msgstr "Вийти…" #: js/ui/status/system.js:198 msgid "Switch User…" msgstr "Змінити користувача…" #: js/ui/status/system.js:242 msgctxt "action" msgid "Lock Screen" msgstr "Заблокувати екран" #: js/ui/status/thunderbolt.js:308 msgid "Unknown Thunderbolt device" msgstr "Невідомий пристрій Thunderbolt" #: js/ui/status/thunderbolt.js:309 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" "Виявлено новий пристрій протягом вашої відсутності. Будь ласка, " "перепід'єднайте пристрій для його використання." #: js/ui/status/thunderbolt.js:312 msgid "Unauthorized Thunderbolt device" msgstr "Незавірений пристрій Thunderbolt" #: js/ui/status/thunderbolt.js:313 msgid "" "New device has been detected and needs to be authorized by an administrator" msgstr "Виявлено новий пристрій, який потребує схвалення від адміністратора" #: js/ui/status/thunderbolt.js:319 msgid "Thunderbolt authorization error" msgstr "Помилка завірення Thunderbolt" #: js/ui/status/thunderbolt.js:320 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "Неможливо завірити пристрій Thunderbolt: %s" #: js/ui/status/volume.js:218 msgid "Volume changed" msgstr "Гучність змінено" #: js/ui/status/volume.js:231 msgid "Unmute" msgstr "Увімкнути звук" #: js/ui/status/volume.js:231 msgid "Mute" msgstr "Вимкнути звук" #: js/ui/status/volume.js:286 msgid "Volume" msgstr "Гучність" #: js/ui/status/volume.js:302 msgid "Sound Output" msgstr "Виведення звуку" #: js/ui/status/volume.js:374 msgid "Sound Input" msgstr "Введення звуку" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:20 msgid "Mirror" msgstr "Віддзеркалення" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:29 msgid "Join Displays" msgstr "Приєднання екранів" #. Translators: this is for using only external displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:39 msgid "External Only" msgstr "Тільки зовнішній" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:47 msgid "Built-in Only" msgstr "Тільки вбудований" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:378 msgid "%A %B %-d" msgstr "%A, %-d %B" #: js/ui/unlockDialog.js:384 msgid "Swipe up to unlock" msgstr "Проведіть вгору для розблокування" #: js/ui/unlockDialog.js:385 msgid "Click or press a key to unlock" msgstr "Клацніть або натисніть клавішу для розблокування" #: js/ui/unlockDialog.js:568 msgid "Unlock Window" msgstr "Розблокувати вікно" #: js/ui/unlockDialog.js:577 msgid "Log in as another user" msgstr "Увійти як інший користувач" #: js/ui/welcomeDialog.js:47 #, javascript-format msgid "GNOME %s" msgstr "GNOME %s" #: js/ui/welcomeDialog.js:51 #, javascript-format msgid "Welcome to %s" msgstr "Ласкаво просимо до %s" #: js/ui/welcomeDialog.js:52 msgid "If you want to learn your way around, check out the tour" msgstr "" "Якщо хочете дізнатися більше про середовище, ознайомтеся із нашим туром" #: js/ui/welcomeDialog.js:61 msgid "Skip" msgstr "Пропустити" #: js/ui/welcomeDialog.js:66 msgid "Take Tour" msgstr "Здійснити тур" #: js/ui/windowAttentionHandler.js:18 #, javascript-format msgid "“%s” is ready" msgstr "«%s» готовий" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:68 msgid "Keep these display settings?" msgstr "Зберегти ці параметри екрана?" #: js/ui/windowManager.js:78 msgid "Revert Settings" msgstr "Повернути параметри" #: js/ui/windowManager.js:83 msgid "Keep Changes" msgstr "Зберегти зміни" #: js/ui/windowManager.js:103 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "Зміни параметрів буде повернуто через %d секунду" msgstr[1] "Зміни параметрів буде повернуто через %d секунди" msgstr[2] "Зміни параметрів буде повернуто через %d секунд" msgstr[3] "Зміни параметрів буде повернуто через %d секунду" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:500 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:40 msgid "Hide" msgstr "Приховати" #: js/ui/windowMenu.js:47 msgid "Restore" msgstr "Відновити" #: js/ui/windowMenu.js:51 msgid "Maximize" msgstr "Розгорнути" #: js/ui/windowMenu.js:58 msgid "Move" msgstr "Перемістити" #: js/ui/windowMenu.js:78 msgid "Resize" msgstr "Змінити розмір" #: js/ui/windowMenu.js:98 msgid "Always on Top" msgstr "Завжди зверху" #: js/ui/windowMenu.js:117 msgid "Always on Visible Workspace" msgstr "Завжди на видимому робочому просторі" #: js/ui/windowMenu.js:131 msgid "Move to Workspace Left" msgstr "Перемістити у робочий простір ліворуч" #: js/ui/windowMenu.js:137 msgid "Move to Workspace Right" msgstr "Перемістити у робочий простір праворуч" #: js/ui/windowMenu.js:143 msgid "Move to Workspace Up" msgstr "Перемістити у робочий простір зверху" #: js/ui/windowMenu.js:149 msgid "Move to Workspace Down" msgstr "Перемістити у робочу область знизу" #: js/ui/windowMenu.js:167 msgid "Move to Monitor Up" msgstr "Перемістити до монітору зверху" #: js/ui/windowMenu.js:176 msgid "Move to Monitor Down" msgstr "Перемістити до монітору знизу" #: js/ui/windowMenu.js:185 msgid "Move to Monitor Left" msgstr "Перемістити до монітору ліворуч" #: js/ui/windowMenu.js:194 msgid "Move to Monitor Right" msgstr "Перемістити до монітору праворуч" #: js/ui/windowMenu.js:202 msgid "Close" msgstr "Закрити" #: src/main.c:527 subprojects/extensions-tool/src/main.c:336 msgid "Print version" msgstr "Показати версію" #: src/main.c:533 msgid "Mode used by GDM for login screen" msgstr "Використовуваний режим GDM для екрану входу" #: src/main.c:539 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "Використовувати вказаний режим, приклад, «gdm» для вікна входу" #: src/main.c:545 msgid "List possible modes" msgstr "Перелік можливих режимів" #: src/main.c:551 msgid "Force animations to be enabled" msgstr "Примусове вмикання анімацій" #: src/shell-app.c:252 msgctxt "program" msgid "Unknown" msgstr "Невідомо" #: src/shell-app.c:503 #, c-format msgid "Failed to launch “%s”" msgstr "Не вдалося запустити «%s»" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match" msgstr "Пароль не збігається" #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "Пароль не може бути порожнім" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "Вікно автентифікації відхилено користувачем" #: src/st/st-icon-theme.c:1865 #, c-format msgid "Icon '%s' not present in theme %s" msgstr "Піктограми «%s» немає у темі %s" #: src/st/st-icon-theme.c:3454 src/st/st-icon-theme.c:3757 msgid "Failed to load icon" msgstr "Не вдалось завантажити піктограму" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 msgid "Manage your GNOME Extensions" msgstr "Керуйте вашими розширеннями GNOME" #. developer_name tag deprecated with Appstream 1.0 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:19 msgid "The GNOME Project" msgstr "Проєкт GNOME" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:51 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" "«Розширення» GNOME обробляють оновлення розширень, налаштовування параметрів " "розширень, а також вилучення та вимикання небажаних розширень." #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:64 msgid "Main Window" msgstr "Головне вікно" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:68 msgid "Available Updates" msgstr "Доступні оновлення" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:72 msgid "Search View" msgstr "Панель пошуку" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "Налаштувати розширення GNOME Shell" #: subprojects/extensions-app/js/extensionManager.js:237 #, javascript-format msgid "" "The installed version of this extension (%s) is incompatible with the " "current version of GNOME (%s). The extension has been disabled." msgstr "" "Встановлена версія цього розширення (%s) є несумісною із поточною версією " "GNOME (%s). Розширення вимкнено." #: subprojects/extensions-app/js/extensionManager.js:238 #, javascript-format msgid "" "The installed version of this extension is incompatible with the current " "version of GNOME (%s). The extension has been disabled." msgstr "" "Встановлена версія цього розширення є несумісною із поточною версією GNOME " "(%s). Розширення вимкнено." #: subprojects/extensions-app/js/extensionManager.js:242 msgid "" "An error has occurred in this extension. This could cause issues elsewhere " "in the system. It is recommended to turn the extension off until the error " "is resolved." msgstr "" "У цьому розширенні сталася помилка. Це могло спричинити вади у інших " "частинах системи. Рекомендуємо вимкнути це розширення, доки помилку не буде " "усунено." #. translators: Details for an extension error #: subprojects/extensions-app/js/extensionManager.js:248 msgid "Error details:" msgstr "Подробиці щодо помилки:" #: subprojects/extensions-app/js/extensionRow.js:82 #, javascript-format msgid "Version %s" msgstr "Версія %s" #: subprojects/extensions-app/js/extensionsWindow.js:113 #, javascript-format msgid "Remove “%s”?" msgstr "Вилучити «%s»?" #: subprojects/extensions-app/js/extensionsWindow.js:114 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "" "Якщо ви вилучите розширення, вам доведеться отримати його код знову, якщо ви " "захочете його знову увімкнути" #: subprojects/extensions-app/js/extensionsWindow.js:117 msgid "_Cancel" msgstr "_Скасувати" #: subprojects/extensions-app/js/extensionsWindow.js:118 msgid "_Remove" msgstr "В_илучити" #: subprojects/extensions-app/js/extensionsWindow.js:158 msgid "translator-credits" msgstr "" "Максим Дзюманенко \n" "Данило Коростіль \n" "Юрій Чорноіван " #: subprojects/extensions-app/js/extensionsWindow.js:203 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "Під час наступного входу до системи буде оновлено %d розширення." msgstr[1] "Під час наступного входу до системи буде оновлено %d розширення." msgstr[2] "Під час наступного входу до системи буде оновлено %d розширень." msgstr[3] "Під час наступного входу до системи буде оновлено одне розширення." #: subprojects/extensions-app/data/ui/extension-row.ui:22 msgid "Error Details" msgstr "Подробиці щодо помилки" #: subprojects/extensions-app/data/ui/extension-row.ui:62 msgid "Updates Details" msgstr "Подробиці щодо оновлень" #: subprojects/extensions-app/data/ui/extension-row.ui:72 msgid "" "A new version of this extension is ready and will be loaded on next login." msgstr "" "Приготовано нову версію цього розширення. Її буде завантажено під час " "наступного входу до системи." #: subprojects/extensions-app/data/ui/extension-row.ui:104 msgid "Extension Details" msgstr "Відомості щодо розширення" #: subprojects/extensions-app/data/ui/extension-row.ui:192 msgid "_Website" msgstr "_Сайт" #: subprojects/extensions-app/data/ui/extension-row.ui:219 msgid "_Settings" msgstr "П_араметри" #: subprojects/extensions-app/data/ui/extension-row.ui:246 msgid "_Remove…" msgstr "Ви_лучити…" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Keyboard Shortcuts" msgstr "Клавіатурні скорочення" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "Про розширення" #: subprojects/extensions-app/data/ui/extensions-window.ui:64 msgid "Main Menu" msgstr "Головне меню" #: subprojects/extensions-app/data/ui/extensions-window.ui:106 msgid "Search extensions" msgstr "Пошук розширень" #: subprojects/extensions-app/data/ui/extensions-window.ui:134 msgid "_Extensions" msgstr "_Розширення" #: subprojects/extensions-app/data/ui/extensions-window.ui:139 msgid "More Information" msgstr "Докладніше" #: subprojects/extensions-app/data/ui/extensions-window.ui:151 msgid "" "Extensions can cause performance and stability issues. It is recommended to " "disable all extensions if you experience problems with your system." msgstr "" "Розширення можуть спричиняти проблеми зі швидкодією і стабільністю. " "Рекомендуємо вимкнути усі розширення, якщо у користуванні вашою системою " "виникають проблеми." #: subprojects/extensions-app/data/ui/extensions-window.ui:178 msgid "User Extensions" msgstr "Розширення користувача" #: subprojects/extensions-app/data/ui/extensions-window.ui:198 msgid "System Extensions" msgstr "Загальносистемні розширення" #: subprojects/extensions-app/data/ui/extensions-window.ui:233 msgid "Search Results" msgstr "Результати пошуку" #: subprojects/extensions-app/data/ui/extensions-window.ui:252 msgid "No Results Found" msgstr "Нічого не знайдено" #: subprojects/extensions-app/data/ui/extensions-window.ui:253 #| msgid "Try a different search." msgid "Try a different search" msgstr "Спробуйте інші критерії пошуку" #: subprojects/extensions-app/data/ui/extensions-window.ui:264 msgid "No Installed Extensions" msgstr "Розширення, які не встановлено" #: subprojects/extensions-app/data/ui/extensions-window.ui:265 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" "Щоб знайти і додати потрібні вам розширення, відвідайте extensions.gnome.org." #: subprojects/extensions-app/data/ui/extensions-window.ui:276 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" "На жаль, неможливо одержати перелік установлених розширень. Переконайтесь, " "що ви увійшли в GNOME і спробуйте ще раз." #: subprojects/extensions-app/data/ui/help-overlay.ui:9 msgctxt "shortcut window" msgid "General" msgstr "Загальне" #: subprojects/extensions-app/data/ui/help-overlay.ui:12 msgctxt "shortcut window" msgid "Open Menu" msgstr "Відкрити меню" #: subprojects/extensions-app/data/ui/help-overlay.ui:18 msgctxt "shortcut window" msgid "Toggle Search" msgstr "Увімкнути або вимкнути пошук" #: subprojects/extensions-app/data/ui/help-overlay.ui:24 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Показати клавіатурні скорочення" #: subprojects/extensions-app/data/ui/help-overlay.ui:30 msgctxt "shortcut window" msgid "Quit" msgstr "Вийти" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:284 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "Нове розширення успішно створено в %s.\n" #: subprojects/extensions-tool/src/command-create.c:376 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" "Назва повинна бути дуже короткою (бажано максимально описовою).\n" "Наприклад: %s" #: subprojects/extensions-tool/src/command-create.c:382 #: subprojects/extensions-tool/src/main.c:243 msgid "Name" msgstr "Назва" #: subprojects/extensions-tool/src/command-create.c:396 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" "Опис — пояснення одним реченням того, що розширення робить.\n" "Наприклад: %s" #: subprojects/extensions-tool/src/command-create.c:402 #: subprojects/extensions-tool/src/main.c:246 msgid "Description" msgstr "Опис" #: subprojects/extensions-tool/src/command-create.c:416 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" "UUID — глобальний унікальний код вашого розширення.\n" "Він зберігається у форматі електронної адреси (clicktofocus@janedoe.example." "com)\n" #: subprojects/extensions-tool/src/command-create.c:443 msgid "Choose one of the available templates:\n" msgstr "Виберіть один із доступних шаблонів:\n" #: subprojects/extensions-tool/src/command-create.c:457 msgid "Template" msgstr "Шаблон" #: subprojects/extensions-tool/src/command-create.c:515 msgid "The unique identifier of the new extension" msgstr "Унікальний код розширення" #: subprojects/extensions-tool/src/command-create.c:518 msgid "NAME" msgstr "НАЗВА" #: subprojects/extensions-tool/src/command-create.c:519 msgid "The user-visible name of the new extension" msgstr "Загальна назва розширення" #: subprojects/extensions-tool/src/command-create.c:521 msgid "DESCRIPTION" msgstr "ОПИС" #: subprojects/extensions-tool/src/command-create.c:523 msgid "A short description of what the extension does" msgstr "Короткий опис того, що розширення робить" #: subprojects/extensions-tool/src/command-create.c:525 #: subprojects/extensions-tool/src/command-pack.c:455 msgid "DOMAIN" msgstr "ПЕРЕКЛАД" #: subprojects/extensions-tool/src/command-create.c:527 msgid "The gettext domain used by the extension" msgstr "Домен gettext, який використовується розширенням" #: subprojects/extensions-tool/src/command-create.c:529 #: subprojects/extensions-tool/src/command-pack.c:448 msgid "SCHEMA" msgstr "СХЕМА" #: subprojects/extensions-tool/src/command-create.c:531 msgid "The GSettings schema used by the extension" msgstr "Схема GSettings, яка використовується розширенням" #: subprojects/extensions-tool/src/command-create.c:534 msgid "TEMPLATE" msgstr "ШАБЛОН" #: subprojects/extensions-tool/src/command-create.c:535 msgid "The template to use for the new extension" msgstr "Шаблон, яким слід скористатися для нового розширення" #: subprojects/extensions-tool/src/command-create.c:538 msgid "Include prefs.js template" msgstr "Включити шаблон prefs.js" #: subprojects/extensions-tool/src/command-create.c:544 msgid "Enter extension information interactively" msgstr "Ввести інформацію про розширення покроково" #: subprojects/extensions-tool/src/command-create.c:552 msgid "Create a new extension" msgstr "Створити розширення" #: subprojects/extensions-tool/src/command-create.c:570 #: subprojects/extensions-tool/src/command-list.c:190 msgid "Unknown arguments" msgstr "Невідомі параметри" #: subprojects/extensions-tool/src/command-create.c:595 msgid "UUID, name and description are required" msgstr "UUID, назва і опис — обов'язкові" #: subprojects/extensions-tool/src/command-disable.c:62 #: subprojects/extensions-tool/src/command-enable.c:62 #, c-format msgid "Extension “%s” does not exist\n" msgstr "Розширення «%s» не існує\n" #: subprojects/extensions-tool/src/command-disable.c:98 msgid "Disable an extension" msgstr "Вимкнути розширення" #: subprojects/extensions-tool/src/command-disable.c:116 #: subprojects/extensions-tool/src/command-enable.c:116 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "Не надано UUID" #: subprojects/extensions-tool/src/command-disable.c:121 #: subprojects/extensions-tool/src/command-enable.c:121 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "Надано понад один UUID" #: subprojects/extensions-tool/src/command-enable.c:98 msgid "Enable an extension" msgstr "Увімкнути розширення" #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:66 #: subprojects/extensions-tool/src/main.c:150 msgid "Failed to connect to GNOME Shell\n" msgstr "Не вдалося з'єднатися із GNOME Shell\n" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:159 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "Розширення «%s» не існує\n" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "Показати відомості про розширення" #: subprojects/extensions-tool/src/command-install.c:190 msgid "Overwrite an existing extension" msgstr "Перезаписати наявне розширення" #: subprojects/extensions-tool/src/command-install.c:192 msgid "EXTENSION_BUNDLE" msgstr "КОМПЛЕКТ_РОЗШИРЕНЬ" #: subprojects/extensions-tool/src/command-install.c:201 msgid "Install an extension bundle" msgstr "Встановити комплект розширень" #: subprojects/extensions-tool/src/command-install.c:219 msgid "No extension bundle specified" msgstr "Не вказано жодного комплекту розширень" #: subprojects/extensions-tool/src/command-install.c:225 msgid "More than one extension bundle specified" msgstr "Вказано більше за один комплект розширень" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show user-installed extensions" msgstr "Показати користувацькі розширення" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show system-installed extensions" msgstr "Показати системні розширення" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Show enabled extensions" msgstr "Показати увімкнені розширення" #: subprojects/extensions-tool/src/command-list.c:149 msgid "Show disabled extensions" msgstr "Показати вимкнені розширення" #: subprojects/extensions-tool/src/command-list.c:152 msgid "Show extensions in active state" msgstr "Показати розширення в активному стані" #: subprojects/extensions-tool/src/command-list.c:155 msgid "Show extensions in inactive state" msgstr "Показати розширення у неактивному стані" #: subprojects/extensions-tool/src/command-list.c:158 msgid "Show extensions with preferences" msgstr "Показати розширення з параметрами" #: subprojects/extensions-tool/src/command-list.c:161 msgid "Show extensions with updates" msgstr "Показувати оновлення розширень" #: subprojects/extensions-tool/src/command-list.c:164 msgid "Print extension details" msgstr "Показати відомості про розширення" #: subprojects/extensions-tool/src/command-list.c:172 msgid "List installed extensions" msgstr "Перелічити встановлені розширення" #: subprojects/extensions-tool/src/command-pack.c:444 msgid "FILE" msgstr "ФАЙЛ" #: subprojects/extensions-tool/src/command-pack.c:445 msgid "Additional source to include in the bundle" msgstr "Додаткове джерело для комплекту" #: subprojects/extensions-tool/src/command-pack.c:449 msgid "A GSettings schema that should be included" msgstr "Схема GSettings" #: subprojects/extensions-tool/src/command-pack.c:451 #: subprojects/extensions-tool/src/command-pack.c:462 msgid "DIRECTORY" msgstr "КАТАЛОГ" #: subprojects/extensions-tool/src/command-pack.c:453 msgid "The directory where translations are found" msgstr "Каталог, де зберігаються переклади" #: subprojects/extensions-tool/src/command-pack.c:457 msgid "The gettext domain to use for translations" msgstr "Спосіб як працювати з перекладами" #: subprojects/extensions-tool/src/command-pack.c:460 msgid "Overwrite an existing pack" msgstr "Перезаписати наявний пакунок" #: subprojects/extensions-tool/src/command-pack.c:464 msgid "The directory where the pack should be created" msgstr "Каталог, де створюється пакунок" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "SOURCE_DIRECTORY" msgstr "КАТАЛОГ_ДЖЕРЕЛА" #: subprojects/extensions-tool/src/command-pack.c:475 msgid "Create an extension bundle" msgstr "Створити комплект розширень" #: subprojects/extensions-tool/src/command-pack.c:495 msgid "More than one source directory specified" msgstr "Вказано понад один каталог джерела" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "У розширення «%s» немає налаштувань\n" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "Не вдалося відкрити налаштування для розширення «%s»: %s\n" #: subprojects/extensions-tool/src/command-prefs.c:87 msgid "Opens extension preferences" msgstr "Відкриває параметри розширення" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "Перезапустити розширення" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "Не можна вилучати загальносистемні розширення\n" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "Не вдалося вилучити «%s»\n" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "Вилучити розширення" #: subprojects/extensions-tool/src/main.c:76 msgid "Do not print error messages" msgstr "Не виводити повідомлення про помилки" #: subprojects/extensions-tool/src/main.c:249 msgid "Path" msgstr "Шлях" #: subprojects/extensions-tool/src/main.c:252 msgid "URL" msgstr "Посилання" #: subprojects/extensions-tool/src/main.c:255 msgid "Original author" msgstr "Засновник" #: subprojects/extensions-tool/src/main.c:261 #: subprojects/extensions-tool/src/main.c:263 #: subprojects/extensions-tool/src/main.c:265 msgid "Version" msgstr "Версія" #: subprojects/extensions-tool/src/main.c:268 msgid "Enabled" msgstr "Увімкнено" #: subprojects/extensions-tool/src/main.c:268 msgid "Yes" msgstr "Так" #: subprojects/extensions-tool/src/main.c:268 msgid "No" msgstr "Ні" #: subprojects/extensions-tool/src/main.c:271 msgid "State" msgstr "Стан" #: subprojects/extensions-tool/src/main.c:309 msgid "“version” takes no arguments" msgstr "«version» не потребує параметрів" #: subprojects/extensions-tool/src/main.c:311 #: subprojects/extensions-tool/src/main.c:331 msgid "Usage:" msgstr "Використання:" #: subprojects/extensions-tool/src/main.c:314 msgid "Print version information and exit." msgstr "Вивести версію та вийти." #: subprojects/extensions-tool/src/main.c:329 #: subprojects/extensions-tool/src/main.c:332 msgid "COMMAND" msgstr "Команда" #: subprojects/extensions-tool/src/main.c:332 msgid "[ARGS…]" msgstr "[ПАРАМЕТРИ…]" #: subprojects/extensions-tool/src/main.c:334 msgid "Commands:" msgstr "Команди:" #: subprojects/extensions-tool/src/main.c:335 msgid "Print help" msgstr "Вивести версію" #: subprojects/extensions-tool/src/main.c:337 msgid "Enable extension" msgstr "Увімкнути розширення" #: subprojects/extensions-tool/src/main.c:338 msgid "Disable extension" msgstr "Вимкнути розширення" #: subprojects/extensions-tool/src/main.c:339 msgid "Reset extension" msgstr "Перезапустити розширення" #: subprojects/extensions-tool/src/main.c:340 msgid "Uninstall extension" msgstr "Вилучити розширення" #: subprojects/extensions-tool/src/main.c:341 msgid "List extensions" msgstr "Перелічити розширення" #: subprojects/extensions-tool/src/main.c:342 #: subprojects/extensions-tool/src/main.c:343 msgid "Show extension info" msgstr "Показати відомості про розширення" #: subprojects/extensions-tool/src/main.c:344 msgid "Open extension preferences" msgstr "Відкрити параметри розширення" #: subprojects/extensions-tool/src/main.c:345 msgid "Create extension" msgstr "Створити розширення" #: subprojects/extensions-tool/src/main.c:346 msgid "Package extension" msgstr "Запакувати розширення" #: subprojects/extensions-tool/src/main.c:347 msgid "Install extension bundle" msgstr "Встановити комплект розширень" #: subprojects/extensions-tool/src/main.c:349 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "Натисніть «%s», щоб показати докладну довідку.\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "Просте" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "Порожнє розширення" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "Індикатор" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "Додає піктограму на верхню панель" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:4 msgid "Quick Settings Item" msgstr "Пункт швидких параметрів" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:5 msgid "Add an item to quick settings" msgstr "Додати пункт до швидких параметрів" #. translators: #. * The device has been disabled #: subprojects/gvc/gvc-mixer-control.c:1872 msgid "Disabled" msgstr "Вимкнено" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1879 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u вивід" msgstr[1] "%u виводи" msgstr[2] "%u виводів" msgstr[3] "%u вивід" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1889 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u вхід" msgstr[1] "%u входи" msgstr[2] "%u входів" msgstr[3] "%u вхід" #: subprojects/gvc/gvc-mixer-control.c:2872 msgid "System Sounds" msgstr "Системні звуки" #~ msgid "Move Titlebar Onscreen" #~ msgstr "Перемістити заголовок на екран" #~ msgid "Stop conflicting session dialog closed" #~ msgstr "Закрито вікно припинення конфліктного сеансу" #, javascript-format #~ msgid "Try to login again to start a session for user %s." #~ msgstr "" #~ "Спробуйте увійти до системи повторно, щоб розпочати сеанс для користувача " #~ "%s." #, javascript-format #~ msgid "%s is now known as %s" #~ msgstr "%s тепер відомий як %s" #~ msgid "Network Manager" #~ msgstr "Керування мережею" #~ msgid "Disabling" #~ msgstr "Вимикання" #~ msgid "Enabling" #~ msgstr "Вмикання" #, javascript-format #~ msgid "%d %%" #~ msgstr "%d %%" #~ msgid "Thunderbolt" #~ msgstr "Thunderbolt" #~ msgid "No Thanks" #~ msgstr "Ні, дякую" #~ msgid "No Matches" #~ msgstr "Немає відповідників" #~ msgid "The extension had an error" #~ msgstr "У розширенні сталася помилка" #~ msgid "The extension can be updated" #~ msgstr "Розширення може бути оновлено" #~ msgid "Help" #~ msgstr "Довідка" #~ msgid "Manually Installed" #~ msgstr "Встановлені вручну" #~ msgid "Built-In" #~ msgstr "Вбудовані" #~ msgid "Extension Updates Ready" #~ msgstr "Готові оновлення розширень" #~ msgid "Screenshot / Screencast" #~ msgstr "Знімок / Запис відео з екрана" #~ msgid "Power Profiles" #~ msgstr "Профілі живлення" #~ msgid "Evolution Calendar" #~ msgstr "Календар Evolution" #~ msgid "Applications" #~ msgstr "Програми" #, javascript-format #~ msgid "Unable to start %s" #~ msgstr "Неможливо запустити %s" #, javascript-format #~ msgid "Couldn’t find the %s application" #~ msgstr "Неможливо знайти програму %s" #~ msgid "Attach modal dialog to the parent window" #~ msgstr "Приєднати модальне вікно до батьківського вікна" #~ msgid "" #~ "This key overrides the key in org.gnome.mutter when running GNOME Shell." #~ msgstr "" #~ "Цей ключ перевизначає ключ у org.gnome.mutter, коли запущено GNOME Shell." #~ msgid "Enable edge tiling when dropping windows on screen edges" #~ msgstr "Увімкнути розбиття країв, коли кладуться вікна на краї екрана" #~ msgid "Workspaces are managed dynamically" #~ msgstr "Робочі простори організовуються динамічно" #~ msgid "Workspaces only on primary monitor" #~ msgstr "Робочий простір лише на основному моніторі" #~ msgid "Delay focus changes in mouse mode until the pointer stops moving" #~ msgstr "Затримувати зміни фокусу миші, поки вказівник не перестане рухатись" #~ msgid "Region & Language Settings" #~ msgstr "Параметри регіону та мови" #~ msgid "" #~ "Whether the default Bluetooth adapter had set up devices associated to it" #~ msgstr "Чи типовий адаптер Bluetooth зв'язаний з якимось пристроєм" #~ msgid "" #~ "The shell will only show a Bluetooth menu item if a Bluetooth adapter is " #~ "powered, or if there were devices set up associated with the default " #~ "adapter. This will be reset if the default adapter is ever seen not to " #~ "have devices associated to it." #~ msgstr "" #~ "Оболонка покаже меню Bluetooth лише у випадку, коли адаптер Bluetooth " #~ "увімкнено або пристрій зв'язано з типовим адаптером. Якщо типовий адаптер " #~ "ніколи не був зв'язаний з жодним пристроєм, то його буде скинуто." #~ msgid "Log Out" #~ msgstr "Вийти" #~ msgid "Connect to Internet" #~ msgstr "Під'єднатись до інтернету" #~ msgid "Airplane Mode is On" #~ msgstr "Режим «у літаку» ввімкнено" #~ msgid "Wi-Fi is disabled when airplane mode is on." #~ msgstr "Wi-Fi вимкнено, коли режим «у літаку» ввімкнено." #~ msgid "Turn Off Airplane Mode" #~ msgstr "Вимкнути режим «у літаку»" #~ msgid "Wi-Fi is Off" #~ msgstr "Wi-Fi вимкнено" #~ msgid "Wi-Fi needs to be turned on in order to connect to a network." #~ msgstr "Wi-Fi потрібно ввімкнути, щоб з'єднатись з мережею." #~ msgid "Turn On Wi-Fi" #~ msgstr "Увімкнути Wi-Fi" #~ msgid "Select a network" #~ msgstr "Вибрати мережу" #~ msgid "Use hardware switch to turn off" #~ msgstr "Натисніть апаратну кнопку, щоб вимкнути" #~ msgid "Select Network" #~ msgstr "Виберіть мережу" #~ msgid "Wi-Fi Settings" #~ msgstr "Параметри Wi-Fi" #~ msgid "VPN Off" #~ msgstr "VPN вимкнено" #, javascript-format #~ msgid "%s Wi-Fi Connection" #~ msgid_plural "%s Wi-Fi Connections" #~ msgstr[0] "%s з'єднання через Wi-Fi" #~ msgstr[1] "%s з'єднання через Wi-Fi" #~ msgstr[2] "%s з'єднань через Wi-Fi" #~ msgstr[3] "%s з'єднання через Wi-Fi" #, javascript-format #~| msgid "%s Wired Connection" #~| msgid_plural "%s Wired Connections" #~ msgid "%s Bluetooth Connection" #~ msgid_plural "%s Bluetooth Connections" #~ msgstr[0] "%s з'єднання Bluetooth" #~ msgstr[1] "%s з'єднання Bluetooth" #~ msgstr[2] "%s з'єднань Bluetooth" #~ msgstr[3] "%s з'єднання Bluetooth" #, javascript-format #~ msgid "%s Unmanaged" #~ msgstr "%s нескеровано" #, javascript-format #~ msgid "%s Connecting" #~ msgstr "%s під'єднується" #, javascript-format #~ msgid "%s Requires Authentication" #~ msgstr "%s вимагає автентифікації" #, javascript-format #~ msgid "Firmware Missing For %s" #~ msgstr "Бракує мікропрограми для %s" #, javascript-format #~ msgid "%s Unavailable" #~ msgstr "%s недоступний" #, javascript-format #~ msgid "%s Connection Failed" #~ msgstr "%s під'єднано невдало" #, javascript-format #~ msgid "%s Hardware Disabled" #~ msgstr "%s вимкнено апаратно" #, javascript-format #~ msgid "%s Disabled" #~ msgstr "%s вимкнено" #, javascript-format #~ msgid "%s Not Connected" #~ msgstr "%s не під'єднано" #~ msgid "unknown" #~ msgstr "невідомий" #~ msgid "connecting…" #~ msgstr "з'єднання…" #~ msgid "authentication required" #~ msgstr "необхідна автентифікація" #~ msgid "connection failed" #~ msgstr "не вдалось з'єднатись" #~ msgid "Lock" #~ msgstr "Заблокувати" #~ msgid "Power Off / Log Out" #~ msgstr "Вимкнути / Вийти" #~ msgid "Bluetooth On" #~ msgstr "Bluetooth увімкнено" #~ msgid "Bluetooth Off" #~ msgstr "Bluetooth вимкнено" #~ msgid "Night Light Disabled" #~ msgstr "Нічне світло вимкнено" #~ msgid "Resume" #~ msgstr "Повторити" #~ msgid "Disable Until Tomorrow" #~ msgstr "Вимкнути до завтра" #~ msgid "Fully Charged" #~ msgstr "Повністю заряджено" #~ msgid "Not Charging" #~ msgstr "Не заряджається" #~ msgid "Estimating…" #~ msgstr "Оцінювання…" #, javascript-format #~ msgid "%d∶%02d Remaining (%d %%)" #~ msgstr "Залишилось %d∶%02d (%d %%)" #, javascript-format #~ msgid "%d∶%02d Until Full (%d %%)" #~ msgstr "Зарядиться через %d∶%02d (%d %%)" #~ msgid "Location In Use" #~ msgstr "Місцевість використовується" #~ msgid "Location Disabled" #~ msgstr "Місцевість вимкнено" #~ msgid "Screen is Being Shared" #~ msgstr "Екран у спільному доступі" #~ msgid "Turn off" #~ msgstr "Вимкнути" #~ msgid "Show screenshot UI" #~ msgstr "Показати інтерфейс знімків екрана" #~ msgid "Screen Recording in Progress" #~ msgstr "Виконуємо запис з екрана" #~ msgid "Stop" #~ msgstr "Припинити" #~ msgid "Author" #~ msgstr "Автор" #~ msgid "Warning" #~ msgstr "Попередження" #~ msgid "" #~ "Extensions can cause system issues, including performance problems. If " #~ "you encounter problems with your system, it is recommended to disable all " #~ "extensions." #~ msgstr "" #~ "Робота розширень може призвести до проблем у системі, зокрема проблем із " #~ "швидкодією. Якщо ви зіткнулися із проблемами у системі, рекомендуємо " #~ "вимкнути усі розширення." #~ msgid "Remove from Favorites" #~ msgstr "Вилучити з улюбленого" #~ msgid "Add to Favorites" #~ msgstr "Додати до улюбленого" #~ msgid "Enable introspection API" #~ msgstr "Увімкнути API для самоаналізу" #~ msgid "" #~ "Enables a D-Bus API that allows to introspect the application state of " #~ "the shell." #~ msgstr "Вмикає D-Bus API для самоаналізу стану оболонки." #~ msgid "Failed to connect to GNOME Shell" #~ msgstr "Не вдалося з'єднатися із GNOME Shell" #~ msgid "Minimize" #~ msgstr "Згорнути" #~ msgid "Unmaximize" #~ msgstr "Відновити розгорнуте" #~ msgid "App Picker View" #~ msgstr "Огляд вибору програми" #~ msgid "Index of the currently selected view in the application picker." #~ msgstr "Індекс поточного розміщення вибору в огляді списку програм." 0707010000026B000081A40000000000000000000000016712993F00010203000000000000000000000000000000000000002300000000gnome-shell-47.1/po/uz@cyrillic.po# Uzbek (Cyrillic) translation for gnome-shell. # Copyright (C) 2014 gnome-shell's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-shell package. # Bahodir Mansurov <6ahodir@gmail.com>, 2014. # msgid "" msgstr "" "Project-Id-Version: gnome-shell master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "shell&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2016-09-07 09:41+0000\n" "PO-Revision-Date: 2016-09-25 09:14-0400\n" "Last-Translator: Bahodir Mansurov <6ahodir@gmail.com>\n" "Language-Team: Uzbek (Cyrillic) <>\n" "Language: uz@cyrillic\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-DamnedLies-Scope: partial\n" "X-Generator: Poedit 1.8.9\n" #: data/50-gnome-shell-system.xml:6 msgid "System" msgstr "Система" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "Хабарнома рўйхатини кўрсатиш" #: data/50-gnome-shell-system.xml:12 msgid "Focus the active notification" msgstr "Фаол хабарномага диққат қилиш" #: data/50-gnome-shell-system.xml:15 msgid "Show the overview" msgstr "Обзорни кўрсатиш" #: data/50-gnome-shell-system.xml:18 msgid "Show all applications" msgstr "Барча дастурларни кўрсатиш" #: data/50-gnome-shell-system.xml:21 msgid "Open the application menu" msgstr "Дастур менюсини очиш" #: data/gnome-shell-extension-prefs.desktop.in.in:4 msgid "GNOME Shell Extension Preferences" msgstr "GNOME Shell кенгайтма мосламалари" #: data/gnome-shell-extension-prefs.desktop.in.in:5 msgid "Configure GNOME Shell Extensions" msgstr "GNOME Shell кенгайтмаларини созлаш" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "GNOME Shell" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "Ойналарни бошқариш ва дастурларни очиш" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" "Alt-F2дан тузувчилар ва текширувчилар учун фойдали ички асбобларни ёқиш" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Alt-F2 диалог ойнаси орқали ички созлаш ва кузатиш асбобларига рухсат бериш" #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "Ёқиладиган кенгайтма UUIDлари" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "GNOME Shell кенгайтмаларининг UUID хоссаси бор; бу калит юкланиши керак " "бўлган кенгайтмаларни рўйхатда кўрсатади. Юкланишни истайдиган кенгайтма " "ушбу рўйхатда бўлиши керак. Сиз бу рўйхатни org.gnome.Shellдаги D-Busнинг " "EnableExtension ва DisableExtension функциялари орақли ҳам бошқаришингиз " "мумкин." #: data/org.gnome.shell.gschema.xml.in:26 msgid "Disables the validation of extension version compatibility" msgstr "Кенгайтма версияси мослигини текширишни ўчириб қўяди" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "GNOME Shell ушбу ишлаётган версияни қўллашини билдирган кенгайтмаларнигина " "юклайди. Ушбу танловни белгиласангиз бу текширув ўчириб қўйилади ва, қайси " "версияни қўллашидан қатъий назар, барча кенгайтмалар юкланади." #: data/org.gnome.shell.gschema.xml.in:35 msgid "List of desktop file IDs for favorite applications" msgstr "Танланган дастурлар учун иш столи файл IDлари рўйхати" #: data/org.gnome.shell.gschema.xml.in:36 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" "Ушбу идентификаторга мос келувчи дастурлар танланганлар майдонида " "кўрсатилади." #: data/org.gnome.shell.gschema.xml.in:43 msgid "App Picker View" msgstr "Дастур танлагич кўриниши" #: data/org.gnome.shell.gschema.xml.in:44 msgid "Index of the currently selected view in the application picker." msgstr "Дастур танлагичдаги белгиланган кўриниш индекси." #: data/org.gnome.shell.gschema.xml.in:50 msgid "History for command (Alt-F2) dialog" msgstr "(Alt-F2) диалог ойначаси буйруқлар тарихи" #. Translators: looking glass is a debugger and inspector tool, see https://wiki.gnome.org/Projects/GnomeShell/LookingGlass #: data/org.gnome.shell.gschema.xml.in:55 msgid "History for the looking glass dialog" msgstr "Шаффоф диалог ойнаси кўришлар тарихи" #: data/org.gnome.shell.gschema.xml.in:59 msgid "Always show the 'Log out' menu item in the user menu." msgstr "Фойдаланувчи менюсида \"Сеансни якунлаш\" менюсини ҳар доим кўрсатиш." #: data/org.gnome.shell.gschema.xml.in:60 msgid "" "This key overrides the automatic hiding of the 'Log out' menu item in single-" "user, single-session situations." msgstr "" "Ушбу калит битта фойдаланувчили системада \"Сеансни якунлаш\" менюсини " "автоматик яширишни белгилаб беради." #: data/org.gnome.shell.gschema.xml.in:67 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "Шифрланган ёки масофавий файл системаларини улаганда махфий сўзни эслаб " "қолиш ёки йўқлиги" #: data/org.gnome.shell.gschema.xml.in:68 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "'Remember Password' checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "GNOME Shell шифрланган ёки масофавий файл системаларини улаганда махфий " "сўзни сўрайди. Агар махфий сўз келажакда ишлатиш учун сақлаб бўлинса " "\"Махфий сўзни эслаб қолиш\" белгилаш катакчаси кўрсатилади. Ушбу калит ўша " "белгилаш катакчасининг сукут ҳолатини ўрнатади." #: data/org.gnome.shell.gschema.xml.in:77 msgid "" "Whether the default Bluetooth adapter had set up devices associated to it" msgstr "Bluetooth адаптери сукут бўйича бирор ускунага уланганми" #: data/org.gnome.shell.gschema.xml.in:78 msgid "" "The shell will only show a Bluetooth menu item if a Bluetooth adapter is " "powered, or if there were devices set up associated with the default " "adapter. This will be reset if the default adapter is ever seen not to have " "devices associated to it." msgstr "" "Bluetooth адаптери ёниқ ёки унга ускуналар боғлаб қўйилган бўлса Bluetooth " "менюси кўринади. Агар сукут бўйича адаптерга уланган ускуналар бўлмаса, ушбу " "параметр ташлаб юборилади." #: data/org.gnome.shell.gschema.xml.in:93 msgid "Keybinding to open the application menu" msgstr "Дастур менюсини очиш учун клавишалар бирикмаси" #: data/org.gnome.shell.gschema.xml.in:94 msgid "Keybinding to open the application menu." msgstr "Дастур менюсини очиш учун клавишалар бирикмаси." #: data/org.gnome.shell.gschema.xml.in:100 msgid "Keybinding to open the \"Show Applications\" view" msgstr "\"Дастурларни кўрсатиш\" кўринишини очиш учун клавишалар бирикмаси" #: data/org.gnome.shell.gschema.xml.in:101 msgid "" "Keybinding to open the \"Show Applications\" view of the Activities Overview." msgstr "" "Фаолиятлар обзорида \"Дастурларни кўрсатиш\"кўриниши учун клавишалар " "бирикмаси" #: data/org.gnome.shell.gschema.xml.in:108 msgid "Keybinding to open the overview" msgstr "Обзорни очиш учун клавишалар бирикмаси" #: data/org.gnome.shell.gschema.xml.in:109 msgid "Keybinding to open the Activities Overview." msgstr "Фаолиятлар обзорини очиш учун клавишалар бирикмаси" #: data/org.gnome.shell.gschema.xml.in:115 msgid "Keybinding to toggle the visibility of the notification list" msgstr "Хабарнома рўйхати очиб-ёпиш учун клавишалар бирикмаси" #: data/org.gnome.shell.gschema.xml.in:116 msgid "Keybinding to toggle the visibility of the notification list." msgstr "Хабарнома рўйхати очиб-ёпиш учун клавишалар бирикмаси" #: data/org.gnome.shell.gschema.xml.in:122 msgid "Keybinding to focus the active notification" msgstr "Фаол хабарномага диққат қилиш учун клавишалар бирикмаси" #: data/org.gnome.shell.gschema.xml.in:123 msgid "Keybinding to focus the active notification." msgstr "Фаол хабарномага диққат қилиш учун клавишалар бирикмаси." #: data/org.gnome.shell.gschema.xml.in:129 msgid "" "Keybinding that pauses and resumes all running tweens, for debugging purposes" msgstr "" "Барча ишлаб турган анимацияларни тўхтатиб туриш ёки давом эттириш учун " "клавишалар бирикмаси (созлаш мақсадиди)" #: data/org.gnome.shell.gschema.xml.in:138 msgid "Which keyboard to use" msgstr "Қайси клавиатурани ишлатиш" #: data/org.gnome.shell.gschema.xml.in:139 msgid "The type of keyboard to use." msgstr "Ишлатиладиган клавиатура тури." #: data/org.gnome.shell.gschema.xml.in:150 #: data/org.gnome.shell.gschema.xml.in:177 msgid "Limit switcher to current workspace." msgstr "Переключателни фақат шу иш жойи билан чегаралаш." #: data/org.gnome.shell.gschema.xml.in:151 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "Агар белгиланса, ушбу иш жойида ойнаси бор барча дастурлар ўзгартирувчи " "тугмачада кўринади. Акс ҳолда, барча дастурлар ҳисобга олинади." #: data/org.gnome.shell.gschema.xml.in:168 msgid "The application icon mode." msgstr "Дастур нишончаси режими." #: data/org.gnome.shell.gschema.xml.in:169 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-" "only' (shows only the application icon) or 'both'." msgstr "" "Ўзгартирувчи тугмачада ойналар қандай кўринишини мослайди. Мавжуд қийматлар: " "\"thumbnail-only\" (ойнанинг миниатурасини кўрсатади), \"app-icon-only" "\" (фақтгини дастур нишончасини кўрсатади)." #: data/org.gnome.shell.gschema.xml.in:178 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "Агар белгиланса, фақатгина ушбу иш жойидаги ойналар переключателда " "кўрсатилади. Акс ҳолда,барча ойналар ҳисобга олинади." #: data/org.gnome.shell.gschema.xml.in:189 msgid "Attach modal dialog to the parent window" msgstr "Модал диалог ойнани бош ойнасига маҳкамлаш" #: data/org.gnome.shell.gschema.xml.in:190 #: data/org.gnome.shell.gschema.xml.in:199 #: data/org.gnome.shell.gschema.xml.in:207 #: data/org.gnome.shell.gschema.xml.in:215 #: data/org.gnome.shell.gschema.xml.in:223 msgid "" "This key overrides the key in org.gnome.mutter when running GNOME Shell." msgstr "" "GNOME Shell ишга тушганида ушбу калит org.gnome.mutterдаги калитни бошқадан " "белгилайди." #: data/org.gnome.shell.gschema.xml.in:198 msgid "Enable edge tiling when dropping windows on screen edges" msgstr "" "Ойналар экран четларига олиб борилганда уларнинг ўлчамларини автоматик " "равишда ўзгартириш" #: data/org.gnome.shell.gschema.xml.in:206 msgid "Workspaces are managed dynamically" msgstr "Иш жойлари фаол равишда бошқарилади" #: data/org.gnome.shell.gschema.xml.in:214 msgid "Workspaces only on primary monitor" msgstr "Иш жойлари фақат асосий мониторда" #: data/org.gnome.shell.gschema.xml.in:222 msgid "Delay focus changes in mouse mode until the pointer stops moving" msgstr "" "Кўрсаткич юришдан тўхтамагунча сичқонча режимида диққатни ўзгратирмаслик" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "Тармоққа кириш" #. Translators: Do NOT translate or transliterate this text (this is an icon file name)! #: data/org.gnome.Shell.PortalHelper.desktop.in.in:9 msgid "network-workgroup" msgstr "network-workgroup" #: js/extensionPrefs/main.js:117 #, javascript-format msgid "There was an error loading the preferences dialog for %s:" msgstr "%s учун параметрлар диалог ойнасини юклашда хатолик содир бўлди:" #: js/extensionPrefs/main.js:149 msgid "GNOME Shell Extensions" msgstr "GNOME Shell кенгайтмалари" #: js/gdm/authPrompt.js:147 js/ui/audioDeviceSelection.js:71 #: js/ui/components/networkAgent.js:145 js/ui/components/polkitAgent.js:179 #: js/ui/endSessionDialog.js:483 js/ui/extensionDownloader.js:195 #: js/ui/shellMountOperation.js:399 js/ui/status/network.js:916 msgid "Cancel" msgstr "Бекор қилиш" #: js/gdm/authPrompt.js:169 js/gdm/authPrompt.js:216 js/gdm/authPrompt.js:448 msgid "Next" msgstr "Кейинги" #: js/gdm/authPrompt.js:212 js/ui/shellMountOperation.js:403 #: js/ui/unlockDialog.js:59 msgid "Unlock" msgstr "Қулфни ечиш" #: js/gdm/authPrompt.js:214 msgctxt "button" msgid "Sign In" msgstr "Кириш" #: js/gdm/loginDialog.js:285 msgid "Choose Session" msgstr "Сеансни танлаш" #. translators: this message is shown below the user list on the #. login screen. It can be activated to reveal an entry for #. manually entering the username. #: js/gdm/loginDialog.js:435 msgid "Not listed?" msgstr "Рўйхатда йўқми?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:854 #, javascript-format msgid "(e.g., user or %s)" msgstr "(мас. фойдаланувчи ёки %s)" #. TTLS and PEAP are actually much more complicated, but this complication #. is not visible here since we only care about phase2 authentication #. (and don't even care of which one) #: js/gdm/loginDialog.js:859 js/ui/components/networkAgent.js:271 #: js/ui/components/networkAgent.js:289 msgid "Username: " msgstr "Фойдаланувчи:" #: js/gdm/loginDialog.js:1196 msgid "Login Window" msgstr "Кириш Ойнаси" #: js/gdm/util.js:341 msgid "Authentication error" msgstr "Хақиқийлигини текширишда хатолик" #. We don't show fingerprint messages directly since it's #. not the main auth service. Instead we use the messages #. as a cue to display our own message. #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger instead #: js/gdm/util.js:473 msgid "(or swipe finger)" msgstr "(ёки ушбу мослама юзасида бармоғингизни юритинг)" #: js/misc/util.js:119 msgid "Command not found" msgstr "Буйруқ топилмади" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:152 msgid "Could not parse command:" msgstr "Буйруқни таҳлил қилиб бўлмади:" #: js/misc/util.js:160 #, javascript-format msgid "Execution of “%s” failed:" msgstr "\"%s\"ни бажариб бўлмади:" #. Translators: Time in 24h format #: js/misc/util.js:191 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/util.js:197 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "Кеча, %H∶%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/util.js:203 #, no-c-format msgid "%A, %H∶%M" msgstr "%A, %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/util.js:209 #, no-c-format msgid "%B %d, %H∶%M" msgstr "%B %d, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/util.js:215 #, no-c-format msgid "%B %d %Y, %H∶%M" msgstr "%B %d %Y, %H∶%M" #. Translators: Time in 12h format #: js/misc/util.js:220 msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/util.js:226 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "Кеча, %l∶%M %p" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/util.js:232 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A, %l∶%M %p" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/util.js:238 #, no-c-format msgid "%B %d, %l∶%M %p" msgstr "%B %d, %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/util.js:244 #, no-c-format msgid "%B %d %Y, %l∶%M %p" msgstr "%B %d %Y, %l∶%M %p" #. TRANSLATORS: this is the title of the wifi captive portal login #. * window, until we know the title of the actual login page #: js/portalHelper/main.js:85 msgid "Web Authentication Redirect" msgstr "Ҳақиқийлигини текшириш учун қайта жўнатиш" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:62 js/ui/status/location.js:426 msgid "Deny Access" msgstr "Рухсат бермаслик" #: js/ui/accessDialog.js:63 js/ui/status/location.js:429 msgid "Grant Access" msgstr "Рухсат бериш" #: js/ui/appDisplay.js:794 msgid "Frequently used applications will appear here" msgstr "Тез-тез ишлатиладиган дастурлар шу ерда пайдо бўлади" #: js/ui/appDisplay.js:914 msgid "Frequent" msgstr "Тез-тез ишлатиладиган" #: js/ui/appDisplay.js:921 msgid "All" msgstr "Барча" #: js/ui/appDisplay.js:1853 msgid "New Window" msgstr "Янги ойна" #: js/ui/appDisplay.js:1881 js/ui/dash.js:289 msgid "Remove from Favorites" msgstr "Ёқтирганлар рўйхатидан ўчириш" #: js/ui/appDisplay.js:1887 msgid "Add to Favorites" msgstr "Ёқтирганлар рўйхатига қўшиш" #: js/ui/appDisplay.js:1897 msgid "Show Details" msgstr "Тафсилотларни кўрсатиш" #: js/ui/appFavorites.js:134 #, javascript-format msgid "%s has been added to your favorites." msgstr "\"%s\" танланганлар рўйхатига қўшилди." #: js/ui/appFavorites.js:168 #, javascript-format msgid "%s has been removed from your favorites." msgstr "\"%s\" танланганлар рўйхатидан олиб ташланди." #: js/ui/audioDeviceSelection.js:59 msgid "Select Audio Device" msgstr "Аудио ускунани танлаш" #: js/ui/audioDeviceSelection.js:69 msgid "Sound Settings" msgstr "Товуш мосламалари" #: js/ui/audioDeviceSelection.js:78 msgid "Headphones" msgstr "Наушниклар" #: js/ui/audioDeviceSelection.js:80 msgid "Headset" msgstr "Наушник" #: js/ui/audioDeviceSelection.js:82 js/ui/status/volume.js:213 msgid "Microphone" msgstr "Микрофон" #: js/ui/backgroundMenu.js:19 msgid "Change Background…" msgstr "Фонни ўзгартириш..." #: js/ui/backgroundMenu.js:21 msgid "Display Settings" msgstr "Дисплей мосламалари" #: js/ui/backgroundMenu.js:22 js/ui/status/system.js:374 msgid "Settings" msgstr "Мосламалар" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:47 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:76 msgctxt "grid sunday" msgid "S" msgstr "Я" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:78 msgctxt "grid monday" msgid "M" msgstr "Д" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:80 msgctxt "grid tuesday" msgid "T" msgstr "С" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:82 msgctxt "grid wednesday" msgid "W" msgstr "Ч" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:84 msgctxt "grid thursday" msgid "T" msgstr "П" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:86 msgctxt "grid friday" msgid "F" msgstr "Ж" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:88 msgctxt "grid saturday" msgid "S" msgstr "Ш" #: js/ui/calendar.js:442 msgid "Previous month" msgstr "Ўтган ой" #: js/ui/calendar.js:452 msgid "Next month" msgstr "Келаси ой" #: js/ui/calendar.js:605 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:660 msgid "Week %V" msgstr "Ҳафта %V" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/calendar.js:721 msgctxt "event list time" msgid "All Day" msgstr "Куни бўйи" #: js/ui/calendar.js:836 msgid "Events" msgstr "Тадбирлар" #: js/ui/calendar.js:845 msgctxt "calendar heading" msgid "%A, %B %d" msgstr "%A, %B %d" #: js/ui/calendar.js:849 msgctxt "calendar heading" msgid "%A, %B %d, %Y" msgstr "%A, %B %d, %Y" #: js/ui/calendar.js:931 msgid "Notifications" msgstr "Хабарнома" #: js/ui/calendar.js:1082 msgid "No Notifications" msgstr "Хабарлар йўқ" #: js/ui/calendar.js:1085 msgid "No Events" msgstr "Тадбир йўқ" #: js/ui/components/automountManager.js:91 msgid "External drive connected" msgstr "Ташқи диск уланган" #: js/ui/components/automountManager.js:102 msgid "External drive disconnected" msgstr "Ташқи диск узилган" #: js/ui/components/autorunManager.js:355 #, javascript-format msgid "Open with %s" msgstr "%s билан очиш" #: js/ui/components/keyring.js:120 js/ui/components/polkitAgent.js:315 msgid "Password:" msgstr "Махфий сўз:" #: js/ui/components/keyring.js:153 msgid "Type again:" msgstr "Яна ёзинг:" #: js/ui/components/networkAgent.js:140 js/ui/status/network.js:269 #: js/ui/status/network.js:352 js/ui/status/network.js:919 msgid "Connect" msgstr "Уланиш" #. Cisco LEAP #: js/ui/components/networkAgent.js:233 js/ui/components/networkAgent.js:245 #: js/ui/components/networkAgent.js:273 js/ui/components/networkAgent.js:293 #: js/ui/components/networkAgent.js:303 msgid "Password: " msgstr "Махфий сўз:" #. static WEP #: js/ui/components/networkAgent.js:238 msgid "Key: " msgstr "Калит:" #: js/ui/components/networkAgent.js:277 msgid "Identity: " msgstr "Шахсият:" #: js/ui/components/networkAgent.js:279 msgid "Private key password: " msgstr "Шахсий калитнинг махфий сўзи:" #: js/ui/components/networkAgent.js:291 msgid "Service: " msgstr "Хизмат:" #: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:658 msgid "Authentication required by wireless network" msgstr "Симсиз тармоқ ҳақиқийликни текширишни талаб қиляпти" #: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:659 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network " "“%s”." msgstr "" "Симсиз \"%s\" тармоққа уланиш учун махфий сўзлар ёки шифрлаш калитлари талаб " "қилинади." #: js/ui/components/networkAgent.js:325 js/ui/components/networkAgent.js:662 msgid "Wired 802.1X authentication" msgstr "Симли 802.1X алоқанинг ҳақиқийлигини текшириш" #: js/ui/components/networkAgent.js:327 msgid "Network name: " msgstr "Тармоқ номи:" #: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:666 msgid "DSL authentication" msgstr "DSL ҳақиқийлигини текшириш" #: js/ui/components/networkAgent.js:339 js/ui/components/networkAgent.js:672 msgid "PIN code required" msgstr "PIN код талаб қилинади" #: js/ui/components/networkAgent.js:340 js/ui/components/networkAgent.js:673 msgid "PIN code is needed for the mobile broadband device" msgstr "Катта йўлли мобил алоқа ускунаси уччун PIN код керак бўлади" #: js/ui/components/networkAgent.js:341 msgid "PIN: " msgstr "PIN:" #: js/ui/components/networkAgent.js:348 js/ui/components/networkAgent.js:679 msgid "Mobile broadband network password" msgstr "Кенг йўлли мобил алоқа учун махфий сўз" #: js/ui/components/networkAgent.js:349 js/ui/components/networkAgent.js:663 #: js/ui/components/networkAgent.js:667 js/ui/components/networkAgent.js:680 #, javascript-format msgid "A password is required to connect to “%s”." msgstr "\"%s\"га уланиш учун махфий сўз талаб қилинади." #: js/ui/components/networkAgent.js:647 js/ui/status/network.js:1658 msgid "Network Manager" msgstr "Тармоқ бошқарувчиси" #: js/ui/components/polkitAgent.js:60 msgid "Authentication Required" msgstr "Ҳақиқийлигини текшириш талаб қилинади" #: js/ui/components/polkitAgent.js:102 msgid "Administrator" msgstr "Маъмур" #: js/ui/components/polkitAgent.js:182 msgid "Authenticate" msgstr "Ҳақиқийлигини текшириш" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:301 js/ui/shellMountOperation.js:383 msgid "Sorry, that didn't work. Please try again." msgstr "Узр, ишламади. Яна ҳаракат қилиб кўринг." #. Translators: this is the other person changing their old IM name to their new #. IM name. #: js/ui/components/telepathyClient.js:760 #, javascript-format msgid "%s is now known as %s" msgstr "%s энди %s сифатида маълум" #: js/ui/ctrlAltTab.js:29 js/ui/viewSelector.js:155 msgid "Windows" msgstr "Ойналар" #: js/ui/dash.js:250 js/ui/dash.js:291 msgid "Show Applications" msgstr "Дастурларни кўрсатиш" #. Translators: this is the name of the dock/favorites area on #. the left of the overview #: js/ui/dash.js:449 msgid "Dash" msgstr "Дастурлар панели" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM"). #. #: js/ui/dateMenu.js:73 msgid "%B %e %Y" msgstr "%B %e %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:80 msgid "%A %B %e %Y" msgstr "%A, %B %e, %Y" #: js/ui/dateMenu.js:160 msgid "Add world clocks…" msgstr "Дунё соатларини қўшиш..." #: js/ui/dateMenu.js:161 msgid "World Clocks" msgstr "Дунё соатлари" #: js/ui/endSessionDialog.js:64 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "%s фойдаланувчи сеансини якунлаш" #: js/ui/endSessionDialog.js:65 msgctxt "title" msgid "Log Out" msgstr "Сеансни якунлаш" #: js/ui/endSessionDialog.js:67 #, javascript-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "%sнинг сеанси %d сониядан сўнг автоматик равишда тугатилади." #: js/ui/endSessionDialog.js:72 #, javascript-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "Сизнинг сеансинги %d сониядан сўнг автоматик равишда тугатилади." #: js/ui/endSessionDialog.js:78 msgctxt "button" msgid "Log Out" msgstr "Сеансни якунлаш" #: js/ui/endSessionDialog.js:84 msgctxt "title" msgid "Power Off" msgstr "Ўчириш" #: js/ui/endSessionDialog.js:85 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Янгиликларни ўрнатиш ва компьютерни ўчириш" #: js/ui/endSessionDialog.js:87 #, javascript-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "Система %d сониядан сўнг автоматик равишда ўчади." #: js/ui/endSessionDialog.js:91 msgctxt "checkbox" msgid "Install pending software updates" msgstr "Навбатдаги дастурий таъминот янгиликларини ўрнатиш" #: js/ui/endSessionDialog.js:94 js/ui/endSessionDialog.js:111 msgctxt "button" msgid "Restart" msgstr "Ўчириб ёқиш" #: js/ui/endSessionDialog.js:96 msgctxt "button" msgid "Power Off" msgstr "Ўчириш" #: js/ui/endSessionDialog.js:103 msgctxt "title" msgid "Restart" msgstr "Ўчириб ёқиш" #: js/ui/endSessionDialog.js:105 #, javascript-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "Система %d сониядан сўнг автоматик равишда ўчиб ёнади." #: js/ui/endSessionDialog.js:119 msgctxt "title" msgid "Restart & Install Updates" msgstr "Ўчириб ёқиш ва янгиликларни ўрнатиш" #: js/ui/endSessionDialog.js:121 #, javascript-format msgid "The system will automatically restart and install updates in %d second." msgid_plural "" "The system will automatically restart and install updates in %d seconds." msgstr[0] "" "Система %d сониядан сўнг автоматик равишда ўчиб ёнади ва янгиликларни " "ўрнатади." #: js/ui/endSessionDialog.js:127 js/ui/endSessionDialog.js:147 msgctxt "button" msgid "Restart & Install" msgstr "Ўчириб ёқиш ва ўрнатиш" #: js/ui/endSessionDialog.js:128 msgctxt "button" msgid "Install & Power Off" msgstr "Ўрнатиш ва компьютерни ўчириш" #: js/ui/endSessionDialog.js:129 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Янгиликлар ўрнатилгандан кейин компьютерни ўчириш" #: js/ui/endSessionDialog.js:137 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "Ўчириб ёқиш ва янгиликларни ўрнатиш" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:142 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "Система қайта ишга тушганидан сўнг %s %s ўрнатилади. Янгилаш кўп вақт талаб " "қилиши мумкин: захира нусхаси борлиги ва компьютер тармоққа уланганлигига " "ишонч ҳосил қилинг." #: js/ui/endSessionDialog.js:361 msgid "Running on battery power: please plug in before installing updates." msgstr "" "Компьютер батарея қувватида ишлаяпти: илтимос янгиликларни ўрнатишдан олдин " "заряд ускунасини уланг." #: js/ui/endSessionDialog.js:378 msgid "Some applications are busy or have unsaved work." msgstr "Баъзи дастурлар банд ёки уларнинг сақланмаган ишлари бор." #: js/ui/endSessionDialog.js:385 msgid "Other users are logged in." msgstr "Системада бошқа фойдаланувчиларнинг фаол сеанслари мавжуд." #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:671 #, javascript-format msgid "%s (remote)" msgstr "%s (масофавий)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:674 #, javascript-format msgid "%s (console)" msgstr "%s (терминал)" #: js/ui/extensionDownloader.js:199 msgid "Install" msgstr "Ўрнатиш" #: js/ui/extensionDownloader.js:204 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "\"%s\" ни extensions.gnome.org сайтидан юклаб олиб ўрнатасизми?" #: js/ui/keyboard.js:742 js/ui/status/keyboard.js:782 msgid "Keyboard" msgstr "Клавиатура" #. translators: 'Hide' is a verb #: js/ui/legacyTray.js:65 msgid "Hide tray" msgstr "Лаълини яшириш" #: js/ui/legacyTray.js:106 msgid "Status Icons" msgstr "Ҳолат нишончалари" #: js/ui/lookingGlass.js:643 msgid "No extensions installed" msgstr "Бирорта кенгайтма ўрнатилмаган" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:697 #, javascript-format msgid "%s has not emitted any errors." msgstr "%s бирор хато чиқармади." #: js/ui/lookingGlass.js:703 msgid "Hide Errors" msgstr "Хатоларни яшириш" #: js/ui/lookingGlass.js:707 js/ui/lookingGlass.js:767 msgid "Show Errors" msgstr "Хатоларни кўрсатиш" #: js/ui/lookingGlass.js:716 msgid "Enabled" msgstr "Ёниқ" #. translators: #. * The device has been disabled #: js/ui/lookingGlass.js:719 src/gvc/gvc-mixer-control.c:1866 msgid "Disabled" msgstr "Ўчиқ" #: js/ui/lookingGlass.js:721 msgid "Error" msgstr "Хато" #: js/ui/lookingGlass.js:723 msgid "Out of date" msgstr "Эски" #: js/ui/lookingGlass.js:725 msgid "Downloading" msgstr "Юкланяпти" #: js/ui/lookingGlass.js:749 msgid "View Source" msgstr "Манбани кўриш" #: js/ui/lookingGlass.js:758 msgid "Web Page" msgstr "Веб саҳифа" #: js/ui/messageList.js:543 msgid "Clear section" msgstr "Бўлимни тозалаш" #: js/ui/messageTray.js:1486 msgid "System Information" msgstr "Система ҳақида ахборот" #: js/ui/mpris.js:194 msgid "Unknown artist" msgstr "Номаълум артист" #: js/ui/mpris.js:195 msgid "Unknown title" msgstr "Номаълум сарлавҳа" #: js/ui/mpris.js:217 msgid "Media" msgstr "Ахборот воситалари" #: js/ui/overview.js:84 msgid "Undo" msgstr "Ўз ҳолига қайтариш" #: js/ui/overview.js:113 msgid "Overview" msgstr "Тепадан кўриниш" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overview.js:240 msgid "Type to search…" msgstr "Қидириш учун ёзинг..." #: js/ui/panel.js:358 msgid "Quit" msgstr "Чиқиш" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:414 msgid "Activities" msgstr "Фаолият" #: js/ui/panel.js:695 msgctxt "System menu in the top bar" msgid "System" msgstr "Система" #: js/ui/panel.js:807 msgid "Top Bar" msgstr "Тепа панели" #. Translators: this MUST be either "toggle-switch-us" #. (for toggle switches containing the English words #. "ON" and "OFF") or "toggle-switch-intl" (for toggle #. switches containing "◯" and "|"). Other values will #. simply result in invisible toggle switches. #: js/ui/popupMenu.js:289 msgid "toggle-switch-us" msgstr "toggle-switch-us" #: js/ui/runDialog.js:71 msgid "Enter a Command" msgstr "Буйруқни киритинг" #: js/ui/runDialog.js:111 js/ui/windowMenu.js:162 msgid "Close" msgstr "Ёпиш" #: js/ui/runDialog.js:282 msgid "Restarting…" msgstr "Ўчириб ёқиляпти..." #. Translators: This is a time format for a date in #. long format #: js/ui/screenShield.js:85 msgid "%A, %B %d" msgstr "%A, %B %d" #: js/ui/screenShield.js:144 #, javascript-format msgid "%d new message" msgid_plural "%d new messages" msgstr[0] "%dта янги хат" #: js/ui/screenShield.js:146 #, javascript-format msgid "%d new notification" msgid_plural "%d new notifications" msgstr[0] "%dта янги хабарномалар" #: js/ui/screenShield.js:449 js/ui/status/system.js:382 msgid "Lock" msgstr "Қулфлаш" #: js/ui/screenShield.js:704 msgid "GNOME needs to lock the screen" msgstr "GNOME экранни қулфлаши керак" #. We could not become modal, so we can't activate the #. screenshield. The user is probably very upset at this #. point, but any application using global grabs is broken #. Just tell him to stop using this app #. #. XXX: another option is to kick the user into the gdm login #. screen, where we're not affected by grabs #: js/ui/screenShield.js:825 js/ui/screenShield.js:1291 msgid "Unable to lock" msgstr "Қулфлаб бўлмади" #: js/ui/screenShield.js:826 js/ui/screenShield.js:1292 msgid "Lock was blocked by an application" msgstr "Қайсидир дастур томонидан қулфлаш бекор қилинди" #: js/ui/search.js:617 msgid "Searching…" msgstr "Қидириляпти..." #: js/ui/search.js:619 msgid "No results." msgstr "Натижа йўқ." #: js/ui/shellEntry.js:25 msgid "Copy" msgstr "Кўчириш" #: js/ui/shellEntry.js:30 msgid "Paste" msgstr "Қўйиш" #: js/ui/shellEntry.js:97 msgid "Show Text" msgstr "Матнни кўрсатиш" #: js/ui/shellEntry.js:99 msgid "Hide Text" msgstr "Матнни яшириш" #: js/ui/shellMountOperation.js:370 msgid "Password" msgstr "Махфий сўз" #: js/ui/shellMountOperation.js:391 msgid "Remember Password" msgstr "Махфий сўзни эслаб қолиш" #: js/ui/status/accessibility.js:42 msgid "Accessibility" msgstr "Махсус имкониятлар" #: js/ui/status/accessibility.js:57 msgid "Zoom" msgstr "Миқиёс" #: js/ui/status/accessibility.js:64 msgid "Screen Reader" msgstr "Экран ўқувчи" #: js/ui/status/accessibility.js:68 msgid "Screen Keyboard" msgstr "Экран клавиатураси" #: js/ui/status/accessibility.js:72 msgid "Visual Alerts" msgstr "Кўргазмали огоҳлантиришлар" #: js/ui/status/accessibility.js:75 msgid "Sticky Keys" msgstr "Ёпишқоқ клавишалар" #: js/ui/status/accessibility.js:78 msgid "Slow Keys" msgstr "Секин клавишалар" #: js/ui/status/accessibility.js:81 msgid "Bounce Keys" msgstr "Сакраб турувчи клавиша" #: js/ui/status/accessibility.js:84 msgid "Mouse Keys" msgstr "Сичқонча тугмалари" #: js/ui/status/accessibility.js:167 msgid "High Contrast" msgstr "Юқори контрастли" #: js/ui/status/accessibility.js:202 msgid "Large Text" msgstr "Катта матн" #: js/ui/status/bluetooth.js:47 msgid "Bluetooth" msgstr "Bluetooth" #: js/ui/status/bluetooth.js:56 js/ui/status/network.js:624 msgid "Bluetooth Settings" msgstr "Bluetooth мосламалари" #. Translators: this is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:136 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%dта уланган" #: js/ui/status/bluetooth.js:138 msgid "Off" msgstr "Ўчган" #: js/ui/status/bluetooth.js:140 msgid "Not In Use" msgstr "Ишлатилмаяпти" #: js/ui/status/bluetooth.js:142 js/ui/status/network.js:1279 msgid "Turn On" msgstr "Ёқиш" #: js/ui/status/bluetooth.js:142 js/ui/status/network.js:178 #: js/ui/status/network.js:353 js/ui/status/network.js:1279 #: js/ui/status/network.js:1394 js/ui/status/rfkill.js:90 #: js/ui/status/rfkill.js:117 msgid "Turn Off" msgstr "Ўчириш" #: js/ui/status/brightness.js:44 msgid "Brightness" msgstr "Ёруғлик" #: js/ui/status/keyboard.js:805 msgid "Show Keyboard Layout" msgstr "Клавиатура жойлашувини кўрсатиш" #: js/ui/status/location.js:107 js/ui/status/location.js:215 msgid "Location Enabled" msgstr "Манзил ёқилган" #: js/ui/status/location.js:108 js/ui/status/location.js:216 msgid "Disable" msgstr "Ўчириш" #: js/ui/status/location.js:109 msgid "Privacy Settings" msgstr "Шахсий маълумот мосламалари" #: js/ui/status/location.js:214 msgid "Location In Use" msgstr "Манзил ишлатиляпти" #: js/ui/status/location.js:218 msgid "Location Disabled" msgstr "Манзил ўчирилган" #: js/ui/status/location.js:219 msgid "Enable" msgstr "Ёқиш" #. Translators: %s is an application name #: js/ui/status/location.js:435 #, javascript-format msgid "Give %s access to your location?" msgstr "%s манзилингизни билишига рухсат берасизми?" #: js/ui/status/location.js:437 msgid "Location access can be changed at any time from the privacy settings." msgstr "Манзилга рухсатни махфийлик мосламаларида ўзгартириш мумкин" #: js/ui/status/network.js:101 msgid "" msgstr "<номаълум>" #. Translators: %s is a network identifier #: js/ui/status/network.js:451 js/ui/status/network.js:1308 #, javascript-format msgid "%s Off" msgstr "%s ўчган" #. Translators: %s is a network identifier #: js/ui/status/network.js:454 #, javascript-format msgid "%s Connected" msgstr "%s уланган" #. Translators: this is for network devices that are physically present but are not #. under NetworkManager's control (and thus cannot be used in the menu); #. %s is a network identifier #: js/ui/status/network.js:459 #, javascript-format msgid "%s Unmanaged" msgstr "%s бошқарувда эмас" #. Translators: %s is a network identifier #: js/ui/status/network.js:462 #, javascript-format msgid "%s Disconnecting" msgstr "%s узиляпти" #. Translators: %s is a network identifier #: js/ui/status/network.js:469 js/ui/status/network.js:1300 #, javascript-format msgid "%s Connecting" msgstr "%s уланяпти" #. Translators: this is for network connections that require some kind of key or password; %s is a network identifier #: js/ui/status/network.js:472 #, javascript-format msgid "%s Requires Authentication" msgstr "%s аутентификацияни талаб қилади" #. Translators: this is for devices that require some kind of firmware or kernel #. module, which is missing; %s is a network identifier #: js/ui/status/network.js:480 #, javascript-format msgid "Firmware Missing For %s" msgstr "%sнинг чоки йўқ" #. Translators: this is for a network device that cannot be activated (for example it #. is disabled by rfkill, or it has no coverage; %s is a network identifier #: js/ui/status/network.js:484 #, javascript-format msgid "%s Unavailable" msgstr "%s мавжуд эмас" #. Translators: %s is a network identifier #: js/ui/status/network.js:487 #, javascript-format msgid "%s Connection Failed" msgstr "%s алоқа қила олмади" #: js/ui/status/network.js:503 msgid "Wired Settings" msgstr "Симли алоқа мосламалари" #: js/ui/status/network.js:545 msgid "Mobile Broadband Settings" msgstr "Кенг йўлли мобил алоқа мосламалари" #. Translators: %s is a network identifier #: js/ui/status/network.js:588 js/ui/status/network.js:1305 #, javascript-format msgid "%s Hardware Disabled" msgstr "%s ускунаси ўчирилган" #. Translators: this is for a network device that cannot be activated #. because it's disabled by rfkill (airplane mode); %s is a network identifier #: js/ui/status/network.js:592 #, javascript-format msgid "%s Disabled" msgstr "%s ўчиқ" #: js/ui/status/network.js:632 msgid "Connect to Internet" msgstr "Интернетга уланиш" #: js/ui/status/network.js:813 msgid "Airplane Mode is On" msgstr "Самолёт режими ёнган" #: js/ui/status/network.js:814 msgid "Wi-Fi is disabled when airplane mode is on." msgstr "Самолёт режими ёниқ бўлганда Wi-Fi ўчган бўлади." #: js/ui/status/network.js:815 msgid "Turn Off Airplane Mode" msgstr "Самолёт режимини ўчириш" #: js/ui/status/network.js:824 msgid "Wi-Fi is Off" msgstr "Wi-Fi ўчган" #: js/ui/status/network.js:825 msgid "Wi-Fi needs to be turned on in order to connect to a network." msgstr "Тармоққа уланиш учун Wi-Fi ёнган бўлиши керак." #: js/ui/status/network.js:826 msgid "Turn On Wi-Fi" msgstr "Wi-Fiни ёқиш" #: js/ui/status/network.js:851 msgid "Wi-Fi Networks" msgstr "Wi-Fi тармоқлар" #: js/ui/status/network.js:853 msgid "Select a network" msgstr "Тармоқни танлаш" #: js/ui/status/network.js:883 msgid "No Networks" msgstr "Бирорта тармоқ мавжуд эмас" #: js/ui/status/network.js:904 js/ui/status/rfkill.js:115 msgid "Use hardware switch to turn off" msgstr "Ўчириш учун ускуна тугмасини ишлатиш" #: js/ui/status/network.js:1171 msgid "Select Network" msgstr "Тармоқни танлаш" #: js/ui/status/network.js:1177 msgid "Wi-Fi Settings" msgstr "Wi-Fi Мосламалари" #. Translators: %s is a network identifier #: js/ui/status/network.js:1296 #, javascript-format msgid "%s Hotspot Active" msgstr "%s уланиш нуқтаси фаол" #. Translators: %s is a network identifier #: js/ui/status/network.js:1311 #, javascript-format msgid "%s Not Connected" msgstr "%s уланмаган" #: js/ui/status/network.js:1411 msgid "connecting..." msgstr "уланяпти..." #. Translators: this is for network connections that require some kind of key or password #: js/ui/status/network.js:1414 msgid "authentication required" msgstr "ҳақиқийлигини аниқлаш талаб қилинади" #: js/ui/status/network.js:1416 msgid "connection failed" msgstr "алоқа қилиб бўлмади" #: js/ui/status/network.js:1482 js/ui/status/rfkill.js:93 msgid "Network Settings" msgstr "Тармоқ мосламалари" #: js/ui/status/network.js:1484 msgid "VPN Settings" msgstr "VPN мосламалари" #: js/ui/status/network.js:1503 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1513 msgid "VPN Off" msgstr "VPN Ўчган" #: js/ui/status/network.js:1697 msgid "Connection failed" msgstr "Алоқа қилиб бўлмади" #: js/ui/status/network.js:1698 msgid "Activation of network connection failed" msgstr "Тармоқ алоқасини фаоллаштириб бўлмади" #: js/ui/status/power.js:61 msgid "Power Settings" msgstr "Қувват мосламалари" #: js/ui/status/power.js:77 msgid "Fully Charged" msgstr "Тўлиқ зарядланди" #. 0 is reported when UPower does not have enough data #. to estimate battery life #: js/ui/status/power.js:84 js/ui/status/power.js:90 msgid "Estimating…" msgstr "Баҳоланяпти..." #. Translators: this is : Remaining () #: js/ui/status/power.js:98 #, javascript-format msgid "%d∶%02d Remaining (%d %%)" msgstr "%d∶%02d қолди (%d%%)" #. Translators: this is : Until Full () #: js/ui/status/power.js:103 #, javascript-format msgid "%d∶%02d Until Full (%d %%)" msgstr "Тўлишига %d∶%02d қолди (%d%%)" #: js/ui/status/power.js:131 js/ui/status/power.js:133 #, javascript-format msgid "%d %%" msgstr "%d %%" #. The menu only appears when airplane mode is on, so just #. statically build it as if it was on, rather than dynamically #. changing the menu contents. #: js/ui/status/rfkill.js:88 msgid "Airplane Mode On" msgstr "Самолёт режими ёнган" #: js/ui/status/system.js:351 msgid "Switch User" msgstr "Фойдаланувчини алмаштириш" #: js/ui/status/system.js:356 msgid "Log Out" msgstr "Сеансни якунлаш" #: js/ui/status/system.js:361 msgid "Account Settings" msgstr "Профил созламалари" #: js/ui/status/system.js:378 msgid "Orientation Lock" msgstr "Ориентацияни қулфлаш" #: js/ui/status/system.js:386 msgid "Suspend" msgstr "Тўхтатиб қўймоқ" #: js/ui/status/system.js:389 msgid "Power Off" msgstr "Ўчган" #: js/ui/status/volume.js:127 msgid "Volume changed" msgstr "Овоз баландлиги ўзгарди" #: js/ui/status/volume.js:162 msgid "Volume" msgstr "Товуш" #: js/ui/unlockDialog.js:67 msgid "Log in as another user" msgstr "Бошқа фойдаланувчи сифатида кириш" #: js/ui/unlockDialog.js:84 msgid "Unlock Window" msgstr "Ойнани қулфини очиш" #: js/ui/viewSelector.js:159 msgid "Applications" msgstr "Дастурлар" #: js/ui/viewSelector.js:163 msgid "Search" msgstr "Қидириш" #: js/ui/windowAttentionHandler.js:20 #, javascript-format msgid "“%s” is ready" msgstr "\"%s\" тайёр" #: js/ui/windowManager.js:63 msgid "Do you want to keep these display settings?" msgstr "Ушбу экран мосламаларини сақламоқчимисиз?" #. Translators: this and the following message should be limited in lenght, #. to avoid ellipsizing the labels. #. #: js/ui/windowManager.js:82 msgid "Revert Settings" msgstr "Мосламаларни ўз ҳолига қайтариш" #: js/ui/windowManager.js:85 msgid "Keep Changes" msgstr "Ўзгаришларни сақлаш" #: js/ui/windowManager.js:103 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "Мослама ўзгаришлари %d сониядан кейин ўз ҳолига қайтади" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:658 #, javascript-format msgid "%d x %d" msgstr "%d x %d" #: js/ui/windowMenu.js:34 msgid "Minimize" msgstr "Йиғиш" #: js/ui/windowMenu.js:41 msgid "Unmaximize" msgstr "Олдинги ўлчамига қайтариш" #: js/ui/windowMenu.js:45 msgid "Maximize" msgstr "Катталаштирмоқ" #: js/ui/windowMenu.js:52 msgid "Move" msgstr "Кўчириш" #: js/ui/windowMenu.js:58 msgid "Resize" msgstr "Ўлчамини ўзгартириш" #: js/ui/windowMenu.js:65 msgid "Move Titlebar Onscreen" msgstr "Сарлавҳа панелини экранга кўчириш" #: js/ui/windowMenu.js:70 msgid "Always on Top" msgstr "Доим тепада" #: js/ui/windowMenu.js:89 msgid "Always on Visible Workspace" msgstr "Доим кўриниб турган иш жойига" #: js/ui/windowMenu.js:105 msgid "Move to Workspace Left" msgstr "Чапдаги иш жойига кўчириш" #: js/ui/windowMenu.js:110 msgid "Move to Workspace Right" msgstr "Ўнгдаги иш жойига кўчириш" #: js/ui/windowMenu.js:115 msgid "Move to Workspace Up" msgstr "Тепадаги иш жойига кўчириш" #: js/ui/windowMenu.js:120 msgid "Move to Workspace Down" msgstr "Пастдаги иш жойига кўчириш" #: js/ui/windowMenu.js:136 msgid "Move to Monitor Up" msgstr "Тепадаги мониторга кўчириш" #: js/ui/windowMenu.js:142 msgid "Move to Monitor Down" msgstr "Пастдаги мониторга кўчириш" #: js/ui/windowMenu.js:148 msgid "Move to Monitor Left" msgstr "Чапдаги мониторга кўчириш" #: js/ui/windowMenu.js:154 msgid "Move to Monitor Right" msgstr "Ўнгдаги мониторга кўчириш" #: src/calendar-server/evolution-calendar.desktop.in:3 msgid "Evolution Calendar" msgstr "Evolution тақвими" #. Translators: Do NOT translate or transliterate this text (this is an icon file name)! #: src/calendar-server/evolution-calendar.desktop.in:6 msgid "evolution" msgstr "evolution" #. translators: #. * The number of sound outputs on a particular device #: src/gvc/gvc-mixer-control.c:1873 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%uта товуш чиқиш йўллари" #. translators: #. * The number of sound inputs on a particular device #: src/gvc/gvc-mixer-control.c:1883 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%uта товуш кириш йўллари" #: src/gvc/gvc-mixer-control.c:2738 msgid "System Sounds" msgstr "Система товушлари" #: src/main.c:381 msgid "Print version" msgstr "Босма учун версия" #: src/main.c:387 msgid "Mode used by GDM for login screen" msgstr "Сеансга кириш ойнаси учун GDM ишлатадиган режим" #: src/main.c:393 msgid "Use a specific mode, e.g. \"gdm\" for login screen" msgstr "Аниқ бир режимни, масалан кириш экрани учун \"gdm\"ни, ишлатиш" #: src/main.c:399 msgid "List possible modes" msgstr "Мавжуд режимлар рўйхати" #: src/shell-app.c:270 msgctxt "program" msgid "Unknown" msgstr "Номаълум" #: src/shell-app.c:511 #, c-format msgid "Failed to launch “%s”" msgstr "\"%s\"ни ишга тушириб бўлмади" #: src/shell-keyring-prompt.c:730 msgid "Passwords do not match." msgstr "Махфий сўзлар мос келмади." #: src/shell-keyring-prompt.c:738 msgid "Password cannot be blank" msgstr "Махфий сўз бўш бўлмаслиги керак" #: src/shell-polkit-authentication-agent.c:353 msgid "Authentication dialog was dismissed by the user" msgstr "Ҳақиқийлигини аниқловчи диалог ойна фойдаланувчи томонидан ёпилди" #~ msgid "Show the message tray" #~ msgstr "Хабарлар панелини кўрсатиш" #~ msgid "GNOME Shell (wayland compositor)" #~ msgstr "GNOME Shell (wayland улагичи)" #~ msgid "Show the week date in the calendar" #~ msgstr "Тақвимда ҳафта тартибини кўрсатиш" #~ msgid "If true, display the ISO week date in the calendar." #~ msgstr "Агар белгиланса, тақвимда ISO ҳафта тартибини кўрсатилади." #~ msgid "Captive Portal" #~ msgstr "Captive Portal" #~ msgctxt "event list time" #~ msgid "%H∶%M" #~ msgstr "%H∶%M" #~ msgctxt "event list time" #~ msgid "%l∶%M %p" #~ msgstr "%l∶%M %p" #~ msgctxt "list sunday" #~ msgid "Su" #~ msgstr "Як" #~ msgctxt "list monday" #~ msgid "M" #~ msgstr "Д" #~ msgctxt "list tuesday" #~ msgid "T" #~ msgstr "С" #~ msgctxt "list wednesday" #~ msgid "W" #~ msgstr "Ч" #~ msgctxt "list thursday" #~ msgid "Th" #~ msgstr "П" #~ msgctxt "list friday" #~ msgid "F" #~ msgstr "Ж" #~ msgctxt "list saturday" #~ msgid "S" #~ msgstr "Ш" #~ msgid "Nothing Scheduled" #~ msgstr "Ҳеч нарса режалаштирилмаган" #~ msgid "Today" #~ msgstr "Бугун" #~ msgid "Tomorrow" #~ msgstr "Эртага" #~ msgid "This week" #~ msgstr "Шу ҳафта" #~ msgid "Next week" #~ msgstr "Келаси ҳафта" #~ msgid "Removable Devices" #~ msgstr "Олинадиган ускуналар" #~ msgid "Eject" #~ msgstr "Чиқариш" #~ msgid "Invitation" #~ msgstr "Таклифнома" #~ msgid "Call" #~ msgstr "Телефон қилиш" #~ msgid "File Transfer" #~ msgstr "Файлни кўчириш" #~ msgid "Chat" #~ msgstr "Чатлашиш" #~ msgid "Unmute" #~ msgstr "Овозини чиқариш" #~ msgid "Mute" #~ msgstr "Овозини ўчириш" #~ msgid "Invitation to %s" #~ msgstr "%sга таклифнома" #~ msgid "%s is inviting you to join %s" #~ msgstr "%s сизни %sга қўшилишга таклиф қиляпти" #~ msgid "Decline" #~ msgstr "Рад этмоқ" #~ msgid "Accept" #~ msgstr "Қабул қилмоқ" #~ msgid "Video call from %s" #~ msgstr "%sдан видео қўнғироқ" #~ msgid "Call from %s" #~ msgstr " %sдан қўнғироқ" #~ msgid "Answer" #~ msgstr "Жавоб" #~ msgid "%s is sending you %s" #~ msgstr "%s сизга %sни жўнатяпти" #~ msgid "%s would like permission to see when you are online" #~ msgstr "%s синзни онлайн бўлганингизда кўриш учун рухсат сўраяпти" #~ msgid "Authentication failed" #~ msgstr "Ҳақиқийлигини текшириб бўлмади" #~ msgid "Encryption error" #~ msgstr "Шифрлашда хатолик" #~ msgid "Certificate not provided" #~ msgstr "Гувоҳнома берилмаган" #~ msgid "Certificate untrusted" #~ msgstr "Гувоҳнома ишонарсиз" #~ msgid "Certificate expired" #~ msgstr "Гувоҳнома эскирган" #~ msgid "Certificate not activated" #~ msgstr "Гувоҳнома фаоллаштирилмаган" #~ msgid "Certificate hostname mismatch" #~ msgstr "Гувоҳнома тугунининг номи мос келмади" #~ msgid "Certificate fingerprint mismatch" #~ msgstr "Гувоҳнома тамғаси мос келмади" #~ msgid "Certificate self-signed" #~ msgstr "Ўзи имзоланган гувоҳнома" #~ msgid "Status is set to offline" #~ msgstr "Статусингиз офлайн қилинди" #~ msgid "Encryption is not available" #~ msgstr "Шифрлаш мавжуд эмас" #~ msgid "Certificate is invalid" #~ msgstr "Хато гувоҳнома" #~ msgid "Connection has been refused" #~ msgstr "Алоқа рад жавобини олди" #~ msgid "Connection can't be established" #~ msgstr "Алоқа қилиб бўлмади" #~ msgid "Connection has been lost" #~ msgstr "Алоқа йўқотилди" #~ msgid "This account is already connected to the server" #~ msgstr "Бу ҳисоб аллақачон серверга уланган" #~ msgid "" #~ "Connection has been replaced by a new connection using the same resource" #~ msgstr "Алоқа олдинги манбани ишлатган ҳолда янгиси билан алмаштирилди" #~ msgid "The account already exists on the server" #~ msgstr "Бу ҳисоб аллақачон серверда бор" #~ msgid "Server is currently too busy to handle the connection" #~ msgstr "Сервер жуда бандлиги туфайли алоқани ушлаб туролмайди" #~ msgid "Certificate has been revoked" #~ msgstr "Гувоҳнома бекор қилинган" #~ msgid "" #~ "Certificate uses an insecure cipher algorithm or is cryptographically weak" #~ msgstr "" #~ "Гувоҳнома хавфсиз бўлмаган шифрлаш алгоритмини ишлатади ёки у " #~ "криптографик кучсиз" #~ msgid "" #~ "The length of the server certificate, or the depth of the server " #~ "certificate chain, exceed the limits imposed by the cryptography library" #~ msgstr "" #~ "Сервер гувоҳномасининг узунлиги ёки сервер гувоҳнома занжирининг " #~ "чуқурлиги криптография кутубхонаси қўйган чегарадан ошиб кетган" #~ msgid "Internal error" #~ msgstr "Ички хато" #~ msgid "Unable to connect to %s" #~ msgstr "%sга уланиб бўлмади" #~ msgid "View account" #~ msgstr "Ҳисобни кўриш" #~ msgid "Open Calendar" #~ msgstr "Calendarни очиш" #~ msgid "Date & Time Settings" #~ msgstr "Сана ҳамда Вақт Мосламалари" #~ msgid "Open" #~ msgstr "Очиш" #~ msgid "Remove" #~ msgstr "Олиб ташлаш" #~ msgid "Clear Messages" #~ msgstr "Хатларни тозалаш" #~ msgid "Notification Settings" #~ msgstr "Хабарнома мосламалари" #~ msgid "Tray Menu" #~ msgstr "Панел менюси" #~ msgid "No Messages" #~ msgstr "Бирорта хат йўқ" #~ msgid "Message Tray" #~ msgstr "Хатлар панели" #~ msgid "%d Connected Device" #~ msgid_plural "%d Connected Devices" #~ msgstr[0] "%dта уланган ускуналар" #~ msgid "Authentication required" #~ msgstr "ҳақиқийлигини аниқлаш талаб қилинади" #~ msgid "Use as Internet connection" #~ msgstr "Интернет алоқаси сифатида ишлатиш" #~ msgid "UPS" #~ msgstr "UPS" #~ msgid "Battery" #~ msgstr "Батарея" #~ msgid "Airplane Mode" #~ msgstr "Самолёт режими" #~ msgid "On" #~ msgstr "Ёнган" #~ msgid "Select an extension to configure using the combobox above." #~ msgstr "" #~ "Тепадаги очилувчи рўйхатдан фойдаланиб созламоқчи бўлган кенгайтмангизни " #~ "танланг." #~ msgid "calendar:MY" #~ msgstr "Тақвим:MY" #~ msgid "%A, %H:%M" #~ msgstr "%A, %H:%M" #~ msgid "%B %d, %H:%M" #~ msgstr "%B %d, %H:%M" #~ msgid "%B %d %Y, %H:%M " #~ msgstr "%B %d %Y, %H:%M " #~ msgid "Authorization request from %s" #~ msgstr "%sдан ҳақиқийлигини текширишга ижозат" #~ msgid "Device %s wants to pair with this computer" #~ msgstr "%s ускунаси ушбу компьютер билан жуфтлашмоқчи" #~ msgid "Allow" #~ msgstr "Рухсат бериш" #~ msgid "Deny" #~ msgstr "Рад этиш" #~ msgid "Device %s wants access to the service '%s'" #~ msgstr "\"%s\" ускуна \"%s\" хизматдан фойдаланмоқчи" #~ msgid "Grant this time only" #~ msgstr "Фақат шу сафар рухсат бериш" #~ msgid "Reject" #~ msgstr "Рад этиш" #~ msgid "Pairing confirmation for %s" #~ msgstr "%s учун жуфтлаш тасдиғи" #~ msgid "" #~ "Please confirm whether the Passkey '%06d' matches the one on the device." #~ msgstr "Илтимос \"%06d\" калити ускунадагига мос келишини тасдиқланг." #~ msgid "Matches" #~ msgstr "Мос келади" #~ msgid "Does not match" #~ msgstr "Мос келмайди" #~ msgid "Pairing request for %s" #~ msgstr "%s учун жуфтлашга ижозат" #~ msgid "Please enter the PIN mentioned on the device." #~ msgstr "Илтимос ускунадаги PINни киритинг." #~ msgid "OK" #~ msgstr "Хўп" #~ msgid "" #~ "Sorry, no wisdom for you today:\n" #~ "%s" #~ msgstr "" #~ "Узр, бугун сиз учун донолик йўқ:\n" #~ "%s" #~ msgid "%s the Oracle says" #~ msgstr "\"%s\" дейди пайғамбар" 0707010000026C000081A40000000000000000000000016712993F0001E48B000000000000000000000000000000000000001A00000000gnome-shell-47.1/po/vi.po# Vietnamese translation for gnome-shell. # Bản dịch tiếng Việt dành cho gnome-shell. # Copyright (C) 2016 GNOME i18n Project for Vietnamese. # This file is distributed under the same license as the gnome-shell package. # Nguyễn Thái Ngọc Duy , 2010-2013. # Ngô Chin , 2011. # Trần Ngọc Quân , 2013-2023. # msgid "" msgstr "" "Project-Id-Version: gnome-shell main\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" "POT-Creation-Date: 2023-11-11 06:48+0000\n" "PO-Revision-Date: 2023-11-11 13:57+0700\n" "Last-Translator: Trần Ngọc Quân \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: Gtranslator 42.0\n" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "Chạy phần mềm" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate favorite app 1" msgstr "Kích hoạt ứng dụng ưa thích 1" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate favorite app 2" msgstr "Kích hoạt ứng dụng ưa thích 2" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate favorite app 3" msgstr "Kích hoạt ứng dụng ưa thích 3" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate favorite app 4" msgstr "Kích hoạt ứng dụng ưa thích 4" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate favorite app 5" msgstr "Kích hoạt ứng dụng ưa thích 5" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate favorite app 6" msgstr "Kích hoạt ứng dụng ưa thích 6" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate favorite app 7" msgstr "Kích hoạt ứng dụng ưa thích 7" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate favorite app 8" msgstr "Kích hoạt ứng dụng ưa thích 8" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate favorite app 9" msgstr "Kích hoạt ứng dụng ưa thích 9" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2187 msgid "Screenshots" msgstr "Chụp màn hình" #: data/50-gnome-shell-screenshots.xml:9 #: data/org.gnome.shell.gschema.xml.in:238 msgid "Take a screenshot interactively" msgstr "Chụp màn hình kiểu tương tác" #: data/50-gnome-shell-screenshots.xml:12 #: data/org.gnome.shell.gschema.xml.in:250 msgid "Take a screenshot" msgstr "Chụp màn hình" #: data/50-gnome-shell-screenshots.xml:15 #: data/org.gnome.shell.gschema.xml.in:246 msgid "Take a screenshot of a window" msgstr "Chụp hình cửa sổ" #: data/50-gnome-shell-screenshots.xml:18 #: data/org.gnome.shell.gschema.xml.in:242 msgid "Record a screencast interactively" msgstr "Quay phim màn hình kiểu tương tác" #: data/50-gnome-shell-system.xml:6 msgid "System" msgstr "Hệ thống" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "Hiển thị danh sách thông báo" #: data/50-gnome-shell-system.xml:12 msgid "Open the quick settings menu" msgstr "Mở trình đơn cài đặt nhanh" #: data/50-gnome-shell-system.xml:15 msgid "Focus the active notification" msgstr "Tập trung vào thông báo hoạt động" #: data/50-gnome-shell-system.xml:18 msgid "Show the overview" msgstr "Hiển thị tổng quan" #: data/50-gnome-shell-system.xml:21 msgid "Show all apps" msgstr "Hiện mọi ứng dụng" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "Hệ vỏ GNOME" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "Quản lý cửa sổ và chạy ứng dụng" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" "Bật công cụ nội bộ, hữu dụng với người phát triển và kiểm thử, qua Alt-F2" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" "Cho phép truy cập công cụ theo dõi và tìm lỗi nội bộ qua hộp thoại Alt-F2." #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "Mã số thiết bị của phần mở rộng cần bật" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "Phần mở rộng Hệ vỏ GNOME có thuộc tính mã số thiết bị; khóa này liệt kê danh " "sách phần mở rộng nên nạp. Bất kỳ phần mở rộng nào muốn nạp phải nằm trong " "danh sách này. Bạn có thể thao tác trên danh sách này với phương thức DBus " "EnableExtension và DisableExtension trên org.gnome.Shell." #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "Mã số thiết bị của phần mở rộng buộc tắt đi" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" "Phần mở rộng Hệ vỏ GNOME có thuộc tính mã số thiết bị UUID; khóa này liệt kê " "danh sách phần mở rộng nên bị tắt, ngay cả khi được tải như là một bộ phận " "của chế độ hiện tại. Bạn có thể thao tác trên danh sách này với phương thức " "DBus EnableExtension và DisableExtension trên org.gnome.Shell. Khóa này nhận " "ưu tiên hơn cài đặt “enabled-extensions”." #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "Tắt phần mở rộng người dùng" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" "Tắt tất cả các phần mở rộng người dùng đã bật mà không ảnh hưởng đến cài đặt " "“enabled-extension”." #: data/org.gnome.shell.gschema.xml.in:45 msgid "Disables the validation of extension version compatibility" msgstr "Tắt kiểm tra tương thích phiên bản của phần mở rộng" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "Hệ vỏ GNOME sẽ chỉ tải những phần mở rộng cái mà yêu cầu phải hỗ trợ phiên " "bản hiện đang chạy. Bật tùy chọn này sẽ tắt việc kiểm tra và thử tải tất cả " "những phần mở rộng mà không cần quan tâm đến việc nó hỗ trợ phiên bản nào." #: data/org.gnome.shell.gschema.xml.in:54 msgid "List of desktop file IDs for favorite applications" msgstr "Danh sách ID tập tin desktop của ứng dụng yêu thích" #: data/org.gnome.shell.gschema.xml.in:55 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" "Ứng dụng tương ứng với những định danh này sẽ được hiển thị ở vùng ưa thích." #: data/org.gnome.shell.gschema.xml.in:62 msgid "History for command (Alt-F2) dialog" msgstr "Hộp thoại lịch sử lệnh (Alt-F2)" #. Translators: looking glass is a debugger and inspector tool, see https://wiki.gnome.org/Projects/GnomeShell/LookingGlass #: data/org.gnome.shell.gschema.xml.in:67 msgid "History for the looking glass dialog" msgstr "Lịch sử hộp thoại kính tìm kiếm" #: data/org.gnome.shell.gschema.xml.in:71 msgid "Always show the “Log out” menu item in the user menu." msgstr "Luôn hiện mục “Đăng xuất” trên trình đơn người dùng." #: data/org.gnome.shell.gschema.xml.in:72 msgid "" "This key overrides the automatic hiding of the “Log out” menu item in single-" "user, single-session situations." msgstr "" "Khóa này sẽ đè lên việc tự động ẩn trình đơn “Đăng xuất” ở chế độ đơn-người-" "dùng, đơn-phiên-làm-việc." #: data/org.gnome.shell.gschema.xml.in:79 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "" "Hoặc là ghi nhớ mật khẩu dành cho việc gắn hệ thống tập tin đã mã hóa hoặc " "hệ thống tập tin trên máy chủ" #: data/org.gnome.shell.gschema.xml.in:80 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "Hệ vỏ sẽ yêu cầu mật khẩu khi có thư mục được mã hóa hay hệ thống tập tin " "máy mạng được gắn. Nếu mật khẩu có thể ghi lại để dùng trong lần sau, hộp " "dấu kiểm “Nhớ mật khẩu” sẽ xuất hiện. Khóa này đặt trạng thái mặc định cho " "hộp dấu kiểm." #: data/org.gnome.shell.gschema.xml.in:89 msgid "The last selected non-default power profile" msgstr "Chế độ năng lượng không mặc định được sử dụng gần đây nhất" #: data/org.gnome.shell.gschema.xml.in:90 msgid "" "Some systems support more than two power profiles. In order to still support " "toggling between two profiles, this key records the last selected non-" "default profile." msgstr "" "Một số hệ thống hỗ trợ nhiều hơn hai chế độ năng lượng. Để duy trì hỗ trợ " "việcchuyển qua lại giữa hai chế độ năng lượng, khóa này sẽ lưu chế độ không " "mặc đinh được sử dụng gần đây nhất." #: data/org.gnome.shell.gschema.xml.in:98 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "Phiên bản cuối hộp thoại “Chào mừng GNOME” sẽ được hiển thị" #: data/org.gnome.shell.gschema.xml.in:99 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can " "be used to effectively disable the dialog." msgstr "" "Khóa này xác định phiên bản nào hộp thoại \"Chào mừng bạn đến với GNOME\" " "được hiển thị lần cuối. Một chuỗi trống đại diện cho phiên bản cũ nhất có " "thể và một số cực lớn sẽ đại diện cho các phiên bản chưa tồn tại. Con số " "khổng lồ này có thể được sử dụng để vô hiệu hóa hộp thoại một cách hiệu quả." #: data/org.gnome.shell.gschema.xml.in:132 msgid "Layout of the app picker" msgstr "Bố cục của bộ chọn ứng dụng" #: data/org.gnome.shell.gschema.xml.in:133 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" msgstr "" "Bố cục của bộ chọn ứng dụng. Mỗi mục trong mảng là một trang. Các trang được " "lưu trữ theo thứ tự chúng xuất hiện trong Hệ vỏ GNOME. Mỗi trang chứa một " "cặp “id ứng dụng” → 'dữ liệu'. Hiện tại, các giá trị sau được lưu trữ dưới " "dạng 'dữ liệu': • “position”: vị trí của biểu tượng ứng dụng trong trang" #: data/org.gnome.shell.gschema.xml.in:152 #: data/org.gnome.shell.gschema.xml.in:159 msgid "Keybinding to shift between overview states" msgstr "Tổ hợp phím để dịch chuyển giữa các trạng thái tổng quan" #: data/org.gnome.shell.gschema.xml.in:153 msgid "Keybinding to shift between session, window picker and app grid" msgstr "Tổ hợp phím để chuyển đổi giữa phiên, bộ chọn cửa sổ và lưới ứng dụng" #: data/org.gnome.shell.gschema.xml.in:160 msgid "Keybinding to shift between app grid, window picker and session" msgstr "" "Tổ hợp phím để chuyển đổi giữa lưới ứng dụng, bộ chọn cửa sổ và phiên làm " "việc" #: data/org.gnome.shell.gschema.xml.in:166 msgid "Keybinding to open the “Show Applications” view" msgstr "Tổ hợp phím để hiện “Ứng dụng”" #: data/org.gnome.shell.gschema.xml.in:167 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "Tổ hợp phím để hiện “Ứng dụng” trong “Tổng quan hoạt động”." #: data/org.gnome.shell.gschema.xml.in:174 msgid "Keybinding to open the overview" msgstr "Tổ hợp phím để mở tổng quan" #: data/org.gnome.shell.gschema.xml.in:175 msgid "Keybinding to open the Activities Overview." msgstr "Tổ hợp phím để mở tổng quan hoạt động." #: data/org.gnome.shell.gschema.xml.in:181 msgid "Keybinding to toggle the visibility of the notification list" msgstr "Tổ hợp phím để bật/tắt hiển thị danh sách thông báo" #: data/org.gnome.shell.gschema.xml.in:182 msgid "Keybinding to toggle the visibility of the notification list." msgstr "Tổ hợp phím để bật/tắt hiển thị danh sách thông báo." #: data/org.gnome.shell.gschema.xml.in:188 msgid "Keybinding to toggle the quick settings menu" msgstr "Tổ hợp phím để bật/tắt trình đơn cài đặt nhanh" #: data/org.gnome.shell.gschema.xml.in:189 msgid "Keybinding to toggle the quick settings menu." msgstr "Tổ hợp phím để bật/tắt trình đơn cài đặt nhanh." #: data/org.gnome.shell.gschema.xml.in:195 msgid "Keybinding to focus the active notification" msgstr "Tổ hợp phím để tập trung vào thông báo hoạt động" #: data/org.gnome.shell.gschema.xml.in:196 msgid "Keybinding to focus the active notification." msgstr "Tổ hợp phím để tập trung vào thông báo hoạt động." #: data/org.gnome.shell.gschema.xml.in:202 msgid "Switch to application 1" msgstr "Chuyển sang ứng dụng 1" #: data/org.gnome.shell.gschema.xml.in:206 msgid "Switch to application 2" msgstr "Chuyển sang ứng dụng 2" #: data/org.gnome.shell.gschema.xml.in:210 msgid "Switch to application 3" msgstr "Chuyển sang ứng dụng 3" #: data/org.gnome.shell.gschema.xml.in:214 msgid "Switch to application 4" msgstr "Chuyển sang ứng dụng 4" #: data/org.gnome.shell.gschema.xml.in:218 msgid "Switch to application 5" msgstr "Chuyển sang ứng dụng 5" #: data/org.gnome.shell.gschema.xml.in:222 msgid "Switch to application 6" msgstr "Chuyển sang ứng dụng 6" #: data/org.gnome.shell.gschema.xml.in:226 msgid "Switch to application 7" msgstr "Chuyển sang ứng dụng 7" #: data/org.gnome.shell.gschema.xml.in:230 msgid "Switch to application 8" msgstr "Chuyển sang ứng dụng 8" #: data/org.gnome.shell.gschema.xml.in:234 msgid "Switch to application 9" msgstr "Chuyển sang ứng dụng 9" #: data/org.gnome.shell.gschema.xml.in:259 #: data/org.gnome.shell.gschema.xml.in:286 msgid "Limit switcher to current workspace." msgstr "Giới hạn bộ chuyển đổi về không gian làm việc hiện tại." #: data/org.gnome.shell.gschema.xml.in:260 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "Nếu đặt, chỉ những ứng dụng có cửa sổ nằm trong không gian làm việc hiện tại " "được hiển thị trên bộ chuyển. Nếu không, tất cả các ứng dụng sẽ được hiển " "thị." #: data/org.gnome.shell.gschema.xml.in:277 msgid "The application icon mode." msgstr "Chế độ biểu tượng ứng dụng." #: data/org.gnome.shell.gschema.xml.in:278 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-" "only” (shows only the application icon) or “both”." msgstr "" "Cấu hình về cách hiển thị các cửa sổ ở bảng chuyển đổi. Các kiểu có thể là " "“thumbnail-only” (hiển thị ảnh thu nhỏ của cửa sổ), “app-icon-only” (chỉ " "hiển thị biểu tượng của ứng dụng) hoặc “both” (cả hai)." #: data/org.gnome.shell.gschema.xml.in:287 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "Nếu được đặt, chỉ những cửa sổ nằm trong không gian làm việc hiện tại được " "hiển thị ở bộ chuyển. Nếu không, tất cả các cửa sổ sẽ được hiển thị." #: data/org.gnome.shell.gschema.xml.in:297 msgid "Locations" msgstr "Địa điểm" #: data/org.gnome.shell.gschema.xml.in:298 msgid "The locations to show in world clocks" msgstr "Các vị trí để hiển thị trong đồng hồ thế giới" #: data/org.gnome.shell.gschema.xml.in:308 msgid "Automatic location" msgstr "Vị trí tự động" #: data/org.gnome.shell.gschema.xml.in:309 msgid "Whether to fetch the current location or not" msgstr "Có nên lấy về vị trí hiện tại hay không" #: data/org.gnome.shell.gschema.xml.in:316 msgid "Location" msgstr "Địa điểm" #: data/org.gnome.shell.gschema.xml.in:317 msgid "The location for which to show a forecast" msgstr "Vị trí muốn hiển thị dự báo" #. Keep in sync with subprojects/extensions-app #: data/org.gnome.Shell.Extensions.desktop.in.in:5 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/js/main.js:218 #: subprojects/extensions-app/data/ui/extensions-window.ui:18 #: subprojects/extensions-app/data/ui/extensions-window.ui:82 msgid "Extensions" msgstr "Phần mở rộng" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "Đăng nhập mạng" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:143 msgid "Something’s gone wrong" msgstr "Đã có sự cố xảy ra" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" "Chúng tôi rất tiếc, đã có sự cố: các cài đặt cho phần mở rộng này không thể " "được hiển thị. Chúng tôi khuyến nghị bạn báo cáo lỗi này đến tác gỉa của " "phần mở rộng." #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "Chi tiết kỹ thuật" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "Trang chủ" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 msgid "Visit extension homepage" msgstr "Đến trang chủ của phần mở rộng" #: js/gdm/authPrompt.js:151 js/ui/audioDeviceSelection.js:66 #: js/ui/components/networkAgent.js:115 js/ui/components/polkitAgent.js:146 #: js/ui/endSessionDialog.js:443 js/ui/extensionDownloader.js:256 #: js/ui/shellMountOperation.js:387 js/ui/shellMountOperation.js:397 #: subprojects/extensions-app/js/main.js:179 msgid "Cancel" msgstr "Thôi" #: js/gdm/authPrompt.js:317 js/ui/components/networkAgent.js:215 #: js/ui/components/networkAgent.js:235 js/ui/components/networkAgent.js:267 #: js/ui/components/networkAgent.js:300 js/ui/components/networkAgent.js:339 #: js/ui/components/networkAgent.js:352 js/ui/components/polkitAgent.js:288 #: js/ui/shellMountOperation.js:337 msgid "Password" msgstr "Mật khẩu" #: js/gdm/loginDialog.js:324 msgid "Choose Session" msgstr "Chọn phiên làm việc" #: js/gdm/loginDialog.js:469 msgid "Not listed?" msgstr "Không có trong danh sách?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:938 #, javascript-format msgid "(e.g., user or %s)" msgstr "(ví dụ: tài khoản hoặc %s)" #: js/gdm/loginDialog.js:943 js/ui/components/networkAgent.js:259 #: js/ui/components/networkAgent.js:294 js/ui/components/networkAgent.js:328 msgid "Username" msgstr "Tài khoản" #: js/gdm/loginDialog.js:1267 msgid "Login Window" msgstr "Cửa sổ đăng nhập" #: js/gdm/util.js:402 msgid "Authentication error" msgstr "Lỗi xác thực" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:584 msgid "(or swipe finger across reader)" msgstr "(hoặc quẹt ngón tay xuyên suốt bộ đọc)" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:589 msgid "(or place finger on reader)" msgstr "(hoặc đặt ngón tay trên bộ đọc)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:91 msgctxt "search-result" msgid "Power Off" msgstr "Tắt máy" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:94 msgid "power off;poweroff;shutdown;halt;stop" msgstr "power off;shutdown;halt;stop;tắt máy;tat may;tắt nguồn;tat nguon" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:99 msgctxt "search-result" msgid "Restart" msgstr "Khởi động lại" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:102 msgid "reboot;restart;" msgstr "reboot;restart;khởi động lại;khoi dong lai" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:107 msgctxt "search-result" msgid "Lock Screen" msgstr "Khóa màn hình" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:110 msgid "lock screen" msgstr "lock screen;khóa màn hình;khoa man hinh" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:115 msgctxt "search-result" msgid "Log Out" msgstr "Đăng xuất" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:118 msgid "logout;log out;sign off" msgstr "logout;sign off;đăng xuất;dang xuat" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:123 msgctxt "search-result" msgid "Suspend" msgstr "Tạm dừng" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:126 msgid "suspend;sleep" msgstr "suspend;sleep;tạm dừng;tam dung;ngủ;ngu" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:131 msgctxt "search-result" msgid "Switch User" msgstr "Chuyển người dùng" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:134 msgid "switch user" msgstr "switch user; chuyển người dùng;chuyen nguoi dung" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:141 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "" "lock orientation;screen;rotation;khóa hướng;khoa huong;màn hinh;man hinh;" "xoay;quay" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:146 msgctxt "search-result" msgid "Take a Screenshot" msgstr "Chụp màn hình" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:149 msgid "screenshot;screencast;snip;capture;record" msgstr "" "screenshot;screencast;snip;capture;record;chụp màn hình;chup man hinh;ghi " "hình;ghi hinh;chụp;chup" #: js/misc/systemActions.js:249 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "Mở khóa hướng màn hình" #: js/misc/systemActions.js:250 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "Khóa hướng màn hình" #: js/misc/util.js:139 msgid "Command not found" msgstr "Không tìm thấy lệnh" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:179 msgid "Could not parse command:" msgstr "Không thể phân tích lệnh:" #: js/misc/util.js:187 #, javascript-format msgid "Execution of “%s” failed:" msgstr "Gặp lỗi khi thực thi “%s”:" #: js/misc/dateUtils.js:69 msgid "Just now" msgstr "Vừa xong" #: js/misc/dateUtils.js:72 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d phút trước" #: js/misc/dateUtils.js:79 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d giờ trước" #: js/misc/dateUtils.js:85 js/ui/dateMenu.js:182 msgid "Yesterday" msgstr "Hôm qua" #: js/misc/dateUtils.js:88 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d ngày trước" #: js/misc/dateUtils.js:95 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d tuần trước" #: js/misc/dateUtils.js:102 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%d tháng trước" #: js/misc/dateUtils.js:108 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "%d năm trước" #. Translators: Time in 24h format #: js/misc/dateUtils.js:155 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/dateUtils.js:161 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "%H:%M, hôm qua" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/dateUtils.js:167 #, no-c-format msgid "%A, %H∶%M" msgstr "%H∶%M, %A" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/dateUtils.js:173 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%-d %B, %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/dateUtils.js:179 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%-d %B %Y, %H∶%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/dateUtils.js:184 msgid "%l∶%M %p" msgstr "%l∶%M %p" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/dateUtils.js:190 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "%l∶%M %p, hôm qua" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/dateUtils.js:196 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%l∶%M %p, %A" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/dateUtils.js:202 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%-d %B, %l∶%M %p" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/dateUtils.js:208 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%-d %B %Y, %l∶%M %p" #: js/portalHelper/main.js:98 msgid "Your connection seems to be secure" msgstr "Kết nối của bạn có vẻ an toàn" #: js/portalHelper/main.js:104 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "Kết nối của bạn đến điểm truy cập này không an toàn. Mật khẩu hay các thông " "tin bạn nhập vào trang này có thể bị xem bởi những người gần bạn." #: js/portalHelper/main.js:115 msgid "Hotspot Login" msgstr "Đăng nhập điểm truy cập" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:45 js/ui/inhibitShortcutsDialog.js:92 msgid "Deny" msgstr "Từ chối" #: js/ui/accessDialog.js:46 js/ui/inhibitShortcutsDialog.js:101 msgid "Allow" msgstr "Cho phép" #: js/ui/appDisplay.js:1777 msgid "Unnamed Folder" msgstr "Thư mục không tên" #: js/ui/appFavorites.js:166 #, javascript-format msgid "%s has been pinned to the dash." msgstr "%s đã được gắn vào chỗ gắn ứng dụng." #: js/ui/appFavorites.js:199 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "%s đã được tháo khỏi chỗ gắn ứng dụng." #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:51 msgid "Open Windows" msgstr "Mở Cửa sổ" #: js/ui/appMenu.js:59 msgid "New Window" msgstr "Cửa sổ mới" #: js/ui/appMenu.js:86 msgid "App Details" msgstr "Chi tiết ứng dụng" #: js/ui/appMenu.js:102 msgid "Quit" msgstr "Thoát" #: js/ui/appMenu.js:162 js/ui/dash.js:250 msgid "Unpin" msgstr "Tháo ra" #: js/ui/appMenu.js:163 msgid "Pin to Dash" msgstr "Gắn vào chỗ gắn" #: js/ui/appMenu.js:180 msgid "Launch using Integrated Graphics Card" msgstr "Khởi chạy sử dụng Card đồ họa tích hợp" #: js/ui/appMenu.js:181 msgid "Launch using Discrete Graphics Card" msgstr "Khởi chạy sử dụng Card đồ họa rời" #: js/ui/audioDeviceSelection.js:46 msgid "Select Audio Device" msgstr "Chọn thiết bị âm thanh" #: js/ui/audioDeviceSelection.js:61 js/ui/status/volume.js:83 msgid "Sound Settings" msgstr "Cài đặt âm thanh" #: js/ui/audioDeviceSelection.js:74 msgid "Headphones" msgstr "Tai nghe" #: js/ui/audioDeviceSelection.js:76 msgid "Headset" msgstr "Bộ tai nghe + micrô" #: js/ui/audioDeviceSelection.js:78 js/ui/status/volume.js:352 msgid "Microphone" msgstr "Micrô" #: js/ui/backgroundMenu.js:15 msgid "Change Background…" msgstr "Đổi ảnh nền…" #: js/ui/backgroundMenu.js:17 msgid "Display Settings" msgstr "Cài đặt hiển thị" #: js/ui/backgroundMenu.js:18 #: subprojects/extensions-app/data/ui/extension-row.ui:122 msgid "Settings" msgstr "Cài đặt" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:40 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:66 msgctxt "grid sunday" msgid "S" msgstr "C" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:68 msgctxt "grid monday" msgid "M" msgstr "2" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:70 msgctxt "grid tuesday" msgid "T" msgstr "3" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:72 msgctxt "grid wednesday" msgid "W" msgstr "4" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:74 msgctxt "grid thursday" msgid "T" msgstr "5" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:76 msgctxt "grid friday" msgid "F" msgstr "6" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:78 msgctxt "grid saturday" msgid "S" msgstr "7" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:429 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:439 msgid "%OB %Y" msgstr "%OB %Y" #: js/ui/calendar.js:501 msgid "Previous month" msgstr "Tháng trước" #: js/ui/calendar.js:519 msgid "Next month" msgstr "Tháng tới" #: js/ui/calendar.js:670 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:729 msgid "Week %V" msgstr "Tuần %V" #: js/ui/calendar.js:908 msgid "No Notifications" msgstr "Không có thông báo" #: js/ui/calendar.js:965 msgid "Do Not Disturb" msgstr "Không làm phiền" #: js/ui/calendar.js:986 msgid "Clear" msgstr "Xóa" #. Translators: %s is an application name #: js/ui/closeDialog.js:44 #, javascript-format msgid "“%s” is not responding." msgstr "“%s” hiện đang bị treo." #: js/ui/closeDialog.js:45 msgid "" "You may choose to wait a short while for it to continue or force the app to " "quit entirely." msgstr "" "Bạn có thể chọn chờ một lúc cho nó tiếp tục hoặc buộc chấm dứt hoàn toàn ứng " "dụng." #: js/ui/closeDialog.js:73 msgid "Force Quit" msgstr "Buộc thoát" #: js/ui/closeDialog.js:78 msgid "Wait" msgstr "Chờ" #: js/ui/components/automountManager.js:84 msgid "External drive connected" msgstr "Ổ đĩa ngoài đã kết nối" #: js/ui/components/automountManager.js:96 msgid "External drive disconnected" msgstr "Ổ đĩa ngoài đã ngắt kết nối" #: js/ui/components/automountManager.js:207 msgid "Unable to unlock volume" msgstr "Không thể mở khóa phân vùng" #: js/ui/components/automountManager.js:208 msgid "The installed udisks version does not support the PIM setting" msgstr "Phiên bản udisks đã cài không hỗ trợ cài đặt PIM" #: js/ui/components/autorunManager.js:319 #, javascript-format msgid "Open with %s" msgstr "Mở bằng %s" #: js/ui/components/networkAgent.js:97 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router." msgstr "" "Hoặc là bạn có thể kết nối bằng cách bấm vào nút “WPS” trên bộ định tuyến " "của bạn." #: js/ui/components/networkAgent.js:109 js/ui/status/bluetooth.js:246 #: js/ui/status/network.js:371 js/ui/status/network.js:455 msgid "Connect" msgstr "Kết nối" #: js/ui/components/networkAgent.js:224 msgid "Key" msgstr "Khóa" #: js/ui/components/networkAgent.js:275 js/ui/components/networkAgent.js:314 msgid "Private key password" msgstr "Mật khẩu khóa riêng" #: js/ui/components/networkAgent.js:308 msgid "Identity" msgstr "Định danh" #: js/ui/components/networkAgent.js:334 msgid "Service" msgstr "Dịch vụ" #: js/ui/components/networkAgent.js:372 js/ui/components/networkAgent.js:408 #: js/ui/components/networkAgent.js:754 js/ui/components/networkAgent.js:775 msgid "Authentication required" msgstr "Cần xác thực" #: js/ui/components/networkAgent.js:373 js/ui/components/networkAgent.js:755 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network " "“%s”." msgstr "Cần mật mã hoặc khóa mã để truy cập mạng không dây “%s”." #: js/ui/components/networkAgent.js:377 js/ui/components/networkAgent.js:759 msgid "Wired 802.1X authentication" msgstr "Xác thực Wired 802.1X" #: js/ui/components/networkAgent.js:380 msgid "Network name" msgstr "Tên mạng" #: js/ui/components/networkAgent.js:388 js/ui/components/networkAgent.js:763 msgid "DSL authentication" msgstr "Xác thực DSL" #: js/ui/components/networkAgent.js:395 js/ui/components/networkAgent.js:768 msgid "PIN code required" msgstr "Cần mã PIN" #: js/ui/components/networkAgent.js:396 js/ui/components/networkAgent.js:769 msgid "PIN code is needed for the mobile broadband device" msgstr "Thiết bị di động băng thông rộng cần mã PIN" #: js/ui/components/networkAgent.js:398 msgid "PIN" msgstr "PIN" #: js/ui/components/networkAgent.js:409 js/ui/components/networkAgent.js:760 #: js/ui/components/networkAgent.js:764 js/ui/components/networkAgent.js:776 #: js/ui/components/networkAgent.js:780 #, javascript-format msgid "A password is required to connect to “%s”." msgstr "Cần mật khẩu để kết nối đến “%s”." #: js/ui/components/networkAgent.js:743 js/ui/status/network.js:2040 msgid "Network Manager" msgstr "Trình quản lý mạng" #: js/ui/components/networkAgent.js:779 msgid "VPN password" msgstr "Mật khẩu VPN" #: js/ui/components/polkitAgent.js:46 msgid "Authentication Required" msgstr "Cần xác thực" #: js/ui/components/polkitAgent.js:86 msgid "Administrator" msgstr "Quản trị" #: js/ui/components/polkitAgent.js:151 msgid "Authenticate" msgstr "Xác thực" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:265 js/ui/shellMountOperation.js:420 msgid "Sorry, that didn’t work. Please try again." msgstr "Rất tiếc, không được. Vui lòng thử lại." #: js/ui/components/telepathyClient.js:831 #, javascript-format msgid "%s is now known as %s" msgstr "%s bây giờ đổi thành %s" #: js/ui/ctrlAltTab.js:25 js/ui/overviewControls.js:412 msgid "Windows" msgstr "Cửa sổ" #: js/ui/dash.js:206 js/ui/dash.js:252 msgid "Show Apps" msgstr "Hiện các ứng dụng" #. Translators: this is the name of the dock/favorites area on #. the bottom of the overview #: js/ui/dash.js:410 msgid "Dash" msgstr "Chỗ gắn ứng dụng" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:98 msgid "%B %-d %Y" msgstr "%-d %B %Y" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:105 msgid "%A %B %e %Y" msgstr "%A %e %B %Y" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:171 msgctxt "calendar heading" msgid "%B %-d" msgstr "%-d %B" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:174 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%-d %B %Y" #: js/ui/dateMenu.js:180 msgid "Today" msgstr "Hôm nay" #: js/ui/dateMenu.js:184 msgid "Tomorrow" msgstr "Ngày mai" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:215 msgctxt "event list time" msgid "All Day" msgstr "Cả ngày" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:237 msgid "%m/%d" msgstr "%d/%m" #: js/ui/dateMenu.js:288 msgid "No Events" msgstr "Không có sự kiện" #: js/ui/dateMenu.js:410 msgid "Add world clocks…" msgstr "Thêm đồng hồ quốc tế…" #: js/ui/dateMenu.js:411 msgid "World Clocks" msgstr "Đồng hồ quốc tế" #: js/ui/dateMenu.js:695 msgid "Loading…" msgstr "Đang tải…" #: js/ui/dateMenu.js:705 msgid "Go online for weather information" msgstr "Lên mạng để biết thông tin thời tiết" #: js/ui/dateMenu.js:707 msgid "Weather information is currently unavailable" msgstr "Thông tin thời tiết hiện không sẵn có" #: js/ui/dateMenu.js:717 msgid "Weather" msgstr "Thời tiết" #: js/ui/dateMenu.js:719 msgid "Select weather location…" msgstr "Chọn địa điểm xem thời tiết…" #: js/ui/endSessionDialog.js:46 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "Đăng xuất %s" #: js/ui/endSessionDialog.js:47 msgctxt "title" msgid "Log Out" msgstr "Đăng xuất" #: js/ui/endSessionDialog.js:50 #, javascript-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "Sẽ tự động đăng xuất %s sau %d giây nữa." #: js/ui/endSessionDialog.js:56 #, javascript-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "Bạn sẽ tự động đăng xuất sau %d giây nữa." #: js/ui/endSessionDialog.js:63 msgctxt "button" msgid "Log Out" msgstr "Đăng xuất" #: js/ui/endSessionDialog.js:69 js/ui/status/system.js:176 msgctxt "title" msgid "Power Off" msgstr "Tắt máy" #: js/ui/endSessionDialog.js:70 msgctxt "title" msgid "Install Updates & Power Off" msgstr "Cài đặt bản cập nhật & tắt máy" #: js/ui/endSessionDialog.js:73 #, javascript-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "Hệ thống sẽ tự động tắt sau %d giây." #: js/ui/endSessionDialog.js:77 js/ui/endSessionDialog.js:96 msgctxt "checkbox" msgid "Install pending software updates" msgstr "Cài đặt các cập nhật phần mềm đang chờ" #: js/ui/endSessionDialog.js:81 msgctxt "button" msgid "Power Off" msgstr "Tắt máy" #: js/ui/endSessionDialog.js:88 msgctxt "title" msgid "Restart" msgstr "Khởi động lại máy tính" #: js/ui/endSessionDialog.js:89 msgctxt "title" msgid "Install Updates & Restart" msgstr "Cài đặt bản cập nhật & Khởi động lại" #: js/ui/endSessionDialog.js:92 #, javascript-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "Hệ thống sẽ tự động khởi động lại sau %d giây." #: js/ui/endSessionDialog.js:100 msgctxt "button" msgid "Restart" msgstr "Khởi động lại" #: js/ui/endSessionDialog.js:108 msgctxt "title" msgid "Restart & Install Updates" msgstr "Khởi động lại & Cài đặt bản cập nhật" #: js/ui/endSessionDialog.js:111 #, javascript-format msgid "The system will automatically restart and install updates in %d second." msgid_plural "" "The system will automatically restart and install updates in %d seconds." msgstr[0] "" "Hệ thống sẽ tự động khởi động lại và cài đặt các cập nhật sau %d giây." #: js/ui/endSessionDialog.js:118 js/ui/endSessionDialog.js:139 msgctxt "button" msgid "Restart & Install" msgstr "Khởi động lại & Cài" #: js/ui/endSessionDialog.js:120 msgctxt "button" msgid "Install & Power Off" msgstr "Cài & Tắt máy" #: js/ui/endSessionDialog.js:121 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "Tắt máy sau khi các cập nhật được cài đặt" #: js/ui/endSessionDialog.js:128 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "Khởi động lại & Cài đặt nâng cấp" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:133 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "%s %s sẽ được cài đặt sau khi khởi động lại. Cài đặt nâng cấp có thể mất " "nhiều thời gian: hãy chắn chắn rằng bạn đã sao lưu dự phòng và máy tính được " "cắm điện." #: js/ui/endSessionDialog.js:289 msgid "Low battery power: please plug in before installing updates." msgstr "" "Nguồn pin yếu: vui lòng cắm dây sạc trước khi thực hiện việc cài đặt cập " "nhật." #: js/ui/endSessionDialog.js:298 msgid "Some applications are busy or have unsaved work" msgstr "Một số ứng dụng đang bận hoặc có dữ liệu chưa được lưu lại" #: js/ui/endSessionDialog.js:303 msgid "Other users are logged in" msgstr "Có người dùng khác đang hoạt động" #: js/ui/endSessionDialog.js:473 msgctxt "button" msgid "Boot Options" msgstr "Tùy chọn khởi động" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:678 #, javascript-format msgid "%s (remote)" msgstr "%s (máy chủ)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:681 #, javascript-format msgid "%s (console)" msgstr "%s (bàn điều khiển)" #: js/ui/extensionDownloader.js:260 msgid "Install" msgstr "Cài đặt" #: js/ui/extensionDownloader.js:266 msgid "Install Extension" msgstr "Cài Phần mở rộng" #: js/ui/extensionDownloader.js:267 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "Tải và cài đặt “%s” từ extensions.gnome.org chứ?" #: js/ui/extensionSystem.js:340 msgid "Extension Updates Available" msgstr "Đang có bản cập nhật phần mở rộng mới" #: js/ui/extensionSystem.js:341 msgid "Extension updates are ready to be installed." msgstr "Các bản cập nhật phần mở rộng đang chờ để được cài đặt." #: js/ui/inhibitShortcutsDialog.js:70 msgid "Allow inhibiting shortcuts" msgstr "Cho phép ngăn cản phím tắt" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:73 #, javascript-format msgid "The app %s wants to inhibit shortcuts" msgstr "Ứng dụng %s muốn ngăn cản phím tắt" #: js/ui/inhibitShortcutsDialog.js:74 msgid "An app wants to inhibit shortcuts" msgstr "Một ứng dụng đang muốn ngăn cản phím tắt" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:81 #, javascript-format msgid "You can restore shortcuts by pressing %s." msgstr "Bạn có thể khôi phục lại các phím tắt bằng cách bấm %s." #: js/ui/kbdA11yDialog.js:34 msgid "Slow Keys Turned On" msgstr "Phím chậm đã bật" #: js/ui/kbdA11yDialog.js:35 msgid "Slow Keys Turned Off" msgstr "Phím chậm đã tắt" #: js/ui/kbdA11yDialog.js:36 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "Bạn vừa mới ấn giữ phím Shift trong vòng 8 giây. Đây là phím tắt của tính " "năng Phím Chậm, tính năng có ảnh hưởng đến cách hoạt động của bàn phím của " "bạn." #: js/ui/kbdA11yDialog.js:42 msgid "Sticky Keys Turned On" msgstr "Phím dính đã bật" #: js/ui/kbdA11yDialog.js:43 msgid "Sticky Keys Turned Off" msgstr "Phím dính đã tắt" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "Bạn vừa mới ấn phím Shift 5 lần liên tiếp. Đây là phím tắt của tính năng " "Phím Dính, tính năng có ảnh hưởng đến cách hoạt động của bàn phím của bạn." #: js/ui/kbdA11yDialog.js:47 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" "Bạn vừa mới ấn hai phím đồng thời, hoặc ấn phím Shift 5 lần liên tiếp. Phím " "tắt này tắt tính năng Phím Dính, tính năng có ảnh hưởng đến cách hoạt động " "của bàn phím của bạn." #: js/ui/kbdA11yDialog.js:57 msgid "Leave On" msgstr "Để bật" #: js/ui/kbdA11yDialog.js:57 msgid "Turn On" msgstr "Bật" #: js/ui/kbdA11yDialog.js:67 js/ui/status/network.js:466 msgid "Turn Off" msgstr "Tắt" #: js/ui/kbdA11yDialog.js:67 msgid "Leave Off" msgstr "Để tắt" #: js/ui/keyboard.js:225 js/ui/status/keyboard.js:872 msgid "Keyboard Settings" msgstr "Cài đặt bàn phím" #: js/ui/lookingGlass.js:724 msgid "No extensions installed" msgstr "Chưa cài phần mở rộng nào" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:785 #, javascript-format msgid "%s has not emitted any errors." msgstr "%s chưa phát sinh lỗi." #: js/ui/lookingGlass.js:791 msgid "Hide Errors" msgstr "Ẩn lỗi" #: js/ui/lookingGlass.js:795 js/ui/lookingGlass.js:872 msgid "Show Errors" msgstr "Hiện lỗi" #: js/ui/lookingGlass.js:804 msgid "Enabled" msgstr "Đã được bật" #. translators: #. * The device has been disabled #: js/ui/lookingGlass.js:807 subprojects/gvc/gvc-mixer-control.c:1908 msgid "Disabled" msgstr "Đã được tắt" #: js/ui/lookingGlass.js:809 msgid "Error" msgstr "Lỗi" #: js/ui/lookingGlass.js:811 msgid "Out of date" msgstr "Đã lạc hậu" #: js/ui/lookingGlass.js:813 msgid "Downloading" msgstr "Đang tải về" #: js/ui/lookingGlass.js:815 msgid "Disabling" msgstr "Đang tắt" #: js/ui/lookingGlass.js:817 msgid "Enabling" msgstr "Đang bật" #: js/ui/lookingGlass.js:850 msgid "View Source" msgstr "Xem mã nguồn" #: js/ui/lookingGlass.js:861 msgid "Web Page" msgstr "Trang thông tin điện tử" #: js/ui/main.js:268 msgid "System was put in unsafe mode" msgstr "Hệ thống được đã được đặt vào chế độ không an toàn" #: js/ui/main.js:269 msgid "Apps now have unrestricted access" msgstr "Ứng dụng giờ có quyền truy cập không hạn chế" #: js/ui/main.js:270 js/ui/overview.js:63 msgid "Undo" msgstr "Hoàn lại" #: js/ui/main.js:328 msgid "Logged in as a privileged user" msgstr "Đăng nhập dưới danh nghĩa người dùng đặc quyền" #: js/ui/main.js:329 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" "Không nên chạy phiên với tư cách là người dùng đặc quyền vì lý do bảo mật. " "Nếu có thể, bạn nên đăng nhập như một người dùng bình thường." #: js/ui/main.js:377 msgid "Screen Lock disabled" msgstr "Khóa màn hình bị tắt" #: js/ui/main.js:378 msgid "Screen Locking requires the GNOME display manager." msgstr "Khóa màn hình yêu cầu bộ quản lý màn hình GNOME." #: js/ui/messageTray.js:1417 msgid "System Information" msgstr "Thông tin hệ thống" #: js/ui/mpris.js:205 msgid "Unknown artist" msgstr "Chưa biết nghệ sĩ" #: js/ui/mpris.js:215 msgid "Unknown title" msgstr "Chưa biết tiêu đề" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:336 msgid "Type to search" msgstr "Gõ để tìm" #: js/ui/overviewControls.js:400 msgid "Apps" msgstr "Ứng dụng" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:76 msgid "Overview" msgstr "Tổng quan" #: js/ui/padOsd.js:100 msgid "New shortcut…" msgstr "Phím tắt mới…" #: js/ui/padOsd.js:153 msgid "App defined" msgstr "Ứng dụng đã định nghĩa" #: js/ui/padOsd.js:154 msgid "Show on-screen help" msgstr "Hiển thị trợ giúp trên-màn-hình" #: js/ui/padOsd.js:155 msgid "Switch monitor" msgstr "Chuyển màn hình" #: js/ui/padOsd.js:156 msgid "Assign keystroke" msgstr "Gán phím tắt" #: js/ui/padOsd.js:225 msgid "Done" msgstr "Xong" #: js/ui/padOsd.js:728 msgid "Edit…" msgstr "Sửa…" #: js/ui/padOsd.js:775 msgid "None" msgstr "Không" #: js/ui/padOsd.js:846 msgid "Press a button to configure" msgstr "Nhấn một nút để cấu hình" #: js/ui/padOsd.js:847 msgid "Press Esc to exit" msgstr "Nhấn phím Esc để thoát" #: js/ui/padOsd.js:850 msgid "Press any key to exit" msgstr "Hãy nhấn phím bất kỳ để thoát" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:425 msgid "Activities" msgstr "Tổng quan" #: js/ui/panel.js:508 msgctxt "System menu in the top bar" msgid "System" msgstr "Hệ thống" #: js/ui/panel.js:682 msgid "Top Bar" msgstr "Thanh đỉnh" #: js/ui/quickSettings.js:187 msgid "Open menu" msgstr "Mở trình đơn" #: js/ui/runDialog.js:63 msgid "Run a Command" msgstr "Chạy một lệnh" #: js/ui/runDialog.js:78 msgid "Press ESC to close" msgstr "Nhấn phím Esc để đóng lại" #: js/ui/runDialog.js:243 msgid "Restart is not available on Wayland" msgstr "Không hỗ trợ khởi động lại trên Wayland" #: js/ui/runDialog.js:248 msgid "Restarting…" msgstr "Đang khởi động lại…" #: js/ui/screenShield.js:235 msgid "GNOME needs to lock the screen" msgstr "GNOME cần khóa màn hình" #: js/ui/screenShield.js:276 js/ui/screenShield.js:670 msgid "Unable to lock" msgstr "Không thể khóa" #: js/ui/screenShield.js:277 js/ui/screenShield.js:671 msgid "Lock was blocked by an app" msgstr "Khóa bị khóa bởi một ứng dụng" #: js/ui/screenshot.js:1231 msgid "Selection" msgstr "Chọn" #: js/ui/screenshot.js:1241 msgid "Area Selection" msgstr "Chọn theo vùng" #: js/ui/screenshot.js:1246 msgid "Screen" msgstr "Màn hình" #: js/ui/screenshot.js:1256 msgid "Screen Selection" msgstr "Chọn màn hình" #: js/ui/screenshot.js:1261 msgid "Window" msgstr "Cửa sổ" #: js/ui/screenshot.js:1271 msgid "Window Selection" msgstr "Chọn cửa sổ" #. Translators: entry in the window right click menu. #: js/ui/screenshot.js:1296 js/ui/status/system.js:113 js/ui/windowMenu.js:30 msgid "Take Screenshot" msgstr "Chụp cửa sổ" #: js/ui/screenshot.js:1312 msgid "Record Screen" msgstr "Quay màn hình" #. Translators: since this string refers to an action, #. it needs to be phrased as a verb. #: js/ui/screenshot.js:1327 msgid "Capture" msgstr "Chụp ảnh" #: js/ui/screenshot.js:1349 msgid "Show Pointer" msgstr "Hiện con trỏ" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1945 msgid "Screencasts" msgstr "Quay phim màn hình" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast from 07-17-2013 10:00:46 PM.webm" #: js/ui/screenshot.js:1950 #, no-c-format msgid "Screencast from %d %t.webm" msgstr "Quay phim màn hình từ %d %t.webm" #. Translators: notification title. #: js/ui/screenshot.js:1988 msgid "Screencast recorded" msgstr "Màn hình đã được quay lại" #. Translators: notification title. #: js/ui/screenshot.js:1995 msgid "Screencast ended unexpectedly" msgstr "Quay phim màn hình đã kết thúc bất ngờ" #. Translators: notification source name. #: js/ui/screenshot.js:2004 js/ui/screenshot.js:2240 msgid "Screenshot" msgstr "Chụp màn hình" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:2011 msgid "Click here to view the video." msgstr "Bấn vào đây để xem phim." #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:2014 js/ui/screenshot.js:2254 msgid "Show in Files" msgstr "Hiển thị trong \"Tập tin\"" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2200 #, javascript-format msgid "Screenshot from %s" msgstr "Chụp màn hình từ %s" #. Translators: notification title. #: js/ui/screenshot.js:2246 msgid "Screenshot captured" msgstr "Đã chụp màn hình" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2248 msgid "You can paste the image from the clipboard." msgstr "Bạn có thể dán ảnh từ clipboard." #: js/ui/screenshot.js:2301 js/ui/screenshot.js:2465 msgid "Screenshot taken" msgstr "Chụp màn hình" #: js/ui/search.js:829 msgid "Searching…" msgstr "Đang tìm…" #: js/ui/search.js:831 msgid "No results." msgstr "Không tìm thấy kết quả." #: js/ui/search.js:962 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "%d nữa" #: js/ui/searchController.js:89 msgid "Search" msgstr "Tìm" #: js/ui/shellEntry.js:23 msgid "Copy" msgstr "Chép" #: js/ui/shellEntry.js:28 msgid "Paste" msgstr "Dán" #: js/ui/shellEntry.js:80 msgid "Show Text" msgstr "Hiện chữ" #: js/ui/shellEntry.js:82 msgid "Hide Text" msgstr "Ẩn chữ" #: js/ui/shellEntry.js:174 msgid "Caps lock is on." msgstr "Phím Caps lock đang bật." #: js/ui/shellMountOperation.js:291 msgid "Hidden Volume" msgstr "Phân vùng Ẩn" #: js/ui/shellMountOperation.js:294 msgid "Windows System Volume" msgstr "Phân vùng hệ thống Windows" #: js/ui/shellMountOperation.js:297 msgid "Uses Keyfiles" msgstr "Dùng tập tin khóa" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:305 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead." msgstr "" "Để mở khóa một phân vùng đang sử dụng tập tin khóa, dùng tiện ích %s " "để thay thế." #: js/ui/shellMountOperation.js:309 msgid "" "You need an external utility like Disks to unlock a volume that uses " "keyfiles." msgstr "" "Bạn cần một tiện ích ngoài như Đĩa để mở khóa phân vùng đang sử dụng " "tập tin khóa." #: js/ui/shellMountOperation.js:317 msgid "PIM Number" msgstr "Số PIM" #: js/ui/shellMountOperation.js:376 msgid "Remember Password" msgstr "Nhớ mật khẩu" #: js/ui/shellMountOperation.js:391 msgid "Unlock" msgstr "Mở khóa" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:405 #, javascript-format msgid "Open %s" msgstr "Mở %s" #: js/ui/shellMountOperation.js:441 msgid "The PIM must be a number or empty." msgstr "PIM phải là dạng con số hoặc để trống." #: js/ui/status/accessibility.js:36 msgid "Accessibility" msgstr "Khả năng truy cập" #: js/ui/status/accessibility.js:46 msgid "High Contrast" msgstr "Tương phản cao" #: js/ui/status/accessibility.js:49 msgid "Zoom" msgstr "Phóng to" #: js/ui/status/accessibility.js:56 msgid "Screen Reader" msgstr "Trình đọc màn hình" #: js/ui/status/accessibility.js:60 msgid "Screen Keyboard" msgstr "Bàn phím màn hình" #: js/ui/status/accessibility.js:64 msgid "Visual Alerts" msgstr "Cảnh báo trực quan" #: js/ui/status/accessibility.js:68 msgid "Sticky Keys" msgstr "Phím dính" #: js/ui/status/accessibility.js:72 msgid "Slow Keys" msgstr "Phím chậm" #: js/ui/status/accessibility.js:76 msgid "Bounce Keys" msgstr "Phím dội" #: js/ui/status/accessibility.js:80 msgid "Mouse Keys" msgstr "Phím chuột" #: js/ui/status/accessibility.js:85 msgid "Accessibility Settings" msgstr "Cài đặt hỗ trợ truy cập" #: js/ui/status/accessibility.js:142 msgid "Large Text" msgstr "Chữ lớn" #: js/ui/status/autoRotate.js:14 msgid "Auto Rotate" msgstr "Tự động xoay" #: js/ui/status/backgroundApps.js:166 msgctxt "title" msgid "Background Apps" msgstr "Ứng dụng nền" #: js/ui/status/backgroundApps.js:181 msgid "Apps known to be running without a window" msgstr "Ứng dụng được biết là đang hoạt động mà không mở cửa sổ" #: js/ui/status/backgroundApps.js:192 msgid "App Settings" msgstr "Cài đặt ứng dụng" #: js/ui/status/backgroundApps.js:249 msgid "No Background Apps" msgstr "Không có ứng dụng chạy dưới nền nệ thống" #: js/ui/status/backgroundApps.js:251 #, javascript-format msgid "%d Background App" msgid_plural "%d Background Apps" msgstr[0] "%d ứng dụng chạy dưới nền hệ thống" #: js/ui/status/backlight.js:40 msgid "Keyboard Brightness" msgstr "Độ sáng bàn phím" #: js/ui/status/backlight.js:80 msgid "Off" msgstr "Tắt" #: js/ui/status/backlight.js:81 msgid "Low" msgstr "Thấp" #: js/ui/status/backlight.js:82 msgid "High" msgstr "Cao" #: js/ui/status/backlight.js:148 js/ui/status/keyboard.js:854 msgid "Keyboard" msgstr "Bàn phím" #: js/ui/status/bluetooth.js:246 js/ui/status/network.js:371 msgid "Disconnect" msgstr "Ngắt kết nối" #: js/ui/status/bluetooth.js:263 js/ui/status/bluetooth.js:265 msgid "Bluetooth" msgstr "Bluetooth" #: js/ui/status/bluetooth.js:288 js/ui/status/network.js:1907 msgid "Bluetooth Settings" msgstr "Cài đặt Bluetooth" #: js/ui/status/bluetooth.js:335 msgid "No available or connected devices" msgstr "Không tìm thấy thiết bị đang kết nối hay có sẵn" #: js/ui/status/bluetooth.js:336 msgid "Turn on Bluetooth to connect to devices" msgstr "Bật Bluetooth để kết nối đến các thiết bị" #. Translators: This is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:390 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d đã được kết nối" #: js/ui/status/brightness.js:34 msgid "Brightness" msgstr "Độ sáng" #: js/ui/status/darkMode.js:12 msgid "Dark Style" msgstr "Chế độ tối" #: js/ui/status/dwellClick.js:15 msgid "Single Click" msgstr "Nhấp đơn" #: js/ui/status/dwellClick.js:20 msgid "Double Click" msgstr "Nhấn đúp" #: js/ui/status/dwellClick.js:25 msgid "Drag" msgstr "Kéo" #: js/ui/status/dwellClick.js:30 msgid "Secondary Click" msgstr "Nhấn phụ" #: js/ui/status/dwellClick.js:39 msgid "Dwell Click" msgstr "Nhấn giữ" #: js/ui/status/keyboard.js:871 msgid "Show Keyboard Layout" msgstr "Hiện bố cục của bàn phím" #: js/ui/status/location.js:339 msgid "Allow location access" msgstr "Cho phép truy cập vị trí" #. Translators: %s is an application name #: js/ui/status/location.js:341 #, javascript-format msgid "The app %s wants to access your location" msgstr "Ứng dụng %s muốn truy cập để biết vị trí của bạn" #: js/ui/status/location.js:351 msgid "Location access can be changed at any time from the privacy settings." msgstr "" "Quyền cho phép biết vị trí có thể được tùy chỉnh trong các cài đặt riêng tư." #: js/ui/status/location.js:359 msgid "Deny Access" msgstr "Từ chối truy cập" #: js/ui/status/location.js:364 msgid "Grant Access" msgstr "Cấp quyền truy cập" #: js/ui/status/network.js:61 msgid "" msgstr "" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:365 #, javascript-format msgid "Disconnect %s" msgstr "Ngắt kết nối %s" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:367 #, javascript-format msgid "Connect to %s" msgstr "Kết nối đến %s" #: js/ui/status/network.js:1061 msgid "Secure" msgstr "An toàn" #: js/ui/status/network.js:1061 msgid "Not secure" msgstr "Không an toàn" #: js/ui/status/network.js:1062 #, javascript-format msgid "Signal strength %s%%" msgstr "Độ mạnh tín hiệu %s%%" #. translators: The first placeholder is the network name, the second and indication whether it is secure, and the last the signal strength indication #: js/ui/status/network.js:1064 #, javascript-format msgid "%s, %s, %s" msgstr "%s, %s, %s" #. Translators: %s is a network identifier #: js/ui/status/network.js:1166 #, javascript-format msgid "%s Hotspot" msgstr "Điểm truy cập %s" #: js/ui/status/network.js:1437 #, javascript-format msgid "%d connected" msgid_plural "%d connected" msgstr[0] "%d đã được kết nối" #: js/ui/status/network.js:1535 js/ui/status/network.js:1551 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1536 msgid "VPN Settings" msgstr "Cài đặt VPN" #: js/ui/status/network.js:1792 msgid "Wi–Fi" msgstr "Wi–Fi" #: js/ui/status/network.js:1794 msgid "All Networks" msgstr "Tất cả các mạng" #: js/ui/status/network.js:1891 msgid "Wired Connections" msgstr "Kết nối có dây" #: js/ui/status/network.js:1892 msgid "Wired Settings" msgstr "Cài đặt có dây" #: js/ui/status/network.js:1906 msgid "Bluetooth Tethers" msgstr "Kết nối mạng qua Bluetooth" #. Translators: "Tether" from "Bluetooth Tether" #: js/ui/status/network.js:1913 msgid "Tether" msgstr "Kết nối mạng" #: js/ui/status/network.js:1926 msgid "Mobile Connections" msgstr "Kết nối di động" #: js/ui/status/network.js:1928 msgid "Mobile Broadband Settings" msgstr "Cài đặt mạng không giây băng thông rộng" #. Translators: "Mobile" from "Mobile Broadband" #: js/ui/status/network.js:1937 msgid "Mobile" msgstr "Di động" #: js/ui/status/network.js:2045 msgid "Connection failed" msgstr "Lỗi kết nối" #: js/ui/status/network.js:2046 msgid "Activation of network connection failed" msgstr "Gặp lỗi khi kích hoạt kết nối mạng" #: js/ui/status/nightLight.js:21 msgid "Night Light" msgstr "Ánh sáng đêm" #: js/ui/status/powerProfiles.js:21 msgctxt "Power profile" msgid "Performance" msgstr "Tăng cường hiệu suất" #: js/ui/status/powerProfiles.js:26 msgctxt "Power profile" msgid "Balanced" msgstr "Cân bằng" #: js/ui/status/powerProfiles.js:31 msgctxt "Power profile" msgid "Power Saver" msgstr "Tiết kiệm năng lượng" #: js/ui/status/powerProfiles.js:41 js/ui/status/powerProfiles.js:71 msgid "Power Mode" msgstr "Chế độ nguồn điện" #: js/ui/status/powerProfiles.js:73 msgid "Power Settings" msgstr "Cài đặt nguồn điện" #: js/ui/status/remoteAccess.js:76 msgid "Stop Screencast" msgstr "Dừng quay phim màn hình" #: js/ui/status/remoteAccess.js:146 msgid "Stop Screen Sharing" msgstr "Dừng quay phim màn hình" #: js/ui/status/rfkill.js:101 msgid "Airplane Mode" msgstr "Chế độ máy bay" #: js/ui/status/system.js:170 msgid "Power Off Menu" msgstr "Trình đơn Tắt máy" #: js/ui/status/system.js:178 msgid "Suspend" msgstr "Tạm dừng" #: js/ui/status/system.js:183 msgid "Restart…" msgstr "Khởi động lại…" #: js/ui/status/system.js:188 msgid "Power Off…" msgstr "Tắt máy…" #: js/ui/status/system.js:195 #: subprojects/extensions-app/data/ui/extensions-window.ui:189 msgid "Log Out…" msgstr "Đăng xuất…" #: js/ui/status/system.js:200 msgid "Switch User…" msgstr "Chuyển người dùng…" #: js/ui/status/system.js:244 msgctxt "action" msgid "Lock Screen" msgstr "Khóa màn hình" #: js/ui/status/thunderbolt.js:259 msgid "Thunderbolt" msgstr "Thunderbolt" #: js/ui/status/thunderbolt.js:320 msgid "Unknown Thunderbolt device" msgstr "Thiết bị Thunderbolt chưa biết" #: js/ui/status/thunderbolt.js:321 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "" "Thiết bi mới đã được tìm thấy trong khi bạn rời đi. Vui lòng ngắt kết nối và " "kết nối lại thiết bị để có thể sử dụng." #: js/ui/status/thunderbolt.js:324 msgid "Unauthorized Thunderbolt device" msgstr "Thiết bị Thunderbolt không đủ thẩm quyền" #: js/ui/status/thunderbolt.js:325 msgid "" "New device has been detected and needs to be authorized by an administrator." msgstr "Đã dò tìm thấy thiết bị mới và cần được cho phép bởi người quản trị." #: js/ui/status/thunderbolt.js:331 msgid "Thunderbolt authorization error" msgstr "Lỗi xác thực Thunderbolt" #: js/ui/status/thunderbolt.js:332 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "Không thể cho phép thiết bị Thunderbolt: %s" #: js/ui/status/volume.js:214 msgid "Volume changed" msgstr "Âm lượng đã thay đổi" #: js/ui/status/volume.js:227 msgid "Unmute" msgstr "Ngừng câm" #: js/ui/status/volume.js:227 msgid "Mute" msgstr "Câm" #: js/ui/status/volume.js:282 msgid "Volume" msgstr "Âm lượng" #: js/ui/status/volume.js:298 msgid "Sound Output" msgstr "Âm thanh đầu ra" #: js/ui/status/volume.js:370 msgid "Sound Input" msgstr "Âm thanh đầu vào" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:22 msgid "Mirror" msgstr "Giống nhau" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:31 msgid "Join Displays" msgstr "Ghép màn hình" #. Translators: this is for using only an external display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:41 msgid "External Only" msgstr "Chỉ bên ngoài" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:49 msgid "Built-in Only" msgstr "Chỉ tích-hợp" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:370 msgid "%A %B %-d" msgstr "%A, %-d %B" #: js/ui/unlockDialog.js:376 msgid "Swipe up to unlock" msgstr "Vuốt lên trên để mở khóa" #: js/ui/unlockDialog.js:377 msgid "Click or press a key to unlock" msgstr "Bấm chuột hay nhấn một phím để mở khóa" #: js/ui/unlockDialog.js:560 msgid "Unlock Window" msgstr "Bỏ khóa cửa sổ" #: js/ui/unlockDialog.js:569 msgid "Log in as another user" msgstr "Đăng nhập dưới dạng người dùng khác" #: js/ui/welcomeDialog.js:49 #, javascript-format msgid "GNOME %s" msgstr "GNOME %s" #: js/ui/welcomeDialog.js:53 #, javascript-format msgid "Welcome to %s" msgstr "Chào mừng bạn dùng %s" #: js/ui/welcomeDialog.js:54 msgid "If you want to learn your way around, check out the tour." msgstr "Nếu bạn muốn tìm hiểu tổng thể, hãy xem phần tham quan." #: js/ui/welcomeDialog.js:63 msgid "Skip" msgstr "Bỏ qua" #: js/ui/welcomeDialog.js:68 msgid "Take Tour" msgstr "Tham quan" #: js/ui/windowAttentionHandler.js:20 #, javascript-format msgid "“%s” is ready" msgstr "“%s” đã sẵn sàng" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:69 msgid "Keep these display settings?" msgstr "Bạn có muốn giữ những cài đặt màn hình hiển thị này không?" #: js/ui/windowManager.js:79 msgid "Revert Settings" msgstr "Phục hồi lại các cài đặt" #: js/ui/windowManager.js:84 msgid "Keep Changes" msgstr "Giữ các thay đổi" #: js/ui/windowManager.js:104 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "Các thay đổi có thể được hoàn lại trong vòng %d giây nữa" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:496 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:42 msgid "Hide" msgstr "Ẩn" #: js/ui/windowMenu.js:49 msgid "Restore" msgstr "Khôi phục" #: js/ui/windowMenu.js:53 msgid "Maximize" msgstr "Phóng to hết cỡ" #: js/ui/windowMenu.js:60 msgid "Move" msgstr "Di chuyển" #: js/ui/windowMenu.js:79 msgid "Resize" msgstr "Đổi cỡ" #: js/ui/windowMenu.js:99 msgid "Move Titlebar Onscreen" msgstr "Di chuyển thanh tiêu đề trên màn hình" #: js/ui/windowMenu.js:104 msgid "Always on Top" msgstr "Luôn ở trên cùng" # Không gian làm việc nào đang được kích hoạt thì ở trên đó. Khi chuyển không gian làm việc, nó sẽ chuyển theo. #: js/ui/windowMenu.js:123 msgid "Always on Visible Workspace" msgstr "Luôn trên không gian làm việc nhìn thấy" # Chuyển cửa sổ sang không gian làm việc hay màn hình khác #: js/ui/windowMenu.js:137 msgid "Move to Workspace Left" msgstr "Chuyển sang không gian làm việc Trái" #: js/ui/windowMenu.js:143 msgid "Move to Workspace Right" msgstr "Chuyển sang không gian làm việc Phải" #: js/ui/windowMenu.js:149 msgid "Move to Workspace Up" msgstr "Chuyển sang không gian làm việc Trên" #: js/ui/windowMenu.js:155 msgid "Move to Workspace Down" msgstr "Chuyển sang không gian làm việc Dưới" #: js/ui/windowMenu.js:173 msgid "Move to Monitor Up" msgstr "Chuyển sang màn hình Trên" #: js/ui/windowMenu.js:182 msgid "Move to Monitor Down" msgstr "Chuyển sang màn hình Dưới" #: js/ui/windowMenu.js:191 msgid "Move to Monitor Left" msgstr "Chuyển sang màn hình Trái" #: js/ui/windowMenu.js:200 msgid "Move to Monitor Right" msgstr "Chuyển sang màn hình Phải" #: js/ui/windowMenu.js:208 msgid "Close" msgstr "Đóng" #: src/main.c:529 subprojects/extensions-tool/src/main.c:325 msgid "Print version" msgstr "Hiển thị phiên bản" #: src/main.c:535 msgid "Mode used by GDM for login screen" msgstr "Chế độ được dùng bởi GDM cho màn hình đăng nhập" #: src/main.c:541 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "Dùng chế độ đặc biệt, ví dụ “gdm” cho màn hình đăng nhập" #: src/main.c:547 msgid "List possible modes" msgstr "Danh sách chế độ có thể" #: src/main.c:553 msgid "Force animations to be enabled" msgstr "Luôn bật hoạt hình" #: src/shell-app.c:305 msgctxt "program" msgid "Unknown" msgstr "Chưa biết" #: src/shell-app.c:556 #, c-format msgid "Failed to launch “%s”" msgstr "Gặp lỗi khi khởi chạy “%s”" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match." msgstr "Mật khẩu không khớp nhau." #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "Mật khẩu không được để trống" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "Hộp thoại xác thực bị người dùng bỏ qua" #: src/st/st-icon-theme.c:1865 #, c-format msgid "Icon '%s' not present in theme %s" msgstr "Biểu tượng '%s' không xuất hiện trong chủ đề %s" #: src/st/st-icon-theme.c:3454 src/st/st-icon-theme.c:3757 msgid "Failed to load icon" msgstr "Gặp lỗi khi tải biểu tượng" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 msgid "Manage your GNOME Extensions" msgstr "Quản lý các phần mở rộng GNOME của bạn" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:17 #: subprojects/extensions-app/js/main.js:222 msgid "The GNOME Project" msgstr "Dự án GNOME" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:36 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" "Phần mở rộng GNOME xử lý việc cập nhật tiện ích mở rộng, cấu hình tùy chọn " "tiện ích mở rộng và xóa hoặc vô hiệu hóa các tiện ích mở rộng không mong " "muốn." #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "Cấu hình phần mở rộng Hệ vỏ GNOME" #: subprojects/extensions-app/js/main.js:136 #: subprojects/extensions-app/js/main.js:147 msgid "No Matches" msgstr "Không tìm thấy kết quả khớp" #: subprojects/extensions-app/js/main.js:175 #, javascript-format msgid "Remove “%s”?" msgstr "Xóa “%s”?" #: subprojects/extensions-app/js/main.js:176 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "" "Nếu bạn gỡ bỏ phần mở rộng này, bạn sẽ cần phải tải lại nó nếu muốn dùng lại" #: subprojects/extensions-app/js/main.js:180 msgid "Remove" msgstr "Xóa bỏ" #: subprojects/extensions-app/js/main.js:217 msgid "translator-credits" msgstr "Nhóm Việt hóa GNOME " #: subprojects/extensions-app/js/main.js:345 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "%d phần mở rộng sẽ được cập nhật vào lần đăng nhập tới." #: subprojects/extensions-app/js/main.js:487 msgid "The extension is incompatible with the current GNOME version" msgstr "Phần mở rộng không tương thích với phiên bản GNOME hiện tại" #: subprojects/extensions-app/js/main.js:490 #: subprojects/extensions-app/data/ui/extension-row.ui:52 msgid "The extension had an error" msgstr "Phần mở rộng đã gặp lỗi" #: subprojects/extensions-app/data/ui/extension-row.ui:62 msgid "The extension can be updated" msgstr "Hiển thị các phần mở rộng có thể cập nhật" #: subprojects/extensions-app/data/ui/extension-row.ui:112 msgid "Website" msgstr "Trang thông tin điện tử" #: subprojects/extensions-app/data/ui/extension-row.ui:134 msgid "Remove…" msgstr "Xóa bỏ…" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Help" msgstr "Trợ giúp" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "Giới thiệu Phần mở rộng" #: subprojects/extensions-app/data/ui/extensions-window.ui:83 msgid "" "Extensions can cause performance and stability issues. Disable extensions if " "you encounter problems with your system." msgstr "" "Phần mở rộng có thể là nguyên nhân dẫn đến các vấn đề về hiệu năng và ổn " "định. Tắt các phần mở rộng nếu hệ thống của bạn gặp trục trặc." #: subprojects/extensions-app/data/ui/extensions-window.ui:97 msgid "Manually Installed" msgstr "Đã được cài đặt thủ công" #: subprojects/extensions-app/data/ui/extensions-window.ui:98 #: subprojects/extensions-app/data/ui/extensions-window.ui:133 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" "Để tìm và thêm các thành phần mở rộng, truy cập extensions.gnome.org." #: subprojects/extensions-app/data/ui/extensions-window.ui:111 msgid "Built-In" msgstr "Tích-hợp" #: subprojects/extensions-app/data/ui/extensions-window.ui:132 msgid "No Installed Extensions" msgstr "Không có phần mở rộng nào" #: subprojects/extensions-app/data/ui/extensions-window.ui:144 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" "Chúng tôi rất tiếc, nhưng không thể lấy được danh sách các tiện ích mở rộng " "đã cài đặt. Hãy chắc chắn rằng bạn đã đăng nhập vào GNOME và thử lại." #: subprojects/extensions-app/data/ui/extensions-window.ui:174 msgid "Extension Updates Ready" msgstr "Bản cập nhật tiện ích mở rộng đã sẵn sàng" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:284 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "Phần mở rộng mới đã được tạo thành công trong %s.\n" #: subprojects/extensions-tool/src/command-create.c:376 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" "Tên phải là một chuỗi rất ngắn (mô tả lý tưởng).\n" "Ví dụ như: %s" #: subprojects/extensions-tool/src/command-create.c:382 #: subprojects/extensions-tool/src/main.c:242 msgid "Name" msgstr "Tên" #: subprojects/extensions-tool/src/command-create.c:396 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" "Phần mô tả bao gồm một câu giải thích về những gì phần mở rộng của bạn làm.\n" "Ví dụ như: %s" #: subprojects/extensions-tool/src/command-create.c:402 #: subprojects/extensions-tool/src/main.c:245 msgid "Description" msgstr "Mô tả" #: subprojects/extensions-tool/src/command-create.c:416 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" "UUID là mã định danh duy nhất trên toàn cầu cho tiện ích mở rộng của bạn.\n" "Cái này phải ở định dạng của một địa chỉ thư điện tử (clicktofocus@janedoe." "example.com)\n" #: subprojects/extensions-tool/src/command-create.c:443 msgid "Choose one of the available templates:\n" msgstr "Chọn một trong các mẫu có sẵn:\n" #: subprojects/extensions-tool/src/command-create.c:457 msgid "Template" msgstr "Mẫu" #: subprojects/extensions-tool/src/command-create.c:515 msgid "The unique identifier of the new extension" msgstr "Mã định danh duy nhất của tiện ích mở rộng mới" #: subprojects/extensions-tool/src/command-create.c:518 msgid "NAME" msgstr "TÊN" #: subprojects/extensions-tool/src/command-create.c:519 msgid "The user-visible name of the new extension" msgstr "Tên hiển thị của người dùng của tiện ích mở rộng mới" #: subprojects/extensions-tool/src/command-create.c:521 msgid "DESCRIPTION" msgstr "MÔ_TẢ" #: subprojects/extensions-tool/src/command-create.c:523 msgid "A short description of what the extension does" msgstr "Mô tả ngắn về những gì tiện ích mở rộng làm" #: subprojects/extensions-tool/src/command-create.c:525 #: subprojects/extensions-tool/src/command-pack.c:467 msgid "DOMAIN" msgstr "MIỀN" #: subprojects/extensions-tool/src/command-create.c:527 msgid "The gettext domain used by the extension" msgstr "Miền gettext để sử dụng cho phần mở rộng" #: subprojects/extensions-tool/src/command-create.c:529 #: subprojects/extensions-tool/src/command-pack.c:460 msgid "SCHEMA" msgstr "LƯỢC_ĐỒ" #: subprojects/extensions-tool/src/command-create.c:531 msgid "The GSettings schema used by the extension" msgstr "Lược đồ GSetting sử dụng bởi tiện ích mở rộng" #: subprojects/extensions-tool/src/command-create.c:534 msgid "TEMPLATE" msgstr "MẪU" #: subprojects/extensions-tool/src/command-create.c:535 msgid "The template to use for the new extension" msgstr "Mẫu để sử dụng cho tạo tiện ích mở rộng mới" #: subprojects/extensions-tool/src/command-create.c:538 msgid "Include prefs.js template" msgstr "Bao gồm mẫu prefs.js" #: subprojects/extensions-tool/src/command-create.c:544 msgid "Enter extension information interactively" msgstr "Nhập thông tin tiện ích mở rộng bằng tương tác" #: subprojects/extensions-tool/src/command-create.c:552 msgid "Create a new extension" msgstr "Tạo phần mở rộng mới" #: subprojects/extensions-tool/src/command-create.c:570 #: subprojects/extensions-tool/src/command-list.c:172 msgid "Unknown arguments" msgstr "Chưa biết tham số" #: subprojects/extensions-tool/src/command-create.c:595 msgid "UUID, name and description are required" msgstr "Bắt buộc có UUID, tên và mô tả" #: subprojects/extensions-tool/src/command-disable.c:62 #: subprojects/extensions-tool/src/command-enable.c:62 #, c-format msgid "Extension “%s” does not exist\n" msgstr "Phần mở rộng “%s” không tồn tại\n" #: subprojects/extensions-tool/src/command-disable.c:98 msgid "Disable an extension" msgstr "Tắt một phần mở rộng" #: subprojects/extensions-tool/src/command-disable.c:116 #: subprojects/extensions-tool/src/command-enable.c:116 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "Chưa cho UUID" #: subprojects/extensions-tool/src/command-disable.c:121 #: subprojects/extensions-tool/src/command-enable.c:121 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "Đã cho nhiều hơn một UUID" #: subprojects/extensions-tool/src/command-enable.c:98 msgid "Enable an extension" msgstr "Bật một phần mở rộng" #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:64 #: subprojects/extensions-tool/src/main.c:150 msgid "Failed to connect to GNOME Shell\n" msgstr "Gặp lỗi khi kết nối đến hệ vỏ GNOME\n" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:159 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "Phần mở rộng “%s” không tồn tại\n" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "Hiển thị thông tin các phần mở rộng" #: subprojects/extensions-tool/src/command-install.c:190 msgid "Overwrite an existing extension" msgstr "Ghi đè lên phần mở rộng có sẵn" #: subprojects/extensions-tool/src/command-install.c:192 msgid "EXTENSION_BUNDLE" msgstr "EXTENSION_BUNDLE" #: subprojects/extensions-tool/src/command-install.c:201 msgid "Install an extension bundle" msgstr "Cài đặt một gói phần mở rộng" #: subprojects/extensions-tool/src/command-install.c:219 msgid "No extension bundle specified" msgstr "Chưa chỉ định gói phần mở rộng nào" #: subprojects/extensions-tool/src/command-install.c:225 msgid "More than one extension bundle specified" msgstr "Đã chỉ định nhiều hơn một gói tiện ích mở rộng" #: subprojects/extensions-tool/src/command-list.c:128 msgid "Show user-installed extensions" msgstr "Hiển thị các Phần mở rộng do người dùng cài" #: subprojects/extensions-tool/src/command-list.c:131 msgid "Show system-installed extensions" msgstr "Hiển thị các Phần mở rộng do hệ thống cài" #: subprojects/extensions-tool/src/command-list.c:134 msgid "Show enabled extensions" msgstr "Hiển thị các Phần mở rộng được bật" #: subprojects/extensions-tool/src/command-list.c:137 msgid "Show disabled extensions" msgstr "Hiển thị các phần mở rộng bị tắt" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show extensions with preferences" msgstr "Hiển thị các phần mở rộng cùng với cài đặt" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show extensions with updates" msgstr "Hiển thị các phần mở rộng với các cập nhật" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Print extension details" msgstr "In chi tiết phần mở rộng" #: subprojects/extensions-tool/src/command-list.c:154 msgid "List installed extensions" msgstr "Liệt kê các phần mở rộng" #: subprojects/extensions-tool/src/command-pack.c:456 msgid "FILE" msgstr "TẬP_TIN" #: subprojects/extensions-tool/src/command-pack.c:457 msgid "Additional source to include in the bundle" msgstr "Nguồn bổ sung để bao gồm vào gói" #: subprojects/extensions-tool/src/command-pack.c:461 msgid "A GSettings schema that should be included" msgstr "Nên bao gồm một lược đồ GSettings" #: subprojects/extensions-tool/src/command-pack.c:463 #: subprojects/extensions-tool/src/command-pack.c:474 msgid "DIRECTORY" msgstr "THƯ_MỤC" #: subprojects/extensions-tool/src/command-pack.c:465 msgid "The directory where translations are found" msgstr "Thư mục nơi tìm thấy bản dịch" #: subprojects/extensions-tool/src/command-pack.c:469 msgid "The gettext domain to use for translations" msgstr "Miền gettext để sử dụng cho bản dịch" #: subprojects/extensions-tool/src/command-pack.c:472 msgid "Overwrite an existing pack" msgstr "Ghi đè gói sẵn có" #: subprojects/extensions-tool/src/command-pack.c:476 msgid "The directory where the pack should be created" msgstr "Thư mục nơi mà gói nên được tạo ở đó" #: subprojects/extensions-tool/src/command-pack.c:478 msgid "SOURCE_DIRECTORY" msgstr "THƯ_MỤC_NGUỒN" #: subprojects/extensions-tool/src/command-pack.c:487 msgid "Create an extension bundle" msgstr "Tạo một gói phần mở rộng" #: subprojects/extensions-tool/src/command-pack.c:507 msgid "More than one source directory specified" msgstr "Đã cho nhiều hơn một thư mục nguồn" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "Phần mở rộng “%s” không có phần cài đặt\n" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "Gặp lỗi khi mở prefs cho phần mở rộng “%s”: %s\n" #: subprojects/extensions-tool/src/command-prefs.c:87 msgid "Opens extension preferences" msgstr "Mở cài đặt phần mở rộng" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "Đặt lại một phần mở rộng" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "Không thể gỡ bỏ các mở rộng hệ thống\n" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "Gặp lỗi khi gỡ bỏ “%s”\n" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "Gỡ bỏ một phần mở rộng" #: subprojects/extensions-tool/src/main.c:76 msgid "Do not print error messages" msgstr "Đừng in thông tin lỗi" #: subprojects/extensions-tool/src/main.c:248 msgid "Path" msgstr "Đường dẫn" #: subprojects/extensions-tool/src/main.c:251 msgid "URL" msgstr "URL" #: subprojects/extensions-tool/src/main.c:254 msgid "Original author" msgstr "Tác giả đầu tiên" #: subprojects/extensions-tool/src/main.c:257 msgid "Version" msgstr "Phiên bản" #: subprojects/extensions-tool/src/main.c:260 msgid "State" msgstr "Tình trạng" #: subprojects/extensions-tool/src/main.c:298 msgid "“version” takes no arguments" msgstr "“version” không nhận đối số" #: subprojects/extensions-tool/src/main.c:300 #: subprojects/extensions-tool/src/main.c:320 msgid "Usage:" msgstr "Cách dùng:" #: subprojects/extensions-tool/src/main.c:303 msgid "Print version information and exit." msgstr "Hiển thị thông tin phiên bản rồi thoát." #: subprojects/extensions-tool/src/main.c:318 #: subprojects/extensions-tool/src/main.c:321 msgid "COMMAND" msgstr "CÂU_LỆNH" #: subprojects/extensions-tool/src/main.c:321 msgid "[ARGS…]" msgstr "[ĐSỐ…]" #: subprojects/extensions-tool/src/main.c:323 msgid "Commands:" msgstr "Lệnh:" #: subprojects/extensions-tool/src/main.c:324 msgid "Print help" msgstr "In trợ giúp" #: subprojects/extensions-tool/src/main.c:326 msgid "Enable extension" msgstr "Bật phần mở rộng" #: subprojects/extensions-tool/src/main.c:327 msgid "Disable extension" msgstr "Tắt phần mở rộng" #: subprojects/extensions-tool/src/main.c:328 msgid "Reset extension" msgstr "Đặt lại phần mở rộng" #: subprojects/extensions-tool/src/main.c:329 msgid "Uninstall extension" msgstr "Gỡ bỏ phần mở rộng" #: subprojects/extensions-tool/src/main.c:330 msgid "List extensions" msgstr "Liệt kê các phần mở rộng" #: subprojects/extensions-tool/src/main.c:331 #: subprojects/extensions-tool/src/main.c:332 msgid "Show extension info" msgstr "Hiển thị thông tin phần mở rộng" #: subprojects/extensions-tool/src/main.c:333 msgid "Open extension preferences" msgstr "Cá nhân hóa phần mở rộng" #: subprojects/extensions-tool/src/main.c:334 msgid "Create extension" msgstr "Tạo phần mở rộng" #: subprojects/extensions-tool/src/main.c:335 msgid "Package extension" msgstr "Đóng gói phần mở rộng" #: subprojects/extensions-tool/src/main.c:336 msgid "Install extension bundle" msgstr "Cài đặt gói phần mở rộng" #: subprojects/extensions-tool/src/main.c:338 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "Gõ lệnh “%s” để biết thêm chi tiết.\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "Đơn giản" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "Một phần mở rộng trống" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "Bộ chỉ thị" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "Thêm một biểu tượng vào thanh đỉnh" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:4 msgid "Quick Settings Item" msgstr "Mục Cài đặt nhanh" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:5 msgid "Add an item to quick settings" msgstr "Thêm một mục vào cài đặt nhanh" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1915 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u đầu ra" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1925 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u đầu vào" #: subprojects/gvc/gvc-mixer-control.c:2876 msgid "System Sounds" msgstr "Âm thanh hệ thống" #~ msgid "No Thanks" #~ msgstr "Không, cảm ơn" #, javascript-format #~ msgid "%d %%" #~ msgstr "%d %%" #~ msgid "" #~ "Whether the default Bluetooth adapter had set up devices associated to it" #~ msgstr "" #~ "Có nên để bộ điều hợp Bluetooth mặc định phải cài đặt thiết bị liên kết " #~ "với nó hay không" #~ msgid "" #~ "The shell will only show a Bluetooth menu item if a Bluetooth adapter is " #~ "powered, or if there were devices set up associated with the default " #~ "adapter. This will be reset if the default adapter is ever seen not to " #~ "have devices associated to it." #~ msgstr "" #~ "Hệ vỏ sẽ chỉ hiển thị mục tin trình đơn Bluetooth nếu nó được bật, hoặc " #~ "là có các thiết bị được cài đặt liên kết với bộ tiếp hợp mặc định. Cái " #~ "này sẽ được đặt lại nếu bộ tiếp hợp mặc định không còn được liên kết với " #~ "nó nữa." #~ msgid "Attach modal dialog to the parent window" #~ msgstr "Gắn hộp thoại dạng modal vào cửa sổ mẹ" #~ msgid "" #~ "This key overrides the key in org.gnome.mutter when running GNOME Shell." #~ msgstr "" #~ "Khóa này sẽ đè lên khóa có trong org.gnome.mutter khi chạy hệ vỏ GNOME." #~ msgid "Enable edge tiling when dropping windows on screen edges" #~ msgstr "Bật xếp lớp ở cạnh khi thả cửa sổ vào cạnh màn hình" #~ msgid "Workspaces are managed dynamically" #~ msgstr "Quản lý động vùng làm việc" #~ msgid "Workspaces only on primary monitor" #~ msgstr "Vùng làm việc chỉ ở trên màn hình chính" #~ msgid "Delay focus changes in mouse mode until the pointer stops moving" #~ msgstr "Khoảng trễ chờ cho con chuột ngừng di chuyển" #~ msgid "Region & Language Settings" #~ msgstr "Cài đặt Lãnh thổ & Ngôn ngữ" #~ msgid "Applications" #~ msgstr "Ứng dụng" #~ msgid "Screenshot / Screencast" #~ msgstr "Chụp màn hình/ Quay phim màn hình" #, javascript-format #~ msgid "Unable to start %s" #~ msgstr "Không thể khởi chạy %s" #, javascript-format #~ msgid "Couldn’t find the %s application" #~ msgstr "Không thể tìm thấy ứng dụng %s" #~ msgid "Bluetooth On" #~ msgstr "Bluetooth bật" #~ msgid "Bluetooth Off" #~ msgstr "Bluetooth tắt" #~ msgid "Location In Use" #~ msgstr "Vị trí đang dùng" #~ msgid "Location Disabled" #~ msgstr "Vị trí bị tắt" #, javascript-format #~ msgid "%s Off" #~ msgstr "%s Tắt" #, javascript-format #~ msgid "%s Connected" #~ msgstr "%s Đã kết nối" #, javascript-format #~ msgid "%s Unmanaged" #~ msgstr "%s Chưa được quản lý" #, javascript-format #~ msgid "%s Connecting" #~ msgstr "%s Đang kết nối" #, javascript-format #~ msgid "%s Requires Authentication" #~ msgstr "%s Cần xác thực" #, javascript-format #~ msgid "Firmware Missing For %s" #~ msgstr "Thiếu firmware cho %s" #, javascript-format #~ msgid "%s Unavailable" #~ msgstr "%s Không sẵn sàng" #, javascript-format #~ msgid "%s Connection Failed" #~ msgstr "%s Gặp lỗi khi kết nối" #, javascript-format #~ msgid "%s Hardware Disabled" #~ msgstr "%s Phần cứng bị tắt" #, javascript-format #~ msgid "%s Disabled" #~ msgstr "%s Bị tắt" #~ msgid "Connect to Internet" #~ msgstr "Kết nối vào Internet" #~ msgid "Airplane Mode is On" #~ msgstr "Chế độ máy bay đang được bật" #~ msgid "Wi-Fi is disabled when airplane mode is on." #~ msgstr "Wi-Fi bị tắt khi ở chế độ máy bay." #~ msgid "Turn Off Airplane Mode" #~ msgstr "Tắt chế độ máy bay" #~ msgid "Wi-Fi is Off" #~ msgstr "Wi-Fi bị tắt" #~ msgid "Wi-Fi needs to be turned on in order to connect to a network." #~ msgstr "Wi-Fi cần được bật để có thể kết nối mạng." #~ msgid "Turn On Wi-Fi" #~ msgstr "Bật Wi-Fi" #~ msgid "Wi-Fi Networks" #~ msgstr "Mạng Wi-Fi" #~ msgid "Select a network" #~ msgstr "Chọn một mạng" #~ msgid "Use hardware switch to turn off" #~ msgstr "Dùng nút tắt trên máy tính để tắt" #~ msgid "Select Network" #~ msgstr "Chọn mạng" #~ msgid "Wi-Fi Settings" #~ msgstr "Cài đặt Wi-Fi" #, javascript-format #~ msgid "%s Not Connected" #~ msgstr "%s Chưa kết nối" #~ msgid "connecting…" #~ msgstr "đang kết nối…" #~ msgid "authentication required" #~ msgstr "cần xác thực" #~ msgid "connection failed" #~ msgstr "gặp lỗi khi kết nối" #~ msgid "VPN Off" #~ msgstr "VPN Tắt" #~ msgid "Network Settings" #~ msgstr "Cài đặt mạng" #, javascript-format #~ msgid "%s Wi-Fi Connection" #~ msgid_plural "%s Wi-Fi Connections" #~ msgstr[0] "%s kết nối Wi-Fi" #~ msgid "Night Light Disabled" #~ msgstr "Ánh sang đêm bị tắt" #~ msgid "Resume" #~ msgstr "Tiếp tục lại" #~ msgid "Disable Until Tomorrow" #~ msgstr "Tắt cho đến ngày mai" #~ msgid "Fully Charged" #~ msgstr "Đã sạc đầy" #~ msgid "Not Charging" #~ msgstr "Không sạc" #~ msgid "Estimating…" #~ msgstr "Ước tính…" #, javascript-format #~ msgid "%d∶%02d Remaining (%d %%)" #~ msgstr "Còn %d∶%02d (%d %%)" #, javascript-format #~ msgid "%d∶%02d Until Full (%d %%)" #~ msgstr "Cho đến lúc đầy cần %d∶%02d (%d %%)" #~ msgid "Screen is Being Shared" #~ msgstr "Màn hình đang được chia sẻ" #~ msgid "Turn off" #~ msgstr "Tắt" #~ msgid "Airplane Mode On" #~ msgstr "Chế độ máy bay đang được bật" #~ msgid "Lock" #~ msgstr "Khóa" #~ msgid "Power Off / Log Out" #~ msgstr "Tắt máy / Đăng xuất" #~ msgid "Log Out" #~ msgstr "Đăng xuất" #~ msgid "Evolution Calendar" #~ msgstr "Lịch Evolution" #~ msgid "Remove from Favorites" #~ msgstr "Bỏ khỏi danh sách ưa thích" #~ msgid "Add to Favorites" #~ msgstr "Đánh dấu ưa thích" #~ msgid "Author" #~ msgstr "Tác giả" #~ msgid "Warning" #~ msgstr "Cảnh báo" #~ msgid "" #~ "Extensions can cause system issues, including performance problems. If " #~ "you encounter problems with your system, it is recommended to disable all " #~ "extensions." #~ msgstr "" #~ "Tiện ích mở rộng có thể gây ra sự cố hệ thống, bao gồm các vấn đề về hiệu " #~ "suất. Nếu bạn gặp sự cố với hệ thống của mình, bạn nên tắt tất cả các " #~ "tiện ích mở rộng." #~ msgid "Failed to connect to GNOME Shell" #~ msgstr "Gặp lỗi khi kết nối đến hệ vỏ GNOME" #~ msgid "Enable introspection API" #~ msgstr "Bật introspection API" #~ msgid "" #~ "Enables a D-Bus API that allows to introspect the application state of " #~ "the shell." #~ msgstr "" #~ "Bật một D-Bus API cái mà cho phép tự xem xét tình trạng ứng dụng của hệ " #~ "vỏ." #~ msgid "Minimize" #~ msgstr "Thu nhỏ" #~ msgid "Unmaximize" #~ msgstr "Thôi phóng lớn" #~ msgid "App Picker View" #~ msgstr "Bộ trình bày sàng lọc ứng dụng" #~ msgid "Index of the currently selected view in the application picker." #~ msgstr "" #~ "Mục lục của trình bày được chọn hiện tại trong bộ sàng lọc ứng dụng." #~ msgid "" #~ "Keybinding that pauses and resumes all running tweens, for debugging " #~ "purposes" #~ msgstr "" #~ "Phím ràng buộc cái mà dừng hay tiếp tục chạy, dành cho mục đích gỡ lỗi" #~ msgid "Which keyboard to use" #~ msgstr "Bàn phím được dùng" #~ msgid "The type of keyboard to use." #~ msgstr "Kiểu bàn phím được dùng." #~ msgid "network-workgroup" #~ msgstr "network-workgroup" #~ msgid "Copy Error" #~ msgstr "Sao chép lỗi" #~ msgid "Browse in Software" #~ msgstr "Duyệt trong “Phần mềm”" #~ msgid "Next" #~ msgstr "Kế tiếp" #~ msgctxt "button" #~ msgid "Sign In" #~ msgstr "Đăng nhập" #~ msgid "Frequently used applications will appear here" #~ msgstr "Những ứng dụng hay dùng sẽ xuất hiện ở đây" #~ msgid "Frequent" #~ msgstr "Hay dùng" #~ msgid "All" #~ msgstr "Tất cả" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d, %Y" #~ msgstr "%A, %-d %B, %Y" #~ msgid "Password:" #~ msgstr "Mật khẩu:" #~ msgid "Type again:" #~ msgstr "Nhập lại:" #~ msgid "Password: " #~ msgstr "Mật khẩu: " #~ msgid "Authentication required by wireless network" #~ msgstr "Mạng không dây cần xác thực" #~ msgid "Mobile broadband network password" #~ msgstr "Mật khẩu mạng băng thông rộng" #~ msgid "toggle-switch-us" #~ msgstr "toggle-switch-intl" #~ msgid "%A, %B %d" #~ msgstr "%A, %d %B" #~ msgid "%d new message" #~ msgid_plural "%d new messages" #~ msgstr[0] "%d tin nhắn mới" #~ msgid "%d new notification" #~ msgid_plural "%d new notifications" #~ msgstr[0] "%d thông báo mới" #~ msgid "On" #~ msgstr "Bật" #~ msgid "Account Settings" #~ msgstr "Cài đặt tài khoản" #~ msgid "Orientation Lock" #~ msgstr "Khóa hướng" #~ msgid "There was an error loading the preferences dialog for %s:" #~ msgstr "Có lỗi khi đang tải hộp thoại tùy thích cho %s:" #~ msgid "%s all day." #~ msgstr "%s cả ngày." #~ msgid "%s, then %s later." #~ msgstr "%s, sau đó %s." #~ msgid "%s, then %s, followed by %s later." #~ msgstr "%s, sau đó %s, tiếp theo là %s." #~ msgid "Feels like %s." #~ msgstr "Nhiệt độ %s." #~ msgctxt "search-result" #~ msgid "Log out" #~ msgstr "Đăng xuất" #~ msgctxt "search-result" #~ msgid "Switch user" #~ msgstr "Chuyển người dùng" #~ msgid "Hide tray" #~ msgstr "Ẩn khay" #~ msgid "Status Icons" #~ msgstr "Biểu tượng trạng thái" #~ msgid "Web Authentication Redirect" #~ msgstr "Chuyển hướng xác thực Web" #~ msgid "Events" #~ msgstr "Sự kiện" #~ msgid "Notifications" #~ msgstr "Thông báo" #~ msgid "Media" #~ msgstr "Đa phương tiện" #~ msgid "%d x %d" #~ msgstr "%d x %d" #~ msgid "Show the week date in the calendar" #~ msgstr "Hiện tuần trên lịch" #~ msgid "If true, display the ISO week date in the calendar." #~ msgstr "Nếu được đặt, hiện tuần trong lịch theo chuẩn ISO." #~ msgid "Use as Internet connection" #~ msgstr "Dùng làm kết nối internet" #~ msgid "GNOME Shell (wayland compositor)" #~ msgstr "Hệ vỏ GNOME (wayland compositor)" #~ msgid "%d Connected Device" #~ msgid_plural "%d Connected Devices" #~ msgstr[0] "%d thiết bị đã kết nối" #~ msgid "UPS" #~ msgstr "UPS" #~ msgid "Battery" #~ msgstr "Pin" #~ msgid "Show the message tray" #~ msgstr "Hiện khay thông báo" #~ msgctxt "event list time" #~ msgid "%H∶%M" #~ msgstr "%H∶%M" #~ msgctxt "event list time" #~ msgid "%l∶%M %p" #~ msgstr "%l∶%M %p" #~ msgctxt "list sunday" #~ msgid "Su" #~ msgstr "CN" #~ msgctxt "list monday" #~ msgid "M" #~ msgstr "T2" #~ msgctxt "list tuesday" #~ msgid "T" #~ msgstr "T3" #~ msgctxt "list wednesday" #~ msgid "W" #~ msgstr "T4" #~ msgctxt "list thursday" #~ msgid "Th" #~ msgstr "T5" #~ msgctxt "list friday" #~ msgid "F" #~ msgstr "T6" #~ msgctxt "list saturday" #~ msgid "S" #~ msgstr "T7" #~ msgid "Nothing Scheduled" #~ msgstr "Không có lịch hẹn" #~ msgid "This week" #~ msgstr "Tuần này" #~ msgid "Next week" #~ msgstr "Tuần tới" #~ msgid "Removable Devices" #~ msgstr "Thiết bị di động" #~ msgid "Eject" #~ msgstr "Đẩy ra" #~ msgid "Invitation" #~ msgstr "Mời" #~ msgid "Call" #~ msgstr "Gọi" #~ msgid "File Transfer" #~ msgstr "Truyền tập tin" #~ msgid "Chat" #~ msgstr "Chat" #~ msgid "Invitation to %s" #~ msgstr "Mời vào phòng %s" #~ msgid "%s is inviting you to join %s" #~ msgstr "%s đang mời bạn vào phòng %s" #~ msgid "Decline" #~ msgstr "Từ chối" #~ msgid "Accept" #~ msgstr "Nhận lời" #~ msgid "Video call from %s" #~ msgstr "Cuộc gọi có hình từ %s" #~ msgid "Call from %s" #~ msgstr "Cuộc gọi từ %s" #~ msgid "Answer" #~ msgstr "Trả lời" #~ msgid "%s is sending you %s" #~ msgstr "%s đang gửi bạn %s" #~ msgid "%s would like permission to see when you are online" #~ msgstr "%s muốn được phép được thông báo khi bạn trực tuyến" #~ msgid "Authentication failed" #~ msgstr "Lỗi xác thực" #~ msgid "Encryption error" #~ msgstr "Lỗi mã hóa" #~ msgid "Certificate not provided" #~ msgstr "Chưa cung cấp chứng nhận" #~ msgid "Certificate untrusted" #~ msgstr "Chứng nhận không đáng tin" #~ msgid "Certificate expired" #~ msgstr "Chứng nhận hết hạn" #~ msgid "Certificate not activated" #~ msgstr "Chứng nhận chưa kích hoạt" #~ msgid "Certificate hostname mismatch" #~ msgstr "Tên máy của chứng nhận không khớp" #~ msgid "Certificate fingerprint mismatch" #~ msgstr "Dấu vân tay chứng nhận không khớp" #~ msgid "Certificate self-signed" #~ msgstr "Chứng nhận tự ký" #~ msgid "Status is set to offline" #~ msgstr "Đã đặt trạng thái là ngoại tuyến" #~ msgid "Certificate is invalid" #~ msgstr "Chứng nhận không hợp lệ" #~ msgid "Connection has been refused" #~ msgstr "Kết nối bị từ chối" #~ msgid "Connection can't be established" #~ msgstr "Không thể tạo kết nối" #~ msgid "Connection has been lost" #~ msgstr "Mất kết nối" #~ msgid "This account is already connected to the server" #~ msgstr "Tài khoản này đã kết nối đến máy chủ" #~ msgid "" #~ "Connection has been replaced by a new connection using the same resource" #~ msgstr "Kết nối bị thay thế bằng một kết nối mới cùng tài nguyên" #~ msgid "The account already exists on the server" #~ msgstr "Tài khoản đã có trên máy chủ" #~ msgid "Server is currently too busy to handle the connection" #~ msgstr "Máy chủ đang bận không thể xử lý kết nối" #~ msgid "Certificate has been revoked" #~ msgstr "Chứng nhận bị thu hồi" #~ msgid "" #~ "Certificate uses an insecure cipher algorithm or is cryptographically weak" #~ msgstr "Chứng nhận dùng thuật toán mật mã yếu hoặc không an toàn" #~ msgid "" #~ "The length of the server certificate, or the depth of the server " #~ "certificate chain, exceed the limits imposed by the cryptography library" #~ msgstr "" #~ "Độ dài của chứng nhận máy chủ, hoặc độ sâu của chuỗi chứng nhận, vượt quá " #~ "giới hạn của thư viện mật mã" #~ msgid "Internal error" #~ msgstr "Lỗi nội bộ" #~ msgid "View account" #~ msgstr "Xem tài khoản" #~ msgid "Date & Time Settings" #~ msgstr "Cài đặt ngày giờ" #~ msgid "Open" #~ msgstr "Mở" #~ msgid "Clear Messages" #~ msgstr "Xóa thông báo" #~ msgid "Notification Settings" #~ msgstr "Cài đặt thông báo" #~ msgid "Tray Menu" #~ msgstr "Trình đơn khay" #~ msgid "No Messages" #~ msgstr "Không có thông báo" #~ msgid "Message Tray" #~ msgstr "Khay thông báo" #~ msgid "List of categories that should be displayed as folders" #~ msgstr "Liệt kê các các-ta-lốc mà nó có thể hiển thị như một thư mục" #~ msgid "" #~ "Each category name in this list will be represented as folder in the " #~ "application view, rather than being displayed inline in the main view." #~ msgstr "" #~ "Mỗi tên các-ta-lốc trong danh sách này sẽ được xuất hiện như là một thư " #~ "mục trong trình bày ứng dụng, thay vì hiển thị cùng dòng trong trình bày " #~ "chính. " #~ msgid "" #~ "Internally used to store the last IM presence explicitly set by the user. " #~ "The value here is from the TpConnectionPresenceType enumeration." #~ msgstr "" #~ "Dùng để lưu nội bộ sự hiện diện IM lần cuối do người dùng đặt. Giá trị ở " #~ "đây từ enumeration TpConnectionPresenceType." #~ msgid "" #~ "Internally used to store the last session presence status for the user. " #~ "The value here is from the GsmPresenceStatus enumeration." #~ msgstr "" #~ "Dùng để lưu nội bộ sự hiện diện IM lần cuối do người dùng đặt. Giá trị ở " #~ "đây từ enumeration GsmPresenceStatus." #~ msgid "Keybinding to toggle the screen recorder" #~ msgstr "Phím để bật/tắt trình quay phim màn hình" #~ msgid "Keybinding to start/stop the builtin screen recorder." #~ msgstr "Phím để quay/dừng việc quay phim màn hình." #~ msgid "Framerate used for recording screencasts." #~ msgstr "Tốc độ khung hình sẽ dùng khi ghi screencast." #~ msgid "" #~ "The framerate of the resulting screencast recordered by GNOME Shell's " #~ "screencast recorder in frames-per-second." #~ msgstr "" #~ "Tốc độ khung hình của screencast được ghi bởi bộ thu Hệ vỏ GNOME tính " #~ "theo số khung mỗi giây." #~ msgid "The gstreamer pipeline used to encode the screencast" #~ msgstr "Ống dẫn gstreamer dùng để thu screencast" #~ msgid "" #~ "Sets the GStreamer pipeline used to encode recordings. It follows the " #~ "syntax used for gst-launch. The pipeline should have an unconnected sink " #~ "pad where the recorded video is recorded. It will normally have a " #~ "unconnected source pad; output from that pad will be written into the " #~ "output file. However the pipeline can also take care of its own output - " #~ "this might be used to send the output to an icecast server via shout2send " #~ "or similar. When unset or set to an empty value, the default pipeline " #~ "will be used. This is currently 'vp8enc min_quantizer=13 max_quantizer=13 " #~ "cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux' and records to " #~ "WEBM using the VP8 codec. %T is used as a placeholder for a guess at the " #~ "optimal thread count on the system." #~ msgstr "" #~ "Đặt ống dẫn GStreamer dùng để thu hình. Tuân theo cú pháp gst-launch. Ống " #~ "dẫn nên có pad sink không kết nối, nơi bắt đầu thu. Bình thường cũng nên " #~ "có source pad không kết nối; đầu ra từ pad sẽ được ghi vào tập tin kết " #~ "quả. Tuy nhiên ống dẫn có thể tự lưu đầu ra riêng - có thể hữu dụng để " #~ "gửi kết quả đến máy chủ icecast thông qua shout2send hoặc tương tự. Nếu " #~ "bỏ chọn hoặc đặt giá trị rỗng, ống dẫn mặc định sẽ được dùng, hiện thời " #~ "là “vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 " #~ "threads=%T ! queue ! webmmux” và lưu ở dạng WEBM dùng VP8 codec. %T được " #~ "dùng để thế chỗ cho số thread dự đoán tối ưu cho hệ thống." #~ msgid "File extension used for storing the screencast" #~ msgstr "Phần mở rộng dùng để lưu screencast" #~ msgid "" #~ "The filename for recorded screencasts will be a unique filename based on " #~ "the current date, and use this extension. It should be changed when " #~ "recording to a different container format." #~ msgstr "" #~ "Tên tập tin cho screencast được lưu sẽ là tên độc nhất dự trên ngày hiện " #~ "thời, và dùng phần mở rộng này. Khi lưu ở định dạng khác nhau thì tên này " #~ "cũng nên khác nhau." #~ msgid "Arrangement of buttons on the titlebar" #~ msgstr "Sắp đặt các nút trên thanh tiêu đề" #~ msgid "" #~ "This key overrides the key in org.gnome.desktop.wm.preferences when " #~ "running GNOME Shell." #~ msgstr "" #~ "Khóa này đè lên khóa có trong org.gnome.desktop.wm.preferences khi chạy " #~ "hệ vỏ GNOME." #~ msgid "Select an extension to configure using the combobox above." #~ msgstr "Chọn phần mở rộng để cấu hình dùng hộp chọn." #~ msgid "Power" #~ msgstr "Nguồn" #~ msgctxt "event list time" #~ msgid "%H\\u2236%M" #~ msgstr "%H\\u2236%M" #~ msgctxt "event list time" #~ msgid "%l\\u2236%M\\u2009%p" #~ msgstr "%l\\u2236%M\\u2009%p" #~ msgid "%A, %H:%M" #~ msgstr "%A, %H:%M" #~ msgid "%B %d, %H:%M" #~ msgstr "%d %B, %H:%M" #~ msgid "%B %d %Y, %H:%M " #~ msgstr "%H:%M, %d %B %Y " #~ msgid "Click Log Out to quit these applications and log out of the system." #~ msgstr "" #~ "Nhấn Đăng xuất để thoát những ứng dụng này và đăng xuất khỏi hệ thống." #~ msgid "Logging out of the system." #~ msgstr "Đang xuất khỏi hệ thống." #~ msgid "Click Power Off to quit these applications and power off the system." #~ msgstr "Nhấn Tắt máy để thoát những ứng dụng này và tắt máy." #~ msgid "Powering off the system." #~ msgstr "Tắt máy." #~ msgid "Click Restart to quit these applications and restart the system." #~ msgstr "" #~ "Bấm vào \"Khởi động lại\" để thoát khỏi những ứng dụng này và khởi động " #~ "lại hệ thống." #~ msgid "Restarting the system." #~ msgstr "Khởi động lại hệ thống." #~ msgid "Universal Access Settings" #~ msgstr "Cài đặt hỗ trợ truy cập" #~ msgid "Visibility" #~ msgstr "Tầm nhìn" #~ msgid "Set Up a New Device…" #~ msgstr "Cài đặt thiết bị mới…" #~ msgid "Send Files…" #~ msgstr "Gửi tập tin…" #~ msgid "Mouse Settings" #~ msgstr "Cài đặt chuột" #~ msgid "Authorization request from %s" #~ msgstr "Yêu cầu cấp quyền từ %s" #~ msgid "Device %s wants to pair with this computer" #~ msgstr "Thiết bị %s muốn kết nối với máy tính này" #~ msgid "Device %s wants access to the service '%s'" #~ msgstr "Thiết bị %s muốn truy cập dịch vụ “%s”" #~ msgid "Grant this time only" #~ msgstr "Chỉ cho phép lần này" #~ msgid "Reject" #~ msgstr "Từ chối" #~ msgid "Pairing confirmation for %s" #~ msgstr "Xác nhận kết nối cho %s" #~ msgid "" #~ "Please confirm whether the Passkey '%06d' matches the one on the device." #~ msgstr "" #~ "Vui lòng xác nhận Passkey “%06d” nào tương ứng với nó trên thiết bị." #~ msgid "Does not match" #~ msgstr "Không khớp" #~ msgid "Pairing request for %s" #~ msgstr "Yêu cầu kết nối cho %s" #~ msgid "Please enter the PIN mentioned on the device." #~ msgstr "Vui lòng nhập số PIN ghi trên thiết bị." #~ msgid "OK" #~ msgstr "OK" #~ msgid "Volume, network, battery" #~ msgstr "Đĩa, mạng, pin" #~ msgid "Wi-Fi" #~ msgstr "Wi-Fi" #~ msgid "disabled" #~ msgstr "tắt" #~ msgid "unavailable" #~ msgstr "không có mặt" #~ msgid "More…" #~ msgstr "Nữa…" #~ msgid "Wired" #~ msgstr "Mạng dây" #~ msgid "%d %s %d %s remaining" #~ msgstr "%d %s %d %s còn lại" #~ msgid "hour" #~ msgid_plural "hours" #~ msgstr[0] "giờ" #~ msgid "minute" #~ msgid_plural "minutes" #~ msgstr[0] "phút" #~ msgid "AC Adapter" #~ msgstr "Nguồn AC" #~ msgid "Laptop Battery" #~ msgstr "Pin Máy tính xách tay" #~ msgid "Monitor" #~ msgstr "Màn hình" #~ msgid "Mouse" #~ msgstr "Chuột" #~ msgid "PDA" #~ msgstr "PDA" #~ msgid "Cell Phone" #~ msgstr "Điện thoại di động" #~ msgid "Media Player" #~ msgstr "Máy nghe nhạc" #~ msgid "Tablet" #~ msgstr "Bảng" #~ msgid "Computer" #~ msgstr "Máy tính" #~ msgctxt "device" #~ msgid "Unknown" #~ msgstr "Không biết" #~ msgid "Available" #~ msgstr "Có mặt" #~ msgid "Busy" #~ msgstr "Bận" #~ msgid "Invisible" #~ msgstr "Giấu mặt" #~ msgid "Away" #~ msgstr "Vắng mặt" #~ msgid "Idle" #~ msgstr "Nhàn rỗi" #~ msgid "Your chat status will be set to busy" #~ msgstr "Trạng thái nhắn tin của bạn sẽ được đặt là bận" #~ msgid "" #~ "Notifications are now disabled, including chat messages. Your online " #~ "status has been adjusted to let others know that you might not see their " #~ "messages." #~ msgstr "" #~ "Thông báo đã bị tắt, bao gồm tin nhắn. Trạng thái trực tuyến của bạn đã " #~ "được điều chỉnh để mọi người biết bạn sẽ không xem tin nhắn họ gửi đến." #~ msgid "Shutting down might cause them to lose unsaved work." #~ msgstr "Tắt sẽ làm mất những kết quả chưa được lưu." #~ msgid "" #~ "Sorry, no wisdom for you today:\n" #~ "%s" #~ msgstr "" #~ "Rất tiếc, hôm nay không có lời thông thái nào:\n" #~ "%s" #~ msgid "%s the Oracle says" #~ msgstr "Nhà tiên tri %s nói" #~ msgid "Whether to collect stats about applications usage" #~ msgstr "Có thu thập thống kê sử dụng ứng dụng không" #~ msgid "" #~ "The shell normally monitors active applications in order to present the " #~ "most used ones (e.g. in launchers). While this data will be kept private, " #~ "you may want to disable this for privacy reasons. Please note that doing " #~ "so won't remove already saved data." #~ msgstr "" #~ "GNOME Shell bình thường sẽ theo dõi các ứng dụng tích cực để thể hiện phù " #~ "hợp (ví dụ, bộ phóng). Mặc dù thông tin này là riêng tư, bạn vẫn có thể " #~ "tắt vì lý do cá nhân. Chú ý là làm vậy sẽ không xóa bỏ những dữ liệu đã " #~ "có." #~ msgid "cable unplugged" #~ msgstr "cáp bị tháo" #~ msgid "Auto Ethernet" #~ msgstr "Ethernet tự động" #~ msgid "Auto broadband" #~ msgstr "Băng thông rộng tự động" #~ msgid "Auto dial-up" #~ msgstr "Quay số tự động" #~ msgid "Auto %s" #~ msgstr "%s tự động" #~ msgid "Auto bluetooth" #~ msgstr "Bluetooth tự động" #~ msgid "Auto wireless" #~ msgstr "Mạng không dây tự động" #~ msgctxt "title" #~ msgid "Sign In" #~ msgstr "Đăng nhập" #~ msgid "tray" #~ msgstr "khay" #~ msgid "More..." #~ msgstr "Nữa…" #~ msgid "disabled OpenSearch providers" #~ msgstr "Phần cung cấp OpenSearch bị tắt" #~ msgid "APPLICATIONS" #~ msgstr "ỨNG DỤNG" #~ msgid "SETTINGS" #~ msgstr "CÀI ĐẶT" #~ msgctxt "event list time" #~ msgid "%H:%M" #~ msgstr "%H:%M" #~ msgid "Failed to unmount '%s'" #~ msgstr "Lỗi bỏ gắn kết “%s”" #~ msgid "Retry" #~ msgstr "Thử lại" #~ msgid "PLACES & DEVICES" #~ msgstr "ĐỊA ĐIỂM & THIẾT BỊ" #~ msgid "Browse Files..." #~ msgstr "Duyệt tập tin…" #~ msgid "Error browsing device" #~ msgstr "Lỗi duyệt tập tin" #~ msgid "The requested device cannot be browsed, error is '%s'" #~ msgstr "Không thể duyệt thiết bị yêu cầu , lỗi là “%s”" #~ msgid "Wireless" #~ msgstr "Mạng không dây" #~ msgid "VPN Connections" #~ msgstr "Kết nối VPN" #~ msgid "Subscription request" #~ msgstr "Yêu cầu đăng ký" #~ msgid "Sent at %X on %A" #~ msgstr "Đã gửi %X lúc %A" #~ msgid "Sent on %A, %B %d, %Y" #~ msgstr "Đã gửi %A, %d %B, %Y" #~ msgid "Connection to %s failed" #~ msgstr "Kết nối %s thất bại" #~ msgid "Reconnect" #~ msgstr "Tái kết nối" #~ msgid "System Settings" #~ msgstr "Cài đặt hệ thống" #~ msgid "Your favorite Easter Egg" #~ msgstr "Trứng phục sinh yêu thích của bạn" #~ msgid "United Kingdom" #~ msgstr "Vương quốc Anh" #~ msgid "Default" #~ msgstr "Mặc định" #~ msgid "%1$s: %2$s" #~ msgstr "%1$s: %2$s" #~ msgid "Passphrase" #~ msgstr "Mật khẩu" #~ msgid "%s is online." #~ msgstr "%s đang trực tuyến." #~ msgid "%s is offline." #~ msgstr "%s đã ngoại tuyến." #~ msgid "%s is away." #~ msgstr "%s đi vắng." #~ msgid "%s is busy." #~ msgstr "%s bận." #~ msgid "Show time with seconds" #~ msgstr "Hiện giây" #~ msgid "If true, display seconds in time." #~ msgstr "Nếu đúng (true), hiện giây." #~ msgid "Show date in clock" #~ msgstr "Hiện ngày trên đồng hồ" #~ msgid "If true, display date in the clock, in addition to time." #~ msgstr "Nếu đúng (true), hiện ngày trên đồng hồ, bên cạnh giờ." #~ msgid "CONTACTS" #~ msgstr "LIÊN LẠC" #~ msgid "%a %b %e, %R:%S" #~ msgstr "%a %R:%S, %e %b" #~ msgid "%a %b %e, %R" #~ msgstr "%a %R, %e %b" #~ msgid "%a %R:%S" #~ msgstr "%a %R:%S" #~ msgid "%a %R" #~ msgstr "%a %R" #~ msgid "%a %b %e, %l:%M:%S %p" #~ msgstr "%a %e %b, %l:%M:%S %p" #~ msgid "%a %l:%M:%S %p" #~ msgstr "%a %l:%M:%S %p" #~ msgid "Wrong password, please try again" #~ msgstr "Nhập sai mật khẩu, xin hãy thử lại" #~ msgid "Hidden" #~ msgstr "Ẩn" #~ msgid "Power Off..." #~ msgstr "Tắt máy…" #~ msgid "Online Accounts" #~ msgstr "Tài khoản trực tuyến" #~ msgid "Log Out..." #~ msgstr "Đăng xuất…" #~ msgid "RECENT ITEMS" #~ msgstr "MỤC GẦN ĐÂY" #~ msgid "" #~ "GNOME Shell extensions have a uuid property; this key lists extensions " #~ "which should be loaded. disabled-extensions overrides this setting for " #~ "extensions that appear in both lists." #~ msgstr "" #~ "Phần mở rộng GNOME Shell có thuộc tính uuid. Khóa này liệt kê danh sách " #~ "phần mở rộng cần phải nạp. disabled-extensions ghi đè vào khóa này đối " #~ "với những phần mở rộng có mặt ở cả hai danh sách." #~ msgid "Show password" #~ msgstr "Hiện mật khẩu" 0707010000026D000081A40000000000000000000000016712993F0001A295000000000000000000000000000000000000001D00000000gnome-shell-47.1/po/zh_CN.po# Chinese (China) translation for gnome-shell. # Copyright (C) 2010-2021 gnome-shell's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-shell package. # jiero , 2010. # Jessica Ban , 2010. # zhang ping , 2010. # 指冷玉笙寒 (dhyang) , 2010 # Ray Wang , 2009, 2011. # 李炜 , 2011. # chiachen , 2011. # StarBrilliant , 2011 # YunQiang Su , 2010, 2011, 2012. # Wylmer Wang , 2013, 2014. # hui , 2013, 2014. # mosquito , 2014. # Tong Hui , 2013, 2014, 2015. # Aron Xu , 2010, 2011, 2012, 2013, 2015, 2016. # liushuyu , 2015, 2016. # Mingcong Bai , 2015, 2016, 2017. # Dingzhong Chen , 2018-2021. # Liu Tao , 2021. # Nanling , 2023. # lumingzh , 2022-2024. # msgid "" msgstr "" "Project-Id-Version: gnome-shell master\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues/\n" "POT-Creation-Date: 2024-08-06 15:18+0000\n" "PO-Revision-Date: 2024-08-24 13:27+0800\n" "Last-Translator: lumingzh \n" "Language-Team: Chinese (China) \n" "Language: zh_CN\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: Gtranslator 46.1\n" "X-DL-Team: zh_CN\n" "X-DL-Module: gnome-shell\n" "X-DL-Branch: main\n" "X-DL-Domain: po\n" "X-DL-State: Translating\n" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "启动器" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate pinned app 1" msgstr "激活固定应用 1" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate pinned app 2" msgstr "激活固定应用 2" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate pinned app 3" msgstr "激活固定应用 3" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate pinned app 4" msgstr "激活固定应用 4" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate pinned app 5" msgstr "激活固定应用 5" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate pinned app 6" msgstr "激活固定应用 6" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate pinned app 7" msgstr "激活固定应用 7" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate pinned app 8" msgstr "激活固定应用 8" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate pinned app 9" msgstr "激活固定应用 9" #: data/50-gnome-shell-launchers.xml:46 msgid "Open new window of pinned app 1" msgstr "为固定应用 1 打开新窗口" #: data/50-gnome-shell-launchers.xml:50 msgid "Open new window of pinned app 2" msgstr "为固定应用 2 打开新窗口" #: data/50-gnome-shell-launchers.xml:54 msgid "Open new window of pinned app 3" msgstr "为固定应用 3 打开新窗口" #: data/50-gnome-shell-launchers.xml:58 msgid "Open new window of pinned app 4" msgstr "为固定应用 4 打开新窗口" #: data/50-gnome-shell-launchers.xml:62 msgid "Open new window of pinned app 5" msgstr "为固定应用 5 打开新窗口" #: data/50-gnome-shell-launchers.xml:66 msgid "Open new window of pinned app 6" msgstr "为固定应用 6 打开新窗口" #: data/50-gnome-shell-launchers.xml:70 msgid "Open new window of pinned app 7" msgstr "为固定应用 7 打开新窗口" #: data/50-gnome-shell-launchers.xml:74 msgid "Open new window of pinned app 8" msgstr "为固定应用 8 打开新窗口" #: data/50-gnome-shell-launchers.xml:78 msgid "Open new window of pinned app 9" msgstr "为固定应用 9 打开新窗口" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2274 msgid "Screenshots" msgstr "截图" #: data/50-gnome-shell-screenshots.xml:9 #: data/org.gnome.shell.gschema.xml.in:287 msgid "Take a screenshot interactively" msgstr "交互式截图" #: data/50-gnome-shell-screenshots.xml:12 #: data/org.gnome.shell.gschema.xml.in:299 msgid "Take a screenshot" msgstr "截图" #: data/50-gnome-shell-screenshots.xml:15 #: data/org.gnome.shell.gschema.xml.in:295 msgid "Take a screenshot of a window" msgstr "对窗口进行截图" #: data/50-gnome-shell-screenshots.xml:18 #: data/org.gnome.shell.gschema.xml.in:291 msgid "Record a screencast interactively" msgstr "交互式录屏" #: data/50-gnome-shell-system.xml:6 js/ui/messageTray.js:1298 msgid "System" msgstr "系统" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "显示通知列表" #: data/50-gnome-shell-system.xml:12 msgid "Open the quick settings menu" msgstr "打开快速设置菜单" #: data/50-gnome-shell-system.xml:15 msgid "Focus the active notification" msgstr "聚焦到活动通知" #: data/50-gnome-shell-system.xml:18 msgid "Show the overview" msgstr "显示概览" #: data/50-gnome-shell-system.xml:21 msgid "Show all apps" msgstr "显示全部应用" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "GNOME Shell" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "窗口管理与应用程序启动" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "启用从 Alt-F2 调用对开发者和测试者有用的内部工具" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "允许使用 Alt-F2 对话框访问内部调试和监视工具。" #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "要启用的扩展的 UUID" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "GNOME Shell 扩展有一个 UUID 属性,此键列出了应该加载的扩展。任何需要加载的扩" "展都需出现在此列表中。您还可以通过 DBus 的方式对 org.gnome.Shell 里的 " "EnableExtension 和 DisableExtension 的值进行修改,以修改此列表。" #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "要强制禁用的扩展的 UUID" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" "GNOME Shell 扩展有一个 UUID 属性,此键列出了应该禁用的扩展,不管它们是否在当" "前模式中已加载。您还可以通过 DBus 的方式对 org.gnome.Shell 里的 " "EnableExtension 和 DisableExtension 的值进行修改,以修改此列表。此键优先" "于“enabled-extensions”设置。" #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "禁用用户扩展" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "禁用所有用户启用的扩展而不影响“enabled-extension”键值的设置。" #: data/org.gnome.shell.gschema.xml.in:45 msgid "Allow extension installation" msgstr "允许安装扩展" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "Allow users to install extensions in their home folder. If disabled, the " "InstallRemoteExtension D-Bus method will fail, and extensions are only " "loaded from system directories on startup. It does not affect extensions " "that are already loaded, so a change only takes full effect on the next " "login." msgstr "" "允许用户在他们的主文件夹中安装扩展。如果禁用,InstallRemoteExtension 的 D-" "Bus 方式将失败,且在启动时仅从系统目录加载扩展。该选项不会影响已经加载的扩" "展,所以作出的更改将在下次登录时完全生效。" #: data/org.gnome.shell.gschema.xml.in:56 msgid "Disables the validation of extension version compatibility" msgstr "禁用检查扩展版本兼容性" #: data/org.gnome.shell.gschema.xml.in:57 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "GNOME 只会加载声明支持当前运行版本的扩展。启用该选项会禁止此检查,并尝试加载" "所有扩展,无视它们声明支持的版本。" #: data/org.gnome.shell.gschema.xml.in:65 msgid "List of desktop file IDs for favorite applications" msgstr "收藏夹中应用程序桌面文件的 ID 列表" #: data/org.gnome.shell.gschema.xml.in:66 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "符合这些标示的应用程序将显示在收藏区中。" #: data/org.gnome.shell.gschema.xml.in:73 msgid "History for command (Alt-F2) dialog" msgstr "命令对话框 (Alt-F2) 的历史记录" # http://live.gnome.org/GnomeShell/LookingGlass #. Translators: looking glass is a debugger and inspector tool, see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/docs/looking-glass.md #: data/org.gnome.shell.gschema.xml.in:78 msgid "History for the looking glass dialog" msgstr "Looking Glass 控制台历史" #: data/org.gnome.shell.gschema.xml.in:82 msgid "Always show the “Log Out” action in the system menu" msgstr "总在系统菜单中显示“登出”动作" #: data/org.gnome.shell.gschema.xml.in:83 msgid "" "This key overrides the automatic hiding of the “Log out” action in the " "system menu for logged-in situations where there is a single, local, non-" "system user and only a single available session type (e.g. GNOME on Wayland)." msgstr "" "系统菜单中的“登出”动作会在仅有单个、本地、非系统用户和仅有单个可用会话类型" "(比如 GNOME on Wayland)的登录情形下自动隐藏,而该设置键会覆盖这个行为。" #: data/org.gnome.shell.gschema.xml.in:92 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "是否记住挂载加密文件系统或远程文件系统时所使用的密码" #: data/org.gnome.shell.gschema.xml.in:93 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "挂载加密设备或远程文件系统时 Shell 将要求输入密码。如果该密码可以记住并在今后" "使用,则会有“记住密码”复选框出现。这个键设置了该复选框的默认状态。" #: data/org.gnome.shell.gschema.xml.in:102 msgid "The last selected non-default power profile" msgstr "上次选择的非默认性能配置文件" #: data/org.gnome.shell.gschema.xml.in:103 msgid "" "Some systems support more than two power profiles. In order to still support " "toggling between two profiles, this key records the last selected non-" "default profile." msgstr "" "一些系统支持多于两种性能配置文件。为了仍然支持在两种配置文件间切换,该设置键" "记录上次选择的非默认配置文件。" #: data/org.gnome.shell.gschema.xml.in:111 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "上一次“欢迎使用 GNOME”对话框显示时对应的版本" #: data/org.gnome.shell.gschema.xml.in:112 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can " "be used to effectively disable the dialog." msgstr "" "本键位确定上一次“欢迎使用 GNOME”对话框显示时对应的版本。如字符串为空,则默认" "对应最旧的版本;一个非常大的数字指代尚未存在的版本。使用大数字可以等效于禁用" "该对话框。" #: data/org.gnome.shell.gschema.xml.in:145 msgid "Layout of the app picker" msgstr "应用选择器的布局" #: data/org.gnome.shell.gschema.xml.in:146 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" msgstr "" "应用选择器的布局。列表中的每个条目都是一个页面。页面按在 GNOME Shell 中显示的" "顺序存储。每个页面都包含一个“应用程序 ID”→“数据”对。目前,以下值存储为“数" "据”:•“位置\":应用程序图标在页面中的位置" #: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:172 msgid "Keybinding to shift between overview states" msgstr "用于在概览状态之间切换的快捷键" #: data/org.gnome.shell.gschema.xml.in:166 msgid "Keybinding to shift between session, window picker and app grid" msgstr "用于在会话、窗口拾取器和应用网格之间切换的快捷键" #: data/org.gnome.shell.gschema.xml.in:173 msgid "Keybinding to shift between app grid, window picker and session" msgstr "用于在应用网格、窗口拾取器和会话之间切换的快捷键" #: data/org.gnome.shell.gschema.xml.in:179 msgid "Keybinding to open the “Show Applications” view" msgstr "用于打开“显示应用程序”视图的快捷键" #: data/org.gnome.shell.gschema.xml.in:180 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "用于打开活动概览中的“显示应用程序”视图的快捷键。" #: data/org.gnome.shell.gschema.xml.in:187 msgid "Keybinding to open the overview" msgstr "用于打开概览的快捷键" #: data/org.gnome.shell.gschema.xml.in:188 msgid "Keybinding to open the Activities Overview." msgstr "用于打开活动概览的快捷键。" #: data/org.gnome.shell.gschema.xml.in:194 msgid "Keybinding to toggle the visibility of the notification list" msgstr "用来切换通知列表是否可见的快捷键" #: data/org.gnome.shell.gschema.xml.in:195 msgid "Keybinding to toggle the visibility of the notification list." msgstr "用来切换通知列表是否可见的快捷键。" #: data/org.gnome.shell.gschema.xml.in:201 msgid "Keybinding to toggle the quick settings menu" msgstr "用于打开快速设置菜单的快捷键" #: data/org.gnome.shell.gschema.xml.in:202 msgid "Keybinding to toggle the quick settings menu." msgstr "用于打开快速设置菜单的快捷键。" #: data/org.gnome.shell.gschema.xml.in:208 msgid "Keybinding to focus the active notification" msgstr "用于聚焦到活动通知的快捷键" #: data/org.gnome.shell.gschema.xml.in:209 msgid "Keybinding to focus the active notification." msgstr "用于聚焦到活动通知的快捷键。" #: data/org.gnome.shell.gschema.xml.in:215 msgid "Switch to application 1" msgstr "切换到应用程序 1" #: data/org.gnome.shell.gschema.xml.in:219 msgid "Switch to application 2" msgstr "切换到应用程序 2" #: data/org.gnome.shell.gschema.xml.in:223 msgid "Switch to application 3" msgstr "切换到应用程序 3" #: data/org.gnome.shell.gschema.xml.in:227 msgid "Switch to application 4" msgstr "切换到应用程序 4" #: data/org.gnome.shell.gschema.xml.in:231 msgid "Switch to application 5" msgstr "切换到应用程序 5" #: data/org.gnome.shell.gschema.xml.in:235 msgid "Switch to application 6" msgstr "切换到应用程序 6" #: data/org.gnome.shell.gschema.xml.in:239 msgid "Switch to application 7" msgstr "切换到应用程序 7" #: data/org.gnome.shell.gschema.xml.in:243 msgid "Switch to application 8" msgstr "切换到应用程序 8" #: data/org.gnome.shell.gschema.xml.in:247 msgid "Switch to application 9" msgstr "切换到应用程序 9" #: data/org.gnome.shell.gschema.xml.in:251 msgid "Open a new instance of application 1" msgstr "打开应用程序 1 的新实例" #: data/org.gnome.shell.gschema.xml.in:255 msgid "Open a new instance of application 2" msgstr "打开应用程序 2 的新实例" #: data/org.gnome.shell.gschema.xml.in:259 msgid "Open a new instance of application 3" msgstr "打开应用程序 3 的新实例" #: data/org.gnome.shell.gschema.xml.in:263 msgid "Open a new instance of application 4" msgstr "打开应用程序 4 的新实例" #: data/org.gnome.shell.gschema.xml.in:267 msgid "Open a new instance of application 5" msgstr "打开应用程序 5 的新实例" #: data/org.gnome.shell.gschema.xml.in:271 msgid "Open a new instance of application 6" msgstr "打开应用程序 6 的新实例" #: data/org.gnome.shell.gschema.xml.in:275 msgid "Open a new instance of application 7" msgstr "打开应用程序 7 的新实例" #: data/org.gnome.shell.gschema.xml.in:279 msgid "Open a new instance of application 8" msgstr "打开应用程序 8 的新实例" #: data/org.gnome.shell.gschema.xml.in:283 msgid "Open a new instance of application 9" msgstr "打开应用程序 9 的新实例" #: data/org.gnome.shell.gschema.xml.in:308 #: data/org.gnome.shell.gschema.xml.in:335 msgid "Limit switcher to current workspace." msgstr "仅在当前工作区切换。" #: data/org.gnome.shell.gschema.xml.in:309 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "如果设为 true,则切换器只显示当前工作区中的应用。否则,显示所有应用。" #: data/org.gnome.shell.gschema.xml.in:326 msgid "The application icon mode." msgstr "应用程序图标模式。" #: data/org.gnome.shell.gschema.xml.in:327 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-" "only” (shows only the application icon) or “both”." msgstr "" "配置窗口如何显示于切换器中。有效的值有“thumbnail-only”“app-icon-" "only”和“both”。" #: data/org.gnome.shell.gschema.xml.in:336 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "如果设为 true,切换器只显示当前工作区的窗口。否则,包括所有窗口。" #: data/org.gnome.shell.gschema.xml.in:346 msgid "Locations" msgstr "位置" #: data/org.gnome.shell.gschema.xml.in:347 msgid "The locations to show in world clocks" msgstr "要在世界时钟中显示的位置" #: data/org.gnome.shell.gschema.xml.in:357 msgid "Automatic location" msgstr "自动定位" #: data/org.gnome.shell.gschema.xml.in:358 msgid "Whether to fetch the current location or not" msgstr "是否获取当前的位置" #: data/org.gnome.shell.gschema.xml.in:365 msgid "Location" msgstr "位置" #: data/org.gnome.shell.gschema.xml.in:366 msgid "The location for which to show a forecast" msgstr "要显示天气预报的位置" #. Keep in sync with subprojects/extensions-app #: data/org.gnome.Shell.Extensions.desktop.in.in:5 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/data/ui/extensions-window.ui:57 msgid "Extensions" msgstr "扩展" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "网络登录" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:275 msgid "Something’s gone wrong" msgstr "出问题了" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" "非常抱歉,但是出现了问题:此扩展的设置无法显示。我们建议您将问题报告给扩展的" "作者。" #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "技术细节" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "主页" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 msgid "Visit extension homepage" msgstr "访问扩展主页" #: js/gdm/authPrompt.js:151 js/gdm/loginDialog.js:465 #: js/ui/audioDeviceSelection.js:66 js/ui/components/networkAgent.js:113 #: js/ui/components/polkitAgent.js:144 js/ui/endSessionDialog.js:437 #: js/ui/extensionDownloader.js:276 js/ui/shellMountOperation.js:382 #: js/ui/shellMountOperation.js:392 msgid "Cancel" msgstr "取消" #: js/gdm/authPrompt.js:317 js/ui/components/networkAgent.js:213 #: js/ui/components/networkAgent.js:233 js/ui/components/networkAgent.js:265 #: js/ui/components/networkAgent.js:298 js/ui/components/networkAgent.js:337 #: js/ui/components/networkAgent.js:350 js/ui/components/polkitAgent.js:286 #: js/ui/shellMountOperation.js:332 msgid "Password" msgstr "密码" #: js/gdm/loginDialog.js:326 msgid "Choose Session" msgstr "选择会话" #. Translators: is running for #: js/gdm/loginDialog.js:423 #, javascript-format msgid "" "Remote login is not possible because a remote session is already running for " "%s. To login remotely, you must log out from the remote session or force " "stop it." msgstr "" "远程登录不可用,因为 %s 已有远程会话在运行。要远程登录,您必须从远程会话登出" "或强行停止它。" #. Translators: is running for #: js/gdm/loginDialog.js:426 #, javascript-format msgid "" "Login is not possible because a remote session is already running for %s. To " "login, you must log out from the remote session or force stop it." msgstr "" "登录不可用,因为 %s 已有远程会话在运行。要想登录,您必须从远程会话登出或强行" "停止它。" #. Translators: is running for #: js/gdm/loginDialog.js:429 #, javascript-format msgid "" "Remote login is not possible because a local session is already running for " "%s. To login remotely, you must log out from the local session or force stop " "it." msgstr "" "远程登录不可用,因为 %s 已有本地会话在运行。要远程登录,您必须从本地会话登出" "或强行停止它。" #. Translators: is running for #: js/gdm/loginDialog.js:432 #, javascript-format msgid "" "Login is not possible because a session is already running for %s. To login, " "you must log out from the session or force stop it." msgstr "" "登录不可用,因为 %s 已有会话在运行。要想登录,您必须从会话登出或强行停止它。" #: js/gdm/loginDialog.js:441 msgid "Session Already Running" msgstr "会话已在运行" #: js/gdm/loginDialog.js:453 msgid "" "Force stopping will quit any running apps and processes, and could result in " "data loss" msgstr "强行停止将退出任何正在运行的应用和进程,可能会导致数据丢失" #: js/gdm/loginDialog.js:473 msgid "Force Stop" msgstr "强行停止" #: js/gdm/loginDialog.js:541 msgid "Not listed?" msgstr "未列出?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:1009 #, javascript-format msgid "(e.g., user or %s)" msgstr "(如 user 或 %s)" #: js/gdm/loginDialog.js:1014 js/ui/components/networkAgent.js:257 #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:326 msgid "Username" msgstr "用户名" #: js/gdm/loginDialog.js:1080 msgid "Login Attempt Timed Out" msgstr "登录超时" #: js/gdm/loginDialog.js:1081 msgid "Login took too long, please try again" msgstr "登录时间过长,请重试" #: js/gdm/loginDialog.js:1426 msgid "Login Window" msgstr "登录窗口" #: js/gdm/util.js:496 msgid "Authentication error" msgstr "认证出错" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:727 msgid "(or swipe finger across reader)" msgstr "(或将手指划过指纹读取器)" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:732 msgid "(or place finger on reader)" msgstr "(或将手指置于指纹读取器上)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:91 msgctxt "search-result" msgid "Power Off" msgstr "关机" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:94 msgid "power off;poweroff;shutdown;halt;stop" msgstr "power off;poweroff;shutdown;halt;stop;关机;断电;挂起;停止" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:99 msgctxt "search-result" msgid "Restart" msgstr "重启" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:102 msgid "reboot;restart;" msgstr "reboot;restart;重启;重新启动;" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:107 msgctxt "search-result" msgid "Lock Screen" msgstr "锁屏" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:110 msgid "lock screen" msgstr "lock screen;锁屏" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:115 msgctxt "search-result" msgid "Log Out" msgstr "登出" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:118 msgid "logout;log out;sign off" msgstr "logout;log out;sign off;登出;注销;退出" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:123 msgctxt "search-result" msgid "Suspend" msgstr "挂起" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:126 msgid "suspend;sleep" msgstr "suspend;sleep;挂起;睡眠" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:131 msgctxt "search-result" msgid "Switch User" msgstr "切换用户" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:134 msgid "switch user" msgstr "switch user;切换用户" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:141 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "lock orientation;screen;rotation;锁定方向;屏幕;旋转" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:146 msgctxt "search-result" msgid "Take a Screenshot" msgstr "截图" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:149 msgid "screenshot;screencast;snip;capture;record" msgstr "" "screenshot;screencast;snip;capture;record;截图;截屏;屏幕截图;屏幕录制;录屏;录" "制;剪辑;捕获;记录" #: js/misc/systemActions.js:249 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "解锁屏幕旋转" #: js/misc/systemActions.js:250 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "锁定屏幕旋转" #: js/misc/util.js:130 msgid "Command not found" msgstr "命令未找到" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:170 msgid "Could not parse command:" msgstr "不能解析命令:" #: js/misc/util.js:178 #, javascript-format msgid "Execution of “%s” failed:" msgstr "执行“%s”失败:" #: js/misc/dateUtils.js:69 msgid "Just now" msgstr "刚刚" #: js/misc/dateUtils.js:72 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d分钟前" #: js/misc/dateUtils.js:79 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d小时前" #: js/misc/dateUtils.js:85 js/ui/dateMenu.js:183 msgid "Yesterday" msgstr "昨天" #: js/misc/dateUtils.js:88 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d天前" #: js/misc/dateUtils.js:95 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d周前" #: js/misc/dateUtils.js:102 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%d个月前" #: js/misc/dateUtils.js:108 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "%d年前" #. Translators: Time in 24h format #: js/misc/dateUtils.js:155 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/dateUtils.js:161 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "昨天 %H∶%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/dateUtils.js:167 #, no-c-format msgid "%A, %H∶%M" msgstr "%A %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/dateUtils.js:173 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%-m月%-d日,%H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/dateUtils.js:179 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%Y年%-m月%-d日,%H∶%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/dateUtils.js:184 msgid "%l∶%M %p" msgstr "%p %-l∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/dateUtils.js:190 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "昨天%p %-l∶%M" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/dateUtils.js:196 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A%p %-l∶%M" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/dateUtils.js:202 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%-m月%-d日,%p %-l∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/dateUtils.js:208 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%Y年%-m月%-d日,%p %-l∶%M" #: js/portalHelper/main.js:98 msgid "Your connection seems to be secure" msgstr "您的连接似乎是安全的" #: js/portalHelper/main.js:104 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "您到热点登录的连接不安全。您在此页面输入的密码或其他信息可被旁人查看。" #: js/portalHelper/main.js:115 msgid "Hotspot Login" msgstr "热点登录" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:51 js/ui/inhibitShortcutsDialog.js:92 msgid "Deny" msgstr "拒绝" #: js/ui/accessDialog.js:52 js/ui/inhibitShortcutsDialog.js:101 msgid "Allow" msgstr "允许" #: js/ui/appDisplay.js:1769 msgid "Unnamed Folder" msgstr "未命名文件夹" #: js/ui/appFavorites.js:163 #, javascript-format msgid "%s has been pinned to the dash." msgstr "%s 已固定到快捷栏。" #: js/ui/appFavorites.js:194 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "%s 已从快捷栏移除。" #: js/ui/appFavorites.js:208 js/ui/main.js:281 msgid "Undo" msgstr "撤消" #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:49 msgid "Open Windows" msgstr "打开的窗口" #: js/ui/appMenu.js:57 msgid "New Window" msgstr "新建窗口" #: js/ui/appMenu.js:84 msgid "App Details" msgstr "应用详细信息" #: js/ui/appMenu.js:100 msgid "Quit" msgstr "退出" #: js/ui/appMenu.js:160 js/ui/dash.js:248 msgid "Unpin" msgstr "取消固定" #: js/ui/appMenu.js:161 msgid "Pin to Dash" msgstr "固定到快捷栏" #: js/ui/appMenu.js:178 msgid "Launch using Integrated Graphics Card" msgstr "使用集成显卡启动" #: js/ui/appMenu.js:179 msgid "Launch using Discrete Graphics Card" msgstr "使用独立显卡启动" #: js/ui/audioDeviceSelection.js:46 msgid "Select Audio Device" msgstr "选择声音设备" #: js/ui/audioDeviceSelection.js:61 js/ui/status/volume.js:81 msgid "Sound Settings" msgstr "声音设置" #: js/ui/audioDeviceSelection.js:74 msgid "Headphones" msgstr "耳机" #: js/ui/audioDeviceSelection.js:76 msgid "Headset" msgstr "耳麦" #: js/ui/audioDeviceSelection.js:78 js/ui/status/volume.js:356 msgid "Microphone" msgstr "麦克风" #: js/ui/backgroundMenu.js:13 msgid "Change Background…" msgstr "更换壁纸…" #: js/ui/backgroundMenu.js:15 msgid "Display Settings" msgstr "显示设置" #: js/ui/backgroundMenu.js:16 msgid "Settings" msgstr "设置" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:37 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:63 msgctxt "grid sunday" msgid "S" msgstr "日" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:65 msgctxt "grid monday" msgid "M" msgstr "一" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:67 msgctxt "grid tuesday" msgid "T" msgstr "二" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:69 msgctxt "grid wednesday" msgid "W" msgstr "三" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:71 msgctxt "grid thursday" msgid "T" msgstr "四" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:73 msgctxt "grid friday" msgid "F" msgstr "五" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:75 msgctxt "grid saturday" msgid "S" msgstr "六" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:426 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:436 msgid "%OB %Y" msgstr "%Y %OB" #: js/ui/calendar.js:498 msgid "Previous month" msgstr "上个月" #: js/ui/calendar.js:516 msgid "Next month" msgstr "下个月" #: js/ui/calendar.js:667 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:726 msgid "Week %V" msgstr "第%V周" #: js/ui/calendar.js:918 msgid "No Notifications" msgstr "无通知" #: js/ui/calendar.js:974 msgid "Do Not Disturb" msgstr "请勿打扰" #: js/ui/calendar.js:995 msgid "Clear" msgstr "清除" #: js/ui/calendar.js:999 msgctxt "action" msgid "Clear all notifications" msgstr "清除全部通知" #. Translators: %s is an application name #: js/ui/closeDialog.js:42 #, javascript-format msgid "“%s” Is Not Responding" msgstr "“%s”无响应" #: js/ui/closeDialog.js:43 msgid "" "You may choose to wait a short while for it to continue or force the app to " "quit entirely" msgstr "您可以选择等待其响应或强制完全退出此应用" #: js/ui/closeDialog.js:71 msgid "Force Quit" msgstr "强制退出" #: js/ui/closeDialog.js:76 msgid "Wait" msgstr "等待" #: js/ui/components/automountManager.js:82 msgid "External drive connected" msgstr "外部驱动器已连接" #: js/ui/components/automountManager.js:94 msgid "External drive disconnected" msgstr "外部驱动器已断开" #: js/ui/components/automountManager.js:208 msgid "Unable to unlock volume" msgstr "无法解锁卷" #: js/ui/components/automountManager.js:209 msgid "The installed udisks version does not support the PIM setting" msgstr "安装的 udisks 版本不支持 PIM 设置" #. Translators: %s is the name of a partition on a external drive #: js/ui/components/autorunManager.js:189 #, javascript-format msgid "“%s” connected" msgstr "“%s”已连接" #: js/ui/components/autorunManager.js:190 msgid "Disk can now be used" msgstr "现在可使用磁盘" #: js/ui/components/autorunManager.js:202 #, javascript-format msgid "Open with %s" msgstr "使用 %s 打开" #: js/ui/components/networkAgent.js:95 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router" msgstr "此外,您也可以通过按下路由器的“WPS”按钮来连接" #: js/ui/components/networkAgent.js:107 js/ui/status/bluetooth.js:245 #: js/ui/status/network.js:360 js/ui/status/network.js:444 msgid "Connect" msgstr "连接" #: js/ui/components/networkAgent.js:222 msgid "Key" msgstr "密钥" #: js/ui/components/networkAgent.js:273 js/ui/components/networkAgent.js:312 msgid "Private key password" msgstr "私钥密码" #: js/ui/components/networkAgent.js:306 msgid "Identity" msgstr "身份" #: js/ui/components/networkAgent.js:332 msgid "Service" msgstr "服务" #: js/ui/components/networkAgent.js:370 js/ui/components/networkAgent.js:406 #: js/ui/components/networkAgent.js:743 js/ui/components/networkAgent.js:764 msgid "Authentication required" msgstr "需要认证" #: js/ui/components/networkAgent.js:371 js/ui/components/networkAgent.js:744 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network “%s”" msgstr "访问无线网络“%s”需要密码或密钥" #: js/ui/components/networkAgent.js:375 js/ui/components/networkAgent.js:748 msgid "Wired 802.1X authentication" msgstr "有线 802.1X 认证" #: js/ui/components/networkAgent.js:378 msgid "Network name" msgstr "网络名称" #: js/ui/components/networkAgent.js:386 js/ui/components/networkAgent.js:752 msgid "DSL authentication" msgstr "DSL 认证" #: js/ui/components/networkAgent.js:393 js/ui/components/networkAgent.js:757 msgid "PIN code required" msgstr "需要 PIN 码" #: js/ui/components/networkAgent.js:394 js/ui/components/networkAgent.js:758 msgid "PIN code is needed for the mobile broadband device" msgstr "移动宽带设备需要 PIN 码" #: js/ui/components/networkAgent.js:396 msgid "PIN" msgstr "PIN" #: js/ui/components/networkAgent.js:407 js/ui/components/networkAgent.js:749 #: js/ui/components/networkAgent.js:753 js/ui/components/networkAgent.js:765 #: js/ui/components/networkAgent.js:769 #, javascript-format msgid "A password is required to connect to “%s”" msgstr "连接到“%s”需要密码" #: js/ui/components/networkAgent.js:768 msgid "VPN password" msgstr "VPN 密码" #: js/ui/components/polkitAgent.js:44 msgid "Authentication Required" msgstr "需要认证" #: js/ui/components/polkitAgent.js:84 msgid "Administrator" msgstr "管理员" #: js/ui/components/polkitAgent.js:149 msgid "Authenticate" msgstr "认证" # 不一定是密码错误。 #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:263 js/ui/shellMountOperation.js:415 msgid "Sorry, that didn’t work. Please try again." msgstr "抱歉,认证失败。请重试。" #: js/ui/ctrlAltTab.js:23 js/ui/overviewControls.js:404 msgid "Windows" msgstr "窗口" #: js/ui/dash.js:204 js/ui/dash.js:250 msgid "Show Apps" msgstr "显示应用" #. Translators: this is the name of the dock/favorites area on #. the bottom of the overview #: js/ui/dash.js:408 msgid "Dash" msgstr "Dash" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:99 msgid "%B %-d %Y" msgstr "%Y年%-m月%-d日" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:106 msgid "%A %B %e %Y" msgstr "%Y年%-m月%-d日 %A" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:172 msgctxt "calendar heading" msgid "%B %-d" msgstr "%-m月%-d日" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:175 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%Y年%-m月%-d日" #: js/ui/dateMenu.js:181 msgid "Today" msgstr "今天" #: js/ui/dateMenu.js:185 msgid "Tomorrow" msgstr "明天" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:216 msgctxt "event list time" msgid "All Day" msgstr "全天" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:238 msgid "%m/%d" msgstr "%-m月%-d日" #: js/ui/dateMenu.js:289 msgid "No Events" msgstr "无事件" #: js/ui/dateMenu.js:411 msgid "Add World Clocks…" msgstr "添加世界时钟…" #: js/ui/dateMenu.js:412 msgid "World Clocks" msgstr "世界时钟" #: js/ui/dateMenu.js:702 msgid "Loading…" msgstr "正在载入…" #: js/ui/dateMenu.js:712 msgid "Go Online for Weather Information" msgstr "在线以获取天气信息" #: js/ui/dateMenu.js:714 msgid "Weather Information Unavailable" msgstr "天气信息不可用" #: js/ui/dateMenu.js:724 msgid "Weather" msgstr "天气" #: js/ui/dateMenu.js:726 msgid "Select Weather Location…" msgstr "选择天气位置…" #: js/ui/endSessionDialog.js:47 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "登出 %s" #: js/ui/endSessionDialog.js:48 msgctxt "title" msgid "Log Out" msgstr "登出" #: js/ui/endSessionDialog.js:51 #, javascript-format msgid "%s will be logged out automatically in %d second" msgid_plural "%s will be logged out automatically in %d seconds" msgstr[0] "%s 将在 %d 秒后自动登出" #: js/ui/endSessionDialog.js:57 #, javascript-format msgid "You will be logged out automatically in %d second" msgid_plural "You will be logged out automatically in %d seconds" msgstr[0] "您将在 %d 秒后自动登出" #: js/ui/endSessionDialog.js:64 msgctxt "button" msgid "Log Out" msgstr "登出" #: js/ui/endSessionDialog.js:70 js/ui/status/system.js:174 msgctxt "title" msgid "Power Off" msgstr "关机" #: js/ui/endSessionDialog.js:71 msgctxt "title" msgid "Install Updates & Power Off" msgstr "安装更新并关机" #: js/ui/endSessionDialog.js:74 #, javascript-format msgid "The system will power off automatically in %d second" msgid_plural "The system will power off automatically in %d seconds" msgstr[0] "系统将在 %d 秒后自动关机" #: js/ui/endSessionDialog.js:78 js/ui/endSessionDialog.js:97 msgctxt "checkbox" msgid "Install pending software updates" msgstr "安装挂起的软件更新" #: js/ui/endSessionDialog.js:82 msgctxt "button" msgid "Power Off" msgstr "关机" #: js/ui/endSessionDialog.js:89 msgctxt "title" msgid "Restart" msgstr "重启" #: js/ui/endSessionDialog.js:90 msgctxt "title" msgid "Install Updates & Restart" msgstr "安装更新并重启" #: js/ui/endSessionDialog.js:93 #, javascript-format msgid "The system will restart automatically in %d second" msgid_plural "The system will restart automatically in %d seconds" msgstr[0] "系统将在 %d 秒后自动重启" #: js/ui/endSessionDialog.js:101 msgctxt "button" msgid "Restart" msgstr "重启" #: js/ui/endSessionDialog.js:109 msgctxt "title" msgid "Restart & Install Updates" msgstr "重启并安装更新" #: js/ui/endSessionDialog.js:112 #, javascript-format msgid "The system will automatically restart and install updates in %d second" msgid_plural "" "The system will automatically restart and install updates in %d seconds" msgstr[0] "系统将在 %d 秒后自动重启并安装更新" #: js/ui/endSessionDialog.js:119 js/ui/endSessionDialog.js:140 msgctxt "button" msgid "Restart & Install" msgstr "重启并安装" #: js/ui/endSessionDialog.js:121 msgctxt "button" msgid "Install & Power Off" msgstr "安装并关机" #: js/ui/endSessionDialog.js:122 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "安装更新后关机" #: js/ui/endSessionDialog.js:129 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "重启并安装升级" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:134 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "重启后将安装 %s %s。升级安装可能需要较长时间:请确保已经进行了备份并且已经插" "入了电源。" #: js/ui/endSessionDialog.js:283 msgid "Low battery power: please plug in before installing updates" msgstr "电池电量低:请在安装更新前插入电源" #: js/ui/endSessionDialog.js:292 msgid "Some applications are busy or have unsaved work" msgstr "有些应用程序正忙或有未保存的工作" #: js/ui/endSessionDialog.js:297 msgid "Other users are logged in" msgstr "有其他用户登录" #: js/ui/endSessionDialog.js:467 msgctxt "button" msgid "Boot Options" msgstr "启动选项" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:672 #, javascript-format msgid "%s (remote)" msgstr "%s(远程)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:675 #, javascript-format msgid "%s (console)" msgstr "%s(控制台)" #: js/ui/extensionDownloader.js:280 msgid "Install" msgstr "安装" #: js/ui/extensionDownloader.js:286 msgid "Install Extension" msgstr "安装扩展" #: js/ui/extensionDownloader.js:287 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "从 extensions.gnome.org 下载并安装“%s”?" #: js/ui/extensionSystem.js:352 msgid "Extension Updates Available" msgstr "扩展更新可用" #: js/ui/extensionSystem.js:353 msgid "Extension updates are ready to be installed" msgstr "扩展更新已做好安装准备" #: js/ui/inhibitShortcutsDialog.js:70 msgid "Allow inhibiting shortcuts" msgstr "允许禁用快捷键" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:73 #, javascript-format msgid "The app %s wants to inhibit shortcuts" msgstr "应用 %s 希望禁用快捷键" #: js/ui/inhibitShortcutsDialog.js:74 msgid "An app wants to inhibit shortcuts" msgstr "某应用希望禁用快捷键" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:81 #, javascript-format msgid "You can restore shortcuts by pressing %s" msgstr "您可以通过按 %s 恢复快捷键" #: js/ui/kbdA11yDialog.js:34 msgid "Slow Keys Turned On" msgstr "慢速键已开启" #: js/ui/kbdA11yDialog.js:35 msgid "Slow Keys Turned Off" msgstr "慢速键已关闭" #: js/ui/kbdA11yDialog.js:36 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "您刚刚按住了 Shift 键 8 秒钟。这是启用慢速键特性的快捷方式,这会影响您键盘的" "使用。" #: js/ui/kbdA11yDialog.js:42 msgid "Sticky Keys Turned On" msgstr "粘滞键已开启" #: js/ui/kbdA11yDialog.js:43 msgid "Sticky Keys Turned Off" msgstr "粘滞键已关闭" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "您刚刚按了 Shift 键五次。这是启用粘滞键特性的快捷方式,这会影响您键盘的使用。" #: js/ui/kbdA11yDialog.js:47 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" "您刚刚一次按了两个键或者按了 Shift 键五次。这将会关闭粘滞键特性,这会影响您使" "用键盘的方式。" #: js/ui/kbdA11yDialog.js:57 msgid "Leave On" msgstr "保持开启" #: js/ui/kbdA11yDialog.js:57 msgid "Turn On" msgstr "开启" #: js/ui/kbdA11yDialog.js:67 js/ui/status/network.js:455 msgid "Turn Off" msgstr "关闭" #: js/ui/kbdA11yDialog.js:67 msgid "Leave Off" msgstr "保持关闭" #: js/ui/keyboard.js:180 js/ui/status/keyboard.js:897 msgid "Keyboard Settings" msgstr "键盘设置" #: js/ui/lookingGlass.js:727 msgid "No extensions installed" msgstr "未安装扩展" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:788 #, javascript-format msgid "%s has not emitted any errors" msgstr "%s 没有发出任何错误信息" #: js/ui/lookingGlass.js:794 msgid "Hide Errors" msgstr "隐藏错误" #: js/ui/lookingGlass.js:798 js/ui/lookingGlass.js:875 msgid "Show Errors" msgstr "显示错误" #: js/ui/lookingGlass.js:807 msgid "Active" msgstr "活动" #: js/ui/lookingGlass.js:810 msgid "Inactive" msgstr "未活动" #: js/ui/lookingGlass.js:812 msgid "Error" msgstr "出错" #: js/ui/lookingGlass.js:814 msgid "Out of date" msgstr "过时" #: js/ui/lookingGlass.js:816 msgid "Downloading" msgstr "正在下载" #: js/ui/lookingGlass.js:818 msgid "Deactivating" msgstr "正在停用" #: js/ui/lookingGlass.js:820 msgid "Activating" msgstr "正在激活" #: js/ui/lookingGlass.js:853 msgid "View Source" msgstr "查看源" #: js/ui/lookingGlass.js:864 msgid "Web Page" msgstr "网页" #: js/ui/main.js:277 msgid "System was put in unsafe mode" msgstr "系统已置于不安全模式" #: js/ui/main.js:278 msgid "Apps now have unrestricted access" msgstr "应用现在可以不受限制地访问" #: js/ui/main.js:338 msgid "Logged in as a privileged user" msgstr "以特权用户身份登录" #: js/ui/main.js:339 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" "出于安全原因,应避免以特权用户身份运行会话。如有可能,你应该以正常用户身份登" "录。" #: js/ui/main.js:387 msgid "Screen Lock disabled" msgstr "屏幕锁定已禁用" #: js/ui/main.js:388 msgid "Screen Locking requires the GNOME display manager" msgstr "屏幕锁定需要 GNOME 显示管理器" #. Translators: this is the string displayed in the header when a message #. source doesn't have a name #: js/ui/messageList.js:374 msgid "Unknown App" msgstr "未知应用" #: js/ui/messageTray.js:326 js/ui/messageTray.js:328 msgid "Notification sound" msgstr "通知声音" #: js/ui/mpris.js:198 msgid "Unknown artist" msgstr "未知艺人" #: js/ui/mpris.js:208 msgid "Unknown title" msgstr "未知标题" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:328 msgid "Type to search" msgstr "输入以搜索" #: js/ui/overviewControls.js:392 msgid "Apps" msgstr "应用" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:33 msgid "Overview" msgstr "概览" #: js/ui/padOsd.js:98 msgid "New shortcut…" msgstr "新建快捷键…" #: js/ui/padOsd.js:151 msgid "App defined" msgstr "应用定义" #: js/ui/padOsd.js:152 msgid "Show on-screen help" msgstr "显示屏幕帮助" #: js/ui/padOsd.js:153 msgid "Switch monitor" msgstr "切换显示器" #: js/ui/padOsd.js:154 msgid "Assign keystroke" msgstr "分配按键" #: js/ui/padOsd.js:223 msgid "Done" msgstr "完成" #: js/ui/padOsd.js:726 msgid "Edit…" msgstr "编辑…" #: js/ui/padOsd.js:773 msgid "None" msgstr "无" #: js/ui/padOsd.js:844 msgid "Press a button to configure" msgstr "按下按键以配置" #: js/ui/padOsd.js:845 msgid "Press Esc to exit" msgstr "按 Esc 以退出" #: js/ui/padOsd.js:848 msgid "Press any key to exit" msgstr "按任意键退出" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:423 msgid "Activities" msgstr "活动" #: js/ui/panel.js:504 msgctxt "System menu in the top bar" msgid "System" msgstr "系统" #: js/ui/panel.js:678 msgid "Top Bar" msgstr "顶栏" #: js/ui/quickSettings.js:188 msgid "Open menu" msgstr "打开菜单" #: js/ui/runDialog.js:61 msgid "Run a Command" msgstr "运行一个命令" #: js/ui/runDialog.js:76 msgid "Press ESC to close" msgstr "按 Esc 以关闭" #: js/ui/runDialog.js:241 msgid "Restart is not available on Wayland" msgstr "Wayland 下重启不可用" #: js/ui/runDialog.js:246 msgid "Restarting…" msgstr "正在重启…" #: js/ui/screenShield.js:233 msgid "GNOME needs to lock the screen" msgstr "GNOME 需要锁定屏幕" #: js/ui/screenShield.js:274 js/ui/screenShield.js:667 msgid "Unable to lock" msgstr "无法锁定" #: js/ui/screenShield.js:275 js/ui/screenShield.js:668 msgid "Lock was blocked by an app" msgstr "一个应用阻止了锁定" #: js/ui/screenshot.js:1252 msgid "Selection" msgstr "选区" #: js/ui/screenshot.js:1262 msgid "Area Selection" msgstr "选择区域" #: js/ui/screenshot.js:1267 msgid "Screen" msgstr "屏幕" #: js/ui/screenshot.js:1277 msgid "Screen Selection" msgstr "选择屏幕" #: js/ui/screenshot.js:1282 msgid "Window" msgstr "窗口" #: js/ui/screenshot.js:1292 msgid "Window Selection" msgstr "选择窗口" #. Translators: entry in the window right click menu. #: js/ui/screenshot.js:1317 js/ui/status/system.js:111 js/ui/windowMenu.js:28 msgid "Take Screenshot" msgstr "截图" #: js/ui/screenshot.js:1333 msgid "Record Screen" msgstr "录制屏幕" #. Translators: since this string refers to an action, #. it needs to be phrased as a verb. #: js/ui/screenshot.js:1350 msgid "Capture" msgstr "捕获" #: js/ui/screenshot.js:1372 msgid "Show Pointer" msgstr "显示指针" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1996 msgid "Screencasts" msgstr "录屏" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast From 07-17-2013 10:00:46 PM" #: js/ui/screenshot.js:2001 #, no-c-format msgid "Screencast From %d %t" msgstr "录屏 %d %t" #. Translators: notification title. #: js/ui/screenshot.js:2047 msgid "Screencast recorded" msgstr "屏幕已录制" #. Translators: notification title. #: js/ui/screenshot.js:2060 msgid "Screencast failed to start" msgstr "录屏启动失败" #. Translators: notification title. #: js/ui/screenshot.js:2066 msgid "Screencast ended: Out of disk space" msgstr "录屏已结束:磁盘空间不足" #. We can encourage user to try again on service crashes since the #. recorder will auto-blocklist the pipeline that crashed. #. Translators: notification title. #: js/ui/screenshot.js:2072 msgid "Screencast ended unexpectedly, please try again" msgstr "录屏意外结束,请重试" #. Translators: notification title. #: js/ui/screenshot.js:2075 msgid "Screencast ended unexpectedly" msgstr "录屏意外结束" #. Translators: notification source name. #: js/ui/screenshot.js:2085 js/ui/screenshot.js:2327 msgid "Screenshot" msgstr "截图" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:2092 msgid "Click here to view the video." msgstr "单击这里查看该视频。" #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:2100 js/ui/screenshot.js:2343 msgid "Show in Files" msgstr "显示文件" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2287 #, javascript-format msgid "Screenshot From %s" msgstr "截图 %s" #. Translators: notification title. #: js/ui/screenshot.js:2333 msgid "Screenshot captured" msgstr "已获取截图" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2335 msgid "You can paste the image from the clipboard." msgstr "您可以从剪贴板粘贴该图像。" #: js/ui/screenshot.js:2391 js/ui/screenshot.js:2555 msgid "Screenshot taken" msgstr "已获取屏幕截图" #: js/ui/search.js:829 msgid "Searching…" msgstr "正在搜索…" #: js/ui/search.js:831 msgid "No results" msgstr "无结果" #: js/ui/search.js:962 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "还有另外 %d 项" #: js/ui/searchController.js:87 #: subprojects/extensions-app/data/ui/extensions-window.ui:73 msgid "Search" msgstr "搜索" #: js/ui/shellEntry.js:21 msgid "Copy" msgstr "复制" #: js/ui/shellEntry.js:26 msgid "Paste" msgstr "粘贴" #: js/ui/shellEntry.js:78 msgid "Show Text" msgstr "显示文本" #: js/ui/shellEntry.js:80 msgid "Hide Text" msgstr "隐藏文本" #: js/ui/shellEntry.js:174 msgid "Caps lock is on" msgstr "大写锁定已开启" #: js/ui/shellMountOperation.js:286 msgid "Hidden Volume" msgstr "隐藏卷" #: js/ui/shellMountOperation.js:289 msgid "Windows System Volume" msgstr "Windows 系统卷" #: js/ui/shellMountOperation.js:292 msgid "Uses Keyfiles" msgstr "使用密钥文件" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:300 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead" msgstr "要解锁使用密钥文件的卷,请改用 %s 实用工具" #: js/ui/shellMountOperation.js:304 msgid "" "You need an external utility like Disks to unlock a volume that uses " "keyfiles" msgstr "您需要像磁盘这样的外部实用程序来解锁使用密钥文件的卷" #: js/ui/shellMountOperation.js:312 msgid "PIM Number" msgstr "PIM 号码" #: js/ui/shellMountOperation.js:371 msgid "Remember Password" msgstr "记住密码" #: js/ui/shellMountOperation.js:386 msgid "Unlock" msgstr "解锁" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:400 #, javascript-format msgid "Open %s" msgstr "打开 %s" #: js/ui/shellMountOperation.js:436 msgid "The PIM must be a number or empty" msgstr "PIM 必须是数字或留空" #: js/ui/status/accessibility.js:34 msgid "Accessibility" msgstr "无障碍" #: js/ui/status/accessibility.js:44 msgid "High Contrast" msgstr "高对比度" #: js/ui/status/accessibility.js:47 msgid "Zoom" msgstr "缩放" #: js/ui/status/accessibility.js:54 msgid "Screen Reader" msgstr "屏幕阅读器" #: js/ui/status/accessibility.js:58 msgid "Screen Keyboard" msgstr "屏幕键盘" #: js/ui/status/accessibility.js:62 msgid "Visual Alerts" msgstr "视觉响铃" #: js/ui/status/accessibility.js:66 msgid "Sticky Keys" msgstr "粘滞键" #: js/ui/status/accessibility.js:70 msgid "Slow Keys" msgstr "慢速键" # win10 使用这个翻译,在谷歌搜索上分别搜索回弹键和筛选键,回弹键的结果比较多。 #: js/ui/status/accessibility.js:74 msgid "Bounce Keys" msgstr "回弹键" #: js/ui/status/accessibility.js:78 msgid "Mouse Keys" msgstr "鼠标按键" #: js/ui/status/accessibility.js:83 msgid "Accessibility Settings" msgstr "无障碍设置" #: js/ui/status/accessibility.js:140 msgid "Large Text" msgstr "大号文本" #: js/ui/status/autoRotate.js:14 msgid "Auto Rotate" msgstr "自动旋转" #: js/ui/status/backgroundApps.js:156 msgctxt "title" msgid "Background Apps" msgstr "后台应用" #: js/ui/status/backgroundApps.js:171 msgid "Apps known to be running without a window" msgstr "已知的无窗口运行的应用" #: js/ui/status/backgroundApps.js:182 msgid "App Settings" msgstr "应用设置" #: js/ui/status/backgroundApps.js:239 msgid "No Background Apps" msgstr "没有后台应用" #: js/ui/status/backgroundApps.js:241 #, javascript-format msgid "%d Background App" msgid_plural "%d Background Apps" msgstr[0] "%d 个后台应用" #: js/ui/status/backlight.js:39 msgid "Keyboard Brightness" msgstr "键盘亮度" #: js/ui/status/backlight.js:79 msgid "Off" msgstr "关" #: js/ui/status/backlight.js:80 msgid "Low" msgstr "低" #: js/ui/status/backlight.js:81 msgid "High" msgstr "高" #: js/ui/status/backlight.js:147 js/ui/status/keyboard.js:879 msgid "Keyboard" msgstr "键盘" #: js/ui/status/bluetooth.js:245 js/ui/status/network.js:360 msgid "Disconnect" msgstr "断开连接" #: js/ui/status/bluetooth.js:262 js/ui/status/bluetooth.js:264 msgid "Bluetooth" msgstr "蓝牙" #: js/ui/status/bluetooth.js:287 js/ui/status/network.js:1900 msgid "Bluetooth Settings" msgstr "蓝牙设置" #: js/ui/status/bluetooth.js:334 msgid "No available or connected devices" msgstr "没有可连接或已连接的设备" #: js/ui/status/bluetooth.js:335 msgid "Turn on Bluetooth to connect to devices" msgstr "打开蓝牙以连接到设备" #. Translators: This is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:389 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d 台设备已连接" #: js/ui/status/brightness.js:32 msgid "Brightness" msgstr "亮度" #: js/ui/status/darkMode.js:12 msgid "Dark Style" msgstr "暗色样式" #: js/ui/status/dwellClick.js:15 msgid "Single Click" msgstr "单击" #: js/ui/status/dwellClick.js:20 msgid "Double Click" msgstr "双击" #: js/ui/status/dwellClick.js:25 msgid "Drag" msgstr "拖动" #: js/ui/status/dwellClick.js:30 msgid "Secondary Click" msgstr "副键点击" #: js/ui/status/dwellClick.js:39 msgid "Dwell Click" msgstr "悬停点击" #: js/ui/status/keyboard.js:896 msgid "Show Keyboard Layout" msgstr "显示键盘布局" #: js/ui/status/location.js:337 msgid "Allow location access" msgstr "允许获取位置信息" #. Translators: %s is an application name #: js/ui/status/location.js:339 #, javascript-format msgid "The app %s wants to access your location" msgstr "应用 %s 想要获取您的位置信息" #: js/ui/status/location.js:349 msgid "Location access can be changed at any time from the privacy settings" msgstr "位置访问权限可以随时在隐私设置里更改" #: js/ui/status/location.js:357 msgid "Deny Access" msgstr "拒绝访问" #: js/ui/status/location.js:362 msgid "Grant Access" msgstr "允许访问" #: js/ui/status/network.js:62 msgid "" msgstr "<未知>" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:354 #, javascript-format msgid "Disconnect %s" msgstr "断开与 %s 的连接" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:356 #, javascript-format msgid "Connect to %s" msgstr "连接至 %s" #: js/ui/status/network.js:1050 msgid "Secure" msgstr "安全" #: js/ui/status/network.js:1050 msgid "Not secure" msgstr "不安全" #: js/ui/status/network.js:1051 #, javascript-format msgid "Signal strength %s%%" msgstr "信号强度 %s%%" #. translators: The first placeholder is the network name, the second and indication whether it is secure, and the last the signal strength indication #: js/ui/status/network.js:1053 #, javascript-format msgid "%s, %s, %s" msgstr "%s, %s, %s" #. Translators: %s is a network identifier #: js/ui/status/network.js:1155 #, javascript-format msgid "%s Hotspot" msgstr "%s 热点" #: js/ui/status/network.js:1426 #, javascript-format msgid "%d connected" msgid_plural "%d connected" msgstr[0] "%d 台设备已连接" #: js/ui/status/network.js:1524 js/ui/status/network.js:1540 msgid "VPN" msgstr "VPN" #: js/ui/status/network.js:1525 msgid "VPN Settings" msgstr "VPN 设置" #: js/ui/status/network.js:1785 msgid "Wi–Fi" msgstr "Wi–Fi" #: js/ui/status/network.js:1787 msgid "All Networks" msgstr "所有网络" #: js/ui/status/network.js:1884 msgid "Wired Connections" msgstr "有线连接" #: js/ui/status/network.js:1885 msgid "Wired Settings" msgstr "有线设置" #: js/ui/status/network.js:1899 msgid "Bluetooth Tethers" msgstr "蓝牙网络共享" #. Translators: "Tether" from "Bluetooth Tether" #: js/ui/status/network.js:1906 msgid "Tether" msgstr "网络共享" #: js/ui/status/network.js:1919 msgid "Mobile Connections" msgstr "移动设备连接" #: js/ui/status/network.js:1921 msgid "Mobile Broadband Settings" msgstr "移动宽带设置" #. Translators: "Mobile" from "Mobile Broadband" #: js/ui/status/network.js:1930 msgid "Mobile" msgstr "移动设备" #: js/ui/status/network.js:1964 msgid "Sign Into Wi–Fi Network" msgstr "登录 Wi-Fi 网络" #: js/ui/status/network.js:2151 msgid "Connection failed" msgstr "连接失败" #: js/ui/status/network.js:2152 msgid "Activation of network connection failed" msgstr "网络连接激活失败" #: js/ui/status/nightLight.js:19 msgid "Night Light" msgstr "夜灯" #: js/ui/status/powerProfiles.js:19 msgctxt "Power profile" msgid "Performance" msgstr "性能" #: js/ui/status/powerProfiles.js:24 msgctxt "Power profile" msgid "Balanced" msgstr "平衡" #: js/ui/status/powerProfiles.js:29 msgctxt "Power profile" msgid "Power Saver" msgstr "节电" #: js/ui/status/powerProfiles.js:39 js/ui/status/powerProfiles.js:69 msgid "Power Mode" msgstr "性能模式" #: js/ui/status/powerProfiles.js:71 msgid "Power Settings" msgstr "电源设置" #: js/ui/status/remoteAccess.js:74 msgid "Stop Screencast" msgstr "停止屏幕录制" #: js/ui/status/remoteAccess.js:144 msgid "Stop Screen Sharing" msgstr "停止屏幕共享" #: js/ui/status/rfkill.js:99 msgid "Airplane Mode" msgstr "飞行模式" #: js/ui/status/system.js:168 msgid "Power Off Menu" msgstr "关机菜单" #: js/ui/status/system.js:176 msgid "Suspend" msgstr "挂起" #: js/ui/status/system.js:181 msgid "Restart…" msgstr "重启…" #: js/ui/status/system.js:186 msgid "Power Off…" msgstr "关机…" #: js/ui/status/system.js:193 #: subprojects/extensions-app/data/ui/extensions-window.ui:124 msgid "Log Out…" msgstr "登出…" #: js/ui/status/system.js:198 msgid "Switch User…" msgstr "切换用户…" #: js/ui/status/system.js:242 msgctxt "action" msgid "Lock Screen" msgstr "锁屏" #: js/ui/status/thunderbolt.js:308 msgid "Unknown Thunderbolt device" msgstr "未知的雷电接口设备" #: js/ui/status/thunderbolt.js:309 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "您不在的时候检测到了新设备。请断开设备连接后重连来开始使用它。" #: js/ui/status/thunderbolt.js:312 msgid "Unauthorized Thunderbolt device" msgstr "未授权的雷电接口设备" #: js/ui/status/thunderbolt.js:313 msgid "" "New device has been detected and needs to be authorized by an administrator" msgstr "检测到新设备并需要管理员授权" #: js/ui/status/thunderbolt.js:319 msgid "Thunderbolt authorization error" msgstr "雷电接口授权错误" #: js/ui/status/thunderbolt.js:320 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "无法授权雷电接口设备:%s" #: js/ui/status/volume.js:218 msgid "Volume changed" msgstr "音量已变更" #: js/ui/status/volume.js:231 msgid "Unmute" msgstr "取消静音" #: js/ui/status/volume.js:231 msgid "Mute" msgstr "静音" #: js/ui/status/volume.js:286 msgid "Volume" msgstr "音量" #: js/ui/status/volume.js:302 msgid "Sound Output" msgstr "声音输出" #: js/ui/status/volume.js:374 msgid "Sound Input" msgstr "声音输入" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:20 msgid "Mirror" msgstr "镜像" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:29 msgid "Join Displays" msgstr "拼接显示器" #. Translators: this is for using only external displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:39 msgid "External Only" msgstr "只使用外部" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:47 msgid "Built-in Only" msgstr "只使用内置" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:378 msgid "%A %B %-d" msgstr "%-m月%-d日 %A" #: js/ui/unlockDialog.js:384 msgid "Swipe up to unlock" msgstr "向上滑动解锁" #: js/ui/unlockDialog.js:385 msgid "Click or press a key to unlock" msgstr "单击或按键解锁" #: js/ui/unlockDialog.js:568 msgid "Unlock Window" msgstr "解锁窗口" #: js/ui/unlockDialog.js:577 msgid "Log in as another user" msgstr "以另一个用户身份登录" #: js/ui/welcomeDialog.js:47 #, javascript-format msgid "GNOME %s" msgstr "GNOME %s" #: js/ui/welcomeDialog.js:51 #, javascript-format msgid "Welcome to %s" msgstr "欢迎使用 %s" #: js/ui/welcomeDialog.js:52 msgid "If you want to learn your way around, check out the tour" msgstr "如果您想了解基本用法,请跟随我们的导览" #: js/ui/welcomeDialog.js:61 msgid "Skip" msgstr "跳过" #: js/ui/welcomeDialog.js:66 msgid "Take Tour" msgstr "进行导览" #: js/ui/windowAttentionHandler.js:18 #, javascript-format msgid "“%s” is ready" msgstr "“%s”已就绪" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:68 msgid "Keep these display settings?" msgstr "保留这些显示设置吗?" #: js/ui/windowManager.js:78 msgid "Revert Settings" msgstr "还原设置" #: js/ui/windowManager.js:83 msgid "Keep Changes" msgstr "保留更改" #: js/ui/windowManager.js:103 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "设置更改将在 %d 秒后还原" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:500 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:40 msgid "Hide" msgstr "隐藏" #: js/ui/windowMenu.js:47 msgid "Restore" msgstr "还原" #: js/ui/windowMenu.js:51 msgid "Maximize" msgstr "最大化" #: js/ui/windowMenu.js:58 msgid "Move" msgstr "移动" #: js/ui/windowMenu.js:78 msgid "Resize" msgstr "改变大小" #: js/ui/windowMenu.js:98 msgid "Always on Top" msgstr "置顶" #: js/ui/windowMenu.js:117 msgid "Always on Visible Workspace" msgstr "总在可见工作区" #: js/ui/windowMenu.js:131 msgid "Move to Workspace Left" msgstr "移至左工作区" #: js/ui/windowMenu.js:137 msgid "Move to Workspace Right" msgstr "移至右工作区" #: js/ui/windowMenu.js:143 msgid "Move to Workspace Up" msgstr "移至上工作区" #: js/ui/windowMenu.js:149 msgid "Move to Workspace Down" msgstr "移至下工作区" #: js/ui/windowMenu.js:167 msgid "Move to Monitor Up" msgstr "移到上边显示器" #: js/ui/windowMenu.js:176 msgid "Move to Monitor Down" msgstr "移到下边显示器" #: js/ui/windowMenu.js:185 msgid "Move to Monitor Left" msgstr "移到左边显示器" #: js/ui/windowMenu.js:194 msgid "Move to Monitor Right" msgstr "移至右边显示器" #: js/ui/windowMenu.js:202 msgid "Close" msgstr "关闭" #: src/main.c:529 subprojects/extensions-tool/src/main.c:336 msgid "Print version" msgstr "打印版本" #: src/main.c:535 msgid "Mode used by GDM for login screen" msgstr "GDM 用于登录屏幕的模式" #: src/main.c:541 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "使用指定模式,如“gdm”用于登录屏幕" #: src/main.c:547 msgid "List possible modes" msgstr "列出可用的模式" #: src/main.c:553 msgid "Force animations to be enabled" msgstr "强制启用动画" #: src/shell-app.c:252 msgctxt "program" msgid "Unknown" msgstr "未知" #: src/shell-app.c:503 #, c-format msgid "Failed to launch “%s”" msgstr "启动“%s”失败" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match" msgstr "密码不匹配" #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "密码不能为空" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "认证对话框已被用户取消" #: src/st/st-icon-theme.c:1865 #, c-format msgid "Icon '%s' not present in theme %s" msgstr "主题 %s 中不存在图标 ‘%s’" #: src/st/st-icon-theme.c:3454 src/st/st-icon-theme.c:3757 msgid "Failed to load icon" msgstr "图标加载失败" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 msgid "Manage your GNOME Extensions" msgstr "管理您的 GNOME 扩展" #. developer_name tag deprecated with Appstream 1.0 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:19 msgid "The GNOME Project" msgstr "GNOME 项目" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:51 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "GNOME 扩展程序可用于升级扩展,配置扩展首选项和移除、禁用不想要的扩展。" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:64 msgid "Main Window" msgstr "主窗口" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:68 msgid "Available Updates" msgstr "可用更新" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:72 msgid "Search View" msgstr "搜索视图" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "配置 GNOME Shell 扩展" #: subprojects/extensions-app/js/extensionManager.js:237 #, javascript-format msgid "" "The installed version of this extension (%s) is incompatible with the " "current version of GNOME (%s). The extension has been disabled." msgstr "该扩展的已安装版本(%s)与当前 GNOME 版本(%s)不兼容。该扩展已禁用。" #: subprojects/extensions-app/js/extensionManager.js:238 #, javascript-format msgid "" "The installed version of this extension is incompatible with the current " "version of GNOME (%s). The extension has been disabled." msgstr "该扩展的已安装版本与当前 GNOME 版本(%s)不兼容。该扩展已禁用。" #: subprojects/extensions-app/js/extensionManager.js:242 msgid "" "An error has occurred in this extension. This could cause issues elsewhere " "in the system. It is recommended to turn the extension off until the error " "is resolved." msgstr "" "该扩展发生错误。这可能会导致系统其它地方出现问题。建议在错误解决前关闭该扩" "展。" #. translators: Details for an extension error #: subprojects/extensions-app/js/extensionManager.js:248 msgid "Error details:" msgstr "错误详情:" #: subprojects/extensions-app/js/extensionRow.js:82 #, javascript-format msgid "Version %s" msgstr "版本 %s" #: subprojects/extensions-app/js/extensionsWindow.js:113 #, javascript-format msgid "Remove “%s”?" msgstr "移除 “%s”?" #: subprojects/extensions-app/js/extensionsWindow.js:114 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "如果您移除该扩展,想要再次启用则需重新下载" #: subprojects/extensions-app/js/extensionsWindow.js:117 msgid "_Cancel" msgstr "取消(_C)" #: subprojects/extensions-app/js/extensionsWindow.js:118 msgid "_Remove" msgstr "移除(_R)" #: subprojects/extensions-app/js/extensionsWindow.js:158 msgid "translator-credits" msgstr "" "eternalhui , 2013\n" "tuhaihe <1132321739qq@gmail.com>, 2013, 2020\n" "Wylmer Wang , 2013\n" "YunQiang Su , 2014\n" "Sphinx Jiang , 2014\n" "Tong Hui , 2014\n" "Mingye Wang , 2015, 2016\n" "Mingcong Bai , 2015, 2018\n" "Bin Li , 2016\n" "Michael Chen , 2016\n" "Mandy Wang , 2016\n" "Dingzhong Chen , 2015, 2016, 2017, 2019\n" "Weiyi Xu , 2020\n" "lumingzh , 2022-2024\n" "Victor_Trista , 2023" #: subprojects/extensions-app/js/extensionsWindow.js:203 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "%d 个扩展将在下次登录时更新。" #: subprojects/extensions-app/data/ui/extension-row.ui:22 msgid "Error Details" msgstr "错误详情" #: subprojects/extensions-app/data/ui/extension-row.ui:62 msgid "Updates Details" msgstr "更新详情" #: subprojects/extensions-app/data/ui/extension-row.ui:72 msgid "" "A new version of this extension is ready and will be loaded on next login." msgstr "该扩展的新版本已准备好且将在下次登录时加载。" #: subprojects/extensions-app/data/ui/extension-row.ui:104 msgid "Extension Details" msgstr "扩展详情" #: subprojects/extensions-app/data/ui/extension-row.ui:192 msgid "_Website" msgstr "网站(_W)" #: subprojects/extensions-app/data/ui/extension-row.ui:219 msgid "_Settings" msgstr "设置(_S)" #: subprojects/extensions-app/data/ui/extension-row.ui:246 msgid "_Remove…" msgstr "移除(_R)…" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Keyboard Shortcuts" msgstr "键盘快捷键" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "关于扩展" #: subprojects/extensions-app/data/ui/extensions-window.ui:64 msgid "Main Menu" msgstr "主菜单" #: subprojects/extensions-app/data/ui/extensions-window.ui:106 msgid "Search extensions" msgstr "搜索扩展" #: subprojects/extensions-app/data/ui/extensions-window.ui:134 msgid "_Extensions" msgstr "扩展(_E)" #: subprojects/extensions-app/data/ui/extensions-window.ui:139 msgid "More Information" msgstr "更多信息" #: subprojects/extensions-app/data/ui/extensions-window.ui:151 msgid "" "Extensions can cause performance and stability issues. It is recommended to " "disable all extensions if you experience problems with your system." msgstr "扩展可能会引起性能和稳定性问题。如果您遇到系统问题建议禁用所有扩展。" #: subprojects/extensions-app/data/ui/extensions-window.ui:178 msgid "User Extensions" msgstr "用户扩展" #: subprojects/extensions-app/data/ui/extensions-window.ui:198 msgid "System Extensions" msgstr "系统扩展" #: subprojects/extensions-app/data/ui/extensions-window.ui:233 msgid "Search Results" msgstr "搜索结果" #: subprojects/extensions-app/data/ui/extensions-window.ui:252 msgid "No Results Found" msgstr "未找到结果" #: subprojects/extensions-app/data/ui/extensions-window.ui:253 msgid "Try a different search" msgstr "尝试不同的搜索" #: subprojects/extensions-app/data/ui/extensions-window.ui:264 msgid "No Installed Extensions" msgstr "没有已安装的扩展" #: subprojects/extensions-app/data/ui/extensions-window.ui:265 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" "如需查找或添加扩展,请访问 extensions.gnome.org 网站。" #: subprojects/extensions-app/data/ui/extensions-window.ui:276 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" "非常抱歉,我们无法获取已安装扩展的列表。请确保您已登录进 GNOME 并再试一次。" #: subprojects/extensions-app/data/ui/help-overlay.ui:9 msgctxt "shortcut window" msgid "General" msgstr "常规" #: subprojects/extensions-app/data/ui/help-overlay.ui:12 msgctxt "shortcut window" msgid "Open Menu" msgstr "打开菜单" #: subprojects/extensions-app/data/ui/help-overlay.ui:18 msgctxt "shortcut window" msgid "Toggle Search" msgstr "切换搜索" #: subprojects/extensions-app/data/ui/help-overlay.ui:24 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "显示快捷键" #: subprojects/extensions-app/data/ui/help-overlay.ui:30 msgctxt "shortcut window" msgid "Quit" msgstr "退出" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:284 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "新扩展已成功创建在目录 %s。\n" #: subprojects/extensions-tool/src/command-create.c:376 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" "名称应该为很短(最好是描述性的)的字符串。\n" "示例:%s" #: subprojects/extensions-tool/src/command-create.c:382 #: subprojects/extensions-tool/src/main.c:243 msgid "Name" msgstr "名称" #: subprojects/extensions-tool/src/command-create.c:396 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" "描述是对你的扩展的单句话解释。\n" "示例:%s" #: subprojects/extensions-tool/src/command-create.c:402 #: subprojects/extensions-tool/src/main.c:246 msgid "Description" msgstr "描述" #: subprojects/extensions-tool/src/command-create.c:416 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" "UUID 是你的扩展全局唯一的标识符。\n" "这应该是电子邮件地址的格式(clicktofocus@janedoe.example.com)\n" #: subprojects/extensions-tool/src/command-create.c:443 msgid "Choose one of the available templates:\n" msgstr "选择一个可用模板:\n" #: subprojects/extensions-tool/src/command-create.c:457 msgid "Template" msgstr "模板" #: subprojects/extensions-tool/src/command-create.c:515 msgid "The unique identifier of the new extension" msgstr "新扩展的唯一标识符" #: subprojects/extensions-tool/src/command-create.c:518 msgid "NAME" msgstr "名称" #: subprojects/extensions-tool/src/command-create.c:519 msgid "The user-visible name of the new extension" msgstr "新扩展的用户可见名称" #: subprojects/extensions-tool/src/command-create.c:521 msgid "DESCRIPTION" msgstr "描述" #: subprojects/extensions-tool/src/command-create.c:523 msgid "A short description of what the extension does" msgstr "扩展功能的简短描述" #: subprojects/extensions-tool/src/command-create.c:525 #: subprojects/extensions-tool/src/command-pack.c:455 msgid "DOMAIN" msgstr "域" #: subprojects/extensions-tool/src/command-create.c:527 msgid "The gettext domain used by the extension" msgstr "扩展使用的 gettext 域" #: subprojects/extensions-tool/src/command-create.c:529 #: subprojects/extensions-tool/src/command-pack.c:448 msgid "SCHEMA" msgstr "架构" #: subprojects/extensions-tool/src/command-create.c:531 msgid "The GSettings schema used by the extension" msgstr "扩展使用的 GSettings 方案" #: subprojects/extensions-tool/src/command-create.c:534 msgid "TEMPLATE" msgstr "模板" #: subprojects/extensions-tool/src/command-create.c:535 msgid "The template to use for the new extension" msgstr "新扩展使用的模板" #: subprojects/extensions-tool/src/command-create.c:538 msgid "Include prefs.js template" msgstr "包括 prefs.js 模版" #: subprojects/extensions-tool/src/command-create.c:544 msgid "Enter extension information interactively" msgstr "以交互方式输入扩展信息" #: subprojects/extensions-tool/src/command-create.c:552 msgid "Create a new extension" msgstr "创建新扩展" #: subprojects/extensions-tool/src/command-create.c:570 #: subprojects/extensions-tool/src/command-list.c:190 msgid "Unknown arguments" msgstr "未知参数" #: subprojects/extensions-tool/src/command-create.c:595 msgid "UUID, name and description are required" msgstr "UUID、名称和描述都是必需的" #: subprojects/extensions-tool/src/command-disable.c:62 #: subprojects/extensions-tool/src/command-enable.c:62 #, c-format msgid "Extension “%s” does not exist\n" msgstr "扩展“%s”不存在\n" #: subprojects/extensions-tool/src/command-disable.c:98 msgid "Disable an extension" msgstr "禁用扩展" #: subprojects/extensions-tool/src/command-disable.c:116 #: subprojects/extensions-tool/src/command-enable.c:116 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "未给定 UUID" #: subprojects/extensions-tool/src/command-disable.c:121 #: subprojects/extensions-tool/src/command-enable.c:121 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "给定了超过一个的 UUID" #: subprojects/extensions-tool/src/command-enable.c:98 msgid "Enable an extension" msgstr "启用扩展" #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:66 #: subprojects/extensions-tool/src/main.c:150 msgid "Failed to connect to GNOME Shell\n" msgstr "连接 GNOME Shell 失败\n" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:159 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "扩展“%s”不存在\n" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "显示扩展信息" #: subprojects/extensions-tool/src/command-install.c:190 msgid "Overwrite an existing extension" msgstr "覆盖已有的扩展" #: subprojects/extensions-tool/src/command-install.c:192 msgid "EXTENSION_BUNDLE" msgstr "扩展包" #: subprojects/extensions-tool/src/command-install.c:201 msgid "Install an extension bundle" msgstr "安装扩展包" #: subprojects/extensions-tool/src/command-install.c:219 msgid "No extension bundle specified" msgstr "未指定扩展包" #: subprojects/extensions-tool/src/command-install.c:225 msgid "More than one extension bundle specified" msgstr "指定了超过一个的扩展包" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show user-installed extensions" msgstr "显示用户安装的扩展" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show system-installed extensions" msgstr "显示系统安装的扩展" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Show enabled extensions" msgstr "显示启用的扩展" #: subprojects/extensions-tool/src/command-list.c:149 msgid "Show disabled extensions" msgstr "显示禁用的扩展" #: subprojects/extensions-tool/src/command-list.c:152 msgid "Show extensions in active state" msgstr "显示活动状态的扩展" #: subprojects/extensions-tool/src/command-list.c:155 msgid "Show extensions in inactive state" msgstr "显示非活动状态的扩展" #: subprojects/extensions-tool/src/command-list.c:158 msgid "Show extensions with preferences" msgstr "显示有设置选项的扩展" #: subprojects/extensions-tool/src/command-list.c:161 msgid "Show extensions with updates" msgstr "显示有更新的扩展" #: subprojects/extensions-tool/src/command-list.c:164 msgid "Print extension details" msgstr "打印扩展详情" #: subprojects/extensions-tool/src/command-list.c:172 msgid "List installed extensions" msgstr "列出已安装的扩展" #: subprojects/extensions-tool/src/command-pack.c:444 msgid "FILE" msgstr "文件" #: subprojects/extensions-tool/src/command-pack.c:445 msgid "Additional source to include in the bundle" msgstr "扩展包要包含的额外文件源" #: subprojects/extensions-tool/src/command-pack.c:449 msgid "A GSettings schema that should be included" msgstr "应该包含的 GSettings 架构" #: subprojects/extensions-tool/src/command-pack.c:451 #: subprojects/extensions-tool/src/command-pack.c:462 msgid "DIRECTORY" msgstr "目录" #: subprojects/extensions-tool/src/command-pack.c:453 msgid "The directory where translations are found" msgstr "查找翻译的目录" #: subprojects/extensions-tool/src/command-pack.c:457 msgid "The gettext domain to use for translations" msgstr "翻译使用的 gettext 域" #: subprojects/extensions-tool/src/command-pack.c:460 msgid "Overwrite an existing pack" msgstr "覆盖已有的打包" #: subprojects/extensions-tool/src/command-pack.c:464 msgid "The directory where the pack should be created" msgstr "包应该被创建到的目录" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "SOURCE_DIRECTORY" msgstr "源目录" #: subprojects/extensions-tool/src/command-pack.c:475 msgid "Create an extension bundle" msgstr "创建扩展包" #: subprojects/extensions-tool/src/command-pack.c:495 msgid "More than one source directory specified" msgstr "指定了超过一个的源目录" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "扩展 “%s” 没有首选项\n" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "为扩展“%s”打开首选项失败:%s\n" #: subprojects/extensions-tool/src/command-prefs.c:87 msgid "Opens extension preferences" msgstr "打开扩展首选项" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "重置扩展" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "无法卸载系统扩展\n" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "卸载“%s”失败\n" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "卸载扩展" #: subprojects/extensions-tool/src/main.c:76 msgid "Do not print error messages" msgstr "不要打印错误信息" #: subprojects/extensions-tool/src/main.c:249 msgid "Path" msgstr "路径" #: subprojects/extensions-tool/src/main.c:252 msgid "URL" msgstr "URL" #: subprojects/extensions-tool/src/main.c:255 msgid "Original author" msgstr "原作者" #: subprojects/extensions-tool/src/main.c:261 #: subprojects/extensions-tool/src/main.c:263 #: subprojects/extensions-tool/src/main.c:265 msgid "Version" msgstr "版本" #: subprojects/extensions-tool/src/main.c:268 msgid "Enabled" msgstr "已启用" #: subprojects/extensions-tool/src/main.c:268 msgid "Yes" msgstr "是" #: subprojects/extensions-tool/src/main.c:268 msgid "No" msgstr "否" #: subprojects/extensions-tool/src/main.c:271 msgid "State" msgstr "状态" #: subprojects/extensions-tool/src/main.c:309 msgid "“version” takes no arguments" msgstr "“version”不接受参数" #: subprojects/extensions-tool/src/main.c:311 #: subprojects/extensions-tool/src/main.c:331 msgid "Usage:" msgstr "用法:" #: subprojects/extensions-tool/src/main.c:314 msgid "Print version information and exit." msgstr "打印版本信息并退出。" #: subprojects/extensions-tool/src/main.c:329 #: subprojects/extensions-tool/src/main.c:332 msgid "COMMAND" msgstr "命令" #: subprojects/extensions-tool/src/main.c:332 msgid "[ARGS…]" msgstr "[参数…]" #: subprojects/extensions-tool/src/main.c:334 msgid "Commands:" msgstr "命令:" #: subprojects/extensions-tool/src/main.c:335 msgid "Print help" msgstr "打印帮助" #: subprojects/extensions-tool/src/main.c:337 msgid "Enable extension" msgstr "启用扩展" #: subprojects/extensions-tool/src/main.c:338 msgid "Disable extension" msgstr "禁用扩展" #: subprojects/extensions-tool/src/main.c:339 msgid "Reset extension" msgstr "重置扩展" #: subprojects/extensions-tool/src/main.c:340 msgid "Uninstall extension" msgstr "卸载扩展" #: subprojects/extensions-tool/src/main.c:341 msgid "List extensions" msgstr "列出扩展" #: subprojects/extensions-tool/src/main.c:342 #: subprojects/extensions-tool/src/main.c:343 msgid "Show extension info" msgstr "显示扩展信息" #: subprojects/extensions-tool/src/main.c:344 msgid "Open extension preferences" msgstr "打开扩展首选项" #: subprojects/extensions-tool/src/main.c:345 msgid "Create extension" msgstr "创建扩展" #: subprojects/extensions-tool/src/main.c:346 msgid "Package extension" msgstr "打包扩展" #: subprojects/extensions-tool/src/main.c:347 msgid "Install extension bundle" msgstr "安装扩展包" #: subprojects/extensions-tool/src/main.c:349 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "使用“%s”以获取详细帮助。\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "普通扩展" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "一个空扩展" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "指示器" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "添加图标到顶栏" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:4 msgid "Quick Settings Item" msgstr "快捷设置项目" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:5 msgid "Add an item to quick settings" msgstr "将项目添加至快捷设置" #. translators: #. * The device has been disabled #: subprojects/gvc/gvc-mixer-control.c:1872 msgid "Disabled" msgstr "已禁用" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1879 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u 个输出" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1889 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u 个输入" #: subprojects/gvc/gvc-mixer-control.c:2872 msgid "System Sounds" msgstr "系统声音" #~ msgid "Move Titlebar Onscreen" #~ msgstr "在屏幕中移动标题栏" #~ msgid "Stop conflicting session dialog closed" #~ msgstr "停止冲突会话对话框已关闭" #, javascript-format #~ msgid "Try to login again to start a session for user %s." #~ msgstr "尝试再次登录来为用户 %s 启动会话。" #, javascript-format #~ msgid "%s is now known as %s" #~ msgstr "%s 现在叫做 %s" #~ msgid "Network Manager" #~ msgstr "网络管理器" #~ msgid "Disabling" #~ msgstr "正在禁用" #~ msgid "Enabling" #~ msgstr "正在启用" #, javascript-format #~ msgid "%d %%" #~ msgstr "%d %%" # 这是英特尔的注册商标名,暂无官方译名。 #~ msgid "Thunderbolt" #~ msgstr "雷电接口" #~ msgid "No Thanks" #~ msgstr "不用了,谢谢" #~ msgid "No Matches" #~ msgstr "没有匹配" #~ msgid "The extension had an error" #~ msgstr "该扩展有错误" #~ msgid "The extension can be updated" #~ msgstr "该扩展可以更新" #~ msgid "Help" #~ msgstr "帮助" #~ msgid "Manually Installed" #~ msgstr "已手动安装" #~ msgid "Built-In" #~ msgstr "内置" #~ msgid "Extension Updates Ready" #~ msgstr "扩展更新已就绪" #~ msgid "Screenshot / Screencast" #~ msgstr "截图/录屏" #~ msgid "Power Profiles" #~ msgstr "性能配置文件" #~ msgid "" #~ "Whether the default Bluetooth adapter had set up devices associated to it" #~ msgstr "默认的蓝牙适配器是否有已配对的设备" #~ msgid "" #~ "The shell will only show a Bluetooth menu item if a Bluetooth adapter is " #~ "powered, or if there were devices set up associated with the default " #~ "adapter. This will be reset if the default adapter is ever seen not to " #~ "have devices associated to it." #~ msgstr "" #~ "Shell 只会在有蓝牙适配器有供电时或有设备与默认适配器关联时显示蓝牙菜单。若" #~ "默认适配器不再和设备关联,蓝牙菜单将不再因此出现。" #~ msgid "Attach modal dialog to the parent window" #~ msgstr "将模态对话框附到其父窗口上" #~ msgid "" #~ "This key overrides the key in org.gnome.mutter when running GNOME Shell." #~ msgstr "当 GNOME Shell 运行时,此键会覆盖 org.gnome.mutter 中的键。" #~ msgid "Enable edge tiling when dropping windows on screen edges" #~ msgstr "启用拖拽窗口到屏幕边缘时边缘平铺的功能" #~ msgid "Workspaces are managed dynamically" #~ msgstr "动态地管理工作区" #~ msgid "Workspaces only on primary monitor" #~ msgstr "仅在主显示器上显示工作区" #~ msgid "Delay focus changes in mouse mode until the pointer stops moving" #~ msgstr "将鼠标模式下焦点的更改推迟到指针停止移动之后" #~ msgid "Region & Language Settings" #~ msgstr "区域与语言设置" #~ msgid "Applications" #~ msgstr "应用程序" #, javascript-format #~ msgid "Unable to start %s" #~ msgstr "无法启动 %s" #, javascript-format #~ msgid "Couldn’t find the %s application" #~ msgstr "找不到 %s 应用程序" #~ msgid "Evolution Calendar" #~ msgstr "Evolution 日历" #~ msgid "Log Out" #~ msgstr "注销" #~ msgid "Connect to Internet" #~ msgstr "连接到互联网" #~ msgid "Airplane Mode is On" #~ msgstr "飞行模式已开启" #~ msgid "Wi-Fi is disabled when airplane mode is on." #~ msgstr "启用飞行模式时 Wi-Fi 会关闭。" #~ msgid "Turn Off Airplane Mode" #~ msgstr "关闭飞行模式" #~ msgid "Wi-Fi is Off" #~ msgstr "Wi-Fi 已关闭" #~ msgid "Wi-Fi needs to be turned on in order to connect to a network." #~ msgstr "连接网络需要开启 Wi-Fi。" #~ msgid "Turn On Wi-Fi" #~ msgstr "开启 Wi-Fi" #~ msgid "Select a network" #~ msgstr "选择网络" #~ msgid "Use hardware switch to turn off" #~ msgstr "使用硬件开关关闭" #~ msgid "Select Network" #~ msgstr "选择网络" #~ msgid "Wi-Fi Settings" #~ msgstr "Wi-Fi 设置" #~ msgid "VPN Off" #~ msgstr "VPN 已关闭" #, javascript-format #~ msgid "%s Wi-Fi Connection" #~ msgid_plural "%s Wi-Fi Connections" #~ msgstr[0] "%s 个 Wi-Fi 连接" #, javascript-format #~ msgid "%s Bluetooth Connection" #~ msgid_plural "%s Bluetooth Connections" #~ msgstr[0] "%s 个蓝牙连接" #~ msgid "Bluetooth On" #~ msgstr "蓝牙开启" #~ msgid "Bluetooth Off" #~ msgstr "蓝牙关闭" #~ msgid "Location In Use" #~ msgstr "定位服务使用中" #~ msgid "Location Disabled" #~ msgstr "定位服务已禁用" #, javascript-format #~ msgid "%s Off" #~ msgstr "%s 已关闭" #, javascript-format #~ msgid "%s Connected" #~ msgstr "%s 已连接" #, javascript-format #~ msgid "%s Unmanaged" #~ msgstr "%s 未托管" #, javascript-format #~ msgid "%s Connecting" #~ msgstr "%s 正在连接" #, javascript-format #~ msgid "%s Requires Authentication" #~ msgstr "%s 需要认证" #, javascript-format #~ msgid "Firmware Missing For %s" #~ msgstr "%s 的固件缺失" #, javascript-format #~ msgid "%s Unavailable" #~ msgstr "%s 不可用" #, javascript-format #~ msgid "%s Connection Failed" #~ msgstr "%s 连接失败" #, javascript-format #~ msgid "%s Hardware Disabled" #~ msgstr "%s 硬件开关关闭" #, javascript-format #~ msgid "%s Disabled" #~ msgstr "%s 已禁用" #, javascript-format #~ msgid "%s Not Connected" #~ msgstr "%s 未连接" #~ msgid "unknown" #~ msgstr "未知" #~ msgid "connecting…" #~ msgstr "正在连接…" #~ msgid "authentication required" #~ msgstr "需要认证" #~ msgid "connection failed" #~ msgstr "连接失败" #~ msgid "Night Light Disabled" #~ msgstr "夜间模式已禁用" #~ msgid "Resume" #~ msgstr "继续使用" #~ msgid "Disable Until Tomorrow" #~ msgstr "明天前禁用" #~ msgid "Fully Charged" #~ msgstr "已充满电" #~ msgid "Not Charging" #~ msgstr "未在充电" #~ msgid "Estimating…" #~ msgstr "正在估计…" #, javascript-format #~ msgid "%d∶%02d Remaining (%d %%)" #~ msgstr "剩余 %d∶%02d (%d%%)" #, javascript-format #~ msgid "%d∶%02d Until Full (%d %%)" #~ msgstr "距充满还剩 %d∶%02d (%d%%)" #~ msgid "Screen is Being Shared" #~ msgstr "正在共享屏幕" #~ msgid "Turn off" #~ msgstr "关闭" #~ msgid "Airplane Mode On" #~ msgstr "飞行模式已开启" #~ msgid "Lock" #~ msgstr "锁定" #~ msgid "Power Off / Log Out" #~ msgstr "关机 / 注销" #~ msgid "Show screenshot UI" #~ msgstr "显示截图界面" #~ msgid "Screen Recording in Progress" #~ msgstr "正在进行屏幕录制" #~ msgid "Stop" #~ msgstr "停止" #~ msgid "Author" #~ msgstr "作者" #~ msgid "Warning" #~ msgstr "警告" #~ msgid "" #~ "Extensions can cause system issues, including performance problems. If " #~ "you encounter problems with your system, it is recommended to disable all " #~ "extensions." #~ msgstr "" #~ "扩展可引起系统问题,包括性能问题。如果您遇到了系统的问题,推荐禁用全部扩" #~ "展。" #~ msgid "Remove from Favorites" #~ msgstr "从收藏夹中移除" #~ msgid "Add to Favorites" #~ msgstr "添加到收藏夹" #~ msgid "Failed to connect to GNOME Shell" #~ msgstr "连接 GNOME Shell 失败" #~ msgid "Enable introspection API" #~ msgstr "启用 introspection API" #~ msgid "" #~ "Enables a D-Bus API that allows to introspect the application state of " #~ "the shell." #~ msgstr "启用一个允许审视(introspect)shell 应用程序状态的 D-Bus API。" #~ msgid "Minimize" #~ msgstr "最小化" #~ msgid "Unmaximize" #~ msgstr "取消最大化" #~ msgid "App Picker View" #~ msgstr "应用选择器视图" #~ msgid "Index of the currently selected view in the application picker." #~ msgstr "应用程序选择器中当前选中视图的索引。" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d" #~ msgstr "%-m月%-d日 %A" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d, %Y" #~ msgstr "%Y年%-m月%-d日 %A" #~ msgid "Frequently used applications will appear here" #~ msgstr "常用的应用程序会出现在这里" #~ msgid "Frequent" #~ msgstr "常用" #~ msgid "All" #~ msgstr "全部" #~ msgid "Copy Error" #~ msgstr "复制错误" #~ msgid "Browse in Software" #~ msgstr "在“软件”中浏览" #~ msgid "Next" #~ msgstr "下一步" #~ msgctxt "button" #~ msgid "Sign In" #~ msgstr "登录" #~ msgid "Rename" #~ msgstr "重命名" #~ msgid "Password:" #~ msgstr "密码:" #~ msgid "Type again:" #~ msgstr "再输一次:" #~ msgid "Password: " #~ msgstr "密码:" #~ msgid "Authentication required by wireless network" #~ msgstr "无线网络要求身份认证" #~ msgid "Mobile broadband network password" #~ msgstr "移动宽带网络密码" #~ msgid "%A, %B %d" #~ msgstr "%-m月%-d日 %A" #~ msgid "%d new message" #~ msgid_plural "%d new messages" #~ msgstr[0] "%d 条新消息" #~ msgid "On" #~ msgstr "开" #~ msgid "Account Settings" #~ msgstr "帐号设置" #~ msgid "Orientation Lock" #~ msgstr "方向锁定" #~ msgid "" #~ "Keybinding that pauses and resumes all running tweens, for debugging " #~ "purposes" #~ msgstr "暂停和恢复所有执行中动画的快捷键,用于调试" #~ msgid "Which keyboard to use" #~ msgstr "使用哪种键盘" #~ msgid "The type of keyboard to use." #~ msgstr "要使用的键盘类型。" #~ msgid "toggle-switch-us" #~ msgstr "toggle-switch-us" #~ msgid "network-workgroup" #~ msgstr "network-workgroup" #~ msgid "There was an error loading the preferences dialog for %s:" #~ msgstr "载入 %s 的首选项对话框时出错:" #~ msgid "%s all day." #~ msgstr "全天%s。" #~ msgid "%s, then %s later." #~ msgstr "%s转%s。" #~ msgid "%s, then %s, followed by %s later." #~ msgstr "%s转%s,随后转%s。" #~ msgid "Feels like %s." #~ msgstr "体感温度 %s。" #~ msgctxt "search-result" #~ msgid "Log out" #~ msgstr "注销" #~ msgctxt "search-result" #~ msgid "Switch user" #~ msgstr "切换用户" #~ msgid "Web Authentication Redirect" #~ msgstr "网页认证重定向" #~ msgid "Events" #~ msgstr "事件" #~ msgid "Hide tray" #~ msgstr "隐藏托盘" #~ msgid "Status Icons" #~ msgstr "状态图标" #~ msgid "Media" #~ msgstr "媒体" #~ msgid "%d x %d" #~ msgstr "%d x %d" #~ msgid "Show the week date in the calendar" #~ msgstr "在日历中显示星期" #~ msgid "If true, display the ISO week date in the calendar." #~ msgstr "如果为 true,在日历中显示 ISO 周日期。" #~ msgid "Use as Internet connection" #~ msgstr "使用互联网连接" #~ msgid "%s is requesting access to your location." #~ msgstr "%s 申请访问您的位置信息。" #~ msgid "GNOME Shell (wayland compositor)" #~ msgstr "GNOME Shell (wayland 合成器)" #~ msgid "%d Connected Device" #~ msgid_plural "%d Connected Devices" #~ msgstr[0] "已连接 %d 台设备" #~ msgid "UPS" #~ msgstr "UPS" #~ msgid "Battery" #~ msgstr "电池" #~ msgctxt "event list time" #~ msgid "%H∶%M" #~ msgstr "%H∶%M" #~ msgctxt "event list time" #~ msgid "%l∶%M %p" #~ msgstr "%p %-l:%M" 0707010000026E000081A40000000000000000000000016712993F0000DB8D000000000000000000000000000000000000001D00000000gnome-shell-47.1/po/zh_HK.po# Chinese (Hong Kong) translation for gnome-shell. # Copyright (C) 2010 gnome-shell's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-shell package. # Chao-Hsiung Liao , 2010. # Wei-Lun Chao , 2010. # msgid "" msgstr "" "Project-Id-Version: gnome-shell 3.3.90\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "shell&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2015-11-03 22:14+0000\n" "PO-Revision-Date: 2014-08-19 19:17+0800\n" "Last-Translator: Chao-Hsiung Liao \n" "Language-Team: Chinese (Hong Kong) \n" "Language: zh_HK\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 1.6.5\n" #: ../data/50-gnome-shell-system.xml.in.h:1 msgid "System" msgstr "系統" #: ../data/50-gnome-shell-system.xml.in.h:2 #, fuzzy #| msgid "%d new notification" #| msgid_plural "%d new notifications" msgid "Show the notification list" msgstr "%d 個新通知" #: ../data/50-gnome-shell-system.xml.in.h:3 msgid "Focus the active notification" msgstr "聚焦到使用中的通知" #: ../data/50-gnome-shell-system.xml.in.h:4 msgid "Show the overview" msgstr "顯示概覽" #: ../data/50-gnome-shell-system.xml.in.h:5 msgid "Show all applications" msgstr "顯示所有的應用程式" #: ../data/50-gnome-shell-system.xml.in.h:6 msgid "Open the application menu" msgstr "開啟應用程式選單" #: ../data/gnome-shell.desktop.in.in.h:1 msgid "GNOME Shell" msgstr "GNOME Shell" #: ../data/gnome-shell.desktop.in.in.h:2 #: ../data/gnome-shell-wayland.desktop.in.in.h:2 msgid "Window management and application launching" msgstr "視窗管理與應用程式的執行" #: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1 msgid "GNOME Shell Extension Preferences" msgstr "GNOME Shell 擴充功能偏好設定" #: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2 msgid "Configure GNOME Shell Extensions" msgstr "設定 GNOME Shell 擴充功能" #: ../data/gnome-shell-wayland.desktop.in.in.h:1 msgid "GNOME Shell (wayland compositor)" msgstr "GNOME Shell (wayland 組合器)" #: ../data/org.gnome.shell.gschema.xml.in.in.h:1 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "啟用讓開發者與測試者能以 Alt-F2 使用好用的內部工具" #: ../data/org.gnome.shell.gschema.xml.in.in.h:2 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "允許使用 Alt-F2 對話盒存取內部除錯和監控工具。" #: ../data/org.gnome.shell.gschema.xml.in.in.h:3 msgid "UUIDs of extensions to enable" msgstr "要啟用的擴充功能 UUID" #: ../data/org.gnome.shell.gschema.xml.in.in.h:4 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "GNOME Shell 擴充功能有 UUID 屬性;這個設定鍵列出了應載入的擴充功能。任何要載" "入的擴充功能都要出現在這個清單中。你也可以用 org.gnome.Shell 中的 " "EnableExtension 和 DisableExtension D-Bus 方法來操作這個清單。" #: ../data/org.gnome.shell.gschema.xml.in.in.h:5 msgid "Disables the validation of extension version compatibility" msgstr "停用擴充功能版本兼容性的驗證" #: ../data/org.gnome.shell.gschema.xml.in.in.h:6 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "GNOME Shell 只會載入宣稱支援目前運行中版本的擴充功能。啟用此選項會停用這項檢" "查,並嘗試載入所有的擴充功能,而不去管它們所宣稱支援的版本為何。" #: ../data/org.gnome.shell.gschema.xml.in.in.h:7 msgid "List of desktop file IDs for favorite applications" msgstr "喜好的應用程式桌面檔案 ID 清單" #: ../data/org.gnome.shell.gschema.xml.in.in.h:8 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "對應這些辨別碼的應用程式會顯示在喜好區域。" #: ../data/org.gnome.shell.gschema.xml.in.in.h:9 msgid "App Picker View" msgstr "程式挑選器檢視" #: ../data/org.gnome.shell.gschema.xml.in.in.h:10 msgid "Index of the currently selected view in the application picker." msgstr "應用程式挑選器中目前選取檢視的索引。" #: ../data/org.gnome.shell.gschema.xml.in.in.h:11 msgid "History for command (Alt-F2) dialog" msgstr "指令 (Alt-F2) 對話盒歷史紀錄" #. Translators: looking glass is a debugger and inspector tool, see https://live.gnome.org/GnomeShell/LookingGlass #: ../data/org.gnome.shell.gschema.xml.in.in.h:13 msgid "History for the looking glass dialog" msgstr "Looking glass 對話盒歷史紀錄" #: ../data/org.gnome.shell.gschema.xml.in.in.h:14 msgid "Always show the 'Log out' menu item in the user menu." msgstr "永遠在使用者選單顯示「登出」選單項目。" #: ../data/org.gnome.shell.gschema.xml.in.in.h:15 msgid "" "This key overrides the automatic hiding of the 'Log out' menu item in single-" "user, single-session situations." msgstr "" "這個設定鍵會覆蓋在單一使用者、單一作業階段情況下對「登出」選單項目的隱藏。" #: ../data/org.gnome.shell.gschema.xml.in.in.h:16 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "是否記住已掛載的加密或遠端檔案系統的密碼" #: ../data/org.gnome.shell.gschema.xml.in.in.h:17 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "'Remember Password' checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "當掛載加密裝置或遠端檔案系統時會要求密碼。如果密碼可以被儲存以供未來使用時會" "顯示「記住密碼」。這個設定鍵設定了核取方塊的預設狀態。" #: ../data/org.gnome.shell.gschema.xml.in.in.h:18 msgid "" "Whether the default Bluetooth adapter had set up devices associated to it" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:19 msgid "" "The shell will only show a Bluetooth menu item if a Bluetooth adapter is " "powered, or if there were devices set up associated with the default " "adapter. This will be reset if the default adapter is ever seen not to have " "devices associated to it." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.in.h:20 msgid "Show the week date in the calendar" msgstr "在日曆中顯示週數" #: ../data/org.gnome.shell.gschema.xml.in.in.h:21 msgid "If true, display the ISO week date in the calendar." msgstr "如果設為 true,在日曆中顯示 ISO 週數。" #: ../data/org.gnome.shell.gschema.xml.in.in.h:22 msgid "Keybinding to open the application menu" msgstr "開啟應用程式選單的組合鍵" #: ../data/org.gnome.shell.gschema.xml.in.in.h:23 msgid "Keybinding to open the application menu." msgstr "開啟應用程式選單的組合鍵。" #: ../data/org.gnome.shell.gschema.xml.in.in.h:24 msgid "Keybinding to open the \"Show Applications\" view" msgstr "開啟「顯示應用程式」檢視的組合鍵" #: ../data/org.gnome.shell.gschema.xml.in.in.h:25 msgid "" "Keybinding to open the \"Show Applications\" view of the Activities Overview." msgstr "開啟活動概覽「顯示應用程式」檢視的組合鍵" #: ../data/org.gnome.shell.gschema.xml.in.in.h:26 msgid "Keybinding to open the overview" msgstr "開啟概覽的組合鍵" #: ../data/org.gnome.shell.gschema.xml.in.in.h:27 msgid "Keybinding to open the Activities Overview." msgstr "開啟「活動概覽」的組合鍵。" #: ../data/org.gnome.shell.gschema.xml.in.in.h:28 #, fuzzy #| msgid "Keybinding to toggle the visibility of the message tray" msgid "Keybinding to toggle the visibility of the notification list" msgstr "切換訊息匣顯示的組合鍵" #: ../data/org.gnome.shell.gschema.xml.in.in.h:29 #, fuzzy #| msgid "Keybinding to toggle the visibility of the message tray." msgid "Keybinding to toggle the visibility of the notification list." msgstr "切換訊息匣顯示的組合鍵。" #: ../data/org.gnome.shell.gschema.xml.in.in.h:30 msgid "Keybinding to focus the active notification" msgstr "聚焦到使用中通知的組合鍵" #: ../data/org.gnome.shell.gschema.xml.in.in.h:31 msgid "Keybinding to focus the active notification." msgstr "聚焦到使用中通知的組合鍵。" #: ../data/org.gnome.shell.gschema.xml.in.in.h:32 msgid "" "Keybinding that pauses and resumes all running tweens, for debugging purposes" msgstr "暫停與恢復執行中重複項的組合鍵,用於除錯用途" #: ../data/org.gnome.shell.gschema.xml.in.in.h:33 msgid "Which keyboard to use" msgstr "要使用哪種鍵盤" #: ../data/org.gnome.shell.gschema.xml.in.in.h:34 msgid "The type of keyboard to use." msgstr "要使用的鍵盤類型。" #: ../data/org.gnome.shell.gschema.xml.in.in.h:35 msgid "Limit switcher to current workspace." msgstr "限制切換器使用目前的工作區" #: ../data/org.gnome.shell.gschema.xml.in.in.h:36 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "如果設定為「true」,切換器將僅顯示目前工作區中的應用程式視窗。否則,所有的應" "用程式都會包含在內。" #: ../data/org.gnome.shell.gschema.xml.in.in.h:37 msgid "The application icon mode." msgstr "應用程式圖示模式。" #: ../data/org.gnome.shell.gschema.xml.in.in.h:38 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-" "only' (shows only the application icon) or 'both'." msgstr "" "設定視窗在切換器中如何顯示。有效的數值為「thumbnail-only」(顯示視窗縮圖)、" "「app-icon-only」(只顯示應用程式圖示) 或「both」。" #: ../data/org.gnome.shell.gschema.xml.in.in.h:39 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "如果設定為「true」,切換器將僅顯示目前工作區中的視窗。否則,所有的視窗都會包" "含在內。" #: ../data/org.gnome.shell.gschema.xml.in.in.h:40 msgid "Attach modal dialog to the parent window" msgstr "在上層視窗附加強制對話盒" #: ../data/org.gnome.shell.gschema.xml.in.in.h:41 msgid "" "This key overrides the key in org.gnome.mutter when running GNOME Shell." msgstr "這個設定鍵會在執行 GNOME Shell 時覆蓋 org.gnome.mutter 中的設定鍵。" #: ../data/org.gnome.shell.gschema.xml.in.in.h:42 msgid "Enable edge tiling when dropping windows on screen edges" msgstr "在螢幕邊緣放下視窗時啟用邊緣拼貼" #: ../data/org.gnome.shell.gschema.xml.in.in.h:43 msgid "Workspaces are managed dynamically" msgstr "工作區以動態方式管理" #: ../data/org.gnome.shell.gschema.xml.in.in.h:44 msgid "Workspaces only on primary monitor" msgstr "工作區只在主要顯示器" #: ../data/org.gnome.shell.gschema.xml.in.in.h:45 msgid "Delay focus changes in mouse mode until the pointer stops moving" msgstr "在滑鼠模式中延遲焦點更改直到指標停止移動" #: ../data/org.gnome.Shell.PortalHelper.desktop.in.h:1 #, fuzzy #| msgid "Network error" msgid "Network Login" msgstr "網絡錯誤" #: ../js/extensionPrefs/main.js:122 #, javascript-format msgid "There was an error loading the preferences dialog for %s:" msgstr "載入 %s 的偏好設定對話盒時發生錯誤:" #: ../js/extensionPrefs/main.js:154 msgid "GNOME Shell Extensions" msgstr "GNOME Shell 擴充功能" #: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:145 #: ../js/ui/components/polkitAgent.js:179 ../js/ui/endSessionDialog.js:452 #: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399 #: ../js/ui/status/network.js:916 msgid "Cancel" msgstr "取消" #: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:215 #: ../js/gdm/authPrompt.js:447 msgid "Next" msgstr "下一個" #: ../js/gdm/authPrompt.js:211 ../js/ui/shellMountOperation.js:403 #: ../js/ui/unlockDialog.js:59 msgid "Unlock" msgstr "解鎖" #: ../js/gdm/authPrompt.js:213 msgctxt "button" msgid "Sign In" msgstr "登入" #: ../js/gdm/loginDialog.js:281 msgid "Choose Session" msgstr "選擇作業階段" #. translators: this message is shown below the user list on the #. login screen. It can be activated to reveal an entry for #. manually entering the username. #: ../js/gdm/loginDialog.js:431 msgid "Not listed?" msgstr "沒有列出來?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: ../js/gdm/loginDialog.js:850 #, javascript-format msgid "(e.g., user or %s)" msgstr "(例如: user 或 %s)" #. TTLS and PEAP are actually much more complicated, but this complication #. is not visible here since we only care about phase2 authentication #. (and don't even care of which one) #: ../js/gdm/loginDialog.js:855 ../js/ui/components/networkAgent.js:271 #: ../js/ui/components/networkAgent.js:289 msgid "Username: " msgstr "使用者名稱:" #: ../js/gdm/loginDialog.js:1180 msgid "Login Window" msgstr "登入視窗" #: ../js/gdm/util.js:341 msgid "Authentication error" msgstr "核對錯誤" #. We don't show fingerprint messages directly since it's #. not the main auth service. Instead we use the messages #. as a cue to display our own message. #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger instead #: ../js/gdm/util.js:473 msgid "(or swipe finger)" msgstr "(或是滑過手指)" #: ../js/misc/util.js:119 msgid "Command not found" msgstr "找不到指令" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: ../js/misc/util.js:152 msgid "Could not parse command:" msgstr "無法分析指令:" #: ../js/misc/util.js:160 #, javascript-format msgid "Execution of “%s” failed:" msgstr "執行「%s」失敗:" #. Translators: Time in 24h format #: ../js/misc/util.js:191 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: ../js/misc/util.js:197 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "昨天 %H:%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: ../js/misc/util.js:203 #, no-c-format msgid "%A, %H∶%M" msgstr "%A %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: ../js/misc/util.js:209 #, no-c-format msgid "%B %d, %H∶%M" msgstr "%m月%d日 %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: ../js/misc/util.js:215 #, no-c-format msgid "%B %d %Y, %H∶%M" msgstr "%Y年%m月%d日 %H:%M" #. Translators: Time in 12h format #: ../js/misc/util.js:220 msgid "%l∶%M %p" msgstr "%p %l∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: ../js/misc/util.js:226 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "昨天 %p %l∶%M" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: ../js/misc/util.js:232 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A%p %l∶%M" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: ../js/misc/util.js:238 #, no-c-format msgid "%B %d, %l∶%M %p" msgstr "%m月%d日%p %l∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: ../js/misc/util.js:244 #, no-c-format msgid "%B %d %Y, %l∶%M %p" msgstr "%Y年%m月%d日%p %l∶%M" #. TRANSLATORS: this is the title of the wifi captive portal login #. * window, until we know the title of the actual login page #: ../js/portalHelper/main.js:85 msgid "Web Authentication Redirect" msgstr "網頁核對重新導向" #: ../js/ui/appDisplay.js:794 msgid "Frequently used applications will appear here" msgstr "經常使用的應用程式會出現在這裏" #: ../js/ui/appDisplay.js:914 msgid "Frequent" msgstr "常用" #: ../js/ui/appDisplay.js:921 msgid "All" msgstr "全部" #: ../js/ui/appDisplay.js:1853 msgid "New Window" msgstr "新視窗" #: ../js/ui/appDisplay.js:1881 ../js/ui/dash.js:289 msgid "Remove from Favorites" msgstr "自喜好中移除" #: ../js/ui/appDisplay.js:1887 msgid "Add to Favorites" msgstr "加入喜好" #: ../js/ui/appDisplay.js:1897 msgid "Show Details" msgstr "顯示詳細資訊" #: ../js/ui/appFavorites.js:132 #, javascript-format msgid "%s has been added to your favorites." msgstr "%s 已加入你的喜好中。" #: ../js/ui/appFavorites.js:166 #, javascript-format msgid "%s has been removed from your favorites." msgstr "%s 已經從你的喜好中移除。" #: ../js/ui/backgroundMenu.js:19 msgid "Change Background…" msgstr "改變背景…" #: ../js/ui/backgroundMenu.js:21 #, fuzzy #| msgid "Wired Settings" msgid "Display Settings" msgstr "有線設定值" #: ../js/ui/backgroundMenu.js:22 ../js/ui/status/system.js:366 msgid "Settings" msgstr "設定值" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: ../js/ui/calendar.js:55 msgctxt "calendar-no-work" msgid "06" msgstr "" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: ../js/ui/calendar.js:84 msgctxt "grid sunday" msgid "S" msgstr "日" #. Translators: Calendar grid abbreviation for Monday #: ../js/ui/calendar.js:86 msgctxt "grid monday" msgid "M" msgstr "一" #. Translators: Calendar grid abbreviation for Tuesday #: ../js/ui/calendar.js:88 msgctxt "grid tuesday" msgid "T" msgstr "二" #. Translators: Calendar grid abbreviation for Wednesday #: ../js/ui/calendar.js:90 msgctxt "grid wednesday" msgid "W" msgstr "三" #. Translators: Calendar grid abbreviation for Thursday #: ../js/ui/calendar.js:92 msgctxt "grid thursday" msgid "T" msgstr "四" #. Translators: Calendar grid abbreviation for Friday #: ../js/ui/calendar.js:94 msgctxt "grid friday" msgid "F" msgstr "五" #. Translators: Calendar grid abbreviation for Saturday #: ../js/ui/calendar.js:96 msgctxt "grid saturday" msgid "S" msgstr "六" #: ../js/ui/calendar.js:566 msgid "Previous month" msgstr "上個月" #: ../js/ui/calendar.js:576 msgid "Next month" msgstr "下個月" #: ../js/ui/calendar.js:728 #, javascript-format msgctxt "date day number format" msgid "%d" msgstr "" #: ../js/ui/calendar.js:783 msgid "Week %V" msgstr "" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: ../js/ui/calendar.js:1188 msgctxt "event list time" msgid "All Day" msgstr "整天" #: ../js/ui/calendar.js:1295 msgid "Clear section" msgstr "" #: ../js/ui/calendar.js:1522 msgid "Events" msgstr "" #: ../js/ui/calendar.js:1531 msgctxt "calendar heading" msgid "%A, %B %d" msgstr "%m月%d日%A" #: ../js/ui/calendar.js:1535 msgctxt "calendar heading" msgid "%A, %B %d, %Y" msgstr "%Y年%m月%d日%A" #: ../js/ui/calendar.js:1620 msgid "Notifications" msgstr "通知" #: ../js/ui/calendar.js:1771 #, fuzzy #| msgid "Notifications" msgid "No Notifications" msgstr "通知" #: ../js/ui/calendar.js:1774 msgid "No Events" msgstr "" #: ../js/ui/components/automountManager.js:91 msgid "External drive connected" msgstr "外部裝置已連接" #: ../js/ui/components/automountManager.js:102 msgid "External drive disconnected" msgstr "外部裝置已拔除" #: ../js/ui/components/autorunManager.js:351 #, javascript-format msgid "Open with %s" msgstr "用 %s 開啟" #: ../js/ui/components/keyring.js:120 ../js/ui/components/polkitAgent.js:315 msgid "Password:" msgstr "密碼: " #: ../js/ui/components/keyring.js:153 msgid "Type again:" msgstr "再輸入一次:" #: ../js/ui/components/networkAgent.js:140 ../js/ui/status/network.js:269 #: ../js/ui/status/network.js:352 ../js/ui/status/network.js:919 msgid "Connect" msgstr "連線" #. Cisco LEAP #: ../js/ui/components/networkAgent.js:233 #: ../js/ui/components/networkAgent.js:245 #: ../js/ui/components/networkAgent.js:273 #: ../js/ui/components/networkAgent.js:293 #: ../js/ui/components/networkAgent.js:303 msgid "Password: " msgstr "密碼: " #. static WEP #: ../js/ui/components/networkAgent.js:238 msgid "Key: " msgstr "密碼匙:" #: ../js/ui/components/networkAgent.js:277 msgid "Identity: " msgstr "識別:" #: ../js/ui/components/networkAgent.js:279 msgid "Private key password: " msgstr "私密密碼匙密碼:" #: ../js/ui/components/networkAgent.js:291 msgid "Service: " msgstr "服務:" #: ../js/ui/components/networkAgent.js:320 #: ../js/ui/components/networkAgent.js:658 msgid "Authentication required by wireless network" msgstr "無線網絡所需要的核對" #: ../js/ui/components/networkAgent.js:321 #: ../js/ui/components/networkAgent.js:659 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network " "“%s”." msgstr "需要密碼或是加密密碼匙來存取無線網絡「%s」。" #: ../js/ui/components/networkAgent.js:325 #: ../js/ui/components/networkAgent.js:662 msgid "Wired 802.1X authentication" msgstr "有線網絡 802.1X 核對" #: ../js/ui/components/networkAgent.js:327 msgid "Network name: " msgstr "網絡名稱:" #: ../js/ui/components/networkAgent.js:332 #: ../js/ui/components/networkAgent.js:666 msgid "DSL authentication" msgstr "DSL 核對" #: ../js/ui/components/networkAgent.js:339 #: ../js/ui/components/networkAgent.js:672 msgid "PIN code required" msgstr "需要 PIN 碼" #: ../js/ui/components/networkAgent.js:340 #: ../js/ui/components/networkAgent.js:673 msgid "PIN code is needed for the mobile broadband device" msgstr "這個流動寬頻裝置需要 PIN 碼" #: ../js/ui/components/networkAgent.js:341 msgid "PIN: " msgstr "PIN: " #: ../js/ui/components/networkAgent.js:348 #: ../js/ui/components/networkAgent.js:679 msgid "Mobile broadband network password" msgstr "流動寬頻網絡密碼" #: ../js/ui/components/networkAgent.js:349 #: ../js/ui/components/networkAgent.js:663 #: ../js/ui/components/networkAgent.js:667 #: ../js/ui/components/networkAgent.js:680 #, javascript-format msgid "A password is required to connect to “%s”." msgstr "連線至「%s」需要密碼。" #: ../js/ui/components/networkAgent.js:647 ../js/ui/status/network.js:1658 msgid "Network Manager" msgstr "網絡管理員" #: ../js/ui/components/polkitAgent.js:60 msgid "Authentication Required" msgstr "要求核對" #: ../js/ui/components/polkitAgent.js:102 msgid "Administrator" msgstr "系統管理員" #: ../js/ui/components/polkitAgent.js:182 msgid "Authenticate" msgstr "核對" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: ../js/ui/components/polkitAgent.js:301 ../js/ui/shellMountOperation.js:383 msgid "Sorry, that didn't work. Please try again." msgstr "抱歉,那樣沒有作用。請再試一次。" #. Translators: this is the other person changing their old IM name to their new #. IM name. #: ../js/ui/components/telepathyClient.js:759 #, javascript-format msgid "%s is now known as %s" msgstr "%s 現在被稱為 %s" #: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:155 msgid "Windows" msgstr "視窗" #: ../js/ui/dash.js:250 ../js/ui/dash.js:291 msgid "Show Applications" msgstr "顯示應用程式" #. Translators: this is the name of the dock/favorites area on #. the left of the overview #: ../js/ui/dash.js:449 msgid "Dash" msgstr "Dash" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM"). #. #: ../js/ui/dateMenu.js:73 #, fuzzy #| msgid "%A %B %e, %Y" msgid "%B %e %Y" msgstr "%Y年%m月%e日%A" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: ../js/ui/dateMenu.js:80 #, fuzzy #| msgid "%A %B %e, %Y" msgid "%A %B %e %Y" msgstr "%Y年%m月%e日%A" #: ../js/ui/dateMenu.js:160 msgid "Add world clocks…" msgstr "" #: ../js/ui/dateMenu.js:161 #, fuzzy #| msgid "Open Clocks" msgid "World Clocks" msgstr "開啟時鐘" #: ../js/ui/endSessionDialog.js:64 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "登出 %s" #: ../js/ui/endSessionDialog.js:65 msgctxt "title" msgid "Log Out" msgstr "登出" #: ../js/ui/endSessionDialog.js:67 #, javascript-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "%s 會在 %d 秒後自動登出。" #: ../js/ui/endSessionDialog.js:72 #, javascript-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "你會在 %d 秒後自動登出。" #: ../js/ui/endSessionDialog.js:78 msgctxt "button" msgid "Log Out" msgstr "登出" #: ../js/ui/endSessionDialog.js:84 msgctxt "title" msgid "Power Off" msgstr "關閉電源" #: ../js/ui/endSessionDialog.js:85 msgctxt "title" msgid "Install Updates & Power Off" msgstr "安裝更新並關機" #: ../js/ui/endSessionDialog.js:87 #, javascript-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "系統會在 %d 秒後關閉電源。" #: ../js/ui/endSessionDialog.js:91 msgctxt "checkbox" msgid "Install pending software updates" msgstr "安裝擱置的軟件更新" #: ../js/ui/endSessionDialog.js:94 ../js/ui/endSessionDialog.js:111 msgctxt "button" msgid "Restart" msgstr "重新啟動" #: ../js/ui/endSessionDialog.js:96 msgctxt "button" msgid "Power Off" msgstr "關閉電源" #: ../js/ui/endSessionDialog.js:103 msgctxt "title" msgid "Restart" msgstr "重新啟動" #: ../js/ui/endSessionDialog.js:105 #, javascript-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "系統會在 %d 秒後自動重新啟動。" #: ../js/ui/endSessionDialog.js:119 msgctxt "title" msgid "Restart & Install Updates" msgstr "重新啟動並安裝更新" #: ../js/ui/endSessionDialog.js:121 #, javascript-format msgid "The system will automatically restart and install updates in %d second." msgid_plural "" "The system will automatically restart and install updates in %d seconds." msgstr[0] "系統會在 %d 秒後自動重新啟動。" #: ../js/ui/endSessionDialog.js:127 msgctxt "button" msgid "Restart & Install" msgstr "重新啟動並安裝" #: ../js/ui/endSessionDialog.js:128 msgctxt "button" msgid "Install & Power Off" msgstr "安裝並關機" #: ../js/ui/endSessionDialog.js:129 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "在安裝完更新之後關機" #: ../js/ui/endSessionDialog.js:338 msgid "Running on battery power: please plug in before installing updates." msgstr "正使用電池電源執行:請在安裝更新之前插入電源線。" #: ../js/ui/endSessionDialog.js:355 msgid "Some applications are busy or have unsaved work." msgstr "部分應用程式忙碌中或有未儲存的工作。" #: ../js/ui/endSessionDialog.js:362 msgid "Other users are logged in." msgstr "其他使用者已登入。" #. Translators: Remote here refers to a remote session, like a ssh login #: ../js/ui/endSessionDialog.js:640 #, javascript-format msgid "%s (remote)" msgstr "%s (遠端)" #. Translators: Console here refers to a tty like a VT console #: ../js/ui/endSessionDialog.js:643 #, javascript-format msgid "%s (console)" msgstr "%s (主控臺)" #: ../js/ui/extensionDownloader.js:199 msgid "Install" msgstr "安裝" #: ../js/ui/extensionDownloader.js:204 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "是否從 extensions.gnome.org 下載並安裝「%s」?" #: ../js/ui/keyboard.js:741 ../js/ui/status/keyboard.js:713 msgid "Keyboard" msgstr "鍵盤" #. translators: 'Hide' is a verb #: ../js/ui/legacyTray.js:66 #, fuzzy #| msgid "Hide Text" msgid "Hide tray" msgstr "隱藏文字" #: ../js/ui/legacyTray.js:107 msgid "Status Icons" msgstr "" #: ../js/ui/lookingGlass.js:643 msgid "No extensions installed" msgstr "沒有安裝擴充功能" #. Translators: argument is an extension UUID. #: ../js/ui/lookingGlass.js:697 #, javascript-format msgid "%s has not emitted any errors." msgstr "%s 沒有發出任何錯誤。" #: ../js/ui/lookingGlass.js:703 msgid "Hide Errors" msgstr "隱藏錯誤" #: ../js/ui/lookingGlass.js:707 ../js/ui/lookingGlass.js:767 msgid "Show Errors" msgstr "顯示錯誤" #: ../js/ui/lookingGlass.js:716 msgid "Enabled" msgstr "已啟用" #. translators: #. * The device has been disabled #: ../js/ui/lookingGlass.js:719 ../src/gvc/gvc-mixer-control.c:1828 msgid "Disabled" msgstr "已停用" #: ../js/ui/lookingGlass.js:721 msgid "Error" msgstr "錯誤" #: ../js/ui/lookingGlass.js:723 msgid "Out of date" msgstr "過期" #: ../js/ui/lookingGlass.js:725 msgid "Downloading" msgstr "下載中" #: ../js/ui/lookingGlass.js:749 msgid "View Source" msgstr "檢示來源" #: ../js/ui/lookingGlass.js:758 msgid "Web Page" msgstr "網頁" #: ../js/ui/messageTray.js:1486 msgid "System Information" msgstr "系統資訊" #: ../js/ui/overview.js:84 msgid "Undo" msgstr "復原" #: ../js/ui/overview.js:117 msgid "Overview" msgstr "概覽" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: ../js/ui/overview.js:244 msgid "Type to search…" msgstr "輸入以搜尋…" #: ../js/ui/panel.js:358 msgid "Quit" msgstr "結束" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: ../js/ui/panel.js:414 msgid "Activities" msgstr "概覽 " #: ../js/ui/panel.js:695 #, fuzzy #| msgid "System" msgctxt "System menu in the top bar" msgid "System" msgstr "系統" #: ../js/ui/panel.js:807 msgid "Top Bar" msgstr "頂端列" #. Translators: this MUST be either "toggle-switch-us" #. (for toggle switches containing the English words #. "ON" and "OFF") or "toggle-switch-intl" (for toggle #. switches containing "◯" and "|"). Other values will #. simply result in invisible toggle switches. #: ../js/ui/popupMenu.js:289 msgid "toggle-switch-us" msgstr "toggle-switch-us" #: ../js/ui/runDialog.js:71 msgid "Enter a Command" msgstr "請輸入指令" #: ../js/ui/runDialog.js:111 ../js/ui/windowMenu.js:162 msgid "Close" msgstr "關閉" #: ../js/ui/runDialog.js:282 msgid "Restarting…" msgstr "重新啟動…" #. Translators: This is a time format for a date in #. long format #: ../js/ui/screenShield.js:85 msgid "%A, %B %d" msgstr "%m月%d日%A" #: ../js/ui/screenShield.js:144 #, javascript-format msgid "%d new message" msgid_plural "%d new messages" msgstr[0] "%d 個新訊息" #: ../js/ui/screenShield.js:146 #, javascript-format msgid "%d new notification" msgid_plural "%d new notifications" msgstr[0] "%d 個新通知" #: ../js/ui/screenShield.js:432 ../js/ui/status/system.js:374 msgid "Lock" msgstr "鎖定" #: ../js/ui/screenShield.js:684 msgid "GNOME needs to lock the screen" msgstr "GNOME 需要鎖定螢幕" #. We could not become modal, so we can't activate the #. screenshield. The user is probably very upset at this #. point, but any application using global grabs is broken #. Just tell him to stop using this app #. #. XXX: another option is to kick the user into the gdm login #. screen, where we're not affected by grabs #: ../js/ui/screenShield.js:805 ../js/ui/screenShield.js:1271 msgid "Unable to lock" msgstr "無法鎖定" #: ../js/ui/screenShield.js:806 ../js/ui/screenShield.js:1272 msgid "Lock was blocked by an application" msgstr "鎖定被應用程式阻擋" #: ../js/ui/search.js:617 msgid "Searching…" msgstr "搜尋…" #: ../js/ui/search.js:619 msgid "No results." msgstr "沒有結果。" #: ../js/ui/shellEntry.js:25 msgid "Copy" msgstr "複製" #: ../js/ui/shellEntry.js:30 msgid "Paste" msgstr "貼上" #: ../js/ui/shellEntry.js:97 msgid "Show Text" msgstr "顯示文字" #: ../js/ui/shellEntry.js:99 msgid "Hide Text" msgstr "隱藏文字" #: ../js/ui/shellMountOperation.js:370 msgid "Password" msgstr "密碼" #: ../js/ui/shellMountOperation.js:391 msgid "Remember Password" msgstr "記住密碼" #: ../js/ui/status/accessibility.js:42 msgid "Accessibility" msgstr "無障礙功能" #: ../js/ui/status/accessibility.js:57 msgid "Zoom" msgstr "縮放" #: ../js/ui/status/accessibility.js:64 msgid "Screen Reader" msgstr "螢幕閱讀器" #: ../js/ui/status/accessibility.js:68 msgid "Screen Keyboard" msgstr "螢幕鍵盤" #: ../js/ui/status/accessibility.js:72 msgid "Visual Alerts" msgstr "視覺警示" #: ../js/ui/status/accessibility.js:75 msgid "Sticky Keys" msgstr "黏性特殊鍵" #: ../js/ui/status/accessibility.js:78 msgid "Slow Keys" msgstr "遲緩按鍵" #: ../js/ui/status/accessibility.js:81 msgid "Bounce Keys" msgstr "反彈鍵" #: ../js/ui/status/accessibility.js:84 msgid "Mouse Keys" msgstr "滑鼠按鍵" #: ../js/ui/status/accessibility.js:167 msgid "High Contrast" msgstr "高反差" #: ../js/ui/status/accessibility.js:202 msgid "Large Text" msgstr "大型文字" #: ../js/ui/status/bluetooth.js:50 msgid "Bluetooth" msgstr "藍牙" #: ../js/ui/status/bluetooth.js:59 msgid "Bluetooth Settings" msgstr "藍牙設定值" #. Translators: this is the number of connected bluetooth devices #: ../js/ui/status/bluetooth.js:139 #, fuzzy, javascript-format #| msgid "Connected" msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "已連線" #: ../js/ui/status/bluetooth.js:141 msgid "Off" msgstr "關閉" #: ../js/ui/status/bluetooth.js:143 #, fuzzy #| msgid "In Use" msgid "Not In Use" msgstr "使用中" #: ../js/ui/status/bluetooth.js:145 ../js/ui/status/network.js:1279 msgid "Turn On" msgstr "開啟" #: ../js/ui/status/bluetooth.js:145 ../js/ui/status/network.js:178 #: ../js/ui/status/network.js:353 ../js/ui/status/network.js:1279 #: ../js/ui/status/network.js:1394 ../js/ui/status/rfkill.js:90 #: ../js/ui/status/rfkill.js:117 msgid "Turn Off" msgstr "關閉" #: ../js/ui/status/brightness.js:44 msgid "Brightness" msgstr "亮度" #: ../js/ui/status/keyboard.js:736 msgid "Show Keyboard Layout" msgstr "顯示鍵盤配置" #: ../js/ui/status/location.js:71 ../js/ui/status/location.js:177 #, fuzzy #| msgid "Location" msgid "Location Enabled" msgstr "位置" #: ../js/ui/status/location.js:72 ../js/ui/status/location.js:178 msgid "Disable" msgstr "停用" #: ../js/ui/status/location.js:73 #, fuzzy #| msgid "Power Settings" msgid "Privacy Settings" msgstr "電源設定值" #: ../js/ui/status/location.js:176 #, fuzzy #| msgid "Location" msgid "Location In Use" msgstr "位置" #: ../js/ui/status/location.js:180 #, fuzzy #| msgid "Connection failed" msgid "Location Disabled" msgstr "連線失敗" #: ../js/ui/status/location.js:181 msgid "Enable" msgstr "啟用" #: ../js/ui/status/network.js:101 msgid "" msgstr "<不明>" #. Translators: %s is a network identifier #: ../js/ui/status/network.js:451 ../js/ui/status/network.js:1308 #, javascript-format msgid "%s Off" msgstr "" #. Translators: %s is a network identifier #: ../js/ui/status/network.js:454 #, fuzzy, javascript-format #| msgid "Connected" msgid "%s Connected" msgstr "已連線" #. Translators: this is for network devices that are physically present but are not #. under NetworkManager's control (and thus cannot be used in the menu); #. %s is a network identifier #: ../js/ui/status/network.js:459 #, fuzzy, javascript-format #| msgid "Unmanaged" msgid "%s Unmanaged" msgstr "未管理" #. Translators: %s is a network identifier #: ../js/ui/status/network.js:462 #, fuzzy, javascript-format #| msgid "Disconnecting" msgid "%s Disconnecting" msgstr "斷線" #. Translators: %s is a network identifier #: ../js/ui/status/network.js:469 ../js/ui/status/network.js:1300 #, fuzzy, javascript-format #| msgid "Connecting" msgid "%s Connecting" msgstr "連線中" #. Translators: this is for network connections that require some kind of key or password; %s is a network identifier #: ../js/ui/status/network.js:472 #, fuzzy, javascript-format #| msgid "Wired 802.1X authentication" msgid "%s Requires Authentication" msgstr "有線網絡 802.1X 核對" #. Translators: this is for devices that require some kind of firmware or kernel #. module, which is missing; %s is a network identifier #: ../js/ui/status/network.js:480 #, fuzzy, javascript-format #| msgid "Firmware missing" msgid "Firmware Missing For %s" msgstr "缺少韌體" #. Translators: this is for a network device that cannot be activated (for example it #. is disabled by rfkill, or it has no coverage; %s is a network identifier #: ../js/ui/status/network.js:484 #, fuzzy, javascript-format #| msgid "Unavailable" msgid "%s Unavailable" msgstr "無法使用" #. Translators: %s is a network identifier #: ../js/ui/status/network.js:487 #, fuzzy, javascript-format #| msgid "Connection failed" msgid "%s Connection Failed" msgstr "連線失敗" #: ../js/ui/status/network.js:503 msgid "Wired Settings" msgstr "有線設定值" #: ../js/ui/status/network.js:545 ../js/ui/status/network.js:624 msgid "Mobile Broadband Settings" msgstr "流動寬頻設定值" #. Translators: %s is a network identifier #: ../js/ui/status/network.js:588 ../js/ui/status/network.js:1305 #, fuzzy, javascript-format #| msgid "Hardware Disabled" msgid "%s Hardware Disabled" msgstr "硬件已停用" #. Translators: this is for a network device that cannot be activated #. because it's disabled by rfkill (airplane mode); %s is a network identifier #: ../js/ui/status/network.js:592 #, fuzzy, javascript-format #| msgid "Disabled" msgid "%s Disabled" msgstr "已停用" #: ../js/ui/status/network.js:632 msgid "Use as Internet connection" msgstr "作為互聯網連線" #: ../js/ui/status/network.js:813 msgid "Airplane Mode is On" msgstr "飛安模式開啟" #: ../js/ui/status/network.js:814 msgid "Wi-Fi is disabled when airplane mode is on." msgstr "開啟飛安模式時會停用 Wi-Fi 。" #: ../js/ui/status/network.js:815 msgid "Turn Off Airplane Mode" msgstr "關閉飛安模式" #: ../js/ui/status/network.js:824 msgid "Wi-Fi is Off" msgstr "Wi-Fi 關閉" #: ../js/ui/status/network.js:825 msgid "Wi-Fi needs to be turned on in order to connect to a network." msgstr "需要開啟 Wi-Fi 才能連接網絡。" #: ../js/ui/status/network.js:826 msgid "Turn On Wi-Fi" msgstr "開啟 Wi-Fi" #: ../js/ui/status/network.js:851 msgid "Wi-Fi Networks" msgstr "Wi-Fi 網絡" #: ../js/ui/status/network.js:853 msgid "Select a network" msgstr "選擇一個網絡" #: ../js/ui/status/network.js:883 msgid "No Networks" msgstr "沒有網絡" #: ../js/ui/status/network.js:904 ../js/ui/status/rfkill.js:115 msgid "Use hardware switch to turn off" msgstr "使用硬件開關來關閉" #: ../js/ui/status/network.js:1171 msgid "Select Network" msgstr "選擇網絡" #: ../js/ui/status/network.js:1177 msgid "Wi-Fi Settings" msgstr "Wi-Fi 設定值" #. Translators: %s is a network identifier #: ../js/ui/status/network.js:1296 #, fuzzy, javascript-format #| msgid "Hotspot Active" msgid "%s Hotspot Active" msgstr "熱點活動中" #. Translators: %s is a network identifier #: ../js/ui/status/network.js:1311 #, fuzzy, javascript-format #| msgid "Not Connected" msgid "%s Not Connected" msgstr "未連線" #: ../js/ui/status/network.js:1411 msgid "connecting..." msgstr "連線中…" #. Translators: this is for network connections that require some kind of key or password #: ../js/ui/status/network.js:1414 msgid "authentication required" msgstr "要求核對" #: ../js/ui/status/network.js:1416 msgid "connection failed" msgstr "連線失敗" #: ../js/ui/status/network.js:1482 ../js/ui/status/rfkill.js:93 msgid "Network Settings" msgstr "網絡設定值" #: ../js/ui/status/network.js:1484 msgid "VPN Settings" msgstr "VPN 設定值" #: ../js/ui/status/network.js:1503 msgid "VPN" msgstr "VPN" #: ../js/ui/status/network.js:1513 #, fuzzy #| msgid "Power Off" msgid "VPN Off" msgstr "關閉電源" #: ../js/ui/status/network.js:1697 msgid "Connection failed" msgstr "連線失敗" #: ../js/ui/status/network.js:1698 msgid "Activation of network connection failed" msgstr "啟動網絡連線失敗" #: ../js/ui/status/power.js:49 msgid "Power Settings" msgstr "電源設定值" #: ../js/ui/status/power.js:65 msgid "Fully Charged" msgstr "已完全充飽" #. 0 is reported when UPower does not have enough data #. to estimate battery life #: ../js/ui/status/power.js:72 ../js/ui/status/power.js:78 msgid "Estimating…" msgstr "評估中…" #. Translators: this is : Remaining () #: ../js/ui/status/power.js:86 #, javascript-format msgid "%d∶%02d Remaining (%d%%)" msgstr "剩餘時間 %d∶%02d (%d%%)" #. Translators: this is : Until Full () #: ../js/ui/status/power.js:91 #, javascript-format msgid "%d∶%02d Until Full (%d%%)" msgstr "直到充滿還需 %d∶%02d (%d%%)" #. The menu only appears when airplane mode is on, so just #. statically build it as if it was on, rather than dynamically #. changing the menu contents. #: ../js/ui/status/rfkill.js:88 #, fuzzy #| msgid "Airplane Mode is On" msgid "Airplane Mode On" msgstr "飛安模式開啟" #: ../js/ui/status/system.js:343 msgid "Switch User" msgstr "切換使用者" #: ../js/ui/status/system.js:348 msgid "Log Out" msgstr "登出" #: ../js/ui/status/system.js:353 #, fuzzy #| msgid "Power Settings" msgid "Account Settings" msgstr "電源設定值" #: ../js/ui/status/system.js:370 msgid "Orientation Lock" msgstr "方向鎖" #: ../js/ui/status/system.js:378 msgid "Suspend" msgstr "暫停" #: ../js/ui/status/system.js:381 msgid "Power Off" msgstr "關閉電源" #: ../js/ui/status/volume.js:127 msgid "Volume changed" msgstr "音量已更改" #: ../js/ui/status/volume.js:162 msgid "Volume" msgstr "音量" #: ../js/ui/status/volume.js:213 msgid "Microphone" msgstr "麥克風" #: ../js/ui/unlockDialog.js:67 msgid "Log in as another user" msgstr "以另一個使用者身分登入" #: ../js/ui/unlockDialog.js:84 msgid "Unlock Window" msgstr "解鎖視窗" #: ../js/ui/viewSelector.js:159 msgid "Applications" msgstr "應用程式" #: ../js/ui/viewSelector.js:163 msgid "Search" msgstr "搜尋" #: ../js/ui/windowAttentionHandler.js:20 #, javascript-format msgid "“%s” is ready" msgstr "「%s」已就緒" #: ../js/ui/windowManager.js:63 msgid "Do you want to keep these display settings?" msgstr "你想要保留這些顯示器設定值嗎?" #. Translators: this and the following message should be limited in lenght, #. to avoid ellipsizing the labels. #. #: ../js/ui/windowManager.js:82 msgid "Revert Settings" msgstr "還原設定值" #: ../js/ui/windowManager.js:85 msgid "Keep Changes" msgstr "保留更改" #: ../js/ui/windowManager.js:103 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "設定值的更改會在 %d 秒內還原" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: ../js/ui/windowManager.js:658 #, javascript-format msgid "%d x %d" msgstr "" #: ../js/ui/windowMenu.js:34 msgid "Minimize" msgstr "最小化" #: ../js/ui/windowMenu.js:41 msgid "Unmaximize" msgstr "取消最大化" #: ../js/ui/windowMenu.js:45 msgid "Maximize" msgstr "最大化" #: ../js/ui/windowMenu.js:52 msgid "Move" msgstr "移動" #: ../js/ui/windowMenu.js:58 msgid "Resize" msgstr "重設大小" #: ../js/ui/windowMenu.js:65 msgid "Move Titlebar Onscreen" msgstr "移動螢幕標題列" #: ../js/ui/windowMenu.js:70 msgid "Always on Top" msgstr "永遠在最上層" #: ../js/ui/windowMenu.js:89 msgid "Always on Visible Workspace" msgstr "永遠在顯示的工作區" #: ../js/ui/windowMenu.js:105 #, fuzzy #| msgid "Move to Workspace Up" msgid "Move to Workspace Left" msgstr "將工作區上移" #: ../js/ui/windowMenu.js:110 #, fuzzy #| msgid "Move to Workspace Up" msgid "Move to Workspace Right" msgstr "將工作區上移" #: ../js/ui/windowMenu.js:115 msgid "Move to Workspace Up" msgstr "將工作區上移" #: ../js/ui/windowMenu.js:120 msgid "Move to Workspace Down" msgstr "將工作區下移" #: ../js/ui/windowMenu.js:136 #, fuzzy #| msgid "Move to Workspace Up" msgid "Move to Monitor Up" msgstr "將工作區上移" #: ../js/ui/windowMenu.js:142 #, fuzzy #| msgid "Move to Workspace Down" msgid "Move to Monitor Down" msgstr "將工作區下移" #: ../js/ui/windowMenu.js:148 msgid "Move to Monitor Left" msgstr "" #: ../js/ui/windowMenu.js:154 msgid "Move to Monitor Right" msgstr "" #: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1 msgid "Evolution Calendar" msgstr "Evolution 行事曆" #. translators: #. * The number of sound outputs on a particular device #: ../src/gvc/gvc-mixer-control.c:1835 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u 輸出" #. translators: #. * The number of sound inputs on a particular device #: ../src/gvc/gvc-mixer-control.c:1845 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u 輸入" #: ../src/gvc/gvc-mixer-control.c:2371 msgid "System Sounds" msgstr "系統音效" #: ../src/main.c:381 msgid "Print version" msgstr "顯示版本" #: ../src/main.c:387 msgid "Mode used by GDM for login screen" msgstr "GDM 在登入畫面使用的模式" #: ../src/main.c:393 msgid "Use a specific mode, e.g. \"gdm\" for login screen" msgstr "使用指定的模式,例如「gdm」為登入畫面" #: ../src/main.c:399 msgid "List possible modes" msgstr "列出可能的模式" #: ../src/shell-app.c:246 msgctxt "program" msgid "Unknown" msgstr "不明" #: ../src/shell-app.c:487 #, c-format msgid "Failed to launch “%s”" msgstr "無法啟動「%s」" #: ../src/shell-keyring-prompt.c:730 msgid "Passwords do not match." msgstr "密碼不相符。" #: ../src/shell-keyring-prompt.c:738 msgid "Password cannot be blank" msgstr "密碼不能為空白" #: ../src/shell-polkit-authentication-agent.c:353 msgid "Authentication dialog was dismissed by the user" msgstr "核對對話盒被使用者取消了" #~ msgid "Show the message tray" #~ msgstr "顯示資訊匣" #~ msgid "Captive Portal" #~ msgstr "網頁入口管制" #~ msgctxt "event list time" #~ msgid "%H∶%M" #~ msgstr "%H∶%M" #~ msgctxt "event list time" #~ msgid "%l∶%M %p" #~ msgstr "%p %l∶%M" #~ msgctxt "list sunday" #~ msgid "Su" #~ msgstr "日" #~ msgctxt "list monday" #~ msgid "M" #~ msgstr "一" #~ msgctxt "list tuesday" #~ msgid "T" #~ msgstr "二" #~ msgctxt "list wednesday" #~ msgid "W" #~ msgstr "三" #~ msgctxt "list thursday" #~ msgid "Th" #~ msgstr "四" #~ msgctxt "list friday" #~ msgid "F" #~ msgstr "五" #~ msgctxt "list saturday" #~ msgid "S" #~ msgstr "六" #~ msgid "Nothing Scheduled" #~ msgstr "沒有預訂行程" #~ msgid "Today" #~ msgstr "今天" #~ msgid "Tomorrow" #~ msgstr "明天" #~ msgid "This week" #~ msgstr "本週" #~ msgid "Next week" #~ msgstr "下週" #~ msgid "Removable Devices" #~ msgstr "可移除式裝置" #~ msgid "Eject" #~ msgstr "退出" #~ msgid "Invitation" #~ msgstr "邀請" #~ msgid "Call" #~ msgstr "通話" #~ msgid "File Transfer" #~ msgstr "檔案傳輸程式" #~ msgid "Chat" #~ msgstr "聊天" #~ msgid "Unmute" #~ msgstr "取消靜音" #~ msgid "Mute" #~ msgstr "靜音" #~ msgid "Invitation to %s" #~ msgstr "邀請加入 %s" #~ msgid "%s is inviting you to join %s" #~ msgstr "%s 正在邀請你加入 %s" #~ msgid "Decline" #~ msgstr "拒絕" #~ msgid "Accept" #~ msgstr "接受" #~ msgid "Video call from %s" #~ msgstr "來自 %s 的視像電話" #~ msgid "Call from %s" #~ msgstr "%s 來電" #~ msgid "Answer" #~ msgstr "接聽" #~ msgid "%s is sending you %s" #~ msgstr "%s 正傳送給你 %s" #~ msgid "%s would like permission to see when you are online" #~ msgstr "%s 想要得到查看你上線狀態的許可" #~ msgid "Authentication failed" #~ msgstr "核對失敗" #~ msgid "Encryption error" #~ msgstr "加密發生錯誤" #~ msgid "Certificate not provided" #~ msgstr "沒有提供證書" #~ msgid "Certificate untrusted" #~ msgstr "證書不被信任" #~ msgid "Certificate expired" #~ msgstr "證書已逾期" #~ msgid "Certificate not activated" #~ msgstr "證書尚未使用" #~ msgid "Certificate hostname mismatch" #~ msgstr "證書主機名稱不符" #~ msgid "Certificate fingerprint mismatch" #~ msgstr "證書數碼指紋不符" #~ msgid "Certificate self-signed" #~ msgstr "證書為自我簽署" #~ msgid "Status is set to offline" #~ msgstr "狀態設為離線" #~ msgid "Encryption is not available" #~ msgstr "加密無法使用" #~ msgid "Certificate is invalid" #~ msgstr "證書無效" #~ msgid "Connection has been refused" #~ msgstr "連線遭到拒絕" #~ msgid "Connection can't be established" #~ msgstr "無法建立連線" #~ msgid "Connection has been lost" #~ msgstr "已失去連線" #~ msgid "This account is already connected to the server" #~ msgstr "這個帳號已連接至該伺服器" #~ msgid "" #~ "Connection has been replaced by a new connection using the same resource" #~ msgstr "連線已被使用相同資源的新連線取代" #~ msgid "The account already exists on the server" #~ msgstr "該帳號已經存在於伺服器上" #~ msgid "Server is currently too busy to handle the connection" #~ msgstr "伺服器目前過於忙碌以致於無法處理該連線" #~ msgid "Certificate has been revoked" #~ msgstr "證書已被撤銷" #~ msgid "" #~ "Certificate uses an insecure cipher algorithm or is cryptographically weak" #~ msgstr "證書使用不安全的密碼演算法,或是密碼處理上較弱" #~ msgid "" #~ "The length of the server certificate, or the depth of the server " #~ "certificate chain, exceed the limits imposed by the cryptography library" #~ msgstr "" #~ "伺服器證書的長度,或是伺服器證書鏈的深度超過密碼函式庫所能處理的範圍" #~ msgid "Internal error" #~ msgstr "內部的錯誤" #~ msgid "Unable to connect to %s" #~ msgstr "無法連線到 %s" #~ msgid "View account" #~ msgstr "檢視帳號" #~ msgid "Unknown reason" #~ msgstr "不明原因" #~ msgid "Open Calendar" #~ msgstr "開啟行事曆" #~ msgid "Date & Time Settings" #~ msgstr "日期與時刻設定值" #~ msgid "Open" #~ msgstr "開啟" #~ msgid "Remove" #~ msgstr "移除" #~ msgid "Clear Messages" #~ msgstr "清除訊息" #~ msgid "Notification Settings" #~ msgstr "通知設定值" #~ msgid "Tray Menu" #~ msgstr "系統匣選單" #~ msgid "No Messages" #~ msgstr "沒有訊息" #~ msgid "Message Tray" #~ msgstr "訊息匣" #~ msgid "%d Connected Device" #~ msgid_plural "%d Connected Devices" #~ msgstr[0] "%d 已連線的裝置" #~ msgid "Authentication required" #~ msgstr "要求核對" #~ msgid "UPS" #~ msgstr "UPS" #~ msgid "Battery" #~ msgstr "電池" #~ msgid "Airplane Mode" #~ msgstr "飛安模式" #~ msgid "On" #~ msgstr "開啟" #~ msgid "The maximum accuracy level of location." #~ msgstr "地理位置的最高精確等級。" #~ msgid "" #~ "Configures the maximum level of location accuracy applications are " #~ "allowed to see. Valid options are 'off' (disable location tracking), " #~ "'country', 'city', 'neighborhood', 'street', and 'exact' (typically " #~ "requires GPS receiver). Please keep in mind that this only controls what " #~ "GeoClue will allow applications to see and they can find user's location " #~ "on their own using network resources (albeit with street-level accuracy " #~ "at best)." #~ msgstr "" #~ "設定應用程式可查看的地理位置最高精確等級。有效的選項為「off」(停用地理位置" #~ "追蹤)、「country」(國家)、「city」(縣市)、「neiborhood」(鄰里)、「street」" #~ "(街路)、「exact」(一般需要 GPS 接收器)。請務必記住這只能控制 GeoClue 所允" #~ "許應用程式查看的等級,而程式可自行使用本身的網路資源尋找使用者的所在位置 " #~ "(雖然精確度最高只能到達街路等級)。" #~ msgid "Arrangement of buttons on the titlebar" #~ msgstr "標題列上的按鈕排列" #~ msgid "" #~ "This key overrides the key in org.gnome.desktop.wm.preferences when " #~ "running GNOME Shell." #~ msgstr "" #~ "這個設定鍵會在執行 GNOME Shell 時覆蓋 org.gnome.desktop.wm.preferences 中" #~ "的設定鍵。" #~ msgid "Extension" #~ msgstr "擴充功能" #~ msgid "Select an extension to configure using the combobox above." #~ msgstr "使用上面的組合方塊選擇要設定的擴充功能。" #~ msgid "calendar:MY" #~ msgstr "calendar:MY" #~ msgid "%A, %H:%M" #~ msgstr "%A%H:%M" #~ msgid "%B %d, %H:%M" #~ msgstr "%m月%d日%H:%M" #~ msgid "%B %d %Y, %H:%M " #~ msgstr "%Y年%m月%d日%H:%M " #~ msgid "List of categories that should be displayed as folders" #~ msgstr "要顯示為資料夾的分類清單" #~ msgid "" #~ "Each category name in this list will be represented as folder in the " #~ "application view, rather than being displayed inline in the main view." #~ msgstr "" #~ "這個清單中的每個分類名稱都會在應用程式檢視中以資料夾表示,而不是在主要檢視" #~ "中直接顯示。" #~ msgid "Authorization request from %s" #~ msgstr "來自「%s」的核對要求" #~ msgid "Device %s wants to pair with this computer" #~ msgstr "裝置 %s 想要和這個電腦配對" #~ msgid "Allow" #~ msgstr "允許" #~ msgid "Deny" #~ msgstr "禁止" #~ msgid "Device %s wants access to the service '%s'" #~ msgstr "裝置 %s 想要存取服務「%s」" #~ msgid "Always grant access" #~ msgstr "永遠准許存取" #~ msgid "Grant this time only" #~ msgstr "只有這次准許" #~ msgid "Reject" #~ msgstr "拒絕" #~ msgid "Pairing confirmation for %s" #~ msgstr "%s 的配對確認" #~ msgid "" #~ "Please confirm whether the Passkey '%06d' matches the one on the device." #~ msgstr "請確認通行碼「%06d」是否和裝置上的相符。" #~ msgid "Matches" #~ msgstr "相符" #~ msgid "Does not match" #~ msgstr "不相符" #~ msgid "Pairing request for %s" #~ msgstr "%s 的配對請求" #~ msgid "Please enter the PIN mentioned on the device." #~ msgstr "請輸入裝置所提及的 PIN。" #~ msgid "OK" #~ msgstr "確定" #~ msgid "" #~ "Sorry, no wisdom for you today:\n" #~ "%s" #~ msgstr "" #~ "抱歉,今天可能有些問題:\n" #~ "%s" #~ msgid "%s the Oracle says" #~ msgstr "%s Oracle 說:" #~ msgctxt "event list time" #~ msgid "%H\\u2236%M" #~ msgstr "%H\\u2236%M" #~ msgctxt "event list time" #~ msgid "%l\\u2236%M\\u2009%p" #~ msgstr "%l\\u2236%M\\u2009%p" 0707010000026F000081A40000000000000000000000016712993F0001C01F000000000000000000000000000000000000001D00000000gnome-shell-47.1/po/zh_TW.po# Chinese (Taiwan) translation for gnome-shell. # Copyright (C) 2010 gnome-shell's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-shell package. # Chao-Hsiung Liao , 2010. # Wei-Lun Chao , 2010. # Freddy Cheng , 2022. # msgid "" msgstr "" "Project-Id-Version: gnome-shell 3.3.90\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues/\n" "POT-Creation-Date: 2024-07-05 17:13+0000\n" "PO-Revision-Date: 2024-07-24 10:11+0000\n" "Last-Translator: Chao-Hsiung Liao \n" "Language-Team: Chinese (Traditional) \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: Weblate 5.6.2\n" #: data/50-gnome-shell-launchers.xml:6 msgid "Launchers" msgstr "啟動應用程式" #: data/50-gnome-shell-launchers.xml:10 msgid "Activate pinned app 1" msgstr "啟動自選程式 1" #: data/50-gnome-shell-launchers.xml:14 msgid "Activate pinned app 2" msgstr "啟動自選程式 2" #: data/50-gnome-shell-launchers.xml:18 msgid "Activate pinned app 3" msgstr "啟動自選程式 3" #: data/50-gnome-shell-launchers.xml:22 msgid "Activate pinned app 4" msgstr "啟動自選程式 4" #: data/50-gnome-shell-launchers.xml:26 msgid "Activate pinned app 5" msgstr "啟動自選程式 5" #: data/50-gnome-shell-launchers.xml:30 msgid "Activate pinned app 6" msgstr "啟動自選程式 6" #: data/50-gnome-shell-launchers.xml:34 msgid "Activate pinned app 7" msgstr "啟動自選程式 7" #: data/50-gnome-shell-launchers.xml:38 msgid "Activate pinned app 8" msgstr "啟動自選程式 8" #: data/50-gnome-shell-launchers.xml:42 msgid "Activate pinned app 9" msgstr "啟動自選程式 9" #: data/50-gnome-shell-launchers.xml:46 msgid "Open new window of pinned app 1" msgstr "開啟自選程式 1 的新視窗" #: data/50-gnome-shell-launchers.xml:50 msgid "Open new window of pinned app 2" msgstr "開啟自選程式 2 的新視窗" #: data/50-gnome-shell-launchers.xml:54 msgid "Open new window of pinned app 3" msgstr "開啟自選程式 3 的新視窗" #: data/50-gnome-shell-launchers.xml:58 msgid "Open new window of pinned app 4" msgstr "開啟自選程式 4 的新視窗" #: data/50-gnome-shell-launchers.xml:62 msgid "Open new window of pinned app 5" msgstr "開啟自選程式 5 的新視窗" #: data/50-gnome-shell-launchers.xml:66 msgid "Open new window of pinned app 6" msgstr "開啟自選程式 6 的新視窗" #: data/50-gnome-shell-launchers.xml:70 msgid "Open new window of pinned app 7" msgstr "開啟自選程式 7 的新視窗" #: data/50-gnome-shell-launchers.xml:74 msgid "Open new window of pinned app 8" msgstr "開啟自選程式 8 的新視窗" #: data/50-gnome-shell-launchers.xml:78 msgid "Open new window of pinned app 9" msgstr "開啟自選程式 9 的新視窗" #. Translators: name of the folder under ~/Pictures for screenshots. #: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2276 msgid "Screenshots" msgstr "螢幕快照" #: data/50-gnome-shell-screenshots.xml:9 #: data/org.gnome.shell.gschema.xml.in:287 msgid "Take a screenshot interactively" msgstr "啟動螢幕快照工具" #: data/50-gnome-shell-screenshots.xml:12 #: data/org.gnome.shell.gschema.xml.in:299 msgid "Take a screenshot" msgstr "擷取螢幕快照" #: data/50-gnome-shell-screenshots.xml:15 #: data/org.gnome.shell.gschema.xml.in:295 msgid "Take a screenshot of a window" msgstr "擷取視窗快照" #: data/50-gnome-shell-screenshots.xml:18 #: data/org.gnome.shell.gschema.xml.in:291 msgid "Record a screencast interactively" msgstr "啟動螢幕錄影工具" #: data/50-gnome-shell-system.xml:6 js/ui/messageTray.js:1300 msgid "System" msgstr "系統" #: data/50-gnome-shell-system.xml:9 msgid "Show the notification list" msgstr "顯示通知列表" #: data/50-gnome-shell-system.xml:12 msgid "Open the quick settings menu" msgstr "開啟快速設定選單" #: data/50-gnome-shell-system.xml:15 msgid "Focus the active notification" msgstr "聚焦彈出的通知" #: data/50-gnome-shell-system.xml:18 msgid "Show the overview" msgstr "顯示概覽畫面" #: data/50-gnome-shell-system.xml:21 msgid "Show all apps" msgstr "顯示所有程式" #: data/org.gnome.Shell.desktop.in.in:4 msgid "GNOME Shell" msgstr "GNOME Shell" #: data/org.gnome.Shell.desktop.in.in:5 msgid "Window management and application launching" msgstr "兼具視窗管理器與應用程式啟動器的使用者介面" #: data/org.gnome.shell.gschema.xml.in:6 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "啟用後便能透過 Alt-F2 來開啟專為「開發者」與「測試者」所打造的內部工具" #: data/org.gnome.shell.gschema.xml.in:9 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "允許透過 Alt-F2 來存取內部除錯工具與監控工具。" #: data/org.gnome.shell.gschema.xml.in:16 msgid "UUIDs of extensions to enable" msgstr "要啟用之擴充套件的 UUID" #: data/org.gnome.shell.gschema.xml.in:17 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be loaded. Any extension that wants to be loaded needs to be in this " "list. You can also manipulate this list with the EnableExtension and " "DisableExtension D-Bus methods on org.gnome.Shell." msgstr "" "《GNOME Shell》擴充套件均擁有 UUID 屬性;該設定鍵會將所有應載入的擴充套件列出" "來。您也可以透過 org.gnome.Shell 中的 EnableExtension 和 DisableExtension 的 " "D-Bus 方法來控制該列表。" #: data/org.gnome.shell.gschema.xml.in:26 msgid "UUIDs of extensions to force disabling" msgstr "強制停用之擴充套件的 UUID" #: data/org.gnome.shell.gschema.xml.in:27 msgid "" "GNOME Shell extensions have a UUID property; this key lists extensions which " "should be disabled, even if loaded as part of the current mode. You can also " "manipulate this list with the EnableExtension and DisableExtension D-Bus " "methods on org.gnome.Shell. This key takes precedence over the “enabled-" "extensions” setting." msgstr "" "《GNOME Shell》擴充套件均擁有 UUID 屬性;該設定鍵會將所有應停用的擴充套件列出" "來,即使它是做為目前模式的一部分載入的。您也可以透過 org.gnome.Shell 中的 " "EnableExtension 和 DisableExtension 的 D-Bus 方法來控制該列表。該設定鍵較" "「enabled-extensions」更為優先。" #: data/org.gnome.shell.gschema.xml.in:37 msgid "Disable user extensions" msgstr "停用所有的使用者擴充套件" #: data/org.gnome.shell.gschema.xml.in:38 msgid "" "Disable all extensions the user has enabled without affecting the “enabled-" "extension” setting." msgstr "" "停用所有由使用者所啟用之擴充套件,但不會影響「enabled-extension」的值。" #: data/org.gnome.shell.gschema.xml.in:45 msgid "Allow extension installation" msgstr "允許安裝擴充套件" #: data/org.gnome.shell.gschema.xml.in:46 msgid "" "Allow users to install extensions in their home folder. If disabled, the " "InstallRemoteExtension D-Bus method will fail, and extensions are only " "loaded from system directories on startup. It does not affect extensions " "that are already loaded, so a change only takes full effect on the next " "login." msgstr "" "允許使用者在其家目錄中安裝擴充套件。如果停用,則 InstallRemoteExtension D-" "Bus 方法將失敗,並且僅能在啟動時從系統目錄載入擴充套件。它不會影響已載入的擴" "充套件,因此更改僅在下次登入時完全生效。" #: data/org.gnome.shell.gschema.xml.in:56 msgid "Disables the validation of extension version compatibility" msgstr "停用擴充套件的版本相容性驗證" #: data/org.gnome.shell.gschema.xml.in:57 msgid "" "GNOME Shell will only load extensions that claim to support the current " "running version. Enabling this option will disable this check and try to " "load all extensions regardless of the versions they claim to support." msgstr "" "《GNOME Shell》僅會載入宣稱支援目前運作版本的擴充套件。啟用該設定鍵後會停用這" "項檢查,並嘗試載入所有擴充套件而不去管它們所宣稱支援的版本為何。" #: data/org.gnome.shell.gschema.xml.in:65 msgid "List of desktop file IDs for favorite applications" msgstr "喜好應用程式之 Desktop 檔的 ID 列表" #: data/org.gnome.shell.gschema.xml.in:66 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "辨識碼所對應的應用程式會顯示於「喜好」中。" #: data/org.gnome.shell.gschema.xml.in:73 msgid "History for command (Alt-F2) dialog" msgstr "命令 (Alt-F2) 的歷史紀錄" #. Translators: looking glass is a debugger and inspector tool, see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/docs/looking-glass.md #: data/org.gnome.shell.gschema.xml.in:78 msgid "History for the looking glass dialog" msgstr "Looking glass 對話框的歷史紀錄" #: data/org.gnome.shell.gschema.xml.in:82 msgid "Always show the “Log Out” action in the system menu" msgstr "永遠在系統選單顯示「登出」操作" #: data/org.gnome.shell.gschema.xml.in:83 msgid "" "This key overrides the automatic hiding of the “Log out” action in the " "system menu for logged-in situations where there is a single, local, non-" "system user and only a single available session type (e.g. GNOME on Wayland)." msgstr "" "該設定鍵會覆寫系統選單對「登出」項目的自動隱藏,主要是在登入情況下, 且使用者" "為單一、本機、非系統層級,又只有單一作業階段類型(如 GNOME 使用 Wayland)。" #: data/org.gnome.shell.gschema.xml.in:92 msgid "" "Whether to remember password for mounting encrypted or remote filesystems" msgstr "是否要記住已掛載之加密或遠端檔案系統的密碼" #: data/org.gnome.shell.gschema.xml.in:93 msgid "" "The shell will request a password when an encrypted device or a remote " "filesystem is mounted. If the password can be saved for future use a " "“Remember Password” checkbox will be present. This key sets the default " "state of the checkbox." msgstr "" "當掛載加密裝置或遠端檔案系統時會要求密碼。若密碼可儲存供未來使用時,會顯示" "「記住密碼」勾選框;這個設定鍵用來設定勾選框的預設狀態。" #: data/org.gnome.shell.gschema.xml.in:102 msgid "The last selected non-default power profile" msgstr "此前所使用的非預設電源設定檔" #: data/org.gnome.shell.gschema.xml.in:103 msgid "" "Some systems support more than two power profiles. In order to still support " "toggling between two profiles, this key records the last selected non-" "default profile." msgstr "" "某些系統支援兩種以上的電源設定檔(省電與平衡之外的模式)。為了做到在兩種電源" "模式間切換,本設定鍵會紀錄此前所使用之非預設的電源設定檔為何。" #: data/org.gnome.shell.gschema.xml.in:111 msgid "The last version the “Welcome to GNOME” dialog was shown for" msgstr "「歡迎使用 GNOME」對話框顯示的最新版本" #: data/org.gnome.shell.gschema.xml.in:112 msgid "" "This key determines for which version the “Welcome to GNOME” dialog was last " "shown. An empty string represents the oldest possible version, and a huge " "number will represent versions that do not exist yet. This huge number can " "be used to effectively disable the dialog." msgstr "" "此設定鍵為「歡迎使用 GNOME」所顯示的最新版本。空白字串代表可能為舊版本,或是" "由過大的數字代表尚未存在的版本。過大的數字可用於停用對話框。" #: data/org.gnome.shell.gschema.xml.in:145 msgid "Layout of the app picker" msgstr "應用程式列表的排列順序" #: data/org.gnome.shell.gschema.xml.in:146 msgid "" "Layout of the app picker. Each entry in the array is a page. Pages are " "stored in the order they appear in GNOME Shell. Each page contains an " "“application id” → 'data' pair. Currently, the following values are stored " "as 'data': • “position”: the position of the application icon in the page" msgstr "" "應用程式列表的排列順序。陣列中的每個元素為一頁,並會以指定順序順序出現在" "《GNOME Shell》中。每一頁包含 'application id' → 'data' pair' 鍵值對。下列值" "以 'data': • “position” 方式儲存:應用程式圖示位於頁面上的位置。" #: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:172 msgid "Keybinding to shift between overview states" msgstr "在兩種概覽畫面之間切換的組合鍵" #: data/org.gnome.shell.gschema.xml.in:166 msgid "Keybinding to shift between session, window picker and app grid" msgstr "在作業階段、視窗概覽與應用程式列表之間切換的組合鍵" #: data/org.gnome.shell.gschema.xml.in:173 msgid "Keybinding to shift between app grid, window picker and session" msgstr "在應用程式列表、視窗概覽與作業階段之間切換的組合鍵" #: data/org.gnome.shell.gschema.xml.in:179 msgid "Keybinding to open the “Show Applications” view" msgstr "開啟「顯示應用程式」的組合鍵" #: data/org.gnome.shell.gschema.xml.in:180 msgid "" "Keybinding to open the “Show Applications” view of the Activities Overview." msgstr "開啟概覽中「顯示應用程式」的組合鍵。" #: data/org.gnome.shell.gschema.xml.in:187 msgid "Keybinding to open the overview" msgstr "開啟概覽畫面的組合鍵" #: data/org.gnome.shell.gschema.xml.in:188 msgid "Keybinding to open the Activities Overview." msgstr "用於開啟概覽畫面的組合鍵。" #: data/org.gnome.shell.gschema.xml.in:194 msgid "Keybinding to toggle the visibility of the notification list" msgstr "切換訊息列表顯示的組合鍵" #: data/org.gnome.shell.gschema.xml.in:195 msgid "Keybinding to toggle the visibility of the notification list." msgstr "用於切換訊息列表顯示的組合鍵。" #: data/org.gnome.shell.gschema.xml.in:201 msgid "Keybinding to toggle the quick settings menu" msgstr "切換快速設定選單的組合鍵" #: data/org.gnome.shell.gschema.xml.in:202 msgid "Keybinding to toggle the quick settings menu." msgstr "切換快速設定選單的組合鍵。" #: data/org.gnome.shell.gschema.xml.in:208 msgid "Keybinding to focus the active notification" msgstr "聚焦至彈出通知的組合鍵" #: data/org.gnome.shell.gschema.xml.in:209 msgid "Keybinding to focus the active notification." msgstr "用於聚焦至彈出通知的組合鍵。" #: data/org.gnome.shell.gschema.xml.in:215 msgid "Switch to application 1" msgstr "切換至應用程式 1" #: data/org.gnome.shell.gschema.xml.in:219 msgid "Switch to application 2" msgstr "切換至應用程式 2" #: data/org.gnome.shell.gschema.xml.in:223 msgid "Switch to application 3" msgstr "切換至應用程式 3" #: data/org.gnome.shell.gschema.xml.in:227 msgid "Switch to application 4" msgstr "切換至應用程式 4" #: data/org.gnome.shell.gschema.xml.in:231 msgid "Switch to application 5" msgstr "切換至應用程式 5" #: data/org.gnome.shell.gschema.xml.in:235 msgid "Switch to application 6" msgstr "切換至應用程式 6" #: data/org.gnome.shell.gschema.xml.in:239 msgid "Switch to application 7" msgstr "切換至應用程式 7" #: data/org.gnome.shell.gschema.xml.in:243 msgid "Switch to application 8" msgstr "切換至應用程式 8" #: data/org.gnome.shell.gschema.xml.in:247 msgid "Switch to application 9" msgstr "切換至應用程式 9" #: data/org.gnome.shell.gschema.xml.in:251 msgid "Open a new instance of application 1" msgstr "開啟應用程式 1 的實體" #: data/org.gnome.shell.gschema.xml.in:255 msgid "Open a new instance of application 2" msgstr "開啟應用程式 2 的實體" #: data/org.gnome.shell.gschema.xml.in:259 msgid "Open a new instance of application 3" msgstr "開啟應用程式 3 的實體" #: data/org.gnome.shell.gschema.xml.in:263 msgid "Open a new instance of application 4" msgstr "開啟應用程式 4 的實體" #: data/org.gnome.shell.gschema.xml.in:267 msgid "Open a new instance of application 5" msgstr "開啟應用程式 5 的實體" #: data/org.gnome.shell.gschema.xml.in:271 msgid "Open a new instance of application 6" msgstr "開啟應用程式 6 的實體" #: data/org.gnome.shell.gschema.xml.in:275 msgid "Open a new instance of application 7" msgstr "開啟應用程式 7 的實體" #: data/org.gnome.shell.gschema.xml.in:279 msgid "Open a new instance of application 8" msgstr "開啟應用程式 8 的實體" #: data/org.gnome.shell.gschema.xml.in:283 msgid "Open a new instance of application 9" msgstr "開啟應用程式 9 的實體" #: data/org.gnome.shell.gschema.xml.in:308 #: data/org.gnome.shell.gschema.xml.in:335 msgid "Limit switcher to current workspace." msgstr "限制視窗切換器使用目前的工作區" #: data/org.gnome.shell.gschema.xml.in:309 msgid "" "If true, only applications that have windows on the current workspace are " "shown in the switcher. Otherwise, all applications are included." msgstr "" "若設為「true」,切換器將僅顯示目前工作區中的應用程式視窗,否則所有的應用程式" "都會包含在內。" #: data/org.gnome.shell.gschema.xml.in:326 msgid "The application icon mode." msgstr "應用程式圖示模式" #: data/org.gnome.shell.gschema.xml.in:327 msgid "" "Configures how the windows are shown in the switcher. Valid possibilities " "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-only” " "(shows only the application icon) or “both”." msgstr "" "設定視窗在視窗切換器中如何顯示。有效的數值為「thumbnail-only」(顯示視窗縮" "圖)、「app-icon-only」(只顯示應用程式圖示)或「both」。" #: data/org.gnome.shell.gschema.xml.in:336 msgid "" "If true, only windows from the current workspace are shown in the switcher. " "Otherwise, all windows are included." msgstr "" "若設為「true」,切換器將僅顯示目前工作區中的視窗,否則所有的視窗都會包含在" "內。" #: data/org.gnome.shell.gschema.xml.in:346 msgid "Locations" msgstr "位置" #: data/org.gnome.shell.gschema.xml.in:347 msgid "The locations to show in world clocks" msgstr "在世界時鐘顯示的位置。" #: data/org.gnome.shell.gschema.xml.in:357 msgid "Automatic location" msgstr "自動位置" #: data/org.gnome.shell.gschema.xml.in:358 msgid "Whether to fetch the current location or not" msgstr "是否取得目前所在地。" #: data/org.gnome.shell.gschema.xml.in:365 msgid "Location" msgstr "位置" #: data/org.gnome.shell.gschema.xml.in:366 msgid "The location for which to show a forecast" msgstr "要顯示哪個區域的天氣預報。" #. Keep in sync with subprojects/extensions-app #: data/org.gnome.Shell.Extensions.desktop.in.in:5 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/data/ui/extensions-window.ui:57 msgid "Extensions" msgstr "擴充套件" #: data/org.gnome.Shell.PortalHelper.desktop.in.in:3 msgid "Network Login" msgstr "網路登入" #: js/dbusServices/extensions/ui/extension-error-page.ui:15 #: subprojects/extensions-app/data/ui/extensions-window.ui:275 msgid "Something’s gone wrong" msgstr "有些地方出錯了" #: js/dbusServices/extensions/ui/extension-error-page.ui:23 msgid "" "We’re very sorry, but there’s been a problem: the settings for this " "extension can’t be displayed. We recommend that you report the issue to the " "extension authors." msgstr "" "我們非常抱歉發生這個問題:無法顯示該擴充套件的設定畫面;建議將此問題回報給擴" "充套件的作者。" #: js/dbusServices/extensions/ui/extension-error-page.ui:48 msgid "Technical Details" msgstr "技術細節" #: js/dbusServices/extensions/ui/extension-error-page.ui:90 msgid "Homepage" msgstr "首頁" #: js/dbusServices/extensions/ui/extension-error-page.ui:91 msgid "Visit extension homepage" msgstr "造訪擴充套件首頁" #: js/gdm/authPrompt.js:153 js/gdm/loginDialog.js:466 #: js/ui/audioDeviceSelection.js:66 js/ui/components/networkAgent.js:115 #: js/ui/components/polkitAgent.js:146 js/ui/endSessionDialog.js:438 #: js/ui/extensionDownloader.js:278 js/ui/shellMountOperation.js:384 #: js/ui/shellMountOperation.js:394 msgid "Cancel" msgstr "取消" #: js/gdm/authPrompt.js:319 js/ui/components/networkAgent.js:215 #: js/ui/components/networkAgent.js:235 js/ui/components/networkAgent.js:267 #: js/ui/components/networkAgent.js:300 js/ui/components/networkAgent.js:339 #: js/ui/components/networkAgent.js:352 js/ui/components/polkitAgent.js:288 #: js/ui/shellMountOperation.js:334 msgid "Password" msgstr "密碼" #: js/gdm/loginDialog.js:327 msgid "Choose Session" msgstr "選擇作業階段" #. Translators: is running for #: js/gdm/loginDialog.js:424 #, javascript-format msgid "" "Remote login is not possible because a remote session is already running for " "%s. To login remotely, you must log out from the remote session or force " "stop it." msgstr "無法進行遠端登入,因為 %s 的遠端工作階段已在運行中。要遠端登入,您必須從遠端" "工作階段中登出或強制停止它。" #. Translators: is running for #: js/gdm/loginDialog.js:427 #, javascript-format msgid "" "Login is not possible because a remote session is already running for %s. To " "login, you must log out from the remote session or force stop it." msgstr "無法進行登入,因為 %s " "的遠端工作階段已在運行中。要登入,您必須從遠端工作階段中登出或強制停止它。" #. Translators: is running for #: js/gdm/loginDialog.js:430 #, javascript-format msgid "" "Remote login is not possible because a local session is already running for " "%s. To login remotely, you must log out from the local session or force stop " "it." msgstr "無法進行遠端登入,因為 %s " "的本地工作階段已在運行中。要遠端登入,您必須從本地工作階段登出或強制停止它。" #. Translators: is running for #: js/gdm/loginDialog.js:433 #, javascript-format msgid "" "Login is not possible because a session is already running for %s. To login, " "you must log out from the session or force stop it." msgstr "無法登入,因為 %s " "的工作階段已在運行。要登入,您必須從工作階段中登出或強制停止它。" #: js/gdm/loginDialog.js:442 msgid "Session Already Running" msgstr "工作階段已在執行中" #: js/gdm/loginDialog.js:454 msgid "" "Force stopping will quit any running apps and processes, and could result in " "data loss." msgstr "強制停止將退出任何正在運行的程式和程序,並可能導致資料遺失。" #: js/gdm/loginDialog.js:474 msgid "Force Stop" msgstr "強制停止" #: js/gdm/loginDialog.js:542 msgid "Not listed?" msgstr "沒有列出來?" #. Translators: this message is shown below the username entry field #. to clue the user in on how to login to the local network realm #: js/gdm/loginDialog.js:1010 #, javascript-format msgid "(e.g., user or %s)" msgstr "(例如: user 或 %s)" #: js/gdm/loginDialog.js:1015 js/ui/components/networkAgent.js:259 #: js/ui/components/networkAgent.js:294 js/ui/components/networkAgent.js:328 msgid "Username" msgstr "使用者名稱" #: js/gdm/loginDialog.js:1081 msgid "Login Attempt Timed Out" msgstr "登入嘗試逾時" #: js/gdm/loginDialog.js:1082 msgid "Login took too long, please try again" msgstr "登入時間過長,請再試一次" #: js/gdm/loginDialog.js:1427 msgid "Login Window" msgstr "登入視窗" #: js/gdm/util.js:498 msgid "Authentication error" msgstr "身分核對錯誤" #. Translators: this message is shown below the password entry field #. to indicate the user can swipe their finger on the fingerprint reader #: js/gdm/util.js:729 msgid "(or swipe finger across reader)" msgstr "(或是將手指掃過指紋辨識器)" #. Translators: this message is shown below the password entry field #. to indicate the user can place their finger on the fingerprint reader instead #: js/gdm/util.js:734 msgid "(or place finger on reader)" msgstr "(或是將手指置於指紋辨識器上)" #. Translators: The name of the power-off action in search #: js/misc/systemActions.js:91 msgctxt "search-result" msgid "Power Off" msgstr "關閉電源" #. Translators: A list of keywords that match the power-off action, separated by semicolons #: js/misc/systemActions.js:94 msgid "power off;poweroff;shutdown;halt;stop" msgstr "power off;poweroff;shutdown;halt;stop;關機;關閉電源;中斷;停止" #. Translators: The name of the restart action in search #: js/misc/systemActions.js:99 msgctxt "search-result" msgid "Restart" msgstr "重新啟動" #. Translators: A list of keywords that match the restart action, separated by semicolons #: js/misc/systemActions.js:102 msgid "reboot;restart;" msgstr "reboot;restart;重新開機;重新啟動;" #. Translators: The name of the lock screen action in search #: js/misc/systemActions.js:107 msgctxt "search-result" msgid "Lock Screen" msgstr "鎖定螢幕" #. Translators: A list of keywords that match the lock screen action, separated by semicolons #: js/misc/systemActions.js:110 msgid "lock screen" msgstr "lock screen;螢幕鎖定" #. Translators: The name of the logout action in search #: js/misc/systemActions.js:115 msgctxt "search-result" msgid "Log Out" msgstr "登出" #. Translators: A list of keywords that match the logout action, separated by semicolons #: js/misc/systemActions.js:118 msgid "logout;log out;sign off" msgstr "logout;log out;sign off;登出" #. Translators: The name of the suspend action in search #: js/misc/systemActions.js:123 msgctxt "search-result" msgid "Suspend" msgstr "暫停" #. Translators: A list of keywords that match the suspend action, separated by semicolons #: js/misc/systemActions.js:126 msgid "suspend;sleep" msgstr "suspend;sleep;暫停;睡眠" #. Translators: The name of the switch user action in search #: js/misc/systemActions.js:131 msgctxt "search-result" msgid "Switch User" msgstr "切換使用者" #. Translators: A list of keywords that match the switch user action, separated by semicolons #: js/misc/systemActions.js:134 msgid "switch user" msgstr "switch user;切換使用者" #. Translators: A list of keywords that match the lock orientation action, separated by semicolons #: js/misc/systemActions.js:141 msgid "lock orientation;unlock orientation;screen;rotation" msgstr "" "lock orientation;unlock orientation;screen;rotation;鎖定方向;解鎖方向;方向鎖;" "螢幕;旋轉" #. Translators: The name of the screenshot UI action in search #: js/misc/systemActions.js:146 msgctxt "search-result" msgid "Take a Screenshot" msgstr "擷取螢幕快照" #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons #: js/misc/systemActions.js:149 msgid "screenshot;screencast;snip;capture;record" msgstr "" "screenshot;screencast;snip;capture;record;螢幕快照;擷圖;截圖;螢幕錄影;抓圖" #: js/misc/systemActions.js:249 msgctxt "search-result" msgid "Unlock Screen Rotation" msgstr "解鎖螢幕旋轉" #: js/misc/systemActions.js:250 msgctxt "search-result" msgid "Lock Screen Rotation" msgstr "鎖定螢幕旋轉" #: js/misc/util.js:132 msgid "Command not found" msgstr "找不到命令" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: js/misc/util.js:172 msgid "Could not parse command:" msgstr "無法分析命令:" #: js/misc/util.js:180 #, javascript-format msgid "Execution of “%s” failed:" msgstr "無法執行「%s」:" #: js/misc/dateUtils.js:69 msgid "Just now" msgstr "剛剛" #: js/misc/dateUtils.js:72 #, javascript-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d 分鐘前" #: js/misc/dateUtils.js:79 #, javascript-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d 小時前" #: js/misc/dateUtils.js:85 js/ui/dateMenu.js:185 msgid "Yesterday" msgstr "昨天" #: js/misc/dateUtils.js:88 #, javascript-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d 天前" #: js/misc/dateUtils.js:95 #, javascript-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d 週前" #: js/misc/dateUtils.js:102 #, javascript-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%d 個月前" #: js/misc/dateUtils.js:108 #, javascript-format msgid "%d year ago" msgid_plural "%d years ago" msgstr[0] "%d 年前" #. Translators: Time in 24h format #: js/misc/dateUtils.js:155 msgid "%H∶%M" msgstr "%H∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 24h format. i.e. "Yesterday, 14:30" #: js/misc/dateUtils.js:161 #, no-c-format msgid "Yesterday, %H∶%M" msgstr "昨天 %H:%M" #. Translators: this is the week day name followed by a time #. string in 24h format. i.e. "Monday, 14:30" #: js/misc/dateUtils.js:167 #, no-c-format msgid "%A, %H∶%M" msgstr "%A %H∶%M" #. Translators: this is the month name and day number #. followed by a time string in 24h format. #. i.e. "May 25, 14:30" #: js/misc/dateUtils.js:173 #, no-c-format msgid "%B %-d, %H∶%M" msgstr "%-m月%-d日 %H∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 24h format. #. i.e. "May 25 2012, 14:30" #: js/misc/dateUtils.js:179 #, no-c-format msgid "%B %-d %Y, %H∶%M" msgstr "%Y年%-m月%-d日 %H∶%M" #. Show only the time if date is on today #. eslint-disable-line no-lonely-if #. Translators: Time in 12h format #: js/misc/dateUtils.js:184 msgid "%l∶%M %p" msgstr "%p %I∶%M" #. Translators: this is the word "Yesterday" followed by a #. time string in 12h format. i.e. "Yesterday, 2:30 pm" #: js/misc/dateUtils.js:190 #, no-c-format msgid "Yesterday, %l∶%M %p" msgstr "昨天 %p %I∶%M" #. Translators: this is the week day name followed by a time #. string in 12h format. i.e. "Monday, 2:30 pm" #: js/misc/dateUtils.js:196 #, no-c-format msgid "%A, %l∶%M %p" msgstr "%A %p %I∶%M" #. Translators: this is the month name and day number #. followed by a time string in 12h format. #. i.e. "May 25, 2:30 pm" #: js/misc/dateUtils.js:202 #, no-c-format msgid "%B %-d, %l∶%M %p" msgstr "%-m月%-d日 %p %I∶%M" #. Translators: this is the month name, day number, year #. number followed by a time string in 12h format. #. i.e. "May 25 2012, 2:30 pm" #: js/misc/dateUtils.js:208 #, no-c-format msgid "%B %-d %Y, %l∶%M %p" msgstr "%Y年%-m月%-d日 %p %I∶%M" #: js/portalHelper/main.js:98 msgid "Your connection seems to be secure" msgstr "您的連線似乎不安全" #: js/portalHelper/main.js:104 msgid "" "Your connection to this hotspot login is not secure. Passwords or other " "information you enter on this page can be viewed by people nearby." msgstr "" "您欲連接的熱點並未提供安全的登入環境,在此頁面上所輸入的密碼等資訊均有可能被" "他人看見。" #: js/portalHelper/main.js:115 msgid "Hotspot Login" msgstr "登入熱點" #. No support for non-modal system dialogs, so ignore the option #. let modal = options['modal'] || true; #: js/ui/accessDialog.js:45 js/ui/inhibitShortcutsDialog.js:92 msgid "Deny" msgstr "拒絕" #: js/ui/accessDialog.js:46 js/ui/inhibitShortcutsDialog.js:101 msgid "Allow" msgstr "允許" #: js/ui/appDisplay.js:1775 msgid "Unnamed Folder" msgstr "未命名資料夾" #: js/ui/appFavorites.js:166 #, javascript-format msgid "%s has been pinned to the dash." msgstr "《%s》已釘選至 Dash。" #: js/ui/appFavorites.js:199 #, javascript-format msgid "%s has been unpinned from the dash." msgstr "《%s》已從 Dash 中取消釘選。" #. Translators: This is the heading of a list of open windows #: js/ui/appMenu.js:51 msgid "Open Windows" msgstr "開啟的視窗" #: js/ui/appMenu.js:59 msgid "New Window" msgstr "新視窗" #: js/ui/appMenu.js:86 msgid "App Details" msgstr "程式詳細資訊" #: js/ui/appMenu.js:102 msgid "Quit" msgstr "退出" #: js/ui/appMenu.js:162 js/ui/dash.js:250 msgid "Unpin" msgstr "取消釘選" #: js/ui/appMenu.js:163 msgid "Pin to Dash" msgstr "釘選至 Dash" #: js/ui/appMenu.js:180 msgid "Launch using Integrated Graphics Card" msgstr "使用整合顯示卡啟動" #: js/ui/appMenu.js:181 msgid "Launch using Discrete Graphics Card" msgstr "使用獨立顯示卡啟動" #: js/ui/audioDeviceSelection.js:46 msgid "Select Audio Device" msgstr "選擇音訊裝置" #: js/ui/audioDeviceSelection.js:61 js/ui/status/volume.js:83 msgid "Sound Settings" msgstr "音訊設定值" #: js/ui/audioDeviceSelection.js:74 msgid "Headphones" msgstr "頭戴式耳機" #: js/ui/audioDeviceSelection.js:76 msgid "Headset" msgstr "耳麥" #: js/ui/audioDeviceSelection.js:78 js/ui/status/volume.js:358 msgid "Microphone" msgstr "麥克風" #: js/ui/backgroundMenu.js:15 msgid "Change Background…" msgstr "更改背景…" #: js/ui/backgroundMenu.js:17 msgid "Display Settings" msgstr "顯示器設定值" #: js/ui/backgroundMenu.js:18 msgid "Settings" msgstr "設定值" #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). #: js/ui/calendar.js:39 msgctxt "calendar-no-work" msgid "06" msgstr "06" #. Translators: Calendar grid abbreviation for Sunday. #. * #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. #: js/ui/calendar.js:65 msgctxt "grid sunday" msgid "S" msgstr "日" #. Translators: Calendar grid abbreviation for Monday #: js/ui/calendar.js:67 msgctxt "grid monday" msgid "M" msgstr "一" #. Translators: Calendar grid abbreviation for Tuesday #: js/ui/calendar.js:69 msgctxt "grid tuesday" msgid "T" msgstr "二" #. Translators: Calendar grid abbreviation for Wednesday #: js/ui/calendar.js:71 msgctxt "grid wednesday" msgid "W" msgstr "三" #. Translators: Calendar grid abbreviation for Thursday #: js/ui/calendar.js:73 msgctxt "grid thursday" msgid "T" msgstr "四" #. Translators: Calendar grid abbreviation for Friday #: js/ui/calendar.js:75 msgctxt "grid friday" msgid "F" msgstr "五" #. Translators: Calendar grid abbreviation for Saturday #: js/ui/calendar.js:77 msgctxt "grid saturday" msgid "S" msgstr "六" #. * #. * Translators: The header displaying just the month name #. * standalone, when this is a month of the current year. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not change it. #. #: js/ui/calendar.js:428 msgid "%OB" msgstr "%OB" #. * #. * Translators: The header displaying the month name and the year #. * number, when this is a month of a different year. You can #. * reorder the format specifiers or add other modifications #. * according to the requirements of your language. #. * "%OB" is the new format specifier introduced in glibc 2.27, #. * in most cases you should not use the old "%B" here unless you #. * absolutely know what you are doing. #. #: js/ui/calendar.js:438 msgid "%OB %Y" msgstr "%Y年%OB" #: js/ui/calendar.js:500 msgid "Previous month" msgstr "上個月" #: js/ui/calendar.js:518 msgid "Next month" msgstr "下個月" #: js/ui/calendar.js:669 #, no-javascript-format msgctxt "date day number format" msgid "%d" msgstr "%d" #: js/ui/calendar.js:728 msgid "Week %V" msgstr "第 %V 週" #: js/ui/calendar.js:920 msgid "No Notifications" msgstr "沒有通知" #: js/ui/calendar.js:976 msgid "Do Not Disturb" msgstr "不要打擾" #: js/ui/calendar.js:997 msgid "Clear" msgstr "清除" #: js/ui/calendar.js:1001 msgctxt "action" msgid "Clear all notifications" msgstr "清除所有的通知" #. Translators: %s is an application name #: js/ui/closeDialog.js:44 #, javascript-format msgid "“%s” is not responding." msgstr "《%s》沒有回應。" #: js/ui/closeDialog.js:45 msgid "" "You may choose to wait a short while for it to continue or force the app to " "quit entirely." msgstr "您可以選擇等待讓程式繼續執行,或強制它立即退出。" #: js/ui/closeDialog.js:73 msgid "Force Quit" msgstr "強制退出" #: js/ui/closeDialog.js:78 msgid "Wait" msgstr "等待" #: js/ui/components/automountManager.js:84 msgid "External drive connected" msgstr "外部裝置已連接" #: js/ui/components/automountManager.js:96 msgid "External drive disconnected" msgstr "外部裝置已拔除" #: js/ui/components/automountManager.js:210 msgid "Unable to unlock volume" msgstr "無法解鎖磁碟區" #: js/ui/components/automountManager.js:211 msgid "The installed udisks version does not support the PIM setting" msgstr "系統所安裝的《udisks》版本無法設定 PIM" #: js/ui/components/autorunManager.js:200 #, javascript-format msgid "Open with %s" msgstr "使用《%s》開啟" #: js/ui/components/networkAgent.js:97 msgid "" "Alternatively you can connect by pushing the “WPS” button on your router." msgstr "您也可以按下路由器的「WPS」按鈕來連接。" #: js/ui/components/networkAgent.js:109 js/ui/status/bluetooth.js:246 #: js/ui/status/network.js:360 js/ui/status/network.js:444 msgid "Connect" msgstr "連接" #: js/ui/components/networkAgent.js:224 msgid "Key" msgstr "金鑰" #: js/ui/components/networkAgent.js:275 js/ui/components/networkAgent.js:314 msgid "Private key password" msgstr "私密金鑰密碼" #: js/ui/components/networkAgent.js:308 msgid "Identity" msgstr "身份識別" #: js/ui/components/networkAgent.js:334 msgid "Service" msgstr "服務" #: js/ui/components/networkAgent.js:372 js/ui/components/networkAgent.js:408 #: js/ui/components/networkAgent.js:745 js/ui/components/networkAgent.js:766 msgid "Authentication required" msgstr "需要核對身分" #: js/ui/components/networkAgent.js:373 js/ui/components/networkAgent.js:746 #, javascript-format msgid "" "Passwords or encryption keys are required to access the wireless network " "“%s”." msgstr "需要密碼或加密金鑰才能存取無線網路「%s」。" #: js/ui/components/networkAgent.js:377 js/ui/components/networkAgent.js:750 msgid "Wired 802.1X authentication" msgstr "有線 802.1X 驗證" #: js/ui/components/networkAgent.js:380 msgid "Network name" msgstr "網路名稱" #: js/ui/components/networkAgent.js:388 js/ui/components/networkAgent.js:754 msgid "DSL authentication" msgstr "DSL 驗證" #: js/ui/components/networkAgent.js:395 js/ui/components/networkAgent.js:759 msgid "PIN code required" msgstr "需要 PIN 碼" #: js/ui/components/networkAgent.js:396 js/ui/components/networkAgent.js:760 msgid "PIN code is needed for the mobile broadband device" msgstr "行動寬頻裝置要求輸入 PIN 碼" #: js/ui/components/networkAgent.js:398 msgid "PIN" msgstr "PIN 碼" #: js/ui/components/networkAgent.js:409 js/ui/components/networkAgent.js:751 #: js/ui/components/networkAgent.js:755 js/ui/components/networkAgent.js:767 #: js/ui/components/networkAgent.js:771 #, javascript-format msgid "A password is required to connect to “%s”." msgstr "需要密碼才能連接「%s」。" #: js/ui/components/networkAgent.js:770 msgid "VPN password" msgstr "VPN 密碼" #: js/ui/components/polkitAgent.js:46 msgid "Authentication Required" msgstr "需要核對身分" #: js/ui/components/polkitAgent.js:86 msgid "Administrator" msgstr "管理員" #: js/ui/components/polkitAgent.js:151 msgid "Authenticate" msgstr "驗證" #. Translators: "that didn't work" refers to the fact that the #. * requested authentication was not gained; this can happen #. * because of an authentication error (like invalid password), #. * for instance. #: js/ui/components/polkitAgent.js:265 js/ui/shellMountOperation.js:417 msgid "Sorry, that didn’t work. Please try again." msgstr "抱歉,那沒有作用。請再試一次。" #: js/ui/ctrlAltTab.js:25 js/ui/overviewControls.js:418 msgid "Windows" msgstr "視窗" #: js/ui/dash.js:206 js/ui/dash.js:252 msgid "Show Apps" msgstr "顯示程式" #. Translators: this is the name of the dock/favorites area on #. the bottom of the overview #: js/ui/dash.js:410 msgid "Dash" msgstr "Dash" #. Translators: This is the date format to use when the calendar popup is #. * shown - it is shown just below the time in the top bar (e.g., #. * "Tue 9:29 AM"). The string itself should become a full date, e.g., #. * "February 17 2015". #. #: js/ui/dateMenu.js:101 msgid "%B %-d %Y" msgstr "%Y年%-m月%-d日" #. Translators: This is the accessible name of the date button shown #. * below the time in the shell; it should combine the weekday and the #. * date, e.g. "Tuesday February 17 2015". #. #: js/ui/dateMenu.js:108 msgid "%A %B %e %Y" msgstr "%Y年%-m月%-d日 %A" #. Translators: Shown on calendar heading when selected day occurs on current year #: js/ui/dateMenu.js:174 msgctxt "calendar heading" msgid "%B %-d" msgstr "%-m月%-d日" #. Translators: Shown on calendar heading when selected day occurs on different year #: js/ui/dateMenu.js:177 msgctxt "calendar heading" msgid "%B %-d %Y" msgstr "%Y年%-m月%-d日" #: js/ui/dateMenu.js:183 msgid "Today" msgstr "今天" #: js/ui/dateMenu.js:187 msgid "Tomorrow" msgstr "明天" #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters #. #: js/ui/dateMenu.js:218 msgctxt "event list time" msgid "All Day" msgstr "全天" #. Translators: Shown in calendar event list as the start/end of events #. * that only show day and month #. #: js/ui/dateMenu.js:240 msgid "%m/%d" msgstr "%m/%d" #: js/ui/dateMenu.js:291 msgid "No Events" msgstr "沒有行程" #: js/ui/dateMenu.js:413 msgid "Add world clocks…" msgstr "加入世界時鐘…" #: js/ui/dateMenu.js:414 msgid "World Clocks" msgstr "世界時鐘" #: js/ui/dateMenu.js:704 msgid "Loading…" msgstr "正在載入…" #: js/ui/dateMenu.js:714 msgid "Go online for weather information" msgstr "連接網路以取得天氣資訊" #: js/ui/dateMenu.js:716 msgid "Weather information is currently unavailable" msgstr "目前無法使用天氣資訊" #: js/ui/dateMenu.js:726 msgid "Weather" msgstr "天氣" #: js/ui/dateMenu.js:728 msgid "Select weather location…" msgstr "選擇天氣位置…" #: js/ui/endSessionDialog.js:48 #, javascript-format msgctxt "title" msgid "Log Out %s" msgstr "登出「%s」" #: js/ui/endSessionDialog.js:49 msgctxt "title" msgid "Log Out" msgstr "登出" #: js/ui/endSessionDialog.js:52 #, javascript-format msgid "%s will be logged out automatically in %d second." msgid_plural "%s will be logged out automatically in %d seconds." msgstr[0] "「%s」會在 %d 秒後自動登出。" #: js/ui/endSessionDialog.js:58 #, javascript-format msgid "You will be logged out automatically in %d second." msgid_plural "You will be logged out automatically in %d seconds." msgstr[0] "您會在 %d 秒後自動登出。" #: js/ui/endSessionDialog.js:65 msgctxt "button" msgid "Log Out" msgstr "登出" #: js/ui/endSessionDialog.js:71 js/ui/status/system.js:176 msgctxt "title" msgid "Power Off" msgstr "關閉電源" #: js/ui/endSessionDialog.js:72 msgctxt "title" msgid "Install Updates & Power Off" msgstr "安裝更新並關閉電源" #: js/ui/endSessionDialog.js:75 #, javascript-format msgid "The system will power off automatically in %d second." msgid_plural "The system will power off automatically in %d seconds." msgstr[0] "系統會在 %d 秒後關閉電源。" #: js/ui/endSessionDialog.js:79 js/ui/endSessionDialog.js:98 msgctxt "checkbox" msgid "Install pending software updates" msgstr "安裝擱置的軟體更新" #: js/ui/endSessionDialog.js:83 msgctxt "button" msgid "Power Off" msgstr "關閉電源" #: js/ui/endSessionDialog.js:90 msgctxt "title" msgid "Restart" msgstr "重新啟動" #: js/ui/endSessionDialog.js:91 msgctxt "title" msgid "Install Updates & Restart" msgstr "安裝更新並重新啟動" #: js/ui/endSessionDialog.js:94 #, javascript-format msgid "The system will restart automatically in %d second." msgid_plural "The system will restart automatically in %d seconds." msgstr[0] "系統會在 %d 秒後重新啟動。" #: js/ui/endSessionDialog.js:102 msgctxt "button" msgid "Restart" msgstr "重新啟動" #: js/ui/endSessionDialog.js:110 msgctxt "title" msgid "Restart & Install Updates" msgstr "重新啟動並安裝更新" #: js/ui/endSessionDialog.js:113 #, javascript-format msgid "The system will automatically restart and install updates in %d second." msgid_plural "" "The system will automatically restart and install updates in %d seconds." msgstr[0] "系統會在 %d 秒後重新啟動並安裝更新。" #: js/ui/endSessionDialog.js:120 js/ui/endSessionDialog.js:141 msgctxt "button" msgid "Restart & Install" msgstr "重新啟動 & 安裝" #: js/ui/endSessionDialog.js:122 msgctxt "button" msgid "Install & Power Off" msgstr "安裝 & 關機" #: js/ui/endSessionDialog.js:123 msgctxt "checkbox" msgid "Power off after updates are installed" msgstr "安裝完更新後關機" #: js/ui/endSessionDialog.js:130 msgctxt "title" msgid "Restart & Install Upgrade" msgstr "重新啟動並升級系統" #. Translators: This is the text displayed for system upgrades in the #. shut down dialog. First %s gets replaced with the distro name and #. second %s with the distro version to upgrade to #: js/ui/endSessionDialog.js:135 #, javascript-format msgid "" "%s %s will be installed after restart. Upgrade installation can take a long " "time: ensure that you have backed up and that the computer is plugged in." msgstr "" "重新啟動後便會開始升級 %s %s。升級過程會花上一段時間:請確保已將電腦完成備份" "並接上交流電源。" #: js/ui/endSessionDialog.js:284 msgid "Low battery power: please plug in before installing updates." msgstr "低電量:請於安裝更新前接上交流電源。" #: js/ui/endSessionDialog.js:293 msgid "Some applications are busy or have unsaved work" msgstr "仍有應用程式處於忙碌狀態或有工作尚未儲存" #: js/ui/endSessionDialog.js:298 msgid "Other users are logged in" msgstr "已有其他登入的使用者" #: js/ui/endSessionDialog.js:468 msgctxt "button" msgid "Boot Options" msgstr "開機選項" #. Translators: Remote here refers to a remote session, like a ssh login #: js/ui/endSessionDialog.js:673 #, javascript-format msgid "%s (remote)" msgstr "%s(遠端)" #. Translators: Console here refers to a tty like a VT console #: js/ui/endSessionDialog.js:676 #, javascript-format msgid "%s (console)" msgstr "%s(主控臺)" #: js/ui/extensionDownloader.js:282 msgid "Install" msgstr "安裝" #: js/ui/extensionDownloader.js:288 msgid "Install Extension" msgstr "安裝擴充套件" #: js/ui/extensionDownloader.js:289 #, javascript-format msgid "Download and install “%s” from extensions.gnome.org?" msgstr "是否自 extensions.gnome.org 下載並安裝「%s」?" #: js/ui/extensionSystem.js:354 msgid "Extension Updates Available" msgstr "擴充套件已有更新" #: js/ui/extensionSystem.js:355 msgid "Extension updates are ready to be installed." msgstr "擴充套件更新已準備好安裝。" #: js/ui/inhibitShortcutsDialog.js:70 msgid "Allow inhibiting shortcuts" msgstr "暫時停用快捷鍵" #. Translators: %s is an application name like "Settings" #: js/ui/inhibitShortcutsDialog.js:73 #, javascript-format msgid "The app %s wants to inhibit shortcuts" msgstr "程式《%s》請求暫時停用快捷鍵" #: js/ui/inhibitShortcutsDialog.js:74 msgid "An app wants to inhibit shortcuts" msgstr "程式請求暫時停用快捷鍵" #. Translators: %s is a keyboard shortcut like "Super+x" #: js/ui/inhibitShortcutsDialog.js:81 #, javascript-format msgid "You can restore shortcuts by pressing %s." msgstr "您可以按下 %s 鍵來還原快捷鍵。" #: js/ui/kbdA11yDialog.js:34 msgid "Slow Keys Turned On" msgstr "遲緩按鍵已開啟" #: js/ui/kbdA11yDialog.js:35 msgid "Slow Keys Turned Off" msgstr "遲緩按鍵已關閉" #: js/ui/kbdA11yDialog.js:36 msgid "" "You just held down the Shift key for 8 seconds. This is the shortcut for the " "Slow Keys feature, which affects the way your keyboard works." msgstr "" "您已按住 Shift 鍵長達 8 秒。這是「遲緩按鍵」功能的快捷鍵,會影響您的鍵盤操" "作。" #: js/ui/kbdA11yDialog.js:42 msgid "Sticky Keys Turned On" msgstr "相黏按鍵已開啟" #: js/ui/kbdA11yDialog.js:43 msgid "Sticky Keys Turned Off" msgstr "相黏按鍵已關閉" #: js/ui/kbdA11yDialog.js:45 msgid "" "You just pressed the Shift key 5 times in a row. This is the shortcut for " "the Sticky Keys feature, which affects the way your keyboard works." msgstr "" "您已連按 Shift 鍵多達 5 次。這是「相黏按鍵」功能的快捷鍵,會影響您的鍵盤操" "作。" #: js/ui/kbdA11yDialog.js:47 msgid "" "You just pressed two keys at once, or pressed the Shift key 5 times in a " "row. This turns off the Sticky Keys feature, which affects the way your " "keyboard works." msgstr "" "您已同時按下 2 個按鍵,或是連按 Shift 鍵多達 5 次。這麽做會關閉「相黏按鍵」功" "能,並會影響您的鍵盤操作。" #: js/ui/kbdA11yDialog.js:57 msgid "Leave On" msgstr "保持開啟" #: js/ui/kbdA11yDialog.js:57 msgid "Turn On" msgstr "開啟" #: js/ui/kbdA11yDialog.js:67 js/ui/status/network.js:455 msgid "Turn Off" msgstr "關閉" #: js/ui/kbdA11yDialog.js:67 msgid "Leave Off" msgstr "保持關閉" #: js/ui/keyboard.js:181 js/ui/status/keyboard.js:899 msgid "Keyboard Settings" msgstr "鍵盤設定值" #: js/ui/lookingGlass.js:724 msgid "No extensions installed" msgstr "沒有已安裝的擴充套件" #. Translators: argument is an extension UUID. #: js/ui/lookingGlass.js:785 #, javascript-format msgid "%s has not emitted any errors." msgstr "%s 沒有發出任何錯誤。" #: js/ui/lookingGlass.js:791 msgid "Hide Errors" msgstr "隱藏錯誤" #: js/ui/lookingGlass.js:795 js/ui/lookingGlass.js:872 msgid "Show Errors" msgstr "顯示錯誤" #: js/ui/lookingGlass.js:804 msgid "Active" msgstr "使用中" #: js/ui/lookingGlass.js:807 msgid "Inactive" msgstr "不使用" #: js/ui/lookingGlass.js:809 msgid "Error" msgstr "錯誤" #: js/ui/lookingGlass.js:811 msgid "Out of date" msgstr "過時的" #: js/ui/lookingGlass.js:813 msgid "Downloading" msgstr "正在下載" #: js/ui/lookingGlass.js:815 msgid "Deactivating" msgstr "正在停用" #: js/ui/lookingGlass.js:817 msgid "Activating" msgstr "正在啟動" #: js/ui/lookingGlass.js:850 msgid "View Source" msgstr "檢示來源" #: js/ui/lookingGlass.js:861 msgid "Web Page" msgstr "網頁" #: js/ui/main.js:279 msgid "System was put in unsafe mode" msgstr "系統曾處於不安全模式" #: js/ui/main.js:280 msgid "Apps now have unrestricted access" msgstr "程式可以不受限制的存取" #: js/ui/main.js:283 js/ui/overview.js:54 msgid "Undo" msgstr "還原" #: js/ui/main.js:340 msgid "Logged in as a privileged user" msgstr "以超級使用者身份登入" #: js/ui/main.js:341 msgid "" "Running a session as a privileged user should be avoided for security " "reasons. If possible, you should log in as a normal user." msgstr "" "基於安全考量,應避免以超級使用者身份執行作業階段;允許的情況下請以一般使用者" "身份登入。" #: js/ui/main.js:389 msgid "Screen Lock disabled" msgstr "已停用鎖定螢幕" #: js/ui/main.js:390 msgid "Screen Locking requires the GNOME display manager." msgstr "鎖定螢幕需使用《GNOME 顯示管理器》。" #. Translators: this is the string displayed in the header when a message #. source doesn't have a name #: js/ui/messageList.js:400 msgid "Unknown App" msgstr "不明程式" #: js/ui/messageTray.js:328 js/ui/messageTray.js:330 msgid "Notification sound" msgstr "通知音效" #: js/ui/mpris.js:198 msgid "Unknown artist" msgstr "不明演出者" #: js/ui/mpris.js:208 msgid "Unknown title" msgstr "不明歌曲" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. #: js/ui/overviewControls.js:342 msgid "Type to search" msgstr "輸入以搜尋" #: js/ui/overviewControls.js:406 msgid "Apps" msgstr "程式" #. Translators: This is the main view to select #. activities. See also note for "Activities" string. #: js/ui/overview.js:67 msgid "Overview" msgstr "概覽" #: js/ui/padOsd.js:100 msgid "New shortcut…" msgstr "輸入新快捷鍵…" #: js/ui/padOsd.js:153 msgid "App defined" msgstr "程式定義" #: js/ui/padOsd.js:154 msgid "Show on-screen help" msgstr "在螢幕上顯示按鍵功能" #: js/ui/padOsd.js:155 msgid "Switch monitor" msgstr "切換顯示器" #: js/ui/padOsd.js:156 msgid "Assign keystroke" msgstr "指定的鍵盤按鍵" #: js/ui/padOsd.js:225 msgid "Done" msgstr "完成" #: js/ui/padOsd.js:728 msgid "Edit…" msgstr "編輯…" #: js/ui/padOsd.js:775 msgid "None" msgstr "無" #: js/ui/padOsd.js:846 msgid "Press a button to configure" msgstr "按下個別按鍵進行設定" #: js/ui/padOsd.js:847 msgid "Press Esc to exit" msgstr "按下 Esc 鍵離開" #: js/ui/padOsd.js:850 msgid "Press any key to exit" msgstr "按下任意鍵離開" #. Translators: If there is no suitable word for "Activities" #. in your language, you can use the word for "Overview". #: js/ui/panel.js:425 msgid "Activities" msgstr "概覽" #: js/ui/panel.js:506 msgctxt "System menu in the top bar" msgid "System" msgstr "系統" #: js/ui/panel.js:680 msgid "Top Bar" msgstr "頂端列" #: js/ui/quickSettings.js:187 msgid "Open menu" msgstr "開啟選單" #: js/ui/runDialog.js:63 msgid "Run a Command" msgstr "執行命令" #: js/ui/runDialog.js:78 msgid "Press ESC to close" msgstr "按下 ESC 鍵關閉" #: js/ui/runDialog.js:243 msgid "Restart is not available on Wayland" msgstr "使用《Wayland》時無法重新啟動" #: js/ui/runDialog.js:248 msgid "Restarting…" msgstr "重新啟動…" #: js/ui/screenShield.js:235 msgid "GNOME needs to lock the screen" msgstr "《GNOME》需將螢幕鎖定" #: js/ui/screenShield.js:276 js/ui/screenShield.js:669 msgid "Unable to lock" msgstr "無法鎖定" #: js/ui/screenShield.js:277 js/ui/screenShield.js:670 msgid "Lock was blocked by an app" msgstr "鎖定的動作遭程式阻擋" #: js/ui/screenshot.js:1254 msgid "Selection" msgstr "選取" #: js/ui/screenshot.js:1264 msgid "Area Selection" msgstr "擷取所選的範圍" #: js/ui/screenshot.js:1269 msgid "Screen" msgstr "螢幕" #: js/ui/screenshot.js:1279 msgid "Screen Selection" msgstr "擷取整個螢幕" #: js/ui/screenshot.js:1284 msgid "Window" msgstr "視窗" #: js/ui/screenshot.js:1294 msgid "Window Selection" msgstr "擷取視窗" #. Translators: entry in the window right click menu. #: js/ui/screenshot.js:1319 js/ui/status/system.js:113 js/ui/windowMenu.js:30 msgid "Take Screenshot" msgstr "擷取視窗快照" #: js/ui/screenshot.js:1335 msgid "Record Screen" msgstr "錄製螢幕" #. Translators: since this string refers to an action, #. it needs to be phrased as a verb. #: js/ui/screenshot.js:1352 msgid "Capture" msgstr "擷取" #: js/ui/screenshot.js:1374 msgid "Show Pointer" msgstr "顯示滑鼠指標" #. Translators: this is the folder where recorded #. screencasts are stored. #: js/ui/screenshot.js:1998 msgid "Screencasts" msgstr "螢幕錄影" #. Translators: this is a filename used for screencast #. * recording, where "%d" and "%t" date and time, e.g. #. * "Screencast from 07-17-2013 10:00:46 PM" #: js/ui/screenshot.js:2003 #, no-c-format msgid "Screencast from %d %t" msgstr "螢幕錄影 %d %t" #. Translators: notification title. #: js/ui/screenshot.js:2049 msgid "Screencast recorded" msgstr "已錄製螢幕錄影" #. Translators: notification title. #: js/ui/screenshot.js:2062 msgid "Screencast failed to start" msgstr "螢幕錄影無法啟動" #. Translators: notification title. #: js/ui/screenshot.js:2068 msgid "Screencast ended: Out of disk space" msgstr "螢幕錄影中止:磁碟空間不足" #. We can encourage user to try again on service crashes since the #. recorder will auto-blocklist the pipeline that crashed. #. Translators: notification title. #: js/ui/screenshot.js:2074 msgid "Screencast ended unexpectedly, please try again" msgstr "螢幕錄影未預期的結束,請再試一次" #. Translators: notification title. #: js/ui/screenshot.js:2077 msgid "Screencast ended unexpectedly" msgstr "螢幕錄影未預期的結束" #. Translators: notification source name. #: js/ui/screenshot.js:2087 js/ui/screenshot.js:2329 msgid "Screenshot" msgstr "螢幕快照" #. Translators: notification body when a screencast was recorded. #: js/ui/screenshot.js:2094 msgid "Click here to view the video." msgstr "點擊此處檢視影片。" #. Translators: button on the screencast notification. #. Translators: button on the screenshot notification. #: js/ui/screenshot.js:2102 js/ui/screenshot.js:2345 msgid "Show in Files" msgstr "使用《檔案》開啟" #. Translators: this is the name of the file that the screenshot is #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". #: js/ui/screenshot.js:2289 #, javascript-format msgid "Screenshot from %s" msgstr "螢幕快照 %s" #. Translators: notification title. #: js/ui/screenshot.js:2335 msgid "Screenshot captured" msgstr "已擷取螢幕快照" #. Translators: notification body when a screenshot was captured. #: js/ui/screenshot.js:2337 msgid "You can paste the image from the clipboard." msgstr "您可以自剪貼簿中貼上螢幕快照。" #: js/ui/screenshot.js:2393 js/ui/screenshot.js:2557 msgid "Screenshot taken" msgstr "已擷取螢幕快照" #: js/ui/search.js:831 msgid "Searching…" msgstr "正在搜尋…" #: js/ui/search.js:833 msgid "No results." msgstr "沒有結果。" #: js/ui/search.js:964 #, javascript-format msgid "%d more" msgid_plural "%d more" msgstr[0] "其他 %d 項" #: js/ui/searchController.js:89 #: subprojects/extensions-app/data/ui/extensions-window.ui:73 msgid "Search" msgstr "搜尋" #: js/ui/shellEntry.js:23 msgid "Copy" msgstr "複製" #: js/ui/shellEntry.js:28 msgid "Paste" msgstr "貼上" #: js/ui/shellEntry.js:80 msgid "Show Text" msgstr "顯示文字" #: js/ui/shellEntry.js:82 msgid "Hide Text" msgstr "隱藏文字" #: js/ui/shellEntry.js:176 msgid "Caps lock is on." msgstr "Caps Lock 已開啟。" #: js/ui/shellMountOperation.js:288 msgid "Hidden Volume" msgstr "隱藏的儲存區" #: js/ui/shellMountOperation.js:291 msgid "Windows System Volume" msgstr "Windows 系統儲存區" #: js/ui/shellMountOperation.js:294 msgid "Uses Keyfiles" msgstr "使用密鑰文件" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:302 #, javascript-format msgid "" "To unlock a volume that uses keyfiles, use the %s utility instead." msgstr "要解鎖使用密鑰文件的儲存區,請改用《%s》工具。" #: js/ui/shellMountOperation.js:306 msgid "" "You need an external utility like Disks to unlock a volume that uses " "keyfiles." msgstr "您需要 像磁碟 這樣的外部公用程式來解鎖使用金鑰檔案的儲存區。" #: js/ui/shellMountOperation.js:314 msgid "PIM Number" msgstr "PIM 碼" #: js/ui/shellMountOperation.js:373 msgid "Remember Password" msgstr "記住密碼" #: js/ui/shellMountOperation.js:388 msgid "Unlock" msgstr "解鎖" #. Translators: %s is the Disks application #: js/ui/shellMountOperation.js:402 #, javascript-format msgid "Open %s" msgstr "開啟《%s》" #: js/ui/shellMountOperation.js:438 msgid "The PIM must be a number or empty." msgstr "PIM 必須是數字或為空白。" #: js/ui/status/accessibility.js:36 msgid "Accessibility" msgstr "無障礙功能" #: js/ui/status/accessibility.js:46 msgid "High Contrast" msgstr "高反差" #: js/ui/status/accessibility.js:49 msgid "Zoom" msgstr "縮放" #: js/ui/status/accessibility.js:56 msgid "Screen Reader" msgstr "螢幕閱讀器" #: js/ui/status/accessibility.js:60 msgid "Screen Keyboard" msgstr "螢幕鍵盤" #: js/ui/status/accessibility.js:64 msgid "Visual Alerts" msgstr "鈴響視覺化" #: js/ui/status/accessibility.js:68 msgid "Sticky Keys" msgstr "相黏按鍵" #: js/ui/status/accessibility.js:72 msgid "Slow Keys" msgstr "遲緩按鍵" #: js/ui/status/accessibility.js:76 msgid "Bounce Keys" msgstr "反彈按鍵" #: js/ui/status/accessibility.js:80 msgid "Mouse Keys" msgstr "滑鼠鍵" #: js/ui/status/accessibility.js:85 msgid "Accessibility Settings" msgstr "無障礙設定值" #: js/ui/status/accessibility.js:142 msgid "Large Text" msgstr "大型文字" #: js/ui/status/autoRotate.js:14 msgid "Auto Rotate" msgstr "自動旋轉" #: js/ui/status/backgroundApps.js:156 msgctxt "title" msgid "Background Apps" msgstr "背景程式" #: js/ui/status/backgroundApps.js:171 msgid "Apps known to be running without a window" msgstr "已知不需視窗執行的程式" #: js/ui/status/backgroundApps.js:182 msgid "App Settings" msgstr "程式設定值" #: js/ui/status/backgroundApps.js:239 msgid "No Background Apps" msgstr "沒有背景程式" #: js/ui/status/backgroundApps.js:241 #, javascript-format msgid "%d Background App" msgid_plural "%d Background Apps" msgstr[0] "%d 背景程式" #: js/ui/status/backlight.js:40 msgid "Keyboard Brightness" msgstr "鍵盤亮度" #: js/ui/status/backlight.js:80 msgid "Off" msgstr "關閉" #: js/ui/status/backlight.js:81 msgid "Low" msgstr "低" #: js/ui/status/backlight.js:82 msgid "High" msgstr "高" #: js/ui/status/backlight.js:148 js/ui/status/keyboard.js:881 msgid "Keyboard" msgstr "鍵盤" #: js/ui/status/bluetooth.js:246 js/ui/status/network.js:360 msgid "Disconnect" msgstr "中斷連接" #: js/ui/status/bluetooth.js:263 js/ui/status/bluetooth.js:265 msgid "Bluetooth" msgstr "藍牙" #: js/ui/status/bluetooth.js:288 js/ui/status/network.js:1900 msgid "Bluetooth Settings" msgstr "藍牙設定值" #: js/ui/status/bluetooth.js:335 msgid "No available or connected devices" msgstr "沒有可用或連接的裝置" #: js/ui/status/bluetooth.js:336 msgid "Turn on Bluetooth to connect to devices" msgstr "開啟藍牙以連接到裝置" #. Translators: This is the number of connected bluetooth devices #: js/ui/status/bluetooth.js:390 #, javascript-format msgid "%d Connected" msgid_plural "%d Connected" msgstr[0] "%d 個裝置已連接" #: js/ui/status/brightness.js:34 msgid "Brightness" msgstr "亮度" #: js/ui/status/darkMode.js:12 msgid "Dark Style" msgstr "深色模式" #: js/ui/status/dwellClick.js:15 msgid "Single Click" msgstr "點一下" #: js/ui/status/dwellClick.js:20 msgid "Double Click" msgstr "點兩下" #: js/ui/status/dwellClick.js:25 msgid "Drag" msgstr "拖動" #: js/ui/status/dwellClick.js:30 msgid "Secondary Click" msgstr "次要按鍵" #: js/ui/status/dwellClick.js:39 msgid "Dwell Click" msgstr "替代點擊" #: js/ui/status/keyboard.js:898 msgid "Show Keyboard Layout" msgstr "顯示鍵盤配置" #: js/ui/status/location.js:339 msgid "Allow location access" msgstr "允許取用位置資訊" #. Translators: %s is an application name #: js/ui/status/location.js:341 #, javascript-format msgid "The app %s wants to access your location" msgstr "《%s》欲取用您的位置資訊" #: js/ui/status/location.js:351 msgid "Location access can be changed at any time from the privacy settings." msgstr "位置資訊取用權可隨時從隱私設定中更改。" #: js/ui/status/location.js:359 msgid "Deny Access" msgstr "禁止存取" #: js/ui/status/location.js:364 msgid "Grant Access" msgstr "允許存取" #: js/ui/status/network.js:62 msgid "" msgstr "<不明>" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:354 #, javascript-format msgid "Disconnect %s" msgstr "中斷連接%s" #. Translators: %s is a device name like "MyPhone" #: js/ui/status/network.js:356 #, javascript-format msgid "Connect to %s" msgstr "連接%s" #: js/ui/status/network.js:1050 msgid "Secure" msgstr "安全" #: js/ui/status/network.js:1050 msgid "Not secure" msgstr "不安全" #: js/ui/status/network.js:1051 #, javascript-format msgid "Signal strength %s%%" msgstr "訊號強度 %s%%" #. translators: The first placeholder is the network name, the second and indication whether it is secure, and the last the signal strength indication #: js/ui/status/network.js:1053 #, javascript-format msgid "%s, %s, %s" msgstr "%s,%s,%s" #. Translators: %s is a network identifier #: js/ui/status/network.js:1155 #, javascript-format msgid "%s Hotspot" msgstr "%s熱點" #: js/ui/status/network.js:1426 #, javascript-format msgid "%d connected" msgid_plural "%d connected" msgstr[0] "%d 個已連接" #: js/ui/status/network.js:1524 js/ui/status/network.js:1540 msgid "VPN" msgstr "VPN 網路" #: js/ui/status/network.js:1525 msgid "VPN Settings" msgstr "VPN 設定值" #: js/ui/status/network.js:1785 msgid "Wi–Fi" msgstr "Wi–Fi" #: js/ui/status/network.js:1787 msgid "All Networks" msgstr "所有的網路" #: js/ui/status/network.js:1884 msgid "Wired Connections" msgstr "有線網路連線" #: js/ui/status/network.js:1885 msgid "Wired Settings" msgstr "有線網路設定值" #: js/ui/status/network.js:1899 msgid "Bluetooth Tethers" msgstr "藍牙分享網路" #. Translators: "Tether" from "Bluetooth Tether" #: js/ui/status/network.js:1906 msgid "Tether" msgstr "分享網路" #: js/ui/status/network.js:1919 msgid "Mobile Connections" msgstr "行動網路連線" #: js/ui/status/network.js:1921 msgid "Mobile Broadband Settings" msgstr "行動寬頻設定值" #. Translators: "Mobile" from "Mobile Broadband" #: js/ui/status/network.js:1930 msgid "Mobile" msgstr "行動網路" #: js/ui/status/network.js:2035 msgid "Connection failed" msgstr "連接失敗" #: js/ui/status/network.js:2036 msgid "Activation of network connection failed" msgstr "啟動網路連接失敗" #: js/ui/status/nightLight.js:21 msgid "Night Light" msgstr "夜光模式" #: js/ui/status/powerProfiles.js:21 msgctxt "Power profile" msgid "Performance" msgstr "效能模式" #: js/ui/status/powerProfiles.js:26 msgctxt "Power profile" msgid "Balanced" msgstr "平衡模式" #: js/ui/status/powerProfiles.js:31 msgctxt "Power profile" msgid "Power Saver" msgstr "省電模式" #: js/ui/status/powerProfiles.js:41 js/ui/status/powerProfiles.js:71 msgid "Power Mode" msgstr "電源模式" #: js/ui/status/powerProfiles.js:73 msgid "Power Settings" msgstr "電源設定值" #: js/ui/status/remoteAccess.js:76 msgid "Stop Screencast" msgstr "停止螢幕錄影" #: js/ui/status/remoteAccess.js:146 msgid "Stop Screen Sharing" msgstr "停止螢幕分享" #: js/ui/status/rfkill.js:101 msgid "Airplane Mode" msgstr "飛安模式" #: js/ui/status/system.js:170 msgid "Power Off Menu" msgstr "關閉電源選單" #: js/ui/status/system.js:178 msgid "Suspend" msgstr "暫停" #: js/ui/status/system.js:183 msgid "Restart…" msgstr "重新啟動…" #: js/ui/status/system.js:188 msgid "Power Off…" msgstr "關閉電源…" #: js/ui/status/system.js:195 #: subprojects/extensions-app/data/ui/extensions-window.ui:124 msgid "Log Out…" msgstr "登出…" #: js/ui/status/system.js:200 msgid "Switch User…" msgstr "切換使用者…" #: js/ui/status/system.js:244 msgctxt "action" msgid "Lock Screen" msgstr "鎖定螢幕" #: js/ui/status/thunderbolt.js:310 msgid "Unknown Thunderbolt device" msgstr "不明的 Thunderbolt 裝置" #: js/ui/status/thunderbolt.js:311 msgid "" "New device has been detected while you were away. Please disconnect and " "reconnect the device to start using it." msgstr "您離開後有偵測到新裝置。請中斷並重新連接該裝置便能開始使用。" #: js/ui/status/thunderbolt.js:314 msgid "Unauthorized Thunderbolt device" msgstr "未經授權的 Thunderbolt 裝置" #: js/ui/status/thunderbolt.js:315 msgid "" "New device has been detected and needs to be authorized by an administrator." msgstr "偵測到新裝置,需由系統管理員授權。" #: js/ui/status/thunderbolt.js:321 msgid "Thunderbolt authorization error" msgstr "Thunderbolt 授權錯誤" #: js/ui/status/thunderbolt.js:322 #, javascript-format msgid "Could not authorize the Thunderbolt device: %s" msgstr "無法授權該 Thunderbolt 裝置:%s" #: js/ui/status/volume.js:220 msgid "Volume changed" msgstr "音量已更改" #: js/ui/status/volume.js:233 msgid "Unmute" msgstr "取消靜音" #: js/ui/status/volume.js:233 msgid "Mute" msgstr "靜音" #: js/ui/status/volume.js:288 msgid "Volume" msgstr "音量" #: js/ui/status/volume.js:304 msgid "Sound Output" msgstr "音訊輸出" #: js/ui/status/volume.js:376 msgid "Sound Input" msgstr "音訊輸入" #. Translators: this is for display mirroring i.e. cloning. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:22 msgid "Mirror" msgstr "鏡像顯示" #. Translators: this is for the desktop spanning displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:31 msgid "Join Displays" msgstr "銜接顯示" #. Translators: this is for using only external displays. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:41 msgid "External Only" msgstr "僅外接" #. Translators: this is for using only the laptop display. #. * Try to keep it under around 15 characters. #. #: js/ui/switchMonitor.js:49 msgid "Built-in Only" msgstr "僅內建" #. Translators: This is a time format for a date in #. long format #: js/ui/unlockDialog.js:380 msgid "%A %B %-d" msgstr "%-m月%-d日 %A" #: js/ui/unlockDialog.js:386 msgid "Swipe up to unlock" msgstr "向上滑動解鎖" #: js/ui/unlockDialog.js:387 msgid "Click or press a key to unlock" msgstr "按下滑鼠按鍵或是鍵盤任意鍵解鎖" #: js/ui/unlockDialog.js:570 msgid "Unlock Window" msgstr "解鎖視窗" #: js/ui/unlockDialog.js:579 msgid "Log in as another user" msgstr "以其他使用者身份登入" #: js/ui/welcomeDialog.js:49 #, javascript-format msgid "GNOME %s" msgstr "GNOME %s" #: js/ui/welcomeDialog.js:53 #, javascript-format msgid "Welcome to %s" msgstr "歡迎使用 %s" #: js/ui/welcomeDialog.js:54 msgid "If you want to learn your way around, check out the tour." msgstr "您要不要四處看一下?讓我們帶領你走一趟。" #: js/ui/welcomeDialog.js:63 msgid "Skip" msgstr "略過" #: js/ui/welcomeDialog.js:68 msgid "Take Tour" msgstr "踏上旅程" #: js/ui/windowAttentionHandler.js:20 #, javascript-format msgid "“%s” is ready" msgstr "「%s」視窗已就緒" #. Translators: This string should be shorter than 30 characters #: js/ui/windowManager.js:69 msgid "Keep these display settings?" msgstr "要保留顯示器設定值嗎?" #: js/ui/windowManager.js:79 msgid "Revert Settings" msgstr "還原" #: js/ui/windowManager.js:84 msgid "Keep Changes" msgstr "保留" #: js/ui/windowManager.js:104 #, javascript-format msgid "Settings changes will revert in %d second" msgid_plural "Settings changes will revert in %d seconds" msgstr[0] "更改的設定值會在 %d 秒內還原" #. Translators: This represents the size of a window. The first number is #. * the width of the window and the second is the height. #: js/ui/windowManager.js:496 #, javascript-format msgid "%d × %d" msgstr "%d × %d" #: js/ui/windowMenu.js:42 msgid "Hide" msgstr "隱藏" #: js/ui/windowMenu.js:49 msgid "Restore" msgstr "還原" #: js/ui/windowMenu.js:53 msgid "Maximize" msgstr "最大化" #: js/ui/windowMenu.js:60 msgid "Move" msgstr "移動" #: js/ui/windowMenu.js:80 msgid "Resize" msgstr "重設大小" #: js/ui/windowMenu.js:101 msgid "Move Titlebar Onscreen" msgstr "移動螢幕標題列" #: js/ui/windowMenu.js:106 msgid "Always on Top" msgstr "永遠置頂顯示" #: js/ui/windowMenu.js:125 msgid "Always on Visible Workspace" msgstr "永遠顯示在目前的工作區" #: js/ui/windowMenu.js:139 msgid "Move to Workspace Left" msgstr "移至左方工作區" #: js/ui/windowMenu.js:145 msgid "Move to Workspace Right" msgstr "移至右方工作區" #: js/ui/windowMenu.js:151 msgid "Move to Workspace Up" msgstr "移至上方工作區" #: js/ui/windowMenu.js:157 msgid "Move to Workspace Down" msgstr "移至下方工作區" #: js/ui/windowMenu.js:175 msgid "Move to Monitor Up" msgstr "移至上方顯示器" #: js/ui/windowMenu.js:184 msgid "Move to Monitor Down" msgstr "移至下方顯示器" #: js/ui/windowMenu.js:193 msgid "Move to Monitor Left" msgstr "移至左方顯示器" #: js/ui/windowMenu.js:202 msgid "Move to Monitor Right" msgstr "移至右方顯示器" #: js/ui/windowMenu.js:210 msgid "Close" msgstr "關閉視窗" #: src/main.c:529 subprojects/extensions-tool/src/main.c:336 msgid "Print version" msgstr "輸出版本資訊" #: src/main.c:535 msgid "Mode used by GDM for login screen" msgstr "《GDM》於登入畫面中所使用的模式" #: src/main.c:541 msgid "Use a specific mode, e.g. “gdm” for login screen" msgstr "使用指定的模式,例如「gdm」為登入畫面" #: src/main.c:547 msgid "List possible modes" msgstr "列出可能的模式" #: src/main.c:553 msgid "Force animations to be enabled" msgstr "強制啟用動畫" #: src/shell-app.c:252 msgctxt "program" msgid "Unknown" msgstr "不明" #: src/shell-app.c:503 #, c-format msgid "Failed to launch “%s”" msgstr "無法啟動《%s》" #: src/shell-keyring-prompt.c:764 msgid "Passwords do not match." msgstr "密碼不相符。" #: src/shell-keyring-prompt.c:772 msgid "Password cannot be blank" msgstr "密碼不能為空白" #: src/shell-polkit-authentication-agent.c:344 msgid "Authentication dialog was dismissed by the user" msgstr "身分核對對話框遭使用者關閉" #: src/st/st-icon-theme.c:1865 #, c-format msgid "Icon '%s' not present in theme %s" msgstr "圖示「%s」不存在主題 %s 中" #: src/st/st-icon-theme.c:3454 src/st/st-icon-theme.c:3757 msgid "Failed to load icon" msgstr "無法載入圖示" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6 msgid "Manage your GNOME Extensions" msgstr "管理《GNOME Shell》的擴充套件" #. developer_name tag deprecated with Appstream 1.0 #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:19 msgid "The GNOME Project" msgstr "GNOME 專案" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:51 msgid "" "GNOME Extensions handles updating extensions, configuring extension " "preferences and removing or disabling unwanted extensions." msgstr "" "《GNOME 擴充套件》能管理擴充套件更新、調整擴充套件偏好設定、移除或停用不想用" "的擴充套件等。" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:79 msgid "Main Window" msgstr "主視窗" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:83 msgid "Available Updates" msgstr "可用的更新" #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:87 msgid "Search View" msgstr "搜尋檢視" #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 msgid "Configure GNOME Shell Extensions" msgstr "設定《GNOME Shell》的擴充套件" #: subprojects/extensions-app/js/extensionManager.js:237 #, javascript-format msgid "" "The installed version of this extension (%s) is incompatible with the " "current version of GNOME (%s). The extension has been disabled." msgstr "" "該擴充套件 (%s) 已安裝的版本不相容於目前的 GNOME 版本 (%s)。擴充套件已停用。" #: subprojects/extensions-app/js/extensionManager.js:238 #, javascript-format msgid "" "The installed version of this extension is incompatible with the current " "version of GNOME (%s). The extension has been disabled." msgstr "該擴充套件已安裝的版本不相容於目前的 GNOME 版本 (%s)。擴充套件已停用。" #: subprojects/extensions-app/js/extensionManager.js:242 msgid "" "An error has occurred in this extension. This could cause issues elsewhere " "in the system. It is recommended to turn the extension off until the error " "is resolved." msgstr "" "此擴充套件中發生錯誤。這可能會導致系統其他地方出現問題。建議關閉擴充套件,直" "到錯誤得到解決。" #. translators: Details for an extension error #: subprojects/extensions-app/js/extensionManager.js:248 msgid "Error details:" msgstr "錯誤詳細資訊:" #: subprojects/extensions-app/js/extensionRow.js:82 #, javascript-format msgid "Version %s" msgstr "版本 %s" #: subprojects/extensions-app/js/extensionsWindow.js:113 #, javascript-format msgid "Remove “%s”?" msgstr "移除「%s」?" #: subprojects/extensions-app/js/extensionsWindow.js:114 msgid "" "If you remove the extension, you need to return to download it if you want " "to enable it again" msgstr "若將該擴充套件移除,欲再次啟用必需重新下載" #: subprojects/extensions-app/js/extensionsWindow.js:117 msgid "_Cancel" msgstr "取消(_C)" #: subprojects/extensions-app/js/extensionsWindow.js:118 msgid "_Remove" msgstr "移除(_R)" #: subprojects/extensions-app/js/extensionsWindow.js:158 msgid "translator-credits" msgstr "" "Chao-Hsiung Liao , 2010.\n" "Wei-Lun Chao , 2010.\n" "Cheng-Chia Tseng , 2020-2022, 2023.\n" "Freddy Cheng , 2022." #: subprojects/extensions-app/js/extensionsWindow.js:203 #, javascript-format msgid "%d extension will be updated on next login." msgid_plural "%d extensions will be updated on next login." msgstr[0] "%d 個擴充套件會在下次登入時更新。" #: subprojects/extensions-app/data/ui/extension-row.ui:22 msgid "Error Details" msgstr "錯誤詳細資訊" #: subprojects/extensions-app/data/ui/extension-row.ui:62 msgid "Updates Details" msgstr "更新詳細資訊" #: subprojects/extensions-app/data/ui/extension-row.ui:72 msgid "" "A new version of this extension is ready and will be loaded on next login." msgstr "擴充套件的新版本已備妥,會在下次登入時更新。" #: subprojects/extensions-app/data/ui/extension-row.ui:104 msgid "Extension Details" msgstr "擴充套件詳細資訊" #: subprojects/extensions-app/data/ui/extension-row.ui:192 msgid "_Website" msgstr "網站(_W)" #: subprojects/extensions-app/data/ui/extension-row.ui:219 msgid "_Settings" msgstr "設定(_S)" #: subprojects/extensions-app/data/ui/extension-row.ui:246 msgid "_Remove…" msgstr "移除(_R)…" #: subprojects/extensions-app/data/ui/extensions-window.ui:6 msgid "Keyboard Shortcuts" msgstr "鍵盤快捷鍵" #: subprojects/extensions-app/data/ui/extensions-window.ui:10 msgid "About Extensions" msgstr "關於擴充套件" #: subprojects/extensions-app/data/ui/extensions-window.ui:64 msgid "Main Menu" msgstr "主選單" #: subprojects/extensions-app/data/ui/extensions-window.ui:106 msgid "Search extensions" msgstr "搜尋擴充套件" #: subprojects/extensions-app/data/ui/extensions-window.ui:134 msgid "_Extensions" msgstr "擴充套件(_E)" #: subprojects/extensions-app/data/ui/extensions-window.ui:139 msgid "More Information" msgstr "更多資訊" #: subprojects/extensions-app/data/ui/extensions-window.ui:151 msgid "" "Extensions can cause performance and stability issues. It is recommended to " "disable all extensions if you experience problems with your system." msgstr "" "擴充套件可能導致效能與穩定性問題。若您的系統遭遇問題,則建議停用全部的擴充套" "件。" #: subprojects/extensions-app/data/ui/extensions-window.ui:178 msgid "User Extensions" msgstr "使用者擴充套件" #: subprojects/extensions-app/data/ui/extensions-window.ui:198 msgid "System Extensions" msgstr "系統擴充套件" #: subprojects/extensions-app/data/ui/extensions-window.ui:233 msgid "Search Results" msgstr "搜尋結果" #: subprojects/extensions-app/data/ui/extensions-window.ui:252 msgid "No Results Found" msgstr "找不到結果" #: subprojects/extensions-app/data/ui/extensions-window.ui:253 msgid "Try a different search." msgstr "嘗試不同的搜尋內容。" #: subprojects/extensions-app/data/ui/extensions-window.ui:264 msgid "No Installed Extensions" msgstr "沒有已安裝的擴充套件" #: subprojects/extensions-app/data/ui/extensions-window.ui:265 msgid "" "To find and add extensions, visit extensions.gnome.org." msgstr "" "要尋找並加入擴充套件,可以造訪 extensions.gnome.org。" #: subprojects/extensions-app/data/ui/extensions-window.ui:276 msgid "" "We’re very sorry, but it was not possible to get the list of installed " "extensions. Make sure you are logged into GNOME and try again." msgstr "" "非常抱歉,我們無法取得已安裝的擴充套件列表。請確認您已登入 GNOME 之後並重試看" "看。" #: subprojects/extensions-app/data/ui/help-overlay.ui:9 msgctxt "shortcut window" msgid "General" msgstr "一般" #: subprojects/extensions-app/data/ui/help-overlay.ui:12 msgctxt "shortcut window" msgid "Open Menu" msgstr "開啟選單" #: subprojects/extensions-app/data/ui/help-overlay.ui:18 msgctxt "shortcut window" msgid "Toggle Search" msgstr "切換搜尋" #: subprojects/extensions-app/data/ui/help-overlay.ui:24 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "顯示快捷鍵" #: subprojects/extensions-app/data/ui/help-overlay.ui:30 msgctxt "shortcut window" msgid "Quit" msgstr "退出" #. Translators: a file path to an extension directory #: subprojects/extensions-tool/src/command-create.c:284 #, c-format msgid "The new extension was successfully created in %s.\n" msgstr "成功在「%s」建立新擴充套件。\n" #: subprojects/extensions-tool/src/command-create.c:376 #, c-format msgid "" "Name should be a very short (ideally descriptive) string.\n" "Examples are: %s" msgstr "" "名稱應該要是非常短(理想上是描述性的)的字串。\n" "範例:%s" #: subprojects/extensions-tool/src/command-create.c:382 #: subprojects/extensions-tool/src/main.c:243 msgid "Name" msgstr "名稱" #: subprojects/extensions-tool/src/command-create.c:396 #, c-format msgid "" "Description is a single-sentence explanation of what your extension does.\n" "Examples are: %s" msgstr "" "描述是用於解釋您擴充套件作用的一句話。\n" "範例:%s" #: subprojects/extensions-tool/src/command-create.c:402 #: subprojects/extensions-tool/src/main.c:246 msgid "Description" msgstr "描述" #: subprojects/extensions-tool/src/command-create.c:416 msgid "" "UUID is a globally-unique identifier for your extension.\n" "This should be in the format of an email address (clicktofocus@janedoe." "example.com)\n" msgstr "" "UUID 是您擴充套件的全域唯一識別碼。\n" "格式應該要像電子信箱位址 (clicktofocus@janedoe.example.com)\n" #: subprojects/extensions-tool/src/command-create.c:443 msgid "Choose one of the available templates:\n" msgstr "選擇其中一種可用的模本:\n" #: subprojects/extensions-tool/src/command-create.c:457 msgid "Template" msgstr "模本" #: subprojects/extensions-tool/src/command-create.c:515 msgid "The unique identifier of the new extension" msgstr "新擴充套件的唯一識別碼" #: subprojects/extensions-tool/src/command-create.c:518 msgid "NAME" msgstr "NAME" #: subprojects/extensions-tool/src/command-create.c:519 msgid "The user-visible name of the new extension" msgstr "使用者看得到的新擴充套件名稱" #: subprojects/extensions-tool/src/command-create.c:521 msgid "DESCRIPTION" msgstr "DESCRIPTION" #: subprojects/extensions-tool/src/command-create.c:523 msgid "A short description of what the extension does" msgstr "簡短描述該擴充套件的作用" #: subprojects/extensions-tool/src/command-create.c:525 #: subprojects/extensions-tool/src/command-pack.c:455 msgid "DOMAIN" msgstr "DOMAIN" #: subprojects/extensions-tool/src/command-create.c:527 msgid "The gettext domain used by the extension" msgstr "擴充套件使用的 gettext 屬域" #: subprojects/extensions-tool/src/command-create.c:529 #: subprojects/extensions-tool/src/command-pack.c:448 msgid "SCHEMA" msgstr "SCHEMA" #: subprojects/extensions-tool/src/command-create.c:531 msgid "The GSettings schema used by the extension" msgstr "擴充套件使用的 GSettings 綱要" #: subprojects/extensions-tool/src/command-create.c:534 msgid "TEMPLATE" msgstr "TEMPLATE" #: subprojects/extensions-tool/src/command-create.c:535 msgid "The template to use for the new extension" msgstr "新擴充套件所要使用的模本" #: subprojects/extensions-tool/src/command-create.c:538 msgid "Include prefs.js template" msgstr "納入 prefs.js 模本" #: subprojects/extensions-tool/src/command-create.c:544 msgid "Enter extension information interactively" msgstr "互動式輸入擴充套件資訊" #: subprojects/extensions-tool/src/command-create.c:552 msgid "Create a new extension" msgstr "建立新的擴充套件" #: subprojects/extensions-tool/src/command-create.c:570 #: subprojects/extensions-tool/src/command-list.c:190 msgid "Unknown arguments" msgstr "未知參數" #: subprojects/extensions-tool/src/command-create.c:595 msgid "UUID, name and description are required" msgstr "UUID、名稱及描述皆為必填" #: subprojects/extensions-tool/src/command-disable.c:62 #: subprojects/extensions-tool/src/command-enable.c:62 #, c-format msgid "Extension “%s” does not exist\n" msgstr "「%s」擴充套件不存在\n" #: subprojects/extensions-tool/src/command-disable.c:98 msgid "Disable an extension" msgstr "停用擴充套件" #: subprojects/extensions-tool/src/command-disable.c:116 #: subprojects/extensions-tool/src/command-enable.c:116 #: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-prefs.c:105 #: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-uninstall.c:104 msgid "No UUID given" msgstr "未提供 UUID" #: subprojects/extensions-tool/src/command-disable.c:121 #: subprojects/extensions-tool/src/command-enable.c:121 #: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-prefs.c:110 #: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-uninstall.c:109 msgid "More than one UUID given" msgstr "提供多於一個 UUID" #: subprojects/extensions-tool/src/command-enable.c:98 msgid "Enable an extension" msgstr "啟用擴充套件" #: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-list.c:66 #: subprojects/extensions-tool/src/main.c:150 msgid "Failed to connect to GNOME Shell\n" msgstr "無法連接至《GNOME Shell》\n" #: subprojects/extensions-tool/src/command-info.c:59 #: subprojects/extensions-tool/src/main.c:159 #, c-format msgid "Extension “%s” doesn't exist\n" msgstr "「%s」擴充套件不存在\n" #: subprojects/extensions-tool/src/command-info.c:85 msgid "Show extensions info" msgstr "顯示擴充套件資訊" #: subprojects/extensions-tool/src/command-install.c:190 msgid "Overwrite an existing extension" msgstr "覆蓋既存的擴充套件" #: subprojects/extensions-tool/src/command-install.c:192 msgid "EXTENSION_BUNDLE" msgstr "EXTENSION_BUNDLE" #: subprojects/extensions-tool/src/command-install.c:201 msgid "Install an extension bundle" msgstr "安裝擴充套件組合" #: subprojects/extensions-tool/src/command-install.c:219 msgid "No extension bundle specified" msgstr "未指定擴充套件組合" #: subprojects/extensions-tool/src/command-install.c:225 msgid "More than one extension bundle specified" msgstr "指定多於一個擴充套件組合" #: subprojects/extensions-tool/src/command-list.c:140 msgid "Show user-installed extensions" msgstr "顯示使用者安裝的擴充套件" #: subprojects/extensions-tool/src/command-list.c:143 msgid "Show system-installed extensions" msgstr "顯示系統安裝的擴充套件" #: subprojects/extensions-tool/src/command-list.c:146 msgid "Show enabled extensions" msgstr "顯示啟用的擴充套件" #: subprojects/extensions-tool/src/command-list.c:149 msgid "Show disabled extensions" msgstr "顯示停用的擴充套件" #: subprojects/extensions-tool/src/command-list.c:152 msgid "Show extensions in active state" msgstr "顯示作用中的擴充套件" #: subprojects/extensions-tool/src/command-list.c:155 msgid "Show extensions in inactive state" msgstr "顯示未使用的擴充套件" #: subprojects/extensions-tool/src/command-list.c:158 msgid "Show extensions with preferences" msgstr "顯示具有偏好設定的擴充套件" #: subprojects/extensions-tool/src/command-list.c:161 msgid "Show extensions with updates" msgstr "顯示有更新的擴充套件" #: subprojects/extensions-tool/src/command-list.c:164 msgid "Print extension details" msgstr "輸出擴充套件的詳細資訊" #: subprojects/extensions-tool/src/command-list.c:172 msgid "List installed extensions" msgstr "列出已安裝的擴充套件" #: subprojects/extensions-tool/src/command-pack.c:444 msgid "FILE" msgstr "FILE" #: subprojects/extensions-tool/src/command-pack.c:445 msgid "Additional source to include in the bundle" msgstr "要加入至擴充套件組合的其他來源" #: subprojects/extensions-tool/src/command-pack.c:449 msgid "A GSettings schema that should be included" msgstr "應包含的 GSettings 基模" #: subprojects/extensions-tool/src/command-pack.c:451 #: subprojects/extensions-tool/src/command-pack.c:462 msgid "DIRECTORY" msgstr "DIRECTORY" #: subprojects/extensions-tool/src/command-pack.c:453 msgid "The directory where translations are found" msgstr "含有翻譯檔目錄" #: subprojects/extensions-tool/src/command-pack.c:457 msgid "The gettext domain to use for translations" msgstr "用於翻譯的 gettext 域名" #: subprojects/extensions-tool/src/command-pack.c:460 msgid "Overwrite an existing pack" msgstr "覆蓋既存的套件" #: subprojects/extensions-tool/src/command-pack.c:464 msgid "The directory where the pack should be created" msgstr "應建立套件的目錄" #: subprojects/extensions-tool/src/command-pack.c:466 msgid "SOURCE_DIRECTORY" msgstr "SOURCE_DIRECTORY" #: subprojects/extensions-tool/src/command-pack.c:475 msgid "Create an extension bundle" msgstr "建立擴充套件組合" #: subprojects/extensions-tool/src/command-pack.c:495 msgid "More than one source directory specified" msgstr "指定多於一個來源目錄" #: subprojects/extensions-tool/src/command-prefs.c:47 #, c-format msgid "Extension “%s” doesn't have preferences\n" msgstr "「%s」擴充套件沒有偏好設定\n" #: subprojects/extensions-tool/src/command-prefs.c:62 #, c-format msgid "Failed to open prefs for extension “%s”: %s\n" msgstr "無法開啟「%s」擴充套件的偏好設定:%s\n" #: subprojects/extensions-tool/src/command-prefs.c:87 msgid "Opens extension preferences" msgstr "開啟擴充套件的偏好設定" #: subprojects/extensions-tool/src/command-reset.c:58 msgid "Reset an extension" msgstr "重設擴充套件" #: subprojects/extensions-tool/src/command-uninstall.c:49 msgid "Cannot uninstall system extensions\n" msgstr "無法解除安裝系統的擴充套件\n" #: subprojects/extensions-tool/src/command-uninstall.c:64 #, c-format msgid "Failed to uninstall “%s”\n" msgstr "無法解除安裝「%s」\n" #: subprojects/extensions-tool/src/command-uninstall.c:86 msgid "Uninstall an extension" msgstr "解除安裝擴充套件" #: subprojects/extensions-tool/src/main.c:76 msgid "Do not print error messages" msgstr "不要輸出錯誤訊息" #: subprojects/extensions-tool/src/main.c:249 msgid "Path" msgstr "路徑" #: subprojects/extensions-tool/src/main.c:252 msgid "URL" msgstr "網址" #: subprojects/extensions-tool/src/main.c:255 msgid "Original author" msgstr "原始作者" #: subprojects/extensions-tool/src/main.c:261 #: subprojects/extensions-tool/src/main.c:263 #: subprojects/extensions-tool/src/main.c:265 msgid "Version" msgstr "版本" #: subprojects/extensions-tool/src/main.c:268 msgid "Enabled" msgstr "已啟用" #: subprojects/extensions-tool/src/main.c:268 msgid "Yes" msgstr "是" #: subprojects/extensions-tool/src/main.c:268 msgid "No" msgstr "否" #: subprojects/extensions-tool/src/main.c:271 msgid "State" msgstr "狀態" #: subprojects/extensions-tool/src/main.c:309 msgid "“version” takes no arguments" msgstr "「版本」沒有參數" #: subprojects/extensions-tool/src/main.c:311 #: subprojects/extensions-tool/src/main.c:331 msgid "Usage:" msgstr "用法:" #: subprojects/extensions-tool/src/main.c:314 msgid "Print version information and exit." msgstr "輸出版本資訊並離開。" #: subprojects/extensions-tool/src/main.c:329 #: subprojects/extensions-tool/src/main.c:332 msgid "COMMAND" msgstr "命令" #: subprojects/extensions-tool/src/main.c:332 msgid "[ARGS…]" msgstr "[參數…]" #: subprojects/extensions-tool/src/main.c:334 msgid "Commands:" msgstr "命令:" #: subprojects/extensions-tool/src/main.c:335 msgid "Print help" msgstr "輸出說明" #: subprojects/extensions-tool/src/main.c:337 msgid "Enable extension" msgstr "啟用擴充套件" #: subprojects/extensions-tool/src/main.c:338 msgid "Disable extension" msgstr "停用擴充套件" #: subprojects/extensions-tool/src/main.c:339 msgid "Reset extension" msgstr "重設擴充套件" #: subprojects/extensions-tool/src/main.c:340 msgid "Uninstall extension" msgstr "解除安裝擴充套件" #: subprojects/extensions-tool/src/main.c:341 msgid "List extensions" msgstr "列出擴充套件" #: subprojects/extensions-tool/src/main.c:342 #: subprojects/extensions-tool/src/main.c:343 msgid "Show extension info" msgstr "顯示擴充套件資訊" #: subprojects/extensions-tool/src/main.c:344 msgid "Open extension preferences" msgstr "開啟擴充套件的偏好設定" #: subprojects/extensions-tool/src/main.c:345 msgid "Create extension" msgstr "建立擴充套件" #: subprojects/extensions-tool/src/main.c:346 msgid "Package extension" msgstr "打包擴充套件" #: subprojects/extensions-tool/src/main.c:347 msgid "Install extension bundle" msgstr "安裝擴充套件組合" #: subprojects/extensions-tool/src/main.c:349 #, c-format msgid "Use “%s” to get detailed help.\n" msgstr "使用「%s」以取得詳細說明。\n" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:4 msgid "Plain" msgstr "空白" #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 msgid "An empty extension" msgstr "空白的擴充套件" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:4 msgid "Indicator" msgstr "指示器" #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 msgid "Add an icon to the top bar" msgstr "在頂端列加入一個圖示" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:4 msgid "Quick Settings Item" msgstr "快速設定項目" #: subprojects/extensions-tool/src/templates/quick-settings.desktop.in:5 msgid "Add an item to quick settings" msgstr "將項目加入快速設定" #. translators: #. * The device has been disabled #: subprojects/gvc/gvc-mixer-control.c:1872 msgid "Disabled" msgstr "已停用" #. translators: #. * The number of sound outputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1879 #, c-format msgid "%u Output" msgid_plural "%u Outputs" msgstr[0] "%u 個輸出" #. translators: #. * The number of sound inputs on a particular device #: subprojects/gvc/gvc-mixer-control.c:1889 #, c-format msgid "%u Input" msgid_plural "%u Inputs" msgstr[0] "%u 個輸入" #: subprojects/gvc/gvc-mixer-control.c:2872 msgid "System Sounds" msgstr "系統音效" #, javascript-format #~ msgid "%s is now known as %s" #~ msgstr "《%s》現為《%s》" #~ msgid "Network Manager" #~ msgstr "網路管理員" #~ msgid "Disabling" #~ msgstr "正在停用" #~ msgid "Enabling" #~ msgstr "正在啟用" #~ msgid "Thunderbolt" #~ msgstr "Thunderbolt" #~ msgid "No Thanks" #~ msgstr "謝謝不用" #~ msgid "No Matches" #~ msgstr "沒有相符的項目" #~ msgid "The extension had an error" #~ msgstr "該擴充套件存在錯誤" #~ msgid "The extension can be updated" #~ msgstr "該擴充套件已可更新" #~ msgid "Help" #~ msgstr "求助" #~ msgid "Manually Installed" #~ msgstr "手動安裝的擴充套件" #~ msgid "Built-In" #~ msgstr "內建的擴充套件" #~ msgid "Extension Updates Ready" #~ msgstr "擴充套件更新已準備就緒" #~ msgid "Screenshot / Screencast" #~ msgstr "螢幕快照/螢幕錄影" #~ msgid "Power Profiles" #~ msgstr "電源設定檔" #, javascript-format #~ msgid "%d %%" #~ msgstr "%d %%" #~ msgid "Attach modal dialog to the parent window" #~ msgstr "將模態對話框附加至上層視窗" #~ msgid "" #~ "This key overrides the key in org.gnome.mutter when running GNOME Shell." #~ msgstr "該設定鍵會在《GNOME Shell》執行時覆寫 org.gnome.mutter 中的設定鍵。" #~ msgid "Enable edge tiling when dropping windows on screen edges" #~ msgstr "在螢幕邊緣放下視窗時啟用邊緣拼貼" #~ msgid "Workspaces are managed dynamically" #~ msgstr "以動態方式管理工作區" #~ msgid "Workspaces only on primary monitor" #~ msgstr "只在主螢幕上使用工作區" #~ msgid "Delay focus changes in mouse mode until the pointer stops moving" #~ msgstr "在滑鼠模式中延遲焦點更改直到滑鼠指標停止移動" #~ msgid "Region & Language Settings" #~ msgstr "地區和語言設定" #~ msgid "Applications" #~ msgstr "應用程式" #, javascript-format #~ msgid "Unable to start %s" #~ msgstr "無法啟動《%s》" #, javascript-format #~ msgid "Couldn’t find the %s application" #~ msgstr "找不到應用程式《%s》" #~ msgid "Evolution Calendar" #~ msgstr "《Evolution》行事曆" #~ msgid "" #~ "Whether the default Bluetooth adapter had set up devices associated to it" #~ msgstr "預設的藍牙配接器是否已經與裝置完成配對" #~ msgid "" #~ "The shell will only show a Bluetooth menu item if a Bluetooth adapter is " #~ "powered, or if there were devices set up associated with the default " #~ "adapter. This will be reset if the default adapter is ever seen not to " #~ "have devices associated to it." #~ msgstr "" #~ "《GNOME Shell》只會在藍牙配接器啟動或在有裝置已與預設配接器配對時,才會顯" #~ "示選單的藍牙項目。若預設的配接器尚未與裝置配對則會重設此選項。" #~ msgid "Log Out" #~ msgstr "登出" #, javascript-format #~ msgid "%s Off" #~ msgstr "%s已關閉" #, javascript-format #~ msgid "%s Connected" #~ msgstr "%s已連接" #, javascript-format #~ msgid "%s Unmanaged" #~ msgstr "%s不受管理" #, javascript-format #~ msgid "%s Disconnecting" #~ msgstr "正在中斷%s連接" #, javascript-format #~ msgid "%s Connecting" #~ msgstr "正在連接%s" #, javascript-format #~ msgid "%s Requires Authentication" #~ msgstr "%s要求核對身分" #, javascript-format #~ msgid "Firmware Missing For %s" #~ msgstr "%s缺少韌體" #, javascript-format #~ msgid "%s Unavailable" #~ msgstr "%s無法使用" #, javascript-format #~ msgid "%s Connection Failed" #~ msgstr "%s無法連接" #, javascript-format #~ msgid "%s Hardware Disabled" #~ msgstr "%s硬體已停用" #, javascript-format #~ msgid "%s Disabled" #~ msgstr "%s已停用" #~ msgid "Connect to Internet" #~ msgstr "連接網際網路" #~ msgid "Airplane Mode is On" #~ msgstr "飛安模式已開啟" #~ msgid "Wi-Fi is disabled when airplane mode is on." #~ msgstr "飛安模式開啟時會停用 Wi-Fi。" #~ msgid "Turn Off Airplane Mode" #~ msgstr "關閉飛安模式" #~ msgid "Wi-Fi is Off" #~ msgstr "Wi-Fi 已關閉" #~ msgid "Wi-Fi needs to be turned on in order to connect to a network." #~ msgstr "需將 Wi-Fi 開啟才能連接網路。" #~ msgid "Turn On Wi-Fi" #~ msgstr "開啟 Wi-Fi" #~ msgid "Wi-Fi Networks" #~ msgstr "Wi-Fi 網路" #~ msgid "Select a network" #~ msgstr "選擇一個網路" #~ msgid "Use hardware switch to turn off" #~ msgstr "使用硬體開關來關閉" #~ msgid "Select Network" #~ msgstr "選擇網路" #~ msgid "Wi-Fi Settings" #~ msgstr "Wi-Fi 設定值" #, javascript-format #~ msgid "%s Not Connected" #~ msgstr "%s未連接" #~ msgid "unknown" #~ msgstr "不明" #~ msgid "connecting…" #~ msgstr "正在連接…" #~ msgid "authentication required" #~ msgstr "要求核對身分" #~ msgid "connection failed" #~ msgstr "連接失敗" #~ msgid "VPN Off" #~ msgstr "VPN 關閉" #, javascript-format #~ msgid "%s Wi-Fi Connection" #~ msgid_plural "%s Wi-Fi Connections" #~ msgstr[0] "%s 個 Wi-Fi 連接" #~ msgid "Lock" #~ msgstr "鎖定" #~ msgid "Power Off / Log Out" #~ msgstr "關閉電源/登出" #~ msgid "Bluetooth On" #~ msgstr "藍牙已開啟" #~ msgid "Bluetooth Off" #~ msgstr "藍牙已關閉" #~ msgid "Location In Use" #~ msgstr "位置資訊使用中" #~ msgid "Location Disabled" #~ msgstr "定位服務已停用" #~ msgid "Night Light Disabled" #~ msgstr "夜光模式已停用" #~ msgid "Resume" #~ msgstr "繼續" #~ msgid "Disable Until Tomorrow" #~ msgstr "停用至明天" #~ msgid "Fully Charged" #~ msgstr "已充飽" #~ msgid "Not Charging" #~ msgstr "未充電" #~ msgid "Estimating…" #~ msgstr "正在評估…" #, javascript-format #~ msgid "%d∶%02d Remaining (%d %%)" #~ msgstr "還能使用 %d∶%02d (%d%%)" #, javascript-format #~ msgid "%d∶%02d Until Full (%d %%)" #~ msgstr "充飽仍需 %d∶%02d (%d%%)" #~ msgid "Screen is Being Shared" #~ msgstr "正在分享螢幕" #~ msgid "Turn off" #~ msgstr "關閉" #~ msgid "Airplane Mode On" #~ msgstr "飛安模式已開啟" #~ msgid "Enable introspection API" #~ msgstr "啟用審視 API" #~ msgid "" #~ "Enables a D-Bus API that allows to introspect the application state of " #~ "the shell." #~ msgstr "啟用允許審視 Shell 應用程式狀態的 D-Bus API。" #~ msgid "Remove from Favorites" #~ msgstr "自喜好中移除" #~ msgid "Add to Favorites" #~ msgstr "加入喜好" #~ msgid "Minimize" #~ msgstr "最小化" #~ msgid "Unmaximize" #~ msgstr "取消最大化" #~ msgid "Author" #~ msgstr "作者" #~ msgid "Warning" #~ msgstr "警告" #~ msgid "" #~ "Extensions can cause system issues, including performance problems. If " #~ "you encounter problems with your system, it is recommended to disable all " #~ "extensions." #~ msgstr "" #~ "擴充套件可能會造成系統問題,包含效能問題。如果您遇到系統問題,建議您先停用" #~ "所有的擴充套件。" #~ msgid "Failed to connect to GNOME Shell" #~ msgstr "無法連接至 GNOME Shell" #~ msgid "App Picker View" #~ msgstr "程式挑選器檢視" #~ msgid "Index of the currently selected view in the application picker." #~ msgstr "應用程式挑選器中目前選取檢視的索引。" #~ msgid "Frequently used applications will appear here" #~ msgstr "經常使用的應用程式會出現在這裡" #~ msgid "Frequent" #~ msgstr "常用" #~ msgid "All" #~ msgstr "全部" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d" #~ msgstr "%b%-d日%A" #~ msgctxt "calendar heading" #~ msgid "%A, %B %-d, %Y" #~ msgstr "%Y年%b%-d日%A" #~ msgid "On" #~ msgstr "開啟" #~ msgid "Copy Error" #~ msgstr "複製錯誤" #~ msgid "Browse in Software" #~ msgstr "在《軟體》中瀏覽" #~ msgid "Next" #~ msgstr "下一個" #~ msgctxt "button" #~ msgid "Sign In" #~ msgstr "登入" #~ msgctxt "search-result" #~ msgid "Lock Orientation" #~ msgstr "鎖定方向" #~ msgid "Rename" #~ msgstr "重新命名" #~ msgid "Password:" #~ msgstr "密碼: " #~ msgid "Type again:" #~ msgstr "再輸入一次:" #~ msgid "Password: " #~ msgstr "密碼: " #~ msgid "Authentication required by wireless network" #~ msgstr "無線網路所需要的核對" #~ msgid "Mobile broadband network password" #~ msgstr "行動寬頻網路密碼" #~ msgid "%A, %B %d" #~ msgstr "%b%d日%A" #~ msgid "%d new message" #~ msgid_plural "%d new messages" #~ msgstr[0] "%d 個新訊息" #~ msgid "" #~ "Keybinding that pauses and resumes all running tweens, for debugging " #~ "purposes" #~ msgstr "暫停與恢復執行中重複項的組合鍵,用於除錯用途" #~ msgid "Which keyboard to use" #~ msgstr "要使用哪種鍵盤" #~ msgid "The type of keyboard to use." #~ msgstr "要使用的鍵盤類型。" #~ msgid "toggle-switch-us" #~ msgstr "toggle-switch-us" #~ msgid "Account Settings" #~ msgstr "帳號設定值" #~ msgid "Orientation Lock" #~ msgstr "方向鎖" #~ msgid "network-workgroup" #~ msgstr "network-workgroup" #~ msgid "There was an error loading the preferences dialog for %s:" #~ msgstr "載入 %s 的偏好設定對話盒時發生錯誤:" #~ msgid "%s all day." #~ msgstr "全天%s。" #~ msgid "%s, then %s later." #~ msgstr "%s,較晚%s。" #~ msgid "%s, then %s, followed by %s later." #~ msgstr "%s,然後%s,接著較晚%s。" #~ msgid "Feels like %s." #~ msgstr "體感溫度 %s。" #~ msgctxt "search-result" #~ msgid "Log out" #~ msgstr "登出" #~ msgctxt "search-result" #~ msgid "Switch user" #~ msgstr "切換使用者" #~ msgid "Hide tray" #~ msgstr "隱藏系統匣" #~ msgid "Status Icons" #~ msgstr "狀態圖示" #~ msgid "Events" #~ msgstr "行程" #~ msgid "Media" #~ msgstr "媒體" #~ msgid "Web Authentication Redirect" #~ msgstr "網頁核對重新導向" #~ msgid "connecting..." #~ msgstr "連線中…" #~ msgid "%d x %d" #~ msgstr "%d x %d" #~ msgid "Not In Use" #~ msgstr "未被使用" #~ msgid "Show the week date in the calendar" #~ msgstr "在日曆中顯示週數" #~ msgid "If true, display the ISO week date in the calendar." #~ msgstr "如果設為 true,在日曆中顯示 ISO 週數。" #~ msgid "Use as Internet connection" #~ msgstr "作為網際網路連線" #~ msgid "%s is requesting access to your location." #~ msgstr "%s 要求存取您的位置。" #~ msgid "GNOME Shell (wayland compositor)" #~ msgstr "GNOME Shell (wayland 組合器)" #~ msgid "%d Connected Device" #~ msgid_plural "%d Connected Devices" #~ msgstr[0] "%d 已連線的裝置" #~ msgid "In Use" #~ msgstr "使用中" #~ msgid "Connected" #~ msgstr "已連線" #~ msgid "Unmanaged" #~ msgstr "未管理" #~ msgid "Firmware missing" #~ msgstr "缺少韌體" #~ msgid "Unavailable" #~ msgstr "無法使用" #~ msgid "Hardware Disabled" #~ msgstr "硬體已停用" #~ msgid "UPS" #~ msgstr "UPS" #~ msgid "Battery" #~ msgstr "電池" #~ msgid "Show the message list" #~ msgstr "顯示訊息清單" #~ msgctxt "event list time" #~ msgid "%H∶%M" #~ msgstr "%H∶%M" #~ msgctxt "event list time" #~ msgid "%l∶%M %p" #~ msgstr "%p %l∶%M" #~ msgid "Invitation" #~ msgstr "邀請" #~ msgid "Call" #~ msgstr "通話" #~ msgid "File Transfer" #~ msgstr "檔案傳輸程式" #~ msgid "Chat" #~ msgstr "聊天" #~ msgid "Invitation to %s" #~ msgstr "邀請加入 %s" #~ msgid "%s is inviting you to join %s" #~ msgstr "%s 正在邀請您加入 %s" #~ msgid "Decline" #~ msgstr "拒絕" #~ msgid "Accept" #~ msgstr "接受" #~ msgid "Video call from %s" #~ msgstr "來自 %s 的視訊電話" #~ msgid "Call from %s" #~ msgstr "%s 來電" #~ msgid "Answer" #~ msgstr "接聽" #~ msgid "%s is sending you %s" #~ msgstr "%s 正傳送給您 %s" #~ msgid "%s would like permission to see when you are online" #~ msgstr "%s 想要得到查看您上線狀態的許可" #~ msgid "Authentication failed" #~ msgstr "核對失敗" #~ msgid "Encryption error" #~ msgstr "加密發生錯誤" #~ msgid "Certificate not provided" #~ msgstr "沒有提供憑證" #~ msgid "Certificate untrusted" #~ msgstr "憑證不被信任" #~ msgid "Certificate expired" #~ msgstr "憑證已逾期" #~ msgid "Certificate not activated" #~ msgstr "憑證尚未使用" #~ msgid "Certificate hostname mismatch" #~ msgstr "憑證主機名稱不符" #~ msgid "Certificate fingerprint mismatch" #~ msgstr "憑證數位指紋不符" #~ msgid "Certificate self-signed" #~ msgstr "憑證為自我簽署" #~ msgid "Status is set to offline" #~ msgstr "狀態設為離線" #~ msgid "Certificate is invalid" #~ msgstr "憑證無效" #~ msgid "Connection has been refused" #~ msgstr "連線遭到拒絕" #~ msgid "Connection can't be established" #~ msgstr "無法建立連線" #~ msgid "Connection has been lost" #~ msgstr "已失去連線" #~ msgid "This account is already connected to the server" #~ msgstr "這個帳號已連接至該伺服器" #~ msgid "" #~ "Connection has been replaced by a new connection using the same resource" #~ msgstr "連線已被使用相同資源的新連線取代" #~ msgid "The account already exists on the server" #~ msgstr "該帳號已經存在於伺服器上" #~ msgid "Server is currently too busy to handle the connection" #~ msgstr "伺服器目前過於忙碌以致於無法處理該連線" #~ msgid "Certificate has been revoked" #~ msgstr "憑證已被撤銷" #~ msgid "" #~ "Certificate uses an insecure cipher algorithm or is cryptographically weak" #~ msgstr "憑證使用不安全的密碼演算法,或是密碼處理上較弱" #~ msgid "" #~ "The length of the server certificate, or the depth of the server " #~ "certificate chain, exceed the limits imposed by the cryptography library" #~ msgstr "" #~ "伺服器憑證的長度,或是伺服器憑證鏈的深度超過密碼函式庫所能處理的範圍" #~ msgid "Internal error" #~ msgstr "內部的錯誤" #~ msgid "View account" #~ msgstr "檢視帳號" #~ msgctxt "list sunday" #~ msgid "Su" #~ msgstr "日" #~ msgctxt "list monday" #~ msgid "M" #~ msgstr "一" #~ msgctxt "list tuesday" #~ msgid "T" #~ msgstr "二" #~ msgctxt "list wednesday" #~ msgid "W" #~ msgstr "三" #~ msgctxt "list thursday" #~ msgid "Th" #~ msgstr "四" #~ msgctxt "list friday" #~ msgid "F" #~ msgstr "五" #~ msgctxt "list saturday" #~ msgid "S" #~ msgstr "六" #~ msgid "Nothing Scheduled" #~ msgstr "沒有預訂行程" #~ msgid "This week" #~ msgstr "本週" #~ msgid "Next week" #~ msgstr "下週" #~ msgid "Removable Devices" #~ msgstr "可移除式裝置" #~ msgid "Eject" #~ msgstr "退出" #~ msgid "Open" #~ msgstr "開啟" #~ msgid "Clear Messages" #~ msgstr "清除訊息" #~ msgid "Notification Settings" #~ msgstr "通知設定值" #~ msgid "No Messages" #~ msgstr "沒有訊息" #~ msgid "Message Tray" #~ msgstr "訊息匣" #~ msgid "Captive Portal" #~ msgstr "網頁入口管制" #~ msgid "The maximum accuracy level of location." #~ msgstr "地理位置的最高精確等級。" #~ msgid "" #~ "Configures the maximum level of location accuracy applications are " #~ "allowed to see. Valid options are 'off' (disable location tracking), " #~ "'country', 'city', 'neighborhood', 'street', and 'exact' (typically " #~ "requires GPS receiver). Please keep in mind that this only controls what " #~ "GeoClue will allow applications to see and they can find user's location " #~ "on their own using network resources (albeit with street-level accuracy " #~ "at best)." #~ msgstr "" #~ "設定應用程式可查看的地理位置最高精確等級。有效的選項為「off」(停用地理位置" #~ "追蹤)、「country」(國家)、「city」(縣市)、「neiborhood」(鄰里)、「street」" #~ "(街路)、「exact」(一般需要 GPS 接收器)。請務必記住這只能控制 GeoClue 所允" #~ "許應用程式查看的等級,而程式可自行使用本身的網路資源尋找使用者的所在位置 " #~ "(雖然精確度最高只能到達街路等級)。" #~ msgid "Arrangement of buttons on the titlebar" #~ msgstr "標題列上的按鈕排列" #~ msgid "" #~ "This key overrides the key in org.gnome.desktop.wm.preferences when " #~ "running GNOME Shell." #~ msgstr "" #~ "這個設定鍵會在執行 GNOME Shell 時覆蓋 org.gnome.desktop.wm.preferences 中" #~ "的設定鍵。" #~ msgid "Select an extension to configure using the combobox above." #~ msgstr "使用上面的組合方塊選擇要設定的擴充功能。" #~ msgid "calendar:MY" #~ msgstr "calendar:MY" #~ msgid "%A, %H:%M" #~ msgstr "%A%H:%M" #~ msgid "%B %d, %H:%M" #~ msgstr "%m月%d日%H:%M" #~ msgid "%B %d %Y, %H:%M " #~ msgstr "%Y年%m月%d日%H:%M " #~ msgid "List of categories that should be displayed as folders" #~ msgstr "要顯示為資料夾的分類清單" #~ msgid "" #~ "Each category name in this list will be represented as folder in the " #~ "application view, rather than being displayed inline in the main view." #~ msgstr "" #~ "這個清單中的每個分類名稱都會在應用程式檢視中以資料夾表示,而不是在主要檢視" #~ "中直接顯示。" #~ msgid "Authorization request from %s" #~ msgstr "來自「%s」的核對要求" #~ msgid "Device %s wants to pair with this computer" #~ msgstr "裝置 %s 想要和這個電腦配對" #~ msgid "Device %s wants access to the service '%s'" #~ msgstr "裝置 %s 想要存取服務「%s」" #~ msgid "Grant this time only" #~ msgstr "只有這次准許" #~ msgid "Reject" #~ msgstr "拒絕" #~ msgid "Pairing confirmation for %s" #~ msgstr "%s 的配對確認" #~ msgid "" #~ "Please confirm whether the Passkey '%06d' matches the one on the device." #~ msgstr "請確認通行碼「%06d」是否和裝置上的相符。" #~ msgid "Does not match" #~ msgstr "不相符" #~ msgid "Pairing request for %s" #~ msgstr "%s 的配對請求" #~ msgid "Please enter the PIN mentioned on the device." #~ msgstr "請輸入裝置所提及的 PIN。" #~ msgid "OK" #~ msgstr "確定" #~ msgid "" #~ "Sorry, no wisdom for you today:\n" #~ "%s" #~ msgstr "" #~ "抱歉,今天可能有些問題:\n" #~ "%s" #~ msgid "%s the Oracle says" #~ msgstr "%s Oracle 說:" #~ msgctxt "event list time" #~ msgid "%H\\u2236%M" #~ msgstr "%H\\u2236%M" #~ msgctxt "event list time" #~ msgid "%l\\u2236%M\\u2009%p" #~ msgstr "%l\\u2236%M\\u2009%p" 07070100000270000041ED0000000000000000000000026712993F00000000000000000000000000000000000000000000001500000000gnome-shell-47.1/src07070100000271000041ED0000000000000000000000026712993F00000000000000000000000000000000000000000000002500000000gnome-shell-47.1/src/calendar-server07070100000272000081A40000000000000000000000016712993F00000026000000000000000000000000000000000000002C00000000gnome-shell-47.1/src/calendar-server/READMEPlease keep in sync with gnome-panel. 07070100000273000081A40000000000000000000000016712993F000004DE000000000000000000000000000000000000003600000000gnome-shell-47.1/src/calendar-server/calendar-debug.h/* * Copyright (C) 2004 Free Software Foundation, Inc. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see . * * Authors: * Mark McLoughlin */ #pragma once #include G_BEGIN_DECLS #ifdef CALENDAR_ENABLE_DEBUG #include #ifdef G_HAVE_ISO_VARARGS # define dprintf(...) fprintf (stderr, __VA_ARGS__); #elif defined(G_HAVE_GNUC_VARARGS) # define dprintf(args...) fprintf (stderr, args); #endif #else /* if !defined (CALENDAR_DEBUG) */ #ifdef G_HAVE_ISO_VARARGS # define dprintf(...) #elif defined(G_HAVE_GNUC_VARARGS) # define dprintf(args...) #endif #endif /* CALENDAR_ENABLE_DEBUG */ G_END_DECLS 07070100000274000081A40000000000000000000000016712993F00003C51000000000000000000000000000000000000003800000000gnome-shell-47.1/src/calendar-server/calendar-sources.c/* * Copyright (C) 2004 Free Software Foundation, Inc. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see . * * Authors: * Mark McLoughlin * William Jon McCann * Martin Grimme * Christian Kellner */ #include #include "calendar-sources.h" #include #include #define HANDLE_LIBICAL_MEMORY #define EDS_DISABLE_DEPRECATED G_GNUC_BEGIN_IGNORE_DEPRECATIONS #include G_GNUC_END_IGNORE_DEPRECATIONS #undef CALENDAR_ENABLE_DEBUG #include "calendar-debug.h" typedef struct _ClientData ClientData; typedef struct _CalendarSourceData CalendarSourceData; struct _ClientData { ECalClient *client; gulong backend_died_id; }; typedef struct _CalendarSourcesPrivate CalendarSourcesPrivate; struct _CalendarSources { GObject parent; ESourceRegistryWatcher *registry_watcher; gulong filter_id; gulong appeared_id; gulong disappeared_id; GMutex clients_lock; GHashTable *clients; /* ESource -> ClientData */ }; G_DEFINE_TYPE (CalendarSources, calendar_sources, G_TYPE_OBJECT) enum { CLIENT_APPEARED, CLIENT_DISAPPEARED, LAST_SIGNAL }; static guint signals [LAST_SIGNAL] = { 0, }; static void calendar_sources_client_connected_cb (GObject *source_object, GAsyncResult *result, gpointer user_data) { CalendarSources *sources = CALENDAR_SOURCES (source_object); ESource *source = user_data; EClient *client; g_autoptr (GError) error = NULL; /* The calendar_sources_connect_client_sync() already stored the 'client' * into the sources->clients */ client = calendar_sources_connect_client_finish (sources, result, &error); if (error) { g_warning ("Could not load source '%s': %s", e_source_get_uid (source), error->message); } else { g_signal_emit (sources, signals[CLIENT_APPEARED], 0, client, NULL); } g_clear_object (&client); g_clear_object (&source); } static gboolean registry_watcher_filter_cb (ESourceRegistryWatcher *watcher, ESource *source, CalendarSources *sources) { return e_source_has_extension (source, E_SOURCE_EXTENSION_CALENDAR) && e_source_selectable_get_selected (e_source_get_extension (source, E_SOURCE_EXTENSION_CALENDAR)); } static void registry_watcher_source_appeared_cb (ESourceRegistryWatcher *watcher, ESource *source, CalendarSources *sources) { ECalClientSourceType source_type; if (e_source_has_extension (source, E_SOURCE_EXTENSION_CALENDAR)) source_type = E_CAL_CLIENT_SOURCE_TYPE_EVENTS; else if (e_source_has_extension (source, E_SOURCE_EXTENSION_MEMO_LIST)) source_type = E_CAL_CLIENT_SOURCE_TYPE_MEMOS; else if (e_source_has_extension (source, E_SOURCE_EXTENSION_TASK_LIST)) source_type = E_CAL_CLIENT_SOURCE_TYPE_TASKS; else g_return_if_reached (); calendar_sources_connect_client (sources, source, source_type, 30, NULL, calendar_sources_client_connected_cb, g_object_ref (source)); } static void registry_watcher_source_disappeared_cb (ESourceRegistryWatcher *watcher, ESource *source, CalendarSources *sources) { gboolean emit; g_mutex_lock (&sources->clients_lock); emit = g_hash_table_remove (sources->clients, source); g_mutex_unlock (&sources->clients_lock); if (emit) g_signal_emit (sources, signals[CLIENT_DISAPPEARED], 0, e_source_get_uid (source), NULL); } static void client_data_free (ClientData *data) { g_signal_handler_disconnect (data->client, data->backend_died_id); g_object_unref (data->client); g_free (data); } static void calendar_sources_constructed (GObject *object) { CalendarSources *sources = CALENDAR_SOURCES (object); ESourceRegistry *registry = NULL; GError *error = NULL; G_OBJECT_CLASS (calendar_sources_parent_class)->constructed (object); registry = e_source_registry_new_sync (NULL, &error); if (error != NULL) { /* Any error is fatal, but we don't want to crash gnome-shell-calendar-server because of e-d-s problems. So just exit here. */ g_warning ("Failed to start evolution-source-registry: %s", error->message); exit (EXIT_FAILURE); } g_return_if_fail (registry != NULL); sources->registry_watcher = e_source_registry_watcher_new (registry, NULL); g_clear_object (®istry); sources->clients = g_hash_table_new_full ((GHashFunc) e_source_hash, (GEqualFunc) e_source_equal, (GDestroyNotify) g_object_unref, (GDestroyNotify) client_data_free); sources->filter_id = g_signal_connect (sources->registry_watcher, "filter", G_CALLBACK (registry_watcher_filter_cb), sources); sources->appeared_id = g_signal_connect (sources->registry_watcher, "appeared", G_CALLBACK (registry_watcher_source_appeared_cb), sources); sources->disappeared_id = g_signal_connect (sources->registry_watcher, "disappeared", G_CALLBACK (registry_watcher_source_disappeared_cb), sources); e_source_registry_watcher_reclaim (sources->registry_watcher); } static void calendar_sources_finalize (GObject *object) { CalendarSources *sources = CALENDAR_SOURCES (object); g_clear_pointer (&sources->clients, g_hash_table_destroy); if (sources->registry_watcher) { g_signal_handler_disconnect (sources->registry_watcher, sources->filter_id); g_signal_handler_disconnect (sources->registry_watcher, sources->appeared_id); g_signal_handler_disconnect (sources->registry_watcher, sources->disappeared_id); g_clear_object (&sources->registry_watcher); } g_mutex_clear (&sources->clients_lock); G_OBJECT_CLASS (calendar_sources_parent_class)->finalize (object); } static void calendar_sources_class_init (CalendarSourcesClass *klass) { GObjectClass *gobject_class = (GObjectClass *) klass; gobject_class->constructed = calendar_sources_constructed; gobject_class->finalize = calendar_sources_finalize; signals [CLIENT_APPEARED] = g_signal_new ("client-appeared", G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 1, E_TYPE_CAL_CLIENT); signals [CLIENT_DISAPPEARED] = g_signal_new ("client-disappeared", G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 1, G_TYPE_STRING); /* ESource::uid of the disappeared client */ } static void calendar_sources_init (CalendarSources *sources) { g_mutex_init (&sources->clients_lock); } CalendarSources * calendar_sources_get (void) { static CalendarSources *calendar_sources_singleton = NULL; gpointer singleton_location = &calendar_sources_singleton; if (calendar_sources_singleton) return g_object_ref (calendar_sources_singleton); calendar_sources_singleton = g_object_new (CALENDAR_TYPE_SOURCES, NULL); g_object_add_weak_pointer (G_OBJECT (calendar_sources_singleton), singleton_location); return calendar_sources_singleton; } ESourceRegistry * calendar_sources_get_registry (CalendarSources *sources) { return e_source_registry_watcher_get_registry (sources->registry_watcher); } static void gather_event_clients_cb (gpointer key, gpointer value, gpointer user_data) { GSList **plist = user_data; ClientData *cd = value; if (cd) *plist = g_slist_prepend (*plist, g_object_ref (cd->client)); } GSList * calendar_sources_ref_clients (CalendarSources *sources) { GSList *list = NULL; g_return_val_if_fail (CALENDAR_IS_SOURCES (sources), NULL); g_mutex_lock (&sources->clients_lock); g_hash_table_foreach (sources->clients, gather_event_clients_cb, &list); g_mutex_unlock (&sources->clients_lock); return list; } gboolean calendar_sources_has_clients (CalendarSources *sources) { GHashTableIter iter; gpointer value; gboolean has = FALSE; g_return_val_if_fail (CALENDAR_IS_SOURCES (sources), FALSE); g_mutex_lock (&sources->clients_lock); g_hash_table_iter_init (&iter, sources->clients); while (!has && g_hash_table_iter_next (&iter, NULL, &value)) { ClientData *cd = value; has = cd != NULL; } g_mutex_unlock (&sources->clients_lock); return has; } static void backend_died_cb (EClient *client, CalendarSources *sources) { ESource *source; const char *display_name; source = e_client_get_source (client); display_name = e_source_get_display_name (source); g_warning ("The calendar backend for '%s' has crashed.", display_name); g_mutex_lock (&sources->clients_lock); g_hash_table_remove (sources->clients, source); g_mutex_unlock (&sources->clients_lock); } static EClient * calendar_sources_connect_client_sync (CalendarSources *sources, ESource *source, ECalClientSourceType source_type, guint32 wait_for_connected_seconds, GCancellable *cancellable, GError **error) { EClient *client = NULL; ClientData *client_data; g_mutex_lock (&sources->clients_lock); client_data = g_hash_table_lookup (sources->clients, source); if (client_data) client = E_CLIENT (g_object_ref (client_data->client)); g_mutex_unlock (&sources->clients_lock); if (client) return client; client = e_cal_client_connect_sync (source, source_type, wait_for_connected_seconds, cancellable, error); if (!client) return NULL; g_mutex_lock (&sources->clients_lock); client_data = g_hash_table_lookup (sources->clients, source); if (client_data) { g_clear_object (&client); client = E_CLIENT (g_object_ref (client_data->client)); } else { client_data = g_new0 (ClientData, 1); client_data->client = E_CAL_CLIENT (g_object_ref (client)); client_data->backend_died_id = g_signal_connect (client, "backend-died", G_CALLBACK (backend_died_cb), sources); g_hash_table_insert (sources->clients, g_object_ref (source), client_data); } g_mutex_unlock (&sources->clients_lock); return client; } typedef struct _AsyncContext { ESource *source; ECalClientSourceType source_type; guint32 wait_for_connected_seconds; } AsyncContext; static void async_context_free (gpointer ptr) { AsyncContext *ctx = ptr; if (ctx) { g_clear_object (&ctx->source); g_free (ctx); } } static void calendar_sources_connect_client_thread (GTask *task, gpointer source_object, gpointer task_data, GCancellable *cancellable) { CalendarSources *sources = source_object; AsyncContext *ctx = task_data; EClient *client; GError *local_error = NULL; client = calendar_sources_connect_client_sync (sources, ctx->source, ctx->source_type, ctx->wait_for_connected_seconds, cancellable, &local_error); if (!client) { if (local_error) g_task_return_error (task, local_error); else g_task_return_pointer (task, NULL, NULL); } else { g_task_return_pointer (task, client, g_object_unref); } } void calendar_sources_connect_client (CalendarSources *sources, ESource *source, ECalClientSourceType source_type, guint32 wait_for_connected_seconds, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { AsyncContext *ctx; g_autoptr (GTask) task = NULL; ctx = g_new0 (AsyncContext, 1); ctx->source = g_object_ref (source); ctx->source_type = source_type; ctx->wait_for_connected_seconds = wait_for_connected_seconds; task = g_task_new (sources, cancellable, callback, user_data); g_task_set_source_tag (task, calendar_sources_connect_client); g_task_set_task_data (task, ctx, async_context_free); g_task_run_in_thread (task, calendar_sources_connect_client_thread); } EClient * calendar_sources_connect_client_finish (CalendarSources *sources, GAsyncResult *result, GError **error) { g_return_val_if_fail (g_task_is_valid (result, sources), NULL); g_return_val_if_fail (g_async_result_is_tagged (result, calendar_sources_connect_client), NULL); return g_task_propagate_pointer (G_TASK (result), error); } void print_debug (const gchar *format, ...) { g_autofree char *s = NULL; g_autofree char *timestamp = NULL; va_list ap; g_autoptr (GDateTime) now = NULL; static size_t once_init_value = 0; static gboolean show_debug = FALSE; static guint pid = 0; if (g_once_init_enter (&once_init_value)) { show_debug = (g_getenv ("CALENDAR_SERVER_DEBUG") != NULL); pid = getpid (); g_once_init_leave (&once_init_value, 1); } if (!show_debug) goto out; now = g_date_time_new_now_local (); timestamp = g_date_time_format (now, "%H:%M:%S"); va_start (ap, format); s = g_strdup_vprintf (format, ap); va_end (ap); g_print ("gnome-shell-calendar-server[%d]: %s.%03d: %s\n", pid, timestamp, g_date_time_get_microsecond (now), s); out: ; } 07070100000275000081A40000000000000000000000016712993F00000A79000000000000000000000000000000000000003800000000gnome-shell-47.1/src/calendar-server/calendar-sources.h/* * Copyright (C) 2004 Free Software Foundation, Inc. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see . * * Authors: * Mark McLoughlin * William Jon McCann * Martin Grimme * Christian Kellner */ #pragma once #include #define EDS_DISABLE_DEPRECATED G_GNUC_BEGIN_IGNORE_DEPRECATIONS #include #include G_GNUC_END_IGNORE_DEPRECATIONS G_BEGIN_DECLS #define CALENDAR_TYPE_SOURCES (calendar_sources_get_type ()) G_DECLARE_FINAL_TYPE (CalendarSources, calendar_sources, CALENDAR, SOURCES, GObject) CalendarSources *calendar_sources_get (void); ESourceRegistry *calendar_sources_get_registry (CalendarSources *sources); GSList *calendar_sources_ref_clients (CalendarSources *sources); gboolean calendar_sources_has_clients (CalendarSources *sources); void calendar_sources_connect_client (CalendarSources *sources, ESource *source, ECalClientSourceType source_type, guint32 wait_for_connected_seconds, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); EClient *calendar_sources_connect_client_finish (CalendarSources *sources, GAsyncResult *result, GError **error); /* Set the environment variable CALENDAR_SERVER_DEBUG to show debug */ void print_debug (const gchar *str, ...) G_GNUC_PRINTF (1, 2); G_END_DECLS 07070100000276000081A40000000000000000000000016712993F00008634000000000000000000000000000000000000004300000000gnome-shell-47.1/src/calendar-server/gnome-shell-calendar-server.c/* * Copyright (C) 2011 Red Hat, Inc. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see . * * Author: David Zeuthen * * Based on code from gnome-panel's clock-applet, file calendar-client.c, with Authors: * * Mark McLoughlin * William Jon McCann * Martin Grimme * Christian Kellner * */ #include "config.h" #include #include #include #include #define HANDLE_LIBICAL_MEMORY #define EDS_DISABLE_DEPRECATED G_GNUC_BEGIN_IGNORE_DEPRECATIONS #include G_GNUC_END_IGNORE_DEPRECATIONS #include "calendar-sources.h" #define BUS_NAME "org.gnome.Shell.CalendarServer" static const gchar introspection_xml[] = "" " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " ""; static GDBusNodeInfo *introspection_data = NULL; struct _App; typedef struct _App App; static gboolean opt_replace = FALSE; static GOptionEntry opt_entries[] = { {"replace", 0, 0, G_OPTION_ARG_NONE, &opt_replace, "Replace existing daemon", NULL}, {NULL } }; static App *_global_app = NULL; /* ---------------------------------------------------------------------------------------------------- */ /* While the UID is usually enough to identify an event, * only the triple of (source,UID,RID) is fully unambiguous; * neither may contain '\n', so we can safely use it to * create a unique ID from the triple */ static gchar * create_event_id (const gchar *source_uid, const gchar *comp_uid, const gchar *comp_rid) { return g_strconcat ( source_uid ? source_uid : "", "\n", comp_uid ? comp_uid : "", "\n", comp_rid ? comp_rid : "", NULL); } typedef struct { ECalClient *client; GSList **pappointments; /* CalendarAppointment * */ } CollectAppointmentsData; typedef struct { gchar *id; gchar *summary; time_t start_time; time_t end_time; } CalendarAppointment; static gboolean get_time_from_property (ECalClient *cal, ICalComponent *icomp, ICalPropertyKind prop_kind, ICalTime * (* get_prop_func) (ICalProperty *prop), ICalTimezone *default_zone, ICalTime **out_itt, ICalTimezone **out_timezone) { ICalProperty *prop; ICalTime *itt; ICalTimezone *timezone = NULL; prop = i_cal_component_get_first_property (icomp, prop_kind); if (!prop) return FALSE; itt = get_prop_func (prop); if (i_cal_time_is_utc (itt)) timezone = i_cal_timezone_get_utc_timezone (); else { ICalParameter *param; param = i_cal_property_get_first_parameter (prop, I_CAL_TZID_PARAMETER); if (param && !e_cal_client_get_timezone_sync (cal, i_cal_parameter_get_tzid (param), &timezone, NULL, NULL)) print_debug ("Failed to get timezone '%s'\n", i_cal_parameter_get_tzid (param)); g_clear_object (¶m); } if (timezone == NULL) timezone = default_zone; i_cal_time_set_timezone (itt, timezone); g_clear_object (&prop); *out_itt = itt; *out_timezone = timezone; return TRUE; } static inline time_t get_ical_start_time (ECalClient *cal, ICalComponent *icomp, ICalTimezone *default_zone) { ICalTime *itt; ICalTimezone *timezone; time_t retval; if (!get_time_from_property (cal, icomp, I_CAL_DTSTART_PROPERTY, i_cal_property_get_dtstart, default_zone, &itt, &timezone)) { return 0; } retval = i_cal_time_as_timet_with_zone (itt, timezone); g_clear_object (&itt); return retval; } static inline time_t get_ical_end_time (ECalClient *cal, ICalComponent *icomp, ICalTimezone *default_zone) { ICalTime *itt; ICalTimezone *timezone; time_t retval; if (!get_time_from_property (cal, icomp, I_CAL_DTEND_PROPERTY, i_cal_property_get_dtend, default_zone, &itt, &timezone)) { if (!get_time_from_property (cal, icomp, I_CAL_DTSTART_PROPERTY, i_cal_property_get_dtstart, default_zone, &itt, &timezone)) { return 0; } if (i_cal_time_is_date (itt)) i_cal_time_adjust (itt, 1, 0, 0, 0); } retval = i_cal_time_as_timet_with_zone (itt, timezone); g_clear_object (&itt); return retval; } static CalendarAppointment * calendar_appointment_new (ECalClient *cal, ECalComponent *comp) { CalendarAppointment *appt; ICalTimezone *default_zone; ICalComponent *ical; ECalComponentId *id; default_zone = e_cal_client_get_default_timezone (cal); ical = e_cal_component_get_icalcomponent (comp); id = e_cal_component_get_id (comp); appt = g_new0 (CalendarAppointment, 1); appt->id = create_event_id (e_source_get_uid (e_client_get_source (E_CLIENT (cal))), id ? e_cal_component_id_get_uid (id) : NULL, id ? e_cal_component_id_get_rid (id) : NULL); appt->summary = g_strdup (i_cal_component_get_summary (ical)); appt->start_time = get_ical_start_time (cal, ical, default_zone); appt->end_time = get_ical_end_time (cal, ical, default_zone); e_cal_component_id_free (id); return appt; } static void calendar_appointment_free (gpointer ptr) { CalendarAppointment *appt = ptr; if (appt) { g_free (appt->id); g_free (appt->summary); g_free (appt); } } static time_t timet_from_ical_time (ICalTime *time, ICalTimezone *default_zone) { ICalTimezone *timezone = NULL; timezone = i_cal_time_get_timezone (time); if (timezone == NULL) timezone = default_zone; return i_cal_time_as_timet_with_zone (time, timezone); } static gboolean generate_instances_cb (ICalComponent *icomp, ICalTime *instance_start, ICalTime *instance_end, gpointer user_data, GCancellable *cancellable, GError **error) { CollectAppointmentsData *data = user_data; CalendarAppointment *appointment; ECalComponent *comp; ICalTimezone *default_zone; default_zone = e_cal_client_get_default_timezone (data->client); comp = e_cal_component_new_from_icalcomponent (i_cal_component_clone (icomp)); appointment = calendar_appointment_new (data->client, comp); appointment->start_time = timet_from_ical_time (instance_start, default_zone); appointment->end_time = timet_from_ical_time (instance_end, default_zone); *(data->pappointments) = g_slist_prepend (*(data->pappointments), appointment); g_clear_object (&comp); return TRUE; } /* ---------------------------------------------------------------------------------------------------- */ struct _App { GDBusConnection *connection; time_t since; time_t until; ICalTimezone *zone; CalendarSources *sources; gulong client_appeared_signal_id; gulong client_disappeared_signal_id; gchar *timezone_location; GSList *notify_appointments; /* CalendarAppointment *, for EventsAdded */ GSList *notify_ids; /* gchar *, for EventsRemoved */ GSList *live_views; }; static void app_update_timezone (App *app) { g_autofree char *location = NULL; location = e_cal_system_timezone_get_location (); if (g_strcmp0 (location, app->timezone_location) != 0) { if (location == NULL) app->zone = i_cal_timezone_get_utc_timezone (); else app->zone = i_cal_timezone_get_builtin_timezone (location); g_free (app->timezone_location); app->timezone_location = g_steal_pointer (&location); print_debug ("Using timezone %s", app->timezone_location); } } static void app_notify_events_added (App *app) { GVariantBuilder builder, extras_builder; GSList *events, *link; events = g_slist_reverse (app->notify_appointments); app->notify_appointments = NULL; print_debug ("Emitting EventsAddedOrUpdated with %d events", g_slist_length (events)); if (!events) return; /* The a{sv} is used as an escape hatch in case we want to provide more * information in the future without breaking ABI */ g_variant_builder_init (&builder, G_VARIANT_TYPE ("a(ssxxa{sv})")); for (link = events; link; link = g_slist_next (link)) { CalendarAppointment *appt = link->data; time_t start_time = appt->start_time; time_t end_time = appt->end_time; if ((start_time >= app->since && start_time < app->until) || (start_time <= app->since && (end_time - 1) > app->since)) { g_variant_builder_init (&extras_builder, G_VARIANT_TYPE ("a{sv}")); g_variant_builder_add (&builder, "(ssxxa{sv})", appt->id, appt->summary != NULL ? appt->summary : "", (gint64) start_time, (gint64) end_time, &extras_builder); } } g_dbus_connection_emit_signal (app->connection, NULL, /* destination_bus_name */ "/org/gnome/Shell/CalendarServer", "org.gnome.Shell.CalendarServer", "EventsAddedOrUpdated", g_variant_new ("(a(ssxxa{sv}))", &builder), NULL); g_variant_builder_clear (&builder); g_slist_free_full (events, calendar_appointment_free); } static void app_notify_events_removed (App *app) { GVariantBuilder builder; GSList *ids, *link; ids = app->notify_ids; app->notify_ids = NULL; print_debug ("Emitting EventsRemoved with %d ids", g_slist_length (ids)); if (!ids) return; g_variant_builder_init (&builder, G_VARIANT_TYPE ("as")); for (link = ids; link; link = g_slist_next (link)) { const gchar *id = link->data; g_variant_builder_add (&builder, "s", id); } g_dbus_connection_emit_signal (app->connection, NULL, /* destination_bus_name */ "/org/gnome/Shell/CalendarServer", "org.gnome.Shell.CalendarServer", "EventsRemoved", g_variant_new ("(as)", &builder), NULL); g_variant_builder_clear (&builder); g_slist_free_full (ids, g_free); return; } static void app_process_added_modified_objects (App *app, ECalClientView *view, GSList *objects) /* ICalComponent * */ { ECalClient *cal_client; g_autoptr(GHashTable) covered_uids = NULL; GSList *link; gboolean expand_recurrences; cal_client = e_cal_client_view_ref_client (view); covered_uids = g_hash_table_new (g_str_hash, g_str_equal); expand_recurrences = e_cal_client_get_source_type (cal_client) == E_CAL_CLIENT_SOURCE_TYPE_EVENTS; for (link = objects; link; link = g_slist_next (link)) { ECalComponent *comp; ICalComponent *icomp = link->data; const gchar *uid; gboolean fallback = FALSE; if (!icomp) continue; uid = i_cal_component_get_uid (icomp); if (!uid || g_hash_table_contains (covered_uids, uid)) continue; g_hash_table_add (covered_uids, (gpointer) uid); if (expand_recurrences && !e_cal_util_component_is_instance (icomp) && e_cal_util_component_has_recurrences (icomp)) { CollectAppointmentsData data; data.client = cal_client; data.pappointments = &app->notify_appointments; e_cal_client_generate_instances_for_object_sync (cal_client, icomp, app->since, app->until, NULL, generate_instances_cb, &data); } else if (expand_recurrences && e_cal_util_component_is_instance (icomp)) { ICalComponent *main_comp = NULL; /* Always pass whole series of the recurring events, because * the calendar removes events with the same UID first. */ if (e_cal_client_get_object_sync (cal_client, uid, NULL, &main_comp, NULL, NULL)) { CollectAppointmentsData data; data.client = cal_client; data.pappointments = &app->notify_appointments; e_cal_client_generate_instances_for_object_sync (cal_client, main_comp, app->since, app->until, NULL, generate_instances_cb, &data); g_clear_object (&main_comp); } else { fallback = TRUE; } } else { fallback = TRUE; } if (fallback) { comp = e_cal_component_new_from_icalcomponent (i_cal_component_clone (icomp)); if (!comp) continue; app->notify_appointments = g_slist_prepend (app->notify_appointments, calendar_appointment_new (cal_client, comp)); g_object_unref (comp); } } g_clear_object (&cal_client); if (app->notify_appointments) app_notify_events_added (app); } static void on_objects_added (ECalClientView *view, GSList *objects, gpointer user_data) { App *app = user_data; ECalClient *client; client = e_cal_client_view_ref_client (view); print_debug ("%s (%d) for calendar '%s'", G_STRFUNC, g_slist_length (objects), e_source_get_uid (e_client_get_source (E_CLIENT (client)))); g_clear_object (&client); app_process_added_modified_objects (app, view, objects); } static void on_objects_modified (ECalClientView *view, GSList *objects, gpointer user_data) { App *app = user_data; ECalClient *client; client = e_cal_client_view_ref_client (view); print_debug ("%s (%d) for calendar '%s'", G_STRFUNC, g_slist_length (objects), e_source_get_uid (e_client_get_source (E_CLIENT (client)))); g_clear_object (&client); app_process_added_modified_objects (app, view, objects); } static void on_objects_removed (ECalClientView *view, GSList *uids, gpointer user_data) { App *app = user_data; ECalClient *client; GSList *link; const gchar *source_uid; client = e_cal_client_view_ref_client (view); source_uid = e_source_get_uid (e_client_get_source (E_CLIENT (client))); print_debug ("%s (%d) for calendar '%s'", G_STRFUNC, g_slist_length (uids), source_uid); for (link = uids; link; link = g_slist_next (link)) { ECalComponentId *id = link->data; if (!id) continue; app->notify_ids = g_slist_prepend (app->notify_ids, create_event_id (source_uid, e_cal_component_id_get_uid (id), e_cal_component_id_get_rid (id))); } g_clear_object (&client); if (app->notify_ids) app_notify_events_removed (app); } static gboolean app_has_calendars (App *app) { return app->live_views != NULL; } static ECalClientView * app_start_view (App *app, ECalClient *cal_client) { g_autofree char *since_iso8601 = NULL; g_autofree char *until_iso8601 = NULL; g_autofree char *query = NULL; const gchar *tz_location; ECalClientView *view = NULL; g_autoptr (GError) error = NULL; if (app->since <= 0 || app->since >= app->until) return NULL; if (!app->since || !app->until) { print_debug ("Skipping load of events, no time interval set yet"); return NULL; } /* timezone could have changed */ app_update_timezone (app); since_iso8601 = isodate_from_time_t (app->since); until_iso8601 = isodate_from_time_t (app->until); tz_location = i_cal_timezone_get_location (app->zone); print_debug ("Loading events since %s until %s for calendar '%s'", since_iso8601, until_iso8601, e_source_get_uid (e_client_get_source (E_CLIENT (cal_client)))); query = g_strdup_printf ("occur-in-time-range? (make-time \"%s\") " "(make-time \"%s\") \"%s\"", since_iso8601, until_iso8601, tz_location); e_cal_client_set_default_timezone (cal_client, app->zone); if (!e_cal_client_get_view_sync (cal_client, query, &view, NULL /* cancellable */, &error)) { g_warning ("Error setting up live-query '%s' on calendar: %s\n", query, error ? error->message : "Unknown error"); view = NULL; } else { g_signal_connect (view, "objects-added", G_CALLBACK (on_objects_added), app); g_signal_connect (view, "objects-modified", G_CALLBACK (on_objects_modified), app); g_signal_connect (view, "objects-removed", G_CALLBACK (on_objects_removed), app); e_cal_client_view_start (view, NULL); } return view; } static void app_stop_view (App *app, ECalClientView *view) { e_cal_client_view_stop (view, NULL); g_signal_handlers_disconnect_by_func (view, on_objects_added, app); g_signal_handlers_disconnect_by_func (view, on_objects_modified, app); g_signal_handlers_disconnect_by_func (view, on_objects_removed, app); } static void app_notify_has_calendars (App *app) { GVariantBuilder dict_builder; g_variant_builder_init (&dict_builder, G_VARIANT_TYPE ("a{sv}")); g_variant_builder_add (&dict_builder, "{sv}", "HasCalendars", g_variant_new_boolean (app_has_calendars (app))); g_dbus_connection_emit_signal (app->connection, NULL, "/org/gnome/Shell/CalendarServer", "org.freedesktop.DBus.Properties", "PropertiesChanged", g_variant_new ("(sa{sv}as)", "org.gnome.Shell.CalendarServer", &dict_builder, NULL), NULL); g_variant_builder_clear (&dict_builder); } static void app_update_views (App *app) { GSList *link, *clients; gboolean had_views, has_views; had_views = app->live_views != NULL; for (link = app->live_views; link; link = g_slist_next (link)) { app_stop_view (app, link->data); } g_slist_free_full (app->live_views, g_object_unref); app->live_views = NULL; clients = calendar_sources_ref_clients (app->sources); for (link = clients; link; link = g_slist_next (link)) { ECalClient *cal_client = link->data; ECalClientView *view; if (!cal_client) continue; view = app_start_view (app, cal_client); if (view) app->live_views = g_slist_prepend (app->live_views, view); } has_views = app->live_views != NULL; if (has_views != had_views) app_notify_has_calendars (app); g_slist_free_full (clients, g_object_unref); } static void on_client_appeared_cb (CalendarSources *sources, ECalClient *client, gpointer user_data) { App *app = user_data; ECalClientView *view; GSList *link; const gchar *source_uid; source_uid = e_source_get_uid (e_client_get_source (E_CLIENT (client))); print_debug ("Client appeared '%s'", source_uid); for (link = app->live_views; link; link = g_slist_next (link)) { ECalClientView *view = link->data; ECalClient *cal_client; ESource *source; cal_client = e_cal_client_view_ref_client (view); source = e_client_get_source (E_CLIENT (cal_client)); if (g_strcmp0 (source_uid, e_source_get_uid (source)) == 0) { g_clear_object (&cal_client); return; } g_clear_object (&cal_client); } view = app_start_view (app, client); if (view) { app->live_views = g_slist_prepend (app->live_views, view); /* It's the first view, notify that it has calendars now */ if (!g_slist_next (app->live_views)) app_notify_has_calendars (app); } } static void on_client_disappeared_cb (CalendarSources *sources, const gchar *source_uid, gpointer user_data) { App *app = user_data; GSList *link; print_debug ("Client disappeared '%s'", source_uid); for (link = app->live_views; link; link = g_slist_next (link)) { ECalClientView *view = link->data; ECalClient *cal_client; ESource *source; cal_client = e_cal_client_view_ref_client (view); source = e_client_get_source (E_CLIENT (cal_client)); if (g_strcmp0 (source_uid, e_source_get_uid (source)) == 0) { g_clear_object (&cal_client); app_stop_view (app, view); app->live_views = g_slist_remove (app->live_views, view); g_object_unref (view); print_debug ("Emitting ClientDisappeared for '%s'", source_uid); g_dbus_connection_emit_signal (app->connection, NULL, /* destination_bus_name */ "/org/gnome/Shell/CalendarServer", "org.gnome.Shell.CalendarServer", "ClientDisappeared", g_variant_new ("(s)", source_uid), NULL); /* It was the last view, notify that it doesn't have calendars now */ if (!app->live_views) app_notify_has_calendars (app); break; } g_clear_object (&cal_client); } } static App * app_new (GDBusConnection *connection) { App *app; app = g_new0 (App, 1); app->connection = g_object_ref (connection); app->sources = calendar_sources_get (); app->client_appeared_signal_id = g_signal_connect (app->sources, "client-appeared", G_CALLBACK (on_client_appeared_cb), app); app->client_disappeared_signal_id = g_signal_connect (app->sources, "client-disappeared", G_CALLBACK (on_client_disappeared_cb), app); app_update_timezone (app); return app; } static void app_free (App *app) { GSList *ll; for (ll = app->live_views; ll != NULL; ll = g_slist_next (ll)) { ECalClientView *view = E_CAL_CLIENT_VIEW (ll->data); app_stop_view (app, view); } g_signal_handler_disconnect (app->sources, app->client_appeared_signal_id); g_signal_handler_disconnect (app->sources, app->client_disappeared_signal_id); g_free (app->timezone_location); g_slist_free_full (app->live_views, g_object_unref); g_slist_free_full (app->notify_appointments, calendar_appointment_free); g_slist_free_full (app->notify_ids, g_free); g_object_unref (app->connection); g_object_unref (app->sources); g_free (app); } /* ---------------------------------------------------------------------------------------------------- */ static void handle_method_call (GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation, gpointer user_data) { App *app = user_data; if (g_strcmp0 (method_name, "SetTimeRange") == 0) { gint64 since; gint64 until; gboolean force_reload = FALSE; gboolean window_changed = FALSE; g_variant_get (parameters, "(xxb)", &since, &until, &force_reload); if (until < since) { g_dbus_method_invocation_return_dbus_error (invocation, "org.gnome.Shell.CalendarServer.Error.Failed", "until cannot be before since"); goto out; } print_debug ("Handling SetTimeRange (since=%" G_GINT64_FORMAT ", until=%" G_GINT64_FORMAT ", force_reload=%s)", since, until, force_reload ? "true" : "false"); if (app->until != until || app->since != since) { GVariantBuilder *builder; GVariantBuilder *invalidated_builder; app->until = until; app->since = since; window_changed = TRUE; builder = g_variant_builder_new (G_VARIANT_TYPE ("a{sv}")); invalidated_builder = g_variant_builder_new (G_VARIANT_TYPE ("as")); g_variant_builder_add (builder, "{sv}", "Until", g_variant_new_int64 (app->until)); g_variant_builder_add (builder, "{sv}", "Since", g_variant_new_int64 (app->since)); g_dbus_connection_emit_signal (app->connection, NULL, /* destination_bus_name */ "/org/gnome/Shell/CalendarServer", "org.freedesktop.DBus.Properties", "PropertiesChanged", g_variant_new ("(sa{sv}as)", "org.gnome.Shell.CalendarServer", builder, invalidated_builder), NULL); /* GError** */ g_variant_builder_unref (builder); g_variant_builder_unref (invalidated_builder); } g_dbus_method_invocation_return_value (invocation, NULL); if (window_changed || force_reload) app_update_views (app); } else { g_assert_not_reached (); } out: ; } static GVariant * handle_get_property (GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GError **error, gpointer user_data) { App *app = user_data; GVariant *ret; ret = NULL; if (g_strcmp0 (property_name, "Since") == 0) { ret = g_variant_new_int64 (app->since); } else if (g_strcmp0 (property_name, "Until") == 0) { ret = g_variant_new_int64 (app->until); } else if (g_strcmp0 (property_name, "HasCalendars") == 0) { ret = g_variant_new_boolean (app_has_calendars (app)); } else { g_assert_not_reached (); } return ret; } static const GDBusInterfaceVTable interface_vtable = { handle_method_call, handle_get_property, NULL /* handle_set_property */ }; static void on_bus_acquired (GDBusConnection *connection, const gchar *name, gpointer user_data) { GMainLoop *main_loop = user_data; guint registration_id; g_autoptr (GError) error = NULL; _global_app = app_new (connection); registration_id = g_dbus_connection_register_object (connection, "/org/gnome/Shell/CalendarServer", introspection_data->interfaces[0], &interface_vtable, _global_app, NULL, /* user_data_free_func */ &error); if (registration_id == 0) { g_printerr ("Error exporting object: %s (%s %d)\n", error->message, g_quark_to_string (error->domain), error->code); g_main_loop_quit (main_loop); return; } print_debug ("Connected to the session bus"); } static void on_name_lost (GDBusConnection *connection, const gchar *name, gpointer user_data) { GMainLoop *main_loop = user_data; g_print ("gnome-shell-calendar-server[%d]: Lost (or failed to acquire) the name " BUS_NAME " - exiting\n", (gint) getpid ()); g_main_loop_quit (main_loop); } static void on_name_acquired (GDBusConnection *connection, const gchar *name, gpointer user_data) { print_debug ("Acquired the name " BUS_NAME); } static gboolean stdin_channel_io_func (GIOChannel *source, GIOCondition condition, gpointer data) { GMainLoop *main_loop = data; if (condition & G_IO_HUP) { g_debug ("gnome-shell-calendar-server[%d]: Got HUP on stdin - exiting\n", (gint) getpid ()); g_main_loop_quit (main_loop); } else { g_warning ("Unhandled condition %d on GIOChannel for stdin", condition); } return FALSE; /* remove source */ } int main (int argc, char **argv) { g_autoptr (GError) error = NULL; GOptionContext *opt_context; GMainLoop *main_loop; gint ret; guint name_owner_id; GIOChannel *stdin_channel; ret = 1; opt_context = NULL; name_owner_id = 0; stdin_channel = NULL; introspection_data = g_dbus_node_info_new_for_xml (introspection_xml, NULL); g_assert (introspection_data != NULL); opt_context = g_option_context_new ("gnome-shell calendar server"); g_option_context_add_main_entries (opt_context, opt_entries, NULL); if (!g_option_context_parse (opt_context, &argc, &argv, &error)) { g_printerr ("Error parsing options: %s\n", error->message); goto out; } main_loop = g_main_loop_new (NULL, FALSE); stdin_channel = g_io_channel_unix_new (STDIN_FILENO); g_io_add_watch_full (stdin_channel, G_PRIORITY_DEFAULT, G_IO_HUP, stdin_channel_io_func, g_main_loop_ref (main_loop), (GDestroyNotify) g_main_loop_unref); name_owner_id = g_bus_own_name (G_BUS_TYPE_SESSION, BUS_NAME, G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT | (opt_replace ? G_BUS_NAME_OWNER_FLAGS_REPLACE : 0), on_bus_acquired, on_name_acquired, on_name_lost, g_main_loop_ref (main_loop), (GDestroyNotify) g_main_loop_unref); g_main_loop_run (main_loop); g_main_loop_unref (main_loop); ret = 0; out: if (stdin_channel != NULL) g_io_channel_unref (stdin_channel); if (_global_app != NULL) app_free (_global_app); if (name_owner_id != 0) g_bus_unown_name (name_owner_id); if (opt_context != NULL) g_option_context_free (opt_context); return ret; } 07070100000277000081A40000000000000000000000016712993F000002CD000000000000000000000000000000000000003100000000gnome-shell-47.1/src/calendar-server/meson.buildcalendar_sources = [ 'gnome-shell-calendar-server.c', 'calendar-debug.h', 'calendar-sources.c', 'calendar-sources.h' ] calendar_server = executable('gnome-shell-calendar-server', calendar_sources, dependencies: [ecal_dep, eds_dep, gio_dep], include_directories: include_directories('..', '../..'), c_args: [ '-DPREFIX="@0@"'.format(prefix), '-DLIBDIR="@0@"'.format(libdir), '-DDATADIR="@0@"'.format(datadir), '-DG_LOG_DOMAIN="ShellCalendarServer"' ], install_dir: libexecdir, install: true ) service_file = 'org.gnome.Shell.CalendarServer.service' configure_file( input: service_file + '.in', output: service_file, configuration: service_data, install_dir: servicedir ) 07070100000278000081A40000000000000000000000016712993F00000062000000000000000000000000000000000000004F00000000gnome-shell-47.1/src/calendar-server/org.gnome.Shell.CalendarServer.service.in[D-BUS Service] Name=org.gnome.Shell.CalendarServer Exec=@libexecdir@/gnome-shell-calendar-server 07070100000279000081ED0000000000000000000000016712993F00000447000000000000000000000000000000000000002200000000gnome-shell-47.1/src/data-to-c.pl#!/usr/bin/env perl # Copyright © 2011 Red Hat, Inc # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2 of the licence, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, see . # # Author: Kalev Lember if (@ARGV != 2) { die "Usage: data-to-c.pl \n"; } $file = $ARGV[0]; open (FILE, $file) || die "Cannot open $file: $!\n"; printf ("const char %s[] = \"", $ARGV[1]); while (my $line = ) { foreach my $c (split //, $line) { printf ("\\x%02x", ord ($c)); } } print "\";\n"; close (FILE); 0707010000027A000081ED0000000000000000000000016712993F000006A2000000000000000000000000000000000000003300000000gnome-shell-47.1/src/gnome-shell-extension-tool.in#!@PYTHON@ # -*- mode: Python; indent-tabs-mode: nil; -*- import subprocess import sys import optparse def extension_command(args): print("gnome-shell-extension-tool is deprecated, use gnome-extensions instead", file=sys.stderr) subprocess.run(["@bindir@/gnome-extensions"] + args) def create_extension(): extension_command(["create", "--interactive"]) def enable_extension(uuid): extension_command(["enable", uuid]) def disable_extension(uuid): extension_command(["disable", uuid]) def reload_extension(uuid): print("Reloading extensions does not work correctly and is no longer supported", file=sys.stderr) def main(): parser = optparse.OptionParser() parser.add_option("-d", "--disable-extension", dest="disable", help="Disable a GNOME Shell extension") parser.add_option("-e", "--enable-extension", dest="enable", help="Enable a GNOME Shell extension") parser.add_option("-c", "--create-extension", dest="create", action="store_true", help="Create a new GNOME Shell extension") parser.add_option("-r", "--reload-extension", dest="reload", help="Reload a GNOME Shell extension") options, args = parser.parse_args() if args: parser.print_usage() sys.exit(1) if options.disable: disable_extension(options.disable) elif options.enable: enable_extension(options.enable) elif options.create: create_extension() elif options.reload: reload_extension(options.reload) else: parser.print_usage() sys.exit(1) if __name__ == "__main__": main() 0707010000027B000081A40000000000000000000000016712993F000022D8000000000000000000000000000000000000002A00000000gnome-shell-47.1/src/gnome-shell-plugin.c/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ /* * Copyright (c) 2008 Red Hat, Inc. * Copyright (c) 2008 Intel Corp. * * Based on plugin skeleton by: * Author: Tomas Frydrych * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see . */ /* * GnomeShellPlugin is the entry point for for GNOME Shell into and out of * Mutter. By registering itself into Mutter using * meta_plugin_manager_set_plugin_type(), Mutter will call the vfuncs of the * plugin at the appropriate time. * * The functions in in GnomeShellPlugin are all just stubs, which just call the * similar methods in GnomeShellWm. */ #include "config.h" #include #include #include #include #include #include #include #include #include "shell-global-private.h" #include "shell-perf-log.h" #include "shell-wm-private.h" #define GNOME_TYPE_SHELL_PLUGIN (gnome_shell_plugin_get_type ()) G_DECLARE_FINAL_TYPE (GnomeShellPlugin, gnome_shell_plugin, GNOME, SHELL_PLUGIN, MetaPlugin) struct _GnomeShellPlugin { MetaPlugin parent; CoglContext *cogl_context; ShellGlobal *global; }; G_DEFINE_TYPE (GnomeShellPlugin, gnome_shell_plugin, META_TYPE_PLUGIN) static void gnome_shell_plugin_start (MetaPlugin *plugin) { GnomeShellPlugin *shell_plugin = GNOME_SHELL_PLUGIN (plugin); ClutterBackend *backend; backend = clutter_get_default_backend (); shell_plugin->cogl_context = clutter_backend_get_cogl_context (backend); shell_plugin->global = shell_global_get (); _shell_global_set_plugin (shell_plugin->global, META_PLUGIN (shell_plugin)); } static ShellWM * get_shell_wm (void) { ShellWM *wm; g_object_get (shell_global_get (), "window-manager", &wm, NULL); /* drop extra ref added by g_object_get */ g_object_unref (wm); return wm; } static void gnome_shell_plugin_minimize (MetaPlugin *plugin, MetaWindowActor *actor) { _shell_wm_minimize (get_shell_wm (), actor); } static void gnome_shell_plugin_unminimize (MetaPlugin *plugin, MetaWindowActor *actor) { _shell_wm_unminimize (get_shell_wm (), actor); } static void gnome_shell_plugin_size_changed (MetaPlugin *plugin, MetaWindowActor *actor) { _shell_wm_size_changed (get_shell_wm (), actor); } static void gnome_shell_plugin_size_change (MetaPlugin *plugin, MetaWindowActor *actor, MetaSizeChange which_change, MtkRectangle *old_frame_rect, MtkRectangle *old_buffer_rect) { _shell_wm_size_change (get_shell_wm (), actor, which_change, old_frame_rect, old_buffer_rect); } static void gnome_shell_plugin_map (MetaPlugin *plugin, MetaWindowActor *actor) { _shell_wm_map (get_shell_wm (), actor); } static void gnome_shell_plugin_destroy (MetaPlugin *plugin, MetaWindowActor *actor) { _shell_wm_destroy (get_shell_wm (), actor); } static void gnome_shell_plugin_switch_workspace (MetaPlugin *plugin, gint from, gint to, MetaMotionDirection direction) { _shell_wm_switch_workspace (get_shell_wm(), from, to, direction); } static void gnome_shell_plugin_kill_window_effects (MetaPlugin *plugin, MetaWindowActor *actor) { _shell_wm_kill_window_effects (get_shell_wm(), actor); } static void gnome_shell_plugin_kill_switch_workspace (MetaPlugin *plugin) { _shell_wm_kill_switch_workspace (get_shell_wm()); } static void gnome_shell_plugin_show_tile_preview (MetaPlugin *plugin, MetaWindow *window, MtkRectangle *tile_rect, int tile_monitor) { _shell_wm_show_tile_preview (get_shell_wm (), window, tile_rect, tile_monitor); } static void gnome_shell_plugin_hide_tile_preview (MetaPlugin *plugin) { _shell_wm_hide_tile_preview (get_shell_wm ()); } static void gnome_shell_plugin_show_window_menu (MetaPlugin *plugin, MetaWindow *window, MetaWindowMenuType menu, int x, int y) { _shell_wm_show_window_menu (get_shell_wm (), window, menu, x, y); } static void gnome_shell_plugin_show_window_menu_for_rect (MetaPlugin *plugin, MetaWindow *window, MetaWindowMenuType menu, MtkRectangle *rect) { _shell_wm_show_window_menu_for_rect (get_shell_wm (), window, menu, rect); } static gboolean gnome_shell_plugin_keybinding_filter (MetaPlugin *plugin, MetaKeyBinding *binding) { return _shell_wm_filter_keybinding (get_shell_wm (), binding); } static void gnome_shell_plugin_confirm_display_change (MetaPlugin *plugin) { _shell_wm_confirm_display_change (get_shell_wm ()); } static const MetaPluginInfo * gnome_shell_plugin_plugin_info (MetaPlugin *plugin) { static const MetaPluginInfo info = { .name = "GNOME Shell", .version = "0.1", .author = "Various", .license = "GPLv2+", .description = "Provides GNOME Shell core functionality" }; return &info; } static MetaCloseDialog * gnome_shell_plugin_create_close_dialog (MetaPlugin *plugin, MetaWindow *window) { return _shell_wm_create_close_dialog (get_shell_wm (), window); } static MetaInhibitShortcutsDialog * gnome_shell_plugin_create_inhibit_shortcuts_dialog (MetaPlugin *plugin, MetaWindow *window) { return _shell_wm_create_inhibit_shortcuts_dialog (get_shell_wm (), window); } static void gnome_shell_plugin_locate_pointer (MetaPlugin *plugin) { GnomeShellPlugin *shell_plugin = GNOME_SHELL_PLUGIN (plugin); _shell_global_locate_pointer (shell_plugin->global); } static void gnome_shell_plugin_class_init (GnomeShellPluginClass *klass) { MetaPluginClass *plugin_class = META_PLUGIN_CLASS (klass); plugin_class->start = gnome_shell_plugin_start; plugin_class->map = gnome_shell_plugin_map; plugin_class->minimize = gnome_shell_plugin_minimize; plugin_class->unminimize = gnome_shell_plugin_unminimize; plugin_class->size_changed = gnome_shell_plugin_size_changed; plugin_class->size_change = gnome_shell_plugin_size_change; plugin_class->destroy = gnome_shell_plugin_destroy; plugin_class->switch_workspace = gnome_shell_plugin_switch_workspace; plugin_class->kill_window_effects = gnome_shell_plugin_kill_window_effects; plugin_class->kill_switch_workspace = gnome_shell_plugin_kill_switch_workspace; plugin_class->show_tile_preview = gnome_shell_plugin_show_tile_preview; plugin_class->hide_tile_preview = gnome_shell_plugin_hide_tile_preview; plugin_class->show_window_menu = gnome_shell_plugin_show_window_menu; plugin_class->show_window_menu_for_rect = gnome_shell_plugin_show_window_menu_for_rect; plugin_class->keybinding_filter = gnome_shell_plugin_keybinding_filter; plugin_class->confirm_display_change = gnome_shell_plugin_confirm_display_change; plugin_class->plugin_info = gnome_shell_plugin_plugin_info; plugin_class->create_close_dialog = gnome_shell_plugin_create_close_dialog; plugin_class->create_inhibit_shortcuts_dialog = gnome_shell_plugin_create_inhibit_shortcuts_dialog; plugin_class->locate_pointer = gnome_shell_plugin_locate_pointer; } static void gnome_shell_plugin_init (GnomeShellPlugin *shell_plugin) { } 0707010000027C000081A40000000000000000000000016712993F0000046D000000000000000000000000000000000000003100000000gnome-shell-47.1/src/gnome-shell-portal-helper.c/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ #include "config.h" #include #include int main (int argc, char *argv[]) { const char *search_path[] = { "resource:///org/gnome/shell", NULL }; GError *error = NULL; GjsContext *context; uint8_t status; bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); context = g_object_new (GJS_TYPE_CONTEXT, "program-name", *argv, "search-path", search_path, NULL); gjs_context_set_argv(context, argc - 1, (const char**)argv + 1); if (!gjs_context_eval_module_file (context, "resource:///org/gnome/shell/portalHelper/main.js", &status, &error)) { g_message ("Execution of main.js threw exception: %s", error->message); g_error_free (error); g_object_unref (context); return status; } g_object_unref (context); return 0; } 0707010000027D000081ED0000000000000000000000016712993F00002C75000000000000000000000000000000000000002E00000000gnome-shell-47.1/src/gnome-shell-test-tool.in#!@PYTHON@ # -*- mode: Python; indent-tabs-mode: nil; -*- import datetime from gi.repository import GLib, GObject, Gio try: import json except ImportError: import simplejson as json import argparse import os import re import subprocess import sys import tempfile import base64 from configparser import RawConfigParser import hashlib import hmac from http import client from urllib import parse def show_version(option, opt_str, value, parser): print("GNOME Shell Performance Test @VERSION@") sys.exit() def start_shell(wrap=None, perf_output=None): # Set up environment env = dict(os.environ) filters = ['Gnome-shell-perf-helper'] + options.extra_filter env['MUTTER_WM_CLASS_FILTER'] = ','.join(filters) if perf_output is not None: env['SHELL_PERF_OUTPUT'] = perf_output # A fixed background image if os.getenv('SHELL_BACKGROUND_IMAGE') is None: env['SHELL_BACKGROUND_IMAGE'] = '@pkgdatadir@/perf-background.xml' self_dir = os.path.dirname(os.path.abspath(sys.argv[0])) args = [] if wrap: args += wrap.split(' ') args.append(os.path.join(self_dir, 'gnome-shell')) args.append('--automation-script') args.append(options.script) args.append('--force-animations') if options.replace: args.append('--replace') if options.wayland or options.nested or options.headless: args.append('--wayland') if options.nested: args.append('--nested') elif options.headless: args.append('--headless') if not options.hotplug: args.append('--virtual-monitor') args.append('1280x720') else: args.append('--display-server') args.append('--wayland-display') args.append('gnome-shell-test-display') elif options.x11: args.append('--x11') print("args: {}".format(args)) return subprocess.Popen(args, env=env) def run_shell(wrap=None, perf_output=None): # we do no additional supervision of gnome-shell, # beyond that of wait # in particular, we don't kill the shell upon # receiving a KeyboardInterrupt, as we expect to be # in the same process group shell = start_shell(wrap=wrap, perf_output=perf_output) shell.wait() return shell.returncode == 0 def restore_shell(): pid = os.fork() if (pid == 0): os.execlp("gnome-shell", "gnome-shell", "--replace") else: sys.exit(0) def upload_performance_report(report_text): try: config_home = os.environ['XDG_CONFIG_HOME'] except KeyError: config_home = None if not config_home: config_home = os.path.expanduser("~/.config") config_file = os.path.join(config_home, "gnome-shell/perf.ini") try: config = RawConfigParser() f = open(config_file) config.readfp(f) f.close() base_url = config.get('upload', 'url') system_name = config.get('upload', 'name') secret_key = config.get('upload', 'key') except Exception as e: print("Can't read upload configuration from %s: %s" % (config_file, str(e))) sys.exit(1) # Determine host, port and upload URL from provided data, we're # a bit extra-careful about normalization since the URL is part # of the signature. split = parse.urlsplit(base_url) scheme = split[0].lower() netloc = split[1] base_path = split[2] m = re.match(r'^(.*?)(?::(\d+))?$', netloc) if m.group(2): host, port = m.group(1), int(m.group(2)) else: host, port = m.group(1), None if scheme != "http": print("'%s' is not a HTTP URL" % base_url) sys.exit(1) if port is None: port = 80 if base_path.endswith('/'): base_path = base_path[:-1] if port == 80: normalized_base = "%s://%s%s" % (scheme, host, base_path) else: normalized_base = "%s://%s:%d%s" % (scheme, host, port, base_path) upload_url = normalized_base + '/system/%s/upload' % system_name upload_path = parse.urlsplit(upload_url)[2] # path portion # Create signature based on upload URL and the report data signature_data = 'POST&' + upload_url + "&&" h = hmac.new(secret_key, digestmod=hashlib.sha1) h.update(signature_data) h.update(report_text) signature = parse.quote(base64.b64encode(h.digest()), "~") headers = { 'User-Agent': 'gnome-shell-performance-tool/@VERSION@', 'Content-Type': 'application/json', 'X-Shell-Signature': 'HMAC-SHA1 ' + signature }; connection = client.HTTPConnection(host, port) connection.request('POST', upload_path, report_text, headers) response = connection.getresponse() if response.status == 200: print("Performance report upload succeeded") else: print("Performance report upload failed with status %d" % response.status) print(response.read()) def gnome_hwtest_log(*args): command = ['gnome-hwtest-log', '-t', 'gnome-shell-perf-tool'] command.extend(args) subprocess.check_call(command) def run_performance_test(wrap=None): iters = options.test_iters if options.perf_warmup: iters += 1 logs = [] metric_summaries = {} for i in range(0, iters): # We create an empty temporary file that the shell will overwrite # with the contents. handle, output_file = tempfile.mkstemp(".json", "gnome-shell-perf.") os.close(handle) # Run the performance test and collect the output as JSON normal_exit = False try: normal_exit = run_shell(wrap=wrap, perf_output=output_file) except: raise finally: if not normal_exit: os.remove(output_file) if not normal_exit: return False try: f = open(output_file) output = json.load(f) f.close() except: raise finally: os.remove(output_file) # Grab the event definitions and monitor layout the first time around if i == 0: events = output['events'] monitors = output['monitors'] if options.perf_warmup and i == 0: continue for metric in output['metrics']: name = metric['name'] if not name in metric_summaries: summary = {} summary['description'] = metric['description'] summary['units'] = metric['units'] summary['values'] = [] metric_summaries[name] = summary else: summary = metric_summaries[name] summary['values'].append(metric['value']) logs.append(output['log']) if options.perf_output or options.perf_upload: # Write a complete report, formatted as JSON. The Javascript/C code that # generates the individual reports we are summarizing here is very careful # to format them nicely, but we just dump out a compressed no-whitespace # version here for simplicity. Using json.dump(indent=0) doesn't real # improve the readability of the output much. report = { 'date': datetime.datetime.utcnow().isoformat() + 'Z', 'events': events, 'monitors': monitors, 'metrics': metric_summaries, 'logs': logs } # Add the Git revision if available self_dir = os.path.dirname(os.path.abspath(sys.argv[0])) if os.path.exists(os.path.join(self_dir, 'gnome-shell-jhbuild.in')): top_dir = os.path.dirname(self_dir) git_dir = os.path.join(top_dir, '.git') if os.path.exists(git_dir): env = dict(os.environ) env['GIT_DIR'] = git_dir revision = subprocess.Popen(['git', 'rev-parse', 'HEAD'], env=env, stdout=subprocess.PIPE).communicate()[0].strip() report['revision'] = revision if options.perf_output: f = open(options.perf_output, 'w') json.dump(report, f) f.close() if options.perf_upload: upload_performance_report(json.dumps(report)) elif options.hwtest: # Log to systemd journal for metric in sorted(metric_summaries.keys()): summary = metric_summaries[metric] gnome_hwtest_log('--metric=' + metric + '=' + str(summary['values'][0]) + summary['units'], '--metric-description=' + summary['description']) gnome_hwtest_log('--finished') else: # Write a human readable summary print('------------------------------------------------------------') for metric in sorted(metric_summaries.keys()): summary = metric_summaries[metric] print("#", summary['description']) print(metric, ", ".join((str(x) for x in summary['values']))) print('------------------------------------------------------------') return True # Main program parser = argparse.ArgumentParser() parser.add_argument("script", metavar="AUTOMATION_SCRIPT", help="Automation script to run") parser.add_argument("--test-iters", type=int, metavar="ITERS", help="Numbers of iterations of the test to run", default=1) parser.add_argument("--perf-warmup", action="store_true", help="Run a dry run before performance tests") parser.add_argument("--perf-output", metavar="OUTPUT_FILE", help="Output file to write performance report") parser.add_argument("--perf-upload", action="store_true", help="Upload performance report to server") parser.add_argument("--extra-filter", action="append", help="add an extra window class that should be allowed") parser.add_argument("--hwtest", action="store_true", help="Log results appropriately for GNOME Hardware Testing") parser.add_argument("--version", action="version", version="GNOME Shell Performance Test @VERSION@") parser.add_argument("--wrap") parser.add_argument("-r", "--replace", action="store_true", help="Replace the running window manager") parser.add_argument("-w", "--wayland", action="store_true", help="Run as a Wayland compositor") parser.add_argument("-n", "--nested", action="store_true", help="Run as a Wayland nested compositor") parser.add_argument("-x", "--x11", action="store_true", help="Run as an X11 compositor") parser.add_argument("--headless", action="store_true", help="Run as a headless Wayland compositor") parser.add_argument("--hotplug", action="store_true", help="Start without a virtual monitor attached") options = parser.parse_args() if options.extra_filter is None: options.extra_filter = [] if options.script == 'hwtest': options.extra_filter.append('Gedit') normal_exit = run_performance_test(wrap=options.wrap) if normal_exit: if not options.hwtest and options.replace: restore_shell() else: sys.exit(1) 0707010000027E000081A40000000000000000000000016712993F0000775E000000000000000000000000000000000000002600000000gnome-shell-47.1/src/gtkactionmuxer.c/* * Copyright © 2011 Canonical Limited * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the licence, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library. If not, see . * * Author: Ryan Lortie */ #include "config.h" #include "gtkactionmuxer.h" #include "gtkactionobservable.h" #include "gtkactionobserver.h" #include #include /** * SECTION:gtkactionmuxer * @short_description: Aggregate and monitor several action groups * * #GtkActionMuxer is a #GActionGroup and #GtkActionObservable that is * capable of containing other #GActionGroup instances. * * The typical use is aggregating all of the actions applicable to a * particular context into a single action group, with namespacing. * * Consider the case of two action groups -- one containing actions * applicable to an entire application (such as 'quit') and one * containing actions applicable to a particular window in the * application (such as 'fullscreen'). * * In this case, each of these action groups could be added to a * #GtkActionMuxer with the prefixes "app" and "win", respectively. This * would expose the actions as "app.quit" and "win.fullscreen" on the * #GActionGroup interface presented by the #GtkActionMuxer. * * Activations and state change requests on the #GtkActionMuxer are wired * through to the underlying action group in the expected way. * * This class is typically only used at the site of "consumption" of * actions (eg: when displaying a menu that contains many actions on * different objects). */ static void gtk_action_muxer_group_iface_init (GActionGroupInterface *iface); static void gtk_action_muxer_observable_iface_init (GtkActionObservableInterface *iface); typedef GObjectClass GtkActionMuxerClass; struct _GtkActionMuxer { GObject parent_instance; GHashTable *observed_actions; GHashTable *groups; GHashTable *primary_accels; GtkActionMuxer *parent; }; G_DEFINE_TYPE_WITH_CODE (GtkActionMuxer, gtk_action_muxer, G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE (G_TYPE_ACTION_GROUP, gtk_action_muxer_group_iface_init) G_IMPLEMENT_INTERFACE (GTK_TYPE_ACTION_OBSERVABLE, gtk_action_muxer_observable_iface_init)) enum { PROP_0, PROP_PARENT, NUM_PROPERTIES }; static GParamSpec *properties[NUM_PROPERTIES]; guint accel_signal; typedef struct { GtkActionMuxer *muxer; GSList *watchers; gchar *fullname; } Action; typedef struct { GtkActionMuxer *muxer; GActionGroup *group; gchar *prefix; gulong handler_ids[4]; } Group; static void gtk_action_muxer_append_group_actions (gpointer key, gpointer value, gpointer user_data) { const gchar *prefix = key; Group *group = value; GArray *actions = user_data; gchar **group_actions; gchar **action; group_actions = g_action_group_list_actions (group->group); for (action = group_actions; *action; action++) { gchar *fullname; fullname = g_strconcat (prefix, ".", *action, NULL); g_array_append_val (actions, fullname); } g_strfreev (group_actions); } static gchar ** gtk_action_muxer_list_actions (GActionGroup *action_group) { GtkActionMuxer *muxer = GTK_ACTION_MUXER (action_group); GArray *actions; actions = g_array_new (TRUE, FALSE, sizeof (gchar *)); for ( ; muxer != NULL; muxer = muxer->parent) { g_hash_table_foreach (muxer->groups, gtk_action_muxer_append_group_actions, actions); } return (gchar **)(void *) g_array_free (actions, FALSE); } static Group * gtk_action_muxer_find_group (GtkActionMuxer *muxer, const gchar *full_name, const gchar **action_name) { const gchar *dot; gchar *prefix; Group *group; dot = strchr (full_name, '.'); if (!dot) return NULL; prefix = g_strndup (full_name, dot - full_name); group = g_hash_table_lookup (muxer->groups, prefix); g_free (prefix); if (action_name) *action_name = dot + 1; return group; } static void gtk_action_muxer_action_enabled_changed (GtkActionMuxer *muxer, const gchar *action_name, gboolean enabled) { Action *action; GSList *node; action = g_hash_table_lookup (muxer->observed_actions, action_name); for (node = action ? action->watchers : NULL; node; node = node->next) gtk_action_observer_action_enabled_changed (node->data, GTK_ACTION_OBSERVABLE (muxer), action_name, enabled); g_action_group_action_enabled_changed (G_ACTION_GROUP (muxer), action_name, enabled); } static void gtk_action_muxer_group_action_enabled_changed (GActionGroup *action_group, const gchar *action_name, gboolean enabled, gpointer user_data) { Group *group = user_data; gchar *fullname; fullname = g_strconcat (group->prefix, ".", action_name, NULL); gtk_action_muxer_action_enabled_changed (group->muxer, fullname, enabled); g_free (fullname); } static void gtk_action_muxer_parent_action_enabled_changed (GActionGroup *action_group, const gchar *action_name, gboolean enabled, gpointer user_data) { GtkActionMuxer *muxer = user_data; gtk_action_muxer_action_enabled_changed (muxer, action_name, enabled); } static void gtk_action_muxer_action_state_changed (GtkActionMuxer *muxer, const gchar *action_name, GVariant *state) { Action *action; GSList *node; action = g_hash_table_lookup (muxer->observed_actions, action_name); for (node = action ? action->watchers : NULL; node; node = node->next) gtk_action_observer_action_state_changed (node->data, GTK_ACTION_OBSERVABLE (muxer), action_name, state); g_action_group_action_state_changed (G_ACTION_GROUP (muxer), action_name, state); } static void gtk_action_muxer_group_action_state_changed (GActionGroup *action_group, const gchar *action_name, GVariant *state, gpointer user_data) { Group *group = user_data; gchar *fullname; fullname = g_strconcat (group->prefix, ".", action_name, NULL); gtk_action_muxer_action_state_changed (group->muxer, fullname, state); g_free (fullname); } static void gtk_action_muxer_parent_action_state_changed (GActionGroup *action_group, const gchar *action_name, GVariant *state, gpointer user_data) { GtkActionMuxer *muxer = user_data; gtk_action_muxer_action_state_changed (muxer, action_name, state); } static void gtk_action_muxer_action_added (GtkActionMuxer *muxer, const gchar *action_name, GActionGroup *original_group, const gchar *orignal_action_name) { const GVariantType *parameter_type; gboolean enabled; GVariant *state; Action *action; action = g_hash_table_lookup (muxer->observed_actions, action_name); if (action && action->watchers && g_action_group_query_action (original_group, orignal_action_name, &enabled, ¶meter_type, NULL, NULL, &state)) { GSList *node; for (node = action->watchers; node; node = node->next) gtk_action_observer_action_added (node->data, GTK_ACTION_OBSERVABLE (muxer), action_name, parameter_type, enabled, state); if (state) g_variant_unref (state); } g_action_group_action_added (G_ACTION_GROUP (muxer), action_name); } static void gtk_action_muxer_action_added_to_group (GActionGroup *action_group, const gchar *action_name, gpointer user_data) { Group *group = user_data; gchar *fullname; fullname = g_strconcat (group->prefix, ".", action_name, NULL); gtk_action_muxer_action_added (group->muxer, fullname, action_group, action_name); g_free (fullname); } static void gtk_action_muxer_action_added_to_parent (GActionGroup *action_group, const gchar *action_name, gpointer user_data) { GtkActionMuxer *muxer = user_data; gtk_action_muxer_action_added (muxer, action_name, action_group, action_name); } static void gtk_action_muxer_action_removed (GtkActionMuxer *muxer, const gchar *action_name) { Action *action; GSList *node; action = g_hash_table_lookup (muxer->observed_actions, action_name); for (node = action ? action->watchers : NULL; node; node = node->next) gtk_action_observer_action_removed (node->data, GTK_ACTION_OBSERVABLE (muxer), action_name); g_action_group_action_removed (G_ACTION_GROUP (muxer), action_name); } static void gtk_action_muxer_action_removed_from_group (GActionGroup *action_group, const gchar *action_name, gpointer user_data) { Group *group = user_data; gchar *fullname; fullname = g_strconcat (group->prefix, ".", action_name, NULL); gtk_action_muxer_action_removed (group->muxer, fullname); g_free (fullname); } static void gtk_action_muxer_action_removed_from_parent (GActionGroup *action_group, const gchar *action_name, gpointer user_data) { GtkActionMuxer *muxer = user_data; gtk_action_muxer_action_removed (muxer, action_name); } static void gtk_action_muxer_primary_accel_changed (GtkActionMuxer *muxer, const gchar *action_name, const gchar *action_and_target) { Action *action; GSList *node; if (!action_name) action_name = strrchr (action_and_target, '|') + 1; action = g_hash_table_lookup (muxer->observed_actions, action_name); for (node = action ? action->watchers : NULL; node; node = node->next) gtk_action_observer_primary_accel_changed (node->data, GTK_ACTION_OBSERVABLE (muxer), action_name, action_and_target); g_signal_emit (muxer, accel_signal, 0, action_name, action_and_target); } static void gtk_action_muxer_parent_primary_accel_changed (GtkActionMuxer *parent, const gchar *action_name, const gchar *action_and_target, gpointer user_data) { GtkActionMuxer *muxer = user_data; /* If it's in our table then don't let the parent one filter through */ if (muxer->primary_accels && g_hash_table_lookup (muxer->primary_accels, action_and_target)) return; gtk_action_muxer_primary_accel_changed (muxer, action_name, action_and_target); } static gboolean gtk_action_muxer_query_action (GActionGroup *action_group, const gchar *action_name, gboolean *enabled, const GVariantType **parameter_type, const GVariantType **state_type, GVariant **state_hint, GVariant **state) { GtkActionMuxer *muxer = GTK_ACTION_MUXER (action_group); Group *group; const gchar *unprefixed_name; group = gtk_action_muxer_find_group (muxer, action_name, &unprefixed_name); if (group) return g_action_group_query_action (group->group, unprefixed_name, enabled, parameter_type, state_type, state_hint, state); if (muxer->parent) return g_action_group_query_action (G_ACTION_GROUP (muxer->parent), action_name, enabled, parameter_type, state_type, state_hint, state); return FALSE; } static GVariant * get_platform_data (void) { gchar time[32]; GVariantBuilder *builder; GVariant *result; g_snprintf (time, 32, "_TIME%d", clutter_get_current_event_time ()); builder = g_variant_builder_new (G_VARIANT_TYPE ("a{sv}")); g_variant_builder_add (builder, "{sv}", "desktop-startup-id", g_variant_new_string (time)); result = g_variant_builder_end (builder); g_variant_builder_unref (builder); return result; } static void gtk_action_muxer_activate_action (GActionGroup *action_group, const gchar *action_name, GVariant *parameter) { GtkActionMuxer *muxer = GTK_ACTION_MUXER (action_group); Group *group; const gchar *unprefixed_name; group = gtk_action_muxer_find_group (muxer, action_name, &unprefixed_name); if (group) { if (G_IS_REMOTE_ACTION_GROUP (group->group)) g_remote_action_group_activate_action_full (G_REMOTE_ACTION_GROUP (group->group), unprefixed_name, parameter, get_platform_data ()); else g_action_group_activate_action (group->group, unprefixed_name, parameter); } else if (muxer->parent) g_action_group_activate_action (G_ACTION_GROUP (muxer->parent), action_name, parameter); } static void gtk_action_muxer_change_action_state (GActionGroup *action_group, const gchar *action_name, GVariant *state) { GtkActionMuxer *muxer = GTK_ACTION_MUXER (action_group); Group *group; const gchar *unprefixed_name; group = gtk_action_muxer_find_group (muxer, action_name, &unprefixed_name); if (group) { if (G_IS_REMOTE_ACTION_GROUP (group->group)) g_remote_action_group_change_action_state_full (G_REMOTE_ACTION_GROUP (group->group), unprefixed_name, state, get_platform_data ()); else g_action_group_change_action_state (group->group, unprefixed_name, state); } else if (muxer->parent) g_action_group_change_action_state (G_ACTION_GROUP (muxer->parent), action_name, state); } static void gtk_action_muxer_unregister_internal (Action *action, gpointer observer) { GtkActionMuxer *muxer = action->muxer; GSList **ptr; for (ptr = &action->watchers; *ptr; ptr = &(*ptr)->next) if ((*ptr)->data == observer) { *ptr = g_slist_remove (*ptr, observer); if (action->watchers == NULL) g_hash_table_remove (muxer->observed_actions, action->fullname); break; } } static void gtk_action_muxer_weak_notify (gpointer data, GObject *where_the_object_was) { Action *action = data; gtk_action_muxer_unregister_internal (action, where_the_object_was); } static void gtk_action_muxer_register_observer (GtkActionObservable *observable, const gchar *name, GtkActionObserver *observer) { GtkActionMuxer *muxer = GTK_ACTION_MUXER (observable); Action *action; action = g_hash_table_lookup (muxer->observed_actions, name); if (action == NULL) { action = g_new (Action, 1); action->muxer = muxer; action->fullname = g_strdup (name); action->watchers = NULL; g_hash_table_insert (muxer->observed_actions, action->fullname, action); } action->watchers = g_slist_prepend (action->watchers, observer); g_object_weak_ref (G_OBJECT (observer), gtk_action_muxer_weak_notify, action); } static void gtk_action_muxer_unregister_observer (GtkActionObservable *observable, const gchar *name, GtkActionObserver *observer) { GtkActionMuxer *muxer = GTK_ACTION_MUXER (observable); Action *action; action = g_hash_table_lookup (muxer->observed_actions, name); g_object_weak_unref (G_OBJECT (observer), gtk_action_muxer_weak_notify, action); gtk_action_muxer_unregister_internal (action, observer); } static void gtk_action_muxer_free_group (gpointer data) { Group *group = data; gint i; /* 'for loop' or 'four loop'? */ for (i = 0; i < 4; i++) g_clear_signal_handler (&group->handler_ids[i], group->group); g_object_unref (group->group); g_free (group->prefix); g_free (group); } static void gtk_action_muxer_free_action (gpointer data) { Action *action = data; GSList *it; for (it = action->watchers; it; it = it->next) g_object_weak_unref (G_OBJECT (it->data), gtk_action_muxer_weak_notify, action); g_slist_free (action->watchers); g_free (action->fullname); g_free (action); } static void gtk_action_muxer_finalize (GObject *object) { GtkActionMuxer *muxer = GTK_ACTION_MUXER (object); g_assert_cmpint (g_hash_table_size (muxer->observed_actions), ==, 0); g_hash_table_unref (muxer->observed_actions); g_hash_table_unref (muxer->groups); G_OBJECT_CLASS (gtk_action_muxer_parent_class) ->finalize (object); } static void gtk_action_muxer_dispose (GObject *object) { GtkActionMuxer *muxer = GTK_ACTION_MUXER (object); if (muxer->parent) { g_signal_handlers_disconnect_by_func (muxer->parent, gtk_action_muxer_action_added_to_parent, muxer); g_signal_handlers_disconnect_by_func (muxer->parent, gtk_action_muxer_action_removed_from_parent, muxer); g_signal_handlers_disconnect_by_func (muxer->parent, gtk_action_muxer_parent_action_enabled_changed, muxer); g_signal_handlers_disconnect_by_func (muxer->parent, gtk_action_muxer_parent_action_state_changed, muxer); g_signal_handlers_disconnect_by_func (muxer->parent, gtk_action_muxer_parent_primary_accel_changed, muxer); g_clear_object (&muxer->parent); } g_hash_table_remove_all (muxer->observed_actions); G_OBJECT_CLASS (gtk_action_muxer_parent_class) ->dispose (object); } static void gtk_action_muxer_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { GtkActionMuxer *muxer = GTK_ACTION_MUXER (object); switch (property_id) { case PROP_PARENT: g_value_set_object (value, gtk_action_muxer_get_parent (muxer)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); } } static void gtk_action_muxer_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { GtkActionMuxer *muxer = GTK_ACTION_MUXER (object); switch (property_id) { case PROP_PARENT: gtk_action_muxer_set_parent (muxer, g_value_get_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); } } static void gtk_action_muxer_init (GtkActionMuxer *muxer) { muxer->observed_actions = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, gtk_action_muxer_free_action); muxer->groups = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, gtk_action_muxer_free_group); } static void gtk_action_muxer_observable_iface_init (GtkActionObservableInterface *iface) { iface->register_observer = gtk_action_muxer_register_observer; iface->unregister_observer = gtk_action_muxer_unregister_observer; } static void gtk_action_muxer_group_iface_init (GActionGroupInterface *iface) { iface->list_actions = gtk_action_muxer_list_actions; iface->query_action = gtk_action_muxer_query_action; iface->activate_action = gtk_action_muxer_activate_action; iface->change_action_state = gtk_action_muxer_change_action_state; } static void gtk_action_muxer_class_init (GObjectClass *class) { class->get_property = gtk_action_muxer_get_property; class->set_property = gtk_action_muxer_set_property; class->finalize = gtk_action_muxer_finalize; class->dispose = gtk_action_muxer_dispose; accel_signal = g_signal_new ("primary-accel-changed", GTK_TYPE_ACTION_MUXER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_STRING); properties[PROP_PARENT] = g_param_spec_object ("parent", NULL, NULL, GTK_TYPE_ACTION_MUXER, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_properties (class, NUM_PROPERTIES, properties); } /** * gtk_action_muxer_insert: * @muxer: a #GtkActionMuxer * @prefix: the prefix string for the action group * @action_group: a #GActionGroup * * Adds the actions in @action_group to the list of actions provided by * @muxer. @prefix is prefixed to each action name, such that for each * action x in @action_group, there is an equivalent * action @prefix.x in @muxer. * * For example, if @prefix is "app" and @action_group * contains an action called "quit", then @muxer will * now contain an action called "app.quit". * * If any #GtkActionObservers are registered for actions in the group, * "action_added" notifications will be emitted, as appropriate. * * @prefix must not contain a dot ('.'). */ void gtk_action_muxer_insert (GtkActionMuxer *muxer, const gchar *prefix, GActionGroup *action_group) { gchar **actions; Group *group; gint i; /* TODO: diff instead of ripout and replace */ gtk_action_muxer_remove (muxer, prefix); group = g_new (Group, 1); group->muxer = muxer; group->group = g_object_ref (action_group); group->prefix = g_strdup (prefix); g_hash_table_insert (muxer->groups, group->prefix, group); actions = g_action_group_list_actions (group->group); for (i = 0; actions[i]; i++) gtk_action_muxer_action_added_to_group (group->group, actions[i], group); g_strfreev (actions); group->handler_ids[0] = g_signal_connect (group->group, "action-added", G_CALLBACK (gtk_action_muxer_action_added_to_group), group); group->handler_ids[1] = g_signal_connect (group->group, "action-removed", G_CALLBACK (gtk_action_muxer_action_removed_from_group), group); group->handler_ids[2] = g_signal_connect (group->group, "action-enabled-changed", G_CALLBACK (gtk_action_muxer_group_action_enabled_changed), group); group->handler_ids[3] = g_signal_connect (group->group, "action-state-changed", G_CALLBACK (gtk_action_muxer_group_action_state_changed), group); } /** * gtk_action_muxer_remove: * @muxer: a #GtkActionMuxer * @prefix: the prefix of the action group to remove * * Removes a #GActionGroup from the #GtkActionMuxer. * * If any #GtkActionObservers are registered for actions in the group, * "action_removed" notifications will be emitted, as appropriate. */ void gtk_action_muxer_remove (GtkActionMuxer *muxer, const gchar *prefix) { Group *group; group = g_hash_table_lookup (muxer->groups, prefix); if (group != NULL) { gchar **actions; gint i; g_hash_table_steal (muxer->groups, prefix); actions = g_action_group_list_actions (group->group); for (i = 0; actions[i]; i++) gtk_action_muxer_action_removed_from_group (group->group, actions[i], group); g_strfreev (actions); gtk_action_muxer_free_group (group); } } /** * gtk_action_muxer_new: * * Creates a new #GtkActionMuxer. */ GtkActionMuxer * gtk_action_muxer_new (void) { return g_object_new (GTK_TYPE_ACTION_MUXER, NULL); } /** * gtk_action_muxer_get_parent: * @muxer: a #GtkActionMuxer * * Returns: (transfer none): the parent of @muxer, or NULL. */ GtkActionMuxer * gtk_action_muxer_get_parent (GtkActionMuxer *muxer) { g_return_val_if_fail (GTK_IS_ACTION_MUXER (muxer), NULL); return muxer->parent; } static void emit_changed_accels (GtkActionMuxer *muxer, GtkActionMuxer *parent) { while (parent) { if (parent->primary_accels) { GHashTableIter iter; gpointer key; g_hash_table_iter_init (&iter, parent->primary_accels); while (g_hash_table_iter_next (&iter, &key, NULL)) gtk_action_muxer_primary_accel_changed (muxer, NULL, key); } parent = parent->parent; } } /** * gtk_action_muxer_set_parent: * @muxer: a #GtkActionMuxer * @parent: (nullable): the new parent #GtkActionMuxer * * Sets the parent of @muxer to @parent. */ void gtk_action_muxer_set_parent (GtkActionMuxer *muxer, GtkActionMuxer *parent) { g_return_if_fail (GTK_IS_ACTION_MUXER (muxer)); g_return_if_fail (parent == NULL || GTK_IS_ACTION_MUXER (parent)); if (muxer->parent == parent) return; if (muxer->parent != NULL) { gchar **actions; gchar **it; actions = g_action_group_list_actions (G_ACTION_GROUP (muxer->parent)); for (it = actions; *it; it++) gtk_action_muxer_action_removed (muxer, *it); g_strfreev (actions); emit_changed_accels (muxer, muxer->parent); g_signal_handlers_disconnect_by_func (muxer->parent, gtk_action_muxer_action_added_to_parent, muxer); g_signal_handlers_disconnect_by_func (muxer->parent, gtk_action_muxer_action_removed_from_parent, muxer); g_signal_handlers_disconnect_by_func (muxer->parent, gtk_action_muxer_parent_action_enabled_changed, muxer); g_signal_handlers_disconnect_by_func (muxer->parent, gtk_action_muxer_parent_action_state_changed, muxer); g_signal_handlers_disconnect_by_func (muxer->parent, gtk_action_muxer_parent_primary_accel_changed, muxer); g_object_unref (muxer->parent); } muxer->parent = parent; if (muxer->parent != NULL) { gchar **actions; gchar **it; g_object_ref (muxer->parent); actions = g_action_group_list_actions (G_ACTION_GROUP (muxer->parent)); for (it = actions; *it; it++) gtk_action_muxer_action_added (muxer, *it, G_ACTION_GROUP (muxer->parent), *it); g_strfreev (actions); emit_changed_accels (muxer, muxer->parent); g_signal_connect (muxer->parent, "action-added", G_CALLBACK (gtk_action_muxer_action_added_to_parent), muxer); g_signal_connect (muxer->parent, "action-removed", G_CALLBACK (gtk_action_muxer_action_removed_from_parent), muxer); g_signal_connect (muxer->parent, "action-enabled-changed", G_CALLBACK (gtk_action_muxer_parent_action_enabled_changed), muxer); g_signal_connect (muxer->parent, "action-state-changed", G_CALLBACK (gtk_action_muxer_parent_action_state_changed), muxer); g_signal_connect (muxer->parent, "primary-accel-changed", G_CALLBACK (gtk_action_muxer_parent_primary_accel_changed), muxer); } g_object_notify_by_pspec (G_OBJECT (muxer), properties[PROP_PARENT]); } void gtk_action_muxer_set_primary_accel (GtkActionMuxer *muxer, const gchar *action_and_target, const gchar *primary_accel) { if (!muxer->primary_accels) muxer->primary_accels = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); if (primary_accel) g_hash_table_insert (muxer->primary_accels, g_strdup (action_and_target), g_strdup (primary_accel)); else g_hash_table_remove (muxer->primary_accels, action_and_target); gtk_action_muxer_primary_accel_changed (muxer, NULL, action_and_target); } const gchar * gtk_action_muxer_get_primary_accel (GtkActionMuxer *muxer, const gchar *action_and_target) { if (muxer->primary_accels) { const gchar *primary_accel; primary_accel = g_hash_table_lookup (muxer->primary_accels, action_and_target); if (primary_accel) return primary_accel; } if (!muxer->parent) return NULL; return gtk_action_muxer_get_primary_accel (muxer->parent, action_and_target); } gchar * gtk_print_action_and_target (const gchar *action_namespace, const gchar *action_name, GVariant *target) { GString *result; g_return_val_if_fail (strchr (action_name, '|') == NULL, NULL); g_return_val_if_fail (action_namespace == NULL || strchr (action_namespace, '|') == NULL, NULL); result = g_string_new (NULL); if (target) g_variant_print_string (target, result, TRUE); g_string_append_c (result, '|'); if (action_namespace) { g_string_append (result, action_namespace); g_string_append_c (result, '.'); } g_string_append (result, action_name); return g_string_free (result, FALSE); } 0707010000027F000081A40000000000000000000000016712993F00000C94000000000000000000000000000000000000002600000000gnome-shell-47.1/src/gtkactionmuxer.h/* * Copyright © 2011 Canonical Limited * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the licence, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library. If not, see . * * Author: Ryan Lortie */ #pragma once #include G_BEGIN_DECLS #define GTK_TYPE_ACTION_MUXER (gtk_action_muxer_get_type ()) #define GTK_ACTION_MUXER(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), \ GTK_TYPE_ACTION_MUXER, GtkActionMuxer)) #define GTK_IS_ACTION_MUXER(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), \ GTK_TYPE_ACTION_MUXER)) typedef struct _GtkActionMuxer GtkActionMuxer; GType gtk_action_muxer_get_type (void); GtkActionMuxer * gtk_action_muxer_new (void); void gtk_action_muxer_insert (GtkActionMuxer *muxer, const gchar *prefix, GActionGroup *action_group); void gtk_action_muxer_remove (GtkActionMuxer *muxer, const gchar *prefix); GtkActionMuxer * gtk_action_muxer_get_parent (GtkActionMuxer *muxer); void gtk_action_muxer_set_parent (GtkActionMuxer *muxer, GtkActionMuxer *parent); void gtk_action_muxer_set_primary_accel (GtkActionMuxer *muxer, const gchar *action_and_target, const gchar *primary_accel); const gchar * gtk_action_muxer_get_primary_accel (GtkActionMuxer *muxer, const gchar *action_and_target); /* No better place for this... */ gchar * gtk_print_action_and_target (const gchar *action_namespace, const gchar *action_name, GVariant *target); G_END_DECLS 07070100000280000081A40000000000000000000000016712993F00000A5F000000000000000000000000000000000000002B00000000gnome-shell-47.1/src/gtkactionobservable.c/* * Copyright © 2011 Canonical Limited * * This library is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2 of the * licence or (at your option) any later version. * * This library is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library. If not, see . * * Authors: Ryan Lortie */ #include "config.h" #include "gtkactionobservable.h" G_DEFINE_INTERFACE (GtkActionObservable, gtk_action_observable, G_TYPE_OBJECT) /* * SECTION:gtkactionobserable * @short_description: an interface implemented by objects that report * changes to actions */ void gtk_action_observable_default_init (GtkActionObservableInterface *iface) { } /** * gtk_action_observable_register_observer: * @observable: a #GtkActionObservable * @action_name: the name of the action * @observer: the #GtkActionObserver to which the events will be reported * * Registers @observer as being interested in changes to @action_name on * @observable. */ void gtk_action_observable_register_observer (GtkActionObservable *observable, const gchar *action_name, GtkActionObserver *observer) { g_return_if_fail (GTK_IS_ACTION_OBSERVABLE (observable)); GTK_ACTION_OBSERVABLE_GET_IFACE (observable) ->register_observer (observable, action_name, observer); } /** * gtk_action_observable_unregister_observer: * @observable: a #GtkActionObservable * @action_name: the name of the action * @observer: the #GtkActionObserver to which the events will be reported * * Removes the registration of @observer as being interested in changes * to @action_name on @observable. * * If the observer was registered multiple times, it must be * unregistered an equal number of times. */ void gtk_action_observable_unregister_observer (GtkActionObservable *observable, const gchar *action_name, GtkActionObserver *observer) { g_return_if_fail (GTK_IS_ACTION_OBSERVABLE (observable)); GTK_ACTION_OBSERVABLE_GET_IFACE (observable) ->unregister_observer (observable, action_name, observer); } 07070100000281000081A40000000000000000000000016712993F00000B96000000000000000000000000000000000000002B00000000gnome-shell-47.1/src/gtkactionobservable.h/* * Copyright © 2011 Canonical Limited * * This library is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2 of the * licence or (at your option) any later version. * * This library is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library. If not, see . * * Authors: Ryan Lortie */ #pragma once #include "gtkactionobserver.h" G_BEGIN_DECLS #define GTK_TYPE_ACTION_OBSERVABLE (gtk_action_observable_get_type ()) #define GTK_ACTION_OBSERVABLE(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), \ GTK_TYPE_ACTION_OBSERVABLE, GtkActionObservable)) #define GTK_IS_ACTION_OBSERVABLE(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), \ GTK_TYPE_ACTION_OBSERVABLE)) #define GTK_ACTION_OBSERVABLE_GET_IFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), \ GTK_TYPE_ACTION_OBSERVABLE, \ GtkActionObservableInterface)) typedef struct _GtkActionObservableInterface GtkActionObservableInterface; struct _GtkActionObservableInterface { GTypeInterface g_iface; void (* register_observer) (GtkActionObservable *observable, const gchar *action_name, GtkActionObserver *observer); void (* unregister_observer) (GtkActionObservable *observable, const gchar *action_name, GtkActionObserver *observer); }; GType gtk_action_observable_get_type (void); void gtk_action_observable_register_observer (GtkActionObservable *observable, const gchar *action_name, GtkActionObserver *observer); void gtk_action_observable_unregister_observer (GtkActionObservable *observable, const gchar *action_name, GtkActionObserver *observer); G_END_DECLS 07070100000282000081A40000000000000000000000016712993F00001C38000000000000000000000000000000000000002900000000gnome-shell-47.1/src/gtkactionobserver.c/* * Copyright © 2011 Canonical Limited * * This library is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2 of the * licence or (at your option) any later version. * * This library is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library. If not, see . * * Authors: Ryan Lortie */ #include "config.h" #include "gtkactionobserver.h" G_DEFINE_INTERFACE (GtkActionObserver, gtk_action_observer, G_TYPE_OBJECT) /** * SECTION:gtkactionobserver * @short_description: an interface implemented by objects that are * interested in monitoring actions for changes * * GtkActionObserver is a simple interface allowing objects that wish to * be notified of changes to actions to be notified of those changes. * * It is also possible to monitor changes to action groups using * #GObject signals, but there are a number of reasons that this * approach could become problematic: * * - there are four separate signals that must be manually connected * and disconnected * * - when a large number of different observers wish to monitor a * (usually disjoint) set of actions within the same action group, * there is only one way to avoid having all notifications delivered * to all observers: signal detail. In order to use signal detail, * each action name must be quarked, which is not always practical. * * - even if quarking is acceptable, #GObject signal details are * implemented by scanning a linked list, so there is no real * decrease in complexity */ void gtk_action_observer_default_init (GtkActionObserverInterface *class) { } /** * gtk_action_observer_action_added: * @observer: a #GtkActionObserver * @observable: the source of the event * @action_name: the name of the action * @enabled: %TRUE if the action is now enabled * @parameter_type: the parameter type for action invocations, or %NULL * if no parameter is required * @state: the current state of the action, or %NULL if the action is * stateless * * This function is called when an action that the observer is * registered to receive events for is added. * * This function should only be called by objects with which the * observer has explicitly registered itself to receive events. */ void gtk_action_observer_action_added (GtkActionObserver *observer, GtkActionObservable *observable, const gchar *action_name, const GVariantType *parameter_type, gboolean enabled, GVariant *state) { g_return_if_fail (GTK_IS_ACTION_OBSERVER (observer)); GTK_ACTION_OBSERVER_GET_IFACE (observer) ->action_added (observer, observable, action_name, parameter_type, enabled, state); } /** * gtk_action_observer_action_enabled_changed: * @observer: a #GtkActionObserver * @observable: the source of the event * @action_name: the name of the action * @enabled: %TRUE if the action is now enabled * * This function is called when an action that the observer is * registered to receive events for becomes enabled or disabled. * * This function should only be called by objects with which the * observer has explicitly registered itself to receive events. */ void gtk_action_observer_action_enabled_changed (GtkActionObserver *observer, GtkActionObservable *observable, const gchar *action_name, gboolean enabled) { g_return_if_fail (GTK_IS_ACTION_OBSERVER (observer)); GTK_ACTION_OBSERVER_GET_IFACE (observer) ->action_enabled_changed (observer, observable, action_name, enabled); } /** * gtk_action_observer_action_state_changed: * @observer: a #GtkActionObserver * @observable: the source of the event * @action_name: the name of the action * @state: the new state of the action * * This function is called when an action that the observer is * registered to receive events for changes to its state. * * This function should only be called by objects with which the * observer has explicitly registered itself to receive events. */ void gtk_action_observer_action_state_changed (GtkActionObserver *observer, GtkActionObservable *observable, const gchar *action_name, GVariant *state) { g_return_if_fail (GTK_IS_ACTION_OBSERVER (observer)); GTK_ACTION_OBSERVER_GET_IFACE (observer) ->action_state_changed (observer, observable, action_name, state); } /** * gtk_action_observer_action_removed: * @observer: a #GtkActionObserver * @observable: the source of the event * @action_name: the name of the action * * This function is called when an action that the observer is * registered to receive events for is removed. * * This function should only be called by objects with which the * observer has explicitly registered itself to receive events. */ void gtk_action_observer_action_removed (GtkActionObserver *observer, GtkActionObservable *observable, const gchar *action_name) { g_return_if_fail (GTK_IS_ACTION_OBSERVER (observer)); GTK_ACTION_OBSERVER_GET_IFACE (observer) ->action_removed (observer, observable, action_name); } /** * gtk_action_observer_primary_accel_changed: * @observer: a #GtkActionObserver * @observable: the source of the event * @action_name: the name of the action * @action_and_target: detailed action of the changed accel, in "action and target" format * * This function is called when an action that the observer is * registered to receive events for has one of its accelerators changed. * * Accelerator changes are reported for all targets associated with the * action. The @action_and_target string should be used to check if the * reported target is the one that the observer is interested in. */ void gtk_action_observer_primary_accel_changed (GtkActionObserver *observer, GtkActionObservable *observable, const gchar *action_name, const gchar *action_and_target) { GtkActionObserverInterface *iface; g_return_if_fail (GTK_IS_ACTION_OBSERVER (observer)); iface = GTK_ACTION_OBSERVER_GET_IFACE (observer); if (iface->primary_accel_changed) iface->primary_accel_changed (observer, observable, action_name, action_and_target); } 07070100000283000081A40000000000000000000000016712993F00001610000000000000000000000000000000000000002900000000gnome-shell-47.1/src/gtkactionobserver.h/* * Copyright © 2011 Canonical Limited * * This library is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2 of the * licence or (at your option) any later version. * * This library is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library. If not, see . * * Authors: Ryan Lortie */ #pragma once #include G_BEGIN_DECLS #define GTK_TYPE_ACTION_OBSERVER (gtk_action_observer_get_type ()) #define GTK_ACTION_OBSERVER(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), \ GTK_TYPE_ACTION_OBSERVER, GtkActionObserver)) #define GTK_IS_ACTION_OBSERVER(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), \ GTK_TYPE_ACTION_OBSERVER)) #define GTK_ACTION_OBSERVER_GET_IFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), \ GTK_TYPE_ACTION_OBSERVER, GtkActionObserverInterface)) typedef struct _GtkActionObserverInterface GtkActionObserverInterface; typedef struct _GtkActionObservable GtkActionObservable; typedef struct _GtkActionObserver GtkActionObserver; struct _GtkActionObserverInterface { GTypeInterface g_iface; void (* action_added) (GtkActionObserver *observer, GtkActionObservable *observable, const gchar *action_name, const GVariantType *parameter_type, gboolean enabled, GVariant *state); void (* action_enabled_changed) (GtkActionObserver *observer, GtkActionObservable *observable, const gchar *action_name, gboolean enabled); void (* action_state_changed) (GtkActionObserver *observer, GtkActionObservable *observable, const gchar *action_name, GVariant *state); void (* action_removed) (GtkActionObserver *observer, GtkActionObservable *observable, const gchar *action_name); void (* primary_accel_changed) (GtkActionObserver *observer, GtkActionObservable *observable, const gchar *action_name, const gchar *action_and_target); }; GType gtk_action_observer_get_type (void); void gtk_action_observer_action_added (GtkActionObserver *observer, GtkActionObservable *observable, const gchar *action_name, const GVariantType *parameter_type, gboolean enabled, GVariant *state); void gtk_action_observer_action_enabled_changed (GtkActionObserver *observer, GtkActionObservable *observable, const gchar *action_name, gboolean enabled); void gtk_action_observer_action_state_changed (GtkActionObserver *observer, GtkActionObservable *observable, const gchar *action_name, GVariant *state); void gtk_action_observer_action_removed (GtkActionObserver *observer, GtkActionObservable *observable, const gchar *action_name); void gtk_action_observer_primary_accel_changed (GtkActionObserver *observer, GtkActionObservable *observable, const gchar *action_name, const gchar *action_and_target); G_END_DECLS 07070100000284000041ED0000000000000000000000026712993F00000000000000000000000000000000000000000000002500000000gnome-shell-47.1/src/hotplug-sniffer07070100000285000081A40000000000000000000000016712993F00000B73000000000000000000000000000000000000003900000000gnome-shell-47.1/src/hotplug-sniffer/hotplug-mimetypes.h/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ #pragma once #include G_GNUC_UNUSED static const gchar *docs_mimetypes[] = { "application/vnd.oasis.opendocument.text", "application/vnd.oasis.opendocument.presentation", "application/vnd.oasis.opendocument.spreadsheet", "application/msword", "application/vnd.ms-excel", "application/vnd.ms-powerpoint", "application/rtf", "application/pdf", "application/x-bzpdf", "application/x-gzpdf", "application/x-xzpdf", "application/postscript", "application/x-bzpostscript", "application/x-gzpostscript", "image/x-eps", "image/x-bzeps", "image/x-gzeps", "application/x-dvi", "application/x-bzdvi", "application/x-gzdvi", "image/vnd.djvu", "application/x-cbr", "application/x-cbz", "application/x-cb7", "application/x-cbt", NULL }; G_GNUC_UNUSED static const gchar *video_mimetypes[] = { "application/mxf", "application/ogg", "application/ram", "application/sdp", "application/vnd.ms-wpl", "application/vnd.rn-realmedia", "application/x-extension-m4a", "application/x-extension-mp4", "application/x-flash-video", "application/x-matroska", "application/x-netshow-channel", "application/x-ogg", "application/x-quicktimeplayer", "application/x-shorten", "image/vnd.rn-realpix", "image/x-pict", "misc/ultravox", "text/x-google-video-pointer", "video/3gpp", "video/dv", "video/fli", "video/flv", "video/mp2t", "video/mp4", "video/mp4v-es", "video/mpeg", "video/msvideo", "video/ogg", "video/quicktime", "video/vivo", "video/vnd.divx", "video/vnd.rn-realvideo", "video/vnd.vivo", "video/webm", "video/x-anim", "video/x-avi", "video/x-flc", "video/x-fli", "video/x-flic", "video/x-flv", "video/x-m4v", "video/x-matroska", "video/x-mpeg", "video/x-ms-asf", "video/x-ms-asx", "video/x-msvideo", "video/x-ms-wm", "video/x-ms-wmv", "video/x-ms-wmx", "video/x-ms-wvx", "video/x-nsv", "video/x-ogm+ogg", "video/x-theora+ogg", "video/x-totem-stream", NULL }; G_GNUC_UNUSED static const gchar *audio_mimetypes[] = { "audio/3gpp", "audio/ac3", "audio/AMR", "audio/AMR-WB", "audio/basic", "audio/flac", "audio/midi", "audio/mp2", "audio/mp4", "audio/mpeg", "audio/ogg", "audio/prs.sid", "audio/vnd.rn-realaudio", "audio/x-aiff", "audio/x-ape", "audio/x-flac", "audio/x-gsm", "audio/x-it", "audio/x-m4a", "audio/x-matroska", "audio/x-mod", "audio/x-mp3", "audio/x-mpeg", "audio/x-ms-asf", "audio/x-ms-asx", "audio/x-ms-wax", "audio/x-ms-wma", "audio/x-musepack", "audio/x-pn-aiff", "audio/x-pn-au", "audio/x-pn-wav", "audio/x-pn-windows-acm", "audio/x-realaudio", "audio/x-real-audio", "audio/x-sbc", "audio/x-speex", "audio/x-tta", "audio/x-wav", "audio/x-wavpack", "audio/x-vorbis", "audio/x-vorbis+ogg", "audio/x-xm", NULL }; 07070100000286000081A40000000000000000000000016712993F00001E2F000000000000000000000000000000000000003700000000gnome-shell-47.1/src/hotplug-sniffer/hotplug-sniffer.c/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ /* * Copyright (C) 2011 Red Hat, Inc. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see . * * Authors: David Zeuthen * Cosimo Cecchi * */ #include "shell-mime-sniffer.h" #include "hotplug-mimetypes.h" /* Set the environment variable HOTPLUG_SNIFFER_DEBUG to show debug */ static void print_debug (const gchar *str, ...); #define BUS_NAME "org.gnome.Shell.HotplugSniffer" #define AUTOQUIT_TIMEOUT 5 static const gchar introspection_xml[] = "" " " " " " " " " " " " " ""; static GDBusNodeInfo *introspection_data = NULL; static GMainLoop *loop = NULL; static guint autoquit_id = 0; static gboolean autoquit_timeout_cb (gpointer _unused) { print_debug ("Timeout reached, quitting..."); autoquit_id = 0; g_main_loop_quit (loop); return FALSE; } static void ensure_autoquit_off (void) { if (g_getenv ("HOTPLUG_SNIFFER_PERSIST") != NULL) return; g_clear_handle_id (&autoquit_id, g_source_remove); } static void ensure_autoquit_on (void) { if (g_getenv ("HOTPLUG_SNIFFER_PERSIST") != NULL) return; autoquit_id = g_timeout_add_seconds (AUTOQUIT_TIMEOUT, autoquit_timeout_cb, NULL); g_source_set_name_by_id (autoquit_id, "[gnome-shell] autoquit_timeout_cb"); } typedef struct { GVariant *parameters; GDBusMethodInvocation *invocation; } InvocationData; static InvocationData * invocation_data_new (GVariant *params, GDBusMethodInvocation *invocation) { InvocationData *ret; ret = g_new0 (InvocationData, 1); ret->parameters = g_variant_ref (params); ret->invocation = g_object_ref (invocation); return ret; } static void invocation_data_free (InvocationData *data) { g_variant_unref (data->parameters); g_clear_object (&data->invocation); g_free (data); } static void sniff_async_ready_cb (GObject *source, GAsyncResult *res, gpointer user_data) { InvocationData *data = user_data; gchar **types; GError *error = NULL; types = shell_mime_sniffer_sniff_finish (SHELL_MIME_SNIFFER (source), res, &error); if (error != NULL) { g_dbus_method_invocation_return_gerror (data->invocation, error); g_error_free (error); goto out; } g_dbus_method_invocation_return_value (data->invocation, g_variant_new ("(^as)", types)); g_strfreev (types); out: invocation_data_free (data); ensure_autoquit_on (); } static void handle_sniff_uri (InvocationData *data) { ShellMimeSniffer *sniffer; const gchar *uri; GFile *file; ensure_autoquit_off (); g_variant_get (data->parameters, "(&s)", &uri, NULL); file = g_file_new_for_uri (uri); print_debug ("Initiating sniff for uri %s", uri); sniffer = shell_mime_sniffer_new (file); shell_mime_sniffer_sniff_async (sniffer, sniff_async_ready_cb, data); g_object_unref (sniffer); g_object_unref (file); } static void handle_method_call (GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation, gpointer user_data) { InvocationData *data; data = invocation_data_new (parameters, invocation); if (g_strcmp0 (method_name, "SniffURI") == 0) handle_sniff_uri (data); else g_assert_not_reached (); } static const GDBusInterfaceVTable interface_vtable = { handle_method_call, NULL, /* get_property */ NULL, /* set_property */ }; static void on_bus_acquired (GDBusConnection *connection, const gchar *name, gpointer user_data) { GError *error = NULL; print_debug ("Connected to the session bus: %s", name); g_dbus_connection_register_object (connection, "/org/gnome/Shell/HotplugSniffer", introspection_data->interfaces[0], &interface_vtable, NULL, NULL, &error); if (error != NULL) { g_printerr ("Error exporting object on the session bus: %s", error->message); g_error_free (error); _exit(1); } print_debug ("Object exported on the session bus"); } static void on_name_lost (GDBusConnection *connection, const gchar *name, gpointer user_data) { print_debug ("Lost bus name: %s, exiting", name); g_main_loop_quit (loop); } static void on_name_acquired (GDBusConnection *connection, const gchar *name, gpointer user_data) { print_debug ("Acquired bus name: %s", name); } int main (int argc, char **argv) { guint name_owner_id; introspection_data = g_dbus_node_info_new_for_xml (introspection_xml, NULL); g_assert (introspection_data != NULL); ensure_autoquit_on (); loop = g_main_loop_new (NULL, FALSE); name_owner_id = g_bus_own_name (G_BUS_TYPE_SESSION, BUS_NAME, 0, on_bus_acquired, on_name_acquired, on_name_lost, NULL, NULL); g_main_loop_run (loop); if (name_owner_id != 0) g_bus_unown_name (name_owner_id); if (loop != NULL) g_main_loop_unref (loop); return 0; } /* ---------------------------------------------------------------------------------------------------- */ static void __attribute__((format(printf, 1, 0))) print_debug (const gchar *format, ...) { g_autofree char *s = NULL; g_autofree char *timestamp = NULL; va_list ap; g_autoptr (GDateTime) now = NULL; static size_t once_init_value = 0; static gboolean show_debug = FALSE; static guint pid = 0; if (g_once_init_enter (&once_init_value)) { show_debug = (g_getenv ("HOTPLUG_SNIFFER_DEBUG") != NULL); pid = getpid (); g_once_init_leave (&once_init_value, 1); } if (!show_debug) goto out; now = g_date_time_new_now_local (); timestamp = g_date_time_format (now, "%H:%M:%S"); va_start (ap, format); s = g_strdup_vprintf (format, ap); va_end (ap); g_print ("gnome-shell-hotplug-sniffer[%d]: %s.%03d: %s\n", pid, timestamp, g_date_time_get_microsecond (now), s); out: ; } 07070100000287000081A40000000000000000000000016712993F000001FE000000000000000000000000000000000000003100000000gnome-shell-47.1/src/hotplug-sniffer/meson.buildhotplug_sources = [ 'hotplug-mimetypes.h', 'shell-mime-sniffer.h', 'shell-mime-sniffer.c', 'hotplug-sniffer.c' ] executable('gnome-shell-hotplug-sniffer', hotplug_sources, dependencies: [gio_dep, gdk_pixbuf_dep], include_directories: include_directories('../..'), install_dir: libexecdir, install: true ) service_file = 'org.gnome.Shell.HotplugSniffer.service' configure_file( input: service_file + '.in', output: service_file, configuration: service_data, install_dir: servicedir ) 07070100000288000081A40000000000000000000000016712993F00000062000000000000000000000000000000000000004F00000000gnome-shell-47.1/src/hotplug-sniffer/org.gnome.Shell.HotplugSniffer.service.in[D-BUS Service] Name=org.gnome.Shell.HotplugSniffer Exec=@libexecdir@/gnome-shell-hotplug-sniffer 07070100000289000081A40000000000000000000000016712993F00003E96000000000000000000000000000000000000003A00000000gnome-shell-47.1/src/hotplug-sniffer/shell-mime-sniffer.c/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ /* * Copyright (C) 1999, 2000, 2001 Eazel, Inc. * Copyright (C) 2011 Red Hat, Inc. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see . * * Author: Cosimo Cecchi * * The code for crawling the directory hierarchy is based on * nautilus/libnautilus-private/nautilus-directory-async.c, with * the following copyright and author: * * Copyright (C) 1999, 2000, 2001 Eazel, Inc. * Author: Darin Adler * */ #include "shell-mime-sniffer.h" #include "hotplug-mimetypes.h" #include #include #define LOADER_ATTRS \ G_FILE_ATTRIBUTE_STANDARD_TYPE "," \ G_FILE_ATTRIBUTE_STANDARD_NAME "," \ G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE "," #define WATCHDOG_TIMEOUT 1500 #define DIRECTORY_LOAD_ITEMS_PER_CALLBACK 100 #define HIGH_SCORE_RATIO 0.10 enum { PROP_FILE = 1, NUM_PROPERTIES }; static GHashTable *image_type_table = NULL; static GHashTable *audio_type_table = NULL; static GHashTable *video_type_table = NULL; static GHashTable *docs_type_table = NULL; static GParamSpec *properties[NUM_PROPERTIES] = { NULL, }; typedef struct { ShellMimeSniffer *self; GFile *file; GFileEnumerator *enumerator; GList *deep_count_subdirectories; gint audio_count; gint image_count; gint document_count; gint video_count; gint total_items; } DeepCountState; typedef struct _ShellMimeSnifferPrivate ShellMimeSnifferPrivate; struct _ShellMimeSniffer { GObject parent_instance; ShellMimeSnifferPrivate *priv; }; struct _ShellMimeSnifferPrivate { GFile *file; GCancellable *cancellable; guint watchdog_id; GTask *task; }; G_DEFINE_TYPE_WITH_PRIVATE (ShellMimeSniffer, shell_mime_sniffer, G_TYPE_OBJECT); static void deep_count_load (DeepCountState *state, GFile *file); static void init_mimetypes (void) { static gsize once_init = 0; if (g_once_init_enter (&once_init)) { GSList *formats, *l; GdkPixbufFormat *format; gchar **types; gint idx; image_type_table = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); video_type_table = g_hash_table_new (g_str_hash, g_str_equal); audio_type_table = g_hash_table_new (g_str_hash, g_str_equal); docs_type_table = g_hash_table_new (g_str_hash, g_str_equal); formats = gdk_pixbuf_get_formats (); for (l = formats; l != NULL; l = l->next) { format = l->data; types = gdk_pixbuf_format_get_mime_types (format); for (idx = 0; types[idx] != NULL; idx++) g_hash_table_insert (image_type_table, g_strdup (types[idx]), GINT_TO_POINTER (1)); g_strfreev (types); } g_slist_free (formats); for (idx = 0; audio_mimetypes[idx] != NULL; idx++) g_hash_table_insert (audio_type_table, (gpointer) audio_mimetypes[idx], GINT_TO_POINTER (1)); for (idx = 0; video_mimetypes[idx] != NULL; idx++) g_hash_table_insert (video_type_table, (gpointer) video_mimetypes[idx], GINT_TO_POINTER (1)); for (idx = 0; docs_mimetypes[idx] != NULL; idx++) g_hash_table_insert (docs_type_table, (gpointer) docs_mimetypes[idx], GINT_TO_POINTER (1)); g_once_init_leave (&once_init, 1); } } static void add_content_type_to_cache (DeepCountState *state, const gchar *content_type) { gboolean matched = TRUE; if (g_hash_table_lookup (image_type_table, content_type)) state->image_count++; else if (g_hash_table_lookup (video_type_table, content_type)) state->video_count++; else if (g_hash_table_lookup (docs_type_table, content_type)) state->document_count++; else if (g_hash_table_lookup (audio_type_table, content_type)) state->audio_count++; else matched = FALSE; if (matched) state->total_items++; } typedef struct { const gchar *type; gdouble ratio; } SniffedResult; static gint results_cmp_func (gconstpointer a, gconstpointer b) { const SniffedResult *sniffed_a = a; const SniffedResult *sniffed_b = b; if (sniffed_a->ratio < sniffed_b->ratio) return 1; if (sniffed_a->ratio > sniffed_b->ratio) return -1; return 0; } static void prepare_async_result (DeepCountState *state) { ShellMimeSniffer *self = state->self; GArray *results; GPtrArray *sniffed_mime; SniffedResult result; char **mimes; sniffed_mime = g_ptr_array_new (); results = g_array_new (TRUE, TRUE, sizeof (SniffedResult)); if (state->total_items == 0) goto out; result.type = "x-content/video"; result.ratio = (gdouble) state->video_count / (gdouble) state->total_items; g_array_append_val (results, result); result.type = "x-content/audio"; result.ratio = (gdouble) state->audio_count / (gdouble) state->total_items; g_array_append_val (results, result); result.type = "x-content/pictures"; result.ratio = (gdouble) state->image_count / (gdouble) state->total_items; g_array_append_val (results, result); result.type = "x-content/documents"; result.ratio = (gdouble) state->document_count / (gdouble) state->total_items; g_array_append_val (results, result); g_array_sort (results, results_cmp_func); result = g_array_index (results, SniffedResult, 0); g_ptr_array_add (sniffed_mime, g_strdup (result.type)); /* if other types score high in ratio, add them, up to three */ result = g_array_index (results, SniffedResult, 1); if (result.ratio < HIGH_SCORE_RATIO) goto out; g_ptr_array_add (sniffed_mime, g_strdup (result.type)); result = g_array_index (results, SniffedResult, 2); if (result.ratio < HIGH_SCORE_RATIO) goto out; g_ptr_array_add (sniffed_mime, g_strdup (result.type)); out: g_ptr_array_add (sniffed_mime, NULL); mimes = (gchar **) g_ptr_array_free (sniffed_mime, FALSE); g_array_free (results, TRUE); g_task_return_pointer (self->priv->task, mimes, (GDestroyNotify)g_strfreev); } /* adapted from nautilus/libnautilus-private/nautilus-directory-async.c */ static void deep_count_one (DeepCountState *state, GFileInfo *info) { GFile *subdir; const char *content_type; if (g_file_info_get_file_type (info) == G_FILE_TYPE_DIRECTORY) { /* record the fact that we have to descend into this directory */ subdir = g_file_get_child (state->file, g_file_info_get_name (info)); state->deep_count_subdirectories = g_list_append (state->deep_count_subdirectories, subdir); } else { content_type = g_file_info_get_content_type (info); if (content_type) add_content_type_to_cache (state, content_type); } } static void deep_count_finish (DeepCountState *state) { prepare_async_result (state); if (state->enumerator) { if (!g_file_enumerator_is_closed (state->enumerator)) g_file_enumerator_close_async (state->enumerator, 0, NULL, NULL, NULL); g_object_unref (state->enumerator); } g_cancellable_reset (state->self->priv->cancellable); g_clear_object (&state->file); g_list_free_full (state->deep_count_subdirectories, g_object_unref); g_free (state); } static void deep_count_next_dir (DeepCountState *state) { GFile *new_file; g_clear_object (&state->file); if (state->deep_count_subdirectories != NULL) { /* Work on a new directory. */ new_file = state->deep_count_subdirectories->data; state->deep_count_subdirectories = g_list_remove (state->deep_count_subdirectories, new_file); deep_count_load (state, new_file); g_object_unref (new_file); } else { deep_count_finish (state); } } static void deep_count_more_files_callback (GObject *source_object, GAsyncResult *res, gpointer user_data) { DeepCountState *state; GList *files, *l; GFileInfo *info; state = user_data; if (g_cancellable_is_cancelled (state->self->priv->cancellable)) { deep_count_finish (state); return; } files = g_file_enumerator_next_files_finish (state->enumerator, res, NULL); for (l = files; l != NULL; l = l->next) { info = l->data; deep_count_one (state, info); g_object_unref (info); } if (files == NULL) { g_file_enumerator_close_async (state->enumerator, 0, NULL, NULL, NULL); g_object_unref (state->enumerator); state->enumerator = NULL; deep_count_next_dir (state); } else { g_file_enumerator_next_files_async (state->enumerator, DIRECTORY_LOAD_ITEMS_PER_CALLBACK, G_PRIORITY_LOW, state->self->priv->cancellable, deep_count_more_files_callback, state); } g_list_free (files); } static void deep_count_callback (GObject *source_object, GAsyncResult *res, gpointer user_data) { DeepCountState *state; GFileEnumerator *enumerator; state = user_data; if (g_cancellable_is_cancelled (state->self->priv->cancellable)) { deep_count_finish (state); return; } enumerator = g_file_enumerate_children_finish (G_FILE (source_object), res, NULL); if (enumerator == NULL) { deep_count_next_dir (state); } else { state->enumerator = enumerator; g_file_enumerator_next_files_async (state->enumerator, DIRECTORY_LOAD_ITEMS_PER_CALLBACK, G_PRIORITY_LOW, state->self->priv->cancellable, deep_count_more_files_callback, state); } } static void deep_count_load (DeepCountState *state, GFile *file) { state->file = g_object_ref (file); g_file_enumerate_children_async (state->file, LOADER_ATTRS, G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, /* flags */ G_PRIORITY_LOW, /* prio */ state->self->priv->cancellable, deep_count_callback, state); } static void deep_count_start (ShellMimeSniffer *self) { DeepCountState *state; state = g_new0 (DeepCountState, 1); state->self = self; deep_count_load (state, self->priv->file); } static void query_info_async_ready_cb (GObject *source, GAsyncResult *res, gpointer user_data) { GFileInfo *info; GError *error = NULL; ShellMimeSniffer *self = user_data; info = g_file_query_info_finish (G_FILE (source), res, &error); if (error != NULL) { g_task_return_error (self->priv->task, error); return; } if (g_file_info_get_file_type (info) != G_FILE_TYPE_DIRECTORY) { g_task_return_new_error (self->priv->task, G_IO_ERROR, G_IO_ERROR_NOT_DIRECTORY, "Not a directory"); return; } deep_count_start (self); } static gboolean watchdog_timeout_reached_cb (gpointer user_data) { ShellMimeSniffer *self = user_data; self->priv->watchdog_id = 0; g_cancellable_cancel (self->priv->cancellable); return FALSE; } static void start_loading_file (ShellMimeSniffer *self) { g_file_query_info_async (self->priv->file, LOADER_ATTRS, G_FILE_QUERY_INFO_NONE, G_PRIORITY_DEFAULT, self->priv->cancellable, query_info_async_ready_cb, self); } static void shell_mime_sniffer_set_file (ShellMimeSniffer *self, GFile *file) { g_clear_object (&self->priv->file); self->priv->file = g_object_ref (file); } static void shell_mime_sniffer_dispose (GObject *object) { ShellMimeSniffer *self = SHELL_MIME_SNIFFER (object); g_clear_object (&self->priv->file); g_clear_object (&self->priv->cancellable); g_clear_object (&self->priv->task); g_clear_handle_id (&self->priv->watchdog_id, g_source_remove); G_OBJECT_CLASS (shell_mime_sniffer_parent_class)->dispose (object); } static void shell_mime_sniffer_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { ShellMimeSniffer *self = SHELL_MIME_SNIFFER (object); switch (prop_id) { case PROP_FILE: g_value_set_object (value, self->priv->file); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } } static void shell_mime_sniffer_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { ShellMimeSniffer *self = SHELL_MIME_SNIFFER (object); switch (prop_id) { case PROP_FILE: shell_mime_sniffer_set_file (self, g_value_get_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } } static void shell_mime_sniffer_class_init (ShellMimeSnifferClass *klass) { GObjectClass *oclass; oclass = G_OBJECT_CLASS (klass); oclass->dispose = shell_mime_sniffer_dispose; oclass->get_property = shell_mime_sniffer_get_property; oclass->set_property = shell_mime_sniffer_set_property; properties[PROP_FILE] = g_param_spec_object ("file", NULL, NULL, G_TYPE_FILE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_properties (oclass, NUM_PROPERTIES, properties); } static void shell_mime_sniffer_init (ShellMimeSniffer *self) { self->priv = shell_mime_sniffer_get_instance_private (self); init_mimetypes (); } ShellMimeSniffer * shell_mime_sniffer_new (GFile *file) { return g_object_new (SHELL_TYPE_MIME_SNIFFER, "file", file, NULL); } void shell_mime_sniffer_sniff_async (ShellMimeSniffer *self, GAsyncReadyCallback callback, gpointer user_data) { g_assert (self->priv->watchdog_id == 0); g_assert (self->priv->task == NULL); self->priv->cancellable = g_cancellable_new (); self->priv->task = g_task_new (self, self->priv->cancellable, callback, user_data); self->priv->watchdog_id = g_timeout_add (WATCHDOG_TIMEOUT, watchdog_timeout_reached_cb, self); g_source_set_name_by_id (self->priv->watchdog_id, "[gnome-shell] watchdog_timeout_reached_cb"); start_loading_file (self); } gchar ** shell_mime_sniffer_sniff_finish (ShellMimeSniffer *self, GAsyncResult *res, GError **error) { return g_task_propagate_pointer (self->priv->task, error); } 0707010000028A000081A40000000000000000000000016712993F000005E4000000000000000000000000000000000000003A00000000gnome-shell-47.1/src/hotplug-sniffer/shell-mime-sniffer.h/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ /* * Copyright (C) 2011 Red Hat, Inc. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see . * * Author: Cosimo Cecchi * */ #pragma once #include #include G_BEGIN_DECLS #define SHELL_TYPE_MIME_SNIFFER (shell_mime_sniffer_get_type ()) G_DECLARE_FINAL_TYPE (ShellMimeSniffer, shell_mime_sniffer, SHELL, MIME_SNIFFER, GObject) ShellMimeSniffer *shell_mime_sniffer_new (GFile *file); void shell_mime_sniffer_sniff_async (ShellMimeSniffer *self, GAsyncReadyCallback callback, gpointer user_data); gchar ** shell_mime_sniffer_sniff_finish (ShellMimeSniffer *self, GAsyncResult *res, GError **error); G_END_DECLS 0707010000028B000081A40000000000000000000000016712993F0000517F000000000000000000000000000000000000001C00000000gnome-shell-47.1/src/main.c/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ #define _GNU_SOURCE #include "config.h" #if defined (HAVE_MALLINFO) || defined (HAVE_MALLINFO2) #include #endif #include #include #include #include #include #include #include #include #include #include #include #ifdef HAVE_EXE_INTROSPECTION #include #include #endif #include "shell-global.h" #include "shell-global-private.h" #include "shell-perf-log.h" #include "st.h" extern GType gnome_shell_plugin_get_type (void); #define SHELL_DBUS_SERVICE "org.gnome.Shell" #define WM_NAME "GNOME Shell" #define GNOME_WM_KEYBINDINGS "Mutter,GNOME Shell" static gboolean is_gdm_mode = FALSE; static char *session_mode = NULL; static int caught_signal = 0; static gboolean force_animations = FALSE; static char *script_path = NULL; #define DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER 1 #define DBUS_REQUEST_NAME_REPLY_ALREADY_OWNER 4 enum { SHELL_DEBUG_BACKTRACE_WARNINGS = 1, SHELL_DEBUG_BACKTRACE_SEGFAULTS = 2, }; static int _shell_debug; static gboolean _tracked_signals[NSIG] = { 0 }; static void shell_dbus_acquire_name (GDBusProxy *bus, guint32 request_name_flags, guint32 *request_name_result, const gchar *name, gboolean fatal) { GError *error = NULL; GVariant *request_name_variant; if (!(request_name_variant = g_dbus_proxy_call_sync (bus, "RequestName", g_variant_new ("(su)", name, request_name_flags), 0, /* call flags */ -1, /* timeout */ NULL, /* cancellable */ &error))) { g_printerr ("failed to acquire %s: %s\n", name, error->message); g_clear_error (&error); if (!fatal) return; exit (1); } g_variant_get (request_name_variant, "(u)", request_name_result); g_variant_unref (request_name_variant); } static void shell_dbus_init (gboolean replace) { GDBusConnection *session; GDBusProxy *bus; GError *error = NULL; guint32 request_name_flags; guint32 request_name_result; session = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error); if (error) { g_printerr ("Failed to connect to session bus: %s\n", error->message); exit (1); } bus = g_dbus_proxy_new_sync (session, G_DBUS_PROXY_FLAGS_NONE, NULL, /* interface info */ "org.freedesktop.DBus", "/org/freedesktop/DBus", "org.freedesktop.DBus", NULL, /* cancellable */ &error); if (!bus) { g_printerr ("Failed to get a session bus proxy: %s\n", error->message); exit (1); } request_name_flags = G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT; if (replace) request_name_flags |= G_BUS_NAME_OWNER_FLAGS_REPLACE; shell_dbus_acquire_name (bus, request_name_flags, &request_name_result, SHELL_DBUS_SERVICE, TRUE); if (!(request_name_result == DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER || request_name_result == DBUS_REQUEST_NAME_REPLY_ALREADY_OWNER)) { g_printerr (SHELL_DBUS_SERVICE " already exists on bus and --replace not specified\n"); exit (1); } g_object_unref (bus); g_object_unref (session); } #ifdef HAVE_EXE_INTROSPECTION static void maybe_add_rpath_introspection_paths (void) { ElfW (Dyn) *dyn; ElfW (Dyn) *rpath = NULL; ElfW (Dyn) *runpath = NULL; const char *strtab = NULL; g_auto (GStrv) paths = NULL; g_autofree char *exe_dir = NULL; GStrv str; Dl_info dl_info; struct link_map *link_map = NULL; for (dyn = _DYNAMIC; dyn->d_tag != DT_NULL; dyn++) { if (dyn->d_tag == DT_RPATH) rpath = dyn; else if (dyn->d_tag == DT_RUNPATH) runpath = dyn; else if (dyn->d_tag == DT_STRTAB) strtab = (const char *) dyn->d_un.d_val; } if ((!rpath && !runpath) || !strtab) return; if (dladdr1 (_DYNAMIC, &dl_info, (void **) &link_map, RTLD_DL_LINKMAP)) { /* Sanity check */ g_return_if_fail ((void *) _DYNAMIC == (void *) link_map->l_ld); /* strtab should be at an offset above our load address. If it's not * then this is a special architecture (riscv, mips) that has a * readonly _DYNAMIC section that's not relocated. So in that case * strtab is currently an offset rather than an address. Let's make it * an address... */ if (strtab < (const char *) link_map->l_addr) strtab += link_map->l_addr; } if (rpath) paths = g_strsplit (strtab + rpath->d_un.d_val, ":", -1); else paths = g_strsplit (strtab + runpath->d_un.d_val, ":", -1); if (!paths) return; for (str = paths; *str; str++) { g_autoptr (GError) error = NULL; g_autoptr (GString) rpath_dir = NULL; if (!strstr (*str, "$ORIGIN")) continue; if (!exe_dir) { g_autofree char *exe_path = NULL; exe_path = g_file_read_link ("/proc/self/exe", &error); if (!exe_path) { g_warning ("Failed to find directory of executable: %s", error->message); return; } exe_dir = g_path_get_dirname (exe_path); } rpath_dir = g_string_new (*str); g_string_replace (rpath_dir, "$ORIGIN", exe_dir, 0); g_debug ("Prepending RPATH directory '%s' " "to introsepciton library search path", rpath_dir->str); g_irepository_prepend_search_path (rpath_dir->str); g_irepository_prepend_library_path (rpath_dir->str); } } #endif /* HAVE_EXE_INTROSPECTION */ static void shell_introspection_init (void) { g_irepository_prepend_search_path (MUTTER_TYPELIB_DIR); g_irepository_prepend_search_path (SHELL_TYPELIB_DIR); /* We need to explicitly add the directories where the private libraries are * installed to the GIR's library path, so that they can be found at runtime * when linking using DT_RUNPATH (instead of DT_RPATH), which is the default * for some linkers (e.g. gold) and in some distros (e.g. Debian). */ g_irepository_prepend_library_path (MUTTER_TYPELIB_DIR); g_irepository_prepend_library_path (GNOME_SHELL_PKGLIBDIR); #ifdef HAVE_EXE_INTROSPECTION maybe_add_rpath_introspection_paths (); #endif } static void shell_profiler_init (void) { ShellGlobal *global; GjsProfiler *profiler; GjsContext *context; const char *enabled; const char *fd_str; int fd = -1; /* Sysprof uses the "GJS_TRACE_FD=N" environment variable to connect GJS * profiler data to the combined Sysprof capture. Since we are in control of * the GjsContext, we need to proxy this FD across to the GJS profiler. */ fd_str = g_getenv ("GJS_TRACE_FD"); enabled = g_getenv ("GJS_ENABLE_PROFILER"); if (fd_str == NULL || enabled == NULL) return; global = shell_global_get (); g_return_if_fail (global); context = _shell_global_get_gjs_context (global); g_return_if_fail (context); profiler = gjs_context_get_profiler (context); g_return_if_fail (profiler); if (fd_str) { fd = atoi (fd_str); if (fd > 2) { gjs_profiler_set_fd (profiler, fd); gjs_profiler_start (profiler); } } } static void shell_profiler_shutdown (void) { ShellGlobal *global; GjsProfiler *profiler; GjsContext *context; global = shell_global_get (); context = _shell_global_get_gjs_context (global); profiler = gjs_context_get_profiler (context); if (profiler) gjs_profiler_stop (profiler); } static void malloc_statistics_callback (ShellPerfLog *perf_log, gpointer data) { #if defined (HAVE_MALLINFO) || defined (HAVE_MALLINFO2) #ifdef HAVE_MALLINFO2 struct mallinfo2 info = mallinfo2 (); #else struct mallinfo info = mallinfo (); #endif shell_perf_log_update_statistic_i (perf_log, "malloc.arenaSize", info.arena); shell_perf_log_update_statistic_i (perf_log, "malloc.mmapSize", info.hblkhd); shell_perf_log_update_statistic_i (perf_log, "malloc.usedSize", info.uordblks); #endif /* defined (HAVE_MALLINFO) || defined (HAVE_MALLINFO2) */ } static void shell_perf_log_init (void) { ShellPerfLog *perf_log = shell_perf_log_get_default (); /* For probably historical reasons, mallinfo() defines the returned values, * even those in bytes as int, not size_t. We're determined not to use * more than 2G of malloc'ed memory, so are OK with that. */ shell_perf_log_define_statistic (perf_log, "malloc.arenaSize", "Amount of memory allocated by malloc() with brk(), in bytes", "i"); shell_perf_log_define_statistic (perf_log, "malloc.mmapSize", "Amount of memory allocated by malloc() with mmap(), in bytes", "i"); shell_perf_log_define_statistic (perf_log, "malloc.usedSize", "Amount of malloc'ed memory currently in use", "i"); shell_perf_log_add_statistics_callback (perf_log, malloc_statistics_callback, NULL, NULL); } static void shell_a11y_init (void) { if (clutter_get_accessibility_enabled () == FALSE) { g_warning ("Accessibility: clutter has no accessibility enabled" " skipping the atk-bridge load"); } else { atk_bridge_adaptor_init (NULL, NULL); } } static void shell_init_debug (const char *debug_env) { static const GDebugKey keys[] = { { "backtrace-warnings", SHELL_DEBUG_BACKTRACE_WARNINGS }, { "backtrace-segfaults", SHELL_DEBUG_BACKTRACE_SEGFAULTS }, }; _shell_debug = g_parse_debug_string (debug_env, keys, G_N_ELEMENTS (keys)); } static GLogWriterOutput default_log_writer (GLogLevelFlags log_level, const GLogField *fields, gsize n_fields, gpointer user_data) { GLogWriterOutput output; int i; output = g_log_writer_default (log_level, fields, n_fields, user_data); if ((_shell_debug & SHELL_DEBUG_BACKTRACE_WARNINGS) && ((log_level & G_LOG_LEVEL_CRITICAL) || (log_level & G_LOG_LEVEL_WARNING))) { const char *log_domain = NULL; for (i = 0; i < n_fields; i++) { if (g_strcmp0 (fields[i].key, "GLIB_DOMAIN") == 0) { log_domain = fields[i].value; break; } } /* Filter out Gjs logs, those already have the stack */ if (g_strcmp0 (log_domain, "Gjs") != 0) gjs_dumpstack (); } return output; } static GLogWriterOutput shut_up (GLogLevelFlags log_level, const GLogField *fields, gsize n_fields, gpointer user_data) { return (GLogWriterOutput) {0}; } static void dump_gjs_stack_alarm_sigaction (int signo) { g_log_set_writer_func (g_log_writer_default, NULL, NULL); g_warning ("Failed to dump Javascript stack, got stuck"); g_log_set_writer_func (default_log_writer, NULL, NULL); raise (caught_signal); } static void dump_gjs_stack_on_signal_handler (int signo) { struct sigaction sa = { .sa_handler = dump_gjs_stack_alarm_sigaction }; gsize i; /* Ignore all the signals starting this point, a part the one we'll raise * (which is implicitly ignored here through SA_RESETHAND), this is needed * not to get this handler being called by other signals that we were * tracking and that might be emitted by code called starting from now. */ for (i = 0; i < G_N_ELEMENTS (_tracked_signals); ++i) { if (_tracked_signals[i] && i != signo) signal (i, SIG_IGN); } /* Waiting at least 5 seconds for the dumpstack, if it fails, we raise the error */ caught_signal = signo; sigemptyset (&sa.sa_mask); sigaction (SIGALRM, &sa, NULL); alarm (5); gjs_dumpstack (); alarm (0); raise (signo); } static void dump_gjs_stack_on_signal (int signo) { struct sigaction sa = { .sa_flags = SA_RESETHAND | SA_NODEFER, .sa_handler = dump_gjs_stack_on_signal_handler, }; sigemptyset (&sa.sa_mask); sigaction (signo, &sa, NULL); _tracked_signals[signo] = TRUE; } static gboolean list_modes (const char *option_name, const char *value, gpointer data, GError **error) { ShellGlobal *global; GjsContext *context; uint8_t status; /* Many of our imports require global to be set, so rather than * tayloring our imports carefully here to avoid that dependency, * we just set it. */ g_log_set_writer_func (shut_up, NULL, NULL); _shell_global_init (NULL); global = shell_global_get (); context = _shell_global_get_gjs_context (global); shell_introspection_init (); if (!gjs_context_eval_module_file (context, "resource:///org/gnome/shell/ui/listModes.js", &status, NULL)) g_message ("Retrieving list of available modes failed."); g_object_unref (context); exit (status); } static gboolean print_version (const gchar *option_name, const gchar *value, gpointer data, GError **error) { g_print ("GNOME Shell %s\n", VERSION); exit (0); } GOptionEntry gnome_shell_options[] = { { "version", 0, G_OPTION_FLAG_NO_ARG, G_OPTION_ARG_CALLBACK, print_version, N_("Print version"), NULL }, { "gdm-mode", 0, G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_NONE, &is_gdm_mode, N_("Mode used by GDM for login screen"), NULL }, { "mode", 0, 0, G_OPTION_ARG_STRING, &session_mode, N_("Use a specific mode, e.g. “gdm” for login screen"), "MODE" }, { "list-modes", 0, G_OPTION_FLAG_NO_ARG, G_OPTION_ARG_CALLBACK, list_modes, N_("List possible modes"), NULL }, { "force-animations", 0, G_OPTION_FLAG_NONE, G_OPTION_ARG_NONE, &force_animations, N_("Force animations to be enabled"), NULL }, { "automation-script", 0, G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_FILENAME, &script_path, "", NULL }, { NULL } }; static gboolean on_sigterm (gpointer user_data) { MetaContext *context = META_CONTEXT (user_data); meta_context_terminate (context); return G_SOURCE_REMOVE; } static void init_signal_handlers (MetaContext *context) { struct sigaction act = { 0 }; sigset_t empty_mask; sigemptyset (&empty_mask); act.sa_handler = SIG_IGN; act.sa_mask = empty_mask; act.sa_flags = 0; if (sigaction (SIGPIPE, &act, NULL) < 0) g_warning ("Failed to register SIGPIPE handler: %s", g_strerror (errno)); #ifdef SIGXFSZ if (sigaction (SIGXFSZ, &act, NULL) < 0) g_warning ("Failed to register SIGXFSZ handler: %s", g_strerror (errno)); #endif g_unix_signal_add (SIGTERM, on_sigterm, context); } static void change_to_home_directory (void) { const char *home_dir; home_dir = g_get_home_dir (); if (!home_dir) return; if (chdir (home_dir) < 0) g_warning ("Could not change to home directory %s", home_dir); } int main (int argc, char **argv) { g_autoptr (MetaContext) context = NULL; g_autoptr (GFile) automation_script = NULL; g_autofree char *cwd = NULL; GError *error = NULL; int ecode = EXIT_SUCCESS; bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); /* FIXME: Add gjs API to set this stuff and don't depend on the * environment. These propagate to child processes. */ g_setenv ("GJS_DEBUG_OUTPUT", "stderr", TRUE); g_setenv ("GJS_DEBUG_TOPICS", "JS ERROR;JS LOG", TRUE); context = meta_create_context (WM_NAME); meta_context_add_option_entries (context, gnome_shell_options, GETTEXT_PACKAGE); meta_context_add_option_group (context, g_irepository_get_option_group ()); session_mode = (char *) g_getenv ("GNOME_SHELL_SESSION_MODE"); if (!meta_context_configure (context, &argc, &argv, &error)) { g_printerr ("Failed to configure: %s\n", error->message); return EXIT_FAILURE; } meta_context_set_plugin_gtype (context, gnome_shell_plugin_get_type ()); meta_context_set_gnome_wm_keybindings (context, GNOME_WM_KEYBINDINGS); init_signal_handlers (context); cwd = g_get_current_dir (); change_to_home_directory (); if (session_mode == NULL) session_mode = is_gdm_mode ? (char *)"gdm" : (char *)"user"; dump_gjs_stack_on_signal (SIGABRT); dump_gjs_stack_on_signal (SIGFPE); dump_gjs_stack_on_signal (SIGIOT); dump_gjs_stack_on_signal (SIGTRAP); if ((_shell_debug & SHELL_DEBUG_BACKTRACE_SEGFAULTS)) { dump_gjs_stack_on_signal (SIGBUS); dump_gjs_stack_on_signal (SIGSEGV); } if (script_path) automation_script = g_file_new_for_commandline_arg_and_cwd (script_path, cwd); /* Initialize the Shell global, including GjsContext * GjsContext will iterate the default main loop to * resolve internal modules. */ _shell_global_init ("session-mode", session_mode, "force-animations", force_animations, "automation-script", automation_script, NULL); /* Setup Meta _after_ the Shell global to avoid GjsContext * iterating on the main loop once Meta starts adding events */ if (!meta_context_setup (context, &error)) { g_printerr ("Failed to setup: %s\n", error->message); return EXIT_FAILURE; } shell_init_debug (g_getenv ("SHELL_DEBUG")); shell_dbus_init (meta_context_is_replacing (context)); shell_a11y_init (); shell_perf_log_init (); shell_introspection_init (); g_log_set_writer_func (default_log_writer, NULL, NULL); shell_profiler_init (); if (meta_context_get_compositor_type (context) == META_COMPOSITOR_TYPE_WAYLAND) meta_context_raise_rlimit_nofile (context, NULL); if (!meta_context_start (context, &error)) { g_printerr ("GNOME Shell failed to start: %s\n", error->message); return EXIT_FAILURE; } /* init.js calls meta_context_start_main_loop(), gjs_context_eval_module_file() * will not return until Mutter is exited. */ GjsContext *gjs_context = _shell_global_get_gjs_context (shell_global_get()); uint8_t status; if (!gjs_context_eval_module_file (gjs_context, "resource:///org/gnome/shell/ui/init.js", &status, &error)) { g_message ("Execution of main.js threw exception: %s", error->message); g_error_free (error); /* We just exit() here, since in a development environment you'll get the * error in your shell output, and it's way better than a busted WM, * which typically manifests as a white screen. * * In production, we shouldn't crash =) But if we do, we should get * restarted by the session infrastructure, which is likely going * to be better than some undefined state. * * If there was a generic "hook into bug-buddy for non-C crashes" * infrastructure, here would be the place to put it. */ g_object_unref (gjs_context); exit (1); } g_message ("Shutting down GNOME Shell"); _shell_global_notify_shutdown (shell_global_get ()); shell_profiler_shutdown (); g_debug ("Tearing down the gjs context"); _shell_global_destroy_gjs_context (shell_global_get ()); g_object_unref (shell_global_get ()); g_debug ("Tearing down the mutter context"); meta_context_destroy (g_steal_pointer (&context)); return ecode; } 0707010000028C000081A40000000000000000000000016712993F00001CAB000000000000000000000000000000000000002100000000gnome-shell-47.1/src/meson.buildsrc_builddir = meson.current_build_dir() service_data = configuration_data() service_data.set('libexecdir', libexecdir) introspection_common = { 'install_dir_gir': pkgdatadir, 'install_dir_typelib': pkglibdir, 'install': true, 'fatal_warnings': get_option('werror'), } subdir('calendar-server') subdir('hotplug-sniffer') subdir('st') if have_x11_client subdir('tray') endif script_data = configuration_data() script_data.set('bindir', bindir) script_data.set('datadir', datadir) script_data.set('libdir', libdir) script_data.set('libexecdir', libexecdir) script_data.set('pkgdatadir', pkgdatadir) script_data.set('pkglibdir', pkglibdir) script_data.set('PYTHON', python.full_path()) script_data.set('VERSION', meson.project_version()) test_tool = configure_file( input: 'gnome-shell-test-tool.in', output: 'gnome-shell-test-tool', configuration: script_data, install_dir: bindir ) if get_option('extensions_tool') configure_file( input: 'gnome-shell-extension-tool.in', output: 'gnome-shell-extension-tool', configuration: script_data, install_dir: bindir ) endif typelib_cflags = [ '-DMUTTER_TYPELIB_DIR="@0@"'.format(mutter_typelibdir), '-DSHELL_TYPELIB_DIR="@0@"'.format(pkglibdir), ] gnome_shell_cflags = [ '-DCLUTTER_ENABLE_EXPERIMENTAL_API', '-DCOGL_ENABLE_EXPERIMENTAL_API', '-DVERSION="@0@"'.format(meson.project_version()), '-DLOCALEDIR="@0@"'.format(localedir), '-DDATADIR="@0@"'.format(datadir), '-DGNOME_SHELL_LIBEXECDIR="@0@"'.format(libexecdir), '-DGNOME_SHELL_DATADIR="@0@"'.format(pkgdatadir), '-DGNOME_SHELL_PKGLIBDIR="@0@"'.format(pkglibdir) ] install_rpath = ':'.join([mutter_typelibdir, pkglibdir]) gnome_shell_deps = [ gio_unix_dep, libxml_dep, atk_bridge_dep, gdk_pixbuf_dep, gjs_dep, mtk_dep, clutter_dep, cogl_pango_dep, gi_dep, polkit_dep, gcr_dep, libsystemd_dep, libpipewire_dep, ] if have_x11_client gnome_shell_deps += x11_dep endif gnome_shell_deps += nm_deps tools_cflags = '-DLOCALEDIR="@0@"'.format(localedir) tools_deps = [gio_dep, gjs_dep] libshell_menu_sources = [ 'gtkactionmuxer.h', 'gtkactionmuxer.c', 'gtkactionobservable.h', 'gtkactionobservable.c', 'gtkactionobserver.h', 'gtkactionobserver.c' ] libshell_menu = library('gnome-shell-menu', sources: libshell_menu_sources, dependencies: [gio_dep, clutter_dep, mtk_dep], include_directories: conf_inc, build_rpath: mutter_typelibdir, install_rpath: mutter_typelibdir, install_dir: pkglibdir, install: true ) libshell_menu_dep = declare_dependency(link_with: libshell_menu) libshell_public_headers = [ 'shell-app.h', 'shell-app-system.h', 'shell-app-usage.h', 'shell-blur-effect.h', 'shell-camera-monitor.h', 'shell-glsl-effect.h', 'shell-global.h', 'shell-invert-lightness-effect.h', 'shell-action-modes.h', 'shell-mount-operation.h', 'shell-perf-log.h', 'shell-screenshot.h', 'shell-square-bin.h', 'shell-stack.h', 'shell-util.h', 'shell-window-preview.h', 'shell-window-preview-layout.h', 'shell-window-tracker.h', 'shell-wm.h', 'shell-workspace-background.h' ] if have_x11_client libshell_public_headers += [ 'shell-tray-icon.h', 'shell-tray-manager.h', ] endif if have_networkmanager libshell_public_headers += 'shell-network-agent.h' endif libshell_private_headers = [ 'shell-app-private.h', 'shell-app-cache-private.h', 'shell-app-system-private.h', 'shell-global-private.h', 'shell-window-tracker-private.h', 'shell-wm-private.h' ] if have_x11_client libshell_private_headers += [ 'shell-tray-icon-private.h', ] endif libshell_sources = [ 'gnome-shell-plugin.c', 'shell-app.c', 'shell-app-system.c', 'shell-app-usage.c', 'shell-blur-effect.c', 'shell-camera-monitor.c', 'shell-global.c', 'shell-glsl-effect.c', 'shell-invert-lightness-effect.c', 'shell-keyring-prompt.c', 'shell-keyring-prompt.h', 'shell-mount-operation.c', 'shell-perf-log.c', 'shell-polkit-authentication-agent.c', 'shell-polkit-authentication-agent.h', 'shell-screenshot.c', 'shell-secure-text-buffer.c', 'shell-secure-text-buffer.h', 'shell-square-bin.c', 'shell-stack.c', 'shell-util.c', 'shell-window-preview.c', 'shell-window-preview-layout.c', 'shell-window-tracker.c', 'shell-wm.c', 'shell-workspace-background.c' ] if have_x11_client libshell_sources += [ 'shell-tray-icon.c', 'shell-tray-manager.c', ] endif if have_networkmanager libshell_sources += 'shell-network-agent.c' endif libshell_private_sources = [ 'shell-app-cache.c', ] libshell_enums = gnome.mkenums_simple('shell-enum-types', sources: libshell_public_headers ) libshell_gir_sources = [ libshell_enums, libshell_public_headers, libshell_sources ] libshell_no_gir_sources = [ js_resources, libshell_private_headers, libshell_private_sources ] dbus_generated = gnome.gdbus_codegen('org-gtk-application', 'org.gtk.Application.xml', namespace: 'Shell' ) dbus_generated += gnome.gdbus_codegen('switcheroo-control', '../data/dbus-interfaces/net.hadess.SwitcherooControl.xml', namespace: 'Shell' ) libshell_no_gir_sources += dbus_generated libshell_link_with = [] if have_x11_client libshell_link_with += [libtray] endif libshell = library('shell-' + mutter_api_version, sources: libshell_gir_sources + libshell_no_gir_sources, dependencies: gnome_shell_deps + [libshell_menu_dep, libst_dep, mutter_dep, gnome_desktop_dep, m_dep], include_directories: [conf_inc, st_inc, include_directories('tray')], c_args: gnome_shell_cflags, link_with: libshell_link_with, build_rpath: mutter_typelibdir, install_rpath: install_rpath, install_dir: pkglibdir, install: true ) libshell_dep = declare_dependency(link_with: libshell) libshell_gir_includes = [ 'Clutter-@0@'.format(mutter_api_version), 'Meta-@0@'.format(mutter_api_version), 'Gcr-4', 'PolkitAgent-1.0', 'GdkPixbuf-2.0' ] if have_networkmanager libshell_gir_includes += ['NM-1.0'] endif libshell_gir_includes += [ libgvc_gir[0], libst_gir[0] ] libshell_gir = gnome.generate_gir(libshell, sources: libshell_gir_sources, nsversion: mutter_api_version, namespace: 'Shell', includes: libshell_gir_includes, extra_args: ['--quiet'], kwargs: introspection_common, ) executable('gnome-shell', 'main.c', c_args: gnome_shell_cflags + typelib_cflags, dependencies: gnome_shell_deps + [libshell_dep, libst_dep, mutter_dep], include_directories: [conf_inc, st_inc, include_directories('tray')], build_rpath: mutter_typelibdir, install_rpath: install_rpath, install: true ) if have_portal_helper executable('gnome-shell-portal-helper', 'gnome-shell-portal-helper.c', portal_resources, c_args: tools_cflags, dependencies: tools_deps, include_directories: [conf_inc], install_dir: libexecdir, install: true ) endif executable('gnome-shell-perf-helper', 'shell-perf-helper.c', js_resources, dependencies: [gtk_dep, gio_dep, m_dep], include_directories: [conf_inc], install_dir: libexecdir, install: true ) run_test = executable('run-js-test', 'run-js-test.c', dependencies: [mutter_dep, mtk_dep, gdk_pixbuf_dep, gio_dep, gi_dep, gjs_dep], c_args: typelib_cflags, include_directories: [conf_inc], link_with: libshell, build_rpath: mutter_typelibdir, ) 0707010000028D000081A40000000000000000000000016712993F000002B9000000000000000000000000000000000000002D00000000gnome-shell-47.1/src/org.gtk.Application.xml 0707010000028E000081A40000000000000000000000016712993F00000BAB000000000000000000000000000000000000002300000000gnome-shell-47.1/src/run-js-test.c/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ /* * Based on gjs/console.c from GJS * * Copyright (c) 2008 litl, LLC * Copyright (c) 2010 Red Hat, Inc. * * 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. */ #include "config.h" #include #include #include #include #include #include "shell-global.h" #include "shell-global-private.h" int main(int argc, char **argv) { GOptionContext *context; GError *error = NULL; ShellGlobal *global; GjsContext *js_context; const char *filename; char *title; uint8_t code; context = g_option_context_new (NULL); /* pass unknown through to the JS script */ g_option_context_set_ignore_unknown_options (context, TRUE); if (!g_option_context_parse (context, &argc, &argv, &error)) g_error ("option parsing failed: %s", error->message); setlocale (LC_ALL, ""); _shell_global_init (NULL); global = shell_global_get (); js_context = _shell_global_get_gjs_context (global); g_irepository_prepend_search_path (MUTTER_TYPELIB_DIR); g_irepository_prepend_search_path (SHELL_TYPELIB_DIR); /* prepare command line arguments */ if (!gjs_context_define_string_array (js_context, "ARGV", argc - 2, (const char**)argv + 2, &error)) { g_printerr ("Failed to defined ARGV: %s", error->message); exit (1); } if (argc < 2) { g_printerr ("Missing filename"); exit(1); } filename = argv[1]; title = g_filename_display_basename (filename); g_set_prgname (title); g_free (title); error = NULL; /* evaluate the script */ bool success = gjs_context_eval_module_file(js_context, filename, &code, &error); if (!success) { g_printerr ("%s\n", error->message); exit (1); } gjs_context_gc (js_context); gjs_context_gc (js_context); g_object_unref (js_context); exit (code); } 0707010000028F000081A40000000000000000000000016712993F00000585000000000000000000000000000000000000002A00000000gnome-shell-47.1/src/shell-action-modes.h/** * ShellActionMode: * @SHELL_ACTION_MODE_NONE: block action * @SHELL_ACTION_MODE_NORMAL: allow action when in window mode, * e.g. when the focus is in an application window * @SHELL_ACTION_MODE_OVERVIEW: allow action while the overview * is active * @SHELL_ACTION_MODE_LOCK_SCREEN: allow action when the screen * is locked, e.g. when the screen shield is shown * @SHELL_ACTION_MODE_UNLOCK_SCREEN: allow action in the unlock * dialog * @SHELL_ACTION_MODE_LOGIN_SCREEN: allow action in the login screen * @SHELL_ACTION_MODE_SYSTEM_MODAL: allow action when a system modal * dialog (e.g. authentication or session dialogs) is open * @SHELL_ACTION_MODE_LOOKING_GLASS: allow action in looking glass * @SHELL_ACTION_MODE_POPUP: allow action while a shell menu is open * @SHELL_ACTION_MODE_ALL: always allow action * * Controls in which GNOME Shell states an action (like keybindings and gestures) * should be handled. */ typedef enum { SHELL_ACTION_MODE_NONE = 0, SHELL_ACTION_MODE_NORMAL = 1 << 0, SHELL_ACTION_MODE_OVERVIEW = 1 << 1, SHELL_ACTION_MODE_LOCK_SCREEN = 1 << 2, SHELL_ACTION_MODE_UNLOCK_SCREEN = 1 << 3, SHELL_ACTION_MODE_LOGIN_SCREEN = 1 << 4, SHELL_ACTION_MODE_SYSTEM_MODAL = 1 << 5, SHELL_ACTION_MODE_LOOKING_GLASS = 1 << 6, SHELL_ACTION_MODE_POPUP = 1 << 7, SHELL_ACTION_MODE_ALL = ~0, } ShellActionMode; 07070100000290000081A40000000000000000000000016712993F000002BC000000000000000000000000000000000000002F00000000gnome-shell-47.1/src/shell-app-cache-private.h/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ #pragma once #include #include #define SHELL_TYPE_APP_CACHE (shell_app_cache_get_type()) G_DECLARE_FINAL_TYPE (ShellAppCache, shell_app_cache, SHELL, APP_CACHE, GObject) ShellAppCache *shell_app_cache_get_default (void); GList *shell_app_cache_get_all (ShellAppCache *cache); GDesktopAppInfo *shell_app_cache_get_info (ShellAppCache *cache, const char *id); char *shell_app_cache_translate_folder (ShellAppCache *cache, const char *name); 07070100000291000081A40000000000000000000000016712993F000029D1000000000000000000000000000000000000002700000000gnome-shell-47.1/src/shell-app-cache.c/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ #include "config.h" #include "shell-app-cache-private.h" #include "shell-global-private.h" /** * SECTION:shell-app-cache * @title: ShellAppCache * @short_description: application information cache * * The #ShellAppCache is responsible for caching information about #GAppInfo * to ensure that the compositor thread never needs to perform disk reads to * access them. All of the work is done off-thread. When the new data has * been loaded, a #ShellAppCache::changed signal is emitted. * * Additionally, the #ShellAppCache caches information about translations for * directories. This allows translation provided in [Desktop Entry] GKeyFiles * to be available when building StLabel and other elements without performing * costly disk reads. * * Various monitors are used to keep this information up to date while the * Shell is running. */ #define DEFAULT_TIMEOUT_SECONDS 5 struct _ShellAppCache { GObject parent_instance; GAppInfoMonitor *monitor; GPtrArray *dir_monitors; GHashTable *folders; GCancellable *cancellable; GList *app_infos; guint queued_update; }; typedef struct { GList *app_infos; GHashTable *folders; } CacheState; G_DEFINE_TYPE (ShellAppCache, shell_app_cache, G_TYPE_OBJECT) enum { CHANGED, N_SIGNALS }; static guint signals [N_SIGNALS]; static void cache_state_free (CacheState *state) { g_clear_pointer (&state->folders, g_hash_table_unref); g_list_free_full (state->app_infos, g_object_unref); g_free (state); } static CacheState * cache_state_new (void) { CacheState *state; state = g_new0 (CacheState, 1); state->folders = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); return g_steal_pointer (&state); } /** * shell_app_cache_get_default: * * Gets the default #ShellAppCache. * * Returns: (transfer none): a #ShellAppCache */ ShellAppCache * shell_app_cache_get_default (void) { return shell_global_get_app_cache (shell_global_get ()); } static void load_folder (GHashTable *folders, const char *path) { g_autoptr(GDir) dir = NULL; const char *name; g_assert (folders != NULL); g_assert (path != NULL); dir = g_dir_open (path, 0, NULL); if (dir == NULL) return; while ((name = g_dir_read_name (dir))) { g_autofree gchar *filename = NULL; g_autoptr(GKeyFile) keyfile = NULL; /* First added wins */ if (g_hash_table_contains (folders, name)) continue; filename = g_build_filename (path, name, NULL); keyfile = g_key_file_new (); if (g_key_file_load_from_file (keyfile, filename, G_KEY_FILE_NONE, NULL)) { gchar *translated; translated = g_key_file_get_locale_string (keyfile, "Desktop Entry", "Name", NULL, NULL); if (translated != NULL) g_hash_table_insert (folders, g_strdup (name), translated); } } } static void load_folders (GHashTable *folders) { const char * const *dirs; g_autofree gchar *userdir = NULL; guint i; g_assert (folders != NULL); userdir = g_build_filename (g_get_user_data_dir (), "desktop-directories", NULL); load_folder (folders, userdir); dirs = g_get_system_data_dirs (); for (i = 0; dirs[i] != NULL; i++) { g_autofree gchar *sysdir = g_build_filename (dirs[i], "desktop-directories", NULL); load_folder (folders, sysdir); } } static void shell_app_cache_worker (GTask *task, gpointer source_object, gpointer task_data, GCancellable *cancellable) { CacheState *state; g_assert (G_IS_TASK (task)); g_assert (SHELL_IS_APP_CACHE (source_object)); state = cache_state_new (); state->app_infos = g_app_info_get_all (); load_folders (state->folders); g_task_return_pointer (task, state, (GDestroyNotify) cache_state_free); } static void apply_update_cb (GObject *object, GAsyncResult *result, gpointer user_data) { ShellAppCache *cache = (ShellAppCache *)object; g_autoptr(GError) error = NULL; CacheState *state; g_assert (SHELL_IS_APP_CACHE (cache)); g_assert (G_IS_TASK (result)); g_assert (user_data == NULL); state = g_task_propagate_pointer (G_TASK (result), &error); if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) return; g_list_free_full (cache->app_infos, g_object_unref); cache->app_infos = g_steal_pointer (&state->app_infos); g_clear_pointer (&cache->folders, g_hash_table_unref); cache->folders = g_steal_pointer (&state->folders); g_signal_emit (cache, signals[CHANGED], 0); cache_state_free (state); } static gboolean shell_app_cache_do_update (gpointer user_data) { ShellAppCache *cache = user_data; g_autoptr(GTask) task = NULL; cache->queued_update = 0; /* Reset the cancellable state so we don't race with * two updates coming back overlapped and applying the * information in the wrong order. */ g_cancellable_cancel (cache->cancellable); g_clear_object (&cache->cancellable); cache->cancellable = g_cancellable_new (); task = g_task_new (cache, cache->cancellable, apply_update_cb, NULL); g_task_set_source_tag (task, shell_app_cache_do_update); g_task_run_in_thread (task, shell_app_cache_worker); return G_SOURCE_REMOVE; } static void shell_app_cache_queue_update (ShellAppCache *self) { g_assert (SHELL_IS_APP_CACHE (self)); if (self->queued_update != 0) g_source_remove (self->queued_update); self->queued_update = g_timeout_add_seconds (DEFAULT_TIMEOUT_SECONDS, shell_app_cache_do_update, self); } static void monitor_desktop_directories_for_data_dir (ShellAppCache *self, const gchar *directory) { g_autofree gchar *subdir = NULL; g_autoptr(GFile) file = NULL; g_autoptr(GFileMonitor) monitor = NULL; g_assert (SHELL_IS_APP_CACHE (self)); if (directory == NULL) return; subdir = g_build_filename (directory, "desktop-directories", NULL); file = g_file_new_for_path (subdir); monitor = g_file_monitor_directory (file, G_FILE_MONITOR_NONE, NULL, NULL); if (monitor != NULL) { g_file_monitor_set_rate_limit (monitor, DEFAULT_TIMEOUT_SECONDS * 1000); g_signal_connect_object (monitor, "changed", G_CALLBACK (shell_app_cache_queue_update), self, G_CONNECT_SWAPPED); g_ptr_array_add (self->dir_monitors, g_steal_pointer (&monitor)); } } static void shell_app_cache_finalize (GObject *object) { ShellAppCache *self = (ShellAppCache *)object; g_clear_object (&self->monitor); if (self->queued_update) { g_source_remove (self->queued_update); self->queued_update = 0; } g_clear_pointer (&self->dir_monitors, g_ptr_array_unref); g_clear_pointer (&self->folders, g_hash_table_unref); g_list_free_full (self->app_infos, g_object_unref); G_OBJECT_CLASS (shell_app_cache_parent_class)->finalize (object); } static void shell_app_cache_class_init (ShellAppCacheClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->finalize = shell_app_cache_finalize; /** * ShellAppCache::changed: * * The "changed" signal is emitted when the cache has updated * information about installed applications. */ signals [CHANGED] = g_signal_new ("changed", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 0); } static void shell_app_cache_init (ShellAppCache *self) { const gchar * const *sysdirs; guint i; /* Monitor directories for translation changes */ self->dir_monitors = g_ptr_array_new_with_free_func (g_object_unref); monitor_desktop_directories_for_data_dir (self, g_get_user_data_dir ()); sysdirs = g_get_system_data_dirs (); for (i = 0; sysdirs[i] != NULL; i++) monitor_desktop_directories_for_data_dir (self, sysdirs[i]); /* Load translated directory names immediately */ self->folders = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); load_folders (self->folders); /* Setup AppMonitor to track changes */ self->monitor = g_app_info_monitor_get (); g_signal_connect_object (self->monitor, "changed", G_CALLBACK (shell_app_cache_queue_update), self, G_CONNECT_SWAPPED); self->app_infos = g_app_info_get_all (); } /** * shell_app_cache_get_all: * @cache: (nullable): a #ShellAppCache or %NULL * * Like g_app_info_get_all() but always returns a * cached set of application info so the caller can be * sure that I/O will not happen on the current thread. * * Returns: (transfer none) (element-type GAppInfo): * a #GList of references to #GAppInfo. */ GList * shell_app_cache_get_all (ShellAppCache *cache) { g_return_val_if_fail (SHELL_IS_APP_CACHE (cache), NULL); return cache->app_infos; } /** * shell_app_cache_get_info: * @cache: (nullable): a #ShellAppCache or %NULL * @id: the application id * * A replacement for g_desktop_app_info_new() that will lookup the * information from the cache instead of (re)loading from disk. * * Returns: (nullable) (transfer none): a #GDesktopAppInfo or %NULL */ GDesktopAppInfo * shell_app_cache_get_info (ShellAppCache *cache, const char *id) { const GList *iter; g_return_val_if_fail (SHELL_IS_APP_CACHE (cache), NULL); for (iter = cache->app_infos; iter != NULL; iter = iter->next) { GAppInfo *info = iter->data; if (g_strcmp0 (id, g_app_info_get_id (info)) == 0) return G_DESKTOP_APP_INFO (info); } return NULL; } /** * shell_app_cache_translate_folder: * @cache: (nullable): a #ShellAppCache or %NULL * @name: the folder name * * Gets the translated folder name for @name if any exists. * * Returns: (nullable): the translated string or %NULL if there is no * translation. */ char * shell_app_cache_translate_folder (ShellAppCache *cache, const char *name) { g_return_val_if_fail (SHELL_IS_APP_CACHE (cache), NULL); if (name == NULL) return NULL; return g_strdup (g_hash_table_lookup (cache->folders, name)); } 07070100000292000081A40000000000000000000000016712993F00000234000000000000000000000000000000000000002900000000gnome-shell-47.1/src/shell-app-private.h/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ #pragma once #include "shell-app.h" #include "shell-app-system.h" G_BEGIN_DECLS ShellApp* _shell_app_new_for_window (MetaWindow *window); ShellApp* _shell_app_new (GDesktopAppInfo *info); void _shell_app_set_app_info (ShellApp *app, GDesktopAppInfo *info); void _shell_app_handle_startup_sequence (ShellApp *app, MetaStartupSequence *sequence); void _shell_app_add_window (ShellApp *app, MetaWindow *window); void _shell_app_remove_window (ShellApp *app, MetaWindow *window); G_END_DECLS 07070100000293000081A40000000000000000000000016712993F000000C7000000000000000000000000000000000000003000000000gnome-shell-47.1/src/shell-app-system-private.h/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ #pragma once #include "shell-app-system.h" void _shell_app_system_notify_app_state_changed (ShellAppSystem *self, ShellApp *app); 07070100000294000081A40000000000000000000000016712993F00003ED7000000000000000000000000000000000000002800000000gnome-shell-47.1/src/shell-app-system.c/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ #include "config.h" #include "shell-app-system.h" #include "shell-app-usage.h" #include #include #include #include "shell-app-cache-private.h" #include "shell-app-private.h" #include "shell-window-tracker-private.h" #include "shell-app-system-private.h" #include "shell-global.h" #include "shell-util.h" #include "st.h" /* Rescan for at most RESCAN_TIMEOUT_MS * MAX_RESCAN_RETRIES. That * should be plenty of time for even a slow spinning drive to update * the icon cache. */ #define RESCAN_TIMEOUT_MS 2500 #define MAX_RESCAN_RETRIES 6 /* Vendor prefixes are something that can be preprended to a .desktop * file name. Undo this. */ static const char*const vendor_prefixes[] = { "gnome-", "fedora-", "mozilla-", "debian-", NULL }; enum { PROP_0, }; enum { APP_STATE_CHANGED, INSTALLED_CHANGED, LAST_SIGNAL }; static guint signals[LAST_SIGNAL] = { 0 }; typedef struct _ShellAppSystemPrivate ShellAppSystemPrivate; struct _ShellAppSystem { GObject parent; ShellAppSystemPrivate *priv; }; struct _ShellAppSystemPrivate { GHashTable *running_apps; GHashTable *id_to_app; GHashTable *startup_wm_class_to_id; GList *installed_apps; guint rescan_icons_timeout_id; guint n_rescan_retries; }; static void shell_app_system_finalize (GObject *object); G_DEFINE_TYPE_WITH_PRIVATE (ShellAppSystem, shell_app_system, G_TYPE_OBJECT); static void shell_app_system_class_init(ShellAppSystemClass *klass) { GObjectClass *gobject_class = (GObjectClass *)klass; gobject_class->finalize = shell_app_system_finalize; signals[APP_STATE_CHANGED] = g_signal_new ("app-state-changed", SHELL_TYPE_APP_SYSTEM, G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 1, SHELL_TYPE_APP); signals[INSTALLED_CHANGED] = g_signal_new ("installed-changed", SHELL_TYPE_APP_SYSTEM, G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 0); } /* * Check whether @wm_class matches @id exactly when ignoring the .desktop suffix */ static gboolean startup_wm_class_is_exact_match (const char *id, const char *wm_class) { size_t wm_class_len; if (!g_str_has_prefix (id, wm_class)) return FALSE; wm_class_len = strlen (wm_class); if (id[wm_class_len] == '\0') return TRUE; return g_str_equal (id + wm_class_len, ".desktop"); } static void scan_startup_wm_class_to_id (ShellAppSystem *self) { ShellAppSystemPrivate *priv = self->priv; g_autoptr(GPtrArray) no_show_ids = NULL; const GList *l; GList *all; g_hash_table_remove_all (priv->startup_wm_class_to_id); all = shell_app_cache_get_all (shell_app_cache_get_default ()); no_show_ids = g_ptr_array_new (); for (l = all; l != NULL; l = l->next) { GAppInfo *info = l->data; const char *startup_wm_class, *id, *old_id; gboolean should_show; id = g_app_info_get_id (info); startup_wm_class = g_desktop_app_info_get_startup_wm_class (G_DESKTOP_APP_INFO (info)); if (startup_wm_class == NULL) continue; should_show = g_app_info_should_show (info); if (!should_show) g_ptr_array_add (no_show_ids, (char *) id); /* In case multiple .desktop files set the same StartupWMClass, prefer * the one where ID and StartupWMClass match */ old_id = g_hash_table_lookup (priv->startup_wm_class_to_id, startup_wm_class); if (old_id && startup_wm_class_is_exact_match (id, startup_wm_class)) old_id = NULL; /* Give priority to the desktop files that should be shown */ if (old_id && should_show && g_ptr_array_find_with_equal_func (no_show_ids, old_id, g_str_equal, NULL)) old_id = NULL; if (!old_id) g_hash_table_insert (priv->startup_wm_class_to_id, g_strdup (startup_wm_class), g_strdup (id)); } } static gboolean app_is_stale (ShellApp *app) { GDesktopAppInfo *info, *old; GAppInfo *old_info, *new_info; gboolean is_unchanged; if (shell_app_is_window_backed (app)) return FALSE; info = shell_app_cache_get_info (shell_app_cache_get_default (), shell_app_get_id (app)); if (!info) return TRUE; old = shell_app_get_app_info (app); old_info = G_APP_INFO (old); new_info = G_APP_INFO (info); is_unchanged = g_app_info_should_show (old_info) == g_app_info_should_show (new_info) && strcmp (g_desktop_app_info_get_filename (old), g_desktop_app_info_get_filename (info)) == 0 && g_strcmp0 (g_app_info_get_executable (old_info), g_app_info_get_executable (new_info)) == 0 && g_strcmp0 (g_app_info_get_commandline (old_info), g_app_info_get_commandline (new_info)) == 0 && strcmp (g_app_info_get_name (old_info), g_app_info_get_name (new_info)) == 0 && g_strcmp0 (g_app_info_get_description (old_info), g_app_info_get_description (new_info)) == 0 && strcmp (g_app_info_get_display_name (old_info), g_app_info_get_display_name (new_info)) == 0 && g_icon_equal (g_app_info_get_icon (old_info), g_app_info_get_icon (new_info)); return !is_unchanged; } static gboolean stale_app_remove_func (gpointer key, gpointer value, gpointer user_data) { return app_is_stale (value); } static void collect_stale_windows (gpointer key, gpointer value, gpointer user_data) { ShellApp *app = key; GDesktopAppInfo *info; GPtrArray *windows = user_data; info = shell_app_cache_get_info (shell_app_cache_get_default (), shell_app_get_id (app)); /* No info either means that the app became stale, or that it is * window-backed. Re-tracking the app's windows allows us to reflect * changes in either direction, i.e. from stale app to window-backed, * or from window-backed to app-backed (if the app was launched right * between installing the app and updating the app cache). */ if (info == NULL) { GSList *l; for (l = shell_app_get_windows (app); l; l = l->next) g_ptr_array_add (windows, l->data); } } static void retrack_window (gpointer data, gpointer user_data) { GObject *window = data; /* Make ShellWindowTracker retrack the window */ g_object_notify (window, "wm-class"); } static gboolean rescan_icon_theme_cb (gpointer user_data) { ShellAppSystemPrivate *priv; ShellAppSystem *self; StTextureCache *texture_cache; gboolean rescanned; self = (ShellAppSystem *) user_data; priv = self->priv; texture_cache = st_texture_cache_get_default (); rescanned = st_texture_cache_rescan_icon_theme (texture_cache); priv->n_rescan_retries++; if (rescanned || priv->n_rescan_retries >= MAX_RESCAN_RETRIES) { priv->n_rescan_retries = 0; priv->rescan_icons_timeout_id = 0; return G_SOURCE_REMOVE; } return G_SOURCE_CONTINUE; } static void rescan_icon_theme (ShellAppSystem *self) { ShellAppSystemPrivate *priv = self->priv; priv->n_rescan_retries = 0; if (priv->rescan_icons_timeout_id > 0) return; priv->rescan_icons_timeout_id = g_timeout_add (RESCAN_TIMEOUT_MS, rescan_icon_theme_cb, self); } static void installed_changed (ShellAppCache *cache, ShellAppSystem *self) { GPtrArray *windows = g_ptr_array_new (); rescan_icon_theme (self); scan_startup_wm_class_to_id (self); g_hash_table_foreach_remove (self->priv->id_to_app, stale_app_remove_func, NULL); g_hash_table_foreach (self->priv->running_apps, collect_stale_windows, windows); g_ptr_array_foreach (windows, retrack_window, NULL); g_ptr_array_free (windows, TRUE); g_signal_emit (self, signals[INSTALLED_CHANGED], 0, NULL); } static void shell_app_system_init (ShellAppSystem *self) { ShellAppSystemPrivate *priv; ShellAppCache *cache; self->priv = priv = shell_app_system_get_instance_private (self); priv->running_apps = g_hash_table_new_full (NULL, NULL, (GDestroyNotify) g_object_unref, NULL); priv->id_to_app = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, (GDestroyNotify)g_object_unref); priv->startup_wm_class_to_id = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); cache = shell_app_cache_get_default (); g_signal_connect (cache, "changed", G_CALLBACK (installed_changed), self); installed_changed (cache, self); } static void shell_app_system_finalize (GObject *object) { ShellAppSystem *self = SHELL_APP_SYSTEM (object); ShellAppSystemPrivate *priv = self->priv; g_hash_table_destroy (priv->running_apps); g_hash_table_destroy (priv->id_to_app); g_hash_table_destroy (priv->startup_wm_class_to_id); g_list_free_full (priv->installed_apps, g_object_unref); g_clear_handle_id (&priv->rescan_icons_timeout_id, g_source_remove); G_OBJECT_CLASS (shell_app_system_parent_class)->finalize (object); } /** * shell_app_system_get_default: * * Return Value: (transfer none): The global #ShellAppSystem singleton */ ShellAppSystem * shell_app_system_get_default (void) { return shell_global_get_app_system (shell_global_get ()); } /** * shell_app_system_lookup_app: * * Find a #ShellApp corresponding to an id. * * Return value: (transfer none): The #ShellApp for id, or %NULL if none */ ShellApp * shell_app_system_lookup_app (ShellAppSystem *self, const char *id) { ShellAppSystemPrivate *priv = self->priv; ShellApp *app; GDesktopAppInfo *info; app = g_hash_table_lookup (priv->id_to_app, id); if (app) return app; info = shell_app_cache_get_info (shell_app_cache_get_default (), id); if (!info) return NULL; app = _shell_app_new (info); g_hash_table_insert (priv->id_to_app, (char *) shell_app_get_id (app), app); return app; } /** * shell_app_system_lookup_heuristic_basename: * @system: a #ShellAppSystem * @id: Probable application identifier * * Find a valid application corresponding to a given * heuristically determined application identifier * string, or %NULL if none. * * Returns: (transfer none): A #ShellApp for @name */ ShellApp * shell_app_system_lookup_heuristic_basename (ShellAppSystem *system, const char *name) { ShellApp *result; const char *const *prefix; result = shell_app_system_lookup_app (system, name); if (result != NULL) return result; for (prefix = vendor_prefixes; *prefix != NULL; prefix++) { char *tmpid = g_strconcat (*prefix, name, NULL); result = shell_app_system_lookup_app (system, tmpid); g_free (tmpid); if (result != NULL) return result; } return NULL; } /** * shell_app_system_lookup_desktop_wmclass: * @system: a #ShellAppSystem * @wmclass: (nullable): A WM_CLASS value * * Find a valid application whose .desktop file, without the extension * and properly canonicalized, matches @wmclass. * * Returns: (transfer none): A #ShellApp for @wmclass */ ShellApp * shell_app_system_lookup_desktop_wmclass (ShellAppSystem *system, const char *wmclass) { char *canonicalized; char *desktop_file; ShellApp *app; if (wmclass == NULL) return NULL; /* First try without changing the case (this handles org.example.Foo.Bar.desktop applications) Note that is slightly wrong in that Gtk+ would set the WM_CLASS to Org.example.Foo.Bar, but it also sets the instance part to org.example.Foo.Bar, so we're ok */ desktop_file = g_strconcat (wmclass, ".desktop", NULL); app = shell_app_system_lookup_heuristic_basename (system, desktop_file); g_free (desktop_file); if (app) return app; canonicalized = g_ascii_strdown (wmclass, -1); /* This handles "Fedora Eclipse", probably others. * Note g_strdelimit is modify-in-place. */ g_strdelimit (canonicalized, " ", '-'); desktop_file = g_strconcat (canonicalized, ".desktop", NULL); app = shell_app_system_lookup_heuristic_basename (system, desktop_file); g_free (canonicalized); g_free (desktop_file); return app; } /** * shell_app_system_lookup_startup_wmclass: * @system: a #ShellAppSystem * @wmclass: (nullable): A WM_CLASS value * * Find a valid application whose .desktop file contains a * StartupWMClass entry matching @wmclass. * * Returns: (transfer none): A #ShellApp for @wmclass */ ShellApp * shell_app_system_lookup_startup_wmclass (ShellAppSystem *system, const char *wmclass) { const char *id; if (wmclass == NULL) return NULL; id = g_hash_table_lookup (system->priv->startup_wm_class_to_id, wmclass); if (id == NULL) return NULL; return shell_app_system_lookup_app (system, id); } void _shell_app_system_notify_app_state_changed (ShellAppSystem *self, ShellApp *app) { ShellAppState state = shell_app_get_state (app); switch (state) { case SHELL_APP_STATE_RUNNING: g_hash_table_insert (self->priv->running_apps, g_object_ref (app), NULL); break; case SHELL_APP_STATE_STARTING: break; case SHELL_APP_STATE_STOPPED: g_hash_table_remove (self->priv->running_apps, app); break; default: g_warn_if_reached(); break; } g_signal_emit (self, signals[APP_STATE_CHANGED], 0, app); } /** * shell_app_system_get_running: * @self: A #ShellAppSystem * * Returns the set of applications which currently have at least one * open window. The returned list will be sorted by shell_app_compare(). * * Returns: (element-type ShellApp) (transfer container): Active applications */ GSList * shell_app_system_get_running (ShellAppSystem *self) { gpointer key, value; GSList *ret; GHashTableIter iter; g_hash_table_iter_init (&iter, self->priv->running_apps); ret = NULL; while (g_hash_table_iter_next (&iter, &key, &value)) { ShellApp *app = key; ret = g_slist_prepend (ret, app); } ret = g_slist_sort (ret, (GCompareFunc)shell_app_compare); return ret; } /** * shell_app_system_search: * @search_string: the search string to use * * Wrapper around g_desktop_app_info_search() that replaces results that * don't validate as UTF-8 with the empty string. * * Returns: (array zero-terminated=1) (element-type GStrv) (transfer full): a * list of strvs. Free each item with g_strfreev() and free the outer * list with g_free(). */ char *** shell_app_system_search (const char *search_string) { char ***results = g_desktop_app_info_search (search_string); char ***groups, **ids; for (groups = results; *groups; groups++) for (ids = *groups; *ids; ids++) if (!g_utf8_validate (*ids, -1, NULL)) **ids = '\0'; return results; } /** * shell_app_system_get_installed: * @self: the #ShellAppSystem * * Returns all installed apps, as a list of #GAppInfo * * Returns: (transfer none) (element-type GAppInfo): a list of #GAppInfo * describing all known applications. This memory is owned by the * #ShellAppSystem and should not be freed. **/ GList * shell_app_system_get_installed (ShellAppSystem *self) { return shell_app_cache_get_all (shell_app_cache_get_default ()); } 07070100000295000081A40000000000000000000000016712993F00000550000000000000000000000000000000000000002800000000gnome-shell-47.1/src/shell-app-system.h/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ #pragma once #include #include #include #include "shell-app.h" #define SHELL_TYPE_APP_SYSTEM (shell_app_system_get_type ()) G_DECLARE_FINAL_TYPE (ShellAppSystem, shell_app_system, SHELL, APP_SYSTEM, GObject) ShellAppSystem *shell_app_system_get_default (void); ShellApp *shell_app_system_lookup_app (ShellAppSystem *system, const char *id); ShellApp *shell_app_system_lookup_heuristic_basename (ShellAppSystem *system, const char *id); ShellApp *shell_app_system_lookup_startup_wmclass (ShellAppSystem *system, const char *wmclass); ShellApp *shell_app_system_lookup_desktop_wmclass (ShellAppSystem *system, const char *wmclass); GSList *shell_app_system_get_running (ShellAppSystem *self); char ***shell_app_system_search (const char *search_string); GList *shell_app_system_get_installed (ShellAppSystem *self); 07070100000296000081A40000000000000000000000016712993F00005613000000000000000000000000000000000000002700000000gnome-shell-47.1/src/shell-app-usage.c/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ #include "config.h" #include #include #include #include #include #include #include #include #include "shell-app-usage.h" #include "shell-window-tracker.h" #include "shell-global.h" /* This file includes modified code from * desktop-data-engine/engine-dbus/hippo-application-monitor.c * in the functions collecting application usage data. * Written by Owen Taylor, originally licensed under LGPL 2.1. * Copyright Red Hat, Inc. 2006-2008 */ /** * SECTION:shell-app-usage * @short_description: Track application usage/state data * * This class maintains some usage and state statistics for * applications by keeping track of the approximate time an application's * windows are focused, as well as the last workspace it was seen on. * This time tracking is implemented by watching for focus notifications, * and computing a time delta between them. Also we watch the * GNOME Session "StatusChanged" signal which by default is emitted after 5 * minutes to signify idle. */ #define PRIVACY_SCHEMA "org.gnome.desktop.privacy" #define ENABLE_MONITORING_KEY "remember-app-usage" #define FOCUS_TIME_MIN_SECONDS 7 /* Need 7 continuous seconds of focus */ #define USAGE_CLEAN_DAYS 7 /* If after 7 days we haven't seen an app, purge it */ /* Data is saved to file SHELL_CONFIG_DIR/DATA_FILENAME */ #define DATA_FILENAME "application_state" #define IDLE_TIME_TRANSITION_SECONDS 30 /* If we transition to idle, only count * this many seconds of usage */ /* The ranking algorithm we use is: every time an app score reaches SCORE_MAX, * divide all scores by 2. Scores are raised by 1 unit every SAVE_APPS_TIMEOUT * seconds. This mechanism allows the list to update relatively fast when * a new app is used intensively. * To keep the list clean, and avoid being Big Brother, apps that have not been * seen for a week and whose score is below SCORE_MIN are removed. */ /* How often we save internally app data, in seconds */ #define SAVE_APPS_TIMEOUT_SECONDS (5 * 60) /* With this value, an app goes from bottom to top of the * usage list in 50 hours of use */ #define SCORE_MAX (3600 * 50 / FOCUS_TIME_MIN_SECONDS) /* If an app's score in lower than this and the app has not been used in a week, * remove it */ #define SCORE_MIN (SCORE_MAX >> 3) /* http://www.gnome.org/~mccann/gnome-session/docs/gnome-session.html#org.gnome.SessionManager.Presence */ #define GNOME_SESSION_STATUS_IDLE 3 typedef struct UsageData UsageData; struct _ShellAppUsage { GObject parent; GFile *configfile; GDBusProxy *session_proxy; GSettings *privacy_settings; guint idle_focus_change_id; guint save_id; gboolean currently_idle; gboolean enable_monitoring; long watch_start_time; ShellApp *watched_app; /* */ GHashTable *app_usages; }; G_DEFINE_TYPE (ShellAppUsage, shell_app_usage, G_TYPE_OBJECT); /* Represents an application record for a given context */ struct UsageData { gdouble score; /* Based on the number of times we'e seen the app and normalized */ long last_seen; /* Used to clear old apps we've only seen a few times */ }; static void shell_app_usage_finalize (GObject *object); static void on_session_status_changed (GDBusProxy *proxy, guint status, ShellAppUsage *self); static void on_focus_app_changed (ShellWindowTracker *tracker, GParamSpec *spec, ShellAppUsage *self); static void ensure_queued_save (ShellAppUsage *self); static gboolean idle_save_application_usage (gpointer data); static void restore_from_file (ShellAppUsage *self); static void update_enable_monitoring (ShellAppUsage *self); static void on_enable_monitoring_key_changed (GSettings *settings, const gchar *key, ShellAppUsage *self); static long get_time (void) { return g_get_real_time () / G_TIME_SPAN_SECOND; } static void shell_app_usage_class_init (ShellAppUsageClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = shell_app_usage_finalize; } static UsageData * get_usage_for_app (ShellAppUsage *self, ShellApp *app) { UsageData *usage; const char *appid = shell_app_get_id (app); usage = g_hash_table_lookup (self->app_usages, appid); if (usage) return usage; usage = g_new0 (UsageData, 1); g_hash_table_insert (self->app_usages, g_strdup (appid), usage); return usage; } /* Limit the score to a certain level so that most used apps can change */ static void normalize_usage (ShellAppUsage *self) { GHashTableIter iter; UsageData *usage; g_hash_table_iter_init (&iter, self->app_usages); while (g_hash_table_iter_next (&iter, NULL, (gpointer *) &usage)) usage->score /= 2; } static void increment_usage_for_app_at_time (ShellAppUsage *self, ShellApp *app, long time) { UsageData *usage; guint elapsed; guint usage_count; usage = get_usage_for_app (self, app); usage->last_seen = time; elapsed = time - self->watch_start_time; usage_count = elapsed / FOCUS_TIME_MIN_SECONDS; if (usage_count > 0) { usage->score += usage_count; if (usage->score > SCORE_MAX) normalize_usage (self); ensure_queued_save (self); } } static void increment_usage_for_app (ShellAppUsage *self, ShellApp *app) { long curtime = get_time (); increment_usage_for_app_at_time (self, app, curtime); } static void on_app_state_changed (ShellAppSystem *app_system, ShellApp *app, gpointer user_data) { ShellAppUsage *self = SHELL_APP_USAGE (user_data); UsageData *usage; gboolean running; if (shell_app_is_window_backed (app)) return; usage = get_usage_for_app (self, app); running = shell_app_get_state (app) == SHELL_APP_STATE_RUNNING; if (running) usage->last_seen = get_time (); } static void on_focus_app_changed (ShellWindowTracker *tracker, GParamSpec *spec, ShellAppUsage *self) { if (self->watched_app != NULL) increment_usage_for_app (self, self->watched_app); if (self->watched_app) g_object_unref (self->watched_app); g_object_get (tracker, "focus-app", &(self->watched_app), NULL); self->watch_start_time = get_time (); } static void on_session_status_changed (GDBusProxy *proxy, guint status, ShellAppUsage *self) { gboolean idle; idle = (status >= GNOME_SESSION_STATUS_IDLE); if (self->currently_idle == idle) return; self->currently_idle = idle; if (idle) { long end_time; /* The GNOME Session signal we watch is 5 minutes, but that's a long * time for this purpose. Instead, just add a base 30 seconds. */ if (self->watched_app) { end_time = self->watch_start_time + IDLE_TIME_TRANSITION_SECONDS; increment_usage_for_app_at_time (self, self->watched_app, end_time); } } else { /* Transitioning to !idle, reset the start time */ self->watch_start_time = get_time (); } } static void session_proxy_signal (GDBusProxy *proxy, gchar *sender_name, gchar *signal_name, GVariant *parameters, gpointer user_data) { if (g_str_equal (signal_name, "StatusChanged")) { guint status; g_variant_get (parameters, "(u)", &status); on_session_status_changed (proxy, status, SHELL_APP_USAGE (user_data)); } } static void shell_app_usage_init (ShellAppUsage *self) { ShellGlobal *global; char *shell_userdata_dir, *path; GDBusConnection *session_bus; ShellWindowTracker *tracker; ShellAppSystem *app_system; global = shell_global_get (); self->app_usages = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); tracker = shell_window_tracker_get_default (); g_signal_connect (tracker, "notify::focus-app", G_CALLBACK (on_focus_app_changed), self); app_system = shell_app_system_get_default (); g_signal_connect (app_system, "app-state-changed", G_CALLBACK (on_app_state_changed), self); session_bus = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, NULL); self->session_proxy = g_dbus_proxy_new_sync (session_bus, G_DBUS_PROXY_FLAGS_NONE, NULL, /* interface info */ "org.gnome.SessionManager", "/org/gnome/SessionManager/Presence", "org.gnome.SessionManager", NULL, /* cancellable */ NULL /* error */); g_signal_connect (self->session_proxy, "g-signal", G_CALLBACK (session_proxy_signal), self); g_object_unref (session_bus); self->currently_idle = FALSE; self->enable_monitoring = FALSE; g_object_get (global, "userdatadir", &shell_userdata_dir, NULL), path = g_build_filename (shell_userdata_dir, DATA_FILENAME, NULL); g_free (shell_userdata_dir); self->configfile = g_file_new_for_path (path); g_free (path); restore_from_file (self); self->privacy_settings = g_settings_new(PRIVACY_SCHEMA); g_signal_connect (self->privacy_settings, "changed::" ENABLE_MONITORING_KEY, G_CALLBACK (on_enable_monitoring_key_changed), self); update_enable_monitoring (self); } static void shell_app_usage_finalize (GObject *object) { ShellAppUsage *self = SHELL_APP_USAGE (object); g_clear_handle_id (&self->save_id, g_source_remove); g_object_unref (self->privacy_settings); g_object_unref (self->configfile); g_object_unref (self->session_proxy); G_OBJECT_CLASS (shell_app_usage_parent_class)->finalize(object); } static int sort_apps_by_usage (gconstpointer a, gconstpointer b, gpointer datap) { ShellAppUsage *self = datap; ShellApp *app_a, *app_b; UsageData *usage_a, *usage_b; app_a = (ShellApp*)a; app_b = (ShellApp*)b; usage_a = g_hash_table_lookup (self->app_usages, shell_app_get_id (app_a)); usage_b = g_hash_table_lookup (self->app_usages, shell_app_get_id (app_b)); return usage_b->score - usage_a->score; } /** * shell_app_usage_get_most_used: * @usage: the usage instance to request * * Returns: (element-type ShellApp) (transfer full): List of applications */ GSList * shell_app_usage_get_most_used (ShellAppUsage *self) { GSList *apps; char *appid; ShellAppSystem *appsys; GHashTableIter iter; appsys = shell_app_system_get_default (); g_hash_table_iter_init (&iter, self->app_usages); apps = NULL; while (g_hash_table_iter_next (&iter, (gpointer *) &appid, NULL)) { ShellApp *app; app = shell_app_system_lookup_app (appsys, appid); if (!app) continue; apps = g_slist_prepend (apps, g_object_ref (app)); } apps = g_slist_sort_with_data (apps, sort_apps_by_usage, self); return apps; } /** * shell_app_usage_compare: * @self: the usage instance to request * @id_a: ID of first app * @id_b: ID of second app * * Compare @id_a and @id_b based on frequency of use. * * Returns: -1 if @id_a ranks higher than @id_b, 1 if @id_b ranks higher * than @id_a, and 0 if both rank equally. */ int shell_app_usage_compare (ShellAppUsage *self, const char *id_a, const char *id_b) { UsageData *usage_a, *usage_b; usage_a = g_hash_table_lookup (self->app_usages, id_a); usage_b = g_hash_table_lookup (self->app_usages, id_b); if (usage_a == NULL && usage_b == NULL) return 0; else if (usage_a == NULL) return 1; else if (usage_b == NULL) return -1; return usage_b->score - usage_a->score; } static void ensure_queued_save (ShellAppUsage *self) { if (self->save_id != 0) return; self->save_id = g_timeout_add_seconds (SAVE_APPS_TIMEOUT_SECONDS, idle_save_application_usage, self); g_source_set_name_by_id (self->save_id, "[gnome-shell] idle_save_application_usage"); } /* Clean up apps we see rarely. * The logic behind this is that if an app was seen less than SCORE_MIN times * and not seen for a week, it can probably be forgotten about. * This should much reduce the size of the list and avoid 'pollution'. */ static gboolean idle_clean_usage (ShellAppUsage *self) { GHashTableIter iter; UsageData *usage; long current_time; long week_ago; current_time = get_time (); week_ago = current_time - (7 * 24 * 60 * 60); g_hash_table_iter_init (&iter, self->app_usages); while (g_hash_table_iter_next (&iter, NULL, (gpointer *) &usage)) { if ((usage->score < SCORE_MIN) && (usage->last_seen < week_ago)) g_hash_table_iter_remove (&iter); } return FALSE; } static gboolean write_escaped (GDataOutputStream *stream, const char *str, GError **error) { gboolean ret; char *quoted = g_markup_escape_text (str, -1); ret = g_data_output_stream_put_string (stream, quoted, NULL, error); g_free (quoted); return ret; } static gboolean write_attribute_string (GDataOutputStream *stream, const char *elt_name, const char *str, GError **error) { gboolean ret = FALSE; char *elt; elt = g_strdup_printf (" %s=\"", elt_name); ret = g_data_output_stream_put_string (stream, elt, NULL, error); g_free (elt); if (!ret) goto out; ret = write_escaped (stream, str, error); if (!ret) goto out; ret = g_data_output_stream_put_string (stream, "\"", NULL, error); out: return ret; } static gboolean write_attribute_uint (GDataOutputStream *stream, const char *elt_name, guint value, GError **error) { gboolean ret; char *buf; buf = g_strdup_printf ("%u", value); ret = write_attribute_string (stream, elt_name, buf, error); g_free (buf); return ret; } static gboolean write_attribute_double (GDataOutputStream *stream, const char *elt_name, double value, GError **error) { gchar buf[G_ASCII_DTOSTR_BUF_SIZE]; gboolean ret; g_ascii_dtostr (buf, sizeof (buf), value); ret = write_attribute_string (stream, elt_name, buf, error); return ret; } /* Save app data lists to file */ static gboolean idle_save_application_usage (gpointer data) { ShellAppUsage *self = SHELL_APP_USAGE (data); char *id; GHashTableIter iter; UsageData *usage; GFileOutputStream *output; GOutputStream *buffered_output; GDataOutputStream *data_output; GError *error = NULL; self->save_id = 0; /* Parent directory is already created by shell-global */ output = g_file_replace (self->configfile, NULL, FALSE, G_FILE_CREATE_NONE, NULL, &error); if (!output) { g_debug ("Could not save applications usage data: %s", error->message); g_error_free (error); return FALSE; } buffered_output = g_buffered_output_stream_new (G_OUTPUT_STREAM (output)); g_object_unref (output); data_output = g_data_output_stream_new (G_OUTPUT_STREAM (buffered_output)); g_object_unref (buffered_output); if (!g_data_output_stream_put_string (data_output, "\n\n", NULL, &error)) goto out; if (!g_data_output_stream_put_string (data_output, " \n", NULL, &error)) goto out; g_hash_table_iter_init (&iter, self->app_usages); while (g_hash_table_iter_next (&iter, (gpointer *) &id, (gpointer *) &usage)) { ShellApp *app; app = shell_app_system_lookup_app (shell_app_system_get_default(), id); if (!app) continue; if (!g_data_output_stream_put_string (data_output, " score, &error)) goto out; if (!write_attribute_uint (data_output, "last-seen", usage->last_seen, &error)) goto out; if (!g_data_output_stream_put_string (data_output, "/>\n", NULL, &error)) goto out; } if (!g_data_output_stream_put_string (data_output, " \n", NULL, &error)) goto out; if (!g_data_output_stream_put_string (data_output, "\n", NULL, &error)) goto out; out: if (!error) g_output_stream_close_async (G_OUTPUT_STREAM (data_output), 0, NULL, NULL, NULL); g_object_unref (data_output); if (error) { g_debug ("Could not save applications usage data: %s", error->message); g_error_free (error); } return FALSE; } static void shell_app_usage_start_element_handler (GMarkupParseContext *context, const gchar *element_name, const gchar **attribute_names, const gchar **attribute_values, gpointer user_data, GError **error) { ShellAppUsage *self = user_data; if (strcmp (element_name, "application-state") == 0) { } else if (strcmp (element_name, "context") == 0) { } else if (strcmp (element_name, "application") == 0) { const char **attribute; const char **value; UsageData *usage; char *appid = NULL; for (attribute = attribute_names, value = attribute_values; *attribute; attribute++, value++) { if (strcmp (*attribute, "id") == 0) { appid = g_strdup (*value); break; } } if (!appid) { g_set_error (error, G_MARKUP_ERROR, G_MARKUP_ERROR_PARSE, "Missing attribute id on <%s> element", element_name); return; } usage = g_new0 (UsageData, 1); g_hash_table_insert (self->app_usages, appid, usage); for (attribute = attribute_names, value = attribute_values; *attribute; attribute++, value++) { if (strcmp (*attribute, "score") == 0) { usage->score = g_ascii_strtod (*value, NULL); } else if (strcmp (*attribute, "last-seen") == 0) { usage->last_seen = (guint) g_ascii_strtoull (*value, NULL, 10); } } } else { g_set_error (error, G_MARKUP_ERROR, G_MARKUP_ERROR_PARSE, "Unknown element <%s>", element_name); } } static GMarkupParser app_state_parse_funcs = { shell_app_usage_start_element_handler, NULL, NULL, NULL, NULL }; /* Load data about apps usage from file */ static void restore_from_file (ShellAppUsage *self) { GFileInputStream *input; GMarkupParseContext *parse_context; GError *error = NULL; char buf[1024]; input = g_file_read (self->configfile, NULL, &error); if (error) { if (error->code != G_IO_ERROR_NOT_FOUND) g_warning ("Could not load applications usage data: %s", error->message); g_error_free (error); return; } parse_context = g_markup_parse_context_new (&app_state_parse_funcs, 0, self, NULL); while (TRUE) { gssize count = g_input_stream_read ((GInputStream*) input, buf, sizeof(buf), NULL, &error); if (count <= 0) goto out; if (!g_markup_parse_context_parse (parse_context, buf, count, &error)) goto out; } out: g_markup_parse_context_free (parse_context); g_input_stream_close ((GInputStream*)input, NULL, NULL); g_object_unref (input); idle_clean_usage (self); if (error) { g_warning ("Could not load applications usage data: %s", error->message); g_error_free (error); } } /* Enable or disable the timers, depending on the value of ENABLE_MONITORING_KEY * and taking care of the previous state. If selfing is disabled, we still * report apps usage based on (possibly) saved data, but don't collect data. */ static void update_enable_monitoring (ShellAppUsage *self) { gboolean enable; enable = g_settings_get_boolean (self->privacy_settings, ENABLE_MONITORING_KEY); /* Be sure not to start the timers if they were already set */ if (enable && !self->enable_monitoring) { on_focus_app_changed (shell_window_tracker_get_default (), NULL, self); } /* ...and don't try to stop them if they were not running */ else if (!enable && self->enable_monitoring) { if (self->watched_app) g_object_unref (self->watched_app); self->watched_app = NULL; g_clear_handle_id (&self->save_id, g_source_remove); } self->enable_monitoring = enable; } /* Called when the ENABLE_MONITORING_KEY boolean has changed */ static void on_enable_monitoring_key_changed (GSettings *settings, const gchar *key, ShellAppUsage *self) { update_enable_monitoring (self); } /** * shell_app_usage_get_default: * * Return Value: (transfer none): The global #ShellAppUsage instance */ ShellAppUsage * shell_app_usage_get_default (void) { return shell_global_get_app_usage (shell_global_get ()); } 07070100000297000081A40000000000000000000000016712993F0000025F000000000000000000000000000000000000002700000000gnome-shell-47.1/src/shell-app-usage.h/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ #pragma once #include "shell-app.h" #include "shell-window-tracker.h" G_BEGIN_DECLS #define SHELL_TYPE_APP_USAGE (shell_app_usage_get_type ()) G_DECLARE_FINAL_TYPE (ShellAppUsage, shell_app_usage, SHELL, APP_USAGE, GObject) ShellAppUsage* shell_app_usage_get_default(void); GSList *shell_app_usage_get_most_used (ShellAppUsage *usage); int shell_app_usage_compare (ShellAppUsage *self, const char *id_a, const char *id_b); G_END_DECLS 07070100000298000081A40000000000000000000000016712993F0000D222000000000000000000000000000000000000002100000000gnome-shell-47.1/src/shell-app.c/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ #include "config.h" #include #include #include #include #include #include "shell-app-private.h" #include "shell-enum-types.h" #include "shell-global.h" #include "shell-util.h" #include "shell-app-system-private.h" #include "shell-window-tracker-private.h" #include "st.h" #include "gtkactionmuxer.h" #include "org-gtk-application.h" #include "switcheroo-control.h" #ifdef HAVE_SYSTEMD #include #include #include #endif /* This is mainly a memory usage optimization - the user is going to * be running far fewer of the applications at one time than they have * installed. But it also just helps keep the code more logically * separated. */ typedef struct { guint refcount; /* Signal connection to dirty window sort list on workspace changes */ gulong workspace_switch_id; GSList *windows; guint interesting_windows; /* Whether or not we need to resort the windows; this is done on demand */ guint window_sort_stale : 1; /* See GApplication documentation */ GtkActionMuxer *muxer; char *unique_bus_name; GDBusConnection *session; /* GDBus Proxy for getting application busy state */ ShellOrgGtkApplication *application_proxy; GCancellable *cancellable; } ShellAppRunningState; /** * SECTION:shell-app * @short_description: Object representing an application * * This object wraps a #GDesktopAppInfo, providing methods and signals * primarily useful for running applications. */ struct _ShellApp { GObject parent; int started_on_workspace; ShellAppState state; GDesktopAppInfo *info; /* If NULL, this app is backed by one or more * MetaWindow. For purposes of app title * etc., we use the first window added, * because it's most likely to be what we * want (e.g. it will be of TYPE_NORMAL from * the way shell-window-tracker.c works). */ GIcon *fallback_icon; ShellAppRunningState *running_state; char *window_id_string; char *name_collation_key; }; enum { PROP_0, PROP_STATE, PROP_BUSY, PROP_ID, PROP_ACTION_GROUP, PROP_ICON, PROP_APP_INFO, N_PROPS }; static GParamSpec *props[N_PROPS] = { NULL, }; enum { WINDOWS_CHANGED, LAST_SIGNAL }; static guint shell_app_signals[LAST_SIGNAL] = { 0 }; static void create_running_state (ShellApp *app); static void unref_running_state (ShellAppRunningState *state); G_DEFINE_TYPE (ShellApp, shell_app, G_TYPE_OBJECT) static void shell_app_get_property (GObject *gobject, guint prop_id, GValue *value, GParamSpec *pspec) { ShellApp *app = SHELL_APP (gobject); switch (prop_id) { case PROP_STATE: g_value_set_enum (value, app->state); break; case PROP_BUSY: g_value_set_boolean (value, shell_app_get_busy (app)); break; case PROP_ID: g_value_set_string (value, shell_app_get_id (app)); break; case PROP_ICON: g_value_set_object (value, shell_app_get_icon (app)); break; case PROP_ACTION_GROUP: if (app->running_state) g_value_set_object (value, app->running_state->muxer); break; case PROP_APP_INFO: if (app->info) g_value_set_object (value, app->info); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec); break; } } static void shell_app_set_property (GObject *gobject, guint prop_id, const GValue *value, GParamSpec *pspec) { ShellApp *app = SHELL_APP (gobject); switch (prop_id) { case PROP_APP_INFO: _shell_app_set_app_info (app, g_value_get_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec); break; } } const char * shell_app_get_id (ShellApp *app) { if (app->info) return g_app_info_get_id (G_APP_INFO (app->info)); return app->window_id_string; } static MetaWindow * window_backed_app_get_window (ShellApp *app) { g_assert (app->info == NULL); if (app->running_state) { g_assert (app->running_state->windows); return app->running_state->windows->data; } else return NULL; } /** * shell_app_get_icon: * * Look up the icon for this application * * Return value: (transfer none): A #GIcon */ GIcon * shell_app_get_icon (ShellApp *app) { g_return_val_if_fail (SHELL_IS_APP (app), NULL); if (app->info) return g_app_info_get_icon (G_APP_INFO (app->info)); if (!app->fallback_icon) app->fallback_icon = g_themed_icon_new ("application-x-executable"); return app->fallback_icon; } /** * shell_app_create_icon_texture: * * Look up the icon for this application, and create a #ClutterActor * for it at the given size. * * Return value: (transfer none): A floating #ClutterActor */ ClutterActor * shell_app_create_icon_texture (ShellApp *app, int size) { ClutterActor *ret; ret = st_icon_new (); st_icon_set_icon_size (ST_ICON (ret), size); st_icon_set_fallback_icon_name (ST_ICON (ret), "application-x-executable"); g_object_bind_property (app, "icon", ret, "gicon", G_BINDING_SYNC_CREATE); if (shell_app_is_window_backed (app)) st_widget_add_style_class_name (ST_WIDGET (ret), "fallback-app-icon"); return ret; } const char * shell_app_get_name (ShellApp *app) { if (app->info) return g_app_info_get_name (G_APP_INFO (app->info)); else { MetaWindow *window = window_backed_app_get_window (app); const char *name = NULL; if (window) name = meta_window_get_wm_class (window); if (!name) name = C_("program", "Unknown"); return name; } } const char * shell_app_get_description (ShellApp *app) { if (app->info) return g_app_info_get_description (G_APP_INFO (app->info)); else return NULL; } /** * shell_app_is_window_backed: * * A window backed application is one which represents just an open * window, i.e. there's no .desktop file association, so we don't know * how to launch it again. */ gboolean shell_app_is_window_backed (ShellApp *app) { return app->info == NULL; } typedef struct { MetaWorkspace *workspace; GSList **transients; } CollectTransientsData; static gboolean collect_transients_on_workspace (MetaWindow *window, gpointer datap) { CollectTransientsData *data = datap; if (data->workspace && meta_window_get_workspace (window) != data->workspace) return TRUE; *data->transients = g_slist_prepend (*data->transients, window); return TRUE; } /* The basic idea here is that when we're targeting a window, * if it has transients we want to pick the most recent one * the user interacted with. * This function makes raising GEdit with the file chooser * open work correctly. */ static MetaWindow * find_most_recent_transient_on_same_workspace (MetaDisplay *display, MetaWindow *reference) { GSList *transients, *transients_sorted, *iter; MetaWindow *result; CollectTransientsData data; transients = NULL; data.workspace = meta_window_get_workspace (reference); data.transients = &transients; meta_window_foreach_transient (reference, collect_transients_on_workspace, &data); transients_sorted = meta_display_sort_windows_by_stacking (display, transients); /* Reverse this so we're top-to-bottom (yes, we should probably change the order * returned from the sort_windows_by_stacking function) */ transients_sorted = g_slist_reverse (transients_sorted); g_slist_free (transients); transients = NULL; result = NULL; for (iter = transients_sorted; iter; iter = iter->next) { MetaWindow *window = iter->data; MetaWindowType wintype = meta_window_get_window_type (window); /* Don't want to focus UTILITY types, like the Gimp toolbars */ if (wintype == META_WINDOW_NORMAL || wintype == META_WINDOW_DIALOG) { result = window; break; } } g_slist_free (transients_sorted); return result; } static MetaWorkspace * get_active_workspace (void) { ShellGlobal *global = shell_global_get (); MetaDisplay *display = shell_global_get_display (global); MetaWorkspaceManager *workspace_manager = meta_display_get_workspace_manager (display); return meta_workspace_manager_get_active_workspace (workspace_manager); } /** * shell_app_activate_window: * @app: a #ShellApp * @window: (nullable): Window to be focused * @timestamp: Event timestamp * * Bring all windows for the given app to the foreground, * but ensure that @window is on top. If @window is %NULL, * the window with the most recent user time for the app * will be used. * * This function has no effect if @app is not currently running. */ void shell_app_activate_window (ShellApp *app, MetaWindow *window, guint32 timestamp) { g_autoptr (GSList) windows = NULL; if (shell_app_get_state (app) != SHELL_APP_STATE_RUNNING) return; windows = shell_app_get_windows (app); if (window == NULL && windows) window = windows->data; if (!g_slist_find (windows, window)) return; else { GSList *windows_reversed, *iter; ShellGlobal *global = shell_global_get (); MetaDisplay *display = shell_global_get_display (global); MetaWorkspace *active = get_active_workspace (); MetaWorkspace *workspace = meta_window_get_workspace (window); guint32 last_user_timestamp = meta_display_get_last_user_time (display); MetaWindow *most_recent_transient; if (meta_display_xserver_time_is_before (display, timestamp, last_user_timestamp)) { meta_window_set_demands_attention (window); return; } /* Now raise all the other windows for the app that are on * the same workspace, in reverse order to preserve the stacking. */ windows_reversed = g_slist_copy (windows); windows_reversed = g_slist_reverse (windows_reversed); for (iter = windows_reversed; iter; iter = iter->next) { MetaWindow *other_window = iter->data; if (other_window != window) meta_window_raise_and_make_recent_on_workspace (other_window, workspace); } g_slist_free (windows_reversed); /* If we have a transient that the user's interacted with more recently than * the window, pick that. */ most_recent_transient = find_most_recent_transient_on_same_workspace (display, window); if (most_recent_transient && meta_display_xserver_time_is_before (display, meta_window_get_user_time (window), meta_window_get_user_time (most_recent_transient))) window = most_recent_transient; if (active != workspace) meta_workspace_activate_with_focus (workspace, window, timestamp); else meta_window_activate (window, timestamp); } } void shell_app_update_window_actions (ShellApp *app, MetaWindow *window) { const char *object_path; object_path = meta_window_get_gtk_window_object_path (window); if (object_path != NULL) { GActionGroup *actions; actions = g_object_get_data (G_OBJECT (window), "actions"); if (actions == NULL) { actions = G_ACTION_GROUP (g_dbus_action_group_get (app->running_state->session, meta_window_get_gtk_unique_bus_name (window), object_path)); g_object_set_data_full (G_OBJECT (window), "actions", actions, g_object_unref); } g_assert (app->running_state->muxer); gtk_action_muxer_insert (app->running_state->muxer, "win", actions); g_object_notify_by_pspec (G_OBJECT (app), props[PROP_ACTION_GROUP]); } } /** * shell_app_activate: * @app: a #ShellApp * * Like shell_app_activate_full(), but using the default workspace and * event timestamp. */ void shell_app_activate (ShellApp *app) { return shell_app_activate_full (app, -1, 0); } /** * shell_app_activate_full: * @app: a #ShellApp * @workspace: launch on this workspace, or -1 for default. Ignored if * activating an existing window * @timestamp: Event timestamp * * Perform an appropriate default action for operating on this application, * dependent on its current state. For example, if the application is not * currently running, launch it. If it is running, activate the most * recently used NORMAL window (or if that window has a transient, the most * recently used transient for that window). */ void shell_app_activate_full (ShellApp *app, int workspace, guint32 timestamp) { ShellGlobal *global; global = shell_global_get (); if (timestamp == 0) timestamp = shell_global_get_current_time (global); switch (app->state) { case SHELL_APP_STATE_STOPPED: { GError *error = NULL; if (!shell_app_launch (app, timestamp, workspace, SHELL_APP_LAUNCH_GPU_APP_PREF, &error)) { char *msg; msg = g_strdup_printf (_("Failed to launch “%s”"), shell_app_get_name (app)); shell_global_notify_error (global, msg, error->message); g_free (msg); g_clear_error (&error); } } break; case SHELL_APP_STATE_STARTING: break; case SHELL_APP_STATE_RUNNING: shell_app_activate_window (app, NULL, timestamp); break; default: g_assert_not_reached(); break; } } /** * shell_app_open_new_window: * @app: a #ShellApp * @workspace: open on this workspace, or -1 for default * * Request that the application create a new window. */ void shell_app_open_new_window (ShellApp *app, int workspace) { GActionGroup *group = NULL; const char * const *actions; g_return_if_fail (app->info != NULL); /* First check whether the application provides a "new-window" desktop * action - it is a safe bet that it will open a new window, and activating * it will trigger startup notification if necessary */ actions = g_desktop_app_info_list_actions (G_DESKTOP_APP_INFO (app->info)); if (g_strv_contains (actions, "new-window")) { shell_app_launch_action (app, "new-window", 0, workspace); return; } /* Next, check whether the app exports an explicit "new-window" action * that we can activate on the bus - the muxer will add startup notification * information to the platform data, so this should work just as well as * desktop actions. */ group = app->running_state ? G_ACTION_GROUP (app->running_state->muxer) : NULL; if (group && g_action_group_has_action (group, "app.new-window") && g_action_group_get_action_parameter_type (group, "app.new-window") == NULL) { g_action_group_activate_action (group, "app.new-window", NULL); return; } /* Lastly, just always launch the application again, even if we know * it was already running. For most applications this * should have the effect of creating a new window, whether that's * a second process (in the case of Calculator) or IPC to existing * instance (Firefox). There are a few less-sensical cases such * as say Pidgin. */ shell_app_launch (app, 0, workspace, SHELL_APP_LAUNCH_GPU_APP_PREF, NULL); } /** * shell_app_can_open_new_window: * @app: a #ShellApp * * Returns %TRUE if the app supports opening a new window through * shell_app_open_new_window() (ie, if calling that function will * result in actually opening a new window and not something else, * like presenting the most recently active one) */ gboolean shell_app_can_open_new_window (ShellApp *app) { ShellAppRunningState *state; MetaWindow *window; GDesktopAppInfo *desktop_info; const char * const *desktop_actions; /* Apps that are stopped can always open new windows, because * activating them would open the first one; if they are starting, * we cannot tell whether they can open additional windows until * they are running */ if (app->state != SHELL_APP_STATE_RUNNING) return app->state == SHELL_APP_STATE_STOPPED; state = app->running_state; /* If the app has an explicit new-window action, then it can (or it should be able to) ... */ if (g_action_group_has_action (G_ACTION_GROUP (state->muxer), "app.new-window")) return TRUE; /* If the app doesn't have a desktop file, then nothing is possible */ if (!app->info) return FALSE; desktop_info = G_DESKTOP_APP_INFO (app->info); /* If the app is explicitly telling us via its desktop file, then we know * for sure */ if (g_desktop_app_info_has_key (desktop_info, "SingleMainWindow")) return !g_desktop_app_info_get_boolean (desktop_info, "SingleMainWindow"); /* GNOME-specific key, for backwards compatibility with apps that haven't * started using the XDG "SingleMainWindow" key yet */ if (g_desktop_app_info_has_key (desktop_info, "X-GNOME-SingleWindow")) return !g_desktop_app_info_get_boolean (desktop_info, "X-GNOME-SingleWindow"); /* If it has a new-window desktop action, it should be able to */ desktop_actions = g_desktop_app_info_list_actions (desktop_info); if (desktop_actions && g_strv_contains (desktop_actions, "new-window")) return TRUE; /* If this is a unique GtkApplication, and we don't have a new-window, then probably we can't We don't consider non-unique GtkApplications here to handle cases like evince, which don't export a new-window action because each window is in a different process. In any case, in a non-unique GtkApplication each Activate() knows nothing about the other instances, so it will show a new window. */ window = state->windows->data; if (state->unique_bus_name != NULL && meta_window_get_gtk_application_object_path (window) != NULL) { if (meta_window_get_gtk_application_id (window) != NULL) return FALSE; else return TRUE; } /* In all other cases, we don't have a reliable source of information or a decent heuristic, so we err on the compatibility side and say yes. */ return TRUE; } /** * shell_app_get_state: * @app: a #ShellApp * * Returns: State of the application */ ShellAppState shell_app_get_state (ShellApp *app) { return app->state; } typedef struct { ShellApp *app; MetaWorkspace *active_workspace; } CompareWindowsData; static int shell_app_compare_windows (gconstpointer a, gconstpointer b, gpointer datap) { MetaWindow *win_a = (gpointer)a; MetaWindow *win_b = (gpointer)b; CompareWindowsData *data = datap; gboolean ws_a, ws_b; gboolean vis_a, vis_b; ws_a = meta_window_get_workspace (win_a) == data->active_workspace; ws_b = meta_window_get_workspace (win_b) == data->active_workspace; if (ws_a && !ws_b) return -1; else if (!ws_a && ws_b) return 1; vis_a = meta_window_showing_on_its_workspace (win_a); vis_b = meta_window_showing_on_its_workspace (win_b); if (vis_a && !vis_b) return -1; else if (!vis_a && vis_b) return 1; return meta_window_get_user_time (win_b) - meta_window_get_user_time (win_a); } /** * shell_app_get_windows: * @app: * * Get the windows which are associated with this application. The * returned list will be sorted first by whether they're on the * active workspace, then by whether they're visible, and finally * by the time the user last interacted with them. * * Returns: (transfer container) (element-type MetaWindow): List of windows */ GSList * shell_app_get_windows (ShellApp *app) { GSList *windows = NULL; GSList *l; if (app->running_state == NULL) return NULL; if (app->running_state->window_sort_stale) { CompareWindowsData data; data.app = app; data.active_workspace = get_active_workspace (); app->running_state->windows = g_slist_sort_with_data (app->running_state->windows, shell_app_compare_windows, &data); app->running_state->window_sort_stale = FALSE; } for (l = app->running_state->windows; l; l = l->next) if (!meta_window_is_override_redirect (META_WINDOW (l->data))) windows = g_slist_prepend (windows, l->data); return g_slist_reverse (windows); } guint shell_app_get_n_windows (ShellApp *app) { if (app->running_state == NULL) return 0; return g_slist_length (app->running_state->windows); } gboolean shell_app_is_on_workspace (ShellApp *app, MetaWorkspace *workspace) { GSList *iter; if (shell_app_get_state (app) == SHELL_APP_STATE_STARTING) { if (app->started_on_workspace == -1 || meta_workspace_index (workspace) == app->started_on_workspace) return TRUE; else return FALSE; } if (app->running_state == NULL) return FALSE; for (iter = app->running_state->windows; iter; iter = iter->next) { if (meta_window_get_workspace (iter->data) == workspace) return TRUE; } return FALSE; } static int shell_app_get_last_user_time (ShellApp *app) { GSList *iter; guint32 last_user_time; last_user_time = 0; if (app->running_state != NULL) { for (iter = app->running_state->windows; iter; iter = iter->next) last_user_time = MAX (last_user_time, meta_window_get_user_time (iter->data)); } return (int)last_user_time; } static gboolean shell_app_is_minimized (ShellApp *app) { GSList *iter; if (app->running_state == NULL) return FALSE; for (iter = app->running_state->windows; iter; iter = iter->next) { if (meta_window_showing_on_its_workspace (iter->data)) return FALSE; } return TRUE; } /** * shell_app_compare: * @app: * @other: A #ShellApp * * Compare one #ShellApp instance to another, in the following way: * - Running applications sort before not-running applications. * - If one of them has non-minimized windows and the other does not, * the one with visible windows is first. * - Finally, the application which the user interacted with most recently * compares earlier. */ int shell_app_compare (ShellApp *app, ShellApp *other) { gboolean min_app, min_other; if (app->state != other->state) { if (app->state == SHELL_APP_STATE_RUNNING) return -1; return 1; } min_app = shell_app_is_minimized (app); min_other = shell_app_is_minimized (other); if (min_app != min_other) { if (min_other) return -1; return 1; } if (app->state == SHELL_APP_STATE_RUNNING) { if (app->running_state->windows && !other->running_state->windows) return -1; else if (!app->running_state->windows && other->running_state->windows) return 1; return shell_app_get_last_user_time (other) - shell_app_get_last_user_time (app); } return 0; } ShellApp * _shell_app_new_for_window (MetaWindow *window) { ShellApp *app; app = g_object_new (SHELL_TYPE_APP, NULL); app->window_id_string = g_strdup_printf ("window:%d", meta_window_get_stable_sequence (window)); _shell_app_add_window (app, window); return app; } ShellApp * _shell_app_new (GDesktopAppInfo *info) { ShellApp *app; app = g_object_new (SHELL_TYPE_APP, "app-info", info, NULL); return app; } void _shell_app_set_app_info (ShellApp *app, GDesktopAppInfo *info) { g_set_object (&app->info, info); g_clear_pointer (&app->name_collation_key, g_free); if (app->info) app->name_collation_key = g_utf8_collate_key (shell_app_get_name (app), -1); } static void shell_app_state_transition (ShellApp *app, ShellAppState state) { if (app->state == state) return; g_return_if_fail (!(app->state == SHELL_APP_STATE_RUNNING && state == SHELL_APP_STATE_STARTING)); app->state = state; _shell_app_system_notify_app_state_changed (shell_app_system_get_default (), app); g_object_notify_by_pspec (G_OBJECT (app), props[PROP_STATE]); } static void shell_app_on_user_time_changed (MetaWindow *window, GParamSpec *pspec, ShellApp *app) { g_assert (app->running_state != NULL); /* Ideally we don't want to emit windows-changed if the sort order * isn't actually changing. This check catches most of those. */ if (window != app->running_state->windows->data) { app->running_state->window_sort_stale = TRUE; g_signal_emit (app, shell_app_signals[WINDOWS_CHANGED], 0); } } static void shell_app_sync_running_state (ShellApp *app) { g_return_if_fail (app->running_state != NULL); if (app->state != SHELL_APP_STATE_STARTING) { if (app->running_state->interesting_windows == 0) shell_app_state_transition (app, SHELL_APP_STATE_STOPPED); else shell_app_state_transition (app, SHELL_APP_STATE_RUNNING); } } static void shell_app_on_skip_taskbar_changed (MetaWindow *window, GParamSpec *pspec, ShellApp *app) { g_assert (app->running_state != NULL); /* we rely on MetaWindow:skip-taskbar only being notified * when it actually changes; when that assumption breaks, * we'll have to track the "interesting" windows themselves */ if (meta_window_is_skip_taskbar (window)) app->running_state->interesting_windows--; else app->running_state->interesting_windows++; shell_app_sync_running_state (app); } static void shell_app_on_ws_switch (MetaWorkspaceManager *workspace_manager, int from, int to, MetaMotionDirection direction, gpointer data) { ShellApp *app = SHELL_APP (data); g_assert (app->running_state != NULL); app->running_state->window_sort_stale = TRUE; g_signal_emit (app, shell_app_signals[WINDOWS_CHANGED], 0); } gboolean shell_app_get_busy (ShellApp *app) { if (app->running_state != NULL && app->running_state->application_proxy != NULL && shell_org_gtk_application_get_busy (app->running_state->application_proxy)) return TRUE; return FALSE; } static void busy_changed_cb (GObject *object, GParamSpec *pspec, gpointer user_data) { ShellApp *app = user_data; g_assert (SHELL_IS_APP (app)); g_object_notify_by_pspec (G_OBJECT (app), props[PROP_BUSY]); } static void get_application_proxy (GObject *source, GAsyncResult *result, gpointer user_data) { ShellApp *app = user_data; ShellOrgGtkApplication *proxy; g_autoptr (GError) error = NULL; g_assert (SHELL_IS_APP (app)); proxy = shell_org_gtk_application_proxy_new_finish (result, &error); if (proxy != NULL) { app->running_state->application_proxy = proxy; g_signal_connect (proxy, "notify::busy", G_CALLBACK (busy_changed_cb), app); if (shell_org_gtk_application_get_busy (proxy)) g_object_notify_by_pspec (G_OBJECT (app), props[PROP_BUSY]); } if (app->running_state != NULL && !g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) g_clear_object (&app->running_state->cancellable); g_object_unref (app); } static void shell_app_ensure_busy_watch (ShellApp *app) { ShellAppRunningState *running_state = app->running_state; MetaWindow *window; const gchar *object_path; if (running_state->application_proxy != NULL || running_state->cancellable != NULL) return; if (running_state->unique_bus_name == NULL) return; window = g_slist_nth_data (running_state->windows, 0); object_path = meta_window_get_gtk_application_object_path (window); if (object_path == NULL) return; running_state->cancellable = g_cancellable_new(); /* Take a reference to app to make sure it isn't finalized before get_application_proxy runs */ shell_org_gtk_application_proxy_new (running_state->session, G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START, running_state->unique_bus_name, object_path, running_state->cancellable, get_application_proxy, g_object_ref (app)); } void _shell_app_add_window (ShellApp *app, MetaWindow *window) { if (app->running_state && g_slist_find (app->running_state->windows, window)) return; g_object_freeze_notify (G_OBJECT (app)); if (!app->running_state) create_running_state (app); app->running_state->window_sort_stale = TRUE; app->running_state->windows = g_slist_prepend (app->running_state->windows, g_object_ref (window)); g_signal_connect_object (window, "notify::user-time", G_CALLBACK(shell_app_on_user_time_changed), app, 0); g_signal_connect_object (window, "notify::skip-taskbar", G_CALLBACK(shell_app_on_skip_taskbar_changed), app, 0); shell_app_update_app_actions (app, window); shell_app_ensure_busy_watch (app); if (!meta_window_is_skip_taskbar (window)) app->running_state->interesting_windows++; shell_app_sync_running_state (app); if (app->started_on_workspace >= 0 && !meta_window_is_on_all_workspaces (window)) meta_window_change_workspace_by_index (window, app->started_on_workspace, FALSE); app->started_on_workspace = -1; g_object_thaw_notify (G_OBJECT (app)); g_signal_emit (app, shell_app_signals[WINDOWS_CHANGED], 0); } void _shell_app_remove_window (ShellApp *app, MetaWindow *window) { g_assert (app->running_state != NULL); if (!g_slist_find (app->running_state->windows, window)) return; app->running_state->windows = g_slist_remove (app->running_state->windows, window); if (!meta_window_is_skip_taskbar (window)) app->running_state->interesting_windows--; shell_app_sync_running_state (app); if (app->running_state->windows == NULL) g_clear_pointer (&app->running_state, unref_running_state); g_signal_handlers_disconnect_by_func (window, G_CALLBACK(shell_app_on_user_time_changed), app); g_signal_handlers_disconnect_by_func (window, G_CALLBACK(shell_app_on_skip_taskbar_changed), app); g_object_unref (window); g_signal_emit (app, shell_app_signals[WINDOWS_CHANGED], 0); } /** * shell_app_get_pids: * @app: a #ShellApp * * Returns: (transfer container) (element-type int): An unordered list of process identifiers associated with this application. */ GSList * shell_app_get_pids (ShellApp *app) { GSList *result; g_autoptr (GSList) windows = NULL; GSList *iter; result = NULL; windows = shell_app_get_windows (app); for (iter = windows; iter; iter = iter->next) { MetaWindow *window = iter->data; pid_t pid = meta_window_get_pid (window); if (pid < 1) continue; /* Note in the (by far) common case, app will only have one pid, so * we'll hit the first element, so don't worry about O(N^2) here. */ if (!g_slist_find (result, GINT_TO_POINTER (pid))) result = g_slist_prepend (result, GINT_TO_POINTER (pid)); } return result; } void _shell_app_handle_startup_sequence (ShellApp *app, MetaStartupSequence *sequence) { gboolean starting = !meta_startup_sequence_get_completed (sequence); /* The Shell design calls for on application launch, the app title * appears at top, and no X window is focused. So when we get * a startup-notification for this app, transition it to STARTING * if it's currently stopped, set it as our application focus, * but focus the no_focus window. */ if (starting && shell_app_get_state (app) == SHELL_APP_STATE_STOPPED) { MetaDisplay *display = shell_global_get_display (shell_global_get ()); shell_app_state_transition (app, SHELL_APP_STATE_STARTING); meta_display_unset_input_focus (display, meta_startup_sequence_get_timestamp (sequence)); } if (starting) app->started_on_workspace = meta_startup_sequence_get_workspace (sequence); else if (app->running_state && app->running_state->windows) shell_app_state_transition (app, SHELL_APP_STATE_RUNNING); else /* application have > 1 .desktop file */ shell_app_state_transition (app, SHELL_APP_STATE_STOPPED); } /** * shell_app_request_quit: * @app: A #ShellApp * * Initiate an asynchronous request to quit this application. * The application may interact with the user, and the user * might cancel the quit request from the application UI. * * This operation may not be supported for all applications. * * Returns: %TRUE if a quit request is supported for this application */ gboolean shell_app_request_quit (ShellApp *app) { GActionGroup *group = NULL; GSList *iter; if (shell_app_get_state (app) != SHELL_APP_STATE_RUNNING) return FALSE; /* First, check whether the app exports an explicit "quit" action * that we can activate on the bus */ group = G_ACTION_GROUP (app->running_state->muxer); if (g_action_group_has_action (group, "app.quit") && g_action_group_get_action_parameter_type (group, "app.quit") == NULL) { g_action_group_activate_action (group, "app.quit", NULL); return TRUE; } /* Otherwise, fall back to closing all the app's windows */ for (iter = app->running_state->windows; iter; iter = iter->next) { MetaWindow *win = iter->data; if (!meta_window_can_close (win)) continue; meta_window_delete (win, shell_global_get_current_time (shell_global_get ())); } return TRUE; } static void child_context_setup (gpointer user_data) { ShellGlobal *shell_global = user_data; MetaContext *meta_context = shell_global_get_context (shell_global); meta_context_restore_rlimit_nofile (meta_context, NULL); } static void wait_pid (GDesktopAppInfo *appinfo, GPid pid, gpointer user_data) { g_child_watch_add (pid, (GChildWatchFunc) g_spawn_close_pid, NULL); } static void apply_discrete_gpu_env (GAppLaunchContext *context, ShellGlobal *global) { GDBusProxy *proxy; GVariant* variant; guint num_children, i; proxy = shell_global_get_switcheroo_control (global); if (!proxy) { g_warning ("Could not apply discrete GPU environment, switcheroo-control not available"); return; } variant = shell_net_hadess_switcheroo_control_get_gpus (SHELL_NET_HADESS_SWITCHEROO_CONTROL (proxy)); if (!variant) { g_warning ("Could not apply discrete GPU environment, no GPUs in list"); return; } num_children = g_variant_n_children (variant); for (i = 0; i < num_children; i++) { g_autoptr(GVariant) gpu = NULL; g_autoptr(GVariant) env = NULL; g_autoptr(GVariant) default_variant = NULL; g_autofree const char **env_s = NULL; guint j; gpu = g_variant_get_child_value (variant, i); if (!gpu || !g_variant_is_of_type (gpu, G_VARIANT_TYPE ("a{s*}"))) continue; /* Skip over the default GPU */ default_variant = g_variant_lookup_value (gpu, "Default", NULL); if (!default_variant || g_variant_get_boolean (default_variant)) continue; env = g_variant_lookup_value (gpu, "Environment", NULL); if (!env) continue; env_s = g_variant_get_strv (env, NULL); for (j = 0; env_s[j] != NULL; j = j + 2) g_app_launch_context_setenv (context, env_s[j], env_s[j+1]); return; } g_debug ("Could not find discrete GPU in switcheroo-control, not applying environment"); } /** * shell_app_launch: * @timestamp: Event timestamp, or 0 for current event timestamp * @workspace: Start on this workspace, or -1 for default * @gpu_pref: the GPU to prefer launching on * @error: A #GError */ gboolean shell_app_launch (ShellApp *app, guint timestamp, int workspace, ShellAppLaunchGpu gpu_pref, GError **error) { ShellGlobal *global; GAppLaunchContext *context; gboolean ret; GSpawnFlags flags; gboolean discrete_gpu = FALSE; ShellGlobal *shell_global = shell_global_get (); if (app->info == NULL) { MetaWindow *window = window_backed_app_get_window (app); /* We don't use an error return if there no longer any windows, because the * user attempting to activate a stale window backed app isn't something * we would expect the caller to meaningfully handle or display an error * message to the user. */ if (window) meta_window_activate (window, timestamp); return TRUE; } global = shell_global_get (); context = shell_global_create_app_launch_context (global, timestamp, workspace); if (gpu_pref == SHELL_APP_LAUNCH_GPU_APP_PREF) discrete_gpu = g_desktop_app_info_get_boolean (app->info, "PrefersNonDefaultGPU"); else discrete_gpu = (gpu_pref == SHELL_APP_LAUNCH_GPU_DISCRETE); if (discrete_gpu) apply_discrete_gpu_env (context, global); /* Set LEAVE_DESCRIPTORS_OPEN in order to use an optimized gspawn * codepath. The shell's open file descriptors should be marked CLOEXEC * so that they are automatically closed even with this flag set. */ flags = G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD | G_SPAWN_LEAVE_DESCRIPTORS_OPEN; /* Optimized spawn path, avoiding a child_setup function */ { int journalfd = -1; #ifdef HAVE_SYSTEMD journalfd = sd_journal_stream_fd (shell_app_get_id (app), LOG_INFO, FALSE); #endif /* HAVE_SYSTEMD */ ret = g_desktop_app_info_launch_uris_as_manager_with_fds (app->info, NULL, context, flags, child_context_setup, shell_global, wait_pid, NULL, -1, journalfd, journalfd, error); if (journalfd >= 0) (void) close (journalfd); } g_object_unref (context); return ret; } /** * shell_app_launch_action: * @app: the #ShellApp * @action_name: the name of the action to launch (as obtained by * g_desktop_app_info_list_actions()) * @timestamp: Event timestamp, or 0 for current event timestamp * @workspace: Start on this workspace, or -1 for default */ void shell_app_launch_action (ShellApp *app, const char *action_name, guint timestamp, int workspace) { ShellGlobal *global; GAppLaunchContext *context; global = shell_global_get (); context = shell_global_create_app_launch_context (global, timestamp, workspace); g_desktop_app_info_launch_action (G_DESKTOP_APP_INFO (app->info), action_name, context); g_object_unref (context); } static gchar * object_path_from_app_id (const gchar *app_id) { gchar *app_id_path, *iter; app_id_path = g_strconcat ("/", app_id, NULL); for (iter = app_id_path; *iter; iter++) { if (*iter == '.') *iter = '/'; if (*iter == '-') *iter = '_'; } return app_id_path; } static GVariant * get_platform_data (ShellApp *app, guint timestamp, int workspace) { GVariantBuilder builder; ShellGlobal *global; g_autoptr (GAppLaunchContext) context = NULL; gchar *startup_id; g_variant_builder_init (&builder, G_VARIANT_TYPE_VARDICT); if (!app->info) return g_variant_builder_end (&builder); global = shell_global_get (); context = shell_global_create_app_launch_context (global, timestamp, workspace); if (!context) return g_variant_builder_end (&builder); startup_id = g_app_launch_context_get_startup_notify_id (context, G_APP_INFO (app->info), NULL); if (!startup_id) return g_variant_builder_end (&builder); g_variant_builder_add (&builder, "{sv}", "desktop-startup-id", g_variant_new_string (startup_id)); g_variant_builder_add (&builder, "{sv}", "activation-token", g_variant_new_take_string (g_steal_pointer (&startup_id))); return g_variant_builder_end (&builder); } static void on_activate_action_cb (GObject *source, GAsyncResult *res, gpointer user_data) { GTask *task = G_TASK (user_data); g_autoptr (GVariant) value = NULL; g_autoptr (GError) error = NULL; value = g_dbus_connection_call_finish (G_DBUS_CONNECTION (source), res, &error); if (error) g_task_return_error (task, g_steal_pointer (&error)); else g_task_return_boolean (task, TRUE); } static void activate_action_get_bus_cb (GObject *object, GAsyncResult *result, gpointer user_data) { GTask *task = G_TASK (user_data); ShellApp *app = NULL; g_autoptr (GDBusConnection) session_bus = NULL; g_autoptr (GError) error = NULL; g_autofree gchar *object_path = NULL; g_autofree gchar *app_id = NULL; gchar *last_dot; session_bus = g_bus_get_finish (result, &error); if (error) { g_task_return_error (task, g_steal_pointer (&error)); return; } app = SHELL_APP (g_task_get_source_object (task)); app_id = g_strdup (g_app_info_get_id (G_APP_INFO (app->info))); last_dot = strrchr (app_id, '.'); if (last_dot && g_str_equal (last_dot, ".desktop")) *last_dot = '\0'; object_path = object_path_from_app_id (app_id); g_dbus_connection_call (session_bus, app_id, object_path, "org.freedesktop.Application", "ActivateAction", g_task_get_task_data (task), NULL, G_DBUS_CALL_FLAGS_NONE, -1, g_task_get_cancellable (task), on_activate_action_cb, task); } /** * shell_app_activate_action * @app: the #ShellApp * @action_name: the name of an action to activate * @parameter: (nullable): the parameter to the activation * @timestamp: Event timestamp, or 0 for current event timestamp * @workspace: Start on this workspace, or -1 for default * @cancellable: (nullable): a #GCancellable or %NULL * @callback: (scope async): A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: (nullable): User data to pass to @callback * * This activates an action using 'org.freedesktop.Application' DBus interface. * * This function will fail if this #ShellApp doesn't have a valid #GDesktopAppInfo * with a valid id. */ void shell_app_activate_action (ShellApp *app, const char *action_name, GVariant *parameter, guint timestamp, int workspace, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_autoptr (GTask) task = NULL; g_autoptr (GVariant) task_data = NULL; g_return_if_fail (SHELL_IS_APP (app)); g_return_if_fail (G_IS_DESKTOP_APP_INFO (app->info)); g_return_if_fail (g_application_id_is_valid (g_app_info_get_id (G_APP_INFO (app->info)))); g_return_if_fail (action_name != NULL && action_name[0] != '\0'); g_return_if_fail (parameter == NULL || g_variant_is_of_type (parameter, G_VARIANT_TYPE ("av"))); g_return_if_fail (timestamp >= 0); g_return_if_fail (workspace >= -1); g_return_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable)); task = g_task_new (app, cancellable, callback, user_data); g_task_set_source_tag (task, shell_app_activate_action); if (!parameter) parameter = g_variant_new("av", NULL); task_data = g_variant_ref_sink (g_variant_new ("(s@av@a{sv})", action_name, parameter, get_platform_data (app, timestamp, workspace))); g_task_set_task_data (task, g_steal_pointer (&task_data), (GDestroyNotify) g_variant_unref); g_bus_get (G_BUS_TYPE_SESSION, cancellable, activate_action_get_bus_cb, g_steal_pointer (&task)); } /** * shell_app_activate_action_finish: * @app: the #ShellApp * @error: #GError for error reporting * * Finish the asynchronous operation started by shell_app_activate_action() * and obtain its result. * * Returns: whether the operation was successful * */ gboolean shell_app_activate_action_finish (ShellApp *app, GAsyncResult *result, GError **error) { g_return_val_if_fail (SHELL_IS_APP (app), FALSE); g_return_val_if_fail (G_IS_TASK (result), FALSE); g_return_val_if_fail (g_async_result_is_tagged (result, shell_app_activate_action), FALSE); if (!g_task_propagate_boolean (G_TASK (result), error)) return FALSE; return TRUE; } /** * shell_app_get_app_info: * @app: a #ShellApp * * Returns: (transfer none): The #GDesktopAppInfo for this app, or %NULL if backed by a window */ GDesktopAppInfo * shell_app_get_app_info (ShellApp *app) { return app->info; } static void create_running_state (ShellApp *app) { MetaDisplay *display = shell_global_get_display (shell_global_get ()); MetaWorkspaceManager *workspace_manager = meta_display_get_workspace_manager (display); g_assert (app->running_state == NULL); app->running_state = g_new0 (ShellAppRunningState, 1); app->running_state->refcount = 1; app->running_state->workspace_switch_id = g_signal_connect (workspace_manager, "workspace-switched", G_CALLBACK (shell_app_on_ws_switch), app); app->running_state->session = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, NULL); g_assert (app->running_state->session != NULL); app->running_state->muxer = gtk_action_muxer_new (); } void shell_app_update_app_actions (ShellApp *app, MetaWindow *window) { const gchar *unique_bus_name; /* We assume that 'gtk-application-object-path' and * 'gtk-app-menu-object-path' are the same for all windows which * have it set. * * It could be possible, however, that the first window we see * belonging to the app didn't have them set. For this reason, we * take the values from the first window that has them set and ignore * all the rest (until the app is stopped and restarted). */ unique_bus_name = meta_window_get_gtk_unique_bus_name (window); if (g_strcmp0 (app->running_state->unique_bus_name, unique_bus_name) != 0) { const gchar *application_object_path; GDBusActionGroup *actions; application_object_path = meta_window_get_gtk_application_object_path (window); if (application_object_path == NULL || unique_bus_name == NULL) return; g_clear_pointer (&app->running_state->unique_bus_name, g_free); app->running_state->unique_bus_name = g_strdup (unique_bus_name); actions = g_dbus_action_group_get (app->running_state->session, unique_bus_name, application_object_path); gtk_action_muxer_insert (app->running_state->muxer, "app", G_ACTION_GROUP (actions)); g_object_unref (actions); } } static void unref_running_state (ShellAppRunningState *state) { MetaDisplay *display = shell_global_get_display (shell_global_get ()); MetaWorkspaceManager *workspace_manager = meta_display_get_workspace_manager (display); g_assert (state->refcount > 0); state->refcount--; if (state->refcount > 0) return; g_clear_signal_handler (&state->workspace_switch_id, workspace_manager); g_clear_object (&state->application_proxy); if (state->cancellable != NULL) { g_cancellable_cancel (state->cancellable); g_clear_object (&state->cancellable); } g_clear_object (&state->muxer); g_clear_object (&state->session); g_clear_pointer (&state->unique_bus_name, g_free); g_free (state); } /** * shell_app_compare_by_name: * @app: One app * @other: The other app * * Order two applications by name. * * Returns: -1, 0, or 1; suitable for use as a comparison function * for e.g. g_slist_sort() */ int shell_app_compare_by_name (ShellApp *app, ShellApp *other) { return strcmp (app->name_collation_key, other->name_collation_key); } static void shell_app_init (ShellApp *self) { self->state = SHELL_APP_STATE_STOPPED; self->started_on_workspace = -1; } static void shell_app_dispose (GObject *object) { ShellApp *app = SHELL_APP (object); g_clear_object (&app->info); g_clear_object (&app->fallback_icon); while (app->running_state) _shell_app_remove_window (app, app->running_state->windows->data); /* We should have been transitioned when we removed all of our windows */ g_assert (app->state == SHELL_APP_STATE_STOPPED); g_assert (app->running_state == NULL); G_OBJECT_CLASS(shell_app_parent_class)->dispose (object); } static void shell_app_finalize (GObject *object) { ShellApp *app = SHELL_APP (object); g_free (app->window_id_string); g_free (app->name_collation_key); G_OBJECT_CLASS(shell_app_parent_class)->finalize (object); } static void shell_app_class_init(ShellAppClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); gobject_class->get_property = shell_app_get_property; gobject_class->set_property = shell_app_set_property; gobject_class->dispose = shell_app_dispose; gobject_class->finalize = shell_app_finalize; shell_app_signals[WINDOWS_CHANGED] = g_signal_new ("windows-changed", SHELL_TYPE_APP, G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 0); /** * ShellApp:state: * * The high-level state of the application, effectively whether it's * running or not, or transitioning between those states. */ props[PROP_STATE] = g_param_spec_enum ("state", NULL, NULL, SHELL_TYPE_APP_STATE, SHELL_APP_STATE_STOPPED, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); /** * ShellApp:busy: * * Whether the application has marked itself as busy. */ props[PROP_BUSY] = g_param_spec_boolean ("busy", NULL, NULL, FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); /** * ShellApp:id: * * The id of this application (a desktop filename, or a special string * like window:0xabcd1234) */ props[PROP_ID] = g_param_spec_string ("id", NULL, NULL, NULL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); /** * ShellApp:icon: * * The #GIcon representing this ShellApp */ props[PROP_ICON] = g_param_spec_object ("icon", NULL, NULL, G_TYPE_ICON, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); /** * ShellApp:action-group: * * The #GDBusActionGroup associated with this ShellApp, if any. See the * documentation of #GApplication and #GActionGroup for details. */ props[PROP_ACTION_GROUP] = g_param_spec_object ("action-group", NULL, NULL, G_TYPE_ACTION_GROUP, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); /** * ShellApp:app-info: * * The #GDesktopAppInfo associated with this ShellApp, if any. */ props[PROP_APP_INFO] = g_param_spec_object ("app-info", NULL, NULL, G_TYPE_DESKTOP_APP_INFO, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS); g_object_class_install_properties (gobject_class, N_PROPS, props); } 07070100000299000081A40000000000000000000000016712993F00000CBD000000000000000000000000000000000000002100000000gnome-shell-47.1/src/shell-app.h/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ #pragma once #include #include #include #include G_BEGIN_DECLS #define SHELL_TYPE_APP (shell_app_get_type ()) G_DECLARE_FINAL_TYPE (ShellApp, shell_app, SHELL, APP, GObject) typedef enum { SHELL_APP_STATE_STOPPED, SHELL_APP_STATE_STARTING, SHELL_APP_STATE_RUNNING } ShellAppState; typedef enum { SHELL_APP_LAUNCH_GPU_APP_PREF = 0, SHELL_APP_LAUNCH_GPU_DISCRETE, SHELL_APP_LAUNCH_GPU_DEFAULT } ShellAppLaunchGpu; const char *shell_app_get_id (ShellApp *app); GDesktopAppInfo *shell_app_get_app_info (ShellApp *app); ClutterActor *shell_app_create_icon_texture (ShellApp *app, int size); GIcon *shell_app_get_icon (ShellApp *app); const char *shell_app_get_name (ShellApp *app); const char *shell_app_get_description (ShellApp *app); gboolean shell_app_is_window_backed (ShellApp *app); void shell_app_activate_window (ShellApp *app, MetaWindow *window, guint32 timestamp); void shell_app_activate (ShellApp *app); void shell_app_activate_full (ShellApp *app, int workspace, guint32 timestamp); void shell_app_open_new_window (ShellApp *app, int workspace); gboolean shell_app_can_open_new_window (ShellApp *app); ShellAppState shell_app_get_state (ShellApp *app); gboolean shell_app_request_quit (ShellApp *app); guint shell_app_get_n_windows (ShellApp *app); GSList *shell_app_get_windows (ShellApp *app); GSList *shell_app_get_pids (ShellApp *app); gboolean shell_app_is_on_workspace (ShellApp *app, MetaWorkspace *workspace); gboolean shell_app_launch (ShellApp *app, guint timestamp, int workspace, ShellAppLaunchGpu gpu_pref, GError **error); void shell_app_launch_action (ShellApp *app, const char *action_name, guint timestamp, int workspace); void shell_app_activate_action (ShellApp *app, const char *action_name, GVariant *parameter, guint timestamp, int workspace, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean shell_app_activate_action_finish (ShellApp *app, GAsyncResult *result, GError **error); int shell_app_compare_by_name (ShellApp *app, ShellApp *other); int shell_app_compare (ShellApp *app, ShellApp *other); void shell_app_update_window_actions (ShellApp *app, MetaWindow *window); void shell_app_update_app_actions (ShellApp *app, MetaWindow *window); gboolean shell_app_get_busy (ShellApp *app); G_END_DECLS 0707010000029A000081A40000000000000000000000016712993F00006C48000000000000000000000000000000000000002900000000gnome-shell-47.1/src/shell-blur-effect.c/* shell-blur-effect.c * * Copyright 2019 Georges Basile Stavracas Neto * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * SPDX-License-Identifier: GPL-3.0-or-later */ #include #include "shell-blur-effect.h" #include "shell-enum-types.h" /** * SECTION:shell-blur-effect * @short_description: Blur effect for actors * * #ShellBlurEffect is a blur implementation based on Clutter. It also has * an optional brightness property. * * # Modes * * #ShellBlurEffect can work in @SHELL_BLUR_MODE_BACKGROUND and @SHELL_BLUR_MODE_ACTOR * modes. The actor mode blurs the actor itself, and all of its children. The * background mode blurs the pixels beneath the actor, but not the actor itself. * * @SHELL_BLUR_MODE_BACKGROUND can be computationally expensive, since the contents * beneath the actor cannot be cached, so beware of the performance implications * of using this blur mode. */ static const gchar *brightness_glsl_declarations = "uniform float brightness; \n"; static const gchar *brightness_glsl = " cogl_color_out.rgb *= brightness; \n"; #define MIN_DOWNSCALE_SIZE 256.f #define MAX_RADIUS 12.f typedef enum { ACTOR_PAINTED = 1 << 0, BLUR_APPLIED = 1 << 1, } CacheFlags; typedef struct { CoglFramebuffer *framebuffer; CoglPipeline *pipeline; CoglTexture *texture; } FramebufferData; struct _ShellBlurEffect { ClutterEffect parent_instance; ClutterActor *actor; unsigned int tex_width; unsigned int tex_height; /* The cached contents */ FramebufferData actor_fb; CacheFlags cache_flags; FramebufferData background_fb; FramebufferData brightness_fb; int brightness_uniform; ShellBlurMode mode; float downscale_factor; float brightness; int radius; }; G_DEFINE_TYPE (ShellBlurEffect, shell_blur_effect, CLUTTER_TYPE_EFFECT) enum { PROP_0, PROP_RADIUS, PROP_BRIGHTNESS, PROP_MODE, N_PROPS }; static GParamSpec *properties [N_PROPS] = { NULL, }; static CoglPipeline* create_base_pipeline (void) { static CoglPipeline *base_pipeline = NULL; if (G_UNLIKELY (base_pipeline == NULL)) { CoglContext *ctx = clutter_backend_get_cogl_context (clutter_get_default_backend ()); base_pipeline = cogl_pipeline_new (ctx); cogl_pipeline_set_layer_null_texture (base_pipeline, 0); cogl_pipeline_set_layer_filters (base_pipeline, 0, COGL_PIPELINE_FILTER_LINEAR, COGL_PIPELINE_FILTER_LINEAR); cogl_pipeline_set_layer_wrap_mode (base_pipeline, 0, COGL_PIPELINE_WRAP_MODE_CLAMP_TO_EDGE); } return cogl_pipeline_copy (base_pipeline); } static CoglPipeline* create_brightness_pipeline (void) { static CoglPipeline *brightness_pipeline = NULL; if (G_UNLIKELY (brightness_pipeline == NULL)) { CoglSnippet *snippet; brightness_pipeline = create_base_pipeline (); snippet = cogl_snippet_new (COGL_SNIPPET_HOOK_FRAGMENT, brightness_glsl_declarations, brightness_glsl); cogl_pipeline_add_snippet (brightness_pipeline, snippet); g_object_unref (snippet); } return cogl_pipeline_copy (brightness_pipeline); } static void update_brightness (ShellBlurEffect *self, uint8_t paint_opacity) { CoglColor color; cogl_color_init_from_4f (&color, paint_opacity / 255.0, paint_opacity / 255.0, paint_opacity / 255.0, paint_opacity / 255.0); cogl_pipeline_set_color (self->brightness_fb.pipeline, &color); if (self->brightness_uniform > -1) { cogl_pipeline_set_uniform_1f (self->brightness_fb.pipeline, self->brightness_uniform, self->brightness); } } static void setup_projection_matrix (CoglFramebuffer *framebuffer, float width, float height) { graphene_matrix_t projection; graphene_matrix_init_translate (&projection, &GRAPHENE_POINT3D_INIT (-width / 2.0, -height / 2.0, 0.f)); graphene_matrix_scale (&projection, 2.0 / width, -2.0 / height, 1.f); cogl_framebuffer_set_projection_matrix (framebuffer, &projection); } static gboolean update_fbo (FramebufferData *data, unsigned int width, unsigned int height, float downscale_factor) { CoglContext *ctx = clutter_backend_get_cogl_context (clutter_get_default_backend ()); g_clear_object (&data->texture); g_clear_object (&data->framebuffer); float new_width = floorf (width / downscale_factor); float new_height = floorf (height / downscale_factor); data->texture = cogl_texture_2d_new_with_size (ctx, new_width, new_height); if (!data->texture) return FALSE; cogl_pipeline_set_layer_texture (data->pipeline, 0, data->texture); data->framebuffer = COGL_FRAMEBUFFER (cogl_offscreen_new_with_texture (data->texture)); if (!data->framebuffer) { g_warning ("%s: Unable to create an Offscreen buffer", G_STRLOC); return FALSE; } setup_projection_matrix (data->framebuffer, new_width, new_height); return TRUE; } static gboolean update_actor_fbo (ShellBlurEffect *self, unsigned int width, unsigned int height, float downscale_factor) { if (self->tex_width == width && self->tex_height == height && self->downscale_factor == downscale_factor && self->actor_fb.framebuffer) { return TRUE; } self->cache_flags &= ~ACTOR_PAINTED; return update_fbo (&self->actor_fb, width, height, downscale_factor); } static gboolean update_brightness_fbo (ShellBlurEffect *self, unsigned int width, unsigned int height, float downscale_factor) { if (self->tex_width == width && self->tex_height == height && self->downscale_factor == downscale_factor && self->brightness_fb.framebuffer) { return TRUE; } return update_fbo (&self->brightness_fb, width, height, downscale_factor); } static gboolean update_background_fbo (ShellBlurEffect *self, unsigned int width, unsigned int height) { if (self->tex_width == width && self->tex_height == height && self->background_fb.framebuffer) { return TRUE; } return update_fbo (&self->background_fb, width, height, 1.0); } static void clear_framebuffer_data (FramebufferData *fb_data) { g_clear_object (&fb_data->texture); g_clear_object (&fb_data->framebuffer); } static float calculate_downscale_factor (float width, float height, float radius) { float downscale_factor = 1.0; float scaled_width = width; float scaled_height = height; float scaled_radius = radius; /* This is the algorithm used by Firefox; keep downscaling until either the * blur radius is lower than the threshold, or the downscaled texture is too * small. */ while (scaled_radius > MAX_RADIUS && scaled_width > MIN_DOWNSCALE_SIZE && scaled_height > MIN_DOWNSCALE_SIZE) { downscale_factor *= 2.f; scaled_width = width / downscale_factor; scaled_height = height / downscale_factor; scaled_radius = radius / downscale_factor; } return downscale_factor; } static void shell_blur_effect_set_actor (ClutterActorMeta *meta, ClutterActor *actor) { ShellBlurEffect *self = SHELL_BLUR_EFFECT (meta); ClutterActorMetaClass *meta_class; meta_class = CLUTTER_ACTOR_META_CLASS (shell_blur_effect_parent_class); meta_class->set_actor (meta, actor); /* clear out the previous state */ clear_framebuffer_data (&self->actor_fb); clear_framebuffer_data (&self->background_fb); clear_framebuffer_data (&self->brightness_fb); /* we keep a back pointer here, to avoid going through the ActorMeta */ self->actor = clutter_actor_meta_get_actor (meta); } static void update_actor_box (ShellBlurEffect *self, ClutterPaintContext *paint_context, ClutterActorBox *source_actor_box) { ClutterStageView *stage_view; float box_scale_factor = 1.0f; float origin_x, origin_y; float width, height; switch (self->mode) { case SHELL_BLUR_MODE_ACTOR: clutter_actor_get_allocation_box (self->actor, source_actor_box); break; case SHELL_BLUR_MODE_BACKGROUND: stage_view = clutter_paint_context_get_stage_view (paint_context); clutter_actor_get_transformed_position (self->actor, &origin_x, &origin_y); clutter_actor_get_transformed_size (self->actor, &width, &height); if (stage_view) { MtkRectangle stage_view_layout; box_scale_factor = clutter_stage_view_get_scale (stage_view); clutter_stage_view_get_layout (stage_view, &stage_view_layout); origin_x -= stage_view_layout.x; origin_y -= stage_view_layout.y; } else { /* If we're drawing off stage, just assume scale = 1, this won't work * with stage-view scaling though. */ } clutter_actor_box_set_origin (source_actor_box, origin_x, origin_y); clutter_actor_box_set_size (source_actor_box, width, height); clutter_actor_box_scale (source_actor_box, box_scale_factor); break; } clutter_actor_box_clamp_to_pixel (source_actor_box); } static void add_blurred_pipeline (ShellBlurEffect *self, ClutterPaintNode *node, uint8_t paint_opacity) { g_autoptr (ClutterPaintNode) pipeline_node = NULL; float width, height; /* Use the untransformed actor size here, since the framebuffer itself already * has the actor transform matrix applied. */ clutter_actor_get_size (self->actor, &width, &height); update_brightness (self, paint_opacity); pipeline_node = clutter_pipeline_node_new (self->brightness_fb.pipeline); clutter_paint_node_set_static_name (pipeline_node, "ShellBlurEffect (final)"); clutter_paint_node_add_child (node, pipeline_node); clutter_paint_node_add_rectangle (pipeline_node, &(ClutterActorBox) { 0.f, 0.f, width, height, }); } static ClutterPaintNode * create_blur_nodes (ShellBlurEffect *self, ClutterPaintNode *node, uint8_t paint_opacity) { g_autoptr (ClutterPaintNode) brightness_node = NULL; g_autoptr (ClutterPaintNode) blur_node = NULL; float width; float height; clutter_actor_get_size (self->actor, &width, &height); update_brightness (self, paint_opacity); brightness_node = clutter_layer_node_new_to_framebuffer (self->brightness_fb.framebuffer, self->brightness_fb.pipeline); clutter_paint_node_set_static_name (brightness_node, "ShellBlurEffect (brightness)"); clutter_paint_node_add_child (node, brightness_node); clutter_paint_node_add_rectangle (brightness_node, &(ClutterActorBox) { 0.f, 0.f, width, height, }); blur_node = clutter_blur_node_new (self->tex_width / self->downscale_factor, self->tex_height / self->downscale_factor, self->radius / self->downscale_factor); clutter_paint_node_set_static_name (blur_node, "ShellBlurEffect (blur)"); clutter_paint_node_add_child (brightness_node, blur_node); clutter_paint_node_add_rectangle (blur_node, &(ClutterActorBox) { 0.f, 0.f, cogl_texture_get_width (self->brightness_fb.texture), cogl_texture_get_height (self->brightness_fb.texture), }); self->cache_flags |= BLUR_APPLIED; return g_steal_pointer (&blur_node); } static void paint_background (ShellBlurEffect *self, ClutterPaintNode *node, ClutterPaintContext *paint_context, ClutterActorBox *source_actor_box) { g_autoptr (ClutterPaintNode) background_node = NULL; g_autoptr (ClutterPaintNode) blit_node = NULL; CoglFramebuffer *src; float transformed_x; float transformed_y; float transformed_width; float transformed_height; clutter_actor_box_get_origin (source_actor_box, &transformed_x, &transformed_y); clutter_actor_box_get_size (source_actor_box, &transformed_width, &transformed_height); /* Background layer node */ background_node = clutter_layer_node_new_to_framebuffer (self->background_fb.framebuffer, self->background_fb.pipeline); clutter_paint_node_set_static_name (background_node, "ShellBlurEffect (background)"); clutter_paint_node_add_child (node, background_node); clutter_paint_node_add_rectangle (background_node, &(ClutterActorBox) { 0.f, 0.f, self->tex_width / self->downscale_factor, self->tex_height / self->downscale_factor, }); /* Blit node */ src = clutter_paint_context_get_framebuffer (paint_context); blit_node = clutter_blit_node_new (src); clutter_paint_node_set_static_name (blit_node, "ShellBlurEffect (blit)"); clutter_paint_node_add_child (background_node, blit_node); clutter_blit_node_add_blit_rectangle (CLUTTER_BLIT_NODE (blit_node), transformed_x, transformed_y, 0, 0, transformed_width, transformed_height); } static gboolean update_framebuffers (ShellBlurEffect *self, ClutterPaintContext *paint_context, ClutterActorBox *source_actor_box) { gboolean updated = FALSE; float downscale_factor; float height = -1; float width = -1; clutter_actor_box_get_size (source_actor_box, &width, &height); downscale_factor = calculate_downscale_factor (width, height, self->radius); updated = update_actor_fbo (self, width, height, downscale_factor) && update_brightness_fbo (self, width, height, downscale_factor); if (self->mode == SHELL_BLUR_MODE_BACKGROUND) updated = updated && update_background_fbo (self, width, height); self->tex_width = width; self->tex_height = height; self->downscale_factor = downscale_factor; return updated; } static void add_actor_node (ShellBlurEffect *self, ClutterPaintNode *node, int opacity) { g_autoptr (ClutterPaintNode) actor_node = NULL; actor_node = clutter_actor_node_new (self->actor, opacity); clutter_paint_node_add_child (node, actor_node); } static void paint_actor_offscreen (ShellBlurEffect *self, ClutterPaintNode *node, ClutterEffectPaintFlags flags) { gboolean actor_dirty; actor_dirty = (flags & CLUTTER_EFFECT_PAINT_ACTOR_DIRTY) != 0; /* The actor offscreen framebuffer is updated already */ if (actor_dirty || !(self->cache_flags & ACTOR_PAINTED)) { g_autoptr (ClutterPaintNode) transform_node = NULL; g_autoptr (ClutterPaintNode) layer_node = NULL; graphene_matrix_t transform; /* Layer node */ layer_node = clutter_layer_node_new_to_framebuffer (self->actor_fb.framebuffer, self->actor_fb.pipeline); clutter_paint_node_set_static_name (layer_node, "ShellBlurEffect (actor offscreen)"); clutter_paint_node_add_child (node, layer_node); clutter_paint_node_add_rectangle (layer_node, &(ClutterActorBox) { 0.f, 0.f, self->tex_width / self->downscale_factor, self->tex_height / self->downscale_factor, }); /* Transform node */ graphene_matrix_init_scale (&transform, 1.f / self->downscale_factor, 1.f / self->downscale_factor, 1.f); transform_node = clutter_transform_node_new (&transform); clutter_paint_node_set_static_name (transform_node, "ShellBlurEffect (downscale)"); clutter_paint_node_add_child (layer_node, transform_node); /* Actor node */ add_actor_node (self, transform_node, 255); self->cache_flags |= ACTOR_PAINTED; } else { g_autoptr (ClutterPaintNode) pipeline_node = NULL; pipeline_node = clutter_pipeline_node_new (self->actor_fb.pipeline); clutter_paint_node_set_static_name (pipeline_node, "ShellBlurEffect (actor texture)"); clutter_paint_node_add_child (node, pipeline_node); clutter_paint_node_add_rectangle (pipeline_node, &(ClutterActorBox) { 0.f, 0.f, self->tex_width / self->downscale_factor, self->tex_height / self->downscale_factor, }); } } static gboolean needs_repaint (ShellBlurEffect *self, ClutterEffectPaintFlags flags) { gboolean actor_cached; gboolean blur_cached; gboolean actor_dirty; actor_dirty = (flags & CLUTTER_EFFECT_PAINT_ACTOR_DIRTY) != 0; blur_cached = (self->cache_flags & BLUR_APPLIED) != 0; actor_cached = (self->cache_flags & ACTOR_PAINTED) != 0; switch (self->mode) { case SHELL_BLUR_MODE_ACTOR: return actor_dirty || !blur_cached || !actor_cached; case SHELL_BLUR_MODE_BACKGROUND: return TRUE; } return TRUE; } static void shell_blur_effect_paint_node (ClutterEffect *effect, ClutterPaintNode *node, ClutterPaintContext *paint_context, ClutterEffectPaintFlags flags) { ShellBlurEffect *self = SHELL_BLUR_EFFECT (effect); uint8_t paint_opacity; g_assert (self->actor != NULL); if (self->radius > 0) { g_autoptr (ClutterPaintNode) blur_node = NULL; switch (self->mode) { case SHELL_BLUR_MODE_ACTOR: paint_opacity = clutter_actor_get_paint_opacity (self->actor); break; case SHELL_BLUR_MODE_BACKGROUND: paint_opacity = 255; break; default: g_assert_not_reached(); break; } if (needs_repaint (self, flags)) { ClutterActorBox source_actor_box; update_actor_box (self, paint_context, &source_actor_box); /* Failing to create or update the offscreen framebuffers prevents * the entire effect to be applied. */ if (!update_framebuffers (self, paint_context, &source_actor_box)) goto fail; blur_node = create_blur_nodes (self, node, paint_opacity); switch (self->mode) { case SHELL_BLUR_MODE_ACTOR: paint_actor_offscreen (self, blur_node, flags); break; case SHELL_BLUR_MODE_BACKGROUND: paint_background (self, blur_node, paint_context, &source_actor_box); break; } } else { /* Use the cached pipeline if no repaint is needed */ add_blurred_pipeline (self, node, paint_opacity); } /* Background blur needs to paint the actor after painting the blurred * background. */ switch (self->mode) { case SHELL_BLUR_MODE_ACTOR: break; case SHELL_BLUR_MODE_BACKGROUND: add_actor_node (self, node, -1); break; } return; } fail: /* When no blur is applied, or the offscreen framebuffers * couldn't be created, fallback to simply painting the actor. */ add_actor_node (self, node, -1); } static void shell_blur_effect_finalize (GObject *object) { ShellBlurEffect *self = (ShellBlurEffect *)object; clear_framebuffer_data (&self->actor_fb); clear_framebuffer_data (&self->background_fb); clear_framebuffer_data (&self->brightness_fb); g_clear_object (&self->actor_fb.pipeline); g_clear_object (&self->background_fb.pipeline); g_clear_object (&self->brightness_fb.pipeline); G_OBJECT_CLASS (shell_blur_effect_parent_class)->finalize (object); } static void shell_blur_effect_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { ShellBlurEffect *self = SHELL_BLUR_EFFECT (object); switch (prop_id) { case PROP_RADIUS: g_value_set_int (value, self->radius); break; case PROP_BRIGHTNESS: g_value_set_float (value, self->brightness); break; case PROP_MODE: g_value_set_enum (value, self->mode); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void shell_blur_effect_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { ShellBlurEffect *self = SHELL_BLUR_EFFECT (object); switch (prop_id) { case PROP_RADIUS: shell_blur_effect_set_radius (self, g_value_get_int (value)); break; case PROP_BRIGHTNESS: shell_blur_effect_set_brightness (self, g_value_get_float (value)); break; case PROP_MODE: shell_blur_effect_set_mode (self, g_value_get_enum (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void shell_blur_effect_class_init (ShellBlurEffectClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); ClutterActorMetaClass *meta_class = CLUTTER_ACTOR_META_CLASS (klass); ClutterEffectClass *effect_class = CLUTTER_EFFECT_CLASS (klass); object_class->finalize = shell_blur_effect_finalize; object_class->get_property = shell_blur_effect_get_property; object_class->set_property = shell_blur_effect_set_property; meta_class->set_actor = shell_blur_effect_set_actor; effect_class->paint_node = shell_blur_effect_paint_node; properties[PROP_RADIUS] = g_param_spec_int ("radius", NULL, NULL, 0, G_MAXINT, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); properties[PROP_BRIGHTNESS] = g_param_spec_float ("brightness", NULL, NULL, 0.f, 1.f, 1.f, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); properties[PROP_MODE] = g_param_spec_enum ("mode", NULL, NULL, SHELL_TYPE_BLUR_MODE, SHELL_BLUR_MODE_ACTOR, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, N_PROPS, properties); } static void shell_blur_effect_init (ShellBlurEffect *self) { self->mode = SHELL_BLUR_MODE_ACTOR; self->radius = 0; self->brightness = 1.f; self->actor_fb.pipeline = create_base_pipeline (); self->background_fb.pipeline = create_base_pipeline (); self->brightness_fb.pipeline = create_brightness_pipeline (); self->brightness_uniform = cogl_pipeline_get_uniform_location (self->brightness_fb.pipeline, "brightness"); } ShellBlurEffect * shell_blur_effect_new (void) { return g_object_new (SHELL_TYPE_BLUR_EFFECT, NULL); } int shell_blur_effect_get_radius (ShellBlurEffect *self) { g_return_val_if_fail (SHELL_IS_BLUR_EFFECT (self), -1); return self->radius; } void shell_blur_effect_set_radius (ShellBlurEffect *self, int radius) { g_return_if_fail (SHELL_IS_BLUR_EFFECT (self)); if (self->radius == radius) return; self->radius = radius; self->cache_flags &= ~BLUR_APPLIED; if (self->actor) clutter_effect_queue_repaint (CLUTTER_EFFECT (self)); g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_RADIUS]); } float shell_blur_effect_get_brightness (ShellBlurEffect *self) { g_return_val_if_fail (SHELL_IS_BLUR_EFFECT (self), FALSE); return self->brightness; } void shell_blur_effect_set_brightness (ShellBlurEffect *self, float brightness) { g_return_if_fail (SHELL_IS_BLUR_EFFECT (self)); if (self->brightness == brightness) return; self->brightness = brightness; self->cache_flags &= ~BLUR_APPLIED; if (self->actor) clutter_effect_queue_repaint (CLUTTER_EFFECT (self)); g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_BRIGHTNESS]); } ShellBlurMode shell_blur_effect_get_mode (ShellBlurEffect *self) { g_return_val_if_fail (SHELL_IS_BLUR_EFFECT (self), -1); return self->mode; } void shell_blur_effect_set_mode (ShellBlurEffect *self, ShellBlurMode mode) { g_return_if_fail (SHELL_IS_BLUR_EFFECT (self)); if (self->mode == mode) return; self->mode = mode; self->cache_flags &= ~BLUR_APPLIED; switch (mode) { case SHELL_BLUR_MODE_ACTOR: clear_framebuffer_data (&self->background_fb); break; case SHELL_BLUR_MODE_BACKGROUND: default: /* Do nothing */ break; } if (self->actor) clutter_effect_queue_repaint (CLUTTER_EFFECT (self)); g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_MODE]); } 0707010000029B000081A40000000000000000000000016712993F00000782000000000000000000000000000000000000002900000000gnome-shell-47.1/src/shell-blur-effect.h/* shell-blur-effect.h * * Copyright 2019 Georges Basile Stavracas Neto * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include G_BEGIN_DECLS /** * ShellBlurMode: * @SHELL_BLUR_MODE_ACTOR: blur the actor contents, and its children * @SHELL_BLUR_MODE_BACKGROUND: blur what's beneath the actor * * The mode of blurring of the effect. */ typedef enum { SHELL_BLUR_MODE_ACTOR, SHELL_BLUR_MODE_BACKGROUND, } ShellBlurMode; #define SHELL_TYPE_BLUR_EFFECT (shell_blur_effect_get_type()) G_DECLARE_FINAL_TYPE (ShellBlurEffect, shell_blur_effect, SHELL, BLUR_EFFECT, ClutterEffect) ShellBlurEffect *shell_blur_effect_new (void); int shell_blur_effect_get_radius (ShellBlurEffect *self); void shell_blur_effect_set_radius (ShellBlurEffect *self, int radius); float shell_blur_effect_get_brightness (ShellBlurEffect *self); void shell_blur_effect_set_brightness (ShellBlurEffect *self, float brightness); ShellBlurMode shell_blur_effect_get_mode (ShellBlurEffect *self); void shell_blur_effect_set_mode (ShellBlurEffect *self, ShellBlurMode mode); G_END_DECLS 0707010000029C000081A40000000000000000000000016712993F00002FCE000000000000000000000000000000000000002C00000000gnome-shell-47.1/src/shell-camera-monitor.c/* * Shell camera monitor * * Copyright (C) 2023 Collabora Ltd. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. */ #include "config.h" #include "shell-camera-monitor.h" #ifdef HAVE_PIPEWIRE #include #include #endif #define RECONNECT_DELAY_MS 5000 #define DISABLE_DELAY_MS 500 enum { PROP_0, PROP_CAMERAS_IN_USE, PROP_LAST }; static GParamSpec *obj_props[PROP_LAST]; struct _ShellCameraMonitor { GObject parent; gboolean cameras_in_use; #ifdef HAVE_PIPEWIRE GPtrArray *node_list; guint reconnect_id; guint delayed_disable_id; GSource *pipewire_source; struct pw_context *context; struct pw_core *core; struct pw_registry *registry; struct spa_hook core_listener; struct spa_hook registry_listener; #endif }; G_DEFINE_TYPE (ShellCameraMonitor, shell_camera_monitor, G_TYPE_OBJECT); #ifdef HAVE_PIPEWIRE typedef struct _Node { ShellCameraMonitor *monitor; gboolean running; struct spa_hook proxy_listener; struct spa_hook object_listener; } Node; typedef struct _MetaPipeWireSource { GSource source; struct pw_loop *pipewire_loop; } MetaPipeWireSource; static gboolean shell_camera_monitor_connect_core (ShellCameraMonitor *monitor); static void shell_camera_monitor_disconnect_core (ShellCameraMonitor *monitor); static void delayed_disable_state (gpointer data) { ShellCameraMonitor *monitor = SHELL_CAMERA_MONITOR (data); monitor->cameras_in_use = FALSE; g_object_notify_by_pspec (G_OBJECT (monitor), obj_props[PROP_CAMERAS_IN_USE]); } static void shell_camera_monitor_update_state (ShellCameraMonitor *monitor) { gboolean new_cameras_in_use = FALSE; int i; for (i = 0; i < monitor->node_list->len; i++) { struct pw_proxy *proxy; Node *node; proxy = g_ptr_array_index (monitor->node_list, i); node = pw_proxy_get_user_data (proxy); if (node->running) { new_cameras_in_use = TRUE; break; } } if (new_cameras_in_use) g_clear_handle_id (&monitor->delayed_disable_id, g_source_remove); if (new_cameras_in_use && !monitor->cameras_in_use) { monitor->cameras_in_use = new_cameras_in_use; g_object_notify_by_pspec (G_OBJECT (monitor), obj_props[PROP_CAMERAS_IN_USE]); } else if (!new_cameras_in_use && monitor->cameras_in_use && monitor->delayed_disable_id == 0) { monitor->delayed_disable_id = g_timeout_add_once (DISABLE_DELAY_MS, delayed_disable_state, monitor); } } static void proxy_destroy (void *data) { Node *node = data; spa_hook_remove (&node->proxy_listener); spa_hook_remove (&node->object_listener); } static const struct pw_proxy_events proxy_events = { PW_VERSION_PROXY_EVENTS, .destroy = proxy_destroy, }; static void node_event_info (void *data, const struct pw_node_info *info) { Node *node = data; node->running = (info->state == PW_NODE_STATE_RUNNING); shell_camera_monitor_update_state (node->monitor); } static const struct pw_node_events node_events = { PW_VERSION_NODE_EVENTS, .info = node_event_info, }; static void registry_event_global (void *data, uint32_t id, uint32_t permissions, const char *type, uint32_t version, const struct spa_dict *props) { ShellCameraMonitor *monitor = SHELL_CAMERA_MONITOR (data); struct pw_proxy *proxy; const char *prop_str; Node *node; if (!props || !(spa_streq (type, PW_TYPE_INTERFACE_Node))) return; prop_str = spa_dict_lookup (props, PW_KEY_MEDIA_ROLE); if (!prop_str || (strcmp (prop_str, "Camera") != 0)) return; proxy = pw_registry_bind (monitor->registry, id, PW_TYPE_INTERFACE_Node, PW_VERSION_NODE, sizeof (Node)); node = pw_proxy_get_user_data (proxy); node->monitor = monitor; pw_proxy_add_listener (proxy, &node->proxy_listener, &proxy_events, node); pw_proxy_add_object_listener (proxy, &node->object_listener, &node_events, node); g_ptr_array_add (monitor->node_list, proxy); } static void registry_event_global_remove (void *data, uint32_t id) { ShellCameraMonitor *monitor = SHELL_CAMERA_MONITOR (data); struct pw_proxy *proxy_to_remove = NULL; int i; for (i = 0; i < monitor->node_list->len; i++) { struct pw_proxy *proxy; proxy = g_ptr_array_index (monitor->node_list, i); if (pw_proxy_get_bound_id (proxy) == id) { proxy_to_remove = proxy; break; } } if (proxy_to_remove) g_ptr_array_remove (monitor->node_list, proxy_to_remove); } static const struct pw_registry_events registry_events = { PW_VERSION_REGISTRY_EVENTS, .global = registry_event_global, .global_remove = registry_event_global_remove, }; static void idle_reconnect (gpointer data) { ShellCameraMonitor *monitor = SHELL_CAMERA_MONITOR (data); if (shell_camera_monitor_connect_core (monitor)) monitor->reconnect_id = 0; else monitor->reconnect_id = g_timeout_add_once (RECONNECT_DELAY_MS, idle_reconnect, monitor); } static void on_core_error (void *data, uint32_t id, int seq, int res, const char *message) { if (id == 0 && res == -EPIPE) { ShellCameraMonitor *monitor = SHELL_CAMERA_MONITOR (data); shell_camera_monitor_disconnect_core (monitor); if (monitor->cameras_in_use) { monitor->cameras_in_use = FALSE; g_object_notify_by_pspec (G_OBJECT (monitor), obj_props[PROP_CAMERAS_IN_USE]); } if (monitor->reconnect_id == 0) monitor->reconnect_id = g_timeout_add_once (RECONNECT_DELAY_MS, idle_reconnect, monitor); } } static const struct pw_core_events core_events = { PW_VERSION_CORE_EVENTS, .error = on_core_error, }; static gboolean shell_camera_monitor_connect_core (ShellCameraMonitor *monitor) { monitor->core = pw_context_connect (monitor->context, NULL, 0); if (!monitor->core) return FALSE; pw_core_add_listener (monitor->core, &monitor->core_listener, &core_events, monitor); monitor->registry = pw_core_get_registry (monitor->core, PW_VERSION_REGISTRY, 0); pw_registry_add_listener (monitor->registry, &monitor->registry_listener, ®istry_events, monitor); return TRUE; } static void shell_camera_monitor_disconnect_core (ShellCameraMonitor *monitor) { g_ptr_array_set_size (monitor->node_list, 0); g_clear_handle_id (&monitor->delayed_disable_id, g_source_remove); spa_hook_remove (&monitor->registry_listener); if (monitor->registry != NULL) { pw_proxy_destroy ((struct pw_proxy *) monitor->registry); monitor->registry = NULL; } spa_hook_remove (&monitor->core_listener); g_clear_pointer (&monitor->core, pw_core_disconnect); } static gboolean pipewire_loop_source_prepare (GSource *source, int *timeout) { *timeout = -1; return FALSE; } static gboolean pipewire_loop_source_dispatch (GSource *source, GSourceFunc callback, gpointer user_data) { MetaPipeWireSource *pipewire_source = (MetaPipeWireSource *) source; int result; result = pw_loop_iterate (pipewire_source->pipewire_loop, 0); if (result < 0) g_warning ("pipewire_loop_iterate failed: %s", spa_strerror (result)); return TRUE; } static void pipewire_loop_source_finalize (GSource *source) { MetaPipeWireSource *pipewire_source = (MetaPipeWireSource *) source; pw_loop_leave (pipewire_source->pipewire_loop); pw_loop_destroy (pipewire_source->pipewire_loop); } static GSourceFuncs pipewire_source_funcs = { pipewire_loop_source_prepare, NULL, pipewire_loop_source_dispatch, pipewire_loop_source_finalize }; static GSource * create_pipewire_source (struct pw_loop *pipewire_loop) { GSource *source; MetaPipeWireSource *pipewire_source; source = g_source_new (&pipewire_source_funcs, sizeof (MetaPipeWireSource)); g_source_set_name (source, "[gnome-shell] PipeWire"); pipewire_source = (MetaPipeWireSource *) source; pipewire_source->pipewire_loop = pipewire_loop; g_source_add_unix_fd (source, pw_loop_get_fd (pipewire_source->pipewire_loop), G_IO_IN | G_IO_ERR); pw_loop_enter (pipewire_source->pipewire_loop); g_source_attach (source, NULL); g_source_unref (source); return source; } #endif static void shell_camera_monitor_finalize (GObject *object) { #ifdef HAVE_PIPEWIRE ShellCameraMonitor *monitor = SHELL_CAMERA_MONITOR (object); shell_camera_monitor_disconnect_core (monitor); g_clear_pointer (&monitor->node_list, g_ptr_array_unref); g_clear_pointer (&monitor->context, pw_context_destroy); g_clear_pointer (&monitor->pipewire_source, g_source_destroy); g_clear_handle_id (&monitor->reconnect_id, g_source_remove); pw_deinit (); #endif G_OBJECT_CLASS (shell_camera_monitor_parent_class)->finalize (object); } static void shell_camera_monitor_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { ShellCameraMonitor *monitor = SHELL_CAMERA_MONITOR (object); switch (prop_id) { case PROP_CAMERAS_IN_USE: g_value_set_boolean (value, monitor->cameras_in_use); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } } static void shell_camera_monitor_class_init (ShellCameraMonitorClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->finalize = shell_camera_monitor_finalize; object_class->get_property = shell_camera_monitor_get_property; obj_props[PROP_CAMERAS_IN_USE] = g_param_spec_boolean ("cameras-in-use", NULL, NULL, FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_properties (object_class, PROP_LAST, obj_props); } static void shell_camera_monitor_init (ShellCameraMonitor *monitor) { #ifdef HAVE_PIPEWIRE struct pw_loop *pipewire_loop; monitor->node_list = g_ptr_array_new_full (5, (GDestroyNotify) pw_proxy_destroy); pw_init (NULL, NULL); pipewire_loop = pw_loop_new (NULL); if (!pipewire_loop) goto error; monitor->pipewire_source = create_pipewire_source (pipewire_loop); if (!monitor->pipewire_source) goto error; monitor->context = pw_context_new (pipewire_loop, NULL, 0); if (!monitor->context) goto error; if (!shell_camera_monitor_connect_core (monitor)) goto error; return; error: g_message ("Failed to start camera monitor"); #endif } 0707010000029D000081A40000000000000000000000016712993F00000417000000000000000000000000000000000000002C00000000gnome-shell-47.1/src/shell-camera-monitor.h/* * Shell camera monitor * * Copyright (C) 2023 Collabora Ltd. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. */ #pragma once #include G_BEGIN_DECLS #define SHELL_TYPE_CAMERA_MONITOR (shell_camera_monitor_get_type ()) G_DECLARE_FINAL_TYPE (ShellCameraMonitor, shell_camera_monitor, SHELL, CAMERA_MONITOR, GObject) G_END_DECLS 0707010000029E000081A40000000000000000000000016712993F000002CF000000000000000000000000000000000000002C00000000gnome-shell-47.1/src/shell-global-private.h/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ #pragma once #include "shell-global.h" #include #include "shell-app-cache-private.h" void _shell_global_init (const char *first_property_name, ...); void _shell_global_set_plugin (ShellGlobal *global, MetaPlugin *plugin); void _shell_global_destroy_gjs_context (ShellGlobal *global); GjsContext *_shell_global_get_gjs_context (ShellGlobal *global); ShellAppCache * shell_global_get_app_cache (ShellGlobal *global); void _shell_global_locate_pointer (ShellGlobal *global); void _shell_global_notify_shutdown (ShellGlobal *global); 0707010000029F000081A40000000000000000000000016712993F0000D855000000000000000000000000000000000000002400000000gnome-shell-47.1/src/shell-global.c/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ #include "config.h" #include #include #include #include #include #include #include #include #ifdef HAVE_SYS_RESOURCE_H #include #endif #include #include #include #include #include #include #include #include #include #include #include #include #ifdef HAVE_X11 #include #endif #define GNOME_DESKTOP_USE_UNSTABLE_API #include #if defined __OpenBSD__ || defined __FreeBSD__ #include #endif #include "shell-enum-types.h" #include "shell-global-private.h" #include "shell-perf-log.h" #include "shell-window-tracker.h" #include "shell-app-usage.h" #include "shell-app-cache-private.h" #include "shell-wm.h" #include "shell-util.h" #include "st.h" #include "switcheroo-control.h" static ShellGlobal *the_object = NULL; struct _ShellGlobal { GObject parent; ClutterStage *stage; MetaBackend *backend; MetaContext *meta_context; MetaDisplay *meta_display; MetaCompositor *compositor; MetaWorkspaceManager *workspace_manager; char *session_mode; GjsContext *js_context; MetaPlugin *plugin; ShellWM *wm; GSettings *settings; const char *datadir; char *imagedir; char *userdatadir; GFile *userdatadir_path; GFile *runtime_state_path; GFile *automation_script; ShellWindowTracker *window_tracker; ShellAppSystem *app_system; ShellAppCache *app_cache; ShellAppUsage *app_usage; StFocusManager *focus_manager; guint work_count; GSList *leisure_closures; guint leisure_function_id; GHashTable *save_ops; gboolean frame_timestamps; gboolean frame_finish_timestamp; GDBusProxy *switcheroo_control; GCancellable *switcheroo_cancellable; gboolean force_animations; }; enum { PROP_0, PROP_SESSION_MODE, PROP_BACKEND, PROP_CONTEXT, PROP_DISPLAY, PROP_COMPOSITOR, PROP_WORKSPACE_MANAGER, PROP_SCREEN_WIDTH, PROP_SCREEN_HEIGHT, PROP_STAGE, PROP_WINDOW_GROUP, PROP_TOP_WINDOW_GROUP, PROP_WINDOW_MANAGER, PROP_SETTINGS, PROP_DATADIR, PROP_IMAGEDIR, PROP_USERDATADIR, PROP_FOCUS_MANAGER, PROP_FRAME_TIMESTAMPS, PROP_FRAME_FINISH_TIMESTAMP, PROP_SWITCHEROO_CONTROL, PROP_FORCE_ANIMATIONS, PROP_AUTOMATION_SCRIPT, N_PROPS }; static GParamSpec *props[N_PROPS] = { NULL, }; /* Signals */ enum { NOTIFY_ERROR, LOCATE_POINTER, SHUTDOWN, LAST_SIGNAL }; G_DEFINE_TYPE(ShellGlobal, shell_global, G_TYPE_OBJECT); static guint shell_global_signals [LAST_SIGNAL] = { 0 }; static void got_switcheroo_control_gpus_property_cb (GObject *source_object, GAsyncResult *res, gpointer user_data) { ShellGlobal *global; GError *error = NULL; GVariant *gpus; gpus = g_dbus_connection_call_finish (G_DBUS_CONNECTION (source_object), res, &error); if (!gpus) { if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) g_debug ("Could not get GPUs property from switcheroo-control: %s", error->message); g_clear_error (&error); return; } global = user_data; g_dbus_proxy_set_cached_property (global->switcheroo_control, "GPUs", gpus); g_object_notify_by_pspec (G_OBJECT (global), props[PROP_SWITCHEROO_CONTROL]); } static void switcheroo_control_ready_cb (GObject *source_object, GAsyncResult *res, gpointer user_data) { ShellGlobal *global; GError *error = NULL; ShellNetHadessSwitcherooControl *control; g_auto(GStrv) cached_props = NULL; control = shell_net_hadess_switcheroo_control_proxy_new_for_bus_finish (res, &error); if (!control) { if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) g_debug ("Could not get switcheroo-control GDBusProxy: %s", error->message); g_clear_error (&error); return; } global = user_data; global->switcheroo_control = G_DBUS_PROXY (control); g_debug ("Got switcheroo-control proxy successfully"); cached_props = g_dbus_proxy_get_cached_property_names (global->switcheroo_control); if (cached_props != NULL && g_strv_contains ((const gchar * const *) cached_props, "GPUs")) { g_object_notify_by_pspec (G_OBJECT (global), props[PROP_SWITCHEROO_CONTROL]); return; } /* Delay property notification until we have all the properties gathered */ g_dbus_connection_call (g_dbus_proxy_get_connection (global->switcheroo_control), g_dbus_proxy_get_name (global->switcheroo_control), g_dbus_proxy_get_object_path (global->switcheroo_control), "org.freedesktop.DBus.Properties", "Get", g_variant_new ("(ss)", g_dbus_proxy_get_interface_name (global->switcheroo_control), "GPUs"), NULL, G_DBUS_CALL_FLAGS_NONE, -1, global->switcheroo_cancellable, got_switcheroo_control_gpus_property_cb, user_data); } static void shell_global_set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { ShellGlobal *global = SHELL_GLOBAL (object); switch (prop_id) { case PROP_SESSION_MODE: g_clear_pointer (&global->session_mode, g_free); global->session_mode = g_ascii_strdown (g_value_get_string (value), -1); break; case PROP_FRAME_TIMESTAMPS: { gboolean enable = g_value_get_boolean (value); if (global->frame_timestamps != enable) { global->frame_timestamps = enable; g_object_notify_by_pspec (object, props[PROP_FRAME_TIMESTAMPS]); } } break; case PROP_FRAME_FINISH_TIMESTAMP: { gboolean enable = g_value_get_boolean (value); if (global->frame_finish_timestamp != enable) { global->frame_finish_timestamp = enable; g_object_notify_by_pspec (object, props[PROP_FRAME_FINISH_TIMESTAMP]); } } break; case PROP_FORCE_ANIMATIONS: global->force_animations = g_value_get_boolean (value); break; case PROP_AUTOMATION_SCRIPT: g_set_object (&global->automation_script, g_value_get_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } } static void shell_global_get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { ShellGlobal *global = SHELL_GLOBAL (object); switch (prop_id) { case PROP_SESSION_MODE: g_value_set_string (value, shell_global_get_session_mode (global)); break; case PROP_BACKEND: g_value_set_object (value, global->backend); break; case PROP_CONTEXT: g_value_set_object (value, global->meta_context); break; case PROP_DISPLAY: g_value_set_object (value, global->meta_display); break; case PROP_COMPOSITOR: g_value_set_object (value, global->compositor); break; case PROP_WORKSPACE_MANAGER: g_value_set_object (value, global->workspace_manager); break; case PROP_SCREEN_WIDTH: { int width, height; meta_display_get_size (global->meta_display, &width, &height); g_value_set_int (value, width); } break; case PROP_SCREEN_HEIGHT: { int width, height; meta_display_get_size (global->meta_display, &width, &height); g_value_set_int (value, height); } break; case PROP_STAGE: g_value_set_object (value, global->stage); break; case PROP_WINDOW_GROUP: g_value_set_object (value, meta_get_window_group_for_display (global->meta_display)); break; case PROP_TOP_WINDOW_GROUP: g_value_set_object (value, meta_get_top_window_group_for_display (global->meta_display)); break; case PROP_WINDOW_MANAGER: g_value_set_object (value, global->wm); break; case PROP_SETTINGS: g_value_set_object (value, global->settings); break; case PROP_DATADIR: g_value_set_string (value, global->datadir); break; case PROP_IMAGEDIR: g_value_set_string (value, global->imagedir); break; case PROP_USERDATADIR: g_value_set_string (value, global->userdatadir); break; case PROP_FOCUS_MANAGER: g_value_set_object (value, global->focus_manager); break; case PROP_FRAME_TIMESTAMPS: g_value_set_boolean (value, global->frame_timestamps); break; case PROP_FRAME_FINISH_TIMESTAMP: g_value_set_boolean (value, global->frame_finish_timestamp); break; case PROP_SWITCHEROO_CONTROL: g_value_set_object (value, global->switcheroo_control); break; case PROP_FORCE_ANIMATIONS: g_value_set_boolean (value, global->force_animations); break; case PROP_AUTOMATION_SCRIPT: g_value_set_object (value, global->automation_script); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } } static void switcheroo_appeared_cb (GDBusConnection *connection, const char *name, const char *name_owner, gpointer user_data) { ShellGlobal *global = user_data; g_debug ("switcheroo-control appeared"); shell_net_hadess_switcheroo_control_proxy_new_for_bus (G_BUS_TYPE_SYSTEM, G_DBUS_PROXY_FLAGS_NONE, "net.hadess.SwitcherooControl", "/net/hadess/SwitcherooControl", global->switcheroo_cancellable, switcheroo_control_ready_cb, global); } static void switcheroo_vanished_cb (GDBusConnection *connection, const char *name, gpointer user_data) { ShellGlobal *global = user_data; g_debug ("switcheroo-control vanished"); g_clear_object (&global->switcheroo_control); g_object_notify_by_pspec (G_OBJECT (global), props[PROP_SWITCHEROO_CONTROL]); } static void shell_global_init (ShellGlobal *global) { const char *datadir = g_getenv ("GNOME_SHELL_DATADIR"); const char *shell_js = g_getenv("GNOME_SHELL_JS"); char *imagedir, **search_path; char *path; const char *byteorder_string; if (!datadir) datadir = GNOME_SHELL_DATADIR; global->datadir = datadir; /* We make sure imagedir ends with a '/', since the JS won't have * access to g_build_filename() and so will end up just * concatenating global.imagedir to a filename. */ imagedir = g_build_filename (datadir, "images/", NULL); if (g_file_test (imagedir, G_FILE_TEST_IS_DIR)) global->imagedir = imagedir; else { g_free (imagedir); global->imagedir = g_strdup_printf ("%s/", datadir); } /* Ensure config dir exists for later use */ global->userdatadir = g_build_filename (g_get_user_data_dir (), "gnome-shell", NULL); g_mkdir_with_parents (global->userdatadir, 0700); global->userdatadir_path = g_file_new_for_path (global->userdatadir); #if G_BYTE_ORDER == G_LITTLE_ENDIAN byteorder_string = "LE"; #else byteorder_string = "BE"; #endif /* And the runtime state */ path = g_strdup_printf ("%s/gnome-shell/runtime-state-%s.%s", g_get_user_runtime_dir (), byteorder_string, g_getenv ("DISPLAY")); (void) g_mkdir_with_parents (path, 0700); global->runtime_state_path = g_file_new_for_path (path); g_free (path); global->settings = g_settings_new ("org.gnome.shell"); if (shell_js) { int i, j; search_path = g_strsplit (shell_js, ":", -1); /* The naive g_strsplit above will split 'resource:///foo/bar' into 'resource', * '///foo/bar'. Combine these back together by looking for a literal 'resource' * in the array. */ for (i = 0, j = 0; search_path[i];) { char *out; if (strcmp (search_path[i], "resource") == 0 && search_path[i + 1] != NULL) { out = g_strconcat (search_path[i], ":", search_path[i + 1], NULL); g_free (search_path[i]); g_free (search_path[i + 1]); i += 2; } else { out = search_path[i]; i += 1; } search_path[j++] = out; } search_path[j] = NULL; /* NULL-terminate the now possibly shorter array */ } else { search_path = g_malloc0 (2 * sizeof (char *)); search_path[0] = g_strdup ("resource:///org/gnome/shell"); } global->js_context = g_object_new (GJS_TYPE_CONTEXT, "search-path", search_path, NULL); g_strfreev (search_path); global->save_ops = g_hash_table_new_full (g_file_hash, (GEqualFunc) g_file_equal, g_object_unref, g_object_unref); global->switcheroo_cancellable = g_cancellable_new (); g_bus_watch_name (G_BUS_TYPE_SYSTEM, "net.hadess.SwitcherooControl", G_BUS_NAME_WATCHER_FLAGS_NONE, switcheroo_appeared_cb, switcheroo_vanished_cb, global, NULL); } static void shell_global_finalize (GObject *object) { ShellGlobal *global = SHELL_GLOBAL (object); g_clear_object (&global->js_context); g_object_unref (global->settings); g_clear_object (&global->window_tracker); g_clear_object (&global->app_system); g_clear_object (&global->app_cache); g_clear_object (&global->app_usage); the_object = NULL; g_cancellable_cancel (global->switcheroo_cancellable); g_clear_object (&global->switcheroo_cancellable); g_clear_object (&global->userdatadir_path); g_clear_object (&global->runtime_state_path); g_free (global->session_mode); g_free (global->imagedir); g_free (global->userdatadir); g_hash_table_unref (global->save_ops); G_OBJECT_CLASS(shell_global_parent_class)->finalize (object); } static void shell_global_class_init (ShellGlobalClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); gobject_class->get_property = shell_global_get_property; gobject_class->set_property = shell_global_set_property; gobject_class->finalize = shell_global_finalize; shell_global_signals[NOTIFY_ERROR] = g_signal_new ("notify-error", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_STRING); shell_global_signals[LOCATE_POINTER] = g_signal_new ("locate-pointer", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 0); shell_global_signals[SHUTDOWN] = g_signal_new ("shutdown", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 0); props[PROP_SESSION_MODE] = g_param_spec_string ("session-mode", NULL, NULL, "user", G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS); props[PROP_SCREEN_WIDTH] = g_param_spec_int ("screen-width", NULL, NULL, 0, G_MAXINT, 1, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); props[PROP_SCREEN_HEIGHT] = g_param_spec_int ("screen-height", NULL, NULL, 0, G_MAXINT, 1, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); props[PROP_BACKEND] = g_param_spec_object ("backend", NULL, NULL, META_TYPE_BACKEND, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); props[PROP_CONTEXT] = g_param_spec_object ("context", NULL, NULL, META_TYPE_CONTEXT, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); props[PROP_DISPLAY] = g_param_spec_object ("display", NULL, NULL, META_TYPE_DISPLAY, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); props[PROP_COMPOSITOR] = g_param_spec_object ("compositor", NULL, NULL, META_TYPE_COMPOSITOR, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); props[PROP_WORKSPACE_MANAGER] = g_param_spec_object ("workspace-manager", NULL, NULL, META_TYPE_WORKSPACE_MANAGER, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); props[PROP_STAGE] = g_param_spec_object ("stage", NULL, NULL, CLUTTER_TYPE_ACTOR, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); props[PROP_WINDOW_GROUP] = g_param_spec_object ("window-group", NULL, NULL, CLUTTER_TYPE_ACTOR, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); props[PROP_TOP_WINDOW_GROUP] = g_param_spec_object ("top-window-group", NULL, NULL, CLUTTER_TYPE_ACTOR, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); props[PROP_WINDOW_MANAGER] = g_param_spec_object ("window-manager", NULL, NULL, SHELL_TYPE_WM, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); props[PROP_SETTINGS] = g_param_spec_object ("settings", NULL, NULL, G_TYPE_SETTINGS, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); props[PROP_DATADIR] = g_param_spec_string ("datadir", NULL, NULL, NULL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); props[PROP_IMAGEDIR] = g_param_spec_string ("imagedir", NULL, NULL, NULL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); props[PROP_USERDATADIR] = g_param_spec_string ("userdatadir", NULL, NULL, NULL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); props[PROP_FOCUS_MANAGER] = g_param_spec_object ("focus-manager", NULL, NULL, ST_TYPE_FOCUS_MANAGER, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); props[PROP_FRAME_TIMESTAMPS] = g_param_spec_boolean ("frame-timestamps", NULL, NULL, FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_FRAME_FINISH_TIMESTAMP] = g_param_spec_boolean ("frame-finish-timestamp", NULL, NULL, FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); props[PROP_SWITCHEROO_CONTROL] = g_param_spec_object ("switcheroo-control", NULL, NULL, G_TYPE_DBUS_PROXY, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); props[PROP_FORCE_ANIMATIONS] = g_param_spec_boolean ("force-animations", NULL, NULL, FALSE, G_PARAM_READWRITE | G_PARAM_CONSTRUCT| G_PARAM_STATIC_STRINGS); props[PROP_AUTOMATION_SCRIPT] = g_param_spec_object ("automation-script", NULL, NULL, G_TYPE_FILE, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS); g_object_class_install_properties (gobject_class, N_PROPS, props); } /* * _shell_global_init: (skip) * @first_property_name: the name of the first property * @...: the value of the first property, followed optionally by more * name/value pairs, followed by %NULL * * Initializes the shell global singleton with the construction-time * properties. * * There are currently no such properties, so @first_property_name should * always be %NULL. * * This call must be called before shell_global_get() and shouldn't be called * more than once. */ void _shell_global_init (const char *first_property_name, ...) { va_list argument_list; g_return_if_fail (the_object == NULL); va_start (argument_list, first_property_name); the_object = SHELL_GLOBAL (g_object_new_valist (SHELL_TYPE_GLOBAL, first_property_name, argument_list)); va_end (argument_list); } /** * shell_global_get: * * Gets the singleton global object that represents the desktop. * * Return value: (transfer none): the singleton global object */ ShellGlobal * shell_global_get (void) { g_return_val_if_fail (the_object, NULL); return the_object; } /** * _shell_global_destroy_gjs_context: (skip) * @self: global object * * Destroys the GjsContext held by ShellGlobal, in order to break reference * counting cycles. (The GjsContext holds a reference to ShellGlobal because * it's available as window.global inside JS.) */ void _shell_global_destroy_gjs_context (ShellGlobal *self) { g_clear_object (&self->js_context); } /** * shell_global_set_stage_input_region: * @global: the #ShellGlobal * @rectangles: (element-type Mtk.Rectangle): a list of #MtkRectangle * describing the input region. * * Sets the area of the stage that is responsive to mouse clicks when * we don't have a modal or grab. */ void shell_global_set_stage_input_region (ShellGlobal *global, GSList *rectangles) { #ifdef HAVE_X11 MtkRectangle *rect; XRectangle *rects; int nrects, i; GSList *r; MetaDisplay *display; MetaX11Display *x11_display; g_return_if_fail (SHELL_IS_GLOBAL (global)); if (meta_is_wayland_compositor ()) return; display = global->meta_display; x11_display = meta_display_get_x11_display (display); nrects = g_slist_length (rectangles); rects = g_new (XRectangle, nrects); for (r = rectangles, i = 0; r; r = r->next, i++) { rect = (MtkRectangle *)r->data; rects[i].x = rect->x; rects[i].y = rect->y; rects[i].width = rect->width; rects[i].height = rect->height; } meta_x11_display_set_stage_input_region (x11_display, rects, nrects); g_free (rects); #endif } /** * shell_global_get_context: * * Return value: (transfer none): The #MetaContext */ MetaContext * shell_global_get_context (ShellGlobal *global) { return global->meta_context; } /** * shell_global_get_stage: * * Return value: (transfer none): The default #ClutterStage */ ClutterStage * shell_global_get_stage (ShellGlobal *global) { return global->stage; } /** * shell_global_get_display: * * Return value: (transfer none): The default #MetaDisplay */ MetaDisplay * shell_global_get_display (ShellGlobal *global) { return global->meta_display; } /** * shell_global_get_workspace_manager: * * Return value: (transfer none): The default #MetaWorkspaceManager */ MetaWorkspaceManager * shell_global_get_workspace_manager (ShellGlobal *global) { return global->workspace_manager; } /** * shell_global_get_window_actors: * * Gets the list of #MetaWindowActor for the plugin's screen * * Return value: (element-type Meta.WindowActor) (transfer container): the list of windows */ GList * shell_global_get_window_actors (ShellGlobal *global) { GList *filtered = NULL; GList *l; g_return_val_if_fail (SHELL_IS_GLOBAL (global), NULL); for (l = meta_get_window_actors (global->meta_display); l; l = l->next) if (!meta_window_actor_is_destroyed (l->data)) filtered = g_list_prepend (filtered, l->data); return g_list_reverse (filtered); } static void global_stage_notify_width (GObject *gobject, GParamSpec *pspec, gpointer data) { ShellGlobal *global = SHELL_GLOBAL (data); g_object_notify_by_pspec (G_OBJECT (global), props[PROP_SCREEN_WIDTH]); } static void global_stage_notify_height (GObject *gobject, GParamSpec *pspec, gpointer data) { ShellGlobal *global = SHELL_GLOBAL (data); g_object_notify_by_pspec (G_OBJECT (global), props[PROP_SCREEN_HEIGHT]); } static gboolean global_stage_before_paint (gpointer data) { ShellGlobal *global = SHELL_GLOBAL (data); if (global->frame_timestamps) shell_perf_log_event (shell_perf_log_get_default (), "clutter.stagePaintStart"); return TRUE; } static gboolean load_gl_symbol (CoglRenderer *renderer, const char *name, void **func) { *func = cogl_renderer_get_proc_address (renderer, name); if (!*func) { g_warning ("failed to resolve required GL symbol \"%s\"\n", name); return FALSE; } return TRUE; } static void global_stage_after_paint (ClutterStage *stage, ClutterStageView *stage_view, ClutterFrame *frame, ShellGlobal *global) { /* At this point, we've finished all layout and painting, but haven't * actually flushed or swapped */ ClutterBackend *backend = clutter_get_default_backend (); CoglContext *cogl_context = clutter_backend_get_cogl_context (backend); CoglDisplay *cogl_display = cogl_context_get_display (cogl_context); CoglRenderer *cogl_renderer = cogl_display_get_renderer (cogl_display); if (global->frame_timestamps && global->frame_finish_timestamp) { /* It's interesting to find out when the paint actually finishes * on the GPU. We could wait for this asynchronously with * ARB_timer_query (see https://bugzilla.gnome.org/show_bug.cgi?id=732350 * for an implementation of this), but what we actually would * find out then is the latency for drawing a frame, not how much * GPU work was needed, since frames can overlap. Calling glFinish() * is a fairly reliable way to separate out adjacent frames * and measure the amount of GPU work. This is turned on with a * separate property from ::frame-timestamps, since it should not * be turned on if we're trying to actual measure latency or frame * rate. */ static void (*finish) (void); if (!finish) load_gl_symbol (cogl_renderer, "glFinish", (void **)&finish); cogl_context_flush (cogl_context); finish (); shell_perf_log_event (shell_perf_log_get_default (), "clutter.paintCompletedTimestamp"); } } static gboolean global_stage_after_swap (gpointer data) { /* Everything is done, we're ready for a new frame */ ShellGlobal *global = SHELL_GLOBAL (data); if (global->frame_timestamps) shell_perf_log_event (shell_perf_log_get_default (), "clutter.stagePaintDone"); return TRUE; } static void update_scaling_factor (ShellGlobal *global, MetaSettings *settings) { ClutterStage *stage = CLUTTER_STAGE (global->stage); StThemeContext *context = st_theme_context_get_for_stage (stage); int scaling_factor; scaling_factor = meta_settings_get_ui_scaling_factor (settings); g_object_set (context, "scale-factor", scaling_factor, NULL); } static void ui_scaling_factor_changed (MetaSettings *settings, ShellGlobal *global) { update_scaling_factor (global, settings); } static void entry_cursor_func (StEntry *entry, gboolean use_ibeam, gpointer user_data) { ShellGlobal *global = user_data; meta_display_set_cursor (global->meta_display, use_ibeam ? META_CURSOR_IBEAM : META_CURSOR_DEFAULT); } #ifdef HAVE_X11 static void on_x11_display_closed (MetaDisplay *display, ShellGlobal *global) { g_signal_handlers_disconnect_by_data (global->stage, global); } #endif void _shell_global_set_plugin (ShellGlobal *global, MetaPlugin *plugin) { MetaContext *context; MetaDisplay *display; MetaBackend *backend; MetaSettings *settings; #ifdef HAVE_X11 MetaX11Display *x11_display; #endif g_return_if_fail (SHELL_IS_GLOBAL (global)); g_return_if_fail (global->plugin == NULL); display = meta_plugin_get_display (plugin); context = meta_display_get_context (display); backend = meta_context_get_backend (context); global->plugin = plugin; global->wm = shell_wm_new (plugin); global->meta_display = display; global->compositor = meta_display_get_compositor (display); global->meta_context = meta_display_get_context (display); global->backend = meta_context_get_backend (context); global->workspace_manager = meta_display_get_workspace_manager (display); global->stage = CLUTTER_STAGE (meta_get_stage_for_display (display)); st_entry_set_cursor_func (entry_cursor_func, global); st_clipboard_set_selection (meta_display_get_selection (display)); g_signal_connect (global->stage, "notify::width", G_CALLBACK (global_stage_notify_width), global); g_signal_connect (global->stage, "notify::height", G_CALLBACK (global_stage_notify_height), global); clutter_threads_add_repaint_func_full (CLUTTER_REPAINT_FLAGS_PRE_PAINT, global_stage_before_paint, global, NULL); g_signal_connect (global->stage, "after-paint", G_CALLBACK (global_stage_after_paint), global); clutter_threads_add_repaint_func_full (CLUTTER_REPAINT_FLAGS_POST_PAINT, global_stage_after_swap, global, NULL); shell_perf_log_define_event (shell_perf_log_get_default(), "clutter.stagePaintStart", "Start of stage page repaint", ""); shell_perf_log_define_event (shell_perf_log_get_default(), "clutter.paintCompletedTimestamp", "Paint completion on GPU", ""); shell_perf_log_define_event (shell_perf_log_get_default(), "clutter.stagePaintDone", "End of frame, possibly including swap time", ""); #ifdef HAVE_X11 x11_display = meta_display_get_x11_display (display); if (x11_display && meta_x11_display_get_xdisplay (x11_display)) g_signal_connect_object (global->meta_display, "x11-display-closing", G_CALLBACK (on_x11_display_closed), global, 0); #endif backend = meta_context_get_backend (shell_global_get_context (global)); settings = meta_backend_get_settings (backend); g_signal_connect (settings, "ui-scaling-factor-changed", G_CALLBACK (ui_scaling_factor_changed), global); global->focus_manager = st_focus_manager_get_for_stage (global->stage); update_scaling_factor (global, settings); } GjsContext * _shell_global_get_gjs_context (ShellGlobal *global) { return global->js_context; } /* Code to close all file descriptors before we exec; copied from gspawn.c in GLib. * * Authors: Padraig O'Briain, Matthias Clasen, Lennart Poettering * * http://bugzilla.gnome.org/show_bug.cgi?id=469231 * http://bugzilla.gnome.org/show_bug.cgi?id=357585 */ static int set_cloexec (void *data, gint fd) { if (fd >= GPOINTER_TO_INT (data)) fcntl (fd, F_SETFD, FD_CLOEXEC); return 0; } #ifndef HAVE_FDWALK static int fdwalk (int (*cb)(void *data, int fd), void *data) { gint open_max; gint fd; gint res = 0; #ifdef HAVE_SYS_RESOURCE_H struct rlimit rl; #endif #ifdef __linux__ DIR *d; if ((d = opendir("/proc/self/fd"))) { struct dirent *de; while ((de = readdir(d))) { glong l; gchar *e = NULL; if (de->d_name[0] == '.') continue; errno = 0; l = strtol(de->d_name, &e, 10); if (errno != 0 || !e || *e) continue; fd = (gint) l; if ((glong) fd != l) continue; if (fd == dirfd(d)) continue; if ((res = cb (data, fd)) != 0) break; } closedir(d); return res; } /* If /proc is not mounted or not accessible we fall back to the old * rlimit trick */ #endif #ifdef HAVE_SYS_RESOURCE_H if (getrlimit(RLIMIT_NOFILE, &rl) == 0 && rl.rlim_max != RLIM_INFINITY) open_max = rl.rlim_max; else #endif open_max = sysconf (_SC_OPEN_MAX); for (fd = 0; fd < open_max; fd++) if ((res = cb (data, fd)) != 0) break; return res; } #endif static void pre_exec_close_fds(void) { fdwalk (set_cloexec, GINT_TO_POINTER(3)); } /** * shell_global_reexec_self: * @global: A #ShellGlobal * * Restart the current process. Only intended for development purposes. */ void shell_global_reexec_self (ShellGlobal *global) { GPtrArray *arr; gsize len; MetaContext *meta_context; #if defined __linux__ || defined __sun char *buf; char *buf_p; char *buf_end; g_autoptr (GError) error = NULL; if (!g_file_get_contents ("/proc/self/cmdline", &buf, &len, &error)) { g_warning ("failed to get /proc/self/cmdline: %s", error->message); return; } buf_end = buf+len; arr = g_ptr_array_new (); /* The cmdline file is NUL-separated */ for (buf_p = buf; buf_p < buf_end; buf_p = buf_p + strlen (buf_p) + 1) g_ptr_array_add (arr, buf_p); g_ptr_array_add (arr, NULL); #elif defined __OpenBSD__ gchar **args, **args_p; gint mib[] = { CTL_KERN, KERN_PROC_ARGS, getpid(), KERN_PROC_ARGV }; if (sysctl (mib, G_N_ELEMENTS (mib), NULL, &len, NULL, 0) == -1) return; args = g_malloc0 (len); if (sysctl (mib, G_N_ELEMENTS (mib), args, &len, NULL, 0) == -1) { g_warning ("failed to get command line args: %d", errno); g_free (args); return; } arr = g_ptr_array_new (); for (args_p = args; *args_p != NULL; args_p++) { g_ptr_array_add (arr, *args_p); } g_ptr_array_add (arr, NULL); #elif defined __FreeBSD__ char *buf; char *buf_p; char *buf_end; gint mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_ARGS, getpid() }; if (sysctl (mib, G_N_ELEMENTS (mib), NULL, &len, NULL, 0) == -1) return; buf = g_malloc0 (len); if (sysctl (mib, G_N_ELEMENTS (mib), buf, &len, NULL, 0) == -1) { g_warning ("failed to get command line args: %d", errno); g_free (buf); return; } buf_end = buf+len; arr = g_ptr_array_new (); /* The value returned by sysctl is NUL-separated */ for (buf_p = buf; buf_p < buf_end; buf_p = buf_p + strlen (buf_p) + 1) g_ptr_array_add (arr, buf_p); g_ptr_array_add (arr, NULL); #else return; #endif /* Close all file descriptors other than stdin/stdout/stderr, otherwise * they will leak and stay open after the exec. In particular, this is * important for file descriptors that represent mapped graphics buffer * objects. */ pre_exec_close_fds (); meta_context = shell_global_get_context (global); meta_context_restore_rlimit_nofile (meta_context, NULL); meta_display_close (shell_global_get_display (global), shell_global_get_current_time (global)); execvp (arr->pdata[0], (char**)arr->pdata); g_warning ("failed to reexec: %s", g_strerror (errno)); g_ptr_array_free (arr, TRUE); #if defined __linux__ || defined __FreeBSD__ g_free (buf); #elif defined __OpenBSD__ g_free (args); #endif } /** * shell_global_notify_error: * @global: a #ShellGlobal * @msg: Error message * @details: Error details * * Show a system error notification. Use this function * when a user-initiated action results in a non-fatal problem * from causes that may not be under system control. For * example, an application crash. */ void shell_global_notify_error (ShellGlobal *global, const char *msg, const char *details) { g_signal_emit_by_name (global, "notify-error", msg, details); } /** * shell_global_get_pointer: * @global: the #ShellGlobal * @x: (out): the X coordinate of the pointer, in global coordinates * @y: (out): the Y coordinate of the pointer, in global coordinates * @mods: (out): the current set of modifier keys that are pressed down * * Gets the pointer coordinates and current modifier key state. */ void shell_global_get_pointer (ShellGlobal *global, int *x, int *y, ClutterModifierType *mods) { ClutterModifierType raw_mods; MetaCursorTracker *tracker; graphene_point_t point; tracker = meta_cursor_tracker_get_for_display (global->meta_display); meta_cursor_tracker_get_pointer (tracker, &point, &raw_mods); if (x) *x = point.x; if (y) *y = point.y; *mods = raw_mods & CLUTTER_MODIFIER_MASK; } /** * shell_global_get_switcheroo_control: * @global: A #ShellGlobal * * Get the global #GDBusProxy instance for the switcheroo-control * daemon. * * Return value: (transfer none): the #GDBusProxy for the daemon, * or %NULL on error. */ GDBusProxy * shell_global_get_switcheroo_control (ShellGlobal *global) { return global->switcheroo_control; } /** * shell_global_get_settings: * @global: A #ShellGlobal * * Get the global GSettings instance. * * Return value: (transfer none): The GSettings object */ GSettings * shell_global_get_settings (ShellGlobal *global) { return global->settings; } /** * shell_global_get_current_time: * @global: A #ShellGlobal * * Returns: the current X server time from the current Clutter, Gdk, or X * event. If called from outside an event handler, this may return * %Clutter.CURRENT_TIME (aka 0), or it may return a slightly * out-of-date timestamp. */ guint32 shell_global_get_current_time (ShellGlobal *global) { guint32 time; /* meta_display_get_current_time() will return the correct time when handling an X or Gdk event, but will return CurrentTime from some Clutter event callbacks. clutter_get_current_event_time() will return the correct time from a Clutter event callback, but may return CLUTTER_CURRENT_TIME timestamp if called at other times. So we try meta_display_get_current_time() first, since we can recognize a "wrong" answer from that, and then fall back to clutter_get_current_event_time(). */ time = meta_display_get_current_time (global->meta_display); if (time != CLUTTER_CURRENT_TIME) return time; return clutter_get_current_event_time (); } static void shell_global_app_launched_cb (GAppLaunchContext *context, GAppInfo *info, GVariant *platform_data, gpointer user_data) { gint32 pid; const gchar *app_name; if (!g_variant_lookup (platform_data, "pid", "i", &pid)) return; /* If pid == 0 the application was launched through D-Bus * activation, therefore it's already in its own unit */ if (pid == 0) return; app_name = g_app_info_get_id (info); if (app_name == NULL) app_name = g_app_info_get_executable (info); /* Start async request; we don't care about the result */ gnome_start_systemd_scope (app_name, pid, NULL, NULL, NULL, NULL, NULL); } /** * shell_global_create_app_launch_context: * @global: A #ShellGlobal * @timestamp: the timestamp for the launch (or 0 for current time) * @workspace: a workspace index, or -1 to indicate no specific one * * Create a #GAppLaunchContext set up with the correct timestamp, and * targeted to activate on @workspace. * * Return value: (transfer full): A new #GAppLaunchContext */ GAppLaunchContext * shell_global_create_app_launch_context (ShellGlobal *global, guint32 timestamp, int workspace) { MetaWorkspaceManager *workspace_manager = global->workspace_manager; MetaStartupNotification *sn; MetaLaunchContext *context; MetaWorkspace *ws = NULL; sn = meta_display_get_startup_notification (global->meta_display); context = meta_startup_notification_create_launcher (sn); if (timestamp == 0) timestamp = shell_global_get_current_time (global); meta_launch_context_set_timestamp (context, timestamp); if (workspace > -1) { ws = meta_workspace_manager_get_workspace_by_index (workspace_manager, workspace); meta_launch_context_set_workspace (context, ws); } g_signal_connect (context, "launched", G_CALLBACK (shell_global_app_launched_cb), NULL); return (GAppLaunchContext *) context; } typedef struct { ShellLeisureFunction func; gpointer user_data; GDestroyNotify notify; } LeisureClosure; static gboolean run_leisure_functions (gpointer data) { ShellGlobal *global = data; GSList *closures; GSList *iter; global->leisure_function_id = 0; /* We started more work since we scheduled the idle */ if (global->work_count > 0) return FALSE; /* No leisure closures, so we are done */ if (global->leisure_closures == NULL) return FALSE; closures = global->leisure_closures; global->leisure_closures = NULL; for (iter = closures; iter; iter = iter->next) { LeisureClosure *closure = closures->data; closure->func (closure->user_data); if (closure->notify) closure->notify (closure->user_data); g_free (closure); } g_slist_free (closures); return FALSE; } static void schedule_leisure_functions (ShellGlobal *global) { /* This is called when we think we are ready to run leisure functions * by our own accounting. We try to handle other types of business * (like ClutterAnimation) by adding a low priority idle function. * * This won't work properly if the mainloop goes idle waiting for * the vertical blanking interval or waiting for work being done * in another thread. */ if (!global->leisure_function_id) { global->leisure_function_id = g_idle_add_full (G_PRIORITY_LOW, run_leisure_functions, global, NULL); g_source_set_name_by_id (global->leisure_function_id, "[gnome-shell] run_leisure_functions"); } } /** * shell_global_begin_work: * @global: the #ShellGlobal * * Marks that we are currently doing work. This is used to to track * whether we are busy for the purposes of shell_global_run_at_leisure(). * A count is kept and shell_global_end_work() must be called exactly * as many times as shell_global_begin_work(). */ void shell_global_begin_work (ShellGlobal *global) { global->work_count++; } /** * shell_global_end_work: * @global: the #ShellGlobal * * Marks the end of work that we started with shell_global_begin_work(). * If no other work is ongoing and functions have been added with * shell_global_run_at_leisure(), they will be run at the next * opportunity. */ void shell_global_end_work (ShellGlobal *global) { g_return_if_fail (global->work_count > 0); global->work_count--; if (global->work_count == 0) schedule_leisure_functions (global); } /** * shell_global_run_at_leisure: * @global: the #ShellGlobal * @func: function to call at leisure * @user_data: data to pass to @func * @notify: function to call to free @user_data * * Schedules a function to be called the next time the shell is idle. * Idle means here no animations, no redrawing, and no ongoing background * work. Since there is currently no way to hook into the Clutter master * clock and know when is running, the implementation here is somewhat * approximation. Animations may be detected as terminating early if they * can be drawn fast enough so that the event loop goes idle between frames. * * The intent of this function is for performance measurement runs * where a number of actions should be run serially and each action is * timed individually. Using this function for other purposes will * interfere with the ability to use it for performance measurement so * should be avoided. */ void shell_global_run_at_leisure (ShellGlobal *global, ShellLeisureFunction func, gpointer user_data, GDestroyNotify notify) { LeisureClosure *closure = g_new (LeisureClosure, 1); closure->func = func; closure->user_data = user_data; closure->notify = notify; global->leisure_closures = g_slist_append (global->leisure_closures, closure); if (global->work_count == 0) schedule_leisure_functions (global); } const char * shell_global_get_session_mode (ShellGlobal *global) { g_return_val_if_fail (SHELL_IS_GLOBAL (global), "user"); return global->session_mode; } static void delete_variant_cb (GObject *object, GAsyncResult *result, gpointer user_data) { ShellGlobal *global = user_data; GError *error = NULL; if (!g_file_delete_finish (G_FILE (object), result, &error)) { if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED) && !g_error_matches (error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND)) { g_warning ("Could not delete runtime/persistent state file: %s\n", error->message); } g_error_free (error); } g_hash_table_remove (global->save_ops, object); } static void replace_contents_worker (GTask *task, gpointer source_object, gpointer task_data, GCancellable *cancellable) { GFile *file = source_object; GBytes *bytes = task_data; GError *error = NULL; const gchar *data; gsize len; data = g_bytes_get_data (bytes, &len); if (!g_file_replace_contents (file, data, len, NULL, FALSE, G_FILE_CREATE_REPLACE_DESTINATION, NULL, cancellable, &error)) g_task_return_error (task, g_steal_pointer (&error)); else g_task_return_boolean (task, TRUE); } static void replace_contents_async (GFile *path, GBytes *bytes, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_autoptr(GTask) task = NULL; g_assert (G_IS_FILE (path)); g_assert (bytes != NULL); g_assert (!cancellable || G_IS_CANCELLABLE (cancellable)); task = g_task_new (path, cancellable, callback, user_data); g_task_set_source_tag (task, replace_contents_async); g_task_set_task_data (task, g_bytes_ref (bytes), (GDestroyNotify)g_bytes_unref); g_task_run_in_thread (task, replace_contents_worker); } static gboolean replace_contents_finish (GFile *file, GAsyncResult *result, GError **error) { return g_task_propagate_boolean (G_TASK (result), error); } static void replace_variant_cb (GObject *object, GAsyncResult *result, gpointer user_data) { ShellGlobal *global = user_data; GError *error = NULL; if (!replace_contents_finish (G_FILE (object), result, &error)) { if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) { g_warning ("Could not replace runtime/persistent state file: %s\n", error->message); } g_error_free (error); } g_hash_table_remove (global->save_ops, object); } static void save_variant (ShellGlobal *global, GFile *dir, const char *property_name, GVariant *variant) { GFile *path = g_file_get_child (dir, property_name); GCancellable *cancellable; cancellable = g_hash_table_lookup (global->save_ops, path); g_cancellable_cancel (cancellable); cancellable = g_cancellable_new (); g_hash_table_insert (global->save_ops, g_object_ref (path), cancellable); if (variant == NULL || g_variant_get_data (variant) == NULL) { g_file_delete_async (path, G_PRIORITY_DEFAULT, cancellable, delete_variant_cb, global); } else { g_autoptr(GBytes) bytes = NULL; bytes = g_bytes_new_with_free_func (g_variant_get_data (variant), g_variant_get_size (variant), (GDestroyNotify)g_variant_unref, g_variant_ref (variant)); /* g_file_replace_contents_async() can potentially fsync() from the * calling thread when completing the asynchronous task. Instead, we * want to force that fsync() to a thread to avoid blocking the * compositor main loop. Using our own replace_contents_async() * simply executes the operation synchronously from a thread. */ replace_contents_async (path, bytes, cancellable, replace_variant_cb, global); } g_object_unref (path); } static GVariant * load_variant (GFile *dir, const char *property_type, const char *property_name) { GVariant *res = NULL; GMappedFile *mfile; GFile *path = g_file_get_child (dir, property_name); char *pathstr; GError *local_error = NULL; pathstr = g_file_get_path (path); mfile = g_mapped_file_new (pathstr, FALSE, &local_error); if (!mfile) { if (!g_error_matches (local_error, G_FILE_ERROR, G_FILE_ERROR_NOENT)) { g_warning ("Failed to open runtime state: %s", local_error->message); } g_clear_error (&local_error); } else { GBytes *bytes = g_mapped_file_get_bytes (mfile); res = g_variant_new_from_bytes (G_VARIANT_TYPE (property_type), bytes, FALSE); g_bytes_unref (bytes); g_mapped_file_unref (mfile); } g_object_unref (path); g_free (pathstr); return res; } /** * shell_global_set_runtime_state: * @global: a #ShellGlobal * @property_name: Name of the property * @variant: (nullable): A #GVariant, or %NULL to unset * * Change the value of serialized runtime state. */ void shell_global_set_runtime_state (ShellGlobal *global, const char *property_name, GVariant *variant) { save_variant (global, global->runtime_state_path, property_name, variant); } /** * shell_global_get_runtime_state: * @global: a #ShellGlobal * @property_type: Expected data type * @property_name: Name of the property * * The shell maintains "runtime" state which does not persist across * logout or reboot. * * Returns: (transfer floating): The value of a serialized property, or %NULL if none stored */ GVariant * shell_global_get_runtime_state (ShellGlobal *global, const char *property_type, const char *property_name) { return load_variant (global->runtime_state_path, property_type, property_name); } /** * shell_global_set_persistent_state: * @global: a #ShellGlobal * @property_name: Name of the property * @variant: (nullable): A #GVariant, or %NULL to unset * * Change the value of serialized persistent state. */ void shell_global_set_persistent_state (ShellGlobal *global, const char *property_name, GVariant *variant) { save_variant (global, global->userdatadir_path, property_name, variant); } /** * shell_global_get_persistent_state: * @global: a #ShellGlobal * @property_type: Expected data type * @property_name: Name of the property * * The shell maintains "persistent" state which will persist after * logout or reboot. * * Returns: (transfer none): The value of a serialized property, or %NULL if none stored */ GVariant * shell_global_get_persistent_state (ShellGlobal *global, const char *property_type, const char *property_name) { return load_variant (global->userdatadir_path, property_type, property_name); } void _shell_global_locate_pointer (ShellGlobal *global) { g_signal_emit (global, shell_global_signals[LOCATE_POINTER], 0); } void _shell_global_notify_shutdown (ShellGlobal *global) { g_signal_emit (global, shell_global_signals[SHUTDOWN], 0); } /** * shell_global_get_window_tracker: * * Gets window tracker. * * Return value: (transfer none): the window tracker */ ShellWindowTracker * shell_global_get_window_tracker (ShellGlobal *global) { if (!global->window_tracker) global->window_tracker = g_object_new (SHELL_TYPE_WINDOW_TRACKER, NULL); return global->window_tracker; } /** * shell_global_get_app_system: * * Gets app system. * * Return value: (transfer none): the app system */ ShellAppSystem * shell_global_get_app_system (ShellGlobal *global) { if (!global->app_system) global->app_system = g_object_new (SHELL_TYPE_APP_SYSTEM, NULL); return global->app_system; } /** * shell_global_get_app_cache: * * Gets app cache. * * Return value: (transfer none): the app cache */ ShellAppCache * shell_global_get_app_cache (ShellGlobal *global) { if (!global->app_cache) global->app_cache = g_object_new (SHELL_TYPE_APP_CACHE, NULL); return global->app_cache; } /** * shell_global_get_app_usage: * * Gets app usage. * * Return value: (transfer none): the app usage */ ShellAppUsage * shell_global_get_app_usage (ShellGlobal *global) { if (!global->app_usage) global->app_usage = g_object_new (SHELL_TYPE_APP_USAGE, NULL); return global->app_usage; } 070701000002A0000081A40000000000000000000000016712993F0000103F000000000000000000000000000000000000002400000000gnome-shell-47.1/src/shell-global.h/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ #pragma once #include #include #include #include G_BEGIN_DECLS #include "shell-window-tracker.h" #include "shell-app-system.h" #include "shell-app-usage.h" #define SHELL_TYPE_GLOBAL (shell_global_get_type ()) G_DECLARE_FINAL_TYPE (ShellGlobal, shell_global, SHELL, GLOBAL, GObject) ShellGlobal *shell_global_get (void); MetaContext *shell_global_get_context (ShellGlobal *global); ClutterStage *shell_global_get_stage (ShellGlobal *global); MetaDisplay *shell_global_get_display (ShellGlobal *global); GList *shell_global_get_window_actors (ShellGlobal *global); GSettings *shell_global_get_settings (ShellGlobal *global); guint32 shell_global_get_current_time (ShellGlobal *global); MetaWorkspaceManager *shell_global_get_workspace_manager (ShellGlobal *global); /* Input/event handling */ void shell_global_set_stage_input_region (ShellGlobal *global, GSList *rectangles); void shell_global_get_pointer (ShellGlobal *global, int *x, int *y, ClutterModifierType *mods); typedef struct { guint glibc_uordblks; guint js_bytes; guint gjs_boxed; guint gjs_gobject; guint gjs_function; guint gjs_closure; /* 32 bit to avoid js conversion problems with 64 bit */ guint last_gc_seconds_ago; } ShellMemoryInfo; /* Run-at-leisure API */ void shell_global_begin_work (ShellGlobal *global); void shell_global_end_work (ShellGlobal *global); typedef void (*ShellLeisureFunction) (gpointer data); void shell_global_run_at_leisure (ShellGlobal *global, ShellLeisureFunction func, gpointer user_data, GDestroyNotify notify); /* Misc utilities / Shell API */ GDBusProxy * shell_global_get_switcheroo_control (ShellGlobal *global); GAppLaunchContext * shell_global_create_app_launch_context (ShellGlobal *global, guint32 timestamp, int workspace); void shell_global_notify_error (ShellGlobal *global, const char *msg, const char *details); void shell_global_reexec_self (ShellGlobal *global); const char * shell_global_get_session_mode (ShellGlobal *global); void shell_global_set_runtime_state (ShellGlobal *global, const char *property_name, GVariant *variant); GVariant * shell_global_get_runtime_state (ShellGlobal *global, const char *property_type, const char *property_name); void shell_global_set_persistent_state (ShellGlobal *global, const char *property_name, GVariant *variant); GVariant * shell_global_get_persistent_state (ShellGlobal *global, const char *property_type, const char *property_name); ShellWindowTracker * shell_global_get_window_tracker (ShellGlobal *global); ShellAppSystem * shell_global_get_app_system (ShellGlobal *global); ShellAppUsage * shell_global_get_app_usage (ShellGlobal *global); G_END_DECLS 070701000002A1000081A40000000000000000000000016712993F00001B58000000000000000000000000000000000000002900000000gnome-shell-47.1/src/shell-glsl-effect.c/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ /** * SECTION:shell-glsl-effect * @short_description: An offscreen effect using GLSL * * A #ShellGLSLEffect is a #ClutterOffscreenEffect that allows * running custom GLSL to the vertex and fragment stages of the * graphic pipeline. */ #include "config.h" #include #include "shell-glsl-effect.h" typedef struct _ShellGLSLEffectPrivate ShellGLSLEffectPrivate; struct _ShellGLSLEffectPrivate { CoglPipeline *pipeline; }; G_DEFINE_TYPE_WITH_PRIVATE (ShellGLSLEffect, shell_glsl_effect, CLUTTER_TYPE_OFFSCREEN_EFFECT); static CoglPipeline * shell_glsl_effect_create_pipeline (ClutterOffscreenEffect *effect, CoglTexture *texture) { ShellGLSLEffect *self = SHELL_GLSL_EFFECT (effect); ShellGLSLEffectPrivate *priv = shell_glsl_effect_get_instance_private (self); cogl_pipeline_set_layer_texture (priv->pipeline, 0, texture); return g_object_ref (priv->pipeline); } /** * shell_glsl_effect_add_glsl_snippet: * @effect: a #ShellGLSLEffect * @hook: where to insert the code * @declarations: GLSL declarations * @code: GLSL code * @is_replace: whether Cogl code should be replaced by the custom shader * * Adds a GLSL snippet to the pipeline used for drawing the effect texture. * See #CoglSnippet for details. * * This is only valid inside the a call to the build_pipeline() virtual * function. */ void shell_glsl_effect_add_glsl_snippet (ShellGLSLEffect *effect, ShellSnippetHook hook, const char *declarations, const char *code, gboolean is_replace) { ShellGLSLEffectClass *klass = SHELL_GLSL_EFFECT_GET_CLASS (effect); CoglSnippet *snippet; g_return_if_fail (klass->base_pipeline != NULL); if (is_replace) { snippet = cogl_snippet_new ((CoglSnippetHook)hook, declarations, NULL); cogl_snippet_set_replace (snippet, code); } else { snippet = cogl_snippet_new ((CoglSnippetHook)hook, declarations, code); } if (hook == SHELL_SNIPPET_HOOK_VERTEX || hook == SHELL_SNIPPET_HOOK_FRAGMENT) cogl_pipeline_add_snippet (klass->base_pipeline, snippet); else cogl_pipeline_add_layer_snippet (klass->base_pipeline, 0, snippet); g_object_unref (snippet); } static void shell_glsl_effect_dispose (GObject *gobject) { ShellGLSLEffect *self = SHELL_GLSL_EFFECT (gobject); ShellGLSLEffectPrivate *priv; priv = shell_glsl_effect_get_instance_private (self); g_clear_object (&priv->pipeline); G_OBJECT_CLASS (shell_glsl_effect_parent_class)->dispose (gobject); } static void shell_glsl_effect_init (ShellGLSLEffect *effect) { } static void shell_glsl_effect_constructed (GObject *object) { ShellGLSLEffect *self; ShellGLSLEffectClass *klass; ShellGLSLEffectPrivate *priv; CoglContext *ctx = clutter_backend_get_cogl_context (clutter_get_default_backend ()); G_OBJECT_CLASS (shell_glsl_effect_parent_class)->constructed (object); /* Note that, differently from ClutterBlurEffect, we are calling this inside constructed, not init, so klass points to the most-derived GTypeClass, not ShellGLSLEffectClass. */ klass = SHELL_GLSL_EFFECT_GET_CLASS (object); self = SHELL_GLSL_EFFECT (object); priv = shell_glsl_effect_get_instance_private (self); if (G_UNLIKELY (klass->base_pipeline == NULL)) { klass->base_pipeline = cogl_pipeline_new (ctx); cogl_pipeline_set_blend (klass->base_pipeline, "RGB = ADD (SRC_COLOR * (SRC_COLOR[A]), DST_COLOR * (1-SRC_COLOR[A]))", NULL); if (klass->build_pipeline != NULL) klass->build_pipeline (self); } priv->pipeline = cogl_pipeline_copy (klass->base_pipeline); cogl_pipeline_set_layer_null_texture (klass->base_pipeline, 0); } static void shell_glsl_effect_class_init (ShellGLSLEffectClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); ClutterOffscreenEffectClass *offscreen_class; offscreen_class = CLUTTER_OFFSCREEN_EFFECT_CLASS (klass); offscreen_class->create_pipeline = shell_glsl_effect_create_pipeline; gobject_class->constructed = shell_glsl_effect_constructed; gobject_class->dispose = shell_glsl_effect_dispose; } /** * shell_glsl_effect_get_uniform_location: * @effect: a #ShellGLSLEffect * @name: the uniform name * * Returns: the location of the uniform named @name, that can be * passed to shell_glsl_effect_set_uniform_float(). */ int shell_glsl_effect_get_uniform_location (ShellGLSLEffect *effect, const char *name) { ShellGLSLEffectPrivate *priv = shell_glsl_effect_get_instance_private (effect); return cogl_pipeline_get_uniform_location (priv->pipeline, name); } /** * shell_glsl_effect_set_uniform_float: * @effect: a #ShellGLSLEffect * @uniform: the uniform location (as returned by shell_glsl_effect_get_uniform_location()) * @n_components: the number of components in the uniform (eg. 3 for a vec3) * @total_count: the total number of floats in @value * @value: (array length=total_count): the array of floats to set @uniform */ void shell_glsl_effect_set_uniform_float (ShellGLSLEffect *effect, int uniform, int n_components, int total_count, const float *value) { ShellGLSLEffectPrivate *priv = shell_glsl_effect_get_instance_private (effect); cogl_pipeline_set_uniform_float (priv->pipeline, uniform, n_components, total_count / n_components, value); } /** * shell_glsl_effect_set_uniform_matrix: * @effect: a #ShellGLSLEffect * @uniform: the uniform location (as returned by shell_glsl_effect_get_uniform_location()) * @transpose: Whether to transpose the matrix * @dimensions: the number of components in the uniform (eg. 3 for a vec3) * @total_count: the total number of floats in @value * @value: (array length=total_count): the array of floats to set @uniform */ void shell_glsl_effect_set_uniform_matrix (ShellGLSLEffect *effect, int uniform, gboolean transpose, int dimensions, int total_count, const float *value) { ShellGLSLEffectPrivate *priv = shell_glsl_effect_get_instance_private (effect); cogl_pipeline_set_uniform_matrix (priv->pipeline, uniform, dimensions, total_count / (dimensions * dimensions), transpose, value); } 070701000002A2000081A40000000000000000000000016712993F000008E6000000000000000000000000000000000000002900000000gnome-shell-47.1/src/shell-glsl-effect.h/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ #pragma once #include "st.h" /** * ShellSnippetHook: * Temporary hack to work around Cogl not exporting CoglSnippetHook in * the 1.0 API. Don't use. */ typedef enum { /* Per pipeline vertex hooks */ SHELL_SNIPPET_HOOK_VERTEX = 0, SHELL_SNIPPET_HOOK_VERTEX_TRANSFORM, /* Per pipeline fragment hooks */ SHELL_SNIPPET_HOOK_FRAGMENT = 2048, /* Per layer vertex hooks */ SHELL_SNIPPET_HOOK_TEXTURE_COORD_TRANSFORM = 4096, /* Per layer fragment hooks */ SHELL_SNIPPET_HOOK_LAYER_FRAGMENT = 6144, SHELL_SNIPPET_HOOK_TEXTURE_LOOKUP } ShellSnippetHook; #define SHELL_TYPE_GLSL_EFFECT (shell_glsl_effect_get_type ()) G_DECLARE_DERIVABLE_TYPE (ShellGLSLEffect, shell_glsl_effect, SHELL, GLSL_EFFECT, ClutterOffscreenEffect) struct _ShellGLSLEffectClass { ClutterOffscreenEffectClass parent_class; CoglPipeline *base_pipeline; void (*build_pipeline) (ShellGLSLEffect *effect); }; void shell_glsl_effect_add_glsl_snippet (ShellGLSLEffect *effect, ShellSnippetHook hook, const char *declarations, const char *code, gboolean is_replace); int shell_glsl_effect_get_uniform_location (ShellGLSLEffect *effect, const char *name); void shell_glsl_effect_set_uniform_float (ShellGLSLEffect *effect, int uniform, int n_components, int total_count, const float *value); void shell_glsl_effect_set_uniform_matrix (ShellGLSLEffect *effect, int uniform, gboolean transpose, int dimensions, int total_count, const float *value); 070701000002A3000081A40000000000000000000000016712993F000013D8000000000000000000000000000000000000003500000000gnome-shell-47.1/src/shell-invert-lightness-effect.c/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ /* * Copyright (C) 2010-2012 Inclusive Design Research Centre, OCAD University. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library. If not, see . * * Author: * Joseph Scheuhammer */ /** * SECTION:shell-invert-lightness-effect * @short_description: A colorization effect where lightness is inverted but * color is not. * @see_also: #ClutterEffect, #ClutterOffscreenEffect * * #ShellInvertLightnessEffect is a sub-class of #ClutterEffect that enhances * the appearance of a clutter actor. Specifically it inverts the lightness * of a #ClutterActor (e.g., darker colors become lighter, white becomes black, * and white, black). */ #define SHELL_INVERT_LIGHTNESS_EFFECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SHELL_TYPE_INVERT_LIGHTNESS_EFFECT, ShellInvertLightnessEffectClass)) #define SHELL_IS_INVERT_EFFECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SHELL_TYPE_INVERT_LIGHTNESS_EFFECT)) #define SHELL_INVERT_LIGHTNESS_EFFECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SHELL_TYPE_INVERT_LIGHTNESS_EFFEC, ShellInvertLightnessEffectClass)) #include "shell-invert-lightness-effect.h" #include struct _ShellInvertLightnessEffect { ClutterOffscreenEffect parent_instance; CoglPipeline *pipeline; }; struct _ShellInvertLightnessEffectClass { ClutterOffscreenEffectClass parent_class; CoglPipeline *base_pipeline; }; /* Lightness inversion in GLSL. */ static const gchar *invert_lightness_source = "cogl_texel = texture2D (cogl_sampler, cogl_tex_coord.st);\n" "vec3 effect = vec3 (cogl_texel);\n" "\n" "float maxColor = max (cogl_texel.r, max (cogl_texel.g, cogl_texel.b));\n" "float minColor = min (cogl_texel.r, min (cogl_texel.g, cogl_texel.b));\n" "float lightness = (maxColor + minColor) / 2.0;\n" "\n" "float delta = (1.0 - lightness) - lightness;\n" "effect.rgb = (effect.rgb + delta);\n" "\n" "cogl_texel = vec4 (effect, cogl_texel.a);\n"; G_DEFINE_TYPE (ShellInvertLightnessEffect, shell_invert_lightness_effect, CLUTTER_TYPE_OFFSCREEN_EFFECT); static CoglPipeline * shell_glsl_effect_create_pipeline (ClutterOffscreenEffect *effect, CoglTexture *texture) { ShellInvertLightnessEffect *self = SHELL_INVERT_LIGHTNESS_EFFECT (effect); cogl_pipeline_set_layer_texture (self->pipeline, 0, texture); return g_object_ref (self->pipeline); } static void shell_invert_lightness_effect_dispose (GObject *gobject) { ShellInvertLightnessEffect *self = SHELL_INVERT_LIGHTNESS_EFFECT (gobject); g_clear_object (&self->pipeline); G_OBJECT_CLASS (shell_invert_lightness_effect_parent_class)->dispose (gobject); } static void shell_invert_lightness_effect_class_init (ShellInvertLightnessEffectClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); ClutterOffscreenEffectClass *offscreen_class; offscreen_class = CLUTTER_OFFSCREEN_EFFECT_CLASS (klass); offscreen_class->create_pipeline = shell_glsl_effect_create_pipeline; gobject_class->dispose = shell_invert_lightness_effect_dispose; } static void shell_invert_lightness_effect_init (ShellInvertLightnessEffect *self) { ShellInvertLightnessEffectClass *klass; klass = SHELL_INVERT_LIGHTNESS_EFFECT_GET_CLASS (self); if (G_UNLIKELY (klass->base_pipeline == NULL)) { CoglSnippet *snippet; CoglContext *ctx = clutter_backend_get_cogl_context (clutter_get_default_backend ()); klass->base_pipeline = cogl_pipeline_new (ctx); snippet = cogl_snippet_new (COGL_SNIPPET_HOOK_TEXTURE_LOOKUP, NULL, NULL); cogl_snippet_set_replace (snippet, invert_lightness_source); cogl_pipeline_add_layer_snippet (klass->base_pipeline, 0, snippet); g_object_unref (snippet); cogl_pipeline_set_layer_null_texture (klass->base_pipeline, 0); } self->pipeline = cogl_pipeline_copy (klass->base_pipeline); } /** * shell_invert_lightness_effect_new: * * Creates a new #ShellInvertLightnessEffect to be used with * clutter_actor_add_effect() * * Return value: (transfer full): the newly created * #ShellInvertLightnessEffect or %NULL. Use g_object_unref() when done. */ ClutterEffect * shell_invert_lightness_effect_new (void) { return g_object_new (SHELL_TYPE_INVERT_LIGHTNESS_EFFECT, NULL); } 070701000002A4000081A40000000000000000000000016712993F00000646000000000000000000000000000000000000003500000000gnome-shell-47.1/src/shell-invert-lightness-effect.h/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ /* * Copyright © 2010-2012 Inclusive Design Research Centre, OCAD University. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library. If not, see . * * Author: * Joseph Scheuhammer */ #pragma once #include G_BEGIN_DECLS #define SHELL_TYPE_INVERT_LIGHTNESS_EFFECT (shell_invert_lightness_effect_get_type ()) #define SHELL_INVERT_LIGHTNESS_EFFECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SHELL_TYPE_INVERT_LIGHTNESS_EFFECT, ShellInvertLightnessEffect)) #define SHELL_IS_INVERT_LIGHTNESS_EFFECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SHELL_TYPE_INVERT_LIGHTNESS_EFFECT)) typedef struct _ShellInvertLightnessEffect ShellInvertLightnessEffect; typedef struct _ShellInvertLightnessEffectClass ShellInvertLightnessEffectClass; GType shell_invert_lightness_effect_get_type (void) G_GNUC_CONST; ClutterEffect *shell_invert_lightness_effect_new (void); G_END_DECLS 070701000002A5000081A40000000000000000000000016712993F00005B8F000000000000000000000000000000000000002C00000000gnome-shell-47.1/src/shell-keyring-prompt.c/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ /* * Copyright 2012 Red Hat, Inc. * 2012 Stef Walter * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * * Author: Stef Walter */ #include "config.h" #include "shell-keyring-prompt.h" #include "shell-secure-text-buffer.h" #define GCR_API_SUBJECT_TO_CHANGE #include #include #include typedef struct _ShellPasswordPromptPrivate ShellPasswordPromptPrivate; typedef enum { PROMPTING_NONE, PROMPTING_FOR_CONFIRM, PROMPTING_FOR_PASSWORD } PromptingMode; struct _ShellKeyringPrompt { GObject parent; gchar *title; gchar *message; gchar *description; gchar *warning; gchar *choice_label; gboolean choice_chosen; gboolean password_new; guint password_strength; gchar *continue_label; gchar *cancel_label; GTask *task; ClutterText *password_actor; ClutterText *confirm_actor; PromptingMode mode; gboolean shown; }; enum { PROP_0, PROP_PASSWORD_VISIBLE, PROP_CONFIRM_VISIBLE, PROP_WARNING_VISIBLE, PROP_CHOICE_VISIBLE, PROP_PASSWORD_ACTOR, PROP_CONFIRM_ACTOR, N_PROPS, /* GcrPrompt */ PROP_TITLE, PROP_MESSAGE, PROP_DESCRIPTION, PROP_WARNING, PROP_CHOICE_LABEL, PROP_CHOICE_CHOSEN, PROP_PASSWORD_NEW, PROP_PASSWORD_STRENGTH, PROP_CALLER_WINDOW, PROP_CONTINUE_LABEL, PROP_CANCEL_LABEL }; static GParamSpec *props[N_PROPS] = { NULL, }; static void shell_keyring_prompt_iface (GcrPromptInterface *iface); G_DEFINE_TYPE_WITH_CODE (ShellKeyringPrompt, shell_keyring_prompt, G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE (GCR_TYPE_PROMPT, shell_keyring_prompt_iface); ); enum { SIGNAL_SHOW_PASSWORD, SIGNAL_SHOW_CONFIRM, SIGNAL_LAST }; static gint signals[SIGNAL_LAST]; static void shell_keyring_prompt_init (ShellKeyringPrompt *self) { } static gchar * remove_mnemonics (const GValue *value) { const gchar mnemonic = '_'; gchar *stripped_label, *temp; const gchar *label; g_return_val_if_fail (value != NULL, NULL); g_return_val_if_fail (G_VALUE_HOLDS_STRING (value), NULL); label = g_value_get_string (value); if (!label) return NULL; /* Stripped label will have the original label length at most */ stripped_label = temp = g_new (gchar, strlen(label) + 1); g_assert (stripped_label != NULL); while (*label != '\0') { if (*label == mnemonic) label++; *(temp++) = *(label++); } *temp = '\0'; return stripped_label; } static void shell_keyring_prompt_set_property (GObject *obj, guint prop_id, const GValue *value, GParamSpec *pspec) { ShellKeyringPrompt *self = SHELL_KEYRING_PROMPT (obj); switch (prop_id) { case PROP_TITLE: g_free (self->title); self->title = g_value_dup_string (value); g_object_notify (obj, "title"); break; case PROP_MESSAGE: g_free (self->message); self->message = g_value_dup_string (value); g_object_notify (obj, "message"); break; case PROP_DESCRIPTION: g_free (self->description); self->description = g_value_dup_string (value); g_object_notify (obj, "description"); break; case PROP_WARNING: g_free (self->warning); self->warning = g_value_dup_string (value); if (!self->warning) self->warning = g_strdup (""); g_object_notify (obj, "warning"); g_object_notify_by_pspec (obj, props[PROP_WARNING_VISIBLE]); break; case PROP_CHOICE_LABEL: g_free (self->choice_label); self->choice_label = remove_mnemonics (value); if (!self->choice_label) self->choice_label = g_strdup (""); g_object_notify (obj, "choice-label"); g_object_notify_by_pspec (obj, props[PROP_CHOICE_VISIBLE]); break; case PROP_CHOICE_CHOSEN: self->choice_chosen = g_value_get_boolean (value); g_object_notify (obj, "choice-chosen"); break; case PROP_PASSWORD_NEW: self->password_new = g_value_get_boolean (value); g_object_notify (obj, "password-new"); g_object_notify_by_pspec (obj, props[PROP_CONFIRM_VISIBLE]); break; case PROP_CALLER_WINDOW: /* ignored */ break; case PROP_CONTINUE_LABEL: g_free (self->continue_label); self->continue_label = remove_mnemonics (value); g_object_notify (obj, "continue-label"); break; case PROP_CANCEL_LABEL: g_free (self->cancel_label); self->cancel_label = remove_mnemonics (value); g_object_notify (obj, "cancel-label"); break; case PROP_PASSWORD_ACTOR: shell_keyring_prompt_set_password_actor (self, g_value_get_object (value)); break; case PROP_CONFIRM_ACTOR: shell_keyring_prompt_set_confirm_actor (self, g_value_get_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, prop_id, pspec); break; } } static void shell_keyring_prompt_get_property (GObject *obj, guint prop_id, GValue *value, GParamSpec *pspec) { ShellKeyringPrompt *self = SHELL_KEYRING_PROMPT (obj); switch (prop_id) { case PROP_TITLE: g_value_set_string (value, self->title ? self->title : ""); break; case PROP_MESSAGE: g_value_set_string (value, self->message ? self->message : ""); break; case PROP_DESCRIPTION: g_value_set_string (value, self->description ? self->description : ""); break; case PROP_WARNING: g_value_set_string (value, self->warning ? self->warning : ""); break; case PROP_CHOICE_LABEL: g_value_set_string (value, self->choice_label ? self->choice_label : ""); break; case PROP_CHOICE_CHOSEN: g_value_set_boolean (value, self->choice_chosen); break; case PROP_PASSWORD_NEW: g_value_set_boolean (value, self->password_new); break; case PROP_PASSWORD_STRENGTH: g_value_set_int (value, self->password_strength); break; case PROP_CALLER_WINDOW: g_value_set_string (value, ""); break; case PROP_CONTINUE_LABEL: g_value_set_string (value, self->continue_label); break; case PROP_CANCEL_LABEL: g_value_set_string (value, self->cancel_label); break; case PROP_PASSWORD_VISIBLE: g_value_set_boolean (value, self->mode == PROMPTING_FOR_PASSWORD); break; case PROP_CONFIRM_VISIBLE: g_value_set_boolean (value, self->password_new && self->mode == PROMPTING_FOR_PASSWORD); break; case PROP_WARNING_VISIBLE: g_value_set_boolean (value, self->warning && self->warning[0]); break; case PROP_CHOICE_VISIBLE: g_value_set_boolean (value, self->choice_label && self->choice_label[0]); break; case PROP_PASSWORD_ACTOR: g_value_set_object (value, shell_keyring_prompt_get_password_actor (self)); break; case PROP_CONFIRM_ACTOR: g_value_set_object (value, shell_keyring_prompt_get_confirm_actor (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, prop_id, pspec); break; } } static void shell_keyring_prompt_dispose (GObject *obj) { ShellKeyringPrompt *self = SHELL_KEYRING_PROMPT (obj); if (self->shown) gcr_prompt_close (GCR_PROMPT (self)); if (self->task) shell_keyring_prompt_cancel (self); g_assert (self->task == NULL); shell_keyring_prompt_set_password_actor (self, NULL); shell_keyring_prompt_set_confirm_actor (self, NULL); G_OBJECT_CLASS (shell_keyring_prompt_parent_class)->dispose (obj); } static void shell_keyring_prompt_finalize (GObject *obj) { ShellKeyringPrompt *self = SHELL_KEYRING_PROMPT (obj); g_free (self->title); g_free (self->message); g_free (self->description); g_free (self->warning); g_free (self->choice_label); g_free (self->continue_label); g_free (self->cancel_label); G_OBJECT_CLASS (shell_keyring_prompt_parent_class)->finalize (obj); } static void shell_keyring_prompt_class_init (ShellKeyringPromptClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); gobject_class->get_property = shell_keyring_prompt_get_property; gobject_class->set_property = shell_keyring_prompt_set_property; gobject_class->dispose = shell_keyring_prompt_dispose; gobject_class->finalize = shell_keyring_prompt_finalize; g_object_class_override_property (gobject_class, PROP_TITLE, "title"); g_object_class_override_property (gobject_class, PROP_MESSAGE, "message"); g_object_class_override_property (gobject_class, PROP_DESCRIPTION, "description"); g_object_class_override_property (gobject_class, PROP_WARNING, "warning"); g_object_class_override_property (gobject_class, PROP_PASSWORD_NEW, "password-new"); g_object_class_override_property (gobject_class, PROP_PASSWORD_STRENGTH, "password-strength"); g_object_class_override_property (gobject_class, PROP_CHOICE_LABEL, "choice-label"); g_object_class_override_property (gobject_class, PROP_CHOICE_CHOSEN, "choice-chosen"); g_object_class_override_property (gobject_class, PROP_CALLER_WINDOW, "caller-window"); g_object_class_override_property (gobject_class, PROP_CONTINUE_LABEL, "continue-label"); g_object_class_override_property (gobject_class, PROP_CANCEL_LABEL, "cancel-label"); /** * ShellKeyringPrompt:password-visible: * * Whether the password entry is visible or not. */ props[PROP_PASSWORD_VISIBLE] = g_param_spec_boolean ("password-visible", NULL, NULL, FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); /** * ShellKeyringPrompt:confirm-visible: * * Whether the password confirm entry is visible or not. */ props[PROP_CONFIRM_VISIBLE] = g_param_spec_boolean ("confirm-visible", NULL, NULL, FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); /** * ShellKeyringPrompt:warning-visible: * * Whether the warning label is visible or not. */ props[PROP_WARNING_VISIBLE] = g_param_spec_boolean ("warning-visible", NULL, NULL, FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); /** * ShellKeyringPrompt:choice-visible: * * Whether the choice check box is visible or not. */ props[PROP_CHOICE_VISIBLE] = g_param_spec_boolean ("choice-visible", NULL, NULL, FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); /** * ShellKeyringPrompt:password-actor: * * Text field for password */ props[PROP_PASSWORD_ACTOR] = g_param_spec_object ("password-actor", NULL, NULL, CLUTTER_TYPE_TEXT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); /** * ShellKeyringPrompt:confirm-actor: * * Text field for confirmation password */ props[PROP_CONFIRM_ACTOR] = g_param_spec_object ("confirm-actor", NULL, NULL, CLUTTER_TYPE_TEXT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (gobject_class, N_PROPS, props); signals[SIGNAL_SHOW_PASSWORD] = g_signal_new ("show-password", G_TYPE_FROM_CLASS (klass), 0, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); signals[SIGNAL_SHOW_CONFIRM] = g_signal_new ("show-confirm", G_TYPE_FROM_CLASS (klass), 0, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); } static void shell_keyring_prompt_password_async (GcrPrompt *prompt, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { ShellKeyringPrompt *self = SHELL_KEYRING_PROMPT (prompt); GObject *obj; if (self->task != NULL) { g_warning ("this prompt can only show one prompt at a time"); return; } self->mode = PROMPTING_FOR_PASSWORD; self->task = g_task_new (self, NULL, callback, user_data); g_task_set_source_tag (self->task, shell_keyring_prompt_password_async); obj = G_OBJECT (self); g_object_notify (obj, "password-visible"); g_object_notify (obj, "confirm-visible"); g_object_notify (obj, "warning-visible"); g_object_notify (obj, "choice-visible"); self->shown = TRUE; g_signal_emit (self, signals[SIGNAL_SHOW_PASSWORD], 0); } static const gchar * shell_keyring_prompt_password_finish (GcrPrompt *prompt, GAsyncResult *result, GError **error) { g_return_val_if_fail (g_task_get_source_object (G_TASK (result)) == prompt, NULL); g_return_val_if_fail (g_async_result_is_tagged (result, shell_keyring_prompt_password_async), NULL); return g_task_propagate_pointer (G_TASK (result), error); } static void shell_keyring_prompt_confirm_async (GcrPrompt *prompt, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { ShellKeyringPrompt *self = SHELL_KEYRING_PROMPT (prompt); GObject *obj; if (self->task != NULL) { g_warning ("this prompt is already prompting"); return; } self->mode = PROMPTING_FOR_CONFIRM; self->task = g_task_new (self, NULL, callback, user_data); g_task_set_source_tag (self->task, shell_keyring_prompt_confirm_async); obj = G_OBJECT (self); g_object_notify (obj, "password-visible"); g_object_notify (obj, "confirm-visible"); g_object_notify (obj, "warning-visible"); g_object_notify (obj, "choice-visible"); self->shown = TRUE; g_signal_emit (self, signals[SIGNAL_SHOW_CONFIRM], 0); } static GcrPromptReply shell_keyring_prompt_confirm_finish (GcrPrompt *prompt, GAsyncResult *result, GError **error) { GTask *task = G_TASK (result); gssize res; g_return_val_if_fail (g_task_get_source_object (task) == prompt, GCR_PROMPT_REPLY_CANCEL); g_return_val_if_fail (g_async_result_is_tagged (result, shell_keyring_prompt_confirm_async), GCR_PROMPT_REPLY_CANCEL); res = g_task_propagate_int (task, error); return res == -1 ? GCR_PROMPT_REPLY_CANCEL : (GcrPromptReply)res; } static void shell_keyring_prompt_close (GcrPrompt *prompt) { ShellKeyringPrompt *self = SHELL_KEYRING_PROMPT (prompt); /* * We expect keyring.js to connect to this signal and do the * actual work of closing the prompt. */ self->shown = FALSE; } static void shell_keyring_prompt_iface (GcrPromptInterface *iface) { iface->prompt_password_async = shell_keyring_prompt_password_async; iface->prompt_password_finish = shell_keyring_prompt_password_finish; iface->prompt_confirm_async = shell_keyring_prompt_confirm_async; iface->prompt_confirm_finish = shell_keyring_prompt_confirm_finish; iface->prompt_close = shell_keyring_prompt_close; } /** * shell_keyring_prompt_new: * * Create new internal prompt base * * Returns: (transfer full): new internal prompt */ ShellKeyringPrompt * shell_keyring_prompt_new (void) { return g_object_new (SHELL_TYPE_KEYRING_PROMPT, NULL); } /** * shell_keyring_prompt_get_password_actor: * @self: the internal prompt * * Get the prompt password text actor * * Returns: (transfer none) (nullable): the password actor */ ClutterText * shell_keyring_prompt_get_password_actor (ShellKeyringPrompt *self) { g_return_val_if_fail (SHELL_IS_KEYRING_PROMPT (self), NULL); return self->password_actor; } /** * shell_keyring_prompt_get_confirm_actor: * @self: the internal prompt * * Get the prompt password text actor * * Returns: (transfer none) (nullable): the password actor */ ClutterText * shell_keyring_prompt_get_confirm_actor (ShellKeyringPrompt *self) { g_return_val_if_fail (SHELL_IS_KEYRING_PROMPT (self), NULL); return self->confirm_actor; } static guint calculate_password_strength (const gchar *password) { int upper, lower, digit, misc; gdouble pwstrength; int length, i; /* * This code is based on the Master Password dialog in Firefox * (pref-masterpass.js) * Original code triple-licensed under the MPL, GPL, and LGPL * so is license-compatible with this file */ length = strlen (password); /* Always return 0 for empty passwords */ if (length == 0) return 0; upper = 0; lower = 0; digit = 0; misc = 0; for (i = 0; i < length ; i++) { if (g_ascii_isdigit (password[i])) digit++; else if (g_ascii_islower (password[i])) lower++; else if (g_ascii_isupper (password[i])) upper++; else misc++; } if (length > 5) length = 5; if (digit > 3) digit = 3; if (upper > 3) upper = 3; if (misc > 3) misc = 3; pwstrength = ((length * 1) - 2) + (digit * 1) + (misc * 1.5) + (upper * 1); /* Always return 1+ for non-empty passwords */ if (pwstrength < 1.0) pwstrength = 1.0; if (pwstrength > 10.0) pwstrength = 10.0; return (guint)pwstrength; } static void on_password_changed (ClutterText *text, gpointer user_data) { ShellKeyringPrompt *self = SHELL_KEYRING_PROMPT (user_data); const gchar *password; password = clutter_text_get_text (self->password_actor); self->password_strength = calculate_password_strength (password); g_object_notify (G_OBJECT (self), "password-strength"); } /** * shell_keyring_prompt_set_password_actor: * @self: the internal prompt * @password_actor: (nullable): the password actor * * Set the prompt password text actor */ void shell_keyring_prompt_set_password_actor (ShellKeyringPrompt *self, ClutterText *password_actor) { ClutterTextBuffer *buffer; g_return_if_fail (SHELL_IS_KEYRING_PROMPT (self)); g_return_if_fail (password_actor == NULL || CLUTTER_IS_TEXT (password_actor)); if (self->password_actor == password_actor) return; if (password_actor) { buffer = shell_secure_text_buffer_new (); clutter_text_set_buffer (password_actor, buffer); g_object_unref (buffer); g_signal_connect (password_actor, "text-changed", G_CALLBACK (on_password_changed), self); g_object_ref (password_actor); } if (self->password_actor) { g_signal_handlers_disconnect_by_func (self->password_actor, on_password_changed, self); g_object_unref (self->password_actor); } self->password_actor = password_actor; g_object_notify_by_pspec (G_OBJECT (self), props[PROP_PASSWORD_ACTOR]); } /** * shell_keyring_prompt_set_confirm_actor: * @self: the internal prompt * @confirm_actor: (nullable): the confirm password actor * * Set the prompt password confirmation text actor */ void shell_keyring_prompt_set_confirm_actor (ShellKeyringPrompt *self, ClutterText *confirm_actor) { ClutterTextBuffer *buffer; g_return_if_fail (SHELL_IS_KEYRING_PROMPT (self)); g_return_if_fail (confirm_actor == NULL || CLUTTER_IS_TEXT (confirm_actor)); if (self->confirm_actor == confirm_actor) return; if (confirm_actor) { buffer = shell_secure_text_buffer_new (); clutter_text_set_buffer (confirm_actor, buffer); g_object_unref (buffer); g_object_ref (confirm_actor); } if (self->confirm_actor) g_object_unref (self->confirm_actor); self->confirm_actor = confirm_actor; g_object_notify_by_pspec (G_OBJECT (self), props[PROP_CONFIRM_ACTOR]); } /** * shell_keyring_prompt_complete: * @self: the internal prompt * * Called by the implementation when the prompt completes. There are various * checks done. %TRUE is returned if the prompt actually should complete. * * Returns: whether the prompt completed */ gboolean shell_keyring_prompt_complete (ShellKeyringPrompt *self) { GTask *res; PromptingMode mode; const gchar *password; const gchar *confirm; const gchar *env; g_return_val_if_fail (SHELL_IS_KEYRING_PROMPT (self), FALSE); g_return_val_if_fail (self->mode != PROMPTING_NONE, FALSE); g_return_val_if_fail (self->task != NULL, FALSE); password = clutter_text_get_text (self->password_actor); if (self->mode == PROMPTING_FOR_PASSWORD) { /* Is it a new password? */ if (self->password_new) { confirm = clutter_text_get_text (self->confirm_actor); /* Do the passwords match? */ if (!g_str_equal (password, confirm)) { gcr_prompt_set_warning (GCR_PROMPT (self), _("Passwords do not match")); return FALSE; } /* Don't allow blank passwords if in paranoid mode */ env = g_getenv ("GNOME_KEYRING_PARANOID"); if (env && *env) { gcr_prompt_set_warning (GCR_PROMPT (self), _("Password cannot be blank")); return FALSE; } } self->password_strength = calculate_password_strength (password); g_object_notify (G_OBJECT (self), "password-strength"); } res = self->task; mode = self->mode; self->task = NULL; self->mode = PROMPTING_NONE; if (mode == PROMPTING_FOR_CONFIRM) g_task_return_int (res, (gssize)GCR_PROMPT_REPLY_CONTINUE); else g_task_return_pointer (res, (gpointer)password, NULL); g_object_unref (res); return TRUE; } /** * shell_keyring_prompt_cancel: * @self: the internal prompt * * Called by implementation when the prompt is cancelled. */ void shell_keyring_prompt_cancel (ShellKeyringPrompt *self) { GTask *res; PromptingMode mode; g_return_if_fail (SHELL_IS_KEYRING_PROMPT (self)); /* * If cancelled while not prompting, we should just close the prompt, * the user wants it to go away. */ if (self->mode == PROMPTING_NONE) { if (self->shown) gcr_prompt_close (GCR_PROMPT (self)); return; } g_return_if_fail (self->task != NULL); res = self->task; mode = self->mode; self->task = NULL; self->mode = PROMPTING_NONE; if (mode == PROMPTING_FOR_CONFIRM) g_task_return_int (res, (gssize) GCR_PROMPT_REPLY_CANCEL); else g_task_return_pointer (res, NULL, NULL); g_object_unref (res); } 070701000002A6000081A40000000000000000000000016712993F0000082B000000000000000000000000000000000000002C00000000gnome-shell-47.1/src/shell-keyring-prompt.h/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ /* shell-keyring-prompt.c - prompt handler for gnome-keyring-daemon Copyright (C) 2011 Stefan Walter This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Author: Stef Walter */ #pragma once #include #include #include G_BEGIN_DECLS typedef struct _ShellKeyringPrompt ShellKeyringPrompt; #define SHELL_TYPE_KEYRING_PROMPT (shell_keyring_prompt_get_type ()) G_DECLARE_FINAL_TYPE (ShellKeyringPrompt, shell_keyring_prompt, SHELL, KEYRING_PROMPT, GObject) ShellKeyringPrompt * shell_keyring_prompt_new (void); ClutterText * shell_keyring_prompt_get_password_actor (ShellKeyringPrompt *self); void shell_keyring_prompt_set_password_actor (ShellKeyringPrompt *self, ClutterText *password_actor); ClutterText * shell_keyring_prompt_get_confirm_actor (ShellKeyringPrompt *self); void shell_keyring_prompt_set_confirm_actor (ShellKeyringPrompt *self, ClutterText *confirm_actor); gboolean shell_keyring_prompt_complete (ShellKeyringPrompt *self); void shell_keyring_prompt_cancel (ShellKeyringPrompt *self); G_END_DECLS 070701000002A7000081A40000000000000000000000016712993F00001514000000000000000000000000000000000000002D00000000gnome-shell-47.1/src/shell-mount-operation.c/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ /* * Copyright (C) 2011 Red Hat, Inc. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see . * * Author: Cosimo Cecchi * */ #include "shell-mount-operation.h" /* This is a dummy class; we would like to be able to subclass the * object from JS but we can't yet; the default GMountOperation impl * automatically calls g_mount_operation_reply(UNHANDLED) after an idle, * in interactive methods. We want to handle the reply ourselves * instead, so we just override the default methods with empty ones, * except for ask-password, as we don't want to handle that. * * Also, we need to workaround the fact that gjs doesn't support type * annotations for signals yet (so we can't effectively forward e.g. * the GPid array to JS). * See https://bugzilla.gnome.org/show_bug.cgi?id=645978 */ enum { SHOW_PROCESSES_2, NUM_SIGNALS }; static guint signals[NUM_SIGNALS] = { 0, }; typedef struct _ShellMountOperationPrivate ShellMountOperationPrivate; struct _ShellMountOperation { GMountOperation parent_instance; ShellMountOperationPrivate *priv; }; struct _ShellMountOperationPrivate { GArray *pids; gchar **choices; gchar *message; }; G_DEFINE_TYPE_WITH_PRIVATE (ShellMountOperation, shell_mount_operation, G_TYPE_MOUNT_OPERATION); static void shell_mount_operation_init (ShellMountOperation *self) { self->priv = shell_mount_operation_get_instance_private (self); } static void shell_mount_operation_ask_password (GMountOperation *op, const char *message, const char *default_user, const char *default_domain, GAskPasswordFlags flags) { /* do nothing */ } static void shell_mount_operation_ask_question (GMountOperation *op, const char *message, const char *choices[]) { /* do nothing */ } static void shell_mount_operation_show_processes (GMountOperation *operation, const gchar *message, GArray *processes, const gchar *choices[]) { ShellMountOperation *self = SHELL_MOUNT_OPERATION (operation); if (self->priv->pids != NULL) { g_array_unref (self->priv->pids); self->priv->pids = NULL; } g_free (self->priv->message); g_strfreev (self->priv->choices); /* save the parameters */ self->priv->pids = g_array_ref (processes); self->priv->choices = g_strdupv ((gchar **) choices); self->priv->message = g_strdup (message); g_signal_emit (self, signals[SHOW_PROCESSES_2], 0); } static void shell_mount_operation_finalize (GObject *obj) { ShellMountOperation *self = SHELL_MOUNT_OPERATION (obj); g_strfreev (self->priv->choices); g_free (self->priv->message); if (self->priv->pids != NULL) { g_array_unref (self->priv->pids); self->priv->pids = NULL; } G_OBJECT_CLASS (shell_mount_operation_parent_class)->finalize (obj); } static void shell_mount_operation_class_init (ShellMountOperationClass *klass) { GMountOperationClass *mclass; GObjectClass *oclass; mclass = G_MOUNT_OPERATION_CLASS (klass); mclass->show_processes = shell_mount_operation_show_processes; mclass->ask_question = shell_mount_operation_ask_question; mclass->ask_password = shell_mount_operation_ask_password; oclass = G_OBJECT_CLASS (klass); oclass->finalize = shell_mount_operation_finalize; signals[SHOW_PROCESSES_2] = g_signal_new ("show-processes-2", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 0); } GMountOperation * shell_mount_operation_new (void) { return g_object_new (SHELL_TYPE_MOUNT_OPERATION, NULL); } /** * shell_mount_operation_get_show_processes_pids: * @self: a #ShellMountOperation * * Returns: (transfer full) (element-type GPid): a #GArray */ GArray * shell_mount_operation_get_show_processes_pids (ShellMountOperation *self) { return g_array_ref (self->priv->pids); } /** * shell_mount_operation_get_show_processes_choices: * @self: a #ShellMountOperation * * Returns: (transfer full): */ gchar ** shell_mount_operation_get_show_processes_choices (ShellMountOperation *self) { return g_strdupv (self->priv->choices); } /** * shell_mount_operation_get_show_processes_message: * @self: a #ShellMountOperation * * Returns: (transfer full): */ gchar * shell_mount_operation_get_show_processes_message (ShellMountOperation *self) { return g_strdup (self->priv->message); } 070701000002A8000081A40000000000000000000000016712993F00000570000000000000000000000000000000000000002D00000000gnome-shell-47.1/src/shell-mount-operation.h/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ /* * Copyright (C) 2011 Red Hat, Inc. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see . * * Author: Cosimo Cecchi * */ #pragma once #include G_BEGIN_DECLS #define SHELL_TYPE_MOUNT_OPERATION (shell_mount_operation_get_type ()) G_DECLARE_FINAL_TYPE (ShellMountOperation, shell_mount_operation, SHELL, MOUNT_OPERATION, GMountOperation) GMountOperation *shell_mount_operation_new (void); GArray * shell_mount_operation_get_show_processes_pids (ShellMountOperation *self); gchar ** shell_mount_operation_get_show_processes_choices (ShellMountOperation *self); gchar * shell_mount_operation_get_show_processes_message (ShellMountOperation *self); G_END_DECLS 070701000002A9000081A40000000000000000000000016712993F000076F5000000000000000000000000000000000000002B00000000gnome-shell-47.1/src/shell-network-agent.c/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ /* * Copyright 2011 Red Hat, Inc. * 2011 Giovanni Campagna * 2017 Lubomir Rintel * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * */ #include "config.h" #include #include #include "shell-network-agent.h" enum { SIGNAL_NEW_REQUEST, SIGNAL_CANCEL_REQUEST, SIGNAL_LAST }; static gint signals[SIGNAL_LAST]; typedef struct { GCancellable * cancellable; ShellNetworkAgent *self; gchar *request_id; NMConnection *connection; gchar *setting_name; gchar **hints; NMSecretAgentGetSecretsFlags flags; NMSecretAgentOldGetSecretsFunc callback; gpointer callback_data; GVariantDict *entries; GVariantBuilder builder_vpn; } ShellAgentRequest; struct _ShellNetworkAgentPrivate { /* */ GHashTable *requests; }; G_DEFINE_TYPE_WITH_PRIVATE (ShellNetworkAgent, shell_network_agent, NM_TYPE_SECRET_AGENT_OLD) static const SecretSchema network_agent_schema = { "org.freedesktop.NetworkManager.Connection", SECRET_SCHEMA_DONT_MATCH_NAME, { { SHELL_KEYRING_UUID_TAG, SECRET_SCHEMA_ATTRIBUTE_STRING }, { SHELL_KEYRING_SN_TAG, SECRET_SCHEMA_ATTRIBUTE_STRING }, { SHELL_KEYRING_SK_TAG, SECRET_SCHEMA_ATTRIBUTE_STRING }, { NULL, 0 }, } }; static void shell_agent_request_free (gpointer data) { ShellAgentRequest *request = data; g_cancellable_cancel (request->cancellable); g_object_unref (request->cancellable); g_object_unref (request->self); g_object_unref (request->connection); g_free (request->setting_name); g_strfreev (request->hints); g_clear_pointer (&request->entries, g_variant_dict_unref); g_variant_builder_clear (&request->builder_vpn); g_free (request); } static void shell_agent_request_cancel (ShellAgentRequest *request) { GError *error; ShellNetworkAgent *self; self = request->self; error = g_error_new (NM_SECRET_AGENT_ERROR, NM_SECRET_AGENT_ERROR_AGENT_CANCELED, "Canceled by NetworkManager"); request->callback (NM_SECRET_AGENT_OLD (self), request->connection, NULL, error, request->callback_data); g_signal_emit (self, signals[SIGNAL_CANCEL_REQUEST], 0, request->request_id); g_hash_table_remove (self->priv->requests, request->request_id); g_error_free (error); } static void shell_network_agent_init (ShellNetworkAgent *agent) { ShellNetworkAgentPrivate *priv; priv = agent->priv = shell_network_agent_get_instance_private (agent); priv->requests = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, shell_agent_request_free); } static void shell_network_agent_finalize (GObject *object) { ShellNetworkAgentPrivate *priv = SHELL_NETWORK_AGENT (object)->priv; GError *error; GHashTableIter iter; gpointer key; gpointer value; error = g_error_new (NM_SECRET_AGENT_ERROR, NM_SECRET_AGENT_ERROR_AGENT_CANCELED, "The secret agent is going away"); g_hash_table_iter_init (&iter, priv->requests); while (g_hash_table_iter_next (&iter, &key, &value)) { ShellAgentRequest *request = value; request->callback (NM_SECRET_AGENT_OLD (object), request->connection, NULL, error, request->callback_data); } g_hash_table_destroy (priv->requests); g_error_free (error); G_OBJECT_CLASS (shell_network_agent_parent_class)->finalize (object); } static void request_secrets_from_ui (ShellAgentRequest *request) { g_signal_emit (request->self, signals[SIGNAL_NEW_REQUEST], 0, request->request_id, request->connection, request->setting_name, request->hints, (int)request->flags); } static void check_always_ask_cb (NMSetting *setting, const gchar *key, const GValue *value, GParamFlags flags, gpointer user_data) { gboolean *always_ask = user_data; NMSettingSecretFlags secret_flags = NM_SETTING_SECRET_FLAG_NONE; if (flags & NM_SETTING_PARAM_SECRET) { if (nm_setting_get_secret_flags (setting, key, &secret_flags, NULL)) { if (secret_flags & NM_SETTING_SECRET_FLAG_NOT_SAVED) *always_ask = TRUE; } } } static gboolean has_always_ask (NMSetting *setting) { gboolean always_ask = FALSE; nm_setting_enumerate_values (setting, check_always_ask_cb, &always_ask); return always_ask; } static gboolean is_connection_always_ask (NMConnection *connection) { NMSettingConnection *s_con; const gchar *ctype; NMSetting *setting; /* For the given connection type, check if the secrets for that connection * are always-ask or not. */ s_con = (NMSettingConnection *) nm_connection_get_setting (connection, NM_TYPE_SETTING_CONNECTION); g_assert (s_con); ctype = nm_setting_connection_get_connection_type (s_con); setting = nm_connection_get_setting_by_name (connection, ctype); g_return_val_if_fail (setting != NULL, FALSE); if (has_always_ask (setting)) return TRUE; /* Try type-specific settings too; be a bit paranoid and only consider * secrets from settings relevant to the connection type. */ if (NM_IS_SETTING_WIRELESS (setting)) { setting = nm_connection_get_setting (connection, NM_TYPE_SETTING_WIRELESS_SECURITY); if (setting && has_always_ask (setting)) return TRUE; setting = nm_connection_get_setting (connection, NM_TYPE_SETTING_802_1X); if (setting && has_always_ask (setting)) return TRUE; } else if (NM_IS_SETTING_WIRED (setting)) { setting = nm_connection_get_setting (connection, NM_TYPE_SETTING_PPPOE); if (setting && has_always_ask (setting)) return TRUE; setting = nm_connection_get_setting (connection, NM_TYPE_SETTING_802_1X); if (setting && has_always_ask (setting)) return TRUE; } return FALSE; } static void get_secrets_keyring_cb (GObject *source, GAsyncResult *result, gpointer user_data) { ShellAgentRequest *closure; ShellNetworkAgent *self; ShellNetworkAgentPrivate *priv; GError *secret_error = NULL; GError *error = NULL; GList *items; GList *l; gboolean secrets_found = FALSE; GVariantBuilder builder_setting, builder_connection; g_autoptr (GVariant) setting = NULL; items = secret_service_search_finish (NULL, result, &secret_error); if (g_error_matches (secret_error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) { g_error_free (secret_error); return; } closure = user_data; self = closure->self; priv = self->priv; if (secret_error != NULL) { g_set_error (&error, NM_SECRET_AGENT_ERROR, NM_SECRET_AGENT_ERROR_FAILED, "Internal error while retrieving secrets from the keyring (%s)", secret_error->message); g_error_free (secret_error); closure->callback (NM_SECRET_AGENT_OLD (closure->self), closure->connection, NULL, error, closure->callback_data); goto out; } g_variant_builder_init (&builder_setting, NM_VARIANT_TYPE_SETTING); for (l = items; l; l = g_list_next (l)) { SecretItem *item = l->data; GHashTable *attributes; GHashTableIter iter; const gchar *name, *attribute; SecretValue *secret = secret_item_get_secret (item); /* This can happen if the user denied a request to unlock */ if (secret == NULL) continue; attributes = secret_item_get_attributes (item); g_hash_table_iter_init (&iter, attributes); while (g_hash_table_iter_next (&iter, (gpointer *)&name, (gpointer *)&attribute)) { if (g_strcmp0 (name, SHELL_KEYRING_SK_TAG) == 0) { g_variant_builder_add (&builder_setting, "{sv}", attribute, g_variant_new_string (secret_value_get (secret, NULL))); secrets_found = TRUE; break; } } g_hash_table_unref (attributes); secret_value_unref (secret); } g_list_free_full (items, g_object_unref); setting = g_variant_ref_sink (g_variant_builder_end (&builder_setting)); /* All VPN requests get sent to the VPN's auth dialog, since it knows better * than the agent about what secrets are required. Otherwise, if no secrets * were found and interaction is allowed the ask for some secrets, because * NetworkManager will fail the connection if not secrets are returned * instead of asking again with REQUEST_NEW. */ if (strcmp(closure->setting_name, NM_SETTING_VPN_SETTING_NAME) == 0 || (!secrets_found && (closure->flags & NM_SECRET_AGENT_GET_SECRETS_FLAG_ALLOW_INTERACTION))) { nm_connection_update_secrets (closure->connection, closure->setting_name, setting, NULL); closure->entries = g_variant_dict_new (setting); request_secrets_from_ui (closure); return; } g_variant_builder_init (&builder_connection, NM_VARIANT_TYPE_CONNECTION); g_variant_builder_add (&builder_connection, "{s@a{sv}}", closure->setting_name, setting); closure->callback (NM_SECRET_AGENT_OLD (closure->self), closure->connection, g_variant_builder_end (&builder_connection), NULL, closure->callback_data); out: g_hash_table_remove (priv->requests, closure->request_id); g_clear_error (&error); } static void shell_network_agent_get_secrets (NMSecretAgentOld *agent, NMConnection *connection, const gchar *connection_path, const gchar *setting_name, const gchar **hints, NMSecretAgentGetSecretsFlags flags, NMSecretAgentOldGetSecretsFunc callback, gpointer callback_data) { ShellNetworkAgent *self = SHELL_NETWORK_AGENT (agent); ShellAgentRequest *request; GHashTable *attributes; char *request_id; request_id = g_strdup_printf ("%s/%s", connection_path, setting_name); if ((request = g_hash_table_lookup (self->priv->requests, request_id)) != NULL) { /* We already have a request pending for this (connection, setting) * Cancel it before starting the new one. * This will also free the request structure and associated resources. */ shell_agent_request_cancel (request); } request = g_new0 (ShellAgentRequest, 1); request->self = g_object_ref (self); request->cancellable = g_cancellable_new (); request->connection = g_object_ref (connection); request->setting_name = g_strdup (setting_name); request->hints = g_strdupv ((gchar **)hints); request->flags = flags; request->callback = callback; request->callback_data = callback_data; request->request_id = request_id; g_hash_table_replace (self->priv->requests, request->request_id, request); g_variant_builder_init (&request->builder_vpn, G_VARIANT_TYPE ("a{ss}")); if ((flags & NM_SECRET_AGENT_GET_SECRETS_FLAG_REQUEST_NEW) || ((flags & NM_SECRET_AGENT_GET_SECRETS_FLAG_ALLOW_INTERACTION) && is_connection_always_ask (request->connection))) { request->entries = g_variant_dict_new (NULL); request_secrets_from_ui (request); return; } attributes = secret_attributes_build (&network_agent_schema, SHELL_KEYRING_UUID_TAG, nm_connection_get_uuid (connection), SHELL_KEYRING_SN_TAG, setting_name, NULL); secret_service_search (NULL, &network_agent_schema, attributes, SECRET_SEARCH_ALL | SECRET_SEARCH_UNLOCK | SECRET_SEARCH_LOAD_SECRETS, request->cancellable, get_secrets_keyring_cb, request); g_hash_table_unref (attributes); } void shell_network_agent_add_vpn_secret (ShellNetworkAgent *self, gchar *request_id, gchar *setting_key, gchar *setting_value) { ShellNetworkAgentPrivate *priv; ShellAgentRequest *request; g_return_if_fail (SHELL_IS_NETWORK_AGENT (self)); priv = self->priv; request = g_hash_table_lookup (priv->requests, request_id); g_return_if_fail (request != NULL); g_variant_builder_add (&request->builder_vpn, "{ss}", setting_key, setting_value); } void shell_network_agent_set_password (ShellNetworkAgent *self, gchar *request_id, gchar *setting_key, gchar *setting_value) { ShellNetworkAgentPrivate *priv; ShellAgentRequest *request; g_return_if_fail (SHELL_IS_NETWORK_AGENT (self)); priv = self->priv; request = g_hash_table_lookup (priv->requests, request_id); g_return_if_fail (request != NULL); g_variant_dict_insert (request->entries, setting_key, "s", setting_value); } void shell_network_agent_respond (ShellNetworkAgent *self, gchar *request_id, ShellNetworkAgentResponse response) { ShellNetworkAgentPrivate *priv; ShellAgentRequest *request; GVariantBuilder builder_connection; GVariant *vpn_secrets, *setting; g_return_if_fail (SHELL_IS_NETWORK_AGENT (self)); priv = self->priv; request = g_hash_table_lookup (priv->requests, request_id); g_return_if_fail (request != NULL); if (response == SHELL_NETWORK_AGENT_USER_CANCELED) { GError *error = g_error_new (NM_SECRET_AGENT_ERROR, NM_SECRET_AGENT_ERROR_USER_CANCELED, "Network dialog was canceled by the user"); request->callback (NM_SECRET_AGENT_OLD (self), request->connection, NULL, error, request->callback_data); g_error_free (error); g_hash_table_remove (priv->requests, request_id); return; } if (response == SHELL_NETWORK_AGENT_INTERNAL_ERROR) { GError *error = g_error_new (NM_SECRET_AGENT_ERROR, NM_SECRET_AGENT_ERROR_FAILED, "An internal error occurred while processing the request."); request->callback (NM_SECRET_AGENT_OLD (self), request->connection, NULL, error, request->callback_data); g_error_free (error); g_hash_table_remove (priv->requests, request_id); return; } /* response == SHELL_NETWORK_AGENT_CONFIRMED */ /* VPN secrets are stored as a hash of secrets in a single setting */ vpn_secrets = g_variant_builder_end (&request->builder_vpn); if (g_variant_n_children (vpn_secrets)) g_variant_dict_insert_value (request->entries, NM_SETTING_VPN_SECRETS, vpn_secrets); else g_variant_unref (vpn_secrets); setting = g_variant_dict_end (request->entries); /* Save any updated secrets */ if ((request->flags & NM_SECRET_AGENT_GET_SECRETS_FLAG_ALLOW_INTERACTION) || (request->flags & NM_SECRET_AGENT_GET_SECRETS_FLAG_REQUEST_NEW)) { NMConnection *dup = nm_simple_connection_new_clone (request->connection); nm_connection_update_secrets (dup, request->setting_name, setting, NULL); nm_secret_agent_old_save_secrets (NM_SECRET_AGENT_OLD (self), dup, NULL, NULL); g_object_unref (dup); } g_variant_builder_init (&builder_connection, NM_VARIANT_TYPE_CONNECTION); g_variant_builder_add (&builder_connection, "{s@a{sv}}", request->setting_name, setting); request->callback (NM_SECRET_AGENT_OLD (self), request->connection, g_variant_builder_end (&builder_connection), NULL, request->callback_data); g_hash_table_remove (priv->requests, request_id); } static void search_vpn_plugin (GTask *task, gpointer object, gpointer task_data, GCancellable *cancellable) { NMVpnPluginInfo *info = NULL; char *service = task_data; info = nm_vpn_plugin_info_new_search_file (NULL, service); if (info) { g_task_return_pointer (task, info, g_object_unref); } else { g_task_return_new_error (task, G_IO_ERROR, G_IO_ERROR_NOT_FOUND, "No plugin for %s", service); } } void shell_network_agent_search_vpn_plugin (ShellNetworkAgent *self, const char *service, GAsyncReadyCallback callback, gpointer user_data) { g_autoptr(GTask) task = NULL; g_return_if_fail (SHELL_IS_NETWORK_AGENT (self)); g_return_if_fail (service != NULL); task = g_task_new (self, NULL, callback, user_data); g_task_set_source_tag (task, shell_network_agent_search_vpn_plugin); g_task_set_task_data (task, g_strdup (service), g_free); g_task_run_in_thread (task, search_vpn_plugin); } /** * shell_network_agent_search_vpn_plugin_finish: * * Returns: (nullable) (transfer full): The found plugin or %NULL */ NMVpnPluginInfo * shell_network_agent_search_vpn_plugin_finish (ShellNetworkAgent *self, GAsyncResult *result, GError **error) { g_return_val_if_fail (SHELL_IS_NETWORK_AGENT (self), NULL); g_return_val_if_fail (G_IS_TASK (result), NULL); return g_task_propagate_pointer (G_TASK (result), error); } static void shell_network_agent_cancel_get_secrets (NMSecretAgentOld *agent, const gchar *connection_path, const gchar *setting_name) { ShellNetworkAgent *self = SHELL_NETWORK_AGENT (agent); ShellNetworkAgentPrivate *priv = self->priv; gchar *request_id; ShellAgentRequest *request; request_id = g_strdup_printf ("%s/%s", connection_path, setting_name); request = g_hash_table_lookup (priv->requests, request_id); g_free (request_id); if (!request) { /* We've already sent the result, but the caller cancelled the * operation before receiving that result. */ return; } shell_agent_request_cancel (request); } /************************* saving of secrets ****************************************/ static GHashTable * create_keyring_add_attr_list (NMConnection *connection, const gchar *connection_uuid, const gchar *connection_id, const gchar *setting_name, const gchar *setting_key, gchar **out_display_name) { NMSettingConnection *s_con; if (connection) { s_con = (NMSettingConnection *) nm_connection_get_setting (connection, NM_TYPE_SETTING_CONNECTION); g_return_val_if_fail (s_con != NULL, NULL); connection_uuid = nm_setting_connection_get_uuid (s_con); connection_id = nm_setting_connection_get_id (s_con); } g_return_val_if_fail (connection_uuid != NULL, NULL); g_return_val_if_fail (connection_id != NULL, NULL); g_return_val_if_fail (setting_name != NULL, NULL); g_return_val_if_fail (setting_key != NULL, NULL); if (out_display_name) { *out_display_name = g_strdup_printf ("Network secret for %s/%s/%s", connection_id, setting_name, setting_key); } return secret_attributes_build (&network_agent_schema, SHELL_KEYRING_UUID_TAG, connection_uuid, SHELL_KEYRING_SN_TAG, setting_name, SHELL_KEYRING_SK_TAG, setting_key, NULL); } typedef struct { /* Sort of ref count, indicates the number of secrets we still need to save */ gint n_secrets; NMSecretAgentOld *self; NMConnection *connection; gpointer callback; gpointer callback_data; } KeyringRequest; static void keyring_request_free (KeyringRequest *r) { g_object_unref (r->self); g_object_unref (r->connection); g_free (r); } static void save_secret_cb (GObject *source, GAsyncResult *result, gpointer user_data) { KeyringRequest *call = user_data; NMSecretAgentOldSaveSecretsFunc callback = call->callback; call->n_secrets--; if (call->n_secrets == 0) { if (callback) callback (call->self, call->connection, NULL, call->callback_data); keyring_request_free (call); } } static void save_one_secret (KeyringRequest *r, NMSetting *setting, const gchar *key, const gchar *secret, const gchar *display_name) { GHashTable *attrs; gchar *alt_display_name = NULL; const gchar *setting_name; NMSettingSecretFlags secret_flags = NM_SETTING_SECRET_FLAG_NONE; /* Only save agent-owned secrets (not system-owned or always-ask) */ nm_setting_get_secret_flags (setting, key, &secret_flags, NULL); if (secret_flags != NM_SETTING_SECRET_FLAG_AGENT_OWNED) return; setting_name = nm_setting_get_name (setting); g_assert (setting_name); attrs = create_keyring_add_attr_list (r->connection, NULL, NULL, setting_name, key, display_name ? NULL : &alt_display_name); g_assert (attrs); r->n_secrets++; secret_password_storev (&network_agent_schema, attrs, SECRET_COLLECTION_DEFAULT, display_name ? display_name : alt_display_name, secret, NULL, save_secret_cb, r); g_hash_table_unref (attrs); g_free (alt_display_name); } static void vpn_secret_iter_cb (const gchar *key, const gchar *secret, gpointer user_data) { KeyringRequest *r = user_data; NMSetting *setting; const gchar *service_name, *id; gchar *display_name; if (secret && strlen (secret)) { setting = nm_connection_get_setting (r->connection, NM_TYPE_SETTING_VPN); g_assert (setting); service_name = nm_setting_vpn_get_service_type (NM_SETTING_VPN (setting)); g_assert (service_name); id = nm_connection_get_id (r->connection); g_assert (id); display_name = g_strdup_printf ("VPN %s secret for %s/%s/" NM_SETTING_VPN_SETTING_NAME, key, id, service_name); save_one_secret (r, setting, key, secret, display_name); g_free (display_name); } } static void write_one_secret_to_keyring (NMSetting *setting, const gchar *key, const GValue *value, GParamFlags flags, gpointer user_data) { KeyringRequest *r = user_data; const gchar *secret; /* Non-secrets obviously don't get saved in the keyring */ if (!(flags & NM_SETTING_PARAM_SECRET)) return; if (NM_IS_SETTING_VPN (setting) && (g_strcmp0 (key, NM_SETTING_VPN_SECRETS) == 0)) { /* Process VPN secrets specially since it's a hash of secrets, not just one */ nm_setting_vpn_foreach_secret (NM_SETTING_VPN (setting), vpn_secret_iter_cb, r); } else { if (!G_VALUE_HOLDS_STRING (value)) return; secret = g_value_get_string (value); if (secret && strlen (secret)) save_one_secret (r, setting, key, secret, NULL); } } static void save_delete_cb (NMSecretAgentOld *agent, NMConnection *connection, GError *error, gpointer user_data) { KeyringRequest *r = user_data; /* Ignore errors; now save all new secrets */ nm_connection_for_each_setting_value (connection, write_one_secret_to_keyring, r); /* If no secrets actually got saved there may be nothing to do so * try to complete the request here. If there were secrets to save the * request will get completed when those keyring calls return (at the next * mainloop iteration). */ if (r->n_secrets == 0) { if (r->callback) ((NMSecretAgentOldSaveSecretsFunc)r->callback) (agent, connection, NULL, r->callback_data); keyring_request_free (r); } } static void shell_network_agent_save_secrets (NMSecretAgentOld *agent, NMConnection *connection, const gchar *connection_path, NMSecretAgentOldSaveSecretsFunc callback, gpointer callback_data) { KeyringRequest *r; r = g_new (KeyringRequest, 1); r->n_secrets = 0; r->self = g_object_ref (agent); r->connection = g_object_ref (connection); r->callback = callback; r->callback_data = callback_data; /* First delete any existing items in the keyring */ nm_secret_agent_old_delete_secrets (agent, connection, save_delete_cb, r); } static void delete_items_cb (GObject *source, GAsyncResult *result, gpointer user_data) { KeyringRequest *r = user_data; GError *secret_error = NULL; GError *error = NULL; NMSecretAgentOldDeleteSecretsFunc callback = r->callback; secret_password_clear_finish (result, &secret_error); if (secret_error != NULL) { error = g_error_new (NM_SECRET_AGENT_ERROR, NM_SECRET_AGENT_ERROR_FAILED, "The request could not be completed. Keyring result: %s", secret_error->message); g_error_free (secret_error); } callback (r->self, r->connection, error, r->callback_data); g_clear_error (&error); keyring_request_free (r); } static void shell_network_agent_delete_secrets (NMSecretAgentOld *agent, NMConnection *connection, const gchar *connection_path, NMSecretAgentOldDeleteSecretsFunc callback, gpointer callback_data) { KeyringRequest *r; NMSettingConnection *s_con; const gchar *uuid; r = g_new (KeyringRequest, 1); r->n_secrets = 0; /* ignored by delete secrets calls */ r->self = g_object_ref (agent); r->connection = g_object_ref (connection); r->callback = callback; r->callback_data = callback_data; s_con = (NMSettingConnection *) nm_connection_get_setting (connection, NM_TYPE_SETTING_CONNECTION); g_assert (s_con); uuid = nm_setting_connection_get_uuid (s_con); g_assert (uuid); secret_password_clear (&network_agent_schema, NULL, delete_items_cb, r, SHELL_KEYRING_UUID_TAG, uuid, NULL); } void shell_network_agent_class_init (ShellNetworkAgentClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); NMSecretAgentOldClass *agent_class = NM_SECRET_AGENT_OLD_CLASS (klass); gobject_class->finalize = shell_network_agent_finalize; agent_class->get_secrets = shell_network_agent_get_secrets; agent_class->cancel_get_secrets = shell_network_agent_cancel_get_secrets; agent_class->save_secrets = shell_network_agent_save_secrets; agent_class->delete_secrets = shell_network_agent_delete_secrets; signals[SIGNAL_NEW_REQUEST] = g_signal_new ("new-request", G_TYPE_FROM_CLASS (klass), 0, /* flags */ 0, /* class offset */ NULL, /* accumulator */ NULL, /* accu_data */ NULL, /* marshaller */ G_TYPE_NONE, /* return */ 5, /* n_params */ G_TYPE_STRING, NM_TYPE_CONNECTION, G_TYPE_STRING, G_TYPE_STRV, G_TYPE_INT); signals[SIGNAL_CANCEL_REQUEST] = g_signal_new ("cancel-request", G_TYPE_FROM_CLASS (klass), 0, /* flags */ 0, /* class offset */ NULL, /* accumulator */ NULL, /* accu_data */ NULL, /* marshaller */ G_TYPE_NONE, 1, /* n_params */ G_TYPE_STRING); } 070701000002AA000081A40000000000000000000000016712993F00000D0E000000000000000000000000000000000000002B00000000gnome-shell-47.1/src/shell-network-agent.h/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ #pragma once #include #include #include #include G_BEGIN_DECLS typedef enum { SHELL_NETWORK_AGENT_CONFIRMED, SHELL_NETWORK_AGENT_USER_CANCELED, SHELL_NETWORK_AGENT_INTERNAL_ERROR } ShellNetworkAgentResponse; typedef struct _ShellNetworkAgent ShellNetworkAgent; typedef struct _ShellNetworkAgentClass ShellNetworkAgentClass; typedef struct _ShellNetworkAgentPrivate ShellNetworkAgentPrivate; #define SHELL_TYPE_NETWORK_AGENT (shell_network_agent_get_type ()) #define SHELL_NETWORK_AGENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SHELL_TYPE_NETWORK_AGENT, ShellNetworkAgent)) #define SHELL_IS_NETWORK_AGENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SHELL_TYPE_NETWORK_AGENT)) #define SHELL_NETWORK_AGENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SHELL_TYPE_NETWORK_AGENT, ShellNetworkAgentClass)) #define SHELL_IS_NETWORK_AGENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SHELL_TYPE_NETWORK_AGENT)) #define SHELL_NETWORK_AGENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SHELL_TYPE_NETWORK_AGENT, ShellNetworkAgentClass)) struct _ShellNetworkAgent { /*< private >*/ NMSecretAgentOld parent_instance; ShellNetworkAgentPrivate *priv; }; struct _ShellNetworkAgentClass { /*< private >*/ NMSecretAgentOldClass parent_class; }; /* used by SHELL_TYPE_NETWORK_AGENT */ GType shell_network_agent_get_type (void); void shell_network_agent_add_vpn_secret (ShellNetworkAgent *self, gchar *request_id, gchar *setting_key, gchar *setting_value); void shell_network_agent_set_password (ShellNetworkAgent *self, gchar *request_id, gchar *setting_key, gchar *setting_value); void shell_network_agent_respond (ShellNetworkAgent *self, gchar *request_id, ShellNetworkAgentResponse response); void shell_network_agent_search_vpn_plugin (ShellNetworkAgent *self, const char *service, GAsyncReadyCallback callback, gpointer user_data); NMVpnPluginInfo *shell_network_agent_search_vpn_plugin_finish (ShellNetworkAgent *self, GAsyncResult *result, GError **error); /* If these are kept in sync with nm-applet, secrets will be shared */ #define SHELL_KEYRING_UUID_TAG "connection-uuid" #define SHELL_KEYRING_SN_TAG "setting-name" #define SHELL_KEYRING_SK_TAG "setting-key" G_END_DECLS 070701000002AB000081A40000000000000000000000016712993F0000344B000000000000000000000000000000000000002900000000gnome-shell-47.1/src/shell-perf-helper.c/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ /* gnome-shell-perf-helper: a program to create windows for performance tests * * Running performance tests with whatever windows a user has open results * in unreliable results, so instead we hide all other windows and talk * to this program over D-Bus to create just the windows we want. */ #include "config.h" #include #include #define BUS_NAME "org.gnome.Shell.PerfHelper" static const gchar introspection_xml[] = "" " " " " " " " " " " " " " " " " " " " " " " " " " " ""; static const char application_css[] = ".solid { background: rgb(255,255,255); }" ".alpha { background: rgba(255,255,255,0.5); }" ""; static int opt_idle_timeout = 30; static GOptionEntry opt_entries[] = { { "idle-timeout", 'r', 0, G_OPTION_ARG_INT, &opt_idle_timeout, "Exit after N seconds", "N" }, { NULL } }; #define PERF_HELPER_TYPE_APP (perf_helper_app_get_type ()) G_DECLARE_FINAL_TYPE (PerfHelperApp, perf_helper_app, PERF_HELPER, APP, GtkApplication) struct _PerfHelperApp { GtkApplication parent; guint timeout_id; GList *wait_windows_invocations; }; G_DEFINE_TYPE (PerfHelperApp, perf_helper_app, GTK_TYPE_APPLICATION); #define PERF_HELPER_TYPE_WINDOW (perf_helper_window_get_type ()) G_DECLARE_FINAL_TYPE (PerfHelperWindow, perf_helper_window, PERF_HELPER, WINDOW, GtkApplicationWindow) struct _PerfHelperWindow { GtkApplicationWindow parent; guint mapped : 1; guint exposed : 1; guint pending : 1; }; G_DEFINE_TYPE (PerfHelperWindow, perf_helper_window, GTK_TYPE_APPLICATION_WINDOW); #define PERF_HELPER_TYPE_WINDOW_CONTENT (perf_helper_window_content_get_type ()) G_DECLARE_FINAL_TYPE (PerfHelperWindowContent, perf_helper_window_content, PERF_HELPER, WINDOW_CONTENT, GtkWidget) struct _PerfHelperWindowContent { GtkWidget parent; guint redraws : 1; gint64 start_time; gint64 time; }; G_DEFINE_TYPE (PerfHelperWindowContent, perf_helper_window_content, GTK_TYPE_WIDGET); static void destroy_windows (PerfHelperApp *app); static void finish_wait_windows (PerfHelperApp *app); static void check_finish_wait_windows (PerfHelperApp *app); static gboolean on_timeout (gpointer data) { PerfHelperApp *app = data; app->timeout_id = 0; destroy_windows (app); g_application_quit (G_APPLICATION (app)); return FALSE; } static void establish_timeout (PerfHelperApp *app) { g_clear_handle_id (&app->timeout_id, g_source_remove); app->timeout_id = g_timeout_add (opt_idle_timeout * 1000, on_timeout, app); g_source_set_name_by_id (app->timeout_id, "[gnome-shell] on_timeout"); } static void destroy_windows (PerfHelperApp *app) { GtkApplication *gtk_app = GTK_APPLICATION (app); GtkWindow *window; while ((window = gtk_application_get_active_window (gtk_app))) gtk_window_destroy (window); check_finish_wait_windows (app); } static void on_surface_mapped (GObject *object, GParamSpec *pspec, gpointer user_data) { PerfHelperWindow *window = user_data; window->mapped = TRUE; } static void perf_helper_window_realize (GtkWidget *widget) { GdkSurface *surface; GTK_WIDGET_CLASS (perf_helper_window_parent_class)->realize (widget); surface = gtk_native_get_surface (gtk_widget_get_native (widget)); g_signal_connect_object (surface, "notify::mapped", G_CALLBACK (on_surface_mapped), widget, G_CONNECT_DEFAULT); } static void perf_helper_window_snapshot (GtkWidget *widget, GtkSnapshot *snapshot) { PerfHelperWindow *window = PERF_HELPER_WINDOW (widget); GTK_WIDGET_CLASS (perf_helper_window_parent_class)->snapshot (widget, snapshot); window->exposed = TRUE; if (window->exposed && window->mapped && window->pending) { window->pending = FALSE; check_finish_wait_windows (PERF_HELPER_APP (g_application_get_default ())); } } #define LINE_WIDTH 10 #define MARGIN 40 static void perf_helper_window_content_snapshot (GtkWidget *widget, GtkSnapshot *snapshot) { PerfHelperWindowContent *content = PERF_HELPER_WINDOW_CONTENT (widget); GdkRGBA line_color; graphene_rect_t bounds; int width, height; double x_offset, y_offset; GTK_WIDGET_CLASS (perf_helper_window_content_parent_class)->snapshot (widget, snapshot); gdk_rgba_parse (&line_color, "red"); width = gtk_widget_get_width (widget); height = gtk_widget_get_height (widget); /* We draw an arbitrary pattern of red lines near the border of the * window to make it more clear than empty windows if something * is drastrically wrong. */ if (content->redraws) { double position = (content->time - content->start_time) / 1000000.; x_offset = 20 * cos (2 * M_PI * position); y_offset = 20 * sin (2 * M_PI * position); } else { x_offset = y_offset = 0; } graphene_rect_init (&bounds, MARGIN + x_offset, 0, LINE_WIDTH, height); gtk_snapshot_append_color (snapshot, &line_color, &bounds); graphene_rect_init (&bounds, width - MARGIN - LINE_WIDTH + x_offset, 0, LINE_WIDTH, height); gtk_snapshot_append_color (snapshot, &line_color, &bounds); graphene_rect_init (&bounds, 0, MARGIN + y_offset, width, LINE_WIDTH); gtk_snapshot_append_color (snapshot, &line_color, &bounds); graphene_rect_init (&bounds, 0, height - MARGIN - LINE_WIDTH + y_offset, width, LINE_WIDTH); gtk_snapshot_append_color (snapshot, &line_color, &bounds); } static gboolean tick_callback (GtkWidget *widget, GdkFrameClock *frame_clock, gpointer user_data) { PerfHelperWindowContent *content = user_data; if (content->start_time < 0) content->start_time = content->time = gdk_frame_clock_get_frame_time (frame_clock); else content->time = gdk_frame_clock_get_frame_time (frame_clock); gtk_widget_queue_draw (widget); return TRUE; } static GtkWidget * perf_helper_window_content_new (gboolean redraws) { PerfHelperWindowContent *content; GtkWidget *widget; content = g_object_new (PERF_HELPER_TYPE_WINDOW_CONTENT, NULL); content->redraws = redraws; widget = GTK_WIDGET (content); if (redraws) gtk_widget_add_tick_callback (widget, tick_callback, content, NULL); return widget; } static void create_window (PerfHelperApp *app, int width, int height, gboolean alpha, gboolean maximized, gboolean redraws, gboolean text_input) { PerfHelperWindow *window; GtkWidget *child; window = g_object_new (PERF_HELPER_TYPE_WINDOW, "application", app, NULL); if (maximized) gtk_window_maximize (GTK_WINDOW (window)); if (text_input) { child = gtk_entry_new (); } else { gtk_widget_add_css_class(GTK_WIDGET (window), alpha ? "alpha" : "solid"); child = perf_helper_window_content_new (redraws); } gtk_window_set_child (GTK_WINDOW (window), child); gtk_widget_set_size_request (GTK_WIDGET (window), width, height); gtk_window_present (GTK_WINDOW (window)); } static void finish_wait_windows (PerfHelperApp *app) { GList *l; for (l = app->wait_windows_invocations; l; l = l->next) g_dbus_method_invocation_return_value (l->data, NULL); g_clear_list (&app->wait_windows_invocations, NULL); } static void check_finish_wait_windows (PerfHelperApp *app) { GList *l; gboolean have_pending = FALSE; for (l = gtk_application_get_windows (GTK_APPLICATION (app)); l; l = l->next) { PerfHelperWindow *window = l->data; if (window->pending) have_pending = TRUE; } if (!have_pending) finish_wait_windows (app); } static void handle_method_call (GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation, gpointer user_data) { PerfHelperApp *app = user_data; /* Push off the idle timeout */ establish_timeout (app); if (g_strcmp0 (method_name, "Exit") == 0) { destroy_windows (app); g_dbus_method_invocation_return_value (invocation, NULL); g_dbus_connection_flush_sync (connection, NULL, NULL); g_application_quit (G_APPLICATION (app)); } else if (g_strcmp0 (method_name, "CreateWindow") == 0) { int width, height; gboolean alpha, maximized, redraws, text_input; g_variant_get (parameters, "(iibbbb)", &width, &height, &alpha, &maximized, &redraws, &text_input); create_window (app, width, height, alpha, maximized, redraws, text_input); g_dbus_method_invocation_return_value (invocation, NULL); } else if (g_strcmp0 (method_name, "WaitWindows") == 0) { app->wait_windows_invocations = g_list_prepend (app->wait_windows_invocations, invocation); check_finish_wait_windows (app); } else if (g_strcmp0 (method_name, "DestroyWindows") == 0) { destroy_windows (app); g_dbus_method_invocation_return_value (invocation, NULL); } } static const GDBusInterfaceVTable interface_vtable = { handle_method_call, NULL, NULL }; static void perf_helper_app_activate (GApplication *app) { } static void perf_helper_app_startup (GApplication *app) { GtkCssProvider *css_provider; G_APPLICATION_CLASS (perf_helper_app_parent_class)->startup (app); css_provider = gtk_css_provider_new (); #if GTK_CHECK_VERSION (4,11,3) gtk_css_provider_load_from_string (css_provider, application_css); #else gtk_css_provider_load_from_data (css_provider, application_css, -1); #endif gtk_style_context_add_provider_for_display (gdk_display_get_default (), GTK_STYLE_PROVIDER (css_provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); } static gboolean perf_helper_app_dbus_register (GApplication *app, GDBusConnection *connection, const char *object_path, GError **error) { GDBusNodeInfo *introspection_data = g_dbus_node_info_new_for_xml (introspection_xml, NULL); g_dbus_connection_register_object (connection, object_path, introspection_data->interfaces[0], &interface_vtable, app, /* user_data */ NULL, /* user_data_free_func */ error); return TRUE; } static void perf_helper_app_init (PerfHelperApp *app) { } static void perf_helper_app_class_init (PerfHelperAppClass *klass) { GApplicationClass *gapp_class = G_APPLICATION_CLASS (klass); gapp_class->activate = perf_helper_app_activate; gapp_class->startup = perf_helper_app_startup; gapp_class->dbus_register = perf_helper_app_dbus_register; } static void perf_helper_window_content_init (PerfHelperWindowContent *content) { content->start_time = -1; } static void perf_helper_window_content_class_init (PerfHelperWindowContentClass *klass) { GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); widget_class->snapshot = perf_helper_window_content_snapshot; } static PerfHelperApp * perf_helper_app_new (void) { GApplicationFlags flags = G_APPLICATION_IS_SERVICE | G_APPLICATION_ALLOW_REPLACEMENT | G_APPLICATION_REPLACE; return g_object_new (PERF_HELPER_TYPE_APP, "application-id", "org.gnome.Shell.PerfHelper", "flags", flags, NULL); } static void perf_helper_window_init (PerfHelperWindow *window) { window->pending = TRUE; } static void perf_helper_window_class_init (PerfHelperWindowClass *klass) { GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); widget_class->realize = perf_helper_window_realize; widget_class->snapshot = perf_helper_window_snapshot; } int main (int argc, char **argv) { PerfHelperApp *app = NULL; /* Since we depend on this, avoid the possibility of lt-gnome-shell-perf-helper */ g_set_prgname ("gnome-shell-perf-helper"); app = perf_helper_app_new (); g_application_set_option_context_summary (G_APPLICATION (app), "Server to create windows for performance testing"); g_application_add_main_option_entries (G_APPLICATION (app), opt_entries); g_application_hold (G_APPLICATION (app)); establish_timeout (app); return g_application_run (G_APPLICATION (app), argc, argv); } 070701000002AC000081A40000000000000000000000016712993F00006C53000000000000000000000000000000000000002600000000gnome-shell-47.1/src/shell-perf-log.c/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ #include "config.h" #include #include "shell-perf-log.h" typedef struct _ShellPerfEvent ShellPerfEvent; typedef struct _ShellPerfStatistic ShellPerfStatistic; typedef struct _ShellPerfStatisticsClosure ShellPerfStatisticsClosure; typedef union _ShellPerfStatisticValue ShellPerfStatisticValue; typedef struct _ShellPerfBlock ShellPerfBlock; /** * SECTION:shell-perf-log * @short_description: Event recorder for performance measurement * * ShellPerfLog provides a way for different parts of the code to * record information for subsequent analysis and interactive * exploration. Events exist of a timestamp, an event ID, and * arguments to the event. * * Emphasis is placed on storing recorded events in a compact * fashion so log recording disturbs the execution of the program * as little as possible, however events should not be recorded * at too fine a granularity - an event that is recorded once * per frame or once per user action is appropriate, an event that * occurs many times per frame is not. * * Arguments are identified by a D-Bus style signature; at the moment * only a limited number of event signatures are supported to * simplify the code. */ struct _ShellPerfLog { GObject parent; GPtrArray *events; GHashTable *events_by_name; GPtrArray *statistics; GHashTable *statistics_by_name; GPtrArray *statistics_closures; GQueue *blocks; gint64 start_time; gint64 last_time; guint statistics_timeout_id; guint enabled : 1; }; struct _ShellPerfEvent { guint16 id; char *name; char *description; char *signature; }; union _ShellPerfStatisticValue { int i; gint64 x; }; struct _ShellPerfStatistic { ShellPerfEvent *event; ShellPerfStatisticValue current_value; ShellPerfStatisticValue last_value; guint initialized : 1; guint recorded : 1; }; struct _ShellPerfStatisticsClosure { ShellPerfStatisticsCallback callback; gpointer user_data; GDestroyNotify notify; }; /* The events in the log are stored in a linked list of fixed size * blocks. * * Note that the power-of-two nature of BLOCK_SIZE here is superficial * since the allocated block has the 'bytes' field and malloc * overhead. The current value is well below the size that will * typically be independently mmapped by the malloc implementation so * it doesn't matter. If we switched to mmapping blocks manually * (perhaps to avoid polluting malloc statistics), we'd want to use a * different value of BLOCK_SIZE. */ #define BLOCK_SIZE 8192 struct _ShellPerfBlock { guint32 bytes; guchar buffer[BLOCK_SIZE]; }; /* Number of milliseconds between periodic statistics collection when * events are enabled. Statistics collection can also be explicitly * triggered. */ #define STATISTIC_COLLECTION_INTERVAL_MS 5000 /* Builtin events */ enum { EVENT_SET_TIME, EVENT_STATISTICS_COLLECTED }; G_DEFINE_TYPE(ShellPerfLog, shell_perf_log, G_TYPE_OBJECT); static gint64 get_time (void) { return g_get_monotonic_time (); } static void shell_perf_log_init (ShellPerfLog *perf_log) { perf_log->events = g_ptr_array_new (); perf_log->events_by_name = g_hash_table_new (g_str_hash, g_str_equal); perf_log->statistics = g_ptr_array_new (); perf_log->statistics_by_name = g_hash_table_new (g_str_hash, g_str_equal); perf_log->statistics_closures = g_ptr_array_new (); perf_log->blocks = g_queue_new (); /* This event is used when timestamp deltas are greater than * fits in a gint32. 0xffffffff microseconds is about 70 minutes, so this * is not going to happen in normal usage. It might happen if performance * logging is enabled some time after starting the shell */ shell_perf_log_define_event (perf_log, "perf.setTime", "", "x"); g_assert (perf_log->events->len == EVENT_SET_TIME + 1); /* The purpose of this event is to allow us to optimize out storing * statistics that haven't changed. We want to mark every time we * collect statistics even if we don't record any individual * statistics so that we can distinguish sudden changes from gradual changes. * * The argument is the number of microseconds that statistics collection * took; we record that since statistics collection could start taking * significant time if we do things like grub around in /proc/ */ shell_perf_log_define_event (perf_log, "perf.statisticsCollected", "Finished collecting statistics", "x"); g_assert (perf_log->events->len == EVENT_STATISTICS_COLLECTED + 1); perf_log->start_time = perf_log->last_time = get_time(); } static void shell_perf_log_class_init (ShellPerfLogClass *class) { } /** * shell_perf_log_get_default: * * Gets the global singleton performance log. This is initially disabled * and must be explicitly enabled with shell_perf_log_set_enabled(). * * Return value: (transfer none): the global singleton performance log */ ShellPerfLog * shell_perf_log_get_default (void) { static ShellPerfLog *perf_log; if (perf_log == NULL) perf_log = g_object_new (SHELL_TYPE_PERF_LOG, NULL); return perf_log; } static gboolean statistics_timeout (gpointer data) { ShellPerfLog *perf_log = data; shell_perf_log_collect_statistics (perf_log); return TRUE; } /** * shell_perf_log_set_enabled: * @perf_log: a #ShellPerfLog * @enabled: whether to record events * * Sets whether events are currently being recorded. */ void shell_perf_log_set_enabled (ShellPerfLog *perf_log, gboolean enabled) { enabled = enabled != FALSE; if (enabled != perf_log->enabled) { perf_log->enabled = enabled; if (enabled) { perf_log->statistics_timeout_id = g_timeout_add (STATISTIC_COLLECTION_INTERVAL_MS, statistics_timeout, perf_log); g_source_set_name_by_id (perf_log->statistics_timeout_id, "[gnome-shell] statistics_timeout"); } else { g_clear_handle_id (&perf_log->statistics_timeout_id, g_source_remove); } } } static ShellPerfEvent * define_event (ShellPerfLog *perf_log, const char *name, const char *description, const char *signature) { ShellPerfEvent *event; if (strcmp (signature, "") != 0 && strcmp (signature, "s") != 0 && strcmp (signature, "i") != 0 && strcmp (signature, "x") != 0) { g_warning ("Only supported event signatures are '', 's', 'i', and 'x'\n"); return NULL; } if (perf_log->events->len == 65536) { g_warning ("Maximum number of events defined\n"); return NULL; } /* We could do stricter validation, but this will break our JSON dumps */ if (strchr (name, '"') != NULL) { g_warning ("Event names can't include '\"'"); return NULL; } if (g_hash_table_lookup (perf_log->events_by_name, name) != NULL) { g_warning ("Duplicate event event for '%s'\n", name); return NULL; } event = g_new (ShellPerfEvent, 1); event->id = perf_log->events->len; event->name = g_strdup (name); event->signature = g_strdup (signature); event->description = g_strdup (description); g_ptr_array_add (perf_log->events, event); g_hash_table_insert (perf_log->events_by_name, event->name, event); return event; } /** * shell_perf_log_define_event: * @perf_log: a #ShellPerfLog * @name: name of the event. This should of the form * '., for example * 'clutter.stagePaintDone'. * @description: human readable description of the event. * @signature: signature defining the arguments that event takes. * This is a string of type characters, using the same characters * as D-Bus or GVariant. Only a very limited number of signatures * are supported: , '', 's', 'i', and 'x'. This mean respectively: * no arguments, one string, one 32-bit integer, and one 64-bit * integer. * * Defines a performance event for later recording. */ void shell_perf_log_define_event (ShellPerfLog *perf_log, const char *name, const char *description, const char *signature) { define_event (perf_log, name, description, signature); } static ShellPerfEvent * lookup_event (ShellPerfLog *perf_log, const char *name, const char *signature) { ShellPerfEvent *event = g_hash_table_lookup (perf_log->events_by_name, name); if (G_UNLIKELY (event == NULL)) { g_warning ("Discarding unknown event '%s'\n", name); return NULL; } if (G_UNLIKELY (strcmp (event->signature, signature) != 0)) { g_warning ("Event '%s'; defined with signature '%s', used with '%s'\n", name, event->signature, signature); return NULL; } return event; } static void record_event (ShellPerfLog *perf_log, gint64 event_time, ShellPerfEvent *event, const guchar *bytes, size_t bytes_len) { ShellPerfBlock *block; size_t total_bytes; guint32 time_delta; guint32 pos; if (!perf_log->enabled) return; total_bytes = sizeof (gint32) + sizeof (gint16) + bytes_len; if (G_UNLIKELY (bytes_len > BLOCK_SIZE || total_bytes > BLOCK_SIZE)) { g_warning ("Discarding oversize event '%s'\n", event->name); return; } if (event_time > perf_log->last_time + G_GINT64_CONSTANT(0xffffffff)) { perf_log->last_time = event_time; record_event (perf_log, event_time, lookup_event (perf_log, "perf.setTime", "x"), (const guchar *)&event_time, sizeof(gint64)); time_delta = 0; } else if (event_time < perf_log->last_time) time_delta = 0; else time_delta = (guint32)(event_time - perf_log->last_time); perf_log->last_time = event_time; if (perf_log->blocks->tail == NULL || total_bytes + ((ShellPerfBlock *)perf_log->blocks->tail->data)->bytes > BLOCK_SIZE) { block = g_new (ShellPerfBlock, 1); block->bytes = 0; g_queue_push_tail (perf_log->blocks, block); } else { block = (ShellPerfBlock *)perf_log->blocks->tail->data; } pos = block->bytes; memcpy (block->buffer + pos, &time_delta, sizeof (guint32)); pos += sizeof (guint32); memcpy (block->buffer + pos, &event->id, sizeof (guint16)); pos += sizeof (guint16); memcpy (block->buffer + pos, bytes, bytes_len); pos += bytes_len; block->bytes = pos; } /** * shell_perf_log_event: * @perf_log: a #ShellPerfLog * @name: name of the event * * Records a performance event with no arguments. */ void shell_perf_log_event (ShellPerfLog *perf_log, const char *name) { ShellPerfEvent *event = lookup_event (perf_log, name, ""); if (G_UNLIKELY (event == NULL)) return; record_event (perf_log, get_time(), event, NULL, 0); } /** * shell_perf_log_event_i: * @perf_log: a #ShellPerfLog * @name: name of the event * @arg: the argument * * Records a performance event with one 32-bit integer argument. */ void shell_perf_log_event_i (ShellPerfLog *perf_log, const char *name, gint32 arg) { ShellPerfEvent *event = lookup_event (perf_log, name, "i"); if (G_UNLIKELY (event == NULL)) return; record_event (perf_log, get_time(), event, (const guchar *)&arg, sizeof (arg)); } /** * shell_perf_log_event_x: * @perf_log: a #ShellPerfLog * @name: name of the event * @arg: the argument * * Records a performance event with one 64-bit integer argument. */ void shell_perf_log_event_x (ShellPerfLog *perf_log, const char *name, gint64 arg) { ShellPerfEvent *event = lookup_event (perf_log, name, "x"); if (G_UNLIKELY (event == NULL)) return; record_event (perf_log, get_time(), event, (const guchar *)&arg, sizeof (arg)); } /** * shell_perf_log_event_s: * @perf_log: a #ShellPerfLog * @name: name of the event * @arg: the argument * * Records a performance event with one string argument. */ void shell_perf_log_event_s (ShellPerfLog *perf_log, const char *name, const char *arg) { ShellPerfEvent *event = lookup_event (perf_log, name, "s"); if (G_UNLIKELY (event == NULL)) return; record_event (perf_log, get_time(), event, (const guchar *)arg, strlen (arg) + 1); } /** * shell_perf_log_define_statistic: * @name: name of the statistic and of the corresponding event. * This should follow the same guidelines as for shell_perf_log_define_event() * @description: human readable description of the statistic. * @signature: The type of the data stored for statistic. Must * currently be 'i' or 'x'. * * Defines a statistic. A statistic is a numeric value that is stored * by the performance log and recorded periodically or when * shell_perf_log_collect_statistics() is called explicitly. * * Code that defines a statistic should update it by calling * the update function for the particular data type of the statistic, * such as shell_perf_log_update_statistic_i(). This can be done * at any time, but would normally done inside a function registered * with shell_perf_log_add_statistics_callback(). These functions * are called immediately before statistics are recorded. */ void shell_perf_log_define_statistic (ShellPerfLog *perf_log, const char *name, const char *description, const char *signature) { ShellPerfEvent *event; ShellPerfStatistic *statistic; if (strcmp (signature, "i") != 0 && strcmp (signature, "x") != 0) { g_warning ("Only supported statistic signatures are 'i' and 'x'\n"); return; } event = define_event (perf_log, name, description, signature); if (event == NULL) return; statistic = g_new (ShellPerfStatistic, 1); statistic->event = event; statistic->initialized = FALSE; statistic->recorded = FALSE; g_ptr_array_add (perf_log->statistics, statistic); g_hash_table_insert (perf_log->statistics_by_name, event->name, statistic); } static ShellPerfStatistic * lookup_statistic (ShellPerfLog *perf_log, const char *name, const char *signature) { ShellPerfStatistic *statistic = g_hash_table_lookup (perf_log->statistics_by_name, name); if (G_UNLIKELY (statistic == NULL)) { g_warning ("Unknown statistic '%s'\n", name); return NULL; } if (G_UNLIKELY (strcmp (statistic->event->signature, signature) != 0)) { g_warning ("Statistic '%s'; defined with signature '%s', used with '%s'\n", name, statistic->event->signature, signature); return NULL; } return statistic; } /** * shell_perf_log_update_statistic_i: * @perf_log: a #ShellPerfLog * @name: name of the statistic * @value: new value for the statistic * * Updates the current value of an 32-bit integer statistic. */ void shell_perf_log_update_statistic_i (ShellPerfLog *perf_log, const char *name, gint32 value) { ShellPerfStatistic *statistic; statistic = lookup_statistic (perf_log, name, "i"); if (G_UNLIKELY (statistic == NULL)) return; statistic->current_value.i = value; statistic->initialized = TRUE; } /** * shell_perf_log_update_statistic_x: * @perf_log: a #ShellPerfLog * @name: name of the statistic * @value: new value for the statistic * * Updates the current value of an 64-bit integer statistic. */ void shell_perf_log_update_statistic_x (ShellPerfLog *perf_log, const char *name, gint64 value) { ShellPerfStatistic *statistic; statistic = lookup_statistic (perf_log, name, "x"); if (G_UNLIKELY (statistic == NULL)) return; statistic->current_value.x = value; statistic->initialized = TRUE; } /** * shell_perf_log_add_statistics_callback: * @perf_log: a #ShellPerfLog * @callback: function to call before recording statistics * @user_data: data to pass to @callback * @notify: function to call when @user_data is no longer needed * * Adds a function that will be called before statistics are recorded. * The function would typically compute one or more statistics values * and call a function such as shell_perf_log_update_statistic_i() * to update the value that will be recorded. */ void shell_perf_log_add_statistics_callback (ShellPerfLog *perf_log, ShellPerfStatisticsCallback callback, gpointer user_data, GDestroyNotify notify) { ShellPerfStatisticsClosure *closure = g_new (ShellPerfStatisticsClosure, 1); closure->callback = callback; closure->user_data = user_data; closure->notify = notify; g_ptr_array_add (perf_log->statistics_closures, closure); } /** * shell_perf_log_collect_statistics: * @perf_log: a #ShellPerfLog * * Calls all the update functions added with * shell_perf_log_add_statistics_callback() and then records events * for all statistics, followed by a perf.statisticsCollected event. */ void shell_perf_log_collect_statistics (ShellPerfLog *perf_log) { gint64 event_time = get_time (); gint64 collection_time; guint i; if (!perf_log->enabled) return; for (i = 0; i < perf_log->statistics_closures->len; i++) { ShellPerfStatisticsClosure *closure; closure = g_ptr_array_index (perf_log->statistics_closures, i); closure->callback (perf_log, closure->user_data); } collection_time = get_time() - event_time; for (i = 0; i < perf_log->statistics->len; i++) { ShellPerfStatistic *statistic = g_ptr_array_index (perf_log->statistics, i); if (!statistic->initialized) continue; switch (statistic->event->signature[0]) { case 'i': if (!statistic->recorded || statistic->current_value.i != statistic->last_value.i) { record_event (perf_log, event_time, statistic->event, (const guchar *)&statistic->current_value.i, sizeof (gint32)); statistic->last_value.i = statistic->current_value.i; statistic->recorded = TRUE; } break; case 'x': if (!statistic->recorded || statistic->current_value.x != statistic->last_value.x) { record_event (perf_log, event_time, statistic->event, (const guchar *)&statistic->current_value.x, sizeof (gint64)); statistic->last_value.x = statistic->current_value.x; statistic->recorded = TRUE; } break; default: g_warning ("Unsupported signature in event"); break; } } record_event (perf_log, event_time, g_ptr_array_index (perf_log->events, EVENT_STATISTICS_COLLECTED), (const guchar *)&collection_time, sizeof (gint64)); } /** * shell_perf_log_replay: * @perf_log: a #ShellPerfLog * @replay_function: (scope call): function to call for each event in the log * @user_data: data to pass to @replay_function * * Replays the log by calling the given function for each event * in the log. */ void shell_perf_log_replay (ShellPerfLog *perf_log, ShellPerfReplayFunction replay_function, gpointer user_data) { gint64 event_time = perf_log->start_time; GList *iter; for (iter = perf_log->blocks->head; iter; iter = iter->next) { ShellPerfBlock *block = iter->data; guint32 pos = 0; while (pos < block->bytes) { ShellPerfEvent *event; guint16 id; guint32 time_delta; GValue arg = { 0, }; memcpy (&time_delta, block->buffer + pos, sizeof (guint32)); pos += sizeof (guint32); memcpy (&id, block->buffer + pos, sizeof (guint16)); pos += sizeof (guint16); if (id == EVENT_SET_TIME) { /* Internal, we don't include in the replay */ memcpy (&event_time, block->buffer + pos, sizeof (gint64)); pos += sizeof (gint64); continue; } else { event_time += time_delta; } event = g_ptr_array_index (perf_log->events, id); if (strcmp (event->signature, "") == 0) { /* We need to pass something, so pass an empty string */ g_value_init (&arg, G_TYPE_STRING); } else if (strcmp (event->signature, "i") == 0) { gint32 l; memcpy (&l, block->buffer + pos, sizeof (gint32)); pos += sizeof (gint32); g_value_init (&arg, G_TYPE_INT); g_value_set_int (&arg, l); } else if (strcmp (event->signature, "x") == 0) { gint64 l; memcpy (&l, block->buffer + pos, sizeof (gint64)); pos += sizeof (gint64); g_value_init (&arg, G_TYPE_INT64); g_value_set_int64 (&arg, l); } else if (strcmp (event->signature, "s") == 0) { g_value_init (&arg, G_TYPE_STRING); g_value_set_string (&arg, (char *)block->buffer + pos); pos += strlen ((char *)(block->buffer + pos)) + 1; } replay_function (event_time, event->name, event->signature, &arg, user_data); g_value_unset (&arg); } } } static char * escape_quotes (const char *input) { GString *result; const char *p; if (strchr (input, '"') == NULL) return (char *)input; result = g_string_new (NULL); for (p = input; *p; p++) { if (*p == '"') g_string_append (result, "\\\""); else g_string_append_c (result, *p); } return g_string_free (result, FALSE); } static gboolean write_string (GOutputStream *out, const char *str, GError **error) { return g_output_stream_write_all (out, str, strlen (str), NULL, NULL, error); } /** * shell_perf_log_dump_events: * @perf_log: a #ShellPerfLog * @out: output stream into which to write the event definitions * @error: location to store #GError, or %NULL * * Dump the definition of currently defined events and statistics, formatted * as JSON, to the specified output stream. The JSON output is an array, * with each element being a dictionary of the form: * * { name: , * description: events->len; i++) { ShellPerfEvent *event = g_ptr_array_index (perf_log->events, i); char *escaped_description = escape_quotes (event->description); gboolean is_statistic = g_hash_table_lookup (perf_log->statistics_by_name, event->name) != NULL; if (i != 0) g_string_append (output, ",\n "); g_string_append_printf (output, "{ \"name\": \"%s\",\n" " \"description\": \"%s\"", event->name, escaped_description); if (is_statistic) g_string_append (output, ",\n \"statistic\": true"); g_string_append (output, " }"); if (escaped_description != event->description) g_free (escaped_description); } g_string_append (output, " ]"); return write_string (out, g_string_free (output, FALSE), error); } typedef struct { GOutputStream *out; GError *error; gboolean first; } ReplayToJsonClosure; static void replay_to_json (gint64 time, const char *name, const char *signature, GValue *arg, gpointer user_data) { ReplayToJsonClosure *closure = user_data; g_autofree char *event_str = NULL; if (closure->error != NULL) return; if (!closure->first) { if (!write_string (closure->out, ",\n ", &closure->error)) return; } closure->first = FALSE; if (strcmp (signature, "") == 0) { event_str = g_strdup_printf ("[%" G_GINT64_FORMAT ", \"%s\"]", time, name); } else if (strcmp (signature, "i") == 0) { event_str = g_strdup_printf ("[%" G_GINT64_FORMAT ", \"%s\", %i]", time, name, g_value_get_int (arg)); } else if (strcmp (signature, "x") == 0) { event_str = g_strdup_printf ("[%" G_GINT64_FORMAT ", \"%s\", %"G_GINT64_FORMAT "]", time, name, g_value_get_int64 (arg)); } else if (strcmp (signature, "s") == 0) { const char *arg_str = g_value_get_string (arg); char *escaped = escape_quotes (arg_str); event_str = g_strdup_printf ("[%" G_GINT64_FORMAT ", \"%s\", \"%s\"]", time, name, g_value_get_string (arg)); if (escaped != arg_str) g_free (escaped); } else { g_assert_not_reached (); } if (!write_string (closure->out, event_str, &closure->error)) return; } /** * shell_perf_log_dump_log: * @perf_log: a #ShellPerfLog * @out: output stream into which to write the event log * @error: location to store #GError, or %NULL * * Writes the performance event log, formatted as JSON, to the specified * output stream. For performance reasons, the output stream passed * in should generally be a buffered (or memory) output stream, since * it will be written to in small pieces. The JSON output is an array * with the elements of the array also being arrays, of the form * '[' '; const {converted, escaped} = convertAndEscape(text); expect(converted).toParseCorrectlyAndMatch('<b>mismatched</i>'); expect(escaped).toParseCorrectlyAndMatch('<b>mismatched</i>'); }); it('escapes mismatched tags where the first character is mismatched', () => { const text = 'mismatched/unknown'; const {converted, escaped} = convertAndEscape(text); expect(converted).toParseCorrectlyAndMatch('<b>mismatched/unknown</bunknown>'); expect(escaped).toParseCorrectlyAndMatch('<b>mismatched/unknown</bunknown>'); }); }); 070701000003EB000081A40000000000000000000000016712993F00000346000000000000000000000000000000000000002600000000gnome-shell-47.1/tests/unit/params.jsimport * as Params from 'resource:///org/gnome/shell/misc/params.js'; describe('Params.parse()', () => { const defaults = { foo: 'This is a test', bar: null, baz: 42, }; it('applies default values', () => { expect(Params.parse(null, defaults)).toEqual(defaults); }); it('applies provided params', () => { expect(Params.parse({bar: 23}, defaults)) .toEqual({foo: 'This is a test', bar: 23, baz: 42}); }); it('does not allow extra args by default', () => { expect(() => Params.parse({extraArg: 'quz'}, defaults)).toThrow(); }); it('does allow extra args when requested', () => { expect(Params.parse({extraArg: 'quz'}, defaults, true)) .toEqual({foo: 'This is a test', bar: null, baz: 42, extraArg: 'quz'}); }); }); 070701000003EC000081A40000000000000000000000016712993F00001495000000000000000000000000000000000000002D00000000gnome-shell-47.1/tests/unit/signalTracker.jsimport 'resource:///org/gnome/shell/ui/environment.js'; import GObject from 'gi://GObject'; import * as Signals from 'resource:///org/gnome/shell/misc/signals.js'; import {TransientSignalHolder, registerDestroyableType} from 'resource:///org/gnome/shell/misc/signalTracker.js'; const Destroyable = GObject.registerClass({ Signals: {'destroy': {}}, }, class Destroyable extends GObject.Object {}); registerDestroyableType(Destroyable); const GObjectEmitter = GObject.registerClass({ Signals: { 'signal1': {}, 'signal2': {}, }, }, class GObjectEmitter extends Destroyable {}); describe('connectObject()', () => { let gobjectEmitter, eventEmitter; let trackedObject; beforeEach(() => { gobjectEmitter = new GObjectEmitter(); eventEmitter = new Signals.EventEmitter(); trackedObject = {}; }); it('connects to GObject signals', () => { const handler = jasmine.createSpy(); gobjectEmitter.connectObject('signal1', handler, trackedObject); gobjectEmitter.emit('signal1'); expect(handler).toHaveBeenCalled(); }); it('connects to EventEmitter signals', () => { const handler = jasmine.createSpy(); eventEmitter.connectObject('signal1', handler, trackedObject); eventEmitter.emit('signal1'); expect(handler).toHaveBeenCalled(); }); it('can connect multiple GObject signals', () => { const handler1 = jasmine.createSpy(); const handler2 = jasmine.createSpy(); gobjectEmitter.connectObject( 'signal1', handler1, 'signal2', handler2, trackedObject); gobjectEmitter.emit('signal1'); gobjectEmitter.emit('signal2'); expect(handler1).toHaveBeenCalled(); expect(handler2).toHaveBeenCalled(); }); it('can connect multiple EventEmitter signals', () => { const handler1 = jasmine.createSpy(); const handler2 = jasmine.createSpy(); eventEmitter.connectObject( 'signal1', handler1, 'signal2', handler2, trackedObject); eventEmitter.emit('signal1'); eventEmitter.emit('signal2'); expect(handler1).toHaveBeenCalled(); expect(handler2).toHaveBeenCalled(); }); it('supports ConnectFlags for GObject signals', () => { const handler1 = jasmine.createSpy(); const handler2 = jasmine.createSpy(); gobjectEmitter.connectObject( 'signal1', handler1, 'signal2', handler2, GObject.ConnectFlags.AFTER, trackedObject); gobjectEmitter.emit('signal1'); gobjectEmitter.emit('signal2'); expect(handler1).toHaveBeenCalled(); expect(handler2).toHaveBeenCalled(); }); it('supports ConnectFlags for EventEmitter signals', () => { const handler1 = jasmine.createSpy(); const handler2 = jasmine.createSpy(); eventEmitter.connectObject( 'signal1', handler1, 'signal2', handler2, GObject.ConnectFlags.AFTER, trackedObject); eventEmitter.emit('signal1'); eventEmitter.emit('signal2'); expect(handler1).toHaveBeenCalled(); expect(handler2).toHaveBeenCalled(); }); }); describe('disconnectObject()', () => { let emitter; let trackedDestroyable, trackedObject; beforeEach(() => { emitter = new GObjectEmitter(); trackedDestroyable = new Destroyable(); trackedObject = {}; }); it('disconnects signals by tracked object', () => { const handler = jasmine.createSpy(); emitter.connectObject( 'signal1', handler, 'signal2', handler, trackedObject); emitter.disconnectObject(trackedObject); emitter.emit('signal1'); emitter.emit('signal2'); expect(handler).not.toHaveBeenCalled(); }); it('is called when a tracked destroyable is destroyed', () => { const handler = jasmine.createSpy(); emitter.connectObject('signal1', handler, trackedDestroyable); trackedDestroyable.emit('destroy'); emitter.emit('signal1'); expect(handler).not.toHaveBeenCalled(); }); }); describe('TransientSignalHolder', () => { let emitter; let tracked, transientHolder; beforeEach(() => { emitter = new GObjectEmitter(); tracked = new Destroyable(); transientHolder = new TransientSignalHolder(tracked); }); it('destroys with its owner', () => { const handler = jasmine.createSpy(); emitter.connectObject('signal1', handler, transientHolder); tracked.emit('destroy'); emitter.emit('signal1'); expect(handler).not.toHaveBeenCalled(); }); it('can be destroyed without affecting its owner', () => { const handler1 = jasmine.createSpy(); const handler2 = jasmine.createSpy(); emitter.connectObject('signal1', handler1, tracked); emitter.connectObject('signal1', handler2, transientHolder); transientHolder.destroy(); emitter.emit('signal1'); expect(handler1).toHaveBeenCalled(); expect(handler2).not.toHaveBeenCalled(); }); }); 070701000003ED000081A40000000000000000000000016712993F00000EBB000000000000000000000000000000000000002300000000gnome-shell-47.1/tests/unit/url.js// Test cases for MessageTray URLification import 'resource:///org/gnome/shell/ui/environment.js'; import {findUrls} from 'resource:///org/gnome/shell/misc/util.js'; describe('findUrls()', () => { const urlParameters = [ { input: 'This is a test', output: [], }, { input: 'This is http://www.gnome.org a test', output: [{url: 'http://www.gnome.org', pos: 8}], }, { input: 'This is http://www.gnome.org', output: [{url: 'http://www.gnome.org', pos: 8}], }, { input: 'http://www.gnome.org a test', output: [{url: 'http://www.gnome.org', pos: 0}], }, { input: 'http://www.gnome.org', output: [{url: 'http://www.gnome.org', pos: 0}], }, { input: 'Go to http://www.gnome.org.', output: [{url: 'http://www.gnome.org', pos: 6}], }, { input: 'Go to http://www.gnome.org/.', output: [{url: 'http://www.gnome.org/', pos: 6}], }, { input: '(Go to http://www.gnome.org!)', output: [{url: 'http://www.gnome.org', pos: 7}], }, { input: 'Use GNOME (http://www.gnome.org).', output: [{url: 'http://www.gnome.org', pos: 11}], }, { input: 'This is a http://www.gnome.org/path test.', output: [{url: 'http://www.gnome.org/path', pos: 10}], }, { input: 'This is a www.gnome.org scheme-less test.', output: [{url: 'www.gnome.org', pos: 10}], }, { input: 'This is a www.gnome.org/scheme-less test.', output: [{url: 'www.gnome.org/scheme-less', pos: 10}], }, { input: 'This is a http://www.gnome.org:99/port test.', output: [{url: 'http://www.gnome.org:99/port', pos: 10}], }, { input: 'This is an ftp://www.gnome.org/ test.', output: [{url: 'ftp://www.gnome.org/', pos: 11}], }, { input: 'https://www.gnome.org/(some_url,_with_very_unusual_characters)', output: [{url: 'https://www.gnome.org/(some_url,_with_very_unusual_characters)', pos: 0}], }, { input: 'https://www.gnome.org/(some_url_with_unbalanced_parenthesis', output: [{url: 'https://www.gnome.org/', pos: 0}], }, { input: 'https://www.gnome.org/‎ plus trailing junk', output: [{url: 'https://www.gnome.org/', pos: 0}], }, { input: 'Visit http://www.gnome.org/ and http://developer.gnome.org', output: [{url: 'http://www.gnome.org/', pos: 6}, {url: 'http://developer.gnome.org', pos: 32}], }, { input: 'This is not.a.domain test.', output: [], }, { input: 'This is not:a.url test.', output: [], }, { input: 'This is not:/a.url/ test.', output: [], }, { input: 'This is not:/a.url/ test.', output: [], }, { input: 'This is not@a.url/ test.', output: [], }, { input: 'This is surely@not.a/url test.', output: [], }, ]; for (const param of urlParameters) { const {input, output} = param; const findsOrDoesNotFind = output.length > 0 ? 'finds' : 'does not find'; it(`${findsOrDoesNotFind} URLs in "${input}"`, () => { expect(findUrls(input)).toEqual(output); }); } }); 070701000003EE000081A40000000000000000000000016712993F000008C0000000000000000000000000000000000000002E00000000gnome-shell-47.1/tests/unit/versionCompare.js// Test cases for version comparison import 'resource:///org/gnome/shell/ui/environment.js'; import {GNOMEversionCompare} from 'resource:///org/gnome/shell/misc/util.js'; describe('GNOMEversionCompare()', () => { it('compares matching versions', () => { expect(GNOMEversionCompare('40', '40')).toBe(0); }); it('compares older versions', () => { expect(GNOMEversionCompare('40', '42')).toBeLessThan(0); expect(GNOMEversionCompare('40.0', '40.1')).toBeLessThan(0); }); it('compares newer versions', () => { expect(GNOMEversionCompare('42', '40')).toBeGreaterThan(0); expect(GNOMEversionCompare('40.1', '40.0')).toBeGreaterThan(0); }); it('compares legacy versions', () => { expect(GNOMEversionCompare('3.38.0', '40')).toBeLessThan(0); expect(GNOMEversionCompare('40', '3.38.0')).toBeGreaterThan(0); }); it('compares pre-release versions', () => { expect(GNOMEversionCompare('40.beta', '40')).toBeLessThan(0); expect(GNOMEversionCompare('40.alpha', '40')).toBeLessThan(0); expect(GNOMEversionCompare('40.rc', '40')).toBeLessThan(0); expect(GNOMEversionCompare('40', '40.beta')).toBeGreaterThan(0); expect(GNOMEversionCompare('40', '40.alpha')).toBeGreaterThan(0); expect(GNOMEversionCompare('40', '40.rc')).toBeGreaterThan(0); expect(GNOMEversionCompare('40.alpha', '40.beta')).toBeLessThan(0); expect(GNOMEversionCompare('40.beta', '40.rc')).toBeLessThan(0); expect(GNOMEversionCompare('40.rc', '40.0')).toBeLessThan(0); }); it('compares point-release versions', () => { expect(GNOMEversionCompare('40.1', '40')).toBeGreaterThan(0); expect(GNOMEversionCompare('40.alpha.1', '40.alpha')).toBeGreaterThan(0); expect(GNOMEversionCompare('40.beta.1.1', '40.beta.1')).toBeGreaterThan(0); expect(GNOMEversionCompare('40', '40.1')).toBeLessThan(0); expect(GNOMEversionCompare('40.alpha', '40.alpha.1')).toBeLessThan(0); expect(GNOMEversionCompare('40.beta.1', '40.beta.1.1')).toBeLessThan(0); }); it('compares empty versions', () => { expect(GNOMEversionCompare('', '40')).toBeLessThan(0); }); }); 070701000003EF000041ED0000000000000000000000026712993F00000000000000000000000000000000000000000000001700000000gnome-shell-47.1/tools070701000003F0000081ED0000000000000000000000016712993F0000211B000000000000000000000000000000000000002300000000gnome-shell-47.1/tools/shell-lg.sh#!/bin/bash PROMPT_LINES=2 input_buffer="" init_terminal() { # Hide cursor to avoid flickering tput civis # Scroll enough for the prompt in case we're at the # bottom of the screen for i in $(seq 1 $PROMPT_LINES); do echo done # Move cursor to the top of the room we just made tput cuu $((PROMPT_LINES + 1)) # Save cursor position tput sc # Exclude prompt from scrollable area tput csr 0 "$(($(tput lines) - PROMPT_LINES - 1))" # Changing scrollable area moves cursor, so put it back tput rc } restore_terminal() { clear_status clear_prompt tput csr 0 "$(tput lines)" tput rc tput cnorm } eval_javascript_in_gnome_shell() { json=$(mktemp) busctl call --user --json=short \ org.gnome.Shell \ /org/gnome/Shell \ org.gnome.Shell \ Eval "s" "$1" > "$json" result=$(jq '.data[0]' < "$json") output=$(jq '.data[1] | select(. != null and . != "") | try fromjson catch .' < "$json") rm -f "$json" if [ "$result" = "false" ]; then echo -e "\e[31m${output:1:-1}\e[0m" > /dev/stderr return 1 fi echo "$output" return 0 } eval_javascript_in_looking_glass() { # encode the text so we can side-step complicated escaping rules ENCODED_TEXT=$(echo -n "$1" | hexdump -v -e '/1 "%02x"') eval_javascript_in_gnome_shell " const GLib = imports.gi.GLib; Main.createLookingGlass(); const results = Main.lookingGlass._resultsArea; Main.lookingGlass._entry.text = '${ENCODED_TEXT}'.replace(/([0-9a-fA-F]{2})/g, (_, h) => String.fromCharCode(parseInt(h, 16))); Main.lookingGlass._entry.clutter_text.activate(); GLib.timeout_add(GLib.PRIORITY_DEFAULT, 125, () => { const index = results.get_n_children() - 1; if (index < 0) return; const resultsActor = results.get_children()[index]; const output = \`\${resultsActor.get_children()[1].get_children()[0].text}\${resultsActor.get_children()[1].get_children()[1].get_children()[0].text}\`; Main.lookingGlass._lastEncodedResult = output.split('').map(char => char.charCodeAt(0).toString(16).padStart(2, '0')).join(''); }); " > /dev/null if [ $? -ne 0 ]; then return fi sleep .250 OUTPUT=$(echo -e $(eval_javascript_in_gnome_shell 'Main.lookingGlass._lastEncodedResult;' | sed 's/\([[:xdigit:]][[:xdigit:]]\)/\\x\1/g')) if [ -z "$OUTPUT" ]; then echo -e "\e[31mCould not fetch result from call\e[0m" > /dev/stderr return fi eval_javascript_in_gnome_shell "delete Main.lookingGlass._lastEncodedResult;" > /dev/null echo ">>> $1" echo "${OUTPUT}" } jump_to_prompt() { # Move to the bottom of the terminal tput cup $(($(tput lines) - PROMPT_LINES)) 0 } clear_prompt() { jump_to_prompt tput el } jump_to_status() { # Move to just below the prompt tput cup $(($(tput lines) - PROMPT_LINES + 1)) 0 } clear_status() { jump_to_status tput el } print_status_line() { jump_to_status echo -ne "Type quit to exit, ^G to inspect, ^L to clear screen" tput rc } clear_screen() { clear ask_user_for_input } ask_user_for_input() { # Save cursor position tput sc clear_prompt tput cnorm read -i "$READLINE_LINE" -p ">>> " -re input_buffer STATUS="$?" tput civis [ $STATUS != 0 ] && exit if [ "$input_buffer" = "quit" -o "$input_buffer" = "q" -o "$input_buffer" = "exit" ]; then exit fi # Save input to history history -s "$input_buffer" # Move cursor back to saved position before output tput rc } quit_message() { print_status_line ask_user_for_input } load_history() { while IFS= read -r line; do history -s "$line" done < <(eval_javascript_in_gnome_shell 'Main.lookingGlass._history._history.join("\n");' | jq -r '. | select(. != null and . != "") | tostring') } check_for_unsafe_mode() { unsafe_mode=$(eval_javascript_in_gnome_shell 'global.context.unsafe_mode') if [ "$unsafe_mode" != "true" ]; then echo -e "Please enable unsafe-mode in the Flags tab of looking glass." > /dev/stderr exit fi } eval_autocomplete_javascript() { ENCODED_TEXT=$(echo -n "$1" | hexdump -v -e '/1 "%02x"') OUTPUT=$(eval_javascript_in_gnome_shell ' const AsyncFunction = async function () {}.constructor; const command = ` const JsParse = await import("resource:///org/gnome/shell/misc/jsParse.js"); function getGlobalState() { const keywords = ["true", "false", "null", "new"]; const windowProperties = Object.getOwnPropertyNames(globalThis).filter( a => a.charAt(0) !== "_"); const headerProperties = JsParse.getDeclaredConstants(commandHeader); return keywords.concat(windowProperties).concat(headerProperties); } const commandHeader = '"'"'const {Clutter, Gio, GLib, GObject, Meta, Shell, St} = imports.gi; const Main = await import("resource:///org/gnome/shell/ui/main.js"); const inspect = Main.lookingGlass.inspect.bind(Main.lookingGlass); const it = Main.lookingGlass.getIt(); const r = Main.lookingGlass.getResult.bind(Main.lookingGlass);'"'"'; const text="'${ENCODED_TEXT}'".replace(/([0-9a-fA-F]{2})/g, (_, h) => String.fromCharCode(parseInt(h, 16))); const completions = await JsParse.getCompletions(text, commandHeader, getGlobalState()); return { "completions": completions[0], "attrHead": completions[1] };`; AsyncFunction(command)(); ') if [ $? = 1 ]; then echo fail fi echo "$OUTPUT" } autocomplete() { RESULT="$(eval_autocomplete_javascript "$READLINE_LINE")" COMPLETIONS="$(echo "$RESULT" | jq '.completions[]' | sed 's/\"//g')" ATTR_HEAD=$(echo "$RESULT" | jq '.attrHead' | sed 's/\"//g') N_COMPLETIONS=$(echo "$COMPLETIONS" | wc -w) if [ $N_COMPLETIONS = 0 ]; then return elif [ $N_COMPLETIONS = 1 ]; then TO_ADD=$(echo $COMPLETIONS | sed s/$ATTR_HEAD//) READLINE_LINE+="$TO_ADD" (( READLINE_POINT += $(echo "$TO_ADD" | wc -c) )) else tput rc echo echo "$COMPLETIONS" | pr -T -2 -o 4 ask_user_for_input fi } inspect() { eval_javascript_in_gnome_shell ' const AsyncFunction = async function () {}.constructor; delete Main.lookingGlass._lastInspection; const command = ` const Main = await import("resource:///org/gnome/shell/ui/main.js"); const LookingGlass = await import("resource:///org/gnome/shell/ui/lookingGlass.js"); Main.lookingGlass._inspector = new LookingGlass.Inspector(Main.lookingGlass); const inspector = Main.lookingGlass._inspector; inspector.connectObject("target", (i, obj, stageX, stageY) => { let command = "inspect(" + Math.round(stageX) + ", " + Math.round(stageY) + ")"; Main.lookingGlass._lastInspection = command; }, "closed", () => { delete Main.lookingGlass._inspector; }); `; AsyncFunction(command)(); ' while sleep .250; do finished=$(eval_javascript_in_gnome_shell 'Main.lookingGlass._inspector? false : true') last_inspection=$(eval_javascript_in_gnome_shell 'Main.lookingGlass._lastInspection' | jq -r) [ "$finished" = "true" ] && break [ -n "$last_inspection" ] && break done tput rc [ -n "$last_inspection" ] && eval_javascript_in_looking_glass "$last_inspection" eval_javascript_in_gnome_shell 'delete Main.lookingGlass._lastInspection; Main.lookingGlass.setBorderPaintTarget(null);' > /dev/null ask_user_for_input } main_loop() { bind -x '"\a"':inspect 2> /dev/null bind -x '"\t"':autocomplete 2> /dev/null bind -x '"\f"':clear_screen 2> /dev/null while true; do ask_user_for_input eval_javascript_in_looking_glass "$input_buffer" done } check_for_unsafe_mode trap 'quit_message' SIGINT trap restore_terminal EXIT init_terminal load_history print_status_line main_loop restore_terminal 070701000003F1000041ED0000000000000000000000026712993F00000000000000000000000000000000000000000000001F00000000gnome-shell-47.1/tools/toolbox070701000003F2000081A40000000000000000000000016712993F00000990000000000000000000000000000000000000002900000000gnome-shell-47.1/tools/toolbox/README.md# Toolbox tools [Toolbox][toolbox] is a container tool for Linux, which allows the use of interactive command line environments for development, without having to install software on the host. It is suitable for gnome-shell development, and we maintain a number of scripts to make its use easier and more convenient. When things go wrong, please check out the [troubleshooting section][troubleshooting] in the [GNOME Project Handbook][handbook]. ## create-toolbox.sh Create a new toolbox for gnome-shell development. The new toolbox uses a custom container image that includes all dependencies except [mutter]. Mutter is developed in lock-step with gnome-shell, and therefore needs to be updated more regularly than the image. The toolbox includes the `update-mutter` command that takes care of this, which is usually run by the script when creating the toolbox. When called with the `--builder` option, the script also sets up build configuration for the [GNOME Builder IDE][builder], which allows building and running gnome-shell from within the app. For other options, run the script with `--help`. ## meson-build.sh Build and install a meson project in a toolbox. gnome-shell uses the [meson] build system, and doesn't require any build steps other than the standard meson commands. It is still convenient to have a single command to enter a toolbox and setup, compile and install the project. Run the script with `--help` to see available options. ## meson-test.sh Run a meson project's test suite in a toolbox. The script wraps meson's `test` command to make invoking it inside a toolbox more convenient. Run the script with `--help` to see available options. ## run-gnome-shell.sh Run gnome-shell from a toolbox. The script can be used both from within a graphical session and from a TTY. It takes care of isolating the nested shell from the host session, and setting up the environment to allow apps to launch inside the nested instance. It also provides useful options for development, like running from `gdb`, or simulating multiple monitors or a greeter session. Run the script with `--help` to see all available options. [toolbox]: https://containertoolbx.org/ [mutter]: https://gitlab.gnome.org/GNOME/mutter [builder]: https://apps.gnome.org/Builder/ [meson]: https://mesonbuild.com [handbook]: https://handbook.gnome.org/ [troubleshooting]: https://handbook.gnome.org/development/toolbx.html#when-things-go-wrong 070701000003F3000081ED0000000000000000000000016712993F00000EFF000000000000000000000000000000000000003100000000gnome-shell-47.1/tools/toolbox/create-toolbox.sh#!/bin/bash # vi: sw=2 ts=4 set -e TOOLBOX_IMAGE=registry.gitlab.gnome.org/gnome/gnome-shell/toolbox DEFAULT_NAME=gnome-shell-devel CONFIG_FILE=${XDG_CONFIG_HOME:-$HOME/.config}/gnome-shell-toolbox-tools.conf usage() { cat <<-EOF Usage: $(basename $0) [OPTION…] Create a toolbox for gnome-shell development Options: -n, --name=NAME Create container as NAME instead of the default "$DEFAULT_NAME" -v, --version=VERSION Create container for stable version VERSION (like 44) instead of the main branch -r, --replace Replace an existing container -c, --classic Set up support for GNOME Classic -b, --builder Set up GNOME Builder configuration --locales=LOCALES Enable support for additional locales LOCALES --skip-mutter Do not build mutter --set-default Set as default for other gnome-shell toolbox tools -h, --help Display this help EOF } die() { echo "$@" >&2 exit 1 } toolbox_run() { toolbox run --container $NAME "$@" } install_extra_packages() { local -a pkgs pkgs+=( ${LOCALES[@]/#/glibc-langpack-} ) [[ $SETUP_CLASSIC ]] && pkgs+=( gnome-menus ) [[ ${#pkgs[@]} > 0 ]] && toolbox_run su -c "dnf install -y ${pkgs[*]}" true } create_builder_config() { local container_id=$(podman container inspect --format='{{.Id}}' $NAME) local top_srcdir=$(realpath $(dirname $0)/../..) local wayland_display=builder-wayland-0 cat >> $top_srcdir/.buildconfig <<-EOF [toolbox-$NAME] name=$NAME Toolbox runtime=podman:$container_id prefix=/usr run-command=dbus-run-session gnome-shell --nested --wayland-display=$wayland_display [toolbox-$NAME.runtime_environment] WAYLAND_DISPLAY=$wayland_display G_MESSAGES_DEBUG=GNOME Shell XDG_DATA_DIRS=${XDG_DATA_DIRS:-/usr/local/share:/usr/share} EOF } setup_classic() { local branch=${VERSION:+gnome-}${VERSION:-main} toolbox_run /usr/libexec/install-meson-project.sh \ -Dclassic_mode=true \ https://gitlab.gnome.org/GNOME/gnome-shell-extensions.git $branch } set_default() { mkdir -p $(dirname $CONFIG_FILE) echo DEFAULT_TOOLBOX=$NAME > $CONFIG_FILE } TEMP=$(getopt \ --name $(basename $0) \ --options 'n:v:rcbh' \ --longoptions 'name:' \ --longoptions 'version:' \ --longoptions 'replace' \ --longoptions 'classic' \ --longoptions 'builder' \ --longoptions 'locales:' \ --longoptions 'skip-mutter' \ --longoptions 'set-default' \ --longoptions 'help' \ -- "$@") || die "Run $(basename $0) --help to see available options" eval set -- "$TEMP" unset TEMP NAME=$DEFAULT_NAME LOCALES=() # set up first toolbox as default [ ! -f $CONFIG_FILE ] && SET_DEFAULT=1 while true; do case "$1" in -n|--name) NAME="$2" shift 2 ;; -v|--version) VERSION="$2" shift 2 ;; -r|--replace) REPLACE=1 shift ;; -c|--classic) SETUP_CLASSIC=1 shift ;; -b|--builder) SETUP_BUILDER=1 shift ;; --skip-mutter) SKIP_MUTTER=1 shift ;; --set-default) SET_DEFAULT=1 shift ;; --locales) IFS=" ," LOCALES+=($2) shift 2 ;; -h|--help) usage exit 0 ;; --) shift break ;; esac done TAG=${VERSION:-main} if podman container exists $NAME; then [[ $REPLACE ]] || die "Container $NAME already exists and --replace was not specified" toolbox rm --force $NAME fi podman pull $TOOLBOX_IMAGE:$TAG toolbox create --image $TOOLBOX_IMAGE:$TAG $NAME install_extra_packages [[ $SKIP_MUTTER ]] || toolbox_run update-mutter [[ $SETUP_CLASSIC ]] && setup_classic [[ $SETUP_BUILDER ]] && create_builder_config [[ $SET_DEFAULT ]] && set_default 070701000003F4000081ED0000000000000000000000016712993F00000808000000000000000000000000000000000000002E00000000gnome-shell-47.1/tools/toolbox/meson-build.sh#!/bin/bash set -e DEFAULT_TOOLBOX=gnome-shell-devel CONFIG_FILE=${XDG_CONFIG_HOME:-$HOME/.config}/gnome-shell-toolbox-tools.conf usage() { cat <<-EOF Usage: $(basename $0) [OPTION…] Build and install a meson project in a toolbox Options: -t, --toolbox=TOOLBOX Use TOOLBOX instead of the default "$DEFAULT_TOOLBOX" -Dkey=val Option to pass to meson setup --dist Run meson dist --reconfigure Reconfigure the project --wipe Wipe build directory and reconfigure -h, --help Display this help EOF } die() { echo "$@" >&2 exit 1 } find_toplevel() { while true; do grep -qs '\' meson.build && break [[ $(pwd) -ef / ]] && die "Error: No meson toplevel found" cd .. done } needs_reconfigure() { [[ ${#MESON_OPTIONS[*]} > 0 ]] && [[ -d $BUILD_DIR ]] } # load defaults . $CONFIG_FILE TOOLBOX=$DEFAULT_TOOLBOX TEMP=$(getopt \ --name $(basename $0) \ --options 't:D:h' \ --longoptions 'toolbox:' \ --longoptions 'dist' \ --longoptions 'reconfigure' \ --longoptions 'wipe' \ --longoptions 'help' \ -- "$@") || die "Run $(basename $0) --help to see available options" eval set -- "$TEMP" unset TEMP MESON_OPTIONS=() while true; do case $1 in -t|--toolbox) TOOLBOX=$2 shift 2 ;; --dist) RUN_DIST=1 shift ;; --reconfigure) RECONFIGURE=--reconfigure shift ;; --wipe) WIPE=--wipe shift ;; -D) MESON_OPTIONS+=(-D$2) shift 2 ;; -h|--help) usage exit 0 ;; --) shift break ;; esac done find_toplevel BUILD_DIR=build-$TOOLBOX [[ $RUN_DIST ]] && DIST="meson dist -C $BUILD_DIR --include-subprojects" || DIST=: needs_reconfigure && RECONFIGURE=--reconfigure toolbox run --container $TOOLBOX sh -c " meson setup --prefix=/usr $RECONFIGURE $WIPE ${MESON_OPTIONS[*]} $BUILD_DIR && meson compile -C $BUILD_DIR && sudo meson install -C $BUILD_DIR && $DIST " 070701000003F5000081ED0000000000000000000000016712993F00000889000000000000000000000000000000000000002D00000000gnome-shell-47.1/tools/toolbox/meson-test.sh#!/bin/bash set -e DEFAULT_TOOLBOX=gnome-shell-devel CONFIG_FILE=${XDG_CONFIG_HOME:-$HOME/.config}/gnome-shell-toolbox-tools.conf usage() { cat <<-EOF Usage: $(basename $0) [OPTION…] Run meson project tests in a toolbox Options: -t, --toolbox=TOOLBOX Use TOOLBOX instead of the default "$DEFAULT_TOOLBOX" --gdb Run test under gdb --wrapper=WRAPPER Wrapper to run tests with (e.g. valgrind) --list List available tests --suite=SUITE Only run tests belonging to the given suite --no-suite=SUITE Do not run tests belonging to the given suite --setup=SETUP Which test setup to use --test-args=TEST_ARGS Arguments to pass to the specified test(s) or all tests -v, --verbose Do not redirect stdout and stderr -q, --quiet Produce less output to the terminal -h, --help Display this help EOF } die() { echo "$@" >&2 exit 1 } find_toplevel() { while true; do grep -qs '\' meson.build && break [[ $(pwd) -ef / ]] && die "Error: No meson toplevel found" cd .. done } # load defaults . $CONFIG_FILE TOOLBOX=$DEFAULT_TOOLBOX TEMP=$(getopt \ --name $(basename $0) \ --options 't:vqh' \ --longoptions 'toolbox:' \ --longoptions 'gdb' \ --longoptions 'wrapper:' \ --longoptions 'list' \ --longoptions 'suite:' \ --longoptions 'no-suite:' \ --longoptions 'setup:' \ --longoptions 'test-args:' \ --longoptions 'verbose' \ --longoptions 'quiet' \ --longoptions 'help' \ -- "$@") || die "Run $(basename $0) --help to see available options" eval set -- "$TEMP" unset TEMP MESON_ARGS=() while true; do case $1 in -t|--toolbox) TOOLBOX=$2 shift 2 ;; --list|--gdb|-v|--verbose|-q|--quiet) MESON_ARGS+=($1) shift ;; --wrapper|--suite|--no-suite|--setup|--test-args) MESON_ARGS+=($1 $2) shift 2 ;; -h|--help) usage exit 0 ;; --) shift break ;; esac done find_toplevel BUILD_DIR=build-$TOOLBOX toolbox run --container $TOOLBOX \ meson test -C $BUILD_DIR ${MESON_ARGS[*]} $@ 070701000003F6000081ED0000000000000000000000016712993F00000C36000000000000000000000000000000000000003200000000gnome-shell-47.1/tools/toolbox/run-gnome-shell.sh#!/bin/bash # vi: sw=2 ts=4 set -e DEFAULT_TOOLBOX=gnome-shell-devel CONFIG_FILE=${XDG_CONFIG_HOME:-$HOME/.config}/gnome-shell-toolbox-tools.conf usage() { cat <<-EOF Usage: $(basename $0) [OPTION…] Run gnome-shell from a toolbox Options: -t, --toolbox=TOOLBOX Use TOOLBOX instead of the default "$DEFAULT_TOOLBOX" --classic Run in Classic mode --greeter Run (simulated) login screen -2, --multi-monitor Run with two monitors -0, --headless Run headless --rtl Force right-to-left layout --locale=LOCALE Use specified LOCALE --debug Run in gdb -v, --verbose Enable debug logging --unsafe-mode Do no restrict D-Bus APIs --force-animations Force animations to be enabled --version Print version -h, --help Display this help EOF } die() { echo "$@" >&2 exit 1 } find_locale() { locale -a | sed -e "/^$1/!d" -e '/\.utf8$/I!d' | head -n 1 } should_run_nested() { [[ "$XDG_SESSION_TYPE" != "tty" ]] && [[ ! "$HEADLESS" ]] } # load defaults . $CONFIG_FILE TOOLBOX=$DEFAULT_TOOLBOX SHELL_ENV=(XDG_CURRENT_DESKTOP=GNOME) SHELL_ARGS=() TEMP=$(getopt \ --name $(basename $0) \ --options '20t:vh' \ --longoptions 'toolbox:' \ --longoptions 'classic' \ --longoptions 'greeter' \ --longoptions 'multi-monitor' \ --longoptions 'headless' \ --longoptions 'rtl' \ --longoptions 'locale:' \ --longoptions 'debug' \ --longoptions 'verbose' \ --longoptions 'unsafe-mode' \ --longoptions 'force-animations' \ --longoptions 'version' \ --longoptions 'help' \ -- "$@") || die "Run $(basename $0) --help to see available options" eval set -- "$TEMP" unset TEMP while true; do case $1 in -t|--toolbox) TOOLBOX=$2 shift 2 ;; --classic) SHELL_ENV+=(XDG_CURRENT_DESKTOP=GNOME-Classic:GNOME) SHELL_ARGS+=(--mode=classic) shift ;; --greeter) SHELL_ENV+=(GDM_GREETER_TEST=1) SHELL_ARGS+=(--mode=gdm) shift ;; -2|--multi-monitor) SHELL_ENV+=(MUTTER_DEBUG_NUM_DUMMY_MONITORS=2) shift ;; -0|--headless) HEADLESS=1 SHELL_ARGS+=(--headless) shift ;; --rtl) SHELL_ENV+=(CLUTTER_TEXT_DIRECTION=rtl) shift ;; --locale) SHELL_ENV+=(LANG=$(find_locale $2)) shift 2 ;; --debug) GDB="gdb --args" shift ;; -v|--verbose) SHELL_ENV+=( G_MESSAGES_DEBUG="GNOME Shell" SHELL_DEBUG=backtrace-warnings ) shift ;; --unsafe-mode|--force-animations|--version) SHELL_ARGS+=($1) shift ;; -h|--help) usage exit 0 ;; --) shift break ;; esac done if should_run_nested; then SHELL_ARGS+=( --nested ) else SHELL_ARGS+=( --wayland ) fi display=toolbox-wayland-$RANDOM SHELL_ENV+=(WAYLAND_DISPLAY=$display) SHELL_ARGS+=(--wayland-display=$display) toolbox --container $TOOLBOX run \ env "${SHELL_ENV[@]}" dbus-run-session $GDB gnome-shell "${SHELL_ARGS[@]}" 07070100000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000B00000000TRAILER!!!33247 blocks